Snap for 9446185 from 001ed46e3703c78cbc3838adfe4c14ba279f9ff7 to androidx-hilt-release

Change-Id: Ib868c18a12a936f59b7f519238f287f3399684bf
diff --git a/bin/ccmake b/bin/ccmake
deleted file mode 100755
index acf532f..0000000
--- a/bin/ccmake
+++ /dev/null
Binary files differ
diff --git a/bin/cmake b/bin/cmake
index 4b16f13..98290c6 100755
--- a/bin/cmake
+++ b/bin/cmake
Binary files differ
diff --git a/bin/cpack b/bin/cpack
index 1a82d38..ce207b3 100755
--- a/bin/cpack
+++ b/bin/cpack
Binary files differ
diff --git a/bin/ctest b/bin/ctest
index c2ddb64..131b0f1 100755
--- a/bin/ctest
+++ b/bin/ctest
Binary files differ
diff --git a/doc/cmake-3.18/Copyright.txt b/doc/cmake-3.18/Copyright.txt
deleted file mode 100644
index b867d01..0000000
--- a/doc/cmake-3.18/Copyright.txt
+++ /dev/null
@@ -1,132 +0,0 @@
-CMake - Cross Platform Makefile Generator
-Copyright 2000-2020 Kitware, Inc. and Contributors
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-* Redistributions of source code must retain the above copyright
-  notice, this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright
-  notice, this list of conditions and the following disclaimer in the
-  documentation and/or other materials provided with the distribution.
-
-* Neither the name of Kitware, Inc. nor the names of Contributors
-  may be used to endorse or promote products derived from this
-  software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-------------------------------------------------------------------------------
-
-The following individuals and institutions are among the Contributors:
-
-* Aaron C. Meadows <cmake@shadowguarddev.com>
-* Adriaan de Groot <groot@kde.org>
-* Aleksey Avdeev <solo@altlinux.ru>
-* Alexander Neundorf <neundorf@kde.org>
-* Alexander Smorkalov <alexander.smorkalov@itseez.com>
-* Alexey Sokolov <sokolov@google.com>
-* Alex Merry <alex.merry@kde.org>
-* Alex Turbov <i.zaufi@gmail.com>
-* Andreas Pakulat <apaku@gmx.de>
-* Andreas Schneider <asn@cryptomilk.org>
-* André Rigland Brodtkorb <Andre.Brodtkorb@ifi.uio.no>
-* Axel Huebl, Helmholtz-Zentrum Dresden - Rossendorf
-* Benjamin Eikel
-* Bjoern Ricks <bjoern.ricks@gmail.com>
-* Brad Hards <bradh@kde.org>
-* Christopher Harvey
-* Christoph Grüninger <foss@grueninger.de>
-* Clement Creusot <creusot@cs.york.ac.uk>
-* Daniel Blezek <blezek@gmail.com>
-* Daniel Pfeifer <daniel@pfeifer-mail.de>
-* Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
-* Eran Ifrah <eran.ifrah@gmail.com>
-* Esben Mose Hansen, Ange Optimization ApS
-* Geoffrey Viola <geoffrey.viola@asirobots.com>
-* Google Inc
-* Gregor Jasny
-* Helio Chissini de Castro <helio@kde.org>
-* Ilya Lavrenov <ilya.lavrenov@itseez.com>
-* Insight Software Consortium <insightsoftwareconsortium.org>
-* Jan Woetzel
-* Julien Schueller
-* Kelly Thompson <kgt@lanl.gov>
-* Laurent Montel <montel@kde.org>
-* Konstantin Podsvirov <konstantin@podsvirov.pro>
-* Mario Bensi <mbensi@ipsquad.net>
-* Martin Gräßlin <mgraesslin@kde.org>
-* Mathieu Malaterre <mathieu.malaterre@gmail.com>
-* Matthaeus G. Chajdas
-* Matthias Kretz <kretz@kde.org>
-* Matthias Maennich <matthias@maennich.net>
-* Michael Hirsch, Ph.D. <www.scivision.co>
-* Michael Stürmer
-* Miguel A. Figueroa-Villanueva
-* Mike Jackson
-* Mike McQuaid <mike@mikemcquaid.com>
-* Nicolas Bock <nicolasbock@gmail.com>
-* Nicolas Despres <nicolas.despres@gmail.com>
-* Nikita Krupen'ko <krnekit@gmail.com>
-* NVIDIA Corporation <www.nvidia.com>
-* OpenGamma Ltd. <opengamma.com>
-* Patrick Stotko <stotko@cs.uni-bonn.de>
-* Per Øyvind Karlsen <peroyvind@mandriva.org>
-* Peter Collingbourne <peter@pcc.me.uk>
-* Petr Gotthard <gotthard@honeywell.com>
-* Philip Lowman <philip@yhbt.com>
-* Philippe Proulx <pproulx@efficios.com>
-* Raffi Enficiaud, Max Planck Society
-* Raumfeld <raumfeld.com>
-* Roger Leigh <rleigh@codelibre.net>
-* Rolf Eike Beer <eike@sf-mail.de>
-* Roman Donchenko <roman.donchenko@itseez.com>
-* Roman Kharitonov <roman.kharitonov@itseez.com>
-* Ruslan Baratov
-* Sebastian Holtermann <sebholt@xwmw.org>
-* Stephen Kelly <steveire@gmail.com>
-* Sylvain Joubert <joubert.sy@gmail.com>
-* The Qt Company Ltd.
-* Thomas Sondergaard <ts@medical-insight.com>
-* Tobias Hunger <tobias.hunger@qt.io>
-* Todd Gamblin <tgamblin@llnl.gov>
-* Tristan Carel
-* University of Dundee
-* Vadim Zhukov
-* Will Dicharry <wdicharry@stellarscience.com>
-
-See version control history for details of individual contributions.
-
-The above copyright and license notice applies to distributions of
-CMake in source and binary form.  Third-party software packages supplied
-with CMake under compatible licenses provide their own copyright notices
-documented in corresponding subdirectories or source files.
-
-------------------------------------------------------------------------------
-
-CMake was initially developed by Kitware with the following sponsorship:
-
- * National Library of Medicine at the National Institutes of Health
-   as part of the Insight Segmentation and Registration Toolkit (ITK).
-
- * US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel
-   Visualization Initiative.
-
- * National Alliance for Medical Image Computing (NAMIC) is funded by the
-   National Institutes of Health through the NIH Roadmap for Medical Research,
-   Grant U54 EB005149.
-
- * Kitware, Inc.
diff --git a/doc/cmake-3.18/cmcurl/COPYING b/doc/cmake-3.18/cmcurl/COPYING
deleted file mode 100644
index 9d9e4af..0000000
--- a/doc/cmake-3.18/cmcurl/COPYING
+++ /dev/null
@@ -1,22 +0,0 @@
-COPYRIGHT AND PERMISSION NOTICE
-
-Copyright (c) 1996 - 2020, Daniel Stenberg, <daniel@haxx.se>, and many
-contributors, see the THANKS file.
-
-All rights reserved.
-
-Permission to use, copy, modify, and distribute this software for any purpose
-with or without fee is hereby granted, provided that the above copyright
-notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
-NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
-OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder shall not
-be used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization of the copyright holder.
diff --git a/doc/cmake-3.18/cmlibarchive/COPYING b/doc/cmake-3.18/cmlibarchive/COPYING
deleted file mode 100644
index 14bbefa..0000000
--- a/doc/cmake-3.18/cmlibarchive/COPYING
+++ /dev/null
@@ -1,66 +0,0 @@
-The libarchive distribution as a whole is Copyright by Tim Kientzle
-and is subject to the copyright notice reproduced at the bottom of
-this file.
-
-Each individual file in this distribution should have a clear
-copyright/licensing statement at the beginning of the file.  If any do
-not, please let me know and I will rectify it.  The following is
-intended to summarize the copyright status of the individual files;
-the actual statements in the files are controlling.
-
-* Except as listed below, all C sources (including .c and .h files)
-  and documentation files are subject to the copyright notice reproduced
-  at the bottom of this file.
-
-* The following source files are also subject in whole or in part to
-  a 3-clause UC Regents copyright; please read the individual source
-  files for details:
-   libarchive/archive_entry.c
-   libarchive/archive_read_support_filter_compress.c
-   libarchive/archive_write_add_filter_compress.c
-   libarchive/mtree.5
-
-* The following source files are in the public domain:
-   libarchive/archive_getdate.c
-
-* The following source files are triple-licensed with the ability to choose
-  from CC0 1.0 Universal, OpenSSL or Apache 2.0 licenses:
-   libarchive/archive_blake2.h
-   libarchive/archive_blake2_impl.h
-   libarchive/archive_blake2s_ref.c
-   libarchive/archive_blake2sp_ref.c
-
-* The build files---including Makefiles, configure scripts,
-  and auxiliary scripts used as part of the compile process---have
-  widely varying licensing terms.  Please check individual files before
-  distributing them to see if those restrictions apply to you.
-
-I intend for all new source code to use the license below and hope over
-time to replace code with other licenses with new implementations that
-do use the license below.  The varying licensing of the build scripts
-seems to be an unavoidable mess.
-
-
-Copyright (c) 2003-2018 <author(s)>
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer
-   in this position and unchanged.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/doc/cmake-3.22/Copyright.txt b/doc/cmake-3.22/Copyright.txt
new file mode 100644
index 0000000..7f51293
--- /dev/null
+++ b/doc/cmake-3.22/Copyright.txt
@@ -0,0 +1,132 @@
+CMake - Cross Platform Makefile Generator
+Copyright 2000-2021 Kitware, Inc. and Contributors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+* Redistributions of source code must retain the above copyright
+  notice, this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+* Neither the name of Kitware, Inc. nor the names of Contributors
+  may be used to endorse or promote products derived from this
+  software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+------------------------------------------------------------------------------
+
+The following individuals and institutions are among the Contributors:
+
+* Aaron C. Meadows <cmake@shadowguarddev.com>
+* Adriaan de Groot <groot@kde.org>
+* Aleksey Avdeev <solo@altlinux.ru>
+* Alexander Neundorf <neundorf@kde.org>
+* Alexander Smorkalov <alexander.smorkalov@itseez.com>
+* Alexey Sokolov <sokolov@google.com>
+* Alex Merry <alex.merry@kde.org>
+* Alex Turbov <i.zaufi@gmail.com>
+* Andreas Pakulat <apaku@gmx.de>
+* Andreas Schneider <asn@cryptomilk.org>
+* André Rigland Brodtkorb <Andre.Brodtkorb@ifi.uio.no>
+* Axel Huebl, Helmholtz-Zentrum Dresden - Rossendorf
+* Benjamin Eikel
+* Bjoern Ricks <bjoern.ricks@gmail.com>
+* Brad Hards <bradh@kde.org>
+* Christopher Harvey
+* Christoph Grüninger <foss@grueninger.de>
+* Clement Creusot <creusot@cs.york.ac.uk>
+* Daniel Blezek <blezek@gmail.com>
+* Daniel Pfeifer <daniel@pfeifer-mail.de>
+* Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+* Eran Ifrah <eran.ifrah@gmail.com>
+* Esben Mose Hansen, Ange Optimization ApS
+* Geoffrey Viola <geoffrey.viola@asirobots.com>
+* Google Inc
+* Gregor Jasny
+* Helio Chissini de Castro <helio@kde.org>
+* Ilya Lavrenov <ilya.lavrenov@itseez.com>
+* Insight Software Consortium <insightsoftwareconsortium.org>
+* Jan Woetzel
+* Julien Schueller
+* Kelly Thompson <kgt@lanl.gov>
+* Konstantin Podsvirov <konstantin@podsvirov.pro>
+* Laurent Montel <montel@kde.org>
+* Mario Bensi <mbensi@ipsquad.net>
+* Martin Gräßlin <mgraesslin@kde.org>
+* Mathieu Malaterre <mathieu.malaterre@gmail.com>
+* Matthaeus G. Chajdas
+* Matthias Kretz <kretz@kde.org>
+* Matthias Maennich <matthias@maennich.net>
+* Michael Hirsch, Ph.D. <www.scivision.co>
+* Michael Stürmer
+* Miguel A. Figueroa-Villanueva
+* Mike Jackson
+* Mike McQuaid <mike@mikemcquaid.com>
+* Nicolas Bock <nicolasbock@gmail.com>
+* Nicolas Despres <nicolas.despres@gmail.com>
+* Nikita Krupen'ko <krnekit@gmail.com>
+* NVIDIA Corporation <www.nvidia.com>
+* OpenGamma Ltd. <opengamma.com>
+* Patrick Stotko <stotko@cs.uni-bonn.de>
+* Per Øyvind Karlsen <peroyvind@mandriva.org>
+* Peter Collingbourne <peter@pcc.me.uk>
+* Petr Gotthard <gotthard@honeywell.com>
+* Philip Lowman <philip@yhbt.com>
+* Philippe Proulx <pproulx@efficios.com>
+* Raffi Enficiaud, Max Planck Society
+* Raumfeld <raumfeld.com>
+* Roger Leigh <rleigh@codelibre.net>
+* Rolf Eike Beer <eike@sf-mail.de>
+* Roman Donchenko <roman.donchenko@itseez.com>
+* Roman Kharitonov <roman.kharitonov@itseez.com>
+* Ruslan Baratov
+* Sebastian Holtermann <sebholt@xwmw.org>
+* Stephen Kelly <steveire@gmail.com>
+* Sylvain Joubert <joubert.sy@gmail.com>
+* The Qt Company Ltd.
+* Thomas Sondergaard <ts@medical-insight.com>
+* Tobias Hunger <tobias.hunger@qt.io>
+* Todd Gamblin <tgamblin@llnl.gov>
+* Tristan Carel
+* University of Dundee
+* Vadim Zhukov
+* Will Dicharry <wdicharry@stellarscience.com>
+
+See version control history for details of individual contributions.
+
+The above copyright and license notice applies to distributions of
+CMake in source and binary form.  Third-party software packages supplied
+with CMake under compatible licenses provide their own copyright notices
+documented in corresponding subdirectories or source files.
+
+------------------------------------------------------------------------------
+
+CMake was initially developed by Kitware with the following sponsorship:
+
+ * National Library of Medicine at the National Institutes of Health
+   as part of the Insight Segmentation and Registration Toolkit (ITK).
+
+ * US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel
+   Visualization Initiative.
+
+ * National Alliance for Medical Image Computing (NAMIC) is funded by the
+   National Institutes of Health through the NIH Roadmap for Medical Research,
+   Grant U54 EB005149.
+
+ * Kitware, Inc.
diff --git a/doc/cmake-3.22/cmcurl/COPYING b/doc/cmake-3.22/cmcurl/COPYING
new file mode 100644
index 0000000..48f1447
--- /dev/null
+++ b/doc/cmake-3.22/cmcurl/COPYING
@@ -0,0 +1,22 @@
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1996 - 2021, Daniel Stenberg, <daniel@haxx.se>, and many
+contributors, see the THANKS file.
+
+All rights reserved.
+
+Permission to use, copy, modify, and distribute this software for any purpose
+with or without fee is hereby granted, provided that the above copyright
+notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
+NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not
+be used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization of the copyright holder.
diff --git a/doc/cmake-3.22/cmlibarchive/COPYING b/doc/cmake-3.22/cmlibarchive/COPYING
new file mode 100644
index 0000000..1b97235
--- /dev/null
+++ b/doc/cmake-3.22/cmlibarchive/COPYING
@@ -0,0 +1,65 @@
+The libarchive distribution as a whole is Copyright by Tim Kientzle
+and is subject to the copyright notice reproduced at the bottom of
+this file.
+
+Each individual file in this distribution should have a clear
+copyright/licensing statement at the beginning of the file.  If any do
+not, please let me know and I will rectify it.  The following is
+intended to summarize the copyright status of the individual files;
+the actual statements in the files are controlling.
+
+* Except as listed below, all C sources (including .c and .h files)
+  and documentation files are subject to the copyright notice reproduced
+  at the bottom of this file.
+
+* The following source files are also subject in whole or in part to
+  a 3-clause UC Regents copyright; please read the individual source
+  files for details:
+   libarchive/archive_read_support_filter_compress.c
+   libarchive/archive_write_add_filter_compress.c
+   libarchive/mtree.5
+
+* The following source files are in the public domain:
+   libarchive/archive_getdate.c
+
+* The following source files are triple-licensed with the ability to choose
+  from CC0 1.0 Universal, OpenSSL or Apache 2.0 licenses:
+   libarchive/archive_blake2.h
+   libarchive/archive_blake2_impl.h
+   libarchive/archive_blake2s_ref.c
+   libarchive/archive_blake2sp_ref.c
+
+* The build files---including Makefiles, configure scripts,
+  and auxiliary scripts used as part of the compile process---have
+  widely varying licensing terms.  Please check individual files before
+  distributing them to see if those restrictions apply to you.
+
+I intend for all new source code to use the license below and hope over
+time to replace code with other licenses with new implementations that
+do use the license below.  The varying licensing of the build scripts
+seems to be an unavoidable mess.
+
+
+Copyright (c) 2003-2018 <author(s)>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer
+   in this position and unchanged.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/doc/cmake-3.18/cmliblzma/COPYING b/doc/cmake-3.22/cmliblzma/COPYING
similarity index 100%
rename from doc/cmake-3.18/cmliblzma/COPYING
rename to doc/cmake-3.22/cmliblzma/COPYING
diff --git a/doc/cmake-3.18/cmlibrhash/COPYING b/doc/cmake-3.22/cmlibrhash/COPYING
similarity index 100%
rename from doc/cmake-3.18/cmlibrhash/COPYING
rename to doc/cmake-3.22/cmlibrhash/COPYING
diff --git a/doc/cmake-3.18/cmlibuv/LICENSE b/doc/cmake-3.22/cmlibuv/LICENSE
similarity index 100%
rename from doc/cmake-3.18/cmlibuv/LICENSE
rename to doc/cmake-3.22/cmlibuv/LICENSE
diff --git a/doc/cmake-3.18/cmnghttp2/COPYING b/doc/cmake-3.22/cmnghttp2/COPYING
similarity index 100%
rename from doc/cmake-3.18/cmnghttp2/COPYING
rename to doc/cmake-3.22/cmnghttp2/COPYING
diff --git a/doc/cmake-3.18/cmsys/Copyright.txt b/doc/cmake-3.22/cmsys/Copyright.txt
similarity index 100%
rename from doc/cmake-3.18/cmsys/Copyright.txt
rename to doc/cmake-3.22/cmsys/Copyright.txt
diff --git a/doc/cmake-3.18/cmzlib/Copyright.txt b/doc/cmake-3.22/cmzlib/Copyright.txt
similarity index 100%
rename from doc/cmake-3.18/cmzlib/Copyright.txt
rename to doc/cmake-3.22/cmzlib/Copyright.txt
diff --git a/doc/cmake-3.18/cmzstd/LICENSE b/doc/cmake-3.22/cmzstd/LICENSE
similarity index 100%
rename from doc/cmake-3.18/cmzstd/LICENSE
rename to doc/cmake-3.22/cmzstd/LICENSE
diff --git a/doc/openssl-1.1.1l/LICENSE b/doc/openssl-1.1.1l/LICENSE
new file mode 100644
index 0000000..9601ab4
--- /dev/null
+++ b/doc/openssl-1.1.1l/LICENSE
@@ -0,0 +1,125 @@
+
+  LICENSE ISSUES
+  ==============
+
+  The OpenSSL toolkit stays under a double license, i.e. both the conditions of
+  the OpenSSL License and the original SSLeay license apply to the toolkit.
+  See below for the actual license texts.
+
+  OpenSSL License
+  ---------------
+
+/* ====================================================================
+ * Copyright (c) 1998-2019 The OpenSSL Project.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com).  This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+
+ Original SSLeay License
+ -----------------------
+
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ *
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ *
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
diff --git a/share/cmake-3.18/Help/command/DEVICE_LINK_OPTIONS.txt b/share/cmake-3.18/Help/command/DEVICE_LINK_OPTIONS.txt
deleted file mode 100644
index 3f0226f..0000000
--- a/share/cmake-3.18/Help/command/DEVICE_LINK_OPTIONS.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-
-When a device link step is involved, which is controlled by
-:prop_tgt:`CUDA_SEPARABLE_COMPILATION` and
-:prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` properties and policy :policy:`CMP0105`,
-the raw options will be delivered to the host and device link steps (wrapped in
-``-Xcompiler`` or equivalent for device link). Options wrapped with
-``$<DEVICE_LINK:...>``
-:manual:`generator expression <cmake-generator-expressions(7)>` will be used
-only for the device link step. Options wrapped with ``$<HOST_LINK:...>``
-:manual:`generator expression <cmake-generator-expressions(7)>` will be used
-only for the host link step.
diff --git a/share/cmake-3.18/Help/command/FIND_XXX.txt b/share/cmake-3.18/Help/command/FIND_XXX.txt
deleted file mode 100644
index 4a62c5b..0000000
--- a/share/cmake-3.18/Help/command/FIND_XXX.txt
+++ /dev/null
@@ -1,161 +0,0 @@
-A short-hand signature is:
-
-.. parsed-literal::
-
-   |FIND_XXX| (<VAR> name1 [path1 path2 ...])
-
-The general signature is:
-
-.. parsed-literal::
-
-   |FIND_XXX| (
-             <VAR>
-             name | |NAMES|
-             [HINTS path1 [path2 ... ENV var]]
-             [PATHS path1 [path2 ... ENV var]]
-             [PATH_SUFFIXES suffix1 [suffix2 ...]]
-             [DOC "cache documentation string"]
-             [REQUIRED]
-             [NO_DEFAULT_PATH]
-             [NO_PACKAGE_ROOT_PATH]
-             [NO_CMAKE_PATH]
-             [NO_CMAKE_ENVIRONMENT_PATH]
-             [NO_SYSTEM_ENVIRONMENT_PATH]
-             [NO_CMAKE_SYSTEM_PATH]
-             [CMAKE_FIND_ROOT_PATH_BOTH |
-              ONLY_CMAKE_FIND_ROOT_PATH |
-              NO_CMAKE_FIND_ROOT_PATH]
-            )
-
-This command is used to find a |SEARCH_XXX_DESC|.
-A cache entry named by ``<VAR>`` is created to store the result
-of this command.
-If the |SEARCH_XXX| is found the result is stored in the variable
-and the search will not be repeated unless the variable is cleared.
-If nothing is found, the result will be ``<VAR>-NOTFOUND``.
-The ``REQUIRED`` option stops processing with an error message if nothing
-is found, otherwise the search will be attempted again the
-next time |FIND_XXX| is invoked with the same variable.
-
-Options include:
-
-``NAMES``
-  Specify one or more possible names for the |SEARCH_XXX|.
-
-  When using this to specify names with and without a version
-  suffix, we recommend specifying the unversioned name first
-  so that locally-built packages can be found before those
-  provided by distributions.
-
-``HINTS``, ``PATHS``
-  Specify directories to search in addition to the default locations.
-  The ``ENV var`` sub-option reads paths from a system environment
-  variable.
-
-``PATH_SUFFIXES``
-  Specify additional subdirectories to check below each directory
-  location otherwise considered.
-
-``DOC``
-  Specify the documentation string for the ``<VAR>`` cache entry.
-
-``REQUIRED``
-  Stop processing with an error message if nothing is found.
-
-If ``NO_DEFAULT_PATH`` is specified, then no additional paths are
-added to the search.
-If ``NO_DEFAULT_PATH`` is not specified, the search process is as follows:
-
-.. |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX_SUBDIR| replace::
-   |prefix_XXX_SUBDIR| for each ``<prefix>`` in the
-   :variable:`<PackageName>_ROOT` CMake variable and the
-   :envvar:`<PackageName>_ROOT` environment variable if
-   called from within a find module loaded by
-   :command:`find_package(<PackageName>)`
-
-.. |CMAKE_PREFIX_PATH_XXX_SUBDIR| replace::
-   |prefix_XXX_SUBDIR| for each ``<prefix>`` in :variable:`CMAKE_PREFIX_PATH`
-
-.. |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR| replace::
-   |prefix_XXX_SUBDIR| for each ``<prefix>/[s]bin`` in ``PATH``, and
-   |entry_XXX_SUBDIR| for other entries in ``PATH``
-
-.. |CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR| replace::
-   |prefix_XXX_SUBDIR| for each ``<prefix>`` in
-   :variable:`CMAKE_SYSTEM_PREFIX_PATH`
-
-1. If called from within a find module or any other script loaded by a call to
-   :command:`find_package(<PackageName>)`, search prefixes unique to the
-   current package being found.  Specifically, look in the
-   :variable:`<PackageName>_ROOT` CMake variable and the
-   :envvar:`<PackageName>_ROOT` environment variable.
-   The package root variables are maintained as a stack, so if called from
-   nested find modules or config packages, root paths from the parent's find
-   module or config package will be searched after paths from the current
-   module or package.  In other words, the search order would be
-   ``<CurrentPackage>_ROOT``, ``ENV{<CurrentPackage>_ROOT}``,
-   ``<ParentPackage>_ROOT``, ``ENV{<ParentPackage>_ROOT}``, etc.
-   This can be skipped if ``NO_PACKAGE_ROOT_PATH`` is passed or by setting
-   the :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` to ``FALSE``.
-   See policy :policy:`CMP0074`.
-
-   * |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX|
-
-2. Search paths specified in cmake-specific cache variables.
-   These are intended to be used on the command line with a ``-DVAR=value``.
-   The values are interpreted as :ref:`semicolon-separated lists <CMake Language Lists>`.
-   This can be skipped if ``NO_CMAKE_PATH`` is passed or by setting the
-   :variable:`CMAKE_FIND_USE_CMAKE_PATH` to ``FALSE``.
-
-   * |CMAKE_PREFIX_PATH_XXX|
-   * |CMAKE_XXX_PATH|
-   * |CMAKE_XXX_MAC_PATH|
-
-3. Search paths specified in cmake-specific environment variables.
-   These are intended to be set in the user's shell configuration,
-   and therefore use the host's native path separator
-   (``;`` on Windows and ``:`` on UNIX).
-   This can be skipped if ``NO_CMAKE_ENVIRONMENT_PATH`` is passed or
-   by setting the :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH` to ``FALSE``.
-
-   * |CMAKE_PREFIX_PATH_XXX|
-   * |CMAKE_XXX_PATH|
-   * |CMAKE_XXX_MAC_PATH|
-
-4. Search the paths specified by the ``HINTS`` option.
-   These should be paths computed by system introspection, such as a
-   hint provided by the location of another item already found.
-   Hard-coded guesses should be specified with the ``PATHS`` option.
-
-5. Search the standard system environment variables.
-   This can be skipped if ``NO_SYSTEM_ENVIRONMENT_PATH`` is passed or by
-   setting the :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH` to ``FALSE``.
-
-   * |SYSTEM_ENVIRONMENT_PATH_XXX|
-   * |SYSTEM_ENVIRONMENT_PATH_WINDOWS_XXX|
-
-6. Search cmake variables defined in the Platform files
-   for the current system.  This can be skipped if ``NO_CMAKE_SYSTEM_PATH``
-   is passed or by setting the :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`
-   to ``FALSE``.
-
-   * |CMAKE_SYSTEM_PREFIX_PATH_XXX|
-   * |CMAKE_SYSTEM_XXX_PATH|
-   * |CMAKE_SYSTEM_XXX_MAC_PATH|
-
-   The platform paths that these variables contain are locations that
-   typically include installed software. An example being ``/usr/local`` for
-   UNIX based platforms.
-
-7. Search the paths specified by the PATHS option
-   or in the short-hand version of the command.
-   These are typically hard-coded guesses.
-
-.. |FIND_ARGS_XXX| replace:: <VAR> NAMES name
-
-On macOS the :variable:`CMAKE_FIND_FRAMEWORK` and
-:variable:`CMAKE_FIND_APPBUNDLE` variables determine the order of
-preference between Apple-style and unix-style package components.
-
-.. include:: FIND_XXX_ROOT.txt
-.. include:: FIND_XXX_ORDER.txt
diff --git a/share/cmake-3.18/Help/command/LINK_OPTIONS_LINKER.txt b/share/cmake-3.18/Help/command/LINK_OPTIONS_LINKER.txt
deleted file mode 100644
index 3f66181..0000000
--- a/share/cmake-3.18/Help/command/LINK_OPTIONS_LINKER.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-To pass options to the linker tool, each compiler driver has its own syntax.
-The ``LINKER:`` prefix and ``,`` separator can be used to specify, in a portable
-way, options to pass to the linker tool. ``LINKER:`` is replaced by the
-appropriate driver option and ``,`` by the appropriate driver separator.
-The driver prefix and driver separator are given by the values of the
-:variable:`CMAKE_<LANG>_LINKER_WRAPPER_FLAG` and
-:variable:`CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP` variables.
-
-For example, ``"LINKER:-z,defs"`` becomes ``-Xlinker -z -Xlinker defs`` for
-``Clang`` and ``-Wl,-z,defs`` for ``GNU GCC``.
-
-The ``LINKER:`` prefix can be specified as part of a ``SHELL:`` prefix
-expression.
-
-The ``LINKER:`` prefix supports, as an alternative syntax, specification of
-arguments using the ``SHELL:`` prefix and space as separator. The previous
-example then becomes ``"LINKER:SHELL:-z defs"``.
-
-.. note::
-
-  Specifying the ``SHELL:`` prefix anywhere other than at the beginning of the
-  ``LINKER:`` prefix is not supported.
diff --git a/share/cmake-3.18/Help/command/OPTIONS_SHELL.txt b/share/cmake-3.18/Help/command/OPTIONS_SHELL.txt
deleted file mode 100644
index 0f8ec32..0000000
--- a/share/cmake-3.18/Help/command/OPTIONS_SHELL.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-The final set of compile or link options used for a target is constructed by
-accumulating options from the current target and the usage requirements of
-its dependencies.  The set of options is de-duplicated to avoid repetition.
-While beneficial for individual options, the de-duplication step can break
-up option groups.  For example, ``-D A -D B`` becomes ``-D A B``.  One may
-specify a group of options using shell-like quoting along with a ``SHELL:``
-prefix.  The ``SHELL:`` prefix is dropped, and the rest of the option string
-is parsed using the :command:`separate_arguments` ``UNIX_COMMAND`` mode.
-For example, ``"SHELL:-D A" "SHELL:-D B"`` becomes ``-D A -D B``.
diff --git a/share/cmake-3.18/Help/command/add_compile_definitions.rst b/share/cmake-3.18/Help/command/add_compile_definitions.rst
deleted file mode 100644
index e10aba0..0000000
--- a/share/cmake-3.18/Help/command/add_compile_definitions.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-add_compile_definitions
------------------------
-
-Add preprocessor definitions to the compilation of source files.
-
-.. code-block:: cmake
-
-  add_compile_definitions(<definition> ...)
-
-Adds preprocessor definitions to the compiler command line.
-
-The preprocessor definitions are added to the :prop_dir:`COMPILE_DEFINITIONS`
-directory property for the current ``CMakeLists`` file. They are also added to
-the :prop_tgt:`COMPILE_DEFINITIONS` target property for each target in the
-current ``CMakeLists`` file.
-
-Definitions are specified using the syntax ``VAR`` or ``VAR=value``.
-Function-style definitions are not supported. CMake will automatically
-escape the value correctly for the native build system (note that CMake
-language syntax may require escapes to specify some values).
-
-Arguments to ``add_compile_definitions`` may use "generator expressions" with
-the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
-manual for more on defining buildsystem properties.
diff --git a/share/cmake-3.18/Help/command/add_custom_command.rst b/share/cmake-3.18/Help/command/add_custom_command.rst
deleted file mode 100644
index 9279748..0000000
--- a/share/cmake-3.18/Help/command/add_custom_command.rst
+++ /dev/null
@@ -1,281 +0,0 @@
-add_custom_command
-------------------
-
-Add a custom build rule to the generated build system.
-
-There are two main signatures for ``add_custom_command``.
-
-Generating Files
-^^^^^^^^^^^^^^^^
-
-The first signature is for adding a custom command to produce an output:
-
-.. code-block:: cmake
-
-  add_custom_command(OUTPUT output1 [output2 ...]
-                     COMMAND command1 [ARGS] [args1...]
-                     [COMMAND command2 [ARGS] [args2...] ...]
-                     [MAIN_DEPENDENCY depend]
-                     [DEPENDS [depends...]]
-                     [BYPRODUCTS [files...]]
-                     [IMPLICIT_DEPENDS <lang1> depend1
-                                      [<lang2> depend2] ...]
-                     [WORKING_DIRECTORY dir]
-                     [COMMENT comment]
-                     [DEPFILE depfile]
-                     [JOB_POOL job_pool]
-                     [VERBATIM] [APPEND] [USES_TERMINAL]
-                     [COMMAND_EXPAND_LISTS])
-
-This defines a command to generate specified ``OUTPUT`` file(s).
-A target created in the same directory (``CMakeLists.txt`` file)
-that specifies any output of the custom command as a source file
-is given a rule to generate the file using the command at build time.
-Do not list the output in more than one independent target that
-may build in parallel or the two instances of the rule may conflict
-(instead use the :command:`add_custom_target` command to drive the
-command and make the other targets depend on that one).
-In makefile terms this creates a new target in the following form::
-
-  OUTPUT: MAIN_DEPENDENCY DEPENDS
-          COMMAND
-
-The options are:
-
-``APPEND``
-  Append the ``COMMAND`` and ``DEPENDS`` option values to the custom
-  command for the first output specified.  There must have already
-  been a previous call to this command with the same output.
-  The ``COMMENT``, ``MAIN_DEPENDENCY``, and ``WORKING_DIRECTORY``
-  options are currently ignored when APPEND is given, but may be
-  used in the future.
-
-``BYPRODUCTS``
-  Specify the files the command is expected to produce but whose
-  modification time may or may not be newer than the dependencies.
-  If a byproduct name is a relative path it will be interpreted
-  relative to the build tree directory corresponding to the
-  current source directory.
-  Each byproduct file will be marked with the :prop_sf:`GENERATED`
-  source file property automatically.
-
-  Explicit specification of byproducts is supported by the
-  :generator:`Ninja` generator to tell the ``ninja`` build tool
-  how to regenerate byproducts when they are missing.  It is
-  also useful when other build rules (e.g. custom commands)
-  depend on the byproducts.  Ninja requires a build rule for any
-  generated file on which another rule depends even if there are
-  order-only dependencies to ensure the byproducts will be
-  available before their dependents build.
-
-  The :ref:`Makefile Generators` will remove ``BYPRODUCTS`` and other
-  :prop_sf:`GENERATED` files during ``make clean``.
-
-``COMMAND``
-  Specify the command-line(s) to execute at build time.
-  If more than one ``COMMAND`` is specified they will be executed in order,
-  but *not* necessarily composed into a stateful shell or batch script.
-  (To run a full script, use the :command:`configure_file` command or the
-  :command:`file(GENERATE)` command to create it, and then specify
-  a ``COMMAND`` to launch it.)
-  The optional ``ARGS`` argument is for backward compatibility and
-  will be ignored.
-
-  If ``COMMAND`` specifies an executable target name (created by the
-  :command:`add_executable` command), it will automatically be replaced
-  by the location of the executable created at build time if either of
-  the following is true:
-
-  * The target is not being cross-compiled (i.e. the
-    :variable:`CMAKE_CROSSCOMPILING` variable is not set to true).
-  * The target is being cross-compiled and an emulator is provided (i.e.
-    its :prop_tgt:`CROSSCOMPILING_EMULATOR` target property is set).
-    In this case, the contents of :prop_tgt:`CROSSCOMPILING_EMULATOR` will be
-    prepended to the command before the location of the target executable.
-
-  If neither of the above conditions are met, it is assumed that the
-  command name is a program to be found on the ``PATH`` at build time.
-
-  Arguments to ``COMMAND`` may use
-  :manual:`generator expressions <cmake-generator-expressions(7)>`.
-  Use the ``TARGET_FILE`` generator expression to refer to the location of
-  a target later in the command line (i.e. as a command argument rather
-  than as the command to execute).
-
-  Whenever a target is used as a command to execute or is mentioned in a
-  generator expression as a command argument, a target-level dependency
-  will be added automatically so that the mentioned target will be built
-  before any target using this custom command.  However this does NOT add
-  a file-level dependency that would cause the custom command to re-run
-  whenever the executable is recompiled.  List target names with
-  the ``DEPENDS`` option to add such file-level dependencies.
-
-``COMMENT``
-  Display the given message before the commands are executed at
-  build time.
-
-``DEPENDS``
-  Specify files on which the command depends.  Each argument is converted
-  to a dependency as follows:
-
-  1. If the argument is the name of a target (created by the
-     :command:`add_custom_target`, :command:`add_executable`, or
-     :command:`add_library` command) a target-level dependency is
-     created to make sure the target is built before any target
-     using this custom command.  Additionally, if the target is an
-     executable or library, a file-level dependency is created to
-     cause the custom command to re-run whenever the target is
-     recompiled.
-
-  2. If the argument is an absolute path, a file-level dependency
-     is created on that path.
-
-  3. If the argument is the name of a source file that has been
-     added to a target or on which a source file property has been set,
-     a file-level dependency is created on that source file.
-
-  4. If the argument is a relative path and it exists in the current
-     source directory, a file-level dependency is created on that
-     file in the current source directory.
-
-  5. Otherwise, a file-level dependency is created on that path relative
-     to the current binary directory.
-
-  If any dependency is an ``OUTPUT`` of another custom command in the same
-  directory (``CMakeLists.txt`` file), CMake automatically brings the other
-  custom command into the target in which this command is built.
-  A target-level dependency is added if any dependency is listed as
-  ``BYPRODUCTS`` of a target or any of its build events in the same
-  directory to ensure the byproducts will be available.
-
-  If ``DEPENDS`` is not specified, the command will run whenever
-  the ``OUTPUT`` is missing; if the command does not actually
-  create the ``OUTPUT``, the rule will always run.
-
-  Arguments to ``DEPENDS`` may use
-  :manual:`generator expressions <cmake-generator-expressions(7)>`.
-
-``COMMAND_EXPAND_LISTS``
-  Lists in ``COMMAND`` arguments will be expanded, including those
-  created with
-  :manual:`generator expressions <cmake-generator-expressions(7)>`,
-  allowing ``COMMAND`` arguments such as
-  ``${CC} "-I$<JOIN:$<TARGET_PROPERTY:foo,INCLUDE_DIRECTORIES>,;-I>" foo.cc``
-  to be properly expanded.
-
-``IMPLICIT_DEPENDS``
-  Request scanning of implicit dependencies of an input file.
-  The language given specifies the programming language whose
-  corresponding dependency scanner should be used.
-  Currently only ``C`` and ``CXX`` language scanners are supported.
-  The language has to be specified for every file in the
-  ``IMPLICIT_DEPENDS`` list.  Dependencies discovered from the
-  scanning are added to those of the custom command at build time.
-  Note that the ``IMPLICIT_DEPENDS`` option is currently supported
-  only for Makefile generators and will be ignored by other generators.
-
-``JOB_POOL``
-  Specify a :prop_gbl:`pool <JOB_POOLS>` for the :generator:`Ninja`
-  generator. Incompatible with ``USES_TERMINAL``, which implies
-  the ``console`` pool.
-  Using a pool that is not defined by :prop_gbl:`JOB_POOLS` causes
-  an error by ninja at build time.
-
-``MAIN_DEPENDENCY``
-  Specify the primary input source file to the command.  This is
-  treated just like any value given to the ``DEPENDS`` option
-  but also suggests to Visual Studio generators where to hang
-  the custom command. Each source file may have at most one command
-  specifying it as its main dependency. A compile command (i.e. for a
-  library or an executable) counts as an implicit main dependency which
-  gets silently overwritten by a custom command specification.
-
-``OUTPUT``
-  Specify the output files the command is expected to produce.
-  If an output name is a relative path it will be interpreted
-  relative to the build tree directory corresponding to the
-  current source directory.
-  Each output file will be marked with the :prop_sf:`GENERATED`
-  source file property automatically.
-  If the output of the custom command is not actually created
-  as a file on disk it should be marked with the :prop_sf:`SYMBOLIC`
-  source file property.
-
-``USES_TERMINAL``
-  The command will be given direct access to the terminal if possible.
-  With the :generator:`Ninja` generator, this places the command in
-  the ``console`` :prop_gbl:`pool <JOB_POOLS>`.
-
-``VERBATIM``
-  All arguments to the commands will be escaped properly for the
-  build tool so that the invoked command receives each argument
-  unchanged.  Note that one level of escapes is still used by the
-  CMake language processor before add_custom_command even sees the
-  arguments.  Use of ``VERBATIM`` is recommended as it enables
-  correct behavior.  When ``VERBATIM`` is not given the behavior
-  is platform specific because there is no protection of
-  tool-specific special characters.
-
-``WORKING_DIRECTORY``
-  Execute the command with the given current working directory.
-  If it is a relative path it will be interpreted relative to the
-  build tree directory corresponding to the current source directory.
-
-  Arguments to ``WORKING_DIRECTORY`` may use
-  :manual:`generator expressions <cmake-generator-expressions(7)>`.
-
-``DEPFILE``
-  Specify a ``.d`` depfile for the :generator:`Ninja` generator.
-  A ``.d`` file holds dependencies usually emitted by the custom
-  command itself.
-  Using ``DEPFILE`` with other generators than Ninja is an error.
-
-Build Events
-^^^^^^^^^^^^
-
-The second signature adds a custom command to a target such as a
-library or executable.  This is useful for performing an operation
-before or after building the target.  The command becomes part of the
-target and will only execute when the target itself is built.  If the
-target is already built, the command will not execute.
-
-.. code-block:: cmake
-
-  add_custom_command(TARGET <target>
-                     PRE_BUILD | PRE_LINK | POST_BUILD
-                     COMMAND command1 [ARGS] [args1...]
-                     [COMMAND command2 [ARGS] [args2...] ...]
-                     [BYPRODUCTS [files...]]
-                     [WORKING_DIRECTORY dir]
-                     [COMMENT comment]
-                     [VERBATIM] [USES_TERMINAL]
-                     [COMMAND_EXPAND_LISTS])
-
-This defines a new command that will be associated with building the
-specified ``<target>``.  The ``<target>`` must be defined in the current
-directory; targets defined in other directories may not be specified.
-
-When the command will happen is determined by which
-of the following is specified:
-
-``PRE_BUILD``
-  On :ref:`Visual Studio Generators`, run before any other rules are
-  executed within the target.
-  On other generators, run just before ``PRE_LINK`` commands.
-``PRE_LINK``
-  Run after sources have been compiled but before linking the binary
-  or running the librarian or archiver tool of a static library.
-  This is not defined for targets created by the
-  :command:`add_custom_target` command.
-``POST_BUILD``
-  Run after all other rules within the target have been executed.
-
-.. note::
-  Because generator expressions can be used in custom commands,
-  it is possible to define ``COMMAND`` lines or whole custom commands
-  which evaluate to empty strings for certain configurations.
-  For **Visual Studio 2010 (and newer)** generators these command
-  lines or custom commands will be omitted for the specific
-  configuration and no "empty-string-command" will be added.
-
-  This allows to add individual build events for every configuration.
diff --git a/share/cmake-3.18/Help/command/add_custom_target.rst b/share/cmake-3.18/Help/command/add_custom_target.rst
deleted file mode 100644
index 56ab414..0000000
--- a/share/cmake-3.18/Help/command/add_custom_target.rst
+++ /dev/null
@@ -1,149 +0,0 @@
-add_custom_target
------------------
-
-Add a target with no output so it will always be built.
-
-.. code-block:: cmake
-
-  add_custom_target(Name [ALL] [command1 [args1...]]
-                    [COMMAND command2 [args2...] ...]
-                    [DEPENDS depend depend depend ... ]
-                    [BYPRODUCTS [files...]]
-                    [WORKING_DIRECTORY dir]
-                    [COMMENT comment]
-                    [JOB_POOL job_pool]
-                    [VERBATIM] [USES_TERMINAL]
-                    [COMMAND_EXPAND_LISTS]
-                    [SOURCES src1 [src2...]])
-
-Adds a target with the given name that executes the given commands.
-The target has no output file and is *always considered out of date*
-even if the commands try to create a file with the name of the target.
-Use the :command:`add_custom_command` command to generate a file with
-dependencies.  By default nothing depends on the custom target.  Use
-the :command:`add_dependencies` command to add dependencies to or
-from other targets.
-
-The options are:
-
-``ALL``
-  Indicate that this target should be added to the default build
-  target so that it will be run every time (the command cannot be
-  called ``ALL``).
-
-``BYPRODUCTS``
-  Specify the files the command is expected to produce but whose
-  modification time may or may not be updated on subsequent builds.
-  If a byproduct name is a relative path it will be interpreted
-  relative to the build tree directory corresponding to the
-  current source directory.
-  Each byproduct file will be marked with the :prop_sf:`GENERATED`
-  source file property automatically.
-
-  Explicit specification of byproducts is supported by the
-  :generator:`Ninja` generator to tell the ``ninja`` build tool
-  how to regenerate byproducts when they are missing.  It is
-  also useful when other build rules (e.g. custom commands)
-  depend on the byproducts.  Ninja requires a build rule for any
-  generated file on which another rule depends even if there are
-  order-only dependencies to ensure the byproducts will be
-  available before their dependents build.
-
-  The :ref:`Makefile Generators` will remove ``BYPRODUCTS`` and other
-  :prop_sf:`GENERATED` files during ``make clean``.
-
-``COMMAND``
-  Specify the command-line(s) to execute at build time.
-  If more than one ``COMMAND`` is specified they will be executed in order,
-  but *not* necessarily composed into a stateful shell or batch script.
-  (To run a full script, use the :command:`configure_file` command or the
-  :command:`file(GENERATE)` command to create it, and then specify
-  a ``COMMAND`` to launch it.)
-
-  If ``COMMAND`` specifies an executable target name (created by the
-  :command:`add_executable` command), it will automatically be replaced
-  by the location of the executable created at build time if either of
-  the following is true:
-
-  * The target is not being cross-compiled (i.e. the
-    :variable:`CMAKE_CROSSCOMPILING` variable is not set to true).
-  * The target is being cross-compiled and an emulator is provided (i.e.
-    its :prop_tgt:`CROSSCOMPILING_EMULATOR` target property is set).
-    In this case, the contents of :prop_tgt:`CROSSCOMPILING_EMULATOR` will be
-    prepended to the command before the location of the target executable.
-
-  If neither of the above conditions are met, it is assumed that the
-  command name is a program to be found on the ``PATH`` at build time.
-
-  Arguments to ``COMMAND`` may use
-  :manual:`generator expressions <cmake-generator-expressions(7)>`.
-  Use the ``TARGET_FILE`` generator expression to refer to the location of
-  a target later in the command line (i.e. as a command argument rather
-  than as the command to execute).
-
-  Whenever a target is used as a command to execute or is mentioned in a
-  generator expression as a command argument, a target-level dependency
-  will be added automatically so that the mentioned target will be built
-  before this custom target.
-
-  The command and arguments are optional and if not specified an empty
-  target will be created.
-
-``COMMENT``
-  Display the given message before the commands are executed at
-  build time.
-
-``DEPENDS``
-  Reference files and outputs of custom commands created with
-  :command:`add_custom_command` command calls in the same directory
-  (``CMakeLists.txt`` file).  They will be brought up to date when
-  the target is built.
-  A target-level dependency is added if any dependency is a byproduct
-  of a target or any of its build events in the same directory to ensure
-  the byproducts will be available before this target is built.
-
-  Use the :command:`add_dependencies` command to add dependencies
-  on other targets.
-
-``COMMAND_EXPAND_LISTS``
-  Lists in ``COMMAND`` arguments will be expanded, including those
-  created with
-  :manual:`generator expressions <cmake-generator-expressions(7)>`,
-  allowing ``COMMAND`` arguments such as
-  ``${CC} "-I$<JOIN:$<TARGET_PROPERTY:foo,INCLUDE_DIRECTORIES>,;-I>" foo.cc``
-  to be properly expanded.
-
-``JOB_POOL``
-  Specify a :prop_gbl:`pool <JOB_POOLS>` for the :generator:`Ninja`
-  generator. Incompatible with ``USES_TERMINAL``, which implies
-  the ``console`` pool.
-  Using a pool that is not defined by :prop_gbl:`JOB_POOLS` causes
-  an error by ninja at build time.
-
-``SOURCES``
-  Specify additional source files to be included in the custom target.
-  Specified source files will be added to IDE project files for
-  convenience in editing even if they have no build rules.
-
-``VERBATIM``
-  All arguments to the commands will be escaped properly for the
-  build tool so that the invoked command receives each argument
-  unchanged.  Note that one level of escapes is still used by the
-  CMake language processor before ``add_custom_target`` even sees
-  the arguments.  Use of ``VERBATIM`` is recommended as it enables
-  correct behavior.  When ``VERBATIM`` is not given the behavior
-  is platform specific because there is no protection of
-  tool-specific special characters.
-
-``USES_TERMINAL``
-  The command will be given direct access to the terminal if possible.
-  With the :generator:`Ninja` generator, this places the command in
-  the ``console`` :prop_gbl:`pool <JOB_POOLS>`.
-
-``WORKING_DIRECTORY``
-  Execute the command with the given current working directory.
-  If it is a relative path it will be interpreted relative to the
-  build tree directory corresponding to the current source directory.
-
-  Arguments to ``WORKING_DIRECTORY`` may use
-  :manual:`generator expressions <cmake-generator-expressions(7)>`.
diff --git a/share/cmake-3.18/Help/command/add_dependencies.rst b/share/cmake-3.18/Help/command/add_dependencies.rst
deleted file mode 100644
index de219a5..0000000
--- a/share/cmake-3.18/Help/command/add_dependencies.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-add_dependencies
-----------------
-
-Add a dependency between top-level targets.
-
-.. code-block:: cmake
-
-  add_dependencies(<target> [<target-dependency>]...)
-
-Makes a top-level ``<target>`` depend on other top-level targets to
-ensure that they build before ``<target>`` does.  A top-level target
-is one created by one of the :command:`add_executable`,
-:command:`add_library`, or :command:`add_custom_target` commands
-(but not targets generated by CMake like ``install``).
-
-Dependencies added to an :ref:`imported target <Imported Targets>`
-or an :ref:`interface library <Interface Libraries>` are followed
-transitively in its place since the target itself does not build.
-
-See the ``DEPENDS`` option of :command:`add_custom_target` and
-:command:`add_custom_command` commands for adding file-level
-dependencies in custom rules.  See the :prop_sf:`OBJECT_DEPENDS`
-source file property to add file-level dependencies to object files.
diff --git a/share/cmake-3.18/Help/command/add_executable.rst b/share/cmake-3.18/Help/command/add_executable.rst
deleted file mode 100644
index e073228..0000000
--- a/share/cmake-3.18/Help/command/add_executable.rst
+++ /dev/null
@@ -1,99 +0,0 @@
-add_executable
---------------
-
-.. only:: html
-
-  .. contents::
-
-Add an executable to the project using the specified source files.
-
-Normal Executables
-^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  add_executable(<name> [WIN32] [MACOSX_BUNDLE]
-                 [EXCLUDE_FROM_ALL]
-                 [source1] [source2 ...])
-
-Adds an executable target called ``<name>`` to be built from the source
-files listed in the command invocation.  (The source files can be omitted
-here if they are added later using :command:`target_sources`.)  The
-``<name>`` corresponds to the logical target name and must be globally
-unique within a project.  The actual file name of the executable built is
-constructed based on conventions of the native platform (such as
-``<name>.exe`` or just ``<name>``).
-
-By default the executable file will be created in the build tree
-directory corresponding to the source tree directory in which the
-command was invoked.  See documentation of the
-:prop_tgt:`RUNTIME_OUTPUT_DIRECTORY` target property to change this
-location.  See documentation of the :prop_tgt:`OUTPUT_NAME` target property
-to change the ``<name>`` part of the final file name.
-
-If ``WIN32`` is given the property :prop_tgt:`WIN32_EXECUTABLE` will be
-set on the target created.  See documentation of that target property for
-details.
-
-If ``MACOSX_BUNDLE`` is given the corresponding property will be set on
-the created target.  See documentation of the :prop_tgt:`MACOSX_BUNDLE`
-target property for details.
-
-If ``EXCLUDE_FROM_ALL`` is given the corresponding property will be set on
-the created target.  See documentation of the :prop_tgt:`EXCLUDE_FROM_ALL`
-target property for details.
-
-Source arguments to ``add_executable`` may use "generator expressions" with
-the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
-manual for more on defining buildsystem properties.
-
-See also :prop_sf:`HEADER_FILE_ONLY` on what to do if some sources are
-pre-processed, and you want to have the original sources reachable from
-within IDE.
-
-Imported Executables
-^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  add_executable(<name> IMPORTED [GLOBAL])
-
-An :ref:`IMPORTED executable target <Imported Targets>` references an
-executable file located outside the project.  No rules are generated to
-build it, and the :prop_tgt:`IMPORTED` target property is ``True``.  The
-target name has scope in the directory in which it is created and below, but
-the ``GLOBAL`` option extends visibility.  It may be referenced like any
-target built within the project.  ``IMPORTED`` executables are useful
-for convenient reference from commands like :command:`add_custom_command`.
-Details about the imported executable are specified by setting properties
-whose names begin in ``IMPORTED_``.  The most important such property is
-:prop_tgt:`IMPORTED_LOCATION` (and its per-configuration version
-:prop_tgt:`IMPORTED_LOCATION_<CONFIG>`) which specifies the location of
-the main executable file on disk.  See documentation of the ``IMPORTED_*``
-properties for more information.
-
-Alias Executables
-^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  add_executable(<name> ALIAS <target>)
-
-Creates an :ref:`Alias Target <Alias Targets>`, such that ``<name>`` can
-be used to refer to ``<target>`` in subsequent commands.  The ``<name>``
-does not appear in the generated buildsystem as a make target.  The
-``<target>`` may not be an ``ALIAS``.
-
-An ``ALIAS`` to a non-``GLOBAL`` :ref:`Imported Target <Imported Targets>`
-has scope in the directory in which the alias is created and below.
-The :prop_tgt:`ALIAS_GLOBAL` target property can be used to check if the
-alias is global or not.
-
-``ALIAS`` targets can be used as targets to read properties
-from, executables for custom commands and custom targets.  They can also be
-tested for existence with the regular :command:`if(TARGET)` subcommand.
-The ``<name>`` may not be used to modify properties of ``<target>``, that
-is, it may not be used as the operand of :command:`set_property`,
-:command:`set_target_properties`, :command:`target_link_libraries` etc.
-An ``ALIAS`` target may not be installed or exported.
diff --git a/share/cmake-3.18/Help/command/add_library.rst b/share/cmake-3.18/Help/command/add_library.rst
deleted file mode 100644
index 01c415a..0000000
--- a/share/cmake-3.18/Help/command/add_library.rst
+++ /dev/null
@@ -1,187 +0,0 @@
-add_library
------------
-
-.. only:: html
-
-   .. contents::
-
-Add a library to the project using the specified source files.
-
-Normal Libraries
-^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  add_library(<name> [STATIC | SHARED | MODULE]
-              [EXCLUDE_FROM_ALL]
-              [source1] [source2 ...])
-
-Adds a library target called ``<name>`` to be built from the source files
-listed in the command invocation.  (The source files can be omitted here
-if they are added later using :command:`target_sources`.)  The ``<name>``
-corresponds to the logical target name and must be globally unique within
-a project.  The actual file name of the library built is constructed based
-on conventions of the native platform (such as ``lib<name>.a`` or
-``<name>.lib``).
-
-``STATIC``, ``SHARED``, or ``MODULE`` may be given to specify the type of
-library to be created.  ``STATIC`` libraries are archives of object files
-for use when linking other targets.  ``SHARED`` libraries are linked
-dynamically and loaded at runtime.  ``MODULE`` libraries are plugins that
-are not linked into other targets but may be loaded dynamically at runtime
-using dlopen-like functionality.  If no type is given explicitly the
-type is ``STATIC`` or ``SHARED`` based on whether the current value of the
-variable :variable:`BUILD_SHARED_LIBS` is ``ON``.  For ``SHARED`` and
-``MODULE`` libraries the :prop_tgt:`POSITION_INDEPENDENT_CODE` target
-property is set to ``ON`` automatically.
-A ``SHARED`` or ``STATIC`` library may be marked with the :prop_tgt:`FRAMEWORK`
-target property to create an macOS Framework.
-
-If a library does not export any symbols, it must not be declared as a
-``SHARED`` library.  For example, a Windows resource DLL or a managed C++/CLI
-DLL that exports no unmanaged symbols would need to be a ``MODULE`` library.
-This is because CMake expects a ``SHARED`` library to always have an
-associated import library on Windows.
-
-By default the library file will be created in the build tree directory
-corresponding to the source tree directory in which the command was
-invoked.  See documentation of the :prop_tgt:`ARCHIVE_OUTPUT_DIRECTORY`,
-:prop_tgt:`LIBRARY_OUTPUT_DIRECTORY`, and
-:prop_tgt:`RUNTIME_OUTPUT_DIRECTORY` target properties to change this
-location.  See documentation of the :prop_tgt:`OUTPUT_NAME` target
-property to change the ``<name>`` part of the final file name.
-
-If ``EXCLUDE_FROM_ALL`` is given the corresponding property will be set on
-the created target.  See documentation of the :prop_tgt:`EXCLUDE_FROM_ALL`
-target property for details.
-
-Source arguments to ``add_library`` may use "generator expressions" with
-the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
-manual for more on defining buildsystem properties.
-
-See also :prop_sf:`HEADER_FILE_ONLY` on what to do if some sources are
-pre-processed, and you want to have the original sources reachable from
-within IDE.
-
-Imported Libraries
-^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  add_library(<name> <SHARED|STATIC|MODULE|OBJECT|UNKNOWN> IMPORTED
-              [GLOBAL])
-
-An :ref:`IMPORTED library target <Imported Targets>` references a library
-file located outside the project.  No rules are generated to build it, and
-the :prop_tgt:`IMPORTED` target property is ``True``.  The target name has
-scope in the directory in which it is created and below, but the ``GLOBAL``
-option extends visibility.  It may be referenced like any target built
-within the project.  ``IMPORTED`` libraries are useful for convenient
-reference from commands like :command:`target_link_libraries`.  Details
-about the imported library are specified by setting properties whose names
-begin in ``IMPORTED_`` and ``INTERFACE_``.
-
-The most important properties are:
-
-* :prop_tgt:`IMPORTED_LOCATION` (and its per-configuration
-  variant :prop_tgt:`IMPORTED_LOCATION_<CONFIG>`) which specifies the
-  location of the main library file on disk.
-* :prop_tgt:`IMPORTED_OBJECTS` (and :prop_tgt:`IMPORTED_OBJECTS_<CONFIG>`)
-  for object libraries, specifies the locations of object files on disk.
-* :prop_tgt:`PUBLIC_HEADER` files to be installed during :command:`install` invocation
-
-See documentation of the ``IMPORTED_*`` and ``INTERFACE_*`` properties
-for more information.
-
-An ``UNKNOWN`` library type is typically only used in the implementation of
-:ref:`Find Modules`.  It allows the path to an imported library (often found
-using the :command:`find_library` command) to be used without having to know
-what type of library it is.  This is especially useful on Windows where a
-static library and a DLL's import library both have the same file extension.
-
-Object Libraries
-^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  add_library(<name> OBJECT <src>...)
-
-Creates an :ref:`Object Library <Object Libraries>`.  An object library
-compiles source files but does not archive or link their object files into a
-library.  Instead other targets created by :command:`add_library` or
-:command:`add_executable` may reference the objects using an expression of the
-form ``$<TARGET_OBJECTS:objlib>`` as a source, where ``objlib`` is the
-object library name.  For example:
-
-.. code-block:: cmake
-
-  add_library(... $<TARGET_OBJECTS:objlib> ...)
-  add_executable(... $<TARGET_OBJECTS:objlib> ...)
-
-will include objlib's object files in a library and an executable
-along with those compiled from their own sources.  Object libraries
-may contain only sources that compile, header files, and other files
-that would not affect linking of a normal library (e.g. ``.txt``).
-They may contain custom commands generating such sources, but not
-``PRE_BUILD``, ``PRE_LINK``, or ``POST_BUILD`` commands.  Some native build
-systems (such as Xcode) may not like targets that have only object files, so
-consider adding at least one real source file to any target that references
-``$<TARGET_OBJECTS:objlib>``.
-
-Alias Libraries
-^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  add_library(<name> ALIAS <target>)
-
-Creates an :ref:`Alias Target <Alias Targets>`, such that ``<name>`` can be
-used to refer to ``<target>`` in subsequent commands.  The ``<name>`` does
-not appear in the generated buildsystem as a make target.  The ``<target>``
-may not be an ``ALIAS``.
-
-An ``ALIAS`` to a non-``GLOBAL`` :ref:`Imported Target <Imported Targets>`
-has scope in the directory in which the alias is created and below.
-The :prop_tgt:`ALIAS_GLOBAL` target property can be used to check if the
-alias is global or not.
-
-``ALIAS`` targets can be used as linkable targets and as targets to
-read properties from.  They can also be tested for existence with the
-regular :command:`if(TARGET)` subcommand.  The ``<name>`` may not be used
-to modify properties of ``<target>``, that is, it may not be used as the
-operand of :command:`set_property`, :command:`set_target_properties`,
-:command:`target_link_libraries` etc.  An ``ALIAS`` target may not be
-installed or exported.
-
-Interface Libraries
-^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  add_library(<name> INTERFACE [IMPORTED [GLOBAL]])
-
-Creates an :ref:`Interface Library <Interface Libraries>`.  An ``INTERFACE``
-library target does not directly create build output, though it may
-have properties set on it and it may be installed, exported and
-imported. Typically the ``INTERFACE_*`` properties are populated on
-the interface target using the commands:
-
-* :command:`set_property`,
-* :command:`target_link_libraries(INTERFACE)`,
-* :command:`target_link_options(INTERFACE)`,
-* :command:`target_include_directories(INTERFACE)`,
-* :command:`target_compile_options(INTERFACE)`,
-* :command:`target_compile_definitions(INTERFACE)`, and
-* :command:`target_sources(INTERFACE)`,
-
-and then it is used as an argument to :command:`target_link_libraries`
-like any other target.
-
-An ``INTERFACE`` :ref:`Imported Target <Imported Targets>` may also be
-created with this signature.  An ``IMPORTED`` library target references a
-library defined outside the project.  The target name has scope in the
-directory in which it is created and below, but the ``GLOBAL`` option
-extends visibility.  It may be referenced like any target built within
-the project.  ``IMPORTED`` libraries are useful for convenient reference
-from commands like :command:`target_link_libraries`.
diff --git a/share/cmake-3.18/Help/command/add_link_options.rst b/share/cmake-3.18/Help/command/add_link_options.rst
deleted file mode 100644
index faa4afb..0000000
--- a/share/cmake-3.18/Help/command/add_link_options.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-add_link_options
-----------------
-
-Add options to the link step for executable, shared library or module
-library targets in the current directory and below that are added after
-this command is invoked.
-
-.. code-block:: cmake
-
-  add_link_options(<option> ...)
-
-This command can be used to add any link options, but alternative commands
-exist to add libraries (:command:`target_link_libraries` or
-:command:`link_libraries`).  See documentation of the
-:prop_dir:`directory <LINK_OPTIONS>` and
-:prop_tgt:`target <LINK_OPTIONS>` ``LINK_OPTIONS`` properties.
-
-.. note::
-
-  This command cannot be used to add options for static library targets,
-  since they do not use a linker.  To add archiver or MSVC librarian flags,
-  see the :prop_tgt:`STATIC_LIBRARY_OPTIONS` target property.
-
-Arguments to ``add_link_options`` may use "generator expressions" with
-the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
-manual for more on defining buildsystem properties.
-
-.. include:: DEVICE_LINK_OPTIONS.txt
-
-.. include:: OPTIONS_SHELL.txt
-
-.. include:: LINK_OPTIONS_LINKER.txt
diff --git a/share/cmake-3.18/Help/command/add_test.rst b/share/cmake-3.18/Help/command/add_test.rst
deleted file mode 100644
index a77ba37..0000000
--- a/share/cmake-3.18/Help/command/add_test.rst
+++ /dev/null
@@ -1,76 +0,0 @@
-add_test
---------
-
-Add a test to the project to be run by :manual:`ctest(1)`.
-
-.. code-block:: cmake
-
-  add_test(NAME <name> COMMAND <command> [<arg>...]
-           [CONFIGURATIONS <config>...]
-           [WORKING_DIRECTORY <dir>]
-           [COMMAND_EXPAND_LISTS])
-
-Adds a test called ``<name>``.  The test name may not contain spaces,
-quotes, or other characters special in CMake syntax.  The options are:
-
-``COMMAND``
-  Specify the test command-line.  If ``<command>`` specifies an
-  executable target (created by :command:`add_executable`) it will
-  automatically be replaced by the location of the executable created
-  at build time.
-
-``CONFIGURATIONS``
-  Restrict execution of the test only to the named configurations.
-
-``WORKING_DIRECTORY``
-  Set the :prop_test:`WORKING_DIRECTORY` test property to
-  specify the working directory in which to execute the test.
-  If not specified the test will be run with the current working
-  directory set to the build directory corresponding to the
-  current source directory.
-
-``COMMAND_EXPAND_LISTS``
-  Lists in ``COMMAND`` arguments will be expanded, including those
-  created with
-  :manual:`generator expressions <cmake-generator-expressions(7)>`.
-
-The given test command is expected to exit with code ``0`` to pass and
-non-zero to fail, or vice-versa if the :prop_test:`WILL_FAIL` test
-property is set.  Any output written to stdout or stderr will be
-captured by :manual:`ctest(1)` but does not affect the pass/fail status
-unless the :prop_test:`PASS_REGULAR_EXPRESSION`,
-:prop_test:`FAIL_REGULAR_EXPRESSION` or
-:prop_test:`SKIP_REGULAR_EXPRESSION` test property is used.
-
-The ``COMMAND`` and ``WORKING_DIRECTORY`` options may use "generator
-expressions" with the syntax ``$<...>``.  See the
-:manual:`cmake-generator-expressions(7)` manual for available expressions.
-
-Example usage:
-
-.. code-block:: cmake
-
-  add_test(NAME mytest
-           COMMAND testDriver --config $<CONFIGURATION>
-                              --exe $<TARGET_FILE:myexe>)
-
-This creates a test ``mytest`` whose command runs a ``testDriver`` tool
-passing the configuration name and the full path to the executable
-file produced by target ``myexe``.
-
-.. note::
-
-  CMake will generate tests only if the :command:`enable_testing`
-  command has been invoked.  The :module:`CTest` module invokes the
-  command automatically unless the ``BUILD_TESTING`` option is turned
-  ``OFF``.
-
----------------------------------------------------------------------
-
-.. code-block:: cmake
-
-  add_test(<name> <command> [<arg>...])
-
-Add a test called ``<name>`` with the given command-line.  Unlike
-the above ``NAME`` signature no transformation is performed on the
-command-line to support target names or generator expressions.
diff --git a/share/cmake-3.18/Help/command/build_command.rst b/share/cmake-3.18/Help/command/build_command.rst
deleted file mode 100644
index 6659005..0000000
--- a/share/cmake-3.18/Help/command/build_command.rst
+++ /dev/null
@@ -1,45 +0,0 @@
-build_command
--------------
-
-Get a command line to build the current project.
-This is mainly intended for internal use by the :module:`CTest` module.
-
-.. code-block:: cmake
-
-  build_command(<variable>
-                [CONFIGURATION <config>]
-                [TARGET <target>]
-                [PROJECT_NAME <projname>] # legacy, causes warning
-               )
-
-Sets the given ``<variable>`` to a command-line string of the form::
-
- <cmake> --build . [--config <config>] [--target <target>...] [-- -i]
-
-where ``<cmake>`` is the location of the :manual:`cmake(1)` command-line
-tool, and ``<config>`` and ``<target>`` are the values provided to the
-``CONFIGURATION`` and ``TARGET`` options, if any.  The trailing ``-- -i``
-option is added for :ref:`Makefile Generators` if policy :policy:`CMP0061`
-is not set to ``NEW``.
-
-When invoked, this ``cmake --build`` command line will launch the
-underlying build system tool.
-
-.. code-block:: cmake
-
-  build_command(<cachevariable> <makecommand>)
-
-This second signature is deprecated, but still available for backwards
-compatibility.  Use the first signature instead.
-
-It sets the given ``<cachevariable>`` to a command-line string as
-above but without the ``--target`` option.
-The ``<makecommand>`` is ignored but should be the full path to
-devenv, nmake, make or one of the end user build tools
-for legacy invocations.
-
-.. note::
- In CMake versions prior to 3.0 this command returned a command
- line that directly invokes the native build tool for the current
- generator.  Their implementation of the ``PROJECT_NAME`` option
- had no useful effects, so CMake now warns on use of the option.
diff --git a/share/cmake-3.18/Help/command/cmake_host_system_information.rst b/share/cmake-3.18/Help/command/cmake_host_system_information.rst
deleted file mode 100644
index 2e9563a..0000000
--- a/share/cmake-3.18/Help/command/cmake_host_system_information.rst
+++ /dev/null
@@ -1,50 +0,0 @@
-cmake_host_system_information
------------------------------
-
-Query host system specific information.
-
-.. code-block:: cmake
-
-  cmake_host_system_information(RESULT <variable> QUERY <key> ...)
-
-Queries system information of the host system on which cmake runs.
-One or more ``<key>`` can be provided to select the information to be
-queried.  The list of queried values is stored in ``<variable>``.
-
-``<key>`` can be one of the following values:
-
-============================= ================================================
-Key                           Description
-============================= ================================================
-``NUMBER_OF_LOGICAL_CORES``   Number of logical cores
-``NUMBER_OF_PHYSICAL_CORES``  Number of physical cores
-``HOSTNAME``                  Hostname
-``FQDN``                      Fully qualified domain name
-``TOTAL_VIRTUAL_MEMORY``      Total virtual memory in MiB [#mebibytes]_
-``AVAILABLE_VIRTUAL_MEMORY``  Available virtual memory in MiB [#mebibytes]_
-``TOTAL_PHYSICAL_MEMORY``     Total physical memory in MiB [#mebibytes]_
-``AVAILABLE_PHYSICAL_MEMORY`` Available physical memory in MiB [#mebibytes]_
-``IS_64BIT``                  One if processor is 64Bit
-``HAS_FPU``                   One if processor has floating point unit
-``HAS_MMX``                   One if processor supports MMX instructions
-``HAS_MMX_PLUS``              One if processor supports Ext. MMX instructions
-``HAS_SSE``                   One if processor supports SSE instructions
-``HAS_SSE2``                  One if processor supports SSE2 instructions
-``HAS_SSE_FP``                One if processor supports SSE FP instructions
-``HAS_SSE_MMX``               One if processor supports SSE MMX instructions
-``HAS_AMD_3DNOW``             One if processor supports 3DNow instructions
-``HAS_AMD_3DNOW_PLUS``        One if processor supports 3DNow+ instructions
-``HAS_IA64``                  One if IA64 processor emulating x86
-``HAS_SERIAL_NUMBER``         One if processor has serial number
-``PROCESSOR_SERIAL_NUMBER``   Processor serial number
-``PROCESSOR_NAME``            Human readable processor name
-``PROCESSOR_DESCRIPTION``     Human readable full processor description
-``OS_NAME``                   See :variable:`CMAKE_HOST_SYSTEM_NAME`
-``OS_RELEASE``                The OS sub-type e.g. on Windows ``Professional``
-``OS_VERSION``                The OS build ID
-``OS_PLATFORM``               See :variable:`CMAKE_HOST_SYSTEM_PROCESSOR`
-============================= ================================================
-
-.. rubric:: Footnotes
-
-.. [#mebibytes] One MiB (mebibyte) is equal to 1024x1024 bytes.
diff --git a/share/cmake-3.18/Help/command/cmake_language.rst b/share/cmake-3.18/Help/command/cmake_language.rst
deleted file mode 100644
index 0988097..0000000
--- a/share/cmake-3.18/Help/command/cmake_language.rst
+++ /dev/null
@@ -1,99 +0,0 @@
-cmake_language
---------------
-
-Call meta-operations on CMake commands.
-
-Synopsis
-^^^^^^^^
-
-.. parsed-literal::
-
-  cmake_language(`CALL`_ <command> [<args>...])
-  cmake_language(`EVAL`_ CODE <code>...)
-
-Introduction
-^^^^^^^^^^^^
-
-This command will call meta-operations on built-in CMake commands or
-those created via the :command:`macro` or :command:`function` commands.
-
-``cmake_language`` does not introduce a new variable or policy scope.
-
-Calling Commands
-^^^^^^^^^^^^^^^^
-
-.. _CALL:
-
-.. code-block:: cmake
-
-  cmake_language(CALL <command> [<args>...])
-
-Calls the named ``<command>`` with the given arguments (if any).
-For example, the code:
-
-.. code-block:: cmake
-
-  set(message_command "message")
-  cmake_language(CALL ${message_command} STATUS "Hello World!")
-
-is equivalent to
-
-.. code-block:: cmake
-
-  message(STATUS "Hello World!")
-
-.. note::
-  To ensure consistency of the code, the following commands are not allowed:
-
-  * ``if`` / ``elseif`` / ``else`` / ``endif``
-  * ``while`` / ``endwhile``
-  * ``foreach`` / ``endforeach``
-  * ``function`` / ``endfunction``
-  * ``macro`` / ``endmacro``
-
-Evaluating Code
-^^^^^^^^^^^^^^^
-
-.. _EVAL:
-
-.. code-block:: cmake
-
-  cmake_language(EVAL CODE <code>...)
-
-Evaluates the ``<code>...`` as CMake code.
-
-For example, the code:
-
-.. code-block:: cmake
-
-  set(A TRUE)
-  set(B TRUE)
-  set(C TRUE)
-  set(condition "(A AND B) OR C")
-
-  cmake_language(EVAL CODE "
-    if (${condition})
-      message(STATUS TRUE)
-    else()
-      message(STATUS FALSE)
-    endif()"
-  )
-
-is equivalent to
-
-.. code-block:: cmake
-
-  set(A TRUE)
-  set(B TRUE)
-  set(C TRUE)
-  set(condition "(A AND B) OR C")
-
-  file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/eval.cmake "
-    if (${condition})
-      message(STATUS TRUE)
-    else()
-      message(STATUS FALSE)
-    endif()"
-  )
-
-  include(${CMAKE_CURRENT_BINARY_DIR}/eval.cmake)
diff --git a/share/cmake-3.18/Help/command/cmake_minimum_required.rst b/share/cmake-3.18/Help/command/cmake_minimum_required.rst
deleted file mode 100644
index e6ebcf0..0000000
--- a/share/cmake-3.18/Help/command/cmake_minimum_required.rst
+++ /dev/null
@@ -1,68 +0,0 @@
-cmake_minimum_required
-----------------------
-
-Require a minimum version of cmake.
-
-.. code-block:: cmake
-
-  cmake_minimum_required(VERSION <min>[...<max>] [FATAL_ERROR])
-
-Sets the minimum required version of cmake for a project.
-Also updates the policy settings as explained below.
-
-``<min>`` and the optional ``<max>`` are each CMake versions of the form
-``major.minor[.patch[.tweak]]``, and the ``...`` is literal.
-
-If the running version of CMake is lower than the ``<min>`` required
-version it will stop processing the project and report an error.
-The optional ``<max>`` version, if specified, must be at least the
-``<min>`` version and affects policy settings as described below.
-If the running version of CMake is older than 3.12, the extra ``...``
-dots will be seen as version component separators, resulting in the
-``...<max>`` part being ignored and preserving the pre-3.12 behavior
-of basing policies on ``<min>``.
-
-The ``FATAL_ERROR`` option is accepted but ignored by CMake 2.6 and
-higher.  It should be specified so CMake versions 2.4 and lower fail
-with an error instead of just a warning.
-
-.. note::
-  Call the ``cmake_minimum_required()`` command at the beginning of
-  the top-level ``CMakeLists.txt`` file even before calling the
-  :command:`project` command.  It is important to establish version
-  and policy settings before invoking other commands whose behavior
-  they may affect.  See also policy :policy:`CMP0000`.
-
-  Calling ``cmake_minimum_required()`` inside a :command:`function`
-  limits some effects to the function scope when invoked.  Such calls
-  should not be made with the intention of having global effects.
-
-Policy Settings
-^^^^^^^^^^^^^^^
-
-The ``cmake_minimum_required(VERSION)`` command implicitly invokes the
-:command:`cmake_policy(VERSION)` command to specify that the current
-project code is written for the given range of CMake versions.
-All policies known to the running version of CMake and introduced
-in the ``<min>`` (or ``<max>``, if specified) version or earlier will
-be set to use ``NEW`` behavior.  All policies introduced in later
-versions will be unset.  This effectively requests behavior preferred
-as of a given CMake version and tells newer CMake versions to warn
-about their new policies.
-
-When a ``<min>`` version higher than 2.4 is specified the command
-implicitly invokes
-
-.. code-block:: cmake
-
-  cmake_policy(VERSION <min>[...<max>])
-
-which sets CMake policies based on the range of versions specified.
-When a ``<min>`` version 2.4 or lower is given the command implicitly
-invokes
-
-.. code-block:: cmake
-
-  cmake_policy(VERSION 2.4[...<max>])
-
-which enables compatibility features for CMake 2.4 and lower.
diff --git a/share/cmake-3.18/Help/command/cmake_parse_arguments.rst b/share/cmake-3.18/Help/command/cmake_parse_arguments.rst
deleted file mode 100644
index fcd36d0..0000000
--- a/share/cmake-3.18/Help/command/cmake_parse_arguments.rst
+++ /dev/null
@@ -1,109 +0,0 @@
-cmake_parse_arguments
----------------------
-
-Parse function or macro arguments.
-
-.. code-block:: cmake
-
-  cmake_parse_arguments(<prefix> <options> <one_value_keywords>
-                        <multi_value_keywords> <args>...)
-
-  cmake_parse_arguments(PARSE_ARGV <N> <prefix> <options>
-                        <one_value_keywords> <multi_value_keywords>)
-
-This command is for use in macros or functions.
-It processes the arguments given to that macro or function,
-and defines a set of variables which hold the values of the
-respective options.
-
-The first signature reads processes arguments passed in the ``<args>...``.
-This may be used in either a :command:`macro` or a :command:`function`.
-
-The ``PARSE_ARGV`` signature is only for use in a :command:`function`
-body.  In this case the arguments that are parsed come from the
-``ARGV#`` variables of the calling function.  The parsing starts with
-the ``<N>``-th argument, where ``<N>`` is an unsigned integer.  This allows for
-the values to have special characters like ``;`` in them.
-
-The ``<options>`` argument contains all options for the respective macro,
-i.e.  keywords which can be used when calling the macro without any value
-following, like e.g.  the ``OPTIONAL`` keyword of the :command:`install`
-command.
-
-The ``<one_value_keywords>`` argument contains all keywords for this macro
-which are followed by one value, like e.g. ``DESTINATION`` keyword of the
-:command:`install` command.
-
-The ``<multi_value_keywords>`` argument contains all keywords for this
-macro which can be followed by more than one value, like e.g. the
-``TARGETS`` or ``FILES`` keywords of the :command:`install` command.
-
-.. note::
-
-   All keywords shall be unique. I.e. every keyword shall only be specified
-   once in either ``<options>``, ``<one_value_keywords>`` or
-   ``<multi_value_keywords>``. A warning will be emitted if uniqueness is
-   violated.
-
-When done, ``cmake_parse_arguments`` will consider for each of the
-keywords listed in ``<options>``, ``<one_value_keywords>`` and
-``<multi_value_keywords>`` a variable composed of the given ``<prefix>``
-followed by ``"_"`` and the name of the respective keyword.  These
-variables will then hold the respective value from the argument list
-or be undefined if the associated option could not be found.
-For the ``<options>`` keywords, these will always be defined,
-to ``TRUE`` or ``FALSE``, whether the option is in the argument list or not.
-
-All remaining arguments are collected in a variable
-``<prefix>_UNPARSED_ARGUMENTS`` that will be undefined if all arguments
-were recognized. This can be checked afterwards to see
-whether your macro was called with unrecognized parameters.
-
-``<one_value_keywords>`` and ``<multi_value_keywords>`` that were given no
-values at all are collected in a variable ``<prefix>_KEYWORDS_MISSING_VALUES``
-that will be undefined if all keywords received values. This can be checked
-to see if there were keywords without any values given.
-
-Consider the following example macro, ``my_install()``, which takes similar
-arguments to the real :command:`install` command:
-
-.. code-block:: cmake
-
-   macro(my_install)
-       set(options OPTIONAL FAST)
-       set(oneValueArgs DESTINATION RENAME)
-       set(multiValueArgs TARGETS CONFIGURATIONS)
-       cmake_parse_arguments(MY_INSTALL "${options}" "${oneValueArgs}"
-                             "${multiValueArgs}" ${ARGN} )
-
-       # ...
-
-Assume ``my_install()`` has been called like this:
-
-.. code-block:: cmake
-
-   my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub CONFIGURATIONS)
-
-After the ``cmake_parse_arguments`` call the macro will have set or undefined
-the following variables::
-
-   MY_INSTALL_OPTIONAL = TRUE
-   MY_INSTALL_FAST = FALSE # was not used in call to my_install
-   MY_INSTALL_DESTINATION = "bin"
-   MY_INSTALL_RENAME <UNDEFINED> # was not used
-   MY_INSTALL_TARGETS = "foo;bar"
-   MY_INSTALL_CONFIGURATIONS <UNDEFINED> # was not used
-   MY_INSTALL_UNPARSED_ARGUMENTS = "blub" # nothing expected after "OPTIONAL"
-   MY_INSTALL_KEYWORDS_MISSING_VALUES = "CONFIGURATIONS"
-            # No value for "CONFIGURATIONS" given
-
-You can then continue and process these variables.
-
-Keywords terminate lists of values, e.g. if directly after a
-``one_value_keyword`` another recognized keyword follows, this is
-interpreted as the beginning of the new option.  E.g.
-``my_install(TARGETS foo DESTINATION OPTIONAL)`` would result in
-``MY_INSTALL_DESTINATION`` set to ``"OPTIONAL"``, but as ``OPTIONAL``
-is a keyword itself ``MY_INSTALL_DESTINATION`` will be empty (but added
-to ``MY_INSTALL_KEYWORDS_MISSING_VALUES``) and ``MY_INSTALL_OPTIONAL`` will
-therefore be set to ``TRUE``.
diff --git a/share/cmake-3.18/Help/command/cmake_policy.rst b/share/cmake-3.18/Help/command/cmake_policy.rst
deleted file mode 100644
index 4bc7807..0000000
--- a/share/cmake-3.18/Help/command/cmake_policy.rst
+++ /dev/null
@@ -1,108 +0,0 @@
-cmake_policy
-------------
-
-Manage CMake Policy settings.  See the :manual:`cmake-policies(7)`
-manual for defined policies.
-
-As CMake evolves it is sometimes necessary to change existing behavior
-in order to fix bugs or improve implementations of existing features.
-The CMake Policy mechanism is designed to help keep existing projects
-building as new versions of CMake introduce changes in behavior.  Each
-new policy (behavioral change) is given an identifier of the form
-``CMP<NNNN>`` where ``<NNNN>`` is an integer index.  Documentation
-associated with each policy describes the ``OLD`` and ``NEW`` behavior
-and the reason the policy was introduced.  Projects may set each policy
-to select the desired behavior.  When CMake needs to know which behavior
-to use it checks for a setting specified by the project.  If no
-setting is available the ``OLD`` behavior is assumed and a warning is
-produced requesting that the policy be set.
-
-Setting Policies by CMake Version
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The ``cmake_policy`` command is used to set policies to ``OLD`` or ``NEW``
-behavior.  While setting policies individually is supported, we
-encourage projects to set policies based on CMake versions:
-
-.. code-block:: cmake
-
-  cmake_policy(VERSION <min>[...<max>])
-
-``<min>`` and the optional ``<max>`` are each CMake versions of the form
-``major.minor[.patch[.tweak]]``, and the ``...`` is literal.  The ``<min>``
-version must be at least ``2.4`` and at most the running version of CMake.
-The ``<max>`` version, if specified, must be at least the ``<min>`` version
-but may exceed the running version of CMake.  If the running version of
-CMake is older than 3.12, the extra ``...`` dots will be seen as version
-component separators, resulting in the ``...<max>`` part being ignored and
-preserving the pre-3.12 behavior of basing policies on ``<min>``.
-
-This specifies that the current CMake code is written for the given
-range of CMake versions.  All policies known to the running version of CMake
-and introduced in the ``<min>`` (or ``<max>``, if specified) version
-or earlier will be set to use ``NEW`` behavior.  All policies
-introduced in later versions will be unset (unless the
-:variable:`CMAKE_POLICY_DEFAULT_CMP<NNNN>` variable sets a default).
-This effectively requests behavior preferred as of a given CMake
-version and tells newer CMake versions to warn about their new policies.
-
-Note that the :command:`cmake_minimum_required(VERSION)`
-command implicitly calls ``cmake_policy(VERSION)`` too.
-
-Setting Policies Explicitly
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  cmake_policy(SET CMP<NNNN> NEW)
-  cmake_policy(SET CMP<NNNN> OLD)
-
-Tell CMake to use the ``OLD`` or ``NEW`` behavior for a given policy.
-Projects depending on the old behavior of a given policy may silence a
-policy warning by setting the policy state to ``OLD``.  Alternatively
-one may fix the project to work with the new behavior and set the
-policy state to ``NEW``.
-
-.. include:: ../policy/DEPRECATED.txt
-
-Checking Policy Settings
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  cmake_policy(GET CMP<NNNN> <variable>)
-
-Check whether a given policy is set to ``OLD`` or ``NEW`` behavior.
-The output ``<variable>`` value will be ``OLD`` or ``NEW`` if the
-policy is set, and empty otherwise.
-
-CMake Policy Stack
-^^^^^^^^^^^^^^^^^^
-
-CMake keeps policy settings on a stack, so changes made by the
-``cmake_policy`` command affect only the top of the stack.  A new entry on
-the policy stack is managed automatically for each subdirectory to
-protect its parents and siblings.  CMake also manages a new entry for
-scripts loaded by :command:`include` and :command:`find_package` commands
-except when invoked with the ``NO_POLICY_SCOPE`` option
-(see also policy :policy:`CMP0011`).
-The ``cmake_policy`` command provides an interface to manage custom
-entries on the policy stack:
-
-.. code-block:: cmake
-
-  cmake_policy(PUSH)
-  cmake_policy(POP)
-
-Each ``PUSH`` must have a matching ``POP`` to erase any changes.
-This is useful to make temporary changes to policy settings.
-Calls to the :command:`cmake_minimum_required(VERSION)`,
-``cmake_policy(VERSION)``, or ``cmake_policy(SET)`` commands
-influence only the current top of the policy stack.
-
-Commands created by the :command:`function` and :command:`macro`
-commands record policy settings when they are created and
-use the pre-record policies when they are invoked.  If the function or
-macro implementation sets policies, the changes automatically
-propagate up through callers until they reach the closest nested
-policy stack entry.
diff --git a/share/cmake-3.18/Help/command/configure_file.rst b/share/cmake-3.18/Help/command/configure_file.rst
deleted file mode 100644
index 29e85bd..0000000
--- a/share/cmake-3.18/Help/command/configure_file.rst
+++ /dev/null
@@ -1,135 +0,0 @@
-configure_file
---------------
-
-Copy a file to another location and modify its contents.
-
-.. code-block:: cmake
-
-  configure_file(<input> <output>
-                 [COPYONLY] [ESCAPE_QUOTES] [@ONLY]
-                 [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])
-
-Copies an ``<input>`` file to an ``<output>`` file and substitutes
-variable values referenced as ``@VAR@`` or ``${VAR}`` in the input
-file content.  Each variable reference will be replaced with the
-current value of the variable, or the empty string if the variable
-is not defined.  Furthermore, input lines of the form
-
-.. code-block:: c
-
-  #cmakedefine VAR ...
-
-will be replaced with either
-
-.. code-block:: c
-
-  #define VAR ...
-
-or
-
-.. code-block:: c
-
-  /* #undef VAR */
-
-depending on whether ``VAR`` is set in CMake to any value not considered
-a false constant by the :command:`if` command.  The "..." content on the
-line after the variable name, if any, is processed as above.
-Input file lines of the form ``#cmakedefine01 VAR`` will be replaced with
-either ``#define VAR 1`` or ``#define VAR 0`` similarly.
-The result lines (with the exception of the ``#undef`` comments) can be
-indented using spaces and/or tabs between the ``#`` character
-and the ``cmakedefine`` or ``cmakedefine01`` words. This whitespace
-indentation will be preserved in the output lines:
-
-.. code-block:: c
-
-  #  cmakedefine VAR
-  #  cmakedefine01 VAR
-
-will be replaced, if ``VAR`` is defined, with
-
-.. code-block:: c
-
-  #  define VAR
-  #  define VAR 1
-
-If the input file is modified the build system will re-run CMake to
-re-configure the file and generate the build system again.
-The generated file is modified and its timestamp updated on subsequent
-cmake runs only if its content is changed.
-
-The arguments are:
-
-``<input>``
-  Path to the input file.  A relative path is treated with respect to
-  the value of :variable:`CMAKE_CURRENT_SOURCE_DIR`.  The input path
-  must be a file, not a directory.
-
-``<output>``
-  Path to the output file or directory.  A relative path is treated
-  with respect to the value of :variable:`CMAKE_CURRENT_BINARY_DIR`.
-  If the path names an existing directory the output file is placed
-  in that directory with the same file name as the input file.
-
-``COPYONLY``
-  Copy the file without replacing any variable references or other
-  content.  This option may not be used with ``NEWLINE_STYLE``.
-
-``ESCAPE_QUOTES``
-  Escape any substituted quotes with backslashes (C-style).
-
-``@ONLY``
-  Restrict variable replacement to references of the form ``@VAR@``.
-  This is useful for configuring scripts that use ``${VAR}`` syntax.
-
-``NEWLINE_STYLE <style>``
-  Specify the newline style for the output file.  Specify
-  ``UNIX`` or ``LF`` for ``\n`` newlines, or specify
-  ``DOS``, ``WIN32``, or ``CRLF`` for ``\r\n`` newlines.
-  This option may not be used with ``COPYONLY``.
-
-Example
-^^^^^^^
-
-Consider a source tree containing a ``foo.h.in`` file:
-
-.. code-block:: c
-
-  #cmakedefine FOO_ENABLE
-  #cmakedefine FOO_STRING "@FOO_STRING@"
-
-An adjacent ``CMakeLists.txt`` may use ``configure_file`` to
-configure the header:
-
-.. code-block:: cmake
-
-  option(FOO_ENABLE "Enable Foo" ON)
-  if(FOO_ENABLE)
-    set(FOO_STRING "foo")
-  endif()
-  configure_file(foo.h.in foo.h @ONLY)
-
-This creates a ``foo.h`` in the build directory corresponding to
-this source directory.  If the ``FOO_ENABLE`` option is on, the
-configured file will contain:
-
-.. code-block:: c
-
-  #define FOO_ENABLE
-  #define FOO_STRING "foo"
-
-Otherwise it will contain:
-
-.. code-block:: c
-
-  /* #undef FOO_ENABLE */
-  /* #undef FOO_STRING */
-
-One may then use the :command:`include_directories` command to
-specify the output directory as an include directory:
-
-.. code-block:: cmake
-
-  include_directories(${CMAKE_CURRENT_BINARY_DIR})
-
-so that sources may include the header as ``#include <foo.h>``.
diff --git a/share/cmake-3.18/Help/command/continue.rst b/share/cmake-3.18/Help/command/continue.rst
deleted file mode 100644
index 31c7089..0000000
--- a/share/cmake-3.18/Help/command/continue.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-continue
---------
-
-Continue to the top of enclosing foreach or while loop.
-
-.. code-block:: cmake
-
-  continue()
-
-The ``continue`` command allows a cmake script to abort the rest of a block
-in a :command:`foreach` or :command:`while` loop, and start at the top of
-the next iteration.
-
-See also the :command:`break` command.
diff --git a/share/cmake-3.18/Help/command/ctest_build.rst b/share/cmake-3.18/Help/command/ctest_build.rst
deleted file mode 100644
index 66e1844..0000000
--- a/share/cmake-3.18/Help/command/ctest_build.rst
+++ /dev/null
@@ -1,78 +0,0 @@
-ctest_build
------------
-
-Perform the :ref:`CTest Build Step` as a :ref:`Dashboard Client`.
-
-::
-
-  ctest_build([BUILD <build-dir>] [APPEND]
-              [CONFIGURATION <config>]
-              [FLAGS <flags>]
-              [PROJECT_NAME <project-name>]
-              [TARGET <target-name>]
-              [NUMBER_ERRORS <num-err-var>]
-              [NUMBER_WARNINGS <num-warn-var>]
-              [RETURN_VALUE <result-var>]
-              [CAPTURE_CMAKE_ERROR <result-var>]
-              )
-
-Build the project and store results in ``Build.xml``
-for submission with the :command:`ctest_submit` command.
-
-The :variable:`CTEST_BUILD_COMMAND` variable may be set to explicitly
-specify the build command line.  Otherwise the build command line is
-computed automatically based on the options given.
-
-The options are:
-
-``BUILD <build-dir>``
-  Specify the top-level build directory.  If not given, the
-  :variable:`CTEST_BINARY_DIRECTORY` variable is used.
-
-``APPEND``
-  Mark ``Build.xml`` for append to results previously submitted to a
-  dashboard server since the last :command:`ctest_start` call.
-  Append semantics are defined by the dashboard server in use.
-  This does *not* cause results to be appended to a ``.xml`` file
-  produced by a previous call to this command.
-
-``CONFIGURATION <config>``
-  Specify the build configuration (e.g. ``Debug``).  If not
-  specified the ``CTEST_BUILD_CONFIGURATION`` variable will be checked.
-  Otherwise the ``-C <cfg>`` option given to the :manual:`ctest(1)`
-  command will be used, if any.
-
-``FLAGS <flags>``
-  Pass additional arguments to the underlying build command.
-  If not specified the ``CTEST_BUILD_FLAGS`` variable will be checked.
-  This can, e.g., be used to trigger a parallel build using the
-  ``-j`` option of make. See the :module:`ProcessorCount` module
-  for an example.
-
-``PROJECT_NAME <project-name>``
-  Ignored.  This was once used but is no longer needed.
-
-``TARGET <target-name>``
-  Specify the name of a target to build.  If not specified the
-  ``CTEST_BUILD_TARGET`` variable will be checked.  Otherwise the
-  default target will be built.  This is the "all" target
-  (called ``ALL_BUILD`` in :ref:`Visual Studio Generators`).
-
-``NUMBER_ERRORS <num-err-var>``
-  Store the number of build errors detected in the given variable.
-
-``NUMBER_WARNINGS <num-warn-var>``
-  Store the number of build warnings detected in the given variable.
-
-``RETURN_VALUE <result-var>``
-  Store the return value of the native build tool in the given variable.
-
-``CAPTURE_CMAKE_ERROR <result-var>``
-  Store in the ``<result-var>`` variable -1 if there are any errors running
-  the command and prevent ctest from returning non-zero if an error occurs.
-
-``QUIET``
-  Suppress any CTest-specific non-error output that would have been
-  printed to the console otherwise.  The summary of warnings / errors,
-  as well as the output from the native build tool is unaffected by
-  this option.
diff --git a/share/cmake-3.18/Help/command/ctest_configure.rst b/share/cmake-3.18/Help/command/ctest_configure.rst
deleted file mode 100644
index 2dea07b..0000000
--- a/share/cmake-3.18/Help/command/ctest_configure.rst
+++ /dev/null
@@ -1,46 +0,0 @@
-ctest_configure
----------------
-
-Perform the :ref:`CTest Configure Step` as a :ref:`Dashboard Client`.
-
-::
-
-  ctest_configure([BUILD <build-dir>] [SOURCE <source-dir>] [APPEND]
-                  [OPTIONS <options>] [RETURN_VALUE <result-var>] [QUIET]
-                  [CAPTURE_CMAKE_ERROR <result-var>])
-
-Configure the project build tree and record results in ``Configure.xml``
-for submission with the :command:`ctest_submit` command.
-
-The options are:
-
-``BUILD <build-dir>``
-  Specify the top-level build directory.  If not given, the
-  :variable:`CTEST_BINARY_DIRECTORY` variable is used.
-
-``SOURCE <source-dir>``
-  Specify the source directory.  If not given, the
-  :variable:`CTEST_SOURCE_DIRECTORY` variable is used.
-
-``APPEND``
-  Mark ``Configure.xml`` for append to results previously submitted to a
-  dashboard server since the last :command:`ctest_start` call.
-  Append semantics are defined by the dashboard server in use.
-  This does *not* cause results to be appended to a ``.xml`` file
-  produced by a previous call to this command.
-
-``OPTIONS <options>``
-  Specify command-line arguments to pass to the configuration tool.
-
-``RETURN_VALUE <result-var>``
-  Store in the ``<result-var>`` variable the return value of the native
-  configuration tool.
-
-``CAPTURE_CMAKE_ERROR <result-var>``
-  Store in the ``<result-var>`` variable -1 if there are any errors running
-  the command and prevent ctest from returning non-zero if an error occurs.
-
-``QUIET``
-  Suppress any CTest-specific non-error messages that would have
-  otherwise been printed to the console.  Output from the underlying
-  configure command is not affected.
diff --git a/share/cmake-3.18/Help/command/ctest_coverage.rst b/share/cmake-3.18/Help/command/ctest_coverage.rst
deleted file mode 100644
index d50f634..0000000
--- a/share/cmake-3.18/Help/command/ctest_coverage.rst
+++ /dev/null
@@ -1,46 +0,0 @@
-ctest_coverage
---------------
-
-Perform the :ref:`CTest Coverage Step` as a :ref:`Dashboard Client`.
-
-::
-
-  ctest_coverage([BUILD <build-dir>] [APPEND]
-                 [LABELS <label>...]
-                 [RETURN_VALUE <result-var>]
-                 [CAPTURE_CMAKE_ERROR <result-var>]
-                 [QUIET]
-                 )
-
-Collect coverage tool results and stores them in ``Coverage.xml``
-for submission with the :command:`ctest_submit` command.
-
-The options are:
-
-``BUILD <build-dir>``
-  Specify the top-level build directory.  If not given, the
-  :variable:`CTEST_BINARY_DIRECTORY` variable is used.
-
-``APPEND``
-  Mark ``Coverage.xml`` for append to results previously submitted to a
-  dashboard server since the last :command:`ctest_start` call.
-  Append semantics are defined by the dashboard server in use.
-  This does *not* cause results to be appended to a ``.xml`` file
-  produced by a previous call to this command.
-
-``LABELS``
-  Filter the coverage report to include only source files labeled
-  with at least one of the labels specified.
-
-``RETURN_VALUE <result-var>``
-  Store in the ``<result-var>`` variable ``0`` if coverage tools
-  ran without error and non-zero otherwise.
-
-``CAPTURE_CMAKE_ERROR <result-var>``
-  Store in the ``<result-var>`` variable -1 if there are any errors running
-  the command and prevent ctest from returning non-zero if an error occurs.
-
-``QUIET``
-  Suppress any CTest-specific non-error output that would have been
-  printed to the console otherwise.  The summary indicating how many
-  lines of code were covered is unaffected by this option.
diff --git a/share/cmake-3.18/Help/command/ctest_memcheck.rst b/share/cmake-3.18/Help/command/ctest_memcheck.rst
deleted file mode 100644
index 288b65a..0000000
--- a/share/cmake-3.18/Help/command/ctest_memcheck.rst
+++ /dev/null
@@ -1,38 +0,0 @@
-ctest_memcheck
---------------
-
-Perform the :ref:`CTest MemCheck Step` as a :ref:`Dashboard Client`.
-
-::
-
-  ctest_memcheck([BUILD <build-dir>] [APPEND]
-                 [START <start-number>]
-                 [END <end-number>]
-                 [STRIDE <stride-number>]
-                 [EXCLUDE <exclude-regex>]
-                 [INCLUDE <include-regex>]
-                 [EXCLUDE_LABEL <label-exclude-regex>]
-                 [INCLUDE_LABEL <label-include-regex>]
-                 [EXCLUDE_FIXTURE <regex>]
-                 [EXCLUDE_FIXTURE_SETUP <regex>]
-                 [EXCLUDE_FIXTURE_CLEANUP <regex>]
-                 [PARALLEL_LEVEL <level>]
-                 [TEST_LOAD <threshold>]
-                 [SCHEDULE_RANDOM <ON|OFF>]
-                 [STOP_TIME <time-of-day>]
-                 [RETURN_VALUE <result-var>]
-                 [DEFECT_COUNT <defect-count-var>]
-                 [QUIET]
-                 )
-
-
-Run tests with a dynamic analysis tool and store results in
-``MemCheck.xml`` for submission with the :command:`ctest_submit`
-command.
-
-Most options are the same as those for the :command:`ctest_test` command.
-
-The options unique to this command are:
-
-``DEFECT_COUNT <defect-count-var>``
-  Store in the ``<defect-count-var>`` the number of defects found.
diff --git a/share/cmake-3.18/Help/command/ctest_start.rst b/share/cmake-3.18/Help/command/ctest_start.rst
deleted file mode 100644
index f0704ac..0000000
--- a/share/cmake-3.18/Help/command/ctest_start.rst
+++ /dev/null
@@ -1,83 +0,0 @@
-ctest_start
------------
-
-Starts the testing for a given model
-
-::
-
-  ctest_start(<model> [<source> [<binary>]] [GROUP <group>] [QUIET])
-
-  ctest_start([<model> [<source> [<binary>]]] [GROUP <group>] APPEND [QUIET])
-
-Starts the testing for a given model.  The command should be called
-after the binary directory is initialized.
-
-The parameters are as follows:
-
-``<model>``
-  Set the dashboard model. Must be one of ``Experimental``, ``Continuous``, or
-  ``Nightly``. This parameter is required unless ``APPEND`` is specified.
-
-``<source>``
-  Set the source directory. If not specified, the value of
-  :variable:`CTEST_SOURCE_DIRECTORY` is used instead.
-
-``<binary>``
-  Set the binary directory. If not specified, the value of
-  :variable:`CTEST_BINARY_DIRECTORY` is used instead.
-
-``GROUP <group>``
-  If ``GROUP`` is used, the submissions will go to the specified group on the
-  CDash server. If no ``GROUP`` is specified, the name of the model is used by
-  default. This replaces the deprecated option ``TRACK``. Despite the name
-  change its behavior is unchanged.
-
-``APPEND``
-  If ``APPEND`` is used, the existing ``TAG`` is used rather than creating a new
-  one based on the current time stamp. If you use ``APPEND``, you can omit the
-  ``<model>`` and ``GROUP <group>`` parameters, because they will be read from
-  the generated ``TAG`` file. For example:
-
-  .. code-block:: cmake
-
-    ctest_start(Experimental GROUP GroupExperimental)
-
-  Later, in another ``ctest -S`` script:
-
-  .. code-block:: cmake
-
-    ctest_start(APPEND)
-
-  When the second script runs ``ctest_start(APPEND)``, it will read the
-  ``Experimental`` model and ``GroupExperimental`` group from the ``TAG`` file
-  generated by the first ``ctest_start()`` command. Please note that if you
-  call ``ctest_start(APPEND)`` and specify a different model or group than
-  in the first ``ctest_start()`` command, a warning will be issued, and the
-  new model and group will be used.
-
-``QUIET``
-  If ``QUIET`` is used, CTest will suppress any non-error messages that it
-  otherwise would have printed to the console.
-
-The parameters for ``ctest_start()`` can be issued in any order, with the
-exception that ``<model>``, ``<source>``, and ``<binary>`` have to appear
-in that order with respect to each other. The following are all valid and
-equivalent:
-
-.. code-block:: cmake
-
-  ctest_start(Experimental path/to/source path/to/binary GROUP SomeGroup QUIET APPEND)
-
-  ctest_start(GROUP SomeGroup Experimental QUIET path/to/source APPEND path/to/binary)
-
-  ctest_start(APPEND QUIET Experimental path/to/source GROUP SomeGroup path/to/binary)
-
-However, for the sake of readability, it is recommended that you order your
-parameters in the order listed at the top of this page.
-
-If the :variable:`CTEST_CHECKOUT_COMMAND` variable (or the
-:variable:`CTEST_CVS_CHECKOUT` variable) is set, its content is treated as
-command-line.  The command is invoked with the current working directory set
-to the parent of the source directory, even if the source directory already
-exists.  This can be used to create the source tree from a version control
-repository.
diff --git a/share/cmake-3.18/Help/command/ctest_submit.rst b/share/cmake-3.18/Help/command/ctest_submit.rst
deleted file mode 100644
index 983fc20..0000000
--- a/share/cmake-3.18/Help/command/ctest_submit.rst
+++ /dev/null
@@ -1,104 +0,0 @@
-ctest_submit
-------------
-
-Perform the :ref:`CTest Submit Step` as a :ref:`Dashboard Client`.
-
-::
-
-  ctest_submit([PARTS <part>...] [FILES <file>...]
-               [SUBMIT_URL <url>]
-               [BUILD_ID <result-var>]
-               [HTTPHEADER <header>]
-               [RETRY_COUNT <count>]
-               [RETRY_DELAY <delay>]
-               [RETURN_VALUE <result-var>]
-               [CAPTURE_CMAKE_ERROR <result-var>]
-               [QUIET]
-               )
-
-Submit results to a dashboard server.
-By default all available parts are submitted.
-
-The options are:
-
-``PARTS <part>...``
-  Specify a subset of parts to submit.  Valid part names are::
-
-    Start      = nothing
-    Update     = ctest_update results, in Update.xml
-    Configure  = ctest_configure results, in Configure.xml
-    Build      = ctest_build results, in Build.xml
-    Test       = ctest_test results, in Test.xml
-    Coverage   = ctest_coverage results, in Coverage.xml
-    MemCheck   = ctest_memcheck results, in DynamicAnalysis.xml
-    Notes      = Files listed by CTEST_NOTES_FILES, in Notes.xml
-    ExtraFiles = Files listed by CTEST_EXTRA_SUBMIT_FILES
-    Upload     = Files prepared for upload by ctest_upload(), in Upload.xml
-    Submit     = nothing
-    Done       = Build is complete, in Done.xml
-
-``FILES <file>...``
-  Specify an explicit list of specific files to be submitted.
-  Each individual file must exist at the time of the call.
-
-``SUBMIT_URL <url>``
-  The ``http`` or ``https`` URL of the dashboard server to send the submission
-  to.  If not given, the :variable:`CTEST_SUBMIT_URL` variable is used.
-
-``BUILD_ID <result-var>``
-  Store in the ``<result-var>`` variable the ID assigned to this build by
-  CDash.
-
-``HTTPHEADER <HTTP-header>``
-  Specify HTTP header to be included in the request to CDash during submission.
-  For example, CDash can be configured to only accept submissions from
-  authenticated clients. In this case, you should provide a bearer token in your
-  header:
-
-  .. code-block:: cmake
-
-    ctest_submit(HTTPHEADER "Authorization: Bearer <auth-token>")
-
-  This suboption can be repeated several times for multiple headers.
-
-``RETRY_COUNT <count>``
-  Specify how many times to retry a timed-out submission.
-
-``RETRY_DELAY <delay>``
-  Specify how long (in seconds) to wait after a timed-out submission
-  before attempting to re-submit.
-
-``RETURN_VALUE <result-var>``
-  Store in the ``<result-var>`` variable ``0`` for success and
-  non-zero on failure.
-
-``CAPTURE_CMAKE_ERROR <result-var>``
-  Store in the ``<result-var>`` variable -1 if there are any errors running
-  the command and prevent ctest from returning non-zero if an error occurs.
-
-``QUIET``
-  Suppress all non-error messages that would have otherwise been
-  printed to the console.
-
-Submit to CDash Upload API
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-::
-
-  ctest_submit(CDASH_UPLOAD <file> [CDASH_UPLOAD_TYPE <type>]
-               [SUBMIT_URL <url>]
-               [HTTPHEADER <header>]
-               [RETRY_COUNT <count>]
-               [RETRY_DELAY <delay>]
-               [RETURN_VALUE <result-var>]
-               [QUIET])
-
-This second signature is used to upload files to CDash via the CDash
-file upload API. The API first sends a request to upload to CDash along
-with a content hash of the file. If CDash does not already have the file,
-then it is uploaded. Along with the file, a CDash type string is specified
-to tell CDash which handler to use to process the data.
-
-This signature accepts the ``SUBMIT_URL``, ``BUILD_ID``, ``HTTPHEADER``,
-``RETRY_COUNT``, ``RETRY_DELAY``, ``RETURN_VALUE`` and ``QUIET`` options
-as described above.
diff --git a/share/cmake-3.18/Help/command/ctest_test.rst b/share/cmake-3.18/Help/command/ctest_test.rst
deleted file mode 100644
index 3589296..0000000
--- a/share/cmake-3.18/Help/command/ctest_test.rst
+++ /dev/null
@@ -1,144 +0,0 @@
-ctest_test
-----------
-
-Perform the :ref:`CTest Test Step` as a :ref:`Dashboard Client`.
-
-::
-
-  ctest_test([BUILD <build-dir>] [APPEND]
-             [START <start-number>]
-             [END <end-number>]
-             [STRIDE <stride-number>]
-             [EXCLUDE <exclude-regex>]
-             [INCLUDE <include-regex>]
-             [EXCLUDE_LABEL <label-exclude-regex>]
-             [INCLUDE_LABEL <label-include-regex>]
-             [EXCLUDE_FIXTURE <regex>]
-             [EXCLUDE_FIXTURE_SETUP <regex>]
-             [EXCLUDE_FIXTURE_CLEANUP <regex>]
-             [PARALLEL_LEVEL <level>]
-             [RESOURCE_SPEC_FILE <file>]
-             [TEST_LOAD <threshold>]
-             [SCHEDULE_RANDOM <ON|OFF>]
-             [STOP_ON_FAILURE]
-             [STOP_TIME <time-of-day>]
-             [RETURN_VALUE <result-var>]
-             [CAPTURE_CMAKE_ERROR <result-var>]
-             [REPEAT <mode>:<n>]
-             [QUIET]
-             )
-
-Run tests in the project build tree and store results in
-``Test.xml`` for submission with the :command:`ctest_submit` command.
-
-The options are:
-
-``BUILD <build-dir>``
-  Specify the top-level build directory.  If not given, the
-  :variable:`CTEST_BINARY_DIRECTORY` variable is used.
-
-``APPEND``
-  Mark ``Test.xml`` for append to results previously submitted to a
-  dashboard server since the last :command:`ctest_start` call.
-  Append semantics are defined by the dashboard server in use.
-  This does *not* cause results to be appended to a ``.xml`` file
-  produced by a previous call to this command.
-
-``START <start-number>``
-  Specify the beginning of a range of test numbers.
-
-``END <end-number>``
-  Specify the end of a range of test numbers.
-
-``STRIDE <stride-number>``
-  Specify the stride by which to step across a range of test numbers.
-
-``EXCLUDE <exclude-regex>``
-  Specify a regular expression matching test names to exclude.
-
-``INCLUDE <include-regex>``
-  Specify a regular expression matching test names to include.
-  Tests not matching this expression are excluded.
-
-``EXCLUDE_LABEL <label-exclude-regex>``
-  Specify a regular expression matching test labels to exclude.
-
-``INCLUDE_LABEL <label-include-regex>``
-  Specify a regular expression matching test labels to include.
-  Tests not matching this expression are excluded.
-
-``EXCLUDE_FIXTURE <regex>``
-  If a test in the set of tests to be executed requires a particular fixture,
-  that fixture's setup and cleanup tests would normally be added to the test
-  set automatically. This option prevents adding setup or cleanup tests for
-  fixtures matching the ``<regex>``. Note that all other fixture behavior is
-  retained, including test dependencies and skipping tests that have fixture
-  setup tests that fail.
-
-``EXCLUDE_FIXTURE_SETUP <regex>``
-  Same as ``EXCLUDE_FIXTURE`` except only matching setup tests are excluded.
-
-``EXCLUDE_FIXTURE_CLEANUP <regex>``
-  Same as ``EXCLUDE_FIXTURE`` except only matching cleanup tests are excluded.
-
-``PARALLEL_LEVEL <level>``
-  Specify a positive number representing the number of tests to
-  be run in parallel.
-
-``RESOURCE_SPEC_FILE <file>``
-  Specify a
-  :ref:`resource specification file <ctest-resource-specification-file>`. See
-  :ref:`ctest-resource-allocation` for more information.
-
-``TEST_LOAD <threshold>``
-  While running tests in parallel, try not to start tests when they
-  may cause the CPU load to pass above a given threshold.  If not
-  specified the :variable:`CTEST_TEST_LOAD` variable will be checked,
-  and then the ``--test-load`` command-line argument to :manual:`ctest(1)`.
-  See also the ``TestLoad`` setting in the :ref:`CTest Test Step`.
-
-``REPEAT <mode>:<n>``
-  Run tests repeatedly based on the given ``<mode>`` up to ``<n>`` times.
-  The modes are:
-
-  ``UNTIL_FAIL``
-    Require each test to run ``<n>`` times without failing in order to pass.
-    This is useful in finding sporadic failures in test cases.
-
-  ``UNTIL_PASS``
-    Allow each test to run up to ``<n>`` times in order to pass.
-    Repeats tests if they fail for any reason.
-    This is useful in tolerating sporadic failures in test cases.
-
-  ``AFTER_TIMEOUT``
-    Allow each test to run up to ``<n>`` times in order to pass.
-    Repeats tests only if they timeout.
-    This is useful in tolerating sporadic timeouts in test cases
-    on busy machines.
-
-``SCHEDULE_RANDOM <ON|OFF>``
-  Launch tests in a random order.  This may be useful for detecting
-  implicit test dependencies.
-
-``STOP_ON_FAILURE``
-  Stop the execution of the tests once one has failed.
-
-``STOP_TIME <time-of-day>``
-  Specify a time of day at which the tests should all stop running.
-
-``RETURN_VALUE <result-var>``
-  Store in the ``<result-var>`` variable ``0`` if all tests passed.
-  Store non-zero if anything went wrong.
-
-``CAPTURE_CMAKE_ERROR <result-var>``
-  Store in the ``<result-var>`` variable -1 if there are any errors running
-  the command and prevent ctest from returning non-zero if an error occurs.
-
-``QUIET``
-  Suppress any CTest-specific non-error messages that would have otherwise
-  been printed to the console.  Output from the underlying test command is not
-  affected.  Summary info detailing the percentage of passing tests is also
-  unaffected by the ``QUIET`` option.
-
-See also the :variable:`CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE`
-and :variable:`CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE` variables.
diff --git a/share/cmake-3.18/Help/command/ctest_update.rst b/share/cmake-3.18/Help/command/ctest_update.rst
deleted file mode 100644
index 96a11c9..0000000
--- a/share/cmake-3.18/Help/command/ctest_update.rst
+++ /dev/null
@@ -1,39 +0,0 @@
-ctest_update
-------------
-
-Perform the :ref:`CTest Update Step` as a :ref:`Dashboard Client`.
-
-::
-
-  ctest_update([SOURCE <source-dir>]
-               [RETURN_VALUE <result-var>]
-               [CAPTURE_CMAKE_ERROR <result-var>]
-               [QUIET])
-
-Update the source tree from version control and record results in
-``Update.xml`` for submission with the :command:`ctest_submit` command.
-
-The options are:
-
-``SOURCE <source-dir>``
-  Specify the source directory.  If not given, the
-  :variable:`CTEST_SOURCE_DIRECTORY` variable is used.
-
-``RETURN_VALUE <result-var>``
-  Store in the ``<result-var>`` variable the number of files
-  updated or ``-1`` on error.
-
-``CAPTURE_CMAKE_ERROR <result-var>``
-  Store in the ``<result-var>`` variable -1 if there are any errors running
-  the command and prevent ctest from returning non-zero if an error occurs.
-
-``QUIET``
-  Tell CTest to suppress most non-error messages that it would
-  have otherwise printed to the console.  CTest will still report
-  the new revision of the repository and any conflicting files
-  that were found.
-
-The update always follows the version control branch currently checked
-out in the source directory.  See the :ref:`CTest Update Step`
-documentation for information about variables that change the behavior
-of ``ctest_update()``.
diff --git a/share/cmake-3.18/Help/command/ctest_upload.rst b/share/cmake-3.18/Help/command/ctest_upload.rst
deleted file mode 100644
index 39d9de1..0000000
--- a/share/cmake-3.18/Help/command/ctest_upload.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-ctest_upload
-------------
-
-Upload files to a dashboard server as a :ref:`Dashboard Client`.
-
-::
-
-  ctest_upload(FILES <file>... [QUIET] [CAPTURE_CMAKE_ERROR <result-var>])
-
-The options are:
-
-``FILES <file>...``
-  Specify a list of files to be sent along with the build results to the
-  dashboard server.
-
-``QUIET``
-  Suppress any CTest-specific non-error output that would have been
-  printed to the console otherwise.
-
-``CAPTURE_CMAKE_ERROR <result-var>``
-  Store in the ``<result-var>`` variable -1 if there are any errors running
-  the command and prevent ctest from returning non-zero if an error occurs.
diff --git a/share/cmake-3.18/Help/command/enable_language.rst b/share/cmake-3.18/Help/command/enable_language.rst
deleted file mode 100644
index fdc44f2..0000000
--- a/share/cmake-3.18/Help/command/enable_language.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-enable_language
----------------
-Enable a language (CXX/C/OBJC/OBJCXX/Fortran/etc)
-
-.. code-block:: cmake
-
-  enable_language(<lang> [OPTIONAL] )
-
-Enables support for the named language in CMake.  This is
-the same as the :command:`project` command but does not create any of the extra
-variables that are created by the project command.  Example languages
-are ``CXX``, ``C``, ``CUDA``, ``OBJC``, ``OBJCXX``, ``Fortran``, and ``ASM``.
-
-If enabling ``ASM``, enable it last so that CMake can check whether
-compilers for other languages like ``C`` work for assembly too.
-
-This command must be called in file scope, not in a function call.
-Furthermore, it must be called in the highest directory common to all
-targets using the named language directly for compiling sources or
-indirectly through link dependencies.  It is simplest to enable all
-needed languages in the top-level directory of a project.
-
-The ``OPTIONAL`` keyword is a placeholder for future implementation and
-does not currently work. Instead you can use the :module:`CheckLanguage`
-module to verify support before enabling.
diff --git a/share/cmake-3.18/Help/command/execute_process.rst b/share/cmake-3.18/Help/command/execute_process.rst
deleted file mode 100644
index b32025f..0000000
--- a/share/cmake-3.18/Help/command/execute_process.rst
+++ /dev/null
@@ -1,129 +0,0 @@
-execute_process
----------------
-
-Execute one or more child processes.
-
-.. code-block:: cmake
-
-  execute_process(COMMAND <cmd1> [<arguments>]
-                  [COMMAND <cmd2> [<arguments>]]...
-                  [WORKING_DIRECTORY <directory>]
-                  [TIMEOUT <seconds>]
-                  [RESULT_VARIABLE <variable>]
-                  [RESULTS_VARIABLE <variable>]
-                  [OUTPUT_VARIABLE <variable>]
-                  [ERROR_VARIABLE <variable>]
-                  [INPUT_FILE <file>]
-                  [OUTPUT_FILE <file>]
-                  [ERROR_FILE <file>]
-                  [OUTPUT_QUIET]
-                  [ERROR_QUIET]
-                  [COMMAND_ECHO <where>]
-                  [OUTPUT_STRIP_TRAILING_WHITESPACE]
-                  [ERROR_STRIP_TRAILING_WHITESPACE]
-                  [ENCODING <name>]
-                  [ECHO_OUTPUT_VARIABLE]
-                  [ECHO_ERROR_VARIABLE])
-
-Runs the given sequence of one or more commands.
-
-Commands are executed concurrently as a pipeline, with the standard
-output of each process piped to the standard input of the next.
-A single standard error pipe is used for all processes.
-
-Options:
-
-``COMMAND``
- A child process command line.
-
- CMake executes the child process using operating system APIs directly.
- All arguments are passed VERBATIM to the child process.
- No intermediate shell is used, so shell operators such as ``>``
- are treated as normal arguments.
- (Use the ``INPUT_*``, ``OUTPUT_*``, and ``ERROR_*`` options to
- redirect stdin, stdout, and stderr.)
-
- If a sequential execution of multiple commands is required, use multiple
- :command:`execute_process` calls with a single ``COMMAND`` argument.
-
-``WORKING_DIRECTORY``
- The named directory will be set as the current working directory of
- the child processes.
-
-``TIMEOUT``
- After the specified number of seconds (fractions allowed), all unfinished
- child processes will be terminated, and the ``RESULT_VARIABLE`` will be
- set to a string mentioning the "timeout".
-
-``RESULT_VARIABLE``
- The variable will be set to contain the result of last child process.
- This will be an integer return code from the last child or a string
- describing an error condition.
-
-``RESULTS_VARIABLE <variable>``
- The variable will be set to contain the result of all processes as a
- :ref:`semicolon-separated list <CMake Language Lists>`, in order of the
- given ``COMMAND`` arguments.  Each entry will be an integer return code
- from the corresponding child or a string describing an error condition.
-
-``OUTPUT_VARIABLE``, ``ERROR_VARIABLE``
- The variable named will be set with the contents of the standard output
- and standard error pipes, respectively.  If the same variable is named
- for both pipes their output will be merged in the order produced.
-
-``INPUT_FILE, OUTPUT_FILE``, ``ERROR_FILE``
- The file named will be attached to the standard input of the first
- process, standard output of the last process, or standard error of
- all processes, respectively.  If the same file is named for both
- output and error then it will be used for both.
-
-``OUTPUT_QUIET``, ``ERROR_QUIET``
- The standard output or standard error results will be quietly ignored.
-
-``COMMAND_ECHO <where>``
- The command being run will be echo'ed to ``<where>`` with ``<where>``
- being set to one of ``STDERR``, ``STDOUT`` or ``NONE``.
- See the :variable:`CMAKE_EXECUTE_PROCESS_COMMAND_ECHO` variable for a way
- to control the default behavior when this option is not present.
-
-``ENCODING <name>``
- On Windows, the encoding that is used to decode output from the process.
- Ignored on other platforms.
- Valid encoding names are:
-
- ``NONE``
-   Perform no decoding.  This assumes that the process output is encoded
-   in the same way as CMake's internal encoding (UTF-8).
-   This is the default.
- ``AUTO``
-   Use the current active console's codepage or if that isn't
-   available then use ANSI.
- ``ANSI``
-   Use the ANSI codepage.
- ``OEM``
-   Use the original equipment manufacturer (OEM) code page.
- ``UTF8`` or ``UTF-8``
-   Use the UTF-8 codepage. Prior to CMake 3.11.0, only ``UTF8`` was accepted
-   for this encoding. In CMake 3.11.0, ``UTF-8`` was added for consistency with
-   the `UTF-8 RFC <https://www.ietf.org/rfc/rfc3629>`_ naming convention.
-
-``ECHO_OUTPUT_VARIABLE``, ``ECHO_ERROR_VARIABLE``
-  The standard output or standard error will not be exclusively redirected to
-  the configured variables.
-
-  The output will be duplicated, it will be sent into the configured variables
-  and also on standard output or standard error.
-
-  This is analogous to the ``tee`` Unix command.
-
-If more than one ``OUTPUT_*`` or ``ERROR_*`` option is given for the
-same pipe the precedence is not specified.
-If no ``OUTPUT_*`` or ``ERROR_*`` options are given the output will
-be shared with the corresponding pipes of the CMake process itself.
-
-The :command:`execute_process` command is a newer more powerful version of
-:command:`exec_program`, but the old command has been kept for compatibility.
-Both commands run while CMake is processing the project prior to build
-system generation.  Use :command:`add_custom_target` and
-:command:`add_custom_command` to create custom commands that run at
-build time.
diff --git a/share/cmake-3.18/Help/command/export.rst b/share/cmake-3.18/Help/command/export.rst
deleted file mode 100644
index 2ca7056..0000000
--- a/share/cmake-3.18/Help/command/export.rst
+++ /dev/null
@@ -1,86 +0,0 @@
-export
-------
-
-Export targets from the build tree for use by outside projects.
-
-.. code-block:: cmake
-
-  export(EXPORT <export-name> [NAMESPACE <namespace>] [FILE <filename>])
-
-Creates a file ``<filename>`` that may be included by outside projects to
-import targets from the current project's build tree.  This is useful
-during cross-compiling to build utility executables that can run on
-the host platform in one project and then import them into another
-project being compiled for the target platform.  If the ``NAMESPACE``
-option is given the ``<namespace>`` string will be prepended to all target
-names written to the file.
-
-Target installations are associated with the export ``<export-name>``
-using the ``EXPORT`` option of the :command:`install(TARGETS)` command.
-
-The file created by this command is specific to the build tree and
-should never be installed.  See the :command:`install(EXPORT)` command to
-export targets from an installation tree.
-
-The properties set on the generated IMPORTED targets will have the
-same values as the final values of the input TARGETS.
-
-.. code-block:: cmake
-
-  export(TARGETS [target1 [target2 [...]]] [NAMESPACE <namespace>]
-         [APPEND] FILE <filename> [EXPORT_LINK_INTERFACE_LIBRARIES])
-
-This signature is similar to the ``EXPORT`` signature, but targets are listed
-explicitly rather than specified as an export-name.  If the APPEND option is
-given the generated code will be appended to the file instead of overwriting it.
-The EXPORT_LINK_INTERFACE_LIBRARIES keyword, if present, causes the
-contents of the properties matching
-``(IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?`` to be exported, when
-policy CMP0022 is NEW.  If a library target is included in the export
-but a target to which it links is not included the behavior is
-unspecified.
-
-.. note::
-
-  :ref:`Object Libraries` under :generator:`Xcode` have special handling if
-  multiple architectures are listed in :variable:`CMAKE_OSX_ARCHITECTURES`.
-  In this case they will be exported as :ref:`Interface Libraries` with
-  no object files available to clients.  This is sufficient to satisfy
-  transitive usage requirements of other targets that link to the
-  object libraries in their implementation.
-
-.. code-block:: cmake
-
-  export(PACKAGE <PackageName>)
-
-Store the current build directory in the CMake user package registry
-for package ``<PackageName>``.  The :command:`find_package` command may consider the
-directory while searching for package ``<PackageName>``.  This helps dependent
-projects find and use a package from the current project's build tree
-without help from the user.  Note that the entry in the package
-registry that this command creates works only in conjunction with a
-package configuration file (``<PackageName>Config.cmake``) that works with the
-build tree. In some cases, for example for packaging and for system
-wide installations, it is not desirable to write the user package
-registry.
-
-By default the ``export(PACKAGE)`` command does nothing (see policy
-:policy:`CMP0090`) because populating the user package registry has effects
-outside the source and build trees.  Set the
-:variable:`CMAKE_EXPORT_PACKAGE_REGISTRY` variable to add build directories to
-the CMake user package registry.
-
-.. code-block:: cmake
-
-  export(TARGETS [target1 [target2 [...]]]  [ANDROID_MK <filename>])
-
-This signature exports cmake built targets to the android ndk build system
-by creating an Android.mk file that references the prebuilt targets. The
-Android NDK supports the use of prebuilt libraries, both static and shared.
-This allows cmake to build the libraries of a project and make them available
-to an ndk build system complete with transitive dependencies, include flags
-and defines required to use the libraries. The signature takes a list of
-targets and puts them in the Android.mk file specified by the ``<filename>``
-given. This signature can only be used if policy CMP0022 is NEW for all
-targets given. A error will be issued if that policy is set to OLD for one
-of the targets.
diff --git a/share/cmake-3.18/Help/command/file.rst b/share/cmake-3.18/Help/command/file.rst
deleted file mode 100644
index 693c059..0000000
--- a/share/cmake-3.18/Help/command/file.rst
+++ /dev/null
@@ -1,955 +0,0 @@
-file
-----
-
-File manipulation command.
-
-Synopsis
-^^^^^^^^
-
-.. parsed-literal::
-
-  `Reading`_
-    file(`READ`_ <filename> <out-var> [...])
-    file(`STRINGS`_ <filename> <out-var> [...])
-    file(`\<HASH\> <HASH_>`_ <filename> <out-var>)
-    file(`TIMESTAMP`_ <filename> <out-var> [...])
-    file(`GET_RUNTIME_DEPENDENCIES`_ [...])
-
-  `Writing`_
-    file({`WRITE`_ | `APPEND`_} <filename> <content>...)
-    file({`TOUCH`_ | `TOUCH_NOCREATE`_} [<file>...])
-    file(`GENERATE`_ OUTPUT <output-file> [...])
-    file(`CONFIGURE`_ OUTPUT <output-file> CONTENT <content> [...])
-
-  `Filesystem`_
-    file({`GLOB`_ | `GLOB_RECURSE`_} <out-var> [...] [<globbing-expr>...])
-    file(`RENAME`_ <oldname> <newname>)
-    file({`REMOVE`_ | `REMOVE_RECURSE`_ } [<files>...])
-    file(`MAKE_DIRECTORY`_ [<dir>...])
-    file({`COPY`_ | `INSTALL`_} <file>... DESTINATION <dir> [...])
-    file(`SIZE`_ <filename> <out-var>)
-    file(`READ_SYMLINK`_ <linkname> <out-var>)
-    file(`CREATE_LINK`_ <original> <linkname> [...])
-
-  `Path Conversion`_
-    file(`RELATIVE_PATH`_ <out-var> <directory> <file>)
-    file({`TO_CMAKE_PATH`_ | `TO_NATIVE_PATH`_} <path> <out-var>)
-
-  `Transfer`_
-    file(`DOWNLOAD`_ <url> <file> [...])
-    file(`UPLOAD`_ <file> <url> [...])
-
-  `Locking`_
-    file(`LOCK`_ <path> [...])
-
-  `Archiving`_
-    file(`ARCHIVE_CREATE`_ OUTPUT <archive> PATHS <paths>... [...])
-    file(`ARCHIVE_EXTRACT`_ INPUT <archive> [...])
-
-Reading
-^^^^^^^
-
-.. _READ:
-
-.. code-block:: cmake
-
-  file(READ <filename> <variable>
-       [OFFSET <offset>] [LIMIT <max-in>] [HEX])
-
-Read content from a file called ``<filename>`` and store it in a
-``<variable>``.  Optionally start from the given ``<offset>`` and
-read at most ``<max-in>`` bytes.  The ``HEX`` option causes data to
-be converted to a hexadecimal representation (useful for binary data). If the
-``HEX`` option is specified, letters in the output (``a`` through ``f``) are in
-lowercase.
-
-.. _STRINGS:
-
-.. code-block:: cmake
-
-  file(STRINGS <filename> <variable> [<options>...])
-
-Parse a list of ASCII strings from ``<filename>`` and store it in
-``<variable>``.  Binary data in the file are ignored.  Carriage return
-(``\r``, CR) characters are ignored.  The options are:
-
-``LENGTH_MAXIMUM <max-len>``
- Consider only strings of at most a given length.
-
-``LENGTH_MINIMUM <min-len>``
- Consider only strings of at least a given length.
-
-``LIMIT_COUNT <max-num>``
- Limit the number of distinct strings to be extracted.
-
-``LIMIT_INPUT <max-in>``
- Limit the number of input bytes to read from the file.
-
-``LIMIT_OUTPUT <max-out>``
- Limit the number of total bytes to store in the ``<variable>``.
-
-``NEWLINE_CONSUME``
- Treat newline characters (``\n``, LF) as part of string content
- instead of terminating at them.
-
-``NO_HEX_CONVERSION``
- Intel Hex and Motorola S-record files are automatically converted to
- binary while reading unless this option is given.
-
-``REGEX <regex>``
- Consider only strings that match the given regular expression.
-
-``ENCODING <encoding-type>``
- Consider strings of a given encoding.  Currently supported encodings are:
- UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE.  If the ENCODING option
- is not provided and the file has a Byte Order Mark, the ENCODING option
- will be defaulted to respect the Byte Order Mark.
-
-For example, the code
-
-.. code-block:: cmake
-
-  file(STRINGS myfile.txt myfile)
-
-stores a list in the variable ``myfile`` in which each item is a line
-from the input file.
-
-.. _HASH:
-
-.. code-block:: cmake
-
-  file(<HASH> <filename> <variable>)
-
-Compute a cryptographic hash of the content of ``<filename>`` and
-store it in a ``<variable>``.  The supported ``<HASH>`` algorithm names
-are those listed by the :ref:`string(\<HASH\>) <Supported Hash Algorithms>`
-command.
-
-.. _TIMESTAMP:
-
-.. code-block:: cmake
-
-  file(TIMESTAMP <filename> <variable> [<format>] [UTC])
-
-Compute a string representation of the modification time of ``<filename>``
-and store it in ``<variable>``.  Should the command be unable to obtain a
-timestamp variable will be set to the empty string ("").
-
-See the :command:`string(TIMESTAMP)` command for documentation of
-the ``<format>`` and ``UTC`` options.
-
-.. _GET_RUNTIME_DEPENDENCIES:
-
-.. code-block:: cmake
-
-  file(GET_RUNTIME_DEPENDENCIES
-    [RESOLVED_DEPENDENCIES_VAR <deps_var>]
-    [UNRESOLVED_DEPENDENCIES_VAR <unresolved_deps_var>]
-    [CONFLICTING_DEPENDENCIES_PREFIX <conflicting_deps_prefix>]
-    [EXECUTABLES [<executable_files>...]]
-    [LIBRARIES [<library_files>...]]
-    [MODULES [<module_files>...]]
-    [DIRECTORIES [<directories>...]]
-    [BUNDLE_EXECUTABLE <bundle_executable_file>]
-    [PRE_INCLUDE_REGEXES [<regexes>...]]
-    [PRE_EXCLUDE_REGEXES [<regexes>...]]
-    [POST_INCLUDE_REGEXES [<regexes>...]]
-    [POST_EXCLUDE_REGEXES [<regexes>...]]
-    )
-
-Recursively get the list of libraries depended on by the given files.
-
-Please note that this sub-command is not intended to be used in project mode.
-Instead, use it in an :command:`install(CODE)` or :command:`install(SCRIPT)`
-block. For example:
-
-.. code-block:: cmake
-
-  install(CODE [[
-    file(GET_RUNTIME_DEPENDENCIES
-      # ...
-      )
-    ]])
-
-The arguments are as follows:
-
-``RESOLVED_DEPENDENCIES_VAR <deps_var>``
-  Name of the variable in which to store the list of resolved dependencies.
-
-``UNRESOLVED_DEPENDENCIES_VAR <unresolved_deps_var>``
-  Name of the variable in which to store the list of unresolved dependencies.
-  If this variable is not specified, and there are any unresolved dependencies,
-  an error is issued.
-
-``CONFLICTING_DEPENDENCIES_PREFIX <conflicting_deps_prefix>``
-  Variable prefix in which to store conflicting dependency information.
-  Dependencies are conflicting if two files with the same name are found in
-  two different directories. The list of filenames that conflict are stored in
-  ``<conflicting_deps_prefix>_FILENAMES``. For each filename, the list of paths
-  that were found for that filename are stored in
-  ``<conflicting_deps_prefix>_<filename>``.
-
-``EXECUTABLES <executable_files>``
-  List of executable files to read for dependencies. These are executables that
-  are typically created with :command:`add_executable`, but they do not have to
-  be created by CMake. On Apple platforms, the paths to these files determine
-  the value of ``@executable_path`` when recursively resolving the libraries.
-  Specifying any kind of library (``STATIC``, ``MODULE``, or ``SHARED``) here
-  will result in undefined behavior.
-
-``LIBRARIES <library_files>``
-  List of library files to read for dependencies. These are libraries that are
-  typically created with :command:`add_library(SHARED)`, but they do not have
-  to be created by CMake. Specifying ``STATIC`` libraries, ``MODULE``
-  libraries, or executables here will result in undefined behavior.
-
-``MODULES <module_files>``
-  List of loadable module files to read for dependencies. These are modules
-  that are typically created with :command:`add_library(MODULE)`, but they do
-  not have to be created by CMake. They are typically used by calling
-  ``dlopen()`` at runtime rather than linked at link time with ``ld -l``.
-  Specifying ``STATIC`` libraries, ``SHARED`` libraries, or executables here
-  will result in undefined behavior.
-
-``DIRECTORIES <directories>``
-  List of additional directories to search for dependencies. On Linux
-  platforms, these directories are searched if the dependency is not found in
-  any of the other usual paths. If it is found in such a directory, a warning
-  is issued, because it means that the file is incomplete (it does not list all
-  of the directories that contain its dependencies). On Windows platforms,
-  these directories are searched if the dependency is not found in any of the
-  other search paths, but no warning is issued, because searching other paths
-  is a normal part of Windows dependency resolution. On Apple platforms, this
-  argument has no effect.
-
-``BUNDLE_EXECUTABLE <bundle_executable_file>``
-  Executable to treat as the "bundle executable" when resolving libraries. On
-  Apple platforms, this argument determines the value of ``@executable_path``
-  when recursively resolving libraries for ``LIBRARIES`` and ``MODULES`` files.
-  It has no effect on ``EXECUTABLES`` files. On other platforms, it has no
-  effect. This is typically (but not always) one of the executables in the
-  ``EXECUTABLES`` argument which designates the "main" executable of the
-  package.
-
-The following arguments specify filters for including or excluding libraries to
-be resolved. See below for a full description of how they work.
-
-``PRE_INCLUDE_REGEXES <regexes>``
-  List of pre-include regexes through which to filter the names of
-  not-yet-resolved dependencies.
-
-``PRE_EXCLUDE_REGEXES <regexes>``
-  List of pre-exclude regexes through which to filter the names of
-  not-yet-resolved dependencies.
-
-``POST_INCLUDE_REGEXES <regexes>``
-  List of post-include regexes through which to filter the names of resolved
-  dependencies.
-
-``POST_EXCLUDE_REGEXES <regexes>``
-  List of post-exclude regexes through which to filter the names of resolved
-  dependencies.
-
-These arguments can be used to exclude unwanted system libraries when
-resolving the dependencies, or to include libraries from a specific
-directory. The filtering works as follows:
-
-1. If the not-yet-resolved dependency matches any of the
-   ``PRE_INCLUDE_REGEXES``, steps 2 and 3 are skipped, and the dependency
-   resolution proceeds to step 4.
-2. If the not-yet-resolved dependency matches any of the
-   ``PRE_EXCLUDE_REGEXES``, dependency resolution stops for that dependency.
-3. Otherwise, dependency resolution proceeds.
-4. ``file(GET_RUNTIME_DEPENDENCIES)`` searches for the dependency according to
-   the linking rules of the platform (see below).
-5. If the dependency is found, and its full path matches one of the
-   ``POST_INCLUDE_REGEXES``, the full path is added to the resolved
-   dependencies, and ``file(GET_RUNTIME_DEPENDENCIES)`` recursively resolves
-   that library's own dependencies. Otherwise, resolution proceeds to step 6.
-6. If the dependency is found, but its full path matches one of the
-   ``POST_EXCLUDE_REGEXES``, it is not added to the resolved dependencies, and
-   dependency resolution stops for that dependency.
-7. If the dependency is found, and its full path does not match either
-   ``POST_INCLUDE_REGEXES`` or ``POST_EXCLUDE_REGEXES``, the full path is added
-   to the resolved dependencies, and ``file(GET_RUNTIME_DEPENDENCIES)``
-   recursively resolves that library's own dependencies.
-
-Different platforms have different rules for how dependencies are resolved.
-These specifics are described here.
-
-On Linux platforms, library resolution works as follows:
-
-1. If the depending file does not have any ``RUNPATH`` entries, and the library
-   exists in one of the depending file's ``RPATH`` entries, or its parents', in
-   that order, the dependency is resolved to that file.
-2. Otherwise, if the depending file has any ``RUNPATH`` entries, and the
-   library exists in one of those entries, the dependency is resolved to that
-   file.
-3. Otherwise, if the library exists in one of the directories listed by
-   ``ldconfig``, the dependency is resolved to that file.
-4. Otherwise, if the library exists in one of the ``DIRECTORIES`` entries, the
-   dependency is resolved to that file. In this case, a warning is issued,
-   because finding a file in one of the ``DIRECTORIES`` means that the
-   depending file is not complete (it does not list all the directories from
-   which it pulls dependencies).
-5. Otherwise, the dependency is unresolved.
-
-On Windows platforms, library resolution works as follows:
-
-1. The dependent DLL name is converted to lowercase. Windows DLL names are
-   case-insensitive, and some linkers mangle the case of the DLL dependency
-   names. However, this makes it more difficult for ``PRE_INCLUDE_REGEXES``,
-   ``PRE_EXCLUDE_REGEXES``, ``POST_INCLUDE_REGEXES``, and
-   ``POST_EXCLUDE_REGEXES`` to properly filter DLL names - every regex would
-   have to check for both uppercase and lowercase letters. For example:
-
-   .. code-block:: cmake
-
-     file(GET_RUNTIME_DEPENDENCIES
-       # ...
-       PRE_INCLUDE_REGEXES "^[Mm][Yy][Ll][Ii][Bb][Rr][Aa][Rr][Yy]\\.[Dd][Ll][Ll]$"
-       )
-
-   Converting the DLL name to lowercase allows the regexes to only match
-   lowercase names, thus simplifying the regex. For example:
-
-   .. code-block:: cmake
-
-     file(GET_RUNTIME_DEPENDENCIES
-       # ...
-       PRE_INCLUDE_REGEXES "^mylibrary\\.dll$"
-       )
-
-   This regex will match ``mylibrary.dll`` regardless of how it is cased,
-   either on disk or in the depending file. (For example, it will match
-   ``mylibrary.dll``, ``MyLibrary.dll``, and ``MYLIBRARY.DLL``.)
-
-   Please note that the directory portion of any resolved DLLs retains its
-   casing and is not converted to lowercase. Only the filename portion is
-   converted.
-
-2. (**Not yet implemented**) If the depending file is a Windows Store app, and
-   the dependency is listed as a dependency in the application's package
-   manifest, the dependency is resolved to that file.
-3. Otherwise, if the library exists in the same directory as the depending
-   file, the dependency is resolved to that file.
-4. Otherwise, if the library exists in either the operating system's
-   ``system32`` directory or the ``Windows`` directory, in that order, the
-   dependency is resolved to that file.
-5. Otherwise, if the library exists in one of the directories specified by
-   ``DIRECTORIES``, in the order they are listed, the dependency is resolved to
-   that file. In this case, a warning is not issued, because searching other
-   directories is a normal part of Windows library resolution.
-6. Otherwise, the dependency is unresolved.
-
-On Apple platforms, library resolution works as follows:
-
-1. If the dependency starts with ``@executable_path/``, and an ``EXECUTABLES``
-   argument is in the process of being resolved, and replacing
-   ``@executable_path/`` with the directory of the executable yields an
-   existing file, the dependency is resolved to that file.
-2. Otherwise, if the dependency starts with ``@executable_path/``, and there is
-   a ``BUNDLE_EXECUTABLE`` argument, and replacing ``@executable_path/`` with
-   the directory of the bundle executable yields an existing file, the
-   dependency is resolved to that file.
-3. Otherwise, if the dependency starts with ``@loader_path/``, and replacing
-   ``@loader_path/`` with the directory of the depending file yields an
-   existing file, the dependency is resolved to that file.
-4. Otherwise, if the dependency starts with ``@rpath/``, and replacing
-   ``@rpath/`` with one of the ``RPATH`` entries of the depending file yields
-   an existing file, the dependency is resolved to that file. Note that
-   ``RPATH`` entries that start with ``@executable_path/`` or ``@loader_path/``
-   also have these items replaced with the appropriate path.
-5. Otherwise, if the dependency is an absolute file that exists, the dependency
-   is resolved to that file.
-6. Otherwise, the dependency is unresolved.
-
-This function accepts several variables that determine which tool is used for
-dependency resolution:
-
-.. variable:: CMAKE_GET_RUNTIME_DEPENDENCIES_PLATFORM
-
-  Determines which operating system and executable format the files are built
-  for. This could be one of several values:
-
-  * ``linux+elf``
-  * ``windows+pe``
-  * ``macos+macho``
-
-  If this variable is not specified, it is determined automatically by system
-  introspection.
-
-.. variable:: CMAKE_GET_RUNTIME_DEPENDENCIES_TOOL
-
-  Determines the tool to use for dependency resolution. It could be one of
-  several values, depending on the value of
-  :variable:`CMAKE_GET_RUNTIME_DEPENDENCIES_PLATFORM`:
-
-  ================================================= =============================================
-     ``CMAKE_GET_RUNTIME_DEPENDENCIES_PLATFORM``       ``CMAKE_GET_RUNTIME_DEPENDENCIES_TOOL``
-  ================================================= =============================================
-  ``linux+elf``                                     ``objdump``
-  ``windows+pe``                                    ``dumpbin``
-  ``windows+pe``                                    ``objdump``
-  ``macos+macho``                                   ``otool``
-  ================================================= =============================================
-
-  If this variable is not specified, it is determined automatically by system
-  introspection.
-
-.. variable:: CMAKE_GET_RUNTIME_DEPENDENCIES_COMMAND
-
-  Determines the path to the tool to use for dependency resolution. This is the
-  actual path to ``objdump``, ``dumpbin``, or ``otool``.
-
-  If this variable is not specified, it is determined by the value of
-  ``CMAKE_OBJDUMP`` if set, else by system introspection.
-
-Writing
-^^^^^^^
-
-.. _WRITE:
-.. _APPEND:
-
-.. code-block:: cmake
-
-  file(WRITE <filename> <content>...)
-  file(APPEND <filename> <content>...)
-
-Write ``<content>`` into a file called ``<filename>``.  If the file does
-not exist, it will be created.  If the file already exists, ``WRITE``
-mode will overwrite it and ``APPEND`` mode will append to the end.
-Any directories in the path specified by ``<filename>`` that do not
-exist will be created.
-
-If the file is a build input, use the :command:`configure_file` command
-to update the file only when its content changes.
-
-.. _TOUCH:
-.. _TOUCH_NOCREATE:
-
-.. code-block:: cmake
-
-  file(TOUCH [<files>...])
-  file(TOUCH_NOCREATE [<files>...])
-
-Create a file with no content if it does not yet exist. If the file already
-exists, its access and/or modification will be updated to the time when the
-function call is executed.
-
-Use TOUCH_NOCREATE to touch a file if it exists but not create it. If a file
-does not exist it will be silently ignored.
-
-With TOUCH and TOUCH_NOCREATE the contents of an existing file will not be
-modified.
-
-.. _GENERATE:
-
-.. code-block:: cmake
-
-  file(GENERATE OUTPUT output-file
-       <INPUT input-file|CONTENT content>
-       [CONDITION expression])
-
-Generate an output file for each build configuration supported by the current
-:manual:`CMake Generator <cmake-generators(7)>`.  Evaluate
-:manual:`generator expressions <cmake-generator-expressions(7)>`
-from the input content to produce the output content.  The options are:
-
-``CONDITION <condition>``
-  Generate the output file for a particular configuration only if
-  the condition is true.  The condition must be either ``0`` or ``1``
-  after evaluating generator expressions.
-
-``CONTENT <content>``
-  Use the content given explicitly as input.
-
-``INPUT <input-file>``
-  Use the content from a given file as input.
-  A relative path is treated with respect to the value of
-  :variable:`CMAKE_CURRENT_SOURCE_DIR`.  See policy :policy:`CMP0070`.
-
-``OUTPUT <output-file>``
-  Specify the output file name to generate.  Use generator expressions
-  such as ``$<CONFIG>`` to specify a configuration-specific output file
-  name.  Multiple configurations may generate the same output file only
-  if the generated content is identical.  Otherwise, the ``<output-file>``
-  must evaluate to an unique name for each configuration.
-  A relative path (after evaluating generator expressions) is treated
-  with respect to the value of :variable:`CMAKE_CURRENT_BINARY_DIR`.
-  See policy :policy:`CMP0070`.
-
-Exactly one ``CONTENT`` or ``INPUT`` option must be given.  A specific
-``OUTPUT`` file may be named by at most one invocation of ``file(GENERATE)``.
-Generated files are modified and their timestamp updated on subsequent cmake
-runs only if their content is changed.
-
-Note also that ``file(GENERATE)`` does not create the output file until the
-generation phase. The output file will not yet have been written when the
-``file(GENERATE)`` command returns, it is written only after processing all
-of a project's ``CMakeLists.txt`` files.
-
-.. _CONFIGURE:
-
-.. code-block:: cmake
-
-  file(CONFIGURE OUTPUT output-file
-       CONTENT content
-       [ESCAPE_QUOTES] [@ONLY]
-       [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])
-
-Generate an output file using the input given by ``CONTENT`` and substitute
-variable values referenced as ``@VAR@`` or ``${VAR}`` contained therein. The
-substitution rules behave the same as the :command:`configure_file` command.
-In order to match :command:`configure_file`'s behavior, generator expressions
-are not supported for both ``OUTPUT`` and ``CONTENT``.
-
-The arguments are:
-
-``OUTPUT <output-file>``
-  Specify the output file name to generate. A relative path is treated with
-  respect to the value of :variable:`CMAKE_CURRENT_BINARY_DIR`.
-  ``<output-file>`` does not support generator expressions.
-
-``CONTENT <content>``
-  Use the content given explicitly as input.
-  ``<content>`` does not support generator expressions.
-
-``ESCAPE_QUOTES``
-  Escape any substituted quotes with backslashes (C-style).
-
-``@ONLY``
-  Restrict variable replacement to references of the form ``@VAR@``.
-  This is useful for configuring scripts that use ``${VAR}`` syntax.
-
-``NEWLINE_STYLE <style>``
-  Specify the newline style for the output file.  Specify
-  ``UNIX`` or ``LF`` for ``\n`` newlines, or specify
-  ``DOS``, ``WIN32``, or ``CRLF`` for ``\r\n`` newlines.
-
-Filesystem
-^^^^^^^^^^
-
-.. _GLOB:
-.. _GLOB_RECURSE:
-
-.. code-block:: cmake
-
-  file(GLOB <variable>
-       [LIST_DIRECTORIES true|false] [RELATIVE <path>] [CONFIGURE_DEPENDS]
-       [<globbing-expressions>...])
-  file(GLOB_RECURSE <variable> [FOLLOW_SYMLINKS]
-       [LIST_DIRECTORIES true|false] [RELATIVE <path>] [CONFIGURE_DEPENDS]
-       [<globbing-expressions>...])
-
-Generate a list of files that match the ``<globbing-expressions>`` and
-store it into the ``<variable>``.  Globbing expressions are similar to
-regular expressions, but much simpler.  If ``RELATIVE`` flag is
-specified, the results will be returned as relative paths to the given
-path.  The results will be ordered lexicographically.
-
-On Windows and macOS, globbing is case-insensitive even if the underlying
-filesystem is case-sensitive (both filenames and globbing expressions are
-converted to lowercase before matching).  On other platforms, globbing is
-case-sensitive.
-
-If the ``CONFIGURE_DEPENDS`` flag is specified, CMake will add logic
-to the main build system check target to rerun the flagged ``GLOB`` commands
-at build time. If any of the outputs change, CMake will regenerate the build
-system.
-
-By default ``GLOB`` lists directories - directories are omitted in result if
-``LIST_DIRECTORIES`` is set to false.
-
-.. note::
-  We do not recommend using GLOB to collect a list of source files from
-  your source tree.  If no CMakeLists.txt file changes when a source is
-  added or removed then the generated build system cannot know when to
-  ask CMake to regenerate.
-  The ``CONFIGURE_DEPENDS`` flag may not work reliably on all generators, or if
-  a new generator is added in the future that cannot support it, projects using
-  it will be stuck. Even if ``CONFIGURE_DEPENDS`` works reliably, there is
-  still a cost to perform the check on every rebuild.
-
-Examples of globbing expressions include::
-
-  *.cxx      - match all files with extension cxx
-  *.vt?      - match all files with extension vta,...,vtz
-  f[3-5].txt - match files f3.txt, f4.txt, f5.txt
-
-The ``GLOB_RECURSE`` mode will traverse all the subdirectories of the
-matched directory and match the files.  Subdirectories that are symlinks
-are only traversed if ``FOLLOW_SYMLINKS`` is given or policy
-:policy:`CMP0009` is not set to ``NEW``.
-
-By default ``GLOB_RECURSE`` omits directories from result list - setting
-``LIST_DIRECTORIES`` to true adds directories to result list.
-If ``FOLLOW_SYMLINKS`` is given or policy :policy:`CMP0009` is not set to
-``NEW`` then ``LIST_DIRECTORIES`` treats symlinks as directories.
-
-Examples of recursive globbing include::
-
-  /dir/*.py  - match all python files in /dir and subdirectories
-
-.. _RENAME:
-
-.. code-block:: cmake
-
-  file(RENAME <oldname> <newname>)
-
-Move a file or directory within a filesystem from ``<oldname>`` to
-``<newname>``, replacing the destination atomically.
-
-.. _REMOVE:
-.. _REMOVE_RECURSE:
-
-.. code-block:: cmake
-
-  file(REMOVE [<files>...])
-  file(REMOVE_RECURSE [<files>...])
-
-Remove the given files.  The ``REMOVE_RECURSE`` mode will remove the given
-files and directories, also non-empty directories. No error is emitted if a
-given file does not exist.  Relative input paths are evaluated with respect
-to the current source directory.  Empty input paths are ignored with a warning.
-
-.. _MAKE_DIRECTORY:
-
-.. code-block:: cmake
-
-  file(MAKE_DIRECTORY [<directories>...])
-
-Create the given directories and their parents as needed.
-
-.. _COPY:
-.. _INSTALL:
-
-.. code-block:: cmake
-
-  file(<COPY|INSTALL> <files>... DESTINATION <dir>
-       [FILE_PERMISSIONS <permissions>...]
-       [DIRECTORY_PERMISSIONS <permissions>...]
-       [NO_SOURCE_PERMISSIONS] [USE_SOURCE_PERMISSIONS]
-       [FOLLOW_SYMLINK_CHAIN]
-       [FILES_MATCHING]
-       [[PATTERN <pattern> | REGEX <regex>]
-        [EXCLUDE] [PERMISSIONS <permissions>...]] [...])
-
-The ``COPY`` signature copies files, directories, and symlinks to a
-destination folder.  Relative input paths are evaluated with respect
-to the current source directory, and a relative destination is
-evaluated with respect to the current build directory.  Copying
-preserves input file timestamps, and optimizes out a file if it exists
-at the destination with the same timestamp.  Copying preserves input
-permissions unless explicit permissions or ``NO_SOURCE_PERMISSIONS``
-are given (default is ``USE_SOURCE_PERMISSIONS``).
-
-If ``FOLLOW_SYMLINK_CHAIN`` is specified, ``COPY`` will recursively resolve
-the symlinks at the paths given until a real file is found, and install
-a corresponding symlink in the destination for each symlink encountered. For
-each symlink that is installed, the resolution is stripped of the directory,
-leaving only the filename, meaning that the new symlink points to a file in
-the same directory as the symlink. This feature is useful on some Unix systems,
-where libraries are installed as a chain of symlinks with version numbers, with
-less specific versions pointing to more specific versions.
-``FOLLOW_SYMLINK_CHAIN`` will install all of these symlinks and the library
-itself into the destination directory. For example, if you have the following
-directory structure:
-
-* ``/opt/foo/lib/libfoo.so.1.2.3``
-* ``/opt/foo/lib/libfoo.so.1.2 -> libfoo.so.1.2.3``
-* ``/opt/foo/lib/libfoo.so.1 -> libfoo.so.1.2``
-* ``/opt/foo/lib/libfoo.so -> libfoo.so.1``
-
-and you do:
-
-.. code-block:: cmake
-
-  file(COPY /opt/foo/lib/libfoo.so DESTINATION lib FOLLOW_SYMLINK_CHAIN)
-
-This will install all of the symlinks and ``libfoo.so.1.2.3`` itself into
-``lib``.
-
-See the :command:`install(DIRECTORY)` command for documentation of
-permissions, ``FILES_MATCHING``, ``PATTERN``, ``REGEX``, and
-``EXCLUDE`` options.  Copying directories preserves the structure
-of their content even if options are used to select a subset of
-files.
-
-The ``INSTALL`` signature differs slightly from ``COPY``: it prints
-status messages (subject to the :variable:`CMAKE_INSTALL_MESSAGE` variable),
-and ``NO_SOURCE_PERMISSIONS`` is default.
-Installation scripts generated by the :command:`install` command
-use this signature (with some undocumented options for internal use).
-
-.. _SIZE:
-
-.. code-block:: cmake
-
-  file(SIZE <filename> <variable>)
-
-Determine the file size of the ``<filename>`` and put the result in
-``<variable>`` variable. Requires that ``<filename>`` is a valid path
-pointing to a file and is readable.
-
-.. _READ_SYMLINK:
-
-.. code-block:: cmake
-
-  file(READ_SYMLINK <linkname> <variable>)
-
-This subcommand queries the symlink ``<linkname>`` and stores the path it
-points to in the result ``<variable>``.  If ``<linkname>`` does not exist or
-is not a symlink, CMake issues a fatal error.
-
-Note that this command returns the raw symlink path and does not resolve
-a relative path.  The following is an example of how to ensure that an
-absolute path is obtained:
-
-.. code-block:: cmake
-
-  set(linkname "/path/to/foo.sym")
-  file(READ_SYMLINK "${linkname}" result)
-  if(NOT IS_ABSOLUTE "${result}")
-    get_filename_component(dir "${linkname}" DIRECTORY)
-    set(result "${dir}/${result}")
-  endif()
-
-.. _CREATE_LINK:
-
-.. code-block:: cmake
-
-  file(CREATE_LINK <original> <linkname>
-       [RESULT <result>] [COPY_ON_ERROR] [SYMBOLIC])
-
-Create a link ``<linkname>`` that points to ``<original>``.
-It will be a hard link by default, but providing the ``SYMBOLIC`` option
-results in a symbolic link instead.  Hard links require that ``original``
-exists and is a file, not a directory.  If ``<linkname>`` already exists,
-it will be overwritten.
-
-The ``<result>`` variable, if specified, receives the status of the operation.
-It is set to ``0`` upon success or an error message otherwise.  If ``RESULT``
-is not specified and the operation fails, a fatal error is emitted.
-
-Specifying ``COPY_ON_ERROR`` enables copying the file as a fallback if
-creating the link fails.  It can be useful for handling situations such as
-``<original>`` and ``<linkname>`` being on different drives or mount points,
-which would make them unable to support a hard link.
-
-Path Conversion
-^^^^^^^^^^^^^^^
-
-.. _RELATIVE_PATH:
-
-.. code-block:: cmake
-
-  file(RELATIVE_PATH <variable> <directory> <file>)
-
-Compute the relative path from a ``<directory>`` to a ``<file>`` and
-store it in the ``<variable>``.
-
-.. _TO_CMAKE_PATH:
-.. _TO_NATIVE_PATH:
-
-.. code-block:: cmake
-
-  file(TO_CMAKE_PATH "<path>" <variable>)
-  file(TO_NATIVE_PATH "<path>" <variable>)
-
-The ``TO_CMAKE_PATH`` mode converts a native ``<path>`` into a cmake-style
-path with forward-slashes (``/``).  The input can be a single path or a
-system search path like ``$ENV{PATH}``.  A search path will be converted
-to a cmake-style list separated by ``;`` characters.
-
-The ``TO_NATIVE_PATH`` mode converts a cmake-style ``<path>`` into a native
-path with platform-specific slashes (``\`` on Windows and ``/`` elsewhere).
-
-Always use double quotes around the ``<path>`` to be sure it is treated
-as a single argument to this command.
-
-Transfer
-^^^^^^^^
-
-.. _DOWNLOAD:
-.. _UPLOAD:
-
-.. code-block:: cmake
-
-  file(DOWNLOAD <url> <file> [<options>...])
-  file(UPLOAD   <file> <url> [<options>...])
-
-The ``DOWNLOAD`` mode downloads the given ``<url>`` to a local ``<file>``.
-The ``UPLOAD`` mode uploads a local ``<file>`` to a given ``<url>``.
-
-Options to both ``DOWNLOAD`` and ``UPLOAD`` are:
-
-``INACTIVITY_TIMEOUT <seconds>``
-  Terminate the operation after a period of inactivity.
-
-``LOG <variable>``
-  Store a human-readable log of the operation in a variable.
-
-``SHOW_PROGRESS``
-  Print progress information as status messages until the operation is
-  complete.
-
-``STATUS <variable>``
-  Store the resulting status of the operation in a variable.
-  The status is a ``;`` separated list of length 2.
-  The first element is the numeric return value for the operation,
-  and the second element is a string value for the error.
-  A ``0`` numeric error means no error in the operation.
-
-``TIMEOUT <seconds>``
-  Terminate the operation after a given total time has elapsed.
-
-``USERPWD <username>:<password>``
-  Set username and password for operation.
-
-``HTTPHEADER <HTTP-header>``
-  HTTP header for operation. Suboption can be repeated several times.
-
-``NETRC <level>``
-  Specify whether the .netrc file is to be used for operation.  If this
-  option is not specified, the value of the ``CMAKE_NETRC`` variable
-  will be used instead.
-  Valid levels are:
-
-  ``IGNORED``
-    The .netrc file is ignored.
-    This is the default.
-  ``OPTIONAL``
-    The .netrc file is optional, and information in the URL is preferred.
-    The file will be scanned to find which ever information is not specified
-    in the URL.
-  ``REQUIRED``
-    The .netrc file is required, and information in the URL is ignored.
-
-``NETRC_FILE <file>``
-  Specify an alternative .netrc file to the one in your home directory,
-  if the ``NETRC`` level is ``OPTIONAL`` or ``REQUIRED``. If this option
-  is not specified, the value of the ``CMAKE_NETRC_FILE`` variable will
-  be used instead.
-
-If neither ``NETRC`` option is given CMake will check variables
-``CMAKE_NETRC`` and ``CMAKE_NETRC_FILE``, respectively.
-
-``TLS_VERIFY <ON|OFF>``
-  Specify whether to verify the server certificate for ``https://`` URLs.
-  The default is to *not* verify.
-
-``TLS_CAINFO <file>``
-  Specify a custom Certificate Authority file for ``https://`` URLs.
-
-For ``https://`` URLs CMake must be built with OpenSSL support.  ``TLS/SSL``
-certificates are not checked by default.  Set ``TLS_VERIFY`` to ``ON`` to
-check certificates. If neither ``TLS`` option is given CMake will check
-variables ``CMAKE_TLS_VERIFY`` and ``CMAKE_TLS_CAINFO``, respectively.
-
-Additional options to ``DOWNLOAD`` are:
-
-``EXPECTED_HASH ALGO=<value>``
-
-  Verify that the downloaded content hash matches the expected value, where
-  ``ALGO`` is one of the algorithms supported by ``file(<HASH>)``.
-  If it does not match, the operation fails with an error.
-
-``EXPECTED_MD5 <value>``
-  Historical short-hand for ``EXPECTED_HASH MD5=<value>``.
-
-Locking
-^^^^^^^
-
-.. _LOCK:
-
-.. code-block:: cmake
-
-  file(LOCK <path> [DIRECTORY] [RELEASE]
-       [GUARD <FUNCTION|FILE|PROCESS>]
-       [RESULT_VARIABLE <variable>]
-       [TIMEOUT <seconds>])
-
-Lock a file specified by ``<path>`` if no ``DIRECTORY`` option present and file
-``<path>/cmake.lock`` otherwise. File will be locked for scope defined by
-``GUARD`` option (default value is ``PROCESS``). ``RELEASE`` option can be used
-to unlock file explicitly. If option ``TIMEOUT`` is not specified CMake will
-wait until lock succeed or until fatal error occurs. If ``TIMEOUT`` is set to
-``0`` lock will be tried once and result will be reported immediately. If
-``TIMEOUT`` is not ``0`` CMake will try to lock file for the period specified
-by ``<seconds>`` value. Any errors will be interpreted as fatal if there is no
-``RESULT_VARIABLE`` option. Otherwise result will be stored in ``<variable>``
-and will be ``0`` on success or error message on failure.
-
-Note that lock is advisory - there is no guarantee that other processes will
-respect this lock, i.e. lock synchronize two or more CMake instances sharing
-some modifiable resources. Similar logic applied to ``DIRECTORY`` option -
-locking parent directory doesn't prevent other ``LOCK`` commands to lock any
-child directory or file.
-
-Trying to lock file twice is not allowed.  Any intermediate directories and
-file itself will be created if they not exist.  ``GUARD`` and ``TIMEOUT``
-options ignored on ``RELEASE`` operation.
-
-Archiving
-^^^^^^^^^
-
-.. _ARCHIVE_CREATE:
-
-.. code-block:: cmake
-
-  file(ARCHIVE_CREATE OUTPUT <archive>
-    PATHS <paths>...
-    [FORMAT <format>]
-    [COMPRESSION <compression>]
-    [MTIME <mtime>]
-    [VERBOSE])
-
-Creates the specified ``<archive>`` file with the files and directories
-listed in ``<paths>``.  Note that ``<paths>`` must list actual files or
-directories, wildcards are not supported.
-
-Use the ``FORMAT`` option to specify the archive format.  Supported values
-for ``<format>`` are ``7zip``, ``gnutar``, ``pax``, ``paxr``, ``raw`` and
-``zip``.  If ``FORMAT`` is not given, the default format is ``paxr``.
-
-Some archive formats allow the type of compression to be specified.
-The ``7zip`` and ``zip`` archive formats already imply a specific type of
-compression.  The other formats use no compression by default, but can be
-directed to do so with the ``COMPRESSION`` option.  Valid values for
-``<compression>`` are ``None``, ``BZip2``, ``GZip``, ``XZ``, and ``Zstd``.
-
-.. note::
-  With ``FORMAT`` set to ``raw`` only one file will be compressed with the
-  compression type specified by ``COMPRESSION``.
-
-The ``VERBOSE`` option enables verbose output for the archive operation.
-
-To specify the modification time recorded in tarball entries, use
-the ``MTIME`` option.
-
-.. _ARCHIVE_EXTRACT:
-
-.. code-block:: cmake
-
-  file(ARCHIVE_EXTRACT INPUT <archive>
-    [DESTINATION <dir>]
-    [PATTERNS <patterns>...]
-    [LIST_ONLY]
-    [VERBOSE])
-
-Extracts or lists the content of the specified ``<archive>``.
-
-The directory where the content of the archive will be extracted to can
-be specified using the ``DESTINATION`` option.  If the directory does not
-exist, it will be created.  If ``DESTINATION`` is not given, the current
-binary directory will be used.
-
-If required, you may select which files and directories to list or extract
-from the archive using the specified ``<patterns>``.  Wildcards are supported.
-If the ``PATTERNS`` option is not given, the entire archive will be listed or
-extracted.
-
-``LIST_ONLY`` will list the files in the archive rather than extract them.
-
-With ``VERBOSE``, the command will produce verbose output.
diff --git a/share/cmake-3.18/Help/command/find_file.rst b/share/cmake-3.18/Help/command/find_file.rst
deleted file mode 100644
index 3f03f37..0000000
--- a/share/cmake-3.18/Help/command/find_file.rst
+++ /dev/null
@@ -1,36 +0,0 @@
-find_file
----------
-
-.. |FIND_XXX| replace:: find_file
-.. |NAMES| replace:: NAMES name1 [name2 ...]
-.. |SEARCH_XXX| replace:: full path to a file
-.. |SEARCH_XXX_DESC| replace:: full path to named file
-.. |prefix_XXX_SUBDIR| replace:: ``<prefix>/include``
-.. |entry_XXX_SUBDIR| replace:: ``<entry>/include``
-
-.. |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX| replace::
-   ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
-   is set, and |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX_SUBDIR|
-.. |CMAKE_PREFIX_PATH_XXX| replace::
-   ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
-   is set, and |CMAKE_PREFIX_PATH_XXX_SUBDIR|
-.. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_INCLUDE_PATH`
-.. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH`
-
-.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: The directories in ``PATH`` and ``INCLUDE``.
-.. |SYSTEM_ENVIRONMENT_PATH_WINDOWS_XXX| replace:: On Windows hosts:
-      ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
-      is set, and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|.
-
-.. |CMAKE_SYSTEM_PREFIX_PATH_XXX| replace::
-   ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
-   is set, and |CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR|
-.. |CMAKE_SYSTEM_XXX_PATH| replace::
-   :variable:`CMAKE_SYSTEM_INCLUDE_PATH`
-.. |CMAKE_SYSTEM_XXX_MAC_PATH| replace::
-   :variable:`CMAKE_SYSTEM_FRAMEWORK_PATH`
-
-.. |CMAKE_FIND_ROOT_PATH_MODE_XXX| replace::
-   :variable:`CMAKE_FIND_ROOT_PATH_MODE_INCLUDE`
-
-.. include:: FIND_XXX.txt
diff --git a/share/cmake-3.18/Help/command/find_library.rst b/share/cmake-3.18/Help/command/find_library.rst
deleted file mode 100644
index 8a55aca..0000000
--- a/share/cmake-3.18/Help/command/find_library.rst
+++ /dev/null
@@ -1,81 +0,0 @@
-find_library
-------------
-
-.. |FIND_XXX| replace:: find_library
-.. |NAMES| replace:: NAMES name1 [name2 ...] [NAMES_PER_DIR]
-.. |SEARCH_XXX| replace:: library
-.. |SEARCH_XXX_DESC| replace:: library
-.. |prefix_XXX_SUBDIR| replace:: ``<prefix>/lib``
-.. |entry_XXX_SUBDIR| replace:: ``<entry>/lib``
-
-.. |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX| replace::
-   ``<prefix>/lib/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set,
-   and |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX_SUBDIR|
-.. |CMAKE_PREFIX_PATH_XXX| replace::
-   ``<prefix>/lib/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set,
-   and |CMAKE_PREFIX_PATH_XXX_SUBDIR|
-.. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_LIBRARY_PATH`
-.. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH`
-
-.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: The directories in ``PATH`` and ``INCLUDE``.
-.. |SYSTEM_ENVIRONMENT_PATH_WINDOWS_XXX| replace:: On Windows hosts:
-      ``<prefix>/lib/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
-      is set, and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|.
-
-.. |CMAKE_SYSTEM_PREFIX_PATH_XXX| replace::
-   ``<prefix>/lib/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set,
-   and |CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR|
-.. |CMAKE_SYSTEM_XXX_PATH| replace::
-   :variable:`CMAKE_SYSTEM_LIBRARY_PATH`
-.. |CMAKE_SYSTEM_XXX_MAC_PATH| replace::
-   :variable:`CMAKE_SYSTEM_FRAMEWORK_PATH`
-
-.. |CMAKE_FIND_ROOT_PATH_MODE_XXX| replace::
-   :variable:`CMAKE_FIND_ROOT_PATH_MODE_LIBRARY`
-
-.. include:: FIND_XXX.txt
-
-When more than one value is given to the ``NAMES`` option this command by
-default will consider one name at a time and search every directory
-for it.  The ``NAMES_PER_DIR`` option tells this command to consider one
-directory at a time and search for all names in it.
-
-Each library name given to the ``NAMES`` option is first considered
-as a library file name and then considered with platform-specific
-prefixes (e.g. ``lib``) and suffixes (e.g. ``.so``).  Therefore one
-may specify library file names such as ``libfoo.a`` directly.
-This can be used to locate static libraries on UNIX-like systems.
-
-If the library found is a framework, then ``<VAR>`` will be set to the full
-path to the framework ``<fullPath>/A.framework``.  When a full path to a
-framework is used as a library, CMake will use a ``-framework A``, and a
-``-F<fullPath>`` to link the framework to the target.
-
-If the :variable:`CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX` variable is set all
-search paths will be tested as normal, with the suffix appended, and with
-all matches of ``lib/`` replaced with
-``lib${CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX}/``.  This variable overrides
-the :prop_gbl:`FIND_LIBRARY_USE_LIB32_PATHS`,
-:prop_gbl:`FIND_LIBRARY_USE_LIBX32_PATHS`,
-and :prop_gbl:`FIND_LIBRARY_USE_LIB64_PATHS` global properties.
-
-If the :prop_gbl:`FIND_LIBRARY_USE_LIB32_PATHS` global property is set
-all search paths will be tested as normal, with ``32/`` appended, and
-with all matches of ``lib/`` replaced with ``lib32/``.  This property is
-automatically set for the platforms that are known to need it if at
-least one of the languages supported by the :command:`project` command
-is enabled.
-
-If the :prop_gbl:`FIND_LIBRARY_USE_LIBX32_PATHS` global property is set
-all search paths will be tested as normal, with ``x32/`` appended, and
-with all matches of ``lib/`` replaced with ``libx32/``.  This property is
-automatically set for the platforms that are known to need it if at
-least one of the languages supported by the :command:`project` command
-is enabled.
-
-If the :prop_gbl:`FIND_LIBRARY_USE_LIB64_PATHS` global property is set
-all search paths will be tested as normal, with ``64/`` appended, and
-with all matches of ``lib/`` replaced with ``lib64/``.  This property is
-automatically set for the platforms that are known to need it if at
-least one of the languages supported by the :command:`project` command
-is enabled.
diff --git a/share/cmake-3.18/Help/command/find_package.rst b/share/cmake-3.18/Help/command/find_package.rst
deleted file mode 100644
index 857de78..0000000
--- a/share/cmake-3.18/Help/command/find_package.rst
+++ /dev/null
@@ -1,426 +0,0 @@
-find_package
-------------
-
-.. only:: html
-
-   .. contents::
-
-Find an external project, and load its settings.
-
-.. _`basic signature`:
-
-Basic Signature and Module Mode
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  find_package(<PackageName> [version] [EXACT] [QUIET] [MODULE]
-               [REQUIRED] [[COMPONENTS] [components...]]
-               [OPTIONAL_COMPONENTS components...]
-               [NO_POLICY_SCOPE])
-
-Finds and loads settings from an external project.  ``<PackageName>_FOUND``
-will be set to indicate whether the package was found.  When the
-package is found package-specific information is provided through
-variables and :ref:`Imported Targets` documented by the package itself.  The
-``QUIET`` option disables informational messages, including those indicating
-that the package cannot be found if it is not ``REQUIRED``.  The ``REQUIRED``
-option stops processing with an error message if the package cannot be found.
-
-A package-specific list of required components may be listed after the
-``COMPONENTS`` option (or after the ``REQUIRED`` option if present).
-Additional optional components may be listed after
-``OPTIONAL_COMPONENTS``.  Available components and their influence on
-whether a package is considered to be found are defined by the target
-package.
-
-The ``[version]`` argument requests a version with which the package found
-should be compatible (format is ``major[.minor[.patch[.tweak]]]``).  The
-``EXACT`` option requests that the version be matched exactly.  If no
-``[version]`` and/or component list is given to a recursive invocation
-inside a find-module, the corresponding arguments are forwarded
-automatically from the outer call (including the ``EXACT`` flag for
-``[version]``).  Version support is currently provided only on a
-package-by-package basis (see the `Version Selection`_ section below).
-
-See the :command:`cmake_policy` command documentation for discussion
-of the ``NO_POLICY_SCOPE`` option.
-
-The command has two modes by which it searches for packages: "Module"
-mode and "Config" mode.  The above signature selects Module mode.
-If no module is found the command falls back to Config mode, described
-below. This fall back is disabled if the ``MODULE`` option is given.
-
-In Module mode, CMake searches for a file called ``Find<PackageName>.cmake``.
-The file is first searched in the :variable:`CMAKE_MODULE_PATH`,
-then among the :ref:`Find Modules` provided by the CMake installation.
-If the file is found, it is read and processed by CMake.  It is responsible
-for finding the package, checking the version, and producing any needed
-messages.  Some find-modules provide limited or no support for versioning;
-check the module documentation.
-
-If the ``MODULE`` option is not specified in the above signature,
-CMake first searches for the package using Module mode. Then, if the
-package is not found, it searches again using Config mode. A user
-may set the variable :variable:`CMAKE_FIND_PACKAGE_PREFER_CONFIG` to
-``TRUE`` to direct CMake first search using Config mode before falling
-back to Module mode.
-
-Full Signature and Config Mode
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-User code should generally look for packages using the above `basic
-signature`_.  The remainder of this command documentation specifies the
-full command signature and details of the search process.  Project
-maintainers wishing to provide a package to be found by this command
-are encouraged to read on.
-
-The complete Config mode command signature is
-
-.. code-block:: cmake
-
-  find_package(<PackageName> [version] [EXACT] [QUIET]
-               [REQUIRED] [[COMPONENTS] [components...]]
-               [OPTIONAL_COMPONENTS components...]
-               [CONFIG|NO_MODULE]
-               [NO_POLICY_SCOPE]
-               [NAMES name1 [name2 ...]]
-               [CONFIGS config1 [config2 ...]]
-               [HINTS path1 [path2 ... ]]
-               [PATHS path1 [path2 ... ]]
-               [PATH_SUFFIXES suffix1 [suffix2 ...]]
-               [NO_DEFAULT_PATH]
-               [NO_PACKAGE_ROOT_PATH]
-               [NO_CMAKE_PATH]
-               [NO_CMAKE_ENVIRONMENT_PATH]
-               [NO_SYSTEM_ENVIRONMENT_PATH]
-               [NO_CMAKE_PACKAGE_REGISTRY]
-               [NO_CMAKE_BUILDS_PATH] # Deprecated; does nothing.
-               [NO_CMAKE_SYSTEM_PATH]
-               [NO_CMAKE_SYSTEM_PACKAGE_REGISTRY]
-               [CMAKE_FIND_ROOT_PATH_BOTH |
-                ONLY_CMAKE_FIND_ROOT_PATH |
-                NO_CMAKE_FIND_ROOT_PATH])
-
-The ``CONFIG`` option, the synonymous ``NO_MODULE`` option, or the use
-of options not specified in the `basic signature`_ all enforce pure Config
-mode.  In pure Config mode, the command skips Module mode search and
-proceeds at once with Config mode search.
-
-Config mode search attempts to locate a configuration file provided by the
-package to be found.  A cache entry called ``<PackageName>_DIR`` is created to
-hold the directory containing the file.  By default the command
-searches for a package with the name ``<PackageName>``.  If the ``NAMES`` option
-is given the names following it are used instead of ``<PackageName>``.
-The command searches for a file called ``<PackageName>Config.cmake`` or
-``<lower-case-package-name>-config.cmake`` for each name specified.
-A replacement set of possible configuration file names may be given
-using the ``CONFIGS`` option.  The search procedure is specified below.
-Once found, the configuration file is read and processed by CMake.
-Since the file is provided by the package it already knows the
-location of package contents.  The full path to the configuration file
-is stored in the cmake variable ``<PackageName>_CONFIG``.
-
-All configuration files which have been considered by CMake while
-searching for an installation of the package with an appropriate
-version are stored in the cmake variable ``<PackageName>_CONSIDERED_CONFIGS``,
-the associated versions in ``<PackageName>_CONSIDERED_VERSIONS``.
-
-If the package configuration file cannot be found CMake will generate
-an error describing the problem unless the ``QUIET`` argument is
-specified.  If ``REQUIRED`` is specified and the package is not found a
-fatal error is generated and the configure step stops executing.  If
-``<PackageName>_DIR`` has been set to a directory not containing a
-configuration file CMake will ignore it and search from scratch.
-
-Package maintainers providing CMake package configuration files are
-encouraged to name and install them such that the `Search Procedure`_
-outlined below will find them without requiring use of additional options.
-
-Version Selection
-^^^^^^^^^^^^^^^^^
-
-When the ``[version]`` argument is given Config mode will only find a
-version of the package that claims compatibility with the requested
-version (format is ``major[.minor[.patch[.tweak]]]``).  If the ``EXACT``
-option is given only a version of the package claiming an exact match
-of the requested version may be found.  CMake does not establish any
-convention for the meaning of version numbers.  Package version
-numbers are checked by "version" files provided by the packages
-themselves.  For a candidate package configuration file
-``<config-file>.cmake`` the corresponding version file is located next
-to it and named either ``<config-file>-version.cmake`` or
-``<config-file>Version.cmake``.  If no such version file is available
-then the configuration file is assumed to not be compatible with any
-requested version.  A basic version file containing generic version
-matching code can be created using the
-:module:`CMakePackageConfigHelpers` module.  When a version file
-is found it is loaded to check the requested version number.  The
-version file is loaded in a nested scope in which the following
-variables have been defined:
-
-``PACKAGE_FIND_NAME``
-  the ``<PackageName>``
-``PACKAGE_FIND_VERSION``
-  full requested version string
-``PACKAGE_FIND_VERSION_MAJOR``
-  major version if requested, else 0
-``PACKAGE_FIND_VERSION_MINOR``
-  minor version if requested, else 0
-``PACKAGE_FIND_VERSION_PATCH``
-  patch version if requested, else 0
-``PACKAGE_FIND_VERSION_TWEAK``
-  tweak version if requested, else 0
-``PACKAGE_FIND_VERSION_COUNT``
-  number of version components, 0 to 4
-
-The version file checks whether it satisfies the requested version and
-sets these variables:
-
-``PACKAGE_VERSION``
-  full provided version string
-``PACKAGE_VERSION_EXACT``
-  true if version is exact match
-``PACKAGE_VERSION_COMPATIBLE``
-  true if version is compatible
-``PACKAGE_VERSION_UNSUITABLE``
-  true if unsuitable as any version
-
-These variables are checked by the ``find_package`` command to determine
-whether the configuration file provides an acceptable version.  They
-are not available after the ``find_package`` call returns.  If the version
-is acceptable the following variables are set:
-
-``<PackageName>_VERSION``
-  full provided version string
-``<PackageName>_VERSION_MAJOR``
-  major version if provided, else 0
-``<PackageName>_VERSION_MINOR``
-  minor version if provided, else 0
-``<PackageName>_VERSION_PATCH``
-  patch version if provided, else 0
-``<PackageName>_VERSION_TWEAK``
-  tweak version if provided, else 0
-``<PackageName>_VERSION_COUNT``
-  number of version components, 0 to 4
-
-and the corresponding package configuration file is loaded.
-When multiple package configuration files are available whose version files
-claim compatibility with the version requested it is unspecified which
-one is chosen: unless the variable :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER`
-is set no attempt is made to choose a highest or closest version number.
-
-To control the order in which ``find_package`` checks for compatibility use
-the two variables :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER` and
-:variable:`CMAKE_FIND_PACKAGE_SORT_DIRECTION`.
-For instance in order to select the highest version one can set
-
-.. code-block:: cmake
-
-  SET(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL)
-  SET(CMAKE_FIND_PACKAGE_SORT_DIRECTION DEC)
-
-before calling ``find_package``.
-
-Search Procedure
-^^^^^^^^^^^^^^^^
-
-CMake constructs a set of possible installation prefixes for the
-package.  Under each prefix several directories are searched for a
-configuration file.  The tables below show the directories searched.
-Each entry is meant for installation trees following Windows (``W``), UNIX
-(``U``), or Apple (``A``) conventions::
-
-  <prefix>/                                                       (W)
-  <prefix>/(cmake|CMake)/                                         (W)
-  <prefix>/<name>*/                                               (W)
-  <prefix>/<name>*/(cmake|CMake)/                                 (W)
-  <prefix>/(lib/<arch>|lib*|share)/cmake/<name>*/                 (U)
-  <prefix>/(lib/<arch>|lib*|share)/<name>*/                       (U)
-  <prefix>/(lib/<arch>|lib*|share)/<name>*/(cmake|CMake)/         (U)
-  <prefix>/<name>*/(lib/<arch>|lib*|share)/cmake/<name>*/         (W/U)
-  <prefix>/<name>*/(lib/<arch>|lib*|share)/<name>*/               (W/U)
-  <prefix>/<name>*/(lib/<arch>|lib*|share)/<name>*/(cmake|CMake)/ (W/U)
-
-On systems supporting macOS :prop_tgt:`FRAMEWORK` and :prop_tgt:`BUNDLE`, the
-following directories are searched for Frameworks or Application Bundles
-containing a configuration file::
-
-  <prefix>/<name>.framework/Resources/                    (A)
-  <prefix>/<name>.framework/Resources/CMake/              (A)
-  <prefix>/<name>.framework/Versions/*/Resources/         (A)
-  <prefix>/<name>.framework/Versions/*/Resources/CMake/   (A)
-  <prefix>/<name>.app/Contents/Resources/                 (A)
-  <prefix>/<name>.app/Contents/Resources/CMake/           (A)
-
-In all cases the ``<name>`` is treated as case-insensitive and corresponds
-to any of the names specified (``<PackageName>`` or names given by ``NAMES``).
-
-Paths with ``lib/<arch>`` are enabled if the
-:variable:`CMAKE_LIBRARY_ARCHITECTURE` variable is set. ``lib*`` includes one
-or more of the values ``lib64``, ``lib32``, ``libx32`` or ``lib`` (searched in
-that order).
-
-* Paths with ``lib64`` are searched on 64 bit platforms if the
-  :prop_gbl:`FIND_LIBRARY_USE_LIB64_PATHS` property is set to ``TRUE``.
-* Paths with ``lib32`` are searched on 32 bit platforms if the
-  :prop_gbl:`FIND_LIBRARY_USE_LIB32_PATHS` property is set to ``TRUE``.
-* Paths with ``libx32`` are searched on platforms using the x32 ABI
-  if the :prop_gbl:`FIND_LIBRARY_USE_LIBX32_PATHS` property is set to ``TRUE``.
-* The ``lib`` path is always searched.
-
-If ``PATH_SUFFIXES`` is specified, the suffixes are appended to each
-(``W``) or (``U``) directory entry one-by-one.
-
-This set of directories is intended to work in cooperation with
-projects that provide configuration files in their installation trees.
-Directories above marked with (``W``) are intended for installations on
-Windows where the prefix may point at the top of an application's
-installation directory.  Those marked with (``U``) are intended for
-installations on UNIX platforms where the prefix is shared by multiple
-packages.  This is merely a convention, so all (``W``) and (``U``) directories
-are still searched on all platforms.  Directories marked with (``A``) are
-intended for installations on Apple platforms.  The
-:variable:`CMAKE_FIND_FRAMEWORK` and :variable:`CMAKE_FIND_APPBUNDLE`
-variables determine the order of preference.
-
-The set of installation prefixes is constructed using the following
-steps.  If ``NO_DEFAULT_PATH`` is specified all ``NO_*`` options are
-enabled.
-
-1. Search paths specified in the :variable:`<PackageName>_ROOT` CMake
-   variable and the :envvar:`<PackageName>_ROOT` environment variable,
-   where ``<PackageName>`` is the package to be found.
-   The package root variables are maintained as a stack so if
-   called from within a find module, root paths from the parent's find
-   module will also be searched after paths for the current package.
-   This can be skipped if ``NO_PACKAGE_ROOT_PATH`` is passed or by setting
-   the :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` to ``FALSE``.
-   See policy :policy:`CMP0074`.
-
-2. Search paths specified in cmake-specific cache variables.  These
-   are intended to be used on the command line with a ``-DVAR=value``.
-   The values are interpreted as :ref:`semicolon-separated lists <CMake Language Lists>`.
-   This can be skipped if ``NO_CMAKE_PATH`` is passed or by setting the
-   :variable:`CMAKE_FIND_USE_CMAKE_PATH` to ``FALSE``:
-
-   * :variable:`CMAKE_PREFIX_PATH`
-   * :variable:`CMAKE_FRAMEWORK_PATH`
-   * :variable:`CMAKE_APPBUNDLE_PATH`
-
-3. Search paths specified in cmake-specific environment variables.
-   These are intended to be set in the user's shell configuration,
-   and therefore use the host's native path separator
-   (``;`` on Windows and ``:`` on UNIX).
-   This can be skipped if ``NO_CMAKE_ENVIRONMENT_PATH`` is passed or by setting
-   the :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH` to ``FALSE``:
-
-   * ``<PackageName>_DIR``
-   * :envvar:`CMAKE_PREFIX_PATH`
-   * ``CMAKE_FRAMEWORK_PATH``
-   * ``CMAKE_APPBUNDLE_PATH``
-
-4. Search paths specified by the ``HINTS`` option.  These should be paths
-   computed by system introspection, such as a hint provided by the
-   location of another item already found.  Hard-coded guesses should
-   be specified with the ``PATHS`` option.
-
-5. Search the standard system environment variables.  This can be
-   skipped if ``NO_SYSTEM_ENVIRONMENT_PATH`` is passed  or by setting the
-   :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH` to ``FALSE``. Path entries
-   ending in ``/bin`` or ``/sbin`` are automatically converted to their
-   parent directories:
-
-   * ``PATH``
-
-6. Search paths stored in the CMake :ref:`User Package Registry`.
-   This can be skipped if ``NO_CMAKE_PACKAGE_REGISTRY`` is passed or by
-   setting the variable :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`
-   to ``FALSE`` or the deprecated variable
-   :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` to ``TRUE``.
-
-   See the :manual:`cmake-packages(7)` manual for details on the user
-   package registry.
-
-7. Search cmake variables defined in the Platform files for the
-   current system.  This can be skipped if ``NO_CMAKE_SYSTEM_PATH`` is
-   passed or by setting the :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`
-   to ``FALSE``:
-
-   * :variable:`CMAKE_SYSTEM_PREFIX_PATH`
-   * :variable:`CMAKE_SYSTEM_FRAMEWORK_PATH`
-   * :variable:`CMAKE_SYSTEM_APPBUNDLE_PATH`
-
-   The platform paths that these variables contain are locations that
-   typically include installed software. An example being ``/usr/local`` for
-   UNIX based platforms.
-
-8. Search paths stored in the CMake :ref:`System Package Registry`.
-   This can be skipped if ``NO_CMAKE_SYSTEM_PACKAGE_REGISTRY`` is passed
-   or by setting the :variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`
-   variable to ``FALSE`` or the deprecated variable
-   :variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` to ``TRUE``.
-
-   See the :manual:`cmake-packages(7)` manual for details on the system
-   package registry.
-
-9. Search paths specified by the ``PATHS`` option.  These are typically
-   hard-coded guesses.
-
-.. |FIND_XXX| replace:: find_package
-.. |FIND_ARGS_XXX| replace:: <PackageName>
-.. |CMAKE_FIND_ROOT_PATH_MODE_XXX| replace::
-   :variable:`CMAKE_FIND_ROOT_PATH_MODE_PACKAGE`
-
-.. include:: FIND_XXX_ROOT.txt
-.. include:: FIND_XXX_ORDER.txt
-
-By default the value stored in the result variable will be the path at
-which the file is found.  The :variable:`CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS`
-variable may be set to ``TRUE`` before calling ``find_package`` in order
-to resolve symbolic links and store the real path to the file.
-
-Every non-REQUIRED ``find_package`` call can be disabled by setting the
-:variable:`CMAKE_DISABLE_FIND_PACKAGE_<PackageName>` variable to ``TRUE``.
-
-Package File Interface Variables
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When loading a find module or package configuration file ``find_package``
-defines variables to provide information about the call arguments (and
-restores their original state before returning):
-
-``CMAKE_FIND_PACKAGE_NAME``
-  the ``<PackageName>`` which is searched for
-``<PackageName>_FIND_REQUIRED``
-  true if ``REQUIRED`` option was given
-``<PackageName>_FIND_QUIETLY``
-  true if ``QUIET`` option was given
-``<PackageName>_FIND_VERSION``
-  full requested version string
-``<PackageName>_FIND_VERSION_MAJOR``
-  major version if requested, else 0
-``<PackageName>_FIND_VERSION_MINOR``
-  minor version if requested, else 0
-``<PackageName>_FIND_VERSION_PATCH``
-  patch version if requested, else 0
-``<PackageName>_FIND_VERSION_TWEAK``
-  tweak version if requested, else 0
-``<PackageName>_FIND_VERSION_COUNT``
-  number of version components, 0 to 4
-``<PackageName>_FIND_VERSION_EXACT``
-  true if ``EXACT`` option was given
-``<PackageName>_FIND_COMPONENTS``
-  list of requested components
-``<PackageName>_FIND_REQUIRED_<c>``
-  true if component ``<c>`` is required,
-  false if component ``<c>`` is optional
-
-In Module mode the loaded find module is responsible to honor the
-request detailed by these variables; see the find module for details.
-In Config mode ``find_package`` handles ``REQUIRED``, ``QUIET``, and
-``[version]`` options automatically but leaves it to the package
-configuration file to handle components in a way that makes sense
-for the package.  The package configuration file may set
-``<PackageName>_FOUND`` to false to tell ``find_package`` that component
-requirements are not satisfied.
diff --git a/share/cmake-3.18/Help/command/find_path.rst b/share/cmake-3.18/Help/command/find_path.rst
deleted file mode 100644
index 52ffe3c..0000000
--- a/share/cmake-3.18/Help/command/find_path.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-find_path
----------
-
-.. |FIND_XXX| replace:: find_path
-.. |NAMES| replace:: NAMES name1 [name2 ...]
-.. |SEARCH_XXX| replace:: file in a directory
-.. |SEARCH_XXX_DESC| replace:: directory containing the named file
-.. |prefix_XXX_SUBDIR| replace:: ``<prefix>/include``
-.. |entry_XXX_SUBDIR| replace:: ``<entry>/include``
-
-.. |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX| replace::
-   ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
-   is set, and |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX_SUBDIR|
-.. |CMAKE_PREFIX_PATH_XXX| replace::
-   ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
-   is set, and |CMAKE_PREFIX_PATH_XXX_SUBDIR|
-.. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_INCLUDE_PATH`
-.. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH`
-
-.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: The directories in ``PATH`` and ``INCLUDE``.
-.. |SYSTEM_ENVIRONMENT_PATH_WINDOWS_XXX| replace:: On Windows hosts:
-      ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
-      is set, and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|.
-
-.. |CMAKE_SYSTEM_PREFIX_PATH_XXX| replace::
-   ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
-   is set, and |CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR|
-.. |CMAKE_SYSTEM_XXX_PATH| replace::
-   :variable:`CMAKE_SYSTEM_INCLUDE_PATH`
-.. |CMAKE_SYSTEM_XXX_MAC_PATH| replace::
-   :variable:`CMAKE_SYSTEM_FRAMEWORK_PATH`
-
-.. |CMAKE_FIND_ROOT_PATH_MODE_XXX| replace::
-   :variable:`CMAKE_FIND_ROOT_PATH_MODE_INCLUDE`
-
-.. include:: FIND_XXX.txt
-
-When searching for frameworks, if the file is specified as ``A/b.h``, then
-the framework search will look for ``A.framework/Headers/b.h``.  If that
-is found the path will be set to the path to the framework.  CMake
-will convert this to the correct ``-F`` option to include the file.
diff --git a/share/cmake-3.18/Help/command/foreach.rst b/share/cmake-3.18/Help/command/foreach.rst
deleted file mode 100644
index a01a104..0000000
--- a/share/cmake-3.18/Help/command/foreach.rst
+++ /dev/null
@@ -1,127 +0,0 @@
-foreach
--------
-
-Evaluate a group of commands for each value in a list.
-
-.. code-block:: cmake
-
-  foreach(<loop_var> <items>)
-    <commands>
-  endforeach()
-
-where ``<items>`` is a list of items that are separated by
-semicolon or whitespace.
-All commands between ``foreach`` and the matching ``endforeach`` are recorded
-without being invoked.  Once the ``endforeach`` is evaluated, the recorded
-list of commands is invoked once for each item in ``<items>``.
-At the beginning of each iteration the variable ``loop_var`` will be set
-to the value of the current item.
-
-The commands :command:`break` and :command:`continue` provide means to
-escape from the normal control flow.
-
-Per legacy, the :command:`endforeach` command admits
-an optional ``<loop_var>`` argument.
-If used, it must be a verbatim
-repeat of the argument of the opening
-``foreach`` command.
-
-.. code-block:: cmake
-
-  foreach(<loop_var> RANGE <stop>)
-
-In this variant, ``foreach`` iterates over the numbers
-0, 1, ... up to (and including) the nonnegative integer ``<stop>``.
-
-.. code-block:: cmake
-
-  foreach(<loop_var> RANGE <start> <stop> [<step>])
-
-In this variant, ``foreach`` iterates over the numbers from
-``<start>`` up to at most ``<stop>`` in steps of ``<step>``.
-If ``<step>`` is not specified, then the step size is 1.
-The three arguments ``<start>`` ``<stop>`` ``<step>`` must
-all be nonnegative integers, and ``<stop>`` must not be
-smaller than ``<start>``; otherwise you enter the danger zone
-of undocumented behavior that may change in future releases.
-
-.. code-block:: cmake
-
-  foreach(<loop_var> IN [LISTS [<lists>]] [ITEMS [<items>]])
-
-In this variant, ``<lists>`` is a whitespace or semicolon
-separated list of list-valued variables. The ``foreach``
-command iterates over each item in each given list.
-The ``<items>`` following the ``ITEMS`` keyword are processed
-as in the first variant of the ``foreach`` command.
-The forms ``LISTS A`` and ``ITEMS ${A}`` are
-equivalent.
-
-The following example shows how the ``LISTS`` option is
-processed:
-
-.. code-block:: cmake
-
-  set(A 0;1)
-  set(B 2 3)
-  set(C "4 5")
-  set(D 6;7 8)
-  set(E "")
-  foreach(X IN LISTS A B C D E)
-      message(STATUS "X=${X}")
-  endforeach()
-
-yields
-::
-
-  -- X=0
-  -- X=1
-  -- X=2
-  -- X=3
-  -- X=4 5
-  -- X=6
-  -- X=7
-  -- X=8
-
-
-.. code-block:: cmake
-
-  foreach(<loop_var>... IN ZIP_LISTS <lists>)
-
-In this variant, ``<lists>`` is a whitespace or semicolon
-separated list of list-valued variables. The ``foreach``
-command iterates over each list simultaneously setting the
-iteration variables as follows:
-
-- if the only ``loop_var`` given, then it sets a series of
-  ``loop_var_N`` variables to the current item from the
-  corresponding list;
-- if multiple variable names passed, their count should match
-  the lists variables count;
-- if any of the lists are shorter, the corresponding iteration
-  variable is not defined for the current iteration.
-
-.. code-block:: cmake
-
-  list(APPEND English one two three four)
-  list(APPEND Bahasa satu dua tiga)
-
-  foreach(num IN ZIP_LISTS English Bahasa)
-      message(STATUS "num_0=${num_0}, num_1=${num_1}")
-  endforeach()
-
-  foreach(en ba IN ZIP_LISTS English Bahasa)
-      message(STATUS "en=${en}, ba=${ba}")
-  endforeach()
-
-yields
-::
-
-  -- num_0=one, num_1=satu
-  -- num_0=two, num_1=dua
-  -- num_0=three, num_1=tiga
-  -- num_0=four, num_1=
-  -- en=one, ba=satu
-  -- en=two, ba=dua
-  -- en=three, ba=tiga
-  -- en=four, ba=
diff --git a/share/cmake-3.18/Help/command/function.rst b/share/cmake-3.18/Help/command/function.rst
deleted file mode 100644
index 7a9b907..0000000
--- a/share/cmake-3.18/Help/command/function.rst
+++ /dev/null
@@ -1,74 +0,0 @@
-function
---------
-
-Start recording a function for later invocation as a command.
-
-.. code-block:: cmake
-
-  function(<name> [<arg1> ...])
-    <commands>
-  endfunction()
-
-Defines a function named ``<name>`` that takes arguments named
-``<arg1>``, ...  The ``<commands>`` in the function definition
-are recorded; they are not executed until the function is invoked.
-
-Per legacy, the :command:`endfunction` command admits an optional
-``<name>`` argument. If used, it must be a verbatim repeat of the
-argument of the opening ``function`` command.
-
-A function opens a new scope: see :command:`set(var PARENT_SCOPE)` for
-details.
-
-See the :command:`cmake_policy()` command documentation for the behavior
-of policies inside functions.
-
-See the :command:`macro()` command documentation for differences
-between CMake functions and macros.
-
-Invocation
-^^^^^^^^^^
-
-The function invocation is case-insensitive. A function defined as
-
-.. code-block:: cmake
-
-  function(foo)
-    <commands>
-  endfunction()
-
-can be invoked through any of
-
-.. code-block:: cmake
-
-  foo()
-  Foo()
-  FOO()
-  cmake_language(CALL foo)
-
-and so on. However, it is strongly recommended to stay with the
-case chosen in the function definition. Typically functions use
-all-lowercase names.
-
-The :command:`cmake_language(CALL ...)` command can also be used to
-invoke the function.
-
-Arguments
-^^^^^^^^^
-
-When the function is invoked, the recorded ``<commands>`` are first
-modified by replacing formal parameters (``${arg1}``, ...) with the
-arguments passed, and then invoked as normal commands.
-
-In addition to referencing the formal parameters you can reference the
-``ARGC`` variable which will be set to the number of arguments passed
-into the function as well as ``ARGV0``, ``ARGV1``, ``ARGV2``, ...  which
-will have the actual values of the arguments passed in.  This facilitates
-creating functions with optional arguments.
-
-Furthermore, ``ARGV`` holds the list of all arguments given to the
-function and ``ARGN`` holds the list of arguments past the last expected
-argument.  Referencing to ``ARGV#`` arguments beyond ``ARGC`` have
-undefined behavior.  Checking that ``ARGC`` is greater than ``#`` is
-the only way to ensure that ``ARGV#`` was passed to the function as an
-extra argument.
diff --git a/share/cmake-3.18/Help/command/get_directory_property.rst b/share/cmake-3.18/Help/command/get_directory_property.rst
deleted file mode 100644
index 218efa9..0000000
--- a/share/cmake-3.18/Help/command/get_directory_property.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-get_directory_property
-----------------------
-
-Get a property of ``DIRECTORY`` scope.
-
-.. code-block:: cmake
-
-  get_directory_property(<variable> [DIRECTORY <dir>] <prop-name>)
-
-Stores a property of directory scope in the named ``<variable>``.
-The ``DIRECTORY`` argument specifies another directory from which
-to retrieve the property value instead of the current directory.
-The specified directory must have already been traversed by CMake.
-
-If the property is not defined for the nominated directory scope,
-an empty string is returned.  In the case of ``INHERITED`` properties,
-if the property is not found for the nominated directory scope,
-the search will chain to a parent scope as described for the
-:command:`define_property` command.
-
-.. code-block:: cmake
-
-  get_directory_property(<variable> [DIRECTORY <dir>]
-                         DEFINITION <var-name>)
-
-Get a variable definition from a directory.  This form is useful to
-get a variable definition from another directory.
-
-See also the more general :command:`get_property` command.
diff --git a/share/cmake-3.18/Help/command/get_filename_component.rst b/share/cmake-3.18/Help/command/get_filename_component.rst
deleted file mode 100644
index 9bbf877..0000000
--- a/share/cmake-3.18/Help/command/get_filename_component.rst
+++ /dev/null
@@ -1,55 +0,0 @@
-get_filename_component
-----------------------
-
-Get a specific component of a full filename.
-
-.. code-block:: cmake
-
-  get_filename_component(<var> <FileName> <mode> [CACHE])
-
-Sets ``<var>`` to a component of ``<FileName>``, where ``<mode>`` is one of:
-
-::
-
- DIRECTORY = Directory without file name
- NAME      = File name without directory
- EXT       = File name longest extension (.b.c from d/a.b.c)
- NAME_WE   = File name without directory or longest extension
- LAST_EXT  = File name last extension (.c from d/a.b.c)
- NAME_WLE  = File name without directory or last extension
- PATH      = Legacy alias for DIRECTORY (use for CMake <= 2.8.11)
-
-Paths are returned with forward slashes and have no trailing slashes.
-If the optional ``CACHE`` argument is specified, the result variable is
-added to the cache.
-
-.. code-block:: cmake
-
-  get_filename_component(<var> <FileName> <mode> [BASE_DIR <dir>] [CACHE])
-
-Sets ``<var>`` to the absolute path of ``<FileName>``, where ``<mode>`` is one
-of:
-
-::
-
- ABSOLUTE  = Full path to file
- REALPATH  = Full path to existing file with symlinks resolved
-
-If the provided ``<FileName>`` is a relative path, it is evaluated relative
-to the given base directory ``<dir>``.  If no base directory is
-provided, the default base directory will be
-:variable:`CMAKE_CURRENT_SOURCE_DIR`.
-
-Paths are returned with forward slashes and have no trailing slashes.  If the
-optional ``CACHE`` argument is specified, the result variable is added to the
-cache.
-
-.. code-block:: cmake
-
-  get_filename_component(<var> <FileName> PROGRAM [PROGRAM_ARGS <arg_var>] [CACHE])
-
-The program in ``<FileName>`` will be found in the system search path or
-left as a full path.  If ``PROGRAM_ARGS`` is present with ``PROGRAM``, then
-any command-line arguments present in the ``<FileName>`` string are split
-from the program name and stored in ``<arg_var>``.  This is used to
-separate a program name from its arguments in a command line string.
diff --git a/share/cmake-3.18/Help/command/get_property.rst b/share/cmake-3.18/Help/command/get_property.rst
deleted file mode 100644
index 0602518..0000000
--- a/share/cmake-3.18/Help/command/get_property.rst
+++ /dev/null
@@ -1,85 +0,0 @@
-get_property
-------------
-
-Get a property.
-
-.. code-block:: cmake
-
-  get_property(<variable>
-               <GLOBAL             |
-                DIRECTORY [<dir>]  |
-                TARGET    <target> |
-                SOURCE    <source> |
-                          [DIRECTORY <dir> | TARGET_DIRECTORY <target>] |
-                INSTALL   <file>   |
-                TEST      <test>   |
-                CACHE     <entry>  |
-                VARIABLE           >
-               PROPERTY <name>
-               [SET | DEFINED | BRIEF_DOCS | FULL_DOCS])
-
-Gets one property from one object in a scope.
-
-The first argument specifies the variable in which to store the result.
-The second argument determines the scope from which to get the property.
-It must be one of the following:
-
-``GLOBAL``
-  Scope is unique and does not accept a name.
-
-``DIRECTORY``
-  Scope defaults to the current directory but another
-  directory (already processed by CMake) may be named by the
-  full or relative path ``<dir>``.
-  See also the :command:`get_directory_property` command.
-
-``TARGET``
-  Scope must name one existing target.
-  See also the :command:`get_target_property` command.
-
-``SOURCE``
-  Scope must name one source file.  By default, the source file's property
-  will be read from the current source directory's scope, but this can be
-  overridden with one of the following sub-options:
-
-  ``DIRECTORY <dir>``
-    The source file property will be read from the ``<dir>`` directory's
-    scope.  CMake must already know about that source directory, either by
-    having added it through a call to :command:`add_subdirectory` or ``<dir>``
-    being the top level source directory.  Relative paths are treated as
-    relative to the current source directory.
-
-  ``TARGET_DIRECTORY <target>``
-    The source file property will be read from the directory scope in which
-    ``<target>`` was created (``<target>`` must therefore already exist).
-
-  See also the :command:`get_source_file_property` command.
-
-``INSTALL``
-  Scope must name one installed file path.
-
-``TEST``
-  Scope must name one existing test.
-  See also the :command:`get_test_property` command.
-
-``CACHE``
-  Scope must name one cache entry.
-
-``VARIABLE``
-  Scope is unique and does not accept a name.
-
-The required ``PROPERTY`` option is immediately followed by the name of
-the property to get.  If the property is not set an empty value is
-returned, although some properties support inheriting from a parent scope
-if defined to behave that way (see :command:`define_property`).
-
-If the ``SET`` option is given the variable is set to a boolean
-value indicating whether the property has been set.  If the ``DEFINED``
-option is given the variable is set to a boolean value indicating
-whether the property has been defined such as with the
-:command:`define_property` command.
-
-If ``BRIEF_DOCS`` or ``FULL_DOCS`` is given then the variable is set to a
-string containing documentation for the requested property.  If
-documentation is requested for a property that has not been defined
-``NOTFOUND`` is returned.
diff --git a/share/cmake-3.18/Help/command/get_source_file_property.rst b/share/cmake-3.18/Help/command/get_source_file_property.rst
deleted file mode 100644
index 76ed776..0000000
--- a/share/cmake-3.18/Help/command/get_source_file_property.rst
+++ /dev/null
@@ -1,40 +0,0 @@
-get_source_file_property
-------------------------
-
-Get a property for a source file.
-
-.. code-block:: cmake
-
-  get_source_file_property(<variable> <file>
-                           [DIRECTORY <dir> | TARGET_DIRECTORY <target>]
-                           <property>)
-
-Gets a property from a source file.  The value of the property is
-stored in the specified ``<variable>``.  If the source property is not found,
-the behavior depends on whether it has been defined to be an ``INHERITED``
-property or not (see :command:`define_property`).  Non-inherited properties
-will set ``variable`` to ``NOTFOUND``, whereas inherited properties will search
-the relevant parent scope as described for the :command:`define_property`
-command and if still unable to find the property, ``variable`` will be set to
-an empty string.
-
-By default, the source file's property will be read from the current source
-directory's scope, but this can be overridden with one of the following
-sub-options:
-
-``DIRECTORY <dir>``
-  The source file property will be read from the ``<dir>`` directory's
-  scope.  CMake must already know about that source directory, either by
-  having added it through a call to :command:`add_subdirectory` or ``<dir>``
-  being the top level source directory.  Relative paths are treated as
-  relative to the current source directory.
-
-``TARGET_DIRECTORY <target>``
-  The source file property will be read from the directory scope in which
-  ``<target>`` was created (``<target>`` must therefore already exist).
-
-Use :command:`set_source_files_properties` to set property values.  Source
-file properties usually control how the file is built. One property that is
-always there is :prop_sf:`LOCATION`.
-
-See also the more general :command:`get_property` command.
diff --git a/share/cmake-3.18/Help/command/if.rst b/share/cmake-3.18/Help/command/if.rst
deleted file mode 100644
index be992df..0000000
--- a/share/cmake-3.18/Help/command/if.rst
+++ /dev/null
@@ -1,280 +0,0 @@
-if
---
-
-Conditionally execute a group of commands.
-
-Synopsis
-^^^^^^^^
-
-.. code-block:: cmake
-
-  if(<condition>)
-    <commands>
-  elseif(<condition>) # optional block, can be repeated
-    <commands>
-  else()              # optional block
-    <commands>
-  endif()
-
-Evaluates the ``condition`` argument of the ``if`` clause according to the
-`Condition syntax`_ described below. If the result is true, then the
-``commands`` in the ``if`` block are executed.
-Otherwise, optional ``elseif`` blocks are processed in the same way.
-Finally, if no ``condition`` is true, ``commands`` in the optional ``else``
-block are executed.
-
-Per legacy, the :command:`else` and :command:`endif` commands admit
-an optional ``<condition>`` argument.
-If used, it must be a verbatim
-repeat of the argument of the opening
-``if`` command.
-
-.. _`Condition Syntax`:
-
-Condition Syntax
-^^^^^^^^^^^^^^^^
-
-The following syntax applies to the ``condition`` argument of
-the ``if``, ``elseif`` and :command:`while` clauses.
-
-Compound conditions are evaluated in the following order of precedence:
-Innermost parentheses are evaluated first. Next come unary tests such
-as ``EXISTS``, ``COMMAND``, and ``DEFINED``.  Then binary tests such as
-``EQUAL``, ``LESS``, ``LESS_EQUAL``, ``GREATER``, ``GREATER_EQUAL``,
-``STREQUAL``, ``STRLESS``, ``STRLESS_EQUAL``, ``STRGREATER``,
-``STRGREATER_EQUAL``, ``VERSION_EQUAL``, ``VERSION_LESS``,
-``VERSION_LESS_EQUAL``, ``VERSION_GREATER``, ``VERSION_GREATER_EQUAL``,
-and ``MATCHES``.  Then the boolean operators in the order ``NOT``,  ``AND``,
-and finally ``OR``.
-
-Possible conditions are:
-
-``if(<constant>)``
- True if the constant is ``1``, ``ON``, ``YES``, ``TRUE``, ``Y``,
- or a non-zero number.  False if the constant is ``0``, ``OFF``,
- ``NO``, ``FALSE``, ``N``, ``IGNORE``, ``NOTFOUND``, the empty string,
- or ends in the suffix ``-NOTFOUND``.  Named boolean constants are
- case-insensitive.  If the argument is not one of these specific
- constants, it is treated as a variable or string and the following
- signature is used.
-
-``if(<variable|string>)``
- True if given a variable that is defined to a value that is not a false
- constant.  False otherwise.  (Note macro arguments are not variables.)
-
-``if(NOT <condition>)``
- True if the condition is not true.
-
-``if(<cond1> AND <cond2>)``
- True if both conditions would be considered true individually.
-
-``if(<cond1> OR <cond2>)``
- True if either condition would be considered true individually.
-
-``if(COMMAND command-name)``
- True if the given name is a command, macro or function that can be
- invoked.
-
-``if(POLICY policy-id)``
- True if the given name is an existing policy (of the form ``CMP<NNNN>``).
-
-``if(TARGET target-name)``
- True if the given name is an existing logical target name created
- by a call to the :command:`add_executable`, :command:`add_library`,
- or :command:`add_custom_target` command that has already been invoked
- (in any directory).
-
-``if(TEST test-name)``
- True if the given name is an existing test name created by the
- :command:`add_test` command.
-
-``if(EXISTS path-to-file-or-directory)``
- True if the named file or directory exists.  Behavior is well-defined
- only for full paths. Resolves symbolic links, i.e. if the named file or
- directory is a symbolic link, returns true if the target of the
- symbolic link exists.
-
-``if(file1 IS_NEWER_THAN file2)``
- True if ``file1`` is newer than ``file2`` or if one of the two files doesn't
- exist.  Behavior is well-defined only for full paths.  If the file
- time stamps are exactly the same, an ``IS_NEWER_THAN`` comparison returns
- true, so that any dependent build operations will occur in the event
- of a tie.  This includes the case of passing the same file name for
- both file1 and file2.
-
-``if(IS_DIRECTORY path-to-directory)``
- True if the given name is a directory.  Behavior is well-defined only
- for full paths.
-
-``if(IS_SYMLINK file-name)``
- True if the given name is a symbolic link.  Behavior is well-defined
- only for full paths.
-
-``if(IS_ABSOLUTE path)``
- True if the given path is an absolute path.
-
-``if(<variable|string> MATCHES regex)``
- True if the given string or variable's value matches the given regular
- condition.  See :ref:`Regex Specification` for regex format.
- ``()`` groups are captured in :variable:`CMAKE_MATCH_<n>` variables.
-
-``if(<variable|string> LESS <variable|string>)``
- True if the given string or variable's value is a valid number and less
- than that on the right.
-
-``if(<variable|string> GREATER <variable|string>)``
- True if the given string or variable's value is a valid number and greater
- than that on the right.
-
-``if(<variable|string> EQUAL <variable|string>)``
- True if the given string or variable's value is a valid number and equal
- to that on the right.
-
-``if(<variable|string> LESS_EQUAL <variable|string>)``
- True if the given string or variable's value is a valid number and less
- than or equal to that on the right.
-
-``if(<variable|string> GREATER_EQUAL <variable|string>)``
- True if the given string or variable's value is a valid number and greater
- than or equal to that on the right.
-
-``if(<variable|string> STRLESS <variable|string>)``
- True if the given string or variable's value is lexicographically less
- than the string or variable on the right.
-
-``if(<variable|string> STRGREATER <variable|string>)``
- True if the given string or variable's value is lexicographically greater
- than the string or variable on the right.
-
-``if(<variable|string> STREQUAL <variable|string>)``
- True if the given string or variable's value is lexicographically equal
- to the string or variable on the right.
-
-``if(<variable|string> STRLESS_EQUAL <variable|string>)``
- True if the given string or variable's value is lexicographically less
- than or equal to the string or variable on the right.
-
-``if(<variable|string> STRGREATER_EQUAL <variable|string>)``
- True if the given string or variable's value is lexicographically greater
- than or equal to the string or variable on the right.
-
-``if(<variable|string> VERSION_LESS <variable|string>)``
- Component-wise integer version number comparison (version format is
- ``major[.minor[.patch[.tweak]]]``, omitted components are treated as zero).
- Any non-integer version component or non-integer trailing part of a version
- component effectively truncates the string at that point.
-
-``if(<variable|string> VERSION_GREATER <variable|string>)``
- Component-wise integer version number comparison (version format is
- ``major[.minor[.patch[.tweak]]]``, omitted components are treated as zero).
- Any non-integer version component or non-integer trailing part of a version
- component effectively truncates the string at that point.
-
-``if(<variable|string> VERSION_EQUAL <variable|string>)``
- Component-wise integer version number comparison (version format is
- ``major[.minor[.patch[.tweak]]]``, omitted components are treated as zero).
- Any non-integer version component or non-integer trailing part of a version
- component effectively truncates the string at that point.
-
-``if(<variable|string> VERSION_LESS_EQUAL <variable|string>)``
- Component-wise integer version number comparison (version format is
- ``major[.minor[.patch[.tweak]]]``, omitted components are treated as zero).
- Any non-integer version component or non-integer trailing part of a version
- component effectively truncates the string at that point.
-
-``if(<variable|string> VERSION_GREATER_EQUAL <variable|string>)``
- Component-wise integer version number comparison (version format is
- ``major[.minor[.patch[.tweak]]]``, omitted components are treated as zero).
- Any non-integer version component or non-integer trailing part of a version
- component effectively truncates the string at that point.
-
-``if(<variable|string> IN_LIST <variable>)``
- True if the given element is contained in the named list variable.
-
-``if(DEFINED <name>|CACHE{<name>}|ENV{<name>})``
- True if a variable, cache variable or environment variable
- with given ``<name>`` is defined. The value of the variable
- does not matter. Note that macro arguments are not variables.
-
-``if((condition) AND (condition OR (condition)))``
- The conditions inside the parenthesis are evaluated first and then
- the remaining condition is evaluated as in the previous examples.
- Where there are nested parenthesis the innermost are evaluated as part
- of evaluating the condition that contains them.
-
-Variable Expansion
-^^^^^^^^^^^^^^^^^^
-
-The if command was written very early in CMake's history, predating
-the ``${}`` variable evaluation syntax, and for convenience evaluates
-variables named by its arguments as shown in the above signatures.
-Note that normal variable evaluation with ``${}`` applies before the if
-command even receives the arguments.  Therefore code like
-
-.. code-block:: cmake
-
- set(var1 OFF)
- set(var2 "var1")
- if(${var2})
-
-appears to the if command as
-
-.. code-block:: cmake
-
-  if(var1)
-
-and is evaluated according to the ``if(<variable>)`` case documented
-above.  The result is ``OFF`` which is false.  However, if we remove the
-``${}`` from the example then the command sees
-
-.. code-block:: cmake
-
-  if(var2)
-
-which is true because ``var2`` is defined to ``var1`` which is not a false
-constant.
-
-Automatic evaluation applies in the other cases whenever the
-above-documented condition syntax accepts ``<variable|string>``:
-
-* The left hand argument to ``MATCHES`` is first checked to see if it is
-  a defined variable, if so the variable's value is used, otherwise the
-  original value is used.
-
-* If the left hand argument to ``MATCHES`` is missing it returns false
-  without error
-
-* Both left and right hand arguments to ``LESS``, ``GREATER``, ``EQUAL``,
-  ``LESS_EQUAL``, and ``GREATER_EQUAL``, are independently tested to see if
-  they are defined variables, if so their defined values are used otherwise
-  the original value is used.
-
-* Both left and right hand arguments to ``STRLESS``, ``STRGREATER``,
-  ``STREQUAL``, ``STRLESS_EQUAL``, and ``STRGREATER_EQUAL`` are independently
-  tested to see if they are defined variables, if so their defined values are
-  used otherwise the original value is used.
-
-* Both left and right hand arguments to ``VERSION_LESS``,
-  ``VERSION_GREATER``, ``VERSION_EQUAL``, ``VERSION_LESS_EQUAL``, and
-  ``VERSION_GREATER_EQUAL`` are independently tested to see if they are defined
-  variables, if so their defined values are used otherwise the original value
-  is used.
-
-* The right hand argument to ``NOT`` is tested to see if it is a boolean
-  constant, if so the value is used, otherwise it is assumed to be a
-  variable and it is dereferenced.
-
-* The left and right hand arguments to ``AND`` and ``OR`` are independently
-  tested to see if they are boolean constants, if so they are used as
-  such, otherwise they are assumed to be variables and are dereferenced.
-
-To prevent ambiguity, potential variable or keyword names can be
-specified in a :ref:`Quoted Argument` or a :ref:`Bracket Argument`.
-A quoted or bracketed variable or keyword will be interpreted as a
-string and not dereferenced or interpreted.
-See policy :policy:`CMP0054`.
-
-There is no automatic evaluation for environment or cache
-:ref:`Variable References`.  Their values must be referenced as
-``$ENV{<name>}`` or ``$CACHE{<name>}`` wherever the above-documented
-condition syntax accepts ``<variable|string>``.
diff --git a/share/cmake-3.18/Help/command/include_external_msproject.rst b/share/cmake-3.18/Help/command/include_external_msproject.rst
deleted file mode 100644
index 540a13a..0000000
--- a/share/cmake-3.18/Help/command/include_external_msproject.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-include_external_msproject
---------------------------
-
-Include an external Microsoft project file in a workspace.
-
-.. code-block:: cmake
-
-  include_external_msproject(projectname location
-                             [TYPE projectTypeGUID]
-                             [GUID projectGUID]
-                             [PLATFORM platformName]
-                             dep1 dep2 ...)
-
-Includes an external Microsoft project in the generated workspace
-file.  Currently does nothing on UNIX.  This will create a target
-named ``[projectname]``.  This can be used in the :command:`add_dependencies`
-command to make things depend on the external project.
-
-``TYPE``, ``GUID`` and ``PLATFORM`` are optional parameters that allow one to
-specify the type of project, id (``GUID``) of the project and the name of
-the target platform.  This is useful for projects requiring values
-other than the default (e.g.  WIX projects).
-
-If the imported project has different configuration names than the
-current project, set the :prop_tgt:`MAP_IMPORTED_CONFIG_<CONFIG>`
-target property to specify the mapping.
diff --git a/share/cmake-3.18/Help/command/include_guard.rst b/share/cmake-3.18/Help/command/include_guard.rst
deleted file mode 100644
index 877aa86..0000000
--- a/share/cmake-3.18/Help/command/include_guard.rst
+++ /dev/null
@@ -1,46 +0,0 @@
-include_guard
--------------
-
-Provides an include guard for the file currently being processed by CMake.
-
-.. code-block:: cmake
-
-  include_guard([DIRECTORY|GLOBAL])
-
-Sets up an include guard for the current CMake file (see the
-:variable:`CMAKE_CURRENT_LIST_FILE` variable documentation).
-
-CMake will end its processing of the current file at the location of the
-:command:`include_guard` command if the current file has already been
-processed for the applicable scope (see below). This provides functionality
-similar to the include guards commonly used in source headers or to the
-``#pragma once`` directive. If the current file has been processed previously
-for the applicable scope, the effect is as though :command:`return` had been
-called. Do not call this command from inside a function being defined within
-the current file.
-
-An optional argument specifying the scope of the guard may be provided.
-Possible values for the option are:
-
-``DIRECTORY``
-  The include guard applies within the current directory and below. The file
-  will only be included once within this directory scope, but may be included
-  again by other files outside of this directory (i.e. a parent directory or
-  another directory not pulled in by :command:`add_subdirectory` or
-  :command:`include` from the current file or its children).
-
-``GLOBAL``
-  The include guard applies globally to the whole build. The current file
-  will only be included once regardless of the scope.
-
-If no arguments given, ``include_guard`` has the same scope as a variable,
-meaning that the include guard effect is isolated by the most recent
-function scope or current directory if no inner function scopes exist.
-In this case the command behavior is the same as:
-
-.. code-block:: cmake
-
-  if(__CURRENT_FILE_VAR__)
-    return()
-  endif()
-  set(__CURRENT_FILE_VAR__ TRUE)
diff --git a/share/cmake-3.18/Help/command/install.rst b/share/cmake-3.18/Help/command/install.rst
deleted file mode 100644
index c8df7d9..0000000
--- a/share/cmake-3.18/Help/command/install.rst
+++ /dev/null
@@ -1,733 +0,0 @@
-install
--------
-
-Specify rules to run at install time.
-
-Synopsis
-^^^^^^^^
-
-.. parsed-literal::
-
-  install(`TARGETS`_ <target>... [...])
-  install({`FILES`_ | `PROGRAMS`_} <file>... [...])
-  install(`DIRECTORY`_ <dir>... [...])
-  install(`SCRIPT`_ <file> [...])
-  install(`CODE`_ <code> [...])
-  install(`EXPORT`_ <export-name> [...])
-
-Introduction
-^^^^^^^^^^^^
-
-This command generates installation rules for a project.  Install rules
-specified by calls to the ``install()`` command within a source directory
-are executed in order during installation.  Install rules in subdirectories
-added by calls to the :command:`add_subdirectory` command are interleaved
-with those in the parent directory to run in the order declared (see
-policy :policy:`CMP0082`).
-
-There are multiple signatures for this command.  Some of them define
-installation options for files and targets.  Options common to
-multiple signatures are covered here but they are valid only for
-signatures that specify them.  The common options are:
-
-``DESTINATION``
-  Specify the directory on disk to which a file will be installed.
-  Arguments can be relative or absolute paths.
-
-  If a relative path is given it is interpreted relative to the value
-  of the :variable:`CMAKE_INSTALL_PREFIX` variable.
-  The prefix can be relocated at install time using the ``DESTDIR``
-  mechanism explained in the :variable:`CMAKE_INSTALL_PREFIX` variable
-  documentation.
-
-  If an absolute path (with a leading slash or drive letter) is given
-  it is used verbatim.
-
-  As absolute paths are not supported by :manual:`cpack <cpack(1)>` installer
-  generators, it is preferable to use relative paths throughout.
-
-``PERMISSIONS``
-  Specify permissions for installed files.  Valid permissions are
-  ``OWNER_READ``, ``OWNER_WRITE``, ``OWNER_EXECUTE``, ``GROUP_READ``,
-  ``GROUP_WRITE``, ``GROUP_EXECUTE``, ``WORLD_READ``, ``WORLD_WRITE``,
-  ``WORLD_EXECUTE``, ``SETUID``, and ``SETGID``.  Permissions that do
-  not make sense on certain platforms are ignored on those platforms.
-
-``CONFIGURATIONS``
-  Specify a list of build configurations for which the install rule
-  applies (Debug, Release, etc.). Note that the values specified for
-  this option only apply to options listed AFTER the ``CONFIGURATIONS``
-  option. For example, to set separate install paths for the Debug and
-  Release configurations, do the following:
-
-  .. code-block:: cmake
-
-    install(TARGETS target
-            CONFIGURATIONS Debug
-            RUNTIME DESTINATION Debug/bin)
-    install(TARGETS target
-            CONFIGURATIONS Release
-            RUNTIME DESTINATION Release/bin)
-
-  Note that ``CONFIGURATIONS`` appears BEFORE ``RUNTIME DESTINATION``.
-
-``COMPONENT``
-  Specify an installation component name with which the install rule
-  is associated, such as "runtime" or "development".  During
-  component-specific installation only install rules associated with
-  the given component name will be executed.  During a full installation
-  all components are installed unless marked with ``EXCLUDE_FROM_ALL``.
-  If ``COMPONENT`` is not provided a default component "Unspecified" is
-  created.  The default component name may be controlled with the
-  :variable:`CMAKE_INSTALL_DEFAULT_COMPONENT_NAME` variable.
-
-``EXCLUDE_FROM_ALL``
-  Specify that the file is excluded from a full installation and only
-  installed as part of a component-specific installation
-
-``RENAME``
-  Specify a name for an installed file that may be different from the
-  original file.  Renaming is allowed only when a single file is
-  installed by the command.
-
-``OPTIONAL``
-  Specify that it is not an error if the file to be installed does
-  not exist.
-
-Command signatures that install files may print messages during
-installation.  Use the :variable:`CMAKE_INSTALL_MESSAGE` variable
-to control which messages are printed.
-
-Many of the ``install()`` variants implicitly create the directories
-containing the installed files. If
-:variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` is set, these
-directories will be created with the permissions specified. Otherwise,
-they will be created according to the uname rules on Unix-like platforms.
-Windows platforms are unaffected.
-
-Installing Targets
-^^^^^^^^^^^^^^^^^^
-
-.. _`install(TARGETS)`:
-.. _TARGETS:
-
-.. code-block:: cmake
-
-  install(TARGETS targets... [EXPORT <export-name>]
-          [[ARCHIVE|LIBRARY|RUNTIME|OBJECTS|FRAMEWORK|BUNDLE|
-            PRIVATE_HEADER|PUBLIC_HEADER|RESOURCE]
-           [DESTINATION <dir>]
-           [PERMISSIONS permissions...]
-           [CONFIGURATIONS [Debug|Release|...]]
-           [COMPONENT <component>]
-           [NAMELINK_COMPONENT <component>]
-           [OPTIONAL] [EXCLUDE_FROM_ALL]
-           [NAMELINK_ONLY|NAMELINK_SKIP]
-          ] [...]
-          [INCLUDES DESTINATION [<dir> ...]]
-          )
-
-The ``TARGETS`` form specifies rules for installing targets from a
-project.  There are several kinds of target :ref:`Output Artifacts`
-that may be installed:
-
-``ARCHIVE``
-  Target artifacts of this kind include:
-
-  * *Static libraries*
-    (except on macOS when marked as ``FRAMEWORK``, see below);
-  * *DLL import libraries*
-    (on all Windows-based systems including Cygwin; they have extension
-    ``.lib``, in contrast to the ``.dll`` libraries that go to ``RUNTIME``);
-  * On AIX, the *linker import file* created for executables with
-    :prop_tgt:`ENABLE_EXPORTS` enabled.
-
-``LIBRARY``
-  Target artifacts of this kind include:
-
-  * *Shared libraries*, except
-
-    - DLLs (these go to ``RUNTIME``, see below),
-    - on macOS when marked as ``FRAMEWORK`` (see below).
-
-``RUNTIME``
-  Target artifacts of this kind include:
-
-  * *Executables*
-    (except on macOS when marked as ``MACOSX_BUNDLE``, see ``BUNDLE`` below);
-  * DLLs (on all Windows-based systems including Cygwin; note that the
-    accompanying import libraries are of kind ``ARCHIVE``).
-
-``OBJECTS``
-  Object files associated with *object libraries*.
-
-``FRAMEWORK``
-  Both static and shared libraries marked with the ``FRAMEWORK``
-  property are treated as ``FRAMEWORK`` targets on macOS.
-
-``BUNDLE``
-  Executables marked with the :prop_tgt:`MACOSX_BUNDLE` property are treated as
-  ``BUNDLE`` targets on macOS.
-
-``PUBLIC_HEADER``
-  Any :prop_tgt:`PUBLIC_HEADER` files associated with a library are installed in
-  the destination specified by the ``PUBLIC_HEADER`` argument on non-Apple
-  platforms. Rules defined by this argument are ignored for :prop_tgt:`FRAMEWORK`
-  libraries on Apple platforms because the associated files are installed
-  into the appropriate locations inside the framework folder. See
-  :prop_tgt:`PUBLIC_HEADER` for details.
-
-``PRIVATE_HEADER``
-  Similar to ``PUBLIC_HEADER``, but for ``PRIVATE_HEADER`` files. See
-  :prop_tgt:`PRIVATE_HEADER` for details.
-
-``RESOURCE``
-  Similar to ``PUBLIC_HEADER`` and ``PRIVATE_HEADER``, but for
-  ``RESOURCE`` files. See :prop_tgt:`RESOURCE` for details.
-
-For each of these arguments given, the arguments following them only apply
-to the target or file type specified in the argument. If none is given, the
-installation properties apply to all target types. If only one is given then
-only targets of that type will be installed (which can be used to install
-just a DLL or just an import library.)
-
-For regular executables, static libraries and shared libraries, the
-``DESTINATION`` argument is not required.  For these target types, when
-``DESTINATION`` is omitted, a default destination will be taken from the
-appropriate variable from :module:`GNUInstallDirs`, or set to a built-in
-default value if that variable is not defined.  The same is true for the
-public and private headers associated with the installed targets through the
-:prop_tgt:`PUBLIC_HEADER` and :prop_tgt:`PRIVATE_HEADER` target properties.
-A destination must always be provided for module libraries, Apple bundles and
-frameworks.  A destination can be omitted for interface and object libraries,
-but they are handled differently (see the discussion of this topic toward the
-end of this section).
-
-The following table shows the target types with their associated variables and
-built-in defaults that apply when no destination is given:
-
-================== =============================== ======================
-   Target Type         GNUInstallDirs Variable        Built-In Default
-================== =============================== ======================
-``RUNTIME``        ``${CMAKE_INSTALL_BINDIR}``     ``bin``
-``LIBRARY``        ``${CMAKE_INSTALL_LIBDIR}``     ``lib``
-``ARCHIVE``        ``${CMAKE_INSTALL_LIBDIR}``     ``lib``
-``PRIVATE_HEADER`` ``${CMAKE_INSTALL_INCLUDEDIR}`` ``include``
-``PUBLIC_HEADER``  ``${CMAKE_INSTALL_INCLUDEDIR}`` ``include``
-================== =============================== ======================
-
-Projects wishing to follow the common practice of installing headers into a
-project-specific subdirectory will need to provide a destination rather than
-rely on the above.
-
-To make packages compliant with distribution filesystem layout policies, if
-projects must specify a ``DESTINATION``, it is recommended that they use a
-path that begins with the appropriate :module:`GNUInstallDirs` variable.
-This allows package maintainers to control the install destination by setting
-the appropriate cache variables.  The following example shows a static library
-being installed to the default destination provided by
-:module:`GNUInstallDirs`, but with its headers installed to a project-specific
-subdirectory that follows the above recommendation:
-
-.. code-block:: cmake
-
-  add_library(mylib STATIC ...)
-  set_target_properties(mylib PROPERTIES PUBLIC_HEADER mylib.h)
-  include(GNUInstallDirs)
-  install(TARGETS mylib
-          PUBLIC_HEADER
-            DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/myproj
-  )
-
-In addition to the common options listed above, each target can accept
-the following additional arguments:
-
-``NAMELINK_COMPONENT``
-  On some platforms a versioned shared library has a symbolic link such
-  as::
-
-    lib<name>.so -> lib<name>.so.1
-
-  where ``lib<name>.so.1`` is the soname of the library and ``lib<name>.so``
-  is a "namelink" allowing linkers to find the library when given
-  ``-l<name>``. The ``NAMELINK_COMPONENT`` option is similar to the
-  ``COMPONENT`` option, but it changes the installation component of a shared
-  library namelink if one is generated. If not specified, this defaults to the
-  value of ``COMPONENT``. It is an error to use this parameter outside of a
-  ``LIBRARY`` block.
-
-  Consider the following example:
-
-  .. code-block:: cmake
-
-    install(TARGETS mylib
-            LIBRARY
-              COMPONENT Libraries
-              NAMELINK_COMPONENT Development
-            PUBLIC_HEADER
-              COMPONENT Development
-           )
-
-  In this scenario, if you choose to install only the ``Development``
-  component, both the headers and namelink will be installed without the
-  library. (If you don't also install the ``Libraries`` component, the
-  namelink will be a dangling symlink, and projects that link to the library
-  will have build errors.) If you install only the ``Libraries`` component,
-  only the library will be installed, without the headers and namelink.
-
-  This option is typically used for package managers that have separate
-  runtime and development packages. For example, on Debian systems, the
-  library is expected to be in the runtime package, and the headers and
-  namelink are expected to be in the development package.
-
-  See the :prop_tgt:`VERSION` and :prop_tgt:`SOVERSION` target properties for
-  details on creating versioned shared libraries.
-
-``NAMELINK_ONLY``
-  This option causes the installation of only the namelink when a library
-  target is installed. On platforms where versioned shared libraries do not
-  have namelinks or when a library is not versioned, the ``NAMELINK_ONLY``
-  option installs nothing. It is an error to use this parameter outside of a
-  ``LIBRARY`` block.
-
-  When ``NAMELINK_ONLY`` is given, either ``NAMELINK_COMPONENT`` or
-  ``COMPONENT`` may be used to specify the installation component of the
-  namelink, but ``COMPONENT`` should generally be preferred.
-
-``NAMELINK_SKIP``
-  Similar to ``NAMELINK_ONLY``, but it has the opposite effect: it causes the
-  installation of library files other than the namelink when a library target
-  is installed. When neither ``NAMELINK_ONLY`` or ``NAMELINK_SKIP`` are given,
-  both portions are installed. On platforms where versioned shared libraries
-  do not have symlinks or when a library is not versioned, ``NAMELINK_SKIP``
-  installs the library. It is an error to use this parameter outside of a
-  ``LIBRARY`` block.
-
-  If ``NAMELINK_SKIP`` is specified, ``NAMELINK_COMPONENT`` has no effect. It
-  is not recommended to use ``NAMELINK_SKIP`` in conjunction with
-  ``NAMELINK_COMPONENT``.
-
-The `install(TARGETS)`_ command can also accept the following options at the
-top level:
-
-``EXPORT``
-  This option associates the installed target files with an export called
-  ``<export-name>``.  It must appear before any target options.  To actually
-  install the export file itself, call `install(EXPORT)`_, documented below.
-  See documentation of the :prop_tgt:`EXPORT_NAME` target property to change
-  the name of the exported target.
-
-``INCLUDES DESTINATION``
-  This option specifies a list of directories which will be added to the
-  :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` target property of the
-  ``<targets>`` when exported by the `install(EXPORT)`_ command. If a
-  relative path is specified, it is treated as relative to the
-  ``$<INSTALL_PREFIX>``.
-
-One or more groups of properties may be specified in a single call to
-the ``TARGETS`` form of this command.  A target may be installed more than
-once to different locations.  Consider hypothetical targets ``myExe``,
-``mySharedLib``, and ``myStaticLib``.  The code:
-
-.. code-block:: cmake
-
-  install(TARGETS myExe mySharedLib myStaticLib
-          RUNTIME DESTINATION bin
-          LIBRARY DESTINATION lib
-          ARCHIVE DESTINATION lib/static)
-  install(TARGETS mySharedLib DESTINATION /some/full/path)
-
-will install ``myExe`` to ``<prefix>/bin`` and ``myStaticLib`` to
-``<prefix>/lib/static``.  On non-DLL platforms ``mySharedLib`` will be
-installed to ``<prefix>/lib`` and ``/some/full/path``.  On DLL platforms
-the ``mySharedLib`` DLL will be installed to ``<prefix>/bin`` and
-``/some/full/path`` and its import library will be installed to
-``<prefix>/lib/static`` and ``/some/full/path``.
-
-:ref:`Interface Libraries` may be listed among the targets to install.
-They install no artifacts but will be included in an associated ``EXPORT``.
-If :ref:`Object Libraries` are listed but given no destination for their
-object files, they will be exported as :ref:`Interface Libraries`.
-This is sufficient to satisfy transitive usage requirements of other
-targets that link to the object libraries in their implementation.
-
-Installing a target with the :prop_tgt:`EXCLUDE_FROM_ALL` target property
-set to ``TRUE`` has undefined behavior.
-
-`install(TARGETS)`_ can install targets that were created in
-other directories.  When using such cross-directory install rules, running
-``make install`` (or similar) from a subdirectory will not guarantee that
-targets from other directories are up-to-date.  You can use
-:command:`target_link_libraries` or :command:`add_dependencies`
-to ensure that such out-of-directory targets are built before the
-subdirectory-specific install rules are run.
-
-An install destination given as a ``DESTINATION`` argument may
-use "generator expressions" with the syntax ``$<...>``.  See the
-:manual:`cmake-generator-expressions(7)` manual for available expressions.
-
-Installing Files
-^^^^^^^^^^^^^^^^
-
-.. _`install(FILES)`:
-.. _`install(PROGRAMS)`:
-.. _FILES:
-.. _PROGRAMS:
-
-.. code-block:: cmake
-
-  install(<FILES|PROGRAMS> files...
-          TYPE <type> | DESTINATION <dir>
-          [PERMISSIONS permissions...]
-          [CONFIGURATIONS [Debug|Release|...]]
-          [COMPONENT <component>]
-          [RENAME <name>] [OPTIONAL] [EXCLUDE_FROM_ALL])
-
-The ``FILES`` form specifies rules for installing files for a project.
-File names given as relative paths are interpreted with respect to the
-current source directory.  Files installed by this form are by default
-given permissions ``OWNER_WRITE``, ``OWNER_READ``, ``GROUP_READ``, and
-``WORLD_READ`` if no ``PERMISSIONS`` argument is given.
-
-The ``PROGRAMS`` form is identical to the ``FILES`` form except that the
-default permissions for the installed file also include ``OWNER_EXECUTE``,
-``GROUP_EXECUTE``, and ``WORLD_EXECUTE``.  This form is intended to install
-programs that are not targets, such as shell scripts.  Use the ``TARGETS``
-form to install targets built within the project.
-
-The list of ``files...`` given to ``FILES`` or ``PROGRAMS`` may use
-"generator expressions" with the syntax ``$<...>``.  See the
-:manual:`cmake-generator-expressions(7)` manual for available expressions.
-However, if any item begins in a generator expression it must evaluate
-to a full path.
-
-Either a ``TYPE`` or a ``DESTINATION`` must be provided, but not both.
-A ``TYPE`` argument specifies the generic file type of the files being
-installed.  A destination will then be set automatically by taking the
-corresponding variable from :module:`GNUInstallDirs`, or by using a
-built-in default if that variable is not defined.  See the table below for
-the supported file types and their corresponding variables and built-in
-defaults.  Projects can provide a ``DESTINATION`` argument instead of a
-file type if they wish to explicitly define the install destination.
-
-======================= ================================== =========================
-   ``TYPE`` Argument         GNUInstallDirs Variable           Built-In Default
-======================= ================================== =========================
-``BIN``                 ``${CMAKE_INSTALL_BINDIR}``        ``bin``
-``SBIN``                ``${CMAKE_INSTALL_SBINDIR}``       ``sbin``
-``LIB``                 ``${CMAKE_INSTALL_LIBDIR}``        ``lib``
-``INCLUDE``             ``${CMAKE_INSTALL_INCLUDEDIR}``    ``include``
-``SYSCONF``             ``${CMAKE_INSTALL_SYSCONFDIR}``    ``etc``
-``SHAREDSTATE``         ``${CMAKE_INSTALL_SHARESTATEDIR}`` ``com``
-``LOCALSTATE``          ``${CMAKE_INSTALL_LOCALSTATEDIR}`` ``var``
-``RUNSTATE``            ``${CMAKE_INSTALL_RUNSTATEDIR}``   ``<LOCALSTATE dir>/run``
-``DATA``                ``${CMAKE_INSTALL_DATADIR}``       ``<DATAROOT dir>``
-``INFO``                ``${CMAKE_INSTALL_INFODIR}``       ``<DATAROOT dir>/info``
-``LOCALE``              ``${CMAKE_INSTALL_LOCALEDIR}``     ``<DATAROOT dir>/locale``
-``MAN``                 ``${CMAKE_INSTALL_MANDIR}``        ``<DATAROOT dir>/man``
-``DOC``                 ``${CMAKE_INSTALL_DOCDIR}``        ``<DATAROOT dir>/doc``
-======================= ================================== =========================
-
-Projects wishing to follow the common practice of installing headers into a
-project-specific subdirectory will need to provide a destination rather than
-rely on the above.
-
-Note that some of the types' built-in defaults use the ``DATAROOT`` directory as
-a prefix. The ``DATAROOT`` prefix is calculated similarly to the types, with
-``CMAKE_INSTALL_DATAROOTDIR`` as the variable and ``share`` as the built-in
-default. You cannot use ``DATAROOT`` as a ``TYPE`` parameter; please use
-``DATA`` instead.
-
-To make packages compliant with distribution filesystem layout policies, if
-projects must specify a ``DESTINATION``, it is recommended that they use a
-path that begins with the appropriate :module:`GNUInstallDirs` variable.
-This allows package maintainers to control the install destination by setting
-the appropriate cache variables.  The following example shows how to follow
-this advice while installing headers to a project-specific subdirectory:
-
-.. code-block:: cmake
-
-  include(GNUInstallDirs)
-  install(FILES mylib.h
-          DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/myproj
-  )
-
-An install destination given as a ``DESTINATION`` argument may
-use "generator expressions" with the syntax ``$<...>``.  See the
-:manual:`cmake-generator-expressions(7)` manual for available expressions.
-
-Installing Directories
-^^^^^^^^^^^^^^^^^^^^^^
-
-.. _`install(DIRECTORY)`:
-.. _DIRECTORY:
-
-.. code-block:: cmake
-
-  install(DIRECTORY dirs...
-          TYPE <type> | DESTINATION <dir>
-          [FILE_PERMISSIONS permissions...]
-          [DIRECTORY_PERMISSIONS permissions...]
-          [USE_SOURCE_PERMISSIONS] [OPTIONAL] [MESSAGE_NEVER]
-          [CONFIGURATIONS [Debug|Release|...]]
-          [COMPONENT <component>] [EXCLUDE_FROM_ALL]
-          [FILES_MATCHING]
-          [[PATTERN <pattern> | REGEX <regex>]
-           [EXCLUDE] [PERMISSIONS permissions...]] [...])
-
-The ``DIRECTORY`` form installs contents of one or more directories to a
-given destination.  The directory structure is copied verbatim to the
-destination.  The last component of each directory name is appended to
-the destination directory but a trailing slash may be used to avoid
-this because it leaves the last component empty.  Directory names
-given as relative paths are interpreted with respect to the current
-source directory.  If no input directory names are given the
-destination directory will be created but nothing will be installed
-into it.  The ``FILE_PERMISSIONS`` and ``DIRECTORY_PERMISSIONS`` options
-specify permissions given to files and directories in the destination.
-If ``USE_SOURCE_PERMISSIONS`` is specified and ``FILE_PERMISSIONS`` is not,
-file permissions will be copied from the source directory structure.
-If no permissions are specified files will be given the default
-permissions specified in the ``FILES`` form of the command, and the
-directories will be given the default permissions specified in the
-``PROGRAMS`` form of the command.
-
-The ``MESSAGE_NEVER`` option disables file installation status output.
-
-Installation of directories may be controlled with fine granularity
-using the ``PATTERN`` or ``REGEX`` options.  These "match" options specify a
-globbing pattern or regular expression to match directories or files
-encountered within input directories.  They may be used to apply
-certain options (see below) to a subset of the files and directories
-encountered.  The full path to each input file or directory (with
-forward slashes) is matched against the expression.  A ``PATTERN`` will
-match only complete file names: the portion of the full path matching
-the pattern must occur at the end of the file name and be preceded by
-a slash.  A ``REGEX`` will match any portion of the full path but it may
-use ``/`` and ``$`` to simulate the ``PATTERN`` behavior.  By default all
-files and directories are installed whether or not they are matched.
-The ``FILES_MATCHING`` option may be given before the first match option
-to disable installation of files (but not directories) not matched by
-any expression.  For example, the code
-
-.. code-block:: cmake
-
-  install(DIRECTORY src/ DESTINATION include/myproj
-          FILES_MATCHING PATTERN "*.h")
-
-will extract and install header files from a source tree.
-
-Some options may follow a ``PATTERN`` or ``REGEX`` expression and are applied
-only to files or directories matching them.  The ``EXCLUDE`` option will
-skip the matched file or directory.  The ``PERMISSIONS`` option overrides
-the permissions setting for the matched file or directory.  For
-example the code
-
-.. code-block:: cmake
-
-  install(DIRECTORY icons scripts/ DESTINATION share/myproj
-          PATTERN "CVS" EXCLUDE
-          PATTERN "scripts/*"
-          PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
-                      GROUP_EXECUTE GROUP_READ)
-
-will install the ``icons`` directory to ``share/myproj/icons`` and the
-``scripts`` directory to ``share/myproj``.  The icons will get default
-file permissions, the scripts will be given specific permissions, and any
-``CVS`` directories will be excluded.
-
-Either a ``TYPE`` or a ``DESTINATION`` must be provided, but not both.
-A ``TYPE`` argument specifies the generic file type of the files within the
-listed directories being installed.  A destination will then be set
-automatically by taking the corresponding variable from
-:module:`GNUInstallDirs`, or by using a built-in default if that variable
-is not defined.  See the table below for the supported file types and their
-corresponding variables and built-in defaults.  Projects can provide a
-``DESTINATION`` argument instead of a file type if they wish to explicitly
-define the install destination.
-
-======================= ================================== =========================
-   ``TYPE`` Argument         GNUInstallDirs Variable           Built-In Default
-======================= ================================== =========================
-``BIN``                 ``${CMAKE_INSTALL_BINDIR}``        ``bin``
-``SBIN``                ``${CMAKE_INSTALL_SBINDIR}``       ``sbin``
-``LIB``                 ``${CMAKE_INSTALL_LIBDIR}``        ``lib``
-``INCLUDE``             ``${CMAKE_INSTALL_INCLUDEDIR}``    ``include``
-``SYSCONF``             ``${CMAKE_INSTALL_SYSCONFDIR}``    ``etc``
-``SHAREDSTATE``         ``${CMAKE_INSTALL_SHARESTATEDIR}`` ``com``
-``LOCALSTATE``          ``${CMAKE_INSTALL_LOCALSTATEDIR}`` ``var``
-``RUNSTATE``            ``${CMAKE_INSTALL_RUNSTATEDIR}``   ``<LOCALSTATE dir>/run``
-``DATA``                ``${CMAKE_INSTALL_DATADIR}``       ``<DATAROOT dir>``
-``INFO``                ``${CMAKE_INSTALL_INFODIR}``       ``<DATAROOT dir>/info``
-``LOCALE``              ``${CMAKE_INSTALL_LOCALEDIR}``     ``<DATAROOT dir>/locale``
-``MAN``                 ``${CMAKE_INSTALL_MANDIR}``        ``<DATAROOT dir>/man``
-``DOC``                 ``${CMAKE_INSTALL_DOCDIR}``        ``<DATAROOT dir>/doc``
-======================= ================================== =========================
-
-Note that some of the types' built-in defaults use the ``DATAROOT`` directory as
-a prefix. The ``DATAROOT`` prefix is calculated similarly to the types, with
-``CMAKE_INSTALL_DATAROOTDIR`` as the variable and ``share`` as the built-in
-default. You cannot use ``DATAROOT`` as a ``TYPE`` parameter; please use
-``DATA`` instead.
-
-To make packages compliant with distribution filesystem layout policies, if
-projects must specify a ``DESTINATION``, it is recommended that they use a
-path that begins with the appropriate :module:`GNUInstallDirs` variable.
-This allows package maintainers to control the install destination by setting
-the appropriate cache variables.
-
-The list of ``dirs...`` given to ``DIRECTORY`` and an install destination
-given as a ``DESTINATION`` argument may use "generator expressions"
-with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.
-
-Custom Installation Logic
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. _`install(CODE)`:
-.. _`install(SCRIPT)`:
-.. _CODE:
-.. _SCRIPT:
-
-.. code-block:: cmake
-
-  install([[SCRIPT <file>] [CODE <code>]]
-          [COMPONENT <component>] [EXCLUDE_FROM_ALL] [...])
-
-The ``SCRIPT`` form will invoke the given CMake script files during
-installation.  If the script file name is a relative path it will be
-interpreted with respect to the current source directory.  The ``CODE``
-form will invoke the given CMake code during installation.  Code is
-specified as a single argument inside a double-quoted string.  For
-example, the code
-
-.. code-block:: cmake
-
-  install(CODE "MESSAGE(\"Sample install message.\")")
-
-will print a message during installation.
-
-``<file>`` or ``<code>`` may use "generator expressions" with the syntax
-``$<...>`` (in the case of ``<file>``, this refers to their use in the file
-name, not the file's contents).  See the
-:manual:`cmake-generator-expressions(7)` manual for available expressions.
-
-Installing Exports
-^^^^^^^^^^^^^^^^^^
-
-.. _`install(EXPORT)`:
-.. _EXPORT:
-
-.. code-block:: cmake
-
-  install(EXPORT <export-name> DESTINATION <dir>
-          [NAMESPACE <namespace>] [[FILE <name>.cmake]|
-          [PERMISSIONS permissions...]
-          [CONFIGURATIONS [Debug|Release|...]]
-          [EXPORT_LINK_INTERFACE_LIBRARIES]
-          [COMPONENT <component>]
-          [EXCLUDE_FROM_ALL])
-  install(EXPORT_ANDROID_MK <export-name> DESTINATION <dir> [...])
-
-The ``EXPORT`` form generates and installs a CMake file containing code to
-import targets from the installation tree into another project.
-Target installations are associated with the export ``<export-name>``
-using the ``EXPORT`` option of the `install(TARGETS)`_ signature
-documented above.  The ``NAMESPACE`` option will prepend ``<namespace>`` to
-the target names as they are written to the import file.  By default
-the generated file will be called ``<export-name>.cmake`` but the ``FILE``
-option may be used to specify a different name.  The value given to
-the ``FILE`` option must be a file name with the ``.cmake`` extension.
-If a ``CONFIGURATIONS`` option is given then the file will only be installed
-when one of the named configurations is installed.  Additionally, the
-generated import file will reference only the matching target
-configurations.  The ``EXPORT_LINK_INTERFACE_LIBRARIES`` keyword, if
-present, causes the contents of the properties matching
-``(IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?`` to be exported, when
-policy :policy:`CMP0022` is ``NEW``.
-
-.. note::
-  The installed ``<export-name>.cmake`` file may come with additional
-  per-configuration ``<export-name>-*.cmake`` files to be loaded by
-  globbing.  Do not use an export name that is the same as the package
-  name in combination with installing a ``<package-name>-config.cmake``
-  file or the latter may be incorrectly matched by the glob and loaded.
-
-When a ``COMPONENT`` option is given, the listed ``<component>`` implicitly
-depends on all components mentioned in the export set. The exported
-``<name>.cmake`` file will require each of the exported components to be
-present in order for dependent projects to build properly. For example, a
-project may define components ``Runtime`` and ``Development``, with shared
-libraries going into the ``Runtime`` component and static libraries and
-headers going into the ``Development`` component. The export set would also
-typically be part of the ``Development`` component, but it would export
-targets from both the ``Runtime`` and ``Development`` components. Therefore,
-the ``Runtime`` component would need to be installed if the ``Development``
-component was installed, but not vice versa. If the ``Development`` component
-was installed without the ``Runtime`` component, dependent projects that try
-to link against it would have build errors. Package managers, such as APT and
-RPM, typically handle this by listing the ``Runtime`` component as a dependency
-of the ``Development`` component in the package metadata, ensuring that the
-library is always installed if the headers and CMake export file are present.
-
-In addition to cmake language files, the ``EXPORT_ANDROID_MK`` mode maybe
-used to specify an export to the android ndk build system.  This mode
-accepts the same options as the normal export mode.  The Android
-NDK supports the use of prebuilt libraries, both static and shared. This
-allows cmake to build the libraries of a project and make them available
-to an ndk build system complete with transitive dependencies, include flags
-and defines required to use the libraries.
-
-The ``EXPORT`` form is useful to help outside projects use targets built
-and installed by the current project.  For example, the code
-
-.. code-block:: cmake
-
-  install(TARGETS myexe EXPORT myproj DESTINATION bin)
-  install(EXPORT myproj NAMESPACE mp_ DESTINATION lib/myproj)
-  install(EXPORT_ANDROID_MK myproj DESTINATION share/ndk-modules)
-
-will install the executable ``myexe`` to ``<prefix>/bin`` and code to import
-it in the file ``<prefix>/lib/myproj/myproj.cmake`` and
-``<prefix>/share/ndk-modules/Android.mk``.  An outside project
-may load this file with the include command and reference the ``myexe``
-executable from the installation tree using the imported target name
-``mp_myexe`` as if the target were built in its own tree.
-
-.. note::
-  This command supercedes the :command:`install_targets` command and
-  the :prop_tgt:`PRE_INSTALL_SCRIPT` and :prop_tgt:`POST_INSTALL_SCRIPT`
-  target properties.  It also replaces the ``FILES`` forms of the
-  :command:`install_files` and :command:`install_programs` commands.
-  The processing order of these install rules relative to
-  those generated by :command:`install_targets`,
-  :command:`install_files`, and :command:`install_programs` commands
-  is not defined.
-
-Generated Installation Script
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. note::
-
-  Use of this feature is not recommended. Please consider using the
-  ``--install`` argument of :manual:`cmake(1)` instead.
-
-The ``install()`` command generates a file, ``cmake_install.cmake``, inside
-the build directory, which is used internally by the generated install target
-and by CPack. You can also invoke this script manually with ``cmake -P``. This
-script accepts several variables:
-
-``COMPONENT``
-  Set this variable to install only a single CPack component as opposed to all
-  of them. For example, if you only want to install the ``Development``
-  component, run ``cmake -DCOMPONENT=Development -P cmake_install.cmake``.
-
-``BUILD_TYPE``
-  Set this variable to change the build type if you are using a multi-config
-  generator. For example, to install with the ``Debug`` configuration, run
-  ``cmake -DBUILD_TYPE=Debug -P cmake_install.cmake``.
-
-``DESTDIR``
-  This is an environment variable rather than a CMake variable. It allows you
-  to change the installation prefix on UNIX systems. See :envvar:`DESTDIR` for
-  details.
diff --git a/share/cmake-3.18/Help/command/install_files.rst b/share/cmake-3.18/Help/command/install_files.rst
deleted file mode 100644
index ff074a8..0000000
--- a/share/cmake-3.18/Help/command/install_files.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-install_files
--------------
-
-.. deprecated:: 3.0
-
-  Use the :command:`install(FILES)` command instead.
-
-This command has been superceded by the :command:`install` command.  It is
-provided for compatibility with older CMake code.  The ``FILES`` form is
-directly replaced by the ``FILES`` form of the :command:`install`
-command.  The regexp form can be expressed more clearly using the ``GLOB``
-form of the :command:`file` command.
-
-::
-
-  install_files(<dir> extension file file ...)
-
-Create rules to install the listed files with the given extension into
-the given directory.  Only files existing in the current source tree
-or its corresponding location in the binary tree may be listed.  If a
-file specified already has an extension, that extension will be
-removed first.  This is useful for providing lists of source files
-such as foo.cxx when you want the corresponding foo.h to be installed.
-A typical extension is ``.h``.
-
-::
-
-  install_files(<dir> regexp)
-
-Any files in the current source directory that match the regular
-expression will be installed.
-
-::
-
-  install_files(<dir> FILES file file ...)
-
-Any files listed after the ``FILES`` keyword will be installed explicitly
-from the names given.  Full paths are allowed in this form.
-
-The directory ``<dir>`` is relative to the installation prefix, which is
-stored in the variable :variable:`CMAKE_INSTALL_PREFIX`.
diff --git a/share/cmake-3.18/Help/command/install_programs.rst b/share/cmake-3.18/Help/command/install_programs.rst
deleted file mode 100644
index fab6482..0000000
--- a/share/cmake-3.18/Help/command/install_programs.rst
+++ /dev/null
@@ -1,36 +0,0 @@
-install_programs
-----------------
-
-.. deprecated:: 3.0
-
-  Use the :command:`install(PROGRAMS)` command instead.
-
-This command has been superceded by the :command:`install` command.  It is
-provided for compatibility with older CMake code.  The ``FILES`` form is
-directly replaced by the ``PROGRAMS`` form of the :command:`install`
-command.  The regexp form can be expressed more clearly using the ``GLOB``
-form of the :command:`file` command.
-
-::
-
-  install_programs(<dir> file1 file2 [file3 ...])
-  install_programs(<dir> FILES file1 [file2 ...])
-
-Create rules to install the listed programs into the given directory.
-Use the ``FILES`` argument to guarantee that the file list version of the
-command will be used even when there is only one argument.
-
-::
-
-  install_programs(<dir> regexp)
-
-In the second form any program in the current source directory that
-matches the regular expression will be installed.
-
-This command is intended to install programs that are not built by
-cmake, such as shell scripts.  See the ``TARGETS`` form of the
-:command:`install` command to create installation rules for targets built
-by cmake.
-
-The directory ``<dir>`` is relative to the installation prefix, which is
-stored in the variable :variable:`CMAKE_INSTALL_PREFIX`.
diff --git a/share/cmake-3.18/Help/command/install_targets.rst b/share/cmake-3.18/Help/command/install_targets.rst
deleted file mode 100644
index c9efdce..0000000
--- a/share/cmake-3.18/Help/command/install_targets.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-install_targets
----------------
-
-.. deprecated:: 3.0
-
-  Use the :command:`install(TARGETS)` command instead.
-
-This command has been superceded by the :command:`install` command.  It is
-provided for compatibility with older CMake code.
-
-::
-
-  install_targets(<dir> [RUNTIME_DIRECTORY dir] target target)
-
-Create rules to install the listed targets into the given directory.
-The directory ``<dir>`` is relative to the installation prefix, which is
-stored in the variable :variable:`CMAKE_INSTALL_PREFIX`.  If
-``RUNTIME_DIRECTORY`` is specified, then on systems with special runtime
-files (Windows DLL), the files will be copied to that directory.
diff --git a/share/cmake-3.18/Help/command/link_directories.rst b/share/cmake-3.18/Help/command/link_directories.rst
deleted file mode 100644
index 9cb8faa..0000000
--- a/share/cmake-3.18/Help/command/link_directories.rst
+++ /dev/null
@@ -1,51 +0,0 @@
-link_directories
-----------------
-
-Add directories in which the linker will look for libraries.
-
-.. code-block:: cmake
-
-  link_directories([AFTER|BEFORE] directory1 [directory2 ...])
-
-Adds the paths in which the linker should search for libraries.
-Relative paths given to this command are interpreted as relative to
-the current source directory, see :policy:`CMP0015`.
-
-The directories are added to the :prop_dir:`LINK_DIRECTORIES` directory
-property for the current ``CMakeLists.txt`` file, converting relative
-paths to absolute as needed.
-The command will apply only to targets created after it is called.
-
-By default the directories specified are appended onto the current list of
-directories.  This default behavior can be changed by setting
-:variable:`CMAKE_LINK_DIRECTORIES_BEFORE` to ``ON``.  By using
-``AFTER`` or ``BEFORE`` explicitly, you can select between appending and
-prepending, independent of the default.
-
-Arguments to ``link_directories`` may use "generator expressions" with
-the syntax "$<...>".  See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
-manual for more on defining buildsystem properties.
-
-.. note::
-
-  This command is rarely necessary and should be avoided where there are
-  other choices.  Prefer to pass full absolute paths to libraries where
-  possible, since this ensures the correct library will always be linked.
-  The :command:`find_library` command provides the full path, which can
-  generally be used directly in calls to :command:`target_link_libraries`.
-  Situations where a library search path may be needed include:
-
-  - Project generators like Xcode where the user can switch target
-    architecture at build time, but a full path to a library cannot
-    be used because it only provides one architecture (i.e. it is not
-    a universal binary).
-  - Libraries may themselves have other private library dependencies
-    that expect to be found via ``RPATH`` mechanisms, but some linkers
-    are not able to fully decode those paths (e.g. due to the presence
-    of things like ``$ORIGIN``).
-
-  If a library search path must be provided, prefer to localize the effect
-  where possible by using the :command:`target_link_directories` command
-  rather than ``link_directories()``.  The target-specific command can also
-  control how the search directories propagate to other dependent targets.
diff --git a/share/cmake-3.18/Help/command/list.rst b/share/cmake-3.18/Help/command/list.rst
deleted file mode 100644
index 4d339a0..0000000
--- a/share/cmake-3.18/Help/command/list.rst
+++ /dev/null
@@ -1,332 +0,0 @@
-list
-----
-
-List operations.
-
-Synopsis
-^^^^^^^^
-
-.. parsed-literal::
-
-  `Reading`_
-    list(`LENGTH`_ <list> <out-var>)
-    list(`GET`_ <list> <element index> [<index> ...] <out-var>)
-    list(`JOIN`_ <list> <glue> <out-var>)
-    list(`SUBLIST`_ <list> <begin> <length> <out-var>)
-
-  `Search`_
-    list(`FIND`_ <list> <value> <out-var>)
-
-  `Modification`_
-    list(`APPEND`_ <list> [<element>...])
-    list(`FILTER`_ <list> {INCLUDE | EXCLUDE} REGEX <regex>)
-    list(`INSERT`_ <list> <index> [<element>...])
-    list(`POP_BACK`_ <list> [<out-var>...])
-    list(`POP_FRONT`_ <list> [<out-var>...])
-    list(`PREPEND`_ <list> [<element>...])
-    list(`REMOVE_ITEM`_ <list> <value>...)
-    list(`REMOVE_AT`_ <list> <index>...)
-    list(`REMOVE_DUPLICATES`_ <list>)
-    list(`TRANSFORM`_ <list> <ACTION> [...])
-
-  `Ordering`_
-    list(`REVERSE`_ <list>)
-    list(`SORT`_ <list> [...])
-
-Introduction
-^^^^^^^^^^^^
-
-The list subcommands ``APPEND``, ``INSERT``, ``FILTER``, ``PREPEND``,
-``POP_BACK``, ``POP_FRONT``, ``REMOVE_AT``, ``REMOVE_ITEM``,
-``REMOVE_DUPLICATES``, ``REVERSE`` and ``SORT`` may create
-new values for the list within the current CMake variable scope.  Similar to
-the :command:`set` command, the LIST command creates new variable values in
-the current scope, even if the list itself is actually defined in a parent
-scope.  To propagate the results of these operations upwards, use
-:command:`set` with ``PARENT_SCOPE``, :command:`set` with
-``CACHE INTERNAL``, or some other means of value propagation.
-
-.. note::
-
-  A list in cmake is a ``;`` separated group of strings.  To create a
-  list the set command can be used.  For example, ``set(var a b c d e)``
-  creates a list with ``a;b;c;d;e``, and ``set(var "a b c d e")`` creates a
-  string or a list with one item in it.   (Note macro arguments are not
-  variables, and therefore cannot be used in LIST commands.)
-
-.. note::
-
-  When specifying index values, if ``<element index>`` is 0 or greater, it
-  is indexed from the beginning of the list, with 0 representing the
-  first list element.  If ``<element index>`` is -1 or lesser, it is indexed
-  from the end of the list, with -1 representing the last list element.
-  Be careful when counting with negative indices: they do not start from
-  0.  -0 is equivalent to 0, the first list element.
-
-Reading
-^^^^^^^
-
-.. _LENGTH:
-
-.. code-block:: cmake
-
-  list(LENGTH <list> <output variable>)
-
-Returns the list's length.
-
-.. _GET:
-
-.. code-block:: cmake
-
-  list(GET <list> <element index> [<element index> ...] <output variable>)
-
-Returns the list of elements specified by indices from the list.
-
-.. _JOIN:
-
-.. code-block:: cmake
-
-  list(JOIN <list> <glue> <output variable>)
-
-Returns a string joining all list's elements using the glue string.
-To join multiple strings, which are not part of a list, use ``JOIN`` operator
-from :command:`string` command.
-
-.. _SUBLIST:
-
-.. code-block:: cmake
-
-  list(SUBLIST <list> <begin> <length> <output variable>)
-
-Returns a sublist of the given list.
-If ``<length>`` is 0, an empty list will be returned.
-If ``<length>`` is -1 or the list is smaller than ``<begin>+<length>`` then
-the remaining elements of the list starting at ``<begin>`` will be returned.
-
-Search
-^^^^^^
-
-.. _FIND:
-
-.. code-block:: cmake
-
-  list(FIND <list> <value> <output variable>)
-
-Returns the index of the element specified in the list or -1
-if it wasn't found.
-
-Modification
-^^^^^^^^^^^^
-
-.. _APPEND:
-
-.. code-block:: cmake
-
-  list(APPEND <list> [<element> ...])
-
-Appends elements to the list.
-
-.. _FILTER:
-
-.. code-block:: cmake
-
-  list(FILTER <list> <INCLUDE|EXCLUDE> REGEX <regular_expression>)
-
-Includes or removes items from the list that match the mode's pattern.
-In ``REGEX`` mode, items will be matched against the given regular expression.
-
-For more information on regular expressions see also the
-:command:`string` command.
-
-.. _INSERT:
-
-.. code-block:: cmake
-
-  list(INSERT <list> <element_index> <element> [<element> ...])
-
-Inserts elements to the list to the specified location.
-
-.. _POP_BACK:
-
-.. code-block:: cmake
-
-  list(POP_BACK <list> [<out-var>...])
-
-If no variable name is given, removes exactly one element. Otherwise,
-assign the last element's value to the given variable and removes it,
-up to the last variable name given.
-
-.. _POP_FRONT:
-
-.. code-block:: cmake
-
-  list(POP_FRONT <list> [<out-var>...])
-
-If no variable name is given, removes exactly one element. Otherwise,
-assign the first element's value to the given variable and removes it,
-up to the last variable name given.
-
-.. _PREPEND:
-
-.. code-block:: cmake
-
-  list(PREPEND <list> [<element> ...])
-
-Insert elements to the 0th position in the list.
-
-.. _REMOVE_ITEM:
-
-.. code-block:: cmake
-
-  list(REMOVE_ITEM <list> <value> [<value> ...])
-
-Removes all instances of the given items from the list.
-
-.. _REMOVE_AT:
-
-.. code-block:: cmake
-
-  list(REMOVE_AT <list> <index> [<index> ...])
-
-Removes items at given indices from the list.
-
-.. _REMOVE_DUPLICATES:
-
-.. code-block:: cmake
-
-  list(REMOVE_DUPLICATES <list>)
-
-Removes duplicated items in the list. The relative order of items is preserved,
-but if duplicates are encountered, only the first instance is preserved.
-
-.. _TRANSFORM:
-
-.. code-block:: cmake
-
-  list(TRANSFORM <list> <ACTION> [<SELECTOR>]
-                        [OUTPUT_VARIABLE <output variable>])
-
-Transforms the list by applying an action to all or, by specifying a
-``<SELECTOR>``, to the selected elements of the list, storing the result
-in-place or in the specified output variable.
-
-.. note::
-
-   The ``TRANSFORM`` sub-command does not change the number of elements in the
-   list. If a ``<SELECTOR>`` is specified, only some elements will be changed,
-   the other ones will remain the same as before the transformation.
-
-``<ACTION>`` specifies the action to apply to the elements of the list.
-The actions have exactly the same semantics as sub-commands of the
-:command:`string` command.  ``<ACTION>`` must be one of the following:
-
-``APPEND``, ``PREPEND``: Append, prepend specified value to each element of
-the list.
-
-  .. code-block:: cmake
-
-    list(TRANSFORM <list> <APPEND|PREPEND> <value> ...)
-
-``TOUPPER``, ``TOLOWER``: Convert each element of the list to upper, lower
-characters.
-
-  .. code-block:: cmake
-
-    list(TRANSFORM <list> <TOLOWER|TOUPPER> ...)
-
-``STRIP``: Remove leading and trailing spaces from each element of the
-list.
-
-  .. code-block:: cmake
-
-    list(TRANSFORM <list> STRIP ...)
-
-``GENEX_STRIP``: Strip any
-:manual:`generator expressions <cmake-generator-expressions(7)>` from each
-element of the list.
-
-  .. code-block:: cmake
-
-    list(TRANSFORM <list> GENEX_STRIP ...)
-
-``REPLACE``: Match the regular expression as many times as possible and
-substitute the replacement expression for the match for each element
-of the list
-(Same semantic as ``REGEX REPLACE`` from :command:`string` command).
-
-  .. code-block:: cmake
-
-    list(TRANSFORM <list> REPLACE <regular_expression>
-                                  <replace_expression> ...)
-
-``<SELECTOR>`` determines which elements of the list will be transformed.
-Only one type of selector can be specified at a time.  When given,
-``<SELECTOR>`` must be one of the following:
-
-``AT``: Specify a list of indexes.
-
-  .. code-block:: cmake
-
-    list(TRANSFORM <list> <ACTION> AT <index> [<index> ...] ...)
-
-``FOR``: Specify a range with, optionally, an increment used to iterate over
-the range.
-
-  .. code-block:: cmake
-
-    list(TRANSFORM <list> <ACTION> FOR <start> <stop> [<step>] ...)
-
-``REGEX``: Specify a regular expression. Only elements matching the regular
-expression will be transformed.
-
-  .. code-block:: cmake
-
-    list(TRANSFORM <list> <ACTION> REGEX <regular_expression> ...)
-
-
-Ordering
-^^^^^^^^
-
-.. _REVERSE:
-
-.. code-block:: cmake
-
-  list(REVERSE <list>)
-
-Reverses the contents of the list in-place.
-
-.. _SORT:
-
-.. code-block:: cmake
-
-  list(SORT <list> [COMPARE <compare>] [CASE <case>] [ORDER <order>])
-
-Sorts the list in-place alphabetically.
-Use the ``COMPARE`` keyword to select the comparison method for sorting.
-The ``<compare>`` option should be one of:
-
-* ``STRING``: Sorts a list of strings alphabetically.  This is the
-  default behavior if the ``COMPARE`` option is not given.
-* ``FILE_BASENAME``: Sorts a list of pathnames of files by their basenames.
-* ``NATURAL``: Sorts a list of strings using natural order
-  (see ``strverscmp(3)`` manual), i.e. such that contiguous digits
-  are compared as whole numbers.
-  For example: the following list `10.0 1.1 2.1 8.0 2.0 3.1`
-  will be sorted as `1.1 2.0 2.1 3.1 8.0 10.0` if the ``NATURAL``
-  comparison is selected where it will be sorted as
-  `1.1 10.0 2.0 2.1 3.1 8.0` with the ``STRING`` comparison.
-
-Use the ``CASE`` keyword to select a case sensitive or case insensitive
-sort mode.  The ``<case>`` option should be one of:
-
-* ``SENSITIVE``: List items are sorted in a case-sensitive manner.  This is
-  the default behavior if the ``CASE`` option is not given.
-* ``INSENSITIVE``: List items are sorted case insensitively.  The order of
-  items which differ only by upper/lowercase is not specified.
-
-To control the sort order, the ``ORDER`` keyword can be given.
-The ``<order>`` option should be one of:
-
-* ``ASCENDING``: Sorts the list in ascending order.  This is the default
-  behavior when the ``ORDER`` option is not given.
-* ``DESCENDING``: Sorts the list in descending order.
diff --git a/share/cmake-3.18/Help/command/macro.rst b/share/cmake-3.18/Help/command/macro.rst
deleted file mode 100644
index 797a90d..0000000
--- a/share/cmake-3.18/Help/command/macro.rst
+++ /dev/null
@@ -1,150 +0,0 @@
-macro
------
-
-Start recording a macro for later invocation as a command
-
-.. code-block:: cmake
-
-  macro(<name> [<arg1> ...])
-    <commands>
-  endmacro()
-
-Defines a macro named ``<name>`` that takes arguments named
-``<arg1>``, ... Commands listed after macro, but before the
-matching :command:`endmacro()`, are not executed until the macro
-is invoked.
-
-Per legacy, the :command:`endmacro` command admits an optional
-``<name>`` argument. If used, it must be a verbatim repeat of the
-argument of the opening ``macro`` command.
-
-See the :command:`cmake_policy()` command documentation for the behavior
-of policies inside macros.
-
-See the :ref:`Macro vs Function` section below for differences
-between CMake macros and :command:`functions <function>`.
-
-Invocation
-^^^^^^^^^^
-
-The macro invocation is case-insensitive. A macro defined as
-
-.. code-block:: cmake
-
-  macro(foo)
-    <commands>
-  endmacro()
-
-can be invoked through any of
-
-.. code-block:: cmake
-
-  foo()
-  Foo()
-  FOO()
-  cmake_language(CALL foo)
-
-and so on. However, it is strongly recommended to stay with the
-case chosen in the macro definition.  Typically macros use
-all-lowercase names.
-
-The :command:`cmake_language(CALL ...)` command can also be used to
-invoke the macro.
-
-Arguments
-^^^^^^^^^
-
-When a macro is invoked, the commands recorded in the macro are
-first modified by replacing formal parameters (``${arg1}``, ...)
-with the arguments passed, and then invoked as normal commands.
-
-In addition to referencing the formal parameters you can reference the
-values ``${ARGC}`` which will be set to the number of arguments passed
-into the function as well as ``${ARGV0}``, ``${ARGV1}``, ``${ARGV2}``,
-...  which will have the actual values of the arguments passed in.
-This facilitates creating macros with optional arguments.
-
-Furthermore, ``${ARGV}`` holds the list of all arguments given to the
-macro and ``${ARGN}`` holds the list of arguments past the last expected
-argument.
-Referencing to ``${ARGV#}`` arguments beyond ``${ARGC}`` have undefined
-behavior. Checking that ``${ARGC}`` is greater than ``#`` is the only
-way to ensure that ``${ARGV#}`` was passed to the function as an extra
-argument.
-
-.. _`Macro vs Function`:
-
-Macro vs Function
-^^^^^^^^^^^^^^^^^
-
-The ``macro`` command is very similar to the :command:`function` command.
-Nonetheless, there are a few important differences.
-
-In a function, ``ARGN``, ``ARGC``, ``ARGV`` and ``ARGV0``, ``ARGV1``, ...
-are true variables in the usual CMake sense.  In a macro, they are not,
-they are string replacements much like the C preprocessor would do
-with a macro.  This has a number of consequences, as explained in
-the :ref:`Argument Caveats` section below.
-
-Another difference between macros and functions is the control flow.
-A function is executed by transferring control from the calling
-statement to the function body.  A macro is executed as if the macro
-body were pasted in place of the calling statement.  This has the
-consequence that a :command:`return()` in a macro body does not
-just terminate execution of the macro; rather, control is returned
-from the scope of the macro call.  To avoid confusion, it is recommended
-to avoid :command:`return()` in macros altogether.
-
-Unlike a function, the :variable:`CMAKE_CURRENT_FUNCTION`,
-:variable:`CMAKE_CURRENT_FUNCTION_LIST_DIR`,
-:variable:`CMAKE_CURRENT_FUNCTION_LIST_FILE`,
-:variable:`CMAKE_CURRENT_FUNCTION_LIST_LINE` variables are not
-set for a macro.
-
-.. _`Argument Caveats`:
-
-Argument Caveats
-^^^^^^^^^^^^^^^^
-
-Since ``ARGN``, ``ARGC``, ``ARGV``, ``ARGV0`` etc. are not variables,
-you will NOT be able to use commands like
-
-.. code-block:: cmake
-
- if(ARGV1) # ARGV1 is not a variable
- if(DEFINED ARGV2) # ARGV2 is not a variable
- if(ARGC GREATER 2) # ARGC is not a variable
- foreach(loop_var IN LISTS ARGN) # ARGN is not a variable
-
-In the first case, you can use ``if(${ARGV1})``.  In the second and
-third case, the proper way to check if an optional variable was
-passed to the macro is to use ``if(${ARGC} GREATER 2)``.  In the
-last case, you can use ``foreach(loop_var ${ARGN})`` but this will
-skip empty arguments.  If you need to include them, you can use
-
-.. code-block:: cmake
-
- set(list_var "${ARGN}")
- foreach(loop_var IN LISTS list_var)
-
-Note that if you have a variable with the same name in the scope from
-which the macro is called, using unreferenced names will use the
-existing variable instead of the arguments. For example:
-
-.. code-block:: cmake
-
- macro(bar)
-   foreach(arg IN LISTS ARGN)
-     <commands>
-   endforeach()
- endmacro()
-
- function(foo)
-   bar(x y z)
- endfunction()
-
- foo(a b c)
-
-Will loop over ``a;b;c`` and not over ``x;y;z`` as one might have expected.
-If you want true CMake variables and/or better CMake scope control you
-should look at the function command.
diff --git a/share/cmake-3.18/Help/command/mark_as_advanced.rst b/share/cmake-3.18/Help/command/mark_as_advanced.rst
deleted file mode 100644
index e52e623..0000000
--- a/share/cmake-3.18/Help/command/mark_as_advanced.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-mark_as_advanced
-----------------
-
-Mark cmake cached variables as advanced.
-
-.. code-block:: cmake
-
-  mark_as_advanced([CLEAR|FORCE] <var1> ...)
-
-Sets the advanced/non-advanced state of the named
-cached variables.
-
-An advanced variable will not be displayed in any
-of the cmake GUIs unless the ``show advanced`` option is on.
-In script mode, the advanced/non-advanced state has no effect.
-
-If the keyword ``CLEAR`` is given
-then advanced variables are changed back to unadvanced.
-If the keyword ``FORCE`` is given
-then the variables are made advanced.
-If neither ``FORCE`` nor ``CLEAR`` is specified,
-new values will be marked as advanced, but if a
-variable already has an advanced/non-advanced state,
-it will not be changed.
-
-.. note::
-
-  Policy :policy:`CMP0102` affects the behavior of the ``mark_as_advanced``
-  call. When set to ``NEW``, variables passed to this command which are not
-  already in the cache are ignored. See policy :policy:`CMP0102`.
diff --git a/share/cmake-3.18/Help/command/math.rst b/share/cmake-3.18/Help/command/math.rst
deleted file mode 100644
index ddb1ec6..0000000
--- a/share/cmake-3.18/Help/command/math.rst
+++ /dev/null
@@ -1,37 +0,0 @@
-math
-----
-
-Evaluate a mathematical expression.
-
-.. code-block:: cmake
-
-  math(EXPR <variable> "<expression>" [OUTPUT_FORMAT <format>])
-
-Evaluates a mathematical ``<expression>`` and sets ``<variable>`` to the
-resulting value.  The result of the expression must be representable as a
-64-bit signed integer.
-
-The mathematical expression must be given as a string (i.e. enclosed in
-double quotation marks). An example is ``"5 * (10 + 13)"``.
-Supported operators are ``+``, ``-``, ``*``, ``/``, ``%``, ``|``, ``&``,
-``^``, ``~``, ``<<``, ``>>``, and ``(...)``; they have the same meaning
-as in C code.
-
-Hexadecimal numbers are recognized when prefixed with ``0x``, as in C code.
-
-The result is formatted according to the option ``OUTPUT_FORMAT``,
-where ``<format>`` is one of
-
-``HEXADECIMAL``
-  Hexadecimal notation as in C code, i. e. starting with "0x".
-``DECIMAL``
-  Decimal notation. Which is also used if no ``OUTPUT_FORMAT`` option
-  is specified.
-
-
-For example
-
-.. code-block:: cmake
-
-  math(EXPR value "100 * 0xA" OUTPUT_FORMAT DECIMAL)      # value is set to "1000"
-  math(EXPR value "100 * 0xA" OUTPUT_FORMAT HEXADECIMAL)  # value is set to "0x3e8"
diff --git a/share/cmake-3.18/Help/command/message.rst b/share/cmake-3.18/Help/command/message.rst
deleted file mode 100644
index 6bc0e4c..0000000
--- a/share/cmake-3.18/Help/command/message.rst
+++ /dev/null
@@ -1,182 +0,0 @@
-message
--------
-
-Log a message.
-
-Synopsis
-^^^^^^^^
-
-.. parsed-literal::
-
-  `General messages`_
-    message([<mode>] "message text" ...)
-
-  `Reporting checks`_
-    message(<checkState> "message text" ...)
-
-
-General messages
-^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  message([<mode>] "message text" ...)
-
-Record the specified message text in the log.  If more than one message
-string is given, they are concatenated into a single message with no
-separator between the strings.
-
-The optional ``<mode>`` keyword determines the type of message, which
-influences the way the message is handled:
-
-``FATAL_ERROR``
-  CMake Error, stop processing and generation.
-
-``SEND_ERROR``
-  CMake Error, continue processing, but skip generation.
-
-``WARNING``
-  CMake Warning, continue processing.
-
-``AUTHOR_WARNING``
-  CMake Warning (dev), continue processing.
-
-``DEPRECATION``
-  CMake Deprecation Error or Warning if variable
-  :variable:`CMAKE_ERROR_DEPRECATED` or :variable:`CMAKE_WARN_DEPRECATED`
-  is enabled, respectively, else no message.
-
-(none) or ``NOTICE``
-  Important message printed to stderr to attract user's attention.
-
-``STATUS``
-  The main interesting messages that project users might be interested in.
-  Ideally these should be concise, no more than a single line, but still
-  informative.
-
-``VERBOSE``
-  Detailed informational messages intended for project users.  These messages
-  should provide additional details that won't be of interest in most cases,
-  but which may be useful to those building the project when they want deeper
-  insight into what's happening.
-
-``DEBUG``
-  Detailed informational messages intended for developers working on the
-  project itself as opposed to users who just want to build it.  These messages
-  will not typically be of interest to other users building the project and
-  will often be closely related to internal implementation details.
-
-``TRACE``
-  Fine-grained messages with very low-level implementation details.  Messages
-  using this log level would normally only be temporary and would expect to be
-  removed before releasing the project, packaging up the files, etc.
-
-The CMake command-line tool displays ``STATUS`` to ``TRACE`` messages on stdout
-with the message preceded by two hyphens and a space.  All other message types
-are sent to stderr and are not prefixed with hyphens.  The
-:manual:`CMake GUI <cmake-gui(1)>` displays all messages in its log area.
-The :manual:`curses interface <ccmake(1)>` shows ``STATUS`` to ``TRACE``
-messages one at a time on a status line and other messages in an
-interactive pop-up box.  The ``--log-level`` command-line option to each of
-these tools can be used to control which messages will be shown.
-To make a log level persist between CMake runs, the
-:variable:`CMAKE_MESSAGE_LOG_LEVEL` variable can be set instead.
-Note that the command line option takes precedence over the cache variable.
-
-Messages of log levels ``NOTICE`` and below will have each line preceded
-by the content of the :variable:`CMAKE_MESSAGE_INDENT` variable (converted to
-a single string by concatenating its list items).  For ``STATUS`` to ``TRACE``
-messages, this indenting content will be inserted after the hyphens.
-
-Messages of log levels ``NOTICE`` and below can also have each line preceded
-with context of the form ``[some.context.example]``.  The content between the
-square brackets is obtained by converting the :variable:`CMAKE_MESSAGE_CONTEXT`
-list variable to a dot-separated string.  The message context will always
-appear before any indenting content but after any automatically added leading
-hyphens. By default, message context is not shown, it has to be explicitly
-enabled by giving the :manual:`cmake <cmake(1)>` ``--log-context``
-command-line option or by setting the :variable:`CMAKE_MESSAGE_CONTEXT_SHOW`
-variable to true.  See the :variable:`CMAKE_MESSAGE_CONTEXT` documentation for
-usage examples.
-
-CMake Warning and Error message text displays using a simple markup
-language.  Non-indented text is formatted in line-wrapped paragraphs
-delimited by newlines.  Indented text is considered pre-formatted.
-
-
-Reporting checks
-^^^^^^^^^^^^^^^^
-
-A common pattern in CMake output is a message indicating the start of some
-sort of check, followed by another message reporting the result of that check.
-For example:
-
-.. code-block:: cmake
-
-  message(STATUS "Looking for someheader.h")
-  #... do the checks, set checkSuccess with the result
-  if(checkSuccess)
-    message(STATUS "Looking for someheader.h - found")
-  else()
-    message(STATUS "Looking for someheader.h - not found")
-  endif()
-
-This can be more robustly and conveniently expressed using the ``CHECK_...``
-keyword form of the ``message()`` command:
-
-.. code-block:: cmake
-
-  message(<checkState> "message" ...)
-
-where ``<checkState>`` must be one of the following:
-
-  ``CHECK_START``
-    Record a concise message about the check about to be performed.
-
-  ``CHECK_PASS``
-    Record a successful result for a check.
-
-  ``CHECK_FAIL``
-    Record an unsuccessful result for a check.
-
-When recording a check result, the command repeats the message from the most
-recently started check for which no result has yet been reported, then some
-separator characters and then the message text provided after the
-``CHECK_PASS`` or ``CHECK_FAIL`` keyword.  Check messages are always reported
-at ``STATUS`` log level.
-
-Checks may be nested and every ``CHECK_START`` should have exactly one
-matching ``CHECK_PASS`` or ``CHECK_FAIL``.
-The :variable:`CMAKE_MESSAGE_INDENT` variable can also be used to add
-indenting to nested checks if desired.  For example:
-
-.. code-block:: cmake
-
-  message(CHECK_START "Finding my things")
-  list(APPEND CMAKE_MESSAGE_INDENT "  ")
-  unset(missingComponents)
-
-  message(CHECK_START "Finding partA")
-  # ... do check, assume we find A
-  message(CHECK_PASS "found")
-
-  message(CHECK_START "Finding partB")
-  # ... do check, assume we don't find B
-  list(APPEND missingComponents B)
-  message(CHECK_FAIL "not found")
-
-  list(POP_BACK CMAKE_MESSAGE_INDENT)
-  if(missingComponents)
-    message(CHECK_FAIL "missing components: ${missingComponents}")
-  else()
-    message(CHECK_PASS "all components found")
-  endif()
-
-Output from the above would appear something like the following::
-
-  -- Finding my things
-  --   Finding partA
-  --   Finding partA - found
-  --   Finding partB
-  --   Finding partB - not found
-  -- Finding my things - missing components: B
diff --git a/share/cmake-3.18/Help/command/project.rst b/share/cmake-3.18/Help/command/project.rst
deleted file mode 100644
index b6093d3..0000000
--- a/share/cmake-3.18/Help/command/project.rst
+++ /dev/null
@@ -1,133 +0,0 @@
-project
--------
-
-Set the name of the project.
-
-Synopsis
-^^^^^^^^
-
-.. code-block:: cmake
-
- project(<PROJECT-NAME> [<language-name>...])
- project(<PROJECT-NAME>
-         [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
-         [DESCRIPTION <project-description-string>]
-         [HOMEPAGE_URL <url-string>]
-         [LANGUAGES <language-name>...])
-
-Sets the name of the project, and stores it in the variable
-:variable:`PROJECT_NAME`. When called from the top-level
-``CMakeLists.txt`` also stores the project name in the
-variable :variable:`CMAKE_PROJECT_NAME`.
-
-Also sets the variables
-
-* :variable:`PROJECT_SOURCE_DIR`,
-  :variable:`<PROJECT-NAME>_SOURCE_DIR`
-* :variable:`PROJECT_BINARY_DIR`,
-  :variable:`<PROJECT-NAME>_BINARY_DIR`
-
-Further variables are set by the optional arguments described in the following.
-If any of these arguments is not used, then the corresponding variables are
-set to the empty string.
-
-Options
-^^^^^^^
-
-The options are:
-
-``VERSION <version>``
-  Optional; may not be used unless policy :policy:`CMP0048` is
-  set to ``NEW``.
-
-  Takes a ``<version>`` argument composed of non-negative integer components,
-  i.e. ``<major>[.<minor>[.<patch>[.<tweak>]]]``,
-  and sets the variables
-
-  * :variable:`PROJECT_VERSION`,
-    :variable:`<PROJECT-NAME>_VERSION`
-  * :variable:`PROJECT_VERSION_MAJOR`,
-    :variable:`<PROJECT-NAME>_VERSION_MAJOR`
-  * :variable:`PROJECT_VERSION_MINOR`,
-    :variable:`<PROJECT-NAME>_VERSION_MINOR`
-  * :variable:`PROJECT_VERSION_PATCH`,
-    :variable:`<PROJECT-NAME>_VERSION_PATCH`
-  * :variable:`PROJECT_VERSION_TWEAK`,
-    :variable:`<PROJECT-NAME>_VERSION_TWEAK`.
-
-  When the ``project()`` command is called from the top-level ``CMakeLists.txt``,
-  then the version is also stored in the variable :variable:`CMAKE_PROJECT_VERSION`.
-
-``DESCRIPTION <project-description-string>``
-  Optional.
-  Sets the variables
-
-  * :variable:`PROJECT_DESCRIPTION`, :variable:`<PROJECT-NAME>_DESCRIPTION`
-
-  to ``<project-description-string>``.
-  It is recommended that this description is a relatively short string,
-  usually no more than a few words.
-
-  When the ``project()`` command is called from the top-level ``CMakeLists.txt``,
-  then the description is also stored in the variable :variable:`CMAKE_PROJECT_DESCRIPTION`.
-
-``HOMEPAGE_URL <url-string>``
-  Optional.
-  Sets the variables
-
-  * :variable:`PROJECT_HOMEPAGE_URL`, :variable:`<PROJECT-NAME>_HOMEPAGE_URL`
-
-  to ``<url-string>``, which should be the canonical home URL for the project.
-
-  When the ``project()`` command is called from the top-level ``CMakeLists.txt``,
-  then the URL also is stored in the variable :variable:`CMAKE_PROJECT_HOMEPAGE_URL`.
-
-``LANGUAGES <language-name>...``
-  Optional.
-  Can also be specified without ``LANGUAGES`` keyword per the first, short signature.
-
-  Selects which programming languages are needed to build the project.
-  Supported languages include ``C``, ``CXX`` (i.e.  C++), ``CUDA``,
-  ``OBJC`` (i.e. Objective-C), ``OBJCXX``, ``Fortran``, and ``ASM``.
-  By default ``C`` and ``CXX`` are enabled if no language options are given.
-  Specify language ``NONE``, or use the ``LANGUAGES`` keyword and list no languages,
-  to skip enabling any languages.
-
-  If enabling ``ASM``, list it last so that CMake can check whether
-  compilers for other languages like ``C`` work for assembly too.
-
-The variables set through the ``VERSION``, ``DESCRIPTION`` and ``HOMEPAGE_URL``
-options are intended for use as default values in package metadata and documentation.
-
-Code Injection
-^^^^^^^^^^^^^^
-
-If the :variable:`CMAKE_PROJECT_INCLUDE_BEFORE` or
-:variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE` variables are set,
-the files they point to will be included as the first step of the
-``project()`` command.
-If both are set, then :variable:`CMAKE_PROJECT_INCLUDE_BEFORE` will be
-included before :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE`.
-
-If the :variable:`CMAKE_PROJECT_INCLUDE` or
-:variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE` variables are set, the files
-they point to will be included as the last step of the ``project()`` command.
-If both are set, then :variable:`CMAKE_PROJECT_INCLUDE` will be included before
-:variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE`.
-
-Usage
-^^^^^
-
-The top-level ``CMakeLists.txt`` file for a project must contain a
-literal, direct call to the ``project()`` command; loading one
-through the :command:`include` command is not sufficient.  If no such
-call exists, CMake will issue a warning and pretend there is a
-``project(Project)`` at the top to enable the default languages
-(``C`` and ``CXX``).
-
-.. note::
-  Call the ``project()`` command near the top of the top-level
-  ``CMakeLists.txt``, but *after* calling :command:`cmake_minimum_required`.
-  It is important to establish version and policy settings before invoking
-  other commands whose behavior they may affect.
-  See also policy :policy:`CMP0000`.
diff --git a/share/cmake-3.18/Help/command/return.rst b/share/cmake-3.18/Help/command/return.rst
deleted file mode 100644
index 830992c..0000000
--- a/share/cmake-3.18/Help/command/return.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-return
-------
-
-Return from a file, directory or function.
-
-.. code-block:: cmake
-
-  return()
-
-Returns from a file, directory or function.  When this command is
-encountered in an included file (via :command:`include` or
-:command:`find_package`), it causes processing of the current file to stop
-and control is returned to the including file.  If it is encountered in a
-file which is not included by another file, e.g.  a ``CMakeLists.txt``,
-control is returned to the parent directory if there is one.  If return is
-called in a function, control is returned to the caller of the function.
-
-Note that a :command:`macro <macro>`, unlike a :command:`function <function>`,
-is expanded in place and therefore cannot handle ``return()``.
diff --git a/share/cmake-3.18/Help/command/separate_arguments.rst b/share/cmake-3.18/Help/command/separate_arguments.rst
deleted file mode 100644
index ab3d5c1..0000000
--- a/share/cmake-3.18/Help/command/separate_arguments.rst
+++ /dev/null
@@ -1,46 +0,0 @@
-separate_arguments
-------------------
-
-Parse command-line arguments into a semicolon-separated list.
-
-.. code-block:: cmake
-
-  separate_arguments(<variable> <mode> <args>)
-
-Parses a space-separated string ``<args>`` into a list of items,
-and stores this list in semicolon-separated standard form in ``<variable>``.
-
-This function is intended for parsing command-line arguments.
-The entire command line must be passed as one string in the
-argument ``<args>``.
-
-The exact parsing rules depend on the operating system.
-They are specified by the ``<mode>`` argument which must
-be one of the following keywords:
-
-``UNIX_COMMAND``
-  Arguments are separated by unquoted whitespace.
-  Both single-quote and double-quote pairs are respected.
-  A backslash escapes the next literal character (``\"`` is ``"``);
-  there are no special escapes (``\n`` is just ``n``).
-
-``WINDOWS_COMMAND``
-  A Windows command-line is parsed using the same
-  syntax the runtime library uses to construct argv at startup.  It
-  separates arguments by whitespace that is not double-quoted.
-  Backslashes are literal unless they precede double-quotes.  See the
-  MSDN article `Parsing C Command-Line Arguments`_ for details.
-
-``NATIVE_COMMAND``
-  Proceeds as in ``WINDOWS_COMMAND`` mode if the host system is Windows.
-  Otherwise proceeds as in ``UNIX_COMMAND`` mode.
-
-.. _`Parsing C Command-Line Arguments`: https://msdn.microsoft.com/library/a1y7w461.aspx
-
-.. code-block:: cmake
-
-  separate_arguments(<var>)
-
-Convert the value of ``<var>`` to a semi-colon separated list.  All
-spaces are replaced with ';'.  This helps with generating command
-lines.
diff --git a/share/cmake-3.18/Help/command/set.rst b/share/cmake-3.18/Help/command/set.rst
deleted file mode 100644
index c0e02e2..0000000
--- a/share/cmake-3.18/Help/command/set.rst
+++ /dev/null
@@ -1,104 +0,0 @@
-set
----
-
-Set a normal, cache, or environment variable to a given value.
-See the :ref:`cmake-language(7) variables <CMake Language Variables>`
-documentation for the scopes and interaction of normal variables
-and cache entries.
-
-Signatures of this command that specify a ``<value>...`` placeholder
-expect zero or more arguments.  Multiple arguments will be joined as
-a :ref:`semicolon-separated list <CMake Language Lists>` to form the actual variable
-value to be set.  Zero arguments will cause normal variables to be
-unset.  See the :command:`unset` command to unset variables explicitly.
-
-Set Normal Variable
-^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  set(<variable> <value>... [PARENT_SCOPE])
-
-Sets the given ``<variable>`` in the current function or directory scope.
-
-If the ``PARENT_SCOPE`` option is given the variable will be set in
-the scope above the current scope.  Each new directory or function
-creates a new scope.  This command will set the value of a variable
-into the parent directory or calling function (whichever is applicable
-to the case at hand). The previous state of the variable's value stays the
-same in the current scope (e.g., if it was undefined before, it is still
-undefined and if it had a value, it is still that value).
-
-Set Cache Entry
-^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  set(<variable> <value>... CACHE <type> <docstring> [FORCE])
-
-Sets the given cache ``<variable>`` (cache entry).  Since cache entries
-are meant to provide user-settable values this does not overwrite
-existing cache entries by default.  Use the ``FORCE`` option to
-overwrite existing entries.
-
-The ``<type>`` must be specified as one of:
-
-``BOOL``
-  Boolean ``ON/OFF`` value.  :manual:`cmake-gui(1)` offers a checkbox.
-
-``FILEPATH``
-  Path to a file on disk.  :manual:`cmake-gui(1)` offers a file dialog.
-
-``PATH``
-  Path to a directory on disk.  :manual:`cmake-gui(1)` offers a file dialog.
-
-``STRING``
-  A line of text.  :manual:`cmake-gui(1)` offers a text field or a
-  drop-down selection if the :prop_cache:`STRINGS` cache entry
-  property is set.
-
-``INTERNAL``
-  A line of text.  :manual:`cmake-gui(1)` does not show internal entries.
-  They may be used to store variables persistently across runs.
-  Use of this type implies ``FORCE``.
-
-The ``<docstring>`` must be specified as a line of text providing
-a quick summary of the option for presentation to :manual:`cmake-gui(1)`
-users.
-
-If the cache entry does not exist prior to the call or the ``FORCE``
-option is given then the cache entry will be set to the given value.
-Furthermore, any normal variable binding in the current scope will
-be removed to expose the newly cached value to any immediately
-following evaluation.
-
-It is possible for the cache entry to exist prior to the call but
-have no type set if it was created on the :manual:`cmake(1)` command
-line by a user through the ``-D<var>=<value>`` option without
-specifying a type.  In this case the ``set`` command will add the
-type.  Furthermore, if the ``<type>`` is ``PATH`` or ``FILEPATH``
-and the ``<value>`` provided on the command line is a relative path,
-then the ``set`` command will treat the path as relative to the
-current working directory and convert it to an absolute path.
-
-Set Environment Variable
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  set(ENV{<variable>} [<value>])
-
-Sets an :manual:`Environment Variable <cmake-env-variables(7)>`
-to the given value.
-Subsequent calls of ``$ENV{<variable>}`` will return this new value.
-
-This command affects only the current CMake process, not the process
-from which CMake was called, nor the system environment at large,
-nor the environment of subsequent build or test processes.
-
-If no argument is given after ``ENV{<variable>}`` or if ``<value>`` is
-an empty string, then this command will clear any existing value of the
-environment variable.
-
-Arguments after ``<value>`` are ignored. If extra arguments are found,
-then an author warning is issued.
diff --git a/share/cmake-3.18/Help/command/set_property.rst b/share/cmake-3.18/Help/command/set_property.rst
deleted file mode 100644
index 93c2d9c..0000000
--- a/share/cmake-3.18/Help/command/set_property.rst
+++ /dev/null
@@ -1,96 +0,0 @@
-set_property
-------------
-
-Set a named property in a given scope.
-
-.. code-block:: cmake
-
-  set_property(<GLOBAL                      |
-                DIRECTORY [<dir>]           |
-                TARGET    [<target1> ...]   |
-                SOURCE    [<src1> ...]
-                          [DIRECTORY <dirs> ...] |
-                          [TARGET_DIRECTORY <targets> ...]
-                INSTALL   [<file1> ...]     |
-                TEST      [<test1> ...]     |
-                CACHE     [<entry1> ...]    >
-               [APPEND] [APPEND_STRING]
-               PROPERTY <name> [<value1> ...])
-
-Sets one property on zero or more objects of a scope.
-
-The first argument determines the scope in which the property is set.
-It must be one of the following:
-
-``GLOBAL``
-  Scope is unique and does not accept a name.
-
-``DIRECTORY``
-  Scope defaults to the current directory but another directory
-  (already processed by CMake) may be named by full or relative path.
-  See also the :command:`set_directory_properties` command.
-
-``TARGET``
-  Scope may name zero or more existing targets.
-  See also the :command:`set_target_properties` command.
-
-``SOURCE``
-  Scope may name zero or more source files.  By default, source file properties
-  are only visible to targets added in the same directory (``CMakeLists.txt``).
-  Visibility can be set in other directory scopes using one or both of the
-  following sub-options:
-
-  ``DIRECTORY <dirs>...``
-    The source file property will be set in each of the ``<dirs>``
-    directories' scopes.  CMake must already know about each of these
-    source directories, either by having added them through a call to
-    :command:`add_subdirectory` or it being the top level source directory.
-    Relative paths are treated as relative to the current source directory.
-
-  ``TARGET_DIRECTORY <targets>...``
-    The source file property will be set in each of the directory scopes
-    where any of the specified ``<targets>`` were created (the ``<targets>``
-    must therefore already exist).
-
-  See also the :command:`set_source_files_properties` command.
-
-``INSTALL``
-  Scope may name zero or more installed file paths.
-  These are made available to CPack to influence deployment.
-
-  Both the property key and value may use generator expressions.
-  Specific properties may apply to installed files and/or directories.
-
-  Path components have to be separated by forward slashes,
-  must be normalized and are case sensitive.
-
-  To reference the installation prefix itself with a relative path use ``.``.
-
-  Currently installed file properties are only defined for
-  the WIX generator where the given paths are relative
-  to the installation prefix.
-
-``TEST``
-  Scope may name zero or more existing tests.
-  See also the :command:`set_tests_properties` command.
-
-``CACHE``
-  Scope must name zero or more cache existing entries.
-
-The required ``PROPERTY`` option is immediately followed by the name of
-the property to set.  Remaining arguments are used to compose the
-property value in the form of a semicolon-separated list.
-
-If the ``APPEND`` option is given the list is appended to any existing
-property value (except that empty values are ignored and not appended).
-If the ``APPEND_STRING`` option is given the string is
-appended to any existing property value as string, i.e. it results in a
-longer string and not a list of strings.  When using ``APPEND`` or
-``APPEND_STRING`` with a property defined to support ``INHERITED``
-behavior (see :command:`define_property`), no inheriting occurs when
-finding the initial value to append to.  If the property is not already
-directly set in the nominated scope, the command will behave as though
-``APPEND`` or ``APPEND_STRING`` had not been given.
-
-See the :manual:`cmake-properties(7)` manual for a list of properties
-in each scope.
diff --git a/share/cmake-3.18/Help/command/set_source_files_properties.rst b/share/cmake-3.18/Help/command/set_source_files_properties.rst
deleted file mode 100644
index 9558b40..0000000
--- a/share/cmake-3.18/Help/command/set_source_files_properties.rst
+++ /dev/null
@@ -1,37 +0,0 @@
-set_source_files_properties
----------------------------
-
-Source files can have properties that affect how they are built.
-
-.. code-block:: cmake
-
-  set_source_files_properties(<files> ...
-                              [DIRECTORY <dirs> ...]
-                              [TARGET_DIRECTORY <targets> ...]
-                              PROPERTIES <prop1> <value1>
-                              [<prop2> <value2>] ...)
-
-Sets properties associated with source files using a key/value paired
-list.
-
-By default, source file properties are only visible to targets added in the
-same directory (``CMakeLists.txt``).  Visibility can be set in other directory
-scopes using one or both of the following options:
-
-``DIRECTORY <dirs>...``
-  The source file properties will be set in each of the ``<dirs>``
-  directories' scopes.  CMake must already know about each of these
-  source directories, either by having added them through a call to
-  :command:`add_subdirectory` or it being the top level source directory.
-  Relative paths are treated as relative to the current source directory.
-
-``TARGET_DIRECTORY <targets>...``
-  The source file properties will be set in each of the directory scopes
-  where any of the specified ``<targets>`` were created (the ``<targets>``
-  must therefore already exist).
-
-Use :command:`get_source_file_property` to get property values.
-See also the :command:`set_property(SOURCE)` command.
-
-See :ref:`Source File Properties` for the list of properties known
-to CMake.
diff --git a/share/cmake-3.18/Help/command/site_name.rst b/share/cmake-3.18/Help/command/site_name.rst
deleted file mode 100644
index 1bcaead..0000000
--- a/share/cmake-3.18/Help/command/site_name.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-site_name
----------
-
-Set the given variable to the name of the computer.
-
-.. code-block:: cmake
-
-  site_name(variable)
diff --git a/share/cmake-3.18/Help/command/source_group.rst b/share/cmake-3.18/Help/command/source_group.rst
deleted file mode 100644
index 5ae9e51..0000000
--- a/share/cmake-3.18/Help/command/source_group.rst
+++ /dev/null
@@ -1,60 +0,0 @@
-source_group
-------------
-
-Define a grouping for source files in IDE project generation.
-There are two different signatures to create source groups.
-
-.. code-block:: cmake
-
-  source_group(<name> [FILES <src>...] [REGULAR_EXPRESSION <regex>])
-  source_group(TREE <root> [PREFIX <prefix>] [FILES <src>...])
-
-Defines a group into which sources will be placed in project files.
-This is intended to set up file tabs in Visual Studio.
-The options are:
-
-``TREE``
- CMake will automatically detect, from ``<src>`` files paths, source groups
- it needs to create, to keep structure of source groups analogically to the
- actual files and directories structure in the project. Paths of ``<src>``
- files will be cut to be relative to ``<root>``.
-
-``PREFIX``
- Source group and files located directly in ``<root>`` path, will be placed
- in ``<prefix>`` source groups.
-
-``FILES``
- Any source file specified explicitly will be placed in group
- ``<name>``.  Relative paths are interpreted with respect to the
- current source directory.
-
-``REGULAR_EXPRESSION``
- Any source file whose name matches the regular expression will
- be placed in group ``<name>``.
-
-If a source file matches multiple groups, the *last* group that
-explicitly lists the file with ``FILES`` will be favored, if any.
-If no group explicitly lists the file, the *last* group whose
-regular expression matches the file will be favored.
-
-The ``<name>`` of the group and ``<prefix>`` argument may contain forward
-slashes or backslashes to specify subgroups.  Backslashes need to be escaped
-appropriately:
-
-.. code-block:: cmake
-
-  source_group(base/subdir ...)
-  source_group(outer\\inner ...)
-  source_group(TREE <root> PREFIX sources\\inc ...)
-
-For backwards compatibility, the short-hand signature
-
-.. code-block:: cmake
-
-  source_group(<name> <regex>)
-
-is equivalent to
-
-.. code-block:: cmake
-
-  source_group(<name> REGULAR_EXPRESSION <regex>)
diff --git a/share/cmake-3.18/Help/command/string.rst b/share/cmake-3.18/Help/command/string.rst
deleted file mode 100644
index cfcf914..0000000
--- a/share/cmake-3.18/Help/command/string.rst
+++ /dev/null
@@ -1,472 +0,0 @@
-string
-------
-
-String operations.
-
-Synopsis
-^^^^^^^^
-
-.. parsed-literal::
-
-  `Search and Replace`_
-    string(`FIND`_ <string> <substring> <out-var> [...])
-    string(`REPLACE`_ <match-string> <replace-string> <out-var> <input>...)
-    string(`REGEX MATCH`_ <match-regex> <out-var> <input>...)
-    string(`REGEX MATCHALL`_ <match-regex> <out-var> <input>...)
-    string(`REGEX REPLACE`_ <match-regex> <replace-expr> <out-var> <input>...)
-
-  `Manipulation`_
-    string(`APPEND`_ <string-var> [<input>...])
-    string(`PREPEND`_ <string-var> [<input>...])
-    string(`CONCAT`_ <out-var> [<input>...])
-    string(`JOIN`_ <glue> <out-var> [<input>...])
-    string(`TOLOWER`_ <string> <out-var>)
-    string(`TOUPPER`_ <string> <out-var>)
-    string(`LENGTH`_ <string> <out-var>)
-    string(`SUBSTRING`_ <string> <begin> <length> <out-var>)
-    string(`STRIP`_ <string> <out-var>)
-    string(`GENEX_STRIP`_ <string> <out-var>)
-    string(`REPEAT`_ <string> <count> <out-var>)
-
-  `Comparison`_
-    string(`COMPARE`_ <op> <string1> <string2> <out-var>)
-
-  `Hashing`_
-    string(`\<HASH\> <HASH_>`_ <out-var> <input>)
-
-  `Generation`_
-    string(`ASCII`_ <number>... <out-var>)
-    string(`HEX`_ <string> <out-var>)
-    string(`CONFIGURE`_ <string> <out-var> [...])
-    string(`MAKE_C_IDENTIFIER`_ <string> <out-var>)
-    string(`RANDOM`_ [<option>...] <out-var>)
-    string(`TIMESTAMP`_ <out-var> [<format string>] [UTC])
-    string(`UUID`_ <out-var> ...)
-
-Search and Replace
-^^^^^^^^^^^^^^^^^^
-
-Search and Replace With Plain Strings
-"""""""""""""""""""""""""""""""""""""
-
-.. _FIND:
-
-.. code-block:: cmake
-
-  string(FIND <string> <substring> <output_variable> [REVERSE])
-
-Return the position where the given ``<substring>`` was found in
-the supplied ``<string>``.  If the ``REVERSE`` flag was used, the command will
-search for the position of the last occurrence of the specified
-``<substring>``.  If the ``<substring>`` is not found, a position of -1 is
-returned.
-
-The ``string(FIND)`` subcommand treats all strings as ASCII-only characters.
-The index stored in ``<output_variable>`` will also be counted in bytes,
-so strings containing multi-byte characters may lead to unexpected results.
-
-.. _REPLACE:
-
-.. code-block:: cmake
-
-  string(REPLACE <match_string>
-         <replace_string> <output_variable>
-         <input> [<input>...])
-
-Replace all occurrences of ``<match_string>`` in the ``<input>``
-with ``<replace_string>`` and store the result in the ``<output_variable>``.
-
-Search and Replace With Regular Expressions
-"""""""""""""""""""""""""""""""""""""""""""
-
-.. _`REGEX MATCH`:
-
-.. code-block:: cmake
-
-  string(REGEX MATCH <regular_expression>
-         <output_variable> <input> [<input>...])
-
-Match the ``<regular_expression>`` once and store the match in the
-``<output_variable>``.
-All ``<input>`` arguments are concatenated before matching.
-Regular expressions are specified in the subsection just below.
-
-.. _`REGEX MATCHALL`:
-
-.. code-block:: cmake
-
-  string(REGEX MATCHALL <regular_expression>
-         <output_variable> <input> [<input>...])
-
-Match the ``<regular_expression>`` as many times as possible and store the
-matches in the ``<output_variable>`` as a list.
-All ``<input>`` arguments are concatenated before matching.
-
-.. _`REGEX REPLACE`:
-
-.. code-block:: cmake
-
-  string(REGEX REPLACE <regular_expression>
-         <replacement_expression> <output_variable>
-         <input> [<input>...])
-
-Match the ``<regular_expression>`` as many times as possible and substitute
-the ``<replacement_expression>`` for the match in the output.
-All ``<input>`` arguments are concatenated before matching.
-
-The ``<replacement_expression>`` may refer to parenthesis-delimited
-subexpressions of the match using ``\1``, ``\2``, ..., ``\9``.  Note that
-two backslashes (``\\1``) are required in CMake code to get a backslash
-through argument parsing.
-
-.. _`Regex Specification`:
-
-Regex Specification
-"""""""""""""""""""
-
-The following characters have special meaning in regular expressions:
-
-``^``
-  Matches at beginning of input
-``$``
-  Matches at end of input
-``.``
-  Matches any single character
-``\<char>``
-  Matches the single character specified by ``<char>``.  Use this to
-  match special regex characters, e.g. ``\.`` for a literal ``.``
-  or ``\\`` for a literal backslash ``\``.  Escaping a non-special
-  character is unnecessary but allowed, e.g. ``\a`` matches ``a``.
-``[ ]``
-  Matches any character(s) inside the brackets
-``[^ ]``
-  Matches any character(s) not inside the brackets
-``-``
-  Inside brackets, specifies an inclusive range between
-  characters on either side e.g. ``[a-f]`` is ``[abcdef]``
-  To match a literal ``-`` using brackets, make it the first
-  or the last character e.g. ``[+*/-]`` matches basic
-  mathematical operators.
-``*``
-  Matches preceding pattern zero or more times
-``+``
-  Matches preceding pattern one or more times
-``?``
-  Matches preceding pattern zero or once only
-``|``
-  Matches a pattern on either side of the ``|``
-``()``
-  Saves a matched subexpression, which can be referenced
-  in the ``REGEX REPLACE`` operation. Additionally it is saved
-  by all regular expression-related commands, including
-  e.g. :command:`if(MATCHES)`, in the variables
-  :variable:`CMAKE_MATCH_<n>` for ``<n>`` 0..9.
-
-``*``, ``+`` and ``?`` have higher precedence than concatenation.  ``|``
-has lower precedence than concatenation.  This means that the regular
-expression ``^ab+d$`` matches ``abbd`` but not ``ababd``, and the regular
-expression ``^(ab|cd)$`` matches ``ab`` but not ``abd``.
-
-CMake language :ref:`Escape Sequences` such as ``\t``, ``\r``, ``\n``,
-and ``\\`` may be used to construct literal tabs, carriage returns,
-newlines, and backslashes (respectively) to pass in a regex.  For example:
-
-* The quoted argument ``"[ \t\r\n]"`` specifies a regex that matches
-  any single whitespace character.
-* The quoted argument ``"[/\\]"`` specifies a regex that matches
-  a single forward slash ``/`` or backslash ``\``.
-* The quoted argument ``"[A-Za-z0-9_]"`` specifies a regex that matches
-  any single "word" character in the C locale.
-* The quoted argument ``"\\(\\a\\+b\\)"`` specifies a regex that matches
-  the exact string ``(a+b)``.  Each ``\\`` is parsed in a quoted argument
-  as just ``\``, so the regex itself is actually ``\(\a\+\b\)``.  This
-  can alternatively be specified in a :ref:`bracket argument` without
-  having to escape the backslashes, e.g. ``[[\(\a\+\b\)]]``.
-
-Manipulation
-^^^^^^^^^^^^
-
-.. _APPEND:
-
-.. code-block:: cmake
-
-  string(APPEND <string_variable> [<input>...])
-
-Append all the ``<input>`` arguments to the string.
-
-.. _PREPEND:
-
-.. code-block:: cmake
-
-  string(PREPEND <string_variable> [<input>...])
-
-Prepend all the ``<input>`` arguments to the string.
-
-.. _CONCAT:
-
-.. code-block:: cmake
-
-  string(CONCAT <output_variable> [<input>...])
-
-Concatenate all the ``<input>`` arguments together and store
-the result in the named ``<output_variable>``.
-
-.. _JOIN:
-
-.. code-block:: cmake
-
-  string(JOIN <glue> <output_variable> [<input>...])
-
-Join all the ``<input>`` arguments together using the ``<glue>``
-string and store the result in the named ``<output_variable>``.
-
-To join a list's elements, prefer to use the ``JOIN`` operator
-from the :command:`list` command.  This allows for the elements to have
-special characters like ``;`` in them.
-
-.. _TOLOWER:
-
-.. code-block:: cmake
-
-  string(TOLOWER <string> <output_variable>)
-
-Convert ``<string>`` to lower characters.
-
-.. _TOUPPER:
-
-.. code-block:: cmake
-
-  string(TOUPPER <string> <output_variable>)
-
-Convert ``<string>`` to upper characters.
-
-.. _LENGTH:
-
-.. code-block:: cmake
-
-  string(LENGTH <string> <output_variable>)
-
-Store in an ``<output_variable>`` a given string's length in bytes.
-Note that this means if ``<string>`` contains multi-byte characters, the
-result stored in ``<output_variable>`` will *not* be the number of characters.
-
-.. _SUBSTRING:
-
-.. code-block:: cmake
-
-  string(SUBSTRING <string> <begin> <length> <output_variable>)
-
-Store in an ``<output_variable>`` a substring of a given ``<string>``.  If
-``<length>`` is ``-1`` the remainder of the string starting at ``<begin>``
-will be returned.  If ``<string>`` is shorter than ``<length>`` then the
-end of the string is used instead.
-
-Both ``<begin>`` and ``<length>`` are counted in bytes, so care must
-be exercised if ``<string>`` could contain multi-byte characters.
-
-.. note::
-  CMake 3.1 and below reported an error if ``<length>`` pointed past
-  the end of ``<string>``.
-
-.. _STRIP:
-
-.. code-block:: cmake
-
-  string(STRIP <string> <output_variable>)
-
-Store in an ``<output_variable>`` a substring of a given ``<string>`` with
-leading and trailing spaces removed.
-
-.. _GENEX_STRIP:
-
-.. code-block:: cmake
-
-  string(GENEX_STRIP <string> <output_variable>)
-
-Strip any :manual:`generator expressions <cmake-generator-expressions(7)>`
-from the input ``<string>`` and store the result in the ``<output_variable>``.
-
-.. _REPEAT:
-
-.. code-block:: cmake
-
-  string(REPEAT <string> <count> <output_variable>)
-
-Produce the output string as the input ``<string>`` repeated ``<count>`` times.
-
-Comparison
-^^^^^^^^^^
-
-.. _COMPARE:
-
-.. code-block:: cmake
-
-  string(COMPARE LESS <string1> <string2> <output_variable>)
-  string(COMPARE GREATER <string1> <string2> <output_variable>)
-  string(COMPARE EQUAL <string1> <string2> <output_variable>)
-  string(COMPARE NOTEQUAL <string1> <string2> <output_variable>)
-  string(COMPARE LESS_EQUAL <string1> <string2> <output_variable>)
-  string(COMPARE GREATER_EQUAL <string1> <string2> <output_variable>)
-
-Compare the strings and store true or false in the ``<output_variable>``.
-
-.. _`Supported Hash Algorithms`:
-
-Hashing
-^^^^^^^
-
-.. _`HASH`:
-
-.. code-block:: cmake
-
-  string(<HASH> <output_variable> <input>)
-
-Compute a cryptographic hash of the ``<input>`` string.
-The supported ``<HASH>`` algorithm names are:
-
-``MD5``
-  Message-Digest Algorithm 5, RFC 1321.
-``SHA1``
-  US Secure Hash Algorithm 1, RFC 3174.
-``SHA224``
-  US Secure Hash Algorithms, RFC 4634.
-``SHA256``
-  US Secure Hash Algorithms, RFC 4634.
-``SHA384``
-  US Secure Hash Algorithms, RFC 4634.
-``SHA512``
-  US Secure Hash Algorithms, RFC 4634.
-``SHA3_224``
-  Keccak SHA-3.
-``SHA3_256``
-  Keccak SHA-3.
-``SHA3_384``
-  Keccak SHA-3.
-``SHA3_512``
-  Keccak SHA-3.
-
-Generation
-^^^^^^^^^^
-
-.. _ASCII:
-
-.. code-block:: cmake
-
-  string(ASCII <number> [<number> ...] <output_variable>)
-
-Convert all numbers into corresponding ASCII characters.
-
-.. _HEX:
-
-.. code-block:: cmake
-
-  string(HEX <string> <output_variable>)
-
-Convert each byte in the input ``<string>`` to its hexadecimal representation
-and store the concatenated hex digits in the ``<output_variable>``. Letters in
-the output (``a`` through ``f``) are in lowercase.
-
-.. _CONFIGURE:
-
-.. code-block:: cmake
-
-  string(CONFIGURE <string> <output_variable>
-         [@ONLY] [ESCAPE_QUOTES])
-
-Transform a ``<string>`` like :command:`configure_file` transforms a file.
-
-.. _MAKE_C_IDENTIFIER:
-
-.. code-block:: cmake
-
-  string(MAKE_C_IDENTIFIER <string> <output_variable>)
-
-Convert each non-alphanumeric character in the input ``<string>`` to an
-underscore and store the result in the ``<output_variable>``.  If the first
-character of the ``<string>`` is a digit, an underscore will also be prepended
-to the result.
-
-.. _RANDOM:
-
-.. code-block:: cmake
-
-  string(RANDOM [LENGTH <length>] [ALPHABET <alphabet>]
-         [RANDOM_SEED <seed>] <output_variable>)
-
-Return a random string of given ``<length>`` consisting of
-characters from the given ``<alphabet>``.  Default length is 5 characters
-and default alphabet is all numbers and upper and lower case letters.
-If an integer ``RANDOM_SEED`` is given, its value will be used to seed the
-random number generator.
-
-.. _TIMESTAMP:
-
-.. code-block:: cmake
-
-  string(TIMESTAMP <output_variable> [<format_string>] [UTC])
-
-Write a string representation of the current date
-and/or time to the ``<output_variable>``.
-
-If the command is unable to obtain a timestamp, the ``<output_variable>``
-will be set to the empty string ``""``.
-
-The optional ``UTC`` flag requests the current date/time representation to
-be in Coordinated Universal Time (UTC) rather than local time.
-
-The optional ``<format_string>`` may contain the following format
-specifiers:
-
-::
-
-   %%        A literal percent sign (%).
-   %d        The day of the current month (01-31).
-   %H        The hour on a 24-hour clock (00-23).
-   %I        The hour on a 12-hour clock (01-12).
-   %j        The day of the current year (001-366).
-   %m        The month of the current year (01-12).
-   %b        Abbreviated month name (e.g. Oct).
-   %B        Full month name (e.g. October).
-   %M        The minute of the current hour (00-59).
-   %s        Seconds since midnight (UTC) 1-Jan-1970 (UNIX time).
-   %S        The second of the current minute.
-             60 represents a leap second. (00-60)
-   %U        The week number of the current year (00-53).
-   %w        The day of the current week. 0 is Sunday. (0-6)
-   %a        Abbreviated weekday name (e.g. Fri).
-   %A        Full weekday name (e.g. Friday).
-   %y        The last two digits of the current year (00-99)
-   %Y        The current year.
-
-Unknown format specifiers will be ignored and copied to the output
-as-is.
-
-If no explicit ``<format_string>`` is given, it will default to:
-
-::
-
-   %Y-%m-%dT%H:%M:%S    for local time.
-   %Y-%m-%dT%H:%M:%SZ   for UTC.
-
-.. note::
-
-  If the ``SOURCE_DATE_EPOCH`` environment variable is set,
-  its value will be used instead of the current time.
-  See https://reproducible-builds.org/specs/source-date-epoch/ for details.
-
-.. _UUID:
-
-.. code-block:: cmake
-
-  string(UUID <output_variable> NAMESPACE <namespace> NAME <name>
-         TYPE <MD5|SHA1> [UPPER])
-
-Create a universally unique identifier (aka GUID) as per RFC4122
-based on the hash of the combined values of ``<namespace>``
-(which itself has to be a valid UUID) and ``<name>``.
-The hash algorithm can be either ``MD5`` (Version 3 UUID) or
-``SHA1`` (Version 5 UUID).
-A UUID has the format ``xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx``
-where each ``x`` represents a lower case hexadecimal character.
-Where required, an uppercase representation can be requested
-with the optional ``UPPER`` flag.
diff --git a/share/cmake-3.18/Help/command/target_compile_definitions.rst b/share/cmake-3.18/Help/command/target_compile_definitions.rst
deleted file mode 100644
index 9e9c690..0000000
--- a/share/cmake-3.18/Help/command/target_compile_definitions.rst
+++ /dev/null
@@ -1,39 +0,0 @@
-target_compile_definitions
---------------------------
-
-Add compile definitions to a target.
-
-.. code-block:: cmake
-
-  target_compile_definitions(<target>
-    <INTERFACE|PUBLIC|PRIVATE> [items1...]
-    [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
-
-Specifies compile definitions to use when compiling a given ``<target>``.  The
-named ``<target>`` must have been created by a command such as
-:command:`add_executable` or :command:`add_library` and must not be an
-:ref:`ALIAS target <Alias Targets>`.
-
-The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
-specify the scope of the following arguments.  ``PRIVATE`` and ``PUBLIC``
-items will populate the :prop_tgt:`COMPILE_DEFINITIONS` property of
-``<target>``. ``PUBLIC`` and ``INTERFACE`` items will populate the
-:prop_tgt:`INTERFACE_COMPILE_DEFINITIONS` property of ``<target>``.
-(:ref:`IMPORTED targets <Imported Targets>` only support ``INTERFACE`` items.)
-The following arguments specify compile definitions.  Repeated calls for the
-same ``<target>`` append items in the order called.
-
-Arguments to ``target_compile_definitions`` may use "generator expressions"
-with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
-manual for more on defining buildsystem properties.
-
-Any leading ``-D`` on an item will be removed.  Empty items are ignored.
-For example, the following are all equivalent:
-
-.. code-block:: cmake
-
-  target_compile_definitions(foo PUBLIC FOO)
-  target_compile_definitions(foo PUBLIC -DFOO)  # -D removed
-  target_compile_definitions(foo PUBLIC "" FOO) # "" ignored
-  target_compile_definitions(foo PUBLIC -D FOO) # -D becomes "", then ignored
diff --git a/share/cmake-3.18/Help/command/target_compile_features.rst b/share/cmake-3.18/Help/command/target_compile_features.rst
deleted file mode 100644
index c5401e6..0000000
--- a/share/cmake-3.18/Help/command/target_compile_features.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-target_compile_features
------------------------
-
-Add expected compiler features to a target.
-
-.. code-block:: cmake
-
-  target_compile_features(<target> <PRIVATE|PUBLIC|INTERFACE> <feature> [...])
-
-Specifies compiler features required when compiling a given target.  If the
-feature is not listed in the :variable:`CMAKE_C_COMPILE_FEATURES`,
-:variable:`CMAKE_CUDA_COMPILE_FEATURES`, or :variable:`CMAKE_CXX_COMPILE_FEATURES`
-variables, then an error will be reported by CMake.  If the use of the feature requires
-an additional compiler flag, such as ``-std=gnu++11``, the flag will be added
-automatically.
-
-The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
-specify the scope of the features.  ``PRIVATE`` and ``PUBLIC`` items will
-populate the :prop_tgt:`COMPILE_FEATURES` property of ``<target>``.
-``PUBLIC`` and ``INTERFACE`` items will populate the
-:prop_tgt:`INTERFACE_COMPILE_FEATURES` property of ``<target>``.
-(:ref:`IMPORTED targets <Imported Targets>` only support ``INTERFACE`` items.)
-Repeated calls for the same ``<target>`` append items.
-
-The named ``<target>`` must have been created by a command such as
-:command:`add_executable` or :command:`add_library` and must not be an
-:ref:`ALIAS target <Alias Targets>`.
-
-Arguments to ``target_compile_features`` may use "generator expressions"
-with the syntax ``$<...>``.
-See the :manual:`cmake-generator-expressions(7)` manual for available
-expressions.  See the :manual:`cmake-compile-features(7)` manual for
-information on compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/command/target_compile_options.rst b/share/cmake-3.18/Help/command/target_compile_options.rst
deleted file mode 100644
index 3c733c5..0000000
--- a/share/cmake-3.18/Help/command/target_compile_options.rst
+++ /dev/null
@@ -1,50 +0,0 @@
-target_compile_options
-----------------------
-
-Add compile options to a target.
-
-.. code-block:: cmake
-
-  target_compile_options(<target> [BEFORE]
-    <INTERFACE|PUBLIC|PRIVATE> [items1...]
-    [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
-
-Adds options to the :prop_tgt:`COMPILE_OPTIONS` or
-:prop_tgt:`INTERFACE_COMPILE_OPTIONS` target properties. These options
-are used when compiling the given ``<target>``, which must have been
-created by a command such as :command:`add_executable` or
-:command:`add_library` and must not be an :ref:`ALIAS target <Alias Targets>`.
-
-Arguments
-^^^^^^^^^
-
-If ``BEFORE`` is specified, the content will be prepended to the property
-instead of being appended.
-
-The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
-specify the scope of the following arguments.  ``PRIVATE`` and ``PUBLIC``
-items will populate the :prop_tgt:`COMPILE_OPTIONS` property of
-``<target>``.  ``PUBLIC`` and ``INTERFACE`` items will populate the
-:prop_tgt:`INTERFACE_COMPILE_OPTIONS` property of ``<target>``.
-(:ref:`IMPORTED targets <Imported Targets>` only support ``INTERFACE`` items.)
-The following arguments specify compile options.  Repeated calls for the same
-``<target>`` append items in the order called.
-
-Arguments to ``target_compile_options`` may use "generator expressions"
-with the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
-manual for more on defining buildsystem properties.
-
-.. include:: OPTIONS_SHELL.txt
-
-See Also
-^^^^^^^^
-
-This command can be used to add any options. However, for adding
-preprocessor definitions and include directories it is recommended
-to use the more specific commands :command:`target_compile_definitions`
-and :command:`target_include_directories`.
-
-For directory-wide settings, there is the command :command:`add_compile_options`.
-
-For file-specific settings, there is the source file property :prop_sf:`COMPILE_OPTIONS`.
diff --git a/share/cmake-3.18/Help/command/target_include_directories.rst b/share/cmake-3.18/Help/command/target_include_directories.rst
deleted file mode 100644
index 660e15c..0000000
--- a/share/cmake-3.18/Help/command/target_include_directories.rst
+++ /dev/null
@@ -1,62 +0,0 @@
-target_include_directories
---------------------------
-
-Add include directories to a target.
-
-.. code-block:: cmake
-
-  target_include_directories(<target> [SYSTEM] [BEFORE]
-    <INTERFACE|PUBLIC|PRIVATE> [items1...]
-    [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
-
-Specifies include directories to use when compiling a given target.
-The named ``<target>`` must have been created by a command such
-as :command:`add_executable` or :command:`add_library` and must not be an
-:ref:`ALIAS target <Alias Targets>`.
-
-If ``BEFORE`` is specified, the content will be prepended to the property
-instead of being appended.
-
-The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to specify
-the scope of the following arguments.  ``PRIVATE`` and ``PUBLIC`` items will
-populate the :prop_tgt:`INCLUDE_DIRECTORIES` property of ``<target>``.
-``PUBLIC`` and ``INTERFACE`` items will populate the
-:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` property of ``<target>``.
-(:ref:`IMPORTED targets <Imported Targets>` only support ``INTERFACE`` items.)
-The following arguments specify include directories.
-
-Specified include directories may be absolute paths or relative paths.
-Repeated calls for the same <target> append items in the order called.  If
-``SYSTEM`` is specified, the compiler will be told the
-directories are meant as system include directories on some platforms
-(signalling this setting might achieve effects such as the compiler
-skipping warnings, or these fixed-install system files not being
-considered in dependency calculations - see compiler docs).  If ``SYSTEM``
-is used together with ``PUBLIC`` or ``INTERFACE``, the
-:prop_tgt:`INTERFACE_SYSTEM_INCLUDE_DIRECTORIES` target property will be
-populated with the specified directories.
-
-Arguments to ``target_include_directories`` may use "generator expressions"
-with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
-manual for more on defining buildsystem properties.
-
-Include directories usage requirements commonly differ between the build-tree
-and the install-tree.  The ``BUILD_INTERFACE`` and ``INSTALL_INTERFACE``
-generator expressions can be used to describe separate usage requirements
-based on the usage location.  Relative paths are allowed within the
-``INSTALL_INTERFACE`` expression and are interpreted relative to the
-installation prefix.  For example:
-
-.. code-block:: cmake
-
-  target_include_directories(mylib PUBLIC
-    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/mylib>
-    $<INSTALL_INTERFACE:include/mylib>  # <prefix>/include/mylib
-  )
-
-Creating Relocatable Packages
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. |INTERFACE_PROPERTY_LINK| replace:: :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES`
-.. include:: /include/INTERFACE_INCLUDE_DIRECTORIES_WARNING.txt
diff --git a/share/cmake-3.18/Help/command/target_link_directories.rst b/share/cmake-3.18/Help/command/target_link_directories.rst
deleted file mode 100644
index 76da94d..0000000
--- a/share/cmake-3.18/Help/command/target_link_directories.rst
+++ /dev/null
@@ -1,55 +0,0 @@
-target_link_directories
------------------------
-
-Add link directories to a target.
-
-.. code-block:: cmake
-
-  target_link_directories(<target> [BEFORE]
-    <INTERFACE|PUBLIC|PRIVATE> [items1...]
-    [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
-
-Specifies the paths in which the linker should search for libraries when
-linking a given target.  Each item can be an absolute or relative path,
-with the latter being interpreted as relative to the current source
-directory.  These items will be added to the link command.
-
-The named ``<target>`` must have been created by a command such as
-:command:`add_executable` or :command:`add_library` and must not be an
-:ref:`ALIAS target <Alias Targets>`.
-
-The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
-specify the scope of the items that follow them.  ``PRIVATE`` and
-``PUBLIC`` items will populate the :prop_tgt:`LINK_DIRECTORIES` property
-of ``<target>``.  ``PUBLIC`` and ``INTERFACE`` items will populate the
-:prop_tgt:`INTERFACE_LINK_DIRECTORIES` property of ``<target>``
-(:ref:`IMPORTED targets <Imported Targets>` only support ``INTERFACE`` items).
-Each item specifies a link directory and will be converted to an absolute
-path if necessary before adding it to the relevant property.  Repeated
-calls for the same ``<target>`` append items in the order called.
-
-If ``BEFORE`` is specified, the content will be prepended to the relevant
-property instead of being appended.
-
-Arguments to ``target_link_directories`` may use "generator expressions"
-with the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
-manual for more on defining buildsystem properties.
-
-.. note::
-
-  This command is rarely necessary and should be avoided where there are
-  other choices.  Prefer to pass full absolute paths to libraries where
-  possible, since this ensures the correct library will always be linked.
-  The :command:`find_library` command provides the full path, which can
-  generally be used directly in calls to :command:`target_link_libraries`.
-  Situations where a library search path may be needed include:
-
-  - Project generators like Xcode where the user can switch target
-    architecture at build time, but a full path to a library cannot
-    be used because it only provides one architecture (i.e. it is not
-    a universal binary).
-  - Libraries may themselves have other private library dependencies
-    that expect to be found via ``RPATH`` mechanisms, but some linkers
-    are not able to fully decode those paths (e.g. due to the presence
-    of things like ``$ORIGIN``).
diff --git a/share/cmake-3.18/Help/command/target_link_libraries.rst b/share/cmake-3.18/Help/command/target_link_libraries.rst
deleted file mode 100644
index c2e7e8a..0000000
--- a/share/cmake-3.18/Help/command/target_link_libraries.rst
+++ /dev/null
@@ -1,310 +0,0 @@
-target_link_libraries
----------------------
-
-.. only:: html
-
-   .. contents::
-
-Specify libraries or flags to use when linking a given target and/or
-its dependents.  :ref:`Usage requirements <Target Usage Requirements>`
-from linked library targets will be propagated.  Usage requirements
-of a target's dependencies affect compilation of its own sources.
-
-Overview
-^^^^^^^^
-
-This command has several signatures as detailed in subsections below.
-All of them have the general form
-
-.. code-block:: cmake
-
-  target_link_libraries(<target> ... <item>... ...)
-
-The named ``<target>`` must have been created by a command such as
-:command:`add_executable` or :command:`add_library` and must not be an
-:ref:`ALIAS target <Alias Targets>`.  If policy :policy:`CMP0079` is not
-set to ``NEW`` then the target must have been created in the current
-directory.  Repeated calls for the same ``<target>`` append items in
-the order called.
-
-Each ``<item>`` may be:
-
-* **A library target name**: The generated link line will have the
-  full path to the linkable library file associated with the target.
-  The buildsystem will have a dependency to re-link ``<target>`` if
-  the library file changes.
-
-  The named target must be created by :command:`add_library` within
-  the project or as an :ref:`IMPORTED library <Imported Targets>`.
-  If it is created within the project an ordering dependency will
-  automatically be added in the build system to make sure the named
-  library target is up-to-date before the ``<target>`` links.
-
-  If an imported library has the :prop_tgt:`IMPORTED_NO_SONAME`
-  target property set, CMake may ask the linker to search for
-  the library instead of using the full path
-  (e.g. ``/usr/lib/libfoo.so`` becomes ``-lfoo``).
-
-  The full path to the target's artifact will be quoted/escaped for
-  the shell automatically.
-
-* **A full path to a library file**: The generated link line will
-  normally preserve the full path to the file. The buildsystem will
-  have a dependency to re-link ``<target>`` if the library file changes.
-
-  There are some cases where CMake may ask the linker to search for
-  the library (e.g. ``/usr/lib/libfoo.so`` becomes ``-lfoo``), such
-  as when a shared library is detected to have no ``SONAME`` field.
-  See policy :policy:`CMP0060` for discussion of another case.
-
-  If the library file is in a macOS framework, the ``Headers`` directory
-  of the framework will also be processed as a
-  :ref:`usage requirement <Target Usage Requirements>`.  This has the same
-  effect as passing the framework directory as an include directory.
-
-  On :ref:`Visual Studio Generators` for VS 2010 and above, library files
-  ending in ``.targets`` will be treated as MSBuild targets files and
-  imported into generated project files.  This is not supported by other
-  generators.
-
-  The full path to the library file will be quoted/escaped for
-  the shell automatically.
-
-* **A plain library name**: The generated link line will ask the linker
-  to search for the library (e.g. ``foo`` becomes ``-lfoo`` or ``foo.lib``).
-
-  The library name/flag is treated as a command-line string fragment and
-  will be used with no extra quoting or escaping.
-
-* **A link flag**: Item names starting with ``-``, but not ``-l`` or
-  ``-framework``, are treated as linker flags.  Note that such flags will
-  be treated like any other library link item for purposes of transitive
-  dependencies, so they are generally safe to specify only as private link
-  items that will not propagate to dependents.
-
-  Link flags specified here are inserted into the link command in the same
-  place as the link libraries. This might not be correct, depending on
-  the linker. Use the :prop_tgt:`LINK_OPTIONS` target property or
-  :command:`target_link_options` command to add link
-  flags explicitly. The flags will then be placed at the toolchain-defined
-  flag position in the link command.
-
-  The link flag is treated as a command-line string fragment and
-  will be used with no extra quoting or escaping.
-
-* **A generator expression**: A ``$<...>`` :manual:`generator expression
-  <cmake-generator-expressions(7)>` may evaluate to any of the above
-  items or to a :ref:`semicolon-separated list <CMake Language Lists>` of them.
-  If the ``...`` contains any ``;`` characters, e.g. after evaluation
-  of a ``${list}`` variable, be sure to use an explicitly quoted
-  argument ``"$<...>"`` so that this command receives it as a
-  single ``<item>``.
-
-  Additionally, a generator expression may be used as a fragment of
-  any of the above items, e.g. ``foo$<1:_d>``.
-
-  Note that generator expressions will not be used in OLD handling of
-  policy :policy:`CMP0003` or policy :policy:`CMP0004`.
-
-* A ``debug``, ``optimized``, or ``general`` keyword immediately followed
-  by another ``<item>``.  The item following such a keyword will be used
-  only for the corresponding build configuration.  The ``debug`` keyword
-  corresponds to the ``Debug`` configuration (or to configurations named
-  in the :prop_gbl:`DEBUG_CONFIGURATIONS` global property if it is set).
-  The ``optimized`` keyword corresponds to all other configurations.  The
-  ``general`` keyword corresponds to all configurations, and is purely
-  optional.  Higher granularity may be achieved for per-configuration
-  rules by creating and linking to
-  :ref:`IMPORTED library targets <Imported Targets>`.
-  These keywords are interpreted immediately by this command and therefore
-  have no special meaning when produced by a generator expression.
-
-Items containing ``::``, such as ``Foo::Bar``, are assumed to be
-:ref:`IMPORTED <Imported Targets>` or :ref:`ALIAS <Alias Targets>` library
-target names and will cause an error if no such target exists.
-See policy :policy:`CMP0028`.
-
-See the :manual:`cmake-buildsystem(7)` manual for more on defining
-buildsystem properties.
-
-Libraries for a Target and/or its Dependents
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  target_link_libraries(<target>
-                        <PRIVATE|PUBLIC|INTERFACE> <item>...
-                       [<PRIVATE|PUBLIC|INTERFACE> <item>...]...)
-
-The ``PUBLIC``, ``PRIVATE`` and ``INTERFACE`` keywords can be used to
-specify both the link dependencies and the link interface in one command.
-Libraries and targets following ``PUBLIC`` are linked to, and are made
-part of the link interface.  Libraries and targets following ``PRIVATE``
-are linked to, but are not made part of the link interface.  Libraries
-following ``INTERFACE`` are appended to the link interface and are not
-used for linking ``<target>``.
-
-Libraries for both a Target and its Dependents
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  target_link_libraries(<target> <item>...)
-
-Library dependencies are transitive by default with this signature.
-When this target is linked into another target then the libraries
-linked to this target will appear on the link line for the other
-target too.  This transitive "link interface" is stored in the
-:prop_tgt:`INTERFACE_LINK_LIBRARIES` target property and may be overridden
-by setting the property directly.  When :policy:`CMP0022` is not set to
-``NEW``, transitive linking is built in but may be overridden by the
-:prop_tgt:`LINK_INTERFACE_LIBRARIES` property.  Calls to other signatures
-of this command may set the property making any libraries linked
-exclusively by this signature private.
-
-Libraries for a Target and/or its Dependents (Legacy)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  target_link_libraries(<target>
-                        <LINK_PRIVATE|LINK_PUBLIC> <lib>...
-                       [<LINK_PRIVATE|LINK_PUBLIC> <lib>...]...)
-
-The ``LINK_PUBLIC`` and ``LINK_PRIVATE`` modes can be used to specify both
-the link dependencies and the link interface in one command.
-
-This signature is for compatibility only.  Prefer the ``PUBLIC`` or
-``PRIVATE`` keywords instead.
-
-Libraries and targets following ``LINK_PUBLIC`` are linked to, and are
-made part of the :prop_tgt:`INTERFACE_LINK_LIBRARIES`.  If policy
-:policy:`CMP0022` is not ``NEW``, they are also made part of the
-:prop_tgt:`LINK_INTERFACE_LIBRARIES`.  Libraries and targets following
-``LINK_PRIVATE`` are linked to, but are not made part of the
-:prop_tgt:`INTERFACE_LINK_LIBRARIES` (or :prop_tgt:`LINK_INTERFACE_LIBRARIES`).
-
-Libraries for Dependents Only (Legacy)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  target_link_libraries(<target> LINK_INTERFACE_LIBRARIES <item>...)
-
-The ``LINK_INTERFACE_LIBRARIES`` mode appends the libraries to the
-:prop_tgt:`INTERFACE_LINK_LIBRARIES` target property instead of using them
-for linking.  If policy :policy:`CMP0022` is not ``NEW``, then this mode
-also appends libraries to the :prop_tgt:`LINK_INTERFACE_LIBRARIES` and its
-per-configuration equivalent.
-
-This signature is for compatibility only.  Prefer the ``INTERFACE`` mode
-instead.
-
-Libraries specified as ``debug`` are wrapped in a generator expression to
-correspond to debug builds.  If policy :policy:`CMP0022` is
-not ``NEW``, the libraries are also appended to the
-:prop_tgt:`LINK_INTERFACE_LIBRARIES_DEBUG <LINK_INTERFACE_LIBRARIES_<CONFIG>>`
-property (or to the properties corresponding to configurations listed in
-the :prop_gbl:`DEBUG_CONFIGURATIONS` global property if it is set).
-Libraries specified as ``optimized`` are appended to the
-:prop_tgt:`INTERFACE_LINK_LIBRARIES` property.  If policy :policy:`CMP0022`
-is not ``NEW``, they are also appended to the
-:prop_tgt:`LINK_INTERFACE_LIBRARIES` property.  Libraries specified as
-``general`` (or without any keyword) are treated as if specified for both
-``debug`` and ``optimized``.
-
-Linking Object Libraries
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-:ref:`Object Libraries` may be used as the ``<target>`` (first) argument
-of ``target_link_libraries`` to specify dependencies of their sources
-on other libraries.  For example, the code
-
-.. code-block:: cmake
-
-  add_library(A SHARED a.c)
-  target_compile_definitions(A PUBLIC A)
-
-  add_library(obj OBJECT obj.c)
-  target_compile_definitions(obj PUBLIC OBJ)
-  target_link_libraries(obj PUBLIC A)
-
-compiles ``obj.c`` with ``-DA -DOBJ`` and establishes usage requirements
-for ``obj`` that propagate to its dependents.
-
-Normal libraries and executables may link to :ref:`Object Libraries`
-to get their objects and usage requirements.  Continuing the above
-example, the code
-
-.. code-block:: cmake
-
-  add_library(B SHARED b.c)
-  target_link_libraries(B PUBLIC obj)
-
-compiles ``b.c`` with ``-DA -DOBJ``, creates shared library ``B``
-with object files from ``b.c`` and ``obj.c``, and links ``B`` to ``A``.
-Furthermore, the code
-
-.. code-block:: cmake
-
-  add_executable(main main.c)
-  target_link_libraries(main B)
-
-compiles ``main.c`` with ``-DA -DOBJ`` and links executable ``main``
-to ``B`` and ``A``.  The object library's usage requirements are
-propagated transitively through ``B``, but its object files are not.
-
-:ref:`Object Libraries` may "link" to other object libraries to get
-usage requirements, but since they do not have a link step nothing
-is done with their object files.  Continuing from the above example,
-the code:
-
-.. code-block:: cmake
-
-  add_library(obj2 OBJECT obj2.c)
-  target_link_libraries(obj2 PUBLIC obj)
-
-  add_executable(main2 main2.c)
-  target_link_libraries(main2 obj2)
-
-compiles ``obj2.c`` with ``-DA -DOBJ``, creates executable ``main2``
-with object files from ``main2.c`` and ``obj2.c``, and links ``main2``
-to ``A``.
-
-In other words, when :ref:`Object Libraries` appear in a target's
-:prop_tgt:`INTERFACE_LINK_LIBRARIES` property they will be
-treated as :ref:`Interface Libraries`, but when they appear in
-a target's :prop_tgt:`LINK_LIBRARIES` property their object files
-will be included in the link too.
-
-Cyclic Dependencies of Static Libraries
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The library dependency graph is normally acyclic (a DAG), but in the case
-of mutually-dependent ``STATIC`` libraries CMake allows the graph to
-contain cycles (strongly connected components).  When another target links
-to one of the libraries, CMake repeats the entire connected component.
-For example, the code
-
-.. code-block:: cmake
-
-  add_library(A STATIC a.c)
-  add_library(B STATIC b.c)
-  target_link_libraries(A B)
-  target_link_libraries(B A)
-  add_executable(main main.c)
-  target_link_libraries(main A)
-
-links ``main`` to ``A B A B``.  While one repetition is usually
-sufficient, pathological object file and symbol arrangements can require
-more.  One may handle such cases by using the
-:prop_tgt:`LINK_INTERFACE_MULTIPLICITY` target property or by manually
-repeating the component in the last ``target_link_libraries`` call.
-However, if two archives are really so interdependent they should probably
-be combined into a single archive, perhaps by using :ref:`Object Libraries`.
-
-Creating Relocatable Packages
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. |INTERFACE_PROPERTY_LINK| replace:: :prop_tgt:`INTERFACE_LINK_LIBRARIES`
-.. include:: /include/INTERFACE_LINK_LIBRARIES_WARNING.txt
diff --git a/share/cmake-3.18/Help/command/target_link_options.rst b/share/cmake-3.18/Help/command/target_link_options.rst
deleted file mode 100644
index 89038e3..0000000
--- a/share/cmake-3.18/Help/command/target_link_options.rst
+++ /dev/null
@@ -1,50 +0,0 @@
-target_link_options
--------------------
-
-Add options to the link step for an executable, shared library or module
-library target.
-
-.. code-block:: cmake
-
-  target_link_options(<target> [BEFORE]
-    <INTERFACE|PUBLIC|PRIVATE> [items1...]
-    [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
-
-The named ``<target>`` must have been created by a command such as
-:command:`add_executable` or :command:`add_library` and must not be an
-:ref:`ALIAS target <Alias Targets>`.
-
-This command can be used to add any link options, but alternative commands
-exist to add libraries (:command:`target_link_libraries` or
-:command:`link_libraries`).  See documentation of the
-:prop_dir:`directory <LINK_OPTIONS>` and
-:prop_tgt:`target <LINK_OPTIONS>` ``LINK_OPTIONS`` properties.
-
-.. note::
-
-  This command cannot be used to add options for static library targets,
-  since they do not use a linker.  To add archiver or MSVC librarian flags,
-  see the :prop_tgt:`STATIC_LIBRARY_OPTIONS` target property.
-
-If ``BEFORE`` is specified, the content will be prepended to the property
-instead of being appended.
-
-The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
-specify the scope of the following arguments.  ``PRIVATE`` and ``PUBLIC``
-items will populate the :prop_tgt:`LINK_OPTIONS` property of
-``<target>``.  ``PUBLIC`` and ``INTERFACE`` items will populate the
-:prop_tgt:`INTERFACE_LINK_OPTIONS` property of ``<target>``.
-(:ref:`IMPORTED targets <Imported Targets>` only support ``INTERFACE`` items.)
-The following arguments specify link options.  Repeated calls for the same
-``<target>`` append items in the order called.
-
-Arguments to ``target_link_options`` may use "generator expressions"
-with the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
-manual for more on defining buildsystem properties.
-
-.. include:: DEVICE_LINK_OPTIONS.txt
-
-.. include:: OPTIONS_SHELL.txt
-
-.. include:: LINK_OPTIONS_LINKER.txt
diff --git a/share/cmake-3.18/Help/command/target_precompile_headers.rst b/share/cmake-3.18/Help/command/target_precompile_headers.rst
deleted file mode 100644
index d4280b1..0000000
--- a/share/cmake-3.18/Help/command/target_precompile_headers.rst
+++ /dev/null
@@ -1,123 +0,0 @@
-target_precompile_headers
--------------------------
-
-Add a list of header files to precompile.
-
-Precompiling header files can speed up compilation by creating a partially
-processed version of some header files, and then using that version during
-compilations rather than repeatedly parsing the original headers.
-
-Main Form
-^^^^^^^^^
-
-.. code-block:: cmake
-
-  target_precompile_headers(<target>
-    <INTERFACE|PUBLIC|PRIVATE> [header1...]
-    [<INTERFACE|PUBLIC|PRIVATE> [header2...] ...])
-
-The command adds header files to the :prop_tgt:`PRECOMPILE_HEADERS` and/or
-:prop_tgt:`INTERFACE_PRECOMPILE_HEADERS` target properties of ``<target>``.
-The named ``<target>`` must have been created by a command such as
-:command:`add_executable` or :command:`add_library` and must not be an
-:ref:`ALIAS target <Alias Targets>`.
-
-The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
-specify the scope of the following arguments.  ``PRIVATE`` and ``PUBLIC``
-items will populate the :prop_tgt:`PRECOMPILE_HEADERS` property of
-``<target>``.  ``PUBLIC`` and ``INTERFACE`` items will populate the
-:prop_tgt:`INTERFACE_PRECOMPILE_HEADERS` property of ``<target>``
-(:ref:`IMPORTED targets <Imported Targets>` only support ``INTERFACE`` items).
-Repeated calls for the same ``<target>`` will append items in the order called.
-
-Projects should generally avoid using ``PUBLIC`` or ``INTERFACE`` for targets
-that will be :ref:`exported <install(EXPORT)>`, or they should at least use
-the ``$<BUILD_INTERFACE:...>`` generator expression to prevent precompile
-headers from appearing in an installed exported target.  Consumers of a target
-should typically be in control of what precompile headers they use, not have
-precompile headers forced on them by the targets being consumed (since
-precompile headers are not typically usage requirements).  A notable exception
-to this is where an :ref:`interface library <Interface Libraries>` is created
-to define a commonly used set of precompile headers in one place and then other
-targets link to that interface library privately.  In this case, the interface
-library exists specifically to propagate the precompile headers to its
-consumers and the consumer is effectively still in control, since it decides
-whether to link to the interface library or not.
-
-The list of header files is used to generate a header file named
-``cmake_pch.h|xx`` which is used to generate the precompiled header file
-(``.pch``, ``.gch``, ``.pchi``) artifact.  The ``cmake_pch.h|xx`` header
-file will be force included (``-include`` for GCC, ``/FI`` for MSVC) to
-all source files, so sources do not need to have ``#include "pch.h"``.
-
-Header file names specified with angle brackets (e.g. ``<unordered_map>``) or
-explicit double quotes (escaped for the :manual:`cmake-language(7)`,
-e.g. ``[["other_header.h"]]``) will be treated as is, and include directories
-must be available for the compiler to find them.  Other header file names
-(e.g. ``project_header.h``) are interpreted as being relative to the current
-source directory (e.g. :variable:`CMAKE_CURRENT_SOURCE_DIR`) and will be
-included by absolute path.  For example:
-
-.. code-block:: cmake
-
-  target_precompile_headers(myTarget
-    PUBLIC
-      project_header.h
-    PRIVATE
-      [["other_header.h"]]
-      <unordered_map>
-  )
-
-Arguments to ``target_precompile_headers()`` may use "generator expressions"
-with the syntax ``$<...>``.
-See the :manual:`cmake-generator-expressions(7)` manual for available
-expressions.
-The ``$<COMPILE_LANGUAGE:...>`` generator expression is particularly
-useful for specifying a language-specific header to precompile for
-only one language (e.g. ``CXX`` and not ``C``).  In this case, header
-file names that are not explicitly in double quotes or angle brackets
-must be specified by absolute path.  Also, when specifying angle brackets
-inside a generator expression, be sure to encode the closing ``>`` as
-``$<ANGLE-R>``.  For example:
-
-.. code-block:: cmake
-
-  target_precompile_headers(mylib PRIVATE
-    "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/cxx_only.h>"
-    "$<$<COMPILE_LANGUAGE:C>:<stddef.h$<ANGLE-R>>"
-    "$<$<COMPILE_LANGUAGE:CXX>:<cstddef$<ANGLE-R>>"
-  )
-
-
-Reusing Precompile Headers
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The command also supports a second signature which can be used to specify that
-one target re-uses a precompiled header file artifact from another target
-instead of generating its own:
-
-.. code-block:: cmake
-
-  target_precompile_headers(<target> REUSE_FROM <other_target>)
-
-This form sets the :prop_tgt:`PRECOMPILE_HEADERS_REUSE_FROM` property to
-``<other_target>`` and adds a dependency such that ``<target>`` will depend
-on ``<other_target>``.  CMake will halt with an error if the
-:prop_tgt:`PRECOMPILE_HEADERS` property of ``<target>`` is already set when
-the ``REUSE_FROM`` form is used.
-
-.. note::
-
-  The ``REUSE_FROM`` form requires the same set of compiler options,
-  compiler flags and compiler definitions for both ``<target>`` and
-  ``<other_target>``.  Some compilers (e.g. GCC) may issue a warning if the
-  precompiled header file cannot be used (``-Winvalid-pch``).
-
-See Also
-^^^^^^^^
-
-To disable precompile headers for specific targets, see the
-:prop_tgt:`DISABLE_PRECOMPILE_HEADERS` target property.
-
-To prevent precompile headers from being used when compiling a specific
-source file, see the :prop_sf:`SKIP_PRECOMPILE_HEADERS` source file property.
diff --git a/share/cmake-3.18/Help/command/target_sources.rst b/share/cmake-3.18/Help/command/target_sources.rst
deleted file mode 100644
index 27e737b..0000000
--- a/share/cmake-3.18/Help/command/target_sources.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-target_sources
---------------
-
-Add sources to a target.
-
-.. code-block:: cmake
-
-  target_sources(<target>
-    <INTERFACE|PUBLIC|PRIVATE> [items1...]
-    [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
-
-Specifies sources to use when compiling a given target.  Relative
-source file paths are interpreted as being relative to the current
-source directory (i.e. :variable:`CMAKE_CURRENT_SOURCE_DIR`).  The
-named ``<target>`` must have been created by a command such as
-:command:`add_executable` or :command:`add_library` and must not be an
-:ref:`ALIAS target <Alias Targets>`.
-
-The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
-specify the scope of the following arguments.  ``PRIVATE`` and ``PUBLIC``
-items will populate the :prop_tgt:`SOURCES` property of
-``<target>``.  ``PUBLIC`` and ``INTERFACE`` items will populate the
-:prop_tgt:`INTERFACE_SOURCES` property of ``<target>``.
-(:ref:`IMPORTED targets <Imported Targets>` only support ``INTERFACE`` items.)
-The following arguments specify sources.  Repeated calls for the same
-``<target>`` append items in the order called.
-
-Arguments to ``target_sources`` may use "generator expressions"
-with the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
-manual for more on defining buildsystem properties.
-
-See also the :policy:`CMP0076` policy for older behavior related to the
-handling of relative source file paths.
diff --git a/share/cmake-3.18/Help/command/try_compile.rst b/share/cmake-3.18/Help/command/try_compile.rst
deleted file mode 100644
index 323077a..0000000
--- a/share/cmake-3.18/Help/command/try_compile.rst
+++ /dev/null
@@ -1,192 +0,0 @@
-try_compile
------------
-
-.. only:: html
-
-   .. contents::
-
-Try building some code.
-
-Try Compiling Whole Projects
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  try_compile(<resultVar> <bindir> <srcdir>
-              <projectName> [<targetName>] [CMAKE_FLAGS <flags>...]
-              [OUTPUT_VARIABLE <var>])
-
-Try building a project.  The success or failure of the ``try_compile``,
-i.e. ``TRUE`` or ``FALSE`` respectively, is returned in ``<resultVar>``.
-
-In this form, ``<srcdir>`` should contain a complete CMake project with a
-``CMakeLists.txt`` file and all sources.  The ``<bindir>`` and ``<srcdir>``
-will not be deleted after this command is run.  Specify ``<targetName>`` to
-build a specific target instead of the ``all`` or ``ALL_BUILD`` target.  See
-below for the meaning of other options.
-
-Try Compiling Source Files
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  try_compile(<resultVar> <bindir> <srcfile|SOURCES srcfile...>
-              [CMAKE_FLAGS <flags>...]
-              [COMPILE_DEFINITIONS <defs>...]
-              [LINK_OPTIONS <options>...]
-              [LINK_LIBRARIES <libs>...]
-              [OUTPUT_VARIABLE <var>]
-              [COPY_FILE <fileName> [COPY_FILE_ERROR <var>]]
-              [<LANG>_STANDARD <std>]
-              [<LANG>_STANDARD_REQUIRED <bool>]
-              [<LANG>_EXTENSIONS <bool>]
-              )
-
-Try building an executable or static library from one or more source files
-(which one is determined by the :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE`
-variable).  The success or failure of the ``try_compile``, i.e. ``TRUE`` or
-``FALSE`` respectively, is returned in ``<resultVar>``.
-
-In this form, one or more source files must be provided.  If
-:variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` is unset or is set to ``EXECUTABLE``,
-the sources must include a definition for ``main`` and CMake will create a
-``CMakeLists.txt`` file to build the source(s) as an executable.
-If :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` is set to ``STATIC_LIBRARY``,
-a static library will be built instead and no definition for ``main`` is
-required.  For an executable, the generated ``CMakeLists.txt`` file would
-contain something like the following:
-
-.. code-block:: cmake
-
-  add_definitions(<expanded COMPILE_DEFINITIONS from caller>)
-  include_directories(${INCLUDE_DIRECTORIES})
-  link_directories(${LINK_DIRECTORIES})
-  add_executable(cmTryCompileExec <srcfile>...)
-  target_link_options(cmTryCompileExec PRIVATE <LINK_OPTIONS from caller>)
-  target_link_libraries(cmTryCompileExec ${LINK_LIBRARIES})
-
-The options are:
-
-``CMAKE_FLAGS <flags>...``
-  Specify flags of the form ``-DVAR:TYPE=VALUE`` to be passed to
-  the ``cmake`` command-line used to drive the test build.
-  The above example shows how values for variables
-  ``INCLUDE_DIRECTORIES``, ``LINK_DIRECTORIES``, and ``LINK_LIBRARIES``
-  are used.
-
-``COMPILE_DEFINITIONS <defs>...``
-  Specify ``-Ddefinition`` arguments to pass to :command:`add_definitions`
-  in the generated test project.
-
-``COPY_FILE <fileName>``
-  Copy the built executable or static library to the given ``<fileName>``.
-
-``COPY_FILE_ERROR <var>``
-  Use after ``COPY_FILE`` to capture into variable ``<var>`` any error
-  message encountered while trying to copy the file.
-
-``LINK_LIBRARIES <libs>...``
-  Specify libraries to be linked in the generated project.
-  The list of libraries may refer to system libraries and to
-  :ref:`Imported Targets <Imported Targets>` from the calling project.
-
-  If this option is specified, any ``-DLINK_LIBRARIES=...`` value
-  given to the ``CMAKE_FLAGS`` option will be ignored.
-
-``LINK_OPTIONS <options>...``
-  Specify link step options to pass to :command:`target_link_options` or to
-  set the :prop_tgt:`STATIC_LIBRARY_OPTIONS` target property in the generated
-  project, depending on the :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable.
-
-``OUTPUT_VARIABLE <var>``
-  Store the output from the build process in the given variable.
-
-``<LANG>_STANDARD <std>``
-  Specify the :prop_tgt:`C_STANDARD`, :prop_tgt:`CXX_STANDARD`,
-  :prop_tgt:`OBJC_STANDARD`, :prop_tgt:`OBJCXX_STANDARD`,
-  or :prop_tgt:`CUDA_STANDARD` target property of the generated project.
-
-``<LANG>_STANDARD_REQUIRED <bool>``
-  Specify the :prop_tgt:`C_STANDARD_REQUIRED`,
-  :prop_tgt:`CXX_STANDARD_REQUIRED`, :prop_tgt:`OBJC_STANDARD_REQUIRED`,
-  :prop_tgt:`OBJCXX_STANDARD_REQUIRED`,or :prop_tgt:`CUDA_STANDARD_REQUIRED`
-  target property of the generated project.
-
-``<LANG>_EXTENSIONS <bool>``
-  Specify the :prop_tgt:`C_EXTENSIONS`, :prop_tgt:`CXX_EXTENSIONS`,
-  :prop_tgt:`OBJC_EXTENSIONS`, :prop_tgt:`OBJCXX_EXTENSIONS`,
-  or :prop_tgt:`CUDA_EXTENSIONS` target property of the generated project.
-
-In this version all files in ``<bindir>/CMakeFiles/CMakeTmp`` will be
-cleaned automatically.  For debugging, ``--debug-trycompile`` can be
-passed to ``cmake`` to avoid this clean.  However, multiple sequential
-``try_compile`` operations reuse this single output directory.  If you use
-``--debug-trycompile``, you can only debug one ``try_compile`` call at a time.
-The recommended procedure is to protect all ``try_compile`` calls in your
-project by ``if(NOT DEFINED <resultVar>)`` logic, configure with cmake
-all the way through once, then delete the cache entry associated with
-the try_compile call of interest, and then re-run cmake again with
-``--debug-trycompile``.
-
-Other Behavior Settings
-^^^^^^^^^^^^^^^^^^^^^^^
-
-If set, the following variables are passed in to the generated
-try_compile CMakeLists.txt to initialize compile target properties with
-default values:
-
-* :variable:`CMAKE_CUDA_RUNTIME_LIBRARY`
-* :variable:`CMAKE_ENABLE_EXPORTS`
-* :variable:`CMAKE_LINK_SEARCH_START_STATIC`
-* :variable:`CMAKE_LINK_SEARCH_END_STATIC`
-* :variable:`CMAKE_MSVC_RUNTIME_LIBRARY`
-* :variable:`CMAKE_POSITION_INDEPENDENT_CODE`
-
-If :policy:`CMP0056` is set to ``NEW``, then
-:variable:`CMAKE_EXE_LINKER_FLAGS` is passed in as well.
-
-If :policy:`CMP0083` is set to ``NEW``, then in order to obtain correct
-behavior at link time, the ``check_pie_supported()`` command from the
-:module:`CheckPIESupported` module must be called before using the
-:command:`try_compile` command.
-
-The current settings of :policy:`CMP0065` and :policy:`CMP0083` are propagated
-through to the generated test project.
-
-Set the :variable:`CMAKE_TRY_COMPILE_CONFIGURATION` variable to choose
-a build configuration.
-
-Set the :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable to specify
-the type of target used for the source file signature.
-
-Set the :variable:`CMAKE_TRY_COMPILE_PLATFORM_VARIABLES` variable to specify
-variables that must be propagated into the test project.  This variable is
-meant for use only in toolchain files and is only honored by the
-``try_compile()`` command for the source files form, not when given a whole
-project.
-
-If :policy:`CMP0067` is set to ``NEW``, or any of the ``<LANG>_STANDARD``,
-``<LANG>_STANDARD_REQUIRED``, or ``<LANG>_EXTENSIONS`` options are used,
-then the language standard variables are honored:
-
-* :variable:`CMAKE_C_STANDARD`
-* :variable:`CMAKE_C_STANDARD_REQUIRED`
-* :variable:`CMAKE_C_EXTENSIONS`
-* :variable:`CMAKE_CXX_STANDARD`
-* :variable:`CMAKE_CXX_STANDARD_REQUIRED`
-* :variable:`CMAKE_CXX_EXTENSIONS`
-* :variable:`CMAKE_OBJC_STANDARD`
-* :variable:`CMAKE_OBJC_STANDARD_REQUIRED`
-* :variable:`CMAKE_OBJC_EXTENSIONS`
-* :variable:`CMAKE_OBJCXX_STANDARD`
-* :variable:`CMAKE_OBJCXX_STANDARD_REQUIRED`
-* :variable:`CMAKE_OBJCXX_EXTENSIONS`
-* :variable:`CMAKE_CUDA_STANDARD`
-* :variable:`CMAKE_CUDA_STANDARD_REQUIRED`
-* :variable:`CMAKE_CUDA_EXTENSIONS`
-
-Their values are used to set the corresponding target properties in
-the generated project (unless overridden by an explicit option).
-
-For the :generator:`Green Hills MULTI` generator the GHS toolset and target
-system customization cache variables are also propagated into the test project.
diff --git a/share/cmake-3.18/Help/command/try_run.rst b/share/cmake-3.18/Help/command/try_run.rst
deleted file mode 100644
index d401ebe..0000000
--- a/share/cmake-3.18/Help/command/try_run.rst
+++ /dev/null
@@ -1,103 +0,0 @@
-try_run
--------
-
-.. only:: html
-
-   .. contents::
-
-Try compiling and then running some code.
-
-Try Compiling and Running Source Files
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  try_run(<runResultVar> <compileResultVar>
-          <bindir> <srcfile> [CMAKE_FLAGS <flags>...]
-          [COMPILE_DEFINITIONS <defs>...]
-          [LINK_OPTIONS <options>...]
-          [LINK_LIBRARIES <libs>...]
-          [COMPILE_OUTPUT_VARIABLE <var>]
-          [RUN_OUTPUT_VARIABLE <var>]
-          [OUTPUT_VARIABLE <var>]
-          [ARGS <args>...])
-
-Try compiling a ``<srcfile>``.  Returns ``TRUE`` or ``FALSE`` for success
-or failure in ``<compileResultVar>``.  If the compile succeeded, runs the
-executable and returns its exit code in ``<runResultVar>``.  If the
-executable was built, but failed to run, then ``<runResultVar>`` will be
-set to ``FAILED_TO_RUN``.  See the :command:`try_compile` command for
-information on how the test project is constructed to build the source file.
-
-The options are:
-
-``CMAKE_FLAGS <flags>...``
-  Specify flags of the form ``-DVAR:TYPE=VALUE`` to be passed to
-  the ``cmake`` command-line used to drive the test build.
-  The example in :command:`try_compile` shows how values for variables
-  ``INCLUDE_DIRECTORIES``, ``LINK_DIRECTORIES``, and ``LINK_LIBRARIES``
-  are used.
-
-``COMPILE_DEFINITIONS <defs>...``
-  Specify ``-Ddefinition`` arguments to pass to :command:`add_definitions`
-  in the generated test project.
-
-``COMPILE_OUTPUT_VARIABLE <var>``
-  Report the compile step build output in a given variable.
-
-``LINK_LIBRARIES <libs>...``
-  Specify libraries to be linked in the generated project.
-  The list of libraries may refer to system libraries and to
-  :ref:`Imported Targets <Imported Targets>` from the calling project.
-
-  If this option is specified, any ``-DLINK_LIBRARIES=...`` value
-  given to the ``CMAKE_FLAGS`` option will be ignored.
-
-``LINK_OPTIONS <options>...``
-  Specify link step options to pass to :command:`target_link_options` in the
-  generated project.
-
-``OUTPUT_VARIABLE <var>``
-  Report the compile build output and the output from running the executable
-  in the given variable.  This option exists for legacy reasons.  Prefer
-  ``COMPILE_OUTPUT_VARIABLE`` and ``RUN_OUTPUT_VARIABLE`` instead.
-
-``RUN_OUTPUT_VARIABLE <var>``
-  Report the output from running the executable in a given variable.
-
-Other Behavior Settings
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Set the :variable:`CMAKE_TRY_COMPILE_CONFIGURATION` variable to choose
-a build configuration.
-
-Behavior when Cross Compiling
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When cross compiling, the executable compiled in the first step
-usually cannot be run on the build host.  The ``try_run`` command checks
-the :variable:`CMAKE_CROSSCOMPILING` variable to detect whether CMake is in
-cross-compiling mode.  If that is the case, it will still try to compile
-the executable, but it will not try to run the executable unless the
-:variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable is set.  Instead it
-will create cache variables which must be filled by the user or by
-presetting them in some CMake script file to the values the executable
-would have produced if it had been run on its actual target platform.
-These cache entries are:
-
-``<runResultVar>``
-  Exit code if the executable were to be run on the target platform.
-
-``<runResultVar>__TRYRUN_OUTPUT``
-  Output from stdout and stderr if the executable were to be run on
-  the target platform.  This is created only if the
-  ``RUN_OUTPUT_VARIABLE`` or ``OUTPUT_VARIABLE`` option was used.
-
-In order to make cross compiling your project easier, use ``try_run``
-only if really required.  If you use ``try_run``, use the
-``RUN_OUTPUT_VARIABLE`` or ``OUTPUT_VARIABLE`` options only if really
-required.  Using them will require that when cross-compiling, the cache
-variables will have to be set manually to the output of the executable.
-You can also "guard" the calls to ``try_run`` with an :command:`if`
-block checking the :variable:`CMAKE_CROSSCOMPILING` variable and
-provide an easy-to-preset alternative for this case.
diff --git a/share/cmake-3.18/Help/command/variable_watch.rst b/share/cmake-3.18/Help/command/variable_watch.rst
deleted file mode 100644
index ce69bcf..0000000
--- a/share/cmake-3.18/Help/command/variable_watch.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-variable_watch
---------------
-
-Watch the CMake variable for change.
-
-.. code-block:: cmake
-
-  variable_watch(<variable> [<command>])
-
-If the specified ``<variable>`` changes, a message will be printed
-to inform about the change.
-
-Additionally, if ``<command>`` is given, this command will be executed.
-The command will receive the following arguments:
-``COMMAND(<variable> <access> <value> <current_list_file> <stack>)``
diff --git a/share/cmake-3.18/Help/cpack_gen/archive.rst b/share/cmake-3.18/Help/cpack_gen/archive.rst
deleted file mode 100644
index 3656aa2..0000000
--- a/share/cmake-3.18/Help/cpack_gen/archive.rst
+++ /dev/null
@@ -1,75 +0,0 @@
-CPack Archive Generator
------------------------
-
-CPack generator for packaging files into an archive, which can have
-any of the following formats:
-
-  - 7Z - 7zip - (.7z)
-  - TBZ2 (.tar.bz2)
-  - TGZ (.tar.gz)
-  - TXZ (.tar.xz)
-  - TZ (.tar.Z)
-  - TZST (.tar.zst)
-  - ZIP (.zip)
-
-When this generator is called from ``CPackSourceConfig.cmake`` (or through
-the ``package_source`` target), then the generated archive will contain all
-files in the project directory, except those specified in
-:variable:`CPACK_SOURCE_IGNORE_FILES`.  The following is one example of
-packaging all source files of a project:
-
-.. code-block:: cmake
-
-  set(CPACK_SOURCE_GENERATOR "TGZ")
-  set(CPACK_SOURCE_IGNORE_FILES
-    \\.git/
-    build/
-    ".*~$"
-  )
-  set(CPACK_VERBATIM_VARIABLES YES)
-  include(CPack)
-
-When this generator is called from ``CPackConfig.cmake`` (or through the
-``package`` target), then the generated archive will contain all files
-that have been installed via CMake's :command:`install` command (and the
-deprecated commands :command:`install_files`, :command:`install_programs`,
-and :command:`install_targets`).
-
-Variables specific to CPack Archive generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. variable:: CPACK_ARCHIVE_FILE_NAME
-              CPACK_ARCHIVE_<component>_FILE_NAME
-
-  Package file name without extension. The extension is determined from the
-  archive format (see list above) and automatically appended to the file name.
-  The default is ``<CPACK_PACKAGE_FILE_NAME>[-<component>]``, with spaces
-  replaced by '-'.
-
-.. variable:: CPACK_ARCHIVE_COMPONENT_INSTALL
-
-  Enable component packaging. If enabled (ON), then the archive generator
-  creates  multiple packages. The default is OFF, which means that a single
-  package containing files of all components is generated.
-
-Variables used by CPack Archive generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-These variables are used by the Archive generator, but are also available to
-CPack generators which are essentially archives at their core. These include:
-
-  - :cpack_gen:`CPack Cygwin Generator`
-  - :cpack_gen:`CPack FreeBSD Generator`
-
-.. variable:: CPACK_ARCHIVE_THREADS
-
-  The number of threads to use when performing the compression. If set to
-  ``0``, the number of available cores on the machine will be used instead.
-  The default is ``1`` which limits compression to a single thread. Note that
-  not all compression modes support threading in all environments. Currently,
-  only the XZ compression may support it.
-
-.. note::
-
-    Official CMake binaries available on ``cmake.org`` ship with a ``liblzma``
-    that does not support parallel compression.
diff --git a/share/cmake-3.18/Help/cpack_gen/bundle.rst b/share/cmake-3.18/Help/cpack_gen/bundle.rst
deleted file mode 100644
index b16dbda..0000000
--- a/share/cmake-3.18/Help/cpack_gen/bundle.rst
+++ /dev/null
@@ -1,66 +0,0 @@
-CPack Bundle Generator
-----------------------
-
-CPack Bundle generator (macOS) specific options
-
-Variables specific to CPack Bundle generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Installers built on macOS using the Bundle generator use the
-aforementioned DragNDrop (``CPACK_DMG_xxx``) variables, plus the following
-Bundle-specific parameters (``CPACK_BUNDLE_xxx``).
-
-.. variable:: CPACK_BUNDLE_NAME
-
- The name of the generated bundle. This appears in the macOS Finder as the
- bundle name. Required.
-
-.. variable:: CPACK_BUNDLE_PLIST
-
- Path to an macOS Property List (``.plist``) file that will be used
- for the generated bundle. This
- assumes that the caller has generated or specified their own ``Info.plist``
- file. Required.
-
-.. variable:: CPACK_BUNDLE_ICON
-
- Path to an macOS icon file that will be used as the icon for the generated
- bundle. This is the icon that appears in the macOS Finder for the bundle, and
- in the macOS dock when the bundle is opened. Required.
-
-.. variable:: CPACK_BUNDLE_STARTUP_COMMAND
-
- Path to a startup script. This is a path to an executable or script that
- will be run whenever an end-user double-clicks the generated bundle in the
- macOS Finder. Optional.
-
-.. variable:: CPACK_BUNDLE_APPLE_CERT_APP
-
- The name of your Apple supplied code signing certificate for the application.
- The name usually takes the form ``Developer ID Application: [Name]`` or
- ``3rd Party Mac Developer Application: [Name]``. If this variable is not set
- the application will not be signed.
-
-.. variable:: CPACK_BUNDLE_APPLE_ENTITLEMENTS
-
- The name of the Property List (``.plist``) file that contains your Apple
- entitlements for sandboxing your application. This file is required
- for submission to the macOS App Store.
-
-.. variable:: CPACK_BUNDLE_APPLE_CODESIGN_FILES
-
- A list of additional files that you wish to be signed. You do not need to
- list the main application folder, or the main executable. You should
- list any frameworks and plugins that are included in your app bundle.
-
-.. variable:: CPACK_BUNDLE_APPLE_CODESIGN_PARAMETER
-
- Additional parameter that will passed to ``codesign``.
- Default value: ``--deep -f``
-
-.. variable:: CPACK_COMMAND_CODESIGN
-
- Path to the ``codesign(1)`` command used to sign applications with an
- Apple cert. This variable can be used to override the automatically
- detected command (or specify its location if the auto-detection fails
- to find it).
diff --git a/share/cmake-3.18/Help/cpack_gen/cygwin.rst b/share/cmake-3.18/Help/cpack_gen/cygwin.rst
deleted file mode 100644
index c65653e..0000000
--- a/share/cmake-3.18/Help/cpack_gen/cygwin.rst
+++ /dev/null
@@ -1,28 +0,0 @@
-CPack Cygwin Generator
-----------------------
-
-Cygwin CPack generator (Cygwin).
-
-Variables affecting the CPack Cygwin generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-  - :variable:`CPACK_ARCHIVE_THREADS`
-
-Variables specific to CPack Cygwin generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The
-following variable is specific to installers build on and/or for
-Cygwin:
-
-.. variable:: CPACK_CYGWIN_PATCH_NUMBER
-
- The Cygwin patch number.  FIXME: This documentation is incomplete.
-
-.. variable:: CPACK_CYGWIN_PATCH_FILE
-
- The Cygwin patch file.  FIXME: This documentation is incomplete.
-
-.. variable:: CPACK_CYGWIN_BUILD_SCRIPT
-
- The Cygwin build script.  FIXME: This documentation is incomplete.
diff --git a/share/cmake-3.18/Help/cpack_gen/deb.rst b/share/cmake-3.18/Help/cpack_gen/deb.rst
deleted file mode 100644
index bf50c55..0000000
--- a/share/cmake-3.18/Help/cpack_gen/deb.rst
+++ /dev/null
@@ -1,565 +0,0 @@
-CPack DEB Generator
--------------------
-
-The built in (binary) CPack DEB generator (Unix only)
-
-Variables specific to CPack Debian (DEB) generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The CPack DEB generator may be used to create DEB package using :module:`CPack`.
-The CPack DEB generator is a :module:`CPack` generator thus it uses the
-``CPACK_XXX`` variables used by :module:`CPack`.
-
-The CPack DEB generator should work on any Linux host but it will produce
-better deb package when Debian specific tools ``dpkg-xxx`` are usable on
-the build system.
-
-The CPack DEB generator has specific features which are controlled by the
-specifics ``CPACK_DEBIAN_XXX`` variables.
-
-``CPACK_DEBIAN_<COMPONENT>_XXXX`` variables may be used in order to have
-**component** specific values.  Note however that ``<COMPONENT>`` refers to
-the **grouping name** written in upper case. It may be either a component name
-or a component GROUP name.
-
-Here are some CPack DEB generator wiki resources that are here for historic
-reasons and are no longer maintained but may still prove useful:
-
- - https://gitlab.kitware.com/cmake/community/-/wikis/doc/cpack/Configuration
- - https://gitlab.kitware.com/cmake/community/-/wikis/doc/cpack/PackageGenerators#deb-unix-only
-
-List of CPack DEB generator specific variables:
-
-.. variable:: CPACK_DEB_COMPONENT_INSTALL
-
- Enable component packaging for CPackDEB
-
- * Mandatory : NO
- * Default   : OFF
-
- If enabled (ON) multiple packages are generated. By default a single package
- containing files of all components is generated.
-
-.. variable:: CPACK_DEBIAN_PACKAGE_NAME
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_NAME
-
- Set Package control field (variable is automatically transformed to lower
- case).
-
- * Mandatory : YES
- * Default   :
-
-   - :variable:`CPACK_PACKAGE_NAME` for non-component based
-     installations
-   - :variable:`CPACK_DEBIAN_PACKAGE_NAME` suffixed with -<COMPONENT>
-     for component-based installations.
-
- See https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source
-
-.. variable:: CPACK_DEBIAN_FILE_NAME
-              CPACK_DEBIAN_<COMPONENT>_FILE_NAME
-
- Package file name.
-
- * Mandatory : YES
- * Default   : ``<CPACK_PACKAGE_FILE_NAME>[-<component>].deb``
-
- This may be set to ``DEB-DEFAULT`` to allow the CPack DEB generator to generate
- package file name by itself in deb format::
-
-   <PackageName>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
-
- Alternatively provided package file name must end
- with either ``.deb`` or ``.ipk`` suffix.
-
- .. note::
-
-   Preferred setting of this variable is ``DEB-DEFAULT`` but for backward
-   compatibility with the CPack DEB generator in CMake prior to version 3.6 this
-   feature is disabled by default.
-
- .. note::
-
-   By using non default filenames duplicate names may occur. Duplicate files
-   get overwritten and it is up to the packager to set the variables in a
-   manner that will prevent such errors.
-
-.. variable:: CPACK_DEBIAN_PACKAGE_EPOCH
-
- The Debian package epoch
-
- * Mandatory : No
- * Default   : -
-
- Optional number that should be incremented when changing versioning schemas
- or fixing mistakes in the version numbers of older packages.
-
-.. variable:: CPACK_DEBIAN_PACKAGE_VERSION
-
- The Debian package version
-
- * Mandatory : YES
- * Default   : :variable:`CPACK_PACKAGE_VERSION`
-
- This variable may contain only alphanumerics (A-Za-z0-9) and the characters
- . + - ~ (full stop, plus, hyphen, tilde) and should start with a digit. If
- :variable:`CPACK_DEBIAN_PACKAGE_RELEASE` is not set then hyphens are not
- allowed.
-
- .. note::
-
-   For backward compatibility with CMake 3.9 and lower a failed test of this
-   variable's content is not a hard error when both
-   :variable:`CPACK_DEBIAN_PACKAGE_RELEASE` and
-   :variable:`CPACK_DEBIAN_PACKAGE_EPOCH` variables are not set. An author
-   warning is reported instead.
-
-.. variable:: CPACK_DEBIAN_PACKAGE_RELEASE
-
- The Debian package release - Debian revision number.
-
- * Mandatory : No
- * Default   : -
-
- This is the numbering of the DEB package itself, i.e. the version of the
- packaging and not the version of the content (see
- :variable:`CPACK_DEBIAN_PACKAGE_VERSION`). One may change the default value
- if the previous packaging was buggy and/or you want to put here a fancy Linux
- distro specific numbering.
-
-.. variable:: CPACK_DEBIAN_PACKAGE_ARCHITECTURE
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE
-
- The Debian package architecture
-
- * Mandatory : YES
- * Default   : Output of ``dpkg --print-architecture`` (or ``i386``
-   if ``dpkg`` is not found)
-
-.. variable:: CPACK_DEBIAN_PACKAGE_DEPENDS
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS
-
- Sets the Debian dependencies of this package.
-
- * Mandatory : NO
- * Default   :
-
-   - An empty string for non-component based installations
-   - :variable:`CPACK_DEBIAN_PACKAGE_DEPENDS` for component-based
-     installations.
-
- .. note::
-
-   If :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS` or
-   more specifically :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPS`
-   is set for this component, the discovered dependencies will be appended
-   to :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS` instead of
-   :variable:`CPACK_DEBIAN_PACKAGE_DEPENDS`. If
-   :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS` is an empty string,
-   only the automatically discovered dependencies will be set for this
-   component.
-
- Example::
-
-   set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.3.1-6), libc6 (< 2.4)")
-
-.. variable:: CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS
-
- Sets inter component dependencies if listed with
- :variable:`CPACK_COMPONENT_<compName>_DEPENDS` variables.
-
- * Mandatory : NO
- * Default   : -
-
-.. variable:: CPACK_DEBIAN_PACKAGE_MAINTAINER
-
- The Debian package maintainer
-
- * Mandatory : YES
- * Default   : ``CPACK_PACKAGE_CONTACT``
-
-.. variable:: CPACK_DEBIAN_PACKAGE_DESCRIPTION
-              CPACK_DEBIAN_<COMPONENT>_DESCRIPTION
-
- The Debian package description
-
- * Mandatory : YES
- * Default   :
-
-   - :variable:`CPACK_DEBIAN_<COMPONENT>_DESCRIPTION` (component
-     based installers only) if set, or :variable:`CPACK_DEBIAN_PACKAGE_DESCRIPTION` if set, or
-   - :variable:`CPACK_COMPONENT_<compName>_DESCRIPTION` (component
-     based installers only) if set, or :variable:`CPACK_PACKAGE_DESCRIPTION` if set, or
-   - content of the file specified in :variable:`CPACK_PACKAGE_DESCRIPTION_FILE` if set
-
- If after that description is not set, :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY` going to be
- used if set. Otherwise, :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY` will be added as the first
- line of description as defined in `Debian Policy Manual`_.
-
-.. _Debian Policy Manual: https://www.debian.org/doc/debian-policy/ch-controlfields.html#description
-
-.. variable:: CPACK_DEBIAN_PACKAGE_SECTION
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_SECTION
-
- Set Section control field e.g. admin, devel, doc, ...
-
- * Mandatory : YES
- * Default   : "devel"
-
- See https://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections
-
-.. variable:: CPACK_DEBIAN_ARCHIVE_TYPE
-
- The archive format used for creating the Debian package.
-
- * Mandatory : YES
- * Default   : "gnutar"
-
- Possible value is:
-
- - gnutar
-
- .. note::
-
-   This variable previously defaulted to the ``paxr`` value, but ``dpkg``
-   has never supported that tar format. For backwards compatibility the
-   ``paxr`` value will be mapped to ``gnutar`` and a deprecation message
-   will be emitted.
-
-.. variable:: CPACK_DEBIAN_COMPRESSION_TYPE
-
- The compression used for creating the Debian package.
-
- * Mandatory : YES
- * Default   : "gzip"
-
- Possible values are:
-
- - lzma
- - xz
- - bzip2
- - gzip
-
-.. variable:: CPACK_DEBIAN_PACKAGE_PRIORITY
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_PRIORITY
-
- Set Priority control field e.g. required, important, standard, optional,
- extra
-
- * Mandatory : YES
- * Default   : "optional"
-
- See https://www.debian.org/doc/debian-policy/ch-archive.html#s-priorities
-
-.. variable:: CPACK_DEBIAN_PACKAGE_HOMEPAGE
-
- The URL of the web site for this package, preferably (when applicable) the
- site from which the original source can be obtained and any additional
- upstream documentation or information may be found.
-
- * Mandatory : NO
- * Default   : :variable:`CMAKE_PROJECT_HOMEPAGE_URL`
-
- .. note::
-
-   The content of this field is a simple URL without any surrounding
-   characters such as <>.
-
-.. variable:: CPACK_DEBIAN_PACKAGE_SHLIBDEPS
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPS
-
- May be set to ON in order to use ``dpkg-shlibdeps`` to generate
- better package dependency list.
-
- * Mandatory : NO
- * Default   :
-
-   - :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS` if set or
-   - OFF
-
- .. note::
-
-   You may need set :variable:`CMAKE_INSTALL_RPATH` to an appropriate value
-   if you use this feature, because if you don't ``dpkg-shlibdeps``
-   may fail to find your own shared libs.
-   See https://gitlab.kitware.com/cmake/community/-/wikis/doc/cmake/RPATH-handling
-
-.. variable:: CPACK_DEBIAN_PACKAGE_DEBUG
-
- May be set when invoking cpack in order to trace debug information
- during the CPack DEB generator run.
-
- * Mandatory : NO
- * Default   : -
-
-.. variable:: CPACK_DEBIAN_PACKAGE_PREDEPENDS
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_PREDEPENDS
-
- Sets the `Pre-Depends` field of the Debian package.
- Like :variable:`Depends <CPACK_DEBIAN_PACKAGE_DEPENDS>`, except that it
- also forces ``dpkg`` to complete installation of the packages named
- before even starting the installation of the package which declares the
- pre-dependency.
-
- * Mandatory : NO
- * Default   :
-
-   - An empty string for non-component based installations
-   - :variable:`CPACK_DEBIAN_PACKAGE_PREDEPENDS` for component-based
-     installations.
-
- See http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
-
-.. variable:: CPACK_DEBIAN_PACKAGE_ENHANCES
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_ENHANCES
-
- Sets the `Enhances` field of the Debian package.
- Similar to :variable:`Suggests <CPACK_DEBIAN_PACKAGE_SUGGESTS>` but works
- in the opposite direction: declares that a package can enhance the
- functionality of another package.
-
- * Mandatory : NO
- * Default   :
-
-   - An empty string for non-component based installations
-   - :variable:`CPACK_DEBIAN_PACKAGE_ENHANCES` for component-based
-     installations.
-
- See http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
-
-.. variable:: CPACK_DEBIAN_PACKAGE_BREAKS
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_BREAKS
-
- Sets the `Breaks` field of the Debian package.
- When a binary package (P) declares that it breaks other packages (B),
- ``dpkg`` will not allow the package (P) which declares `Breaks` be
- **unpacked** unless the packages that will be broken (B) are deconfigured
- first.
- As long as the package (P) is configured, the previously deconfigured
- packages (B) cannot be reconfigured again.
-
- * Mandatory : NO
- * Default   :
-
-   - An empty string for non-component based installations
-   - :variable:`CPACK_DEBIAN_PACKAGE_BREAKS` for component-based
-     installations.
-
- See https://www.debian.org/doc/debian-policy/ch-relationships.html#s-breaks
-
-.. variable:: CPACK_DEBIAN_PACKAGE_CONFLICTS
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONFLICTS
-
- Sets the `Conflicts` field of the Debian package.
- When one binary package declares a conflict with another using a `Conflicts`
- field, ``dpkg`` will not allow them to be unpacked on the system at
- the same time.
-
- * Mandatory : NO
- * Default   :
-
-   - An empty string for non-component based installations
-   - :variable:`CPACK_DEBIAN_PACKAGE_CONFLICTS` for component-based
-     installations.
-
- See https://www.debian.org/doc/debian-policy/ch-relationships.html#s-conflicts
-
- .. note::
-
-   This is a stronger restriction than
-   :variable:`Breaks <CPACK_DEBIAN_PACKAGE_BREAKS>`, which prevents the
-   broken package from being configured while the breaking package is in
-   the "Unpacked" state but allows both packages to be unpacked at the same
-   time.
-
-.. variable:: CPACK_DEBIAN_PACKAGE_PROVIDES
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_PROVIDES
-
- Sets the `Provides` field of the Debian package.
- A virtual package is one which appears in the `Provides` control field of
- another package.
-
- * Mandatory : NO
- * Default   :
-
-   - An empty string for non-component based installations
-   - :variable:`CPACK_DEBIAN_PACKAGE_PROVIDES` for component-based
-     installations.
-
- See https://www.debian.org/doc/debian-policy/ch-relationships.html#s-virtual
-
-.. variable:: CPACK_DEBIAN_PACKAGE_REPLACES
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_REPLACES
-
- Sets the `Replaces` field of the Debian package.
- Packages can declare in their control file that they should overwrite
- files in certain other packages, or completely replace other packages.
-
- * Mandatory : NO
- * Default   :
-
-   - An empty string for non-component based installations
-   - :variable:`CPACK_DEBIAN_PACKAGE_REPLACES` for component-based
-     installations.
-
- See http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
-
-.. variable:: CPACK_DEBIAN_PACKAGE_RECOMMENDS
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_RECOMMENDS
-
- Sets the `Recommends` field of the Debian package.
- Allows packages to declare a strong, but not absolute, dependency on other
- packages.
-
- * Mandatory : NO
- * Default   :
-
-   - An empty string for non-component based installations
-   - :variable:`CPACK_DEBIAN_PACKAGE_RECOMMENDS` for component-based
-     installations.
-
- See http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
-
-.. variable:: CPACK_DEBIAN_PACKAGE_SUGGESTS
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_SUGGESTS
-
- Sets the `Suggests` field of the Debian package.
- Allows packages to declare a suggested package install grouping.
-
- * Mandatory : NO
- * Default   :
-
-   - An empty string for non-component based installations
-   - :variable:`CPACK_DEBIAN_PACKAGE_SUGGESTS` for component-based
-     installations.
-
- See http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
-
-.. variable:: CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS
-
- * Mandatory : NO
- * Default   : OFF
-
- Allows to generate shlibs control file automatically. Compatibility is defined by
- :variable:`CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY` variable value.
-
- .. note::
-
-   Libraries are only considered if they have both library name and version
-   set. This can be done by setting SOVERSION property with
-   :command:`set_target_properties` command.
-
-.. variable:: CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY
-
- Compatibility policy for auto-generated shlibs control file.
-
- * Mandatory : NO
- * Default   : "="
-
- Defines compatibility policy for auto-generated shlibs control file.
- Possible values: "=", ">="
-
- See https://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-shlibdeps
-
-.. variable:: CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONTROL_EXTRA
-
- This variable allow advanced user to add custom script to the
- control.tar.gz.
- Typical usage is for conffiles, postinst, postrm, prerm.
-
- * Mandatory : NO
- * Default   : -
-
- Usage::
-
-  set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
-      "${CMAKE_CURRENT_SOURCE_DIR}/prerm;${CMAKE_CURRENT_SOURCE_DIR}/postrm")
-
- .. note::
-
-   The original permissions of the files will be used in the final
-   package unless the variable
-   :variable:`CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION` is set.
-   In particular, the scripts should have the proper executable
-   flag prior to the generation of the package.
-
-.. variable:: CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONTROL_STRICT_PERMISSION
-
- This variable indicates if the Debian policy on control files should be
- strictly followed.
-
- * Mandatory : NO
- * Default   : FALSE
-
- Usage::
-
-  set(CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION TRUE)
-
- .. note::
-
-   This overrides the permissions on the original files, following the rules
-   set by Debian policy
-   https://www.debian.org/doc/debian-policy/ch-files.html#s-permissions-owners
-
-.. variable:: CPACK_DEBIAN_PACKAGE_SOURCE
-              CPACK_DEBIAN_<COMPONENT>_PACKAGE_SOURCE
-
- Sets the ``Source`` field of the binary Debian package.
- When the binary package name is not the same as the source package name
- (in particular when several components/binaries are generated from one
- source) the source from which the binary has been generated should be
- indicated with the field ``Source``.
-
- * Mandatory : NO
- * Default   :
-
-   - An empty string for non-component based installations
-   - :variable:`CPACK_DEBIAN_PACKAGE_SOURCE` for component-based
-     installations.
-
- See https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source
-
- .. note::
-
-   This value is not interpreted. It is possible to pass an optional
-   revision number of the referenced source package as well.
-
-Packaging of debug information
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Dbgsym packages contain debug symbols for debugging packaged binaries.
-
-Dbgsym packaging has its own set of variables:
-
-.. variable:: CPACK_DEBIAN_DEBUGINFO_PACKAGE
-              CPACK_DEBIAN_<component>_DEBUGINFO_PACKAGE
-
- Enable generation of dbgsym .ddeb package(s).
-
- * Mandatory : NO
- * Default   : OFF
-
-.. note::
-
- Binaries must contain debug symbols before packaging so use either ``Debug``
- or ``RelWithDebInfo`` for :variable:`CMAKE_BUILD_TYPE` variable value.
-
-Building Debian packages on Windows
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-To communicate UNIX file permissions from the install stage
-to the CPack DEB generator the "cmake_mode_t" NTFS
-alternate data stream (ADT) is used.
-
-When a filesystem without ADT support is used only owner read/write
-permissions can be preserved.
-
-Reproducible packages
-^^^^^^^^^^^^^^^^^^^^^
-
-The environment variable ``SOURCE_DATE_EPOCH`` may be set to a UNIX
-timestamp, defined as the number of seconds, excluding leap seconds,
-since 01 Jan 1970 00:00:00 UTC.  If set, the CPack DEB generator will
-use its value for timestamps in the package.
diff --git a/share/cmake-3.18/Help/cpack_gen/dmg.rst b/share/cmake-3.18/Help/cpack_gen/dmg.rst
deleted file mode 100644
index cede0f2..0000000
--- a/share/cmake-3.18/Help/cpack_gen/dmg.rst
+++ /dev/null
@@ -1,110 +0,0 @@
-CPack DragNDrop Generator
--------------------------
-
-The DragNDrop CPack generator (macOS) creates a DMG image.
-
-Variables specific to CPack DragNDrop generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following variables are specific to the DragNDrop installers built
-on macOS:
-
-.. variable:: CPACK_DMG_VOLUME_NAME
-
- The volume name of the generated disk image. Defaults to
- CPACK_PACKAGE_FILE_NAME.
-
-.. variable:: CPACK_DMG_FORMAT
-
- The disk image format. Common values are ``UDRO`` (UDIF read-only), ``UDZO`` (UDIF
- zlib-compressed) or ``UDBZ`` (UDIF bzip2-compressed). Refer to ``hdiutil(1)`` for
- more information on other available formats. Defaults to ``UDZO``.
-
-.. variable:: CPACK_DMG_DS_STORE
-
- Path to a custom ``.DS_Store`` file. This ``.DS_Store`` file can be used to
- specify the Finder window position/geometry and layout (such as hidden
- toolbars, placement of the icons etc.). This file has to be generated by
- the Finder (either manually or through AppleScript) using a normal folder
- from which the ``.DS_Store`` file can then be extracted.
-
-.. variable:: CPACK_DMG_DS_STORE_SETUP_SCRIPT
-
- Path to a custom AppleScript file.  This AppleScript is used to generate
- a ``.DS_Store`` file which specifies the Finder window position/geometry and
- layout (such as hidden toolbars, placement of the icons etc.).
- By specifying a custom AppleScript there is no need to use
- ``CPACK_DMG_DS_STORE``, as the ``.DS_Store`` that is generated by the AppleScript
- will be packaged.
-
-.. variable:: CPACK_DMG_BACKGROUND_IMAGE
-
- Path to an image file to be used as the background.  This file will be
- copied to ``.background``/``background.<ext>``, where ``<ext>`` is the original image file
- extension.  The background image is installed into the image before
- ``CPACK_DMG_DS_STORE_SETUP_SCRIPT`` is executed or ``CPACK_DMG_DS_STORE`` is
- installed.  By default no background image is set.
-
-.. variable:: CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK
-
- Default behaviour is to include a symlink to ``/Applications`` in the DMG.
- Set this option to ``ON`` to avoid adding the symlink.
-
-.. variable:: CPACK_DMG_SLA_DIR
-
-  Directory where license and menu files for different languages are stored.
-  Setting this causes CPack to look for a ``<language>.menu.txt`` and
-  ``<language>.license.txt`` or ``<language>.license.rtf`` file for every
-  language defined in ``CPACK_DMG_SLA_LANGUAGES``.  If both this variable and
-  ``CPACK_RESOURCE_FILE_LICENSE`` are set, CPack will only look for the menu
-  files and use the same license file for all languages.  If both
-  ``<language>.license.txt`` and ``<language>.license.rtf`` exist, the ``.txt``
-  file will be used.
-
-.. variable:: CPACK_DMG_SLA_LANGUAGES
-
-  Languages for which a license agreement is provided when mounting the
-  generated DMG. A menu file consists of 9 lines of text. The first line is
-  is the name of the language itself, uppercase, in English (e.g. German).
-  The other lines are translations of the following strings:
-
-  - Agree
-  - Disagree
-  - Print
-  - Save...
-  - You agree to the terms of the License Agreement when you click the
-    "Agree" button.
-  - Software License Agreement
-  - This text cannot be saved. The disk may be full or locked, or the file
-    may be locked.
-  - Unable to print. Make sure you have selected a printer.
-
-  For every language in this list, CPack will try to find files
-  ``<language>.menu.txt`` and ``<language>.license.txt`` in the directory
-  specified by the :variable:`CPACK_DMG_SLA_DIR` variable.
-
-.. variable:: CPACK_DMG_<component>_FILE_NAME
-
- File name when packaging ``<component>`` as its own DMG
- (``CPACK_COMPONENTS_GROUPING`` set to IGNORE).
-
- - Default: ``CPACK_PACKAGE_FILE_NAME-<component>``
-
-.. variable:: CPACK_COMMAND_HDIUTIL
-
- Path to the ``hdiutil(1)`` command used to operate on disk image files on
- macOS. This variable can be used to override the automatically detected
- command (or specify its location if the auto-detection fails to find it).
-
-.. variable:: CPACK_COMMAND_SETFILE
-
- Path to the ``SetFile(1)`` command used to set extended attributes on files and
- directories on macOS. This variable can be used to override the
- automatically detected command (or specify its location if the
- auto-detection fails to find it).
-
-.. variable:: CPACK_COMMAND_REZ
-
- Path to the ``Rez(1)`` command used to compile resources on macOS. This
- variable can be used to override the automatically detected command (or
- specify its location if the auto-detection fails to find it).
diff --git a/share/cmake-3.18/Help/cpack_gen/external.rst b/share/cmake-3.18/Help/cpack_gen/external.rst
deleted file mode 100644
index 406f6be..0000000
--- a/share/cmake-3.18/Help/cpack_gen/external.rst
+++ /dev/null
@@ -1,283 +0,0 @@
-CPack External Generator
-------------------------
-
-CPack provides many generators to create packages for a variety of platforms
-and packaging systems. The intention is for CMake/CPack to be a complete
-end-to-end solution for building and packaging a software project. However, it
-may not always be possible to use CPack for the entire packaging process, due
-to either technical limitations or policies that require the use of certain
-tools. For this reason, CPack provides the "External" generator, which allows
-external packaging software to take advantage of some of the functionality
-provided by CPack, such as component installation and the dependency graph.
-
-Integration with External Packaging Tools
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The CPack External generator generates a ``.json`` file containing the
-CPack internal metadata, which gives external software information
-on how to package the software. External packaging software may itself
-invoke CPack, consume the generated metadata,
-install and package files as required.
-
-Alternatively CPack can invoke an external packaging software
-through an optional custom CMake script in
-:variable:`CPACK_EXTERNAL_PACKAGE_SCRIPT` instead.
-
-Staging of installation files may also optionally be
-taken care of by the generator when enabled through the
-:variable:`CPACK_EXTERNAL_ENABLE_STAGING` variable.
-
-JSON Format
-^^^^^^^^^^^
-
-The JSON metadata file contains a list of CPack components and component groups,
-the various options passed to :command:`cpack_add_component` and
-:command:`cpack_add_component_group`, the dependencies between the components
-and component groups, and various other options passed to CPack.
-
-The JSON's root object will always provide two fields:
-``formatVersionMajor`` and ``formatVersionMinor``, which are always integers
-that describe the output format of the generator. Backwards-compatible changes
-to the output format (for example, adding a new field that didn't exist before)
-cause the minor version to be incremented, and backwards-incompatible changes
-(for example, deleting a field or changing its meaning) cause the major version
-to be incremented and the minor version reset to 0. The format version is
-always of the format ``major.minor``. In other words, it always has exactly two
-parts, separated by a period.
-
-You can request one or more specific versions of the output format as described
-below with :variable:`CPACK_EXTERNAL_REQUESTED_VERSIONS`. The output format will
-have a major version that exactly matches the requested major version, and a
-minor version that is greater than or equal to the requested minor version. If
-no version is requested with :variable:`CPACK_EXTERNAL_REQUESTED_VERSIONS`, the
-latest known major version is used by default. Currently, the only supported
-format is 1.0, which is described below.
-
-Version 1.0
-***********
-
-In addition to the standard format fields, format version 1.0 provides the
-following fields in the root:
-
-``components``
-  The ``components`` field is an object with component names as the keys and
-  objects describing the components as the values. The component objects have
-  the following fields:
-
-  ``name``
-    The name of the component. This is always the same as the key in the
-    ``components`` object.
-
-  ``displayName``
-    The value of the ``DISPLAY_NAME`` field passed to
-    :command:`cpack_add_component`.
-
-  ``description``
-    The value of the ``DESCRIPTION`` field passed to
-    :command:`cpack_add_component`.
-
-  ``isHidden``
-    True if ``HIDDEN`` was passed to :command:`cpack_add_component`, false if
-    it was not.
-
-  ``isRequired``
-    True if ``REQUIRED`` was passed to :command:`cpack_add_component`, false if
-    it was not.
-
-  ``isDisabledByDefault``
-    True if ``DISABLED`` was passed to :command:`cpack_add_component`, false if
-    it was not.
-
-  ``group``
-    Only present if ``GROUP`` was passed to :command:`cpack_add_component`. If
-    so, this field is a string value containing the component's group.
-
-  ``dependencies``
-    An array of components the component depends on. This contains the values
-    in the ``DEPENDS`` argument passed to :command:`cpack_add_component`. If no
-    ``DEPENDS`` argument was passed, this is an empty list.
-
-  ``installationTypes``
-    An array of installation types the component is part of. This contains the
-    values in the ``INSTALL_TYPES`` argument passed to
-    :command:`cpack_add_component`. If no ``INSTALL_TYPES`` argument was
-    passed, this is an empty list.
-
-  ``isDownloaded``
-    True if ``DOWNLOADED`` was passed to :command:`cpack_add_component`, false
-    if it was not.
-
-  ``archiveFile``
-    The name of the archive file passed with the ``ARCHIVE_FILE`` argument to
-    :command:`cpack_add_component`. If no ``ARCHIVE_FILE`` argument was passed,
-    this is an empty string.
-
-``componentGroups``
-  The ``componentGroups`` field is an object with component group names as the
-  keys and objects describing the component groups as the values. The component
-  group objects have the following fields:
-
-  ``name``
-    The name of the component group. This is always the same as the key in the
-    ``componentGroups`` object.
-
-  ``displayName``
-    The value of the ``DISPLAY_NAME`` field passed to
-    :command:`cpack_add_component_group`.
-
-  ``description``
-    The value of the ``DESCRIPTION`` field passed to
-    :command:`cpack_add_component_group`.
-
-  ``parentGroup``
-    Only present if ``PARENT_GROUP`` was passed to
-    :command:`cpack_add_component_group`. If so, this field is a string value
-    containing the component group's parent group.
-
-  ``isExpandedByDefault``
-    True if ``EXPANDED`` was passed to :command:`cpack_add_component_group`,
-    false if it was not.
-
-  ``isBold``
-    True if ``BOLD_TITLE`` was passed to :command:`cpack_add_component_group`,
-    false if it was not.
-
-  ``components``
-    An array of names of components that are direct members of the group
-    (components that have this group as their ``GROUP``). Components of
-    subgroups are not included.
-
-  ``subgroups``
-    An array of names of component groups that are subgroups of the group
-    (groups that have this group as their ``PARENT_GROUP``).
-
-``installationTypes``
-  The ``installationTypes`` field is an object with installation type names as
-  the keys and objects describing the installation types as the values. The
-  installation type objects have the following fields:
-
-  ``name``
-    The name of the installation type. This is always the same as the key in
-    the ``installationTypes`` object.
-
-  ``displayName``
-    The value of the ``DISPLAY_NAME`` field passed to
-    :command:`cpack_add_install_type`.
-
-  ``index``
-    The integer index of the installation type in the list.
-
-``projects``
-  The ``projects`` field is an array of objects describing CMake projects which
-  comprise the CPack project. The values in this field are derived from
-  :variable:`CPACK_INSTALL_CMAKE_PROJECTS`. In most cases, this will be only a
-  single project. The project objects have the following fields:
-
-  ``projectName``
-    The project name passed to :variable:`CPACK_INSTALL_CMAKE_PROJECTS`.
-
-  ``component``
-    The name of the component or component set which comprises the project.
-
-  ``directory``
-    The build directory of the CMake project. This is the directory which
-    contains the ``cmake_install.cmake`` script.
-
-  ``subDirectory``
-    The subdirectory to install the project into inside the CPack package.
-
-``packageName``
-  The package name given in :variable:`CPACK_PACKAGE_NAME`. Only present if
-  this option is set.
-
-``packageVersion``
-  The package version given in :variable:`CPACK_PACKAGE_VERSION`. Only present
-  if this option is set.
-
-``packageDescriptionFile``
-  The package description file given in
-  :variable:`CPACK_PACKAGE_DESCRIPTION_FILE`. Only present if this option is
-  set.
-
-``packageDescriptionSummary``
-  The package description summary given in
-  :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY`. Only present if this option is
-  set.
-
-``buildConfig``
-  The build configuration given to CPack with the ``-C`` option. Only present
-  if this option is set.
-
-``defaultDirectoryPermissions``
-  The default directory permissions given in
-  :variable:`CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS`. Only present if this
-  option is set.
-
-``setDestdir``
-  True if :variable:`CPACK_SET_DESTDIR` is true, false if it is not.
-
-``packagingInstallPrefix``
-  The install prefix given in :variable:`CPACK_PACKAGING_INSTALL_PREFIX`. Only
-  present if :variable:`CPACK_SET_DESTDIR` is true.
-
-``stripFiles``
-  True if :variable:`CPACK_STRIP_FILES` is true, false if it is not.
-
-``warnOnAbsoluteInstallDestination``
-  True if :variable:`CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION` is true, false
-  if it is not.
-
-``errorOnAbsoluteInstallDestination``
-  True if :variable:`CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION` is true,
-  false if it is not.
-
-Variables specific to CPack External generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. variable:: CPACK_EXTERNAL_REQUESTED_VERSIONS
-
-  This variable is used to request a specific version of the CPack External
-  generator. It is a list of ``major.minor`` values, separated by semicolons.
-
-  If this variable is set to a non-empty value, the CPack External generator
-  will iterate through each item in the list to search for a version that it
-  knows how to generate. Requested versions should be listed in order of
-  descending preference by the client software, as the first matching version
-  in the list will be generated.
-
-  The generator knows how to generate the version if it has a versioned
-  generator whose major version exactly matches the requested major version,
-  and whose minor version is greater than or equal to the requested minor
-  version. For example, if ``CPACK_EXTERNAL_REQUESTED_VERSIONS`` contains 1.0, and
-  the CPack External generator knows how to generate 1.1, it will generate 1.1.
-  If the generator doesn't know how to generate a version in the list, it skips
-  the version and looks at the next one. If it doesn't know how to generate any
-  of the requested versions, an error is thrown.
-
-  If this variable is not set, or is empty, the CPack External generator will
-  generate the highest major and minor version that it knows how to generate.
-
-  If an invalid version is encountered in ``CPACK_EXTERNAL_REQUESTED_VERSIONS`` (one
-  that doesn't match ``major.minor``, where ``major`` and ``minor`` are
-  integers), it is ignored.
-
-.. variable:: CPACK_EXTERNAL_ENABLE_STAGING
-
-  This variable can be set to true to enable optional installation
-  into a temporary staging area which can then be picked up
-  and packaged by an external packaging tool.
-  The top level directory used by CPack for the current packaging
-  task is contained in ``CPACK_TOPLEVEL_DIRECTORY``.
-  It is automatically cleaned up on each run before packaging is initiated
-  and can be used for custom temporary files required by
-  the external packaging tool.
-  It also contains the staging area ``CPACK_TEMPORARY_DIRECTORY``
-  into which CPack performs the installation when staging is enabled.
-
-.. variable:: CPACK_EXTERNAL_PACKAGE_SCRIPT
-
-  This variable can optionally specify the full path to
-  a CMake script file to be run as part of the CPack invocation.
-  It is invoked after (optional) staging took place and may
-  run an external packaging tool. The script has access to
-  the variables defined by the CPack config file.
diff --git a/share/cmake-3.18/Help/cpack_gen/freebsd.rst b/share/cmake-3.18/Help/cpack_gen/freebsd.rst
deleted file mode 100644
index 47a7784..0000000
--- a/share/cmake-3.18/Help/cpack_gen/freebsd.rst
+++ /dev/null
@@ -1,143 +0,0 @@
-CPack FreeBSD Generator
------------------------
-
-The built in (binary) CPack FreeBSD (pkg) generator (Unix only)
-
-Variables affecting the CPack FreeBSD (pkg) generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-  - :variable:`CPACK_ARCHIVE_THREADS`
-
-Variables specific to CPack FreeBSD (pkg) generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The CPack FreeBSD generator may be used to create pkg(8) packages -- these may
-be used on FreeBSD, DragonflyBSD, NetBSD, OpenBSD, but also on Linux or OSX,
-depending on the installed package-management tools -- using :module:`CPack`.
-
-The CPack FreeBSD generator is a :module:`CPack` generator and uses the
-``CPACK_XXX`` variables used by :module:`CPack`. It tries to re-use packaging
-information that may already be specified for Debian packages for the
-:cpack_gen:`CPack DEB Generator`. It also tries to re-use RPM packaging
-information when Debian does not specify.
-
-The CPack FreeBSD generator should work on any host with libpkg installed. The
-packages it produces are specific to the host architecture and ABI.
-
-The CPack FreeBSD generator sets package-metadata through
-``CPACK_FREEBSD_XXX`` variables. The CPack FreeBSD generator, unlike the
-CPack Deb generator, does not specially support componentized packages; a
-single package is created from all the software artifacts created through
-CMake.
-
-All of the variables can be set specifically for FreeBSD packaging in
-the CPackConfig file or in CMakeLists.txt, but most of them have defaults
-that use general settings (e.g. CMAKE_PROJECT_NAME) or Debian-specific
-variables when those make sense (e.g. the homepage of an upstream project
-is usually unchanged by the flavor of packaging). When there is no Debian
-information to fall back on, but the RPM packaging has it, fall back to
-the RPM information (e.g. package license).
-
-.. variable:: CPACK_FREEBSD_PACKAGE_NAME
-
-  Sets the package name (in the package manifest, but also affects the
-  output filename).
-
-  * Mandatory: YES
-  * Default:
-
-    - :variable:`CPACK_PACKAGE_NAME` (this is always set by CPack itself,
-      based on CMAKE_PROJECT_NAME).
-
-.. variable:: CPACK_FREEBSD_PACKAGE_COMMENT
-
-  Sets the package comment. This is the short description displayed by
-  pkg(8) in standard "pkg info" output.
-
-  * Mandatory: YES
-  * Default:
-
-    - :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY` (this is always set
-      by CPack itself, if nothing else sets it explicitly).
-    - :variable:`PROJECT_DESCRIPTION` (this can be set with the DESCRIPTION
-      parameter for :command:`project`).
-
-.. variable:: CPACK_FREEBSD_PACKAGE_DESCRIPTION
-
-  Sets the package description. This is the long description of the package,
-  given by "pkg info" with a specific package as argument.
-
-  * Mandatory: YES
-  * Default:
-
-    - :variable:`CPACK_DEBIAN_PACKAGE_DESCRIPTION` (this may be set already
-      for Debian packaging, so we may as well re-use it).
-
-.. variable:: CPACK_FREEBSD_PACKAGE_WWW
-
-  The URL of the web site for this package, preferably (when applicable) the
-  site from which the original source can be obtained and any additional
-  upstream documentation or information may be found.
-
-  * Mandatory: YES
-  * Default:
-
-   - :variable:`CMAKE_PROJECT_HOMEPAGE_URL`, or if that is not set,
-     :variable:`CPACK_DEBIAN_PACKAGE_HOMEPAGE` (this may be set already
-     for Debian packaging, so we may as well re-use it).
-
-.. variable:: CPACK_FREEBSD_PACKAGE_LICENSE
-
-  The license, or licenses, which apply to this software package. This must
-  be one or more license-identifiers that pkg recognizes as acceptable license
-  identifiers (e.g. "GPLv2").
-
-  * Mandatory: YES
-  * Default:
-
-    - :variable:`CPACK_RPM_PACKAGE_LICENSE`
-
-.. variable:: CPACK_FREEBSD_PACKAGE_LICENSE_LOGIC
-
-  This variable is only of importance if there is more than one license.
-  The default is "single", which is only applicable to a single license.
-  Other acceptable values are determined by pkg -- those are "dual" or "multi" --
-  meaning choice (OR) or simultaneous (AND) application of the licenses.
-
-  * Mandatory: NO
-  * Default: single
-
-.. variable:: CPACK_FREEBSD_PACKAGE_MAINTAINER
-
-  The FreeBSD maintainer (e.g. kde@freebsd.org) of this package.
-
-  * Mandatory: YES
-  * Default: none
-
-.. variable:: CPACK_FREEBSD_PACKAGE_ORIGIN
-
-  The origin (ports label) of this package; for packages built by CPack
-  outside of the ports system this is of less importance. The default
-  puts the package somewhere under misc/, as a stopgap.
-
-  * Mandatory: YES
-  * Default: misc/<package name>
-
-.. variable:: CPACK_FREEBSD_PACKAGE_CATEGORIES
-
-  The ports categories where this package lives (if it were to be built
-  from ports). If none is set a single category is determined based on
-  the package origin.
-
-  * Mandatory: YES
-  * Default: derived from ORIGIN
-
-.. variable:: CPACK_FREEBSD_PACKAGE_DEPS
-
-  A list of package origins that should be added as package dependencies.
-  These are in the form <category>/<packagename>, e.g. x11/libkonq.
-  No version information needs to be provided (this is not included
-  in the manifest).
-
-  * Mandatory: NO
-  * Default: empty
diff --git a/share/cmake-3.18/Help/cpack_gen/ifw.rst b/share/cmake-3.18/Help/cpack_gen/ifw.rst
deleted file mode 100644
index 776bb46..0000000
--- a/share/cmake-3.18/Help/cpack_gen/ifw.rst
+++ /dev/null
@@ -1,347 +0,0 @@
-CPack IFW Generator
--------------------
-
-Configure and run the Qt Installer Framework to generate a Qt installer.
-
-.. only:: html
-
-  .. contents::
-
-Overview
-^^^^^^^^
-
-This :manual:`cpack generator <cpack-generators(7)>` generates
-configuration and meta information for the `Qt Installer Framework
-<http://doc.qt.io/qtinstallerframework/index.html>`_ (QtIFW),
-and runs QtIFW tools to generate a Qt installer.
-
-QtIFW provides tools and utilities to create installers for
-the platforms supported by `Qt <https://www.qt.io>`_: Linux,
-Microsoft Windows, and macOS.
-
-To make use of this generator, QtIFW needs to be installed.
-The :module:`CPackIFW` module looks for the location of the
-QtIFW command-line utilities, and defines several commands to
-control the behavior of this generator.
-
-Variables
-^^^^^^^^^
-
-You can use the following variables to change behavior of CPack ``IFW``
-generator.
-
-Debug
-"""""
-
-.. variable:: CPACK_IFW_VERBOSE
-
- Set to ``ON`` to enable addition debug output.
- By default is ``OFF``.
-
-Package
-"""""""
-
-.. variable:: CPACK_IFW_PACKAGE_TITLE
-
- Name of the installer as displayed on the title bar.
- By default used :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY`.
-
-.. variable:: CPACK_IFW_PACKAGE_PUBLISHER
-
- Publisher of the software (as shown in the Windows Control Panel).
- By default used :variable:`CPACK_PACKAGE_VENDOR`.
-
-.. variable:: CPACK_IFW_PRODUCT_URL
-
- URL to a page that contains product information on your web site.
-
-.. variable:: CPACK_IFW_PACKAGE_ICON
-
- Filename for a custom installer icon. The actual file is '.icns' (macOS),
- '.ico' (Windows). No functionality on Unix.
-
-.. variable:: CPACK_IFW_PACKAGE_WINDOW_ICON
-
- Filename for a custom window icon in PNG format for the Installer
- application.
-
-.. variable:: CPACK_IFW_PACKAGE_LOGO
-
- Filename for a logo is used as QWizard::LogoPixmap.
-
-.. variable:: CPACK_IFW_PACKAGE_WATERMARK
-
- Filename for a watermark is used as QWizard::WatermarkPixmap.
-
-.. variable:: CPACK_IFW_PACKAGE_BANNER
-
- Filename for a banner is used as QWizard::BannerPixmap.
-
-.. variable:: CPACK_IFW_PACKAGE_BACKGROUND
-
- Filename for an image used as QWizard::BackgroundPixmap (only used by MacStyle).
-
-.. variable:: CPACK_IFW_PACKAGE_WIZARD_STYLE
-
- Wizard style to be used ("Modern", "Mac", "Aero" or "Classic").
-
-.. variable:: CPACK_IFW_PACKAGE_STYLE_SHEET
-
- Filename for a stylesheet.
-
-.. variable:: CPACK_IFW_PACKAGE_WIZARD_DEFAULT_WIDTH
-
- Default width of the wizard in pixels. Setting a banner image will override this.
-
-.. variable:: CPACK_IFW_PACKAGE_WIZARD_DEFAULT_HEIGHT
-
- Default height of the wizard in pixels. Setting a watermark image will override this.
-
-.. variable:: CPACK_IFW_PACKAGE_TITLE_COLOR
-
- Color of the titles and subtitles (takes an HTML color code, such as "#88FF33").
-
-.. variable:: CPACK_IFW_PACKAGE_START_MENU_DIRECTORY
-
- Name of the default program group for the product in the Windows Start menu.
-
- By default used :variable:`CPACK_IFW_PACKAGE_NAME`.
-
-.. variable:: CPACK_IFW_TARGET_DIRECTORY
-
- Default target directory for installation.
- By default used
- "@ApplicationsDir@/:variable:`CPACK_PACKAGE_INSTALL_DIRECTORY`"
- (variables embedded in '@' are expanded by the
- `QtIFW scripting engine <https://doc.qt.io/qtinstallerframework/scripting.html>`_).
-
- You can use predefined variables.
-
-.. variable:: CPACK_IFW_ADMIN_TARGET_DIRECTORY
-
- Default target directory for installation with administrator rights.
-
- You can use predefined variables.
-
-.. variable:: CPACK_IFW_PACKAGE_GROUP
-
- The group, which will be used to configure the root package
-
-.. variable:: CPACK_IFW_PACKAGE_NAME
-
- The root package name, which will be used if configuration group is not
- specified
-
-.. variable:: CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_NAME
-
- Filename of the generated maintenance tool.
- The platform-specific executable file extension is appended.
-
- By default used QtIFW defaults (``maintenancetool``).
-
-.. variable:: CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR
-
- Set to ``OFF`` if the target directory should not be deleted when uninstalling.
-
- Is ``ON`` by default
-
-.. variable:: CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_INI_FILE
-
- Filename for the configuration of the generated maintenance tool.
-
- By default used QtIFW defaults (``maintenancetool.ini``).
-
-.. variable:: CPACK_IFW_PACKAGE_ALLOW_NON_ASCII_CHARACTERS
-
- Set to ``ON`` if the installation path can contain non-ASCII characters.
-
- Is ``ON`` for QtIFW less 2.0 tools.
-
-.. variable:: CPACK_IFW_PACKAGE_ALLOW_SPACE_IN_PATH
-
- Set to ``OFF`` if the installation path cannot contain space characters.
-
- Is ``ON`` for QtIFW less 2.0 tools.
-
-.. variable:: CPACK_IFW_PACKAGE_CONTROL_SCRIPT
-
- Filename for a custom installer control script.
-
-.. variable:: CPACK_IFW_PACKAGE_RESOURCES
-
- List of additional resources ('.qrc' files) to include in the installer
- binary.
-
- You can use :command:`cpack_ifw_add_package_resources` command to resolve
- relative paths.
-
-.. variable:: CPACK_IFW_PACKAGE_FILE_EXTENSION
-
- The target binary extension.
-
- On Linux, the name of the target binary is automatically extended with
- '.run', if you do not specify the extension.
-
- On Windows, the target is created as an application with the extension
- '.exe', which is automatically added, if not supplied.
-
- On Mac, the target is created as an DMG disk image with the extension
- '.dmg', which is automatically added, if not supplied.
-
-.. variable:: CPACK_IFW_REPOSITORIES_ALL
-
- The list of remote repositories.
-
- The default value of this variable is computed by CPack and contains
- all repositories added with command :command:`cpack_ifw_add_repository`
- or updated with command :command:`cpack_ifw_update_repository`.
-
-.. variable:: CPACK_IFW_DOWNLOAD_ALL
-
- If this is ``ON`` all components will be downloaded.
- By default is ``OFF`` or used value
- from ``CPACK_DOWNLOAD_ALL`` if set
-
-Components
-""""""""""
-
-.. variable:: CPACK_IFW_RESOLVE_DUPLICATE_NAMES
-
- Resolve duplicate names when installing components with groups.
-
-.. variable:: CPACK_IFW_PACKAGES_DIRECTORIES
-
- Additional prepared packages dirs that will be used to resolve
- dependent components.
-
-.. variable:: CPACK_IFW_REPOSITORIES_DIRECTORIES
-
- Additional prepared repository dirs that will be used to resolve and
- repack dependent components. This feature available only
- since QtIFW 3.1.
-
-QtIFW Tools
-"""""""""""
-
-.. variable:: CPACK_IFW_FRAMEWORK_VERSION
-
- The version of used QtIFW tools.
-
-The following variables provide the locations of the QtIFW
-command-line tools as discovered by the module :module:`CPackIFW`.
-These variables are cached, and may be configured if needed.
-
-.. variable:: CPACK_IFW_BINARYCREATOR_EXECUTABLE
-
- The path to ``binarycreator``.
-
-.. variable:: CPACK_IFW_REPOGEN_EXECUTABLE
-
- The path to ``repogen``.
-
-.. variable:: CPACK_IFW_INSTALLERBASE_EXECUTABLE
-
- The path to ``installerbase``.
-
-.. variable:: CPACK_IFW_DEVTOOL_EXECUTABLE
-
- The path to ``devtool``.
-
-Hints for Finding QtIFW
-"""""""""""""""""""""""
-
-Generally, the CPack ``IFW`` generator automatically finds QtIFW tools,
-but if you don't use a default path for installation of the QtIFW tools,
-the path may be specified in either a CMake or an environment variable:
-
-.. variable:: CPACK_IFW_ROOT
-
- An CMake variable which specifies the location of the QtIFW tool suite.
-
- The variable will be cached in the ``CPackConfig.cmake`` file and used at
- CPack runtime.
-
-.. variable:: QTIFWDIR
-
- An environment variable which specifies the location of the QtIFW tool
- suite.
-
-.. note::
-  The specified path should not contain "bin" at the end
-  (for example: "D:\\DevTools\\QtIFW2.0.5").
-
-The :variable:`CPACK_IFW_ROOT` variable has a higher priority and overrides
-the value of the :variable:`QTIFWDIR` variable.
-
-Other Settings
-^^^^^^^^^^^^^^
-
-Online installer
-""""""""""""""""
-
-By default, this generator generates an *offline installer*. This means that
-that all packaged files are fully contained in the installer executable.
-
-In contrast, an *online installer* will download some or all components from
-a remote server.
-
-The ``DOWNLOADED`` option in the :command:`cpack_add_component` command
-specifies that a component is to be downloaded. Alternatively, the ``ALL``
-option in the :command:`cpack_configure_downloads` command specifies that
-`all` components are to be be downloaded.
-
-The :command:`cpack_ifw_add_repository` command and the
-:variable:`CPACK_IFW_DOWNLOAD_ALL` variable allow for more specific
-configuration.
-
-When there are online components, CPack will write them to archive files.
-The help page of the :module:`CPackComponent` module, especially the section
-on the :command:`cpack_configure_downloads` function, explains how to make
-these files accessible from a download URL.
-
-Internationalization
-""""""""""""""""""""
-
-Some variables and command arguments support internationalization via
-CMake script. This is an optional feature.
-
-Installers created by QtIFW tools have built-in support for
-internationalization and many phrases are localized to many languages,
-but this does not apply to the description of the your components and groups
-that will be distributed.
-
-Localization of the description of your components and groups is useful for
-users of your installers.
-
-A localized variable or argument can contain a single default value, and a
-set of pairs the name of the locale and the localized value.
-
-For example:
-
-.. code-block:: cmake
-
-   set(LOCALIZABLE_VARIABLE "Default value"
-     en "English value"
-     en_US "American value"
-     en_GB "Great Britain value"
-     )
-
-See Also
-^^^^^^^^
-
-Qt Installer Framework Manual:
-
-* Index page:
-  http://doc.qt.io/qtinstallerframework/index.html
-
-* Component Scripting:
-  http://doc.qt.io/qtinstallerframework/scripting.html
-
-* Predefined Variables:
-  http://doc.qt.io/qtinstallerframework/scripting.html#predefined-variables
-
-* Promoting Updates:
-  http://doc.qt.io/qtinstallerframework/ifw-updates.html
-
-Download Qt Installer Framework for your platform from Qt site:
- http://download.qt.io/official_releases/qt-installer-framework
diff --git a/share/cmake-3.18/Help/cpack_gen/nsis.rst b/share/cmake-3.18/Help/cpack_gen/nsis.rst
deleted file mode 100644
index 0dd876e..0000000
--- a/share/cmake-3.18/Help/cpack_gen/nsis.rst
+++ /dev/null
@@ -1,161 +0,0 @@
-CPack NSIS Generator
---------------------
-
-CPack Nullsoft Scriptable Install System (NSIS) generator specific options.
-
-The NSIS generator requires NSIS 3.0 or newer.
-
-Variables specific to CPack NSIS generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following variables are specific to the graphical installers built
-on Windows Nullsoft Scriptable Install System.
-
-.. variable:: CPACK_NSIS_INSTALL_ROOT
-
- The default installation directory presented to the end user by the NSIS
- installer is under this root dir. The full directory presented to the end
- user is: ``${CPACK_NSIS_INSTALL_ROOT}/${CPACK_PACKAGE_INSTALL_DIRECTORY}``
-
-.. variable:: CPACK_NSIS_MUI_ICON
-
- An icon filename.  The name of a ``*.ico`` file used as the main icon for the
- generated install program.
-
-.. variable:: CPACK_NSIS_MUI_UNIICON
-
- An icon filename.  The name of a ``*.ico`` file used as the main icon for the
- generated uninstall program.
-
-.. variable:: CPACK_NSIS_INSTALLER_MUI_ICON_CODE
-
- undocumented.
-
-.. variable:: CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP
-
- The filename of a bitmap to use as the NSIS ``MUI_WELCOMEFINISHPAGE_BITMAP``.
-
-.. variable:: CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP
-
- The filename of a bitmap to use as the NSIS ``MUI_UNWELCOMEFINISHPAGE_BITMAP``.
-
-.. variable:: CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS
-
- Extra NSIS commands that will be added to the beginning of the install
- Section, before your install tree is available on the target system.
-
-.. variable:: CPACK_NSIS_EXTRA_INSTALL_COMMANDS
-
- Extra NSIS commands that will be added to the end of the install Section,
- after your install tree is available on the target system.
-
-.. variable:: CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS
-
- Extra NSIS commands that will be added to the uninstall Section, before
- your install tree is removed from the target system.
-
-.. variable:: CPACK_NSIS_COMPRESSOR
-
- The arguments that will be passed to the NSIS `SetCompressor` command.
-
-.. variable:: CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL
-
- Ask about uninstalling previous versions first.  If this is set to ``ON``,
- then an installer will look for previous installed versions and if one is
- found, ask the user whether to uninstall it before proceeding with the
- install.
-
-.. variable:: CPACK_NSIS_MODIFY_PATH
-
- Modify ``PATH`` toggle.  If this is set to ``ON``, then an extra page will appear
- in the installer that will allow the user to choose whether the program
- directory should be added to the system ``PATH`` variable.
-
-.. variable:: CPACK_NSIS_DISPLAY_NAME
-
- The display name string that appears in the Windows `Apps & features`
- in `Control Panel`
-
-.. variable:: CPACK_NSIS_PACKAGE_NAME
-
- The title displayed at the top of the installer.
-
-.. variable:: CPACK_NSIS_INSTALLED_ICON_NAME
-
- A path to the executable that contains the installer icon.
-
-.. variable:: CPACK_NSIS_HELP_LINK
-
- URL to a web site providing assistance in installing your application.
-
-.. variable:: CPACK_NSIS_URL_INFO_ABOUT
-
- URL to a web site providing more information about your application.
-
-.. variable:: CPACK_NSIS_CONTACT
-
- Contact information for questions and comments about the installation
- process.
-
-.. variable:: CPACK_NSIS_<compName>_INSTALL_DIRECTORY
-
- Custom install directory for the specified component ``<compName>`` instead
- of ``$INSTDIR``.
-
-.. variable:: CPACK_NSIS_CREATE_ICONS_EXTRA
-
- Additional NSIS commands for creating `Start Menu` shortcuts.
-
-.. variable:: CPACK_NSIS_DELETE_ICONS_EXTRA
-
- Additional NSIS commands to uninstall `Start Menu` shortcuts.
-
-.. variable:: CPACK_NSIS_EXECUTABLES_DIRECTORY
-
- Creating NSIS `Start Menu` links assumes that they are in ``bin`` unless this
- variable is set.  For example, you would set this to ``exec`` if your
- executables are in an exec directory.
-
-.. variable:: CPACK_NSIS_MUI_FINISHPAGE_RUN
-
- Specify an executable to add an option to run on the finish page of the
- NSIS installer.
-
-.. variable:: CPACK_NSIS_MENU_LINKS
-
- Specify links in ``[application]`` menu.  This should contain a list of pair
- ``link`` ``link name``. The link may be a URL or a path relative to
- installation prefix.  Like::
-
-  set(CPACK_NSIS_MENU_LINKS
-      "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake.html"
-      "CMake Help" "https://cmake.org" "CMake Web Site")
-
-.. variable:: CPACK_NSIS_UNINSTALL_NAME
-
- Specify the name of the program to uninstall the version.
- Default is ``Uninstall``.
-
-.. variable:: CPACK_NSIS_WELCOME_TITLE
-
-  The title to display on the top of the page for the welcome page.
-
-.. variable:: CPACK_NSIS_WELCOME_TITLE_3LINES
-
- Display the title in the welcome page on 3 lines instead of 2.
-
-.. variable:: CPACK_NSIS_FINISH_TITLE
-
- The title to display on the top of the page for the finish page.
-
-.. variable:: CPACK_NSIS_FINISH_TITLE_3LINES
-
- Display the title in the finish page on 3 lines instead of 2.
-
-.. variable:: CPACK_NSIS_MUI_HEADERIMAGE
-
- The image to display on the header of installers pages.
-
-.. variable:: CPACK_NSIS_MANIFEST_DPI_AWARE
-
- If set, declares that the installer is DPI-aware.
diff --git a/share/cmake-3.18/Help/cpack_gen/nuget.rst b/share/cmake-3.18/Help/cpack_gen/nuget.rst
deleted file mode 100644
index f8aa626..0000000
--- a/share/cmake-3.18/Help/cpack_gen/nuget.rst
+++ /dev/null
@@ -1,189 +0,0 @@
-CPack NuGet Generator
----------------------
-
-When build a NuGet package there is no direct way to control an output
-filename due a lack of the corresponding CLI option of NuGet, so there
-is no ``CPACK_NUGET_PACKAGE_FILENAME`` variable. To form the output filename
-NuGet uses the package name and the version according to its built-in rules.
-
-Also, be aware that including a top level directory
-(``CPACK_INCLUDE_TOPLEVEL_DIRECTORY``) is ignored by this generator.
-
-
-Variables specific to CPack NuGet generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The CPack NuGet generator may be used to create NuGet packages using
-:module:`CPack`. The CPack NuGet generator is a :module:`CPack` generator thus
-it uses the ``CPACK_XXX`` variables used by :module:`CPack`.
-
-The CPack NuGet generator has specific features which are controlled by the
-specifics ``CPACK_NUGET_XXX`` variables. In the "one per group" mode
-(see :variable:`CPACK_COMPONENTS_GROUPING`), ``<compName>`` placeholder
-in the variables below would contain a group name (uppercased and turned into
-a "C" identifier).
-
-List of CPack NuGet generator specific variables:
-
-.. variable:: CPACK_NUGET_COMPONENT_INSTALL
-
- Enable component packaging for CPack NuGet generator
-
- * Mandatory : NO
- * Default   : OFF
-
-.. variable:: CPACK_NUGET_PACKAGE_NAME
-              CPACK_NUGET_<compName>_PACKAGE_NAME
-
- The NUGET package name.
-
- * Mandatory : YES
- * Default   : :variable:`CPACK_PACKAGE_NAME`
-
-.. variable:: CPACK_NUGET_PACKAGE_VERSION
-              CPACK_NUGET_<compName>_PACKAGE_VERSION
-
- The NuGet package version.
-
- * Mandatory : YES
- * Default   : :variable:`CPACK_PACKAGE_VERSION`
-
-.. variable:: CPACK_NUGET_PACKAGE_DESCRIPTION
-              CPACK_NUGET_<compName>_PACKAGE_DESCRIPTION
-
- A long description of the package for UI display.
-
- * Mandatory : YES
- * Default   :
-    - :variable:`CPACK_COMPONENT_<compName>_DESCRIPTION`,
-    - ``CPACK_COMPONENT_GROUP_<groupName>_DESCRIPTION``,
-    - :variable:`CPACK_PACKAGE_DESCRIPTION`
-
-.. variable:: CPACK_NUGET_PACKAGE_AUTHORS
-              CPACK_NUGET_<compName>_PACKAGE_AUTHORS
-
- A comma-separated list of packages authors, matching the profile names
- on nuget.org_. These are displayed in the NuGet Gallery on
- nuget.org_ and are used to cross-reference packages by the same
- authors.
-
- * Mandatory : YES
- * Default   : :variable:`CPACK_PACKAGE_VENDOR`
-
-.. variable:: CPACK_NUGET_PACKAGE_TITLE
-              CPACK_NUGET_<compName>_PACKAGE_TITLE
-
- A human-friendly title of the package, typically used in UI displays
- as on nuget.org_ and the Package Manager in Visual Studio. If not
- specified, the package ID is used.
-
- * Mandatory : NO
- * Default   :
-    - :variable:`CPACK_COMPONENT_<compName>_DISPLAY_NAME`,
-    - ``CPACK_COMPONENT_GROUP_<groupName>_DISPLAY_NAME``
-
-.. variable:: CPACK_NUGET_PACKAGE_OWNERS
-              CPACK_NUGET_<compName>_PACKAGE_OWNERS
-
- A comma-separated list of the package creators using profile names
- on nuget.org_. This is often the same list as in authors,
- and is ignored when uploading the package to nuget.org_.
-
- * Mandatory : NO
- * Default   : -
-
-.. variable:: CPACK_NUGET_PACKAGE_HOMEPAGE_URL
-              CPACK_NUGET_<compName>_PACKAGE_HOMEPAGE_URL
-
- A URL for the package's home page, often shown in UI displays as well
- as nuget.org_.
-
- * Mandatory : NO
- * Default   : :variable:`CPACK_PACKAGE_HOMEPAGE_URL`
-
-.. variable:: CPACK_NUGET_PACKAGE_LICENSEURL
-              CPACK_NUGET_<compName>_PACKAGE_LICENSEURL
-
- A URL for the package's license, often shown in UI displays as well
- as nuget.org_.
-
- * Mandatory : NO
- * Default   : -
-
-.. variable:: CPACK_NUGET_PACKAGE_ICONURL
-              CPACK_NUGET_<compName>_PACKAGE_ICONURL
-
- A URL for a 64x64 image with transparency background to use as the
- icon for the package in UI display.
-
- * Mandatory : NO
- * Default   : -
-
-.. variable:: CPACK_NUGET_PACKAGE_DESCRIPTION_SUMMARY
-              CPACK_NUGET_<compName>_PACKAGE_DESCRIPTION_SUMMARY
-
- A short description of the package for UI display. If omitted, a
- truncated version of description is used.
-
- * Mandatory : NO
- * Default   : :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY`
-
-.. variable:: CPACK_NUGET_PACKAGE_RELEASE_NOTES
-              CPACK_NUGET_<compName>_PACKAGE_RELEASE_NOTES
-
- A description of the changes made in this release of the package,
- often used in UI like the Updates tab of the Visual Studio Package
- Manager in place of the package description.
-
- * Mandatory : NO
- * Default   : -
-
-.. variable:: CPACK_NUGET_PACKAGE_COPYRIGHT
-              CPACK_NUGET_<compName>_PACKAGE_COPYRIGHT
-
- Copyright details for the package.
-
- * Mandatory : NO
- * Default   : -
-
-.. variable:: CPACK_NUGET_PACKAGE_TAGS
-              CPACK_NUGET_<compName>_PACKAGE_TAGS
-
- A space-delimited list of tags and keywords that describe the
- package and aid discoverability of packages through search and
- filtering.
-
- * Mandatory : NO
- * Default   : -
-
-.. variable:: CPACK_NUGET_PACKAGE_DEPENDENCIES
-              CPACK_NUGET_<compName>_PACKAGE_DEPENDENCIES
-
- A list of package dependencies.
-
- * Mandatory : NO
- * Default   : -
-
-.. variable:: CPACK_NUGET_PACKAGE_DEPENDENCIES_<dependency>_VERSION
-              CPACK_NUGET_<compName>_PACKAGE_DEPENDENCIES_<dependency>_VERSION
-
- A `version specification`_ for the particular dependency, where
- ``<dependency>`` is an item of the dependency list (see above)
- transformed with ``MAKE_C_IDENTIFIER`` function of :command:`string`
- command.
-
- * Mandatory : NO
- * Default   : -
-
-.. variable:: CPACK_NUGET_PACKAGE_DEBUG
-
- Enable debug messages while executing CPack NuGet generator.
-
- * Mandatory : NO
- * Default   : OFF
-
-
-.. _nuget.org: http://nuget.org
-.. _version specification: https://docs.microsoft.com/en-us/nuget/reference/package-versioning#version-ranges-and-wildcards
-
-.. NuGet spec docs https://docs.microsoft.com/en-us/nuget/reference/nuspec
diff --git a/share/cmake-3.18/Help/cpack_gen/packagemaker.rst b/share/cmake-3.18/Help/cpack_gen/packagemaker.rst
deleted file mode 100644
index c2a450e..0000000
--- a/share/cmake-3.18/Help/cpack_gen/packagemaker.rst
+++ /dev/null
@@ -1,79 +0,0 @@
-CPack PackageMaker Generator
-----------------------------
-
-PackageMaker CPack generator (macOS).
-
-.. deprecated:: 3.17
-
-  Xcode no longer distributes the PackageMaker tools.
-  This CPack generator will be removed in a future version of CPack.
-
-Variables specific to CPack PackageMaker generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following variable is specific to installers built on Mac
-macOS using PackageMaker:
-
-.. variable:: CPACK_OSX_PACKAGE_VERSION
-
- The version of macOS that the resulting PackageMaker archive should be
- compatible with. Different versions of macOS support different
- features. For example, CPack can only build component-based installers for
- macOS 10.4 or newer, and can only build installers that download
- components on-the-fly for macOS 10.5 or newer. If left blank, this value
- will be set to the minimum version of macOS that supports the requested
- features. Set this variable to some value (e.g., 10.4) only if you want to
- guarantee that your installer will work on that version of macOS, and
- don't mind missing extra features available in the installer shipping with
- later versions of macOS.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND
-
- Adds a background to Distribtion XML if specified. The value contains the
- path to image in ``Resources`` directory.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_ALIGNMENT
-
- Adds an ``alignment`` attribute to the background in Distribution XML.
- Refer to Apple documentation for valid values.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_SCALING
-
- Adds a ``scaling`` attribute to the background in Distribution XML.
- Refer to Apple documentation for valid values.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_MIME_TYPE
-
- Adds a ``mime-type`` attribute to the background in Distribution XML.
- The option contains MIME type of an image.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_UTI
-
- Adds an ``uti`` attribute to the background in Distribution XML.
- The option contains UTI type of an image.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_DARKAQUA
-
- Adds a background for the Dark Aqua theme to Distribution XML if
- specified. The value contains the path to image in ``Resources``
- directory.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_DARKAQUA_ALIGNMENT
-
- Does the same as :variable:`CPACK_PACKAGEMAKER_BACKGROUND_ALIGNMENT` option,
- but for the dark theme.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_DARKAQUA_SCALING
-
- Does the same as :variable:`CPACK_PACKAGEMAKER_BACKGROUND_SCALING` option,
- but for the dark theme.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_DARKAQUA_MIME_TYPE
-
- Does the same as :variable:`CPACK_PACKAGEMAKER_BACKGROUND_MIME_TYPE` option,
- but for the dark theme.
-
-.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_DARKAQUA_UTI
-
- Does the same as :variable:`CPACK_PACKAGEMAKER_BACKGROUND_UTI` option,
- but for the dark theme.
diff --git a/share/cmake-3.18/Help/cpack_gen/productbuild.rst b/share/cmake-3.18/Help/cpack_gen/productbuild.rst
deleted file mode 100644
index 82b79ae..0000000
--- a/share/cmake-3.18/Help/cpack_gen/productbuild.rst
+++ /dev/null
@@ -1,118 +0,0 @@
-CPack productbuild Generator
-----------------------------
-
-productbuild CPack generator (macOS).
-
-Variables specific to CPack productbuild generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following variable is specific to installers built on Mac
-macOS using ProductBuild:
-
-.. variable:: CPACK_COMMAND_PRODUCTBUILD
-
- Path to the ``productbuild(1)`` command used to generate a product archive for
- the macOS Installer or Mac App Store.  This variable can be used to override
- the automatically detected command (or specify its location if the
- auto-detection fails to find it).
-
-.. variable:: CPACK_PRODUCTBUILD_IDENTITY_NAME
-
- Adds a digital signature to the resulting package.
-
-
-.. variable:: CPACK_PRODUCTBUILD_KEYCHAIN_PATH
-
- Specify a specific keychain to search for the signing identity.
-
-
-.. variable:: CPACK_COMMAND_PKGBUILD
-
- Path to the ``pkgbuild(1)`` command used to generate an macOS component package
- on macOS.  This variable can be used to override the automatically detected
- command (or specify its location if the auto-detection fails to find it).
-
-
-.. variable:: CPACK_PKGBUILD_IDENTITY_NAME
-
- Adds a digital signature to the resulting package.
-
-
-.. variable:: CPACK_PKGBUILD_KEYCHAIN_PATH
-
- Specify a specific keychain to search for the signing identity.
-
-
-.. variable:: CPACK_PREFLIGHT_<COMP>_SCRIPT
-
- Full path to a file that will be used as the ``preinstall`` script for the
- named ``<COMP>`` component's package, where ``<COMP>`` is the uppercased
- component name.  No ``preinstall`` script is added if this variable is not
- defined for a given component.
-
-
-.. variable:: CPACK_POSTFLIGHT_<COMP>_SCRIPT
-
- Full path to a file that will be used as the ``postinstall`` script for the
- named ``<COMP>`` component's package, where ``<COMP>`` is the uppercased
- component name.  No ``postinstall`` script is added if this variable is not
- defined for a given component.
-
-.. variable:: CPACK_PRODUCTBUILD_RESOURCES_DIR
-
- If specified the productbuild generator copies files from this directory
- (including subdirectories) to the ``Resources`` directory. This is done
- before the :variable:`CPACK_RESOURCE_FILE_WELCOME`,
- :variable:`CPACK_RESOURCE_FILE_README`, and
- :variable:`CPACK_RESOURCE_FILE_LICENSE` files are copied.
-
-.. variable:: CPACK_PRODUCTBUILD_BACKGROUND
-
- Adds a background to Distribtion XML if specified. The value contains the
- path to image in ``Resources`` directory.
-
-.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_ALIGNMENT
-
- Adds an ``alignment`` attribute to the background in Distribution XML.
- Refer to Apple documentation for valid values.
-
-.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_SCALING
-
- Adds a ``scaling`` attribute to the background in Distribution XML.
- Refer to Apple documentation for valid values.
-
-.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_MIME_TYPE
-
- Adds a ``mime-type`` attribute to the background in Distribution XML.
- The option contains MIME type of an image.
-
-.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_UTI
-
- Adds an ``uti`` attribute to the background in Distribution XML.
- The option contains UTI type of an image.
-
-.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA
-
- Adds a background for the Dark Aqua theme to Distribution XML if
- specified. The value contains the path to image in ``Resources``
- directory.
-
-.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_ALIGNMENT
-
- Does the same as :variable:`CPACK_PRODUCTBUILD_BACKGROUND_ALIGNMENT` option,
- but for the dark theme.
-
-.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_SCALING
-
- Does the same as :variable:`CPACK_PRODUCTBUILD_BACKGROUND_SCALING` option,
- but for the dark theme.
-
-.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_MIME_TYPE
-
- Does the same as :variable:`CPACK_PRODUCTBUILD_BACKGROUND_MIME_TYPE` option,
- but for the dark theme.
-
-.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_UTI
-
- Does the same as :variable:`CPACK_PRODUCTBUILD_BACKGROUND_UTI` option,
- but for the dark theme.
diff --git a/share/cmake-3.18/Help/cpack_gen/rpm.rst b/share/cmake-3.18/Help/cpack_gen/rpm.rst
deleted file mode 100644
index ccb7ebd..0000000
--- a/share/cmake-3.18/Help/cpack_gen/rpm.rst
+++ /dev/null
@@ -1,959 +0,0 @@
-CPack RPM Generator
--------------------
-
-The built in (binary) CPack RPM generator (Unix only)
-
-Variables specific to CPack RPM generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The CPack RPM generator may be used to create RPM packages using :module:`CPack`.
-The CPack RPM generator is a :module:`CPack` generator thus it uses the
-``CPACK_XXX`` variables used by :module:`CPack`.
-
-The CPack RPM generator has specific features which are controlled by the specifics
-``CPACK_RPM_XXX`` variables.
-
-``CPACK_RPM_<COMPONENT>_XXXX`` variables may be used in order to have
-**component** specific values.  Note however that ``<COMPONENT>`` refers to the
-**grouping name** written in upper case. It may be either a component name or
-a component GROUP name. Usually those variables correspond to RPM spec file
-entities. One may find information about spec files here
-http://www.rpm.org/wiki/Docs
-
-.. note::
-
- `<COMPONENT>` part of variables is preferred to be in upper case (e.g. if
- component is named ``foo`` then use ``CPACK_RPM_FOO_XXXX`` variable name format)
- as is with other ``CPACK_<COMPONENT>_XXXX`` variables.
- For the purposes of back compatibility (CMake/CPack version 3.5 and lower)
- support for same cased component (e.g. ``fOo`` would be used as
- ``CPACK_RPM_fOo_XXXX``) is still supported for variables defined in older
- versions of CMake/CPack but is not guaranteed for variables that
- will be added in the future. For the sake of back compatibility same cased
- component variables also override upper cased versions where both are
- present.
-
-Here are some CPack RPM generator wiki resources that are here for historic
-reasons and are no longer maintained but may still prove useful:
-
- - https://gitlab.kitware.com/cmake/community/-/wikis/doc/cpack/Configuration
- - https://gitlab.kitware.com/cmake/community/-/wikis/doc/cpack/PackageGenerators#rpm-unix-only
-
-List of CPack RPM generator specific variables:
-
-.. variable:: CPACK_RPM_COMPONENT_INSTALL
-
- Enable component packaging for CPack RPM generator
-
- * Mandatory : NO
- * Default   : OFF
-
- If enabled (``ON``) multiple packages are generated. By default
- a single package containing files of all components is generated.
-
-.. variable:: CPACK_RPM_PACKAGE_SUMMARY
-              CPACK_RPM_<component>_PACKAGE_SUMMARY
-
- The RPM package summary.
-
- * Mandatory : YES
- * Default   : :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY`
-
-.. variable:: CPACK_RPM_PACKAGE_NAME
-              CPACK_RPM_<component>_PACKAGE_NAME
-
- The RPM package name.
-
- * Mandatory : YES
- * Default   : :variable:`CPACK_PACKAGE_NAME`
-
-.. variable:: CPACK_RPM_FILE_NAME
-              CPACK_RPM_<component>_FILE_NAME
-
- Package file name.
-
- * Mandatory : YES
- * Default   : ``<CPACK_PACKAGE_FILE_NAME>[-<component>].rpm`` with spaces
-               replaced by '-'
-
- This may be set to ``RPM-DEFAULT`` to allow ``rpmbuild`` tool to generate package
- file name by itself.
- Alternatively provided package file name must end with ``.rpm`` suffix.
-
- .. note::
-
-   By using user provided spec file, rpm macro extensions such as for
-   generating ``debuginfo`` packages or by simply using multiple components more
-   than one rpm file may be generated, either from a single spec file or from
-   multiple spec files (each component execution produces its own spec file).
-   In such cases duplicate file names may occur as a result of this variable
-   setting or spec file content structure. Duplicate files get overwritten
-   and it is up to the packager to set the variables in a manner that will
-   prevent such errors.
-
-.. variable:: CPACK_RPM_MAIN_COMPONENT
-
- Main component that is packaged without component suffix.
-
- * Mandatory : NO
- * Default   : -
-
- This variable can be set to any component or group name so that component or
- group rpm package is generated without component suffix in filename and
- package name.
-
-.. variable:: CPACK_RPM_PACKAGE_EPOCH
-
- The RPM package epoch
-
- * Mandatory : No
- * Default   : -
-
- Optional number that should be incremented when changing versioning schemas
- or fixing mistakes in the version numbers of older packages.
-
-.. variable:: CPACK_RPM_PACKAGE_VERSION
-
- The RPM package version.
-
- * Mandatory : YES
- * Default   : :variable:`CPACK_PACKAGE_VERSION`
-
-.. variable:: CPACK_RPM_PACKAGE_ARCHITECTURE
-              CPACK_RPM_<component>_PACKAGE_ARCHITECTURE
-
- The RPM package architecture.
-
- * Mandatory : YES
- * Default   : Native architecture output by ``uname -m``
-
- This may be set to ``noarch`` if you know you are building a ``noarch`` package.
-
-.. variable:: CPACK_RPM_PACKAGE_RELEASE
-
- The RPM package release.
-
- * Mandatory : YES
- * Default   : 1
-
- This is the numbering of the RPM package itself, i.e. the version of the
- packaging and not the version of the content (see
- :variable:`CPACK_RPM_PACKAGE_VERSION`). One may change the default value if
- the previous packaging was buggy and/or you want to put here a fancy Linux
- distro specific numbering.
-
-.. note::
-
- This is the string that goes into the RPM ``Release:`` field. Some distros
- (e.g. Fedora, CentOS) require ``1%{?dist}`` format and not just a number.
- ``%{?dist}`` part can be added by setting :variable:`CPACK_RPM_PACKAGE_RELEASE_DIST`.
-
-.. variable:: CPACK_RPM_PACKAGE_RELEASE_DIST
-
- The dist tag that is added  RPM ``Release:`` field.
-
- * Mandatory : NO
- * Default   : OFF
-
- This is the reported ``%{dist}`` tag from the current distribution or empty
- ``%{dist}`` if RPM macro is not set. If this variable is set then RPM
- ``Release:`` field value is set to ``${CPACK_RPM_PACKAGE_RELEASE}%{?dist}``.
-
-.. variable:: CPACK_RPM_PACKAGE_LICENSE
-
- The RPM package license policy.
-
- * Mandatory : YES
- * Default   : "unknown"
-
-.. variable:: CPACK_RPM_PACKAGE_GROUP
-              CPACK_RPM_<component>_PACKAGE_GROUP
-
- The RPM package group.
-
- * Mandatory : YES
- * Default   : "unknown"
-
-.. variable:: CPACK_RPM_PACKAGE_VENDOR
-
- The RPM package vendor.
-
- * Mandatory : YES
- * Default   : CPACK_PACKAGE_VENDOR if set or "unknown"
-
-.. variable:: CPACK_RPM_PACKAGE_URL
-              CPACK_RPM_<component>_PACKAGE_URL
-
- The projects URL.
-
- * Mandatory : NO
- * Default   : :variable:`CMAKE_PROJECT_HOMEPAGE_URL`
-
-.. variable:: CPACK_RPM_PACKAGE_DESCRIPTION
-              CPACK_RPM_<component>_PACKAGE_DESCRIPTION
-
- RPM package description.
-
- * Mandatory : YES
- * Default : :variable:`CPACK_COMPONENT_<compName>_DESCRIPTION` (component
-   based installers only) if set, :variable:`CPACK_PACKAGE_DESCRIPTION_FILE`
-   if set or "no package description available"
-
-.. variable:: CPACK_RPM_COMPRESSION_TYPE
-
- RPM compression type.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to override RPM compression type to be used to build the
- RPM. For example some Linux distribution now default to ``lzma`` or ``xz``
- compression whereas older cannot use such RPM. Using this one can enforce
- compression type to be used.
-
- Possible values are:
-
- - lzma
- - xz
- - bzip2
- - gzip
-
-.. variable:: CPACK_RPM_PACKAGE_AUTOREQ
-              CPACK_RPM_<component>_PACKAGE_AUTOREQ
-
- RPM spec autoreq field.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to enable (``1``, ``yes``) or disable (``0``, ``no``) automatic
- shared libraries dependency detection. Dependencies are added to requires list.
-
- .. note::
-
-   By default automatic dependency detection is enabled by rpm generator.
-
-.. variable:: CPACK_RPM_PACKAGE_AUTOPROV
-              CPACK_RPM_<component>_PACKAGE_AUTOPROV
-
- RPM spec autoprov field.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to enable (``1``, ``yes``) or disable (``0``, ``no``)
- automatic listing of shared libraries that are provided by the package.
- Shared libraries are added to provides list.
-
- .. note::
-
-   By default automatic provides detection is enabled by rpm generator.
-
-.. variable:: CPACK_RPM_PACKAGE_AUTOREQPROV
-              CPACK_RPM_<component>_PACKAGE_AUTOREQPROV
-
- RPM spec autoreqprov field.
-
- * Mandatory : NO
- * Default   : -
-
- Variable enables/disables autoreq and autoprov at the same time.
- See :variable:`CPACK_RPM_PACKAGE_AUTOREQ` and
- :variable:`CPACK_RPM_PACKAGE_AUTOPROV` for more details.
-
- .. note::
-
-   By default automatic detection feature is enabled by rpm.
-
-.. variable:: CPACK_RPM_PACKAGE_REQUIRES
-              CPACK_RPM_<component>_PACKAGE_REQUIRES
-
- RPM spec requires field.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to set RPM dependencies (requires). Note that you must enclose
- the complete requires string between quotes, for example::
-
-  set(CPACK_RPM_PACKAGE_REQUIRES "python >= 2.5.0, cmake >= 2.8")
-
- The required package list of an RPM file could be printed with::
-
-  rpm -qp --requires file.rpm
-
-.. variable:: CPACK_RPM_PACKAGE_CONFLICTS
-              CPACK_RPM_<component>_PACKAGE_CONFLICTS
-
- RPM spec conflicts field.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to set negative RPM dependencies (conflicts). Note that you must
- enclose the complete requires string between quotes, for example::
-
-  set(CPACK_RPM_PACKAGE_CONFLICTS "libxml2")
-
- The conflicting package list of an RPM file could be printed with::
-
-  rpm -qp --conflicts file.rpm
-
-.. variable:: CPACK_RPM_PACKAGE_REQUIRES_PRE
-              CPACK_RPM_<component>_PACKAGE_REQUIRES_PRE
-
- RPM spec requires(pre) field.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to set RPM preinstall dependencies (requires(pre)). Note that
- you must enclose the complete requires string between quotes, for example::
-
-  set(CPACK_RPM_PACKAGE_REQUIRES_PRE "shadow-utils, initscripts")
-
-.. variable:: CPACK_RPM_PACKAGE_REQUIRES_POST
-              CPACK_RPM_<component>_PACKAGE_REQUIRES_POST
-
- RPM spec requires(post) field.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to set RPM postinstall dependencies (requires(post)). Note that
- you must enclose the complete requires string between quotes, for example::
-
-  set(CPACK_RPM_PACKAGE_REQUIRES_POST "shadow-utils, initscripts")
-
-.. variable:: CPACK_RPM_PACKAGE_REQUIRES_POSTUN
-              CPACK_RPM_<component>_PACKAGE_REQUIRES_POSTUN
-
- RPM spec requires(postun) field.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to set RPM postuninstall dependencies (requires(postun)). Note
- that you must enclose the complete requires string between quotes, for
- example::
-
-  set(CPACK_RPM_PACKAGE_REQUIRES_POSTUN "shadow-utils, initscripts")
-
-.. variable:: CPACK_RPM_PACKAGE_REQUIRES_PREUN
-              CPACK_RPM_<component>_PACKAGE_REQUIRES_PREUN
-
- RPM spec requires(preun) field.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to set RPM preuninstall dependencies (requires(preun)). Note that
- you must enclose the complete requires string between quotes, for example::
-
-  set(CPACK_RPM_PACKAGE_REQUIRES_PREUN "shadow-utils, initscripts")
-
-.. variable:: CPACK_RPM_PACKAGE_SUGGESTS
-              CPACK_RPM_<component>_PACKAGE_SUGGESTS
-
- RPM spec suggest field.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to set weak RPM dependencies (suggests). Note that you must
- enclose the complete requires string between quotes.
-
-.. variable:: CPACK_RPM_PACKAGE_PROVIDES
-              CPACK_RPM_<component>_PACKAGE_PROVIDES
-
- RPM spec provides field.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to set RPM dependencies (provides). The provided package list
- of an RPM file could be printed with::
-
-  rpm -qp --provides file.rpm
-
-.. variable:: CPACK_RPM_PACKAGE_OBSOLETES
-              CPACK_RPM_<component>_PACKAGE_OBSOLETES
-
- RPM spec obsoletes field.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to set RPM packages that are obsoleted by this one.
-
-.. variable:: CPACK_RPM_PACKAGE_RELOCATABLE
-
- build a relocatable RPM.
-
- * Mandatory : NO
- * Default   : CPACK_PACKAGE_RELOCATABLE
-
- If this variable is set to TRUE or ON, the CPack RPM generator will try
- to build a relocatable RPM package. A relocatable RPM may
- be installed using::
-
-  rpm --prefix or --relocate
-
- in order to install it at an alternate place see rpm(8). Note that
- currently this may fail if :variable:`CPACK_SET_DESTDIR` is set to ``ON``. If
- :variable:`CPACK_SET_DESTDIR` is set then you will get a warning message but
- if there is file installed with absolute path you'll get unexpected behavior.
-
-.. variable:: CPACK_RPM_SPEC_INSTALL_POST
-
- Deprecated - use :variable:`CPACK_RPM_SPEC_MORE_DEFINE` instead.
-
- * Mandatory : NO
- * Default   : -
- * Deprecated: YES
-
- May be used to override the ``__spec_install_post`` section within the
- generated spec file.  This affects the install step during package creation,
- not during package installation.  For adding operations to be performed
- during package installation, use
- :variable:`CPACK_RPM_POST_INSTALL_SCRIPT_FILE` instead.
-
-.. variable:: CPACK_RPM_SPEC_MORE_DEFINE
-
- RPM extended spec definitions lines.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to add any ``%define`` lines to the generated spec file.  An
- example of its use is to prevent stripping of executables (but note that
- this may also disable other default post install processing)::
-
-   set(CPACK_RPM_SPEC_MORE_DEFINE "%define __spec_install_post /bin/true")
-
-.. variable:: CPACK_RPM_PACKAGE_DEBUG
-
- Toggle CPack RPM generator debug output.
-
- * Mandatory : NO
- * Default   : -
-
- May be set when invoking cpack in order to trace debug information
- during CPack RPM run. For example you may launch CPack like this::
-
-  cpack -D CPACK_RPM_PACKAGE_DEBUG=1 -G RPM
-
-.. variable:: CPACK_RPM_USER_BINARY_SPECFILE
-              CPACK_RPM_<componentName>_USER_BINARY_SPECFILE
-
- A user provided spec file.
-
- * Mandatory : NO
- * Default   : -
-
- May be set by the user in order to specify a USER binary spec file
- to be used by the CPack RPM generator instead of generating the file.
- The specified file will be processed by configure_file( @ONLY).
-
-.. variable:: CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE
-
- Spec file template.
-
- * Mandatory : NO
- * Default   : -
-
- If set CPack will generate a template for USER specified binary
- spec file and stop with an error. For example launch CPack like this::
-
-  cpack -D CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE=1 -G RPM
-
- The user may then use this file in order to hand-craft is own
- binary spec file which may be used with
- :variable:`CPACK_RPM_USER_BINARY_SPECFILE`.
-
-.. variable:: CPACK_RPM_PRE_INSTALL_SCRIPT_FILE
-              CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE
-              CPACK_RPM_PRE_TRANS_SCRIPT_FILE
-
- Path to file containing pre install/uninstall/transaction script.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to embed a pre installation/uninstallation/transaction script in the spec file.
- The referred script file (or both) will be read and directly
- put after the ``%pre`` or ``%preun`` section
- If :variable:`CPACK_RPM_COMPONENT_INSTALL` is set to ON the install/uninstall/transaction
- script for each component can be overridden with
- ``CPACK_RPM_<COMPONENT>_PRE_INSTALL_SCRIPT_FILE``,
- ``CPACK_RPM_<COMPONENT>_PRE_UNINSTALL_SCRIPT_FILE``, and
- ``CPACK_RPM_<COMPONENT>_PRE_TRANS_SCRIPT_FILE``
- One may verify which scriptlet has been included with::
-
-  rpm -qp --scripts  package.rpm
-
-.. variable:: CPACK_RPM_POST_INSTALL_SCRIPT_FILE
-              CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE
-              CPACK_RPM_POST_TRANS_SCRIPT_FILE
-
- Path to file containing post install/uninstall/transaction script.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to embed a post installation/uninstallation/transaction script in the spec file.
- The referred script file (or both) will be read and directly
- put after the ``%post`` or ``%postun`` section.
- If :variable:`CPACK_RPM_COMPONENT_INSTALL` is set to ON the install/uninstall/transaction
- script for each component can be overridden with
- ``CPACK_RPM_<COMPONENT>_POST_INSTALL_SCRIPT_FILE``,
- ``CPACK_RPM_<COMPONENT>_POST_UNINSTALL_SCRIPT_FILE``, and
- ``CPACK_RPM_<COMPONENT>_POST_TRANS_SCRIPT_FILE``
- One may verify which scriptlet has been included with::
-
-  rpm -qp --scripts  package.rpm
-
-.. variable:: CPACK_RPM_USER_FILELIST
-              CPACK_RPM_<COMPONENT>_USER_FILELIST
-
- * Mandatory : NO
- * Default   : -
-
- May be used to explicitly specify ``%(<directive>)`` file line
- in the spec file. Like ``%config(noreplace)`` or any other directive
- that be found in the ``%files`` section. You can have multiple directives
- per line, as in ``%attr(600,root,root) %config(noreplace)``. Since
- the CPack RPM generator is generating the list of files (and directories) the
- user specified files of the ``CPACK_RPM_<COMPONENT>_USER_FILELIST`` list will
- be removed from the generated list. If referring to directories do
- not add a trailing slash.
-
-.. variable:: CPACK_RPM_CHANGELOG_FILE
-
- RPM changelog file.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to embed a changelog in the spec file.
- The referred file will be read and directly put after the ``%changelog``
- section.
-
-.. variable:: CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST
-
- list of path to be excluded.
-
- * Mandatory : NO
- * Default   : /etc /etc/init.d /usr /usr/bin /usr/include /usr/lib
-               /usr/libx32 /usr/lib64 /usr/share /usr/share/aclocal
-               /usr/share/doc
-
- May be used to exclude path (directories or files) from the auto-generated
- list of paths discovered by CPack RPM. The default value contains a
- reasonable set of values if the variable is not defined by the user. If the
- variable is defined by the user then the CPack RPM generator will NOT any of
- the default path. If you want to add some path to the default list then you
- can use :variable:`CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION` variable.
-
-.. variable:: CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION
-
- additional list of path to be excluded.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to add more exclude path (directories or files) from the initial
- default list of excluded paths. See
- :variable:`CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST`.
-
-.. variable:: CPACK_RPM_RELOCATION_PATHS
-
- Packages relocation paths list.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to specify more than one relocation path per relocatable RPM.
- Variable contains a list of relocation paths that if relative are prefixed
- by the value of :variable:`CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX` or by the
- value of :variable:`CPACK_PACKAGING_INSTALL_PREFIX` if the component version
- is not provided.
- Variable is not component based as its content can be used to set a different
- path prefix for e.g. binary dir and documentation dir at the same time.
- Only prefixes that are required by a certain component are added to that
- component - component must contain at least one file/directory/symbolic link
- with :variable:`CPACK_RPM_RELOCATION_PATHS` prefix for a certain relocation
- path to be added. Package will not contain any relocation paths if there are
- no files/directories/symbolic links on any of the provided prefix locations.
- Packages that either do not contain any relocation paths or contain
- files/directories/symbolic links that are outside relocation paths print
- out an ``AUTHOR_WARNING`` that RPM will be partially relocatable.
-
-.. variable:: CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX
-
- Per component relocation path install prefix.
-
- * Mandatory : NO
- * Default   : CPACK_PACKAGING_INSTALL_PREFIX
-
- May be used to set per component :variable:`CPACK_PACKAGING_INSTALL_PREFIX`
- for relocatable RPM packages.
-
-.. variable:: CPACK_RPM_NO_INSTALL_PREFIX_RELOCATION
-              CPACK_RPM_NO_<COMPONENT>_INSTALL_PREFIX_RELOCATION
-
- Removal of default install prefix from relocation paths list.
-
- * Mandatory : NO
- * Default   : CPACK_PACKAGING_INSTALL_PREFIX or CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX
-               are treated as one of relocation paths
-
- May be used to remove CPACK_PACKAGING_INSTALL_PREFIX and CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX
- from relocatable RPM prefix paths.
-
-.. variable:: CPACK_RPM_ADDITIONAL_MAN_DIRS
-
- * Mandatory : NO
- * Default   : -
-
- May be used to set additional man dirs that could potentially be compressed
- by brp-compress RPM macro. Variable content must be a list of regular
- expressions that point to directories containing man files or to man files
- directly. Note that in order to compress man pages a path must also be
- present in brp-compress RPM script and that brp-compress script must be
- added to RPM configuration by the operating system.
-
- Regular expressions that are added by default were taken from brp-compress
- RPM macro:
-
- - /usr/man/man.*
- - /usr/man/.*/man.*
- - /usr/info.*
- - /usr/share/man/man.*
- - /usr/share/man/.*/man.*
- - /usr/share/info.*
- - /usr/kerberos/man.*
- - /usr/X11R6/man/man.*
- - /usr/lib/perl5/man/man.*
- - /usr/share/doc/.*/man/man.*
- - /usr/lib/.*/man/man.*
-
-.. variable:: CPACK_RPM_DEFAULT_USER
-              CPACK_RPM_<compName>_DEFAULT_USER
-
- default user ownership of RPM content
-
- * Mandatory : NO
- * Default   : root
-
- Value should be user name and not UID.
- Note that <compName> must be in upper-case.
-
-.. variable:: CPACK_RPM_DEFAULT_GROUP
-              CPACK_RPM_<compName>_DEFAULT_GROUP
-
- default group ownership of RPM content
-
- * Mandatory : NO
- * Default   : root
-
- Value should be group name and not GID.
- Note that <compName> must be in upper-case.
-
-.. variable:: CPACK_RPM_DEFAULT_FILE_PERMISSIONS
-              CPACK_RPM_<compName>_DEFAULT_FILE_PERMISSIONS
-
- default permissions used for packaged files
-
- * Mandatory : NO
- * Default   : - (system default)
-
- Accepted values are lists with ``PERMISSIONS``. Valid permissions
- are:
-
- - OWNER_READ
- - OWNER_WRITE
- - OWNER_EXECUTE
- - GROUP_READ
- - GROUP_WRITE
- - GROUP_EXECUTE
- - WORLD_READ
- - WORLD_WRITE
- - WORLD_EXECUTE
-
- Note that <compName> must be in upper-case.
-
-.. variable:: CPACK_RPM_DEFAULT_DIR_PERMISSIONS
-              CPACK_RPM_<compName>_DEFAULT_DIR_PERMISSIONS
-
- default permissions used for packaged directories
-
- * Mandatory : NO
- * Default   : - (system default)
-
- Accepted values are lists with PERMISSIONS. Valid permissions
- are the same as for :variable:`CPACK_RPM_DEFAULT_FILE_PERMISSIONS`.
- Note that <compName> must be in upper-case.
-
-.. variable:: CPACK_RPM_INSTALL_WITH_EXEC
-
- force execute permissions on programs and shared libraries
-
- * Mandatory : NO
- * Default   : - (system default)
-
- Force set owner, group and world execute permissions on programs and shared
- libraries. This can be used for creating valid rpm packages on systems such
- as Debian where shared libraries do not have execute permissions set.
-
-.. note::
-
- Programs and shared libraries without execute permissions are ignored during
- separation of debug symbols from the binary for debuginfo packages.
-
-Packaging of Symbolic Links
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The CPack RPM generator supports packaging of symbolic links::
-
-  execute_process(COMMAND ${CMAKE_COMMAND}
-    -E create_symlink <relative_path_location> <symlink_name>)
-  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/<symlink_name>
-    DESTINATION <symlink_location> COMPONENT libraries)
-
-Symbolic links will be optimized (paths will be shortened if possible)
-before being added to the package or if multiple relocation paths are
-detected, a post install symlink relocation script will be generated.
-
-Symbolic links may point to locations that are not packaged by the same
-package (either a different component or even not packaged at all) but
-those locations will be treated as if they were a part of the package
-while determining if symlink should be either created or present in a
-post install script - depending on relocation paths.
-
-Symbolic links that point to locations outside packaging path produce a
-warning and are treated as non relocatable permanent symbolic links.
-
-Currently there are a few limitations though:
-
-* For component based packaging component interdependency is not checked
-  when processing symbolic links. Symbolic links pointing to content of
-  a different component are treated the same way as if pointing to location
-  that will not be packaged.
-
-* Symbolic links pointing to a location through one or more intermediate
-  symbolic links will not be handled differently - if the intermediate
-  symbolic link(s) is also on a relocatable path, relocating it during
-  package installation may cause initial symbolic link to point to an
-  invalid location.
-
-Packaging of debug information
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Debuginfo packages contain debug symbols and sources for debugging packaged
-binaries.
-
-Debuginfo RPM packaging has its own set of variables:
-
-.. variable:: CPACK_RPM_DEBUGINFO_PACKAGE
-              CPACK_RPM_<component>_DEBUGINFO_PACKAGE
-
- Enable generation of debuginfo RPM package(s).
-
- * Mandatory : NO
- * Default   : OFF
-
-.. note::
-
- Binaries must contain debug symbols before packaging so use either ``Debug``
- or ``RelWithDebInfo`` for :variable:`CMAKE_BUILD_TYPE` variable value.
-
-.. note::
-
- Packages generated from packages without binary files, with binary files but
- without execute permissions or without debug symbols will cause packaging
- termination.
-
-.. variable:: CPACK_BUILD_SOURCE_DIRS
-
- Provides locations of root directories of source files from which binaries
- were built.
-
- * Mandatory : YES if :variable:`CPACK_RPM_DEBUGINFO_PACKAGE` is set
- * Default   : -
-
-.. note::
-
- For CMake project :variable:`CPACK_BUILD_SOURCE_DIRS` is set by default to
- point to :variable:`CMAKE_SOURCE_DIR` and :variable:`CMAKE_BINARY_DIR` paths.
-
-.. note::
-
- Sources with path prefixes that do not fall under any location provided with
- :variable:`CPACK_BUILD_SOURCE_DIRS` will not be present in debuginfo package.
-
-.. variable:: CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX
-              CPACK_RPM_<component>_BUILD_SOURCE_DIRS_PREFIX
-
- Prefix of location where sources will be placed during package installation.
-
- * Mandatory : YES if :variable:`CPACK_RPM_DEBUGINFO_PACKAGE` is set
- * Default   : "/usr/src/debug/<CPACK_PACKAGE_FILE_NAME>" and
-               for component packaging "/usr/src/debug/<CPACK_PACKAGE_FILE_NAME>-<component>"
-
-.. note::
-
- Each source path prefix is additionally suffixed by ``src_<index>`` where
- index is index of the path used from :variable:`CPACK_BUILD_SOURCE_DIRS`
- variable. This produces ``<CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX>/src_<index>``
- replacement path.
- Limitation is that replaced path part must be shorter or of equal
- length than the length of its replacement. If that is not the case either
- :variable:`CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX` variable has to be set to
- a shorter path or source directories must be placed on a longer path.
-
-.. variable:: CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS
-
- Directories containing sources that should be excluded from debuginfo packages.
-
- * Mandatory : NO
- * Default   : "/usr /usr/src /usr/src/debug"
-
- Listed paths are owned by other RPM packages and should therefore not be
- deleted on debuginfo package uninstallation.
-
-.. variable:: CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS_ADDITION
-
- Paths that should be appended to :variable:`CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS`
- for exclusion.
-
- * Mandatory : NO
- * Default   : -
-
-.. variable:: CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE
-
- Create a single debuginfo package even if components packaging is set.
-
- * Mandatory : NO
- * Default   : OFF
-
- When this variable is enabled it produces a single debuginfo package even if
- component packaging is enabled.
-
- When using this feature in combination with components packaging and there is
- more than one component this variable requires :variable:`CPACK_RPM_MAIN_COMPONENT`
- to be set.
-
-.. note::
-
- If none of the :variable:`CPACK_RPM_<component>_DEBUGINFO_PACKAGE` variables
- is set then :variable:`CPACK_RPM_DEBUGINFO_PACKAGE` is automatically set to
- ``ON`` when :variable:`CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE` is set.
-
-.. variable:: CPACK_RPM_DEBUGINFO_FILE_NAME
-              CPACK_RPM_<component>_DEBUGINFO_FILE_NAME
-
- Debuginfo package file name.
-
- * Mandatory : NO
- * Default   : rpmbuild tool generated package file name
-
- Alternatively provided debuginfo package file name must end with ``.rpm``
- suffix and should differ from file names of other generated packages.
-
- Variable may contain ``@cpack_component@`` placeholder which will be
- replaced by component name if component packaging is enabled otherwise it
- deletes the placeholder.
-
- Setting the variable to ``RPM-DEFAULT`` may be used to explicitly set
- filename generation to default.
-
-.. note::
-
- :variable:`CPACK_RPM_FILE_NAME` also supports rpmbuild tool generated package
- file name - disabled by default but can be enabled by setting the variable to
- ``RPM-DEFAULT``.
-
-Packaging of sources (SRPM)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-SRPM packaging is enabled by setting :variable:`CPACK_RPM_PACKAGE_SOURCES`
-variable while usually using :variable:`CPACK_INSTALLED_DIRECTORIES` variable
-to provide directory containing CMakeLists.txt and source files.
-
-For CMake projects SRPM package would be produced by executing::
-
-  cpack -G RPM --config ./CPackSourceConfig.cmake
-
-.. note::
-
- Produced SRPM package is expected to be built with :manual:`cmake(1)` executable
- and packaged with :manual:`cpack(1)` executable so CMakeLists.txt has to be
- located in root source directory and must be able to generate binary rpm
- packages by executing ``cpack -G`` command. The two executables as well as
- rpmbuild must also be present when generating binary rpm packages from the
- produced SRPM package.
-
-Once the SRPM package is generated it can be used to generate binary packages
-by creating a directory structure for rpm generation and executing rpmbuild
-tool::
-
-  mkdir -p build_dir/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
-  rpmbuild --define "_topdir <path_to_build_dir>" --rebuild <SRPM_file_name>
-
-Generated packages will be located in build_dir/RPMS directory or its sub
-directories.
-
-.. note::
-
- SRPM package internally uses CPack/RPM generator to generate binary packages
- so CMakeScripts.txt can decide during the SRPM to binary rpm generation step
- what content the package(s) should have as well as how they should be packaged
- (monolithic or components). CMake can decide this for e.g. by reading environment
- variables set by the package manager before starting the process of generating
- binary rpm packages. This way a single SRPM package can be used to produce
- different binary rpm packages on different platforms depending on the platform's
- packaging rules.
-
-Source RPM packaging has its own set of variables:
-
-.. variable:: CPACK_RPM_PACKAGE_SOURCES
-
- Should the content be packaged as a source rpm (default is binary rpm).
-
- * Mandatory : NO
- * Default   : OFF
-
-.. note::
-
- For cmake projects :variable:`CPACK_RPM_PACKAGE_SOURCES` variable is set
- to ``OFF`` in CPackConfig.cmake and ``ON`` in CPackSourceConfig.cmake
- generated files.
-
-.. variable:: CPACK_RPM_SOURCE_PKG_BUILD_PARAMS
-
- Additional command-line parameters provided to :manual:`cmake(1)` executable.
-
- * Mandatory : NO
- * Default   : -
-
-.. variable:: CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX
-
- Packaging install prefix that would be provided in :variable:`CPACK_PACKAGING_INSTALL_PREFIX`
- variable for producing binary RPM packages.
-
- * Mandatory : YES
- * Default   : "/"
-
-.. VARIABLE:: CPACK_RPM_BUILDREQUIRES
-
- List of source rpm build dependencies.
-
- * Mandatory : NO
- * Default   : -
-
- May be used to set source RPM build dependencies (BuildRequires). Note that
- you must enclose the complete build requirements string between quotes, for
- example::
-
-  set(CPACK_RPM_BUILDREQUIRES "python >= 2.5.0, cmake >= 2.8")
diff --git a/share/cmake-3.18/Help/cpack_gen/wix.rst b/share/cmake-3.18/Help/cpack_gen/wix.rst
deleted file mode 100644
index 7fb5a12..0000000
--- a/share/cmake-3.18/Help/cpack_gen/wix.rst
+++ /dev/null
@@ -1,288 +0,0 @@
-CPack WIX Generator
--------------------
-
-CPack WIX generator specific options
-
-Variables specific to CPack WIX generator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following variables are specific to the installers built on
-Windows using WiX.
-
-.. variable:: CPACK_WIX_UPGRADE_GUID
-
- Upgrade GUID (``Product/@UpgradeCode``)
-
- Will be automatically generated unless explicitly provided.
-
- It should be explicitly set to a constant generated globally unique
- identifier (GUID) to allow your installers to replace existing
- installations that use the same GUID.
-
- You may for example explicitly set this variable in your
- CMakeLists.txt to the value that has been generated per default.  You
- should not use GUIDs that you did not generate yourself or which may
- belong to other projects.
-
- A GUID shall have the following fixed length syntax::
-
-  XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
-
- (each X represents an uppercase hexadecimal digit)
-
-.. variable:: CPACK_WIX_PRODUCT_GUID
-
- Product GUID (``Product/@Id``)
-
- Will be automatically generated unless explicitly provided.
-
- If explicitly provided this will set the Product Id of your installer.
-
- The installer will abort if it detects a pre-existing installation that
- uses the same GUID.
-
- The GUID shall use the syntax described for CPACK_WIX_UPGRADE_GUID.
-
-.. variable:: CPACK_WIX_LICENSE_RTF
-
- RTF License File
-
- If CPACK_RESOURCE_FILE_LICENSE has an .rtf extension it is used as-is.
-
- If CPACK_RESOURCE_FILE_LICENSE has an .txt extension it is implicitly
- converted to RTF by the WIX Generator.
- The expected encoding of the .txt file is UTF-8.
-
- With CPACK_WIX_LICENSE_RTF you can override the license file used by the
- WIX Generator in case CPACK_RESOURCE_FILE_LICENSE is in an unsupported
- format or the .txt -> .rtf conversion does not work as expected.
-
-.. variable:: CPACK_WIX_PRODUCT_ICON
-
- The Icon shown next to the program name in Add/Remove programs.
-
- If set, this icon is used in place of the default icon.
-
-.. variable:: CPACK_WIX_UI_REF
-
- This variable allows you to override the Id of the ``<UIRef>`` element
- in the WiX template.
-
- The default is ``WixUI_InstallDir`` in case no CPack components have
- been defined and ``WixUI_FeatureTree`` otherwise.
-
-.. variable:: CPACK_WIX_UI_BANNER
-
- The bitmap will appear at the top of all installer pages other than the
- welcome and completion dialogs.
-
- If set, this image will replace the default banner image.
-
- This image must be 493 by 58 pixels.
-
-.. variable:: CPACK_WIX_UI_DIALOG
-
- Background bitmap used on the welcome and completion dialogs.
-
- If this variable is set, the installer will replace the default dialog
- image.
-
- This image must be 493 by 312 pixels.
-
-.. variable:: CPACK_WIX_PROGRAM_MENU_FOLDER
-
- Start menu folder name for launcher.
-
- If this variable is not set, it will be initialized with CPACK_PACKAGE_NAME
-
- If this variable is set to ``.``, then application shortcuts will be
- created directly in the start menu and the uninstaller shortcut will be
- omitted.
-
-.. variable:: CPACK_WIX_CULTURES
-
- Language(s) of the installer
-
- Languages are compiled into the WixUI extension library.  To use them,
- simply provide the name of the culture.  If you specify more than one
- culture identifier in a comma or semicolon delimited list, the first one
- that is found will be used.  You can find a list of supported languages at:
- http://wix.sourceforge.net/manual-wix3/WixUI_localization.htm
-
-.. variable:: CPACK_WIX_TEMPLATE
-
- Template file for WiX generation
-
- If this variable is set, the specified template will be used to generate
- the WiX wxs file.  This should be used if further customization of the
- output is required.
-
- If this variable is not set, the default MSI template included with CMake
- will be used.
-
-.. variable:: CPACK_WIX_PATCH_FILE
-
- Optional list of XML files with fragments to be inserted into
- generated WiX sources
-
- This optional variable can be used to specify an XML file that the
- WIX generator will use to inject fragments into its generated
- source files.
-
- Patch files understood by the CPack WIX generator
- roughly follow this RELAX NG compact schema:
-
- .. code-block:: none
-
-    start = CPackWiXPatch
-
-    CPackWiXPatch = element CPackWiXPatch { CPackWiXFragment* }
-
-    CPackWiXFragment = element CPackWiXFragment
-    {
-        attribute Id { string },
-        fragmentContent*
-    }
-
-    fragmentContent = element * - CPackWiXFragment
-    {
-        (attribute * { text } | text | fragmentContent)*
-    }
-
- Currently fragments can be injected into most
- Component, File, Directory and Feature elements.
-
- The following additional special Ids can be used:
-
- * ``#PRODUCT`` for the ``<Product>`` element.
- * ``#PRODUCTFEATURE`` for the root ``<Feature>`` element.
-
- The following example illustrates how this works.
-
- Given that the WIX generator creates the following XML element:
-
- .. code-block:: xml
-
-    <Component Id="CM_CP_applications.bin.my_libapp.exe" Guid="*"/>
-
- The following XML patch file may be used to inject an Environment element
- into it:
-
- .. code-block:: xml
-
-    <CPackWiXPatch>
-      <CPackWiXFragment Id="CM_CP_applications.bin.my_libapp.exe">
-        <Environment Id="MyEnvironment" Action="set"
-          Name="MyVariableName" Value="MyVariableValue"/>
-      </CPackWiXFragment>
-    </CPackWiXPatch>
-
-.. variable:: CPACK_WIX_EXTRA_SOURCES
-
- Extra WiX source files
-
- This variable provides an optional list of extra WiX source files (.wxs)
- that should be compiled and linked.  The full path to source files is
- required.
-
-.. variable:: CPACK_WIX_EXTRA_OBJECTS
-
- Extra WiX object files or libraries
-
- This variable provides an optional list of extra WiX object (.wixobj)
- and/or WiX library (.wixlib) files.  The full path to objects and libraries
- is required.
-
-.. variable:: CPACK_WIX_EXTENSIONS
-
- This variable provides a list of additional extensions for the WiX
- tools light and candle.
-
-.. variable:: CPACK_WIX_<TOOL>_EXTENSIONS
-
- This is the tool specific version of CPACK_WIX_EXTENSIONS.
- ``<TOOL>`` can be either LIGHT or CANDLE.
-
-.. variable:: CPACK_WIX_<TOOL>_EXTRA_FLAGS
-
- This list variable allows you to pass additional
- flags to the WiX tool ``<TOOL>``.
-
- Use it at your own risk.
- Future versions of CPack may generate flags which may be in conflict
- with your own flags.
-
- ``<TOOL>`` can be either LIGHT or CANDLE.
-
-.. variable:: CPACK_WIX_CMAKE_PACKAGE_REGISTRY
-
- If this variable is set the generated installer will create
- an entry in the windows registry key
- ``HKEY_LOCAL_MACHINE\Software\Kitware\CMake\Packages\<PackageName>``
- The value for ``<PackageName>`` is provided by this variable.
-
- Assuming you also install a CMake configuration file this will
- allow other CMake projects to find your package with
- the :command:`find_package` command.
-
-.. variable:: CPACK_WIX_PROPERTY_<PROPERTY>
-
- This variable can be used to provide a value for
- the Windows Installer property ``<PROPERTY>``
-
- The following list contains some example properties that can be used to
- customize information under
- "Programs and Features" (also known as "Add or Remove Programs")
-
- * ARPCOMMENTS - Comments
- * ARPHELPLINK - Help and support information URL
- * ARPURLINFOABOUT - General information URL
- * ARPURLUPDATEINFO - Update information URL
- * ARPHELPTELEPHONE - Help and support telephone number
- * ARPSIZE - Size (in kilobytes) of the application
-
-.. variable:: CPACK_WIX_ROOT_FEATURE_TITLE
-
- Sets the name of the root install feature in the WIX installer. Same as
- CPACK_COMPONENT_<compName>_DISPLAY_NAME for components.
-
-.. variable:: CPACK_WIX_ROOT_FEATURE_DESCRIPTION
-
- Sets the description of the root install feature in the WIX installer. Same as
- CPACK_COMPONENT_<compName>_DESCRIPTION for components.
-
-.. variable:: CPACK_WIX_SKIP_PROGRAM_FOLDER
-
- If this variable is set to true, the default install location
- of the generated package will be CPACK_PACKAGE_INSTALL_DIRECTORY directly.
- The install location will not be located relatively below
- ProgramFiles or ProgramFiles64.
-
-  .. note::
-    Installers created with this feature do not take differences
-    between the system on which the installer is created
-    and the system on which the installer might be used into account.
-
-    It is therefore possible that the installer e.g. might try to install
-    onto a drive that is unavailable or unintended or a path that does not
-    follow the localization or convention of the system on which the
-    installation is performed.
-
-.. variable:: CPACK_WIX_ROOT_FOLDER_ID
-
- This variable allows specification of a custom root folder ID.
- The generator specific ``<64>`` token can be used for
- folder IDs that come in 32-bit and 64-bit variants.
- In 32-bit builds the token will expand empty while in 64-bit builds
- it will expand to ``64``.
-
- When unset generated installers will default installing to
- ``ProgramFiles<64>Folder``.
-
-.. variable:: CPACK_WIX_ROOT
-
- This variable can optionally be set to the root directory
- of a custom WiX Toolset installation.
-
- When unspecified CPack will try to locate a WiX Toolset
- installation via the ``WIX`` environment variable instead.
diff --git a/share/cmake-3.18/Help/envvar/ASM_DIALECT.rst b/share/cmake-3.18/Help/envvar/ASM_DIALECT.rst
deleted file mode 100644
index a06e3cb..0000000
--- a/share/cmake-3.18/Help/envvar/ASM_DIALECT.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-ASM<DIALECT>
-------------
-
-.. include:: ENV_VAR.txt
-
-Preferred executable for compiling a specific dialect of assembly language
-files. ``ASM<DIALECT>`` can be ``ASM``, ``ASM_NASM`` (Netwide Assembler),
-``ASM_MASM`` (Microsoft Assembler) or ``ASM-ATT`` (Assembler AT&T).
-Will only be used by CMake on the first configuration to determine
-``ASM<DIALECT>`` compiler, after which the value for ``ASM<DIALECT>`` is stored
-in the cache as
-:variable:`CMAKE_ASM<DIALECT>_COMPILER <CMAKE_<LANG>_COMPILER>`. For subsequent
-configuration runs, the environment variable will be ignored in favor of
-:variable:`CMAKE_ASM<DIALECT>_COMPILER <CMAKE_<LANG>_COMPILER>`.
diff --git a/share/cmake-3.18/Help/envvar/CC.rst b/share/cmake-3.18/Help/envvar/CC.rst
deleted file mode 100644
index ef12059..0000000
--- a/share/cmake-3.18/Help/envvar/CC.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CC
---
-
-.. include:: ENV_VAR.txt
-
-Preferred executable for compiling ``C`` language files. Will only be used by
-CMake on the first configuration to determine ``C`` compiler, after which the
-value for ``CC`` is stored in the cache as
-:variable:`CMAKE_C_COMPILER <CMAKE_<LANG>_COMPILER>`. For any configuration run
-(including the first), the environment variable will be ignored if the
-:variable:`CMAKE_C_COMPILER <CMAKE_<LANG>_COMPILER>` variable is defined.
diff --git a/share/cmake-3.18/Help/envvar/CCMAKE_COLORS.rst b/share/cmake-3.18/Help/envvar/CCMAKE_COLORS.rst
deleted file mode 100644
index d4750c3..0000000
--- a/share/cmake-3.18/Help/envvar/CCMAKE_COLORS.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-CCMAKE_COLORS
--------------
-
-Determines what colors are used by the CMake curses interface,
-when run on a terminal that supports colors.
-The syntax follows the same conventions as ``LS_COLORS``;
-that is, a list of key/value pairs separated by ``:``.
-
-Keys are a single letter corresponding to a CMake cache variable type:
-
-- ``s``: A ``STRING``.
-- ``p``: A ``FILEPATH``.
-- ``c``: A value which has an associated list of choices.
-- ``y``: A ``BOOL`` which has a true-like value (e.g. ``ON``, ``YES``).
-- ``n``: A ``BOOL`` which has a false-like value (e.g. ``OFF``, ``NO``).
-
-Values are an integer number that specifies what color to use.
-``0`` is black (you probably don't want to use that).
-Others are determined by your terminal's color support.
-Most (color) terminals will support at least 8 or 16 colors.
-Some will support up to 256 colors. The colors will likely match
-`this chart <https://upload.wikimedia.org/wikipedia/commons/1/15/Xterm_256color_chart.svg>`_,
-although the first 16 colors may match the original
-`CGA color palette <https://en.wikipedia.org/wiki/Color_Graphics_Adapter#Color_palette>`_.
-(Many modern terminal emulators also allow their color palette,
-at least for the first 16 colors, to be configured by the user.)
-
-Note that fairly minimal checking is done for bad colors
-(although a value higher than what curses believes your terminal supports
-will be silently ignored) or bad syntax.
-
-For example::
-
-  CCMAKE_COLORS='s=39:p=220:c=207:n=196:y=46'
diff --git a/share/cmake-3.18/Help/envvar/CMAKE_BUILD_PARALLEL_LEVEL.rst b/share/cmake-3.18/Help/envvar/CMAKE_BUILD_PARALLEL_LEVEL.rst
deleted file mode 100644
index 199ca3e..0000000
--- a/share/cmake-3.18/Help/envvar/CMAKE_BUILD_PARALLEL_LEVEL.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_BUILD_PARALLEL_LEVEL
---------------------------
-
-.. include:: ENV_VAR.txt
-
-Specifies the maximum number of concurrent processes to use when building
-using the ``cmake --build`` command line
-:ref:`Build Tool Mode <Build Tool Mode>`.
-
-If this variable is defined empty the native build tool's default number is
-used.
diff --git a/share/cmake-3.18/Help/envvar/CMAKE_EXPORT_COMPILE_COMMANDS.rst b/share/cmake-3.18/Help/envvar/CMAKE_EXPORT_COMPILE_COMMANDS.rst
deleted file mode 100644
index e9e0810..0000000
--- a/share/cmake-3.18/Help/envvar/CMAKE_EXPORT_COMPILE_COMMANDS.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_EXPORT_COMPILE_COMMANDS
------------------------------
-
-.. include:: ENV_VAR.txt
-
-The default value for :variable:`CMAKE_EXPORT_COMPILE_COMMANDS` when there
-is no explicit configuration given on the first run while creating a new
-build tree.  On later runs in an existing build tree the value persists in
-the cache as :variable:`CMAKE_EXPORT_COMPILE_COMMANDS`.
diff --git a/share/cmake-3.18/Help/envvar/CMAKE_GENERATOR.rst b/share/cmake-3.18/Help/envvar/CMAKE_GENERATOR.rst
deleted file mode 100644
index f2d055f..0000000
--- a/share/cmake-3.18/Help/envvar/CMAKE_GENERATOR.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-CMAKE_GENERATOR
----------------
-
-.. include:: ENV_VAR.txt
-
-Specifies the CMake default generator to use when no generator is supplied
-with ``-G``. If the provided value doesn't name a generator known by CMake,
-the internal default is used.  Either way the resulting generator selection
-is stored in the :variable:`CMAKE_GENERATOR` variable.
-
-Some generators may be additionally configured using the environment
-variables:
-
-* :envvar:`CMAKE_GENERATOR_PLATFORM`
-* :envvar:`CMAKE_GENERATOR_TOOLSET`
-* :envvar:`CMAKE_GENERATOR_INSTANCE`
diff --git a/share/cmake-3.18/Help/envvar/CMAKE_GENERATOR_INSTANCE.rst b/share/cmake-3.18/Help/envvar/CMAKE_GENERATOR_INSTANCE.rst
deleted file mode 100644
index 1654fa1..0000000
--- a/share/cmake-3.18/Help/envvar/CMAKE_GENERATOR_INSTANCE.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_GENERATOR_INSTANCE
-------------------------
-
-.. include:: ENV_VAR.txt
-
-Default value for :variable:`CMAKE_GENERATOR_INSTANCE` if no Cache entry is
-present. This value is only applied if :envvar:`CMAKE_GENERATOR` is set.
diff --git a/share/cmake-3.18/Help/envvar/CMAKE_GENERATOR_PLATFORM.rst b/share/cmake-3.18/Help/envvar/CMAKE_GENERATOR_PLATFORM.rst
deleted file mode 100644
index 917b30b..0000000
--- a/share/cmake-3.18/Help/envvar/CMAKE_GENERATOR_PLATFORM.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_GENERATOR_PLATFORM
-------------------------
-
-.. include:: ENV_VAR.txt
-
-Default value for :variable:`CMAKE_GENERATOR_PLATFORM` if no Cache entry
-is present and no value is specified by :manual:`cmake(1)` ``-A`` option.
-This value is only applied if :envvar:`CMAKE_GENERATOR` is set.
diff --git a/share/cmake-3.18/Help/envvar/CMAKE_GENERATOR_TOOLSET.rst b/share/cmake-3.18/Help/envvar/CMAKE_GENERATOR_TOOLSET.rst
deleted file mode 100644
index 7ac3856..0000000
--- a/share/cmake-3.18/Help/envvar/CMAKE_GENERATOR_TOOLSET.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_GENERATOR_TOOLSET
------------------------
-
-.. include:: ENV_VAR.txt
-
-Default value for :variable:`CMAKE_GENERATOR_TOOLSET` if no Cache entry
-is present and no value is specified by :manual:`cmake(1)` ``-T`` option.
-This value is only applied if :envvar:`CMAKE_GENERATOR` is set.
diff --git a/share/cmake-3.18/Help/envvar/CMAKE_LANG_COMPILER_LAUNCHER.rst b/share/cmake-3.18/Help/envvar/CMAKE_LANG_COMPILER_LAUNCHER.rst
deleted file mode 100644
index 4f91e9a..0000000
--- a/share/cmake-3.18/Help/envvar/CMAKE_LANG_COMPILER_LAUNCHER.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_<LANG>_COMPILER_LAUNCHER
-------------------------------
-
-.. include:: ENV_VAR.txt
-
-Default compiler launcher to use for the specified language. Will only be used
-by CMake to initialize the variable on the first configuration. Afterwards, it
-is available through the cache setting of the variable of the same name. For
-any configuration run (including the first), the environment variable will be
-ignored if the :variable:`CMAKE_<LANG>_COMPILER_LAUNCHER` variable is defined.
diff --git a/share/cmake-3.18/Help/envvar/CMAKE_NO_VERBOSE.rst b/share/cmake-3.18/Help/envvar/CMAKE_NO_VERBOSE.rst
deleted file mode 100644
index 149efbd..0000000
--- a/share/cmake-3.18/Help/envvar/CMAKE_NO_VERBOSE.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_NO_VERBOSE
-----------------
-
-Disables verbose output from CMake when :envvar:`VERBOSE` environment variable
-is set.
-
-Only your build tool of choice will still print verbose output when you start
-to actually build your project.
diff --git a/share/cmake-3.18/Help/envvar/CSFLAGS.rst b/share/cmake-3.18/Help/envvar/CSFLAGS.rst
deleted file mode 100644
index 8762982..0000000
--- a/share/cmake-3.18/Help/envvar/CSFLAGS.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-CSFLAGS
--------
-
-.. include:: ENV_VAR.txt
-
-Preferred executable for compiling ``CSharp`` language files. Will only be
-used by CMake on the first configuration to determine ``CSharp`` default
-compilation flags, after which the value for ``CSFLAGS`` is stored in the cache
-as :variable:`CMAKE_CSharp_FLAGS <CMAKE_<LANG>_FLAGS>`. For any configuration
-run (including the first), the environment variable will be ignored if the
-:variable:`CMAKE_CSharp_FLAGS <CMAKE_<LANG>_FLAGS>` variable is defined.
-
-See also :variable:`CMAKE_CSharp_FLAGS_INIT <CMAKE_<LANG>_FLAGS_INIT>`.
diff --git a/share/cmake-3.18/Help/envvar/CTEST_PROGRESS_OUTPUT.rst b/share/cmake-3.18/Help/envvar/CTEST_PROGRESS_OUTPUT.rst
deleted file mode 100644
index b36a6b8..0000000
--- a/share/cmake-3.18/Help/envvar/CTEST_PROGRESS_OUTPUT.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-CTEST_PROGRESS_OUTPUT
----------------------
-
-.. include:: ENV_VAR.txt
-
-Boolean environment variable that affects how :manual:`ctest <ctest(1)>`
-command output reports overall progress.  When set to ``1``, ``TRUE``, ``ON`` or anything
-else that evaluates to boolean true, progress is reported by repeatedly
-updating the same line.  This greatly reduces the overall verbosity, but is
-only supported when output is sent directly to a terminal.  If the environment
-variable is not set or has a value that evaluates to false, output is reported
-normally with each test having its own start and end lines logged to the
-output.
-
-The ``--progress`` option to :manual:`ctest <ctest(1)>` overrides this
-environment variable if both are given.
diff --git a/share/cmake-3.18/Help/envvar/CUDACXX.rst b/share/cmake-3.18/Help/envvar/CUDACXX.rst
deleted file mode 100644
index 10c0f9d..0000000
--- a/share/cmake-3.18/Help/envvar/CUDACXX.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CUDACXX
--------
-
-.. include:: ENV_VAR.txt
-
-Preferred executable for compiling ``CUDA`` language files. Will only be used by
-CMake on the first configuration to determine ``CUDA`` compiler, after which the
-value for ``CUDA`` is stored in the cache as
-:variable:`CMAKE_CUDA_COMPILER <CMAKE_<LANG>_COMPILER>`. For any configuration
-run (including the first), the environment variable will be ignored if the
-:variable:`CMAKE_CUDA_COMPILER <CMAKE_<LANG>_COMPILER>` variable is defined.
diff --git a/share/cmake-3.18/Help/envvar/CUDAFLAGS.rst b/share/cmake-3.18/Help/envvar/CUDAFLAGS.rst
deleted file mode 100644
index 14c5d84..0000000
--- a/share/cmake-3.18/Help/envvar/CUDAFLAGS.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-CUDAFLAGS
----------
-
-.. include:: ENV_VAR.txt
-
-Default compilation flags to be used when compiling ``CUDA`` files. Will only be
-used by CMake on the first configuration to determine ``CUDA`` default
-compilation flags, after which the value for ``CUDAFLAGS`` is stored in the
-cache as :variable:`CMAKE_CUDA_FLAGS <CMAKE_<LANG>_FLAGS>`. For any configuration
-run (including the first), the environment variable will be ignored if
-the :variable:`CMAKE_CUDA_FLAGS <CMAKE_<LANG>_FLAGS>` variable is defined.
-
-See also :variable:`CMAKE_CUDA_FLAGS_INIT <CMAKE_<LANG>_FLAGS_INIT>`.
diff --git a/share/cmake-3.18/Help/envvar/CUDAHOSTCXX.rst b/share/cmake-3.18/Help/envvar/CUDAHOSTCXX.rst
deleted file mode 100644
index b9f65bd..0000000
--- a/share/cmake-3.18/Help/envvar/CUDAHOSTCXX.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-CUDAHOSTCXX
------------
-
-.. include:: ENV_VAR.txt
-
-Preferred executable for compiling host code when compiling ``CUDA``
-language files. Will only be used by CMake on the first configuration to
-determine ``CUDA`` host compiler, after which the value for ``CUDAHOSTCXX`` is
-stored in the cache as :variable:`CMAKE_CUDA_HOST_COMPILER`. For any
-configuration run (including the first), the environment variable will be
-ignored if the :variable:`CMAKE_CUDA_HOST_COMPILER` variable is defined.
-
-This environment variable is primarily meant for use with projects that
-enable ``CUDA`` as a first-class language.  The :module:`FindCUDA`
-module will also use it to initialize its ``CUDA_HOST_COMPILER`` setting.
diff --git a/share/cmake-3.18/Help/envvar/CXX.rst b/share/cmake-3.18/Help/envvar/CXX.rst
deleted file mode 100644
index d655350..0000000
--- a/share/cmake-3.18/Help/envvar/CXX.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CXX
----
-
-.. include:: ENV_VAR.txt
-
-Preferred executable for compiling ``CXX`` language files. Will only be used by
-CMake on the first configuration to determine ``CXX`` compiler, after which the
-value for ``CXX`` is stored in the cache as
-:variable:`CMAKE_CXX_COMPILER <CMAKE_<LANG>_COMPILER>`. For any configuration
-run (including the first), the environment variable will be ignored if the
-:variable:`CMAKE_CXX_COMPILER <CMAKE_<LANG>_COMPILER>` variable is defined.
diff --git a/share/cmake-3.18/Help/envvar/FC.rst b/share/cmake-3.18/Help/envvar/FC.rst
deleted file mode 100644
index d6cabbc..0000000
--- a/share/cmake-3.18/Help/envvar/FC.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-FC
---
-
-.. include:: ENV_VAR.txt
-
-Preferred executable for compiling ``Fortran`` language files. Will only be used
-by CMake on the first configuration to determine ``Fortran`` compiler, after
-which the value for ``Fortran`` is stored in the cache as
-:variable:`CMAKE_Fortran_COMPILER <CMAKE_<LANG>_COMPILER>`. For any
-configuration run (including the first), the environment variable will be
-ignored if the :variable:`CMAKE_Fortran_COMPILER <CMAKE_<LANG>_COMPILER>`
-variable is defined.
diff --git a/share/cmake-3.18/Help/envvar/OBJC.rst b/share/cmake-3.18/Help/envvar/OBJC.rst
deleted file mode 100644
index 30c0d13..0000000
--- a/share/cmake-3.18/Help/envvar/OBJC.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-OBJC
-----
-
-.. include:: ENV_VAR.txt
-
-Preferred executable for compiling ``OBJC`` language files. Will only be used
-by CMake on the first configuration to determine ``OBJC`` compiler, after
-which the value for ``OBJC`` is stored in the cache as
-:variable:`CMAKE_OBJC_COMPILER <CMAKE_<LANG>_COMPILER>`. For any configuration
-run (including the first), the environment variable will be ignored if the
-:variable:`CMAKE_OBJC_COMPILER <CMAKE_<LANG>_COMPILER>` variable is defined.
-
-If ``OBJC`` is not defined, the :envvar:`CC` environment variable will
-be checked instead.
diff --git a/share/cmake-3.18/Help/envvar/OBJCXX.rst b/share/cmake-3.18/Help/envvar/OBJCXX.rst
deleted file mode 100644
index a72f7e7..0000000
--- a/share/cmake-3.18/Help/envvar/OBJCXX.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-OBJCXX
-------
-
-.. include:: ENV_VAR.txt
-
-Preferred executable for compiling ``OBJCXX`` language files. Will only be used
-by CMake on the first configuration to determine ``OBJCXX`` compiler, after
-which the value for ``OBJCXX`` is stored in the cache as
-:variable:`CMAKE_OBJCXX_COMPILER <CMAKE_<LANG>_COMPILER>`. For any configuration
-run (including the first), the environment variable will be ignored if the
-:variable:`CMAKE_OBJCXX_COMPILER <CMAKE_<LANG>_COMPILER>` variable is defined.
-
-If ``OBJCXX`` is not defined, the :envvar:`CXX` environment variable will
-be checked instead.
diff --git a/share/cmake-3.18/Help/envvar/PackageName_ROOT.rst b/share/cmake-3.18/Help/envvar/PackageName_ROOT.rst
deleted file mode 100644
index 82b0a06..0000000
--- a/share/cmake-3.18/Help/envvar/PackageName_ROOT.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-<PackageName>_ROOT
-------------------
-
-.. include:: ENV_VAR.txt
-
-Calls to :command:`find_package(<PackageName>)` will search in prefixes
-specified by the ``<PackageName>_ROOT`` environment variable, where
-``<PackageName>`` is the name given to the :command:`find_package` call
-and ``_ROOT`` is literal.  For example, ``find_package(Foo)`` will search
-prefixes specified in the ``Foo_ROOT`` environment variable (if set).
-See policy :policy:`CMP0074`.
-
-This variable may hold a single prefix or a list of prefixes separated
-by ``:`` on UNIX or ``;`` on Windows (the same as the ``PATH`` environment
-variable convention on those platforms).
-
-See also the :variable:`<PackageName>_ROOT` CMake variable.
diff --git a/share/cmake-3.18/Help/envvar/RC.rst b/share/cmake-3.18/Help/envvar/RC.rst
deleted file mode 100644
index 557520e..0000000
--- a/share/cmake-3.18/Help/envvar/RC.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-RC
---
-
-.. include:: ENV_VAR.txt
-
-Preferred executable for compiling ``resource`` files. Will only be used by CMake
-on the first configuration to determine ``resource`` compiler, after which the
-value for ``RC`` is stored in the cache as
-:variable:`CMAKE_RC_COMPILER <CMAKE_<LANG>_COMPILER>`. For any configuration run
-(including the first), the environment variable will be ignored if the
-:variable:`CMAKE_RC_COMPILER <CMAKE_<LANG>_COMPILER>` variable is defined.
diff --git a/share/cmake-3.18/Help/envvar/SWIFTC.rst b/share/cmake-3.18/Help/envvar/SWIFTC.rst
deleted file mode 100644
index b12e51d..0000000
--- a/share/cmake-3.18/Help/envvar/SWIFTC.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-SWIFTC
-------
-
-.. include:: ENV_VAR.txt
-
-Preferred executable for compiling ``Swift`` language files. Will only be used by
-CMake on the first configuration to determine ``Swift`` compiler, after which the
-value for ``SWIFTC`` is stored in the cache as
-:variable:`CMAKE_Swift_COMPILER <CMAKE_<LANG>_COMPILER>`. For any configuration run
-(including the first), the environment variable will be ignored if the
-:variable:`CMAKE_Swift_COMPILER <CMAKE_<LANG>_COMPILER>` variable is defined.
diff --git a/share/cmake-3.18/Help/envvar/VERBOSE.rst b/share/cmake-3.18/Help/envvar/VERBOSE.rst
deleted file mode 100644
index 2d775a5..0000000
--- a/share/cmake-3.18/Help/envvar/VERBOSE.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-VERBOSE
--------
-
-Activates verbose output from CMake and your build tools of choice when
-you start to actually build your project.
-
-Note that any given value is ignored. It's just checked for existence.
-
-See also :ref:`Build Tool Mode <Build Tool Mode>` and
-:envvar:`CMAKE_NO_VERBOSE` environment variable
diff --git a/share/cmake-3.18/Help/generator/CodeBlocks.rst b/share/cmake-3.18/Help/generator/CodeBlocks.rst
deleted file mode 100644
index d830542..0000000
--- a/share/cmake-3.18/Help/generator/CodeBlocks.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-CodeBlocks
-----------
-
-Generates CodeBlocks project files.
-
-Project files for CodeBlocks will be created in the top directory and
-in every subdirectory which features a ``CMakeLists.txt`` file containing
-a :command:`project` call.  Additionally a hierarchy of makefiles is generated
-into the build tree.
-The :variable:`CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES` variable may
-be set to ``ON`` to exclude any files which are located outside of
-the project root directory.
-The appropriate make program can build the
-project through the default ``all`` target.  An ``install`` target is
-also provided.
-
-This "extra" generator may be specified as:
-
-``CodeBlocks - MinGW Makefiles``
- Generate with :generator:`MinGW Makefiles`.
-
-``CodeBlocks - NMake Makefiles``
- Generate with :generator:`NMake Makefiles`.
-
-``CodeBlocks - NMake Makefiles JOM``
- Generate with :generator:`NMake Makefiles JOM`.
-
-``CodeBlocks - Ninja``
- Generate with :generator:`Ninja`.
-
-``CodeBlocks - Unix Makefiles``
- Generate with :generator:`Unix Makefiles`.
diff --git a/share/cmake-3.18/Help/generator/CodeLite.rst b/share/cmake-3.18/Help/generator/CodeLite.rst
deleted file mode 100644
index 46fa5be..0000000
--- a/share/cmake-3.18/Help/generator/CodeLite.rst
+++ /dev/null
@@ -1,28 +0,0 @@
-CodeLite
-----------
-
-Generates CodeLite project files.
-
-Project files for CodeLite will be created in the top directory and
-in every subdirectory which features a CMakeLists.txt file containing
-a :command:`project` call.
-The :variable:`CMAKE_CODELITE_USE_TARGETS` variable may be set to ``ON``
-to change the default behavior from projects to targets as the basis
-for project files.
-The appropriate make program can build the
-project through the default ``all`` target.  An ``install`` target
-is also provided.
-
-This "extra" generator may be specified as:
-
-``CodeLite - MinGW Makefiles``
- Generate with :generator:`MinGW Makefiles`.
-
-``CodeLite - NMake Makefiles``
- Generate with :generator:`NMake Makefiles`.
-
-``CodeLite - Ninja``
- Generate with :generator:`Ninja`.
-
-``CodeLite - Unix Makefiles``
- Generate with :generator:`Unix Makefiles`.
diff --git a/share/cmake-3.18/Help/generator/Green Hills MULTI.rst b/share/cmake-3.18/Help/generator/Green Hills MULTI.rst
deleted file mode 100644
index dffc679..0000000
--- a/share/cmake-3.18/Help/generator/Green Hills MULTI.rst
+++ /dev/null
@@ -1,69 +0,0 @@
-Green Hills MULTI
------------------
-
-Generates Green Hills MULTI project files (experimental, work-in-progress).
-
-The buildsystem has predetermined build-configuration settings that can be controlled
-via the :variable:`CMAKE_BUILD_TYPE` variable.
-
-Customizations that are used to pick toolset and target system:
-
-The ``-A <arch>`` can be supplied for setting the target architecture.
-``<arch>`` usually is one of ``arm``, ``ppc``, ``86``, etcetera.
-If the target architecture is not specified then
-the default architecture of ``arm`` will be used.
-
-The ``-T <toolset>`` option can be used to set the directory location of the toolset.
-Both absolute and relative paths are valid. Relative paths use ``GHS_TOOLSET_ROOT``
-as the root. If the toolset is not specified then the latest toolset found in
-``GHS_TOOLSET_ROOT`` will be used.
-
-Cache variables that are used for toolset and target system customization:
-
-* ``GHS_TARGET_PLATFORM``
-
-  | Defaults to ``integrity``.
-  | Usual values are ``integrity``, ``threadx``, ``uvelosity``, ``velosity``,
-    ``vxworks``, ``standalone``.
-
-* ``GHS_PRIMARY_TARGET``
-
-  | Sets ``primaryTarget`` entry in project file.
-  | Defaults to ``<arch>_<GHS_TARGET_PLATFORM>.tgt``.
-
-* ``GHS_TOOLSET_ROOT``
-
-  | Root path for ``toolset`` searches.
-  | Defaults to ``C:/ghs`` in Windows or ``/usr/ghs`` in Linux.
-
-* ``GHS_OS_ROOT``
-
-  | Root path for RTOS searches.
-  | Defaults to ``C:/ghs`` in Windows or ``/usr/ghs`` in Linux.
-
-* ``GHS_OS_DIR`` and ``GHS_OS_DIR_OPTION``
-
-  | Sets ``-os_dir`` entry in project file.
-  | Defaults to latest platform OS installation at ``GHS_OS_ROOT``.  Set this value if
-    a specific RTOS is to be used.
-  | ``GHS_OS_DIR_OPTION`` default value is ``-os_dir``.
-
-* ``GHS_BSP_NAME``
-
-  | Sets ``-bsp`` entry in project file.
-  | Defaults to ``sim<arch>`` for ``integrity`` platforms.
-
-Customizations are available through the following cache variables:
-
-* ``GHS_CUSTOMIZATION``
-* ``GHS_GPJ_MACROS``
-
-The following properties are available:
-
-* :prop_tgt:`GHS_INTEGRITY_APP`
-* :prop_tgt:`GHS_NO_SOURCE_GROUP_FILE`
-
-.. note::
-  This generator is deemed experimental as of CMake |release|
-  and is still a work in progress.  Future versions of CMake
-  may make breaking changes as the generator matures.
diff --git a/share/cmake-3.18/Help/generator/NMake Makefiles JOM.rst b/share/cmake-3.18/Help/generator/NMake Makefiles JOM.rst
deleted file mode 100644
index 3a8744c..0000000
--- a/share/cmake-3.18/Help/generator/NMake Makefiles JOM.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-NMake Makefiles JOM
--------------------
-
-Generates JOM makefiles.
diff --git a/share/cmake-3.18/Help/generator/Ninja Multi-Config.rst b/share/cmake-3.18/Help/generator/Ninja Multi-Config.rst
deleted file mode 100644
index f480eb8..0000000
--- a/share/cmake-3.18/Help/generator/Ninja Multi-Config.rst
+++ /dev/null
@@ -1,87 +0,0 @@
-Ninja Multi-Config
-------------------
-
-Generates multiple ``build-<Config>.ninja`` files.
-
-This generator is very much like the :generator:`Ninja` generator, but with
-some key differences. Only these differences will be discussed in this
-document.
-
-Unlike the :generator:`Ninja` generator, ``Ninja Multi-Config`` generates
-multiple configurations at once with :variable:`CMAKE_CONFIGURATION_TYPES`
-instead of only one configuration with :variable:`CMAKE_BUILD_TYPE`. One
-``build-<Config>.ninja`` file will be generated for each of these
-configurations (with ``<Config>`` being the configuration name.) These files
-are intended to be run with ``ninja -f build-<Config>.ninja``. A
-``build.ninja`` file is also generated, using the configuration from either
-:variable:`CMAKE_DEFAULT_BUILD_TYPE` or the first item from
-:variable:`CMAKE_CONFIGURATION_TYPES`.
-
-``cmake --build . --config <Config>`` will always use ``build-<Config>.ninja``
-to build. If no ``--config`` argument is specified, ``cmake --build .`` will
-default to ``build-Debug.ninja``, unless a ``build.ninja`` is generated (see
-below), in which case that will be used instead.
-
-Each ``build-<Config>.ninja`` file contains ``<target>`` targets as well as
-``<target>:<Config>`` targets, where ``<Config>`` is the same as the
-configuration specified in ``build-<Config>.ninja`` Additionally, if
-cross-config mode is enabled, ``build-<Config>.ninja`` may contain
-``<target>:<OtherConfig>`` targets, where ``<OtherConfig>`` is a cross-config,
-as well as ``<target>:all``, which builds the target in all cross-configs. See
-below for how to enable cross-config mode.
-
-The ``Ninja Multi-Config`` generator recognizes the following variables:
-
-:variable:`CMAKE_CONFIGURATION_TYPES`
-  Specifies the total set of configurations to build.
-
-:variable:`CMAKE_CROSS_CONFIGS`
-  Specifies a :ref:`semicolon-separated list <CMake Language Lists>` of
-  configurations available from all ``build-<Config>.ninja`` files.
-
-:variable:`CMAKE_DEFAULT_BUILD_TYPE`
-  Specifies the configuration to use by default in a ``build.ninja`` file.
-
-:variable:`CMAKE_DEFAULT_CONFIGS`
-  Specifies a :ref:`semicolon-separated list <CMake Language Lists>` of
-  configurations to build for a target in ``build.ninja``
-  if no ``:<Config>`` suffix is specified.
-
-Consider the following example:
-
-.. code-block:: cmake
-
-  cmake_minimum_required(VERSION 3.16)
-  project(MultiConfigNinja C)
-
-  add_executable(generator generator.c)
-  add_custom_command(OUTPUT generated.c COMMAND generator generated.c)
-  add_library(generated ${CMAKE_BINARY_DIR}/generated.c)
-
-Now assume you configure the project with ``Ninja Multi-Config`` and run one of
-the following commands:
-
-.. code-block:: shell
-
-  ninja -f build-Debug.ninja generated
-  # OR
-  cmake --build . --config Debug --target generated
-
-This would build the ``Debug`` configuration of ``generator``, which would be
-used to generate ``generated.c``, which would be used to build the ``Debug``
-configuration of ``generated``.
-
-But if :variable:`CMAKE_CROSS_CONFIGS` is set to ``all``, and you run the
-following instead:
-
-.. code-block:: shell
-
-  ninja -f build-Release.ninja generated:Debug
-  # OR
-  cmake --build . --config Release --target generated:Debug
-
-This would build the ``Release`` configuration of ``generator``, which would be
-used to generate ``generated.c``, which would be used to build the ``Debug``
-configuration of ``generated``. This is useful for running a release-optimized
-version of a generator utility while still building the debug version of the
-targets built with the generated code.
diff --git a/share/cmake-3.18/Help/generator/Ninja.rst b/share/cmake-3.18/Help/generator/Ninja.rst
deleted file mode 100644
index 08ee81b..0000000
--- a/share/cmake-3.18/Help/generator/Ninja.rst
+++ /dev/null
@@ -1,42 +0,0 @@
-Ninja
------
-
-Generates ``build.ninja`` files.
-
-A ``build.ninja`` file is generated into the build tree.  Use the ninja
-program to build the project through the ``all`` target and install the
-project through the ``install`` (or ``install/strip``) target.
-
-For each subdirectory ``sub/dir`` of the project, additional targets
-are generated:
-
-``sub/dir/all``
-  Depends on all targets required by the subdirectory.
-
-``sub/dir/install``
-  Runs the install step in the subdirectory, if any.
-
-``sub/dir/install/strip``
-  Runs the install step in the subdirectory followed by a ``CMAKE_STRIP`` command,
-  if any.
-
-  The ``CMAKE_STRIP`` variable will contain the platform's ``strip`` utility, which
-  removes symbols information from generated binaries.
-
-``sub/dir/test``
-  Runs the test step in the subdirectory, if any.
-
-``sub/dir/package``
-  Runs the package step in the subdirectory, if any.
-
-Fortran Support
-^^^^^^^^^^^^^^^
-
-The ``Ninja`` generator conditionally supports Fortran when the ``ninja``
-tool is at least version 1.10 (which has the required features).
-
-See Also
-^^^^^^^^
-
-The :generator:`Ninja Multi-Config` generator is similar to the ``Ninja``
-generator, but generates multiple configurations at once.
diff --git a/share/cmake-3.18/Help/generator/Visual Studio 10 2010.rst b/share/cmake-3.18/Help/generator/Visual Studio 10 2010.rst
deleted file mode 100644
index 4bf9a8f..0000000
--- a/share/cmake-3.18/Help/generator/Visual Studio 10 2010.rst
+++ /dev/null
@@ -1,43 +0,0 @@
-Visual Studio 10 2010
----------------------
-
-Generates Visual Studio 10 (VS 2010) project files.
-
-For compatibility with CMake versions prior to 3.0, one may specify this
-generator using the name ``Visual Studio 10`` without the year component.
-
-Project Types
-^^^^^^^^^^^^^
-
-Only Visual C++ and C# projects may be generated.  Other types of
-projects (Database, Website, etc.) are not supported.
-
-Platform Selection
-^^^^^^^^^^^^^^^^^^
-
-The default target platform name (architecture) is ``Win32``.
-
-The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
-via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
-name (architecture).  For example:
-
-* ``cmake -G "Visual Studio 10 2010" -A Win32``
-* ``cmake -G "Visual Studio 10 2010" -A x64``
-* ``cmake -G "Visual Studio 10 2010" -A Itanium``
-
-For compatibility with CMake versions prior to 3.1, one may specify
-a target platform name optionally at the end of the generator name.
-This is supported only for:
-
-``Visual Studio 10 2010 Win64``
-  Specify target platform ``x64``.
-
-``Visual Studio 10 2010 IA64``
-  Specify target platform ``Itanium``.
-
-Toolset Selection
-^^^^^^^^^^^^^^^^^
-
-The ``v100`` toolset that comes with Visual Studio 10 2010 is selected by
-default.  The :variable:`CMAKE_GENERATOR_TOOLSET` option may be set, perhaps
-via the :manual:`cmake(1)` ``-T`` option, to specify another toolset.
diff --git a/share/cmake-3.18/Help/generator/Visual Studio 11 2012.rst b/share/cmake-3.18/Help/generator/Visual Studio 11 2012.rst
deleted file mode 100644
index 5d89a6e..0000000
--- a/share/cmake-3.18/Help/generator/Visual Studio 11 2012.rst
+++ /dev/null
@@ -1,48 +0,0 @@
-Visual Studio 11 2012
----------------------
-
-Generates Visual Studio 11 (VS 2012) project files.
-
-For compatibility with CMake versions prior to 3.0, one may specify this
-generator using the name "Visual Studio 11" without the year component.
-
-Project Types
-^^^^^^^^^^^^^
-
-Only Visual C++ and C# projects may be generated.  Other types of
-projects (JavaScript, Database, Website, etc.) are not supported.
-
-Platform Selection
-^^^^^^^^^^^^^^^^^^
-
-The default target platform name (architecture) is ``Win32``.
-
-The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
-via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
-name (architecture).  For example:
-
-* ``cmake -G "Visual Studio 11 2012" -A Win32``
-* ``cmake -G "Visual Studio 11 2012" -A x64``
-* ``cmake -G "Visual Studio 11 2012" -A ARM``
-* ``cmake -G "Visual Studio 11 2012" -A <WinCE-SDK>``
-  (Specify a target platform matching a Windows CE SDK name.)
-
-For compatibility with CMake versions prior to 3.1, one may specify
-a target platform name optionally at the end of the generator name.
-This is supported only for:
-
-``Visual Studio 11 2012 Win64``
-  Specify target platform ``x64``.
-
-``Visual Studio 11 2012 ARM``
-  Specify target platform ``ARM``.
-
-``Visual Studio 11 2012 <WinCE-SDK>``
-  Specify target platform matching a Windows CE SDK name.
-
-Toolset Selection
-^^^^^^^^^^^^^^^^^
-
-The ``v110`` toolset that comes with Visual Studio 11 2012 is selected by
-default.  The :variable:`CMAKE_GENERATOR_TOOLSET` option may be set, perhaps
-via the :manual:`cmake(1)` ``-T`` option, to specify another toolset.
diff --git a/share/cmake-3.18/Help/generator/Visual Studio 12 2013.rst b/share/cmake-3.18/Help/generator/Visual Studio 12 2013.rst
deleted file mode 100644
index fb8e021..0000000
--- a/share/cmake-3.18/Help/generator/Visual Studio 12 2013.rst
+++ /dev/null
@@ -1,48 +0,0 @@
-Visual Studio 12 2013
----------------------
-
-Generates Visual Studio 12 (VS 2013) project files.
-
-For compatibility with CMake versions prior to 3.0, one may specify this
-generator using the name "Visual Studio 12" without the year component.
-
-Project Types
-^^^^^^^^^^^^^
-
-Only Visual C++ and C# projects may be generated.  Other types of
-projects (JavaScript, Powershell, Python, etc.) are not supported.
-
-Platform Selection
-^^^^^^^^^^^^^^^^^^
-
-The default target platform name (architecture) is ``Win32``.
-
-The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
-via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
-name (architecture).  For example:
-
-* ``cmake -G "Visual Studio 12 2013" -A Win32``
-* ``cmake -G "Visual Studio 12 2013" -A x64``
-* ``cmake -G "Visual Studio 12 2013" -A ARM``
-
-For compatibility with CMake versions prior to 3.1, one may specify
-a target platform name optionally at the end of the generator name.
-This is supported only for:
-
-``Visual Studio 12 2013 Win64``
-  Specify target platform ``x64``.
-
-``Visual Studio 12 2013 ARM``
-  Specify target platform ``ARM``.
-
-Toolset Selection
-^^^^^^^^^^^^^^^^^
-
-The ``v120`` toolset that comes with Visual Studio 12 2013 is selected by
-default.  The :variable:`CMAKE_GENERATOR_TOOLSET` option may be set, perhaps
-via the :manual:`cmake(1)` ``-T`` option, to specify another toolset.
-
-.. |VS_TOOLSET_HOST_ARCH_DEFAULT| replace::
-   By default this generator uses the 32-bit variant even on a 64-bit host.
-
-.. include:: VS_TOOLSET_HOST_ARCH.txt
diff --git a/share/cmake-3.18/Help/generator/Visual Studio 14 2015.rst b/share/cmake-3.18/Help/generator/Visual Studio 14 2015.rst
deleted file mode 100644
index 7383f7a..0000000
--- a/share/cmake-3.18/Help/generator/Visual Studio 14 2015.rst
+++ /dev/null
@@ -1,45 +0,0 @@
-Visual Studio 14 2015
----------------------
-
-Generates Visual Studio 14 (VS 2015) project files.
-
-Project Types
-^^^^^^^^^^^^^
-
-Only Visual C++ and C# projects may be generated.  Other types of
-projects (JavaScript, Powershell, Python, etc.) are not supported.
-
-Platform Selection
-^^^^^^^^^^^^^^^^^^
-
-The default target platform name (architecture) is ``Win32``.
-
-The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
-via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
-name (architecture).  For example:
-
-* ``cmake -G "Visual Studio 14 2015" -A Win32``
-* ``cmake -G "Visual Studio 14 2015" -A x64``
-* ``cmake -G "Visual Studio 14 2015" -A ARM``
-
-For compatibility with CMake versions prior to 3.1, one may specify
-a target platform name optionally at the end of the generator name.
-This is supported only for:
-
-``Visual Studio 14 2015 Win64``
-  Specify target platform ``x64``.
-
-``Visual Studio 14 2015 ARM``
-  Specify target platform ``ARM``.
-
-Toolset Selection
-^^^^^^^^^^^^^^^^^
-
-The ``v140`` toolset that comes with Visual Studio 14 2015 is selected by
-default.  The :variable:`CMAKE_GENERATOR_TOOLSET` option may be set, perhaps
-via the :manual:`cmake(1)` ``-T`` option, to specify another toolset.
-
-.. |VS_TOOLSET_HOST_ARCH_DEFAULT| replace::
-   By default this generator uses the 32-bit variant even on a 64-bit host.
-
-.. include:: VS_TOOLSET_HOST_ARCH.txt
diff --git a/share/cmake-3.18/Help/generator/Visual Studio 15 2017.rst b/share/cmake-3.18/Help/generator/Visual Studio 15 2017.rst
deleted file mode 100644
index 7e6f0fb..0000000
--- a/share/cmake-3.18/Help/generator/Visual Studio 15 2017.rst
+++ /dev/null
@@ -1,62 +0,0 @@
-Visual Studio 15 2017
----------------------
-
-Generates Visual Studio 15 (VS 2017) project files.
-
-Project Types
-^^^^^^^^^^^^^
-
-Only Visual C++ and C# projects may be generated.  Other types of
-projects (JavaScript, Powershell, Python, etc.) are not supported.
-
-Instance Selection
-^^^^^^^^^^^^^^^^^^
-
-VS 2017 supports multiple installations on the same machine.
-The :variable:`CMAKE_GENERATOR_INSTANCE` variable may be set as a
-cache entry containing the absolute path to a Visual Studio instance.
-If the value is not specified explicitly by the user or a toolchain file,
-CMake queries the Visual Studio Installer to locate VS instances, chooses
-one, and sets the variable as a cache entry to hold the value persistently.
-
-When CMake first chooses an instance, if the ``VS150COMNTOOLS`` environment
-variable is set and points to the ``Common7/Tools`` directory within
-one of the instances, that instance will be used.  Otherwise, if more
-than one instance is installed we do not define which one is chosen
-by default.
-
-Platform Selection
-^^^^^^^^^^^^^^^^^^
-
-The default target platform name (architecture) is ``Win32``.
-
-The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
-via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
-name (architecture).  For example:
-
-* ``cmake -G "Visual Studio 15 2017" -A Win32``
-* ``cmake -G "Visual Studio 15 2017" -A x64``
-* ``cmake -G "Visual Studio 15 2017" -A ARM``
-* ``cmake -G "Visual Studio 15 2017" -A ARM64``
-
-For compatibility with CMake versions prior to 3.1, one may specify
-a target platform name optionally at the end of the generator name.
-This is supported only for:
-
-``Visual Studio 15 2017 Win64``
-  Specify target platform ``x64``.
-
-``Visual Studio 15 2017 ARM``
-  Specify target platform ``ARM``.
-
-Toolset Selection
-^^^^^^^^^^^^^^^^^
-
-The ``v141`` toolset that comes with Visual Studio 15 2017 is selected by
-default.  The :variable:`CMAKE_GENERATOR_TOOLSET` option may be set, perhaps
-via the :manual:`cmake(1)` ``-T`` option, to specify another toolset.
-
-.. |VS_TOOLSET_HOST_ARCH_DEFAULT| replace::
-   By default this generator uses the 32-bit variant even on a 64-bit host.
-
-.. include:: VS_TOOLSET_HOST_ARCH.txt
diff --git a/share/cmake-3.18/Help/generator/Visual Studio 16 2019.rst b/share/cmake-3.18/Help/generator/Visual Studio 16 2019.rst
deleted file mode 100644
index 4aec7f7..0000000
--- a/share/cmake-3.18/Help/generator/Visual Studio 16 2019.rst
+++ /dev/null
@@ -1,54 +0,0 @@
-Visual Studio 16 2019
----------------------
-
-Generates Visual Studio 16 (VS 2019) project files.
-
-Project Types
-^^^^^^^^^^^^^
-
-Only Visual C++ and C# projects may be generated.  Other types of
-projects (JavaScript, Powershell, Python, etc.) are not supported.
-
-Instance Selection
-^^^^^^^^^^^^^^^^^^
-
-VS 2019 supports multiple installations on the same machine.
-The :variable:`CMAKE_GENERATOR_INSTANCE` variable may be set as a
-cache entry containing the absolute path to a Visual Studio instance.
-If the value is not specified explicitly by the user or a toolchain file,
-CMake queries the Visual Studio Installer to locate VS instances, chooses
-one, and sets the variable as a cache entry to hold the value persistently.
-
-When CMake first chooses an instance, if the ``VS160COMNTOOLS`` environment
-variable is set and points to the ``Common7/Tools`` directory within
-one of the instances, that instance will be used.  Otherwise, if more
-than one instance is installed we do not define which one is chosen
-by default.
-
-Platform Selection
-^^^^^^^^^^^^^^^^^^
-
-The default target platform name (architecture) is that of the host
-and is provided in the :variable:`CMAKE_VS_PLATFORM_NAME_DEFAULT` variable.
-
-The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
-via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
-name (architecture).  For example:
-
-* ``cmake -G "Visual Studio 16 2019" -A Win32``
-* ``cmake -G "Visual Studio 16 2019" -A x64``
-* ``cmake -G "Visual Studio 16 2019" -A ARM``
-* ``cmake -G "Visual Studio 16 2019" -A ARM64``
-
-Toolset Selection
-^^^^^^^^^^^^^^^^^
-
-The ``v142`` toolset that comes with Visual Studio 16 2019 is selected by
-default.  The :variable:`CMAKE_GENERATOR_TOOLSET` option may be set, perhaps
-via the :manual:`cmake(1)` ``-T`` option, to specify another toolset.
-
-.. |VS_TOOLSET_HOST_ARCH_DEFAULT| replace::
-   By default this generator uses the 64-bit variant on x64 hosts and
-   the 32-bit variant otherwise.
-
-.. include:: VS_TOOLSET_HOST_ARCH.txt
diff --git a/share/cmake-3.18/Help/generator/Visual Studio 9 2008.rst b/share/cmake-3.18/Help/generator/Visual Studio 9 2008.rst
deleted file mode 100644
index a09d047..0000000
--- a/share/cmake-3.18/Help/generator/Visual Studio 9 2008.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-Visual Studio 9 2008
---------------------
-
-Generates Visual Studio 9 2008 project files.
-
-Platform Selection
-^^^^^^^^^^^^^^^^^^
-
-The default target platform name (architecture) is ``Win32``.
-
-The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
-via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
-name (architecture).  For example:
-
-* ``cmake -G "Visual Studio 9 2008" -A Win32``
-* ``cmake -G "Visual Studio 9 2008" -A x64``
-* ``cmake -G "Visual Studio 9 2008" -A Itanium``
-* ``cmake -G "Visual Studio 9 2008" -A <WinCE-SDK>``
-  (Specify a target platform matching a Windows CE SDK name.)
-
-For compatibility with CMake versions prior to 3.1, one may specify
-a target platform name optionally at the end of the generator name.
-This is supported only for:
-
-``Visual Studio 9 2008 Win64``
-  Specify target platform ``x64``.
-
-``Visual Studio 9 2008 IA64``
-  Specify target platform ``Itanium``.
-
-``Visual Studio 9 2008 <WinCE-SDK>``
-  Specify target platform matching a Windows CE SDK name.
diff --git a/share/cmake-3.18/Help/generator/Xcode.rst b/share/cmake-3.18/Help/generator/Xcode.rst
deleted file mode 100644
index d893ac5..0000000
--- a/share/cmake-3.18/Help/generator/Xcode.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-Xcode
------
-
-Generate Xcode project files.
-
-This supports Xcode 5.0 and above.
-
-Toolset Selection
-^^^^^^^^^^^^^^^^^
-
-By default Xcode is allowed to select its own default toolchain.
-The :variable:`CMAKE_GENERATOR_TOOLSET` option may be set, perhaps
-via the :manual:`cmake(1)` ``-T`` option, to specify another toolset.
diff --git a/share/cmake-3.18/Help/index.rst b/share/cmake-3.18/Help/index.rst
deleted file mode 100644
index 4d9a9c8..0000000
--- a/share/cmake-3.18/Help/index.rst
+++ /dev/null
@@ -1,104 +0,0 @@
-.. title:: CMake Reference Documentation
-
-Introduction
-############
-
-CMake is a tool to manage building of source code.  Originally, CMake was
-designed as a generator for various dialects of ``Makefile``, today
-CMake generates modern buildsystems such as ``Ninja`` as well as project
-files for IDEs such as Visual Studio and Xcode.
-
-CMake is widely used for the C and C++ languages, but it may be used to
-build source code of other languages too.
-
-People encountering CMake for the first time may have different initial
-goals.  To learn how to build a source code package downloaded from the
-internet, start with the :guide:`User Interaction Guide`.
-This will detail the steps needed to run the :manual:`cmake(1)` or
-:manual:`cmake-gui(1)` executable and how to choose a generator, and
-how to complete the build.
-
-The :guide:`Using Dependencies Guide` is aimed at developers
-wishing to get started using a third-party library.
-
-For developers starting a project using CMake, the :guide:`CMake Tutorial`
-is a suitable starting point.  The :manual:`cmake-buildsystem(7)`
-manual is aimed at developers expanding their knowledge of maintaining
-a buildsystem and becoming familiar with the build targets that
-can be represented in CMake.  The :manual:`cmake-packages(7)` manual
-explains how to create packages which can easily be consumed by
-third-party CMake-based buildsystems.
-
-Command-Line Tools
-##################
-
-.. toctree::
-   :maxdepth: 1
-
-   /manual/cmake.1
-   /manual/ctest.1
-   /manual/cpack.1
-
-Interactive Dialogs
-###################
-
-.. toctree::
-   :maxdepth: 1
-
-   /manual/cmake-gui.1
-   /manual/ccmake.1
-
-Reference Manuals
-#################
-
-.. toctree::
-   :maxdepth: 1
-
-   /manual/cmake-buildsystem.7
-   /manual/cmake-commands.7
-   /manual/cmake-compile-features.7
-   /manual/cmake-developer.7
-   /manual/cmake-env-variables.7
-   /manual/cmake-file-api.7
-   /manual/cmake-generator-expressions.7
-   /manual/cmake-generators.7
-   /manual/cmake-language.7
-   /manual/cmake-modules.7
-   /manual/cmake-packages.7
-   /manual/cmake-policies.7
-   /manual/cmake-properties.7
-   /manual/cmake-qt.7
-   /manual/cmake-server.7
-   /manual/cmake-toolchains.7
-   /manual/cmake-variables.7
-   /manual/cpack-generators.7
-
-.. only:: not man
-
- Guides
- ######
-
- .. toctree::
-    :maxdepth: 1
-
-    /guide/tutorial/index
-    /guide/user-interaction/index
-    /guide/using-dependencies/index
-
-.. only:: html or text
-
- Release Notes
- #############
-
- .. toctree::
-    :maxdepth: 1
-
-    /release/index
-
-.. only:: html
-
- Index and Search
- ################
-
- * :ref:`genindex`
- * :ref:`search`
diff --git a/share/cmake-3.18/Help/manual/OPTIONS_BUILD.txt b/share/cmake-3.18/Help/manual/OPTIONS_BUILD.txt
deleted file mode 100644
index 0947e41..0000000
--- a/share/cmake-3.18/Help/manual/OPTIONS_BUILD.txt
+++ /dev/null
@@ -1,126 +0,0 @@
-``-S <path-to-source>``
- Path to root directory of the CMake project to build.
-
-``-B <path-to-build>``
- Path to directory which CMake will use as the root of build directory.
-
- If the directory doesn't already exist CMake will make it.
-
-``-C <initial-cache>``
- Pre-load a script to populate the cache.
-
- When CMake is first run in an empty build tree, it creates a
- ``CMakeCache.txt`` file and populates it with customizable settings for
- the project.  This option may be used to specify a file from which
- to load cache entries before the first pass through the project's
- CMake listfiles.  The loaded entries take priority over the
- project's default values.  The given file should be a CMake script
- containing :command:`set` commands that use the ``CACHE`` option, not a
- cache-format file.
-
- References to :variable:`CMAKE_SOURCE_DIR` and :variable:`CMAKE_BINARY_DIR`
- within the script evaluate to the top-level source and build tree.
-
-``-D <var>:<type>=<value>, -D <var>=<value>``
- Create or update a CMake ``CACHE`` entry.
-
- When CMake is first run in an empty build tree, it creates a
- ``CMakeCache.txt`` file and populates it with customizable settings for
- the project.  This option may be used to specify a setting that
- takes priority over the project's default value.  The option may be
- repeated for as many ``CACHE`` entries as desired.
-
- If the ``:<type>`` portion is given it must be one of the types
- specified by the :command:`set` command documentation for its
- ``CACHE`` signature.
- If the ``:<type>`` portion is omitted the entry will be created
- with no type if it does not exist with a type already.  If a
- command in the project sets the type to ``PATH`` or ``FILEPATH``
- then the ``<value>`` will be converted to an absolute path.
-
- This option may also be given as a single argument:
- ``-D<var>:<type>=<value>`` or ``-D<var>=<value>``.
-
-``-U <globbing_expr>``
- Remove matching entries from CMake ``CACHE``.
-
- This option may be used to remove one or more variables from the
- ``CMakeCache.txt`` file, globbing expressions using ``*`` and ``?`` are
- supported.  The option may be repeated for as many ``CACHE`` entries as
- desired.
-
- Use with care, you can make your ``CMakeCache.txt`` non-working.
-
-``-G <generator-name>``
- Specify a build system generator.
-
- CMake may support multiple native build systems on certain
- platforms.  A generator is responsible for generating a particular
- build system.  Possible generator names are specified in the
- :manual:`cmake-generators(7)` manual.
-
- If not specified, CMake checks the :envvar:`CMAKE_GENERATOR` environment
- variable and otherwise falls back to a builtin default selection.
-
-``-T <toolset-spec>``
- Toolset specification for the generator, if supported.
-
- Some CMake generators support a toolset specification to tell
- the native build system how to choose a compiler.  See the
- :variable:`CMAKE_GENERATOR_TOOLSET` variable for details.
-
-``-A <platform-name>``
- Specify platform name if supported by generator.
-
- Some CMake generators support a platform name to be given to the
- native build system to choose a compiler or SDK.  See the
- :variable:`CMAKE_GENERATOR_PLATFORM` variable for details.
-
-``-Wno-dev``
- Suppress developer warnings.
-
- Suppress warnings that are meant for the author of the
- ``CMakeLists.txt`` files. By default this will also turn off
- deprecation warnings.
-
-``-Wdev``
- Enable developer warnings.
-
- Enable warnings that are meant for the author of the ``CMakeLists.txt``
- files. By default this will also turn on deprecation warnings.
-
-``-Werror=dev``
- Make developer warnings errors.
-
- Make warnings that are meant for the author of the ``CMakeLists.txt`` files
- errors. By default this will also turn on deprecated warnings as errors.
-
-``-Wno-error=dev``
- Make developer warnings not errors.
-
- Make warnings that are meant for the author of the ``CMakeLists.txt`` files not
- errors. By default this will also turn off deprecated warnings as errors.
-
-``-Wdeprecated``
- Enable deprecated functionality warnings.
-
- Enable warnings for usage of deprecated functionality, that are meant
- for the author of the ``CMakeLists.txt`` files.
-
-``-Wno-deprecated``
- Suppress deprecated functionality warnings.
-
- Suppress warnings for usage of deprecated functionality, that are meant
- for the author of the ``CMakeLists.txt`` files.
-
-``-Werror=deprecated``
- Make deprecated macro and function warnings errors.
-
- Make warnings for usage of deprecated macros and functions, that are meant
- for the author of the ``CMakeLists.txt`` files, errors.
-
-``-Wno-error=deprecated``
- Make deprecated macro and function warnings not errors.
-
- Make warnings for usage of deprecated macros and functions, that are meant
- for the author of the ``CMakeLists.txt`` files, not errors.
diff --git a/share/cmake-3.18/Help/manual/VS-Choose-Arch.png b/share/cmake-3.18/Help/manual/VS-Choose-Arch.png
deleted file mode 100644
index 816b0f4..0000000
--- a/share/cmake-3.18/Help/manual/VS-Choose-Arch.png
+++ /dev/null
Binary files differ
diff --git a/share/cmake-3.18/Help/manual/cmake-buildsystem.7.rst b/share/cmake-3.18/Help/manual/cmake-buildsystem.7.rst
deleted file mode 100644
index d8142a2..0000000
--- a/share/cmake-3.18/Help/manual/cmake-buildsystem.7.rst
+++ /dev/null
@@ -1,1011 +0,0 @@
-.. cmake-manual-description: CMake Buildsystem Reference
-
-cmake-buildsystem(7)
-********************
-
-.. only:: html
-
-   .. contents::
-
-Introduction
-============
-
-A CMake-based buildsystem is organized as a set of high-level logical
-targets.  Each target corresponds to an executable or library, or
-is a custom target containing custom commands.  Dependencies between the
-targets are expressed in the buildsystem to determine the build order
-and the rules for regeneration in response to change.
-
-Binary Targets
-==============
-
-Executables and libraries are defined using the :command:`add_executable`
-and :command:`add_library` commands.  The resulting binary files have
-appropriate :prop_tgt:`PREFIX`, :prop_tgt:`SUFFIX` and extensions for the platform targeted.
-Dependencies between binary targets are expressed using the
-:command:`target_link_libraries` command:
-
-.. code-block:: cmake
-
-  add_library(archive archive.cpp zip.cpp lzma.cpp)
-  add_executable(zipapp zipapp.cpp)
-  target_link_libraries(zipapp archive)
-
-``archive`` is defined as a ``STATIC`` library -- an archive containing objects
-compiled from ``archive.cpp``, ``zip.cpp``, and ``lzma.cpp``.  ``zipapp``
-is defined as an executable formed by compiling and linking ``zipapp.cpp``.
-When linking the ``zipapp`` executable, the ``archive`` static library is
-linked in.
-
-Binary Executables
-------------------
-
-The :command:`add_executable` command defines an executable target:
-
-.. code-block:: cmake
-
-  add_executable(mytool mytool.cpp)
-
-Commands such as :command:`add_custom_command`, which generates rules to be
-run at build time can transparently use an :prop_tgt:`EXECUTABLE <TYPE>`
-target as a ``COMMAND`` executable.  The buildsystem rules will ensure that
-the executable is built before attempting to run the command.
-
-Binary Library Types
---------------------
-
-.. _`Normal Libraries`:
-
-Normal Libraries
-^^^^^^^^^^^^^^^^
-
-By default, the :command:`add_library` command defines a ``STATIC`` library,
-unless a type is specified.  A type may be specified when using the command:
-
-.. code-block:: cmake
-
-  add_library(archive SHARED archive.cpp zip.cpp lzma.cpp)
-
-.. code-block:: cmake
-
-  add_library(archive STATIC archive.cpp zip.cpp lzma.cpp)
-
-The :variable:`BUILD_SHARED_LIBS` variable may be enabled to change the
-behavior of :command:`add_library` to build shared libraries by default.
-
-In the context of the buildsystem definition as a whole, it is largely
-irrelevant whether particular libraries are ``SHARED`` or ``STATIC`` --
-the commands, dependency specifications and other APIs work similarly
-regardless of the library type.  The ``MODULE`` library type is
-dissimilar in that it is generally not linked to -- it is not used in
-the right-hand-side of the :command:`target_link_libraries` command.
-It is a type which is loaded as a plugin using runtime techniques.
-If the library does not export any unmanaged symbols (e.g. Windows
-resource DLL, C++/CLI DLL), it is required that the library not be a
-``SHARED`` library because CMake expects ``SHARED`` libraries to export
-at least one symbol.
-
-.. code-block:: cmake
-
-  add_library(archive MODULE 7z.cpp)
-
-.. _`Apple Frameworks`:
-
-Apple Frameworks
-""""""""""""""""
-
-A ``SHARED`` library may be marked with the :prop_tgt:`FRAMEWORK`
-target property to create an macOS or iOS Framework Bundle.
-The ``MACOSX_FRAMEWORK_IDENTIFIER`` sets ``CFBundleIdentifier`` key
-and it uniquely identifies the bundle.
-
-.. code-block:: cmake
-
-  add_library(MyFramework SHARED MyFramework.cpp)
-  set_target_properties(MyFramework PROPERTIES
-    FRAMEWORK TRUE
-    FRAMEWORK_VERSION A
-    MACOSX_FRAMEWORK_IDENTIFIER org.cmake.MyFramework
-  )
-
-.. _`Object Libraries`:
-
-Object Libraries
-^^^^^^^^^^^^^^^^
-
-The ``OBJECT`` library type defines a non-archival collection of object files
-resulting from compiling the given source files.  The object files collection
-may be used as source inputs to other targets:
-
-.. code-block:: cmake
-
-  add_library(archive OBJECT archive.cpp zip.cpp lzma.cpp)
-
-  add_library(archiveExtras STATIC $<TARGET_OBJECTS:archive> extras.cpp)
-
-  add_executable(test_exe $<TARGET_OBJECTS:archive> test.cpp)
-
-The link (or archiving) step of those other targets will use the object
-files collection in addition to those from their own sources.
-
-Alternatively, object libraries may be linked into other targets:
-
-.. code-block:: cmake
-
-  add_library(archive OBJECT archive.cpp zip.cpp lzma.cpp)
-
-  add_library(archiveExtras STATIC extras.cpp)
-  target_link_libraries(archiveExtras PUBLIC archive)
-
-  add_executable(test_exe test.cpp)
-  target_link_libraries(test_exe archive)
-
-The link (or archiving) step of those other targets will use the object
-files from ``OBJECT`` libraries that are *directly* linked.  Additionally,
-usage requirements of the ``OBJECT`` libraries will be honored when compiling
-sources in those other targets.  Furthermore, those usage requirements
-will propagate transitively to dependents of those other targets.
-
-Object libraries may not be used as the ``TARGET`` in a use of the
-:command:`add_custom_command(TARGET)` command signature.  However,
-the list of objects can be used by :command:`add_custom_command(OUTPUT)`
-or :command:`file(GENERATE)` by using ``$<TARGET_OBJECTS:objlib>``.
-
-Build Specification and Usage Requirements
-==========================================
-
-The :command:`target_include_directories`, :command:`target_compile_definitions`
-and :command:`target_compile_options` commands specify the build specifications
-and the usage requirements of binary targets.  The commands populate the
-:prop_tgt:`INCLUDE_DIRECTORIES`, :prop_tgt:`COMPILE_DEFINITIONS` and
-:prop_tgt:`COMPILE_OPTIONS` target properties respectively, and/or the
-:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES`, :prop_tgt:`INTERFACE_COMPILE_DEFINITIONS`
-and :prop_tgt:`INTERFACE_COMPILE_OPTIONS` target properties.
-
-Each of the commands has a ``PRIVATE``, ``PUBLIC`` and ``INTERFACE`` mode.  The
-``PRIVATE`` mode populates only the non-``INTERFACE_`` variant of the target
-property and the ``INTERFACE`` mode populates only the ``INTERFACE_`` variants.
-The ``PUBLIC`` mode populates both variants of the respective target property.
-Each command may be invoked with multiple uses of each keyword:
-
-.. code-block:: cmake
-
-  target_compile_definitions(archive
-    PRIVATE BUILDING_WITH_LZMA
-    INTERFACE USING_ARCHIVE_LIB
-  )
-
-Note that usage requirements are not designed as a way to make downstreams
-use particular :prop_tgt:`COMPILE_OPTIONS` or
-:prop_tgt:`COMPILE_DEFINITIONS` etc for convenience only.  The contents of
-the properties must be **requirements**, not merely recommendations or
-convenience.
-
-See the :ref:`Creating Relocatable Packages` section of the
-:manual:`cmake-packages(7)` manual for discussion of additional care
-that must be taken when specifying usage requirements while creating
-packages for redistribution.
-
-Target Properties
------------------
-
-The contents of the :prop_tgt:`INCLUDE_DIRECTORIES`,
-:prop_tgt:`COMPILE_DEFINITIONS` and :prop_tgt:`COMPILE_OPTIONS` target
-properties are used appropriately when compiling the source files of a
-binary target.
-
-Entries in the :prop_tgt:`INCLUDE_DIRECTORIES` are added to the compile line
-with ``-I`` or ``-isystem`` prefixes and in the order of appearance in the
-property value.
-
-Entries in the :prop_tgt:`COMPILE_DEFINITIONS` are prefixed with ``-D`` or
-``/D`` and added to the compile line in an unspecified order.  The
-:prop_tgt:`DEFINE_SYMBOL` target property is also added as a compile
-definition as a special convenience case for ``SHARED`` and ``MODULE``
-library targets.
-
-Entries in the :prop_tgt:`COMPILE_OPTIONS` are escaped for the shell and added
-in the order of appearance in the property value.  Several compile options have
-special separate handling, such as :prop_tgt:`POSITION_INDEPENDENT_CODE`.
-
-The contents of the :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES`,
-:prop_tgt:`INTERFACE_COMPILE_DEFINITIONS` and
-:prop_tgt:`INTERFACE_COMPILE_OPTIONS` target properties are
-*Usage Requirements* -- they specify content which consumers
-must use to correctly compile and link with the target they appear on.
-For any binary target, the contents of each ``INTERFACE_`` property on
-each target specified in a :command:`target_link_libraries` command is
-consumed:
-
-.. code-block:: cmake
-
-  set(srcs archive.cpp zip.cpp)
-  if (LZMA_FOUND)
-    list(APPEND srcs lzma.cpp)
-  endif()
-  add_library(archive SHARED ${srcs})
-  if (LZMA_FOUND)
-    # The archive library sources are compiled with -DBUILDING_WITH_LZMA
-    target_compile_definitions(archive PRIVATE BUILDING_WITH_LZMA)
-  endif()
-  target_compile_definitions(archive INTERFACE USING_ARCHIVE_LIB)
-
-  add_executable(consumer)
-  # Link consumer to archive and consume its usage requirements. The consumer
-  # executable sources are compiled with -DUSING_ARCHIVE_LIB.
-  target_link_libraries(consumer archive)
-
-Because it is common to require that the source directory and corresponding
-build directory are added to the :prop_tgt:`INCLUDE_DIRECTORIES`, the
-:variable:`CMAKE_INCLUDE_CURRENT_DIR` variable can be enabled to conveniently
-add the corresponding directories to the :prop_tgt:`INCLUDE_DIRECTORIES` of
-all targets.  The variable :variable:`CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE`
-can be enabled to add the corresponding directories to the
-:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of all targets.  This makes use of
-targets in multiple different directories convenient through use of the
-:command:`target_link_libraries` command.
-
-
-.. _`Target Usage Requirements`:
-
-Transitive Usage Requirements
------------------------------
-
-The usage requirements of a target can transitively propagate to dependents.
-The :command:`target_link_libraries` command has ``PRIVATE``,
-``INTERFACE`` and ``PUBLIC`` keywords to control the propagation.
-
-.. code-block:: cmake
-
-  add_library(archive archive.cpp)
-  target_compile_definitions(archive INTERFACE USING_ARCHIVE_LIB)
-
-  add_library(serialization serialization.cpp)
-  target_compile_definitions(serialization INTERFACE USING_SERIALIZATION_LIB)
-
-  add_library(archiveExtras extras.cpp)
-  target_link_libraries(archiveExtras PUBLIC archive)
-  target_link_libraries(archiveExtras PRIVATE serialization)
-  # archiveExtras is compiled with -DUSING_ARCHIVE_LIB
-  # and -DUSING_SERIALIZATION_LIB
-
-  add_executable(consumer consumer.cpp)
-  # consumer is compiled with -DUSING_ARCHIVE_LIB
-  target_link_libraries(consumer archiveExtras)
-
-Because ``archive`` is a ``PUBLIC`` dependency of ``archiveExtras``, the
-usage requirements of it are propagated to ``consumer`` too.  Because
-``serialization`` is a ``PRIVATE`` dependency of ``archiveExtras``, the usage
-requirements of it are not propagated to ``consumer``.
-
-Generally, a dependency should be specified in a use of
-:command:`target_link_libraries` with the ``PRIVATE`` keyword if it is used by
-only the implementation of a library, and not in the header files.  If a
-dependency is additionally used in the header files of a library (e.g. for
-class inheritance), then it should be specified as a ``PUBLIC`` dependency.
-A dependency which is not used by the implementation of a library, but only by
-its headers should be specified as an ``INTERFACE`` dependency.  The
-:command:`target_link_libraries` command may be invoked with multiple uses of
-each keyword:
-
-.. code-block:: cmake
-
-  target_link_libraries(archiveExtras
-    PUBLIC archive
-    PRIVATE serialization
-  )
-
-Usage requirements are propagated by reading the ``INTERFACE_`` variants
-of target properties from dependencies and appending the values to the
-non-``INTERFACE_`` variants of the operand.  For example, the
-:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of dependencies is read and
-appended to the :prop_tgt:`INCLUDE_DIRECTORIES` of the operand.  In cases
-where order is relevant and maintained, and the order resulting from the
-:command:`target_link_libraries` calls does not allow correct compilation,
-use of an appropriate command to set the property directly may update the
-order.
-
-For example, if the linked libraries for a target must be specified
-in the order ``lib1`` ``lib2`` ``lib3`` , but the include directories must
-be specified in the order ``lib3`` ``lib1`` ``lib2``:
-
-.. code-block:: cmake
-
-  target_link_libraries(myExe lib1 lib2 lib3)
-  target_include_directories(myExe
-    PRIVATE $<TARGET_PROPERTY:lib3,INTERFACE_INCLUDE_DIRECTORIES>)
-
-Note that care must be taken when specifying usage requirements for targets
-which will be exported for installation using the :command:`install(EXPORT)`
-command.  See :ref:`Creating Packages` for more.
-
-.. _`Compatible Interface Properties`:
-
-Compatible Interface Properties
--------------------------------
-
-Some target properties are required to be compatible between a target and
-the interface of each dependency.  For example, the
-:prop_tgt:`POSITION_INDEPENDENT_CODE` target property may specify a
-boolean value of whether a target should be compiled as
-position-independent-code, which has platform-specific consequences.
-A target may also specify the usage requirement
-:prop_tgt:`INTERFACE_POSITION_INDEPENDENT_CODE` to communicate that
-consumers must be compiled as position-independent-code.
-
-.. code-block:: cmake
-
-  add_executable(exe1 exe1.cpp)
-  set_property(TARGET exe1 PROPERTY POSITION_INDEPENDENT_CODE ON)
-
-  add_library(lib1 SHARED lib1.cpp)
-  set_property(TARGET lib1 PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE ON)
-
-  add_executable(exe2 exe2.cpp)
-  target_link_libraries(exe2 lib1)
-
-Here, both ``exe1`` and ``exe2`` will be compiled as position-independent-code.
-``lib1`` will also be compiled as position-independent-code because that is the
-default setting for ``SHARED`` libraries.  If dependencies have conflicting,
-non-compatible requirements :manual:`cmake(1)` issues a diagnostic:
-
-.. code-block:: cmake
-
-  add_library(lib1 SHARED lib1.cpp)
-  set_property(TARGET lib1 PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE ON)
-
-  add_library(lib2 SHARED lib2.cpp)
-  set_property(TARGET lib2 PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE OFF)
-
-  add_executable(exe1 exe1.cpp)
-  target_link_libraries(exe1 lib1)
-  set_property(TARGET exe1 PROPERTY POSITION_INDEPENDENT_CODE OFF)
-
-  add_executable(exe2 exe2.cpp)
-  target_link_libraries(exe2 lib1 lib2)
-
-The ``lib1`` requirement ``INTERFACE_POSITION_INDEPENDENT_CODE`` is not
-"compatible" with the :prop_tgt:`POSITION_INDEPENDENT_CODE` property of
-the ``exe1`` target.  The library requires that consumers are built as
-position-independent-code, while the executable specifies to not built as
-position-independent-code, so a diagnostic is issued.
-
-The ``lib1`` and ``lib2`` requirements are not "compatible".  One of them
-requires that consumers are built as position-independent-code, while
-the other requires that consumers are not built as position-independent-code.
-Because ``exe2`` links to both and they are in conflict, a diagnostic is
-issued.
-
-To be "compatible", the :prop_tgt:`POSITION_INDEPENDENT_CODE` property,
-if set must be either the same, in a boolean sense, as the
-:prop_tgt:`INTERFACE_POSITION_INDEPENDENT_CODE` property of all transitively
-specified dependencies on which that property is set.
-
-This property of "compatible interface requirement" may be extended to other
-properties by specifying the property in the content of the
-:prop_tgt:`COMPATIBLE_INTERFACE_BOOL` target property.  Each specified property
-must be compatible between the consuming target and the corresponding property
-with an ``INTERFACE_`` prefix from each dependency:
-
-.. code-block:: cmake
-
-  add_library(lib1Version2 SHARED lib1_v2.cpp)
-  set_property(TARGET lib1Version2 PROPERTY INTERFACE_CUSTOM_PROP ON)
-  set_property(TARGET lib1Version2 APPEND PROPERTY
-    COMPATIBLE_INTERFACE_BOOL CUSTOM_PROP
-  )
-
-  add_library(lib1Version3 SHARED lib1_v3.cpp)
-  set_property(TARGET lib1Version3 PROPERTY INTERFACE_CUSTOM_PROP OFF)
-
-  add_executable(exe1 exe1.cpp)
-  target_link_libraries(exe1 lib1Version2) # CUSTOM_PROP will be ON
-
-  add_executable(exe2 exe2.cpp)
-  target_link_libraries(exe2 lib1Version2 lib1Version3) # Diagnostic
-
-Non-boolean properties may also participate in "compatible interface"
-computations.  Properties specified in the
-:prop_tgt:`COMPATIBLE_INTERFACE_STRING`
-property must be either unspecified or compare to the same string among
-all transitively specified dependencies. This can be useful to ensure
-that multiple incompatible versions of a library are not linked together
-through transitive requirements of a target:
-
-.. code-block:: cmake
-
-  add_library(lib1Version2 SHARED lib1_v2.cpp)
-  set_property(TARGET lib1Version2 PROPERTY INTERFACE_LIB_VERSION 2)
-  set_property(TARGET lib1Version2 APPEND PROPERTY
-    COMPATIBLE_INTERFACE_STRING LIB_VERSION
-  )
-
-  add_library(lib1Version3 SHARED lib1_v3.cpp)
-  set_property(TARGET lib1Version3 PROPERTY INTERFACE_LIB_VERSION 3)
-
-  add_executable(exe1 exe1.cpp)
-  target_link_libraries(exe1 lib1Version2) # LIB_VERSION will be "2"
-
-  add_executable(exe2 exe2.cpp)
-  target_link_libraries(exe2 lib1Version2 lib1Version3) # Diagnostic
-
-The :prop_tgt:`COMPATIBLE_INTERFACE_NUMBER_MAX` target property specifies
-that content will be evaluated numerically and the maximum number among all
-specified will be calculated:
-
-.. code-block:: cmake
-
-  add_library(lib1Version2 SHARED lib1_v2.cpp)
-  set_property(TARGET lib1Version2 PROPERTY INTERFACE_CONTAINER_SIZE_REQUIRED 200)
-  set_property(TARGET lib1Version2 APPEND PROPERTY
-    COMPATIBLE_INTERFACE_NUMBER_MAX CONTAINER_SIZE_REQUIRED
-  )
-
-  add_library(lib1Version3 SHARED lib1_v3.cpp)
-  set_property(TARGET lib1Version3 PROPERTY INTERFACE_CONTAINER_SIZE_REQUIRED 1000)
-
-  add_executable(exe1 exe1.cpp)
-  # CONTAINER_SIZE_REQUIRED will be "200"
-  target_link_libraries(exe1 lib1Version2)
-
-  add_executable(exe2 exe2.cpp)
-  # CONTAINER_SIZE_REQUIRED will be "1000"
-  target_link_libraries(exe2 lib1Version2 lib1Version3)
-
-Similarly, the :prop_tgt:`COMPATIBLE_INTERFACE_NUMBER_MIN` may be used to
-calculate the numeric minimum value for a property from dependencies.
-
-Each calculated "compatible" property value may be read in the consumer at
-generate-time using generator expressions.
-
-Note that for each dependee, the set of properties specified in each
-compatible interface property must not intersect with the set specified in
-any of the other properties.
-
-Property Origin Debugging
--------------------------
-
-Because build specifications can be determined by dependencies, the lack of
-locality of code which creates a target and code which is responsible for
-setting build specifications may make the code more difficult to reason about.
-:manual:`cmake(1)` provides a debugging facility to print the origin of the
-contents of properties which may be determined by dependencies.  The properties
-which can be debugged are listed in the
-:variable:`CMAKE_DEBUG_TARGET_PROPERTIES` variable documentation:
-
-.. code-block:: cmake
-
-  set(CMAKE_DEBUG_TARGET_PROPERTIES
-    INCLUDE_DIRECTORIES
-    COMPILE_DEFINITIONS
-    POSITION_INDEPENDENT_CODE
-    CONTAINER_SIZE_REQUIRED
-    LIB_VERSION
-  )
-  add_executable(exe1 exe1.cpp)
-
-In the case of properties listed in :prop_tgt:`COMPATIBLE_INTERFACE_BOOL` or
-:prop_tgt:`COMPATIBLE_INTERFACE_STRING`, the debug output shows which target
-was responsible for setting the property, and which other dependencies also
-defined the property.  In the case of
-:prop_tgt:`COMPATIBLE_INTERFACE_NUMBER_MAX` and
-:prop_tgt:`COMPATIBLE_INTERFACE_NUMBER_MIN`, the debug output shows the
-value of the property from each dependency, and whether the value determines
-the new extreme.
-
-Build Specification with Generator Expressions
-----------------------------------------------
-
-Build specifications may use
-:manual:`generator expressions <cmake-generator-expressions(7)>` containing
-content which may be conditional or known only at generate-time.  For example,
-the calculated "compatible" value of a property may be read with the
-``TARGET_PROPERTY`` expression:
-
-.. code-block:: cmake
-
-  add_library(lib1Version2 SHARED lib1_v2.cpp)
-  set_property(TARGET lib1Version2 PROPERTY
-    INTERFACE_CONTAINER_SIZE_REQUIRED 200)
-  set_property(TARGET lib1Version2 APPEND PROPERTY
-    COMPATIBLE_INTERFACE_NUMBER_MAX CONTAINER_SIZE_REQUIRED
-  )
-
-  add_executable(exe1 exe1.cpp)
-  target_link_libraries(exe1 lib1Version2)
-  target_compile_definitions(exe1 PRIVATE
-      CONTAINER_SIZE=$<TARGET_PROPERTY:CONTAINER_SIZE_REQUIRED>
-  )
-
-In this case, the ``exe1`` source files will be compiled with
-``-DCONTAINER_SIZE=200``.
-
-Configuration determined build specifications may be conveniently set using
-the ``CONFIG`` generator expression.
-
-.. code-block:: cmake
-
-  target_compile_definitions(exe1 PRIVATE
-      $<$<CONFIG:Debug>:DEBUG_BUILD>
-  )
-
-The ``CONFIG`` parameter is compared case-insensitively with the configuration
-being built.  In the presence of :prop_tgt:`IMPORTED` targets, the content of
-:prop_tgt:`MAP_IMPORTED_CONFIG_DEBUG <MAP_IMPORTED_CONFIG_<CONFIG>>` is also
-accounted for by this expression.
-
-Some buildsystems generated by :manual:`cmake(1)` have a predetermined
-build-configuration set in the :variable:`CMAKE_BUILD_TYPE` variable.  The
-buildsystem for the IDEs such as Visual Studio and Xcode are generated
-independent of the build-configuration, and the actual build configuration
-is not known until build-time.  Therefore, code such as
-
-.. code-block:: cmake
-
-  string(TOLOWER ${CMAKE_BUILD_TYPE} _type)
-  if (_type STREQUAL debug)
-    target_compile_definitions(exe1 PRIVATE DEBUG_BUILD)
-  endif()
-
-may appear to work for :ref:`Makefile Generators` and :generator:`Ninja`
-generators, but is not portable to IDE generators.  Additionally,
-the :prop_tgt:`IMPORTED` configuration-mappings are not accounted for
-with code like this, so it should be avoided.
-
-The unary ``TARGET_PROPERTY`` generator expression and the ``TARGET_POLICY``
-generator expression are evaluated with the consuming target context.  This
-means that a usage requirement specification may be evaluated differently based
-on the consumer:
-
-.. code-block:: cmake
-
-  add_library(lib1 lib1.cpp)
-  target_compile_definitions(lib1 INTERFACE
-    $<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:LIB1_WITH_EXE>
-    $<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:LIB1_WITH_SHARED_LIB>
-    $<$<TARGET_POLICY:CMP0041>:CONSUMER_CMP0041_NEW>
-  )
-
-  add_executable(exe1 exe1.cpp)
-  target_link_libraries(exe1 lib1)
-
-  cmake_policy(SET CMP0041 NEW)
-
-  add_library(shared_lib shared_lib.cpp)
-  target_link_libraries(shared_lib lib1)
-
-The ``exe1`` executable will be compiled with ``-DLIB1_WITH_EXE``, while the
-``shared_lib`` shared library will be compiled with ``-DLIB1_WITH_SHARED_LIB``
-and ``-DCONSUMER_CMP0041_NEW``, because policy :policy:`CMP0041` is
-``NEW`` at the point where the ``shared_lib`` target is created.
-
-The ``BUILD_INTERFACE`` expression wraps requirements which are only used when
-consumed from a target in the same buildsystem, or when consumed from a target
-exported to the build directory using the :command:`export` command.  The
-``INSTALL_INTERFACE`` expression wraps requirements which are only used when
-consumed from a target which has been installed and exported with the
-:command:`install(EXPORT)` command:
-
-.. code-block:: cmake
-
-  add_library(ClimbingStats climbingstats.cpp)
-  target_compile_definitions(ClimbingStats INTERFACE
-    $<BUILD_INTERFACE:ClimbingStats_FROM_BUILD_LOCATION>
-    $<INSTALL_INTERFACE:ClimbingStats_FROM_INSTALLED_LOCATION>
-  )
-  install(TARGETS ClimbingStats EXPORT libExport ${InstallArgs})
-  install(EXPORT libExport NAMESPACE Upstream::
-          DESTINATION lib/cmake/ClimbingStats)
-  export(EXPORT libExport NAMESPACE Upstream::)
-
-  add_executable(exe1 exe1.cpp)
-  target_link_libraries(exe1 ClimbingStats)
-
-In this case, the ``exe1`` executable will be compiled with
-``-DClimbingStats_FROM_BUILD_LOCATION``.  The exporting commands generate
-:prop_tgt:`IMPORTED` targets with either the ``INSTALL_INTERFACE`` or the
-``BUILD_INTERFACE`` omitted, and the ``*_INTERFACE`` marker stripped away.
-A separate project consuming the ``ClimbingStats`` package would contain:
-
-.. code-block:: cmake
-
-  find_package(ClimbingStats REQUIRED)
-
-  add_executable(Downstream main.cpp)
-  target_link_libraries(Downstream Upstream::ClimbingStats)
-
-Depending on whether the ``ClimbingStats`` package was used from the build
-location or the install location, the ``Downstream`` target would be compiled
-with either ``-DClimbingStats_FROM_BUILD_LOCATION`` or
-``-DClimbingStats_FROM_INSTALL_LOCATION``.  For more about packages and
-exporting see the :manual:`cmake-packages(7)` manual.
-
-.. _`Include Directories and Usage Requirements`:
-
-Include Directories and Usage Requirements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Include directories require some special consideration when specified as usage
-requirements and when used with generator expressions.  The
-:command:`target_include_directories` command accepts both relative and
-absolute include directories:
-
-.. code-block:: cmake
-
-  add_library(lib1 lib1.cpp)
-  target_include_directories(lib1 PRIVATE
-    /absolute/path
-    relative/path
-  )
-
-Relative paths are interpreted relative to the source directory where the
-command appears.  Relative paths are not allowed in the
-:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of :prop_tgt:`IMPORTED` targets.
-
-In cases where a non-trivial generator expression is used, the
-``INSTALL_PREFIX`` expression may be used within the argument of an
-``INSTALL_INTERFACE`` expression.  It is a replacement marker which
-expands to the installation prefix when imported by a consuming project.
-
-Include directories usage requirements commonly differ between the build-tree
-and the install-tree.  The ``BUILD_INTERFACE`` and ``INSTALL_INTERFACE``
-generator expressions can be used to describe separate usage requirements
-based on the usage location.  Relative paths are allowed within the
-``INSTALL_INTERFACE`` expression and are interpreted relative to the
-installation prefix.  For example:
-
-.. code-block:: cmake
-
-  add_library(ClimbingStats climbingstats.cpp)
-  target_include_directories(ClimbingStats INTERFACE
-    $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/generated>
-    $<INSTALL_INTERFACE:/absolute/path>
-    $<INSTALL_INTERFACE:relative/path>
-    $<INSTALL_INTERFACE:$<INSTALL_PREFIX>/$<CONFIG>/generated>
-  )
-
-Two convenience APIs are provided relating to include directories usage
-requirements.  The :variable:`CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE` variable
-may be enabled, with an equivalent effect to:
-
-.. code-block:: cmake
-
-  set_property(TARGET tgt APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES
-    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR}>
-  )
-
-for each target affected.  The convenience for installed targets is
-an ``INCLUDES DESTINATION`` component with the :command:`install(TARGETS)`
-command:
-
-.. code-block:: cmake
-
-  install(TARGETS foo bar bat EXPORT tgts ${dest_args}
-    INCLUDES DESTINATION include
-  )
-  install(EXPORT tgts ${other_args})
-  install(FILES ${headers} DESTINATION include)
-
-This is equivalent to appending ``${CMAKE_INSTALL_PREFIX}/include`` to the
-:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of each of the installed
-:prop_tgt:`IMPORTED` targets when generated by :command:`install(EXPORT)`.
-
-When the :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of an
-:ref:`imported target <Imported targets>` is consumed, the entries in the
-property are treated as ``SYSTEM`` include directories, as if they were
-listed in the :prop_tgt:`INTERFACE_SYSTEM_INCLUDE_DIRECTORIES` of the
-dependency. This can result in omission of compiler warnings for headers
-found in those directories.  This behavior for :ref:`imported targets` may
-be controlled by setting the :prop_tgt:`NO_SYSTEM_FROM_IMPORTED` target
-property on the *consumers* of imported targets.
-
-If a binary target is linked transitively to a macOS :prop_tgt:`FRAMEWORK`, the
-``Headers`` directory of the framework is also treated as a usage requirement.
-This has the same effect as passing the framework directory as an include
-directory.
-
-Link Libraries and Generator Expressions
-----------------------------------------
-
-Like build specifications, :prop_tgt:`link libraries <LINK_LIBRARIES>` may be
-specified with generator expression conditions.  However, as consumption of
-usage requirements is based on collection from linked dependencies, there is
-an additional limitation that the link dependencies must form a "directed
-acyclic graph".  That is, if linking to a target is dependent on the value of
-a target property, that target property may not be dependent on the linked
-dependencies:
-
-.. code-block:: cmake
-
-  add_library(lib1 lib1.cpp)
-  add_library(lib2 lib2.cpp)
-  target_link_libraries(lib1 PUBLIC
-    $<$<TARGET_PROPERTY:POSITION_INDEPENDENT_CODE>:lib2>
-  )
-  add_library(lib3 lib3.cpp)
-  set_property(TARGET lib3 PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE ON)
-
-  add_executable(exe1 exe1.cpp)
-  target_link_libraries(exe1 lib1 lib3)
-
-As the value of the :prop_tgt:`POSITION_INDEPENDENT_CODE` property of
-the ``exe1`` target is dependent on the linked libraries (``lib3``), and the
-edge of linking ``exe1`` is determined by the same
-:prop_tgt:`POSITION_INDEPENDENT_CODE` property, the dependency graph above
-contains a cycle.  :manual:`cmake(1)` issues a diagnostic in this case.
-
-.. _`Output Artifacts`:
-
-Output Artifacts
-----------------
-
-The buildsystem targets created by the :command:`add_library` and
-:command:`add_executable` commands create rules to create binary outputs.
-The exact output location of the binaries can only be determined at
-generate-time because it can depend on the build-configuration and the
-link-language of linked dependencies etc.  ``TARGET_FILE``,
-``TARGET_LINKER_FILE`` and related expressions can be used to access the
-name and location of generated binaries.  These expressions do not work
-for ``OBJECT`` libraries however, as there is no single file generated
-by such libraries which is relevant to the expressions.
-
-There are three kinds of output artifacts that may be build by targets
-as detailed in the following sections.  Their classification differs
-between DLL platforms and non-DLL platforms.  All Windows-based
-systems including Cygwin are DLL platforms.
-
-.. _`Runtime Output Artifacts`:
-
-Runtime Output Artifacts
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-A *runtime* output artifact of a buildsystem target may be:
-
-* The executable file (e.g. ``.exe``) of an executable target
-  created by the :command:`add_executable` command.
-
-* On DLL platforms: the executable file (e.g. ``.dll``) of a shared
-  library target created by the :command:`add_library` command
-  with the ``SHARED`` option.
-
-The :prop_tgt:`RUNTIME_OUTPUT_DIRECTORY` and :prop_tgt:`RUNTIME_OUTPUT_NAME`
-target properties may be used to control runtime output artifact locations
-and names in the build tree.
-
-.. _`Library Output Artifacts`:
-
-Library Output Artifacts
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-A *library* output artifact of a buildsystem target may be:
-
-* The loadable module file (e.g. ``.dll`` or ``.so``) of a module
-  library target created by the :command:`add_library` command
-  with the ``MODULE`` option.
-
-* On non-DLL platforms: the shared library file (e.g. ``.so`` or ``.dylib``)
-  of a shared library target created by the :command:`add_library`
-  command with the ``SHARED`` option.
-
-The :prop_tgt:`LIBRARY_OUTPUT_DIRECTORY` and :prop_tgt:`LIBRARY_OUTPUT_NAME`
-target properties may be used to control library output artifact locations
-and names in the build tree.
-
-.. _`Archive Output Artifacts`:
-
-Archive Output Artifacts
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-An *archive* output artifact of a buildsystem target may be:
-
-* The static library file (e.g. ``.lib`` or ``.a``) of a static
-  library target created by the :command:`add_library` command
-  with the ``STATIC`` option.
-
-* On DLL platforms: the import library file (e.g. ``.lib``) of a shared
-  library target created by the :command:`add_library` command
-  with the ``SHARED`` option.  This file is only guaranteed to exist if
-  the library exports at least one unmanaged symbol.
-
-* On DLL platforms: the import library file (e.g. ``.lib``) of an
-  executable target created by the :command:`add_executable` command
-  when its :prop_tgt:`ENABLE_EXPORTS` target property is set.
-
-* On AIX: the linker import file (e.g. ``.imp``) of an executable target
-  created by the :command:`add_executable` command when its
-  :prop_tgt:`ENABLE_EXPORTS` target property is set.
-
-The :prop_tgt:`ARCHIVE_OUTPUT_DIRECTORY` and :prop_tgt:`ARCHIVE_OUTPUT_NAME`
-target properties may be used to control archive output artifact locations
-and names in the build tree.
-
-Directory-Scoped Commands
--------------------------
-
-The :command:`target_include_directories`,
-:command:`target_compile_definitions` and
-:command:`target_compile_options` commands have an effect on only one
-target at a time.  The commands :command:`add_compile_definitions`,
-:command:`add_compile_options` and :command:`include_directories` have
-a similar function, but operate at directory scope instead of target
-scope for convenience.
-
-Pseudo Targets
-==============
-
-Some target types do not represent outputs of the buildsystem, but only inputs
-such as external dependencies, aliases or other non-build artifacts.  Pseudo
-targets are not represented in the generated buildsystem.
-
-.. _`Imported Targets`:
-
-Imported Targets
-----------------
-
-An :prop_tgt:`IMPORTED` target represents a pre-existing dependency.  Usually
-such targets are defined by an upstream package and should be treated as
-immutable. After declaring an :prop_tgt:`IMPORTED` target one can adjust its
-target properties by using the customary commands such as
-:command:`target_compile_definitions`, :command:`target_include_directories`,
-:command:`target_compile_options` or :command:`target_link_libraries` just like
-with any other regular target.
-
-:prop_tgt:`IMPORTED` targets may have the same usage requirement properties
-populated as binary targets, such as
-:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES`,
-:prop_tgt:`INTERFACE_COMPILE_DEFINITIONS`,
-:prop_tgt:`INTERFACE_COMPILE_OPTIONS`,
-:prop_tgt:`INTERFACE_LINK_LIBRARIES`, and
-:prop_tgt:`INTERFACE_POSITION_INDEPENDENT_CODE`.
-
-The :prop_tgt:`LOCATION` may also be read from an IMPORTED target, though there
-is rarely reason to do so.  Commands such as :command:`add_custom_command` can
-transparently use an :prop_tgt:`IMPORTED` :prop_tgt:`EXECUTABLE <TYPE>` target
-as a ``COMMAND`` executable.
-
-The scope of the definition of an :prop_tgt:`IMPORTED` target is the directory
-where it was defined.  It may be accessed and used from subdirectories, but
-not from parent directories or sibling directories.  The scope is similar to
-the scope of a cmake variable.
-
-It is also possible to define a ``GLOBAL`` :prop_tgt:`IMPORTED` target which is
-accessible globally in the buildsystem.
-
-See the :manual:`cmake-packages(7)` manual for more on creating packages
-with :prop_tgt:`IMPORTED` targets.
-
-.. _`Alias Targets`:
-
-Alias Targets
--------------
-
-An ``ALIAS`` target is a name which may be used interchangeably with
-a binary target name in read-only contexts.  A primary use-case for ``ALIAS``
-targets is for example or unit test executables accompanying a library, which
-may be part of the same buildsystem or built separately based on user
-configuration.
-
-.. code-block:: cmake
-
-  add_library(lib1 lib1.cpp)
-  install(TARGETS lib1 EXPORT lib1Export ${dest_args})
-  install(EXPORT lib1Export NAMESPACE Upstream:: ${other_args})
-
-  add_library(Upstream::lib1 ALIAS lib1)
-
-In another directory, we can link unconditionally to the ``Upstream::lib1``
-target, which may be an :prop_tgt:`IMPORTED` target from a package, or an
-``ALIAS`` target if built as part of the same buildsystem.
-
-.. code-block:: cmake
-
-  if (NOT TARGET Upstream::lib1)
-    find_package(lib1 REQUIRED)
-  endif()
-  add_executable(exe1 exe1.cpp)
-  target_link_libraries(exe1 Upstream::lib1)
-
-``ALIAS`` targets are not mutable, installable or exportable.  They are
-entirely local to the buildsystem description.  A name can be tested for
-whether it is an ``ALIAS`` name by reading the :prop_tgt:`ALIASED_TARGET`
-property from it:
-
-.. code-block:: cmake
-
-  get_target_property(_aliased Upstream::lib1 ALIASED_TARGET)
-  if(_aliased)
-    message(STATUS "The name Upstream::lib1 is an ALIAS for ${_aliased}.")
-  endif()
-
-.. _`Interface Libraries`:
-
-Interface Libraries
--------------------
-
-An ``INTERFACE`` target has no :prop_tgt:`LOCATION` and is mutable, but is
-otherwise similar to an :prop_tgt:`IMPORTED` target.
-
-It may specify usage requirements such as
-:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES`,
-:prop_tgt:`INTERFACE_COMPILE_DEFINITIONS`,
-:prop_tgt:`INTERFACE_COMPILE_OPTIONS`,
-:prop_tgt:`INTERFACE_LINK_LIBRARIES`,
-:prop_tgt:`INTERFACE_SOURCES`,
-and :prop_tgt:`INTERFACE_POSITION_INDEPENDENT_CODE`.
-Only the ``INTERFACE`` modes of the :command:`target_include_directories`,
-:command:`target_compile_definitions`, :command:`target_compile_options`,
-:command:`target_sources`, and :command:`target_link_libraries` commands
-may be used with ``INTERFACE`` libraries.
-
-A primary use-case for ``INTERFACE`` libraries is header-only libraries.
-
-.. code-block:: cmake
-
-  add_library(Eigen INTERFACE)
-  target_include_directories(Eigen INTERFACE
-    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
-    $<INSTALL_INTERFACE:include/Eigen>
-  )
-
-  add_executable(exe1 exe1.cpp)
-  target_link_libraries(exe1 Eigen)
-
-Here, the usage requirements from the ``Eigen`` target are consumed and used
-when compiling, but it has no effect on linking.
-
-Another use-case is to employ an entirely target-focussed design for usage
-requirements:
-
-.. code-block:: cmake
-
-  add_library(pic_on INTERFACE)
-  set_property(TARGET pic_on PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE ON)
-  add_library(pic_off INTERFACE)
-  set_property(TARGET pic_off PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE OFF)
-
-  add_library(enable_rtti INTERFACE)
-  target_compile_options(enable_rtti INTERFACE
-    $<$<OR:$<COMPILER_ID:GNU>,$<COMPILER_ID:Clang>>:-rtti>
-  )
-
-  add_executable(exe1 exe1.cpp)
-  target_link_libraries(exe1 pic_on enable_rtti)
-
-This way, the build specification of ``exe1`` is expressed entirely as linked
-targets, and the complexity of compiler-specific flags is encapsulated in an
-``INTERFACE`` library target.
-
-The properties permitted to be set on or read from an ``INTERFACE`` library
-are:
-
-* Properties matching ``INTERFACE_*``
-* Built-in properties matching ``COMPATIBLE_INTERFACE_*``
-* ``EXPORT_NAME``
-* ``EXPORT_PROPERTIES``
-* ``IMPORTED``
-* ``MANUALLY_ADDED_DEPENDENCIES``
-* ``NAME``
-* Properties matching ``IMPORTED_LIBNAME_*``
-* Properties matching ``MAP_IMPORTED_CONFIG_*``
-
-``INTERFACE`` libraries may be installed and exported.  Any content they refer
-to must be installed separately:
-
-.. code-block:: cmake
-
-  add_library(Eigen INTERFACE)
-  target_include_directories(Eigen INTERFACE
-    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
-    $<INSTALL_INTERFACE:include/Eigen>
-  )
-
-  install(TARGETS Eigen EXPORT eigenExport)
-  install(EXPORT eigenExport NAMESPACE Upstream::
-    DESTINATION lib/cmake/Eigen
-  )
-  install(FILES
-      ${CMAKE_CURRENT_SOURCE_DIR}/src/eigen.h
-      ${CMAKE_CURRENT_SOURCE_DIR}/src/vector.h
-      ${CMAKE_CURRENT_SOURCE_DIR}/src/matrix.h
-    DESTINATION include/Eigen
-  )
diff --git a/share/cmake-3.18/Help/manual/cmake-commands.7.rst b/share/cmake-3.18/Help/manual/cmake-commands.7.rst
deleted file mode 100644
index 0aa4f75..0000000
--- a/share/cmake-3.18/Help/manual/cmake-commands.7.rst
+++ /dev/null
@@ -1,173 +0,0 @@
-.. cmake-manual-description: CMake Language Command Reference
-
-cmake-commands(7)
-*****************
-
-.. only:: html
-
-   .. contents::
-
-Scripting Commands
-==================
-
-These commands are always available.
-
-.. toctree::
-   :maxdepth: 1
-
-   /command/break
-   /command/cmake_host_system_information
-   /command/cmake_language
-   /command/cmake_minimum_required
-   /command/cmake_parse_arguments
-   /command/cmake_policy
-   /command/configure_file
-   /command/continue
-   /command/else
-   /command/elseif
-   /command/endforeach
-   /command/endfunction
-   /command/endif
-   /command/endmacro
-   /command/endwhile
-   /command/execute_process
-   /command/file
-   /command/find_file
-   /command/find_library
-   /command/find_package
-   /command/find_path
-   /command/find_program
-   /command/foreach
-   /command/function
-   /command/get_cmake_property
-   /command/get_directory_property
-   /command/get_filename_component
-   /command/get_property
-   /command/if
-   /command/include
-   /command/include_guard
-   /command/list
-   /command/macro
-   /command/mark_as_advanced
-   /command/math
-   /command/message
-   /command/option
-   /command/return
-   /command/separate_arguments
-   /command/set
-   /command/set_directory_properties
-   /command/set_property
-   /command/site_name
-   /command/string
-   /command/unset
-   /command/variable_watch
-   /command/while
-
-Project Commands
-================
-
-These commands are available only in CMake projects.
-
-.. toctree::
-   :maxdepth: 1
-
-   /command/add_compile_definitions
-   /command/add_compile_options
-   /command/add_custom_command
-   /command/add_custom_target
-   /command/add_definitions
-   /command/add_dependencies
-   /command/add_executable
-   /command/add_library
-   /command/add_link_options
-   /command/add_subdirectory
-   /command/add_test
-   /command/aux_source_directory
-   /command/build_command
-   /command/create_test_sourcelist
-   /command/define_property
-   /command/enable_language
-   /command/enable_testing
-   /command/export
-   /command/fltk_wrap_ui
-   /command/get_source_file_property
-   /command/get_target_property
-   /command/get_test_property
-   /command/include_directories
-   /command/include_external_msproject
-   /command/include_regular_expression
-   /command/install
-   /command/link_directories
-   /command/link_libraries
-   /command/load_cache
-   /command/project
-   /command/remove_definitions
-   /command/set_source_files_properties
-   /command/set_target_properties
-   /command/set_tests_properties
-   /command/source_group
-   /command/target_compile_definitions
-   /command/target_compile_features
-   /command/target_compile_options
-   /command/target_include_directories
-   /command/target_link_directories
-   /command/target_link_libraries
-   /command/target_link_options
-   /command/target_precompile_headers
-   /command/target_sources
-   /command/try_compile
-   /command/try_run
-
-.. _`CTest Commands`:
-
-CTest Commands
-==============
-
-These commands are available only in CTest scripts.
-
-.. toctree::
-   :maxdepth: 1
-
-   /command/ctest_build
-   /command/ctest_configure
-   /command/ctest_coverage
-   /command/ctest_empty_binary_directory
-   /command/ctest_memcheck
-   /command/ctest_read_custom_files
-   /command/ctest_run_script
-   /command/ctest_sleep
-   /command/ctest_start
-   /command/ctest_submit
-   /command/ctest_test
-   /command/ctest_update
-   /command/ctest_upload
-
-Deprecated Commands
-===================
-
-These commands are deprecated and are only made available to maintain
-backward compatibility.  The documentation of each command states the
-CMake version in which it was deprecated.  Do not use these commands
-in new code.
-
-.. toctree::
-   :maxdepth: 1
-
-   /command/build_name
-   /command/exec_program
-   /command/export_library_dependencies
-   /command/install_files
-   /command/install_programs
-   /command/install_targets
-   /command/load_command
-   /command/make_directory
-   /command/output_required_files
-   /command/qt_wrap_cpp
-   /command/qt_wrap_ui
-   /command/remove
-   /command/subdir_depends
-   /command/subdirs
-   /command/use_mangled_mesa
-   /command/utility_source
-   /command/variable_requires
-   /command/write_file
diff --git a/share/cmake-3.18/Help/manual/cmake-compile-features.7.rst b/share/cmake-3.18/Help/manual/cmake-compile-features.7.rst
deleted file mode 100644
index 05dc038..0000000
--- a/share/cmake-3.18/Help/manual/cmake-compile-features.7.rst
+++ /dev/null
@@ -1,376 +0,0 @@
-.. cmake-manual-description: CMake Compile Features Reference
-
-cmake-compile-features(7)
-*************************
-
-.. only:: html
-
-   .. contents::
-
-Introduction
-============
-
-Project source code may depend on, or be conditional on, the availability
-of certain features of the compiler.  There are three use-cases which arise:
-`Compile Feature Requirements`_, `Optional Compile Features`_
-and `Conditional Compilation Options`_.
-
-While features are typically specified in programming language standards,
-CMake provides a primary user interface based on granular handling of
-the features, not the language standard that introduced the feature.
-
-The :prop_gbl:`CMAKE_C_KNOWN_FEATURES`, :prop_gbl:`CMAKE_CUDA_KNOWN_FEATURES`,
-and :prop_gbl:`CMAKE_CXX_KNOWN_FEATURES` global properties contain all the
-features known to CMake, regardless of compiler support for the feature.
-The :variable:`CMAKE_C_COMPILE_FEATURES`, :variable:`CMAKE_CUDA_COMPILE_FEATURES`
-, and :variable:`CMAKE_CXX_COMPILE_FEATURES` variables contain all features
-CMake knows are known to the compiler, regardless of language standard
-or compile flags needed to use them.
-
-Features known to CMake are named mostly following the same convention
-as the Clang feature test macros.  There are some exceptions, such as
-CMake using ``cxx_final`` and ``cxx_override`` instead of the single
-``cxx_override_control`` used by Clang.
-
-Note that there are no separate compile features properties or variables for
-the ``OBJC`` or ``OBJCXX`` languages.  These are based off ``C`` or ``C++``
-respectively, so the properties and variables for their corresponding base
-language should be used instead.
-
-Compile Feature Requirements
-============================
-
-Compile feature requirements may be specified with the
-:command:`target_compile_features` command.  For example, if a target must
-be compiled with compiler support for the
-:prop_gbl:`cxx_constexpr <CMAKE_CXX_KNOWN_FEATURES>` feature:
-
-.. code-block:: cmake
-
-  add_library(mylib requires_constexpr.cpp)
-  target_compile_features(mylib PRIVATE cxx_constexpr)
-
-In processing the requirement for the ``cxx_constexpr`` feature,
-:manual:`cmake(1)` will ensure that the in-use C++ compiler is capable
-of the feature, and will add any necessary flags such as ``-std=gnu++11``
-to the compile lines of C++ files in the ``mylib`` target.  A
-``FATAL_ERROR`` is issued if the compiler is not capable of the
-feature.
-
-The exact compile flags and language standard are deliberately not part
-of the user interface for this use-case.  CMake will compute the
-appropriate compile flags to use by considering the features specified
-for each target.
-
-Such compile flags are added even if the compiler supports the
-particular feature without the flag. For example, the GNU compiler
-supports variadic templates (with a warning) even if ``-std=gnu++98`` is
-used.  CMake adds the ``-std=gnu++11`` flag if ``cxx_variadic_templates``
-is specified as a requirement.
-
-In the above example, ``mylib`` requires ``cxx_constexpr`` when it
-is built itself, but consumers of ``mylib`` are not required to use a
-compiler which supports ``cxx_constexpr``.  If the interface of
-``mylib`` does require the ``cxx_constexpr`` feature (or any other
-known feature), that may be specified with the ``PUBLIC`` or
-``INTERFACE`` signatures of :command:`target_compile_features`:
-
-.. code-block:: cmake
-
-  add_library(mylib requires_constexpr.cpp)
-  # cxx_constexpr is a usage-requirement
-  target_compile_features(mylib PUBLIC cxx_constexpr)
-
-  # main.cpp will be compiled with -std=gnu++11 on GNU for cxx_constexpr.
-  add_executable(myexe main.cpp)
-  target_link_libraries(myexe mylib)
-
-Feature requirements are evaluated transitively by consuming the link
-implementation.  See :manual:`cmake-buildsystem(7)` for more on
-transitive behavior of build properties and usage requirements.
-
-Requiring Language Standards
-----------------------------
-
-In projects that use a large number of commonly available features from
-a particular language standard (e.g. C++ 11) one may specify a
-meta-feature (e.g. ``cxx_std_11``) that requires use of a compiler mode
-that is at minimum aware of that standard, but could be greater.
-This is simpler than specifying all the features individually, but does
-not guarantee the existence of any particular feature.
-Diagnosis of use of unsupported features will be delayed until compile time.
-
-For example, if C++ 11 features are used extensively in a project's
-header files, then clients must use a compiler mode that is no less
-than C++ 11.  This can be requested with the code:
-
-.. code-block:: cmake
-
-  target_compile_features(mylib PUBLIC cxx_std_11)
-
-In this example, CMake will ensure the compiler is invoked in a mode
-of at-least C++ 11 (or C++ 14, C++ 17, ...), adding flags such as
-``-std=gnu++11`` if necessary.  This applies to sources within ``mylib``
-as well as any dependents (that may include headers from ``mylib``).
-
-Availability of Compiler Extensions
------------------------------------
-
-Because the :prop_tgt:`CXX_EXTENSIONS` target property is ``ON`` by default,
-CMake uses extended variants of language dialects by default, such as
-``-std=gnu++11`` instead of ``-std=c++11``.  That target property may be
-set to ``OFF`` to use the non-extended variant of the dialect flag.  Note
-that because most compilers enable extensions by default, this could
-expose cross-platform bugs in user code or in the headers of third-party
-dependencies.
-
-Optional Compile Features
-=========================
-
-Compile features may be preferred if available, without creating a hard
-requirement.  For example, a library may provides alternative
-implementations depending on whether the ``cxx_variadic_templates``
-feature is available:
-
-.. code-block:: c++
-
-  #if Foo_COMPILER_CXX_VARIADIC_TEMPLATES
-  template<int I, int... Is>
-  struct Interface;
-
-  template<int I>
-  struct Interface<I>
-  {
-    static int accumulate()
-    {
-      return I;
-    }
-  };
-
-  template<int I, int... Is>
-  struct Interface
-  {
-    static int accumulate()
-    {
-      return I + Interface<Is...>::accumulate();
-    }
-  };
-  #else
-  template<int I1, int I2 = 0, int I3 = 0, int I4 = 0>
-  struct Interface
-  {
-    static int accumulate() { return I1 + I2 + I3 + I4; }
-  };
-  #endif
-
-Such an interface depends on using the correct preprocessor defines for the
-compiler features.  CMake can generate a header file containing such
-defines using the :module:`WriteCompilerDetectionHeader` module.  The
-module contains the ``write_compiler_detection_header`` function which
-accepts parameters to control the content of the generated header file:
-
-.. code-block:: cmake
-
-  write_compiler_detection_header(
-    FILE "${CMAKE_CURRENT_BINARY_DIR}/foo_compiler_detection.h"
-    PREFIX Foo
-    COMPILERS GNU
-    FEATURES
-      cxx_variadic_templates
-  )
-
-Such a header file may be used internally in the source code of a project,
-and it may be installed and used in the interface of library code.
-
-For each feature listed in ``FEATURES``, a preprocessor definition
-is created in the header file, and defined to either ``1`` or ``0``.
-
-Additionally, some features call for additional defines, such as the
-``cxx_final`` and ``cxx_override`` features. Rather than being used in
-``#ifdef`` code, the ``final`` keyword is abstracted by a symbol
-which is defined to either ``final``, a compiler-specific equivalent, or
-to empty.  That way, C++ code can be written to unconditionally use the
-symbol, and compiler support determines what it is expanded to:
-
-.. code-block:: c++
-
-  struct Interface {
-    virtual void Execute() = 0;
-  };
-
-  struct Concrete Foo_FINAL {
-    void Execute() Foo_OVERRIDE;
-  };
-
-In this case, ``Foo_FINAL`` will expand to ``final`` if the
-compiler supports the keyword, or to empty otherwise.
-
-In this use-case, the CMake code will wish to enable a particular language
-standard if available from the compiler. The :prop_tgt:`CXX_STANDARD`
-target property variable may be set to the desired language standard
-for a particular target, and the :variable:`CMAKE_CXX_STANDARD` may be
-set to influence all following targets:
-
-.. code-block:: cmake
-
-  write_compiler_detection_header(
-    FILE "${CMAKE_CURRENT_BINARY_DIR}/foo_compiler_detection.h"
-    PREFIX Foo
-    COMPILERS GNU
-    FEATURES
-      cxx_final cxx_override
-  )
-
-  # Includes foo_compiler_detection.h and uses the Foo_FINAL symbol
-  # which will expand to 'final' if the compiler supports the requested
-  # CXX_STANDARD.
-  add_library(foo foo.cpp)
-  set_property(TARGET foo PROPERTY CXX_STANDARD 11)
-
-  # Includes foo_compiler_detection.h and uses the Foo_FINAL symbol
-  # which will expand to 'final' if the compiler supports the feature,
-  # even though CXX_STANDARD is not set explicitly.  The requirement of
-  # cxx_constexpr causes CMake to set CXX_STANDARD internally, which
-  # affects the compile flags.
-  add_library(foo_impl foo_impl.cpp)
-  target_compile_features(foo_impl PRIVATE cxx_constexpr)
-
-The ``write_compiler_detection_header`` function also creates compatibility
-code for other features which have standard equivalents.  For example, the
-``cxx_static_assert`` feature is emulated with a template and abstracted
-via the ``<PREFIX>_STATIC_ASSERT`` and ``<PREFIX>_STATIC_ASSERT_MSG``
-function-macros.
-
-Conditional Compilation Options
-===============================
-
-Libraries may provide entirely different header files depending on
-requested compiler features.
-
-For example, a header at ``with_variadics/interface.h`` may contain:
-
-.. code-block:: c++
-
-  template<int I, int... Is>
-  struct Interface;
-
-  template<int I>
-  struct Interface<I>
-  {
-    static int accumulate()
-    {
-      return I;
-    }
-  };
-
-  template<int I, int... Is>
-  struct Interface
-  {
-    static int accumulate()
-    {
-      return I + Interface<Is...>::accumulate();
-    }
-  };
-
-while a header at ``no_variadics/interface.h`` may contain:
-
-.. code-block:: c++
-
-  template<int I1, int I2 = 0, int I3 = 0, int I4 = 0>
-  struct Interface
-  {
-    static int accumulate() { return I1 + I2 + I3 + I4; }
-  };
-
-It would be possible to write a abstraction ``interface.h`` header
-containing something like:
-
-.. code-block:: c++
-
-  #include "foo_compiler_detection.h"
-  #if Foo_COMPILER_CXX_VARIADIC_TEMPLATES
-  #include "with_variadics/interface.h"
-  #else
-  #include "no_variadics/interface.h"
-  #endif
-
-However this could be unmaintainable if there are many files to
-abstract. What is needed is to use alternative include directories
-depending on the compiler capabilities.
-
-CMake provides a ``COMPILE_FEATURES``
-:manual:`generator expression <cmake-generator-expressions(7)>` to implement
-such conditions.  This may be used with the build-property commands such as
-:command:`target_include_directories` and :command:`target_link_libraries`
-to set the appropriate :manual:`buildsystem <cmake-buildsystem(7)>`
-properties:
-
-.. code-block:: cmake
-
-  add_library(foo INTERFACE)
-  set(with_variadics ${CMAKE_CURRENT_SOURCE_DIR}/with_variadics)
-  set(no_variadics ${CMAKE_CURRENT_SOURCE_DIR}/no_variadics)
-  target_include_directories(foo
-    INTERFACE
-      "$<$<COMPILE_FEATURES:cxx_variadic_templates>:${with_variadics}>"
-      "$<$<NOT:$<COMPILE_FEATURES:cxx_variadic_templates>>:${no_variadics}>"
-    )
-
-Consuming code then simply links to the ``foo`` target as usual and uses
-the feature-appropriate include directory
-
-.. code-block:: cmake
-
-  add_executable(consumer_with consumer_with.cpp)
-  target_link_libraries(consumer_with foo)
-  set_property(TARGET consumer_with CXX_STANDARD 11)
-
-  add_executable(consumer_no consumer_no.cpp)
-  target_link_libraries(consumer_no foo)
-
-Supported Compilers
-===================
-
-CMake is currently aware of the :prop_tgt:`C++ standards <CXX_STANDARD>`
-and :prop_gbl:`compile features <CMAKE_CXX_KNOWN_FEATURES>` available from
-the following :variable:`compiler ids <CMAKE_<LANG>_COMPILER_ID>` as of the
-versions specified for each:
-
-* ``AppleClang``: Apple Clang for Xcode versions 4.4+.
-* ``Clang``: Clang compiler versions 2.9+.
-* ``GNU``: GNU compiler versions 4.4+.
-* ``MSVC``: Microsoft Visual Studio versions 2010+.
-* ``SunPro``: Oracle SolarisStudio versions 12.4+.
-* ``Intel``: Intel compiler versions 12.1+.
-
-CMake is currently aware of the :prop_tgt:`C standards <C_STANDARD>`
-and :prop_gbl:`compile features <CMAKE_C_KNOWN_FEATURES>` available from
-the following :variable:`compiler ids <CMAKE_<LANG>_COMPILER_ID>` as of the
-versions specified for each:
-
-* all compilers and versions listed above for C++.
-* ``GNU``: GNU compiler versions 3.4+
-
-CMake is currently aware of the :prop_tgt:`C++ standards <CXX_STANDARD>` and
-their associated meta-features (e.g. ``cxx_std_11``) available from the
-following :variable:`compiler ids <CMAKE_<LANG>_COMPILER_ID>` as of the
-versions specified for each:
-
-* ``Cray``: Cray Compiler Environment version 8.1+.
-* ``PGI``: PGI version 12.10+.
-* ``XL``: IBM XL version 10.1+.
-
-CMake is currently aware of the :prop_tgt:`C standards <C_STANDARD>` and
-their associated meta-features (e.g. ``c_std_99``) available from the
-following :variable:`compiler ids <CMAKE_<LANG>_COMPILER_ID>` as of the
-versions specified for each:
-
-* all compilers and versions listed above with only meta-features for C++.
-* ``TI``: Texas Instruments compiler.
-
-CMake is currently aware of the :prop_tgt:`CUDA standards <CUDA_STANDARD>` and
-their associated meta-features (e.g. ``cuda_std_11``) available from the
-following :variable:`compiler ids <CMAKE_<LANG>_COMPILER_ID>` as of the
-versions specified for each:
-
-* ``NVIDIA``: NVIDIA nvcc compiler 7.5+.
diff --git a/share/cmake-3.18/Help/manual/cmake-developer.7.rst b/share/cmake-3.18/Help/manual/cmake-developer.7.rst
deleted file mode 100644
index 85ed935..0000000
--- a/share/cmake-3.18/Help/manual/cmake-developer.7.rst
+++ /dev/null
@@ -1,433 +0,0 @@
-.. cmake-manual-description: CMake Developer Reference
-
-cmake-developer(7)
-******************
-
-.. only:: html
-
-   .. contents::
-
-Introduction
-============
-
-This manual is intended for reference by developers working with
-:manual:`cmake-language(7)` code, whether writing their own modules,
-authoring their own build systems, or working on CMake itself.
-
-See https://cmake.org/get-involved/ to get involved in development of
-CMake upstream.  It includes links to contribution instructions, which
-in turn link to developer guides for CMake itself.
-
-.. _`Find Modules`:
-
-Find Modules
-============
-
-A "find module" is a ``Find<PackageName>.cmake`` file to be loaded
-by the :command:`find_package` command when invoked for ``<PackageName>``.
-
-The primary task of a find module is to determine whether a package
-exists on the system, set the ``<PackageName>_FOUND`` variable to reflect
-this and provide any variables, macros and imported targets required to
-use the package.  A find module is useful in cases where an upstream
-library does not provide a
-:ref:`config file package <Config File Packages>`.
-
-The traditional approach is to use variables for everything, including
-libraries and executables: see the `Standard Variable Names`_ section
-below.  This is what most of the existing find modules provided by CMake
-do.
-
-The more modern approach is to behave as much like
-:ref:`config file packages <Config File Packages>` files as possible, by
-providing :ref:`imported target <Imported targets>`.  This has the advantage
-of propagating :ref:`Target Usage Requirements` to consumers.
-
-In either case (or even when providing both variables and imported
-targets), find modules should provide backwards compatibility with old
-versions that had the same name.
-
-A FindFoo.cmake module will typically be loaded by the command::
-
-  find_package(Foo [major[.minor[.patch[.tweak]]]]
-               [EXACT] [QUIET] [REQUIRED]
-               [[COMPONENTS] [components...]]
-               [OPTIONAL_COMPONENTS components...]
-               [NO_POLICY_SCOPE])
-
-See the :command:`find_package` documentation for details on what
-variables are set for the find module.  Most of these are dealt with by
-using :module:`FindPackageHandleStandardArgs`.
-
-Briefly, the module should only locate versions of the package
-compatible with the requested version, as described by the
-``Foo_FIND_VERSION`` family of variables.  If ``Foo_FIND_QUIETLY`` is
-set to true, it should avoid printing messages, including anything
-complaining about the package not being found.  If ``Foo_FIND_REQUIRED``
-is set to true, the module should issue a ``FATAL_ERROR`` if the package
-cannot be found.  If neither are set to true, it should print a
-non-fatal message if it cannot find the package.
-
-Packages that find multiple semi-independent parts (like bundles of
-libraries) should search for the components listed in
-``Foo_FIND_COMPONENTS`` if it is set , and only set ``Foo_FOUND`` to
-true if for each searched-for component ``<c>`` that was not found,
-``Foo_FIND_REQUIRED_<c>`` is not set to true.  The ``HANDLE_COMPONENTS``
-argument of ``find_package_handle_standard_args()`` can be used to
-implement this.
-
-If ``Foo_FIND_COMPONENTS`` is not set, which modules are searched for
-and required is up to the find module, but should be documented.
-
-For internal implementation, it is a generally accepted convention that
-variables starting with underscore are for temporary use only.
-
-
-.. _`CMake Developer Standard Variable Names`:
-
-Standard Variable Names
------------------------
-
-For a ``FindXxx.cmake`` module that takes the approach of setting
-variables (either instead of or in addition to creating imported
-targets), the following variable names should be used to keep things
-consistent between find modules.  Note that all variables start with
-``Xxx_`` to make sure they do not interfere with other find modules; the
-same consideration applies to macros, functions and imported targets.
-
-``Xxx_INCLUDE_DIRS``
-  The final set of include directories listed in one variable for use by
-  client code.  This should not be a cache entry.
-
-``Xxx_LIBRARIES``
-  The libraries to link against to use Xxx. These should include full
-  paths.  This should not be a cache entry.
-
-``Xxx_DEFINITIONS``
-  Definitions to use when compiling code that uses Xxx. This really
-  shouldn't include options such as ``-DHAS_JPEG`` that a client
-  source-code file uses to decide whether to ``#include <jpeg.h>``
-
-``Xxx_EXECUTABLE``
-  Where to find the Xxx tool.
-
-``Xxx_Yyy_EXECUTABLE``
-  Where to find the Yyy tool that comes with Xxx.
-
-``Xxx_LIBRARY_DIRS``
-  Optionally, the final set of library directories listed in one
-  variable for use by client code.  This should not be a cache entry.
-
-``Xxx_ROOT_DIR``
-  Where to find the base directory of Xxx.
-
-``Xxx_VERSION_Yy``
-  Expect Version Yy if true. Make sure at most one of these is ever true.
-
-``Xxx_WRAP_Yy``
-  If False, do not try to use the relevant CMake wrapping command.
-
-``Xxx_Yy_FOUND``
-  If False, optional Yy part of Xxx system is not available.
-
-``Xxx_FOUND``
-  Set to false, or undefined, if we haven't found, or don't want to use
-  Xxx.
-
-``Xxx_NOT_FOUND_MESSAGE``
-  Should be set by config-files in the case that it has set
-  ``Xxx_FOUND`` to FALSE.  The contained message will be printed by the
-  :command:`find_package` command and by
-  ``find_package_handle_standard_args()`` to inform the user about the
-  problem.
-
-``Xxx_RUNTIME_LIBRARY_DIRS``
-  Optionally, the runtime library search path for use when running an
-  executable linked to shared libraries.  The list should be used by
-  user code to create the ``PATH`` on windows or ``LD_LIBRARY_PATH`` on
-  UNIX.  This should not be a cache entry.
-
-``Xxx_VERSION``
-  The full version string of the package found, if any.  Note that many
-  existing modules provide ``Xxx_VERSION_STRING`` instead.
-
-``Xxx_VERSION_MAJOR``
-  The major version of the package found, if any.
-
-``Xxx_VERSION_MINOR``
-  The minor version of the package found, if any.
-
-``Xxx_VERSION_PATCH``
-  The patch version of the package found, if any.
-
-The following names should not usually be used in CMakeLists.txt files, but
-are typically cache variables for users to edit and control the
-behaviour of find modules (like entering the path to a library manually)
-
-``Xxx_LIBRARY``
-  The path of the Xxx library (as used with :command:`find_library`, for
-  example).
-
-``Xxx_Yy_LIBRARY``
-  The path of the Yy library that is part of the Xxx system. It may or
-  may not be required to use Xxx.
-
-``Xxx_INCLUDE_DIR``
-  Where to find headers for using the Xxx library.
-
-``Xxx_Yy_INCLUDE_DIR``
-  Where to find headers for using the Yy library of the Xxx system.
-
-To prevent users being overwhelmed with settings to configure, try to
-keep as many options as possible out of the cache, leaving at least one
-option which can be used to disable use of the module, or locate a
-not-found library (e.g. ``Xxx_ROOT_DIR``).  For the same reason, mark
-most cache options as advanced.  For packages which provide both debug
-and release binaries, it is common to create cache variables with a
-``_LIBRARY_<CONFIG>`` suffix, such as ``Foo_LIBRARY_RELEASE`` and
-``Foo_LIBRARY_DEBUG``.
-
-While these are the standard variable names, you should provide
-backwards compatibility for any old names that were actually in use.
-Make sure you comment them as deprecated, so that no-one starts using
-them.
-
-
-A Sample Find Module
---------------------
-
-We will describe how to create a simple find module for a library ``Foo``.
-
-The top of the module should begin with a license notice, followed by
-a blank line, and then followed by a :ref:`Bracket Comment`.  The comment
-should begin with ``.rst:`` to indicate that the rest of its content is
-reStructuredText-format documentation.  For example:
-
-::
-
-  # Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-  # file Copyright.txt or https://cmake.org/licensing for details.
-
-  #[=======================================================================[.rst:
-  FindFoo
-  -------
-
-  Finds the Foo library.
-
-  Imported Targets
-  ^^^^^^^^^^^^^^^^
-
-  This module provides the following imported targets, if found:
-
-  ``Foo::Foo``
-    The Foo library
-
-  Result Variables
-  ^^^^^^^^^^^^^^^^
-
-  This will define the following variables:
-
-  ``Foo_FOUND``
-    True if the system has the Foo library.
-  ``Foo_VERSION``
-    The version of the Foo library which was found.
-  ``Foo_INCLUDE_DIRS``
-    Include directories needed to use Foo.
-  ``Foo_LIBRARIES``
-    Libraries needed to link to Foo.
-
-  Cache Variables
-  ^^^^^^^^^^^^^^^
-
-  The following cache variables may also be set:
-
-  ``Foo_INCLUDE_DIR``
-    The directory containing ``foo.h``.
-  ``Foo_LIBRARY``
-    The path to the Foo library.
-
-  #]=======================================================================]
-
-The module documentation consists of:
-
-* An underlined heading specifying the module name.
-
-* A simple description of what the module finds.
-  More description may be required for some packages.  If there are
-  caveats or other details users of the module should be aware of,
-  specify them here.
-
-* A section listing imported targets provided by the module, if any.
-
-* A section listing result variables provided by the module.
-
-* Optionally a section listing cache variables used by the module, if any.
-
-If the package provides any macros or functions, they should be listed in
-an additional section, but can be documented by additional ``.rst:``
-comment blocks immediately above where those macros or functions are defined.
-
-The find module implementation may begin below the documentation block.
-Now the actual libraries and so on have to be found.  The code here will
-obviously vary from module to module (dealing with that, after all, is the
-point of find modules), but there tends to be a common pattern for libraries.
-
-First, we try to use ``pkg-config`` to find the library.  Note that we
-cannot rely on this, as it may not be available, but it provides a good
-starting point.
-
-.. code-block:: cmake
-
-  find_package(PkgConfig)
-  pkg_check_modules(PC_Foo QUIET Foo)
-
-This should define some variables starting ``PC_Foo_`` that contain the
-information from the ``Foo.pc`` file.
-
-Now we need to find the libraries and include files; we use the
-information from ``pkg-config`` to provide hints to CMake about where to
-look.
-
-.. code-block:: cmake
-
-  find_path(Foo_INCLUDE_DIR
-    NAMES foo.h
-    PATHS ${PC_Foo_INCLUDE_DIRS}
-    PATH_SUFFIXES Foo
-  )
-  find_library(Foo_LIBRARY
-    NAMES foo
-    PATHS ${PC_Foo_LIBRARY_DIRS}
-  )
-
-If you have a good way of getting the version (from a header file, for
-example), you can use that information to set ``Foo_VERSION`` (although
-note that find modules have traditionally used ``Foo_VERSION_STRING``,
-so you may want to set both).  Otherwise, attempt to use the information
-from ``pkg-config``
-
-.. code-block:: cmake
-
-  set(Foo_VERSION ${PC_Foo_VERSION})
-
-Now we can use :module:`FindPackageHandleStandardArgs` to do most of the
-rest of the work for us
-
-.. code-block:: cmake
-
-  include(FindPackageHandleStandardArgs)
-  find_package_handle_standard_args(Foo
-    FOUND_VAR Foo_FOUND
-    REQUIRED_VARS
-      Foo_LIBRARY
-      Foo_INCLUDE_DIR
-    VERSION_VAR Foo_VERSION
-  )
-
-This will check that the ``REQUIRED_VARS`` contain values (that do not
-end in ``-NOTFOUND``) and set ``Foo_FOUND`` appropriately.  It will also
-cache those values.  If ``Foo_VERSION`` is set, and a required version
-was passed to :command:`find_package`, it will check the requested version
-against the one in ``Foo_VERSION``.  It will also print messages as
-appropriate; note that if the package was found, it will print the
-contents of the first required variable to indicate where it was found.
-
-At this point, we have to provide a way for users of the find module to
-link to the library or libraries that were found.  There are two
-approaches, as discussed in the `Find Modules`_ section above.  The
-traditional variable approach looks like
-
-.. code-block:: cmake
-
-  if(Foo_FOUND)
-    set(Foo_LIBRARIES ${Foo_LIBRARY})
-    set(Foo_INCLUDE_DIRS ${Foo_INCLUDE_DIR})
-    set(Foo_DEFINITIONS ${PC_Foo_CFLAGS_OTHER})
-  endif()
-
-If more than one library was found, all of them should be included in
-these variables (see the `Standard Variable Names`_ section for more
-information).
-
-When providing imported targets, these should be namespaced (hence the
-``Foo::`` prefix); CMake will recognize that values passed to
-:command:`target_link_libraries` that contain ``::`` in their name are
-supposed to be imported targets (rather than just library names), and
-will produce appropriate diagnostic messages if that target does not
-exist (see policy :policy:`CMP0028`).
-
-.. code-block:: cmake
-
-  if(Foo_FOUND AND NOT TARGET Foo::Foo)
-    add_library(Foo::Foo UNKNOWN IMPORTED)
-    set_target_properties(Foo::Foo PROPERTIES
-      IMPORTED_LOCATION "${Foo_LIBRARY}"
-      INTERFACE_COMPILE_OPTIONS "${PC_Foo_CFLAGS_OTHER}"
-      INTERFACE_INCLUDE_DIRECTORIES "${Foo_INCLUDE_DIR}"
-    )
-  endif()
-
-One thing to note about this is that the ``INTERFACE_INCLUDE_DIRECTORIES`` and
-similar properties should only contain information about the target itself, and
-not any of its dependencies.  Instead, those dependencies should also be
-targets, and CMake should be told that they are dependencies of this target.
-CMake will then combine all the necessary information automatically.
-
-The type of the :prop_tgt:`IMPORTED` target created in the
-:command:`add_library` command can always be specified as ``UNKNOWN``
-type.  This simplifies the code in cases where static or shared variants may
-be found, and CMake will determine the type by inspecting the files.
-
-If the library is available with multiple configurations, the
-:prop_tgt:`IMPORTED_CONFIGURATIONS` target property should also be
-populated:
-
-.. code-block:: cmake
-
-  if(Foo_FOUND)
-    if (NOT TARGET Foo::Foo)
-      add_library(Foo::Foo UNKNOWN IMPORTED)
-    endif()
-    if (Foo_LIBRARY_RELEASE)
-      set_property(TARGET Foo::Foo APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS RELEASE
-      )
-      set_target_properties(Foo::Foo PROPERTIES
-        IMPORTED_LOCATION_RELEASE "${Foo_LIBRARY_RELEASE}"
-      )
-    endif()
-    if (Foo_LIBRARY_DEBUG)
-      set_property(TARGET Foo::Foo APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS DEBUG
-      )
-      set_target_properties(Foo::Foo PROPERTIES
-        IMPORTED_LOCATION_DEBUG "${Foo_LIBRARY_DEBUG}"
-      )
-    endif()
-    set_target_properties(Foo::Foo PROPERTIES
-      INTERFACE_COMPILE_OPTIONS "${PC_Foo_CFLAGS_OTHER}"
-      INTERFACE_INCLUDE_DIRECTORIES "${Foo_INCLUDE_DIR}"
-    )
-  endif()
-
-The ``RELEASE`` variant should be listed first in the property
-so that the variant is chosen if the user uses a configuration which is
-not an exact match for any listed ``IMPORTED_CONFIGURATIONS``.
-
-Most of the cache variables should be hidden in the ``ccmake`` interface unless
-the user explicitly asks to edit them.
-
-.. code-block:: cmake
-
-  mark_as_advanced(
-    Foo_INCLUDE_DIR
-    Foo_LIBRARY
-  )
-
-If this module replaces an older version, you should set compatibility variables
-to cause the least disruption possible.
-
-.. code-block:: cmake
-
-  # compatibility variables
-  set(Foo_VERSION_STRING ${Foo_VERSION})
diff --git a/share/cmake-3.18/Help/manual/cmake-env-variables.7.rst b/share/cmake-3.18/Help/manual/cmake-env-variables.7.rst
deleted file mode 100644
index ce1e360..0000000
--- a/share/cmake-3.18/Help/manual/cmake-env-variables.7.rst
+++ /dev/null
@@ -1,92 +0,0 @@
-.. cmake-manual-description: CMake Environment Variables Reference
-
-cmake-env-variables(7)
-**********************
-
-.. only:: html
-
-   .. contents::
-
-This page lists environment variables that have special
-meaning to CMake.
-
-For general information on environment variables, see the
-:ref:`Environment Variables <CMake Language Environment Variables>`
-section in the cmake-language manual.
-
-Environment Variables that Change Behavior
-==========================================
-
-.. toctree::
-   :maxdepth: 1
-
-   /envvar/CMAKE_PREFIX_PATH
-
-Environment Variables that Control the Build
-============================================
-
-.. toctree::
-   :maxdepth: 1
-
-   /envvar/CMAKE_BUILD_PARALLEL_LEVEL
-   /envvar/CMAKE_CONFIG_TYPE
-   /envvar/CMAKE_EXPORT_COMPILE_COMMANDS
-   /envvar/CMAKE_GENERATOR
-   /envvar/CMAKE_GENERATOR_INSTANCE
-   /envvar/CMAKE_GENERATOR_PLATFORM
-   /envvar/CMAKE_GENERATOR_TOOLSET
-   /envvar/CMAKE_LANG_COMPILER_LAUNCHER
-   /envvar/CMAKE_MSVCIDE_RUN_PATH
-   /envvar/CMAKE_NO_VERBOSE
-   /envvar/CMAKE_OSX_ARCHITECTURES
-   /envvar/DESTDIR
-   /envvar/LDFLAGS
-   /envvar/MACOSX_DEPLOYMENT_TARGET
-   /envvar/PackageName_ROOT
-   /envvar/VERBOSE
-
-Environment Variables for Languages
-===================================
-
-.. toctree::
-   :maxdepth: 1
-
-   /envvar/ASM_DIALECT
-   /envvar/ASM_DIALECTFLAGS
-   /envvar/CC
-   /envvar/CFLAGS
-   /envvar/CSFLAGS
-   /envvar/CUDACXX
-   /envvar/CUDAFLAGS
-   /envvar/CUDAHOSTCXX
-   /envvar/CXX
-   /envvar/CXXFLAGS
-   /envvar/FC
-   /envvar/FFLAGS
-   /envvar/OBJC
-   /envvar/OBJCXX
-   /envvar/RC
-   /envvar/RCFLAGS
-   /envvar/SWIFTC
-
-Environment Variables for CTest
-===============================
-
-.. toctree::
-   :maxdepth: 1
-
-   /envvar/CMAKE_CONFIG_TYPE
-   /envvar/CTEST_INTERACTIVE_DEBUG_MODE
-   /envvar/CTEST_OUTPUT_ON_FAILURE
-   /envvar/CTEST_PARALLEL_LEVEL
-   /envvar/CTEST_PROGRESS_OUTPUT
-   /envvar/CTEST_USE_LAUNCHERS_DEFAULT
-   /envvar/DASHBOARD_TEST_FROM_CTEST
-
-Environment Variables for the CMake curses interface
-====================================================
-
-.. toctree::
-   :maxdepth: 1
-
-   /envvar/CCMAKE_COLORS
diff --git a/share/cmake-3.18/Help/manual/cmake-file-api.7.rst b/share/cmake-3.18/Help/manual/cmake-file-api.7.rst
deleted file mode 100644
index cc50952..0000000
--- a/share/cmake-3.18/Help/manual/cmake-file-api.7.rst
+++ /dev/null
@@ -1,1135 +0,0 @@
-.. cmake-manual-description: CMake File-Based API
-
-cmake-file-api(7)
-*****************
-
-.. only:: html
-
-   .. contents::
-
-Introduction
-============
-
-CMake provides a file-based API that clients may use to get semantic
-information about the buildsystems CMake generates.  Clients may use
-the API by writing query files to a specific location in a build tree
-to request zero or more `Object Kinds`_.  When CMake generates the
-buildsystem in that build tree it will read the query files and write
-reply files for the client to read.
-
-The file-based API uses a ``<build>/.cmake/api/`` directory at the top
-of a build tree.  The API is versioned to support changes to the layout
-of files within the API directory.  API file layout versioning is
-orthogonal to the versioning of `Object Kinds`_ used in replies.
-This version of CMake supports only one API version, `API v1`_.
-
-API v1
-======
-
-API v1 is housed in the ``<build>/.cmake/api/v1/`` directory.
-It has the following subdirectories:
-
-``query/``
-  Holds query files written by clients.
-  These may be `v1 Shared Stateless Query Files`_,
-  `v1 Client Stateless Query Files`_, or `v1 Client Stateful Query Files`_.
-
-``reply/``
-  Holds reply files written by CMake whenever it runs to generate a build
-  system.  These are indexed by a `v1 Reply Index File`_ file that may
-  reference additional `v1 Reply Files`_.  CMake owns all reply files.
-  Clients must never remove them.
-
-  Clients may look for and read a reply index file at any time.
-  Clients may optionally create the ``reply/`` directory at any time
-  and monitor it for the appearance of a new reply index file.
-
-v1 Shared Stateless Query Files
--------------------------------
-
-Shared stateless query files allow clients to share requests for
-major versions of the `Object Kinds`_ and get all requested versions
-recognized by the CMake that runs.
-
-Clients may create shared requests by creating empty files in the
-``v1/query/`` directory.  The form is::
-
-  <build>/.cmake/api/v1/query/<kind>-v<major>
-
-where ``<kind>`` is one of the `Object Kinds`_, ``-v`` is literal,
-and ``<major>`` is the major version number.
-
-Files of this form are stateless shared queries not owned by any specific
-client.  Once created they should not be removed without external client
-coordination or human intervention.
-
-v1 Client Stateless Query Files
--------------------------------
-
-Client stateless query files allow clients to create owned requests for
-major versions of the `Object Kinds`_ and get all requested versions
-recognized by the CMake that runs.
-
-Clients may create owned requests by creating empty files in
-client-specific query subdirectories.  The form is::
-
-  <build>/.cmake/api/v1/query/client-<client>/<kind>-v<major>
-
-where ``client-`` is literal, ``<client>`` is a string uniquely
-identifying the client, ``<kind>`` is one of the `Object Kinds`_,
-``-v`` is literal, and ``<major>`` is the major version number.
-Each client must choose a unique ``<client>`` identifier via its
-own means.
-
-Files of this form are stateless queries owned by the client ``<client>``.
-The owning client may remove them at any time.
-
-v1 Client Stateful Query Files
-------------------------------
-
-Stateful query files allow clients to request a list of versions of
-each of the `Object Kinds`_ and get only the most recent version
-recognized by the CMake that runs.
-
-Clients may create owned stateful queries by creating ``query.json``
-files in client-specific query subdirectories.  The form is::
-
-  <build>/.cmake/api/v1/query/client-<client>/query.json
-
-where ``client-`` is literal, ``<client>`` is a string uniquely
-identifying the client, and ``query.json`` is literal.  Each client
-must choose a unique ``<client>`` identifier via its own means.
-
-``query.json`` files are stateful queries owned by the client ``<client>``.
-The owning client may update or remove them at any time.  When a
-given client installation is updated it may then update the stateful
-query it writes to build trees to request newer object versions.
-This can be used to avoid asking CMake to generate multiple object
-versions unnecessarily.
-
-A ``query.json`` file must contain a JSON object:
-
-.. code-block:: json
-
-  {
-    "requests": [
-      { "kind": "<kind>" , "version": 1 },
-      { "kind": "<kind>" , "version": { "major": 1, "minor": 2 } },
-      { "kind": "<kind>" , "version": [2, 1] },
-      { "kind": "<kind>" , "version": [2, { "major": 1, "minor": 2 }] },
-      { "kind": "<kind>" , "version": 1, "client": {} },
-      { "kind": "..." }
-    ],
-    "client": {}
-  }
-
-The members are:
-
-``requests``
-  A JSON array containing zero or more requests.  Each request is
-  a JSON object with members:
-
-  ``kind``
-    Specifies one of the `Object Kinds`_ to be included in the reply.
-
-  ``version``
-    Indicates the version(s) of the object kind that the client
-    understands.  Versions have major and minor components following
-    semantic version conventions.  The value must be
-
-    * a JSON integer specifying a (non-negative) major version number, or
-    * a JSON object containing ``major`` and (optionally) ``minor``
-      members specifying non-negative integer version components, or
-    * a JSON array whose elements are each one of the above.
-
-  ``client``
-    Optional member reserved for use by the client.  This value is
-    preserved in the reply written for the client in the
-    `v1 Reply Index File`_ but is otherwise ignored.  Clients may use
-    this to pass custom information with a request through to its reply.
-
-  For each requested object kind CMake will choose the *first* version
-  that it recognizes for that kind among those listed in the request.
-  The response will use the selected *major* version with the highest
-  *minor* version known to the running CMake for that major version.
-  Therefore clients should list all supported major versions in
-  preferred order along with the minimal minor version required
-  for each major version.
-
-``client``
-  Optional member reserved for use by the client.  This value is
-  preserved in the reply written for the client in the
-  `v1 Reply Index File`_ but is otherwise ignored.  Clients may use
-  this to pass custom information with a query through to its reply.
-
-Other ``query.json`` top-level members are reserved for future use.
-If present they are ignored for forward compatibility.
-
-v1 Reply Index File
--------------------
-
-CMake writes an ``index-*.json`` file to the ``v1/reply/`` directory
-whenever it runs to generate a build system.  Clients must read the
-reply index file first and may read other `v1 Reply Files`_ only by
-following references.  The form of the reply index file name is::
-
-  <build>/.cmake/api/v1/reply/index-<unspecified>.json
-
-where ``index-`` is literal and ``<unspecified>`` is an unspecified
-name selected by CMake.  Whenever a new index file is generated it
-is given a new name and any old one is deleted.  During the short
-time between these steps there may be multiple index files present;
-the one with the largest name in lexicographic order is the current
-index file.
-
-The reply index file contains a JSON object:
-
-.. code-block:: json
-
-  {
-    "cmake": {
-      "version": {
-        "major": 3, "minor": 14, "patch": 0, "suffix": "",
-        "string": "3.14.0", "isDirty": false
-      },
-      "paths": {
-        "cmake": "/prefix/bin/cmake",
-        "ctest": "/prefix/bin/ctest",
-        "cpack": "/prefix/bin/cpack",
-        "root": "/prefix/share/cmake-3.14"
-      },
-      "generator": {
-        "multiConfig": false,
-        "name": "Unix Makefiles"
-      }
-    },
-    "objects": [
-      { "kind": "<kind>",
-        "version": { "major": 1, "minor": 0 },
-        "jsonFile": "<file>" },
-      { "...": "..." }
-    ],
-    "reply": {
-      "<kind>-v<major>": { "kind": "<kind>",
-                           "version": { "major": 1, "minor": 0 },
-                           "jsonFile": "<file>" },
-      "<unknown>": { "error": "unknown query file" },
-      "...": {},
-      "client-<client>": {
-        "<kind>-v<major>": { "kind": "<kind>",
-                             "version": { "major": 1, "minor": 0 },
-                             "jsonFile": "<file>" },
-        "<unknown>": { "error": "unknown query file" },
-        "...": {},
-        "query.json": {
-          "requests": [ {}, {}, {} ],
-          "responses": [
-            { "kind": "<kind>",
-              "version": { "major": 1, "minor": 0 },
-              "jsonFile": "<file>" },
-            { "error": "unknown query file" },
-            { "...": {} }
-          ],
-          "client": {}
-        }
-      }
-    }
-  }
-
-The members are:
-
-``cmake``
-  A JSON object containing information about the instance of CMake that
-  generated the reply.  It contains members:
-
-  ``version``
-    A JSON object specifying the version of CMake with members:
-
-    ``major``, ``minor``, ``patch``
-      Integer values specifying the major, minor, and patch version components.
-    ``suffix``
-      A string specifying the version suffix, if any, e.g. ``g0abc3``.
-    ``string``
-      A string specifying the full version in the format
-      ``<major>.<minor>.<patch>[-<suffix>]``.
-    ``isDirty``
-      A boolean indicating whether the version was built from a version
-      controlled source tree with local modifications.
-
-  ``paths``
-    A JSON object specifying paths to things that come with CMake.
-    It has members for ``cmake``, ``ctest``, and ``cpack`` whose values
-    are JSON strings specifying the absolute path to each tool,
-    represented with forward slashes.  It also has a ``root`` member for
-    the absolute path to the directory containing CMake resources like the
-    ``Modules/`` directory (see :variable:`CMAKE_ROOT`).
-
-  ``generator``
-    A JSON object describing the CMake generator used for the build.
-    It has members:
-
-    ``multiConfig``
-      A boolean specifying whether the generator supports multiple output
-      configurations.
-    ``name``
-      A string specifying the name of the generator.
-    ``platform``
-      If the generator supports :variable:`CMAKE_GENERATOR_PLATFORM`,
-      this is a string specifying the generator platform name.
-
-``objects``
-  A JSON array listing all versions of all `Object Kinds`_ generated
-  as part of the reply.  Each array entry is a
-  `v1 Reply File Reference`_.
-
-``reply``
-  A JSON object mirroring the content of the ``query/`` directory
-  that CMake loaded to produce the reply.  The members are of the form
-
-  ``<kind>-v<major>``
-    A member of this form appears for each of the
-    `v1 Shared Stateless Query Files`_ that CMake recognized as a
-    request for object kind ``<kind>`` with major version ``<major>``.
-    The value is a `v1 Reply File Reference`_ to the corresponding
-    reply file for that object kind and version.
-
-  ``<unknown>``
-    A member of this form appears for each of the
-    `v1 Shared Stateless Query Files`_ that CMake did not recognize.
-    The value is a JSON object with a single ``error`` member
-    containing a string with an error message indicating that the
-    query file is unknown.
-
-  ``client-<client>``
-    A member of this form appears for each client-owned directory
-    holding `v1 Client Stateless Query Files`_.
-    The value is a JSON object mirroring the content of the
-    ``query/client-<client>/`` directory.  The members are of the form:
-
-    ``<kind>-v<major>``
-      A member of this form appears for each of the
-      `v1 Client Stateless Query Files`_ that CMake recognized as a
-      request for object kind ``<kind>`` with major version ``<major>``.
-      The value is a `v1 Reply File Reference`_ to the corresponding
-      reply file for that object kind and version.
-
-    ``<unknown>``
-      A member of this form appears for each of the
-      `v1 Client Stateless Query Files`_ that CMake did not recognize.
-      The value is a JSON object with a single ``error`` member
-      containing a string with an error message indicating that the
-      query file is unknown.
-
-    ``query.json``
-      This member appears for clients using
-      `v1 Client Stateful Query Files`_.
-      If the ``query.json`` file failed to read or parse as a JSON object,
-      this member is a JSON object with a single ``error`` member
-      containing a string with an error message.  Otherwise, this member
-      is a JSON object mirroring the content of the ``query.json`` file.
-      The members are:
-
-      ``client``
-        A copy of the ``query.json`` file ``client`` member, if it exists.
-
-      ``requests``
-        A copy of the ``query.json`` file ``requests`` member, if it exists.
-
-      ``responses``
-        If the ``query.json`` file ``requests`` member is missing or invalid,
-        this member is a JSON object with a single ``error`` member
-        containing a string with an error message.  Otherwise, this member
-        contains a JSON array with a response for each entry of the
-        ``requests`` array, in the same order.  Each response is
-
-        * a JSON object with a single ``error`` member containing a string
-          with an error message, or
-        * a `v1 Reply File Reference`_ to the corresponding reply file for
-          the requested object kind and selected version.
-
-After reading the reply index file, clients may read the other
-`v1 Reply Files`_ it references.
-
-v1 Reply File Reference
-^^^^^^^^^^^^^^^^^^^^^^^
-
-The reply index file represents each reference to another reply file
-using a JSON object with members:
-
-``kind``
-  A string specifying one of the `Object Kinds`_.
-``version``
-  A JSON object with members ``major`` and ``minor`` specifying
-  integer version components of the object kind.
-``jsonFile``
-  A JSON string specifying a path relative to the reply index file
-  to another JSON file containing the object.
-
-v1 Reply Files
---------------
-
-Reply files containing specific `Object Kinds`_ are written by CMake.
-The names of these files are unspecified and must not be interpreted
-by clients.  Clients must first read the `v1 Reply Index File`_ and
-and follow references to the names of the desired response objects.
-
-Reply files (including the index file) will never be replaced by
-files of the same name but different content.  This allows a client
-to read the files concurrently with a running CMake that may generate
-a new reply.  However, after generating a new reply CMake will attempt
-to remove reply files from previous runs that it did not just write.
-If a client attempts to read a reply file referenced by the index but
-finds the file missing, that means a concurrent CMake has generated
-a new reply.  The client may simply start again by reading the new
-reply index file.
-
-.. _`file-api object kinds`:
-
-Object Kinds
-============
-
-The CMake file-based API reports semantic information about the build
-system using the following kinds of JSON objects.  Each kind of object
-is versioned independently using semantic versioning with major and
-minor components.  Every kind of object has the form:
-
-.. code-block:: json
-
-  {
-    "kind": "<kind>",
-    "version": { "major": 1, "minor": 0 },
-    "...": {}
-  }
-
-The ``kind`` member is a string specifying the object kind name.
-The ``version`` member is a JSON object with ``major`` and ``minor``
-members specifying integer components of the object kind's version.
-Additional top-level members are specific to each object kind.
-
-Object Kind "codemodel"
------------------------
-
-The ``codemodel`` object kind describes the build system structure as
-modeled by CMake.
-
-There is only one ``codemodel`` object major version, version 2.
-Version 1 does not exist to avoid confusion with that from
-:manual:`cmake-server(7)` mode.
-
-"codemodel" version 2
-^^^^^^^^^^^^^^^^^^^^^
-
-``codemodel`` object version 2 is a JSON object:
-
-.. code-block:: json
-
-  {
-    "kind": "codemodel",
-    "version": { "major": 2, "minor": 1 },
-    "paths": {
-      "source": "/path/to/top-level-source-dir",
-      "build": "/path/to/top-level-build-dir"
-    },
-    "configurations": [
-      {
-        "name": "Debug",
-        "directories": [
-          {
-            "source": ".",
-            "build": ".",
-            "childIndexes": [ 1 ],
-            "projectIndex": 0,
-            "targetIndexes": [ 0 ],
-            "hasInstallRule": true,
-            "minimumCMakeVersion": {
-              "string": "3.14"
-            }
-          },
-          {
-            "source": "sub",
-            "build": "sub",
-            "parentIndex": 0,
-            "projectIndex": 0,
-            "targetIndexes": [ 1 ],
-            "minimumCMakeVersion": {
-              "string": "3.14"
-            }
-          }
-        ],
-        "projects": [
-          {
-            "name": "MyProject",
-            "directoryIndexes": [ 0, 1 ],
-            "targetIndexes": [ 0, 1 ]
-          }
-        ],
-        "targets": [
-          {
-            "name": "MyExecutable",
-            "directoryIndex": 0,
-            "projectIndex": 0,
-            "jsonFile": "<file>"
-          },
-          {
-            "name": "MyLibrary",
-            "directoryIndex": 1,
-            "projectIndex": 0,
-            "jsonFile": "<file>"
-          }
-        ]
-      }
-    ]
-  }
-
-The members specific to ``codemodel`` objects are:
-
-``paths``
-  A JSON object containing members:
-
-  ``source``
-    A string specifying the absolute path to the top-level source directory,
-    represented with forward slashes.
-
-  ``build``
-    A string specifying the absolute path to the top-level build directory,
-    represented with forward slashes.
-
-``configurations``
-  A JSON array of entries corresponding to available build configurations.
-  On single-configuration generators there is one entry for the value
-  of the :variable:`CMAKE_BUILD_TYPE` variable.  For multi-configuration
-  generators there is an entry for each configuration listed in the
-  :variable:`CMAKE_CONFIGURATION_TYPES` variable.
-  Each entry is a JSON object containing members:
-
-  ``name``
-    A string specifying the name of the configuration, e.g. ``Debug``.
-
-  ``directories``
-    A JSON array of entries each corresponding to a build system directory
-    whose source directory contains a ``CMakeLists.txt`` file.  The first
-    entry corresponds to the top-level directory.  Each entry is a
-    JSON object containing members:
-
-    ``source``
-      A string specifying the path to the source directory, represented
-      with forward slashes.  If the directory is inside the top-level
-      source directory then the path is specified relative to that
-      directory (with ``.`` for the top-level source directory itself).
-      Otherwise the path is absolute.
-
-    ``build``
-      A string specifying the path to the build directory, represented
-      with forward slashes.  If the directory is inside the top-level
-      build directory then the path is specified relative to that
-      directory (with ``.`` for the top-level build directory itself).
-      Otherwise the path is absolute.
-
-    ``parentIndex``
-      Optional member that is present when the directory is not top-level.
-      The value is an unsigned integer 0-based index of another entry in
-      the main ``directories`` array that corresponds to the parent
-      directory that added this directory as a subdirectory.
-
-    ``childIndexes``
-      Optional member that is present when the directory has subdirectories.
-      The value is a JSON array of entries corresponding to child directories
-      created by the :command:`add_subdirectory` or :command:`subdirs`
-      command.  Each entry is an unsigned integer 0-based index of another
-      entry in the main ``directories`` array.
-
-    ``projectIndex``
-      An unsigned integer 0-based index into the main ``projects`` array
-      indicating the build system project to which the this directory belongs.
-
-    ``targetIndexes``
-      Optional member that is present when the directory itself has targets,
-      excluding those belonging to subdirectories.  The value is a JSON
-      array of entries corresponding to the targets.  Each entry is an
-      unsigned integer 0-based index into the main ``targets`` array.
-
-    ``minimumCMakeVersion``
-      Optional member present when a minimum required version of CMake is
-      known for the directory.  This is the ``<min>`` version given to the
-      most local call to the :command:`cmake_minimum_required(VERSION)`
-      command in the directory itself or one of its ancestors.
-      The value is a JSON object with one member:
-
-      ``string``
-        A string specifying the minimum required version in the format::
-
-          <major>.<minor>[.<patch>[.<tweak>]][<suffix>]
-
-        Each component is an unsigned integer and the suffix may be an
-        arbitrary string.
-
-    ``hasInstallRule``
-      Optional member that is present with boolean value ``true`` when
-      the directory or one of its subdirectories contains any
-      :command:`install` rules, i.e. whether a ``make install``
-      or equivalent rule is available.
-
-  ``projects``
-    A JSON array of entries corresponding to the top-level project
-    and sub-projects defined in the build system.  Each (sub-)project
-    corresponds to a source directory whose ``CMakeLists.txt`` file
-    calls the :command:`project` command with a project name different
-    from its parent directory.  The first entry corresponds to the
-    top-level project.
-
-    Each entry is a JSON object containing members:
-
-    ``name``
-      A string specifying the name given to the :command:`project` command.
-
-    ``parentIndex``
-      Optional member that is present when the project is not top-level.
-      The value is an unsigned integer 0-based index of another entry in
-      the main ``projects`` array that corresponds to the parent project
-      that added this project as a sub-project.
-
-    ``childIndexes``
-      Optional member that is present when the project has sub-projects.
-      The value is a JSON array of entries corresponding to the sub-projects.
-      Each entry is an unsigned integer 0-based index of another
-      entry in the main ``projects`` array.
-
-    ``directoryIndexes``
-      A JSON array of entries corresponding to build system directories
-      that are part of the project.  The first entry corresponds to the
-      top-level directory of the project.  Each entry is an unsigned
-      integer 0-based index into the main ``directories`` array.
-
-    ``targetIndexes``
-      Optional member that is present when the project itself has targets,
-      excluding those belonging to sub-projects.  The value is a JSON
-      array of entries corresponding to the targets.  Each entry is an
-      unsigned integer 0-based index into the main ``targets`` array.
-
-  ``targets``
-    A JSON array of entries corresponding to the build system targets.
-    Such targets are created by calls to :command:`add_executable`,
-    :command:`add_library`, and :command:`add_custom_target`, excluding
-    imported targets and interface libraries (which do not generate any
-    build rules).  Each entry is a JSON object containing members:
-
-    ``name``
-      A string specifying the target name.
-
-    ``id``
-      A string uniquely identifying the target.  This matches the ``id``
-      field in the file referenced by ``jsonFile``.
-
-    ``directoryIndex``
-      An unsigned integer 0-based index into the main ``directories`` array
-      indicating the build system directory in which the target is defined.
-
-    ``projectIndex``
-      An unsigned integer 0-based index into the main ``projects`` array
-      indicating the build system project in which the target is defined.
-
-    ``jsonFile``
-      A JSON string specifying a path relative to the codemodel file
-      to another JSON file containing a
-      `"codemodel" version 2 "target" object`_.
-
-"codemodel" version 2 "target" object
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A codemodel "target" object is referenced by a `"codemodel" version 2`_
-object's ``targets`` array.  Each "target" object is a JSON object
-with members:
-
-``name``
-  A string specifying the logical name of the target.
-
-``id``
-  A string uniquely identifying the target.  The format is unspecified
-  and should not be interpreted by clients.
-
-``type``
-  A string specifying the type of the target.  The value is one of
-  ``EXECUTABLE``, ``STATIC_LIBRARY``, ``SHARED_LIBRARY``,
-  ``MODULE_LIBRARY``, ``OBJECT_LIBRARY``, or ``UTILITY``.
-
-``backtrace``
-  Optional member that is present when a CMake language backtrace to
-  the command in the source code that created the target is available.
-  The value is an unsigned integer 0-based index into the
-  ``backtraceGraph`` member's ``nodes`` array.
-
-``folder``
-  Optional member that is present when the :prop_tgt:`FOLDER` target
-  property is set.  The value is a JSON object with one member:
-
-  ``name``
-    A string specifying the name of the target folder.
-
-``paths``
-  A JSON object containing members:
-
-  ``source``
-    A string specifying the path to the target's source directory,
-    represented with forward slashes.  If the directory is inside the
-    top-level source directory then the path is specified relative to
-    that directory (with ``.`` for the top-level source directory itself).
-    Otherwise the path is absolute.
-
-  ``build``
-    A string specifying the path to the target's build directory,
-    represented with forward slashes.  If the directory is inside the
-    top-level build directory then the path is specified relative to
-    that directory (with ``.`` for the top-level build directory itself).
-    Otherwise the path is absolute.
-
-``nameOnDisk``
-  Optional member that is present for executable and library targets
-  that are linked or archived into a single primary artifact.
-  The value is a string specifying the file name of that artifact on disk.
-
-``artifacts``
-  Optional member that is present for executable and library targets
-  that produce artifacts on disk meant for consumption by dependents.
-  The value is a JSON array of entries corresponding to the artifacts.
-  Each entry is a JSON object containing one member:
-
-  ``path``
-    A string specifying the path to the file on disk, represented with
-    forward slashes.  If the file is inside the top-level build directory
-    then the path is specified relative to that directory.
-    Otherwise the path is absolute.
-
-``isGeneratorProvided``
-  Optional member that is present with boolean value ``true`` if the
-  target is provided by CMake's build system generator rather than by
-  a command in the source code.
-
-``install``
-  Optional member that is present when the target has an :command:`install`
-  rule.  The value is a JSON object with members:
-
-  ``prefix``
-    A JSON object specifying the installation prefix.  It has one member:
-
-    ``path``
-      A string specifying the value of :variable:`CMAKE_INSTALL_PREFIX`.
-
-  ``destinations``
-    A JSON array of entries specifying an install destination path.
-    Each entry is a JSON object with members:
-
-    ``path``
-      A string specifying the install destination path.  The path may
-      be absolute or relative to the install prefix.
-
-    ``backtrace``
-      Optional member that is present when a CMake language backtrace to
-      the :command:`install` command invocation that specified this
-      destination is available.  The value is an unsigned integer 0-based
-      index into the ``backtraceGraph`` member's ``nodes`` array.
-
-``link``
-  Optional member that is present for executables and shared library
-  targets that link into a runtime binary.  The value is a JSON object
-  with members describing the link step:
-
-  ``language``
-    A string specifying the language (e.g. ``C``, ``CXX``, ``Fortran``)
-    of the toolchain is used to invoke the linker.
-
-  ``commandFragments``
-    Optional member that is present when fragments of the link command
-    line invocation are available.  The value is a JSON array of entries
-    specifying ordered fragments.  Each entry is a JSON object with members:
-
-    ``fragment``
-      A string specifying a fragment of the link command line invocation.
-      The value is encoded in the build system's native shell format.
-
-    ``role``
-      A string specifying the role of the fragment's content:
-
-      * ``flags``: link flags.
-      * ``libraries``: link library file paths or flags.
-      * ``libraryPath``: library search path flags.
-      * ``frameworkPath``: macOS framework search path flags.
-
-  ``lto``
-    Optional member that is present with boolean value ``true``
-    when link-time optimization (a.k.a. interprocedural optimization
-    or link-time code generation) is enabled.
-
-  ``sysroot``
-    Optional member that is present when the :variable:`CMAKE_SYSROOT_LINK`
-    or :variable:`CMAKE_SYSROOT` variable is defined.  The value is a
-    JSON object with one member:
-
-    ``path``
-      A string specifying the absolute path to the sysroot, represented
-      with forward slashes.
-
-``archive``
-  Optional member that is present for static library targets.  The value
-  is a JSON object with members describing the archive step:
-
-  ``commandFragments``
-    Optional member that is present when fragments of the archiver command
-    line invocation are available.  The value is a JSON array of entries
-    specifying the fragments.  Each entry is a JSON object with members:
-
-    ``fragment``
-      A string specifying a fragment of the archiver command line invocation.
-      The value is encoded in the build system's native shell format.
-
-    ``role``
-      A string specifying the role of the fragment's content:
-
-      * ``flags``: archiver flags.
-
-  ``lto``
-    Optional member that is present with boolean value ``true``
-    when link-time optimization (a.k.a. interprocedural optimization
-    or link-time code generation) is enabled.
-
-``dependencies``
-  Optional member that is present when the target depends on other targets.
-  The value is a JSON array of entries corresponding to the dependencies.
-  Each entry is a JSON object with members:
-
-  ``id``
-    A string uniquely identifying the target on which this target depends.
-    This matches the main ``id`` member of the other target.
-
-  ``backtrace``
-    Optional member that is present when a CMake language backtrace to
-    the :command:`add_dependencies`, :command:`target_link_libraries`,
-    or other command invocation that created this dependency is
-    available.  The value is an unsigned integer 0-based index into
-    the ``backtraceGraph`` member's ``nodes`` array.
-
-``sources``
-  A JSON array of entries corresponding to the target's source files.
-  Each entry is a JSON object with members:
-
-  ``path``
-    A string specifying the path to the source file on disk, represented
-    with forward slashes.  If the file is inside the top-level source
-    directory then the path is specified relative to that directory.
-    Otherwise the path is absolute.
-
-  ``compileGroupIndex``
-    Optional member that is present when the source is compiled.
-    The value is an unsigned integer 0-based index into the
-    ``compileGroups`` array.
-
-  ``sourceGroupIndex``
-    Optional member that is present when the source is part of a source
-    group either via the :command:`source_group` command or by default.
-    The value is an unsigned integer 0-based index into the
-    ``sourceGroups`` array.
-
-  ``isGenerated``
-    Optional member that is present with boolean value ``true`` if
-    the source is :prop_sf:`GENERATED`.
-
-  ``backtrace``
-    Optional member that is present when a CMake language backtrace to
-    the :command:`target_sources`, :command:`add_executable`,
-    :command:`add_library`, :command:`add_custom_target`, or other
-    command invocation that added this source to the target is
-    available.  The value is an unsigned integer 0-based index into
-    the ``backtraceGraph`` member's ``nodes`` array.
-
-``sourceGroups``
-  Optional member that is present when sources are grouped together by
-  the :command:`source_group` command or by default.  The value is a
-  JSON array of entries corresponding to the groups.  Each entry is
-  a JSON object with members:
-
-  ``name``
-    A string specifying the name of the source group.
-
-  ``sourceIndexes``
-    A JSON array listing the sources belonging to the group.
-    Each entry is an unsigned integer 0-based index into the
-    main ``sources`` array for the target.
-
-``compileGroups``
-  Optional member that is present when the target has sources that compile.
-  The value is a JSON array of entries corresponding to groups of sources
-  that all compile with the same settings.  Each entry is a JSON object
-  with members:
-
-  ``sourceIndexes``
-    A JSON array listing the sources belonging to the group.
-    Each entry is an unsigned integer 0-based index into the
-    main ``sources`` array for the target.
-
-  ``language``
-    A string specifying the language (e.g. ``C``, ``CXX``, ``Fortran``)
-    of the toolchain is used to compile the source file.
-
-  ``compileCommandFragments``
-    Optional member that is present when fragments of the compiler command
-    line invocation are available.  The value is a JSON array of entries
-    specifying ordered fragments.  Each entry is a JSON object with
-    one member:
-
-    ``fragment``
-      A string specifying a fragment of the compile command line invocation.
-      The value is encoded in the build system's native shell format.
-
-  ``includes``
-    Optional member that is present when there are include directories.
-    The value is a JSON array with an entry for each directory.  Each
-    entry is a JSON object with members:
-
-    ``path``
-      A string specifying the path to the include directory,
-      represented with forward slashes.
-
-    ``isSystem``
-      Optional member that is present with boolean value ``true`` if
-      the include directory is marked as a system include directory.
-
-    ``backtrace``
-      Optional member that is present when a CMake language backtrace to
-      the :command:`target_include_directories` or other command invocation
-      that added this include directory is available.  The value is
-      an unsigned integer 0-based index into the ``backtraceGraph``
-      member's ``nodes`` array.
-
-  ``precompileHeaders``
-    Optional member that is present when :command:`target_precompile_headers`
-    or other command invocations set :prop_tgt:`PRECOMPILE_HEADERS` on the
-    target.  The value is a JSON array with an entry for each header.  Each
-    entry is a JSON object with members:
-
-    ``header``
-      Full path to the precompile header file.
-
-    ``backtrace``
-      Optional member that is present when a CMake language backtrace to
-      the :command:`target_precompile_headers` or other command invocation
-      that added this precompiled header is available.  The value is an
-      unsigned integer 0-based index into the ``backtraceGraph`` member's
-      ``nodes`` array.
-
-    This field was added in codemodel version 2.1.
-
-  ``defines``
-    Optional member that is present when there are preprocessor definitions.
-    The value is a JSON array with an entry for each definition.  Each
-    entry is a JSON object with members:
-
-    ``define``
-      A string specifying the preprocessor definition in the format
-      ``<name>[=<value>]``, e.g. ``DEF`` or ``DEF=1``.
-
-    ``backtrace``
-      Optional member that is present when a CMake language backtrace to
-      the :command:`target_compile_definitions` or other command invocation
-      that added this preprocessor definition is available.  The value is
-      an unsigned integer 0-based index into the ``backtraceGraph``
-      member's ``nodes`` array.
-
-  ``sysroot``
-    Optional member that is present when the
-    :variable:`CMAKE_SYSROOT_COMPILE` or :variable:`CMAKE_SYSROOT`
-    variable is defined.  The value is a JSON object with one member:
-
-    ``path``
-      A string specifying the absolute path to the sysroot, represented
-      with forward slashes.
-
-``backtraceGraph``
-  A JSON object describing the graph of backtraces whose nodes are
-  referenced from ``backtrace`` members elsewhere.  The members are:
-
-  ``nodes``
-    A JSON array listing nodes in the backtrace graph.  Each entry
-    is a JSON object with members:
-
-    ``file``
-      An unsigned integer 0-based index into the backtrace ``files`` array.
-
-    ``line``
-      An optional member present when the node represents a line within
-      the file.  The value is an unsigned integer 1-based line number.
-
-    ``command``
-      An optional member present when the node represents a command
-      invocation within the file.  The value is an unsigned integer
-      0-based index into the backtrace ``commands`` array.
-
-    ``parent``
-      An optional member present when the node is not the bottom of
-      the call stack.  The value is an unsigned integer 0-based index
-      of another entry in the backtrace ``nodes`` array.
-
-  ``commands``
-    A JSON array listing command names referenced by backtrace nodes.
-    Each entry is a string specifying a command name.
-
-  ``files``
-    A JSON array listing CMake language files referenced by backtrace nodes.
-    Each entry is a string specifying the path to a file, represented
-    with forward slashes.  If the file is inside the top-level source
-    directory then the path is specified relative to that directory.
-    Otherwise the path is absolute.
-
-Object Kind "cache"
--------------------
-
-The ``cache`` object kind lists cache entries.  These are the
-:ref:`CMake Language Variables` stored in the persistent cache
-(``CMakeCache.txt``) for the build tree.
-
-There is only one ``cache`` object major version, version 2.
-Version 1 does not exist to avoid confusion with that from
-:manual:`cmake-server(7)` mode.
-
-"cache" version 2
-^^^^^^^^^^^^^^^^^
-
-``cache`` object version 2 is a JSON object:
-
-.. code-block:: json
-
-  {
-    "kind": "cache",
-    "version": { "major": 2, "minor": 0 },
-    "entries": [
-      {
-        "name": "BUILD_SHARED_LIBS",
-        "value": "ON",
-        "type": "BOOL",
-        "properties": [
-          {
-            "name": "HELPSTRING",
-            "value": "Build shared libraries"
-          }
-        ]
-      },
-      {
-        "name": "CMAKE_GENERATOR",
-        "value": "Unix Makefiles",
-        "type": "INTERNAL",
-        "properties": [
-          {
-            "name": "HELPSTRING",
-            "value": "Name of generator."
-          }
-        ]
-      }
-    ]
-  }
-
-The members specific to ``cache`` objects are:
-
-``entries``
-  A JSON array whose entries are each a JSON object specifying a
-  cache entry.  The members of each entry are:
-
-  ``name``
-    A string specifying the name of the entry.
-
-  ``value``
-    A string specifying the value of the entry.
-
-  ``type``
-    A string specifying the type of the entry used by
-    :manual:`cmake-gui(1)` to choose a widget for editing.
-
-  ``properties``
-    A JSON array of entries specifying associated
-    :ref:`cache entry properties <Cache Entry Properties>`.
-    Each entry is a JSON object containing members:
-
-    ``name``
-      A string specifying the name of the cache entry property.
-
-    ``value``
-      A string specifying the value of the cache entry property.
-
-Object Kind "cmakeFiles"
-------------------------
-
-The ``cmakeFiles`` object kind lists files used by CMake while
-configuring and generating the build system.  These include the
-``CMakeLists.txt`` files as well as included ``.cmake`` files.
-
-There is only one ``cmakeFiles`` object major version, version 1.
-
-"cmakeFiles" version 1
-^^^^^^^^^^^^^^^^^^^^^^
-
-``cmakeFiles`` object version 1 is a JSON object:
-
-.. code-block:: json
-
-  {
-    "kind": "cmakeFiles",
-    "version": { "major": 1, "minor": 0 },
-    "paths": {
-      "build": "/path/to/top-level-build-dir",
-      "source": "/path/to/top-level-source-dir"
-    },
-    "inputs": [
-      {
-        "path": "CMakeLists.txt"
-      },
-      {
-        "isGenerated": true,
-        "path": "/path/to/top-level-build-dir/.../CMakeSystem.cmake"
-      },
-      {
-        "isExternal": true,
-        "path": "/path/to/external/third-party/module.cmake"
-      },
-      {
-        "isCMake": true,
-        "isExternal": true,
-        "path": "/path/to/cmake/Modules/CMakeGenericSystem.cmake"
-      }
-    ]
-  }
-
-The members specific to ``cmakeFiles`` objects are:
-
-``paths``
-  A JSON object containing members:
-
-  ``source``
-    A string specifying the absolute path to the top-level source directory,
-    represented with forward slashes.
-
-  ``build``
-    A string specifying the absolute path to the top-level build directory,
-    represented with forward slashes.
-
-``inputs``
-  A JSON array whose entries are each a JSON object specifying an input
-  file used by CMake when configuring and generating the build system.
-  The members of each entry are:
-
-  ``path``
-    A string specifying the path to an input file to CMake, represented
-    with forward slashes.  If the file is inside the top-level source
-    directory then the path is specified relative to that directory.
-    Otherwise the path is absolute.
-
-  ``isGenerated``
-    Optional member that is present with boolean value ``true``
-    if the path specifies a file that is under the top-level
-    build directory and the build is out-of-source.
-    This member is not available on in-source builds.
-
-  ``isExternal``
-    Optional member that is present with boolean value ``true``
-    if the path specifies a file that is not under the top-level
-    source or build directories.
-
-  ``isCMake``
-    Optional member that is present with boolean value ``true``
-    if the path specifies a file in the CMake installation.
diff --git a/share/cmake-3.18/Help/manual/cmake-generator-expressions.7.rst b/share/cmake-3.18/Help/manual/cmake-generator-expressions.7.rst
deleted file mode 100644
index 124da44..0000000
--- a/share/cmake-3.18/Help/manual/cmake-generator-expressions.7.rst
+++ /dev/null
@@ -1,791 +0,0 @@
-.. cmake-manual-description: CMake Generator Expressions
-
-cmake-generator-expressions(7)
-******************************
-
-.. only:: html
-
-   .. contents::
-
-Introduction
-============
-
-Generator expressions are evaluated during build system generation to produce
-information specific to each build configuration.
-
-Generator expressions are allowed in the context of many target properties,
-such as :prop_tgt:`LINK_LIBRARIES`, :prop_tgt:`INCLUDE_DIRECTORIES`,
-:prop_tgt:`COMPILE_DEFINITIONS` and others.  They may also be used when using
-commands to populate those properties, such as :command:`target_link_libraries`,
-:command:`target_include_directories`, :command:`target_compile_definitions`
-and others.
-
-They enable conditional linking, conditional definitions used when compiling,
-conditional include directories, and more.  The conditions may be based on
-the build configuration, target properties, platform information or any other
-queryable information.
-
-Generator expressions have the form ``$<...>``.  To avoid confusion, this page
-deviates from most of the CMake documentation in that it omits angular brackets
-``<...>`` around placeholders like ``condition``, ``string``, ``target``,
-among others.
-
-Generator expressions can be nested, as shown in most of the examples below.
-
-.. _`Boolean Generator Expressions`:
-
-Boolean Generator Expressions
-=============================
-
-Boolean expressions evaluate to either ``0`` or ``1``.
-They are typically used to construct the condition in a :ref:`conditional
-generator expression<Conditional Generator Expressions>`.
-
-Available boolean expressions are:
-
-Logical Operators
------------------
-
-``$<BOOL:string>``
-  Converts ``string`` to ``0`` or ``1``. Evaluates to ``0`` if any of the
-  following is true:
-
-  * ``string`` is empty,
-  * ``string`` is a case-insensitive equal of
-    ``0``, ``FALSE``, ``OFF``, ``N``, ``NO``, ``IGNORE``, or ``NOTFOUND``, or
-  * ``string`` ends in the suffix ``-NOTFOUND`` (case-sensitive).
-
-  Otherwise evaluates to ``1``.
-
-``$<AND:conditions>``
-  where ``conditions`` is a comma-separated list of boolean expressions.
-  Evaluates to ``1`` if all conditions are ``1``.
-  Otherwise evaluates to ``0``.
-
-``$<OR:conditions>``
-  where ``conditions`` is a comma-separated list of boolean expressions.
-  Evaluates to ``1`` if at least one of the conditions is ``1``.
-  Otherwise evaluates to ``0``.
-
-``$<NOT:condition>``
-  ``0`` if ``condition`` is ``1``, else ``1``.
-
-String Comparisons
-------------------
-
-``$<STREQUAL:string1,string2>``
-  ``1`` if ``string1`` and ``string2`` are equal, else ``0``.
-  The comparison is case-sensitive.  For a case-insensitive comparison,
-  combine with a :ref:`string transforming generator expression
-  <String Transforming Generator Expressions>`,
-
-  .. code-block:: cmake
-
-    $<STREQUAL:$<UPPER_CASE:${foo}>,"BAR"> # "1" if ${foo} is any of "BAR", "Bar", "bar", ...
-
-``$<EQUAL:value1,value2>``
-  ``1`` if ``value1`` and ``value2`` are numerically equal, else ``0``.
-``$<IN_LIST:string,list>``
-  ``1`` if ``string`` is member of the semicolon-separated ``list``, else ``0``.
-  Uses case-sensitive comparisons.
-``$<VERSION_LESS:v1,v2>``
-  ``1`` if ``v1`` is a version less than ``v2``, else ``0``.
-``$<VERSION_GREATER:v1,v2>``
-  ``1`` if ``v1`` is a version greater than ``v2``, else ``0``.
-``$<VERSION_EQUAL:v1,v2>``
-  ``1`` if ``v1`` is the same version as ``v2``, else ``0``.
-``$<VERSION_LESS_EQUAL:v1,v2>``
-  ``1`` if ``v1`` is a version less than or equal to ``v2``, else ``0``.
-``$<VERSION_GREATER_EQUAL:v1,v2>``
-  ``1`` if ``v1`` is a version greater than or equal to ``v2``, else ``0``.
-
-
-Variable Queries
-----------------
-
-``$<TARGET_EXISTS:target>``
-  ``1`` if ``target`` exists, else ``0``.
-``$<CONFIG:cfg>``
-  ``1`` if config is ``cfg``, else ``0``. This is a case-insensitive comparison.
-  The mapping in :prop_tgt:`MAP_IMPORTED_CONFIG_<CONFIG>` is also considered by
-  this expression when it is evaluated on a property on an :prop_tgt:`IMPORTED`
-  target.
-``$<PLATFORM_ID:platform_ids>``
-  where ``platform_ids`` is a comma-separated list.
-  ``1`` if the CMake's platform id matches any one of the entries in
-  ``platform_ids``, otherwise ``0``.
-  See also the :variable:`CMAKE_SYSTEM_NAME` variable.
-``$<C_COMPILER_ID:compiler_ids>``
-  where ``compiler_ids`` is a comma-separated list.
-  ``1`` if the CMake's compiler id of the C compiler matches any one
-  of the entries in ``compiler_ids``, otherwise ``0``.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
-``$<CXX_COMPILER_ID:compiler_ids>``
-  where ``compiler_ids`` is a comma-separated list.
-  ``1`` if the CMake's compiler id of the CXX compiler matches any one
-  of the entries in ``compiler_ids``, otherwise ``0``.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
-``$<CUDA_COMPILER_ID:compiler_ids>``
-  where ``compiler_ids`` is a comma-separated list.
-  ``1`` if the CMake's compiler id of the CUDA compiler matches any one
-  of the entries in ``compiler_ids``, otherwise ``0``.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
-``$<OBJC_COMPILER_ID:compiler_ids>``
-  where ``compiler_ids`` is a comma-separated list.
-  ``1`` if the CMake's compiler id of the Objective-C compiler matches any one
-  of the entries in ``compiler_ids``, otherwise ``0``.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
-``$<OBJCXX_COMPILER_ID:compiler_ids>``
-  where ``compiler_ids`` is a comma-separated list.
-  ``1`` if the CMake's compiler id of the Objective-C++ compiler matches any one
-  of the entries in ``compiler_ids``, otherwise ``0``.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
-``$<Fortran_COMPILER_ID:compiler_ids>``
-  where ``compiler_ids`` is a comma-separated list.
-  ``1`` if the CMake's compiler id of the Fortran compiler matches any one
-  of the entries in ``compiler_ids``, otherwise ``0``.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
-``$<C_COMPILER_VERSION:version>``
-  ``1`` if the version of the C compiler matches ``version``, otherwise ``0``.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
-``$<CXX_COMPILER_VERSION:version>``
-  ``1`` if the version of the CXX compiler matches ``version``, otherwise ``0``.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
-``$<CUDA_COMPILER_VERSION:version>``
-  ``1`` if the version of the CXX compiler matches ``version``, otherwise ``0``.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
-``$<OBJC_COMPILER_VERSION:version>``
-  ``1`` if the version of the OBJC compiler matches ``version``, otherwise ``0``.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
-``$<OBJCXX_COMPILER_VERSION:version>``
-  ``1`` if the version of the OBJCXX compiler matches ``version``, otherwise ``0``.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
-``$<Fortran_COMPILER_VERSION:version>``
-  ``1`` if the version of the Fortran compiler matches ``version``, otherwise ``0``.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
-``$<TARGET_POLICY:policy>``
-  ``1`` if the ``policy`` was NEW when the 'head' target was created,
-  else ``0``.  If the ``policy`` was not set, the warning message for the policy
-  will be emitted. This generator expression only works for a subset of
-  policies.
-``$<COMPILE_FEATURES:features>``
-  where ``features`` is a comma-spearated list.
-  Evaluates to ``1`` if all of the ``features`` are available for the 'head'
-  target, and ``0`` otherwise. If this expression is used while evaluating
-  the link implementation of a target and if any dependency transitively
-  increases the required :prop_tgt:`C_STANDARD` or :prop_tgt:`CXX_STANDARD`
-  for the 'head' target, an error is reported.  See the
-  :manual:`cmake-compile-features(7)` manual for information on
-  compile features and a list of supported compilers.
-
-.. _`Boolean COMPILE_LANGUAGE Generator Expression`:
-
-``$<COMPILE_LANG_AND_ID:language,compiler_ids>``
-  ``1`` when the language used for compilation unit matches ``language`` and
-  the CMake's compiler id of the language compiler matches any one of the
-  entries in ``compiler_ids``, otherwise ``0``. This expression is a short form
-  for the combination of ``$<COMPILE_LANGUAGE:language>`` and
-  ``$<LANG_COMPILER_ID:compiler_ids>``. This expression may be used to specify
-  compile options, compile definitions, and include directories for source files of a
-  particular language and compiler combination in a target. For example:
-
-  .. code-block:: cmake
-
-    add_executable(myapp main.cpp foo.c bar.cpp zot.cu)
-    target_compile_definitions(myapp
-      PRIVATE $<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:COMPILING_CXX_WITH_CLANG>
-              $<$<COMPILE_LANG_AND_ID:CXX,Intel>:COMPILING_CXX_WITH_INTEL>
-              $<$<COMPILE_LANG_AND_ID:C,Clang>:COMPILING_C_WITH_CLANG>
-    )
-
-  This specifies the use of different compile definitions based on both
-  the compiler id and compilation language. This example will have a
-  ``COMPILING_CXX_WITH_CLANG`` compile definition when Clang is the CXX
-  compiler, and ``COMPILING_CXX_WITH_INTEL`` when Intel is the CXX compiler.
-  Likewise when the C compiler is Clang it will only see the  ``COMPILING_C_WITH_CLANG``
-  definition.
-
-  Without the ``COMPILE_LANG_AND_ID`` generator expression the same logic
-  would be expressed as:
-
-  .. code-block:: cmake
-
-    target_compile_definitions(myapp
-      PRIVATE $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CXX_COMPILER_ID:AppleClang,Clang>>:COMPILING_CXX_WITH_CLANG>
-              $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CXX_COMPILER_ID:Intel>>:COMPILING_CXX_WITH_INTEL>
-              $<$<AND:$<COMPILE_LANGUAGE:C>,$<C_COMPILER_ID:Clang>>:COMPILING_C_WITH_CLANG>
-    )
-
-``$<COMPILE_LANGUAGE:languages>``
-  ``1`` when the language used for compilation unit matches any of the entries
-  in ``languages``, otherwise ``0``.  This expression may be used to specify
-  compile options, compile definitions, and include directories for source files of a
-  particular language in a target. For example:
-
-  .. code-block:: cmake
-
-    add_executable(myapp main.cpp foo.c bar.cpp zot.cu)
-    target_compile_options(myapp
-      PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-fno-exceptions>
-    )
-    target_compile_definitions(myapp
-      PRIVATE $<$<COMPILE_LANGUAGE:CXX>:COMPILING_CXX>
-              $<$<COMPILE_LANGUAGE:CUDA>:COMPILING_CUDA>
-    )
-    target_include_directories(myapp
-      PRIVATE $<$<COMPILE_LANGUAGE:CXX,CUDA>:/opt/foo/headers>
-    )
-
-  This specifies the use of the ``-fno-exceptions`` compile option,
-  ``COMPILING_CXX`` compile definition, and ``cxx_headers`` include
-  directory for C++ only (compiler id checks elided).  It also specifies
-  a ``COMPILING_CUDA`` compile definition for CUDA.
-
-  Note that with :ref:`Visual Studio Generators` and :generator:`Xcode` there
-  is no way to represent target-wide compile definitions or include directories
-  separately for ``C`` and ``CXX`` languages.
-  Also, with :ref:`Visual Studio Generators` there is no way to represent
-  target-wide flags separately for ``C`` and ``CXX`` languages.  Under these
-  generators, expressions for both C and C++ sources will be evaluated
-  using ``CXX`` if there are any C++ sources and otherwise using ``C``.
-  A workaround is to create separate libraries for each source file language
-  instead:
-
-  .. code-block:: cmake
-
-    add_library(myapp_c foo.c)
-    add_library(myapp_cxx bar.cpp)
-    target_compile_options(myapp_cxx PUBLIC -fno-exceptions)
-    add_executable(myapp main.cpp)
-    target_link_libraries(myapp myapp_c myapp_cxx)
-
-.. _`Boolean LINK_LANGUAGE Generator Expression`:
-
-``$<LINK_LANG_AND_ID:language,compiler_ids>``
-  ``1`` when the language used for link step matches ``language`` and the
-  CMake's compiler id of the language linker matches any one of the entries
-  in ``compiler_ids``, otherwise ``0``. This expression is a short form for the
-  combination of ``$<LINK_LANGUAGE:language>`` and
-  ``$<LANG_COMPILER_ID:compiler_ids>``. This expression may be used to specify
-  link libraries, link options, link directories and link dependencies of a
-  particular language and linker combination in a target. For example:
-
-  .. code-block:: cmake
-
-    add_library(libC_Clang ...)
-    add_library(libCXX_Clang ...)
-    add_library(libC_Intel ...)
-    add_library(libCXX_Intel ...)
-
-    add_executable(myapp main.c)
-    if (CXX_CONFIG)
-      target_sources(myapp PRIVATE file.cxx)
-    endif()
-    target_link_libraries(myapp
-      PRIVATE $<$<LINK_LANG_AND_ID:CXX,Clang,AppleClang>:libCXX_Clang>
-              $<$<LINK_LANG_AND_ID:C,Clang,AppleClang>:libC_Clang>
-              $<$<LINK_LANG_AND_ID:CXX,Intel>:libCXX_Intel>
-              $<$<LINK_LANG_AND_ID:C,Intel>:libC_Intel>)
-
-  This specifies the use of different link libraries based on both the
-  compiler id and link language. This example will have target ``libCXX_Clang``
-  as link dependency when ``Clang`` or ``AppleClang`` is the ``CXX``
-  linker, and ``libCXX_Intel`` when ``Intel`` is the ``CXX`` linker.
-  Likewise when the ``C`` linker is ``Clang`` or ``AppleClang``, target
-  ``libC_Clang`` will be added as link dependency and ``libC_Intel`` when
-  ``Intel`` is the ``C`` linker.
-
-  See :ref:`the note related to
-  <Constraints LINK_LANGUAGE Generator Expression>`
-  ``$<LINK_LANGUAGE:language>`` for constraints about the usage of this
-  generator expression.
-
-``$<LINK_LANGUAGE:languages>``
-  ``1`` when the language used for link step matches any of the entries
-  in ``languages``, otherwise ``0``.  This expression may be used to specify
-  link libraries, link options, link directories and link dependencies of a
-  particular language in a target. For example:
-
-  .. code-block:: cmake
-
-    add_library(api_C ...)
-    add_library(api_CXX ...)
-    add_library(api INTERFACE)
-    target_link_options(api INTERFACE $<$<LINK_LANGUAGE:C>:-opt_c>
-                                        $<$<LINK_LANGUAGE:CXX>:-opt_cxx>)
-    target_link_libraries(api INTERFACE $<$<LINK_LANGUAGE:C>:api_C>
-                                        $<$<LINK_LANGUAGE:CXX>:api_CXX>)
-
-    add_executable(myapp1 main.c)
-    target_link_options(myapp1 PRIVATE api)
-
-    add_executable(myapp2 main.cpp)
-    target_link_options(myapp2 PRIVATE api)
-
-  This specifies to use the ``api`` target for linking targets ``myapp1`` and
-  ``myapp2``. In practice, ``myapp1`` will link with target ``api_C`` and
-  option ``-opt_c`` because it will use ``C`` as link language. And ``myapp2``
-  will link with ``api_CXX`` and option ``-opt_cxx`` because ``CXX`` will be
-  the link language.
-
-  .. _`Constraints LINK_LANGUAGE Generator Expression`:
-
-  .. note::
-
-    To determine the link language of a target, it is required to collect,
-    transitively, all the targets which will be linked to it. So, for link
-    libraries properties, a double evaluation will be done. During the first
-    evaluation, ``$<LINK_LANGUAGE:..>`` expressions will always return ``0``.
-    The link language computed after this first pass will be used to do the
-    second pass. To avoid inconsistency, it is required that the second pass
-    do not change the link language. Moreover, to avoid unexpected
-    side-effects, it is required to specify complete entities as part of the
-    ``$<LINK_LANGUAGE:..>`` expression. For example:
-
-    .. code-block:: cmake
-
-      add_library(lib STATIC file.cxx)
-      add_library(libother STATIC file.c)
-
-      # bad usage
-      add_executable(myapp1 main.c)
-      target_link_libraries(myapp1 PRIVATE lib$<$<LINK_LANGUAGE:C>:other>)
-
-      # correct usage
-      add_executable(myapp2 main.c)
-      target_link_libraries(myapp2 PRIVATE $<$<LINK_LANGUAGE:C>:libother>)
-
-    In this example, for ``myapp1``, the first pass will, unexpectedly,
-    determine that the link language is ``CXX`` because the evaluation of the
-    generator expression will be an empty string so ``myapp1`` will depends on
-    target ``lib`` which is ``C++``. On the contrary, for ``myapp2``, the first
-    evaluation will give ``C`` as link language, so the second pass will
-    correctly add target ``libother`` as link dependency.
-
-``$<DEVICE_LINK:list>``
-  Returns the list if it is the device link step, an empty list otherwise.
-  The device link step is controlled by :prop_tgt:`CUDA_SEPARABLE_COMPILATION`
-  and :prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` properties and
-  policy :policy:`CMP0105`. This expression can only be used to specify link
-  options.
-
-``$<HOST_LINK:list>``
-  Returns the list if it is the normal link step, an empty list otherwise.
-  This expression is mainly useful when a device link step is also involved
-  (see ``$<DEVICE_LINK:list>`` generator expression). This expression can only
-  be used to specify link options.
-
-String-Valued Generator Expressions
-===================================
-
-These expressions expand to some string.
-For example,
-
-.. code-block:: cmake
-
-  include_directories(/usr/include/$<CXX_COMPILER_ID>/)
-
-expands to ``/usr/include/GNU/`` or ``/usr/include/Clang/`` etc, depending on
-the compiler identifier.
-
-String-valued expressions may also be combined with other expressions.
-Here an example for a string-valued expression within a boolean expressions
-within a conditional expression:
-
-.. code-block:: cmake
-
-  $<$<VERSION_LESS:$<CXX_COMPILER_VERSION>,4.2.0>:OLD_COMPILER>
-
-expands to ``OLD_COMPILER`` if the
-:variable:`CMAKE_CXX_COMPILER_VERSION <CMAKE_<LANG>_COMPILER_VERSION>` is less
-than 4.2.0.
-
-And here two nested string-valued expressions:
-
-.. code-block:: cmake
-
-  -I$<JOIN:$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>, -I>
-
-generates a string of the entries in the :prop_tgt:`INCLUDE_DIRECTORIES` target
-property with each entry preceded by ``-I``.
-
-Expanding on the previous example, if one first wants to check if the
-``INCLUDE_DIRECTORIES`` property is non-empty, then it is advisable to
-introduce a helper variable to keep the code readable:
-
-.. code-block:: cmake
-
-  set(prop "$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>") # helper variable
-  $<$<BOOL:${prop}>:-I$<JOIN:${prop}, -I>>
-
-The following string-valued generator expressions are available:
-
-Escaped Characters
-------------------
-
-String literals to escape the special meaning a character would otherwise have:
-
-``$<ANGLE-R>``
-  A literal ``>``. Used for example to compare strings that contain a ``>``.
-``$<COMMA>``
-  A literal ``,``. Used for example to compare strings which contain a ``,``.
-``$<SEMICOLON>``
-  A literal ``;``. Used to prevent list expansion on an argument with ``;``.
-
-.. _`Conditional Generator Expressions`:
-
-Conditional Expressions
------------------------
-
-Conditional generator expressions depend on a boolean condition
-that must be ``0`` or ``1``.
-
-``$<condition:true_string>``
-  Evaluates to ``true_string`` if ``condition`` is ``1``.
-  Otherwise evaluates to the empty string.
-
-``$<IF:condition,true_string,false_string>``
-  Evaluates to ``true_string`` if ``condition`` is ``1``.
-  Otherwise evaluates to ``false_string``.
-
-Typically, the ``condition`` is a :ref:`boolean generator expression
-<Boolean Generator Expressions>`.  For instance,
-
-.. code-block:: cmake
-
-  $<$<CONFIG:Debug>:DEBUG_MODE>
-
-expands to ``DEBUG_MODE`` when the ``Debug`` configuration is used, and
-otherwise expands to the empty string.
-
-.. _`String Transforming Generator Expressions`:
-
-String Transformations
-----------------------
-
-``$<JOIN:list,string>``
-  Joins the list with the content of ``string``.
-``$<REMOVE_DUPLICATES:list>``
-  Removes duplicated items in the given ``list``.
-``$<FILTER:list,INCLUDE|EXCLUDE,regex>``
-  Includes or removes items from ``list`` that match the regular expression ``regex``.
-``$<LOWER_CASE:string>``
-  Content of ``string`` converted to lower case.
-``$<UPPER_CASE:string>``
-  Content of ``string`` converted to upper case.
-
-``$<GENEX_EVAL:expr>``
-  Content of ``expr`` evaluated as a generator expression in the current
-  context. This enables consumption of generator expressions whose
-  evaluation results itself in generator expressions.
-``$<TARGET_GENEX_EVAL:tgt,expr>``
-  Content of ``expr`` evaluated as a generator expression in the context of
-  ``tgt`` target. This enables consumption of custom target properties that
-  themselves contain generator expressions.
-
-  Having the capability to evaluate generator expressions is very useful when
-  you want to manage custom properties supporting generator expressions.
-  For example:
-
-  .. code-block:: cmake
-
-    add_library(foo ...)
-
-    set_property(TARGET foo PROPERTY
-      CUSTOM_KEYS $<$<CONFIG:DEBUG>:FOO_EXTRA_THINGS>
-    )
-
-    add_custom_target(printFooKeys
-      COMMAND ${CMAKE_COMMAND} -E echo $<TARGET_PROPERTY:foo,CUSTOM_KEYS>
-    )
-
-  This naive implementation of the ``printFooKeys`` custom command is wrong
-  because ``CUSTOM_KEYS`` target property is not evaluated and the content
-  is passed as is (i.e. ``$<$<CONFIG:DEBUG>:FOO_EXTRA_THINGS>``).
-
-  To have the expected result (i.e. ``FOO_EXTRA_THINGS`` if config is
-  ``Debug``), it is required to evaluate the output of
-  ``$<TARGET_PROPERTY:foo,CUSTOM_KEYS>``:
-
-  .. code-block:: cmake
-
-    add_custom_target(printFooKeys
-      COMMAND ${CMAKE_COMMAND} -E
-        echo $<TARGET_GENEX_EVAL:foo,$<TARGET_PROPERTY:foo,CUSTOM_KEYS>>
-    )
-
-Variable Queries
-----------------
-
-``$<CONFIG>``
-  Configuration name.
-``$<CONFIGURATION>``
-  Configuration name. Deprecated since CMake 3.0. Use ``CONFIG`` instead.
-``$<PLATFORM_ID>``
-  The current system's CMake platform id.
-  See also the :variable:`CMAKE_SYSTEM_NAME` variable.
-``$<C_COMPILER_ID>``
-  The CMake's compiler id of the C compiler used.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
-``$<CXX_COMPILER_ID>``
-  The CMake's compiler id of the CXX compiler used.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
-``$<CUDA_COMPILER_ID>``
-  The CMake's compiler id of the CUDA compiler used.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
-``$<OBJC_COMPILER_ID>``
-  The CMake's compiler id of the OBJC compiler used.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
-``$<OBJCXX_COMPILER_ID>``
-  The CMake's compiler id of the OBJCXX compiler used.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
-``$<Fortran_COMPILER_ID>``
-  The CMake's compiler id of the Fortran compiler used.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
-``$<C_COMPILER_VERSION>``
-  The version of the C compiler used.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
-``$<CXX_COMPILER_VERSION>``
-  The version of the CXX compiler used.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
-``$<CUDA_COMPILER_VERSION>``
-  The version of the CUDA compiler used.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
-``$<OBJC_COMPILER_VERSION>``
-  The version of the OBJC compiler used.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
-``$<OBJCXX_COMPILER_VERSION>``
-  The version of the OBJCXX compiler used.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
-``$<Fortran_COMPILER_VERSION>``
-  The version of the Fortran compiler used.
-  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
-``$<COMPILE_LANGUAGE>``
-  The compile language of source files when evaluating compile options.
-  See :ref:`the related boolean expression
-  <Boolean COMPILE_LANGUAGE Generator Expression>`
-  ``$<COMPILE_LANGUAGE:language>``
-  for notes about the portability of this generator expression.
-``$<LINK_LANGUAGE>``
-  The link language of target when evaluating link options.
-  See :ref:`the related boolean expression
-  <Boolean LINK_LANGUAGE Generator Expression>` ``$<LINK_LANGUAGE:language>``
-  for notes about the portability of this generator expression.
-
-  .. note::
-
-    This generator expression is not supported by the link libraries
-    properties to avoid side-effects due to the double evaluation of
-    these properties.
-
-Target-Dependent Queries
-------------------------
-
-These queries refer to a target ``tgt``. This can be any runtime artifact,
-namely:
-
-* an executable target created by :command:`add_executable`
-* a shared library target (``.so``, ``.dll`` but not their ``.lib`` import library)
-  created by :command:`add_library`
-* a static library target created by :command:`add_library`
-
-In the following, "the ``tgt`` filename" means the name of the ``tgt``
-binary file. This has to be distinguished from "the target name",
-which is just the string ``tgt``.
-
-``$<TARGET_NAME_IF_EXISTS:tgt>``
-  The target name ``tgt`` if the target exists, an empty string otherwise.
-``$<TARGET_FILE:tgt>``
-  Full path to the ``tgt`` binary file.
-``$<TARGET_FILE_BASE_NAME:tgt>``
-  Base name of ``tgt``, i.e. ``$<TARGET_FILE_NAME:tgt>`` without prefix and
-  suffix.
-  For example, if the ``tgt`` filename is ``libbase.so``, the base name is ``base``.
-
-  See also the :prop_tgt:`OUTPUT_NAME`, :prop_tgt:`ARCHIVE_OUTPUT_NAME`,
-  :prop_tgt:`LIBRARY_OUTPUT_NAME` and :prop_tgt:`RUNTIME_OUTPUT_NAME`
-  target properties and their configuration specific variants
-  :prop_tgt:`OUTPUT_NAME_<CONFIG>`, :prop_tgt:`ARCHIVE_OUTPUT_NAME_<CONFIG>`,
-  :prop_tgt:`LIBRARY_OUTPUT_NAME_<CONFIG>` and
-  :prop_tgt:`RUNTIME_OUTPUT_NAME_<CONFIG>`.
-
-  The :prop_tgt:`<CONFIG>_POSTFIX` and :prop_tgt:`DEBUG_POSTFIX` target
-  properties can also be considered.
-
-  Note that ``tgt`` is not added as a dependency of the target this
-  expression is evaluated on.
-``$<TARGET_FILE_PREFIX:tgt>``
-  Prefix of the ``tgt`` filename (such as ``lib``).
-
-  See also the :prop_tgt:`PREFIX` target property.
-
-  Note that ``tgt`` is not added as a dependency of the target this
-  expression is evaluated on.
-``$<TARGET_FILE_SUFFIX:tgt>``
-  Suffix of the ``tgt`` filename (extension such as ``.so`` or ``.exe``).
-
-  See also the :prop_tgt:`SUFFIX` target property.
-
-  Note that ``tgt`` is not added as a dependency of the target this
-  expression is evaluated on.
-``$<TARGET_FILE_NAME:tgt>``
-  The ``tgt`` filename.
-``$<TARGET_FILE_DIR:tgt>``
-  Directory of the ``tgt`` binary file.
-``$<TARGET_LINKER_FILE:tgt>``
-  File used when linking to the ``tgt`` target.  This will usually
-  be the library that ``tgt`` represents (``.a``, ``.lib``, ``.so``),
-  but for a shared library on DLL platforms, it would be the ``.lib``
-  import library associated with the DLL.
-``$<TARGET_LINKER_FILE_BASE_NAME:tgt>``
-  Base name of file used to link the target ``tgt``, i.e.
-  ``$<TARGET_LINKER_FILE_NAME:tgt>`` without prefix and suffix. For example,
-  if target file name is ``libbase.a``, the base name is ``base``.
-
-  See also the :prop_tgt:`OUTPUT_NAME`, :prop_tgt:`ARCHIVE_OUTPUT_NAME`,
-  and :prop_tgt:`LIBRARY_OUTPUT_NAME` target properties and their configuration
-  specific variants :prop_tgt:`OUTPUT_NAME_<CONFIG>`,
-  :prop_tgt:`ARCHIVE_OUTPUT_NAME_<CONFIG>` and
-  :prop_tgt:`LIBRARY_OUTPUT_NAME_<CONFIG>`.
-
-  The :prop_tgt:`<CONFIG>_POSTFIX` and :prop_tgt:`DEBUG_POSTFIX` target
-  properties can also be considered.
-
-  Note that ``tgt`` is not added as a dependency of the target this
-  expression is evaluated on.
-``$<TARGET_LINKER_FILE_PREFIX:tgt>``
-  Prefix of file used to link target ``tgt``.
-
-  See also the :prop_tgt:`PREFIX` and :prop_tgt:`IMPORT_PREFIX` target
-  properties.
-
-  Note that ``tgt`` is not added as a dependency of the target this
-  expression is evaluated on.
-``$<TARGET_LINKER_FILE_SUFFIX:tgt>``
-  Suffix of file used to link where ``tgt`` is the name of a target.
-
-  The suffix corresponds to the file extension (such as ".so" or ".lib").
-
-  See also the :prop_tgt:`SUFFIX` and :prop_tgt:`IMPORT_SUFFIX` target
-  properties.
-
-  Note that ``tgt`` is not added as a dependency of the target this
-  expression is evaluated on.
-``$<TARGET_LINKER_FILE_NAME:tgt>``
-  Name of file used to link target ``tgt``.
-``$<TARGET_LINKER_FILE_DIR:tgt>``
-  Directory of file used to link target ``tgt``.
-``$<TARGET_SONAME_FILE:tgt>``
-  File with soname (``.so.3``) where ``tgt`` is the name of a target.
-``$<TARGET_SONAME_FILE_NAME:tgt>``
-  Name of file with soname (``.so.3``).
-``$<TARGET_SONAME_FILE_DIR:tgt>``
-  Directory of with soname (``.so.3``).
-``$<TARGET_PDB_FILE:tgt>``
-  Full path to the linker generated program database file (.pdb)
-  where ``tgt`` is the name of a target.
-
-  See also the :prop_tgt:`PDB_NAME` and :prop_tgt:`PDB_OUTPUT_DIRECTORY`
-  target properties and their configuration specific variants
-  :prop_tgt:`PDB_NAME_<CONFIG>` and :prop_tgt:`PDB_OUTPUT_DIRECTORY_<CONFIG>`.
-``$<TARGET_PDB_FILE_BASE_NAME:tgt>``
-  Base name of the linker generated program database file (.pdb)
-  where ``tgt`` is the name of a target.
-
-  The base name corresponds to the target PDB file name (see
-  ``$<TARGET_PDB_FILE_NAME:tgt>``) without prefix and suffix. For example,
-  if target file name is ``base.pdb``, the base name is ``base``.
-
-  See also the :prop_tgt:`PDB_NAME` target property and its configuration
-  specific variant :prop_tgt:`PDB_NAME_<CONFIG>`.
-
-  The :prop_tgt:`<CONFIG>_POSTFIX` and :prop_tgt:`DEBUG_POSTFIX` target
-  properties can also be considered.
-
-  Note that ``tgt`` is not added as a dependency of the target this
-  expression is evaluated on.
-``$<TARGET_PDB_FILE_NAME:tgt>``
-  Name of the linker generated program database file (.pdb).
-``$<TARGET_PDB_FILE_DIR:tgt>``
-  Directory of the linker generated program database file (.pdb).
-``$<TARGET_BUNDLE_DIR:tgt>``
-  Full path to the bundle directory (``my.app``, ``my.framework``, or
-  ``my.bundle``) where ``tgt`` is the name of a target.
-``$<TARGET_BUNDLE_CONTENT_DIR:tgt>``
-  Full path to the bundle content directory where ``tgt`` is the name of a
-  target. For the macOS SDK it leads to ``my.app/Contents``, ``my.framework``,
-  or ``my.bundle/Contents``. For all other SDKs (e.g. iOS) it leads to
-  ``my.app``, ``my.framework``, or ``my.bundle`` due to the flat bundle
-  structure.
-``$<TARGET_PROPERTY:tgt,prop>``
-  Value of the property ``prop`` on the target ``tgt``.
-
-  Note that ``tgt`` is not added as a dependency of the target this
-  expression is evaluated on.
-``$<TARGET_PROPERTY:prop>``
-  Value of the property ``prop`` on the target for which the expression
-  is being evaluated. Note that for generator expressions in
-  :ref:`Target Usage Requirements` this is the consuming target rather
-  than the target specifying the requirement.
-``$<INSTALL_PREFIX>``
-  Content of the install prefix when the target is exported via
-  :command:`install(EXPORT)`, or when evaluated in
-  :prop_tgt:`INSTALL_NAME_DIR`, and empty otherwise.
-
-Output-Related Expressions
---------------------------
-
-``$<TARGET_NAME:...>``
-  Marks ``...`` as being the name of a target.  This is required if exporting
-  targets to multiple dependent export sets.  The ``...`` must be a literal
-  name of a target- it may not contain generator expressions.
-``$<LINK_ONLY:...>``
-  Content of ``...`` except when evaluated in a link interface while
-  propagating :ref:`Target Usage Requirements`, in which case it is the
-  empty string.
-  Intended for use only in an :prop_tgt:`INTERFACE_LINK_LIBRARIES` target
-  property, perhaps via the :command:`target_link_libraries` command,
-  to specify private link dependencies without other usage requirements.
-``$<INSTALL_INTERFACE:...>``
-  Content of ``...`` when the property is exported using :command:`install(EXPORT)`,
-  and empty otherwise.
-``$<BUILD_INTERFACE:...>``
-  Content of ``...`` when the property is exported using :command:`export`, or
-  when the target is used by another target in the same buildsystem. Expands to
-  the empty string otherwise.
-``$<MAKE_C_IDENTIFIER:...>``
-  Content of ``...`` converted to a C identifier.  The conversion follows the
-  same behavior as :command:`string(MAKE_C_IDENTIFIER)`.
-``$<TARGET_OBJECTS:objLib>``
-  List of objects resulting from build of ``objLib``.
-``$<SHELL_PATH:...>``
-  Content of ``...`` converted to shell path style. For example, slashes are
-  converted to backslashes in Windows shells and drive letters are converted
-  to posix paths in MSYS shells. The ``...`` must be an absolute path.
-  The ``...`` may be a :ref:`semicolon-separated list <CMake Language Lists>`
-  of paths, in which case each path is converted individually and a result
-  list is generated using the shell path separator (``:`` on POSIX and
-  ``;`` on Windows).  Be sure to enclose the argument containing this genex
-  in double quotes in CMake source code so that ``;`` does not split arguments.
-
-Debugging
-=========
-
-Since generator expressions are evaluated during generation of the buildsystem,
-and not during processing of ``CMakeLists.txt`` files, it is not possible to
-inspect their result with the :command:`message()` command.
-
-One possible way to generate debug messages is to add a custom target,
-
-.. code-block:: cmake
-
-  add_custom_target(genexdebug COMMAND ${CMAKE_COMMAND} -E echo "$<...>")
-
-The shell command ``make genexdebug`` (invoked after execution of ``cmake``)
-would then print the result of ``$<...>``.
-
-Another way is to write debug messages to a file:
-
-.. code-block:: cmake
-
-  file(GENERATE OUTPUT filename CONTENT "$<...>")
diff --git a/share/cmake-3.18/Help/manual/cmake-generators.7.rst b/share/cmake-3.18/Help/manual/cmake-generators.7.rst
deleted file mode 100644
index 6f88c0a..0000000
--- a/share/cmake-3.18/Help/manual/cmake-generators.7.rst
+++ /dev/null
@@ -1,118 +0,0 @@
-.. cmake-manual-description: CMake Generators Reference
-
-cmake-generators(7)
-*******************
-
-.. only:: html
-
-   .. contents::
-
-Introduction
-============
-
-A *CMake Generator* is responsible for writing the input files for
-a native build system.  Exactly one of the `CMake Generators`_ must be
-selected for a build tree to determine what native build system is to
-be used.  Optionally one of the `Extra Generators`_ may be selected
-as a variant of some of the `Command-Line Build Tool Generators`_ to
-produce project files for an auxiliary IDE.
-
-CMake Generators are platform-specific so each may be available only
-on certain platforms.  The :manual:`cmake(1)` command-line tool ``--help``
-output lists available generators on the current platform.  Use its ``-G``
-option to specify the generator for a new build tree.
-The :manual:`cmake-gui(1)` offers interactive selection of a generator
-when creating a new build tree.
-
-CMake Generators
-================
-
-.. _`Command-Line Build Tool Generators`:
-
-Command-Line Build Tool Generators
-----------------------------------
-
-These generators support command-line build tools.  In order to use them,
-one must launch CMake from a command-line prompt whose environment is
-already configured for the chosen compiler and build tool.
-
-.. _`Makefile Generators`:
-
-Makefile Generators
-^^^^^^^^^^^^^^^^^^^
-
-.. toctree::
-   :maxdepth: 1
-
-   /generator/Borland Makefiles
-   /generator/MSYS Makefiles
-   /generator/MinGW Makefiles
-   /generator/NMake Makefiles
-   /generator/NMake Makefiles JOM
-   /generator/Unix Makefiles
-   /generator/Watcom WMake
-
-Ninja Generators
-^^^^^^^^^^^^^^^^
-
-.. toctree::
-   :maxdepth: 1
-
-   /generator/Ninja
-   /generator/Ninja Multi-Config
-
-.. _`IDE Build Tool Generators`:
-
-IDE Build Tool Generators
--------------------------
-
-These generators support Integrated Development Environment (IDE)
-project files.  Since the IDEs configure their own environment
-one may launch CMake from any environment.
-
-.. _`Visual Studio Generators`:
-
-Visual Studio Generators
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. toctree::
-   :maxdepth: 1
-
-   /generator/Visual Studio 6
-   /generator/Visual Studio 7
-   /generator/Visual Studio 7 .NET 2003
-   /generator/Visual Studio 8 2005
-   /generator/Visual Studio 9 2008
-   /generator/Visual Studio 10 2010
-   /generator/Visual Studio 11 2012
-   /generator/Visual Studio 12 2013
-   /generator/Visual Studio 14 2015
-   /generator/Visual Studio 15 2017
-   /generator/Visual Studio 16 2019
-
-Other Generators
-^^^^^^^^^^^^^^^^
-
-.. toctree::
-   :maxdepth: 1
-
-   /generator/Green Hills MULTI
-   /generator/Xcode
-
-Extra Generators
-================
-
-Some of the `CMake Generators`_ listed in the :manual:`cmake(1)`
-command-line tool ``--help`` output may have variants that specify
-an extra generator for an auxiliary IDE tool.  Such generator
-names have the form ``<extra-generator> - <main-generator>``.
-The following extra generators are known to CMake.
-
-.. toctree::
-   :maxdepth: 1
-
-   /generator/CodeBlocks
-   /generator/CodeLite
-   /generator/Eclipse CDT4
-   /generator/Kate
-   /generator/Sublime Text 2
diff --git a/share/cmake-3.18/Help/manual/cmake-gui.1.rst b/share/cmake-3.18/Help/manual/cmake-gui.1.rst
deleted file mode 100644
index ff8311b..0000000
--- a/share/cmake-3.18/Help/manual/cmake-gui.1.rst
+++ /dev/null
@@ -1,44 +0,0 @@
-.. cmake-manual-description: CMake GUI Command-Line Reference
-
-cmake-gui(1)
-************
-
-Synopsis
-========
-
-.. parsed-literal::
-
- cmake-gui [<options>]
- cmake-gui [<options>] {<path-to-source> | <path-to-existing-build>}
- cmake-gui [<options>] -S <path-to-source> -B <path-to-build>
-
-Description
-===========
-
-The **cmake-gui** executable is the CMake GUI.  Project configuration
-settings may be specified interactively.  Brief instructions are
-provided at the bottom of the window when the program is running.
-
-CMake is a cross-platform build system generator.  Projects specify
-their build process with platform-independent CMake listfiles included
-in each directory of a source tree with the name ``CMakeLists.txt``.
-Users build a project by using CMake to generate a build system for a
-native tool on their platform.
-
-Options
-=======
-
-``-S <path-to-source>``
- Path to root directory of the CMake project to build.
-
-``-B <path-to-build>``
- Path to directory which CMake will use as the root of build directory.
-
- If the directory doesn't already exist CMake will make it.
-
-.. include:: OPTIONS_HELP.txt
-
-See Also
-========
-
-.. include:: LINKS.txt
diff --git a/share/cmake-3.18/Help/manual/cmake-modules.7.rst b/share/cmake-3.18/Help/manual/cmake-modules.7.rst
deleted file mode 100644
index 50131e8..0000000
--- a/share/cmake-3.18/Help/manual/cmake-modules.7.rst
+++ /dev/null
@@ -1,319 +0,0 @@
-.. cmake-manual-description: CMake Modules Reference
-
-cmake-modules(7)
-****************
-
-The modules listed here are part of the CMake distribution.
-Projects may provide further modules; their location(s)
-can be specified in the :variable:`CMAKE_MODULE_PATH` variable.
-
-Utility Modules
-^^^^^^^^^^^^^^^
-
-These modules are loaded using the :command:`include` command.
-
-.. toctree::
-   :maxdepth: 1
-
-   /module/AddFileDependencies
-   /module/AndroidTestUtilities
-   /module/BundleUtilities
-   /module/CheckCCompilerFlag
-   /module/CheckCSourceCompiles
-   /module/CheckCSourceRuns
-   /module/CheckCXXCompilerFlag
-   /module/CheckCXXSourceCompiles
-   /module/CheckCXXSourceRuns
-   /module/CheckCXXSymbolExists
-   /module/CheckFortranCompilerFlag
-   /module/CheckFortranFunctionExists
-   /module/CheckFortranSourceCompiles
-   /module/CheckFortranSourceRuns
-   /module/CheckFunctionExists
-   /module/CheckIPOSupported
-   /module/CheckIncludeFileCXX
-   /module/CheckIncludeFile
-   /module/CheckIncludeFiles
-   /module/CheckLanguage
-   /module/CheckLibraryExists
-   /module/CheckLinkerFlag
-   /module/CheckOBJCCompilerFlag
-   /module/CheckOBJCSourceCompiles
-   /module/CheckOBJCSourceRuns
-   /module/CheckOBJCXXCompilerFlag
-   /module/CheckOBJCXXSourceCompiles
-   /module/CheckOBJCXXSourceRuns
-   /module/CheckPIESupported
-   /module/CheckPrototypeDefinition
-   /module/CheckStructHasMember
-   /module/CheckSymbolExists
-   /module/CheckTypeSize
-   /module/CheckVariableExists
-   /module/CMakeAddFortranSubdirectory
-   /module/CMakeBackwardCompatibilityCXX
-   /module/CMakeDependentOption
-   /module/CMakeFindDependencyMacro
-   /module/CMakeFindFrameworks
-   /module/CMakeFindPackageMode
-   /module/CMakeGraphVizOptions
-   /module/CMakePackageConfigHelpers
-   /module/CMakePrintHelpers
-   /module/CMakePrintSystemInformation
-   /module/CMakePushCheckState
-   /module/CMakeVerifyManifest
-   /module/CPackComponent
-   /module/CPackIFW
-   /module/CPackIFWConfigureFile
-   /module/CPack
-   /module/CSharpUtilities
-   /module/CTest
-   /module/CTestCoverageCollectGCOV
-   /module/CTestScriptMode
-   /module/CTestUseLaunchers
-   /module/Dart
-   /module/DeployQt4
-   /module/Documentation
-   /module/ExternalData
-   /module/ExternalProject
-   /module/FeatureSummary
-   /module/FetchContent
-   /module/FindPackageHandleStandardArgs
-   /module/FindPackageMessage
-   /module/FortranCInterface
-   /module/GenerateExportHeader
-   /module/GetPrerequisites
-   /module/GNUInstallDirs
-   /module/GoogleTest
-   /module/InstallRequiredSystemLibraries
-   /module/ProcessorCount
-   /module/SelectLibraryConfigurations
-   /module/SquishTestScript
-   /module/TestBigEndian
-   /module/TestForANSIForScope
-   /module/TestForANSIStreamHeaders
-   /module/TestForSSTREAM
-   /module/TestForSTDNamespace
-   /module/UseEcos
-   /module/UseJavaClassFilelist
-   /module/UseJava
-   /module/UseJavaSymlinks
-   /module/UseSWIG
-   /module/UsewxWidgets
-   /module/WriteCompilerDetectionHeader
-
-Find Modules
-^^^^^^^^^^^^
-
-These modules search for third-party software.
-They are normally called through the :command:`find_package` command.
-
-.. toctree::
-   :maxdepth: 1
-
-   /module/FindALSA
-   /module/FindArmadillo
-   /module/FindASPELL
-   /module/FindAVIFile
-   /module/FindBISON
-   /module/FindBLAS
-   /module/FindBacktrace
-   /module/FindBoost
-   /module/FindBullet
-   /module/FindBZip2
-   /module/FindCABLE
-   /module/FindCoin3D
-   /module/FindCups
-   /module/FindCUDAToolkit
-   /module/FindCURL
-   /module/FindCurses
-   /module/FindCVS
-   /module/FindCxxTest
-   /module/FindCygwin
-   /module/FindDart
-   /module/FindDCMTK
-   /module/FindDevIL
-   /module/FindDoxygen
-   /module/FindEnvModules
-   /module/FindEXPAT
-   /module/FindFLEX
-   /module/FindFLTK2
-   /module/FindFLTK
-   /module/FindFontconfig
-   /module/FindFreetype
-   /module/FindGCCXML
-   /module/FindGDAL
-   /module/FindGettext
-   /module/FindGIF
-   /module/FindGit
-   /module/FindGLEW
-   /module/FindGLUT
-   /module/FindGnuplot
-   /module/FindGnuTLS
-   /module/FindGSL
-   /module/FindGTest
-   /module/FindGTK2
-   /module/FindGTK
-   /module/FindHDF5
-   /module/FindHg
-   /module/FindHSPELL
-   /module/FindHTMLHelp
-   /module/FindIce
-   /module/FindIcotool
-   /module/FindICU
-   /module/FindImageMagick
-   /module/FindIconv
-   /module/FindIntl
-   /module/FindITK
-   /module/FindJasper
-   /module/FindJava
-   /module/FindJNI
-   /module/FindJPEG
-   /module/FindKDE3
-   /module/FindKDE4
-   /module/FindLAPACK
-   /module/FindLATEX
-   /module/FindLibArchive
-   /module/FindLibinput
-   /module/FindLibLZMA
-   /module/FindLibXml2
-   /module/FindLibXslt
-   /module/FindLTTngUST
-   /module/FindLua50
-   /module/FindLua51
-   /module/FindLua
-   /module/FindMatlab
-   /module/FindMFC
-   /module/FindMotif
-   /module/FindMPEG2
-   /module/FindMPEG
-   /module/FindMPI
-   /module/FindODBC
-   /module/FindOpenACC
-   /module/FindOpenAL
-   /module/FindOpenCL
-   /module/FindOpenGL
-   /module/FindOpenMP
-   /module/FindOpenSceneGraph
-   /module/FindOpenSSL
-   /module/FindOpenThreads
-   /module/FindosgAnimation
-   /module/FindosgDB
-   /module/Findosg_functions
-   /module/FindosgFX
-   /module/FindosgGA
-   /module/FindosgIntrospection
-   /module/FindosgManipulator
-   /module/FindosgParticle
-   /module/FindosgPresentation
-   /module/FindosgProducer
-   /module/FindosgQt
-   /module/Findosg
-   /module/FindosgShadow
-   /module/FindosgSim
-   /module/FindosgTerrain
-   /module/FindosgText
-   /module/FindosgUtil
-   /module/FindosgViewer
-   /module/FindosgVolume
-   /module/FindosgWidget
-   /module/FindPatch
-   /module/FindPerlLibs
-   /module/FindPerl
-   /module/FindPHP4
-   /module/FindPhysFS
-   /module/FindPike
-   /module/FindPkgConfig
-   /module/FindPNG
-   /module/FindPostgreSQL
-   /module/FindProducer
-   /module/FindProtobuf
-   /module/FindPython
-   /module/FindPython2
-   /module/FindPython3
-   /module/FindQt3
-   /module/FindQt4
-   /module/FindQuickTime
-   /module/FindRTI
-   /module/FindRuby
-   /module/FindSDL_image
-   /module/FindSDL_mixer
-   /module/FindSDL_net
-   /module/FindSDL
-   /module/FindSDL_sound
-   /module/FindSDL_ttf
-   /module/FindSelfPackers
-   /module/FindSquish
-   /module/FindSQLite3
-   /module/FindSubversion
-   /module/FindSWIG
-   /module/FindTCL
-   /module/FindTclsh
-   /module/FindTclStub
-   /module/FindThreads
-   /module/FindTIFF
-   /module/FindUnixCommands
-   /module/FindVTK
-   /module/FindVulkan
-   /module/FindWget
-   /module/FindWish
-   /module/FindwxWidgets
-   /module/FindXCTest
-   /module/FindXalanC
-   /module/FindXercesC
-   /module/FindX11
-   /module/FindXMLRPC
-   /module/FindZLIB
-
-Deprecated Modules
-^^^^^^^^^^^^^^^^^^^
-
-Deprecated Utility Modules
-==========================
-
-.. toctree::
-   :maxdepth: 1
-
-   /module/CMakeDetermineVSServicePack
-   /module/CMakeExpandImportedTargets
-   /module/CMakeForceCompiler
-   /module/CMakeParseArguments
-   /module/MacroAddFileDependencies
-   /module/TestCXXAcceptsFlag
-   /module/UsePkgConfig
-   /module/Use_wxWindows
-   /module/WriteBasicConfigVersionFile
-
-Deprecated Find Modules
-=======================
-
-.. toctree::
-   :maxdepth: 1
-
-   /module/FindCUDA
-   /module/FindPythonInterp
-   /module/FindPythonLibs
-   /module/FindQt
-   /module/FindwxWindows
-
-Legacy CPack Modules
-====================
-
-These modules used to be mistakenly exposed to the user, and have been moved
-out of user visibility. They are for CPack internal use, and should never be
-used directly.
-
-.. toctree::
-   :maxdepth: 1
-
-   /module/CPackArchive
-   /module/CPackBundle
-   /module/CPackCygwin
-   /module/CPackDeb
-   /module/CPackDMG
-   /module/CPackFreeBSD
-   /module/CPackNSIS
-   /module/CPackNuGet
-   /module/CPackPackageMaker
-   /module/CPackProductBuild
-   /module/CPackRPM
-   /module/CPackWIX
diff --git a/share/cmake-3.18/Help/manual/cmake-packages.7.rst b/share/cmake-3.18/Help/manual/cmake-packages.7.rst
deleted file mode 100644
index 4b2934a..0000000
--- a/share/cmake-3.18/Help/manual/cmake-packages.7.rst
+++ /dev/null
@@ -1,719 +0,0 @@
-.. cmake-manual-description: CMake Packages Reference
-
-cmake-packages(7)
-*****************
-
-.. only:: html
-
-   .. contents::
-
-Introduction
-============
-
-Packages provide dependency information to CMake based buildsystems.  Packages
-are found with the :command:`find_package` command.  The result of
-using :command:`find_package` is either a set of :prop_tgt:`IMPORTED` targets, or
-a set of variables corresponding to build-relevant information.
-
-Using Packages
-==============
-
-CMake provides direct support for two forms of packages,
-`Config-file Packages`_ and `Find-module Packages`_.
-Indirect support for ``pkg-config`` packages is also provided via
-the :module:`FindPkgConfig` module.  In all cases, the basic form
-of :command:`find_package` calls is the same:
-
-.. code-block:: cmake
-
-  find_package(Qt4 4.7.0 REQUIRED) # CMake provides a Qt4 find-module
-  find_package(Qt5Core 5.1.0 REQUIRED) # Qt provides a Qt5 package config file.
-  find_package(LibXml2 REQUIRED) # Use pkg-config via the LibXml2 find-module
-
-In cases where it is known that a package configuration file is provided by
-upstream, and only that should be used, the ``CONFIG`` keyword may be passed
-to :command:`find_package`:
-
-.. code-block:: cmake
-
-  find_package(Qt5Core 5.1.0 CONFIG REQUIRED)
-  find_package(Qt5Gui 5.1.0 CONFIG)
-
-Similarly, the ``MODULE`` keyword says to use only a find-module:
-
-.. code-block:: cmake
-
-  find_package(Qt4 4.7.0 MODULE REQUIRED)
-
-Specifying the type of package explicitly improves the error message shown to
-the user if it is not found.
-
-Both types of packages also support specifying components of a package,
-either after the ``REQUIRED`` keyword:
-
-.. code-block:: cmake
-
-  find_package(Qt5 5.1.0 CONFIG REQUIRED Widgets Xml Sql)
-
-or as a separate ``COMPONENTS`` list:
-
-.. code-block:: cmake
-
-  find_package(Qt5 5.1.0 COMPONENTS Widgets Xml Sql)
-
-or as a separate ``OPTIONAL_COMPONENTS`` list:
-
-.. code-block:: cmake
-
-  find_package(Qt5 5.1.0 COMPONENTS Widgets
-                         OPTIONAL_COMPONENTS Xml Sql
-  )
-
-Handling of ``COMPONENTS`` and ``OPTIONAL_COMPONENTS`` is defined by the
-package.
-
-By setting the :variable:`CMAKE_DISABLE_FIND_PACKAGE_<PackageName>` variable to
-``TRUE``, the ``<PackageName>`` package will not be searched, and will always
-be ``NOTFOUND``.
-
-.. _`Config File Packages`:
-
-Config-file Packages
---------------------
-
-A config-file package is a set of files provided by upstreams for downstreams
-to use. CMake searches in a number of locations for package configuration files, as
-described in the :command:`find_package` documentation.  The most simple way for
-a CMake user to tell :manual:`cmake(1)` to search in a non-standard prefix for
-a package is to set the ``CMAKE_PREFIX_PATH`` cache variable.
-
-Config-file packages are provided by upstream vendors as part of development
-packages, that is, they belong with the header files and any other files
-provided to assist downstreams in using the package.
-
-A set of variables which provide package status information are also set
-automatically when using a config-file package.  The ``<PackageName>_FOUND``
-variable is set to true or false, depending on whether the package was
-found.  The ``<PackageName>_DIR`` cache variable is set to the location of the
-package configuration file.
-
-Find-module Packages
---------------------
-
-A find module is a file with a set of rules for finding the required pieces of
-a dependency, primarily header files and libraries.  Typically, a find module
-is needed when the upstream is not built with CMake, or is not CMake-aware
-enough to otherwise provide a package configuration file.  Unlike a package configuration
-file, it is not shipped with upstream, but is used by downstream to find the
-files by guessing locations of files with platform-specific hints.
-
-Unlike the case of an upstream-provided package configuration file, no single point
-of reference identifies the package as being found, so the ``<PackageName>_FOUND``
-variable is not automatically set by the :command:`find_package` command.  It
-can still be expected to be set by convention however and should be set by
-the author of the Find-module.  Similarly there is no ``<PackageName>_DIR`` variable,
-but each of the artifacts such as library locations and header file locations
-provide a separate cache variable.
-
-See the :manual:`cmake-developer(7)` manual for more information about creating
-Find-module files.
-
-Package Layout
-==============
-
-A config-file package consists of a `Package Configuration File`_ and
-optionally a `Package Version File`_ provided with the project distribution.
-
-Package Configuration File
---------------------------
-
-Consider a project ``Foo`` that installs the following files::
-
-  <prefix>/include/foo-1.2/foo.h
-  <prefix>/lib/foo-1.2/libfoo.a
-
-It may also provide a CMake package configuration file::
-
-  <prefix>/lib/cmake/foo-1.2/FooConfig.cmake
-
-with content defining :prop_tgt:`IMPORTED` targets, or defining variables, such
-as:
-
-.. code-block:: cmake
-
-  # ...
-  # (compute PREFIX relative to file location)
-  # ...
-  set(Foo_INCLUDE_DIRS ${PREFIX}/include/foo-1.2)
-  set(Foo_LIBRARIES ${PREFIX}/lib/foo-1.2/libfoo.a)
-
-If another project wishes to use ``Foo`` it need only to locate the ``FooConfig.cmake``
-file and load it to get all the information it needs about package content
-locations.  Since the package configuration file is provided by the package
-installation it already knows all the file locations.
-
-The :command:`find_package` command may be used to search for the package
-configuration file.  This command constructs a set of installation prefixes
-and searches under each prefix in several locations.  Given the name ``Foo``,
-it looks for a file called ``FooConfig.cmake`` or ``foo-config.cmake``.
-The full set of locations is specified in the :command:`find_package` command
-documentation. One place it looks is::
-
- <prefix>/lib/cmake/Foo*/
-
-where ``Foo*`` is a case-insensitive globbing expression.  In our example the
-globbing expression will match ``<prefix>/lib/cmake/foo-1.2`` and the package
-configuration file will be found.
-
-Once found, a package configuration file is immediately loaded.  It, together
-with a package version file, contains all the information the project needs to
-use the package.
-
-Package Version File
---------------------
-
-When the :command:`find_package` command finds a candidate package configuration
-file it looks next to it for a version file. The version file is loaded to test
-whether the package version is an acceptable match for the version requested.
-If the version file claims compatibility the configuration file is accepted.
-Otherwise it is ignored.
-
-The name of the package version file must match that of the package configuration
-file but has either ``-version`` or ``Version`` appended to the name before
-the ``.cmake`` extension.  For example, the files::
-
- <prefix>/lib/cmake/foo-1.3/foo-config.cmake
- <prefix>/lib/cmake/foo-1.3/foo-config-version.cmake
-
-and::
-
- <prefix>/lib/cmake/bar-4.2/BarConfig.cmake
- <prefix>/lib/cmake/bar-4.2/BarConfigVersion.cmake
-
-are each pairs of package configuration files and corresponding package version
-files.
-
-When the :command:`find_package` command loads a version file it first sets the
-following variables:
-
-``PACKAGE_FIND_NAME``
- The ``<PackageName>``
-
-``PACKAGE_FIND_VERSION``
- Full requested version string
-
-``PACKAGE_FIND_VERSION_MAJOR``
- Major version if requested, else 0
-
-``PACKAGE_FIND_VERSION_MINOR``
- Minor version if requested, else 0
-
-``PACKAGE_FIND_VERSION_PATCH``
- Patch version if requested, else 0
-
-``PACKAGE_FIND_VERSION_TWEAK``
- Tweak version if requested, else 0
-
-``PACKAGE_FIND_VERSION_COUNT``
- Number of version components, 0 to 4
-
-The version file must use these variables to check whether it is compatible or
-an exact match for the requested version and set the following variables with
-results:
-
-``PACKAGE_VERSION``
- Full provided version string
-
-``PACKAGE_VERSION_EXACT``
- True if version is exact match
-
-``PACKAGE_VERSION_COMPATIBLE``
- True if version is compatible
-
-``PACKAGE_VERSION_UNSUITABLE``
- True if unsuitable as any version
-
-Version files are loaded in a nested scope so they are free to set any variables
-they wish as part of their computation. The find_package command wipes out the
-scope when the version file has completed and it has checked the output
-variables. When the version file claims to be an acceptable match for the
-requested version the find_package command sets the following variables for
-use by the project:
-
-``<PackageName>_VERSION``
- Full provided version string
-
-``<PackageName>_VERSION_MAJOR``
- Major version if provided, else 0
-
-``<PackageName>_VERSION_MINOR``
- Minor version if provided, else 0
-
-``<PackageName>_VERSION_PATCH``
- Patch version if provided, else 0
-
-``<PackageName>_VERSION_TWEAK``
- Tweak version if provided, else 0
-
-``<PackageName>_VERSION_COUNT``
- Number of version components, 0 to 4
-
-The variables report the version of the package that was actually found.
-The ``<PackageName>`` part of their name matches the argument given to the
-:command:`find_package` command.
-
-.. _`Creating Packages`:
-
-Creating Packages
-=================
-
-Usually, the upstream depends on CMake itself and can use some CMake facilities
-for creating the package files. Consider an upstream which provides a single
-shared library:
-
-.. code-block:: cmake
-
-  project(UpstreamLib)
-
-  set(CMAKE_INCLUDE_CURRENT_DIR ON)
-  set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)
-
-  set(Upstream_VERSION 3.4.1)
-
-  include(GenerateExportHeader)
-
-  add_library(ClimbingStats SHARED climbingstats.cpp)
-  generate_export_header(ClimbingStats)
-  set_property(TARGET ClimbingStats PROPERTY VERSION ${Upstream_VERSION})
-  set_property(TARGET ClimbingStats PROPERTY SOVERSION 3)
-  set_property(TARGET ClimbingStats PROPERTY
-    INTERFACE_ClimbingStats_MAJOR_VERSION 3)
-  set_property(TARGET ClimbingStats APPEND PROPERTY
-    COMPATIBLE_INTERFACE_STRING ClimbingStats_MAJOR_VERSION
-  )
-
-  install(TARGETS ClimbingStats EXPORT ClimbingStatsTargets
-    LIBRARY DESTINATION lib
-    ARCHIVE DESTINATION lib
-    RUNTIME DESTINATION bin
-    INCLUDES DESTINATION include
-  )
-  install(
-    FILES
-      climbingstats.h
-      "${CMAKE_CURRENT_BINARY_DIR}/climbingstats_export.h"
-    DESTINATION
-      include
-    COMPONENT
-      Devel
-  )
-
-  include(CMakePackageConfigHelpers)
-  write_basic_package_version_file(
-    "${CMAKE_CURRENT_BINARY_DIR}/ClimbingStats/ClimbingStatsConfigVersion.cmake"
-    VERSION ${Upstream_VERSION}
-    COMPATIBILITY AnyNewerVersion
-  )
-
-  export(EXPORT ClimbingStatsTargets
-    FILE "${CMAKE_CURRENT_BINARY_DIR}/ClimbingStats/ClimbingStatsTargets.cmake"
-    NAMESPACE Upstream::
-  )
-  configure_file(cmake/ClimbingStatsConfig.cmake
-    "${CMAKE_CURRENT_BINARY_DIR}/ClimbingStats/ClimbingStatsConfig.cmake"
-    COPYONLY
-  )
-
-  set(ConfigPackageLocation lib/cmake/ClimbingStats)
-  install(EXPORT ClimbingStatsTargets
-    FILE
-      ClimbingStatsTargets.cmake
-    NAMESPACE
-      Upstream::
-    DESTINATION
-      ${ConfigPackageLocation}
-  )
-  install(
-    FILES
-      cmake/ClimbingStatsConfig.cmake
-      "${CMAKE_CURRENT_BINARY_DIR}/ClimbingStats/ClimbingStatsConfigVersion.cmake"
-    DESTINATION
-      ${ConfigPackageLocation}
-    COMPONENT
-      Devel
-  )
-
-The :module:`CMakePackageConfigHelpers` module provides a macro for creating
-a simple ``ConfigVersion.cmake`` file.  This file sets the version of the
-package.  It is read by CMake when :command:`find_package` is called to
-determine the compatibility with the requested version, and to set some
-version-specific variables ``<PackageName>_VERSION``, ``<PackageName>_VERSION_MAJOR``,
-``<PackageName>_VERSION_MINOR`` etc.  The :command:`install(EXPORT)` command is
-used to export the targets in the ``ClimbingStatsTargets`` export-set, defined
-previously by the :command:`install(TARGETS)` command. This command generates
-the ``ClimbingStatsTargets.cmake`` file to contain :prop_tgt:`IMPORTED`
-targets, suitable for use by downstreams and arranges to install it to
-``lib/cmake/ClimbingStats``.  The generated ``ClimbingStatsConfigVersion.cmake``
-and a ``cmake/ClimbingStatsConfig.cmake`` are installed to the same location,
-completing the package.
-
-The generated :prop_tgt:`IMPORTED` targets have appropriate properties set
-to define their :ref:`usage requirements <Target Usage Requirements>`, such as
-:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES`,
-:prop_tgt:`INTERFACE_COMPILE_DEFINITIONS` and other relevant built-in
-``INTERFACE_`` properties.  The ``INTERFACE`` variant of user-defined
-properties listed in :prop_tgt:`COMPATIBLE_INTERFACE_STRING` and
-other :ref:`Compatible Interface Properties` are also propagated to the
-generated :prop_tgt:`IMPORTED` targets.  In the above case,
-``ClimbingStats_MAJOR_VERSION`` is defined as a string which must be
-compatible among the dependencies of any depender.  By setting this custom
-defined user property in this version and in the next version of
-``ClimbingStats``, :manual:`cmake(1)` will issue a diagnostic if there is an
-attempt to use version 3 together with version 4.  Packages can choose to
-employ such a pattern if different major versions of the package are designed
-to be incompatible.
-
-A ``NAMESPACE`` with double-colons is specified when exporting the targets
-for installation.  This convention of double-colons gives CMake a hint that
-the name is an :prop_tgt:`IMPORTED` target when it is used by downstreams
-with the :command:`target_link_libraries` command.  This way, CMake can
-issue a diagnostic if the package providing it has not yet been found.
-
-In this case, when using :command:`install(TARGETS)` the ``INCLUDES DESTINATION``
-was specified.  This causes the ``IMPORTED`` targets to have their
-:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` populated with the ``include``
-directory in the :variable:`CMAKE_INSTALL_PREFIX`.  When the ``IMPORTED``
-target is used by downstream, it automatically consumes the entries from
-that property.
-
-Creating a Package Configuration File
--------------------------------------
-
-In this case, the ``ClimbingStatsConfig.cmake`` file could be as simple as:
-
-.. code-block:: cmake
-
-  include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake")
-
-As this allows downstreams to use the ``IMPORTED`` targets.  If any macros
-should be provided by the ``ClimbingStats`` package, they should
-be in a separate file which is installed to the same location as the
-``ClimbingStatsConfig.cmake`` file, and included from there.
-
-This can also be extended to cover dependencies:
-
-.. code-block:: cmake
-
-  # ...
-  add_library(ClimbingStats SHARED climbingstats.cpp)
-  generate_export_header(ClimbingStats)
-
-  find_package(Stats 2.6.4 REQUIRED)
-  target_link_libraries(ClimbingStats PUBLIC Stats::Types)
-
-As the ``Stats::Types`` target is a ``PUBLIC`` dependency of ``ClimbingStats``,
-downstreams must also find the ``Stats`` package and link to the ``Stats::Types``
-library.  The ``Stats`` package should be found in the ``ClimbingStatsConfig.cmake``
-file to ensure this.  The ``find_dependency`` macro from the
-:module:`CMakeFindDependencyMacro` helps with this by propagating
-whether the package is ``REQUIRED``, or ``QUIET`` etc.  All ``REQUIRED``
-dependencies of a package should be found in the ``Config.cmake`` file:
-
-.. code-block:: cmake
-
-  include(CMakeFindDependencyMacro)
-  find_dependency(Stats 2.6.4)
-
-  include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake")
-  include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsMacros.cmake")
-
-The ``find_dependency`` macro also sets ``ClimbingStats_FOUND`` to ``False`` if
-the dependency is not found, along with a diagnostic that the ``ClimbingStats``
-package can not be used without the ``Stats`` package.
-
-If ``COMPONENTS`` are specified when the downstream uses :command:`find_package`,
-they are listed in the ``<PackageName>_FIND_COMPONENTS`` variable. If a particular
-component is non-optional, then the ``<PackageName>_FIND_REQUIRED_<comp>`` will
-be true. This can be tested with logic in the package configuration file:
-
-.. code-block:: cmake
-
-  include(CMakeFindDependencyMacro)
-  find_dependency(Stats 2.6.4)
-
-  include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake")
-  include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsMacros.cmake")
-
-  set(_supported_components Plot Table)
-
-  foreach(_comp ${ClimbingStats_FIND_COMPONENTS})
-    if (NOT ";${_supported_components};" MATCHES _comp)
-      set(ClimbingStats_FOUND False)
-      set(ClimbingStats_NOT_FOUND_MESSAGE "Unsupported component: ${_comp}")
-    endif()
-    include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStats${_comp}Targets.cmake")
-  endforeach()
-
-Here, the ``ClimbingStats_NOT_FOUND_MESSAGE`` is set to a diagnosis that the package
-could not be found because an invalid component was specified.  This message
-variable can be set for any case where the ``_FOUND`` variable is set to ``False``,
-and will be displayed to the user.
-
-Creating a Package Configuration File for the Build Tree
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The :command:`export(EXPORT)` command creates an :prop_tgt:`IMPORTED` targets
-definition file which is specific to the build-tree, and is not relocatable.
-This can similarly be used with a suitable package configuration file and
-package version file to define a package for the build tree which may be used
-without installation.  Consumers of the build tree can simply ensure that the
-:variable:`CMAKE_PREFIX_PATH` contains the build directory, or set the
-``ClimbingStats_DIR`` to ``<build_dir>/ClimbingStats`` in the cache.
-
-.. _`Creating Relocatable Packages`:
-
-Creating Relocatable Packages
------------------------------
-
-A relocatable package must not reference absolute paths of files on
-the machine where the package is built that will not exist on the
-machines where the package may be installed.
-
-Packages created by :command:`install(EXPORT)` are designed to be relocatable,
-using paths relative to the location of the package itself.  When defining
-the interface of a target for ``EXPORT``, keep in mind that the include
-directories should be specified as relative paths which are relative to the
-:variable:`CMAKE_INSTALL_PREFIX`:
-
-.. code-block:: cmake
-
-  target_include_directories(tgt INTERFACE
-    # Wrong, not relocatable:
-    $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include/TgtName>
-  )
-
-  target_include_directories(tgt INTERFACE
-    # Ok, relocatable:
-    $<INSTALL_INTERFACE:include/TgtName>
-  )
-
-The ``$<INSTALL_PREFIX>``
-:manual:`generator expression <cmake-generator-expressions(7)>` may be used as
-a placeholder for the install prefix without resulting in a non-relocatable
-package.  This is necessary if complex generator expressions are used:
-
-.. code-block:: cmake
-
-  target_include_directories(tgt INTERFACE
-    # Ok, relocatable:
-    $<INSTALL_INTERFACE:$<$<CONFIG:Debug>:$<INSTALL_PREFIX>/include/TgtName>>
-  )
-
-This also applies to paths referencing external dependencies.
-It is not advisable to populate any properties which may contain
-paths, such as :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` and
-:prop_tgt:`INTERFACE_LINK_LIBRARIES`, with paths relevant to dependencies.
-For example, this code may not work well for a relocatable package:
-
-.. code-block:: cmake
-
-  target_link_libraries(ClimbingStats INTERFACE
-    ${Foo_LIBRARIES} ${Bar_LIBRARIES}
-    )
-  target_include_directories(ClimbingStats INTERFACE
-    "$<INSTALL_INTERFACE:${Foo_INCLUDE_DIRS};${Bar_INCLUDE_DIRS}>"
-    )
-
-The referenced variables may contain the absolute paths to libraries
-and include directories **as found on the machine the package was made on**.
-This would create a package with hard-coded paths to dependencies and not
-suitable for relocation.
-
-Ideally such dependencies should be used through their own
-:ref:`IMPORTED targets <Imported Targets>` that have their own
-:prop_tgt:`IMPORTED_LOCATION` and usage requirement properties
-such as :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` populated
-appropriately.  Those imported targets may then be used with
-the :command:`target_link_libraries` command for ``ClimbingStats``:
-
-.. code-block:: cmake
-
-  target_link_libraries(ClimbingStats INTERFACE Foo::Foo Bar::Bar)
-
-With this approach the package references its external dependencies
-only through the names of :ref:`IMPORTED targets <Imported Targets>`.
-When a consumer uses the installed package, the consumer will run the
-appropriate :command:`find_package` commands (via the ``find_dependency``
-macro described above) to find the dependencies and populate the
-imported targets with appropriate paths on their own machine.
-
-Unfortunately many :manual:`modules <cmake-modules(7)>` shipped with
-CMake do not yet provide :ref:`IMPORTED targets <Imported Targets>`
-because their development pre-dated this approach.  This may improve
-incrementally over time.  Workarounds to create relocatable packages
-using such modules include:
-
-* When building the package, specify each ``Foo_LIBRARY`` cache
-  entry as just a library name, e.g. ``-DFoo_LIBRARY=foo``.  This
-  tells the corresponding find module to populate the ``Foo_LIBRARIES``
-  with just ``foo`` to ask the linker to search for the library
-  instead of hard-coding a path.
-
-* Or, after installing the package content but before creating the
-  package installation binary for redistribution, manually replace
-  the absolute paths with placeholders for substitution by the
-  installation tool when the package is installed.
-
-.. _`Package Registry`:
-
-Package Registry
-================
-
-CMake provides two central locations to register packages that have
-been built or installed anywhere on a system:
-
-* `User Package Registry`_
-* `System Package Registry`_
-
-The registries are especially useful to help projects find packages in
-non-standard install locations or directly in their own build trees.
-A project may populate either the user or system registry (using its own
-means, see below) to refer to its location.
-In either case the package should store at the registered location a
-`Package Configuration File`_ (``<PackageName>Config.cmake``) and optionally a
-`Package Version File`_ (``<PackageName>ConfigVersion.cmake``).
-
-The :command:`find_package` command searches the two package registries
-as two of the search steps specified in its documentation.  If it has
-sufficient permissions it also removes stale package registry entries
-that refer to directories that do not exist or do not contain a matching
-package configuration file.
-
-.. _`User Package Registry`:
-
-User Package Registry
----------------------
-
-The User Package Registry is stored in a per-user location.
-The :command:`export(PACKAGE)` command may be used to register a project
-build tree in the user package registry.  CMake currently provides no
-interface to add install trees to the user package registry.  Installers
-must be manually taught to register their packages if desired.
-
-On Windows the user package registry is stored in the Windows registry
-under a key in ``HKEY_CURRENT_USER``.
-
-A ``<PackageName>`` may appear under registry key::
-
-  HKEY_CURRENT_USER\Software\Kitware\CMake\Packages\<PackageName>
-
-as a ``REG_SZ`` value, with arbitrary name, that specifies the directory
-containing the package configuration file.
-
-On UNIX platforms the user package registry is stored in the user home
-directory under ``~/.cmake/packages``.  A ``<PackageName>`` may appear under
-the directory::
-
-  ~/.cmake/packages/<PackageName>
-
-as a file, with arbitrary name, whose content specifies the directory
-containing the package configuration file.
-
-.. _`System Package Registry`:
-
-System Package Registry
------------------------
-
-The System Package Registry is stored in a system-wide location.
-CMake currently provides no interface to add to the system package registry.
-Installers must be manually taught to register their packages if desired.
-
-On Windows the system package registry is stored in the Windows registry
-under a key in ``HKEY_LOCAL_MACHINE``.  A ``<PackageName>`` may appear under
-registry key::
-
-  HKEY_LOCAL_MACHINE\Software\Kitware\CMake\Packages\<PackageName>
-
-as a ``REG_SZ`` value, with arbitrary name, that specifies the directory
-containing the package configuration file.
-
-There is no system package registry on non-Windows platforms.
-
-.. _`Disabling the Package Registry`:
-
-Disabling the Package Registry
-------------------------------
-
-In some cases using the Package Registries is not desirable. CMake
-allows one to disable them using the following variables:
-
-* The :command:`export(PACKAGE)` command does not populate the user
-  package registry when :policy:`CMP0090` is set to ``NEW`` unless the
-  :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY` variable explicitly enables it.
-  When :policy:`CMP0090` is *not* set to ``NEW`` then
-  :command:`export(PACKAGE)` populates the user package registry unless
-  the :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` variable explicitly
-  disables it.
-* :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` disables the
-  User Package Registry in all the :command:`find_package` calls when
-  set to ``FALSE``.
-* Deprecated :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` disables the
-  User Package Registry in all the :command:`find_package` calls when set
-  to ``TRUE``. This variable is ignored when
-  :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` has been set.
-* :variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` disables
-  the System Package Registry in all the :command:`find_package` calls.
-
-Package Registry Example
-------------------------
-
-A simple convention for naming package registry entries is to use content
-hashes.  They are deterministic and unlikely to collide
-(:command:`export(PACKAGE)` uses this approach).
-The name of an entry referencing a specific directory is simply the content
-hash of the directory path itself.
-
-If a project arranges for package registry entries to exist, such as::
-
- > reg query HKCU\Software\Kitware\CMake\Packages\MyPackage
- HKEY_CURRENT_USER\Software\Kitware\CMake\Packages\MyPackage
-  45e7d55f13b87179bb12f907c8de6fc4 REG_SZ c:/Users/Me/Work/lib/cmake/MyPackage
-  7b4a9844f681c80ce93190d4e3185db9 REG_SZ c:/Users/Me/Work/MyPackage-build
-
-or::
-
- $ cat ~/.cmake/packages/MyPackage/7d1fb77e07ce59a81bed093bbee945bd
- /home/me/work/lib/cmake/MyPackage
- $ cat ~/.cmake/packages/MyPackage/f92c1db873a1937f3100706657c63e07
- /home/me/work/MyPackage-build
-
-then the ``CMakeLists.txt`` code:
-
-.. code-block:: cmake
-
-  find_package(MyPackage)
-
-will search the registered locations for package configuration files
-(``MyPackageConfig.cmake``).  The search order among package registry
-entries for a single package is unspecified and the entry names
-(hashes in this example) have no meaning.  Registered locations may
-contain package version files (``MyPackageConfigVersion.cmake``) to
-tell :command:`find_package` whether a specific location is suitable
-for the version requested.
-
-Package Registry Ownership
---------------------------
-
-Package registry entries are individually owned by the project installations
-that they reference.  A package installer is responsible for adding its own
-entry and the corresponding uninstaller is responsible for removing it.
-
-The :command:`export(PACKAGE)` command populates the user package registry
-with the location of a project build tree.  Build trees tend to be deleted by
-developers and have no "uninstall" event that could trigger removal of their
-entries.  In order to keep the registries clean the :command:`find_package`
-command automatically removes stale entries it encounters if it has sufficient
-permissions.  CMake provides no interface to remove an entry referencing an
-existing build tree once :command:`export(PACKAGE)` has been invoked.
-However, if the project removes its package configuration file from the build
-tree then the entry referencing the location will be considered stale.
diff --git a/share/cmake-3.18/Help/manual/cmake-policies.7.rst b/share/cmake-3.18/Help/manual/cmake-policies.7.rst
deleted file mode 100644
index e98038a..0000000
--- a/share/cmake-3.18/Help/manual/cmake-policies.7.rst
+++ /dev/null
@@ -1,295 +0,0 @@
-.. cmake-manual-description: CMake Policies Reference
-
-cmake-policies(7)
-*****************
-
-.. only:: html
-
-   .. contents::
-
-Introduction
-============
-
-Policies in CMake are used to preserve backward compatible behavior
-across multiple releases.  When a new policy is introduced, newer CMake
-versions will begin to warn about the backward compatible behavior.  It
-is possible to disable the warning by explicitly requesting the OLD, or
-backward compatible behavior using the :command:`cmake_policy` command.
-It is also possible to request ``NEW``, or non-backward compatible behavior
-for a policy, also avoiding the warning.  Each policy can also be set to
-either ``NEW`` or ``OLD`` behavior explicitly on the command line with the
-:variable:`CMAKE_POLICY_DEFAULT_CMP<NNNN>` variable.
-
-A policy is a deprecation mechanism and not a reliable feature toggle.
-A policy should almost never be set to ``OLD``, except to silence warnings
-in an otherwise frozen or stable codebase, or temporarily as part of a
-larger migration path. The ``OLD`` behavior of each policy is undesirable
-and will be replaced with an error condition in a future release.
-
-The :command:`cmake_minimum_required` command does more than report an
-error if a too-old version of CMake is used to build a project.  It
-also sets all policies introduced in that CMake version or earlier to
-``NEW`` behavior.  To manage policies without increasing the minimum required
-CMake version, the :command:`if(POLICY)` command may be used:
-
-.. code-block:: cmake
-
-  if(POLICY CMP0990)
-    cmake_policy(SET CMP0990 NEW)
-  endif()
-
-This has the effect of using the ``NEW`` behavior with newer CMake releases which
-users may be using and not issuing a compatibility warning.
-
-The setting of a policy is confined in some cases to not propagate to the
-parent scope.  For example, if the files read by the :command:`include` command
-or the :command:`find_package` command contain a use of :command:`cmake_policy`,
-that policy setting will not affect the caller by default.  Both commands accept
-an optional ``NO_POLICY_SCOPE`` keyword to control this behavior.
-
-The :variable:`CMAKE_MINIMUM_REQUIRED_VERSION` variable may also be used
-to determine whether to report an error on use of deprecated macros or
-functions.
-
-Policies Introduced by CMake 3.18
-=================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0108: A target cannot link to itself through an alias. </policy/CMP0108>
-   CMP0107: An ALIAS target cannot overwrite another target. </policy/CMP0107>
-   CMP0106: The Documentation module is removed. </policy/CMP0106>
-   CMP0105: Device link step uses the link options. </policy/CMP0105>
-   CMP0104: CMAKE_CUDA_ARCHITECTURES now detected for NVCC, empty CUDA_ARCHITECTURES not allowed. </policy/CMP0104>
-   CMP0103: Multiple export() with same FILE without APPEND is not allowed. </policy/CMP0103>
-
-Policies Introduced by CMake 3.17
-=================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0102: mark_as_advanced() does nothing if a cache entry does not exist. </policy/CMP0102>
-   CMP0101: target_compile_options honors BEFORE keyword in all scopes. </policy/CMP0101>
-   CMP0100: Let AUTOMOC and AUTOUIC process .hh header files. </policy/CMP0100>
-   CMP0099: Link properties are transitive over private dependency on static libraries. </policy/CMP0099>
-   CMP0098: FindFLEX runs flex in CMAKE_CURRENT_BINARY_DIR when executing. </policy/CMP0098>
-
-Policies Introduced by CMake 3.16
-=================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0097: ExternalProject_Add with GIT_SUBMODULES "" initializes no submodules. </policy/CMP0097>
-   CMP0096: project() preserves leading zeros in version components. </policy/CMP0096>
-   CMP0095: RPATH entries are properly escaped in the intermediary CMake install script. </policy/CMP0095>
-
-Policies Introduced by CMake 3.15
-=================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0094: FindPython3, FindPython2 and FindPython use LOCATION for lookup strategy. </policy/CMP0094>
-   CMP0093: FindBoost reports Boost_VERSION in x.y.z format. </policy/CMP0093>
-   CMP0092: MSVC warning flags are not in CMAKE_{C,CXX}_FLAGS by default. </policy/CMP0092>
-   CMP0091: MSVC runtime library flags are selected by an abstraction. </policy/CMP0091>
-   CMP0090: export(PACKAGE) does not populate package registry by default. </policy/CMP0090>
-   CMP0089: Compiler id for IBM Clang-based XL compilers is now XLClang. </policy/CMP0089>
-
-Policies Introduced by CMake 3.14
-=================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0088: FindBISON runs bison in CMAKE_CURRENT_BINARY_DIR when executing. </policy/CMP0088>
-   CMP0087: install(SCRIPT | CODE) supports generator expressions. </policy/CMP0087>
-   CMP0086: UseSWIG honors SWIG_MODULE_NAME via -module flag. </policy/CMP0086>
-   CMP0085: IN_LIST generator expression handles empty list items. </policy/CMP0085>
-   CMP0084: The FindQt module does not exist for find_package(). </policy/CMP0084>
-   CMP0083: Add PIE options when linking executable. </policy/CMP0083>
-   CMP0082: Install rules from add_subdirectory() are interleaved with those in caller. </policy/CMP0082>
-
-
-Policies Introduced by CMake 3.13
-=================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0081: Relative paths not allowed in LINK_DIRECTORIES target property. </policy/CMP0081>
-   CMP0080: BundleUtilities cannot be included at configure time. </policy/CMP0080>
-   CMP0079: target_link_libraries allows use with targets in other directories. </policy/CMP0079>
-   CMP0078: UseSWIG generates standard target names. </policy/CMP0078>
-   CMP0077: option() honors normal variables. </policy/CMP0077>
-   CMP0076: target_sources() command converts relative paths to absolute. </policy/CMP0076>
-
-Policies Introduced by CMake 3.12
-=================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0075: Include file check macros honor CMAKE_REQUIRED_LIBRARIES. </policy/CMP0075>
-   CMP0074: find_package uses PackageName_ROOT variables. </policy/CMP0074>
-   CMP0073: Do not produce legacy _LIB_DEPENDS cache entries. </policy/CMP0073>
-
-Policies Introduced by CMake 3.11
-=================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0072: FindOpenGL prefers GLVND by default when available. </policy/CMP0072>
-
-Policies Introduced by CMake 3.10
-=================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0071: Let AUTOMOC and AUTOUIC process GENERATED files. </policy/CMP0071>
-   CMP0070: Define file(GENERATE) behavior for relative paths. </policy/CMP0070>
-
-Policies Introduced by CMake 3.9
-================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0069: INTERPROCEDURAL_OPTIMIZATION is enforced when enabled. </policy/CMP0069>
-   CMP0068: RPATH settings on macOS do not affect install_name. </policy/CMP0068>
-
-Policies Introduced by CMake 3.8
-================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0067: Honor language standard in try_compile() source-file signature. </policy/CMP0067>
-
-Policies Introduced by CMake 3.7
-================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0066: Honor per-config flags in try_compile() source-file signature. </policy/CMP0066>
-
-Policies Introduced by CMake 3.4
-================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0065: Do not add flags to export symbols from executables without the ENABLE_EXPORTS target property. </policy/CMP0065>
-   CMP0064: Support new TEST if() operator. </policy/CMP0064>
-
-Policies Introduced by CMake 3.3
-================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0063: Honor visibility properties for all target types. </policy/CMP0063>
-   CMP0062: Disallow install() of export() result. </policy/CMP0062>
-   CMP0061: CTest does not by default tell make to ignore errors (-i). </policy/CMP0061>
-   CMP0060: Link libraries by full path even in implicit directories. </policy/CMP0060>
-   CMP0059: Do not treat DEFINITIONS as a built-in directory property. </policy/CMP0059>
-   CMP0058: Ninja requires custom command byproducts to be explicit. </policy/CMP0058>
-   CMP0057: Support new IN_LIST if() operator. </policy/CMP0057>
-
-Policies Introduced by CMake 3.2
-================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0056: Honor link flags in try_compile() source-file signature. </policy/CMP0056>
-   CMP0055: Strict checking for break() command. </policy/CMP0055>
-
-Policies Introduced by CMake 3.1
-================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0054: Only interpret if() arguments as variables or keywords when unquoted. </policy/CMP0054>
-   CMP0053: Simplify variable reference and escape sequence evaluation. </policy/CMP0053>
-   CMP0052: Reject source and build dirs in installed INTERFACE_INCLUDE_DIRECTORIES. </policy/CMP0052>
-   CMP0051: List TARGET_OBJECTS in SOURCES target property. </policy/CMP0051>
-
-Policies Introduced by CMake 3.0
-================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0050: Disallow add_custom_command SOURCE signatures. </policy/CMP0050>
-   CMP0049: Do not expand variables in target source entries. </policy/CMP0049>
-   CMP0048: project() command manages VERSION variables. </policy/CMP0048>
-   CMP0047: Use QCC compiler id for the qcc drivers on QNX. </policy/CMP0047>
-   CMP0046: Error on non-existent dependency in add_dependencies. </policy/CMP0046>
-   CMP0045: Error on non-existent target in get_target_property. </policy/CMP0045>
-   CMP0044: Case sensitive Lang_COMPILER_ID generator expressions. </policy/CMP0044>
-   CMP0043: Ignore COMPILE_DEFINITIONS_Config properties. </policy/CMP0043>
-   CMP0042: MACOSX_RPATH is enabled by default. </policy/CMP0042>
-   CMP0041: Error on relative include with generator expression. </policy/CMP0041>
-   CMP0040: The target in the TARGET signature of add_custom_command() must exist. </policy/CMP0040>
-   CMP0039: Utility targets may not have link dependencies. </policy/CMP0039>
-   CMP0038: Targets may not link directly to themselves. </policy/CMP0038>
-   CMP0037: Target names should not be reserved and should match a validity pattern. </policy/CMP0037>
-   CMP0036: The build_name command should not be called. </policy/CMP0036>
-   CMP0035: The variable_requires command should not be called. </policy/CMP0035>
-   CMP0034: The utility_source command should not be called. </policy/CMP0034>
-   CMP0033: The export_library_dependencies command should not be called. </policy/CMP0033>
-   CMP0032: The output_required_files command should not be called. </policy/CMP0032>
-   CMP0031: The load_command command should not be called. </policy/CMP0031>
-   CMP0030: The use_mangled_mesa command should not be called. </policy/CMP0030>
-   CMP0029: The subdir_depends command should not be called. </policy/CMP0029>
-   CMP0028: Double colon in target name means ALIAS or IMPORTED target. </policy/CMP0028>
-   CMP0027: Conditionally linked imported targets with missing include directories. </policy/CMP0027>
-   CMP0026: Disallow use of the LOCATION target property. </policy/CMP0026>
-   CMP0025: Compiler id for Apple Clang is now AppleClang. </policy/CMP0025>
-   CMP0024: Disallow include export result. </policy/CMP0024>
-
-Policies Introduced by CMake 2.8
-================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0023: Plain and keyword target_link_libraries signatures cannot be mixed. </policy/CMP0023>
-   CMP0022: INTERFACE_LINK_LIBRARIES defines the link interface. </policy/CMP0022>
-   CMP0021: Fatal error on relative paths in INCLUDE_DIRECTORIES target property. </policy/CMP0021>
-   CMP0020: Automatically link Qt executables to qtmain target on Windows. </policy/CMP0020>
-   CMP0019: Do not re-expand variables in include and link information. </policy/CMP0019>
-   CMP0018: Ignore CMAKE_SHARED_LIBRARY_Lang_FLAGS variable. </policy/CMP0018>
-   CMP0017: Prefer files from the CMake module directory when including from there. </policy/CMP0017>
-   CMP0016: target_link_libraries() reports error if its only argument is not a target. </policy/CMP0016>
-   CMP0015: link_directories() treats paths relative to the source dir. </policy/CMP0015>
-   CMP0014: Input directories must have CMakeLists.txt. </policy/CMP0014>
-   CMP0013: Duplicate binary directories are not allowed. </policy/CMP0013>
-   CMP0012: if() recognizes numbers and boolean constants. </policy/CMP0012>
-
-Policies Introduced by CMake 2.6
-================================
-
-.. toctree::
-   :maxdepth: 1
-
-   CMP0011: Included scripts do automatic cmake_policy PUSH and POP. </policy/CMP0011>
-   CMP0010: Bad variable reference syntax is an error. </policy/CMP0010>
-   CMP0009: FILE GLOB_RECURSE calls should not follow symlinks by default. </policy/CMP0009>
-   CMP0008: Libraries linked by full-path must have a valid library file name. </policy/CMP0008>
-   CMP0007: list command no longer ignores empty elements. </policy/CMP0007>
-   CMP0006: Installing MACOSX_BUNDLE targets requires a BUNDLE DESTINATION. </policy/CMP0006>
-   CMP0005: Preprocessor definition values are now escaped automatically. </policy/CMP0005>
-   CMP0004: Libraries linked may not have leading or trailing whitespace. </policy/CMP0004>
-   CMP0003: Libraries linked via full path no longer produce linker search paths. </policy/CMP0003>
-   CMP0002: Logical target names must be globally unique. </policy/CMP0002>
-   CMP0001: CMAKE_BACKWARDS_COMPATIBILITY should no longer be used. </policy/CMP0001>
-   CMP0000: A minimum required CMake version must be specified. </policy/CMP0000>
diff --git a/share/cmake-3.18/Help/manual/cmake-properties.7.rst b/share/cmake-3.18/Help/manual/cmake-properties.7.rst
deleted file mode 100644
index 30b2a05..0000000
--- a/share/cmake-3.18/Help/manual/cmake-properties.7.rst
+++ /dev/null
@@ -1,574 +0,0 @@
-.. cmake-manual-description: CMake Properties Reference
-
-cmake-properties(7)
-*******************
-
-.. only:: html
-
-   .. contents::
-
-.. _`Global Properties`:
-
-Properties of Global Scope
-==========================
-
-.. toctree::
-   :maxdepth: 1
-
-   /prop_gbl/ALLOW_DUPLICATE_CUSTOM_TARGETS
-   /prop_gbl/AUTOGEN_SOURCE_GROUP
-   /prop_gbl/AUTOGEN_TARGETS_FOLDER
-   /prop_gbl/AUTOMOC_SOURCE_GROUP
-   /prop_gbl/AUTOMOC_TARGETS_FOLDER
-   /prop_gbl/AUTORCC_SOURCE_GROUP
-   /prop_gbl/CMAKE_C_KNOWN_FEATURES
-   /prop_gbl/CMAKE_CUDA_KNOWN_FEATURES
-   /prop_gbl/CMAKE_CXX_KNOWN_FEATURES
-   /prop_gbl/CMAKE_ROLE
-   /prop_gbl/DEBUG_CONFIGURATIONS
-   /prop_gbl/DISABLED_FEATURES
-   /prop_gbl/ECLIPSE_EXTRA_CPROJECT_CONTENTS
-   /prop_gbl/ECLIPSE_EXTRA_NATURES
-   /prop_gbl/ENABLED_FEATURES
-   /prop_gbl/ENABLED_LANGUAGES
-   /prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS
-   /prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS
-   /prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS
-   /prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING
-   /prop_gbl/GENERATOR_IS_MULTI_CONFIG
-   /prop_gbl/GLOBAL_DEPENDS_DEBUG_MODE
-   /prop_gbl/GLOBAL_DEPENDS_NO_CYCLES
-   /prop_gbl/IN_TRY_COMPILE
-   /prop_gbl/JOB_POOLS
-   /prop_gbl/PACKAGES_FOUND
-   /prop_gbl/PACKAGES_NOT_FOUND
-   /prop_gbl/PREDEFINED_TARGETS_FOLDER
-   /prop_gbl/REPORT_UNDEFINED_PROPERTIES
-   /prop_gbl/RULE_LAUNCH_COMPILE
-   /prop_gbl/RULE_LAUNCH_CUSTOM
-   /prop_gbl/RULE_LAUNCH_LINK
-   /prop_gbl/RULE_MESSAGES
-   /prop_gbl/TARGET_ARCHIVES_MAY_BE_SHARED_LIBS
-   /prop_gbl/TARGET_MESSAGES
-   /prop_gbl/TARGET_SUPPORTS_SHARED_LIBS
-   /prop_gbl/USE_FOLDERS
-   /prop_gbl/XCODE_EMIT_EFFECTIVE_PLATFORM_NAME
-
-.. _`Directory Properties`:
-
-Properties on Directories
-=========================
-
-.. toctree::
-   :maxdepth: 1
-
-   /prop_dir/ADDITIONAL_CLEAN_FILES
-   /prop_dir/BINARY_DIR
-   /prop_dir/BUILDSYSTEM_TARGETS
-   /prop_dir/CACHE_VARIABLES
-   /prop_dir/CLEAN_NO_CUSTOM
-   /prop_dir/CMAKE_CONFIGURE_DEPENDS
-   /prop_dir/COMPILE_DEFINITIONS
-   /prop_dir/COMPILE_OPTIONS
-   /prop_dir/DEFINITIONS
-   /prop_dir/EXCLUDE_FROM_ALL
-   /prop_dir/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
-   /prop_dir/INCLUDE_DIRECTORIES
-   /prop_dir/INCLUDE_REGULAR_EXPRESSION
-   /prop_dir/INTERPROCEDURAL_OPTIMIZATION_CONFIG
-   /prop_dir/INTERPROCEDURAL_OPTIMIZATION
-   /prop_dir/LABELS
-   /prop_dir/LINK_DIRECTORIES
-   /prop_dir/LINK_OPTIONS
-   /prop_dir/LISTFILE_STACK
-   /prop_dir/MACROS
-   /prop_dir/PARENT_DIRECTORY
-   /prop_dir/RULE_LAUNCH_COMPILE
-   /prop_dir/RULE_LAUNCH_CUSTOM
-   /prop_dir/RULE_LAUNCH_LINK
-   /prop_dir/SOURCE_DIR
-   /prop_dir/SUBDIRECTORIES
-   /prop_dir/TESTS
-   /prop_dir/TEST_INCLUDE_FILES
-   /prop_dir/VARIABLES
-   /prop_dir/VS_GLOBAL_SECTION_POST_section
-   /prop_dir/VS_GLOBAL_SECTION_PRE_section
-   /prop_dir/VS_STARTUP_PROJECT
-
-.. _`Target Properties`:
-
-Properties on Targets
-=====================
-
-.. toctree::
-   :maxdepth: 1
-
-   /prop_tgt/ADDITIONAL_CLEAN_FILES
-   /prop_tgt/AIX_EXPORT_ALL_SYMBOLS
-   /prop_tgt/ALIAS_GLOBAL
-   /prop_tgt/ALIASED_TARGET
-   /prop_tgt/ANDROID_ANT_ADDITIONAL_OPTIONS
-   /prop_tgt/ANDROID_API
-   /prop_tgt/ANDROID_API_MIN
-   /prop_tgt/ANDROID_ARCH
-   /prop_tgt/ANDROID_ASSETS_DIRECTORIES
-   /prop_tgt/ANDROID_GUI
-   /prop_tgt/ANDROID_JAR_DEPENDENCIES
-   /prop_tgt/ANDROID_JAR_DIRECTORIES
-   /prop_tgt/ANDROID_JAVA_SOURCE_DIR
-   /prop_tgt/ANDROID_NATIVE_LIB_DEPENDENCIES
-   /prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES
-   /prop_tgt/ANDROID_PROCESS_MAX
-   /prop_tgt/ANDROID_PROGUARD
-   /prop_tgt/ANDROID_PROGUARD_CONFIG_PATH
-   /prop_tgt/ANDROID_SECURE_PROPS_PATH
-   /prop_tgt/ANDROID_SKIP_ANT_STEP
-   /prop_tgt/ANDROID_STL_TYPE
-   /prop_tgt/ARCHIVE_OUTPUT_DIRECTORY_CONFIG
-   /prop_tgt/ARCHIVE_OUTPUT_DIRECTORY
-   /prop_tgt/ARCHIVE_OUTPUT_NAME_CONFIG
-   /prop_tgt/ARCHIVE_OUTPUT_NAME
-   /prop_tgt/AUTOGEN_BUILD_DIR
-   /prop_tgt/AUTOGEN_ORIGIN_DEPENDS
-   /prop_tgt/AUTOGEN_PARALLEL
-   /prop_tgt/AUTOGEN_TARGET_DEPENDS
-   /prop_tgt/AUTOMOC
-   /prop_tgt/AUTOMOC_COMPILER_PREDEFINES
-   /prop_tgt/AUTOMOC_DEPEND_FILTERS
-   /prop_tgt/AUTOMOC_EXECUTABLE
-   /prop_tgt/AUTOMOC_MACRO_NAMES
-   /prop_tgt/AUTOMOC_MOC_OPTIONS
-   /prop_tgt/AUTOMOC_PATH_PREFIX
-   /prop_tgt/AUTORCC
-   /prop_tgt/AUTORCC_EXECUTABLE
-   /prop_tgt/AUTORCC_OPTIONS
-   /prop_tgt/AUTOUIC
-   /prop_tgt/AUTOUIC_EXECUTABLE
-   /prop_tgt/AUTOUIC_OPTIONS
-   /prop_tgt/AUTOUIC_SEARCH_PATHS
-   /prop_tgt/BINARY_DIR
-   /prop_tgt/BUILD_RPATH
-   /prop_tgt/BUILD_RPATH_USE_ORIGIN
-   /prop_tgt/BUILD_WITH_INSTALL_NAME_DIR
-   /prop_tgt/BUILD_WITH_INSTALL_RPATH
-   /prop_tgt/BUNDLE_EXTENSION
-   /prop_tgt/BUNDLE
-   /prop_tgt/C_EXTENSIONS
-   /prop_tgt/C_STANDARD
-   /prop_tgt/C_STANDARD_REQUIRED
-   /prop_tgt/COMMON_LANGUAGE_RUNTIME
-   /prop_tgt/COMPATIBLE_INTERFACE_BOOL
-   /prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MAX
-   /prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MIN
-   /prop_tgt/COMPATIBLE_INTERFACE_STRING
-   /prop_tgt/COMPILE_DEFINITIONS
-   /prop_tgt/COMPILE_FEATURES
-   /prop_tgt/COMPILE_FLAGS
-   /prop_tgt/COMPILE_OPTIONS
-   /prop_tgt/COMPILE_PDB_NAME
-   /prop_tgt/COMPILE_PDB_NAME_CONFIG
-   /prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY
-   /prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG
-   /prop_tgt/CONFIG_OUTPUT_NAME
-   /prop_tgt/CONFIG_POSTFIX
-   /prop_tgt/CROSSCOMPILING_EMULATOR
-   /prop_tgt/CUDA_ARCHITECTURES
-   /prop_tgt/CUDA_PTX_COMPILATION
-   /prop_tgt/CUDA_SEPARABLE_COMPILATION
-   /prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS
-   /prop_tgt/CUDA_RUNTIME_LIBRARY
-   /prop_tgt/CUDA_EXTENSIONS
-   /prop_tgt/CUDA_STANDARD
-   /prop_tgt/CUDA_STANDARD_REQUIRED
-   /prop_tgt/CXX_EXTENSIONS
-   /prop_tgt/CXX_STANDARD
-   /prop_tgt/CXX_STANDARD_REQUIRED
-   /prop_tgt/DEBUG_POSTFIX
-   /prop_tgt/DEFINE_SYMBOL
-   /prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY
-   /prop_tgt/DEPLOYMENT_ADDITIONAL_FILES
-   /prop_tgt/DEPRECATION
-   /prop_tgt/DISABLE_PRECOMPILE_HEADERS
-   /prop_tgt/DOTNET_TARGET_FRAMEWORK
-   /prop_tgt/DOTNET_TARGET_FRAMEWORK_VERSION
-   /prop_tgt/EchoString
-   /prop_tgt/ENABLE_EXPORTS
-   /prop_tgt/EXCLUDE_FROM_ALL
-   /prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD_CONFIG
-   /prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD
-   /prop_tgt/EXPORT_NAME
-   /prop_tgt/EXPORT_PROPERTIES
-   /prop_tgt/FOLDER
-   /prop_tgt/Fortran_FORMAT
-   /prop_tgt/Fortran_MODULE_DIRECTORY
-   /prop_tgt/Fortran_PREPROCESS
-   /prop_tgt/FRAMEWORK
-   /prop_tgt/FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG
-   /prop_tgt/FRAMEWORK_VERSION
-   /prop_tgt/GENERATOR_FILE_NAME
-   /prop_tgt/GHS_INTEGRITY_APP
-   /prop_tgt/GHS_NO_SOURCE_GROUP_FILE
-   /prop_tgt/GNUtoMS
-   /prop_tgt/HAS_CXX
-   /prop_tgt/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
-   /prop_tgt/IMPORTED_COMMON_LANGUAGE_RUNTIME
-   /prop_tgt/IMPORTED_CONFIGURATIONS
-   /prop_tgt/IMPORTED_GLOBAL
-   /prop_tgt/IMPORTED_IMPLIB_CONFIG
-   /prop_tgt/IMPORTED_IMPLIB
-   /prop_tgt/IMPORTED_LIBNAME_CONFIG
-   /prop_tgt/IMPORTED_LIBNAME
-   /prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES_CONFIG
-   /prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES
-   /prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES_CONFIG
-   /prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES
-   /prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES_CONFIG
-   /prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES
-   /prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY_CONFIG
-   /prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY
-   /prop_tgt/IMPORTED_LOCATION_CONFIG
-   /prop_tgt/IMPORTED_LOCATION
-   /prop_tgt/IMPORTED_NO_SONAME_CONFIG
-   /prop_tgt/IMPORTED_NO_SONAME
-   /prop_tgt/IMPORTED_OBJECTS_CONFIG
-   /prop_tgt/IMPORTED_OBJECTS
-   /prop_tgt/IMPORTED
-   /prop_tgt/IMPORTED_SONAME_CONFIG
-   /prop_tgt/IMPORTED_SONAME
-   /prop_tgt/IMPORT_PREFIX
-   /prop_tgt/IMPORT_SUFFIX
-   /prop_tgt/INCLUDE_DIRECTORIES
-   /prop_tgt/INSTALL_NAME_DIR
-   /prop_tgt/INSTALL_REMOVE_ENVIRONMENT_RPATH
-   /prop_tgt/INSTALL_RPATH
-   /prop_tgt/INSTALL_RPATH_USE_LINK_PATH
-   /prop_tgt/INTERFACE_AUTOUIC_OPTIONS
-   /prop_tgt/INTERFACE_COMPILE_DEFINITIONS
-   /prop_tgt/INTERFACE_COMPILE_FEATURES
-   /prop_tgt/INTERFACE_COMPILE_OPTIONS
-   /prop_tgt/INTERFACE_INCLUDE_DIRECTORIES
-   /prop_tgt/INTERFACE_LINK_DEPENDS
-   /prop_tgt/INTERFACE_LINK_DIRECTORIES
-   /prop_tgt/INTERFACE_LINK_LIBRARIES
-   /prop_tgt/INTERFACE_LINK_OPTIONS
-   /prop_tgt/INTERFACE_PRECOMPILE_HEADERS
-   /prop_tgt/INTERFACE_POSITION_INDEPENDENT_CODE
-   /prop_tgt/INTERFACE_SOURCES
-   /prop_tgt/INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
-   /prop_tgt/INTERPROCEDURAL_OPTIMIZATION_CONFIG
-   /prop_tgt/INTERPROCEDURAL_OPTIMIZATION
-   /prop_tgt/IOS_INSTALL_COMBINED
-   /prop_tgt/JOB_POOL_COMPILE
-   /prop_tgt/JOB_POOL_LINK
-   /prop_tgt/JOB_POOL_PRECOMPILE_HEADER
-   /prop_tgt/LABELS
-   /prop_tgt/LANG_CLANG_TIDY
-   /prop_tgt/LANG_COMPILER_LAUNCHER
-   /prop_tgt/LANG_CPPCHECK
-   /prop_tgt/LANG_CPPLINT
-   /prop_tgt/LANG_INCLUDE_WHAT_YOU_USE
-   /prop_tgt/LANG_VISIBILITY_PRESET
-   /prop_tgt/LIBRARY_OUTPUT_DIRECTORY_CONFIG
-   /prop_tgt/LIBRARY_OUTPUT_DIRECTORY
-   /prop_tgt/LIBRARY_OUTPUT_NAME_CONFIG
-   /prop_tgt/LIBRARY_OUTPUT_NAME
-   /prop_tgt/LINK_DEPENDS_NO_SHARED
-   /prop_tgt/LINK_DEPENDS
-   /prop_tgt/LINKER_LANGUAGE
-   /prop_tgt/LINK_DIRECTORIES
-   /prop_tgt/LINK_FLAGS_CONFIG
-   /prop_tgt/LINK_FLAGS
-   /prop_tgt/LINK_INTERFACE_LIBRARIES_CONFIG
-   /prop_tgt/LINK_INTERFACE_LIBRARIES
-   /prop_tgt/LINK_INTERFACE_MULTIPLICITY_CONFIG
-   /prop_tgt/LINK_INTERFACE_MULTIPLICITY
-   /prop_tgt/LINK_LIBRARIES
-   /prop_tgt/LINK_OPTIONS
-   /prop_tgt/LINK_SEARCH_END_STATIC
-   /prop_tgt/LINK_SEARCH_START_STATIC
-   /prop_tgt/LINK_WHAT_YOU_USE
-   /prop_tgt/LOCATION_CONFIG
-   /prop_tgt/LOCATION
-   /prop_tgt/MACHO_COMPATIBILITY_VERSION
-   /prop_tgt/MACHO_CURRENT_VERSION
-   /prop_tgt/MACOSX_BUNDLE_INFO_PLIST
-   /prop_tgt/MACOSX_BUNDLE
-   /prop_tgt/MACOSX_FRAMEWORK_INFO_PLIST
-   /prop_tgt/MACOSX_RPATH
-   /prop_tgt/MANUALLY_ADDED_DEPENDENCIES
-   /prop_tgt/MAP_IMPORTED_CONFIG_CONFIG
-   /prop_tgt/MSVC_RUNTIME_LIBRARY
-   /prop_tgt/NAME
-   /prop_tgt/NO_SONAME
-   /prop_tgt/NO_SYSTEM_FROM_IMPORTED
-   /prop_tgt/OBJC_EXTENSIONS
-   /prop_tgt/OBJC_STANDARD
-   /prop_tgt/OBJC_STANDARD_REQUIRED
-   /prop_tgt/OBJCXX_EXTENSIONS
-   /prop_tgt/OBJCXX_STANDARD
-   /prop_tgt/OBJCXX_STANDARD_REQUIRED
-   /prop_tgt/OSX_ARCHITECTURES_CONFIG
-   /prop_tgt/OSX_ARCHITECTURES
-   /prop_tgt/OUTPUT_NAME_CONFIG
-   /prop_tgt/OUTPUT_NAME
-   /prop_tgt/PCH_WARN_INVALID
-   /prop_tgt/PDB_NAME_CONFIG
-   /prop_tgt/PDB_NAME
-   /prop_tgt/PDB_OUTPUT_DIRECTORY_CONFIG
-   /prop_tgt/PDB_OUTPUT_DIRECTORY
-   /prop_tgt/POSITION_INDEPENDENT_CODE
-   /prop_tgt/PRECOMPILE_HEADERS
-   /prop_tgt/PRECOMPILE_HEADERS_REUSE_FROM
-   /prop_tgt/PREFIX
-   /prop_tgt/PRIVATE_HEADER
-   /prop_tgt/PROJECT_LABEL
-   /prop_tgt/PUBLIC_HEADER
-   /prop_tgt/RESOURCE
-   /prop_tgt/RULE_LAUNCH_COMPILE
-   /prop_tgt/RULE_LAUNCH_CUSTOM
-   /prop_tgt/RULE_LAUNCH_LINK
-   /prop_tgt/RUNTIME_OUTPUT_DIRECTORY_CONFIG
-   /prop_tgt/RUNTIME_OUTPUT_DIRECTORY
-   /prop_tgt/RUNTIME_OUTPUT_NAME_CONFIG
-   /prop_tgt/RUNTIME_OUTPUT_NAME
-   /prop_tgt/SKIP_BUILD_RPATH
-   /prop_tgt/SOURCE_DIR
-   /prop_tgt/SOURCES
-   /prop_tgt/SOVERSION
-   /prop_tgt/STATIC_LIBRARY_FLAGS_CONFIG
-   /prop_tgt/STATIC_LIBRARY_FLAGS
-   /prop_tgt/STATIC_LIBRARY_OPTIONS
-   /prop_tgt/SUFFIX
-   /prop_tgt/Swift_DEPENDENCIES_FILE
-   /prop_tgt/Swift_LANGUAGE_VERSION
-   /prop_tgt/Swift_MODULE_DIRECTORY
-   /prop_tgt/Swift_MODULE_NAME
-   /prop_tgt/TYPE
-   /prop_tgt/UNITY_BUILD
-   /prop_tgt/UNITY_BUILD_BATCH_SIZE
-   /prop_tgt/UNITY_BUILD_CODE_AFTER_INCLUDE
-   /prop_tgt/UNITY_BUILD_CODE_BEFORE_INCLUDE
-   /prop_tgt/UNITY_BUILD_MODE
-   /prop_tgt/VERSION
-   /prop_tgt/VISIBILITY_INLINES_HIDDEN
-   /prop_tgt/VS_CONFIGURATION_TYPE
-   /prop_tgt/VS_DEBUGGER_COMMAND
-   /prop_tgt/VS_DEBUGGER_COMMAND_ARGUMENTS
-   /prop_tgt/VS_DEBUGGER_ENVIRONMENT
-   /prop_tgt/VS_DEBUGGER_WORKING_DIRECTORY
-   /prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION
-   /prop_tgt/VS_DOTNET_REFERENCE_refname
-   /prop_tgt/VS_DOTNET_REFERENCEPROP_refname_TAG_tagname
-   /prop_tgt/VS_DOTNET_REFERENCES
-   /prop_tgt/VS_DOTNET_REFERENCES_COPY_LOCAL
-   /prop_tgt/VS_DOTNET_TARGET_FRAMEWORK_VERSION
-   /prop_tgt/VS_DOTNET_DOCUMENTATION_FILE
-   /prop_tgt/VS_DPI_AWARE
-   /prop_tgt/VS_GLOBAL_KEYWORD
-   /prop_tgt/VS_GLOBAL_PROJECT_TYPES
-   /prop_tgt/VS_GLOBAL_ROOTNAMESPACE
-   /prop_tgt/VS_GLOBAL_variable
-   /prop_tgt/VS_IOT_EXTENSIONS_VERSION
-   /prop_tgt/VS_IOT_STARTUP_TASK
-   /prop_tgt/VS_JUST_MY_CODE_DEBUGGING
-   /prop_tgt/VS_KEYWORD
-   /prop_tgt/VS_MOBILE_EXTENSIONS_VERSION
-   /prop_tgt/VS_NO_SOLUTION_DEPLOY
-   /prop_tgt/VS_PACKAGE_REFERENCES
-   /prop_tgt/VS_PLATFORM_TOOLSET
-   /prop_tgt/VS_PROJECT_IMPORT
-   /prop_tgt/VS_SCC_AUXPATH
-   /prop_tgt/VS_SCC_LOCALPATH
-   /prop_tgt/VS_SCC_PROJECTNAME
-   /prop_tgt/VS_SCC_PROVIDER
-   /prop_tgt/VS_SDK_REFERENCES
-   /prop_tgt/VS_SOLUTION_DEPLOY
-   /prop_tgt/VS_SOURCE_SETTINGS_tool
-   /prop_tgt/VS_USER_PROPS
-   /prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION
-   /prop_tgt/VS_WINRT_COMPONENT
-   /prop_tgt/VS_WINRT_EXTENSIONS
-   /prop_tgt/VS_WINRT_REFERENCES
-   /prop_tgt/WIN32_EXECUTABLE
-   /prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS
-   /prop_tgt/XCODE_ATTRIBUTE_an-attribute
-   /prop_tgt/XCODE_EXPLICIT_FILE_TYPE
-   /prop_tgt/XCODE_GENERATE_SCHEME
-   /prop_tgt/XCODE_PRODUCT_TYPE
-   /prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER
-   /prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
-   /prop_tgt/XCODE_SCHEME_ARGUMENTS
-   /prop_tgt/XCODE_SCHEME_DEBUG_AS_ROOT
-   /prop_tgt/XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
-   /prop_tgt/XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
-   /prop_tgt/XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
-   /prop_tgt/XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
-   /prop_tgt/XCODE_SCHEME_ENVIRONMENT
-   /prop_tgt/XCODE_SCHEME_EXECUTABLE
-   /prop_tgt/XCODE_SCHEME_GUARD_MALLOC
-   /prop_tgt/XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
-   /prop_tgt/XCODE_SCHEME_MALLOC_GUARD_EDGES
-   /prop_tgt/XCODE_SCHEME_MALLOC_SCRIBBLE
-   /prop_tgt/XCODE_SCHEME_MALLOC_STACK
-   /prop_tgt/XCODE_SCHEME_THREAD_SANITIZER
-   /prop_tgt/XCODE_SCHEME_THREAD_SANITIZER_STOP
-   /prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
-   /prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
-   /prop_tgt/XCODE_SCHEME_WORKING_DIRECTORY
-   /prop_tgt/XCODE_SCHEME_ZOMBIE_OBJECTS
-   /prop_tgt/XCTEST
-
-.. _`Test Properties`:
-
-Properties on Tests
-===================
-
-.. toctree::
-   :maxdepth: 1
-
-   /prop_test/ATTACHED_FILES_ON_FAIL
-   /prop_test/ATTACHED_FILES
-   /prop_test/COST
-   /prop_test/DEPENDS
-   /prop_test/DISABLED
-   /prop_test/ENVIRONMENT
-   /prop_test/FAIL_REGULAR_EXPRESSION
-   /prop_test/FIXTURES_CLEANUP
-   /prop_test/FIXTURES_REQUIRED
-   /prop_test/FIXTURES_SETUP
-   /prop_test/LABELS
-   /prop_test/MEASUREMENT
-   /prop_test/PASS_REGULAR_EXPRESSION
-   /prop_test/PROCESSOR_AFFINITY
-   /prop_test/PROCESSORS
-   /prop_test/REQUIRED_FILES
-   /prop_test/RESOURCE_GROUPS
-   /prop_test/RESOURCE_LOCK
-   /prop_test/RUN_SERIAL
-   /prop_test/SKIP_REGULAR_EXPRESSION
-   /prop_test/SKIP_RETURN_CODE
-   /prop_test/TIMEOUT
-   /prop_test/TIMEOUT_AFTER_MATCH
-   /prop_test/WILL_FAIL
-   /prop_test/WORKING_DIRECTORY
-
-.. _`Source File Properties`:
-
-Properties on Source Files
-==========================
-
-.. toctree::
-   :maxdepth: 1
-
-   /prop_sf/ABSTRACT
-   /prop_sf/AUTORCC_OPTIONS
-   /prop_sf/AUTOUIC_OPTIONS
-   /prop_sf/COMPILE_DEFINITIONS
-   /prop_sf/COMPILE_FLAGS
-   /prop_sf/COMPILE_OPTIONS
-   /prop_sf/EXTERNAL_OBJECT
-   /prop_sf/Fortran_FORMAT
-   /prop_sf/Fortran_PREPROCESS
-   /prop_sf/GENERATED
-   /prop_sf/HEADER_FILE_ONLY
-   /prop_sf/INCLUDE_DIRECTORIES
-   /prop_sf/KEEP_EXTENSION
-   /prop_sf/LABELS
-   /prop_sf/LANGUAGE
-   /prop_sf/LOCATION
-   /prop_sf/MACOSX_PACKAGE_LOCATION
-   /prop_sf/OBJECT_DEPENDS
-   /prop_sf/OBJECT_OUTPUTS
-   /prop_sf/SKIP_AUTOGEN
-   /prop_sf/SKIP_AUTOMOC
-   /prop_sf/SKIP_AUTORCC
-   /prop_sf/SKIP_AUTOUIC
-   /prop_sf/SKIP_PRECOMPILE_HEADERS
-   /prop_sf/SKIP_UNITY_BUILD_INCLUSION
-   /prop_sf/Swift_DEPENDENCIES_FILE
-   /prop_sf/Swift_DIAGNOSTICS_FILE
-   /prop_sf/SYMBOLIC
-   /prop_sf/UNITY_GROUP
-   /prop_sf/VS_COPY_TO_OUT_DIR
-   /prop_sf/VS_CSHARP_tagname
-   /prop_sf/VS_DEPLOYMENT_CONTENT
-   /prop_sf/VS_DEPLOYMENT_LOCATION
-   /prop_sf/VS_INCLUDE_IN_VSIX
-   /prop_sf/VS_RESOURCE_GENERATOR
-   /prop_sf/VS_SETTINGS
-   /prop_sf/VS_SHADER_DISABLE_OPTIMIZATIONS
-   /prop_sf/VS_SHADER_ENABLE_DEBUG
-   /prop_sf/VS_SHADER_ENTRYPOINT
-   /prop_sf/VS_SHADER_FLAGS
-   /prop_sf/VS_SHADER_MODEL
-   /prop_sf/VS_SHADER_OBJECT_FILE_NAME
-   /prop_sf/VS_SHADER_OUTPUT_HEADER_FILE
-   /prop_sf/VS_SHADER_TYPE
-   /prop_sf/VS_SHADER_VARIABLE_NAME
-   /prop_sf/VS_TOOL_OVERRIDE.rst
-   /prop_sf/VS_XAML_TYPE
-   /prop_sf/WRAP_EXCLUDE
-   /prop_sf/XCODE_EXPLICIT_FILE_TYPE
-   /prop_sf/XCODE_FILE_ATTRIBUTES
-   /prop_sf/XCODE_LAST_KNOWN_FILE_TYPE
-
-.. _`Cache Entry Properties`:
-
-Properties on Cache Entries
-===========================
-
-.. toctree::
-   :maxdepth: 1
-
-   /prop_cache/ADVANCED
-   /prop_cache/HELPSTRING
-   /prop_cache/MODIFIED
-   /prop_cache/STRINGS
-   /prop_cache/TYPE
-   /prop_cache/VALUE
-
-.. _`Installed File Properties`:
-
-Properties on Installed Files
-=============================
-
-.. toctree::
-   :maxdepth: 1
-
-   /prop_inst/CPACK_DESKTOP_SHORTCUTS.rst
-   /prop_inst/CPACK_NEVER_OVERWRITE.rst
-   /prop_inst/CPACK_PERMANENT.rst
-   /prop_inst/CPACK_START_MENU_SHORTCUTS.rst
-   /prop_inst/CPACK_STARTUP_SHORTCUTS.rst
-   /prop_inst/CPACK_WIX_ACL.rst
-
-
-Deprecated Properties on Directories
-====================================
-
-.. toctree::
-   :maxdepth: 1
-
-   /prop_dir/ADDITIONAL_MAKE_CLEAN_FILES
-   /prop_dir/COMPILE_DEFINITIONS_CONFIG
-   /prop_dir/TEST_INCLUDE_FILE
-
-
-Deprecated Properties on Targets
-================================
-
-.. toctree::
-   :maxdepth: 1
-
-   /prop_tgt/COMPILE_DEFINITIONS_CONFIG
-   /prop_tgt/POST_INSTALL_SCRIPT
-   /prop_tgt/PRE_INSTALL_SCRIPT
-
-
-Deprecated Properties on Source Files
-=====================================
-
-.. toctree::
-   :maxdepth: 1
-
-   /prop_sf/COMPILE_DEFINITIONS_CONFIG
diff --git a/share/cmake-3.18/Help/manual/cmake-qt.7.rst b/share/cmake-3.18/Help/manual/cmake-qt.7.rst
deleted file mode 100644
index d8d6172..0000000
--- a/share/cmake-3.18/Help/manual/cmake-qt.7.rst
+++ /dev/null
@@ -1,259 +0,0 @@
-.. cmake-manual-description: CMake Qt Features Reference
-
-cmake-qt(7)
-***********
-
-.. only:: html
-
-   .. contents::
-
-Introduction
-============
-
-CMake can find and use Qt 4 and Qt 5 libraries.  The Qt 4 libraries are found
-by the :module:`FindQt4` find-module shipped with CMake, whereas the
-Qt 5 libraries are found using "Config-file Packages" shipped with Qt 5. See
-:manual:`cmake-packages(7)` for more information about CMake packages, and
-see `the Qt cmake manual <http://qt-project.org/doc/qt-5/cmake-manual.html>`_
-for your Qt version.
-
-Qt 4 and Qt 5 may be used together in the same
-:manual:`CMake buildsystem <cmake-buildsystem(7)>`:
-
-.. code-block:: cmake
-
-  cmake_minimum_required(VERSION 3.8.0 FATAL_ERROR)
-
-  project(Qt4And5)
-
-  set(CMAKE_AUTOMOC ON)
-
-  find_package(Qt5 COMPONENTS Widgets DBus REQUIRED)
-  add_executable(publisher publisher.cpp)
-  target_link_libraries(publisher Qt5::Widgets Qt5::DBus)
-
-  find_package(Qt4 REQUIRED)
-  add_executable(subscriber subscriber.cpp)
-  target_link_libraries(subscriber Qt4::QtGui Qt4::QtDBus)
-
-A CMake target may not link to both Qt 4 and Qt 5.  A diagnostic is issued if
-this is attempted or results from transitive target dependency evaluation.
-
-Qt Build Tools
-==============
-
-Qt relies on some bundled tools for code generation, such as ``moc`` for
-meta-object code generation, ``uic`` for widget layout and population,
-and ``rcc`` for virtual file system content generation.  These tools may be
-automatically invoked by :manual:`cmake(1)` if the appropriate conditions
-are met.  The automatic tool invocation may be used with both Qt 4 and Qt 5.
-
-AUTOMOC
-^^^^^^^
-
-The :prop_tgt:`AUTOMOC` target property controls whether :manual:`cmake(1)`
-inspects the C++ files in the target to determine if they require ``moc`` to
-be run, and to create rules to execute ``moc`` at the appropriate time.
-
-If a macro from :prop_tgt:`AUTOMOC_MACRO_NAMES` is found in a header file,
-``moc`` will be run on the file.  The result will be put into a file named
-according to ``moc_<basename>.cpp``.
-If the macro is found in a C++ implementation
-file, the moc output will be put into a file named according to
-``<basename>.moc``, following the Qt conventions.  The ``<basename>.moc`` must
-be included by the user in the C++ implementation file with a preprocessor
-``#include``.
-
-Included ``moc_*.cpp`` and ``*.moc`` files will be generated in the
-``<AUTOGEN_BUILD_DIR>/include`` directory which is
-automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`.
-
-* This differs from CMake 3.7 and below; see their documentation for details.
-
-* For :prop_gbl:`multi configuration generators <GENERATOR_IS_MULTI_CONFIG>`,
-  the include directory is ``<AUTOGEN_BUILD_DIR>/include_<CONFIG>``.
-
-* See :prop_tgt:`AUTOGEN_BUILD_DIR`.
-
-Not included ``moc_<basename>.cpp`` files will be generated in custom
-folders to avoid name collisions and included in a separate
-``<AUTOGEN_BUILD_DIR>/mocs_compilation.cpp`` file which is compiled
-into the target.
-
-* See :prop_tgt:`AUTOGEN_BUILD_DIR`.
-
-The ``moc`` command line will consume the :prop_tgt:`COMPILE_DEFINITIONS` and
-:prop_tgt:`INCLUDE_DIRECTORIES` target properties from the target it is being
-invoked for, and for the appropriate build configuration.
-
-The :prop_tgt:`AUTOMOC` target property may be pre-set for all
-following targets by setting the :variable:`CMAKE_AUTOMOC` variable.  The
-:prop_tgt:`AUTOMOC_MOC_OPTIONS` target property may be populated to set
-options to pass to ``moc``. The :variable:`CMAKE_AUTOMOC_MOC_OPTIONS`
-variable may be populated to pre-set the options for all following targets.
-
-Additional macro names to search for can be added to
-:prop_tgt:`AUTOMOC_MACRO_NAMES`.
-
-Additional ``moc`` dependency file names can be extracted from source code
-by using :prop_tgt:`AUTOMOC_DEPEND_FILTERS`.
-
-Source C++ files can be excluded from :prop_tgt:`AUTOMOC` processing by
-enabling :prop_sf:`SKIP_AUTOMOC` or the broader :prop_sf:`SKIP_AUTOGEN`.
-
-.. _`Qt AUTOUIC`:
-
-AUTOUIC
-^^^^^^^
-
-The :prop_tgt:`AUTOUIC` target property controls whether :manual:`cmake(1)`
-inspects the C++ files in the target to determine if they require ``uic`` to
-be run, and to create rules to execute ``uic`` at the appropriate time.
-
-If a preprocessor ``#include`` directive is found which matches
-``<path>ui_<basename>.h``, and a ``<basename>.ui`` file exists,
-then ``uic`` will be executed to generate the appropriate file.
-The ``<basename>.ui`` file is searched for in the following places
-
-1. ``<source_dir>/<basename>.ui``
-2. ``<source_dir>/<path><basename>.ui``
-3. ``<AUTOUIC_SEARCH_PATHS>/<basename>.ui``
-4. ``<AUTOUIC_SEARCH_PATHS>/<path><basename>.ui``
-
-where ``<source_dir>`` is the directory of the C++ file and
-:prop_tgt:`AUTOUIC_SEARCH_PATHS` is a list of additional search paths.
-
-The generated generated ``ui_*.h`` files are placed in the
-``<AUTOGEN_BUILD_DIR>/include`` directory which is
-automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`.
-
-* This differs from CMake 3.7 and below; see their documentation for details.
-
-* For :prop_gbl:`multi configuration generators <GENERATOR_IS_MULTI_CONFIG>`,
-  the include directory is ``<AUTOGEN_BUILD_DIR>/include_<CONFIG>``.
-
-* See :prop_tgt:`AUTOGEN_BUILD_DIR`.
-
-The :prop_tgt:`AUTOUIC` target property may be pre-set for all following
-targets by setting the :variable:`CMAKE_AUTOUIC` variable.  The
-:prop_tgt:`AUTOUIC_OPTIONS` target property may be populated to set options
-to pass to ``uic``.  The :variable:`CMAKE_AUTOUIC_OPTIONS` variable may be
-populated to pre-set the options for all following targets.  The
-:prop_sf:`AUTOUIC_OPTIONS` source file property may be set on the
-``<basename>.ui`` file to set particular options for the file.  This
-overrides options from the :prop_tgt:`AUTOUIC_OPTIONS` target property.
-
-A target may populate the :prop_tgt:`INTERFACE_AUTOUIC_OPTIONS` target
-property with options that should be used when invoking ``uic``.  This must be
-consistent with the :prop_tgt:`AUTOUIC_OPTIONS` target property content of the
-depender target.  The :variable:`CMAKE_DEBUG_TARGET_PROPERTIES` variable may
-be used to track the origin target of such
-:prop_tgt:`INTERFACE_AUTOUIC_OPTIONS`.  This means that a library which
-provides an alternative translation system for Qt may specify options which
-should be used when running ``uic``:
-
-.. code-block:: cmake
-
-  add_library(KI18n klocalizedstring.cpp)
-  target_link_libraries(KI18n Qt5::Core)
-
-  # KI18n uses the tr2i18n() function instead of tr().  That function is
-  # declared in the klocalizedstring.h header.
-  set(autouic_options
-    -tr tr2i18n
-    -include klocalizedstring.h
-  )
-
-  set_property(TARGET KI18n APPEND PROPERTY
-    INTERFACE_AUTOUIC_OPTIONS ${autouic_options}
-  )
-
-A consuming project linking to the target exported from upstream automatically
-uses appropriate options when ``uic`` is run by :prop_tgt:`AUTOUIC`, as a
-result of linking with the :prop_tgt:`IMPORTED` target:
-
-.. code-block:: cmake
-
-  set(CMAKE_AUTOUIC ON)
-  # Uses a libwidget.ui file:
-  add_library(LibWidget libwidget.cpp)
-  target_link_libraries(LibWidget
-    KF5::KI18n
-    Qt5::Widgets
-  )
-
-Source files can be excluded from :prop_tgt:`AUTOUIC` processing by
-enabling :prop_sf:`SKIP_AUTOUIC` or the broader :prop_sf:`SKIP_AUTOGEN`.
-
-.. _`Qt AUTORCC`:
-
-AUTORCC
-^^^^^^^
-
-The :prop_tgt:`AUTORCC` target property controls whether :manual:`cmake(1)`
-creates rules to execute ``rcc`` at the appropriate time on source files
-which have the suffix ``.qrc``.
-
-.. code-block:: cmake
-
-  add_executable(myexe main.cpp resource_file.qrc)
-
-The :prop_tgt:`AUTORCC` target property may be pre-set for all following targets
-by setting the :variable:`CMAKE_AUTORCC` variable.  The
-:prop_tgt:`AUTORCC_OPTIONS` target property may be populated to set options
-to pass to ``rcc``.  The :variable:`CMAKE_AUTORCC_OPTIONS` variable may be
-populated to pre-set the options for all following targets.  The
-:prop_sf:`AUTORCC_OPTIONS` source file property may be set on the
-``<name>.qrc`` file to set particular options for the file.  This
-overrides options from the :prop_tgt:`AUTORCC_OPTIONS` target property.
-
-Source files can be excluded from :prop_tgt:`AUTORCC` processing by
-enabling :prop_sf:`SKIP_AUTORCC` or the broader :prop_sf:`SKIP_AUTOGEN`.
-
-The ``<ORIGIN>_autogen`` target
-===============================
-
-The ``moc`` and ``uic`` tools are executed as part of a synthesized
-``<ORIGIN>_autogen`` :command:`custom target <add_custom_target>` generated by
-CMake.  By default that ``<ORIGIN>_autogen`` target inherits the dependencies
-of the ``<ORIGIN>`` target (see :prop_tgt:`AUTOGEN_ORIGIN_DEPENDS`).
-Target dependencies may be added to the ``<ORIGIN>_autogen`` target by adding
-them to the :prop_tgt:`AUTOGEN_TARGET_DEPENDS` target property.
-
-Visual Studio Generators
-========================
-
-When using the :manual:`Visual Studio generators <cmake-generators(7)>`, CMake
-generates a ``PRE_BUILD`` :command:`custom command <add_custom_command>`
-instead of the ``<ORIGIN>_autogen`` :command:`custom target <add_custom_target>`
-(for :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`).
-This isn't always possible though and
-an ``<ORIGIN>_autogen`` :command:`custom target <add_custom_target>` is used,
-when either
-
-- the ``<ORIGIN>`` target depends on :prop_sf:`GENERATED` files which aren't
-  excluded from :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` by
-  :prop_sf:`SKIP_AUTOMOC`, :prop_sf:`SKIP_AUTOUIC`, :prop_sf:`SKIP_AUTOGEN`
-  or :policy:`CMP0071`
-- :prop_tgt:`AUTOGEN_TARGET_DEPENDS` lists a source file
-- :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET` is enabled
-
-qtmain.lib on Windows
-=====================
-
-The Qt 4 and 5 :prop_tgt:`IMPORTED` targets for the QtGui libraries specify
-that the qtmain.lib static library shipped with Qt will be linked by all
-dependent executables which have the :prop_tgt:`WIN32_EXECUTABLE` enabled.
-
-To disable this behavior, enable the ``Qt5_NO_LINK_QTMAIN`` target property for
-Qt 5 based targets or ``QT4_NO_LINK_QTMAIN`` target property for Qt 4 based
-targets.
-
-.. code-block:: cmake
-
-  add_executable(myexe WIN32 main.cpp)
-  target_link_libraries(myexe Qt4::QtGui)
-
-  add_executable(myexe_no_qtmain WIN32 main_no_qtmain.cpp)
-  set_property(TARGET main_no_qtmain PROPERTY QT4_NO_LINK_QTMAIN ON)
-  target_link_libraries(main_no_qtmain Qt4::QtGui)
diff --git a/share/cmake-3.18/Help/manual/cmake-server.7.rst b/share/cmake-3.18/Help/manual/cmake-server.7.rst
deleted file mode 100644
index 8f10b9f..0000000
--- a/share/cmake-3.18/Help/manual/cmake-server.7.rst
+++ /dev/null
@@ -1,744 +0,0 @@
-.. cmake-manual-description: CMake Server
-
-cmake-server(7)
-***************
-
-.. only:: html
-
-   .. contents::
-
-.. deprecated:: 3.15
-
-  This will be removed from a future version of CMake.
-  Clients should use the :manual:`cmake-file-api(7)` instead.
-
-Introduction
-============
-
-:manual:`cmake(1)` is capable of providing semantic information about
-CMake code it executes to generate a buildsystem.  If executed with
-the ``-E server`` command line options, it starts in a long running mode
-and allows a client to request the available information via a JSON protocol.
-
-The protocol is designed to be useful to IDEs, refactoring tools, and
-other tools which have a need to understand the buildsystem in entirety.
-
-A single :manual:`cmake-buildsystem(7)` may describe buildsystem contents
-and build properties which differ based on
-:manual:`generation-time context <cmake-generator-expressions(7)>`
-including:
-
-* The Platform (eg, Windows, APPLE, Linux).
-* The build configuration (eg, Debug, Release, Coverage).
-* The Compiler (eg, MSVC, GCC, Clang) and compiler version.
-* The language of the source files compiled.
-* Available compile features (eg CXX variadic templates).
-* CMake policies.
-
-The protocol aims to provide information to tooling to satisfy several
-needs:
-
-#. Provide a complete and easily parsed source of all information relevant
-   to the tooling as it relates to the source code.  There should be no need
-   for tooling to parse generated buildsystems to access include directories
-   or compile definitions for example.
-#. Semantic information about the CMake buildsystem itself.
-#. Provide a stable interface for reading the information in the CMake cache.
-#. Information for determining when cmake needs to be re-run as a result of
-   file changes.
-
-
-Operation
-=========
-
-Start :manual:`cmake(1)` in the server command mode, supplying the path to
-the build directory to process::
-
-  cmake -E server (--debug|--pipe=<NAMED_PIPE>)
-
-The server will communicate using stdin/stdout (with the ``--debug`` parameter)
-or using a named pipe (with the ``--pipe=<NAMED_PIPE>`` parameter).  Note
-that "named pipe" refers to a local domain socket on Unix and to a named pipe
-on Windows.
-
-When connecting to the server (via named pipe or by starting it in ``--debug``
-mode), the server will reply with a hello message::
-
-  [== "CMake Server" ==[
-  {"supportedProtocolVersions":[{"major":1,"minor":0}],"type":"hello"}
-  ]== "CMake Server" ==]
-
-Messages sent to and from the process are wrapped in magic strings::
-
-  [== "CMake Server" ==[
-  {
-    ... some JSON message ...
-  }
-  ]== "CMake Server" ==]
-
-The server is now ready to accept further requests via the named pipe
-or stdin.
-
-
-Debugging
-=========
-
-CMake server mode can be asked to provide statistics on execution times, etc.
-or to dump a copy of the response into a file. This is done passing a "debug"
-JSON object as a child of the request.
-
-The debug object supports the "showStats" key, which takes a boolean and makes
-the server mode return a "zzzDebug" object with stats as part of its response.
-"dumpToFile" takes a string value and will cause the cmake server to copy
-the response into the given filename.
-
-This is a response from the cmake server with "showStats" set to true::
-
-  [== "CMake Server" ==[
-  {
-    "cookie":"",
-    "errorMessage":"Waiting for type \"handshake\".",
-    "inReplyTo":"unknown",
-   "type":"error",
-    "zzzDebug": {
-      "dumpFile":"/tmp/error.txt",
-      "jsonSerialization":0.011016,
-      "size":111,
-      "totalTime":0.025995
-    }
-  }
-  ]== "CMake Server" ==]
-
-The server has made a copy of this response into the file /tmp/error.txt and
-took 0.011 seconds to turn the JSON response into a string, and it took 0.025
-seconds to process the request in total. The reply has a size of 111 bytes.
-
-
-Protocol API
-============
-
-
-General Message Layout
-----------------------
-
-All messages need to have a "type" value, which identifies the type of
-message that is passed back or forth. E.g. the initial message sent by the
-server is of type "hello". Messages without a type will generate an response
-of type "error".
-
-All requests sent to the server may contain a "cookie" value. This value
-will he handed back unchanged in all responses triggered by the request.
-
-All responses will contain a value "inReplyTo", which may be empty in
-case of parse errors, but will contain the type of the request message
-in all other cases.
-
-
-Type "reply"
-^^^^^^^^^^^^
-
-This type is used by the server to reply to requests.
-
-The message may -- depending on the type of the original request --
-contain values.
-
-Example::
-
-  [== "CMake Server" ==[
-  {"cookie":"zimtstern","inReplyTo":"handshake","type":"reply"}
-  ]== "CMake Server" ==]
-
-
-Type "error"
-^^^^^^^^^^^^
-
-This type is used to return an error condition to the client. It will
-contain an "errorMessage".
-
-Example::
-
-  [== "CMake Server" ==[
-  {"cookie":"","errorMessage":"Protocol version not supported.","inReplyTo":"handshake","type":"error"}
-  ]== "CMake Server" ==]
-
-
-Type "progress"
-^^^^^^^^^^^^^^^
-
-When the server is busy for a long time, it is polite to send back replies of
-type "progress" to the client. These will contain a "progressMessage" with a
-string describing the action currently taking place as well as
-"progressMinimum", "progressMaximum" and "progressCurrent" with integer values
-describing the range of progress.
-
-Messages of type "progress" will be followed by more "progress" messages or with
-a message of type "reply" or "error" that complete the request.
-
-"progress" messages may not be emitted after the "reply" or "error" message for
-the request that triggered the responses was delivered.
-
-
-Type "message"
-^^^^^^^^^^^^^^
-
-A message is triggered when the server processes a request and produces some
-form of output that should be displayed to the user. A Message has a "message"
-with the actual text to display as well as a "title" with a suggested dialog
-box title.
-
-Example::
-
-  [== "CMake Server" ==[
-  {"cookie":"","message":"Something happened.","title":"Title Text","inReplyTo":"handshake","type":"message"}
-  ]== "CMake Server" ==]
-
-
-Type "signal"
-^^^^^^^^^^^^^
-
-The server can send signals when it detects changes in the system state. Signals
-are of type "signal", have an empty "cookie" and "inReplyTo" field and always
-have a "name" set to show which signal was sent.
-
-
-Specific Signals
-----------------
-
-The cmake server may sent signals with the following names:
-
-"dirty" Signal
-^^^^^^^^^^^^^^
-
-The "dirty" signal is sent whenever the server determines that the configuration
-of the project is no longer up-to-date. This happens when any of the files that have
-an influence on the build system is changed.
-
-The "dirty" signal may look like this::
-
-  [== "CMake Server" ==[
-  {
-    "cookie":"",
-    "inReplyTo":"",
-    "name":"dirty",
-    "type":"signal"}
-  ]== "CMake Server" ==]
-
-
-"fileChange" Signal
-^^^^^^^^^^^^^^^^^^^
-
-The "fileChange" signal is sent whenever a watched file is changed. It contains
-the "path" that has changed and a list of "properties" with the kind of change
-that was detected. Possible changes are "change" and "rename".
-
-The "fileChange" signal looks like this::
-
-  [== "CMake Server" ==[
-  {
-    "cookie":"",
-    "inReplyTo":"",
-    "name":"fileChange",
-    "path":"/absolute/CMakeLists.txt",
-    "properties":["change"],
-    "type":"signal"}
-  ]== "CMake Server" ==]
-
-
-Specific Message Types
-----------------------
-
-
-Type "hello"
-^^^^^^^^^^^^
-
-The initial message send by the cmake server on startup is of type "hello".
-This is the only message ever sent by the server that is not of type "reply",
-"progress" or "error".
-
-It will contain "supportedProtocolVersions" with an array of server protocol
-versions supported by the cmake server. These are JSON objects with "major" and
-"minor" keys containing non-negative integer values. Some versions may be marked
-as experimental. These will contain the "isExperimental" key set to true. Enabling
-these requires a special command line argument when starting the cmake server mode.
-
-Within a "major" version all "minor" versions are fully backwards compatible.
-New "minor" versions may introduce functionality in such a way that existing
-clients of the same "major" version will continue to work, provided they
-ignore keys in the output that they do not know about.
-
-Example::
-
-  [== "CMake Server" ==[
-  {"supportedProtocolVersions":[{"major":0,"minor":1}],"type":"hello"}
-  ]== "CMake Server" ==]
-
-
-Type "handshake"
-^^^^^^^^^^^^^^^^
-
-The first request that the client may send to the server is of type "handshake".
-
-This request needs to pass one of the "supportedProtocolVersions" of the "hello"
-type response received earlier back to the server in the "protocolVersion" field.
-Giving the "major" version of the requested protocol version will make the server
-use the latest minor version of that protocol. Use this if you do not explicitly
-need to depend on a specific minor version.
-
-Protocol version 1.0 requires the following attributes to be set:
-
-  * "sourceDirectory" with a path to the sources
-  * "buildDirectory" with a path to the build directory
-  * "generator" with the generator name
-  * "extraGenerator" (optional!) with the extra generator to be used
-  * "platform" with the generator platform (if supported by the generator)
-  * "toolset" with the generator toolset (if supported by the generator)
-
-Protocol version 1.2 makes all but the build directory optional, provided
-there is a valid cache in the build directory that contains all the other
-information already.
-
-Example::
-
-  [== "CMake Server" ==[
-  {"cookie":"zimtstern","type":"handshake","protocolVersion":{"major":0},
-   "sourceDirectory":"/home/code/cmake", "buildDirectory":"/tmp/testbuild",
-   "generator":"Ninja"}
-  ]== "CMake Server" ==]
-
-which will result in a response type "reply"::
-
-  [== "CMake Server" ==[
-  {"cookie":"zimtstern","inReplyTo":"handshake","type":"reply"}
-  ]== "CMake Server" ==]
-
-indicating that the server is ready for action.
-
-
-Type "globalSettings"
-^^^^^^^^^^^^^^^^^^^^^
-
-This request can be sent after the initial handshake. It will return a
-JSON structure with information on cmake state.
-
-Example::
-
-  [== "CMake Server" ==[
-  {"type":"globalSettings"}
-  ]== "CMake Server" ==]
-
-which will result in a response type "reply"::
-
-  [== "CMake Server" ==[
-  {
-    "buildDirectory": "/tmp/test-build",
-    "capabilities": {
-      "generators": [
-        {
-          "extraGenerators": [],
-          "name": "Watcom WMake",
-          "platformSupport": false,
-          "toolsetSupport": false
-        },
-        <...>
-      ],
-      "serverMode": false,
-      "version": {
-        "isDirty": false,
-        "major": 3,
-        "minor": 6,
-        "patch": 20160830,
-        "string": "3.6.20160830-gd6abad",
-        "suffix": "gd6abad"
-      }
-    },
-    "checkSystemVars": false,
-    "cookie": "",
-    "extraGenerator": "",
-    "generator": "Ninja",
-    "debugOutput": false,
-    "inReplyTo": "globalSettings",
-    "sourceDirectory": "/home/code/cmake",
-    "trace": false,
-    "traceExpand": false,
-    "type": "reply",
-    "warnUninitialized": false,
-    "warnUnused": false,
-    "warnUnusedCli": true
-  }
-  ]== "CMake Server" ==]
-
-
-Type "setGlobalSettings"
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-This request can be sent to change the global settings attributes. Unknown
-attributes are going to be ignored. Read-only attributes reported by
-"globalSettings" are all capabilities, buildDirectory, generator,
-extraGenerator and sourceDirectory. Any attempt to set these will be ignored,
-too.
-
-All other settings will be changed.
-
-The server will respond with an empty reply message or an error.
-
-Example::
-
-  [== "CMake Server" ==[
-  {"type":"setGlobalSettings","debugOutput":true}
-  ]== "CMake Server" ==]
-
-CMake will reply to this with::
-
-  [== "CMake Server" ==[
-  {"inReplyTo":"setGlobalSettings","type":"reply"}
-  ]== "CMake Server" ==]
-
-
-Type "configure"
-^^^^^^^^^^^^^^^^
-
-This request will configure a project for build.
-
-To configure a build directory already containing cmake files, it is enough to
-set "buildDirectory" via "setGlobalSettings". To create a fresh build directory
-you also need to set "currentGenerator" and "sourceDirectory" via "setGlobalSettings"
-in addition to "buildDirectory".
-
-You may a list of strings to "configure" via the "cacheArguments" key. These
-strings will be interpreted similar to command line arguments related to
-cache handling that are passed to the cmake command line client.
-
-Example::
-
-  [== "CMake Server" ==[
-  {"type":"configure", "cacheArguments":["-Dsomething=else"]}
-  ]== "CMake Server" ==]
-
-CMake will reply like this (after reporting progress for some time)::
-
-  [== "CMake Server" ==[
-  {"cookie":"","inReplyTo":"configure","type":"reply"}
-  ]== "CMake Server" ==]
-
-
-Type "compute"
-^^^^^^^^^^^^^^
-
-This request will generate build system files in the build directory and
-is only available after a project was successfully "configure"d.
-
-Example::
-
-  [== "CMake Server" ==[
-  {"type":"compute"}
-  ]== "CMake Server" ==]
-
-CMake will reply (after reporting progress information)::
-
-  [== "CMake Server" ==[
-  {"cookie":"","inReplyTo":"compute","type":"reply"}
-  ]== "CMake Server" ==]
-
-
-Type "codemodel"
-^^^^^^^^^^^^^^^^
-
-The "codemodel" request can be used after a project was "compute"d successfully.
-
-It will list the complete project structure as it is known to cmake.
-
-The reply will contain a key "configurations", which will contain a list of
-configuration objects. Configuration objects are used to destinquish between
-different configurations the build directory might have enabled. While most
-generators only support one configuration, others might support several.
-
-Each configuration object can have the following keys:
-
-"name"
-  contains the name of the configuration. The name may be empty.
-"projects"
-  contains a list of project objects, one for each build project.
-
-Project objects define one (sub-)project defined in the cmake build system.
-
-Each project object can have the following keys:
-
-"name"
-  contains the (sub-)projects name.
-"minimumCMakeVersion"
-  contains the minimum cmake version allowed for this project, null if the
-  project doesn't specify one.
-"hasInstallRule"
-  true if the project contains any install rules, false otherwise.
-"sourceDirectory"
-  contains the current source directory
-"buildDirectory"
-  contains the current build directory.
-"targets"
-  contains a list of build system target objects.
-
-Target objects define individual build targets for a certain configuration.
-
-Each target object can have the following keys:
-
-"name"
-  contains the name of the target.
-"type"
-  defines the type of build of the target. Possible values are
-  "STATIC_LIBRARY", "MODULE_LIBRARY", "SHARED_LIBRARY", "OBJECT_LIBRARY",
-  "EXECUTABLE", "UTILITY" and "INTERFACE_LIBRARY".
-"fullName"
-  contains the full name of the build result (incl. extensions, etc.).
-"sourceDirectory"
-  contains the current source directory.
-"buildDirectory"
-  contains the current build directory.
-"isGeneratorProvided"
-  true if the target is auto-created by a generator, false otherwise
-"hasInstallRule"
-  true if the target contains any install rules, false otherwise.
-"installPaths"
-  full path to the destination directories defined by target install rules.
-"artifacts"
-  with a list of build artifacts. The list is sorted with the most
-  important artifacts first (e.g. a .DLL file is listed before a
-  .PDB file on windows).
-"linkerLanguage"
-  contains the language of the linker used to produce the artifact.
-"linkLibraries"
-  with a list of libraries to link to. This value is encoded in the
-  system's native shell format.
-"linkFlags"
-  with a list of flags to pass to the linker. This value is encoded in
-  the system's native shell format.
-"linkLanguageFlags"
-  with the flags for a compiler using the linkerLanguage. This value is
-  encoded in the system's native shell format.
-"frameworkPath"
-  with the framework path (on Apple computers). This value is encoded
-  in the system's native shell format.
-"linkPath"
-  with the link path. This value is encoded in the system's native shell
-  format.
-"sysroot"
-  with the sysroot path.
-"fileGroups"
-  contains the source files making up the target.
-
-FileGroups are used to group sources using similar settings together.
-
-Each fileGroup object may contain the following keys:
-
-"language"
-  contains the programming language used by all files in the group.
-"compileFlags"
-  with a string containing all the flags passed to the compiler
-  when building any of the files in this group. This value is encoded in
-  the system's native shell format.
-"includePath"
-  with a list of include paths. Each include path is an object
-  containing a "path" with the actual include path and "isSystem" with a bool
-  value informing whether this is a normal include or a system include. This
-  value is encoded in the system's native shell format.
-"defines"
-  with a list of defines in the form "SOMEVALUE" or "SOMEVALUE=42". This
-  value is encoded in the system's native shell format.
-"sources"
-  with a list of source files.
-
-All file paths in the fileGroup are either absolute or relative to the
-sourceDirectory of the target.
-
-Example::
-
-  [== "CMake Server" ==[
-  {"type":"codemodel"}
-  ]== "CMake Server" ==]
-
-CMake will reply::
-
-  [== "CMake Server" ==[
-  {
-    "configurations": [
-      {
-        "name": "",
-        "projects": [
-          {
-            "buildDirectory": "/tmp/build/Source/CursesDialog/form",
-            "name": "CMAKE_FORM",
-            "sourceDirectory": "/home/code/src/cmake/Source/CursesDialog/form",
-            "targets": [
-              {
-                "artifacts": [ "/tmp/build/Source/CursesDialog/form/libcmForm.a" ],
-                "buildDirectory": "/tmp/build/Source/CursesDialog/form",
-                "fileGroups": [
-                  {
-                    "compileFlags": "  -std=gnu11",
-                    "defines": [ "CURL_STATICLIB", "LIBARCHIVE_STATIC" ],
-                    "includePath": [ { "path": "/tmp/build/Utilities" }, <...> ],
-                    "isGenerated": false,
-                    "language": "C",
-                    "sources": [ "fld_arg.c", <...> ]
-                  }
-                ],
-                "fullName": "libcmForm.a",
-                "linkerLanguage": "C",
-                "name": "cmForm",
-                "sourceDirectory": "/home/code/src/cmake/Source/CursesDialog/form",
-                "type": "STATIC_LIBRARY"
-              }
-            ]
-          },
-          <...>
-        ]
-      }
-    ],
-    "cookie": "",
-    "inReplyTo": "codemodel",
-    "type": "reply"
-  }
-  ]== "CMake Server" ==]
-
-
-Type "ctestInfo"
-^^^^^^^^^^^^^^^^
-
-The "ctestInfo" request can be used after a project was "compute"d successfully.
-
-It will list the complete project test structure as it is known to cmake.
-
-The reply will contain a key "configurations", which will contain a list of
-configuration objects. Configuration objects are used to destinquish between
-different configurations the build directory might have enabled. While most
-generators only support one configuration, others might support several.
-
-Each configuration object can have the following keys:
-
-"name"
-  contains the name of the configuration. The name may be empty.
-"projects"
-  contains a list of project objects, one for each build project.
-
-Project objects define one (sub-)project defined in the cmake build system.
-
-Each project object can have the following keys:
-
-"name"
-  contains the (sub-)projects name.
-"ctestInfo"
-  contains a list of test objects.
-
-Each test object can have the following keys:
-
-"ctestName"
-  contains the name of the test.
-"ctestCommand"
-  contains the test command.
-"properties"
-  contains a list of test property objects.
-
-Each test property object can have the following keys:
-
-"key"
-  contains the test property key.
-"value"
-  contains the test property value.
-
-
-Type "cmakeInputs"
-^^^^^^^^^^^^^^^^^^
-
-The "cmakeInputs" requests will report files used by CMake as part
-of the build system itself.
-
-This request is only available after a project was successfully
-"configure"d.
-
-Example::
-
-  [== "CMake Server" ==[
-  {"type":"cmakeInputs"}
-  ]== "CMake Server" ==]
-
-CMake will reply with the following information::
-
-  [== "CMake Server" ==[
-  {"buildFiles":
-    [
-      {"isCMake":true,"isTemporary":false,"sources":["/usr/lib/cmake/...", ... ]},
-      {"isCMake":false,"isTemporary":false,"sources":["CMakeLists.txt", ...]},
-      {"isCMake":false,"isTemporary":true,"sources":["/tmp/build/CMakeFiles/...", ...]}
-    ],
-    "cmakeRootDirectory":"/usr/lib/cmake",
-    "sourceDirectory":"/home/code/src/cmake",
-    "cookie":"",
-    "inReplyTo":"cmakeInputs",
-    "type":"reply"
-  }
-  ]== "CMake Server" ==]
-
-All file names are either relative to the top level source directory or
-absolute.
-
-The list of files which "isCMake" set to true are part of the cmake installation.
-
-The list of files witch "isTemporary" set to true are part of the build directory
-and will not survive the build directory getting cleaned out.
-
-
-Type "cache"
-^^^^^^^^^^^^
-
-The "cache" request will list the cached configuration values.
-
-Example::
-
-  [== "CMake Server" ==[
-  {"type":"cache"}
-  ]== "CMake Server" ==]
-
-CMake will respond with the following output::
-
-  [== "CMake Server" ==[
-  {
-    "cookie":"","inReplyTo":"cache","type":"reply",
-    "cache":
-    [
-      {
-        "key":"SOMEVALUE",
-        "properties":
-        {
-          "ADVANCED":"1",
-          "HELPSTRING":"This is not helpful"
-        }
-        "type":"STRING",
-        "value":"TEST"}
-    ]
-  }
-  ]== "CMake Server" ==]
-
-The output can be limited to a list of keys by passing an array of key names
-to the "keys" optional field of the "cache" request.
-
-
-Type "fileSystemWatchers"
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The server can watch the filesystem for changes. The "fileSystemWatchers"
-command will report on the files and directories watched.
-
-Example::
-
-  [== "CMake Server" ==[
-  {"type":"fileSystemWatchers"}
-  ]== "CMake Server" ==]
-
-CMake will respond with the following output::
-
-  [== "CMake Server" ==[
-  {
-    "cookie":"","inReplyTo":"fileSystemWatchers","type":"reply",
-    "watchedFiles": [ "/absolute/path" ],
-    "watchedDirectories": [ "/absolute" ]
-  }
-  ]== "CMake Server" ==]
diff --git a/share/cmake-3.18/Help/manual/cmake-toolchains.7.rst b/share/cmake-3.18/Help/manual/cmake-toolchains.7.rst
deleted file mode 100644
index e8badd4..0000000
--- a/share/cmake-3.18/Help/manual/cmake-toolchains.7.rst
+++ /dev/null
@@ -1,666 +0,0 @@
-.. cmake-manual-description: CMake Toolchains Reference
-
-cmake-toolchains(7)
-*******************
-
-.. only:: html
-
-   .. contents::
-
-Introduction
-============
-
-CMake uses a toolchain of utilities to compile, link libraries and create
-archives, and other tasks to drive the build. The toolchain utilities available
-are determined by the languages enabled. In normal builds, CMake automatically
-determines the toolchain for host builds based on system introspection and
-defaults. In cross-compiling scenarios, a toolchain file may be specified
-with information about compiler and utility paths.
-
-Languages
-=========
-
-Languages are enabled by the :command:`project` command.  Language-specific
-built-in variables, such as
-:variable:`CMAKE_CXX_COMPILER <CMAKE_<LANG>_COMPILER>`,
-:variable:`CMAKE_CXX_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` etc are set by
-invoking the :command:`project` command.  If no project command
-is in the top-level CMakeLists file, one will be implicitly generated. By default
-the enabled languages are ``C`` and ``CXX``:
-
-.. code-block:: cmake
-
-  project(C_Only C)
-
-A special value of ``NONE`` can also be used with the :command:`project` command
-to enable no languages:
-
-.. code-block:: cmake
-
-  project(MyProject NONE)
-
-The :command:`enable_language` command can be used to enable languages after the
-:command:`project` command:
-
-.. code-block:: cmake
-
-  enable_language(CXX)
-
-When a language is enabled, CMake finds a compiler for that language, and
-determines some information, such as the vendor and version of the compiler,
-the target architecture and bitwidth, the location of corresponding utilities
-etc.
-
-The :prop_gbl:`ENABLED_LANGUAGES` global property contains the languages which
-are currently enabled.
-
-Variables and Properties
-========================
-
-Several variables relate to the language components of a toolchain which are
-enabled. :variable:`CMAKE_<LANG>_COMPILER` is the full path to the compiler used
-for ``<LANG>``. :variable:`CMAKE_<LANG>_COMPILER_ID` is the identifier used
-by CMake for the compiler and :variable:`CMAKE_<LANG>_COMPILER_VERSION` is the
-version of the compiler.
-
-The :variable:`CMAKE_<LANG>_FLAGS` variables and the configuration-specific
-equivalents contain flags that will be added to the compile command when
-compiling a file of a particular language.
-
-As the linker is invoked by the compiler driver, CMake needs a way to determine
-which compiler to use to invoke the linker. This is calculated by the
-:prop_sf:`LANGUAGE` of source files in the target, and in the case of static
-libraries, the language of the dependent libraries. The choice CMake makes may
-be overridden with the :prop_tgt:`LINKER_LANGUAGE` target property.
-
-Toolchain Features
-==================
-
-CMake provides the :command:`try_compile` command and wrapper macros such as
-:module:`CheckCXXSourceCompiles`, :module:`CheckCXXSymbolExists` and
-:module:`CheckIncludeFile` to test capability and availability of various
-toolchain features. These APIs test the toolchain in some way and cache the
-result so that the test does not have to be performed again the next time
-CMake runs.
-
-Some toolchain features have built-in handling in CMake, and do not require
-compile-tests. For example, :prop_tgt:`POSITION_INDEPENDENT_CODE` allows
-specifying that a target should be built as position-independent code, if
-the compiler supports that feature. The :prop_tgt:`<LANG>_VISIBILITY_PRESET`
-and :prop_tgt:`VISIBILITY_INLINES_HIDDEN` target properties add flags for
-hidden visibility, if supported by the compiler.
-
-.. _`Cross Compiling Toolchain`:
-
-Cross Compiling
-===============
-
-If :manual:`cmake(1)` is invoked with the command line parameter
-``-DCMAKE_TOOLCHAIN_FILE=path/to/file``, the file will be loaded early to set
-values for the compilers.
-The :variable:`CMAKE_CROSSCOMPILING` variable is set to true when CMake is
-cross-compiling.
-
-Note that using the :variable:`CMAKE_SOURCE_DIR` or :variable:`CMAKE_BINARY_DIR`
-variables inside a toolchain file is typically undesirable.  The toolchain
-file is used in contexts where these variables have different values when used
-in different places (e.g. as part of a call to :command:`try_compile`).  In most
-cases, where there is a need to evaluate paths inside a toolchain file, the more
-appropriate variable to use would be :variable:`CMAKE_CURRENT_LIST_DIR`, since
-it always has an unambiguous, predictable value.
-
-Cross Compiling for Linux
--------------------------
-
-A typical cross-compiling toolchain for Linux has content such
-as:
-
-.. code-block:: cmake
-
-  set(CMAKE_SYSTEM_NAME Linux)
-  set(CMAKE_SYSTEM_PROCESSOR arm)
-
-  set(CMAKE_SYSROOT /home/devel/rasp-pi-rootfs)
-  set(CMAKE_STAGING_PREFIX /home/devel/stage)
-
-  set(tools /home/devel/gcc-4.7-linaro-rpi-gnueabihf)
-  set(CMAKE_C_COMPILER ${tools}/bin/arm-linux-gnueabihf-gcc)
-  set(CMAKE_CXX_COMPILER ${tools}/bin/arm-linux-gnueabihf-g++)
-
-  set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-  set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-  set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-  set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
-
-The :variable:`CMAKE_SYSTEM_NAME` is the CMake-identifier of the target platform
-to build for.
-
-The :variable:`CMAKE_SYSTEM_PROCESSOR` is the CMake-identifier of the target architecture
-to build for.
-
-The :variable:`CMAKE_SYSROOT` is optional, and may be specified if a sysroot
-is available.
-
-The :variable:`CMAKE_STAGING_PREFIX` is also optional. It may be used to specify
-a path on the host to install to. The :variable:`CMAKE_INSTALL_PREFIX` is always
-the runtime installation location, even when cross-compiling.
-
-The :variable:`CMAKE_<LANG>_COMPILER` variables may be set to full paths, or to
-names of compilers to search for in standard locations.   For toolchains that
-do not support linking binaries without custom flags or scripts one may set
-the :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable to ``STATIC_LIBRARY``
-to tell CMake not to try to link executables during its checks.
-
-CMake ``find_*`` commands will look in the sysroot, and the :variable:`CMAKE_FIND_ROOT_PATH`
-entries by default in all cases, as well as looking in the host system root prefix.
-Although this can be controlled on a case-by-case basis, when cross-compiling, it
-can be useful to exclude looking in either the host or the target for particular
-artifacts. Generally, includes, libraries and packages should be found in the
-target system prefixes, whereas executables which must be run as part of the build
-should be found only on the host and not on the target. This is the purpose of
-the ``CMAKE_FIND_ROOT_PATH_MODE_*`` variables.
-
-.. _`Cray Cross-Compile`:
-
-Cross Compiling for the Cray Linux Environment
-----------------------------------------------
-
-Cross compiling for compute nodes in the Cray Linux Environment can be done
-without needing a separate toolchain file.  Specifying
-``-DCMAKE_SYSTEM_NAME=CrayLinuxEnvironment`` on the CMake command line will
-ensure that the appropriate build settings and search paths are configured.
-The platform will pull its configuration from the current environment
-variables and will configure a project to use the compiler wrappers from the
-Cray Programming Environment's ``PrgEnv-*`` modules if present and loaded.
-
-The default configuration of the Cray Programming Environment is to only
-support static libraries.  This can be overridden and shared libraries
-enabled by setting the ``CRAYPE_LINK_TYPE`` environment variable to
-``dynamic``.
-
-Running CMake without specifying :variable:`CMAKE_SYSTEM_NAME` will
-run the configure step in host mode assuming a standard Linux environment.
-If not overridden, the ``PrgEnv-*`` compiler wrappers will end up getting used,
-which if targeting the either the login node or compute node, is likely not the
-desired behavior.  The exception to this would be if you are building directly
-on a NID instead of cross-compiling from a login node. If trying to build
-software for a login node, you will need to either first unload the
-currently loaded ``PrgEnv-*`` module or explicitly tell CMake to use the
-system compilers in ``/usr/bin`` instead of the Cray wrappers.  If instead
-targeting a compute node is desired, just specify the
-:variable:`CMAKE_SYSTEM_NAME` as mentioned above.
-
-Cross Compiling using Clang
----------------------------
-
-Some compilers such as Clang are inherently cross compilers.
-The :variable:`CMAKE_<LANG>_COMPILER_TARGET` can be set to pass a
-value to those supported compilers when compiling:
-
-.. code-block:: cmake
-
-  set(CMAKE_SYSTEM_NAME Linux)
-  set(CMAKE_SYSTEM_PROCESSOR arm)
-
-  set(triple arm-linux-gnueabihf)
-
-  set(CMAKE_C_COMPILER clang)
-  set(CMAKE_C_COMPILER_TARGET ${triple})
-  set(CMAKE_CXX_COMPILER clang++)
-  set(CMAKE_CXX_COMPILER_TARGET ${triple})
-
-Similarly, some compilers do not ship their own supplementary utilities
-such as linkers, but provide a way to specify the location of the external
-toolchain which will be used by the compiler driver. The
-:variable:`CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN` variable can be set in a
-toolchain file to pass the path to the compiler driver.
-
-Cross Compiling for QNX
------------------------
-
-As the Clang compiler the QNX QCC compile is inherently a cross compiler.
-And the :variable:`CMAKE_<LANG>_COMPILER_TARGET` can be set to pass a
-value to those supported compilers when compiling:
-
-.. code-block:: cmake
-
-  set(CMAKE_SYSTEM_NAME QNX)
-
-  set(arch gcc_ntoarmv7le)
-
-  set(CMAKE_C_COMPILER qcc)
-  set(CMAKE_C_COMPILER_TARGET ${arch})
-  set(CMAKE_CXX_COMPILER QCC)
-  set(CMAKE_CXX_COMPILER_TARGET ${arch})
-
-  set(CMAKE_SYSROOT $ENV{QNX_TARGET})
-
-
-Cross Compiling for Windows CE
-------------------------------
-
-Cross compiling for Windows CE requires the corresponding SDK being
-installed on your system.  These SDKs are usually installed under
-``C:/Program Files (x86)/Windows CE Tools/SDKs``.
-
-A toolchain file to configure a Visual Studio generator for
-Windows CE may look like this:
-
-.. code-block:: cmake
-
-  set(CMAKE_SYSTEM_NAME WindowsCE)
-
-  set(CMAKE_SYSTEM_VERSION 8.0)
-  set(CMAKE_SYSTEM_PROCESSOR arm)
-
-  set(CMAKE_GENERATOR_TOOLSET CE800) # Can be omitted for 8.0
-  set(CMAKE_GENERATOR_PLATFORM SDK_AM335X_SK_WEC2013_V310)
-
-The :variable:`CMAKE_GENERATOR_PLATFORM` tells the generator which SDK to use.
-Further :variable:`CMAKE_SYSTEM_VERSION` tells the generator what version of
-Windows CE to use.  Currently version 8.0 (Windows Embedded Compact 2013) is
-supported out of the box.  Other versions may require one to set
-:variable:`CMAKE_GENERATOR_TOOLSET` to the correct value.
-
-Cross Compiling for Windows 10 Universal Applications
------------------------------------------------------
-
-A toolchain file to configure a Visual Studio generator for a
-Windows 10 Universal Application may look like this:
-
-.. code-block:: cmake
-
-  set(CMAKE_SYSTEM_NAME WindowsStore)
-  set(CMAKE_SYSTEM_VERSION 10.0)
-
-A Windows 10 Universal Application targets both Windows Store and
-Windows Phone.  Specify the :variable:`CMAKE_SYSTEM_VERSION` variable
-to be ``10.0`` to build with the latest available Windows 10 SDK.
-Specify a more specific version (e.g. ``10.0.10240.0`` for RTM)
-to build with the corresponding SDK.
-
-Cross Compiling for Windows Phone
----------------------------------
-
-A toolchain file to configure a Visual Studio generator for
-Windows Phone may look like this:
-
-.. code-block:: cmake
-
-  set(CMAKE_SYSTEM_NAME WindowsPhone)
-  set(CMAKE_SYSTEM_VERSION 8.1)
-
-Cross Compiling for Windows Store
----------------------------------
-
-A toolchain file to configure a Visual Studio generator for
-Windows Store may look like this:
-
-.. code-block:: cmake
-
-  set(CMAKE_SYSTEM_NAME WindowsStore)
-  set(CMAKE_SYSTEM_VERSION 8.1)
-
-.. _`Cross Compiling for Android`:
-
-Cross Compiling for Android
----------------------------
-
-A toolchain file may configure cross-compiling for Android by setting the
-:variable:`CMAKE_SYSTEM_NAME` variable to ``Android``.  Further configuration
-is specific to the Android development environment to be used.
-
-For :ref:`Visual Studio Generators`, CMake expects :ref:`NVIDIA Nsight Tegra
-Visual Studio Edition <Cross Compiling for Android with NVIDIA Nsight Tegra
-Visual Studio Edition>` to be installed.  See that section for further
-configuration details.
-
-For :ref:`Makefile Generators` and the :generator:`Ninja` generator,
-CMake expects one of these environments:
-
-* :ref:`NDK <Cross Compiling for Android with the NDK>`
-* :ref:`Standalone Toolchain <Cross Compiling for Android with a Standalone Toolchain>`
-
-CMake uses the following steps to select one of the environments:
-
-* If the :variable:`CMAKE_ANDROID_NDK` variable is set, the NDK at the
-  specified location will be used.
-
-* Else, if the :variable:`CMAKE_ANDROID_STANDALONE_TOOLCHAIN` variable
-  is set, the Standalone Toolchain at the specified location will be used.
-
-* Else, if the :variable:`CMAKE_SYSROOT` variable is set to a directory
-  of the form ``<ndk>/platforms/android-<api>/arch-<arch>``, the ``<ndk>``
-  part will be used as the value of :variable:`CMAKE_ANDROID_NDK` and the
-  NDK will be used.
-
-* Else, if the :variable:`CMAKE_SYSROOT` variable is set to a directory of the
-  form ``<standalone-toolchain>/sysroot``, the ``<standalone-toolchain>`` part
-  will be used as the value of :variable:`CMAKE_ANDROID_STANDALONE_TOOLCHAIN`
-  and the Standalone Toolchain will be used.
-
-* Else, if a cmake variable ``ANDROID_NDK`` is set it will be used
-  as the value of :variable:`CMAKE_ANDROID_NDK`, and the NDK will be used.
-
-* Else, if a cmake variable ``ANDROID_STANDALONE_TOOLCHAIN`` is set, it will be
-  used as the value of :variable:`CMAKE_ANDROID_STANDALONE_TOOLCHAIN`, and the
-  Standalone Toolchain will be used.
-
-* Else, if an environment variable ``ANDROID_NDK_ROOT`` or
-  ``ANDROID_NDK`` is set, it will be used as the value of
-  :variable:`CMAKE_ANDROID_NDK`, and the NDK will be used.
-
-* Else, if an environment variable ``ANDROID_STANDALONE_TOOLCHAIN`` is
-  set then it will be used as the value of
-  :variable:`CMAKE_ANDROID_STANDALONE_TOOLCHAIN`, and the Standalone
-  Toolchain will be used.
-
-* Else, an error diagnostic will be issued that neither the NDK or
-  Standalone Toolchain can be found.
-
-.. _`Cross Compiling for Android with the NDK`:
-
-Cross Compiling for Android with the NDK
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A toolchain file may configure :ref:`Makefile Generators` or the
-:generator:`Ninja` generator to target Android for cross-compiling.
-
-Configure use of an Android NDK with the following variables:
-
-:variable:`CMAKE_SYSTEM_NAME`
-  Set to ``Android``.  Must be specified to enable cross compiling
-  for Android.
-
-:variable:`CMAKE_SYSTEM_VERSION`
-  Set to the Android API level.  If not specified, the value is
-  determined as follows:
-
-  * If the :variable:`CMAKE_ANDROID_API` variable is set, its value
-    is used as the API level.
-  * If the :variable:`CMAKE_SYSROOT` variable is set, the API level is
-    detected from the NDK directory structure containing the sysroot.
-  * Otherwise, the latest API level available in the NDK is used.
-
-:variable:`CMAKE_ANDROID_ARCH_ABI`
-  Set to the Android ABI (architecture).  If not specified, this
-  variable will default to ``armeabi``.
-  The :variable:`CMAKE_ANDROID_ARCH` variable will be computed
-  from ``CMAKE_ANDROID_ARCH_ABI`` automatically.
-  Also see the :variable:`CMAKE_ANDROID_ARM_MODE` and
-  :variable:`CMAKE_ANDROID_ARM_NEON` variables.
-
-:variable:`CMAKE_ANDROID_NDK`
-  Set to the absolute path to the Android NDK root directory.
-  A ``${CMAKE_ANDROID_NDK}/platforms`` directory must exist.
-  If not specified, a default for this variable will be chosen
-  as specified :ref:`above <Cross Compiling for Android>`.
-
-:variable:`CMAKE_ANDROID_NDK_DEPRECATED_HEADERS`
-  Set to a true value to use the deprecated per-api-level headers
-  instead of the unified headers.  If not specified, the default will
-  be false unless using a NDK that does not provide unified headers.
-
-:variable:`CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION`
-  On NDK r19 or above, this variable must be unset or set to ``clang``.
-  On NDK r18 or below, set this to the version of the NDK toolchain to
-  be selected as the compiler.  If not specified, the default will be
-  the latest available GCC toolchain.
-
-:variable:`CMAKE_ANDROID_STL_TYPE`
-  Set to specify which C++ standard library to use.  If not specified,
-  a default will be selected as described in the variable documentation.
-
-The following variables will be computed and provided automatically:
-
-:variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`
-  The absolute path prefix to the binutils in the NDK toolchain.
-
-:variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`
-  The host platform suffix of the binutils in the NDK toolchain.
-
-
-For example, a toolchain file might contain:
-
-.. code-block:: cmake
-
-  set(CMAKE_SYSTEM_NAME Android)
-  set(CMAKE_SYSTEM_VERSION 21) # API level
-  set(CMAKE_ANDROID_ARCH_ABI arm64-v8a)
-  set(CMAKE_ANDROID_NDK /path/to/android-ndk)
-  set(CMAKE_ANDROID_STL_TYPE gnustl_static)
-
-Alternatively one may specify the values without a toolchain file:
-
-.. code-block:: console
-
-  $ cmake ../src \
-    -DCMAKE_SYSTEM_NAME=Android \
-    -DCMAKE_SYSTEM_VERSION=21 \
-    -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
-    -DCMAKE_ANDROID_NDK=/path/to/android-ndk \
-    -DCMAKE_ANDROID_STL_TYPE=gnustl_static
-
-.. _`Cross Compiling for Android with a Standalone Toolchain`:
-
-Cross Compiling for Android with a Standalone Toolchain
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A toolchain file may configure :ref:`Makefile Generators` or the
-:generator:`Ninja` generator to target Android for cross-compiling
-using a standalone toolchain.
-
-Configure use of an Android standalone toolchain with the following variables:
-
-:variable:`CMAKE_SYSTEM_NAME`
-  Set to ``Android``.  Must be specified to enable cross compiling
-  for Android.
-
-:variable:`CMAKE_ANDROID_STANDALONE_TOOLCHAIN`
-  Set to the absolute path to the standalone toolchain root directory.
-  A ``${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot`` directory
-  must exist.
-  If not specified, a default for this variable will be chosen
-  as specified :ref:`above <Cross Compiling for Android>`.
-
-:variable:`CMAKE_ANDROID_ARM_MODE`
-  When the standalone toolchain targets ARM, optionally set this to ``ON``
-  to target 32-bit ARM instead of 16-bit Thumb.
-  See variable documentation for details.
-
-:variable:`CMAKE_ANDROID_ARM_NEON`
-  When the standalone toolchain targets ARM v7, optionally set thisto ``ON``
-  to target ARM NEON devices.  See variable documentation for details.
-
-The following variables will be computed and provided automatically:
-
-:variable:`CMAKE_SYSTEM_VERSION`
-  The Android API level detected from the standalone toolchain.
-
-:variable:`CMAKE_ANDROID_ARCH_ABI`
-  The Android ABI detected from the standalone toolchain.
-
-:variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`
-  The absolute path prefix to the ``binutils`` in the standalone toolchain.
-
-:variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`
-  The host platform suffix of the ``binutils`` in the standalone toolchain.
-
-For example, a toolchain file might contain:
-
-.. code-block:: cmake
-
-  set(CMAKE_SYSTEM_NAME Android)
-  set(CMAKE_ANDROID_STANDALONE_TOOLCHAIN /path/to/android-toolchain)
-
-Alternatively one may specify the values without a toolchain file:
-
-.. code-block:: console
-
-  $ cmake ../src \
-    -DCMAKE_SYSTEM_NAME=Android \
-    -DCMAKE_ANDROID_STANDALONE_TOOLCHAIN=/path/to/android-toolchain
-
-.. _`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio Edition`:
-
-Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio Edition
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A toolchain file to configure one of the :ref:`Visual Studio Generators`
-to build using NVIDIA Nsight Tegra targeting Android may look like this:
-
-.. code-block:: cmake
-
-  set(CMAKE_SYSTEM_NAME Android)
-
-The :variable:`CMAKE_GENERATOR_TOOLSET` may be set to select
-the Nsight Tegra "Toolchain Version" value.
-
-See also target properties:
-
-* :prop_tgt:`ANDROID_ANT_ADDITIONAL_OPTIONS`
-* :prop_tgt:`ANDROID_API_MIN`
-* :prop_tgt:`ANDROID_API`
-* :prop_tgt:`ANDROID_ARCH`
-* :prop_tgt:`ANDROID_ASSETS_DIRECTORIES`
-* :prop_tgt:`ANDROID_GUI`
-* :prop_tgt:`ANDROID_JAR_DEPENDENCIES`
-* :prop_tgt:`ANDROID_JAR_DIRECTORIES`
-* :prop_tgt:`ANDROID_JAVA_SOURCE_DIR`
-* :prop_tgt:`ANDROID_NATIVE_LIB_DEPENDENCIES`
-* :prop_tgt:`ANDROID_NATIVE_LIB_DIRECTORIES`
-* :prop_tgt:`ANDROID_PROCESS_MAX`
-* :prop_tgt:`ANDROID_PROGUARD_CONFIG_PATH`
-* :prop_tgt:`ANDROID_PROGUARD`
-* :prop_tgt:`ANDROID_SECURE_PROPS_PATH`
-* :prop_tgt:`ANDROID_SKIP_ANT_STEP`
-* :prop_tgt:`ANDROID_STL_TYPE`
-
-.. _`Cross Compiling for iOS, tvOS, or watchOS`:
-
-Cross Compiling for iOS, tvOS, or watchOS
------------------------------------------
-
-For cross-compiling to iOS, tvOS, or watchOS, the :generator:`Xcode`
-generator is recommended.  The :generator:`Unix Makefiles` or
-:generator:`Ninja` generators can also be used, but they require the
-project to handle more areas like target CPU selection and code signing.
-
-Any of the three systems can be targeted by setting the
-:variable:`CMAKE_SYSTEM_NAME` variable to a value from the table below.
-By default, the latest Device SDK is chosen.  As for all Apple platforms,
-a different SDK (e.g. a simulator) can be selected by setting the
-:variable:`CMAKE_OSX_SYSROOT` variable, although this should rarely be
-necessary (see :ref:`Switching Between Device and Simulator` below).
-A list of available SDKs can be obtained by running ``xcodebuild -showsdks``.
-
-=======  ================= ==================== ================
-OS       CMAKE_SYSTEM_NAME Device SDK (default) Simulator SDK
-=======  ================= ==================== ================
-iOS      iOS               iphoneos             iphonesimulator
-tvOS     tvOS              appletvos            appletvsimulator
-watchOS  watchOS           watchos              watchsimulator
-=======  ================= ==================== ================
-
-For example, to create a CMake configuration for iOS, the following
-command is sufficient:
-
-.. code-block:: console
-
-  cmake .. -GXcode -DCMAKE_SYSTEM_NAME=iOS
-
-Variable :variable:`CMAKE_OSX_ARCHITECTURES` can be used to set architectures
-for both device and simulator. Variable :variable:`CMAKE_OSX_DEPLOYMENT_TARGET`
-can be used to set an iOS/tvOS/watchOS deployment target.
-
-Next configuration will install fat 5 architectures iOS library
-and add the ``-miphoneos-version-min=9.3``/``-mios-simulator-version-min=9.3``
-flags to the compiler:
-
-.. code-block:: console
-
-  $ cmake -S. -B_builds -GXcode \
-      -DCMAKE_SYSTEM_NAME=iOS \
-      "-DCMAKE_OSX_ARCHITECTURES=armv7;armv7s;arm64;i386;x86_64" \
-      -DCMAKE_OSX_DEPLOYMENT_TARGET=9.3 \
-      -DCMAKE_INSTALL_PREFIX=`pwd`/_install \
-      -DCMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH=NO \
-      -DCMAKE_IOS_INSTALL_COMBINED=YES
-
-Example:
-
-.. code-block:: cmake
-
-  # CMakeLists.txt
-  cmake_minimum_required(VERSION 3.14)
-  project(foo)
-  add_library(foo foo.cpp)
-  install(TARGETS foo DESTINATION lib)
-
-Install:
-
-.. code-block:: console
-
-    $ cmake --build _builds --config Release --target install
-
-Check library:
-
-.. code-block:: console
-
-    $ lipo -info _install/lib/libfoo.a
-    Architectures in the fat file: _install/lib/libfoo.a are: i386 armv7 armv7s x86_64 arm64
-
-.. code-block:: console
-
-    $ otool -l _install/lib/libfoo.a | grep -A2 LC_VERSION_MIN_IPHONEOS
-          cmd LC_VERSION_MIN_IPHONEOS
-      cmdsize 16
-      version 9.3
-
-Code Signing
-^^^^^^^^^^^^
-
-Some build artifacts for the embedded Apple platforms require mandatory
-code signing.  If the :generator:`Xcode` generator is being used and
-code signing is required or desired, the development team ID can be
-specified via the ``CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM`` CMake variable.
-This team ID will then be included in the generated Xcode project.
-By default, CMake avoids the need for code signing during the internal
-configuration phase (i.e compiler ID and feature detection).
-
-.. _`Switching Between Device and Simulator`:
-
-Switching Between Device and Simulator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When configuring for any of the embedded platforms, one can target either
-real devices or the simulator.  Both have their own separate SDK, but CMake
-only supports specifying a single SDK for the configuration phase.  This
-means the developer must select one or the other at configuration time.
-When using the :generator:`Xcode` generator, this is less of a limitation
-because Xcode still allows you to build for either a device or a simulator,
-even though configuration was only performed for one of the two.  From
-within the Xcode IDE, builds are performed for the selected "destination"
-platform.  When building from the command line, the desired sdk can be
-specified directly by passing a ``-sdk`` option to the underlying build
-tool (``xcodebuild``).  For example:
-
-.. code-block:: console
-
-  $ cmake --build ... -- -sdk iphonesimulator
-
-Please note that checks made during configuration were performed against
-the configure-time SDK and might not hold true for other SDKs.  Commands
-like :command:`find_package`, :command:`find_library`, etc. store and use
-details only for the configured SDK/platform, so they can be problematic
-if wanting to switch between device and simulator builds. You can follow
-the next rules to make device + simulator configuration work:
-
-- Use explicit ``-l`` linker flag,
-  e.g. ``target_link_libraries(foo PUBLIC "-lz")``
-
-- Use explicit ``-framework`` linker flag,
-  e.g. ``target_link_libraries(foo PUBLIC "-framework CoreFoundation")``
-
-- Use :command:`find_package` only for libraries installed with
-  :variable:`CMAKE_IOS_INSTALL_COMBINED` feature
diff --git a/share/cmake-3.18/Help/manual/cmake-variables.7.rst b/share/cmake-3.18/Help/manual/cmake-variables.7.rst
deleted file mode 100644
index 6480db1..0000000
--- a/share/cmake-3.18/Help/manual/cmake-variables.7.rst
+++ /dev/null
@@ -1,690 +0,0 @@
-.. cmake-manual-description: CMake Variables Reference
-
-cmake-variables(7)
-******************
-
-.. only:: html
-
-   .. contents::
-
-This page documents variables that are provided by CMake
-or have meaning to CMake when set by project code.
-
-For general information on variables, see the
-:ref:`Variables <CMake Language Variables>`
-section in the cmake-language manual.
-
-.. include:: ID_RESERVE.txt
-
-Variables that Provide Information
-==================================
-
-.. toctree::
-   :maxdepth: 1
-
-   /variable/CMAKE_AR
-   /variable/CMAKE_ARGC
-   /variable/CMAKE_ARGV0
-   /variable/CMAKE_BINARY_DIR
-   /variable/CMAKE_BUILD_TOOL
-   /variable/CMAKE_CACHEFILE_DIR
-   /variable/CMAKE_CACHE_MAJOR_VERSION
-   /variable/CMAKE_CACHE_MINOR_VERSION
-   /variable/CMAKE_CACHE_PATCH_VERSION
-   /variable/CMAKE_CFG_INTDIR
-   /variable/CMAKE_COMMAND
-   /variable/CMAKE_CPACK_COMMAND
-   /variable/CMAKE_CROSSCOMPILING
-   /variable/CMAKE_CROSSCOMPILING_EMULATOR
-   /variable/CMAKE_CTEST_COMMAND
-   /variable/CMAKE_CURRENT_BINARY_DIR
-   /variable/CMAKE_CURRENT_FUNCTION
-   /variable/CMAKE_CURRENT_FUNCTION_LIST_DIR
-   /variable/CMAKE_CURRENT_FUNCTION_LIST_FILE
-   /variable/CMAKE_CURRENT_FUNCTION_LIST_LINE
-   /variable/CMAKE_CURRENT_LIST_DIR
-   /variable/CMAKE_CURRENT_LIST_FILE
-   /variable/CMAKE_CURRENT_LIST_LINE
-   /variable/CMAKE_CURRENT_SOURCE_DIR
-   /variable/CMAKE_DEBUG_TARGET_PROPERTIES
-   /variable/CMAKE_DIRECTORY_LABELS
-   /variable/CMAKE_DL_LIBS
-   /variable/CMAKE_DOTNET_TARGET_FRAMEWORK
-   /variable/CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION
-   /variable/CMAKE_EDIT_COMMAND
-   /variable/CMAKE_EXECUTABLE_SUFFIX
-   /variable/CMAKE_EXTRA_GENERATOR
-   /variable/CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES
-   /variable/CMAKE_FIND_DEBUG_MODE
-   /variable/CMAKE_FIND_PACKAGE_NAME
-   /variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION
-   /variable/CMAKE_FIND_PACKAGE_SORT_ORDER
-   /variable/CMAKE_GENERATOR
-   /variable/CMAKE_GENERATOR_INSTANCE
-   /variable/CMAKE_GENERATOR_PLATFORM
-   /variable/CMAKE_GENERATOR_TOOLSET
-   /variable/CMAKE_IMPORT_LIBRARY_PREFIX
-   /variable/CMAKE_IMPORT_LIBRARY_SUFFIX
-   /variable/CMAKE_JOB_POOL_COMPILE
-   /variable/CMAKE_JOB_POOL_LINK
-   /variable/CMAKE_JOB_POOL_PRECOMPILE_HEADER
-   /variable/CMAKE_JOB_POOLS
-   /variable/CMAKE_LANG_COMPILER_AR
-   /variable/CMAKE_LANG_COMPILER_RANLIB
-   /variable/CMAKE_LANG_LINK_LIBRARY_SUFFIX
-   /variable/CMAKE_LINK_LIBRARY_SUFFIX
-   /variable/CMAKE_LINK_SEARCH_END_STATIC
-   /variable/CMAKE_LINK_SEARCH_START_STATIC
-   /variable/CMAKE_MAJOR_VERSION
-   /variable/CMAKE_MAKE_PROGRAM
-   /variable/CMAKE_MATCH_COUNT
-   /variable/CMAKE_MATCH_n
-   /variable/CMAKE_MINIMUM_REQUIRED_VERSION
-   /variable/CMAKE_MINOR_VERSION
-   /variable/CMAKE_NETRC
-   /variable/CMAKE_NETRC_FILE
-   /variable/CMAKE_PARENT_LIST_FILE
-   /variable/CMAKE_PATCH_VERSION
-   /variable/CMAKE_PROJECT_DESCRIPTION
-   /variable/CMAKE_PROJECT_HOMEPAGE_URL
-   /variable/CMAKE_PROJECT_NAME
-   /variable/CMAKE_PROJECT_VERSION
-   /variable/CMAKE_PROJECT_VERSION_MAJOR
-   /variable/CMAKE_PROJECT_VERSION_MINOR
-   /variable/CMAKE_PROJECT_VERSION_PATCH
-   /variable/CMAKE_PROJECT_VERSION_TWEAK
-   /variable/CMAKE_RANLIB
-   /variable/CMAKE_ROOT
-   /variable/CMAKE_RULE_MESSAGES
-   /variable/CMAKE_SCRIPT_MODE_FILE
-   /variable/CMAKE_SHARED_LIBRARY_PREFIX
-   /variable/CMAKE_SHARED_LIBRARY_SUFFIX
-   /variable/CMAKE_SHARED_MODULE_PREFIX
-   /variable/CMAKE_SHARED_MODULE_SUFFIX
-   /variable/CMAKE_SIZEOF_VOID_P
-   /variable/CMAKE_SKIP_INSTALL_RULES
-   /variable/CMAKE_SKIP_RPATH
-   /variable/CMAKE_SOURCE_DIR
-   /variable/CMAKE_STATIC_LIBRARY_PREFIX
-   /variable/CMAKE_STATIC_LIBRARY_SUFFIX
-   /variable/CMAKE_Swift_MODULE_DIRECTORY
-   /variable/CMAKE_Swift_NUM_THREADS
-   /variable/CMAKE_TOOLCHAIN_FILE
-   /variable/CMAKE_TWEAK_VERSION
-   /variable/CMAKE_VERBOSE_MAKEFILE
-   /variable/CMAKE_VERSION
-   /variable/CMAKE_VS_DEVENV_COMMAND
-   /variable/CMAKE_VS_MSBUILD_COMMAND
-   /variable/CMAKE_VS_NsightTegra_VERSION
-   /variable/CMAKE_VS_PLATFORM_NAME
-   /variable/CMAKE_VS_PLATFORM_NAME_DEFAULT
-   /variable/CMAKE_VS_PLATFORM_TOOLSET
-   /variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA
-   /variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR
-   /variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE
-   /variable/CMAKE_VS_PLATFORM_TOOLSET_VERSION
-   /variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION
-   /variable/CMAKE_XCODE_GENERATE_SCHEME
-   /variable/CMAKE_XCODE_PLATFORM_TOOLSET
-   /variable/PROJECT-NAME_BINARY_DIR
-   /variable/PROJECT-NAME_DESCRIPTION
-   /variable/PROJECT-NAME_HOMEPAGE_URL
-   /variable/PROJECT-NAME_SOURCE_DIR
-   /variable/PROJECT-NAME_VERSION
-   /variable/PROJECT-NAME_VERSION_MAJOR
-   /variable/PROJECT-NAME_VERSION_MINOR
-   /variable/PROJECT-NAME_VERSION_PATCH
-   /variable/PROJECT-NAME_VERSION_TWEAK
-   /variable/PROJECT_BINARY_DIR
-   /variable/PROJECT_DESCRIPTION
-   /variable/PROJECT_HOMEPAGE_URL
-   /variable/PROJECT_NAME
-   /variable/PROJECT_SOURCE_DIR
-   /variable/PROJECT_VERSION
-   /variable/PROJECT_VERSION_MAJOR
-   /variable/PROJECT_VERSION_MINOR
-   /variable/PROJECT_VERSION_PATCH
-   /variable/PROJECT_VERSION_TWEAK
-
-Variables that Change Behavior
-==============================
-
-.. toctree::
-   :maxdepth: 1
-
-   /variable/BUILD_SHARED_LIBS
-   /variable/CMAKE_ABSOLUTE_DESTINATION_FILES
-   /variable/CMAKE_APPBUNDLE_PATH
-   /variable/CMAKE_AUTOMOC_RELAXED_MODE
-   /variable/CMAKE_BACKWARDS_COMPATIBILITY
-   /variable/CMAKE_BUILD_TYPE
-   /variable/CMAKE_CODEBLOCKS_COMPILER_ID
-   /variable/CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES
-   /variable/CMAKE_CODELITE_USE_TARGETS
-   /variable/CMAKE_COLOR_MAKEFILE
-   /variable/CMAKE_CONFIGURATION_TYPES
-   /variable/CMAKE_DEPENDS_IN_PROJECT_ONLY
-   /variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName
-   /variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES
-   /variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT
-   /variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS
-   /variable/CMAKE_ECLIPSE_RESOURCE_ENCODING
-   /variable/CMAKE_ECLIPSE_VERSION
-   /variable/CMAKE_ERROR_DEPRECATED
-   /variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
-   /variable/CMAKE_EXECUTE_PROCESS_COMMAND_ECHO
-   /variable/CMAKE_EXPORT_COMPILE_COMMANDS
-   /variable/CMAKE_EXPORT_PACKAGE_REGISTRY
-   /variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY
-   /variable/CMAKE_FIND_APPBUNDLE
-   /variable/CMAKE_FIND_FRAMEWORK
-   /variable/CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX
-   /variable/CMAKE_FIND_LIBRARY_PREFIXES
-   /variable/CMAKE_FIND_LIBRARY_SUFFIXES
-   /variable/CMAKE_FIND_NO_INSTALL_PREFIX
-   /variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY
-   /variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY
-   /variable/CMAKE_FIND_PACKAGE_PREFER_CONFIG
-   /variable/CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS
-   /variable/CMAKE_FIND_PACKAGE_WARN_NO_MODULE
-   /variable/CMAKE_FIND_ROOT_PATH
-   /variable/CMAKE_FIND_ROOT_PATH_MODE_INCLUDE
-   /variable/CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
-   /variable/CMAKE_FIND_ROOT_PATH_MODE_PACKAGE
-   /variable/CMAKE_FIND_ROOT_PATH_MODE_PROGRAM
-   /variable/CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH
-   /variable/CMAKE_FIND_USE_CMAKE_PATH
-   /variable/CMAKE_FIND_USE_CMAKE_SYSTEM_PATH
-   /variable/CMAKE_FIND_USE_PACKAGE_REGISTRY
-   /variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH
-   /variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH
-   /variable/CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY
-   /variable/CMAKE_FRAMEWORK_PATH
-   /variable/CMAKE_IGNORE_PATH
-   /variable/CMAKE_INCLUDE_DIRECTORIES_BEFORE
-   /variable/CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE
-   /variable/CMAKE_INCLUDE_PATH
-   /variable/CMAKE_INSTALL_DEFAULT_COMPONENT_NAME
-   /variable/CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
-   /variable/CMAKE_INSTALL_MESSAGE
-   /variable/CMAKE_INSTALL_PREFIX
-   /variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT
-   /variable/CMAKE_LIBRARY_PATH
-   /variable/CMAKE_LINK_DIRECTORIES_BEFORE
-   /variable/CMAKE_MFC_FLAG
-   /variable/CMAKE_MAXIMUM_RECURSION_DEPTH
-   /variable/CMAKE_MESSAGE_CONTEXT
-   /variable/CMAKE_MESSAGE_CONTEXT_SHOW
-   /variable/CMAKE_MESSAGE_INDENT
-   /variable/CMAKE_MESSAGE_LOG_LEVEL
-   /variable/CMAKE_MODULE_PATH
-   /variable/CMAKE_POLICY_DEFAULT_CMPNNNN
-   /variable/CMAKE_POLICY_WARNING_CMPNNNN
-   /variable/CMAKE_PREFIX_PATH
-   /variable/CMAKE_PROGRAM_PATH
-   /variable/CMAKE_PROJECT_INCLUDE
-   /variable/CMAKE_PROJECT_INCLUDE_BEFORE
-   /variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE
-   /variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE_BEFORE
-   /variable/CMAKE_SKIP_INSTALL_ALL_DEPENDENCY
-   /variable/CMAKE_STAGING_PREFIX
-   /variable/CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
-   /variable/CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE
-   /variable/CMAKE_SUPPRESS_REGENERATION
-   /variable/CMAKE_SYSROOT
-   /variable/CMAKE_SYSROOT_COMPILE
-   /variable/CMAKE_SYSROOT_LINK
-   /variable/CMAKE_SYSTEM_APPBUNDLE_PATH
-   /variable/CMAKE_SYSTEM_FRAMEWORK_PATH
-   /variable/CMAKE_SYSTEM_IGNORE_PATH
-   /variable/CMAKE_SYSTEM_INCLUDE_PATH
-   /variable/CMAKE_SYSTEM_LIBRARY_PATH
-   /variable/CMAKE_SYSTEM_PREFIX_PATH
-   /variable/CMAKE_SYSTEM_PROGRAM_PATH
-   /variable/CMAKE_USER_MAKE_RULES_OVERRIDE
-   /variable/CMAKE_WARN_DEPRECATED
-   /variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
-   /variable/CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY
-   /variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER
-   /variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
-   /variable/CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
-   /variable/CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
-   /variable/CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
-   /variable/CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
-   /variable/CMAKE_XCODE_SCHEME_ENVIRONMENT
-   /variable/CMAKE_XCODE_SCHEME_GUARD_MALLOC
-   /variable/CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
-   /variable/CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES
-   /variable/CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE
-   /variable/CMAKE_XCODE_SCHEME_MALLOC_STACK
-   /variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER
-   /variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP
-   /variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
-   /variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
-   /variable/CMAKE_XCODE_SCHEME_WORKING_DIRECTORY
-   /variable/CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS
-   /variable/PackageName_ROOT
-
-Variables that Describe the System
-==================================
-
-.. toctree::
-   :maxdepth: 1
-
-   /variable/ANDROID
-   /variable/APPLE
-   /variable/BORLAND
-   /variable/CMAKE_CL_64
-   /variable/CMAKE_COMPILER_2005
-   /variable/CMAKE_HOST_APPLE
-   /variable/CMAKE_HOST_SOLARIS
-   /variable/CMAKE_HOST_SYSTEM
-   /variable/CMAKE_HOST_SYSTEM_NAME
-   /variable/CMAKE_HOST_SYSTEM_PROCESSOR
-   /variable/CMAKE_HOST_SYSTEM_VERSION
-   /variable/CMAKE_HOST_UNIX
-   /variable/CMAKE_HOST_WIN32
-   /variable/CMAKE_LIBRARY_ARCHITECTURE
-   /variable/CMAKE_LIBRARY_ARCHITECTURE_REGEX
-   /variable/CMAKE_OBJECT_PATH_MAX
-   /variable/CMAKE_SYSTEM
-   /variable/CMAKE_SYSTEM_NAME
-   /variable/CMAKE_SYSTEM_PROCESSOR
-   /variable/CMAKE_SYSTEM_VERSION
-   /variable/CYGWIN
-   /variable/GHS-MULTI
-   /variable/IOS
-   /variable/MINGW
-   /variable/MSVC
-   /variable/MSVC10
-   /variable/MSVC11
-   /variable/MSVC12
-   /variable/MSVC14
-   /variable/MSVC60
-   /variable/MSVC70
-   /variable/MSVC71
-   /variable/MSVC80
-   /variable/MSVC90
-   /variable/MSVC_IDE
-   /variable/MSVC_TOOLSET_VERSION
-   /variable/MSVC_VERSION
-   /variable/MSYS
-   /variable/UNIX
-   /variable/WIN32
-   /variable/WINCE
-   /variable/WINDOWS_PHONE
-   /variable/WINDOWS_STORE
-   /variable/XCODE
-   /variable/XCODE_VERSION
-
-Variables that Control the Build
-================================
-
-.. toctree::
-   :maxdepth: 1
-
-   /variable/CMAKE_AIX_EXPORT_ALL_SYMBOLS
-   /variable/CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS
-   /variable/CMAKE_ANDROID_API
-   /variable/CMAKE_ANDROID_API_MIN
-   /variable/CMAKE_ANDROID_ARCH
-   /variable/CMAKE_ANDROID_ARCH_ABI
-   /variable/CMAKE_ANDROID_ARM_MODE
-   /variable/CMAKE_ANDROID_ARM_NEON
-   /variable/CMAKE_ANDROID_ASSETS_DIRECTORIES
-   /variable/CMAKE_ANDROID_EXCEPTIONS
-   /variable/CMAKE_ANDROID_GUI
-   /variable/CMAKE_ANDROID_JAR_DEPENDENCIES
-   /variable/CMAKE_ANDROID_JAR_DIRECTORIES
-   /variable/CMAKE_ANDROID_JAVA_SOURCE_DIR
-   /variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES
-   /variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES
-   /variable/CMAKE_ANDROID_NDK
-   /variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS
-   /variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG
-   /variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
-   /variable/CMAKE_ANDROID_PROCESS_MAX
-   /variable/CMAKE_ANDROID_PROGUARD
-   /variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH
-   /variable/CMAKE_ANDROID_RTTI
-   /variable/CMAKE_ANDROID_SECURE_PROPS_PATH
-   /variable/CMAKE_ANDROID_SKIP_ANT_STEP
-   /variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN
-   /variable/CMAKE_ANDROID_STL_TYPE
-   /variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY
-   /variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG
-   /variable/CMAKE_AUTOGEN_ORIGIN_DEPENDS
-   /variable/CMAKE_AUTOGEN_PARALLEL
-   /variable/CMAKE_AUTOGEN_VERBOSE
-   /variable/CMAKE_AUTOMOC
-   /variable/CMAKE_AUTOMOC_COMPILER_PREDEFINES
-   /variable/CMAKE_AUTOMOC_DEPEND_FILTERS
-   /variable/CMAKE_AUTOMOC_MACRO_NAMES
-   /variable/CMAKE_AUTOMOC_MOC_OPTIONS
-   /variable/CMAKE_AUTOMOC_PATH_PREFIX
-   /variable/CMAKE_AUTORCC
-   /variable/CMAKE_AUTORCC_OPTIONS
-   /variable/CMAKE_AUTOUIC
-   /variable/CMAKE_AUTOUIC_OPTIONS
-   /variable/CMAKE_AUTOUIC_SEARCH_PATHS
-   /variable/CMAKE_BUILD_RPATH
-   /variable/CMAKE_BUILD_RPATH_USE_ORIGIN
-   /variable/CMAKE_BUILD_WITH_INSTALL_NAME_DIR
-   /variable/CMAKE_BUILD_WITH_INSTALL_RPATH
-   /variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY
-   /variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG
-   /variable/CMAKE_CONFIG_POSTFIX
-   /variable/CMAKE_CROSS_CONFIGS
-   /variable/CMAKE_CTEST_ARGUMENTS
-   /variable/CMAKE_CUDA_SEPARABLE_COMPILATION
-   /variable/CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS
-   /variable/CMAKE_CUDA_RUNTIME_LIBRARY
-   /variable/CMAKE_DEBUG_POSTFIX
-   /variable/CMAKE_DEFAULT_BUILD_TYPE
-   /variable/CMAKE_DEFAULT_CONFIGS
-   /variable/CMAKE_DISABLE_PRECOMPILE_HEADERS
-   /variable/CMAKE_ENABLE_EXPORTS
-   /variable/CMAKE_EXE_LINKER_FLAGS
-   /variable/CMAKE_EXE_LINKER_FLAGS_CONFIG
-   /variable/CMAKE_EXE_LINKER_FLAGS_CONFIG_INIT
-   /variable/CMAKE_EXE_LINKER_FLAGS_INIT
-   /variable/CMAKE_FOLDER
-   /variable/CMAKE_FRAMEWORK
-   /variable/CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG
-   /variable/CMAKE_Fortran_FORMAT
-   /variable/CMAKE_Fortran_MODULE_DIRECTORY
-   /variable/CMAKE_Fortran_PREPROCESS
-   /variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE
-   /variable/CMAKE_GLOBAL_AUTOGEN_TARGET
-   /variable/CMAKE_GLOBAL_AUTOGEN_TARGET_NAME
-   /variable/CMAKE_GLOBAL_AUTORCC_TARGET
-   /variable/CMAKE_GLOBAL_AUTORCC_TARGET_NAME
-   /variable/CMAKE_GNUtoMS
-   /variable/CMAKE_INCLUDE_CURRENT_DIR
-   /variable/CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE
-   /variable/CMAKE_INSTALL_NAME_DIR
-   /variable/CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH
-   /variable/CMAKE_INSTALL_RPATH
-   /variable/CMAKE_INSTALL_RPATH_USE_LINK_PATH
-   /variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION
-   /variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION_CONFIG
-   /variable/CMAKE_IOS_INSTALL_COMBINED
-   /variable/CMAKE_LANG_CLANG_TIDY
-   /variable/CMAKE_LANG_COMPILER_LAUNCHER
-   /variable/CMAKE_LANG_CPPCHECK
-   /variable/CMAKE_LANG_CPPLINT
-   /variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE
-   /variable/CMAKE_LANG_LINK_LIBRARY_FILE_FLAG
-   /variable/CMAKE_LANG_LINK_LIBRARY_FLAG
-   /variable/CMAKE_LANG_VISIBILITY_PRESET
-   /variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY
-   /variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG
-   /variable/CMAKE_LIBRARY_PATH_FLAG
-   /variable/CMAKE_LINK_DEF_FILE_FLAG
-   /variable/CMAKE_LINK_DEPENDS_NO_SHARED
-   /variable/CMAKE_LINK_INTERFACE_LIBRARIES
-   /variable/CMAKE_LINK_LIBRARY_FILE_FLAG
-   /variable/CMAKE_LINK_LIBRARY_FLAG
-   /variable/CMAKE_LINK_WHAT_YOU_USE
-   /variable/CMAKE_MACOSX_BUNDLE
-   /variable/CMAKE_MACOSX_RPATH
-   /variable/CMAKE_MAP_IMPORTED_CONFIG_CONFIG
-   /variable/CMAKE_MODULE_LINKER_FLAGS
-   /variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG
-   /variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG_INIT
-   /variable/CMAKE_MODULE_LINKER_FLAGS_INIT
-   /variable/CMAKE_MSVCIDE_RUN_PATH
-   /variable/CMAKE_MSVC_RUNTIME_LIBRARY
-   /variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX
-   /variable/CMAKE_NO_BUILTIN_CHRPATH
-   /variable/CMAKE_NO_SYSTEM_FROM_IMPORTED
-   /variable/CMAKE_OSX_ARCHITECTURES
-   /variable/CMAKE_OSX_DEPLOYMENT_TARGET
-   /variable/CMAKE_OSX_SYSROOT
-   /variable/CMAKE_PCH_WARN_INVALID
-   /variable/CMAKE_PDB_OUTPUT_DIRECTORY
-   /variable/CMAKE_PDB_OUTPUT_DIRECTORY_CONFIG
-   /variable/CMAKE_POSITION_INDEPENDENT_CODE
-   /variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY
-   /variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG
-   /variable/CMAKE_SHARED_LINKER_FLAGS
-   /variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG
-   /variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG_INIT
-   /variable/CMAKE_SHARED_LINKER_FLAGS_INIT
-   /variable/CMAKE_SKIP_BUILD_RPATH
-   /variable/CMAKE_SKIP_INSTALL_RPATH
-   /variable/CMAKE_STATIC_LINKER_FLAGS
-   /variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG
-   /variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG_INIT
-   /variable/CMAKE_STATIC_LINKER_FLAGS_INIT
-   /variable/CMAKE_TRY_COMPILE_CONFIGURATION
-   /variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
-   /variable/CMAKE_TRY_COMPILE_TARGET_TYPE
-   /variable/CMAKE_UNITY_BUILD
-   /variable/CMAKE_UNITY_BUILD_BATCH_SIZE
-   /variable/CMAKE_USE_RELATIVE_PATHS
-   /variable/CMAKE_VISIBILITY_INLINES_HIDDEN
-   /variable/CMAKE_VS_GLOBALS
-   /variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD
-   /variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD
-   /variable/CMAKE_VS_JUST_MY_CODE_DEBUGGING
-   /variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES
-   /variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES
-   /variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES
-   /variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES
-   /variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES
-   /variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES
-   /variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES
-   /variable/CMAKE_VS_WINRT_BY_DEFAULT
-   /variable/CMAKE_WIN32_EXECUTABLE
-   /variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
-   /variable/CMAKE_XCODE_ATTRIBUTE_an-attribute
-   /variable/EXECUTABLE_OUTPUT_PATH
-   /variable/LIBRARY_OUTPUT_PATH
-
-Variables for Languages
-=======================
-
-.. toctree::
-   :maxdepth: 1
-
-   /variable/CMAKE_COMPILER_IS_GNUCC
-   /variable/CMAKE_COMPILER_IS_GNUCXX
-   /variable/CMAKE_COMPILER_IS_GNUG77
-   /variable/CMAKE_CUDA_ARCHITECTURES
-   /variable/CMAKE_CUDA_COMPILE_FEATURES
-   /variable/CMAKE_CUDA_HOST_COMPILER
-   /variable/CMAKE_CUDA_EXTENSIONS
-   /variable/CMAKE_CUDA_STANDARD
-   /variable/CMAKE_CUDA_STANDARD_REQUIRED
-   /variable/CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES
-   /variable/CMAKE_CXX_COMPILE_FEATURES
-   /variable/CMAKE_CXX_EXTENSIONS
-   /variable/CMAKE_CXX_STANDARD
-   /variable/CMAKE_CXX_STANDARD_REQUIRED
-   /variable/CMAKE_C_COMPILE_FEATURES
-   /variable/CMAKE_C_EXTENSIONS
-   /variable/CMAKE_C_STANDARD
-   /variable/CMAKE_C_STANDARD_REQUIRED
-   /variable/CMAKE_Fortran_MODDIR_DEFAULT
-   /variable/CMAKE_Fortran_MODDIR_FLAG
-   /variable/CMAKE_Fortran_MODOUT_FLAG
-   /variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE
-   /variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX
-   /variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX
-   /variable/CMAKE_LANG_ARCHIVE_APPEND
-   /variable/CMAKE_LANG_ARCHIVE_CREATE
-   /variable/CMAKE_LANG_ARCHIVE_FINISH
-   /variable/CMAKE_LANG_COMPILER
-   /variable/CMAKE_LANG_COMPILER_EXTERNAL_TOOLCHAIN
-   /variable/CMAKE_LANG_COMPILER_ID
-   /variable/CMAKE_LANG_COMPILER_LOADED
-   /variable/CMAKE_LANG_COMPILER_PREDEFINES_COMMAND
-   /variable/CMAKE_LANG_COMPILER_TARGET
-   /variable/CMAKE_LANG_COMPILER_VERSION
-   /variable/CMAKE_LANG_COMPILE_OBJECT
-   /variable/CMAKE_LANG_CREATE_SHARED_LIBRARY
-   /variable/CMAKE_LANG_CREATE_SHARED_MODULE
-   /variable/CMAKE_LANG_CREATE_STATIC_LIBRARY
-   /variable/CMAKE_LANG_FLAGS
-   /variable/CMAKE_LANG_FLAGS_CONFIG
-   /variable/CMAKE_LANG_FLAGS_CONFIG_INIT
-   /variable/CMAKE_LANG_FLAGS_DEBUG
-   /variable/CMAKE_LANG_FLAGS_DEBUG_INIT
-   /variable/CMAKE_LANG_FLAGS_INIT
-   /variable/CMAKE_LANG_FLAGS_MINSIZEREL
-   /variable/CMAKE_LANG_FLAGS_MINSIZEREL_INIT
-   /variable/CMAKE_LANG_FLAGS_RELEASE
-   /variable/CMAKE_LANG_FLAGS_RELEASE_INIT
-   /variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO
-   /variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT
-   /variable/CMAKE_LANG_IGNORE_EXTENSIONS
-   /variable/CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES
-   /variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES
-   /variable/CMAKE_LANG_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
-   /variable/CMAKE_LANG_IMPLICIT_LINK_LIBRARIES
-   /variable/CMAKE_LANG_LIBRARY_ARCHITECTURE
-   /variable/CMAKE_LANG_LINKER_PREFERENCE
-   /variable/CMAKE_LANG_LINKER_PREFERENCE_PROPAGATES
-   /variable/CMAKE_LANG_LINKER_WRAPPER_FLAG
-   /variable/CMAKE_LANG_LINKER_WRAPPER_FLAG_SEP
-   /variable/CMAKE_LANG_LINK_EXECUTABLE
-   /variable/CMAKE_LANG_OUTPUT_EXTENSION
-   /variable/CMAKE_LANG_SIMULATE_ID
-   /variable/CMAKE_LANG_SIMULATE_VERSION
-   /variable/CMAKE_LANG_SIZEOF_DATA_PTR
-   /variable/CMAKE_LANG_SOURCE_FILE_EXTENSIONS
-   /variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES
-   /variable/CMAKE_LANG_STANDARD_LIBRARIES
-   /variable/CMAKE_OBJC_EXTENSIONS
-   /variable/CMAKE_OBJC_STANDARD
-   /variable/CMAKE_OBJC_STANDARD_REQUIRED
-   /variable/CMAKE_OBJCXX_EXTENSIONS
-   /variable/CMAKE_OBJCXX_STANDARD
-   /variable/CMAKE_OBJCXX_STANDARD_REQUIRED
-   /variable/CMAKE_Swift_LANGUAGE_VERSION
-   /variable/CMAKE_USER_MAKE_RULES_OVERRIDE_LANG
-
-Variables for CTest
-===================
-
-.. toctree::
-   :maxdepth: 1
-
-   /variable/CTEST_BINARY_DIRECTORY
-   /variable/CTEST_BUILD_COMMAND
-   /variable/CTEST_BUILD_NAME
-   /variable/CTEST_BZR_COMMAND
-   /variable/CTEST_BZR_UPDATE_OPTIONS
-   /variable/CTEST_CHANGE_ID
-   /variable/CTEST_CHECKOUT_COMMAND
-   /variable/CTEST_CONFIGURATION_TYPE
-   /variable/CTEST_CONFIGURE_COMMAND
-   /variable/CTEST_COVERAGE_COMMAND
-   /variable/CTEST_COVERAGE_EXTRA_FLAGS
-   /variable/CTEST_CURL_OPTIONS
-   /variable/CTEST_CUSTOM_COVERAGE_EXCLUDE
-   /variable/CTEST_CUSTOM_ERROR_EXCEPTION
-   /variable/CTEST_CUSTOM_ERROR_MATCH
-   /variable/CTEST_CUSTOM_ERROR_POST_CONTEXT
-   /variable/CTEST_CUSTOM_ERROR_PRE_CONTEXT
-   /variable/CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE
-   /variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS
-   /variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS
-   /variable/CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE
-   /variable/CTEST_CUSTOM_MEMCHECK_IGNORE
-   /variable/CTEST_CUSTOM_POST_MEMCHECK
-   /variable/CTEST_CUSTOM_POST_TEST
-   /variable/CTEST_CUSTOM_PRE_MEMCHECK
-   /variable/CTEST_CUSTOM_PRE_TEST
-   /variable/CTEST_CUSTOM_TESTS_IGNORE
-   /variable/CTEST_CUSTOM_WARNING_EXCEPTION
-   /variable/CTEST_CUSTOM_WARNING_MATCH
-   /variable/CTEST_CVS_CHECKOUT
-   /variable/CTEST_CVS_COMMAND
-   /variable/CTEST_CVS_UPDATE_OPTIONS
-   /variable/CTEST_DROP_LOCATION
-   /variable/CTEST_DROP_METHOD
-   /variable/CTEST_DROP_SITE
-   /variable/CTEST_DROP_SITE_CDASH
-   /variable/CTEST_DROP_SITE_PASSWORD
-   /variable/CTEST_DROP_SITE_USER
-   /variable/CTEST_EXTRA_COVERAGE_GLOB
-   /variable/CTEST_GIT_COMMAND
-   /variable/CTEST_GIT_INIT_SUBMODULES
-   /variable/CTEST_GIT_UPDATE_CUSTOM
-   /variable/CTEST_GIT_UPDATE_OPTIONS
-   /variable/CTEST_HG_COMMAND
-   /variable/CTEST_HG_UPDATE_OPTIONS
-   /variable/CTEST_LABELS_FOR_SUBPROJECTS
-   /variable/CTEST_MEMORYCHECK_COMMAND
-   /variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS
-   /variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS
-   /variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE
-   /variable/CTEST_MEMORYCHECK_TYPE
-   /variable/CTEST_NIGHTLY_START_TIME
-   /variable/CTEST_P4_CLIENT
-   /variable/CTEST_P4_COMMAND
-   /variable/CTEST_P4_OPTIONS
-   /variable/CTEST_P4_UPDATE_OPTIONS
-   /variable/CTEST_RESOURCE_SPEC_FILE
-   /variable/CTEST_RUN_CURRENT_SCRIPT
-   /variable/CTEST_SCP_COMMAND
-   /variable/CTEST_SITE
-   /variable/CTEST_SUBMIT_URL
-   /variable/CTEST_SOURCE_DIRECTORY
-   /variable/CTEST_SVN_COMMAND
-   /variable/CTEST_SVN_OPTIONS
-   /variable/CTEST_SVN_UPDATE_OPTIONS
-   /variable/CTEST_TEST_LOAD
-   /variable/CTEST_TEST_TIMEOUT
-   /variable/CTEST_TRIGGER_SITE
-   /variable/CTEST_UPDATE_COMMAND
-   /variable/CTEST_UPDATE_OPTIONS
-   /variable/CTEST_UPDATE_VERSION_ONLY
-   /variable/CTEST_UPDATE_VERSION_OVERRIDE
-   /variable/CTEST_USE_LAUNCHERS
-
-Variables for CPack
-===================
-
-.. toctree::
-   :maxdepth: 1
-
-   /variable/CPACK_ABSOLUTE_DESTINATION_FILES
-   /variable/CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY
-   /variable/CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
-   /variable/CPACK_INCLUDE_TOPLEVEL_DIRECTORY
-   /variable/CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
-   /variable/CPACK_PACKAGING_INSTALL_PREFIX
-   /variable/CPACK_SET_DESTDIR
-   /variable/CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
-
-Variable Expansion Operators
-============================
-
-.. toctree::
-   :maxdepth: 1
-
-   /variable/CACHE
-   /variable/ENV
-
-Internal Variables
-==================
-
-CMake has many internal variables.  Most of them are undocumented.
-Some of them, however, were at some point described as normal
-variables, and therefore may be encountered in legacy code. They
-are subject to change, and not recommended for use in project code.
-
-.. toctree::
-   :maxdepth: 1
-
-   /variable/CMAKE_HOME_DIRECTORY
-   /variable/CMAKE_INTERNAL_PLATFORM_ABI
-   /variable/CMAKE_LANG_COMPILER_ABI
-   /variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID
-   /variable/CMAKE_LANG_COMPILER_VERSION_INTERNAL
-   /variable/CMAKE_LANG_PLATFORM_ID
-   /variable/CMAKE_NOT_USING_CONFIG_FLAGS
-   /variable/CMAKE_VS_INTEL_Fortran_PROJECT_VERSION
diff --git a/share/cmake-3.18/Help/manual/cmake.1.rst b/share/cmake-3.18/Help/manual/cmake.1.rst
deleted file mode 100644
index 9becfc6..0000000
--- a/share/cmake-3.18/Help/manual/cmake.1.rst
+++ /dev/null
@@ -1,804 +0,0 @@
-.. cmake-manual-description: CMake Command-Line Reference
-
-cmake(1)
-********
-
-Synopsis
-========
-
-.. parsed-literal::
-
- `Generate a Project Buildsystem`_
-  cmake [<options>] <path-to-source>
-  cmake [<options>] <path-to-existing-build>
-  cmake [<options>] -S <path-to-source> -B <path-to-build>
-
- `Build a Project`_
-  cmake --build <dir> [<options>] [-- <build-tool-options>]
-
- `Install a Project`_
-  cmake --install <dir> [<options>]
-
- `Open a Project`_
-  cmake --open <dir>
-
- `Run a Script`_
-  cmake [{-D <var>=<value>}...] -P <cmake-script-file>
-
- `Run a Command-Line Tool`_
-  cmake -E <command> [<options>]
-
- `Run the Find-Package Tool`_
-  cmake --find-package [<options>]
-
- `View Help`_
-  cmake --help[-<topic>]
-
-Description
-===========
-
-The **cmake** executable is the command-line interface of the cross-platform
-buildsystem generator CMake.  The above `Synopsis`_ lists various actions
-the tool can perform as described in sections below.
-
-To build a software project with CMake, `Generate a Project Buildsystem`_.
-Optionally use **cmake** to `Build a Project`_, `Install a Project`_ or just
-run the corresponding build tool (e.g. ``make``) directly.  **cmake** can also
-be used to `View Help`_.
-
-The other actions are meant for use by software developers writing
-scripts in the :manual:`CMake language <cmake-language(7)>` to support
-their builds.
-
-For graphical user interfaces that may be used in place of **cmake**,
-see :manual:`ccmake <ccmake(1)>` and :manual:`cmake-gui <cmake-gui(1)>`.
-For command-line interfaces to the CMake testing and packaging facilities,
-see :manual:`ctest <ctest(1)>` and :manual:`cpack <cpack(1)>`.
-
-For more information on CMake at large, `see also`_ the links at the end
-of this manual.
-
-
-Introduction to CMake Buildsystems
-==================================
-
-A *buildsystem* describes how to build a project's executables and libraries
-from its source code using a *build tool* to automate the process.  For
-example, a buildsystem may be a ``Makefile`` for use with a command-line
-``make`` tool or a project file for an Integrated Development Environment
-(IDE).  In order to avoid maintaining multiple such buildsystems, a project
-may specify its buildsystem abstractly using files written in the
-:manual:`CMake language <cmake-language(7)>`.  From these files CMake
-generates a preferred buildsystem locally for each user through a backend
-called a *generator*.
-
-To generate a buildsystem with CMake, the following must be selected:
-
-Source Tree
-  The top-level directory containing source files provided by the project.
-  The project specifies its buildsystem using files as described in the
-  :manual:`cmake-language(7)` manual, starting with a top-level file named
-  ``CMakeLists.txt``.  These files specify build targets and their
-  dependencies as described in the :manual:`cmake-buildsystem(7)` manual.
-
-Build Tree
-  The top-level directory in which buildsystem files and build output
-  artifacts (e.g. executables and libraries) are to be stored.
-  CMake will write a ``CMakeCache.txt`` file to identify the directory
-  as a build tree and store persistent information such as buildsystem
-  configuration options.
-
-  To maintain a pristine source tree, perform an *out-of-source* build
-  by using a separate dedicated build tree.  An *in-source* build in
-  which the build tree is placed in the same directory as the source
-  tree is also supported, but discouraged.
-
-Generator
-  This chooses the kind of buildsystem to generate.  See the
-  :manual:`cmake-generators(7)` manual for documentation of all generators.
-  Run ``cmake --help`` to see a list of generators available locally.
-  Optionally use the ``-G`` option below to specify a generator, or simply
-  accept the default CMake chooses for the current platform.
-
-  When using one of the :ref:`Command-Line Build Tool Generators`
-  CMake expects that the environment needed by the compiler toolchain
-  is already configured in the shell.  When using one of the
-  :ref:`IDE Build Tool Generators`, no particular environment is needed.
-
-
-Generate a Project Buildsystem
-==============================
-
-Run CMake with one of the following command signatures to specify the
-source and build trees and generate a buildsystem:
-
-``cmake [<options>] <path-to-source>``
-  Uses the current working directory as the build tree, and
-  ``<path-to-source>`` as the source tree.  The specified path may
-  be absolute or relative to the current working directory.
-  The source tree must contain a ``CMakeLists.txt`` file and must
-  *not* contain a ``CMakeCache.txt`` file because the latter
-  identifies an existing build tree.  For example:
-
-  .. code-block:: console
-
-    $ mkdir build ; cd build
-    $ cmake ../src
-
-``cmake [<options>] <path-to-existing-build>``
-  Uses ``<path-to-existing-build>`` as the build tree, and loads the
-  path to the source tree from its ``CMakeCache.txt`` file, which must
-  have already been generated by a previous run of CMake.  The specified
-  path may be absolute or relative to the current working directory.
-  For example:
-
-  .. code-block:: console
-
-    $ cd build
-    $ cmake .
-
-``cmake [<options>] -S <path-to-source> -B <path-to-build>``
-  Uses ``<path-to-build>`` as the build tree and ``<path-to-source>``
-  as the source tree.  The specified paths may be absolute or relative
-  to the current working directory.  The source tree must contain a
-  ``CMakeLists.txt`` file.  The build tree will be created automatically
-  if it does not already exist.  For example:
-
-  .. code-block:: console
-
-    $ cmake -S src -B build
-
-In all cases the ``<options>`` may be zero or more of the `Options`_ below.
-
-After generating a buildsystem one may use the corresponding native
-build tool to build the project.  For example, after using the
-:generator:`Unix Makefiles` generator one may run ``make`` directly:
-
-  .. code-block:: console
-
-    $ make
-    $ make install
-
-Alternatively, one may use **cmake** to `Build a Project`_ by
-automatically choosing and invoking the appropriate native build tool.
-
-.. _`CMake Options`:
-
-Options
--------
-
-.. include:: OPTIONS_BUILD.txt
-
-``-L[A][H]``
- List non-advanced cached variables.
-
- List ``CACHE`` variables will run CMake and list all the variables from
- the CMake ``CACHE`` that are not marked as ``INTERNAL`` or :prop_cache:`ADVANCED`.
- This will effectively display current CMake settings, which can then be
- changed with ``-D`` option.  Changing some of the variables may result
- in more variables being created.  If ``A`` is specified, then it will
- display also advanced variables.  If ``H`` is specified, it will also
- display help for each variable.
-
-``-N``
- View mode only.
-
- Only load the cache.  Do not actually run configure and generate
- steps.
-
-``--graphviz=[file]``
- Generate graphviz of dependencies, see :module:`CMakeGraphVizOptions` for more.
-
- Generate a graphviz input file that will contain all the library and
- executable dependencies in the project.  See the documentation for
- :module:`CMakeGraphVizOptions` for more details.
-
-``--system-information [file]``
- Dump information about this system.
-
- Dump a wide range of information about the current system.  If run
- from the top of a binary tree for a CMake project it will dump
- additional information such as the cache, log files etc.
-
-``--log-level=<ERROR|WARNING|NOTICE|STATUS|VERBOSE|DEBUG|TRACE>``
- Set the log level.
-
- The :command:`message` command will only output messages of the specified
- log level or higher.  The default log level is ``STATUS``.
-
- To make a log level persist between CMake runs, set
- :variable:`CMAKE_MESSAGE_LOG_LEVEL` as a cache variable instead.
- If both the command line option and the variable are given, the command line
- option takes precedence.
-
- For backward compatibility reasons, ``--loglevel`` is also accepted as a
- synonym for this option.
-
-``--log-context``
- Enable the :command:`message` command outputting context attached to each
- message.
-
- This option turns on showing context for the current CMake run only.
- To make showing the context persistent for all subsequent CMake runs, set
- :variable:`CMAKE_MESSAGE_CONTEXT_SHOW` as a cache variable instead.
- When this command line option is given, :variable:`CMAKE_MESSAGE_CONTEXT_SHOW`
- is ignored.
-
-``--debug-trycompile``
- Do not delete the :command:`try_compile` build tree.
- Only useful on one :command:`try_compile` at a time.
-
- Do not delete the files and directories created for :command:`try_compile`
- calls.  This is useful in debugging failed try_compiles.  It may
- however change the results of the try-compiles as old junk from a
- previous try-compile may cause a different test to either pass or
- fail incorrectly.  This option is best used for one try-compile at a
- time, and only when debugging.
-
-``--debug-output``
- Put cmake in a debug mode.
-
- Print extra information during the cmake run like stack traces with
- :command:`message(SEND_ERROR)` calls.
-
-``--debug-find``
- Put cmake find commands in a debug mode.
-
- Print extra find call information during the cmake run to standard
- error. Output is designed for human consumption and not for parsing.
- See also the :variable:`CMAKE_FIND_DEBUG_MODE` variable for debugging
- a more local part of the project.
-
-``--trace``
- Put cmake in trace mode.
-
- Print a trace of all calls made and from where.
-
-``--trace-expand``
- Put cmake in trace mode.
-
- Like ``--trace``, but with variables expanded.
-
-``--trace-format=<format>``
- Put cmake in trace mode and sets the trace output format.
-
- ``<format>`` can be one of the following values.
-
-   ``human``
-     Prints each trace line in a human-readable format. This is the
-     default format.
-
-   ``json-v1``
-     Prints each line as a separate JSON document. Each document is
-     separated by a newline ( ``\n`` ). It is guaranteed that no
-     newline characters will be present inside a JSON document.
-
-     JSON trace format:
-
-     .. code-block:: json
-
-       {
-         "file": "/full/path/to/the/CMake/file.txt",
-         "line": 0,
-         "cmd": "add_executable",
-         "args": ["foo", "bar"],
-         "time": 1579512535.9687231,
-         "frame": 2
-       }
-
-     The members are:
-
-     ``file``
-       The full path to the CMake source file where the function
-       was called.
-
-     ``line``
-       The line in ``file`` of the function call.
-
-     ``cmd``
-       The name of the function that was called.
-
-     ``args``
-       A string list of all function parameters.
-
-     ``time``
-       Timestamp (seconds since epoch) of the function call.
-
-     ``frame``
-       Stack frame depth of the function that was called.
-
-     Additionally, the first JSON document outputted contains the
-     ``version`` key for the current major and minor version of the
-
-     JSON trace format:
-
-     .. code-block:: json
-
-       {
-         "version": {
-           "major": 1,
-           "minor": 0
-         }
-       }
-
-     The members are:
-
-     ``version``
-       Indicates the version of the JSON format. The version has a
-       major and minor components following semantic version conventions.
-
-``--trace-source=<file>``
- Put cmake in trace mode, but output only lines of a specified file.
-
- Multiple options are allowed.
-
-``--trace-redirect=<file>``
- Put cmake in trace mode and redirect trace output to a file instead of stderr.
-
-``--warn-uninitialized``
- Warn about uninitialized values.
-
- Print a warning when an uninitialized variable is used.
-
-``--warn-unused-vars``
- Warn about unused variables.
-
- Find variables that are declared or set, but not used.
-
-``--no-warn-unused-cli``
- Don't warn about command line options.
-
- Don't find variables that are declared on the command line, but not
- used.
-
-``--check-system-vars``
- Find problems with variable usage in system files.
-
- Normally, unused and uninitialized variables are searched for only
- in :variable:`CMAKE_SOURCE_DIR` and :variable:`CMAKE_BINARY_DIR`.
- This flag tells CMake to warn about other files as well.
-
-``--profiling-output=<path>``
- Used in conjuction with ``--profiling-format`` to output to a given path.
-
-``--profiling-format=<file>``
- Enable the output of profiling data of CMake script in the given format.
-
- This can aid performance analysis of CMake scripts executed. Third party
- applications should be used to process the output into human readable format.
-
- Currently supported values are:
- ``google-trace`` Outputs in Google Trace Format, which can be parsed by the
- about:tracing tab of Google Chrome or using a plugin for a tool like Trace
- Compass.
-
-.. _`Build Tool Mode`:
-
-Build a Project
-===============
-
-CMake provides a command-line signature to build an already-generated
-project binary tree:
-
-.. code-block:: shell
-
-  cmake --build <dir> [<options>] [-- <build-tool-options>]
-
-This abstracts a native build tool's command-line interface with the
-following options:
-
-``--build <dir>``
-  Project binary directory to be built.  This is required and must be first.
-
-``--parallel [<jobs>], -j [<jobs>]``
-  The maximum number of concurrent processes to use when building.
-  If ``<jobs>`` is omitted the native build tool's default number is used.
-
-  The :envvar:`CMAKE_BUILD_PARALLEL_LEVEL` environment variable, if set,
-  specifies a default parallel level when this option is not given.
-
-  Some native build tools always build in parallel.  The use of ``<jobs>``
-  value of ``1`` can be used to limit to a single job.
-
-``--target <tgt>..., -t <tgt>...``
-  Build ``<tgt>`` instead of the default target.  Multiple targets may be
-  given, separated by spaces.
-
-``--config <cfg>``
-  For multi-configuration tools, choose configuration ``<cfg>``.
-
-``--clean-first``
-  Build target ``clean`` first, then build.
-  (To clean only, use ``--target clean``.)
-
-``--use-stderr``
-  Ignored.  Behavior is default in CMake >= 3.0.
-
-``--verbose, -v``
-  Enable verbose output - if supported - including the build commands to be
-  executed.
-
-  This option can be omitted if :envvar:`VERBOSE` environment variable or
-  :variable:`CMAKE_VERBOSE_MAKEFILE` cached variable is set.
-
-
-``--``
-  Pass remaining options to the native tool.
-
-Run ``cmake --build`` with no options for quick help.
-
-Install a Project
-=================
-
-CMake provides a command-line signature to install an already-generated
-project binary tree:
-
-.. code-block:: shell
-
-  cmake --install <dir> [<options>]
-
-This may be used after building a project to run installation without
-using the generated build system or the native build tool.
-The options are:
-
-``--install <dir>``
-  Project binary directory to install. This is required and must be first.
-
-``--config <cfg>``
-  For multi-configuration generators, choose configuration ``<cfg>``.
-
-``--component <comp>``
-  Component-based install. Only install component ``<comp>``.
-
-``--prefix <prefix>``
-  Override the installation prefix, :variable:`CMAKE_INSTALL_PREFIX`.
-
-``--strip``
-  Strip before installing.
-
-``-v, --verbose``
-  Enable verbose output.
-
-  This option can be omitted if :envvar:`VERBOSE` environment variable is set.
-
-Run ``cmake --install`` with no options for quick help.
-
-Open a Project
-==============
-
-.. code-block:: shell
-
-  cmake --open <dir>
-
-Open the generated project in the associated application.  This is only
-supported by some generators.
-
-
-.. _`Script Processing Mode`:
-
-Run a Script
-============
-
-.. code-block:: shell
-
-  cmake [{-D <var>=<value>}...] -P <cmake-script-file> [-- <unparsed-options>...]
-
-Process the given cmake file as a script written in the CMake
-language.  No configure or generate step is performed and the cache
-is not modified.  If variables are defined using ``-D``, this must be
-done before the ``-P`` argument.
-
-Any options after ``--`` are not parsed by CMake, but they are still included
-in the set of :variable:`CMAKE_ARGV<n> <CMAKE_ARGV0>` variables passed to the
-script (including the ``--`` itself).
-
-
-Run a Command-Line Tool
-=======================
-
-CMake provides builtin command-line tools through the signature
-
-.. code-block:: shell
-
-  cmake -E <command> [<options>]
-
-Run ``cmake -E`` or ``cmake -E help`` for a summary of commands.
-Available commands are:
-
-``capabilities``
-  Report cmake capabilities in JSON format. The output is a JSON object
-  with the following keys:
-
-  ``version``
-    A JSON object with version information. Keys are:
-
-    ``string``
-      The full version string as displayed by cmake ``--version``.
-    ``major``
-      The major version number in integer form.
-    ``minor``
-      The minor version number in integer form.
-    ``patch``
-      The patch level in integer form.
-    ``suffix``
-      The cmake version suffix string.
-    ``isDirty``
-      A bool that is set if the cmake build is from a dirty tree.
-
-  ``generators``
-    A list available generators. Each generator is a JSON object with the
-    following keys:
-
-    ``name``
-      A string containing the name of the generator.
-    ``toolsetSupport``
-      ``true`` if the generator supports toolsets and ``false`` otherwise.
-    ``platformSupport``
-      ``true`` if the generator supports platforms and ``false`` otherwise.
-    ``extraGenerators``
-      A list of strings with all the extra generators compatible with
-      the generator.
-
-  ``fileApi``
-    Optional member that is present when the :manual:`cmake-file-api(7)`
-    is available.  The value is a JSON object with one member:
-
-    ``requests``
-      A JSON array containing zero or more supported file-api requests.
-      Each request is a JSON object with members:
-
-      ``kind``
-        Specifies one of the supported :ref:`file-api object kinds`.
-
-      ``version``
-        A JSON array whose elements are each a JSON object containing
-        ``major`` and ``minor`` members specifying non-negative integer
-        version components.
-
-  ``serverMode``
-    ``true`` if cmake supports server-mode and ``false`` otherwise.
-
-``cat <files>...``
-  Concatenate files and print on the standard output.
-
-``chdir <dir> <cmd> [<arg>...]``
-  Change the current working directory and run a command.
-
-``compare_files [--ignore-eol] <file1> <file2>``
-  Check if ``<file1>`` is same as ``<file2>``. If files are the same,
-  then returns ``0``, if not it returns ``1``.  The ``--ignore-eol`` option
-  implies line-wise comparison and ignores LF/CRLF differences.
-
-``copy <file>... <destination>``
-  Copy files to ``<destination>`` (either file or directory).
-  If multiple files are specified, the ``<destination>`` must be
-  directory and it must exist. Wildcards are not supported.
-  ``copy`` does follow symlinks. That means it does not copy symlinks,
-  but the files or directories it point to.
-
-``copy_directory <dir>... <destination>``
-  Copy content of ``<dir>...`` directories to ``<destination>`` directory.
-  If ``<destination>`` directory does not exist it will be created.
-  ``copy_directory`` does follow symlinks.
-
-``copy_if_different <file>... <destination>``
-  Copy files to ``<destination>`` (either file or directory) if
-  they have changed.
-  If multiple files are specified, the ``<destination>`` must be
-  directory and it must exist.
-  ``copy_if_different`` does follow symlinks.
-
-``create_symlink <old> <new>``
-  Create a symbolic link ``<new>`` naming ``<old>``.
-
-  .. note::
-    Path to where ``<new>`` symbolic link will be created has to exist beforehand.
-
-``echo [<string>...]``
-  Displays arguments as text.
-
-``echo_append [<string>...]``
-  Displays arguments as text but no new line.
-
-``env [--unset=NAME]... [NAME=VALUE]... COMMAND [ARG]...``
-  Run command in a modified environment.
-
-``environment``
-  Display the current environment variables.
-
-``false``
-  Do nothing, with an exit code of 1.
-
-``make_directory <dir>...``
-  Create ``<dir>`` directories.  If necessary, create parent
-  directories too.  If a directory already exists it will be
-  silently ignored.
-
-``md5sum <file>...``
-  Create MD5 checksum of files in ``md5sum`` compatible format::
-
-     351abe79cd3800b38cdfb25d45015a15  file1.txt
-     052f86c15bbde68af55c7f7b340ab639  file2.txt
-
-``sha1sum <file>...``
-  Create SHA1 checksum of files in ``sha1sum`` compatible format::
-
-     4bb7932a29e6f73c97bb9272f2bdc393122f86e0  file1.txt
-     1df4c8f318665f9a5f2ed38f55adadb7ef9f559c  file2.txt
-
-``sha224sum <file>...``
-  Create SHA224 checksum of files in ``sha224sum`` compatible format::
-
-     b9b9346bc8437bbda630b0b7ddfc5ea9ca157546dbbf4c613192f930  file1.txt
-     6dfbe55f4d2edc5fe5c9197bca51ceaaf824e48eba0cc453088aee24  file2.txt
-
-``sha256sum <file>...``
-  Create SHA256 checksum of files in ``sha256sum`` compatible format::
-
-     76713b23615d31680afeb0e9efe94d47d3d4229191198bb46d7485f9cb191acc  file1.txt
-     15b682ead6c12dedb1baf91231e1e89cfc7974b3787c1e2e01b986bffadae0ea  file2.txt
-
-``sha384sum <file>...``
-  Create SHA384 checksum of files in ``sha384sum`` compatible format::
-
-     acc049fedc091a22f5f2ce39a43b9057fd93c910e9afd76a6411a28a8f2b8a12c73d7129e292f94fc0329c309df49434  file1.txt
-     668ddeb108710d271ee21c0f3acbd6a7517e2b78f9181c6a2ff3b8943af92b0195dcb7cce48aa3e17893173c0a39e23d  file2.txt
-
-``sha512sum <file>...``
-  Create SHA512 checksum of files in ``sha512sum`` compatible format::
-
-     2a78d7a6c5328cfb1467c63beac8ff21794213901eaadafd48e7800289afbc08e5fb3e86aa31116c945ee3d7bf2a6194489ec6101051083d1108defc8e1dba89  file1.txt
-     7a0b54896fe5e70cca6dd643ad6f672614b189bf26f8153061c4d219474b05dad08c4e729af9f4b009f1a1a280cb625454bf587c690f4617c27e3aebdf3b7a2d  file2.txt
-
-``remove [-f] <file>...``
-  .. deprecated:: 3.17
-
-  Remove the file(s). The planned behaviour was that if any of the
-  listed files already do not exist, the command returns a non-zero exit code,
-  but no message is logged. The ``-f`` option changes the behavior to return a
-  zero exit code (i.e. success) in such situations instead.
-  ``remove`` does not follow symlinks. That means it remove only symlinks
-  and not files it point to.
-
-  The implementation was buggy and always returned 0. It cannot be fixed without
-  breaking backwards compatibility. Use ``rm`` instead.
-
-``remove_directory <dir>...``
-  .. deprecated:: 3.17
-
-  Remove ``<dir>`` directories and their contents. If a directory does
-  not exist it will be silently ignored.  If ``<dir>`` is a symlink to
-  a directory, just the symlink will be removed.
-  Use ``rm`` instead.
-
-``rename <oldname> <newname>``
-  Rename a file or directory (on one volume). If file with the ``<newname>`` name
-  already exists, then it will be silently replaced.
-
-``rm [-rRf] <file> <dir>...``
-  Remove the files ``<file>`` or directories ``dir``.
-  Use ``-r`` or ``-R`` to remove directories and their contents recursively.
-  If any of the listed files/directories do not exist, the command returns a
-  non-zero exit code, but no message is logged. The ``-f`` option changes
-  the behavior to return a zero exit code (i.e. success) in such
-  situations instead.
-
-``server``
-  Launch :manual:`cmake-server(7)` mode.
-
-``sleep <number>...``
-  Sleep for given number of seconds.
-
-``tar [cxt][vf][zjJ] file.tar [<options>] [--] [<pathname>...]``
-  Create or extract a tar or zip archive.  Options are:
-
-  ``c``
-    Create a new archive containing the specified files.
-    If used, the ``<pathname>...`` argument is mandatory.
-  ``x``
-    Extract to disk from the archive.
-    The ``<pathname>...`` argument could be used to extract only selected files
-    or directories.
-    When extracting selected files or directories, you must provide their exact
-    names including the path, as printed by list (``-t``).
-  ``t``
-    List archive contents.
-    The ``<pathname>...`` argument could be used to list only selected files
-    or directories.
-  ``v``
-    Produce verbose output.
-  ``z``
-    Compress the resulting archive with gzip.
-  ``j``
-    Compress the resulting archive with bzip2.
-  ``J``
-    Compress the resulting archive with XZ.
-  ``--zstd``
-    Compress the resulting archive with Zstandard.
-  ``--files-from=<file>``
-    Read file names from the given file, one per line.
-    Blank lines are ignored.  Lines may not start in ``-``
-    except for ``--add-file=<name>`` to add files whose
-    names start in ``-``.
-  ``--format=<format>``
-    Specify the format of the archive to be created.
-    Supported formats are: ``7zip``, ``gnutar``, ``pax``,
-    ``paxr`` (restricted pax, default), and ``zip``.
-  ``--mtime=<date>``
-    Specify modification time recorded in tarball entries.
-  ``--``
-    Stop interpreting options and treat all remaining arguments
-    as file names, even if they start with ``-``.
-
-
-``time <command> [<args>...]``
-  Run command and display elapsed time.
-
-``touch <file>...``
-  Creates ``<file>`` if file do not exist.
-  If ``<file>`` exists, it is changing ``<file>`` access and modification times.
-
-``touch_nocreate <file>...``
-  Touch a file if it exists but do not create it.  If a file does
-  not exist it will be silently ignored.
-
-``true``
-  Do nothing, with an exit code of 0.
-
-Windows-specific Command-Line Tools
------------------------------------
-
-The following ``cmake -E`` commands are available only on Windows:
-
-``delete_regv <key>``
-  Delete Windows registry value.
-
-``env_vs8_wince <sdkname>``
-  Displays a batch file which sets the environment for the provided
-  Windows CE SDK installed in VS2005.
-
-``env_vs9_wince <sdkname>``
-  Displays a batch file which sets the environment for the provided
-  Windows CE SDK installed in VS2008.
-
-``write_regv <key> <value>``
-  Write Windows registry value.
-
-
-Run the Find-Package Tool
-=========================
-
-CMake provides a pkg-config like helper for Makefile-based projects:
-
-.. code-block:: shell
-
-  cmake --find-package [<options>]
-
-It searches a package using :command:`find_package()` and prints the
-resulting flags to stdout.  This can be used instead of pkg-config
-to find installed libraries in plain Makefile-based projects or in
-autoconf-based projects (via ``share/aclocal/cmake.m4``).
-
-.. note::
-  This mode is not well-supported due to some technical limitations.
-  It is kept for compatibility but should not be used in new projects.
-
-
-View Help
-=========
-
-To print selected pages from the CMake documentation, use
-
-.. code-block:: shell
-
-  cmake --help[-<topic>]
-
-with one of the following options:
-
-.. include:: OPTIONS_HELP.txt
-
-
-See Also
-========
-
-.. include:: LINKS.txt
diff --git a/share/cmake-3.18/Help/manual/ctest.1.rst b/share/cmake-3.18/Help/manual/ctest.1.rst
deleted file mode 100644
index d3ab75a..0000000
--- a/share/cmake-3.18/Help/manual/ctest.1.rst
+++ /dev/null
@@ -1,1593 +0,0 @@
-.. cmake-manual-description: CTest Command-Line Reference
-
-ctest(1)
-********
-
-.. contents::
-
-Synopsis
-========
-
-.. parsed-literal::
-
- ctest [<options>]
- ctest --build-and-test <path-to-source> <path-to-build>
-       --build-generator <generator> [<options>...]
-       [--build-options <opts>...] [--test-command <command> [<args>...]]
- ctest {-D <dashboard> | -M <model> -T <action> | -S <script> | -SP <script>}
-       [-- <dashboard-options>...]
-
-Description
-===========
-
-The **ctest** executable is the CMake test driver program.
-CMake-generated build trees created for projects that use the
-:command:`enable_testing` and :command:`add_test` commands have testing support.
-This program will run the tests and report results.
-
-Options
-=======
-
-``-C <cfg>, --build-config <cfg>``
- Choose configuration to test.
-
- Some CMake-generated build trees can have multiple build
- configurations in the same tree.  This option can be used to specify
- which one should be tested.  Example configurations are ``Debug`` and
- ``Release``.
-
-``--progress``
- Enable short progress output from tests.
-
- When the output of **ctest** is being sent directly to a terminal, the
- progress through the set of tests is reported by updating the same line
- rather than printing start and end messages for each test on new lines.
- This can significantly reduce the verbosity of the test output.
- Test completion messages are still output on their own line for failed
- tests and the final test summary will also still be logged.
-
- This option can also be enabled by setting the environment variable
- :envvar:`CTEST_PROGRESS_OUTPUT`.
-
-``-V,--verbose``
- Enable verbose output from tests.
-
- Test output is normally suppressed and only summary information is
- displayed.  This option will show all test output.
-
-``-VV,--extra-verbose``
- Enable more verbose output from tests.
-
- Test output is normally suppressed and only summary information is
- displayed.  This option will show even more test output.
-
-``--debug``
- Displaying more verbose internals of CTest.
-
- This feature will result in a large number of output that is mostly
- useful for debugging dashboard problems.
-
-``--output-on-failure``
- Output anything outputted by the test program if the test should fail.
- This option can also be enabled by setting the
- :envvar:`CTEST_OUTPUT_ON_FAILURE` environment variable
-
-``--stop-on-failure``
- Stop running the tests when the first failure happens.
-
-``-F``
- Enable failover.
-
- This option allows CTest to resume a test set execution that was
- previously interrupted.  If no interruption occurred, the ``-F`` option
- will have no effect.
-
-``-j <jobs>, --parallel <jobs>``
- Run the tests in parallel using the given number of jobs.
-
- This option tells CTest to run the tests in parallel using given
- number of jobs. This option can also be set by setting the
- :envvar:`CTEST_PARALLEL_LEVEL` environment variable.
-
- This option can be used with the :prop_test:`PROCESSORS` test property.
-
- See `Label and Subproject Summary`_.
-
-``--resource-spec-file <file>``
- Run CTest with :ref:`resource allocation <ctest-resource-allocation>` enabled,
- using the
- :ref:`resource specification file <ctest-resource-specification-file>`
- specified in ``<file>``.
-
- When ``ctest`` is run as a `Dashboard Client`_ this sets the
- ``ResourceSpecFile`` option of the `CTest Test Step`_.
-
-``--test-load <level>``
- While running tests in parallel (e.g. with ``-j``), try not to start
- tests when they may cause the CPU load to pass above a given threshold.
-
- When ``ctest`` is run as a `Dashboard Client`_ this sets the
- ``TestLoad`` option of the `CTest Test Step`_.
-
-``-Q,--quiet``
- Make CTest quiet.
-
- This option will suppress all the output.  The output log file will
- still be generated if the ``--output-log`` is specified.  Options such
- as ``--verbose``, ``--extra-verbose``, and ``--debug`` are ignored
- if ``--quiet`` is specified.
-
-``-O <file>, --output-log <file>``
- Output to log file.
-
- This option tells CTest to write all its output to a ``<file>`` log file.
-
-``-N,--show-only[=<format>]``
- Disable actual execution of tests.
-
- This option tells CTest to list the tests that would be run but not
- actually run them.  Useful in conjunction with the ``-R`` and ``-E``
- options.
-
- ``<format>`` can be one of the following values.
-
-   ``human``
-     Human-friendly output.  This is not guaranteed to be stable.
-     This is the default.
-
-   ``json-v1``
-     Dump the test information in JSON format.
-     See `Show as JSON Object Model`_.
-
-``-L <regex>, --label-regex <regex>``
- Run tests with labels matching regular expression.
-
- This option tells CTest to run only the tests whose labels match the
- given regular expression.
-
-``-R <regex>, --tests-regex <regex>``
- Run tests matching regular expression.
-
- This option tells CTest to run only the tests whose names match the
- given regular expression.
-
-``-E <regex>, --exclude-regex <regex>``
- Exclude tests matching regular expression.
-
- This option tells CTest to NOT run the tests whose names match the
- given regular expression.
-
-``-LE <regex>, --label-exclude <regex>``
- Exclude tests with labels matching regular expression.
-
- This option tells CTest to NOT run the tests whose labels match the
- given regular expression.
-
-``-FA <regex>, --fixture-exclude-any <regex>``
- Exclude fixtures matching ``<regex>`` from automatically adding any tests to
- the test set.
-
- If a test in the set of tests to be executed requires a particular fixture,
- that fixture's setup and cleanup tests would normally be added to the test set
- automatically. This option prevents adding setup or cleanup tests for fixtures
- matching the ``<regex>``. Note that all other fixture behavior is retained,
- including test dependencies and skipping tests that have fixture setup tests
- that fail.
-
-``-FS <regex>, --fixture-exclude-setup <regex>``
- Same as ``-FA`` except only matching setup tests are excluded.
-
-``-FC <regex>, --fixture-exclude-cleanup <regex>``
- Same as ``-FA`` except only matching cleanup tests are excluded.
-
-``-D <dashboard>, --dashboard <dashboard>``
- Execute dashboard test.
-
- This option tells CTest to act as a CDash client and perform a
- dashboard test.  All tests are ``<Mode><Test>``, where ``<Mode>`` can be
- ``Experimental``, ``Nightly``, and ``Continuous``, and ``<Test>`` can be
- ``Start``, ``Update``, ``Configure``, ``Build``, ``Test``,
- ``Coverage``, and ``Submit``.
-
- See `Dashboard Client`_.
-
-``-D <var>:<type>=<value>``
- Define a variable for script mode.
-
- Pass in variable values on the command line.  Use in conjunction
- with ``-S`` to pass variable values to a dashboard script.  Parsing ``-D``
- arguments as variable values is only attempted if the value
- following ``-D`` does not match any of the known dashboard types.
-
-``-M <model>, --test-model <model>``
- Sets the model for a dashboard.
-
- This option tells CTest to act as a CDash client where the ``<model>``
- can be ``Experimental``, ``Nightly``, and ``Continuous``.
- Combining ``-M`` and ``-T`` is similar to ``-D``.
-
- See `Dashboard Client`_.
-
-``-T <action>, --test-action <action>``
- Sets the dashboard action to perform.
-
- This option tells CTest to act as a CDash client and perform some
- action such as ``start``, ``build``, ``test`` etc. See
- `Dashboard Client Steps`_ for the full list of actions.
- Combining ``-M`` and ``-T`` is similar to ``-D``.
-
- See `Dashboard Client`_.
-
-``-S <script>, --script <script>``
- Execute a dashboard for a configuration.
-
- This option tells CTest to load in a configuration script which sets
- a number of parameters such as the binary and source directories.
- Then CTest will do what is required to create and run a dashboard.
- This option basically sets up a dashboard and then runs ``ctest -D``
- with the appropriate options.
-
- See `Dashboard Client`_.
-
-``-SP <script>, --script-new-process <script>``
- Execute a dashboard for a configuration.
-
- This option does the same operations as ``-S`` but it will do them in a
- separate process.  This is primarily useful in cases where the
- script may modify the environment and you do not want the modified
- environment to impact other ``-S`` scripts.
-
- See `Dashboard Client`_.
-
-``-I [Start,End,Stride,test#,test#|Test file], --tests-information``
- Run a specific number of tests by number.
-
- This option causes CTest to run tests starting at number ``Start``,
- ending at number ``End``, and incrementing by ``Stride``.  Any additional
- numbers after ``Stride`` are considered individual test numbers.  ``Start``,
- ``End``, or ``Stride`` can be empty.  Optionally a file can be given that
- contains the same syntax as the command line.
-
-``-U, --union``
- Take the Union of ``-I`` and ``-R``.
-
- When both ``-R`` and ``-I`` are specified by default the intersection of
- tests are run.  By specifying ``-U`` the union of tests is run instead.
-
-``--rerun-failed``
- Run only the tests that failed previously.
-
- This option tells CTest to perform only the tests that failed during
- its previous run.  When this option is specified, CTest ignores all
- other options intended to modify the list of tests to run (``-L``, ``-R``,
- ``-E``, ``-LE``, ``-I``, etc).  In the event that CTest runs and no tests
- fail, subsequent calls to CTest with the ``--rerun-failed`` option will run
- the set of tests that most recently failed (if any).
-
-``--repeat <mode>:<n>``
-  Run tests repeatedly based on the given ``<mode>`` up to ``<n>`` times.
-  The modes are:
-
-  ``until-fail``
-    Require each test to run ``<n>`` times without failing in order to pass.
-    This is useful in finding sporadic failures in test cases.
-
-  ``until-pass``
-    Allow each test to run up to ``<n>`` times in order to pass.
-    Repeats tests if they fail for any reason.
-    This is useful in tolerating sporadic failures in test cases.
-
-  ``after-timeout``
-    Allow each test to run up to ``<n>`` times in order to pass.
-    Repeats tests only if they timeout.
-    This is useful in tolerating sporadic timeouts in test cases
-    on busy machines.
-
-``--repeat-until-fail <n>``
- Equivalent to ``--repeat until-fail:<n>``.
-
-``--max-width <width>``
- Set the max width for a test name to output.
-
- Set the maximum width for each test name to show in the output.
- This allows the user to widen the output to avoid clipping the test
- name which can be very annoying.
-
-``--interactive-debug-mode [0|1]``
- Set the interactive mode to ``0`` or ``1``.
-
- This option causes CTest to run tests in either an interactive mode
- or a non-interactive mode.  On Windows this means that in
- non-interactive mode, all system debug pop up windows are blocked.
- In dashboard mode (``Experimental``, ``Nightly``, ``Continuous``), the default
- is non-interactive.  When just running tests not for a dashboard the
- default is to allow popups and interactive debugging.
-
-``--no-label-summary``
- Disable timing summary information for labels.
-
- This option tells CTest not to print summary information for each
- label associated with the tests run.  If there are no labels on the
- tests, nothing extra is printed.
-
- See `Label and Subproject Summary`_.
-
-``--no-subproject-summary``
- Disable timing summary information for subprojects.
-
- This option tells CTest not to print summary information for each
- subproject associated with the tests run.  If there are no subprojects on the
- tests, nothing extra is printed.
-
- See `Label and Subproject Summary`_.
-
-``--build-and-test``
-See `Build and Test Mode`_.
-
-``--test-output-size-passed <size>``
- Limit the output for passed tests to ``<size>`` bytes.
-
-``--test-output-size-failed <size>``
- Limit the output for failed tests to ``<size>`` bytes.
-
-``--overwrite``
- Overwrite CTest configuration option.
-
- By default CTest uses configuration options from configuration file.
- This option will overwrite the configuration option.
-
-``--force-new-ctest-process``
- Run child CTest instances as new processes.
-
- By default CTest will run child CTest instances within the same
- process.  If this behavior is not desired, this argument will
- enforce new processes for child CTest processes.
-
-``--schedule-random``
- Use a random order for scheduling tests.
-
- This option will run the tests in a random order.  It is commonly
- used to detect implicit dependencies in a test suite.
-
-``--submit-index``
- Legacy option for old Dart2 dashboard server feature.
- Do not use.
-
-``--timeout <seconds>``
- Set the default test timeout.
-
- This option effectively sets a timeout on all tests that do not
- already have a timeout set on them via the :prop_test:`TIMEOUT`
- property.
-
-``--stop-time <time>``
- Set a time at which all tests should stop running.
-
- Set a real time of day at which all tests should timeout.  Example:
- ``7:00:00 -0400``.  Any time format understood by the curl date parser
- is accepted.  Local time is assumed if no timezone is specified.
-
-``--print-labels``
- Print all available test labels.
-
- This option will not run any tests, it will simply print the list of
- all labels associated with the test set.
-
-``--no-tests=<[error|ignore]>``
- Regard no tests found either as error or ignore it.
-
- If no tests were found, the default behavior of CTest is to always log an
- error message but to return an error code in script mode only.  This option
- unifies the behavior of CTest by either returning an error code if no tests
- were found or by ignoring it.
-
-.. include:: OPTIONS_HELP.txt
-
-.. _`Label and Subproject Summary`:
-
-Label and Subproject Summary
-============================
-
-CTest prints timing summary information for each ``LABEL`` and subproject
-associated with the tests run. The label time summary will not include labels
-that are mapped to subprojects.
-
-When the :prop_test:`PROCESSORS` test property is set, CTest will display a
-weighted test timing result in label and subproject summaries. The time is
-reported with `sec*proc` instead of just `sec`.
-
-The weighted time summary reported for each label or subproject ``j``
-is computed as::
-
-  Weighted Time Summary for Label/Subproject j =
-      sum(raw_test_time[j,i] * num_processors[j,i], i=1...num_tests[j])
-
-  for labels/subprojects j=1...total
-
-where:
-
-* ``raw_test_time[j,i]``: Wall-clock time for the ``i`` test
-  for the ``j`` label or subproject
-* ``num_processors[j,i]``: Value of the CTest :prop_test:`PROCESSORS` property
-  for the ``i`` test for the ``j`` label or subproject
-* ``num_tests[j]``: Number of tests associated with the ``j`` label or subproject
-* ``total``: Total number of labels or subprojects that have at least one test run
-
-Therefore, the weighted time summary for each label or subproject represents
-the amount of time that CTest gave to run the tests for each label or
-subproject and gives a good representation of the total expense of the tests
-for each label or subproject when compared to other labels or subprojects.
-
-For example, if ``SubprojectA`` showed ``100 sec*proc`` and ``SubprojectB`` showed
-``10 sec*proc``, then CTest allocated approximately 10 times the CPU/core time
-to run the tests for ``SubprojectA`` than for ``SubprojectB`` (e.g. so if effort
-is going to be expended to reduce the cost of the test suite for the whole
-project, then reducing the cost of the test suite for ``SubprojectA`` would
-likely have a larger impact than effort to reduce the cost of the test suite
-for ``SubprojectB``).
-
-.. _`Build and Test Mode`:
-
-Build and Test Mode
-===================
-
-CTest provides a command-line signature to configure (i.e. run cmake on),
-build, and/or execute a test::
-
-  ctest --build-and-test <path-to-source> <path-to-build>
-        --build-generator <generator>
-        [<options>...]
-        [--build-options <opts>...]
-        [--test-command <command> [<args>...]]
-
-The configure and test steps are optional. The arguments to this command line
-are the source and binary directories.  The ``--build-generator`` option *must*
-be provided to use ``--build-and-test``.  If ``--test-command`` is specified
-then that will be run after the build is complete.  Other options that affect
-this mode include:
-
-``--build-target``
- Specify a specific target to build.
-
- If left out the ``all`` target is built.
-
-``--build-nocmake``
- Run the build without running cmake first.
-
- Skip the cmake step.
-
-``--build-run-dir``
- Specify directory to run programs from.
-
- Directory where programs will be after it has been compiled.
-
-``--build-two-config``
- Run CMake twice.
-
-``--build-exe-dir``
- Specify the directory for the executable.
-
-``--build-generator``
- Specify the generator to use. See the :manual:`cmake-generators(7)` manual.
-
-``--build-generator-platform``
- Specify the generator-specific platform.
-
-``--build-generator-toolset``
- Specify the generator-specific toolset.
-
-``--build-project``
- Specify the name of the project to build.
-
-``--build-makeprogram``
- Specify the explicit make program to be used by CMake when configuring and
- building the project. Only applicable for Make and Ninja based generators.
-
-``--build-noclean``
- Skip the make clean step.
-
-``--build-config-sample``
- A sample executable to use to determine the configuration that
- should be used.  e.g.  ``Debug``, ``Release`` etc.
-
-``--build-options``
- Additional options for configuring the build (i.e. for CMake, not for
- the build tool).  Note that if this is specified, the ``--build-options``
- keyword and its arguments must be the last option given on the command
- line, with the possible exception of ``--test-command``.
-
-``--test-command``
- The command to run as the test step with the ``--build-and-test`` option.
- All arguments following this keyword will be assumed to be part of the
- test command line, so it must be the last option given.
-
-``--test-timeout``
- The time limit in seconds
-
-.. _`Dashboard Client`:
-
-Dashboard Client
-================
-
-CTest can operate as a client for the `CDash`_ software quality dashboard
-application.  As a dashboard client, CTest performs a sequence of steps
-to configure, build, and test software, and then submits the results to
-a `CDash`_ server. The command-line signature used to submit to `CDash`_ is::
-
-  ctest (-D <dashboard> | -M <model> -T <action> | -S <script> | -SP <script>)
-        [-- <dashboard-options>...]
-
-Options for Dashboard Client include:
-
-``--group <group>``
- Specify what group you'd like to submit results to
-
- Submit dashboard to specified group instead of default one.  By
- default, the dashboard is submitted to Nightly, Experimental, or
- Continuous group, but by specifying this option, the group can be
- arbitrary.
-
- This replaces the deprecated option ``--track``.
- Despite the name change its behavior is unchanged.
-
-``-A <file>, --add-notes <file>``
- Add a notes file with submission.
-
- This option tells CTest to include a notes file when submitting
- dashboard.
-
-``--tomorrow-tag``
- ``Nightly`` or ``Experimental`` starts with next day tag.
-
- This is useful if the build will not finish in one day.
-
-``--extra-submit <file>[;<file>]``
- Submit extra files to the dashboard.
-
- This option will submit extra files to the dashboard.
-
-``--http1.0``
- Submit using `HTTP 1.0`.
-
- This option will force CTest to use `HTTP 1.0` to submit files to the
- dashboard, instead of `HTTP 1.1`.
-
-``--no-compress-output``
- Do not compress test output when submitting.
-
- This flag will turn off automatic compression of test output.  Use
- this to maintain compatibility with an older version of CDash which
- doesn't support compressed test output.
-
-Dashboard Client Steps
-----------------------
-
-CTest defines an ordered list of testing steps of which some or all may
-be run as a dashboard client:
-
-``Start``
-  Start a new dashboard submission to be composed of results recorded
-  by the following steps.
-  See the `CTest Start Step`_ section below.
-
-``Update``
-  Update the source tree from its version control repository.
-  Record the old and new versions and the list of updated source files.
-  See the `CTest Update Step`_ section below.
-
-``Configure``
-  Configure the software by running a command in the build tree.
-  Record the configuration output log.
-  See the `CTest Configure Step`_ section below.
-
-``Build``
-  Build the software by running a command in the build tree.
-  Record the build output log and detect warnings and errors.
-  See the `CTest Build Step`_ section below.
-
-``Test``
-  Test the software by loading a ``CTestTestfile.cmake``
-  from the build tree and executing the defined tests.
-  Record the output and result of each test.
-  See the `CTest Test Step`_ section below.
-
-``Coverage``
-  Compute coverage of the source code by running a coverage
-  analysis tool and recording its output.
-  See the `CTest Coverage Step`_ section below.
-
-``MemCheck``
-  Run the software test suite through a memory check tool.
-  Record the test output, results, and issues reported by the tool.
-  See the `CTest MemCheck Step`_ section below.
-
-``Submit``
-  Submit results recorded from other testing steps to the
-  software quality dashboard server.
-  See the `CTest Submit Step`_ section below.
-
-Dashboard Client Modes
-----------------------
-
-CTest defines three modes of operation as a dashboard client:
-
-``Nightly``
-  This mode is intended to be invoked once per day, typically at night.
-  It enables the ``Start``, ``Update``, ``Configure``, ``Build``, ``Test``,
-  ``Coverage``, and ``Submit`` steps by default.  Selected steps run even
-  if the ``Update`` step reports no changes to the source tree.
-
-``Continuous``
-  This mode is intended to be invoked repeatedly throughout the day.
-  It enables the ``Start``, ``Update``, ``Configure``, ``Build``, ``Test``,
-  ``Coverage``, and ``Submit`` steps by default, but exits after the
-  ``Update`` step if it reports no changes to the source tree.
-
-``Experimental``
-  This mode is intended to be invoked by a developer to test local changes.
-  It enables the ``Start``, ``Configure``, ``Build``, ``Test``, ``Coverage``,
-  and ``Submit`` steps by default.
-
-Dashboard Client via CTest Command-Line
----------------------------------------
-
-CTest can perform testing on an already-generated build tree.
-Run the ``ctest`` command with the current working directory set
-to the build tree and use one of these signatures::
-
-  ctest -D <mode>[<step>]
-  ctest -M <mode> [ -T <step> ]...
-
-The ``<mode>`` must be one of the above `Dashboard Client Modes`_,
-and each ``<step>`` must be one of the above `Dashboard Client Steps`_.
-
-CTest reads the `Dashboard Client Configuration`_ settings from
-a file in the build tree called either ``CTestConfiguration.ini``
-or ``DartConfiguration.tcl`` (the names are historical).  The format
-of the file is::
-
-  # Lines starting in '#' are comments.
-  # Other non-blank lines are key-value pairs.
-  <setting>: <value>
-
-where ``<setting>`` is the setting name and ``<value>`` is the
-setting value.
-
-In build trees generated by CMake, this configuration file is
-generated by the :module:`CTest` module if included by the project.
-The module uses variables to obtain a value for each setting
-as documented with the settings below.
-
-.. _`CTest Script`:
-
-Dashboard Client via CTest Script
----------------------------------
-
-CTest can perform testing driven by a :manual:`cmake-language(7)`
-script that creates and maintains the source and build tree as
-well as performing the testing steps.  Run the ``ctest`` command
-with the current working directory set outside of any build tree
-and use one of these signatures::
-
-  ctest -S <script>
-  ctest -SP <script>
-
-The ``<script>`` file must call :ref:`CTest Commands` commands
-to run testing steps explicitly as documented below.  The commands
-obtain `Dashboard Client Configuration`_ settings from their
-arguments or from variables set in the script.
-
-Dashboard Client Configuration
-==============================
-
-The `Dashboard Client Steps`_ may be configured by named
-settings as documented in the following sections.
-
-.. _`CTest Start Step`:
-
-CTest Start Step
-----------------
-
-Start a new dashboard submission to be composed of results recorded
-by the following steps.
-
-In a `CTest Script`_, the :command:`ctest_start` command runs this step.
-Arguments to the command may specify some of the step settings.
-The command first runs the command-line specified by the
-``CTEST_CHECKOUT_COMMAND`` variable, if set, to initialize the source
-directory.
-
-Configuration settings include:
-
-``BuildDirectory``
-  The full path to the project build tree.
-
-  * `CTest Script`_ variable: :variable:`CTEST_BINARY_DIRECTORY`
-  * :module:`CTest` module variable: :variable:`PROJECT_BINARY_DIR`
-
-``SourceDirectory``
-  The full path to the project source tree.
-
-  * `CTest Script`_ variable: :variable:`CTEST_SOURCE_DIRECTORY`
-  * :module:`CTest` module variable: :variable:`PROJECT_SOURCE_DIR`
-
-.. _`CTest Update Step`:
-
-CTest Update Step
------------------
-
-In a `CTest Script`_, the :command:`ctest_update` command runs this step.
-Arguments to the command may specify some of the step settings.
-
-Configuration settings to specify the version control tool include:
-
-``BZRCommand``
-  ``bzr`` command-line tool to use if source tree is managed by Bazaar.
-
-  * `CTest Script`_ variable: :variable:`CTEST_BZR_COMMAND`
-  * :module:`CTest` module variable: none
-
-``BZRUpdateOptions``
-  Command-line options to the ``BZRCommand`` when updating the source.
-
-  * `CTest Script`_ variable: :variable:`CTEST_BZR_UPDATE_OPTIONS`
-  * :module:`CTest` module variable: none
-
-``CVSCommand``
-  ``cvs`` command-line tool to use if source tree is managed by CVS.
-
-  * `CTest Script`_ variable: :variable:`CTEST_CVS_COMMAND`
-  * :module:`CTest` module variable: ``CVSCOMMAND``
-
-``CVSUpdateOptions``
-  Command-line options to the ``CVSCommand`` when updating the source.
-
-  * `CTest Script`_ variable: :variable:`CTEST_CVS_UPDATE_OPTIONS`
-  * :module:`CTest` module variable: ``CVS_UPDATE_OPTIONS``
-
-``GITCommand``
-  ``git`` command-line tool to use if source tree is managed by Git.
-
-  * `CTest Script`_ variable: :variable:`CTEST_GIT_COMMAND`
-  * :module:`CTest` module variable: ``GITCOMMAND``
-
-  The source tree is updated by ``git fetch`` followed by
-  ``git reset --hard`` to the ``FETCH_HEAD``.  The result is the same
-  as ``git pull`` except that any local modifications are overwritten.
-  Use ``GITUpdateCustom`` to specify a different approach.
-
-``GITInitSubmodules``
-  If set, CTest will update the repository's submodules before updating.
-
-  * `CTest Script`_ variable: :variable:`CTEST_GIT_INIT_SUBMODULES`
-  * :module:`CTest` module variable: ``CTEST_GIT_INIT_SUBMODULES``
-
-``GITUpdateCustom``
-  Specify a custom command line (as a semicolon-separated list) to run
-  in the source tree (Git work tree) to update it instead of running
-  the ``GITCommand``.
-
-  * `CTest Script`_ variable: :variable:`CTEST_GIT_UPDATE_CUSTOM`
-  * :module:`CTest` module variable: ``CTEST_GIT_UPDATE_CUSTOM``
-
-``GITUpdateOptions``
-  Command-line options to the ``GITCommand`` when updating the source.
-
-  * `CTest Script`_ variable: :variable:`CTEST_GIT_UPDATE_OPTIONS`
-  * :module:`CTest` module variable: ``GIT_UPDATE_OPTIONS``
-
-``HGCommand``
-  ``hg`` command-line tool to use if source tree is managed by Mercurial.
-
-  * `CTest Script`_ variable: :variable:`CTEST_HG_COMMAND`
-  * :module:`CTest` module variable: none
-
-``HGUpdateOptions``
-  Command-line options to the ``HGCommand`` when updating the source.
-
-  * `CTest Script`_ variable: :variable:`CTEST_HG_UPDATE_OPTIONS`
-  * :module:`CTest` module variable: none
-
-``P4Client``
-  Value of the ``-c`` option to the ``P4Command``.
-
-  * `CTest Script`_ variable: :variable:`CTEST_P4_CLIENT`
-  * :module:`CTest` module variable: ``CTEST_P4_CLIENT``
-
-``P4Command``
-  ``p4`` command-line tool to use if source tree is managed by Perforce.
-
-  * `CTest Script`_ variable: :variable:`CTEST_P4_COMMAND`
-  * :module:`CTest` module variable: ``P4COMMAND``
-
-``P4Options``
-  Command-line options to the ``P4Command`` for all invocations.
-
-  * `CTest Script`_ variable: :variable:`CTEST_P4_OPTIONS`
-  * :module:`CTest` module variable: ``CTEST_P4_OPTIONS``
-
-``P4UpdateCustom``
-  Specify a custom command line (as a semicolon-separated list) to run
-  in the source tree (Perforce tree) to update it instead of running
-  the ``P4Command``.
-
-  * `CTest Script`_ variable: none
-  * :module:`CTest` module variable: ``CTEST_P4_UPDATE_CUSTOM``
-
-``P4UpdateOptions``
-  Command-line options to the ``P4Command`` when updating the source.
-
-  * `CTest Script`_ variable: :variable:`CTEST_P4_UPDATE_OPTIONS`
-  * :module:`CTest` module variable: ``CTEST_P4_UPDATE_OPTIONS``
-
-``SVNCommand``
-  ``svn`` command-line tool to use if source tree is managed by Subversion.
-
-  * `CTest Script`_ variable: :variable:`CTEST_SVN_COMMAND`
-  * :module:`CTest` module variable: ``SVNCOMMAND``
-
-``SVNOptions``
-  Command-line options to the ``SVNCommand`` for all invocations.
-
-  * `CTest Script`_ variable: :variable:`CTEST_SVN_OPTIONS`
-  * :module:`CTest` module variable: ``CTEST_SVN_OPTIONS``
-
-``SVNUpdateOptions``
-  Command-line options to the ``SVNCommand`` when updating the source.
-
-  * `CTest Script`_ variable: :variable:`CTEST_SVN_UPDATE_OPTIONS`
-  * :module:`CTest` module variable: ``SVN_UPDATE_OPTIONS``
-
-``UpdateCommand``
-  Specify the version-control command-line tool to use without
-  detecting the VCS that manages the source tree.
-
-  * `CTest Script`_ variable: :variable:`CTEST_UPDATE_COMMAND`
-  * :module:`CTest` module variable: ``<VCS>COMMAND``
-    when ``UPDATE_TYPE`` is ``<vcs>``, else ``UPDATE_COMMAND``
-
-``UpdateOptions``
-  Command-line options to the ``UpdateCommand``.
-
-  * `CTest Script`_ variable: :variable:`CTEST_UPDATE_OPTIONS`
-  * :module:`CTest` module variable: ``<VCS>_UPDATE_OPTIONS``
-    when ``UPDATE_TYPE`` is ``<vcs>``, else ``UPDATE_OPTIONS``
-
-``UpdateType``
-  Specify the version-control system that manages the source
-  tree if it cannot be detected automatically.
-  The value may be ``bzr``, ``cvs``, ``git``, ``hg``,
-  ``p4``, or ``svn``.
-
-  * `CTest Script`_ variable: none, detected from source tree
-  * :module:`CTest` module variable: ``UPDATE_TYPE`` if set,
-    else ``CTEST_UPDATE_TYPE``
-
-.. _`UpdateVersionOnly`:
-
-``UpdateVersionOnly``
-  Specify that you want the version control update command to only
-  discover the current version that is checked out, and not to update
-  to a different version.
-
-  * `CTest Script`_ variable: :variable:`CTEST_UPDATE_VERSION_ONLY`
-
-.. _`UpdateVersionOverride`:
-
-``UpdateVersionOverride``
-  Specify the current version of your source tree.
-
-  When this variable is set to a non-empty string, CTest will report the value
-  you specified rather than using the update command to discover the current
-  version that is checked out. Use of this variable supersedes
-  ``UpdateVersionOnly``. Like ``UpdateVersionOnly``, using this variable tells
-  CTest not to update the source tree to a different version.
-
-  * `CTest Script`_ variable: :variable:`CTEST_UPDATE_VERSION_OVERRIDE`
-
-Additional configuration settings include:
-
-``NightlyStartTime``
-  In the ``Nightly`` dashboard mode, specify the "nightly start time".
-  With centralized version control systems (``cvs`` and ``svn``),
-  the ``Update`` step checks out the version of the software as of
-  this time so that multiple clients choose a common version to test.
-  This is not well-defined in distributed version-control systems so
-  the setting is ignored.
-
-  * `CTest Script`_ variable: :variable:`CTEST_NIGHTLY_START_TIME`
-  * :module:`CTest` module variable: ``NIGHTLY_START_TIME`` if set,
-    else ``CTEST_NIGHTLY_START_TIME``
-
-.. _`CTest Configure Step`:
-
-CTest Configure Step
---------------------
-
-In a `CTest Script`_, the :command:`ctest_configure` command runs this step.
-Arguments to the command may specify some of the step settings.
-
-Configuration settings include:
-
-``ConfigureCommand``
-  Command-line to launch the software configuration process.
-  It will be executed in the location specified by the
-  ``BuildDirectory`` setting.
-
-  * `CTest Script`_ variable: :variable:`CTEST_CONFIGURE_COMMAND`
-  * :module:`CTest` module variable: :variable:`CMAKE_COMMAND`
-    followed by :variable:`PROJECT_SOURCE_DIR`
-
-``LabelsForSubprojects``
-  Specify a semicolon-separated list of labels that will be treated as
-  subprojects. This mapping will be passed on to CDash when configure, test or
-  build results are submitted.
-
-  * `CTest Script`_ variable: :variable:`CTEST_LABELS_FOR_SUBPROJECTS`
-  * :module:`CTest` module variable: ``CTEST_LABELS_FOR_SUBPROJECTS``
-
-  See `Label and Subproject Summary`_.
-
-.. _`CTest Build Step`:
-
-CTest Build Step
-----------------
-
-In a `CTest Script`_, the :command:`ctest_build` command runs this step.
-Arguments to the command may specify some of the step settings.
-
-Configuration settings include:
-
-``DefaultCTestConfigurationType``
-  When the build system to be launched allows build-time selection
-  of the configuration (e.g. ``Debug``, ``Release``), this specifies
-  the default configuration to be built when no ``-C`` option is
-  given to the ``ctest`` command.  The value will be substituted into
-  the value of ``MakeCommand`` to replace the literal string
-  ``${CTEST_CONFIGURATION_TYPE}`` if it appears.
-
-  * `CTest Script`_ variable: :variable:`CTEST_CONFIGURATION_TYPE`
-  * :module:`CTest` module variable: ``DEFAULT_CTEST_CONFIGURATION_TYPE``,
-    initialized by the :envvar:`CMAKE_CONFIG_TYPE` environment variable
-
-``LabelsForSubprojects``
-  Specify a semicolon-separated list of labels that will be treated as
-  subprojects. This mapping will be passed on to CDash when configure, test or
-  build results are submitted.
-
-  * `CTest Script`_ variable: :variable:`CTEST_LABELS_FOR_SUBPROJECTS`
-  * :module:`CTest` module variable: ``CTEST_LABELS_FOR_SUBPROJECTS``
-
-  See `Label and Subproject Summary`_.
-
-``MakeCommand``
-  Command-line to launch the software build process.
-  It will be executed in the location specified by the
-  ``BuildDirectory`` setting.
-
-  * `CTest Script`_ variable: :variable:`CTEST_BUILD_COMMAND`
-  * :module:`CTest` module variable: ``MAKECOMMAND``,
-    initialized by the :command:`build_command` command
-
-``UseLaunchers``
-  For build trees generated by CMake using one of the
-  :ref:`Makefile Generators` or the :generator:`Ninja`
-  generator, specify whether the
-  ``CTEST_USE_LAUNCHERS`` feature is enabled by the
-  :module:`CTestUseLaunchers` module (also included by the
-  :module:`CTest` module).  When enabled, the generated build
-  system wraps each invocation of the compiler, linker, or
-  custom command line with a "launcher" that communicates
-  with CTest via environment variables and files to report
-  granular build warning and error information.  Otherwise,
-  CTest must "scrape" the build output log for diagnostics.
-
-  * `CTest Script`_ variable: :variable:`CTEST_USE_LAUNCHERS`
-  * :module:`CTest` module variable: ``CTEST_USE_LAUNCHERS``
-
-.. _`CTest Test Step`:
-
-CTest Test Step
----------------
-
-In a `CTest Script`_, the :command:`ctest_test` command runs this step.
-Arguments to the command may specify some of the step settings.
-
-Configuration settings include:
-
-``ResourceSpecFile``
-  Specify a
-  :ref:`resource specification file <ctest-resource-specification-file>`.
-
-  * `CTest Script`_ variable: :variable:`CTEST_RESOURCE_SPEC_FILE`
-  * :module:`CTest` module variable: ``CTEST_RESOURCE_SPEC_FILE``
-
-  See :ref:`ctest-resource-allocation` for more information.
-
-``LabelsForSubprojects``
-  Specify a semicolon-separated list of labels that will be treated as
-  subprojects. This mapping will be passed on to CDash when configure, test or
-  build results are submitted.
-
-  * `CTest Script`_ variable: :variable:`CTEST_LABELS_FOR_SUBPROJECTS`
-  * :module:`CTest` module variable: ``CTEST_LABELS_FOR_SUBPROJECTS``
-
-  See `Label and Subproject Summary`_.
-
-``TestLoad``
-  While running tests in parallel (e.g. with ``-j``), try not to start
-  tests when they may cause the CPU load to pass above a given threshold.
-
-  * `CTest Script`_ variable: :variable:`CTEST_TEST_LOAD`
-  * :module:`CTest` module variable: ``CTEST_TEST_LOAD``
-
-``TimeOut``
-  The default timeout for each test if not specified by the
-  :prop_test:`TIMEOUT` test property.
-
-  * `CTest Script`_ variable: :variable:`CTEST_TEST_TIMEOUT`
-  * :module:`CTest` module variable: ``DART_TESTING_TIMEOUT``
-
-.. _`CTest Coverage Step`:
-
-CTest Coverage Step
--------------------
-
-In a `CTest Script`_, the :command:`ctest_coverage` command runs this step.
-Arguments to the command may specify some of the step settings.
-
-Configuration settings include:
-
-``CoverageCommand``
-  Command-line tool to perform software coverage analysis.
-  It will be executed in the location specified by the
-  ``BuildDirectory`` setting.
-
-  * `CTest Script`_ variable: :variable:`CTEST_COVERAGE_COMMAND`
-  * :module:`CTest` module variable: ``COVERAGE_COMMAND``
-
-``CoverageExtraFlags``
-  Specify command-line options to the ``CoverageCommand`` tool.
-
-  * `CTest Script`_ variable: :variable:`CTEST_COVERAGE_EXTRA_FLAGS`
-  * :module:`CTest` module variable: ``COVERAGE_EXTRA_FLAGS``
-
-  These options are the first arguments passed to ``CoverageCommand``.
-
-.. _`CTest MemCheck Step`:
-
-CTest MemCheck Step
--------------------
-
-In a `CTest Script`_, the :command:`ctest_memcheck` command runs this step.
-Arguments to the command may specify some of the step settings.
-
-Configuration settings include:
-
-``MemoryCheckCommand``
-  Command-line tool to perform dynamic analysis.  Test command lines
-  will be launched through this tool.
-
-  * `CTest Script`_ variable: :variable:`CTEST_MEMORYCHECK_COMMAND`
-  * :module:`CTest` module variable: ``MEMORYCHECK_COMMAND``
-
-``MemoryCheckCommandOptions``
-  Specify command-line options to the ``MemoryCheckCommand`` tool.
-  They will be placed prior to the test command line.
-
-  * `CTest Script`_ variable: :variable:`CTEST_MEMORYCHECK_COMMAND_OPTIONS`
-  * :module:`CTest` module variable: ``MEMORYCHECK_COMMAND_OPTIONS``
-
-``MemoryCheckType``
-  Specify the type of memory checking to perform.
-
-  * `CTest Script`_ variable: :variable:`CTEST_MEMORYCHECK_TYPE`
-  * :module:`CTest` module variable: ``MEMORYCHECK_TYPE``
-
-``MemoryCheckSanitizerOptions``
-  Specify options to sanitizers when running with a sanitize-enabled build.
-
-  * `CTest Script`_ variable: :variable:`CTEST_MEMORYCHECK_SANITIZER_OPTIONS`
-  * :module:`CTest` module variable: ``MEMORYCHECK_SANITIZER_OPTIONS``
-
-``MemoryCheckSuppressionFile``
-  Specify a file containing suppression rules for the
-  ``MemoryCheckCommand`` tool.  It will be passed with options
-  appropriate to the tool.
-
-  * `CTest Script`_ variable: :variable:`CTEST_MEMORYCHECK_SUPPRESSIONS_FILE`
-  * :module:`CTest` module variable: ``MEMORYCHECK_SUPPRESSIONS_FILE``
-
-Additional configuration settings include:
-
-``BoundsCheckerCommand``
-  Specify a ``MemoryCheckCommand`` that is known to be command-line
-  compatible with Bounds Checker.
-
-  * `CTest Script`_ variable: none
-  * :module:`CTest` module variable: none
-
-``PurifyCommand``
-  Specify a ``MemoryCheckCommand`` that is known to be command-line
-  compatible with Purify.
-
-  * `CTest Script`_ variable: none
-  * :module:`CTest` module variable: ``PURIFYCOMMAND``
-
-``ValgrindCommand``
-  Specify a ``MemoryCheckCommand`` that is known to be command-line
-  compatible with Valgrind.
-
-  * `CTest Script`_ variable: none
-  * :module:`CTest` module variable: ``VALGRIND_COMMAND``
-
-``ValgrindCommandOptions``
-  Specify command-line options to the ``ValgrindCommand`` tool.
-  They will be placed prior to the test command line.
-
-  * `CTest Script`_ variable: none
-  * :module:`CTest` module variable: ``VALGRIND_COMMAND_OPTIONS``
-
-``DrMemoryCommand``
-  Specify a ``MemoryCheckCommand`` that is known to be a command-line
-  compatible with DrMemory.
-
-  * `CTest Script`_ variable: none
-  * :module:`CTest` module variable: ``DRMEMORY_COMMAND``
-
-``DrMemoryCommandOptions``
-  Specify command-line options to the ``DrMemoryCommand`` tool.
-  They will be placed prior to the test command line.
-
-  * `CTest Script`_ variable: none
-  * :module:`CTest` module variable: ``DRMEMORY_COMMAND_OPTIONS``
-
-.. _`CTest Submit Step`:
-
-CTest Submit Step
------------------
-
-In a `CTest Script`_, the :command:`ctest_submit` command runs this step.
-Arguments to the command may specify some of the step settings.
-
-Configuration settings include:
-
-``BuildName``
-  Describe the dashboard client platform with a short string.
-  (Operating system, compiler, etc.)
-
-  * `CTest Script`_ variable: :variable:`CTEST_BUILD_NAME`
-  * :module:`CTest` module variable: ``BUILDNAME``
-
-``CDashVersion``
-  Legacy option.  Not used.
-
-  * `CTest Script`_ variable: none, detected from server
-  * :module:`CTest` module variable: ``CTEST_CDASH_VERSION``
-
-``CTestSubmitRetryCount``
-  Specify a number of attempts to retry submission on network failure.
-
-  * `CTest Script`_ variable: none,
-    use the :command:`ctest_submit` ``RETRY_COUNT`` option.
-  * :module:`CTest` module variable: ``CTEST_SUBMIT_RETRY_COUNT``
-
-``CTestSubmitRetryDelay``
-  Specify a delay before retrying submission on network failure.
-
-  * `CTest Script`_ variable: none,
-    use the :command:`ctest_submit` ``RETRY_DELAY`` option.
-  * :module:`CTest` module variable: ``CTEST_SUBMIT_RETRY_DELAY``
-
-``CurlOptions``
-  Specify a semicolon-separated list of options to control the
-  Curl library that CTest uses internally to connect to the
-  server.  Possible options are ``CURLOPT_SSL_VERIFYPEER_OFF``
-  and ``CURLOPT_SSL_VERIFYHOST_OFF``.
-
-  * `CTest Script`_ variable: :variable:`CTEST_CURL_OPTIONS`
-  * :module:`CTest` module variable: ``CTEST_CURL_OPTIONS``
-
-``DropLocation``
-  Legacy option.  When ``SubmitURL`` is not set, it is constructed from
-  ``DropMethod``, ``DropSiteUser``, ``DropSitePassword``, ``DropSite``, and
-  ``DropLocation``.
-
-  * `CTest Script`_ variable: :variable:`CTEST_DROP_LOCATION`
-  * :module:`CTest` module variable: ``DROP_LOCATION`` if set,
-    else ``CTEST_DROP_LOCATION``
-
-``DropMethod``
-  Legacy option.  When ``SubmitURL`` is not set, it is constructed from
-  ``DropMethod``, ``DropSiteUser``, ``DropSitePassword``, ``DropSite``, and
-  ``DropLocation``.
-
-  * `CTest Script`_ variable: :variable:`CTEST_DROP_METHOD`
-  * :module:`CTest` module variable: ``DROP_METHOD`` if set,
-    else ``CTEST_DROP_METHOD``
-
-``DropSite``
-  Legacy option.  When ``SubmitURL`` is not set, it is constructed from
-  ``DropMethod``, ``DropSiteUser``, ``DropSitePassword``, ``DropSite``, and
-  ``DropLocation``.
-
-  * `CTest Script`_ variable: :variable:`CTEST_DROP_SITE`
-  * :module:`CTest` module variable: ``DROP_SITE`` if set,
-    else ``CTEST_DROP_SITE``
-
-``DropSitePassword``
-  Legacy option.  When ``SubmitURL`` is not set, it is constructed from
-  ``DropMethod``, ``DropSiteUser``, ``DropSitePassword``, ``DropSite``, and
-  ``DropLocation``.
-
-  * `CTest Script`_ variable: :variable:`CTEST_DROP_SITE_PASSWORD`
-  * :module:`CTest` module variable: ``DROP_SITE_PASSWORD`` if set,
-    else ``CTEST_DROP_SITE_PASWORD``
-
-``DropSiteUser``
-  Legacy option.  When ``SubmitURL`` is not set, it is constructed from
-  ``DropMethod``, ``DropSiteUser``, ``DropSitePassword``, ``DropSite``, and
-  ``DropLocation``.
-
-  * `CTest Script`_ variable: :variable:`CTEST_DROP_SITE_USER`
-  * :module:`CTest` module variable: ``DROP_SITE_USER`` if set,
-    else ``CTEST_DROP_SITE_USER``
-
-``IsCDash``
-  Legacy option.  Not used.
-
-  * `CTest Script`_ variable: :variable:`CTEST_DROP_SITE_CDASH`
-  * :module:`CTest` module variable: ``CTEST_DROP_SITE_CDASH``
-
-``ScpCommand``
-  Legacy option.  Not used.
-
-  * `CTest Script`_ variable: :variable:`CTEST_SCP_COMMAND`
-  * :module:`CTest` module variable: ``SCPCOMMAND``
-
-``Site``
-  Describe the dashboard client host site with a short string.
-  (Hostname, domain, etc.)
-
-  * `CTest Script`_ variable: :variable:`CTEST_SITE`
-  * :module:`CTest` module variable: ``SITE``,
-    initialized by the :command:`site_name` command
-
-``SubmitURL``
-  The ``http`` or ``https`` URL of the dashboard server to send the submission
-  to.
-
-  * `CTest Script`_ variable: :variable:`CTEST_SUBMIT_URL`
-  * :module:`CTest` module variable: ``SUBMIT_URL`` if set,
-    else ``CTEST_SUBMIT_URL``
-
-``TriggerSite``
-  Legacy option.  Not used.
-
-  * `CTest Script`_ variable: :variable:`CTEST_TRIGGER_SITE`
-  * :module:`CTest` module variable: ``TRIGGER_SITE`` if set,
-    else ``CTEST_TRIGGER_SITE``
-
-.. _`Show as JSON Object Model`:
-
-Show as JSON Object Model
-=========================
-
-When the ``--show-only=json-v1`` command line option is given, the test
-information is output in JSON format.  Version 1.0 of the JSON object
-model is defined as follows:
-
-``kind``
-  The string "ctestInfo".
-
-``version``
-  A JSON object specifying the version components.  Its members are
-
-  ``major``
-    A non-negative integer specifying the major version component.
-  ``minor``
-    A non-negative integer specifying the minor version component.
-
-``backtraceGraph``
-    JSON object representing backtrace information with the
-    following members:
-
-    ``commands``
-      List of command names.
-    ``files``
-      List of file names.
-    ``nodes``
-      List of node JSON objects with members:
-
-      ``command``
-        Index into the ``commands`` member of the ``backtraceGraph``.
-      ``file``
-        Index into the ``files`` member of the ``backtraceGraph``.
-      ``line``
-        Line number in the file where the backtrace was added.
-      ``parent``
-        Index into the ``nodes`` member of the ``backtraceGraph``
-        representing the parent in the graph.
-
-``tests``
-  A JSON array listing information about each test.  Each entry
-  is a JSON object with members:
-
-  ``name``
-    Test name.
-  ``config``
-    Configuration that the test can run on.
-    Empty string means any config.
-  ``command``
-    List where the first element is the test command and the
-    remaining elements are the command arguments.
-  ``backtrace``
-    Index into the ``nodes`` member of the ``backtraceGraph``.
-  ``properties``
-    Test properties.
-    Can contain keys for each of the supported test properties.
-
-.. _`ctest-resource-allocation`:
-
-Resource Allocation
-===================
-
-CTest provides a mechanism for tests to specify the resources that they need
-in a fine-grained way, and for users to specify the resources availiable on
-the running machine. This allows CTest to internally keep track of which
-resources are in use and which are free, scheduling tests in a way that
-prevents them from trying to claim resources that are not available.
-
-When the resource allocation feature is used, CTest will not oversubscribe
-resources. For example, if a resource has 8 slots, CTest will not run tests
-that collectively use more than 8 slots at a time. This has the effect of
-limiting how many tests can run at any given time, even if a high ``-j``
-argument is used, if those tests all use some slots from the same resource.
-In addition, it means that a single test that uses more of a resource than is
-available on a machine will not run at all (and will be reported as
-``Not Run``).
-
-A common use case for this feature is for tests that require the use of a GPU.
-Multiple tests can simultaneously allocate memory from a GPU, but if too many
-tests try to do this at once, some of them will fail to allocate, resulting in
-a failed test, even though the test would have succeeded if it had the memory
-it needed. By using the resource allocation feature, each test can specify how
-much memory it requires from a GPU, allowing CTest to schedule tests in a way
-that running several of these tests at once does not exhaust the GPU's memory
-pool.
-
-Please note that CTest has no concept of what a GPU is or how much memory it
-has, nor does it have any way of communicating with a GPU to retrieve this
-information or perform any memory management. CTest simply keeps track of a
-list of abstract resource types, each of which has a certain number of slots
-available for tests to use. Each test specifies the number of slots that it
-requires from a certain resource, and CTest then schedules them in a way that
-prevents the total number of slots in use from exceeding the listed capacity.
-When a test is executed, and slots from a resource are allocated to that test,
-tests may assume that they have exclusive use of those slots for the duration
-of the test's process.
-
-The CTest resource allocation feature consists of two inputs:
-
-* The :ref:`resource specification file <ctest-resource-specification-file>`,
-  described below, which describes the resources available on the system.
-* The :prop_test:`RESOURCE_GROUPS` property of tests, which describes the
-  resources required by the test.
-
-When CTest runs a test, the resources allocated to that test are passed in the
-form of a set of
-:ref:`environment variables <ctest-resource-environment-variables>` as
-described below. Using this information to decide which resource to connect to
-is left to the test writer.
-
-The ``RESOURCE_GROUPS`` property tells CTest what resources a test expects
-to use grouped in a way meaningful to the test.  The test itself must read
-the :ref:`environment variables <ctest-resource-environment-variables>` to
-determine which resources have been allocated to each group.  For example,
-each group may correspond to a process the test will spawn when executed.
-
-Note that even if a test specifies a ``RESOURCE_GROUPS`` property, it is still
-possible for that to test to run without any resource allocation (and without
-the corresponding
-:ref:`environment variables <ctest-resource-environment-variables>`)
-if the user does not pass a resource specification file. Passing this file,
-either through the ``--resource-spec-file`` command-line argument or the
-``RESOURCE_SPEC_FILE`` argument to :command:`ctest_test`, is what activates the
-resource allocation feature. Tests should check the
-``CTEST_RESOURCE_GROUP_COUNT`` environment variable to find out whether or not
-resource allocation is activated. This variable will always (and only) be
-defined if resource allocation is activated. If resource allocation is not
-activated, then the ``CTEST_RESOURCE_GROUP_COUNT`` variable will not exist,
-even if it exists for the parent ``ctest`` process. If a test absolutely must
-have resource allocation, then it can return a failing exit code or use the
-:prop_test:`SKIP_RETURN_CODE` or :prop_test:`SKIP_REGULAR_EXPRESSION`
-properties to indicate a skipped test.
-
-.. _`ctest-resource-specification-file`:
-
-Resource Specification File
----------------------------
-
-The resource specification file is a JSON file which is passed to CTest, either
-on the :manual:`ctest(1)` command line as ``--resource-spec-file``, or as the
-``RESOURCE_SPEC_FILE`` argument of :command:`ctest_test`. If a dashboard script
-is used and ``RESOURCE_SPEC_FILE`` is not specified, the value of
-:variable:`CTEST_RESOURCE_SPEC_FILE` in the dashboard script is used instead.
-If ``--resource-spec-file``, ``RESOURCE_SPEC_FILE``, and
-:variable:`CTEST_RESOURCE_SPEC_FILE` in the dashboard script are not specified,
-the value of :variable:`CTEST_RESOURCE_SPEC_FILE` in the CMake build is used
-instead. If none of these are specified, no resource spec file is used.
-
-The resource specification file must be a JSON object. All examples in this
-document assume the following resource specification file:
-
-.. code-block:: json
-
-  {
-    "version": {
-      "major": 1,
-      "minor": 0
-    },
-    "local": [
-      {
-        "gpus": [
-          {
-            "id": "0",
-            "slots": 2
-          },
-          {
-            "id": "1",
-            "slots": 4
-          },
-          {
-            "id": "2",
-            "slots": 2
-          },
-          {
-            "id": "3"
-          }
-        ],
-        "crypto_chips": [
-          {
-            "id": "card0",
-            "slots": 4
-          }
-        ]
-      }
-    ]
-  }
-
-The members are:
-
-``version``
-  An object containing a ``major`` integer field and a ``minor`` integer field.
-  Currently, the only supported version is major ``1``, minor ``0``. Any other
-  value is an error.
-
-``local``
-  A JSON array of resource sets present on the system.  Currently, this array
-  is restricted to being of size 1.
-
-  Each array element is a JSON object with members whose names are equal to the
-  desired resource types, such as ``gpus``. These names must start with a
-  lowercase letter or an underscore, and subsequent characters can be a
-  lowercase letter, a digit, or an underscore. Uppercase letters are not
-  allowed, because certain platforms have case-insensitive environment
-  variables. See the `Environment Variables`_ section below for
-  more information. It is recommended that the resource type name be the plural
-  of a noun, such as ``gpus`` or ``crypto_chips`` (and not ``gpu`` or
-  ``crypto_chip``.)
-
-  Please note that the names ``gpus`` and ``crypto_chips`` are just examples,
-  and CTest does not interpret them in any way. You are free to make up any
-  resource type you want to meet your own requirements.
-
-  The value for each resource type is a JSON array consisting of JSON objects,
-  each of which describe a specific instance of the specified resource. These
-  objects have the following members:
-
-  ``id``
-    A string consisting of an identifier for the resource. Each character in
-    the identifier can be a lowercase letter, a digit, or an underscore.
-    Uppercase letters are not allowed.
-
-    Identifiers must be unique within a resource type. However, they do not
-    have to be unique across resource types. For example, it is valid to have a
-    ``gpus`` resource named ``0`` and a ``crypto_chips`` resource named ``0``,
-    but not two ``gpus`` resources both named ``0``.
-
-    Please note that the IDs ``0``, ``1``, ``2``, ``3``, and ``card0`` are just
-    examples, and CTest does not interpret them in any way. You are free to
-    make up any IDs you want to meet your own requirements.
-
-  ``slots``
-    An optional unsigned number specifying the number of slots available on the
-    resource. For example, this could be megabytes of RAM on a GPU, or
-    cryptography units available on a cryptography chip. If ``slots`` is not
-    specified, a default value of ``1`` is assumed.
-
-In the example file above, there are four GPUs with ID's 0 through 3. GPU 0 has
-2 slots, GPU 1 has 4, GPU 2 has 2, and GPU 3 has a default of 1 slot. There is
-also one cryptography chip with 4 slots.
-
-``RESOURCE_GROUPS`` Property
-----------------------------
-
-See :prop_test:`RESOURCE_GROUPS` for a description of this property.
-
-.. _`ctest-resource-environment-variables`:
-
-Environment Variables
----------------------
-
-Once CTest has decided which resources to allocate to a test, it passes this
-information to the test executable as a series of environment variables. For
-each example below, we will assume that the test in question has a
-:prop_test:`RESOURCE_GROUPS` property of
-``2,gpus:2;gpus:4,gpus:1,crypto_chips:2``.
-
-The following variables are passed to the test process:
-
-.. envvar:: CTEST_RESOURCE_GROUP_COUNT
-
-  The total number of groups specified by the :prop_test:`RESOURCE_GROUPS`
-  property. For example:
-
-  * ``CTEST_RESOURCE_GROUP_COUNT=3``
-
-  This variable will only be defined if :manual:`ctest(1)` has been given a
-  ``--resource-spec-file``, or if :command:`ctest_test` has been given a
-  ``RESOURCE_SPEC_FILE``. If no resource specification file has been given,
-  this variable will not be defined.
-
-.. envvar:: CTEST_RESOURCE_GROUP_<num>
-
-  The list of resource types allocated to each group, with each item
-  separated by a comma. ``<num>`` is a number from zero to
-  ``CTEST_RESOURCE_GROUP_COUNT`` minus one. ``CTEST_RESOURCE_GROUP_<num>``
-  is defined for each ``<num>`` in this range. For example:
-
-  * ``CTEST_RESOURCE_GROUP_0=gpus``
-  * ``CTEST_RESOURCE_GROUP_1=gpus``
-  * ``CTEST_RESOURCE_GROUP_2=crypto_chips,gpus``
-
-.. envvar:: CTEST_RESOURCE_GROUP_<num>_<resource-type>
-
-  The list of resource IDs and number of slots from each ID allocated to each
-  group for a given resource type. This variable consists of a series of
-  pairs, each pair separated by a semicolon, and with the two items in the pair
-  separated by a comma. The first item in each pair is ``id:`` followed by the
-  ID of a resource of type ``<resource-type>``, and the second item is
-  ``slots:`` followed by the number of slots from that resource allocated to
-  the given group. For example:
-
-  * ``CTEST_RESOURCE_GROUP_0_GPUS=id:0,slots:2``
-  * ``CTEST_RESOURCE_GROUP_1_GPUS=id:2,slots:2``
-  * ``CTEST_RESOURCE_GROUP_2_GPUS=id:1,slots:4;id:3,slots:1``
-  * ``CTEST_RESOURCE_GROUP_2_CRYPTO_CHIPS=id:card0,slots:2``
-
-  In this example, group 0 gets 2 slots from GPU ``0``, group 1 gets 2 slots
-  from GPU ``2``, and group 2 gets 4 slots from GPU ``1``, 1 slot from GPU
-  ``3``, and 2 slots from cryptography chip ``card0``.
-
-  ``<num>`` is a number from zero to ``CTEST_RESOURCE_GROUP_COUNT`` minus one.
-  ``<resource-type>`` is the name of a resource type, converted to uppercase.
-  ``CTEST_RESOURCE_GROUP_<num>_<resource-type>`` is defined for the product
-  of each ``<num>`` in the range listed above and each resource type listed in
-  ``CTEST_RESOURCE_GROUP_<num>``.
-
-  Because some platforms have case-insensitive names for environment variables,
-  the names of resource types may not clash in a case-insensitive environment.
-  Because of this, for the sake of simplicity, all resource types must be
-  listed in all lowercase in the
-  :ref:`resource specification file <ctest-resource-specification-file>` and
-  in the :prop_test:`RESOURCE_GROUPS` property, and they are converted to all
-  uppercase in the ``CTEST_RESOURCE_GROUP_<num>_<resource-type>`` environment
-  variable.
-
-See Also
-========
-
-.. include:: LINKS.txt
-
-.. _`CDash`: http://cdash.org/
diff --git a/share/cmake-3.18/Help/module/CPackArchive.rst b/share/cmake-3.18/Help/module/CPackArchive.rst
deleted file mode 100644
index 8616098..0000000
--- a/share/cmake-3.18/Help/module/CPackArchive.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-CPackArchive
-------------
-
-The documentation for the CPack Archive generator has moved here: :cpack_gen:`CPack Archive Generator`
diff --git a/share/cmake-3.18/Help/module/CPackFreeBSD.rst b/share/cmake-3.18/Help/module/CPackFreeBSD.rst
deleted file mode 100644
index 69701b8..0000000
--- a/share/cmake-3.18/Help/module/CPackFreeBSD.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-CPackFreeBSD
-------------
-
-The documentation for the CPack FreeBSD generator has moved here: :cpack_gen:`CPack FreeBSD Generator`
diff --git a/share/cmake-3.18/Help/module/CPackNuGet.rst b/share/cmake-3.18/Help/module/CPackNuGet.rst
deleted file mode 100644
index 4f39b3a..0000000
--- a/share/cmake-3.18/Help/module/CPackNuGet.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-CPackNuGet
-----------
-
-The documentation for the CPack NuGet generator has moved here: :cpack_gen:`CPack NuGet Generator`
diff --git a/share/cmake-3.18/Help/module/CPackProductBuild.rst b/share/cmake-3.18/Help/module/CPackProductBuild.rst
deleted file mode 100644
index 8cd9198..0000000
--- a/share/cmake-3.18/Help/module/CPackProductBuild.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-CPackProductBuild
------------------
-
-The documentation for the CPack productbuild generator has moved here: :cpack_gen:`CPack productbuild Generator`
diff --git a/share/cmake-3.18/Help/module/UseJavaClassFilelist.rst b/share/cmake-3.18/Help/module/UseJavaClassFilelist.rst
deleted file mode 100644
index b9cd476..0000000
--- a/share/cmake-3.18/Help/module/UseJavaClassFilelist.rst
+++ /dev/null
@@ -1 +0,0 @@
-.. cmake-module:: ../../Modules/UseJavaClassFilelist.cmake
diff --git a/share/cmake-3.18/Help/module/UseJavaSymlinks.rst b/share/cmake-3.18/Help/module/UseJavaSymlinks.rst
deleted file mode 100644
index 2fab8e8..0000000
--- a/share/cmake-3.18/Help/module/UseJavaSymlinks.rst
+++ /dev/null
@@ -1 +0,0 @@
-.. cmake-module:: ../../Modules/UseJavaSymlinks.cmake
diff --git a/share/cmake-3.18/Help/policy/CMP0026.rst b/share/cmake-3.18/Help/policy/CMP0026.rst
deleted file mode 100644
index 3401d4a..0000000
--- a/share/cmake-3.18/Help/policy/CMP0026.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-CMP0026
--------
-
-Disallow use of the LOCATION property for build targets.
-
-CMake 2.8.12 and lower allowed reading the :prop_tgt:`LOCATION` target
-property (and configuration-specific variants) to
-determine the eventual location of build targets.  This relies on the
-assumption that all necessary information is available at
-configure-time to determine the final location and filename of the
-target.  However, this property is not fully determined until later at
-generate-time.  At generate time, the ``$<TARGET_FILE>`` generator
-expression can be used to determine the eventual :prop_tgt:`LOCATION` of a target
-output.
-
-Code which reads the :prop_tgt:`LOCATION` target property can be ported to
-use the ``$<TARGET_FILE>`` generator expression together with the
-:command:`file(GENERATE)` subcommand to generate a file containing
-the target location.
-
-The ``OLD`` behavior for this policy is to allow reading the :prop_tgt:`LOCATION`
-properties from build-targets.  The ``NEW`` behavior for this policy is to
-not to allow reading the :prop_tgt:`LOCATION` properties from build-targets.
-
-This policy was introduced in CMake version 3.0.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.  Use
-the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0051.rst b/share/cmake-3.18/Help/policy/CMP0051.rst
deleted file mode 100644
index 6b679e5..0000000
--- a/share/cmake-3.18/Help/policy/CMP0051.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-CMP0051
--------
-
-List TARGET_OBJECTS in SOURCES target property.
-
-CMake 3.0 and lower did not include the ``TARGET_OBJECTS``
-:manual:`generator expression <cmake-generator-expressions(7)>` when
-returning the :prop_tgt:`SOURCES` target property.
-
-Configure-time CMake code is not able to handle generator expressions.  If
-using the :prop_tgt:`SOURCES` target property at configure time, it may be
-necessary to first remove generator expressions using the
-:command:`string(GENEX_STRIP)` command.  Generate-time CMake code such as
-:command:`file(GENERATE)` can handle the content without stripping.
-
-The ``OLD`` behavior for this policy is to omit ``TARGET_OBJECTS``
-expressions from the :prop_tgt:`SOURCES` target property.  The ``NEW``
-behavior for this policy is to include ``TARGET_OBJECTS`` expressions
-in the output.
-
-This policy was introduced in CMake version 3.1.
-CMake version |release| warns when the policy is not set and uses
-``OLD`` behavior.  Use the :command:`cmake_policy` command to set it
-to ``OLD`` or ``NEW`` explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0052.rst b/share/cmake-3.18/Help/policy/CMP0052.rst
deleted file mode 100644
index ee2e6e8..0000000
--- a/share/cmake-3.18/Help/policy/CMP0052.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-CMP0052
--------
-
-Reject source and build dirs in installed
-:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES`.
-
-CMake 3.0 and lower allowed subdirectories of the source directory or build
-directory to be in the :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of
-installed and exported targets, if the directory was also a subdirectory of
-the installation prefix.  This makes the installation depend on the
-existence of the source dir or binary dir, and the installation will be
-broken if either are removed after installation.
-
-See :ref:`Include Directories and Usage Requirements` for more on
-specifying include directories for targets.
-
-The ``OLD`` behavior for this policy is to export the content of the
-:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` with the source or binary
-directory.  The ``NEW`` behavior for this
-policy is to issue an error if such a directory is used.
-
-This policy was introduced in CMake version 3.1.
-CMake version |release| warns when the policy is not set and uses
-``OLD`` behavior.  Use the :command:`cmake_policy` command to set it
-to ``OLD`` or ``NEW`` explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0053.rst b/share/cmake-3.18/Help/policy/CMP0053.rst
deleted file mode 100644
index 032b3e5..0000000
--- a/share/cmake-3.18/Help/policy/CMP0053.rst
+++ /dev/null
@@ -1,50 +0,0 @@
-CMP0053
--------
-
-Simplify variable reference and escape sequence evaluation.
-
-CMake 3.1 introduced a much faster implementation of evaluation of the
-:ref:`Variable References` and :ref:`Escape Sequences` documented in the
-:manual:`cmake-language(7)` manual.  While the behavior is identical
-to the legacy implementation in most cases, some corner cases were
-cleaned up to simplify the behavior.  Specifically:
-
-* Expansion of ``@VAR@`` reference syntax defined by the
-  :command:`configure_file` and :command:`string(CONFIGURE)`
-  commands is no longer performed in other contexts.
-
-* Literal ``${VAR}`` reference syntax may contain only
-  alphanumeric characters (``A-Z``, ``a-z``, ``0-9``) and
-  the characters ``_``, ``.``, ``/``, ``-``, and ``+``.
-  Note that ``$`` is technically allowed in the ``NEW`` behavior, but is
-  invalid for ``OLD`` behavior.  This is due to an oversight during the
-  implementation of :policy:`CMP0053` and its use as a literal variable
-  reference is discouraged for this reason.
-  Variables with other characters in their name may still
-  be referenced indirectly, e.g.
-
-  .. code-block:: cmake
-
-    set(varname "otherwise & disallowed $ characters")
-    message("${${varname}}")
-
-* The setting of policy :policy:`CMP0010` is not considered,
-  so improper variable reference syntax is always an error.
-
-* More characters are allowed to be escaped in variable names.
-  Previously, only ``()#" \@^`` were valid characters to
-  escape. Now any non-alphanumeric, non-semicolon, non-NUL
-  character may be escaped following the ``escape_identity``
-  production in the :ref:`Escape Sequences` section of the
-  :manual:`cmake-language(7)` manual.
-
-The ``OLD`` behavior for this policy is to honor the legacy behavior for
-variable references and escape sequences.  The ``NEW`` behavior is to
-use the simpler variable expansion and escape sequence evaluation rules.
-
-This policy was introduced in CMake version 3.1.
-CMake version |release| warns when the policy is not set and uses
-``OLD`` behavior.  Use the :command:`cmake_policy` command to set
-it to ``OLD`` or ``NEW`` explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0054.rst b/share/cmake-3.18/Help/policy/CMP0054.rst
deleted file mode 100644
index 1e000a6..0000000
--- a/share/cmake-3.18/Help/policy/CMP0054.rst
+++ /dev/null
@@ -1,52 +0,0 @@
-CMP0054
--------
-
-Only interpret :command:`if` arguments as variables or keywords when unquoted.
-
-CMake 3.1 and above no longer implicitly dereference variables or
-interpret keywords in an :command:`if` command argument when
-it is a :ref:`Quoted Argument` or a :ref:`Bracket Argument`.
-
-The ``OLD`` behavior for this policy is to dereference variables and
-interpret keywords even if they are quoted or bracketed.
-The ``NEW`` behavior is to not dereference variables or interpret keywords
-that have been quoted or bracketed.
-
-Given the following partial example:
-
-::
-
-  set(A E)
-  set(E "")
-
-  if("${A}" STREQUAL "")
-    message("Result is TRUE before CMake 3.1 or when CMP0054 is OLD")
-  else()
-    message("Result is FALSE in CMake 3.1 and above if CMP0054 is NEW")
-  endif()
-
-After explicit expansion of variables this gives:
-
-::
-
-  if("E" STREQUAL "")
-
-With the policy set to ``OLD`` implicit expansion reduces this semantically to:
-
-::
-
-  if("" STREQUAL "")
-
-With the policy set to ``NEW`` the quoted arguments will not be
-further dereferenced:
-
-::
-
-  if("E" STREQUAL "")
-
-This policy was introduced in CMake version 3.1.
-CMake version |release| warns when the policy is not set and uses
-``OLD`` behavior.  Use the :command:`cmake_policy` command to set
-it to ``OLD`` or ``NEW`` explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0055.rst b/share/cmake-3.18/Help/policy/CMP0055.rst
deleted file mode 100644
index bc5ad08..0000000
--- a/share/cmake-3.18/Help/policy/CMP0055.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-CMP0055
--------
-
-Strict checking for the :command:`break` command.
-
-CMake 3.1 and lower allowed calls to the :command:`break` command
-outside of a loop context and also ignored any given arguments.
-This was undefined behavior.
-
-The ``OLD`` behavior for this policy is to allow :command:`break` to be placed
-outside of loop contexts and ignores any arguments.  The ``NEW`` behavior for this
-policy is to issue an error if a misplaced break or any arguments are found.
-
-This policy was introduced in CMake version 3.2.
-CMake version |release| warns when the policy is not set and uses
-``OLD`` behavior.  Use the :command:`cmake_policy` command to set it to ``OLD`` or
-``NEW`` explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0056.rst b/share/cmake-3.18/Help/policy/CMP0056.rst
deleted file mode 100644
index 834da84..0000000
--- a/share/cmake-3.18/Help/policy/CMP0056.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-CMP0056
--------
-
-Honor link flags in :command:`try_compile` source-file signature.
-
-The :command:`try_compile` command source-file signature generates a
-``CMakeLists.txt`` file to build the source file into an executable.
-In order to compile the source the same way as it might be compiled
-by the calling project, the generated project sets the value of the
-:variable:`CMAKE_<LANG>_FLAGS` variable to that in the calling project.
-The value of the :variable:`CMAKE_EXE_LINKER_FLAGS` variable may be
-needed in some cases too, but CMake 3.1 and lower did not set it in
-the generated project.  CMake 3.2 and above prefer to set it so that
-linker flags are honored as well as compiler flags.  This policy
-provides compatibility with the pre-3.2 behavior.
-
-The ``OLD`` behavior for this policy is to not set the value of the
-:variable:`CMAKE_EXE_LINKER_FLAGS` variable in the generated test
-project.  The ``NEW`` behavior for this policy is to set the value of
-the :variable:`CMAKE_EXE_LINKER_FLAGS` variable in the test project
-to the same as it is in the calling project.
-
-If the project code does not set the policy explicitly, users may
-set it on the command line by defining the
-:variable:`CMAKE_POLICY_DEFAULT_CMP0056 <CMAKE_POLICY_DEFAULT_CMP<NNNN>>`
-variable in the cache.
-
-This policy was introduced in CMake version 3.2.  Unlike most policies,
-CMake version |release| does *not* warn by default when this policy
-is not set and simply uses ``OLD`` behavior.  See documentation of the
-:variable:`CMAKE_POLICY_WARNING_CMP0056 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
-variable to control the warning.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0057.rst b/share/cmake-3.18/Help/policy/CMP0057.rst
deleted file mode 100644
index 83db186..0000000
--- a/share/cmake-3.18/Help/policy/CMP0057.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-CMP0057
--------
-
-Support new :command:`if` IN_LIST operator.
-
-CMake 3.3 adds support for the new IN_LIST operator.
-
-The ``OLD`` behavior for this policy is to ignore the IN_LIST operator.
-The ``NEW`` behavior is to interpret the IN_LIST operator.
-
-This policy was introduced in CMake version 3.3.
-CMake version |release| warns when the policy is not set and uses
-``OLD`` behavior.  Use the :command:`cmake_policy` command to set
-it to ``OLD`` or ``NEW`` explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0058.rst b/share/cmake-3.18/Help/policy/CMP0058.rst
deleted file mode 100644
index 05efd48..0000000
--- a/share/cmake-3.18/Help/policy/CMP0058.rst
+++ /dev/null
@@ -1,110 +0,0 @@
-CMP0058
--------
-
-Ninja requires custom command byproducts to be explicit.
-
-When an intermediate file generated during the build is consumed
-by an expensive operation or a large tree of dependents, one may
-reduce the work needed for an incremental rebuild by updating the
-file timestamp only when its content changes.  With this approach
-the generation rule must have a separate output file that is always
-updated with a new timestamp that is newer than any dependencies of
-the rule so that the build tool re-runs the rule only when the input
-changes.  We refer to the separate output file as a rule's *witness*
-and the generated file as a rule's *byproduct*.
-
-Byproducts may not be listed as outputs because their timestamps are
-allowed to be older than the inputs.  No build tools (like ``make``)
-that existed when CMake was designed have a way to express byproducts.
-Therefore CMake versions prior to 3.2 had no way to specify them.
-Projects typically left byproducts undeclared in the rules that
-generate them.  For example:
-
-.. code-block:: cmake
-
-  add_custom_command(
-    OUTPUT witness.txt
-    COMMAND ${CMAKE_COMMAND} -E copy_if_different
-            ${CMAKE_CURRENT_SOURCE_DIR}/input.txt
-            byproduct.txt # timestamp may not change
-    COMMAND ${CMAKE_COMMAND} -E touch witness.txt
-    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/input.txt
-    )
-  add_custom_target(Provider DEPENDS witness.txt)
-  add_custom_command(
-    OUTPUT generated.c
-    COMMAND expensive-task -i byproduct.txt -o generated.c
-    DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/byproduct.txt
-    )
-  add_library(Consumer generated.c)
-  add_dependencies(Consumer Provider)
-
-This works well for all generators except :generator:`Ninja`.
-The Ninja build tool sees a rule listing ``byproduct.txt``
-as a dependency and no rule listing it as an output.  Ninja then
-complains that there is no way to satisfy the dependency and
-stops building even though there are order-only dependencies
-that ensure ``byproduct.txt`` will exist before its consumers
-need it.  See discussion of this problem in `Ninja Issue 760`_
-for further details on why Ninja works this way.
-
-.. _`Ninja Issue 760`: https://github.com/martine/ninja/issues/760
-
-Instead of leaving byproducts undeclared in the rules that generate
-them, Ninja expects byproducts to be listed along with other outputs.
-Such rules may be marked with a ``restat`` option that tells Ninja
-to check the timestamps of outputs after the rules run.  This
-prevents byproducts whose timestamps do not change from causing
-their dependents to re-build unnecessarily.
-
-Since the above approach does not tell CMake what custom command
-generates ``byproduct.txt``, the Ninja generator does not have
-enough information to add the byproduct as an output of any rule.
-CMake 2.8.12 and above work around this problem and allow projects
-using the above approach to build by generating ``phony`` build
-rules to tell Ninja to tolerate such missing files.  However, this
-workaround prevents Ninja from diagnosing a dependency that is
-really missing.  It also works poorly in in-source builds where
-every custom command dependency, even on source files, needs to
-be treated this way because CMake does not have enough information
-to know which files are generated as byproducts of custom commands.
-
-CMake 3.2 introduced the ``BYPRODUCTS`` option to the
-:command:`add_custom_command` and :command:`add_custom_target`
-commands.  This option allows byproducts to be specified explicitly:
-
-.. code-block:: cmake
-
-  add_custom_command(
-    OUTPUT witness.txt
-    BYPRODUCTS byproduct.txt # explicit byproduct specification
-    COMMAND ${CMAKE_COMMAND} -E copy_if_different
-            ${CMAKE_CURRENT_SOURCE_DIR}/input.txt
-            byproduct.txt # timestamp may not change
-  ...
-
-The ``BYPRODUCTS`` option is used by the :generator:`Ninja` generator
-to list byproducts among the outputs of the custom commands that
-generate them, and is ignored by other generators.
-
-CMake 3.3 and above prefer to require projects to specify custom
-command byproducts explicitly so that it can avoid using the
-``phony`` rule workaround altogether.  Policy ``CMP0058`` was
-introduced to provide compatibility with existing projects that
-still need the workaround.
-
-This policy has no effect on generators other than :generator:`Ninja`.
-The ``OLD`` behavior for this policy is to generate Ninja ``phony``
-rules for unknown dependencies in the build tree.  The ``NEW``
-behavior for this policy is to not generate these and instead
-require projects to specify custom command ``BYPRODUCTS`` explicitly.
-
-This policy was introduced in CMake version 3.3.
-CMake version |release| warns when it sees unknown dependencies in
-out-of-source build trees if the policy is not set and then uses
-``OLD`` behavior.  Use the :command:`cmake_policy` command to set
-the policy to ``OLD`` or ``NEW`` explicitly.  The policy setting
-must be in scope at the end of the top-level ``CMakeLists.txt``
-file of the project and has global effect.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0059.rst b/share/cmake-3.18/Help/policy/CMP0059.rst
deleted file mode 100644
index bce982e..0000000
--- a/share/cmake-3.18/Help/policy/CMP0059.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-CMP0059
--------
-
-Do not treat ``DEFINITIONS`` as a built-in directory property.
-
-CMake 3.3 and above no longer make a list of definitions available through
-the :prop_dir:`DEFINITIONS` directory property.  The
-:prop_dir:`COMPILE_DEFINITIONS` directory property may be used instead.
-
-The ``OLD`` behavior for this policy is to provide the list of flags given
-so far to the :command:`add_definitions` command.  The ``NEW`` behavior is
-to behave as a normal user-defined directory property.
-
-This policy was introduced in CMake version 3.3.
-CMake version |release| warns when the policy is not set and uses
-``OLD`` behavior.  Use the :command:`cmake_policy` command to set
-it to ``OLD`` or ``NEW`` explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0060.rst b/share/cmake-3.18/Help/policy/CMP0060.rst
deleted file mode 100644
index 98ac2cf..0000000
--- a/share/cmake-3.18/Help/policy/CMP0060.rst
+++ /dev/null
@@ -1,65 +0,0 @@
-CMP0060
--------
-
-Link libraries by full path even in implicit directories.
-
-Policy :policy:`CMP0003` was introduced with the intention of always
-linking library files by full path when a full path is given to the
-:command:`target_link_libraries` command.  However, on some platforms
-(e.g. HP-UX) the compiler front-end adds alternative library search paths
-for the current architecture (e.g. ``/usr/lib/<arch>`` has alternatives
-to libraries in ``/usr/lib`` for the current architecture).
-On such platforms the :command:`find_library` may find a library such as
-``/usr/lib/libfoo.so`` that does not belong to the current architecture.
-
-Prior to policy :policy:`CMP0003` projects would still build in such
-cases because the incorrect library path would be converted to ``-lfoo``
-on the link line and the linker would find the proper library in the
-arch-specific search path provided by the compiler front-end implicitly.
-At the time we chose to remain compatible with such projects by always
-converting library files found in implicit link directories to ``-lfoo``
-flags to ask the linker to search for them.  This approach allowed existing
-projects to continue to build while still linking to libraries outside
-implicit link directories via full path (such as those in the build tree).
-
-CMake does allow projects to override this behavior by using an
-:ref:`IMPORTED library target <Imported Targets>` with its
-:prop_tgt:`IMPORTED_LOCATION` property set to the desired full path to
-a library file.  In fact, many :ref:`Find Modules` are learning to provide
-:ref:`Imported Targets` instead of just the traditional ``Foo_LIBRARIES``
-variable listing library files.  However, this makes the link line
-generated for a library found by a Find Module depend on whether it
-is linked through an imported target or not, which is inconsistent.
-Furthermore, this behavior has been a source of confusion because the
-generated link line for a library file depends on its location.  It is
-also problematic for projects trying to link statically because flags
-like ``-Wl,-Bstatic -lfoo -Wl,-Bdynamic`` may be used to help the linker
-select ``libfoo.a`` instead of ``libfoo.so`` but then leak dynamic linking
-to following libraries.  (See the :prop_tgt:`LINK_SEARCH_END_STATIC`
-target property for a solution typically used for that problem.)
-
-When the special case for libraries in implicit link directories was first
-introduced the list of implicit link directories was simply hard-coded
-(e.g. ``/lib``, ``/usr/lib``, and a few others).  Since that time, CMake
-has learned to detect the implicit link directories used by the compiler
-front-end.  If necessary, the :command:`find_library` command could be
-taught to use this information to help find libraries of the proper
-architecture.
-
-For these reasons, CMake 3.3 and above prefer to drop the special case
-and link libraries by full path even when they are in implicit link
-directories.  Policy ``CMP0060`` provides compatibility for existing
-projects.
-
-The ``OLD`` behavior for this policy is to ask the linker to search for
-libraries whose full paths are known to be in implicit link directories.
-The ``NEW`` behavior for this policy is to link libraries by full path even
-if they are in implicit link directories.
-
-This policy was introduced in CMake version 3.3.  Unlike most policies,
-CMake version |release| does *not* warn by default when this policy
-is not set and simply uses ``OLD`` behavior.  See documentation of the
-:variable:`CMAKE_POLICY_WARNING_CMP0060 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
-variable to control the warning.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0061.rst b/share/cmake-3.18/Help/policy/CMP0061.rst
deleted file mode 100644
index 57e4161..0000000
--- a/share/cmake-3.18/Help/policy/CMP0061.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-CMP0061
--------
-
-CTest does not by default tell ``make`` to ignore errors (``-i``).
-
-The :command:`ctest_build` and :command:`build_command` commands no
-longer generate build commands for :ref:`Makefile Generators` with
-the ``-i`` option.  Previously this was done to help build as much
-of tested projects as possible.  However, this behavior is not
-consistent with other generators and also causes the return code
-of the ``make`` tool to be meaningless.
-
-Of course users may still add this option manually by setting
-:variable:`CTEST_BUILD_COMMAND` or the ``MAKECOMMAND`` cache entry.
-See the :ref:`CTest Build Step` ``MakeCommand`` setting documentation
-for their effects.
-
-The ``OLD`` behavior for this policy is to add ``-i`` to ``make``
-calls in CTest.  The ``NEW`` behavior for this policy is to not
-add ``-i``.
-
-This policy was introduced in CMake version 3.3.  Unlike most policies,
-CMake version |release| does *not* warn when this policy is not set and
-simply uses ``OLD`` behavior.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0062.rst b/share/cmake-3.18/Help/policy/CMP0062.rst
deleted file mode 100644
index 0db7aaf..0000000
--- a/share/cmake-3.18/Help/policy/CMP0062.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-CMP0062
--------
-
-Disallow :command:`install` of :command:`export` result.
-
-The :command:`export()` command generates a file containing
-:ref:`Imported Targets`, which is suitable for use from the build
-directory.  It is not suitable for installation because it contains absolute
-paths to buildsystem locations, and is particular to a single build
-configuration.
-
-The :command:`install(EXPORT)` generates and installs files which contain
-:ref:`Imported Targets`.  These files are generated with relative paths
-(unless the user specifies absolute paths), and are designed for
-multi-configuration use.  See :ref:`Creating Packages` for more.
-
-CMake 3.3 no longer allows the use of the :command:`install(FILES)` command
-with the result of the :command:`export()` command.
-
-The ``OLD`` behavior for this policy is to allow installing the result of
-an :command:`export()` command.  The ``NEW`` behavior for this policy is
-not to allow installing the result of an :command:`export()` command.
-
-This policy was introduced in CMake version 3.3.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.  Use
-the :command:`cmake_policy()` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0063.rst b/share/cmake-3.18/Help/policy/CMP0063.rst
deleted file mode 100644
index d736d06..0000000
--- a/share/cmake-3.18/Help/policy/CMP0063.rst
+++ /dev/null
@@ -1,28 +0,0 @@
-CMP0063
--------
-
-Honor visibility properties for all target types.
-
-The :prop_tgt:`<LANG>_VISIBILITY_PRESET` and
-:prop_tgt:`VISIBILITY_INLINES_HIDDEN` target properties affect visibility
-of symbols during dynamic linking.  When first introduced these properties
-affected compilation of sources only in shared libraries, module libraries,
-and executables with the :prop_tgt:`ENABLE_EXPORTS` property set.  This
-was sufficient for the basic use cases of shared libraries and executables
-with plugins.  However, some sources may be compiled as part of static
-libraries or object libraries and then linked into a shared library later.
-CMake 3.3 and above prefer to honor these properties for sources compiled
-in all target types.  This policy preserves compatibility for projects
-expecting the properties to work only for some target types.
-
-The ``OLD`` behavior for this policy is to ignore the visibility properties
-for static libraries, object libraries, and executables without exports.
-The ``NEW`` behavior for this policy is to honor the visibility properties
-for all target types.
-
-This policy was introduced in CMake version 3.3.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.  Use
-the :command:`cmake_policy()` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0064.rst b/share/cmake-3.18/Help/policy/CMP0064.rst
deleted file mode 100644
index e9a061b..0000000
--- a/share/cmake-3.18/Help/policy/CMP0064.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-CMP0064
--------
-
-Recognize ``TEST`` as a operator for the :command:`if` command.
-
-The ``TEST`` operator was added to the :command:`if` command to determine if a
-given test name was created by the :command:`add_test` command.
-
-The ``OLD`` behavior for this policy is to ignore the ``TEST`` operator.
-The ``NEW`` behavior is to interpret the ``TEST`` operator.
-
-This policy was introduced in CMake version 3.4.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.  Use
-the :command:`cmake_policy()` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0065.rst b/share/cmake-3.18/Help/policy/CMP0065.rst
deleted file mode 100644
index b820aad..0000000
--- a/share/cmake-3.18/Help/policy/CMP0065.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-CMP0065
--------
-
-Do not add flags to export symbols from executables without
-the :prop_tgt:`ENABLE_EXPORTS` target property.
-
-CMake 3.3 and below, for historical reasons, always linked executables
-on some platforms with flags like ``-rdynamic`` to export symbols from
-the executables for use by any plugins they may load via ``dlopen``.
-CMake 3.4 and above prefer to do this only for executables that are
-explicitly marked with the :prop_tgt:`ENABLE_EXPORTS` target property.
-
-The ``OLD`` behavior of this policy is to always use the additional link
-flags when linking executables regardless of the value of the
-:prop_tgt:`ENABLE_EXPORTS` target property.
-
-The ``NEW`` behavior of this policy is to only use the additional link
-flags when linking executables if the :prop_tgt:`ENABLE_EXPORTS` target
-property is set to ``True``.
-
-This policy was introduced in CMake version 3.4.  Unlike most policies,
-CMake version |release| does *not* warn by default when this policy
-is not set and simply uses ``OLD`` behavior.  See documentation of the
-:variable:`CMAKE_POLICY_WARNING_CMP0065 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
-variable to control the warning.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0066.rst b/share/cmake-3.18/Help/policy/CMP0066.rst
deleted file mode 100644
index e110ae1..0000000
--- a/share/cmake-3.18/Help/policy/CMP0066.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-CMP0066
--------
-
-Honor per-config flags in :command:`try_compile` source-file signature.
-
-The source file signature of the :command:`try_compile` command uses the value
-of the :variable:`CMAKE_<LANG>_FLAGS` variable in the test project so that the
-test compilation works as it would in the main project.  However, CMake 3.6 and
-below do not also honor config-specific compiler flags such as those in the
-:variable:`CMAKE_<LANG>_FLAGS_DEBUG` variable.  CMake 3.7 and above prefer to
-honor config-specific compiler flags too.  This policy provides compatibility
-for projects that do not expect config-specific compiler flags to be used.
-
-The ``OLD`` behavior of this policy is to ignore config-specific flag
-variables like :variable:`CMAKE_<LANG>_FLAGS_DEBUG` and only use CMake's
-built-in defaults for the current compiler and platform.
-
-The ``NEW`` behavior of this policy is to honor config-specific flag
-variabldes like :variable:`CMAKE_<LANG>_FLAGS_DEBUG`.
-
-This policy was introduced in CMake version 3.7.  Unlike most policies,
-CMake version |release| does *not* warn by default when this policy
-is not set and simply uses ``OLD`` behavior.  See documentation of the
-:variable:`CMAKE_POLICY_WARNING_CMP0066 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
-variable to control the warning.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0067.rst b/share/cmake-3.18/Help/policy/CMP0067.rst
deleted file mode 100644
index f802787..0000000
--- a/share/cmake-3.18/Help/policy/CMP0067.rst
+++ /dev/null
@@ -1,37 +0,0 @@
-CMP0067
--------
-
-Honor language standard in :command:`try_compile` source-file signature.
-
-The :command:`try_compile` source file signature is intended to allow
-callers to check whether they will be able to compile a given source file
-with the current toolchain.  In order to match compiler behavior, any
-language standard mode should match.  However, CMake 3.7 and below did not
-do this.  CMake 3.8 and above prefer to honor the language standard settings
-for ``C``, ``CXX`` (C++), and ``CUDA`` using the values of the variables:
-
-* :variable:`CMAKE_C_STANDARD`
-* :variable:`CMAKE_C_STANDARD_REQUIRED`
-* :variable:`CMAKE_C_EXTENSIONS`
-* :variable:`CMAKE_CXX_STANDARD`
-* :variable:`CMAKE_CXX_STANDARD_REQUIRED`
-* :variable:`CMAKE_CXX_EXTENSIONS`
-* :variable:`CMAKE_CUDA_STANDARD`
-* :variable:`CMAKE_CUDA_STANDARD_REQUIRED`
-* :variable:`CMAKE_CUDA_EXTENSIONS`
-
-This policy provides compatibility for projects that do not expect
-the language standard settings to be used automatically.
-
-The ``OLD`` behavior of this policy is to ignore language standard
-setting variables when generating the ``try_compile`` test project.
-The ``NEW`` behavior of this policy is to honor language standard
-setting variables.
-
-This policy was introduced in CMake version 3.8.  Unlike most policies,
-CMake version |release| does *not* warn by default when this policy
-is not set and simply uses ``OLD`` behavior.  See documentation of the
-:variable:`CMAKE_POLICY_WARNING_CMP0067 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
-variable to control the warning.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0068.rst b/share/cmake-3.18/Help/policy/CMP0068.rst
deleted file mode 100644
index 978a6e3..0000000
--- a/share/cmake-3.18/Help/policy/CMP0068.rst
+++ /dev/null
@@ -1,35 +0,0 @@
-CMP0068
--------
-
-``RPATH`` settings on macOS do not affect ``install_name``.
-
-CMake 3.9 and newer remove any effect the following settings may have on the
-``install_name`` of a target on macOS:
-
-* :prop_tgt:`BUILD_WITH_INSTALL_RPATH` target property
-* :prop_tgt:`SKIP_BUILD_RPATH` target property
-* :variable:`CMAKE_SKIP_RPATH` variable
-* :variable:`CMAKE_SKIP_INSTALL_RPATH` variable
-
-Previously, setting :prop_tgt:`BUILD_WITH_INSTALL_RPATH` had the effect of
-setting both the ``install_name`` of a target to :prop_tgt:`INSTALL_NAME_DIR`
-and the ``RPATH`` to :prop_tgt:`INSTALL_RPATH`.  In CMake 3.9, it only affects
-setting of ``RPATH``.  However, if one wants :prop_tgt:`INSTALL_NAME_DIR` to
-apply to the target in the build tree, one may set
-:prop_tgt:`BUILD_WITH_INSTALL_NAME_DIR`.
-
-If :prop_tgt:`SKIP_BUILD_RPATH`, :variable:`CMAKE_SKIP_RPATH` or
-:variable:`CMAKE_SKIP_INSTALL_RPATH` were used to strip the directory portion
-of the ``install_name`` of a target, one may set ``INSTALL_NAME_DIR=""``
-instead.
-
-The ``OLD`` behavior of this policy is to use the ``RPATH`` settings for
-``install_name`` on macOS.  The ``NEW`` behavior of this policy is to ignore
-the ``RPATH`` settings for ``install_name`` on macOS.
-
-This policy was introduced in CMake version 3.9.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0069.rst b/share/cmake-3.18/Help/policy/CMP0069.rst
deleted file mode 100644
index 0d5ddfd..0000000
--- a/share/cmake-3.18/Help/policy/CMP0069.rst
+++ /dev/null
@@ -1,92 +0,0 @@
-CMP0069
--------
-
-:prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` is enforced when enabled.
-
-CMake 3.9 and newer prefer to add IPO flags whenever the
-:prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property is enabled and
-produce an error if flags are not known to CMake for the current compiler.
-Since a given compiler may not support IPO flags in all environments in which
-it is used, it is now the project's responsibility to use the
-:module:`CheckIPOSupported` module to check for support before enabling the
-:prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property.  This approach
-allows a project to conditionally activate IPO when supported.  It also
-allows an end user to set the :variable:`CMAKE_INTERPROCEDURAL_OPTIMIZATION`
-variable in an environment known to support IPO even if the project does
-not enable the property.
-
-Since CMake 3.8 and lower only honored :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION`
-for the Intel compiler on Linux, some projects may unconditionally enable the
-target property.  Policy ``CMP0069`` provides compatibility with such projects.
-
-This policy takes effect whenever the IPO property is enabled.  The ``OLD``
-behavior for this policy is to add IPO flags only for Intel compiler on Linux.
-The ``NEW`` behavior for this policy is to add IPO flags for the current
-compiler or produce an error if CMake does not know the flags.
-
-This policy was introduced in CMake version 3.9.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
-
-Examples
-^^^^^^^^
-
-Behave like CMake 3.8 and do not apply any IPO flags except for Intel compiler
-on Linux:
-
-.. code-block:: cmake
-
-  cmake_minimum_required(VERSION 3.8)
-  project(foo)
-
-  # ...
-
-  set_property(TARGET ... PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
-
-Use the :module:`CheckIPOSupported` module to detect whether IPO is
-supported by the current compiler, environment, and CMake version.
-Produce a fatal error if support is not available:
-
-.. code-block:: cmake
-
-  cmake_minimum_required(VERSION 3.9) # CMP0069 NEW
-  project(foo)
-
-  include(CheckIPOSupported)
-  check_ipo_supported()
-
-  # ...
-
-  set_property(TARGET ... PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
-
-Apply IPO flags only if compiler supports it:
-
-.. code-block:: cmake
-
-  cmake_minimum_required(VERSION 3.9) # CMP0069 NEW
-  project(foo)
-
-  include(CheckIPOSupported)
-
-  # ...
-
-  check_ipo_supported(RESULT result)
-  if(result)
-    set_property(TARGET ... PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
-  endif()
-
-Apply IPO flags without any checks.  This may lead to build errors if IPO
-is not supported by the compiler in the current environment.  Produce an
-error if CMake does not know IPO flags for the current compiler:
-
-.. code-block:: cmake
-
-  cmake_minimum_required(VERSION 3.9) # CMP0069 NEW
-  project(foo)
-
-  # ...
-
-  set_property(TARGET ... PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
diff --git a/share/cmake-3.18/Help/policy/CMP0070.rst b/share/cmake-3.18/Help/policy/CMP0070.rst
deleted file mode 100644
index 0fb3617..0000000
--- a/share/cmake-3.18/Help/policy/CMP0070.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-CMP0070
--------
-
-Define :command:`file(GENERATE)` behavior for relative paths.
-
-CMake 3.10 and newer define that relative paths given to ``INPUT`` and
-``OUTPUT`` arguments of ``file(GENERATE)`` are interpreted relative to the
-current source and binary directories, respectively.  CMake 3.9 and lower did
-not define any behavior for relative paths but did not diagnose them either
-and accidentally treated them relative to the process working directory.
-Policy ``CMP0070`` provides compatibility with projects that used the old
-undefined behavior.
-
-This policy affects behavior of relative paths given to ``file(GENERATE)``.
-The ``OLD`` behavior for this policy is to treat the paths relative to the
-working directory of CMake.  The ``NEW`` behavior for this policy is to
-interpret relative paths with respect to the current source or binary
-directory of the caller.
-
-This policy was introduced in CMake version 3.10.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0071.rst b/share/cmake-3.18/Help/policy/CMP0071.rst
deleted file mode 100644
index 855ecf0..0000000
--- a/share/cmake-3.18/Help/policy/CMP0071.rst
+++ /dev/null
@@ -1,42 +0,0 @@
-CMP0071
--------
-
-Let :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` process
-:prop_sf:`GENERATED` files.
-
-Since version 3.10, CMake processes **regular** and :prop_sf:`GENERATED`
-source files in :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
-In earlier CMake versions, only **regular** source files were processed.
-:prop_sf:`GENERATED` source files were ignored silently.
-
-This policy affects how source files that are :prop_sf:`GENERATED`
-get treated in :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
-
-The ``OLD`` behavior for this policy is to ignore :prop_sf:`GENERATED`
-source files in :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
-
-The ``NEW`` behavior for this policy is to process :prop_sf:`GENERATED`
-source files in :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` just like regular
-source files.
-
-.. note::
-
-  To silence the ``CMP0071`` warning source files can be excluded from
-  :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` processing by setting the
-  source file properties :prop_sf:`SKIP_AUTOMOC`, :prop_sf:`SKIP_AUTOUIC` or
-  :prop_sf:`SKIP_AUTOGEN`.
-
-Source skip example::
-
-  # ...
-  set_property(SOURCE /path/to/file1.h PROPERTY SKIP_AUTOMOC ON)
-  set_property(SOURCE /path/to/file2.h PROPERTY SKIP_AUTOUIC ON)
-  set_property(SOURCE /path/to/file3.h PROPERTY SKIP_AUTOGEN ON)
-  # ...
-
-This policy was introduced in CMake version 3.10.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0072.rst b/share/cmake-3.18/Help/policy/CMP0072.rst
deleted file mode 100644
index 3abbad7..0000000
--- a/share/cmake-3.18/Help/policy/CMP0072.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-CMP0072
--------
-
-:module:`FindOpenGL` prefers GLVND by default when available.
-
-The :module:`FindOpenGL` module provides an ``OpenGL::GL`` target and an
-``OPENGL_LIBRARIES`` variable for projects to use for legacy GL interfaces.
-When both a legacy GL library (e.g. ``libGL.so``) and GLVND libraries
-for OpenGL and GLX (e.g. ``libOpenGL.so`` and ``libGLX.so``) are available,
-the module must choose between them.  It documents an ``OpenGL_GL_PREFERENCE``
-variable that can be used to specify an explicit preference.  When no such
-preference is set, the module must choose a default preference.
-
-CMake 3.11 and above prefer to choose GLVND libraries.  This policy provides
-compatibility with projects that expect the legacy GL library to be used.
-
-The ``OLD`` behavior for this policy is to set ``OpenGL_GL_PREFERENCE`` to
-``LEGACY``.  The ``NEW`` behavior for this policy is to set
-``OpenGL_GL_PREFERENCE`` to ``GLVND``.
-
-This policy was introduced in CMake version 3.11.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0073.rst b/share/cmake-3.18/Help/policy/CMP0073.rst
deleted file mode 100644
index 9bfa0e9..0000000
--- a/share/cmake-3.18/Help/policy/CMP0073.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-CMP0073
--------
-
-Do not produce legacy ``_LIB_DEPENDS`` cache entries.
-
-Ancient CMake versions once used ``<tgt>_LIB_DEPENDS`` cache entries to
-propagate library link dependencies.  This has long been done by other
-means, leaving the :command:`export_library_dependencies` command as the
-only user of these values.  That command has long been disallowed by
-policy :policy:`CMP0033`, but the ``<tgt>_LIB_DEPENDS`` cache entries
-were left for compatibility with possible non-standard uses by projects.
-
-CMake 3.12 and above now prefer to not produce these cache entries
-at all.  This policy provides compatibility with projects that have
-not been updated to avoid using them.
-
-The ``OLD`` behavior for this policy is to set ``<tgt>_LIB_DEPENDS`` cache
-entries.  The ``NEW`` behavior for this policy is to not set them.
-
-This policy was introduced in CMake version 3.12.  Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-Unlike most policies, CMake version |release| does *not* warn
-when this policy is not set and simply uses ``OLD`` behavior.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0074.rst b/share/cmake-3.18/Help/policy/CMP0074.rst
deleted file mode 100644
index 63ebf7b..0000000
--- a/share/cmake-3.18/Help/policy/CMP0074.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-CMP0074
--------
-
-:command:`find_package` uses ``<PackageName>_ROOT`` variables.
-
-In CMake 3.12 and above the :command:`find_package(<PackageName>)` command now
-searches prefixes specified by the :variable:`<PackageName>_ROOT` CMake
-variable and the :envvar:`<PackageName>_ROOT` environment variable.
-Package roots are maintained as a stack so nested calls to all ``find_*``
-commands inside find modules and config packages also search the roots as
-prefixes.  This policy provides compatibility with projects that have not been
-updated to avoid using ``<PackageName>_ROOT`` variables for other purposes.
-
-The ``OLD`` behavior for this policy is to ignore ``<PackageName>_ROOT``
-variables.  The ``NEW`` behavior for this policy is to use
-``<PackageName>_ROOT`` variables.
-
-This policy was introduced in CMake version 3.12.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0075.rst b/share/cmake-3.18/Help/policy/CMP0075.rst
deleted file mode 100644
index aa5c3f7..0000000
--- a/share/cmake-3.18/Help/policy/CMP0075.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-CMP0075
--------
-
-Include file check macros honor ``CMAKE_REQUIRED_LIBRARIES``.
-
-In CMake 3.12 and above, the
-
-* ``check_include_file`` macro in the :module:`CheckIncludeFile` module, the
-* ``check_include_file_cxx`` macro in the
-  :module:`CheckIncludeFileCXX` module, and the
-* ``check_include_files`` macro in the :module:`CheckIncludeFiles` module
-
-now prefer to link the check executable to the libraries listed in the
-``CMAKE_REQUIRED_LIBRARIES`` variable.  This policy provides compatibility
-with projects that have not been updated to expect this behavior.
-
-The ``OLD`` behavior for this policy is to ignore ``CMAKE_REQUIRED_LIBRARIES``
-in the include file check macros.  The ``NEW`` behavior of this policy is to
-honor ``CMAKE_REQUIRED_LIBRARIES`` in the include file check macros.
-
-This policy was introduced in CMake version 3.12.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0076.rst b/share/cmake-3.18/Help/policy/CMP0076.rst
deleted file mode 100644
index dd25f80..0000000
--- a/share/cmake-3.18/Help/policy/CMP0076.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-CMP0076
--------
-
-The :command:`target_sources` command converts relative paths to absolute.
-
-In CMake 3.13 and above, the :command:`target_sources` command now converts
-relative source file paths to absolute paths in the following cases:
-
-* Source files are added to the target's :prop_tgt:`INTERFACE_SOURCES`
-  property.
-* The target's :prop_tgt:`SOURCE_DIR` property differs from
-  :variable:`CMAKE_CURRENT_SOURCE_DIR`.
-
-A path that begins with a generator expression is always left unmodified.
-
-This policy provides compatibility with projects that have not been updated
-to expect this behavior.  The ``OLD`` behavior for this policy is to leave
-all relative source file paths unmodified.  The ``NEW`` behavior of this
-policy is to convert relative paths to absolute according to above rules.
-
-This policy was introduced in CMake version 3.13.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0077.rst b/share/cmake-3.18/Help/policy/CMP0077.rst
deleted file mode 100644
index 44797b6..0000000
--- a/share/cmake-3.18/Help/policy/CMP0077.rst
+++ /dev/null
@@ -1,52 +0,0 @@
-CMP0077
--------
-
-:command:`option` honors normal variables.
-
-The :command:`option` command is typically used to create a cache entry
-to allow users to set the option.  However, there are cases in which a
-normal (non-cached) variable of the same name as the option may be
-defined by the project prior to calling the :command:`option` command.
-For example, a project that embeds another project as a subdirectory
-may want to hard-code options of the subproject to build the way it needs.
-
-For historical reasons in CMake 3.12 and below the :command:`option`
-command *removes* a normal (non-cached) variable of the same name when:
-
-* a cache entry of the specified name does not exist at all, or
-* a cache entry of the specified name exists but has not been given
-  a type (e.g. via ``-D<name>=ON`` on the command line).
-
-In both of these cases (typically on the first run in a new build tree),
-the :command:`option` command gives the cache entry type ``BOOL`` and
-removes any normal (non-cached) variable of the same name.  In the
-remaining case that the cache entry of the specified name already
-exists and has a type (typically on later runs in a build tree), the
-:command:`option` command changes nothing and any normal variable of
-the same name remains set.
-
-In CMake 3.13 and above the :command:`option` command prefers to
-do nothing when a normal variable of the given name already exists.
-It does not create or update a cache entry or remove the normal variable.
-The new behavior is consistent between the first and later runs in a
-build tree.  This policy provides compatibility with projects that have
-not been updated to expect the new behavior.
-
-When the :command:`option` command sees a normal variable of the given
-name:
-
-* The ``OLD`` behavior for this policy is to proceed even when a normal
-  variable of the same name exists.  If the cache entry does not already
-  exist and have a type then it is created and/or given a type and the
-  normal variable is removed.
-
-* The ``NEW`` behavior for this policy is to do nothing when a normal
-  variable of the same name exists.  The normal variable is not removed.
-  The cache entry is not created or updated and is ignored if it exists.
-
-This policy was introduced in CMake version 3.13.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0078.rst b/share/cmake-3.18/Help/policy/CMP0078.rst
deleted file mode 100644
index 2e97934..0000000
--- a/share/cmake-3.18/Help/policy/CMP0078.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-CMP0078
--------
-
-:module:`UseSWIG` generates standard target names.
-
-Starting with CMake 3.13, :module:`UseSWIG` generates now standard target
-names. This policy provides compatibility with projects that expect the legacy
-behavior.
-
-The ``OLD`` behavior for this policy relies on
-``UseSWIG_TARGET_NAME_PREFERENCE`` variable that can be used to specify an
-explicit preference.  The value may be one of:
-
-* ``LEGACY``: legacy strategy is applied. Variable
-  ``SWIG_MODULE_<name>_REAL_NAME`` must be used to get real target name.
-  This is the default if not specified.
-* ``STANDARD``: target name matches specified name.
-
-This policy was introduced in CMake version 3.13.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0079.rst b/share/cmake-3.18/Help/policy/CMP0079.rst
deleted file mode 100644
index 0244d6c..0000000
--- a/share/cmake-3.18/Help/policy/CMP0079.rst
+++ /dev/null
@@ -1,40 +0,0 @@
-CMP0079
--------
-
-:command:`target_link_libraries` allows use with targets in other directories.
-
-Prior to CMake 3.13 the :command:`target_link_libraries` command did not
-accept targets not created in the calling directory as its first argument
-for calls that update the :prop_tgt:`LINK_LIBRARIES` of the target itself.
-It did accidentally accept targets from other directories on calls that
-only update the :prop_tgt:`INTERFACE_LINK_LIBRARIES`, but would simply
-add entries to the property as if the call were made in the original
-directory.  Thus link interface libraries specified this way were always
-looked up by generators in the scope of the original target rather than
-in the scope that called :command:`target_link_libraries`.
-
-CMake 3.13 now allows the :command:`target_link_libraries` command to
-be called from any directory to add link dependencies and link interface
-libraries to targets created in other directories.  The entries are added
-to :prop_tgt:`LINK_LIBRARIES` and :prop_tgt:`INTERFACE_LINK_LIBRARIES`
-using a special (internal) suffix to tell the generators to look up the
-names in the calling scope rather than the scope that created the target.
-
-This policy provides compatibility with projects that already use
-:command:`target_link_libraries` with the ``INTERFACE`` keyword
-on a target in another directory to add :prop_tgt:`INTERFACE_LINK_LIBRARIES`
-entries to be looked up in the target's directory.  Such projects should
-be updated to be aware of the new scoping rules in that case.
-
-The ``OLD`` behavior of this policy is to disallow
-:command:`target_link_libraries` calls naming targets from another directory
-except in the previously accidentally allowed case of using the ``INTERFACE``
-keyword only.  The ``NEW`` behavior of this policy is to allow all such
-calls but use the new scoping rules.
-
-This policy was introduced in CMake version 3.13.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0080.rst b/share/cmake-3.18/Help/policy/CMP0080.rst
deleted file mode 100644
index 5ce9591..0000000
--- a/share/cmake-3.18/Help/policy/CMP0080.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-CMP0080
--------
-
-:module:`BundleUtilities` cannot be included at configure time.
-
-The macros provided by :module:`BundleUtilities` are intended to be invoked
-at install time rather than at configure time, because they depend on the
-listed targets already existing at the time they are invoked. If they are
-invoked at configure time, the targets haven't been built yet, and the
-commands will fail.
-
-This policy restricts the inclusion of :module:`BundleUtilities` to
-``cmake -P`` style scripts and install rules. Specifically, it looks for the
-presence of :variable:`CMAKE_GENERATOR` and throws a fatal error if it exists.
-
-The ``OLD`` behavior of this policy is to allow :module:`BundleUtilities` to
-be included at configure time. The ``NEW`` behavior of this policy is to
-disallow such inclusion.
-
-This policy was introduced in CMake version 3.13.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0081.rst b/share/cmake-3.18/Help/policy/CMP0081.rst
deleted file mode 100644
index d3b2872..0000000
--- a/share/cmake-3.18/Help/policy/CMP0081.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-CMP0081
--------
-
-Relative paths not allowed in :prop_tgt:`LINK_DIRECTORIES` target property.
-
-CMake 3.12 and lower allowed the :prop_dir:`LINK_DIRECTORIES` directory
-property to contain relative paths.  The base path for such relative
-entries is not well defined.  CMake 3.13 and later will issue a
-``FATAL_ERROR`` if the :prop_tgt:`LINK_DIRECTORIES` target property
-(which is initialized by the :prop_dir:`LINK_DIRECTORIES` directory property)
-contains a relative path.
-
-The ``OLD`` behavior for this policy is not to warn about relative paths
-in the :prop_tgt:`LINK_DIRECTORIES` target property.  The ``NEW`` behavior for
-this policy is to issue a ``FATAL_ERROR`` if :prop_tgt:`LINK_DIRECTORIES`
-contains a relative path.
-
-This policy was introduced in CMake version 3.13.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.  Use
-the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0082.rst b/share/cmake-3.18/Help/policy/CMP0082.rst
deleted file mode 100644
index d887616..0000000
--- a/share/cmake-3.18/Help/policy/CMP0082.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-CMP0082
--------
-
-Install rules from :command:`add_subdirectory` calls are interleaved with
-those in caller.
-
-CMake 3.13 and lower ran the install rules from :command:`add_subdirectory`
-after all other install rules, even if :command:`add_subdirectory` was called
-before the other install rules.  CMake 3.14 and above prefer to interleave
-these :command:`add_subdirectory` install rules with the others so that
-they are run in the order they are declared.  This policy provides
-compatibility for projects that have not been updated to expect the
-new behavior.
-
-The ``OLD`` behavior for this policy is to run the install rules from
-:command:`add_subdirectory` after the other install rules.  The ``NEW``
-behavior for this policy is to run all install rules in the order they are
-declared.
-
-This policy was introduced in CMake version 3.14.  Unlike most policies,
-CMake version |release| does *not* warn by default when this policy
-is not set and simply uses ``OLD`` behavior.  See documentation of the
-:variable:`CMAKE_POLICY_WARNING_CMP0082 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
-variable to control the warning.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0083.rst b/share/cmake-3.18/Help/policy/CMP0083.rst
deleted file mode 100644
index e0b09cf..0000000
--- a/share/cmake-3.18/Help/policy/CMP0083.rst
+++ /dev/null
@@ -1,69 +0,0 @@
-CMP0083
--------
-
-To control generation of Position Independent Executable (``PIE``) or not, some
-flags are required at link time.
-
-CMake 3.13 and lower did not add these link flags when
-:prop_tgt:`POSITION_INDEPENDENT_CODE` is set.
-
-The ``OLD`` behavior for this policy is to not manage ``PIE`` link flags. The
-``NEW`` behavior is to add link flags if :prop_tgt:`POSITION_INDEPENDENT_CODE`
-is set:
-
-* Set to ``TRUE``: flags to produce a position independent executable are
-  passed to the linker step. For example ``-pie`` for ``GCC``.
-* Set to ``FALSE``: flags not to produce a position independent executable are
-  passed to the linker step. For example ``-no-pie`` for ``GCC``.
-* Not set: no flags are passed to the linker step.
-
-Since a given linker may not support ``PIE`` flags in all environments in
-which it is used, it is the project's responsibility to use the
-:module:`CheckPIESupported` module to check for support to ensure that the
-:prop_tgt:`POSITION_INDEPENDENT_CODE` target property for executables will be
-honored at link time.
-
-This policy was introduced in CMake version 3.14. Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-Unlike most policies, CMake version |release| does not warn when this policy is
-not set and simply uses ``OLD`` behavior.
-
-.. Note::
-
-   Android platform has a special handling of ``PIE`` so it is not required
-   to use the :module:`CheckPIESupported` module to ensure flags are passed to
-   the linker.
-
-.. include:: DEPRECATED.txt
-
-Examples
-^^^^^^^^
-
-Behave like CMake 3.13 and do not apply any ``PIE`` flags at link stage.
-
-.. code-block:: cmake
-
-  cmake_minimum_required(VERSION 3.13)
-  project(foo)
-
-  # ...
-
-  add_executable(foo ...)
-  set_property(TARGET foo PROPERTY POSITION_INDEPENDENT_CODE TRUE)
-
-Use the :module:`CheckPIESupported` module to detect whether ``PIE`` is
-supported by the current linker and environment.  Apply ``PIE`` flags only
-if the linker supports them.
-
-.. code-block:: cmake
-
-  cmake_minimum_required(VERSION 3.14) # CMP0083 NEW
-  project(foo)
-
-  include(CheckPIESupported)
-  check_pie_supported()
-
-  # ...
-
-  add_executable(foo ...)
-  set_property(TARGET foo PROPERTY POSITION_INDEPENDENT_CODE TRUE)
diff --git a/share/cmake-3.18/Help/policy/CMP0084.rst b/share/cmake-3.18/Help/policy/CMP0084.rst
deleted file mode 100644
index 713d295..0000000
--- a/share/cmake-3.18/Help/policy/CMP0084.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-CMP0084
--------
-
-The :module:`FindQt` module does not exist for :command:`find_package`.
-
-The existence of :module:`FindQt` means that for Qt upstream to provide
-package config files that can be found by ``find_package(Qt)``, the consuming
-project has to explicitly specify ``find_package(Qt CONFIG)``. Removing this
-module gives Qt a path forward for exporting its own config files which can
-easily be found by consuming projects.
-
-This policy pretends that CMake's internal :module:`FindQt` module does not
-exist for :command:`find_package`. If a project really wants to use Qt 3 or 4,
-it can call ``find_package(Qt[34])``, ``include(FindQt)``, or add
-:module:`FindQt` to their :variable:`CMAKE_MODULE_PATH`.
-
-The ``OLD`` behavior of this policy is for :module:`FindQt` to exist for
-:command:`find_package`. The ``NEW`` behavior is to pretend that it doesn't
-exist for :command:`find_package`.
-
-This policy was introduced in CMake version 3.14.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0085.rst b/share/cmake-3.18/Help/policy/CMP0085.rst
deleted file mode 100644
index d9ec9a2..0000000
--- a/share/cmake-3.18/Help/policy/CMP0085.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-CMP0085
--------
-
-``$<IN_LIST:...>`` handles empty list items.
-
-In CMake 3.13 and lower, the ``$<IN_LIST:...>`` generator expression always
-returned ``0`` if the first argument was empty, even if the list contained an
-empty item. This behavior is inconsistent with the ``IN_LIST`` behavior of
-:command:`if`, which this generator expression is meant to emulate. CMake 3.14
-and later handles this case correctly.
-
-The ``OLD`` behavior of this policy is for ``$<IN_LIST:...>`` to always return
-``0`` if the first argument is empty. The ``NEW`` behavior is to return ``1``
-if the first argument is empty and the list contains an empty item.
-
-This policy was introduced in CMake version 3.14.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0086.rst b/share/cmake-3.18/Help/policy/CMP0086.rst
deleted file mode 100644
index 4a9e8b8..0000000
--- a/share/cmake-3.18/Help/policy/CMP0086.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-CMP0086
--------
-
-:module:`UseSWIG` honors ``SWIG_MODULE_NAME`` via ``-module`` flag.
-
-Starting with CMake 3.14, :module:`UseSWIG` passes option
-``-module <module_name>`` to ``SWIG`` compiler if the file property
-``SWIG_MODULE_NAME`` is specified. This policy provides compatibility with
-projects that expect the legacy behavior.
-
-The ``OLD`` behavior for this policy is to never pass ``-module`` option.
-The ``NEW`` behavior is to pass ``-module`` option to ``SWIG`` compiler if
-``SWIG_MODULE_NAME`` is specified.
-
-This policy was introduced in CMake version 3.14.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0087.rst b/share/cmake-3.18/Help/policy/CMP0087.rst
deleted file mode 100644
index 4c45b99..0000000
--- a/share/cmake-3.18/Help/policy/CMP0087.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-CMP0087
--------
-
-:command:`install(CODE)` and :command:`install(SCRIPT)` support generator
-expressions.
-
-In CMake 3.13 and earlier, :command:`install(CODE)` and
-:command:`install(SCRIPT)` did not evaluate generator expressions.  CMake 3.14
-and later will evaluate generator expressions for :command:`install(CODE)` and
-:command:`install(SCRIPT)`.
-
-The ``OLD`` behavior of this policy is for :command:`install(CODE)` and
-:command:`install(SCRIPT)` to not evaluate generator expressions.  The ``NEW``
-behavior is to evaluate generator expressions for :command:`install(CODE)` and
-:command:`install(SCRIPT)`.
-
-Note that it is the value of this policy setting at the end of the directory
-scope that is important, not its setting at the time of the call to
-:command:`install(CODE)` or :command:`install(SCRIPT)`.  This has implications
-for calling these commands from places that have their own policy scope but not
-their own directory scope (e.g. from files brought in via :command:`include()`
-rather than :command:`add_subdirectory()`).
-
-This policy was introduced in CMake version 3.14.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0088.rst b/share/cmake-3.18/Help/policy/CMP0088.rst
deleted file mode 100644
index 82c04ef..0000000
--- a/share/cmake-3.18/Help/policy/CMP0088.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-CMP0088
--------
-
-:module:`FindBISON` runs bison in :variable:`CMAKE_CURRENT_BINARY_DIR`
-when executing.
-
-The module provides a ``BISON_TARGET`` macro which generates BISON output.
-In CMake 3.13 and below the macro would generate a custom command that runs
-``bison`` in the source directory.  CMake 3.14 and later prefer to run it
-in the build directory and use :variable:`CMAKE_CURRENT_BINARY_DIR` as the
-``WORKING_DIRECTORY`` of its :command:`add_custom_command` invocation.
-This ensures that any implicitly generated file is written to the build
-tree rather than the source.
-
-This policy provides compatibility for projects that have not been updated
-to expect the new behavior.
-
-The ``OLD`` behavior for this policy is for ``BISON_TARGET`` to use
-the current source directory for the ``WORKING_DIRECTORY`` and where
-to generate implicit files. The ``NEW`` behavior of this policy is to
-use the current binary directory for the ``WORKING_DIRECTORY`` and where
-to generate implicit files.
-
-This policy was introduced in CMake version 3.14.  Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-Unlike most policies, CMake version |release| does *not* warn
-when this policy is not set and simply uses ``OLD`` behavior.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0089.rst b/share/cmake-3.18/Help/policy/CMP0089.rst
deleted file mode 100644
index 029de55..0000000
--- a/share/cmake-3.18/Help/policy/CMP0089.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-CMP0089
--------
-
-Compiler id for IBM Clang-based XL compilers is now ``XLClang``.
-
-CMake 3.15 and above recognize that IBM's Clang-based XL compilers
-that define ``__ibmxl__`` are a new front-end distinct from ``xlc``
-with a different command line and set of capabilities.
-CMake now prefers to present this to projects by setting the
-:variable:`CMAKE_<LANG>_COMPILER_ID` variable to ``XLClang`` instead
-of ``XL``.  However, existing projects may assume the compiler id for
-Clang-based XL is just ``XL`` as it was in CMake versions prior to 3.15.
-Therefore this policy determines for Clang-based XL compilers which
-compiler id to report in the :variable:`CMAKE_<LANG>_COMPILER_ID`
-variable after language ``<LANG>`` is enabled by the :command:`project`
-or :command:`enable_language` command.  The policy must be set prior
-to the invocation of either command.
-
-The ``OLD`` behavior for this policy is to use compiler id ``XL``.  The
-``NEW`` behavior for this policy is to use compiler id ``XLClang``.
-
-This policy was introduced in CMake version 3.15.  Use the
-:command:`cmake_policy` command to set this policy to ``OLD`` or ``NEW`` explicitly.
-Unlike most policies, CMake version |release| does *not* warn
-by default when this policy is not set and simply uses ``OLD`` behavior.
-See documentation of the
-:variable:`CMAKE_POLICY_WARNING_CMP0089 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
-variable to control the warning.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0090.rst b/share/cmake-3.18/Help/policy/CMP0090.rst
deleted file mode 100644
index 720c17c..0000000
--- a/share/cmake-3.18/Help/policy/CMP0090.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-CMP0090
--------
-
-:command:`export(PACKAGE)` does not populate package registry by default.
-
-In CMake 3.14 and below the :command:`export(PACKAGE)` command populated the
-user package registry by default and users needed to set the
-:variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` to disable it, e.g. in automated
-build and packaging environments.  Since the user package registry is stored
-outside the build tree, this side effect should not be enabled by default.
-Therefore CMake 3.15 and above prefer that :command:`export(PACKAGE)` does
-nothing unless an explicit :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY` variable
-is set to enable it.  This policy provides compatibility with projects that
-have not been updated.
-
-The ``OLD`` behavior for this policy is for :command:`export(PACKAGE)` command
-to populate the user package registry unless
-:variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` is enabled.
-The ``NEW`` behavior is for :command:`export(PACKAGE)` command to do nothing
-unless the :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY` is enabled.
-
-This policy was introduced in CMake version 3.15.  Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-Unlike most policies, CMake version |release| does *not* warn
-when this policy is not set and simply uses ``OLD`` behavior.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0091.rst b/share/cmake-3.18/Help/policy/CMP0091.rst
deleted file mode 100644
index 1a5878a..0000000
--- a/share/cmake-3.18/Help/policy/CMP0091.rst
+++ /dev/null
@@ -1,49 +0,0 @@
-CMP0091
--------
-
-MSVC runtime library flags are selected by an abstraction.
-
-Compilers targeting the MSVC ABI have flags to select the MSVC runtime library.
-Runtime library selection typically varies with build configuration because
-there is a separate runtime library for Debug builds.
-
-In CMake 3.14 and below, MSVC runtime library selection flags are added to
-the default :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>` cache entries by CMake
-automatically.  This allows users to edit their cache entries to adjust the
-flags.  However, the presence of such default flags is problematic for
-projects that want to choose a different runtime library programmatically.
-In particular, it requires string editing of the
-:variable:`CMAKE_<LANG>_FLAGS_<CONFIG>` variables with knowledge of the
-CMake builtin defaults so they can be replaced.
-
-CMake 3.15 and above prefer to leave the MSVC runtime library selection flags
-out of the default :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>` values and instead
-offer a first-class abstraction.  The :variable:`CMAKE_MSVC_RUNTIME_LIBRARY`
-variable and :prop_tgt:`MSVC_RUNTIME_LIBRARY` target property may be set to
-select the MSVC runtime library.  If they are not set then CMake uses the
-default value ``MultiThreaded$<$<CONFIG:Debug>:Debug>DLL`` which is
-equivalent to the original flags.
-
-This policy provides compatibility with projects that have not been updated
-to be aware of the abstraction.  The policy setting takes effect as of the
-first :command:`project` or :command:`enable_language` command that enables
-a language whose compiler targets the MSVC ABI.
-
-.. note::
-
-  Once the policy has taken effect at the top of a project, that choice
-  must be used throughout the tree.  In projects that have nested projects
-  in subdirectories, be sure to convert everything together.
-
-The ``OLD`` behavior for this policy is to place MSVC runtime library
-flags in the default :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>` cache
-entries and ignore the :variable:`CMAKE_MSVC_RUNTIME_LIBRARY` abstraction.
-The ``NEW`` behavior for this policy is to *not* place MSVC runtime
-library flags in the default cache entries and use the abstraction instead.
-
-This policy was introduced in CMake version 3.15.  Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-Unlike many policies, CMake version |release| does *not* warn
-when this policy is not set and simply uses ``OLD`` behavior.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0092.rst b/share/cmake-3.18/Help/policy/CMP0092.rst
deleted file mode 100644
index 8d3a288..0000000
--- a/share/cmake-3.18/Help/policy/CMP0092.rst
+++ /dev/null
@@ -1,38 +0,0 @@
-CMP0092
--------
-
-MSVC warning flags are not in :variable:`CMAKE_<LANG>_FLAGS` by default.
-
-When using MSVC-like compilers in CMake 3.14 and below, warning flags
-like ``/W3`` are added to :variable:`CMAKE_<LANG>_FLAGS` by default.
-This is problematic for projects that want to choose a different warning
-level programmatically.  In particular, it requires string editing of the
-:variable:`CMAKE_<LANG>_FLAGS` variables with knowledge of the
-CMake builtin defaults so they can be replaced.
-
-CMake 3.15 and above prefer to leave out warning flags from the value of
-:variable:`CMAKE_<LANG>_FLAGS` by default.
-
-This policy provides compatibility with projects that have not been updated
-to expect the lack of warning flags.  The policy setting takes effect as of
-the first :command:`project` or :command:`enable_language` command that
-initializes :variable:`CMAKE_<LANG>_FLAGS` for a given lanuage ``<LANG>``.
-
-.. note::
-
-  Once the policy has taken effect at the top of a project for a given
-  language, that choice must be used throughout the tree for that language.
-  In projects that have nested projects in subdirectories, be sure to
-  convert everything together.
-
-The ``OLD`` behavior for this policy is to place MSVC warning flags in the
-default :variable:`CMAKE_<LANG>_FLAGS` cache entries.  The ``NEW`` behavior
-for this policy is to *not* place MSVC warning flags in the default cache
-entries.
-
-This policy was introduced in CMake version 3.15.  Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-Unlike many policies, CMake version |release| does *not* warn
-when this policy is not set and simply uses ``OLD`` behavior.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0093.rst b/share/cmake-3.18/Help/policy/CMP0093.rst
deleted file mode 100644
index 0ffc493..0000000
--- a/share/cmake-3.18/Help/policy/CMP0093.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-CMP0093
--------
-
-:module:`FindBoost` reports ``Boost_VERSION`` in ``x.y.z`` format.
-
-In CMake 3.14 and below the module would report the Boost version
-number as specified in the preprocessor definition ``BOOST_VERSION`` in
-the ``boost/version.hpp`` file. In CMake 3.15 and later it is preferred
-that the reported version number matches the ``x.y.z`` format reported
-by the CMake package shipped with Boost ``1.70.0`` and later. The macro
-value is still reported in the ``Boost_VERSION_MACRO`` variable.
-
-The ``OLD`` behavior for this policy is for :module:`FindBoost` to report
-``Boost_VERSION`` as specified in the preprocessor definition
-``BOOST_VERSION`` in ``boost/version.hpp``. The ``NEW`` behavior for this
-policy is for :module:`FindBoost` to report ``Boost_VERSION`` in
-``x.y.z`` format.
-
-This policy was introduced in CMake version 3.15.  Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-Unlike many policies, CMake version |release| does *not* warn
-when this policy is not set and simply uses the ``OLD`` behavior.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0094.rst b/share/cmake-3.18/Help/policy/CMP0094.rst
deleted file mode 100644
index 836f30f..0000000
--- a/share/cmake-3.18/Help/policy/CMP0094.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-CMP0094
--------
-
-Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
-use ``LOCATION`` for lookup strategy.
-
-Starting with CMake 3.15, Modules :module:`FindPython3`, :module:`FindPython2`
-and :module:`FindPython` set value ``LOCATION`` for, respectively, variables
-``Python3_FIND_STRATEGY``, ``Python2_FIND_STRATEGY`` and
-``Python_FIND_STRATEGY``. This policy provides compatibility with projects that
-expect the legacy behavior.
-
-The ``OLD`` behavior for this policy set value ``VERSION`` for variables
-``Python3_FIND_STRATEGY``, ``Python2_FIND_STRATEGY`` and
-``Python_FIND_STRATEGY``.
-
-This policy was introduced in CMake version 3.15.  Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-Unlike many policies, CMake version |release| does *not* warn
-when this policy is not set and simply uses the ``OLD`` behavior.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0095.rst b/share/cmake-3.18/Help/policy/CMP0095.rst
deleted file mode 100644
index 4c56a05..0000000
--- a/share/cmake-3.18/Help/policy/CMP0095.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-CMP0095
--------
-
-``RPATH`` entries are properly escaped in the intermediary CMake install script.
-
-In CMake 3.15 and earlier, ``RPATH`` entries set via
-:variable:`CMAKE_INSTALL_RPATH` or via :prop_tgt:`INSTALL_RPATH` have not been
-escaped before being inserted into the ``cmake_install.cmake`` script. Dynamic
-linkers on ELF-based systems (e.g. Linux and FreeBSD) allow certain keywords in
-``RPATH`` entries, such as ``${ORIGIN}`` (More details are available in the
-``ld.so`` man pages on those systems). The syntax of these keywords can match
-CMake's variable syntax. In order to not be substituted (usually to an empty
-string) already by the intermediary ``cmake_install.cmake`` script, the user had
-to double-escape such ``RPATH`` keywords, e.g.
-``set(CMAKE_INSTALL_RPATH "\\\${ORIGIN}/../lib")``. Since the intermediary
-``cmake_install.cmake`` script is an implementation detail of CMake, CMake 3.16
-and later will make sure ``RPATH`` entries are inserted literally by escaping
-any coincidental CMake syntax.
-
-The ``OLD`` behavior of this policy is to not escape ``RPATH`` entries in the
-intermediary ``cmake_install.cmake`` script. The ``NEW`` behavior is to properly
-escape coincidental CMake syntax in ``RPATH`` entries when generating the
-intermediary ``cmake_install.cmake`` script.
-
-This policy was introduced in CMake version 3.16. CMake version |release| warns
-when the policy is not set and detected usage of CMake-like syntax and uses
-``OLD`` behavior. Use the :command:`cmake_policy` command to set it to ``OLD``
-or ``NEW`` explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0096.rst b/share/cmake-3.18/Help/policy/CMP0096.rst
deleted file mode 100644
index 8eaf0f9..0000000
--- a/share/cmake-3.18/Help/policy/CMP0096.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-CMP0096
--------
-
-The :command:`project` command preserves leading zeros in version components.
-
-When a ``VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]`` argument is given
-to the :command:`project` command, it stores the version string in the
-``PROJECT_VERSION`` variable and stores individual integer version components
-in ``PROJECT_VERSION_{MAJOR,MINOR,PATCH,TWEAK}`` variables (see policy
-:policy:`CMP0048`).  CMake 3.15 and below dropped leading zeros from each
-component.  CMake 3.16 and higher prefer to preserve leading zeros.  This
-policy provides compatibility for projects that have not been updated to
-expect the new behavior.
-
-The ``OLD`` behavior of this policy drops leading zeros in all components,
-e.g.  such that version ``1.07.06`` becomes ``1.7.6``.  The ``NEW`` behavior
-of this policy preserves the leading zeros in all components, such that
-version ``1.07.06`` remains unchanged.
-
-This policy was introduced in CMake version 3.16.  Unlike many policies, CMake
-version |release| does *not* warn when this policy is not set and simply uses
-the ``OLD`` behavior.  Use the :command:`cmake_policy` command to set it to
-``OLD`` or ``NEW`` explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0097.rst b/share/cmake-3.18/Help/policy/CMP0097.rst
deleted file mode 100644
index 4840aa6..0000000
--- a/share/cmake-3.18/Help/policy/CMP0097.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-CMP0097
--------
-
-:command:`ExternalProject_Add` with ``GIT_SUBMODULES ""`` initializes no
-submodules.
-
-The module provides a ``GIT_SUBMODULES`` option which controls what submodules
-to initialize and update. Starting with CMake 3.16, explicitly setting
-``GIT_SUBMODULES`` to an empty string means no submodules will be initialized
-or updated.
-
-This policy provides compatibility for projects that have not been updated
-to expect the new behavior.
-
-The ``OLD`` behavior for this policy is for ``GIT_SUBMODULES`` when set to
-an empty string to initialize and update all git submodules.
-The ``NEW`` behavior for this policy is for ``GIT_SUBMODULES`` when set to
-an empty string to initialize and update no git submodules.
-
-This policy was introduced in CMake version 3.16.  Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-Unlike most policies, CMake version |release| does *not* warn
-when this policy is not set and simply uses ``OLD`` behavior.
diff --git a/share/cmake-3.18/Help/policy/CMP0098.rst b/share/cmake-3.18/Help/policy/CMP0098.rst
deleted file mode 100644
index 6d1443b..0000000
--- a/share/cmake-3.18/Help/policy/CMP0098.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-CMP0098
--------
-
-:module:`FindFLEX` runs ``flex`` in directory
-:variable:`CMAKE_CURRENT_BINARY_DIR` when executing.
-
-The module provides a ``FLEX_TARGET`` macro which generates FLEX output.
-In CMake 3.16 and below the macro would generate a custom command that runs
-``flex`` in the current source directory.  CMake 3.17 and later prefer to
-run it in the build directory and use :variable:`CMAKE_CURRENT_BINARY_DIR`
-as the ``WORKING_DIRECTORY`` of its :command:`add_custom_command` invocation.
-This ensures that any implicitly generated file is written relative to the
-build tree rather than the source tree, unless the generated file is
-provided as absolute path.
-
-This policy provides compatibility for projects that have not been updated
-to expect the new behavior.
-
-The ``OLD`` behavior for this policy is for ``FLEX_TARGET`` to use
-the current source directory for the ``WORKING_DIRECTORY`` and where
-to generate implicit files. The ``NEW`` behavior of this policy is to
-use the current binary directory for the ``WORKING_DIRECTORY`` relative to
-which implicit files are generated unless provided as absolute path.
-
-This policy was introduced in CMake version 3.17.  Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-Unlike many policies, CMake version |release| does *not* warn
-when this policy is not set and simply uses ``OLD`` behavior.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0099.rst b/share/cmake-3.18/Help/policy/CMP0099.rst
deleted file mode 100644
index c897e7b..0000000
--- a/share/cmake-3.18/Help/policy/CMP0099.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-CMP0099
--------
-
-Target link properties :prop_tgt:`INTERFACE_LINK_OPTIONS`,
-:prop_tgt:`INTERFACE_LINK_DIRECTORIES` and :prop_tgt:`INTERFACE_LINK_DEPENDS`
-are now transitive over private dependencies of static libraries.
-
-In CMake 3.16 and below the interface link properties attached to libraries
-are not propagated for private dependencies of static libraries.
-Only the libraries themselves are propagated to link the dependent binary.
-CMake 3.17 and later prefer to propagate all interface link properties.
-This policy provides compatibility for projects that have not been updated
-to expect the new behavior.
-
-The ``OLD`` behavior for this policy is to not propagate interface link
-properties. The ``NEW`` behavior of this policy is to propagate interface link
-properties.
-
-This policy was introduced in CMake version 3.17.  Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-Unlike many policies, CMake version |release| does *not* warn
-when this policy is not set and simply uses ``OLD`` behavior.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0100.rst b/share/cmake-3.18/Help/policy/CMP0100.rst
deleted file mode 100644
index b24d013..0000000
--- a/share/cmake-3.18/Help/policy/CMP0100.rst
+++ /dev/null
@@ -1,40 +0,0 @@
-CMP0100
--------
-
-Let :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` process
-header files that end with a ``.hh`` extension.
-
-Since version 3.17, CMake processes header files that end with a
-``.hh`` extension in :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
-In earlier CMake versions, these header files were ignored by
-:prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
-
-This policy affects how header files that end with a ``.hh`` extension
-get treated in :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
-
-The ``OLD`` behavior for this policy is to ignore ``.hh`` header files
-in :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
-
-The ``NEW`` behavior for this policy is to process ``.hh`` header files
-in :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` just like other header files.
-
-.. note::
-
-  To silence the ``CMP0100`` warning source files can be excluded from
-  :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` processing by setting the
-  source file properties :prop_sf:`SKIP_AUTOMOC`, :prop_sf:`SKIP_AUTOUIC` or
-  :prop_sf:`SKIP_AUTOGEN`.
-
-  .. code-block:: cmake
-
-    # Source skip example:
-    set_property(SOURCE /path/to/file1.hh PROPERTY SKIP_AUTOMOC ON)
-    set_property(SOURCE /path/to/file2.hh PROPERTY SKIP_AUTOUIC ON)
-    set_property(SOURCE /path/to/file3.hh PROPERTY SKIP_AUTOGEN ON)
-
-This policy was introduced in CMake version 3.17.0.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0101.rst b/share/cmake-3.18/Help/policy/CMP0101.rst
deleted file mode 100644
index 9941acf..0000000
--- a/share/cmake-3.18/Help/policy/CMP0101.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-CMP0101
--------
-
-:command:`target_compile_options` now honors ``BEFORE`` keyword in all scopes.
-
-In CMake 3.16 and below the :command:`target_compile_options` ignores the
-``BEFORE`` keyword in private scope. CMake 3.17 and later honors
-``BEFORE`` keyword in all scopes. This policy provides compatibility for
-projects that have not been updated to expect the new behavior.
-
-The ``OLD`` behavior for this policy is to not honor ``BEFORE`` keyword in
-private scope. The ``NEW`` behavior of this policy is to honor
-``BEFORE`` keyword in all scopes.
-
-This policy was introduced in CMake version 3.17.  Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-Unlike many policies, CMake version |release| does *not* warn
-when this policy is not set and simply uses ``OLD`` behavior.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0102.rst b/share/cmake-3.18/Help/policy/CMP0102.rst
deleted file mode 100644
index 9859006..0000000
--- a/share/cmake-3.18/Help/policy/CMP0102.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-CMP0102
--------
-
-The :command:`mark_as_advanced` command no longer creates a cache entry if one
-does not already exist.
-
-In CMake 3.16 and below, if a variable was not defined at all or just defined
-locally, the :command:`mark_as_advanced` command would create a new cache
-entry with an ``UNINITIALIZED`` type and no value. When a :command:`find_path`
-(or other similar ``find_`` command) would next run, it would find this
-undefined cache entry and set it up with an empty string value. This process
-would end up deleting the local variable in the process (due to the way the
-cache works), effectively clearing any stored ``find_`` results that were only
-available in the local scope.
-
-The ``OLD`` behavior for this policy is to create the empty cache definition.
-The ``NEW`` behavior of this policy is to ignore variables which do not
-already exist in the cache.
-
-This policy was introduced in CMake version 3.17.  Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-Unlike many policies, CMake version |release| does *not* warn
-when this policy is not set and simply uses ``OLD`` behavior.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0103.rst b/share/cmake-3.18/Help/policy/CMP0103.rst
deleted file mode 100644
index 223e0cb..0000000
--- a/share/cmake-3.18/Help/policy/CMP0103.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-CMP0103
--------
-
-Multiple calls to :command:`export` command with same ``FILE`` without
-``APPEND`` is no longer allowed.
-
-In CMake 3.17 and below, multiple calls to :command:`export` command with the
-same ``FILE`` without ``APPEND`` are accepted silently but only the last
-occurrence is taken into account during the generation.
-
-The ``OLD`` behavior for this policy is to ignore the multiple occurrences of
- :command:`export` command except the last one.
-
-The ``NEW`` behavior of this policy is to raise an error on second call to
-:command:`export` command with same ``FILE`` without ``APPEND``.
-
-This policy was introduced in CMake version 3.18.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0104.rst b/share/cmake-3.18/Help/policy/CMP0104.rst
deleted file mode 100644
index 8516716..0000000
--- a/share/cmake-3.18/Help/policy/CMP0104.rst
+++ /dev/null
@@ -1,56 +0,0 @@
-CMP0104
--------
-
-Initialize :variable:`CMAKE_CUDA_ARCHITECTURES` when
-:variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is ``NVIDIA``.
-Raise an error if :prop_tgt:`CUDA_ARCHITECTURES` is empty.
-
-:variable:`CMAKE_CUDA_ARCHITECTURES` introduced in CMake 3.18 is used to
-initialize :prop_tgt:`CUDA_ARCHITECTURES`, which passes correct code generation
-flags to the CUDA compiler.
-
-Previous to this users had to manually specify the code generation flags. This
-policy is for backwards compatibility with manually specifying code generation
-flags.
-
-The ``OLD`` behavior for this policy is to not initialize
-:variable:`CMAKE_CUDA_ARCHITECTURES` when
-:variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is ``NVIDIA``.
-Empty :prop_tgt:`CUDA_ARCHITECTURES` is allowed.
-
-The ``NEW`` behavior of this policy is to initialize
-:variable:`CMAKE_CUDA_ARCHITECTURES` when
-:variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is ``NVIDIA``
-and raise an error if :prop_tgt:`CUDA_ARCHITECTURES` is empty during generation.
-
-If :prop_tgt:`CUDA_ARCHITECTURES` is set to a false value no architectures
-flags are passed to the compiler. This is intended to support packagers and
-the rare cases where full control over the passed flags is required.
-
-This policy was introduced in CMake version 3.18.  CMake version
-|release| warns when the policy is not set and uses ``OLD`` behavior.
-Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
-explicitly.
-
-.. include:: DEPRECATED.txt
-
-Examples
-^^^^^^^^
-
-.. code-block:: cmake
-
-  set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 35 50 72)
-
-Generates code for real and virtual architectures ``30``, ``50`` and ``72``.
-
-.. code-block:: cmake
-
-  set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 70-real 72-virtual)
-
-Generates code for real architecture ``70`` and virtual architecture ``72``.
-
-.. code-block:: cmake
-
-  set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES OFF)
-
-CMake will not pass any architecture flags to the compiler.
diff --git a/share/cmake-3.18/Help/policy/CMP0105.rst b/share/cmake-3.18/Help/policy/CMP0105.rst
deleted file mode 100644
index 19a1edb..0000000
--- a/share/cmake-3.18/Help/policy/CMP0105.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-CMP0105
--------
-
-:prop_tgt:`LINK_OPTIONS` and :prop_tgt:`INTERFACE_LINK_OPTIONS` target
-properties are now used for the device link step.
-
-In CMake 3.17 and below, link options are not used by the device link step.
-
-The ``OLD`` behavior for this policy is to ignore the link options.
-
-The ``NEW`` behavior of this policy is to use the link options during the
-device link step.
-
-This policy was introduced in CMake version 3.17.  Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-Unlike many policies, CMake version |release| does *not* warn
-when this policy is not set and simply uses ``OLD`` behavior.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0106.rst b/share/cmake-3.18/Help/policy/CMP0106.rst
deleted file mode 100644
index e34d15a..0000000
--- a/share/cmake-3.18/Help/policy/CMP0106.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-CMP0106
--------
-
-The :module:`Documentation` module is removed.
-
-The :module:`Documentation` was added as a support mechanism for the VTK
-project and was tuned for that project. Instead of CMake providing this module
-with (now old) VTK patterns for cache variables and required packages, the
-module is now deprecated by CMake itself.
-
-The ``OLD`` behavior of this policy is for :module:`Documentation` to add
-cache variables and find VTK documentation dependent packages. The ``NEW``
-behavior is to act as an empty module.
-
-This policy was introduced in CMake version 3.18.  CMake version |release|
-warns when the policy is not set and uses ``OLD`` behavior. Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0107.rst b/share/cmake-3.18/Help/policy/CMP0107.rst
deleted file mode 100644
index 111bef7..0000000
--- a/share/cmake-3.18/Help/policy/CMP0107.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-CMP0107
--------
-
-It is not allowed to create an ``ALIAS`` target with the same name as an
-another target.
-
-In CMake 3.17 and below, an ``ALIAS`` target can overwrite silently an existing
-target with the same name.
-
-The ``OLD`` behavior for this policy is to allow target overwrite.
-
-The ``NEW`` behavior of this policy is to prevent target overwriting.
-
-This policy was introduced in CMake version 3.17.  Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-Unlike many policies, CMake version |release| does *not* warn
-when this policy is not set and simply uses ``OLD`` behavior.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0108.rst b/share/cmake-3.18/Help/policy/CMP0108.rst
deleted file mode 100644
index 0d54cfa..0000000
--- a/share/cmake-3.18/Help/policy/CMP0108.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-CMP0108
--------
-
-A target is not allowed to link to itself even through an ``ALIAS`` target.
-
-In CMake 3.17 and below, a target can link to a target aliased to itself.
-
-The ``OLD`` behavior for this policy is to allow a target to link to a target
-aliased to itself.
-
-The ``NEW`` behavior of this policy is to prevent a target to link to itself
-through an ``ALIAS`` target.
-
-This policy was introduced in CMake version 3.17.  Use the
-:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-Unlike many policies, CMake version |release| does *not* warn
-when this policy is not set and simply uses ``OLD`` behavior.
-
-.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/prop_dir/ADDITIONAL_CLEAN_FILES.rst b/share/cmake-3.18/Help/prop_dir/ADDITIONAL_CLEAN_FILES.rst
deleted file mode 100644
index 051d22a..0000000
--- a/share/cmake-3.18/Help/prop_dir/ADDITIONAL_CLEAN_FILES.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-ADDITIONAL_CLEAN_FILES
-----------------------
-
-A :ref:`;-list <CMake Language Lists>` of files or directories that will be
-removed as a part of the global ``clean`` target.  It is useful for
-specifying generated files or directories that are used by multiple targets
-or by CMake itself, or that are generated in ways which cannot be captured as
-outputs or byproducts of custom commands.
-
-If an additional clean file is specific to a single target only, then the
-:prop_tgt:`ADDITIONAL_CLEAN_FILES` target property would usually be a better
-choice than this directory property.
-
-Relative paths are allowed and are interpreted relative to the
-current binary directory.
-
-Contents of ``ADDITIONAL_CLEAN_FILES`` may use
-:manual:`generator expressions <cmake-generator-expressions(7)>`.
-
-This property only works for the :generator:`Ninja` and the Makefile
-generators.  It is ignored by other generators.
diff --git a/share/cmake-3.18/Help/prop_dir/BINARY_DIR.rst b/share/cmake-3.18/Help/prop_dir/BINARY_DIR.rst
deleted file mode 100644
index 597c79a..0000000
--- a/share/cmake-3.18/Help/prop_dir/BINARY_DIR.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-BINARY_DIR
-----------
-
-This read-only directory property reports absolute path to the binary
-directory corresponding to the source on which it is read.
diff --git a/share/cmake-3.18/Help/prop_dir/BUILDSYSTEM_TARGETS.rst b/share/cmake-3.18/Help/prop_dir/BUILDSYSTEM_TARGETS.rst
deleted file mode 100644
index 04bb56e..0000000
--- a/share/cmake-3.18/Help/prop_dir/BUILDSYSTEM_TARGETS.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-BUILDSYSTEM_TARGETS
--------------------
-
-This read-only directory property contains a
-:ref:`semicolon-separated list <CMake Language Lists>` of buildsystem targets added in the
-directory by calls to the :command:`add_library`, :command:`add_executable`,
-and :command:`add_custom_target` commands.  The list does not include any
-:ref:`Imported Targets` or :ref:`Alias Targets`, but does include
-:ref:`Interface Libraries`.  Each entry in the list is the logical name
-of a target, suitable to pass to the :command:`get_property` command
-``TARGET`` option.
diff --git a/share/cmake-3.18/Help/prop_dir/LABELS.rst b/share/cmake-3.18/Help/prop_dir/LABELS.rst
deleted file mode 100644
index de27d90..0000000
--- a/share/cmake-3.18/Help/prop_dir/LABELS.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-LABELS
-------
-
-Specify a list of text labels associated with a directory and all of its
-subdirectories. This is equivalent to setting the :prop_tgt:`LABELS` target
-property and the :prop_test:`LABELS` test property on all targets and tests in
-the current directory and subdirectories. Note: Launchers must enabled to
-propagate labels to targets.
-
-The :variable:`CMAKE_DIRECTORY_LABELS` variable can be used to initialize this
-property.
-
-The list is reported in dashboard submissions.
diff --git a/share/cmake-3.18/Help/prop_dir/LINK_OPTIONS.rst b/share/cmake-3.18/Help/prop_dir/LINK_OPTIONS.rst
deleted file mode 100644
index f229ba6..0000000
--- a/share/cmake-3.18/Help/prop_dir/LINK_OPTIONS.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-LINK_OPTIONS
-------------
-
-List of options to use for the link step of shared library, module
-and executable targets as well as the device link step.
-
-This property holds a :ref:`semicolon-separated list <CMake Language Lists>` of options
-given so far to the :command:`add_link_options` command.
-
-This property is used to initialize the :prop_tgt:`LINK_OPTIONS` target
-property when a target is created, which is used by the generators to set
-the options for the compiler.
-
-Contents of ``LINK_OPTIONS`` may use "generator expressions" with the
-syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual
-for available expressions.  See the :manual:`cmake-buildsystem(7)` manual
-for more on defining buildsystem properties.
diff --git a/share/cmake-3.18/Help/prop_dir/SOURCE_DIR.rst b/share/cmake-3.18/Help/prop_dir/SOURCE_DIR.rst
deleted file mode 100644
index ac98c3b..0000000
--- a/share/cmake-3.18/Help/prop_dir/SOURCE_DIR.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-SOURCE_DIR
-----------
-
-This read-only directory property reports absolute path to the source
-directory on which it is read.
diff --git a/share/cmake-3.18/Help/prop_dir/SUBDIRECTORIES.rst b/share/cmake-3.18/Help/prop_dir/SUBDIRECTORIES.rst
deleted file mode 100644
index 6a0ac80..0000000
--- a/share/cmake-3.18/Help/prop_dir/SUBDIRECTORIES.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-SUBDIRECTORIES
---------------
-
-This read-only directory property contains a
-:ref:`semicolon-separated list <CMake Language Lists>` of subdirectories processed so far by
-the :command:`add_subdirectory` or :command:`subdirs` commands.  Each entry is
-the absolute path to the source directory (containing the ``CMakeLists.txt``
-file).  This is suitable to pass to the :command:`get_property` command
-``DIRECTORY`` option.
-
-.. note::
-
-  The :command:`subdirs` command does not process its arguments until
-  after the calling directory is fully processed.  Therefore looking
-  up this property in the current directory will not see them.
diff --git a/share/cmake-3.18/Help/prop_dir/TESTS.rst b/share/cmake-3.18/Help/prop_dir/TESTS.rst
deleted file mode 100644
index 1c9f6e5..0000000
--- a/share/cmake-3.18/Help/prop_dir/TESTS.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-TESTS
------
-
-List of tests.
-
-This read-only property holds a
-:ref:`semicolon-separated list <CMake Language Lists>` of tests
-defined so far, in the current directory, by the :command:`add_test` command.
diff --git a/share/cmake-3.18/Help/prop_dir/TEST_INCLUDE_FILES.rst b/share/cmake-3.18/Help/prop_dir/TEST_INCLUDE_FILES.rst
deleted file mode 100644
index c3e4602..0000000
--- a/share/cmake-3.18/Help/prop_dir/TEST_INCLUDE_FILES.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-TEST_INCLUDE_FILES
-------------------
-
-A list of cmake files that will be included when ctest is run.
-
-If you specify ``TEST_INCLUDE_FILES``, those files will be included and
-processed when ctest is run on the directory.
diff --git a/share/cmake-3.18/Help/prop_dir/VS_STARTUP_PROJECT.rst b/share/cmake-3.18/Help/prop_dir/VS_STARTUP_PROJECT.rst
deleted file mode 100644
index 2680dfa..0000000
--- a/share/cmake-3.18/Help/prop_dir/VS_STARTUP_PROJECT.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-VS_STARTUP_PROJECT
-------------------
-
-Specify the default startup project in a Visual Studio solution.
-
-The :ref:`Visual Studio Generators` create a ``.sln`` file for each directory
-whose ``CMakeLists.txt`` file calls the :command:`project` command.  Set this
-property in the same directory as a :command:`project` command call (e.g. in
-the top-level ``CMakeLists.txt`` file) to specify the default startup project
-for the corresponding solution file.
-
-The property must be set to the name of an existing target.  This
-will cause that project to be listed first in the generated solution
-file causing Visual Studio to make it the startup project if the
-solution has never been opened before.
-
-If this property is not specified, then the ``ALL_BUILD`` project
-will be the default.
diff --git a/share/cmake-3.18/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst b/share/cmake-3.18/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst
deleted file mode 100644
index d294eb1..0000000
--- a/share/cmake-3.18/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-AUTOGEN_SOURCE_GROUP
---------------------
-
-Name of the  :command:`source_group` for :prop_tgt:`AUTOMOC` and
-:prop_tgt:`AUTORCC` generated files.
-
-Files generated by :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTORCC` are not always
-known at configure time and therefore can't be passed to
-:command:`source_group`.
-:prop_gbl:`AUTOGEN_SOURCE_GROUP` an be used instead to generate or select
-a source group for :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTORCC` generated files.
-
-For :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTORCC` specific overrides see
-:prop_gbl:`AUTOMOC_SOURCE_GROUP` and :prop_gbl:`AUTORCC_SOURCE_GROUP`
-respectively.
diff --git a/share/cmake-3.18/Help/prop_gbl/AUTOMOC_SOURCE_GROUP.rst b/share/cmake-3.18/Help/prop_gbl/AUTOMOC_SOURCE_GROUP.rst
deleted file mode 100644
index 2455dc7..0000000
--- a/share/cmake-3.18/Help/prop_gbl/AUTOMOC_SOURCE_GROUP.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-AUTOMOC_SOURCE_GROUP
---------------------
-
-Name of the  :command:`source_group` for :prop_tgt:`AUTOMOC` generated files.
-
-When set this is used instead of :prop_gbl:`AUTOGEN_SOURCE_GROUP` for
-files generated by :prop_tgt:`AUTOMOC`.
diff --git a/share/cmake-3.18/Help/prop_gbl/AUTORCC_SOURCE_GROUP.rst b/share/cmake-3.18/Help/prop_gbl/AUTORCC_SOURCE_GROUP.rst
deleted file mode 100644
index 65ea95b..0000000
--- a/share/cmake-3.18/Help/prop_gbl/AUTORCC_SOURCE_GROUP.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-AUTORCC_SOURCE_GROUP
---------------------
-
-Name of the  :command:`source_group` for :prop_tgt:`AUTORCC` generated files.
-
-When set this is used instead of :prop_gbl:`AUTOGEN_SOURCE_GROUP` for
-files generated by :prop_tgt:`AUTORCC`.
diff --git a/share/cmake-3.18/Help/prop_gbl/CMAKE_CUDA_KNOWN_FEATURES.rst b/share/cmake-3.18/Help/prop_gbl/CMAKE_CUDA_KNOWN_FEATURES.rst
deleted file mode 100644
index 44e37fe..0000000
--- a/share/cmake-3.18/Help/prop_gbl/CMAKE_CUDA_KNOWN_FEATURES.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-CMAKE_CUDA_KNOWN_FEATURES
--------------------------
-
-List of CUDA features known to this version of CMake.
-
-The features listed in this global property may be known to be available to the
-CUDA compiler.  If the feature is available with the C++ compiler, it will
-be listed in the :variable:`CMAKE_CUDA_COMPILE_FEATURES` variable.
-
-The features listed here may be used with the :command:`target_compile_features`
-command.  See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-
-The features known to this version of CMake are:
-
-``cuda_std_03``
-  Compiler mode is at least CUDA/C++ 03.
-
-``cuda_std_11``
-  Compiler mode is at least CUDA/C++ 11.
-
-``cuda_std_14``
-  Compiler mode is at least CUDA/C++ 14.
-
-``cuda_std_17``
-  Compiler mode is at least CUDA/C++ 17.
-
-``cuda_std_20``
-  Compiler mode is at least CUDA/C++ 20.
diff --git a/share/cmake-3.18/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst b/share/cmake-3.18/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst
deleted file mode 100644
index b921c6b..0000000
--- a/share/cmake-3.18/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst
+++ /dev/null
@@ -1,318 +0,0 @@
-CMAKE_CXX_KNOWN_FEATURES
-------------------------
-
-List of C++ features known to this version of CMake.
-
-The features listed in this global property may be known to be available to the
-C++ compiler.  If the feature is available with the C++ compiler, it will
-be listed in the :variable:`CMAKE_CXX_COMPILE_FEATURES` variable.
-
-The features listed here may be used with the :command:`target_compile_features`
-command.  See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-
-The features known to this version of CMake are:
-
-``cxx_std_98``
-  Compiler mode is at least C++ 98.
-
-``cxx_std_11``
-  Compiler mode is at least C++ 11.
-
-``cxx_std_14``
-  Compiler mode is at least C++ 14.
-
-``cxx_std_17``
-  Compiler mode is at least C++ 17.
-
-``cxx_std_20``
-  Compiler mode is at least C++ 20.
-
-``cxx_aggregate_default_initializers``
-  Aggregate default initializers, as defined in N3605_.
-
-  .. _N3605: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3605.html
-
-``cxx_alias_templates``
-  Template aliases, as defined in N2258_.
-
-  .. _N2258: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
-
-``cxx_alignas``
-  Alignment control ``alignas``, as defined in N2341_.
-
-  .. _N2341: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
-
-``cxx_alignof``
-  Alignment control ``alignof``, as defined in N2341_.
-
-  .. _N2341: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
-
-``cxx_attributes``
-  Generic attributes, as defined in N2761_.
-
-  .. _N2761: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf
-
-``cxx_attribute_deprecated``
-  ``[[deprecated]]`` attribute, as defined in N3760_.
-
-  .. _N3760: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3760.html
-
-``cxx_auto_type``
-  Automatic type deduction, as defined in N1984_.
-
-  .. _N1984: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf
-
-``cxx_binary_literals``
-  Binary literals, as defined in N3472_.
-
-  .. _N3472: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3472.pdf
-
-``cxx_constexpr``
-  Constant expressions, as defined in N2235_.
-
-  .. _N2235: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
-
-``cxx_contextual_conversions``
-  Contextual conversions, as defined in N3323_.
-
-  .. _N3323: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3323.pdf
-
-``cxx_decltype_incomplete_return_types``
-  Decltype on incomplete return types, as defined in N3276_.
-
-  .. _N3276 : http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf
-
-``cxx_decltype``
-  Decltype, as defined in N2343_.
-
-  .. _N2343: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf
-
-``cxx_decltype_auto``
-  ``decltype(auto)`` semantics, as defined in N3638_.
-
-  .. _N3638: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3638.html
-
-``cxx_default_function_template_args``
-  Default template arguments for function templates, as defined in DR226_
-
-  .. _DR226: http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226
-
-``cxx_defaulted_functions``
-  Defaulted functions, as defined in N2346_.
-
-  .. _N2346: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
-
-``cxx_defaulted_move_initializers``
-  Defaulted move initializers, as defined in N3053_.
-
-  .. _N3053: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html
-
-``cxx_delegating_constructors``
-  Delegating constructors, as defined in N1986_.
-
-  .. _N1986: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
-
-``cxx_deleted_functions``
-  Deleted functions, as defined in N2346_.
-
-  .. _N2346: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
-
-``cxx_digit_separators``
-  Digit separators, as defined in N3781_.
-
-  .. _N3781: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3781.pdf
-
-``cxx_enum_forward_declarations``
-  Enum forward declarations, as defined in N2764_.
-
-  .. _N2764: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf
-
-``cxx_explicit_conversions``
-  Explicit conversion operators, as defined in N2437_.
-
-  .. _N2437: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
-
-``cxx_extended_friend_declarations``
-  Extended friend declarations, as defined in N1791_.
-
-  .. _N1791: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf
-
-``cxx_extern_templates``
-  Extern templates, as defined in N1987_.
-
-  .. _N1987: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm
-
-``cxx_final``
-  Override control ``final`` keyword, as defined in N2928_, N3206_ and N3272_.
-
-  .. _N2928: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
-  .. _N3206: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm
-  .. _N3272: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm
-
-``cxx_func_identifier``
-  Predefined ``__func__`` identifier, as defined in N2340_.
-
-  .. _N2340: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm
-
-``cxx_generalized_initializers``
-  Initializer lists, as defined in N2672_.
-
-  .. _N2672: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
-
-``cxx_generic_lambdas``
-  Generic lambdas, as defined in N3649_.
-
-  .. _N3649: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3649.html
-
-``cxx_inheriting_constructors``
-  Inheriting constructors, as defined in N2540_.
-
-  .. _N2540: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm
-
-``cxx_inline_namespaces``
-  Inline namespaces, as defined in N2535_.
-
-  .. _N2535: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm
-
-``cxx_lambdas``
-  Lambda functions, as defined in N2927_.
-
-  .. _N2927: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2927.pdf
-
-``cxx_lambda_init_captures``
-  Initialized lambda captures, as defined in N3648_.
-
-  .. _N3648: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3648.html
-
-``cxx_local_type_template_args``
-  Local and unnamed types as template arguments, as defined in N2657_.
-
-  .. _N2657: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm
-
-``cxx_long_long_type``
-  ``long long`` type, as defined in N1811_.
-
-  .. _N1811: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf
-
-``cxx_noexcept``
-  Exception specifications, as defined in N3050_.
-
-  .. _N3050: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html
-
-``cxx_nonstatic_member_init``
-  Non-static data member initialization, as defined in N2756_.
-
-  .. _N2756: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2756.htm
-
-``cxx_nullptr``
-  Null pointer, as defined in N2431_.
-
-  .. _N2431: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf
-
-``cxx_override``
-  Override control ``override`` keyword, as defined in N2928_, N3206_
-  and N3272_.
-
-  .. _N2928: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
-  .. _N3206: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm
-  .. _N3272: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm
-
-``cxx_range_for``
-  Range-based for, as defined in N2930_.
-
-  .. _N2930: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html
-
-``cxx_raw_string_literals``
-  Raw string literals, as defined in N2442_.
-
-  .. _N2442: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
-
-``cxx_reference_qualified_functions``
-  Reference qualified functions, as defined in N2439_.
-
-  .. _N2439: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm
-
-``cxx_relaxed_constexpr``
-  Relaxed constexpr, as defined in N3652_.
-
-  .. _N3652: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3652.html
-
-``cxx_return_type_deduction``
-  Return type deduction on normal functions, as defined in N3386_.
-
-  .. _N3386: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3386.html
-
-``cxx_right_angle_brackets``
-  Right angle bracket parsing, as defined in N1757_.
-
-  .. _N1757: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html
-
-``cxx_rvalue_references``
-  R-value references, as defined in N2118_.
-
-  .. _N2118: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html
-
-``cxx_sizeof_member``
-  Size of non-static data members, as defined in N2253_.
-
-  .. _N2253: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html
-
-``cxx_static_assert``
-  Static assert, as defined in N1720_.
-
-  .. _N1720: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html
-
-``cxx_strong_enums``
-  Strongly typed enums, as defined in N2347_.
-
-  .. _N2347: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf
-
-``cxx_thread_local``
-  Thread-local variables, as defined in N2659_.
-
-  .. _N2659: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm
-
-``cxx_trailing_return_types``
-  Automatic function return type, as defined in N2541_.
-
-  .. _N2541: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm
-
-``cxx_unicode_literals``
-  Unicode string literals, as defined in N2442_.
-
-  .. _N2442: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
-
-``cxx_uniform_initialization``
-  Uniform initialization, as defined in N2640_.
-
-  .. _N2640: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf
-
-``cxx_unrestricted_unions``
-  Unrestricted unions, as defined in N2544_.
-
-  .. _N2544: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf
-
-``cxx_user_literals``
-  User-defined literals, as defined in N2765_.
-
-  .. _N2765: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf
-
-``cxx_variable_templates``
-  Variable templates, as defined in N3651_.
-
-  .. _N3651: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3651.pdf
-
-``cxx_variadic_macros``
-  Variadic macros, as defined in N1653_.
-
-  .. _N1653: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm
-
-``cxx_variadic_templates``
-  Variadic templates, as defined in N2242_.
-
-  .. _N2242: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf
-
-``cxx_template_template_parameters``
-  Template template parameters, as defined in ``ISO/IEC 14882:1998``.
diff --git a/share/cmake-3.18/Help/prop_gbl/CMAKE_C_KNOWN_FEATURES.rst b/share/cmake-3.18/Help/prop_gbl/CMAKE_C_KNOWN_FEATURES.rst
deleted file mode 100644
index e5f896e..0000000
--- a/share/cmake-3.18/Help/prop_gbl/CMAKE_C_KNOWN_FEATURES.rst
+++ /dev/null
@@ -1,35 +0,0 @@
-CMAKE_C_KNOWN_FEATURES
-----------------------
-
-List of C features known to this version of CMake.
-
-The features listed in this global property may be known to be available to the
-C compiler.  If the feature is available with the C compiler, it will
-be listed in the :variable:`CMAKE_C_COMPILE_FEATURES` variable.
-
-The features listed here may be used with the :command:`target_compile_features`
-command.  See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-The features known to this version of CMake are:
-
-``c_std_90``
-  Compiler mode is at least C 90.
-
-``c_std_99``
-  Compiler mode is at least C 99.
-
-``c_std_11``
-  Compiler mode is at least C 11.
-
-``c_function_prototypes``
-  Function prototypes, as defined in ``ISO/IEC 9899:1990``.
-
-``c_restrict``
-  ``restrict`` keyword, as defined in ``ISO/IEC 9899:1999``.
-
-``c_static_assert``
-  Static assert, as defined in ``ISO/IEC 9899:2011``.
-
-``c_variadic_macros``
-  Variadic macros, as defined in ``ISO/IEC 9899:1999``.
diff --git a/share/cmake-3.18/Help/prop_gbl/CMAKE_ROLE.rst b/share/cmake-3.18/Help/prop_gbl/CMAKE_ROLE.rst
deleted file mode 100644
index 27512fa..0000000
--- a/share/cmake-3.18/Help/prop_gbl/CMAKE_ROLE.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-CMAKE_ROLE
-----------
-
-Tells what mode the current running script is in. Could be one of several
-values:
-
-``PROJECT``
-  Running in project mode (processing a ``CMakeLists.txt`` file).
-
-``SCRIPT``
-  Running in ``-P`` script mode.
-
-``FIND_PACKAGE``
-  Running in ``--find-package`` mode.
-
-``CTEST``
-  Running in CTest script mode.
-
-``CPACK``
-  Running in CPack.
diff --git a/share/cmake-3.18/Help/prop_gbl/ECLIPSE_EXTRA_CPROJECT_CONTENTS.rst b/share/cmake-3.18/Help/prop_gbl/ECLIPSE_EXTRA_CPROJECT_CONTENTS.rst
deleted file mode 100644
index 50c41a9..0000000
--- a/share/cmake-3.18/Help/prop_gbl/ECLIPSE_EXTRA_CPROJECT_CONTENTS.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-ECLIPSE_EXTRA_CPROJECT_CONTENTS
--------------------------------
-
-Additional contents to be inserted into the generated Eclipse cproject file.
-
-The cproject file defines the CDT specific information. Some third party IDE's
-are based on Eclipse with the addition of other information specific to that IDE.
-Through this property, it is possible to add this additional contents to
-the generated project.
-It is expected to contain valid XML.
-
-Also see the :prop_gbl:`ECLIPSE_EXTRA_NATURES` property.
diff --git a/share/cmake-3.18/Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst b/share/cmake-3.18/Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst
deleted file mode 100644
index 8396026..0000000
--- a/share/cmake-3.18/Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-FIND_LIBRARY_USE_LIB32_PATHS
-----------------------------
-
-Whether the :command:`find_library` command should automatically search
-``lib32`` directories.
-
-``FIND_LIBRARY_USE_LIB32_PATHS`` is a boolean specifying whether the
-:command:`find_library` command should automatically search the ``lib32``
-variant of directories called ``lib`` in the search path when building 32-bit
-binaries.
-
-See also the :variable:`CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX` variable.
diff --git a/share/cmake-3.18/Help/prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS.rst b/share/cmake-3.18/Help/prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS.rst
deleted file mode 100644
index b87b09b..0000000
--- a/share/cmake-3.18/Help/prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-FIND_LIBRARY_USE_LIBX32_PATHS
------------------------------
-
-Whether the :command:`find_library` command should automatically search
-``libx32`` directories.
-
-``FIND_LIBRARY_USE_LIBX32_PATHS`` is a boolean specifying whether the
-:command:`find_library` command should automatically search the ``libx32``
-variant of directories called ``lib`` in the search path when building
-x32-abi binaries.
-
-See also the :variable:`CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX` variable.
diff --git a/share/cmake-3.18/Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst b/share/cmake-3.18/Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst
deleted file mode 100644
index b8ec8a6..0000000
--- a/share/cmake-3.18/Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-GENERATOR_IS_MULTI_CONFIG
--------------------------
-
-Read-only property that is true on multi-configuration generators.
-
-True when using a multi-configuration generator
-(such as :ref:`Visual Studio Generators` or :generator:`Xcode`).
-Multi-config generators use :variable:`CMAKE_CONFIGURATION_TYPES`
-as the set of configurations and ignore :variable:`CMAKE_BUILD_TYPE`.
diff --git a/share/cmake-3.18/Help/prop_gbl/TARGET_MESSAGES.rst b/share/cmake-3.18/Help/prop_gbl/TARGET_MESSAGES.rst
deleted file mode 100644
index 275b074..0000000
--- a/share/cmake-3.18/Help/prop_gbl/TARGET_MESSAGES.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-TARGET_MESSAGES
----------------
-
-Specify whether to report the completion of each target.
-
-This property specifies whether :ref:`Makefile Generators` should
-add a progress message describing that each target has been completed.
-If the property is not set the default is ``ON``.  Set the property
-to ``OFF`` to disable target completion messages.
-
-This option is intended to reduce build output when little or no
-work needs to be done to bring the build tree up to date.
-
-If a ``CMAKE_TARGET_MESSAGES`` cache entry exists its value
-initializes the value of this property.
-
-Non-Makefile generators currently ignore this property.
-
-See the counterpart property :prop_gbl:`RULE_MESSAGES` to disable
-everything except for target completion messages.
diff --git a/share/cmake-3.18/Help/prop_gbl/XCODE_EMIT_EFFECTIVE_PLATFORM_NAME.rst b/share/cmake-3.18/Help/prop_gbl/XCODE_EMIT_EFFECTIVE_PLATFORM_NAME.rst
deleted file mode 100644
index 9500443..0000000
--- a/share/cmake-3.18/Help/prop_gbl/XCODE_EMIT_EFFECTIVE_PLATFORM_NAME.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-XCODE_EMIT_EFFECTIVE_PLATFORM_NAME
-----------------------------------
-
-Control emission of ``EFFECTIVE_PLATFORM_NAME`` by the :generator:`Xcode`
-generator.
-
-It is required for building the same target with multiple SDKs. A
-common use case is the parallel use of ``iphoneos`` and
-``iphonesimulator`` SDKs.
-
-Three different states possible that control when the :generator:`Xcode`
-generator emits the ``EFFECTIVE_PLATFORM_NAME`` variable:
-
-- If set to ``ON`` it will always be emitted
-- If set to ``OFF`` it will never be emitted
-- If unset (the default) it will only be emitted when the project was
-  configured for an embedded Xcode SDK like iOS, tvOS, watchOS or any
-  of the simulators.
-
-.. note::
-
-  When this behavior is enable for generated Xcode projects, the
-  ``EFFECTIVE_PLATFORM_NAME`` variable will leak into
-  :manual:`Generator expressions <cmake-generator-expressions(7)>`
-  like ``TARGET_FILE`` and will render those mostly unusable.
diff --git a/share/cmake-3.18/Help/prop_inst/CPACK_DESKTOP_SHORTCUTS.rst b/share/cmake-3.18/Help/prop_inst/CPACK_DESKTOP_SHORTCUTS.rst
deleted file mode 100644
index 729ab60..0000000
--- a/share/cmake-3.18/Help/prop_inst/CPACK_DESKTOP_SHORTCUTS.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CPACK_DESKTOP_SHORTCUTS
------------------------
-
-Species a list of shortcut names that should be created on the `Desktop`
-for this file.
-
-The property is currently only supported by the :cpack_gen:`CPack WIX Generator`.
diff --git a/share/cmake-3.18/Help/prop_inst/CPACK_NEVER_OVERWRITE.rst b/share/cmake-3.18/Help/prop_inst/CPACK_NEVER_OVERWRITE.rst
deleted file mode 100644
index 4789e25..0000000
--- a/share/cmake-3.18/Help/prop_inst/CPACK_NEVER_OVERWRITE.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CPACK_NEVER_OVERWRITE
----------------------
-
-Request that this file not be overwritten on install or reinstall.
-
-The property is currently only supported by the :cpack_gen:`CPack WIX Generator`.
diff --git a/share/cmake-3.18/Help/prop_inst/CPACK_PERMANENT.rst b/share/cmake-3.18/Help/prop_inst/CPACK_PERMANENT.rst
deleted file mode 100644
index 985de0d..0000000
--- a/share/cmake-3.18/Help/prop_inst/CPACK_PERMANENT.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CPACK_PERMANENT
----------------
-
-Request that this file not be removed on uninstall.
-
-The property is currently only supported by the :cpack_gen:`CPack WIX Generator`.
diff --git a/share/cmake-3.18/Help/prop_inst/CPACK_STARTUP_SHORTCUTS.rst b/share/cmake-3.18/Help/prop_inst/CPACK_STARTUP_SHORTCUTS.rst
deleted file mode 100644
index d9208b9..0000000
--- a/share/cmake-3.18/Help/prop_inst/CPACK_STARTUP_SHORTCUTS.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CPACK_STARTUP_SHORTCUTS
------------------------
-
-Species a list of shortcut names that should be created in the `Startup` folder
-for this file.
-
-The property is currently only supported by the :cpack_gen:`CPack WIX Generator`.
diff --git a/share/cmake-3.18/Help/prop_inst/CPACK_START_MENU_SHORTCUTS.rst b/share/cmake-3.18/Help/prop_inst/CPACK_START_MENU_SHORTCUTS.rst
deleted file mode 100644
index 092334a..0000000
--- a/share/cmake-3.18/Help/prop_inst/CPACK_START_MENU_SHORTCUTS.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CPACK_START_MENU_SHORTCUTS
---------------------------
-
-Species a list of shortcut names that should be created in the `Start Menu`
-for this file.
-
-The property is currently only supported by the :cpack_gen:`CPack WIX Generator`.
diff --git a/share/cmake-3.18/Help/prop_inst/CPACK_WIX_ACL.rst b/share/cmake-3.18/Help/prop_inst/CPACK_WIX_ACL.rst
deleted file mode 100644
index c88f426..0000000
--- a/share/cmake-3.18/Help/prop_inst/CPACK_WIX_ACL.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-CPACK_WIX_ACL
--------------
-
-Specifies access permissions for files or directories
-installed by a WiX installer.
-
-The property can contain multiple list entries,
-each of which has to match the following format.
-
-::
-
-  <user>[@<domain>]=<permission>[,<permission>]
-
-``<user>`` and ``<domain>`` specify the windows user and domain for which the
-``<Permission>`` element should be generated.
-
-``<permission>`` is any of the YesNoType attributes listed here::
-
- http://wixtoolset.org/documentation/manual/v3/xsd/wix/permission.html
-
-The property is currently only supported by the :cpack_gen:`CPack WIX Generator`.
diff --git a/share/cmake-3.18/Help/prop_sf/COMPILE_FLAGS.rst b/share/cmake-3.18/Help/prop_sf/COMPILE_FLAGS.rst
deleted file mode 100644
index c211b89..0000000
--- a/share/cmake-3.18/Help/prop_sf/COMPILE_FLAGS.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-COMPILE_FLAGS
--------------
-
-Additional flags to be added when compiling this source file.
-
-The ``COMPILE_FLAGS`` property, managed as a string, sets additional compiler
-flags used to build source files.  Use :prop_sf:`COMPILE_DEFINITIONS` to pass
-additional preprocessor definitions.
-
-Contents of ``COMPILE_FLAGS`` may use "generator expressions"
-with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.  However, :generator:`Xcode`
-does not support per-config per-source settings, so expressions
-that depend on the build configuration are not allowed with that
-generator.
-
-.. note::
-
-  This property has been superseded by the :prop_sf:`COMPILE_OPTIONS` property.
diff --git a/share/cmake-3.18/Help/prop_sf/COMPILE_OPTIONS.rst b/share/cmake-3.18/Help/prop_sf/COMPILE_OPTIONS.rst
deleted file mode 100644
index 537dcec..0000000
--- a/share/cmake-3.18/Help/prop_sf/COMPILE_OPTIONS.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-COMPILE_OPTIONS
----------------
-
-List of additional options to pass to the compiler.
-
-This property holds a :ref:`semicolon-separated list <CMake Language Lists>` of options
-and will be added to the list of compile flags when this
-source file builds.
-
-Contents of ``COMPILE_OPTIONS`` may use "generator expressions" with the
-syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual
-for available expressions.  However, :generator:`Xcode`
-does not support per-config per-source settings, so expressions
-that depend on the build configuration are not allowed with that
-generator.
-
-Usage example:
-
-.. code-block:: cmake
-
-  set_source_files_properties(foo.cpp PROPERTIES COMPILE_OPTIONS "-Wno-unused-parameter;-Wno-missing-field-initializer")
-
-Related properties:
-
-* Prefer this property over :prop_sf:`COMPILE_FLAGS`.
-* Use :prop_sf:`COMPILE_DEFINITIONS` to pass additional preprocessor definitions.
-* Use :prop_sf:`INCLUDE_DIRECTORIES` to pass additional include directories.
-
-Related commands:
-
-* :command:`add_compile_options` for directory-wide settings
-* :command:`target_compile_options` for target-specific settings
diff --git a/share/cmake-3.18/Help/prop_sf/Fortran_PREPROCESS.rst b/share/cmake-3.18/Help/prop_sf/Fortran_PREPROCESS.rst
deleted file mode 100644
index 25ea827..0000000
--- a/share/cmake-3.18/Help/prop_sf/Fortran_PREPROCESS.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-Fortran_PREPROCESS
-------------------
-
-Control whether the Fortran source file should be unconditionally preprocessed.
-
-If unset or empty, rely on the compiler to determine whether the file
-should be preprocessed. If explicitly set to ``OFF`` then the file
-does not need to be preprocessed. If explicitly set to ``ON``, then
-the file does need to be preprocessed as part of the compilation step.
-
-When using the :generator:`Ninja` generator, all source files are
-first preprocessed in order to generate module dependency
-information. Setting this property to ``OFF`` will make ``Ninja``
-skip this step.
-
-Consider using the target-wide :prop_tgt:`Fortran_PREPROCESS` property
-if all source files in a target need to be preprocessed.
diff --git a/share/cmake-3.18/Help/prop_sf/GENERATED.rst b/share/cmake-3.18/Help/prop_sf/GENERATED.rst
deleted file mode 100644
index 48ff70c..0000000
--- a/share/cmake-3.18/Help/prop_sf/GENERATED.rst
+++ /dev/null
@@ -1,36 +0,0 @@
-GENERATED
----------
-
-Is this source file generated as part of the build or CMake process.
-
-Tells the internal CMake engine that a source file is generated by an outside
-process such as another build step, or the execution of CMake itself.
-This information is then used to exempt the file from any existence or
-validity checks.
-
-Any file that is
-
-- created by the execution of commands such as
-  :command:`add_custom_command` and :command:`file(GENERATE)`
-- listed as one of the ``BYPRODUCTS`` of an :command:`add_custom_command`
-  or :command:`add_custom_target` command, or
-- created by a CMake ``AUTOGEN`` operation such as :prop_tgt:`AUTOMOC`,
-  :prop_tgt:`AUTORCC`, or :prop_tgt:`AUTOUIC`
-
-will be marked with the ``GENERATED`` property.
-
-When a generated file created as the ``OUTPUT`` of an
-:command:`add_custom_command` command is explicitly listed as a source file
-for any target in the same directory scope (which usually means the same
-``CMakeLists.txt`` file), CMake will automatically create a dependency to
-make sure the file is generated before building that target.
-
-The :ref:`Makefile Generators` will remove ``GENERATED`` files during
-``make clean``.
-
-Generated sources may be hidden in some IDE tools, while in others they might
-be shown. For the special case of sources generated by CMake's :prop_tgt:`AUTOMOC`
-or :prop_tgt:`AUTORCC` functionality, the :prop_gbl:`AUTOGEN_SOURCE_GROUP`,
-:prop_gbl:`AUTOMOC_SOURCE_GROUP` and :prop_gbl:`AUTORCC_SOURCE_GROUP` target
-properties may influence where the generated sources are grouped in the project's
-file lists.
diff --git a/share/cmake-3.18/Help/prop_sf/INCLUDE_DIRECTORIES.rst b/share/cmake-3.18/Help/prop_sf/INCLUDE_DIRECTORIES.rst
deleted file mode 100644
index 23de70e..0000000
--- a/share/cmake-3.18/Help/prop_sf/INCLUDE_DIRECTORIES.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-INCLUDE_DIRECTORIES
--------------------
-
-List of preprocessor include file search directories.
-
-This property holds a :ref:`semicolon-separated list <CMake Language Lists>` of paths
-and will be added to the list of include directories when this
-source file builds. These directories will take precedence over directories
-defined at target level except for :generator:`Xcode` generator due to technical
-limitations.
-
-Relative paths should not be added to this property directly.
-
-Contents of ``INCLUDE_DIRECTORIES`` may use "generator expressions" with
-the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual
-for available expressions.  However, :generator:`Xcode` does not support
-per-config per-source settings, so expressions that depend on the build
-configuration are not allowed with that generator.
diff --git a/share/cmake-3.18/Help/prop_sf/LANGUAGE.rst b/share/cmake-3.18/Help/prop_sf/LANGUAGE.rst
deleted file mode 100644
index 88d438e..0000000
--- a/share/cmake-3.18/Help/prop_sf/LANGUAGE.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-LANGUAGE
---------
-
-What programming language is the file.
-
-A property that can be set to indicate what programming language the
-source file is.  If it is not set the language is determined based on
-the file extension.  Typical values are ``CXX`` (i.e.  C++), ``C``,
-``CSharp``, ``CUDA``, ``Fortran``, and ``ASM``.  Setting this
-property for a file means this file will be compiled.  Do not set this
-for headers or files that should not be compiled.
diff --git a/share/cmake-3.18/Help/prop_sf/SKIP_AUTOGEN.rst b/share/cmake-3.18/Help/prop_sf/SKIP_AUTOGEN.rst
deleted file mode 100644
index f31185a..0000000
--- a/share/cmake-3.18/Help/prop_sf/SKIP_AUTOGEN.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-SKIP_AUTOGEN
-------------
-
-Exclude the source file from :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTOUIC` and
-:prop_tgt:`AUTORCC` processing (for Qt projects).
-
-For finer exclusion control see :prop_sf:`SKIP_AUTOMOC`,
-:prop_sf:`SKIP_AUTOUIC` and :prop_sf:`SKIP_AUTORCC`.
-
-EXAMPLE
-^^^^^^^
-
-.. code-block:: cmake
-
-  # ...
-  set_property(SOURCE file.h PROPERTY SKIP_AUTOGEN ON)
-  # ...
diff --git a/share/cmake-3.18/Help/prop_sf/SKIP_AUTOMOC.rst b/share/cmake-3.18/Help/prop_sf/SKIP_AUTOMOC.rst
deleted file mode 100644
index a929448..0000000
--- a/share/cmake-3.18/Help/prop_sf/SKIP_AUTOMOC.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-SKIP_AUTOMOC
-------------
-
-Exclude the source file from :prop_tgt:`AUTOMOC` processing (for Qt projects).
-
-For broader exclusion control see :prop_sf:`SKIP_AUTOGEN`.
-
-EXAMPLE
-^^^^^^^
-
-.. code-block:: cmake
-
-  # ...
-  set_property(SOURCE file.h PROPERTY SKIP_AUTOMOC ON)
-  # ...
diff --git a/share/cmake-3.18/Help/prop_sf/SKIP_AUTORCC.rst b/share/cmake-3.18/Help/prop_sf/SKIP_AUTORCC.rst
deleted file mode 100644
index bccccfc..0000000
--- a/share/cmake-3.18/Help/prop_sf/SKIP_AUTORCC.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-SKIP_AUTORCC
-------------
-
-Exclude the source file from :prop_tgt:`AUTORCC` processing (for Qt projects).
-
-For broader exclusion control see :prop_sf:`SKIP_AUTOGEN`.
-
-EXAMPLE
-^^^^^^^
-
-.. code-block:: cmake
-
-  # ...
-  set_property(SOURCE file.qrc PROPERTY SKIP_AUTORCC ON)
-  # ...
diff --git a/share/cmake-3.18/Help/prop_sf/SKIP_AUTOUIC.rst b/share/cmake-3.18/Help/prop_sf/SKIP_AUTOUIC.rst
deleted file mode 100644
index 8c962db..0000000
--- a/share/cmake-3.18/Help/prop_sf/SKIP_AUTOUIC.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP_AUTOUIC
-------------
-
-Exclude the source file from :prop_tgt:`AUTOUIC` processing (for Qt projects).
-
-:prop_sf:`SKIP_AUTOUIC` can be set on C++ header and source files and on
-``.ui`` files.
-
-For broader exclusion control see :prop_sf:`SKIP_AUTOGEN`.
-
-EXAMPLE
-^^^^^^^
-
-.. code-block:: cmake
-
-  # ...
-  set_property(SOURCE file.h PROPERTY SKIP_AUTOUIC ON)
-  set_property(SOURCE file.cpp PROPERTY SKIP_AUTOUIC ON)
-  set_property(SOURCE widget.ui PROPERTY SKIP_AUTOUIC ON)
-  # ...
diff --git a/share/cmake-3.18/Help/prop_sf/SKIP_PRECOMPILE_HEADERS.rst b/share/cmake-3.18/Help/prop_sf/SKIP_PRECOMPILE_HEADERS.rst
deleted file mode 100644
index 0031da3..0000000
--- a/share/cmake-3.18/Help/prop_sf/SKIP_PRECOMPILE_HEADERS.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-SKIP_PRECOMPILE_HEADERS
------------------------
-
-Is this source file skipped by :prop_tgt:`PRECOMPILE_HEADERS` feature.
-
-This property helps with build problems that one would run into
-when using the :prop_tgt:`PRECOMPILE_HEADERS` feature.
-
-One example would be the usage of Objective-C (``*.m``) files, and
-Objective-C++ (``*.mm``) files, which lead to compilation failure
-because they are treated (in case of Ninja / Makefile generator)
-as C, and CXX respectively. The precompile headers are not
-compatible between languages.
diff --git a/share/cmake-3.18/Help/prop_sf/SKIP_UNITY_BUILD_INCLUSION.rst b/share/cmake-3.18/Help/prop_sf/SKIP_UNITY_BUILD_INCLUSION.rst
deleted file mode 100644
index 6d1e60d..0000000
--- a/share/cmake-3.18/Help/prop_sf/SKIP_UNITY_BUILD_INCLUSION.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP_UNITY_BUILD_INCLUSION
---------------------------
-
-Setting this property to true ensures the source file will be skipped by
-unity builds when its associated target has its :prop_tgt:`UNITY_BUILD`
-property set to true.  The source file will instead be compiled on its own
-in the same way as it would with unity builds disabled.
-
-This property helps with "ODR (One definition rule)" problems where combining
-a particular source file with others might lead to build errors or other
-unintended side effects.
diff --git a/share/cmake-3.18/Help/prop_sf/Swift_DEPENDENCIES_FILE.rst b/share/cmake-3.18/Help/prop_sf/Swift_DEPENDENCIES_FILE.rst
deleted file mode 100644
index faac2df..0000000
--- a/share/cmake-3.18/Help/prop_sf/Swift_DEPENDENCIES_FILE.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-Swift_DEPENDENCIES_FILE
------------------------
-
-This property sets the path for the Swift dependency file (swiftdeps) for the
-source.  If one is not specified, it will default to ``<OBJECT>.swiftdeps``.
diff --git a/share/cmake-3.18/Help/prop_sf/Swift_DIAGNOSTICS_FILE.rst b/share/cmake-3.18/Help/prop_sf/Swift_DIAGNOSTICS_FILE.rst
deleted file mode 100644
index 5bf5d59..0000000
--- a/share/cmake-3.18/Help/prop_sf/Swift_DIAGNOSTICS_FILE.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-Swift_DIAGNOSTICS_FILE
-----------------------
-
-This property controls where the Swift diagnostics are serialized.
diff --git a/share/cmake-3.18/Help/prop_sf/UNITY_GROUP.rst b/share/cmake-3.18/Help/prop_sf/UNITY_GROUP.rst
deleted file mode 100644
index ec6b0f6..0000000
--- a/share/cmake-3.18/Help/prop_sf/UNITY_GROUP.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-UNITY_GROUP
------------
-
-This property controls which *bucket* the source will be part of when
-the :prop_tgt:`UNITY_BUILD_MODE` is set to ``GROUP``.
diff --git a/share/cmake-3.18/Help/prop_sf/VS_COPY_TO_OUT_DIR.rst b/share/cmake-3.18/Help/prop_sf/VS_COPY_TO_OUT_DIR.rst
deleted file mode 100644
index 16c8d83..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_COPY_TO_OUT_DIR.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-VS_COPY_TO_OUT_DIR
-------------------
-
-Sets the ``<CopyToOutputDirectory>`` tag for a source file in a
-Visual Studio project file. Valid values are ``Never``, ``Always``
-and ``PreserveNewest``.
diff --git a/share/cmake-3.18/Help/prop_sf/VS_CSHARP_tagname.rst b/share/cmake-3.18/Help/prop_sf/VS_CSHARP_tagname.rst
deleted file mode 100644
index 91c4a06..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_CSHARP_tagname.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-VS_CSHARP_<tagname>
--------------------
-
-Visual Studio and CSharp source-file-specific configuration.
-
-Tell the :manual:`Visual Studio generators <cmake-generators(7)>`
-to set the source file tag ``<tagname>``
-to a given value in the generated Visual Studio CSharp
-project. Ignored on other generators and languages. This property
-can be used to define dependencies between source files or set any
-other Visual Studio specific parameters.
-
-Example usage:
-
-.. code-block:: cmake
-
-  set_source_files_property(<filename>
-           PROPERTIES
-           VS_CSHARP_DependentUpon <other file>
-           VS_CSHARP_SubType "Form")
diff --git a/share/cmake-3.18/Help/prop_sf/VS_DEPLOYMENT_CONTENT.rst b/share/cmake-3.18/Help/prop_sf/VS_DEPLOYMENT_CONTENT.rst
deleted file mode 100644
index 6a38478..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_DEPLOYMENT_CONTENT.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-VS_DEPLOYMENT_CONTENT
----------------------
-
-Mark a source file as content for deployment with a Windows Phone or
-Windows Store application when built with a
-:manual:`Visual Studio generators <cmake-generators(7)>`.
-The value must evaluate to either ``1`` or ``0`` and may use
-:manual:`generator expressions <cmake-generator-expressions(7)>`
-to make the choice based on the build configuration.
-The ``.vcxproj`` file entry for the source file will be
-marked either ``DeploymentContent`` or ``ExcludedFromBuild``
-for values ``1`` and ``0``, respectively.
diff --git a/share/cmake-3.18/Help/prop_sf/VS_DEPLOYMENT_LOCATION.rst b/share/cmake-3.18/Help/prop_sf/VS_DEPLOYMENT_LOCATION.rst
deleted file mode 100644
index 2ce22fc..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_DEPLOYMENT_LOCATION.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-VS_DEPLOYMENT_LOCATION
-----------------------
-
-Specifies the deployment location for a content source file with a Windows
-Phone or Windows Store application when built
-with a :manual:`Visual Studio generators <cmake-generators(7)>`.
-This property is only applicable when using :prop_sf:`VS_DEPLOYMENT_CONTENT`.
-The value represent the path relative to the app package and applies to all
-configurations.
diff --git a/share/cmake-3.18/Help/prop_sf/VS_INCLUDE_IN_VSIX.rst b/share/cmake-3.18/Help/prop_sf/VS_INCLUDE_IN_VSIX.rst
deleted file mode 100644
index db470ef..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_INCLUDE_IN_VSIX.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-VS_INCLUDE_IN_VSIX
-------------------
-
-Boolean property to specify if the file should be included within a
-VSIX (Visual Studio Integration Extension) extension package.
-This is needed for development of Visual Studio extensions.
diff --git a/share/cmake-3.18/Help/prop_sf/VS_RESOURCE_GENERATOR.rst b/share/cmake-3.18/Help/prop_sf/VS_RESOURCE_GENERATOR.rst
deleted file mode 100644
index 97e5aac..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_RESOURCE_GENERATOR.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-VS_RESOURCE_GENERATOR
----------------------
-
-This property allows to specify the resource generator to be used
-on this file. It defaults to ``PublicResXFileCodeGenerator`` if
-not set.
-
-This property only applies to C# projects.
diff --git a/share/cmake-3.18/Help/prop_sf/VS_SETTINGS.rst b/share/cmake-3.18/Help/prop_sf/VS_SETTINGS.rst
deleted file mode 100644
index 50034fb..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_SETTINGS.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-VS_SETTINGS
------------
-
-Set any item metadata on a non-built file.
-
-Takes a list of ``Key=Value`` pairs. Tells the Visual Studio generator to set
-``Key`` to ``Value`` as item metadata on the file.
-
-For example:
-
-.. code-block:: cmake
-
-  set_property(SOURCE file.hlsl PROPERTY VS_SETTINGS "Key=Value" "Key2=Value2")
-
-will set ``Key`` to ``Value`` and ``Key2`` to ``Value2`` on the
-``file.hlsl`` item as metadata.
-
-:manual:`Generator expressions <cmake-generator-expressions(7)>` are supported.
diff --git a/share/cmake-3.18/Help/prop_sf/VS_SHADER_DISABLE_OPTIMIZATIONS.rst b/share/cmake-3.18/Help/prop_sf/VS_SHADER_DISABLE_OPTIMIZATIONS.rst
deleted file mode 100644
index 446dd26..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_SHADER_DISABLE_OPTIMIZATIONS.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-VS_SHADER_DISABLE_OPTIMIZATIONS
--------------------------------
-
-Disable compiler optimizations for an ``.hlsl`` source file.  This adds the
-``-Od`` flag to the command line for the FxCompiler tool.  Specify the value
-``true`` for this property to disable compiler optimizations.
diff --git a/share/cmake-3.18/Help/prop_sf/VS_SHADER_ENABLE_DEBUG.rst b/share/cmake-3.18/Help/prop_sf/VS_SHADER_ENABLE_DEBUG.rst
deleted file mode 100644
index c0e60a3..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_SHADER_ENABLE_DEBUG.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-VS_SHADER_ENABLE_DEBUG
-----------------------
-
-Enable debugging information for an ``.hlsl`` source file.  This adds the
-``-Zi`` flag to the command line for the FxCompiler tool.  Specify the value
-``true`` to generate debugging information for the compiled shader.
diff --git a/share/cmake-3.18/Help/prop_sf/VS_SHADER_ENTRYPOINT.rst b/share/cmake-3.18/Help/prop_sf/VS_SHADER_ENTRYPOINT.rst
deleted file mode 100644
index fe3471f..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_SHADER_ENTRYPOINT.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-VS_SHADER_ENTRYPOINT
---------------------
-
-Specifies the name of the entry point for the shader of a ``.hlsl`` source
-file.
diff --git a/share/cmake-3.18/Help/prop_sf/VS_SHADER_FLAGS.rst b/share/cmake-3.18/Help/prop_sf/VS_SHADER_FLAGS.rst
deleted file mode 100644
index 0a53afd..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_SHADER_FLAGS.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-VS_SHADER_FLAGS
----------------
-
-Set additional Visual Studio shader flags of a ``.hlsl`` source file.
diff --git a/share/cmake-3.18/Help/prop_sf/VS_SHADER_MODEL.rst b/share/cmake-3.18/Help/prop_sf/VS_SHADER_MODEL.rst
deleted file mode 100644
index b1cf0df..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_SHADER_MODEL.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-VS_SHADER_MODEL
----------------
-
-Specifies the shader model of a ``.hlsl`` source file. Some shader types can
-only be used with recent shader models
diff --git a/share/cmake-3.18/Help/prop_sf/VS_SHADER_OBJECT_FILE_NAME.rst b/share/cmake-3.18/Help/prop_sf/VS_SHADER_OBJECT_FILE_NAME.rst
deleted file mode 100644
index 093bcc6..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_SHADER_OBJECT_FILE_NAME.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-VS_SHADER_OBJECT_FILE_NAME
---------------------------
-
-Specifies a file name for the compiled shader object file for an ``.hlsl``
-source file.  This adds the ``-Fo`` flag to the command line for the FxCompiler
-tool.
diff --git a/share/cmake-3.18/Help/prop_sf/VS_SHADER_OUTPUT_HEADER_FILE.rst b/share/cmake-3.18/Help/prop_sf/VS_SHADER_OUTPUT_HEADER_FILE.rst
deleted file mode 100644
index e6763d3..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_SHADER_OUTPUT_HEADER_FILE.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-VS_SHADER_OUTPUT_HEADER_FILE
-----------------------------
-
-Set filename for output header file containing object code of a ``.hlsl``
-source file.
diff --git a/share/cmake-3.18/Help/prop_sf/VS_SHADER_TYPE.rst b/share/cmake-3.18/Help/prop_sf/VS_SHADER_TYPE.rst
deleted file mode 100644
index f104837..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_SHADER_TYPE.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-VS_SHADER_TYPE
---------------
-
-Set the Visual Studio shader type of a ``.hlsl`` source file.
diff --git a/share/cmake-3.18/Help/prop_sf/VS_SHADER_VARIABLE_NAME.rst b/share/cmake-3.18/Help/prop_sf/VS_SHADER_VARIABLE_NAME.rst
deleted file mode 100644
index 1a5e369..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_SHADER_VARIABLE_NAME.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-VS_SHADER_VARIABLE_NAME
------------------------
-
-Set name of variable in header file containing object code of a ``.hlsl``
-source file.
diff --git a/share/cmake-3.18/Help/prop_sf/VS_TOOL_OVERRIDE.rst b/share/cmake-3.18/Help/prop_sf/VS_TOOL_OVERRIDE.rst
deleted file mode 100644
index 8bdc5ca..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_TOOL_OVERRIDE.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-VS_TOOL_OVERRIDE
-----------------
-
-Override the default Visual Studio tool that will be applied to the source file
-with a new tool not based on the extension of the file.
diff --git a/share/cmake-3.18/Help/prop_sf/VS_XAML_TYPE.rst b/share/cmake-3.18/Help/prop_sf/VS_XAML_TYPE.rst
deleted file mode 100644
index 1a274ba..0000000
--- a/share/cmake-3.18/Help/prop_sf/VS_XAML_TYPE.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-VS_XAML_TYPE
-------------
-
-Mark a Extensible Application Markup Language (XAML) source file
-as a different type than the default ``Page``.
-The most common usage would be to set the default ``App.xaml`` file as
-``ApplicationDefinition``.
diff --git a/share/cmake-3.18/Help/prop_sf/XCODE_EXPLICIT_FILE_TYPE.rst b/share/cmake-3.18/Help/prop_sf/XCODE_EXPLICIT_FILE_TYPE.rst
deleted file mode 100644
index b8cf946..0000000
--- a/share/cmake-3.18/Help/prop_sf/XCODE_EXPLICIT_FILE_TYPE.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-XCODE_EXPLICIT_FILE_TYPE
-------------------------
-
-Set the :generator:`Xcode` ``explicitFileType`` attribute on its reference to a
-source file.  CMake computes a default based on file extension but
-can be told explicitly with this property.
-
-See also :prop_sf:`XCODE_LAST_KNOWN_FILE_TYPE`.
diff --git a/share/cmake-3.18/Help/prop_sf/XCODE_FILE_ATTRIBUTES.rst b/share/cmake-3.18/Help/prop_sf/XCODE_FILE_ATTRIBUTES.rst
deleted file mode 100644
index 4c93f44..0000000
--- a/share/cmake-3.18/Help/prop_sf/XCODE_FILE_ATTRIBUTES.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-XCODE_FILE_ATTRIBUTES
----------------------
-
-Add values to the :generator:`Xcode` ``ATTRIBUTES`` setting on its reference to a
-source file.  Among other things, this can be used to set the role on
-a ``.mig`` file::
-
-  set_source_files_properties(defs.mig
-      PROPERTIES
-          XCODE_FILE_ATTRIBUTES "Client;Server"
-  )
diff --git a/share/cmake-3.18/Help/prop_sf/XCODE_LAST_KNOWN_FILE_TYPE.rst b/share/cmake-3.18/Help/prop_sf/XCODE_LAST_KNOWN_FILE_TYPE.rst
deleted file mode 100644
index b21891f..0000000
--- a/share/cmake-3.18/Help/prop_sf/XCODE_LAST_KNOWN_FILE_TYPE.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-XCODE_LAST_KNOWN_FILE_TYPE
---------------------------
-
-Set the :generator:`Xcode` ``lastKnownFileType`` attribute on its reference to
-a source file.  CMake computes a default based on file extension but
-can be told explicitly with this property.
-
-See also :prop_sf:`XCODE_EXPLICIT_FILE_TYPE`, which is preferred
-over this property if set.
diff --git a/share/cmake-3.18/Help/prop_test/DISABLED.rst b/share/cmake-3.18/Help/prop_test/DISABLED.rst
deleted file mode 100644
index 1d469e8..0000000
--- a/share/cmake-3.18/Help/prop_test/DISABLED.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-DISABLED
---------
-
-If set to ``True``, the test will be skipped and its status will be 'Not Run'. A
-``DISABLED`` test will not be counted in the total number of tests and its
-completion status will be reported to CDash as ``Disabled``.
-
-A ``DISABLED`` test does not participate in test fixture dependency resolution.
-If a ``DISABLED`` test has fixture requirements defined in its
-:prop_test:`FIXTURES_REQUIRED` property, it will not cause setup or cleanup
-tests for those fixtures to be added to the test set.
-
-If a test with the :prop_test:`FIXTURES_SETUP` property set is ``DISABLED``,
-the fixture behavior will be as though that setup test was passing and any test
-case requiring that fixture will still run.
diff --git a/share/cmake-3.18/Help/prop_test/ENVIRONMENT.rst b/share/cmake-3.18/Help/prop_test/ENVIRONMENT.rst
deleted file mode 100644
index 102c792..0000000
--- a/share/cmake-3.18/Help/prop_test/ENVIRONMENT.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-ENVIRONMENT
------------
-
-Specify environment variables that should be defined for running a test.
-
-If set to a list of environment variables and values of the form
-``MYVAR=value`` those environment variables will be defined while running
-the test.  The environment is restored to its previous state after the
-test is done.
diff --git a/share/cmake-3.18/Help/prop_test/FAIL_REGULAR_EXPRESSION.rst b/share/cmake-3.18/Help/prop_test/FAIL_REGULAR_EXPRESSION.rst
deleted file mode 100644
index facf902..0000000
--- a/share/cmake-3.18/Help/prop_test/FAIL_REGULAR_EXPRESSION.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-FAIL_REGULAR_EXPRESSION
------------------------
-
-If the output matches this regular expression the test will fail.
-
-If set, if the output matches one of specified regular expressions,
-the test will fail.  Example:
-
-.. code-block:: cmake
-
-  set_tests_properties(mytest PROPERTIES
-    FAIL_REGULAR_EXPRESSION "[^a-z]Error;ERROR;Failed"
-  )
-
-``FAIL_REGULAR_EXPRESSION`` expects a list of regular expressions.
diff --git a/share/cmake-3.18/Help/prop_test/FIXTURES_CLEANUP.rst b/share/cmake-3.18/Help/prop_test/FIXTURES_CLEANUP.rst
deleted file mode 100644
index 3075b4d..0000000
--- a/share/cmake-3.18/Help/prop_test/FIXTURES_CLEANUP.rst
+++ /dev/null
@@ -1,47 +0,0 @@
-FIXTURES_CLEANUP
-----------------
-
-Specifies a list of fixtures for which the test is to be treated as a cleanup
-test. These fixture names are distinct from test case names and are not
-required to have any similarity to the names of tests associated with them.
-
-Fixture cleanup tests are ordinary tests with all of the usual test
-functionality. Setting the ``FIXTURES_CLEANUP`` property for a test has two
-primary effects:
-
-- CTest will ensure the test executes after all other tests which list any of
-  the fixtures in its :prop_test:`FIXTURES_REQUIRED` property.
-
-- If CTest is asked to run only a subset of tests (e.g. using regular
-  expressions or the ``--rerun-failed`` option) and the cleanup test is not in
-  the set of tests to run, it will automatically be added if any tests in the
-  set require any fixture listed in ``FIXTURES_CLEANUP``.
-
-A cleanup test can have multiple fixtures listed in its ``FIXTURES_CLEANUP``
-property. It will execute only once for the whole CTest run, not once for each
-fixture. A fixture can also have more than one cleanup test defined. If there
-are multiple cleanup tests for a fixture, projects can control their order with
-the usual :prop_test:`DEPENDS` test property if necessary.
-
-A cleanup test is allowed to require other fixtures, but not any fixture listed
-in its ``FIXTURES_CLEANUP`` property. For example:
-
-.. code-block:: cmake
-
-  # Ok: Dependent fixture is different to cleanup
-  set_tests_properties(cleanupFoo PROPERTIES
-    FIXTURES_CLEANUP  Foo
-    FIXTURES_REQUIRED Bar
-  )
-
-  # Error: cannot require same fixture as cleanup
-  set_tests_properties(cleanupFoo PROPERTIES
-    FIXTURES_CLEANUP  Foo
-    FIXTURES_REQUIRED Foo
-  )
-
-Cleanup tests will execute even if setup or regular tests for that fixture fail
-or are skipped.
-
-See :prop_test:`FIXTURES_REQUIRED` for a more complete discussion of how to use
-test fixtures.
diff --git a/share/cmake-3.18/Help/prop_test/FIXTURES_REQUIRED.rst b/share/cmake-3.18/Help/prop_test/FIXTURES_REQUIRED.rst
deleted file mode 100644
index e3f60c4..0000000
--- a/share/cmake-3.18/Help/prop_test/FIXTURES_REQUIRED.rst
+++ /dev/null
@@ -1,96 +0,0 @@
-FIXTURES_REQUIRED
------------------
-
-Specifies a list of fixtures the test requires. Fixture names are case
-sensitive and they are not required to have any similarity to test names.
-
-Fixtures are a way to attach setup and cleanup tasks to a set of tests. If a
-test requires a given fixture, then all tests marked as setup tasks for that
-fixture will be executed first (once for the whole set of tests, not once per
-test requiring the fixture). After all tests requiring a particular fixture
-have completed, CTest will ensure all tests marked as cleanup tasks for that
-fixture are then executed. Tests are marked as setup tasks with the
-:prop_test:`FIXTURES_SETUP` property and as cleanup tasks with the
-:prop_test:`FIXTURES_CLEANUP` property. If any of a fixture's setup tests fail,
-all tests listing that fixture in their ``FIXTURES_REQUIRED`` property will not
-be executed. The cleanup tests for the fixture will always be executed, even if
-some setup tests fail.
-
-When CTest is asked to execute only a subset of tests (e.g. by the use of
-regular expressions or when run with the ``--rerun-failed`` command line
-option), it will automatically add any setup or cleanup tests for fixtures
-required by any of the tests that are in the execution set. This behavior can
-be overridden with the ``-FS``, ``-FC`` and ``-FA`` command line options to
-:manual:`ctest(1)` if desired.
-
-Since setup and cleanup tasks are also tests, they can have an ordering
-specified by the :prop_test:`DEPENDS` test property just like any other tests.
-This can be exploited to implement setup or cleanup using multiple tests for a
-single fixture to modularise setup or cleanup logic.
-
-The concept of a fixture is different to that of a resource specified by
-:prop_test:`RESOURCE_LOCK`, but they may be used together. A fixture defines a
-set of tests which share setup and cleanup requirements, whereas a resource
-lock has the effect of ensuring a particular set of tests do not run in
-parallel. Some situations may need both, such as setting up a database,
-serialising test access to that database and deleting the database again at the
-end. For such cases, tests would populate both ``FIXTURES_REQUIRED`` and
-:prop_test:`RESOURCE_LOCK` to combine the two behaviours. Names used for
-:prop_test:`RESOURCE_LOCK` have no relationship with names of fixtures, so note
-that a resource lock does not imply a fixture and vice versa.
-
-Consider the following example which represents a database test scenario
-similar to that mentioned above:
-
-.. code-block:: cmake
-
-  add_test(NAME testsDone   COMMAND emailResults)
-  add_test(NAME fooOnly     COMMAND testFoo)
-  add_test(NAME dbOnly      COMMAND testDb)
-  add_test(NAME dbWithFoo   COMMAND testDbWithFoo)
-  add_test(NAME createDB    COMMAND initDB)
-  add_test(NAME setupUsers  COMMAND userCreation)
-  add_test(NAME cleanupDB   COMMAND deleteDB)
-  add_test(NAME cleanupFoo  COMMAND removeFoos)
-
-  set_tests_properties(setupUsers PROPERTIES DEPENDS createDB)
-
-  set_tests_properties(createDB   PROPERTIES FIXTURES_SETUP    DB)
-  set_tests_properties(setupUsers PROPERTIES FIXTURES_SETUP    DB)
-  set_tests_properties(cleanupDB  PROPERTIES FIXTURES_CLEANUP  DB)
-  set_tests_properties(cleanupFoo PROPERTIES FIXTURES_CLEANUP  Foo)
-  set_tests_properties(testsDone  PROPERTIES FIXTURES_CLEANUP  "DB;Foo")
-
-  set_tests_properties(fooOnly    PROPERTIES FIXTURES_REQUIRED Foo)
-  set_tests_properties(dbOnly     PROPERTIES FIXTURES_REQUIRED DB)
-  set_tests_properties(dbWithFoo  PROPERTIES FIXTURES_REQUIRED "DB;Foo")
-
-  set_tests_properties(dbOnly dbWithFoo createDB setupUsers cleanupDB
-                       PROPERTIES RESOURCE_LOCK DbAccess)
-
-Key points from this example:
-
-- Two fixtures are defined: ``DB`` and ``Foo``. Tests can require a single
-  fixture as ``fooOnly`` and ``dbOnly`` do, or they can depend on multiple
-  fixtures like ``dbWithFoo`` does.
-
-- A ``DEPENDS`` relationship is set up to ensure ``setupUsers`` happens after
-  ``createDB``, both of which are setup tests for the ``DB`` fixture and will
-  therefore be executed before the ``dbOnly`` and ``dbWithFoo`` tests
-  automatically.
-
-- No explicit ``DEPENDS`` relationships were needed to make the setup tests run
-  before or the cleanup tests run after the regular tests.
-
-- The ``Foo`` fixture has no setup tests defined, only a single cleanup test.
-
-- ``testsDone`` is a cleanup test for both the ``DB`` and ``Foo`` fixtures.
-  Therefore, it will only execute once regular tests for both fixtures have
-  finished (i.e. after ``fooOnly``, ``dbOnly`` and ``dbWithFoo``). No
-  ``DEPENDS`` relationship was specified for ``testsDone``, so it is free to
-  run before, after or concurrently with other cleanup tests for either
-  fixture.
-
-- The setup and cleanup tests never list the fixtures they are for in their own
-  ``FIXTURES_REQUIRED`` property, as that would result in a dependency on
-  themselves and be considered an error.
diff --git a/share/cmake-3.18/Help/prop_test/FIXTURES_SETUP.rst b/share/cmake-3.18/Help/prop_test/FIXTURES_SETUP.rst
deleted file mode 100644
index fdb21cc..0000000
--- a/share/cmake-3.18/Help/prop_test/FIXTURES_SETUP.rst
+++ /dev/null
@@ -1,48 +0,0 @@
-FIXTURES_SETUP
---------------
-
-Specifies a list of fixtures for which the test is to be treated as a setup
-test. These fixture names are distinct from test case names and are not
-required to have any similarity to the names of tests associated with them.
-
-Fixture setup tests are ordinary tests with all of the usual test
-functionality. Setting the ``FIXTURES_SETUP`` property for a test has two
-primary effects:
-
-- CTest will ensure the test executes before any other test which lists the
-  fixture name(s) in its :prop_test:`FIXTURES_REQUIRED` property.
-
-- If CTest is asked to run only a subset of tests (e.g. using regular
-  expressions or the ``--rerun-failed`` option) and the setup test is not in
-  the set of tests to run, it will automatically be added if any tests in the
-  set require any fixture listed in ``FIXTURES_SETUP``.
-
-A setup test can have multiple fixtures listed in its ``FIXTURES_SETUP``
-property. It will execute only once for the whole CTest run, not once for each
-fixture. A fixture can also have more than one setup test defined. If there are
-multiple setup tests for a fixture, projects can control their order with the
-usual :prop_test:`DEPENDS` test property if necessary.
-
-A setup test is allowed to require other fixtures, but not any fixture listed
-in its ``FIXTURES_SETUP`` property. For example:
-
-.. code-block:: cmake
-
-  # Ok: dependent fixture is different to setup
-  set_tests_properties(setupFoo PROPERTIES
-    FIXTURES_SETUP    Foo
-    FIXTURES_REQUIRED Bar
-  )
-
-  # Error: cannot require same fixture as setup
-  set_tests_properties(setupFoo PROPERTIES
-    FIXTURES_SETUP    Foo
-    FIXTURES_REQUIRED Foo
-  )
-
-If any of a fixture's setup tests fail, none of the tests listing that fixture
-in its :prop_test:`FIXTURES_REQUIRED` property will be run. Cleanup tests will,
-however, still be executed.
-
-See :prop_test:`FIXTURES_REQUIRED` for a more complete discussion of how to use
-test fixtures.
diff --git a/share/cmake-3.18/Help/prop_test/LABELS.rst b/share/cmake-3.18/Help/prop_test/LABELS.rst
deleted file mode 100644
index 8d75570..0000000
--- a/share/cmake-3.18/Help/prop_test/LABELS.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-LABELS
-------
-
-Specify a list of text labels associated with a test.
-
-The list is reported in dashboard submissions.
diff --git a/share/cmake-3.18/Help/prop_test/PASS_REGULAR_EXPRESSION.rst b/share/cmake-3.18/Help/prop_test/PASS_REGULAR_EXPRESSION.rst
deleted file mode 100644
index 0cd6215..0000000
--- a/share/cmake-3.18/Help/prop_test/PASS_REGULAR_EXPRESSION.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-PASS_REGULAR_EXPRESSION
------------------------
-
-The output must match this regular expression for the test to pass.
-
-If set, the test output will be checked against the specified regular
-expressions and at least one of the regular expressions has to match,
-otherwise the test will fail.  Example:
-
-.. code-block:: cmake
-
-  set_tests_properties(mytest PROPERTIES
-    PASS_REGULAR_EXPRESSION "TestPassed;All ok"
-  )
-
-``PASS_REGULAR_EXPRESSION`` expects a list of regular expressions.
diff --git a/share/cmake-3.18/Help/prop_test/PROCESSOR_AFFINITY.rst b/share/cmake-3.18/Help/prop_test/PROCESSOR_AFFINITY.rst
deleted file mode 100644
index 38ec179..0000000
--- a/share/cmake-3.18/Help/prop_test/PROCESSOR_AFFINITY.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-PROCESSOR_AFFINITY
-------------------
-
-Set to a true value to ask CTest to launch the test process with CPU affinity
-for a fixed set of processors.  If enabled and supported for the current
-platform, CTest will choose a set of processors to place in the CPU affinity
-mask when launching the test process.  The number of processors in the set is
-determined by the :prop_test:`PROCESSORS` test property or the number of
-processors available to CTest, whichever is smaller.  The set of processors
-chosen will be disjoint from the processors assigned to other concurrently
-running tests that also have the ``PROCESSOR_AFFINITY`` property enabled.
diff --git a/share/cmake-3.18/Help/prop_test/RESOURCE_GROUPS.rst b/share/cmake-3.18/Help/prop_test/RESOURCE_GROUPS.rst
deleted file mode 100644
index 63c56ce..0000000
--- a/share/cmake-3.18/Help/prop_test/RESOURCE_GROUPS.rst
+++ /dev/null
@@ -1,70 +0,0 @@
-RESOURCE_GROUPS
----------------
-
-Specify resources required by a test, grouped in a way that is meaningful to
-the test.  See :ref:`resource allocation <ctest-resource-allocation>`
-for more information on how this property integrates into the CTest resource
-allocation feature.
-
-The ``RESOURCE_GROUPS`` property is a :ref:`semicolon-separated list <CMake
-Language Lists>` of group descriptions. Each entry consists of an optional
-number of groups using the description followed by a series of resource
-requirements for those groups. These requirements (and the number of groups)
-are separated by commas. The resource requirements consist of the name of a
-resource type, followed by a colon, followed by an unsigned integer
-specifying the number of slots required on one resource of the given type.
-
-The ``RESOURCE_GROUPS`` property tells CTest what resources a test expects
-to use grouped in a way meaningful to the test.  The test itself must read
-the :ref:`environment variables <ctest-resource-environment-variables>` to
-determine which resources have been allocated to each group.  For example,
-each group may correspond to a process the test will spawn when executed.
-
-Consider the following example:
-
-.. code-block:: cmake
-
-  add_test(NAME MyTest COMMAND MyExe)
-  set_property(TEST MyTest PROPERTY RESOURCE_GROUPS
-    "2,gpus:2"
-    "gpus:4,crypto_chips:2")
-
-In this example, there are two group descriptions (implicitly separated by a
-semicolon.) The content of the first description is ``2,gpus:2``. This
-description specifies 2 groups, each of which requires 2 slots from a single
-GPU. The content of the second description is ``gpus:4,crypto_chips:2``. This
-description does not specify a group count, so a default of 1 is assumed.
-This single group requires 4 slots from a single GPU and 2 slots from a
-single cryptography chip. In total, 3 resource groups are specified for this
-test, each with its own unique requirements.
-
-Note that the number of slots following the resource type specifies slots from
-a *single* instance of the resource. If the resource group can tolerate
-receiving slots from different instances of the same resource, it can indicate
-this by splitting the specification into multiple requirements of one slot. For
-example:
-
-.. code-block:: cmake
-
-  add_test(NAME MyTest COMMAND MyExe)
-  set_property(TEST MyTest PROPERTY RESOURCE_GROUPS
-    "gpus:1,gpus:1,gpus:1,gpus:1")
-
-In this case, the single resource group indicates that it needs four GPU slots,
-all of which may come from separate GPUs (though they don't have to; CTest may
-still assign slots from the same GPU.)
-
-When CTest sets the :ref:`environment variables
-<ctest-resource-environment-variables>` for a test, it assigns a group number
-based on the group description, starting at 0 on the left and the number of
-groups minus 1 on the right. For example, in the example above, the two
-groups in the first description would have IDs of 0 and 1, and the single
-group in the second description would have an ID of 2.
-
-Both the ``RESOURCE_GROUPS`` and :prop_test:`RESOURCE_LOCK` properties serve
-similar purposes, but they are distinct and orthogonal. Resources specified by
-``RESOURCE_GROUPS`` do not affect :prop_test:`RESOURCE_LOCK`, and vice versa.
-Whereas :prop_test:`RESOURCE_LOCK` is a simpler property that is used for
-locking one global resource, ``RESOURCE_GROUPS`` is a more advanced property
-that allows multiple tests to simultaneously use multiple resources of the
-same type, specifying their requirements in a fine-grained manner.
diff --git a/share/cmake-3.18/Help/prop_test/SKIP_REGULAR_EXPRESSION.rst b/share/cmake-3.18/Help/prop_test/SKIP_REGULAR_EXPRESSION.rst
deleted file mode 100644
index 2c6d980..0000000
--- a/share/cmake-3.18/Help/prop_test/SKIP_REGULAR_EXPRESSION.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-SKIP_REGULAR_EXPRESSION
------------------------
-
-If the output matches this regular expression the test will be marked as skipped.
-
-If set, if the output matches one of specified regular expressions,
-the test will be marked as skipped.  Example:
-
-.. code-block:: cmake
-
-  set_property(TEST mytest PROPERTY
-    SKIP_REGULAR_EXPRESSION "[^a-z]Skip" "SKIP" "Skipped"
-  )
-
-``SKIP_REGULAR_EXPRESSION`` expects a list of regular expressions.
-
-See also the :prop_test:`SKIP_RETURN_CODE` property.
diff --git a/share/cmake-3.18/Help/prop_test/TIMEOUT_AFTER_MATCH.rst b/share/cmake-3.18/Help/prop_test/TIMEOUT_AFTER_MATCH.rst
deleted file mode 100644
index d607992..0000000
--- a/share/cmake-3.18/Help/prop_test/TIMEOUT_AFTER_MATCH.rst
+++ /dev/null
@@ -1,39 +0,0 @@
-TIMEOUT_AFTER_MATCH
--------------------
-
-Change a test's timeout duration after a matching line is encountered
-in its output.
-
-Usage
-^^^^^
-
-.. code-block:: cmake
-
- add_test(mytest ...)
- set_property(TEST mytest PROPERTY TIMEOUT_AFTER_MATCH "${seconds}" "${regex}")
-
-Description
-^^^^^^^^^^^
-
-Allow a test ``seconds`` to complete after ``regex`` is encountered in
-its output.
-
-When the test outputs a line that matches ``regex`` its start time is
-reset to the current time and its timeout duration is changed to
-``seconds``.  Prior to this, the timeout duration is determined by the
-:prop_test:`TIMEOUT` property or the :variable:`CTEST_TEST_TIMEOUT`
-variable if either of these are set.  Because the test's start time is
-reset, its execution time will not include any time that was spent
-waiting for the matching output.
-
-:prop_test:`TIMEOUT_AFTER_MATCH` is useful for avoiding spurious
-timeouts when your test must wait for some system resource to become
-available before it can execute.  Set :prop_test:`TIMEOUT` to a longer
-duration that accounts for resource acquisition and use
-:prop_test:`TIMEOUT_AFTER_MATCH` to control how long the actual test
-is allowed to run.
-
-If the required resource can be controlled by CTest you should use
-:prop_test:`RESOURCE_LOCK` instead of :prop_test:`TIMEOUT_AFTER_MATCH`.
-This property should be used when only the test itself can determine
-when its required resources are available.
diff --git a/share/cmake-3.18/Help/prop_tgt/ADDITIONAL_CLEAN_FILES.rst b/share/cmake-3.18/Help/prop_tgt/ADDITIONAL_CLEAN_FILES.rst
deleted file mode 100644
index 3b9d965..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ADDITIONAL_CLEAN_FILES.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-ADDITIONAL_CLEAN_FILES
-----------------------
-
-A :ref:`;-list <CMake Language Lists>` of files or directories that will be
-removed as a part of the global ``clean`` target.  It can be used to specify
-files and directories that are generated as part of building the target or
-that are directly associated with the target in some way (e.g. created as a
-result of running the target).
-
-For custom targets, if such files can be captured as outputs or byproducts
-instead, then that should be preferred over adding them to this property.
-If an additional clean file is used by multiple targets or isn't
-target-specific, then the :prop_dir:`ADDITIONAL_CLEAN_FILES` directory
-property may be the more appropriate property to use.
-
-Relative paths are allowed and are interpreted relative to the
-current binary directory.
-
-Contents of ``ADDITIONAL_CLEAN_FILES`` may use
-:manual:`generator expressions <cmake-generator-expressions(7)>`.
-
-This property only works for the :generator:`Ninja` and the Makefile
-generators.  It is ignored by other generators.
diff --git a/share/cmake-3.18/Help/prop_tgt/AIX_EXPORT_ALL_SYMBOLS.rst b/share/cmake-3.18/Help/prop_tgt/AIX_EXPORT_ALL_SYMBOLS.rst
deleted file mode 100644
index 15ddc0b..0000000
--- a/share/cmake-3.18/Help/prop_tgt/AIX_EXPORT_ALL_SYMBOLS.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-AIX_EXPORT_ALL_SYMBOLS
-----------------------
-
-On AIX, CMake automatically exports all symbols from shared libraries, and
-from executables with the :prop_tgt:`ENABLE_EXPORTS` target property set.
-Explicitly disable this boolean property to suppress the behavior and
-export no symbols by default.  In this case it is expected that the project
-will use other means to export some symbols.
-
-This property is initialized by the value of
-the :variable:`CMAKE_AIX_EXPORT_ALL_SYMBOLS` variable if it is set
-when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/ALIAS_GLOBAL.rst b/share/cmake-3.18/Help/prop_tgt/ALIAS_GLOBAL.rst
deleted file mode 100644
index 8854f57..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ALIAS_GLOBAL.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-ALIAS_GLOBAL
-------------
-
-Read-only property indicating of whether an :ref:`ALIAS target <Alias Targets>`
-is globally visible.
-
-The boolean value of this property is ``TRUE`` for aliases to
-:ref:`IMPORTED targets <Imported Targets>` created
-with the ``GLOBAL`` options to :command:`add_executable()` or
-:command:`add_library()`, ``FALSE`` otherwise. It is undefined for
-targets built within the project.
-
-.. note::
-
-  Promoting an :ref:`IMPORTED target <Imported Targets>` from ``LOCAL``
-  to ``GLOBAL`` scope by changing the value or :prop_tgt:`IMPORTED_GLOBAL`
-  target property do not change the scope of local aliases.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_ANT_ADDITIONAL_OPTIONS.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_ANT_ADDITIONAL_OPTIONS.rst
deleted file mode 100644
index af6b405..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_ANT_ADDITIONAL_OPTIONS.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-ANDROID_ANT_ADDITIONAL_OPTIONS
-------------------------------
-
-Set the additional options for Android Ant build system. This is
-a string value containing all command line options for the Ant build.
-This property is initialized by the value of the
-:variable:`CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS` variable if it is
-set when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_API.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_API.rst
deleted file mode 100644
index 63464d7..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_API.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-ANDROID_API
------------
-
-When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
-Edition`, this property sets the Android target API version (e.g. ``15``).
-The version number must be a positive decimal integer.  This property is
-initialized by the value of the :variable:`CMAKE_ANDROID_API` variable if
-it is set when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_API_MIN.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_API_MIN.rst
deleted file mode 100644
index 773ab3f..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_API_MIN.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-ANDROID_API_MIN
----------------
-
-Set the Android MIN API version (e.g. ``9``).  The version number
-must be a positive decimal integer.  This property is initialized by
-the value of the :variable:`CMAKE_ANDROID_API_MIN` variable if it is set
-when a target is created.  Native code builds using this API version.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_ARCH.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_ARCH.rst
deleted file mode 100644
index 3e07e5a..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_ARCH.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-ANDROID_ARCH
-------------
-
-When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
-Edition`, this property sets the Android target architecture.
-
-This is a string property that could be set to the one of
-the following values:
-
-* ``armv7-a``: "ARMv7-A (armv7-a)"
-* ``armv7-a-hard``: "ARMv7-A, hard-float ABI (armv7-a)"
-* ``arm64-v8a``: "ARMv8-A, 64bit (arm64-v8a)"
-* ``x86``: "x86 (x86)"
-* ``x86_64``: "x86_64 (x86_64)"
-
-This property is initialized by the value of the
-:variable:`CMAKE_ANDROID_ARCH` variable if it is set
-when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_ASSETS_DIRECTORIES.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_ASSETS_DIRECTORIES.rst
deleted file mode 100644
index 764a582..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_ASSETS_DIRECTORIES.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-ANDROID_ASSETS_DIRECTORIES
---------------------------
-
-Set the Android assets directories to copy into the main assets
-folder before build. This a string property that contains the
-directory paths separated by semicolon.
-This property is initialized by the value of the
-:variable:`CMAKE_ANDROID_ASSETS_DIRECTORIES` variable if it is set when
-a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_GUI.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_GUI.rst
deleted file mode 100644
index 92e2041..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_GUI.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-ANDROID_GUI
------------
-
-When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
-Edition`, this property specifies whether to build an executable as an
-application package on Android.
-
-When this property is set to true the executable when built for Android
-will be created as an application package.  This property is initialized
-by the value of the :variable:`CMAKE_ANDROID_GUI` variable if it is set
-when a target is created.
-
-Add the ``AndroidManifest.xml`` source file explicitly to the
-target :command:`add_executable` command invocation to specify the
-root directory of the application package source.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_JAR_DEPENDENCIES.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_JAR_DEPENDENCIES.rst
deleted file mode 100644
index 42937c1..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_JAR_DEPENDENCIES.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-ANDROID_JAR_DEPENDENCIES
-------------------------
-
-Set the Android property that specifies JAR dependencies.
-This is a string value property. This property is initialized
-by the value of the :variable:`CMAKE_ANDROID_JAR_DEPENDENCIES`
-variable if it is set when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_JAR_DIRECTORIES.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_JAR_DIRECTORIES.rst
deleted file mode 100644
index 54f0a8f..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_JAR_DIRECTORIES.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-ANDROID_JAR_DIRECTORIES
------------------------
-
-Set the Android property that specifies directories to search for
-the JAR libraries.
-
-This a string property that contains the directory paths separated by
-semicolons. This property is initialized by the value of the
-:variable:`CMAKE_ANDROID_JAR_DIRECTORIES` variable if it is set when
-a target is created.
-
-Contents of ``ANDROID_JAR_DIRECTORIES`` may use "generator expressions"
-with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_JAVA_SOURCE_DIR.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_JAVA_SOURCE_DIR.rst
deleted file mode 100644
index 90ef1ce..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_JAVA_SOURCE_DIR.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-ANDROID_JAVA_SOURCE_DIR
------------------------
-
-Set the Android property that defines the Java source code root directories.
-This a string property that contains the directory paths separated by semicolon.
-This property is initialized by the value of the
-:variable:`CMAKE_ANDROID_JAVA_SOURCE_DIR` variable if it is set
-when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_NATIVE_LIB_DEPENDENCIES.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_NATIVE_LIB_DEPENDENCIES.rst
deleted file mode 100644
index 759a37b..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_NATIVE_LIB_DEPENDENCIES.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-ANDROID_NATIVE_LIB_DEPENDENCIES
--------------------------------
-
-Set the Android property that specifies the .so dependencies.
-This is a string property.
-
-This property is initialized by the value of the
-:variable:`CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES` variable if it is set
-when a target is created.
-
-Contents of ``ANDROID_NATIVE_LIB_DEPENDENCIES`` may use
-"generator expressions" with the syntax ``$<...>``. See the
-:manual:`cmake-generator-expressions(7)` manual for
-available expressions.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES.rst
deleted file mode 100644
index d0cd29d..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-ANDROID_NATIVE_LIB_DIRECTORIES
-------------------------------
-
-Set the Android property that specifies directories to search for the ``.so``
-libraries.
-
-This a string property that contains the directory paths separated
-by semicolons.
-
-This property is initialized by the value of the
-:variable:`CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES` variable if it is set when a
-target is created.
-
-Contents of ``ANDROID_NATIVE_LIB_DIRECTORIES`` may use "generator expressions"
-with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_PROCESS_MAX.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_PROCESS_MAX.rst
deleted file mode 100644
index 847acae..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_PROCESS_MAX.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-ANDROID_PROCESS_MAX
--------------------
-
-Set the Android property that defines the maximum number of a
-parallel Android NDK compiler processes (e.g. ``4``).
-This property is initialized by the value of the
-:variable:`CMAKE_ANDROID_PROCESS_MAX` variable if it is set
-when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_PROGUARD.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_PROGUARD.rst
deleted file mode 100644
index dafc51e..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_PROGUARD.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-ANDROID_PROGUARD
-----------------
-
-When this property is set to true that enables the ProGuard tool to shrink,
-optimize, and obfuscate the code by removing unused code and renaming
-classes, fields, and methods with semantically obscure names.
-This property is initialized by the value of the
-:variable:`CMAKE_ANDROID_PROGUARD` variable if it is set
-when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_PROGUARD_CONFIG_PATH.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_PROGUARD_CONFIG_PATH.rst
deleted file mode 100644
index 0e929d1..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_PROGUARD_CONFIG_PATH.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-ANDROID_PROGUARD_CONFIG_PATH
-----------------------------
-
-Set the Android property that specifies the location of the ProGuard
-config file. Leave empty to use the default one.
-This a string property that contains the path to ProGuard config file.
-This property is initialized by the value of the
-:variable:`CMAKE_ANDROID_PROGUARD_CONFIG_PATH` variable if it is set
-when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_SECURE_PROPS_PATH.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_SECURE_PROPS_PATH.rst
deleted file mode 100644
index 9533f1a..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_SECURE_PROPS_PATH.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-ANDROID_SECURE_PROPS_PATH
--------------------------
-
-Set the Android property that states the location of the secure properties file.
-This is a string property that contains the file path.
-This property is initialized by the value of the
-:variable:`CMAKE_ANDROID_SECURE_PROPS_PATH` variable
-if it is set when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_SKIP_ANT_STEP.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_SKIP_ANT_STEP.rst
deleted file mode 100644
index 6361896..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_SKIP_ANT_STEP.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-ANDROID_SKIP_ANT_STEP
----------------------
-
-Set the Android property that defines whether or not to skip the Ant build step.
-This is a boolean property initialized by the value of the
-:variable:`CMAKE_ANDROID_SKIP_ANT_STEP` variable if it is set when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/ANDROID_STL_TYPE.rst b/share/cmake-3.18/Help/prop_tgt/ANDROID_STL_TYPE.rst
deleted file mode 100644
index 386e96e..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ANDROID_STL_TYPE.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-ANDROID_STL_TYPE
-----------------
-
-When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
-Edition`, this property specifies the type of STL support for the project.
-This is a string property that could set to the one of the following values:
-
-``none``
-  No C++ Support
-``system``
-  Minimal C++ without STL
-``gabi++_static``
-  GAbi++ Static
-``gabi++_shared``
-  GAbi++ Shared
-``gnustl_static``
-  GNU libstdc++ Static
-``gnustl_shared``
-  GNU libstdc++ Shared
-``stlport_static``
-  STLport Static
-``stlport_shared``
-  STLport Shared
-
-This property is initialized by the value of the
-:variable:`CMAKE_ANDROID_STL_TYPE` variable if it is set when a target is
-created.
diff --git a/share/cmake-3.18/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY.rst b/share/cmake-3.18/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY.rst
deleted file mode 100644
index 4221069..0000000
--- a/share/cmake-3.18/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-ARCHIVE_OUTPUT_DIRECTORY
-------------------------
-
-.. |XXX| replace:: :ref:`ARCHIVE <Archive Output Artifacts>`
-.. |xxx| replace:: archive
-.. |CMAKE_XXX_OUTPUT_DIRECTORY| replace:: CMAKE_ARCHIVE_OUTPUT_DIRECTORY
-.. include:: XXX_OUTPUT_DIRECTORY.txt
-
-See also the :prop_tgt:`ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>` target property.
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTOGEN_BUILD_DIR.rst b/share/cmake-3.18/Help/prop_tgt/AUTOGEN_BUILD_DIR.rst
deleted file mode 100644
index 909b14c..0000000
--- a/share/cmake-3.18/Help/prop_tgt/AUTOGEN_BUILD_DIR.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-AUTOGEN_BUILD_DIR
------------------
-
-Directory where :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC`
-generate files for the target.
-
-The directory is created on demand and automatically added to the
-:prop_tgt:`ADDITIONAL_CLEAN_FILES` target property.
-
-When unset or empty the directory ``<dir>/<target-name>_autogen`` is used where
-``<dir>`` is :variable:`CMAKE_CURRENT_BINARY_DIR` and ``<target-name>``
-is :prop_tgt:`NAME`.
-
-By default :prop_tgt:`AUTOGEN_BUILD_DIR` is unset.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTOGEN_ORIGIN_DEPENDS.rst b/share/cmake-3.18/Help/prop_tgt/AUTOGEN_ORIGIN_DEPENDS.rst
deleted file mode 100644
index 022bab5..0000000
--- a/share/cmake-3.18/Help/prop_tgt/AUTOGEN_ORIGIN_DEPENDS.rst
+++ /dev/null
@@ -1,38 +0,0 @@
-AUTOGEN_ORIGIN_DEPENDS
-----------------------
-
-Switch for forwarding origin target dependencies to the corresponding
-``_autogen`` target.
-
-Targets which have their :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC` property
-``ON`` have a corresponding ``_autogen`` target which generates
-``moc`` and ``uic`` files.  As this ``_autogen`` target is created at
-generate-time, it is not possible to define dependencies of it using
-e.g.  :command:`add_dependencies`.  Instead the
-:prop_tgt:`AUTOGEN_ORIGIN_DEPENDS` target property decides whether the origin
-target dependencies should be forwarded to the ``_autogen`` target or not.
-
-By default :prop_tgt:`AUTOGEN_ORIGIN_DEPENDS` is initialized from
-:variable:`CMAKE_AUTOGEN_ORIGIN_DEPENDS` which is ``ON`` by default.
-
-In total the dependencies of the ``_autogen`` target are composed from
-
-- forwarded origin target dependencies
-  (enabled by default via :prop_tgt:`AUTOGEN_ORIGIN_DEPENDS`)
-- additional user defined dependencies from :prop_tgt:`AUTOGEN_TARGET_DEPENDS`
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
-
-Note
-^^^^
-
-Disabling :prop_tgt:`AUTOGEN_ORIGIN_DEPENDS` is useful to avoid building of
-origin target dependencies when building the ``_autogen`` target only.
-This is especially interesting when a
-:variable:`global autogen target <CMAKE_GLOBAL_AUTOGEN_TARGET>` is enabled.
-
-When the ``_autogen`` target doesn't require all the origin target's
-dependencies, and :prop_tgt:`AUTOGEN_ORIGIN_DEPENDS` is disabled, it might be
-necessary to extend :prop_tgt:`AUTOGEN_TARGET_DEPENDS` to add missing
-dependencies.
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTOGEN_PARALLEL.rst b/share/cmake-3.18/Help/prop_tgt/AUTOGEN_PARALLEL.rst
deleted file mode 100644
index 968b619..0000000
--- a/share/cmake-3.18/Help/prop_tgt/AUTOGEN_PARALLEL.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-AUTOGEN_PARALLEL
-----------------
-
-Number of parallel ``moc`` or ``uic`` processes to start when using
-:prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
-
-The custom ``<origin>_autogen`` target starts a number of threads of which
-each one parses a source file and on demand starts a ``moc`` or ``uic``
-process.  ``AUTOGEN_PARALLEL`` controls how many parallel threads
-(and therefore ``moc`` or ``uic`` processes) are started.
-
-- An empty (or unset) value or the string ``AUTO`` sets the number of
-  threads/processes to the number of physical CPUs on the host system.
-- A positive non zero integer value sets the exact thread/process count.
-- Otherwise a single thread/process is started.
-
-By default ``AUTOGEN_PARALLEL`` is initialized from
-:variable:`CMAKE_AUTOGEN_PARALLEL`.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTOMOC.rst b/share/cmake-3.18/Help/prop_tgt/AUTOMOC.rst
deleted file mode 100644
index c18859b..0000000
--- a/share/cmake-3.18/Help/prop_tgt/AUTOMOC.rst
+++ /dev/null
@@ -1,247 +0,0 @@
-AUTOMOC
--------
-
-Should the target be processed with auto-moc (for Qt projects).
-
-:prop_tgt:`AUTOMOC` is a boolean specifying whether CMake will handle the Qt
-``moc`` preprocessor automatically, i.e.  without having to use the
-:module:`QT4_WRAP_CPP() <FindQt4>` or ``QT5_WRAP_CPP()`` macro.
-Currently Qt4 and Qt5 are supported.
-
-This property is initialized by the value of the :variable:`CMAKE_AUTOMOC`
-variable if it is set when a target is created.
-
-When this property is set ``ON``, CMake will scan the header and
-source files at build time and invoke ``moc`` accordingly.
-
-
-Header file processing
-^^^^^^^^^^^^^^^^^^^^^^
-
-At configuration time, a list of header files that should be scanned by
-:prop_tgt:`AUTOMOC` is computed from the target's sources.
-
-- All header files in the target's sources are added to the scan list.
-- For all C++ source files ``<source_base>.<source_extension>`` in the
-  target's sources, CMake searches for
-
-  - a regular header with the same base name
-    (``<source_base>.<header_extention>``) and
-  - a private header with the same base name and a ``_p`` suffix
-    (``<source_base>_p.<header_extention>``)
-
-  and adds these to the scan list.
-
-At build time, CMake scans each unknown or modified header file from the
-list and searches for
-
-- a Qt macro from :prop_tgt:`AUTOMOC_MACRO_NAMES`,
-- additional file dependencies from the ``FILE`` argument of a
-  ``Q_PLUGIN_METADATA`` macro and
-- additional file dependencies detected by filters defined in
-  :prop_tgt:`AUTOMOC_DEPEND_FILTERS`.
-
-If a Qt macro is found, then the header will be compiled by the ``moc`` to the
-output file ``moc_<base_name>.cpp``.  The complete output file path is
-described in the section `Output file location`_.
-
-The header will be ``moc`` compiled again if a file from the additional file
-dependencies changes.
-
-Header ``moc`` output files ``moc_<base_name>.cpp`` can be included in source
-files.  In the section `Including header moc files in sources`_ there is more
-information on that topic.
-
-
-Source file processing
-^^^^^^^^^^^^^^^^^^^^^^
-
-At build time, CMake scans each unknown or modified C++ source file from the
-target's sources for
-
-- a Qt macro from :prop_tgt:`AUTOMOC_MACRO_NAMES`,
-- includes of header ``moc`` files
-  (see `Including header moc files in sources`_),
-- additional file dependencies from the ``FILE`` argument of a
-  ``Q_PLUGIN_METADATA`` macro and
-- additional file dependencies detected by filters defined in
-  :prop_tgt:`AUTOMOC_DEPEND_FILTERS`.
-
-If a Qt macro is found, then the C++ source file
-``<base>.<source_extension>`` is expected to as well contain an include
-statement
-
-.. code-block:: c++
-
-  #include <<base>.moc> // or
-  #include "<base>.moc"
-
-The source file then will be compiled by the ``moc`` to the output file
-``<base>.moc``.  A description of the complete output file path is in section
-`Output file location`_.
-
-The source will be ``moc`` compiled again if a file from the additional file
-dependencies changes.
-
-Including header moc files in sources
-"""""""""""""""""""""""""""""""""""""
-
-A source file can include the ``moc`` output file of a header
-``<header_base>.<header_extension>`` by using an include statement of
-the form
-
-.. code-block:: c++
-
-  #include <moc_<header_base>.cpp> // or
-  #include "moc_<header_base>.cpp"
-
-If the ``moc`` output file of a header is included by a source, it will
-be generated in a different location than if it was not included.  This is
-described in the section `Output file location`_.
-
-
-Output file location
-^^^^^^^^^^^^^^^^^^^^
-
-Included moc output files
-"""""""""""""""""""""""""
-
-``moc`` output files that are included by a source file will be generated in
-
-- ``<AUTOGEN_BUILD_DIR>/include``
-  for single configuration generators or in
-- ``<AUTOGEN_BUILD_DIR>/include_<CONFIG>``
-  for :prop_gbl:`multi configuration <GENERATOR_IS_MULTI_CONFIG>` generators.
-
-Where ``<AUTOGEN_BUILD_DIR>`` is the value of the target property
-:prop_tgt:`AUTOGEN_BUILD_DIR`.
-
-The include directory is automatically added to the target's
-:prop_tgt:`INCLUDE_DIRECTORIES`.
-
-Not included moc output files
-"""""""""""""""""""""""""""""
-
-``moc`` output files that are not included in a source file will be generated
-in
-
-- ``<AUTOGEN_BUILD_DIR>/<SOURCE_DIR_CHECKSUM>``
-  for single configuration generators or in,
-- ``<AUTOGEN_BUILD_DIR>/include_<CONFIG>/<SOURCE_DIR_CHECKSUM>``
-  for :prop_gbl:`multi configuration <GENERATOR_IS_MULTI_CONFIG>` generators.
-
-Where ``<SOURCE_DIR_CHECKSUM>`` is a checksum computed from the relative
-parent directory path of the ``moc`` input file.  This scheme allows to have
-``moc`` input files with the same name in different directories.
-
-All not included ``moc`` output files will be included automatically by the
-CMake generated file
-
-- ``<AUTOGEN_BUILD_DIR>/mocs_compilation.cpp``,
-
-which is added to the target's sources.
-
-
-Qt version detection
-^^^^^^^^^^^^^^^^^^^^
-
-:prop_tgt:`AUTOMOC` enabled targets need to know the Qt major and minor
-version they're working with.  The major version usually is provided by the
-``INTERFACE_QT_MAJOR_VERSION`` property of the ``Qt[45]Core`` library,
-that the target links to.  To find the minor version, CMake builds a list of
-available Qt versions from
-
-- ``Qt5Core_VERSION_MAJOR`` and ``Qt5Core_VERSION_MINOR`` variables
-  (usually set by ``find_package(Qt5...)``)
-- ``Qt5Core_VERSION_MAJOR`` and ``Qt5Core_VERSION_MINOR`` directory properties
-- ``QT_VERSION_MAJOR`` and ``QT_VERSION_MINOR``  variables
-  (usually set by ``find_package(Qt4...)``)
-- ``QT_VERSION_MAJOR`` and ``QT_VERSION_MINOR``  directory properties
-
-in the context of the :command:`add_executable` or :command:`add_library` call.
-
-Assumed  ``INTERFACE_QT_MAJOR_VERSION`` is a valid number, the first
-entry in the list with a matching major version is taken.  If no matching major
-version was found, an error is generated.
-If  ``INTERFACE_QT_MAJOR_VERSION`` is not a valid number, the first
-entry in the list is taken.
-
-A ``find_package(Qt[45]...)`` call sets the ``QT/Qt5Core_VERSION_MAJOR/MINOR``
-variables.  If the call is in a different context than the
-:command:`add_executable` or :command:`add_library` call, e.g. in a function,
-then the version variables might not be available to the :prop_tgt:`AUTOMOC`
-enabled target.
-In that case the version variables can be forwarded from the
-``find_package(Qt[45]...)`` calling context to the :command:`add_executable`
-or :command:`add_library` calling context as directory properties.
-The following Qt5 example demonstrates the procedure.
-
-.. code-block:: cmake
-
-  function (add_qt5_client)
-    find_package(Qt5 REQUIRED QUIET COMPONENTS Core Widgets)
-    ...
-    set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
-      PROPERTY Qt5Core_VERSION_MAJOR "${Qt5Core_VERSION_MAJOR}")
-    set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
-      PROPERTY Qt5Core_VERSION_MINOR "${Qt5Core_VERSION_MAJOR}")
-    ...
-  endfunction ()
-  ...
-  add_qt5_client()
-  add_executable(myTarget main.cpp)
-  target_link_libraries(myTarget Qt5::QtWidgets)
-  set_property(TARGET myTarget PROPERTY AUTOMOC ON)
-
-
-Modifiers
-^^^^^^^^^
-
-:prop_tgt:`AUTOMOC_EXECUTABLE`:
-The ``moc`` executable will be detected automatically, but can be forced to
-a certain binary using this target property.
-
-:prop_tgt:`AUTOMOC_MOC_OPTIONS`:
-Additional command line options for ``moc`` can be set in this target property.
-
-:prop_tgt:`AUTOMOC_MACRO_NAMES`:
-This list of Qt macro names can be extended to search for additional macros in
-headers and sources.
-
-:prop_tgt:`AUTOMOC_DEPEND_FILTERS`:
-``moc`` dependency file names can be extracted from headers or sources by
-defining file name filters in this target property.
-
-:prop_tgt:`AUTOMOC_COMPILER_PREDEFINES`:
-Compiler pre definitions for ``moc`` are written to the ``moc_predefs.h`` file.
-The generation of this file can be enabled or disabled in this target property.
-
-:prop_sf:`SKIP_AUTOMOC`:
-Sources and headers can be excluded from :prop_tgt:`AUTOMOC` processing by
-setting this source file property.
-
-:prop_sf:`SKIP_AUTOGEN`:
-Source files can be excluded from :prop_tgt:`AUTOMOC`,
-:prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC` processing by
-setting this source file property.
-
-:prop_gbl:`AUTOGEN_SOURCE_GROUP`:
-This global property can be used to group files generated by
-:prop_tgt:`AUTOMOC` or :prop_tgt:`AUTORCC` together in an IDE, e.g.  in MSVS.
-
-:prop_gbl:`AUTOGEN_TARGETS_FOLDER`:
-This global property can be used to group :prop_tgt:`AUTOMOC`,
-:prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC` targets together in an IDE,
-e.g.  in MSVS.
-
-:variable:`CMAKE_GLOBAL_AUTOGEN_TARGET`:
-A global ``autogen`` target, that depends on all :prop_tgt:`AUTOMOC` or
-:prop_tgt:`AUTOUIC` generated ``<ORIGIN>_autogen`` targets in the project,
-will be generated when this variable is ``ON``.
-
-:prop_tgt:`AUTOGEN_PARALLEL`:
-This target property controls the number of ``moc`` or ``uic`` processes to
-start in parallel during builds.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTOMOC_COMPILER_PREDEFINES.rst b/share/cmake-3.18/Help/prop_tgt/AUTOMOC_COMPILER_PREDEFINES.rst
deleted file mode 100644
index 57a647f..0000000
--- a/share/cmake-3.18/Help/prop_tgt/AUTOMOC_COMPILER_PREDEFINES.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-AUTOMOC_COMPILER_PREDEFINES
----------------------------
-
-Boolean value used by :prop_tgt:`AUTOMOC` to determine if the
-compiler pre definitions file ``moc_predefs.h`` should be generated.
-
-CMake generates a ``moc_predefs.h`` file with compiler pre definitions
-from the output of the command defined in
-:variable:`CMAKE_CXX_COMPILER_PREDEFINES_COMMAND <CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND>`
-when
-
-- :prop_tgt:`AUTOMOC` is enabled,
-- :prop_tgt:`AUTOMOC_COMPILER_PREDEFINES` is enabled,
-- :variable:`CMAKE_CXX_COMPILER_PREDEFINES_COMMAND <CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND>` isn't empty and
-- the Qt version is greater or equal 5.8.
-
-The ``moc_predefs.h`` file, which is generated in :prop_tgt:`AUTOGEN_BUILD_DIR`,
-is passed to ``moc`` as the argument to the ``--include`` option.
-
-By default :prop_tgt:`AUTOMOC_COMPILER_PREDEFINES` is initialized from
-:variable:`CMAKE_AUTOMOC_COMPILER_PREDEFINES`, which is ON by default.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst b/share/cmake-3.18/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst
deleted file mode 100644
index 6eda26c..0000000
--- a/share/cmake-3.18/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst
+++ /dev/null
@@ -1,107 +0,0 @@
-AUTOMOC_DEPEND_FILTERS
-----------------------
-
-Filter definitions used by :prop_tgt:`AUTOMOC` to extract file names from a
-source file that are registered as additional dependencies for the
-``moc`` file of the source file.
-
-Filters are defined as ``KEYWORD;REGULAR_EXPRESSION`` pairs. First the file
-content is searched for ``KEYWORD``. If it is found at least once, then file
-names are extracted by successively searching for ``REGULAR_EXPRESSION`` and
-taking the first match group.
-
-The file name found in the first match group is searched for
-
-- first in the vicinity of the source file
-- and afterwards in the target's :prop_tgt:`INCLUDE_DIRECTORIES`.
-
-If any of the extracted files changes, then the ``moc`` file for the source
-file gets rebuilt even when the source file itself doesn't change.
-
-If any of the extracted files is :prop_sf:`GENERATED` or if it is not in the
-target's sources, then it might be necessary to add it to the
-``_autogen`` target  dependencies.
-See :prop_tgt:`AUTOGEN_TARGET_DEPENDS` for reference.
-
-By default :prop_tgt:`AUTOMOC_DEPEND_FILTERS` is initialized from
-:variable:`CMAKE_AUTOMOC_DEPEND_FILTERS`, which is empty by default.
-
-From Qt 5.15.0 on this variable is ignored as moc is able to output the correct
-dependencies.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
-
-
-Example 1
-^^^^^^^^^
-
-A header file ``my_class.hpp`` uses a custom macro ``JSON_FILE_MACRO`` which
-is defined in an other header ``macros.hpp``.
-We want the ``moc`` file of ``my_class.hpp`` to depend on the file name
-argument of ``JSON_FILE_MACRO``::
-
-  // my_class.hpp
-  class My_Class : public QObject
-  {
-    Q_OBJECT
-    JSON_FILE_MACRO ( "info.json" )
-  ...
-  };
-
-In ``CMakeLists.txt`` we add a filter to
-:variable:`CMAKE_AUTOMOC_DEPEND_FILTERS` like this::
-
-  list( APPEND CMAKE_AUTOMOC_DEPEND_FILTERS
-    "JSON_FILE_MACRO"
-    "[\n][ \t]*JSON_FILE_MACRO[ \t]*\\([ \t]*\"([^\"]+)\""
-  )
-
-We assume ``info.json`` is a plain (not :prop_sf:`GENERATED`) file that is
-listed in the target's source.  Therefore we do not need to add it to
-:prop_tgt:`AUTOGEN_TARGET_DEPENDS`.
-
-Example 2
-^^^^^^^^^
-
-In the target ``my_target`` a header file ``complex_class.hpp`` uses a
-custom macro ``JSON_BASED_CLASS`` which is defined in an other header
-``macros.hpp``::
-
-  // macros.hpp
-  ...
-  #define JSON_BASED_CLASS(name, json) \
-  class name : public QObject \
-  { \
-    Q_OBJECT \
-    Q_PLUGIN_METADATA(IID "demo" FILE json) \
-    name() {} \
-  };
-  ...
-
-::
-
-  // complex_class.hpp
-  #pragma once
-  JSON_BASED_CLASS(Complex_Class, "meta.json")
-  // end of file
-
-Since ``complex_class.hpp`` doesn't contain a ``Q_OBJECT`` macro it would be
-ignored by :prop_tgt:`AUTOMOC`.  We change this by adding ``JSON_BASED_CLASS``
-to :variable:`CMAKE_AUTOMOC_MACRO_NAMES`::
-
-  list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "JSON_BASED_CLASS")
-
-We want the ``moc`` file of ``complex_class.hpp`` to depend on
-``meta.json``.  So we add a filter to
-:variable:`CMAKE_AUTOMOC_DEPEND_FILTERS`::
-
-  list(APPEND CMAKE_AUTOMOC_DEPEND_FILTERS
-    "JSON_BASED_CLASS"
-    "[\n^][ \t]*JSON_BASED_CLASS[ \t]*\\([^,]*,[ \t]*\"([^\"]+)\""
-  )
-
-Additionally we assume ``meta.json`` is :prop_sf:`GENERATED` which is
-why we have to add it to :prop_tgt:`AUTOGEN_TARGET_DEPENDS`::
-
-  set_property(TARGET my_target APPEND PROPERTY AUTOGEN_TARGET_DEPENDS "meta.json")
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTOMOC_EXECUTABLE.rst b/share/cmake-3.18/Help/prop_tgt/AUTOMOC_EXECUTABLE.rst
deleted file mode 100644
index 6b66ce8..0000000
--- a/share/cmake-3.18/Help/prop_tgt/AUTOMOC_EXECUTABLE.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-AUTOMOC_EXECUTABLE
-------------------
-
-:prop_tgt:`AUTOMOC_EXECUTABLE` is file path pointing to the ``moc``
-executable to use for :prop_tgt:`AUTOMOC` enabled files. Setting
-this property will make CMake skip the automatic detection of the
-``moc`` binary as well as the sanity-tests normally run to ensure
-that the binary is available and working as expected.
-
-Usually this property does not need to be set. Only consider this
-property if auto-detection of ``moc`` can not work -- e.g. because
-you are building the ``moc`` binary as part of your project.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTOMOC_MACRO_NAMES.rst b/share/cmake-3.18/Help/prop_tgt/AUTOMOC_MACRO_NAMES.rst
deleted file mode 100644
index 5329bba..0000000
--- a/share/cmake-3.18/Help/prop_tgt/AUTOMOC_MACRO_NAMES.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-AUTOMOC_MACRO_NAMES
--------------------
-
-A :ref:`semicolon-separated list <CMake Language Lists>` list of macro names used by
-:prop_tgt:`AUTOMOC` to determine if a C++ file needs to be processed by ``moc``.
-
-This property is only used if the :prop_tgt:`AUTOMOC` property is ``ON``
-for this target.
-
-When running :prop_tgt:`AUTOMOC`, CMake searches for the strings listed in
-:prop_tgt:`AUTOMOC_MACRO_NAMES` in C++ source and header files.
-If any of the strings is found
-
-- as the first non space string on a new line or
-- as the first non space string after a ``{`` on a new line,
-
-then the file will be processed by ``moc``.
-
-By default :prop_tgt:`AUTOMOC_MACRO_NAMES` is initialized from
-:variable:`CMAKE_AUTOMOC_MACRO_NAMES`.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
-
-Example
-^^^^^^^
-
-In this case the ``Q_OBJECT`` macro is hidden inside another macro
-called ``CUSTOM_MACRO``.  To let CMake know that source files that contain
-``CUSTOM_MACRO`` need to be ``moc`` processed, we call::
-
-  set_property(TARGET tgt APPEND PROPERTY AUTOMOC_MACRO_NAMES "CUSTOM_MACRO")
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTOMOC_PATH_PREFIX.rst b/share/cmake-3.18/Help/prop_tgt/AUTOMOC_PATH_PREFIX.rst
deleted file mode 100644
index 3e3059d..0000000
--- a/share/cmake-3.18/Help/prop_tgt/AUTOMOC_PATH_PREFIX.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-AUTOMOC_PATH_PREFIX
--------------------
-
-When this property is ``ON``, CMake will generate the ``-p`` path prefix
-option for ``moc`` on :prop_tgt:`AUTOMOC` enabled Qt targets.
-
-To generate the path prefix, CMake tests if the header compiled by ``moc``
-is in any of the target
-:command:`include directories <target_include_directories>`.  If so, CMake will
-compute the relative path accordingly.  If the header is not in the
-:command:`include directories <target_include_directories>`, CMake will omit
-the ``-p`` path prefix option.  ``moc`` usually generates a
-relative include path in that case.
-
-:prop_tgt:`AUTOMOC_PATH_PREFIX` is initialized from the variable
-:variable:`CMAKE_AUTOMOC_PATH_PREFIX`, which is ``ON`` by default.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
-
-Reproducible builds
-^^^^^^^^^^^^^^^^^^^
-
-For reproducible builds it is recommended to keep headers that are ``moc``
-compiled in one of the target
-:command:`include directories <target_include_directories>` and set
-:prop_tgt:`AUTOMOC_PATH_PREFIX` to ``ON`` (which is the default).  This ensures
-that:
-
-- ``moc`` output files are identical on different build setups,
-- ``moc`` output files will compile correctly when the source and/or
-  build directory is a symbolic link.
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTORCC.rst b/share/cmake-3.18/Help/prop_tgt/AUTORCC.rst
deleted file mode 100644
index 9a98f44..0000000
--- a/share/cmake-3.18/Help/prop_tgt/AUTORCC.rst
+++ /dev/null
@@ -1,62 +0,0 @@
-AUTORCC
--------
-
-Should the target be processed with auto-rcc (for Qt projects).
-
-:prop_tgt:`AUTORCC` is a boolean specifying whether CMake will handle
-the Qt ``rcc`` code generator automatically, i.e. without having to use
-the :module:`QT4_ADD_RESOURCES() <FindQt4>` or ``QT5_ADD_RESOURCES()``
-macro.  Currently Qt4 and Qt5 are supported.
-
-When this property is ``ON``, CMake will handle ``.qrc`` files added
-as target sources at build time and invoke ``rcc`` accordingly.
-This property is initialized by the value of the :variable:`CMAKE_AUTORCC`
-variable if it is set when a target is created.
-
-By default :prop_tgt:`AUTORCC` is processed by a
-:command:`custom command <add_custom_command>`.
-If the ``.qrc`` file is :prop_sf:`GENERATED`, a
-:command:`custom target <add_custom_target>` is used instead.
-
-When there are multiple ``.qrc`` files with the same name, CMake will
-generate unspecified unique output file names for ``rcc``.  Therefore, if
-``Q_INIT_RESOURCE()`` or ``Q_CLEANUP_RESOURCE()`` need to be used, the
-``.qrc`` file name must be unique.
-
-
-Modifiers
-^^^^^^^^^
-
-:prop_tgt:`AUTORCC_EXECUTABLE`:
-The ``rcc`` executable will be detected automatically, but can be forced to
-a certain binary by setting this target property.
-
-:prop_tgt:`AUTORCC_OPTIONS`:
-Additional command line options for ``rcc`` can be set via this target
-property.  The corresponding :prop_sf:`AUTORCC_OPTIONS` source file property
-can be used to specify options to be applied only to a specific ``.qrc`` file.
-
-:prop_sf:`SKIP_AUTORCC`:
-``.qrc`` files can be excluded from :prop_tgt:`AUTORCC` processing by
-setting this source file property.
-
-:prop_sf:`SKIP_AUTOGEN`:
-Source files can be excluded from :prop_tgt:`AUTOMOC`,
-:prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC` processing by
-setting this source file property.
-
-:prop_gbl:`AUTOGEN_SOURCE_GROUP`:
-This global property can be used to group files generated by
-:prop_tgt:`AUTOMOC` or :prop_tgt:`AUTORCC` together in an IDE, e.g.  in MSVS.
-
-:prop_gbl:`AUTOGEN_TARGETS_FOLDER`:
-This global property can be used to group :prop_tgt:`AUTOMOC`,
-:prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC` targets together in an IDE,
-e.g.  in MSVS.
-
-:variable:`CMAKE_GLOBAL_AUTORCC_TARGET`:
-A global ``autorcc`` target that depends on all :prop_tgt:`AUTORCC` targets
-in the project will be generated when this variable is ``ON``.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTORCC_EXECUTABLE.rst b/share/cmake-3.18/Help/prop_tgt/AUTORCC_EXECUTABLE.rst
deleted file mode 100644
index ca0fbd7..0000000
--- a/share/cmake-3.18/Help/prop_tgt/AUTORCC_EXECUTABLE.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-AUTORCC_EXECUTABLE
-------------------
-
-:prop_tgt:`AUTORCC_EXECUTABLE` is file path pointing to the ``rcc``
-executable to use for :prop_tgt:`AUTORCC` enabled files. Setting
-this property will make CMake skip the automatic detection of the
-``rcc`` binary as well as the sanity-tests normally run to ensure
-that the binary is available and working as expected.
-
-Usually this property does not need to be set. Only consider this
-property if auto-detection of ``rcc`` can not work -- e.g. because
-you are building the ``rcc`` binary as part of your project.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTOUIC.rst b/share/cmake-3.18/Help/prop_tgt/AUTOUIC.rst
deleted file mode 100644
index cd24f5e..0000000
--- a/share/cmake-3.18/Help/prop_tgt/AUTOUIC.rst
+++ /dev/null
@@ -1,85 +0,0 @@
-AUTOUIC
--------
-
-Should the target be processed with auto-uic (for Qt projects).
-
-:prop_tgt:`AUTOUIC` is a boolean specifying whether CMake will handle
-the Qt ``uic`` code generator automatically, i.e. without having to use
-the :module:`QT4_WRAP_UI() <FindQt4>` or ``QT5_WRAP_UI()`` macro. Currently
-Qt4 and Qt5 are supported.
-
-This property is initialized by the value of the :variable:`CMAKE_AUTOUIC`
-variable if it is set when a target is created.
-
-When this property is ``ON``, CMake will scan the header and source files at
-build time and invoke ``uic`` accordingly.
-
-
-Header and source file processing
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-At build time, CMake scans each header and source file from the
-target's sources for include statements of the form
-
-.. code-block:: c++
-
-  #include "ui_<ui_base>.h"
-
-Once such an include statement is found in a file, CMake searches for the
-``uic`` input file ``<ui_base>.ui``
-
-- in the vicinity of the file and
-- in the :prop_tgt:`AUTOUIC_SEARCH_PATHS` of the target.
-
-If the ``<ui_base>.ui`` file was found, ``uic`` is called on it to generate
-``ui_<ui_base>.h`` in the directory
-
-- ``<AUTOGEN_BUILD_DIR>/include`` for single configuration generators or in
-- ``<AUTOGEN_BUILD_DIR>/include_<CONFIG>`` for
-  :prop_gbl:`multi configuration <GENERATOR_IS_MULTI_CONFIG>` generators.
-
-Where ``<AUTOGEN_BUILD_DIR>`` is the value of the target property
-:prop_tgt:`AUTOGEN_BUILD_DIR`.
-
-The include directory is automatically added to the target's
-:prop_tgt:`INCLUDE_DIRECTORIES`.
-
-
-Modifiers
-^^^^^^^^^
-
-:prop_tgt:`AUTOUIC_EXECUTABLE`:
-The ``uic`` executable will be detected automatically, but can be forced to
-a certain binary using this target property.
-
-:prop_tgt:`AUTOUIC_OPTIONS`:
-Additional command line options for ``uic`` can be set via this target
-property.  The corresponding :prop_sf:`AUTOUIC_OPTIONS` source file property
-can be used to specify options to be applied only to a specific
-``<base_name>.ui`` file.
-
-:prop_sf:`SKIP_AUTOUIC`:
-Source files can be excluded from :prop_tgt:`AUTOUIC` processing by setting
-this source file property.
-
-:prop_sf:`SKIP_AUTOGEN`:
-Source files can be excluded from :prop_tgt:`AUTOMOC`,
-:prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC` processing by
-setting this source file property.
-
-:prop_gbl:`AUTOGEN_TARGETS_FOLDER`:
-This global property can be used to group :prop_tgt:`AUTOMOC`,
-:prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC` targets together in an IDE,
-e.g.  in MSVS.
-
-:variable:`CMAKE_GLOBAL_AUTOGEN_TARGET`:
-A global ``autogen`` target, that depends on all :prop_tgt:`AUTOMOC` or
-:prop_tgt:`AUTOUIC` generated ``<ORIGIN>_autogen`` targets in the project,
-will be generated when this variable is ``ON``.
-
-:prop_tgt:`AUTOGEN_PARALLEL`:
-This target property controls the number of ``moc`` or ``uic`` processes to
-start in parallel during builds.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTOUIC_EXECUTABLE.rst b/share/cmake-3.18/Help/prop_tgt/AUTOUIC_EXECUTABLE.rst
deleted file mode 100644
index 03bd554..0000000
--- a/share/cmake-3.18/Help/prop_tgt/AUTOUIC_EXECUTABLE.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-AUTOUIC_EXECUTABLE
-------------------
-
-:prop_tgt:`AUTOUIC_EXECUTABLE` is file path pointing to the ``uic``
-executable to use for :prop_tgt:`AUTOUIC` enabled files. Setting
-this property will make CMake skip the automatic detection of the
-``uic`` binary as well as the sanity-tests normally run to ensure
-that the binary is available and working as expected.
-
-Usually this property does not need to be set. Only consider this
-property if auto-detection of ``uic`` can not work -- e.g. because
-you are building the ``uic`` binary as part of your project.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTOUIC_SEARCH_PATHS.rst b/share/cmake-3.18/Help/prop_tgt/AUTOUIC_SEARCH_PATHS.rst
deleted file mode 100644
index 96d9f89..0000000
--- a/share/cmake-3.18/Help/prop_tgt/AUTOUIC_SEARCH_PATHS.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-AUTOUIC_SEARCH_PATHS
---------------------
-
-Search path list used by :prop_tgt:`AUTOUIC` to find included
-``.ui`` files.
-
-This property is initialized by the value of the
-:variable:`CMAKE_AUTOUIC_SEARCH_PATHS` variable if it is set
-when a target is created. Otherwise it is empty.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
diff --git a/share/cmake-3.18/Help/prop_tgt/BINARY_DIR.rst b/share/cmake-3.18/Help/prop_tgt/BINARY_DIR.rst
deleted file mode 100644
index 246f7e6..0000000
--- a/share/cmake-3.18/Help/prop_tgt/BINARY_DIR.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-BINARY_DIR
-----------
-
-This read-only property reports the value of the
-:variable:`CMAKE_CURRENT_BINARY_DIR` variable in the directory in which
-the target was defined.
diff --git a/share/cmake-3.18/Help/prop_tgt/BUILD_RPATH.rst b/share/cmake-3.18/Help/prop_tgt/BUILD_RPATH.rst
deleted file mode 100644
index d978b94..0000000
--- a/share/cmake-3.18/Help/prop_tgt/BUILD_RPATH.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-BUILD_RPATH
------------
-
-A :ref:`semicolon-separated list <CMake Language Lists>` specifying runtime path (``RPATH``)
-entries to add to binaries linked in the build tree (for platforms that
-support it).  The entries will *not* be used for binaries in the install
-tree.  See also the :prop_tgt:`INSTALL_RPATH` target property.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_BUILD_RPATH` if it is set when a target is created.
-
-This property supports
-:manual:`generator expressions <cmake-generator-expressions(7)>`.
diff --git a/share/cmake-3.18/Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst b/share/cmake-3.18/Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst
deleted file mode 100644
index 3378797..0000000
--- a/share/cmake-3.18/Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-BUILD_RPATH_USE_ORIGIN
-----------------------
-
-Whether to use relative paths for the build ``RPATH``.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_BUILD_RPATH_USE_ORIGIN`.
-
-On platforms that support runtime paths (``RPATH``) with the
-``$ORIGIN`` token, setting this property to ``TRUE`` enables relative
-paths in the build ``RPATH`` for executables and shared libraries that
-point to shared libraries in the same build tree.
-
-Normally the build ``RPATH`` of a binary contains absolute paths
-to the directory of each shared library it links to.  The ``RPATH``
-entries for directories contained within the build tree can be made
-relative to enable relocatable builds and to help achieve reproducible
-builds by omitting the build directory from the build environment.
-
-This property has no effect on platforms that do not support the
-``$ORIGIN`` token in ``RPATH``, or when the :variable:`CMAKE_SKIP_RPATH`
-variable is set. The runtime path set through the
-:prop_tgt:`BUILD_RPATH` target property is also unaffected by this
-property.
diff --git a/share/cmake-3.18/Help/prop_tgt/BUILD_WITH_INSTALL_NAME_DIR.rst b/share/cmake-3.18/Help/prop_tgt/BUILD_WITH_INSTALL_NAME_DIR.rst
deleted file mode 100644
index bbb9a24..0000000
--- a/share/cmake-3.18/Help/prop_tgt/BUILD_WITH_INSTALL_NAME_DIR.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-BUILD_WITH_INSTALL_NAME_DIR
----------------------------
-
-``BUILD_WITH_INSTALL_NAME_DIR`` is a boolean specifying whether the macOS
-``install_name`` of a target in the build tree uses the directory given by
-:prop_tgt:`INSTALL_NAME_DIR`.  This setting only applies to targets on macOS.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_BUILD_WITH_INSTALL_NAME_DIR` if it is set when a target is
-created.
-
-If this property is not set and policy :policy:`CMP0068` is not ``NEW``, the
-value of :prop_tgt:`BUILD_WITH_INSTALL_RPATH` is used in its place.
diff --git a/share/cmake-3.18/Help/prop_tgt/COMMON_LANGUAGE_RUNTIME.rst b/share/cmake-3.18/Help/prop_tgt/COMMON_LANGUAGE_RUNTIME.rst
deleted file mode 100644
index 052ac6d..0000000
--- a/share/cmake-3.18/Help/prop_tgt/COMMON_LANGUAGE_RUNTIME.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-COMMON_LANGUAGE_RUNTIME
------------------------
-
-By setting this target property, the target is configured to build with
-``C++/CLI`` support.
-
-The Visual Studio generator defines the ``clr`` parameter depending on
-the value of ``COMMON_LANGUAGE_RUNTIME``:
-
-* property not set: native C++ (i.e. default)
-* property set but empty: mixed unmanaged/managed C++
-* property set to any non empty value: managed C++
-
-Supported values: ``""``, ``"pure"``, ``"safe"``
-
-This property is only evaluated :ref:`Visual Studio Generators` for
-VS 2010 and above.
-
-To be able to build managed C++ targets with VS 2017 and above the component
-``C++/CLI support`` must be installed, which may not be done by default.
-
-See also :prop_tgt:`IMPORTED_COMMON_LANGUAGE_RUNTIME`
diff --git a/share/cmake-3.18/Help/prop_tgt/COMPILE_FEATURES.rst b/share/cmake-3.18/Help/prop_tgt/COMPILE_FEATURES.rst
deleted file mode 100644
index 46aec4f..0000000
--- a/share/cmake-3.18/Help/prop_tgt/COMPILE_FEATURES.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-COMPILE_FEATURES
-----------------
-
-Compiler features enabled for this target.
-
-The list of features in this property are a subset of the features listed
-in the :variable:`CMAKE_C_COMPILE_FEATURES`, :variable:`CMAKE_CUDA_COMPILE_FEATURES`, and
-:variable:`CMAKE_CXX_COMPILE_FEATURES` variables.
-
-Contents of ``COMPILE_FEATURES`` may use "generator expressions" with the
-syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual for
-available expressions.  See the :manual:`cmake-compile-features(7)` manual
-for information on compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/prop_tgt/COMPILE_OPTIONS.rst b/share/cmake-3.18/Help/prop_tgt/COMPILE_OPTIONS.rst
deleted file mode 100644
index 0cd6836..0000000
--- a/share/cmake-3.18/Help/prop_tgt/COMPILE_OPTIONS.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-COMPILE_OPTIONS
----------------
-
-List of options to pass to the compiler.
-
-This property holds a :ref:`semicolon-separated list <CMake Language Lists>` of options
-specified so far for its target.  Use the :command:`target_compile_options`
-command to append more options.
-
-This property is initialized by the :prop_dir:`COMPILE_OPTIONS` directory
-property when a target is created, and is used by the generators to set
-the options for the compiler.
-
-Contents of ``COMPILE_OPTIONS`` may use "generator expressions" with the
-syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual
-for available expressions.  See the :manual:`cmake-buildsystem(7)` manual
-for more on defining buildsystem properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/COMPILE_PDB_NAME.rst b/share/cmake-3.18/Help/prop_tgt/COMPILE_PDB_NAME.rst
deleted file mode 100644
index 24a9f62..0000000
--- a/share/cmake-3.18/Help/prop_tgt/COMPILE_PDB_NAME.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-COMPILE_PDB_NAME
-----------------
-
-Output name for the MS debug symbol ``.pdb`` file generated by the
-compiler while building source files.
-
-This property specifies the base name for the debug symbols file.
-If not set, the default is unspecified.
-
-.. |PDB_XXX| replace:: :prop_tgt:`PDB_NAME`
-.. include:: COMPILE_PDB_NOTE.txt
diff --git a/share/cmake-3.18/Help/prop_tgt/COMPILE_PDB_NAME_CONFIG.rst b/share/cmake-3.18/Help/prop_tgt/COMPILE_PDB_NAME_CONFIG.rst
deleted file mode 100644
index e4077f5..0000000
--- a/share/cmake-3.18/Help/prop_tgt/COMPILE_PDB_NAME_CONFIG.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-COMPILE_PDB_NAME_<CONFIG>
--------------------------
-
-Per-configuration output name for the MS debug symbol ``.pdb`` file
-generated by the compiler while building source files.
-
-This is the configuration-specific version of :prop_tgt:`COMPILE_PDB_NAME`.
-
-.. |PDB_XXX| replace:: :prop_tgt:`PDB_NAME_<CONFIG>`
-.. include:: COMPILE_PDB_NOTE.txt
diff --git a/share/cmake-3.18/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY.rst b/share/cmake-3.18/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY.rst
deleted file mode 100644
index 34f49be..0000000
--- a/share/cmake-3.18/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-COMPILE_PDB_OUTPUT_DIRECTORY
-----------------------------
-
-Output directory for the MS debug symbol ``.pdb`` file
-generated by the compiler while building source files.
-
-This property specifies the directory into which the MS debug symbols
-will be placed by the compiler.  This property is initialized by the
-value of the :variable:`CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY` variable
-if it is set when a target is created.
-
-.. |PDB_XXX| replace:: :prop_tgt:`PDB_OUTPUT_DIRECTORY`
-.. include:: COMPILE_PDB_NOTE.txt
diff --git a/share/cmake-3.18/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.18/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
deleted file mode 100644
index f261756..0000000
--- a/share/cmake-3.18/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>
--------------------------------------
-
-Per-configuration output directory for the MS debug symbol ``.pdb`` file
-generated by the compiler while building source files.
-
-This is a per-configuration version of
-:prop_tgt:`COMPILE_PDB_OUTPUT_DIRECTORY`,
-but multi-configuration generators (Visual Studio, Xcode) do NOT append a
-per-configuration subdirectory to the specified directory.  This
-property is initialized by the value of the
-:variable:`CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>` variable
-if it is set when a target is created.
-
-.. |PDB_XXX| replace:: :prop_tgt:`PDB_OUTPUT_DIRECTORY_<CONFIG>`
-.. include:: COMPILE_PDB_NOTE.txt
diff --git a/share/cmake-3.18/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst b/share/cmake-3.18/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst
deleted file mode 100644
index 87c5978..0000000
--- a/share/cmake-3.18/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-CROSSCOMPILING_EMULATOR
------------------------
-
-Use the given emulator to run executables created when crosscompiling.
-This command will be added as a prefix to :command:`add_test`,
-:command:`add_custom_command`, and :command:`add_custom_target` commands
-for built target system executables.
-
-If this property contains a :ref:`semicolon-separated list <CMake Language
-Lists>`, then the first value is the command and remaining values are its
-arguments.
-
-This property is initialized by the value of the
-:variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable if it is set when a target
-is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/CUDA_ARCHITECTURES.rst b/share/cmake-3.18/Help/prop_tgt/CUDA_ARCHITECTURES.rst
deleted file mode 100644
index bae3c6f..0000000
--- a/share/cmake-3.18/Help/prop_tgt/CUDA_ARCHITECTURES.rst
+++ /dev/null
@@ -1,40 +0,0 @@
-CUDA_ARCHITECTURES
-------------------
-
-List of architectures to generate device code for.
-
-An architecture can be suffixed by either ``-real`` or ``-virtual`` to specify
-the kind of architecture to generate code for.
-If no suffix is given then code is generated for both real and virtual
-architectures.
-
-A non-empty false value (e.g. ``OFF``) disables adding architectures.
-This is intended to support packagers and rare cases where full control
-over the passed flags is required.
-
-This property is initialized by the value of the :variable:`CMAKE_CUDA_ARCHITECTURES`
-variable if it is set when a target is created.
-
-The ``CUDA_ARCHITECTURES`` target property must be set to a non-empty value on targets
-that compile CUDA sources, or it is an error.  See policy :policy:`CMP0104`.
-
-Examples
-^^^^^^^^
-
-.. code-block:: cmake
-
-  set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 35 50 72)
-
-Generates code for real and virtual architectures ``30``, ``50`` and ``72``.
-
-.. code-block:: cmake
-
-  set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 70-real 72-virtual)
-
-Generates code for real architecture ``70`` and virtual architecture ``72``.
-
-.. code-block:: cmake
-
-  set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES OFF)
-
-CMake will not pass any architecture flags to the compiler.
diff --git a/share/cmake-3.18/Help/prop_tgt/CUDA_EXTENSIONS.rst b/share/cmake-3.18/Help/prop_tgt/CUDA_EXTENSIONS.rst
deleted file mode 100644
index 098ca3c..0000000
--- a/share/cmake-3.18/Help/prop_tgt/CUDA_EXTENSIONS.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-CUDA_EXTENSIONS
----------------
-
-Boolean specifying whether compiler specific extensions are requested.
-
-This property specifies whether compiler specific extensions should be
-used.  For some compilers, this results in adding a flag such
-as ``-std=gnu++11`` instead of ``-std=c++11`` to the compile line.  This
-property is ``ON`` by default. The basic CUDA/C++ standard level is
-controlled by the :prop_tgt:`CUDA_STANDARD` target property.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-This property is initialized by the value of
-the :variable:`CMAKE_CUDA_EXTENSIONS` variable if it is set when a target
-is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/CUDA_PTX_COMPILATION.rst b/share/cmake-3.18/Help/prop_tgt/CUDA_PTX_COMPILATION.rst
deleted file mode 100644
index 0ee372b..0000000
--- a/share/cmake-3.18/Help/prop_tgt/CUDA_PTX_COMPILATION.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CUDA_PTX_COMPILATION
---------------------
-
-Compile CUDA sources to ``.ptx`` files instead of ``.obj`` files
-within :ref:`Object Libraries`.
-
-For example:
-
-.. code-block:: cmake
-
-  add_library(myptx OBJECT a.cu b.cu)
-  set_property(TARGET myptx PROPERTY CUDA_PTX_COMPILATION ON)
diff --git a/share/cmake-3.18/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst b/share/cmake-3.18/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst
deleted file mode 100644
index dae960f..0000000
--- a/share/cmake-3.18/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-CUDA_RESOLVE_DEVICE_SYMBOLS
----------------------------
-
-CUDA only: Enables device linking for the specific library target where
-required.
-
-If set, this will tell the required compilers to enable device linking
-on the library target. Device linking is an additional link step
-required by some CUDA compilers when :prop_tgt:`CUDA_SEPARABLE_COMPILATION` is
-enabled. Normally device linking is deferred until a shared library or
-executable is generated, allowing for multiple static libraries to resolve
-device symbols at the same time when they are used by a shared library or
-executable.
-
-By default static library targets have this property is disabled,
-while shared, module, and executable targets have this property enabled.
-
-Note that device linking is not supported for :ref:`Object Libraries`.
-
-
-For instance:
-
-.. code-block:: cmake
-
-  set_property(TARGET mystaticlib PROPERTY CUDA_RESOLVE_DEVICE_SYMBOLS ON)
diff --git a/share/cmake-3.18/Help/prop_tgt/CUDA_RUNTIME_LIBRARY.rst b/share/cmake-3.18/Help/prop_tgt/CUDA_RUNTIME_LIBRARY.rst
deleted file mode 100644
index 11b344c..0000000
--- a/share/cmake-3.18/Help/prop_tgt/CUDA_RUNTIME_LIBRARY.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-CUDA_RUNTIME_LIBRARY
---------------------
-
-Select the CUDA runtime library for use by compilers targeting the CUDA language.
-
-The allowed case insensitive values are:
-
-.. include:: CUDA_RUNTIME_LIBRARY-VALUES.txt
-
-Contents of ``CUDA_RUNTIME_LIBRARY`` may use
-:manual:`generator expressions <cmake-generator-expressions(7)>`.
-
-If that property is not set then CMake uses an appropriate default
-value based on the compiler to select the CUDA runtime library.
-
-.. note::
-
-  This property has effect only when the ``CUDA`` language is enabled. To
-  control the CUDA runtime linking when only using the CUDA SDK with the
-  ``C`` or ``C++`` language we recommend using the :module:`FindCUDAToolkit`
-  module.
diff --git a/share/cmake-3.18/Help/prop_tgt/CUDA_SEPARABLE_COMPILATION.rst b/share/cmake-3.18/Help/prop_tgt/CUDA_SEPARABLE_COMPILATION.rst
deleted file mode 100644
index d306d7f..0000000
--- a/share/cmake-3.18/Help/prop_tgt/CUDA_SEPARABLE_COMPILATION.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-CUDA_SEPARABLE_COMPILATION
---------------------------
-
-CUDA only: Enables separate compilation of device code
-
-If set this will enable separable compilation for all CUDA files for
-the given target.
-
-For instance:
-
-.. code-block:: cmake
-
-  set_property(TARGET myexe PROPERTY CUDA_SEPARABLE_COMPILATION ON)
-
-This property is initialized by the value of the
-:variable:`CMAKE_CUDA_SEPARABLE_COMPILATION` variable if it is set when a
-target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/CUDA_STANDARD.rst b/share/cmake-3.18/Help/prop_tgt/CUDA_STANDARD.rst
deleted file mode 100644
index 6d6774e..0000000
--- a/share/cmake-3.18/Help/prop_tgt/CUDA_STANDARD.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-CUDA_STANDARD
--------------
-
-The CUDA/C++ standard whose features are requested to build this target.
-
-This property specifies the CUDA/C++ standard whose features are requested
-to build this target.  For some compilers, this results in adding a
-flag such as ``-std=gnu++11`` to the compile line.
-
-Supported values are ``98``, ``03``, ``11``, ``14``, ``17``, ``20``.
-
-If the value requested does not result in a compile flag being added for
-the compiler in use, a previous standard flag will be added instead.  This
-means that using:
-
-.. code-block:: cmake
-
-  set_property(TARGET tgt PROPERTY CUDA_STANDARD 11)
-
-with a compiler which does not support ``-std=gnu++11`` or an equivalent
-flag will not result in an error or warning, but will instead add the
-``-std=gnu++98`` flag if supported.  This "decay" behavior may be controlled
-with the :prop_tgt:`CUDA_STANDARD_REQUIRED` target property.
-Additionally, the :prop_tgt:`CUDA_EXTENSIONS` target property may be used to
-control whether compiler-specific extensions are enabled on a per-target basis.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-This property is initialized by the value of
-the :variable:`CMAKE_CUDA_STANDARD` variable if it is set when a target
-is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/CUDA_STANDARD_REQUIRED.rst b/share/cmake-3.18/Help/prop_tgt/CUDA_STANDARD_REQUIRED.rst
deleted file mode 100644
index b2d5b28..0000000
--- a/share/cmake-3.18/Help/prop_tgt/CUDA_STANDARD_REQUIRED.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-CUDA_STANDARD_REQUIRED
-----------------------
-
-Boolean describing whether the value of :prop_tgt:`CUDA_STANDARD` is a requirement.
-
-If this property is set to ``ON``, then the value of the
-:prop_tgt:`CUDA_STANDARD` target property is treated as a requirement.  If this
-property is ``OFF`` or unset, the :prop_tgt:`CUDA_STANDARD` target property is
-treated as optional and may "decay" to a previous standard if the requested is
-not available.  For compilers that have no notion of a standard level, such as
-MSVC, this has no effect.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-This property is initialized by the value of
-the :variable:`CMAKE_CUDA_STANDARD_REQUIRED` variable if it is set when a
-target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/CXX_EXTENSIONS.rst b/share/cmake-3.18/Help/prop_tgt/CXX_EXTENSIONS.rst
deleted file mode 100644
index 280bb3a..0000000
--- a/share/cmake-3.18/Help/prop_tgt/CXX_EXTENSIONS.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-CXX_EXTENSIONS
---------------
-
-Boolean specifying whether compiler specific extensions are requested.
-
-This property specifies whether compiler specific extensions should be
-used.  For some compilers, this results in adding a flag such
-as ``-std=gnu++11`` instead of ``-std=c++11`` to the compile line.  This
-property is ``ON`` by default. The basic C++ standard level is
-controlled by the :prop_tgt:`CXX_STANDARD` target property.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-This property is initialized by the value of
-the :variable:`CMAKE_CXX_EXTENSIONS` variable if it is set when a target
-is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/CXX_STANDARD.rst b/share/cmake-3.18/Help/prop_tgt/CXX_STANDARD.rst
deleted file mode 100644
index ccc0147..0000000
--- a/share/cmake-3.18/Help/prop_tgt/CXX_STANDARD.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-CXX_STANDARD
-------------
-
-The C++ standard whose features are requested to build this target.
-
-This property specifies the C++ standard whose features are requested
-to build this target.  For some compilers, this results in adding a
-flag such as ``-std=gnu++11`` to the compile line.  For compilers that
-have no notion of a standard level, such as Microsoft Visual C++ before
-2015 Update 3, this has no effect.
-
-Supported values are ``98``, ``11``, ``14``, ``17``, and ``20``.
-
-If the value requested does not result in a compile flag being added for
-the compiler in use, a previous standard flag will be added instead.  This
-means that using:
-
-.. code-block:: cmake
-
-  set_property(TARGET tgt PROPERTY CXX_STANDARD 11)
-
-with a compiler which does not support ``-std=gnu++11`` or an equivalent
-flag will not result in an error or warning, but will instead add the
-``-std=gnu++98`` flag if supported.  This "decay" behavior may be controlled
-with the :prop_tgt:`CXX_STANDARD_REQUIRED` target property.
-Additionally, the :prop_tgt:`CXX_EXTENSIONS` target property may be used to
-control whether compiler-specific extensions are enabled on a per-target basis.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-This property is initialized by the value of
-the :variable:`CMAKE_CXX_STANDARD` variable if it is set when a target
-is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/CXX_STANDARD_REQUIRED.rst b/share/cmake-3.18/Help/prop_tgt/CXX_STANDARD_REQUIRED.rst
deleted file mode 100644
index 697d7f6..0000000
--- a/share/cmake-3.18/Help/prop_tgt/CXX_STANDARD_REQUIRED.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-CXX_STANDARD_REQUIRED
----------------------
-
-Boolean describing whether the value of :prop_tgt:`CXX_STANDARD` is a requirement.
-
-If this property is set to ``ON``, then the value of the
-:prop_tgt:`CXX_STANDARD` target property is treated as a requirement.  If this
-property is ``OFF`` or unset, the :prop_tgt:`CXX_STANDARD` target property is
-treated as optional and may "decay" to a previous standard if the requested is
-not available.  For compilers that have no notion of a standard level, such as
-MSVC, this has no effect.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-This property is initialized by the value of
-the :variable:`CMAKE_CXX_STANDARD_REQUIRED` variable if it is set when a
-target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/C_EXTENSIONS.rst b/share/cmake-3.18/Help/prop_tgt/C_EXTENSIONS.rst
deleted file mode 100644
index 05b14ce..0000000
--- a/share/cmake-3.18/Help/prop_tgt/C_EXTENSIONS.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-C_EXTENSIONS
-------------
-
-Boolean specifying whether compiler specific extensions are requested.
-
-This property specifies whether compiler specific extensions should be
-used.  For some compilers, this results in adding a flag such
-as ``-std=gnu11`` instead of ``-std=c11`` to the compile line.  This
-property is ``ON`` by default. The basic C standard level is
-controlled by the :prop_tgt:`C_STANDARD` target property.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-This property is initialized by the value of
-the :variable:`CMAKE_C_EXTENSIONS` variable if it is set when a target
-is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/C_STANDARD.rst b/share/cmake-3.18/Help/prop_tgt/C_STANDARD.rst
deleted file mode 100644
index 6a05139..0000000
--- a/share/cmake-3.18/Help/prop_tgt/C_STANDARD.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-C_STANDARD
-----------
-
-The C standard whose features are requested to build this target.
-
-This property specifies the C standard whose features are requested
-to build this target.  For some compilers, this results in adding a
-flag such as ``-std=gnu11`` to the compile line.  For compilers that
-have no notion of a C standard level, such as all versions of
-MSVC known as of this version of CMake, this has no effect.
-
-Supported values are ``90``, ``99`` and ``11``.
-
-If the value requested does not result in a compile flag being added for
-the compiler in use, a previous standard flag will be added instead.  This
-means that using:
-
-.. code-block:: cmake
-
-  set_property(TARGET tgt PROPERTY C_STANDARD 11)
-
-with a compiler which does not support ``-std=gnu11`` or an equivalent
-flag will not result in an error or warning, but will instead add the
-``-std=gnu99`` or ``-std=gnu90`` flag if supported.  This "decay" behavior may
-be controlled with the :prop_tgt:`C_STANDARD_REQUIRED` target property.
-Additionally, the :prop_tgt:`C_EXTENSIONS` target property may be used to
-control whether compiler-specific extensions are enabled on a per-target basis.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-This property is initialized by the value of
-the :variable:`CMAKE_C_STANDARD` variable if it is set when a target
-is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/C_STANDARD_REQUIRED.rst b/share/cmake-3.18/Help/prop_tgt/C_STANDARD_REQUIRED.rst
deleted file mode 100644
index acfad98..0000000
--- a/share/cmake-3.18/Help/prop_tgt/C_STANDARD_REQUIRED.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-C_STANDARD_REQUIRED
--------------------
-
-Boolean describing whether the value of :prop_tgt:`C_STANDARD` is a requirement.
-
-If this property is set to ``ON``, then the value of the
-:prop_tgt:`C_STANDARD` target property is treated as a requirement.  If this
-property is ``OFF`` or unset, the :prop_tgt:`C_STANDARD` target property is
-treated as optional and may "decay" to a previous standard if the requested is
-not available.  For compilers that have no notion of a standard level, such as
-MSVC, this has no effect.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-This property is initialized by the value of
-the :variable:`CMAKE_C_STANDARD_REQUIRED` variable if it is set when a
-target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/DEBUG_POSTFIX.rst b/share/cmake-3.18/Help/prop_tgt/DEBUG_POSTFIX.rst
deleted file mode 100644
index 04e312e..0000000
--- a/share/cmake-3.18/Help/prop_tgt/DEBUG_POSTFIX.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-DEBUG_POSTFIX
--------------
-
-See target property ``<CONFIG>_POSTFIX``.
-
-This property is a special case of the more-general ``<CONFIG>_POSTFIX``
-property for the ``DEBUG`` configuration.
diff --git a/share/cmake-3.18/Help/prop_tgt/DEPLOYMENT_ADDITIONAL_FILES.rst b/share/cmake-3.18/Help/prop_tgt/DEPLOYMENT_ADDITIONAL_FILES.rst
deleted file mode 100644
index 5e9c191..0000000
--- a/share/cmake-3.18/Help/prop_tgt/DEPLOYMENT_ADDITIONAL_FILES.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-DEPLOYMENT_ADDITIONAL_FILES
----------------------------
-
-Set the WinCE project ``AdditionalFiles`` in ``DeploymentTool`` in ``.vcproj``
-files generated by the :generator:`Visual Studio 9 2008` generator.
-This is useful when you want to debug on remote WinCE device.
-Specify additional files that will be copied to the device.
-For example:
-
-.. code-block:: cmake
-
-  set_property(TARGET ${TARGET} PROPERTY
-    DEPLOYMENT_ADDITIONAL_FILES "english.lng|local_folder|remote_folder|0"
-    "german.lng|local_folder|remote_folder|0")
-
-produces::
-
-  <DeploymentTool AdditionalFiles="english.lng|local_folder|remote_folder|0;german.lng|local_folder|remote_folder|0" ... />
diff --git a/share/cmake-3.18/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst b/share/cmake-3.18/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst
deleted file mode 100644
index 368768a..0000000
--- a/share/cmake-3.18/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-DEPLOYMENT_REMOTE_DIRECTORY
----------------------------
-
-Set the WinCE project ``RemoteDirectory`` in ``DeploymentTool`` and
-``RemoteExecutable`` in ``DebuggerTool`` in ``.vcproj`` files generated
-by the :generator:`Visual Studio 9 2008` generator.
-This is useful when you want to debug on remote WinCE device.
-For example:
-
-.. code-block:: cmake
-
-  set_property(TARGET ${TARGET} PROPERTY
-    DEPLOYMENT_REMOTE_DIRECTORY "\\FlashStorage")
-
-produces::
-
-  <DeploymentTool RemoteDirectory="\FlashStorage" ... />
-  <DebuggerTool RemoteExecutable="\FlashStorage\target_file" ... />
diff --git a/share/cmake-3.18/Help/prop_tgt/DEPRECATION.rst b/share/cmake-3.18/Help/prop_tgt/DEPRECATION.rst
deleted file mode 100644
index fef2e2e..0000000
--- a/share/cmake-3.18/Help/prop_tgt/DEPRECATION.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-DEPRECATION
------------
-
-Deprecation message from imported target's developer.
-
-``DEPRECATION`` is the message regarding a deprecation status to be displayed
-to downstream users of a target.
diff --git a/share/cmake-3.18/Help/prop_tgt/DISABLE_PRECOMPILE_HEADERS.rst b/share/cmake-3.18/Help/prop_tgt/DISABLE_PRECOMPILE_HEADERS.rst
deleted file mode 100644
index 4cef023..0000000
--- a/share/cmake-3.18/Help/prop_tgt/DISABLE_PRECOMPILE_HEADERS.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-DISABLE_PRECOMPILE_HEADERS
---------------------------
-
-Disables the precompilation of header files specified by
-:prop_tgt:`PRECOMPILE_HEADERS` property.
-
-If the property is not set, CMake will use the value provided
-by :variable:`CMAKE_DISABLE_PRECOMPILE_HEADERS`.
diff --git a/share/cmake-3.18/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK.rst b/share/cmake-3.18/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK.rst
deleted file mode 100644
index 8698eb6..0000000
--- a/share/cmake-3.18/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-DOTNET_TARGET_FRAMEWORK
------------------------
-
-Specify the .NET target framework.
-
-Used to specify the .NET target framework for C++/CLI and C#.  For
-example: ``netcoreapp2.1``.
-
-This property is only evaluated for :ref:`Visual Studio Generators`
-VS 2010 and above.
-
-Can be initialized for all targets using the variable
-:variable:`CMAKE_DOTNET_TARGET_FRAMEWORK`.
diff --git a/share/cmake-3.18/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK_VERSION.rst b/share/cmake-3.18/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK_VERSION.rst
deleted file mode 100644
index b33f4fb..0000000
--- a/share/cmake-3.18/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK_VERSION.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-DOTNET_TARGET_FRAMEWORK_VERSION
--------------------------------
-
-Specify the .NET target framework version.
-
-Used to specify the .NET target framework version for C++/CLI and C#.
-For example: ``v4.5``.
-
-This property is only evaluated for :ref:`Visual Studio Generators`
-VS 2010 and above.
-
-To initialize this variable for all targets set
-:variable:`CMAKE_DOTNET_TARGET_FRAMEWORK` or
-:variable:`CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION`. If both are set,
-the latter is ignored.
diff --git a/share/cmake-3.18/Help/prop_tgt/EXCLUDE_FROM_ALL.rst b/share/cmake-3.18/Help/prop_tgt/EXCLUDE_FROM_ALL.rst
deleted file mode 100644
index c9ece22..0000000
--- a/share/cmake-3.18/Help/prop_tgt/EXCLUDE_FROM_ALL.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-EXCLUDE_FROM_ALL
-----------------
-
-Set this target property to a true (or false) value to exclude (or include)
-the target from the "all" target of the containing directory and its
-ancestors.  If excluded, running e.g. ``make`` in the containing directory
-or its ancestors will not build the target by default.
-
-If this target property is not set then the target will be included in
-the "all" target of the containing directory.  Furthermore, it will be
-included in the "all" target of its ancestor directories unless the
-:prop_dir:`EXCLUDE_FROM_ALL` directory property is set.
-
-With ``EXCLUDE_FROM_ALL`` set to false or not set at all, the target
-will be brought up to date as part of doing a ``make install`` or its
-equivalent for the CMake generator being used.
-
-If a target has ``EXCLUDE_FROM_ALL`` set to true, it may still be listed
-in an :command:`install(TARGETS)` command, but the user is responsible for
-ensuring that the target's build artifacts are not missing or outdated when
-an install is performed.
diff --git a/share/cmake-3.18/Help/prop_tgt/EXPORT_PROPERTIES.rst b/share/cmake-3.18/Help/prop_tgt/EXPORT_PROPERTIES.rst
deleted file mode 100644
index bcf47a6..0000000
--- a/share/cmake-3.18/Help/prop_tgt/EXPORT_PROPERTIES.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-EXPORT_PROPERTIES
------------------
-
-List additional properties to export for a target.
-
-This property contains a list of property names that should be exported by
-the :command:`install(EXPORT)` and :command:`export` commands.  By default
-only a limited number of properties are exported. This property can be used
-to additionally export other properties as well.
-
-Properties starting with ``INTERFACE_`` or ``IMPORTED_`` are not allowed as
-they are reserved for internal CMake use.
-
-Properties containing generator expressions are also not allowed.
diff --git a/share/cmake-3.18/Help/prop_tgt/FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst b/share/cmake-3.18/Help/prop_tgt/FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst
deleted file mode 100644
index 243c0cd..0000000
--- a/share/cmake-3.18/Help/prop_tgt/FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>
----------------------------------------
-
-Postfix to append to the framework file name for configuration ``<CONFIG>``,
-when using a multi-config generator (like Xcode and Ninja Multi-Config).
-
-When building with configuration ``<CONFIG>`` the value of this property
-is appended to the framework file name built on disk.
-
-For example, given a framework called ``my_fw``, a value of ``_debug``
-for the ``FRAMEWORK_MULTI_CONFIG_POSTFIX_DEBUG`` property, and
-``Debug;Release`` in :variable:`CMAKE_CONFIGURATION_TYPES`, the following
-relevant files would be created for the ``Debug`` and ``Release``
-configurations:
-
-- ``Release/my_fw.framework/my_fw``
-- ``Release/my_fw.framework/Versions/A/my_fw``
-- ``Debug/my_fw.framework/my_fw_debug``
-- ``Debug/my_fw.framework/Versions/A/my_fw_debug``
-
-For framework targets, this property is initialized by the value of the
-:variable:`CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>` variable if it
-is set when a target is created.
-
-This property is ignored for non-framework targets, and when using single
-config generators.
diff --git a/share/cmake-3.18/Help/prop_tgt/FRAMEWORK_VERSION.rst b/share/cmake-3.18/Help/prop_tgt/FRAMEWORK_VERSION.rst
deleted file mode 100644
index c2ae7b9..0000000
--- a/share/cmake-3.18/Help/prop_tgt/FRAMEWORK_VERSION.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-FRAMEWORK_VERSION
------------------
-
-Version of a framework created using the :prop_tgt:`FRAMEWORK` target
-property (e.g. ``A``).
-
-This property only affects macOS, as iOS doesn't have versioned
-directory structure.
diff --git a/share/cmake-3.18/Help/prop_tgt/Fortran_MODULE_DIRECTORY.rst b/share/cmake-3.18/Help/prop_tgt/Fortran_MODULE_DIRECTORY.rst
deleted file mode 100644
index e061863..0000000
--- a/share/cmake-3.18/Help/prop_tgt/Fortran_MODULE_DIRECTORY.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-Fortran_MODULE_DIRECTORY
-------------------------
-
-Specify output directory for Fortran modules provided by the target.
-
-If the target contains Fortran source files that provide modules and
-the compiler supports a module output directory this specifies the
-directory in which the modules will be placed.  When this property is
-not set the modules will be placed in the build directory
-corresponding to the target's source directory.  If the variable
-:variable:`CMAKE_Fortran_MODULE_DIRECTORY` is set when a target is created its
-value is used to initialize this property.
-
-Note that some compilers will automatically search the module output
-directory for modules USEd during compilation but others will not.  If
-your sources USE modules their location must be specified by
-:prop_tgt:`INCLUDE_DIRECTORIES` regardless of this property.
diff --git a/share/cmake-3.18/Help/prop_tgt/Fortran_PREPROCESS.rst b/share/cmake-3.18/Help/prop_tgt/Fortran_PREPROCESS.rst
deleted file mode 100644
index 47a15c0..0000000
--- a/share/cmake-3.18/Help/prop_tgt/Fortran_PREPROCESS.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-Fortran_PREPROCESS
-------------------
-
-Control whether the Fortran source file should be unconditionally
-preprocessed.
-
-If unset or empty, rely on the compiler to determine whether the file
-should be preprocessed. If explicitly set to ``OFF`` then the file does not
-need to be preprocessed. If explicitly set to ``ON``, then the file does
-need to be preprocessed as part of the compilation step.
-
-When using the :generator:`Ninja` generator, all source files are
-first preprocessed in order to generate module dependency
-information. Setting this property to ``OFF`` will make ``Ninja``
-skip this step.
-
-Use the source-specific :prop_sf:`Fortran_PREPROCESS` property if a single
-file needs to be preprocessed. If the variable
-:variable:`CMAKE_Fortran_PREPROCESS` is set when a target is created its
-value is used to initialize this property.
-
-.. note:: For some compilers, ``NAG``, ``PGI`` and ``Solaris Studio``,
-          setting this to ``OFF`` will have no effect.
diff --git a/share/cmake-3.18/Help/prop_tgt/GHS_INTEGRITY_APP.rst b/share/cmake-3.18/Help/prop_tgt/GHS_INTEGRITY_APP.rst
deleted file mode 100644
index b669781..0000000
--- a/share/cmake-3.18/Help/prop_tgt/GHS_INTEGRITY_APP.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-GHS_INTEGRITY_APP
------------------
-
-``ON`` / ``OFF`` boolean to determine if an executable target should
-be treated as an `Integrity Application`.
-
-If no value is set and if a ``.int`` file is added as a source file to the
-executable target it will be treated as an `Integrity Application`.
-
-Supported on :generator:`Green Hills MULTI`.
diff --git a/share/cmake-3.18/Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst b/share/cmake-3.18/Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst
deleted file mode 100644
index 11ce0b2..0000000
--- a/share/cmake-3.18/Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-GHS_NO_SOURCE_GROUP_FILE
-------------------------
-
-``ON`` / ``OFF`` boolean to control if the project file for a target should
-be one single file or multiple files.
-
-The default behavior or when the property is ``OFF`` is to generate a project
-file for the target and then a sub-project file for each source group.
-
-When this property is ``ON`` or if :variable:`CMAKE_GHS_NO_SOURCE_GROUP_FILE`
-is ``ON`` then only a single project file is generated for the target.
-
-Supported on :generator:`Green Hills MULTI`.
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst b/share/cmake-3.18/Help/prop_tgt/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst
deleted file mode 100644
index dc73807..0000000
--- a/share/cmake-3.18/Help/prop_tgt/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
-----------------------------------
-
-Specify #include line transforms for dependencies in a target.
-
-This property specifies rules to transform macro-like #include lines
-during implicit dependency scanning of C and C++ source files.  The
-list of rules must be semicolon-separated with each entry of the form
-"A_MACRO(%)=value-with-%" (the % must be literal).  During dependency
-scanning occurrences of A_MACRO(...) on #include lines will be
-replaced by the value given with the macro argument substituted for
-'%'.  For example, the entry
-
-::
-
-  MYDIR(%)=<mydir/%>
-
-will convert lines of the form
-
-::
-
-  #include MYDIR(myheader.h)
-
-to
-
-::
-
-  #include <mydir/myheader.h>
-
-allowing the dependency to be followed.
-
-This property applies to sources in the target on which it is set.
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_COMMON_LANGUAGE_RUNTIME.rst b/share/cmake-3.18/Help/prop_tgt/IMPORTED_COMMON_LANGUAGE_RUNTIME.rst
deleted file mode 100644
index 99e3bc4..0000000
--- a/share/cmake-3.18/Help/prop_tgt/IMPORTED_COMMON_LANGUAGE_RUNTIME.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-IMPORTED_COMMON_LANGUAGE_RUNTIME
---------------------------------
-
-Property to define if the target uses ``C++/CLI``.
-
-Ignored for non-imported targets.
-
-See also the :prop_tgt:`COMMON_LANGUAGE_RUNTIME` target property.
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_GLOBAL.rst b/share/cmake-3.18/Help/prop_tgt/IMPORTED_GLOBAL.rst
deleted file mode 100644
index 1a9129f..0000000
--- a/share/cmake-3.18/Help/prop_tgt/IMPORTED_GLOBAL.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-IMPORTED_GLOBAL
----------------
-
-Indication of whether an :ref:`IMPORTED target <Imported Targets>` is
-globally visible.
-
-The boolean value of this property is True for targets created with the
-``IMPORTED`` ``GLOBAL`` options to :command:`add_executable()` or
-:command:`add_library()`. It is always False for targets built within the
-project.
-
-For targets created with the ``IMPORTED`` option to
-:command:`add_executable()` or :command:`add_library()` but without the
-additional option ``GLOBAL`` this is False, too. However, setting this
-property for such a locally ``IMPORTED`` target to True promotes that
-target to global scope. This promotion can only be done in the same
-directory where that ``IMPORTED`` target was created in the first place.
-
-.. note::
-
-  Once an imported target has been made global, it cannot be changed back to
-  non-global. Therefore, if a project sets this property, it may only
-  provide a value of True. CMake will issue an error if the project tries to
-  set the property to a non-True value, even if the value was already False.
-
-.. note::
-
-  Local :ref:`ALIAS targets <Alias Targets>` created before promoting an
-  :ref:`IMPORTED target <Imported Targets>` from ``LOCAL`` to ``GLOBAL``, keep
-  their initial scope (see :prop_tgt:`ALIAS_GLOBAL` target property).
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_LIBNAME.rst b/share/cmake-3.18/Help/prop_tgt/IMPORTED_LIBNAME.rst
deleted file mode 100644
index 1943dba..0000000
--- a/share/cmake-3.18/Help/prop_tgt/IMPORTED_LIBNAME.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-IMPORTED_LIBNAME
-----------------
-
-Specify the link library name for an :ref:`imported <Imported Targets>`
-:ref:`Interface Library <Interface Libraries>`.
-
-An interface library builds no library file itself but does specify
-usage requirements for its consumers.  The ``IMPORTED_LIBNAME``
-property may be set to specify a single library name to be placed
-on the link line in place of the interface library target name as
-a requirement for using the interface.
-
-This property is intended for use in naming libraries provided by
-a platform SDK for which the full path to a library file may not
-be known.  The value may be a plain library name such as ``foo``
-but may *not* be a path (e.g. ``/usr/lib/libfoo.so``) or a flag
-(e.g. ``-Wl,...``).  The name is never treated as a library target
-name even if it happens to name one.
-
-The ``IMPORTED_LIBNAME`` property is allowed only on
-:ref:`imported <Imported Targets>` :ref:`Interface Libraries`
-and is rejected on targets of other types (for which
-the :prop_tgt:`IMPORTED_LOCATION` target property may be used).
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst b/share/cmake-3.18/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst
deleted file mode 100644
index a28b838..0000000
--- a/share/cmake-3.18/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-IMPORTED_LIBNAME_<CONFIG>
--------------------------
-
-<CONFIG>-specific version of :prop_tgt:`IMPORTED_LIBNAME` property.
-
-Configuration names correspond to those provided by the project from
-which the target is imported.
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_LOCATION.rst b/share/cmake-3.18/Help/prop_tgt/IMPORTED_LOCATION.rst
deleted file mode 100644
index f0a1646..0000000
--- a/share/cmake-3.18/Help/prop_tgt/IMPORTED_LOCATION.rst
+++ /dev/null
@@ -1,31 +0,0 @@
-IMPORTED_LOCATION
------------------
-
-Full path to the main file on disk for an ``IMPORTED`` target.
-
-Set this to the location of an ``IMPORTED`` target file on disk.  For
-executables this is the location of the executable file.  For bundles
-on macOS this is the location of the executable file inside
-``Contents/MacOS`` under the application bundle folder.  For ``STATIC``
-libraries and modules this is the location of the library or module.
-For ``SHARED`` libraries on non-DLL platforms this is the location of the
-shared library.  For frameworks on macOS this is the location of the
-library file symlink just inside the framework folder.  For DLLs this
-is the location of the ``.dll`` part of the library.  For ``UNKNOWN``
-libraries this is the location of the file to be linked.  Ignored for
-non-imported targets.
-
-The ``IMPORTED_LOCATION`` target property may be overridden for a
-given configuration ``<CONFIG>`` by the configuration-specific
-:prop_tgt:`IMPORTED_LOCATION_<CONFIG>` target property.  Furthermore,
-the :prop_tgt:`MAP_IMPORTED_CONFIG_<CONFIG>` target property may be
-used to map between a project's configurations and those of an imported
-target.  If none of these is set then the name of any other configuration
-listed in the :prop_tgt:`IMPORTED_CONFIGURATIONS` target property may be
-selected and its :prop_tgt:`IMPORTED_LOCATION_<CONFIG>` value used.
-
-To get the location of an imported target read one of the :prop_tgt:`LOCATION`
-or ``LOCATION_<CONFIG>`` properties.
-
-For platforms with import libraries (e.g. Windows) see also
-:prop_tgt:`IMPORTED_IMPLIB`.
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_OBJECTS.rst b/share/cmake-3.18/Help/prop_tgt/IMPORTED_OBJECTS.rst
deleted file mode 100644
index 50a329f..0000000
--- a/share/cmake-3.18/Help/prop_tgt/IMPORTED_OBJECTS.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-IMPORTED_OBJECTS
-----------------
-
-A :ref:`semicolon-separated list <CMake Language Lists>` of absolute paths to the object
-files on disk for an :ref:`imported <Imported targets>`
-:ref:`object library <object libraries>`.
-
-Ignored for non-imported targets.
-
-Projects may skip ``IMPORTED_OBJECTS`` if the configuration-specific
-property :prop_tgt:`IMPORTED_OBJECTS_<CONFIG>` is set instead.
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_OBJECTS_CONFIG.rst b/share/cmake-3.18/Help/prop_tgt/IMPORTED_OBJECTS_CONFIG.rst
deleted file mode 100644
index 4419ed1..0000000
--- a/share/cmake-3.18/Help/prop_tgt/IMPORTED_OBJECTS_CONFIG.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-IMPORTED_OBJECTS_<CONFIG>
--------------------------
-
-<CONFIG>-specific version of :prop_tgt:`IMPORTED_OBJECTS` property.
-
-Configuration names correspond to those provided by the project from
-which the target is imported.
diff --git a/share/cmake-3.18/Help/prop_tgt/INSTALL_NAME_DIR.rst b/share/cmake-3.18/Help/prop_tgt/INSTALL_NAME_DIR.rst
deleted file mode 100644
index 747615a..0000000
--- a/share/cmake-3.18/Help/prop_tgt/INSTALL_NAME_DIR.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-INSTALL_NAME_DIR
-----------------
-
-macOS directory name for installed targets.
-
-``INSTALL_NAME_DIR`` is a string specifying the directory portion of the
-"install_name" field of shared libraries on macOS to use in the
-installed targets.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_INSTALL_NAME_DIR` if it is set when a target is
-created.
-
-This property supports :manual:`generator expressions <cmake-generator-expressions(7)>`.
-In particular, the ``$<INSTALL_PREFIX>`` generator expression can be used to set the
-directory relative to the install-time prefix.
diff --git a/share/cmake-3.18/Help/prop_tgt/INSTALL_REMOVE_ENVIRONMENT_RPATH.rst b/share/cmake-3.18/Help/prop_tgt/INSTALL_REMOVE_ENVIRONMENT_RPATH.rst
deleted file mode 100644
index 72dcaa0..0000000
--- a/share/cmake-3.18/Help/prop_tgt/INSTALL_REMOVE_ENVIRONMENT_RPATH.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-INSTALL_REMOVE_ENVIRONMENT_RPATH
---------------------------------
-
-Controls whether toolchain-defined rpaths should be removed during installation.
-
-When a target is being installed, CMake may need to rewrite its rpath
-information.  This occurs when the install rpath (as specified by the
-:prop_tgt:`INSTALL_RPATH` target property) has different contents to the rpath
-that the target was built with.  Some toolchains insert their own rpath
-contents into the binary as part of the build.  By default, CMake will
-preserve those extra inserted contents in the install rpath.  For those
-scenarios where such toolchain-inserted entries need to be discarded during
-install, set the ``INSTALL_REMOVE_ENVIRONMENT_RPATH`` target property to true.
-
-This property is initialized by the value of
-:variable:`CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH` when the target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst b/share/cmake-3.18/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst
deleted file mode 100644
index 31b594f..0000000
--- a/share/cmake-3.18/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-INTERFACE_COMPILE_FEATURES
---------------------------
-
-.. |property_name| replace:: compile features
-.. |command_name| replace:: :command:`target_compile_features`
-.. |PROPERTY_INTERFACE_NAME| replace:: ``INTERFACE_COMPILE_FEATURES``
-.. |PROPERTY_LINK| replace:: :prop_tgt:`COMPILE_FEATURES`
-.. |PROPERTY_GENEX| replace:: ``$<TARGET_PROPERTY:foo,INTERFACE_COMPILE_FEATURES>``
-.. include:: INTERFACE_BUILD_PROPERTY.txt
-
-See the :manual:`cmake-compile-features(7)` manual for information on compile
-features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/prop_tgt/INTERFACE_LINK_DEPENDS.rst b/share/cmake-3.18/Help/prop_tgt/INTERFACE_LINK_DEPENDS.rst
deleted file mode 100644
index 790554d..0000000
--- a/share/cmake-3.18/Help/prop_tgt/INTERFACE_LINK_DEPENDS.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-INTERFACE_LINK_DEPENDS
-----------------------
-
-Additional public interface files on which a target binary depends for linking.
-
-This property is supported only by :generator:`Ninja` and
-:ref:`Makefile Generators`.
-It is intended to specify dependencies on "linker scripts" for
-custom Makefile link rules.
-
-When target dependencies are specified using :command:`target_link_libraries`,
-CMake will read this property from all target dependencies to determine the
-build properties of the consumer.
-
-Contents of ``INTERFACE_LINK_DEPENDS`` may use "generator expressions"
-with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
--manual for more on defining buildsystem properties.
-
-Link dependency files usage requirements commonly differ between the build-tree
-and the install-tree.  The ``BUILD_INTERFACE`` and ``INSTALL_INTERFACE``
-generator expressions can be used to describe separate usage requirements
-based on the usage location.  Relative paths are allowed within the
-``INSTALL_INTERFACE`` expression and are interpreted relative to the
-installation prefix.  For example:
-
-.. code-block:: cmake
-
-  set_property(TARGET mylib PROPERTY INTERFACE_LINK_DEPENDS
-    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/mylinkscript>
-    $<INSTALL_INTERFACE:mylinkscript>  # <prefix>/mylinkscript
-  )
diff --git a/share/cmake-3.18/Help/prop_tgt/INTERFACE_LINK_DIRECTORIES.rst b/share/cmake-3.18/Help/prop_tgt/INTERFACE_LINK_DIRECTORIES.rst
deleted file mode 100644
index 56a4ec0..0000000
--- a/share/cmake-3.18/Help/prop_tgt/INTERFACE_LINK_DIRECTORIES.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-INTERFACE_LINK_DIRECTORIES
---------------------------
-
-.. |property_name| replace:: link directories
-.. |command_name| replace:: :command:`target_link_directories`
-.. |PROPERTY_INTERFACE_NAME| replace:: ``INTERFACE_LINK_DIRECTORIES``
-.. |PROPERTY_LINK| replace:: :prop_tgt:`LINK_DIRECTORIES`
-.. |PROPERTY_GENEX| replace:: ``$<TARGET_PROPERTY:foo,INTERFACE_LINK_DIRECTORIES>``
-.. include:: INTERFACE_BUILD_PROPERTY.txt
diff --git a/share/cmake-3.18/Help/prop_tgt/INTERFACE_LINK_OPTIONS.rst b/share/cmake-3.18/Help/prop_tgt/INTERFACE_LINK_OPTIONS.rst
deleted file mode 100644
index c293b98..0000000
--- a/share/cmake-3.18/Help/prop_tgt/INTERFACE_LINK_OPTIONS.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-INTERFACE_LINK_OPTIONS
-----------------------
-
-.. |property_name| replace:: link options
-.. |command_name| replace:: :command:`target_link_options`
-.. |PROPERTY_INTERFACE_NAME| replace:: ``INTERFACE_LINK_OPTIONS``
-.. |PROPERTY_LINK| replace:: :prop_tgt:`LINK_OPTIONS`
-.. |PROPERTY_GENEX| replace:: ``$<TARGET_PROPERTY:foo,INTERFACE_LINK_OPTIONS>``
-.. include:: INTERFACE_BUILD_PROPERTY.txt
diff --git a/share/cmake-3.18/Help/prop_tgt/INTERFACE_PRECOMPILE_HEADERS.rst b/share/cmake-3.18/Help/prop_tgt/INTERFACE_PRECOMPILE_HEADERS.rst
deleted file mode 100644
index e285407..0000000
--- a/share/cmake-3.18/Help/prop_tgt/INTERFACE_PRECOMPILE_HEADERS.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-INTERFACE_PRECOMPILE_HEADERS
-----------------------------
-
-List of interface header files to precompile into consuming targets.
-
-Targets may populate this property to publish the header files
-for consuming targets to precompile.  The :command:`target_precompile_headers`
-command populates this property with values given to the ``PUBLIC`` and
-``INTERFACE`` keywords.  Projects may also get and set the property directly.
-See the discussion in :command:`target_precompile_headers` for guidance on
-appropriate use of this property for installed or exported targets.
-
-Contents of ``INTERFACE_PRECOMPILE_HEADERS`` may use "generator expressions"
-with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
-manual for more on defining buildsystem properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/INTERFACE_SOURCES.rst b/share/cmake-3.18/Help/prop_tgt/INTERFACE_SOURCES.rst
deleted file mode 100644
index a224b68..0000000
--- a/share/cmake-3.18/Help/prop_tgt/INTERFACE_SOURCES.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-INTERFACE_SOURCES
------------------
-
-List of interface sources to compile into consuming targets.
-
-Targets may populate this property to publish the sources
-for consuming targets to compile.  The :command:`target_sources` command
-populates this property with values given to the ``PUBLIC`` and
-``INTERFACE`` keywords.  Projects may also get and set the property directly.
-
-When target dependencies are specified using :command:`target_link_libraries`,
-CMake will read this property from all target dependencies to determine the
-sources of the consumer.
-
-Contents of ``INTERFACE_SOURCES`` may use "generator expressions"
-with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
-manual for more on defining buildsystem properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/IOS_INSTALL_COMBINED.rst b/share/cmake-3.18/Help/prop_tgt/IOS_INSTALL_COMBINED.rst
deleted file mode 100644
index 59f67a7..0000000
--- a/share/cmake-3.18/Help/prop_tgt/IOS_INSTALL_COMBINED.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-IOS_INSTALL_COMBINED
---------------------
-
-Build a combined (device and simulator) target when installing.
-
-When this property is set to set to false (which is the default) then it will
-either be built with the device SDK or the simulator SDK depending on the SDK
-set. But if this property is set to true then the target will at install time
-also be built for the corresponding SDK and combined into one library.
-
-This feature requires at least Xcode version 6.
diff --git a/share/cmake-3.18/Help/prop_tgt/JOB_POOL_PRECOMPILE_HEADER.rst b/share/cmake-3.18/Help/prop_tgt/JOB_POOL_PRECOMPILE_HEADER.rst
deleted file mode 100644
index ece28a4..0000000
--- a/share/cmake-3.18/Help/prop_tgt/JOB_POOL_PRECOMPILE_HEADER.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-JOB_POOL_PRECOMPILE_HEADER
---------------------------
-
-Ninja only: Pool used for generating pre-compiled headers.
-
-The number of parallel compile processes could be limited by defining
-pools with the global :prop_gbl:`JOB_POOLS`
-property and then specifying here the pool name.
-
-For instance:
-
-.. code-block:: cmake
-
-  set_property(TARGET myexe PROPERTY JOB_POOL_PRECOMPILE_HEADER two_jobs)
-
-This property is initialized by the value of
-:variable:`CMAKE_JOB_POOL_PRECOMPILE_HEADER`.
-
-If neither :prop_tgt:`JOB_POOL_PRECOMPILE_HEADER` nor
-:variable:`CMAKE_JOB_POOL_PRECOMPILE_HEADER` are set then
-:prop_tgt:`JOB_POOL_COMPILE` will be used for this task.
diff --git a/share/cmake-3.18/Help/prop_tgt/LANG_CLANG_TIDY.rst b/share/cmake-3.18/Help/prop_tgt/LANG_CLANG_TIDY.rst
deleted file mode 100644
index 2bfef66..0000000
--- a/share/cmake-3.18/Help/prop_tgt/LANG_CLANG_TIDY.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-<LANG>_CLANG_TIDY
------------------
-
-This property is implemented only when ``<LANG>`` is ``C`` or ``CXX``.
-
-Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a command
-line for the ``clang-tidy`` tool.  The :ref:`Makefile Generators`
-and the :generator:`Ninja` generator will run this tool along with the
-compiler and report a warning if the tool reports any problems.
-
-This property is initialized by the value of
-the :variable:`CMAKE_<LANG>_CLANG_TIDY` variable if it is set
-when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst b/share/cmake-3.18/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst
deleted file mode 100644
index a6f2b24..0000000
--- a/share/cmake-3.18/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-<LANG>_COMPILER_LAUNCHER
-------------------------
-
-This property is implemented only when ``<LANG>`` is ``C``, ``CXX``,
-``Fortran``, ``OBJC``, ``OBJCXX``, or ``CUDA``.
-
-Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a command line
-for a compiler launching tool. The :ref:`Makefile Generators` and the
-:generator:`Ninja` generator will run this tool and pass the compiler and
-its arguments to the tool. Some example tools are distcc and ccache.
-
-This property is initialized by the value of
-the :variable:`CMAKE_<LANG>_COMPILER_LAUNCHER` variable if it is set
-when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/LANG_CPPCHECK.rst b/share/cmake-3.18/Help/prop_tgt/LANG_CPPCHECK.rst
deleted file mode 100644
index 60785d0..0000000
--- a/share/cmake-3.18/Help/prop_tgt/LANG_CPPCHECK.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-<LANG>_CPPCHECK
----------------
-
-This property is supported only when ``<LANG>`` is ``C`` or ``CXX``.
-
-Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a command line
-for the ``cppcheck`` static analysis tool.  The :ref:`Makefile Generators`
-and the :generator:`Ninja` generator will run ``cppcheck`` along with the
-compiler and report any problems.  If the command-line specifies the
-exit code options to ``cppcheck`` then the build  will fail if the
-tool returns non-zero.
-
-This property is initialized by the value of the
-:variable:`CMAKE_<LANG>_CPPCHECK` variable if it is set when a target is
-created.
diff --git a/share/cmake-3.18/Help/prop_tgt/LANG_CPPLINT.rst b/share/cmake-3.18/Help/prop_tgt/LANG_CPPLINT.rst
deleted file mode 100644
index 9944c88..0000000
--- a/share/cmake-3.18/Help/prop_tgt/LANG_CPPLINT.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-<LANG>_CPPLINT
---------------
-
-This property is supported only when ``<LANG>`` is ``C`` or ``CXX``.
-
-Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a command line
-for the ``cpplint`` style checker.  The :ref:`Makefile Generators` and the
-:generator:`Ninja` generator will run ``cpplint`` along with the compiler
-and report any problems.
-
-This property is initialized by the value of the
-:variable:`CMAKE_<LANG>_CPPLINT` variable if it is set when a target is
-created.
diff --git a/share/cmake-3.18/Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst b/share/cmake-3.18/Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst
deleted file mode 100644
index 35220e4..0000000
--- a/share/cmake-3.18/Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-<LANG>_INCLUDE_WHAT_YOU_USE
----------------------------
-
-This property is implemented only when ``<LANG>`` is ``C`` or ``CXX``.
-
-Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a command
-line for the ``include-what-you-use`` tool.  The :ref:`Makefile Generators`
-and the :generator:`Ninja` generator will run this tool along with the
-compiler and report a warning if the tool reports any problems.
-
-This property is initialized by the value of
-the :variable:`CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE` variable if it is set
-when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY.rst b/share/cmake-3.18/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY.rst
deleted file mode 100644
index 785a57b..0000000
--- a/share/cmake-3.18/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-LIBRARY_OUTPUT_DIRECTORY
-------------------------
-
-.. |XXX| replace:: :ref:`LIBRARY <Library Output Artifacts>`
-.. |xxx| replace:: library
-.. |CMAKE_XXX_OUTPUT_DIRECTORY| replace:: CMAKE_LIBRARY_OUTPUT_DIRECTORY
-.. include:: XXX_OUTPUT_DIRECTORY.txt
-
-See also the :prop_tgt:`LIBRARY_OUTPUT_DIRECTORY_<CONFIG>` target property.
diff --git a/share/cmake-3.18/Help/prop_tgt/LINK_DEPENDS_NO_SHARED.rst b/share/cmake-3.18/Help/prop_tgt/LINK_DEPENDS_NO_SHARED.rst
deleted file mode 100644
index 5c6778d..0000000
--- a/share/cmake-3.18/Help/prop_tgt/LINK_DEPENDS_NO_SHARED.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-LINK_DEPENDS_NO_SHARED
-----------------------
-
-Do not depend on linked shared library files.
-
-Set this property to true to tell CMake generators not to add
-file-level dependencies on the shared library files linked by this
-target.  Modification to the shared libraries will not be sufficient
-to re-link this target.  Logical target-level dependencies will not be
-affected so the linked shared libraries will still be brought up to
-date before this target is built.
-
-This property is initialized by the value of the variable
-CMAKE_LINK_DEPENDS_NO_SHARED if it is set when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/LINK_DIRECTORIES.rst b/share/cmake-3.18/Help/prop_tgt/LINK_DIRECTORIES.rst
deleted file mode 100644
index c2905b3..0000000
--- a/share/cmake-3.18/Help/prop_tgt/LINK_DIRECTORIES.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-LINK_DIRECTORIES
-----------------
-
-List of directories to use for the link step of shared library, module
-and executable targets.
-
-This property holds a :ref:`semicolon-separated list <CMake Language Lists>` of directories
-specified so far for its target.  Use the :command:`target_link_directories`
-command to append more search directories.
-
-This property is initialized by the :prop_dir:`LINK_DIRECTORIES` directory
-property when a target is created, and is used by the generators to set
-the search directories for the linker.
-
-Contents of ``LINK_DIRECTORIES`` may use "generator expressions" with the
-syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual
-for available expressions.  See the :manual:`cmake-buildsystem(7)` manual
-for more on defining buildsystem properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/LINK_OPTIONS.rst b/share/cmake-3.18/Help/prop_tgt/LINK_OPTIONS.rst
deleted file mode 100644
index ff3ee87..0000000
--- a/share/cmake-3.18/Help/prop_tgt/LINK_OPTIONS.rst
+++ /dev/null
@@ -1,28 +0,0 @@
-LINK_OPTIONS
-------------
-
-List of options to use for the link step of shared library, module
-and executable targets as well as the device link step. Targets that are static
-libraries need to use the :prop_tgt:`STATIC_LIBRARY_OPTIONS` target property.
-
-These options are used for both normal linking and device linking
-(see policy :policy:`CMP0105`). To control link options for normal and device
-link steps, ``$<HOST_LINK>`` and ``$<DEVICE_LINK>``
-:manual:`generator expressions <cmake-generator-expressions(7)>` can be used.
-
-This property holds a :ref:`semicolon-separated list <CMake Language Lists>` of
-options specified so far for its target.  Use the :command:`target_link_options`
-command to append more options.
-
-This property is initialized by the :prop_dir:`LINK_OPTIONS` directory
-property when a target is created, and is used by the generators to set
-the options for the compiler.
-
-Contents of ``LINK_OPTIONS`` may use "generator expressions" with the
-syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual
-for available expressions.  See the :manual:`cmake-buildsystem(7)` manual
-for more on defining buildsystem properties.
-
-.. note::
-
-  This property must be used in preference to :prop_tgt:`LINK_FLAGS` property.
diff --git a/share/cmake-3.18/Help/prop_tgt/LINK_WHAT_YOU_USE.rst b/share/cmake-3.18/Help/prop_tgt/LINK_WHAT_YOU_USE.rst
deleted file mode 100644
index 32d6edb..0000000
--- a/share/cmake-3.18/Help/prop_tgt/LINK_WHAT_YOU_USE.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-LINK_WHAT_YOU_USE
----------------------------
-
-This is a boolean option that when set to ``TRUE`` will automatically run
-``ldd -r -u`` on the target after it is linked. In addition, the linker flag
-``-Wl,--no-as-needed`` will be passed to the target with the link command so
-that all libraries specified on the command line will be linked into the
-target. This will result in the link producing a list of libraries that
-provide no symbols used by this target but are being linked to it.
-This is only applicable to executable and shared library targets and
-will only work when ld and ldd accept the flags used.
-
-This property is initialized by the value of
-the :variable:`CMAKE_LINK_WHAT_YOU_USE` variable if it is set
-when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/MACHO_COMPATIBILITY_VERSION.rst b/share/cmake-3.18/Help/prop_tgt/MACHO_COMPATIBILITY_VERSION.rst
deleted file mode 100644
index 26d5cc8..0000000
--- a/share/cmake-3.18/Help/prop_tgt/MACHO_COMPATIBILITY_VERSION.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-MACHO_COMPATIBILITY_VERSION
----------------------------
-
-What compatibility version number is this target for Mach-O binaries.
-
-For shared libraries on Mach-O systems (e.g. macOS, iOS)
-the ``MACHO_COMPATIBILITY_VERSION`` property corresponds to the
-*compatibility version* and :prop_tgt:`MACHO_CURRENT_VERSION` corresponds to
-the *current version*.  These are both embedded in the shared library binary
-and can be checked with the ``otool -L <binary>`` command.
-
-It should be noted that the :prop_tgt:`MACHO_CURRENT_VERSION` and
-``MACHO_COMPATIBILITY_VERSION`` properties do not affect the file
-names or version-related symlinks that CMake generates for the library.
-The :prop_tgt:`VERSION` and :prop_tgt:`SOVERSION` target properties still
-control the file and symlink names.  The ``install_name`` is also still
-controlled by :prop_tgt:`SOVERSION`.
-
-When :prop_tgt:`MACHO_CURRENT_VERSION` and ``MACHO_COMPATIBILITY_VERSION``
-are not given, :prop_tgt:`VERSION` and :prop_tgt:`SOVERSION` are used for
-the version details to be embedded in the binaries respectively.
-The :prop_tgt:`MACHO_CURRENT_VERSION` and ``MACHO_COMPATIBILITY_VERSION``
-properties only need to be given if the project needs to decouple the file
-and symlink naming from the version details embedded in the binaries
-(e.g. to match libtool conventions).
diff --git a/share/cmake-3.18/Help/prop_tgt/MACHO_CURRENT_VERSION.rst b/share/cmake-3.18/Help/prop_tgt/MACHO_CURRENT_VERSION.rst
deleted file mode 100644
index 9afb356..0000000
--- a/share/cmake-3.18/Help/prop_tgt/MACHO_CURRENT_VERSION.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-MACHO_CURRENT_VERSION
----------------------
-
-What current version number is this target for Mach-O binaries.
-
-For shared libraries on Mach-O systems (e.g. macOS, iOS)
-the :prop_tgt:`MACHO_COMPATIBILITY_VERSION` property corresponds to the
-*compatibility version* and ``MACHO_CURRENT_VERSION`` corresponds to the
-*current version*.  These are both embedded in the shared library binary
-and can be checked with the ``otool -L <binary>`` command.
-
-It should be noted that the ``MACHO_CURRENT_VERSION`` and
-:prop_tgt:`MACHO_COMPATIBILITY_VERSION` properties do not affect the file
-names or version-related symlinks that CMake generates for the library.
-The :prop_tgt:`VERSION` and :prop_tgt:`SOVERSION` target properties still
-control the file and symlink names.  The ``install_name`` is also still
-controlled by :prop_tgt:`SOVERSION`.
-
-When ``MACHO_CURRENT_VERSION`` and :prop_tgt:`MACHO_COMPATIBILITY_VERSION`
-are not given, :prop_tgt:`VERSION` and :prop_tgt:`SOVERSION` are used for
-the version details to be embedded in the binaries respectively.
-The ``MACHO_CURRENT_VERSION`` and :prop_tgt:`MACHO_COMPATIBILITY_VERSION`
-properties only need to be given if the project needs to decouple the file
-and symlink naming from the version details embedded in the binaries
-(e.g. to match libtool conventions).
diff --git a/share/cmake-3.18/Help/prop_tgt/MANUALLY_ADDED_DEPENDENCIES.rst b/share/cmake-3.18/Help/prop_tgt/MANUALLY_ADDED_DEPENDENCIES.rst
deleted file mode 100644
index c12ea14..0000000
--- a/share/cmake-3.18/Help/prop_tgt/MANUALLY_ADDED_DEPENDENCIES.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-MANUALLY_ADDED_DEPENDENCIES
----------------------------
-
-Get manually added dependencies to other top-level targets.
-
-This read-only property can be used to query all dependencies that
-were added for this target with the :command:`add_dependencies`
-command.
diff --git a/share/cmake-3.18/Help/prop_tgt/MSVC_RUNTIME_LIBRARY.rst b/share/cmake-3.18/Help/prop_tgt/MSVC_RUNTIME_LIBRARY.rst
deleted file mode 100644
index 73792de..0000000
--- a/share/cmake-3.18/Help/prop_tgt/MSVC_RUNTIME_LIBRARY.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-MSVC_RUNTIME_LIBRARY
---------------------
-
-Select the MSVC runtime library for use by compilers targeting the MSVC ABI.
-
-The allowed values are:
-
-.. include:: MSVC_RUNTIME_LIBRARY-VALUES.txt
-
-Use :manual:`generator expressions <cmake-generator-expressions(7)>` to
-support per-configuration specification.  For example, the code:
-
-.. code-block:: cmake
-
-  add_executable(foo foo.c)
-  set_property(TARGET foo PROPERTY
-    MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
-
-selects for the target ``foo`` a multi-threaded statically-linked runtime
-library with or without debug information depending on the configuration.
-
-If this property is not set then CMake uses the default value
-``MultiThreaded$<$<CONFIG:Debug>:Debug>DLL`` to select a MSVC runtime library.
-
-.. note::
-
-  This property has effect only when policy :policy:`CMP0091` is set to ``NEW``
-  prior to the first :command:`project` or :command:`enable_language` command
-  that enables a language using a compiler targeting the MSVC ABI.
diff --git a/share/cmake-3.18/Help/prop_tgt/OBJCXX_EXTENSIONS.rst b/share/cmake-3.18/Help/prop_tgt/OBJCXX_EXTENSIONS.rst
deleted file mode 100644
index 9f9d804..0000000
--- a/share/cmake-3.18/Help/prop_tgt/OBJCXX_EXTENSIONS.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-OBJCXX_EXTENSIONS
------------------
-
-Boolean specifying whether compiler specific extensions are requested.
-
-This property specifies whether compiler specific extensions should be
-used.  For some compilers, this results in adding a flag such
-as ``-std=gnu++11`` instead of ``-std=c++11`` to the compile line.  This
-property is ``ON`` by default. The basic ObjC++ standard level is
-controlled by the :prop_tgt:`OBJCXX_STANDARD` target property.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-If the property is not set, and the project has set the :prop_tgt:`CXX_EXTENSIONS`,
-the value of :prop_tgt:`CXX_EXTENSIONS` is set for :prop_tgt:`OBJCXX_EXTENSIONS`.
-
-This property is initialized by the value of
-the :variable:`CMAKE_OBJCXX_EXTENSIONS` variable if it is set when a target
-is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/OBJCXX_STANDARD.rst b/share/cmake-3.18/Help/prop_tgt/OBJCXX_STANDARD.rst
deleted file mode 100644
index 3c925dc..0000000
--- a/share/cmake-3.18/Help/prop_tgt/OBJCXX_STANDARD.rst
+++ /dev/null
@@ -1,35 +0,0 @@
-OBJCXX_STANDARD
----------------
-
-The ObjC++ standard whose features are requested to build this target.
-
-This property specifies the ObjC++ standard whose features are requested
-to build this target.  For some compilers, this results in adding a
-flag such as ``-std=gnu++11`` to the compile line.
-
-Supported values are ``98``, ``11``, ``14``, ``17``, and ``20``.
-
-If the value requested does not result in a compile flag being added for
-the compiler in use, a previous standard flag will be added instead.  This
-means that using:
-
-.. code-block:: cmake
-
-  set_property(TARGET tgt PROPERTY OBJCXX_STANDARD 11)
-
-with a compiler which does not support ``-std=gnu++11`` or an equivalent
-flag will not result in an error or warning, but will instead add the
-``-std=gnu++98`` flag if supported.  This "decay" behavior may be controlled
-with the :prop_tgt:`OBJCXX_STANDARD_REQUIRED` target property.
-Additionally, the :prop_tgt:`OBJCXX_EXTENSIONS` target property may be used to
-control whether compiler-specific extensions are enabled on a per-target basis.
-
-If the property is not set, and the project has set the :prop_tgt:`CXX_STANDARD`,
-the value of :prop_tgt:`CXX_STANDARD` is set for :prop_tgt:`OBJCXX_STANDARD`.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-This property is initialized by the value of
-the :variable:`CMAKE_OBJCXX_STANDARD` variable if it is set when a target
-is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/OBJCXX_STANDARD_REQUIRED.rst b/share/cmake-3.18/Help/prop_tgt/OBJCXX_STANDARD_REQUIRED.rst
deleted file mode 100644
index c330abf..0000000
--- a/share/cmake-3.18/Help/prop_tgt/OBJCXX_STANDARD_REQUIRED.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-OBJCXX_STANDARD_REQUIRED
-------------------------
-
-Boolean describing whether the value of :prop_tgt:`OBJCXX_STANDARD` is a requirement.
-
-If this property is set to ``ON``, then the value of the
-:prop_tgt:`OBJCXX_STANDARD` target property is treated as a requirement.  If this
-property is ``OFF`` or unset, the :prop_tgt:`OBJCXX_STANDARD` target property is
-treated as optional and may "decay" to a previous standard if the requested is
-not available.
-
-If the property is not set, and the project has set the :prop_tgt:`CXX_STANDARD_REQUIRED`,
-the value of :prop_tgt:`CXX_STANDARD_REQUIRED` is set for :prop_tgt:`OBJCXX_STANDARD_REQUIRED`.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-This property is initialized by the value of
-the :variable:`CMAKE_OBJCXX_STANDARD_REQUIRED` variable if it is set when a
-target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/OBJC_EXTENSIONS.rst b/share/cmake-3.18/Help/prop_tgt/OBJC_EXTENSIONS.rst
deleted file mode 100644
index 2de9e48..0000000
--- a/share/cmake-3.18/Help/prop_tgt/OBJC_EXTENSIONS.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-OBJC_EXTENSIONS
----------------
-
-Boolean specifying whether compiler specific extensions are requested.
-
-This property specifies whether compiler specific extensions should be
-used.  For some compilers, this results in adding a flag such
-as ``-std=gnu11`` instead of ``-std=c11`` to the compile line.  This
-property is ``ON`` by default. The basic OBJC standard level is
-controlled by the :prop_tgt:`OBJC_STANDARD` target property.
-
-If the property is not set, and the project has set the :prop_tgt:`C_EXTENSIONS`,
-the value of :prop_tgt:`C_EXTENSIONS` is set for :prop_tgt:`OBJC_EXTENSIONS`.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-This property is initialized by the value of
-the :variable:`CMAKE_OBJC_EXTENSIONS` variable if it is set when a target
-is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/OBJC_STANDARD.rst b/share/cmake-3.18/Help/prop_tgt/OBJC_STANDARD.rst
deleted file mode 100644
index d1e1b24..0000000
--- a/share/cmake-3.18/Help/prop_tgt/OBJC_STANDARD.rst
+++ /dev/null
@@ -1,35 +0,0 @@
-OBJC_STANDARD
--------------
-
-The OBJC standard whose features are requested to build this target.
-
-This property specifies the OBJC standard whose features are requested
-to build this target.  For some compilers, this results in adding a
-flag such as ``-std=gnu11`` to the compile line.
-
-Supported values are ``90``, ``99`` and ``11``.
-
-If the value requested does not result in a compile flag being added for
-the compiler in use, a previous standard flag will be added instead.  This
-means that using:
-
-.. code-block:: cmake
-
-  set_property(TARGET tgt PROPERTY OBJC_STANDARD 11)
-
-with a compiler which does not support ``-std=gnu11`` or an equivalent
-flag will not result in an error or warning, but will instead add the
-``-std=gnu99`` or ``-std=gnu90`` flag if supported.  This "decay" behavior may
-be controlled with the :prop_tgt:`OBJC_STANDARD_REQUIRED` target property.
-Additionally, the :prop_tgt:`OBJC_EXTENSIONS` target property may be used to
-control whether compiler-specific extensions are enabled on a per-target basis.
-
-If the property is not set, and the project has set the :prop_tgt:`C_STANDARD`,
-the value of :prop_tgt:`C_STANDARD` is set for :prop_tgt:`OBJC_STANDARD`.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-This property is initialized by the value of
-the :variable:`CMAKE_OBJC_STANDARD` variable if it is set when a target
-is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/OBJC_STANDARD_REQUIRED.rst b/share/cmake-3.18/Help/prop_tgt/OBJC_STANDARD_REQUIRED.rst
deleted file mode 100644
index 8cf377c..0000000
--- a/share/cmake-3.18/Help/prop_tgt/OBJC_STANDARD_REQUIRED.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-OBJC_STANDARD_REQUIRED
-----------------------
-
-Boolean describing whether the value of :prop_tgt:`OBJC_STANDARD` is a requirement.
-
-If this property is set to ``ON``, then the value of the
-:prop_tgt:`OBJC_STANDARD` target property is treated as a requirement.  If this
-property is ``OFF`` or unset, the :prop_tgt:`OBJC_STANDARD` target property is
-treated as optional and may "decay" to a previous standard if the requested is
-not available.
-
-If the property is not set, and the project has set the :prop_tgt:`C_STANDARD_REQUIRED`,
-the value of :prop_tgt:`C_STANDARD_REQUIRED` is set for :prop_tgt:`OBJC_STANDARD_REQUIRED`.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
-
-This property is initialized by the value of
-the :variable:`CMAKE_OBJC_STANDARD_REQUIRED` variable if it is set when a
-target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/PCH_WARN_INVALID.rst b/share/cmake-3.18/Help/prop_tgt/PCH_WARN_INVALID.rst
deleted file mode 100644
index 96e1abd..0000000
--- a/share/cmake-3.18/Help/prop_tgt/PCH_WARN_INVALID.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-PCH_WARN_INVALID
-----------------
-
-When this property is set to true, the precompile header compiler options
-will contain a compiler flag which should warn about invalid precompiled
-headers e.g. ``-Winvalid-pch`` for GNU compiler.
-
-This property is initialized by the value of the
-:variable:`CMAKE_PCH_WARN_INVALID` variable if it is set when a target is
-created.  If that variable is not set, the property defaults to ``ON``.
diff --git a/share/cmake-3.18/Help/prop_tgt/PRECOMPILE_HEADERS.rst b/share/cmake-3.18/Help/prop_tgt/PRECOMPILE_HEADERS.rst
deleted file mode 100644
index 9e70b65..0000000
--- a/share/cmake-3.18/Help/prop_tgt/PRECOMPILE_HEADERS.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-PRECOMPILE_HEADERS
-------------------
-
-List of header files to precompile.
-
-This property holds a :ref:`semicolon-separated list <CMake Language Lists>`
-of header files to precompile specified so far for its target.
-Use the :command:`target_precompile_headers` command to append more header
-files.
-
-This property supports
-:manual:`generator expressions <cmake-generator-expressions(7)>`.
diff --git a/share/cmake-3.18/Help/prop_tgt/PRECOMPILE_HEADERS_REUSE_FROM.rst b/share/cmake-3.18/Help/prop_tgt/PRECOMPILE_HEADERS_REUSE_FROM.rst
deleted file mode 100644
index 9c3e7ea..0000000
--- a/share/cmake-3.18/Help/prop_tgt/PRECOMPILE_HEADERS_REUSE_FROM.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-PRECOMPILE_HEADERS_REUSE_FROM
------------------------------
-
-Target from which to reuse the precompiled headers build artifact.
-
-See the second signature of :command:`target_precompile_headers` command
-for more detailed information.
diff --git a/share/cmake-3.18/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY.rst b/share/cmake-3.18/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY.rst
deleted file mode 100644
index 12390f5..0000000
--- a/share/cmake-3.18/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-RUNTIME_OUTPUT_DIRECTORY
-------------------------
-
-.. |XXX| replace:: :ref:`RUNTIME <Runtime Output Artifacts>`
-.. |xxx| replace:: runtime
-.. |CMAKE_XXX_OUTPUT_DIRECTORY| replace:: CMAKE_RUNTIME_OUTPUT_DIRECTORY
-.. include:: XXX_OUTPUT_DIRECTORY.txt
-
-See also the :prop_tgt:`RUNTIME_OUTPUT_DIRECTORY_<CONFIG>` target property.
diff --git a/share/cmake-3.18/Help/prop_tgt/SOURCE_DIR.rst b/share/cmake-3.18/Help/prop_tgt/SOURCE_DIR.rst
deleted file mode 100644
index b25813b..0000000
--- a/share/cmake-3.18/Help/prop_tgt/SOURCE_DIR.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-SOURCE_DIR
-----------
-
-This read-only property reports the value of the
-:variable:`CMAKE_CURRENT_SOURCE_DIR` variable in the directory in which
-the target was defined.
diff --git a/share/cmake-3.18/Help/prop_tgt/STATIC_LIBRARY_OPTIONS.rst b/share/cmake-3.18/Help/prop_tgt/STATIC_LIBRARY_OPTIONS.rst
deleted file mode 100644
index d05fda4..0000000
--- a/share/cmake-3.18/Help/prop_tgt/STATIC_LIBRARY_OPTIONS.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-STATIC_LIBRARY_OPTIONS
-----------------------
-
-Archiver (or MSVC librarian) flags for a static library target.
-Targets that are shared libraries, modules, or executables need to use
-the :prop_tgt:`LINK_OPTIONS` target property.
-
-This property holds a :ref:`semicolon-separated list <CMake Language Lists>` of options
-specified so far for its target.  Use :command:`set_target_properties` or
-:command:`set_property` commands to set its content.
-
-Contents of ``STATIC_LIBRARY_OPTIONS`` may use "generator expressions" with the
-syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual
-for available expressions.  See the :manual:`cmake-buildsystem(7)` manual
-for more on defining buildsystem properties.
-
-.. note::
-
-  This property must be used in preference to :prop_tgt:`STATIC_LIBRARY_FLAGS`
-  property.
diff --git a/share/cmake-3.18/Help/prop_tgt/Swift_DEPENDENCIES_FILE.rst b/share/cmake-3.18/Help/prop_tgt/Swift_DEPENDENCIES_FILE.rst
deleted file mode 100644
index 46c9a1d..0000000
--- a/share/cmake-3.18/Help/prop_tgt/Swift_DEPENDENCIES_FILE.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-Swift_DEPENDENCIES_FILE
------------------------
-
-This property sets the path for the Swift dependency file (swiftdep) for the
-target.  If one is not specified, it will default to ``<TARGET>.swiftdeps``.
diff --git a/share/cmake-3.18/Help/prop_tgt/Swift_LANGUAGE_VERSION.rst b/share/cmake-3.18/Help/prop_tgt/Swift_LANGUAGE_VERSION.rst
deleted file mode 100644
index 7579447..0000000
--- a/share/cmake-3.18/Help/prop_tgt/Swift_LANGUAGE_VERSION.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-Swift_LANGUAGE_VERSION
-----------------------
-
-This property sets the language version for the Swift sources in the target.  If
-one is not specified, it will default to ``<CMAKE_Swift_LANGUAGE_VERSION>`` if
-specified, otherwise it is the latest version supported by the compiler.
diff --git a/share/cmake-3.18/Help/prop_tgt/Swift_MODULE_DIRECTORY.rst b/share/cmake-3.18/Help/prop_tgt/Swift_MODULE_DIRECTORY.rst
deleted file mode 100644
index d404251..0000000
--- a/share/cmake-3.18/Help/prop_tgt/Swift_MODULE_DIRECTORY.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-Swift_MODULE_DIRECTORY
-----------------------
-
-Specify output directory for Swift modules provided by the target.
-
-If the target contains Swift source files, this specifies the directory in which
-the modules will be placed.  When this property is not set, the modules will be
-placed in the build directory corresponding to the target's source directory.
-If the variable :variable:`CMAKE_Swift_MODULE_DIRECTORY` is set when a target is
-created its value is used to initialise this property.
diff --git a/share/cmake-3.18/Help/prop_tgt/Swift_MODULE_NAME.rst b/share/cmake-3.18/Help/prop_tgt/Swift_MODULE_NAME.rst
deleted file mode 100644
index 2866020..0000000
--- a/share/cmake-3.18/Help/prop_tgt/Swift_MODULE_NAME.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-Swift_MODULE_NAME
------------------
-
-This property specifies the name of the Swift module.  It is defaulted to the
-name of the target.
diff --git a/share/cmake-3.18/Help/prop_tgt/UNITY_BUILD.rst b/share/cmake-3.18/Help/prop_tgt/UNITY_BUILD.rst
deleted file mode 100644
index e140952..0000000
--- a/share/cmake-3.18/Help/prop_tgt/UNITY_BUILD.rst
+++ /dev/null
@@ -1,80 +0,0 @@
-UNITY_BUILD
------------
-
-When this property is set to true, the target source files will be combined
-into batches for faster compilation.  This is done by creating a (set of)
-unity sources which ``#include`` the original sources, then compiling these
-unity sources instead of the originals.  This is known as a *Unity* or *Jumbo*
-build.
-
-CMake provides different algorithms for selecting which sources are grouped
-together into a *bucket*. Algorithm selection is decided by the
-:prop_tgt:`UNITY_BUILD_MODE` target property, which has the following acceptable
-values:
-
-* ``BATCH``
-  When in this mode CMake determines which files are grouped together.
-  The :prop_tgt:`UNITY_BUILD_BATCH_SIZE` property controls the upper limit on
-  how many sources can be combined per unity source file.
-
-* ``GROUP``
-  When in this mode each target explicitly specifies how to group
-  source files. Each source file that has the same
-  :prop_sf:`UNITY_GROUP` value will be grouped together. Any sources
-  that don't have this property will be compiled individually. The
-  :prop_tgt:`UNITY_BUILD_BATCH_SIZE` property is ignored when using
-  this mode.
-
-If no explicit :prop_tgt:`UNITY_BUILD_MODE` has been specified, CMake will
-default to ``BATCH``.
-
-Unity builds are not currently supported for all languages.  CMake version
-|release| supports combining ``C`` and ``CXX`` source files.  For targets that
-mix source files from more than one language, CMake will separate the languages
-such that each generated unity source file only contains sources for a single
-language.
-
-This property is initialized by the value of the :variable:`CMAKE_UNITY_BUILD`
-variable when a target is created.
-
-.. note::
-
-  Projects should not directly set the ``UNITY_BUILD`` property or its
-  associated :variable:`CMAKE_UNITY_BUILD` variable to true.  Depending
-  on the capabilities of the build machine and compiler used, it might or
-  might not be appropriate to enable unity builds.  Therefore, this feature
-  should be under developer control, which would normally be through the
-  developer choosing whether or not to set the :variable:`CMAKE_UNITY_BUILD`
-  variable on the :manual:`cmake(1)` command line or some other equivalent
-  method.  However, it IS recommended to set the ``UNITY_BUILD`` target
-  property to false if it is known that enabling unity builds for the
-  target can lead to problems.
-
-ODR (One definition rule) errors
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When multiple source files are included into one source file, as is done
-for unity builds, it can potentially lead to ODR errors.  CMake provides
-a number of measures to help address such problems:
-
-* Any source file that has a non-empty :prop_sf:`COMPILE_OPTIONS`,
-  :prop_sf:`COMPILE_DEFINITIONS`, :prop_sf:`COMPILE_FLAGS`, or
-  :prop_sf:`INCLUDE_DIRECTORIES` source property will not be combined
-  into a unity source.
-
-* Projects can prevent an individual source file from being combined into
-  a unity source by setting its :prop_sf:`SKIP_UNITY_BUILD_INCLUSION`
-  source property to true.  This can be a more effective way to prevent
-  problems with specific files than disabling unity builds for an entire
-  target.
-
-* The :prop_tgt:`UNITY_BUILD_CODE_BEFORE_INCLUDE` and
-  :prop_tgt:`UNITY_BUILD_CODE_AFTER_INCLUDE` target properties can be used
-  to inject code into the unity source files before and after every
-  ``#include`` statement.
-
-* The order of source files added to the target via commands like
-  :command:`add_library`, :command:`add_executable` or
-  :command:`target_sources` will be preserved in the generated unity source
-  files.  This can be used to manually enforce a specific grouping based on
-  the :prop_tgt:`UNITY_BUILD_BATCH_SIZE` target property.
diff --git a/share/cmake-3.18/Help/prop_tgt/UNITY_BUILD_BATCH_SIZE.rst b/share/cmake-3.18/Help/prop_tgt/UNITY_BUILD_BATCH_SIZE.rst
deleted file mode 100644
index 44ffe27..0000000
--- a/share/cmake-3.18/Help/prop_tgt/UNITY_BUILD_BATCH_SIZE.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-UNITY_BUILD_BATCH_SIZE
-----------------------
-
-Specifies the maximum number of source files that can be combined into any one
-unity source file when unity builds are enabled by the :prop_tgt:`UNITY_BUILD`
-target property.  The original source files will be distributed across as many
-unity source files as necessary to honor this limit.
-
-The initial value for this property is taken from the
-:variable:`CMAKE_UNITY_BUILD_BATCH_SIZE` variable when the target is created.
-If that variable has not been set, the initial value will be 8.
-
-The batch size needs to be selected carefully.  If set too high, the size of
-the combined source files could result in the compiler using excessive memory
-or hitting other similar limits.  In extreme cases, this can even result in
-build failure.  On the other hand, if the batch size is too low, there will be
-little gain in build performance.
-
-Although strongly discouraged, the batch size may be set to a value of 0 to
-combine all the sources for the target into a single unity file, regardless of
-how many sources are involved.  This runs the risk of creating an excessively
-large unity source file and negatively impacting the build performance, so
-a value of 0 is not generally recommended.
diff --git a/share/cmake-3.18/Help/prop_tgt/UNITY_BUILD_CODE_AFTER_INCLUDE.rst b/share/cmake-3.18/Help/prop_tgt/UNITY_BUILD_CODE_AFTER_INCLUDE.rst
deleted file mode 100644
index 7231b61..0000000
--- a/share/cmake-3.18/Help/prop_tgt/UNITY_BUILD_CODE_AFTER_INCLUDE.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-UNITY_BUILD_CODE_AFTER_INCLUDE
-------------------------------
-
-Code snippet which is included verbatim by the :prop_tgt:`UNITY_BUILD`
-feature just after every ``#include`` statement in the generated unity
-source files.  For example:
-
-.. code-block:: cmake
-
-  set(after [[
-  #if defined(NOMINMAX)
-  #undef NOMINMAX
-  #endif
-  ]])
-  set_target_properties(myTarget PROPERTIES
-    UNITY_BUILD_CODE_AFTER_INCLUDE "${after}"
-  )
-
-See also :prop_tgt:`UNITY_BUILD_CODE_BEFORE_INCLUDE`.
diff --git a/share/cmake-3.18/Help/prop_tgt/UNITY_BUILD_CODE_BEFORE_INCLUDE.rst b/share/cmake-3.18/Help/prop_tgt/UNITY_BUILD_CODE_BEFORE_INCLUDE.rst
deleted file mode 100644
index 7ed6fa1..0000000
--- a/share/cmake-3.18/Help/prop_tgt/UNITY_BUILD_CODE_BEFORE_INCLUDE.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-UNITY_BUILD_CODE_BEFORE_INCLUDE
--------------------------------
-
-Code snippet which is included verbatim by the :prop_tgt:`UNITY_BUILD`
-feature just before every ``#include`` statement in the generated unity
-source files.  For example:
-
-.. code-block:: cmake
-
-  set(before [[
-  #if !defined(NOMINMAX)
-  #define NOMINMAX
-  #endif
-  ]])
-  set_target_properties(myTarget PROPERTIES
-    UNITY_BUILD_CODE_BEFORE_INCLUDE "${before}"
-  )
-
-See also :prop_tgt:`UNITY_BUILD_CODE_AFTER_INCLUDE`.
diff --git a/share/cmake-3.18/Help/prop_tgt/UNITY_BUILD_MODE.rst b/share/cmake-3.18/Help/prop_tgt/UNITY_BUILD_MODE.rst
deleted file mode 100644
index 1ebab23..0000000
--- a/share/cmake-3.18/Help/prop_tgt/UNITY_BUILD_MODE.rst
+++ /dev/null
@@ -1,58 +0,0 @@
-UNITY_BUILD_MODE
-----------------
-
-CMake provides different algorithms for selecting which sources are grouped
-together into a *bucket*. Selection is decided by this property,
-which has the following acceptable values:
-
-``BATCH``
-  When in this mode CMake determines which files are grouped together.
-  The :prop_tgt:`UNITY_BUILD_BATCH_SIZE` property controls the upper limit on
-  how many sources can be combined per unity source file.
-
-  Example usage:
-
-  .. code-block:: cmake
-
-    add_library(example_library
-                source1.cxx
-                source2.cxx
-                source3.cxx
-                source4.cxx)
-
-    set_target_properties(example_library PROPERTIES
-                          UNITY_BUILD_MODE BATCH
-                          UNITY_BUILD_BATCH_SIZE 2
-                          )
-
-``GROUP``
-  When in this mode each target explicitly specifies how to group
-  source files. Each source file that has the same
-  :prop_sf:`UNITY_GROUP` value will be grouped together. Any sources
-  that don't have this property will be compiled individually. The
-  :prop_tgt:`UNITY_BUILD_BATCH_SIZE` property is ignored when using
-  this mode.
-
-  Example usage:
-
-  .. code-block:: cmake
-
-    add_library(example_library
-                source1.cxx
-                source2.cxx
-                source3.cxx
-                source4.cxx)
-
-    set_target_properties(example_library PROPERTIES
-                          UNITY_BUILD_MODE GROUP
-                          )
-
-    set_source_files_properties(source1.cxx source2.cxx source3.cxx
-                                PROPERTIES UNITY_GROUP "bucket1"
-                                )
-    set_source_files_properties(source4.cxx
-                                PROPERTIES UNITY_GROUP "bucket2"
-                                )
-
-If no explicit :prop_tgt:`UNITY_BUILD_MODE` has been specified, CMake will
-default to ``BATCH``.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_CONFIGURATION_TYPE.rst b/share/cmake-3.18/Help/prop_tgt/VS_CONFIGURATION_TYPE.rst
deleted file mode 100644
index 640bed5..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_CONFIGURATION_TYPE.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-VS_CONFIGURATION_TYPE
----------------------
-
-Visual Studio project configuration type.
-
-Sets the ``ConfigurationType`` attribute for a generated Visual Studio project.
-The property value may use
-:manual:`generator expressions <cmake-generator-expressions(7)>`.
-If this property is set, it overrides the default setting that is based on the
-target type (e.g. ``StaticLibrary``, ``Application``, ...).
-
-Supported on :ref:`Visual Studio Generators` for VS 2010 and higher.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_DEBUGGER_COMMAND.rst b/share/cmake-3.18/Help/prop_tgt/VS_DEBUGGER_COMMAND.rst
deleted file mode 100644
index ba5fd0a..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_DEBUGGER_COMMAND.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-VS_DEBUGGER_COMMAND
--------------------
-
-Sets the local debugger command for Visual Studio C++ targets.
-The property value may use
-:manual:`generator expressions <cmake-generator-expressions(7)>`.
-This is defined in ``<LocalDebuggerCommand>`` in the Visual Studio
-project file.
-
-This property only works for Visual Studio 2010 and above;
-it is ignored on other generators.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_DEBUGGER_COMMAND_ARGUMENTS.rst b/share/cmake-3.18/Help/prop_tgt/VS_DEBUGGER_COMMAND_ARGUMENTS.rst
deleted file mode 100644
index 06ef5d5..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_DEBUGGER_COMMAND_ARGUMENTS.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-VS_DEBUGGER_COMMAND_ARGUMENTS
------------------------------
-
-Sets the local debugger command line arguments for Visual Studio C++ targets.
-The property value may use
-:manual:`generator expressions <cmake-generator-expressions(7)>`.
-This is defined in ``<LocalDebuggerCommandArguments>`` in the Visual Studio
-project file.
-
-This property only works for Visual Studio 2010 and above;
-it is ignored on other generators.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_DEBUGGER_ENVIRONMENT.rst b/share/cmake-3.18/Help/prop_tgt/VS_DEBUGGER_ENVIRONMENT.rst
deleted file mode 100644
index f55ac7b..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_DEBUGGER_ENVIRONMENT.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-VS_DEBUGGER_ENVIRONMENT
------------------------
-
-Sets the local debugger environment for Visual Studio C++ targets.
-The property value may use
-:manual:`generator expressions <cmake-generator-expressions(7)>`.
-This is defined in ``<LocalDebuggerEnvironment>`` in the Visual Studio
-project file.
-
-This property only works for Visual Studio 2010 and above;
-it is ignored on other generators.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_DEBUGGER_WORKING_DIRECTORY.rst b/share/cmake-3.18/Help/prop_tgt/VS_DEBUGGER_WORKING_DIRECTORY.rst
deleted file mode 100644
index 008bbf6..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_DEBUGGER_WORKING_DIRECTORY.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-VS_DEBUGGER_WORKING_DIRECTORY
------------------------------
-
-Sets the local debugger working directory for Visual Studio C++ targets.
-The property value may use
-:manual:`generator expressions <cmake-generator-expressions(7)>`.
-This is defined in ``<LocalDebuggerWorkingDirectory>`` in the Visual Studio
-project file.
-
-This property only works for Visual Studio 2010 and above;
-it is ignored on other generators.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION.rst b/share/cmake-3.18/Help/prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION.rst
deleted file mode 100644
index 19d1620..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-VS_DESKTOP_EXTENSIONS_VERSION
------------------------------
-
-Visual Studio Windows 10 Desktop Extensions Version
-
-Specifies the version of the Desktop Extensions that should be included in the
-target. For example ``10.0.10240.0``. If the value is not specified, the Desktop
-Extensions will not be included. To use the same version of the extensions as
-the Windows 10 SDK that is being used, you can use the
-:variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION` variable.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_DOTNET_DOCUMENTATION_FILE.rst b/share/cmake-3.18/Help/prop_tgt/VS_DOTNET_DOCUMENTATION_FILE.rst
deleted file mode 100644
index 1bc361c..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_DOTNET_DOCUMENTATION_FILE.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-VS_DOTNET_DOCUMENTATION_FILE
-----------------------------
-
-Visual Studio managed project .NET documentation output
-
-Sets the target XML documentation file output.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_DOTNET_REFERENCEPROP_refname_TAG_tagname.rst b/share/cmake-3.18/Help/prop_tgt/VS_DOTNET_REFERENCEPROP_refname_TAG_tagname.rst
deleted file mode 100644
index ab311ea..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_DOTNET_REFERENCEPROP_refname_TAG_tagname.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-VS_DOTNET_REFERENCEPROP_<refname>_TAG_<tagname>
------------------------------------------------
-
-Defines an XML property ``<tagname>`` for a .NET reference
-``<refname>``.
-
-Reference properties can be set for .NET references which are
-defined by the target properties :prop_tgt:`VS_DOTNET_REFERENCES`,
-:prop_tgt:`VS_DOTNET_REFERENCE_<refname>`
-and also for project references to other C# targets which are
-established by :command:`target_link_libraries()`.
-
-This property is only applicable to C# targets and Visual Studio
-generators 2010 and later.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_DOTNET_REFERENCES_COPY_LOCAL.rst b/share/cmake-3.18/Help/prop_tgt/VS_DOTNET_REFERENCES_COPY_LOCAL.rst
deleted file mode 100644
index 7641ba5..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_DOTNET_REFERENCES_COPY_LOCAL.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-VS_DOTNET_REFERENCES_COPY_LOCAL
--------------------------------
-
-Sets the **Copy Local** property for all .NET hint references in the target
-
-Boolean property to enable/disable copying of .NET hint references to
-output directory. The default is ``ON``.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_DOTNET_REFERENCE_refname.rst b/share/cmake-3.18/Help/prop_tgt/VS_DOTNET_REFERENCE_refname.rst
deleted file mode 100644
index 5814005..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_DOTNET_REFERENCE_refname.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-VS_DOTNET_REFERENCE_<refname>
------------------------------
-
-Visual Studio managed project .NET reference with name ``<refname>``
-and hint path.
-
-Adds one .NET reference to generated Visual Studio project. The
-reference will have the name ``<refname>`` and will point to the
-assembly given as value of the property.
-
-See also :prop_tgt:`VS_DOTNET_REFERENCES` and
-:prop_tgt:`VS_DOTNET_REFERENCES_COPY_LOCAL`
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_DPI_AWARE.rst b/share/cmake-3.18/Help/prop_tgt/VS_DPI_AWARE.rst
deleted file mode 100644
index 82640cc..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_DPI_AWARE.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-VS_DPI_AWARE
-------------
-
-Set the Manifest Tool -> Input and Output -> DPI Awareness in the Visual Studio
-target project properties.
-
-Valid values are ``PerMonitor``, ``ON``, or ``OFF``.
-
-For example:
-
-.. code-block:: cmake
-
-  add_executable(myproject myproject.cpp)
-  set_property(TARGET myproject PROPERTY VS_DPI_AWARE "PerMonitor")
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_IOT_EXTENSIONS_VERSION.rst b/share/cmake-3.18/Help/prop_tgt/VS_IOT_EXTENSIONS_VERSION.rst
deleted file mode 100644
index 27c8a3d..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_IOT_EXTENSIONS_VERSION.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-VS_IOT_EXTENSIONS_VERSION
--------------------------
-
-Visual Studio Windows 10 IoT Extensions Version
-
-Specifies the version of the IoT Extensions that should be included in the
-target. For example ``10.0.10240.0``. If the value is not specified, the IoT
-Extensions will not be included. To use the same version of the extensions as
-the Windows 10 SDK that is being used, you can use the
-:variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION` variable.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_IOT_STARTUP_TASK.rst b/share/cmake-3.18/Help/prop_tgt/VS_IOT_STARTUP_TASK.rst
deleted file mode 100644
index add50cb..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_IOT_STARTUP_TASK.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-VS_IOT_STARTUP_TASK
--------------------
-
-Visual Studio Windows 10 IoT Continuous Background Task
-
-Specifies that the target should be compiled as a Continuous Background Task library.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_JUST_MY_CODE_DEBUGGING.rst b/share/cmake-3.18/Help/prop_tgt/VS_JUST_MY_CODE_DEBUGGING.rst
deleted file mode 100644
index 42fb8ad..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_JUST_MY_CODE_DEBUGGING.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-VS_JUST_MY_CODE_DEBUGGING
--------------------------
-
-Enable Just My Code with Visual Studio debugger.
-
-Supported on :ref:`Visual Studio Generators` for VS 2010 and higher,
-:ref:`Makefile Generators` and the :generator:`Ninja` generators.
-
-This property is initialized by the :variable:`CMAKE_VS_JUST_MY_CODE_DEBUGGING`
-variable if it is set when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_MOBILE_EXTENSIONS_VERSION.rst b/share/cmake-3.18/Help/prop_tgt/VS_MOBILE_EXTENSIONS_VERSION.rst
deleted file mode 100644
index be3c9a0..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_MOBILE_EXTENSIONS_VERSION.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-VS_MOBILE_EXTENSIONS_VERSION
-----------------------------
-
-Visual Studio Windows 10 Mobile Extensions Version
-
-Specifies the version of the Mobile Extensions that should be included in the
-target. For example ``10.0.10240.0``. If the value is not specified, the Mobile
-Extensions will not be included. To use the same version of the extensions as
-the Windows 10 SDK that is being used, you can use the
-:variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION` variable.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_NO_SOLUTION_DEPLOY.rst b/share/cmake-3.18/Help/prop_tgt/VS_NO_SOLUTION_DEPLOY.rst
deleted file mode 100644
index ffcbde5..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_NO_SOLUTION_DEPLOY.rst
+++ /dev/null
@@ -1,46 +0,0 @@
-VS_NO_SOLUTION_DEPLOY
----------------------
-
-Specify that the target should not be marked for deployment to a Windows CE
-or Windows Phone device in the generated Visual Studio solution.
-
-Be default, all EXE and shared library (DLL) targets are marked to deploy to
-the target device in the generated Visual Studio solution.
-
-Generator expressions are supported.
-
-There are reasons one might want to exclude a target / generated project from
-deployment:
-
-- The library or executable may not be necessary in the primary deploy/debug
-  scenario, and excluding from deployment saves time in the
-  develop/download/debug cycle.
-- There may be insufficient space on the target device to accommodate all of
-  the build products.
-- Visual Studio 2013 requires a target device IP address be entered for each
-  target marked for deployment.  For large numbers of targets, this can be
-  tedious.
-  NOTE: Visual Studio *will* deploy all project dependencies of a project
-  tagged for deployment to the IP address configured for that project even
-  if those dependencies are not tagged for deployment.
-
-
-Example 1
-^^^^^^^^^
-
-This shows setting the variable for the target foo.
-
-.. code-block:: cmake
-
-  add_library(foo SHARED foo.cpp)
-  set_property(TARGET foo PROPERTY VS_NO_SOLUTION_DEPLOY ON)
-
-Example 2
-^^^^^^^^^
-
-This shows setting the variable for the Release configuration only.
-
-.. code-block:: cmake
-
-  add_library(foo SHARED foo.cpp)
-  set_property(TARGET foo PROPERTY VS_NO_SOLUTION_DEPLOY "$<CONFIG:Release>")
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_PACKAGE_REFERENCES.rst b/share/cmake-3.18/Help/prop_tgt/VS_PACKAGE_REFERENCES.rst
deleted file mode 100644
index 5a0465b..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_PACKAGE_REFERENCES.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-VS_PACKAGE_REFERENCES
----------------------
-
-Visual Studio package references for nuget.
-
-Adds one or more semicolon-delimited package references to a generated
-Visual Studio project. The version of the package will be
-underscore delimited. For example, ``boost_1.7.0;nunit_3.12.*``.
-
-.. code-block:: cmake
-
-  set_property(TARGET ${TARGET_NAME} PROPERTY
-    VS_PACKAGE_REFERENCES "boost_1.7.0")
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_PLATFORM_TOOLSET.rst b/share/cmake-3.18/Help/prop_tgt/VS_PLATFORM_TOOLSET.rst
deleted file mode 100644
index f8f2e8e..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_PLATFORM_TOOLSET.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-VS_PLATFORM_TOOLSET
--------------------
-
-Overrides the platform toolset used to build a target.
-
-Only supported when the compiler used by the given toolset is the
-same as the compiler used to build the whole source tree.
-
-This is especially useful to create driver projects with the toolsets
-"WindowsUserModeDriver10.0" or "WindowsKernelModeDriver10.0".
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_PROJECT_IMPORT.rst b/share/cmake-3.18/Help/prop_tgt/VS_PROJECT_IMPORT.rst
deleted file mode 100644
index 569c8ea..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_PROJECT_IMPORT.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-VS_PROJECT_IMPORT
------------------
-
-Visual Studio managed project imports
-
-Adds to a generated Visual Studio project one or more semicolon-delimited paths
-to .props files needed when building projects from some NuGet packages.
-For example, ``my_packages_path/MyPackage.1.0.0/build/MyPackage.props``.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_SDK_REFERENCES.rst b/share/cmake-3.18/Help/prop_tgt/VS_SDK_REFERENCES.rst
deleted file mode 100644
index 99987f5..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_SDK_REFERENCES.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-VS_SDK_REFERENCES
------------------
-
-Visual Studio project SDK references.
-Specify a :ref:`semicolon-separated list <CMake Language Lists>` of SDK references
-to be added to a generated Visual Studio project, e.g.
-``Microsoft.AdMediatorWindows81, Version=1.0``.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_SOLUTION_DEPLOY.rst b/share/cmake-3.18/Help/prop_tgt/VS_SOLUTION_DEPLOY.rst
deleted file mode 100644
index eef848f..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_SOLUTION_DEPLOY.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-VS_SOLUTION_DEPLOY
-------------------
-
-Specify that the target should be marked for deployment when not targeting
-Windows CE, Windows Phone or a Windows Store application.
-
-If the target platform doesn't support deployment, this property won't have
-any effect.
-
-:manual:`Generator expressions <cmake-generator-expressions(7)>` are supported.
-
-Examples
-^^^^^^^^
-
-Always deploy target ``foo``:
-
-.. code-block:: cmake
-
-  add_executable(foo SHARED foo.cpp)
-  set_property(TARGET foo PROPERTY VS_SOLUTION_DEPLOY ON)
-
-Deploy target ``foo`` for all configurations except ``Release``:
-
-.. code-block:: cmake
-
-  add_executable(foo SHARED foo.cpp)
-  set_property(TARGET foo PROPERTY VS_SOLUTION_DEPLOY "$<NOT:$<CONFIG:Release>>")
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_SOURCE_SETTINGS_tool.rst b/share/cmake-3.18/Help/prop_tgt/VS_SOURCE_SETTINGS_tool.rst
deleted file mode 100644
index 738a912..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_SOURCE_SETTINGS_tool.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-VS_SOURCE_SETTINGS_<tool>
--------------------------
-
-Set any item metadata on all non-built files that use <tool>.
-
-Takes a list of ``Key=Value`` pairs. Tells the Visual Studio generator
-to set ``Key`` to ``Value`` as item metadata on all non-built files
-that use ``<tool>``.
-
-For example:
-
-.. code-block:: cmake
-
-  set_property(TARGET main PROPERTY VS_SOURCE_SETTINGS_FXCompile "Key=Value" "Key2=Value2")
-
-will set ``Key`` to ``Value`` and ``Key2`` to ``Value2`` for all
-non-built files that use ``FXCompile``.
-
-:manual:`Generator expressions <cmake-generator-expressions(7)>` are supported.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_USER_PROPS.rst b/share/cmake-3.18/Help/prop_tgt/VS_USER_PROPS.rst
deleted file mode 100644
index 1be222b..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_USER_PROPS.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-VS_USER_PROPS
--------------
-
-Sets the user props file to be included in the visual studio
-C++ project file. The standard path is
-``$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props``, which is
-in most cases the same as
-``%LOCALAPPDATA%\\Microsoft\\MSBuild\\v4.0\\Microsoft.Cpp.Win32.user.props``
-or ``%LOCALAPPDATA%\\Microsoft\\MSBuild\\v4.0\\Microsoft.Cpp.x64.user.props``.
-
-The ``*.user.props`` files can be used for Visual Studio wide
-configuration which is independent from cmake.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst b/share/cmake-3.18/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst
deleted file mode 100644
index 1ad7a71..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION
---------------------------------------
-
-Visual Studio Windows Target Platform Minimum Version
-
-For Windows 10. Specifies the minimum version of the OS that is being
-targeted. For example ``10.0.10240.0``. If the value is not specified, the
-value of :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION` will be used on
-WindowsStore projects otherwise the target platform minimum version will not
-be specified for the project.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_WINRT_COMPONENT.rst b/share/cmake-3.18/Help/prop_tgt/VS_WINRT_COMPONENT.rst
deleted file mode 100644
index e160bd6..0000000
--- a/share/cmake-3.18/Help/prop_tgt/VS_WINRT_COMPONENT.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-VS_WINRT_COMPONENT
-------------------
-
-Mark a target as a Windows Runtime component for the Visual Studio generator.
-Compile the target with ``C++/CX`` language extensions for Windows Runtime.
-For ``SHARED`` and ``MODULE`` libraries, this also defines the
-``_WINRT_DLL`` preprocessor macro.
-
-.. note::
-  Currently this is implemented only by Visual Studio generators.
-  Support may be added to other generators in the future.
diff --git a/share/cmake-3.18/Help/prop_tgt/WIN32_EXECUTABLE.rst b/share/cmake-3.18/Help/prop_tgt/WIN32_EXECUTABLE.rst
deleted file mode 100644
index 060d166..0000000
--- a/share/cmake-3.18/Help/prop_tgt/WIN32_EXECUTABLE.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-WIN32_EXECUTABLE
-----------------
-
-Build an executable with a WinMain entry point on windows.
-
-When this property is set to true the executable when linked on
-Windows will be created with a WinMain() entry point instead of just
-main().  This makes it a GUI executable instead of a console application.
-See the :variable:`CMAKE_MFC_FLAG` variable documentation to
-configure use of the Microsoft Foundation Classes (MFC) for WinMain
-executables.  This property is initialized by the value of the
-:variable:`CMAKE_WIN32_EXECUTABLE` variable if it is set when
-a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst b/share/cmake-3.18/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst
deleted file mode 100644
index 86711bf..0000000
--- a/share/cmake-3.18/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-WINDOWS_EXPORT_ALL_SYMBOLS
---------------------------
-
-This property is implemented only for MS-compatible tools on Windows.
-
-Enable this boolean property to automatically create a module definition
-(``.def``) file with all global symbols found in the input ``.obj`` files
-for a ``SHARED`` library (or executable with :prop_tgt:`ENABLE_EXPORTS`)
-on Windows.  The module definition file will be passed to the linker
-causing all symbols to be exported from the ``.dll``.
-For global *data* symbols, ``__declspec(dllimport)`` must still be used when
-compiling against the code in the ``.dll``.  All other function symbols will
-be automatically exported and imported by callers.  This simplifies porting
-projects to Windows by reducing the need for explicit ``dllexport`` markup,
-even in ``C++`` classes.
-
-When this property is enabled, zero or more ``.def`` files may also be
-specified as source files of the target.  The exports named by these files
-will be merged with those detected from the object files to generate a
-single module definition file to be passed to the linker.  This can be
-used to export symbols from a ``.dll`` that are not in any of its object
-files but are added by the linker from dependencies (e.g. ``msvcrt.lib``).
-
-This property is initialized by the value of
-the :variable:`CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS` variable if it is set
-when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_ATTRIBUTE_an-attribute.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_ATTRIBUTE_an-attribute.rst
deleted file mode 100644
index 71858c5..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_ATTRIBUTE_an-attribute.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-XCODE_ATTRIBUTE_<an-attribute>
-------------------------------
-
-Set Xcode target attributes directly.
-
-Tell the :generator:`Xcode` generator to set '<an-attribute>' to a given
-value in the generated Xcode project.  Ignored on other generators.
-
-See the :variable:`CMAKE_XCODE_ATTRIBUTE_<an-attribute>` variable
-to set attributes on all targets in a directory tree.
-
-Contents of ``XCODE_ATTRIBUTE_<an-attribute>`` may use
-"generator expressions" with the syntax ``$<...>``.  See the
-:manual:`cmake-generator-expressions(7)` manual for available
-expressions.  See the :manual:`cmake-buildsystem(7)` manual
-for more on defining buildsystem properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_EXPLICIT_FILE_TYPE.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_EXPLICIT_FILE_TYPE.rst
deleted file mode 100644
index dc92902..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_EXPLICIT_FILE_TYPE.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-XCODE_EXPLICIT_FILE_TYPE
-------------------------
-
-Set the Xcode ``explicitFileType`` attribute on its reference to a
-target.  CMake computes a default based on target type but
-can be told explicitly with this property.
-
-See also :prop_tgt:`XCODE_PRODUCT_TYPE`.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_GENERATE_SCHEME.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_GENERATE_SCHEME.rst
deleted file mode 100644
index c32b4de..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_GENERATE_SCHEME.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-XCODE_GENERATE_SCHEME
----------------------
-
-If enabled, the :generator:`Xcode` generator will generate schema files.  These
-are useful to invoke analyze, archive, build-for-testing and test
-actions from the command line.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_GENERATE_SCHEME` if it is set when a target
-is created.
-
-The following target properties overwrite the default of the
-corresponding settings on the "Diagnostic" tab for each schema file.
-Each of those is initialized by the respective ``CMAKE_`` variable
-at target creation time.
-
-- :prop_tgt:`XCODE_SCHEME_ADDRESS_SANITIZER`
-- :prop_tgt:`XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN`
-- :prop_tgt:`XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER`
-- :prop_tgt:`XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS`
-- :prop_tgt:`XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE`
-- :prop_tgt:`XCODE_SCHEME_GUARD_MALLOC`
-- :prop_tgt:`XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP`
-- :prop_tgt:`XCODE_SCHEME_MALLOC_GUARD_EDGES`
-- :prop_tgt:`XCODE_SCHEME_MALLOC_SCRIBBLE`
-- :prop_tgt:`XCODE_SCHEME_MALLOC_STACK`
-- :prop_tgt:`XCODE_SCHEME_THREAD_SANITIZER`
-- :prop_tgt:`XCODE_SCHEME_THREAD_SANITIZER_STOP`
-- :prop_tgt:`XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER`
-- :prop_tgt:`XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP`
-- :prop_tgt:`XCODE_SCHEME_ZOMBIE_OBJECTS`
-
-The following target properties will be applied on the
-"Info", "Arguments", and "Options" tab:
-
-- :prop_tgt:`XCODE_SCHEME_ARGUMENTS`
-- :prop_tgt:`XCODE_SCHEME_DEBUG_AS_ROOT`
-- :prop_tgt:`XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING`
-- :prop_tgt:`XCODE_SCHEME_ENVIRONMENT`
-- :prop_tgt:`XCODE_SCHEME_EXECUTABLE`
-- :prop_tgt:`XCODE_SCHEME_WORKING_DIRECTORY`
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_PRODUCT_TYPE.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_PRODUCT_TYPE.rst
deleted file mode 100644
index f4ef5c0..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_PRODUCT_TYPE.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-XCODE_PRODUCT_TYPE
-------------------
-
-Set the Xcode ``productType`` attribute on its reference to a
-target.  CMake computes a default based on target type but
-can be told explicitly with this property.
-
-See also :prop_tgt:`XCODE_EXPLICIT_FILE_TYPE`.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER.rst
deleted file mode 100644
index cc9bac2..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-XCODE_SCHEME_ADDRESS_SANITIZER
-------------------------------
-
-Whether to enable ``Address Sanitizer`` in the Diagnostics
-section of the generated Xcode scheme.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER` if it is set
-when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst
deleted file mode 100644
index 37a043a..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
------------------------------------------------
-
-Whether to enable ``Detect use of stack after return``
-in the Diagnostics section of the generated Xcode scheme.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN`
-if it is set when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_ARGUMENTS.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_ARGUMENTS.rst
deleted file mode 100644
index 1f228e3..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_ARGUMENTS.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-XCODE_SCHEME_ARGUMENTS
-----------------------
-
-Specify command line arguments that should be added to the Arguments
-section of the generated Xcode scheme.
-
-If set to a list of arguments those will be added to the scheme.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_DEBUG_AS_ROOT.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_DEBUG_AS_ROOT.rst
deleted file mode 100644
index 5407e80..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_DEBUG_AS_ROOT.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-XCODE_SCHEME_DEBUG_AS_ROOT
---------------------------
-
-Whether to debug the target as 'root'.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst
deleted file mode 100644
index 9afeedd..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
---------------------------------------
-
-Whether to enable
-``Allow debugging when using document Versions Browser``
-in the Options section of the generated Xcode scheme.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING`
-if it is set when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst
deleted file mode 100644
index 1a6fcfd..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
-----------------------------------------
-
-Whether to disable the ``Main Thread Checker``
-in the Diagnostics section of the generated Xcode scheme.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER`
-if it is set when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst
deleted file mode 100644
index 9224022..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
-----------------------------------
-
-Whether to enable ``Dynamic Library Loads``
-in the Diagnostics section of the generated Xcode scheme.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS` if it is set
-when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst
deleted file mode 100644
index 203c803..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
--------------------------------------
-
-Whether to enable ``Dynamic Linker API usage``
-in the Diagnostics section of the generated Xcode scheme.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE` if it is set
-when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_ENVIRONMENT.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_ENVIRONMENT.rst
deleted file mode 100644
index c6d875e..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_ENVIRONMENT.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-XCODE_SCHEME_ENVIRONMENT
-------------------------
-
-Specify environment variables that should be added to the Arguments
-section of the generated Xcode scheme.
-
-If set to a list of environment variables and values of the form
-``MYVAR=value`` those environment variables will be added to the
-scheme.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_EXECUTABLE.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_EXECUTABLE.rst
deleted file mode 100644
index 104841b..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_EXECUTABLE.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-XCODE_SCHEME_EXECUTABLE
------------------------
-
-Specify path to executable in the Info section of the generated
-Xcode scheme. If not set the schema generator will select the
-current target if it is actually executable.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_GUARD_MALLOC.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_GUARD_MALLOC.rst
deleted file mode 100644
index c4e83da..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_GUARD_MALLOC.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-XCODE_SCHEME_GUARD_MALLOC
-------------------------------
-
-Whether to enable ``Guard Malloc``
-in the Diagnostics section of the generated Xcode scheme.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_GUARD_MALLOC` if it is set
-when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst
deleted file mode 100644
index 73992c3..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
--------------------------------------
-
-Whether to enable the ``Main Thread Checker`` option
-``Pause on issues``
-in the Diagnostics section of the generated Xcode scheme.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP` if it is set
-when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_MALLOC_GUARD_EDGES.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_MALLOC_GUARD_EDGES.rst
deleted file mode 100644
index ca761c0..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_MALLOC_GUARD_EDGES.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-XCODE_SCHEME_MALLOC_GUARD_EDGES
--------------------------------
-
-Whether to enable ``Malloc Guard Edges``
-in the Diagnostics section of the generated Xcode scheme.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES` if it is set
-when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_MALLOC_SCRIBBLE.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_MALLOC_SCRIBBLE.rst
deleted file mode 100644
index c5ddb95..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_MALLOC_SCRIBBLE.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-XCODE_SCHEME_MALLOC_SCRIBBLE
-------------------------------
-
-Whether to enable ``Malloc Scribble``
-in the Diagnostics section of the generated Xcode scheme.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE` if it is set
-when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_MALLOC_STACK.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_MALLOC_STACK.rst
deleted file mode 100644
index 170f33d..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_MALLOC_STACK.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-XCODE_SCHEME_MALLOC_STACK
--------------------------
-
-Whether to enable ``Malloc Stack`` in the Diagnostics
-section of the generated Xcode scheme.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_MALLOC_STACK` if it is set
-when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER.rst
deleted file mode 100644
index bb70141..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-XCODE_SCHEME_THREAD_SANITIZER
------------------------------
-
-Whether to enable ``Thread Sanitizer`` in the Diagnostics
-section of the generated Xcode scheme.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_THREAD_SANITIZER` if it is set
-when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER_STOP.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER_STOP.rst
deleted file mode 100644
index 5deadb1..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER_STOP.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-XCODE_SCHEME_THREAD_SANITIZER_STOP
-----------------------------------
-
-Whether to enable ``Thread Sanitizer - Pause on issues``
-in the Diagnostics section of the generated Xcode scheme.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP` if it is set
-when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst
deleted file mode 100644
index 0cd823d..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
-------------------------------------------
-
-Whether to enable ``Undefined Behavior Sanitizer``
-in the Diagnostics section of the generated Xcode scheme.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER`
-if it is set when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst
deleted file mode 100644
index d1a9bca..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
------------------------------------------------
-
-Whether to enable ``Undefined Behavior Sanitizer`` option
-``Pause on issues``
-in the Diagnostics section of the generated Xcode scheme.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP`
-if it is set when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_WORKING_DIRECTORY.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_WORKING_DIRECTORY.rst
deleted file mode 100644
index f538f1d..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_WORKING_DIRECTORY.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-XCODE_SCHEME_WORKING_DIRECTORY
-------------------------------
-
-Specify the ``Working Directory`` of the *Run* and *Profile*
-actions in the generated Xcode scheme. In case the value contains
-generator expressions those are evaluated.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_WORKING_DIRECTORY` if it is set
-when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_ZOMBIE_OBJECTS.rst b/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_ZOMBIE_OBJECTS.rst
deleted file mode 100644
index 6e70e8b..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCODE_SCHEME_ZOMBIE_OBJECTS.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-XCODE_SCHEME_ZOMBIE_OBJECTS
-------------------------------
-
-Whether to enable ``Zombie Objects``
-in the Diagnostics section of the generated Xcode scheme.
-
-This property is initialized by the value of the variable
-:variable:`CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS` if it is set
-when a target is created.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/XCTEST.rst b/share/cmake-3.18/Help/prop_tgt/XCTEST.rst
deleted file mode 100644
index eb47e60..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XCTEST.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-XCTEST
-------
-
-This target is a XCTest CFBundle on the Mac.
-
-This property will usually get set via the :command:`xctest_add_bundle`
-macro in :module:`FindXCTest` module.
-
-If a module library target has this property set to true it will be
-built as a CFBundle when built on the Mac.  It will have the directory
-structure required for a CFBundle.
-
-This property depends on :prop_tgt:`BUNDLE` to be effective.
diff --git a/share/cmake-3.18/Help/prop_tgt/XXX_OUTPUT_DIRECTORY.txt b/share/cmake-3.18/Help/prop_tgt/XXX_OUTPUT_DIRECTORY.txt
deleted file mode 100644
index 3ae5448..0000000
--- a/share/cmake-3.18/Help/prop_tgt/XXX_OUTPUT_DIRECTORY.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Output directory in which to build |XXX| target files.
-
-This property specifies the directory into which |xxx| target files
-should be built.  The property value may use
-:manual:`generator expressions <cmake-generator-expressions(7)>`.
-Multi-configuration generators (VS, Xcode) append a per-configuration
-subdirectory to the specified directory unless a generator expression
-is used.
-
-This property is initialized by the value of the variable
-|CMAKE_XXX_OUTPUT_DIRECTORY| if it is set when a target is created.
diff --git a/share/cmake-3.18/Help/release/3.1.rst b/share/cmake-3.18/Help/release/3.1.rst
deleted file mode 100644
index 8bea28f..0000000
--- a/share/cmake-3.18/Help/release/3.1.rst
+++ /dev/null
@@ -1,425 +0,0 @@
-CMake 3.1 Release Notes
-***********************
-
-.. only:: html
-
-  .. contents::
-
-Changes made since CMake 3.0 include the following.
-
-Documentation Changes
-=====================
-
-* A new :manual:`cmake-compile-features(7)` manual was added.
-
-New Features
-============
-
-Generators
-----------
-
-* The :generator:`Visual Studio 14 2015` generator was added.
-
-Windows Phone and Windows Store
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Generators for Visual Studio 11 (2012) and above learned to generate
-  projects for Windows Phone and Windows Store.  One may set the
-  :variable:`CMAKE_SYSTEM_NAME` variable to ``WindowsPhone``
-  or ``WindowsStore`` on the :manual:`cmake(1)` command-line
-  or in a :variable:`CMAKE_TOOLCHAIN_FILE` to activate these platforms.
-  Also set :variable:`CMAKE_SYSTEM_VERSION` to ``8.0`` or ``8.1`` to
-  specify the version of Windows to be targeted.
-
-NVIDIA Nsight Tegra
-^^^^^^^^^^^^^^^^^^^
-
-* Generators for Visual Studio 10 (2010) and above learned to generate
-  projects for NVIDIA Nsight Tegra Visual Studio Edition.  One may set
-  the :variable:`CMAKE_SYSTEM_NAME` variable to ``Android`` on the
-  :manual:`cmake(1)` command-line or in a :variable:`CMAKE_TOOLCHAIN_FILE`
-  to activate this platform.
-
-Syntax
-------
-
-* The :manual:`cmake-language(7)` syntax for :ref:`Variable References` and
-  :ref:`Escape Sequences` was simplified in order to allow a much faster
-  implementation.  See policy :policy:`CMP0053`.
-
-* The :command:`if` command no longer automatically dereferences
-  variables named in quoted or bracket arguments.  See policy
-  :policy:`CMP0054`.
-
-Commands
---------
-
-* The :command:`add_custom_command` command learned to interpret
-  :manual:`cmake-generator-expressions(7)` in arguments to ``DEPENDS``.
-
-* The :command:`export(PACKAGE)` command learned to check the
-  :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` variable to skip
-  exporting the package.
-
-* The :command:`file(STRINGS)` command gained a new ``ENCODING``
-  option to enable extraction of ``UTF-8`` strings.
-
-* The :command:`find_package` command learned to check the
-  :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` and
-  :variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY`
-  variables to skip searching the package registries.
-
-* The :command:`get_property` command learned a new ``INSTALL`` scope
-  for properties.
-
-* The :command:`install` command learned a ``MESSAGE_NEVER`` option
-  to avoid output during installation.
-
-* The :command:`set_property` command learned a new ``INSTALL`` scope
-  for properties.
-
-* The :command:`string` command learned a new ``GENEX_STRIP`` subcommand
-  which removes
-  :manual:`generator expression <cmake-generator-expressions(7)>`.
-
-* The :command:`string` command learned a new ``UUID`` subcommand
-  to generate a univerally unique identifier.
-
-* New :command:`target_compile_features` command allows populating the
-  :prop_tgt:`COMPILE_FEATURES` target property, just like any other
-  build variable.
-
-* The :command:`target_sources` command was added to add to the
-  :prop_tgt:`SOURCES` target property.
-
-Variables
----------
-
-* The Visual Studio generators for versions 8 (2005) and above
-  learned to read the target platform name from a new
-  :variable:`CMAKE_GENERATOR_PLATFORM` variable when it is
-  not specified as part of the generator name.  The platform
-  name may be specified on the :manual:`cmake(1)` command line
-  with the ``-A`` option, e.g. ``-G "Visual Studio 12 2013" -A x64``.
-
-* The :variable:`CMAKE_GENERATOR_TOOLSET` variable may now be
-  initialized in a toolchain file specified by the
-  :variable:`CMAKE_TOOLCHAIN_FILE` variable.  This is useful
-  when cross-compiling with the Xcode or Visual Studio
-  generators.
-
-* The :variable:`CMAKE_INSTALL_MESSAGE` variable was introduced to
-  optionally reduce output installation.
-
-Properties
-----------
-
-* New :prop_tgt:`CXX_STANDARD` and :prop_tgt:`CXX_EXTENSIONS` target
-  properties may specify values which CMake uses to compute required
-  compile options such as ``-std=c++11`` or ``-std=gnu++11``. The
-  :variable:`CMAKE_CXX_STANDARD` and :variable:`CMAKE_CXX_EXTENSIONS`
-  variables may be set to initialize the target properties.
-
-* New :prop_tgt:`C_STANDARD` and :prop_tgt:`C_EXTENSIONS` target
-  properties may specify values which CMake uses to compute required
-  compile options such as ``-std=c11`` or ``-std=gnu11``. The
-  :variable:`CMAKE_C_STANDARD` and :variable:`CMAKE_C_EXTENSIONS`
-  variables may be set to initialize the target properties.
-
-* New :prop_tgt:`COMPILE_FEATURES` target property may contain a list
-  of features required to compile a target.  CMake uses this
-  information to ensure that the compiler in use is capable of building
-  the target, and to add any necessary compile flags to support language
-  features.
-
-* New :prop_tgt:`COMPILE_PDB_NAME` and
-  :prop_tgt:`COMPILE_PDB_OUTPUT_DIRECTORY` target properties
-  were introduced to specify the MSVC compiler program database
-  file location (``cl /Fd``).  This complements the existing
-  :prop_tgt:`PDB_NAME` and :prop_tgt:`PDB_OUTPUT_DIRECTORY`
-  target properties that specify the linker program database
-  file location (``link /pdb``).
-
-* The :prop_tgt:`INTERFACE_LINK_LIBRARIES` target property now supports
-  a ``$<LINK_ONLY:...>``
-  :manual:`generator expression <cmake-generator-expressions(7)>`.
-
-* A new :prop_tgt:`INTERFACE_SOURCES` target property was introduced. This is
-  consumed by dependent targets, which compile and link the listed sources.
-
-* The :prop_tgt:`SOURCES` target property now contains
-  :manual:`generator expression <cmake-generator-expressions(7)>`
-  such as ``TARGET_OBJECTS`` when read at configure time, if
-  policy :policy:`CMP0051` is ``NEW``.
-
-* The :prop_tgt:`SOURCES` target property now generally supports
-  :manual:`generator expression <cmake-generator-expressions(7)>`.  The
-  generator expressions may be used in the :command:`add_library` and
-  :command:`add_executable` commands.
-
-* It is now possible to write and append to the :prop_tgt:`SOURCES` target
-  property.  The :variable:`CMAKE_DEBUG_TARGET_PROPERTIES` variable may be
-  used to trace the origin of sources.
-
-* A :prop_sf:`VS_DEPLOYMENT_CONTENT` source file property was added
-  to tell the Visual Studio generators to mark content for deployment
-  in Windows Phone and Windows Store projects.
-
-* A :prop_sf:`VS_DEPLOYMENT_LOCATION` source file property was added
-  to tell the Visual Studio generators the relative location of content
-  marked for deployment in Windows Phone and Windows Store projects.
-
-* The :prop_tgt:`VS_WINRT_COMPONENT` target property was created to
-  tell Visual Studio generators to compile a shared library as a
-  Windows Runtime (WinRT) component.
-
-* The :generator:`Xcode` generator learned to check source
-  file properties  :prop_sf:`XCODE_EXPLICIT_FILE_TYPE` and
-  :prop_sf:`XCODE_LAST_KNOWN_FILE_TYPE` for a custom Xcode
-  file reference type.
-
-Modules
--------
-
-* The :module:`BundleUtilities` module learned to resolve and replace
-  ``@rpath`` placeholders on OS X to correctly bundle applications
-  using them.
-
-* The :module:`CMakePackageConfigHelpers` module
-  :command:`configure_package_config_file` command learned a new
-  ``INSTALL_PREFIX`` option to generate package configuration files
-  meant for a prefix other than :variable:`CMAKE_INSTALL_PREFIX`.
-
-* The :module:`CheckFortranSourceCompiles` module was added to
-  provide a ``CHECK_Fortran_SOURCE_COMPILES`` macro.
-
-* The :module:`ExternalData` module learned to tolerate a ``DATA{}``
-  reference to a missing source file with a warning instead of
-  rejecting it with an error.  This helps developers write new
-  ``DATA{}`` references to test reference outputs that have not
-  yet been created.
-
-* The :module:`ExternalProject` module learned to support lzma-compressed
-  source tarballs with ``.7z``, ``.tar.xz``, and ``.txz`` extensions.
-
-* The :module:`ExternalProject` module ``ExternalProject_Add`` command
-  learned a new ``BUILD_ALWAYS`` option to cause the external project
-  build step to run every time the host project is built.
-
-* The :module:`ExternalProject` module ``ExternalProject_Add`` command
-  learned a new ``EXCLUDE_FROM_ALL`` option to cause the external
-  project target to have the :prop_tgt:`EXCLUDE_FROM_ALL` target
-  property set.
-
-* The :module:`ExternalProject` module ``ExternalProject_Add_Step`` command
-  learned a new ``EXCLUDE_FROM_MAIN`` option to cause the step to not be
-  a direct dependency of the main external project target.
-
-* The :module:`ExternalProject` module ``ExternalProject_Add`` command
-  learned a new ``DOWNLOAD_NO_PROGRESS`` option to disable progress
-  output while downloading the source tarball.
-
-* The :module:`FeatureSummary` module ``feature_summary`` API
-  learned to accept multiple values for the ``WHAT`` option and
-  combine them appropriately.
-
-* The :module:`FindCUDA` module learned to support ``fatbin`` and ``cubin``
-  modules.
-
-* The :module:`FindGTest` module ``gtest_add_tests`` macro learned
-  a new ``AUTO`` option to automatically read the :prop_tgt:`SOURCES`
-  target property of the test executable and scan the source files
-  for tests to be added.
-
-* The :module:`FindGLEW` module now provides imported targets.
-
-* The :module:`FindGLUT` module now provides imported targets.
-
-* The :module:`FindHg` module gained a new ``Hg_WC_INFO`` macro to
-  help run ``hg`` to extract information about a Mercurial work copy.
-
-* The :module:`FindOpenCL` module was introduced.
-
-* The :module:`FindOpenMP` module learned to support Fortran.
-
-* The :module:`FindPkgConfig` module learned to use the ``PKG_CONFIG``
-  environment variable value as the ``pkg-config`` executable, if set.
-
-* The :module:`FindXercesC` module was introduced.
-
-* The :module:`FindZLIB` module now provides imported targets.
-
-* The :module:`GenerateExportHeader` module ``generate_export_header``
-  function learned to allow use with :ref:`Object Libraries`.
-
-* The :module:`InstallRequiredSystemLibraries` module gained a new
-  ``CMAKE_INSTALL_OPENMP_LIBRARIES`` option to install MSVC OpenMP
-  runtime libraries.
-
-* The :module:`UseSWIG` module learned to detect the module name
-  from ``.i`` source files if possible to avoid the need to set
-  the ``SWIG_MODULE_NAME`` source file property explicitly.
-
-* The :module:`WriteCompilerDetectionHeader` module was added to allow
-  creation of a portable header file for compiler optional feature detection.
-
-Generator Expressions
----------------------
-
-* New ``COMPILE_FEATURES``
-  :manual:`generator expression <cmake-generator-expressions(7)>` allows
-  setting build properties based on available compiler features.
-
-CTest
------
-
-* The :command:`ctest_coverage` command learned to read variable
-  ``CTEST_COVERAGE_EXTRA_FLAGS`` to set ``CoverageExtraFlags``.
-
-* The :command:`ctest_coverage` command learned to support
-  Intel coverage files with the ``codecov`` tool.
-
-* The :command:`ctest_memcheck` command learned to support sanitizer
-  modes, including ``AddressSanitizer``, ``MemorySanitizer``,
-  ``ThreadSanitizer``, and ``UndefinedBehaviorSanitizer``.
-  Options may be set using the new
-  :variable:`CTEST_MEMORYCHECK_SANITIZER_OPTIONS` variable.
-
-CPack
------
-
-* :manual:`cpack(1)` gained an ``IFW`` generator to package using
-  Qt Framework Installer tools.  See the :cpack_gen:`CPack IFW Generator`.
-
-* :manual:`cpack(1)` gained ``7Z`` and ``TXZ`` generators supporting
-  lzma-compressed archives.
-
-* The :cpack_gen:`CPack DEB Generator` learned a new
-  :variable:`CPACK_DEBIAN_COMPRESSION_TYPE` variable to set the
-  tarball compression type.
-
-* The :cpack_gen:`CPack WIX Generator` learned to support
-  a :prop_inst:`CPACK_WIX_ACL` installed file property to
-  specify an Access Control List.
-
-Other
------
-
-* The :manual:`cmake(1)` ``-E`` option learned a new ``env`` command.
-
-* The :manual:`cmake(1)` ``-E tar`` command learned to support
-  lzma-compressed files.
-
-* :ref:`Object Libraries` may now have extra sources that do not
-  compile to object files so long as they would not affect linking
-  of a normal library (e.g. ``.dat`` is okay but not ``.def``).
-
-* Visual Studio generators for VS 8 and later learned to support
-  the ``ASM_MASM`` language.
-
-* The Visual Studio generators learned to treat ``.hlsl`` source
-  files as High Level Shading Language sources (using ``FXCompile``
-  in ``.vcxproj`` files).  Source file properties
-  :prop_sf:`VS_SHADER_TYPE`, :prop_sf:`VS_SHADER_MODEL`, and
-  :prop_sf:`VS_SHADER_ENTRYPOINT` were added added to specify the
-  shader type, model, and entry point name.
-
-New Diagnostics
-===============
-
-* Policy :policy:`CMP0052` introduced to control directories in the
-  :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of exported targets.
-
-Deprecated and Removed Features
-===============================
-
-* In CMake 3.0 the :command:`target_link_libraries` command
-  accidentally began allowing unquoted arguments to use
-  :manual:`generator expressions <cmake-generator-expressions(7)>`
-  containing a (``;`` separated) list within them.  For example::
-
-    set(libs B C)
-    target_link_libraries(A PUBLIC $<BUILD_INTERFACE:${libs}>)
-
-  This is equivalent to writing::
-
-    target_link_libraries(A PUBLIC $<BUILD_INTERFACE:B C>)
-
-  and was never intended to work.  It did not work in CMake 2.8.12.
-  Such generator expressions should be in quoted arguments::
-
-    set(libs B C)
-    target_link_libraries(A PUBLIC "$<BUILD_INTERFACE:${libs}>")
-
-  CMake 3.1 again requires the quotes for this to work correctly.
-
-* Prior to CMake 3.1 the Makefile generators did not escape ``#``
-  correctly inside make variable assignments used in generated
-  makefiles, causing them to be treated as comments.  This made
-  code like::
-
-    add_compile_options(-Wno-#pragma-messages)
-
-  not work in Makefile generators, but work in other generators.
-  Now it is escaped correctly, making the behavior consistent
-  across generators.  However, some projects may have tried to
-  workaround the original bug with code like::
-
-    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-\\#pragma-messages")
-
-  This added the needed escape for Makefile generators but also
-  caused other generators to pass ``-Wno-\#pragma-messages`` to
-  the shell, which would work only in POSIX shells.
-  Unfortunately the escaping fix could not be made in a compatible
-  way so this platform- and generator-specific workaround no
-  longer works.  Project code may test the :variable:`CMAKE_VERSION`
-  variable value to make the workaround version-specific too.
-
-* Callbacks established by the :command:`variable_watch` command will no
-  longer receive the ``ALLOWED_UNKNOWN_READ_ACCESS`` access type when
-  the undocumented ``CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS`` variable is
-  set.  Uninitialized variable accesses will always be reported as
-  ``UNKNOWN_READ_ACCESS``.
-
-* The :module:`CMakeDetermineVSServicePack` module now warns that
-  it is deprecated and should not longer be used.  Use the
-  :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable instead.
-
-* The :module:`FindITK` module has been removed altogether.
-  It was a thin-wrapper around ``find_package(ITK ... NO_MODULE)``.
-  This produces much clearer error messages when ITK is not found.
-
-* The :module:`FindVTK` module has been removed altogether.
-  It was a thin-wrapper around ``find_package(VTK ... NO_MODULE)``.
-  This produces much clearer error messages when VTK is not found.
-
-  The module also provided compatibility support for finding VTK 4.0.
-  This capability has been dropped.
-
-Other Changes
-=============
-
-* The :manual:`cmake-gui(1)` learned to capture output from child
-  processes started by the :command:`execute_process` command
-  and display it in the output window.
-
-* The :manual:`cmake-language(7)` internal implementation of generator
-  expression and list expansion parsers have been optimized and shows
-  non-trivial speedup on large projects.
-
-* The Makefile generators learned to use response files with GNU tools
-  on Windows to pass library directories and names to the linker.
-
-* When generating linker command-lines, CMake now avoids repeating
-  items corresponding to SHARED library targets.
-
-* Support for the Open Watcom compiler has been overhauled.
-  The :variable:`CMAKE_<LANG>_COMPILER_ID` is now ``OpenWatcom``,
-  and the :variable:`CMAKE_<LANG>_COMPILER_VERSION` now uses
-  the Open Watcom external version numbering.  The external
-  version numbers are lower than the internal version number
-  by 11.
-
-* The ``cmake-mode.el`` major Emacs editing mode no longer
-  treats ``_`` as part of words, making it more consistent
-  with other major modes.
diff --git a/share/cmake-3.18/Help/release/3.15.rst b/share/cmake-3.18/Help/release/3.15.rst
deleted file mode 100644
index e68e7d3..0000000
--- a/share/cmake-3.18/Help/release/3.15.rst
+++ /dev/null
@@ -1,396 +0,0 @@
-CMake 3.15 Release Notes
-************************
-
-.. only:: html
-
-  .. contents::
-
-Changes made since CMake 3.14 include the following.
-
-New Features
-============
-
-Generators
-----------
-
-* The :generator:`Xcode` generator now supports per-target schemes.
-  See the :variable:`CMAKE_XCODE_GENERATE_SCHEME` variable and
-  :prop_tgt:`XCODE_GENERATE_SCHEME` target property.
-
-* The :generator:`Green Hills MULTI` generator has been updated:
-
-  * It now supports the :command:`add_custom_command` and
-    :command:`add_custom_target` commands.
-
-  * It is now available on Linux.
-
-Languages
----------
-
-* Preliminary support for the ``Swift`` language was added to the
-  :generator:`Ninja` generator:
-
-  * Use the :envvar:`SWIFTC` environment variable to specify a compiler.
-
-  * The :prop_tgt:`Swift_DEPENDENCIES_FILE` target property and
-    :prop_sf:`Swift_DEPENDENCIES_FILE` source file property were added
-    to customize dependency files.
-
-  * The :prop_tgt:`Swift_MODULE_NAME` target property was added to
-    customize the Swift module name.
-
-  * The :prop_sf:`Swift_DIAGNOSTICS_FILE` source property was added to
-    indicate where to write the serialised Swift diagnostics.
-
-  The Swift support is experimental, not considered stable, and may change
-  in future releases of CMake.
-
-Compilers
----------
-
-* The ``Clang`` compiler variant on Windows that targets the MSVC ABI
-  but has a GNU-like command line is now supported.
-
-* Support for the Clang-based ARM compiler was added with compiler id
-  ``ARMClang``.
-
-* Support was added for the IAR compiler architectures Renesas RX,
-  RL78, RH850 and Texas Instruments MSP430.
-
-* Support was added for the IAR compilers built for Linux (IAR BuildLx).
-
-Command-Line
-------------
-
-* The :envvar:`CMAKE_GENERATOR` environment variable was added
-  to specify a default generator to use when :manual:`cmake(1)` is
-  run without a ``-G`` option.  Additionally, environment variables
-  :envvar:`CMAKE_GENERATOR_PLATFORM`, :envvar:`CMAKE_GENERATOR_TOOLSET`,
-  and :envvar:`CMAKE_GENERATOR_INSTANCE` were created to configure
-  the generator.
-
-* The :manual:`cmake(1)` ``--build`` tool ``--target`` parameter gained support
-  for multiple targets, e.g. ``cmake --build . --target Library1 Library2``.
-  It now also has a short form ``-t`` alias, e.g.
-  ``cmake --build . -t Library1 Library2``.
-
-* The :manual:`cmake(1)` command gained a new ``--install`` option.
-  This may be used after building a project to run installation without
-  using the generated build system or the native build tool.
-
-* The :manual:`cmake(1)` command learned a new CLI option ``--loglevel``.
-
-* The :manual:`cmake(1)` ``-E remove_directory`` command-line tool learned
-  to support removing multiple directories.
-
-* The :manual:`cmake(1)` ``-E tar`` tool has been improved:
-
-  * It now continues adding files to an archive even if some of the files
-    are not readable.  This behavior is more consistent with the
-    classic ``tar`` tool.
-
-  * It now parses all flags, and if an invalid flag was provided, a
-    warning is issued.
-
-  * It now displays an error if no action flag was specified, along with a
-    list of possible actions: ``t`` (list), ``c`` (create) or ``x`` (extract).
-
-  * It now supports extracting (``-x``) or listing (``-t``) only specific
-    files or directories.
-
-  * It now supports Zstandard compression with a ``--zstd`` option.
-    Zstandard was designed to give a compression ratio comparable to that
-    of the DEFLATE (zip) algorithm, but faster, especially for decompression.
-
-Commands
---------
-
-* The :command:`add_custom_command` and :command:`add_custom_target` commands
-  gained a new ``JOB_POOL`` option that works with the :generator:`Ninja`
-  generator to set the pool variable on the build statement.
-
-* The :command:`add_library` command ``ALIAS`` option learned to support
-  import libraries of the ``UNKNOWN`` type.
-
-* The :command:`cmake_parse_arguments` command gained an additional
-  ``<prefix>_KEYWORDS_MISSING_VALUES`` output variable to report
-  keyword arguments that were given by the caller with no values.
-
-* The :command:`execute_process` command gained a ``COMMAND_ECHO`` option
-  and supporting :variable:`CMAKE_EXECUTE_PROCESS_COMMAND_ECHO` variable
-  to enable echoing of the command-line string before execution.
-
-* The :command:`file(INSTALL)` command learned a new argument,
-  ``FOLLOW_SYMLINK_CHAIN``, which can be used to recursively resolve and
-  install symlinks.
-
-* :command:`list` learned new sub-commands:
-  ``PREPEND``, ``POP_FRONT`` and ``POP_BACK``.
-
-* The :command:`message` command learned new types:
-  ``NOTICE``, ``VERBOSE``, ``DEBUG`` and ``TRACE``.
-
-* The :command:`string` learned a new sub-command ``REPEAT``.
-
-Variables
----------
-
-* The :variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable and corresponding
-  :prop_tgt:`CROSSCOMPILING_EMULATOR` target property learned to support
-  arguments to the emulator.
-
-* The :variable:`CMAKE_FIND_PACKAGE_PREFER_CONFIG` variable was added to tell
-  :command:`find_package` calls to look for a package configuration
-  file first even if a find module is available.
-
-* The :variable:`CMAKE_FRAMEWORK` variable was added to initialize the
-  :prop_tgt:`FRAMEWORK` property on all targets.
-
-* The :variable:`CMAKE_VS_JUST_MY_CODE_DEBUGGING` variable and
-  :prop_tgt:`VS_JUST_MY_CODE_DEBUGGING` target property were added to
-  enable the Just My Code feature of the Visual Studio Debugger when
-  compiling with MSVC cl 19.05 and higher.
-
-* The :variable:`CMAKE_MSVC_RUNTIME_LIBRARY` variable and
-  :prop_tgt:`MSVC_RUNTIME_LIBRARY` target property were introduced to
-  select the runtime library used by compilers targeting the MSVC ABI.
-  See policy :policy:`CMP0091`.
-
-* The :variable:`CMAKE_PROJECT_INCLUDE` and
-  :variable:`CMAKE_PROJECT_INCLUDE_BEFORE` variables were added to allow
-  injection of custom code at the sites of :command:`project` calls
-  without knowing the project name a priori.
-
-Properties
-----------
-
-* The :prop_tgt:`ADDITIONAL_CLEAN_FILES` target property and
-  :prop_dir:`ADDITIONAL_CLEAN_FILES` directory property were added.
-  They allow to register additional files that should be removed during
-  the clean stage.
-
-* The :prop_tgt:`PUBLIC_HEADER` and :prop_tgt:`PRIVATE_HEADER` properties
-  may now be set on :ref:`Interface Libraries`. The headers specified by those
-  properties can be installed using the :command:`install(TARGETS)` command by
-  passing the ``PUBLIC_HEADER`` and ``PRIVATE_HEADER`` arguments respectively.
-
-* The :prop_tgt:`VS_PACKAGE_REFERENCES` target property was added to
-  tell :ref:`Visual Studio Generators` to add references to ``nuget``
-  packages.
-
-* The :prop_tgt:`VS_PROJECT_IMPORT` target property was added to allow
-  managed Visual Studio project files to import external ``.props`` files.
-
-* The :prop_tgt:`VS_NO_SOLUTION_DEPLOY` target property was added to
-  tell :ref:`Visual Studio Generators` whether to deploy an artifact
-  to the WinCE or Windows Phone target device.
-
-Modules
--------
-
-* The :module:`FindBoost` module was reworked to expose a more consistent
-  user experience between its "Config" and "Module" modes and with other
-  find modules in general.
-
-  * A new imported target ``Boost::headers`` is now defined (same
-    as ``Boost::boost``).
-
-  * New output variables ``Boost_VERSION_MACRO``,
-    ``Boost_VERSION_MAJOR``, ``Boost_VERSION_MINOR``,
-    ``Boost_VERSION_PATCH``, and ``Boost_VERSION_COUNT``
-    were added.
-
-  * The ``QUIET`` argument passed to :command:`find_package` is no
-    longer ignored in config mode.  Note that the CMake package shipped with
-    Boost ``1.70.0`` ignores the ``QUIET`` argument passed to
-    :command:`find_package`.  This is fixed in the next Boost release.
-
-  * The input switch ``Boost_DETAILED_FAILURE_MSG`` was removed.
-
-  * ``Boost_VERSION`` now reports the version in ``x.y.z``
-    format in module mode.  See policy :policy:`CMP0093`.
-
-* The :module:`FindCups` module now provides imported targets.
-
-* The :module:`FindEnvModules` module was added to use Lua- and TCL-based
-  environment modules in :ref:`CTest Scripts <CTest Script>`.
-
-* The :module:`FindGLEW` module now provides an interface more consistent
-  with what upstream GLEW provides in its own CMake package files.
-
-* The :module:`FindPkgConfig` now populates :prop_tgt:`INTERFACE_LINK_OPTIONS`
-  property of imported targets with other (non-library) linker flags.
-
-* The :module:`FindPostgreSQL` module learned to find debug and release
-  variants separately.
-
-* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
-  gained additional lookup strategies and controls, and a new default.
-  See policy :policy:`CMP0094`.
-
-* Modules :module:`FindPython`, :module:`FindPython2` and :module:`FindPython3`
-  gain a new target (respectively ``Python::Module``, ``Python2::Module``
-  and ``Python3::Module``) which can be used to develop Python modules.
-
-* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
-  gain capability to control how virtual environments are handled.
-
-* The :module:`UseSWIG` module learned to manage alternate library names
-  by passing ``-interface <library_name>`` for ``python`` language or
-  ``-dllimport <library_name>`` for ``CSharp`` language to the ``SWIG``
-  compiler.
-
-Generator Expressions
----------------------
-
-* The :manual:`generator expressions <cmake-generator-expressions(7)>`
-  ``C_COMPILER_ID``, ``CXX_COMPILER_ID``, ``CUDA_COMPILER_ID``,
-  ``Fortran_COMPILER_ID``, ``COMPILE_LANGUAGE``, ``COMPILE_LANG_AND_ID``, and
-  ``PLATFORM_ID`` learned to support matching one value from a comma-separated
-  list.
-
-* The ``$<CUDA_COMPILER_ID:...>`` and ``$<CUDA_COMPILER_VERSION:...>``
-  :manual:`generator expressions <cmake-generator-expressions(7)>` were added.
-
-* The ``$<COMPILE_LANG_AND_ID:...>`` generator expression was introduced to
-  allow specification of compile options for target files based on the
-  :variable:`CMAKE_<LANG>_COMPILER_ID` and :prop_sf:`LANGUAGE` of
-  each source file.
-
-* A ``$<FILTER:list,INCLUDE|EXCLUDE,regex>``
-  :manual:`generator expression <cmake-generator-expressions(7)>`
-  has been added.
-
-* A ``$<REMOVE_DUPLICATES:list>``
-  :manual:`generator expression <cmake-generator-expressions(7)>`
-  has been added.
-
-* The ``$<SHELL_PATH:...>`` :manual:`generator expression
-  <cmake-generator-expressions(7)>` gained support for a list of paths.
-
-* New ``$<TARGET_FILE*>`` :manual:`generator expressions
-  <cmake-generator-expressions(7)>` were added to retrieve the prefix, base
-  name, and suffix of the file names of various artifacts:
-
-  * ``$<TARGET_FILE_PREFIX:...>``
-  * ``$<TARGET_FILE_BASE_NAME:...>``
-  * ``$<TARGET_FILE_SUFFIX:...>``
-  * ``$<TARGET_LINKER_FILE_PREFIX:...>``
-  * ``$<TARGET_LINKER_FILE_BASE_NAME:...>``
-  * ``$<TARGET_LINKER_FILE_SUFFIX:...>``
-  * ``$<TARGET_PDB_FILE_BASE_NAME:...>``
-
-* The ``$<TARGET_OBJECTS:...>`` :manual:`generator expression
-  <cmake-generator-expressions(7)>` is now supported on ``SHARED``,
-  ``STATIC``, ``MODULE`` libraries and executables.
-
-CTest
------
-
-* The :command:`ctest_submit` command learned a new option: ``BUILD_ID``.
-  This can be used to store the ID assigned to this build by CDash to a
-  variable.
-
-* The :command:`ctest_update` command learned to honor a new variable:
-  :variable:`CTEST_UPDATE_VERSION_OVERRIDE`. This can be used to specify
-  the current version of your source tree rather than using the update
-  command to discover the current version that is checked out.
-
-CPack
------
-
-* The :cpack_gen:`CPack IFW Generator` gained a new
-  :variable:`CPACK_IFW_PACKAGE_STYLE_SHEET` variable to customize the
-  installer stylesheet.
-
-Deprecated and Removed Features
-===============================
-
-* The :manual:`cmake-server(7)` mode has been deprecated and will be
-  removed from a future version of CMake.  Please port clients to use
-  the :manual:`cmake-file-api(7)` instead.
-
-* The :prop_dir:`ADDITIONAL_MAKE_CLEAN_FILES` directory property is now
-  deprecated.  Use the :prop_dir:`ADDITIONAL_CLEAN_FILES` directory property
-  instead.
-
-* The variable :variable:`CMAKE_AUTOMOC_RELAXED_MODE` is considered
-  deprecated.  Support still exists but will be removed in future versions.
-
-* The :command:`export(PACKAGE)` command now does nothing unless
-  enabled via :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY`.
-  See policy :policy:`CMP0090`.
-
-* The :generator:`Xcode` generator now requires at least Xcode 5.
-
-* An explicit deprecation diagnostic was added for policy ``CMP0066``
-  (``CMP0065`` and below were already deprecated).
-  The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
-  of all policies are deprecated and that projects should port to the
-  NEW behaviors.
-
-Other Changes
-=============
-
-* If a feature specified by :command:`target_compile_features` is available
-  in the compiler's default standard level, CMake 3.14 and below incorrectly
-  added unnecessary ``-std=`` flags that could lower the standard level.
-  This bug has been fixed in CMake 3.15.  This behavior change may expose
-  bugs in existing projects that were relying on undocumented implementation
-  details.  Specifying compile features only ensures that the compiler runs
-  in a mode that has those features, not that any specific standard level is
-  used or explicit ``-std=`` flag passed.
-
-* CMake learned how to compile C++14 with the IBM AIX XL compiler
-  and the SunPro compiler and to compile C++20 with the AppleClang compiler.
-
-* With MSVC-like compilers the value of :variable:`CMAKE_<LANG>_FLAGS`
-  no longer contains warning flags like ``/W3`` by default.
-  See policy :policy:`CMP0092`.
-
-* IBM Clang-based XL compilers that define ``__ibmxl__`` now use the
-  compiler id ``XLClang`` instead of ``XL``.  See policy :policy:`CMP0089`.
-
-* The :command:`file(REMOVE)` and :command:`file(REMOVE_RECURSE)` commands
-  were changed to ignore empty arguments with a warning instead of treating
-  them as a relative path and removing the contents of the current directory.
-
-Updates
-=======
-
-Changes made since CMake 3.15.0 include the following.
-
-3.15.1
-------
-
-* In CMake 3.15.0 support for the GNU-like ``Clang`` compiler targeting the
-  MSVC ABI implemented :variable:`CMAKE_CXX_STANDARD` values 98 and 11 using
-  the corresponding ``-std=`` flags.  However, these modes do not work with
-  the MSVC standard library.  Therefore CMake 3.15.1 passes C++14 standard
-  flags even for C++98 and C++11.  This is consistent with MSVC itself which
-  always runs in a mode aware of C++14.
-
-* Preliminary Swift support added in 3.15.0 has been updated.
-
-3.15.2
-------
-
-* In CMake 3.15.0 and 3.15.1 the :variable:`CMAKE_FIND_PACKAGE_PREFER_CONFIG`
-  variable caused the :command:`find_package` command to fail on a missing
-  package even without the ``REQUIRED`` option.  This has been fixed.
-
-3.15.3
-------
-
-* ``CrayPrgEnv`` compiler wrapper support has been updated for the 19.06
-  release of the Cray Programming Environment for which the default linking
-  mode on XC Cray systems is now dynamic instead of static.
-
-3.15.4
-------
-
-* In CMake 3.15.0 through 3.15.3, the :prop_dir:`EXCLUDE_FROM_ALL`
-  directory property was regressed from pre-3.14 behavior and caused
-  targets within the directory to be excluded even from its own "all".
-  This has been fixed.
-  The bug also existed in 3.14.0 through 3.14.6 and is fixed in 3.14.7.
diff --git a/share/cmake-3.18/Help/release/3.16.rst b/share/cmake-3.18/Help/release/3.16.rst
deleted file mode 100644
index f3fdb08..0000000
--- a/share/cmake-3.18/Help/release/3.16.rst
+++ /dev/null
@@ -1,318 +0,0 @@
-CMake 3.16 Release Notes
-************************
-
-.. only:: html
-
-  .. contents::
-
-Changes made since CMake 3.15 include the following.
-
-New Features
-============
-
-Languages
----------
-
-* CMake learned to support the Objective C (``OBJC``) and Objective C++
-  (``OBJCXX``) languages.  They may be enabled via the :command:`project`
-  and :command:`enable_language` commands.  When ``OBJC`` or ``OBJCXX``
-  is enabled, source files with the ``.m`` or ``.mm``, respectively,
-  will be compiled as Objective C or C++.  Otherwise they will be treated
-  as plain C++ sources as they were before.
-
-Compilers
----------
-
-* The ``Clang`` compiler is now supported on ``Solaris``.
-
-Platforms
----------
-
-* On AIX, executables using the :prop_tgt:`ENABLE_EXPORTS` target property
-  now produce a linker import file with a ``.imp`` extension in addition
-  to the executable file.  Plugins (created via :command:`add_library` with
-  the ``MODULE`` option) that use :command:`target_link_libraries` to link
-  to the executable for its symbols are now linked using the import file.
-  The :command:`install(TARGETS)` command now installs the import file as
-  an ``ARCHIVE`` artifact.
-
-* On AIX, runtime linking is no longer enabled by default.  CMake provides
-  the linker enough information to resolve all symbols up front.
-  One may manually enable runtime linking for shared libraries and/or
-  loadable modules by adding ``-Wl,-G`` to their link flags
-  (e.g. in the :variable:`CMAKE_SHARED_LINKER_FLAGS` or
-  :variable:`CMAKE_MODULE_LINKER_FLAGS` variable).
-  One may manually enable runtime linking for executables by adding
-  ``-Wl,-brtl`` to their link flags (e.g. in the
-  :variable:`CMAKE_EXE_LINKER_FLAGS` variable).
-
-Command-Line
-------------
-
-* :manual:`cmake(1)` ``-E`` now supports ``true`` and ``false`` commands,
-  which do nothing while returning exit codes of 0 and 1, respectively.
-
-* :manual:`cmake(1)` gained a ``--trace-redirect=<file>`` command line
-  option that can be used to redirect ``--trace`` output to a file instead
-  of ``stderr``.
-
-* The :manual:`cmake(1)` ``--loglevel`` command line option has been
-  renamed to ``--log-level`` to make it consistent with the naming of other
-  command line options.  The ``--loglevel`` option is still supported to
-  preserve backward compatibility.
-
-Commands
---------
-
-* The :command:`add_test` command learned the option ``COMMAND_EXPAND_LISTS``
-  which causes lists in the ``COMMAND`` argument to be expanded, including
-  lists created by generator expressions.
-
-* The :command:`file` command learned a new sub-command,
-  ``GET_RUNTIME_DEPENDENCIES``, which allows you to recursively get the list of
-  libraries linked by an executable or library. This sub-command is intended as
-  a replacement for :module:`GetPrerequisites`.
-
-* The :command:`find_file`, :command:`find_library`, :command:`find_path`,
-  :command:`find_package`, and :command:`find_program` commands have learned to
-  check the following variables to control the default behavior for groups of
-  search locations:
-
-  * :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` - Controls the default
-    behavior of searching the :variable:`<PackageName>_ROOT` variables.
-
-  * :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH` - Controls the default
-    behavior of searching the CMake-specific environment variables.
-
-  * :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH` - Controls the default
-    behavior of searching the standard system environment variables.
-
-  * :variable:`CMAKE_FIND_USE_CMAKE_PATH` - Controls the default behavior of
-    searching the CMake-specific cache variables.
-
-  * :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH` - Controls the default
-    behavior of searching the platform-specific CMake variables.
-
-* The :command:`find_package` command has learned to check the
-  :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variable to control the default
-  behavior of searching the CMake user package registry and to check the
-  :variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY` variable to control
-  the default behavior of searching the CMake system package registry.
-
-* The :command:`message` command learned indentation control with the new
-  :variable:`CMAKE_MESSAGE_INDENT` variable.
-
-* The :command:`target_precompile_headers` command was added to specify
-  a list of headers to precompile for faster compilation times.
-
-Variables
----------
-
-* The :variable:`CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS` variable has been
-  introduced to optionally initialize the
-  :prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` target property.
-
-* The :variable:`CMAKE_ECLIPSE_RESOURCE_ENCODING` variable was added to
-  specify the resource encoding for the the :generator:`Eclipse CDT4` extra
-  generator.
-
-* The :variable:`CMAKE_UNITY_BUILD` variable was added to initialize the
-  :prop_tgt:`UNITY_BUILD` target property to tell generators to batch
-  include source files for faster compilation times.
-
-Properties
-----------
-
-* The :prop_tgt:`BUILD_RPATH` and :prop_tgt:`INSTALL_RPATH` target properties
-  now support :manual:`generator expressions <cmake-generator-expressions(7)>`.
-
-* The :prop_tgt:`INSTALL_REMOVE_ENVIRONMENT_RPATH` target property was
-  added to remove compiler-defined ``RPATH`` entries from a target.
-  This property is initialized by the
-  :variable:`CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH` variable.
-
-* The :prop_tgt:`PRECOMPILE_HEADERS` target property was added to specify
-  a list of headers to precompile for faster compilation times.
-  Set it using the :command:`target_precompile_headers` command.
-
-* The :prop_tgt:`UNITY_BUILD` target property was added to tell
-  generators to batch include source files for faster compilation
-  times.
-
-* The :prop_tgt:`VS_CONFIGURATION_TYPE` target property now supports
-  :manual:`generator expressions <cmake-generator-expressions(7)>`.
-
-* The :prop_tgt:`VS_DPI_AWARE` target property was added to tell
-  :ref:`Visual Studio Generators` to set the ``EnableDpiAwareness``
-  property in ``.vcxproj`` files.
-
-* The :prop_tgt:`XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING` target property was
-  added to tell the :generator:`Xcode` generator to set the value of the
-  ``Allow debugging when using document Versions Browser`` schema option.
-
-Modules
--------
-
-* The :module:`FindDoxygen` module :command:`doxygen_add_docs` command
-  gained a new ``USE_STAMP_FILE`` option.  When this option present,
-  the custom target created by the command will only re-run Doxygen if
-  any of the source files have changed since the last successful run.
-
-* The :module:`FindGnuTLS` module now provides an imported target.
-
-* The :module:`FindPackageHandleStandardArgs` module
-  :command:`find_package_handle_standard_args` command gained
-  a new ``REASON_FAILURE_MESSAGE`` option to specify a message
-  giving the reason for the failure.
-
-* The :module:`FindPkgConfig` module :command:`pkg_search_module` macro
-  now defines a ``<prefix>_MODULE_NAME`` result variable containing the
-  first matching module name.
-
-* The :module:`FindPython3` and :module:`FindPython` modules gained
-  options to control which ``ABIs`` will be searched.
-
-* The :module:`FindPython3`, :module:`FindPython2`, and :module:`FindPython`
-  modules now support direct specification of artifacts via cache entries.
-
-Autogen
--------
-
-* When using :prop_tgt:`AUTOMOC`, CMake now generates the ``-p`` path prefix
-  option for ``moc``.  This ensures that ``moc`` output files are identical
-  on different build setups (given, that the headers compiled by ``moc`` are
-  in an :command:`include directory <target_include_directories>`).
-  Also it ensures that ``moc`` output files will compile correctly when the
-  source and/or build directory is a symbolic link.
-
-  The ``moc`` path prefix generation behavior can be configured by setting
-  the new :variable:`CMAKE_AUTOMOC_PATH_PREFIX` variable and/or
-  :prop_tgt:`AUTOMOC_PATH_PREFIX` target property.
-
-CTest
------
-
-* :manual:`ctest(1)` now has the ability to schedule tests based on resource
-  requirements for each test. See :ref:`ctest-resource-allocation` for
-  details.
-
-* A new test property, :prop_test:`SKIP_REGULAR_EXPRESSION`, has been added.
-  This property is similar to :prop_test:`FAIL_REGULAR_EXPRESSION` and
-  :prop_test:`PASS_REGULAR_EXPRESSION`, but with the same meaning as
-  :prop_test:`SKIP_RETURN_CODE`. This is useful, for example, in cases where
-  the user has no control over the return code of the test. For example, in
-  Catch2, the return value is the number of assertion failed, therefore it is
-  impossible to use it for :prop_test:`SKIP_RETURN_CODE`.
-
-CPack
------
-
-* :manual:`cpack(1)` learned support for multiple configurations for ``-C``
-  option.
-
-* The :cpack_gen:`CPack DEB Generator` is now able to format generic text
-  (usually used as the description for multiple CPack generators) according
-  to the `Debian Policy Manual`_.  See the
-  :variable:`CPACK_PACKAGE_DESCRIPTION_FILE` and
-  :variable:`CPACK_DEBIAN_<COMPONENT>_DESCRIPTION` variables.
-
-* The :cpack_gen:`CPack Archive Generator` learned to generate ``.tar.zst``
-  packages with Zstandard compression.
-
-.. _`Debian Policy Manual`: https://www.debian.org/doc/debian-policy/ch-controlfields.html#description
-
-Deprecated and Removed Features
-===============================
-
-* An explicit deprecation diagnostic was added for policy ``CMP0067``
-  (``CMP0066`` and below were already deprecated).
-  The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
-  of all policies are deprecated and that projects should port to the
-  NEW behaviors.
-
-* The :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` variable has been
-  deprecated.  Use the :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variable
-  instead.
-
-* The :module:`GetPrerequisites` module has been deprecated, as it has been
-  superceded by :command:`file(GET_RUNTIME_DEPENDENCIES)`.
-
-* The ``CPACK_INSTALL_SCRIPT`` variable has been deprecated in favor of the
-  new, more accurately named :variable:`CPACK_INSTALL_SCRIPTS` variable.
-
-Other Changes
-=============
-
-* The :manual:`cmake(1)` ``-C <initial-cache>`` option now evaluates the
-  initial cache script with :variable:`CMAKE_SOURCE_DIR` and
-  :variable:`CMAKE_BINARY_DIR` set to the top-level source and build trees.
-
-* The :manual:`cmake(1)` ``-E remove_directory`` command-line tool,
-  when given the path to a symlink to a directory, now removes just
-  the symlink.  It no longer removes content of the linked directory.
-
-* The :manual:`ctest(1)`  ``--build-makeprogram`` command-line option now
-  specifies the make program used when configuring a project with the
-  :generator:`Ninja` generator or the :ref:`Makefile Generators`.
-
-* The :module:`ExternalProject` module :command:`ExternalProject_Add` command
-  has been updated so that ``GIT_SUBMODULES ""`` initializes no submodules.
-  See policy :policy:`CMP0097`.
-
-* The :module:`FindGTest` module has been updated to recognize
-  MSVC build trees generated by GTest 1.8.1.
-
-* The :command:`project` command no longer strips leading zeros in version
-  components.  See policy :policy:`CMP0096`.
-
-* The Qt Compressed Help file is now named ``CMake.qch``, which no longer
-  contains the release version in the file name.  When CMake is upgraded
-  in-place, the name and location of this file will remain constant.
-  Tools such as IDEs, help viewers, etc. should now be able to refer to this
-  file at a fixed location that remains valid across CMake upgrades.
-
-* ``RPATH`` entries are properly escaped in the generated CMake scripts
-  used for installation.  See policy :policy:`CMP0095`.
-
-* When using :variable:`CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS` on Windows the
-  auto-generated exports are now updated only when the object files
-  providing the symbols are updated.
-
-Updates
-=======
-
-Changes made since CMake 3.16.0 include the following.
-
-3.16.2
-------
-
-* CMake 3.16.0 and 3.16.1 processed ``.hh`` files with :prop_tgt:`AUTOMOC`.
-  This was a behavior change from CMake 3.15 and below that can break
-  existing projects, so it has been reverted as of 3.16.2.
-
-3.16.5
-------
-
-* The :module:`FindPython`, :module:`FindPython2`, and :module:`FindPython3`
-  modules no longer create cache entries for ``Python{,2,3}_LIBRARY_RELEASE``
-  and ``Python{,2,3}_LIBRARY_DEBUG``.  Those values are always computed from
-  other results and so should not be cached.  The entries were created by
-  CMake 3.16.0 through 3.16.4 but were always ``FORCE``-set and could not
-  be meaningfully edited by users.
-
-  Additionally, the modules no longer expose their internal ``_Python*``
-  cache entries publicly.  CMake 3.16.0 through 3.16.4 accidentally
-  made them visible as advanced cache entries.
-
-3.16.7
-------
-
-* Selection of the Objective C or C++ compiler now considers the
-  :envvar:`CC` or :envvar:`CXX` environment variable if the
-  :envvar:`OBJC` or :envvar:`OBJCXX` environment variable is not set.
-
-* The :module:`FindPkgConfig` module now extracts include directories
-  prefixed with ``-isystem`` into the ``*_INCLUDE_DIRS`` variables and
-  :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` target properties.
-  Previously they would be places in ``*_CFLAGS_OTHER`` variables and
-  :prop_tgt:`INTERFACE_COMPILE_OPTIONS` target properties.
diff --git a/share/cmake-3.18/Help/release/3.17.rst b/share/cmake-3.18/Help/release/3.17.rst
deleted file mode 100644
index b7c66d8..0000000
--- a/share/cmake-3.18/Help/release/3.17.rst
+++ /dev/null
@@ -1,348 +0,0 @@
-CMake 3.17 Release Notes
-************************
-
-.. only:: html
-
-  .. contents::
-
-Changes made since CMake 3.16 include the following.
-
-New Features
-============
-
-Generators
-----------
-
-* :manual:`cmake(1)` gained a :generator:`Ninja Multi-Config` generator,
-  which is similar to the :generator:`Ninja` generator but can be used to build
-  multiple configurations at once.
-
-* :ref:`Visual Studio Generators` learned to support per-config sources.
-  Previously only :ref:`Command-Line Build Tool Generators` supported them.
-
-* :ref:`Visual Studio Generators` for VS 2010 and above now support
-  specifying the ``VCTargetsPath`` value for project files in
-  :variable:`CMAKE_GENERATOR_TOOLSET` setting.
-
-* :ref:`Visual Studio Generators` for VS 2010 and above learned to
-  support .NET Standard and .NET Core.  See the
-  :prop_tgt:`DOTNET_TARGET_FRAMEWORK` target property and
-  associated :variable:`CMAKE_DOTNET_TARGET_FRAMEWORK` variable.
-
-Languages
----------
-
-* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
-  now offers meta-features for the CUDA language standard levels
-  (e.g. ``cuda_std_03``, ``cuda_std_14``).  See
-  :prop_gbl:`CMAKE_CUDA_KNOWN_FEATURES`.
-
-Compilers
----------
-
-* The IBM XL Fortran compiler is now supported by the :generator:`Ninja`
-  generator.
-
-Command-Line
-------------
-
-* :manual:`cmake(1)` gained a ``--debug-find`` command-line option to
-  enable additional human-readable output on where ``find_*`` commands search.
-
-* :manual:`cmake(1)` gained a ``--trace-format`` command-line option that
-  can be used to set the ``--trace`` output format. Currently, the old
-  human readable and the new JSON format are supported. The new JSON format
-  is easier to parse automatically than the existing format.
-
-* :manual:`cmake(1)` gained a ``-E rm`` command-line tool that can be
-  used to remove directories and files.  This supersedes the existing
-  ``-E remove`` and ``-E remove_directory`` tools and has better semantics.
-
-Commands
---------
-
-* The :command:`add_custom_command` command learned to interpret paths in
-  ``DEPENDS`` arguments that are specified relative to the current
-  binary directory.
-
-* The :command:`foreach` command learned a new ``ZIP_LISTS`` option to iterate
-  over multiple lists simultaneously.
-
-* The :command:`load_cache(READ_WITH_PREFIX)` command mode is now allowed
-  when using ``cmake -P`` to :ref:`Run a Script <Script Processing Mode>`.
-
-* The :command:`message` command learned to output context provided in
-  the :variable:`CMAKE_MESSAGE_CONTEXT` variable for log levels
-  ``NOTICE`` and below.  Enable this output with the new ``--log-context``
-  command-line option or :variable:`CMAKE_MESSAGE_CONTEXT_SHOW` variable.
-
-* The :command:`message` command gained new keywords ``CHECK_START``,
-  ``CHECK_PASS`` and ``CHECK_FAIL``.
-
-* The :command:`target_compile_options` command now honors the ``BEFORE``
-  keyword more consistently.  See policy :policy:`CMP0101`.
-
-Variables
----------
-
-* A :variable:`CMAKE_CTEST_ARGUMENTS` variable was added to specify a list
-  of command-line arguments passed to CTest when running through the
-  ``test`` (or ``RUN_TESTS``) target of the generated build system.
-
-* The following variables are now defined inside a :command:`function`:
-
-  - :variable:`CMAKE_CURRENT_FUNCTION`
-  - :variable:`CMAKE_CURRENT_FUNCTION_LIST_DIR`
-  - :variable:`CMAKE_CURRENT_FUNCTION_LIST_FILE`
-  - :variable:`CMAKE_CURRENT_FUNCTION_LIST_LINE`
-
-* The :variable:`CMAKE_CUDA_RUNTIME_LIBRARY` variable and
-  :prop_tgt:`CUDA_RUNTIME_LIBRARY` target property were introduced to
-  select the CUDA runtime library used when linking targets that
-  use CUDA.
-
-* The :variable:`CMAKE_FIND_DEBUG_MODE` variable was introduced to
-  print extra ``find_*`` call information during the cmake run to standard
-  error. Output is designed for human consumption and not for parsing.
-
-* The :variable:`CMAKE_EXPORT_COMPILE_COMMANDS` variable now takes its
-  initial value from the :envvar:`CMAKE_EXPORT_COMPILE_COMMANDS` environment
-  variable if no explicit configuration is given.
-
-* The :variable:`CMAKE_<LANG>_COMPILER_LAUNCHER` variable, if not set
-  explicitly, now takes its initial value from the
-  :envvar:`CMAKE_<LANG>_COMPILER_LAUNCHER` environment variable.
-
-* The :variable:`CMAKE_MESSAGE_LOG_LEVEL` variable can now be used
-  to persist a log level between CMake runs, unlike the ``--log-level``
-  command line option which only applies to that particular run.
-
-* The :variable:`CMAKE_XCODE_SCHEME_ENVIRONMENT` variable was added
-  to initialize the :prop_tgt:`XCODE_SCHEME_ENVIRONMENT` target property.
-
-* The :variable:`CMAKE_XCODE_SCHEME_WORKING_DIRECTORY` variable and
-  associated :prop_tgt:`XCODE_SCHEME_WORKING_DIRECTORY` target property
-  were added to tell the :generator:`Xcode` generator to set the value of
-  the ``Custom Working Directory`` schema option.
-
-Properties
-----------
-
-* The :prop_tgt:`AIX_EXPORT_ALL_SYMBOLS` target property and associated
-  :variable:`CMAKE_AIX_EXPORT_ALL_SYMBOLS` variable were created to
-  optionally explicitly disable automatic export of symbols from shared
-  libraries on AIX.
-
-* The :prop_tgt:`DEPRECATION` target property was added to mark
-  a target as deprecated.  If a linked target is marked as
-  deprecated, a warning with the deprecation message is issued
-  at generate time.
-
-* The :prop_tgt:`INSTALL_NAME_DIR` target property now supports
-  :manual:`generator expressions <cmake-generator-expressions(7)>`.
-  In particular, the ``$<INSTALL_PREFIX>`` generator expression can
-  be used to set the directory relative to the install-time prefix.
-
-* Target properties :prop_tgt:`MACHO_COMPATIBILITY_VERSION` and
-  :prop_tgt:`MACHO_CURRENT_VERSION` were added to set the
-  ``compatibility_version`` and ``curent_version``, respectively,
-  for Mach-O binaries.  For backwards compatibility, if these properties
-  are not set, :prop_tgt:`SOVERSION` and :prop_tgt:`VERSION`
-  are used respectively as fallbacks.
-
-* The :prop_tgt:`VS_DOTNET_DOCUMENTATION_FILE` target property was added
-  to tell :ref:`Visual Studio Generators` to generate a ``DocumentationFile``
-  reference in ``.csproj`` files.
-
-Modules
--------
-
-* The :module:`ExternalProject` module :command:`ExternalProject_Add`
-  command gained a ``GIT_SUBMODULES_RECURSE`` option to specify whether
-  Git submodules should be updated recursively.  The default is on to
-  preserve existing behavior.
-
-* The :module:`FindCUDAToolkit` module was added to find the
-  CUDA Toolkit without enabling CUDA as a language.
-
-* The :module:`FindCURL` module learned to find CURL using
-  the ``CURLConfig.cmake`` package configuration file generated by
-  CURL's cmake buildsystem.  It also gained a new ``CURL_NO_CURL_CMAKE``
-  option to disable this behavior.
-
-* The :module:`FindFLEX` module's ``FLEX_TARGET`` command now runs ``flex``
-  with :variable:`CMAKE_CURRENT_BINARY_DIR` as the working directory.
-  See policy :policy:`CMP0098`.
-
-* The :module:`FindLibArchive` module now provides an imported target
-  for libarchive.
-
-* The :module:`FindPython` module has learned to find Python components
-  in active virtual environments managed by ``conda``.
-
-* The :module:`FindPython3` and :module:`FindPython` modules gained,
-  respectively, variable ``Python3_SOABI`` and ``Python_SOABI`` giving
-  the standard extension suffix for modules. Moreover, commands
-  ``Python3_add_library()`` and ``Python_add_library()`` gained the option
-  ``WITH_SOABI`` to prefix the library suffix with the value of ``SOABI``.
-
-* The :module:`FindLibXml2` module now provides an imported target for the
-  ``xmllint`` executable.
-
-Autogen
--------
-
-* :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` learned to process headers
-  with a ``.hh`` extension.  See policy :policy:`CMP0100`.
-
-CTest
------
-
-* The :variable:`CTEST_CONFIGURATION_TYPE` variable is now set from the
-  command line when :manual:`ctest(1)` is invoked with ``-C <cfg>``.
-
-* The :manual:`ctest(1)` tool gained support for Dr. Memory to run
-  memcheck runs.
-
-* The :manual:`ctest(1)` tool gained a ``--no-tests=<[error|ignore]>`` option
-  to explicitly set and unify the behavior between direct invocation and
-  script mode if no tests were found.
-
-* The :manual:`ctest(1)` tool gained a ``--repeat <mode>:<n>`` option
-  to specify conditions in which to repeat tests.  This generalizes
-  the existing ``--repeat-until-fail <n>`` option to add modes for
-  ``until-pass`` and ``after-timeout``.
-
-* The :command:`ctest_test` command gained a ``REPEAT <mode>:<n>`` option
-  to specify conditions in which to repeat tests.
-
-CPack
------
-
-* The :cpack_gen:`CPack DragNDrop Generator` learned to use
-  the :variable:`CPACK_DMG_<component>_FILE_NAME` variable
-  to set a custom filename when packaging components into
-  their own DMGs.
-
-* The :cpack_gen:`CPack DragNDrop Generator` learned to handle
-  RTF formatted license files.  When :variable:`CPACK_DMG_SLA_DIR`
-  variable is set, ``<language>.license.rtf`` is considered, but
-  only as a fallback when the plaintext (``.txt``) file is not found
-  in order to maintain backwards compatibility.
-
-* The :cpack_gen:`CPack NSIS Generator` gained a new variable
-  :variable:`CPACK_NSIS_MUI_HEADERIMAGE` to set the header image.
-  To not break existing setups, it still defaults to
-  :variable:`CPACK_PACKAGE_ICON` if the new variable is not set.
-
-* The :cpack_gen:`CPack NSIS Generator` now supports
-  :variable:`CPACK_NSIS_UNINSTALL_NAME`.
-  This can be used to specify the name of the Uninstall program.
-
-* The :cpack_gen:`CPack NSIS Generator` now supports
-  :variable:`CPACK_NSIS_WELCOME_TITLE` and
-  :variable:`CPACK_NSIS_WELCOME_TITLE_3LINES`.
-  These can be used to specify the welcome page title and display it in 3 lines.
-
-* The :cpack_gen:`CPack NSIS Generator` now supports
-  :variable:`CPACK_NSIS_FINISH_TITLE` and
-  :variable:`CPACK_NSIS_FINISH_TITLE_3LINES`.
-  These can be used to specify the finish page title and display it in 3 lines.
-
-* The :cpack_gen:`CPack productbuild Generator` gained support for a
-  :variable:`CPACK_PRODUCTBUILD_BACKGROUND` variable to specify a background
-  image for the macOS installer.
-
-Other
------
-
-* :manual:`ccmake(1)` now displays cache values using colors
-  based on the entry type if the terminal supports color.
-
-* :manual:`ccmake(1)` now displays messages and a progress bar during
-  configure and generate.  It will keep the output displayed if any
-  errors or warnings occurred.
-
-Deprecated and Removed Features
-===============================
-
-* An explicit deprecation diagnostic was added for policy ``CMP0068``
-  and policy ``CMP0069`` (``CMP0067`` and below were already deprecated).
-  The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
-  of all policies are deprecated and that projects should port to the
-  NEW behaviors.
-
-* The :cpack_gen:`CPack PackageMaker Generator` generator has been
-  deprecated because Xcode no longer distributes the PackageMaker tools.
-  The undocumented ``OSXX11`` generator has also been deprecated.
-
-* The :manual:`cmake(1)` command-line ``-E remove`` and ``-E remove_directory``
-  tools are deprecated in favor of the new ``-E rm`` tool.  The older tools
-  always returned 0 if a named path did not exist even without the force
-  option and cannot be fixed without breaking compatibility, and so have
-  been superseded.
-
-* The :cpack_gen:`CPack NSIS Generator` now requires NSIS 3.0 or later.
-
-Other Changes
-=============
-
-* The :manual:`file API <cmake-file-api(7)>` index file now emits a
-  ``multiConfig`` flag specifying whether or not the generator supports
-  multiple output configurations.
-
-* Target link properties :prop_tgt:`INTERFACE_LINK_OPTIONS`,
-  :prop_tgt:`INTERFACE_LINK_DIRECTORIES` and
-  :prop_tgt:`INTERFACE_LINK_DEPENDS` are now transitive over private
-  dependencies on static libraries.
-  See policy :policy:`CMP0099`.
-
-* When using MinGW tools, the :command:`find_library` command no longer
-  finds ``.dll`` files by default.  Instead, it expects ``.dll.a`` import
-  libraries to be available.
-
-* The :generator:`MinGW Makefiles` generator no longer issues an error if
-  ``sh.exe`` is present in the environment's ``PATH``.
-
-* The :generator:`Ninja` generator now prefers the first ninja build
-  tool to appear in the ``PATH`` no matter whether it is called
-  ``ninja-build``, ``ninja``, or ``samu``.  Previously the first
-  of those names to appear anywhere in the ``PATH`` would be preferred.
-
-* With SDCC the ``sdar`` tool is now preferred over ``sdcclib`` as librarian.
-  The latter was deprecated by SDCC 3.2.0 and removed in SDCC 3.8.6.
-
-* With SDCC the default flags no longer include any target-specific flags.
-  Previously the default flags were hard-coded for 8051.
-
-* The :variable:`CMAKE_VS_GLOBALS` variable value now applies during
-  compiler identification and in targets created by the
-  :command:`add_custom_target` command.
-
-* The :generator:`Xcode` generator no longer hard-codes ``-Wmost``,
-  ``-Wno-four-char-constants``, and ``-Wno-unknown-pragmas`` warning flags.
-
-Updates
-=======
-
-Changes made since CMake 3.17.0 include the following.
-
-3.17.1
-------
-
-* CMake 3.17.0 updated the :cpack_gen:`CPack NSIS Generator` with changes
-  that require NSIS 3.0 or later.  CMake 3.17.1 now enforces the use
-  of a sufficiently new version.
-
-3.17.3
-------
-
-* Selection of the Objective C or C++ compiler now considers the
-  :envvar:`CC` or :envvar:`CXX` environment variable if the
-  :envvar:`OBJC` or :envvar:`OBJCXX` environment variable is not set.
-
-* The :module:`FindPkgConfig` module now extracts include directories
-  prefixed with ``-isystem`` into the ``*_INCLUDE_DIRS`` variables and
-  :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` target properties.
-  Previously they would be places in ``*_CFLAGS_OTHER`` variables and
-  :prop_tgt:`INTERFACE_COMPILE_OPTIONS` target properties.
diff --git a/share/cmake-3.18/Help/release/3.18.rst b/share/cmake-3.18/Help/release/3.18.rst
deleted file mode 100644
index ba80d2b..0000000
--- a/share/cmake-3.18/Help/release/3.18.rst
+++ /dev/null
@@ -1,341 +0,0 @@
-CMake 3.18 Release Notes
-************************
-
-.. only:: html
-
-  .. contents::
-
-Changes made since CMake 3.17 include the following.
-
-New Features
-============
-
-Languages
----------
-
-* The ``CUDA`` language can now be compiled using Clang on non-Windows
-  platforms. Separable compilation is not yet supported on any platform.
-
-Command-Line
-------------
-
-* :manual:`cmake(1)` gained support for profiling of CMake scripts through
-  the parameters ``--profiling-output`` and ``--profiling-format``.
-
-* :manual:`cmake(1)` gained a ``cat`` command line
-  option that can be used to concatenate files and print them
-  on standard output.
-
-Commands
---------
-
-* The :command:`add_library` and :command:`add_executable` commands
-  learned to create :ref:`Alias Targets` referencing non-``GLOBAL``
-  :ref:`Imported Targets`.
-
-* The :command:`cmake_language()` command was added for meta-operations on
-  scripted or built-in commands, starting with a mode to ``CALL`` other
-  commands, and ``EVAL CODE`` to inplace evaluate a CMake script.
-
-* The :command:`execute_process` command gained the ``ECHO_OUTPUT_VARIABLE``
-  and ``ECHO_ERROR_VARIABLE`` options.
-
-* The :command:`export` command now raise an error if used multiple times with
-  same ``FILE`` without ``APPEND``. See policy :policy:`CMP0103`.
-
-* The :command:`file` command gained the ``ARCHIVE_CREATE`` and
-  ``ARCHIVE_EXTRACT`` subcommands to expose the :manual:`cmake(1)` ``-E tar``
-  functionality to CMake scripting code.
-
-* The :command:`file(CONFIGURE)` subcommand was created in order to replicate
-  the :command:`configure_file` functionality without resorting to a
-  pre-existing file on disk as input. The content is instead passed as a
-  string.
-
-* The :command:`file(UPLOAD)` command gained ``TLS_VERIFY`` and ``TLS_CAINFO``
-  options to control server certificate verification.
-
-* The :command:`find_program`, :command:`find_library`, :command:`find_path`
-  and :command:`find_file` commands gained a new ``REQUIRED`` option that will
-  stop processing with an error message if nothing is found.
-
-* The :command:`get_property` command with ``SOURCE`` scope gained the
-  ``DIRECTORY`` and ``TARGET_DIRECTORY`` options to get a property
-  from the provided directory scope.
-
-* The :command:`get_source_file_property` command gained the ``DIRECTORY``
-  and ``TARGET_DIRECTORY`` options to get a property from the
-  provided directory scope.
-
-* The :command:`list` operation ``SORT`` gained the ``NATURAL`` sort
-  option to sort using natural order (see ``strverscmp(3)`` manual).
-
-* The :command:`set_property` command with the ``SOURCE`` scope gained the
-  ``DIRECTORY`` and ``TARGET_DIRECTORY`` options to set properties
-  in the provided directory scopes.
-
-* The :command:`set_source_files_properties` command gained the ``DIRECTORY``
-  and ``TARGET_DIRECTORY`` options to set properties in the provided
-  directory scopes.
-
-* The :command:`string` command learned a new ``HEX`` sub-command, which
-  converts strings into their hexadecimal representation.
-
-Variables
----------
-
-* A :variable:`CMAKE_CUDA_ARCHITECTURES` variable was added to specify
-  CUDA output architectures.  Users are encouraged to use this instead of
-  specifying options manually, as this approach is compiler-agnostic.
-  The variable is initialized automatically when
-  :variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is ``NVIDIA``.
-  The variable is used to initialize the new :prop_tgt:`CUDA_ARCHITECTURES`
-  target property.  See policy :policy:`CMP0104`.
-
-* The :variable:`CMAKE_PCH_WARN_INVALID` variable was added to initialize the
-  :prop_tgt:`PCH_WARN_INVALID` target property to allow the removal of the
-  precompiled header invalid warning.
-
-Properties
-----------
-
-* The :prop_tgt:`CUDA_ARCHITECTURES` target property was added to specify
-  CUDA output architectures. Users are encouraged to use this instead of
-  specifying options manually, as this approach is compiler-agnostic.
-  The property is initialized by the new :variable:`CMAKE_CUDA_ARCHITECTURES`
-  variable.  See policy :policy:`CMP0104`.
-
-* The :prop_tgt:`Fortran_PREPROCESS` target property and
-  :prop_sf:`Fortran_PREPROCESS` source-file property were added to
-  control preprocessing of Fortran source files.
-
-* The :prop_tgt:`FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>` target property
-  and associated :variable:`CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>`
-  variable were created to allow adding a postfix to the name of a
-  framework file name when using a multi-config generator.
-
-* The :prop_sf:`OBJECT_OUTPUTS` source file property now supports
-  :manual:`generator expressions <cmake-generator-expressions(7)>`.
-
-* The :prop_tgt:`PCH_WARN_INVALID` target property was added to allow the
-  removal of the precompiled header invalid warning.
-
-* The :prop_tgt:`UNITY_BUILD_MODE` target property was added to tell
-  generators which algorithm to use for grouping included source
-  files.
-
-* The :prop_tgt:`VS_SOURCE_SETTINGS_<tool>` target property was added
-  to tell :ref:`Visual Studio Generators` for VS 2010 and above to add
-  metadata to non-built source files using ``<tool>``.
-
-* The :prop_sf:`VS_SETTINGS` source file property was added to tell
-  :ref:`Visual Studio Generators` for VS 2010 and above to add
-  metadata to a non-built source file.
-
-* The :prop_tgt:`VS_PLATFORM_TOOLSET` target property was added to tell
-  :ref:`Visual Studio Generators` for VS 2010 and above to override
-  the platform toolset.
-
-* The :prop_tgt:`VS_SOLUTION_DEPLOY` target property was added to tell
-  :ref:`Visual Studio Generators` for VS 2010 and above to mark a
-  target for deployment even when not building for Windows Phone/Store/CE.
-
-Modules
--------
-
-* The :module:`CheckLinkerFlag` module has been added to provide a
-  facility to check validity of link flags.
-
-* The :module:`ExternalProject` module :command:`ExternalProject_Add` command
-  gained a new ``GIT_REMOTE_UPDATE_STRATEGY`` keyword.  This can be used to
-  specify how failed rebase operations during a git update should be handled.
-  The ``CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY`` variable was also added as a
-  global default and is honored by both the :module:`ExternalProject` and
-  :module:`FetchContent` modules.
-
-* The :module:`FetchContent` module :command:`FetchContent_Declare` command
-  now supports a ``SOURCE_SUBDIR`` option.  It can be used to direct
-  :command:`FetchContent_MakeAvailable` to look in a different location
-  for the ``CMakeLists.txt`` file.
-
-* The :module:`FindBLAS` module now provides an imported target.
-
-* The :module:`FindCUDAToolkit` module:
-
-  * gained the variable
-    ``CUDAToolkit_LIBRARY_ROOT``, which is the directory containing the
-    ``nvvm`` directory and ``version.txt``.
-
-  * uses toolkit and library root found during ``CUDA`` compiler detection.
-
-* The :module:`FindLAPACK` module now provides an imported target.
-
-* The :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
-  modules:
-
-  * gained the possibility to create per-artifact cache variables for
-    interactive editing in :manual:`cmake-gui(1)` and :manual:`ccmake(1)`.
-
-  * gained sub-components ``Development.Module`` and
-    ``Development.Embed`` under the ``Development`` component.
-
-  * gained the capability to specify which Python implementations to find,
-    including ``IronPython`` and ``PyPy``.
-
-* The :module:`FindRuby` module input and output variables were all renamed
-  from ``RUBY_`` to ``Ruby_`` for consistency with other find modules.
-  Input variables of the old case will be honored if provided, and output
-  variables of the old case are always provided.
-
-* The :module:`FindSWIG` module now accepts target languages as  ``COMPONENTS``
-  and ``OPTIONAL_COMPONENTS`` arguments to ``find_package``.
-
-* The :module:`GoogleTest` module :command:`gtest_discover_tests` command:
-
-  * gained a new ``DISCOVERY_MODE`` option to control when the test
-    discovery step is run.  It offers a new ``PRE_TEST`` setting to
-    run the discovery at test time instead of build time.  A new
-    ``CMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE`` variable can be used
-    to change the default globally.
-
-  * gained a new optional parameter ``XML_OUTPUT_DIR``. When set the
-    JUnit XML test results are stored in that directory.
-
-* The :module:`FindLibXslt` module now provides imported targets.
-
-* The :module:`UseSWIG` module now supports Fortran as a target language if
-  the ``SWIG_EXECUTABLE`` is SWIG-Fortran_.
-
-.. _`SWIG-Fortran`: https://github.com/swig-fortran/swig
-
-Generator Expressions
----------------------
-
-* The ``$<DEVICE_LINK:...>`` and ``$<HOST_LINK:...>``
-  :manual:`generator expressions <cmake-generator-expressions(7)>` were added
-  to manage device and host link steps.
-
-* The ``$<LINK_LANGUAGE:...>`` and ``$<LINK_LANG_AND_ID:...>``
-  :manual:`generator expressions <cmake-generator-expressions(7)>` were added.
-
-CTest
------
-
-* :manual:`ctest(1)` gained a new :variable:`CTEST_RESOURCE_SPEC_FILE`
-  variable, which can be used to specify a
-  :ref:`resource specification file <ctest-resource-specification-file>`.
-
-* :manual:`ctest(1)` gained a ``--stop-on-failure`` option,
-  which can be used to stop running the tests once one has failed.
-
-* The :command:`ctest_test` command gained a ``STOP_ON_FAILURE`` option
-  which can be used to stop running the tests once one has failed.
-
-* The :module:`CTestCoverageCollectGCOV` module
-  :command:`ctest_coverage_collect_gcov` command gained a
-  ``TARBALL_COMPRESSION`` option to control compression of the
-  tarball of collected results.
-
-CPack
------
-
-* The :cpack_gen:`CPack Archive Generator`'s ``TXZ`` format learned the
-  :variable:`CPACK_ARCHIVE_THREADS` variable to enable parallel compression.
-  Requires support in the ``liblzma`` used by CMake.
-
-* The :cpack_gen:`CPack NSIS Generator` gained a new variable
-  :variable:`CPACK_NSIS_MANIFEST_DPI_AWARE` to declare that the
-  installer is DPI-aware.
-
-* The :cpack_gen:`CPack RPM Generator` gained
-  :variable:`CPACK_RPM_PRE_TRANS_SCRIPT_FILE` and
-  :variable:`CPACK_RPM_POST_TRANS_SCRIPT_FILE`
-  variables to specify pre- and post-transaction scripts.
-
-Other
------
-
-* :manual:`cmake-gui(1)` now populates its generator selection
-  widget default value from the :envvar:`CMAKE_GENERATOR` environment
-  variable.  Additionally, environment variables
-  :envvar:`CMAKE_GENERATOR_PLATFORM` and :envvar:`CMAKE_GENERATOR_TOOLSET`
-  are used to populate their respective widget defaults.
-
-* :manual:`ccmake(1)` learned to read a :envvar:`CCMAKE_COLORS`
-  environment variable to customize colors.
-
-Deprecated and Removed Features
-===============================
-
-* The :module:`Documentation` module has been deprecated via
-  :policy:`CMP0106`. This module was essentially VTK code that CMake should
-  not be shipping anymore.
-
-* An explicit deprecation diagnostic was added for policy ``CMP0070``
-  and policy ``CMP0071`` (``CMP0069`` and below were already deprecated).
-  The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
-  of all policies are deprecated and that projects should port to the
-  NEW behaviors.
-
-Other Changes
-=============
-
-* On Windows, the :generator:`Ninja` and :generator:`Ninja Multi-Config`
-  generators, when a compiler is not explicitly specified, now select
-  the first compiler (of any name) found in directories listed by the
-  ``PATH`` environment variable.
-
-* The :prop_tgt:`LINK_OPTIONS` and :prop_tgt:`INTERFACE_LINK_OPTIONS` target
-  properties are now used for the device link step.
-  See policy :policy:`CMP0105`.
-
-* Creation of an ``ALIAS`` target overwriting an existing target now raises an
-  error. See policy :policy:`CMP0107`.
-
-* Linking a target to itself through an alias now raises an error.
-  See policy :policy:`CMP0108`.
-
-* The :module:`FindPackageHandleStandardArgs` module option ``REQUIRED_VARS``
-  is now optional if ``HANDLE_COMPONENTS`` is specified.
-
-* The :command:`source_group` command now also recognizes forward slashes
-  as subgroup delimiters, not just backslashes.
-
-* :manual:`ctest(1)` now logs environment variables that it sets for each test,
-  either due to the :prop_test:`ENVIRONMENT` property or the
-  :ref:`resource allocation <ctest-resource-allocation>` feature, and submits
-  this log to CDash. It does not log environment variables that were set
-  outside of CTest.
-
-* When building CMake itself from source and not using a system-provided
-  libcurl, HTTP/2 support is now enabled for commands supporting
-  network communication via ``http(s)``, such as :command:`file(DOWNLOAD)`,
-  :command:`file(UPLOAD)`, and :command:`ctest_submit`.
-  The precompiled binaries provided on ``cmake.org`` now support HTTP/2.
-
-* The :manual:`cmake-file-api(7)` "codemodel" version 2 ``version`` field has
-  been updated to 2.1.
-
-* The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" object gained
-  a new ``precompileHeaders`` field in the ``compileGroups`` objects.
-
-Updates
-=======
-
-Changes made since CMake 3.18.0 include the following.
-
-3.18.1
-------
-
-* The :generator:`Xcode` generator, when :variable:`CMAKE_OSX_ARCHITECTURES`
-  is not defined, now selects ``$(NATIVE_ARCH_ACTUAL)`` as the default
-  architecture (the Xcode ``ARCHS`` setting).  This is needed for Xcode 12
-  to select the host's architecture, which older versions of Xcode did
-  by default.
-
-* In CMake 3.18.0 the :command:`add_test` command learned to support
-  special characters in test names.  This was accidentally left out of
-  its release notes.  Unfortunately the fix breaks existing projects
-  that were using manual quoting or escaping to work around the prior
-  limitation.  This fix has been reverted in 3.18.1, but may be
-  re-introduced in future versions of CMake with a policy for compatibility.
diff --git a/share/cmake-3.18/Help/release/3.3.rst b/share/cmake-3.18/Help/release/3.3.rst
deleted file mode 100644
index 6657e8d..0000000
--- a/share/cmake-3.18/Help/release/3.3.rst
+++ /dev/null
@@ -1,287 +0,0 @@
-CMake 3.3 Release Notes
-***********************
-
-.. only:: html
-
-  .. contents::
-
-Changes made since CMake 3.2 include the following.
-
-New Features
-============
-
-Generators
-----------
-
-* The :ref:`Makefile Generators` now add ``.DELETE_ON_ERROR`` to the
-  makefiles that contain the actual build rules for files on disk.
-  This tells GNU make to remove rule outputs when their recipe
-  modifies an output but fails.
-
-* The :ref:`Visual Studio Generators` learned to support ``.xaml``
-  source files and automatically associate them with corresponding
-  ``.h`` and ``.cpp`` sources.
-
-* A new experimental :generator:`Green Hills MULTI` generator was
-  added on Windows.  `Green Hills MULTI`_ is an IDE for embedded
-  real-time systems.
-
-.. _`Green Hills MULTI`: http://www.ghs.com/products/MULTI_IDE.html
-
-Commands
---------
-
-* The :command:`add_dependencies` command learned to allow dependencies
-  to be added to :ref:`interface libraries <Interface Libraries>`.
-  Dependencies added to an interface library are followed transitively
-  in its place since the target itself does not build.
-
-* The :command:`execute_process` command learned to support specifying
-  the same file for ``OUTPUT_FILE`` and ``ERROR_FILE``.
-
-* The :command:`file(GLOB)` and :command:`file(GLOB_RECURSE)` commands
-  learned a new ``LIST_DIRECTORIES <bool>`` option to specify whether
-  the glob result should include directories.
-
-* The :command:`find_library`, :command:`find_path`, and :command:`find_file`
-  commands now search in installation prefixes derived from the ``PATH``
-  environment variable.
-
-* The :command:`if` command learned a new ``IN_LIST`` operator that
-  evaluates to true if a given element is contained in a named list.
-
-* The :command:`install(EXPORT)` and :command:`export()` commands
-  learned to export targets that populate the :prop_tgt:`INTERFACE_SOURCES`
-  target property.
-
-* The :command:`install(TARGETS)` command learned to support
-  generator expressions in the ``DESTINATION`` value.
-
-Variables
----------
-
-* The version of some Fortran compilers is now detected and stored in the
-  :variable:`CMAKE_Fortran_COMPILER_VERSION <CMAKE_<LANG>_COMPILER_VERSION>`
-  variable.
-
-* The :ref:`Visual Studio Generators` learned a new
-  :variable:`CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD` option
-  to put the ``INSTALL`` target in the default build of a
-  solution (``.sln``) file.
-
-Properties
-----------
-
-* A :prop_tgt:`CROSSCOMPILING_EMULATOR` target property and supporting
-  :variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable were introduced
-  to allow target platform binaries to run on the host during cross
-  compiling.
-
-* A :prop_tgt:`<LANG>_INCLUDE_WHAT_YOU_USE` target property and supporting
-  :variable:`CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE` variable were introduced
-  to tell the :ref:`Makefile Generators` and the :generator:`Ninja` generator
-  to run ``include-what-you-use`` along with the compiler for ``C`` and
-  ``CXX`` languages.
-
-* The :prop_tgt:`<LANG>_VISIBILITY_PRESET` and
-  :prop_tgt:`VISIBILITY_INLINES_HIDDEN` target properties now
-  affect compilation in sources of all target types.  See
-  policy :policy:`CMP0063`.
-
-* The :prop_tgt:`XCODE_ATTRIBUTE_<an-attribute>` target property learned
-  to support generator expressions.
-
-Modules
--------
-
-* The :module:`CheckFortranCompilerFlag` module was introduced
-  to check ``Fortran`` compiler flags, much like the
-  :module:`CheckCCompilerFlag` module already does for ``C``.
-
-* The :module:`ExternalData` module learned a new
-  :variable:`ExternalData_NO_SYMLINKS` option to disable use of
-  symbolic links to populate the real data files and use copies
-  instead.
-
-* The :module:`ExternalData` module learned a new ``RECURSE:``
-  option in ``DATA{}`` references specifying directories.
-  This allows an entire directory tree of associated files
-  to be matched.
-
-* The :module:`ExternalData` module learned a new URL template
-  placeholder ``%(algo:<key>)`` to allow custom mapping from
-  algorithm name to URL component through configuration of new
-  :variable:`ExternalData_URL_ALGO_<algo>_<key>` variables.
-  This allows more flexibility in remote URLs.
-
-* The :module:`ExternalProject` module learned to replace tokens
-  like ``<BINARY_DIR>`` in the ``BYPRODUCTS`` of each step.
-
-* The :module:`ExternalProject` module APIs learned to support
-  :manual:`generator expressions <cmake-generator-expressions(7)>`
-  when using ``LOG_*`` options and in CMake initial cache options.
-
-* The :module:`FindBoost` module now tracks the directories containing
-  libraries separately for RELEASE and DEBUG configurations.
-
-* The :module:`FindCUDA` module now defaults to using the static
-  CUDA runtime library if it is available.  A new
-  ``CUDA_USE_STATIC_CUDA_RUNTIME`` option is offered to control
-  this behavior.
-
-* The :module:`FindMatlab` module was completely rewritten.  It learned
-  about versions and components and to find Matlab in a more precise and
-  multiplatform way.  The module now offers APIs to create mex extensions,
-  documentation, and unit tests.
-
-* The :module:`FindPackageHandleStandardArgs` module
-  ``FIND_PACKAGE_HANDLE_STANDARD_ARGS`` function now
-  always populates both the ``<PackageName>_FOUND``
-  and ``<UPPERCASE_NAME>_FOUND`` variables (the latter
-  for backwards compatibility).  The ``FOUND_VAR``
-  option is now ignored except to enforce its allowed
-  values.
-
-* The :module:`InstallRequiredSystemLibraries` module learned a new
-  ``CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT`` option to specify the
-  installation component.
-
-Generator Expressions
----------------------
-
-* A new ``COMPILE_LANGUAGE`` generator expression was introduced to
-  allow specification of compile options for target files based on the
-  :prop_sf:`LANGUAGE` of each source file.  Due to limitations of the
-  underlying native build tools, this feature has varying support across
-  generators.  See the :manual:`cmake-generator-expressions(7)` manual
-  for details.
-
-CTest
------
-
-* The :manual:`ctest(1)` tool learned a new ``--repeat-until-fail <n>``
-  option to help find sporadic test failures.
-
-* The :module:`CTestCoverageCollectGCOV` module learned to support
-  the same ``CTEST_CUSTOM_COVERAGE_EXCLUDE`` option as the
-  :command:`ctest_coverage` command.
-
-CPack
------
-
-* The :cpack_gen:`CPack IFW Generator` learned to support
-  Qt Framework Installer 2.0 tools.
-
-* The :cpack_gen:`CPack DEB Generator` learned a new
-  :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPS`
-  variable to specify per-component use of ``dpkg-shlibdeps``.
-
-* The :cpack_gen:`CPack DEB Generator` learned a new
-  :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS`
-  option to specify per-component dependencies.
-
-* The :cpack_gen:`CPack RPM Generator` learned to package symbolic links
-  more cleanly and now supports directory symlinks with recent
-  ``rpmbuild`` versions.
-
-* The :cpack_gen:`CPack RPM Generator` learned a new
-  :variable:`CPACK_RPM_ADDITIONAL_MAN_DIRS` variable to specify
-  directories containing man pages for the brp-compress RPM macro.
-
-* The :cpack_gen:`CPack RPM Generator` learned a new
-  :variable:`CPACK_RPM_<component>_PACKAGE_ARCHITECTURE` variable
-  to specify a component-specific package architecture.
-
-* The CPack WIX generator learned the new
-  :prop_inst:`CPACK_START_MENU_SHORTCUTS`,
-  :prop_inst:`CPACK_DESKTOP_SHORTCUTS` and
-  :prop_inst:`CPACK_STARTUP_SHORTCUTS` installed file properties which can
-  be used to install shorcuts in the Start Menu, on the Desktop and
-  in the Startup Folder respectively.
-
-Other
------
-
-* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
-  is now aware of features supported by GNU compilers on Windows, versions
-  4.4 through 5.0.
-
-* The :manual:`cmake(1)` ``-E tar`` command learned a new
-  ``--format<format>`` option to specify the archive format to
-  be written.
-
-* On OS X, CMake learned to create XCTest bundles to test Frameworks
-  and App Bundles within Xcode.  The :module:`FindXCTest` module
-  provides convenience functions to handle :prop_tgt:`XCTEST` bundles.
-
-Deprecated and Removed Features
-===============================
-
-* On OS X the :manual:`cmake-gui(1)` no longer has the
-  ``Install For Command Line Use`` menu item.  Instead there
-  is a ``How to Install For Command Line Use`` menu item
-  that shows an informational dialog box explaining how to
-  make the command line tools available.  For example::
-
-    /Applications/CMake.app/Contents/bin/cmake-gui --install
-
-* The :command:`ctest_build` and :command:`build_command` commands
-  no longer tell ``make`` tools to ignore errors with the ``-i`` option.
-  Previously this was done for :ref:`Makefile Generators` but not others.
-  See policy :policy:`CMP0061`.
-
-* The :generator:`Visual Studio 10 2010` generator no longer checks
-  for running VS IDEs with the project open or asks them to reload.
-  This was originally done for VS 10 because it had been done for
-  VS 7 through 9 to avoid prompting for every project in a solution.
-  Since VS >= 10 allow the whole solution to reload at once they
-  do not need CMake to help them.
-
-* The :generator:`Visual Studio 7` generator (.NET 2002) is now
-  deprecated and will be removed in a future version of CMake.
-
-* The :generator:`Visual Studio 6` generator is now deprecated
-  and will be removed in a future version of CMake.
-
-* The :command:`find_package` command no longer considers project
-  build trees recently configured in a :manual:`cmake-gui(1)`.
-  This was previously done only on Windows and is now never done.
-  The ``NO_CMAKE_BUILDS_PATH`` option is now ignored if given
-  and effectively always on.
-  Projects may populate the :ref:`User Package Registry` to aid
-  users building multiple dependent projects one after another.
-
-* The :command:`add_definitions()` command no longer causes a
-  :prop_dir:`DEFINITIONS` directory property to be populated. See policy
-  :policy:`CMP0059`.
-
-* With Visual Studio 7, 8, and 9 generators the value of the ``$(OutDir)``
-  placeholder no longer evaluates to the configuration name.  Projects
-  should use ``$(ConfigurationName)`` for that instead.
-
-* Using the output of :command:`export()` with the :command:`install(FILES)`
-  command is no longer allowed.  See policy :policy:`CMP0062` for details.
-
-Other Changes
-=============
-
-* The :generator:`Ninja` generator now requires that calls to the
-  :command:`add_custom_command` and :command:`add_custom_target`
-  commands use the ``BYPRODUCTS`` option to explicitly specify any
-  files generated by the custom commands that are not listed as
-  outputs (perhaps because their timestamps are allowed to be older
-  than the inputs).  See policy :policy:`CMP0058`.
-
-* Build-time progress output of :ref:`Makefile Generators` has been improved.
-  It no longer mixes progress and build rule messages during parallel builds.
-  The link rule messages now have progress and are displayed as bold green
-  instead of bold red (since red is often associated with an error message).
-
-* The :variable:`CMAKE_CFG_INTDIR` variable value for Visual Studio
-  7, 8, and 9 is now ``$(ConfigurationName)`` instead of ``$(OutDir)``.
-  This should have no effect on the intended use cases of the variable.
-
-* Linking to library files by a full path in an implicit linker search
-  directory (e.g. ``/usr/lib/libfoo.a``) no longer asks the linker to
-  search for the library (e.g. ``-lfoo``) and now links by full path.
-  See policy :policy:`CMP0060`.
diff --git a/share/cmake-3.18/Help/release/3.6.rst b/share/cmake-3.18/Help/release/3.6.rst
deleted file mode 100644
index f0add07..0000000
--- a/share/cmake-3.18/Help/release/3.6.rst
+++ /dev/null
@@ -1,318 +0,0 @@
-CMake 3.6 Release Notes
-***********************
-
-.. only:: html
-
-  .. contents::
-
-Changes made since CMake 3.5 include the following.
-
-New Features
-============
-
-Generators
-----------
-
-* The :generator:`Ninja` generator learned to produce phony targets
-  of the form ``sub/dir/all`` to drive the build of a subdirectory.
-  This is equivalent to ``cd sub/dir; make all`` with
-  :ref:`Makefile Generators`.
-
-* The :generator:`Ninja` generator now includes system header files in build
-  dependencies to ensure correct re-builds when system packages are updated.
-
-* The :generator:`Visual Studio 14 2015` generator learned to support the
-  Clang/C2 toolsets, e.g. with the ``-T v140_clang_3_7`` option.
-  This feature is experimental.
-
-Commands
---------
-
-* The :command:`add_custom_command` and :command:`add_custom_target` commands
-  learned how to use the :prop_tgt:`CROSSCOMPILING_EMULATOR` executable
-  target property.
-
-* The :command:`install` command learned a new ``EXCLUDE_FROM_ALL`` option
-  to leave installation rules out of the default installation.
-
-* The :command:`list` command gained a ``FILTER`` sub-command to filter
-  list elements by regular expression.
-
-* The :command:`string(TIMESTAMP)` and :command:`file(TIMESTAMP)`
-  commands gained support for the ``%s`` placeholder.  This is
-  the number of seconds since the UNIX Epoch.
-
-Variables
----------
-
-* A :variable:`CMAKE_DEPENDS_IN_PROJECT_ONLY` variable was introduced
-  to tell :ref:`Makefile Generators` to limit dependency scanning only
-  to files in the project source and build trees.
-
-* A new :variable:`CMAKE_HOST_SOLARIS` variable was introduced to
-  indicate when CMake is running on an Oracle Solaris host.
-
-* A :variable:`CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES` variable was
-  added for use by toolchain files to specify system include directories
-  to be appended to all compiler command lines.
-
-* The :variable:`CMAKE_<LANG>_STANDARD_LIBRARIES` variable is now documented.
-  It is intended for use by toolchain files to specify system libraries to be
-  added to all linker command lines.
-
-* A :variable:`CMAKE_NINJA_OUTPUT_PATH_PREFIX` variable was introduced
-  to tell the :generator:`Ninja` generator to configure the generated
-  ``build.ninja`` file for use as a ``subninja``.
-
-* A :variable:`CMAKE_TRY_COMPILE_PLATFORM_VARIABLES` variable was
-  added for use by toolchain files to specify platform-specific
-  variables that must be propagated by the :command:`try_compile`
-  command into test projects.
-
-* A :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable was added
-  to optionally tell the :command:`try_compile` command to build
-  a static library instead of an executable.  This is useful for
-  cross-compiling toolchains that cannot link binaries without
-  custom flags or scripts.
-
-Properties
-----------
-
-* A :prop_tgt:`DEPLOYMENT_REMOTE_DIRECTORY` target property was introduced
-  to tell the :generator:`Visual Studio 9 2008` and
-  :generator:`Visual Studio 8 2005` generators to generate the "remote
-  directory" for WinCE project deployment and debugger settings.
-
-* A :prop_tgt:`<LANG>_CLANG_TIDY` target property and supporting
-  :variable:`CMAKE_<LANG>_CLANG_TIDY` variable were introduced to tell the
-  :ref:`Makefile Generators` and the :generator:`Ninja` generator to run
-  ``clang-tidy`` along with the compiler for ``C`` and ``CXX`` languages.
-
-* A :prop_test:`TIMEOUT_AFTER_MATCH` test property was introduced to
-  optionally tell CTest to enforce a secondary timeout after matching
-  certain output from a test.
-
-* A :prop_tgt:`VS_CONFIGURATION_TYPE` target property was introduced
-  to specify a custom project file type for :ref:`Visual Studio Generators`
-  supporting VS 2010 and above.
-
-* A :prop_dir:`VS_STARTUP_PROJECT` directory property was introduced
-  to specify for :ref:`Visual Studio Generators` the default startup
-  project for generated solutions (``.sln`` files).
-
-Modules
--------
-
-* The :module:`CMakePushCheckState` module now pushes/pops/resets the variable
-  ``CMAKE_EXTRA_INCLUDE_FILE`` used in :module:`CheckTypeSize`.
-
-* The :module:`ExternalProject` module leared the ``GIT_SHALLOW 1``
-  option to perform a shallow clone of a Git repository.
-
-* The :module:`ExternalProject` module learned to initialize Git submodules
-  recursively and also to initialize new submodules on updates.  Use the
-  ``GIT_SUBMODULES`` option to restrict which submodules are initialized and
-  updated.
-
-* The :module:`ExternalProject` module leared the ``DOWNLOAD_NO_EXTRACT 1``
-  argument to skip extracting the file that is downloaded (e.g., for
-  self-extracting shell installers or ``.msi`` files).
-
-* The :module:`ExternalProject` module now uses ``TLS_VERIFY`` when fetching
-  from git repositories.
-
-* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to
-  support `OpenBLAS <http://www.openblas.net>`__.
-
-* The :module:`FindCUDA` module learned to find the ``cublas_device`` library.
-
-* The :module:`FindGTest` module ``gtest_add_tests`` function now causes
-  CMake to automatically re-run when test sources change so that they
-  can be re-scanned.
-
-* The :module:`FindLTTngUST` module was introduced to find the LTTng-UST
-  library.
-
-* The :module:`FindPkgConfig` module learned to optionally create imported
-  targets for the libraries it has found.
-
-* The :module:`FindProtobuf` module learned to provide a ``Protobuf_VERSION``
-  variable and check the version number requested in a :command:`find_package`
-  call.
-
-* The :module:`InstallRequiredSystemLibraries` module learned a new
-  ``CMAKE_INSTALL_UCRT_LIBRARIES`` option to enable app-local deployment
-  of the Windows Universal CRT libraries with Visual Studio 2015.
-
-Platforms
----------
-
-* The Clang compiler is now supported on CYGWIN.
-
-* Support was added for the Bruce C Compiler with compiler id ``Bruce``.
-
-CTest
------
-
-* The :command:`ctest_update` command now looks at the
-  :variable:`CTEST_GIT_INIT_SUBMODULES` variable to determine whether
-  submodules should be updated or not before updating.
-
-* The :command:`ctest_update` command will now synchronize submodules on an
-  update. Updates which add submodules or change a submodule's URL will now be
-  pulled properly.
-
-CPack
------
-
-* The :cpack_gen:`CPack DEB Generator` learned how to handle ``$ORIGIN``
-  in ``CMAKE_INSTALL_RPATH`` when :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS`
-  is used for dependency auto detection.
-
-* The :cpack_gen:`CPack DEB Generator` learned how to generate
-  ``DEBIAN/shlibs`` contorl file when package contains shared libraries.
-
-* The :cpack_gen:`CPack DEB Generator` learned how to generate
-  ``DEBIAN/postinst`` and ``DEBIAN/postrm`` files if the package installs
-  libraries in ldconfig-controlled locations (e.g. ``/lib/``, ``/usr/lib/``).
-
-* The :cpack_gen:`CPack DEB Generator` learned how to generate dependencies
-  between Debian packages if multi-component setup is used and
-  :variable:`CPACK_COMPONENT_<compName>_DEPENDS` variables are set.
-  For backward compatibility this feature is disabled by default.
-  See :variable:`CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS`.
-
-* The :cpack_gen:`CPack DEB Generator` learned how to set custom package
-  file names including how to generate properly-named Debian packages::
-
-    <PackageName>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
-
-  For backward compatibility this feature is disabled by default. See
-  :variable:`CPACK_DEBIAN_FILE_NAME` and
-  :variable:`CPACK_DEBIAN_<COMPONENT>_FILE_NAME`.
-
-* The :cpack_gen:`CPack DEB Generator` learned how to set the package
-  release number (``DebianRevisionNumber`` in package file name when
-  used in combination with ``DEB-DEFAULT`` value set by
-  :variable:`CPACK_DEBIAN_FILE_NAME`).
-  See :variable:`CPACK_DEBIAN_PACKAGE_RELEASE`.
-
-* The :cpack_gen:`CPack DEB Generator` learned how to set the package
-  architecture per-component.
-  See :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE`.
-
-* The :cpack_gen:`CPack DragNDrop Generator` learned a new option to skip the
-  ``/Applications`` symlink.
-  See the :variable:`CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK` variable.
-
-* The :module:`CPackIFW` module gained a new
-  :command:`cpack_ifw_update_repository` command to update a QtIFW-specific
-  repository from a remote repository.
-
-* The :cpack_gen:`CPack RPM Generator` learned how to set RPM ``dist`` tag
-  as part of RPM ``Release:`` tag when enabled (mandatory on some Linux
-  distributions for e.g. on Fedora).
-  See :variable:`CPACK_RPM_PACKAGE_RELEASE_DIST`.
-
-* The :cpack_gen:`CPack RPM Generator` learned how to set default values
-  for owning user/group and file/directory permissions of package content.
-  See :variable:`CPACK_RPM_DEFAULT_USER`, :variable:`CPACK_RPM_DEFAULT_GROUP`,
-  :variable:`CPACK_RPM_DEFAULT_FILE_PERMISSIONS`,
-  :variable:`CPACK_RPM_DEFAULT_DIR_PERMISSIONS` and their per component
-  counterparts.
-
-* The :cpack_gen:`CPack RPM Generator` learned how to set user defined
-  package file names, how to specify that rpmbuild should decide on file
-  name format as well as handling of multiple rpm packages generated by a
-  single user defined spec file.
-  See :variable:`CPACK_RPM_PACKAGE_NAME` and
-  :variable:`CPACK_RPM_<component>_PACKAGE_NAME`.
-
-* The :cpack_gen:`CPack RPM Generator` learned how to correctly handle symlinks
-  that are pointing outside generated packages.
-
-Other
------
-
-* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
-  is now aware of features supported by Intel C++ compilers versions 12.1
-  through 16.0 on UNIX platforms.
-
-Deprecated and Removed Features
-===============================
-
-* The :module:`CMakeForceCompiler` module and its macros are now deprecated.
-  See module documentation for an explanation.
-
-* The :command:`find_library`, :command:`find_path`, and :command:`find_file`
-  commands no longer search in installation prefixes derived from the ``PATH``
-  environment variable on non-Windows platforms.  This behavior was added in
-  CMake 3.3 to support Windows hosts but has proven problematic on UNIX hosts.
-  Users that keep some ``<prefix>/bin`` directories in the ``PATH`` just for
-  their tools do not necessarily want any supporting ``<prefix>/lib``
-  directories searched.  One may set the ``CMAKE_PREFIX_PATH`` environment
-  variable with a :ref:`semicolon-separated list <CMake Language Lists>` of prefixes that are
-  to be searched.
-
-* The :generator:`Visual Studio 7 .NET 2003` generator is now
-  deprecated and will be removed in a future version of CMake.
-
-* The :generator:`Visual Studio 7` generator (for VS .NET 2002) has been
-  removed.  It had been deprecated since CMake 3.3.
-
-* The :generator:`Visual Studio 6` generator has been removed.
-  It had been deprecated since CMake 3.3.
-
-Other Changes
-=============
-
-* The precompiled OS X binary provided on ``cmake.org`` now requires
-  OS X 10.7 or newer.
-
-* On Linux and FreeBSD platforms, when building CMake itself from source and
-  not using a system-provided libcurl, OpenSSL is now used by default if it is
-  found on the system.  This enables SSL/TLS support for commands supporting
-  network communication via ``https``, such as :command:`file(DOWNLOAD)`,
-  :command:`file(UPLOAD)`, and :command:`ctest_submit`.
-
-* The :manual:`cmake(1)` ``--build`` command-line tool now rejects multiple
-  ``--target`` options with an error instead of silently ignoring all but the
-  last one.
-
-* :prop_tgt:`AUTOMOC` now diagnoses name collisions when multiple source
-  files in different directories use ``#include <moc_foo.cpp>`` with the
-  same name (because the generated ``moc_foo.cpp`` files would collide).
-
-* The :module:`FindBISON` module ``BISON_TARGET`` macro now supports
-  special characters by passing the ``VERBATIM`` option to internal
-  :command:`add_custom_command` calls.  This may break clients that
-  added escaping manually to work around the bug.
-
-* The :module:`FindFLEX` module ``FLEX_TARGET`` macro now supports
-  special characters by passing the ``VERBATIM`` option to internal
-  :command:`add_custom_command` calls.  This may break clients that
-  added escaping manually to work around the bug.
-
-* The :module:`FindProtobuf` module input and output variables were all renamed
-  from ``PROTOBUF_`` to ``Protobuf_`` for consistency with other find modules.
-  Input variables of the old case will be honored if provided, and output
-  variables of the old case are always provided.
-
-* The :cpack_gen:`CPack RPM Generator` now supports upper cased component
-  names in per component CPackRPM specific variables.
-  E.g. component named ``foo`` now expects component specific
-  variable to be ``CPACK_RPM_FOO_PACKAGE_NAME`` while before
-  it expected ``CPACK_RPM_foo_PACKAGE_NAME``.
-  Upper cased component name part in variables is compatible
-  with convention used for other CPack variables.
-  For back compatibility old format of variables is still valid
-  and preferred if both versions of variable are set, but the
-  preferred future use is upper cased component names in variables.
-  New variables that will be added to CPackRPM in later versions
-  will only support upper cased component variable format.
-
-* The CPack NSIS generator's configuration file template was fixed to
-  quote the path to the uninstaller tool used by the
-  :variable:`CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL` option.
-  This avoids depending on an insecure Windows feature to run an
-  uninstaller tool with a space in the path.
diff --git a/share/cmake-3.18/Help/release/index.rst b/share/cmake-3.18/Help/release/index.rst
deleted file mode 100644
index 4578b3a..0000000
--- a/share/cmake-3.18/Help/release/index.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-:orphan:
-
-CMake Release Notes
-*******************
-
-..
-  This file should include the adjacent "dev.txt" file
-  in development versions but not in release versions.
-
-Releases
-========
-
-.. toctree::
-   :maxdepth: 1
-
-   3.18 <3.18>
-   3.17 <3.17>
-   3.16 <3.16>
-   3.15 <3.15>
-   3.14 <3.14>
-   3.13 <3.13>
-   3.12 <3.12>
-   3.11 <3.11>
-   3.10 <3.10>
-   3.9 <3.9>
-   3.8 <3.8>
-   3.7 <3.7>
-   3.6 <3.6>
-   3.5 <3.5>
-   3.4 <3.4>
-   3.3 <3.3>
-   3.2 <3.2>
-   3.1 <3.1>
-   3.0 <3.0>
diff --git a/share/cmake-3.18/Help/variable/ANDROID.rst b/share/cmake-3.18/Help/variable/ANDROID.rst
deleted file mode 100644
index fede4ca..0000000
--- a/share/cmake-3.18/Help/variable/ANDROID.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-ANDROID
--------
-
-Set to ``1`` when the target system (:variable:`CMAKE_SYSTEM_NAME`) is
-``Android``.
diff --git a/share/cmake-3.18/Help/variable/CACHE.rst b/share/cmake-3.18/Help/variable/CACHE.rst
deleted file mode 100644
index 2cef27e..0000000
--- a/share/cmake-3.18/Help/variable/CACHE.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-CACHE
------
-
-Operator to read cache variables.
-
-Use the syntax ``$CACHE{VAR}`` to read cache entry ``VAR``.
-See the :ref:`cmake-language(7) variables <CMake Language Variables>`
-documentation for more complete documentation of the interaction of
-normal variables and cache entries.
-
-When evaluating :ref:`Variable References` of the form ``${VAR}``,
-CMake first searches for a normal variable with that name, and if not
-found CMake will search for a cache entry with that name.
-The ``$CACHE{VAR}`` syntax can be used to do direct cache lookup and
-ignore any existing normal variable.
-
-See the :command:`set` and :command:`unset` commands to see how to
-write or remove cache variables.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AIX_EXPORT_ALL_SYMBOLS.rst b/share/cmake-3.18/Help/variable/CMAKE_AIX_EXPORT_ALL_SYMBOLS.rst
deleted file mode 100644
index c64dd48..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_AIX_EXPORT_ALL_SYMBOLS.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_AIX_EXPORT_ALL_SYMBOLS
-----------------------------
-
-Default value for :prop_tgt:`AIX_EXPORT_ALL_SYMBOLS` target property.
-This variable is used to initialize the property on each target as it is
-created.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS.rst
deleted file mode 100644
index 8862ba9..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS
-------------------------------------
-
-Default value for the :prop_tgt:`ANDROID_ANT_ADDITIONAL_OPTIONS` target property.
-See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_API.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_API.rst
deleted file mode 100644
index c07a05a..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_API.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_ANDROID_API
------------------
-
-When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
-Edition`, this variable may be set to specify the default value for the
-:prop_tgt:`ANDROID_API` target property.  See that target property for
-additional information.
-
-Otherwise, when :ref:`Cross Compiling for Android`, this variable provides
-the Android API version number targeted.  This will be the same value as
-the :variable:`CMAKE_SYSTEM_VERSION` variable for ``Android`` platforms.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_API_MIN.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_API_MIN.rst
deleted file mode 100644
index 0246c75..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_API_MIN.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_ANDROID_API_MIN
----------------------
-
-Default value for the :prop_tgt:`ANDROID_API_MIN` target property.
-See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ARCH.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ARCH.rst
deleted file mode 100644
index b91ca57..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ARCH.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-CMAKE_ANDROID_ARCH
-------------------
-
-When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
-Edition`, this variable may be set to specify the default value for the
-:prop_tgt:`ANDROID_ARCH` target property.  See that target property for
-additional information.
-
-Otherwise, when :ref:`Cross Compiling for Android`, this variable provides
-the name of the Android architecture corresponding to the value of the
-:variable:`CMAKE_ANDROID_ARCH_ABI` variable.  The architecture name
-may be one of:
-
-* ``arm``
-* ``arm64``
-* ``mips``
-* ``mips64``
-* ``x86``
-* ``x86_64``
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ARCH_ABI.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ARCH_ABI.rst
deleted file mode 100644
index 0a3ed3c..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ARCH_ABI.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-CMAKE_ANDROID_ARCH_ABI
-----------------------
-
-When :ref:`Cross Compiling for Android`, this variable specifies the
-target architecture and ABI to be used.  Valid values are:
-
-* ``arm64-v8a``
-* ``armeabi-v7a``
-* ``armeabi-v6``
-* ``armeabi``
-* ``mips``
-* ``mips64``
-* ``x86``
-* ``x86_64``
-
-See also the :variable:`CMAKE_ANDROID_ARM_MODE` and
-:variable:`CMAKE_ANDROID_ARM_NEON` variables.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ARM_MODE.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ARM_MODE.rst
deleted file mode 100644
index ad3c37c..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ARM_MODE.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_ANDROID_ARM_MODE
-----------------------
-
-When :ref:`Cross Compiling for Android` and :variable:`CMAKE_ANDROID_ARCH_ABI`
-is set to one of the ``armeabi`` architectures, set ``CMAKE_ANDROID_ARM_MODE``
-to ``ON`` to target 32-bit ARM processors (``-marm``).  Otherwise, the
-default is to target the 16-bit Thumb processors (``-mthumb``).
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ARM_NEON.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ARM_NEON.rst
deleted file mode 100644
index 4b7ae03..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ARM_NEON.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_ANDROID_ARM_NEON
-----------------------
-
-When :ref:`Cross Compiling for Android` and :variable:`CMAKE_ANDROID_ARCH_ABI`
-is set to ``armeabi-v7a`` set ``CMAKE_ANDROID_ARM_NEON`` to ``ON`` to target
-ARM NEON devices.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ASSETS_DIRECTORIES.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ASSETS_DIRECTORIES.rst
deleted file mode 100644
index c372fe4..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_ASSETS_DIRECTORIES.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_ANDROID_ASSETS_DIRECTORIES
---------------------------------
-
-Default value for the :prop_tgt:`ANDROID_ASSETS_DIRECTORIES` target property.
-See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_GUI.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_GUI.rst
deleted file mode 100644
index 1755375..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_GUI.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_ANDROID_GUI
------------------
-
-Default value for the :prop_tgt:`ANDROID_GUI` target property of
-executables.  See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_JAR_DEPENDENCIES.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_JAR_DEPENDENCIES.rst
deleted file mode 100644
index 451a929..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_JAR_DEPENDENCIES.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_ANDROID_JAR_DEPENDENCIES
-------------------------------
-
-Default value for the :prop_tgt:`ANDROID_JAR_DEPENDENCIES` target property.
-See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_JAR_DIRECTORIES.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_JAR_DIRECTORIES.rst
deleted file mode 100644
index af83e34..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_JAR_DIRECTORIES.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_ANDROID_JAR_DIRECTORIES
------------------------------
-
-Default value for the :prop_tgt:`ANDROID_JAR_DIRECTORIES` target property.
-See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_JAVA_SOURCE_DIR.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_JAVA_SOURCE_DIR.rst
deleted file mode 100644
index 3dc05e0..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_JAVA_SOURCE_DIR.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_ANDROID_JAVA_SOURCE_DIR
------------------------------
-
-Default value for the :prop_tgt:`ANDROID_JAVA_SOURCE_DIR` target property.
-See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES.rst
deleted file mode 100644
index 4191907..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES
--------------------------------------
-
-Default value for the :prop_tgt:`ANDROID_NATIVE_LIB_DEPENDENCIES` target
-property.  See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES.rst
deleted file mode 100644
index 7cb9527..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES
-------------------------------------
-
-Default value for the :prop_tgt:`ANDROID_NATIVE_LIB_DIRECTORIES` target
-property.  See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NDK.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NDK.rst
deleted file mode 100644
index d241dd0..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NDK.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_ANDROID_NDK
------------------
-
-When :ref:`Cross Compiling for Android with the NDK`, this variable holds
-the absolute path to the root directory of the NDK.  The directory must
-contain a ``platforms`` subdirectory holding the ``android-<api>``
-directories.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS.rst
deleted file mode 100644
index 8ea1257..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_ANDROID_NDK_DEPRECATED_HEADERS
-------------------------------------
-
-When :ref:`Cross Compiling for Android with the NDK`, this variable
-may be set to specify whether to use the deprecated per-api-level
-headers instead of the unified headers.
-
-If not specified, the default will be *false* if using a NDK version
-that provides the unified headers and *true* otherwise.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG.rst
deleted file mode 100644
index 207019a..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG
-------------------------------------
-
-When :ref:`Cross Compiling for Android with the NDK`, this variable
-provides the NDK's "host tag" used to construct the path to prebuilt
-toolchains that run on the host.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst
deleted file mode 100644
index 22808e3..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
------------------------------------
-
-When :ref:`Cross Compiling for Android with the NDK`, this variable
-may be set to specify the version of the toolchain to be used
-as the compiler.
-
-On NDK r19 or above, this variable must be unset or set to ``clang``.
-
-On NDK r18 or below, this variable must be set to one of these forms:
-
-* ``<major>.<minor>``: GCC of specified version
-* ``clang<major>.<minor>``: Clang of specified version
-* ``clang``: Clang of most recent available version
-
-A toolchain of the requested version will be selected automatically to
-match the ABI named in the :variable:`CMAKE_ANDROID_ARCH_ABI` variable.
-
-If not specified, the default will be a value that selects the latest
-available GCC toolchain.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_PROCESS_MAX.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_PROCESS_MAX.rst
deleted file mode 100644
index 19fb527..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_PROCESS_MAX.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_ANDROID_PROCESS_MAX
--------------------------
-
-Default value for the :prop_tgt:`ANDROID_PROCESS_MAX` target property.
-See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_PROGUARD.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_PROGUARD.rst
deleted file mode 100644
index b8fdd46..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_PROGUARD.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_ANDROID_PROGUARD
-----------------------
-
-Default value for the :prop_tgt:`ANDROID_PROGUARD` target property.
-See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH.rst
deleted file mode 100644
index 8dea009..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_ANDROID_PROGUARD_CONFIG_PATH
-----------------------------------
-
-Default value for the :prop_tgt:`ANDROID_PROGUARD_CONFIG_PATH` target property.
-See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_SECURE_PROPS_PATH.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_SECURE_PROPS_PATH.rst
deleted file mode 100644
index 69a4d0b..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_SECURE_PROPS_PATH.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_ANDROID_SECURE_PROPS_PATH
--------------------------------
-
-Default value for the :prop_tgt:`ANDROID_SECURE_PROPS_PATH` target property.
-See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_SKIP_ANT_STEP.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_SKIP_ANT_STEP.rst
deleted file mode 100644
index 0a96df9..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_SKIP_ANT_STEP.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_ANDROID_SKIP_ANT_STEP
----------------------------
-
-Default value for the :prop_tgt:`ANDROID_SKIP_ANT_STEP` target property.
-See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst
deleted file mode 100644
index ea62cab..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_ANDROID_STANDALONE_TOOLCHAIN
-----------------------------------
-
-When :ref:`Cross Compiling for Android with a Standalone Toolchain`, this
-variable holds the absolute path to the root directory of the toolchain.
-The specified directory must contain a ``sysroot`` subdirectory.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_STL_TYPE.rst b/share/cmake-3.18/Help/variable/CMAKE_ANDROID_STL_TYPE.rst
deleted file mode 100644
index d174575..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_STL_TYPE.rst
+++ /dev/null
@@ -1,37 +0,0 @@
-CMAKE_ANDROID_STL_TYPE
-----------------------
-
-When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
-Edition`, this variable may be set to specify the default value for the
-:prop_tgt:`ANDROID_STL_TYPE` target property.  See that target property
-for additional information.
-
-When :ref:`Cross Compiling for Android with the NDK`, this variable may be
-set to specify the STL variant to be used.  The value may be one of:
-
-``none``
-  No C++ Support
-``system``
-  Minimal C++ without STL
-``gabi++_static``
-  GAbi++ Static
-``gabi++_shared``
-  GAbi++ Shared
-``gnustl_static``
-  GNU libstdc++ Static
-``gnustl_shared``
-  GNU libstdc++ Shared
-``c++_static``
-  LLVM libc++ Static
-``c++_shared``
-  LLVM libc++ Shared
-``stlport_static``
-  STLport Static
-``stlport_shared``
-  STLport Shared
-
-The default value is ``gnustl_static`` on NDK versions that provide it
-and otherwise ``c++_static``.  Note that this default differs from
-the native NDK build system because CMake may be used to build projects for
-Android that are not natively implemented for it and use the C++ standard
-library.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.18/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst
deleted file mode 100644
index 94c2b6e..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
----------------------------------------
-
-Where to put all the :ref:`ARCHIVE <Archive Output Artifacts>`
-target files when built for a specific configuration.
-
-This variable is used to initialize the
-:prop_tgt:`ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>` property on all the targets.
-See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AUTOGEN_ORIGIN_DEPENDS.rst b/share/cmake-3.18/Help/variable/CMAKE_AUTOGEN_ORIGIN_DEPENDS.rst
deleted file mode 100644
index 1398e78..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_AUTOGEN_ORIGIN_DEPENDS.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_AUTOGEN_ORIGIN_DEPENDS
-----------------------------
-
-Switch for forwarding origin target dependencies to the corresponding
-``_autogen`` targets.
-
-This variable is used to initialize the :prop_tgt:`AUTOGEN_ORIGIN_DEPENDS`
-property on all the targets.  See that target property for additional
-information.
-
-By default :variable:`CMAKE_AUTOGEN_ORIGIN_DEPENDS` is ``ON``.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AUTOGEN_PARALLEL.rst b/share/cmake-3.18/Help/variable/CMAKE_AUTOGEN_PARALLEL.rst
deleted file mode 100644
index dd9499a..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_AUTOGEN_PARALLEL.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_AUTOGEN_PARALLEL
-----------------------
-
-Number of parallel ``moc`` or ``uic`` processes to start when using
-:prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
-
-This variable is used to initialize the :prop_tgt:`AUTOGEN_PARALLEL` property
-on all the targets.  See that target property for additional information.
-
-By default :variable:`CMAKE_AUTOGEN_PARALLEL` is unset.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AUTOGEN_VERBOSE.rst b/share/cmake-3.18/Help/variable/CMAKE_AUTOGEN_VERBOSE.rst
deleted file mode 100644
index bad9cf2..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_AUTOGEN_VERBOSE.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-CMAKE_AUTOGEN_VERBOSE
----------------------
-
-Sets the verbosity of :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTOUIC` and
-:prop_tgt:`AUTORCC`.  A positive integer value or a true boolean value
-lets the ``AUTO*`` generators output additional processing information.
-
-Setting :variable:`CMAKE_AUTOGEN_VERBOSE` has the same effect
-as setting the ``VERBOSE`` environment variable during
-generation (e.g. by calling ``make VERBOSE=1``).
-The extra verbosity is limited to the ``AUTO*`` generators though.
-
-By default :variable:`CMAKE_AUTOGEN_VERBOSE` is unset.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_COMPILER_PREDEFINES.rst b/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_COMPILER_PREDEFINES.rst
deleted file mode 100644
index 7e1c53d..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_COMPILER_PREDEFINES.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_AUTOMOC_COMPILER_PREDEFINES
----------------------------------
-
-This variable is used to initialize the :prop_tgt:`AUTOMOC_COMPILER_PREDEFINES`
-property on all the targets. See that target property for additional
-information.
-
-By default it is ON.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_DEPEND_FILTERS.rst b/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_DEPEND_FILTERS.rst
deleted file mode 100644
index 5c3662d..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_DEPEND_FILTERS.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_AUTOMOC_DEPEND_FILTERS
-----------------------------
-
-Filter definitions used by :variable:`CMAKE_AUTOMOC`
-to extract file names from source code as additional dependencies
-for the ``moc`` file.
-
-This variable is used to initialize the :prop_tgt:`AUTOMOC_DEPEND_FILTERS`
-property on all the targets. See that target property for additional
-information.
-
-By default it is empty.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_MACRO_NAMES.rst b/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_MACRO_NAMES.rst
deleted file mode 100644
index ba1b9d2..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_MACRO_NAMES.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-CMAKE_AUTOMOC_MACRO_NAMES
-----------------------------
-
-:ref:`Semicolon-separated list <CMake Language Lists>` list of macro names used by
-:variable:`CMAKE_AUTOMOC` to determine if a C++ file needs to be
-processed by ``moc``.
-
-This variable is used to initialize the :prop_tgt:`AUTOMOC_MACRO_NAMES`
-property on all the targets. See that target property for additional
-information.
-
-The default value is ``Q_OBJECT;Q_GADGET;Q_NAMESPACE``.
-
-Example
-^^^^^^^
-Let CMake know that source files that contain ``CUSTOM_MACRO`` must be ``moc``
-processed as well::
-
-  set(CMAKE_AUTOMOC ON)
-  list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "CUSTOM_MACRO")
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_PATH_PREFIX.rst b/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_PATH_PREFIX.rst
deleted file mode 100644
index dca0b06..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_PATH_PREFIX.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_AUTOMOC_PATH_PREFIX
--------------------------
-
-Whether to generate the ``-p`` path prefix option for ``moc`` on
-:prop_tgt:`AUTOMOC` enabled Qt targets.
-
-This variable is used to initialize the :prop_tgt:`AUTOMOC_PATH_PREFIX`
-property on all the targets.  See that target property for additional
-information.
-
-The default value is ``ON``.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_RELAXED_MODE.rst b/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_RELAXED_MODE.rst
deleted file mode 100644
index 6c0c61b..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_RELAXED_MODE.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-CMAKE_AUTOMOC_RELAXED_MODE
---------------------------
-
-.. deprecated:: 3.15
-
-Switch between strict and relaxed automoc mode.
-
-By default, :prop_tgt:`AUTOMOC` behaves exactly as described in the
-documentation of the :prop_tgt:`AUTOMOC` target property.  When set to
-``TRUE``, it accepts more input and tries to find the correct input file for
-``moc`` even if it differs from the documented behaviour.  In this mode it
-e.g.  also checks whether a header file is intended to be processed by moc
-when a ``"foo.moc"`` file has been included.
-
-Relaxed mode has to be enabled for KDE4 compatibility.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AUTOUIC_SEARCH_PATHS.rst b/share/cmake-3.18/Help/variable/CMAKE_AUTOUIC_SEARCH_PATHS.rst
deleted file mode 100644
index aa132bf..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_AUTOUIC_SEARCH_PATHS.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_AUTOUIC_SEARCH_PATHS
---------------------------
-
-Search path list used by :variable:`CMAKE_AUTOUIC` to find included
-``.ui`` files.
-
-This variable is used to initialize the :prop_tgt:`AUTOUIC_SEARCH_PATHS`
-property on all the targets. See that target property for additional
-information.
-
-By default it is empty.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_BUILD_RPATH.rst b/share/cmake-3.18/Help/variable/CMAKE_BUILD_RPATH.rst
deleted file mode 100644
index f5d53b8..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_BUILD_RPATH.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_BUILD_RPATH
------------------
-
-:ref:`Semicolon-separated list <CMake Language Lists>` specifying runtime path (``RPATH``)
-entries to add to binaries linked in the build tree (for platforms that
-support it).  The entries will *not* be used for binaries in the install
-tree.  See also the :variable:`CMAKE_INSTALL_RPATH` variable.
-
-This is used to initialize the :prop_tgt:`BUILD_RPATH` target property
-for all targets.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_BUILD_RPATH_USE_ORIGIN.rst b/share/cmake-3.18/Help/variable/CMAKE_BUILD_RPATH_USE_ORIGIN.rst
deleted file mode 100644
index e34ede6..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_BUILD_RPATH_USE_ORIGIN.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_BUILD_RPATH_USE_ORIGIN
-----------------------------
-
-Whether to use relative paths for the build ``RPATH``.
-
-This is used to initialize the :prop_tgt:`BUILD_RPATH_USE_ORIGIN` target
-property for all targets, see that property for more details.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_BUILD_TYPE.rst b/share/cmake-3.18/Help/variable/CMAKE_BUILD_TYPE.rst
deleted file mode 100644
index 2d35635..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_BUILD_TYPE.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-CMAKE_BUILD_TYPE
-----------------
-
-Specifies the build type on single-configuration generators.
-
-This statically specifies what build type (configuration) will be
-built in this build tree.  Possible values are empty, ``Debug``, ``Release``,
-``RelWithDebInfo``, ``MinSizeRel``, ...  This variable is only meaningful to
-single-configuration generators (such as :ref:`Makefile Generators` and
-:generator:`Ninja`) i.e.  those which choose a single configuration when CMake
-runs to generate a build tree as opposed to multi-configuration generators
-which offer selection of the build configuration within the generated build
-environment.  There are many per-config properties and variables
-(usually following clean ``SOME_VAR_<CONFIG>`` order conventions), such as
-``CMAKE_C_FLAGS_<CONFIG>``, specified as uppercase:
-``CMAKE_C_FLAGS_[DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL|...]``.  For example,
-in a build tree configured to build type ``Debug``, CMake will see to
-having :variable:`CMAKE_C_FLAGS_DEBUG <CMAKE_<LANG>_FLAGS_DEBUG>` settings get
-added to the :variable:`CMAKE_C_FLAGS <CMAKE_<LANG>_FLAGS>` settings.  See
-also :variable:`CMAKE_CONFIGURATION_TYPES`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_BUILD_WITH_INSTALL_NAME_DIR.rst b/share/cmake-3.18/Help/variable/CMAKE_BUILD_WITH_INSTALL_NAME_DIR.rst
deleted file mode 100644
index 30d5d3b..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_BUILD_WITH_INSTALL_NAME_DIR.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_BUILD_WITH_INSTALL_NAME_DIR
----------------------------------
-
-Whether to use :prop_tgt:`INSTALL_NAME_DIR` on targets in the build tree.
-
-This variable is used to initialize the :prop_tgt:`BUILD_WITH_INSTALL_NAME_DIR`
-property on all targets.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CFG_INTDIR.rst b/share/cmake-3.18/Help/variable/CMAKE_CFG_INTDIR.rst
deleted file mode 100644
index 842654e..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CFG_INTDIR.rst
+++ /dev/null
@@ -1,52 +0,0 @@
-CMAKE_CFG_INTDIR
-----------------
-
-Build-time reference to per-configuration output subdirectory.
-
-For native build systems supporting multiple configurations in the
-build tree (such as :ref:`Visual Studio Generators` and :generator:`Xcode`),
-the value is a reference to a build-time variable specifying the name
-of the per-configuration output subdirectory.  On :ref:`Makefile Generators`
-this evaluates to `.` because there is only one configuration in a build tree.
-Example values:
-
-::
-
-  $(ConfigurationName) = Visual Studio 9
-  $(Configuration)     = Visual Studio 10
-  $(CONFIGURATION)     = Xcode
-  .                    = Make-based tools
-  .                    = Ninja
-  ${CONFIGURATION}     = Ninja Multi-Config
-
-Note that this variable only has limited support on
-:generator:`Ninja Multi-Config`. It is recommended that you use the
-``$<CONFIG>`` :manual:`generator expression <cmake-generator-expressions(7)>`
-instead.
-
-Since these values are evaluated by the native build system, this
-variable is suitable only for use in command lines that will be
-evaluated at build time.  Example of intended usage:
-
-::
-
-  add_executable(mytool mytool.c)
-  add_custom_command(
-    OUTPUT out.txt
-    COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mytool
-            ${CMAKE_CURRENT_SOURCE_DIR}/in.txt out.txt
-    DEPENDS mytool in.txt
-    )
-  add_custom_target(drive ALL DEPENDS out.txt)
-
-Note that ``CMAKE_CFG_INTDIR`` is no longer necessary for this purpose but
-has been left for compatibility with existing projects.  Instead
-:command:`add_custom_command` recognizes executable target names in its
-``COMMAND`` option, so
-``${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mytool`` can be replaced
-by just ``mytool``.
-
-This variable is read-only.  Setting it is undefined behavior.  In
-multi-configuration build systems the value of this variable is passed
-as the value of preprocessor symbol ``CMAKE_INTDIR`` to the compilation
-of all source files.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst b/share/cmake-3.18/Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst
deleted file mode 100644
index ad2709d..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-CMAKE_CODEBLOCKS_COMPILER_ID
-----------------------------
-
-Change the compiler id in the generated CodeBlocks project files.
-
-CodeBlocks uses its own compiler id string which differs from
-:variable:`CMAKE_<LANG>_COMPILER_ID`.  If this variable is left empty,
-CMake tries to recognize the CodeBlocks compiler id automatically.
-Otherwise the specified string is used in the CodeBlocks project file.
-See the CodeBlocks documentation for valid compiler id strings.
-
-Other IDEs like QtCreator that also use the CodeBlocks generator may ignore
-this setting.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES.rst b/share/cmake-3.18/Help/variable/CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES.rst
deleted file mode 100644
index 80ffce3..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES
----------------------------------------
-
-Change the way the CodeBlocks generator creates project files.
-
-If this variable evaluates to ``ON`` the generator excludes from
-the project file any files that are located outside the project root.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CODELITE_USE_TARGETS.rst b/share/cmake-3.18/Help/variable/CMAKE_CODELITE_USE_TARGETS.rst
deleted file mode 100644
index 33cdf6c..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CODELITE_USE_TARGETS.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_CODELITE_USE_TARGETS
---------------------------
-
-Change the way the CodeLite generator creates projectfiles.
-
-If this variable evaluates to ``ON`` at the end of the top-level
-``CMakeLists.txt`` file, the generator creates projectfiles based on targets
-rather than projects.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_COMPILER_IS_GNUCC.rst b/share/cmake-3.18/Help/variable/CMAKE_COMPILER_IS_GNUCC.rst
deleted file mode 100644
index a40667e..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_COMPILER_IS_GNUCC.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_COMPILER_IS_GNUCC
------------------------
-
-True if the ``C`` compiler is GNU.
-Use :variable:`CMAKE_C_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` instead.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_COMPILER_IS_GNUCXX.rst b/share/cmake-3.18/Help/variable/CMAKE_COMPILER_IS_GNUCXX.rst
deleted file mode 100644
index f1f5cf7..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_COMPILER_IS_GNUCXX.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_COMPILER_IS_GNUCXX
-------------------------
-
-True if the C++ (``CXX``) compiler is GNU.
-Use :variable:`CMAKE_CXX_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` instead.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_COMPILER_IS_GNUG77.rst b/share/cmake-3.18/Help/variable/CMAKE_COMPILER_IS_GNUG77.rst
deleted file mode 100644
index 3d6dab4..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_COMPILER_IS_GNUG77.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_COMPILER_IS_GNUG77
-------------------------
-
-True if the ``Fortran`` compiler is GNU.
-Use :variable:`CMAKE_Fortran_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` instead.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY.rst b/share/cmake-3.18/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY.rst
deleted file mode 100644
index ea33c7d..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY
-----------------------------------
-
-Output directory for MS debug symbol ``.pdb`` files
-generated by the compiler while building source files.
-
-This variable is used to initialize the
-:prop_tgt:`COMPILE_PDB_OUTPUT_DIRECTORY` property on all the targets.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.18/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
deleted file mode 100644
index fdeb9ab..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>
--------------------------------------------
-
-Per-configuration output directory for MS debug symbol ``.pdb`` files
-generated by the compiler while building source files.
-
-This is a per-configuration version of
-:variable:`CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY`.
-This variable is used to initialize the
-:prop_tgt:`COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>`
-property on all the targets.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CONFIGURATION_TYPES.rst b/share/cmake-3.18/Help/variable/CMAKE_CONFIGURATION_TYPES.rst
deleted file mode 100644
index 34e99eb..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CONFIGURATION_TYPES.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_CONFIGURATION_TYPES
--------------------------
-
-Specifies the available build types on multi-config generators.
-
-This specifies what build types (configurations) will be available
-such as ``Debug``, ``Release``, ``RelWithDebInfo`` etc.  This has reasonable
-defaults on most platforms, but can be extended to provide other build
-types.  See also :variable:`CMAKE_BUILD_TYPE` for details of managing
-configuration data, and :variable:`CMAKE_CFG_INTDIR`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CPACK_COMMAND.rst b/share/cmake-3.18/Help/variable/CMAKE_CPACK_COMMAND.rst
deleted file mode 100644
index 559108a..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CPACK_COMMAND.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_CPACK_COMMAND
--------------------
-
-Full path to :manual:`cpack(1)` command installed with CMake.
-
-This is the full path to the CPack executable :manual:`cpack(1)` which is
-useful from custom commands that want to use the :manual:`cmake(1)` ``-E``
-option for portable system commands.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CROSSCOMPILING_EMULATOR.rst b/share/cmake-3.18/Help/variable/CMAKE_CROSSCOMPILING_EMULATOR.rst
deleted file mode 100644
index 1d013b7..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CROSSCOMPILING_EMULATOR.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-CMAKE_CROSSCOMPILING_EMULATOR
------------------------------
-
-This variable is only used when :variable:`CMAKE_CROSSCOMPILING` is on. It
-should point to a command on the host system that can run executable built
-for the target system.
-
-If this variable contains a :ref:`semicolon-separated list <CMake Language
-Lists>`, then the first value is the command and remaining values are its
-arguments.
-
-The command will be used to run :command:`try_run` generated executables,
-which avoids manual population of the ``TryRunResults.cmake`` file.
-
-It is also used as the default value for the
-:prop_tgt:`CROSSCOMPILING_EMULATOR` target property of executables.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CROSS_CONFIGS.rst b/share/cmake-3.18/Help/variable/CMAKE_CROSS_CONFIGS.rst
deleted file mode 100644
index 94157f3..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CROSS_CONFIGS.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-CMAKE_CROSS_CONFIGS
--------------------
-
-Specifies a :ref:`semicolon-separated list <CMake Language Lists>` of
-configurations available from all ``build-<Config>.ninja`` files in the
-:generator:`Ninja Multi-Config` generator.  This variable activates
-cross-config mode. Targets from each config specified in this variable can be
-built from any ``build-<Config>.ninja`` file. Custom commands will use the
-configuration native to ``build-<Config>.ninja``. If it is set to ``all``, all
-configurations from :variable:`CMAKE_CONFIGURATION_TYPES` are cross-configs. If
-it is not specified, or empty, each ``build-<Config>.ninja`` file will only
-contain build rules for its own configuration.
-
-The value of this variable must be a subset of
-:variable:`CMAKE_CONFIGURATION_TYPES`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CTEST_ARGUMENTS.rst b/share/cmake-3.18/Help/variable/CMAKE_CTEST_ARGUMENTS.rst
deleted file mode 100644
index 0940b46..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CTEST_ARGUMENTS.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_CTEST_ARGUMENTS
----------------------
-
-Set this to a :ref:`semicolon-separated list <CMake Language Lists>` of
-command-line arguments to pass to :manual:`ctest(1)` when running tests
-through the ``test`` (or ``RUN_TESTS``) target of the generated build system.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CUDA_ARCHITECTURES.rst b/share/cmake-3.18/Help/variable/CMAKE_CUDA_ARCHITECTURES.rst
deleted file mode 100644
index 149bffa..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CUDA_ARCHITECTURES.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-CMAKE_CUDA_ARCHITECTURES
-------------------------
-
-Default value for :prop_tgt:`CUDA_ARCHITECTURES` property of targets.
-
-This is initialized as follows depending on :variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>`:
-
-- For ``Clang``: the oldest architecture that works.
-
-- For ``NVIDIA``: the default architecture chosen by the compiler.
-  See policy :policy:`CMP0104`.
-
-Users are encouraged to override this, as the default varies across compilers
-and compiler versions.
-
-This variable is used to initialize the :prop_tgt:`CUDA_ARCHITECTURES` property
-on all targets. See the target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CUDA_COMPILE_FEATURES.rst b/share/cmake-3.18/Help/variable/CMAKE_CUDA_COMPILE_FEATURES.rst
deleted file mode 100644
index 2cd2650..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CUDA_COMPILE_FEATURES.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_CUDA_COMPILE_FEATURES
----------------------------
-
-List of features known to the CUDA compiler
-
-These features are known to be available for use with the CUDA compiler. This
-list is a subset of the features listed in the
-:prop_gbl:`CMAKE_CUDA_KNOWN_FEATURES` global property.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CUDA_EXTENSIONS.rst b/share/cmake-3.18/Help/variable/CMAKE_CUDA_EXTENSIONS.rst
deleted file mode 100644
index 4fe758e..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CUDA_EXTENSIONS.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_CUDA_EXTENSIONS
----------------------
-
-Default value for :prop_tgt:`CUDA_EXTENSIONS` property of targets.
-
-This variable is used to initialize the :prop_tgt:`CUDA_EXTENSIONS`
-property on all targets.  See that target property for additional
-information.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst b/share/cmake-3.18/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst
deleted file mode 100644
index 6d34c5c..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_CUDA_HOST_COMPILER
-------------------------
-
-Executable to use when compiling host code when compiling ``CUDA`` language
-files. Maps to the ``nvcc -ccbin`` option.  Will only be used by CMake on the first
-configuration to determine a valid host compiler for ``CUDA``. After a valid
-host compiler has been found, this value is read-only.  This variable takes
-priority over the :envvar:`CUDAHOSTCXX` environment variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS.rst b/share/cmake-3.18/Help/variable/CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS.rst
deleted file mode 100644
index fc835cd..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS
----------------------------------
-
-Default value for :prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` target
-property. This variable is used to initialize the property on each target as
-it is created.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CUDA_RUNTIME_LIBRARY.rst b/share/cmake-3.18/Help/variable/CMAKE_CUDA_RUNTIME_LIBRARY.rst
deleted file mode 100644
index e3205d3..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CUDA_RUNTIME_LIBRARY.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_CUDA_RUNTIME_LIBRARY
---------------------------
-
-Select the CUDA runtime library for use when compiling and linking CUDA.
-This variable is used to initialize the :prop_tgt:`CUDA_RUNTIME_LIBRARY`
-property on all targets as they are created.
-
-The allowed case insensitive values are:
-
-.. include:: ../prop_tgt/CUDA_RUNTIME_LIBRARY-VALUES.txt
-
-Contents of ``CMAKE_CUDA_RUNTIME_LIBRARY`` may use
-:manual:`generator expressions <cmake-generator-expressions(7)>`.
-
-If this variable is not set then the :prop_tgt:`CUDA_RUNTIME_LIBRARY` target
-property will not be set automatically.  If that property is not set then
-CMake uses an appropriate default value based on the compiler to select the
-CUDA runtime library.
-
-.. note::
-
-  This property has effect only when the ``CUDA`` language is enabled. To
-  control the CUDA runtime linking when only using the CUDA SDK with the
-  ``C`` or ``C++`` language we recommend using the :module:`FindCUDAToolkit`
-  module.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CUDA_SEPARABLE_COMPILATION.rst b/share/cmake-3.18/Help/variable/CMAKE_CUDA_SEPARABLE_COMPILATION.rst
deleted file mode 100644
index eef92fb..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CUDA_SEPARABLE_COMPILATION.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_CUDA_SEPARABLE_COMPILATION
---------------------------------
-
-Default value for :prop_tgt:`CUDA_SEPARABLE_COMPILATION` target property.
-This variable is used to initialize the property on each target as it is
-created.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CUDA_STANDARD.rst b/share/cmake-3.18/Help/variable/CMAKE_CUDA_STANDARD.rst
deleted file mode 100644
index 6c23031..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CUDA_STANDARD.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_CUDA_STANDARD
--------------------
-
-Default value for :prop_tgt:`CUDA_STANDARD` property of targets.
-
-This variable is used to initialize the :prop_tgt:`CUDA_STANDARD`
-property on all targets.  See that target property for additional
-information.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CUDA_STANDARD_REQUIRED.rst b/share/cmake-3.18/Help/variable/CMAKE_CUDA_STANDARD_REQUIRED.rst
deleted file mode 100644
index 935d605..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CUDA_STANDARD_REQUIRED.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_CUDA_STANDARD_REQUIRED
-----------------------------
-
-Default value for :prop_tgt:`CUDA_STANDARD_REQUIRED` property of targets.
-
-This variable is used to initialize the :prop_tgt:`CUDA_STANDARD_REQUIRED`
-property on all targets.  See that target property for additional
-information.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES.rst b/share/cmake-3.18/Help/variable/CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES.rst
deleted file mode 100644
index 7de50a5..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES
---------------------------------------
-
-When the ``CUDA`` language has been enabled, this provides a
-:ref:`semicolon-separated list <CMake Language Lists>` of include directories provided
-by the CUDA Toolkit.  The value may be useful for C++ source files
-to include CUDA headers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CURRENT_FUNCTION.rst b/share/cmake-3.18/Help/variable/CMAKE_CURRENT_FUNCTION.rst
deleted file mode 100644
index fb7f610..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CURRENT_FUNCTION.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_CURRENT_FUNCTION
-----------------------
-
-When executing code inside a :command:`function`, this variable
-contains the name of the current function.  It can be useful for
-diagnostic or debug messages.
-
-See also :variable:`CMAKE_CURRENT_FUNCTION_LIST_DIR`,
-:variable:`CMAKE_CURRENT_FUNCTION_LIST_FILE` and
-:variable:`CMAKE_CURRENT_FUNCTION_LIST_LINE`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_DIR.rst b/share/cmake-3.18/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_DIR.rst
deleted file mode 100644
index 44ae1e5..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_DIR.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-CMAKE_CURRENT_FUNCTION_LIST_DIR
--------------------------------
-
-When executing code inside a :command:`function`, this variable
-contains the full directory of the listfile that defined the current function.
-
-It is quite common practice in CMake for modules to use some additional files,
-such as templates to be copied in after substituting CMake variables.
-In such cases, a function needs to know where to locate those files in a way
-that doesn't depend on where the function is called.  Without
-``CMAKE_CURRENT_FUNCTION_LIST_DIR``, the code to do that would typically use
-the following pattern:
-
-.. code-block:: cmake
-
-  set(_THIS_MODULE_BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
-
-  function(foo)
-    configure_file(
-      "${_THIS_MODULE_BASE_DIR}/some.template.in"
-      some.output
-    )
-  endfunction()
-
-Using ``CMAKE_CURRENT_FUNCTION_LIST_DIR`` inside the function instead
-eliminates the need for the extra variable which would otherwise be visible
-outside the function's scope.
-The above example can be written in the more concise and more robust form:
-
-.. code-block:: cmake
-
-  function(foo)
-    configure_file(
-      "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/some.template.in"
-      some.output
-    )
-  endfunction()
-
-See also :variable:`CMAKE_CURRENT_FUNCTION`,
-:variable:`CMAKE_CURRENT_FUNCTION_LIST_FILE` and
-:variable:`CMAKE_CURRENT_FUNCTION_LIST_LINE`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_FILE.rst b/share/cmake-3.18/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_FILE.rst
deleted file mode 100644
index c737af9..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_FILE.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_CURRENT_FUNCTION_LIST_FILE
---------------------------------
-
-When executing code inside a :command:`function`, this variable
-contains the full path to the listfile that defined the current function.
-
-See also :variable:`CMAKE_CURRENT_FUNCTION`,
-:variable:`CMAKE_CURRENT_FUNCTION_LIST_DIR` and
-:variable:`CMAKE_CURRENT_FUNCTION_LIST_LINE`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_LINE.rst b/share/cmake-3.18/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_LINE.rst
deleted file mode 100644
index ad6282e..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_LINE.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_CURRENT_FUNCTION_LIST_LINE
---------------------------------
-
-When executing code inside a :command:`function`, this variable
-contains the line number in the listfile where the current function
-was defined.
-
-See also :variable:`CMAKE_CURRENT_FUNCTION`,
-:variable:`CMAKE_CURRENT_FUNCTION_LIST_DIR` and
-:variable:`CMAKE_CURRENT_FUNCTION_LIST_FILE`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CURRENT_LIST_LINE.rst b/share/cmake-3.18/Help/variable/CMAKE_CURRENT_LIST_LINE.rst
deleted file mode 100644
index 60e8e26..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CURRENT_LIST_LINE.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_CURRENT_LIST_LINE
------------------------
-
-The line number of the current file being processed.
-
-This is the line number of the file currently being processed by
-cmake.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst b/share/cmake-3.18/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst
deleted file mode 100644
index 5c59f95..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_CXX_COMPILE_FEATURES
---------------------------
-
-List of features known to the C++ compiler
-
-These features are known to be available for use with the C++ compiler. This
-list is a subset of the features listed in the
-:prop_gbl:`CMAKE_CXX_KNOWN_FEATURES` global property.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CXX_EXTENSIONS.rst b/share/cmake-3.18/Help/variable/CMAKE_CXX_EXTENSIONS.rst
deleted file mode 100644
index 4a92425..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CXX_EXTENSIONS.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_CXX_EXTENSIONS
---------------------
-
-Default value for :prop_tgt:`CXX_EXTENSIONS` property of targets.
-
-This variable is used to initialize the :prop_tgt:`CXX_EXTENSIONS`
-property on all targets.  See that target property for additional
-information.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CXX_STANDARD.rst b/share/cmake-3.18/Help/variable/CMAKE_CXX_STANDARD.rst
deleted file mode 100644
index 8a8bdff..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CXX_STANDARD.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_CXX_STANDARD
-------------------
-
-Default value for :prop_tgt:`CXX_STANDARD` property of targets.
-
-This variable is used to initialize the :prop_tgt:`CXX_STANDARD`
-property on all targets.  See that target property for additional
-information.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CXX_STANDARD_REQUIRED.rst b/share/cmake-3.18/Help/variable/CMAKE_CXX_STANDARD_REQUIRED.rst
deleted file mode 100644
index 4c71058..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_CXX_STANDARD_REQUIRED.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_CXX_STANDARD_REQUIRED
----------------------------
-
-Default value for :prop_tgt:`CXX_STANDARD_REQUIRED` property of targets.
-
-This variable is used to initialize the :prop_tgt:`CXX_STANDARD_REQUIRED`
-property on all targets.  See that target property for additional
-information.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_C_COMPILE_FEATURES.rst b/share/cmake-3.18/Help/variable/CMAKE_C_COMPILE_FEATURES.rst
deleted file mode 100644
index 8d1eca0..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_C_COMPILE_FEATURES.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_C_COMPILE_FEATURES
-------------------------
-
-List of features known to the C compiler
-
-These features are known to be available for use with the C compiler. This
-list is a subset of the features listed in the
-:prop_gbl:`CMAKE_C_KNOWN_FEATURES` global property.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_C_EXTENSIONS.rst b/share/cmake-3.18/Help/variable/CMAKE_C_EXTENSIONS.rst
deleted file mode 100644
index fa510d4..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_C_EXTENSIONS.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_C_EXTENSIONS
-------------------
-
-Default value for :prop_tgt:`C_EXTENSIONS` property of targets.
-
-This variable is used to initialize the :prop_tgt:`C_EXTENSIONS`
-property on all targets.  See that target property for additional
-information.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_C_STANDARD.rst b/share/cmake-3.18/Help/variable/CMAKE_C_STANDARD.rst
deleted file mode 100644
index b55e00c..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_C_STANDARD.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_C_STANDARD
-----------------
-
-Default value for :prop_tgt:`C_STANDARD` property of targets.
-
-This variable is used to initialize the :prop_tgt:`C_STANDARD`
-property on all targets.  See that target property for additional
-information.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_C_STANDARD_REQUIRED.rst b/share/cmake-3.18/Help/variable/CMAKE_C_STANDARD_REQUIRED.rst
deleted file mode 100644
index 7f70f6e..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_C_STANDARD_REQUIRED.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_C_STANDARD_REQUIRED
--------------------------
-
-Default value for :prop_tgt:`C_STANDARD_REQUIRED` property of targets.
-
-This variable is used to initialize the :prop_tgt:`C_STANDARD_REQUIRED`
-property on all targets.  See that target property for additional
-information.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_DEFAULT_BUILD_TYPE.rst b/share/cmake-3.18/Help/variable/CMAKE_DEFAULT_BUILD_TYPE.rst
deleted file mode 100644
index aa4f82d..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_DEFAULT_BUILD_TYPE.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_DEFAULT_BUILD_TYPE
-------------------------
-
-Specifies the configuration to use by default in a ``build.ninja`` file in the
-:generator:`Ninja Multi-Config` generator. If this variable is specified,
-``build.ninja`` uses build rules from ``build-<Config>.ninja`` by default. All
-custom commands are executed with this configuration. If the variable is not
-specified, the first item from :variable:`CMAKE_CONFIGURATION_TYPES` is used
-instead.
-
-The value of this variable must be one of the items from
-:variable:`CMAKE_CONFIGURATION_TYPES`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_DEFAULT_CONFIGS.rst b/share/cmake-3.18/Help/variable/CMAKE_DEFAULT_CONFIGS.rst
deleted file mode 100644
index 84c642a..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_DEFAULT_CONFIGS.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-CMAKE_DEFAULT_CONFIGS
----------------------
-
-Specifies a :ref:`semicolon-separated list <CMake Language Lists>` of configurations
-to build for a target in ``build.ninja`` if no ``:<Config>`` suffix is specified in
-the :generator:`Ninja Multi-Config` generator. If it is set to ``all``, all
-configurations from :variable:`CMAKE_CROSS_CONFIGS` are used. If it is not
-specified, it defaults to :variable:`CMAKE_DEFAULT_BUILD_TYPE`.
-
-For example, if you set :variable:`CMAKE_DEFAULT_BUILD_TYPE` to ``Release``,
-but set :variable:`CMAKE_DEFAULT_CONFIGS` to ``Debug`` or ``all``, all
-``<target>`` aliases in ``build.ninja`` will resolve to ``<target>:Debug`` or
-``<target>:all``, but custom commands will still use the ``Release``
-configuration.
-
-The value of this variable must be a subset of :variable:`CMAKE_CROSS_CONFIGS`
-or be the same as :variable:`CMAKE_DEFAULT_BUILD_TYPE`. It must not be
-specified if :variable:`CMAKE_DEFAULT_BUILD_TYPE` or
-:variable:`CMAKE_CROSS_CONFIGS` is not used.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_DEPENDS_IN_PROJECT_ONLY.rst b/share/cmake-3.18/Help/variable/CMAKE_DEPENDS_IN_PROJECT_ONLY.rst
deleted file mode 100644
index 7179071..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_DEPENDS_IN_PROJECT_ONLY.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_DEPENDS_IN_PROJECT_ONLY
------------------------------
-
-When set to ``TRUE`` in a directory, the build system produced by the
-:ref:`Makefile Generators` is set up to only consider dependencies on source
-files that appear either in the source or in the binary directories.  Changes
-to source files outside of these directories will not cause rebuilds.
-
-This should be used carefully in cases where some source files are picked up
-through external headers during the build.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_DIRECTORY_LABELS.rst b/share/cmake-3.18/Help/variable/CMAKE_DIRECTORY_LABELS.rst
deleted file mode 100644
index 2a6c410..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_DIRECTORY_LABELS.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_DIRECTORY_LABELS
------------------------
-
-Specify labels for the current directory.
-
-This is used to initialize the :prop_dir:`LABELS` directory property.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.rst b/share/cmake-3.18/Help/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.rst
deleted file mode 100644
index ed60020..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-CMAKE_DISABLE_FIND_PACKAGE_<PackageName>
-----------------------------------------
-
-Variable for disabling :command:`find_package` calls.
-
-Every non-``REQUIRED`` :command:`find_package` call in a project can be
-disabled by setting the variable
-``CMAKE_DISABLE_FIND_PACKAGE_<PackageName>`` to ``TRUE``.
-This can be used to build a project without an optional package,
-although that package is installed.
-
-This switch should be used during the initial CMake run.  Otherwise if
-the package has already been found in a previous CMake run, the
-variables which have been stored in the cache will still be there.  In
-that case it is recommended to remove the cache variables for this
-package from the cache using the cache editor or :manual:`cmake(1)` ``-U``
diff --git a/share/cmake-3.18/Help/variable/CMAKE_DISABLE_PRECOMPILE_HEADERS.rst b/share/cmake-3.18/Help/variable/CMAKE_DISABLE_PRECOMPILE_HEADERS.rst
deleted file mode 100644
index 7c30ede..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_DISABLE_PRECOMPILE_HEADERS.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_DISABLE_PRECOMPILE_HEADERS
---------------------------------
-
-Default value for :prop_tgt:`DISABLE_PRECOMPILE_HEADERS` of targets.
-
-By default ``CMAKE_DISABLE_PRECOMPILE_HEADERS`` is ``OFF``.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK.rst b/share/cmake-3.18/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK.rst
deleted file mode 100644
index 8edcd1e..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-CMAKE_DOTNET_TARGET_FRAMEWORK
------------------------------
-
-Default value for :prop_tgt:`DOTNET_TARGET_FRAMEWORK` property	of
-targets.
-
-This variable is used to initialize the
-:prop_tgt:`DOTNET_TARGET_FRAMEWORK` property on all targets. See that
-target property for additional information.
-
-Setting ``CMAKE_DOTNET_TARGET_FRAMEWORK`` may be necessary
-when working with ``C#`` and newer .NET framework versions to
-avoid referencing errors with the ``ALL_BUILD`` CMake target.
-
-This variable is only evaluated for :ref:`Visual Studio Generators`
-VS 2010 and above.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION.rst b/share/cmake-3.18/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION.rst
deleted file mode 100644
index c2eef9e..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION
--------------------------------------
-
-Default value for :prop_tgt:`DOTNET_TARGET_FRAMEWORK_VERSION`
-property of targets.
-
-This variable is used to initialize the
-:prop_tgt:`DOTNET_TARGET_FRAMEWORK_VERSION` property on all
-targets. See that target property for additional information. When set,
-:variable:`CMAKE_DOTNET_TARGET_FRAMEWORK` takes precednece over this
-variable. See that variable or the associated target property
-:prop_tgt:`DOTNET_TARGET_FRAMEWORK` for additional information.
-
-
-Setting ``CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION`` may be necessary
-when working with ``C#`` and newer .NET framework versions to
-avoid referencing errors with the ``ALL_BUILD`` CMake target.
-
-This variable is only evaluated for :ref:`Visual Studio Generators`
-VS 2010 and above.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst b/share/cmake-3.18/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst
deleted file mode 100644
index 331aae8..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES
----------------------------------------
-
-This cache variable is used by the Eclipse project generator.  See
-:manual:`cmake-generators(7)`.
-
-The Eclipse project generator generates so-called linked resources
-e.g. to the subproject root dirs in the source tree or to the source files
-of targets.
-This can be disabled by setting this variable to FALSE.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst b/share/cmake-3.18/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst
deleted file mode 100644
index 7b4367d..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT
--------------------------------------
-
-This cache variable is used by the Eclipse project generator.  See
-:manual:`cmake-generators(7)`.
-
-If this variable is set to TRUE, the Eclipse project generator will generate
-an Eclipse project in :variable:`CMAKE_SOURCE_DIR` . This project can then
-be used in Eclipse e.g. for the version control functionality.
-:variable:`CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT` defaults to FALSE; so
-nothing is written into the source directory.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst b/share/cmake-3.18/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst
deleted file mode 100644
index 6e8a408..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_ECLIPSE_MAKE_ARGUMENTS
-----------------------------
-
-This cache variable is used by the Eclipse project generator.  See
-:manual:`cmake-generators(7)`.
-
-This variable holds arguments which are used when Eclipse invokes the make
-tool. By default it is initialized to hold flags to enable parallel builds
-(using -j typically).
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ECLIPSE_RESOURCE_ENCODING.rst b/share/cmake-3.18/Help/variable/CMAKE_ECLIPSE_RESOURCE_ENCODING.rst
deleted file mode 100644
index 314efe5..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ECLIPSE_RESOURCE_ENCODING.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_ECLIPSE_RESOURCE_ENCODING
--------------------------------
-
-This cache variable tells the :generator:`Eclipse CDT4` project generator
-to set the resource encoding to the given value in generated project files.
-If no value is given, no encoding will be set.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ECLIPSE_VERSION.rst b/share/cmake-3.18/Help/variable/CMAKE_ECLIPSE_VERSION.rst
deleted file mode 100644
index 8cc7882..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ECLIPSE_VERSION.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_ECLIPSE_VERSION
----------------------
-
-This cache variable is used by the Eclipse project generator.  See
-:manual:`cmake-generators(7)`.
-
-When using the Eclipse project generator, CMake tries to find the Eclipse
-executable and detect the version of it. Depending on the version it finds,
-some features are enabled or disabled. If CMake doesn't find
-Eclipse, it assumes the oldest supported version, Eclipse Callisto (3.2).
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ENABLE_EXPORTS.rst b/share/cmake-3.18/Help/variable/CMAKE_ENABLE_EXPORTS.rst
deleted file mode 100644
index 8848da1..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_ENABLE_EXPORTS.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_ENABLE_EXPORTS
---------------------
-
-Specify whether executables export symbols for loadable modules.
-
-This variable is used to initialize the :prop_tgt:`ENABLE_EXPORTS` target
-property for executable targets when they are created by calls to the
-:command:`add_executable` command.  See the property documentation for details.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_EXECUTABLE_SUFFIX.rst b/share/cmake-3.18/Help/variable/CMAKE_EXECUTABLE_SUFFIX.rst
deleted file mode 100644
index 356590f..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_EXECUTABLE_SUFFIX.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_EXECUTABLE_SUFFIX
------------------------
-
-The suffix for executables on this platform.
-
-The suffix to use for the end of an executable filename if any, ``.exe``
-on Windows.
-
-``CMAKE_EXECUTABLE_SUFFIX_<LANG>`` overrides this for language ``<LANG>``.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_EXECUTE_PROCESS_COMMAND_ECHO.rst b/share/cmake-3.18/Help/variable/CMAKE_EXECUTE_PROCESS_COMMAND_ECHO.rst
deleted file mode 100644
index 76561d8..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_EXECUTE_PROCESS_COMMAND_ECHO.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_EXECUTE_PROCESS_COMMAND_ECHO
-----------------------------------
-
-If this variable is set to ``STDERR``, ``STDOUT`` or ``NONE`` then commands
-in :command:`execute_process` calls will be printed to either stderr or
-stdout or not at all.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG_INIT.rst b/share/cmake-3.18/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG_INIT.rst
deleted file mode 100644
index 592a369..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG_INIT.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_EXE_LINKER_FLAGS_<CONFIG>_INIT
-------------------------------------
-
-Value used to initialize the :variable:`CMAKE_EXE_LINKER_FLAGS_<CONFIG>`
-cache entry the first time a build tree is configured.
-This variable is meant to be set by a :variable:`toolchain file
-<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
-the value based on the environment and target platform.
-
-See also :variable:`CMAKE_EXE_LINKER_FLAGS_INIT`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_EXE_LINKER_FLAGS_INIT.rst b/share/cmake-3.18/Help/variable/CMAKE_EXE_LINKER_FLAGS_INIT.rst
deleted file mode 100644
index 0b8afe4..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_EXE_LINKER_FLAGS_INIT.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_EXE_LINKER_FLAGS_INIT
----------------------------
-
-Value used to initialize the :variable:`CMAKE_EXE_LINKER_FLAGS`
-cache entry the first time a build tree is configured.
-This variable is meant to be set by a :variable:`toolchain file
-<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
-the value based on the environment and target platform.
-
-See also the configuration-specific variable
-:variable:`CMAKE_EXE_LINKER_FLAGS_<CONFIG>_INIT`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_EXPORT_COMPILE_COMMANDS.rst b/share/cmake-3.18/Help/variable/CMAKE_EXPORT_COMPILE_COMMANDS.rst
deleted file mode 100644
index 6d2450b..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_EXPORT_COMPILE_COMMANDS.rst
+++ /dev/null
@@ -1,37 +0,0 @@
-CMAKE_EXPORT_COMPILE_COMMANDS
------------------------------
-
-Enable/Disable output of compile commands during generation.
-
-If enabled, generates a ``compile_commands.json`` file containing the exact
-compiler calls for all translation units of the project in machine-readable
-form.  The format of the JSON file looks like:
-
-.. code-block:: javascript
-
-  [
-    {
-      "directory": "/home/user/development/project",
-      "command": "/usr/bin/c++ ... -c ../foo/foo.cc",
-      "file": "../foo/foo.cc"
-    },
-
-    ...
-
-    {
-      "directory": "/home/user/development/project",
-      "command": "/usr/bin/c++ ... -c ../foo/bar.cc",
-      "file": "../foo/bar.cc"
-    }
-  ]
-
-This is initialized by the :envvar:`CMAKE_EXPORT_COMPILE_COMMANDS` environment
-variable.
-
-.. note::
-  This option is implemented only by :ref:`Makefile Generators`
-  and the :generator:`Ninja`.  It is ignored on other generators.
-
-  This option currently does not work well in combination with
-  the :prop_tgt:`UNITY_BUILD` target property or the
-  :variable:`CMAKE_UNITY_BUILD` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst b/share/cmake-3.18/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst
deleted file mode 100644
index 768ed64..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-CMAKE_EXPORT_NO_PACKAGE_REGISTRY
---------------------------------
-
-Disable the :command:`export(PACKAGE)` command when :policy:`CMP0090`
-is not set to ``NEW``.
-
-In some cases, for example for packaging and for system wide
-installations, it is not desirable to write the user package registry.
-If the ``CMAKE_EXPORT_NO_PACKAGE_REGISTRY`` variable is enabled,
-the :command:`export(PACKAGE)` command will do nothing.
-
-If :policy:`CMP0090` is set to ``NEW`` this variable does nothing, and the
-:variable:`CMAKE_EXPORT_PACKAGE_REGISTRY` variable controls the behavior
-instead.
-
-See also :ref:`Disabling the Package Registry`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_EXPORT_PACKAGE_REGISTRY.rst b/share/cmake-3.18/Help/variable/CMAKE_EXPORT_PACKAGE_REGISTRY.rst
deleted file mode 100644
index 3476a19..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_EXPORT_PACKAGE_REGISTRY.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-CMAKE_EXPORT_PACKAGE_REGISTRY
------------------------------
-
-Enables the :command:`export(PACKAGE)` command when :policy:`CMP0090`
-is set to ``NEW``.
-
-The :command:`export(PACKAGE)` command does nothing by default.  In some cases
-it is desirable to write to the user package registry, so the
-``CMAKE_EXPORT_PACKAGE_REGISTRY`` variable may be set to enable it.
-
-If :policy:`CMP0090` is *not* set to ``NEW`` this variable does nothing, and
-the :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` variable controls the behavior
-instead.
-
-See also :ref:`Disabling the Package Registry`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_APPBUNDLE.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_APPBUNDLE.rst
deleted file mode 100644
index 7a05fac..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_APPBUNDLE.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-CMAKE_FIND_APPBUNDLE
---------------------
-
-This variable affects how ``find_*`` commands choose between
-macOS Application Bundles and unix-style package components.
-
-On Darwin or systems supporting macOS Application Bundles, the
-``CMAKE_FIND_APPBUNDLE`` variable can be set to empty or
-one of the following:
-
-``FIRST``
-  Try to find application bundles before standard programs.
-  This is the default on Darwin.
-
-``LAST``
-  Try to find application bundles after standard programs.
-
-``ONLY``
-  Only try to find application bundles.
-
-``NEVER``
-  Never try to find application bundles.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_DEBUG_MODE.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_DEBUG_MODE.rst
deleted file mode 100644
index f5fd8ce..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_DEBUG_MODE.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-CMAKE_FIND_DEBUG_MODE
----------------------
-
-Print extra find call information for the following commands to standard
-error:
-
-* :command:`find_program`
-* :command:`find_library`
-* :command:`find_file`
-* :command:`find_path`
-* :command:`find_package`
-
-Output is designed for human consumption and not for parsing.
-Enabling this variable is equivalent to using :manual:`cmake <cmake(1)>` ``--debug-find``
-with the added ability to enable debugging for a subset of find calls.
-
-.. code-block:: cmake
-
-  set(CMAKE_FIND_DEBUG_MODE TRUE)
-  find_program(...)
-  set(CMAKE_FIND_DEBUG_MODE FALSE)
-
-Default is unset.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_FRAMEWORK.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_FRAMEWORK.rst
deleted file mode 100644
index 4d5078f..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_FRAMEWORK.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-CMAKE_FIND_FRAMEWORK
---------------------
-
-This variable affects how ``find_*`` commands choose between
-macOS Frameworks and unix-style package components.
-
-On Darwin or systems supporting macOS Frameworks, the
-``CMAKE_FIND_FRAMEWORK`` variable can be set to empty or
-one of the following:
-
-``FIRST``
-  Try to find frameworks before standard libraries or headers.
-  This is the default on Darwin.
-
-``LAST``
-  Try to find frameworks after standard libraries or headers.
-
-``ONLY``
-  Only try to find frameworks.
-
-``NEVER``
-  Never try to find frameworks.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX.rst
deleted file mode 100644
index ada8955..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX
-------------------------------------
-
-Specify a ``<suffix>`` to tell the :command:`find_library` command to
-search in a ``lib<suffix>`` directory before each ``lib`` directory that
-would normally be searched.
-
-This overrides the behavior of related global properties:
-
-* :prop_gbl:`FIND_LIBRARY_USE_LIB32_PATHS`
-* :prop_gbl:`FIND_LIBRARY_USE_LIB64_PATHS`
-* :prop_gbl:`FIND_LIBRARY_USE_LIBX32_PATHS`
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_LIBRARY_SUFFIXES.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_LIBRARY_SUFFIXES.rst
deleted file mode 100644
index 4a64e33..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_LIBRARY_SUFFIXES.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_FIND_LIBRARY_SUFFIXES
----------------------------
-
-Suffixes to append when looking for libraries.
-
-This specifies what suffixes to add to library names when the
-:command:`find_library` command looks for libraries.  On Windows systems this
-is typically ``.lib`` and ``.dll``, meaning that when trying to find the
-``foo`` library it will look for ``foo.dll`` etc.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_NAME.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_NAME.rst
deleted file mode 100644
index bd1a30f..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_NAME.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_FIND_PACKAGE_NAME
------------------------
-
-Defined by the :command:`find_package` command while loading
-a find module to record the caller-specified package name.
-See command documentation for details.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst
deleted file mode 100644
index 4ee9d8b..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY
---------------------------------------
-
-.. deprecated:: 3.16
-
-  Use the :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variable instead.
-
-By default this variable is not set. If neither
-:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` nor
-``CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`` is set, then
-:command:`find_package()` will use the :ref:`User Package Registry`
-unless the ``NO_CMAKE_PACKAGE_REGISTRY`` option is provided.
-
-``CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`` is ignored if
-:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` is set.
-
-In some cases, for example to locate only system wide installations, it
-is not desirable to use the :ref:`User Package Registry` when searching
-for packages. If the :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`
-variable is ``TRUE``, all the :command:`find_package` commands will skip
-the :ref:`User Package Registry` as if they were called with the
-``NO_CMAKE_PACKAGE_REGISTRY`` argument.
-
-See also :ref:`Disabling the Package Registry`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst
deleted file mode 100644
index 107c183..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY
----------------------------------------------
-
-.. deprecated:: 3.16
-
-  Use the :variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY` variable instead.
-
-By default this variable is not set. If neither
-:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY` nor
-``CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY`` is set, then
-:command:`find_package()` will use the :ref:`System Package Registry`
-unless the ``NO_CMAKE_SYSTEM_PACKAGE_REGISTRY`` option is provided.
-
-``CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY`` is ignored if
-:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY` is set.
-
-In some cases, it is not desirable to use the
-:ref:`System Package Registry` when searching for packages. If the
-:variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` variable is
-``TRUE``, all the :command:`find_package` commands will skip
-the :ref:`System Package Registry` as if they were called with the
-``NO_CMAKE_SYSTEM_PACKAGE_REGISTRY`` argument.
-
-See also :ref:`Disabling the Package Registry`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_PREFER_CONFIG.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_PREFER_CONFIG.rst
deleted file mode 100644
index db658a1..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_PREFER_CONFIG.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-CMAKE_FIND_PACKAGE_PREFER_CONFIG
----------------------------------
-
-Tell :command:`find_package` to try "Config" mode before "Module" mode if no
-mode was specified.
-
-The command :command:`find_package` operates without an explicit mode when
-the reduced signature is used without the ``MODULE`` option. In this case,
-by default, CMake first tries Module mode by searching for a
-``Find<pkg>.cmake`` module.  If it fails, CMake then searches for the package
-using Config mode.
-
-Set ``CMAKE_FIND_PACKAGE_PREFER_CONFIG`` to ``TRUE`` to tell
-:command:`find_package` to first search using Config mode before falling back
-to Module mode.
-
-This variable may be useful when a developer has compiled a custom version of
-a common library and wishes to link it to a dependent project.  If this
-variable is set to ``TRUE``, it would prevent a dependent project's call
-to :command:`find_package` from selecting the default library located by the
-system's ``Find<pkg>.cmake`` module before finding the developer's custom
-built library.
-
-Once this variable is set, it is the responsibility of the exported
-``<pkg>Config.cmake`` files to provide the same result variables as the
-``Find<pkg>.cmake`` modules so that dependent projects can use them
-interchangeably.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS.rst
deleted file mode 100644
index dfbde20..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS
------------------------------------
-
-Set to ``TRUE`` to tell :command:`find_package` calls to resolve symbolic
-links in the value of ``<PackageName>_DIR``.
-
-This is helpful in use cases where the package search path points at a
-proxy directory in which symlinks to the real package locations appear.
-This is not enabled by default because there are also common use cases
-in which the symlinks should be preserved.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst
deleted file mode 100644
index 99e4ec1..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-CMAKE_FIND_PACKAGE_SORT_DIRECTION
----------------------------------
-
-The sorting direction used by :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER`.
-It can assume one of the following values:
-
-``DEC``
-  Default.  Ordering is done in descending mode.
-  The highest folder found will be tested first.
-
-``ASC``
-  Ordering is done in ascending mode.
-  The lowest folder found will be tested first.
-
-If :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER` is not set or is set to ``NONE``
-this variable has no effect.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_SORT_ORDER.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_SORT_ORDER.rst
deleted file mode 100644
index ba5f3a8..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_SORT_ORDER.rst
+++ /dev/null
@@ -1,36 +0,0 @@
-CMAKE_FIND_PACKAGE_SORT_ORDER
------------------------------
-
-The default order for sorting packages found using :command:`find_package`.
-It can assume one of the following values:
-
-``NONE``
-  Default.  No attempt is done to sort packages.
-  The first valid package found will be selected.
-
-``NAME``
-  Sort packages lexicographically before selecting one.
-
-``NATURAL``
-  Sort packages using natural order (see ``strverscmp(3)`` manual),
-  i.e. such that contiguous digits are compared as whole numbers.
-
-Natural sorting can be employed to return the highest version when multiple
-versions of the same library are found by :command:`find_package`.  For
-example suppose that the following libraries have been found:
-
-* libX-1.1.0
-* libX-1.2.9
-* libX-1.2.10
-
-By setting ``NATURAL`` order we can select the one with the highest
-version number ``libX-1.2.10``.
-
-.. code-block:: cmake
-
-  set(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL)
-  find_package(libX CONFIG)
-
-The sort direction can be controlled using the
-:variable:`CMAKE_FIND_PACKAGE_SORT_DIRECTION` variable
-(by default decrescent, e.g. lib-B will be tested before lib-A).
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH.rst
deleted file mode 100644
index 957e956..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH
--------------------------------------
-
-Controls the default behavior of the following commands for whether or not to
-search paths provided by cmake-specific environment variables:
-
-* :command:`find_program`
-* :command:`find_library`
-* :command:`find_file`
-* :command:`find_path`
-* :command:`find_package`
-
-This is useful in cross-compiling environments.
-
-By default this variable is not set, which is equivalent to it having
-a value of ``TRUE``.  Explicit options given to the above commands
-take precedence over this variable.
-
-See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
-:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
-:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
-:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`,
-:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
-and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_CMAKE_PATH.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_CMAKE_PATH.rst
deleted file mode 100644
index d2bdb09..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_CMAKE_PATH.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-CMAKE_FIND_USE_CMAKE_PATH
--------------------------
-
-Controls the default behavior of the following commands for whether or not to
-search paths provided by cmake-specific cache variables:
-
-* :command:`find_program`
-* :command:`find_library`
-* :command:`find_file`
-* :command:`find_path`
-* :command:`find_package`
-
-This is useful in cross-compiling environments.
-
-By default this variable is not set, which is equivalent to it having
-a value of ``TRUE``.  Explicit options given to the above commands
-take precedence over this variable.
-
-See also the :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
-:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
-:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
-:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`,
-:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
-and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_CMAKE_SYSTEM_PATH.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_CMAKE_SYSTEM_PATH.rst
deleted file mode 100644
index b99081d..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_CMAKE_SYSTEM_PATH.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-CMAKE_FIND_USE_CMAKE_SYSTEM_PATH
---------------------------------
-
-Controls the default behavior of the following commands for whether or not to
-search paths provided by platform-specific cmake variables:
-
-* :command:`find_program`
-* :command:`find_library`
-* :command:`find_file`
-* :command:`find_path`
-* :command:`find_package`
-
-This is useful in cross-compiling environments.
-
-By default this variable is not set, which is equivalent to it having
-a value of ``TRUE``.  Explicit options given to the above commands
-take precedence over this variable.
-
-See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
-:variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
-:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
-:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`,
-:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
-and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_PACKAGE_REGISTRY.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_PACKAGE_REGISTRY.rst
deleted file mode 100644
index 7c7ca36..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_PACKAGE_REGISTRY.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-CMAKE_FIND_USE_PACKAGE_REGISTRY
--------------------------------
-
-Controls the default behavior of the :command:`find_package` command for
-whether or not to search paths provided by the :ref:`User Package Registry`.
-
-By default this variable is not set and the behavior will fall back
-to that determined by the deprecated
-:variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` variable.  If that is
-also not set, then :command:`find_package` will use the
-:ref:`User Package Registry` unless the ``NO_CMAKE_PACKAGE_REGISTRY`` option
-is provided.
-
-This variable takes precedence over
-:variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` when both are set.
-
-In some cases, for example to locate only system wide installations, it
-is not desirable to use the :ref:`User Package Registry` when searching
-for packages.  If the :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`
-variable is ``FALSE``, all the :command:`find_package` commands will skip
-the :ref:`User Package Registry` as if they were called with the
-``NO_CMAKE_PACKAGE_REGISTRY`` argument.
-
-See also :ref:`Disabling the Package Registry` and the
-:variable:`CMAKE_FIND_USE_CMAKE_PATH`,
-:variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
-:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
-:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
-:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`,
-and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH.rst
deleted file mode 100644
index e7f5b0f..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-CMAKE_FIND_USE_PACKAGE_ROOT_PATH
---------------------------------
-
-Controls the default behavior of the following commands for whether or not to
-search paths provided by :variable:`<PackageName>_ROOT` variables:
-
-* :command:`find_program`
-* :command:`find_library`
-* :command:`find_file`
-* :command:`find_path`
-* :command:`find_package`
-
-By default this variable is not set, which is equivalent to it having
-a value of ``TRUE``.  Explicit options given to the above commands
-take precedence over this variable.
-
-See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
-:variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
-:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
-:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
-:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`,
-and :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variables.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH.rst
deleted file mode 100644
index fbaba5a..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH
---------------------------------------
-
-Controls the default behavior of the following commands for whether or not to
-search paths provided by standard system environment variables:
-
-* :command:`find_program`
-* :command:`find_library`
-* :command:`find_file`
-* :command:`find_path`
-* :command:`find_package`
-
-This is useful in cross-compiling environments.
-
-By default this variable is not set, which is equivalent to it having
-a value of ``TRUE``.  Explicit options given to the above commands
-take precedence over this variable.
-
-See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
-:variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
-:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
-:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
-:variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH`,
-and :variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY` variables.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY.rst b/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY.rst
deleted file mode 100644
index cb4eec5..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY.rst
+++ /dev/null
@@ -1,31 +0,0 @@
-CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY
---------------------------------------
-
-Controls searching the :ref:`System Package Registry` by the
-:command:`find_package` command.
-
-By default this variable is not set and the behavior will fall back
-to that determined by the deprecated
-:variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` variable.
-If that is also not set, then :command:`find_package()` will use the
-:ref:`System Package Registry` unless the ``NO_CMAKE_SYSTEM_PACKAGE_REGISTRY``
-option is provided.
-
-This variable takes precedence over
-:variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` when both are set.
-
-In some cases, for example to locate only user specific installations, it
-is not desirable to use the :ref:`System Package Registry` when searching
-for packages. If the ``CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY``
-variable is ``FALSE``, all the :command:`find_package` commands will skip
-the :ref:`System Package Registry` as if they were called with the
-``NO_CMAKE_SYSTEM_PACKAGE_REGISTRY`` argument.
-
-See also :ref:`Disabling the Package Registry`.
-
-See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
-:variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
-:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
-:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
-:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
-and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FOLDER.rst b/share/cmake-3.18/Help/variable/CMAKE_FOLDER.rst
deleted file mode 100644
index 50a2b88..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FOLDER.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_FOLDER
-------------
-
-Set the folder name. Use to organize targets in an IDE.
-
-This variable is used to initialize the :prop_tgt:`FOLDER` property on all the
-targets.  See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FRAMEWORK.rst b/share/cmake-3.18/Help/variable/CMAKE_FRAMEWORK.rst
deleted file mode 100644
index 591041c..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FRAMEWORK.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_FRAMEWORK
----------------
-
-Default value for :prop_tgt:`FRAMEWORK` of targets.
-
-This variable is used to initialize the :prop_tgt:`FRAMEWORK` property on
-all the targets.  See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst b/share/cmake-3.18/Help/variable/CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst
deleted file mode 100644
index 5c7cd23..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>
----------------------------------------------
-
-Default framework filename postfix under configuration ``<CONFIG>`` when
-using a multi-config generator.
-
-When a framework target is created its :prop_tgt:`FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>`
-target property is initialized with the value of this variable if it is set.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_Fortran_PREPROCESS.rst b/share/cmake-3.18/Help/variable/CMAKE_Fortran_PREPROCESS.rst
deleted file mode 100644
index 74b2d8b..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_Fortran_PREPROCESS.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_Fortran_PREPROCESS
-------------------------
-
-Default value for :prop_tgt:`Fortran_PREPROCESS` of targets.
-
-This variable is used to initialize the :prop_tgt:`Fortran_PREPROCESS`
-property on all the targets.  See that target property for additional
-information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_GENERATOR_INSTANCE.rst b/share/cmake-3.18/Help/variable/CMAKE_GENERATOR_INSTANCE.rst
deleted file mode 100644
index 3657ed4..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_GENERATOR_INSTANCE.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_GENERATOR_INSTANCE
-------------------------
-
-Generator-specific instance specification provided by user.
-
-Some CMake generators support selection of an instance of the native build
-system when multiple instances are available.  If the user specifies an
-instance (e.g. by setting this cache entry or via the
-:envvar:`CMAKE_GENERATOR_INSTANCE` environment variable), or after a default
-instance is chosen when a build tree is first configured, the value will be
-available in this variable.
-
-The value of this variable should never be modified by project code.
-A toolchain file specified by the :variable:`CMAKE_TOOLCHAIN_FILE`
-variable may initialize ``CMAKE_GENERATOR_INSTANCE`` as a cache entry.
-Once a given build tree has been initialized with a particular value
-for this variable, changing the value has undefined behavior.
-
-Instance specification is supported only on specific generators:
-
-* For the :generator:`Visual Studio 15 2017` generator (and above)
-  this specifies the absolute path to the VS installation directory
-  of the selected VS instance.
-
-See native build system documentation for allowed instance values.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_GENERATOR_PLATFORM.rst b/share/cmake-3.18/Help/variable/CMAKE_GENERATOR_PLATFORM.rst
deleted file mode 100644
index 2c115a3..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_GENERATOR_PLATFORM.rst
+++ /dev/null
@@ -1,31 +0,0 @@
-CMAKE_GENERATOR_PLATFORM
-------------------------
-
-Generator-specific target platform specification provided by user.
-
-Some CMake generators support a target platform name to be given
-to the native build system to choose a compiler toolchain.
-If the user specifies a platform name (e.g. via the :manual:`cmake(1)` ``-A``
-option or via the :envvar:`CMAKE_GENERATOR_PLATFORM` environment variable)
-the value will be available in this variable.
-
-The value of this variable should never be modified by project code.
-A toolchain file specified by the :variable:`CMAKE_TOOLCHAIN_FILE`
-variable may initialize ``CMAKE_GENERATOR_PLATFORM``.  Once a given
-build tree has been initialized with a particular value for this
-variable, changing the value has undefined behavior.
-
-Platform specification is supported only on specific generators:
-
-* For :ref:`Visual Studio Generators` with VS 2005 and above this
-  specifies the target architecture.
-
-* For :generator:`Green Hills MULTI` this specifies the target architecture.
-
-See native build system documentation for allowed platform names.
-
-Visual Studio Platform Selection
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-On :ref:`Visual Studio Generators` the selected platform name
-is provided in the :variable:`CMAKE_VS_PLATFORM_NAME` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_GENERATOR_TOOLSET.rst b/share/cmake-3.18/Help/variable/CMAKE_GENERATOR_TOOLSET.rst
deleted file mode 100644
index 53ad2f3..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_GENERATOR_TOOLSET.rst
+++ /dev/null
@@ -1,65 +0,0 @@
-CMAKE_GENERATOR_TOOLSET
------------------------
-
-Native build system toolset specification provided by user.
-
-Some CMake generators support a toolset specification to tell the
-native build system how to choose a compiler.  If the user specifies
-a toolset (e.g. via the :manual:`cmake(1)` ``-T`` option or via
-the :envvar:`CMAKE_GENERATOR_TOOLSET` environment variable) the value
-will be available in this variable.
-
-The value of this variable should never be modified by project code.
-A toolchain file specified by the :variable:`CMAKE_TOOLCHAIN_FILE`
-variable may initialize ``CMAKE_GENERATOR_TOOLSET``.  Once a given
-build tree has been initialized with a particular value for this
-variable, changing the value has undefined behavior.
-
-Toolset specification is supported only on specific generators:
-
-* :ref:`Visual Studio Generators` for VS 2010 and above
-* The :generator:`Xcode` generator for Xcode 3.0 and above
-* The :generator:`Green Hills MULTI` generator
-
-See native build system documentation for allowed toolset names.
-
-Visual Studio Toolset Selection
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The :ref:`Visual Studio Generators` support toolset specification
-using one of these forms:
-
-* ``toolset``
-* ``toolset[,key=value]*``
-* ``key=value[,key=value]*``
-
-The ``toolset`` specifies the toolset name.  The selected toolset name
-is provided in the :variable:`CMAKE_VS_PLATFORM_TOOLSET` variable.
-
-The ``key=value`` pairs form a comma-separated list of options to
-specify generator-specific details of the toolset selection.
-Supported pairs are:
-
-``cuda=<version>|<path>``
-  Specify the CUDA toolkit version to use or the path to a
-  standalone CUDA toolkit directory.  Supported by VS 2010
-  and above. The version can only be used with the CUDA
-  toolkit VS integration globally installed.
-  See the :variable:`CMAKE_VS_PLATFORM_TOOLSET_CUDA` and
-  :variable:`CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR` variables.
-
-``host=<arch>``
-  Specify the host tools architecture as ``x64`` or ``x86``.
-  Supported by VS 2013 and above.
-  See the :variable:`CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE`
-  variable.
-
-``version=<version>``
-  Specify the toolset version to use.  Supported by VS 2017
-  and above with the specified toolset installed.
-  See the :variable:`CMAKE_VS_PLATFORM_TOOLSET_VERSION` variable.
-
-``VCTargetsPath=<path>``
-  Specify an alternative ``VCTargetsPath`` value for Visual Studio
-  project files.  This allows use of VS platform extension configuration
-  files (``.props`` and ``.targets``) that are not installed with VS.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst b/share/cmake-3.18/Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst
deleted file mode 100644
index b6768a1..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_GHS_NO_SOURCE_GROUP_FILE
-------------------------------
-
-``ON`` / ``OFF`` boolean to control if the project file for a target should
-be one single file or multiple files.  Refer to
-:prop_tgt:`GHS_NO_SOURCE_GROUP_FILE` for further details.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET.rst b/share/cmake-3.18/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET.rst
deleted file mode 100644
index 8587742..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-CMAKE_GLOBAL_AUTOGEN_TARGET
----------------------------
-
-Switch to enable generation of a global ``autogen`` target.
-
-When :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET` is enabled, a custom target
-``autogen`` is generated.  This target depends on all :prop_tgt:`AUTOMOC` and
-:prop_tgt:`AUTOUIC` generated ``<ORIGIN>_autogen`` targets in the project.
-By building the global ``autogen`` target, all :prop_tgt:`AUTOMOC` and
-:prop_tgt:`AUTOUIC` files in the project will be generated.
-
-The name of the global ``autogen`` target can be changed by setting
-:variable:`CMAKE_GLOBAL_AUTOGEN_TARGET_NAME`.
-
-By default :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET` is unset.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
-
-Note
-^^^^
-
-``<ORIGIN>_autogen`` targets by default inherit their origin target's
-dependencies.  This might result in unintended dependency target
-builds when only ``<ORIGIN>_autogen`` targets are built.  A solution is to
-disable :prop_tgt:`AUTOGEN_ORIGIN_DEPENDS` on the respective origin targets.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET_NAME.rst b/share/cmake-3.18/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET_NAME.rst
deleted file mode 100644
index c86a5d0..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET_NAME.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-CMAKE_GLOBAL_AUTOGEN_TARGET_NAME
---------------------------------
-
-Change the name of the global ``autogen`` target.
-
-When :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET` is enabled, a global custom target
-named ``autogen`` is created.  :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET_NAME`
-allows to set a different name for that target.
-
-By default :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET_NAME` is unset.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET.rst b/share/cmake-3.18/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET.rst
deleted file mode 100644
index f92128c..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-CMAKE_GLOBAL_AUTORCC_TARGET
----------------------------
-
-Switch to enable generation of a global ``autorcc`` target.
-
-When :variable:`CMAKE_GLOBAL_AUTORCC_TARGET` is enabled, a custom target
-``autorcc`` is generated. This target depends on all :prop_tgt:`AUTORCC`
-generated ``<ORIGIN>_arcc_<QRC>`` targets in the project.
-By building the global ``autorcc`` target, all :prop_tgt:`AUTORCC`
-files in the project will be generated.
-
-The name of the global ``autorcc`` target can be changed by setting
-:variable:`CMAKE_GLOBAL_AUTORCC_TARGET_NAME`.
-
-By default :variable:`CMAKE_GLOBAL_AUTORCC_TARGET` is unset.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET_NAME.rst b/share/cmake-3.18/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET_NAME.rst
deleted file mode 100644
index c6e05de..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET_NAME.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-CMAKE_GLOBAL_AUTORCC_TARGET_NAME
---------------------------------
-
-Change the name of the global ``autorcc`` target.
-
-When :variable:`CMAKE_GLOBAL_AUTORCC_TARGET` is enabled, a global custom target
-named ``autorcc`` is created.  :variable:`CMAKE_GLOBAL_AUTORCC_TARGET_NAME`
-allows to set a different name for that target.
-
-By default :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET_NAME` is unset.
-
-See the :manual:`cmake-qt(7)` manual for more information on using CMake
-with Qt.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_HOST_SOLARIS.rst b/share/cmake-3.18/Help/variable/CMAKE_HOST_SOLARIS.rst
deleted file mode 100644
index 82b5d69..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_HOST_SOLARIS.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_HOST_SOLARIS
-------------------
-
-``True`` for Oracle Solaris operating systems.
-
-Set to ``true`` when the host system is Oracle Solaris.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_HOST_SYSTEM_PROCESSOR.rst b/share/cmake-3.18/Help/variable/CMAKE_HOST_SYSTEM_PROCESSOR.rst
deleted file mode 100644
index 5f08728..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_HOST_SYSTEM_PROCESSOR.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-CMAKE_HOST_SYSTEM_PROCESSOR
----------------------------
-
-The name of the CPU CMake is running on.
-
-On Windows, this variable is set to the value of the environment variable
-``PROCESSOR_ARCHITECTURE``. On systems that support ``uname``, this variable is
-set to the output of:
-
-- ``uname -m`` on GNU, Linux, Cygwin, Darwin, Android, or
-- ``arch`` on OpenBSD, or
-- on other systems,
-
-  * ``uname -p`` if its exit code is nonzero, or
-  * ``uname -m`` otherwise.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst b/share/cmake-3.18/Help/variable/CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst
deleted file mode 100644
index f994fbe..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
--------------------------------------------
-
-Default permissions for directories created implicitly during installation
-of files by :command:`install` and :command:`file(INSTALL)`.
-
-If ``make install`` is invoked and directories are implicitly created they
-get permissions set by :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS`
-variable or platform specific default permissions if the variable is not set.
-
-Implicitly created directories are created if they are not explicitly installed
-by :command:`install` command but are needed to install a file on a certain
-path. Example of such locations are directories created due to the setting of
-:variable:`CMAKE_INSTALL_PREFIX`.
-
-Expected content of the :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS`
-variable is a list of permissions that can be used by :command:`install` command
-`PERMISSIONS` section.
-
-Example usage:
-
-::
-
- set(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
-      OWNER_READ
-      OWNER_WRITE
-      OWNER_EXECUTE
-      GROUP_READ
-    )
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INSTALL_MESSAGE.rst b/share/cmake-3.18/Help/variable/CMAKE_INSTALL_MESSAGE.rst
deleted file mode 100644
index 304df26..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_INSTALL_MESSAGE.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-CMAKE_INSTALL_MESSAGE
----------------------
-
-Specify verbosity of installation script code generated by the
-:command:`install` command (using the :command:`file(INSTALL)` command).
-For paths that are newly installed or updated, installation
-may print lines like::
-
-  -- Installing: /some/destination/path
-
-For paths that are already up to date, installation may print
-lines like::
-
-  -- Up-to-date: /some/destination/path
-
-The ``CMAKE_INSTALL_MESSAGE`` variable may be set to control
-which messages are printed:
-
-``ALWAYS``
-  Print both ``Installing`` and ``Up-to-date`` messages.
-
-``LAZY``
-  Print ``Installing`` but not ``Up-to-date`` messages.
-
-``NEVER``
-  Print neither ``Installing`` nor ``Up-to-date`` messages.
-
-Other values have undefined behavior and may not be diagnosed.
-
-If this variable is not set, the default behavior is ``ALWAYS``.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INSTALL_NAME_DIR.rst b/share/cmake-3.18/Help/variable/CMAKE_INSTALL_NAME_DIR.rst
deleted file mode 100644
index 5ba4c04..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_INSTALL_NAME_DIR.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_INSTALL_NAME_DIR
-----------------------
-
-macOS directory name for installed targets.
-
-``CMAKE_INSTALL_NAME_DIR`` is used to initialize the
-:prop_tgt:`INSTALL_NAME_DIR` property on all targets.  See that target
-property for more information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.rst b/share/cmake-3.18/Help/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.rst
deleted file mode 100644
index 2a5842d..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT
--------------------------------------------
-
-CMake sets this variable to a ``TRUE`` value when the
-:variable:`CMAKE_INSTALL_PREFIX` has just been initialized to
-its default value, typically on the first run of CMake within
-a new build tree.  This can be used by project code to change
-the default without overriding a user-provided value:
-
-.. code-block:: cmake
-
-  if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
-    set(CMAKE_INSTALL_PREFIX "/my/default" CACHE PATH "..." FORCE)
-  endif()
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH.rst b/share/cmake-3.18/Help/variable/CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH.rst
deleted file mode 100644
index 76ca3da..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH
---------------------------------------
-
-Sets the default for whether toolchain-defined rpaths should be removed during
-installation.
-
-``CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH`` is a boolean that provides the
-default value for the :prop_tgt:`INSTALL_REMOVE_ENVIRONMENT_RPATH` property
-of all subsequently created targets.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION.rst b/share/cmake-3.18/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION.rst
deleted file mode 100644
index b0cbb62..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_INTERPROCEDURAL_OPTIMIZATION
-----------------------------------
-
-Default value for :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` of targets.
-
-This variable is used to initialize the :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION`
-property on all the targets.  See that target property for additional
-information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst b/share/cmake-3.18/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
deleted file mode 100644
index b291102..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
--------------------------------------------
-
-Default value for :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION_<CONFIG>` of targets.
-
-This variable is used to initialize the :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION_<CONFIG>`
-property on all the targets.  See that target property for additional
-information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_IOS_INSTALL_COMBINED.rst b/share/cmake-3.18/Help/variable/CMAKE_IOS_INSTALL_COMBINED.rst
deleted file mode 100644
index c5cb9b6..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_IOS_INSTALL_COMBINED.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_IOS_INSTALL_COMBINED
---------------------------
-
-Default value for :prop_tgt:`IOS_INSTALL_COMBINED` of targets.
-
-This variable is used to initialize the :prop_tgt:`IOS_INSTALL_COMBINED`
-property on all the targets.  See that target property for additional
-information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_JOB_POOLS.rst b/share/cmake-3.18/Help/variable/CMAKE_JOB_POOLS.rst
deleted file mode 100644
index 72b50b4..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_JOB_POOLS.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_JOB_POOLS
----------------
-
-If the :prop_gbl:`JOB_POOLS` global property is not set, the value
-of this variable is used in its place.  See :prop_gbl:`JOB_POOLS`
-for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_JOB_POOL_PRECOMPILE_HEADER.rst b/share/cmake-3.18/Help/variable/CMAKE_JOB_POOL_PRECOMPILE_HEADER.rst
deleted file mode 100644
index f9467b3..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_JOB_POOL_PRECOMPILE_HEADER.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_JOB_POOL_PRECOMPILE_HEADER
---------------------------------
-
-This variable is used to initialize the :prop_tgt:`JOB_POOL_PRECOMPILE_HEADER`
-property on all the targets. See :prop_tgt:`JOB_POOL_PRECOMPILE_HEADER`
-for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE.rst
deleted file mode 100644
index d336364..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE
---------------------------------------
-
-When :ref:`Cross Compiling for Android` this variable contains the
-toolchain binutils machine name (e.g. ``gcc -dumpmachine``).  The
-binutils typically have a ``<machine>-`` prefix on their name.
-
-See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`
-and :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst
deleted file mode 100644
index db04af3..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX
--------------------------------------
-
-When :ref:`Cross Compiling for Android` this variable contains the absolute
-path prefixing the toolchain GNU compiler and its binutils.
-
-See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`
-and :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE`.
-
-For example, the path to the linker is::
-
-  ${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}ld${CMAKE_CXX_ANDROID_TOOLCHAIN_SUFFIX}
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst
deleted file mode 100644
index 159eb22..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX
--------------------------------------
-
-When :ref:`Cross Compiling for Android` this variable contains the
-host platform suffix of the toolchain GNU compiler and its binutils.
-
-See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`
-and :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_CLANG_TIDY.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_CLANG_TIDY.rst
deleted file mode 100644
index bd49de3..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_CLANG_TIDY.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-CMAKE_<LANG>_CLANG_TIDY
------------------------
-
-Default value for :prop_tgt:`<LANG>_CLANG_TIDY` target property
-when ``<LANG>`` is ``C`` or ``CXX``.
-
-This variable is used to initialize the property on each target as it is
-created.  For example:
-
-.. code-block:: cmake
-
-  set(CMAKE_CXX_CLANG_TIDY clang-tidy -checks=-*,readability-*)
-  add_executable(foo foo.cxx)
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER.rst
deleted file mode 100644
index 89df495..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_<LANG>_COMPILER
----------------------
-
-The full path to the compiler for ``LANG``.
-
-This is the command that will be used as the ``<LANG>`` compiler.  Once
-set, you can not change this variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_AR.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_AR.rst
deleted file mode 100644
index b83a1d4..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_AR.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_<LANG>_COMPILER_AR
-------------------------
-
-A wrapper around ``ar`` adding the appropriate ``--plugin`` option for the
-compiler.
-
-See also :variable:`CMAKE_AR`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst
deleted file mode 100644
index 054c648..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID
--------------------------------------
-
-An internal variable subject to change.
-
-This is used to identify the variant of a compiler based on its target
-architecture.  For some compilers this is needed to determine the correct
-usage.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_ID.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_ID.rst
deleted file mode 100644
index 8eb4fb6..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_ID.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-CMAKE_<LANG>_COMPILER_ID
-------------------------
-
-Compiler identification string.
-
-A short string unique to the compiler vendor.  Possible values
-include:
-
-::
-
-  Absoft = Absoft Fortran (absoft.com)
-  ADSP = Analog VisualDSP++ (analog.com)
-  AppleClang = Apple Clang (apple.com)
-  ARMCC = ARM Compiler (arm.com)
-  ARMClang = ARM Compiler based on Clang (arm.com)
-  Bruce = Bruce C Compiler
-  CCur = Concurrent Fortran (ccur.com)
-  Clang = LLVM Clang (clang.llvm.org)
-  Cray = Cray Compiler (cray.com)
-  Embarcadero, Borland = Embarcadero (embarcadero.com)
-  Flang = Flang LLVM Fortran Compiler
-  G95 = G95 Fortran (g95.org)
-  GNU = GNU Compiler Collection (gcc.gnu.org)
-  GHS = Green Hills Software (www.ghs.com)
-  HP = Hewlett-Packard Compiler (hp.com)
-  IAR = IAR Systems (iar.com)
-  Intel = Intel Compiler (intel.com)
-  MSVC = Microsoft Visual Studio (microsoft.com)
-  NVIDIA = NVIDIA CUDA Compiler (nvidia.com)
-  OpenWatcom = Open Watcom (openwatcom.org)
-  PGI = The Portland Group (pgroup.com)
-  PathScale = PathScale (pathscale.com)
-  SDCC = Small Device C Compiler (sdcc.sourceforge.net)
-  SunPro = Oracle Solaris Studio (oracle.com)
-  TI = Texas Instruments (ti.com)
-  TinyCC = Tiny C Compiler (tinycc.org)
-  XL, VisualAge, zOS = IBM XL (ibm.com)
-  XLClang = IBM Clang-based XL (ibm.com)
-
-This variable is not guaranteed to be defined for all compilers or
-languages.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst
deleted file mode 100644
index c76e2d0..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_<LANG>_COMPILER_LAUNCHER
-------------------------------
-
-Default value for :prop_tgt:`<LANG>_COMPILER_LAUNCHER` target property.
-This variable is used to initialize the property on each target as it is
-created.  This is done only when ``<LANG>`` is ``C``, ``CXX``, ``Fortran``,
-``OBJC``, ``OBJCXX``, or ``CUDA``.
-
-This variable is initialized to the :envvar:`CMAKE_<LANG>_COMPILER_LAUNCHER`
-environment variable if it is set.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_PREDEFINES_COMMAND.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_PREDEFINES_COMMAND.rst
deleted file mode 100644
index e050f43..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_PREDEFINES_COMMAND.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND
-----------------------------------------
-
-Command that outputs the compiler pre definitions.
-
-See :prop_tgt:`AUTOMOC` which uses
-:variable:`CMAKE_CXX_COMPILER_PREDEFINES_COMMAND <CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND>`
-to generate the :prop_tgt:`AUTOMOC_COMPILER_PREDEFINES`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_RANLIB.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_RANLIB.rst
deleted file mode 100644
index 945160b..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_RANLIB.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_<LANG>_COMPILER_RANLIB
-----------------------------
-
-A wrapper around ``ranlib`` adding the appropriate ``--plugin`` option for the
-compiler.
-
-See also :variable:`CMAKE_RANLIB`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_VERSION_INTERNAL.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_VERSION_INTERNAL.rst
deleted file mode 100644
index c3cd980..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_VERSION_INTERNAL.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_<LANG>_COMPILER_VERSION_INTERNAL
---------------------------------------
-
-An internal variable subject to change.
-
-This is used to identify the variant of a compiler based on an internal
-version number.  For some compilers this is needed to determine the
-correct usage.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_CPPCHECK.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_CPPCHECK.rst
deleted file mode 100644
index 50b478f..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_CPPCHECK.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_<LANG>_CPPCHECK
----------------------
-
-Default value for :prop_tgt:`<LANG>_CPPCHECK` target property. This variable
-is used to initialize the property on each target as it is created.  This
-is done only when ``<LANG>`` is ``C`` or ``CXX``.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_CPPLINT.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_CPPLINT.rst
deleted file mode 100644
index 3b6f452..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_CPPLINT.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_<LANG>_CPPLINT
---------------------
-
-Default value for :prop_tgt:`<LANG>_CPPLINT` target property. This variable
-is used to initialize the property on each target as it is created.  This
-is done only when ``<LANG>`` is ``C`` or ``CXX``.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS.rst
deleted file mode 100644
index 14b2694..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-CMAKE_<LANG>_FLAGS
-------------------
-
-Flags for all build types.
-
-``<LANG>`` flags used regardless of the value of :variable:`CMAKE_BUILD_TYPE`.
-
-This is initialized for each language from environment variables:
-
-* ``CMAKE_C_FLAGS``:
-  Initialized by the :envvar:`CFLAGS` environment variable.
-* ``CMAKE_CXX_FLAGS``:
-  Initialized by the :envvar:`CXXFLAGS` environment variable.
-* ``CMAKE_CUDA_FLAGS``:
-  Initialized by the :envvar:`CUDAFLAGS` environment variable.
-* ``CMAKE_Fortran_FLAGS``:
-  Initialized by the :envvar:`FFLAGS` environment variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_CONFIG.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_CONFIG.rst
deleted file mode 100644
index 1dbd036..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_CONFIG.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-CMAKE_<LANG>_FLAGS_<CONFIG>
----------------------------
-
-Flags for language ``<LANG>`` when building for the ``<CONFIG>`` configuration.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_CONFIG_INIT.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_CONFIG_INIT.rst
deleted file mode 100644
index 1eb5b3f..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_CONFIG_INIT.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_<LANG>_FLAGS_<CONFIG>_INIT
---------------------------------
-
-Value used to initialize the :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>` cache
-entry the first time a build tree is configured for language ``<LANG>``.
-This variable is meant to be set by a :variable:`toolchain file
-<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
-the value based on the environment and target platform.
-
-See also :variable:`CMAKE_<LANG>_FLAGS_INIT`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_DEBUG_INIT.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_DEBUG_INIT.rst
deleted file mode 100644
index de7fcfc..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_DEBUG_INIT.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_<LANG>_FLAGS_DEBUG_INIT
------------------------------
-
-This variable is the ``Debug`` variant of the
-:variable:`CMAKE_<LANG>_FLAGS_<CONFIG>_INIT` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_INIT.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_INIT.rst
deleted file mode 100644
index 4a034e8..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_INIT.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-CMAKE_<LANG>_FLAGS_INIT
------------------------
-
-Value used to initialize the :variable:`CMAKE_<LANG>_FLAGS` cache entry
-the first time a build tree is configured for language ``<LANG>``.
-This variable is meant to be set by a :variable:`toolchain file
-<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
-the value based on the environment and target platform.  For example,
-the contents of a ``xxxFLAGS`` environment variable will be prepended,
-where ``xxx`` will be language-specific but not necessarily the same as
-``<LANG>`` (e.g. :envvar:`CXXFLAGS` for ``CXX``, :envvar:`FFLAGS` for
-``Fortran``, and so on).
-
-See also the configuration-specific
-:variable:`CMAKE_<LANG>_FLAGS_<CONFIG>_INIT` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL_INIT.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL_INIT.rst
deleted file mode 100644
index 1e7003c..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL_INIT.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_<LANG>_FLAGS_MINSIZEREL_INIT
-----------------------------------
-
-This variable is the ``MinSizeRel`` variant of the
-:variable:`CMAKE_<LANG>_FLAGS_<CONFIG>_INIT` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_RELEASE_INIT.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_RELEASE_INIT.rst
deleted file mode 100644
index e7c73fe..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_RELEASE_INIT.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_<LANG>_FLAGS_RELEASE_INIT
--------------------------------
-
-This variable is the ``Release`` variant of the
-:variable:`CMAKE_<LANG>_FLAGS_<CONFIG>_INIT` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT.rst
deleted file mode 100644
index 3ab3975..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_<LANG>_FLAGS_RELWITHDEBINFO_INIT
---------------------------------------
-
-This variable is the ``RelWithDebInfo`` variant of the
-:variable:`CMAKE_<LANG>_FLAGS_<CONFIG>_INIT` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst
deleted file mode 100644
index e9e04be..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES
---------------------------------------
-
-Implicit linker search path detected for language ``<LANG>``.
-
-Compilers typically pass directories containing language runtime
-libraries and default library search paths when they invoke a linker.
-These paths are implicit linker search directories for the compiler's
-language.  CMake automatically detects these directories for each
-language and reports the results in this variable.
-
-Some toolchains read implicit directories from an environment variable such as
-``LIBRARY_PATH``.  If using such an environment variable, keep its value
-consistent when operating in a given build tree because CMake saves the value
-detected when first creating a build tree.
-
-If policy :policy:`CMP0060` is not set to ``NEW``, then when a library in one
-of these directories is given by full path to :command:`target_link_libraries`
-CMake will generate the ``-l<name>`` form on link lines for historical
-purposes.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_IMPLICIT_LINK_LIBRARIES.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_IMPLICIT_LINK_LIBRARIES.rst
deleted file mode 100644
index ec16477..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_IMPLICIT_LINK_LIBRARIES.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES
-------------------------------------
-
-Implicit link libraries and flags detected for language ``<LANG>``.
-
-Compilers typically pass language runtime library names and other
-flags when they invoke a linker.  These flags are implicit link
-options for the compiler's language.  CMake automatically detects
-these libraries and flags for each language and reports the results in
-this variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst
deleted file mode 100644
index 2c8028a..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE
----------------------------------
-
-Default value for :prop_tgt:`<LANG>_INCLUDE_WHAT_YOU_USE` target property.
-This variable is used to initialize the property on each target as it is
-created.  This is done only when ``<LANG>`` is ``C`` or ``CXX``.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG.rst
deleted file mode 100644
index df51407..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG.rst
+++ /dev/null
@@ -1,39 +0,0 @@
-CMAKE_<LANG>_LINKER_WRAPPER_FLAG
---------------------------------
-
-Defines the syntax of compiler driver option to pass options to the linker
-tool. It will be used to translate the ``LINKER:`` prefix in the link options
-(see :command:`add_link_options` and :command:`target_link_options`).
-
-This variable holds a :ref:`semicolon-separated list <CMake Language Lists>` of tokens.
-If a space (i.e. " ") is specified as last token, flag and ``LINKER:``
-arguments will be specified as separate arguments to the compiler driver.
-The :variable:`CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP` variable can be specified
-to manage concatenation of arguments.
-
-For example, for ``Clang`` we have:
-
-.. code-block:: cmake
-
-  set (CMAKE_C_LINKER_WRAPPER_FLAG "-Xlinker" " ")
-
-Specifying ``"LINKER:-z,defs"`` will be transformed in
-``-Xlinker -z -Xlinker defs``.
-
-For ``GNU GCC``:
-
-.. code-block:: cmake
-
-  set (CMAKE_C_LINKER_WRAPPER_FLAG "-Wl,")
-  set (CMAKE_C_LINKER_WRAPPER_FLAG_SEP ",")
-
-Specifying ``"LINKER:-z,defs"`` will be transformed in ``-Wl,-z,defs``.
-
-And for ``SunPro``:
-
-.. code-block:: cmake
-
-  set (CMAKE_C_LINKER_WRAPPER_FLAG "-Qoption" "ld" " ")
-  set (CMAKE_C_LINKER_WRAPPER_FLAG_SEP ",")
-
-Specifying ``"LINKER:-z,defs"`` will be transformed in ``-Qoption ld -z,defs``.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG_SEP.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG_SEP.rst
deleted file mode 100644
index faf1481..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG_SEP.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP
-------------------------------------
-
-This variable is used with :variable:`CMAKE_<LANG>_LINKER_WRAPPER_FLAG`
-variable to format ``LINKER:`` prefix in the link options
-(see :command:`add_link_options` and :command:`target_link_options`).
-
-When specified, arguments of the ``LINKER:`` prefix will be concatenated using
-this value as separator.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_LINK_LIBRARY_FILE_FLAG.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_LINK_LIBRARY_FILE_FLAG.rst
deleted file mode 100644
index d54f080..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_LINK_LIBRARY_FILE_FLAG.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_<LANG>_LINK_LIBRARY_FILE_FLAG
------------------------------------
-
-Language-specific flag to be used to link a library specified by
-a path to its file.
-
-The flag will be used before a library file path is given to the
-linker.  This is needed only on very few platforms.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_LINK_LIBRARY_FLAG.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_LINK_LIBRARY_FLAG.rst
deleted file mode 100644
index d7bb0d8..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_LINK_LIBRARY_FLAG.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_<LANG>_LINK_LIBRARY_FLAG
-------------------------------
-
-Flag to be used to link a library into a shared library or executable.
-
-This flag will be used to specify a library to link to a shared library or an
-executable for the specific language.  On most compilers this is ``-l``.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_LINK_LIBRARY_SUFFIX.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_LINK_LIBRARY_SUFFIX.rst
deleted file mode 100644
index a378657..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_LINK_LIBRARY_SUFFIX.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_<LANG>_LINK_LIBRARY_SUFFIX
---------------------------------
-
-Language-specific suffix for libraries that you link to.
-
-The suffix to use for the end of a library filename, ``.lib`` on Windows.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_SIMULATE_ID.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_SIMULATE_ID.rst
deleted file mode 100644
index 15c87a1..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_SIMULATE_ID.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_<LANG>_SIMULATE_ID
-------------------------
-
-Identification string of "simulated" compiler.
-
-Some compilers simulate other compilers to serve as drop-in
-replacements.  When CMake detects such a compiler it sets this
-variable to what would have been the :variable:`CMAKE_<LANG>_COMPILER_ID` for
-the simulated compiler.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES.rst
deleted file mode 100644
index c8e3d57..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES
------------------------------------------
-
-Include directories to be used for every source file compiled with
-the ``<LANG>`` compiler.  This is meant for specification of system
-include directories needed by the language for the current platform.
-The directories always appear at the end of the include path passed
-to the compiler.
-
-This variable should not be set by project code.  It is meant to be set by
-CMake's platform information modules for the current toolchain, or by a
-toolchain file when used with :variable:`CMAKE_TOOLCHAIN_FILE`.
-
-See also :variable:`CMAKE_<LANG>_STANDARD_LIBRARIES`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_STANDARD_LIBRARIES.rst b/share/cmake-3.18/Help/variable/CMAKE_LANG_STANDARD_LIBRARIES.rst
deleted file mode 100644
index ba6df93..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LANG_STANDARD_LIBRARIES.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_<LANG>_STANDARD_LIBRARIES
--------------------------------
-
-Libraries linked into every executable and shared library linked
-for language ``<LANG>``.  This is meant for specification of system
-libraries needed by the language for the current platform.
-
-This variable should not be set by project code.  It is meant to be set by
-CMake's platform information modules for the current toolchain, or by a
-toolchain file when used with :variable:`CMAKE_TOOLCHAIN_FILE`.
-
-See also :variable:`CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.18/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst
deleted file mode 100644
index e069cdd..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_LIBRARY_OUTPUT_DIRECTORY_<CONFIG>
----------------------------------------
-
-Where to put all the :ref:`LIBRARY <Library Output Artifacts>`
-target files when built for a specific configuration.
-
-This variable is used to initialize the
-:prop_tgt:`LIBRARY_OUTPUT_DIRECTORY_<CONFIG>` property on all the targets.
-See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LINK_DIRECTORIES_BEFORE.rst b/share/cmake-3.18/Help/variable/CMAKE_LINK_DIRECTORIES_BEFORE.rst
deleted file mode 100644
index 026ca35..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LINK_DIRECTORIES_BEFORE.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_LINK_DIRECTORIES_BEFORE
------------------------------
-
-Whether to append or prepend directories by default in
-:command:`link_directories`.
-
-This variable affects the default behavior of the :command:`link_directories`
-command.  Setting this variable to ``ON`` is equivalent to using the ``BEFORE``
-option in all uses of that command.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LINK_SEARCH_END_STATIC.rst b/share/cmake-3.18/Help/variable/CMAKE_LINK_SEARCH_END_STATIC.rst
deleted file mode 100644
index 54cdaaa..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LINK_SEARCH_END_STATIC.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-CMAKE_LINK_SEARCH_END_STATIC
-----------------------------
-
-End a link line such that static system libraries are used.
-
-Some linkers support switches such as ``-Bstatic`` and ``-Bdynamic`` to
-determine whether to use static or shared libraries for ``-lXXX`` options.
-CMake uses these options to set the link type for libraries whose full
-paths are not known or (in some cases) are in implicit link
-directories for the platform.  By default CMake adds an option at the
-end of the library list (if necessary) to set the linker search type
-back to its starting type.  This property switches the final linker
-search type to ``-Bstatic`` regardless of how it started.
-
-This variable is used to initialize the target property
-:prop_tgt:`LINK_SEARCH_END_STATIC` for all targets. If set, it's
-value is also used by the :command:`try_compile` command.
-
-See also :variable:`CMAKE_LINK_SEARCH_START_STATIC`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LINK_SEARCH_START_STATIC.rst b/share/cmake-3.18/Help/variable/CMAKE_LINK_SEARCH_START_STATIC.rst
deleted file mode 100644
index 0d52a31..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LINK_SEARCH_START_STATIC.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-CMAKE_LINK_SEARCH_START_STATIC
-------------------------------
-
-Assume the linker looks for static libraries by default.
-
-Some linkers support switches such as ``-Bstatic`` and ``-Bdynamic`` to
-determine whether to use static or shared libraries for ``-lXXX`` options.
-CMake uses these options to set the link type for libraries whose full
-paths are not known or (in some cases) are in implicit link
-directories for the platform.  By default the linker search type is
-assumed to be ``-Bdynamic`` at the beginning of the library list.  This
-property switches the assumption to ``-Bstatic``.  It is intended for use
-when linking an executable statically (e.g.  with the GNU ``-static``
-option).
-
-This variable is used to initialize the target property
-:prop_tgt:`LINK_SEARCH_START_STATIC` for all targets.  If set, it's
-value is also used by the :command:`try_compile` command.
-
-See also :variable:`CMAKE_LINK_SEARCH_END_STATIC`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LINK_WHAT_YOU_USE.rst b/share/cmake-3.18/Help/variable/CMAKE_LINK_WHAT_YOU_USE.rst
deleted file mode 100644
index 90c4d3f..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_LINK_WHAT_YOU_USE.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_LINK_WHAT_YOU_USE
----------------------------------
-
-Default value for :prop_tgt:`LINK_WHAT_YOU_USE` target property.
-This variable is used to initialize the property on each target as it is
-created.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MATCH_COUNT.rst b/share/cmake-3.18/Help/variable/CMAKE_MATCH_COUNT.rst
deleted file mode 100644
index 355e834..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_MATCH_COUNT.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_MATCH_COUNT
------------------
-
-The number of matches with the last regular expression.
-
-When a regular expression match is used, CMake fills in
-:variable:`CMAKE_MATCH_<n>` variables with the match contents.
-The ``CMAKE_MATCH_COUNT`` variable holds the number of match
-expressions when these are filled.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MATCH_n.rst b/share/cmake-3.18/Help/variable/CMAKE_MATCH_n.rst
deleted file mode 100644
index c7dd623..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_MATCH_n.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_MATCH_<n>
----------------
-
-Capture group ``<n>`` matched by the last regular expression, for groups
-0 through 9.  Group 0 is the entire match.  Groups 1 through 9 are the
-subexpressions captured by ``()`` syntax.
-
-When a regular expression match is used, CMake fills in ``CMAKE_MATCH_<n>``
-variables with the match contents.  The :variable:`CMAKE_MATCH_COUNT`
-variable holds the number of match expressions when these are filled.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MAXIMUM_RECURSION_DEPTH.rst b/share/cmake-3.18/Help/variable/CMAKE_MAXIMUM_RECURSION_DEPTH.rst
deleted file mode 100644
index 7110b16..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_MAXIMUM_RECURSION_DEPTH.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-CMAKE_MAXIMUM_RECURSION_DEPTH
------------------------------
-
-Maximum recursion depth for CMake scripts. It is intended to be set on the
-command line with ``-DCMAKE_MAXIMUM_RECURSION_DEPTH=<x>``, or within
-``CMakeLists.txt`` by projects that require a large recursion depth. Projects
-that set this variable should provide the user with a way to override it. For
-example:
-
-.. code-block:: cmake
-
-  # About to perform deeply recursive actions
-  if(NOT CMAKE_MAXIMUM_RECURSION_DEPTH)
-    set(CMAKE_MAXIMUM_RECURSION_DEPTH 2000)
-  endif()
-
-If it is not set, or is set to a non-integer value, a sensible default limit is
-used. If the recursion limit is reached, the script terminates immediately with
-a fatal error.
-
-Calling any of the following commands increases the recursion depth:
-
-* :command:`include`
-* :command:`find_package`
-* :command:`add_subdirectory`
-* :command:`try_compile`
-* :command:`ctest_read_custom_files`
-* :command:`ctest_run_script` (unless ``NEW_PROCESS`` is specified)
-* User-defined :command:`function`'s and :command:`macro`'s (note that
-  :command:`function` and :command:`macro` themselves don't increase recursion
-  depth)
-* Reading or writing variables that are being watched by a
-  :command:`variable_watch`
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MESSAGE_CONTEXT.rst b/share/cmake-3.18/Help/variable/CMAKE_MESSAGE_CONTEXT.rst
deleted file mode 100644
index 6b4ca40..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_MESSAGE_CONTEXT.rst
+++ /dev/null
@@ -1,62 +0,0 @@
-CMAKE_MESSAGE_CONTEXT
----------------------
-
-When enabled by the :manual:`cmake <cmake(1)>` ``--log-context`` command line
-option or the :variable:`CMAKE_MESSAGE_CONTEXT_SHOW` variable, the
-:command:`message` command converts the ``CMAKE_MESSAGE_CONTEXT`` list into a
-dot-separated string surrounded by square brackets and prepends it to each line
-for messages of log levels ``NOTICE`` and below.
-
-For logging contexts to work effectively, projects should generally
-``APPEND`` and ``POP_BACK`` an item to the current value of
-``CMAKE_MESSAGE_CONTEXT`` rather than replace it.
-Projects should not assume the message context at the top of the source tree
-is empty, as there are scenarios where the context might have already been set
-(e.g. hierarchical projects).
-
-.. warning::
-
-  Valid context names are restricted to anything that could be used
-  as a CMake variable name.  All names that begin with an underscore
-  or the string ``cmake_`` are also reserved for use by CMake and
-  should not be used by projects.
-
-Example:
-
-.. code-block:: cmake
-
-  function(bar)
-    list(APPEND CMAKE_MESSAGE_CONTEXT "bar")
-    message(VERBOSE "bar VERBOSE message")
-  endfunction()
-
-  function(baz)
-    list(APPEND CMAKE_MESSAGE_CONTEXT "baz")
-    message(DEBUG "baz DEBUG message")
-  endfunction()
-
-  function(foo)
-    list(APPEND CMAKE_MESSAGE_CONTEXT "foo")
-    bar()
-    message(TRACE "foo TRACE message")
-    baz()
-  endfunction()
-
-  list(APPEND CMAKE_MESSAGE_CONTEXT "top")
-
-  message(VERBOSE "Before `foo`")
-  foo()
-  message(VERBOSE "After `foo`")
-
-  list(POP_BACK CMAKE_MESSAGE_CONTEXT)
-
-
-Which results in the following output:
-
-.. code-block:: none
-
-  -- [top] Before `foo`
-  -- [top.foo.bar] bar VERBOSE message
-  -- [top.foo] foo TRACE message
-  -- [top.foo.baz] baz DEBUG message
-  -- [top] After `foo`
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MESSAGE_CONTEXT_SHOW.rst b/share/cmake-3.18/Help/variable/CMAKE_MESSAGE_CONTEXT_SHOW.rst
deleted file mode 100644
index 7ec218e..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_MESSAGE_CONTEXT_SHOW.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-CMAKE_MESSAGE_CONTEXT_SHOW
---------------------------
-
-Setting this variable to true enables showing a context with each line
-logged by the :command:`message` command (see :variable:`CMAKE_MESSAGE_CONTEXT`
-for how the context itself is specified).
-
-This variable is an alternative to providing the ``--log-context`` option
-on the :manual:`cmake <cmake(1)>` command line.  Whereas the command line
-option will apply only to that one CMake run, setting
-``CMAKE_MESSAGE_CONTEXT_SHOW`` to true as a cache variable will ensure that
-subsequent CMake runs will continue to show the message context.
-
-Projects should not set ``CMAKE_MESSAGE_CONTEXT_SHOW``.  It is intended for
-users so that they may control whether or not to include context with messages.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MESSAGE_INDENT.rst b/share/cmake-3.18/Help/variable/CMAKE_MESSAGE_INDENT.rst
deleted file mode 100644
index 7e44a4c..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_MESSAGE_INDENT.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-CMAKE_MESSAGE_INDENT
---------------------
-
-The :command:`message` command joins the strings from this list and for
-log levels of ``NOTICE`` and below, it prepends the resultant string to
-each line of the message.
-
-Example:
-
-.. code-block:: cmake
-
-  list(APPEND listVar one two three)
-
-  message(VERBOSE [[Collected items in the "listVar":]])
-  list(APPEND CMAKE_MESSAGE_INDENT "  ")
-
-  foreach(item IN LISTS listVar)
-    message(VERBOSE ${item})
-  endforeach()
-
-  list(POP_BACK CMAKE_MESSAGE_INDENT)
-  message(VERBOSE "No more indent")
-
-Which results in the following output:
-
-.. code-block:: none
-
-  -- Collected items in the "listVar":
-  --   one
-  --   two
-  --   three
-  -- No more indent
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MESSAGE_LOG_LEVEL.rst b/share/cmake-3.18/Help/variable/CMAKE_MESSAGE_LOG_LEVEL.rst
deleted file mode 100644
index 1d4cfe6..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_MESSAGE_LOG_LEVEL.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-CMAKE_MESSAGE_LOG_LEVEL
------------------------
-
-When set, this variable specifies the logging level used by the
-:command:`message` command.  Valid values are the same as those for the
-``--log-level`` command line option of the :manual:`cmake(1)` program.
-If this variable is set and the ``--log-level`` command line option is
-given, the command line option takes precedence.
-
-The main advantage to using this variable is to make a log level persist
-between CMake runs.  Setting it as a cache variable will ensure that
-subsequent CMake runs will continue to use the chosen log level.
-
-Projects should not set this variable, it is intended for users so that
-they may control the log level according to their own needs.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MFC_FLAG.rst b/share/cmake-3.18/Help/variable/CMAKE_MFC_FLAG.rst
deleted file mode 100644
index 2c4d1c5..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_MFC_FLAG.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-CMAKE_MFC_FLAG
---------------
-
-Use the MFC library for an executable or dll.
-
-Enables the use of the Microsoft Foundation Classes (MFC).
-It should be set to ``1`` for the static MFC library, and
-``2`` for the shared MFC library.  This is used in Visual Studio
-project files.
-
-Usage example:
-
-.. code-block:: cmake
-
-  add_definitions(-D_AFXDLL)
-  set(CMAKE_MFC_FLAG 2)
-  add_executable(CMakeSetup WIN32 ${SRCS})
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MINIMUM_REQUIRED_VERSION.rst b/share/cmake-3.18/Help/variable/CMAKE_MINIMUM_REQUIRED_VERSION.rst
deleted file mode 100644
index f466468..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_MINIMUM_REQUIRED_VERSION.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_MINIMUM_REQUIRED_VERSION
-------------------------------
-
-The ``<min>`` version of CMake given to the most recent call to the
-:command:`cmake_minimum_required(VERSION)` command.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG_INIT.rst b/share/cmake-3.18/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG_INIT.rst
deleted file mode 100644
index 3279014..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG_INIT.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_MODULE_LINKER_FLAGS_<CONFIG>_INIT
----------------------------------------
-
-Value used to initialize the :variable:`CMAKE_MODULE_LINKER_FLAGS_<CONFIG>`
-cache entry the first time a build tree is configured.
-This variable is meant to be set by a :variable:`toolchain file
-<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
-the value based on the environment and target platform.
-
-See also :variable:`CMAKE_MODULE_LINKER_FLAGS_INIT`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MODULE_LINKER_FLAGS_INIT.rst b/share/cmake-3.18/Help/variable/CMAKE_MODULE_LINKER_FLAGS_INIT.rst
deleted file mode 100644
index 91b39f6..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_MODULE_LINKER_FLAGS_INIT.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_MODULE_LINKER_FLAGS_INIT
-------------------------------
-
-Value used to initialize the :variable:`CMAKE_MODULE_LINKER_FLAGS`
-cache entry the first time a build tree is configured.
-This variable is meant to be set by a :variable:`toolchain file
-<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
-the value based on the environment and target platform.
-
-See also the configuration-specific variable
-:variable:`CMAKE_MODULE_LINKER_FLAGS_<CONFIG>_INIT`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MSVCIDE_RUN_PATH.rst b/share/cmake-3.18/Help/variable/CMAKE_MSVCIDE_RUN_PATH.rst
deleted file mode 100644
index 22e727f..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_MSVCIDE_RUN_PATH.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_MSVCIDE_RUN_PATH
-----------------------
-
-Extra PATH locations that should be used when executing
-:command:`add_custom_command` or :command:`add_custom_target` when using the
-:generator:`Visual Studio 9 2008` (or above) generator. This allows
-for running commands and using dll's that the IDE environment is not aware of.
-
-If not set explicitly the value is initialized by the ``CMAKE_MSVCIDE_RUN_PATH``
-environment variable, if set, and otherwise left empty.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MSVC_RUNTIME_LIBRARY.rst b/share/cmake-3.18/Help/variable/CMAKE_MSVC_RUNTIME_LIBRARY.rst
deleted file mode 100644
index 8b54e7e..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_MSVC_RUNTIME_LIBRARY.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-CMAKE_MSVC_RUNTIME_LIBRARY
---------------------------
-
-Select the MSVC runtime library for use by compilers targeting the MSVC ABI.
-This variable is used to initialize the :prop_tgt:`MSVC_RUNTIME_LIBRARY`
-property on all targets as they are created.  It is also propagated by
-calls to the :command:`try_compile` command into the test project.
-
-The allowed values are:
-
-.. include:: ../prop_tgt/MSVC_RUNTIME_LIBRARY-VALUES.txt
-
-Use :manual:`generator expressions <cmake-generator-expressions(7)>` to
-support per-configuration specification.  For example, the code:
-
-.. code-block:: cmake
-
-  set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
-
-selects for all following targets a multi-threaded statically-linked runtime
-library with or without debug information depending on the configuration.
-
-If this variable is not set then the :prop_tgt:`MSVC_RUNTIME_LIBRARY` target
-property will not be set automatically.  If that property is not set then
-CMake uses the default value ``MultiThreaded$<$<CONFIG:Debug>:Debug>DLL``
-to select a MSVC runtime library.
-
-.. note::
-
-  This variable has effect only when policy :policy:`CMP0091` is set to ``NEW``
-  prior to the first :command:`project` or :command:`enable_language` command
-  that enables a language using a compiler targeting the MSVC ABI.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_NETRC.rst b/share/cmake-3.18/Help/variable/CMAKE_NETRC.rst
deleted file mode 100644
index 903ec31..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_NETRC.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_NETRC
------------
-
-This variable is used to initialize the ``NETRC`` option for
-:command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands and the
-module :module:`ExternalProject`. See those commands for additional
-information.
-
-The local option takes precedence over this variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_NETRC_FILE.rst b/share/cmake-3.18/Help/variable/CMAKE_NETRC_FILE.rst
deleted file mode 100644
index 0f09afe..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_NETRC_FILE.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_NETRC_FILE
-----------------
-
-This variable is used to initialize the ``NETRC_FILE`` option for
-:command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands and the
-module :module:`ExternalProject`. See those commands for additional
-information.
-
-The local option takes precedence over this variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX.rst b/share/cmake-3.18/Help/variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX.rst
deleted file mode 100644
index 64091aa..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-CMAKE_NINJA_OUTPUT_PATH_PREFIX
-------------------------------
-
-Set output files path prefix for the :generator:`Ninja` generator.
-
-Every output files listed in the generated ``build.ninja`` will be
-prefixed by the contents of this variable (a trailing slash is
-appended if missing).  This is useful when the generated ninja file is
-meant to be embedded as a ``subninja`` file into a *super* ninja
-project.  For example, a ninja build file generated with a command
-like::
-
-  cd top-build-dir/sub &&
-  cmake -G Ninja -DCMAKE_NINJA_OUTPUT_PATH_PREFIX=sub/ path/to/source
-
-can be embedded in ``top-build-dir/build.ninja`` with a directive like
-this::
-
-  subninja sub/build.ninja
-
-The ``auto-regeneration`` rule in ``top-build-dir/build.ninja`` must have an
-order-only dependency on ``sub/build.ninja``.
-
-.. note::
-  When ``CMAKE_NINJA_OUTPUT_PATH_PREFIX`` is set, the project generated
-  by CMake cannot be used as a standalone project.  No default targets
-  are specified.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_NO_BUILTIN_CHRPATH.rst b/share/cmake-3.18/Help/variable/CMAKE_NO_BUILTIN_CHRPATH.rst
deleted file mode 100644
index 189f59f..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_NO_BUILTIN_CHRPATH.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_NO_BUILTIN_CHRPATH
-------------------------
-
-Do not use the builtin ELF editor to fix RPATHs on installation.
-
-When an ELF binary needs to have a different RPATH after installation
-than it does in the build tree, CMake uses a builtin editor to change
-the RPATH in the installed copy.  If this variable is set to true then
-CMake will relink the binary before installation instead of using its
-builtin editor.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_OBJCXX_EXTENSIONS.rst b/share/cmake-3.18/Help/variable/CMAKE_OBJCXX_EXTENSIONS.rst
deleted file mode 100644
index 8afa6f2..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_OBJCXX_EXTENSIONS.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_OBJCXX_EXTENSIONS
------------------------
-
-Default value for :prop_tgt:`OBJCXX_EXTENSIONS` property of targets.
-
-This variable is used to initialize the :prop_tgt:`OBJCXX_EXTENSIONS`
-property on all targets.  See that target property for additional
-information.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_OBJCXX_STANDARD.rst b/share/cmake-3.18/Help/variable/CMAKE_OBJCXX_STANDARD.rst
deleted file mode 100644
index 4e5016a..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_OBJCXX_STANDARD.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_OBJCXX_STANDARD
----------------------
-
-Default value for :prop_tgt:`OBJCXX_STANDARD` property of targets.
-
-This variable is used to initialize the :prop_tgt:`OBJCXX_STANDARD`
-property on all targets.  See that target property for additional
-information.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_OBJCXX_STANDARD_REQUIRED.rst b/share/cmake-3.18/Help/variable/CMAKE_OBJCXX_STANDARD_REQUIRED.rst
deleted file mode 100644
index 3a0602a..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_OBJCXX_STANDARD_REQUIRED.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_OBJCXX_STANDARD_REQUIRED
-------------------------------
-
-Default value for :prop_tgt:`OBJCXX_STANDARD_REQUIRED` property of targets.
-
-This variable is used to initialize the :prop_tgt:`OBJCXX_STANDARD_REQUIRED`
-property on all targets.  See that target property for additional
-information.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_OBJC_EXTENSIONS.rst b/share/cmake-3.18/Help/variable/CMAKE_OBJC_EXTENSIONS.rst
deleted file mode 100644
index d9619d8..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_OBJC_EXTENSIONS.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_OBJC_EXTENSIONS
----------------------
-
-Default value for :prop_tgt:`OBJC_EXTENSIONS` property of targets.
-
-This variable is used to initialize the :prop_tgt:`OBJC_EXTENSIONS`
-property on all targets.  See that target property for additional
-information.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_OBJC_STANDARD.rst b/share/cmake-3.18/Help/variable/CMAKE_OBJC_STANDARD.rst
deleted file mode 100644
index 976c441..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_OBJC_STANDARD.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_OBJC_STANDARD
--------------------
-
-Default value for :prop_tgt:`OBJC_STANDARD` property of targets.
-
-This variable is used to initialize the :prop_tgt:`OBJC_STANDARD`
-property on all targets.  See that target property for additional
-information.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_OBJC_STANDARD_REQUIRED.rst b/share/cmake-3.18/Help/variable/CMAKE_OBJC_STANDARD_REQUIRED.rst
deleted file mode 100644
index 5c02096..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_OBJC_STANDARD_REQUIRED.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_OBJC_STANDARD_REQUIRED
-----------------------------
-
-Default value for :prop_tgt:`OBJC_STANDARD_REQUIRED` property of targets.
-
-This variable is used to initialize the :prop_tgt:`OBJC_STANDARD_REQUIRED`
-property on all targets.  See that target property for additional
-information.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PCH_WARN_INVALID.rst b/share/cmake-3.18/Help/variable/CMAKE_PCH_WARN_INVALID.rst
deleted file mode 100644
index e152abd..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_PCH_WARN_INVALID.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_PCH_WARN_INVALID
-----------------------
-
-This variable is used to initialize the :prop_tgt:`PCH_WARN_INVALID`
-property of targets when they are created.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_POLICY_DEFAULT_CMPNNNN.rst b/share/cmake-3.18/Help/variable/CMAKE_POLICY_DEFAULT_CMPNNNN.rst
deleted file mode 100644
index 43582be..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_POLICY_DEFAULT_CMPNNNN.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-CMAKE_POLICY_DEFAULT_CMP<NNNN>
-------------------------------
-
-Default for CMake Policy ``CMP<NNNN>`` when it is otherwise left unset.
-
-Commands :command:`cmake_minimum_required(VERSION)` and
-:command:`cmake_policy(VERSION)` by default leave policies introduced after
-the given version unset.  Set ``CMAKE_POLICY_DEFAULT_CMP<NNNN>`` to ``OLD``
-or ``NEW`` to specify the default for policy ``CMP<NNNN>``, where ``<NNNN>``
-is the policy number.
-
-This variable should not be set by a project in CMake code; use
-:command:`cmake_policy(SET)` instead.  Users running CMake may set this
-variable in the cache (e.g. ``-DCMAKE_POLICY_DEFAULT_CMP<NNNN>=<OLD|NEW>``)
-to set a policy not otherwise set by the project.  Set to ``OLD`` to quiet a
-policy warning while using old behavior or to ``NEW`` to try building the
-project with new behavior.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst b/share/cmake-3.18/Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst
deleted file mode 100644
index de71d0e..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-CMAKE_POLICY_WARNING_CMP<NNNN>
-------------------------------
-
-Explicitly enable or disable the warning when CMake Policy ``CMP<NNNN>``
-is not set.  This is meaningful only for the few policies that do not
-warn by default:
-
-* ``CMAKE_POLICY_WARNING_CMP0025`` controls the warning for
-  policy :policy:`CMP0025`.
-* ``CMAKE_POLICY_WARNING_CMP0047`` controls the warning for
-  policy :policy:`CMP0047`.
-* ``CMAKE_POLICY_WARNING_CMP0056`` controls the warning for
-  policy :policy:`CMP0056`.
-* ``CMAKE_POLICY_WARNING_CMP0060`` controls the warning for
-  policy :policy:`CMP0060`.
-* ``CMAKE_POLICY_WARNING_CMP0065`` controls the warning for
-  policy :policy:`CMP0065`.
-* ``CMAKE_POLICY_WARNING_CMP0066`` controls the warning for
-  policy :policy:`CMP0066`.
-* ``CMAKE_POLICY_WARNING_CMP0067`` controls the warning for
-  policy :policy:`CMP0067`.
-* ``CMAKE_POLICY_WARNING_CMP0082`` controls the warning for
-  policy :policy:`CMP0082`.
-* ``CMAKE_POLICY_WARNING_CMP0089`` controls the warning for
-  policy :policy:`CMP0089`.
-* ``CMAKE_POLICY_WARNING_CMP0102`` controls the warning for
-  policy :policy:`CMP0102`.
-
-This variable should not be set by a project in CMake code.  Project
-developers running CMake may set this variable in their cache to
-enable the warning (e.g. ``-DCMAKE_POLICY_WARNING_CMP<NNNN>=ON``).
-Alternatively, running :manual:`cmake(1)` with the ``--debug-output``,
-``--trace``, or ``--trace-expand`` option will also enable the warning.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_POSITION_INDEPENDENT_CODE.rst b/share/cmake-3.18/Help/variable/CMAKE_POSITION_INDEPENDENT_CODE.rst
deleted file mode 100644
index 43b1397..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_POSITION_INDEPENDENT_CODE.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_POSITION_INDEPENDENT_CODE
--------------------------------
-
-Default value for :prop_tgt:`POSITION_INDEPENDENT_CODE` of targets.
-
-This variable is used to initialize the
-:prop_tgt:`POSITION_INDEPENDENT_CODE` property on all the targets.
-See that target property for additional information.  If set, it's
-value is also used by the :command:`try_compile` command.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_DESCRIPTION.rst b/share/cmake-3.18/Help/variable/CMAKE_PROJECT_DESCRIPTION.rst
deleted file mode 100644
index 51b0592..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_DESCRIPTION.rst
+++ /dev/null
@@ -1,35 +0,0 @@
-CMAKE_PROJECT_DESCRIPTION
--------------------------
-
-The description of the top level project.
-
-This variable holds the description of the project as specified in the top
-level CMakeLists.txt file by a :command:`project` command.  In the event that
-the top level CMakeLists.txt contains multiple :command:`project` calls,
-the most recently called one from that top level CMakeLists.txt will determine
-the value that ``CMAKE_PROJECT_DESCRIPTION`` contains.  For example, consider
-the following top level CMakeLists.txt:
-
-.. code-block:: cmake
-
-  cmake_minimum_required(VERSION 3.0)
-  project(First DESCRIPTION "I am First")
-  project(Second DESCRIPTION "I am Second")
-  add_subdirectory(sub)
-  project(Third DESCRIPTION "I am Third")
-
-And ``sub/CMakeLists.txt`` with the following contents:
-
-.. code-block:: cmake
-
-  project(SubProj DESCRIPTION "I am SubProj")
-  message("CMAKE_PROJECT_DESCRIPTION = ${CMAKE_PROJECT_DESCRIPTION}")
-
-The most recently seen :command:`project` command from the top level
-CMakeLists.txt would be ``project(Second ...)``, so this will print::
-
-  CMAKE_PROJECT_DESCRIPTION = I am Second
-
-To obtain the description from the most recent call to :command:`project` in
-the current directory scope or above, see the :variable:`PROJECT_DESCRIPTION`
-variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_HOMEPAGE_URL.rst b/share/cmake-3.18/Help/variable/CMAKE_PROJECT_HOMEPAGE_URL.rst
deleted file mode 100644
index ee0bf7c..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_HOMEPAGE_URL.rst
+++ /dev/null
@@ -1,35 +0,0 @@
-CMAKE_PROJECT_HOMEPAGE_URL
---------------------------
-
-The homepage URL of the top level project.
-
-This variable holds the homepage URL of the project as specified in the top
-level CMakeLists.txt file by a :command:`project` command.  In the event that
-the top level CMakeLists.txt contains multiple :command:`project` calls,
-the most recently called one from that top level CMakeLists.txt will determine
-the value that ``CMAKE_PROJECT_HOMEPAGE_URL`` contains.  For example, consider
-the following top level CMakeLists.txt:
-
-.. code-block:: cmake
-
-  cmake_minimum_required(VERSION 3.0)
-  project(First HOMEPAGE_URL "http://first.example.com")
-  project(Second HOMEPAGE_URL "http://second.example.com")
-  add_subdirectory(sub)
-  project(Third HOMEPAGE_URL "http://third.example.com")
-
-And ``sub/CMakeLists.txt`` with the following contents:
-
-.. code-block:: cmake
-
-  project(SubProj HOMEPAGE_URL "http://subproj.example.com")
-  message("CMAKE_PROJECT_HOMEPAGE_URL = ${CMAKE_PROJECT_HOMEPAGE_URL}")
-
-The most recently seen :command:`project` command from the top level
-CMakeLists.txt would be ``project(Second ...)``, so this will print::
-
-  CMAKE_PROJECT_HOMEPAGE_URL = http://second.example.com
-
-To obtain the homepage URL from the most recent call to :command:`project` in
-the current directory scope or above, see the :variable:`PROJECT_HOMEPAGE_URL`
-variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_INCLUDE.rst b/share/cmake-3.18/Help/variable/CMAKE_PROJECT_INCLUDE.rst
deleted file mode 100644
index 5835264..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_INCLUDE.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_PROJECT_INCLUDE
----------------------
-
-A CMake language file or module to be included as the last step of all
-:command:`project` command calls.  This is intended for injecting custom code
-into project builds without modifying their source.
-
-See also the :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE`,
-:variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE` and
-:variable:`CMAKE_PROJECT_INCLUDE_BEFORE` variables.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_INCLUDE_BEFORE.rst b/share/cmake-3.18/Help/variable/CMAKE_PROJECT_INCLUDE_BEFORE.rst
deleted file mode 100644
index 280c14a..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_INCLUDE_BEFORE.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_PROJECT_INCLUDE_BEFORE
-----------------------------
-
-A CMake language file or module to be included as the first step of all
-:command:`project` command calls.  This is intended for injecting custom code
-into project builds without modifying their source.
-
-See also the :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE`,
-:variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE` and
-:variable:`CMAKE_PROJECT_INCLUDE` variables.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE_BEFORE.rst b/share/cmake-3.18/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE_BEFORE.rst
deleted file mode 100644
index db1432d..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE_BEFORE.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE
--------------------------------------------
-
-A CMake language file or module to be included as the first step of any
-:command:`project` command calls that specify ``<PROJECT-NAME>`` as the project
-name.  This is intended for injecting custom code into project builds without
-modifying their source.
-
-See also the :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE`,
-:variable:`CMAKE_PROJECT_INCLUDE` and
-:variable:`CMAKE_PROJECT_INCLUDE_BEFORE` variables.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_VERSION.rst b/share/cmake-3.18/Help/variable/CMAKE_PROJECT_VERSION.rst
deleted file mode 100644
index 4f8f556..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_VERSION.rst
+++ /dev/null
@@ -1,35 +0,0 @@
-CMAKE_PROJECT_VERSION
----------------------
-
-The version of the top level project.
-
-This variable holds the version of the project as specified in the top
-level CMakeLists.txt file by a :command:`project` command.  In the event that
-the top level CMakeLists.txt contains multiple :command:`project` calls,
-the most recently called one from that top level CMakeLists.txt will determine
-the value that ``CMAKE_PROJECT_VERSION`` contains.  For example, consider
-the following top level CMakeLists.txt:
-
-.. code-block:: cmake
-
-  cmake_minimum_required(VERSION 3.0)
-  project(First VERSION 1.2.3)
-  project(Second VERSION 3.4.5)
-  add_subdirectory(sub)
-  project(Third VERSION 6.7.8)
-
-And ``sub/CMakeLists.txt`` with the following contents:
-
-.. code-block:: cmake
-
-  project(SubProj VERSION 1)
-  message("CMAKE_PROJECT_VERSION = ${CMAKE_PROJECT_VERSION}")
-
-The most recently seen :command:`project` command from the top level
-CMakeLists.txt would be ``project(Second ...)``, so this will print::
-
-  CMAKE_PROJECT_VERSION = 3.4.5
-
-To obtain the version from the most recent call to :command:`project` in
-the current directory scope or above, see the :variable:`PROJECT_VERSION`
-variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_VERSION_MAJOR.rst b/share/cmake-3.18/Help/variable/CMAKE_PROJECT_VERSION_MAJOR.rst
deleted file mode 100644
index f1001ac..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_VERSION_MAJOR.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_PROJECT_VERSION_MAJOR
----------------------------
-
-The major version of the top level project.
-
-This variable holds the major version of the project as specified in the top
-level CMakeLists.txt file by a :command:`project` command. Please see
-:variable:`CMAKE_PROJECT_VERSION` documentation for the behavior when
-multiple :command:`project` commands are used in the sources.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_VERSION_MINOR.rst b/share/cmake-3.18/Help/variable/CMAKE_PROJECT_VERSION_MINOR.rst
deleted file mode 100644
index 13202be..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_VERSION_MINOR.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_PROJECT_VERSION_MINOR
----------------------------
-
-The minor version of the top level project.
-
-This variable holds the minor version of the project as specified in the top
-level CMakeLists.txt file by a :command:`project` command. Please see
-:variable:`CMAKE_PROJECT_VERSION` documentation for the behavior when
-multiple :command:`project` commands are used in the sources.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_VERSION_PATCH.rst b/share/cmake-3.18/Help/variable/CMAKE_PROJECT_VERSION_PATCH.rst
deleted file mode 100644
index b8570d9..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_VERSION_PATCH.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_PROJECT_VERSION_PATCH
----------------------------
-
-The patch version of the top level project.
-
-This variable holds the patch version of the project as specified in the top
-level CMakeLists.txt file by a :command:`project` command. Please see
-:variable:`CMAKE_PROJECT_VERSION` documentation for the behavior when
-multiple :command:`project` commands are used in the sources.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_VERSION_TWEAK.rst b/share/cmake-3.18/Help/variable/CMAKE_PROJECT_VERSION_TWEAK.rst
deleted file mode 100644
index e1ad4be..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_VERSION_TWEAK.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_PROJECT_VERSION_TWEAK
----------------------------
-
-The tweak version of the top level project.
-
-This variable holds the tweak version of the project as specified in the top
-level CMakeLists.txt file by a :command:`project` command. Please see
-:variable:`CMAKE_PROJECT_VERSION` documentation for the behavior when
-multiple :command:`project` commands are used in the sources.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_RULE_MESSAGES.rst b/share/cmake-3.18/Help/variable/CMAKE_RULE_MESSAGES.rst
deleted file mode 100644
index 7460a81..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_RULE_MESSAGES.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_RULE_MESSAGES
--------------------
-
-Specify whether to report a message for each make rule.
-
-If set in the cache it is used to initialize the value of the :prop_gbl:`RULE_MESSAGES` property.
-Users may disable the option in their local build tree to disable granular messages
-and report only as each target completes in Makefile builds.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.18/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst
deleted file mode 100644
index 080dea6..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
----------------------------------------
-
-Where to put all the :ref:`RUNTIME <Runtime Output Artifacts>`
-target files when built for a specific configuration.
-
-This variable is used to initialize the
-:prop_tgt:`RUNTIME_OUTPUT_DIRECTORY_<CONFIG>` property on all the targets.
-See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG_INIT.rst b/share/cmake-3.18/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG_INIT.rst
deleted file mode 100644
index 185df38..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG_INIT.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_SHARED_LINKER_FLAGS_<CONFIG>_INIT
----------------------------------------
-
-Value used to initialize the :variable:`CMAKE_SHARED_LINKER_FLAGS_<CONFIG>`
-cache entry the first time a build tree is configured.
-This variable is meant to be set by a :variable:`toolchain file
-<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
-the value based on the environment and target platform.
-
-See also :variable:`CMAKE_SHARED_LINKER_FLAGS_INIT`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SHARED_LINKER_FLAGS_INIT.rst b/share/cmake-3.18/Help/variable/CMAKE_SHARED_LINKER_FLAGS_INIT.rst
deleted file mode 100644
index cb819a7..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_SHARED_LINKER_FLAGS_INIT.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_SHARED_LINKER_FLAGS_INIT
-------------------------------
-
-Value used to initialize the :variable:`CMAKE_SHARED_LINKER_FLAGS`
-cache entry the first time a build tree is configured.
-This variable is meant to be set by a :variable:`toolchain file
-<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
-the value based on the environment and target platform.
-
-See also the configuration-specific variable
-:variable:`CMAKE_SHARED_LINKER_FLAGS_<CONFIG>_INIT`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG_INIT.rst b/share/cmake-3.18/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG_INIT.rst
deleted file mode 100644
index a49d1cb..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG_INIT.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_STATIC_LINKER_FLAGS_<CONFIG>_INIT
----------------------------------------
-
-Value used to initialize the :variable:`CMAKE_STATIC_LINKER_FLAGS_<CONFIG>`
-cache entry the first time a build tree is configured.
-This variable is meant to be set by a :variable:`toolchain file
-<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
-the value based on the environment and target platform.
-
-See also :variable:`CMAKE_STATIC_LINKER_FLAGS_INIT`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_STATIC_LINKER_FLAGS_INIT.rst b/share/cmake-3.18/Help/variable/CMAKE_STATIC_LINKER_FLAGS_INIT.rst
deleted file mode 100644
index 113ca71..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_STATIC_LINKER_FLAGS_INIT.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_STATIC_LINKER_FLAGS_INIT
-------------------------------
-
-Value used to initialize the :variable:`CMAKE_STATIC_LINKER_FLAGS`
-cache entry the first time a build tree is configured.
-This variable is meant to be set by a :variable:`toolchain file
-<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
-the value based on the environment and target platform.
-
-See also the configuration-specific variable
-:variable:`CMAKE_STATIC_LINKER_FLAGS_<CONFIG>_INIT`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS.rst b/share/cmake-3.18/Help/variable/CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS.rst
deleted file mode 100644
index 02c8663..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
----------------------------------
-
-This variable contains a list of env vars as a list of tokens with the
-syntax ``var=value``.
-
-Example:
-
-.. code-block:: cmake
-
-  set(CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
-     "FOO=FOO1\;FOO2\;FOON"
-     "BAR=BAR1\;BAR2\;BARN"
-     "BAZ=BAZ1\;BAZ2\;BAZN"
-     "FOOBAR=FOOBAR1\;FOOBAR2\;FOOBARN"
-     "VALID="
-     )
-
-In case of malformed variables CMake will fail:
-
-.. code-block:: cmake
-
-  set(CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
-      "THIS_IS_NOT_VALID"
-      )
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE.rst b/share/cmake-3.18/Help/variable/CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE.rst
deleted file mode 100644
index d654425..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE
----------------------------------------
-
-If this variable evaluates to ``ON`` at the end of the top-level
-``CMakeLists.txt`` file, the :generator:`Sublime Text 2` extra generator
-excludes the build tree from the ``.sublime-project`` if it is inside the
-source tree.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SUPPRESS_REGENERATION.rst b/share/cmake-3.18/Help/variable/CMAKE_SUPPRESS_REGENERATION.rst
deleted file mode 100644
index 96184dd..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_SUPPRESS_REGENERATION.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_SUPPRESS_REGENERATION
----------------------------
-
-If ``CMAKE_SUPPRESS_REGENERATION`` is ``OFF``, which is default, then CMake
-adds a special target on which all other targets depend that checks the build
-system and optionally re-runs CMake to regenerate the build system when
-the target specification source changes.
-
-If this variable evaluates to ``ON`` at the end of the top-level
-``CMakeLists.txt`` file, CMake will not add the regeneration target to the
-build system or perform any build system checks.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SYSROOT_COMPILE.rst b/share/cmake-3.18/Help/variable/CMAKE_SYSROOT_COMPILE.rst
deleted file mode 100644
index e96c62b..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_SYSROOT_COMPILE.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_SYSROOT_COMPILE
----------------------
-
-Path to pass to the compiler in the ``--sysroot`` flag when compiling source
-files.  This is the same as :variable:`CMAKE_SYSROOT` but is used only for
-compiling sources and not linking.
-
-This variable may only be set in a toolchain file specified by
-the :variable:`CMAKE_TOOLCHAIN_FILE` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SYSROOT_LINK.rst b/share/cmake-3.18/Help/variable/CMAKE_SYSROOT_LINK.rst
deleted file mode 100644
index 88b48ef..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_SYSROOT_LINK.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_SYSROOT_LINK
-------------------
-
-Path to pass to the compiler in the ``--sysroot`` flag when linking.  This is
-the same as :variable:`CMAKE_SYSROOT` but is used only for linking and not
-compiling sources.
-
-This variable may only be set in a toolchain file specified by
-the :variable:`CMAKE_TOOLCHAIN_FILE` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst b/share/cmake-3.18/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst
deleted file mode 100644
index 666af46..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_SYSTEM_APPBUNDLE_PATH
----------------------------
-
-Search path for macOS application bundles used by the :command:`find_program`,
-and :command:`find_package` commands.  By default it contains the standard
-directories for the current system.  It is *not* intended to be modified by
-the project, use :variable:`CMAKE_APPBUNDLE_PATH` for this.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst b/share/cmake-3.18/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst
deleted file mode 100644
index 14ba18e..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_SYSTEM_FRAMEWORK_PATH
----------------------------
-
-Search path for macOS frameworks used by the :command:`find_library`,
-:command:`find_package`, :command:`find_path`, and :command:`find_file`
-commands.  By default it contains the standard directories for the
-current system.  It is *not* intended to be modified by the project,
-use :variable:`CMAKE_FRAMEWORK_PATH` for this.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SYSTEM_PROCESSOR.rst b/share/cmake-3.18/Help/variable/CMAKE_SYSTEM_PROCESSOR.rst
deleted file mode 100644
index 8ad89f1..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_SYSTEM_PROCESSOR.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_SYSTEM_PROCESSOR
-----------------------
-
-The name of the CPU CMake is building for.
-
-This variable is the same as :variable:`CMAKE_HOST_SYSTEM_PROCESSOR` if
-you build for the host system instead of the target system when
-cross compiling.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst b/share/cmake-3.18/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst
deleted file mode 100644
index b4a74eb..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_Swift_LANGUAGE_VERSION
-----------------------------
-
-Set to the Swift language version number.  If not set, the oldest legacy
-version known to be available in the host Xcode version is assumed:
-
-* Swift ``4.0`` for Xcode 10.2 and above.
-* Swift ``3.0`` for Xcode 8.3 and above.
-* Swift ``2.3`` for Xcode 8.2 and below.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_Swift_MODULE_DIRECTORY.rst b/share/cmake-3.18/Help/variable/CMAKE_Swift_MODULE_DIRECTORY.rst
deleted file mode 100644
index b11253b..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_Swift_MODULE_DIRECTORY.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_Swift_MODULE_DIRECTORY
-----------------------------
-
-Swift module output directory.
-
-This variable is used to initialise the :prop_tgt:`Swift_MODULE_DIRECTORY`
-property on all the targets.  See the target property for additional
-information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_Swift_NUM_THREADS.rst b/share/cmake-3.18/Help/variable/CMAKE_Swift_NUM_THREADS.rst
deleted file mode 100644
index cb33678..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_Swift_NUM_THREADS.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_Swift_NUM_THREADS
------------------------
-
-Number of threads for parallel compilation for Swift targets.
-
-This variable controls the number of parallel jobs that the swift driver creates
-for building targets.  If not specified, it will default to the number of
-logical CPUs on the host.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_TOOLCHAIN_FILE.rst b/share/cmake-3.18/Help/variable/CMAKE_TOOLCHAIN_FILE.rst
deleted file mode 100644
index 168ee74..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_TOOLCHAIN_FILE.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_TOOLCHAIN_FILE
---------------------
-
-Path to toolchain file supplied to :manual:`cmake(1)`.
-
-This variable is specified on the command line when cross-compiling with CMake.
-It is the path to a file which is read early in the CMake run and which
-specifies locations for compilers and toolchain utilities, and other target
-platform and compiler related information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES.rst b/share/cmake-3.18/Help/variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES.rst
deleted file mode 100644
index 0f96787..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
-------------------------------------
-
-List of variables that the :command:`try_compile` command source file signature
-must propagate into the test project in order to target the same platform as
-the host project.
-
-This variable should not be set by project code.  It is meant to be set by
-CMake's platform information modules for the current toolchain, or by a
-toolchain file when used with :variable:`CMAKE_TOOLCHAIN_FILE`.
-
-Variables meaningful to CMake, such as :variable:`CMAKE_<LANG>_FLAGS`, are
-propagated automatically.  The ``CMAKE_TRY_COMPILE_PLATFORM_VARIABLES``
-variable may be set to pass custom variables meaningful to a toolchain file.
-For example, a toolchain file may contain:
-
-.. code-block:: cmake
-
-  set(CMAKE_SYSTEM_NAME ...)
-  set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES MY_CUSTOM_VARIABLE)
-  # ... use MY_CUSTOM_VARIABLE ...
-
-If a user passes ``-DMY_CUSTOM_VARIABLE=SomeValue`` to CMake then this
-setting will be made visible to the toolchain file both for the main
-project and for test projects generated by the :command:`try_compile`
-command source file signature.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_TRY_COMPILE_TARGET_TYPE.rst b/share/cmake-3.18/Help/variable/CMAKE_TRY_COMPILE_TARGET_TYPE.rst
deleted file mode 100644
index 5fa8dfc..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_TRY_COMPILE_TARGET_TYPE.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-CMAKE_TRY_COMPILE_TARGET_TYPE
------------------------------
-
-Type of target generated for :command:`try_compile` calls using the
-source file signature.  Valid values are:
-
-``EXECUTABLE``
-  Use :command:`add_executable` to name the source file in the
-  generated project.  This is the default if no value is given.
-
-``STATIC_LIBRARY``
-  Use :command:`add_library` with the ``STATIC`` option to name the
-  source file in the generated project.  This avoids running the
-  linker and is intended for use with cross-compiling toolchains
-  that cannot link without custom flags or linker scripts.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_UNITY_BUILD.rst b/share/cmake-3.18/Help/variable/CMAKE_UNITY_BUILD.rst
deleted file mode 100644
index a86cd67..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_UNITY_BUILD.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-CMAKE_UNITY_BUILD
------------------
-
-This variable is used to initialize the :prop_tgt:`UNITY_BUILD`
-property of targets when they are created.  Setting it to true
-enables batch compilation of multiple sources within each target.
-This feature is known as a *Unity* or *Jumbo* build.
-
-Projects should not set this variable, it is intended as a developer
-control to be set on the :manual:`cmake(1)` command line or other
-equivalent methods.  The developer must have the ability to enable or
-disable unity builds according to the capabilities of their own machine
-and compiler.
-
-By default, this variable is not set, which will result in unity builds
-being disabled.
-
-.. note::
-  This option currently does not work well in combination with
-  the :variable:`CMAKE_EXPORT_COMPILE_COMMANDS` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_UNITY_BUILD_BATCH_SIZE.rst b/share/cmake-3.18/Help/variable/CMAKE_UNITY_BUILD_BATCH_SIZE.rst
deleted file mode 100644
index 7988d4b..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_UNITY_BUILD_BATCH_SIZE.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_UNITY_BUILD_BATCH_SIZE
-----------------------------
-
-This variable is used to initialize the :prop_tgt:`UNITY_BUILD_BATCH_SIZE`
-property of targets when they are created.  It specifies the default upper
-limit on the number of source files that may be combined in any one unity
-source file when unity builds are enabled for a target.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_GLOBALS.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_GLOBALS.rst
deleted file mode 100644
index 83777b6..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_GLOBALS.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-CMAKE_VS_GLOBALS
-----------------
-
-List of ``Key=Value`` records to be set per target as target properties
-:prop_tgt:`VS_GLOBAL_<variable>` with ``variable=Key`` and value ``Value``.
-
-For example:
-
-.. code-block:: cmake
-
-  set(CMAKE_VS_GLOBALS
-    "DefaultLanguage=en-US"
-    "MinimumVisualStudioVersion=14.0"
-    )
-
-will set properties ``VS_GLOBAL_DefaultLanguage`` to ``en-US`` and
-``VS_GLOBAL_MinimumVisualStudioVersion`` to ``14.0`` for all targets
-(except for ``INTERFACE`` libraries).
-
-This variable is meant to be set by a
-:variable:`toolchain file <CMAKE_TOOLCHAIN_FILE>`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD.rst
deleted file mode 100644
index f54472a..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD
------------------------------------------
-
-Include ``INSTALL`` target to default build.
-
-In Visual Studio solution, by default the ``INSTALL`` target will not be part
-of the default build. Setting this variable will enable the ``INSTALL`` target
-to be part of the default build.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD.rst
deleted file mode 100644
index 693ba45..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD
------------------------------------------
-
-Include ``PACKAGE`` target to default build.
-
-In Visual Studio solution, by default the ``PACKAGE`` target will not be part
-of the default build. Setting this variable will enable the ``PACKAGE`` target
-to be part of the default build.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_JUST_MY_CODE_DEBUGGING.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_JUST_MY_CODE_DEBUGGING.rst
deleted file mode 100644
index 546cdf4..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_JUST_MY_CODE_DEBUGGING.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CMAKE_VS_JUST_MY_CODE_DEBUGGING
--------------------------------
-
-Enable Just My Code with Visual Studio debugger.
-
-This variable is used to initialize the :prop_tgt:`VS_JUST_MY_CODE_DEBUGGING`
-property on all targets when they are created.  See that target property for
-additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_NsightTegra_VERSION.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_NsightTegra_VERSION.rst
deleted file mode 100644
index 386c3a9..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_NsightTegra_VERSION.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CMAKE_VS_NsightTegra_VERSION
-----------------------------
-
-When using a Visual Studio generator with the
-:variable:`CMAKE_SYSTEM_NAME` variable set to ``Android``,
-this variable contains the version number of the
-installed NVIDIA Nsight Tegra Visual Studio Edition.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_NAME.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_NAME.rst
deleted file mode 100644
index 7a4642a..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_NAME.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_VS_PLATFORM_NAME
-----------------------
-
-Visual Studio target platform name used by the current generator.
-
-VS 8 and above allow project files to specify a target platform.
-CMake provides the name of the chosen platform in this variable.
-See the :variable:`CMAKE_GENERATOR_PLATFORM` variable for details.
-
-See also the :variable:`CMAKE_VS_PLATFORM_NAME_DEFAULT` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_NAME_DEFAULT.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_NAME_DEFAULT.rst
deleted file mode 100644
index c18e6fd..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_NAME_DEFAULT.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_VS_PLATFORM_NAME_DEFAULT
-------------------------------
-
-Default for the Visual Studio target platform name for the current generator
-without considering the value of the :variable:`CMAKE_GENERATOR_PLATFORM`
-variable.  For :ref:`Visual Studio Generators` for VS 2017 and below this is
-always ``Win32``.  For VS 2019 and above this is based on the host platform.
-
-See also the :variable:`CMAKE_VS_PLATFORM_NAME` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA.rst
deleted file mode 100644
index 67b7f74..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-CMAKE_VS_PLATFORM_TOOLSET_CUDA
-------------------------------
-
-NVIDIA CUDA Toolkit version whose Visual Studio toolset to use.
-
-The :ref:`Visual Studio Generators` for VS 2010 and above support using
-a CUDA toolset provided by a CUDA Toolkit.  The toolset version number
-may be specified by a field in :variable:`CMAKE_GENERATOR_TOOLSET` of
-the form ``cuda=8.0``. Or it is automatically detected if a path to
-a standalone CUDA directory is specified in the form ``cuda=C:\path\to\cuda``.
-If none is specified CMake will choose a default version.
-CMake provides the selected CUDA toolset version in this variable.
-The value may be empty if no CUDA Toolkit with Visual Studio integration
-is installed.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR.rst
deleted file mode 100644
index 060648a..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR
------------------------------------------
-
-Path to standalone NVIDIA CUDA Toolkit (eg. extracted from installer).
-
-The :ref:`Visual Studio Generators` for VS 2010 and above support using
-a standalone (non-installed) NVIDIA CUDA toolkit.  The path
-may be specified by a field in :variable:`CMAKE_GENERATOR_TOOLSET` of
-the form ``cuda=C:\path\to\cuda``.  The given directory must at least
-contain a folder ``.\nvcc`` and must provide Visual Studio integration
-files in path ``.\CUDAVisualStudioIntegration\extras\
-visual_studio_integration\MSBuildExtensions\``. One can create a standalone
-CUDA toolkit directory by either opening a installer with 7zip or
-copying the files that are extracted by the running installer.
-The value may be empty if no path to a standalone CUDA Toolkit was
-specified.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE.rst
deleted file mode 100644
index 99ac90d..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE
--------------------------------------------
-
-Visual Studio preferred tool architecture.
-
-The :ref:`Visual Studio Generators` for VS 2013 and above support using
-either the 32-bit or 64-bit host toolchains by specifying a ``host=x86``
-or ``host=x64`` value in the :variable:`CMAKE_GENERATOR_TOOLSET` option.
-CMake provides the selected toolchain architecture preference in this
-variable (``x86``, ``x64``, or empty).
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_VERSION.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_VERSION.rst
deleted file mode 100644
index 4d9b978..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_VERSION.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CMAKE_VS_PLATFORM_TOOLSET_VERSION
----------------------------------
-
-Visual Studio Platform Toolset version.
-
-The :ref:`Visual Studio Generators` for VS 2017 and above allow to
-select minor versions of the same toolset. The toolset version number
-may be specified by a field in :variable:`CMAKE_GENERATOR_TOOLSET` of
-the form ``version=14.11``. If none is specified CMake will choose a default
-toolset. The value may be empty if no minor version was selected and the
-default is used.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES.rst
deleted file mode 100644
index 36c4dcc..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-CMAKE_VS_SDK_EXCLUDE_DIRECTORIES
---------------------------------
-
-This variable allows to override Visual Studio default Exclude Directories.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES.rst
deleted file mode 100644
index 3ec755b..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES
------------------------------------
-
-This variable allows to override Visual Studio default Executable Directories.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES.rst
deleted file mode 100644
index da10bde..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-CMAKE_VS_SDK_INCLUDE_DIRECTORIES
---------------------------------
-
-This variable allows to override Visual Studio default Include Directories.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES.rst
deleted file mode 100644
index b33754a..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-CMAKE_VS_SDK_LIBRARY_DIRECTORIES
---------------------------------
-
-This variable allows to override Visual Studio default Library Directories.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES.rst
deleted file mode 100644
index b022215..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES
---------------------------------------
-
-This variable allows to override Visual Studio default Library WinRT
-Directories.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES.rst
deleted file mode 100644
index c03f0ae..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-CMAKE_VS_SDK_REFERENCE_DIRECTORIES
-----------------------------------
-
-This variable allows to override Visual Studio default Reference Directories.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES.rst
deleted file mode 100644
index 0c73f06..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-CMAKE_VS_SDK_SOURCE_DIRECTORIES
--------------------------------
-
-This variable allows to override Visual Studio default Source Directories.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.rst
deleted file mode 100644
index 83b9bc1..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION
-----------------------------------------
-
-Visual Studio Windows Target Platform Version.
-
-When targeting Windows 10 and above Visual Studio 2015 and above support
-specification of a target Windows version to select a corresponding SDK.
-The :variable:`CMAKE_SYSTEM_VERSION` variable may be set to specify a
-version.  Otherwise CMake computes a default version based on the Windows
-SDK versions available.  The chosen Windows target version number is provided
-in ``CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION``.  If no Windows 10 SDK
-is available this value will be empty.
-
-One may set a ``CMAKE_WINDOWS_KITS_10_DIR`` *environment variable*
-to an absolute path to tell CMake to look for Windows 10 SDKs in
-a custom location.  The specified directory is expected to contain
-``Include/10.0.*`` directories.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_WINRT_BY_DEFAULT.rst b/share/cmake-3.18/Help/variable/CMAKE_VS_WINRT_BY_DEFAULT.rst
deleted file mode 100644
index 2eea424..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_VS_WINRT_BY_DEFAULT.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-CMAKE_VS_WINRT_BY_DEFAULT
--------------------------
-
-Inform :ref:`Visual Studio Generators` for VS 2010 and above that the
-target platform enables WinRT compilation by default and it needs to
-be explicitly disabled if ``/ZW`` or :prop_tgt:`VS_WINRT_COMPONENT` is
-omitted (as opposed to enabling it when either of those options is
-present)
-
-This makes cmake configuration consistent in terms of WinRT among
-platforms - if you did not enable the WinRT compilation explicitly, it
-will be disabled (by either not enabling it or explicitly disabling it)
-
-Note: WinRT compilation is always explicitly disabled for C language
-source files, even if it is expliclty enabled for a project
-
-This variable is meant to be set by a
-:variable:`toolchain file <CMAKE_TOOLCHAIN_FILE>` for such platforms.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst b/share/cmake-3.18/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst
deleted file mode 100644
index 1636842..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
---------------------------------
-
-Default value for :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property.
-This variable is used to initialize the property on each target as it is
-created.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_ATTRIBUTE_an-attribute.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_ATTRIBUTE_an-attribute.rst
deleted file mode 100644
index be683d6..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_ATTRIBUTE_an-attribute.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-CMAKE_XCODE_ATTRIBUTE_<an-attribute>
-------------------------------------
-
-Set Xcode target attributes directly.
-
-Tell the :generator:`Xcode` generator to set '<an-attribute>' to a given value
-in the generated Xcode project.  Ignored on other generators.
-
-See the :prop_tgt:`XCODE_ATTRIBUTE_<an-attribute>` target property
-to set attributes on a specific target.
-
-Contents of ``CMAKE_XCODE_ATTRIBUTE_<an-attribute>`` may use
-"generator expressions" with the syntax ``$<...>``.  See the
-:manual:`cmake-generator-expressions(7)` manual for available
-expressions.  See the :manual:`cmake-buildsystem(7)` manual
-for more on defining buildsystem properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_GENERATE_SCHEME.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_GENERATE_SCHEME.rst
deleted file mode 100644
index 5b1a003..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_GENERATE_SCHEME.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CMAKE_XCODE_GENERATE_SCHEME
----------------------------
-
-If enabled, the :generator:`Xcode` generator will generate schema files.  These
-are useful to invoke analyze, archive, build-for-testing and test
-actions from the command line.
-
-This variable initializes the
-:prop_tgt:`XCODE_GENERATE_SCHEME`
-target property on all targets.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY.rst
deleted file mode 100644
index ea3e240..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY
--------------------------------------------
-
-If enabled, the :generator:`Xcode` generator will generate only a
-single Xcode project file for the topmost :command:`project()` command
-instead of generating one for every ``project()`` command.
-
-This could be useful to speed up the CMake generation step for
-large projects and to work-around a bug in the ``ZERO_CHECK`` logic.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER.rst
deleted file mode 100644
index b972ba5..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER
-------------------------------------
-
-Whether to enable ``Address Sanitizer`` in the Diagnostics
-section of the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_ADDRESS_SANITIZER`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst
deleted file mode 100644
index 59eb32d..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
------------------------------------------------------
-
-Whether to enable ``Detect use of stack after return``
-in the Diagnostics section of the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst
deleted file mode 100644
index a264d36..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
---------------------------------------------
-
-Whether to enable
-``Allow debugging when using document Versions Browser``
-in the Options section of the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst
deleted file mode 100644
index 71bcf42..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
-----------------------------------------------
-
-Whether to disable the ``Main Thread Checker``
-in the Diagnostics section of the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst
deleted file mode 100644
index 53f55e6..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
-----------------------------------------
-
-Whether to enable ``Dynamic Library Loads``
-in the Diagnostics section of the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst
deleted file mode 100644
index 784ceb6..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
--------------------------------------------
-
-Whether to enable ``Dynamic Linker API usage``
-in the Diagnostics section of the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_ENVIRONMENT.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_ENVIRONMENT.rst
deleted file mode 100644
index 4832659..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_ENVIRONMENT.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-CMAKE_XCODE_SCHEME_ENVIRONMENT
-------------------------------
-
-Specify environment variables that should be added to the Arguments
-section of the generated Xcode scheme.
-
-If set to a list of environment variables and values of the form
-``MYVAR=value`` those environment variables will be added to the
-scheme.
-
-This variable initializes the :prop_tgt:`XCODE_SCHEME_ENVIRONMENT`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_GUARD_MALLOC.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_GUARD_MALLOC.rst
deleted file mode 100644
index 9350244..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_GUARD_MALLOC.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_XCODE_SCHEME_GUARD_MALLOC
--------------------------------
-
-Whether to enable ``Guard Malloc``
-in the Diagnostics section of the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_GUARD_MALLOC`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst
deleted file mode 100644
index 45a2dad..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
--------------------------------------------
-
-Whether to enable the ``Main Thread Checker`` option
-``Pause on issues``
-in the Diagnostics section of the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES.rst
deleted file mode 100644
index 94d1c61..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES
--------------------------------------
-
-Whether to enable ``Malloc Guard Edges``
-in the Diagnostics section of the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_MALLOC_GUARD_EDGES`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE.rst
deleted file mode 100644
index 9bf0eb4..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE
-----------------------------------
-
-Whether to enable ``Malloc Scribble``
-in the Diagnostics section of the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_MALLOC_SCRIBBLE`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_STACK.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_STACK.rst
deleted file mode 100644
index 4cc21ee..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_STACK.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_XCODE_SCHEME_MALLOC_STACK
--------------------------------
-
-Whether to enable ``Malloc Stack`` in the Diagnostics
-section of the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_MALLOC_STACK`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER.rst
deleted file mode 100644
index 6d1b56e..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_XCODE_SCHEME_THREAD_SANITIZER
------------------------------------
-
-Whether to enable ``Thread Sanitizer`` in the Diagnostics
-section of the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_THREAD_SANITIZER`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP.rst
deleted file mode 100644
index de40478..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP
-----------------------------------------
-
-Whether to enable ``Thread Sanitizer - Pause on issues``
-in the Diagnostics section of the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_THREAD_SANITIZER_STOP`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst
deleted file mode 100644
index ec5df66..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
-------------------------------------------------
-
-Whether to enable ``Undefined Behavior Sanitizer``
-in the Diagnostics section of the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst
deleted file mode 100644
index dcec9b0..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
------------------------------------------------------
-
-Whether to enable ``Undefined Behavior Sanitizer`` option
-``Pause on issues``
-in the Diagnostics section of the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_WORKING_DIRECTORY.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_WORKING_DIRECTORY.rst
deleted file mode 100644
index 5bb7907..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_WORKING_DIRECTORY.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_XCODE_SCHEME_WORKING_DIRECTORY
-------------------------------------
-
-Specify the ``Working Directory`` of the *Run* and *Profile*
-actions in the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_WORKING_DIRECTORY`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS.rst b/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS.rst
deleted file mode 100644
index 82e9d76..0000000
--- a/share/cmake-3.18/Help/variable/CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS
----------------------------------
-
-Whether to enable ``Zombie Objects``
-in the Diagnostics section of the generated Xcode scheme.
-
-This variable initializes the
-:prop_tgt:`XCODE_SCHEME_ZOMBIE_OBJECTS`
-property on all targets.
-
-Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
-documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst b/share/cmake-3.18/Help/variable/CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst
deleted file mode 100644
index 83d5ce7..0000000
--- a/share/cmake-3.18/Help/variable/CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
--------------------------------------------
-
-Default permissions for implicitly created directories during packaging.
-
-This variable serves the same purpose during packaging as the
-:variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable
-serves during installation (e.g. ``make install``).
-
-If `include(CPack)` is used then by default this variable is set to the content
-of :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS`.
diff --git a/share/cmake-3.18/Help/variable/CTEST_BINARY_DIRECTORY.rst b/share/cmake-3.18/Help/variable/CTEST_BINARY_DIRECTORY.rst
deleted file mode 100644
index fd8461f..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_BINARY_DIRECTORY.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_BINARY_DIRECTORY
-----------------------
-
-Specify the CTest ``BuildDirectory`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_BUILD_COMMAND.rst b/share/cmake-3.18/Help/variable/CTEST_BUILD_COMMAND.rst
deleted file mode 100644
index 7b13ba0..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_BUILD_COMMAND.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_BUILD_COMMAND
--------------------
-
-Specify the CTest ``MakeCommand`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_BUILD_NAME.rst b/share/cmake-3.18/Help/variable/CTEST_BUILD_NAME.rst
deleted file mode 100644
index d25d84c..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_BUILD_NAME.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_BUILD_NAME
-----------------
-
-Specify the CTest ``BuildName`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_BZR_COMMAND.rst b/share/cmake-3.18/Help/variable/CTEST_BZR_COMMAND.rst
deleted file mode 100644
index 474d621..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_BZR_COMMAND.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_BZR_COMMAND
------------------
-
-Specify the CTest ``BZRCommand`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_BZR_UPDATE_OPTIONS.rst b/share/cmake-3.18/Help/variable/CTEST_BZR_UPDATE_OPTIONS.rst
deleted file mode 100644
index d0f9579..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_BZR_UPDATE_OPTIONS.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_BZR_UPDATE_OPTIONS
-------------------------
-
-Specify the CTest ``BZRUpdateOptions`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_CHANGE_ID.rst b/share/cmake-3.18/Help/variable/CTEST_CHANGE_ID.rst
deleted file mode 100644
index a423f49..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_CHANGE_ID.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CTEST_CHANGE_ID
----------------
-
-Specify the CTest ``ChangeId`` setting
-in a :manual:`ctest(1)` dashboard client script.
-
-This setting allows CTest to pass arbitrary information about this
-build up to CDash.  One use of this feature is to allow CDash to
-post comments on your pull request if anything goes wrong with your build.
diff --git a/share/cmake-3.18/Help/variable/CTEST_CHECKOUT_COMMAND.rst b/share/cmake-3.18/Help/variable/CTEST_CHECKOUT_COMMAND.rst
deleted file mode 100644
index da256f2..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_CHECKOUT_COMMAND.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_CHECKOUT_COMMAND
-----------------------
-
-Tell the :command:`ctest_start` command how to checkout or initialize
-the source directory in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_CONFIGURATION_TYPE.rst b/share/cmake-3.18/Help/variable/CTEST_CONFIGURATION_TYPE.rst
deleted file mode 100644
index 9e277fa..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_CONFIGURATION_TYPE.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CTEST_CONFIGURATION_TYPE
-------------------------
-
-Specify the CTest ``DefaultCTestConfigurationType`` setting
-in a :manual:`ctest(1)` dashboard client script.
-
-If the configuration type is set via ``-C <cfg>`` from the command line
-then this variable is populated accordingly.
diff --git a/share/cmake-3.18/Help/variable/CTEST_CONFIGURE_COMMAND.rst b/share/cmake-3.18/Help/variable/CTEST_CONFIGURE_COMMAND.rst
deleted file mode 100644
index 5561b6d..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_CONFIGURE_COMMAND.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_CONFIGURE_COMMAND
------------------------
-
-Specify the CTest ``ConfigureCommand`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_COVERAGE_COMMAND.rst b/share/cmake-3.18/Help/variable/CTEST_COVERAGE_COMMAND.rst
deleted file mode 100644
index a78792e..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_COVERAGE_COMMAND.rst
+++ /dev/null
@@ -1,60 +0,0 @@
-CTEST_COVERAGE_COMMAND
-----------------------
-
-Specify the CTest ``CoverageCommand`` setting
-in a :manual:`ctest(1)` dashboard client script.
-
-Cobertura
-'''''''''
-
-Using `Cobertura`_ as the coverage generation within your multi-module
-Java project can generate a series of XML files.
-
-The Cobertura Coverage parser expects to read the coverage data from a
-single XML file which contains the coverage data for all modules.
-Cobertura has a program with the ability to merge given ``cobertura.ser`` files
-and then another program to generate a combined XML file from the previous
-merged file.  For command line testing, this can be done by hand prior to
-CTest looking for the coverage files. For script builds,
-set the ``CTEST_COVERAGE_COMMAND`` variable to point to a file which will
-perform these same steps, such as a ``.sh`` or ``.bat`` file.
-
-.. code-block:: cmake
-
-  set(CTEST_COVERAGE_COMMAND .../run-coverage-and-consolidate.sh)
-
-where the ``run-coverage-and-consolidate.sh`` script is perhaps created by
-the :command:`configure_file` command and might contain the following code:
-
-.. code-block:: bash
-
-  #!/usr/bin/env bash
-  CoberturaFiles="$(find "/path/to/source" -name "cobertura.ser")"
-  SourceDirs="$(find "/path/to/source" -name "java" -type d)"
-  cobertura-merge --datafile coberturamerge.ser $CoberturaFiles
-  cobertura-report --datafile coberturamerge.ser --destination . \
-                   --format xml $SourceDirs
-
-The script uses ``find`` to capture the paths to all of the ``cobertura.ser``
-files found below the project's source directory.  It keeps the list of files
-and supplies it as an argument to the ``cobertura-merge`` program. The
-``--datafile`` argument signifies where the result of the merge will be kept.
-
-The combined ``coberturamerge.ser`` file is then used to generate the XML report
-using the ``cobertura-report`` program.  The call to the cobertura-report
-program requires some named arguments.
-
-``--datafila``
-  path to the merged ``.ser`` file
-
-``--destination``
-  path to put the output files(s)
-
-``--format``
-  file format to write output in: xml or html
-
-The rest of the supplied arguments consist of the full paths to the
-``/src/main/java`` directories of each module within the source tree. These
-directories are needed and should not be forgotten.
-
-.. _`Cobertura`: http://cobertura.github.io/cobertura/
diff --git a/share/cmake-3.18/Help/variable/CTEST_COVERAGE_EXTRA_FLAGS.rst b/share/cmake-3.18/Help/variable/CTEST_COVERAGE_EXTRA_FLAGS.rst
deleted file mode 100644
index 2981955..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_COVERAGE_EXTRA_FLAGS.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_COVERAGE_EXTRA_FLAGS
---------------------------
-
-Specify the CTest ``CoverageExtraFlags`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_CURL_OPTIONS.rst b/share/cmake-3.18/Help/variable/CTEST_CURL_OPTIONS.rst
deleted file mode 100644
index fc5dfc4..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_CURL_OPTIONS.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_CURL_OPTIONS
-------------------
-
-Specify the CTest ``CurlOptions`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.rst b/share/cmake-3.18/Help/variable/CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.rst
deleted file mode 100644
index 5aeae88..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE
---------------------------------------------
-
-When saving a failing test's output, this is the maximum size, in bytes, that
-will be collected by the :command:`ctest_test` command. Defaults to 307200
-(300 KiB).
-
-.. include:: CTEST_CUSTOM_XXX.txt
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.rst b/share/cmake-3.18/Help/variable/CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.rst
deleted file mode 100644
index 1fbb8c5..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE
---------------------------------------------
-
-When saving a passing test's output, this is the maximum size, in bytes, that
-will be collected by the :command:`ctest_test` command. Defaults to 1024
-(1 KiB).
-
-.. include:: CTEST_CUSTOM_XXX.txt
diff --git a/share/cmake-3.18/Help/variable/CTEST_CVS_CHECKOUT.rst b/share/cmake-3.18/Help/variable/CTEST_CVS_CHECKOUT.rst
deleted file mode 100644
index 6431c02..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_CVS_CHECKOUT.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-CTEST_CVS_CHECKOUT
-------------------
-
-Deprecated.  Use :variable:`CTEST_CHECKOUT_COMMAND` instead.
diff --git a/share/cmake-3.18/Help/variable/CTEST_CVS_COMMAND.rst b/share/cmake-3.18/Help/variable/CTEST_CVS_COMMAND.rst
deleted file mode 100644
index 049700b..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_CVS_COMMAND.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_CVS_COMMAND
------------------
-
-Specify the CTest ``CVSCommand`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_CVS_UPDATE_OPTIONS.rst b/share/cmake-3.18/Help/variable/CTEST_CVS_UPDATE_OPTIONS.rst
deleted file mode 100644
index d7f2f7c..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_CVS_UPDATE_OPTIONS.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_CVS_UPDATE_OPTIONS
-------------------------
-
-Specify the CTest ``CVSUpdateOptions`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_DROP_LOCATION.rst b/share/cmake-3.18/Help/variable/CTEST_DROP_LOCATION.rst
deleted file mode 100644
index c0f2215..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_DROP_LOCATION.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_DROP_LOCATION
--------------------
-
-Specify the CTest ``DropLocation`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_DROP_METHOD.rst b/share/cmake-3.18/Help/variable/CTEST_DROP_METHOD.rst
deleted file mode 100644
index 50fbd4d..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_DROP_METHOD.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_DROP_METHOD
------------------
-
-Specify the CTest ``DropMethod`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_DROP_SITE.rst b/share/cmake-3.18/Help/variable/CTEST_DROP_SITE.rst
deleted file mode 100644
index d15d99b..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_DROP_SITE.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_DROP_SITE
----------------
-
-Specify the CTest ``DropSite`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_DROP_SITE_CDASH.rst b/share/cmake-3.18/Help/variable/CTEST_DROP_SITE_CDASH.rst
deleted file mode 100644
index 22b9776..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_DROP_SITE_CDASH.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_DROP_SITE_CDASH
----------------------
-
-Specify the CTest ``IsCDash`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_DROP_SITE_PASSWORD.rst b/share/cmake-3.18/Help/variable/CTEST_DROP_SITE_PASSWORD.rst
deleted file mode 100644
index 904d2c8..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_DROP_SITE_PASSWORD.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_DROP_SITE_PASSWORD
-------------------------
-
-Specify the CTest ``DropSitePassword`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_DROP_SITE_USER.rst b/share/cmake-3.18/Help/variable/CTEST_DROP_SITE_USER.rst
deleted file mode 100644
index a860a03..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_DROP_SITE_USER.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_DROP_SITE_USER
---------------------
-
-Specify the CTest ``DropSiteUser`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_EXTRA_COVERAGE_GLOB.rst b/share/cmake-3.18/Help/variable/CTEST_EXTRA_COVERAGE_GLOB.rst
deleted file mode 100644
index 286f7df..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_EXTRA_COVERAGE_GLOB.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CTEST_EXTRA_COVERAGE_GLOB
--------------------------
-
-A list of regular expressions which will be used to find files which should be
-covered by the :command:`ctest_coverage` command.
-
-.. include:: CTEST_CUSTOM_XXX.txt
diff --git a/share/cmake-3.18/Help/variable/CTEST_GIT_COMMAND.rst b/share/cmake-3.18/Help/variable/CTEST_GIT_COMMAND.rst
deleted file mode 100644
index eb83792..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_GIT_COMMAND.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_GIT_COMMAND
------------------
-
-Specify the CTest ``GITCommand`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst b/share/cmake-3.18/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst
deleted file mode 100644
index fd27003..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_GIT_INIT_SUBMODULES
--------------------------
-
-Specify the CTest ``GITInitSubmodules`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_GIT_UPDATE_CUSTOM.rst b/share/cmake-3.18/Help/variable/CTEST_GIT_UPDATE_CUSTOM.rst
deleted file mode 100644
index 0c479e6..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_GIT_UPDATE_CUSTOM.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_GIT_UPDATE_CUSTOM
------------------------
-
-Specify the CTest ``GITUpdateCustom`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_GIT_UPDATE_OPTIONS.rst b/share/cmake-3.18/Help/variable/CTEST_GIT_UPDATE_OPTIONS.rst
deleted file mode 100644
index 4590a78..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_GIT_UPDATE_OPTIONS.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_GIT_UPDATE_OPTIONS
-------------------------
-
-Specify the CTest ``GITUpdateOptions`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_HG_COMMAND.rst b/share/cmake-3.18/Help/variable/CTEST_HG_COMMAND.rst
deleted file mode 100644
index 3854950..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_HG_COMMAND.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_HG_COMMAND
-----------------
-
-Specify the CTest ``HGCommand`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_HG_UPDATE_OPTIONS.rst b/share/cmake-3.18/Help/variable/CTEST_HG_UPDATE_OPTIONS.rst
deleted file mode 100644
index 9049c1f..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_HG_UPDATE_OPTIONS.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_HG_UPDATE_OPTIONS
------------------------
-
-Specify the CTest ``HGUpdateOptions`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_LABELS_FOR_SUBPROJECTS.rst b/share/cmake-3.18/Help/variable/CTEST_LABELS_FOR_SUBPROJECTS.rst
deleted file mode 100644
index 959596b..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_LABELS_FOR_SUBPROJECTS.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_LABELS_FOR_SUBPROJECTS
-----------------------------
-
-Specify the CTest ``LabelsForSubprojects`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_MEMORYCHECK_COMMAND.rst b/share/cmake-3.18/Help/variable/CTEST_MEMORYCHECK_COMMAND.rst
deleted file mode 100644
index 8c199ba..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_MEMORYCHECK_COMMAND.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_MEMORYCHECK_COMMAND
--------------------------
-
-Specify the CTest ``MemoryCheckCommand`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS.rst b/share/cmake-3.18/Help/variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS.rst
deleted file mode 100644
index 3e26ab5..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_MEMORYCHECK_COMMAND_OPTIONS
----------------------------------
-
-Specify the CTest ``MemoryCheckCommandOptions`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS.rst b/share/cmake-3.18/Help/variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS.rst
deleted file mode 100644
index 2de5fb6..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_MEMORYCHECK_SANITIZER_OPTIONS
------------------------------------
-
-Specify the CTest ``MemoryCheckSanitizerOptions`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE.rst b/share/cmake-3.18/Help/variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE.rst
deleted file mode 100644
index 1147ee8..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_MEMORYCHECK_SUPPRESSIONS_FILE
------------------------------------
-
-Specify the CTest ``MemoryCheckSuppressionFile`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_MEMORYCHECK_TYPE.rst b/share/cmake-3.18/Help/variable/CTEST_MEMORYCHECK_TYPE.rst
deleted file mode 100644
index 4e7d5c0..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_MEMORYCHECK_TYPE.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-CTEST_MEMORYCHECK_TYPE
-----------------------
-
-Specify the CTest ``MemoryCheckType`` setting
-in a :manual:`ctest(1)` dashboard client script.
-Valid values are ``Valgrind``, ``Purify``, ``BoundsChecker``, ``DrMemory`` and
-``ThreadSanitizer``, ``AddressSanitizer``, ``LeakSanitizer``, ``MemorySanitizer``, and
-``UndefinedBehaviorSanitizer``.
diff --git a/share/cmake-3.18/Help/variable/CTEST_NIGHTLY_START_TIME.rst b/share/cmake-3.18/Help/variable/CTEST_NIGHTLY_START_TIME.rst
deleted file mode 100644
index 90841f9..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_NIGHTLY_START_TIME.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-CTEST_NIGHTLY_START_TIME
-------------------------
-
-Specify the CTest ``NightlyStartTime`` setting in a :manual:`ctest(1)`
-dashboard client script.
-
-Note that this variable must always be set for a nightly build in a
-dashboard script. It is needed so that nightly builds can be properly grouped
-together in CDash.
diff --git a/share/cmake-3.18/Help/variable/CTEST_P4_CLIENT.rst b/share/cmake-3.18/Help/variable/CTEST_P4_CLIENT.rst
deleted file mode 100644
index 347ea54..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_P4_CLIENT.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_P4_CLIENT
----------------
-
-Specify the CTest ``P4Client`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_P4_COMMAND.rst b/share/cmake-3.18/Help/variable/CTEST_P4_COMMAND.rst
deleted file mode 100644
index defab12..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_P4_COMMAND.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_P4_COMMAND
-----------------
-
-Specify the CTest ``P4Command`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_P4_OPTIONS.rst b/share/cmake-3.18/Help/variable/CTEST_P4_OPTIONS.rst
deleted file mode 100644
index fee4ce2..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_P4_OPTIONS.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_P4_OPTIONS
-----------------
-
-Specify the CTest ``P4Options`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_P4_UPDATE_OPTIONS.rst b/share/cmake-3.18/Help/variable/CTEST_P4_UPDATE_OPTIONS.rst
deleted file mode 100644
index 0e2790f..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_P4_UPDATE_OPTIONS.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_P4_UPDATE_OPTIONS
------------------------
-
-Specify the CTest ``P4UpdateOptions`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_RESOURCE_SPEC_FILE.rst b/share/cmake-3.18/Help/variable/CTEST_RESOURCE_SPEC_FILE.rst
deleted file mode 100644
index a6fdbc9..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_RESOURCE_SPEC_FILE.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-CTEST_RESOURCE_SPEC_FILE
-------------------------
-
-Specify the CTest ``ResourceSpecFile`` setting in a :manual:`ctest(1)`
-dashboard client script.
-
-This can also be used to specify the resource spec file from a CMake build. If
-no ``RESOURCE_SPEC_FILE`` is passed to :command:`ctest_test`, and
-``CTEST_RESOURCE_SPEC_FILE`` is not specified in the dashboard script, the
-value of this variable from the build is used.
diff --git a/share/cmake-3.18/Help/variable/CTEST_RUN_CURRENT_SCRIPT.rst b/share/cmake-3.18/Help/variable/CTEST_RUN_CURRENT_SCRIPT.rst
deleted file mode 100644
index abc123c..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_RUN_CURRENT_SCRIPT.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_RUN_CURRENT_SCRIPT
-------------------------
-
-Setting this to 0 prevents :manual:`ctest(1)` from being run again when it
-reaches the end of a script run by calling ``ctest -S``.
diff --git a/share/cmake-3.18/Help/variable/CTEST_SCP_COMMAND.rst b/share/cmake-3.18/Help/variable/CTEST_SCP_COMMAND.rst
deleted file mode 100644
index 19ea8b3..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_SCP_COMMAND.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-CTEST_SCP_COMMAND
------------------
-
-Legacy option.  Not used.
diff --git a/share/cmake-3.18/Help/variable/CTEST_SITE.rst b/share/cmake-3.18/Help/variable/CTEST_SITE.rst
deleted file mode 100644
index 8a5ec25..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_SITE.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_SITE
-----------
-
-Specify the CTest ``Site`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_SOURCE_DIRECTORY.rst b/share/cmake-3.18/Help/variable/CTEST_SOURCE_DIRECTORY.rst
deleted file mode 100644
index b6837d1..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_SOURCE_DIRECTORY.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_SOURCE_DIRECTORY
-----------------------
-
-Specify the CTest ``SourceDirectory`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_SUBMIT_URL.rst b/share/cmake-3.18/Help/variable/CTEST_SUBMIT_URL.rst
deleted file mode 100644
index 7d84da4..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_SUBMIT_URL.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_SUBMIT_URL
-----------------
-
-Specify the CTest ``SubmitURL`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_SVN_COMMAND.rst b/share/cmake-3.18/Help/variable/CTEST_SVN_COMMAND.rst
deleted file mode 100644
index af90143..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_SVN_COMMAND.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_SVN_COMMAND
------------------
-
-Specify the CTest ``SVNCommand`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_SVN_OPTIONS.rst b/share/cmake-3.18/Help/variable/CTEST_SVN_OPTIONS.rst
deleted file mode 100644
index 76551dc..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_SVN_OPTIONS.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_SVN_OPTIONS
------------------
-
-Specify the CTest ``SVNOptions`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_SVN_UPDATE_OPTIONS.rst b/share/cmake-3.18/Help/variable/CTEST_SVN_UPDATE_OPTIONS.rst
deleted file mode 100644
index 5f01a19..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_SVN_UPDATE_OPTIONS.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_SVN_UPDATE_OPTIONS
-------------------------
-
-Specify the CTest ``SVNUpdateOptions`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_TEST_LOAD.rst b/share/cmake-3.18/Help/variable/CTEST_TEST_LOAD.rst
deleted file mode 100644
index 80823fe..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_TEST_LOAD.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-CTEST_TEST_LOAD
----------------
-
-Specify the ``TestLoad`` setting in the :ref:`CTest Test Step`
-of a :manual:`ctest(1)` dashboard client script.  This sets the
-default value for the ``TEST_LOAD`` option of the :command:`ctest_test`
-command.
diff --git a/share/cmake-3.18/Help/variable/CTEST_TEST_TIMEOUT.rst b/share/cmake-3.18/Help/variable/CTEST_TEST_TIMEOUT.rst
deleted file mode 100644
index c031437..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_TEST_TIMEOUT.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_TEST_TIMEOUT
-------------------
-
-Specify the CTest ``TimeOut`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_TRIGGER_SITE.rst b/share/cmake-3.18/Help/variable/CTEST_TRIGGER_SITE.rst
deleted file mode 100644
index a50e405..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_TRIGGER_SITE.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-CTEST_TRIGGER_SITE
-------------------
-
-Legacy option.  Not used.
diff --git a/share/cmake-3.18/Help/variable/CTEST_UPDATE_COMMAND.rst b/share/cmake-3.18/Help/variable/CTEST_UPDATE_COMMAND.rst
deleted file mode 100644
index 90155d0..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_UPDATE_COMMAND.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_UPDATE_COMMAND
---------------------
-
-Specify the CTest ``UpdateCommand`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_UPDATE_OPTIONS.rst b/share/cmake-3.18/Help/variable/CTEST_UPDATE_OPTIONS.rst
deleted file mode 100644
index e43d61d..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_UPDATE_OPTIONS.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_UPDATE_OPTIONS
---------------------
-
-Specify the CTest ``UpdateOptions`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst b/share/cmake-3.18/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst
deleted file mode 100644
index a862baa..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_UPDATE_VERSION_ONLY
--------------------------
-
-Specify the CTest :ref:`UpdateVersionOnly <UpdateVersionOnly>` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_UPDATE_VERSION_OVERRIDE.rst b/share/cmake-3.18/Help/variable/CTEST_UPDATE_VERSION_OVERRIDE.rst
deleted file mode 100644
index 39fbaba..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_UPDATE_VERSION_OVERRIDE.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_UPDATE_VERSION_OVERRIDE
------------------------------
-
-Specify the CTest :ref:`UpdateVersionOverride <UpdateVersionOverride>` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_USE_LAUNCHERS.rst b/share/cmake-3.18/Help/variable/CTEST_USE_LAUNCHERS.rst
deleted file mode 100644
index 9f48a2e..0000000
--- a/share/cmake-3.18/Help/variable/CTEST_USE_LAUNCHERS.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-CTEST_USE_LAUNCHERS
--------------------
-
-Specify the CTest ``UseLaunchers`` setting
-in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/EXECUTABLE_OUTPUT_PATH.rst b/share/cmake-3.18/Help/variable/EXECUTABLE_OUTPUT_PATH.rst
deleted file mode 100644
index 26d3e92..0000000
--- a/share/cmake-3.18/Help/variable/EXECUTABLE_OUTPUT_PATH.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-EXECUTABLE_OUTPUT_PATH
-----------------------
-
-Old executable location variable.
-
-The target property :prop_tgt:`RUNTIME_OUTPUT_DIRECTORY` supercedes this
-variable for a target if it is set.  Executable targets are otherwise placed in
-this directory.
diff --git a/share/cmake-3.18/Help/variable/GHS-MULTI.rst b/share/cmake-3.18/Help/variable/GHS-MULTI.rst
deleted file mode 100644
index fe3b17e..0000000
--- a/share/cmake-3.18/Help/variable/GHS-MULTI.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-GHS-MULTI
----------
-
-``True`` when using :generator:`Green Hills MULTI` generator.
diff --git a/share/cmake-3.18/Help/variable/IOS.rst b/share/cmake-3.18/Help/variable/IOS.rst
deleted file mode 100644
index e5cc3f6..0000000
--- a/share/cmake-3.18/Help/variable/IOS.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-IOS
----
-
-Set to ``1`` when the target system (:variable:`CMAKE_SYSTEM_NAME`) is ``iOS``.
diff --git a/share/cmake-3.18/Help/variable/MINGW.rst b/share/cmake-3.18/Help/variable/MINGW.rst
deleted file mode 100644
index 6d29be4..0000000
--- a/share/cmake-3.18/Help/variable/MINGW.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-MINGW
------
-
-``True`` when using MinGW
-
-Set to ``true`` when the compiler is some version of MinGW.
diff --git a/share/cmake-3.18/Help/variable/MSVC.rst b/share/cmake-3.18/Help/variable/MSVC.rst
deleted file mode 100644
index ca8775c..0000000
--- a/share/cmake-3.18/Help/variable/MSVC.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-MSVC
-----
-
-Set to ``true`` when the compiler is some version of Microsoft Visual
-C++ or another compiler simulating Visual C++.  Any compiler defining
-``_MSC_VER`` is considered simulating Visual C++.
-
-See also the :variable:`MSVC_VERSION` variable.
diff --git a/share/cmake-3.18/Help/variable/MSVC14.rst b/share/cmake-3.18/Help/variable/MSVC14.rst
deleted file mode 100644
index 79e0c10..0000000
--- a/share/cmake-3.18/Help/variable/MSVC14.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-MSVC14
-------
-
-Discouraged.  Use the :variable:`MSVC_VERSION` variable instead.
-
-``True`` when using the Microsoft Visual Studio ``v140`` or ``v141``
-toolset (``cl`` version 19) or another compiler that simulates it.
diff --git a/share/cmake-3.18/Help/variable/MSVC_IDE.rst b/share/cmake-3.18/Help/variable/MSVC_IDE.rst
deleted file mode 100644
index 027d1bc..0000000
--- a/share/cmake-3.18/Help/variable/MSVC_IDE.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-MSVC_IDE
---------
-
-``True`` when using the Microsoft Visual C++ IDE.
-
-Set to ``true`` when the target platform is the Microsoft Visual C++ IDE, as
-opposed to the command line compiler.
diff --git a/share/cmake-3.18/Help/variable/MSVC_TOOLSET_VERSION.rst b/share/cmake-3.18/Help/variable/MSVC_TOOLSET_VERSION.rst
deleted file mode 100644
index f4a33e2..0000000
--- a/share/cmake-3.18/Help/variable/MSVC_TOOLSET_VERSION.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-MSVC_TOOLSET_VERSION
---------------------
-
-The toolset version of Microsoft Visual C/C++ being used if any.
-If MSVC-like is being used, this variable is set based on the version
-of the compiler as given by the :variable:`MSVC_VERSION` variable.
-
-Known toolset version numbers are::
-
-  80        = VS 2005 (8.0)
-  90        = VS 2008 (9.0)
-  100       = VS 2010 (10.0)
-  110       = VS 2012 (11.0)
-  120       = VS 2013 (12.0)
-  140       = VS 2015 (14.0)
-  141       = VS 2017 (15.0)
-  142       = VS 2019 (16.0)
-
-Compiler versions newer than those known to CMake will be reported
-as the latest known toolset version.
-
-See also the :variable:`MSVC_VERSION` variable.
diff --git a/share/cmake-3.18/Help/variable/MSVC_VERSION.rst b/share/cmake-3.18/Help/variable/MSVC_VERSION.rst
deleted file mode 100644
index 45df37f..0000000
--- a/share/cmake-3.18/Help/variable/MSVC_VERSION.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-MSVC_VERSION
-------------
-
-The version of Microsoft Visual C/C++ being used if any.
-If a compiler simulating Visual C++ is being used, this variable is set
-to the toolset version simulated as given by the ``_MSC_VER``
-preprocessor definition.
-
-Known version numbers are::
-
-  1200      = VS  6.0
-  1300      = VS  7.0
-  1310      = VS  7.1
-  1400      = VS  8.0 (v80 toolset)
-  1500      = VS  9.0 (v90 toolset)
-  1600      = VS 10.0 (v100 toolset)
-  1700      = VS 11.0 (v110 toolset)
-  1800      = VS 12.0 (v120 toolset)
-  1900      = VS 14.0 (v140 toolset)
-  1910-1919 = VS 15.0 (v141 toolset)
-  1920-1929 = VS 16.0 (v142 toolset)
-
-See also the  :variable:`CMAKE_<LANG>_COMPILER_VERSION` and
-:variable:`MSVC_TOOLSET_VERSION` variable.
diff --git a/share/cmake-3.18/Help/variable/MSYS.rst b/share/cmake-3.18/Help/variable/MSYS.rst
deleted file mode 100644
index 25ddc7f..0000000
--- a/share/cmake-3.18/Help/variable/MSYS.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-MSYS
-----
-
-``True`` when using the :generator:`MSYS Makefiles` generator.
diff --git a/share/cmake-3.18/Help/variable/PROJECT-NAME_DESCRIPTION.rst b/share/cmake-3.18/Help/variable/PROJECT-NAME_DESCRIPTION.rst
deleted file mode 100644
index 2b88b1a..0000000
--- a/share/cmake-3.18/Help/variable/PROJECT-NAME_DESCRIPTION.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-<PROJECT-NAME>_DESCRIPTION
---------------------------
-
-Value given to the ``DESCRIPTION`` option of the most recent call to the
-:command:`project` command with project name ``<PROJECT-NAME>``, if any.
diff --git a/share/cmake-3.18/Help/variable/PROJECT-NAME_HOMEPAGE_URL.rst b/share/cmake-3.18/Help/variable/PROJECT-NAME_HOMEPAGE_URL.rst
deleted file mode 100644
index 22cc304..0000000
--- a/share/cmake-3.18/Help/variable/PROJECT-NAME_HOMEPAGE_URL.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-<PROJECT-NAME>_HOMEPAGE_URL
----------------------------
-
-Value given to the ``HOMEPAGE_URL`` option of the most recent call to the
-:command:`project` command with project name ``<PROJECT-NAME>``, if any.
diff --git a/share/cmake-3.18/Help/variable/PROJECT_DESCRIPTION.rst b/share/cmake-3.18/Help/variable/PROJECT_DESCRIPTION.rst
deleted file mode 100644
index 2833e11..0000000
--- a/share/cmake-3.18/Help/variable/PROJECT_DESCRIPTION.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-PROJECT_DESCRIPTION
--------------------
-
-Short project description given to the project command.
-
-This is the description given to the most recently called :command:`project`
-command in the current directory scope or above.  To obtain the description
-of the top level project, see the :variable:`CMAKE_PROJECT_DESCRIPTION`
-variable.
diff --git a/share/cmake-3.18/Help/variable/PROJECT_HOMEPAGE_URL.rst b/share/cmake-3.18/Help/variable/PROJECT_HOMEPAGE_URL.rst
deleted file mode 100644
index 754c9e8..0000000
--- a/share/cmake-3.18/Help/variable/PROJECT_HOMEPAGE_URL.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-PROJECT_HOMEPAGE_URL
---------------------
-
-The homepage URL of the project.
-
-This is the homepage URL given to the most recently called :command:`project`
-command in the current directory scope or above.  To obtain the homepage URL
-of the top level project, see the :variable:`CMAKE_PROJECT_HOMEPAGE_URL`
-variable.
diff --git a/share/cmake-3.18/Help/variable/PackageName_ROOT.rst b/share/cmake-3.18/Help/variable/PackageName_ROOT.rst
deleted file mode 100644
index 1c2fd34..0000000
--- a/share/cmake-3.18/Help/variable/PackageName_ROOT.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-<PackageName>_ROOT
-------------------
-
-Calls to :command:`find_package(<PackageName>)` will search in prefixes
-specified by the ``<PackageName>_ROOT`` CMake variable, where
-``<PackageName>`` is the name given to the :command:`find_package` call
-and ``_ROOT`` is literal.  For example, ``find_package(Foo)`` will search
-prefixes specified in the ``Foo_ROOT`` CMake variable (if set).
-See policy :policy:`CMP0074`.
-
-This variable may hold a single prefix or a
-:ref:`semicolon-separated list <CMake Language Lists>` of multiple prefixes.
-
-See also the :envvar:`<PackageName>_ROOT` environment variable.
diff --git a/share/cmake-3.18/Help/variable/WINCE.rst b/share/cmake-3.18/Help/variable/WINCE.rst
deleted file mode 100644
index 54ff7de..0000000
--- a/share/cmake-3.18/Help/variable/WINCE.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-WINCE
------
-
-True when the :variable:`CMAKE_SYSTEM_NAME` variable is set
-to ``WindowsCE``.
diff --git a/share/cmake-3.18/Help/variable/WINDOWS_PHONE.rst b/share/cmake-3.18/Help/variable/WINDOWS_PHONE.rst
deleted file mode 100644
index 61d91b0..0000000
--- a/share/cmake-3.18/Help/variable/WINDOWS_PHONE.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-WINDOWS_PHONE
--------------
-
-True when the :variable:`CMAKE_SYSTEM_NAME` variable is set
-to ``WindowsPhone``.
diff --git a/share/cmake-3.18/Help/variable/WINDOWS_STORE.rst b/share/cmake-3.18/Help/variable/WINDOWS_STORE.rst
deleted file mode 100644
index dae3b53..0000000
--- a/share/cmake-3.18/Help/variable/WINDOWS_STORE.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-WINDOWS_STORE
--------------
-
-True when the :variable:`CMAKE_SYSTEM_NAME` variable is set
-to ``WindowsStore``.
diff --git a/share/cmake-3.18/Help/variable/XCODE.rst b/share/cmake-3.18/Help/variable/XCODE.rst
deleted file mode 100644
index 99f20fb..0000000
--- a/share/cmake-3.18/Help/variable/XCODE.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-XCODE
------
-
-``True`` when using :generator:`Xcode` generator.
diff --git a/share/cmake-3.18/Modules/AddFileDependencies.cmake b/share/cmake-3.18/Modules/AddFileDependencies.cmake
deleted file mode 100644
index 598a52f..0000000
--- a/share/cmake-3.18/Modules/AddFileDependencies.cmake
+++ /dev/null
@@ -1,28 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-AddFileDependencies
--------------------
-
-Add dependencies to a source file.
-
-.. code-block:: cmake
-
-  ADD_FILE_DEPENDENCIES(<source> <files>)
-
-Adds the given ``<files>`` to the dependencies of file ``<source>``.
-#]=======================================================================]
-
-macro(ADD_FILE_DEPENDENCIES _file)
-
-  get_source_file_property(_deps ${_file} OBJECT_DEPENDS)
-  if (_deps)
-    set(_deps ${_deps} ${ARGN})
-  else ()
-    set(_deps ${ARGN})
-  endif ()
-
-  set_source_files_properties(${_file} PROPERTIES OBJECT_DEPENDS "${_deps}")
-
-endmacro()
diff --git a/share/cmake-3.18/Modules/AndroidTestUtilities.cmake b/share/cmake-3.18/Modules/AndroidTestUtilities.cmake
deleted file mode 100644
index 95e2ef7..0000000
--- a/share/cmake-3.18/Modules/AndroidTestUtilities.cmake
+++ /dev/null
@@ -1,162 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[======================================================================[.rst:
-AndroidTestUtilities
-------------------------
-
-Create a test that automatically loads specified data onto an Android device.
-
-Introduction
-^^^^^^^^^^^^
-
-Use this module to push data needed for testing an Android device behavior
-onto a connected Android device. The module will accept files and libraries as
-well as separate destinations for each. It will create a test that loads the
-files into a device object store and link to them from the specified
-destination. The files are only uploaded if they are not already in the object
-store.
-
-For example:
-
-.. code-block:: cmake
-
-  include(AndroidTestUtilities)
-  android_add_test_data(
-    example_setup_test
-    FILES <files>...
-    LIBS <libs>...
-    DEVICE_TEST_DIR "/data/local/tests/example"
-    DEVICE_OBJECT_STORE "/sdcard/.ExternalData/SHA"
-    )
-
-
-At build time a test named "example_setup_test" will be created.  Run this test
-on the command line with :manual:`ctest(1)` to load the data onto the Android
-device.
-
-Module Functions
-^^^^^^^^^^^^^^^^
-
-.. command:: android_add_test_data
-
-  .. code-block:: cmake
-
-    android_add_test_data(<test-name>
-      [FILES <files>...] [FILES_DEST <device-dir>]
-      [LIBS <libs>...]   [LIBS_DEST <device-dir>]
-      [DEVICE_OBJECT_STORE <device-dir>]
-      [DEVICE_TEST_DIR <device-dir>]
-      [NO_LINK_REGEX <strings>...]
-      )
-
-  The ``android_add_test_data`` function is used to copy files and libraries
-  needed to run project-specific tests. On the host operating system, this is
-  done at build time. For on-device testing, the files are loaded onto the
-  device by the manufactured test at run time.
-
-  This function accepts the following named parameters:
-
-  ``FILES <files>...``
-    zero or more files needed for testing
-  ``LIBS <libs>...``
-    zero or more libraries needed for testing
-  ``FILES_DEST <device-dir>``
-    absolute path where the data files are expected to be
-  ``LIBS_DEST <device-dir>``
-    absolute path where the libraries are expected to be
-  ``DEVICE_OBJECT_STORE <device-dir>``
-    absolute path to the location where the data is stored on-device
-  ``DEVICE_TEST_DIR <device-dir>``
-    absolute path to the root directory of the on-device test location
-  ``NO_LINK_REGEX <strings>...``
-    list of regex strings matching the names of files that should be
-    copied from the object store to the testing directory
-#]======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/ExternalData.cmake)
-
-# The parameters to this function should be set to the list of directories,
-# files, and libraries that need to be installed prior to testing.
-function(android_add_test_data test_name)
-  # As the names suggest, oneValueArgs lists the arguments that specify a
-  # single value, while multiValueArgs can contain one or more values.
-  set(keywordArgs)
-  set(oneValueArgs FILES_DEST LIBS_DEST DEVICE_OBJECT_STORE DEVICE_TEST_DIR)
-  set(multiValueArgs FILES LIBS NO_LINK_REGEX)
-
-  # For example, if you called this function with FILES </path/to/file>
-  # then this path would be stored in the variable AST_FILES.
-  # The AST prefix stands for the name of this function (android_add_test_data).
-  cmake_parse_arguments(AST "${keywordArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
-  if(NOT AST_DEVICE_TEST_DIR)
-    message(FATAL_ERROR "-- You must specify the location of the on device test directory.")
-  endif()
-  if(NOT AST_DEVICE_OBJECT_STORE)
-    message(FATAL_ERROR "-- You must specify the location of the on device object store.")
-  endif()
-  if(${AST_DEVICE_TEST_DIR} STREQUAL "/")
-    message(FATAL_ERROR "-- The device test directory cannot be '/'")
-  endif()
-
-  # Copy all test data files into the binary directory, where tests are run.
-  # ExternalData will handle fetching DATA{...} references.
-  string(REPLACE "|" ";" hash_algs "${_ExternalData_REGEX_EXT}")
-  # Convert ExternalData placeholder file names to DATA{} syntax.
-  foreach(alg ${hash_algs})
-    string(REGEX REPLACE "([^ ;]+)\\.${alg}" "DATA{\\1}" AST_FILES "${AST_FILES}")
-  endforeach()
-
-  set(DATA_TARGET_NAME "${test_name}")
-  string(FIND "${AST_FILES}" "DATA{" data_files_found)
-  if(${data_files_found} GREATER "-1")
-    # Use ExternalData if any DATA{} files were found.
-    ExternalData_Expand_Arguments(
-      ${DATA_TARGET_NAME}
-      extern_data_output
-      ${AST_FILES})
-    ExternalData_Add_Target(${DATA_TARGET_NAME})
-  else()
-    add_custom_target(${DATA_TARGET_NAME} ALL)
-    set(extern_data_output ${AST_FILES})
-  endif()
-
-  # For regular files on Linux, just copy them directly.
-  foreach(path ${AST_FILES})
-    foreach(output ${extern_data_output})
-      if(${output} STREQUAL ${path})
-        # Check if a destination was specified.  If not, we copy by default
-        # into this project's binary directory, preserving its relative path.
-        if(AST_${VAR}_DEST)
-          set(DEST ${CMAKE_BINARY_DIR}/${parent_dir}/${AST_${VAR}_DEST})
-        else()
-          get_filename_component(parent_dir ${path} DIRECTORY)
-          set(DEST "${CMAKE_BINARY_DIR}/${parent_dir}")
-        endif()
-        get_filename_component(extern_data_source ${output} REALPATH)
-        get_filename_component(extern_data_basename ${output} NAME)
-        add_custom_command(
-          TARGET ${DATA_TARGET_NAME} POST_BUILD
-          DEPENDS ${extern_data_source}
-          COMMAND ${CMAKE_COMMAND} -E copy_if_different ${extern_data_source} ${DEST}/${extern_data_basename}
-        )
-      endif()
-    endforeach()
-  endforeach()
-
-  if(ANDROID)
-    string(REGEX REPLACE "DATA{([^ ;]+)}" "\\1"  processed_FILES "${AST_FILES}")
-    add_test(
-      NAME ${test_name}
-      COMMAND ${CMAKE_COMMAND}
-      "-Darg_files_dest=${AST_FILES_DEST}"
-      "-Darg_libs_dest=${AST_LIBS_DEST}"
-      "-Darg_dev_test_dir=${AST_DEVICE_TEST_DIR}"
-      "-Darg_dev_obj_store=${AST_DEVICE_OBJECT_STORE}"
-      "-Darg_no_link_regex=${AST_NO_LINK_REGEX}"
-      "-Darg_files=${processed_FILES}"
-      "-Darg_libs=${AST_LIBS}"
-      "-Darg_src_dir=${CMAKE_CURRENT_SOURCE_DIR}"
-      -P ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/AndroidTestUtilities/PushToAndroidDevice.cmake)
-  endif()
-endfunction()
diff --git a/share/cmake-3.18/Modules/BasicConfigVersion-AnyNewerVersion.cmake.in b/share/cmake-3.18/Modules/BasicConfigVersion-AnyNewerVersion.cmake.in
deleted file mode 100644
index a6e5fda..0000000
--- a/share/cmake-3.18/Modules/BasicConfigVersion-AnyNewerVersion.cmake.in
+++ /dev/null
@@ -1,37 +0,0 @@
-# This is a basic version file for the Config-mode of find_package().
-# It is used by write_basic_package_version_file() as input file for configure_file()
-# to create a version-file which can be installed along a config.cmake file.
-#
-# The created file sets PACKAGE_VERSION_EXACT if the current version string and
-# the requested version string are exactly the same and it sets
-# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version.
-# The variable CVF_VERSION must be set before calling configure_file().
-
-set(PACKAGE_VERSION "@CVF_VERSION@")
-
-if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
-  set(PACKAGE_VERSION_COMPATIBLE FALSE)
-else()
-  set(PACKAGE_VERSION_COMPATIBLE TRUE)
-  if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
-    set(PACKAGE_VERSION_EXACT TRUE)
-  endif()
-endif()
-
-
-# if the installed project requested no architecture check, don't perform the check
-if("@CVF_ARCH_INDEPENDENT@")
-  return()
-endif()
-
-# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
-if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "")
-  return()
-endif()
-
-# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
-if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "@CMAKE_SIZEOF_VOID_P@")
-  math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8")
-  set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
-  set(PACKAGE_VERSION_UNSUITABLE TRUE)
-endif()
diff --git a/share/cmake-3.18/Modules/BasicConfigVersion-ExactVersion.cmake.in b/share/cmake-3.18/Modules/BasicConfigVersion-ExactVersion.cmake.in
deleted file mode 100644
index 43fc4d0..0000000
--- a/share/cmake-3.18/Modules/BasicConfigVersion-ExactVersion.cmake.in
+++ /dev/null
@@ -1,52 +0,0 @@
-# This is a basic version file for the Config-mode of find_package().
-# It is used by write_basic_package_version_file() as input file for configure_file()
-# to create a version-file which can be installed along a config.cmake file.
-#
-# The created file sets PACKAGE_VERSION_EXACT if the current version string and
-# the requested version string are exactly the same and it sets
-# PACKAGE_VERSION_COMPATIBLE if the current version is equal to the requested version.
-# The tweak version component is ignored.
-# The variable CVF_VERSION must be set before calling configure_file().
-
-
-set(PACKAGE_VERSION "@CVF_VERSION@")
-
-if("@CVF_VERSION@" MATCHES "^([0-9]+\\.[0-9]+\\.[0-9]+)\\.") # strip the tweak version
-  set(CVF_VERSION_NO_TWEAK "${CMAKE_MATCH_1}")
-else()
-  set(CVF_VERSION_NO_TWEAK "@CVF_VERSION@")
-endif()
-
-if(PACKAGE_FIND_VERSION MATCHES "^([0-9]+\\.[0-9]+\\.[0-9]+)\\.") # strip the tweak version
-  set(REQUESTED_VERSION_NO_TWEAK "${CMAKE_MATCH_1}")
-else()
-  set(REQUESTED_VERSION_NO_TWEAK "${PACKAGE_FIND_VERSION}")
-endif()
-
-if(REQUESTED_VERSION_NO_TWEAK STREQUAL CVF_VERSION_NO_TWEAK)
-  set(PACKAGE_VERSION_COMPATIBLE TRUE)
-else()
-  set(PACKAGE_VERSION_COMPATIBLE FALSE)
-endif()
-
-if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
-  set(PACKAGE_VERSION_EXACT TRUE)
-endif()
-
-
-# if the installed project requested no architecture check, don't perform the check
-if("@CVF_ARCH_INDEPENDENT@")
-  return()
-endif()
-
-# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
-if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "")
-  return()
-endif()
-
-# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
-if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "@CMAKE_SIZEOF_VOID_P@")
-  math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8")
-  set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
-  set(PACKAGE_VERSION_UNSUITABLE TRUE)
-endif()
diff --git a/share/cmake-3.18/Modules/BasicConfigVersion-SameMajorVersion.cmake.in b/share/cmake-3.18/Modules/BasicConfigVersion-SameMajorVersion.cmake.in
deleted file mode 100644
index 8c3b6a2..0000000
--- a/share/cmake-3.18/Modules/BasicConfigVersion-SameMajorVersion.cmake.in
+++ /dev/null
@@ -1,51 +0,0 @@
-# This is a basic version file for the Config-mode of find_package().
-# It is used by write_basic_package_version_file() as input file for configure_file()
-# to create a version-file which can be installed along a config.cmake file.
-#
-# The created file sets PACKAGE_VERSION_EXACT if the current version string and
-# the requested version string are exactly the same and it sets
-# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version,
-# but only if the requested major version is the same as the current one.
-# The variable CVF_VERSION must be set before calling configure_file().
-
-
-set(PACKAGE_VERSION "@CVF_VERSION@")
-
-if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
-  set(PACKAGE_VERSION_COMPATIBLE FALSE)
-else()
-
-  if("@CVF_VERSION@" MATCHES "^([0-9]+)\\.")
-    set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
-  else()
-    set(CVF_VERSION_MAJOR "@CVF_VERSION@")
-  endif()
-
-  if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR)
-    set(PACKAGE_VERSION_COMPATIBLE TRUE)
-  else()
-    set(PACKAGE_VERSION_COMPATIBLE FALSE)
-  endif()
-
-  if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
-      set(PACKAGE_VERSION_EXACT TRUE)
-  endif()
-endif()
-
-
-# if the installed project requested no architecture check, don't perform the check
-if("@CVF_ARCH_INDEPENDENT@")
-  return()
-endif()
-
-# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
-if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "")
-  return()
-endif()
-
-# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
-if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "@CMAKE_SIZEOF_VOID_P@")
-  math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8")
-  set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
-  set(PACKAGE_VERSION_UNSUITABLE TRUE)
-endif()
diff --git a/share/cmake-3.18/Modules/BasicConfigVersion-SameMinorVersion.cmake.in b/share/cmake-3.18/Modules/BasicConfigVersion-SameMinorVersion.cmake.in
deleted file mode 100644
index e2030d2..0000000
--- a/share/cmake-3.18/Modules/BasicConfigVersion-SameMinorVersion.cmake.in
+++ /dev/null
@@ -1,55 +0,0 @@
-# This is a basic version file for the Config-mode of find_package().
-# It is used by write_basic_package_version_file() as input file for configure_file()
-# to create a version-file which can be installed along a config.cmake file.
-#
-# The created file sets PACKAGE_VERSION_EXACT if the current version string and
-# the requested version string are exactly the same and it sets
-# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version,
-# but only if the requested major and minor versions are the same as the current
-# one.
-# The variable CVF_VERSION must be set before calling configure_file().
-
-
-set(PACKAGE_VERSION "@CVF_VERSION@")
-
-if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
-  set(PACKAGE_VERSION_COMPATIBLE FALSE)
-else()
-
-  if("@CVF_VERSION@" MATCHES "^([0-9]+)\\.([0-9]+)")
-    set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
-    set(CVF_VERSION_MINOR "${CMAKE_MATCH_2}")
-  else()
-    set(CVF_VERSION_MAJOR "@CVF_VERSION@")
-    set(CVF_VERSION_MINOR "")
-  endif()
-
-  if((PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) AND
-     (PACKAGE_FIND_VERSION_MINOR STREQUAL CVF_VERSION_MINOR))
-    set(PACKAGE_VERSION_COMPATIBLE TRUE)
-  else()
-    set(PACKAGE_VERSION_COMPATIBLE FALSE)
-  endif()
-
-  if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
-      set(PACKAGE_VERSION_EXACT TRUE)
-  endif()
-endif()
-
-
-# if the installed project requested no architecture check, don't perform the check
-if("@CVF_ARCH_INDEPENDENT@")
-  return()
-endif()
-
-# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
-if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "")
-  return()
-endif()
-
-# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
-if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "@CMAKE_SIZEOF_VOID_P@")
-  math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8")
-  set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
-  set(PACKAGE_VERSION_UNSUITABLE TRUE)
-endif()
diff --git a/share/cmake-3.18/Modules/BundleUtilities.cmake b/share/cmake-3.18/Modules/BundleUtilities.cmake
deleted file mode 100644
index 2f3b9e1..0000000
--- a/share/cmake-3.18/Modules/BundleUtilities.cmake
+++ /dev/null
@@ -1,1123 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-BundleUtilities
----------------
-
-Functions to help assemble a standalone bundle application.
-
-A collection of CMake utility functions useful for dealing with ``.app``
-bundles on the Mac and bundle-like directories on any OS.
-
-The following functions are provided by this module:
-
-.. code-block:: cmake
-
-   fixup_bundle
-   copy_and_fixup_bundle
-   verify_app
-   get_bundle_main_executable
-   get_dotapp_dir
-   get_bundle_and_executable
-   get_bundle_all_executables
-   get_item_key
-   get_item_rpaths
-   clear_bundle_keys
-   set_bundle_key_values
-   get_bundle_keys
-   copy_resolved_item_into_bundle
-   copy_resolved_framework_into_bundle
-   fixup_bundle_item
-   verify_bundle_prerequisites
-   verify_bundle_symlinks
-
-Requires CMake 2.6 or greater because it uses function, break and
-``PARENT_SCOPE``.  Also depends on ``GetPrerequisites.cmake``.
-
-DO NOT USE THESE FUNCTIONS AT CONFIGURE TIME (from ``CMakeLists.txt``)!
-Instead, invoke them from an :command:`install(CODE)` or
-:command:`install(SCRIPT)` rule.
-
-.. code-block:: cmake
-
-  fixup_bundle(<app> <libs> <dirs>)
-
-Fix up ``<app>`` bundle in-place and make it standalone, such that it can be
-drag-n-drop copied to another machine and run on that machine as long
-as all of the system libraries are compatible.
-
-If you pass plugins to ``fixup_bundle`` as the libs parameter, you should
-install them or copy them into the bundle before calling ``fixup_bundle``.
-The ``<libs>`` parameter is a list of libraries that must be fixed up, but
-that cannot be determined by ``otool`` output analysis  (i.e. ``plugins``).
-
-Gather all the keys for all the executables and libraries in a bundle,
-and then, for each key, copy each prerequisite into the bundle.  Then
-fix each one up according to its own list of prerequisites.
-
-Then clear all the keys and call ``verify_app`` on the final bundle to
-ensure that it is truly standalone.
-
-As an optional parameter (``IGNORE_ITEM``) a list of file names can be passed,
-which are then ignored
-(e.g. ``IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe"``).
-
-.. code-block:: cmake
-
-  copy_and_fixup_bundle(<src> <dst> <libs> <dirs>)
-
-Makes a copy of the bundle ``<src>`` at location ``<dst>`` and then fixes up
-the new copied bundle in-place at ``<dst>``.
-
-.. code-block:: cmake
-
-  verify_app(<app>)
-
-Verifies that an application ``<app>`` appears valid based on running
-analysis tools on it.  Calls :command:`message(FATAL_ERROR)` if the application
-is not verified.
-
-As an optional parameter (``IGNORE_ITEM``) a list of file names can be passed,
-which are then ignored
-(e.g. ``IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe"``)
-
-.. code-block:: cmake
-
-  get_bundle_main_executable(<bundle> <result_var>)
-
-The result will be the full path name of the bundle's main executable
-file or an ``error:`` prefixed string if it could not be determined.
-
-.. code-block:: cmake
-
-  get_dotapp_dir(<exe> <dotapp_dir_var>)
-
-Returns the nearest parent dir whose name ends with ``.app`` given the
-full path to an executable.  If there is no such parent dir, then
-simply return the dir containing the executable.
-
-The returned directory may or may not exist.
-
-.. code-block:: cmake
-
-  get_bundle_and_executable(<app> <bundle_var> <executable_var> <valid_var>)
-
-Takes either a ``.app`` directory name or the name of an executable
-nested inside a ``.app`` directory and returns the path to the ``.app``
-directory in ``<bundle_var>`` and the path to its main executable in
-``<executable_var>``.
-
-.. code-block:: cmake
-
-  get_bundle_all_executables(<bundle> <exes_var>)
-
-Scans ``<bundle>`` bundle recursively for all ``<exes_var>`` executable
-files and accumulates them into a variable.
-
-.. code-block:: cmake
-
-  get_item_key(<item> <key_var>)
-
-Given ``<item>`` file name, generate ``<key_var>`` key that should be unique
-considering the set of libraries that need copying or fixing up to
-make a bundle standalone.  This is essentially the file name including
-extension with ``.`` replaced by ``_``
-
-This key is used as a prefix for CMake variables so that we can
-associate a set of variables with a given item based on its key.
-
-.. code-block:: cmake
-
-  clear_bundle_keys(<keys_var>)
-
-Loop over the ``<keys_var>`` list of keys, clearing all the variables
-associated with each key.  After the loop, clear the list of keys itself.
-
-Caller of ``get_bundle_keys`` should call ``clear_bundle_keys`` when done with
-list of keys.
-
-.. code-block:: cmake
-
-  set_bundle_key_values(<keys_var> <context> <item> <exepath> <dirs>
-                        <copyflag> [<rpaths>])
-
-Add ``<keys_var>`` key to the list (if necessary) for the given item.
-If added, also set all the variables associated with that key.
-
-.. code-block:: cmake
-
-  get_bundle_keys(<app> <libs> <dirs> <keys_var>)
-
-Loop over all the executable and library files within ``<app>`` bundle (and
-given as extra ``<libs>``) and accumulate a list of keys representing
-them.  Set values associated with each key such that we can loop over
-all of them and copy prerequisite libs into the bundle and then do
-appropriate ``install_name_tool`` fixups.
-
-As an optional parameter (``IGNORE_ITEM``) a list of file names can be passed,
-which are then ignored
-(e.g. ``IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe"``)
-
-.. code-block:: cmake
-
-  copy_resolved_item_into_bundle(<resolved_item> <resolved_embedded_item>)
-
-Copy a resolved item into the bundle if necessary.
-Copy is not necessary, if the ``<resolved_item>`` is "the same as" the
-``<resolved_embedded_item>``.
-
-.. code-block:: cmake
-
-  copy_resolved_framework_into_bundle(<resolved_item> <resolved_embedded_item>)
-
-Copy a resolved framework into the bundle if necessary.
-Copy is not necessary, if the ``<resolved_item>`` is "the same as" the
-``<resolved_embedded_item>``.
-
-By default, ``BU_COPY_FULL_FRAMEWORK_CONTENTS`` is not set.  If you want
-full frameworks embedded in your bundles, set
-``BU_COPY_FULL_FRAMEWORK_CONTENTS`` to ``ON`` before calling fixup_bundle.  By
-default, ``COPY_RESOLVED_FRAMEWORK_INTO_BUNDLE`` copies the framework
-dylib itself plus the framework ``Resources`` directory.
-
-.. code-block:: cmake
-
-  fixup_bundle_item(<resolved_embedded_item> <exepath> <dirs>)
-
-Get the direct/non-system prerequisites of the ``<resolved_embedded_item>``.
-For each prerequisite, change the way it is referenced to the value of
-the ``_EMBEDDED_ITEM`` keyed variable for that prerequisite.  (Most likely
-changing to an ``@executable_path`` style reference.)
-
-This function requires that the ``<resolved_embedded_item>`` be ``inside``
-the bundle already.  In other words, if you pass plugins to ``fixup_bundle``
-as the libs parameter, you should install them or copy them into the
-bundle before calling ``fixup_bundle``.  The ``libs`` parameter is a list of
-libraries that must be fixed up, but that cannot be determined by
-otool output analysis.  (i.e., ``plugins``)
-
-Also, change the id of the item being fixed up to its own
-``_EMBEDDED_ITEM`` value.
-
-Accumulate changes in a local variable and make *one* call to
-``install_name_tool`` at the end of the function with all the changes at
-once.
-
-If the ``BU_CHMOD_BUNDLE_ITEMS`` variable is set then bundle items will be
-marked writable before ``install_name_tool`` tries to change them.
-
-.. code-block:: cmake
-
-  verify_bundle_prerequisites(<bundle> <result_var> <info_var>)
-
-Verifies that the sum of all prerequisites of all files inside the
-bundle are contained within the bundle or are ``system`` libraries,
-presumed to exist everywhere.
-
-As an optional parameter (``IGNORE_ITEM``) a list of file names can be passed,
-which are then ignored
-(e.g. ``IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe"``)
-
-.. code-block:: cmake
-
-  verify_bundle_symlinks(<bundle> <result_var> <info_var>)
-
-Verifies that any symlinks found in the ``<bundle>`` bundle point to other files
-that are already also in the bundle...  Anything that points to an
-external file causes this function to fail the verification.
-#]=======================================================================]
-
-function(_warn_cmp0080)
-  cmake_policy(GET_WARNING CMP0080 _cmp0080_warning)
-  message(AUTHOR_WARNING "${_cmp0080_warning}\n")
-endfunction()
-
-# Do not include this module at configure time!
-if(DEFINED CMAKE_GENERATOR)
-  cmake_policy(GET CMP0080 _BundleUtilities_CMP0080)
-  if(_BundleUtilities_CMP0080 STREQUAL "NEW")
-    message(FATAL_ERROR "BundleUtilities cannot be included at configure time!")
-  elseif(NOT _BundleUtilities_CMP0080 STREQUAL "OLD" AND NOT _CMP0080_SUPPRESS_WARNING)
-    _warn_cmp0080()
-  endif()
-endif()
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0057 NEW) # if IN_LIST
-
-# The functions defined in this file depend on the get_prerequisites function
-# (and possibly others) found in:
-#
-include("${CMAKE_CURRENT_LIST_DIR}/GetPrerequisites.cmake")
-
-
-function(get_bundle_main_executable bundle result_var)
-  set(result "error: '${bundle}/Contents/Info.plist' file does not exist")
-
-  if(EXISTS "${bundle}/Contents/Info.plist")
-    set(result "error: no CFBundleExecutable in '${bundle}/Contents/Info.plist' file")
-    set(line_is_main_executable 0)
-    set(bundle_executable "")
-
-    # Read Info.plist as a list of lines:
-    #
-    set(eol_char "E")
-    file(READ "${bundle}/Contents/Info.plist" info_plist)
-    string(REPLACE ";" "\\;" info_plist "${info_plist}")
-    string(REPLACE "\n" "${eol_char};" info_plist "${info_plist}")
-    string(REPLACE "\r" "${eol_char};" info_plist "${info_plist}")
-
-    # Scan the lines for "<key>CFBundleExecutable</key>" - the line after that
-    # is the name of the main executable.
-    #
-    foreach(line ${info_plist})
-      if(line_is_main_executable)
-        string(REGEX REPLACE "^.*<string>(.*)</string>.*$" "\\1" bundle_executable "${line}")
-        break()
-      endif()
-
-      if(line MATCHES "<key>CFBundleExecutable</key>")
-        set(line_is_main_executable 1)
-      endif()
-    endforeach()
-
-    if(NOT bundle_executable STREQUAL "")
-      if(EXISTS "${bundle}/Contents/MacOS/${bundle_executable}")
-        set(result "${bundle}/Contents/MacOS/${bundle_executable}")
-      else()
-
-        # Ultimate goal:
-        # If not in "Contents/MacOS" then scan the bundle for matching files. If
-        # there is only one executable file that matches, then use it, otherwise
-        # it's an error...
-        #
-        #file(GLOB_RECURSE file_list "${bundle}/${bundle_executable}")
-
-        # But for now, pragmatically, it's an error. Expect the main executable
-        # for the bundle to be in Contents/MacOS, it's an error if it's not:
-        #
-        set(result "error: '${bundle}/Contents/MacOS/${bundle_executable}' does not exist")
-      endif()
-    endif()
-  else()
-    #
-    # More inclusive technique... (This one would work on Windows and Linux
-    # too, if a developer followed the typical Mac bundle naming convention...)
-    #
-    # If there is no Info.plist file, try to find an executable with the same
-    # base name as the .app directory:
-    #
-  endif()
-
-  set(${result_var} "${result}" PARENT_SCOPE)
-endfunction()
-
-
-function(get_dotapp_dir exe dotapp_dir_var)
-  set(s "${exe}")
-
-  if(s MATCHES "/.*\\.app/")
-    # If there is a ".app" parent directory,
-    # ascend until we hit it:
-    #   (typical of a Mac bundle executable)
-    #
-    set(done 0)
-    while(NOT ${done})
-      get_filename_component(snamewe "${s}" NAME_WE)
-      get_filename_component(sname "${s}" NAME)
-      get_filename_component(sdir "${s}" PATH)
-      set(s "${sdir}")
-      if(sname MATCHES "\\.app$")
-        set(done 1)
-        set(dotapp_dir "${sdir}/${sname}")
-      endif()
-    endwhile()
-  else()
-    # Otherwise use a directory containing the exe
-    #   (typical of a non-bundle executable on Mac, Windows or Linux)
-    #
-    is_file_executable("${s}" is_executable)
-    if(is_executable)
-      get_filename_component(sdir "${s}" PATH)
-      set(dotapp_dir "${sdir}")
-    else()
-      set(dotapp_dir "${s}")
-    endif()
-  endif()
-
-
-  set(${dotapp_dir_var} "${dotapp_dir}" PARENT_SCOPE)
-endfunction()
-
-
-function(get_bundle_and_executable app bundle_var executable_var valid_var)
-  set(valid 0)
-
-  if(EXISTS "${app}")
-    # Is it a directory ending in .app?
-    if(IS_DIRECTORY "${app}")
-      if(app MATCHES "\\.app$")
-        get_bundle_main_executable("${app}" executable)
-        if(EXISTS "${app}" AND EXISTS "${executable}")
-          set(${bundle_var} "${app}" PARENT_SCOPE)
-          set(${executable_var} "${executable}" PARENT_SCOPE)
-          set(valid 1)
-          #message(STATUS "info: handled .app directory case...")
-        else()
-          message(STATUS "warning: *NOT* handled - .app directory case...")
-        endif()
-      else()
-        message(STATUS "warning: *NOT* handled - directory but not .app case...")
-      endif()
-    else()
-      # Is it an executable file?
-      is_file_executable("${app}" is_executable)
-      if(is_executable)
-        get_dotapp_dir("${app}" dotapp_dir)
-        if(EXISTS "${dotapp_dir}")
-          set(${bundle_var} "${dotapp_dir}" PARENT_SCOPE)
-          set(${executable_var} "${app}" PARENT_SCOPE)
-          set(valid 1)
-          #message(STATUS "info: handled executable file in .app dir case...")
-        else()
-          get_filename_component(app_dir "${app}" PATH)
-          set(${bundle_var} "${app_dir}" PARENT_SCOPE)
-          set(${executable_var} "${app}" PARENT_SCOPE)
-          set(valid 1)
-          #message(STATUS "info: handled executable file in any dir case...")
-        endif()
-      else()
-        message(STATUS "warning: *NOT* handled - not .app dir, not executable file...")
-      endif()
-    endif()
-  else()
-    message(STATUS "warning: *NOT* handled - directory/file does not exist...")
-  endif()
-
-  if(NOT valid)
-    set(${bundle_var} "error: not a bundle" PARENT_SCOPE)
-    set(${executable_var} "error: not a bundle" PARENT_SCOPE)
-  endif()
-
-  set(${valid_var} ${valid} PARENT_SCOPE)
-endfunction()
-
-
-function(get_bundle_all_executables bundle exes_var)
-  set(exes "")
-
-  if(UNIX)
-    find_program(find_cmd "find")
-    mark_as_advanced(find_cmd)
-  endif()
-
-  # find command is much quicker than checking every file one by one on Unix
-  # which can take long time for large bundles, and since anyway we expect
-  # executable to have execute flag set we can narrow the list much quicker.
-  if(find_cmd)
-    execute_process(COMMAND "${find_cmd}" "${bundle}"
-      -type f \( -perm -0100 -o -perm -0010 -o -perm -0001 \)
-      OUTPUT_VARIABLE file_list
-      OUTPUT_STRIP_TRAILING_WHITESPACE
-      )
-    string(REPLACE "\n" ";" file_list "${file_list}")
-  else()
-    file(GLOB_RECURSE file_list "${bundle}/*")
-  endif()
-
-  foreach(f ${file_list})
-    is_file_executable("${f}" is_executable)
-    if(is_executable)
-      set(exes ${exes} "${f}")
-    endif()
-  endforeach()
-
-  set(${exes_var} "${exes}" PARENT_SCOPE)
-endfunction()
-
-
-function(get_item_rpaths item rpaths_var)
-  if(APPLE)
-    find_program(otool_cmd "otool")
-    mark_as_advanced(otool_cmd)
-  endif()
-
-  if(otool_cmd)
-    execute_process(
-      COMMAND "${otool_cmd}" -l "${item}"
-      OUTPUT_VARIABLE load_cmds_ov
-      RESULT_VARIABLE otool_rv
-      ERROR_VARIABLE otool_ev
-      )
-    if(NOT otool_rv STREQUAL "0")
-      message(FATAL_ERROR "otool -l failed: ${otool_rv}\n${otool_ev}")
-    endif()
-    string(REGEX REPLACE "[^\n]+cmd LC_RPATH\n[^\n]+\n[^\n]+path ([^\n]+) \\(offset[^\n]+\n" "rpath \\1\n" load_cmds_ov "${load_cmds_ov}")
-    string(REGEX MATCHALL "rpath [^\n]+" load_cmds_ov "${load_cmds_ov}")
-    string(REGEX REPLACE "rpath " "" load_cmds_ov "${load_cmds_ov}")
-    if(load_cmds_ov)
-      foreach(rpath ${load_cmds_ov})
-        gp_append_unique(${rpaths_var} "${rpath}")
-      endforeach()
-    endif()
-  endif()
-
-  if(UNIX AND NOT APPLE)
-    file(READ_ELF ${item} RPATH rpath_var RUNPATH runpath_var CAPTURE_ERROR error_var)
-    get_filename_component(item_dir ${item} DIRECTORY)
-    foreach(rpath ${rpath_var} ${runpath_var})
-      # Substitute $ORIGIN with the exepath and add to the found rpaths
-      string(REPLACE "$ORIGIN" "${item_dir}" rpath "${rpath}")
-      gp_append_unique(${rpaths_var} "${rpath}")
-    endforeach()
-  endif()
-
-  set(${rpaths_var} ${${rpaths_var}} PARENT_SCOPE)
-endfunction()
-
-
-function(get_item_key item key_var)
-  get_filename_component(item_name "${item}" NAME)
-  if(WIN32)
-    string(TOLOWER "${item_name}" item_name)
-  endif()
-  string(REPLACE "." "_" ${key_var} "${item_name}")
-  set(${key_var} ${${key_var}} PARENT_SCOPE)
-endfunction()
-
-
-function(clear_bundle_keys keys_var)
-  foreach(key ${${keys_var}})
-    set(${key}_ITEM PARENT_SCOPE)
-    set(${key}_RESOLVED_ITEM PARENT_SCOPE)
-    set(${key}_DEFAULT_EMBEDDED_PATH PARENT_SCOPE)
-    set(${key}_EMBEDDED_ITEM PARENT_SCOPE)
-    set(${key}_RESOLVED_EMBEDDED_ITEM PARENT_SCOPE)
-    set(${key}_COPYFLAG PARENT_SCOPE)
-    set(${key}_RPATHS PARENT_SCOPE)
-  endforeach()
-  set(${keys_var} PARENT_SCOPE)
-endfunction()
-
-
-function(set_bundle_key_values keys_var context item exepath dirs copyflag)
-  if(ARGC GREATER 6)
-    set(rpaths "${ARGV6}")
-  else()
-    set(rpaths "")
-  endif()
-  get_filename_component(item_name "${item}" NAME)
-
-  get_item_key("${item}" key)
-
-  list(LENGTH ${keys_var} length_before)
-  gp_append_unique(${keys_var} "${key}")
-  list(LENGTH ${keys_var} length_after)
-
-  if(NOT length_before EQUAL length_after)
-    gp_resolve_item("${context}" "${item}" "${exepath}" "${dirs}" resolved_item "${rpaths}")
-
-    gp_item_default_embedded_path("${item}" default_embedded_path)
-
-    get_item_rpaths("${resolved_item}" item_rpaths)
-
-    if((NOT item MATCHES "\\.dylib$") AND (item MATCHES "[^/]+\\.framework/"))
-      # For frameworks, construct the name under the embedded path from the
-      # opening "${item_name}.framework/" to the closing "/${item_name}":
-      #
-      string(REGEX REPLACE "^.*(${item_name}.framework/.*/?${item_name}).*$" "${default_embedded_path}/\\1" embedded_item "${item}")
-    else()
-      # For other items, just use the same name as the original, but in the
-      # embedded path:
-      #
-      set(embedded_item "${default_embedded_path}/${item_name}")
-    endif()
-
-    # Replace @executable_path and resolve ".." references:
-    #
-    string(REPLACE "@executable_path" "${exepath}" resolved_embedded_item "${embedded_item}")
-    get_filename_component(resolved_embedded_item "${resolved_embedded_item}" ABSOLUTE)
-
-    # *But* -- if we are not copying, then force resolved_embedded_item to be
-    # the same as resolved_item. In the case of multiple executables in the
-    # original bundle, using the default_embedded_path results in looking for
-    # the resolved executable next to the main bundle executable. This is here
-    # so that exes in the other sibling directories (like "bin") get fixed up
-    # properly...
-    #
-    if(NOT copyflag)
-      set(resolved_embedded_item "${resolved_item}")
-    endif()
-
-    set(${keys_var} ${${keys_var}} PARENT_SCOPE)
-    set(${key}_ITEM "${item}" PARENT_SCOPE)
-    set(${key}_RESOLVED_ITEM "${resolved_item}" PARENT_SCOPE)
-    set(${key}_DEFAULT_EMBEDDED_PATH "${default_embedded_path}" PARENT_SCOPE)
-    set(${key}_EMBEDDED_ITEM "${embedded_item}" PARENT_SCOPE)
-    set(${key}_RESOLVED_EMBEDDED_ITEM "${resolved_embedded_item}" PARENT_SCOPE)
-    set(${key}_COPYFLAG "${copyflag}" PARENT_SCOPE)
-    set(${key}_RPATHS "${item_rpaths}" PARENT_SCOPE)
-    set(${key}_RDEP_RPATHS "${rpaths}" PARENT_SCOPE)
-  else()
-    #message("warning: item key '${key}' already in the list, subsequent references assumed identical to first")
-  endif()
-endfunction()
-
-
-function(get_bundle_keys app libs dirs keys_var)
-  set(${keys_var} PARENT_SCOPE)
-
-  set(options)
-  set(oneValueArgs)
-  set(multiValueArgs IGNORE_ITEM)
-  cmake_parse_arguments(CFG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
-
-  get_bundle_and_executable("${app}" bundle executable valid)
-  if(valid)
-    # Always use the exepath of the main bundle executable for @executable_path
-    # replacements:
-    #
-    get_filename_component(exepath "${executable}" PATH)
-
-    # But do fixups on all executables in the bundle:
-    #
-    get_bundle_all_executables("${bundle}" exes)
-
-    # Set keys for main executable first:
-    #
-    set_bundle_key_values(${keys_var} "${executable}" "${executable}" "${exepath}" "${dirs}" 0)
-
-    # Get rpaths specified by main executable:
-    #
-    get_item_key("${executable}" executable_key)
-    set(main_rpaths "${${executable_key}_RPATHS}")
-
-    # For each extra lib, accumulate a key as well and then also accumulate
-    # any of its prerequisites. (Extra libs are typically dynamically loaded
-    # plugins: libraries that are prerequisites for full runtime functionality
-    # but that do not show up in otool -L output...)
-    #
-    foreach(lib ${libs})
-      set_bundle_key_values(${keys_var} "${lib}" "${lib}" "${exepath}" "${dirs}" 0 "${main_rpaths}")
-
-      set(prereqs "")
-      get_filename_component(prereq_filename ${lib} NAME)
-
-      if(NOT prereq_filename IN_LIST CFG_IGNORE_ITEM)
-        get_prerequisites("${lib}" prereqs 1 1 "${exepath}" "${dirs}" "${main_rpaths}")
-        foreach(pr ${prereqs})
-          set_bundle_key_values(${keys_var} "${lib}" "${pr}" "${exepath}" "${dirs}" 1 "${main_rpaths}")
-        endforeach()
-      else()
-        message(STATUS "Ignoring file: ${prereq_filename}")
-      endif()
-    endforeach()
-
-    # For each executable found in the bundle, accumulate keys as we go.
-    # The list of keys should be complete when all prerequisites of all
-    # binaries in the bundle have been analyzed.
-    #
-    foreach(exe ${exes})
-      # Main executable is scanned first above:
-      #
-      if(NOT exe STREQUAL executable)
-        # Add the exe itself to the keys:
-        #
-        set_bundle_key_values(${keys_var} "${exe}" "${exe}" "${exepath}" "${dirs}" 0 "${main_rpaths}")
-
-        # Get rpaths specified by executable:
-        #
-        get_item_key("${exe}" exe_key)
-        set(exe_rpaths "${main_rpaths}" "${${exe_key}_RPATHS}")
-      else()
-        set(exe_rpaths "${main_rpaths}")
-      endif()
-
-      # Add each prerequisite to the keys:
-      #
-      set(prereqs "")
-      get_filename_component(prereq_filename ${exe} NAME)
-
-      if(NOT prereq_filename IN_LIST CFG_IGNORE_ITEM)
-        get_prerequisites("${exe}" prereqs 1 1 "${exepath}" "${dirs}" "${exe_rpaths}")
-        foreach(pr ${prereqs})
-          set_bundle_key_values(${keys_var} "${exe}" "${pr}" "${exepath}" "${dirs}" 1 "${exe_rpaths}")
-        endforeach()
-      else()
-        message(STATUS "Ignoring file: ${prereq_filename}")
-      endif()
-    endforeach()
-
-    # preserve library symlink structure
-    foreach(key ${${keys_var}})
-      if("${${key}_COPYFLAG}" STREQUAL "1")
-        if(IS_SYMLINK "${${key}_RESOLVED_ITEM}")
-          get_filename_component(target "${${key}_RESOLVED_ITEM}" REALPATH)
-          set_bundle_key_values(${keys_var} "${exe}" "${target}" "${exepath}" "${dirs}" 1 "${exe_rpaths}")
-          get_item_key("${target}" targetkey)
-
-          if(WIN32)
-            # ignore case on Windows
-            string(TOLOWER "${${key}_RESOLVED_ITEM}" resolved_item_compare)
-            string(TOLOWER "${${targetkey}_RESOLVED_EMBEDDED_ITEM}" resolved_embedded_item_compare)
-          else()
-            set(resolved_item_compare "${${key}_RESOLVED_ITEM}")
-            set(resolved_embedded_item_compare "${${targetkey}_RESOLVED_EMBEDDED_ITEM}")
-          endif()
-          get_filename_component(resolved_item_compare "${resolved_item_compare}" NAME)
-          get_filename_component(resolved_embedded_item_compare "${resolved_embedded_item_compare}" NAME)
-
-          if(NOT resolved_item_compare STREQUAL resolved_embedded_item_compare)
-            set(${key}_COPYFLAG "2")
-            set(${key}_RESOLVED_ITEM "${${targetkey}_RESOLVED_EMBEDDED_ITEM}")
-          endif()
-
-        endif()
-      endif()
-    endforeach()
-    # Propagate values to caller's scope:
-    #
-    set(${keys_var} ${${keys_var}} PARENT_SCOPE)
-    foreach(key ${${keys_var}})
-      set(${key}_ITEM "${${key}_ITEM}" PARENT_SCOPE)
-      set(${key}_RESOLVED_ITEM "${${key}_RESOLVED_ITEM}" PARENT_SCOPE)
-      set(${key}_DEFAULT_EMBEDDED_PATH "${${key}_DEFAULT_EMBEDDED_PATH}" PARENT_SCOPE)
-      set(${key}_EMBEDDED_ITEM "${${key}_EMBEDDED_ITEM}" PARENT_SCOPE)
-      set(${key}_RESOLVED_EMBEDDED_ITEM "${${key}_RESOLVED_EMBEDDED_ITEM}" PARENT_SCOPE)
-      set(${key}_COPYFLAG "${${key}_COPYFLAG}" PARENT_SCOPE)
-      set(${key}_RPATHS "${${key}_RPATHS}" PARENT_SCOPE)
-      set(${key}_RDEP_RPATHS "${${key}_RDEP_RPATHS}" PARENT_SCOPE)
-    endforeach()
-  endif()
-endfunction()
-
-function(link_resolved_item_into_bundle resolved_item resolved_embedded_item)
-  if(WIN32)
-    # ignore case on Windows
-    string(TOLOWER "${resolved_item}" resolved_item_compare)
-    string(TOLOWER "${resolved_embedded_item}" resolved_embedded_item_compare)
-  else()
-    set(resolved_item_compare "${resolved_item}")
-    set(resolved_embedded_item_compare "${resolved_embedded_item}")
-  endif()
-
-  if(resolved_item_compare STREQUAL resolved_embedded_item_compare)
-    message(STATUS "warning: resolved_item == resolved_embedded_item - not linking...")
-  else()
-    get_filename_component(target_dir "${resolved_embedded_item}" DIRECTORY)
-    file(RELATIVE_PATH symlink_target "${target_dir}" "${resolved_item}")
-    if (NOT EXISTS "${target_dir}")
-      file(MAKE_DIRECTORY "${target_dir}")
-    endif()
-    execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${symlink_target}" "${resolved_embedded_item}")
-  endif()
-endfunction()
-
-function(copy_resolved_item_into_bundle resolved_item resolved_embedded_item)
-  if(WIN32)
-    # ignore case on Windows
-    string(TOLOWER "${resolved_item}" resolved_item_compare)
-    string(TOLOWER "${resolved_embedded_item}" resolved_embedded_item_compare)
-  else()
-    set(resolved_item_compare "${resolved_item}")
-    set(resolved_embedded_item_compare "${resolved_embedded_item}")
-  endif()
-
-  if(resolved_item_compare STREQUAL resolved_embedded_item_compare)
-    message(STATUS "warning: resolved_item == resolved_embedded_item - not copying...")
-  else()
-    #message(STATUS "copying COMMAND ${CMAKE_COMMAND} -E copy ${resolved_item} ${resolved_embedded_item}")
-    execute_process(COMMAND ${CMAKE_COMMAND} -E copy "${resolved_item}" "${resolved_embedded_item}")
-    if(UNIX AND NOT APPLE)
-      file(RPATH_REMOVE FILE "${resolved_embedded_item}")
-    endif()
-  endif()
-
-endfunction()
-
-
-function(copy_resolved_framework_into_bundle resolved_item resolved_embedded_item)
-  if(WIN32)
-    # ignore case on Windows
-    string(TOLOWER "${resolved_item}" resolved_item_compare)
-    string(TOLOWER "${resolved_embedded_item}" resolved_embedded_item_compare)
-  else()
-    set(resolved_item_compare "${resolved_item}")
-    set(resolved_embedded_item_compare "${resolved_embedded_item}")
-  endif()
-
-  if(resolved_item_compare STREQUAL resolved_embedded_item_compare)
-    message(STATUS "warning: resolved_item == resolved_embedded_item - not copying...")
-  else()
-    if(BU_COPY_FULL_FRAMEWORK_CONTENTS)
-      # Full Framework (everything):
-      get_filename_component(resolved_dir "${resolved_item}" PATH)
-      get_filename_component(resolved_dir "${resolved_dir}/../.." ABSOLUTE)
-      get_filename_component(resolved_embedded_dir "${resolved_embedded_item}" PATH)
-      get_filename_component(resolved_embedded_dir "${resolved_embedded_dir}/../.." ABSOLUTE)
-      #message(STATUS "copying COMMAND ${CMAKE_COMMAND} -E copy_directory '${resolved_dir}' '${resolved_embedded_dir}'")
-      execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${resolved_dir}" "${resolved_embedded_dir}")
-    else()
-      # Framework lib itself:
-      #message(STATUS "copying COMMAND ${CMAKE_COMMAND} -E copy ${resolved_item} ${resolved_embedded_item}")
-      execute_process(COMMAND ${CMAKE_COMMAND} -E copy "${resolved_item}" "${resolved_embedded_item}")
-
-      # Plus Resources, if they exist:
-      string(REGEX REPLACE "^(.*)/[^/]+$" "\\1/Resources" resolved_resources "${resolved_item}")
-      string(REGEX REPLACE "^(.*)/[^/]+$" "\\1/Resources" resolved_embedded_resources "${resolved_embedded_item}")
-      if(EXISTS "${resolved_resources}")
-        #message(STATUS "copying COMMAND ${CMAKE_COMMAND} -E copy_directory '${resolved_resources}' '${resolved_embedded_resources}'")
-        execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${resolved_resources}" "${resolved_embedded_resources}")
-      endif()
-
-      # Some frameworks e.g. Qt put Info.plist in wrong place, so when it is
-      # missing in resources, copy it from other well known incorrect locations:
-      if(NOT EXISTS "${resolved_resources}/Info.plist")
-        # Check for Contents/Info.plist in framework root (older Qt SDK):
-        string(REGEX REPLACE "^(.*)/[^/]+/[^/]+/[^/]+$" "\\1/Contents/Info.plist" resolved_info_plist "${resolved_item}")
-        string(REGEX REPLACE "^(.*)/[^/]+$" "\\1/Resources/Info.plist" resolved_embedded_info_plist "${resolved_embedded_item}")
-        if(EXISTS "${resolved_info_plist}")
-          #message(STATUS "copying COMMAND ${CMAKE_COMMAND} -E copy_directory '${resolved_info_plist}' '${resolved_embedded_info_plist}'")
-          execute_process(COMMAND ${CMAKE_COMMAND} -E copy "${resolved_info_plist}" "${resolved_embedded_info_plist}")
-        endif()
-      endif()
-
-      # Check if framework is versioned and fix it layout
-      string(REGEX REPLACE "^.*/([^/]+)/[^/]+$" "\\1" resolved_embedded_version "${resolved_embedded_item}")
-      string(REGEX REPLACE "^(.*)/[^/]+/[^/]+$" "\\1" resolved_embedded_versions "${resolved_embedded_item}")
-      string(REGEX REPLACE "^.*/([^/]+)/[^/]+/[^/]+$" "\\1" resolved_embedded_versions_basename "${resolved_embedded_item}")
-      if(resolved_embedded_versions_basename STREQUAL "Versions")
-        # Ensure Current symlink points to the framework version
-        if(NOT EXISTS "${resolved_embedded_versions}/Current")
-          execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${resolved_embedded_version}" "${resolved_embedded_versions}/Current")
-        endif()
-        # Restore symlinks in framework root pointing to current framework
-        # binary and resources:
-        string(REGEX REPLACE "^(.*)/[^/]+/[^/]+/[^/]+$" "\\1" resolved_embedded_root "${resolved_embedded_item}")
-        string(REGEX REPLACE "^.*/([^/]+)$" "\\1" resolved_embedded_item_basename "${resolved_embedded_item}")
-        if(NOT EXISTS "${resolved_embedded_root}/${resolved_embedded_item_basename}")
-          execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "Versions/Current/${resolved_embedded_item_basename}" "${resolved_embedded_root}/${resolved_embedded_item_basename}")
-        endif()
-        if(NOT EXISTS "${resolved_embedded_root}/Resources")
-          execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "Versions/Current/Resources" "${resolved_embedded_root}/Resources")
-        endif()
-      endif()
-    endif()
-    if(UNIX AND NOT APPLE)
-      file(RPATH_REMOVE FILE "${resolved_embedded_item}")
-    endif()
-  endif()
-
-endfunction()
-
-
-function(fixup_bundle_item resolved_embedded_item exepath dirs)
-  # This item's key is "ikey":
-  #
-  get_item_key("${resolved_embedded_item}" ikey)
-
-  # Ensure the item is "inside the .app bundle" -- it should not be fixed up if
-  # it is not in the .app bundle... Otherwise, we'll modify files in the build
-  # tree, or in other varied locations around the file system, with our call to
-  # install_name_tool. Make sure that doesn't happen here:
-  #
-  get_dotapp_dir("${exepath}" exe_dotapp_dir)
-  string(LENGTH "${exe_dotapp_dir}/" exe_dotapp_dir_length)
-  string(LENGTH "${resolved_embedded_item}" resolved_embedded_item_length)
-  set(path_too_short 0)
-  set(is_embedded 0)
-  if(resolved_embedded_item_length LESS exe_dotapp_dir_length)
-    set(path_too_short 1)
-  endif()
-  if(NOT path_too_short)
-    string(SUBSTRING "${resolved_embedded_item}" 0 ${exe_dotapp_dir_length} item_substring)
-    if("${exe_dotapp_dir}/" STREQUAL item_substring)
-      set(is_embedded 1)
-    endif()
-  endif()
-  if(NOT is_embedded)
-    message("  exe_dotapp_dir/='${exe_dotapp_dir}/'")
-    message("  item_substring='${item_substring}'")
-    message("  resolved_embedded_item='${resolved_embedded_item}'")
-    message("")
-    message("Install or copy the item into the bundle before calling fixup_bundle.")
-    message("Or maybe there's a typo or incorrect path in one of the args to fixup_bundle?")
-    message("")
-    message(FATAL_ERROR "cannot fixup an item that is not in the bundle...")
-  endif()
-
-  set(rpaths "${${ikey}_RPATHS}" "${${ikey}_RDEP_RPATHS}")
-
-  set(prereqs "")
-  get_prerequisites("${resolved_embedded_item}" prereqs 1 0 "${exepath}" "${dirs}" "${rpaths}")
-
-  set(changes "")
-
-  foreach(pr ${prereqs})
-    # Each referenced item's key is "rkey" in the loop:
-    #
-    get_item_key("${pr}" rkey)
-
-    if(NOT "${${rkey}_EMBEDDED_ITEM}" STREQUAL "")
-      set(changes ${changes} "-change" "${pr}" "${${rkey}_EMBEDDED_ITEM}")
-    else()
-      message("warning: unexpected reference to '${pr}'")
-    endif()
-  endforeach()
-
-  if(BU_CHMOD_BUNDLE_ITEMS)
-    execute_process(COMMAND chmod u+w "${resolved_embedded_item}")
-  endif()
-
-  # CMAKE_INSTALL_NAME_TOOL may not be set if executed in script mode
-  # Duplicated from CMakeFindBinUtils.cmake
-  find_program(CMAKE_INSTALL_NAME_TOOL NAMES install_name_tool HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
-
-  # Only if install_name_tool supports -delete_rpath:
-  #
-  execute_process(COMMAND ${CMAKE_INSTALL_NAME_TOOL}
-    OUTPUT_VARIABLE install_name_tool_usage
-    ERROR_VARIABLE  install_name_tool_usage
-    )
-  if(install_name_tool_usage MATCHES ".*-delete_rpath.*")
-    foreach(rpath ${${ikey}_RPATHS})
-      set(changes ${changes} -delete_rpath "${rpath}")
-    endforeach()
-  endif()
-
-  if(${ikey}_EMBEDDED_ITEM)
-    set(changes ${changes} -id "${${ikey}_EMBEDDED_ITEM}")
-  endif()
-
-  # Change this item's id and all of its references in one call
-  # to install_name_tool:
-  #
-  if(changes)
-    set(cmd ${CMAKE_INSTALL_NAME_TOOL} ${changes} "${resolved_embedded_item}")
-    execute_process(COMMAND ${cmd} RESULT_VARIABLE install_name_tool_result)
-    if(NOT install_name_tool_result EQUAL 0)
-      string(REPLACE ";" "' '" msg "'${cmd}'")
-      message(FATAL_ERROR "Command failed:\n ${msg}")
-    endif()
-  endif()
-endfunction()
-
-
-function(fixup_bundle app libs dirs)
-  message(STATUS "fixup_bundle")
-  message(STATUS "  app='${app}'")
-  message(STATUS "  libs='${libs}'")
-  message(STATUS "  dirs='${dirs}'")
-
-  set(options)
-  set(oneValueArgs)
-  set(multiValueArgs IGNORE_ITEM)
-  cmake_parse_arguments(CFG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
-
-  message(STATUS "  ignoreItems='${CFG_IGNORE_ITEM}'")
-
-  get_bundle_and_executable("${app}" bundle executable valid)
-  if(valid)
-    get_filename_component(exepath "${executable}" PATH)
-
-    message(STATUS "fixup_bundle: preparing...")
-    get_bundle_keys("${app}" "${libs}" "${dirs}" keys IGNORE_ITEM "${CFG_IGNORE_ITEM}")
-
-    message(STATUS "fixup_bundle: copying...")
-    list(LENGTH keys n)
-    math(EXPR n ${n}*2)
-
-    set(i 0)
-    foreach(key ${keys})
-      math(EXPR i ${i}+1)
-      if("${${key}_COPYFLAG}" STREQUAL "2")
-        message(STATUS "${i}/${n}: linking '${${key}_RESOLVED_ITEM}' -> '${${key}_RESOLVED_EMBEDDED_ITEM}'")
-      elseif(${${key}_COPYFLAG})
-        message(STATUS "${i}/${n}: copying '${${key}_RESOLVED_ITEM}'")
-      else()
-        message(STATUS "${i}/${n}: *NOT* copying '${${key}_RESOLVED_ITEM}'")
-      endif()
-
-      set(show_status 0)
-      if(show_status)
-        message(STATUS "key='${key}'")
-        message(STATUS "item='${${key}_ITEM}'")
-        message(STATUS "resolved_item='${${key}_RESOLVED_ITEM}'")
-        message(STATUS "default_embedded_path='${${key}_DEFAULT_EMBEDDED_PATH}'")
-        message(STATUS "embedded_item='${${key}_EMBEDDED_ITEM}'")
-        message(STATUS "resolved_embedded_item='${${key}_RESOLVED_EMBEDDED_ITEM}'")
-        message(STATUS "copyflag='${${key}_COPYFLAG}'")
-        message(STATUS "")
-      endif()
-
-      if("${${key}_COPYFLAG}" STREQUAL "2")
-        link_resolved_item_into_bundle("${${key}_RESOLVED_ITEM}"
-          "${${key}_RESOLVED_EMBEDDED_ITEM}")
-      elseif(${${key}_COPYFLAG})
-        set(item "${${key}_ITEM}")
-        if(item MATCHES "[^/]+\\.framework/")
-          copy_resolved_framework_into_bundle("${${key}_RESOLVED_ITEM}"
-            "${${key}_RESOLVED_EMBEDDED_ITEM}")
-        else()
-          copy_resolved_item_into_bundle("${${key}_RESOLVED_ITEM}"
-            "${${key}_RESOLVED_EMBEDDED_ITEM}")
-        endif()
-      endif()
-    endforeach()
-
-    message(STATUS "fixup_bundle: fixing...")
-    foreach(key ${keys})
-      math(EXPR i ${i}+1)
-      if(APPLE)
-        message(STATUS "${i}/${n}: fixing up '${${key}_RESOLVED_EMBEDDED_ITEM}'")
-        if(NOT "${${key}_COPYFLAG}" STREQUAL "2")
-          fixup_bundle_item("${${key}_RESOLVED_EMBEDDED_ITEM}" "${exepath}" "${dirs}")
-        endif()
-      else()
-        message(STATUS "${i}/${n}: fix-up not required on this platform '${${key}_RESOLVED_EMBEDDED_ITEM}'")
-      endif()
-    endforeach()
-
-    message(STATUS "fixup_bundle: cleaning up...")
-    clear_bundle_keys(keys)
-
-    message(STATUS "fixup_bundle: verifying...")
-    verify_app("${app}" IGNORE_ITEM "${CFG_IGNORE_ITEM}")
-  else()
-    message(SEND_ERROR "error: fixup_bundle: not a valid bundle")
-  endif()
-
-  message(STATUS "fixup_bundle: done")
-endfunction()
-
-
-function(copy_and_fixup_bundle src dst libs dirs)
-  execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${src}" "${dst}")
-  fixup_bundle("${dst}" "${libs}" "${dirs}")
-endfunction()
-
-
-function(verify_bundle_prerequisites bundle result_var info_var)
-  set(result 1)
-  set(info "")
-  set(count 0)
-
-  set(options)
-  set(oneValueArgs)
-  set(multiValueArgs IGNORE_ITEM)
-  cmake_parse_arguments(CFG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
-
-  get_bundle_main_executable("${bundle}" main_bundle_exe)
-
-  get_bundle_all_executables("${bundle}" file_list)
-  foreach(f ${file_list})
-      get_filename_component(exepath "${f}" PATH)
-      math(EXPR count "${count} + 1")
-
-      message(STATUS "executable file ${count}: ${f}")
-
-      set(prereqs "")
-      get_filename_component(prereq_filename ${f} NAME)
-
-      if(NOT prereq_filename IN_LIST CFG_IGNORE_ITEM)
-        get_item_rpaths(${f} _main_exe_rpaths)
-        get_prerequisites("${f}" prereqs 1 1 "${exepath}" "${_main_exe_rpaths}")
-
-        # On the Mac,
-        # "embedded" and "system" prerequisites are fine... anything else means
-        # the bundle's prerequisites are not verified (i.e., the bundle is not
-        # really "standalone")
-        #
-        # On Windows (and others? Linux/Unix/...?)
-        # "local" and "system" prereqs are fine...
-        #
-
-        set(external_prereqs "")
-
-        foreach(p ${prereqs})
-          set(p_type "")
-          gp_file_type("${f}" "${p}" p_type)
-
-          if(APPLE)
-            if(NOT p_type STREQUAL "embedded" AND NOT p_type STREQUAL "system")
-              set(external_prereqs ${external_prereqs} "${p}")
-            endif()
-          else()
-            if(NOT p_type STREQUAL "local" AND NOT p_type STREQUAL "system")
-              set(external_prereqs ${external_prereqs} "${p}")
-            endif()
-          endif()
-        endforeach()
-
-        if(external_prereqs)
-          # Found non-system/somehow-unacceptable prerequisites:
-          set(result 0)
-          set(info ${info} "external prerequisites found:\nf='${f}'\nexternal_prereqs='${external_prereqs}'\n")
-        endif()
-      else()
-        message(STATUS "Ignoring file: ${prereq_filename}")
-      endif()
-  endforeach()
-
-  if(result)
-    set(info "Verified ${count} executable files in '${bundle}'")
-  endif()
-
-  set(${result_var} "${result}" PARENT_SCOPE)
-  set(${info_var} "${info}" PARENT_SCOPE)
-endfunction()
-
-
-function(verify_bundle_symlinks bundle result_var info_var)
-  set(result 1)
-  set(info "")
-  set(count 0)
-
-  # TODO: implement this function for real...
-  # Right now, it is just a stub that verifies unconditionally...
-
-  set(${result_var} "${result}" PARENT_SCOPE)
-  set(${info_var} "${info}" PARENT_SCOPE)
-endfunction()
-
-
-function(verify_app app)
-  set(verified 0)
-  set(info "")
-
-  set(options)
-  set(oneValueArgs)
-  set(multiValueArgs IGNORE_ITEM)
-  cmake_parse_arguments(CFG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
-
-  get_bundle_and_executable("${app}" bundle executable valid)
-
-  message(STATUS "===========================================================================")
-  message(STATUS "Analyzing app='${app}'")
-  message(STATUS "bundle='${bundle}'")
-  message(STATUS "executable='${executable}'")
-  message(STATUS "valid='${valid}'")
-
-  # Verify that the bundle does not have any "external" prerequisites:
-  #
-  verify_bundle_prerequisites("${bundle}" verified info IGNORE_ITEM "${CFG_IGNORE_ITEM}")
-  message(STATUS "verified='${verified}'")
-  message(STATUS "info='${info}'")
-  message(STATUS "")
-
-  if(verified)
-    # Verify that the bundle does not have any symlinks to external files:
-    #
-    verify_bundle_symlinks("${bundle}" verified info)
-    message(STATUS "verified='${verified}'")
-    message(STATUS "info='${info}'")
-    message(STATUS "")
-  endif()
-
-  if(NOT verified)
-    message(FATAL_ERROR "error: verify_app failed")
-  endif()
-endfunction()
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/CMakeASMInformation.cmake b/share/cmake-3.18/Modules/CMakeASMInformation.cmake
deleted file mode 100644
index 03195cc..0000000
--- a/share/cmake-3.18/Modules/CMakeASMInformation.cmake
+++ /dev/null
@@ -1,110 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-if(UNIX)
-  set(CMAKE_ASM${ASM_DIALECT}_OUTPUT_EXTENSION .o)
-else()
-  set(CMAKE_ASM${ASM_DIALECT}_OUTPUT_EXTENSION .obj)
-endif()
-
-set(CMAKE_INCLUDE_FLAG_ASM${ASM_DIALECT} "-I")       # -I
-set(CMAKE_BASE_NAME)
-get_filename_component(CMAKE_BASE_NAME "${CMAKE_ASM${ASM_DIALECT}_COMPILER}" NAME_WE)
-
-if("${CMAKE_BASE_NAME}" STREQUAL "as")
-  set(CMAKE_BASE_NAME gas)
-endif()
-
-# Load compiler-specific information.
-set(_INCLUDED_FILE "")
-if(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID)
-  include(Compiler/${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}-ASM${ASM_DIALECT} OPTIONAL  RESULT_VARIABLE _INCLUDED_FILE)
-endif()
-if(NOT _INCLUDED_FILE)
-  if("ASM${ASM_DIALECT}" STREQUAL "ASM")
-    message(STATUS "Warning: Did not find file Compiler/${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}-ASM${ASM_DIALECT}")
-  endif()
-  include(Platform/${CMAKE_BASE_NAME} OPTIONAL)
-endif()
-
-if(CMAKE_SYSTEM_PROCESSOR)
-  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}-ASM${ASM_DIALECT}-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL  RESULT_VARIABLE _INCLUDED_FILE)
-  if(NOT _INCLUDED_FILE)
-    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME}-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
-  endif()
-endif()
-
-include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}-ASM${ASM_DIALECT} OPTIONAL  RESULT_VARIABLE _INCLUDED_FILE)
-if(NOT _INCLUDED_FILE)
-  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL)
-endif()
-
-# This should be included before the _INIT variables are
-# used to initialize the cache.  Since the rule variables
-# have if blocks on them, users can still define them here.
-# But, it should still be after the platform file so changes can
-# be made to those values.
-
-if(CMAKE_USER_MAKE_RULES_OVERRIDE)
-  # Save the full path of the file so try_compile can use it.
-  include(${CMAKE_USER_MAKE_RULES_OVERRIDE} RESULT_VARIABLE _override)
-  set(CMAKE_USER_MAKE_RULES_OVERRIDE "${_override}")
-endif()
-
-if(CMAKE_USER_MAKE_RULES_OVERRIDE_ASM)
-  # Save the full path of the file so try_compile can use it.
-  include(${CMAKE_USER_MAKE_RULES_OVERRIDE_ASM} RESULT_VARIABLE _override)
-  set(CMAKE_USER_MAKE_RULES_OVERRIDE_ASM "${_override}")
-endif()
-
-# Set default assembler file extensions:
-if(NOT CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS)
-  set(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS s;S;asm)
-endif()
-
-
-# Support for CMAKE_ASM${ASM_DIALECT}_FLAGS_INIT and friends:
-set(CMAKE_ASM${ASM_DIALECT}_FLAGS_INIT "$ENV{ASM${ASM_DIALECT}FLAGS} ${CMAKE_ASM${ASM_DIALECT}_FLAGS_INIT}")
-
-cmake_initialize_per_config_variable(CMAKE_ASM${ASM_DIALECT}_FLAGS "Flags used by the ASM${ASM_DIALECT} compiler")
-
-if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT)
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT "<CMAKE_ASM${ASM_DIALECT}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
-endif()
-
-if(NOT CMAKE_ASM${ASM_DIALECT}_CREATE_STATIC_LIBRARY)
-  set(CMAKE_ASM${ASM_DIALECT}_CREATE_STATIC_LIBRARY
-      "<CMAKE_AR> cr <TARGET> <LINK_FLAGS> <OBJECTS> "
-      "<CMAKE_RANLIB> <TARGET>")
-endif()
-
-if(NOT CMAKE_ASM${ASM_DIALECT}_LINK_EXECUTABLE)
-  set(CMAKE_ASM${ASM_DIALECT}_LINK_EXECUTABLE
-    "<CMAKE_ASM${ASM_DIALECT}_COMPILER> <FLAGS> <CMAKE_ASM${ASM_DIALECT}_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RUNTIME_ASM${ASM_DIALECT}_FLAG)
-  set(CMAKE_EXECUTABLE_RUNTIME_ASM${ASM_DIALECT}_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_ASM${ASM_DIALECT}_FLAG})
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RUNTIME_ASM${ASM_DIALECT}_FLAG_SEP)
-  set(CMAKE_EXECUTABLE_RUNTIME_ASM${ASM_DIALECT}_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_ASM${ASM_DIALECT}_FLAG_SEP})
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RPATH_LINK_ASM${ASM_DIALECT}_FLAG)
-  set(CMAKE_EXECUTABLE_RPATH_LINK_ASM${ASM_DIALECT}_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_ASM${ASM_DIALECT}_FLAG})
-endif()
-
-# to be done
-if(NOT CMAKE_ASM${ASM_DIALECT}_CREATE_SHARED_LIBRARY)
-  set(CMAKE_ASM${ASM_DIALECT}_CREATE_SHARED_LIBRARY)
-endif()
-
-if(NOT CMAKE_ASM${ASM_DIALECT}_CREATE_SHARED_MODULE)
-  set(CMAKE_ASM${ASM_DIALECT}_CREATE_SHARED_MODULE)
-endif()
-
-
-set(CMAKE_ASM${ASM_DIALECT}_INFOMATION_LOADED 1)
-
diff --git a/share/cmake-3.18/Modules/CMakeASM_MASMInformation.cmake b/share/cmake-3.18/Modules/CMakeASM_MASMInformation.cmake
deleted file mode 100644
index 6d1e174..0000000
--- a/share/cmake-3.18/Modules/CMakeASM_MASMInformation.cmake
+++ /dev/null
@@ -1,20 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# support for the MS assembler, masm and masm64
-
-set(ASM_DIALECT "_MASM")
-
-set(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS asm)
-
-set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT "<CMAKE_ASM${ASM_DIALECT}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> /c /Fo <OBJECT> <SOURCE>")
-
-# The ASM_MASM compiler id for this compiler is "MSVC", so fill out the runtime library table.
-set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded         "")
-set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL      "")
-set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug    "")
-set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL "")
-
-include(CMakeASMInformation)
-set(ASM_DIALECT)
diff --git a/share/cmake-3.18/Modules/CMakeASM_NASMInformation.cmake b/share/cmake-3.18/Modules/CMakeASM_NASMInformation.cmake
deleted file mode 100644
index 97cb488..0000000
--- a/share/cmake-3.18/Modules/CMakeASM_NASMInformation.cmake
+++ /dev/null
@@ -1,44 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# support for the nasm assembler
-
-set(CMAKE_ASM_NASM_SOURCE_FILE_EXTENSIONS nasm asm)
-
-if(NOT CMAKE_ASM_NASM_OBJECT_FORMAT)
-  if(WIN32)
-    if(DEFINED CMAKE_C_SIZEOF_DATA_PTR AND CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
-      set(CMAKE_ASM_NASM_OBJECT_FORMAT win64)
-    elseif(DEFINED CMAKE_CXX_SIZEOF_DATA_PTR AND CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 8)
-      set(CMAKE_ASM_NASM_OBJECT_FORMAT win64)
-    else()
-      set(CMAKE_ASM_NASM_OBJECT_FORMAT win32)
-    endif()
-  elseif(APPLE)
-    if(DEFINED CMAKE_C_SIZEOF_DATA_PTR AND CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
-      set(CMAKE_ASM_NASM_OBJECT_FORMAT macho64)
-    elseif(DEFINED CMAKE_CXX_SIZEOF_DATA_PTR AND CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 8)
-      set(CMAKE_ASM_NASM_OBJECT_FORMAT macho64)
-    else()
-      set(CMAKE_ASM_NASM_OBJECT_FORMAT macho)
-    endif()
-  else()
-    if(DEFINED CMAKE_C_SIZEOF_DATA_PTR AND CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
-      set(CMAKE_ASM_NASM_OBJECT_FORMAT elf64)
-    elseif(DEFINED CMAKE_CXX_SIZEOF_DATA_PTR AND CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 8)
-      set(CMAKE_ASM_NASM_OBJECT_FORMAT elf64)
-    else()
-      set(CMAKE_ASM_NASM_OBJECT_FORMAT elf)
-    endif()
-  endif()
-endif()
-
-if(NOT CMAKE_ASM_NASM_COMPILE_OBJECT)
-  set(CMAKE_ASM_NASM_COMPILE_OBJECT "<CMAKE_ASM_NASM_COMPILER> <INCLUDES> <FLAGS> -f ${CMAKE_ASM_NASM_OBJECT_FORMAT} -o <OBJECT> <SOURCE>")
-endif()
-
-# Load the generic ASMInformation file:
-set(ASM_DIALECT "_NASM")
-include(CMakeASMInformation)
-set(ASM_DIALECT)
diff --git a/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in b/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in
deleted file mode 100644
index eea3f5d..0000000
--- a/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in
+++ /dev/null
@@ -1,77 +0,0 @@
-set(CMAKE_C_COMPILER "@CMAKE_C_COMPILER@")
-set(CMAKE_C_COMPILER_ARG1 "@CMAKE_C_COMPILER_ARG1@")
-set(CMAKE_C_COMPILER_ID "@CMAKE_C_COMPILER_ID@")
-set(CMAKE_C_COMPILER_VERSION "@CMAKE_C_COMPILER_VERSION@")
-set(CMAKE_C_COMPILER_VERSION_INTERNAL "@CMAKE_C_COMPILER_VERSION_INTERNAL@")
-set(CMAKE_C_COMPILER_WRAPPER "@CMAKE_C_COMPILER_WRAPPER@")
-set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "@CMAKE_C_STANDARD_COMPUTED_DEFAULT@")
-set(CMAKE_C_COMPILE_FEATURES "@CMAKE_C_COMPILE_FEATURES@")
-set(CMAKE_C90_COMPILE_FEATURES "@CMAKE_C90_COMPILE_FEATURES@")
-set(CMAKE_C99_COMPILE_FEATURES "@CMAKE_C99_COMPILE_FEATURES@")
-set(CMAKE_C11_COMPILE_FEATURES "@CMAKE_C11_COMPILE_FEATURES@")
-
-set(CMAKE_C_PLATFORM_ID "@CMAKE_C_PLATFORM_ID@")
-set(CMAKE_C_SIMULATE_ID "@CMAKE_C_SIMULATE_ID@")
-set(CMAKE_C_COMPILER_FRONTEND_VARIANT "@CMAKE_C_COMPILER_FRONTEND_VARIANT@")
-set(CMAKE_C_SIMULATE_VERSION "@CMAKE_C_SIMULATE_VERSION@")
-@_SET_CMAKE_C_COMPILER_ARCHITECTURE_ID@
-@_SET_CMAKE_C_COMPILER_SYSROOT@
-@SET_MSVC_C_ARCHITECTURE_ID@
-@SET_CMAKE_XCODE_ARCHS@
-set(CMAKE_AR "@CMAKE_AR@")
-set(CMAKE_C_COMPILER_AR "@CMAKE_C_COMPILER_AR@")
-set(CMAKE_RANLIB "@CMAKE_RANLIB@")
-set(CMAKE_C_COMPILER_RANLIB "@CMAKE_C_COMPILER_RANLIB@")
-set(CMAKE_LINKER "@CMAKE_LINKER@")
-set(CMAKE_MT "@CMAKE_MT@")
-set(CMAKE_COMPILER_IS_GNUCC @CMAKE_COMPILER_IS_GNUCC@)
-set(CMAKE_C_COMPILER_LOADED 1)
-set(CMAKE_C_COMPILER_WORKS @CMAKE_C_COMPILER_WORKS@)
-set(CMAKE_C_ABI_COMPILED @CMAKE_C_ABI_COMPILED@)
-set(CMAKE_COMPILER_IS_MINGW @CMAKE_COMPILER_IS_MINGW@)
-set(CMAKE_COMPILER_IS_CYGWIN @CMAKE_COMPILER_IS_CYGWIN@)
-if(CMAKE_COMPILER_IS_CYGWIN)
-  set(CYGWIN 1)
-  set(UNIX 1)
-endif()
-
-set(CMAKE_C_COMPILER_ENV_VAR "CC")
-
-if(CMAKE_COMPILER_IS_MINGW)
-  set(MINGW 1)
-endif()
-set(CMAKE_C_COMPILER_ID_RUN 1)
-set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
-set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
-set(CMAKE_C_LINKER_PREFERENCE 10)
-
-# Save compiler ABI information.
-set(CMAKE_C_SIZEOF_DATA_PTR "@CMAKE_C_SIZEOF_DATA_PTR@")
-set(CMAKE_C_COMPILER_ABI "@CMAKE_C_COMPILER_ABI@")
-set(CMAKE_C_LIBRARY_ARCHITECTURE "@CMAKE_C_LIBRARY_ARCHITECTURE@")
-
-if(CMAKE_C_SIZEOF_DATA_PTR)
-  set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
-endif()
-
-if(CMAKE_C_COMPILER_ABI)
-  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
-endif()
-
-if(CMAKE_C_LIBRARY_ARCHITECTURE)
-  set(CMAKE_LIBRARY_ARCHITECTURE "@CMAKE_C_LIBRARY_ARCHITECTURE@")
-endif()
-
-set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "@CMAKE_C_CL_SHOWINCLUDES_PREFIX@")
-if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
-  set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
-endif()
-
-@CMAKE_C_COMPILER_CUSTOM_CODE@
-@CMAKE_C_SYSROOT_FLAG_CODE@
-@CMAKE_C_OSX_DEPLOYMENT_TARGET_FLAG_CODE@
-
-set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "@CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES@")
-set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "@CMAKE_C_IMPLICIT_LINK_LIBRARIES@")
-set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "@CMAKE_C_IMPLICIT_LINK_DIRECTORIES@")
-set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
diff --git a/share/cmake-3.18/Modules/CMakeCCompilerABI.c b/share/cmake-3.18/Modules/CMakeCCompilerABI.c
deleted file mode 100644
index 08cf39b..0000000
--- a/share/cmake-3.18/Modules/CMakeCCompilerABI.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifdef __cplusplus
-#  error "A C++ compiler has been selected for C."
-#endif
-
-#ifdef __CLASSIC_C__
-#  define const
-#endif
-
-#include "CMakeCompilerABI.h"
-
-#ifdef __CLASSIC_C__
-int main(argc, argv) int argc;
-char* argv[];
-#else
-int main(int argc, char* argv[])
-#endif
-{
-  int require = 0;
-  require += info_sizeof_dptr[argc];
-#if defined(ABI_ID)
-  require += info_abi[argc];
-#endif
-  (void)argv;
-  return require;
-}
diff --git a/share/cmake-3.18/Modules/CMakeCCompilerId.c.in b/share/cmake-3.18/Modules/CMakeCCompilerId.c.in
deleted file mode 100644
index 2f6bdb4..0000000
--- a/share/cmake-3.18/Modules/CMakeCCompilerId.c.in
+++ /dev/null
@@ -1,87 +0,0 @@
-#ifdef __cplusplus
-# error "A C++ compiler has been selected for C."
-#endif
-
-#if defined(__18CXX)
-# define ID_VOID_MAIN
-#endif
-#if defined(__CLASSIC_C__)
-/* cv-qualifiers did not exist in K&R C */
-# define const
-# define volatile
-#endif
-
-@CMAKE_C_COMPILER_ID_CONTENT@
-
-/* Construct the string literal in pieces to prevent the source from
-   getting matched.  Store it in a pointer rather than an array
-   because some compilers will just produce instructions to fill the
-   array rather than assigning a pointer to a static array.  */
-char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
-#ifdef SIMULATE_ID
-char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
-#endif
-
-#ifdef __QNXNTO__
-char const* qnxnto = "INFO" ":" "qnxnto[]";
-#endif
-
-#if defined(__CRAYXE) || defined(__CRAYXC)
-char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
-#endif
-
-@CMAKE_C_COMPILER_ID_PLATFORM_CONTENT@
-@CMAKE_C_COMPILER_ID_ERROR_FOR_TEST@
-
-#if !defined(__STDC__)
-# if (defined(_MSC_VER) && !defined(__clang__)) \
-  || (defined(__ibmxl__) || defined(__IBMC__))
-#  define C_DIALECT "90"
-# else
-#  define C_DIALECT
-# endif
-#elif __STDC_VERSION__ >= 201000L
-# define C_DIALECT "11"
-#elif __STDC_VERSION__ >= 199901L
-# define C_DIALECT "99"
-#else
-# define C_DIALECT "90"
-#endif
-const char* info_language_dialect_default =
-  "INFO" ":" "dialect_default[" C_DIALECT "]";
-
-/*--------------------------------------------------------------------------*/
-
-#ifdef ID_VOID_MAIN
-void main() {}
-#else
-# if defined(__CLASSIC_C__)
-int main(argc, argv) int argc; char *argv[];
-# else
-int main(int argc, char* argv[])
-# endif
-{
-  int require = 0;
-  require += info_compiler[argc];
-  require += info_platform[argc];
-  require += info_arch[argc];
-#ifdef COMPILER_VERSION_MAJOR
-  require += info_version[argc];
-#endif
-#ifdef COMPILER_VERSION_INTERNAL
-  require += info_version_internal[argc];
-#endif
-#ifdef SIMULATE_ID
-  require += info_simulate[argc];
-#endif
-#ifdef SIMULATE_VERSION_MAJOR
-  require += info_simulate_version[argc];
-#endif
-#if defined(__CRAYXE) || defined(__CRAYXC)
-  require += info_cray[argc];
-#endif
-  require += info_language_dialect_default[argc];
-  (void)argv;
-  return require;
-}
-#endif
diff --git a/share/cmake-3.18/Modules/CMakeCInformation.cmake b/share/cmake-3.18/Modules/CMakeCInformation.cmake
deleted file mode 100644
index f6d620f..0000000
--- a/share/cmake-3.18/Modules/CMakeCInformation.cmake
+++ /dev/null
@@ -1,195 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This file sets the basic flags for the C language in CMake.
-# It also loads the available platform file for the system-compiler
-# if it exists.
-# It also loads a system - compiler - processor (or target hardware)
-# specific file, which is mainly useful for crosscompiling and embedded systems.
-
-include(CMakeLanguageInformation)
-
-# some compilers use different extensions (e.g. sdcc uses .rel)
-# so set the extension here first so it can be overridden by the compiler specific file
-if(UNIX)
-  set(CMAKE_C_OUTPUT_EXTENSION .o)
-else()
-  set(CMAKE_C_OUTPUT_EXTENSION .obj)
-endif()
-
-set(_INCLUDED_FILE 0)
-
-# Load compiler-specific information.
-if(CMAKE_C_COMPILER_ID)
-  include(Compiler/${CMAKE_C_COMPILER_ID}-C OPTIONAL)
-endif()
-
-set(CMAKE_BASE_NAME)
-get_filename_component(CMAKE_BASE_NAME "${CMAKE_C_COMPILER}" NAME_WE)
-if(CMAKE_COMPILER_IS_GNUCC)
-  set(CMAKE_BASE_NAME gcc)
-endif()
-
-
-# load a hardware specific file, mostly useful for embedded compilers
-if(CMAKE_SYSTEM_PROCESSOR)
-  if(CMAKE_C_COMPILER_ID)
-    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_C_COMPILER_ID}-C-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
-  endif()
-  if (NOT _INCLUDED_FILE)
-    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME}-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
-  endif ()
-endif()
-
-
-# load the system- and compiler specific files
-if(CMAKE_C_COMPILER_ID)
-  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_C_COMPILER_ID}-C
-    OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
-endif()
-if (NOT _INCLUDED_FILE)
-  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME}
-    OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
-endif ()
-
-# load any compiler-wrapper specific information
-if (CMAKE_C_COMPILER_WRAPPER)
-  __cmake_include_compiler_wrapper(C)
-endif ()
-
-# We specify the compiler information in the system file for some
-# platforms, but this language may not have been enabled when the file
-# was first included.  Include it again to get the language info.
-# Remove this when all compiler info is removed from system files.
-if (NOT _INCLUDED_FILE)
-  include(Platform/${CMAKE_SYSTEM_NAME} OPTIONAL)
-endif ()
-
-if(CMAKE_C_SIZEOF_DATA_PTR)
-  foreach(f ${CMAKE_C_ABI_FILES})
-    include(${f})
-  endforeach()
-  unset(CMAKE_C_ABI_FILES)
-endif()
-
-# This should be included before the _INIT variables are
-# used to initialize the cache.  Since the rule variables
-# have if blocks on them, users can still define them here.
-# But, it should still be after the platform file so changes can
-# be made to those values.
-
-if(CMAKE_USER_MAKE_RULES_OVERRIDE)
-  # Save the full path of the file so try_compile can use it.
-  include(${CMAKE_USER_MAKE_RULES_OVERRIDE} RESULT_VARIABLE _override)
-  set(CMAKE_USER_MAKE_RULES_OVERRIDE "${_override}")
-endif()
-
-if(CMAKE_USER_MAKE_RULES_OVERRIDE_C)
-  # Save the full path of the file so try_compile can use it.
-  include(${CMAKE_USER_MAKE_RULES_OVERRIDE_C} RESULT_VARIABLE _override)
-  set(CMAKE_USER_MAKE_RULES_OVERRIDE_C "${_override}")
-endif()
-
-
-# for most systems a module is the same as a shared library
-# so unless the variable CMAKE_MODULE_EXISTS is set just
-# copy the values from the LIBRARY variables
-if(NOT CMAKE_MODULE_EXISTS)
-  set(CMAKE_SHARED_MODULE_C_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
-  set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS})
-endif()
-
-set(CMAKE_C_FLAGS_INIT "$ENV{CFLAGS} ${CMAKE_C_FLAGS_INIT}")
-
-cmake_initialize_per_config_variable(CMAKE_C_FLAGS "Flags used by the C compiler")
-
-if(CMAKE_C_STANDARD_LIBRARIES_INIT)
-  set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES_INIT}"
-    CACHE STRING "Libraries linked by default with all C applications.")
-  mark_as_advanced(CMAKE_C_STANDARD_LIBRARIES)
-endif()
-
-if(NOT CMAKE_C_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_C_COMPILER_LAUNCHER})
-  set(CMAKE_C_COMPILER_LAUNCHER "$ENV{CMAKE_C_COMPILER_LAUNCHER}"
-    CACHE STRING "Compiler launcher for C.")
-endif()
-
-include(CMakeCommonLanguageInclude)
-
-# now define the following rule variables
-
-# CMAKE_C_CREATE_SHARED_LIBRARY
-# CMAKE_C_CREATE_SHARED_MODULE
-# CMAKE_C_COMPILE_OBJECT
-# CMAKE_C_LINK_EXECUTABLE
-
-# variables supplied by the generator at use time
-# <TARGET>
-# <TARGET_BASE> the target without the suffix
-# <OBJECTS>
-# <OBJECT>
-# <LINK_LIBRARIES>
-# <FLAGS>
-# <LINK_FLAGS>
-
-# C compiler information
-# <CMAKE_C_COMPILER>
-# <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS>
-# <CMAKE_SHARED_MODULE_CREATE_C_FLAGS>
-# <CMAKE_C_LINK_FLAGS>
-
-# Static library tools
-# <CMAKE_AR>
-# <CMAKE_RANLIB>
-
-
-# create a C shared library
-if(NOT CMAKE_C_CREATE_SHARED_LIBRARY)
-  set(CMAKE_C_CREATE_SHARED_LIBRARY
-      "<CMAKE_C_COMPILER> <CMAKE_SHARED_LIBRARY_C_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
-endif()
-
-# create a C shared module just copy the shared library rule
-if(NOT CMAKE_C_CREATE_SHARED_MODULE)
-  set(CMAKE_C_CREATE_SHARED_MODULE ${CMAKE_C_CREATE_SHARED_LIBRARY})
-endif()
-
-# Create a static archive incrementally for large object file counts.
-# If CMAKE_C_CREATE_STATIC_LIBRARY is set it will override these.
-if(NOT DEFINED CMAKE_C_ARCHIVE_CREATE)
-  set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
-endif()
-if(NOT DEFINED CMAKE_C_ARCHIVE_APPEND)
-  set(CMAKE_C_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
-endif()
-if(NOT DEFINED CMAKE_C_ARCHIVE_FINISH)
-  set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
-endif()
-
-# compile a C file into an object file
-if(NOT CMAKE_C_COMPILE_OBJECT)
-  set(CMAKE_C_COMPILE_OBJECT
-    "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
-endif()
-
-if(NOT CMAKE_C_LINK_EXECUTABLE)
-  set(CMAKE_C_LINK_EXECUTABLE
-    "<CMAKE_C_COMPILER> <FLAGS> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RUNTIME_C_FLAG)
-  set(CMAKE_EXECUTABLE_RUNTIME_C_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG})
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RUNTIME_C_FLAG_SEP)
-  set(CMAKE_EXECUTABLE_RUNTIME_C_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP})
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RPATH_LINK_C_FLAG)
-  set(CMAKE_EXECUTABLE_RPATH_LINK_C_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG})
-endif()
-
-set(CMAKE_C_INFORMATION_LOADED 1)
-
-
diff --git a/share/cmake-3.18/Modules/CMakeCSharpCompilerId.cs.in b/share/cmake-3.18/Modules/CMakeCSharpCompilerId.cs.in
deleted file mode 100644
index 987f63a..0000000
--- a/share/cmake-3.18/Modules/CMakeCSharpCompilerId.cs.in
+++ /dev/null
@@ -1,63 +0,0 @@
-using System;
-
-namespace CSharp
-{
-    public class CSharpApp
-    {
-        const string InfoCompiler = "INFO:compiler[Microsoft "
-#if PlatformToolsetv100
-        + "Visual Studio"
-#elif PlatformToolsetv110
-        + "Visual Studio"
-#elif PlatformToolsetv120
-        + "Visual Studio"
-#elif PlatformToolsetv140
-        + "Visual Studio"
-#elif PlatformToolsetv141
-        + "Visual Studio"
-#else
-        + "unknown"
-#endif
-        + "]";
-
-        const string InfoPlatform = "INFO:platform[Windows]";
-
-        const string InfoArchitecture = "INFO:arch["
-#if Platformx64
-        + "x64"
-#elif Platformx86
-        + "x86"
-#elif PlatformxWin32
-        + "Win32]"
-#else
-        + "unknown"
-#endif
-        + "]";
-
-        const string InfoCompilerVersion = "INFO:compiler_version["
-#if PlatformToolsetv100
-        + "2010"
-#elif PlatformToolsetv110
-        + "2012"
-#elif PlatformToolsetv120
-        + "2013"
-#elif PlatformToolsetv140
-        + "2015"
-#elif PlatformToolsetv141
-        + "2017"
-#else
-        + "9999"
-#endif
-        + "]";
-
-        static void Main(string[] args)
-        {
-            // we have to print the lines to make sure
-            // the compiler does not optimize them away ...
-            System.Console.WriteLine(InfoCompiler);
-            System.Console.WriteLine(InfoPlatform);
-            System.Console.WriteLine(InfoArchitecture);
-            System.Console.WriteLine(InfoCompilerVersion);
-        }
-    }
-}
diff --git a/share/cmake-3.18/Modules/CMakeCUDACompiler.cmake.in b/share/cmake-3.18/Modules/CMakeCUDACompiler.cmake.in
deleted file mode 100644
index 704ad09..0000000
--- a/share/cmake-3.18/Modules/CMakeCUDACompiler.cmake.in
+++ /dev/null
@@ -1,64 +0,0 @@
-set(CMAKE_CUDA_COMPILER "@CMAKE_CUDA_COMPILER@")
-set(CMAKE_CUDA_HOST_COMPILER "@CMAKE_CUDA_HOST_COMPILER@")
-set(CMAKE_CUDA_HOST_LINK_LAUNCHER "@CMAKE_CUDA_HOST_LINK_LAUNCHER@")
-set(CMAKE_CUDA_COMPILER_ID "@CMAKE_CUDA_COMPILER_ID@")
-set(CMAKE_CUDA_COMPILER_VERSION "@CMAKE_CUDA_COMPILER_VERSION@")
-set(CMAKE_CUDA_STANDARD_COMPUTED_DEFAULT "@CMAKE_CUDA_STANDARD_COMPUTED_DEFAULT@")
-set(CMAKE_CUDA_COMPILE_FEATURES "@CMAKE_CUDA_COMPILE_FEATURES@")
-set(CMAKE_CUDA03_COMPILE_FEATURES "@CMAKE_CUDA03_COMPILE_FEATURES@")
-set(CMAKE_CUDA11_COMPILE_FEATURES "@CMAKE_CUDA11_COMPILE_FEATURES@")
-set(CMAKE_CUDA14_COMPILE_FEATURES "@CMAKE_CUDA14_COMPILE_FEATURES@")
-set(CMAKE_CUDA17_COMPILE_FEATURES "@CMAKE_CUDA17_COMPILE_FEATURES@")
-set(CMAKE_CUDA20_COMPILE_FEATURES "@CMAKE_CUDA20_COMPILE_FEATURES@")
-
-set(CMAKE_CUDA_PLATFORM_ID "@CMAKE_CUDA_PLATFORM_ID@")
-set(CMAKE_CUDA_SIMULATE_ID "@CMAKE_CUDA_SIMULATE_ID@")
-set(CMAKE_CUDA_COMPILER_FRONTEND_VARIANT "@CMAKE_CUDA_COMPILER_FRONTEND_VARIANT@")
-set(CMAKE_CUDA_SIMULATE_VERSION "@CMAKE_CUDA_SIMULATE_VERSION@")
-@SET_MSVC_CUDA_ARCHITECTURE_ID@
-@_SET_CMAKE_CUDA_COMPILER_SYSROOT@
-
-set(CMAKE_CUDA_COMPILER_ENV_VAR "CUDACXX")
-set(CMAKE_CUDA_HOST_COMPILER_ENV_VAR "CUDAHOSTCXX")
-
-set(CMAKE_CUDA_COMPILER_LOADED 1)
-set(CMAKE_CUDA_COMPILER_ID_RUN 1)
-set(CMAKE_CUDA_SOURCE_FILE_EXTENSIONS cu)
-set(CMAKE_CUDA_LINKER_PREFERENCE 15)
-set(CMAKE_CUDA_LINKER_PREFERENCE_PROPAGATES 1)
-
-set(CMAKE_CUDA_SIZEOF_DATA_PTR "@CMAKE_CUDA_SIZEOF_DATA_PTR@")
-set(CMAKE_CUDA_COMPILER_ABI "@CMAKE_CUDA_COMPILER_ABI@")
-set(CMAKE_CUDA_LIBRARY_ARCHITECTURE "@CMAKE_CUDA_LIBRARY_ARCHITECTURE@")
-
-if(CMAKE_CUDA_SIZEOF_DATA_PTR)
-  set(CMAKE_SIZEOF_VOID_P "${CMAKE_CUDA_SIZEOF_DATA_PTR}")
-endif()
-
-if(CMAKE_CUDA_COMPILER_ABI)
-  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CUDA_COMPILER_ABI}")
-endif()
-
-if(CMAKE_CUDA_LIBRARY_ARCHITECTURE)
-  set(CMAKE_LIBRARY_ARCHITECTURE "@CMAKE_CUDA_LIBRARY_ARCHITECTURE@")
-endif()
-
-set(CMAKE_CUDA_COMPILER_TOOLKIT_ROOT "@CMAKE_CUDA_COMPILER_TOOLKIT_ROOT@")
-set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT "@CMAKE_CUDA_COMPILER_LIBRARY_ROOT@")
-
-set(CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES "@CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES@")
-
-set(CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES "@CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES@")
-set(CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES "@CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES@")
-set(CMAKE_CUDA_HOST_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_CUDA_HOST_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
-
-set(CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES "@CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES@")
-set(CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES "@CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES@")
-set(CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES "@CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES@")
-set(CMAKE_CUDA_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_CUDA_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
-
-@_SET_CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT@
-
-set(CMAKE_LINKER "@CMAKE_LINKER@")
-set(CMAKE_AR "@CMAKE_AR@")
-set(CMAKE_MT "@CMAKE_MT@")
diff --git a/share/cmake-3.18/Modules/CMakeCUDACompilerABI.cu b/share/cmake-3.18/Modules/CMakeCUDACompilerABI.cu
deleted file mode 100644
index 702a7c5..0000000
--- a/share/cmake-3.18/Modules/CMakeCUDACompilerABI.cu
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef __CUDACC__
-#  error "A C or C++ compiler has been selected for CUDA"
-#endif
-
-#include "CMakeCompilerABI.h"
-
-int main(int argc, char* argv[])
-{
-  int require = 0;
-  require += info_sizeof_dptr[argc];
-#if defined(ABI_ID)
-  require += info_abi[argc];
-#endif
-  (void)argv;
-  return require;
-}
diff --git a/share/cmake-3.18/Modules/CMakeCUDACompilerId.cu.in b/share/cmake-3.18/Modules/CMakeCUDACompilerId.cu.in
deleted file mode 100644
index 2055de2..0000000
--- a/share/cmake-3.18/Modules/CMakeCUDACompilerId.cu.in
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef __CUDACC__
-# error "A C or C++ compiler has been selected for CUDA"
-#endif
-
-@CMAKE_CUDA_COMPILER_ID_CONTENT@
-
-/* Construct the string literal in pieces to prevent the source from
-   getting matched.  Store it in a pointer rather than an array
-   because some compilers will just produce instructions to fill the
-   array rather than assigning a pointer to a static array.  */
-char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
-#ifdef SIMULATE_ID
-char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
-#endif
-
-@CMAKE_CUDA_COMPILER_ID_PLATFORM_CONTENT@
-@CMAKE_CUDA_COMPILER_ID_ERROR_FOR_TEST@
-
-const char* info_language_dialect_default = "INFO" ":" "dialect_default["
-#if __cplusplus > 201703L
-  "20"
-#elif __cplusplus >= 201703L
-  "17"
-#elif __cplusplus >= 201402L
-  "14"
-#elif __cplusplus >= 201103L
-  "11"
-#else
-  "03"
-#endif
-"]";
-
-/*--------------------------------------------------------------------------*/
-
-int main(int argc, char* argv[])
-{
-  int require = 0;
-  require += info_compiler[argc];
-  require += info_platform[argc];
-#ifdef COMPILER_VERSION_MAJOR
-  require += info_version[argc];
-#endif
-#ifdef SIMULATE_ID
-  require += info_simulate[argc];
-#endif
-#ifdef SIMULATE_VERSION_MAJOR
-  require += info_simulate_version[argc];
-#endif
-  require += info_language_dialect_default[argc];
-  (void)argv;
-  return require;
-}
diff --git a/share/cmake-3.18/Modules/CMakeCUDAInformation.cmake b/share/cmake-3.18/Modules/CMakeCUDAInformation.cmake
deleted file mode 100644
index f9f7574..0000000
--- a/share/cmake-3.18/Modules/CMakeCUDAInformation.cmake
+++ /dev/null
@@ -1,205 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-if(UNIX)
-  set(CMAKE_CUDA_OUTPUT_EXTENSION .o)
-else()
-  set(CMAKE_CUDA_OUTPUT_EXTENSION .obj)
-endif()
-set(CMAKE_INCLUDE_FLAG_CUDA "-I")
-
-# Set implicit links early so compiler-specific modules can use them.
-set(__IMPLICT_LINKS )
-foreach(dir ${CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES})
-  string(APPEND __IMPLICT_LINKS " -L\"${dir}\"")
-endforeach()
-foreach(lib ${CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES})
-  if(${lib} MATCHES "/")
-    string(APPEND __IMPLICT_LINKS " \"${lib}\"")
-  else()
-    string(APPEND __IMPLICT_LINKS " -l${lib}")
-  endif()
-endforeach()
-
-# Load compiler-specific information.
-if(CMAKE_CUDA_COMPILER_ID)
-  include(Compiler/${CMAKE_CUDA_COMPILER_ID}-CUDA OPTIONAL)
-endif()
-
-# load the system- and compiler specific files
-if(CMAKE_CUDA_COMPILER_ID)
-  # load a hardware specific file, mostly useful for embedded compilers
-  if(CMAKE_SYSTEM_PROCESSOR)
-    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_CUDA_COMPILER_ID}-CUDA-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
-  endif()
-  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_CUDA_COMPILER_ID}-CUDA OPTIONAL)
-endif()
-
-
-if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_CUDA_FLAG)
-  set(CMAKE_SHARED_LIBRARY_RUNTIME_CUDA_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG})
-endif()
-
-if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_CUDA_FLAG_SEP)
-  set(CMAKE_SHARED_LIBRARY_RUNTIME_CUDA_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP})
-endif()
-
-if(NOT CMAKE_SHARED_LIBRARY_RPATH_LINK_CUDA_FLAG)
-  set(CMAKE_SHARED_LIBRARY_RPATH_LINK_CUDA_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG})
-endif()
-
-if(NOT DEFINED CMAKE_EXE_EXPORTS_CUDA_FLAG)
-  set(CMAKE_EXE_EXPORTS_CUDA_FLAG ${CMAKE_EXE_EXPORTS_C_FLAG})
-endif()
-
-if(NOT DEFINED CMAKE_SHARED_LIBRARY_SONAME_CUDA_FLAG)
-  set(CMAKE_SHARED_LIBRARY_SONAME_CUDA_FLAG ${CMAKE_SHARED_LIBRARY_SONAME_C_FLAG})
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RUNTIME_CUDA_FLAG)
-  set(CMAKE_EXECUTABLE_RUNTIME_CUDA_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_CUDA_FLAG})
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RUNTIME_CUDA_FLAG_SEP)
-  set(CMAKE_EXECUTABLE_RUNTIME_CUDA_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_CUDA_FLAG_SEP})
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RPATH_LINK_CUDA_FLAG)
-  set(CMAKE_EXECUTABLE_RPATH_LINK_CUDA_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_CUDA_FLAG})
-endif()
-
-if(NOT DEFINED CMAKE_SHARED_LIBRARY_LINK_CUDA_WITH_RUNTIME_PATH)
-  set(CMAKE_SHARED_LIBRARY_LINK_CUDA_WITH_RUNTIME_PATH ${CMAKE_SHARED_LIBRARY_LINK_C_WITH_RUNTIME_PATH})
-endif()
-
-
-# for most systems a module is the same as a shared library
-# so unless the variable CMAKE_MODULE_EXISTS is set just
-# copy the values from the LIBRARY variables
-if(NOT CMAKE_MODULE_EXISTS)
-  set(CMAKE_SHARED_MODULE_CUDA_FLAGS ${CMAKE_SHARED_LIBRARY_CUDA_FLAGS})
-  set(CMAKE_SHARED_MODULE_CREATE_CUDA_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_CUDA_FLAGS})
-endif()
-
-# add the flags to the cache based
-# on the initial values computed in the platform/*.cmake files
-# use _INIT variables so that this only happens the first time
-# and you can set these flags in the cmake cache
-set(CMAKE_CUDA_FLAGS_INIT "$ENV{CUDAFLAGS} ${CMAKE_CUDA_FLAGS_INIT}")
-
-cmake_initialize_per_config_variable(CMAKE_CUDA_FLAGS "Flags used by the CUDA compiler")
-
-if(CMAKE_CUDA_STANDARD_LIBRARIES_INIT)
-  set(CMAKE_CUDA_STANDARD_LIBRARIES "${CMAKE_CUDA_STANDARD_LIBRARIES_INIT}"
-    CACHE STRING "Libraries linked by default with all CUDA applications.")
-  mark_as_advanced(CMAKE_CUDA_STANDARD_LIBRARIES)
-endif()
-
-if(NOT CMAKE_CUDA_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_CUDA_COMPILER_LAUNCHER})
-  set(CMAKE_CUDA_COMPILER_LAUNCHER "$ENV{CMAKE_CUDA_COMPILER_LAUNCHER}"
-    CACHE STRING "Compiler launcher for CUDA.")
-endif()
-
-include(CMakeCommonLanguageInclude)
-
-# now define the following rules:
-# CMAKE_CUDA_CREATE_SHARED_LIBRARY
-# CMAKE_CUDA_CREATE_SHARED_MODULE
-# CMAKE_CUDA_COMPILE_WHOLE_COMPILATION
-# CMAKE_CUDA_COMPILE_PTX_COMPILATION
-# CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION
-# CMAKE_CUDA_LINK_EXECUTABLE
-
-if(CMAKE_CUDA_HOST_COMPILER AND CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
-  string(APPEND _CMAKE_CUDA_EXTRA_FLAGS " -ccbin=<CMAKE_CUDA_HOST_COMPILER>")
-endif()
-
-# create a shared library
-if(NOT CMAKE_CUDA_CREATE_SHARED_LIBRARY)
-  set(CMAKE_CUDA_CREATE_SHARED_LIBRARY
-      "<CMAKE_CUDA_HOST_LINK_LAUNCHER> <CMAKE_SHARED_LIBRARY_CUDA_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CUDA_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>${__IMPLICT_LINKS}")
-endif()
-
-# create a shared module copy the shared library rule by default
-if(NOT CMAKE_CUDA_CREATE_SHARED_MODULE)
-  set(CMAKE_CUDA_CREATE_SHARED_MODULE ${CMAKE_CUDA_CREATE_SHARED_LIBRARY})
-endif()
-
-# Create a static archive incrementally for large object file counts.
-if(NOT DEFINED CMAKE_CUDA_ARCHIVE_CREATE)
-  set(CMAKE_CUDA_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
-endif()
-if(NOT DEFINED CMAKE_CUDA_ARCHIVE_APPEND)
-  set(CMAKE_CUDA_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
-endif()
-if(NOT DEFINED CMAKE_CUDA_ARCHIVE_FINISH)
-  set(CMAKE_CUDA_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
-endif()
-
-#Specify how to compile when ptx has been requested
-if(NOT CMAKE_CUDA_COMPILE_PTX_COMPILATION)
-  set(CMAKE_CUDA_COMPILE_PTX_COMPILATION
-    "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} ${_CMAKE_CUDA_PTX_FLAG} <SOURCE> -o <OBJECT>")
-endif()
-
-#Specify how to compile when separable compilation has been requested
-if(NOT CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION)
-  set(CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION
-    "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} -dc <SOURCE> -o <OBJECT>")
-endif()
-
-#Specify how to compile when whole compilation has been requested
-if(NOT CMAKE_CUDA_COMPILE_WHOLE_COMPILATION)
-  set(CMAKE_CUDA_COMPILE_WHOLE_COMPILATION
-    "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} -c <SOURCE> -o <OBJECT>")
-endif()
-
-if(CMAKE_GENERATOR STREQUAL "Ninja" AND NOT CMAKE_DEPFILE_FLAGS_CUDA)
-  set(CMAKE_CUDA_COMPILE_DEPENDENCY_DETECTION
-    "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} -M <SOURCE> -MT <OBJECT> -o $DEP_FILE")
-  #The Ninja generator uses the make file dependency files to determine what
-  #files need to be recompiled. Unfortunately, nvcc < 10.2 doesn't support building
-  #a source file and generating the dependencies of said file in a single
-  #invocation. Instead we have to state that you need to chain two commands.
-  #
-  #The makefile generators uses the custom CMake dependency scanner, and thus
-  #it is exempt from this logic.
-  list(APPEND CMAKE_CUDA_COMPILE_PTX_COMPILATION "${CMAKE_CUDA_COMPILE_DEPENDENCY_DETECTION}")
-  list(APPEND CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION "${CMAKE_CUDA_COMPILE_DEPENDENCY_DETECTION}")
-  list(APPEND CMAKE_CUDA_COMPILE_WHOLE_COMPILATION "${CMAKE_CUDA_COMPILE_DEPENDENCY_DETECTION}")
-endif()
-
-# compile a cu file into an executable
-if(NOT CMAKE_CUDA_LINK_EXECUTABLE)
-  set(CMAKE_CUDA_LINK_EXECUTABLE
-    "<CMAKE_CUDA_HOST_LINK_LAUNCHER> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>${__IMPLICT_LINKS}")
-endif()
-
-# Add implicit host link directories that contain device libraries
-# to the device link line.
-set(__IMPLICT_DLINK_DIRS ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES})
-if(__IMPLICT_DLINK_DIRS)
-  list(REMOVE_ITEM __IMPLICT_DLINK_DIRS ${CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES})
-endif()
-set(__IMPLICT_DLINK_FLAGS )
-foreach(dir ${__IMPLICT_DLINK_DIRS})
-  if(EXISTS "${dir}/libcurand_static.a")
-    string(APPEND __IMPLICT_DLINK_FLAGS " -L\"${dir}\"")
-  endif()
-endforeach()
-unset(__IMPLICT_DLINK_DIRS)
-
-
-#These are used when linking relocatable (dc) cuda code
-if(NOT CMAKE_CUDA_DEVICE_LINK_LIBRARY)
-  set(CMAKE_CUDA_DEVICE_LINK_LIBRARY
-    "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> ${CMAKE_CUDA_COMPILE_OPTIONS_PIC} ${_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS} -shared -dlink <OBJECTS> -o <TARGET> <LINK_LIBRARIES>${__IMPLICT_DLINK_FLAGS}")
-endif()
-if(NOT CMAKE_CUDA_DEVICE_LINK_EXECUTABLE)
-  set(CMAKE_CUDA_DEVICE_LINK_EXECUTABLE
-    "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> ${CMAKE_CUDA_COMPILE_OPTIONS_PIC} ${_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS} -shared -dlink <OBJECTS> -o <TARGET> <LINK_LIBRARIES>${__IMPLICT_DLINK_FLAGS}")
-endif()
-
-unset(__IMPLICT_DLINK_FLAGS)
-
-set(CMAKE_CUDA_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.18/Modules/CMakeCXXCompiler.cmake.in b/share/cmake-3.18/Modules/CMakeCXXCompiler.cmake.in
deleted file mode 100644
index 09bdc23..0000000
--- a/share/cmake-3.18/Modules/CMakeCXXCompiler.cmake.in
+++ /dev/null
@@ -1,89 +0,0 @@
-set(CMAKE_CXX_COMPILER "@CMAKE_CXX_COMPILER@")
-set(CMAKE_CXX_COMPILER_ARG1 "@CMAKE_CXX_COMPILER_ARG1@")
-set(CMAKE_CXX_COMPILER_ID "@CMAKE_CXX_COMPILER_ID@")
-set(CMAKE_CXX_COMPILER_VERSION "@CMAKE_CXX_COMPILER_VERSION@")
-set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "@CMAKE_CXX_COMPILER_VERSION_INTERNAL@")
-set(CMAKE_CXX_COMPILER_WRAPPER "@CMAKE_CXX_COMPILER_WRAPPER@")
-set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "@CMAKE_CXX_STANDARD_COMPUTED_DEFAULT@")
-set(CMAKE_CXX_COMPILE_FEATURES "@CMAKE_CXX_COMPILE_FEATURES@")
-set(CMAKE_CXX98_COMPILE_FEATURES "@CMAKE_CXX98_COMPILE_FEATURES@")
-set(CMAKE_CXX11_COMPILE_FEATURES "@CMAKE_CXX11_COMPILE_FEATURES@")
-set(CMAKE_CXX14_COMPILE_FEATURES "@CMAKE_CXX14_COMPILE_FEATURES@")
-set(CMAKE_CXX17_COMPILE_FEATURES "@CMAKE_CXX17_COMPILE_FEATURES@")
-set(CMAKE_CXX20_COMPILE_FEATURES "@CMAKE_CXX20_COMPILE_FEATURES@")
-
-set(CMAKE_CXX_PLATFORM_ID "@CMAKE_CXX_PLATFORM_ID@")
-set(CMAKE_CXX_SIMULATE_ID "@CMAKE_CXX_SIMULATE_ID@")
-set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "@CMAKE_CXX_COMPILER_FRONTEND_VARIANT@")
-set(CMAKE_CXX_SIMULATE_VERSION "@CMAKE_CXX_SIMULATE_VERSION@")
-@_SET_CMAKE_CXX_COMPILER_ARCHITECTURE_ID@
-@_SET_CMAKE_CXX_COMPILER_SYSROOT@
-@SET_MSVC_CXX_ARCHITECTURE_ID@
-@SET_CMAKE_XCODE_ARCHS@
-set(CMAKE_AR "@CMAKE_AR@")
-set(CMAKE_CXX_COMPILER_AR "@CMAKE_CXX_COMPILER_AR@")
-set(CMAKE_RANLIB "@CMAKE_RANLIB@")
-set(CMAKE_CXX_COMPILER_RANLIB "@CMAKE_CXX_COMPILER_RANLIB@")
-set(CMAKE_LINKER "@CMAKE_LINKER@")
-set(CMAKE_MT "@CMAKE_MT@")
-set(CMAKE_COMPILER_IS_GNUCXX @CMAKE_COMPILER_IS_GNUCXX@)
-set(CMAKE_CXX_COMPILER_LOADED 1)
-set(CMAKE_CXX_COMPILER_WORKS @CMAKE_CXX_COMPILER_WORKS@)
-set(CMAKE_CXX_ABI_COMPILED @CMAKE_CXX_ABI_COMPILED@)
-set(CMAKE_COMPILER_IS_MINGW @CMAKE_COMPILER_IS_MINGW@)
-set(CMAKE_COMPILER_IS_CYGWIN @CMAKE_COMPILER_IS_CYGWIN@)
-if(CMAKE_COMPILER_IS_CYGWIN)
-  set(CYGWIN 1)
-  set(UNIX 1)
-endif()
-
-set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
-
-if(CMAKE_COMPILER_IS_MINGW)
-  set(MINGW 1)
-endif()
-set(CMAKE_CXX_COMPILER_ID_RUN 1)
-set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP)
-set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
-
-foreach (lang C OBJC OBJCXX)
-  if (CMAKE_${lang}_COMPILER_ID_RUN)
-    foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS)
-      list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension})
-    endforeach()
-  endif()
-endforeach()
-
-set(CMAKE_CXX_LINKER_PREFERENCE 30)
-set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
-
-# Save compiler ABI information.
-set(CMAKE_CXX_SIZEOF_DATA_PTR "@CMAKE_CXX_SIZEOF_DATA_PTR@")
-set(CMAKE_CXX_COMPILER_ABI "@CMAKE_CXX_COMPILER_ABI@")
-set(CMAKE_CXX_LIBRARY_ARCHITECTURE "@CMAKE_CXX_LIBRARY_ARCHITECTURE@")
-
-if(CMAKE_CXX_SIZEOF_DATA_PTR)
-  set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
-endif()
-
-if(CMAKE_CXX_COMPILER_ABI)
-  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
-endif()
-
-if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
-  set(CMAKE_LIBRARY_ARCHITECTURE "@CMAKE_CXX_LIBRARY_ARCHITECTURE@")
-endif()
-
-set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "@CMAKE_CXX_CL_SHOWINCLUDES_PREFIX@")
-if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
-  set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
-endif()
-
-@CMAKE_CXX_COMPILER_CUSTOM_CODE@
-@CMAKE_CXX_SYSROOT_FLAG_CODE@
-@CMAKE_CXX_OSX_DEPLOYMENT_TARGET_FLAG_CODE@
-
-set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "@CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES@")
-set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "@CMAKE_CXX_IMPLICIT_LINK_LIBRARIES@")
-set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "@CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES@")
-set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
diff --git a/share/cmake-3.18/Modules/CMakeCXXCompilerABI.cpp b/share/cmake-3.18/Modules/CMakeCXXCompilerABI.cpp
deleted file mode 100644
index 2360534..0000000
--- a/share/cmake-3.18/Modules/CMakeCXXCompilerABI.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef __cplusplus
-#  error "A C compiler has been selected for C++."
-#endif
-
-#include "CMakeCompilerABI.h"
-
-int main(int argc, char* argv[])
-{
-  int require = 0;
-  require += info_sizeof_dptr[argc];
-#if defined(ABI_ID)
-  require += info_abi[argc];
-#endif
-  (void)argv;
-  return require;
-}
diff --git a/share/cmake-3.18/Modules/CMakeCXXCompilerId.cpp.in b/share/cmake-3.18/Modules/CMakeCXXCompilerId.cpp.in
deleted file mode 100644
index a743ce7..0000000
--- a/share/cmake-3.18/Modules/CMakeCXXCompilerId.cpp.in
+++ /dev/null
@@ -1,85 +0,0 @@
-/* This source file must have a .cpp extension so that all C++ compilers
-   recognize the extension without flags.  Borland does not know .cxx for
-   example.  */
-#ifndef __cplusplus
-# error "A C compiler has been selected for C++."
-#endif
-
-@CMAKE_CXX_COMPILER_ID_CONTENT@
-
-/* Construct the string literal in pieces to prevent the source from
-   getting matched.  Store it in a pointer rather than an array
-   because some compilers will just produce instructions to fill the
-   array rather than assigning a pointer to a static array.  */
-char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
-#ifdef SIMULATE_ID
-char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
-#endif
-
-#ifdef __QNXNTO__
-char const* qnxnto = "INFO" ":" "qnxnto[]";
-#endif
-
-#if defined(__CRAYXE) || defined(__CRAYXC)
-char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
-#endif
-
-@CMAKE_CXX_COMPILER_ID_PLATFORM_CONTENT@
-@CMAKE_CXX_COMPILER_ID_ERROR_FOR_TEST@
-
-#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L
-#  if defined(__INTEL_CXX11_MODE__)
-#    if defined(__cpp_aggregate_nsdmi)
-#      define CXX_STD 201402L
-#    else
-#      define CXX_STD 201103L
-#    endif
-#  else
-#    define CXX_STD 199711L
-#  endif
-#elif defined(_MSC_VER) && defined(_MSVC_LANG)
-#  define CXX_STD _MSVC_LANG
-#else
-#  define CXX_STD __cplusplus
-#endif
-
-const char* info_language_dialect_default = "INFO" ":" "dialect_default["
-#if CXX_STD > 201703L
-  "20"
-#elif CXX_STD >= 201703L
-  "17"
-#elif CXX_STD >= 201402L
-  "14"
-#elif CXX_STD >= 201103L
-  "11"
-#else
-  "98"
-#endif
-"]";
-
-/*--------------------------------------------------------------------------*/
-
-int main(int argc, char* argv[])
-{
-  int require = 0;
-  require += info_compiler[argc];
-  require += info_platform[argc];
-#ifdef COMPILER_VERSION_MAJOR
-  require += info_version[argc];
-#endif
-#ifdef COMPILER_VERSION_INTERNAL
-  require += info_version_internal[argc];
-#endif
-#ifdef SIMULATE_ID
-  require += info_simulate[argc];
-#endif
-#ifdef SIMULATE_VERSION_MAJOR
-  require += info_simulate_version[argc];
-#endif
-#if defined(__CRAYXE) || defined(__CRAYXC)
-  require += info_cray[argc];
-#endif
-  require += info_language_dialect_default[argc];
-  (void)argv;
-  return require;
-}
diff --git a/share/cmake-3.18/Modules/CMakeCXXInformation.cmake b/share/cmake-3.18/Modules/CMakeCXXInformation.cmake
deleted file mode 100644
index dbb4366..0000000
--- a/share/cmake-3.18/Modules/CMakeCXXInformation.cmake
+++ /dev/null
@@ -1,282 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This file sets the basic flags for the C++ language in CMake.
-# It also loads the available platform file for the system-compiler
-# if it exists.
-# It also loads a system - compiler - processor (or target hardware)
-# specific file, which is mainly useful for crosscompiling and embedded systems.
-
-include(CMakeLanguageInformation)
-
-# some compilers use different extensions (e.g. sdcc uses .rel)
-# so set the extension here first so it can be overridden by the compiler specific file
-if(UNIX)
-  set(CMAKE_CXX_OUTPUT_EXTENSION .o)
-else()
-  set(CMAKE_CXX_OUTPUT_EXTENSION .obj)
-endif()
-
-set(_INCLUDED_FILE 0)
-
-# Load compiler-specific information.
-if(CMAKE_CXX_COMPILER_ID)
-  include(Compiler/${CMAKE_CXX_COMPILER_ID}-CXX OPTIONAL)
-endif()
-
-set(CMAKE_BASE_NAME)
-get_filename_component(CMAKE_BASE_NAME "${CMAKE_CXX_COMPILER}" NAME_WE)
-# since the gnu compiler has several names force g++
-if(CMAKE_COMPILER_IS_GNUCXX)
-  set(CMAKE_BASE_NAME g++)
-endif()
-
-
-# load a hardware specific file, mostly useful for embedded compilers
-if(CMAKE_SYSTEM_PROCESSOR)
-  if(CMAKE_CXX_COMPILER_ID)
-    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_CXX_COMPILER_ID}-CXX-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
-  endif()
-  if (NOT _INCLUDED_FILE)
-    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME}-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
-  endif ()
-endif()
-
-# load the system- and compiler specific files
-if(CMAKE_CXX_COMPILER_ID)
-  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_CXX_COMPILER_ID}-CXX OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
-endif()
-if (NOT _INCLUDED_FILE)
-  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL
-          RESULT_VARIABLE _INCLUDED_FILE)
-endif ()
-
-# load any compiler-wrapper specific information
-if (CMAKE_CXX_COMPILER_WRAPPER)
-  __cmake_include_compiler_wrapper(CXX)
-endif ()
-
-# We specify the compiler information in the system file for some
-# platforms, but this language may not have been enabled when the file
-# was first included.  Include it again to get the language info.
-# Remove this when all compiler info is removed from system files.
-if (NOT _INCLUDED_FILE)
-  include(Platform/${CMAKE_SYSTEM_NAME} OPTIONAL)
-endif ()
-
-if(CMAKE_CXX_SIZEOF_DATA_PTR)
-  foreach(f ${CMAKE_CXX_ABI_FILES})
-    include(${f})
-  endforeach()
-  unset(CMAKE_CXX_ABI_FILES)
-endif()
-
-# This should be included before the _INIT variables are
-# used to initialize the cache.  Since the rule variables
-# have if blocks on them, users can still define them here.
-# But, it should still be after the platform file so changes can
-# be made to those values.
-
-if(CMAKE_USER_MAKE_RULES_OVERRIDE)
-  # Save the full path of the file so try_compile can use it.
-  include(${CMAKE_USER_MAKE_RULES_OVERRIDE} RESULT_VARIABLE _override)
-  set(CMAKE_USER_MAKE_RULES_OVERRIDE "${_override}")
-endif()
-
-if(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX)
-  # Save the full path of the file so try_compile can use it.
-  include(${CMAKE_USER_MAKE_RULES_OVERRIDE_CXX} RESULT_VARIABLE _override)
-  set(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX "${_override}")
-endif()
-
-
-# Create a set of shared library variable specific to C++
-# For 90% of the systems, these are the same flags as the C versions
-# so if these are not set just copy the flags from the c version
-if(NOT CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS)
-  set(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS})
-endif()
-
-if(NOT CMAKE_CXX_COMPILE_OPTIONS_PIC)
-  set(CMAKE_CXX_COMPILE_OPTIONS_PIC ${CMAKE_C_COMPILE_OPTIONS_PIC})
-endif()
-
-if(NOT CMAKE_CXX_COMPILE_OPTIONS_PIE)
-  set(CMAKE_CXX_COMPILE_OPTIONS_PIE ${CMAKE_C_COMPILE_OPTIONS_PIE})
-endif()
-if(NOT CMAKE_CXX_LINK_OPTIONS_PIE)
-  set(CMAKE_CXX_LINK_OPTIONS_PIE ${CMAKE_C_LINK_OPTIONS_PIE})
-endif()
-if(NOT CMAKE_CXX_LINK_OPTIONS_NO_PIE)
-  set(CMAKE_CXX_LINK_OPTIONS_NO_PIE ${CMAKE_C_LINK_OPTIONS_NO_PIE})
-endif()
-
-if(NOT CMAKE_CXX_COMPILE_OPTIONS_DLL)
-  set(CMAKE_CXX_COMPILE_OPTIONS_DLL ${CMAKE_C_COMPILE_OPTIONS_DLL})
-endif()
-
-if(NOT CMAKE_SHARED_LIBRARY_CXX_FLAGS)
-  set(CMAKE_SHARED_LIBRARY_CXX_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
-endif()
-
-if(NOT DEFINED CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS)
-  set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS})
-endif()
-
-if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG)
-  set(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG})
-endif()
-
-if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG_SEP)
-  set(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP})
-endif()
-
-if(NOT CMAKE_SHARED_LIBRARY_RPATH_LINK_CXX_FLAG)
-  set(CMAKE_SHARED_LIBRARY_RPATH_LINK_CXX_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG})
-endif()
-
-if(NOT DEFINED CMAKE_EXE_EXPORTS_CXX_FLAG)
-  set(CMAKE_EXE_EXPORTS_CXX_FLAG ${CMAKE_EXE_EXPORTS_C_FLAG})
-endif()
-
-if(NOT DEFINED CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG)
-  set(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG ${CMAKE_SHARED_LIBRARY_SONAME_C_FLAG})
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RUNTIME_CXX_FLAG)
-  set(CMAKE_EXECUTABLE_RUNTIME_CXX_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG})
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RUNTIME_CXX_FLAG_SEP)
-  set(CMAKE_EXECUTABLE_RUNTIME_CXX_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG_SEP})
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RPATH_LINK_CXX_FLAG)
-  set(CMAKE_EXECUTABLE_RPATH_LINK_CXX_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_CXX_FLAG})
-endif()
-
-if(NOT DEFINED CMAKE_SHARED_LIBRARY_LINK_CXX_WITH_RUNTIME_PATH)
-  set(CMAKE_SHARED_LIBRARY_LINK_CXX_WITH_RUNTIME_PATH ${CMAKE_SHARED_LIBRARY_LINK_C_WITH_RUNTIME_PATH})
-endif()
-
-if(NOT CMAKE_INCLUDE_FLAG_CXX)
-  set(CMAKE_INCLUDE_FLAG_CXX ${CMAKE_INCLUDE_FLAG_C})
-endif()
-
-# for most systems a module is the same as a shared library
-# so unless the variable CMAKE_MODULE_EXISTS is set just
-# copy the values from the LIBRARY variables
-if(NOT CMAKE_MODULE_EXISTS)
-  set(CMAKE_SHARED_MODULE_CXX_FLAGS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS})
-  set(CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS})
-endif()
-
-# repeat for modules
-if(NOT CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS)
-  set(CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS ${CMAKE_SHARED_MODULE_CREATE_C_FLAGS})
-endif()
-
-if(NOT CMAKE_SHARED_MODULE_CXX_FLAGS)
-  set(CMAKE_SHARED_MODULE_CXX_FLAGS ${CMAKE_SHARED_MODULE_C_FLAGS})
-endif()
-
-# Initialize CXX link type selection flags from C versions.
-foreach(type SHARED_LIBRARY SHARED_MODULE EXE)
-  if(NOT CMAKE_${type}_LINK_STATIC_CXX_FLAGS)
-    set(CMAKE_${type}_LINK_STATIC_CXX_FLAGS
-      ${CMAKE_${type}_LINK_STATIC_C_FLAGS})
-  endif()
-  if(NOT CMAKE_${type}_LINK_DYNAMIC_CXX_FLAGS)
-    set(CMAKE_${type}_LINK_DYNAMIC_CXX_FLAGS
-      ${CMAKE_${type}_LINK_DYNAMIC_C_FLAGS})
-  endif()
-endforeach()
-
-# add the flags to the cache based
-# on the initial values computed in the platform/*.cmake files
-# use _INIT variables so that this only happens the first time
-# and you can set these flags in the cmake cache
-set(CMAKE_CXX_FLAGS_INIT "$ENV{CXXFLAGS} ${CMAKE_CXX_FLAGS_INIT}")
-
-cmake_initialize_per_config_variable(CMAKE_CXX_FLAGS "Flags used by the CXX compiler")
-
-if(CMAKE_CXX_STANDARD_LIBRARIES_INIT)
-  set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES_INIT}"
-    CACHE STRING "Libraries linked by default with all C++ applications.")
-  mark_as_advanced(CMAKE_CXX_STANDARD_LIBRARIES)
-endif()
-
-if(NOT CMAKE_CXX_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_CXX_COMPILER_LAUNCHER})
-  set(CMAKE_CXX_COMPILER_LAUNCHER "$ENV{CMAKE_CXX_COMPILER_LAUNCHER}"
-    CACHE STRING "Compiler launcher for CXX.")
-endif()
-
-include(CMakeCommonLanguageInclude)
-
-# now define the following rules:
-# CMAKE_CXX_CREATE_SHARED_LIBRARY
-# CMAKE_CXX_CREATE_SHARED_MODULE
-# CMAKE_CXX_COMPILE_OBJECT
-# CMAKE_CXX_LINK_EXECUTABLE
-
-# variables supplied by the generator at use time
-# <TARGET>
-# <TARGET_BASE> the target without the suffix
-# <OBJECTS>
-# <OBJECT>
-# <LINK_LIBRARIES>
-# <FLAGS>
-# <LINK_FLAGS>
-
-# CXX compiler information
-# <CMAKE_CXX_COMPILER>
-# <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS>
-# <CMAKE_CXX_SHARED_MODULE_CREATE_FLAGS>
-# <CMAKE_CXX_LINK_FLAGS>
-
-# Static library tools
-# <CMAKE_AR>
-# <CMAKE_RANLIB>
-
-
-# create a shared C++ library
-if(NOT CMAKE_CXX_CREATE_SHARED_LIBRARY)
-  set(CMAKE_CXX_CREATE_SHARED_LIBRARY
-      "<CMAKE_CXX_COMPILER> <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
-endif()
-
-# create a c++ shared module copy the shared library rule by default
-if(NOT CMAKE_CXX_CREATE_SHARED_MODULE)
-  set(CMAKE_CXX_CREATE_SHARED_MODULE ${CMAKE_CXX_CREATE_SHARED_LIBRARY})
-endif()
-
-
-# Create a static archive incrementally for large object file counts.
-# If CMAKE_CXX_CREATE_STATIC_LIBRARY is set it will override these.
-if(NOT DEFINED CMAKE_CXX_ARCHIVE_CREATE)
-  set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
-endif()
-if(NOT DEFINED CMAKE_CXX_ARCHIVE_APPEND)
-  set(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
-endif()
-if(NOT DEFINED CMAKE_CXX_ARCHIVE_FINISH)
-  set(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
-endif()
-
-# compile a C++ file into an object file
-if(NOT CMAKE_CXX_COMPILE_OBJECT)
-  set(CMAKE_CXX_COMPILE_OBJECT
-    "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
-endif()
-
-if(NOT CMAKE_CXX_LINK_EXECUTABLE)
-  set(CMAKE_CXX_LINK_EXECUTABLE
-    "<CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
-endif()
-
-mark_as_advanced(
-CMAKE_VERBOSE_MAKEFILE
-)
-
-set(CMAKE_CXX_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake b/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake
deleted file mode 100644
index 2dc75d6..0000000
--- a/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake
+++ /dev/null
@@ -1,36 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# Do NOT include this module directly into any of your code. It is meant as
-# a library for Check*CompilerFlag.cmake modules. It's content may change in
-# any way between releases.
-
-macro (CHECK_COMPILER_FLAG_COMMON_PATTERNS _VAR)
-  set(${_VAR}
-    FAIL_REGEX "[Uu]nrecogni[sz]ed .*option"               # GNU, NAG
-    FAIL_REGEX "switch .* is no longer supported"          # GNU
-    FAIL_REGEX "unknown .*option"                          # Clang
-    FAIL_REGEX "optimization flag .* not supported"        # Clang
-    FAIL_REGEX "unknown argument ignored"                  # Clang (cl)
-    FAIL_REGEX "ignoring unknown option"                   # MSVC, Intel
-    FAIL_REGEX "warning D9002"                             # MSVC, any lang
-    FAIL_REGEX "option.*not supported"                     # Intel
-    FAIL_REGEX "invalid argument .*option"                 # Intel
-    FAIL_REGEX "ignoring option .*argument required"       # Intel
-    FAIL_REGEX "ignoring option .*argument is of wrong type" # Intel
-    FAIL_REGEX "[Uu]nknown option"                         # HP
-    FAIL_REGEX "[Ww]arning: [Oo]ption"                     # SunPro
-    FAIL_REGEX "command option .* is not recognized"       # XL
-    FAIL_REGEX "command option .* contains an incorrect subargument" # XL
-    FAIL_REGEX "Option .* is not recognized.  Option will be ignored." # XL
-    FAIL_REGEX "not supported in this configuration. ignored"       # AIX
-    FAIL_REGEX "File with unknown suffix passed to linker" # PGI
-    FAIL_REGEX "[Uu]nknown switch"                         # PGI
-    FAIL_REGEX "WARNING: unknown flag:"                    # Open64
-    FAIL_REGEX "Incorrect command line option:"            # Borland
-    FAIL_REGEX "Warning: illegal option"                   # SunStudio 12
-    FAIL_REGEX "[Ww]arning: Invalid suboption"             # Fujitsu
-    FAIL_REGEX "An invalid option .* appears on the command line" # Cray
-  )
-endmacro ()
diff --git a/share/cmake-3.18/Modules/CMakeCompilerABI.h b/share/cmake-3.18/Modules/CMakeCompilerABI.h
deleted file mode 100644
index 45532af..0000000
--- a/share/cmake-3.18/Modules/CMakeCompilerABI.h
+++ /dev/null
@@ -1,33 +0,0 @@
-
-/* Size of a pointer-to-data in bytes.  */
-#define SIZEOF_DPTR (sizeof(void*))
-const char info_sizeof_dptr[] = {
-  /* clang-format off */
-  'I', 'N', 'F', 'O', ':', 's', 'i', 'z', 'e', 'o', 'f', '_', 'd', 'p', 't',
-  'r', '[', ('0' + ((SIZEOF_DPTR / 10) % 10)), ('0' + (SIZEOF_DPTR % 10)), ']',
-  '\0'
-  /* clang-format on */
-};
-
-/* Application Binary Interface.  */
-
-/* Check for (some) ARM ABIs.
- * See e.g. http://wiki.debian.org/ArmEabiPort for some information on this. */
-#if defined(__GNU__) && defined(__ELF__) && defined(__ARM_EABI__)
-#  define ABI_ID "ELF ARMEABI"
-#elif defined(__GNU__) && defined(__ELF__) && defined(__ARMEB__)
-#  define ABI_ID "ELF ARM"
-#elif defined(__GNU__) && defined(__ELF__) && defined(__ARMEL__)
-#  define ABI_ID "ELF ARM"
-
-#elif defined(__linux__) && defined(__ELF__) && defined(__amd64__) &&         \
-  defined(__ILP32__)
-#  define ABI_ID "ELF X32"
-
-#elif defined(__ELF__)
-#  define ABI_ID "ELF"
-#endif
-
-#if defined(ABI_ID)
-static char const info_abi[] = "INFO:abi[" ABI_ID "]";
-#endif
diff --git a/share/cmake-3.18/Modules/CMakeCompilerIdDetection.cmake b/share/cmake-3.18/Modules/CMakeCompilerIdDetection.cmake
deleted file mode 100644
index acd15df..0000000
--- a/share/cmake-3.18/Modules/CMakeCompilerIdDetection.cmake
+++ /dev/null
@@ -1,151 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-function(_readFile file)
-  include(${file})
-  get_filename_component(name ${file} NAME_WE)
-  string(REGEX REPLACE "-.*" "" CompilerId ${name})
-  set(_compiler_id_version_compute_${CompilerId} ${_compiler_id_version_compute} PARENT_SCOPE)
-  set(_compiler_id_simulate_${CompilerId} ${_compiler_id_simulate} PARENT_SCOPE)
-  set(_compiler_id_pp_test_${CompilerId} ${_compiler_id_pp_test} PARENT_SCOPE)
-endfunction()
-
-function(compiler_id_detection outvar lang)
-
-  if (NOT lang STREQUAL Fortran AND NOT lang STREQUAL CSharp)
-    file(GLOB lang_files
-      "${CMAKE_ROOT}/Modules/Compiler/*-DetermineCompiler.cmake")
-    set(nonlang CXX)
-    if (lang STREQUAL CXX)
-      set(nonlang C)
-    endif()
-
-    file(GLOB nonlang_files
-      "${CMAKE_ROOT}/Modules/Compiler/*-${nonlang}-DetermineCompiler.cmake")
-    list(REMOVE_ITEM lang_files ${nonlang_files})
-  endif()
-
-  set(files ${lang_files})
-  if (files)
-    foreach(file ${files})
-      _readFile(${file})
-    endforeach()
-
-    set(options ID_STRING VERSION_STRINGS ID_DEFINE PLATFORM_DEFAULT_COMPILER)
-    set(oneValueArgs PREFIX)
-    cmake_parse_arguments(CID "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${ARGN})
-    if (CID_UNPARSED_ARGUMENTS)
-      message(FATAL_ERROR "Unrecognized arguments: \"${CID_UNPARSED_ARGUMENTS}\"")
-    endif()
-
-    # Order is relevant here. For example, compilers which pretend to be
-    # GCC must appear before the actual GCC.
-    if (lang STREQUAL CXX)
-      list(APPEND ordered_compilers
-        Comeau
-      )
-    endif()
-    list(APPEND ordered_compilers
-      Intel
-      PathScale
-      Embarcadero
-      Borland
-      Watcom
-      OpenWatcom
-      SunPro
-      HP
-      Compaq
-      zOS
-      XLClang
-      XL
-      VisualAge
-      PGI
-      Cray
-      TI
-      Fujitsu
-      GHS
-    )
-    if (lang STREQUAL C)
-      list(APPEND ordered_compilers
-        TinyCC
-        Bruce
-      )
-    endif()
-    list(APPEND ordered_compilers
-      SCO
-      ARMCC
-      AppleClang
-      ARMClang
-      Clang
-      GNU
-      MSVC
-      ADSP
-      IAR
-    )
-    if (lang STREQUAL C)
-      list(APPEND ordered_compilers
-        SDCC
-      )
-    endif()
-
-    if(lang STREQUAL CUDA)
-      set(ordered_compilers NVIDIA Clang)
-    endif()
-
-    if(CID_ID_DEFINE)
-      foreach(Id ${ordered_compilers})
-        string(APPEND CMAKE_${lang}_COMPILER_ID_CONTENT "# define ${CID_PREFIX}COMPILER_IS_${Id} 0\n")
-      endforeach()
-      # Hard-code definitions for compilers that are no longer supported.
-      string(APPEND CMAKE_${lang}_COMPILER_ID_CONTENT "# define ${CID_PREFIX}COMPILER_IS_MIPSpro 0\n")
-    endif()
-
-    set(pp_if "#if")
-    if (CID_VERSION_STRINGS)
-      string(APPEND CMAKE_${lang}_COMPILER_ID_CONTENT "\n/* Version number components: V=Version, R=Revision, P=Patch
-   Version date components:   YYYY=Year, MM=Month,   DD=Day  */\n")
-    endif()
-
-    foreach(Id ${ordered_compilers})
-      if (NOT _compiler_id_pp_test_${Id})
-        message(FATAL_ERROR "No preprocessor test for \"${Id}\"")
-      endif()
-      set(id_content "${pp_if} ${_compiler_id_pp_test_${Id}}\n")
-      if (CID_ID_STRING)
-        set(PREFIX ${CID_PREFIX})
-        string(CONFIGURE "${_compiler_id_simulate_${Id}}" SIMULATE_BLOCK @ONLY)
-        string(APPEND id_content "# define ${CID_PREFIX}COMPILER_ID \"${Id}\"${SIMULATE_BLOCK}")
-      endif()
-      if (CID_ID_DEFINE)
-        string(APPEND id_content "# undef ${CID_PREFIX}COMPILER_IS_${Id}\n")
-        string(APPEND id_content "# define ${CID_PREFIX}COMPILER_IS_${Id} 1\n")
-      endif()
-      if (CID_VERSION_STRINGS)
-        set(PREFIX ${CID_PREFIX})
-        set(MACRO_DEC DEC)
-        set(MACRO_HEX HEX)
-        string(CONFIGURE "${_compiler_id_version_compute_${Id}}" VERSION_BLOCK @ONLY)
-        string(APPEND id_content "${VERSION_BLOCK}\n")
-      endif()
-      string(APPEND CMAKE_${lang}_COMPILER_ID_CONTENT "\n${id_content}")
-      set(pp_if "#elif")
-    endforeach()
-
-    if (CID_PLATFORM_DEFAULT_COMPILER)
-      set(platform_compiler_detection "
-/* These compilers are either not known or too old to define an
-  identification macro.  Try to identify the platform and guess that
-  it is the native compiler.  */
-#elif defined(__hpux) || defined(__hpua)
-# define ${CID_PREFIX}COMPILER_ID \"HP\"
-
-#else /* unknown compiler */
-# define ${CID_PREFIX}COMPILER_ID \"\"")
-    endif()
-
-    string(APPEND CMAKE_${lang}_COMPILER_ID_CONTENT "\n${platform_compiler_detection}\n#endif")
-  endif()
-
-  set(${outvar} ${CMAKE_${lang}_COMPILER_ID_CONTENT} PARENT_SCOPE)
-endfunction()
diff --git a/share/cmake-3.18/Modules/CMakeDependentOption.cmake b/share/cmake-3.18/Modules/CMakeDependentOption.cmake
deleted file mode 100644
index 99d5070..0000000
--- a/share/cmake-3.18/Modules/CMakeDependentOption.cmake
+++ /dev/null
@@ -1,51 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CMakeDependentOption
---------------------
-
-Macro to provide an option dependent on other options.
-
-This macro presents an option to the user only if a set of other
-conditions are true.  When the option is not presented a default value
-is used, but any value set by the user is preserved for when the
-option is presented again.  Example invocation:
-
-.. code-block:: cmake
-
-  CMAKE_DEPENDENT_OPTION(USE_FOO "Use Foo" ON
-                         "USE_BAR;NOT USE_ZOT" OFF)
-
-If USE_BAR is true and USE_ZOT is false, this provides an option
-called USE_FOO that defaults to ON.  Otherwise, it sets USE_FOO to
-OFF.  If the status of USE_BAR or USE_ZOT ever changes, any value for
-the USE_FOO option is saved so that when the option is re-enabled it
-retains its old value.  Each element in the fourth parameter is
-evaluated as an if-condition, so :ref:`Condition Syntax` can be used.
-#]=======================================================================]
-
-macro(CMAKE_DEPENDENT_OPTION option doc default depends force)
-  if(${option}_ISSET MATCHES "^${option}_ISSET$")
-    set(${option}_AVAILABLE 1)
-    foreach(d ${depends})
-      string(REGEX REPLACE " +" ";" CMAKE_DEPENDENT_OPTION_DEP "${d}")
-      if(${CMAKE_DEPENDENT_OPTION_DEP})
-      else()
-        set(${option}_AVAILABLE 0)
-      endif()
-    endforeach()
-    if(${option}_AVAILABLE)
-      option(${option} "${doc}" "${default}")
-      set(${option} "${${option}}" CACHE BOOL "${doc}" FORCE)
-    else()
-      if(${option} MATCHES "^${option}$")
-      else()
-        set(${option} "${${option}}" CACHE INTERNAL "${doc}")
-      endif()
-      set(${option} ${force})
-    endif()
-  else()
-    set(${option} "${${option}_ISSET}")
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CMakeDetermineASMCompiler.cmake b/share/cmake-3.18/Modules/CMakeDetermineASMCompiler.cmake
deleted file mode 100644
index bc8b86b..0000000
--- a/share/cmake-3.18/Modules/CMakeDetermineASMCompiler.cmake
+++ /dev/null
@@ -1,253 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# determine the compiler to use for ASM programs
-
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
-
-if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER)
-  # prefer the environment variable ASM
-  if(NOT $ENV{ASM${ASM_DIALECT}} STREQUAL "")
-    get_filename_component(CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT $ENV{ASM${ASM_DIALECT}} PROGRAM PROGRAM_ARGS CMAKE_ASM${ASM_DIALECT}_FLAGS_ENV_INIT)
-    if(CMAKE_ASM${ASM_DIALECT}_FLAGS_ENV_INIT)
-      set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARG1 "${CMAKE_ASM${ASM_DIALECT}_FLAGS_ENV_INIT}" CACHE STRING "First argument to ASM${ASM_DIALECT} compiler")
-    endif()
-    if(NOT EXISTS ${CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT})
-      message(FATAL_ERROR "Could not find compiler set in environment variable ASM${ASM_DIALECT}:\n$ENV{ASM${ASM_DIALECT}}.")
-    endif()
-  endif()
-
-  # finally list compilers to try
-  if("ASM${ASM_DIALECT}" STREQUAL "ASM") # the generic assembler support
-    if(NOT CMAKE_ASM_COMPILER_INIT)
-      if(CMAKE_C_COMPILER)
-        set(CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST ${CMAKE_C_COMPILER})
-      elseif(CMAKE_CXX_COMPILER)
-        set(CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST ${CMAKE_CXX_COMPILER})
-      else()
-        # List all default C and CXX compilers
-        set(CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST
-             ${_CMAKE_TOOLCHAIN_PREFIX}cc  ${_CMAKE_TOOLCHAIN_PREFIX}gcc cl bcc xlc
-          CC ${_CMAKE_TOOLCHAIN_PREFIX}c++ ${_CMAKE_TOOLCHAIN_PREFIX}g++ aCC cl bcc xlC)
-      endif()
-    endif()
-  else() # some specific assembler "dialect"
-    if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT  AND NOT CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST)
-      message(FATAL_ERROR "CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT or CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST must be preset !")
-    endif()
-  endif()
-
-  # Find the compiler.
-  _cmake_find_compiler(ASM${ASM_DIALECT})
-
-else()
-  _cmake_find_compiler_path(ASM${ASM_DIALECT})
-endif()
-mark_as_advanced(CMAKE_ASM${ASM_DIALECT}_COMPILER)
-
-if (NOT _CMAKE_TOOLCHAIN_LOCATION)
-  get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_ASM${ASM_DIALECT}_COMPILER}" PATH)
-endif ()
-
-
-if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER_ID)
-
-  # Table of per-vendor compiler id flags with expected output.
-  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS GNU )
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_GNU "--version")
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_GNU "(GNU assembler)|(GCC)|(Free Software Foundation)")
-
-  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS Clang )
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_Clang "--version")
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_Clang "(clang version)")
-
-  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS AppleClang )
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_AppleClang "--version")
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_AppleClang "(Apple LLVM version)")
-
-  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS ARMClang )
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_ARMClang "--version")
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_ARMClang "armclang")
-
-  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS HP )
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_HP "-V")
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_HP "HP C")
-
-  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS Intel )
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_Intel "--version")
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_Intel "(ICC)")
-
-  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS SunPro )
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_SunPro "-V")
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_SunPro "Sun C")
-
-  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS XL )
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_XL "-qversion")
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_XL "XL C")
-
-  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS MSVC )
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_MSVC "-?")
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_MSVC "Microsoft")
-
-  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS TI )
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_TI "-h")
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_TI "Texas Instruments")
-
-  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS IAR)
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_IAR )
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_IAR "IAR Assembler")
-
-  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS ARMCC)
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_ARMCC )
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_ARMCC "(ARM Compiler)|(ARM Assembler)")
-
-  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS NASM)
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_NASM "-v")
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_NASM "(NASM version)")
-
-  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS YASM)
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_YASM "--version")
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_YASM "(yasm)")
-
-  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS ADSP)
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_ADSP "-version")
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_ADSP "Analog Devices")
-
-  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS QCC)
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_QCC "-V")
-  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_QCC "gcc_nto")
-
-  include(CMakeDetermineCompilerId)
-  set(userflags)
-  CMAKE_DETERMINE_COMPILER_ID_VENDOR(ASM${ASM_DIALECT} "${userflags}")
-  if("x${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}" STREQUAL "xIAR")
-    # primary necessary to detect architecture, so the right archiver and linker can be picked
-    # eg. "IAR Assembler V8.10.1.12857/W32 for ARM" or "IAR Assembler V4.11.1.4666 for Renesas RX"
-    # Cut out identification first, newline handling is a pain
-    string(REGEX MATCH "IAR Assembler[^\r\n]*" _compileid "${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_OUTPUT}")
-    if("${_compileid}" MATCHES "V([0-9]+\\.[0-9]+\\.[0-9]+)")
-      set(CMAKE_ASM${ASM_DIALECT}_COMPILER_VERSION ${CMAKE_MATCH_1})
-    endif()
-    string(REGEX MATCHALL "([A-Za-z0-9-]+)" _all_compileid_matches "${_compileid}")
-    if(_all_compileid_matches)
-      list(GET _all_compileid_matches "-1" CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID)
-    endif()
-  endif()
-
-  _cmake_find_compiler_sysroot(ASM${ASM_DIALECT})
-
-  unset(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_OUTPUT)
-  unset(_all_compileid_matches)
-  unset(_compileid)
-endif()
-
-if(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID)
-  if(CMAKE_ASM${ASM_DIALECT}_COMPILER_VERSION)
-    set(_version " ${CMAKE_ASM${ASM_DIALECT}_COMPILER_VERSION}")
-  else()
-    set(_version "")
-  endif()
-  if(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID AND "x${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}" STREQUAL "xIAR")
-    set(_archid " ${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}")
-  else()
-    set(_archid "")
-  endif()
-  message(STATUS "The ASM${ASM_DIALECT} compiler identification is ${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}${_archid}${_version}")
-  unset(_archid)
-  unset(_version)
-else()
-  message(STATUS "The ASM${ASM_DIALECT} compiler identification is unknown")
-endif()
-
-# If we have a gas/as cross compiler, they have usually some prefix, like
-# e.g. powerpc-linux-gas, arm-elf-gas or i586-mingw32msvc-gas , optionally
-# with a 3-component version number at the end
-# The other tools of the toolchain usually have the same prefix
-# NAME_WE cannot be used since then this test will fail for names like
-# "arm-unknown-nto-qnx6.3.0-gas.exe", where BASENAME would be
-# "arm-unknown-nto-qnx6" instead of the correct "arm-unknown-nto-qnx6.3.0-"
-if (NOT _CMAKE_TOOLCHAIN_PREFIX)
-  get_filename_component(COMPILER_BASENAME "${CMAKE_ASM${ASM_DIALECT}_COMPILER}" NAME)
-  if (COMPILER_BASENAME MATCHES "^(.+-)g?as(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
-    set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
-  endif ()
-endif ()
-
-# Now try the C compiler regexp:
-if (NOT _CMAKE_TOOLCHAIN_PREFIX)
-  if (COMPILER_BASENAME MATCHES "^(.+-)g?cc(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
-    set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
-  endif ()
-endif ()
-
-# Finally try the CXX compiler regexp:
-if (NOT _CMAKE_TOOLCHAIN_PREFIX)
-  if (COMPILER_BASENAME MATCHES "^(.+-)[gc]\\+\\+(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
-    set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
-  endif ()
-endif ()
-
-
-set(_CMAKE_PROCESSING_LANGUAGE "ASM")
-include(CMakeFindBinUtils)
-include(Compiler/${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}-FindBinUtils OPTIONAL)
-unset(_CMAKE_PROCESSING_LANGUAGE)
-
-set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ENV_VAR "ASM${ASM_DIALECT}")
-
-if(CMAKE_ASM${ASM_DIALECT}_COMPILER)
-  message(STATUS "Found assembler: ${CMAKE_ASM${ASM_DIALECT}_COMPILER}")
-else()
-  message(STATUS "Didn't find assembler")
-endif()
-
-foreach(_var
-    COMPILER
-    COMPILER_ID
-    COMPILER_ARG1
-    COMPILER_ENV_VAR
-    COMPILER_AR
-    COMPILER_RANLIB
-    COMPILER_VERSION
-    )
-  set(_CMAKE_ASM_${_var} "${CMAKE_ASM${ASM_DIALECT}_${_var}}")
-endforeach()
-
-if(CMAKE_ASM${ASM_DIALECT}_COMPILER_SYSROOT)
-  string(CONCAT _SET_CMAKE_ASM_COMPILER_SYSROOT
-    "set(CMAKE_ASM${ASM_DIALECT}_COMPILER_SYSROOT \"${CMAKE_ASM${ASM_DIALECT}_COMPILER_SYSROOT}\")\n"
-    "set(CMAKE_COMPILER_SYSROOT \"${CMAKE_ASM${ASM_DIALECT}_COMPILER_SYSROOT}\")")
-else()
-  set(_SET_CMAKE_ASM_COMPILER_SYSROOT "")
-endif()
-
-if(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_MATCH)
-  set(_SET_CMAKE_ASM_COMPILER_ID_VENDOR_MATCH
-    "set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_MATCH [==[${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_MATCH}]==])")
-else()
-  set(_SET_CMAKE_ASM_COMPILER_ID_VENDOR_MATCH "")
-endif()
-
-if(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID)
-  set(_SET_CMAKE_ASM_COMPILER_ARCHITECTURE_ID
-    "set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID ${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID})")
-else()
-  set(_SET_CMAKE_ASM_COMPILER_ARCHITECTURE_ID "")
-endif()
-
-# configure variables set in this file for fast reload later on
-configure_file(${CMAKE_ROOT}/Modules/CMakeASMCompiler.cmake.in
-  ${CMAKE_PLATFORM_INFO_DIR}/CMakeASM${ASM_DIALECT}Compiler.cmake @ONLY)
-
-foreach(_var
-    COMPILER
-    COMPILER_ID
-    COMPILER_ARG1
-    COMPILER_ENV_VAR
-    COMPILER_AR
-    COMPILER_RANLIB
-    COMPILER_VERSION
-    )
-  unset(_CMAKE_ASM_${_var})
-endforeach()
diff --git a/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake b/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake
deleted file mode 100644
index 86683d1..0000000
--- a/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake
+++ /dev/null
@@ -1,226 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# determine the compiler to use for C programs
-# NOTE, a generator may set CMAKE_C_COMPILER before
-# loading this file to force a compiler.
-# use environment variable CC first if defined by user, next use
-# the cmake variable CMAKE_GENERATOR_CC which can be defined by a generator
-# as a default compiler
-# If the internal cmake variable _CMAKE_TOOLCHAIN_PREFIX is set, this is used
-# as prefix for the tools (e.g. arm-elf-gcc, arm-elf-ar etc.). This works
-# currently with the GNU crosscompilers.
-#
-# Sets the following variables:
-#   CMAKE_C_COMPILER
-#   CMAKE_AR
-#   CMAKE_RANLIB
-#   CMAKE_COMPILER_IS_GNUCC
-#
-# If not already set before, it also sets
-#   _CMAKE_TOOLCHAIN_PREFIX
-
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
-
-# Load system-specific compiler preferences for this language.
-include(Platform/${CMAKE_SYSTEM_NAME}-Determine-C OPTIONAL)
-include(Platform/${CMAKE_SYSTEM_NAME}-C OPTIONAL)
-if(NOT CMAKE_C_COMPILER_NAMES)
-  set(CMAKE_C_COMPILER_NAMES cc)
-endif()
-
-if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
-elseif("${CMAKE_GENERATOR}" MATCHES "Green Hills MULTI")
-elseif("${CMAKE_GENERATOR}" MATCHES "Xcode")
-  set(CMAKE_C_COMPILER_XCODE_TYPE sourcecode.c.c)
-  _cmake_find_compiler_path(C)
-else()
-  if(NOT CMAKE_C_COMPILER)
-    set(CMAKE_C_COMPILER_INIT NOTFOUND)
-
-    # prefer the environment variable CC
-    if(NOT $ENV{CC} STREQUAL "")
-      get_filename_component(CMAKE_C_COMPILER_INIT $ENV{CC} PROGRAM PROGRAM_ARGS CMAKE_C_FLAGS_ENV_INIT)
-      if(CMAKE_C_FLAGS_ENV_INIT)
-        set(CMAKE_C_COMPILER_ARG1 "${CMAKE_C_FLAGS_ENV_INIT}" CACHE STRING "First argument to C compiler")
-      endif()
-      if(NOT EXISTS ${CMAKE_C_COMPILER_INIT})
-        message(FATAL_ERROR "Could not find compiler set in environment variable CC:\n$ENV{CC}.")
-      endif()
-    endif()
-
-    # next try prefer the compiler specified by the generator
-    if(CMAKE_GENERATOR_CC)
-      if(NOT CMAKE_C_COMPILER_INIT)
-        set(CMAKE_C_COMPILER_INIT ${CMAKE_GENERATOR_CC})
-      endif()
-    endif()
-
-    # finally list compilers to try
-    if(NOT CMAKE_C_COMPILER_INIT)
-      set(CMAKE_C_COMPILER_LIST ${_CMAKE_TOOLCHAIN_PREFIX}cc ${_CMAKE_TOOLCHAIN_PREFIX}gcc cl bcc xlc clang)
-    endif()
-
-    _cmake_find_compiler(C)
-
-  else()
-    _cmake_find_compiler_path(C)
-  endif()
-  mark_as_advanced(CMAKE_C_COMPILER)
-
-  # Each entry in this list is a set of extra flags to try
-  # adding to the compile line to see if it helps produce
-  # a valid identification file.
-  set(CMAKE_C_COMPILER_ID_TEST_FLAGS_FIRST)
-  set(CMAKE_C_COMPILER_ID_TEST_FLAGS
-    # Try compiling to an object file only.
-    "-c"
-
-    # Try enabling ANSI mode on HP.
-    "-Aa"
-
-    # Try compiling K&R-compatible code (needed by Bruce C Compiler).
-    "-D__CLASSIC_C__"
-
-    # ARMClang need target options
-    "--target=arm-arm-none-eabi -mcpu=cortex-m3"
-    )
-endif()
-
-# Build a small source file to identify the compiler.
-if(NOT CMAKE_C_COMPILER_ID_RUN)
-  set(CMAKE_C_COMPILER_ID_RUN 1)
-
-  # Try to identify the compiler.
-  set(CMAKE_C_COMPILER_ID)
-  set(CMAKE_C_PLATFORM_ID)
-  file(READ ${CMAKE_ROOT}/Modules/CMakePlatformId.h.in
-    CMAKE_C_COMPILER_ID_PLATFORM_CONTENT)
-
-  # The IAR compiler produces weird output.
-  # See https://gitlab.kitware.com/cmake/cmake/-/issues/10176#note_153591
-  list(APPEND CMAKE_C_COMPILER_ID_VENDORS IAR)
-  set(CMAKE_C_COMPILER_ID_VENDOR_FLAGS_IAR )
-  set(CMAKE_C_COMPILER_ID_VENDOR_REGEX_IAR "IAR .+ Compiler")
-
-  # Match the link line from xcodebuild output of the form
-  #  Ld ...
-  #      ...
-  #      /path/to/cc ...CompilerIdC/...
-  # to extract the compiler front-end for the language.
-  set(CMAKE_C_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdC/(\\./)?(CompilerIdC.(framework|xctest)/)?CompilerIdC[ \t\n\\\"]")
-  set(CMAKE_C_COMPILER_ID_TOOL_MATCH_INDEX 2)
-
-  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
-  CMAKE_DETERMINE_COMPILER_ID(C CFLAGS CMakeCCompilerId.c)
-
-  _cmake_find_compiler_sysroot(C)
-
-  # Set old compiler and platform id variables.
-  if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
-    set(CMAKE_COMPILER_IS_GNUCC 1)
-  endif()
-  if(CMAKE_C_PLATFORM_ID MATCHES "MinGW")
-    set(CMAKE_COMPILER_IS_MINGW 1)
-  elseif(CMAKE_C_PLATFORM_ID MATCHES "Cygwin")
-    set(CMAKE_COMPILER_IS_CYGWIN 1)
-  endif()
-else()
-  if(NOT DEFINED CMAKE_C_COMPILER_FRONTEND_VARIANT)
-    # Some toolchain files set our internal CMAKE_C_COMPILER_ID_RUN
-    # variable but are not aware of CMAKE_C_COMPILER_FRONTEND_VARIANT.
-    # They pre-date our support for the GNU-like variant targeting the
-    # MSVC ABI so we do not consider that here.
-    if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
-      if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
-        set(CMAKE_C_COMPILER_FRONTEND_VARIANT "MSVC")
-      else()
-        set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
-      endif()
-    else()
-      set(CMAKE_C_COMPILER_FRONTEND_VARIANT "")
-    endif()
-  endif()
-endif()
-
-if (NOT _CMAKE_TOOLCHAIN_LOCATION)
-  get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_C_COMPILER}" PATH)
-endif ()
-
-# If we have a gcc cross compiler, they have usually some prefix, like
-# e.g. powerpc-linux-gcc, arm-elf-gcc or i586-mingw32msvc-gcc, optionally
-# with a 3-component version number at the end (e.g. arm-eabi-gcc-4.5.2).
-# The other tools of the toolchain usually have the same prefix
-# NAME_WE cannot be used since then this test will fail for names like
-# "arm-unknown-nto-qnx6.3.0-gcc.exe", where BASENAME would be
-# "arm-unknown-nto-qnx6" instead of the correct "arm-unknown-nto-qnx6.3.0-"
-if (NOT _CMAKE_TOOLCHAIN_PREFIX)
-
-  if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang|QCC")
-    get_filename_component(COMPILER_BASENAME "${CMAKE_C_COMPILER}" NAME)
-    if (COMPILER_BASENAME MATCHES "^(.+-)(clang|g?cc)(-[0-9]+(\\.[0-9]+)*)?(-[^.]+)?(\\.exe)?$")
-      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
-      set(_CMAKE_COMPILER_SUFFIX ${CMAKE_MATCH_5})
-    elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
-      if(CMAKE_C_COMPILER_TARGET)
-        set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_C_COMPILER_TARGET}-)
-      endif()
-    elseif(COMPILER_BASENAME MATCHES "qcc(\\.exe)?$")
-      if(CMAKE_C_COMPILER_TARGET MATCHES "gcc_nto([a-z0-9]+_[0-9]+|[^_le]+)(le)?")
-        set(_CMAKE_TOOLCHAIN_PREFIX nto${CMAKE_MATCH_1}-)
-      endif()
-    endif ()
-
-    # if "llvm-" is part of the prefix, remove it, since llvm doesn't have its own binutils
-    # but uses the regular ar, objcopy, etc. (instead of llvm-objcopy etc.)
-    if ("${_CMAKE_TOOLCHAIN_PREFIX}" MATCHES "(.+-)?llvm-$")
-      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
-    endif ()
-  elseif(CMAKE_C_COMPILER_ID MATCHES "TI")
-    # TI compilers are named e.g. cl6x, cl470 or armcl.exe
-    get_filename_component(COMPILER_BASENAME "${CMAKE_C_COMPILER}" NAME)
-    if (COMPILER_BASENAME MATCHES "^(.+)?cl([^.]+)?(\\.exe)?$")
-      set(_CMAKE_TOOLCHAIN_PREFIX "${CMAKE_MATCH_1}")
-      set(_CMAKE_TOOLCHAIN_SUFFIX "${CMAKE_MATCH_2}")
-    endif ()
-  endif()
-
-endif ()
-
-set(_CMAKE_PROCESSING_LANGUAGE "C")
-include(CMakeFindBinUtils)
-include(Compiler/${CMAKE_C_COMPILER_ID}-FindBinUtils OPTIONAL)
-unset(_CMAKE_PROCESSING_LANGUAGE)
-
-if(CMAKE_C_COMPILER_SYSROOT)
-  string(CONCAT _SET_CMAKE_C_COMPILER_SYSROOT
-    "set(CMAKE_C_COMPILER_SYSROOT \"${CMAKE_C_COMPILER_SYSROOT}\")\n"
-    "set(CMAKE_COMPILER_SYSROOT \"${CMAKE_C_COMPILER_SYSROOT}\")")
-else()
-  set(_SET_CMAKE_C_COMPILER_SYSROOT "")
-endif()
-
-if(CMAKE_C_COMPILER_ARCHITECTURE_ID)
-  set(_SET_CMAKE_C_COMPILER_ARCHITECTURE_ID
-    "set(CMAKE_C_COMPILER_ARCHITECTURE_ID ${CMAKE_C_COMPILER_ARCHITECTURE_ID})")
-else()
-  set(_SET_CMAKE_C_COMPILER_ARCHITECTURE_ID "")
-endif()
-
-if(MSVC_C_ARCHITECTURE_ID)
-  set(SET_MSVC_C_ARCHITECTURE_ID
-    "set(MSVC_C_ARCHITECTURE_ID ${MSVC_C_ARCHITECTURE_ID})")
-endif()
-
-if(CMAKE_C_XCODE_ARCHS)
-  set(SET_CMAKE_XCODE_ARCHS
-    "set(CMAKE_XCODE_ARCHS \"${CMAKE_C_XCODE_ARCHS}\")")
-endif()
-
-# configure variables set in this file for fast reload later on
-configure_file(${CMAKE_ROOT}/Modules/CMakeCCompiler.cmake.in
-  ${CMAKE_PLATFORM_INFO_DIR}/CMakeCCompiler.cmake
-  @ONLY
-  )
-set(CMAKE_C_COMPILER_ENV_VAR "CC")
diff --git a/share/cmake-3.18/Modules/CMakeDetermineCUDACompiler.cmake b/share/cmake-3.18/Modules/CMakeDetermineCUDACompiler.cmake
deleted file mode 100644
index fa497cd..0000000
--- a/share/cmake-3.18/Modules/CMakeDetermineCUDACompiler.cmake
+++ /dev/null
@@ -1,575 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
-include(${CMAKE_ROOT}/Modules/CMakeParseImplicitLinkInfo.cmake)
-
-if( NOT ( ("${CMAKE_GENERATOR}" MATCHES "Make") OR
-          ("${CMAKE_GENERATOR}" MATCHES "Ninja") OR
-          ("${CMAKE_GENERATOR}" MATCHES "Visual Studio (1|[9][0-9])") ) )
-  message(FATAL_ERROR "CUDA language not currently supported by \"${CMAKE_GENERATOR}\" generator")
-endif()
-
-if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
-else()
-  if(NOT CMAKE_CUDA_COMPILER)
-    set(CMAKE_CUDA_COMPILER_INIT NOTFOUND)
-
-      # prefer the environment variable CUDACXX
-      if(NOT $ENV{CUDACXX} STREQUAL "")
-        get_filename_component(CMAKE_CUDA_COMPILER_INIT $ENV{CUDACXX} PROGRAM PROGRAM_ARGS CMAKE_CUDA_FLAGS_ENV_INIT)
-        if(CMAKE_CUDA_FLAGS_ENV_INIT)
-          set(CMAKE_CUDA_COMPILER_ARG1 "${CMAKE_CUDA_FLAGS_ENV_INIT}" CACHE STRING "First argument to CXX compiler")
-        endif()
-        if(NOT EXISTS ${CMAKE_CUDA_COMPILER_INIT})
-          message(FATAL_ERROR "Could not find compiler set in environment variable CUDACXX:\n$ENV{CUDACXX}.\n${CMAKE_CUDA_COMPILER_INIT}")
-        endif()
-      endif()
-
-    # finally list compilers to try
-    if(NOT CMAKE_CUDA_COMPILER_INIT)
-      set(CMAKE_CUDA_COMPILER_LIST nvcc)
-    endif()
-
-    _cmake_find_compiler(CUDA)
-  else()
-    _cmake_find_compiler_path(CUDA)
-  endif()
-
-  mark_as_advanced(CMAKE_CUDA_COMPILER)
-endif()
-
-#Allow the user to specify a host compiler
-if(NOT $ENV{CUDAHOSTCXX} STREQUAL "")
-  get_filename_component(CMAKE_CUDA_HOST_COMPILER $ENV{CUDAHOSTCXX} PROGRAM)
-  if(NOT EXISTS ${CMAKE_CUDA_HOST_COMPILER})
-    message(FATAL_ERROR "Could not find compiler set in environment variable CUDAHOSTCXX:\n$ENV{CUDAHOSTCXX}.\n${CMAKE_CUDA_HOST_COMPILER}")
-  endif()
-endif()
-
-# Build a small source file to identify the compiler.
-if(NOT CMAKE_CUDA_COMPILER_ID_RUN)
-  set(CMAKE_CUDA_COMPILER_ID_RUN 1)
-
-  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
-
-  if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
-    # We will not know CMAKE_CUDA_COMPILER until the main compiler id step
-    # below extracts it, but we do know that the compiler id will be NVIDIA.
-    set(CMAKE_CUDA_COMPILER_ID "NVIDIA")
-  else()
-    # We determine the vendor to help with find the toolkit and use the right flags for detection right away.
-    # The main compiler identification is still needed below to extract other information.
-    list(APPEND CMAKE_CUDA_COMPILER_ID_VENDORS NVIDIA Clang)
-    set(CMAKE_CUDA_COMPILER_ID_VENDOR_REGEX_NVIDIA "nvcc: NVIDIA \\(R\\) Cuda compiler driver")
-    set(CMAKE_CUDA_COMPILER_ID_VENDOR_REGEX_Clang "(clang version)")
-    CMAKE_DETERMINE_COMPILER_ID_VENDOR(CUDA "--version")
-
-    # Find the CUDA toolkit. We store the CMAKE_CUDA_COMPILER_TOOLKIT_ROOT and CMAKE_CUDA_COMPILER_LIBRARY_ROOT
-    # in CMakeCUDACompiler.cmake, so FindCUDAToolkit can avoid searching on future runs and the toolkit stays the same.
-    # This is very similar to FindCUDAToolkit, but somewhat simplified since we can issue fatal errors
-    # if we fail to find things we need and we don't need to account for searching the libraries.
-
-    # For NVCC we can easily deduce the SDK binary directory from the compiler path.
-    if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
-      set(_CUDA_NVCC_EXECUTABLE "${CMAKE_CUDA_COMPILER}")
-    else()
-      # Search using CUDAToolkit_ROOT and then CUDA_PATH for equivalence with FindCUDAToolkit.
-      # In FindCUDAToolkit CUDAToolkit_ROOT is searched automatically due to being in a find_package().
-      # First we search candidate non-default paths to give them priority.
-      find_program(_CUDA_NVCC_EXECUTABLE
-        NAMES nvcc nvcc.exe
-        PATHS ${CUDAToolkit_ROOT}
-        ENV CUDAToolkit_ROOT
-        ENV CUDA_PATH
-        PATH_SUFFIXES bin
-        NO_DEFAULT_PATH
-      )
-
-      # If we didn't find NVCC, then try the default paths.
-      find_program(_CUDA_NVCC_EXECUTABLE
-        NAMES nvcc nvcc.exe
-        PATH_SUFFIXES bin
-      )
-
-      # If the user specified CUDAToolkit_ROOT but nvcc could not be found, this is an error.
-      if(NOT _CUDA_NVCC_EXECUTABLE AND (DEFINED CUDAToolkit_ROOT OR DEFINED ENV{CUDAToolkit_ROOT}))
-        set(fail_base "Could not find nvcc executable in path specified by")
-
-        if(DEFINED CUDAToolkit_ROOT)
-          message(FATAL_ERROR "${fail_base} CUDAToolkit_ROOT=${CUDAToolkit_ROOT}")
-        elseif(DEFINED ENV{CUDAToolkit_ROOT})
-          message(FATAL_ERROR "${fail_base} environment variable CUDAToolkit_ROOT=$ENV{CUDAToolkit_ROOT}")
-        endif()
-      endif()
-
-      # CUDAToolkit_ROOT cmake/env variable not specified, try platform defaults.
-      #
-      # - Linux: /usr/local/cuda-X.Y
-      # - macOS: /Developer/NVIDIA/CUDA-X.Y
-      # - Windows: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y
-      #
-      # We will also search the default symlink location /usr/local/cuda first since
-      # if CUDAToolkit_ROOT is not specified, it is assumed that the symlinked
-      # directory is the desired location.
-      if(NOT _CUDA_NVCC_EXECUTABLE)
-        if(UNIX)
-          if(NOT APPLE)
-            set(platform_base "/usr/local/cuda-")
-          else()
-            set(platform_base "/Developer/NVIDIA/CUDA-")
-          endif()
-        else()
-          set(platform_base "C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v")
-        endif()
-
-        # Build out a descending list of possible cuda installations, e.g.
-        file(GLOB possible_paths "${platform_base}*")
-        # Iterate the glob results and create a descending list.
-        set(versions)
-        foreach(p ${possible_paths})
-          # Extract version number from end of string
-          string(REGEX MATCH "[0-9][0-9]?\\.[0-9]$" p_version ${p})
-          if(IS_DIRECTORY ${p} AND p_version)
-            list(APPEND versions ${p_version})
-          endif()
-        endforeach()
-
-        # Sort numerically in descending order, so we try the newest versions first.
-        list(SORT versions COMPARE NATURAL ORDER DESCENDING)
-
-        # With a descending list of versions, populate possible paths to search.
-        set(search_paths)
-        foreach(v ${versions})
-          list(APPEND search_paths "${platform_base}${v}")
-        endforeach()
-
-        # Force the global default /usr/local/cuda to the front on Unix.
-        if(UNIX)
-          list(INSERT search_paths 0 "/usr/local/cuda")
-        endif()
-
-        # Now search for nvcc again using the platform default search paths.
-        find_program(_CUDA_NVCC_EXECUTABLE
-          NAMES nvcc nvcc.exe
-          PATHS ${search_paths}
-          PATH_SUFFIXES bin
-        )
-
-        # We are done with these variables now, cleanup.
-        unset(platform_base)
-        unset(possible_paths)
-        unset(versions)
-        unset(search_paths)
-
-        if(NOT _CUDA_NVCC_EXECUTABLE)
-          message(FATAL_ERROR "Could not find nvcc, please set CUDAToolkit_ROOT.")
-        endif()
-      endif()
-    endif()
-
-    get_filename_component(CMAKE_CUDA_COMPILER_TOOLKIT_ROOT "${_CUDA_NVCC_EXECUTABLE}" DIRECTORY)
-    get_filename_component(CMAKE_CUDA_COMPILER_TOOLKIT_ROOT "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}" DIRECTORY)
-
-    # CMAKE_CUDA_COMPILER_LIBRARY_ROOT contains the device library and version file.
-    # In a non-scattered installation this is equivalent to CMAKE_CUDA_COMPILER_TOOLKIT_ROOT.
-    # We first check for a non-scattered installation to prefer it over a scattered installation.
-    if(EXISTS "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}/version.txt")
-      set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}")
-    elseif(CMAKE_SYSROOT_LINK AND EXISTS "${CMAKE_SYSROOT_LINK}/usr/lib/cuda/version.txt")
-      set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT "${CMAKE_SYSROOT_LINK}/usr/lib/cuda")
-    elseif(EXISTS "${CMAKE_SYSROOT}/usr/lib/cuda/version.txt")
-      set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT "${CMAKE_SYSROOT}/usr/lib/cuda")
-    endif()
-  endif()
-
-  set(CMAKE_CUDA_COMPILER_ID_FLAGS_ALWAYS "-v")
-
-  if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
-    set(nvcc_test_flags "--keep --keep-dir tmp")
-    if(CMAKE_CUDA_HOST_COMPILER)
-      string(APPEND nvcc_test_flags " -ccbin=\"${CMAKE_CUDA_HOST_COMPILER}\"")
-    endif()
-  elseif(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang")
-    if(WIN32)
-      message(FATAL_ERROR "Clang with CUDA is not yet supported on Windows. See CMake issue #20776.")
-    endif()
-
-    set(clang_test_flags "--cuda-path=\"${CMAKE_CUDA_COMPILER_LIBRARY_ROOT}\"")
-    if(CMAKE_CROSSCOMPILING)
-      # Need to pass the host target and include directories if we're crosscompiling.
-      string(APPEND clang_test_flags " --sysroot=\"${CMAKE_SYSROOT}\" --target=${CMAKE_CUDA_COMPILER_TARGET}")
-    endif()
-  endif()
-
-  # First try with the user-specified architectures.
-  if(CMAKE_CUDA_ARCHITECTURES)
-    set(clang_archs "${clang_test_flags}")
-    set(nvcc_archs "${nvcc_test_flags}")
-
-    foreach(arch ${CMAKE_CUDA_ARCHITECTURES})
-      # Strip specifiers as PTX vs binary doesn't matter.
-      string(REGEX MATCH "[0-9]+" arch_name "${arch}")
-      string(APPEND clang_archs " --cuda-gpu-arch=sm_${arch_name}")
-      string(APPEND nvcc_archs " -gencode=arch=compute_${arch_name},code=sm_${arch_name}")
-      list(APPEND tested_architectures "${arch_name}")
-    endforeach()
-
-    list(APPEND CMAKE_CUDA_COMPILER_ID_TEST_FLAGS_FIRST "${clang_archs}")
-    list(APPEND CMAKE_CUDA_COMPILER_ID_TEST_FLAGS_FIRST "${nvcc_archs}")
-  endif()
-
-  # Fallback default NVCC flags.
-  list(APPEND CMAKE_CUDA_COMPILER_ID_TEST_FLAGS_FIRST ${nvcc_test_flags})
-
-  # Clang doesn't automatically select an architecture supported by the SDK.
-  # Try in reverse order of deprecation with the most recent at front (i.e. the most likely to work for new setups).
-  foreach(arch "20" "30" "52")
-    list(APPEND CMAKE_CUDA_COMPILER_ID_TEST_FLAGS_FIRST "${clang_test_flags} --cuda-gpu-arch=sm_${arch}")
-  endforeach()
-
-  # Finally also try the default.
-  list(APPEND CMAKE_CUDA_COMPILER_ID_TEST_FLAGS_FIRST "${clang_test_flags}")
-
-  # We perform compiler identification for a second time to extract implicit linking info and host compiler for NVCC.
-  # We also use it to verify that CMAKE_CUDA_ARCHITECTURES and additionaly on Clang that CUDA toolkit path works.
-  # The latter could be done during compiler testing in the future to avoid doing this for Clang.
-  # We need to unset the compiler ID otherwise CMAKE_DETERMINE_COMPILER_ID() doesn't work.
-  set(CMAKE_CUDA_COMPILER_ID)
-  set(CMAKE_CUDA_PLATFORM_ID)
-  file(READ ${CMAKE_ROOT}/Modules/CMakePlatformId.h.in
-    CMAKE_CUDA_COMPILER_ID_PLATFORM_CONTENT)
-
-  CMAKE_DETERMINE_COMPILER_ID(CUDA CUDAFLAGS CMakeCUDACompilerId.cu)
-
-  if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
-    # Now that we have the path to nvcc, we can compute the toolkit root.
-    get_filename_component(CMAKE_CUDA_COMPILER_TOOLKIT_ROOT "${CMAKE_CUDA_COMPILER}" DIRECTORY)
-    get_filename_component(CMAKE_CUDA_COMPILER_TOOLKIT_ROOT "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}" DIRECTORY)
-    set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}")
-  endif()
-
-  _cmake_find_compiler_sysroot(CUDA)
-endif()
-
-set(_CMAKE_PROCESSING_LANGUAGE "CUDA")
-include(CMakeFindBinUtils)
-include(Compiler/${CMAKE_CUDA_COMPILER_ID}-FindBinUtils OPTIONAL)
-unset(_CMAKE_PROCESSING_LANGUAGE)
-
-if(MSVC_CUDA_ARCHITECTURE_ID)
-  set(SET_MSVC_CUDA_ARCHITECTURE_ID
-    "set(MSVC_CUDA_ARCHITECTURE_ID ${MSVC_CUDA_ARCHITECTURE_ID})")
-endif()
-
-if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
-  set(CMAKE_CUDA_HOST_LINK_LAUNCHER "${CMAKE_LINKER}")
-  set(CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES "")
-  set(CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES "")
-  set(CMAKE_CUDA_HOST_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
-
-  # We do not currently detect CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES but we
-  # do need to detect CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT from the compiler by
-  # looking at which cudart library exists in the implicit link libraries passed
-  # to the host linker.
-  if(CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT MATCHES "link\\.exe [^\n]*cudart_static\\.lib")
-    set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "STATIC")
-  elseif(CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT MATCHES "link\\.exe [^\n]*cudart\\.lib")
-    set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "SHARED")
-  else()
-    set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "NONE")
-  endif()
-  set(_SET_CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT
-    "set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT \"${CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT}\")")
-elseif(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang")
-  if(NOT CMAKE_CUDA_ARCHITECTURES)
-    # Find the architecture that we successfully compiled using and set it as the default.
-    string(REGEX MATCH "-target-cpu sm_([0-9]+)" dont_care "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
-    set(detected_architecture "${CMAKE_MATCH_1}")
-  else()
-    string(REGEX MATCHALL "-target-cpu sm_([0-9]+)" target_cpus "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
-
-    foreach(cpu ${target_cpus})
-      string(REGEX MATCH "-target-cpu sm_([0-9]+)" dont_care "${cpu}")
-      list(APPEND architectures "${CMAKE_MATCH_1}")
-    endforeach()
-  endif()
-
-  # Find target directory. Account for crosscompiling.
-  if(CMAKE_CROSSCOMPILING)
-    if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a")
-      # Support for NVPACK
-      set(_CUDA_TARGET_NAME "armv7-linux-androideabi")
-    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
-      set(_CUDA_TARGET_NAME "armv7-linux-gnueabihf")
-    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
-      if(ANDROID_ARCH_NAME STREQUAL "arm64")
-        set(_CUDA_TARGET_NAME "aarch64-linux-androideabi")
-      else()
-        set(_CUDA_TARGET_NAME "aarch64-linux")
-      endif()
-    elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
-      set(_CUDA_TARGET_NAME "x86_64-linux")
-    endif()
-
-    if(EXISTS "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}/targets/${_CUDA_TARGET_NAME}")
-      set(_CUDA_TARGET_DIR "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}/targets/${_CUDA_TARGET_NAME}")
-    endif()
-  else()
-    set(_CUDA_TARGET_DIR "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}")
-  endif()
-
-  # We can't use find_library() yet at this point, so try a few guesses.
-  if(EXISTS "${_CUDA_TARGET_DIR}/lib64")
-    set(_CUDA_LIBRARY_DIR "${_CUDA_TARGET_DIR}/lib64")
-  elseif(EXISTS "${_CUDA_TARGET_DIR}/lib/x64")
-    set(_CUDA_LIBRARY_DIR "${_CUDA_TARGET_DIR}/lib/x64")
-  elseif(EXISTS "${_CUDA_TARGET_DIR}/lib")
-    set(_CUDA_LIBRARY_DIR "${_CUDA_TARGET_DIR}/lib")
-  else()
-    message(FATAL_ERROR "Unable to find _CUDA_LIBRARY_DIR based on _CUDA_TARGET_DIR=${_CUDA_TARGET_DIR}")
-  endif()
-
-  # _CUDA_TARGET_DIR always points to the directory containing the include directory.
-  # On a scattered installation /usr, on a non-scattered something like /usr/local/cuda or /usr/local/cuda-10.2/targets/aarch64-linux.
-  if(EXISTS "${_CUDA_TARGET_DIR}/include/cuda_runtime.h")
-    set(_CUDA_INCLUDE_DIR "${_CUDA_TARGET_DIR}/include")
-  else()
-    message(FATAL_ERROR "Unable to find cuda_runtime.h in \"${_CUDA_TARGET_DIR}/include\" for _CUDA_INCLUDE_DIR.")
-  endif()
-
-  # Clang does not add any CUDA SDK libraries or directories when invoking the host linker.
-  # Add the CUDA toolkit library directory ourselves so that linking works.
-  # The CUDA runtime libraries are handled elsewhere by CMAKE_CUDA_RUNTIME_LIBRARY.
-  set(CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES "${_CUDA_INCLUDE_DIR}")
-  set(CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES "${_CUDA_LIBRARY_DIR}")
-  set(CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES "")
-  set(CMAKE_CUDA_HOST_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
-elseif(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
-  set(_nvcc_log "")
-  string(REPLACE "\r" "" _nvcc_output_orig "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
-  if(_nvcc_output_orig MATCHES "#\\\$ +PATH= *([^\n]*)\n")
-    set(_nvcc_path "${CMAKE_MATCH_1}")
-    string(APPEND _nvcc_log "  found 'PATH=' string: [${_nvcc_path}]\n")
-    string(REPLACE ":" ";" _nvcc_path "${_nvcc_path}")
-  else()
-    set(_nvcc_path "")
-    string(REPLACE "\n" "\n    " _nvcc_output_log "\n${_nvcc_output_orig}")
-    string(APPEND _nvcc_log "  no 'PATH=' string found in nvcc output:${_nvcc_output_log}\n")
-  endif()
-  if(_nvcc_output_orig MATCHES "#\\\$ +LIBRARIES= *([^\n]*)\n")
-    set(_nvcc_libraries "${CMAKE_MATCH_1}")
-    string(APPEND _nvcc_log "  found 'LIBRARIES=' string: [${_nvcc_libraries}]\n")
-  else()
-    set(_nvcc_libraries "")
-    string(REPLACE "\n" "\n    " _nvcc_output_log "\n${_nvcc_output_orig}")
-    string(APPEND _nvcc_log "  no 'LIBRARIES=' string found in nvcc output:${_nvcc_output_log}\n")
-  endif()
-
-  set(_nvcc_link_line "")
-  if(_nvcc_libraries)
-    # Remove variable assignments.
-    string(REGEX REPLACE "#\\\$ *[^= ]+=[^\n]*\n" "" _nvcc_output "${_nvcc_output_orig}")
-    # Encode [] characters that break list expansion.
-    string(REPLACE "[" "{==={" _nvcc_output "${_nvcc_output}")
-    string(REPLACE "]" "}===}" _nvcc_output "${_nvcc_output}")
-    # Split lines.
-    string(REGEX REPLACE "\n+(#\\\$ )?" ";" _nvcc_output "${_nvcc_output}")
-    foreach(line IN LISTS _nvcc_output)
-      set(_nvcc_output_line "${line}")
-      string(REPLACE "{==={" "[" _nvcc_output_line "${_nvcc_output_line}")
-      string(REPLACE "}===}" "]" _nvcc_output_line "${_nvcc_output_line}")
-      string(APPEND _nvcc_log "  considering line: [${_nvcc_output_line}]\n")
-      if("${_nvcc_output_line}" MATCHES "^ *nvlink")
-        string(APPEND _nvcc_log "    ignoring nvlink line\n")
-      elseif(_nvcc_libraries)
-        if("${_nvcc_output_line}" MATCHES "(@\"?tmp/a\\.exe\\.res\"?)")
-          set(_nvcc_link_res_arg "${CMAKE_MATCH_1}")
-          set(_nvcc_link_res "${CMAKE_PLATFORM_INFO_DIR}/CompilerIdCUDA/tmp/a.exe.res")
-          if(EXISTS "${_nvcc_link_res}")
-            file(READ "${_nvcc_link_res}" _nvcc_link_res_content)
-            string(REPLACE "${_nvcc_link_res_arg}" "${_nvcc_link_res_content}" _nvcc_output_line "${_nvcc_output_line}")
-          endif()
-        endif()
-        string(FIND "${_nvcc_output_line}" "${_nvcc_libraries}" _nvcc_libraries_pos)
-        if(NOT _nvcc_libraries_pos EQUAL -1)
-          set(_nvcc_link_line "${_nvcc_output_line}")
-          string(APPEND _nvcc_log "    extracted link line: [${_nvcc_link_line}]\n")
-        endif()
-      endif()
-    endforeach()
-  endif()
-
-  if(_nvcc_link_line)
-    if("x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC")
-      set(CMAKE_CUDA_HOST_LINK_LAUNCHER "${CMAKE_LINKER}")
-    else()
-      #extract the compiler that is being used for linking
-      separate_arguments(_nvcc_link_line_args UNIX_COMMAND "${_nvcc_link_line}")
-      list(GET _nvcc_link_line_args 0 _nvcc_host_link_launcher)
-      if(IS_ABSOLUTE "${_nvcc_host_link_launcher}")
-        string(APPEND _nvcc_log "  extracted link launcher absolute path: [${_nvcc_host_link_launcher}]\n")
-        set(CMAKE_CUDA_HOST_LINK_LAUNCHER "${_nvcc_host_link_launcher}")
-      else()
-        string(APPEND _nvcc_log "  extracted link launcher name: [${_nvcc_host_link_launcher}]\n")
-        find_program(_nvcc_find_host_link_launcher
-          NAMES ${_nvcc_host_link_launcher}
-          PATHS ${_nvcc_path} NO_DEFAULT_PATH)
-        find_program(_nvcc_find_host_link_launcher
-          NAMES ${_nvcc_host_link_launcher})
-        if(_nvcc_find_host_link_launcher)
-          string(APPEND _nvcc_log "  found link launcher absolute path: [${_nvcc_find_host_link_launcher}]\n")
-          set(CMAKE_CUDA_HOST_LINK_LAUNCHER "${_nvcc_find_host_link_launcher}")
-        else()
-          string(APPEND _nvcc_log "  could not find link launcher absolute path\n")
-          set(CMAKE_CUDA_HOST_LINK_LAUNCHER "${_nvcc_host_link_launcher}")
-        endif()
-        unset(_nvcc_find_host_link_launcher CACHE)
-      endif()
-    endif()
-
-    #prefix the line with cuda-fake-ld so that implicit link info believes it is
-    #a link line
-    set(_nvcc_link_line "cuda-fake-ld ${_nvcc_link_line}")
-    CMAKE_PARSE_IMPLICIT_LINK_INFO("${_nvcc_link_line}"
-                                   CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES
-                                   CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES
-                                   CMAKE_CUDA_HOST_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
-                                   log
-                                   "${CMAKE_CUDA_IMPLICIT_OBJECT_REGEX}")
-
-    # Detect CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT from the compiler by looking at which
-    # cudart library exists in the implicit link libraries passed to the host linker.
-    # This is required when a project sets the cuda runtime library as part of the
-    # initial flags.
-    if(";${CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES};" MATCHES [[;cudart_static(\.lib)?;]])
-      set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "STATIC")
-    elseif(";${CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES};" MATCHES [[;cudart(\.lib)?;]])
-      set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "SHARED")
-    else()
-      set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "NONE")
-    endif()
-    set(_SET_CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT
-      "set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT \"${CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT}\")")
-
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-      "Parsed CUDA nvcc implicit link information from above output:\n${_nvcc_log}\n${log}\n\n")
-  else()
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-      "Failed to parse CUDA nvcc implicit link information:\n${_nvcc_log}\n\n")
-    message(FATAL_ERROR "Failed to extract nvcc implicit link line.")
-  endif()
-endif()
-
-# CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES is detected above as the list of
-# libraries that the CUDA compiler implicitly passes to the host linker.
-# CMake invokes the host linker directly and so needs to pass these libraries.
-# We filter out those that should not be passed unconditionally both here
-# and from CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES in CMakeTestCUDACompiler.
-set(CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES_EXCLUDE
-  # The CUDA runtime libraries are controlled by CMAKE_CUDA_RUNTIME_LIBRARY.
-  cudart        cudart.lib
-  cudart_static cudart_static.lib
-  cudadevrt     cudadevrt.lib
-
-  # Dependencies of the CUDA static runtime library on Linux hosts.
-  rt
-  pthread
-  dl
-  )
-list(REMOVE_ITEM CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES ${CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES_EXCLUDE})
-
-if(CMAKE_CUDA_COMPILER_SYSROOT)
-  string(CONCAT _SET_CMAKE_CUDA_COMPILER_SYSROOT
-    "set(CMAKE_CUDA_COMPILER_SYSROOT \"${CMAKE_CUDA_COMPILER_SYSROOT}\")\n"
-    "set(CMAKE_COMPILER_SYSROOT \"${CMAKE_CUDA_COMPILER_SYSROOT}\")")
-else()
-  set(_SET_CMAKE_CUDA_COMPILER_SYSROOT "")
-endif()
-
-# Determine CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES
-if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
-  set(CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES)
-  string(REPLACE "\r" "" _nvcc_output_orig "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
-  if(_nvcc_output_orig MATCHES "#\\\$ +INCLUDES= *([^\n]*)\n")
-    set(_nvcc_includes "${CMAKE_MATCH_1}")
-    string(APPEND _nvcc_log "  found 'INCLUDES=' string: [${_nvcc_includes}]\n")
-  else()
-    set(_nvcc_includes "")
-    string(REPLACE "\n" "\n    " _nvcc_output_log "\n${_nvcc_output_orig}")
-    string(APPEND _nvcc_log "  no 'INCLUDES=' string found in nvcc output:${_nvcc_output_log}\n")
-  endif()
-  if(_nvcc_includes)
-    # across all operating system each include directory is prefixed with -I
-    separate_arguments(_nvcc_output NATIVE_COMMAND "${_nvcc_includes}")
-    foreach(line IN LISTS _nvcc_output)
-      string(REGEX REPLACE "^-I" "" line "${line}")
-      get_filename_component(line "${line}" ABSOLUTE)
-      list(APPEND CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES "${line}")
-    endforeach()
-
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-      "Parsed CUDA nvcc include information from above output:\n${_nvcc_log}\n${log}\n\n")
-  else()
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-      "Failed to detect CUDA nvcc include information:\n${_nvcc_log}\n\n")
-  endif()
-
-  # Parse default CUDA architecture.
-  cmake_policy(GET CMP0104 _CUDA_CMP0104)
-  if(NOT CMAKE_CUDA_ARCHITECTURES AND _CUDA_CMP0104 STREQUAL "NEW")
-    string(REGEX MATCH "arch[ =]compute_([0-9]+)" dont_care "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
-    set(detected_architecture "${CMAKE_MATCH_1}")
-  elseif(CMAKE_CUDA_ARCHITECTURES)
-    string(REGEX MATCHALL "-arch compute_([0-9]+)" target_cpus "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
-
-    foreach(cpu ${target_cpus})
-      string(REGEX MATCH "-arch compute_([0-9]+)" dont_care "${cpu}")
-      list(APPEND architectures "${CMAKE_MATCH_1}")
-    endforeach()
-  endif()
-endif()
-
-# If the user didn't set the architectures, then set them to a default.
-# If the user did, then make sure those architectures worked.
-if(DEFINED detected_architecture AND "${CMAKE_CUDA_ARCHITECTURES}" STREQUAL "")
-  set(CMAKE_CUDA_ARCHITECTURES "${detected_architecture}" CACHE STRING "CUDA architectures")
-
-  if(NOT CMAKE_CUDA_ARCHITECTURES)
-    message(FATAL_ERROR "Failed to find a working CUDA architecture.")
-  endif()
-elseif(architectures)
-  # Sort since order mustn't matter.
-  list(SORT architectures)
-  list(SORT tested_architectures)
-
-  # We don't distinguish real/virtual architectures during testing.
-  # For "70-real;70-virtual" we detect "70" as working and tested_architectures is "70;70".
-  # Thus we need to remove duplicates before checking if they're equal.
-  list(REMOVE_DUPLICATES tested_architectures)
-
-  if(NOT "${architectures}" STREQUAL "${tested_architectures}")
-    message(FATAL_ERROR
-      "The CMAKE_CUDA_ARCHITECTURES:\n"
-      "  ${CMAKE_CUDA_ARCHITECTURES}\n"
-      "do not all work with this compiler.  Try:\n"
-      "  ${architectures}\n"
-      "instead.")
-  endif()
-endif()
-
-# configure all variables set in this file
-configure_file(${CMAKE_ROOT}/Modules/CMakeCUDACompiler.cmake.in
-  ${CMAKE_PLATFORM_INFO_DIR}/CMakeCUDACompiler.cmake
-  @ONLY
-)
-
-# Don't leak variables unnecessarily to user code.
-unset(_CUDA_INCLUDE_DIR CACHE)
-unset(_CUDA_NVCC_EXECUTABLE CACHE)
-unset(_CUDA_LIBRARY_DIR)
-unset(_CUDA_TARGET_DIR)
-unset(_CUDA_TARGET_NAME)
-
-set(CMAKE_CUDA_COMPILER_ENV_VAR "CUDACXX")
-set(CMAKE_CUDA_HOST_COMPILER_ENV_VAR "CUDAHOSTCXX")
diff --git a/share/cmake-3.18/Modules/CMakeDetermineCXXCompiler.cmake b/share/cmake-3.18/Modules/CMakeDetermineCXXCompiler.cmake
deleted file mode 100644
index 662b831..0000000
--- a/share/cmake-3.18/Modules/CMakeDetermineCXXCompiler.cmake
+++ /dev/null
@@ -1,225 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# determine the compiler to use for C++ programs
-# NOTE, a generator may set CMAKE_CXX_COMPILER before
-# loading this file to force a compiler.
-# use environment variable CXX first if defined by user, next use
-# the cmake variable CMAKE_GENERATOR_CXX which can be defined by a generator
-# as a default compiler
-# If the internal cmake variable _CMAKE_TOOLCHAIN_PREFIX is set, this is used
-# as prefix for the tools (e.g. arm-elf-g++, arm-elf-ar etc.)
-#
-# Sets the following variables:
-#   CMAKE_CXX_COMPILER
-#   CMAKE_COMPILER_IS_GNUCXX
-#   CMAKE_AR
-#   CMAKE_RANLIB
-#
-# If not already set before, it also sets
-#   _CMAKE_TOOLCHAIN_PREFIX
-
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
-
-# Load system-specific compiler preferences for this language.
-include(Platform/${CMAKE_SYSTEM_NAME}-Determine-CXX OPTIONAL)
-include(Platform/${CMAKE_SYSTEM_NAME}-CXX OPTIONAL)
-if(NOT CMAKE_CXX_COMPILER_NAMES)
-  set(CMAKE_CXX_COMPILER_NAMES CC)
-endif()
-
-if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
-elseif("${CMAKE_GENERATOR}" MATCHES "Green Hills MULTI")
-elseif("${CMAKE_GENERATOR}" MATCHES "Xcode")
-  set(CMAKE_CXX_COMPILER_XCODE_TYPE sourcecode.cpp.cpp)
-  _cmake_find_compiler_path(CXX)
-else()
-  if(NOT CMAKE_CXX_COMPILER)
-    set(CMAKE_CXX_COMPILER_INIT NOTFOUND)
-
-    # prefer the environment variable CXX
-    if(NOT $ENV{CXX} STREQUAL "")
-      get_filename_component(CMAKE_CXX_COMPILER_INIT $ENV{CXX} PROGRAM PROGRAM_ARGS CMAKE_CXX_FLAGS_ENV_INIT)
-      if(CMAKE_CXX_FLAGS_ENV_INIT)
-        set(CMAKE_CXX_COMPILER_ARG1 "${CMAKE_CXX_FLAGS_ENV_INIT}" CACHE STRING "First argument to CXX compiler")
-      endif()
-      if(NOT EXISTS ${CMAKE_CXX_COMPILER_INIT})
-        message(FATAL_ERROR "Could not find compiler set in environment variable CXX:\n$ENV{CXX}.\n${CMAKE_CXX_COMPILER_INIT}")
-      endif()
-    endif()
-
-    # next prefer the generator specified compiler
-    if(CMAKE_GENERATOR_CXX)
-      if(NOT CMAKE_CXX_COMPILER_INIT)
-        set(CMAKE_CXX_COMPILER_INIT ${CMAKE_GENERATOR_CXX})
-      endif()
-    endif()
-
-    # finally list compilers to try
-    if(NOT CMAKE_CXX_COMPILER_INIT)
-      set(CMAKE_CXX_COMPILER_LIST CC ${_CMAKE_TOOLCHAIN_PREFIX}c++ ${_CMAKE_TOOLCHAIN_PREFIX}g++ aCC cl bcc xlC clang++)
-    endif()
-
-    _cmake_find_compiler(CXX)
-  else()
-    _cmake_find_compiler_path(CXX)
-  endif()
-  mark_as_advanced(CMAKE_CXX_COMPILER)
-
-  # Each entry in this list is a set of extra flags to try
-  # adding to the compile line to see if it helps produce
-  # a valid identification file.
-  set(CMAKE_CXX_COMPILER_ID_TEST_FLAGS_FIRST)
-  set(CMAKE_CXX_COMPILER_ID_TEST_FLAGS
-    # Try compiling to an object file only.
-    "-c"
-    # IAR does not detect language automatically
-    "--c++"
-    "--ec++"
-
-    # ARMClang need target options
-    "--target=arm-arm-none-eabi -mcpu=cortex-m3"
-    )
-endif()
-
-# Build a small source file to identify the compiler.
-if(NOT CMAKE_CXX_COMPILER_ID_RUN)
-  set(CMAKE_CXX_COMPILER_ID_RUN 1)
-
-  # Try to identify the compiler.
-  set(CMAKE_CXX_COMPILER_ID)
-  set(CMAKE_CXX_PLATFORM_ID)
-  file(READ ${CMAKE_ROOT}/Modules/CMakePlatformId.h.in
-    CMAKE_CXX_COMPILER_ID_PLATFORM_CONTENT)
-
-  # The IAR compiler produces weird output.
-  # See https://gitlab.kitware.com/cmake/cmake/-/issues/10176#note_153591
-  list(APPEND CMAKE_CXX_COMPILER_ID_VENDORS IAR)
-  set(CMAKE_CXX_COMPILER_ID_VENDOR_FLAGS_IAR )
-  set(CMAKE_CXX_COMPILER_ID_VENDOR_REGEX_IAR "IAR .+ Compiler")
-
-  # Match the link line from xcodebuild output of the form
-  #  Ld ...
-  #      ...
-  #      /path/to/cc ...CompilerIdCXX/...
-  # to extract the compiler front-end for the language.
-  set(CMAKE_CXX_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdCXX/(\\./)?(CompilerIdCXX.(framework|xctest)/)?CompilerIdCXX[ \t\n\\\"]")
-  set(CMAKE_CXX_COMPILER_ID_TOOL_MATCH_INDEX 2)
-
-  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
-  CMAKE_DETERMINE_COMPILER_ID(CXX CXXFLAGS CMakeCXXCompilerId.cpp)
-
-  _cmake_find_compiler_sysroot(CXX)
-
-  # Set old compiler and platform id variables.
-  if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
-    set(CMAKE_COMPILER_IS_GNUCXX 1)
-  endif()
-  if(CMAKE_CXX_PLATFORM_ID MATCHES "MinGW")
-    set(CMAKE_COMPILER_IS_MINGW 1)
-  elseif(CMAKE_CXX_PLATFORM_ID MATCHES "Cygwin")
-    set(CMAKE_COMPILER_IS_CYGWIN 1)
-  endif()
-else()
-  if(NOT DEFINED CMAKE_CXX_COMPILER_FRONTEND_VARIANT)
-    # Some toolchain files set our internal CMAKE_CXX_COMPILER_ID_RUN
-    # variable but are not aware of CMAKE_CXX_COMPILER_FRONTEND_VARIANT.
-    # They pre-date our support for the GNU-like variant targeting the
-    # MSVC ABI so we do not consider that here.
-    if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
-      if("x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
-        set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "MSVC")
-      else()
-        set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU")
-      endif()
-    else()
-      set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "")
-    endif()
-  endif()
-endif()
-
-if (NOT _CMAKE_TOOLCHAIN_LOCATION)
-  get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_CXX_COMPILER}" PATH)
-endif ()
-
-# if we have a g++ cross compiler, they have usually some prefix, like
-# e.g. powerpc-linux-g++, arm-elf-g++ or i586-mingw32msvc-g++ , optionally
-# with a 3-component version number at the end (e.g. arm-eabi-gcc-4.5.2).
-# The other tools of the toolchain usually have the same prefix
-# NAME_WE cannot be used since then this test will fail for names like
-# "arm-unknown-nto-qnx6.3.0-gcc.exe", where BASENAME would be
-# "arm-unknown-nto-qnx6" instead of the correct "arm-unknown-nto-qnx6.3.0-"
-
-
-if (NOT _CMAKE_TOOLCHAIN_PREFIX)
-
-  if("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|QCC")
-    get_filename_component(COMPILER_BASENAME "${CMAKE_CXX_COMPILER}" NAME)
-    if (COMPILER_BASENAME MATCHES "^(.+-)(clan)?[gc]\\+\\+(-[0-9]+(\\.[0-9]+)*)?(-[^.]+)?(\\.exe)?$")
-      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
-      set(_CMAKE_COMPILER_SUFFIX ${CMAKE_MATCH_5})
-    elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
-      if(CMAKE_CXX_COMPILER_TARGET)
-        set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_CXX_COMPILER_TARGET}-)
-      endif()
-    elseif(COMPILER_BASENAME MATCHES "QCC(\\.exe)?$")
-      if(CMAKE_CXX_COMPILER_TARGET MATCHES "gcc_nto([a-z0-9]+_[0-9]+|[^_le]+)(le)")
-        set(_CMAKE_TOOLCHAIN_PREFIX nto${CMAKE_MATCH_1}-)
-      endif()
-    endif ()
-
-    # if "llvm-" is part of the prefix, remove it, since llvm doesn't have its own binutils
-    # but uses the regular ar, objcopy, etc. (instead of llvm-objcopy etc.)
-    if ("${_CMAKE_TOOLCHAIN_PREFIX}" MATCHES "(.+-)?llvm-$")
-      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
-    endif ()
-  elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "TI")
-    # TI compilers are named e.g. cl6x, cl470 or armcl.exe
-    get_filename_component(COMPILER_BASENAME "${CMAKE_CXX_COMPILER}" NAME)
-    if (COMPILER_BASENAME MATCHES "^(.+)?cl([^.]+)?(\\.exe)?$")
-      set(_CMAKE_TOOLCHAIN_PREFIX "${CMAKE_MATCH_1}")
-      set(_CMAKE_TOOLCHAIN_SUFFIX "${CMAKE_MATCH_2}")
-    endif ()
-
-  endif()
-
-endif ()
-
-set(_CMAKE_PROCESSING_LANGUAGE "CXX")
-include(CMakeFindBinUtils)
-include(Compiler/${CMAKE_CXX_COMPILER_ID}-FindBinUtils OPTIONAL)
-unset(_CMAKE_PROCESSING_LANGUAGE)
-
-if(CMAKE_CXX_COMPILER_SYSROOT)
-  string(CONCAT _SET_CMAKE_CXX_COMPILER_SYSROOT
-    "set(CMAKE_CXX_COMPILER_SYSROOT \"${CMAKE_CXX_COMPILER_SYSROOT}\")\n"
-    "set(CMAKE_COMPILER_SYSROOT \"${CMAKE_CXX_COMPILER_SYSROOT}\")")
-else()
-  set(_SET_CMAKE_CXX_COMPILER_SYSROOT "")
-endif()
-
-if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID)
-  set(_SET_CMAKE_CXX_COMPILER_ARCHITECTURE_ID
-    "set(CMAKE_CXX_COMPILER_ARCHITECTURE_ID ${CMAKE_CXX_COMPILER_ARCHITECTURE_ID})")
-else()
-  set(_SET_CMAKE_CXX_COMPILER_ARCHITECTURE_ID "")
-endif()
-
-if(MSVC_CXX_ARCHITECTURE_ID)
-  set(SET_MSVC_CXX_ARCHITECTURE_ID
-    "set(MSVC_CXX_ARCHITECTURE_ID ${MSVC_CXX_ARCHITECTURE_ID})")
-endif()
-
-if(CMAKE_CXX_XCODE_ARCHS)
-  set(SET_CMAKE_XCODE_ARCHS
-    "set(CMAKE_XCODE_ARCHS \"${CMAKE_CXX_XCODE_ARCHS}\")")
-endif()
-
-# configure all variables set in this file
-configure_file(${CMAKE_ROOT}/Modules/CMakeCXXCompiler.cmake.in
-  ${CMAKE_PLATFORM_INFO_DIR}/CMakeCXXCompiler.cmake
-  @ONLY
-  )
-
-set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
diff --git a/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake b/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake
deleted file mode 100644
index b50e5f1..0000000
--- a/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake
+++ /dev/null
@@ -1,147 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-function(cmake_determine_compile_features lang)
-
-  if(lang STREQUAL C AND COMMAND cmake_record_c_compile_features)
-    message(CHECK_START "Detecting ${lang} compile features")
-
-    set(CMAKE_C90_COMPILE_FEATURES)
-    set(CMAKE_C99_COMPILE_FEATURES)
-    set(CMAKE_C11_COMPILE_FEATURES)
-
-    include("${CMAKE_ROOT}/Modules/Internal/FeatureTesting.cmake")
-
-    cmake_record_c_compile_features()
-
-    if(NOT _result EQUAL 0)
-      message(CHECK_FAIL "failed")
-      return()
-    endif()
-
-    if (CMAKE_C99_COMPILE_FEATURES AND CMAKE_C11_COMPILE_FEATURES)
-      list(REMOVE_ITEM CMAKE_C11_COMPILE_FEATURES ${CMAKE_C99_COMPILE_FEATURES})
-    endif()
-    if (CMAKE_C90_COMPILE_FEATURES AND CMAKE_C99_COMPILE_FEATURES)
-      list(REMOVE_ITEM CMAKE_C99_COMPILE_FEATURES ${CMAKE_C90_COMPILE_FEATURES})
-    endif()
-
-    if(NOT CMAKE_C_COMPILE_FEATURES)
-      set(CMAKE_C_COMPILE_FEATURES
-        ${CMAKE_C90_COMPILE_FEATURES}
-        ${CMAKE_C99_COMPILE_FEATURES}
-        ${CMAKE_C11_COMPILE_FEATURES}
-      )
-    endif()
-
-    set(CMAKE_C_COMPILE_FEATURES ${CMAKE_C_COMPILE_FEATURES} PARENT_SCOPE)
-    set(CMAKE_C90_COMPILE_FEATURES ${CMAKE_C90_COMPILE_FEATURES} PARENT_SCOPE)
-    set(CMAKE_C99_COMPILE_FEATURES ${CMAKE_C99_COMPILE_FEATURES} PARENT_SCOPE)
-    set(CMAKE_C11_COMPILE_FEATURES ${CMAKE_C11_COMPILE_FEATURES} PARENT_SCOPE)
-
-    message(CHECK_PASS "done")
-
-  elseif(lang STREQUAL CXX AND COMMAND cmake_record_cxx_compile_features)
-    message(CHECK_START "Detecting ${lang} compile features")
-
-    set(CMAKE_CXX98_COMPILE_FEATURES)
-    set(CMAKE_CXX11_COMPILE_FEATURES)
-    set(CMAKE_CXX14_COMPILE_FEATURES)
-    set(CMAKE_CXX17_COMPILE_FEATURES)
-    set(CMAKE_CXX20_COMPILE_FEATURES)
-
-    include("${CMAKE_ROOT}/Modules/Internal/FeatureTesting.cmake")
-
-    cmake_record_cxx_compile_features()
-
-    if(NOT _result EQUAL 0)
-      message(CHECK_FAIL "failed")
-      return()
-    endif()
-
-    if (CMAKE_CXX17_COMPILE_FEATURES AND CMAKE_CXX20_COMPILE_FEATURES)
-      list(REMOVE_ITEM CMAKE_CXX20_COMPILE_FEATURES ${CMAKE_CXX17_COMPILE_FEATURES})
-    endif()
-    if (CMAKE_CXX14_COMPILE_FEATURES AND CMAKE_CXX17_COMPILE_FEATURES)
-      list(REMOVE_ITEM CMAKE_CXX17_COMPILE_FEATURES ${CMAKE_CXX14_COMPILE_FEATURES})
-    endif()
-    if (CMAKE_CXX11_COMPILE_FEATURES AND CMAKE_CXX14_COMPILE_FEATURES)
-      list(REMOVE_ITEM CMAKE_CXX14_COMPILE_FEATURES ${CMAKE_CXX11_COMPILE_FEATURES})
-    endif()
-    if (CMAKE_CXX98_COMPILE_FEATURES AND CMAKE_CXX11_COMPILE_FEATURES)
-      list(REMOVE_ITEM CMAKE_CXX11_COMPILE_FEATURES ${CMAKE_CXX98_COMPILE_FEATURES})
-    endif()
-
-    if(NOT CMAKE_CXX_COMPILE_FEATURES)
-      set(CMAKE_CXX_COMPILE_FEATURES
-        ${CMAKE_CXX98_COMPILE_FEATURES}
-        ${CMAKE_CXX11_COMPILE_FEATURES}
-        ${CMAKE_CXX14_COMPILE_FEATURES}
-        ${CMAKE_CXX17_COMPILE_FEATURES}
-        ${CMAKE_CXX20_COMPILE_FEATURES}
-      )
-    endif()
-
-    set(CMAKE_CXX_COMPILE_FEATURES ${CMAKE_CXX_COMPILE_FEATURES} PARENT_SCOPE)
-    set(CMAKE_CXX98_COMPILE_FEATURES ${CMAKE_CXX98_COMPILE_FEATURES} PARENT_SCOPE)
-    set(CMAKE_CXX11_COMPILE_FEATURES ${CMAKE_CXX11_COMPILE_FEATURES} PARENT_SCOPE)
-    set(CMAKE_CXX14_COMPILE_FEATURES ${CMAKE_CXX14_COMPILE_FEATURES} PARENT_SCOPE)
-    set(CMAKE_CXX17_COMPILE_FEATURES ${CMAKE_CXX17_COMPILE_FEATURES} PARENT_SCOPE)
-    set(CMAKE_CXX20_COMPILE_FEATURES ${CMAKE_CXX20_COMPILE_FEATURES} PARENT_SCOPE)
-
-    message(CHECK_PASS "done")
-
-  elseif(lang STREQUAL CUDA AND COMMAND cmake_record_cuda_compile_features)
-    message(CHECK_START "Detecting ${lang} compile features")
-
-    set(CMAKE_CUDA03_COMPILE_FEATURES)
-    set(CMAKE_CUDA11_COMPILE_FEATURES)
-    set(CMAKE_CUDA14_COMPILE_FEATURES)
-    set(CMAKE_CUDA17_COMPILE_FEATURES)
-    set(CMAKE_CUDA20_COMPILE_FEATURES)
-
-    include("${CMAKE_ROOT}/Modules/Internal/FeatureTesting.cmake")
-
-    cmake_record_cuda_compile_features()
-
-    if(NOT _result EQUAL 0)
-      message(CHECK_FAIL "failed")
-      return()
-    endif()
-
-  if (CMAKE_CUDA17_COMPILE_FEATURES AND CMAKE_CUDA20_COMPILE_FEATURES)
-      list(REMOVE_ITEM CMAKE_CUDA20_COMPILE_FEATURES ${CMAKE_CUDA17_COMPILE_FEATURES})
-    endif()
-    if (CMAKE_CUDA14_COMPILE_FEATURES AND CMAKE_CUDA17_COMPILE_FEATURES)
-      list(REMOVE_ITEM CMAKE_CUDA17_COMPILE_FEATURES ${CMAKE_CUDA14_COMPILE_FEATURES})
-    endif()
-    if (CMAKE_CUDA11_COMPILE_FEATURES AND CMAKE_CUDA14_COMPILE_FEATURES)
-      list(REMOVE_ITEM CMAKE_CUDA14_COMPILE_FEATURES ${CMAKE_CUDA11_COMPILE_FEATURES})
-    endif()
-    if (CMAKE_CUDA03_COMPILE_FEATURES AND CMAKE_CUDA11_COMPILE_FEATURES)
-      list(REMOVE_ITEM CMAKE_CUDA11_COMPILE_FEATURES ${CMAKE_CUDA03_COMPILE_FEATURES})
-    endif()
-
-    if(NOT CMAKE_CUDA_COMPILE_FEATURES)
-      set(CMAKE_CUDA_COMPILE_FEATURES
-        ${CMAKE_CUDA03_COMPILE_FEATURES}
-        ${CMAKE_CUDA11_COMPILE_FEATURES}
-        ${CMAKE_CUDA14_COMPILE_FEATURES}
-        ${CMAKE_CUDA17_COMPILE_FEATURES}
-        ${CMAKE_CUDA20_COMPILE_FEATURES}
-      )
-    endif()
-
-    set(CMAKE_CUDA_COMPILE_FEATURES ${CMAKE_CUDA_COMPILE_FEATURES} PARENT_SCOPE)
-    set(CMAKE_CUDA03_COMPILE_FEATURES ${CMAKE_CUDA03_COMPILE_FEATURES} PARENT_SCOPE)
-    set(CMAKE_CUDA11_COMPILE_FEATURES ${CMAKE_CUDA11_COMPILE_FEATURES} PARENT_SCOPE)
-    set(CMAKE_CUDA14_COMPILE_FEATURES ${CMAKE_CUDA14_COMPILE_FEATURES} PARENT_SCOPE)
-    set(CMAKE_CUDA17_COMPILE_FEATURES ${CMAKE_CUDA17_COMPILE_FEATURES} PARENT_SCOPE)
-    set(CMAKE_CUDA20_COMPILE_FEATURES ${CMAKE_CUDA20_COMPILE_FEATURES} PARENT_SCOPE)
-
-    message(CHECK_PASS "done")
-
-  endif()
-
-endfunction()
diff --git a/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake b/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake
deleted file mode 100644
index cb1ab1d..0000000
--- a/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake
+++ /dev/null
@@ -1,152 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-macro(_cmake_find_compiler lang)
-  # Use already-enabled languages for reference.
-  get_property(_languages GLOBAL PROPERTY ENABLED_LANGUAGES)
-  list(REMOVE_ITEM _languages "${lang}")
-
-  if(CMAKE_${lang}_COMPILER_INIT)
-    # Search only for the specified compiler.
-    set(CMAKE_${lang}_COMPILER_LIST "${CMAKE_${lang}_COMPILER_INIT}")
-  else()
-    # Re-order the compiler list with preferred vendors first.
-    set(_${lang}_COMPILER_LIST "${CMAKE_${lang}_COMPILER_LIST}")
-    set(CMAKE_${lang}_COMPILER_LIST "")
-    # Prefer vendors of compilers from reference languages.
-    foreach(l ${_languages})
-      list(APPEND CMAKE_${lang}_COMPILER_LIST
-        ${_${lang}_COMPILER_NAMES_${CMAKE_${l}_COMPILER_ID}})
-    endforeach()
-    # Prefer vendors based on the platform.
-    list(APPEND CMAKE_${lang}_COMPILER_LIST ${CMAKE_${lang}_COMPILER_NAMES})
-    # Append the rest of the list and remove duplicates.
-    list(APPEND CMAKE_${lang}_COMPILER_LIST ${_${lang}_COMPILER_LIST})
-    unset(_${lang}_COMPILER_LIST)
-    list(REMOVE_DUPLICATES CMAKE_${lang}_COMPILER_LIST)
-    if(CMAKE_${lang}_COMPILER_EXCLUDE)
-      list(REMOVE_ITEM CMAKE_${lang}_COMPILER_LIST
-        ${CMAKE_${lang}_COMPILER_EXCLUDE})
-    endif()
-  endif()
-
-  # Look for directories containing compilers of reference languages.
-  set(_${lang}_COMPILER_HINTS)
-  foreach(l ${_languages})
-    if(CMAKE_${l}_COMPILER AND IS_ABSOLUTE "${CMAKE_${l}_COMPILER}")
-      get_filename_component(_hint "${CMAKE_${l}_COMPILER}" PATH)
-      if(IS_DIRECTORY "${_hint}")
-        list(APPEND _${lang}_COMPILER_HINTS "${_hint}")
-      endif()
-      unset(_hint)
-    endif()
-  endforeach()
-
-  # Find the compiler.
-  if(_${lang}_COMPILER_HINTS)
-    # Prefer directories containing compilers of reference languages.
-    list(REMOVE_DUPLICATES _${lang}_COMPILER_HINTS)
-    find_program(CMAKE_${lang}_COMPILER
-      NAMES ${CMAKE_${lang}_COMPILER_LIST}
-      PATHS ${_${lang}_COMPILER_HINTS}
-      NO_DEFAULT_PATH
-      DOC "${lang} compiler")
-  endif()
-  if(CMAKE_HOST_WIN32 AND CMAKE_GENERATOR MATCHES "Ninja")
-    # On Windows command-line builds, the Makefile generators each imply
-    # a preferred compiler tool.  The Ninja generator does not imply a
-    # compiler tool, so use the compiler that occurs first in PATH.
-    find_program(CMAKE_${lang}_COMPILER
-      NAMES ${CMAKE_${lang}_COMPILER_LIST}
-      NAMES_PER_DIR
-      DOC "${lang} compiler"
-      NO_PACKAGE_ROOT_PATH
-      NO_CMAKE_PATH
-      NO_CMAKE_ENVIRONMENT_PATH
-      NO_CMAKE_SYSTEM_PATH
-      )
-  endif()
-  find_program(CMAKE_${lang}_COMPILER NAMES ${CMAKE_${lang}_COMPILER_LIST} DOC "${lang} compiler")
-  if(CMAKE_${lang}_COMPILER_INIT AND NOT CMAKE_${lang}_COMPILER)
-    set_property(CACHE CMAKE_${lang}_COMPILER PROPERTY VALUE "${CMAKE_${lang}_COMPILER_INIT}")
-  endif()
-  unset(_${lang}_COMPILER_HINTS)
-  unset(_languages)
-
-  # Look for a make tool provided by Xcode
-  if(CMAKE_HOST_APPLE)
-    macro(_query_xcrun compiler_name result_var_keyword result_var)
-      if(NOT "x${result_var_keyword}" STREQUAL "xRESULT_VAR")
-        message(FATAL_ERROR "Bad arguments to macro")
-      endif()
-      execute_process(COMMAND xcrun --find ${compiler_name}
-        OUTPUT_VARIABLE _xcrun_out OUTPUT_STRIP_TRAILING_WHITESPACE
-        ERROR_VARIABLE _xcrun_err)
-      set("${result_var}" "${_xcrun_out}")
-    endmacro()
-
-    set(xcrun_result)
-    if (CMAKE_${lang}_COMPILER MATCHES "^/usr/bin/(.+)$")
-      _query_xcrun("${CMAKE_MATCH_1}" RESULT_VAR xcrun_result)
-    elseif (CMAKE_${lang}_COMPILER STREQUAL "CMAKE_${lang}_COMPILER-NOTFOUND")
-      foreach(comp ${CMAKE_${lang}_COMPILER_LIST})
-        _query_xcrun("${comp}" RESULT_VAR xcrun_result)
-        if(xcrun_result)
-          break()
-        endif()
-      endforeach()
-    endif()
-    if (xcrun_result)
-      set_property(CACHE CMAKE_${lang}_COMPILER PROPERTY VALUE "${xcrun_result}")
-    endif()
-  endif()
-endmacro()
-
-macro(_cmake_find_compiler_path lang)
-  if(CMAKE_${lang}_COMPILER)
-    # we only get here if CMAKE_${lang}_COMPILER was specified using -D or a pre-made CMakeCache.txt
-    # (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE
-    # if CMAKE_${lang}_COMPILER is a list of length 2, use the first item as
-    # CMAKE_${lang}_COMPILER and the 2nd one as CMAKE_${lang}_COMPILER_ARG1
-    list(LENGTH CMAKE_${lang}_COMPILER _CMAKE_${lang}_COMPILER_LIST_LENGTH)
-    if("${_CMAKE_${lang}_COMPILER_LIST_LENGTH}" EQUAL 2)
-      list(GET CMAKE_${lang}_COMPILER 1 CMAKE_${lang}_COMPILER_ARG1)
-      list(GET CMAKE_${lang}_COMPILER 0 CMAKE_${lang}_COMPILER)
-    endif()
-    unset(_CMAKE_${lang}_COMPILER_LIST_LENGTH)
-
-    # find the compiler in the PATH if necessary
-    get_filename_component(_CMAKE_USER_${lang}_COMPILER_PATH "${CMAKE_${lang}_COMPILER}" PATH)
-    if(NOT _CMAKE_USER_${lang}_COMPILER_PATH)
-      find_program(CMAKE_${lang}_COMPILER_WITH_PATH NAMES ${CMAKE_${lang}_COMPILER})
-      if(CMAKE_${lang}_COMPILER_WITH_PATH)
-        set(CMAKE_${lang}_COMPILER ${CMAKE_${lang}_COMPILER_WITH_PATH})
-        get_property(_CMAKE_${lang}_COMPILER_CACHED CACHE CMAKE_${lang}_COMPILER PROPERTY TYPE)
-        if(_CMAKE_${lang}_COMPILER_CACHED)
-          set(CMAKE_${lang}_COMPILER "${CMAKE_${lang}_COMPILER}" CACHE STRING "${lang} compiler" FORCE)
-        endif()
-        unset(_CMAKE_${lang}_COMPILER_CACHED)
-      endif()
-      unset(CMAKE_${lang}_COMPILER_WITH_PATH CACHE)
-    endif()
-  endif()
-endmacro()
-
-function(_cmake_find_compiler_sysroot lang)
-  if(CMAKE_${lang}_COMPILER_ID STREQUAL "GNU")
-    execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" -print-sysroot
-      OUTPUT_STRIP_TRAILING_WHITESPACE
-      OUTPUT_VARIABLE _cmake_sysroot_run_out
-      ERROR_VARIABLE _cmake_sysroot_run_err)
-
-    if(_cmake_sysroot_run_out AND NOT _cmake_sysroot_run_err
-        AND NOT _cmake_sysroot_run_out STREQUAL "/"
-        AND IS_DIRECTORY "${_cmake_sysroot_run_out}/usr")
-      file(TO_CMAKE_PATH "${_cmake_sysroot_run_out}/usr" _cmake_sysroot_run_out_usr)
-      set(CMAKE_${lang}_COMPILER_SYSROOT "${_cmake_sysroot_run_out_usr}" PARENT_SCOPE)
-    else()
-      set(CMAKE_${lang}_COMPILER_SYSROOT "" PARENT_SCOPE)
-    endif()
-  endif()
-endfunction()
diff --git a/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake b/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake
deleted file mode 100644
index 50d5cd1..0000000
--- a/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake
+++ /dev/null
@@ -1,190 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# Function to compile a source file to identify the compiler ABI.
-# This is used internally by CMake and should not be included by user
-# code.
-
-include(${CMAKE_ROOT}/Modules/CMakeParseImplicitIncludeInfo.cmake)
-include(${CMAKE_ROOT}/Modules/CMakeParseImplicitLinkInfo.cmake)
-include(CMakeTestCompilerCommon)
-
-function(CMAKE_DETERMINE_COMPILER_ABI lang src)
-  if(NOT DEFINED CMAKE_${lang}_ABI_COMPILED)
-    message(CHECK_START "Detecting ${lang} compiler ABI info")
-
-    # Compile the ABI identification source.
-    set(BIN "${CMAKE_PLATFORM_INFO_DIR}/CMakeDetermineCompilerABI_${lang}.bin")
-    set(CMAKE_FLAGS )
-    set(COMPILE_DEFINITIONS )
-    if(DEFINED CMAKE_${lang}_VERBOSE_FLAG)
-      set(CMAKE_FLAGS "-DEXE_LINKER_FLAGS=${CMAKE_${lang}_VERBOSE_FLAG}")
-      set(COMPILE_DEFINITIONS "${CMAKE_${lang}_VERBOSE_FLAG}")
-    endif()
-    if(DEFINED CMAKE_${lang}_VERBOSE_COMPILE_FLAG)
-      set(COMPILE_DEFINITIONS "${CMAKE_${lang}_VERBOSE_COMPILE_FLAG}")
-    endif()
-    if(NOT "x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xMSVC")
-      # Avoid adding our own platform standard libraries for compilers
-      # from which we might detect implicit link libraries.
-      list(APPEND CMAKE_FLAGS "-DCMAKE_${lang}_STANDARD_LIBRARIES=")
-    endif()
-    __TestCompiler_setTryCompileTargetType()
-
-    # Avoid failing ABI detection on warnings.
-    string(REGEX REPLACE "(^| )-Werror(=[^ ]*)?( |$)" " " CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS}")
-
-    # Save the current LC_ALL, LC_MESSAGES, and LANG environment variables
-    # and set them to "C" that way GCC's "search starts here" text is in
-    # English and we can grok it.
-    set(_orig_lc_all      $ENV{LC_ALL})
-    set(_orig_lc_messages $ENV{LC_MESSAGES})
-    set(_orig_lang        $ENV{LANG})
-    set(ENV{LC_ALL}      C)
-    set(ENV{LC_MESSAGES} C)
-    set(ENV{LANG}        C)
-
-    try_compile(CMAKE_${lang}_ABI_COMPILED
-      ${CMAKE_BINARY_DIR} ${src}
-      CMAKE_FLAGS ${CMAKE_FLAGS}
-                  # Ignore unused flags when we are just determining the ABI.
-                  "--no-warn-unused-cli"
-      COMPILE_DEFINITIONS ${COMPILE_DEFINITIONS}
-      OUTPUT_VARIABLE OUTPUT
-      COPY_FILE "${BIN}"
-      COPY_FILE_ERROR _copy_error
-      __CMAKE_INTERNAL ABI
-      )
-
-    # Restore original LC_ALL, LC_MESSAGES, and LANG
-    set(ENV{LC_ALL}      ${_orig_lc_all})
-    set(ENV{LC_MESSAGES} ${_orig_lc_messages})
-    set(ENV{LANG}        ${_orig_lang})
-
-    # Move result from cache to normal variable.
-    set(CMAKE_${lang}_ABI_COMPILED ${CMAKE_${lang}_ABI_COMPILED})
-    unset(CMAKE_${lang}_ABI_COMPILED CACHE)
-    if(CMAKE_${lang}_ABI_COMPILED AND _copy_error)
-      set(CMAKE_${lang}_ABI_COMPILED 0)
-    endif()
-    set(CMAKE_${lang}_ABI_COMPILED ${CMAKE_${lang}_ABI_COMPILED} PARENT_SCOPE)
-
-    # Load the resulting information strings.
-    if(CMAKE_${lang}_ABI_COMPILED)
-      message(CHECK_PASS "done")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Detecting ${lang} compiler ABI info compiled with the following output:\n${OUTPUT}\n\n")
-      file(STRINGS "${BIN}" ABI_STRINGS LIMIT_COUNT 2 REGEX "INFO:[A-Za-z0-9_]+\\[[^]]*\\]")
-      foreach(info ${ABI_STRINGS})
-        if("${info}" MATCHES "INFO:sizeof_dptr\\[0*([^]]*)\\]")
-          set(ABI_SIZEOF_DPTR "${CMAKE_MATCH_1}")
-        endif()
-        if("${info}" MATCHES "INFO:abi\\[([^]]*)\\]")
-          set(ABI_NAME "${CMAKE_MATCH_1}")
-        endif()
-      endforeach()
-
-      if(ABI_SIZEOF_DPTR)
-        set(CMAKE_${lang}_SIZEOF_DATA_PTR "${ABI_SIZEOF_DPTR}" PARENT_SCOPE)
-      elseif(CMAKE_${lang}_SIZEOF_DATA_PTR_DEFAULT)
-        set(CMAKE_${lang}_SIZEOF_DATA_PTR "${CMAKE_${lang}_SIZEOF_DATA_PTR_DEFAULT}" PARENT_SCOPE)
-      endif()
-
-      if(ABI_NAME)
-        set(CMAKE_${lang}_COMPILER_ABI "${ABI_NAME}" PARENT_SCOPE)
-      endif()
-
-      # Parse implicit include directory for this language, if available.
-      if(CMAKE_${lang}_VERBOSE_FLAG)
-        set (implicit_incdirs "")
-        cmake_parse_implicit_include_info("${OUTPUT}" "${lang}"
-          implicit_incdirs log rv)
-        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-          "Parsed ${lang} implicit include dir info from above output: rv=${rv}\n${log}\n\n")
-        if("${rv}" STREQUAL "done")
-          # Entries that we have been told to explicitly pass as standard include
-          # directories will not be implicitly added by the compiler.
-          if(CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES)
-            list(REMOVE_ITEM implicit_incdirs ${CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES})
-          endif()
-
-          # We parsed implicit include directories, so override the default initializer.
-          set(_CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT "${implicit_incdirs}")
-        endif()
-      endif()
-      set(CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES "${_CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT}" PARENT_SCOPE)
-
-      # Parse implicit linker information for this language, if available.
-      set(implicit_dirs "")
-      set(implicit_libs "")
-      set(implicit_fwks "")
-      if(CMAKE_${lang}_VERBOSE_FLAG)
-        CMAKE_PARSE_IMPLICIT_LINK_INFO("${OUTPUT}" implicit_libs implicit_dirs implicit_fwks log
-          "${CMAKE_${lang}_IMPLICIT_OBJECT_REGEX}")
-        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-          "Parsed ${lang} implicit link information from above output:\n${log}\n\n")
-      endif()
-      # for VS IDE Intel Fortran we have to figure out the
-      # implicit link path for the fortran run time using
-      # a try-compile
-      if("${lang}" MATCHES "Fortran"
-          AND "${CMAKE_GENERATOR}" MATCHES "Visual Studio")
-        message(CHECK_START "Determine Intel Fortran Compiler Implicit Link Path")
-        # Build a sample project which reports symbols.
-        try_compile(IFORT_LIB_PATH_COMPILED
-          ${CMAKE_BINARY_DIR}/CMakeFiles/IntelVSImplicitPath
-          ${CMAKE_ROOT}/Modules/IntelVSImplicitPath
-          IntelFortranImplicit
-          CMAKE_FLAGS
-          "-DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS}"
-          OUTPUT_VARIABLE _output)
-        file(WRITE
-          "${CMAKE_BINARY_DIR}/CMakeFiles/IntelVSImplicitPath/output.txt"
-          "${_output}")
-        include(${CMAKE_BINARY_DIR}/CMakeFiles/IntelVSImplicitPath/output.cmake OPTIONAL)
-        message(CHECK_PASS "done")
-      endif()
-
-      # Implicit link libraries cannot be used explicitly for multiple
-      # OS X architectures, so we skip it.
-      if(DEFINED CMAKE_OSX_ARCHITECTURES)
-        if("${CMAKE_OSX_ARCHITECTURES}" MATCHES ";")
-          set(implicit_libs "")
-        endif()
-      endif()
-
-      set(CMAKE_${lang}_IMPLICIT_LINK_LIBRARIES "${implicit_libs}" PARENT_SCOPE)
-      set(CMAKE_${lang}_IMPLICIT_LINK_DIRECTORIES "${implicit_dirs}" PARENT_SCOPE)
-      set(CMAKE_${lang}_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "${implicit_fwks}" PARENT_SCOPE)
-
-      # Detect library architecture directory name.
-      if(CMAKE_LIBRARY_ARCHITECTURE_REGEX)
-        foreach(dir ${implicit_dirs})
-          if("${dir}" MATCHES "/lib/${CMAKE_LIBRARY_ARCHITECTURE_REGEX}$")
-            get_filename_component(arch "${dir}" NAME)
-            set(CMAKE_${lang}_LIBRARY_ARCHITECTURE "${arch}" PARENT_SCOPE)
-            break()
-          endif()
-        endforeach()
-      elseif(CMAKE_CXX_COMPILER_ID STREQUAL QCC)
-        foreach(dir ${implicit_dirs})
-          if (dir MATCHES "/lib$")
-            get_filename_component(assumedArchDir "${dir}" DIRECTORY)
-            get_filename_component(archParentDir "${assumedArchDir}" DIRECTORY)
-            if (archParentDir STREQUAL CMAKE_SYSROOT)
-              get_filename_component(archDirName "${assumedArchDir}" NAME)
-              set(CMAKE_${lang}_LIBRARY_ARCHITECTURE "${archDirName}" PARENT_SCOPE)
-              break()
-            endif()
-          endif()
-        endforeach()
-      endif()
-
-    else()
-      message(CHECK_FAIL "failed")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Detecting ${lang} compiler ABI info failed to compile with the following output:\n${OUTPUT}\n${_copy_error}\n\n")
-    endif()
-  endif()
-endfunction()
diff --git a/share/cmake-3.18/Modules/CMakeDetermineCompilerId.cmake b/share/cmake-3.18/Modules/CMakeDetermineCompilerId.cmake
deleted file mode 100644
index 44332a6..0000000
--- a/share/cmake-3.18/Modules/CMakeDetermineCompilerId.cmake
+++ /dev/null
@@ -1,956 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# Function to compile a source file to identify the compiler.  This is
-# used internally by CMake and should not be included by user code.
-# If successful, sets CMAKE_<lang>_COMPILER_ID and CMAKE_<lang>_PLATFORM_ID
-
-function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src)
-  # Make sure the compiler arguments are clean.
-  string(STRIP "${CMAKE_${lang}_COMPILER_ARG1}" CMAKE_${lang}_COMPILER_ID_ARG1)
-  string(REGEX REPLACE " +" ";" CMAKE_${lang}_COMPILER_ID_ARG1 "${CMAKE_${lang}_COMPILER_ID_ARG1}")
-
-  # Make sure user-specified compiler flags are used.
-  if(CMAKE_${lang}_FLAGS)
-    set(CMAKE_${lang}_COMPILER_ID_FLAGS ${CMAKE_${lang}_FLAGS})
-  else()
-    set(CMAKE_${lang}_COMPILER_ID_FLAGS $ENV{${flagvar}})
-  endif()
-  string(REPLACE " " ";" CMAKE_${lang}_COMPILER_ID_FLAGS_LIST "${CMAKE_${lang}_COMPILER_ID_FLAGS}")
-
-  # Compute the directory in which to run the test.
-  set(CMAKE_${lang}_COMPILER_ID_DIR ${CMAKE_PLATFORM_INFO_DIR}/CompilerId${lang})
-
-  # Try building with no extra flags and then try each set
-  # of helper flags.  Stop when the compiler is identified.
-  foreach(userflags "${CMAKE_${lang}_COMPILER_ID_FLAGS_LIST}" "")
-    foreach(testflags ${CMAKE_${lang}_COMPILER_ID_TEST_FLAGS_FIRST}
-                      ""
-                      ${CMAKE_${lang}_COMPILER_ID_TEST_FLAGS})
-      separate_arguments(testflags UNIX_COMMAND "${testflags}")
-      CMAKE_DETERMINE_COMPILER_ID_BUILD("${lang}" "${testflags}" "${userflags}" "${src}")
-      CMAKE_DETERMINE_COMPILER_ID_MATCH_VENDOR("${lang}" "${COMPILER_${lang}_PRODUCED_OUTPUT}")
-      if(CMAKE_${lang}_COMPILER_ID)
-        break()
-      endif()
-      foreach(file ${COMPILER_${lang}_PRODUCED_FILES})
-        CMAKE_DETERMINE_COMPILER_ID_CHECK("${lang}" "${CMAKE_${lang}_COMPILER_ID_DIR}/${file}" "${src}")
-      endforeach()
-      if(CMAKE_${lang}_COMPILER_ID)
-        break()
-      endif()
-    endforeach()
-    if(CMAKE_${lang}_COMPILER_ID)
-      break()
-    endif()
-  endforeach()
-
-  # Check if compiler id detection gave us the compiler tool.
-  if(CMAKE_${lang}_COMPILER_ID_TOOL)
-    set(CMAKE_${lang}_COMPILER "${CMAKE_${lang}_COMPILER_ID_TOOL}")
-    set(CMAKE_${lang}_COMPILER "${CMAKE_${lang}_COMPILER_ID_TOOL}" PARENT_SCOPE)
-  elseif(NOT CMAKE_${lang}_COMPILER)
-    set(CMAKE_${lang}_COMPILER "CMAKE_${lang}_COMPILER-NOTFOUND" PARENT_SCOPE)
-  endif()
-
-  # If the compiler is still unknown, try to query its vendor.
-  if(CMAKE_${lang}_COMPILER AND NOT CMAKE_${lang}_COMPILER_ID)
-    foreach(userflags "${CMAKE_${lang}_COMPILER_ID_FLAGS_LIST}" "")
-      CMAKE_DETERMINE_COMPILER_ID_VENDOR(${lang} "${userflags}")
-    endforeach()
-  endif()
-
-  # If the compiler is still unknown, fallback to GHS
-  if(NOT CMAKE_${lang}_COMPILER_ID  AND "${CMAKE_GENERATOR}" MATCHES "Green Hills MULTI")
-    set(CMAKE_${lang}_COMPILER_ID GHS)
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "The ${lang} compiler identification is falling back to GHS.\n\n")
-  endif()
-
-  # CUDA < 7.5 is missing version macros
-  if(lang STREQUAL "CUDA"
-     AND CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
-     AND NOT CMAKE_${lang}_COMPILER_VERSION)
-    execute_process(
-      COMMAND "${CMAKE_${lang}_COMPILER}"
-      --version
-      OUTPUT_VARIABLE output ERROR_VARIABLE output
-      RESULT_VARIABLE result
-      TIMEOUT 10
-    )
-    if(output MATCHES [=[ V([0-9]+)\.([0-9]+)\.([0-9]+)]=])
-      set(CMAKE_${lang}_COMPILER_VERSION "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}")
-    endif()
-  endif()
-
-  # For Swift we need to explicitly query the version.
-  if(lang STREQUAL "Swift"
-     AND CMAKE_${lang}_COMPILER
-     AND NOT CMAKE_${lang}_COMPILER_VERSION)
-    execute_process(
-      COMMAND "${CMAKE_${lang}_COMPILER}"
-      -version
-      OUTPUT_VARIABLE output ERROR_VARIABLE output
-      RESULT_VARIABLE result
-      TIMEOUT 10
-    )
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-      "Running the ${lang} compiler: \"${CMAKE_${lang}_COMPILER}\" -version\n"
-      "${output}\n"
-      )
-
-    if(output MATCHES [[Swift version ([0-9]+\.[0-9]+(\.[0-9]+)?)]])
-      set(CMAKE_${lang}_COMPILER_VERSION "${CMAKE_MATCH_1}")
-      if(NOT CMAKE_${lang}_COMPILER_ID)
-        set(CMAKE_Swift_COMPILER_ID "Apple")
-      endif()
-    endif()
-  endif()
-
-  if (COMPILER_QNXNTO AND CMAKE_${lang}_COMPILER_ID STREQUAL "GNU")
-    execute_process(
-      COMMAND "${CMAKE_${lang}_COMPILER}"
-      -V
-      OUTPUT_VARIABLE output ERROR_VARIABLE output
-      RESULT_VARIABLE result
-      TIMEOUT 10
-      )
-    if (output MATCHES "targets available")
-      set(CMAKE_${lang}_COMPILER_ID QCC)
-      # http://community.qnx.com/sf/discussion/do/listPosts/projects.community/discussion.qnx_momentics_community_support.topc3555?_pagenum=2
-      # The qcc driver does not itself have a version.
-    endif()
-  endif()
-
-  # if the format is unknown after all files have been checked, put "Unknown" in the cache
-  if(NOT CMAKE_EXECUTABLE_FORMAT)
-    set(CMAKE_EXECUTABLE_FORMAT "Unknown" CACHE INTERNAL "Executable file format")
-  endif()
-
-  if(CMAKE_GENERATOR MATCHES "^Ninja" AND MSVC_${lang}_ARCHITECTURE_ID)
-    foreach(userflags "${CMAKE_${lang}_COMPILER_ID_FLAGS_LIST}" "")
-      CMAKE_DETERMINE_MSVC_SHOWINCLUDES_PREFIX(${lang} "${userflags}")
-    endforeach()
-  else()
-    set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "")
-  endif()
-
-  set(_variant "")
-  if("x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xClang")
-    if("x${CMAKE_${lang}_SIMULATE_ID}" STREQUAL "xMSVC")
-      if(CMAKE_GENERATOR MATCHES "Visual Studio")
-        set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "MSVC")
-      else()
-        # Test whether an MSVC-like command-line option works.
-        execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" -?
-          RESULT_VARIABLE _clang_result
-          OUTPUT_VARIABLE _clang_stdout
-          ERROR_VARIABLE _clang_stderr)
-        if(_clang_result EQUAL 0)
-          set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "MSVC")
-        else()
-          set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "GNU")
-        endif()
-      endif()
-      set(_variant " with ${CMAKE_${lang}_COMPILER_FRONTEND_VARIANT}-like command-line")
-    else()
-      set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "GNU")
-    endif()
-  else()
-    set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "")
-  endif()
-
-  # Display the final identification result.
-  if(CMAKE_${lang}_COMPILER_ID)
-    if(CMAKE_${lang}_COMPILER_VERSION)
-      set(_version " ${CMAKE_${lang}_COMPILER_VERSION}")
-    else()
-      set(_version "")
-    endif()
-    if(CMAKE_${lang}_COMPILER_ARCHITECTURE_ID AND "x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xIAR")
-      set(_archid " ${CMAKE_${lang}_COMPILER_ARCHITECTURE_ID}")
-    else()
-      set(_archid "")
-    endif()
-    message(STATUS "The ${lang} compiler identification is "
-      "${CMAKE_${lang}_COMPILER_ID}${_archid}${_version}${_variant}")
-    unset(_archid)
-    unset(_version)
-    unset(_variant)
-  else()
-    message(STATUS "The ${lang} compiler identification is unknown")
-  endif()
-
-  if(lang STREQUAL "Fortran" AND CMAKE_${lang}_COMPILER_ID STREQUAL "XL")
-    set(CMAKE_${lang}_XL_CPP "${CMAKE_${lang}_COMPILER_ID_CPP}" PARENT_SCOPE)
-  endif()
-
-  set(CMAKE_${lang}_COMPILER_ID "${CMAKE_${lang}_COMPILER_ID}" PARENT_SCOPE)
-  set(CMAKE_${lang}_PLATFORM_ID "${CMAKE_${lang}_PLATFORM_ID}" PARENT_SCOPE)
-  set(CMAKE_${lang}_COMPILER_ARCHITECTURE_ID "${CMAKE_${lang}_COMPILER_ARCHITECTURE_ID}" PARENT_SCOPE)
-  set(MSVC_${lang}_ARCHITECTURE_ID "${MSVC_${lang}_ARCHITECTURE_ID}"
-    PARENT_SCOPE)
-  set(CMAKE_${lang}_XCODE_ARCHS "${CMAKE_${lang}_XCODE_ARCHS}" PARENT_SCOPE)
-  set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "${CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX}" PARENT_SCOPE)
-  set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "${CMAKE_${lang}_COMPILER_FRONTEND_VARIANT}" PARENT_SCOPE)
-  set(CMAKE_${lang}_COMPILER_VERSION "${CMAKE_${lang}_COMPILER_VERSION}" PARENT_SCOPE)
-  set(CMAKE_${lang}_COMPILER_VERSION_INTERNAL "${CMAKE_${lang}_COMPILER_VERSION_INTERNAL}" PARENT_SCOPE)
-  set(CMAKE_${lang}_COMPILER_WRAPPER "${CMAKE_${lang}_COMPILER_WRAPPER}" PARENT_SCOPE)
-  set(CMAKE_${lang}_SIMULATE_ID "${CMAKE_${lang}_SIMULATE_ID}" PARENT_SCOPE)
-  set(CMAKE_${lang}_SIMULATE_VERSION "${CMAKE_${lang}_SIMULATE_VERSION}" PARENT_SCOPE)
-  set(CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT "${CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT}" PARENT_SCOPE)
-  set(CMAKE_${lang}_COMPILER_PRODUCED_OUTPUT "${COMPILER_${lang}_PRODUCED_OUTPUT}" PARENT_SCOPE)
-  set(CMAKE_${lang}_COMPILER_PRODUCED_FILES "${COMPILER_${lang}_PRODUCED_FILES}" PARENT_SCOPE)
-endfunction()
-
-include(CMakeCompilerIdDetection)
-
-#-----------------------------------------------------------------------------
-# Function to write the compiler id source file.
-function(CMAKE_DETERMINE_COMPILER_ID_WRITE lang src)
-  find_file(src_in ${src}.in PATHS ${CMAKE_ROOT}/Modules ${CMAKE_MODULE_PATH} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
-  file(READ ${src_in} ID_CONTENT_IN)
-
-  compiler_id_detection(CMAKE_${lang}_COMPILER_ID_CONTENT ${lang}
-    ID_STRING
-    VERSION_STRINGS
-    PLATFORM_DEFAULT_COMPILER
-  )
-
-  unset(src_in CACHE)
-  string(CONFIGURE "${ID_CONTENT_IN}" ID_CONTENT_OUT @ONLY)
-  file(WRITE ${CMAKE_${lang}_COMPILER_ID_DIR}/${src} "${ID_CONTENT_OUT}")
-endfunction()
-
-#-----------------------------------------------------------------------------
-# Function to build the compiler id source file and look for output
-# files.
-function(CMAKE_DETERMINE_COMPILER_ID_BUILD lang testflags userflags src)
-  # Create a clean working directory.
-  file(REMOVE_RECURSE ${CMAKE_${lang}_COMPILER_ID_DIR})
-  file(MAKE_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR})
-  file(MAKE_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR}/tmp)
-  CMAKE_DETERMINE_COMPILER_ID_WRITE("${lang}" "${src}")
-
-  # Construct a description of this test case.
-  set(COMPILER_DESCRIPTION
-    "Compiler: ${CMAKE_${lang}_COMPILER} ${CMAKE_${lang}_COMPILER_ID_ARG1}
-Build flags: ${userflags}
-Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS}
-")
-
-  # Compile the compiler identification source.
-  if("${CMAKE_GENERATOR}" MATCHES "Visual Studio ([0-9]+)")
-    set(vs_version ${CMAKE_MATCH_1})
-    set(id_platform ${CMAKE_VS_PLATFORM_NAME})
-    set(id_lang "${lang}")
-    set(id_PostBuildEvent_Command "")
-    if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "^[Ll][Ll][Vv][Mm](_v[0-9]+(_xp)?)?$")
-      set(id_cl_var "ClangClExecutable")
-    elseif(CMAKE_VS_PLATFORM_TOOLSET MATCHES "^[Cc][Ll][Aa][Nn][Gg][Cc][Ll]$")
-      set(id_cl "$(CLToolExe)")
-    elseif(CMAKE_VS_PLATFORM_TOOLSET MATCHES "v[0-9]+_clang_.*")
-      set(id_cl clang.exe)
-    else()
-      set(id_cl cl.exe)
-    endif()
-    if(CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android")
-      set(v NsightTegra)
-      set(ext vcxproj)
-      if(lang STREQUAL CXX)
-        set(id_gcc g++)
-        set(id_clang clang++)
-      else()
-        set(id_gcc gcc)
-        set(id_clang clang)
-      endif()
-    elseif(lang STREQUAL Fortran)
-      set(v Intel)
-      set(ext vfproj)
-      set(id_cl ifort.exe)
-    elseif(lang STREQUAL CSharp)
-      set(v 10)
-      set(ext csproj)
-      set(id_cl csc.exe)
-    elseif(NOT "${vs_version}" VERSION_LESS 10)
-      set(v 10)
-      set(ext vcxproj)
-    else()
-      set(id_version ${vs_version}.00)
-      set(v 7)
-      set(ext vcproj)
-    endif()
-    if(CMAKE_VS_PLATFORM_TOOLSET)
-      if(CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android")
-        set(id_toolset "<NdkToolchainVersion>${CMAKE_VS_PLATFORM_TOOLSET}</NdkToolchainVersion>")
-      else()
-        set(id_toolset "<PlatformToolset>${CMAKE_VS_PLATFORM_TOOLSET}</PlatformToolset>")
-        if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "Intel")
-          set(id_cl icl.exe)
-        endif()
-        if(CMAKE_VS_PLATFORM_TOOLSET_VERSION)
-          set(id_sep "\\")
-          if(CMAKE_VS_PLATFORM_TOOLSET_VERSION VERSION_GREATER_EQUAL "14.20")
-            if(EXISTS "${CMAKE_GENERATOR_INSTANCE}/VC/Auxiliary/Build.${CMAKE_VS_PLATFORM_TOOLSET_VERSION}/Microsoft.VCToolsVersion.${CMAKE_VS_PLATFORM_TOOLSET_VERSION}.props")
-              set(id_sep ".")
-            endif()
-          endif()
-          set(id_toolset_version_props "<Import Project=\"${CMAKE_GENERATOR_INSTANCE}\\VC\\Auxiliary\\Build${id_sep}${CMAKE_VS_PLATFORM_TOOLSET_VERSION}\\Microsoft.VCToolsVersion.${CMAKE_VS_PLATFORM_TOOLSET_VERSION}.props\" />")
-          unset(id_sep)
-        endif()
-      endif()
-    else()
-      set(id_toolset "")
-      set(id_toolset_version_props "")
-    endif()
-    if(CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE)
-      set(id_PreferredToolArchitecture "<PreferredToolArchitecture>${CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE}</PreferredToolArchitecture>")
-    else()
-      set(id_PreferredToolArchitecture "")
-    endif()
-    if(CMAKE_SYSTEM_NAME STREQUAL "WindowsPhone")
-      set(id_system "<ApplicationType>Windows Phone</ApplicationType>")
-    elseif(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
-      set(id_system "<ApplicationType>Windows Store</ApplicationType>")
-    else()
-      set(id_system "")
-    endif()
-    if(id_system AND CMAKE_SYSTEM_VERSION MATCHES "^([0-9]+\\.[0-9]+)")
-      set(id_system_version "<ApplicationTypeRevision>${CMAKE_MATCH_1}</ApplicationTypeRevision>")
-    else()
-      set(id_system_version "")
-    endif()
-    if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION)
-      set(id_WindowsTargetPlatformVersion "<WindowsTargetPlatformVersion>${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}</WindowsTargetPlatformVersion>")
-    endif()
-    if(CMAKE_VS_PLATFORM_TOOLSET_VCTARGETS_CUSTOM_DIR)
-      set(id_ToolsetVCTargetsDir "<VCTargetsPath>${CMAKE_VS_PLATFORM_TOOLSET_VCTARGETS_CUSTOM_DIR}</VCTargetsPath>")
-    endif()
-    set(id_CustomGlobals "")
-    foreach(pair IN LISTS CMAKE_VS_GLOBALS)
-      if("${pair}" MATCHES "([^=]+)=(.*)$")
-        string(APPEND id_CustomGlobals "<${CMAKE_MATCH_1}>${CMAKE_MATCH_2}</${CMAKE_MATCH_1}>\n    ")
-      endif()
-    endforeach()
-    if(id_platform STREQUAL ARM64)
-      set(id_WindowsSDKDesktopARMSupport "<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>")
-    elseif(id_platform STREQUAL ARM)
-      set(id_WindowsSDKDesktopARMSupport "<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>")
-    else()
-      set(id_WindowsSDKDesktopARMSupport "")
-    endif()
-    if(CMAKE_VS_WINCE_VERSION)
-      set(id_entrypoint "mainACRTStartup")
-      if("${vs_version}" VERSION_LESS 9)
-        set(id_subsystem 9)
-      else()
-        set(id_subsystem 8)
-      endif()
-    else()
-      set(id_subsystem 1)
-    endif()
-    set(id_dir ${CMAKE_${lang}_COMPILER_ID_DIR})
-    set(id_src "${src}")
-    set(id_compile "ClCompile")
-    if(id_cl_var)
-      set(id_PostBuildEvent_Command "echo CMAKE_${lang}_COMPILER=$(${id_cl_var})")
-    else()
-      set(id_PostBuildEvent_Command "for %%i in (${id_cl}) do %40echo CMAKE_${lang}_COMPILER=%%~$PATH:i")
-    endif()
-    set(id_Import_props "")
-    set(id_Import_targets "")
-    set(id_ItemDefinitionGroup_entry "")
-    set(id_Link_AdditionalDependencies "")
-    if(lang STREQUAL CUDA)
-      if(NOT CMAKE_VS_PLATFORM_TOOLSET_CUDA)
-        message(FATAL_ERROR "No CUDA toolset found.")
-      endif()
-      set(cuda_tools "CUDA ${CMAKE_VS_PLATFORM_TOOLSET_CUDA}")
-      set(id_compile "CudaCompile")
-      set(id_ItemDefinitionGroup_entry "<CudaCompile><AdditionalOptions>%(AdditionalOptions)-v</AdditionalOptions></CudaCompile>")
-      set(id_PostBuildEvent_Command [[echo CMAKE_CUDA_COMPILER=$(CudaToolkitBinDir)\nvcc.exe]])
-      if(CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR)
-        set(id_CudaToolkitCustomDir "<CudaToolkitCustomDir>${CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR}nvcc</CudaToolkitCustomDir>")
-        string(CONCAT id_Import_props "<Import Project=\"${CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR}\\CUDAVisualStudioIntegration\\extras\\visual_studio_integration\\MSBuildExtensions\\${cuda_tools}.props\" />")
-        string(CONCAT id_Import_targets "<Import Project=\"${CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR}\\CUDAVisualStudioIntegration\\extras\\visual_studio_integration\\MSBuildExtensions\\${cuda_tools}.targets\" />")
-      else()
-        string(CONCAT id_Import_props [[<Import Project="$(VCTargetsPath)\BuildCustomizations\]] "${cuda_tools}" [[.props" />]])
-        string(CONCAT id_Import_targets [[<Import Project="$(VCTargetsPath)\BuildCustomizations\]] "${cuda_tools}" [[.targets" />]])
-      endif()
-      if(CMAKE_VS_PLATFORM_NAME STREQUAL x64)
-        set(id_ItemDefinitionGroup_entry "<CudaCompile><TargetMachinePlatform>64</TargetMachinePlatform><AdditionalOptions>%(AdditionalOptions)-v</AdditionalOptions></CudaCompile>")
-      endif()
-      if(CMAKE_CUDA_FLAGS MATCHES "(^| )-cudart +shared( |$)")
-        set(id_Link_AdditionalDependencies "<AdditionalDependencies>cudart.lib</AdditionalDependencies>")
-      else()
-        set(id_Link_AdditionalDependencies "<AdditionalDependencies>cudart_static.lib</AdditionalDependencies>")
-      endif()
-    endif()
-    configure_file(${CMAKE_ROOT}/Modules/CompilerId/VS-${v}.${ext}.in
-      ${id_dir}/CompilerId${lang}.${ext} @ONLY)
-    if(CMAKE_VS_MSBUILD_COMMAND AND NOT lang STREQUAL "Fortran")
-      set(command "${CMAKE_VS_MSBUILD_COMMAND}" "CompilerId${lang}.${ext}"
-        "/p:Configuration=Debug" "/p:Platform=${id_platform}" "/p:VisualStudioVersion=${vs_version}.0"
-        )
-    elseif(CMAKE_VS_DEVENV_COMMAND)
-      set(command "${CMAKE_VS_DEVENV_COMMAND}" "CompilerId${lang}.${ext}" "/build" "Debug")
-    else()
-      set(command "")
-    endif()
-    if(command)
-      execute_process(
-        COMMAND ${command}
-        WORKING_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR}
-        OUTPUT_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
-        ERROR_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
-        RESULT_VARIABLE CMAKE_${lang}_COMPILER_ID_RESULT
-        )
-    else()
-      set(CMAKE_${lang}_COMPILER_ID_RESULT 1)
-      set(CMAKE_${lang}_COMPILER_ID_OUTPUT "VS environment not known to support ${lang}")
-    endif()
-    # Match the compiler location line printed out.
-    if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "CMAKE_${lang}_COMPILER=([^%\r\n]+)[\r\n]")
-      # Strip VS diagnostic output from the end of the line.
-      string(REGEX REPLACE " \\(TaskId:[0-9]*\\)$" "" _comp "${CMAKE_MATCH_1}")
-      if(EXISTS "${_comp}")
-        file(TO_CMAKE_PATH "${_comp}" _comp)
-        set(CMAKE_${lang}_COMPILER_ID_TOOL "${_comp}" PARENT_SCOPE)
-      endif()
-    endif()
-  elseif("${CMAKE_GENERATOR}" MATCHES "Xcode")
-    set(id_lang "${lang}")
-    set(id_type ${CMAKE_${lang}_COMPILER_XCODE_TYPE})
-    set(id_dir ${CMAKE_${lang}_COMPILER_ID_DIR})
-    set(id_src "${src}")
-    if(CMAKE_XCODE_PLATFORM_TOOLSET)
-      set(id_toolset "GCC_VERSION = ${CMAKE_XCODE_PLATFORM_TOOLSET};")
-    else()
-      set(id_toolset "")
-    endif()
-    if("${lang}" STREQUAL "Swift")
-      if(CMAKE_Swift_LANGUAGE_VERSION)
-        set(id_lang_version "SWIFT_VERSION = ${CMAKE_Swift_LANGUAGE_VERSION};")
-      elseif(XCODE_VERSION VERSION_GREATER_EQUAL 10.2)
-        set(id_lang_version "SWIFT_VERSION = 4.0;")
-      elseif(XCODE_VERSION VERSION_GREATER_EQUAL 8.3)
-        set(id_lang_version "SWIFT_VERSION = 3.0;")
-      else()
-        set(id_lang_version "SWIFT_VERSION = 2.3;")
-      endif()
-    else()
-      set(id_lang_version "")
-    endif()
-    if(CMAKE_OSX_DEPLOYMENT_TARGET)
-      set(id_deployment_target
-        "MACOSX_DEPLOYMENT_TARGET = \"${CMAKE_OSX_DEPLOYMENT_TARGET}\";")
-    else()
-      set(id_deployment_target "")
-    endif()
-    set(id_product_type "com.apple.product-type.tool")
-    if(CMAKE_OSX_SYSROOT)
-      set(id_sdkroot "SDKROOT = \"${CMAKE_OSX_SYSROOT}\";")
-      if(CMAKE_OSX_SYSROOT MATCHES "(^|/)[Ii][Pp][Hh][Oo][Nn][Ee]" OR
-        CMAKE_OSX_SYSROOT MATCHES "(^|/)[Aa][Pp][Pp][Ll][Ee][Tt][Vv]")
-        set(id_product_type "com.apple.product-type.bundle.unit-test")
-      elseif(CMAKE_OSX_SYSROOT MATCHES "(^|/)[Ww][Aa][Tt][Cc][Hh]")
-        set(id_product_type "com.apple.product-type.framework")
-      endif()
-    else()
-      set(id_sdkroot "")
-    endif()
-    set(id_clang_cxx_library "")
-    set(stdlib_regex "(^| )(-stdlib=)([^ ]+)( |$)")
-    string(REGEX MATCHALL "${stdlib_regex}" all_stdlib_matches "${CMAKE_CXX_FLAGS}")
-    if(all_stdlib_matches)
-      list(GET all_stdlib_matches "-1" last_stdlib_match)
-      if(last_stdlib_match MATCHES "${stdlib_regex}")
-        set(id_clang_cxx_library "CLANG_CXX_LIBRARY = \"${CMAKE_MATCH_3}\";")
-      endif()
-    endif()
-    if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_OSX_SYSROOT MATCHES "^$|[Mm][Aa][Cc][Oo][Ss]")
-      # When targeting macOS, use only the host architecture.
-      set(id_archs [[ARCHS = "$(NATIVE_ARCH_ACTUAL)";]])
-    else()
-      set(id_archs "")
-    endif()
-    configure_file(${CMAKE_ROOT}/Modules/CompilerId/Xcode-3.pbxproj.in
-      ${id_dir}/CompilerId${lang}.xcodeproj/project.pbxproj @ONLY)
-    unset(_ENV_MACOSX_DEPLOYMENT_TARGET)
-    if(DEFINED ENV{MACOSX_DEPLOYMENT_TARGET})
-      set(_ENV_MACOSX_DEPLOYMENT_TARGET "$ENV{MACOSX_DEPLOYMENT_TARGET}")
-      set(ENV{MACOSX_DEPLOYMENT_TARGET} "")
-    endif()
-    execute_process(COMMAND xcodebuild
-      WORKING_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR}
-      OUTPUT_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
-      ERROR_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
-      RESULT_VARIABLE CMAKE_${lang}_COMPILER_ID_RESULT
-      )
-    if(DEFINED _ENV_MACOSX_DEPLOYMENT_TARGET)
-      set(ENV{MACOSX_DEPLOYMENT_TARGET} "${_ENV_MACOSX_DEPLOYMENT_TARGET}")
-    endif()
-
-    if(DEFINED CMAKE_${lang}_COMPILER_ID_TOOL_MATCH_REGEX)
-      if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "${CMAKE_${lang}_COMPILER_ID_TOOL_MATCH_REGEX}")
-        set(_comp "${CMAKE_MATCH_${CMAKE_${lang}_COMPILER_ID_TOOL_MATCH_INDEX}}")
-        if(EXISTS "${_comp}")
-          set(CMAKE_${lang}_COMPILER_ID_TOOL "${_comp}" PARENT_SCOPE)
-        endif()
-      endif()
-    endif()
-    if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "ARCHS=([^%\r\n]+)[\r\n]")
-      set(CMAKE_${lang}_XCODE_ARCHS "${CMAKE_MATCH_1}")
-      separate_arguments(CMAKE_${lang}_XCODE_ARCHS)
-      set(CMAKE_${lang}_XCODE_ARCHS "${CMAKE_${lang}_XCODE_ARCHS}" PARENT_SCOPE)
-    endif()
-  elseif("${CMAKE_GENERATOR}" MATCHES "Green Hills MULTI")
-    set(id_dir ${CMAKE_${lang}_COMPILER_ID_DIR})
-    set(id_src "${src}")
-    if (GHS_PRIMARY_TARGET)
-      set(ghs_primary_target "${GHS_PRIMARY_TARGET}")
-    else()
-      set(ghs_primary_target "${CMAKE_GENERATOR_PLATFORM}_${GHS_TARGET_PLATFORM}.tgt")
-    endif()
-    if ("${GHS_TARGET_PLATFORM}" MATCHES "integrity")
-        set(bsp_name "macro GHS_BSP=${GHS_BSP_NAME}")
-        set(os_dir "macro GHS_OS=${GHS_OS_DIR}")
-    endif()
-    set(command "${CMAKE_MAKE_PROGRAM}" "-commands" "-top" "GHS_default.gpj")
-    configure_file(${CMAKE_ROOT}/Modules/CompilerId/GHS_default.gpj.in
-      ${id_dir}/GHS_default.gpj @ONLY)
-    configure_file(${CMAKE_ROOT}/Modules/CompilerId/GHS_lib.gpj.in
-      ${id_dir}/GHS_lib.gpj @ONLY)
-    execute_process(COMMAND ${command}
-      WORKING_DIRECTORY ${id_dir}
-      OUTPUT_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
-      ERROR_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
-      RESULT_VARIABLE CMAKE_${lang}_COMPILER_ID_RESULT
-      )
-    # Match the compiler location line printed out.
-    set(ghs_toolpath "${CMAKE_MAKE_PROGRAM}")
-    if(CMAKE_HOST_UNIX)
-      string(REPLACE "/gbuild" "/" ghs_toolpath ${ghs_toolpath})
-    else()
-      string(REPLACE "/gbuild.exe" "/" ghs_toolpath ${ghs_toolpath})
-      string(REPLACE / "\\\\" ghs_toolpath ${ghs_toolpath})
-    endif()
-    if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "(${ghs_toolpath}[^ ]*)")
-      if(CMAKE_HOST_UNIX)
-        set(_comp "${CMAKE_MATCH_1}")
-      else()
-        set(_comp "${CMAKE_MATCH_1}.exe")
-      endif()
-      if(EXISTS "${_comp}")
-        file(TO_CMAKE_PATH "${_comp}" _comp)
-        set(CMAKE_${lang}_COMPILER_ID_TOOL "${_comp}" PARENT_SCOPE)
-      endif()
-    endif()
-  else()
-    execute_process(
-      COMMAND "${CMAKE_${lang}_COMPILER}"
-              ${CMAKE_${lang}_COMPILER_ID_ARG1}
-              ${userflags}
-              ${testflags}
-              ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS}
-              "${src}"
-      WORKING_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR}
-      OUTPUT_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
-      ERROR_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
-      RESULT_VARIABLE CMAKE_${lang}_COMPILER_ID_RESULT
-      )
-    if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "exec: [^\n]*\\((/[^,\n]*/cpp),CMakeFortranCompilerId.F")
-      set(_cpp "${CMAKE_MATCH_1}")
-      if(EXISTS "${_cpp}")
-        set(CMAKE_${lang}_COMPILER_ID_CPP "${_cpp}" PARENT_SCOPE)
-      endif()
-    endif()
-  endif()
-
-  # Check the result of compilation.
-  if(CMAKE_${lang}_COMPILER_ID_RESULT
-     # Intel Fortran warns and ignores preprocessor lines without /fpp
-     OR CMAKE_${lang}_COMPILER_ID_OUTPUT MATCHES "Bad # preprocessor line"
-     )
-    # Compilation failed.
-    set(MSG
-      "Compiling the ${lang} compiler identification source file \"${src}\" failed.
-${COMPILER_DESCRIPTION}
-The output was:
-${CMAKE_${lang}_COMPILER_ID_RESULT}
-${CMAKE_${lang}_COMPILER_ID_OUTPUT}
-
-")
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "${MSG}")
-    #if(NOT CMAKE_${lang}_COMPILER_ID_ALLOW_FAIL)
-    #  message(FATAL_ERROR "${MSG}")
-    #endif()
-
-    # No output files should be inspected.
-    set(COMPILER_${lang}_PRODUCED_FILES)
-    set(COMPILER_${lang}_PRODUCED_OUTPUT)
-  else()
-    # Compilation succeeded.
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-      "Compiling the ${lang} compiler identification source file \"${src}\" succeeded.
-${COMPILER_DESCRIPTION}
-The output was:
-${CMAKE_${lang}_COMPILER_ID_RESULT}
-${CMAKE_${lang}_COMPILER_ID_OUTPUT}
-
-")
-
-    # Find the executable produced by the compiler, try all files in the
-    # binary dir.
-    string(REGEX REPLACE "([][])" "[\\1]" _glob_id_dir "${CMAKE_${lang}_COMPILER_ID_DIR}")
-    file(GLOB files
-      RELATIVE ${CMAKE_${lang}_COMPILER_ID_DIR}
-
-      # normal case
-      ${_glob_id_dir}/*
-
-      # com.apple.package-type.bundle.unit-test
-      ${_glob_id_dir}/*.xctest/*
-
-      # com.apple.product-type.framework
-      ${_glob_id_dir}/*.framework/*
-      )
-    list(REMOVE_ITEM files "${src}")
-    set(COMPILER_${lang}_PRODUCED_FILES "")
-    foreach(file ${files})
-      if(NOT IS_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR}/${file})
-        list(APPEND COMPILER_${lang}_PRODUCED_FILES ${file})
-        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-          "Compilation of the ${lang} compiler identification source \""
-          "${src}\" produced \"${file}\"\n\n")
-      endif()
-    endforeach()
-
-    if(NOT COMPILER_${lang}_PRODUCED_FILES)
-      # No executable was found.
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Compilation of the ${lang} compiler identification source \""
-        "${src}\" did not produce an executable in \""
-        "${CMAKE_${lang}_COMPILER_ID_DIR}\".\n\n")
-    endif()
-
-    set(COMPILER_${lang}_PRODUCED_OUTPUT "${CMAKE_${lang}_COMPILER_ID_OUTPUT}")
-  endif()
-
-  # Return the files produced by the compilation.
-  set(COMPILER_${lang}_PRODUCED_FILES "${COMPILER_${lang}_PRODUCED_FILES}" PARENT_SCOPE)
-  set(COMPILER_${lang}_PRODUCED_OUTPUT "${COMPILER_${lang}_PRODUCED_OUTPUT}" PARENT_SCOPE)
-
-endfunction()
-
-#-----------------------------------------------------------------------------
-# Function to extract the compiler id from compiler output.
-function(CMAKE_DETERMINE_COMPILER_ID_MATCH_VENDOR lang output)
-  foreach(vendor ${CMAKE_${lang}_COMPILER_ID_MATCH_VENDORS})
-    if(output MATCHES "${CMAKE_${lang}_COMPILER_ID_MATCH_VENDOR_REGEX_${vendor}}")
-      set(CMAKE_${lang}_COMPILER_ID "${vendor}")
-    endif()
-  endforeach()
-  set(CMAKE_${lang}_COMPILER_ID "${CMAKE_${lang}_COMPILER_ID}" PARENT_SCOPE)
-endfunction()
-
-#-----------------------------------------------------------------------------
-# Function to extract the compiler id from an executable.
-function(CMAKE_DETERMINE_COMPILER_ID_CHECK lang file)
-  # Look for a compiler id if not yet known.
-  if(NOT CMAKE_${lang}_COMPILER_ID)
-    # Read the compiler identification string from the executable file.
-    set(COMPILER_ID)
-    set(COMPILER_VERSION)
-    set(COMPILER_VERSION_MAJOR 0)
-    set(COMPILER_VERSION_MINOR 0)
-    set(COMPILER_VERSION_PATCH 0)
-    set(COMPILER_VERSION_TWEAK 0)
-    set(COMPILER_VERSION_INTERNAL "")
-    set(HAVE_COMPILER_VERSION_MAJOR 0)
-    set(HAVE_COMPILER_VERSION_MINOR 0)
-    set(HAVE_COMPILER_VERSION_PATCH 0)
-    set(HAVE_COMPILER_VERSION_TWEAK 0)
-    set(COMPILER_WRAPPER)
-    set(DIGIT_VALUE_1 1)
-    set(DIGIT_VALUE_2 10)
-    set(DIGIT_VALUE_3 100)
-    set(DIGIT_VALUE_4 1000)
-    set(DIGIT_VALUE_5 10000)
-    set(DIGIT_VALUE_6 100000)
-    set(DIGIT_VALUE_7 1000000)
-    set(DIGIT_VALUE_8 10000000)
-    set(PLATFORM_ID)
-    set(ARCHITECTURE_ID)
-    set(SIMULATE_ID)
-    set(SIMULATE_VERSION)
-    foreach(encoding "" "ENCODING;UTF-16LE" "ENCODING;UTF-16BE")
-      file(STRINGS "${file}" CMAKE_${lang}_COMPILER_ID_STRINGS
-        LIMIT_COUNT 38 ${encoding}
-        REGEX ".?I.?N.?F.?O.?:.?[A-Za-z0-9_]+\\[[^]]*\\]")
-      if(NOT CMAKE_${lang}_COMPILER_ID_STRINGS STREQUAL "")
-        break()
-      endif()
-    endforeach()
-    set(COMPILER_ID_TWICE)
-    # With the IAR Compiler, some strings are found twice, first time as incomplete
-    # list like "?<Constant "INFO:compiler[IAR]">".  Remove the incomplete copies.
-    list(FILTER CMAKE_${lang}_COMPILER_ID_STRINGS EXCLUDE REGEX "\\?<Constant \\\"")
-    # In C# binaries, some strings are found more than once.
-    list(REMOVE_DUPLICATES CMAKE_${lang}_COMPILER_ID_STRINGS)
-    foreach(info ${CMAKE_${lang}_COMPILER_ID_STRINGS})
-      # The IAR-AVR compiler uses a binary format that places a '6'
-      # character (0x34) before each character in the string.  Strip
-      # out these characters without removing any legitamate characters.
-      if("${info}" MATCHES "(.)I.N.F.O.:.")
-        string(REGEX REPLACE "${CMAKE_MATCH_1}(.)" "\\1" info "${info}")
-      endif()
-      if("${info}" MATCHES "INFO:compiler\\[([^]\"]*)\\]")
-        if(COMPILER_ID)
-          set(COMPILER_ID_TWICE 1)
-        endif()
-        set(COMPILER_ID "${CMAKE_MATCH_1}")
-      endif()
-      if("${info}" MATCHES "INFO:platform\\[([^]\"]*)\\]")
-        set(PLATFORM_ID "${CMAKE_MATCH_1}")
-      endif()
-      if("${info}" MATCHES "INFO:arch\\[([^]\"]*)\\]")
-        set(ARCHITECTURE_ID "${CMAKE_MATCH_1}")
-      endif()
-      if("${info}" MATCHES "INFO:compiler_version\\[([^]\"]*)\\]")
-        string(REGEX REPLACE "^0+([0-9]+)" "\\1" COMPILER_VERSION "${CMAKE_MATCH_1}")
-        string(REGEX REPLACE "\\.0+([0-9])" ".\\1" COMPILER_VERSION "${COMPILER_VERSION}")
-      endif()
-      if("${info}" MATCHES "INFO:compiler_version_internal\\[([^]\"]*)\\]")
-        string(REGEX REPLACE "^0+([0-9])" "\\1" COMPILER_VERSION_INTERNAL "${CMAKE_MATCH_1}")
-        string(REGEX REPLACE "\\.0+([0-9])" ".\\1" COMPILER_VERSION_INTERNAL "${COMPILER_VERSION_INTERNAL}")
-      endif()
-      foreach(comp MAJOR MINOR PATCH TWEAK)
-        foreach(digit 1 2 3 4 5 6 7 8 9)
-          if("${info}" MATCHES "INFO:compiler_version_${comp}_digit_${digit}\\[([0-9])\\]")
-            set(value ${CMAKE_MATCH_1})
-            math(EXPR COMPILER_VERSION_${comp} "${COMPILER_VERSION_${comp}} + ${value} * ${DIGIT_VALUE_${digit}}")
-            set(HAVE_COMPILER_VERSION_${comp} 1)
-          endif()
-        endforeach()
-      endforeach()
-      if("${info}" MATCHES "INFO:compiler_wrapper\\[([^]\"]*)\\]")
-        set(COMPILER_WRAPPER "${CMAKE_MATCH_1}")
-      endif()
-      if("${info}" MATCHES "INFO:simulate\\[([^]\"]*)\\]")
-        set(SIMULATE_ID "${CMAKE_MATCH_1}")
-      endif()
-      if("${info}" MATCHES "INFO:simulate_version\\[([^]\"]*)\\]")
-        string(REGEX REPLACE "^0+([0-9])" "\\1" SIMULATE_VERSION "${CMAKE_MATCH_1}")
-        string(REGEX REPLACE "\\.0+([0-9])" ".\\1" SIMULATE_VERSION "${SIMULATE_VERSION}")
-      endif()
-      if("${info}" MATCHES "INFO:qnxnto\\[\\]")
-        set(COMPILER_QNXNTO 1)
-      endif()
-      if("${info}" MATCHES "INFO:dialect_default\\[([^]\"]*)\\]")
-        set(CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT "${CMAKE_MATCH_1}")
-      endif()
-    endforeach()
-
-    # Construct compiler version from components if needed.
-    if(NOT DEFINED COMPILER_VERSION AND HAVE_COMPILER_VERSION_MAJOR)
-      set(COMPILER_VERSION "${COMPILER_VERSION_MAJOR}")
-      if(HAVE_COMPILER_VERSION_MINOR)
-        string(APPEND COMPILER_VERSION ".${COMPILER_VERSION_MINOR}")
-        if(HAVE_COMPILER_VERSION_PATCH)
-          string(APPEND COMPILER_VERSION ".${COMPILER_VERSION_PATCH}")
-          if(HAVE_COMPILER_VERSION_TWEAK)
-            string(APPEND COMPILER_VERSION ".${COMPILER_VERSION_TWEAK}")
-          endif()
-        endif()
-      endif()
-    endif()
-
-    # Detect the exact architecture from the PE header.
-    if(WIN32)
-      # The offset to the PE signature is stored at 0x3c.
-      file(READ ${file} peoffsethex LIMIT 1 OFFSET 60 HEX)
-      if(NOT peoffsethex STREQUAL "")
-        string(SUBSTRING "${peoffsethex}" 0 1 peoffsethex1)
-        string(SUBSTRING "${peoffsethex}" 1 1 peoffsethex2)
-        set(peoffsetexpression "${peoffsethex1} * 16 + ${peoffsethex2}")
-        string(REPLACE "a" "10" peoffsetexpression "${peoffsetexpression}")
-        string(REPLACE "b" "11" peoffsetexpression "${peoffsetexpression}")
-        string(REPLACE "c" "12" peoffsetexpression "${peoffsetexpression}")
-        string(REPLACE "d" "13" peoffsetexpression "${peoffsetexpression}")
-        string(REPLACE "e" "14" peoffsetexpression "${peoffsetexpression}")
-        string(REPLACE "f" "15" peoffsetexpression "${peoffsetexpression}")
-        math(EXPR peoffset "${peoffsetexpression}")
-
-        file(READ ${file} peheader LIMIT 6 OFFSET ${peoffset} HEX)
-        if(peheader STREQUAL "50450000a201")
-          set(ARCHITECTURE_ID "SH3")
-        elseif(peheader STREQUAL "50450000a301")
-          set(ARCHITECTURE_ID "SH3DSP")
-        elseif(peheader STREQUAL "50450000a601")
-          set(ARCHITECTURE_ID "SH4")
-        elseif(peheader STREQUAL "50450000a801")
-          set(ARCHITECTURE_ID "SH5")
-        endif()
-      endif()
-    endif()
-
-    # Check if a valid compiler and platform were found.
-    if(COMPILER_ID AND NOT COMPILER_ID_TWICE)
-      set(CMAKE_${lang}_COMPILER_ID "${COMPILER_ID}")
-      set(CMAKE_${lang}_PLATFORM_ID "${PLATFORM_ID}")
-      set(CMAKE_${lang}_COMPILER_ARCHITECTURE_ID "${ARCHITECTURE_ID}")
-      set(MSVC_${lang}_ARCHITECTURE_ID "${ARCHITECTURE_ID}")
-      set(CMAKE_${lang}_COMPILER_VERSION "${COMPILER_VERSION}")
-      set(CMAKE_${lang}_COMPILER_VERSION_INTERNAL "${COMPILER_VERSION_INTERNAL}")
-      set(CMAKE_${lang}_SIMULATE_ID "${SIMULATE_ID}")
-      set(CMAKE_${lang}_SIMULATE_VERSION "${SIMULATE_VERSION}")
-    endif()
-
-    # Check the compiler identification string.
-    if(CMAKE_${lang}_COMPILER_ID)
-      # The compiler identification was found.
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "The ${lang} compiler identification is ${CMAKE_${lang}_COMPILER_ID}, found in \""
-        "${file}\"\n\n")
-    else()
-      # The compiler identification could not be found.
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "The ${lang} compiler identification could not be found in \""
-        "${file}\"\n\n")
-    endif()
-  endif()
-
-  # try to figure out the executable format: ELF, COFF, Mach-O
-  if(NOT CMAKE_EXECUTABLE_FORMAT)
-    file(READ ${file} CMAKE_EXECUTABLE_MAGIC LIMIT 4 HEX)
-
-    # ELF files start with 0x7f"ELF"
-    if("${CMAKE_EXECUTABLE_MAGIC}" STREQUAL "7f454c46")
-      set(CMAKE_EXECUTABLE_FORMAT "ELF" CACHE INTERNAL "Executable file format")
-    endif()
-
-#    # COFF (.exe) files start with "MZ"
-#    if("${CMAKE_EXECUTABLE_MAGIC}" MATCHES "4d5a....")
-#      set(CMAKE_EXECUTABLE_FORMAT "COFF" CACHE STRING "Executable file format")
-#    endif()
-#
-    # Mach-O files start with MH_MAGIC or MH_CIGAM
-    if("${CMAKE_EXECUTABLE_MAGIC}" MATCHES "feedface|cefaedfe|feedfacf|cffaedfe")
-      set(CMAKE_EXECUTABLE_FORMAT "MACHO" CACHE STRING "Executable file format")
-    endif()
-
-  endif()
-  if(NOT DEFINED CMAKE_EXECUTABLE_FORMAT)
-    set(CMAKE_EXECUTABLE_FORMAT)
-  endif()
-  # Return the information extracted.
-  set(CMAKE_${lang}_COMPILER_ID "${CMAKE_${lang}_COMPILER_ID}" PARENT_SCOPE)
-  set(CMAKE_${lang}_PLATFORM_ID "${CMAKE_${lang}_PLATFORM_ID}" PARENT_SCOPE)
-  set(CMAKE_${lang}_COMPILER_ARCHITECTURE_ID "${CMAKE_${lang}_COMPILER_ARCHITECTURE_ID}" PARENT_SCOPE)
-  set(MSVC_${lang}_ARCHITECTURE_ID "${MSVC_${lang}_ARCHITECTURE_ID}"
-    PARENT_SCOPE)
-  set(CMAKE_${lang}_COMPILER_VERSION "${CMAKE_${lang}_COMPILER_VERSION}" PARENT_SCOPE)
-  set(CMAKE_${lang}_COMPILER_VERSION_INTERNAL "${CMAKE_${lang}_COMPILER_VERSION_INTERNAL}" PARENT_SCOPE)
-  set(CMAKE_${lang}_COMPILER_WRAPPER "${COMPILER_WRAPPER}" PARENT_SCOPE)
-  set(CMAKE_${lang}_SIMULATE_ID "${CMAKE_${lang}_SIMULATE_ID}" PARENT_SCOPE)
-  set(CMAKE_${lang}_SIMULATE_VERSION "${CMAKE_${lang}_SIMULATE_VERSION}" PARENT_SCOPE)
-  set(CMAKE_EXECUTABLE_FORMAT "${CMAKE_EXECUTABLE_FORMAT}" PARENT_SCOPE)
-  set(COMPILER_QNXNTO "${COMPILER_QNXNTO}" PARENT_SCOPE)
-  set(CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT "${CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT}" PARENT_SCOPE)
-endfunction()
-
-#-----------------------------------------------------------------------------
-# Function to query the compiler vendor.
-# This uses a table with entries of the form
-#   list(APPEND CMAKE_${lang}_COMPILER_ID_VENDORS ${vendor})
-#   set(CMAKE_${lang}_COMPILER_ID_VENDOR_FLAGS_${vendor} -some-vendor-flag)
-#   set(CMAKE_${lang}_COMPILER_ID_VENDOR_REGEX_${vendor} "Some Vendor Output")
-# We try running the compiler with the flag for each vendor and
-# matching its regular expression in the output.
-function(CMAKE_DETERMINE_COMPILER_ID_VENDOR lang userflags)
-
-  if(NOT CMAKE_${lang}_COMPILER_ID_DIR)
-    # We get here when this function is called not from within CMAKE_DETERMINE_COMPILER_ID()
-    # This is done e.g. for detecting the compiler ID for assemblers.
-    # Compute the directory in which to run the test and Create a clean working directory.
-    set(CMAKE_${lang}_COMPILER_ID_DIR ${CMAKE_PLATFORM_INFO_DIR}/CompilerId${lang})
-    file(REMOVE_RECURSE ${CMAKE_${lang}_COMPILER_ID_DIR})
-    file(MAKE_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR})
-  endif()
-
-  # Save the current LC_ALL, LC_MESSAGES, and LANG environment variables
-  # and set them to "C" so we get the expected output to match.
-  set(_orig_lc_all      $ENV{LC_ALL})
-  set(_orig_lc_messages $ENV{LC_MESSAGES})
-  set(_orig_lang        $ENV{LANG})
-  set(ENV{LC_ALL}      C)
-  set(ENV{LC_MESSAGES} C)
-  set(ENV{LANG}        C)
-
-  foreach(vendor ${CMAKE_${lang}_COMPILER_ID_VENDORS})
-    set(flags ${CMAKE_${lang}_COMPILER_ID_VENDOR_FLAGS_${vendor}})
-    set(regex ${CMAKE_${lang}_COMPILER_ID_VENDOR_REGEX_${vendor}})
-    execute_process(
-      COMMAND "${CMAKE_${lang}_COMPILER}"
-      ${CMAKE_${lang}_COMPILER_ID_ARG1}
-      ${userflags}
-      ${flags}
-      WORKING_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR}
-      OUTPUT_VARIABLE output ERROR_VARIABLE output
-      RESULT_VARIABLE result
-      TIMEOUT 10
-      )
-
-    if("${output}" MATCHES "${regex}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Checking whether the ${lang} compiler is ${vendor} using \"${flags}\" "
-        "matched \"${regex}\":\n${output}")
-      set(CMAKE_${lang}_COMPILER_ID "${vendor}" PARENT_SCOPE)
-      set(CMAKE_${lang}_COMPILER_ID_OUTPUT "${output}" PARENT_SCOPE)
-      set(CMAKE_${lang}_COMPILER_ID_VENDOR_MATCH "${CMAKE_MATCH_1}" PARENT_SCOPE)
-      break()
-    else()
-      if("${result}" MATCHES  "timeout")
-        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-          "Checking whether the ${lang} compiler is ${vendor} using \"${flags}\" "
-          "terminated after 10 s due to timeout.")
-      else()
-        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-          "Checking whether the ${lang} compiler is ${vendor} using \"${flags}\" "
-          "did not match \"${regex}\":\n${output}")
-       endif()
-    endif()
-  endforeach()
-
-  # Restore original LC_ALL, LC_MESSAGES, and LANG
-  set(ENV{LC_ALL}      ${_orig_lc_all})
-  set(ENV{LC_MESSAGES} ${_orig_lc_messages})
-  set(ENV{LANG}        ${_orig_lang})
-endfunction()
-
-function(CMAKE_DETERMINE_MSVC_SHOWINCLUDES_PREFIX lang userflags)
-  # Run this MSVC-compatible compiler to detect what the /showIncludes
-  # option displays.  We can use a C source even with the C++ compiler
-  # because MSVC-compatible compilers handle both and show the same output.
-  set(showdir ${CMAKE_BINARY_DIR}/CMakeFiles/ShowIncludes)
-  file(WRITE ${showdir}/foo.h "\n")
-  file(WRITE ${showdir}/main.c "#include \"foo.h\" \nint main(){}\n")
-  execute_process(
-    COMMAND "${CMAKE_${lang}_COMPILER}"
-            ${CMAKE_${lang}_COMPILER_ID_ARG1}
-            ${userflags}
-            /nologo /showIncludes /c main.c
-    WORKING_DIRECTORY ${showdir}
-    OUTPUT_VARIABLE out
-    ERROR_VARIABLE err
-    RESULT_VARIABLE res
-    ENCODING AUTO # cl prints in current code page
-    )
-  if(res EQUAL 0 AND "${out}" MATCHES "(^|\n)([^:\n]*:[^:\n]*:[ \t]*)")
-    set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "${CMAKE_MATCH_2}" PARENT_SCOPE)
-  else()
-    set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "" PARENT_SCOPE)
-  endif()
-endfunction()
diff --git a/share/cmake-3.18/Modules/CMakeDetermineFortranCompiler.cmake b/share/cmake-3.18/Modules/CMakeDetermineFortranCompiler.cmake
deleted file mode 100644
index 5f5a70a..0000000
--- a/share/cmake-3.18/Modules/CMakeDetermineFortranCompiler.cmake
+++ /dev/null
@@ -1,305 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# determine the compiler to use for Fortran programs
-# NOTE, a generator may set CMAKE_Fortran_COMPILER before
-# loading this file to force a compiler.
-# use environment variable FC first if defined by user, next use
-# the cmake variable CMAKE_GENERATOR_FC which can be defined by a generator
-# as a default compiler
-
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
-include(Platform/${CMAKE_SYSTEM_NAME}-Determine-Fortran OPTIONAL)
-include(Platform/${CMAKE_SYSTEM_NAME}-Fortran OPTIONAL)
-if(NOT CMAKE_Fortran_COMPILER_NAMES)
-  set(CMAKE_Fortran_COMPILER_NAMES f95)
-endif()
-
-if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
-elseif("${CMAKE_GENERATOR}" MATCHES "Xcode")
-  set(CMAKE_Fortran_COMPILER_XCODE_TYPE sourcecode.fortran.f90)
-  _cmake_find_compiler_path(Fortran)
-else()
-  if(NOT CMAKE_Fortran_COMPILER)
-    # prefer the environment variable CC
-    if(NOT $ENV{FC} STREQUAL "")
-      get_filename_component(CMAKE_Fortran_COMPILER_INIT $ENV{FC} PROGRAM PROGRAM_ARGS CMAKE_Fortran_FLAGS_ENV_INIT)
-      if(CMAKE_Fortran_FLAGS_ENV_INIT)
-        set(CMAKE_Fortran_COMPILER_ARG1 "${CMAKE_Fortran_FLAGS_ENV_INIT}" CACHE STRING "First argument to Fortran compiler")
-      endif()
-      if(EXISTS ${CMAKE_Fortran_COMPILER_INIT})
-      else()
-        message(FATAL_ERROR "Could not find compiler set in environment variable FC:\n$ENV{FC}.")
-      endif()
-    endif()
-
-    # next try prefer the compiler specified by the generator
-    if(CMAKE_GENERATOR_FC)
-      if(NOT CMAKE_Fortran_COMPILER_INIT)
-        set(CMAKE_Fortran_COMPILER_INIT ${CMAKE_GENERATOR_FC})
-      endif()
-    endif()
-
-    # finally list compilers to try
-    if(NOT CMAKE_Fortran_COMPILER_INIT)
-      # Known compilers:
-      #  f77/f90/f95: generic compiler names
-      #  ftn: Cray fortran compiler wrapper
-      #  g77: GNU Fortran 77 compiler
-      #  gfortran: putative GNU Fortran 95+ compiler (in progress)
-      #  fort77: native F77 compiler under HP-UX (and some older Crays)
-      #  frt: Fujitsu F77 compiler
-      #  pathf90/pathf95/pathf2003: PathScale Fortran compiler
-      #  pgf77/pgf90/pgf95/pgfortran: Portland Group F77/F90/F95 compilers
-      #  flang: Flang Fortran compiler
-      #  xlf/xlf90/xlf95: IBM (AIX) F77/F90/F95 compilers
-      #  lf95: Lahey-Fujitsu F95 compiler
-      #  fl32: Microsoft Fortran 77 "PowerStation" compiler
-      #  af77: Apogee F77 compiler for Intergraph hardware running CLIX
-      #  epcf90: "Edinburgh Portable Compiler" F90
-      #  fort: Compaq (now HP) Fortran 90/95 compiler for Tru64 and Linux/Alpha
-      #  ifc: Intel Fortran 95 compiler for Linux/x86
-      #  efc: Intel Fortran 95 compiler for IA64
-      #  nagfor: NAG Fortran compiler
-      #
-      #  The order is 95 or newer compilers first, then 90,
-      #  then 77 or older compilers, gnu is always last in the group,
-      #  so if you paid for a compiler it is picked by default.
-      if(CMAKE_HOST_WIN32)
-        set(CMAKE_Fortran_COMPILER_LIST
-          ifort pgf95 pgfortran lf95 fort
-          flang gfortran gfortran-4 g95 f90 pgf90
-          pgf77 g77 f77 nag
-          )
-      else()
-        set(CMAKE_Fortran_COMPILER_LIST
-          ftn
-          ifort ifc efc pgf95 pgfortran lf95 xlf95 fort
-          flang gfortran gfortran-4 g95 f90 pgf90
-          frt pgf77 xlf g77 f77 nag
-          )
-      endif()
-
-      # Vendor-specific compiler names.
-      set(_Fortran_COMPILER_NAMES_GNU       gfortran gfortran-4 g95 g77)
-      set(_Fortran_COMPILER_NAMES_Intel     ifort ifc efc)
-      set(_Fortran_COMPILER_NAMES_Absoft    af95 af90 af77)
-      set(_Fortran_COMPILER_NAMES_PGI       pgf95 pgfortran pgf90 pgf77)
-      set(_Fortran_COMPILER_NAMES_Flang     flang)
-      set(_Fortran_COMPILER_NAMES_PathScale pathf2003 pathf95 pathf90)
-      set(_Fortran_COMPILER_NAMES_XL        xlf)
-      set(_Fortran_COMPILER_NAMES_VisualAge xlf95 xlf90 xlf)
-      set(_Fortran_COMPILER_NAMES_NAG       nagfor)
-    endif()
-
-    _cmake_find_compiler(Fortran)
-
-  else()
-    _cmake_find_compiler_path(Fortran)
-  endif()
-  mark_as_advanced(CMAKE_Fortran_COMPILER)
-
-  # Each entry in this list is a set of extra flags to try
-  # adding to the compile line to see if it helps produce
-  # a valid identification executable.
-  set(CMAKE_Fortran_COMPILER_ID_TEST_FLAGS_FIRST
-    # Get verbose output to help distinguish compilers.
-    "-v"
-    )
-  set(CMAKE_Fortran_COMPILER_ID_TEST_FLAGS
-    # Try compiling to an object file only.
-    "-c"
-
-    # Intel on windows does not preprocess by default.
-    "-fpp"
-    )
-endif()
-
-# Build a small source file to identify the compiler.
-if(NOT CMAKE_Fortran_COMPILER_ID_RUN)
-  set(CMAKE_Fortran_COMPILER_ID_RUN 1)
-
-  # Table of per-vendor compiler output regular expressions.
-  list(APPEND CMAKE_Fortran_COMPILER_ID_MATCH_VENDORS CCur)
-  set(CMAKE_Fortran_COMPILER_ID_MATCH_VENDOR_REGEX_CCur "Concurrent Fortran [0-9]+ Compiler")
-
-  # Table of per-vendor compiler id flags with expected output.
-  list(APPEND CMAKE_Fortran_COMPILER_ID_VENDORS Compaq)
-  set(CMAKE_Fortran_COMPILER_ID_VENDOR_FLAGS_Compaq "-what")
-  set(CMAKE_Fortran_COMPILER_ID_VENDOR_REGEX_Compaq "Compaq Visual Fortran")
-  list(APPEND CMAKE_Fortran_COMPILER_ID_VENDORS NAG) # Numerical Algorithms Group
-  set(CMAKE_Fortran_COMPILER_ID_VENDOR_FLAGS_NAG "-V")
-  set(CMAKE_Fortran_COMPILER_ID_VENDOR_REGEX_NAG "NAG Fortran Compiler")
-
-  # Match the link line from xcodebuild output of the form
-  #  Ld ...
-  #      ...
-  #      /path/to/cc ...CompilerIdFortran/...
-  # to extract the compiler front-end for the language.
-  set(CMAKE_Fortran_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdFortran/(\\./)?(CompilerIdFortran.xctest/)?CompilerIdFortran[ \t\n\\\"]")
-  set(CMAKE_Fortran_COMPILER_ID_TOOL_MATCH_INDEX 2)
-
-  set(_version_info "")
-  foreach(m MAJOR MINOR PATCH TWEAK)
-    set(_COMP "_${m}")
-    string(APPEND _version_info "
-#if defined(COMPILER_VERSION${_COMP})")
-    foreach(d 1 2 3 4 5 6 7 8)
-      string(APPEND _version_info "
-# undef DEC
-# undef HEX
-# define DEC(n) DEC_${d}(n)
-# define HEX(n) HEX_${d}(n)
-# if COMPILER_VERSION${_COMP} == 0
-        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[0]'
-# elif COMPILER_VERSION${_COMP} == 1
-        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[1]'
-# elif COMPILER_VERSION${_COMP} == 2
-        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[2]'
-# elif COMPILER_VERSION${_COMP} == 3
-        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[3]'
-# elif COMPILER_VERSION${_COMP} == 4
-        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[4]'
-# elif COMPILER_VERSION${_COMP} == 5
-        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[5]'
-# elif COMPILER_VERSION${_COMP} == 6
-        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[6]'
-# elif COMPILER_VERSION${_COMP} == 7
-        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[7]'
-# elif COMPILER_VERSION${_COMP} == 8
-        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[8]'
-# elif COMPILER_VERSION${_COMP} == 9
-        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[9]'
-# endif
-")
-    endforeach()
-    string(APPEND _version_info "
-#endif")
-  endforeach()
-  set(CMAKE_Fortran_COMPILER_ID_VERSION_INFO "${_version_info}")
-  unset(_version_info)
-  unset(_COMP)
-
-  # Try to identify the compiler.
-  set(CMAKE_Fortran_COMPILER_ID)
-  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
-  CMAKE_DETERMINE_COMPILER_ID(Fortran FFLAGS CMakeFortranCompilerId.F)
-
-  _cmake_find_compiler_sysroot(Fortran)
-
-  # Fall back to old is-GNU test.
-  if(NOT CMAKE_Fortran_COMPILER_ID)
-    execute_process(COMMAND ${CMAKE_Fortran_COMPILER} ${CMAKE_Fortran_COMPILER_ID_FLAGS_LIST} -E "${CMAKE_ROOT}/Modules/CMakeTestGNU.c"
-      OUTPUT_VARIABLE CMAKE_COMPILER_OUTPUT RESULT_VARIABLE CMAKE_COMPILER_RETURN)
-    if(NOT CMAKE_COMPILER_RETURN)
-      if(CMAKE_COMPILER_OUTPUT MATCHES "THIS_IS_GNU")
-        set(CMAKE_Fortran_COMPILER_ID "GNU")
-        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-          "Determining if the Fortran compiler is GNU succeeded with "
-          "the following output:\n${CMAKE_COMPILER_OUTPUT}\n\n")
-      else()
-        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-          "Determining if the Fortran compiler is GNU failed with "
-          "the following output:\n${CMAKE_COMPILER_OUTPUT}\n\n")
-      endif()
-      if(NOT CMAKE_Fortran_PLATFORM_ID)
-        if(CMAKE_COMPILER_OUTPUT MATCHES "THIS_IS_MINGW")
-          set(CMAKE_Fortran_PLATFORM_ID "MinGW")
-        endif()
-        if(CMAKE_COMPILER_OUTPUT MATCHES "THIS_IS_CYGWIN")
-          set(CMAKE_Fortran_PLATFORM_ID "Cygwin")
-        endif()
-      endif()
-    endif()
-  endif()
-
-  # Fall back for GNU MINGW, which is not always detected correctly
-  # (__MINGW32__ is defined for the C language, but perhaps not for Fortran!)
-  if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU" AND NOT CMAKE_Fortran_PLATFORM_ID)
-    execute_process(COMMAND ${CMAKE_Fortran_COMPILER} ${CMAKE_Fortran_COMPILER_ID_FLAGS_LIST} -E "${CMAKE_ROOT}/Modules/CMakeTestGNU.c"
-      OUTPUT_VARIABLE CMAKE_COMPILER_OUTPUT RESULT_VARIABLE CMAKE_COMPILER_RETURN)
-    if(NOT CMAKE_COMPILER_RETURN)
-      if(CMAKE_COMPILER_OUTPUT MATCHES "THIS_IS_MINGW")
-        set(CMAKE_Fortran_PLATFORM_ID "MinGW")
-      endif()
-      if(CMAKE_COMPILER_OUTPUT MATCHES "THIS_IS_CYGWIN")
-        set(CMAKE_Fortran_PLATFORM_ID "Cygwin")
-      endif()
-    endif()
-  endif()
-
-  # Set old compiler and platform id variables.
-  if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
-    set(CMAKE_COMPILER_IS_GNUG77 1)
-  endif()
-  if(CMAKE_Fortran_PLATFORM_ID MATCHES "MinGW")
-    set(CMAKE_COMPILER_IS_MINGW 1)
-  elseif(CMAKE_Fortran_PLATFORM_ID MATCHES "Cygwin")
-    set(CMAKE_COMPILER_IS_CYGWIN 1)
-  endif()
-endif()
-
-if (NOT _CMAKE_TOOLCHAIN_LOCATION)
-  get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_Fortran_COMPILER}" PATH)
-endif ()
-
-# if we have a fortran cross compiler, they have usually some prefix, like
-# e.g. powerpc-linux-gfortran, arm-elf-gfortran or i586-mingw32msvc-gfortran , optionally
-# with a 3-component version number at the end (e.g. arm-eabi-gcc-4.5.2).
-# The other tools of the toolchain usually have the same prefix
-# NAME_WE cannot be used since then this test will fail for names like
-# "arm-unknown-nto-qnx6.3.0-gcc.exe", where BASENAME would be
-# "arm-unknown-nto-qnx6" instead of the correct "arm-unknown-nto-qnx6.3.0-"
-if (NOT _CMAKE_TOOLCHAIN_PREFIX)
-
-  if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
-    get_filename_component(COMPILER_BASENAME "${CMAKE_Fortran_COMPILER}" NAME)
-    if (COMPILER_BASENAME MATCHES "^(.+-)g?fortran(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
-      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
-    endif ()
-
-    # if "llvm-" is part of the prefix, remove it, since llvm doesn't have its own binutils
-    # but uses the regular ar, objcopy, etc. (instead of llvm-objcopy etc.)
-    if ("${_CMAKE_TOOLCHAIN_PREFIX}" MATCHES "(.+-)?llvm-$")
-      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
-    endif ()
-  endif()
-
-endif ()
-
-set(_CMAKE_PROCESSING_LANGUAGE "Fortran")
-include(CMakeFindBinUtils)
-include(Compiler/${CMAKE_Fortran_COMPILER_ID}-FindBinUtils OPTIONAL)
-unset(_CMAKE_PROCESSING_LANGUAGE)
-
-if(CMAKE_Fortran_XL_CPP)
-  set(_SET_CMAKE_Fortran_XL_CPP
-    "set(CMAKE_Fortran_XL_CPP \"${CMAKE_Fortran_XL_CPP}\")")
-endif()
-
-if(CMAKE_Fortran_COMPILER_SYSROOT)
-  string(CONCAT _SET_CMAKE_Fortran_COMPILER_SYSROOT
-    "set(CMAKE_Fortran_COMPILER_SYSROOT \"${CMAKE_Fortran_COMPILER_SYSROOT}\")\n"
-    "set(CMAKE_COMPILER_SYSROOT \"${CMAKE_Fortran_COMPILER_SYSROOT}\")")
-else()
-  set(_SET_CMAKE_Fortran_COMPILER_SYSROOT "")
-endif()
-
-if(CMAKE_Fortran_COMPILER_ARCHITECTURE_ID)
-  set(_SET_CMAKE_Fortran_COMPILER_ARCHITECTURE_ID
-    "set(CMAKE_Fortran_COMPILER_ARCHITECTURE_ID ${CMAKE_Fortran_COMPILER_ARCHITECTURE_ID})")
-else()
-  set(_SET_CMAKE_Fortran_COMPILER_ARCHITECTURE_ID "")
-endif()
-
-if(MSVC_Fortran_ARCHITECTURE_ID)
-  set(SET_MSVC_Fortran_ARCHITECTURE_ID
-    "set(MSVC_Fortran_ARCHITECTURE_ID ${MSVC_Fortran_ARCHITECTURE_ID})")
-endif()
-# configure variables set in this file for fast reload later on
-configure_file(${CMAKE_ROOT}/Modules/CMakeFortranCompiler.cmake.in
-  ${CMAKE_PLATFORM_INFO_DIR}/CMakeFortranCompiler.cmake
-  @ONLY
-  )
-set(CMAKE_Fortran_COMPILER_ENV_VAR "FC")
diff --git a/share/cmake-3.18/Modules/CMakeDetermineJavaCompiler.cmake b/share/cmake-3.18/Modules/CMakeDetermineJavaCompiler.cmake
deleted file mode 100644
index 3092bb5..0000000
--- a/share/cmake-3.18/Modules/CMakeDetermineJavaCompiler.cmake
+++ /dev/null
@@ -1,94 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# determine the compiler to use for Java programs
-# NOTE, a generator may set CMAKE_Java_COMPILER before
-# loading this file to force a compiler.
-
-if(NOT CMAKE_Java_COMPILER)
-  # prefer the environment variable CC
-  if(NOT $ENV{JAVA_COMPILER} STREQUAL "")
-    get_filename_component(CMAKE_Java_COMPILER_INIT $ENV{JAVA_COMPILER} PROGRAM PROGRAM_ARGS CMAKE_Java_FLAGS_ENV_INIT)
-    if(CMAKE_Java_FLAGS_ENV_INIT)
-      set(CMAKE_Java_COMPILER_ARG1 "${CMAKE_Java_FLAGS_ENV_INIT}" CACHE STRING "First argument to Java compiler")
-    endif()
-    if(NOT EXISTS ${CMAKE_Java_COMPILER_INIT})
-      message(SEND_ERROR "Could not find compiler set in environment variable JAVA_COMPILER:\n$ENV{JAVA_COMPILER}.")
-    endif()
-  endif()
-
-  if(NOT $ENV{JAVA_RUNTIME} STREQUAL "")
-    get_filename_component(CMAKE_Java_RUNTIME_INIT $ENV{JAVA_RUNTIME} PROGRAM PROGRAM_ARGS CMAKE_Java_FLAGS_ENV_INIT)
-    if(NOT EXISTS ${CMAKE_Java_RUNTIME_INIT})
-      message(SEND_ERROR "Could not find compiler set in environment variable JAVA_RUNTIME:\n$ENV{JAVA_RUNTIME}.")
-    endif()
-  endif()
-
-  if(NOT $ENV{JAVA_ARCHIVE} STREQUAL "")
-    get_filename_component(CMAKE_Java_ARCHIVE_INIT $ENV{JAVA_ARCHIVE} PROGRAM PROGRAM_ARGS CMAKE_Java_FLAGS_ENV_INIT)
-    if(NOT EXISTS ${CMAKE_Java_ARCHIVE_INIT})
-      message(SEND_ERROR "Could not find compiler set in environment variable JAVA_ARCHIVE:\n$ENV{JAVA_ARCHIVE}.")
-    endif()
-  endif()
-
-  set(Java_BIN_PATH
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\2.0;JavaHome]/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.8;JavaHome]/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.7;JavaHome]/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.6;JavaHome]/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5;JavaHome]/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/bin"
-    $ENV{JAVA_HOME}/bin
-    /usr/bin
-    /usr/lib/java/bin
-    /usr/share/java/bin
-    /usr/local/bin
-    /usr/local/java/bin
-    /usr/local/java/share/bin
-    /usr/java/j2sdk1.4.2_04
-    /usr/lib/j2sdk1.4-sun/bin
-    /usr/java/j2sdk1.4.2_09/bin
-    /usr/lib/j2sdk1.5-sun/bin
-    /opt/sun-jdk-1.5.0.04/bin
-    /usr/local/jdk-1.7.0/bin
-    /usr/local/jdk-1.6.0/bin
-    )
-  # if no compiler has been specified yet, then look for one
-  if(CMAKE_Java_COMPILER_INIT)
-    set(CMAKE_Java_COMPILER ${CMAKE_Java_COMPILER_INIT} CACHE PATH "Java Compiler")
-  else()
-    find_program(CMAKE_Java_COMPILER
-      NAMES javac
-      PATHS ${Java_BIN_PATH}
-    )
-  endif()
-
-  # if no runtime has been specified yet, then look for one
-  if(CMAKE_Java_RUNTIME_INIT)
-    set(CMAKE_Java_RUNTIME ${CMAKE_Java_RUNTIME_INIT} CACHE PATH "Java Compiler")
-  else()
-    find_program(CMAKE_Java_RUNTIME
-      NAMES java
-      PATHS ${Java_BIN_PATH}
-    )
-  endif()
-
-  # if no archive has been specified yet, then look for one
-  if(CMAKE_Java_ARCHIVE_INIT)
-    set(CMAKE_Java_ARCHIVE ${CMAKE_Java_ARCHIVE_INIT} CACHE PATH "Java Compiler")
-  else()
-    find_program(CMAKE_Java_ARCHIVE
-      NAMES jar
-      PATHS ${Java_BIN_PATH}
-    )
-  endif()
-endif()
-mark_as_advanced(CMAKE_Java_COMPILER)
-
-# configure variables set in this file for fast reload later on
-configure_file(${CMAKE_ROOT}/Modules/CMakeJavaCompiler.cmake.in
-  ${CMAKE_PLATFORM_INFO_DIR}/CMakeJavaCompiler.cmake @ONLY)
-set(CMAKE_Java_COMPILER_ENV_VAR "JAVA_COMPILER")
diff --git a/share/cmake-3.18/Modules/CMakeDetermineOBJCCompiler.cmake b/share/cmake-3.18/Modules/CMakeDetermineOBJCCompiler.cmake
deleted file mode 100644
index 11b47fd..0000000
--- a/share/cmake-3.18/Modules/CMakeDetermineOBJCCompiler.cmake
+++ /dev/null
@@ -1,192 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# determine the compiler to use for Objective-C programs
-# NOTE, a generator may set CMAKE_OBJC_COMPILER before
-# loading this file to force a compiler.
-# use environment variable OBJC first if defined by user, next use
-# the cmake variable CMAKE_GENERATOR_OBJC which can be defined by a generator
-# as a default compiler
-#
-# Sets the following variables:
-#   CMAKE_OBJC_COMPILER
-#   CMAKE_AR
-#   CMAKE_RANLIB
-#   CMAKE_COMPILER_IS_GNUOBJC
-#   CMAKE_COMPILER_IS_CLANGOBJC
-#
-# If not already set before, it also sets
-#   _CMAKE_TOOLCHAIN_PREFIX
-
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
-
-# Load system-specific compiler preferences for this language.
-include(Platform/${CMAKE_SYSTEM_NAME}-Determine-OBJC OPTIONAL)
-include(Platform/${CMAKE_SYSTEM_NAME}-OBJC OPTIONAL)
-if(NOT CMAKE_OBJC_COMPILER_NAMES)
-  set(CMAKE_OBJC_COMPILER_NAMES clang)
-endif()
-
-if("${CMAKE_GENERATOR}" MATCHES "Xcode")
-  set(CMAKE_OBJC_COMPILER_XCODE_TYPE sourcecode.c.objc)
-else()
-  if(NOT CMAKE_OBJC_COMPILER)
-    set(CMAKE_OBJC_COMPILER_INIT NOTFOUND)
-
-    # prefer the environment variable OBJC or CC
-    foreach(var OBJC CC)
-      if($ENV{${var}} MATCHES ".+")
-        get_filename_component(CMAKE_OBJC_COMPILER_INIT $ENV{${var}} PROGRAM PROGRAM_ARGS CMAKE_OBJC_FLAGS_ENV_INIT)
-        if(CMAKE_OBJC_FLAGS_ENV_INIT)
-          set(CMAKE_OBJC_COMPILER_ARG1 "${CMAKE_OBJC_FLAGS_ENV_INIT}" CACHE STRING "First argument to Objective-C compiler")
-        endif()
-        if(NOT EXISTS ${CMAKE_OBJC_COMPILER_INIT})
-          message(FATAL_ERROR "Could not find compiler set in environment variable ${var}:\n  $ENV{${var}}")
-        endif()
-        break()
-      endif()
-    endforeach()
-
-    # next try prefer the compiler specified by the generator
-    if(CMAKE_GENERATOR_OBJC)
-      if(NOT CMAKE_OBJC_COMPILER_INIT)
-        set(CMAKE_OBJC_COMPILER_INIT ${CMAKE_GENERATOR_OBJC})
-      endif()
-    endif()
-
-    # finally list compilers to try
-    if(NOT CMAKE_OBJC_COMPILER_INIT)
-      set(CMAKE_OBJC_COMPILER_LIST ${_CMAKE_TOOLCHAIN_PREFIX}cc ${_CMAKE_TOOLCHAIN_PREFIX}gcc clang)
-    endif()
-
-    _cmake_find_compiler(OBJC)
-
-  else()
-    # we only get here if CMAKE_OBJC_COMPILER was specified using -D or a pre-made CMakeCache.txt
-    # (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE
-    # if CMAKE_OBJC_COMPILER is a list of length 2, use the first item as
-    # CMAKE_OBJC_COMPILER and the 2nd one as CMAKE_OBJC_COMPILER_ARG1
-
-    list(LENGTH CMAKE_OBJC_COMPILER _CMAKE_OBJC_COMPILER_LIST_LENGTH)
-    if("${_CMAKE_OBJC_COMPILER_LIST_LENGTH}" EQUAL 2)
-      list(GET CMAKE_OBJC_COMPILER 1 CMAKE_OBJC_COMPILER_ARG1)
-      list(GET CMAKE_OBJC_COMPILER 0 CMAKE_OBJC_COMPILER)
-    endif()
-
-    # if a compiler was specified by the user but without path,
-    # now try to find it with the full path
-    # if it is found, force it into the cache,
-    # if not, don't overwrite the setting (which was given by the user) with "NOTFOUND"
-    # if the C compiler already had a path, reuse it for searching the CXX compiler
-    get_filename_component(_CMAKE_USER_OBJC_COMPILER_PATH "${CMAKE_OBJC_COMPILER}" PATH)
-    if(NOT _CMAKE_USER_OBJC_COMPILER_PATH)
-      find_program(CMAKE_OBJC_COMPILER_WITH_PATH NAMES ${CMAKE_OBJC_COMPILER})
-      if(CMAKE_OBJC_COMPILER_WITH_PATH)
-        set(CMAKE_OBJC_COMPILER ${CMAKE_OBJC_COMPILER_WITH_PATH} CACHE STRING "Objective-C compiler" FORCE)
-      endif()
-      unset(CMAKE_OBJC_COMPILER_WITH_PATH CACHE)
-    endif()
-  endif()
-  mark_as_advanced(CMAKE_OBJC_COMPILER)
-
-  # Each entry in this list is a set of extra flags to try
-  # adding to the compile line to see if it helps produce
-  # a valid identification file.
-  set(CMAKE_OBJC_COMPILER_ID_TEST_FLAGS_FIRST)
-  set(CMAKE_OBJC_COMPILER_ID_TEST_FLAGS
-    # Try compiling to an object file only.
-    "-c"
-
-    )
-endif()
-
-# Build a small source file to identify the compiler.
-if(NOT CMAKE_OBJC_COMPILER_ID_RUN)
-  set(CMAKE_OBJC_COMPILER_ID_RUN 1)
-
-  # Try to identify the compiler.
-  set(CMAKE_OBJC_COMPILER_ID)
-  file(READ ${CMAKE_ROOT}/Modules/CMakePlatformId.h.in
-    CMAKE_OBJC_COMPILER_ID_PLATFORM_CONTENT)
-
-  # Match the link line from xcodebuild output of the form
-  #  Ld ...
-  #      ...
-  #      /path/to/cc ...CompilerIdOBJC/...
-  # to extract the compiler front-end for the language.
-  set(CMAKE_OBJC_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdOBJC/(\\./)?(CompilerIdOBJC.(framework|xctest)/)?CompilerIdOBJC[ \t\n\\\"]")
-  set(CMAKE_OBJC_COMPILER_ID_TOOL_MATCH_INDEX 2)
-
-  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
-  CMAKE_DETERMINE_COMPILER_ID(OBJC OBJCCFLAGS CMakeOBJCCompilerId.m)
-
-  # Set old compiler and platform id variables.
-  if(CMAKE_OBJC_COMPILER_ID STREQUAL "GNU")
-    set(CMAKE_COMPILER_IS_GNUOBJC 1)
-  endif()
-  if(CMAKE_OBJC_COMPILER_ID STREQUAL "Clang")
-    set(CMAKE_COMPILER_IS_CLANGOBJC 1)
-  endif()
-endif()
-
-if (NOT _CMAKE_TOOLCHAIN_LOCATION)
-  get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_OBJC_COMPILER}" PATH)
-endif ()
-
-# If we have a gcc cross compiler, they have usually some prefix, like
-# e.g. powerpc-linux-gcc, arm-elf-gcc or i586-mingw32msvc-gcc, optionally
-# with a 3-component version number at the end (e.g. arm-eabi-gcc-4.5.2).
-# The other tools of the toolchain usually have the same prefix
-# NAME_WE cannot be used since then this test will fail for names like
-# "arm-unknown-nto-qnx6.3.0-gcc.exe", where BASENAME would be
-# "arm-unknown-nto-qnx6" instead of the correct "arm-unknown-nto-qnx6.3.0-"
-if (CMAKE_CROSSCOMPILING  AND NOT _CMAKE_TOOLCHAIN_PREFIX)
-
-  if(CMAKE_OBJC_COMPILER_ID MATCHES "GNU|Clang|QCC")
-    get_filename_component(COMPILER_BASENAME "${CMAKE_OBJC_COMPILER}" NAME)
-    if (COMPILER_BASENAME MATCHES "^(.+-)(clang|g?cc)(-[0-9]+(\\.[0-9]+)*)?(-[^.]+)?(\\.exe)?$")
-      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
-      set(_CMAKE_COMPILER_SUFFIX ${CMAKE_MATCH_5})
-    elseif(CMAKE_OBJC_COMPILER_ID MATCHES "Clang")
-      if(CMAKE_OBJC_COMPILER_TARGET)
-        set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_OBJC_COMPILER_TARGET}-)
-      endif()
-    elseif(COMPILER_BASENAME MATCHES "qcc(\\.exe)?$")
-      if(CMAKE_OBJC_COMPILER_TARGET MATCHES "gcc_nto([a-z0-9]+_[0-9]+|[^_le]+)(le)?")
-        set(_CMAKE_TOOLCHAIN_PREFIX nto${CMAKE_MATCH_1}-)
-      endif()
-    endif ()
-
-    # if "llvm-" is part of the prefix, remove it, since llvm doesn't have its own binutils
-    # but uses the regular ar, objcopy, etc. (instead of llvm-objcopy etc.)
-    if ("${_CMAKE_TOOLCHAIN_PREFIX}" MATCHES "(.+-)?llvm-$")
-      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
-    endif ()
-  endif()
-
-endif ()
-
-set(_CMAKE_PROCESSING_LANGUAGE "OBJC")
-include(CMakeFindBinUtils)
-include(Compiler/${CMAKE_OBJC_COMPILER_ID}-FindBinUtils OPTIONAL)
-unset(_CMAKE_PROCESSING_LANGUAGE)
-
-if(CMAKE_OBJC_COMPILER_ARCHITECTURE_ID)
-  set(_SET_CMAKE_OBJC_COMPILER_ARCHITECTURE_ID
-    "set(CMAKE_OBJC_COMPILER_ARCHITECTURE_ID ${CMAKE_OBJC_COMPILER_ARCHITECTURE_ID})")
-else()
-  set(_SET_CMAKE_OBJC_COMPILER_ARCHITECTURE_ID "")
-endif()
-
-if(CMAKE_OBJC_XCODE_ARCHS)
-  set(SET_CMAKE_XCODE_ARCHS
-    "set(CMAKE_XCODE_ARCHS \"${CMAKE_OBJC_XCODE_ARCHS}\")")
-endif()
-
-# configure variables set in this file for fast reload later on
-configure_file(${CMAKE_ROOT}/Modules/CMakeOBJCCompiler.cmake.in
-  ${CMAKE_PLATFORM_INFO_DIR}/CMakeOBJCCompiler.cmake
-  @ONLY
-  )
-set(CMAKE_OBJC_COMPILER_ENV_VAR "OBJC")
diff --git a/share/cmake-3.18/Modules/CMakeDetermineOBJCXXCompiler.cmake b/share/cmake-3.18/Modules/CMakeDetermineOBJCXXCompiler.cmake
deleted file mode 100644
index 99ad6c3..0000000
--- a/share/cmake-3.18/Modules/CMakeDetermineOBJCXXCompiler.cmake
+++ /dev/null
@@ -1,200 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# determine the compiler to use for Objective-C++ programs
-# NOTE, a generator may set CMAKE_OBJCXX_COMPILER before
-# loading this file to force a compiler.
-# use environment variable OBJCXX first if defined by user, next use
-# the cmake variable CMAKE_GENERATOR_OBJCXX which can be defined by a generator
-# as a default compiler
-# If the internal cmake variable _CMAKE_TOOLCHAIN_PREFIX is set, this is used
-# as prefix for the tools (e.g. arm-elf-g++, arm-elf-ar etc.)
-#
-# Sets the following variables:
-#   CMAKE_OBJCXX_COMPILER
-#   CMAKE_COMPILER_IS_GNUOBJCXX
-#   CMAKE_COMPILER_IS_CLANGOBJCXX
-#   CMAKE_AR
-#   CMAKE_RANLIB
-#
-# If not already set before, it also sets
-#   _CMAKE_TOOLCHAIN_PREFIX
-
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
-
-# Load system-specific compiler preferences for this language.
-include(Platform/${CMAKE_SYSTEM_NAME}-Determine-OBJCXX OPTIONAL)
-include(Platform/${CMAKE_SYSTEM_NAME}-OBJCXX OPTIONAL)
-if(NOT CMAKE_OBJCXX_COMPILER_NAMES)
-  set(CMAKE_OBJCXX_COMPILER_NAMES clang++)
-endif()
-
-if("${CMAKE_GENERATOR}" MATCHES "Xcode")
-  set(CMAKE_OBJCXX_COMPILER_XCODE_TYPE sourcecode.cpp.objcpp)
-else()
-  if(NOT CMAKE_OBJCXX_COMPILER)
-    set(CMAKE_OBJCXX_COMPILER_INIT NOTFOUND)
-
-    # prefer the environment variable OBJCXX or CXX
-    foreach(var OBJCXX CXX)
-      if($ENV{${var}} MATCHES ".+")
-        get_filename_component(CMAKE_OBJCXX_COMPILER_INIT $ENV{${var}} PROGRAM PROGRAM_ARGS CMAKE_OBJCXX_FLAGS_ENV_INIT)
-        if(CMAKE_OBJCXX_FLAGS_ENV_INIT)
-          set(CMAKE_OBJCXX_COMPILER_ARG1 "${CMAKE_OBJCXX_FLAGS_ENV_INIT}" CACHE STRING "First argument to Objective-C++ compiler")
-        endif()
-        if(NOT EXISTS ${CMAKE_OBJCXX_COMPILER_INIT})
-          message(FATAL_ERROR "Could not find compiler set in environment variable ${var}:\n  $ENV{${var}}")
-        endif()
-        break()
-      endif()
-    endforeach()
-
-    # next prefer the generator specified compiler
-    if(CMAKE_GENERATOR_OBJCXX)
-      if(NOT CMAKE_OBJCXX_COMPILER_INIT)
-        set(CMAKE_OBJCXX_COMPILER_INIT ${CMAKE_GENERATOR_OBJCXX})
-      endif()
-    endif()
-
-    # finally list compilers to try
-    if(NOT CMAKE_OBJCXX_COMPILER_INIT)
-      set(CMAKE_OBJCXX_COMPILER_LIST ${_CMAKE_TOOLCHAIN_PREFIX}c++ ${_CMAKE_TOOLCHAIN_PREFIX}g++ clang++)
-    endif()
-
-    _cmake_find_compiler(OBJCXX)
-
-  else()
-    # we only get here if CMAKE_OBJCXX_COMPILER was specified using -D or a pre-made CMakeCache.txt
-    # (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE
-    # if CMAKE_OBJCXX_COMPILER is a list of length 2, use the first item as
-    # CMAKE_OBJCXX_COMPILER and the 2nd one as CMAKE_OBJCXX_COMPILER_ARG1
-
-    list(LENGTH CMAKE_OBJCXX_COMPILER _CMAKE_OBJCXX_COMPILER_LIST_LENGTH)
-    if("${_CMAKE_OBJCXX_COMPILER_LIST_LENGTH}" EQUAL 2)
-      list(GET CMAKE_OBJCXX_COMPILER 1 CMAKE_OBJCXX_COMPILER_ARG1)
-      list(GET CMAKE_OBJCXX_COMPILER 0 CMAKE_OBJCXX_COMPILER)
-    endif()
-
-    # if a compiler was specified by the user but without path,
-    # now try to find it with the full path
-    # if it is found, force it into the cache,
-    # if not, don't overwrite the setting (which was given by the user) with "NOTFOUND"
-    # if the C compiler already had a path, reuse it for searching the CXX compiler
-    get_filename_component(_CMAKE_USER_OBJCXX_COMPILER_PATH "${CMAKE_OBJCXX_COMPILER}" PATH)
-    if(NOT _CMAKE_USER_OBJCXX_COMPILER_PATH)
-      find_program(CMAKE_OBJCXX_COMPILER_WITH_PATH NAMES ${CMAKE_OBJCXX_COMPILER})
-      if(CMAKE_OBJCXX_COMPILER_WITH_PATH)
-        set(CMAKE_OBJCXX_COMPILER ${CMAKE_OBJCXX_COMPILER_WITH_PATH} CACHE STRING "Objective-C++ compiler" FORCE)
-      endif()
-      unset(CMAKE_OBJCXX_COMPILER_WITH_PATH CACHE)
-    endif()
-
-  endif()
-  mark_as_advanced(CMAKE_OBJCXX_COMPILER)
-
-  # Each entry in this list is a set of extra flags to try
-  # adding to the compile line to see if it helps produce
-  # a valid identification file.
-  set(CMAKE_OBJCXX_COMPILER_ID_TEST_FLAGS_FIRST)
-  set(CMAKE_OBJCXX_COMPILER_ID_TEST_FLAGS
-    # Try compiling to an object file only.
-    "-c"
-
-    # ARMClang need target options
-    "--target=arm-arm-none-eabi -mcpu=cortex-m3"
-    )
-endif()
-
-# Build a small source file to identify the compiler.
-if(NOT CMAKE_OBJCXX_COMPILER_ID_RUN)
-  set(CMAKE_OBJCXX_COMPILER_ID_RUN 1)
-
-  # Try to identify the compiler.
-  set(CMAKE_OBJCXX_COMPILER_ID)
-  file(READ ${CMAKE_ROOT}/Modules/CMakePlatformId.h.in
-    CMAKE_OBJCXX_COMPILER_ID_PLATFORM_CONTENT)
-
-  # Match the link line from xcodebuild output of the form
-  #  Ld ...
-  #      ...
-  #      /path/to/cc ...CompilerIdOBJCXX/...
-  # to extract the compiler front-end for the language.
-  set(CMAKE_OBJCXX_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdOBJCXX/(\\./)?(CompilerIdOBJCXX.(framework|xctest)/)?CompilerIdOBJCXX[ \t\n\\\"]")
-  set(CMAKE_OBJCXX_COMPILER_ID_TOOL_MATCH_INDEX 2)
-
-  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
-  CMAKE_DETERMINE_COMPILER_ID(OBJCXX OBJCXXFLAGS CMakeOBJCXXCompilerId.mm)
-
-  # Set old compiler and platform id variables.
-  if(CMAKE_OBJCXX_COMPILER_ID MATCHES "GNU")
-    set(CMAKE_COMPILER_IS_GNUOBJCXX 1)
-  endif()
-  if(CMAKE_OBJCXX_COMPILER_ID MATCHES "Clang")
-    set(CMAKE_COMPILER_IS_CLANGOBJCXX 1)
-  endif()
-endif()
-
-if (NOT _CMAKE_TOOLCHAIN_LOCATION)
-  get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_OBJCXX_COMPILER}" PATH)
-endif ()
-
-# if we have a g++ cross compiler, they have usually some prefix, like
-# e.g. powerpc-linux-g++, arm-elf-g++ or i586-mingw32msvc-g++ , optionally
-# with a 3-component version number at the end (e.g. arm-eabi-gcc-4.5.2).
-# The other tools of the toolchain usually have the same prefix
-# NAME_WE cannot be used since then this test will fail for names like
-# "arm-unknown-nto-qnx6.3.0-gcc.exe", where BASENAME would be
-# "arm-unknown-nto-qnx6" instead of the correct "arm-unknown-nto-qnx6.3.0-"
-
-
-if (NOT _CMAKE_TOOLCHAIN_PREFIX)
-
-  if("${CMAKE_OBJCXX_COMPILER_ID}" MATCHES "GNU|Clang|QCC")
-    get_filename_component(COMPILER_BASENAME "${CMAKE_OBJCXX_COMPILER}" NAME)
-    if (COMPILER_BASENAME MATCHES "^(.+-)(clan)?[gc]\\+\\+(-[0-9]+(\\.[0-9]+)*)?(-[^.]+)?(\\.exe)?$")
-      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
-      set(_CMAKE_COMPILER_SUFFIX ${CMAKE_MATCH_5})
-    elseif("${CMAKE_OBJCXX_COMPILER_ID}" MATCHES "Clang")
-      if(CMAKE_OBJCXX_COMPILER_TARGET)
-        set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_OBJCXX_COMPILER_TARGET}-)
-      endif()
-    elseif(COMPILER_BASENAME MATCHES "QCC(\\.exe)?$")
-      if(CMAKE_OBJCXX_COMPILER_TARGET MATCHES "gcc_nto([a-z0-9]+_[0-9]+|[^_le]+)(le)")
-        set(_CMAKE_TOOLCHAIN_PREFIX nto${CMAKE_MATCH_1}-)
-      endif()
-    endif ()
-
-    # if "llvm-" is part of the prefix, remove it, since llvm doesn't have its own binutils
-    # but uses the regular ar, objcopy, etc. (instead of llvm-objcopy etc.)
-    if ("${_CMAKE_TOOLCHAIN_PREFIX}" MATCHES "(.+-)?llvm-$")
-      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
-    endif ()
-  endif()
-
-endif ()
-
-set(_CMAKE_PROCESSING_LANGUAGE "OBJCXX")
-include(CMakeFindBinUtils)
-include(Compiler/${CMAKE_OBJCXX_COMPILER_ID}-FindBinUtils OPTIONAL)
-unset(_CMAKE_PROCESSING_LANGUAGE)
-
-if(CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID)
-  set(_SET_CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID
-    "set(CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID ${CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID})")
-else()
-  set(_SET_CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID "")
-endif()
-
-if(CMAKE_OBJCXX_XCODE_ARCHS)
-  set(SET_CMAKE_XCODE_ARCHS
-    "set(CMAKE_XCODE_ARCHS \"${CMAKE_OBJCXX_XCODE_ARCHS}\")")
-endif()
-
-# configure all variables set in this file
-configure_file(${CMAKE_ROOT}/Modules/CMakeOBJCXXCompiler.cmake.in
-  ${CMAKE_PLATFORM_INFO_DIR}/CMakeOBJCXXCompiler.cmake
-  @ONLY
-  )
-
-set(CMAKE_OBJCXX_COMPILER_ENV_VAR "OBJCXX")
diff --git a/share/cmake-3.18/Modules/CMakeDetermineRCCompiler.cmake b/share/cmake-3.18/Modules/CMakeDetermineRCCompiler.cmake
deleted file mode 100644
index 8801e16..0000000
--- a/share/cmake-3.18/Modules/CMakeDetermineRCCompiler.cmake
+++ /dev/null
@@ -1,57 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# determine the compiler to use for RC programs
-# NOTE, a generator may set CMAKE_RC_COMPILER before
-# loading this file to force a compiler.
-# use environment variable RC first if defined by user, next use
-# the cmake variable CMAKE_GENERATOR_RC which can be defined by a generator
-# as a default compiler
-if(NOT CMAKE_RC_COMPILER)
-  # prefer the environment variable RC
-  if(NOT $ENV{RC} STREQUAL "")
-    get_filename_component(CMAKE_RC_COMPILER_INIT $ENV{RC} PROGRAM PROGRAM_ARGS CMAKE_RC_FLAGS_ENV_INIT)
-    if(CMAKE_RC_FLAGS_ENV_INIT)
-      set(CMAKE_RC_COMPILER_ARG1 "${CMAKE_RC_FLAGS_ENV_INIT}" CACHE STRING "First argument to RC compiler")
-    endif()
-    if(EXISTS ${CMAKE_RC_COMPILER_INIT})
-    else()
-      message(FATAL_ERROR "Could not find compiler set in environment variable RC:\n$ENV{RC}.")
-    endif()
-  endif()
-
-  # next try prefer the compiler specified by the generator
-  if(CMAKE_GENERATOR_RC)
-    if(NOT CMAKE_RC_COMPILER_INIT)
-      set(CMAKE_RC_COMPILER_INIT ${CMAKE_GENERATOR_RC})
-    endif()
-  endif()
-
-  # finally list compilers to try
-  if(CMAKE_RC_COMPILER_INIT)
-    set(CMAKE_RC_COMPILER_LIST ${CMAKE_RC_COMPILER_INIT})
-  else()
-    set(CMAKE_RC_COMPILER_LIST rc)
-  endif()
-
-  # Find the compiler.
-  find_program(CMAKE_RC_COMPILER NAMES ${CMAKE_RC_COMPILER_LIST} DOC "RC compiler")
-  if(CMAKE_RC_COMPILER_INIT AND NOT CMAKE_RC_COMPILER)
-    set(CMAKE_RC_COMPILER "${CMAKE_RC_COMPILER_INIT}" CACHE FILEPATH "RC compiler" FORCE)
-  endif()
-endif()
-
-mark_as_advanced(CMAKE_RC_COMPILER)
-
-get_filename_component(_CMAKE_RC_COMPILER_NAME_WE ${CMAKE_RC_COMPILER} NAME_WE)
-if(_CMAKE_RC_COMPILER_NAME_WE STREQUAL "windres")
-  set(CMAKE_RC_OUTPUT_EXTENSION .obj)
-else()
-  set(CMAKE_RC_OUTPUT_EXTENSION .res)
-endif()
-
-# configure variables set in this file for fast reload later on
-configure_file(${CMAKE_ROOT}/Modules/CMakeRCCompiler.cmake.in
-               ${CMAKE_PLATFORM_INFO_DIR}/CMakeRCCompiler.cmake)
-set(CMAKE_RC_COMPILER_ENV_VAR "RC")
diff --git a/share/cmake-3.18/Modules/CMakeDetermineSwiftCompiler.cmake b/share/cmake-3.18/Modules/CMakeDetermineSwiftCompiler.cmake
deleted file mode 100644
index 688133f..0000000
--- a/share/cmake-3.18/Modules/CMakeDetermineSwiftCompiler.cmake
+++ /dev/null
@@ -1,78 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
-
-# Local system-specific compiler preferences for this language.
-include(Platform/${CMAKE_SYSTEM_NAME}-Determine-Swift OPTIONAL)
-include(Platform/${CMAKE_SYSTEM_NAME}-Swift OPTIONAL)
-if(NOT CMAKE_Swift_COMPILER_NAMES)
-  set(CMAKE_Swift_COMPILER_NAMES swiftc)
-endif()
-
-if("${CMAKE_GENERATOR}" STREQUAL "Xcode")
-  if(XCODE_VERSION VERSION_LESS 6.1)
-    message(FATAL_ERROR "Swift language not supported by Xcode ${XCODE_VERSION}")
-  endif()
-  set(CMAKE_Swift_COMPILER_XCODE_TYPE sourcecode.swift)
-  _cmake_find_compiler_path(Swift)
-elseif("${CMAKE_GENERATOR}" MATCHES "^Ninja")
-  if(CMAKE_Swift_COMPILER)
-    _cmake_find_compiler_path(Swift)
-  else()
-    set(CMAKE_Swift_COMPILER_INIT NOTFOUND)
-
-    if(NOT $ENV{SWIFTC} STREQUAL "")
-      get_filename_component(CMAKE_Swift_COMPILER_INIT $ENV{SWIFTC} PROGRAM
-        PROGRAM_ARGS CMAKE_Swift_FLAGS_ENV_INIT)
-      if(CMAKE_Swift_FLAGS_ENV_INIT)
-        set(CMAKE_Swift_COMPILER_ARG1 "${CMAKE_Swift_FLAGS_ENV_INIT}" CACHE
-          STRING "First argument to the Swift compiler")
-      endif()
-      if(NOT EXISTS ${CMAKE_Swift_COMPILER_INIT})
-        message(FATAL_ERROR "Could not find compiler set in environment variable SWIFTC\n$ENV{SWIFTC}.\n${CMAKE_Swift_COMPILER_INIT}")
-      endif()
-    endif()
-
-    if(NOT CMAKE_Swift_COMPILER_INIT)
-      set(CMAKE_Swift_COMPILER_LIST swiftc ${_CMAKE_TOOLCHAIN_PREFIX}swiftc)
-    endif()
-
-    _cmake_find_compiler(Swift)
-  endif()
-  mark_as_advanced(CMAKE_Swift_COMPILER)
-else()
-  message(FATAL_ERROR "Swift language not supported by \"${CMAKE_GENERATOR}\" generator")
-endif()
-
-# Build a small source file to identify the compiler.
-if(NOT CMAKE_Swift_COMPILER_ID_RUN)
-  set(CMAKE_Swift_COMPILER_ID_RUN 1)
-
-  if("${CMAKE_GENERATOR}" STREQUAL "Xcode")
-    list(APPEND CMAKE_Swift_COMPILER_ID_MATCH_VENDORS Apple)
-    set(CMAKE_Swift_COMPILER_ID_MATCH_VENDOR_REGEX_Apple "com.apple.xcode.tools.swift.compiler")
-
-    set(CMAKE_Swift_COMPILER_ID_TOOL_MATCH_REGEX "\nCompileSwift[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]* -c[^\r\n]*CompilerIdSwift/CompilerId/main.swift")
-    set(CMAKE_Swift_COMPILER_ID_TOOL_MATCH_INDEX 2)
-  endif()
-
-  # Try to identify the compiler.
-  set(CMAKE_Swift_COMPILER_ID)
-  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
-  CMAKE_DETERMINE_COMPILER_ID(Swift "" CompilerId/main.swift)
-endif()
-
-if (NOT _CMAKE_TOOLCHAIN_LOCATION)
-  get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_Swift_COMPILER}" PATH)
-endif ()
-
-set(_CMAKE_PROCESSING_LANGUAGE "Swift")
-include(CMakeFindBinUtils)
-unset(_CMAKE_PROCESSING_LANGUAGE)
-
-# configure variables set in this file for fast reload later on
-configure_file(${CMAKE_ROOT}/Modules/CMakeSwiftCompiler.cmake.in
-               ${CMAKE_PLATFORM_INFO_DIR}/CMakeSwiftCompiler.cmake @ONLY)
-
-set(CMAKE_Swift_COMPILER_ENV_VAR "SWIFTC")
diff --git a/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake b/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake
deleted file mode 100644
index f3ec4da..0000000
--- a/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake
+++ /dev/null
@@ -1,189 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This module is used by the Makefile generator to determine the following variables:
-# CMAKE_SYSTEM_NAME - on unix this is uname -s, for windows it is Windows
-# CMAKE_SYSTEM_VERSION - on unix this is uname -r, for windows it is empty
-# CMAKE_SYSTEM - ${CMAKE_SYSTEM}-${CMAKE_SYSTEM_VERSION}, for windows: ${CMAKE_SYSTEM}
-#
-#  Expected uname -s output:
-#
-# AIX                           AIX
-# BSD/OS                        BSD/OS
-# FreeBSD                       FreeBSD
-# HP-UX                         HP-UX
-# Linux                         Linux
-# GNU/kFreeBSD                  GNU/kFreeBSD
-# NetBSD                        NetBSD
-# OpenBSD                       OpenBSD
-# OFS/1 (Digital Unix)          OSF1
-# SCO OpenServer 5              SCO_SV
-# SCO UnixWare 7                UnixWare
-# SCO UnixWare (pre release 7)  UNIX_SV
-# SCO XENIX                     Xenix
-# Solaris                       SunOS
-# SunOS                         SunOS
-# Tru64                         Tru64
-# Ultrix                        ULTRIX
-# cygwin                        CYGWIN_NT-5.1
-# MacOSX                        Darwin
-
-
-# find out on which system cmake runs
-if(CMAKE_HOST_UNIX)
-  find_program(CMAKE_UNAME uname /bin /usr/bin /usr/local/bin )
-  if(CMAKE_UNAME)
-    if(CMAKE_HOST_SYSTEM_NAME STREQUAL "AIX")
-      exec_program(${CMAKE_UNAME} ARGS -v OUTPUT_VARIABLE _CMAKE_HOST_SYSTEM_MAJOR_VERSION)
-      exec_program(${CMAKE_UNAME} ARGS -r OUTPUT_VARIABLE _CMAKE_HOST_SYSTEM_MINOR_VERSION)
-      set(CMAKE_HOST_SYSTEM_VERSION "${_CMAKE_HOST_SYSTEM_MAJOR_VERSION}.${_CMAKE_HOST_SYSTEM_MINOR_VERSION}")
-      unset(_CMAKE_HOST_SYSTEM_MAJOR_VERSION)
-      unset(_CMAKE_HOST_SYSTEM_MINOR_VERSION)
-    else()
-      exec_program(${CMAKE_UNAME} ARGS -r OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION)
-    endif()
-    if(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux|CYGWIN.*|Darwin|^GNU$|Android")
-      exec_program(${CMAKE_UNAME} ARGS -m OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_PROCESSOR
-        RETURN_VALUE val)
-      if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin" AND
-         CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "Power Macintosh")
-        # OS X ppc 'uname -m' may report 'Power Macintosh' instead of 'powerpc'
-        set(CMAKE_HOST_SYSTEM_PROCESSOR "powerpc")
-      endif()
-    elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "OpenBSD")
-      exec_program(arch ARGS -s OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_PROCESSOR
-        RETURN_VALUE val)
-    else()
-      exec_program(${CMAKE_UNAME} ARGS -p OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_PROCESSOR
-        RETURN_VALUE val)
-      if("${val}" GREATER 0)
-        exec_program(${CMAKE_UNAME} ARGS -m OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_PROCESSOR
-          RETURN_VALUE val)
-      endif()
-    endif()
-    # check the return of the last uname -m or -p
-    if("${val}" GREATER 0)
-        set(CMAKE_HOST_SYSTEM_PROCESSOR "unknown")
-    endif()
-    set(CMAKE_UNAME ${CMAKE_UNAME} CACHE INTERNAL "uname command")
-    # processor may have double quote in the name, and that needs to be removed
-    string(REPLACE "\"" "" CMAKE_HOST_SYSTEM_PROCESSOR "${CMAKE_HOST_SYSTEM_PROCESSOR}")
-    string(REPLACE "/" "_" CMAKE_HOST_SYSTEM_PROCESSOR "${CMAKE_HOST_SYSTEM_PROCESSOR}")
-  endif()
-else()
-  if(CMAKE_HOST_WIN32)
-    if (DEFINED ENV{PROCESSOR_ARCHITEW6432})
-      set (CMAKE_HOST_SYSTEM_PROCESSOR "$ENV{PROCESSOR_ARCHITEW6432}")
-    else()
-      set (CMAKE_HOST_SYSTEM_PROCESSOR "$ENV{PROCESSOR_ARCHITECTURE}")
-    endif()
-  endif()
-endif()
-
-# if a toolchain file is used, the user wants to cross compile.
-# in this case read the toolchain file and keep the CMAKE_HOST_SYSTEM_*
-# variables around so they can be used in CMakeLists.txt.
-# In all other cases, the host and target platform are the same.
-if(CMAKE_TOOLCHAIN_FILE)
-  # at first try to load it as path relative to the directory from which cmake has been run
-  include("${CMAKE_BINARY_DIR}/${CMAKE_TOOLCHAIN_FILE}" OPTIONAL RESULT_VARIABLE _INCLUDED_TOOLCHAIN_FILE)
-  if(NOT _INCLUDED_TOOLCHAIN_FILE)
-     # if the file isn't found there, check the default locations
-     include("${CMAKE_TOOLCHAIN_FILE}" OPTIONAL RESULT_VARIABLE _INCLUDED_TOOLCHAIN_FILE)
-  endif()
-
-  if(_INCLUDED_TOOLCHAIN_FILE)
-    set(CMAKE_TOOLCHAIN_FILE "${_INCLUDED_TOOLCHAIN_FILE}" CACHE FILEPATH "The CMake toolchain file" FORCE)
-  else()
-    message(FATAL_ERROR "Could not find toolchain file: ${CMAKE_TOOLCHAIN_FILE}")
-    set(CMAKE_TOOLCHAIN_FILE "NOTFOUND" CACHE FILEPATH "The CMake toolchain file" FORCE)
-  endif()
-endif()
-
-
-# if CMAKE_SYSTEM_NAME is here already set, either it comes from a toolchain file
-# or it was set via -DCMAKE_SYSTEM_NAME=...
-# if that's the case, assume we are crosscompiling
-if(CMAKE_SYSTEM_NAME)
-  if(NOT DEFINED CMAKE_CROSSCOMPILING)
-    set(CMAKE_CROSSCOMPILING TRUE)
-  endif()
-  set(PRESET_CMAKE_SYSTEM_NAME TRUE)
-elseif(CMAKE_VS_WINCE_VERSION)
-  set(CMAKE_SYSTEM_NAME      "WindowsCE")
-  set(CMAKE_SYSTEM_VERSION   "${CMAKE_VS_WINCE_VERSION}")
-  set(CMAKE_SYSTEM_PROCESSOR "${MSVC_C_ARCHITECTURE_ID}")
-  set(CMAKE_CROSSCOMPILING TRUE)
-  set(PRESET_CMAKE_SYSTEM_NAME TRUE)
-else()
-  set(CMAKE_SYSTEM_NAME      "${CMAKE_HOST_SYSTEM_NAME}")
-  if(NOT DEFINED CMAKE_SYSTEM_VERSION)
-    set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}")
-  endif()
-  set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_HOST_SYSTEM_PROCESSOR}")
-  set(CMAKE_CROSSCOMPILING FALSE)
-  set(PRESET_CMAKE_SYSTEM_NAME FALSE)
-endif()
-
-include(Platform/${CMAKE_SYSTEM_NAME}-Determine OPTIONAL)
-
-macro(ADJUST_CMAKE_SYSTEM_VARIABLES _PREFIX)
-  if(NOT ${_PREFIX}_NAME)
-    set(${_PREFIX}_NAME "UnknownOS")
-  endif()
-
-  # fix for BSD/OS , remove the /
-  if(${_PREFIX}_NAME MATCHES BSD.OS)
-    set(${_PREFIX}_NAME BSDOS)
-  endif()
-
-  # fix for GNU/kFreeBSD, remove the GNU/
-  if(${_PREFIX}_NAME MATCHES kFreeBSD)
-    set(${_PREFIX}_NAME kFreeBSD)
-  endif()
-
-  # fix for CYGWIN which has windows version in it
-  if(${_PREFIX}_NAME MATCHES CYGWIN)
-    set(${_PREFIX}_NAME CYGWIN)
-  endif()
-
-  # set CMAKE_SYSTEM to the CMAKE_SYSTEM_NAME
-  set(${_PREFIX}  ${${_PREFIX}_NAME})
-  # if there is a CMAKE_SYSTEM_VERSION then add a -${CMAKE_SYSTEM_VERSION}
-  if(${_PREFIX}_VERSION)
-    set(${_PREFIX} ${${_PREFIX}}-${${_PREFIX}_VERSION})
-  endif()
-
-endmacro()
-
-ADJUST_CMAKE_SYSTEM_VARIABLES(CMAKE_SYSTEM)
-ADJUST_CMAKE_SYSTEM_VARIABLES(CMAKE_HOST_SYSTEM)
-
-# this file is also executed from cpack, then we don't need to generate these files
-# in this case there is no CMAKE_BINARY_DIR
-if(CMAKE_BINARY_DIR)
-  # write entry to the log file
-  if(PRESET_CMAKE_SYSTEM_NAME)
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-                "The target system is: ${CMAKE_SYSTEM_NAME} - ${CMAKE_SYSTEM_VERSION} - ${CMAKE_SYSTEM_PROCESSOR}\n")
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-                "The host system is: ${CMAKE_HOST_SYSTEM_NAME} - ${CMAKE_HOST_SYSTEM_VERSION} - ${CMAKE_HOST_SYSTEM_PROCESSOR}\n")
-  else()
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-                "The system is: ${CMAKE_SYSTEM_NAME} - ${CMAKE_SYSTEM_VERSION} - ${CMAKE_SYSTEM_PROCESSOR}\n")
-  endif()
-
-  # if a toolchain file is used, it needs to be included in the configured file,
-  # so settings done there are also available if they don't go in the cache and in try_compile()
-  set(INCLUDE_CMAKE_TOOLCHAIN_FILE_IF_REQUIRED)
-  if(CMAKE_TOOLCHAIN_FILE)
-    set(INCLUDE_CMAKE_TOOLCHAIN_FILE_IF_REQUIRED "include(\"${CMAKE_TOOLCHAIN_FILE}\")")
-  endif()
-
-  # configure variables set in this file for fast reload, the template file is defined at the top of this file
-  configure_file(${CMAKE_ROOT}/Modules/CMakeSystem.cmake.in
-                ${CMAKE_PLATFORM_INFO_DIR}/CMakeSystem.cmake
-                @ONLY)
-
-endif()
diff --git a/share/cmake-3.18/Modules/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake b/share/cmake-3.18/Modules/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake
deleted file mode 100644
index 11f4a29..0000000
--- a/share/cmake-3.18/Modules/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake
+++ /dev/null
@@ -1,114 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This file is included by CMakeFindEclipseCDT4.cmake and CMakeFindCodeBlocks.cmake
-
-# The Eclipse and the CodeBlocks generators need to know the standard include path
-# so that they can find the headers at runtime and parsing etc. works better
-# This is done here by actually running gcc with the options so it prints its
-# system include directories, which are parsed then and stored in the cache.
-macro(_DETERMINE_GCC_SYSTEM_INCLUDE_DIRS _lang _resultIncludeDirs _resultDefines)
-  set(${_resultIncludeDirs})
-  set(_gccOutput)
-  file(WRITE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy" "\n" )
-
-  if (${_lang} STREQUAL "c++")
-    set(_compilerExecutable "${CMAKE_CXX_COMPILER}")
-    set(_arg1 "${CMAKE_CXX_COMPILER_ARG1}")
-
-    if (CMAKE_CXX_FLAGS MATCHES "(-stdlib=[^ ]+)")
-      set(_stdlib "${CMAKE_MATCH_1}")
-    endif ()
-    if (CMAKE_CXX_FLAGS MATCHES "(-std=[^ ]+)")
-      set(_stdver "${CMAKE_MATCH_1}")
-    endif ()
-  else ()
-    set(_compilerExecutable "${CMAKE_C_COMPILER}")
-    set(_arg1 "${CMAKE_C_COMPILER_ARG1}")
-  endif ()
-  separate_arguments(_arg1 NATIVE_COMMAND "${_arg1}")
-  execute_process(COMMAND ${_compilerExecutable} ${_arg1} ${_stdver} ${_stdlib} -v -E -x ${_lang} -dD dummy
-                  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles
-                  ERROR_VARIABLE _gccOutput
-                  OUTPUT_VARIABLE _gccStdout )
-  file(REMOVE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy")
-
-  # First find the system include dirs:
-  if( "${_gccOutput}" MATCHES "> search starts here[^\n]+\n *(.+ *\n) *End of (search) list" )
-
-    # split the output into lines and then remove leading and trailing spaces from each of them:
-    string(REGEX MATCHALL "[^\n]+\n" _includeLines "${CMAKE_MATCH_1}")
-    foreach(nextLine ${_includeLines})
-      # on OSX, gcc says things like this:  "/System/Library/Frameworks (framework directory)", strip the last part
-      string(REGEX REPLACE "\\(framework directory\\)" "" nextLineNoFramework "${nextLine}")
-      # strip spaces at the beginning and the end
-      string(STRIP "${nextLineNoFramework}" _includePath)
-      list(APPEND ${_resultIncludeDirs} "${_includePath}")
-    endforeach()
-
-  endif()
-
-
-  # now find the builtin macros:
-  string(REGEX MATCHALL "#define[^\n]+\n" _defineLines "${_gccStdout}")
-# A few example lines which the regexp below has to match properly:
-#  #define   MAX(a,b) ((a) > (b) ? (a) : (b))
-#  #define __fastcall __attribute__((__fastcall__))
-#  #define   FOO (23)
-#  #define __UINTMAX_TYPE__ long long unsigned int
-#  #define __UINTMAX_TYPE__ long long unsigned int
-#  #define __i386__  1
-
-  foreach(nextLine ${_defineLines})
-    string(REGEX MATCH "^#define +([A-Za-z_][A-Za-z0-9_]*)(\\([^\\)]+\\))? +(.+) *$" _dummy "${nextLine}")
-    set(_name "${CMAKE_MATCH_1}${CMAKE_MATCH_2}")
-    string(STRIP "${CMAKE_MATCH_3}" _value)
-    #message(STATUS "m1: -${CMAKE_MATCH_1}- m2: -${CMAKE_MATCH_2}- m3: -${CMAKE_MATCH_3}-")
-
-    list(APPEND ${_resultDefines} "${_name}")
-    if ("${_value}" STREQUAL "")
-      list(APPEND ${_resultDefines} " ")
-    else()
-      list(APPEND ${_resultDefines} "${_value}")
-    endif()
-  endforeach()
-
-endmacro()
-
-# Save the current LC_ALL, LC_MESSAGES, and LANG environment variables and set them
-# to "C" that way GCC's "search starts here" text is in English and we can grok it.
-set(_orig_lc_all      $ENV{LC_ALL})
-set(_orig_lc_messages $ENV{LC_MESSAGES})
-set(_orig_lang        $ENV{LANG})
-
-set(ENV{LC_ALL}      C)
-set(ENV{LC_MESSAGES} C)
-set(ENV{LANG}        C)
-
-# Now check for C, works for gcc and Intel compiler at least
-if (NOT CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS)
-  if (CMAKE_C_COMPILER_ID MATCHES GNU  OR  CMAKE_C_COMPILER_ID MATCHES Intel  OR  CMAKE_C_COMPILER_ID MATCHES Clang)
-    _DETERMINE_GCC_SYSTEM_INCLUDE_DIRS(c _dirs _defines)
-    set(CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS "${_dirs}" CACHE INTERNAL "C compiler system include directories")
-    set(CMAKE_EXTRA_GENERATOR_C_SYSTEM_DEFINED_MACROS "${_defines}" CACHE INTERNAL "C compiler system defined macros")
-  elseif ("${CMAKE_C_COMPILER_ID}" MATCHES MSVC)
-    set(CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS "$ENV{INCLUDE}" CACHE INTERNAL "C compiler system include directories")
-  endif ()
-endif ()
-
-# And now the same for C++
-if (NOT CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS)
-  if ("${CMAKE_CXX_COMPILER_ID}" MATCHES GNU  OR  "${CMAKE_CXX_COMPILER_ID}" MATCHES Intel  OR  "${CMAKE_CXX_COMPILER_ID}" MATCHES Clang)
-    _DETERMINE_GCC_SYSTEM_INCLUDE_DIRS(c++ _dirs _defines)
-    set(CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS "${_dirs}" CACHE INTERNAL "CXX compiler system include directories")
-    set(CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_DEFINED_MACROS "${_defines}" CACHE INTERNAL "CXX compiler system defined macros")
-  elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES MSVC)
-    set(CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS "$ENV{INCLUDE}" CACHE INTERNAL "CXX compiler system include directories")
-  endif ()
-endif ()
-
-# Restore original LC_ALL, LC_MESSAGES, and LANG
-set(ENV{LC_ALL}      ${_orig_lc_all})
-set(ENV{LC_MESSAGES} ${_orig_lc_messages})
-set(ENV{LANG}        ${_orig_lang})
diff --git a/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake b/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake
deleted file mode 100644
index de9ef9a..0000000
--- a/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake
+++ /dev/null
@@ -1,144 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# search for additional tools required for C/C++ (and other languages ?)
-#
-# If the internal cmake variable _CMAKE_TOOLCHAIN_PREFIX is set, this is used
-# as prefix for the tools (e.g. arm-elf-gcc etc.)
-# If the cmake variable _CMAKE_TOOLCHAIN_LOCATION is set, the compiler is
-# searched only there. The other tools are at first searched there, then
-# also in the default locations.
-#
-# Sets the following variables:
-#   CMAKE_AR
-#   CMAKE_RANLIB
-#   CMAKE_LINKER
-#   CMAKE_MT
-#   CMAKE_STRIP
-#   CMAKE_INSTALL_NAME_TOOL
-
-# on UNIX, cygwin and mingw
-
-# Resolve full path of CMAKE_TOOL from user-defined name and SEARCH_PATH.
-function(__resolve_tool_path CMAKE_TOOL SEARCH_PATH DOCSTRING)
-
-  if(${CMAKE_TOOL})
-    # We only get here if CMAKE_TOOL was
-    # specified using -D or a pre-made CMakeCache.txt (e.g. via ctest)
-    # or set in CMAKE_TOOLCHAIN_FILE.
-
-    get_filename_component(_CMAKE_USER_TOOL_PATH "${${CMAKE_TOOL}}" DIRECTORY)
-    # Is CMAKE_TOOL a user-defined name instead of a full path?
-    if(NOT _CMAKE_USER_TOOL_PATH)
-
-      # Find CMAKE_TOOL in the SEARCH_PATH directory by user-defined name.
-      find_program(_CMAKE_TOOL_WITH_PATH NAMES ${${CMAKE_TOOL}} HINTS ${SEARCH_PATH})
-      if(_CMAKE_TOOL_WITH_PATH)
-
-        # Overwrite CMAKE_TOOL with full path found in SEARCH_PATH.
-        set(${CMAKE_TOOL} ${_CMAKE_TOOL_WITH_PATH} PARENT_SCOPE)
-
-        get_property(_CMAKE_TOOL_CACHED CACHE ${CMAKE_TOOL} PROPERTY TYPE)
-        # If CMAKE_TOOL is present in the CMake Cache, then overwrit it as well.
-        if(_CMAKE_TOOL_CACHED)
-          set(${CMAKE_TOOL} "${_CMAKE_TOOL_WITH_PATH}" CACHE STRING ${DOCSTRING} FORCE)
-        endif()
-
-      endif()
-      unset(_CMAKE_TOOL_WITH_PATH CACHE)
-
-    endif()
-
-  endif()
-
-endfunction()
-
-__resolve_tool_path(CMAKE_LINKER "${_CMAKE_TOOLCHAIN_LOCATION}" "Default Linker")
-__resolve_tool_path(CMAKE_MT     "${_CMAKE_TOOLCHAIN_LOCATION}" "Default Manifest Tool")
-
-set(_CMAKE_TOOL_VARS "")
-
-# if it's the MS C/CXX compiler, search for link
-if(("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_SIMULATE_ID}" STREQUAL "xMSVC" AND
-   ("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC"
-    OR NOT "x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xClang"))
-   OR "x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xMSVC"
-   OR (CMAKE_HOST_WIN32 AND "x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xPGI")
-   OR (CMAKE_HOST_WIN32 AND "x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xNVIDIA")
-   OR (CMAKE_GENERATOR MATCHES "Visual Studio"
-       AND NOT CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android"))
-
-  if("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xClang")
-    find_program(CMAKE_NM NAMES ${_CMAKE_TOOLCHAIN_PREFIX}nm llvm-nm HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
-    set(_CMAKE_ADDITIONAL_LINKER_NAMES "lld-link")
-  endif()
-
-  find_program(CMAKE_LINKER NAMES ${_CMAKE_ADDITIONAL_LINKER_NAMES} link HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
-  find_program(CMAKE_AR     NAMES lib  HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
-  find_program(CMAKE_MT     NAMES mt   HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
-
-  list(APPEND _CMAKE_TOOL_VARS LINKER MT)
-
-# in all other cases search for ar, ranlib, etc.
-else()
-  if(CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN)
-    set(_CMAKE_TOOLCHAIN_LOCATION ${_CMAKE_TOOLCHAIN_LOCATION} ${CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN}/bin)
-  endif()
-  if(CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN)
-    set(_CMAKE_TOOLCHAIN_LOCATION ${_CMAKE_TOOLCHAIN_LOCATION} ${CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN}/bin)
-  endif()
-
-  if("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL Clang)
-    set(_CMAKE_ADDITIONAL_AR_NAMES "llvm-ar")
-    set(_CMAKE_ADDITIONAL_RANLIB_NAMES "llvm-ranlib")
-    set(_CMAKE_ADDITIONAL_STRIP_NAMES "llvm-strip")
-    set(_CMAKE_ADDITIONAL_LINKER_NAMES "ld.lld")
-    set(_CMAKE_ADDITIONAL_NM_NAMES "llvm-nm")
-    set(_CMAKE_ADDITIONAL_OBJDUMP_NAMES "llvm-objdump")
-    set(_CMAKE_ADDITIONAL_OBJCOPY_NAMES "llvm-objcopy")
-    set(_CMAKE_ADDITIONAL_READELF_NAMES "llvm-readelf")
-    set(_CMAKE_ADDITIONAL_DLLTOOL_NAMES "llvm-dlltool")
-    set(_CMAKE_ADDITIONAL_ADDR2LINE_NAMES "llvm-addr2line")
-  endif()
-
-  find_program(CMAKE_AR NAMES ${_CMAKE_TOOLCHAIN_PREFIX}ar${_CMAKE_TOOLCHAIN_SUFFIX} ${_CMAKE_ADDITIONAL_AR_NAMES} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
-
-  find_program(CMAKE_RANLIB NAMES ${_CMAKE_TOOLCHAIN_PREFIX}ranlib ${_CMAKE_ADDITIONAL_RANLIB_NAMES} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
-  if(NOT CMAKE_RANLIB)
-    set(CMAKE_RANLIB : CACHE INTERNAL "noop for ranlib")
-  endif()
-
-
-  find_program(CMAKE_STRIP NAMES ${_CMAKE_TOOLCHAIN_PREFIX}strip${_CMAKE_TOOLCHAIN_SUFFIX} ${_CMAKE_ADDITIONAL_STRIP_NAMES} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
-  find_program(CMAKE_LINKER NAMES ${_CMAKE_TOOLCHAIN_PREFIX}ld ${_CMAKE_ADDITIONAL_LINKER_NAMES} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
-  find_program(CMAKE_NM NAMES ${_CMAKE_TOOLCHAIN_PREFIX}nm ${_CMAKE_ADDITIONAL_NM_NAMES} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
-  find_program(CMAKE_OBJDUMP NAMES ${_CMAKE_TOOLCHAIN_PREFIX}objdump ${_CMAKE_ADDITIONAL_OBJDUMP_NAMES} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
-  find_program(CMAKE_OBJCOPY NAMES ${_CMAKE_TOOLCHAIN_PREFIX}objcopy ${_CMAKE_ADDITIONAL_OBJCOPY_NAMES} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
-  find_program(CMAKE_READELF NAMES ${_CMAKE_TOOLCHAIN_PREFIX}readelf ${_CMAKE_ADDITIONAL_READELF_NAMES} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
-  find_program(CMAKE_DLLTOOL NAMES ${_CMAKE_TOOLCHAIN_PREFIX}dlltool ${_CMAKE_ADDITIONAL_DLLTOOL_NAMES} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
-  find_program(CMAKE_ADDR2LINE NAMES ${_CMAKE_TOOLCHAIN_PREFIX}addr2line ${_CMAKE_ADDITIONAL_ADDR2LINE_NAMES} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
-
-  list(APPEND _CMAKE_TOOL_VARS AR RANLIB STRIP LINKER NM OBJDUMP OBJCOPY READELF DLLTOOL ADDR2LINE)
-endif()
-
-if(CMAKE_PLATFORM_HAS_INSTALLNAME)
-  find_program(CMAKE_INSTALL_NAME_TOOL NAMES ${_CMAKE_TOOLCHAIN_PREFIX}install_name_tool HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
-
-  if(NOT CMAKE_INSTALL_NAME_TOOL)
-    message(FATAL_ERROR "Could not find install_name_tool, please check your installation.")
-  endif()
-
-  list(APPEND _CMAKE_TOOL_VARS INSTALL_NAME_TOOL)
-endif()
-
-# Mark any tool cache entries as advanced.
-foreach(var IN LISTS _CMAKE_TOOL_VARS)
-  get_property(_CMAKE_TOOL_CACHED CACHE CMAKE_${var} PROPERTY TYPE)
-  if(_CMAKE_TOOL_CACHED)
-    mark_as_advanced(CMAKE_${var})
-  endif()
-  unset(_CMAKE_ADDITIONAL_${var}_NAMES)
-endforeach()
-unset(_CMAKE_TOOL_VARS)
-unset(_CMAKE_TOOL_CACHED)
diff --git a/share/cmake-3.18/Modules/CMakeFindPackageMode.cmake b/share/cmake-3.18/Modules/CMakeFindPackageMode.cmake
deleted file mode 100644
index 815dfc9..0000000
--- a/share/cmake-3.18/Modules/CMakeFindPackageMode.cmake
+++ /dev/null
@@ -1,204 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CMakeFindPackageMode
---------------------
-
-
-
-This file is executed by cmake when invoked with --find-package.  It
-expects that the following variables are set using -D:
-
-``NAME``
-  name of the package
-``COMPILER_ID``
-  the CMake compiler ID for which the result is,
-  i.e. GNU/Intel/Clang/MSVC, etc.
-``LANGUAGE``
-  language for which the result will be used,
-  i.e. C/CXX/Fortran/ASM
-``MODE``
-  ``EXIST``
-    only check for existence of the given package
-  ``COMPILE``
-    print the flags needed for compiling an object file which uses
-    the given package
-  ``LINK``
-    print the flags needed for linking when using the given package
-``QUIET``
-  if TRUE, don't print anything
-#]=======================================================================]
-
-if(NOT NAME)
-  message(FATAL_ERROR "Name of the package to be searched not specified. Set the CMake variable NAME, e.g. -DNAME=JPEG .")
-endif()
-
-if(NOT COMPILER_ID)
-  message(FATAL_ERROR "COMPILER_ID argument not specified. In doubt, use GNU.")
-endif()
-
-if(NOT LANGUAGE)
-  message(FATAL_ERROR "LANGUAGE argument not specified. Use C, CXX or Fortran.")
-endif()
-
-if(NOT MODE)
-  message(FATAL_ERROR "MODE argument not specified. Use either EXIST, COMPILE or LINK.")
-endif()
-
-# require the current version. If we don't do this, Platforms/CYGWIN.cmake complains because
-# it doesn't know whether it should set WIN32 or not:
-cmake_minimum_required(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} )
-
-macro(ENABLE_LANGUAGE)
-  # disable the enable_language() command, otherwise --find-package breaks on Windows.
-  # On Windows, enable_language(RC) is called in the platform files unconditionally.
-  # But in --find-package mode, we don't want (and can't) enable any language.
-endmacro()
-
-set(CMAKE_PLATFORM_INFO_DIR ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY})
-
-include(CMakeDetermineSystem)
-
-# short-cut some tests on Darwin, see Darwin-GNU.cmake:
-if("${CMAKE_SYSTEM_NAME}" MATCHES Darwin  AND  "${COMPILER_ID}" MATCHES GNU)
-  set(CMAKE_${LANGUAGE}_SYSROOT_FLAG "")
-  set(CMAKE_${LANGUAGE}_OSX_DEPLOYMENT_TARGET_FLAG "")
-endif()
-
-include(CMakeSystemSpecificInitialize)
-
-# Also load the system specific file, which sets up e.g. the search paths.
-# This makes the FIND_XXX() calls work much better
-include(CMakeSystemSpecificInformation)
-
-if(UNIX)
-
-  # try to guess whether we have a 64bit system, if it has not been set
-  # from the outside
-  if(NOT CMAKE_SIZEOF_VOID_P)
-    set(CMAKE_SIZEOF_VOID_P 4)
-    if(EXISTS /usr/lib64)
-      set(CMAKE_SIZEOF_VOID_P 8)
-    else()
-      # use the file utility to check whether itself is 64 bit:
-      find_program(FILE_EXECUTABLE file)
-      if(FILE_EXECUTABLE)
-        get_filename_component(FILE_ABSPATH "${FILE_EXECUTABLE}" ABSOLUTE)
-        execute_process(COMMAND "${FILE_ABSPATH}" "${FILE_ABSPATH}" OUTPUT_VARIABLE fileOutput ERROR_QUIET)
-        if("${fileOutput}" MATCHES "64-bit")
-          set(CMAKE_SIZEOF_VOID_P 8)
-        endif()
-      endif()
-    endif()
-  endif()
-
-  # guess Debian multiarch if it has not been set:
-  if(EXISTS /etc/debian_version)
-    if(NOT CMAKE_${LANGUAGE}_LIBRARY_ARCHITECTURE )
-      file(GLOB filesInLib RELATIVE /lib /lib/*-linux-gnu* )
-      foreach(file ${filesInLib})
-        if("${file}" MATCHES "${CMAKE_LIBRARY_ARCHITECTURE_REGEX}")
-          set(CMAKE_${LANGUAGE}_LIBRARY_ARCHITECTURE ${file})
-          break()
-        endif()
-      endforeach()
-    endif()
-    if(NOT CMAKE_LIBRARY_ARCHITECTURE)
-      set(CMAKE_LIBRARY_ARCHITECTURE ${CMAKE_${LANGUAGE}_LIBRARY_ARCHITECTURE})
-    endif()
-  endif()
-
-endif()
-
-set(CMAKE_${LANGUAGE}_COMPILER "dummy")
-set(CMAKE_${LANGUAGE}_COMPILER_ID "${COMPILER_ID}")
-include(CMake${LANGUAGE}Information)
-
-
-function(set_compile_flags_var _packageName)
-  string(TOUPPER "${_packageName}" PACKAGE_NAME)
-  # Check the following variables:
-  # FOO_INCLUDE_DIRS
-  # Foo_INCLUDE_DIRS
-  # FOO_INCLUDES
-  # Foo_INCLUDES
-  # FOO_INCLUDE_DIR
-  # Foo_INCLUDE_DIR
-  set(includes)
-  if(DEFINED ${_packageName}_INCLUDE_DIRS)
-    set(includes ${_packageName}_INCLUDE_DIRS)
-  elseif(DEFINED ${PACKAGE_NAME}_INCLUDE_DIRS)
-    set(includes ${PACKAGE_NAME}_INCLUDE_DIRS)
-  elseif(DEFINED ${_packageName}_INCLUDES)
-    set(includes ${_packageName}_INCLUDES)
-  elseif(DEFINED ${PACKAGE_NAME}_INCLUDES)
-    set(includes ${PACKAGE_NAME}_INCLUDES)
-  elseif(DEFINED ${_packageName}_INCLUDE_DIR)
-    set(includes ${_packageName}_INCLUDE_DIR)
-  elseif(DEFINED ${PACKAGE_NAME}_INCLUDE_DIR)
-    set(includes ${PACKAGE_NAME}_INCLUDE_DIR)
-  endif()
-
-  set(PACKAGE_INCLUDE_DIRS "${${includes}}" PARENT_SCOPE)
-
-  # Check the following variables:
-  # FOO_DEFINITIONS
-  # Foo_DEFINITIONS
-  set(definitions)
-  if(DEFINED ${_packageName}_DEFINITIONS)
-    set(definitions ${_packageName}_DEFINITIONS)
-  elseif(DEFINED ${PACKAGE_NAME}_DEFINITIONS)
-    set(definitions ${PACKAGE_NAME}_DEFINITIONS)
-  endif()
-
-  set(PACKAGE_DEFINITIONS  "${${definitions}}" )
-
-endfunction()
-
-
-function(set_link_flags_var _packageName)
-  string(TOUPPER "${_packageName}" PACKAGE_NAME)
-  # Check the following variables:
-  # FOO_LIBRARIES
-  # Foo_LIBRARIES
-  # FOO_LIBS
-  # Foo_LIBS
-  set(libs)
-  if(DEFINED ${_packageName}_LIBRARIES)
-    set(libs ${_packageName}_LIBRARIES)
-  elseif(DEFINED ${PACKAGE_NAME}_LIBRARIES)
-    set(libs ${PACKAGE_NAME}_LIBRARIES)
-  elseif(DEFINED ${_packageName}_LIBS)
-    set(libs ${_packageName}_LIBS)
-  elseif(DEFINED ${PACKAGE_NAME}_LIBS)
-    set(libs ${PACKAGE_NAME}_LIBS)
-  endif()
-
-  set(PACKAGE_LIBRARIES "${${libs}}" PARENT_SCOPE )
-
-endfunction()
-
-
-find_package("${NAME}" QUIET)
-
-set(PACKAGE_FOUND FALSE)
-
-string(TOUPPER "${NAME}" UPPERCASE_NAME)
-
-if(${NAME}_FOUND  OR  ${UPPERCASE_NAME}_FOUND)
-  set(PACKAGE_FOUND TRUE)
-
-  if("${MODE}" STREQUAL "EXIST")
-    # do nothing
-  elseif("${MODE}" STREQUAL "COMPILE")
-    set_compile_flags_var(${NAME})
-  elseif("${MODE}" STREQUAL "LINK")
-    set_link_flags_var(${NAME})
-  else()
-    message(FATAL_ERROR "Invalid mode argument ${MODE} given.")
-  endif()
-
-endif()
-
-set(PACKAGE_QUIET ${SILENT} )
diff --git a/share/cmake-3.18/Modules/CMakeFortranCompiler.cmake.in b/share/cmake-3.18/Modules/CMakeFortranCompiler.cmake.in
deleted file mode 100644
index 06ee528..0000000
--- a/share/cmake-3.18/Modules/CMakeFortranCompiler.cmake.in
+++ /dev/null
@@ -1,69 +0,0 @@
-set(CMAKE_Fortran_COMPILER "@CMAKE_Fortran_COMPILER@")
-set(CMAKE_Fortran_COMPILER_ARG1 "@CMAKE_Fortran_COMPILER_ARG1@")
-set(CMAKE_Fortran_COMPILER_ID "@CMAKE_Fortran_COMPILER_ID@")
-set(CMAKE_Fortran_COMPILER_VERSION "@CMAKE_Fortran_COMPILER_VERSION@")
-set(CMAKE_Fortran_COMPILER_WRAPPER "@CMAKE_Fortran_COMPILER_WRAPPER@")
-set(CMAKE_Fortran_PLATFORM_ID "@CMAKE_Fortran_PLATFORM_ID@")
-set(CMAKE_Fortran_SIMULATE_ID "@CMAKE_Fortran_SIMULATE_ID@")
-set(CMAKE_Fortran_SIMULATE_VERSION "@CMAKE_Fortran_SIMULATE_VERSION@")
-@_SET_CMAKE_Fortran_XL_CPP@
-@_SET_CMAKE_Fortran_COMPILER_ARCHITECTURE_ID@
-@_SET_CMAKE_Fortran_COMPILER_SYSROOT@
-@SET_MSVC_Fortran_ARCHITECTURE_ID@
-set(CMAKE_AR "@CMAKE_AR@")
-set(CMAKE_Fortran_COMPILER_AR "@CMAKE_Fortran_COMPILER_AR@")
-set(CMAKE_RANLIB "@CMAKE_RANLIB@")
-set(CMAKE_Fortran_COMPILER_RANLIB "@CMAKE_Fortran_COMPILER_RANLIB@")
-set(CMAKE_COMPILER_IS_GNUG77 @CMAKE_COMPILER_IS_GNUG77@)
-set(CMAKE_Fortran_COMPILER_LOADED 1)
-set(CMAKE_Fortran_COMPILER_WORKS @CMAKE_Fortran_COMPILER_WORKS@)
-set(CMAKE_Fortran_ABI_COMPILED @CMAKE_Fortran_ABI_COMPILED@)
-set(CMAKE_COMPILER_IS_MINGW @CMAKE_COMPILER_IS_MINGW@)
-set(CMAKE_COMPILER_IS_CYGWIN @CMAKE_COMPILER_IS_CYGWIN@)
-if(CMAKE_COMPILER_IS_CYGWIN)
-  set(CYGWIN 1)
-  set(UNIX 1)
-endif()
-
-set(CMAKE_Fortran_COMPILER_ENV_VAR "FC")
-
-set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 @CMAKE_Fortran_COMPILER_SUPPORTS_F90@)
-
-if(CMAKE_COMPILER_IS_MINGW)
-  set(MINGW 1)
-endif()
-set(CMAKE_Fortran_COMPILER_ID_RUN 1)
-set(CMAKE_Fortran_SOURCE_FILE_EXTENSIONS f;F;fpp;FPP;f77;F77;f90;F90;for;For;FOR;f95;F95)
-set(CMAKE_Fortran_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
-set(CMAKE_Fortran_LINKER_PREFERENCE 20)
-if(UNIX)
-  set(CMAKE_Fortran_OUTPUT_EXTENSION .o)
-else()
-  set(CMAKE_Fortran_OUTPUT_EXTENSION .obj)
-endif()
-
-# Save compiler ABI information.
-set(CMAKE_Fortran_SIZEOF_DATA_PTR "@CMAKE_Fortran_SIZEOF_DATA_PTR@")
-set(CMAKE_Fortran_COMPILER_ABI "@CMAKE_Fortran_COMPILER_ABI@")
-set(CMAKE_Fortran_LIBRARY_ARCHITECTURE "@CMAKE_Fortran_LIBRARY_ARCHITECTURE@")
-
-if(CMAKE_Fortran_SIZEOF_DATA_PTR AND NOT CMAKE_SIZEOF_VOID_P)
-  set(CMAKE_SIZEOF_VOID_P "${CMAKE_Fortran_SIZEOF_DATA_PTR}")
-endif()
-
-if(CMAKE_Fortran_COMPILER_ABI)
-  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_Fortran_COMPILER_ABI}")
-endif()
-
-if(CMAKE_Fortran_LIBRARY_ARCHITECTURE)
-  set(CMAKE_LIBRARY_ARCHITECTURE "@CMAKE_Fortran_LIBRARY_ARCHITECTURE@")
-endif()
-
-@CMAKE_Fortran_COMPILER_CUSTOM_CODE@
-@CMAKE_Fortran_SYSROOT_FLAG_CODE@
-@CMAKE_Fortran_OSX_DEPLOYMENT_TARGET_FLAG_CODE@
-
-set(CMAKE_Fortran_IMPLICIT_INCLUDE_DIRECTORIES "@CMAKE_Fortran_IMPLICIT_INCLUDE_DIRECTORIES@")
-set(CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES "@CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES@")
-set(CMAKE_Fortran_IMPLICIT_LINK_DIRECTORIES "@CMAKE_Fortran_IMPLICIT_LINK_DIRECTORIES@")
-set(CMAKE_Fortran_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_Fortran_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
diff --git a/share/cmake-3.18/Modules/CMakeFortranCompilerId.F.in b/share/cmake-3.18/Modules/CMakeFortranCompilerId.F.in
deleted file mode 100644
index 30f8d4c..0000000
--- a/share/cmake-3.18/Modules/CMakeFortranCompilerId.F.in
+++ /dev/null
@@ -1,200 +0,0 @@
-      PROGRAM CMakeFortranCompilerId
-#if 0
-! Identify the compiler
-#endif
-#if defined(_MSC_VER)
-       PRINT *, 'INFO:simulate[MSVC]'
-# if _MSC_VER >= 1900
-       PRINT *, 'INFO:simulate_version[019.00]'
-# elif _MSC_VER >= 1800
-       PRINT *, 'INFO:simulate_version[018.00]'
-# elif _MSC_VER >= 1700
-       PRINT *, 'INFO:simulate_version[017.00]'
-# elif _MSC_VER >= 1600
-       PRINT *, 'INFO:simulate_version[016.00]'
-# elif _MSC_VER >= 1500
-       PRINT *, 'INFO:simulate_version[015.00]'
-# elif _MSC_VER >= 1400
-       PRINT *, 'INFO:simulate_version[014.00]'
-# elif _MSC_VER >= 1310
-       PRINT *, 'INFO:simulate_version[013.01]'
-# else
-       PRINT *, 'INFO:simulate_version[013.00]'
-# endif
-#endif
-#if defined(__INTEL_COMPILER) || defined(__ICC)
-        PRINT *, 'INFO:compiler[Intel]'
-# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
-# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
-# if defined(__INTEL_COMPILER_UPDATE)
-#  define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
-# else
-#  define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER   % 10)
-# endif
-# if defined(__INTEL_COMPILER_BUILD_DATE)
-#  define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
-# endif
-#elif defined(__SUNPRO_F95)
-        PRINT *, 'INFO:compiler[SunPro]'
-# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_F95>>8)
-# define COMPILER_VERSION_MINOR HEX(__SUNPRO_F95>>4 & 0xF)
-# define COMPILER_VERSION_PATCH HEX(__SUNPRO_F95    & 0xF)
-#elif defined(__SUNPRO_F90)
-        PRINT *, 'INFO:compiler[SunPro]'
-# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_F90>>8)
-# define COMPILER_VERSION_MINOR HEX(__SUNPRO_F90>>4 & 0xF)
-# define COMPILER_VERSION_PATCH HEX(__SUNPRO_F90    & 0xF)
-#elif defined(_CRAYFTN)
-        PRINT *, 'INFO:compiler[Cray]'
-# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
-# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
-#elif defined(__G95__)
-        PRINT *, 'INFO:compiler[G95]'
-# define COMPILER_VERSION_MAJOR DEC(__G95__)
-# define COMPILER_VERSION_MINOR DEC(__G95_MINOR__)
-#elif defined(__PATHSCALE__)
-        PRINT *, 'INFO:compiler[PathScale]'
-# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
-# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
-# if defined(__PATHCC_PATCHLEVEL__)
-#  define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
-# endif
-#elif defined(__ABSOFT__)
-        PRINT *, 'INFO:compiler[Absoft]'
-#elif defined(__GNUC__)
-        PRINT *, 'INFO:compiler[GNU]'
-# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
-# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
-# if defined(__GNUC_PATCHLEVEL__)
-#  define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
-# endif
-#elif defined(__IBMC__)
-# if defined(__COMPILER_VER__)
-        PRINT *, 'INFO:compiler[zOS]'
-# elif __IBMC__ >= 800
-        PRINT *, 'INFO:compiler[XL]'
-#  define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
-#  define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
-#  define COMPILER_VERSION_PATCH DEC(__IBMC__    % 10)
-# else
-        PRINT *, 'INFO:compiler[VisualAge]'
-#  define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
-#  define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
-#  define COMPILER_VERSION_PATCH DEC(__IBMC__    % 10)
-# endif
-#elif defined(__PGI)
-        PRINT *, 'INFO:compiler[PGI]'
-# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
-# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
-# if defined(__PGIC_PATCHLEVEL__)
-#  define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
-# endif
-#elif defined(__FLANG)
-        PRINT *, 'INFO:compiler[Flang]'
-# define COMPILER_VERSION_MAJOR DEC(__FLANG_MAJOR__)
-# define COMPILER_VERSION_MINOR DEC(__FLANG_MINOR__)
-# if defined(__FLANG_PATCHLEVEL__)
-#  define COMPILER_VERSION_PATCH DEC(__FLANG_PATCHLEVEL__)
-# endif
-#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
-        PRINT *, 'INFO:compiler[VisualAge]'
-#elif defined(__hpux) || defined(__hpux__)
-        PRINT *, 'INFO:compiler[HP]'
-#elif defined(NAGFOR)
-        PRINT *, 'INFO:compiler[NAG]'
-#define COMPILER_VERSION_MAJOR DEC(__NAG_COMPILER_RELEASE/10)
-#define COMPILER_VERSION_MINOR DEC(__NAG_COMPILER_RELEASE % 10)
-#define COMPILER_VERSION_PATCH DEC(__NAG_COMPILER_BUILD)
-#else
-        PRINT *, 'INFO:compiler[]'
-#endif
-#if defined(__CRAYXE) || defined(__CRAYXC)
-        PRINT *, 'INFO:compiler_wrapper[CrayPrgEnv]'
-#endif
-
-#if 0
-! Identify the platform
-#endif
-#if defined(__linux) || defined(__linux__) || defined(linux)
-        PRINT *, 'INFO:platform[Linux]'
-#elif defined(__CYGWIN__)
-        PRINT *, 'INFO:platform[Cygwin]'
-#elif defined(__MINGW32__)
-        PRINT *, 'INFO:platform[MinGW]'
-#elif defined(__APPLE__)
-        PRINT *, 'INFO:platform[Darwin]'
-#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
-        PRINT *, 'INFO:platform[Windows]'
-#elif defined(__FreeBSD__) || defined(__FreeBSD)
-        PRINT *, 'INFO:platform[FreeBSD]'
-#elif defined(__NetBSD__) || defined(__NetBSD)
-        PRINT *, 'INFO:platform[NetBSD]'
-#elif defined(__OpenBSD__) || defined(__OPENBSD)
-        PRINT *, 'INFO:platform[OpenBSD]'
-#elif defined(__sun) || defined(sun)
-        PRINT *, 'INFO:platform[SunOS]'
-#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
-        PRINT *, 'INFO:platform[AIX]'
-#elif defined(__hpux) || defined(__hpux__)
-        PRINT *, 'INFO:platform[HP-UX]'
-#elif defined(__HAIKU__)
-        PRINT *, 'INFO:platform[Haiku]'
-#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
-        PRINT *, 'INFO:platform[BeOS]'
-#elif defined(__QNX__) || defined(__QNXNTO__)
-        PRINT *, 'INFO:platform[QNX]'
-#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
-        PRINT *, 'INFO:platform[Tru64]'
-#elif defined(__riscos) || defined(__riscos__)
-        PRINT *, 'INFO:platform[RISCos]'
-#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
-        PRINT *, 'INFO:platform[SINIX]'
-#elif defined(__UNIX_SV__)
-        PRINT *, 'INFO:platform[UNIX_SV]'
-#elif defined(__bsdos__)
-        PRINT *, 'INFO:platform[BSDOS]'
-#elif defined(_MPRAS) || defined(MPRAS)
-        PRINT *, 'INFO:platform[MP-RAS]'
-#elif defined(__osf) || defined(__osf__)
-        PRINT *, 'INFO:platform[OSF1]'
-#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
-        PRINT *, 'INFO:platform[SCO_SV]'
-#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
-        PRINT *, 'INFO:platform[ULTRIX]'
-#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
-        PRINT *, 'INFO:platform[Xenix]'
-#else
-        PRINT *, 'INFO:platform[]'
-#endif
-#if defined(_WIN32) && (defined(__INTEL_COMPILER) || defined(__ICC))
-# if defined(_M_IA64)
-        PRINT *, 'INFO:arch[IA64]'
-# elif defined(_M_X64) || defined(_M_AMD64)
-        PRINT *, 'INFO:arch[x64]'
-# elif defined(_M_IX86)
-        PRINT *, 'INFO:arch[X86]'
-# endif
-#endif
-
-#if 0
-! Encode compiler version digits
-#endif
-#define DEC_8(n) (((n) / 10000000) % 10)
-#define DEC_7(n) (((n) / 1000000)  % 10)
-#define DEC_6(n) (((n) / 100000)   % 10)
-#define DEC_5(n) (((n) / 10000)    % 10)
-#define DEC_4(n) (((n) / 1000)     % 10)
-#define DEC_3(n) (((n) / 100)      % 10)
-#define DEC_2(n) (((n) / 10)       % 10)
-#define DEC_1(n) (((n)    )        % 10)
-#define HEX_8(n) ((n)>>28 & 0xF)
-#define HEX_7(n) ((n)>>24 & 0xF)
-#define HEX_6(n) ((n)>>20 & 0xF)
-#define HEX_5(n) ((n)>>16 & 0xF)
-#define HEX_4(n) ((n)>>12 & 0xF)
-#define HEX_3(n) ((n)>>8  & 0xF)
-#define HEX_2(n) ((n)>>4  & 0xF)
-#define HEX_1(n) ((n)     & 0xF)
-@CMAKE_Fortran_COMPILER_ID_VERSION_INFO@
-
-      END
diff --git a/share/cmake-3.18/Modules/CMakeFortranInformation.cmake b/share/cmake-3.18/Modules/CMakeFortranInformation.cmake
deleted file mode 100644
index 9a4ce63..0000000
--- a/share/cmake-3.18/Modules/CMakeFortranInformation.cmake
+++ /dev/null
@@ -1,222 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-include(CMakeLanguageInformation)
-
-# This file sets the basic flags for the Fortran language in CMake.
-# It also loads the available platform file for the system-compiler
-# if it exists.
-
-set(_INCLUDED_FILE 0)
-
-# Load compiler-specific information.
-if(CMAKE_Fortran_COMPILER_ID)
-  include(Compiler/${CMAKE_Fortran_COMPILER_ID}-Fortran OPTIONAL)
-endif()
-
-set(CMAKE_BASE_NAME)
-get_filename_component(CMAKE_BASE_NAME "${CMAKE_Fortran_COMPILER}" NAME_WE)
-# since the gnu compiler has several names force g++
-if(CMAKE_COMPILER_IS_GNUG77)
-  set(CMAKE_BASE_NAME g77)
-endif()
-if(CMAKE_Fortran_COMPILER_ID)
-  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_Fortran_COMPILER_ID}-Fortran OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
-endif()
-if (NOT _INCLUDED_FILE)
-  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL
-          RESULT_VARIABLE _INCLUDED_FILE)
-endif ()
-
-# load any compiler-wrapper specific information
-if (CMAKE_Fortran_COMPILER_WRAPPER)
-  __cmake_include_compiler_wrapper(Fortran)
-endif ()
-
-# We specify the compiler information in the system file for some
-# platforms, but this language may not have been enabled when the file
-# was first included.  Include it again to get the language info.
-# Remove this when all compiler info is removed from system files.
-if (NOT _INCLUDED_FILE)
-  include(Platform/${CMAKE_SYSTEM_NAME} OPTIONAL)
-endif ()
-
-if(CMAKE_Fortran_SIZEOF_DATA_PTR)
-  foreach(f ${CMAKE_Fortran_ABI_FILES})
-    include(${f})
-  endforeach()
-  unset(CMAKE_Fortran_ABI_FILES)
-endif()
-
-# This should be included before the _INIT variables are
-# used to initialize the cache.  Since the rule variables
-# have if blocks on them, users can still define them here.
-# But, it should still be after the platform file so changes can
-# be made to those values.
-
-if(CMAKE_USER_MAKE_RULES_OVERRIDE)
-  # Save the full path of the file so try_compile can use it.
-  include(${CMAKE_USER_MAKE_RULES_OVERRIDE} RESULT_VARIABLE _override)
-  set(CMAKE_USER_MAKE_RULES_OVERRIDE "${_override}")
-endif()
-
-if(CMAKE_USER_MAKE_RULES_OVERRIDE_Fortran)
-  # Save the full path of the file so try_compile can use it.
-  include(${CMAKE_USER_MAKE_RULES_OVERRIDE_Fortran} RESULT_VARIABLE _override)
-  set(CMAKE_USER_MAKE_RULES_OVERRIDE_Fortran "${_override}")
-endif()
-
-if(NOT CMAKE_Fortran_COMPILE_OPTIONS_PIC)
-  set(CMAKE_Fortran_COMPILE_OPTIONS_PIC ${CMAKE_C_COMPILE_OPTIONS_PIC})
-endif()
-
-if(NOT CMAKE_Fortran_COMPILE_OPTIONS_PIE)
-  set(CMAKE_Fortran_COMPILE_OPTIONS_PIE ${CMAKE_C_COMPILE_OPTIONS_PIE})
-endif()
-if(NOT CMAKE_Fortran_LINK_OPTIONS_PIE)
-  set(CMAKE_Fortran_LINK_OPTIONS_PIE ${CMAKE_C_LINK_OPTIONS_PIE})
-endif()
-if(NOT CMAKE_Fortran_LINK_OPTIONS_NO_PIE)
-  set(CMAKE_Fortran_LINK_OPTIONS_NO_PIE ${CMAKE_C_LINK_OPTIONS_NO_PIE})
-endif()
-
-if(NOT CMAKE_Fortran_COMPILE_OPTIONS_DLL)
-  set(CMAKE_Fortran_COMPILE_OPTIONS_DLL ${CMAKE_C_COMPILE_OPTIONS_DLL})
-endif()
-
-# Create a set of shared library variable specific to Fortran
-# For 90% of the systems, these are the same flags as the C versions
-# so if these are not set just copy the flags from the c version
-if(NOT DEFINED CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS)
-  set(CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS})
-endif()
-
-if(NOT DEFINED CMAKE_SHARED_LIBRARY_Fortran_FLAGS)
-  set(CMAKE_SHARED_LIBRARY_Fortran_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
-endif()
-
-if(NOT DEFINED CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS)
-  set(CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS})
-endif()
-
-if(NOT DEFINED CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG)
-  set(CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG})
-endif()
-
-if(NOT DEFINED CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG_SEP)
-  set(CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP})
-endif()
-
-if(NOT DEFINED CMAKE_SHARED_LIBRARY_RPATH_LINK_Fortran_FLAG)
-  set(CMAKE_SHARED_LIBRARY_RPATH_LINK_Fortran_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG})
-endif()
-
-if(NOT DEFINED CMAKE_EXE_EXPORTS_Fortran_FLAG)
-  set(CMAKE_EXE_EXPORTS_Fortran_FLAG ${CMAKE_EXE_EXPORTS_C_FLAG})
-endif()
-
-if(NOT DEFINED CMAKE_SHARED_LIBRARY_SONAME_Fortran_FLAG)
-  set(CMAKE_SHARED_LIBRARY_SONAME_Fortran_FLAG ${CMAKE_SHARED_LIBRARY_SONAME_C_FLAG})
-endif()
-
-# for most systems a module is the same as a shared library
-# so unless the variable CMAKE_MODULE_EXISTS is set just
-# copy the values from the LIBRARY variables
-if(NOT CMAKE_MODULE_EXISTS)
-  set(CMAKE_SHARED_MODULE_Fortran_FLAGS ${CMAKE_SHARED_LIBRARY_Fortran_FLAGS})
-  set(CMAKE_SHARED_MODULE_CREATE_Fortran_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS})
-endif()
-
-# repeat for modules
-if(NOT DEFINED CMAKE_SHARED_MODULE_CREATE_Fortran_FLAGS)
-  set(CMAKE_SHARED_MODULE_CREATE_Fortran_FLAGS ${CMAKE_SHARED_MODULE_CREATE_C_FLAGS})
-endif()
-
-if(NOT DEFINED CMAKE_SHARED_MODULE_Fortran_FLAGS)
-  set(CMAKE_SHARED_MODULE_Fortran_FLAGS ${CMAKE_SHARED_MODULE_C_FLAGS})
-endif()
-
-if(NOT DEFINED CMAKE_EXECUTABLE_RUNTIME_Fortran_FLAG)
-  set(CMAKE_EXECUTABLE_RUNTIME_Fortran_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG})
-endif()
-
-if(NOT DEFINED CMAKE_EXECUTABLE_RUNTIME_Fortran_FLAG_SEP)
-  set(CMAKE_EXECUTABLE_RUNTIME_Fortran_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG_SEP})
-endif()
-
-if(NOT DEFINED CMAKE_EXECUTABLE_RPATH_LINK_Fortran_FLAG)
-  set(CMAKE_EXECUTABLE_RPATH_LINK_Fortran_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_Fortran_FLAG})
-endif()
-
-if(NOT DEFINED CMAKE_SHARED_LIBRARY_LINK_Fortran_WITH_RUNTIME_PATH)
-  set(CMAKE_SHARED_LIBRARY_LINK_Fortran_WITH_RUNTIME_PATH ${CMAKE_SHARED_LIBRARY_LINK_C_WITH_RUNTIME_PATH})
-endif()
-
-if(NOT CMAKE_INCLUDE_FLAG_Fortran)
-  set(CMAKE_INCLUDE_FLAG_Fortran ${CMAKE_INCLUDE_FLAG_C})
-endif()
-
-set(CMAKE_VERBOSE_MAKEFILE FALSE CACHE BOOL "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make.  This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo.")
-
-set(CMAKE_Fortran_FLAGS_INIT "$ENV{FFLAGS} ${CMAKE_Fortran_FLAGS_INIT}")
-
-cmake_initialize_per_config_variable(CMAKE_Fortran_FLAGS "Flags used by the Fortran compiler")
-
-if(NOT CMAKE_Fortran_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_Fortran_COMPILER_LAUNCHER})
-  set(CMAKE_Fortran_COMPILER_LAUNCHER "$ENV{CMAKE_Fortran_COMPILER_LAUNCHER}"
-    CACHE STRING "Compiler launcher for Fortran.")
-endif()
-
-include(CMakeCommonLanguageInclude)
-
-# now define the following rule variables
-# CMAKE_Fortran_CREATE_SHARED_LIBRARY
-# CMAKE_Fortran_CREATE_SHARED_MODULE
-# CMAKE_Fortran_COMPILE_OBJECT
-# CMAKE_Fortran_LINK_EXECUTABLE
-
-# create a Fortran shared library
-if(NOT CMAKE_Fortran_CREATE_SHARED_LIBRARY)
-  set(CMAKE_Fortran_CREATE_SHARED_LIBRARY
-      "<CMAKE_Fortran_COMPILER> <CMAKE_SHARED_LIBRARY_Fortran_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
-endif()
-
-# create a Fortran shared module just copy the shared library rule
-if(NOT CMAKE_Fortran_CREATE_SHARED_MODULE)
-  set(CMAKE_Fortran_CREATE_SHARED_MODULE ${CMAKE_Fortran_CREATE_SHARED_LIBRARY})
-endif()
-
-# Create a static archive incrementally for large object file counts.
-# If CMAKE_Fortran_CREATE_STATIC_LIBRARY is set it will override these.
-if(NOT DEFINED CMAKE_Fortran_ARCHIVE_CREATE)
-  set(CMAKE_Fortran_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
-endif()
-if(NOT DEFINED CMAKE_Fortran_ARCHIVE_APPEND)
-  set(CMAKE_Fortran_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
-endif()
-if(NOT DEFINED CMAKE_Fortran_ARCHIVE_FINISH)
-  set(CMAKE_Fortran_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
-endif()
-
-# compile a Fortran file into an object file
-# (put -o after -c to workaround bug in at least one mpif77 wrapper)
-if(NOT CMAKE_Fortran_COMPILE_OBJECT)
-  set(CMAKE_Fortran_COMPILE_OBJECT
-    "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -c <SOURCE> -o <OBJECT>")
-endif()
-
-# link a fortran program
-if(NOT CMAKE_Fortran_LINK_EXECUTABLE)
-  set(CMAKE_Fortran_LINK_EXECUTABLE
-    "<CMAKE_Fortran_COMPILER> <CMAKE_Fortran_LINK_FLAGS> <LINK_FLAGS> <FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
-endif()
-
-if(CMAKE_Fortran_STANDARD_LIBRARIES_INIT)
-  set(CMAKE_Fortran_STANDARD_LIBRARIES "${CMAKE_Fortran_STANDARD_LIBRARIES_INIT}"
-    CACHE STRING "Libraries linked by default with all Fortran applications.")
-  mark_as_advanced(CMAKE_Fortran_STANDARD_LIBRARIES)
-endif()
-
-# set this variable so we can avoid loading this more than once.
-set(CMAKE_Fortran_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.18/Modules/CMakeGenericSystem.cmake b/share/cmake-3.18/Modules/CMakeGenericSystem.cmake
deleted file mode 100644
index 000fba1..0000000
--- a/share/cmake-3.18/Modules/CMakeGenericSystem.cmake
+++ /dev/null
@@ -1,181 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-include(CMakeInitializeConfigs)
-
-set(CMAKE_SHARED_LIBRARY_C_FLAGS "")            # -pic
-set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared")       # -shared
-set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")         # +s, flag for exe link to use shared lib
-set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "")       # -rpath
-set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP "")   # : or empty
-set(CMAKE_INCLUDE_FLAG_C "-I")       # -I
-set(CMAKE_LIBRARY_PATH_FLAG "-L")
-set(CMAKE_LIBRARY_PATH_TERMINATOR "")  # for the Digital Mars D compiler the link paths have to be terminated with a "/"
-set(CMAKE_LINK_LIBRARY_FLAG "-l")
-
-set(CMAKE_LINK_LIBRARY_SUFFIX "")
-set(CMAKE_STATIC_LIBRARY_PREFIX "lib")
-set(CMAKE_STATIC_LIBRARY_SUFFIX ".a")
-set(CMAKE_SHARED_LIBRARY_PREFIX "lib")          # lib
-set(CMAKE_SHARED_LIBRARY_SUFFIX ".so")          # .so
-set(CMAKE_EXECUTABLE_SUFFIX "")          # .exe
-set(CMAKE_DL_LIBS "dl")
-
-set(CMAKE_FIND_LIBRARY_PREFIXES "lib")
-set(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a")
-
-set(CMAKE_AUTOGEN_ORIGIN_DEPENDS ON)
-set(CMAKE_AUTOMOC_COMPILER_PREDEFINES ON)
-set(CMAKE_AUTOMOC_PATH_PREFIX ON)
-set(CMAKE_AUTOMOC_MACRO_NAMES "Q_OBJECT" "Q_GADGET" "Q_NAMESPACE" "Q_NAMESPACE_EXPORT")
-
-# basically all general purpose OSs support shared libs
-set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE)
-
-set (CMAKE_SKIP_RPATH "NO" CACHE BOOL
-     "If set, runtime paths are not added when using shared libraries.")
-set (CMAKE_SKIP_INSTALL_RPATH "NO" CACHE BOOL
-     "If set, runtime paths are not added when installing shared libraries, but are added when building.")
-
-set(CMAKE_VERBOSE_MAKEFILE FALSE CACHE BOOL "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make.  This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo.")
-
-if(CMAKE_GENERATOR MATCHES "Make")
-  set(CMAKE_COLOR_MAKEFILE ON CACHE BOOL
-    "Enable/Disable color output during build."
-    )
-  mark_as_advanced(CMAKE_COLOR_MAKEFILE)
-  if(DEFINED CMAKE_RULE_MESSAGES)
-    set_property(GLOBAL PROPERTY RULE_MESSAGES ${CMAKE_RULE_MESSAGES})
-  endif()
-  if(DEFINED CMAKE_TARGET_MESSAGES)
-    set_property(GLOBAL PROPERTY TARGET_MESSAGES ${CMAKE_TARGET_MESSAGES})
-  endif()
-endif()
-
-if(NOT DEFINED CMAKE_EXPORT_COMPILE_COMMANDS AND CMAKE_GENERATOR MATCHES "Ninja|Unix Makefiles")
-  set(CMAKE_EXPORT_COMPILE_COMMANDS "$ENV{CMAKE_EXPORT_COMPILE_COMMANDS}"
-    CACHE BOOL "Enable/Disable output of compile commands during generation."
-    )
-  mark_as_advanced(CMAKE_EXPORT_COMPILE_COMMANDS)
-endif()
-
-# GetDefaultWindowsPrefixBase
-#
-# Compute the base directory for CMAKE_INSTALL_PREFIX based on:
-#  - is this 32-bit or 64-bit Windows
-#  - is this 32-bit or 64-bit CMake running
-#  - what architecture targets will be built
-#
-function(GetDefaultWindowsPrefixBase var)
-
-  # Try to guess what architecture targets will end up being built as,
-  # even if CMAKE_SIZEOF_VOID_P is not computed yet... We need to know
-  # the architecture of the targets being built to choose the right
-  # default value for CMAKE_INSTALL_PREFIX.
-  #
-  if("${CMAKE_GENERATOR}" MATCHES "(Win64|IA64)")
-    set(arch_hint "x64")
-  elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "ARM64")
-    set(arch_hint "ARM64")
-  elseif("${CMAKE_GENERATOR}" MATCHES "ARM")
-    set(arch_hint "ARM")
-  elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
-    set(arch_hint "x64")
-  elseif("$ENV{LIB}" MATCHES "(amd64|ia64)")
-    set(arch_hint "x64")
-  endif()
-
-  if(NOT arch_hint)
-    set(arch_hint "x86")
-  endif()
-
-  # default env in a 64-bit app on Win64:
-  # ProgramFiles=C:\Program Files
-  # ProgramFiles(x86)=C:\Program Files (x86)
-  # ProgramW6432=C:\Program Files
-  #
-  # default env in a 32-bit app on Win64:
-  # ProgramFiles=C:\Program Files (x86)
-  # ProgramFiles(x86)=C:\Program Files (x86)
-  # ProgramW6432=C:\Program Files
-  #
-  # default env in a 32-bit app on Win32:
-  # ProgramFiles=C:\Program Files
-  # ProgramFiles(x86) NOT DEFINED
-  # ProgramW6432 NOT DEFINED
-
-  # By default, use the ProgramFiles env var as the base value of
-  # CMAKE_INSTALL_PREFIX:
-  #
-  set(_PREFIX_ENV_VAR "ProgramFiles")
-
-  if ("$ENV{ProgramW6432}" STREQUAL "")
-    # running on 32-bit Windows
-    # must be a 32-bit CMake, too...
-    #message("guess: this is a 32-bit CMake running on 32-bit Windows")
-  else()
-    # running on 64-bit Windows
-    if ("$ENV{ProgramW6432}" STREQUAL "$ENV{ProgramFiles}")
-      # 64-bit CMake
-      #message("guess: this is a 64-bit CMake running on 64-bit Windows")
-      if(NOT "${arch_hint}" STREQUAL "x64")
-      # building 32-bit targets
-        set(_PREFIX_ENV_VAR "ProgramFiles(x86)")
-      endif()
-    else()
-      # 32-bit CMake
-      #message("guess: this is a 32-bit CMake running on 64-bit Windows")
-      if("${arch_hint}" STREQUAL "x64")
-      # building 64-bit targets
-        set(_PREFIX_ENV_VAR "ProgramW6432")
-      endif()
-    endif()
-  endif()
-
-  #if("${arch_hint}" STREQUAL "x64")
-  #  message("guess: you are building a 64-bit app")
-  #else()
-  #  message("guess: you are building a 32-bit app")
-  #endif()
-
-  if(NOT "$ENV{${_PREFIX_ENV_VAR}}" STREQUAL "")
-    file(TO_CMAKE_PATH "$ENV{${_PREFIX_ENV_VAR}}" _base)
-  elseif(NOT "$ENV{SystemDrive}" STREQUAL "")
-    set(_base "$ENV{SystemDrive}/Program Files")
-  else()
-    set(_base "C:/Program Files")
-  endif()
-
-  set(${var} "${_base}" PARENT_SCOPE)
-endfunction()
-
-
-# Set a variable to indicate whether the value of CMAKE_INSTALL_PREFIX
-# was initialized by the block below.  This is useful for user
-# projects to change the default prefix while still allowing the
-# command line to override it.
-if(NOT DEFINED CMAKE_INSTALL_PREFIX)
-  set(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT 1)
-endif()
-
-# Choose a default install prefix for this platform.
-if(CMAKE_HOST_UNIX)
-  set(CMAKE_INSTALL_PREFIX "/usr/local"
-    CACHE PATH "Install path prefix, prepended onto install directories.")
-else()
-  GetDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES)
-  set(CMAKE_INSTALL_PREFIX
-    "${CMAKE_GENERIC_PROGRAM_FILES}/${PROJECT_NAME}"
-    CACHE PATH "Install path prefix, prepended onto install directories.")
-  set(CMAKE_GENERIC_PROGRAM_FILES)
-endif()
-
-# Set a variable which will be used as component name in install() commands
-# where no COMPONENT has been given:
-set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "Unspecified")
-
-mark_as_advanced(
-  CMAKE_SKIP_RPATH
-  CMAKE_SKIP_INSTALL_RPATH
-  CMAKE_VERBOSE_MAKEFILE
-)
diff --git a/share/cmake-3.18/Modules/CMakeGraphVizOptions.cmake b/share/cmake-3.18/Modules/CMakeGraphVizOptions.cmake
deleted file mode 100644
index be4a3be..0000000
--- a/share/cmake-3.18/Modules/CMakeGraphVizOptions.cmake
+++ /dev/null
@@ -1,149 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CMakeGraphVizOptions
---------------------
-
-The builtin Graphviz support of CMake.
-
-Generating Graphviz files
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-CMake can generate `Graphviz <https://www.graphviz.org/>`_ files showing the
-dependencies between the targets in a project, as well as external libraries
-which are linked against.
-
-When running CMake with the ``--graphviz=foo.dot`` option, it produces:
-
-* a ``foo.dot`` file, showing all dependencies in the project
-* a ``foo.dot.<target>`` file for each target, showing on which other targets
-  it depends
-* a ``foo.dot.<target>.dependers`` file for each target, showing which other
-  targets depend on it
-
-Those .dot files can be converted to images using the *dot* command from the
-Graphviz package:
-
-.. code-block:: shell
-
-  dot -Tpng -o foo.png foo.dot
-
-The different dependency types ``PUBLIC``, ``INTERFACE`` and ``PRIVATE``
-are represented as solid, dashed and dotted edges.
-
-Variables specific to the Graphviz support
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The resulting graphs can be huge.  The look and content of the generated graphs
-can be controlled using the file ``CMakeGraphVizOptions.cmake``.  This file is
-first searched in :variable:`CMAKE_BINARY_DIR`, and then in
-:variable:`CMAKE_SOURCE_DIR`.  If found, the variables set in it are used to
-adjust options for the generated Graphviz files.
-
-.. variable:: GRAPHVIZ_GRAPH_NAME
-
- The graph name.
-
- * Mandatory: NO
- * Default: value of :variable:`CMAKE_PROJECT_NAME`
-
-.. variable:: GRAPHVIZ_GRAPH_HEADER
-
- The header written at the top of the Graphviz files.
-
- * Mandatory: NO
- * Default: "node [ fontsize = "12" ];"
-
-.. variable:: GRAPHVIZ_NODE_PREFIX
-
- The prefix for each node in the Graphviz files.
-
- * Mandatory: NO
- * Default: "node"
-
-.. variable:: GRAPHVIZ_EXECUTABLES
-
- Set to FALSE to exclude executables from the generated graphs.
-
- * Mandatory: NO
- * Default: TRUE
-
-.. variable:: GRAPHVIZ_STATIC_LIBS
-
- Set to FALSE to exclude static libraries from the generated graphs.
-
- * Mandatory: NO
- * Default: TRUE
-
-.. variable:: GRAPHVIZ_SHARED_LIBS
-
- Set to FALSE to exclude shared libraries from the generated graphs.
-
- * Mandatory: NO
- * Default: TRUE
-
-.. variable:: GRAPHVIZ_MODULE_LIBS
-
- Set to FALSE to exclude module libraries from the generated graphs.
-
- * Mandatory: NO
- * Default: TRUE
-
-.. variable:: GRAPHVIZ_INTERFACE_LIBS
-
- Set to FALSE to exclude interface libraries from the generated graphs.
-
- * Mandatory: NO
- * Default: TRUE
-
-.. variable:: GRAPHVIZ_OBJECT_LIBS
-
- Set to FALSE to exclude object libraries from the generated graphs.
-
- * Mandatory: NO
- * Default: TRUE
-
-.. variable:: GRAPHVIZ_UNKNOWN_LIBS
-
- Set to FALSE to exclude unknown libraries from the generated graphs.
-
- * Mandatory: NO
- * Default: TRUE
-
-.. variable:: GRAPHVIZ_EXTERNAL_LIBS
-
- Set to FALSE to exclude external libraries from the generated graphs.
-
- * Mandatory: NO
- * Default: TRUE
-
-.. variable:: GRAPHVIZ_CUSTOM_TARGETS
-
- Set to TRUE to include custom targets in the generated graphs.
-
- * Mandatory: NO
- * Default: FALSE
-
-.. variable:: GRAPHVIZ_IGNORE_TARGETS
-
- A list of regular expressions for names of targets to exclude from the
- generated graphs.
-
- * Mandatory: NO
- * Default: empty
-
-.. variable:: GRAPHVIZ_GENERATE_PER_TARGET
-
- Set to FALSE to not generate per-target graphs ``foo.dot.<target>``.
-
- * Mandatory: NO
- * Default: TRUE
-
-.. variable:: GRAPHVIZ_GENERATE_DEPENDERS
-
- Set to FALSE to not generate depender graphs ``foo.dot.<target>.dependers``.
-
- * Mandatory: NO
- * Default: TRUE
-#]=======================================================================]
diff --git a/share/cmake-3.18/Modules/CMakeIOSInstallCombined.cmake b/share/cmake-3.18/Modules/CMakeIOSInstallCombined.cmake
deleted file mode 100644
index 418bafd..0000000
--- a/share/cmake-3.18/Modules/CMakeIOSInstallCombined.cmake
+++ /dev/null
@@ -1,312 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0057 NEW) # if IN_LIST
-
-# Function to print messages of this module
-function(_ios_install_combined_message)
-  message("[iOS combined] " ${ARGN})
-endfunction()
-
-# Get build settings for the current target/config/SDK by running
-# `xcodebuild -sdk ... -showBuildSettings` and parsing it's output
-function(_ios_install_combined_get_build_setting sdk variable resultvar)
-  if("${sdk}" STREQUAL "")
-    message(FATAL_ERROR "`sdk` is empty")
-  endif()
-
-  if("${variable}" STREQUAL "")
-    message(FATAL_ERROR "`variable` is empty")
-  endif()
-
-  if("${resultvar}" STREQUAL "")
-    message(FATAL_ERROR "`resultvar` is empty")
-  endif()
-
-  set(
-      cmd
-      xcodebuild -showBuildSettings
-      -sdk "${sdk}"
-      -target "${CURRENT_TARGET}"
-      -config "${CURRENT_CONFIG}"
-  )
-
-  execute_process(
-      COMMAND ${cmd}
-      WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
-      RESULT_VARIABLE result
-      OUTPUT_VARIABLE output
-  )
-
-  if(NOT result EQUAL 0)
-    message(FATAL_ERROR "Command failed (${result}): ${cmd}")
-  endif()
-
-  if(NOT output MATCHES " ${variable} = ([^\n]*)")
-    if("${variable}" STREQUAL "VALID_ARCHS")
-      # VALID_ARCHS may be unset by user for given SDK
-      # (e.g. for build without simulator).
-      set("${resultvar}" "" PARENT_SCOPE)
-      return()
-    else()
-      message(FATAL_ERROR "${variable} not found.")
-    endif()
-  endif()
-
-  set("${resultvar}" "${CMAKE_MATCH_1}" PARENT_SCOPE)
-endfunction()
-
-# Get architectures of given SDK (iphonesimulator/iphoneos)
-function(_ios_install_combined_get_valid_archs sdk resultvar)
-  cmake_policy(PUSH)
-  cmake_policy(SET CMP0007 NEW)
-
-  if("${resultvar}" STREQUAL "")
-    message(FATAL_ERROR "`resultvar` is empty")
-  endif()
-
-  _ios_install_combined_get_build_setting("${sdk}" "VALID_ARCHS" valid_archs)
-
-  separate_arguments(valid_archs)
-  list(REMOVE_ITEM valid_archs "") # remove empty elements
-  list(REMOVE_DUPLICATES valid_archs)
-
-  string(REPLACE ";" " " printable "${valid_archs}")
-  _ios_install_combined_message("Architectures (${sdk}): ${printable}")
-
-  set("${resultvar}" "${valid_archs}" PARENT_SCOPE)
-
-  cmake_policy(POP)
-endfunction()
-
-# Final target can contain more architectures that specified by SDK. This
-# function will run 'lipo -info' and parse output. Result will be returned
-# as a CMake list.
-function(_ios_install_combined_get_real_archs filename resultvar)
-  set(cmd "${_lipo_path}" -info "${filename}")
-  execute_process(
-      COMMAND ${cmd}
-      RESULT_VARIABLE result
-      OUTPUT_VARIABLE output
-      ERROR_VARIABLE output
-      OUTPUT_STRIP_TRAILING_WHITESPACE
-      ERROR_STRIP_TRAILING_WHITESPACE
-  )
-  if(NOT result EQUAL 0)
-    message(
-        FATAL_ERROR "Command failed (${result}): ${cmd}\n\nOutput:\n${output}"
-    )
-  endif()
-
-  if(NOT output MATCHES "(Architectures in the fat file: [^\n]+ are|Non-fat file: [^\n]+ is architecture): ([^\n]*)")
-    message(FATAL_ERROR "Could not detect architecture from: ${output}")
-  endif()
-
-  separate_arguments(CMAKE_MATCH_2)
-  set(${resultvar} ${CMAKE_MATCH_2} PARENT_SCOPE)
-endfunction()
-
-# Run build command for the given SDK
-function(_ios_install_combined_build sdk)
-  if("${sdk}" STREQUAL "")
-    message(FATAL_ERROR "`sdk` is empty")
-  endif()
-
-  _ios_install_combined_message("Build `${CURRENT_TARGET}` for `${sdk}`")
-
-  execute_process(
-      COMMAND
-      "${CMAKE_COMMAND}"
-      --build
-      .
-      --target "${CURRENT_TARGET}"
-      --config ${CURRENT_CONFIG}
-      --
-      -sdk "${sdk}"
-      WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
-      RESULT_VARIABLE result
-  )
-
-  if(NOT result EQUAL 0)
-    message(FATAL_ERROR "Build failed")
-  endif()
-endfunction()
-
-# Remove given architecture from file. This step needed only in rare cases
-# when target was built in "unusual" way. Emit warning message.
-function(_ios_install_combined_remove_arch lib arch)
-  _ios_install_combined_message(
-    "Warning! Unexpected architecture `${arch}` detected and will be removed "
-    "from file `${lib}`")
-  set(cmd "${_lipo_path}" -remove ${arch} -output ${lib} ${lib})
-  execute_process(
-      COMMAND ${cmd}
-      RESULT_VARIABLE result
-      OUTPUT_VARIABLE output
-      ERROR_VARIABLE output
-      OUTPUT_STRIP_TRAILING_WHITESPACE
-      ERROR_STRIP_TRAILING_WHITESPACE
-  )
-  if(NOT result EQUAL 0)
-    message(
-        FATAL_ERROR "Command failed (${result}): ${cmd}\n\nOutput:\n${output}"
-    )
-  endif()
-endfunction()
-
-# Check that 'lib' contains only 'archs' architectures (remove others).
-function(_ios_install_combined_keep_archs lib archs)
-  _ios_install_combined_get_real_archs("${lib}" real_archs)
-  set(archs_to_remove ${real_archs})
-  list(REMOVE_ITEM archs_to_remove ${archs})
-  foreach(x ${archs_to_remove})
-    _ios_install_combined_remove_arch("${lib}" "${x}")
-  endforeach()
-endfunction()
-
-function(_ios_install_combined_detect_sdks this_sdk_var corr_sdk_var)
-  set(this_sdk "$ENV{PLATFORM_NAME}")
-  if("${this_sdk}" STREQUAL "")
-    message(FATAL_ERROR "Environment variable PLATFORM_NAME is empty")
-  endif()
-
-  set(all_platforms "$ENV{SUPPORTED_PLATFORMS}")
-  if("${all_platforms}" STREQUAL "")
-    message(FATAL_ERROR "Environment variable SUPPORTED_PLATFORMS is empty")
-  endif()
-
-  separate_arguments(all_platforms)
-  if(NOT this_sdk IN_LIST all_platforms)
-    message(FATAL_ERROR "`${this_sdk}` not found in `${all_platforms}`")
-  endif()
-
-  list(REMOVE_ITEM all_platforms "" "${this_sdk}")
-  list(LENGTH all_platforms all_platforms_length)
-  if(NOT all_platforms_length EQUAL 1)
-    message(FATAL_ERROR "Expected one element: ${all_platforms}")
-  endif()
-
-  set(${this_sdk_var} "${this_sdk}" PARENT_SCOPE)
-  set(${corr_sdk_var} "${all_platforms}" PARENT_SCOPE)
-endfunction()
-
-# Create combined binary for the given target.
-#
-# Preconditions:
-#  * Target already installed at ${destination}
-#    for the ${PLATFORM_NAME} platform
-#
-# This function will:
-#  * Run build for the lacking platform, i.e. opposite to the ${PLATFORM_NAME}
-#  * Fuse both libraries by running lipo
-function(ios_install_combined target destination)
-  if("${target}" STREQUAL "")
-    message(FATAL_ERROR "`target` is empty")
-  endif()
-
-  if("${destination}" STREQUAL "")
-    message(FATAL_ERROR "`destination` is empty")
-  endif()
-
-  if(NOT IS_ABSOLUTE "${destination}")
-    message(FATAL_ERROR "`destination` is not absolute: ${destination}")
-  endif()
-
-  if(IS_DIRECTORY "${destination}" OR IS_SYMLINK "${destination}")
-    message(FATAL_ERROR "`destination` is no regular file: ${destination}")
-  endif()
-
-  if("${CMAKE_BINARY_DIR}" STREQUAL "")
-    message(FATAL_ERROR "`CMAKE_BINARY_DIR` is empty")
-  endif()
-
-  if(NOT IS_DIRECTORY "${CMAKE_BINARY_DIR}")
-    message(FATAL_ERROR "Is not a directory: ${CMAKE_BINARY_DIR}")
-  endif()
-
-  if("${CMAKE_INSTALL_CONFIG_NAME}" STREQUAL "")
-    message(FATAL_ERROR "CMAKE_INSTALL_CONFIG_NAME is empty")
-  endif()
-
-  set(cmd xcrun -f lipo)
-
-  # Do not merge OUTPUT_VARIABLE and ERROR_VARIABLE since latter may contain
-  # some diagnostic information even for the successful run.
-  execute_process(
-      COMMAND ${cmd}
-      RESULT_VARIABLE result
-      OUTPUT_VARIABLE output
-      ERROR_VARIABLE error_output
-      OUTPUT_STRIP_TRAILING_WHITESPACE
-      ERROR_STRIP_TRAILING_WHITESPACE
-  )
-  if(NOT result EQUAL 0)
-    message(
-        FATAL_ERROR "Command failed (${result}): ${cmd}\n\nOutput:\n${output}\nOutput(error):\n${error_output}"
-    )
-  endif()
-  set(_lipo_path ${output})
-  list(LENGTH _lipo_path len)
-  if(NOT len EQUAL 1)
-    message(FATAL_ERROR "Unexpected xcrun output: ${_lipo_path}")
-  endif()
-  if(NOT EXISTS "${_lipo_path}")
-    message(FATAL_ERROR "File not found: ${_lipo_path}")
-  endif()
-
-  set(CURRENT_CONFIG "${CMAKE_INSTALL_CONFIG_NAME}")
-  set(CURRENT_TARGET "${target}")
-
-  _ios_install_combined_message("Target: ${CURRENT_TARGET}")
-  _ios_install_combined_message("Config: ${CURRENT_CONFIG}")
-  _ios_install_combined_message("Destination: ${destination}")
-
-  # Get SDKs
-  _ios_install_combined_detect_sdks(this_sdk corr_sdk)
-
-  # Get architectures of the target
-  _ios_install_combined_get_valid_archs("${corr_sdk}" corr_valid_archs)
-  _ios_install_combined_get_valid_archs("${this_sdk}" this_valid_archs)
-
-  # Return if there are no valid architectures for the SDK.
-  # (note that library already installed)
-  if("${corr_valid_archs}" STREQUAL "")
-    _ios_install_combined_message(
-        "No architectures detected for `${corr_sdk}` (skip)"
-    )
-    return()
-  endif()
-
-  # Trigger build of corresponding target
-  _ios_install_combined_build("${corr_sdk}")
-
-  # Get location of the library in build directory
-  _ios_install_combined_get_build_setting(
-    "${corr_sdk}" "CONFIGURATION_BUILD_DIR" corr_build_dir)
-  _ios_install_combined_get_build_setting(
-    "${corr_sdk}" "EXECUTABLE_PATH" corr_executable_path)
-  set(corr "${corr_build_dir}/${corr_executable_path}")
-
-  _ios_install_combined_keep_archs("${corr}" "${corr_valid_archs}")
-  _ios_install_combined_keep_archs("${destination}" "${this_valid_archs}")
-
-  _ios_install_combined_message("Current: ${destination}")
-  _ios_install_combined_message("Corresponding: ${corr}")
-
-  set(cmd "${_lipo_path}" -create ${corr} ${destination} -output ${destination})
-
-  execute_process(
-      COMMAND ${cmd}
-      WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-      RESULT_VARIABLE result
-  )
-
-  if(NOT result EQUAL 0)
-    message(FATAL_ERROR "Command failed: ${cmd}")
-  endif()
-
-  _ios_install_combined_message("Install done: ${destination}")
-endfunction()
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/CMakeOBJCCompiler.cmake.in b/share/cmake-3.18/Modules/CMakeOBJCCompiler.cmake.in
deleted file mode 100644
index 1555517..0000000
--- a/share/cmake-3.18/Modules/CMakeOBJCCompiler.cmake.in
+++ /dev/null
@@ -1,69 +0,0 @@
-set(CMAKE_OBJC_COMPILER "@CMAKE_OBJC_COMPILER@")
-set(CMAKE_OBJC_COMPILER_ARG1 "@CMAKE_OBJC_COMPILER_ARG1@")
-set(CMAKE_OBJC_COMPILER_ID "@CMAKE_OBJC_COMPILER_ID@")
-set(CMAKE_OBJC_COMPILER_VERSION "@CMAKE_OBJC_COMPILER_VERSION@")
-set(CMAKE_OBJC_COMPILER_VERSION_INTERNAL "@CMAKE_OBJC_COMPILER_VERSION_INTERNAL@")
-set(CMAKE_OBJC_COMPILER_WRAPPER "@CMAKE_OBJC_COMPILER_WRAPPER@")
-set(CMAKE_OBJC_STANDARD_COMPUTED_DEFAULT "@CMAKE_OBJC_STANDARD_COMPUTED_DEFAULT@")
-set(CMAKE_OBJC_COMPILE_FEATURES "@CMAKE_OBJC_COMPILE_FEATURES@")
-set(CMAKE_OBJC90_COMPILE_FEATURES "@CMAKE_OBJC90_COMPILE_FEATURES@")
-set(CMAKE_OBJC99_COMPILE_FEATURES "@CMAKE_OBJC99_COMPILE_FEATURES@")
-set(CMAKE_OBJC11_COMPILE_FEATURES "@CMAKE_OBJC11_COMPILE_FEATURES@")
-
-set(CMAKE_OBJC_PLATFORM_ID "@CMAKE_OBJC_PLATFORM_ID@")
-set(CMAKE_OBJC_SIMULATE_ID "@CMAKE_OBJC_SIMULATE_ID@")
-set(CMAKE_OBJC_COMPILER_FRONTEND_VARIANT "@CMAKE_OBJC_COMPILER_FRONTEND_VARIANT@")
-set(CMAKE_OBJC_SIMULATE_VERSION "@CMAKE_OBJC_SIMULATE_VERSION@")
-@_SET_CMAKE_OBJC_COMPILER_ARCHITECTURE_ID@
-@SET_CMAKE_XCODE_ARCHS@
-set(CMAKE_AR "@CMAKE_AR@")
-set(CMAKE_OBJC_COMPILER_AR "@CMAKE_OBJC_COMPILER_AR@")
-set(CMAKE_RANLIB "@CMAKE_RANLIB@")
-set(CMAKE_OBJC_COMPILER_RANLIB "@CMAKE_OBJC_COMPILER_RANLIB@")
-set(CMAKE_LINKER "@CMAKE_LINKER@")
-set(CMAKE_MT "@CMAKE_MT@")
-set(CMAKE_COMPILER_IS_GNUOBJC @CMAKE_COMPILER_IS_GNUOBJC@)
-set(CMAKE_OBJC_COMPILER_LOADED 1)
-set(CMAKE_OBJC_COMPILER_WORKS @CMAKE_OBJC_COMPILER_WORKS@)
-set(CMAKE_OBJC_ABI_COMPILED @CMAKE_OBJC_ABI_COMPILED@)
-
-set(CMAKE_OBJC_COMPILER_ENV_VAR "OBJC")
-
-set(CMAKE_OBJC_COMPILER_ID_RUN 1)
-set(CMAKE_OBJC_SOURCE_FILE_EXTENSIONS m)
-set(CMAKE_OBJC_IGNORE_EXTENSIONS h;H;o;O)
-set(CMAKE_OBJC_LINKER_PREFERENCE 5)
-
-foreach (lang C CXX OBJCXX)
-  foreach(extension IN LISTS CMAKE_OBJC_SOURCE_FILE_EXTENSIONS)
-    if (CMAKE_${lang}_COMPILER_ID_RUN)
-      list(REMOVE_ITEM CMAKE_${lang}_SOURCE_FILE_EXTENSIONS ${extension})
-    endif()
-  endforeach()
-endforeach()
-
-# Save compiler ABI information.
-set(CMAKE_OBJC_SIZEOF_DATA_PTR "@CMAKE_OBJC_SIZEOF_DATA_PTR@")
-set(CMAKE_OBJC_COMPILER_ABI "@CMAKE_OBJC_COMPILER_ABI@")
-set(CMAKE_OBJC_LIBRARY_ARCHITECTURE "@CMAKE_OBJC_LIBRARY_ARCHITECTURE@")
-
-if(CMAKE_OBJC_SIZEOF_DATA_PTR)
-  set(CMAKE_SIZEOF_VOID_P "${CMAKE_OBJC_SIZEOF_DATA_PTR}")
-endif()
-
-if(CMAKE_OBJC_COMPILER_ABI)
-  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_OBJC_COMPILER_ABI}")
-endif()
-
-if(CMAKE_OBJC_LIBRARY_ARCHITECTURE)
-  set(CMAKE_LIBRARY_ARCHITECTURE "@CMAKE_OBJC_LIBRARY_ARCHITECTURE@")
-endif()
-
-@CMAKE_OBJC_COMPILER_CUSTOM_CODE@
-@CMAKE_OBJC_SYSROOT_FLAG_CODE@
-@CMAKE_OBJC_OSX_DEPLOYMENT_TARGET_FLAG_CODE@
-
-set(CMAKE_OBJC_IMPLICIT_INCLUDE_DIRECTORIES "@CMAKE_OBJC_IMPLICIT_INCLUDE_DIRECTORIES@")
-set(CMAKE_OBJC_IMPLICIT_LINK_LIBRARIES "@CMAKE_OBJC_IMPLICIT_LINK_LIBRARIES@")
-set(CMAKE_OBJC_IMPLICIT_LINK_DIRECTORIES "@CMAKE_OBJC_IMPLICIT_LINK_DIRECTORIES@")
-set(CMAKE_OBJC_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_OBJC_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
diff --git a/share/cmake-3.18/Modules/CMakeOBJCCompilerABI.m b/share/cmake-3.18/Modules/CMakeOBJCCompilerABI.m
deleted file mode 100644
index 8fa8511..0000000
--- a/share/cmake-3.18/Modules/CMakeOBJCCompilerABI.m
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifdef __cplusplus
-# error "A C++ compiler has been selected for Objective-C."
-#endif
-
-/*--------------------------------------------------------------------------*/
-
-#include "CMakeCompilerABI.h"
-
-/*--------------------------------------------------------------------------*/
-
-int main(int argc, char *argv[])
-{
-  int require = 0;
-  require += info_sizeof_dptr[argc];
-#if defined(ABI_ID)
-  require += info_abi[argc];
-#endif
-  (void)argv;
-  return require;
-}
diff --git a/share/cmake-3.18/Modules/CMakeOBJCCompilerId.m.in b/share/cmake-3.18/Modules/CMakeOBJCCompilerId.m.in
deleted file mode 100644
index 2b8aa30..0000000
--- a/share/cmake-3.18/Modules/CMakeOBJCCompilerId.m.in
+++ /dev/null
@@ -1,63 +0,0 @@
-#ifdef __cplusplus
-# error "An Objective-C++ compiler has been selected for Objective-C."
-#endif
-
-@CMAKE_OBJC_COMPILER_ID_CONTENT@
-
-/* Construct the string literal in pieces to prevent the source from
-   getting matched.  Store it in a pointer rather than an array
-   because some compilers will just produce instructions to fill the
-   array rather than assigning a pointer to a static array.  */
-char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
-#ifdef SIMULATE_ID
-char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
-#endif
-
-#ifdef __QNXNTO__
-char const* qnxnto = "INFO" ":" "qnxnto[]";
-#endif
-
-@CMAKE_OBJC_COMPILER_ID_PLATFORM_CONTENT@
-@CMAKE_OBJC_COMPILER_ID_ERROR_FOR_TEST@
-
-#if !defined(__STDC__)
-# if (defined(_MSC_VER) && !defined(__clang__)) \
-  || (defined(__ibmxl__) || defined(__IBMC__))
-#  define C_DIALECT "90"
-# else
-#  define C_DIALECT
-# endif
-#elif __STDC_VERSION__ >= 201000L
-# define C_DIALECT "11"
-#elif __STDC_VERSION__ >= 199901L
-# define C_DIALECT "99"
-#else
-# define C_DIALECT "90"
-#endif
-const char* info_language_dialect_default =
-  "INFO" ":" "dialect_default[" C_DIALECT "]";
-
-/*--------------------------------------------------------------------------*/
-
-int main(int argc, char* argv[])
-{
-  int require = 0;
-  require += info_compiler[argc];
-  require += info_platform[argc];
-  require += info_arch[argc];
-#ifdef COMPILER_VERSION_MAJOR
-  require += info_version[argc];
-#endif
-#ifdef COMPILER_VERSION_INTERNAL
-  require += info_version_internal[argc];
-#endif
-#ifdef SIMULATE_ID
-  require += info_simulate[argc];
-#endif
-#ifdef SIMULATE_VERSION_MAJOR
-  require += info_simulate_version[argc];
-#endif
-  require += info_language_dialect_default[argc];
-  (void)argv;
-  return require;
-}
diff --git a/share/cmake-3.18/Modules/CMakeOBJCInformation.cmake b/share/cmake-3.18/Modules/CMakeOBJCInformation.cmake
deleted file mode 100644
index b3da82d..0000000
--- a/share/cmake-3.18/Modules/CMakeOBJCInformation.cmake
+++ /dev/null
@@ -1,193 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This file sets the basic flags for the Objective-C language in CMake.
-# It also loads the available platform file for the system-compiler
-# if it exists.
-# It also loads a system - compiler - processor (or target hardware)
-# specific file, which is mainly useful for crosscompiling and embedded systems.
-
-include(CMakeLanguageInformation)
-
-# some compilers use different extensions (e.g. sdcc uses .rel)
-# so set the extension here first so it can be overridden by the compiler specific file
-set(CMAKE_OBJC_OUTPUT_EXTENSION .o)
-
-if(NOT CMAKE_INCLUDE_FLAG_OBJC)
-  set(CMAKE_INCLUDE_FLAG_OBJC ${CMAKE_INCLUDE_FLAG_C})
-endif()
-
-set(_INCLUDED_FILE 0)
-
-# Load compiler-specific information.
-if(CMAKE_OBJC_COMPILER_ID)
-  include(Compiler/${CMAKE_OBJC_COMPILER_ID}-OBJC OPTIONAL)
-endif()
-
-set(CMAKE_BASE_NAME)
-get_filename_component(CMAKE_BASE_NAME "${CMAKE_OBJC_COMPILER}" NAME_WE)
-if(CMAKE_COMPILER_IS_GNUOBJC)
-  set(CMAKE_BASE_NAME gcc)
-endif()
-
-
-# load a hardware specific file, mostly useful for embedded compilers
-if(CMAKE_SYSTEM_PROCESSOR)
-  if(CMAKE_OBJC_COMPILER_ID)
-    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_OBJC_COMPILER_ID}-OBJC-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
-  endif()
-  if (NOT _INCLUDED_FILE)
-    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME}-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
-  endif ()
-endif()
-
-
-# load the system- and compiler specific files
-if(CMAKE_OBJC_COMPILER_ID)
-  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_OBJC_COMPILER_ID}-OBJC
-    OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
-endif()
-if (NOT _INCLUDED_FILE)
-  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME}
-    OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
-endif ()
-
-# load any compiler-wrapper specific information
-if (CMAKE_OBJC_COMPILER_WRAPPER)
-  __cmake_include_compiler_wrapper(OBJC)
-endif ()
-
-# We specify the compiler information in the system file for some
-# platforms, but this language may not have been enabled when the file
-# was first included.  Include it again to get the language info.
-# Remove this when all compiler info is removed from system files.
-if (NOT _INCLUDED_FILE)
-  include(Platform/${CMAKE_SYSTEM_NAME} OPTIONAL)
-endif ()
-
-if(CMAKE_OBJC_SIZEOF_DATA_PTR)
-  foreach(f ${CMAKE_OBJC_ABI_FILES})
-    include(${f})
-  endforeach()
-  unset(CMAKE_OBJC_ABI_FILES)
-endif()
-
-# This should be included before the _INIT variables are
-# used to initialize the cache.  Since the rule variables
-# have if blocks on them, users can still define them here.
-# But, it should still be after the platform file so changes can
-# be made to those values.
-
-if(CMAKE_USER_MAKE_RULES_OVERRIDE)
-  # Save the full path of the file so try_compile can use it.
-  include(${CMAKE_USER_MAKE_RULES_OVERRIDE} RESULT_VARIABLE _override)
-  set(CMAKE_USER_MAKE_RULES_OVERRIDE "${_override}")
-endif()
-
-if(CMAKE_USER_MAKE_RULES_OVERRIDE_OBJC)
-  # Save the full path of the file so try_compile can use it.
-  include(${CMAKE_USER_MAKE_RULES_OVERRIDE_OBJC} RESULT_VARIABLE _override)
-  set(CMAKE_USER_MAKE_RULES_OVERRIDE_OBJC "${_override}")
-endif()
-
-
-# for most systems a module is the same as a shared library
-# so unless the variable CMAKE_MODULE_EXISTS is set just
-# copy the values from the LIBRARY variables
-if(NOT CMAKE_MODULE_EXISTS)
-  set(CMAKE_SHARED_MODULE_OBJC_FLAGS ${CMAKE_SHARED_LIBRARY_OBJC_FLAGS})
-  set(CMAKE_SHARED_MODULE_CREATE_OBJC_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_OBJC_FLAGS})
-endif()
-
-set(CMAKE_OBJC_FLAGS_INIT "$ENV{OBJCFLAGS} ${CMAKE_OBJC_FLAGS_INIT}")
-
-cmake_initialize_per_config_variable(CMAKE_OBJC_FLAGS "Flags used by the Objective-C compiler")
-
-if(CMAKE_OBJC_STANDARD_LIBRARIES_INIT)
-  set(CMAKE_OBJC_STANDARD_LIBRARIES "${CMAKE_OBJC_STANDARD_LIBRARIES_INIT}"
-    CACHE STRING "Libraries linked by default with all Objective-C applications.")
-  mark_as_advanced(CMAKE_OBJC_STANDARD_LIBRARIES)
-endif()
-
-if(NOT CMAKE_OBJC_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_OBJC_COMPILER_LAUNCHER})
-  set(CMAKE_OBJC_COMPILER_LAUNCHER "$ENV{CMAKE_OBJC_COMPILER_LAUNCHER}"
-    CACHE STRING "Compiler launcher for OBJC.")
-endif()
-
-include(CMakeCommonLanguageInclude)
-
-# now define the following rule variables
-
-# CMAKE_OBJC_CREATE_SHARED_LIBRARY
-# CMAKE_OBJC_CREATE_SHARED_MODULE
-# CMAKE_OBJC_COMPILE_OBJECT
-# CMAKE_OBJC_LINK_EXECUTABLE
-
-# variables supplied by the generator at use time
-# <TARGET>
-# <TARGET_BASE> the target without the suffix
-# <OBJECTS>
-# <OBJECT>
-# <LINK_LIBRARIES>
-# <FLAGS>
-# <LINK_FLAGS>
-
-# Objective-C compiler information
-# <CMAKE_OBJC_COMPILER>
-# <CMAKE_SHARED_LIBRARY_CREATE_OBJC_FLAGS>
-# <CMAKE_SHARED_MODULE_CREATE_OBJC_FLAGS>
-# <CMAKE_OBJC_LINK_FLAGS>
-
-# Static library tools
-# <CMAKE_AR>
-# <CMAKE_RANLIB>
-
-
-# create an Objective-C shared library
-if(NOT CMAKE_OBJC_CREATE_SHARED_LIBRARY)
-  set(CMAKE_OBJC_CREATE_SHARED_LIBRARY
-      "<CMAKE_OBJC_COMPILER> <CMAKE_SHARED_LIBRARY_OBJC_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_OBJC_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
-endif()
-
-# create an Objective-C shared module just copy the shared library rule
-if(NOT CMAKE_OBJC_CREATE_SHARED_MODULE)
-  set(CMAKE_OBJC_CREATE_SHARED_MODULE ${CMAKE_OBJC_CREATE_SHARED_LIBRARY})
-endif()
-
-# Create an static archive incrementally for large object file counts.
-# If CMAKE_OBJC_CREATE_STATIC_LIBRARY is set it will override these.
-if(NOT DEFINED CMAKE_OBJC_ARCHIVE_CREATE)
-  set(CMAKE_OBJC_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
-endif()
-if(NOT DEFINED CMAKE_OBJC_ARCHIVE_APPEND)
-  set(CMAKE_OBJC_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
-endif()
-if(NOT DEFINED CMAKE_OBJC_ARCHIVE_FINISH)
-  set(CMAKE_OBJC_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
-endif()
-
-# compile an Objective-C file into an object file
-if(NOT CMAKE_OBJC_COMPILE_OBJECT)
-  set(CMAKE_OBJC_COMPILE_OBJECT
-    "<CMAKE_OBJC_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -x objective-c -o <OBJECT> -c <SOURCE>")
-endif()
-
-if(NOT CMAKE_OBJC_LINK_EXECUTABLE)
-  set(CMAKE_OBJC_LINK_EXECUTABLE
-    "<CMAKE_OBJC_COMPILER> <FLAGS> <CMAKE_OBJC_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RUNTIME_OBJC_FLAG)
-  set(CMAKE_EXECUTABLE_RUNTIME_OBJC_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_OBJC_FLAG})
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RUNTIME_OBJC_FLAG_SEP)
-  set(CMAKE_EXECUTABLE_RUNTIME_OBJC_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_OBJC_FLAG_SEP})
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RPATH_LINK_OBJC_FLAG)
-  set(CMAKE_EXECUTABLE_RPATH_LINK_OBJC_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_OBJC_FLAG})
-endif()
-
-set(CMAKE_OBJC_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.18/Modules/CMakeOBJCXXCompiler.cmake.in b/share/cmake-3.18/Modules/CMakeOBJCXXCompiler.cmake.in
deleted file mode 100644
index b6452c4..0000000
--- a/share/cmake-3.18/Modules/CMakeOBJCXXCompiler.cmake.in
+++ /dev/null
@@ -1,79 +0,0 @@
-set(CMAKE_OBJCXX_COMPILER "@CMAKE_OBJCXX_COMPILER@")
-set(CMAKE_OBJCXX_COMPILER_ARG1 "@CMAKE_OBJCXX_COMPILER_ARG1@")
-set(CMAKE_OBJCXX_COMPILER_ID "@CMAKE_OBJCXX_COMPILER_ID@")
-set(CMAKE_OBJCXX_COMPILER_VERSION "@CMAKE_OBJCXX_COMPILER_VERSION@")
-set(CMAKE_OBJCXX_COMPILER_VERSION_INTERNAL "@CMAKE_OBJCXX_COMPILER_VERSION_INTERNAL@")
-set(CMAKE_OBJCXX_COMPILER_WRAPPER "@CMAKE_OBJCXX_COMPILER_WRAPPER@")
-set(CMAKE_OBJCXX_STANDARD_COMPUTED_DEFAULT "@CMAKE_OBJCXX_STANDARD_COMPUTED_DEFAULT@")
-set(CMAKE_OBJCXX_COMPILE_FEATURES "@CMAKE_OBJCXX_COMPILE_FEATURES@")
-set(CMAKE_OBJCXX98_COMPILE_FEATURES "@CMAKE_OBJCXX98_COMPILE_FEATURES@")
-set(CMAKE_OBJCXX11_COMPILE_FEATURES "@CMAKE_OBJCXX11_COMPILE_FEATURES@")
-set(CMAKE_OBJCXX14_COMPILE_FEATURES "@CMAKE_OBJCXX14_COMPILE_FEATURES@")
-set(CMAKE_OBJCXX17_COMPILE_FEATURES "@CMAKE_OBJCXX17_COMPILE_FEATURES@")
-set(CMAKE_OBJCXX20_COMPILE_FEATURES "@CMAKE_OBJCXX20_COMPILE_FEATURES@")
-
-set(CMAKE_OBJCXX_PLATFORM_ID "@CMAKE_OBJCXX_PLATFORM_ID@")
-set(CMAKE_OBJCXX_SIMULATE_ID "@CMAKE_OBJCXX_SIMULATE_ID@")
-set(CMAKE_OBJCXX_COMPILER_FRONTEND_VARIANT "@CMAKE_OBJCXX_COMPILER_FRONTEND_VARIANT@")
-set(CMAKE_OBJCXX_SIMULATE_VERSION "@CMAKE_OBJCXX_SIMULATE_VERSION@")
-@_SET_CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID@
-@SET_CMAKE_XCODE_ARCHS@
-set(CMAKE_AR "@CMAKE_AR@")
-set(CMAKE_OBJCXX_COMPILER_AR "@CMAKE_OBJCXX_COMPILER_AR@")
-set(CMAKE_RANLIB "@CMAKE_RANLIB@")
-set(CMAKE_OBJCXX_COMPILER_RANLIB "@CMAKE_OBJCXX_COMPILER_RANLIB@")
-set(CMAKE_LINKER "@CMAKE_LINKER@")
-set(CMAKE_MT "@CMAKE_MT@")
-set(CMAKE_COMPILER_IS_GNUOBJCXX @CMAKE_COMPILER_IS_GNUOBJCXX@)
-set(CMAKE_OBJCXX_COMPILER_LOADED 1)
-set(CMAKE_OBJCXX_COMPILER_WORKS @CMAKE_OBJCXX_COMPILER_WORKS@)
-set(CMAKE_OBJCXX_ABI_COMPILED @CMAKE_OBJCXX_ABI_COMPILED@)
-
-set(CMAKE_OBJCXX_COMPILER_ENV_VAR "OBJCXX")
-
-set(CMAKE_OBJCXX_COMPILER_ID_RUN 1)
-set(CMAKE_OBJCXX_SOURCE_FILE_EXTENSIONS M;m;mm)
-set(CMAKE_OBJCXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O)
-
-if (CMAKE_OBJC_COMPILER_ID_RUN)
-  foreach(extension IN LISTS CMAKE_OBJC_SOURCE_FILE_EXTENSIONS)
-    list(REMOVE_ITEM CMAKE_OBJCXX_SOURCE_FILE_EXTENSIONS ${extension})
-  endforeach()
-endif()
-
-foreach (lang C CXX OBJC)
-  foreach(extension IN LISTS CMAKE_OBJCXX_SOURCE_FILE_EXTENSIONS)
-    if (CMAKE_${lang}_COMPILER_ID_RUN)
-      list(REMOVE_ITEM CMAKE_${lang}_SOURCE_FILE_EXTENSIONS ${extension})
-    endif()
-  endforeach()
-endforeach()
-
-set(CMAKE_OBJCXX_LINKER_PREFERENCE 25)
-set(CMAKE_OBJCXX_LINKER_PREFERENCE_PROPAGATES 1)
-
-# Save compiler ABI information.
-set(CMAKE_OBJCXX_SIZEOF_DATA_PTR "@CMAKE_OBJCXX_SIZEOF_DATA_PTR@")
-set(CMAKE_OBJCXX_COMPILER_ABI "@CMAKE_OBJCXX_COMPILER_ABI@")
-set(CMAKE_OBJCXX_LIBRARY_ARCHITECTURE "@CMAKE_OBJCXX_LIBRARY_ARCHITECTURE@")
-
-if(CMAKE_OBJCXX_SIZEOF_DATA_PTR)
-  set(CMAKE_SIZEOF_VOID_P "${CMAKE_OBJCXX_SIZEOF_DATA_PTR}")
-endif()
-
-if(CMAKE_OBJCXX_COMPILER_ABI)
-  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_OBJCXX_COMPILER_ABI}")
-endif()
-
-if(CMAKE_OBJCXX_LIBRARY_ARCHITECTURE)
-  set(CMAKE_LIBRARY_ARCHITECTURE "@CMAKE_OBJCXX_LIBRARY_ARCHITECTURE@")
-endif()
-
-@CMAKE_OBJCXX_COMPILER_CUSTOM_CODE@
-@CMAKE_OBJCXX_SYSROOT_FLAG_CODE@
-@CMAKE_OBJCXX_OSX_DEPLOYMENT_TARGET_FLAG_CODE@
-
-set(CMAKE_OBJCXX_IMPLICIT_INCLUDE_DIRECTORIES "@CMAKE_OBJCXX_IMPLICIT_INCLUDE_DIRECTORIES@")
-set(CMAKE_OBJCXX_IMPLICIT_LINK_LIBRARIES "@CMAKE_OBJCXX_IMPLICIT_LINK_LIBRARIES@")
-set(CMAKE_OBJCXX_IMPLICIT_LINK_DIRECTORIES "@CMAKE_OBJCXX_IMPLICIT_LINK_DIRECTORIES@")
-set(CMAKE_OBJCXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_OBJCXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
diff --git a/share/cmake-3.18/Modules/CMakeOBJCXXCompilerABI.mm b/share/cmake-3.18/Modules/CMakeOBJCXXCompilerABI.mm
deleted file mode 100644
index 288a58c..0000000
--- a/share/cmake-3.18/Modules/CMakeOBJCXXCompilerABI.mm
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef __cplusplus
-# error "A C compiler has been selected for Objective-C++."
-#endif
-
-/*--------------------------------------------------------------------------*/
-
-#include "CMakeCompilerABI.h"
-
-/*--------------------------------------------------------------------------*/
-
-int main(int argc, char *argv[])
-{
-  int require = 0;
-  require += info_sizeof_dptr[argc];
-#if defined(ABI_ID)
-  require += info_abi[argc];
-#endif
-  (void)argv;
-  return require;
-}
diff --git a/share/cmake-3.18/Modules/CMakeOBJCXXCompilerId.mm.in b/share/cmake-3.18/Modules/CMakeOBJCXXCompilerId.mm.in
deleted file mode 100644
index fe04de1..0000000
--- a/share/cmake-3.18/Modules/CMakeOBJCXXCompilerId.mm.in
+++ /dev/null
@@ -1,68 +0,0 @@
-/* This source file must have a .cpp extension so that all C++ compilers
-   recognize the extension without flags.  Borland does not know .cxx for
-   example.  */
-#ifndef __cplusplus
-# error "An Objective-C compiler has been selected for Objective-C++."
-#endif
-
-@CMAKE_OBJCXX_COMPILER_ID_CONTENT@
-
-/* Construct the string literal in pieces to prevent the source from
-   getting matched.  Store it in a pointer rather than an array
-   because some compilers will just produce instructions to fill the
-   array rather than assigning a pointer to a static array.  */
-char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
-#ifdef SIMULATE_ID
-char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
-#endif
-
-#ifdef __QNXNTO__
-char const* qnxnto = "INFO" ":" "qnxnto[]";
-#endif
-
-@CMAKE_OBJCXX_COMPILER_ID_PLATFORM_CONTENT@
-@CMAKE_OBJCXX_COMPILER_ID_ERROR_FOR_TEST@
-
-#if defined(_MSC_VER) && defined(_MSVC_LANG)
-#define CXX_STD _MSVC_LANG
-#else
-#define CXX_STD __cplusplus
-#endif
-
-const char* info_language_dialect_default = "INFO" ":" "dialect_default["
-#if CXX_STD > 201703L
-  "20"
-#elif CXX_STD >= 201703L
-  "17"
-#elif CXX_STD >= 201402L
-  "14"
-#elif CXX_STD >= 201103L
-  "11"
-#else
-  "98"
-#endif
-"]";
-
-/*--------------------------------------------------------------------------*/
-
-int main(int argc, char* argv[])
-{
-  int require = 0;
-  require += info_compiler[argc];
-  require += info_platform[argc];
-#ifdef COMPILER_VERSION_MAJOR
-  require += info_version[argc];
-#endif
-#ifdef COMPILER_VERSION_INTERNAL
-  require += info_version_internal[argc];
-#endif
-#ifdef SIMULATE_ID
-  require += info_simulate[argc];
-#endif
-#ifdef SIMULATE_VERSION_MAJOR
-  require += info_simulate_version[argc];
-#endif
-  require += info_language_dialect_default[argc];
-  (void)argv;
-  return require;
-}
diff --git a/share/cmake-3.18/Modules/CMakeOBJCXXInformation.cmake b/share/cmake-3.18/Modules/CMakeOBJCXXInformation.cmake
deleted file mode 100644
index 71beb7f..0000000
--- a/share/cmake-3.18/Modules/CMakeOBJCXXInformation.cmake
+++ /dev/null
@@ -1,278 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This file sets the basic flags for the Objective-C++ language in CMake.
-# It also loads the available platform file for the system-compiler
-# if it exists.
-# It also loads a system - compiler - processor (or target hardware)
-# specific file, which is mainly useful for crosscompiling and embedded systems.
-
-include(CMakeLanguageInformation)
-
-# some compilers use different extensions (e.g. sdcc uses .rel)
-# so set the extension here first so it can be overridden by the compiler specific file
-set(CMAKE_OBJCXX_OUTPUT_EXTENSION .o)
-
-set(_INCLUDED_FILE 0)
-
-# Load compiler-specific information.
-if(CMAKE_OBJCXX_COMPILER_ID)
-  include(Compiler/${CMAKE_OBJCXX_COMPILER_ID}-OBJCXX OPTIONAL)
-endif()
-
-set(CMAKE_BASE_NAME)
-get_filename_component(CMAKE_BASE_NAME "${CMAKE_OBJCXX_COMPILER}" NAME_WE)
-# since the gnu compiler has several names force g++
-if(CMAKE_COMPILER_IS_GNUOBJCXX)
-  set(CMAKE_BASE_NAME g++)
-endif()
-
-
-# load a hardware specific file, mostly useful for embedded compilers
-if(CMAKE_SYSTEM_PROCESSOR)
-  if(CMAKE_OBJCXX_COMPILER_ID)
-    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_OBJCXX_COMPILER_ID}-OBJCXX-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
-  endif()
-  if (NOT _INCLUDED_FILE)
-    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME}-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
-  endif ()
-endif()
-
-# load the system- and compiler specific files
-if(CMAKE_OBJCXX_COMPILER_ID)
-  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_OBJCXX_COMPILER_ID}-OBJCXX OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
-endif()
-if (NOT _INCLUDED_FILE)
-  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL
-          RESULT_VARIABLE _INCLUDED_FILE)
-endif ()
-
-# load any compiler-wrapper specific information
-if (CMAKE_OBJCXX_COMPILER_WRAPPER)
-  __cmake_include_compiler_wrapper(OBJCXX)
-endif ()
-
-# We specify the compiler information in the system file for some
-# platforms, but this language may not have been enabled when the file
-# was first included.  Include it again to get the language info.
-# Remove this when all compiler info is removed from system files.
-if (NOT _INCLUDED_FILE)
-  include(Platform/${CMAKE_SYSTEM_NAME} OPTIONAL)
-endif ()
-
-if(CMAKE_OBJCXX_SIZEOF_DATA_PTR)
-  foreach(f ${CMAKE_OBJCXX_ABI_FILES})
-    include(${f})
-  endforeach()
-  unset(CMAKE_OBJCXX_ABI_FILES)
-endif()
-
-# This should be included before the _INIT variables are
-# used to initialize the cache.  Since the rule variables
-# have if blocks on them, users can still define them here.
-# But, it should still be after the platform file so changes can
-# be made to those values.
-
-if(CMAKE_USER_MAKE_RULES_OVERRIDE)
-  # Save the full path of the file so try_compile can use it.
-  include(${CMAKE_USER_MAKE_RULES_OVERRIDE} RESULT_VARIABLE _override)
-  set(CMAKE_USER_MAKE_RULES_OVERRIDE "${_override}")
-endif()
-
-if(CMAKE_USER_MAKE_RULES_OVERRIDE_OBJCXX)
-  # Save the full path of the file so try_compile can use it.
-  include(${CMAKE_USER_MAKE_RULES_OVERRIDE_OBJCXX} RESULT_VARIABLE _override)
-  set(CMAKE_USER_MAKE_RULES_OVERRIDE_OBJCXX "${_override}")
-endif()
-
-
-# Create a set of shared library variable specific to Objective-C++
-# For 90% of the systems, these are the same flags as the Objective-C versions
-# so if these are not set just copy the flags from the Objective-C version
-if(NOT CMAKE_SHARED_LIBRARY_CREATE_OBJCXX_FLAGS)
-  set(CMAKE_SHARED_LIBRARY_CREATE_OBJCXX_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_OBJC_FLAGS})
-endif()
-
-if(NOT CMAKE_OBJCXX_COMPILE_OPTIONS_PIC)
-  set(CMAKE_OBJCXX_COMPILE_OPTIONS_PIC ${CMAKE_OBJC_COMPILE_OPTIONS_PIC})
-endif()
-
-if(NOT CMAKE_OBJCXX_COMPILE_OPTIONS_PIE)
-  set(CMAKE_OBJCXX_COMPILE_OPTIONS_PIE ${CMAKE_OBJC_COMPILE_OPTIONS_PIE})
-endif()
-if(NOT CMAKE_OBJCXX_LINK_OPTIONS_PIE)
-  set(CMAKE_OBJCXX_LINK_OPTIONS_PIE ${CMAKE_OBJC_LINK_OPTIONS_PIE})
-endif()
-if(NOT CMAKE_OBJCXX_LINK_OPTIONS_NO_PIE)
-  set(CMAKE_OBJCXX_LINK_OPTIONS_NO_PIE ${CMAKE_OBJC_LINK_OPTIONS_NO_PIE})
-endif()
-
-if(NOT CMAKE_OBJCXX_COMPILE_OPTIONS_DLL)
-  set(CMAKE_OBJCXX_COMPILE_OPTIONS_DLL ${CMAKE_OBJC_COMPILE_OPTIONS_DLL})
-endif()
-
-if(NOT CMAKE_SHARED_LIBRARY_OBJCXX_FLAGS)
-  set(CMAKE_SHARED_LIBRARY_OBJCXX_FLAGS ${CMAKE_SHARED_LIBRARY_OBJC_FLAGS})
-endif()
-
-if(NOT DEFINED CMAKE_SHARED_LIBRARY_LINK_OBJCXX_FLAGS)
-  set(CMAKE_SHARED_LIBRARY_LINK_OBJCXX_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_OBJC_FLAGS})
-endif()
-
-if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_OBJCXX_FLAG)
-  set(CMAKE_SHARED_LIBRARY_RUNTIME_OBJCXX_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_OBJC_FLAG})
-endif()
-
-if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_OBJCXX_FLAG_SEP)
-  set(CMAKE_SHARED_LIBRARY_RUNTIME_OBJCXX_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_OBJC_FLAG_SEP})
-endif()
-
-if(NOT CMAKE_SHARED_LIBRARY_RPATH_LINK_OBJCXX_FLAG)
-  set(CMAKE_SHARED_LIBRARY_RPATH_LINK_OBJCXX_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_OBJC_FLAG})
-endif()
-
-if(NOT DEFINED CMAKE_EXE_EXPORTS_OBJCXX_FLAG)
-  set(CMAKE_EXE_EXPORTS_OBJCXX_FLAG ${CMAKE_EXE_EXPORTS_OBJC_FLAG})
-endif()
-
-if(NOT DEFINED CMAKE_SHARED_LIBRARY_SONAME_OBJCXX_FLAG)
-  set(CMAKE_SHARED_LIBRARY_SONAME_OBJCXX_FLAG ${CMAKE_SHARED_LIBRARY_SONAME_OBJC_FLAG})
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RUNTIME_OBJCXX_FLAG)
-  set(CMAKE_EXECUTABLE_RUNTIME_OBJCXX_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_OBJCXX_FLAG})
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RUNTIME_OBJCXX_FLAG_SEP)
-  set(CMAKE_EXECUTABLE_RUNTIME_OBJCXX_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_OBJCXX_FLAG_SEP})
-endif()
-
-if(NOT CMAKE_EXECUTABLE_RPATH_LINK_OBJCXX_FLAG)
-  set(CMAKE_EXECUTABLE_RPATH_LINK_OBJCXX_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_OBJCXX_FLAG})
-endif()
-
-if(NOT DEFINED CMAKE_SHARED_LIBRARY_LINK_OBJCXX_WITH_RUNTIME_PATH)
-  set(CMAKE_SHARED_LIBRARY_LINK_OBJCXX_WITH_RUNTIME_PATH ${CMAKE_SHARED_LIBRARY_LINK_OBJC_WITH_RUNTIME_PATH})
-endif()
-
-if(NOT CMAKE_INCLUDE_FLAG_OBJCXX)
-  set(CMAKE_INCLUDE_FLAG_OBJCXX ${CMAKE_INCLUDE_FLAG_C})
-endif()
-
-# for most systems a module is the same as a shared library
-# so unless the variable CMAKE_MODULE_EXISTS is set just
-# copy the values from the LIBRARY variables
-if(NOT CMAKE_MODULE_EXISTS)
-  set(CMAKE_SHARED_MODULE_OBJCXX_FLAGS ${CMAKE_SHARED_LIBRARY_OBJCXX_FLAGS})
-  set(CMAKE_SHARED_MODULE_CREATE_OBJCXX_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_OBJCXX_FLAGS})
-endif()
-
-# repeat for modules
-if(NOT CMAKE_SHARED_MODULE_CREATE_OBJCXX_FLAGS)
-  set(CMAKE_SHARED_MODULE_CREATE_OBJCXX_FLAGS ${CMAKE_SHARED_MODULE_CREATE_OBJC_FLAGS})
-endif()
-
-if(NOT CMAKE_SHARED_MODULE_OBJCXX_FLAGS)
-  set(CMAKE_SHARED_MODULE_OBJCXX_FLAGS ${CMAKE_SHARED_MODULE_OBJC_FLAGS})
-endif()
-
-# Initialize OBJCXX link type selection flags from OBJC versions.
-foreach(type SHARED_LIBRARY SHARED_MODULE EXE)
-  if(NOT CMAKE_${type}_LINK_STATIC_OBJCXX_FLAGS)
-    set(CMAKE_${type}_LINK_STATIC_OBJCXX_FLAGS
-      ${CMAKE_${type}_LINK_STATIC_OBJC_FLAGS})
-  endif()
-  if(NOT CMAKE_${type}_LINK_DYNAMIC_OBJCXX_FLAGS)
-    set(CMAKE_${type}_LINK_DYNAMIC_OBJCXX_FLAGS
-      ${CMAKE_${type}_LINK_DYNAMIC_OBJC_FLAGS})
-  endif()
-endforeach()
-
-# add the flags to the cache based
-# on the initial values computed in the platform/*.cmake files
-# use _INIT variables so that this only happens the first time
-# and you can set these flags in the cmake cache
-set(CMAKE_OBJCXX_FLAGS_INIT "$ENV{OBJCXXFLAGS} ${CMAKE_OBJCXX_FLAGS_INIT}")
-
-cmake_initialize_per_config_variable(CMAKE_OBJCXX_FLAGS "Flags used by the Objective-C++ compiler")
-
-if(CMAKE_OBJCXX_STANDARD_LIBRARIES_INIT)
-  set(CMAKE_OBJCXX_STANDARD_LIBRARIES "${CMAKE_OBJCXX_STANDARD_LIBRARIES_INIT}"
-    CACHE STRING "Libraries linked by default with all Objective-C++ applications.")
-  mark_as_advanced(CMAKE_OBJCXX_STANDARD_LIBRARIES)
-endif()
-
-if(NOT CMAKE_OBJCXX_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_OBJCXX_COMPILER_LAUNCHER})
-  set(CMAKE_OBJCXX_COMPILER_LAUNCHER "$ENV{CMAKE_OBJCXX_COMPILER_LAUNCHER}"
-    CACHE STRING "Compiler launcher for OBJCXX.")
-endif()
-
-include(CMakeCommonLanguageInclude)
-
-# now define the following rules:
-# CMAKE_OBJCXX_CREATE_SHARED_LIBRARY
-# CMAKE_OBJCXX_CREATE_SHARED_MODULE
-# CMAKE_OBJCXX_COMPILE_OBJECT
-# CMAKE_OBJCXX_LINK_EXECUTABLE
-
-# variables supplied by the generator at use time
-# <TARGET>
-# <TARGET_BASE> the target without the suffix
-# <OBJECTS>
-# <OBJECT>
-# <LINK_LIBRARIES>
-# <FLAGS>
-# <LINK_FLAGS>
-
-# Objective-C++ compiler information
-# <CMAKE_OBJCXX_COMPILER>
-# <CMAKE_SHARED_LIBRARY_CREATE_OBJCXX_FLAGS>
-# <CMAKE_OBJCXX_SHARED_MODULE_CREATE_FLAGS>
-# <CMAKE_OBJCXX_LINK_FLAGS>
-
-# Static library tools
-# <CMAKE_AR>
-# <CMAKE_RANLIB>
-
-
-# create a shared Objective-C++ library
-if(NOT CMAKE_OBJCXX_CREATE_SHARED_LIBRARY)
-  set(CMAKE_OBJCXX_CREATE_SHARED_LIBRARY
-      "<CMAKE_OBJCXX_COMPILER> <CMAKE_SHARED_LIBRARY_OBJCXX_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_OBJCXX_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
-endif()
-
-# create an Objective-C++ shared module copy the shared library rule by default
-if(NOT CMAKE_OBJCXX_CREATE_SHARED_MODULE)
-  set(CMAKE_OBJCXX_CREATE_SHARED_MODULE ${CMAKE_OBJCXX_CREATE_SHARED_LIBRARY})
-endif()
-
-
-# Create a static archive incrementally for large object file counts.
-# If CMAKE_OBJCXX_CREATE_STATIC_LIBRARY is set it will override these.
-if(NOT DEFINED CMAKE_OBJCXX_ARCHIVE_CREATE)
-  set(CMAKE_OBJCXX_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
-endif()
-if(NOT DEFINED CMAKE_OBJCXX_ARCHIVE_APPEND)
-  set(CMAKE_OBJCXX_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
-endif()
-if(NOT DEFINED CMAKE_OBJCXX_ARCHIVE_FINISH)
-  set(CMAKE_OBJCXX_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
-endif()
-
-# compile an Objective-C++ file into an object file
-if(NOT CMAKE_OBJCXX_COMPILE_OBJECT)
-  set(CMAKE_OBJCXX_COMPILE_OBJECT
-    "<CMAKE_OBJCXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -x objective-c++ -o <OBJECT> -c <SOURCE>")
-endif()
-
-if(NOT CMAKE_OBJCXX_LINK_EXECUTABLE)
-  set(CMAKE_OBJCXX_LINK_EXECUTABLE
-    "<CMAKE_OBJCXX_COMPILER> <FLAGS> <CMAKE_OBJCXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
-endif()
-
-mark_as_advanced(
-CMAKE_VERBOSE_MAKEFILE
-)
-
-set(CMAKE_OBJCXX_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.18/Modules/CMakePackageConfigHelpers.cmake b/share/cmake-3.18/Modules/CMakePackageConfigHelpers.cmake
deleted file mode 100644
index 22fc953..0000000
--- a/share/cmake-3.18/Modules/CMakePackageConfigHelpers.cmake
+++ /dev/null
@@ -1,332 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CMakePackageConfigHelpers
--------------------------
-
-Helpers functions for creating config files that can be included by other
-projects to find and use a package.
-
-Adds the :command:`configure_package_config_file()` and
-:command:`write_basic_package_version_file()` commands.
-
-Generating a Package Configuration File
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. command:: configure_package_config_file
-
- Create a config file for a project::
-
-   configure_package_config_file(<input> <output>
-     INSTALL_DESTINATION <path>
-     [PATH_VARS <var1> <var2> ... <varN>]
-     [NO_SET_AND_CHECK_MACRO]
-     [NO_CHECK_REQUIRED_COMPONENTS_MACRO]
-     [INSTALL_PREFIX <path>]
-     )
-
-``configure_package_config_file()`` should be used instead of the plain
-:command:`configure_file()` command when creating the ``<PackageName>Config.cmake``
-or ``<PackageName>-config.cmake`` file for installing a project or library.
-It helps making the resulting package relocatable by avoiding hardcoded paths
-in the installed ``Config.cmake`` file.
-
-In a ``FooConfig.cmake`` file there may be code like this to make the install
-destinations know to the using project:
-
-.. code-block:: cmake
-
-   set(FOO_INCLUDE_DIR   "@CMAKE_INSTALL_FULL_INCLUDEDIR@" )
-   set(FOO_DATA_DIR   "@CMAKE_INSTALL_PREFIX@/@RELATIVE_DATA_INSTALL_DIR@" )
-   set(FOO_ICONS_DIR   "@CMAKE_INSTALL_PREFIX@/share/icons" )
-   #...logic to determine installedPrefix from the own location...
-   set(FOO_CONFIG_DIR  "${installedPrefix}/@CONFIG_INSTALL_DIR@" )
-
-All 4 options shown above are not sufficient, since the first 3 hardcode the
-absolute directory locations, and the 4th case works only if the logic to
-determine the ``installedPrefix`` is correct, and if ``CONFIG_INSTALL_DIR``
-contains a relative path, which in general cannot be guaranteed.  This has the
-effect that the resulting ``FooConfig.cmake`` file would work poorly under
-Windows and OSX, where users are used to choose the install location of a
-binary package at install time, independent from how
-:variable:`CMAKE_INSTALL_PREFIX` was set at build/cmake time.
-
-Using ``configure_package_config_file`` helps.  If used correctly, it makes
-the resulting ``FooConfig.cmake`` file relocatable.  Usage:
-
-1. write a ``FooConfig.cmake.in`` file as you are used to
-2. insert a line containing only the string ``@PACKAGE_INIT@``
-3. instead of ``set(FOO_DIR "@SOME_INSTALL_DIR@")``, use
-   ``set(FOO_DIR "@PACKAGE_SOME_INSTALL_DIR@")`` (this must be after the
-   ``@PACKAGE_INIT@`` line)
-4. instead of using the normal :command:`configure_file()`, use
-   ``configure_package_config_file()``
-
-
-
-The ``<input>`` and ``<output>`` arguments are the input and output file, the
-same way as in :command:`configure_file()`.
-
-The ``<path>`` given to ``INSTALL_DESTINATION`` must be the destination where
-the ``FooConfig.cmake`` file will be installed to.  This path can either be
-absolute, or relative to the ``INSTALL_PREFIX`` path.
-
-The variables ``<var1>`` to ``<varN>`` given as ``PATH_VARS`` are the
-variables which contain install destinations.  For each of them the macro will
-create a helper variable ``PACKAGE_<var...>``.  These helper variables must be
-used in the ``FooConfig.cmake.in`` file for setting the installed location.
-They are calculated by ``configure_package_config_file`` so that they are
-always relative to the installed location of the package.  This works both for
-relative and also for absolute locations.  For absolute locations it works
-only if the absolute location is a subdirectory of ``INSTALL_PREFIX``.
-
-If the ``INSTALL_PREFIX`` argument is passed, this is used as base path to
-calculate all the relative paths.  The ``<path>`` argument must be an absolute
-path.  If this argument is not passed, the :variable:`CMAKE_INSTALL_PREFIX`
-variable will be used instead.  The default value is good when generating a
-FooConfig.cmake file to use your package from the install tree.  When
-generating a FooConfig.cmake file to use your package from the build tree this
-option should be used.
-
-By default ``configure_package_config_file`` also generates two helper macros,
-``set_and_check()`` and ``check_required_components()`` into the
-``FooConfig.cmake`` file.
-
-``set_and_check()`` should be used instead of the normal ``set()`` command for
-setting directories and file locations.  Additionally to setting the variable
-it also checks that the referenced file or directory actually exists and fails
-with a ``FATAL_ERROR`` otherwise.  This makes sure that the created
-``FooConfig.cmake`` file does not contain wrong references.
-When using the ``NO_SET_AND_CHECK_MACRO``, this macro is not generated
-into the ``FooConfig.cmake`` file.
-
-``check_required_components(<PackageName>)`` should be called at the end of
-the ``FooConfig.cmake`` file. This macro checks whether all requested,
-non-optional components have been found, and if this is not the case, sets
-the ``Foo_FOUND`` variable to ``FALSE``, so that the package is considered to
-be not found.  It does that by testing the ``Foo_<Component>_FOUND``
-variables for all requested required components.  This macro should be
-called even if the package doesn't provide any components to make sure
-users are not specifying components erroneously.  When using the
-``NO_CHECK_REQUIRED_COMPONENTS_MACRO`` option, this macro is not generated
-into the ``FooConfig.cmake`` file.
-
-For an example see below the documentation for
-:command:`write_basic_package_version_file()`.
-
-Generating a Package Version File
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. command:: write_basic_package_version_file
-
- Create a version file for a project::
-
-   write_basic_package_version_file(<filename>
-     [VERSION <major.minor.patch>]
-     COMPATIBILITY <AnyNewerVersion|SameMajorVersion|SameMinorVersion|ExactVersion>
-     [ARCH_INDEPENDENT] )
-
-
-Writes a file for use as ``<PackageName>ConfigVersion.cmake`` file to
-``<filename>``.  See the documentation of :command:`find_package()` for
-details on this.
-
-``<filename>`` is the output filename, it should be in the build tree.
-``<major.minor.patch>`` is the version number of the project to be installed.
-
-If no ``VERSION`` is given, the :variable:`PROJECT_VERSION` variable is used.
-If this hasn't been set, it errors out.
-
-The ``COMPATIBILITY`` mode ``AnyNewerVersion`` means that the installed
-package version will be considered compatible if it is newer or exactly the
-same as the requested version.  This mode should be used for packages which
-are fully backward compatible, also across major versions.
-If ``SameMajorVersion`` is used instead, then the behaviour differs from
-``AnyNewerVersion`` in that the major version number must be the same as
-requested, e.g.  version 2.0 will not be considered compatible if 1.0 is
-requested.  This mode should be used for packages which guarantee backward
-compatibility within the same major version.
-If ``SameMinorVersion`` is used, the behaviour is the same as
-``SameMajorVersion``, but both major and minor version must be the same as
-requested, e.g version 0.2 will not be compatible if 0.1 is requested.
-If ``ExactVersion`` is used, then the package is only considered compatible if
-the requested version matches exactly its own version number (not considering
-the tweak version).  For example, version 1.2.3 of a package is only
-considered compatible to requested version 1.2.3.  This mode is for packages
-without compatibility guarantees.
-If your project has more elaborated version matching rules, you will need to
-write your own custom ``ConfigVersion.cmake`` file instead of using this
-macro.
-
-If ``ARCH_INDEPENDENT`` is given, the installed package version will be
-considered compatible even if it was built for a different architecture than
-the requested architecture.  Otherwise, an architecture check will be performed,
-and the package will be considered compatible only if the architecture matches
-exactly.  For example, if the package is built for a 32-bit architecture, the
-package is only considered compatible if it is used on a 32-bit architecture,
-unless ``ARCH_INDEPENDENT`` is given, in which case the package is considered
-compatible on any architecture.
-
-.. note:: ``ARCH_INDEPENDENT`` is intended for header-only libraries or similar
-   packages with no binaries.
-
-Internally, this macro executes :command:`configure_file()` to create the
-resulting version file.  Depending on the ``COMPATIBILITY``, the corresponding
-``BasicConfigVersion-<COMPATIBILITY>.cmake.in`` file is used.
-Please note that these files are internal to CMake and you should not call
-:command:`configure_file()` on them yourself, but they can be used as starting
-point to create more sophisticted custom ``ConfigVersion.cmake`` files.
-
-Example Generating Package Files
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Example using both :command:`configure_package_config_file` and
-``write_basic_package_version_file()``:
-
-``CMakeLists.txt``:
-
-.. code-block:: cmake
-
-   set(INCLUDE_INSTALL_DIR include/ ... CACHE )
-   set(LIB_INSTALL_DIR lib/ ... CACHE )
-   set(SYSCONFIG_INSTALL_DIR etc/foo/ ... CACHE )
-   #...
-   include(CMakePackageConfigHelpers)
-   configure_package_config_file(FooConfig.cmake.in
-     ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake
-     INSTALL_DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake
-     PATH_VARS INCLUDE_INSTALL_DIR SYSCONFIG_INSTALL_DIR)
-   write_basic_package_version_file(
-     ${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake
-     VERSION 1.2.3
-     COMPATIBILITY SameMajorVersion )
-   install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake
-                 ${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake
-           DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake )
-
-``FooConfig.cmake.in``:
-
-::
-
-   set(FOO_VERSION x.y.z)
-   ...
-   @PACKAGE_INIT@
-   ...
-   set_and_check(FOO_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
-   set_and_check(FOO_SYSCONFIG_DIR "@PACKAGE_SYSCONFIG_INSTALL_DIR@")
-
-   check_required_components(Foo)
-#]=======================================================================]
-
-include(WriteBasicConfigVersionFile)
-
-macro(WRITE_BASIC_PACKAGE_VERSION_FILE)
-  write_basic_config_version_file(${ARGN})
-endmacro()
-
-function(CONFIGURE_PACKAGE_CONFIG_FILE _inputFile _outputFile)
-  set(options NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO)
-  set(oneValueArgs INSTALL_DESTINATION INSTALL_PREFIX)
-  set(multiValueArgs PATH_VARS )
-
-  cmake_parse_arguments(CCF "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${ARGN})
-
-  if(CCF_UNPARSED_ARGUMENTS)
-    message(FATAL_ERROR "Unknown keywords given to CONFIGURE_PACKAGE_CONFIG_FILE(): \"${CCF_UNPARSED_ARGUMENTS}\"")
-  endif()
-
-  if(NOT CCF_INSTALL_DESTINATION)
-    message(FATAL_ERROR "No INSTALL_DESTINATION given to CONFIGURE_PACKAGE_CONFIG_FILE()")
-  endif()
-
-  if(DEFINED CCF_INSTALL_PREFIX)
-    if(IS_ABSOLUTE "${CCF_INSTALL_PREFIX}")
-      set(installPrefix "${CCF_INSTALL_PREFIX}")
-    else()
-      message(FATAL_ERROR "INSTALL_PREFIX must be an absolute path")
-    endif()
-  elseif(IS_ABSOLUTE "${CMAKE_INSTALL_PREFIX}")
-    set(installPrefix "${CMAKE_INSTALL_PREFIX}")
-  else()
-    get_filename_component(installPrefix "${CMAKE_INSTALL_PREFIX}" ABSOLUTE)
-  endif()
-
-  if(IS_ABSOLUTE "${CCF_INSTALL_DESTINATION}")
-    set(absInstallDir "${CCF_INSTALL_DESTINATION}")
-  else()
-    set(absInstallDir "${installPrefix}/${CCF_INSTALL_DESTINATION}")
-  endif()
-
-  file(RELATIVE_PATH PACKAGE_RELATIVE_PATH "${absInstallDir}" "${installPrefix}" )
-
-  foreach(var ${CCF_PATH_VARS})
-    if(NOT DEFINED ${var})
-      message(FATAL_ERROR "Variable ${var} does not exist")
-    else()
-      if(IS_ABSOLUTE "${${var}}")
-        string(REPLACE "${installPrefix}" "\${PACKAGE_PREFIX_DIR}"
-                        PACKAGE_${var} "${${var}}")
-      else()
-        set(PACKAGE_${var} "\${PACKAGE_PREFIX_DIR}/${${var}}")
-      endif()
-    endif()
-  endforeach()
-
-  get_filename_component(inputFileName "${_inputFile}" NAME)
-
-  set(PACKAGE_INIT "
-####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
-####### Any changes to this file will be overwritten by the next CMake run ####
-####### The input file was ${inputFileName}                            ########
-
-get_filename_component(PACKAGE_PREFIX_DIR \"\${CMAKE_CURRENT_LIST_DIR}/${PACKAGE_RELATIVE_PATH}\" ABSOLUTE)
-")
-
-  if("${absInstallDir}" MATCHES "^(/usr)?/lib(64)?/.+")
-    # Handle "/usr move" symlinks created by some Linux distros.
-    string(APPEND PACKAGE_INIT "
-# Use original install prefix when loaded through a \"/usr move\"
-# cross-prefix symbolic link such as /lib -> /usr/lib.
-get_filename_component(_realCurr \"\${CMAKE_CURRENT_LIST_DIR}\" REALPATH)
-get_filename_component(_realOrig \"${absInstallDir}\" REALPATH)
-if(_realCurr STREQUAL _realOrig)
-  set(PACKAGE_PREFIX_DIR \"${installPrefix}\")
-endif()
-unset(_realOrig)
-unset(_realCurr)
-")
-  endif()
-
-  if(NOT CCF_NO_SET_AND_CHECK_MACRO)
-    string(APPEND PACKAGE_INIT "
-macro(set_and_check _var _file)
-  set(\${_var} \"\${_file}\")
-  if(NOT EXISTS \"\${_file}\")
-    message(FATAL_ERROR \"File or directory \${_file} referenced by variable \${_var} does not exist !\")
-  endif()
-endmacro()
-")
-  endif()
-
-
-  if(NOT CCF_NO_CHECK_REQUIRED_COMPONENTS_MACRO)
-    string(APPEND PACKAGE_INIT "
-macro(check_required_components _NAME)
-  foreach(comp \${\${_NAME}_FIND_COMPONENTS})
-    if(NOT \${_NAME}_\${comp}_FOUND)
-      if(\${_NAME}_FIND_REQUIRED_\${comp})
-        set(\${_NAME}_FOUND FALSE)
-      endif()
-    endif()
-  endforeach()
-endmacro()
-")
-  endif()
-
-  string(APPEND PACKAGE_INIT "
-####################################################################################")
-
-  configure_file("${_inputFile}" "${_outputFile}" @ONLY)
-
-endfunction()
diff --git a/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake b/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake
deleted file mode 100644
index ff4c325..0000000
--- a/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake
+++ /dev/null
@@ -1,247 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-# This is used internally by CMake and should not be included by user code.
-
-# helper function that parses implicit include dirs from a single line
-# for compilers that report them that way.  on success we return the
-# list of dirs in id_var and set state_var to the 'done' state.
-function(cmake_parse_implicit_include_line line lang id_var log_var state_var)
-  # clear variables we append to (avoids possible polution from parent scopes)
-  unset(rv)
-  set(log "")
-
-  # Cray compiler (from cray wrapper, via PrgEnv-cray)
-  if("${CMAKE_${lang}_COMPILER_ID}" STREQUAL "Cray" AND
-     "${line}" MATCHES "^/" AND "${line}" MATCHES "/ccfe |/ftnfe " AND
-     "${line}" MATCHES " -isystem| -I")
-    string(REGEX MATCHALL " (-I ?|-isystem )(\"[^\"]+\"|[^ \"]+)" incs "${line}")
-    foreach(inc IN LISTS incs)
-      string(REGEX REPLACE " (-I ?|-isystem )(\"[^\"]+\"|[^ \"]+)" "\\2" idir "${inc}")
-      list(APPEND rv "${idir}")
-    endforeach()
-    if(rv)
-      string(APPEND log "  got implicit includes via cray ccfe parser!\n")
-    else()
-      string(APPEND log "  warning: cray ccfe parse failed!\n")
-    endif()
-  endif()
-
-  # PGI compiler
-  if("${CMAKE_${lang}_COMPILER_ID}" STREQUAL "PGI")
-    # pgc++ verbose output differs
-    if(("${lang}" STREQUAL "C" OR "${lang}" STREQUAL "Fortran") AND
-        "${line}" MATCHES "^/" AND
-        "${line}" MATCHES "/pgc |/pgf901 |/pgftnc " AND
-        "${line}" MATCHES " -cmdline ")
-      # cmdline has unparsed cmdline, remove it
-      string(REGEX REPLACE "-cmdline .*" "" line "${line}")
-      if("${line}" MATCHES " -nostdinc ")
-        set(rv "")    # defined, but empty
-      else()
-        string(REGEX MATCHALL " -stdinc ([^ ]*)" incs "${line}")
-        foreach(inc IN LISTS incs)
-          string(REGEX REPLACE " -stdinc ([^ ]*)" "\\1" idir "${inc}")
-          string(REPLACE ":" ";" idir "${idir}")
-          list(APPEND rv ${idir})
-        endforeach()
-      endif()
-      if(DEFINED rv)
-        string(APPEND log "  got implicit includes via PGI C/F parser!\n")
-      else()
-        string(APPEND log "  warning: PGI C/F parse failed!\n")
-      endif()
-    elseif("${lang}" STREQUAL "CXX" AND "${line}" MATCHES "^/" AND
-           "${line}" MATCHES "/pggpp1 " AND "${line}" MATCHES " -I")
-      # oddly, -Mnostdinc does not get rid of system -I's, at least in
-      # PGI 18.10.1 ...
-      string(REGEX MATCHALL " (-I ?)([^ ]*)" incs "${line}")
-      foreach(inc IN LISTS incs)
-        string(REGEX REPLACE " (-I ?)([^ ]*)" "\\2" idir "${inc}")
-        if(NOT "${idir}" STREQUAL "-")   # filter out "-I-"
-          list(APPEND rv "${idir}")
-        endif()
-      endforeach()
-      if(DEFINED rv)
-        string(APPEND log "  got implicit includes via PGI CXX parser!\n")
-      else()
-        string(APPEND log "  warning: PGI CXX parse failed!\n")
-      endif()
-    endif()
-  endif()
-
-  # SunPro compiler
-  if("${CMAKE_${lang}_COMPILER_ID}" STREQUAL "SunPro" AND
-     ("${line}" MATCHES "-D__SUNPRO_C" OR "${line}" MATCHES "-D__SUNPRO_F") )
-    string(REGEX MATCHALL " (-I ?)([^ ]*)" incs "${line}")
-    foreach(inc IN LISTS incs)
-      string(REGEX REPLACE " (-I ?)([^ ]*)" "\\2" idir "${inc}")
-      if(NOT "${idir}" STREQUAL "-xbuiltin")
-        list(APPEND rv "${idir}")
-      endif()
-    endforeach()
-    if(rv)
-      if ("${lang}" STREQUAL "C" OR "${lang}" STREQUAL "CXX")
-        # /usr/include appears to be hardwired in
-        list(APPEND rv "/usr/include")
-      endif()
-      string(APPEND log "  got implicit includes via sunpro parser!\n")
-    else()
-      string(APPEND log "  warning: sunpro parse failed!\n")
-    endif()
-  endif()
-
-  # XL compiler
-  if(("${CMAKE_${lang}_COMPILER_ID}" STREQUAL "XL"
-      OR "${CMAKE_${lang}_COMPILER_ID}" STREQUAL "XLClang")
-     AND "${line}" MATCHES "^/"
-     AND ( ("${lang}" STREQUAL "Fortran" AND
-            "${line}" MATCHES "/xl[fF]entry " AND
-            "${line}" MATCHES "OSVAR\\([^ ]+\\)")
-           OR
-            (  ("${lang}" STREQUAL "C" OR "${lang}" STREQUAL "CXX") AND
-            "${line}" MATCHES "/xl[cC]2?entry " AND
-            "${line}" MATCHES " -qosvar=")
-         )  )
-    # -qnostdinc cancels other stdinc flags, even if present
-    string(FIND "${line}" " -qnostdinc" nostd)
-    if(NOT ${nostd} EQUAL -1)
-      set(rv "")    # defined but empty
-      string(APPEND log "  got implicit includes via XL parser (nostdinc)\n")
-    else()
-      if("${lang}" STREQUAL "CXX")
-        string(REGEX MATCHALL " -qcpp_stdinc=([^ ]*)" std "${line}")
-        string(REGEX MATCHALL " -qgcc_cpp_stdinc=([^ ]*)" gcc_std "${line}")
-      else()
-        string(REGEX MATCHALL " -qc_stdinc=([^ ]*)" std "${line}")
-        string(REGEX MATCHALL " -qgcc_c_stdinc=([^ ]*)" gcc_std "${line}")
-      endif()
-      set(xlstd ${std} ${gcc_std})
-      foreach(inc IN LISTS xlstd)
-        string(REGEX REPLACE " -q(cpp|gcc_cpp|c|gcc_c)_stdinc=([^ ]*)" "\\2"
-               ipath "${inc}")
-        string(REPLACE ":" ";" ipath "${ipath}")
-        list(APPEND rv ${ipath})
-      endforeach()
-    endif()
-    # user can add -I flags via CMAKE_{C,CXX}_FLAGS, look for that too
-    string(REGEX MATCHALL " (-I ?)([^ ]*)" incs "${line}")
-    unset(urv)
-    foreach(inc IN LISTS incs)
-      string(REGEX REPLACE " (-I ?)([^ ]*)" "\\2" idir "${inc}")
-      list(APPEND urv "${idir}")
-    endforeach()
-    if(urv)
-      if ("${rv}" STREQUAL "")
-        set(rv ${urv})
-      else()
-        list(APPEND rv ${urv})
-      endif()
-    endif()
-
-    if(DEFINED rv)
-      string(APPEND log "  got implicit includes via XL parser!\n")
-    else()
-      string(APPEND log "  warning: XL parse failed!\n")
-    endif()
-  endif()
-
-  if(log)
-    set(${log_var} "${log}" PARENT_SCOPE)
-  else()
-    unset(${log_var} PARENT_SCOPE)
-  endif()
-  if(DEFINED rv)
-    set(${id_var} "${rv}" PARENT_SCOPE)
-    set(${state_var} "done" PARENT_SCOPE)
-  endif()
-endfunction()
-
-# top-level function to parse implicit include directory information
-# from verbose compiler output. sets state_var in parent to 'done' on success.
-function(cmake_parse_implicit_include_info text lang dir_var log_var state_var)
-  set(state start)    # values: start, loading, done
-
-  # clear variables we append to (avoids possible polution from parent scopes)
-  set(implicit_dirs_tmp)
-  set(log "")
-
-  # go through each line of output...
-  string(REGEX REPLACE "\r*\n" ";" output_lines "${text}")
-  foreach(line IN LISTS output_lines)
-    if(state STREQUAL start)
-      string(FIND "${line}" "#include \"...\" search starts here:" rv)
-      if(rv GREATER -1)
-        set(state loading)
-        set(preload 1)      # looking for include <...> now
-        string(APPEND log "  found start of include info\n")
-      else()
-        cmake_parse_implicit_include_line("${line}" "${lang}" implicit_dirs_tmp
-                                          linelog state)
-        if(linelog)
-          string(APPEND log ${linelog})
-        endif()
-        if(state STREQUAL done)
-          break()
-        endif()
-      endif()
-    elseif(state STREQUAL loading)
-      string(FIND "${line}" "End of search list." rv)
-      if(rv GREATER -1)
-        set(state done)
-        string(APPEND log "  end of search list found\n")
-        break()
-      endif()
-      if(preload)
-        string(FIND "${line}" "#include <...> search starts here:" rv)
-        if(rv GREATER -1)
-          set(preload 0)
-          string(APPEND log "  found start of implicit include info\n")
-        endif()
-        continue()
-      endif()
-      if("${line}" MATCHES "^ ")
-        string(SUBSTRING "${line}" 1 -1 line)  # remove leading space
-      endif()
-      if ("${line}" MATCHES " \\(framework directory\\)$")
-        continue() # frameworks are handled elsewhere, ignore them here
-      endif()
-      string(REPLACE "\\" "/" path "${line}")
-      list(APPEND implicit_dirs_tmp "${path}")
-      string(APPEND log "    add: [${path}]\n")
-    endif()
-  endforeach()
-
-  set(implicit_dirs "")
-  foreach(d IN LISTS implicit_dirs_tmp)
-    if(IS_ABSOLUTE "${d}")
-      get_filename_component(dir "${d}" ABSOLUTE)
-      list(APPEND implicit_dirs "${dir}")
-      string(APPEND log "  collapse include dir [${d}] ==> [${dir}]\n")
-    elseif("${d}" MATCHES [[^\.\.[\/]\.\.[\/](.*)$]])
-      # This relative path is deep enough to get out of the CMakeFiles/CMakeTmp
-      # directory where the ABI check is done.  Assume that the compiler has
-      # computed this path adaptively based on the current working directory
-      # such that the effective result is absolute.
-      get_filename_component(dir "${CMAKE_BINARY_DIR}/${CMAKE_MATCH_1}" ABSOLUTE)
-      list(APPEND implicit_dirs "${dir}")
-      string(APPEND log "  collapse relative include dir [${d}] ==> [${dir}]\n")
-    else()
-      string(APPEND log "  skipping relative include dir [${d}]\n")
-    endif()
-  endforeach()
-  list(REMOVE_DUPLICATES implicit_dirs)
-
-  # Log results.
-  if(state STREQUAL done)
-    string(APPEND log "  implicit include dirs: [${implicit_dirs}]\n")
-  else()
-    string(APPEND log "  warn: unable to parse implicit include dirs!\n")
-  endif()
-
-  # Return results.
-  set(${dir_var} "${implicit_dirs}" PARENT_SCOPE)
-  set(${log_var} "${log}" PARENT_SCOPE)
-  set(${state_var} "${state}" PARENT_SCOPE)
-
-endfunction()
diff --git a/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake b/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake
deleted file mode 100644
index 0465515..0000000
--- a/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake
+++ /dev/null
@@ -1,204 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0053 NEW)
-cmake_policy(SET CMP0054 NEW)
-
-# Function parse implicit linker options.
-# This is used internally by CMake and should not be included by user
-# code.
-
-function(CMAKE_PARSE_IMPLICIT_LINK_INFO text lib_var dir_var fwk_var log_var obj_regex)
-  set(implicit_libs_tmp "")
-  set(implicit_dirs_tmp)
-  set(implicit_fwks_tmp)
-  set(log "")
-
-  # Parse implicit linker arguments.
-  set(linker "CMAKE_LINKER-NOTFOUND")
-  if(CMAKE_LINKER)
-    get_filename_component(linker ${CMAKE_LINKER} NAME)
-    string(REGEX REPLACE "([][+.*?()^$])" "\\\\\\1" linker "${linker}")
-  endif()
-  set(startfile "CMAKE_LINK_STARTFILE-NOTFOUND")
-  if(CMAKE_LINK_STARTFILE)
-    set(startfile "${CMAKE_LINK_STARTFILE}")
-  endif()
-  # Construct a regex to match linker lines.  It must match both the
-  # whole line and just the command (argv[0]).
-  set(linker_regex "^( *|.*[/\\])(${linker}|${startfile}|([^/\\]+-)?ld|collect2)[^/\\]*( |$)")
-  set(linker_exclude_regex "collect2 version |^[A-Za-z0-9_]+=|/ldfe ")
-  string(APPEND log "  link line regex: [${linker_regex}]\n")
-  string(REGEX REPLACE "\r?\n" ";" output_lines "${text}")
-  foreach(line IN LISTS output_lines)
-    set(cmd)
-    if("${line}" MATCHES "${linker_regex}" AND
-        NOT "${line}" MATCHES "${linker_exclude_regex}")
-      if(XCODE)
-        # Xcode unconditionally adds a path under the project build tree and
-        # on older versions it is not reported with proper quotes.  Remove it.
-        string(REGEX REPLACE "([][+.*()^])" "\\\\\\1" _dir_regex "${CMAKE_BINARY_DIR}")
-        string(REGEX REPLACE " -[FL]${_dir_regex}/([^ ]| [^-])+( |$)" " " xline "${line}")
-        if(NOT "x${xline}" STREQUAL "x${line}")
-          string(APPEND log "  reduced line: [${line}]\n            to: [${xline}]\n")
-          set(line "${xline}")
-        endif()
-      endif()
-      separate_arguments(args NATIVE_COMMAND "${line}")
-      list(GET args 0 cmd)
-    else()
-      #check to see if the link line is comma-separated instead of space separated
-      string(REGEX REPLACE "," " " line "${line}")
-      if("${line}" MATCHES "${linker_regex}" AND
-        NOT "${line}" MATCHES "${linker_exclude_regex}")
-        separate_arguments(args NATIVE_COMMAND "${line}")
-        list(GET args 0 cmd)
-        if("${cmd}" MATCHES "exec:")
-          # ibm xl sometimes has 'exec: ' in-front of the linker
-          list(GET args 1 cmd)
-        endif()
-      endif()
-    endif()
-    set(is_msvc 0)
-    if("${cmd}" MATCHES "${linker_regex}")
-      string(APPEND log "  link line: [${line}]\n")
-      string(REGEX REPLACE ";-([LYz]);" ";-\\1" args "${args}")
-      set(skip_value_of "")
-      foreach(arg IN LISTS args)
-        if(skip_value_of)
-          string(APPEND log "    arg [${arg}] ==> skip value of ${skip_value_of}\n")
-          set(skip_value_of "")
-        elseif("${arg}" MATCHES "^-L(.:)?[/\\]")
-          # Unix search path.
-          string(REGEX REPLACE "^-L" "" dir "${arg}")
-          list(APPEND implicit_dirs_tmp ${dir})
-          string(APPEND log "    arg [${arg}] ==> dir [${dir}]\n")
-        elseif("${arg}" MATCHES "^[-/](LIBPATH|libpath):(.+)")
-          # MSVC search path.
-          set(dir "${CMAKE_MATCH_2}")
-          list(APPEND implicit_dirs_tmp ${dir})
-          string(APPEND log "    arg [${arg}] ==> dir [${dir}]\n")
-        elseif(is_msvc AND "${arg}" STREQUAL "-link")
-          string(APPEND log "    arg [${arg}] ==> ignore MSVC cl option\n")
-        elseif(is_msvc AND "${arg}" MATCHES "^(.*\\.[Ll][Ii][Bb])$")
-          set(lib "${CMAKE_MATCH_1}")
-          list(APPEND implicit_libs_tmp ${lib})
-          string(APPEND log "    arg [${arg}] ==> lib [${lib}]\n")
-        elseif("${arg}" STREQUAL "-lto_library")
-          # ld argument "-lto_library <path>"
-          set(skip_value_of "${arg}")
-          string(APPEND log "    arg [${arg}] ==> ignore, skip following value\n")
-        elseif("${arg}" MATCHES "^-l([^:].*)$")
-          # Unix library.
-          set(lib "${CMAKE_MATCH_1}")
-          list(APPEND implicit_libs_tmp ${lib})
-          string(APPEND log "    arg [${arg}] ==> lib [${lib}]\n")
-        elseif("${arg}" MATCHES "^(.:)?[/\\].*\\.a$")
-          # Unix library full path.
-          list(APPEND implicit_libs_tmp ${arg})
-          string(APPEND log "    arg [${arg}] ==> lib [${arg}]\n")
-        elseif("${arg}" MATCHES "^[-/](DEFAULTLIB|defaultlib):(.+)")
-          # Windows library.
-          set(lib "${CMAKE_MATCH_2}")
-          list(APPEND implicit_libs_tmp ${lib})
-          string(APPEND log "    arg [${arg}] ==> lib [${lib}]\n")
-        elseif("${arg}" MATCHES "^(.:)?[/\\].*\\.o$"
-            AND obj_regex AND "${arg}" MATCHES "${obj_regex}")
-          # Object file full path.
-          list(APPEND implicit_libs_tmp ${arg})
-          string(APPEND log "    arg [${arg}] ==> obj [${arg}]\n")
-        elseif("${arg}" MATCHES "^-Y(P,)?[^0-9]")
-          # Sun search path ([^0-9] avoids conflict with Mac -Y<num>).
-          string(REGEX REPLACE "^-Y(P,)?" "" dirs "${arg}")
-          string(REPLACE ":" ";" dirs "${dirs}")
-          list(APPEND implicit_dirs_tmp ${dirs})
-          string(APPEND log "    arg [${arg}] ==> dirs [${dirs}]\n")
-        elseif("${arg}" MATCHES "^-l:")
-          # HP named library.
-          list(APPEND implicit_libs_tmp ${arg})
-          string(APPEND log "    arg [${arg}] ==> lib [${arg}]\n")
-        elseif("${arg}" MATCHES "^-z(all|default|weak)extract")
-          # Link editor option.
-          list(APPEND implicit_libs_tmp ${arg})
-          string(APPEND log "    arg [${arg}] ==> opt [${arg}]\n")
-        elseif("${arg}" STREQUAL "cl.exe")
-          string(APPEND log "    arg [${arg}] ==> recognize MSVC cl\n")
-          set(is_msvc 1)
-        else()
-          string(APPEND log "    arg [${arg}] ==> ignore\n")
-        endif()
-      endforeach()
-      break()
-    elseif("${line}" MATCHES "LPATH(=| is:? *)(.*)$")
-      string(APPEND log "  LPATH line: [${line}]\n")
-      # HP search path.
-      string(REPLACE ":" ";" paths "${CMAKE_MATCH_2}")
-      list(APPEND implicit_dirs_tmp ${paths})
-      string(APPEND log "    dirs [${paths}]\n")
-    else()
-      string(APPEND log "  ignore line: [${line}]\n")
-    endif()
-  endforeach()
-
-  # Look for library search paths reported by linker.
-  if("${output_lines}" MATCHES ";Library search paths:((;\t[^;]+)+)")
-    string(REPLACE ";\t" ";" implicit_dirs_match "${CMAKE_MATCH_1}")
-    string(APPEND log "  Library search paths: [${implicit_dirs_match}]\n")
-    list(APPEND implicit_dirs_tmp ${implicit_dirs_match})
-  endif()
-  if("${output_lines}" MATCHES ";Framework search paths:((;\t[^;]+)+)")
-    string(REPLACE ";\t" ";" implicit_fwks_match "${CMAKE_MATCH_1}")
-    string(APPEND log "  Framework search paths: [${implicit_fwks_match}]\n")
-    list(APPEND implicit_fwks_tmp ${implicit_fwks_match})
-  endif()
-
-  # Cleanup list of libraries and flags.
-  # We remove items that are not language-specific.
-  set(implicit_libs "")
-  foreach(lib IN LISTS implicit_libs_tmp)
-    if("x${lib}" MATCHES "^x(crt.*\\.o|gcc_eh.*|.*libgcc_eh.*|System.*|.*libclang_rt.*|msvcrt.*|libvcruntime.*|libucrt.*|libcmt.*)$")
-      string(APPEND log "  remove lib [${lib}]\n")
-    elseif(IS_ABSOLUTE "${lib}")
-      get_filename_component(abs "${lib}" ABSOLUTE)
-      if(NOT "x${lib}" STREQUAL "x${abs}")
-        string(APPEND log "  collapse lib [${lib}] ==> [${abs}]\n")
-      endif()
-      list(APPEND implicit_libs "${abs}")
-    else()
-      list(APPEND implicit_libs "${lib}")
-    endif()
-  endforeach()
-
-  # Cleanup list of library and framework directories.
-  set(desc_dirs "library")
-  set(desc_fwks "framework")
-  foreach(t dirs fwks)
-    set(implicit_${t} "")
-    foreach(d IN LISTS implicit_${t}_tmp)
-      get_filename_component(dir "${d}" ABSOLUTE)
-      string(FIND "${dir}" "${CMAKE_FILES_DIRECTORY}/" pos)
-      if(NOT pos LESS 0)
-        set(msg ", skipping non-system directory")
-      else()
-        set(msg "")
-        list(APPEND implicit_${t} "${dir}")
-      endif()
-      string(APPEND log "  collapse ${desc_${t}} dir [${d}] ==> [${dir}]${msg}\n")
-    endforeach()
-    list(REMOVE_DUPLICATES implicit_${t})
-  endforeach()
-
-  # Log results.
-  string(APPEND log "  implicit libs: [${implicit_libs}]\n")
-  string(APPEND log "  implicit dirs: [${implicit_dirs}]\n")
-  string(APPEND log "  implicit fwks: [${implicit_fwks}]\n")
-
-  # Return results.
-  set(${lib_var} "${implicit_libs}" PARENT_SCOPE)
-  set(${dir_var} "${implicit_dirs}" PARENT_SCOPE)
-  set(${fwk_var} "${implicit_fwks}" PARENT_SCOPE)
-  set(${log_var} "${log}" PARENT_SCOPE)
-endfunction()
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/CMakePlatformId.h.in b/share/cmake-3.18/Modules/CMakePlatformId.h.in
deleted file mode 100644
index 40668a3..0000000
--- a/share/cmake-3.18/Modules/CMakePlatformId.h.in
+++ /dev/null
@@ -1,286 +0,0 @@
-#define STRINGIFY_HELPER(X) #X
-#define STRINGIFY(X) STRINGIFY_HELPER(X)
-
-/* Identify known platforms by name.  */
-#if defined(__linux) || defined(__linux__) || defined(linux)
-# define PLATFORM_ID "Linux"
-
-#elif defined(__CYGWIN__)
-# define PLATFORM_ID "Cygwin"
-
-#elif defined(__MINGW32__)
-# define PLATFORM_ID "MinGW"
-
-#elif defined(__APPLE__)
-# define PLATFORM_ID "Darwin"
-
-#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
-# define PLATFORM_ID "Windows"
-
-#elif defined(__FreeBSD__) || defined(__FreeBSD)
-# define PLATFORM_ID "FreeBSD"
-
-#elif defined(__NetBSD__) || defined(__NetBSD)
-# define PLATFORM_ID "NetBSD"
-
-#elif defined(__OpenBSD__) || defined(__OPENBSD)
-# define PLATFORM_ID "OpenBSD"
-
-#elif defined(__sun) || defined(sun)
-# define PLATFORM_ID "SunOS"
-
-#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
-# define PLATFORM_ID "AIX"
-
-#elif defined(__hpux) || defined(__hpux__)
-# define PLATFORM_ID "HP-UX"
-
-#elif defined(__HAIKU__)
-# define PLATFORM_ID "Haiku"
-
-#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
-# define PLATFORM_ID "BeOS"
-
-#elif defined(__QNX__) || defined(__QNXNTO__)
-# define PLATFORM_ID "QNX"
-
-#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
-# define PLATFORM_ID "Tru64"
-
-#elif defined(__riscos) || defined(__riscos__)
-# define PLATFORM_ID "RISCos"
-
-#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
-# define PLATFORM_ID "SINIX"
-
-#elif defined(__UNIX_SV__)
-# define PLATFORM_ID "UNIX_SV"
-
-#elif defined(__bsdos__)
-# define PLATFORM_ID "BSDOS"
-
-#elif defined(_MPRAS) || defined(MPRAS)
-# define PLATFORM_ID "MP-RAS"
-
-#elif defined(__osf) || defined(__osf__)
-# define PLATFORM_ID "OSF1"
-
-#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
-# define PLATFORM_ID "SCO_SV"
-
-#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
-# define PLATFORM_ID "ULTRIX"
-
-#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
-# define PLATFORM_ID "Xenix"
-
-#elif defined(__WATCOMC__)
-# if defined(__LINUX__)
-#  define PLATFORM_ID "Linux"
-
-# elif defined(__DOS__)
-#  define PLATFORM_ID "DOS"
-
-# elif defined(__OS2__)
-#  define PLATFORM_ID "OS2"
-
-# elif defined(__WINDOWS__)
-#  define PLATFORM_ID "Windows3x"
-
-# elif defined(__VXWORKS__)
-#  define PLATFORM_ID "VxWorks"
-
-# else /* unknown platform */
-#  define PLATFORM_ID
-# endif
-
-#elif defined(__INTEGRITY)
-# if defined(INT_178B)
-#  define PLATFORM_ID "Integrity178"
-
-# else /* regular Integrity */
-#  define PLATFORM_ID "Integrity"
-# endif
-
-#else /* unknown platform */
-# define PLATFORM_ID
-
-#endif
-
-/* For windows compilers MSVC and Intel we can determine
-   the architecture of the compiler being used.  This is because
-   the compilers do not have flags that can change the architecture,
-   but rather depend on which compiler is being used
-*/
-#if defined(_WIN32) && defined(_MSC_VER)
-# if defined(_M_IA64)
-#  define ARCHITECTURE_ID "IA64"
-
-# elif defined(_M_X64) || defined(_M_AMD64)
-#  define ARCHITECTURE_ID "x64"
-
-# elif defined(_M_IX86)
-#  define ARCHITECTURE_ID "X86"
-
-# elif defined(_M_ARM64)
-#  define ARCHITECTURE_ID "ARM64"
-
-# elif defined(_M_ARM)
-#  if _M_ARM == 4
-#   define ARCHITECTURE_ID "ARMV4I"
-#  elif _M_ARM == 5
-#   define ARCHITECTURE_ID "ARMV5I"
-#  else
-#   define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
-#  endif
-
-# elif defined(_M_MIPS)
-#  define ARCHITECTURE_ID "MIPS"
-
-# elif defined(_M_SH)
-#  define ARCHITECTURE_ID "SHx"
-
-# else /* unknown architecture */
-#  define ARCHITECTURE_ID ""
-# endif
-
-#elif defined(__WATCOMC__)
-# if defined(_M_I86)
-#  define ARCHITECTURE_ID "I86"
-
-# elif defined(_M_IX86)
-#  define ARCHITECTURE_ID "X86"
-
-# else /* unknown architecture */
-#  define ARCHITECTURE_ID ""
-# endif
-
-#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
-# if defined(__ICCARM__)
-#  define ARCHITECTURE_ID "ARM"
-
-# elif defined(__ICCRX__)
-#  define ARCHITECTURE_ID "RX"
-
-# elif defined(__ICCRH850__)
-#  define ARCHITECTURE_ID "RH850"
-
-# elif defined(__ICCRL78__)
-#  define ARCHITECTURE_ID "RL78"
-
-# elif defined(__ICCRISCV__)
-#  define ARCHITECTURE_ID "RISCV"
-
-# elif defined(__ICCAVR__)
-#  define ARCHITECTURE_ID "AVR"
-
-# elif defined(__ICC430__)
-#  define ARCHITECTURE_ID "MSP430"
-
-# elif defined(__ICCV850__)
-#  define ARCHITECTURE_ID "V850"
-
-# elif defined(__ICC8051__)
-#  define ARCHITECTURE_ID "8051"
-
-# else /* unknown architecture */
-#  define ARCHITECTURE_ID ""
-# endif
-
-#elif defined(__ghs__)
-# if defined(__PPC64__)
-#  define ARCHITECTURE_ID "PPC64"
-
-# elif defined(__ppc__)
-#  define ARCHITECTURE_ID "PPC"
-
-# elif defined(__ARM__)
-#  define ARCHITECTURE_ID "ARM"
-
-# elif defined(__x86_64__)
-#  define ARCHITECTURE_ID "x64"
-
-# elif defined(__i386__)
-#  define ARCHITECTURE_ID "X86"
-
-# else /* unknown architecture */
-#  define ARCHITECTURE_ID ""
-# endif
-#else
-#  define ARCHITECTURE_ID
-#endif
-
-/* Convert integer to decimal digit literals.  */
-#define DEC(n)                   \
-  ('0' + (((n) / 10000000)%10)), \
-  ('0' + (((n) / 1000000)%10)),  \
-  ('0' + (((n) / 100000)%10)),   \
-  ('0' + (((n) / 10000)%10)),    \
-  ('0' + (((n) / 1000)%10)),     \
-  ('0' + (((n) / 100)%10)),      \
-  ('0' + (((n) / 10)%10)),       \
-  ('0' +  ((n) % 10))
-
-/* Convert integer to hex digit literals.  */
-#define HEX(n)             \
-  ('0' + ((n)>>28 & 0xF)), \
-  ('0' + ((n)>>24 & 0xF)), \
-  ('0' + ((n)>>20 & 0xF)), \
-  ('0' + ((n)>>16 & 0xF)), \
-  ('0' + ((n)>>12 & 0xF)), \
-  ('0' + ((n)>>8  & 0xF)), \
-  ('0' + ((n)>>4  & 0xF)), \
-  ('0' + ((n)     & 0xF))
-
-/* Construct a string literal encoding the version number components. */
-#ifdef COMPILER_VERSION_MAJOR
-char const info_version[] = {
-  'I', 'N', 'F', 'O', ':',
-  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
-  COMPILER_VERSION_MAJOR,
-# ifdef COMPILER_VERSION_MINOR
-  '.', COMPILER_VERSION_MINOR,
-#  ifdef COMPILER_VERSION_PATCH
-   '.', COMPILER_VERSION_PATCH,
-#   ifdef COMPILER_VERSION_TWEAK
-    '.', COMPILER_VERSION_TWEAK,
-#   endif
-#  endif
-# endif
-  ']','\0'};
-#endif
-
-/* Construct a string literal encoding the internal version number. */
-#ifdef COMPILER_VERSION_INTERNAL
-char const info_version_internal[] = {
-  'I', 'N', 'F', 'O', ':',
-  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_',
-  'i','n','t','e','r','n','a','l','[',
-  COMPILER_VERSION_INTERNAL,']','\0'};
-#endif
-
-/* Construct a string literal encoding the version number components. */
-#ifdef SIMULATE_VERSION_MAJOR
-char const info_simulate_version[] = {
-  'I', 'N', 'F', 'O', ':',
-  's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
-  SIMULATE_VERSION_MAJOR,
-# ifdef SIMULATE_VERSION_MINOR
-  '.', SIMULATE_VERSION_MINOR,
-#  ifdef SIMULATE_VERSION_PATCH
-   '.', SIMULATE_VERSION_PATCH,
-#   ifdef SIMULATE_VERSION_TWEAK
-    '.', SIMULATE_VERSION_TWEAK,
-#   endif
-#  endif
-# endif
-  ']','\0'};
-#endif
-
-/* Construct the string literal in pieces to prevent the source from
-   getting matched.  Store it in a pointer rather than an array
-   because some compilers will just produce instructions to fill the
-   array rather than assigning a pointer to a static array.  */
-char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
-char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
-
diff --git a/share/cmake-3.18/Modules/CMakePrintHelpers.cmake b/share/cmake-3.18/Modules/CMakePrintHelpers.cmake
deleted file mode 100644
index d652ffa..0000000
--- a/share/cmake-3.18/Modules/CMakePrintHelpers.cmake
+++ /dev/null
@@ -1,147 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CMakePrintHelpers
------------------
-
-Convenience functions for printing properties and variables, useful
-e.g. for debugging.
-
-::
-
-  cmake_print_properties([TARGETS target1 ..  targetN]
-                        [SOURCES source1 .. sourceN]
-                        [DIRECTORIES dir1 .. dirN]
-                        [TESTS test1 .. testN]
-                        [CACHE_ENTRIES entry1 .. entryN]
-                        PROPERTIES prop1 .. propN )
-
-This function prints the values of the properties of the given targets,
-source files, directories, tests or cache entries.  Exactly one of the
-scope keywords must be used.  Example::
-
-  cmake_print_properties(TARGETS foo bar PROPERTIES
-                         LOCATION INTERFACE_INCLUDE_DIRECTORIES)
-
-This will print the LOCATION and INTERFACE_INCLUDE_DIRECTORIES properties for
-both targets foo and bar.
-
-::
-
-  cmake_print_variables(var1 var2 ..  varN)
-
-This function will print the name of each variable followed by its value.
-Example::
-
-  cmake_print_variables(CMAKE_C_COMPILER CMAKE_MAJOR_VERSION DOES_NOT_EXIST)
-
-Gives::
-
-  -- CMAKE_C_COMPILER="/usr/bin/gcc" ; CMAKE_MAJOR_VERSION="2" ; DOES_NOT_EXIST=""
-#]=======================================================================]
-
-function(cmake_print_variables)
-  set(msg "")
-  foreach(var ${ARGN})
-    if(msg)
-      string(APPEND msg " ; ")
-    endif()
-    string(APPEND msg "${var}=\"${${var}}\"")
-  endforeach()
-  message(STATUS "${msg}")
-endfunction()
-
-
-function(cmake_print_properties)
-  set(options )
-  set(oneValueArgs )
-  set(multiValueArgs TARGETS SOURCES TESTS DIRECTORIES CACHE_ENTRIES PROPERTIES )
-
-  cmake_parse_arguments(CPP "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${ARGN})
-
-  if(CPP_UNPARSED_ARGUMENTS)
-    message(FATAL_ERROR "Unknown keywords given to cmake_print_properties(): \"${CPP_UNPARSED_ARGUMENTS}\"")
-    return()
-  endif()
-
-  if(NOT CPP_PROPERTIES)
-    message(FATAL_ERROR "Required argument PROPERTIES missing in cmake_print_properties() call")
-    return()
-  endif()
-
-  set(mode)
-  set(items)
-  set(keyword)
-
-  if(CPP_TARGETS)
-    set(items ${CPP_TARGETS})
-    set(mode ${mode} TARGETS)
-    set(keyword TARGET)
-  endif()
-
-  if(CPP_SOURCES)
-    set(items ${CPP_SOURCES})
-    set(mode ${mode} SOURCES)
-    set(keyword SOURCE)
-  endif()
-
-  if(CPP_TESTS)
-    set(items ${CPP_TESTS})
-    set(mode ${mode} TESTS)
-    set(keyword TEST)
-  endif()
-
-  if(CPP_DIRECTORIES)
-    set(items ${CPP_DIRECTORIES})
-    set(mode ${mode} DIRECTORIES)
-    set(keyword DIRECTORY)
-  endif()
-
-  if(CPP_CACHE_ENTRIES)
-    set(items ${CPP_CACHE_ENTRIES})
-    set(mode ${mode} CACHE_ENTRIES)
-    set(keyword CACHE)
-  endif()
-
-  if(NOT mode)
-    message(FATAL_ERROR "Mode keyword missing in cmake_print_properties() call, must be one of TARGETS SOURCES TESTS DIRECTORIES CACHE_ENTRIES PROPERTIES")
-    return()
-  endif()
-
-  list(LENGTH mode modeLength)
-  if("${modeLength}" GREATER 1)
-    message(FATAL_ERROR "Multiple mode keyword used in cmake_print_properties() call, it must be exactly one of TARGETS SOURCES TESTS DIRECTORIES CACHE_ENTRIES PROPERTIES")
-    return()
-  endif()
-
-  set(msg "\n")
-  foreach(item ${items})
-
-    set(itemExists TRUE)
-    if(keyword STREQUAL "TARGET")
-      if(NOT TARGET ${item})
-      set(itemExists FALSE)
-      string(APPEND msg "\n No such TARGET \"${item}\" !\n\n")
-      endif()
-    endif()
-
-    if (itemExists)
-      string(APPEND msg " Properties for ${keyword} ${item}:\n")
-      foreach(prop ${CPP_PROPERTIES})
-
-        get_property(propertySet ${keyword} ${item} PROPERTY "${prop}" SET)
-
-        if(propertySet)
-          get_property(property ${keyword} ${item} PROPERTY "${prop}")
-          string(APPEND msg "   ${item}.${prop} = \"${property}\"\n")
-        else()
-          string(APPEND msg "   ${item}.${prop} = <NOTFOUND>\n")
-        endif()
-      endforeach()
-    endif()
-
-  endforeach()
-  message(STATUS "${msg}")
-
-endfunction()
diff --git a/share/cmake-3.18/Modules/CMakeSwiftInformation.cmake b/share/cmake-3.18/Modules/CMakeSwiftInformation.cmake
deleted file mode 100644
index 8f0909c..0000000
--- a/share/cmake-3.18/Modules/CMakeSwiftInformation.cmake
+++ /dev/null
@@ -1,103 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-if(UNIX)
-  set(CMAKE_Swift_OUTPUT_EXTENSION .o)
-else()
-  set(CMAKE_Swift_OUTPUT_EXTENSION .obj)
-endif()
-
-# Load compiler-specific information.
-if(CMAKE_Swift_COMPILER_ID)
-  include(Compiler/${CMAKE_Swift_COMPILER_ID}-Swift OPTIONAL)
-
-  if(CMAKE_SYSTEM_PROCESSOR)
-    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_Swift_COMPILER_ID}-Swift-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
-  endif()
-  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_Swift_COMPILER_ID}-Swift OPTIONAL)
-endif()
-
-set(CMAKE_EXE_EXPORTS_Swift_FLAG "-emit-module -emit-module-path <SWIFT_MODULE> ${CMAKE_Swift_IMPLIB_LINKER_FLAGS}")
-
-set(CMAKE_INCLUDE_FLAG_Swift "-I ")
-if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
-  set(CMAKE_SHARED_LIBRARY_SONAME_Swift_FLAG "-Xlinker -install_name -Xlinker ")
-elseif(NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
-  set(CMAKE_SHARED_LIBRARY_SONAME_Swift_FLAG "-Xlinker -soname -Xlinker ")
-endif()
-
-if(NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
-  set(CMAKE_EXECUTABLE_RUNTIME_Swift_FLAG "-Xlinker -rpath -Xlinker ")
-  set(CMAKE_SHARED_LIBRARY_RUNTIME_Swift_FLAG "-Xlinker -rpath -Xlinker ")
-  if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
-    set(CMAKE_EXECUTABLE_RUNTIME_Swift_FLAG_SEP "")
-    set(CMAKE_SHARED_LIBRARY_RUNTIME_Swift_FLAG_SEP "")
-  else()
-    set(CMAKE_EXECUTABLE_RUNTIME_Swift_FLAG_SEP ":")
-    set(CMAKE_SHARED_LIBRARY_RUNTIME_Swift_FLAG_SEP ":")
-  endif()
-endif()
-
-set(CMAKE_Swift_COMPILE_OPTIONS_TARGET "-target ")
-set(CMAKE_Swift_COMPILE_OPTIONS_EXTERNAL_TOOLCHAIN "-tools-directory ")
-# NOTE(compnerd) the `-sdk` support is not yet ready in the compiler; when that
-# is fully working, we should be able to enable this.
-# set(CMAKE_Swift_COMPILE_OPTIONS_SYSROOT "-sdk ")
-# NOTE(compnerd) do not setup `-frontend` as we use the compiler as the driver
-# during the link phase and use that to drive the compilation
-set(CMAKE_Swift_COMPILER_ARG1 "")
-set(CMAKE_Swift_DEFINE_FLAG -D)
-set(CMAKE_Swift_FRAMEWORK_SEARCH_FLAG "-F ")
-set(CMAKE_Swift_LIBRARY_PATH_FLAG "-L ")
-set(CMAKE_Swift_LIBRARY_PATH_TERMINATOR "")
-set(CMAKE_Swift_LINK_LIBRARY_FLAG "-l")
-set(CMAKE_Swift_LINKER_WRAPPER_FLAG "-Xlinker" " ")
-set(CMAKE_Swift_RESPONSE_FILE_LINK_FLAG @)
-
-set(CMAKE_Swift_LINKER_PREFERENCE 50)
-set(CMAKE_Swift_LINKER_PREFERENCE_PROPAGATES 1)
-
-# NOTE(compnerd) use the short form for convenience and ease of search.  They
-# are treated equivalent to their long form names as well as custom Swift
-# specific names.
-set(CMAKE_Swift_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded -libc MT)
-set(CMAKE_Swift_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL -libc MD)
-set(CMAKE_Swift_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug -libc MTd)
-set(CMAKE_Swift_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL -libc MDd)
-
-set(CMAKE_Swift_FLAGS_DEBUG_INIT "-g")
-set(CMAKE_Swift_FLAGS_RELEASE_INIT "-O")
-set(CMAKE_Swift_FLAGS_RELWITHDEBINFO_INIT "-O -g")
-set(CMAKE_Swift_FLAGS_MINSIZEREL_INIT "-Osize")
-
-cmake_initialize_per_config_variable(CMAKE_Swift_FLAGS "Swift Compiler Flags")
-
-# NOTE(compnerd) we do not have an object compile rule since we build the objects as part of the link step
-if(NOT CMAKE_Swift_COMPILE_OBJECT)
-  set(CMAKE_Swift_COMPILE_OBJECT ":")
-endif()
-
-if(NOT CMAKE_Swift_NUM_THREADS MATCHES "^[0-9]+$")
-  cmake_host_system_information(RESULT CMAKE_Swift_NUM_THREADS QUERY NUMBER_OF_LOGICAL_CORES)
-endif()
-
-if(NOT CMAKE_Swift_CREATE_SHARED_LIBRARY)
-  set(CMAKE_Swift_CREATE_SHARED_LIBRARY "<CMAKE_Swift_COMPILER> -output-file-map <SWIFT_OUTPUT_FILE_MAP> -incremental -j ${CMAKE_Swift_NUM_THREADS} -emit-library -o <TARGET> -module-name <SWIFT_MODULE_NAME> -module-link-name <SWIFT_LIBRARY_NAME> -emit-module -emit-module-path <SWIFT_MODULE> -emit-dependencies <DEFINES> <FLAGS> <INCLUDES> <SWIFT_SOURCES> <LINK_FLAGS> <SONAME_FLAG> <TARGET_INSTALLNAME_DIR><TARGET_SONAME> ${CMAKE_Swift_IMPLIB_LINKER_FLAGS} <LINK_LIBRARIES>")
-endif()
-
-if(NOT CMAKE_Swift_CREATE_SHARED_MODULE)
-  set(CMAKE_Swift_CREATE_SHARED_MODULE ${CMAKE_Swift_CREATE_SHARED_LIBRARY})
-endif()
-
-if(NOT CMAKE_Swift_LINK_EXECUTABLE)
-  set(CMAKE_Swift_LINK_EXECUTABLE "<CMAKE_Swift_COMPILER> -output-file-map <SWIFT_OUTPUT_FILE_MAP> -incremental -j ${CMAKE_Swift_NUM_THREADS} -emit-executable -o <TARGET> -emit-dependencies <DEFINES> <FLAGS> <INCLUDES> <SWIFT_SOURCES> <LINK_FLAGS> <LINK_LIBRARIES>")
-endif()
-
-if(NOT CMAKE_Swift_CREATE_STATIC_LIBRARY)
-  set(CMAKE_Swift_CREATE_STATIC_LIBRARY "<CMAKE_Swift_COMPILER> -output-file-map <SWIFT_OUTPUT_FILE_MAP> -incremental -j ${CMAKE_Swift_NUM_THREADS} -emit-library -static -o <TARGET> -module-name <SWIFT_MODULE_NAME> -module-link-name <SWIFT_LIBRARY_NAME> -emit-module -emit-module-path <SWIFT_MODULE> -emit-dependencies <DEFINES> <FLAGS> <INCLUDES> <SWIFT_SOURCES> <LINK_FLAGS> <LINK_LIBRARIES>")
-
-  set(CMAKE_Swift_ARCHIVE_CREATE "<CMAKE_AR> crs <TARGET> <OBJECTS>")
-  set(CMAKE_Swift_ARCHIVE_FINISH "")
-endif()
-
-set(CMAKE_Swift_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake b/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake
deleted file mode 100644
index ea3a445..0000000
--- a/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake
+++ /dev/null
@@ -1,58 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This file is included by cmGlobalGenerator::EnableLanguage.
-# It is included after the compiler has been determined, so
-# we know things like the compiler name and if the compiler is gnu.
-
-# before cmake 2.6 these variables were set in cmMakefile.cxx. This is still
-# done to keep scripts and custom language and compiler modules working.
-# But they are reset here and set again in the platform files for the target
-# platform, so they can be used for testing the target platform instead
-# of testing the host platform.
-set(APPLE  )
-set(UNIX   )
-set(CYGWIN )
-set(WIN32  )
-
-
-# include Generic system information
-include(CMakeGenericSystem)
-
-# 2. now include SystemName.cmake file to set the system specific information
-set(CMAKE_SYSTEM_INFO_FILE Platform/${CMAKE_SYSTEM_NAME})
-
-include(${CMAKE_SYSTEM_INFO_FILE} OPTIONAL RESULT_VARIABLE _INCLUDED_SYSTEM_INFO_FILE)
-
-if(NOT _INCLUDED_SYSTEM_INFO_FILE)
-  message("System is unknown to cmake, create:\n${CMAKE_SYSTEM_INFO_FILE}"
-          " to use this system, please post your config file on "
-          "discourse.cmake.org so it can be added to cmake")
-  if(EXISTS ${CMAKE_BINARY_DIR}/CMakeCache.txt)
-    configure_file(${CMAKE_BINARY_DIR}/CMakeCache.txt
-                   ${CMAKE_BINARY_DIR}/CopyOfCMakeCache.txt COPYONLY)
-    message("Your CMakeCache.txt file was copied to CopyOfCMakeCache.txt. "
-            "Please post that file on discourse.cmake.org.")
-  endif()
-endif()
-
-# optionally include a file which can do extra-generator specific things, e.g.
-# CMakeFindEclipseCDT4.cmake asks gcc for the system include dirs for the Eclipse CDT4 generator
-if(CMAKE_EXTRA_GENERATOR)
-  string(REPLACE " " "" _CMAKE_EXTRA_GENERATOR_NO_SPACES ${CMAKE_EXTRA_GENERATOR} )
-  include("CMakeFind${_CMAKE_EXTRA_GENERATOR_NO_SPACES}" OPTIONAL)
-endif()
-
-
-# for most systems a module is the same as a shared library
-# so unless the variable CMAKE_MODULE_EXISTS is set just
-# copy the values from the LIBRARY variables
-# this has to be done after the system information has been loaded
-if(NOT CMAKE_MODULE_EXISTS)
-  set(CMAKE_SHARED_MODULE_PREFIX "${CMAKE_SHARED_LIBRARY_PREFIX}")
-  set(CMAKE_SHARED_MODULE_SUFFIX "${CMAKE_SHARED_LIBRARY_SUFFIX}")
-endif()
-
-
-set(CMAKE_SYSTEM_SPECIFIC_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake b/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake
deleted file mode 100644
index 3734ec4..0000000
--- a/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake
+++ /dev/null
@@ -1,98 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-if(CMAKE_C_COMPILER_FORCED)
-  # The compiler configuration was forced by the user.
-  # Assume the user has configured all compiler information.
-  set(CMAKE_C_COMPILER_WORKS TRUE)
-  return()
-endif()
-
-include(CMakeTestCompilerCommon)
-
-# work around enforced code signing and / or missing exectuable target type
-set(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE})
-if(_CMAKE_FEATURE_DETECTION_TARGET_TYPE)
-  set(CMAKE_TRY_COMPILE_TARGET_TYPE ${_CMAKE_FEATURE_DETECTION_TARGET_TYPE})
-endif()
-
-# Remove any cached result from an older CMake version.
-# We now store this in CMakeCCompiler.cmake.
-unset(CMAKE_C_COMPILER_WORKS CACHE)
-
-# Try to identify the ABI and configure it into CMakeCCompiler.cmake
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
-CMAKE_DETERMINE_COMPILER_ABI(C ${CMAKE_ROOT}/Modules/CMakeCCompilerABI.c)
-if(CMAKE_C_ABI_COMPILED)
-  # The compiler worked so skip dedicated test below.
-  set(CMAKE_C_COMPILER_WORKS TRUE)
-  message(STATUS "Check for working C compiler: ${CMAKE_C_COMPILER} - skipped")
-endif()
-
-# This file is used by EnableLanguage in cmGlobalGenerator to
-# determine that that selected C compiler can actually compile
-# and link the most basic of programs.   If not, a fatal error
-# is set and cmake stops processing commands and will not generate
-# any makefiles or projects.
-if(NOT CMAKE_C_COMPILER_WORKS)
-  PrintTestCompilerStatus("C")
-  __TestCompiler_setTryCompileTargetType()
-  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCCompiler.c
-    "#ifdef __cplusplus\n"
-    "# error \"The CMAKE_C_COMPILER is set to a C++ compiler\"\n"
-    "#endif\n"
-    "#if defined(__CLASSIC_C__)\n"
-    "int main(argc, argv)\n"
-    "  int argc;\n"
-    "  char* argv[];\n"
-    "#else\n"
-    "int main(int argc, char* argv[])\n"
-    "#endif\n"
-    "{ (void)argv; return argc-1;}\n")
-  try_compile(CMAKE_C_COMPILER_WORKS ${CMAKE_BINARY_DIR}
-    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCCompiler.c
-    OUTPUT_VARIABLE __CMAKE_C_COMPILER_OUTPUT)
-  # Move result from cache to normal variable.
-  set(CMAKE_C_COMPILER_WORKS ${CMAKE_C_COMPILER_WORKS})
-  unset(CMAKE_C_COMPILER_WORKS CACHE)
-  __TestCompiler_restoreTryCompileTargetType()
-  if(NOT CMAKE_C_COMPILER_WORKS)
-    PrintTestCompilerResult(CHECK_FAIL "broken")
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-      "Determining if the C compiler works failed with "
-      "the following output:\n${__CMAKE_C_COMPILER_OUTPUT}\n\n")
-    string(REPLACE "\n" "\n  " _output "${__CMAKE_C_COMPILER_OUTPUT}")
-    message(FATAL_ERROR "The C compiler\n  \"${CMAKE_C_COMPILER}\"\n"
-      "is not able to compile a simple test program.\nIt fails "
-      "with the following output:\n  ${_output}\n\n"
-      "CMake will not be able to correctly generate this project.")
-  endif()
-  PrintTestCompilerResult(CHECK_PASS "works")
-  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-    "Determining if the C compiler works passed with "
-    "the following output:\n${__CMAKE_C_COMPILER_OUTPUT}\n\n")
-endif()
-
-# Try to identify the compiler features
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompileFeatures.cmake)
-CMAKE_DETERMINE_COMPILE_FEATURES(C)
-
-# Re-configure to save learned information.
-configure_file(
-  ${CMAKE_ROOT}/Modules/CMakeCCompiler.cmake.in
-  ${CMAKE_PLATFORM_INFO_DIR}/CMakeCCompiler.cmake
-  @ONLY
-  )
-include(${CMAKE_PLATFORM_INFO_DIR}/CMakeCCompiler.cmake)
-
-if(CMAKE_C_SIZEOF_DATA_PTR)
-  foreach(f ${CMAKE_C_ABI_FILES})
-    include(${f})
-  endforeach()
-  unset(CMAKE_C_ABI_FILES)
-endif()
-
-set(CMAKE_TRY_COMPILE_TARGET_TYPE ${__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE})
-unset(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE)
-unset(__CMAKE_C_COMPILER_OUTPUT)
diff --git a/share/cmake-3.18/Modules/CMakeTestCSharpCompiler.cmake b/share/cmake-3.18/Modules/CMakeTestCSharpCompiler.cmake
deleted file mode 100644
index 1119a45..0000000
--- a/share/cmake-3.18/Modules/CMakeTestCSharpCompiler.cmake
+++ /dev/null
@@ -1,67 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-if(CMAKE_CSharp_COMPILER_FORCED)
-  # The compiler configuration was forced by the user.
-  # Assume the user has configured all compiler information.
-  set(CMAKE_CSharp_COMPILER_WORKS TRUE)
-  return()
-endif()
-
-include(CMakeTestCompilerCommon)
-
-unset(CMAKE_CSharp_COMPILER_WORKS CACHE)
-
-set(test_compile_file "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCSharpCompiler.cs")
-
-# This file is used by EnableLanguage in cmGlobalGenerator to
-# determine that the selected C# compiler can actually compile
-# and link the most basic of programs. If not, a fatal error
-# is set and cmake stops processing commands and will not generate
-# any makefiles or projects.
-if(NOT CMAKE_CSharp_COMPILER_WORKS)
-  # Don't call PrintTestCompilerStatus() because the "C#" we want to pass
-  # as the LANG doesn't match with the variable name "CMAKE_CSharp_COMPILER"
-  message(CHECK_START "Check for working C# compiler: ${CMAKE_CSharp_COMPILER}")
-  file(WRITE "${test_compile_file}"
-    "namespace Test {"
-    "   public class CSharp {"
-    "       static void Main(string[] args) {}"
-    "   }"
-    "}"
-    )
-  try_compile(CMAKE_CSharp_COMPILER_WORKS ${CMAKE_BINARY_DIR} "${test_compile_file}"
-    OUTPUT_VARIABLE __CMAKE_CSharp_COMPILER_OUTPUT
-    )
-  # Move result from cache to normal variable.
-  set(CMAKE_CSharp_COMPILER_WORKS ${CMAKE_CSharp_COMPILER_WORKS})
-  unset(CMAKE_CSharp_COMPILER_WORKS CACHE)
-  set(CSharp_TEST_WAS_RUN 1)
-endif()
-
-if(NOT CMAKE_CSharp_COMPILER_WORKS)
-  PrintTestCompilerResult(CHECK_FAIL "broken")
-  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-    "Determining if the C# compiler works failed with "
-    "the following output:\n${__CMAKE_CSharp_COMPILER_OUTPUT}\n\n")
-  string(REPLACE "\n" "\n  " _output "${__CMAKE_CSharp_COMPILER_OUTPUT}")
-  message(FATAL_ERROR "The C# compiler\n  \"${CMAKE_CSharp_COMPILER}\"\n"
-    "is not able to compile a simple test program.\nIt fails "
-    "with the following output:\n  ${_output}\n\n"
-    "CMake will not be able to correctly generate this project.")
-else()
-  if(CSharp_TEST_WAS_RUN)
-    PrintTestCompilerResult(CHECK_PASS "works")
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-      "Determining if the C# compiler works passed with "
-      "the following output:\n${__CMAKE_CSharp_COMPILER_OUTPUT}\n\n")
-  endif()
-
-  # Re-configure to save learned information.
-  configure_file(
-    ${CMAKE_ROOT}/Modules/CMakeCSharpCompiler.cmake.in
-    ${CMAKE_PLATFORM_INFO_DIR}/CMakeCSharpCompiler.cmake
-    @ONLY
-    )
-  include(${CMAKE_PLATFORM_INFO_DIR}/CMakeCSharpCompiler.cmake)
-endif()
diff --git a/share/cmake-3.18/Modules/CMakeTestCUDACompiler.cmake b/share/cmake-3.18/Modules/CMakeTestCUDACompiler.cmake
deleted file mode 100644
index a18947b..0000000
--- a/share/cmake-3.18/Modules/CMakeTestCUDACompiler.cmake
+++ /dev/null
@@ -1,98 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-if(CMAKE_CUDA_COMPILER_FORCED)
-  # The compiler configuration was forced by the user.
-  # Assume the user has configured all compiler information.
-  set(CMAKE_CUDA_COMPILER_WORKS TRUE)
-  return()
-endif()
-
-include(CMakeTestCompilerCommon)
-
-# Remove any cached result from an older CMake version.
-# We now store this in CMakeCUDACompiler.cmake.
-unset(CMAKE_CUDA_COMPILER_WORKS CACHE)
-
-# Try to identify the ABI and configure it into CMakeCUDACompiler.cmake
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
-CMAKE_DETERMINE_COMPILER_ABI(CUDA ${CMAKE_ROOT}/Modules/CMakeCUDACompilerABI.cu)
-if(CMAKE_CUDA_ABI_COMPILED)
-  # The compiler worked so skip dedicated test below.
-  set(CMAKE_CUDA_COMPILER_WORKS TRUE)
-  message(STATUS "Check for working CUDA compiler: ${CMAKE_CUDA_COMPILER} - skipped")
-endif()
-
-# This file is used by EnableLanguage in cmGlobalGenerator to
-# determine that the selected cuda compiler can actually compile
-# and link the most basic of programs.   If not, a fatal error
-# is set and cmake stops processing commands and will not generate
-# any makefiles or projects.
-if(NOT CMAKE_CUDA_COMPILER_WORKS)
-  PrintTestCompilerStatus("CUDA")
-  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/main.cu
-    "#ifndef __CUDACC__\n"
-    "# error \"The CMAKE_CUDA_COMPILER is set to an invalid CUDA compiler\"\n"
-    "#endif\n"
-    "int main(){return 0;}\n")
-
-  try_compile(CMAKE_CUDA_COMPILER_WORKS ${CMAKE_BINARY_DIR}
-    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/main.cu
-    OUTPUT_VARIABLE __CMAKE_CUDA_COMPILER_OUTPUT)
-
-  # Move result from cache to normal variable.
-  set(CMAKE_CUDA_COMPILER_WORKS ${CMAKE_CUDA_COMPILER_WORKS})
-  unset(CMAKE_CUDA_COMPILER_WORKS CACHE)
-  if(NOT CMAKE_CUDA_COMPILER_WORKS)
-    PrintTestCompilerResult(CHECK_FAIL "broken")
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-      "Determining if the CUDA compiler works failed with "
-      "the following output:\n${__CMAKE_CUDA_COMPILER_OUTPUT}\n\n")
-    string(REPLACE "\n" "\n  " _output "${__CMAKE_CUDA_COMPILER_OUTPUT}")
-    message(FATAL_ERROR "The CUDA compiler\n  \"${CMAKE_CUDA_COMPILER}\"\n"
-      "is not able to compile a simple test program.\nIt fails "
-      "with the following output:\n  ${_output}\n\n"
-      "CMake will not be able to correctly generate this project.")
-  endif()
-  PrintTestCompilerResult(CHECK_PASS "works")
-  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-    "Determining if the CUDA compiler works passed with "
-    "the following output:\n${__CMAKE_CUDA_COMPILER_OUTPUT}\n\n")
-endif()
-
-# Try to identify the compiler features
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompileFeatures.cmake)
-CMAKE_DETERMINE_COMPILE_FEATURES(CUDA)
-
-if("x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC")
-  set(CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES "${CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES}")
-  set(CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES "${CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES}")
-endif()
-
-# Filter out implicit link libraries that should not be passed unconditionally.
-# See CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES_EXCLUDE in CMakeDetermineCUDACompiler.
-list(REMOVE_ITEM CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES ${CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES_EXCLUDE})
-
-if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
-  # Remove the CUDA Toolkit include directories from the set of
-  # implicit system include directories.
-  # This resolves the issue that NVCC doesn't specify these
-  # includes as SYSTEM includes when compiling device code, and sometimes
-  # they contain headers that generate warnings, so let users mark them
-  # as SYSTEM explicitly
-  if(CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES)
-    list(REMOVE_ITEM CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES
-      ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}
-      )
-  endif()
-endif()
-
-# Re-configure to save learned information.
-configure_file(
-  ${CMAKE_ROOT}/Modules/CMakeCUDACompiler.cmake.in
-  ${CMAKE_PLATFORM_INFO_DIR}/CMakeCUDACompiler.cmake
-  @ONLY
-  )
-include(${CMAKE_PLATFORM_INFO_DIR}/CMakeCUDACompiler.cmake)
-
-unset(__CMAKE_CUDA_COMPILER_OUTPUT)
diff --git a/share/cmake-3.18/Modules/CMakeTestCXXCompiler.cmake b/share/cmake-3.18/Modules/CMakeTestCXXCompiler.cmake
deleted file mode 100644
index b9cb1dd..0000000
--- a/share/cmake-3.18/Modules/CMakeTestCXXCompiler.cmake
+++ /dev/null
@@ -1,91 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-if(CMAKE_CXX_COMPILER_FORCED)
-  # The compiler configuration was forced by the user.
-  # Assume the user has configured all compiler information.
-  set(CMAKE_CXX_COMPILER_WORKS TRUE)
-  return()
-endif()
-
-include(CMakeTestCompilerCommon)
-
-# work around enforced code signing and / or missing exectuable target type
-set(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE})
-if(_CMAKE_FEATURE_DETECTION_TARGET_TYPE)
-  set(CMAKE_TRY_COMPILE_TARGET_TYPE ${_CMAKE_FEATURE_DETECTION_TARGET_TYPE})
-endif()
-
-# Remove any cached result from an older CMake version.
-# We now store this in CMakeCXXCompiler.cmake.
-unset(CMAKE_CXX_COMPILER_WORKS CACHE)
-
-# Try to identify the ABI and configure it into CMakeCXXCompiler.cmake
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
-CMAKE_DETERMINE_COMPILER_ABI(CXX ${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp)
-if(CMAKE_CXX_ABI_COMPILED)
-  # The compiler worked so skip dedicated test below.
-  set(CMAKE_CXX_COMPILER_WORKS TRUE)
-  message(STATUS "Check for working CXX compiler: ${CMAKE_CXX_COMPILER} - skipped")
-endif()
-
-# This file is used by EnableLanguage in cmGlobalGenerator to
-# determine that the selected C++ compiler can actually compile
-# and link the most basic of programs.   If not, a fatal error
-# is set and cmake stops processing commands and will not generate
-# any makefiles or projects.
-if(NOT CMAKE_CXX_COMPILER_WORKS)
-  PrintTestCompilerStatus("CXX")
-  __TestCompiler_setTryCompileTargetType()
-  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCXXCompiler.cxx
-    "#ifndef __cplusplus\n"
-    "# error \"The CMAKE_CXX_COMPILER is set to a C compiler\"\n"
-    "#endif\n"
-    "int main(){return 0;}\n")
-  try_compile(CMAKE_CXX_COMPILER_WORKS ${CMAKE_BINARY_DIR}
-    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCXXCompiler.cxx
-    OUTPUT_VARIABLE __CMAKE_CXX_COMPILER_OUTPUT)
-  # Move result from cache to normal variable.
-  set(CMAKE_CXX_COMPILER_WORKS ${CMAKE_CXX_COMPILER_WORKS})
-  unset(CMAKE_CXX_COMPILER_WORKS CACHE)
-  __TestCompiler_restoreTryCompileTargetType()
-  if(NOT CMAKE_CXX_COMPILER_WORKS)
-    PrintTestCompilerResult(CHECK_FAIL "broken")
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-      "Determining if the CXX compiler works failed with "
-      "the following output:\n${__CMAKE_CXX_COMPILER_OUTPUT}\n\n")
-    string(REPLACE "\n" "\n  " _output "${__CMAKE_CXX_COMPILER_OUTPUT}")
-    message(FATAL_ERROR "The C++ compiler\n  \"${CMAKE_CXX_COMPILER}\"\n"
-      "is not able to compile a simple test program.\nIt fails "
-      "with the following output:\n  ${_output}\n\n"
-      "CMake will not be able to correctly generate this project.")
-  endif()
-  PrintTestCompilerResult(CHECK_PASS "works")
-  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-    "Determining if the CXX compiler works passed with "
-    "the following output:\n${__CMAKE_CXX_COMPILER_OUTPUT}\n\n")
-endif()
-
-# Try to identify the compiler features
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompileFeatures.cmake)
-CMAKE_DETERMINE_COMPILE_FEATURES(CXX)
-
-# Re-configure to save learned information.
-configure_file(
-  ${CMAKE_ROOT}/Modules/CMakeCXXCompiler.cmake.in
-  ${CMAKE_PLATFORM_INFO_DIR}/CMakeCXXCompiler.cmake
-  @ONLY
-  )
-include(${CMAKE_PLATFORM_INFO_DIR}/CMakeCXXCompiler.cmake)
-
-if(CMAKE_CXX_SIZEOF_DATA_PTR)
-  foreach(f ${CMAKE_CXX_ABI_FILES})
-    include(${f})
-  endforeach()
-  unset(CMAKE_CXX_ABI_FILES)
-endif()
-
-set(CMAKE_TRY_COMPILE_TARGET_TYPE ${__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE})
-unset(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE)
-unset(__CMAKE_CXX_COMPILER_OUTPUT)
diff --git a/share/cmake-3.18/Modules/CMakeTestFortranCompiler.cmake b/share/cmake-3.18/Modules/CMakeTestFortranCompiler.cmake
deleted file mode 100644
index 10fb0a7..0000000
--- a/share/cmake-3.18/Modules/CMakeTestFortranCompiler.cmake
+++ /dev/null
@@ -1,102 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-if(CMAKE_Fortran_COMPILER_FORCED)
-  # The compiler configuration was forced by the user.
-  # Assume the user has configured all compiler information.
-  set(CMAKE_Fortran_COMPILER_WORKS TRUE)
-  return()
-endif()
-
-include(CMakeTestCompilerCommon)
-
-# Remove any cached result from an older CMake version.
-# We now store this in CMakeFortranCompiler.cmake.
-unset(CMAKE_Fortran_COMPILER_WORKS CACHE)
-
-# Try to identify the ABI and configure it into CMakeFortranCompiler.cmake
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
-CMAKE_DETERMINE_COMPILER_ABI(Fortran ${CMAKE_ROOT}/Modules/CMakeFortranCompilerABI.F)
-if(CMAKE_Fortran_ABI_COMPILED)
-  # The compiler worked so skip dedicated test below.
-  set(CMAKE_Fortran_COMPILER_WORKS TRUE)
-  message(STATUS "Check for working Fortran compiler: ${CMAKE_Fortran_COMPILER} - skipped")
-endif()
-
-# This file is used by EnableLanguage in cmGlobalGenerator to
-# determine that the selected Fortran compiler can actually compile
-# and link the most basic of programs.   If not, a fatal error
-# is set and cmake stops processing commands and will not generate
-# any makefiles or projects.
-if(NOT CMAKE_Fortran_COMPILER_WORKS)
-  PrintTestCompilerStatus("Fortran")
-  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler.f "
-        PROGRAM TESTFortran
-        PRINT *, 'Hello'
-        END
-  ")
-  try_compile(CMAKE_Fortran_COMPILER_WORKS ${CMAKE_BINARY_DIR}
-    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler.f
-    OUTPUT_VARIABLE OUTPUT)
-  # Move result from cache to normal variable.
-  set(CMAKE_Fortran_COMPILER_WORKS ${CMAKE_Fortran_COMPILER_WORKS})
-  unset(CMAKE_Fortran_COMPILER_WORKS CACHE)
-  if(NOT CMAKE_Fortran_COMPILER_WORKS)
-    PrintTestCompilerResult(CHECK_FAIL "broken")
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-      "Determining if the Fortran compiler works failed with "
-      "the following output:\n${OUTPUT}\n\n")
-    string(REPLACE "\n" "\n  " _output "${OUTPUT}")
-    message(FATAL_ERROR "The Fortran compiler\n  \"${CMAKE_Fortran_COMPILER}\"\n"
-      "is not able to compile a simple test program.\nIt fails "
-      "with the following output:\n  ${_output}\n\n"
-      "CMake will not be able to correctly generate this project.")
-  endif()
-  PrintTestCompilerResult(CHECK_PASS "works")
-  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-    "Determining if the Fortran compiler works passed with "
-    "the following output:\n${OUTPUT}\n\n")
-endif()
-
-# Test for Fortran 90 support by using an f90-specific construct.
-if(NOT DEFINED CMAKE_Fortran_COMPILER_SUPPORTS_F90)
-  message(CHECK_START "Checking whether ${CMAKE_Fortran_COMPILER} supports Fortran 90")
-  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompilerF90.f90 "
-    PROGRAM TESTFortran90
-    integer stop ; stop = 1 ; do while ( stop .eq. 0 ) ; end do
-    END PROGRAM TESTFortran90
-")
-  try_compile(CMAKE_Fortran_COMPILER_SUPPORTS_F90 ${CMAKE_BINARY_DIR}
-    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompilerF90.f90
-    OUTPUT_VARIABLE OUTPUT)
-  if(CMAKE_Fortran_COMPILER_SUPPORTS_F90)
-    message(CHECK_PASS "yes")
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-      "Determining if the Fortran compiler supports Fortran 90 passed with "
-      "the following output:\n${OUTPUT}\n\n")
-    set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 1)
-  else()
-    message(CHECK_FAIL "no")
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-      "Determining if the Fortran compiler supports Fortran 90 failed with "
-      "the following output:\n${OUTPUT}\n\n")
-    set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 0)
-  endif()
-  unset(CMAKE_Fortran_COMPILER_SUPPORTS_F90 CACHE)
-endif()
-
-# Re-configure to save learned information.
-configure_file(
-  ${CMAKE_ROOT}/Modules/CMakeFortranCompiler.cmake.in
-  ${CMAKE_PLATFORM_INFO_DIR}/CMakeFortranCompiler.cmake
-  @ONLY
-  )
-include(${CMAKE_PLATFORM_INFO_DIR}/CMakeFortranCompiler.cmake)
-
-if(CMAKE_Fortran_SIZEOF_DATA_PTR)
-  foreach(f ${CMAKE_Fortran_ABI_FILES})
-    include(${f})
-  endforeach()
-  unset(CMAKE_Fortran_ABI_FILES)
-endif()
diff --git a/share/cmake-3.18/Modules/CMakeTestGNU.c b/share/cmake-3.18/Modules/CMakeTestGNU.c
deleted file mode 100644
index 933e5a2..0000000
--- a/share/cmake-3.18/Modules/CMakeTestGNU.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
-void THIS_IS_GNU();
-#endif
-#ifdef __MINGW32__
-void THIS_IS_MINGW();
-#endif
-#ifdef __CYGWIN__
-void THIS_IS_CYGWIN();
-#endif
diff --git a/share/cmake-3.18/Modules/CMakeTestOBJCCompiler.cmake b/share/cmake-3.18/Modules/CMakeTestOBJCCompiler.cmake
deleted file mode 100644
index 0e333c0..0000000
--- a/share/cmake-3.18/Modules/CMakeTestOBJCCompiler.cmake
+++ /dev/null
@@ -1,95 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-if(CMAKE_OBJC_COMPILER_FORCED)
-  # The compiler configuration was forced by the user.
-  # Assume the user has configured all compiler information.
-  set(CMAKE_OBJC_COMPILER_WORKS TRUE)
-  return()
-endif()
-
-include(CMakeTestCompilerCommon)
-
-# work around enforced code signing and / or missing exectuable target type
-set(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE})
-if(_CMAKE_FEATURE_DETECTION_TARGET_TYPE)
-  set(CMAKE_TRY_COMPILE_TARGET_TYPE ${_CMAKE_FEATURE_DETECTION_TARGET_TYPE})
-endif()
-
-# Remove any cached result from an older CMake version.
-# We now store this in CMakeCCompiler.cmake.
-unset(CMAKE_OBJC_COMPILER_WORKS CACHE)
-
-# Try to identify the ABI and configure it into CMakeOBJCCompiler.cmake
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
-CMAKE_DETERMINE_COMPILER_ABI(OBJC ${CMAKE_ROOT}/Modules/CMakeOBJCCompilerABI.m)
-if(CMAKE_OBJC_ABI_COMPILED)
-  # The compiler worked so skip dedicated test below.
-  set(CMAKE_OBJC_COMPILER_WORKS TRUE)
-  message(STATUS "Check for working OBJC compiler: ${CMAKE_OBJC_COMPILER} - skipped")
-endif()
-
-# This file is used by EnableLanguage in cmGlobalGenerator to
-# determine that that selected Objective-C compiler can actually compile
-# and link the most basic of programs.   If not, a fatal error
-# is set and cmake stops processing commands and will not generate
-# any makefiles or projects.
-if(NOT CMAKE_OBJC_COMPILER_WORKS)
-  PrintTestCompilerStatus("OBJC")
-  __TestCompiler_setTryCompileTargetType()
-  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testOBJCCompiler.m
-    "#ifdef __cplusplus\n"
-    "# error \"The CMAKE_OBJC_COMPILER is set to a C++ compiler\"\n"
-    "#endif\n"
-    "#ifndef __OBJC__\n"
-    "# error \"The CMAKE_OBJC_COMPILER is not an Objective-C compiler\"\n"
-    "#endif\n"
-    "int main(int argc, char* argv[])\n"
-    "{ (void)argv; return argc-1;}\n")
-  try_compile(CMAKE_OBJC_COMPILER_WORKS ${CMAKE_BINARY_DIR}
-    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testOBJCCompiler.m
-    OUTPUT_VARIABLE __CMAKE_OBJC_COMPILER_OUTPUT)
-  # Move result from cache to normal variable.
-  set(CMAKE_OBJC_COMPILER_WORKS ${CMAKE_OBJC_COMPILER_WORKS})
-  unset(CMAKE_OBJC_COMPILER_WORKS CACHE)
-  __TestCompiler_restoreTryCompileTargetType()
-  if(NOT CMAKE_OBJC_COMPILER_WORKS)
-    PrintTestCompilerResult(CHECK_FAIL "broken")
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-      "Determining if the Objective-C compiler works failed with "
-      "the following output:\n${__CMAKE_OBJC_COMPILER_OUTPUT}\n\n")
-    string(REPLACE "\n" "\n  " _output "${__CMAKE_OBJC_COMPILER_OUTPUT}")
-    message(FATAL_ERROR "The Objective-C compiler\n  \"${CMAKE_OBJC_COMPILER}\"\n"
-      "is not able to compile a simple test program.\nIt fails "
-      "with the following output:\n  ${_output}\n\n"
-      "CMake will not be able to correctly generate this project.")
-  endif()
-  PrintTestCompilerResult(CHECK_PASS "works")
-  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-    "Determining if the Objective-C compiler works passed with "
-    "the following output:\n${__CMAKE_OBJC_COMPILER_OUTPUT}\n\n")
-endif()
-
-# Try to identify the compiler features
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompileFeatures.cmake)
-CMAKE_DETERMINE_COMPILE_FEATURES(OBJC)
-
-# Re-configure to save learned information.
-configure_file(
-  ${CMAKE_ROOT}/Modules/CMakeOBJCCompiler.cmake.in
-  ${CMAKE_PLATFORM_INFO_DIR}/CMakeOBJCCompiler.cmake
-  @ONLY
-  )
-include(${CMAKE_PLATFORM_INFO_DIR}/CMakeOBJCCompiler.cmake)
-
-if(CMAKE_OBJC_SIZEOF_DATA_PTR)
-  foreach(f ${CMAKE_OBJC_ABI_FILES})
-    include(${f})
-  endforeach()
-  unset(CMAKE_OBJC_ABI_FILES)
-endif()
-
-set(CMAKE_TRY_COMPILE_TARGET_TYPE ${__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE})
-unset(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE)
-unset(__CMAKE_OBJC_COMPILER_OUTPUT)
diff --git a/share/cmake-3.18/Modules/CMakeTestOBJCXXCompiler.cmake b/share/cmake-3.18/Modules/CMakeTestOBJCXXCompiler.cmake
deleted file mode 100644
index dc153a7..0000000
--- a/share/cmake-3.18/Modules/CMakeTestOBJCXXCompiler.cmake
+++ /dev/null
@@ -1,94 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-if(CMAKE_OBJCXX_COMPILER_FORCED)
-  # The compiler configuration was forced by the user.
-  # Assume the user has configured all compiler information.
-  set(CMAKE_OBJCXX_COMPILER_WORKS TRUE)
-  return()
-endif()
-
-include(CMakeTestCompilerCommon)
-
-# work around enforced code signing and / or missing exectuable target type
-set(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE})
-if(_CMAKE_FEATURE_DETECTION_TARGET_TYPE)
-  set(CMAKE_TRY_COMPILE_TARGET_TYPE ${_CMAKE_FEATURE_DETECTION_TARGET_TYPE})
-endif()
-
-# Remove any cached result from an older CMake version.
-# We now store this in CMakeOBJCXXCompiler.cmake.
-unset(CMAKE_OBJCXX_COMPILER_WORKS CACHE)
-
-# Try to identify the ABI and configure it into CMakeOBJCXXCompiler.cmake
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
-CMAKE_DETERMINE_COMPILER_ABI(OBJCXX ${CMAKE_ROOT}/Modules/CMakeOBJCXXCompilerABI.mm)
-if(CMAKE_OBJCXX_ABI_COMPILED)
-  # The compiler worked so skip dedicated test below.
-  set(CMAKE_OBJCXX_COMPILER_WORKS TRUE)
-  message(STATUS "Check for working OBJCXX compiler: ${CMAKE_OBJCXX_COMPILER} - skipped")
-endif()
-
-# This file is used by EnableLanguage in cmGlobalGenerator to
-# determine that the selected Objective-C++ compiler can actually compile
-# and link the most basic of programs.   If not, a fatal error
-# is set and cmake stops processing commands and will not generate
-# any makefiles or projects.
-if(NOT CMAKE_OBJCXX_COMPILER_WORKS)
-  PrintTestCompilerStatus("OBJCXX")
-  __TestCompiler_setTryCompileTargetType()
-  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testOBJCXXCompiler.mm
-    "#ifndef __cplusplus\n"
-    "# error \"The CMAKE_OBJCXX_COMPILER is set to a C compiler\"\n"
-    "#endif\n"
-    "#ifndef __OBJC__\n"
-    "# error \"The CMAKE_OBJCXX_COMPILER is not an Objective-C++ compiler\"\n"
-    "#endif\n"
-    "int main(){return 0;}\n")
-  try_compile(CMAKE_OBJCXX_COMPILER_WORKS ${CMAKE_BINARY_DIR}
-    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testOBJCXXCompiler.mm
-    OUTPUT_VARIABLE __CMAKE_OBJCXX_COMPILER_OUTPUT)
-  # Move result from cache to normal variable.
-  set(CMAKE_OBJCXX_COMPILER_WORKS ${CMAKE_OBJCXX_COMPILER_WORKS})
-  unset(CMAKE_OBJCXX_COMPILER_WORKS CACHE)
-  __TestCompiler_restoreTryCompileTargetType()
-  if(NOT CMAKE_OBJCXX_COMPILER_WORKS)
-    PrintTestCompilerResult(CHECK_FAIL "broken")
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-      "Determining if the Objective-C++ compiler works failed with "
-      "the following output:\n${__CMAKE_OBJCXX_COMPILER_OUTPUT}\n\n")
-    string(REPLACE "\n" "\n  " _output "${__CMAKE_OBJCXX_COMPILER_OUTPUT}")
-    message(FATAL_ERROR "The Objective-C++ compiler\n  \"${CMAKE_OBJCXX_COMPILER}\"\n"
-      "is not able to compile a simple test program.\nIt fails "
-      "with the following output:\n  ${_output}\n\n"
-      "CMake will not be able to correctly generate this project.")
-  endif()
-  PrintTestCompilerResult(CHECK_PASS "works")
-  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-    "Determining if the Objective-C++ compiler works passed with "
-    "the following output:\n${__CMAKE_OBJCXX_COMPILER_OUTPUT}\n\n")
-endif()
-
-# Try to identify the compiler features
-include(${CMAKE_ROOT}/Modules/CMakeDetermineCompileFeatures.cmake)
-CMAKE_DETERMINE_COMPILE_FEATURES(OBJCXX)
-
-# Re-configure to save learned information.
-configure_file(
-  ${CMAKE_ROOT}/Modules/CMakeOBJCXXCompiler.cmake.in
-  ${CMAKE_PLATFORM_INFO_DIR}/CMakeOBJCXXCompiler.cmake
-  @ONLY
-  )
-include(${CMAKE_PLATFORM_INFO_DIR}/CMakeOBJCXXCompiler.cmake)
-
-if(CMAKE_OBJCXX_SIZEOF_DATA_PTR)
-  foreach(f ${CMAKE_OBJCXX_ABI_FILES})
-    include(${f})
-  endforeach()
-  unset(CMAKE_OBJCXX_ABI_FILES)
-endif()
-
-set(CMAKE_TRY_COMPILE_TARGET_TYPE ${__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE})
-unset(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE)
-unset(__CMAKE_OBJCXX_COMPILER_OUTPUT)
diff --git a/share/cmake-3.18/Modules/CMakeTestSwiftCompiler.cmake b/share/cmake-3.18/Modules/CMakeTestSwiftCompiler.cmake
deleted file mode 100644
index d98dc9d..0000000
--- a/share/cmake-3.18/Modules/CMakeTestSwiftCompiler.cmake
+++ /dev/null
@@ -1,64 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-if(CMAKE_Swift_COMPILER_FORCED)
-  # The compiler configuration was forced by the user.
-  # Assume the user has configured all compiler information.
-  set(CMAKE_Swift_COMPILER_WORKS TRUE)
-  return()
-endif()
-
-include(CMakeTestCompilerCommon)
-
-# Remove any cached result from an older CMake version.
-# We now store this in CMakeSwiftCompiler.cmake.
-unset(CMAKE_Swift_COMPILER_WORKS CACHE)
-
-# This file is used by EnableLanguage in cmGlobalGenerator to
-# determine that the selected C++ compiler can actually compile
-# and link the most basic of programs.   If not, a fatal error
-# is set and cmake stops processing commands and will not generate
-# any makefiles or projects.
-if(NOT CMAKE_Swift_COMPILER_WORKS)
-  PrintTestCompilerStatus("Swift")
-  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/main.swift
-    "print(\"CMake\")\n")
-  try_compile(CMAKE_Swift_COMPILER_WORKS ${CMAKE_BINARY_DIR}
-    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/main.swift
-    OUTPUT_VARIABLE __CMAKE_Swift_COMPILER_OUTPUT)
-  # Move result from cache to normal variable.
-  set(CMAKE_Swift_COMPILER_WORKS ${CMAKE_Swift_COMPILER_WORKS})
-  unset(CMAKE_Swift_COMPILER_WORKS CACHE)
-  set(Swift_TEST_WAS_RUN 1)
-endif()
-
-if(NOT CMAKE_Swift_COMPILER_WORKS)
-  PrintTestCompilerResult(CHECK_FAIL "broken")
-  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-    "Determining if the Swift compiler works failed with "
-    "the following output:\n${__CMAKE_Swift_COMPILER_OUTPUT}\n\n")
-  string(REPLACE "\n" "\n  " _output "${__CMAKE_Swift_COMPILER_OUTPUT}")
-  message(FATAL_ERROR "The Swift compiler\n  \"${CMAKE_Swift_COMPILER}\"\n"
-    "is not able to compile a simple test program.\nIt fails "
-    "with the following output:\n  ${_output}\n\n"
-    "CMake will not be able to correctly generate this project.")
-else()
-  if(Swift_TEST_WAS_RUN)
-    PrintTestCompilerResult(CHECK_PASS "works")
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-      "Determining if the Swift compiler works passed with "
-      "the following output:\n${__CMAKE_Swift_COMPILER_OUTPUT}\n\n")
-  endif()
-
-  # Unlike C and CXX we do not yet detect any information about the Swift ABI.
-  # However, one of the steps done for C and CXX as part of that detection is
-  # to initialize the implicit include directories.  That is relevant here.
-  set(CMAKE_Swift_IMPLICIT_INCLUDE_DIRECTORIES "${_CMAKE_Swift_IMPLICIT_INCLUDE_DIRECTORIES_INIT}")
-
-  # Re-configure to save learned information.
-  configure_file(${CMAKE_ROOT}/Modules/CMakeSwiftCompiler.cmake.in
-                 ${CMAKE_PLATFORM_INFO_DIR}/CMakeSwiftCompiler.cmake @ONLY)
-  include(${CMAKE_PLATFORM_INFO_DIR}/CMakeSwiftCompiler.cmake)
-endif()
-
-unset(__CMAKE_Swift_COMPILER_OUTPUT)
diff --git a/share/cmake-3.18/Modules/CPack.cmake b/share/cmake-3.18/Modules/CPack.cmake
deleted file mode 100644
index d0cfc2b..0000000
--- a/share/cmake-3.18/Modules/CPack.cmake
+++ /dev/null
@@ -1,809 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CPack
------
-
-Configure generators for binary installers and source packages.
-
-Introduction
-^^^^^^^^^^^^
-
-The CPack module generates the configuration files ``CPackConfig.cmake``
-and ``CPackSourceConfig.cmake``. They are intended for use in a subsequent
-run of  the :manual:`cpack <cpack(1)>` program where they steer the generation
-of installers or/and source packages.
-
-Depending on the CMake generator, the CPack module may also add two new build
-targets, ``package`` and ``package_source``. See the `packaging targets`_
-section below for details.
-
-The generated binary installers will contain all files that have been installed
-via CMake's :command:`install` command (and the deprecated commands
-:command:`install_files`, :command:`install_programs`, and
-:command:`install_targets`).  Certain kinds of binary installers can be
-configured such that users can select individual application components to
-install.  See the :module:`CPackComponent` module for further details.
-
-Source packages (configured through ``CPackSourceConfig.cmake`` and generated
-by the :cpack_gen:`CPack Archive Generator`) will contain all source files in
-the project directory except those specified in
-:variable:`CPACK_SOURCE_IGNORE_FILES`.
-
-CPack Generators
-^^^^^^^^^^^^^^^^
-
-The :variable:`CPACK_GENERATOR` variable has different meanings in different
-contexts.  In a ``CMakeLists.txt`` file, :variable:`CPACK_GENERATOR` is a
-*list of generators*: and when :manual:`cpack <cpack(1)>` is run with no other
-arguments, it will iterate over that list and produce one package for each
-generator.  In a :variable:`CPACK_PROJECT_CONFIG_FILE`,
-:variable:`CPACK_GENERATOR` is a *string naming a single generator*.  If you
-need per-cpack-generator logic to control *other* cpack settings, then you
-need a :variable:`CPACK_PROJECT_CONFIG_FILE`.
-If set, the :variable:`CPACK_PROJECT_CONFIG_FILE` is included automatically
-on a per-generator basis.  It only need contain overrides.
-
-Here's how it works:
-
-* :manual:`cpack <cpack(1)>` runs
-* it includes ``CPackConfig.cmake``
-* it iterates over the generators given by the ``-G`` command line option,
-  or if no such option was specified, over the list of generators given by
-  the :variable:`CPACK_GENERATOR` variable set in the ``CPackConfig.cmake``
-  input file.
-* foreach generator, it then
-
-  - sets :variable:`CPACK_GENERATOR` to the one currently being iterated
-  - includes the :variable:`CPACK_PROJECT_CONFIG_FILE`
-  - produces the package for that generator
-
-This is the key: For each generator listed in :variable:`CPACK_GENERATOR` in
-``CPackConfig.cmake``, cpack will *reset* :variable:`CPACK_GENERATOR`
-internally to *the one currently being used* and then include the
-:variable:`CPACK_PROJECT_CONFIG_FILE`.
-
-For a list of available generators, see :manual:`cpack-generators(7)`.
-
-.. _`packaging targets`:
-
-Targets package and package_source
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If CMake is run with the Makefile, Ninja, or Xcode generator, then
-``include(CPack)`` generates a target ``package``. This makes it possible
-to build a binary installer from CMake, Make, or Ninja: Instead of ``cpack``,
-one may call ``cmake --build . --target package`` or ``make package`` or
-``ninja package``. The VS generator creates an uppercase target ``PACKAGE``.
-
-If CMake is run with the Makefile or Ninja generator, then ``include(CPack)``
-also generates a target ``package_source``. To build a source package,
-instead of ``cpack -G TGZ --config CPackSourceConfig.cmake`` one may call
-``cmake --build . --target package_source``, ``make package_source``,
-or ``ninja package_source``.
-
-
-Variables common to all CPack Generators
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Before including this CPack module in your ``CMakeLists.txt`` file, there
-are a variety of variables that can be set to customize the resulting
-installers.  The most commonly-used variables are:
-
-.. variable:: CPACK_PACKAGE_NAME
-
-  The name of the package (or application).  If not specified, it defaults to
-  the project name.
-
-.. variable:: CPACK_PACKAGE_VENDOR
-
-  The name of the package vendor. (e.g., "Kitware").  The default is "Humanity".
-
-.. variable:: CPACK_PACKAGE_DIRECTORY
-
-  The directory in which CPack is doing its packaging.  If it is not set
-  then this will default (internally) to the build dir.  This variable may
-  be defined in a CPack config file or from the :manual:`cpack <cpack(1)>`
-  command line option ``-B``.  If set, the command line option overrides the
-  value found in the config file.
-
-.. variable:: CPACK_PACKAGE_VERSION_MAJOR
-
-  Package major version.  This variable will always be set, but its default
-  value depends on whether or not version details were given to the
-  :command:`project` command in the top level CMakeLists.txt file.  If version
-  details were given, the default value will be
-  :variable:`CMAKE_PROJECT_VERSION_MAJOR`.  If no version details were given,
-  a default version of 0.1.1 will be assumed, leading to
-  ``CPACK_PACKAGE_VERSION_MAJOR`` having a default value of 0.
-
-.. variable:: CPACK_PACKAGE_VERSION_MINOR
-
-  Package minor version.  The default value is determined based on whether or
-  not version details were given to the :command:`project` command in the top
-  level CMakeLists.txt file.  If version details were given, the default
-  value will be :variable:`CMAKE_PROJECT_VERSION_MINOR`, but if no minor
-  version component was specified then ``CPACK_PACKAGE_VERSION_MINOR`` will be
-  left unset.  If no project version was given at all, a default version of
-  0.1.1 will be assumed, leading to ``CPACK_PACKAGE_VERSION_MINOR`` having a
-  default value of 1.
-
-.. variable:: CPACK_PACKAGE_VERSION_PATCH
-
-  Package patch version.  The default value is determined based on whether or
-  not version details were given to the :command:`project` command in the top
-  level CMakeLists.txt file.  If version details were given, the default
-  value will be :variable:`CMAKE_PROJECT_VERSION_PATCH`, but if no patch
-  version component was specified then ``CPACK_PACKAGE_VERSION_PATCH`` will be
-  left unset.  If no project version was given at all, a default version of
-  0.1.1 will be assumed, leading to ``CPACK_PACKAGE_VERSION_PATCH`` having a
-  default value of 1.
-
-.. variable:: CPACK_PACKAGE_DESCRIPTION
-
-  A description of the project, used in places such as the introduction
-  screen of CPack-generated Windows installers.  If not set, the value of
-  this variable is populated from the file named by
-  :variable:`CPACK_PACKAGE_DESCRIPTION_FILE`.
-
-.. variable:: CPACK_PACKAGE_DESCRIPTION_FILE
-
-  A text file used to describe the project when
-  :variable:`CPACK_PACKAGE_DESCRIPTION` is not explicitly set.  The default
-  value for ``CPACK_PACKAGE_DESCRIPTION_FILE`` points to a built-in template
-  file ``Templates/CPack.GenericDescription.txt``.
-
-.. variable:: CPACK_PACKAGE_DESCRIPTION_SUMMARY
-
-  Short description of the project (only a few words).  If the
-  :variable:`CMAKE_PROJECT_DESCRIPTION` variable is set, it is used as the
-  default value, otherwise the default will be a string generated by CMake
-  based on :variable:`CMAKE_PROJECT_NAME`.
-
-.. variable:: CPACK_PACKAGE_HOMEPAGE_URL
-
-  Project homepage URL.  The default value is taken from the
-  :variable:`CMAKE_PROJECT_HOMEPAGE_URL` variable, which is set by the top
-  level :command:`project` command, or else the default will be empty if no
-  URL was provided to :command:`project`.
-
-.. variable:: CPACK_PACKAGE_FILE_NAME
-
-  The name of the package file to generate, not including the
-  extension.  For example, ``cmake-2.6.1-Linux-i686``.  The default value
-  is::
-
-    ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}
-
-.. variable:: CPACK_PACKAGE_INSTALL_DIRECTORY
-
-  Installation directory on the target system. This may be used by some
-  CPack generators like NSIS to create an installation directory e.g.,
-  "CMake 2.5" below the installation prefix.  All installed elements will be
-  put inside this directory.
-
-.. variable:: CPACK_PACKAGE_ICON
-
-  A branding image that will be displayed inside the installer (used by GUI
-  installers).
-
-.. variable:: CPACK_PACKAGE_CHECKSUM
-
-  An algorithm that will be used to generate an additional file with the
-  checksum of the package.  The output file name will be::
-
-    ${CPACK_PACKAGE_FILE_NAME}.${CPACK_PACKAGE_CHECKSUM}
-
-  Supported algorithms are those listed by the
-  :ref:`string(\<HASH\>) <Supported Hash Algorithms>` command.
-
-.. variable:: CPACK_PROJECT_CONFIG_FILE
-
-  CPack-time project CPack configuration file.  This file is included at cpack
-  time, once per generator after CPack has set :variable:`CPACK_GENERATOR`
-  to the actual generator being used.  It allows per-generator setting of
-  ``CPACK_*`` variables at cpack time.
-
-.. variable:: CPACK_RESOURCE_FILE_LICENSE
-
-  License to be embedded in the installer.  It will typically be displayed
-  to the user by the produced installer (often with an explicit "Accept"
-  button, for graphical installers) prior to installation.  This license
-  file is NOT added to the installed files but is used by some CPack generators
-  like NSIS.  If you want to install a license file (may be the same as this
-  one) along with your project, you must add an appropriate CMake
-  :command:`install` command in your ``CMakeLists.txt``.
-
-.. variable:: CPACK_RESOURCE_FILE_README
-
-  ReadMe file to be embedded in the installer.  It typically describes in
-  some detail the purpose of the project during the installation.  Not all
-  CPack generators use this file.
-
-.. variable:: CPACK_RESOURCE_FILE_WELCOME
-
-  Welcome file to be embedded in the installer.  It welcomes users to this
-  installer.  Typically used in the graphical installers on Windows and Mac
-  OS X.
-
-.. variable:: CPACK_MONOLITHIC_INSTALL
-
-  Disables the component-based installation mechanism.  When set, the
-  component specification is ignored and all installed items are put in a
-  single "MONOLITHIC" package.  Some CPack generators do monolithic
-  packaging by default and may be asked to do component packaging by
-  setting ``CPACK_<GENNAME>_COMPONENT_INSTALL`` to ``TRUE``.
-
-.. variable:: CPACK_GENERATOR
-
-  List of CPack generators to use.  If not specified, CPack will create a
-  set of options following the naming pattern
-  :variable:`CPACK_BINARY_<GENNAME>` (e.g. ``CPACK_BINARY_NSIS``) allowing
-  the user to enable/disable individual generators.  If the ``-G`` option is
-  given on the :manual:`cpack <cpack(1)>` command line, it will override this
-  variable and any ``CPACK_BINARY_<GENNAME>`` options.
-
-.. variable:: CPACK_OUTPUT_CONFIG_FILE
-
-  The name of the CPack binary configuration file.  This file is the CPack
-  configuration generated by the CPack module for binary installers.
-  Defaults to ``CPackConfig.cmake``.
-
-.. variable:: CPACK_PACKAGE_EXECUTABLES
-
-  Lists each of the executables and associated text label to be used to
-  create Start Menu shortcuts.  For example, setting this to the list
-  ``ccmake;CMake`` will create a shortcut named "CMake" that will execute the
-  installed executable ``ccmake``.  Not all CPack generators use it (at least
-  NSIS, WIX and OSXX11 do).
-
-.. variable:: CPACK_STRIP_FILES
-
-  List of files to be stripped.  Starting with CMake 2.6.0,
-  ``CPACK_STRIP_FILES`` will be a boolean variable which enables
-  stripping of all files (a list of files evaluates to ``TRUE`` in CMake,
-  so this change is compatible).
-
-.. variable:: CPACK_VERBATIM_VARIABLES
-
-  If set to ``TRUE``, values of variables prefixed with ``CPACK_`` will be
-  escaped before being written to the configuration files, so that the cpack
-  program receives them exactly as they were specified.  If not, characters
-  like quotes and backslashes can cause parsing errors or alter the value
-  received by the cpack program.  Defaults to ``FALSE`` for backwards
-  compatibility.
-
-Variables for Source Package Generators
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following CPack variables are specific to source packages, and
-will not affect binary packages:
-
-.. variable:: CPACK_SOURCE_PACKAGE_FILE_NAME
-
-  The name of the source package.  For example ``cmake-2.6.1``.
-
-.. variable:: CPACK_SOURCE_STRIP_FILES
-
-  List of files in the source tree that will be stripped.  Starting with
-  CMake 2.6.0, ``CPACK_SOURCE_STRIP_FILES`` will be a boolean
-  variable which enables stripping of all files (a list of files evaluates
-  to ``TRUE`` in CMake, so this change is compatible).
-
-.. variable:: CPACK_SOURCE_GENERATOR
-
-  List of generators used for the source packages.  As with
-  :variable:`CPACK_GENERATOR`, if this is not specified then CPack will
-  create a set of options (e.g. ``CPACK_SOURCE_ZIP``) allowing
-  users to select which packages will be generated.
-
-.. variable:: CPACK_SOURCE_OUTPUT_CONFIG_FILE
-
-  The name of the CPack source configuration file.  This file is the CPack
-  configuration generated by the CPack module for source installers.
-  Defaults to ``CPackSourceConfig.cmake``.
-
-.. variable:: CPACK_SOURCE_IGNORE_FILES
-
-  Pattern of files in the source tree that won't be packaged when building
-  a source package.  This is a list of regular expression patterns (that
-  must be properly escaped), e.g.,
-  ``/CVS/;/\\.svn/;\\.swp$;\\.#;/#;.*~;cscope.*``
-
-Variables for Advanced Use
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following variables are for advanced uses of CPack:
-
-.. variable:: CPACK_CMAKE_GENERATOR
-
-  What CMake generator should be used if the project is a CMake
-  project.  Defaults to the value of :variable:`CMAKE_GENERATOR`.  Few users
-  will want to change this setting.
-
-.. variable:: CPACK_INSTALL_CMAKE_PROJECTS
-
-  List of four values that specify what project to install.  The four values
-  are: Build directory, Project Name, Project Component, Directory.  If
-  omitted, CPack will build an installer that installs everything.
-
-.. variable:: CPACK_SYSTEM_NAME
-
-  System name, defaults to the value of :variable:`CMAKE_SYSTEM_NAME`,
-  except on Windows where it will be ``win32`` or ``win64``.
-
-.. variable:: CPACK_PACKAGE_VERSION
-
-  Package full version, used internally.  By default, this is built from
-  :variable:`CPACK_PACKAGE_VERSION_MAJOR`,
-  :variable:`CPACK_PACKAGE_VERSION_MINOR`, and
-  :variable:`CPACK_PACKAGE_VERSION_PATCH`.
-
-.. variable:: CPACK_TOPLEVEL_TAG
-
-  Directory for the installed files.
-
-.. variable:: CPACK_INSTALL_COMMANDS
-
-  Extra commands to install components.  The environment variable
-  ``CMAKE_INSTALL_PREFIX`` is set to the temporary install directory
-  during execution.
-
-.. variable:: CPACK_INSTALL_SCRIPTS
-
-  Extra CMake scripts executed by CPack during its local staging
-  installation, which is done right before packaging the files.
-  The scripts are not called by a standalone install (e.g.: ``make install``).
-  For every script, the following variables will be set:
-  :variable:`CMAKE_CURRENT_SOURCE_DIR`, :variable:`CMAKE_CURRENT_BINARY_DIR`
-  and :variable:`CMAKE_INSTALL_PREFIX` (which is set to the staging install
-  directory).  The singular form ``CMAKE_INSTALL_SCRIPT`` is supported as
-  an alternative variable for historical reasons, but its value is ignored if
-  ``CMAKE_INSTALL_SCRIPTS`` is set and a warning will be issued.
-
-.. variable:: CPACK_INSTALLED_DIRECTORIES
-
-  Extra directories to install.
-
-.. variable:: CPACK_PACKAGE_INSTALL_REGISTRY_KEY
-
-  Registry key used when installing this project.  This is only used by
-  installers for Windows.  The default value is based on the installation
-  directory.
-
-.. variable:: CPACK_CREATE_DESKTOP_LINKS
-
-  List of desktop links to create.  Each desktop link requires a
-  corresponding start menu shortcut as created by
-  :variable:`CPACK_PACKAGE_EXECUTABLES`.
-
-.. variable:: CPACK_BINARY_<GENNAME>
-
-  CPack generated options for binary generators.  The ``CPack.cmake`` module
-  generates (when :variable:`CPACK_GENERATOR` is not set) a set of CMake
-  options (see CMake :command:`option` command) which may then be used to
-  select the CPack generator(s) to be used when building the ``package``
-  target or when running :manual:`cpack <cpack(1)>` without the ``-G`` option.
-
-#]=======================================================================]
-
-# Define this var in order to avoid (or warn) concerning multiple inclusion
-if(CPack_CMake_INCLUDED)
-  message(WARNING "CPack.cmake has already been included!!")
-else()
-  set(CPack_CMake_INCLUDED 1)
-endif()
-
-# Pick a configuration file
-set(cpack_input_file "${CMAKE_ROOT}/Templates/CPackConfig.cmake.in")
-if(EXISTS "${CMAKE_SOURCE_DIR}/CPackConfig.cmake.in")
-  set(cpack_input_file "${CMAKE_SOURCE_DIR}/CPackConfig.cmake.in")
-endif()
-set(cpack_source_input_file "${CMAKE_ROOT}/Templates/CPackConfig.cmake.in")
-if(EXISTS "${CMAKE_SOURCE_DIR}/CPackSourceConfig.cmake.in")
-  set(cpack_source_input_file "${CMAKE_SOURCE_DIR}/CPackSourceConfig.cmake.in")
-endif()
-
-# Backward compatibility
-# Include CPackComponent macros if it has not already been included before.
-include(CPackComponent)
-
-# Macro for setting values if a user did not overwrite them
-# Mangles CMake-special characters. Only kept for backwards compatibility.
-macro(cpack_set_if_not_set name value)
-  message(DEPRECATION "cpack_set_if_not_set is obsolete; do not use.")
-  _cpack_set_default("${name}" "${value}")
-endmacro()
-
-# cpack_encode_variables - Function to encode variables for the configuration file
-# find any variable that starts with CPACK and create a variable
-# _CPACK_OTHER_VARIABLES_ that contains SET commands for
-# each cpack variable.  _CPACK_OTHER_VARIABLES_ is then
-# used as an @ replacment in configure_file for the CPackConfig.
-function(cpack_encode_variables)
-  set(commands "")
-  get_cmake_property(res VARIABLES)
-  foreach(var ${res})
-    if(var MATCHES "^CPACK")
-      if(CPACK_VERBATIM_VARIABLES)
-        _cpack_escape_for_cmake(value "${${var}}")
-      else()
-        set(value "${${var}}")
-      endif()
-
-      string(APPEND commands "\nset(${var} \"${value}\")")
-    endif()
-  endforeach()
-
-  set(_CPACK_OTHER_VARIABLES_ "${commands}" PARENT_SCOPE)
-endfunction()
-
-# Internal use functions
-function(_cpack_set_default name value)
-  if(NOT DEFINED "${name}")
-    set("${name}" "${value}" PARENT_SCOPE)
-  endif()
-endfunction()
-
-function(_cpack_escape_for_cmake var value)
-  string(REGEX REPLACE "([\\\$\"])" "\\\\\\1" escaped "${value}")
-  set("${var}" "${escaped}" PARENT_SCOPE)
-endfunction()
-
-# Set the package name
-_cpack_set_default(CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
-
-# Set the package version
-if(CMAKE_PROJECT_VERSION_MAJOR GREATER_EQUAL 0)
-  _cpack_set_default(CPACK_PACKAGE_VERSION_MAJOR "${CMAKE_PROJECT_VERSION_MAJOR}")
-  if(CMAKE_PROJECT_VERSION_MINOR GREATER_EQUAL 0)
-    _cpack_set_default(CPACK_PACKAGE_VERSION_MINOR "${CMAKE_PROJECT_VERSION_MINOR}")
-    if(CMAKE_PROJECT_VERSION_PATCH GREATER_EQUAL 0)
-      _cpack_set_default(CPACK_PACKAGE_VERSION_PATCH "${CMAKE_PROJECT_VERSION_PATCH}")
-    endif()
-  endif()
-else()
-  _cpack_set_default(CPACK_PACKAGE_VERSION_MAJOR "0")
-  _cpack_set_default(CPACK_PACKAGE_VERSION_MINOR "1")
-  _cpack_set_default(CPACK_PACKAGE_VERSION_PATCH "1")
-endif()
-if(NOT DEFINED CPACK_PACKAGE_VERSION)
-  set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}")
-  if(CPACK_PACKAGE_VERSION_MINOR GREATER_EQUAL 0)
-    string(APPEND CPACK_PACKAGE_VERSION ".${CPACK_PACKAGE_VERSION_MINOR}")
-    if(CPACK_PACKAGE_VERSION_PATCH GREATER_EQUAL 0)
-      string(APPEND CPACK_PACKAGE_VERSION ".${CPACK_PACKAGE_VERSION_PATCH}")
-    endif()
-  endif()
-endif()
-
-_cpack_set_default(CPACK_PACKAGE_VENDOR "Humanity")
-set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY "${CMAKE_PROJECT_NAME} built using CMake")
-if(CMAKE_PROJECT_DESCRIPTION)
-  _cpack_set_default(CPACK_PACKAGE_DESCRIPTION_SUMMARY
-    "${CMAKE_PROJECT_DESCRIPTION}")
-else()
-  _cpack_set_default(CPACK_PACKAGE_DESCRIPTION_SUMMARY
-    "${CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY}")
-endif()
-if(CMAKE_PROJECT_HOMEPAGE_URL)
-  _cpack_set_default(CPACK_PACKAGE_HOMEPAGE_URL
-    "${CMAKE_PROJECT_HOMEPAGE_URL}")
-endif()
-
-set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE
-  "${CMAKE_ROOT}/Templates/CPack.GenericDescription.txt")
-_cpack_set_default(CPACK_PACKAGE_DESCRIPTION_FILE
-  "${CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE}")
-_cpack_set_default(CPACK_RESOURCE_FILE_LICENSE
-  "${CMAKE_ROOT}/Templates/CPack.GenericLicense.txt")
-_cpack_set_default(CPACK_RESOURCE_FILE_README
-  "${CMAKE_ROOT}/Templates/CPack.GenericDescription.txt")
-_cpack_set_default(CPACK_RESOURCE_FILE_WELCOME
-  "${CMAKE_ROOT}/Templates/CPack.GenericWelcome.txt")
-
-_cpack_set_default(CPACK_MODULE_PATH "${CMAKE_MODULE_PATH}")
-
-# Set default directory creation permissions mode
-if(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS)
-  _cpack_set_default(CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
-    "${CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS}")
-endif()
-
-if(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL)
-  set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
-endif()
-
-if(CPACK_NSIS_MODIFY_PATH)
-  set(CPACK_NSIS_MODIFY_PATH ON)
-endif()
-
-set(__cpack_system_name ${CMAKE_SYSTEM_NAME})
-if(__cpack_system_name MATCHES "Windows")
-  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-    set(__cpack_system_name win64)
-  else()
-    set(__cpack_system_name win32)
-  endif()
-endif()
-_cpack_set_default(CPACK_SYSTEM_NAME "${__cpack_system_name}")
-
-# Root dir: default value should be the string literal "$PROGRAMFILES"
-# for backwards compatibility. Projects may set this value to anything.
-# When creating 64 bit binaries we set the default value to "$PROGRAMFILES64"
-if("x${__cpack_system_name}" STREQUAL "xwin64")
-  set(__cpack_root_default "$PROGRAMFILES64")
-else()
-  set(__cpack_root_default "$PROGRAMFILES")
-endif()
-_cpack_set_default(CPACK_NSIS_INSTALL_ROOT "${__cpack_root_default}")
-
-# <project>-<major>.<minor>.<patch>-<release>-<platform>.<pkgtype>
-_cpack_set_default(CPACK_PACKAGE_FILE_NAME
-  "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}")
-_cpack_set_default(CPACK_PACKAGE_INSTALL_DIRECTORY
-  "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
-_cpack_set_default(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
-  "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
-_cpack_set_default(CPACK_PACKAGE_DEFAULT_LOCATION "/")
-_cpack_set_default(CPACK_PACKAGE_RELOCATABLE "true")
-
-# always force to exactly "true" or "false" for CPack.Info.plist.in:
-if(CPACK_PACKAGE_RELOCATABLE)
-  set(CPACK_PACKAGE_RELOCATABLE "true")
-else()
-  set(CPACK_PACKAGE_RELOCATABLE "false")
-endif()
-
-macro(cpack_check_file_exists file description)
-  if(NOT EXISTS "${file}")
-    message(SEND_ERROR "CPack ${description} file: \"${file}\" could not be found.")
-  endif()
-endmacro()
-
-cpack_check_file_exists("${CPACK_PACKAGE_DESCRIPTION_FILE}" "package description")
-cpack_check_file_exists("${CPACK_RESOURCE_FILE_LICENSE}"    "license resource")
-cpack_check_file_exists("${CPACK_RESOURCE_FILE_README}"     "readme resource")
-cpack_check_file_exists("${CPACK_RESOURCE_FILE_WELCOME}"    "welcome resource")
-
-macro(cpack_optional_append _list _cond _item)
-  if(${_cond})
-    set(${_list} ${${_list}} ${_item})
-  endif()
-endmacro()
-
-# Provide options to choose generators we might check here if the required
-# tools for the generators exist and set the defaults according to the
-# results.
-if(NOT CPACK_GENERATOR)
-  if(UNIX)
-    if(CYGWIN)
-      option(CPACK_BINARY_CYGWIN "Enable to build Cygwin binary packages" ON)
-    else()
-      if(APPLE)
-        option(CPACK_BINARY_BUNDLE       "Enable to build OSX bundles"      OFF)
-        option(CPACK_BINARY_DRAGNDROP    "Enable to build OSX Drag And Drop package" OFF)
-        option(CPACK_BINARY_OSXX11       "Enable to build OSX X11 packages (deprecated)" OFF)
-        option(CPACK_BINARY_PACKAGEMAKER "Enable to build PackageMaker packages (deprecated)" OFF)
-        option(CPACK_BINARY_PRODUCTBUILD "Enable to build productbuild packages" OFF)
-        mark_as_advanced(
-          CPACK_BINARY_BUNDLE
-          CPACK_BINARY_DRAGNDROP
-          CPACK_BINARY_OSXX11
-          CPACK_BINARY_PACKAGEMAKER
-          CPACK_BINARY_PRODUCTBUILD
-          )
-      else()
-        option(CPACK_BINARY_TZ  "Enable to build TZ packages"     ON)
-        mark_as_advanced(CPACK_BINARY_TZ)
-      endif()
-      option(CPACK_BINARY_DEB  "Enable to build Debian packages"  OFF)
-      option(CPACK_BINARY_FREEBSD  "Enable to build FreeBSD packages"  OFF)
-      option(CPACK_BINARY_NSIS "Enable to build NSIS packages"    OFF)
-      option(CPACK_BINARY_RPM  "Enable to build RPM packages"     OFF)
-      option(CPACK_BINARY_STGZ "Enable to build STGZ packages"    ON)
-      option(CPACK_BINARY_TBZ2 "Enable to build TBZ2 packages"    OFF)
-      option(CPACK_BINARY_TGZ  "Enable to build TGZ packages"     ON)
-      option(CPACK_BINARY_TXZ  "Enable to build TXZ packages"     OFF)
-      mark_as_advanced(
-        CPACK_BINARY_DEB
-        CPACK_BINARY_FREEBSD
-        CPACK_BINARY_NSIS
-        CPACK_BINARY_RPM
-        CPACK_BINARY_STGZ
-        CPACK_BINARY_TBZ2
-        CPACK_BINARY_TGZ
-        CPACK_BINARY_TXZ
-        )
-    endif()
-  else()
-    option(CPACK_BINARY_7Z    "Enable to build 7-Zip packages" OFF)
-    option(CPACK_BINARY_NSIS  "Enable to build NSIS packages" ON)
-    option(CPACK_BINARY_NUGET "Enable to build NuGet packages" OFF)
-    option(CPACK_BINARY_WIX   "Enable to build WiX packages" OFF)
-    option(CPACK_BINARY_ZIP   "Enable to build ZIP packages" OFF)
-    mark_as_advanced(
-      CPACK_BINARY_7Z
-      CPACK_BINARY_NSIS
-      CPACK_BINARY_NUGET
-      CPACK_BINARY_WIX
-      CPACK_BINARY_ZIP
-      )
-  endif()
-  option(CPACK_BINARY_IFW "Enable to build IFW packages" OFF)
-  mark_as_advanced(CPACK_BINARY_IFW)
-
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_7Z           7Z)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_BUNDLE       Bundle)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_CYGWIN       CygwinBinary)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_DEB          DEB)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_DRAGNDROP    DragNDrop)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_FREEBSD      FREEBSD)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_IFW          IFW)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_NSIS         NSIS)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_NUGET        NuGet)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_OSXX11       OSXX11)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_PACKAGEMAKER PackageMaker)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_PRODUCTBUILD productbuild)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_RPM          RPM)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_STGZ         STGZ)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_TBZ2         TBZ2)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_TGZ          TGZ)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_TXZ          TXZ)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_TZ           TZ)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_WIX          WIX)
-  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_ZIP          ZIP)
-
-endif()
-
-# Provide options to choose source generators
-if(NOT CPACK_SOURCE_GENERATOR)
-  if(UNIX)
-    if(CYGWIN)
-      option(CPACK_SOURCE_CYGWIN "Enable to build Cygwin source packages" ON)
-      mark_as_advanced(CPACK_SOURCE_CYGWIN)
-    else()
-      option(CPACK_SOURCE_RPM  "Enable to build RPM source packages"  OFF)
-      option(CPACK_SOURCE_TBZ2 "Enable to build TBZ2 source packages" ON)
-      option(CPACK_SOURCE_TGZ  "Enable to build TGZ source packages"  ON)
-      option(CPACK_SOURCE_TXZ  "Enable to build TXZ source packages"  ON)
-      option(CPACK_SOURCE_TZ   "Enable to build TZ source packages"   ON)
-      option(CPACK_SOURCE_ZIP  "Enable to build ZIP source packages"  OFF)
-      mark_as_advanced(
-        CPACK_SOURCE_RPM
-        CPACK_SOURCE_TBZ2
-        CPACK_SOURCE_TGZ
-        CPACK_SOURCE_TXZ
-        CPACK_SOURCE_TZ
-        CPACK_SOURCE_ZIP
-        )
-    endif()
-  else()
-    option(CPACK_SOURCE_7Z  "Enable to build 7-Zip source packages" ON)
-    option(CPACK_SOURCE_ZIP "Enable to build ZIP source packages" ON)
-    mark_as_advanced(
-      CPACK_SOURCE_7Z
-      CPACK_SOURCE_ZIP
-      )
-  endif()
-
-  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_7Z      7Z)
-  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_CYGWIN  CygwinSource)
-  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_RPM     RPM)
-  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_TBZ2    TBZ2)
-  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_TGZ     TGZ)
-  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_TXZ     TXZ)
-  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_TZ      TZ)
-  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_ZIP     ZIP)
-endif()
-
-# Set some other variables
-_cpack_set_default(CPACK_INSTALL_CMAKE_PROJECTS
-  "${CMAKE_BINARY_DIR};${CMAKE_PROJECT_NAME};ALL;/")
-_cpack_set_default(CPACK_CMAKE_GENERATOR "${CMAKE_GENERATOR}")
-_cpack_set_default(CPACK_TOPLEVEL_TAG "${CPACK_SYSTEM_NAME}")
-# if the user has set CPACK_NSIS_DISPLAY_NAME remember it
-if(DEFINED CPACK_NSIS_DISPLAY_NAME)
-  set(CPACK_NSIS_DISPLAY_NAME_SET TRUE)
-endif()
-# if the user has set CPACK_NSIS_DISPLAY
-# explicitly, then use that as the default
-# value of CPACK_NSIS_PACKAGE_NAME  instead
-# of CPACK_PACKAGE_INSTALL_DIRECTORY
-_cpack_set_default(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
-# Specify the name of the Uninstall file in NSIS
-_cpack_set_default(CPACK_NSIS_UNINSTALL_NAME "Uninstall")
-
-if(CPACK_NSIS_DISPLAY_NAME_SET)
-  _cpack_set_default(CPACK_NSIS_PACKAGE_NAME "${CPACK_NSIS_DISPLAY_NAME}")
-else()
-  _cpack_set_default(CPACK_NSIS_PACKAGE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
-endif()
-
-_cpack_set_default(CPACK_OUTPUT_CONFIG_FILE
-  "${CMAKE_BINARY_DIR}/CPackConfig.cmake")
-
-_cpack_set_default(CPACK_SOURCE_OUTPUT_CONFIG_FILE
-  "${CMAKE_BINARY_DIR}/CPackSourceConfig.cmake")
-
-_cpack_set_default(CPACK_SET_DESTDIR OFF)
-_cpack_set_default(CPACK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
-
-_cpack_set_default(CPACK_NSIS_INSTALLER_ICON_CODE "")
-_cpack_set_default(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "")
-
-# WiX specific variables
-_cpack_set_default(CPACK_WIX_SIZEOF_VOID_P "${CMAKE_SIZEOF_VOID_P}")
-
-# set sysroot so SDK tools can be used
-if(CMAKE_OSX_SYSROOT)
-  _cpack_set_default(CPACK_OSX_SYSROOT "${_CMAKE_OSX_SYSROOT_PATH}")
-endif()
-
-_cpack_set_default(CPACK_BUILD_SOURCE_DIRS "${CMAKE_SOURCE_DIR};${CMAKE_BINARY_DIR}")
-
-if(DEFINED CPACK_COMPONENTS_ALL)
-  if(CPACK_MONOLITHIC_INSTALL)
-    message("CPack warning: both CPACK_COMPONENTS_ALL and CPACK_MONOLITHIC_INSTALL have been set.\nDefaulting to a monolithic installation.")
-    set(CPACK_COMPONENTS_ALL)
-  else()
-    # The user has provided the set of components to be installed as
-    # part of a component-based installation; trust her.
-    set(CPACK_COMPONENTS_ALL_SET_BY_USER TRUE)
-  endif()
-else()
-  # If the user has not specifically requested a monolithic installer
-  # but has specified components in various "install" commands, tell
-  # CPack about those components.
-  if(NOT CPACK_MONOLITHIC_INSTALL)
-    get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS)
-    list(LENGTH CPACK_COMPONENTS_ALL CPACK_COMPONENTS_LEN)
-    if(CPACK_COMPONENTS_LEN EQUAL 1)
-      # Only one component: this is not a component-based installation
-      # (at least, it isn't a component-based installation, but may
-      # become one later if the user uses the cpack_add_* commands).
-      set(CPACK_COMPONENTS_ALL)
-    endif()
-    set(CPACK_COMPONENTS_LEN)
-  endif()
-endif()
-
-# CMake always generates a component named "Unspecified", which is
-# used to install everything that doesn't have an explicitly-provided
-# component. Since these files should always be installed, we'll make
-# them hidden and required.
-set(CPACK_COMPONENT_UNSPECIFIED_HIDDEN TRUE)
-set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED TRUE)
-
-cpack_encode_variables()
-configure_file("${cpack_input_file}" "${CPACK_OUTPUT_CONFIG_FILE}" @ONLY)
-
-# Generate source file
-_cpack_set_default(CPACK_SOURCE_INSTALLED_DIRECTORIES
-  "${CMAKE_SOURCE_DIR};/")
-_cpack_set_default(CPACK_SOURCE_TOPLEVEL_TAG "${CPACK_SYSTEM_NAME}-Source")
-_cpack_set_default(CPACK_SOURCE_PACKAGE_FILE_NAME
-  "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-Source")
-
-set(__cpack_source_ignore_files_default
-  "/CVS/;/\\.svn/;/\\.bzr/;/\\.hg/;/\\.git/;\\.swp$;\\.#;/#")
-if(NOT CPACK_VERBATIM_VARIABLES)
-  _cpack_escape_for_cmake(__cpack_source_ignore_files_default
-    "${__cpack_source_ignore_files_default}")
-endif()
-_cpack_set_default(CPACK_SOURCE_IGNORE_FILES "${__cpack_source_ignore_files_default}")
-
-set(CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_SOURCE_INSTALL_CMAKE_PROJECTS}")
-set(CPACK_INSTALLED_DIRECTORIES "${CPACK_SOURCE_INSTALLED_DIRECTORIES}")
-set(CPACK_GENERATOR "${CPACK_SOURCE_GENERATOR}")
-set(CPACK_TOPLEVEL_TAG "${CPACK_SOURCE_TOPLEVEL_TAG}")
-set(CPACK_PACKAGE_FILE_NAME "${CPACK_SOURCE_PACKAGE_FILE_NAME}")
-set(CPACK_IGNORE_FILES "${CPACK_SOURCE_IGNORE_FILES}")
-set(CPACK_STRIP_FILES "${CPACK_SOURCE_STRIP_FILES}")
-
-set(CPACK_RPM_PACKAGE_SOURCES "ON")
-
-cpack_encode_variables()
-configure_file("${cpack_source_input_file}"
-  "${CPACK_SOURCE_OUTPUT_CONFIG_FILE}" @ONLY)
diff --git a/share/cmake-3.18/Modules/CPackIFW.cmake b/share/cmake-3.18/Modules/CPackIFW.cmake
deleted file mode 100644
index 80a907f..0000000
--- a/share/cmake-3.18/Modules/CPackIFW.cmake
+++ /dev/null
@@ -1,739 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CPackIFW
---------
-
-This module looks for the location of the command-line utilities supplied with the
-`Qt Installer Framework <http://doc.qt.io/qtinstallerframework/index.html>`_
-(QtIFW).
-
-The module also defines several commands to control the behavior of the
-:cpack_gen:`CPack IFW Generator`.
-
-Commands
-^^^^^^^^
-
-The module defines the following commands:
-
-.. command:: cpack_ifw_configure_component
-
-  Sets the arguments specific to the CPack IFW generator.
-
-  ::
-
-    cpack_ifw_configure_component(<compname> [COMMON] [ESSENTIAL] [VIRTUAL]
-                        [FORCED_INSTALLATION] [REQUIRES_ADMIN_RIGHTS]
-                        [NAME <name>]
-                        [DISPLAY_NAME <display_name>] # Note: Internationalization supported
-                        [DESCRIPTION <description>] # Note: Internationalization supported
-                        [UPDATE_TEXT <update_text>]
-                        [VERSION <version>]
-                        [RELEASE_DATE <release_date>]
-                        [SCRIPT <script>]
-                        [PRIORITY|SORTING_PRIORITY <sorting_priority>] # Note: PRIORITY is deprecated
-                        [DEPENDS|DEPENDENCIES <com_id> ...]
-                        [AUTO_DEPEND_ON <comp_id> ...]
-                        [LICENSES <display_name> <file_path> ...]
-                        [DEFAULT <value>]
-                        [USER_INTERFACES <file_path> <file_path> ...]
-                        [TRANSLATIONS <file_path> <file_path> ...]
-                        [REPLACES <comp_id> ...]
-                        [CHECKABLE <value>])
-
-  This command should be called after :command:`cpack_add_component` command.
-
-  ``COMMON``
-    if set, then the component will be packaged and installed as part
-    of a group to which it belongs.
-
-  ``ESSENTIAL``
-    if set, then the package manager stays disabled until that
-    component is updated.
-
-  ``VIRTUAL``
-    if set, then the component will be hidden from the installer.
-    It is a equivalent of the ``HIDDEN`` option from the
-    :command:`cpack_add_component` command.
-
-  ``FORCED_INSTALLATION``
-    if set, then the component must always be installed.
-    It is a equivalent of the ``REQUIRED`` option from the
-    :command:`cpack_add_component` command.
-
-  ``REQUIRES_ADMIN_RIGHTS``
-    set it if the component needs to be installed with elevated permissions.
-
-  ``NAME``
-    is used to create domain-like identification for this component.
-    By default used origin component name.
-
-  ``DISPLAY_NAME``
-    set to rewrite original name configured by
-    :command:`cpack_add_component` command.
-
-  ``DESCRIPTION``
-    set to rewrite original description configured by
-    :command:`cpack_add_component` command.
-
-  ``UPDATE_TEXT``
-    will be added to the component description if this is an update to
-    the component.
-
-  ``VERSION``
-    is version of component.
-    By default used :variable:`CPACK_PACKAGE_VERSION`.
-
-  ``RELEASE_DATE``
-    keep empty to auto generate.
-
-  ``SCRIPT``
-    is a relative or absolute path to operations script
-    for this component.
-
-  ``PRIORITY`` | ``SORTING_PRIORITY``
-    is priority of the component in the tree.
-    The ``PRIORITY`` option is deprecated and will be removed in a future
-    version of CMake. Please use ``SORTING_PRIORITY`` option instead.
-
-  ``DEPENDS`` | ``DEPENDENCIES``
-    list of dependency component or component group identifiers in
-    QtIFW style.
-
-  ``AUTO_DEPEND_ON``
-    list of identifiers of component or component group in QtIFW style
-    that this component has an automatic dependency on.
-
-  ``LICENSES``
-    pair of <display_name> and <file_path> of license text for this
-    component. You can specify more then one license.
-
-  ``DEFAULT``
-    Possible values are: TRUE, FALSE, and SCRIPT.
-    Set to FALSE to disable the component in the installer or to SCRIPT
-    to resolved during runtime (don't forget add the file of the script
-    as a value of the ``SCRIPT`` option).
-
-  ``USER_INTERFACES``
-    is a list of <file_path> ('.ui' files) representing pages to load.
-
-  ``TRANSLATIONS``
-    is a list of <file_path> ('.qm' files) representing translations to load.
-
-  ``REPLACES``
-    list of identifiers of component or component group to replace.
-
-  ``CHECKABLE``
-    Possible values are: TRUE, FALSE.
-    Set to FALSE if you want to hide the checkbox for an item.
-    This is useful when only a few subcomponents should be selected
-    instead of all.
-
-
-.. command:: cpack_ifw_configure_component_group
-
-  Sets the arguments specific to the CPack IFW generator.
-
-  ::
-
-    cpack_ifw_configure_component_group(<groupname> [VIRTUAL]
-                        [FORCED_INSTALLATION] [REQUIRES_ADMIN_RIGHTS]
-                        [NAME <name>]
-                        [DISPLAY_NAME <display_name>] # Note: Internationalization supported
-                        [DESCRIPTION <description>] # Note: Internationalization supported
-                        [UPDATE_TEXT <update_text>]
-                        [VERSION <version>]
-                        [RELEASE_DATE <release_date>]
-                        [SCRIPT <script>]
-                        [PRIORITY|SORTING_PRIORITY <sorting_priority>] # Note: PRIORITY is deprecated
-                        [DEPENDS|DEPENDENCIES <com_id> ...]
-                        [AUTO_DEPEND_ON <comp_id> ...]
-                        [LICENSES <display_name> <file_path> ...]
-                        [DEFAULT <value>]
-                        [USER_INTERFACES <file_path> <file_path> ...]
-                        [TRANSLATIONS <file_path> <file_path> ...]
-                        [REPLACES <comp_id> ...]
-                        [CHECKABLE <value>])
-
-  This command should be called after :command:`cpack_add_component_group`
-  command.
-
-  ``VIRTUAL``
-    if set, then the group will be hidden from the installer.
-    Note that setting this on a root component does not work.
-
-  ``FORCED_INSTALLATION``
-    if set, then the group must always be installed.
-
-  ``REQUIRES_ADMIN_RIGHTS``
-    set it if the component group needs to be installed with elevated
-    permissions.
-
-  ``NAME``
-    is used to create domain-like identification for this component group.
-    By default used origin component group name.
-
-  ``DISPLAY_NAME``
-    set to rewrite original name configured by
-    :command:`cpack_add_component_group` command.
-
-  ``DESCRIPTION``
-    set to rewrite original description configured by
-    :command:`cpack_add_component_group` command.
-
-  ``UPDATE_TEXT``
-    will be added to the component group description if this is an update to
-    the component group.
-
-  ``VERSION``
-    is version of component group.
-    By default used :variable:`CPACK_PACKAGE_VERSION`.
-
-  ``RELEASE_DATE``
-    keep empty to auto generate.
-
-  ``SCRIPT``
-    is a relative or absolute path to operations script
-    for this component group.
-
-  ``PRIORITY`` | ``SORTING_PRIORITY``
-    is priority of the component group in the tree.
-    The ``PRIORITY`` option is deprecated and will be removed in a future
-    version of CMake. Please use ``SORTING_PRIORITY`` option instead.
-
-  ``DEPENDS`` | ``DEPENDENCIES``
-    list of dependency component or component group identifiers in
-    QtIFW style.
-
-  ``AUTO_DEPEND_ON``
-    list of identifiers of component or component group in QtIFW style
-    that this component group has an automatic dependency on.
-
-  ``LICENSES``
-    pair of <display_name> and <file_path> of license text for this
-    component group. You can specify more then one license.
-
-  ``DEFAULT``
-    Possible values are: TRUE, FALSE, and SCRIPT.
-    Set to TRUE to preselect the group in the installer
-    (this takes effect only on groups that have no visible child components)
-    or to SCRIPT to resolved during runtime (don't forget add the file of
-    the script as a value of the ``SCRIPT`` option).
-
-  ``USER_INTERFACES``
-    is a list of <file_path> ('.ui' files) representing pages to load.
-
-  ``TRANSLATIONS``
-    is a list of <file_path> ('.qm' files) representing translations to load.
-
-  ``REPLACES``
-    list of identifiers of component or component group to replace.
-
-  ``CHECKABLE``
-    Possible values are: TRUE, FALSE.
-    Set to FALSE if you want to hide the checkbox for an item.
-    This is useful when only a few subcomponents should be selected
-    instead of all.
-
-
-.. command:: cpack_ifw_add_repository
-
-  Add QtIFW specific remote repository to binary installer.
-
-  ::
-
-    cpack_ifw_add_repository(<reponame> [DISABLED]
-                        URL <url>
-                        [USERNAME <username>]
-                        [PASSWORD <password>]
-                        [DISPLAY_NAME <display_name>])
-
-  This command will also add the <reponame> repository
-  to a variable :variable:`CPACK_IFW_REPOSITORIES_ALL`.
-
-  ``DISABLED``
-    if set, then the repository will be disabled by default.
-
-  ``URL``
-    is points to a list of available components.
-
-  ``USERNAME``
-    is used as user on a protected repository.
-
-  ``PASSWORD``
-    is password to use on a protected repository.
-
-  ``DISPLAY_NAME``
-    is string to display instead of the URL.
-
-
-.. command:: cpack_ifw_update_repository
-
-  Update QtIFW specific repository from remote repository.
-
-  ::
-
-    cpack_ifw_update_repository(<reponame>
-                        [[ADD|REMOVE] URL <url>]|
-                         [REPLACE OLD_URL <old_url> NEW_URL <new_url>]]
-                        [USERNAME <username>]
-                        [PASSWORD <password>]
-                        [DISPLAY_NAME <display_name>])
-
-  This command will also add the <reponame> repository
-  to a variable :variable:`CPACK_IFW_REPOSITORIES_ALL`.
-
-  ``URL``
-    is points to a list of available components.
-
-  ``OLD_URL``
-    is points to a list that will replaced.
-
-  ``NEW_URL``
-    is points to a list that will replace to.
-
-  ``USERNAME``
-    is used as user on a protected repository.
-
-  ``PASSWORD``
-    is password to use on a protected repository.
-
-  ``DISPLAY_NAME``
-    is string to display instead of the URL.
-
-
-.. command:: cpack_ifw_add_package_resources
-
-  Add additional resources in the installer binary.
-
-  ::
-
-    cpack_ifw_add_package_resources(<file_path> <file_path> ...)
-
-  This command will also add the specified files
-  to a variable :variable:`CPACK_IFW_PACKAGE_RESOURCES`.
-
-#]=======================================================================]
-
-# TODO:
-# All of the internal implementation CMake modules for other CPack generators
-# have been moved into the Internal/CPack directory. This one has not, because
-# it contains user-facing macros which would be lost if it were moved. At some
-# point, this module should be split into user-facing macros (which would live
-# in this module) and internal implementation details (which would live in
-# Internal/CPack/CPackIFW.cmake).
-
-#=============================================================================
-# Search Qt Installer Framework tools
-#=============================================================================
-
-# Default path
-
-foreach(_CPACK_IFW_PATH_VAR "CPACK_IFW_ROOT" "QTIFWDIR" "QTDIR")
-  if(DEFINED ${_CPACK_IFW_PATH_VAR}
-    AND NOT "${${_CPACK_IFW_PATH_VAR}}" STREQUAL "")
-    list(APPEND _CPACK_IFW_PATHS "${${_CPACK_IFW_PATH_VAR}}")
-  endif()
-  if(NOT "$ENV{${_CPACK_IFW_PATH_VAR}}" STREQUAL "")
-    list(APPEND _CPACK_IFW_PATHS "$ENV{${_CPACK_IFW_PATH_VAR}}")
-  endif()
-endforeach()
-if(WIN32)
-  list(APPEND _CPACK_IFW_PATHS
-    "$ENV{HOMEDRIVE}/Qt"
-    "C:/Qt")
-else()
-  list(APPEND _CPACK_IFW_PATHS
-    "$ENV{HOME}/Qt"
-    "/opt/Qt")
-endif()
-list(REMOVE_DUPLICATES _CPACK_IFW_PATHS)
-
-set(_CPACK_IFW_PREFIXES
-  # QtSDK
-  "Tools/QtInstallerFramework/"
-  # Second branch
-  "QtIFW"
-  # First branch
-  "QtIFW-")
-
-set(_CPACK_IFW_VERSIONS
-  "3.2"
-  "3.2.0"
-  "3.1"
-  "3.1.0"
-  "3.0"
-  "3.0.0"
-  "2.3"
-  "2.3.0"
-  "2.2"
-  "2.2.0"
-  "2.1"
-  "2.1.0"
-  "2.0"
-  "2.0.5"
-  "2.0.3"
-  "2.0.2"
-  "2.0.1"
-  "2.0.0"
-  "1.6"
-  "1.6.0"
-  "1.5"
-  "1.5.0"
-  "1.4"
-  "1.4.0"
-  "1.3"
-  "1.3.0")
-
-set(_CPACK_IFW_SUFFIXES "bin")
-foreach(_CPACK_IFW_PREFIX ${_CPACK_IFW_PREFIXES})
-  foreach(_CPACK_IFW_VERSION ${_CPACK_IFW_VERSIONS})
-    list(APPEND
-      _CPACK_IFW_SUFFIXES "${_CPACK_IFW_PREFIX}${_CPACK_IFW_VERSION}/bin")
-  endforeach()
-endforeach()
-
-# Look for 'binarycreator'
-
-find_program(CPACK_IFW_BINARYCREATOR_EXECUTABLE
-  NAMES binarycreator
-  PATHS ${_CPACK_IFW_PATHS}
-  PATH_SUFFIXES ${_CPACK_IFW_SUFFIXES}
-  DOC "QtIFW binarycreator command line client")
-
-mark_as_advanced(CPACK_IFW_BINARYCREATOR_EXECUTABLE)
-
-# Look for 'repogen'
-
-find_program(CPACK_IFW_REPOGEN_EXECUTABLE
-  NAMES repogen
-  PATHS ${_CPACK_IFW_PATHS}
-  PATH_SUFFIXES ${_CPACK_IFW_SUFFIXES}
-  DOC "QtIFW repogen command line client"
-  )
-mark_as_advanced(CPACK_IFW_REPOGEN_EXECUTABLE)
-
-# Look for 'installerbase'
-
-find_program(CPACK_IFW_INSTALLERBASE_EXECUTABLE
-  NAMES installerbase
-  PATHS ${_CPACK_IFW_PATHS}
-  PATH_SUFFIXES ${_CPACK_IFW_SUFFIXES}
-  DOC "QtIFW installer executable base"
-  )
-mark_as_advanced(CPACK_IFW_INSTALLERBASE_EXECUTABLE)
-
-# Look for 'devtool' (appeared in the second branch)
-
-find_program(CPACK_IFW_DEVTOOL_EXECUTABLE
-  NAMES devtool
-  PATHS ${_CPACK_IFW_PATHS}
-  PATH_SUFFIXES ${_CPACK_IFW_SUFFIXES}
-  DOC "QtIFW devtool command line client"
-  )
-mark_as_advanced(CPACK_IFW_DEVTOOL_EXECUTABLE)
-
-#
-## Next code is included only once
-#
-
-if(NOT CPackIFW_CMake_INCLUDED)
-set(CPackIFW_CMake_INCLUDED 1)
-
-#=============================================================================
-# Framework version
-#=============================================================================
-
-set(CPACK_IFW_FRAMEWORK_VERSION_FORCED ""
-  CACHE STRING "The forced version of used QtIFW tools")
-mark_as_advanced(CPACK_IFW_FRAMEWORK_VERSION_FORCED)
-set(CPACK_IFW_FRAMEWORK_VERSION_TIMEOUT 1
-  CACHE STRING "The timeout to return QtIFW framework version string from \"installerbase\" executable")
-mark_as_advanced(CPACK_IFW_FRAMEWORK_VERSION_TIMEOUT)
-if(CPACK_IFW_INSTALLERBASE_EXECUTABLE AND NOT CPACK_IFW_FRAMEWORK_VERSION_FORCED)
-  set(CPACK_IFW_FRAMEWORK_VERSION)
-  # Invoke version from "installerbase" executable
-  foreach(_ifw_version_argument --framework-version --version)
-    if(NOT CPACK_IFW_FRAMEWORK_VERSION)
-      execute_process(COMMAND
-        "${CPACK_IFW_INSTALLERBASE_EXECUTABLE}" ${_ifw_version_argument}
-        TIMEOUT ${CPACK_IFW_FRAMEWORK_VERSION_TIMEOUT}
-        RESULT_VARIABLE CPACK_IFW_FRAMEWORK_VERSION_RESULT
-        OUTPUT_VARIABLE CPACK_IFW_FRAMEWORK_VERSION_OUTPUT
-        OUTPUT_STRIP_TRAILING_WHITESPACE
-        ENCODING UTF8)
-      if(NOT CPACK_IFW_FRAMEWORK_VERSION_RESULT AND CPACK_IFW_FRAMEWORK_VERSION_OUTPUT)
-        string(REGEX MATCH "[0-9]+(\\.[0-9]+)*"
-          CPACK_IFW_FRAMEWORK_VERSION "${CPACK_IFW_FRAMEWORK_VERSION_OUTPUT}")
-        if(CPACK_IFW_FRAMEWORK_VERSION)
-          if("${_ifw_version_argument}" STREQUAL "--framework-version")
-            set(CPACK_IFW_FRAMEWORK_VERSION_SOURCE "INSTALLERBASE_FRAMEWORK_VERSION")
-          elseif("${_ifw_version_argument}" STREQUAL "--version")
-            set(CPACK_IFW_FRAMEWORK_VERSION_SOURCE "INSTALLERBASE_FRAMEWORK_VERSION")
-          endif()
-        endif()
-      endif()
-    endif()
-  endforeach()
-  # Finally try to get version from executable path
-  if(NOT CPACK_IFW_FRAMEWORK_VERSION)
-    string(REGEX MATCH "[0-9]+(\\.[0-9]+)*"
-      CPACK_IFW_FRAMEWORK_VERSION "${CPACK_IFW_INSTALLERBASE_EXECUTABLE}")
-    if(CPACK_IFW_FRAMEWORK_VERSION)
-      set(CPACK_IFW_FRAMEWORK_VERSION_SOURCE "INSTALLERBASE_PATH")
-    endif()
-  endif()
-elseif(CPACK_IFW_FRAMEWORK_VERSION_FORCED)
-  set(CPACK_IFW_FRAMEWORK_VERSION ${CPACK_IFW_FRAMEWORK_VERSION_FORCED})
-  set(CPACK_IFW_FRAMEWORK_VERSION_SOURCE "FORCED")
-endif()
-if(CPACK_IFW_VERBOSE)
-  if(CPACK_IFW_FRAMEWORK_VERSION AND CPACK_IFW_FRAMEWORK_VERSION_FORCED)
-    message(STATUS "Found QtIFW ${CPACK_IFW_FRAMEWORK_VERSION} (forced) version")
-  elseif(CPACK_IFW_FRAMEWORK_VERSION)
-    message(STATUS "Found QtIFW ${CPACK_IFW_FRAMEWORK_VERSION} version")
-  endif()
-endif()
-if(CPACK_IFW_INSTALLERBASE_EXECUTABLE AND NOT CPACK_IFW_FRAMEWORK_VERSION)
-  message(WARNING "Could not detect QtIFW tools version. Set used version to variable \"CPACK_IFW_FRAMEWORK_VERSION_FORCED\" manually.")
-endif()
-
-#=============================================================================
-# Macro definition
-#=============================================================================
-
-# Macro definition based on CPackComponent
-
-if(NOT CPackComponent_CMake_INCLUDED)
-    include(CPackComponent)
-endif()
-
-# Resolve full filename for script file
-macro(_cpack_ifw_resolve_script _variable)
-  set(_ifw_script_macro ${_variable})
-  set(_ifw_script_file ${${_ifw_script_macro}})
-  if(DEFINED ${_ifw_script_macro})
-    get_filename_component(${_ifw_script_macro} ${_ifw_script_file} ABSOLUTE)
-    set(_ifw_script_file ${${_ifw_script_macro}})
-    if(NOT EXISTS ${_ifw_script_file})
-      message(WARNING "CPack IFW: script file \"${_ifw_script_file}\" does not exist")
-      set(${_ifw_script_macro})
-    endif()
-  endif()
-endmacro()
-
-# Resolve full path to license file
-macro(_cpack_ifw_resolve_lisenses _variable)
-  if(${_variable})
-    set(_ifw_license_file FALSE)
-    set(_ifw_licenses_fix)
-    foreach(_ifw_licenses_arg ${${_variable}})
-      if(_ifw_license_file)
-        get_filename_component(_ifw_licenses_arg "${_ifw_licenses_arg}" ABSOLUTE)
-        set(_ifw_license_file FALSE)
-      else()
-        set(_ifw_license_file TRUE)
-      endif()
-      list(APPEND _ifw_licenses_fix "${_ifw_licenses_arg}")
-    endforeach(_ifw_licenses_arg)
-    set(${_variable} "${_ifw_licenses_fix}")
-  endif()
-endmacro()
-
-# Resolve full path to a list of provided files
-macro(_cpack_ifw_resolve_file_list _variable)
-  if(${_variable})
-    set(_ifw_list_fix)
-    foreach(_ifw_file_arg ${${_variable}})
-      get_filename_component(_ifw_file_arg "${_ifw_file_arg}" ABSOLUTE)
-      if(EXISTS ${_ifw_file_arg})
-        list(APPEND _ifw_list_fix "${_ifw_file_arg}")
-      else()
-        message(WARNING "CPack IFW: page file \"${_ifw_file_arg}\" does not exist. Skipping")
-      endif()
-    endforeach(_ifw_file_arg)
-    set(${_variable} "${_ifw_list_fix}")
-  endif()
-endmacro()
-
-# Macro for configure component
-macro(cpack_ifw_configure_component compname)
-
-  string(TOUPPER ${compname} _CPACK_IFWCOMP_UNAME)
-
-  set(_IFW_OPT COMMON ESSENTIAL VIRTUAL FORCED_INSTALLATION REQUIRES_ADMIN_RIGHTS)
-  set(_IFW_ARGS NAME VERSION RELEASE_DATE SCRIPT PRIORITY SORTING_PRIORITY UPDATE_TEXT DEFAULT CHECKABLE)
-  set(_IFW_MULTI_ARGS DISPLAY_NAME DESCRIPTION DEPENDS DEPENDENCIES AUTO_DEPEND_ON LICENSES USER_INTERFACES TRANSLATIONS REPLACES)
-  cmake_parse_arguments(CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME} "${_IFW_OPT}" "${_IFW_ARGS}" "${_IFW_MULTI_ARGS}" ${ARGN})
-
-  _cpack_ifw_resolve_script(CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_SCRIPT)
-  _cpack_ifw_resolve_lisenses(CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_LICENSES)
-  _cpack_ifw_resolve_file_list(CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_USER_INTERFACES)
-  _cpack_ifw_resolve_file_list(CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_TRANSLATIONS)
-
-  set(_CPACK_IFWCOMP_STR "\n# Configuration for IFW component \"${compname}\"\n")
-
-  foreach(_IFW_ARG_NAME ${_IFW_OPT})
-  cpack_append_option_set_command(
-    CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_${_IFW_ARG_NAME}
-    _CPACK_IFWCOMP_STR)
-  endforeach()
-
-  foreach(_IFW_ARG_NAME ${_IFW_ARGS})
-  cpack_append_string_variable_set_command(
-    CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_${_IFW_ARG_NAME}
-    _CPACK_IFWCOMP_STR)
-  endforeach()
-
-  foreach(_IFW_ARG_NAME ${_IFW_MULTI_ARGS})
-  cpack_append_list_variable_set_command(
-    CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_${_IFW_ARG_NAME}
-    _CPACK_IFWCOMP_STR)
-  endforeach()
-
-  if(CPack_CMake_INCLUDED)
-    file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_IFWCOMP_STR}")
-  endif()
-
-endmacro()
-
-# Macro for configure group
-macro(cpack_ifw_configure_component_group grpname)
-
-  string(TOUPPER ${grpname} _CPACK_IFWGRP_UNAME)
-
-  set(_IFW_OPT VIRTUAL FORCED_INSTALLATION REQUIRES_ADMIN_RIGHTS)
-  set(_IFW_ARGS NAME VERSION RELEASE_DATE SCRIPT PRIORITY SORTING_PRIORITY UPDATE_TEXT DEFAULT CHECKABLE)
-  set(_IFW_MULTI_ARGS DISPLAY_NAME DESCRIPTION DEPENDS DEPENDENCIES AUTO_DEPEND_ON LICENSES USER_INTERFACES TRANSLATIONS REPLACES)
-  cmake_parse_arguments(CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME} "${_IFW_OPT}" "${_IFW_ARGS}" "${_IFW_MULTI_ARGS}" ${ARGN})
-
-  _cpack_ifw_resolve_script(CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_SCRIPT)
-  _cpack_ifw_resolve_lisenses(CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_LICENSES)
-  _cpack_ifw_resolve_file_list(CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_USER_INTERFACES)
-  _cpack_ifw_resolve_file_list(CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_TRANSLATIONS)
-
-  set(_CPACK_IFWGRP_STR "\n# Configuration for IFW component group \"${grpname}\"\n")
-
-  foreach(_IFW_ARG_NAME ${_IFW_OPT})
-  cpack_append_option_set_command(
-    CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_${_IFW_ARG_NAME}
-    _CPACK_IFWGRP_STR)
-  endforeach()
-
-  foreach(_IFW_ARG_NAME ${_IFW_ARGS})
-  cpack_append_string_variable_set_command(
-    CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_${_IFW_ARG_NAME}
-    _CPACK_IFWGRP_STR)
-  endforeach()
-
-  foreach(_IFW_ARG_NAME ${_IFW_MULTI_ARGS})
-  cpack_append_list_variable_set_command(
-    CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_${_IFW_ARG_NAME}
-    _CPACK_IFWGRP_STR)
-  endforeach()
-
-  if(CPack_CMake_INCLUDED)
-    file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_IFWGRP_STR}")
-  endif()
-endmacro()
-
-# Macro for adding repository
-macro(cpack_ifw_add_repository reponame)
-
-  string(TOUPPER ${reponame} _CPACK_IFWREPO_UNAME)
-
-  set(_IFW_OPT DISABLED)
-  set(_IFW_ARGS URL USERNAME PASSWORD DISPLAY_NAME)
-  set(_IFW_MULTI_ARGS)
-  cmake_parse_arguments(CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME} "${_IFW_OPT}" "${_IFW_ARGS}" "${_IFW_MULTI_ARGS}" ${ARGN})
-
-  set(_CPACK_IFWREPO_STR "\n# Configuration for IFW repository \"${reponame}\"\n")
-
-  foreach(_IFW_ARG_NAME ${_IFW_OPT})
-  cpack_append_option_set_command(
-    CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME}
-    _CPACK_IFWREPO_STR)
-  endforeach()
-
-  foreach(_IFW_ARG_NAME ${_IFW_ARGS})
-  cpack_append_string_variable_set_command(
-    CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME}
-    _CPACK_IFWREPO_STR)
-  endforeach()
-
-  foreach(_IFW_ARG_NAME ${_IFW_MULTI_ARGS})
-  cpack_append_variable_set_command(
-    CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME}
-    _CPACK_IFWREPO_STR)
-  endforeach()
-
-  list(APPEND CPACK_IFW_REPOSITORIES_ALL ${reponame})
-  string(APPEND _CPACK_IFWREPO_STR "list(APPEND CPACK_IFW_REPOSITORIES_ALL ${reponame})\n")
-
-  if(CPack_CMake_INCLUDED)
-    file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_IFWREPO_STR}")
-  endif()
-
-endmacro()
-
-# Macro for updating repository
-macro(cpack_ifw_update_repository reponame)
-
-  string(TOUPPER ${reponame} _CPACK_IFWREPO_UNAME)
-
-  set(_IFW_OPT ADD REMOVE REPLACE DISABLED)
-  set(_IFW_ARGS URL OLD_URL NEW_URL USERNAME PASSWORD DISPLAY_NAME)
-  set(_IFW_MULTI_ARGS)
-  cmake_parse_arguments(CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME} "${_IFW_OPT}" "${_IFW_ARGS}" "${_IFW_MULTI_ARGS}" ${ARGN})
-
-  set(_CPACK_IFWREPO_STR "\n# Configuration for IFW repository \"${reponame}\" update\n")
-
-  foreach(_IFW_ARG_NAME ${_IFW_OPT})
-  cpack_append_option_set_command(
-    CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME}
-    _CPACK_IFWREPO_STR)
-  endforeach()
-
-  foreach(_IFW_ARG_NAME ${_IFW_ARGS})
-  cpack_append_string_variable_set_command(
-    CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME}
-    _CPACK_IFWREPO_STR)
-  endforeach()
-
-  foreach(_IFW_ARG_NAME ${_IFW_MULTI_ARGS})
-  cpack_append_variable_set_command(
-    CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME}
-    _CPACK_IFWREPO_STR)
-  endforeach()
-
-  if(CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_ADD
-    OR CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_REMOVE
-    OR CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_REPLACE)
-    list(APPEND CPACK_IFW_REPOSITORIES_ALL ${reponame})
-    string(APPEND _CPACK_IFWREPO_STR "list(APPEND CPACK_IFW_REPOSITORIES_ALL ${reponame})\n")
-  else()
-    set(_CPACK_IFWREPO_STR)
-  endif()
-
-  if(CPack_CMake_INCLUDED AND _CPACK_IFWREPO_STR)
-    file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_IFWREPO_STR}")
-  endif()
-
-endmacro()
-
-# Macro for adding resources
-macro(cpack_ifw_add_package_resources)
-  set(_CPACK_IFW_PACKAGE_RESOURCES ${ARGV})
-  _cpack_ifw_resolve_file_list(_CPACK_IFW_PACKAGE_RESOURCES)
-  list(APPEND CPACK_IFW_PACKAGE_RESOURCES ${_CPACK_IFW_PACKAGE_RESOURCES})
-  set(_CPACK_IFWQRC_STR "list(APPEND CPACK_IFW_PACKAGE_RESOURCES \"${_CPACK_IFW_PACKAGE_RESOURCES}\")\n")
-  if(CPack_CMake_INCLUDED)
-    file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_IFWQRC_STR}")
-  endif()
-endmacro()
-
-# Resolve package control script
-_cpack_ifw_resolve_script(CPACK_IFW_PACKAGE_CONTROL_SCRIPT)
-
-endif() # NOT CPackIFW_CMake_INCLUDED
diff --git a/share/cmake-3.18/Modules/CPackIFWConfigureFile.cmake b/share/cmake-3.18/Modules/CPackIFWConfigureFile.cmake
deleted file mode 100644
index 0abe0da..0000000
--- a/share/cmake-3.18/Modules/CPackIFWConfigureFile.cmake
+++ /dev/null
@@ -1,66 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CPackIFWConfigureFile
----------------------
-
-The module defines :command:`configure_file` similar command to
-configure file templates prepared in QtIFW/SDK/Creator style.
-
-
-Commands
-^^^^^^^^
-
-The module defines the following commands:
-
-.. command:: cpack_ifw_configure_file
-
-  Copy a file to another location and modify its contents.
-
-  ::
-
-    cpack_ifw_configure_file(<input> <output>)
-
-  Copies an ``<input>`` file to an ``<output>`` file and substitutes variable
-  values referenced as ``%{VAR}`` or ``%VAR%`` in the input file content.
-  Each variable reference will be replaced with the current value of the
-  variable, or the empty string if the variable is not defined.
-
-#]=======================================================================]
-
-# NOTE: This file used to himself packaging via CPack IFW generator and
-# should be compatible with minimal CMake version defined in
-# ../CMakeLists.txt file.
-
-if(NOT DEFINED CPackIFWConfigureFile_CMake_INCLUDED)
-set(CPackIFWConfigureFile_CMake_INCLUDED 1)
-
-macro(cpack_ifw_configure_file INPUT OUTPUT)
-  file(READ "${INPUT}" _tmp)
-  foreach(_tmp_regex "%{([^%}]+)}" "%([^%]+)%")
-    string(REGEX MATCHALL "${_tmp_regex}" _tmp_vars "${_tmp}")
-    while(_tmp_vars)
-      foreach(_tmp_var ${_tmp_vars})
-        string(REGEX REPLACE "${_tmp_regex}" "\\1"
-          _tmp_var_name "${_tmp_var}")
-        if(DEFINED ${_tmp_var_name})
-          set(_tmp_var_value "${${_tmp_var_name}}")
-        elseif(NOT "$ENV{${_tmp_var_name}}" STREQUAL "")
-          set(_tmp_var_value "$ENV{${_tmp_var_name}}")
-        else()
-          set(_tmp_var_value "")
-        endif()
-        string(REPLACE "${_tmp_var}" "${_tmp_var_value}" _tmp "${_tmp}")
-      endforeach()
-      string(REGEX MATCHALL "${_tmp_regex}" _tmp_vars "${_tmp}")
-    endwhile()
-  endforeach()
-  if(IS_ABSOLUTE "${OUTPUT}")
-    file(WRITE "${OUTPUT}" "${_tmp}")
-  else()
-    file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT}" "${_tmp}")
-  endif()
-endmacro()
-
-endif() # NOT DEFINED CPackIFWConfigureFile_CMake_INCLUDED
diff --git a/share/cmake-3.18/Modules/CSharpUtilities.cmake b/share/cmake-3.18/Modules/CSharpUtilities.cmake
deleted file mode 100644
index 6a4b5c7..0000000
--- a/share/cmake-3.18/Modules/CSharpUtilities.cmake
+++ /dev/null
@@ -1,311 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CSharpUtilities
----------------
-
-Functions to make configuration of CSharp/.NET targets easier.
-
-A collection of CMake utility functions useful for dealing with CSharp
-targets for Visual Studio generators from version 2010 and later.
-
-The following functions are provided by this module:
-
-**Main functions**
-
-- :command:`csharp_set_windows_forms_properties`
-- :command:`csharp_set_designer_cs_properties`
-- :command:`csharp_set_xaml_cs_properties`
-
-**Helper functions**
-
-- :command:`csharp_get_filename_keys`
-- :command:`csharp_get_filename_key_base`
-- :command:`csharp_get_dependentupon_name`
-
-Main functions provided by the module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. command:: csharp_set_windows_forms_properties
-
-  Sets source file properties for use of Windows Forms. Use this, if your CSharp
-  target uses Windows Forms::
-
-    csharp_set_windows_forms_properties([<file1> [<file2> [...]]])
-
-  ``<fileN>``
-    List of all source files which are relevant for setting the
-    :prop_sf:`VS_CSHARP_<tagname>` properties (including ``.cs``, ``.resx`` and
-    ``.Designer.cs`` extensions).
-
-  In the list of all given files for all files ending with ``.Designer.cs`` and
-  ``.resx`` is searched.  For every *designer* or *resource* file a file with the
-  same base name but only ``.cs`` as extension is searched.  If this is found, the
-  :prop_sf:`VS_CSHARP_<tagname>` properties are set as follows:
-
-  for the **.cs** file:
-   - VS_CSHARP_SubType "Form"
-
-  for the **.Designer.cs** file (if it exists):
-   - VS_CSHARP_DependentUpon <cs-filename>
-   - VS_CSHARP_DesignTime "" (delete tag if previously defined)
-   - VS_CSHARP_AutoGen ""(delete tag if previously defined)
-
-  for the **.resx** file (if it exists):
-   - VS_RESOURCE_GENERATOR "" (delete tag if previously defined)
-   - VS_CSHARP_DependentUpon <cs-filename>
-   - VS_CSHARP_SubType "Designer"
-
-.. command:: csharp_set_designer_cs_properties
-
-  Sets source file properties of ``.Designer.cs`` files depending on
-  sibling filenames. Use this, if your CSharp target does **not**
-  use Windows Forms (for Windows Forms use
-  :command:`csharp_set_designer_cs_properties` instead)::
-
-    csharp_set_designer_cs_properties([<file1> [<file2> [...]]])
-
-  ``<fileN>``
-    List of all source files which are relevant for setting the
-    :prop_sf:`VS_CSHARP_<tagname>` properties (including ``.cs``,
-    ``.resx``, ``.settings`` and ``.Designer.cs`` extensions).
-
-  In the list of all given files for all files ending with
-  ``.Designer.cs`` is searched. For every *designer* file all files
-  with the same base name but different extensions are searched. If
-  a match is found, the source file properties of the *designer* file
-  are set depending on the extension of the matched file:
-
-  if match is **.resx** file:
-   - VS_CSHARP_AutoGen "True"
-   - VS_CSHARP_DesignTime "True"
-   - VS_CSHARP_DependentUpon <resx-filename>
-
-  if match is **.cs** file:
-   - VS_CSHARP_DependentUpon <cs-filename>
-
-  if match is **.settings** file:
-   - VS_CSHARP_AutoGen "True"
-   - VS_CSHARP_DesignTimeSharedInput "True"
-   - VS_CSHARP_DependentUpon <settings-filename>
-
-.. note::
-
-    Because the source file properties of the ``.Designer.cs`` file are set according
-    to the found matches and every match sets the **VS_CSHARP_DependentUpon**
-    property, there should only be one match for each ``Designer.cs`` file.
-
-.. command:: csharp_set_xaml_cs_properties
-
-  Sets source file properties for use of Windows Presentation Foundation (WPF) and
-  XAML. Use this, if your CSharp target uses WPF/XAML::
-
-    csharp_set_xaml_cs_properties([<file1> [<file2> [...]]])
-
-  ``<fileN>``
-    List of all source files which are relevant for setting the
-    :prop_sf:`VS_CSHARP_<tagname>` properties (including ``.cs``,
-    ``.xaml``, and ``.xaml.cs`` extensions).
-
-  In the list of all given files for all files ending with
-  ``.xaml.cs`` is searched. For every *xaml-cs* file, a file
-  with the same base name but extension ``.xaml`` is searched.
-  If a match is found, the source file properties of the ``.xaml.cs``
-  file are set:
-
-   - VS_CSHARP_DependentUpon <xaml-filename>
-
-Helper functions which are used by the above ones
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. command:: csharp_get_filename_keys
-
-  Helper function which computes a list of key values to identify
-  source files independently of relative/absolute paths given in cmake
-  and eliminates case sensitivity::
-
-    csharp_get_filename_keys(OUT [<file1> [<file2> [...]]])
-
-  ``OUT``
-    Name of the variable in which the list of keys is stored
-
-  ``<fileN>``
-    filename(s) as given to to CSharp target using :command:`add_library`
-    or :command:`add_executable`
-
-  In some way the function applies a canonicalization to the source names.
-  This is necessary to find file matches if the files have been added to
-  the target with different directory prefixes:
-
-  .. code-block:: cmake
-
-    add_library(lib
-      myfile.cs
-      ${CMAKE_CURRENT_SOURCE_DIR}/myfile.Designer.cs)
-
-    set_source_files_properties(myfile.Designer.cs PROPERTIES
-      VS_CSHARP_DependentUpon myfile.cs)
-
-    # this will fail, because in cmake
-    #  - ${CMAKE_CURRENT_SOURCE_DIR}/myfile.Designer.cs
-    #  - myfile.Designer.cs
-    # are not the same source file. The source file property is not set.
-
-.. command:: csharp_get_filename_key_base
-
-  Returns the full filepath and name **without** extension of a key.
-  KEY is expected to be a key from csharp_get_filename_keys. In BASE
-  the value of KEY without the file extension is returned::
-
-    csharp_get_filename_key_base(BASE KEY)
-
-  ``BASE``
-    Name of the variable with the computed "base" of ``KEY``.
-
-  ``KEY``
-    The key of which the base will be computed. Expected to be a
-    upper case full filename.
-
-.. command:: csharp_get_dependentupon_name
-
-  Computes a string which can be used as value for the source file property
-  :prop_sf:`VS_CSHARP_<tagname>` with *target* being ``DependentUpon``::
-
-    csharp_get_dependentupon_name(NAME FILE)
-
-  ``NAME``
-    Name of the variable with the result value
-
-  ``FILE``
-    Filename to convert to ``<DependentUpon>`` value
-
-  Actually this is only the filename without any path given at the moment.
-
-#]=======================================================================]
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0057 NEW) # if IN_LIST
-
-function(csharp_get_filename_keys OUT)
-  set(${OUT} "")
-  foreach(f ${ARGN})
-    get_filename_component(f ${f} REALPATH)
-    string(TOUPPER ${f} f)
-    list(APPEND ${OUT} ${f})
-  endforeach()
-  set(${OUT} "${${OUT}}" PARENT_SCOPE)
-endfunction()
-
-function(csharp_get_filename_key_base base key)
-  get_filename_component(dir ${key} DIRECTORY)
-  get_filename_component(fil ${key} NAME_WE)
-  set(${base} "${dir}/${fil}" PARENT_SCOPE)
-endfunction()
-
-function(csharp_get_dependentupon_name out in)
-  get_filename_component(${out} ${in} NAME)
-  set(${out} ${${out}} PARENT_SCOPE)
-endfunction()
-
-function(csharp_set_windows_forms_properties)
-  csharp_get_filename_keys(fileKeys ${ARGN})
-  foreach(key ${fileKeys})
-    get_filename_component(ext ${key} EXT)
-    if(${ext} STREQUAL ".DESIGNER.CS" OR
-       ${ext} STREQUAL ".RESX")
-      csharp_get_filename_key_base(NAME_BASE ${key})
-      list(FIND fileKeys "${NAME_BASE}.CS" FILE_INDEX)
-      if(NOT ${FILE_INDEX} EQUAL -1)
-        list(GET ARGN ${FILE_INDEX} FILE_NAME)
-        # set properties of main form file
-        set_source_files_properties("${FILE_NAME}"
-          PROPERTIES
-          VS_CSHARP_SubType "Form")
-        csharp_get_dependentupon_name(LINK "${FILE_NAME}")
-        # set properties of designer file (if found)
-        list(FIND fileKeys "${NAME_BASE}.DESIGNER.CS" FILE_INDEX)
-        if(NOT ${FILE_INDEX} EQUAL -1)
-          list(GET ARGN ${FILE_INDEX} FILE_NAME)
-          set_source_files_properties("${FILE_NAME}"
-            PROPERTIES
-            VS_CSHARP_DependentUpon "${LINK}"
-            VS_CSHARP_DesignTime ""
-            VS_CSHARP_AutoGen "")
-        endif()
-        # set properties of corresponding resource file (if found)
-        list(FIND fileKeys "${NAME_BASE}.RESX" FILE_INDEX)
-        if(NOT ${FILE_INDEX} EQUAL -1)
-          list(GET ARGN ${FILE_INDEX} FILE_NAME)
-          set_source_files_properties("${FILE_NAME}"
-            PROPERTIES
-            VS_RESOURCE_GENERATOR ""
-            VS_CSHARP_DependentUpon "${LINK}"
-            VS_CSHARP_SubType "Designer")
-        endif()
-      endif()
-    endif()
-  endforeach()
-endfunction()
-
-function(csharp_set_designer_cs_properties)
-  csharp_get_filename_keys(fileKeys ${ARGN})
-  set(INDEX -1)
-  foreach(key ${fileKeys})
-    math(EXPR INDEX "${INDEX}+1")
-    list(GET ARGN ${INDEX} source)
-    get_filename_component(ext ${key} EXT)
-    if(${ext} STREQUAL ".DESIGNER.CS")
-      csharp_get_filename_key_base(NAME_BASE ${key})
-      if("${NAME_BASE}.RESX" IN_LIST fileKeys)
-        list(FIND fileKeys "${NAME_BASE}.RESX" FILE_INDEX)
-        list(GET ARGN ${FILE_INDEX} FILE_NAME)
-        csharp_get_dependentupon_name(LINK "${FILE_NAME}")
-        set_source_files_properties("${source}"
-          PROPERTIES
-          VS_CSHARP_AutoGen "True"
-          VS_CSHARP_DesignTime "True"
-          VS_CSHARP_DependentUpon "${LINK}")
-      elseif("${NAME_BASE}.CS" IN_LIST fileKeys)
-        list(FIND fileKeys "${NAME_BASE}.CS" FILE_INDEX)
-        list(GET ARGN ${FILE_INDEX} FILE_NAME)
-        csharp_get_dependentupon_name(LINK "${FILE_NAME}")
-        set_source_files_properties("${source}"
-          PROPERTIES
-          VS_CSHARP_DependentUpon "${LINK}")
-      elseif("${NAME_BASE}.SETTINGS" IN_LIST fileKeys)
-        list(FIND fileKeys "${NAME_BASE}.SETTINGS" FILE_INDEX)
-        list(GET ARGN ${FILE_INDEX} FILE_NAME)
-        csharp_get_dependentupon_name(LINK "${FILE_NAME}")
-        set_source_files_properties("${source}"
-          PROPERTIES
-          VS_CSHARP_AutoGen "True"
-          VS_CSHARP_DesignTimeSharedInput "True"
-          VS_CSHARP_DependentUpon "${LINK}")
-      endif()
-    endif()
-  endforeach()
-endfunction()
-
-function(csharp_set_xaml_cs_properties)
-  csharp_get_filename_keys(fileKeys ${ARGN})
-  set(INDEX -1)
-  foreach(key ${fileKeys})
-    math(EXPR INDEX "${INDEX}+1")
-    list(GET ARGN ${INDEX} source)
-    get_filename_component(ext ${key} EXT)
-    if(${ext} STREQUAL ".XAML.CS")
-      csharp_get_filename_key_base(NAME_BASE ${key})
-      if("${NAME_BASE}.XAML" IN_LIST fileKeys)
-        list(FIND fileKeys "${NAME_BASE}.XAML" FILE_INDEX)
-        list(GET ARGN ${FILE_INDEX} FILE_NAME)
-        csharp_get_dependentupon_name(LINK "${FILE_NAME}")
-        set_source_files_properties("${source}"
-          PROPERTIES
-          VS_CSHARP_DependentUpon "${LINK}")
-      endif()
-    endif()
-  endforeach()
-endfunction()
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/CTest.cmake b/share/cmake-3.18/Modules/CTest.cmake
deleted file mode 100644
index 8109108..0000000
--- a/share/cmake-3.18/Modules/CTest.cmake
+++ /dev/null
@@ -1,269 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CTest
------
-
-Configure a project for testing with CTest/CDash
-
-Include this module in the top CMakeLists.txt file of a project to
-enable testing with CTest and dashboard submissions to CDash::
-
-  project(MyProject)
-  ...
-  include(CTest)
-
-The module automatically creates a ``BUILD_TESTING`` option that selects
-whether to enable testing support (``ON`` by default).  After including
-the module, use code like::
-
-  if(BUILD_TESTING)
-    # ... CMake code to create tests ...
-  endif()
-
-to creating tests when testing is enabled.
-
-To enable submissions to a CDash server, create a ``CTestConfig.cmake``
-file at the top of the project with content such as::
-
-  set(CTEST_NIGHTLY_START_TIME "01:00:00 UTC")
-  set(CTEST_SUBMIT_URL "http://my.cdash.org/submit.php?project=MyProject")
-
-(the CDash server can provide the file to a project administrator who
-configures ``MyProject``).  Settings in the config file are shared by
-both this ``CTest`` module and the :manual:`ctest(1)` command-line
-:ref:`Dashboard Client` mode (``ctest -S``).
-
-While building a project for submission to CDash, CTest scans the
-build output for errors and warnings and reports them with surrounding
-context from the build log.  This generic approach works for all build
-tools, but does not give details about the command invocation that
-produced a given problem.  One may get more detailed reports by setting
-the :variable:`CTEST_USE_LAUNCHERS` variable::
-
-  set(CTEST_USE_LAUNCHERS 1)
-
-in the ``CTestConfig.cmake`` file.
-#]=======================================================================]
-
-option(BUILD_TESTING "Build the testing tree." ON)
-
-# function to turn generator name into a version string
-# like vs9 or vs10
-function(GET_VS_VERSION_STRING generator var)
-  string(REGEX REPLACE "Visual Studio ([0-9][0-9]?)($|.*)" "\\1"
-    NUMBER "${generator}")
-    set(ver_string "vs${NUMBER}")
-  set(${var} ${ver_string} PARENT_SCOPE)
-endfunction()
-
-include(CTestUseLaunchers)
-
-if(BUILD_TESTING)
-  # Setup some auxiliary macros
-  macro(SET_IF_NOT_SET var val)
-    if(NOT DEFINED "${var}")
-      set("${var}" "${val}")
-    endif()
-  endmacro()
-
-  macro(SET_IF_SET var val)
-    if(NOT "${val}" STREQUAL "")
-      set("${var}" "${val}")
-    endif()
-  endmacro()
-
-  macro(SET_IF_SET_AND_NOT_SET var val)
-    if(NOT "${val}" STREQUAL "")
-      SET_IF_NOT_SET("${var}" "${val}")
-    endif()
-  endmacro()
-
-  # Make sure testing is enabled
-  enable_testing()
-
-  if(EXISTS "${PROJECT_SOURCE_DIR}/CTestConfig.cmake")
-    include("${PROJECT_SOURCE_DIR}/CTestConfig.cmake")
-    SET_IF_SET_AND_NOT_SET(NIGHTLY_START_TIME "${CTEST_NIGHTLY_START_TIME}")
-    SET_IF_SET_AND_NOT_SET(SUBMIT_URL "${CTEST_SUBMIT_URL}")
-    SET_IF_SET_AND_NOT_SET(DROP_METHOD "${CTEST_DROP_METHOD}")
-    SET_IF_SET_AND_NOT_SET(DROP_SITE "${CTEST_DROP_SITE}")
-    SET_IF_SET_AND_NOT_SET(DROP_SITE_USER "${CTEST_DROP_SITE_USER}")
-    SET_IF_SET_AND_NOT_SET(DROP_SITE_PASSWORD "${CTEST_DROP_SITE_PASWORD}")
-    SET_IF_SET_AND_NOT_SET(DROP_SITE_MODE "${CTEST_DROP_SITE_MODE}")
-    SET_IF_SET_AND_NOT_SET(DROP_LOCATION "${CTEST_DROP_LOCATION}")
-    SET_IF_SET_AND_NOT_SET(TRIGGER_SITE "${CTEST_TRIGGER_SITE}")
-    SET_IF_SET_AND_NOT_SET(UPDATE_TYPE "${CTEST_UPDATE_TYPE}")
-  endif()
-
-  # the project can have a DartConfig.cmake file
-  if(EXISTS "${PROJECT_SOURCE_DIR}/DartConfig.cmake")
-    include("${PROJECT_SOURCE_DIR}/DartConfig.cmake")
-  else()
-    # Dashboard is opened for submissions for a 24 hour period starting at
-    # the specified NIGHTLY_START_TIME. Time is specified in 24 hour format.
-    SET_IF_NOT_SET (NIGHTLY_START_TIME "00:00:00 EDT")
-    SET_IF_NOT_SET(DROP_METHOD "http")
-    SET_IF_NOT_SET (COMPRESS_SUBMISSION ON)
-  endif()
-  SET_IF_NOT_SET (NIGHTLY_START_TIME "00:00:00 EDT")
-
-  if(NOT SUBMIT_URL)
-    set(SUBMIT_URL "${DROP_METHOD}://")
-    if(DROP_SITE_USER)
-      string(APPEND SUBMIT_URL "${DROP_SITE_USER}")
-      if(DROP_SITE_PASSWORD)
-        string(APPEND SUBMIT_URL ":${DROP_SITE_PASSWORD}")
-      endif()
-      string(APPEND SUBMIT_URL "@")
-    endif()
-    string(APPEND SUBMIT_URL "${DROP_SITE}${DROP_LOCATION}")
-  endif()
-
-  find_program(CVSCOMMAND cvs )
-  set(CVS_UPDATE_OPTIONS "-d -A -P" CACHE STRING
-    "Options passed to the cvs update command.")
-  find_program(SVNCOMMAND svn)
-  find_program(BZRCOMMAND bzr)
-  find_program(HGCOMMAND hg)
-  find_program(GITCOMMAND git)
-  find_program(P4COMMAND p4)
-
-  if(NOT UPDATE_TYPE)
-    if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CVS")
-      set(UPDATE_TYPE cvs)
-    elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.svn")
-      set(UPDATE_TYPE svn)
-    elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.bzr")
-      set(UPDATE_TYPE bzr)
-    elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.hg")
-      set(UPDATE_TYPE hg)
-    elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git")
-      set(UPDATE_TYPE git)
-    endif()
-  endif()
-
-  string(TOLOWER "${UPDATE_TYPE}" _update_type)
-  if("${_update_type}" STREQUAL "cvs")
-    set(UPDATE_COMMAND "${CVSCOMMAND}")
-    set(UPDATE_OPTIONS "${CVS_UPDATE_OPTIONS}")
-  elseif("${_update_type}" STREQUAL "svn")
-    set(UPDATE_COMMAND "${SVNCOMMAND}")
-    set(UPDATE_OPTIONS "${SVN_UPDATE_OPTIONS}")
-  elseif("${_update_type}" STREQUAL "bzr")
-    set(UPDATE_COMMAND "${BZRCOMMAND}")
-    set(UPDATE_OPTIONS "${BZR_UPDATE_OPTIONS}")
-  elseif("${_update_type}" STREQUAL "hg")
-    set(UPDATE_COMMAND "${HGCOMMAND}")
-    set(UPDATE_OPTIONS "${HG_UPDATE_OPTIONS}")
-  elseif("${_update_type}" STREQUAL "git")
-    set(UPDATE_COMMAND "${GITCOMMAND}")
-    set(UPDATE_OPTIONS "${GIT_UPDATE_OPTIONS}")
-  elseif("${_update_type}" STREQUAL "p4")
-    set(UPDATE_COMMAND "${P4COMMAND}")
-    set(UPDATE_OPTIONS "${P4_UPDATE_OPTIONS}")
-  endif()
-
-  set(DART_TESTING_TIMEOUT 1500 CACHE STRING
-    "Maximum time allowed before CTest will kill the test.")
-
-  set(CTEST_SUBMIT_RETRY_DELAY 5 CACHE STRING
-    "How long to wait between timed-out CTest submissions.")
-  set(CTEST_SUBMIT_RETRY_COUNT 3 CACHE STRING
-    "How many times to retry timed-out CTest submissions.")
-
-  find_program(MEMORYCHECK_COMMAND
-    NAMES purify valgrind boundscheck drmemory
-    PATHS
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Purify\\Setup;InstallFolder]"
-    DOC "Path to the memory checking command, used for memory error detection."
-    )
-  find_program(SLURM_SBATCH_COMMAND sbatch DOC
-    "Path to the SLURM sbatch executable"
-    )
-  find_program(SLURM_SRUN_COMMAND srun DOC
-    "Path to the SLURM srun executable"
-    )
-  set(MEMORYCHECK_SUPPRESSIONS_FILE "" CACHE FILEPATH
-    "File that contains suppressions for the memory checker")
-  find_program(COVERAGE_COMMAND gcov DOC
-    "Path to the coverage program that CTest uses for performing coverage inspection"
-    )
-  set(COVERAGE_EXTRA_FLAGS "-l" CACHE STRING
-    "Extra command line flags to pass to the coverage tool")
-
-  # set the site name
-  site_name(SITE)
-  # set the build name
-  if(NOT BUILDNAME)
-    set(DART_COMPILER "${CMAKE_CXX_COMPILER}")
-    if(NOT DART_COMPILER)
-      set(DART_COMPILER "${CMAKE_C_COMPILER}")
-    endif()
-    if(NOT DART_COMPILER)
-      set(DART_COMPILER "unknown")
-    endif()
-    if(WIN32)
-      set(DART_NAME_COMPONENT "NAME_WE")
-    else()
-      set(DART_NAME_COMPONENT "NAME")
-    endif()
-    if(NOT BUILD_NAME_SYSTEM_NAME)
-      set(BUILD_NAME_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}")
-    endif()
-    if(WIN32)
-      set(BUILD_NAME_SYSTEM_NAME "Win32")
-    endif()
-    if(UNIX OR BORLAND)
-      get_filename_component(DART_COMPILER_NAME
-        "${DART_COMPILER}" ${DART_NAME_COMPONENT})
-    else()
-      get_filename_component(DART_COMPILER_NAME
-        "${CMAKE_MAKE_PROGRAM}" ${DART_NAME_COMPONENT})
-    endif()
-    if(DART_COMPILER_NAME MATCHES "devenv")
-      GET_VS_VERSION_STRING("${CMAKE_GENERATOR}" DART_COMPILER_NAME)
-    endif()
-    set(BUILDNAME "${BUILD_NAME_SYSTEM_NAME}-${DART_COMPILER_NAME}")
-  endif()
-
-  # the build command
-  build_command(MAKECOMMAND_DEFAULT_VALUE
-    CONFIGURATION "\${CTEST_CONFIGURATION_TYPE}")
-  set(MAKECOMMAND ${MAKECOMMAND_DEFAULT_VALUE}
-    CACHE STRING "Command to build the project")
-
-  # the default build configuration the ctest build handler will use
-  # if there is no -C arg given to ctest:
-  set(DEFAULT_CTEST_CONFIGURATION_TYPE "$ENV{CMAKE_CONFIG_TYPE}")
-  if(DEFAULT_CTEST_CONFIGURATION_TYPE STREQUAL "")
-    set(DEFAULT_CTEST_CONFIGURATION_TYPE "Release")
-  endif()
-
-  mark_as_advanced(
-    BZRCOMMAND
-    COVERAGE_COMMAND
-    COVERAGE_EXTRA_FLAGS
-    CTEST_SUBMIT_RETRY_DELAY
-    CTEST_SUBMIT_RETRY_COUNT
-    CVSCOMMAND
-    CVS_UPDATE_OPTIONS
-    DART_TESTING_TIMEOUT
-    GITCOMMAND
-    P4COMMAND
-    HGCOMMAND
-    MAKECOMMAND
-    MEMORYCHECK_COMMAND
-    MEMORYCHECK_SUPPRESSIONS_FILE
-    SLURM_SBATCH_COMMAND
-    SLURM_SRUN_COMMAND
-    SITE
-    SVNCOMMAND
-    )
-  if(NOT RUN_FROM_DART)
-    set(RUN_FROM_CTEST_OR_DART 1)
-    include(CTestTargets)
-    set(RUN_FROM_CTEST_OR_DART)
-  endif()
-endif()
diff --git a/share/cmake-3.18/Modules/CTestCoverageCollectGCOV.cmake b/share/cmake-3.18/Modules/CTestCoverageCollectGCOV.cmake
deleted file mode 100644
index b1268be..0000000
--- a/share/cmake-3.18/Modules/CTestCoverageCollectGCOV.cmake
+++ /dev/null
@@ -1,339 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CTestCoverageCollectGCOV
-------------------------
-
-This module provides the ``ctest_coverage_collect_gcov`` function.
-
-This function runs gcov on all .gcda files found in the binary tree
-and packages the resulting .gcov files into a tar file.
-This tarball also contains the following:
-
-* *data.json* defines the source and build directories for use by CDash.
-* *Labels.json* indicates any :prop_sf:`LABELS` that have been set on the
-  source files.
-* The *uncovered* directory holds any uncovered files found by
-  :variable:`CTEST_EXTRA_COVERAGE_GLOB`.
-
-After generating this tar file, it can be sent to CDash for display with the
-:command:`ctest_submit(CDASH_UPLOAD)` command.
-
-.. command:: ctest_coverage_collect_gcov
-
-  ::
-
-    ctest_coverage_collect_gcov(TARBALL <tarfile>
-      [SOURCE <source_dir>][BUILD <build_dir>]
-      [GCOV_COMMAND <gcov_command>]
-      [GCOV_OPTIONS <options>...]
-      )
-
-  Run gcov and package a tar file for CDash.  The options are:
-
-  ``TARBALL <tarfile>``
-    Specify the location of the ``.tar`` file to be created for later
-    upload to CDash.  Relative paths will be interpreted with respect
-    to the top-level build directory.
-
-  ``TARBALL_COMPRESSION <option>`` Specify a compression algorithm for the
-    ``TARBALL`` data file.  Using this option reduces the size of the data file
-    before it is submitted to CDash.  ``<option>`` must be one of ``GZIP``,
-    ``BZIP2``, ``XZ``, ``ZSTD``, ``FROM_EXT``, or an expression that CMake
-    evaluates as ``FALSE``. The default value is ``BZIP2``.
-
-    If ``FROM_EXT`` is specified, the resulting file will be compressed based on
-    the file extension of the ``<tarfile>`` (i.e. ``.tar.gz`` will use ``GZIP``
-    compression). File extensions that will produce compressed output include
-    ``.tar.gz``, ``.tgz``, ``.tar.bzip2``, ``.tbz``, ``.tar.xz``, and ``.txz``.
-
-  ``SOURCE <source_dir>``
-    Specify the top-level source directory for the build.
-    Default is the value of :variable:`CTEST_SOURCE_DIRECTORY`.
-
-  ``BUILD <build_dir>``
-    Specify the top-level build directory for the build.
-    Default is the value of :variable:`CTEST_BINARY_DIRECTORY`.
-
-  ``GCOV_COMMAND <gcov_command>``
-    Specify the full path to the ``gcov`` command on the machine.
-    Default is the value of :variable:`CTEST_COVERAGE_COMMAND`.
-
-  ``GCOV_OPTIONS <options>...``
-    Specify options to be passed to gcov.  The ``gcov`` command
-    is run as ``gcov <options>... -o <gcov-dir> <file>.gcda``.
-    If not specified, the default option is just ``-b -x``.
-
-  ``GLOB``
-    Recursively search for .gcda files in build_dir rather than
-    determining search locations by reading TargetDirectories.txt.
-
-  ``DELETE``
-    Delete coverage files after they've been packaged into the .tar.
-
-  ``QUIET``
-    Suppress non-error messages that otherwise would have been
-    printed out by this function.
-#]=======================================================================]
-
-function(ctest_coverage_collect_gcov)
-  set(options QUIET GLOB DELETE)
-  set(oneValueArgs TARBALL SOURCE BUILD GCOV_COMMAND TARBALL_COMPRESSION)
-  set(multiValueArgs GCOV_OPTIONS)
-  cmake_parse_arguments(GCOV  "${options}" "${oneValueArgs}"
-    "${multiValueArgs}" "" ${ARGN} )
-  if(NOT DEFINED GCOV_TARBALL)
-    message(FATAL_ERROR
-      "TARBALL must be specified. for ctest_coverage_collect_gcov")
-  endif()
-  if(NOT DEFINED GCOV_SOURCE)
-    set(source_dir "${CTEST_SOURCE_DIRECTORY}")
-  else()
-    set(source_dir "${GCOV_SOURCE}")
-  endif()
-  if(NOT DEFINED GCOV_BUILD)
-    set(binary_dir "${CTEST_BINARY_DIRECTORY}")
-  else()
-    set(binary_dir "${GCOV_BUILD}")
-  endif()
-  if(NOT DEFINED GCOV_GCOV_COMMAND)
-    set(gcov_command "${CTEST_COVERAGE_COMMAND}")
-  else()
-    set(gcov_command "${GCOV_GCOV_COMMAND}")
-  endif()
-  if(NOT DEFINED GCOV_TARBALL_COMPRESSION)
-    set(GCOV_TARBALL_COMPRESSION "BZIP2")
-  elseif( GCOV_TARBALL_COMPRESSION AND
-      NOT GCOV_TARBALL_COMPRESSION MATCHES "^(GZIP|BZIP2|XZ|ZSTD|FROM_EXT)$")
-    message(FATAL_ERROR "TARBALL_COMPRESSION must be one of OFF, GZIP, "
-      "BZIP2, XZ, ZSTD, or FROM_EXT for ctest_coverage_collect_gcov")
-  endif()
-  # run gcov on each gcda file in the binary tree
-  set(gcda_files)
-  set(label_files)
-  if (GCOV_GLOB)
-      file(GLOB_RECURSE gfiles "${binary_dir}/*.gcda")
-      list(LENGTH gfiles len)
-      # if we have gcda files then also grab the labels file for that target
-      if(${len} GREATER 0)
-        file(GLOB_RECURSE lfiles RELATIVE ${binary_dir} "${binary_dir}/Labels.json")
-        list(APPEND gcda_files ${gfiles})
-        list(APPEND label_files ${lfiles})
-      endif()
-  else()
-    # look for gcda files in the target directories
-    # this will be faster and only look where the files will be
-    file(STRINGS "${binary_dir}/CMakeFiles/TargetDirectories.txt" target_dirs
-         ENCODING UTF-8)
-    foreach(target_dir ${target_dirs})
-      file(GLOB_RECURSE gfiles "${target_dir}/*.gcda")
-      list(LENGTH gfiles len)
-      # if we have gcda files then also grab the labels file for that target
-      if(${len} GREATER 0)
-        file(GLOB_RECURSE lfiles RELATIVE ${binary_dir}
-          "${target_dir}/Labels.json")
-        list(APPEND gcda_files ${gfiles})
-        list(APPEND label_files ${lfiles})
-      endif()
-    endforeach()
-  endif()
-  # return early if no coverage files were found
-  list(LENGTH gcda_files len)
-  if(len EQUAL 0)
-    if (NOT GCOV_QUIET)
-      message("ctest_coverage_collect_gcov: No .gcda files found, "
-        "ignoring coverage request.")
-    endif()
-    return()
-  endif()
-  # setup the dir for the coverage files
-  set(coverage_dir "${binary_dir}/Testing/CoverageInfo")
-  file(MAKE_DIRECTORY  "${coverage_dir}")
-  # run gcov, this will produce the .gcov files in the current
-  # working directory
-  if(NOT DEFINED GCOV_GCOV_OPTIONS)
-    set(GCOV_GCOV_OPTIONS -b -x)
-  endif()
-  if (GCOV_QUIET)
-    set(coverage_out_opts
-      OUTPUT_QUIET
-      ERROR_QUIET
-      )
-  else()
-    set(coverage_out_opts
-      OUTPUT_FILE "${coverage_dir}/gcov.log"
-      ERROR_FILE  "${coverage_dir}/gcov.log"
-      )
-  endif()
-  execute_process(COMMAND
-    ${gcov_command} ${GCOV_GCOV_OPTIONS} ${gcda_files}
-    RESULT_VARIABLE res
-    WORKING_DIRECTORY ${coverage_dir}
-    ${coverage_out_opts}
-    )
-
-  if (GCOV_DELETE)
-    file(REMOVE ${gcda_files})
-  endif()
-
-  if(NOT "${res}" EQUAL 0)
-    if (NOT GCOV_QUIET)
-      message(STATUS "Error running gcov: ${res}, see\n  ${coverage_dir}/gcov.log")
-    endif()
-  endif()
-  # create json file with project information
-  file(WRITE ${coverage_dir}/data.json
-    "{
-    \"Source\": \"${source_dir}\",
-    \"Binary\": \"${binary_dir}\"
-}")
-  # collect the gcov files
-  set(unfiltered_gcov_files)
-  file(GLOB_RECURSE unfiltered_gcov_files RELATIVE ${binary_dir} "${coverage_dir}/*.gcov")
-
-  # if CTEST_EXTRA_COVERAGE_GLOB was specified we search for files
-  # that might be uncovered
-  if (DEFINED CTEST_EXTRA_COVERAGE_GLOB)
-    set(uncovered_files)
-    foreach(search_entry IN LISTS CTEST_EXTRA_COVERAGE_GLOB)
-      if(NOT GCOV_QUIET)
-        message("Add coverage glob: ${search_entry}")
-      endif()
-      file(GLOB_RECURSE matching_files "${source_dir}/${search_entry}")
-      if (matching_files)
-        list(APPEND uncovered_files "${matching_files}")
-      endif()
-    endforeach()
-  endif()
-
-  set(gcov_files)
-  foreach(gcov_file ${unfiltered_gcov_files})
-    file(STRINGS ${binary_dir}/${gcov_file} first_line LIMIT_COUNT 1 ENCODING UTF-8)
-
-    set(is_excluded false)
-    if(first_line MATCHES "^        -:    0:Source:(.*)$")
-      set(source_file ${CMAKE_MATCH_1})
-    elseif(NOT GCOV_QUIET)
-      message(STATUS "Could not determine source file corresponding to: ${gcov_file}")
-    endif()
-
-    foreach(exclude_entry IN LISTS CTEST_CUSTOM_COVERAGE_EXCLUDE)
-      if(source_file MATCHES "${exclude_entry}")
-        set(is_excluded true)
-
-        if(NOT GCOV_QUIET)
-          message("Excluding coverage for: ${source_file} which matches ${exclude_entry}")
-        endif()
-
-        break()
-      endif()
-    endforeach()
-
-    get_filename_component(resolved_source_file "${source_file}" ABSOLUTE)
-    foreach(uncovered_file IN LISTS uncovered_files)
-      get_filename_component(resolved_uncovered_file "${uncovered_file}" ABSOLUTE)
-      if (resolved_uncovered_file STREQUAL resolved_source_file)
-        list(REMOVE_ITEM uncovered_files "${uncovered_file}")
-      endif()
-    endforeach()
-
-    if(NOT is_excluded)
-      list(APPEND gcov_files ${gcov_file})
-    endif()
-  endforeach()
-
-  foreach (uncovered_file ${uncovered_files})
-    # Check if this uncovered file should be excluded.
-    set(is_excluded false)
-    foreach(exclude_entry IN LISTS CTEST_CUSTOM_COVERAGE_EXCLUDE)
-      if(uncovered_file MATCHES "${exclude_entry}")
-        set(is_excluded true)
-        if(NOT GCOV_QUIET)
-          message("Excluding coverage for: ${uncovered_file} which matches ${exclude_entry}")
-        endif()
-        break()
-      endif()
-    endforeach()
-    if(is_excluded)
-      continue()
-    endif()
-
-    # Copy from source to binary dir, preserving any intermediate subdirectories.
-    get_filename_component(filename "${uncovered_file}" NAME)
-    get_filename_component(relative_path "${uncovered_file}" DIRECTORY)
-    string(REPLACE "${source_dir}" "" relative_path "${relative_path}")
-    if (relative_path)
-      # Strip leading slash.
-      string(SUBSTRING "${relative_path}" 1 -1 relative_path)
-    endif()
-    file(COPY ${uncovered_file} DESTINATION ${binary_dir}/uncovered/${relative_path})
-    if(relative_path)
-      list(APPEND uncovered_files_for_tar uncovered/${relative_path}/${filename})
-    else()
-      list(APPEND uncovered_files_for_tar uncovered/${filename})
-    endif()
-  endforeach()
-
-  # tar up the coverage info with the same date so that the md5
-  # sum will be the same for the tar file independent of file time
-  # stamps
-  string(REPLACE ";" "\n" gcov_files "${gcov_files}")
-  string(REPLACE ";" "\n" label_files "${label_files}")
-  string(REPLACE ";" "\n" uncovered_files_for_tar "${uncovered_files_for_tar}")
-  file(WRITE "${coverage_dir}/coverage_file_list.txt"
-    "${gcov_files}
-${coverage_dir}/data.json
-${label_files}
-${uncovered_files_for_tar}
-")
-
-  # Prepare tar command line arguments
-
-  set(tar_opts "")
-  # Select data compression mode
-  if( GCOV_TARBALL_COMPRESSION STREQUAL "FROM_EXT")
-    if( GCOV_TARBALL MATCHES [[\.(tgz|tar.gz)$]] )
-      string(APPEND tar_opts "z")
-    elseif( GCOV_TARBALL MATCHES [[\.(txz|tar.xz)$]] )
-      string(APPEND tar_opts "J")
-    elseif( GCOV_TARBALL MATCHES [[\.(tbz|tar.bz)$]] )
-      string(APPEND tar_opts "j")
-    endif()
-  elseif(GCOV_TARBALL_COMPRESSION STREQUAL "GZIP")
-    string(APPEND tar_opts "z")
-  elseif(GCOV_TARBALL_COMPRESSION STREQUAL "XZ")
-    string(APPEND tar_opts "J")
-  elseif(GCOV_TARBALL_COMPRESSION STREQUAL "BZIP2")
-    string(APPEND tar_opts "j")
-  elseif(GCOV_TARBALL_COMPRESSION STREQUAL "ZSTD")
-    set(zstd_tar_opt "--zstd")
-  endif()
-  # Verbosity options
-  if(NOT GCOV_QUIET AND NOT tar_opts MATCHES v)
-    string(APPEND tar_opts "v")
-  endif()
-  # Prepend option 'c' specifying 'create'
-  string(PREPEND tar_opts "c")
-  # Append option 'f' so that the next argument is the filename
-  string(APPEND tar_opts "f")
-
-  execute_process(COMMAND
-    ${CMAKE_COMMAND} -E tar ${tar_opts} ${GCOV_TARBALL} ${zstd_tar_opt}
-    "--mtime=1970-01-01 0:0:0 UTC"
-    "--format=gnutar"
-    --files-from=${coverage_dir}/coverage_file_list.txt
-    WORKING_DIRECTORY ${binary_dir})
-
-  if (GCOV_DELETE)
-    foreach(gcov_file ${unfiltered_gcov_files})
-      file(REMOVE ${binary_dir}/${gcov_file})
-    endforeach()
-    file(REMOVE ${coverage_dir}/coverage_file_list.txt)
-    file(REMOVE ${coverage_dir}/data.json)
-    if (EXISTS ${binary_dir}/uncovered)
-      file(REMOVE ${binary_dir}/uncovered)
-    endif()
-  endif()
-
-endfunction()
diff --git a/share/cmake-3.18/Modules/CTestUseLaunchers.cmake b/share/cmake-3.18/Modules/CTestUseLaunchers.cmake
deleted file mode 100644
index 3dff926..0000000
--- a/share/cmake-3.18/Modules/CTestUseLaunchers.cmake
+++ /dev/null
@@ -1,70 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CTestUseLaunchers
------------------
-
-Set the RULE_LAUNCH_* global properties when CTEST_USE_LAUNCHERS is on.
-
-CTestUseLaunchers is automatically included when you include(CTest).
-However, it is split out into its own module file so projects can use
-the CTEST_USE_LAUNCHERS functionality independently.
-
-To use launchers, set CTEST_USE_LAUNCHERS to ON in a ctest -S
-dashboard script, and then also set it in the cache of the configured
-project.  Both cmake and ctest need to know the value of it for the
-launchers to work properly.  CMake needs to know in order to generate
-proper build rules, and ctest, in order to produce the proper error
-and warning analysis.
-
-For convenience, you may set the ENV variable
-CTEST_USE_LAUNCHERS_DEFAULT in your ctest -S script, too.  Then, as
-long as your CMakeLists uses include(CTest) or
-include(CTestUseLaunchers), it will use the value of the ENV variable
-to initialize a CTEST_USE_LAUNCHERS cache variable.  This cache
-variable initialization only occurs if CTEST_USE_LAUNCHERS is not
-already defined. If CTEST_USE_LAUNCHERS is on in a ctest -S script
-the ctest_configure command will add -DCTEST_USE_LAUNCHERS:BOOL=TRUE
-to the cmake command used to configure the project.
-#]=======================================================================]
-
-if(NOT DEFINED CTEST_USE_LAUNCHERS AND DEFINED ENV{CTEST_USE_LAUNCHERS_DEFAULT})
-  set(CTEST_USE_LAUNCHERS "$ENV{CTEST_USE_LAUNCHERS_DEFAULT}"
-    CACHE INTERNAL "CTEST_USE_LAUNCHERS initial value from ENV")
-endif()
-
-if(NOT "${CMAKE_GENERATOR}" MATCHES "Make|Ninja")
-  set(CTEST_USE_LAUNCHERS 0)
-endif()
-
-if(CTEST_USE_LAUNCHERS)
-  set(__launch_common_options
-    "--target-name <TARGET_NAME> --build-dir <CMAKE_CURRENT_BINARY_DIR>")
-
-  set(__launch_compile_options
-    "${__launch_common_options} --output <OBJECT> --source <SOURCE> --language <LANGUAGE>")
-
-  set(__launch_link_options
-    "${__launch_common_options} --output <TARGET> --target-type <TARGET_TYPE> --language <LANGUAGE>")
-
-  set(__launch_custom_options
-    "${__launch_common_options} --output <OUTPUT>")
-
-  if("${CMAKE_GENERATOR}" MATCHES "Ninja")
-    string(APPEND __launch_compile_options " --filter-prefix <CMAKE_CL_SHOWINCLUDES_PREFIX>")
-  endif()
-
-  set(CTEST_LAUNCH_COMPILE
-    "\"${CMAKE_CTEST_COMMAND}\" --launch ${__launch_compile_options} --")
-
-  set(CTEST_LAUNCH_LINK
-    "\"${CMAKE_CTEST_COMMAND}\" --launch ${__launch_link_options} --")
-
-  set(CTEST_LAUNCH_CUSTOM
-    "\"${CMAKE_CTEST_COMMAND}\" --launch ${__launch_custom_options} --")
-
-  set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CTEST_LAUNCH_COMPILE}")
-  set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CTEST_LAUNCH_LINK}")
-  set_property(GLOBAL PROPERTY RULE_LAUNCH_CUSTOM "${CTEST_LAUNCH_CUSTOM}")
-endif()
diff --git a/share/cmake-3.18/Modules/CheckCCompilerFlag.cmake b/share/cmake-3.18/Modules/CheckCCompilerFlag.cmake
deleted file mode 100644
index 6d65313..0000000
--- a/share/cmake-3.18/Modules/CheckCCompilerFlag.cmake
+++ /dev/null
@@ -1,58 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckCCompilerFlag
-------------------
-
-Check whether the C compiler supports a given flag.
-
-.. command:: check_c_compiler_flag
-
-  .. code-block:: cmake
-
-    check_c_compiler_flag(<flag> <var>)
-
-  Check that the ``<flag>`` is accepted by the compiler without
-  a diagnostic.  Stores the result in an internal cache entry
-  named ``<var>``.
-
-This command temporarily sets the ``CMAKE_REQUIRED_DEFINITIONS`` variable
-and calls the ``check_c_source_compiles`` macro from the
-:module:`CheckCSourceCompiles` module.  See documentation of that
-module for a listing of variables that can otherwise modify the build.
-
-A positive result from this check indicates only that the compiler did not
-issue a diagnostic message when given the flag.  Whether the flag has any
-effect or even a specific one is beyond the scope of this module.
-
-.. note::
-  Since the :command:`try_compile` command forwards flags from variables
-  like :variable:`CMAKE_C_FLAGS <CMAKE_<LANG>_FLAGS>`, unknown flags
-  in such variables may cause a false negative for this check.
-#]=======================================================================]
-
-include_guard(GLOBAL)
-include(CheckCSourceCompiles)
-include(CMakeCheckCompilerFlagCommonPatterns)
-
-function(check_c_compiler_flag _flag _var)
-  set(CMAKE_REQUIRED_DEFINITIONS "${_flag}")
-
-  # Normalize locale during test compilation.
-  set(_locale_vars LC_ALL LC_MESSAGES LANG)
-  foreach(v IN LISTS _locale_vars)
-    set(_locale_vars_saved_${v} "$ENV{${v}}")
-    set(ENV{${v}} C)
-  endforeach()
-  check_compiler_flag_common_patterns(_common_patterns)
-  check_c_source_compiles("int main(void) { return 0; }" ${_var}
-    # Some compilers do not fail with a bad flag
-    FAIL_REGEX "command line option .* is valid for .* but not for C" # GNU
-    ${_common_patterns}
-    )
-  foreach(v IN LISTS _locale_vars)
-    set(ENV{${v}} ${_locale_vars_saved_${v}})
-  endforeach()
-  set(${_var} "${${_var}}" PARENT_SCOPE)
-endfunction()
diff --git a/share/cmake-3.18/Modules/CheckCSourceCompiles.cmake b/share/cmake-3.18/Modules/CheckCSourceCompiles.cmake
deleted file mode 100644
index 67fc993..0000000
--- a/share/cmake-3.18/Modules/CheckCSourceCompiles.cmake
+++ /dev/null
@@ -1,145 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckCSourceCompiles
---------------------
-
-Check if given C source compiles and links into an executable.
-
-.. command:: check_c_source_compiles
-
-  .. code-block:: cmake
-
-    check_c_source_compiles(<code> <resultVar>
-                            [FAIL_REGEX <regex1> [<regex2>...]])
-
-  Check that the source supplied in ``<code>`` can be compiled as a C source
-  file and linked as an executable (so it must contain at least a ``main()``
-  function). The result will be stored in the internal cache variable specified
-  by ``<resultVar>``, with a boolean true value for success and boolean false
-  for failure. If ``FAIL_REGEX`` is provided, then failure is determined by
-  checking if anything in the output matches any of the specified regular
-  expressions.
-
-  The underlying check is performed by the :command:`try_compile` command. The
-  compile and link commands can be influenced by setting any of the following
-  variables prior to calling ``check_c_source_compiles()``:
-
-  ``CMAKE_REQUIRED_FLAGS``
-    Additional flags to pass to the compiler. Note that the contents of
-    :variable:`CMAKE_C_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
-    configuration-specific variable are automatically added to the compiler
-    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
-
-  ``CMAKE_REQUIRED_DEFINITIONS``
-    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
-    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
-    ``<resultVar>`` will also be added automatically.
-
-  ``CMAKE_REQUIRED_INCLUDES``
-    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
-    the compiler. These will be the only header search paths used by
-    ``try_compile()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
-    directory property will be ignored.
-
-  ``CMAKE_REQUIRED_LINK_OPTIONS``
-    A :ref:`;-list <CMake Language Lists>` of options to add to the link
-    command (see :command:`try_compile` for further details).
-
-  ``CMAKE_REQUIRED_LIBRARIES``
-    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-    command. These can be the name of system libraries or they can be
-    :ref:`Imported Targets <Imported Targets>` (see :command:`try_compile` for
-    further details).
-
-  ``CMAKE_REQUIRED_QUIET``
-    If this variable evaluates to a boolean true value, all status messages
-    associated with the check will be suppressed.
-
-  The check is only performed once, with the result cached in the variable
-  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
-  value rather than performing the check again, even if the ``<code>`` changes.
-  In order to force the check to be re-evaluated, the variable named by
-  ``<resultVar>`` must be manually removed from the cache.
-
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_C_SOURCE_COMPILES SOURCE VAR)
-  if(NOT DEFINED "${VAR}")
-    set(_FAIL_REGEX)
-    set(_key)
-    foreach(arg ${ARGN})
-      if("${arg}" MATCHES "^(FAIL_REGEX)$")
-        set(_key "${arg}")
-      elseif(_key)
-        list(APPEND _${_key} "${arg}")
-      else()
-        message(FATAL_ERROR "Unknown argument:\n  ${arg}\n")
-      endif()
-    endforeach()
-    set(MACRO_CHECK_FUNCTION_DEFINITIONS
-      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(CHECK_C_SOURCE_COMPILES_ADD_LINK_OPTIONS
-        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    else()
-      set(CHECK_C_SOURCE_COMPILES_ADD_LINK_OPTIONS)
-    endif()
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES
-        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-    else()
-      set(CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES)
-    endif()
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES)
-    endif()
-    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c"
-      "${SOURCE}\n")
-
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Performing Test ${VAR}")
-    endif()
-    try_compile(${VAR}
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${CHECK_C_SOURCE_COMPILES_ADD_LINK_OPTIONS}
-      ${CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
-      "${CHECK_C_SOURCE_COMPILES_ADD_INCLUDES}"
-      OUTPUT_VARIABLE OUTPUT)
-
-    foreach(_regex ${_FAIL_REGEX})
-      if("${OUTPUT}" MATCHES "${_regex}")
-        set(${VAR} 0)
-      endif()
-    endforeach()
-
-    if(${VAR})
-      set(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "Success")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing C SOURCE FILE Test ${VAR} succeeded with the following output:\n"
-        "${OUTPUT}\n"
-        "Source file was:\n${SOURCE}\n")
-    else()
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "Failed")
-      endif()
-      set(${VAR} "" CACHE INTERNAL "Test ${VAR}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Performing C SOURCE FILE Test ${VAR} failed with the following output:\n"
-        "${OUTPUT}\n"
-        "Source file was:\n${SOURCE}\n")
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckCSourceRuns.cmake b/share/cmake-3.18/Modules/CheckCSourceRuns.cmake
deleted file mode 100644
index 7d116db..0000000
--- a/share/cmake-3.18/Modules/CheckCSourceRuns.cmake
+++ /dev/null
@@ -1,145 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckCSourceRuns
-----------------
-
-Check if given C source compiles and links into an executable and can
-subsequently be run.
-
-.. command:: check_c_source_runs
-
-  .. code-block:: cmake
-
-    check_c_source_runs(<code> <resultVar>)
-
-  Check that the source supplied in ``<code>`` can be compiled as a C source
-  file, linked as an executable and then run. The ``<code>`` must contain at
-  least a ``main()`` function. If the ``<code>`` could be built and run
-  successfully, the internal cache variable specified by ``<resultVar>`` will
-  be set to 1, otherwise it will be set to an value that evaluates to boolean
-  false (e.g. an empty string or an error message).
-
-  The underlying check is performed by the :command:`try_run` command. The
-  compile and link commands can be influenced by setting any of the following
-  variables prior to calling ``check_c_source_runs()``:
-
-  ``CMAKE_REQUIRED_FLAGS``
-    Additional flags to pass to the compiler. Note that the contents of
-    :variable:`CMAKE_C_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
-    configuration-specific variable are automatically added to the compiler
-    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
-
-  ``CMAKE_REQUIRED_DEFINITIONS``
-    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
-    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
-    ``<resultVar>`` will also be added automatically.
-
-  ``CMAKE_REQUIRED_INCLUDES``
-    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
-    the compiler. These will be the only header search paths used by
-    ``try_run()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
-    directory property will be ignored.
-
-  ``CMAKE_REQUIRED_LINK_OPTIONS``
-    A :ref:`;-list <CMake Language Lists>` of options to add to the link
-    command (see :command:`try_run` for further details).
-
-  ``CMAKE_REQUIRED_LIBRARIES``
-    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-    command. These can be the name of system libraries or they can be
-    :ref:`Imported Targets <Imported Targets>` (see :command:`try_run` for
-    further details).
-
-  ``CMAKE_REQUIRED_QUIET``
-    If this variable evaluates to a boolean true value, all status messages
-    associated with the check will be suppressed.
-
-  The check is only performed once, with the result cached in the variable
-  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
-  value rather than performing the check again, even if the ``<code>`` changes.
-  In order to force the check to be re-evaluated, the variable named by
-  ``<resultVar>`` must be manually removed from the cache.
-
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_C_SOURCE_RUNS SOURCE VAR)
-  if(NOT DEFINED "${VAR}")
-    set(MACRO_CHECK_FUNCTION_DEFINITIONS
-      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(CHECK_C_SOURCE_COMPILES_ADD_LINK_OPTIONS
-        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    else()
-      set(CHECK_C_SOURCE_COMPILES_ADD_LINK_OPTIONS)
-    endif()
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES
-        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-    else()
-      set(CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES)
-    endif()
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES)
-    endif()
-    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c"
-      "${SOURCE}\n")
-
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Performing Test ${VAR}")
-    endif()
-    try_run(${VAR}_EXITCODE ${VAR}_COMPILED
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${CHECK_C_SOURCE_COMPILES_ADD_LINK_OPTIONS}
-      ${CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
-      -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
-      "${CHECK_C_SOURCE_COMPILES_ADD_INCLUDES}"
-      COMPILE_OUTPUT_VARIABLE OUTPUT
-      RUN_OUTPUT_VARIABLE RUN_OUTPUT)
-    # if it did not compile make the return value fail code of 1
-    if(NOT ${VAR}_COMPILED)
-      set(${VAR}_EXITCODE 1)
-    endif()
-    # if the return value was 0 then it worked
-    if("${${VAR}_EXITCODE}" EQUAL 0)
-      set(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "Success")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing C SOURCE FILE Test ${VAR} succeeded with the following compile output:\n"
-        "${OUTPUT}\n"
-        "...and run output:\n"
-        "${RUN_OUTPUT}\n"
-        "Return value: ${${VAR}}\n"
-        "Source file was:\n${SOURCE}\n")
-    else()
-      if(CMAKE_CROSSCOMPILING AND "${${VAR}_EXITCODE}" MATCHES  "FAILED_TO_RUN")
-        set(${VAR} "${${VAR}_EXITCODE}")
-      else()
-        set(${VAR} "" CACHE INTERNAL "Test ${VAR}")
-      endif()
-
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "Failed")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Performing C SOURCE FILE Test ${VAR} failed with the following compile output:\n"
-        "${OUTPUT}\n"
-        "...and run output:\n"
-        "${RUN_OUTPUT}\n"
-        "Return value: ${${VAR}_EXITCODE}\n"
-        "Source file was:\n${SOURCE}\n")
-
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckCXXCompilerFlag.cmake b/share/cmake-3.18/Modules/CheckCXXCompilerFlag.cmake
deleted file mode 100644
index 5e07c25..0000000
--- a/share/cmake-3.18/Modules/CheckCXXCompilerFlag.cmake
+++ /dev/null
@@ -1,58 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckCXXCompilerFlag
-------------------------
-
-Check whether the CXX compiler supports a given flag.
-
-.. command:: check_cxx_compiler_flag
-
-  .. code-block:: cmake
-
-    check_cxx_compiler_flag(<flag> <var>)
-
-  Check that the ``<flag>`` is accepted by the compiler without
-  a diagnostic.  Stores the result in an internal cache entry
-  named ``<var>``.
-
-This command temporarily sets the ``CMAKE_REQUIRED_DEFINITIONS`` variable
-and calls the ``check_cxx_source_compiles`` macro from the
-:module:`CheckCXXSourceCompiles` module.  See documentation of that
-module for a listing of variables that can otherwise modify the build.
-
-A positive result from this check indicates only that the compiler did not
-issue a diagnostic message when given the flag.  Whether the flag has any
-effect or even a specific one is beyond the scope of this module.
-
-.. note::
-  Since the :command:`try_compile` command forwards flags from variables
-  like :variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>`, unknown flags
-  in such variables may cause a false negative for this check.
-#]=======================================================================]
-
-include_guard(GLOBAL)
-include(CheckCXXSourceCompiles)
-include(CMakeCheckCompilerFlagCommonPatterns)
-
-function(check_cxx_compiler_flag _flag _var)
-  set(CMAKE_REQUIRED_DEFINITIONS "${_flag}")
-
-  # Normalize locale during test compilation.
-  set(_locale_vars LC_ALL LC_MESSAGES LANG)
-  foreach(v IN LISTS _locale_vars)
-    set(_locale_vars_saved_${v} "$ENV{${v}}")
-    set(ENV{${v}} C)
-  endforeach()
-  check_compiler_flag_common_patterns(_common_patterns)
-  check_cxx_source_compiles("int main() { return 0; }" ${_var}
-    # Some compilers do not fail with a bad flag
-    FAIL_REGEX "command line option .* is valid for .* but not for C\\\\+\\\\+" # GNU
-    ${_common_patterns}
-    )
-  foreach(v IN LISTS _locale_vars)
-    set(ENV{${v}} ${_locale_vars_saved_${v}})
-  endforeach()
-  set(${_var} "${${_var}}" PARENT_SCOPE)
-endfunction()
diff --git a/share/cmake-3.18/Modules/CheckCXXSourceCompiles.cmake b/share/cmake-3.18/Modules/CheckCXXSourceCompiles.cmake
deleted file mode 100644
index c693d32..0000000
--- a/share/cmake-3.18/Modules/CheckCXXSourceCompiles.cmake
+++ /dev/null
@@ -1,146 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckCXXSourceCompiles
-----------------------
-
-Check if given C++ source compiles and links into an executable.
-
-.. command:: check_cxx_source_compiles
-
-  .. code-block:: cmake
-
-    check_cxx_source_compiles(<code> <resultVar>
-                              [FAIL_REGEX <regex1> [<regex2>...]])
-
-  Check that the source supplied in ``<code>`` can be compiled as a C++ source
-  file and linked as an executable (so it must contain at least a ``main()``
-  function). The result will be stored in the internal cache variable specified
-  by ``<resultVar>``, with a boolean true value for success and boolean false
-  for failure. If ``FAIL_REGEX`` is provided, then failure is determined by
-  checking if anything in the output matches any of the specified regular
-  expressions.
-
-  The underlying check is performed by the :command:`try_compile` command. The
-  compile and link commands can be influenced by setting any of the following
-  variables prior to calling ``check_cxx_source_compiles()``:
-
-  ``CMAKE_REQUIRED_FLAGS``
-    Additional flags to pass to the compiler. Note that the contents of
-    :variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
-    configuration-specific variable are automatically added to the compiler
-    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
-
-  ``CMAKE_REQUIRED_DEFINITIONS``
-    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
-    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
-    ``<resultVar>`` will also be added automatically.
-
-  ``CMAKE_REQUIRED_INCLUDES``
-    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
-    the compiler. These will be the only header search paths used by
-    ``try_compile()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
-    directory property will be ignored.
-
-  ``CMAKE_REQUIRED_LINK_OPTIONS``
-    A :ref:`;-list <CMake Language Lists>` of options to add to the link
-    command (see :command:`try_compile` for further details).
-
-  ``CMAKE_REQUIRED_LIBRARIES``
-    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-    command. These can be the name of system libraries or they can be
-    :ref:`Imported Targets <Imported Targets>` (see :command:`try_compile` for
-    further details).
-
-  ``CMAKE_REQUIRED_QUIET``
-    If this variable evaluates to a boolean true value, all status messages
-    associated with the check will be suppressed.
-
-  The check is only performed once, with the result cached in the variable
-  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
-  value rather than performing the check again, even if the ``<code>`` changes.
-  In order to force the check to be re-evaluated, the variable named by
-  ``<resultVar>`` must be manually removed from the cache.
-
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_CXX_SOURCE_COMPILES SOURCE VAR)
-  if(NOT DEFINED "${VAR}")
-    set(_FAIL_REGEX)
-    set(_key)
-    foreach(arg ${ARGN})
-      if("${arg}" MATCHES "^(FAIL_REGEX)$")
-        set(_key "${arg}")
-      elseif(_key)
-        list(APPEND _${_key} "${arg}")
-      else()
-        message(FATAL_ERROR "Unknown argument:\n  ${arg}\n")
-      endif()
-    endforeach()
-
-    set(MACRO_CHECK_FUNCTION_DEFINITIONS
-      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(CHECK_CXX_SOURCE_COMPILES_ADD_LINK_OPTIONS
-        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    else()
-      set(CHECK_CXX_SOURCE_COMPILES_ADD_LINK_OPTIONS)
-    endif()
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES
-        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-    else()
-      set(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES)
-    endif()
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES)
-    endif()
-    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cxx"
-      "${SOURCE}\n")
-
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Performing Test ${VAR}")
-    endif()
-    try_compile(${VAR}
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cxx
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${CHECK_CXX_SOURCE_COMPILES_ADD_LINK_OPTIONS}
-      ${CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
-      "${CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES}"
-      OUTPUT_VARIABLE OUTPUT)
-
-    foreach(_regex ${_FAIL_REGEX})
-      if("${OUTPUT}" MATCHES "${_regex}")
-        set(${VAR} 0)
-      endif()
-    endforeach()
-
-    if(${VAR})
-      set(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "Success")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing C++ SOURCE FILE Test ${VAR} succeeded with the following output:\n"
-        "${OUTPUT}\n"
-        "Source file was:\n${SOURCE}\n")
-    else()
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "Failed")
-      endif()
-      set(${VAR} "" CACHE INTERNAL "Test ${VAR}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Performing C++ SOURCE FILE Test ${VAR} failed with the following output:\n"
-        "${OUTPUT}\n"
-        "Source file was:\n${SOURCE}\n")
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckCXXSourceRuns.cmake b/share/cmake-3.18/Modules/CheckCXXSourceRuns.cmake
deleted file mode 100644
index 408e183..0000000
--- a/share/cmake-3.18/Modules/CheckCXXSourceRuns.cmake
+++ /dev/null
@@ -1,145 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckCXXSourceRuns
-------------------
-
-Check if given C++ source compiles and links into an executable and can
-subsequently be run.
-
-.. command:: check_cxx_source_runs
-
-  .. code-block:: cmake
-
-    check_cxx_source_runs(<code> <resultVar>)
-
-  Check that the source supplied in ``<code>`` can be compiled as a C++ source
-  file, linked as an executable and then run. The ``<code>`` must contain at
-  least a ``main()`` function. If the ``<code>`` could be built and run
-  successfully, the internal cache variable specified by ``<resultVar>`` will
-  be set to 1, otherwise it will be set to an value that evaluates to boolean
-  false (e.g. an empty string or an error message).
-
-  The underlying check is performed by the :command:`try_run` command. The
-  compile and link commands can be influenced by setting any of the following
-  variables prior to calling ``check_cxx_source_runs()``:
-
-  ``CMAKE_REQUIRED_FLAGS``
-    Additional flags to pass to the compiler. Note that the contents of
-    :variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
-    configuration-specific variable are automatically added to the compiler
-    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
-
-  ``CMAKE_REQUIRED_DEFINITIONS``
-    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
-    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
-    ``<resultVar>`` will also be added automatically.
-
-  ``CMAKE_REQUIRED_INCLUDES``
-    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
-    the compiler. These will be the only header search paths used by
-    ``try_run()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
-    directory property will be ignored.
-
-  ``CMAKE_REQUIRED_LINK_OPTIONS``
-    A :ref:`;-list <CMake Language Lists>` of options to add to the link
-    command (see :command:`try_run` for further details).
-
-  ``CMAKE_REQUIRED_LIBRARIES``
-    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-    command. These can be the name of system libraries or they can be
-    :ref:`Imported Targets <Imported Targets>` (see :command:`try_run` for
-    further details).
-
-  ``CMAKE_REQUIRED_QUIET``
-    If this variable evaluates to a boolean true value, all status messages
-    associated with the check will be suppressed.
-
-  The check is only performed once, with the result cached in the variable
-  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
-  value rather than performing the check again, even if the ``<code>`` changes.
-  In order to force the check to be re-evaluated, the variable named by
-  ``<resultVar>`` must be manually removed from the cache.
-
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_CXX_SOURCE_RUNS SOURCE VAR)
-  if(NOT DEFINED "${VAR}")
-    set(MACRO_CHECK_FUNCTION_DEFINITIONS
-      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(CHECK_CXX_SOURCE_COMPILES_ADD_LINK_OPTIONS
-        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    else()
-      set(CHECK_CXX_SOURCE_COMPILES_ADD_LINK_OPTIONS)
-    endif()
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES
-        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-    else()
-      set(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES)
-    endif()
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES)
-    endif()
-    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cxx"
-      "${SOURCE}\n")
-
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Performing Test ${VAR}")
-    endif()
-    try_run(${VAR}_EXITCODE ${VAR}_COMPILED
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cxx
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${CHECK_CXX_SOURCE_COMPILES_ADD_LINK_OPTIONS}
-      ${CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
-      -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
-      "${CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES}"
-      COMPILE_OUTPUT_VARIABLE OUTPUT
-      RUN_OUTPUT_VARIABLE RUN_OUTPUT)
-
-    # if it did not compile make the return value fail code of 1
-    if(NOT ${VAR}_COMPILED)
-      set(${VAR}_EXITCODE 1)
-    endif()
-    # if the return value was 0 then it worked
-    if("${${VAR}_EXITCODE}" EQUAL 0)
-      set(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "Success")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing C++ SOURCE FILE Test ${VAR} succeeded with the following output:\n"
-        "${OUTPUT}\n"
-        "...and run output:\n"
-        "${RUN_OUTPUT}\n"
-        "Return value: ${${VAR}}\n"
-        "Source file was:\n${SOURCE}\n")
-    else()
-      if(CMAKE_CROSSCOMPILING AND "${${VAR}_EXITCODE}" MATCHES  "FAILED_TO_RUN")
-        set(${VAR} "${${VAR}_EXITCODE}")
-      else()
-        set(${VAR} "" CACHE INTERNAL "Test ${VAR}")
-      endif()
-
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "Failed")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Performing C++ SOURCE FILE Test ${VAR} failed with the following output:\n"
-        "${OUTPUT}\n"
-        "...and run output:\n"
-        "${RUN_OUTPUT}\n"
-        "Return value: ${${VAR}_EXITCODE}\n"
-        "Source file was:\n${SOURCE}\n")
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckCXXSymbolExists.cmake b/share/cmake-3.18/Modules/CheckCXXSymbolExists.cmake
deleted file mode 100644
index 5c9079d..0000000
--- a/share/cmake-3.18/Modules/CheckCXXSymbolExists.cmake
+++ /dev/null
@@ -1,76 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckCXXSymbolExists
---------------------
-
-Check if a symbol exists as a function, variable, or macro in ``C++``.
-
-.. command:: check_cxx_symbol_exists
-
-  .. code-block:: cmake
-
-    check_cxx_symbol_exists(<symbol> <files> <variable>)
-
-  Check that the ``<symbol>`` is available after including given header
-  ``<files>`` and store the result in a ``<variable>``.  Specify the list of
-  files in one argument as a semicolon-separated list.
-  ``check_cxx_symbol_exists()`` can be used to check for symbols as seen by
-  the C++ compiler, as opposed to :command:`check_symbol_exists`, which always
-  uses the ``C`` compiler.
-
-  If the header files define the symbol as a macro it is considered
-  available and assumed to work.  If the header files declare the symbol
-  as a function or variable then the symbol must also be available for
-  linking.  If the symbol is a type, enum value, or C++ template it will
-  not be recognized: consider using the :module:`CheckTypeSize`
-  or :module:`CheckCXXSourceCompiles` module instead.
-
-.. note::
-
-  This command is unreliable when ``<symbol>`` is (potentially) an overloaded
-  function. Since there is no reliable way to predict whether a given function
-  in the system environment may be defined as an overloaded function or may be
-  an overloaded function on other systems or will become so in the future, it
-  is generally advised to use the :module:`CheckCXXSourceCompiles` module for
-  checking any function symbol (unless somehow you surely know the checked
-  function is not overloaded on other systems or will not be so in the
-  future).
-
-The following variables may be set before calling this macro to modify
-the way the check is run:
-
-``CMAKE_REQUIRED_FLAGS``
-  string of compile command line flags.
-``CMAKE_REQUIRED_DEFINITIONS``
-  a :ref:`;-list <CMake Language Lists>` of macros to define (-DFOO=bar).
-``CMAKE_REQUIRED_INCLUDES``
-  a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
-  the compiler.
-``CMAKE_REQUIRED_LINK_OPTIONS``
-  a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
-``CMAKE_REQUIRED_LIBRARIES``
-  a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-  command. See policy :policy:`CMP0075`.
-``CMAKE_REQUIRED_QUIET``
-  execute quietly without messages.
-
-For example:
-
-.. code-block:: cmake
-
-  include(CheckCXXSymbolExists)
-
-  # Check for macro SEEK_SET
-  check_cxx_symbol_exists(SEEK_SET "cstdio" HAVE_SEEK_SET)
-  # Check for function std::fopen
-  check_cxx_symbol_exists(std::fopen "cstdio" HAVE_STD_FOPEN)
-#]=======================================================================]
-
-include_guard(GLOBAL)
-include(CheckSymbolExists)
-
-macro(CHECK_CXX_SYMBOL_EXISTS SYMBOL FILES VARIABLE)
-  __CHECK_SYMBOL_EXISTS_IMPL("${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.cxx" "${SYMBOL}" "${FILES}" "${VARIABLE}" )
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckFortranCompilerFlag.cmake b/share/cmake-3.18/Modules/CheckFortranCompilerFlag.cmake
deleted file mode 100644
index 299cd8c..0000000
--- a/share/cmake-3.18/Modules/CheckFortranCompilerFlag.cmake
+++ /dev/null
@@ -1,63 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckFortranCompilerFlag
-------------------------
-
-Check whether the Fortran compiler supports a given flag.
-
-.. command:: check_fortran_compiler_flag
-
-  .. code-block:: cmake
-
-    check_fortran_compiler_flag(<flag> <var>)
-
-  Check that the ``<flag>`` is accepted by the compiler without
-  a diagnostic.  Stores the result in an internal cache entry
-  named ``<var>``.
-
-This command temporarily sets the ``CMAKE_REQUIRED_DEFINITIONS`` variable
-and calls the ``check_fortran_source_compiles`` macro from the
-:module:`CheckFortranSourceCompiles` module.  See documentation of that
-module for a listing of variables that can otherwise modify the build.
-
-A positive result from this check indicates only that the compiler did not
-issue a diagnostic message when given the flag.  Whether the flag has any
-effect or even a specific one is beyond the scope of this module.
-
-.. note::
-  Since the :command:`try_compile` command forwards flags from variables
-  like :variable:`CMAKE_Fortran_FLAGS <CMAKE_<LANG>_FLAGS>`, unknown flags
-  in such variables may cause a false negative for this check.
-#]=======================================================================]
-
-include_guard(GLOBAL)
-include(CheckFortranSourceCompiles)
-include(CMakeCheckCompilerFlagCommonPatterns)
-
-macro (CHECK_Fortran_COMPILER_FLAG _FLAG _RESULT)
-  set(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
-  set(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
-
-  # Normalize locale during test compilation.
-  set(_CheckFortranCompilerFlag_LOCALE_VARS LC_ALL LC_MESSAGES LANG)
-  foreach(v ${_CheckFortranCompilerFlag_LOCALE_VARS})
-    set(_CheckFortranCompilerFlag_SAVED_${v} "$ENV{${v}}")
-    set(ENV{${v}} C)
-  endforeach()
-  CHECK_COMPILER_FLAG_COMMON_PATTERNS(_CheckFortranCompilerFlag_COMMON_PATTERNS)
-  CHECK_Fortran_SOURCE_COMPILES("       program test\n       stop\n       end program" ${_RESULT}
-    # Some compilers do not fail with a bad flag
-    FAIL_REGEX "command line option .* is valid for .* but not for Fortran" # GNU
-    ${_CheckFortranCompilerFlag_COMMON_PATTERNS}
-    )
-  foreach(v ${_CheckFortranCompilerFlag_LOCALE_VARS})
-    set(ENV{${v}} ${_CheckFortranCompilerFlag_SAVED_${v}})
-    unset(_CheckFortranCompilerFlag_SAVED_${v})
-  endforeach()
-  unset(_CheckFortranCompilerFlag_LOCALE_VARS)
-  unset(_CheckFortranCompilerFlag_COMMON_PATTERNS)
-
-  set (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
-endmacro ()
diff --git a/share/cmake-3.18/Modules/CheckFortranFunctionExists.cmake b/share/cmake-3.18/Modules/CheckFortranFunctionExists.cmake
deleted file mode 100644
index d06203f..0000000
--- a/share/cmake-3.18/Modules/CheckFortranFunctionExists.cmake
+++ /dev/null
@@ -1,84 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckFortranFunctionExists
---------------------------
-
-Check if a Fortran function exists.
-
-.. command:: CHECK_FORTRAN_FUNCTION_EXISTS
-
-  .. code-block:: cmake
-
-    CHECK_FORTRAN_FUNCTION_EXISTS(<function> <result>)
-
-  where
-
-  ``<function>``
-    the name of the Fortran function
-  ``<result>``
-    variable to store the result; will be created as an internal cache variable.
-
-The following variables may be set before calling this macro to modify
-the way the check is run:
-
-``CMAKE_REQUIRED_LINK_OPTIONS``
-  A :ref:`;-list <CMake Language Lists>` of options to add to the link
-  command (see :command:`try_compile` for further details).
-
-``CMAKE_REQUIRED_LIBRARIES``
-  A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-  command. These can be the name of system libraries or they can be
-  :ref:`Imported Targets <Imported Targets>` (see :command:`try_compile` for
-  further details).
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_FORTRAN_FUNCTION_EXISTS FUNCTION VARIABLE)
-  if(NOT DEFINED ${VARIABLE})
-    message(CHECK_START "Looking for Fortran ${FUNCTION}")
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(CHECK_FUNCTION_EXISTS_ADD_LINK_OPTIONS
-        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    else()
-      set(CHECK_FUNCTION_EXISTS_ADD_LINK_OPTIONS)
-    endif()
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_FUNCTION_EXISTS_ADD_LIBRARIES
-        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-    else()
-      set(CHECK_FUNCTION_EXISTS_ADD_LIBRARIES)
-    endif()
-    file(WRITE
-    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler.f
-    "
-      program TESTFortran
-      external ${FUNCTION}
-      call ${FUNCTION}()
-      end program TESTFortran
-    "
-    )
-    try_compile(${VARIABLE}
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler.f
-      ${CHECK_FUNCTION_EXISTS_ADD_LINK_OPTIONS}
-      ${CHECK_FUNCTION_EXISTS_ADD_LIBRARIES}
-      OUTPUT_VARIABLE OUTPUT
-    )
-    if(${VARIABLE})
-      set(${VARIABLE} 1 CACHE INTERNAL "Have Fortran function ${FUNCTION}")
-      message(CHECK_PASS "found")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Determining if the Fortran ${FUNCTION} exists passed with the following output:\n"
-        "${OUTPUT}\n\n")
-    else()
-      message(CHECK_FAIL "not found")
-      set(${VARIABLE} "" CACHE INTERNAL "Have Fortran function ${FUNCTION}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Determining if the Fortran ${FUNCTION} exists failed with the following output:\n"
-        "${OUTPUT}\n\n")
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckFortranSourceCompiles.cmake b/share/cmake-3.18/Modules/CheckFortranSourceCompiles.cmake
deleted file mode 100644
index 3354bfb..0000000
--- a/share/cmake-3.18/Modules/CheckFortranSourceCompiles.cmake
+++ /dev/null
@@ -1,166 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckFortranSourceCompiles
---------------------------
-
-Check if given Fortran source compiles and links into an executable.
-
-.. command:: check_fortran_source_compiles
-
-  .. code-block:: cmake
-
-    check_fortran_source_compiles(<code> <resultVar>
-        [FAIL_REGEX <regex>...]
-        [SRC_EXT <extension>]
-    )
-
-  Checks that the source supplied in ``<code>`` can be compiled as a Fortran
-  source file and linked as an executable. The ``<code>`` must be a Fortran program
-  containing at least an ``end`` statement--for example:
-
-  .. code-block:: cmake
-
-    check_fortran_source_compiles("character :: b; error stop b; end" F2018ESTOPOK SRC_EXT F90)
-
-  This command can help avoid costly build processes when a compiler lacks support
-  for a necessary feature, or a particular vendor library is not compatible with
-  the Fortran compiler version being used. This generate-time check may advise the
-  user of such before the main build process. See also the
-  :command:`check_fortran_source_runs` command to actually run the compiled code.
-
-  The result will be stored in the internal cache
-  variable ``<resultVar>``, with a boolean true value for success and boolean
-  false for failure.
-
-  If ``FAIL_REGEX`` is provided, then failure is determined by checking
-  if anything in the output matches any of the specified regular expressions.
-
-  By default, the test source file will be given a ``.F`` file extension. The
-  ``SRC_EXT`` option can be used to override this with ``.<extension>`` instead--
-  ``.F90`` is a typical choice.
-
-  The underlying check is performed by the :command:`try_compile` command. The
-  compile and link commands can be influenced by setting any of the following
-  variables prior to calling ``check_fortran_source_compiles()``:
-
-  ``CMAKE_REQUIRED_FLAGS``
-    Additional flags to pass to the compiler. Note that the contents of
-    :variable:`CMAKE_Fortran_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
-    configuration-specific variable are automatically added to the compiler
-    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
-
-  ``CMAKE_REQUIRED_DEFINITIONS``
-    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
-    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
-    ``<resultVar>`` will also be added automatically.
-
-  ``CMAKE_REQUIRED_INCLUDES``
-    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
-    the compiler. These will be the only header search paths used by
-    ``try_compile()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
-    directory property will be ignored.
-
-  ``CMAKE_REQUIRED_LINK_OPTIONS``
-    A :ref:`;-list <CMake Language Lists>` of options to add to the link
-    command (see :command:`try_compile` for further details).
-
-  ``CMAKE_REQUIRED_LIBRARIES``
-    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-    command. These can be the name of system libraries or they can be
-    :ref:`Imported Targets <Imported Targets>` (see :command:`try_compile` for
-    further details).
-
-  ``CMAKE_REQUIRED_QUIET``
-    If this variable evaluates to a boolean true value, all status messages
-    associated with the check will be suppressed.
-
-  The check is only performed once, with the result cached in the variable
-  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
-  value rather than performing the check again, even if the ``<code>`` changes.
-  In order to force the check to be re-evaluated, the variable named by
-  ``<resultVar>`` must be manually removed from the cache.
-
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_Fortran_SOURCE_COMPILES SOURCE VAR)
-  if(NOT DEFINED "${VAR}")
-    set(_FAIL_REGEX)
-    set(_SRC_EXT)
-    set(_key)
-    foreach(arg ${ARGN})
-      if("${arg}" MATCHES "^(FAIL_REGEX|SRC_EXT)$")
-        set(_key "${arg}")
-      elseif(_key)
-        list(APPEND _${_key} "${arg}")
-      else()
-        message(FATAL_ERROR "Unknown argument:\n  ${arg}\n")
-      endif()
-    endforeach()
-    if(NOT _SRC_EXT)
-      set(_SRC_EXT F)
-    endif()
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(CHECK_Fortran_SOURCE_COMPILES_ADD_LINK_OPTIONS
-        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    else()
-      set(CHECK_Fortran_SOURCE_COMPILES_ADD_LINK_OPTIONS)
-    endif()
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_Fortran_SOURCE_COMPILES_ADD_LIBRARIES
-        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-    else()
-      set(CHECK_Fortran_SOURCE_COMPILES_ADD_LIBRARIES)
-    endif()
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_Fortran_SOURCE_COMPILES_ADD_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_Fortran_SOURCE_COMPILES_ADD_INCLUDES)
-    endif()
-    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.${_SRC_EXT}"
-      "${SOURCE}\n")
-
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Performing Test ${VAR}")
-    endif()
-    try_compile(${VAR}
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.${_SRC_EXT}
-      COMPILE_DEFINITIONS -D${VAR} ${CMAKE_REQUIRED_DEFINITIONS}
-      ${CHECK_Fortran_SOURCE_COMPILES_ADD_LINK_OPTIONS}
-      ${CHECK_Fortran_SOURCE_COMPILES_ADD_LIBRARIES}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS}
-      "${CHECK_Fortran_SOURCE_COMPILES_ADD_INCLUDES}"
-      OUTPUT_VARIABLE OUTPUT)
-
-    foreach(_regex ${_FAIL_REGEX})
-      if("${OUTPUT}" MATCHES "${_regex}")
-        set(${VAR} 0)
-      endif()
-    endforeach()
-
-    if(${VAR})
-      set(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "Success")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing Fortran SOURCE FILE Test ${VAR} succeeded with the following output:\n"
-        "${OUTPUT}\n"
-        "Source file was:\n${SOURCE}\n")
-    else()
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "Failed")
-      endif()
-      set(${VAR} "" CACHE INTERNAL "Test ${VAR}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Performing Fortran SOURCE FILE Test ${VAR} failed with the following output:\n"
-        "${OUTPUT}\n"
-        "Source file was:\n${SOURCE}\n")
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckFortranSourceRuns.cmake b/share/cmake-3.18/Modules/CheckFortranSourceRuns.cmake
deleted file mode 100644
index f858b84..0000000
--- a/share/cmake-3.18/Modules/CheckFortranSourceRuns.cmake
+++ /dev/null
@@ -1,173 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckFortranSourceRuns
-----------------------
-
-Check if given Fortran source compiles and links into an executable and can
-subsequently be run.
-
-.. command:: check_fortran_source_runs
-
-  .. code-block:: cmake
-
-    check_fortran_source_runs(<code> <resultVar>
-        [SRC_EXT <extension>])
-
-  Check that the source supplied in ``<code>`` can be compiled as a Fortran source
-  file, linked as an executable and then run. The ``<code>`` must be a Fortran program
-  containing at least an ``end`` statement--for example:
-
-  .. code-block:: cmake
-
-    check_fortran_source_runs("real :: x[*]; call co_sum(x); end" F2018coarrayOK)
-
-  This command can help avoid costly build processes when a compiler lacks support
-  for a necessary feature, or a particular vendor library is not compatible with
-  the Fortran compiler version being used. Some of these failures only occur at runtime
-  instead of linktime, and a trivial runtime example can catch the issue before the
-  main build process.
-
-  If the ``<code>`` could be built and run
-  successfully, the internal cache variable specified by ``<resultVar>`` will
-  be set to 1, otherwise it will be set to an value that evaluates to boolean
-  false (e.g. an empty string or an error message).
-
-  By default, the test source file will be given a ``.F90`` file extension. The
-  ``SRC_EXT`` option can be used to override this with ``.<extension>`` instead.
-
-  The underlying check is performed by the :command:`try_run` command. The
-  compile and link commands can be influenced by setting any of the following
-  variables prior to calling ``check_fortran_source_runs()``:
-
-  ``CMAKE_REQUIRED_FLAGS``
-    Additional flags to pass to the compiler. Note that the contents of
-    :variable:`CMAKE_Fortran_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
-    configuration-specific variable are automatically added to the compiler
-    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
-
-  ``CMAKE_REQUIRED_DEFINITIONS``
-    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
-    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
-    ``<resultVar>`` will also be added automatically.
-
-  ``CMAKE_REQUIRED_INCLUDES``
-    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
-    the compiler. These will be the only header search paths used by
-    ``try_run()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
-    directory property will be ignored.
-
-  ``CMAKE_REQUIRED_LINK_OPTIONS``
-    A :ref:`;-list <CMake Language Lists>` of options to add to the link
-    command (see :command:`try_run` for further details).
-
-  ``CMAKE_REQUIRED_LIBRARIES``
-    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-    command. These can be the name of system libraries or they can be
-    :ref:`Imported Targets <Imported Targets>` (see :command:`try_run` for
-    further details).
-
-  ``CMAKE_REQUIRED_QUIET``
-    If this variable evaluates to a boolean true value, all status messages
-    associated with the check will be suppressed.
-
-  The check is only performed once, with the result cached in the variable
-  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
-  value rather than performing the check again, even if the ``<code>`` changes.
-  In order to force the check to be re-evaluated, the variable named by
-  ``<resultVar>`` must be manually removed from the cache.
-
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_Fortran_SOURCE_RUNS SOURCE VAR)
-  if(NOT DEFINED "${VAR}")
-    set(_SRC_EXT)
-    set(_key)
-    foreach(arg ${ARGN})
-      if("${arg}" MATCHES "^(SRC_EXT)$")
-        set(_key "${arg}")
-      elseif(_key)
-        list(APPEND _${_key} "${arg}")
-      else()
-        message(FATAL_ERROR "Unknown argument:\n  ${arg}\n")
-      endif()
-    endforeach()
-    if(NOT _SRC_EXT)
-      set(_SRC_EXT F90)
-    endif()
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(CHECK_Fortran_SOURCE_COMPILES_ADD_LINK_OPTIONS
-        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    else()
-      set(CHECK_Fortran_SOURCE_COMPILES_ADD_LINK_OPTIONS)
-    endif()
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_Fortran_SOURCE_COMPILES_ADD_LIBRARIES
-        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-    else()
-      set(CHECK_Fortran_SOURCE_COMPILES_ADD_LIBRARIES)
-    endif()
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_Fortran_SOURCE_COMPILES_ADD_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_Fortran_SOURCE_COMPILES_ADD_INCLUDES)
-    endif()
-    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.${_SRC_EXT}"
-      "${SOURCE}\n")
-
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Performing Test ${VAR}")
-    endif()
-    try_run(${VAR}_EXITCODE ${VAR}_COMPILED
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.${_SRC_EXT}
-      COMPILE_DEFINITIONS -D${VAR} ${CMAKE_REQUIRED_DEFINITIONS}
-      ${CHECK_Fortran_SOURCE_COMPILES_ADD_LINK_OPTIONS}
-      ${CHECK_Fortran_SOURCE_COMPILES_ADD_LIBRARIES}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS}
-      -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
-      "${CHECK_Fortran_SOURCE_COMPILES_ADD_INCLUDES}"
-      COMPILE_OUTPUT_VARIABLE OUTPUT
-      RUN_OUTPUT_VARIABLE RUN_OUTPUT)
-
-    # if it did not compile make the return value fail code of 1
-    if(NOT ${VAR}_COMPILED)
-      set(${VAR}_EXITCODE 1)
-    endif()
-    # if the return value was 0 then it worked
-    if("${${VAR}_EXITCODE}" EQUAL 0)
-      set(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "Success")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing Fortran SOURCE FILE Test ${VAR} succeeded with the following output:\n"
-        "${OUTPUT}\n"
-        "...and run output:\n"
-        "${RUN_OUTPUT}\n"
-        "Return value: ${${VAR}}\n"
-        "Source file was:\n${SOURCE}\n")
-    else()
-      if(CMAKE_CROSSCOMPILING AND "${${VAR}_EXITCODE}" MATCHES  "FAILED_TO_RUN")
-        set(${VAR} "${${VAR}_EXITCODE}")
-      else()
-        set(${VAR} "" CACHE INTERNAL "Test ${VAR}")
-      endif()
-
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "Failed")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Performing Fortran SOURCE FILE Test ${VAR} failed with the following output:\n"
-        "${OUTPUT}\n"
-        "...and run output:\n"
-        "${RUN_OUTPUT}\n"
-        "Return value: ${${VAR}_EXITCODE}\n"
-        "Source file was:\n${SOURCE}\n")
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckFunctionExists.cmake b/share/cmake-3.18/Modules/CheckFunctionExists.cmake
deleted file mode 100644
index 136da89..0000000
--- a/share/cmake-3.18/Modules/CheckFunctionExists.cmake
+++ /dev/null
@@ -1,119 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckFunctionExists
--------------------
-
-Check if a C function can be linked
-
-.. command:: check_function_exists
-
-  .. code-block:: cmake
-
-    check_function_exists(<function> <variable>)
-
-  Checks that the ``<function>`` is provided by libraries on the system and store
-  the result in a ``<variable>``, which will be created as an internal
-  cache variable.
-
-The following variables may be set before calling this macro to modify the
-way the check is run:
-
-``CMAKE_REQUIRED_FLAGS``
-  string of compile command line flags.
-``CMAKE_REQUIRED_DEFINITIONS``
-  a :ref:`;-list <CMake Language Lists>` of macros to define (-DFOO=bar).
-``CMAKE_REQUIRED_INCLUDES``
-  a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
-  the compiler.
-``CMAKE_REQUIRED_LINK_OPTIONS``
-  a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
-``CMAKE_REQUIRED_LIBRARIES``
-  a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-  command. See policy :policy:`CMP0075`.
-``CMAKE_REQUIRED_QUIET``
-  execute quietly without messages.
-
-.. note::
-
-  Prefer using :Module:`CheckSymbolExists` instead of this module,
-  for the following reasons:
-
-  * ``check_function_exists()`` can't detect functions that are inlined
-    in headers or specified as a macro.
-
-  * ``check_function_exists()`` can't detect anything in the 32-bit
-    versions of the Win32 API, because of a mismatch in calling conventions.
-
-  * ``check_function_exists()`` only verifies linking, it does not verify
-    that the function is declared in system headers.
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_FUNCTION_EXISTS FUNCTION VARIABLE)
-  if(NOT DEFINED "${VARIABLE}" OR "x${${VARIABLE}}" STREQUAL "x${VARIABLE}")
-    set(MACRO_CHECK_FUNCTION_DEFINITIONS
-      "-DCHECK_FUNCTION_EXISTS=${FUNCTION} ${CMAKE_REQUIRED_FLAGS}")
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Looking for ${FUNCTION}")
-    endif()
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(CHECK_FUNCTION_EXISTS_ADD_LINK_OPTIONS
-        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    else()
-      set(CHECK_FUNCTION_EXISTS_ADD_LINK_OPTIONS)
-    endif()
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_FUNCTION_EXISTS_ADD_LIBRARIES
-        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-    else()
-      set(CHECK_FUNCTION_EXISTS_ADD_LIBRARIES)
-    endif()
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_FUNCTION_EXISTS_ADD_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_FUNCTION_EXISTS_ADD_INCLUDES)
-    endif()
-
-    if(CMAKE_C_COMPILER_LOADED)
-      set(_cfe_source ${CMAKE_ROOT}/Modules/CheckFunctionExists.c)
-    elseif(CMAKE_CXX_COMPILER_LOADED)
-      set(_cfe_source ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckFunctionExists/CheckFunctionExists.cxx)
-      configure_file(${CMAKE_ROOT}/Modules/CheckFunctionExists.c "${_cfe_source}" COPYONLY)
-    else()
-      message(FATAL_ERROR "CHECK_FUNCTION_EXISTS needs either C or CXX language enabled")
-    endif()
-
-    try_compile(${VARIABLE}
-      ${CMAKE_BINARY_DIR}
-      ${_cfe_source}
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${CHECK_FUNCTION_EXISTS_ADD_LINK_OPTIONS}
-      ${CHECK_FUNCTION_EXISTS_ADD_LIBRARIES}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
-      "${CHECK_FUNCTION_EXISTS_ADD_INCLUDES}"
-      OUTPUT_VARIABLE OUTPUT)
-    unset(_cfe_source)
-
-    if(${VARIABLE})
-      set(${VARIABLE} 1 CACHE INTERNAL "Have function ${FUNCTION}")
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "found")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Determining if the function ${FUNCTION} exists passed with the following output:\n"
-        "${OUTPUT}\n\n")
-    else()
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "not found")
-      endif()
-      set(${VARIABLE} "" CACHE INTERNAL "Have function ${FUNCTION}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Determining if the function ${FUNCTION} exists failed with the following output:\n"
-        "${OUTPUT}\n\n")
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckIPOSupported.cmake b/share/cmake-3.18/Modules/CheckIPOSupported.cmake
deleted file mode 100644
index 90a9f61..0000000
--- a/share/cmake-3.18/Modules/CheckIPOSupported.cmake
+++ /dev/null
@@ -1,239 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckIPOSupported
------------------
-
-Check whether the compiler supports an interprocedural optimization (IPO/LTO).
-Use this before enabling the :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target
-property.
-
-.. command:: check_ipo_supported
-
-  ::
-
-    check_ipo_supported([RESULT <result>] [OUTPUT <output>]
-                        [LANGUAGES <lang>...])
-
-  Options are:
-
-  ``RESULT <result>``
-    Set ``<result>`` variable to ``YES`` if IPO is supported by the
-    compiler and ``NO`` otherwise.  If this option is not given then
-    the command will issue a fatal error if IPO is not supported.
-  ``OUTPUT <output>``
-    Set ``<output>`` variable with details about any error.
-  ``LANGUAGES <lang>...``
-    Specify languages whose compilers to check.
-    Languages ``C``, ``CXX``, and ``Fortran`` are supported.
-
-It makes no sense to use this module when :policy:`CMP0069` is set to ``OLD`` so
-module will return error in this case. See policy :policy:`CMP0069` for details.
-
-Examples
-^^^^^^^^
-
-.. code-block:: cmake
-
-  check_ipo_supported() # fatal error if IPO is not supported
-  set_property(TARGET foo PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
-
-.. code-block:: cmake
-
-  # Optional IPO. Do not use IPO if it's not supported by compiler.
-  check_ipo_supported(RESULT result OUTPUT output)
-  if(result)
-    set_property(TARGET foo PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
-  else()
-    message(WARNING "IPO is not supported: ${output}")
-  endif()
-
-#]=======================================================================]
-
-# X_RESULT - name of the final result variable
-# X_OUTPUT - name of the variable with information about error
-macro(_ipo_not_supported output)
-  if(NOT X_RESULT)
-    message(FATAL_ERROR "IPO is not supported (${output}).")
-  endif()
-
-  set("${X_RESULT}" NO PARENT_SCOPE)
-  if(X_OUTPUT)
-    set("${X_OUTPUT}" "${output}" PARENT_SCOPE)
-  endif()
-endmacro()
-
-# Run IPO/LTO test
-macro(_ipo_run_language_check language)
-  set(testdir "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/_CMakeLTOTest-${language}")
-
-  file(REMOVE_RECURSE "${testdir}")
-  file(MAKE_DIRECTORY "${testdir}")
-
-  set(bindir "${testdir}/bin")
-  set(srcdir "${testdir}/src")
-
-  file(MAKE_DIRECTORY "${bindir}")
-  file(MAKE_DIRECTORY "${srcdir}")
-
-  set(TRY_COMPILE_PROJECT_NAME "lto-test")
-
-  set(try_compile_src "${CMAKE_ROOT}/Modules/CheckIPOSupported")
-
-  # Use:
-  # * TRY_COMPILE_PROJECT_NAME
-  # * CMAKE_VERSION
-  configure_file(
-      "${try_compile_src}/CMakeLists-${language}.txt.in"
-      "${srcdir}/CMakeLists.txt"
-      @ONLY
-  )
-
-  string(COMPARE EQUAL "${language}" "C" is_c)
-  string(COMPARE EQUAL "${language}" "CXX" is_cxx)
-  string(COMPARE EQUAL "${language}" "Fortran" is_fortran)
-
-  if(is_c)
-    set(copy_sources foo.c main.c)
-  elseif(is_cxx)
-    set(copy_sources foo.cpp main.cpp)
-  elseif(is_fortran)
-    set(copy_sources foo.f main.f)
-  else()
-    message(FATAL_ERROR "Language not supported")
-  endif()
-
-  foreach(x ${copy_sources})
-    configure_file(
-        "${try_compile_src}/${x}"
-        "${srcdir}/${x}"
-        COPYONLY
-    )
-  endforeach()
-
-  try_compile(
-      _IPO_LANGUAGE_CHECK_RESULT
-      "${bindir}"
-      "${srcdir}"
-      "${TRY_COMPILE_PROJECT_NAME}"
-      CMAKE_FLAGS
-      "-DCMAKE_VERBOSE_MAKEFILE=ON"
-      "-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON"
-      OUTPUT_VARIABLE output
-  )
-  set(_IPO_LANGUAGE_CHECK_RESULT "${_IPO_LANGUAGE_CHECK_RESULT}")
-  unset(_IPO_LANGUAGE_CHECK_RESULT CACHE)
-
-  if(NOT _IPO_LANGUAGE_CHECK_RESULT)
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-      "${language} compiler IPO check failed with the following output:\n"
-      "${output}\n")
-    _ipo_not_supported("check failed to compile")
-    if(X_OUTPUT)
-      set("${X_OUTPUT}" "${output}" PARENT_SCOPE)
-    endif()
-    return()
-  endif()
-endmacro()
-
-function(check_ipo_supported)
-  cmake_policy(GET CMP0069 x)
-
-  string(COMPARE EQUAL "${x}" "" not_set)
-  if(not_set)
-    message(FATAL_ERROR "Policy CMP0069 is not set")
-  endif()
-
-  string(COMPARE EQUAL "${x}" "OLD" is_old)
-  if(is_old)
-    message(FATAL_ERROR "Policy CMP0069 set to OLD")
-  endif()
-
-  set(optional)
-  set(one RESULT OUTPUT)
-  set(multiple LANGUAGES)
-
-  # Introduce:
-  # * X_RESULT
-  # * X_OUTPUT
-  # * X_LANGUAGES
-  cmake_parse_arguments(X "${optional}" "${one}" "${multiple}" "${ARGV}")
-
-  string(COMPARE NOTEQUAL "${X_UNPARSED_ARGUMENTS}" "" has_unparsed)
-  if(has_unparsed)
-    message(FATAL_ERROR "Unparsed arguments: ${X_UNPARSED_ARGUMENTS}")
-  endif()
-
-  string(COMPARE EQUAL "${X_LANGUAGES}" "" no_languages)
-  if(no_languages)
-    # User did not set any languages, use defaults
-    get_property(enabled_languages GLOBAL PROPERTY ENABLED_LANGUAGES)
-    string(COMPARE EQUAL "${enabled_languages}" "" no_languages)
-    if(no_languages)
-      _ipo_not_supported(
-          "no languages found in ENABLED_LANGUAGES global property"
-      )
-      return()
-    endif()
-
-    set(languages "")
-    list(FIND enabled_languages "CXX" result)
-    if(NOT result EQUAL -1)
-      list(APPEND languages "CXX")
-    endif()
-
-    list(FIND enabled_languages "C" result)
-    if(NOT result EQUAL -1)
-      list(APPEND languages "C")
-    endif()
-
-    list(FIND enabled_languages "Fortran" result)
-    if(NOT result EQUAL -1)
-      list(APPEND languages "Fortran")
-    endif()
-
-    string(COMPARE EQUAL "${languages}" "" no_languages)
-    if(no_languages)
-      _ipo_not_supported(
-          "no C/CXX/Fortran languages found in ENABLED_LANGUAGES global property"
-      )
-      return()
-    endif()
-  else()
-    set(languages "${X_LANGUAGES}")
-
-    set(unsupported_languages "${languages}")
-    list(REMOVE_ITEM unsupported_languages "C" "CXX" "Fortran")
-    string(COMPARE NOTEQUAL "${unsupported_languages}" "" has_unsupported)
-    if(has_unsupported)
-      _ipo_not_supported(
-          "language(s) '${unsupported_languages}' not supported"
-      )
-      return()
-    endif()
-  endif()
-
-  foreach(lang ${languages})
-    if(NOT _CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE)
-      _ipo_not_supported("CMake doesn't support IPO for current ${lang} compiler")
-      return()
-    endif()
-
-    if(NOT _CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER)
-      _ipo_not_supported("${lang} compiler doesn't support IPO")
-      return()
-    endif()
-  endforeach()
-
-  if(CMAKE_GENERATOR MATCHES "^Visual Studio 9 ")
-    _ipo_not_supported("CMake doesn't support IPO for current generator")
-    return()
-  endif()
-
-  foreach(x ${languages})
-    _ipo_run_language_check(${x})
-  endforeach()
-
-  set("${X_RESULT}" YES PARENT_SCOPE)
-endfunction()
diff --git a/share/cmake-3.18/Modules/CheckIncludeFile.cmake b/share/cmake-3.18/Modules/CheckIncludeFile.cmake
deleted file mode 100644
index 3a10473..0000000
--- a/share/cmake-3.18/Modules/CheckIncludeFile.cmake
+++ /dev/null
@@ -1,130 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckIncludeFile
-----------------
-
-Provides a macro to check if a header file can be included in ``C``.
-
-.. command:: CHECK_INCLUDE_FILE
-
-  .. code-block:: cmake
-
-    CHECK_INCLUDE_FILE(<include> <variable> [<flags>])
-
-  Check if the given ``<include>`` file may be included in a ``C``
-  source file and store the result in an internal cache entry named
-  ``<variable>``.  The optional third argument may be used to add
-  compilation flags to the check (or use ``CMAKE_REQUIRED_FLAGS`` below).
-
-The following variables may be set before calling this macro to modify
-the way the check is run:
-
-``CMAKE_REQUIRED_FLAGS``
-  string of compile command line flags.
-``CMAKE_REQUIRED_DEFINITIONS``
-  a :ref:`;-list <CMake Language Lists>` of macros to define (-DFOO=bar).
-``CMAKE_REQUIRED_INCLUDES``
-  a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
-  the compiler.
-``CMAKE_REQUIRED_LINK_OPTIONS``
-  a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
-``CMAKE_REQUIRED_LIBRARIES``
-  a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-  command. See policy :policy:`CMP0075`.
-``CMAKE_REQUIRED_QUIET``
-  execute quietly without messages.
-
-See the :module:`CheckIncludeFiles` module to check for multiple headers
-at once.  See the :module:`CheckIncludeFileCXX` module to check for headers
-using the ``CXX`` language.
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_INCLUDE_FILE INCLUDE VARIABLE)
-  if(NOT DEFINED "${VARIABLE}")
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_INCLUDE_FILE_C_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_INCLUDE_FILE_C_INCLUDE_DIRS)
-    endif()
-    set(MACRO_CHECK_INCLUDE_FILE_FLAGS ${CMAKE_REQUIRED_FLAGS})
-    set(CHECK_INCLUDE_FILE_VAR ${INCLUDE})
-    configure_file(${CMAKE_ROOT}/Modules/CheckIncludeFile.c.in
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.c)
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Looking for ${INCLUDE}")
-    endif()
-    if(${ARGC} EQUAL 3)
-      set(CMAKE_C_FLAGS_SAVE ${CMAKE_C_FLAGS})
-      string(APPEND CMAKE_C_FLAGS " ${ARGV2}")
-    endif()
-
-    set(_CIF_LINK_OPTIONS)
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(_CIF_LINK_OPTIONS LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    endif()
-
-    set(_CIF_LINK_LIBRARIES "")
-    if(CMAKE_REQUIRED_LIBRARIES)
-      cmake_policy(GET CMP0075 _CIF_CMP0075
-        PARENT_SCOPE # undocumented, do not use outside of CMake
-        )
-      if("x${_CIF_CMP0075}x" STREQUAL "xNEWx")
-        set(_CIF_LINK_LIBRARIES LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-      elseif("x${_CIF_CMP0075}x" STREQUAL "xOLDx")
-      elseif(NOT _CIF_CMP0075_WARNED)
-        set(_CIF_CMP0075_WARNED 1)
-        message(AUTHOR_WARNING
-          "Policy CMP0075 is not set: Include file check macros honor CMAKE_REQUIRED_LIBRARIES.  "
-          "Run \"cmake --help-policy CMP0075\" for policy details.  "
-          "Use the cmake_policy command to set the policy and suppress this warning."
-          "\n"
-          "CMAKE_REQUIRED_LIBRARIES is set to:\n"
-          "  ${CMAKE_REQUIRED_LIBRARIES}\n"
-          "For compatibility with CMake 3.11 and below this check is ignoring it."
-          )
-      endif()
-      unset(_CIF_CMP0075)
-    endif()
-
-    try_compile(${VARIABLE}
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.c
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${_CIF_LINK_OPTIONS}
-      ${_CIF_LINK_LIBRARIES}
-      CMAKE_FLAGS
-      -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILE_FLAGS}
-      "${CHECK_INCLUDE_FILE_C_INCLUDE_DIRS}"
-      OUTPUT_VARIABLE OUTPUT)
-    unset(_CIF_LINK_OPTIONS)
-    unset(_CIF_LINK_LIBRARIES)
-
-    if(${ARGC} EQUAL 3)
-      set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS_SAVE})
-    endif()
-
-    if(${VARIABLE})
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "found")
-      endif()
-      set(${VARIABLE} 1 CACHE INTERNAL "Have include ${INCLUDE}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Determining if the include file ${INCLUDE} "
-        "exists passed with the following output:\n"
-        "${OUTPUT}\n\n")
-    else()
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "not found")
-      endif()
-      set(${VARIABLE} "" CACHE INTERNAL "Have include ${INCLUDE}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Determining if the include file ${INCLUDE} "
-        "exists failed with the following output:\n"
-        "${OUTPUT}\n\n")
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckIncludeFileCXX.cmake b/share/cmake-3.18/Modules/CheckIncludeFileCXX.cmake
deleted file mode 100644
index 496550f..0000000
--- a/share/cmake-3.18/Modules/CheckIncludeFileCXX.cmake
+++ /dev/null
@@ -1,129 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckIncludeFileCXX
--------------------
-
-Provides a macro to check if a header file can be included in ``CXX``.
-
-.. command:: CHECK_INCLUDE_FILE_CXX
-
-  .. code-block:: cmake
-
-    CHECK_INCLUDE_FILE_CXX(<include> <variable> [<flags>])
-
-  Check if the given ``<include>`` file may be included in a ``CXX``
-  source file and store the result in an internal cache entry named
-  ``<variable>``.  The optional third argument may be used to add
-  compilation flags to the check (or use ``CMAKE_REQUIRED_FLAGS`` below).
-
-The following variables may be set before calling this macro to modify
-the way the check is run:
-
-``CMAKE_REQUIRED_FLAGS``
-  string of compile command line flags.
-``CMAKE_REQUIRED_DEFINITIONS``
-  a :ref:`;-list <CMake Language Lists>` of macros to define (-DFOO=bar).
-``CMAKE_REQUIRED_INCLUDES``
-  a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
-  the compiler.
-``CMAKE_REQUIRED_LINK_OPTIONS``
-  a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
-``CMAKE_REQUIRED_LIBRARIES``
-  a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-  command. See policy :policy:`CMP0075`.
-``CMAKE_REQUIRED_QUIET``
-  execute quietly without messages.
-
-See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFiles`
-to check for one or more ``C`` headers.
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_INCLUDE_FILE_CXX INCLUDE VARIABLE)
-  if(NOT DEFINED "${VARIABLE}" OR "x${${VARIABLE}}" STREQUAL "x${VARIABLE}")
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS)
-    endif()
-    set(MACRO_CHECK_INCLUDE_FILE_FLAGS ${CMAKE_REQUIRED_FLAGS})
-    set(CHECK_INCLUDE_FILE_VAR ${INCLUDE})
-    configure_file(${CMAKE_ROOT}/Modules/CheckIncludeFile.cxx.in
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx)
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Looking for C++ include ${INCLUDE}")
-    endif()
-    if(${ARGC} EQUAL 3)
-      set(CMAKE_CXX_FLAGS_SAVE ${CMAKE_CXX_FLAGS})
-      string(APPEND CMAKE_CXX_FLAGS " ${ARGV2}")
-    endif()
-
-    set(_CIF_LINK_OPTIONS)
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(_CIF_LINK_OPTIONS LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    endif()
-
-    set(_CIF_LINK_LIBRARIES "")
-    if(CMAKE_REQUIRED_LIBRARIES)
-      cmake_policy(GET CMP0075 _CIF_CMP0075
-        PARENT_SCOPE # undocumented, do not use outside of CMake
-        )
-      if("x${_CIF_CMP0075}x" STREQUAL "xNEWx")
-        set(_CIF_LINK_LIBRARIES LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-      elseif("x${_CIF_CMP0075}x" STREQUAL "xOLDx")
-      elseif(NOT _CIF_CMP0075_WARNED)
-        set(_CIF_CMP0075_WARNED 1)
-        message(AUTHOR_WARNING
-          "Policy CMP0075 is not set: Include file check macros honor CMAKE_REQUIRED_LIBRARIES.  "
-          "Run \"cmake --help-policy CMP0075\" for policy details.  "
-          "Use the cmake_policy command to set the policy and suppress this warning."
-          "\n"
-          "CMAKE_REQUIRED_LIBRARIES is set to:\n"
-          "  ${CMAKE_REQUIRED_LIBRARIES}\n"
-          "For compatibility with CMake 3.11 and below this check is ignoring it."
-          )
-      endif()
-      unset(_CIF_CMP0075)
-    endif()
-
-    try_compile(${VARIABLE}
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${_CIF_LINK_OPTIONS}
-      ${_CIF_LINK_LIBRARIES}
-      CMAKE_FLAGS
-      -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILE_FLAGS}
-      "${CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS}"
-      OUTPUT_VARIABLE OUTPUT)
-    unset(_CIF_LINK_OPTIONS)
-    unset(_CIF_LINK_LIBRARIES)
-
-    if(${ARGC} EQUAL 3)
-      set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS_SAVE})
-    endif()
-
-    if(${VARIABLE})
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "found")
-      endif()
-      set(${VARIABLE} 1 CACHE INTERNAL "Have include ${INCLUDE}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Determining if the include file ${INCLUDE} "
-        "exists passed with the following output:\n"
-        "${OUTPUT}\n\n")
-    else()
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "not found")
-      endif()
-      set(${VARIABLE} "" CACHE INTERNAL "Have include ${INCLUDE}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Determining if the include file ${INCLUDE} "
-        "exists failed with the following output:\n"
-        "${OUTPUT}\n\n")
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckIncludeFiles.cmake b/share/cmake-3.18/Modules/CheckIncludeFiles.cmake
deleted file mode 100644
index 8e10cd6..0000000
--- a/share/cmake-3.18/Modules/CheckIncludeFiles.cmake
+++ /dev/null
@@ -1,168 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckIncludeFiles
------------------
-
-Provides a macro to check if a list of one or more header files can
-be included together.
-
-.. command:: CHECK_INCLUDE_FILES
-
-  .. code-block:: cmake
-
-    CHECK_INCLUDE_FILES("<includes>" <variable> [LANGUAGE <language>])
-
-  Check if the given ``<includes>`` list may be included together
-  in a source file and store the result in an internal cache
-  entry named ``<variable>``.  Specify the ``<includes>`` argument
-  as a :ref:`;-list <CMake Language Lists>` of header file names.
-
-  If ``LANGUAGE`` is set, the specified compiler will be used to perform the
-  check. Acceptable values are ``C`` and ``CXX``. If not set, the C compiler
-  will be used if enabled. If the C compiler is not enabled, the C++
-  compiler will be used if enabled.
-
-The following variables may be set before calling this macro to modify
-the way the check is run:
-
-``CMAKE_REQUIRED_FLAGS``
-  string of compile command line flags.
-``CMAKE_REQUIRED_DEFINITIONS``
-  a :ref:`;-list <CMake Language Lists>` of macros to define (-DFOO=bar).
-``CMAKE_REQUIRED_INCLUDES``
-  a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
-  the compiler.
-``CMAKE_REQUIRED_LINK_OPTIONS``
-  a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
-``CMAKE_REQUIRED_LIBRARIES``
-  a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-  command. See policy :policy:`CMP0075`.
-``CMAKE_REQUIRED_QUIET``
-  execute quietly without messages.
-
-See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFileCXX`
-to check for a single header file in ``C`` or ``CXX`` languages.
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_INCLUDE_FILES INCLUDE VARIABLE)
-  if(NOT DEFINED "${VARIABLE}")
-    set(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n")
-
-    if("x${ARGN}" STREQUAL "x")
-       if(CMAKE_C_COMPILER_LOADED)
-         set(_lang C)
-       elseif(CMAKE_CXX_COMPILER_LOADED)
-         set(_lang CXX)
-       else()
-         message(FATAL_ERROR "CHECK_INCLUDE_FILES needs either C or CXX language enabled.\n")
-       endif()
-    elseif("x${ARGN}" MATCHES "^xLANGUAGE;([a-zA-Z]+)$")
-      set(_lang "${CMAKE_MATCH_1}")
-    elseif("x${ARGN}" MATCHES "^xLANGUAGE$")
-      message(FATAL_ERROR "No languages listed for LANGUAGE option.\nSupported languages: C, CXX.\n")
-    else()
-      message(FATAL_ERROR "Unknown arguments:\n  ${ARGN}\n")
-    endif()
-
-    if(_lang STREQUAL "C")
-      set(src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckIncludeFiles/${VARIABLE}.c)
-    elseif(_lang STREQUAL "CXX")
-      set(src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckIncludeFiles/${VARIABLE}.cpp)
-    else()
-      message(FATAL_ERROR "Unknown language:\n  ${_lang}\nSupported languages: C, CXX.\n")
-    endif()
-
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_INCLUDE_FILES_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_INCLUDE_FILES_INCLUDE_DIRS)
-    endif()
-    set(CHECK_INCLUDE_FILES_CONTENT "/* */\n")
-    set(MACRO_CHECK_INCLUDE_FILES_FLAGS ${CMAKE_REQUIRED_FLAGS})
-    foreach(FILE ${INCLUDE})
-      string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT
-        "#include <${FILE}>\n")
-    endforeach()
-    string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT
-      "\n\nint main(void){return 0;}\n")
-    configure_file("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
-      "${src}" @ONLY)
-
-    set(_INCLUDE ${INCLUDE}) # remove empty elements
-    if("${_INCLUDE}" MATCHES "^([^;]+);.+;([^;]+)$")
-      list(LENGTH _INCLUDE _INCLUDE_LEN)
-      set(_description "${_INCLUDE_LEN} include files ${CMAKE_MATCH_1}, ..., ${CMAKE_MATCH_2}")
-    elseif("${_INCLUDE}" MATCHES "^([^;]+);([^;]+)$")
-      set(_description "include files ${CMAKE_MATCH_1}, ${CMAKE_MATCH_2}")
-    else()
-      set(_description "include file ${_INCLUDE}")
-    endif()
-
-    set(_CIF_LINK_OPTIONS)
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(_CIF_LINK_OPTIONS LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    endif()
-
-    set(_CIF_LINK_LIBRARIES "")
-    if(CMAKE_REQUIRED_LIBRARIES)
-      cmake_policy(GET CMP0075 _CIF_CMP0075
-        PARENT_SCOPE # undocumented, do not use outside of CMake
-        )
-      if("x${_CIF_CMP0075}x" STREQUAL "xNEWx")
-        set(_CIF_LINK_LIBRARIES LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-      elseif("x${_CIF_CMP0075}x" STREQUAL "xOLDx")
-      elseif(NOT _CIF_CMP0075_WARNED)
-        set(_CIF_CMP0075_WARNED 1)
-        message(AUTHOR_WARNING
-          "Policy CMP0075 is not set: Include file check macros honor CMAKE_REQUIRED_LIBRARIES.  "
-          "Run \"cmake --help-policy CMP0075\" for policy details.  "
-          "Use the cmake_policy command to set the policy and suppress this warning."
-          "\n"
-          "CMAKE_REQUIRED_LIBRARIES is set to:\n"
-          "  ${CMAKE_REQUIRED_LIBRARIES}\n"
-          "For compatibility with CMake 3.11 and below this check is ignoring it."
-          )
-      endif()
-      unset(_CIF_CMP0075)
-    endif()
-
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Looking for ${_description}")
-    endif()
-    try_compile(${VARIABLE}
-      ${CMAKE_BINARY_DIR}
-      ${src}
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${_CIF_LINK_OPTIONS}
-      ${_CIF_LINK_LIBRARIES}
-      CMAKE_FLAGS
-      -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILES_FLAGS}
-      "${CHECK_INCLUDE_FILES_INCLUDE_DIRS}"
-      OUTPUT_VARIABLE OUTPUT)
-    unset(_CIF_LINK_OPTIONS)
-    unset(_CIF_LINK_LIBRARIES)
-    if(${VARIABLE})
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "found")
-      endif()
-      set(${VARIABLE} 1 CACHE INTERNAL "Have include ${INCLUDE}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Determining if files ${INCLUDE} "
-        "exist passed with the following output:\n"
-        "${OUTPUT}\n\n")
-    else()
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "not found")
-      endif()
-      set(${VARIABLE} "" CACHE INTERNAL "Have includes ${INCLUDE}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Determining if files ${INCLUDE} "
-        "exist failed with the following output:\n"
-        "${OUTPUT}\nSource:\n${CMAKE_CONFIGURABLE_FILE_CONTENT}\n")
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckLanguage.cmake b/share/cmake-3.18/Modules/CheckLanguage.cmake
deleted file mode 100644
index d67d8d3..0000000
--- a/share/cmake-3.18/Modules/CheckLanguage.cmake
+++ /dev/null
@@ -1,106 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckLanguage
--------------
-
-Check if a language can be enabled
-
-Usage:
-
-::
-
-  check_language(<lang>)
-
-where ``<lang>`` is a language that may be passed to :command:`enable_language`
-such as ``Fortran``.  If :variable:`CMAKE_<LANG>_COMPILER` is already defined
-the check does nothing.  Otherwise it tries enabling the language in a
-test project.  The result is cached in :variable:`CMAKE_<LANG>_COMPILER`
-as the compiler that was found, or ``NOTFOUND`` if the language cannot be
-enabled. For CUDA which can have an explicit host compiler, the cache
-:variable:`CMAKE_CUDA_HOST_COMPILER` variable will be set if it was required
-for compilation.
-
-Example:
-
-::
-
-  check_language(Fortran)
-  if(CMAKE_Fortran_COMPILER)
-    enable_language(Fortran)
-  else()
-    message(STATUS "No Fortran support")
-  endif()
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(check_language lang)
-  if(NOT DEFINED CMAKE_${lang}_COMPILER)
-    set(_desc "Looking for a ${lang} compiler")
-    message(CHECK_START "${_desc}")
-    file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang})
-
-    set(extra_compiler_variables)
-    if(${lang} STREQUAL CUDA)
-      set(extra_compiler_variables "set(CMAKE_CUDA_HOST_COMPILER \\\"\${CMAKE_CUDA_HOST_COMPILER}\\\")")
-    endif()
-
-    set(_cl_content
-      "cmake_minimum_required(VERSION ${CMAKE_VERSION})
-project(Check${lang} ${lang})
-file(WRITE \"\${CMAKE_CURRENT_BINARY_DIR}/result.cmake\"
-  \"set(CMAKE_${lang}_COMPILER \\\"\${CMAKE_${lang}_COMPILER}\\\")\\n\"
-  \"${extra_compiler_variables}\\n\"
-  )"
-    )
-
-    file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}/CMakeLists.txt"
-      "${_cl_content}")
-    if(CMAKE_GENERATOR_INSTANCE)
-      set(_D_CMAKE_GENERATOR_INSTANCE "-DCMAKE_GENERATOR_INSTANCE:INTERNAL=${CMAKE_GENERATOR_INSTANCE}")
-    else()
-      set(_D_CMAKE_GENERATOR_INSTANCE "")
-    endif()
-    if(CMAKE_GENERATOR MATCHES "^(Xcode$|Green Hills MULTI$|Visual Studio)")
-      set(_D_CMAKE_MAKE_PROGRAM "")
-    else()
-      set(_D_CMAKE_MAKE_PROGRAM "-DCMAKE_MAKE_PROGRAM:FILEPATH=${CMAKE_MAKE_PROGRAM}")
-    endif()
-    execute_process(
-      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}
-      COMMAND ${CMAKE_COMMAND} . -G ${CMAKE_GENERATOR}
-                                 -A "${CMAKE_GENERATOR_PLATFORM}"
-                                 -T "${CMAKE_GENERATOR_TOOLSET}"
-                                 ${_D_CMAKE_GENERATOR_INSTANCE}
-                                 ${_D_CMAKE_MAKE_PROGRAM}
-      OUTPUT_VARIABLE _cl_output
-      ERROR_VARIABLE _cl_output
-      RESULT_VARIABLE _cl_result
-      )
-    include(${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}/result.cmake OPTIONAL)
-    if(CMAKE_${lang}_COMPILER AND "${_cl_result}" STREQUAL "0")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "${_desc} passed with the following output:\n"
-        "${_cl_output}\n")
-      set(_CHECK_COMPILER_STATUS CHECK_PASS)
-    else()
-      set(CMAKE_${lang}_COMPILER NOTFOUND)
-      set(_CHECK_COMPILER_STATUS CHECK_FAIL)
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "${_desc} failed with the following output:\n"
-        "${_cl_output}\n")
-    endif()
-    message(${_CHECK_COMPILER_STATUS} "${CMAKE_${lang}_COMPILER}")
-    set(CMAKE_${lang}_COMPILER "${CMAKE_${lang}_COMPILER}" CACHE FILEPATH "${lang} compiler")
-    mark_as_advanced(CMAKE_${lang}_COMPILER)
-
-    if(CMAKE_${lang}_HOST_COMPILER)
-      message(STATUS "Looking for a ${lang} host compiler - ${CMAKE_${lang}_HOST_COMPILER}")
-      set(CMAKE_${lang}_HOST_COMPILER "${CMAKE_${lang}_HOST_COMPILER}" CACHE FILEPATH "${lang} host compiler")
-      mark_as_advanced(CMAKE_${lang}_HOST_COMPILER)
-    endif()
-
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckLibraryExists.cmake b/share/cmake-3.18/Modules/CheckLibraryExists.cmake
deleted file mode 100644
index 6470dfd..0000000
--- a/share/cmake-3.18/Modules/CheckLibraryExists.cmake
+++ /dev/null
@@ -1,99 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckLibraryExists
-------------------
-
-Check if the function exists.
-
-.. command:: CHECK_LIBRARY_EXISTS
-
-  .. code-block:: cmake
-
-    CHECK_LIBRARY_EXISTS(LIBRARY FUNCTION LOCATION VARIABLE)
-
-  ::
-
-    LIBRARY  - the name of the library you are looking for
-    FUNCTION - the name of the function
-    LOCATION - location where the library should be found
-    VARIABLE - variable to store the result
-               Will be created as an internal cache variable.
-
-
-
-The following variables may be set before calling this macro to modify
-the way the check is run:
-
-::
-
-  CMAKE_REQUIRED_FLAGS = string of compile command line flags
-  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
-  CMAKE_REQUIRED_LINK_OPTIONS = list of options to pass to link command
-  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
-  CMAKE_REQUIRED_QUIET = execute quietly without messages
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_LIBRARY_EXISTS LIBRARY FUNCTION LOCATION VARIABLE)
-  if(NOT DEFINED "${VARIABLE}")
-    set(MACRO_CHECK_LIBRARY_EXISTS_DEFINITION
-      "-DCHECK_FUNCTION_EXISTS=${FUNCTION} ${CMAKE_REQUIRED_FLAGS}")
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Looking for ${FUNCTION} in ${LIBRARY}")
-    endif()
-    set(CHECK_LIBRARY_EXISTS_LINK_OPTIONS)
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(CHECK_LIBRARY_EXISTS_LINK_OPTIONS
-        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    endif()
-    set(CHECK_LIBRARY_EXISTS_LIBRARIES ${LIBRARY})
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_LIBRARY_EXISTS_LIBRARIES
-        ${CHECK_LIBRARY_EXISTS_LIBRARIES} ${CMAKE_REQUIRED_LIBRARIES})
-    endif()
-
-    if(CMAKE_C_COMPILER_LOADED)
-      set(_cle_source ${CMAKE_ROOT}/Modules/CheckFunctionExists.c)
-    elseif(CMAKE_CXX_COMPILER_LOADED)
-      set(_cle_source ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckLibraryExists/CheckFunctionExists.cxx)
-      configure_file(${CMAKE_ROOT}/Modules/CheckFunctionExists.c "${_cle_source}" COPYONLY)
-    else()
-      message(FATAL_ERROR "CHECK_FUNCTION_EXISTS needs either C or CXX language enabled")
-    endif()
-
-    try_compile(${VARIABLE}
-      ${CMAKE_BINARY_DIR}
-      ${_cle_source}
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${CHECK_LIBRARY_EXISTS_LINK_OPTIONS}
-      LINK_LIBRARIES ${CHECK_LIBRARY_EXISTS_LIBRARIES}
-      CMAKE_FLAGS
-      -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_LIBRARY_EXISTS_DEFINITION}
-      -DLINK_DIRECTORIES:STRING=${LOCATION}
-      OUTPUT_VARIABLE OUTPUT)
-    unset(_cle_source)
-
-    if(${VARIABLE})
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "found")
-      endif()
-      set(${VARIABLE} 1 CACHE INTERNAL "Have library ${LIBRARY}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Determining if the function ${FUNCTION} exists in the ${LIBRARY} "
-        "passed with the following output:\n"
-        "${OUTPUT}\n\n")
-    else()
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "not found")
-      endif()
-      set(${VARIABLE} "" CACHE INTERNAL "Have library ${LIBRARY}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Determining if the function ${FUNCTION} exists in the ${LIBRARY} "
-        "failed with the following output:\n"
-        "${OUTPUT}\n\n")
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckLinkerFlag.cmake b/share/cmake-3.18/Modules/CheckLinkerFlag.cmake
deleted file mode 100644
index beda5fe..0000000
--- a/share/cmake-3.18/Modules/CheckLinkerFlag.cmake
+++ /dev/null
@@ -1,81 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckLinkerFlag
----------------
-
-Check whether the compiler supports a given link flag.
-
-.. command:: check_linker_flag
-
-  .. code-block:: cmake
-
-    check_linker_flag(<lang> <flag> <var>)
-
-Check that the link ``<flag>`` is accepted by the ``<lang>`` compiler without
-a diagnostic.  Stores the result in an internal cache entry named ``<var>``.
-
-This command temporarily sets the ``CMAKE_REQUIRED_LINK_OPTIONS`` variable
-and calls the ``check_<lang>_source_compiles`` macro from the
-``Check<lang>SourceCompiles`` module (:module:`CheckCSourceCompiles`,
-:module:`CheckCSourceCompiles`, :module:`CheckCXXSourceCompiles`,
-:module:`CheckOBJCSourceCompiles`, :module:`CheckOBJCXXSourceCompiles` or
-:module:`CheckFortranSourceCompiles`).  See documentation of these
-modules for a listing of variables that can otherwise modify the build.
-
-The underlying implementation rely on :prop_tgt:`LINK_OPTIONS` property to
-check the specified flag. The ``LINKER:`` prefix, as described in
-:command:`target_link_options` command, can be used as well.
-
-A positive result from this check indicates only that the compiler did not
-issue a diagnostic message when given the link flag.  Whether the flag has any
-effect or even a specific one is beyond the scope of this module.
-
-.. note::
-  Since the :command:`try_compile` command forwards flags from variables
-  like :variable:`CMAKE_<LANG>_FLAGS`, unknown flags in such variables may
-  cause a false negative for this check.
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-include(CMakeCheckCompilerFlagCommonPatterns)
-
-function(CHECK_LINKER_FLAG _lang _flag _var)
-  get_property (_supported_languages GLOBAL PROPERTY ENABLED_LANGUAGES)
-  if (NOT _lang IN_LIST _supported_languages)
-    message (SEND_ERROR "check_linker_flag: ${_lang}: unknown language.")
-    return()
-  endif()
-
-  include (Check${_lang}SourceCompiles)
-
-  set(CMAKE_REQUIRED_LINK_OPTIONS "${_flag}")
-
-  # Normalize locale during test compilation.
-  set(_locale_vars LC_ALL LC_MESSAGES LANG)
-  foreach(v IN LISTS _locale_vars)
-    set(_locale_vars_saved_${v} "$ENV{${v}}")
-    set(ENV{${v}} C)
-  endforeach()
-
-  if (_lang MATCHES "^(C|CXX)$")
-    set (_source "int main() { return 0; }")
-  elseif (_lang STREQUAL "Fortran")
-    set (_source "       program test\n       stop\n       end program")
-  elseif (_lang MATCHES "^(OBJC|OBJCXX)$")
-    set (_source "#ifndef __OBJC__\n#  error \"Not an Objective-C++ compiler\"\n#endif\nint main(void) { return 0; }")
-  else()
-    message (SEND_ERROR "check_linker_flag: ${_lang}: unsupported language.")
-    return()
-  endif()
-  check_compiler_flag_common_patterns(_common_patterns)
-
-  cmake_language (CALL check_${_lang}_source_compiles "${_source}" ${_var} ${_common_patterns})
-
-  foreach(v IN LISTS _locale_vars)
-    set(ENV{${v}} ${_locale_vars_saved_${v}})
-  endforeach()
-  set(${_var} "${${_var}}" PARENT_SCOPE)
-endfunction()
diff --git a/share/cmake-3.18/Modules/CheckOBJCCompilerFlag.cmake b/share/cmake-3.18/Modules/CheckOBJCCompilerFlag.cmake
deleted file mode 100644
index 1d975da..0000000
--- a/share/cmake-3.18/Modules/CheckOBJCCompilerFlag.cmake
+++ /dev/null
@@ -1,64 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckOBJCCompilerFlag
----------------------
-
-Check whether the Objective-C compiler supports a given flag.
-
-.. command:: check_objc_compiler_flag
-
-  .. code-block:: cmake
-
-    check_objc_compiler_flag(<flag> <var>)
-
-  Check that the ``<flag>`` is accepted by the compiler without
-  a diagnostic.  Stores the result in an internal cache entry
-  named ``<var>``.
-
-This command temporarily sets the ``CMAKE_REQUIRED_DEFINITIONS`` variable
-and calls the ``check_objc_source_compiles`` macro from the
-:module:`CheckOBJCSourceCompiles` module.  See documentation of that
-module for a listing of variables that can otherwise modify the build.
-
-A positive result from this check indicates only that the compiler did not
-issue a diagnostic message when given the flag.  Whether the flag has any
-effect or even a specific one is beyond the scope of this module.
-
-.. note::
-  Since the :command:`try_compile` command forwards flags from variables
-  like :variable:`CMAKE_OBJC_FLAGS <CMAKE_<LANG>_FLAGS>`, unknown flags
-  in such variables may cause a false negative for this check.
-#]=======================================================================]
-
-include_guard(GLOBAL)
-include(CheckOBJCSourceCompiles)
-include(CMakeCheckCompilerFlagCommonPatterns)
-
-macro (CHECK_OBJC_COMPILER_FLAG _FLAG _RESULT)
-  set(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
-  set(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
-
-   # Normalize locale during test compilation.
-  set(_CheckOBJCCompilerFlag_LOCALE_VARS LC_ALL LC_MESSAGES LANG)
-  foreach(v ${_CheckOBJCCompilerFlag_LOCALE_VARS})
-    set(_CheckOBJCCompilerFlag_SAVED_${v} "$ENV{${v}}")
-    set(ENV{${v}} OBJC)
-  endforeach()
-  CHECK_COMPILER_FLAG_COMMON_PATTERNS(_CheckOBJCCompilerFlag_COMMON_PATTERNS)
-  CHECK_OBJC_SOURCE_COMPILES("#ifndef __OBJC__\n#  error \"Not an Objective-C compiler\"\n#endif\nint main(void) { return 0; }" ${_RESULT}
-    # Some compilers do not fail with a bad flag
-    FAIL_REGEX "command line option .* is valid for .* but not for Objective-C" # GNU
-    FAIL_REGEX "argument unused during compilation: .*" # Clang
-    ${_CheckOBJCCompilerFlag_COMMON_PATTERNS}
-    )
-  foreach(v ${_CheckOBJCCompilerFlag_LOCALE_VARS})
-    set(ENV{${v}} ${_CheckOBJCCompilerFlag_SAVED_${v}})
-    unset(_CheckOBJCCompilerFlag_SAVED_${v})
-  endforeach()
-  unset(_CheckOBJCCompilerFlag_LOCALE_VARS)
-  unset(_CheckOBJCCompilerFlag_COMMON_PATTERNS)
-
-  set (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
-endmacro ()
diff --git a/share/cmake-3.18/Modules/CheckOBJCSourceCompiles.cmake b/share/cmake-3.18/Modules/CheckOBJCSourceCompiles.cmake
deleted file mode 100644
index 601f1fa..0000000
--- a/share/cmake-3.18/Modules/CheckOBJCSourceCompiles.cmake
+++ /dev/null
@@ -1,145 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckOBJCSourceCompiles
------------------------
-
-Check if given Objective-C source compiles and links into an executable.
-
-.. command:: check_objc_source_compiles
-
-  .. code-block:: cmake
-
-    check_objc_source_compiles(<code> <resultVar>
-                               [FAIL_REGEX <regex1> [<regex2>...]])
-
-  Check that the source supplied in ``<code>`` can be compiled as a Objectie-C source
-  file and linked as an executable (so it must contain at least a ``main()``
-  function). The result will be stored in the internal cache variable specified
-  by ``<resultVar>``, with a boolean true value for success and boolean false
-  for failure. If ``FAIL_REGEX`` is provided, then failure is determined by
-  checking if anything in the output matches any of the specified regular
-  expressions.
-
-  The underlying check is performed by the :command:`try_compile` command. The
-  compile and link commands can be influenced by setting any of the following
-  variables prior to calling ``check_objc_source_compiles()``:
-
-  ``CMAKE_REQUIRED_FLAGS``
-    Additional flags to pass to the compiler. Note that the contents of
-    :variable:`CMAKE_OBJC_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
-    configuration-specific variable are automatically added to the compiler
-    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
-
-  ``CMAKE_REQUIRED_DEFINITIONS``
-    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
-    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
-    ``<resultVar>`` will also be added automatically.
-
-  ``CMAKE_REQUIRED_INCLUDES``
-    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
-    the compiler. These will be the only header search paths used by
-    ``try_compile()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
-    directory property will be ignored.
-
-  ``CMAKE_REQUIRED_LINK_OPTIONS``
-    A :ref:`;-list <CMake Language Lists>` of options to add to the link
-    command (see :command:`try_compile` for further details).
-
-  ``CMAKE_REQUIRED_LIBRARIES``
-    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-    command. These can be the name of system libraries or they can be
-    :ref:`Imported Targets <Imported Targets>` (see :command:`try_compile` for
-    further details).
-
-  ``CMAKE_REQUIRED_QUIET``
-    If this variable evaluates to a boolean true value, all status messages
-    associated with the check will be suppressed.
-
-  The check is only performed once, with the result cached in the variable
-  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
-  value rather than performing the check again, even if the ``<code>`` changes.
-  In order to force the check to be re-evaluated, the variable named by
-  ``<resultVar>`` must be manually removed from the cache.
-
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_OBJC_SOURCE_COMPILES SOURCE VAR)
-  if(NOT DEFINED "${VAR}")
-    set(_FAIL_REGEX)
-    set(_key)
-    foreach(arg ${ARGN})
-      if("${arg}" MATCHES "^(FAIL_REGEX)$")
-        set(_key "${arg}")
-      elseif(_key)
-        list(APPEND _${_key} "${arg}")
-      else()
-        message(FATAL_ERROR "Unknown argument:\n  ${arg}\n")
-      endif()
-    endforeach()
-    set(MACRO_CHECK_FUNCTION_DEFINITIONS
-      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(CHECK_OBJC_SOURCE_COMPILES_ADD_LINK_OPTIONS
-        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    else()
-      set(CHECK_OBJC_SOURCE_COMPILES_ADD_LINK_OPTIONS)
-    endif()
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_OBJC_SOURCE_COMPILES_ADD_LIBRARIES
-        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-    else()
-      set(CHECK_OBJC_SOURCE_COMPILES_ADD_LIBRARIES)
-    endif()
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_OBJC_SOURCE_COMPILES_ADD_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_OBJC_SOURCE_COMPILES_ADD_INCLUDES)
-    endif()
-    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.m"
-      "${SOURCE}\n")
-
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Performing Test ${VAR}")
-    endif()
-    try_compile(${VAR}
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.m
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${CHECK_OBJC_SOURCE_COMPILES_ADD_LINK_OPTIONS}
-      ${CHECK_OBJC_SOURCE_COMPILES_ADD_LIBRARIES}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
-      "${CHECK_OBJC_SOURCE_COMPILES_ADD_INCLUDES}"
-      OUTPUT_VARIABLE OUTPUT)
-
-    foreach(_regex ${_FAIL_REGEX})
-      if("${OUTPUT}" MATCHES "${_regex}")
-        set(${VAR} 0)
-      endif()
-    endforeach()
-
-    if(${VAR})
-      set(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "Success")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing Objective-C SOURCE FILE Test ${VAR} succeeded with the following output:\n"
-        "${OUTPUT}\n"
-        "Source file was:\n${SOURCE}\n")
-    else()
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "Failed")
-      endif()
-      set(${VAR} "" CACHE INTERNAL "Test ${VAR}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Performing Objective-C SOURCE FILE Test ${VAR} failed with the following output:\n"
-        "${OUTPUT}\n"
-        "Source file was:\n${SOURCE}\n")
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckOBJCSourceRuns.cmake b/share/cmake-3.18/Modules/CheckOBJCSourceRuns.cmake
deleted file mode 100644
index 6684693..0000000
--- a/share/cmake-3.18/Modules/CheckOBJCSourceRuns.cmake
+++ /dev/null
@@ -1,145 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckOBJCSourceRuns
--------------------
-
-Check if given Objective-C source compiles and links into an executable and can
-subsequently be run.
-
-.. command:: check_objc_source_runs
-
-  .. code-block:: cmake
-
-    check_objc_source_runs(<code> <resultVar>)
-
-  Check that the source supplied in ``<code>`` can be compiled as a Objective-C source
-  file, linked as an executable and then run. The ``<code>`` must contain at
-  least a ``main()`` function. If the ``<code>`` could be built and run
-  successfully, the internal cache variable specified by ``<resultVar>`` will
-  be set to 1, otherwise it will be set to an value that evaluates to boolean
-  false (e.g. an empty string or an error message).
-
-  The underlying check is performed by the :command:`try_run` command. The
-  compile and link commands can be influenced by setting any of the following
-  variables prior to calling ``check_objc_source_runs()``:
-
-  ``CMAKE_REQUIRED_FLAGS``
-    Additional flags to pass to the compiler. Note that the contents of
-    :variable:`CMAKE_OBJC_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
-    configuration-specific variable are automatically added to the compiler
-    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
-
-  ``CMAKE_REQUIRED_DEFINITIONS``
-    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
-    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
-    ``<resultVar>`` will also be added automatically.
-
-  ``CMAKE_REQUIRED_INCLUDES``
-    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
-    the compiler. These will be the only header search paths used by
-    ``try_run()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
-    directory property will be ignored.
-
-  ``CMAKE_REQUIRED_LINK_OPTIONS``
-    A :ref:`;-list <CMake Language Lists>` of options to add to the link
-    command (see :command:`try_run` for further details).
-
-  ``CMAKE_REQUIRED_LIBRARIES``
-    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-    command. These can be the name of system libraries or they can be
-    :ref:`Imported Targets <Imported Targets>` (see :command:`try_run` for
-    further details).
-
-  ``CMAKE_REQUIRED_QUIET``
-    If this variable evaluates to a boolean true value, all status messages
-    associated with the check will be suppressed.
-
-  The check is only performed once, with the result cached in the variable
-  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
-  value rather than performing the check again, even if the ``<code>`` changes.
-  In order to force the check to be re-evaluated, the variable named by
-  ``<resultVar>`` must be manually removed from the cache.
-
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_OBJC_SOURCE_RUNS SOURCE VAR)
-  if(NOT DEFINED "${VAR}")
-    set(MACRO_CHECK_FUNCTION_DEFINITIONS
-      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(CHECK_OBJC_SOURCE_COMPILES_ADD_LINK_OPTIONS
-        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    else()
-      set(CHECK_OBJC_SOURCE_COMPILES_ADD_LINK_OPTIONS)
-    endif()
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_OBJC_SOURCE_COMPILES_ADD_LIBRARIES
-        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-    else()
-      set(CHECK_OBJC_SOURCE_COMPILES_ADD_LIBRARIES)
-    endif()
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_OBJC_SOURCE_COMPILES_ADD_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_OBJC_SOURCE_COMPILES_ADD_INCLUDES)
-    endif()
-    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.m"
-      "${SOURCE}\n")
-
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Performing Test ${VAR}")
-    endif()
-    try_run(${VAR}_EXITCODE ${VAR}_COMPILED
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.m
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${CHECK_OBJC_SOURCE_COMPILES_ADD_LINK_OPTIONS}
-      ${CHECK_OBJC_SOURCE_COMPILES_ADD_LIBRARIES}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
-      -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
-      "${CHECK_OBJC_SOURCE_COMPILES_ADD_INCLUDES}"
-      COMPILE_OUTPUT_VARIABLE OUTPUT
-      RUN_OUTPUT_VARIABLE RUN_OUTPUT)
-    # if it did not compile make the return value fail code of 1
-    if(NOT ${VAR}_COMPILED)
-      set(${VAR}_EXITCODE 1)
-    endif()
-    # if the return value was 0 then it worked
-    if("${${VAR}_EXITCODE}" EQUAL 0)
-      set(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "Success")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing Objective-C SOURCE FILE Test ${VAR} succeeded with the following compile output:\n"
-        "${OUTPUT}\n"
-        "...and run output:\n"
-        "${RUN_OUTPUT}\n"
-        "Return value: ${${VAR}}\n"
-        "Source file was:\n${SOURCE}\n")
-    else()
-      if(CMAKE_CROSSCOMPILING AND "${${VAR}_EXITCODE}" MATCHES  "FAILED_TO_RUN")
-        set(${VAR} "${${VAR}_EXITCODE}")
-      else()
-        set(${VAR} "" CACHE INTERNAL "Test ${VAR}")
-      endif()
-
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "Failed")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Performing Objective-C SOURCE FILE Test ${VAR} failed with the following compile output:\n"
-        "${OUTPUT}\n"
-        "...and run output:\n"
-        "${RUN_OUTPUT}\n"
-        "Return value: ${${VAR}_EXITCODE}\n"
-        "Source file was:\n${SOURCE}\n")
-
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckOBJCXXCompilerFlag.cmake b/share/cmake-3.18/Modules/CheckOBJCXXCompilerFlag.cmake
deleted file mode 100644
index c32741b..0000000
--- a/share/cmake-3.18/Modules/CheckOBJCXXCompilerFlag.cmake
+++ /dev/null
@@ -1,64 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckOBJCXXCompilerFlag
------------------------
-
-Check whether the Objective-C++ compiler supports a given flag.
-
-.. command:: check_objcxx_compiler_flag
-
-  .. code-block:: cmake
-
-    check_objcxx_compiler_flag(<flag> <var>)
-
-  Check that the ``<flag>`` is accepted by the compiler without
-  a diagnostic.  Stores the result in an internal cache entry
-  named ``<var>``.
-
-This command temporarily sets the ``CMAKE_REQUIRED_DEFINITIONS`` variable
-and calls the ``check_objcxx_source_compiles`` macro from the
-:module:`CheckOBJCXXSourceCompiles` module.  See documentation of that
-module for a listing of variables that can otherwise modify the build.
-
-A positive result from this check indicates only that the compiler did not
-issue a diagnostic message when given the flag.  Whether the flag has any
-effect or even a specific one is beyond the scope of this module.
-
-.. note::
-  Since the :command:`try_compile` command forwards flags from variables
-  like :variable:`CMAKE_OBJCXX_FLAGS <CMAKE_<LANG>_FLAGS>`, unknown flags
-  in such variables may cause a false negative for this check.
-#]=======================================================================]
-
-include_guard(GLOBAL)
-include(CheckOBJCXXSourceCompiles)
-include(CMakeCheckCompilerFlagCommonPatterns)
-
-macro (CHECK_OBJCXX_COMPILER_FLAG _FLAG _RESULT)
-  set(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
-  set(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
-
-  # Normalize locale during test compilation.
-  set(_CheckOBJCXXCompilerFlag_LOCALE_VARS LC_ALL LC_MESSAGES LANG)
-  foreach(v ${_CheckOBJCXXCompilerFlag_LOCALE_VARS})
-    set(_CheckOBJCXXCompilerFlag_SAVED_${v} "$ENV{${v}}")
-    set(ENV{${v}} OBJCXX)
-  endforeach()
-  CHECK_COMPILER_FLAG_COMMON_PATTERNS(_CheckOBJCXXCompilerFlag_COMMON_PATTERNS)
-  CHECK_OBJCXX_SOURCE_COMPILES("#ifndef __OBJC__\n#  error \"Not an Objective-C++ compiler\"\n#endif\nint main(void) { return 0; }" ${_RESULT}
-    # Some compilers do not fail with a bad flag
-    FAIL_REGEX "command line option .* is valid for .* but not for Objective-C\\\\+\\\\+" # GNU
-    FAIL_REGEX "argument unused during compilation: .*" # Clang
-    ${_CheckOBJCXXCompilerFlag_COMMON_PATTERNS}
-    )
-  foreach(v ${_CheckOBJCXXCompilerFlag_LOCALE_VARS})
-    set(ENV{${v}} ${_CheckOBJCXXCompilerFlag_SAVED_${v}})
-    unset(_CheckOBJCXXCompilerFlag_SAVED_${v})
-  endforeach()
-  unset(_CheckOBJCXXCompilerFlag_LOCALE_VARS)
-  unset(_CheckOBJCXXCompilerFlag_COMMON_PATTERNS)
-
-  set (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
-endmacro ()
diff --git a/share/cmake-3.18/Modules/CheckOBJCXXSourceCompiles.cmake b/share/cmake-3.18/Modules/CheckOBJCXXSourceCompiles.cmake
deleted file mode 100644
index 2ee79f4..0000000
--- a/share/cmake-3.18/Modules/CheckOBJCXXSourceCompiles.cmake
+++ /dev/null
@@ -1,146 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckOBJCXXSourceCompiles
--------------------------
-
-Check if given Objective-C++ source compiles and links into an executable.
-
-.. command:: check_objcxx_source_compiles
-
-  .. code-block:: cmake
-
-    check_objcxx_source_compiles(<code> <resultVar>
-                                 [FAIL_REGEX <regex1> [<regex2>...]])
-
-  Check that the source supplied in ``<code>`` can be compiled as a Objective-C++ source
-  file and linked as an executable (so it must contain at least a ``main()``
-  function). The result will be stored in the internal cache variable specified
-  by ``<resultVar>``, with a boolean true value for success and boolean false
-  for failure. If ``FAIL_REGEX`` is provided, then failure is determined by
-  checking if anything in the output matches any of the specified regular
-  expressions.
-
-  The underlying check is performed by the :command:`try_compile` command. The
-  compile and link commands can be influenced by setting any of the following
-  variables prior to calling ``check_objcxx_source_compiles()``:
-
-  ``CMAKE_REQUIRED_FLAGS``
-    Additional flags to pass to the compiler. Note that the contents of
-    :variable:`CMAKE_OBJCXX_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
-    configuration-specific variable are automatically added to the compiler
-    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
-
-  ``CMAKE_REQUIRED_DEFINITIONS``
-    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
-    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
-    ``<resultVar>`` will also be added automatically.
-
-  ``CMAKE_REQUIRED_INCLUDES``
-    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
-    the compiler. These will be the only header search paths used by
-    ``try_compile()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
-    directory property will be ignored.
-
-  ``CMAKE_REQUIRED_LINK_OPTIONS``
-    A :ref:`;-list <CMake Language Lists>` of options to add to the link
-    command (see :command:`try_compile` for further details).
-
-  ``CMAKE_REQUIRED_LIBRARIES``
-    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-    command. These can be the name of system libraries or they can be
-    :ref:`Imported Targets <Imported Targets>` (see :command:`try_compile` for
-    further details).
-
-  ``CMAKE_REQUIRED_QUIET``
-    If this variable evaluates to a boolean true value, all status messages
-    associated with the check will be suppressed.
-
-  The check is only performed once, with the result cached in the variable
-  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
-  value rather than performing the check again, even if the ``<code>`` changes.
-  In order to force the check to be re-evaluated, the variable named by
-  ``<resultVar>`` must be manually removed from the cache.
-
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_OBJCXX_SOURCE_COMPILES SOURCE VAR)
-  if(NOT DEFINED "${VAR}")
-    set(_FAIL_REGEX)
-    set(_key)
-    foreach(arg ${ARGN})
-      if("${arg}" MATCHES "^(FAIL_REGEX)$")
-        set(_key "${arg}")
-      elseif(_key)
-        list(APPEND _${_key} "${arg}")
-      else()
-        message(FATAL_ERROR "Unknown argument:\n  ${arg}\n")
-      endif()
-    endforeach()
-
-    set(MACRO_CHECK_FUNCTION_DEFINITIONS
-      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(CHECK_OBJCXX_SOURCE_COMPILES_ADD_LINK_OPTIONS
-        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    else()
-      set(CHECK_OBJCXX_SOURCE_COMPILES_ADD_LINK_OPTIONS)
-    endif()
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_OBJCXX_SOURCE_COMPILES_ADD_LIBRARIES
-        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-    else()
-      set(CHECK_OBJCXX_SOURCE_COMPILES_ADD_LIBRARIES)
-    endif()
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_OBJCXX_SOURCE_COMPILES_ADD_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_OBJCXX_SOURCE_COMPILES_ADD_INCLUDES)
-    endif()
-    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.mm"
-      "${SOURCE}\n")
-
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Performing Test ${VAR}")
-    endif()
-    try_compile(${VAR}
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.mm
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${CHECK_OBJCXX_SOURCE_COMPILES_ADD_LINK_OPTIONS}
-      ${CHECK_OBJCXX_SOURCE_COMPILES_ADD_LIBRARIES}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
-      "${CHECK_OBJCXX_SOURCE_COMPILES_ADD_INCLUDES}"
-      OUTPUT_VARIABLE OUTPUT)
-
-    foreach(_regex ${_FAIL_REGEX})
-      if("${OUTPUT}" MATCHES "${_regex}")
-        set(${VAR} 0)
-      endif()
-    endforeach()
-
-    if(${VAR})
-      set(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "Success")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing Objective-C++ SOURCE FILE Test ${VAR} succeeded with the following output:\n"
-        "${OUTPUT}\n"
-        "Source file was:\n${SOURCE}\n")
-    else()
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "Failed")
-      endif()
-      set(${VAR} "" CACHE INTERNAL "Test ${VAR}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Performing Objective-C++ SOURCE FILE Test ${VAR} failed with the following output:\n"
-        "${OUTPUT}\n"
-        "Source file was:\n${SOURCE}\n")
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckOBJCXXSourceRuns.cmake b/share/cmake-3.18/Modules/CheckOBJCXXSourceRuns.cmake
deleted file mode 100644
index 7f7e04f..0000000
--- a/share/cmake-3.18/Modules/CheckOBJCXXSourceRuns.cmake
+++ /dev/null
@@ -1,145 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckOBJCXXSourceRuns
----------------------
-
-Check if given Objective-C++ source compiles and links into an executable and can
-subsequently be run.
-
-.. command:: check_objcxx_source_runs
-
-  .. code-block:: cmake
-
-    check_objcxx_source_runs(<code> <resultVar>)
-
-  Check that the source supplied in ``<code>`` can be compiled as a Objective-C++ source
-  file, linked as an executable and then run. The ``<code>`` must contain at
-  least a ``main()`` function. If the ``<code>`` could be built and run
-  successfully, the internal cache variable specified by ``<resultVar>`` will
-  be set to 1, otherwise it will be set to an value that evaluates to boolean
-  false (e.g. an empty string or an error message).
-
-  The underlying check is performed by the :command:`try_run` command. The
-  compile and link commands can be influenced by setting any of the following
-  variables prior to calling ``check_objcxx_source_runs()``:
-
-  ``CMAKE_REQUIRED_FLAGS``
-    Additional flags to pass to the compiler. Note that the contents of
-    :variable:`CMAKE_OBJCXX_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
-    configuration-specific variable are automatically added to the compiler
-    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
-
-  ``CMAKE_REQUIRED_DEFINITIONS``
-    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
-    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
-    ``<resultVar>`` will also be added automatically.
-
-  ``CMAKE_REQUIRED_INCLUDES``
-    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
-    the compiler. These will be the only header search paths used by
-    ``try_run()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
-    directory property will be ignored.
-
-  ``CMAKE_REQUIRED_LINK_OPTIONS``
-    A :ref:`;-list <CMake Language Lists>` of options to add to the link
-    command (see :command:`try_run` for further details).
-
-  ``CMAKE_REQUIRED_LIBRARIES``
-    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-    command. These can be the name of system libraries or they can be
-    :ref:`Imported Targets <Imported Targets>` (see :command:`try_run` for
-    further details).
-
-  ``CMAKE_REQUIRED_QUIET``
-    If this variable evaluates to a boolean true value, all status messages
-    associated with the check will be suppressed.
-
-  The check is only performed once, with the result cached in the variable
-  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
-  value rather than performing the check again, even if the ``<code>`` changes.
-  In order to force the check to be re-evaluated, the variable named by
-  ``<resultVar>`` must be manually removed from the cache.
-
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_OBJCXX_SOURCE_RUNS SOURCE VAR)
-  if(NOT DEFINED "${VAR}")
-    set(MACRO_CHECK_FUNCTION_DEFINITIONS
-      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(CHECK_OBJCXX_SOURCE_COMPILES_ADD_LINK_OPTIONS
-        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    else()
-      set(CHECK_OBJCXX_SOURCE_COMPILES_ADD_LINK_OPTIONS)
-    endif()
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_OBJCXX_SOURCE_COMPILES_ADD_LIBRARIES
-        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-    else()
-      set(CHECK_OBJCXX_SOURCE_COMPILES_ADD_LIBRARIES)
-    endif()
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_OBJCXX_SOURCE_COMPILES_ADD_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_OBJCXX_SOURCE_COMPILES_ADD_INCLUDES)
-    endif()
-    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.mm"
-      "${SOURCE}\n")
-
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Performing Test ${VAR}")
-    endif()
-    try_run(${VAR}_EXITCODE ${VAR}_COMPILED
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.mm
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${CHECK_OBJCXX_SOURCE_COMPILES_ADD_LINK_OPTIONS}
-      ${CHECK_OBJCXX_SOURCE_COMPILES_ADD_LIBRARIES}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
-      -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
-      "${CHECK_OBJCXX_SOURCE_COMPILES_ADD_INCLUDES}"
-      COMPILE_OUTPUT_VARIABLE OUTPUT
-      RUN_OUTPUT_VARIABLE RUN_OUTPUT)
-
-    # if it did not compile make the return value fail code of 1
-    if(NOT ${VAR}_COMPILED)
-      set(${VAR}_EXITCODE 1)
-    endif()
-    # if the return value was 0 then it worked
-    if("${${VAR}_EXITCODE}" EQUAL 0)
-      set(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "Success")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing Objective-C++ SOURCE FILE Test ${VAR} succeeded with the following output:\n"
-        "${OUTPUT}\n"
-        "...and run output:\n"
-        "${RUN_OUTPUT}\n"
-        "Return value: ${${VAR}}\n"
-        "Source file was:\n${SOURCE}\n")
-    else()
-      if(CMAKE_CROSSCOMPILING AND "${${VAR}_EXITCODE}" MATCHES  "FAILED_TO_RUN")
-        set(${VAR} "${${VAR}_EXITCODE}")
-      else()
-        set(${VAR} "" CACHE INTERNAL "Test ${VAR}")
-      endif()
-
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "Failed")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Performing Objective-C++ SOURCE FILE Test ${VAR} failed with the following output:\n"
-        "${OUTPUT}\n"
-        "...and run output:\n"
-        "${RUN_OUTPUT}\n"
-        "Return value: ${${VAR}_EXITCODE}\n"
-        "Source file was:\n${SOURCE}\n")
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/CheckPIESupported.cmake b/share/cmake-3.18/Modules/CheckPIESupported.cmake
deleted file mode 100644
index 6d63f0b..0000000
--- a/share/cmake-3.18/Modules/CheckPIESupported.cmake
+++ /dev/null
@@ -1,134 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckPIESupported
------------------
-
-Check whether the linker supports Position Independent Code (PIE) or No
-Position Independent Code (NO_PIE) for executables.
-Use this to ensure that the :prop_tgt:`POSITION_INDEPENDENT_CODE` target
-property for executables will be honored at link time.
-
-.. command:: check_pie_supported
-
-  ::
-
-    check_pie_supported([OUTPUT_VARIABLE <output>]
-                        [LANGUAGES <lang>...])
-
-  Options are:
-
-  ``OUTPUT_VARIABLE <output>``
-    Set ``<output>`` variable with details about any error.
-  ``LANGUAGES <lang>...``
-    Check the linkers used for each of the specified languages.
-    Supported languages are ``C``, ``CXX``, and ``Fortran``.
-
-It makes no sense to use this module when :policy:`CMP0083` is set to ``OLD``,
-so the command will return an error in this case.  See policy :policy:`CMP0083`
-for details.
-
-Variables
-^^^^^^^^^
-
-For each language checked, two boolean cache variables are defined.
-
- ``CMAKE_<lang>_LINK_PIE_SUPPORTED``
-   Set to ``YES`` if ``PIE`` is supported by the linker and ``NO`` otherwise.
- ``CMAKE_<lang>_LINK_NO_PIE_SUPPORTED``
-   Set to ``YES`` if ``NO_PIE`` is supported by the linker and ``NO`` otherwise.
-
-Examples
-^^^^^^^^
-
-.. code-block:: cmake
-
-  check_pie_supported()
-  set_property(TARGET foo PROPERTY POSITION_INDEPENDENT_CODE TRUE)
-
-.. code-block:: cmake
-
-  # Retrieve any error message.
-  check_pie_supported(OUTPUT_VARIABLE output LANGUAGES C)
-  set_property(TARGET foo PROPERTY POSITION_INDEPENDENT_CODE TRUE)
-  if(NOT CMAKE_C_LINK_PIE_SUPPORTED)
-    message(WARNING "PIE is not supported at link time: ${output}.\n"
-                    "PIE link options will not be passed to linker.")
-  endif()
-
-#]=======================================================================]
-
-
-include (Internal/CMakeCheckCompilerFlag)
-
-function (check_pie_supported)
-  cmake_policy(GET CMP0083 cmp0083)
-
-  if (NOT cmp0083)
-    message(FATAL_ERROR "check_pie_supported: Policy CMP0083 is not set")
-  endif()
-
-  if(cmp0083 STREQUAL "OLD")
-    message(FATAL_ERROR "check_pie_supported: Policy CMP0083 set to OLD")
-  endif()
-
-  set(optional)
-  set(one OUTPUT_VARIABLE)
-  set(multiple LANGUAGES)
-
-  cmake_parse_arguments(CHECK_PIE "${optional}" "${one}" "${multiple}" "${ARGN}")
-  if(CHECK_PIE_UNPARSED_ARGUMENTS)
-    message(FATAL_ERROR "check_pie_supported: Unparsed arguments: ${CHECK_PIE_UNPARSED_ARGUMENTS}")
-  endif()
-
-  if (CHECK_PIE_LANGUAGES)
-    set (unsupported_languages "${CHECK_PIE_LANGUAGES}")
-    list (REMOVE_ITEM unsupported_languages "C" "CXX" "Fortran")
-    if(unsupported_languages)
-      message(FATAL_ERROR "check_pie_supported: language(s) '${unsupported_languages}' not supported")
-    endif()
-  else()
-    # User did not set any languages, use defaults
-    get_property (enabled_languages GLOBAL PROPERTY ENABLED_LANGUAGES)
-    if (NOT enabled_languages)
-      return()
-    endif()
-
-    list (FILTER enabled_languages INCLUDE REGEX "^(C|CXX|Fortran)$")
-    if (NOT enabled_languages)
-      return()
-    endif()
-
-    set (CHECK_PIE_LANGUAGES ${enabled_languages})
-  endif()
-
-  set (outputs)
-
-  foreach(lang IN LISTS CHECK_PIE_LANGUAGES)
-    if(_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER)
-      cmake_check_compiler_flag(${lang} "${CMAKE_${lang}_LINK_OPTIONS_PIE}"
-                                CMAKE_${lang}_LINK_PIE_SUPPORTED
-                                OUTPUT_VARIABLE output)
-      if (NOT CMAKE_${lang}_LINK_PIE_SUPPORTED)
-        string (APPEND outputs "PIE (${lang}): ${output}\n")
-      endif()
-
-      cmake_check_compiler_flag(${lang} "${CMAKE_${lang}_LINK_OPTIONS_NO_PIE}"
-                                CMAKE_${lang}_LINK_NO_PIE_SUPPORTED
-                                OUTPUT_VARIABLE output)
-      if (NOT CMAKE_${lang}_LINK_NO_PIE_SUPPORTED)
-        string (APPEND outputs "NO_PIE (${lang}): ${output}\n")
-      endif()
-    else()
-      # no support at link time. Set cache variables to NO
-      set(CMAKE_${lang}_LINK_PIE_SUPPORTED NO CACHE INTERNAL "PIE (${lang})")
-      set(CMAKE_${lang}_LINK_NO_PIE_SUPPORTED NO CACHE INTERNAL "NO_PIE (${lang})")
-      string (APPEND outputs "PIE and NO_PIE are not supported by linker for ${lang}")
-    endif()
-  endforeach()
-
-  if (CHECK_PIE_OUTPUT_VARIABLE)
-    set (${CHECK_PIE_OUTPUT_VARIABLE} "${outputs}" PARENT_SCOPE)
-  endif()
-endfunction()
diff --git a/share/cmake-3.18/Modules/CheckPrototypeDefinition.cmake b/share/cmake-3.18/Modules/CheckPrototypeDefinition.cmake
deleted file mode 100644
index 8b06403..0000000
--- a/share/cmake-3.18/Modules/CheckPrototypeDefinition.cmake
+++ /dev/null
@@ -1,125 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckPrototypeDefinition
-------------------------
-
-Check if the prototype we expect is correct.
-
-.. command:: check_prototype_definition
-
-  .. code-block:: cmake
-
-    check_prototype_definition(FUNCTION PROTOTYPE RETURN HEADER VARIABLE)
-
-  ::
-
-    FUNCTION - The name of the function (used to check if prototype exists)
-    PROTOTYPE- The prototype to check.
-    RETURN - The return value of the function.
-    HEADER - The header files required.
-    VARIABLE - The variable to store the result.
-               Will be created as an internal cache variable.
-
-  Example:
-
-  .. code-block:: cmake
-
-    check_prototype_definition(getpwent_r
-     "struct passwd *getpwent_r(struct passwd *src, char *buf, int buflen)"
-     "NULL"
-     "unistd.h;pwd.h"
-     SOLARIS_GETPWENT_R)
-
-The following variables may be set before calling this function to modify
-the way the check is run:
-
-::
-
-  CMAKE_REQUIRED_FLAGS = string of compile command line flags
-  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
-  CMAKE_REQUIRED_INCLUDES = list of include directories
-  CMAKE_REQUIRED_LINK_OPTIONS = list of options to pass to link command
-  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
-  CMAKE_REQUIRED_QUIET = execute quietly without messages
-#]=======================================================================]
-
-#
-
-get_filename_component(__check_proto_def_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
-
-include_guard(GLOBAL)
-
-function(check_prototype_definition _FUNCTION _PROTOTYPE _RETURN _HEADER _VARIABLE)
-
-  if (NOT DEFINED ${_VARIABLE})
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Checking prototype ${_FUNCTION} for ${_VARIABLE}")
-    endif()
-    set(CHECK_PROTOTYPE_DEFINITION_CONTENT "/* */\n")
-
-    set(CHECK_PROTOTYPE_DEFINITION_FLAGS ${CMAKE_REQUIRED_FLAGS})
-    if (CMAKE_REQUIRED_LINK_OPTIONS)
-      set(CHECK_PROTOTYPE_DEFINITION_LINK_OPTIONS
-        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    else()
-      set(CHECK_PROTOTYPE_DEFINITION_LINK_OPTIONS)
-    endif()
-    if (CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_PROTOTYPE_DEFINITION_LIBS
-        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-    else()
-      set(CHECK_PROTOTYPE_DEFINITION_LIBS)
-    endif()
-    if (CMAKE_REQUIRED_INCLUDES)
-      set(CMAKE_SYMBOL_EXISTS_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CMAKE_SYMBOL_EXISTS_INCLUDES)
-    endif()
-
-    foreach(_FILE ${_HEADER})
-      string(APPEND CHECK_PROTOTYPE_DEFINITION_HEADER
-        "#include <${_FILE}>\n")
-    endforeach()
-
-    set(CHECK_PROTOTYPE_DEFINITION_SYMBOL ${_FUNCTION})
-    set(CHECK_PROTOTYPE_DEFINITION_PROTO ${_PROTOTYPE})
-    set(CHECK_PROTOTYPE_DEFINITION_RETURN ${_RETURN})
-
-    configure_file("${__check_proto_def_dir}/CheckPrototypeDefinition.c.in"
-      "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckPrototypeDefinition.c" @ONLY)
-
-    file(READ ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckPrototypeDefinition.c _SOURCE)
-
-    try_compile(${_VARIABLE}
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckPrototypeDefinition.c
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${CHECK_PROTOTYPE_DEFINITION_LINK_OPTIONS}
-      ${CHECK_PROTOTYPE_DEFINITION_LIBS}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${CHECK_PROTOTYPE_DEFINITION_FLAGS}
-      "${CMAKE_SYMBOL_EXISTS_INCLUDES}"
-      OUTPUT_VARIABLE OUTPUT)
-
-    if (${_VARIABLE})
-      set(${_VARIABLE} 1 CACHE INTERNAL "Have correct prototype for ${_FUNCTION}")
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "True")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Determining if the prototype ${_FUNCTION} exists for ${_VARIABLE} passed with the following output:\n"
-        "${OUTPUT}\n\n")
-    else ()
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "False")
-      endif()
-      set(${_VARIABLE} 0 CACHE INTERNAL "Have correct prototype for ${_FUNCTION}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Determining if the prototype ${_FUNCTION} exists for ${_VARIABLE} failed with the following output:\n"
-        "${OUTPUT}\n\n${_SOURCE}\n\n")
-    endif ()
-  endif()
-
-endfunction()
diff --git a/share/cmake-3.18/Modules/CheckStructHasMember.cmake b/share/cmake-3.18/Modules/CheckStructHasMember.cmake
deleted file mode 100644
index 842a8fd..0000000
--- a/share/cmake-3.18/Modules/CheckStructHasMember.cmake
+++ /dev/null
@@ -1,82 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckStructHasMember
---------------------
-
-Check if the given struct or class has the specified member variable
-
-.. command:: CHECK_STRUCT_HAS_MEMBER
-
-  .. code-block:: cmake
-
-    CHECK_STRUCT_HAS_MEMBER(<struct> <member> <header> <variable>
-                            [LANGUAGE <language>])
-
-  ::
-
-    <struct> - the name of the struct or class you are interested in
-    <member> - the member which existence you want to check
-    <header> - the header(s) where the prototype should be declared
-    <variable> - variable to store the result
-    <language> - the compiler to use (C or CXX)
-
-
-
-The following variables may be set before calling this macro to modify
-the way the check is run:
-
-::
-
-  CMAKE_REQUIRED_FLAGS = string of compile command line flags
-  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
-  CMAKE_REQUIRED_INCLUDES = list of include directories
-  CMAKE_REQUIRED_LINK_OPTIONS = list of options to pass to link command
-  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
-  CMAKE_REQUIRED_QUIET = execute quietly without messages
-
-
-Example:
-
-.. code-block:: cmake
-
-  CHECK_STRUCT_HAS_MEMBER("struct timeval" tv_sec sys/select.h
-                          HAVE_TIMEVAL_TV_SEC LANGUAGE C)
-#]=======================================================================]
-
-include_guard(GLOBAL)
-include(CheckCSourceCompiles)
-include(CheckCXXSourceCompiles)
-
-macro (CHECK_STRUCT_HAS_MEMBER _STRUCT _MEMBER _HEADER _RESULT)
-  set(_INCLUDE_FILES)
-  foreach (it ${_HEADER})
-    string(APPEND _INCLUDE_FILES "#include <${it}>\n")
-  endforeach ()
-
-  if("x${ARGN}" STREQUAL "x")
-    set(_lang C)
-  elseif("x${ARGN}" MATCHES "^xLANGUAGE;([a-zA-Z]+)$")
-    set(_lang "${CMAKE_MATCH_1}")
-  else()
-    message(FATAL_ERROR "Unknown arguments:\n  ${ARGN}\n")
-  endif()
-
-  set(_CHECK_STRUCT_MEMBER_SOURCE_CODE "
-${_INCLUDE_FILES}
-int main()
-{
-  (void)sizeof(((${_STRUCT} *)0)->${_MEMBER});
-  return 0;
-}
-")
-
-  if("${_lang}" STREQUAL "C")
-    CHECK_C_SOURCE_COMPILES("${_CHECK_STRUCT_MEMBER_SOURCE_CODE}" ${_RESULT})
-  elseif("${_lang}" STREQUAL "CXX")
-    CHECK_CXX_SOURCE_COMPILES("${_CHECK_STRUCT_MEMBER_SOURCE_CODE}" ${_RESULT})
-  else()
-    message(FATAL_ERROR "Unknown language:\n  ${_lang}\nSupported languages: C, CXX.\n")
-  endif()
-endmacro ()
diff --git a/share/cmake-3.18/Modules/CheckSymbolExists.cmake b/share/cmake-3.18/Modules/CheckSymbolExists.cmake
deleted file mode 100644
index 4f202c4..0000000
--- a/share/cmake-3.18/Modules/CheckSymbolExists.cmake
+++ /dev/null
@@ -1,166 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckSymbolExists
------------------
-
-Provides a macro to check if a symbol exists as a function, variable,
-or macro in ``C``.
-
-.. command:: check_symbol_exists
-
-  .. code-block:: cmake
-
-    check_symbol_exists(<symbol> <files> <variable>)
-
-  Check that the ``<symbol>`` is available after including given header
-  ``<files>`` and store the result in a ``<variable>``.  Specify the list
-  of files in one argument as a semicolon-separated list.
-  ``<variable>`` will be created as an internal cache variable.
-
-If the header files define the symbol as a macro it is considered
-available and assumed to work.  If the header files declare the symbol
-as a function or variable then the symbol must also be available for
-linking (so intrinsics may not be detected).
-If the symbol is a type, enum value, or intrinsic it will not be recognized
-(consider using :module:`CheckTypeSize` or :module:`CheckCSourceCompiles`).
-If the check needs to be done in C++, consider using
-:module:`CheckCXXSymbolExists` instead.
-
-The following variables may be set before calling this macro to modify
-the way the check is run:
-
-``CMAKE_REQUIRED_FLAGS``
-  string of compile command line flags.
-``CMAKE_REQUIRED_DEFINITIONS``
-  a :ref:`;-list <CMake Language Lists>` of macros to define (-DFOO=bar).
-``CMAKE_REQUIRED_INCLUDES``
-  a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
-  the compiler.
-``CMAKE_REQUIRED_LINK_OPTIONS``
-  a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
-``CMAKE_REQUIRED_LIBRARIES``
-  a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
-  command. See policy :policy:`CMP0075`.
-``CMAKE_REQUIRED_QUIET``
-  execute quietly without messages.
-
-For example:
-
-.. code-block:: cmake
-
-  include(CheckSymbolExists)
-
-  # Check for macro SEEK_SET
-  check_symbol_exists(SEEK_SET "stdio.h" HAVE_SEEK_SET)
-  # Check for function fopen
-  check_symbol_exists(fopen "stdio.h" HAVE_FOPEN)
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced
-
-macro(CHECK_SYMBOL_EXISTS SYMBOL FILES VARIABLE)
-  if(CMAKE_C_COMPILER_LOADED)
-    __CHECK_SYMBOL_EXISTS_IMPL("${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.c" "${SYMBOL}" "${FILES}" "${VARIABLE}" )
-  elseif(CMAKE_CXX_COMPILER_LOADED)
-    __CHECK_SYMBOL_EXISTS_IMPL("${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.cxx" "${SYMBOL}" "${FILES}" "${VARIABLE}" )
-  else()
-    message(FATAL_ERROR "CHECK_SYMBOL_EXISTS needs either C or CXX language enabled")
-  endif()
-endmacro()
-
-macro(__CHECK_SYMBOL_EXISTS_IMPL SOURCEFILE SYMBOL FILES VARIABLE)
-  if(NOT DEFINED "${VARIABLE}" OR "x${${VARIABLE}}" STREQUAL "x${VARIABLE}")
-    set(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n")
-    set(MACRO_CHECK_SYMBOL_EXISTS_FLAGS ${CMAKE_REQUIRED_FLAGS})
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(CHECK_SYMBOL_EXISTS_LINK_OPTIONS
-        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    else()
-      set(CHECK_SYMBOL_EXISTS_LINK_OPTIONS)
-    endif()
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_SYMBOL_EXISTS_LIBS
-        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-    else()
-      set(CHECK_SYMBOL_EXISTS_LIBS)
-    endif()
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CMAKE_SYMBOL_EXISTS_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CMAKE_SYMBOL_EXISTS_INCLUDES)
-    endif()
-    foreach(FILE ${FILES})
-      string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT
-        "#include <${FILE}>\n")
-    endforeach()
-    string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT "
-int main(int argc, char** argv)
-{
-  (void)argv;")
-    set(_CSE_CHECK_NON_MACRO "return ((int*)(&${SYMBOL}))[argc];")
-    if("${SYMBOL}" MATCHES "^[a-zA-Z_][a-zA-Z0-9_]*$")
-      # The SYMBOL has a legal macro name.  Test whether it exists as a macro.
-      string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT "
-#ifndef ${SYMBOL}
-  ${_CSE_CHECK_NON_MACRO}
-#else
-  (void)argc;
-  return 0;
-#endif")
-    else()
-      # The SYMBOL cannot be a macro (e.g., a template function).
-      string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT "
-  ${_CSE_CHECK_NON_MACRO}")
-    endif()
-    string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT "
-}")
-    unset(_CSE_CHECK_NON_MACRO)
-
-    configure_file("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
-      "${SOURCEFILE}" @ONLY)
-
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Looking for ${SYMBOL}")
-    endif()
-    try_compile(${VARIABLE}
-      ${CMAKE_BINARY_DIR}
-      "${SOURCEFILE}"
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${CHECK_SYMBOL_EXISTS_LINK_OPTIONS}
-      ${CHECK_SYMBOL_EXISTS_LIBS}
-      CMAKE_FLAGS
-      -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_SYMBOL_EXISTS_FLAGS}
-      "${CMAKE_SYMBOL_EXISTS_INCLUDES}"
-      OUTPUT_VARIABLE OUTPUT)
-    if(${VARIABLE})
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "found")
-      endif()
-      set(${VARIABLE} 1 CACHE INTERNAL "Have symbol ${SYMBOL}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Determining if the ${SYMBOL} "
-        "exist passed with the following output:\n"
-        "${OUTPUT}\nFile ${SOURCEFILE}:\n"
-        "${CMAKE_CONFIGURABLE_FILE_CONTENT}\n")
-    else()
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "not found")
-      endif()
-      set(${VARIABLE} "" CACHE INTERNAL "Have symbol ${SYMBOL}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Determining if the ${SYMBOL} "
-        "exist failed with the following output:\n"
-        "${OUTPUT}\nFile ${SOURCEFILE}:\n"
-        "${CMAKE_CONFIGURABLE_FILE_CONTENT}\n")
-    endif()
-    unset(CMAKE_CONFIGURABLE_FILE_CONTENT)
-  endif()
-endmacro()
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/CheckTypeSize.cmake b/share/cmake-3.18/Modules/CheckTypeSize.cmake
deleted file mode 100644
index 2b07b7c..0000000
--- a/share/cmake-3.18/Modules/CheckTypeSize.cmake
+++ /dev/null
@@ -1,270 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckTypeSize
--------------
-
-Check sizeof a type
-
-.. command:: CHECK_TYPE_SIZE
-
-  .. code-block:: cmake
-
-    CHECK_TYPE_SIZE(TYPE VARIABLE [BUILTIN_TYPES_ONLY]
-                                  [LANGUAGE <language>])
-
-  Check if the type exists and determine its size.  On return,
-  ``HAVE_${VARIABLE}`` holds the existence of the type, and ``${VARIABLE}``
-  holds one of the following:
-
-  ::
-
-     <size> = type has non-zero size <size>
-     "0"    = type has arch-dependent size (see below)
-     ""     = type does not exist
-
-  Both ``HAVE_${VARIABLE}`` and ``${VARIABLE}`` will be created as internal
-  cache variables.
-
-  Furthermore, the variable ``${VARIABLE}_CODE`` holds C preprocessor code
-  to define the macro ``${VARIABLE}`` to the size of the type, or leave
-  the macro undefined if the type does not exist.
-
-  The variable ``${VARIABLE}`` may be ``0`` when
-  :variable:`CMAKE_OSX_ARCHITECTURES` has multiple architectures for building
-  OS X universal binaries.  This indicates that the type size varies across
-  architectures.  In this case ``${VARIABLE}_CODE`` contains C preprocessor
-  tests mapping from each architecture macro to the corresponding type size.
-  The list of architecture macros is stored in ``${VARIABLE}_KEYS``, and the
-  value for each key is stored in ``${VARIABLE}-${KEY}``.
-
-  If the ``BUILTIN_TYPES_ONLY`` option is not given, the macro checks for
-  headers ``<sys/types.h>``, ``<stdint.h>``, and ``<stddef.h>``, and saves
-  results in ``HAVE_SYS_TYPES_H``, ``HAVE_STDINT_H``, and ``HAVE_STDDEF_H``.
-  The type size check automatically includes the available headers, thus
-  supporting checks of types defined in the headers.
-
-  If ``LANGUAGE`` is set, the specified compiler will be used to perform the
-  check. Acceptable values are ``C`` and ``CXX``.
-
-Despite the name of the macro you may use it to check the size of more
-complex expressions, too.  To check e.g.  for the size of a struct
-member you can do something like this:
-
-.. code-block:: cmake
-
-  check_type_size("((struct something*)0)->member" SIZEOF_MEMBER)
-
-
-
-The following variables may be set before calling this macro to modify
-the way the check is run:
-
-::
-
-  CMAKE_REQUIRED_FLAGS = string of compile command line flags
-  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
-  CMAKE_REQUIRED_INCLUDES = list of include directories
-  CMAKE_REQUIRED_LINK_OPTIONS  = list of options to pass to link command
-  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
-  CMAKE_REQUIRED_QUIET = execute quietly without messages
-  CMAKE_EXTRA_INCLUDE_FILES = list of extra headers to include
-#]=======================================================================]
-
-include(CheckIncludeFile)
-include(CheckIncludeFileCXX)
-
-get_filename_component(__check_type_size_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
-
-include_guard(GLOBAL)
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0054 NEW)
-
-#-----------------------------------------------------------------------------
-# Helper function.  DO NOT CALL DIRECTLY.
-function(__check_type_size_impl type var map builtin language)
-  if(NOT CMAKE_REQUIRED_QUIET)
-    message(CHECK_START "Check size of ${type}")
-  endif()
-
-  # Include header files.
-  set(headers)
-  if(builtin)
-    if(HAVE_SYS_TYPES_H)
-      string(APPEND headers "#include <sys/types.h>\n")
-    endif()
-    if(HAVE_STDINT_H)
-      string(APPEND headers "#include <stdint.h>\n")
-    endif()
-    if(HAVE_STDDEF_H)
-      string(APPEND headers "#include <stddef.h>\n")
-    endif()
-  endif()
-  foreach(h ${CMAKE_EXTRA_INCLUDE_FILES})
-    string(APPEND headers "#include \"${h}\"\n")
-  endforeach()
-
-  # Perform the check.
-
-  if(language STREQUAL "C")
-    set(src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.c)
-  elseif(language STREQUAL "CXX")
-    set(src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.cpp)
-  else()
-    message(FATAL_ERROR "Unknown language:\n  ${language}\nSupported languages: C, CXX.\n")
-  endif()
-  set(bin ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.bin)
-  configure_file(${__check_type_size_dir}/CheckTypeSize.c.in ${src} @ONLY)
-  try_compile(HAVE_${var} ${CMAKE_BINARY_DIR} ${src}
-    COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-    LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS}
-    LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}
-    CMAKE_FLAGS
-      "-DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS}"
-      "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}"
-    OUTPUT_VARIABLE output
-    COPY_FILE ${bin}
-    )
-
-  if(HAVE_${var})
-    # The check compiled.  Load information from the binary.
-    file(STRINGS ${bin} strings LIMIT_COUNT 10 REGEX "INFO:size")
-
-    # Parse the information strings.
-    set(regex_size ".*INFO:size\\[0*([^]]*)\\].*")
-    set(regex_key " key\\[([^]]*)\\]")
-    set(keys)
-    set(code)
-    set(mismatch)
-    set(first 1)
-    foreach(info ${strings})
-      if("${info}" MATCHES "${regex_size}")
-        # Get the type size.
-        set(size "${CMAKE_MATCH_1}")
-        if(first)
-          set(${var} ${size})
-        elseif(NOT "${size}" STREQUAL "${${var}}")
-          set(mismatch 1)
-        endif()
-        set(first 0)
-
-        # Get the architecture map key.
-        string(REGEX MATCH   "${regex_key}"       key "${info}")
-        string(REGEX REPLACE "${regex_key}" "\\1" key "${key}")
-        if(key)
-          string(APPEND code "\nset(${var}-${key} \"${size}\")")
-          list(APPEND keys ${key})
-        endif()
-      endif()
-    endforeach()
-
-    # Update the architecture-to-size map.
-    if(mismatch AND keys)
-      configure_file(${__check_type_size_dir}/CheckTypeSizeMap.cmake.in ${map} @ONLY)
-      set(${var} 0)
-    else()
-      file(REMOVE ${map})
-    endif()
-
-    if(mismatch AND NOT keys)
-      message(SEND_ERROR "CHECK_TYPE_SIZE found different results, consider setting CMAKE_OSX_ARCHITECTURES or CMAKE_TRY_COMPILE_OSX_ARCHITECTURES to one or no architecture !")
-    endif()
-
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_PASS "done")
-    endif()
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-      "Determining size of ${type} passed with the following output:\n${output}\n\n")
-    set(${var} "${${var}}" CACHE INTERNAL "CHECK_TYPE_SIZE: sizeof(${type})")
-  else()
-    # The check failed to compile.
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_FAIL "failed")
-    endif()
-    file(READ ${src} content)
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-      "Determining size of ${type} failed with the following output:\n${output}\n${src}:\n${content}\n\n")
-    set(${var} "" CACHE INTERNAL "CHECK_TYPE_SIZE: ${type} unknown")
-    file(REMOVE ${map})
-  endif()
-endfunction()
-
-#-----------------------------------------------------------------------------
-macro(CHECK_TYPE_SIZE TYPE VARIABLE)
-  # parse arguments
-  unset(doing)
-  foreach(arg ${ARGN})
-    if("x${arg}" STREQUAL "xBUILTIN_TYPES_ONLY")
-      set(_CHECK_TYPE_SIZE_${arg} 1)
-      unset(doing)
-    elseif("x${arg}" STREQUAL "xLANGUAGE") # change to MATCHES for more keys
-      set(doing "${arg}")
-      set(_CHECK_TYPE_SIZE_${doing} "")
-    elseif("x${doing}" STREQUAL "xLANGUAGE")
-      set(_CHECK_TYPE_SIZE_${doing} "${arg}")
-      unset(doing)
-    else()
-      message(FATAL_ERROR "Unknown argument:\n  ${arg}\n")
-    endif()
-  endforeach()
-  if("x${doing}" MATCHES "^x(LANGUAGE)$")
-    message(FATAL_ERROR "Missing argument:\n  ${doing} arguments requires a value\n")
-  endif()
-  if(DEFINED _CHECK_TYPE_SIZE_LANGUAGE)
-    if(NOT "x${_CHECK_TYPE_SIZE_LANGUAGE}" MATCHES "^x(C|CXX)$")
-      message(FATAL_ERROR "Unknown language:\n  ${_CHECK_TYPE_SIZE_LANGUAGE}.\nSupported languages: C, CXX.\n")
-    endif()
-    set(_language ${_CHECK_TYPE_SIZE_LANGUAGE})
-  else()
-    set(_language C)
-  endif()
-
-  # Optionally check for standard headers.
-  if(_CHECK_TYPE_SIZE_BUILTIN_TYPES_ONLY)
-    set(_builtin 0)
-  else()
-    set(_builtin 1)
-    if(_language STREQUAL "C")
-      check_include_file(sys/types.h HAVE_SYS_TYPES_H)
-      check_include_file(stdint.h HAVE_STDINT_H)
-      check_include_file(stddef.h HAVE_STDDEF_H)
-    elseif(_language STREQUAL "CXX")
-      check_include_file_cxx(sys/types.h HAVE_SYS_TYPES_H)
-      check_include_file_cxx(stdint.h HAVE_STDINT_H)
-      check_include_file_cxx(stddef.h HAVE_STDDEF_H)
-    endif()
-  endif()
-  unset(_CHECK_TYPE_SIZE_BUILTIN_TYPES_ONLY)
-  unset(_CHECK_TYPE_SIZE_LANGUAGE)
-
-  # Compute or load the size or size map.
-  set(${VARIABLE}_KEYS)
-  set(_map_file ${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${VARIABLE}.cmake)
-  if(NOT DEFINED HAVE_${VARIABLE})
-    __check_type_size_impl(${TYPE} ${VARIABLE} ${_map_file} ${_builtin} ${_language})
-  endif()
-  include(${_map_file} OPTIONAL)
-  set(_map_file)
-  set(_builtin)
-
-  # Create preprocessor code.
-  if(${VARIABLE}_KEYS)
-    set(${VARIABLE}_CODE)
-    set(_if if)
-    foreach(key ${${VARIABLE}_KEYS})
-      string(APPEND ${VARIABLE}_CODE "#${_if} defined(${key})\n# define ${VARIABLE} ${${VARIABLE}-${key}}\n")
-      set(_if elif)
-    endforeach()
-    string(APPEND ${VARIABLE}_CODE "#else\n# error ${VARIABLE} unknown\n#endif")
-    set(_if)
-  elseif(${VARIABLE})
-    set(${VARIABLE}_CODE "#define ${VARIABLE} ${${VARIABLE}}")
-  else()
-    set(${VARIABLE}_CODE "/* #undef ${VARIABLE} */")
-  endif()
-endmacro()
-
-#-----------------------------------------------------------------------------
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/CheckVariableExists.cmake b/share/cmake-3.18/Modules/CheckVariableExists.cmake
deleted file mode 100644
index 8a93535..0000000
--- a/share/cmake-3.18/Modules/CheckVariableExists.cmake
+++ /dev/null
@@ -1,85 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-CheckVariableExists
--------------------
-
-Check if the variable exists.
-
-.. command:: CHECK_VARIABLE_EXISTS
-
-  .. code-block:: cmake
-
-    CHECK_VARIABLE_EXISTS(VAR VARIABLE)
-
-
-  ::
-
-    VAR      - the name of the variable
-    VARIABLE - variable to store the result
-               Will be created as an internal cache variable.
-
-
-  This macro is only for ``C`` variables.
-
-The following variables may be set before calling this macro to modify
-the way the check is run:
-
-::
-
-  CMAKE_REQUIRED_FLAGS = string of compile command line flags
-  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
-  CMAKE_REQUIRED_LINK_OPTIONS = list of options to pass to link command
-  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
-  CMAKE_REQUIRED_QUIET = execute quietly without messages
-#]=======================================================================]
-
-include_guard(GLOBAL)
-
-macro(CHECK_VARIABLE_EXISTS VAR VARIABLE)
-  if(NOT DEFINED "${VARIABLE}")
-    set(MACRO_CHECK_VARIABLE_DEFINITIONS
-      "-DCHECK_VARIABLE_EXISTS=${VAR} ${CMAKE_REQUIRED_FLAGS}")
-    if(NOT CMAKE_REQUIRED_QUIET)
-      message(CHECK_START "Looking for ${VAR}")
-    endif()
-    if(CMAKE_REQUIRED_LINK_OPTIONS)
-      set(CHECK_VARIABLE_EXISTS_ADD_LINK_OPTIONS
-        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
-    else()
-      set(CHECK_VARIABLE_EXISTS_ADD_LINK_OPTIONS)
-    endif()
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_VARIABLE_EXISTS_ADD_LIBRARIES
-        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-    else()
-      set(CHECK_VARIABLE_EXISTS_ADD_LIBRARIES)
-    endif()
-    try_compile(${VARIABLE}
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_ROOT}/Modules/CheckVariableExists.c
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${CHECK_VARIABLE_EXISTS_ADD_LINK_OPTIONS}
-      ${CHECK_VARIABLE_EXISTS_ADD_LIBRARIES}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_VARIABLE_DEFINITIONS}
-      OUTPUT_VARIABLE OUTPUT)
-    if(${VARIABLE})
-      set(${VARIABLE} 1 CACHE INTERNAL "Have variable ${VAR}")
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_PASS "found")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Determining if the variable ${VAR} exists passed with the following output:\n"
-        "${OUTPUT}\n\n")
-    else()
-      set(${VARIABLE} "" CACHE INTERNAL "Have variable ${VAR}")
-      if(NOT CMAKE_REQUIRED_QUIET)
-        message(CHECK_FAIL "not found")
-      endif()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Determining if the variable ${VAR} exists failed with the following output:\n"
-        "${OUTPUT}\n\n")
-    endif()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/ARMCC.cmake b/share/cmake-3.18/Modules/Compiler/ARMCC.cmake
deleted file mode 100644
index f949568..0000000
--- a/share/cmake-3.18/Modules/Compiler/ARMCC.cmake
+++ /dev/null
@@ -1,39 +0,0 @@
-if(_ARMCC_CMAKE_LOADED)
-  return()
-endif()
-set(_ARMCC_CMAKE_LOADED TRUE)
-
-# See ARM Compiler documentation at:
-# http://infocenter.arm.com/help/topic/com.arm.doc.set.swdev/index.html
-
-get_filename_component(_CMAKE_C_TOOLCHAIN_LOCATION "${CMAKE_C_COMPILER}" PATH)
-get_filename_component(_CMAKE_CXX_TOOLCHAIN_LOCATION "${CMAKE_CXX_COMPILER}" PATH)
-
-set(CMAKE_EXECUTABLE_SUFFIX ".elf")
-
-find_program(CMAKE_ARMCC_LINKER armlink HINTS "${_CMAKE_C_TOOLCHAIN_LOCATION}" "${_CMAKE_CXX_TOOLCHAIN_LOCATION}" )
-find_program(CMAKE_ARMCC_AR     armar   HINTS "${_CMAKE_C_TOOLCHAIN_LOCATION}" "${_CMAKE_CXX_TOOLCHAIN_LOCATION}" )
-
-set(CMAKE_LINKER "${CMAKE_ARMCC_LINKER}" CACHE FILEPATH "The ARMCC linker" FORCE)
-mark_as_advanced(CMAKE_ARMCC_LINKER)
-set(CMAKE_AR "${CMAKE_ARMCC_AR}" CACHE FILEPATH "The ARMCC archiver" FORCE)
-mark_as_advanced(CMAKE_ARMCC_AR)
-
-macro(__compiler_armcc lang)
-  string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
-  string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g")
-  string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Ospace -DNDEBUG")
-  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -Otime -DNDEBUG")
-  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g")
-
-  set(CMAKE_${lang}_OUTPUT_EXTENSION ".o")
-  set(CMAKE_${lang}_OUTPUT_EXTENSION_REPLACE 1)
-  set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "--via=")
-
-  set(CMAKE_${lang}_LINK_EXECUTABLE      "<CMAKE_LINKER> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS> -o <TARGET> --list <TARGET_BASE>.map")
-  set(CMAKE_${lang}_CREATE_STATIC_LIBRARY  "<CMAKE_AR> --create -cr <TARGET> <LINK_FLAGS> <OBJECTS>")
-
-  set(CMAKE_DEPFILE_FLAGS_${lang} "--depend=<DEPFILE> --depend_single_line --no_depend_system_headers")
-
-  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Xlinker" " ")
-endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/ARMClang-ASM.cmake b/share/cmake-3.18/Modules/Compiler/ARMClang-ASM.cmake
deleted file mode 100644
index ceff3e8..0000000
--- a/share/cmake-3.18/Modules/Compiler/ARMClang-ASM.cmake
+++ /dev/null
@@ -1,9 +0,0 @@
-include(Compiler/ARMClang)
-
-set(CMAKE_ASM_OUTPUT_EXTENSION ".o")
-set(CMAKE_ASM_OUTPUT_EXTENSION_REPLACE 1)
-
-set(CMAKE_ASM_COMPILE_OBJECT       "<CMAKE_ASM_COMPILER> <INCLUDES> <FLAGS> -c -o <OBJECT> <SOURCE>")
-set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS S;s;asm;msa)
-
-__compiler_armclang(ASM)
diff --git a/share/cmake-3.18/Modules/Compiler/ARMClang-C.cmake b/share/cmake-3.18/Modules/Compiler/ARMClang-C.cmake
deleted file mode 100644
index 0a64a8a..0000000
--- a/share/cmake-3.18/Modules/Compiler/ARMClang-C.cmake
+++ /dev/null
@@ -1,15 +0,0 @@
-include(Compiler/Clang-C)
-include(Compiler/ARMClang)
-__compiler_armclang(C)
-
-set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
-set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
-set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
-
-set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
-set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
-set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
-
-set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
-set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
-set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
diff --git a/share/cmake-3.18/Modules/Compiler/ARMClang-CXX.cmake b/share/cmake-3.18/Modules/Compiler/ARMClang-CXX.cmake
deleted file mode 100644
index 5dfb401..0000000
--- a/share/cmake-3.18/Modules/Compiler/ARMClang-CXX.cmake
+++ /dev/null
@@ -1,3 +0,0 @@
-include(Compiler/Clang-CXX)
-include(Compiler/ARMClang)
-__compiler_armclang(CXX)
diff --git a/share/cmake-3.18/Modules/Compiler/ARMClang.cmake b/share/cmake-3.18/Modules/Compiler/ARMClang.cmake
deleted file mode 100644
index 01ce91d..0000000
--- a/share/cmake-3.18/Modules/Compiler/ARMClang.cmake
+++ /dev/null
@@ -1,130 +0,0 @@
-if(_ARMClang_CMAKE_LOADED)
-  return()
-endif()
-set(_ARMClang_CMAKE_LOADED TRUE)
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0057 NEW) # if IN_LIST
-
-get_filename_component(_CMAKE_C_TOOLCHAIN_LOCATION "${CMAKE_C_COMPILER}" PATH)
-get_filename_component(_CMAKE_CXX_TOOLCHAIN_LOCATION "${CMAKE_CXX_COMPILER}" PATH)
-
-set(CMAKE_EXECUTABLE_SUFFIX ".elf")
-
-find_program(CMAKE_ARMClang_LINKER armlink HINTS "${_CMAKE_C_TOOLCHAIN_LOCATION}" "${_CMAKE_CXX_TOOLCHAIN_LOCATION}" )
-find_program(CMAKE_ARMClang_AR     armar   HINTS "${_CMAKE_C_TOOLCHAIN_LOCATION}" "${_CMAKE_CXX_TOOLCHAIN_LOCATION}" )
-
-set(CMAKE_LINKER "${CMAKE_ARMClang_LINKER}" CACHE FILEPATH "The ARMClang linker" FORCE)
-mark_as_advanced(CMAKE_ARMClang_LINKER)
-set(CMAKE_AR "${CMAKE_ARMClang_AR}" CACHE FILEPATH "The ARMClang archiver" FORCE)
-mark_as_advanced(CMAKE_ARMClang_AR)
-
-if (CMAKE_LINKER MATCHES "armlink")
-  set(__CMAKE_ARMClang_USING_armlink TRUE)
-  set(CMAKE_LIBRARY_PATH_FLAG "--userlibpath=")
-else()
-  set(__CMAKE_ARMClang_USING_armlink FALSE)
-endif()
-
-# get compiler supported cpu list
-function(__armclang_set_processor_list lang out_var)
-  execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" --target=${CMAKE_${lang}_COMPILER_TARGET} -mcpu=list
-    OUTPUT_VARIABLE processor_list
-    ERROR_VARIABLE processor_list)
-  string(REGEX MATCHALL "-mcpu=([^ \n]*)" processor_list "${processor_list}")
-  string(REGEX REPLACE "-mcpu=" "" processor_list "${processor_list}")
-  set(${out_var} "${processor_list}" PARENT_SCOPE)
-endfunction()
-
-# check processor is in list
-function(__armclang_check_processor processor list out_var)
-  string(TOLOWER "${processor}" processor)
-  if(processor IN_LIST list)
-    set(${out_var} TRUE PARENT_SCOPE)
-  else()
-    set(${out_var} FALSE PARENT_SCOPE)
-  endif()
-endfunction()
-
-# get compiler supported arch list
-function(__armclang_set_arch_list lang out_var)
-  execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" --target=${CMAKE_${lang}_COMPILER_TARGET} -march=list
-    OUTPUT_VARIABLE arch_list
-    ERROR_VARIABLE arch_list)
-  string(REGEX MATCHALL "-march=([^ \n]*)" arch_list "${arch_list}")
-  string(REGEX REPLACE "-march=" "" arch_list "${arch_list}")
-  set(${out_var} "${arch_list}" PARENT_SCOPE)
-endfunction()
-
-# get linker supported cpu list
-function(__armlink_set_cpu_list lang out_var)
-  if(__CMAKE_ARMClang_USING_armlink)
-    set(__linker_wrapper_flags "")
-  else()
-    set(__linker_wrapper_flags --target=${CMAKE_${lang}_COMPILER_TARGET} -Xlinker)
-  endif()
-
-  execute_process(COMMAND "${CMAKE_LINKER}" ${__linker_wrapper_flags} --cpu=list
-    OUTPUT_VARIABLE cpu_list
-    ERROR_VARIABLE cpu_list)
-  string(REGEX MATCHALL "--cpu=([^ \n]*)" cpu_list "${cpu_list}")
-  string(REGEX REPLACE "--cpu=" "" cpu_list "${cpu_list}")
-  set(${out_var} "${cpu_list}" PARENT_SCOPE)
-endfunction()
-
-macro(__compiler_armclang lang)
-  if(NOT CMAKE_${lang}_COMPILER_TARGET)
-    set(CMAKE_${lang}_COMPILER_TARGET arm-arm-none-eabi)
-  endif()
-  if(NOT CMAKE_${lang}_COMPILER_PROCESSOR_LIST)
-    __armclang_set_processor_list(${lang} CMAKE_${lang}_COMPILER_PROCESSOR_LIST)
-  endif()
-  if(NOT CMAKE_${lang}_COMPILER_ARCH_LIST)
-    __armclang_set_arch_list(${lang} CMAKE_${lang}_COMPILER_ARCH_LIST)
-  endif()
-  if(NOT CMAKE_SYSTEM_PROCESSOR AND NOT CMAKE_SYSTEM_ARCH)
-    message(FATAL_ERROR "  CMAKE_SYSTEM_PROCESSOR or CMAKE_SYSTEM_ARCH must be set for ARMClang\n"
-      "  Supported processor: ${CMAKE_${lang}_COMPILER_PROCESSOR_LIST}\n"
-      "  Supported Architecture: ${CMAKE_${lang}_COMPILER_ARCH_LIST}")
-  else()
-    __armclang_check_processor("${CMAKE_SYSTEM_ARCH}" "${CMAKE_${lang}_COMPILER_ARCH_LIST}" _CMAKE_${lang}_CHECK_ARCH_RESULT)
-    if( _CMAKE_${lang}_CHECK_ARCH_RESULT)
-      string(APPEND CMAKE_${lang}_FLAGS_INIT "-march=${CMAKE_SYSTEM_ARCH}")
-      set(__march_flag_set TRUE)
-    endif()
-    __armclang_check_processor("${CMAKE_SYSTEM_PROCESSOR}" "${CMAKE_${lang}_COMPILER_PROCESSOR_LIST}" _CMAKE_${lang}_CHECK_PROCESSOR_RESULT)
-    if(_CMAKE_${lang}_CHECK_PROCESSOR_RESULT)
-      string(APPEND CMAKE_${lang}_FLAGS_INIT "-mcpu=${CMAKE_SYSTEM_PROCESSOR}")
-      set(__mcpu_flag_set TRUE)
-    endif()
-    if(NOT __march_flag_set AND NOT __mcpu_flag_set)
-      message(FATAL_ERROR "Atleast one of the variables CMAKE_SYSTEM_PROCESSOR or CMAKE_SYSTEM_ARCH must be set for ARMClang\n"
-                          "Supported processor: ${CMAKE_${lang}_COMPILER_PROCESSOR_LIST}\n"
-                          "  Supported Architecture: ${CMAKE_${lang}_COMPILER_ARCH_LIST}")
-    endif()
-    unset(_CMAKE_${lang}_CHECK_PROCESSOR_RESULT)
-    unset(_CMAKE_${lang}_CHECK_ARCH_RESULT)
-  endif()
-
-  #check if CMAKE_SYSTEM_PROCESSOR belongs to supported cpu list for armlink
-  __armlink_set_cpu_list( ${lang} CMAKE_LINKER_CPU_LIST)
-  list(TRANSFORM CMAKE_LINKER_CPU_LIST TOLOWER)
-  __armclang_check_processor("${CMAKE_SYSTEM_PROCESSOR}" "${CMAKE_LINKER_CPU_LIST}" _CMAKE_CHECK_LINK_CPU_RESULT)
-  if(_CMAKE_CHECK_LINK_CPU_RESULT)
-    string(APPEND CMAKE_${lang}_LINK_FLAGS "--cpu=${CMAKE_SYSTEM_PROCESSOR}")
-  endif()
-
-  if(__CMAKE_ARMClang_USING_armlink)
-    set(__CMAKE_ARMClang_USING_armlink_WRAPPER "")
-  else()
-    set(__CMAKE_ARMClang_USING_armlink_WRAPPER ${CMAKE_${lang}_LINKER_WRAPPER_FLAG})
-  endif()
-  set(CMAKE_${lang}_LINK_EXECUTABLE "<CMAKE_LINKER> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS> -o <TARGET> ${__CMAKE_ARMClang_USING_armlink_WRAPPER} --list <TARGET_BASE>.map")
-  set(CMAKE_${lang}_CREATE_STATIC_LIBRARY  "<CMAKE_AR> --create -cr <TARGET> <LINK_FLAGS> <OBJECTS>")
-  set(CMAKE_${lang}_ARCHIVE_CREATE         "<CMAKE_AR> --create -cr <TARGET> <LINK_FLAGS> <OBJECTS>")
-  set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "${__CMAKE_ARMClang_USING_armlink_WRAPPER} --via=")
-  set(CMAKE_${lang}_OUTPUT_EXTENSION ".o")
-  set(CMAKE_${lang}_OUTPUT_EXTENSION_REPLACE 1)
-endmacro()
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/Compiler/AppleClang-C.cmake b/share/cmake-3.18/Modules/Compiler/AppleClang-C.cmake
deleted file mode 100644
index 2794f52..0000000
--- a/share/cmake-3.18/Modules/Compiler/AppleClang-C.cmake
+++ /dev/null
@@ -1,18 +0,0 @@
-include(Compiler/Clang)
-__compiler_clang(C)
-
-if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.0)
-  set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
-  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
-  set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
-
-  set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
-  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
-  set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
-
-  set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
-  set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
-  set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
-endif()
-
-__compiler_check_default_language_standard(C 4.0 99)
diff --git a/share/cmake-3.18/Modules/Compiler/AppleClang-CXX.cmake b/share/cmake-3.18/Modules/Compiler/AppleClang-CXX.cmake
deleted file mode 100644
index 15edc21..0000000
--- a/share/cmake-3.18/Modules/Compiler/AppleClang-CXX.cmake
+++ /dev/null
@@ -1,45 +0,0 @@
-include(Compiler/Clang)
-__compiler_clang(CXX)
-
-if(NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
-  set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
-endif()
-
-if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.0)
-  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
-  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
-  set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
-
-  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
-  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
-endif()
-
-if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.1)
-  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
-  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
-  set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
-elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.1)
-  # AppleClang 5.0 knows this flag, but does not set a __cplusplus macro greater than 201103L
-  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++1y")
-  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
-  set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
-endif()
-
-if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.0)
-  set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
-  set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
-elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.1)
-  set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++1z")
-  set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
-endif()
-
-if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0)
-    set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
-endif()
-
-if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.0)
-  set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++2a")
-  set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++2a")
-endif()
-
-__compiler_check_default_language_standard(CXX 4.0 98)
diff --git a/share/cmake-3.18/Modules/Compiler/AppleClang-OBJC.cmake b/share/cmake-3.18/Modules/Compiler/AppleClang-OBJC.cmake
deleted file mode 100644
index d1f3706..0000000
--- a/share/cmake-3.18/Modules/Compiler/AppleClang-OBJC.cmake
+++ /dev/null
@@ -1,17 +0,0 @@
-include(Compiler/Clang-OBJC)
-
-if(NOT CMAKE_OBJC_COMPILER_VERSION VERSION_LESS 4.0)
-  set(CMAKE_OBJC90_STANDARD_COMPILE_OPTION "-std=c90")
-  set(CMAKE_OBJC90_EXTENSION_COMPILE_OPTION "-std=gnu90")
-  set(CMAKE_OBJC90_STANDARD__HAS_FULL_SUPPORT ON)
-
-  set(CMAKE_OBJC99_STANDARD_COMPILE_OPTION "-std=c99")
-  set(CMAKE_OBJC99_EXTENSION_COMPILE_OPTION "-std=gnu99")
-  set(CMAKE_OBJC99_STANDARD__HAS_FULL_SUPPORT ON)
-
-  set(CMAKE_OBJC11_STANDARD_COMPILE_OPTION "-std=c11")
-  set(CMAKE_OBJC11_EXTENSION_COMPILE_OPTION "-std=gnu11")
-  set(CMAKE_OBJC11_STANDARD__HAS_FULL_SUPPORT ON)
-endif()
-
-__compiler_check_default_language_standard(OBJC 4.0 99)
diff --git a/share/cmake-3.18/Modules/Compiler/AppleClang-OBJCXX.cmake b/share/cmake-3.18/Modules/Compiler/AppleClang-OBJCXX.cmake
deleted file mode 100644
index 409bd4a..0000000
--- a/share/cmake-3.18/Modules/Compiler/AppleClang-OBJCXX.cmake
+++ /dev/null
@@ -1,42 +0,0 @@
-include(Compiler/Clang-OBJCXX)
-
-set(CMAKE_OBJCXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
-
-if(NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 4.0)
-  set(CMAKE_OBJCXX98_STANDARD_COMPILE_OPTION "-std=c++98")
-  set(CMAKE_OBJCXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
-  set(CMAKE_OBJCXX98_STANDARD__HAS_FULL_SUPPORT ON)
-
-  set(CMAKE_OBJCXX11_STANDARD_COMPILE_OPTION "-std=c++11")
-  set(CMAKE_OBJCXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
-endif()
-
-if(NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 6.1)
-  set(CMAKE_OBJCXX14_STANDARD_COMPILE_OPTION "-std=c++14")
-  set(CMAKE_OBJCXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
-  set(CMAKE_OBJCXX14_STANDARD__HAS_FULL_SUPPORT ON)
-elseif(NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 5.1)
-  # AppleClang 5.0 knows this flag, but does not set a __cplusplus macro greater than 201103L
-  set(CMAKE_OBJCXX14_STANDARD_COMPILE_OPTION "-std=c++1y")
-  set(CMAKE_OBJCXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
-  set(CMAKE_OBJCXX14_STANDARD__HAS_FULL_SUPPORT ON)
-endif()
-
-if (NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 10.0)
-  set(CMAKE_OBJCXX17_STANDARD_COMPILE_OPTION "-std=c++17")
-  set(CMAKE_OBJCXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
-elseif (NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 6.1)
-  set(CMAKE_OBJCXX17_STANDARD_COMPILE_OPTION "-std=c++1z")
-  set(CMAKE_OBJCXX17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
-endif()
-
-if (NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 8.0)
-    set(CMAKE_OBJCXX11_STANDARD__HAS_FULL_SUPPORT ON)
-endif()
-
-if (NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 10.0)
-  set(CMAKE_OBJCXX20_STANDARD_COMPILE_OPTION "-std=c++2a")
-  set(CMAKE_OBJCXX20_EXTENSION_COMPILE_OPTION "-std=gnu++2a")
-endif()
-
-__compiler_check_default_language_standard(OBJCXX 4.0 98)
diff --git a/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake b/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake
deleted file mode 100644
index 409b65a..0000000
--- a/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake
+++ /dev/null
@@ -1,180 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-# This module is shared by multiple languages and compilers; use include guard
-if (__COMPILER_CMAKE_COMMON_COMPILER_MACROS)
-  return()
-endif ()
-set(__COMPILER_CMAKE_COMMON_COMPILER_MACROS 1)
-
-
-# Check that a compiler's language standard is properly detected
-# Parameters:
-#   lang   - Language to check
-#   stdver1 - Minimum version to set a given default for
-#   std1    - Default to use for compiler ver >= stdver1
-#   stdverN - Minimum version to set a given default for
-#   stdN    - Default to use for compiler ver >= stdverN
-#
-#   The order of stdverN stdN pairs passed as arguments is expected to be in
-#   monotonically increasing version order.
-#
-# Note:
-#   This macro can be called with multiple version / std pairs to convey that
-#   newer compiler versions may use a newer standard default.
-#
-# Example:
-#   To specify that compiler version 6.1 and newer defaults to C++11 while
-#   4.8 <= ver < 6.1 default to C++98, you would call:
-#
-# __compiler_check_default_language_standard(CXX 4.8 98 6.1 11)
-#
-macro(__compiler_check_default_language_standard lang stdver1 std1)
-  set(__std_ver_pairs "${stdver1};${std1};${ARGN}")
-  string(REGEX REPLACE " *; *" " " __std_ver_pairs "${__std_ver_pairs}")
-  string(REGEX MATCHALL "[^ ]+ [^ ]+" __std_ver_pairs "${__std_ver_pairs}")
-
-  # If the compiler version is below the threshold of even having CMake
-  # support for language standards, then don't bother.
-  if (CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL "${stdver1}")
-    if (NOT CMAKE_${lang}_COMPILER_FORCED)
-      if (NOT CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT)
-        message(FATAL_ERROR "CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT should be set for ${CMAKE_${lang}_COMPILER_ID} (${CMAKE_${lang}_COMPILER}) version ${CMAKE_${lang}_COMPILER_VERSION}")
-      endif ()
-      set(CMAKE_${lang}_STANDARD_DEFAULT ${CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT})
-    else ()
-      list(REVERSE __std_ver_pairs)
-      foreach (__std_ver_pair IN LISTS __std_ver_pairs)
-        string(REGEX MATCH "([^ ]+) (.+)" __std_ver_pair "${__std_ver_pair}")
-        set(__stdver ${CMAKE_MATCH_1})
-        set(__std ${CMAKE_MATCH_2})
-        if (CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL __stdver AND
-          NOT DEFINED CMAKE_${lang}_STANDARD_DEFAULT)
-          # Compiler id was forced so just guess the default standard level.
-          set(CMAKE_${lang}_STANDARD_DEFAULT ${__std})
-        endif ()
-        unset(__std)
-        unset(__stdver)
-      endforeach ()
-    endif ()
-  endif ()
-  unset(__std_ver_pairs)
-endmacro()
-
-# Define to allow compile features to be automatically determined
-macro(cmake_record_c_compile_features)
-  set(_result 0)
-  if(_result EQUAL 0 AND DEFINED CMAKE_C11_STANDARD_COMPILE_OPTION)
-    if(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT)
-      _has_compiler_features_c(11)
-    else()
-      _record_compiler_features_c(11)
-    endif()
-    unset(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT)
-  endif()
-  if(_result EQUAL 0 AND DEFINED CMAKE_C99_STANDARD_COMPILE_OPTION)
-    if(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT)
-      _has_compiler_features_c(99)
-    else()
-      _record_compiler_features_c(99)
-    endif()
-    unset(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT)
-  endif()
-  if(_result EQUAL 0 AND DEFINED CMAKE_C90_STANDARD_COMPILE_OPTION)
-    if(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT)
-      _has_compiler_features_c(90)
-    else()
-      _record_compiler_features_c(90)
-    endif()
-    unset(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT)
-  endif()
-endmacro()
-
-# Define to allow compile features to be automatically determined
-macro(cmake_record_cxx_compile_features)
-  set(_result 0)
-  if(_result EQUAL 0 AND DEFINED CMAKE_CXX20_STANDARD_COMPILE_OPTION)
-    if(CMAKE_CXX20_STANDARD__HAS_FULL_SUPPORT)
-      _has_compiler_features_cxx(20)
-    else()
-      _record_compiler_features_cxx(20)
-    endif()
-    unset(CMAKE_CXX20_STANDARD__HAS_FULL_SUPPORT)
-  endif()
-  if(_result EQUAL 0 AND DEFINED CMAKE_CXX17_STANDARD_COMPILE_OPTION)
-    if(CMAKE_CXX17_STANDARD__HAS_FULL_SUPPORT)
-      _has_compiler_features_cxx(17)
-    else()
-      _record_compiler_features_cxx(17)
-    endif()
-    unset(CMAKE_CXX17_STANDARD__HAS_FULL_SUPPORT)
-  endif()
-  if(_result EQUAL 0 AND DEFINED CMAKE_CXX14_STANDARD_COMPILE_OPTION)
-    if(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT)
-      _has_compiler_features_cxx(14)
-    else()
-      _record_compiler_features_cxx(14)
-    endif()
-    unset(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT)
-  endif()
-  if(_result EQUAL 0 AND DEFINED CMAKE_CXX11_STANDARD_COMPILE_OPTION)
-    if(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT)
-      _has_compiler_features_cxx(11)
-    else()
-      _record_compiler_features_cxx(11)
-    endif()
-    unset(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT)
-  endif()
-  if(_result EQUAL 0 AND DEFINED CMAKE_CXX98_STANDARD_COMPILE_OPTION)
-    if(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT)
-      _has_compiler_features_cxx(98)
-    else()
-      _record_compiler_features_cxx(98)
-    endif()
-    unset(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT)
-  endif()
-endmacro()
-
-macro(cmake_record_cuda_compile_features)
-  set(_result 0)
-  if(_result EQUAL 0 AND DEFINED CMAKE_CUDA20_STANDARD_COMPILE_OPTION)
-    if(CMAKE_CUDA20_STANDARD__HAS_FULL_SUPPORT)
-      _has_compiler_features_cuda(20)
-    else()
-      _record_compiler_features_cuda(20)
-    endif()
-    unset(CMAKE_CUDA20_STANDARD__HAS_FULL_SUPPORT)
-  endif()
-  if(_result EQUAL 0 AND DEFINED CMAKE_CUDA17_STANDARD_COMPILE_OPTION)
-    if(CMAKE_CUDA17_STANDARD__HAS_FULL_SUPPORT)
-      _has_compiler_features_cuda(17)
-    else()
-      _record_compiler_features_cuda(17)
-    endif()
-    unset(CMAKE_CUDA17_STANDARD__HAS_FULL_SUPPORT)
-  endif()
-  if(_result EQUAL 0 AND DEFINED CMAKE_CUDA14_STANDARD_COMPILE_OPTION)
-    if(CMAKE_CUDA14_STANDARD__HAS_FULL_SUPPORT)
-      _has_compiler_features_cuda(14)
-    else()
-      _record_compiler_features_cuda(14)
-    endif()
-    unset(CMAKE_CUDA14_STANDARD__HAS_FULL_SUPPORT)
-  endif()
-  if(_result EQUAL 0 AND DEFINED CMAKE_CUDA11_STANDARD_COMPILE_OPTION)
-    if(CMAKE_CUDA11_STANDARD__HAS_FULL_SUPPORT)
-      _has_compiler_features_cuda(11)
-    else()
-      _record_compiler_features_cuda(11)
-    endif()
-    unset(CMAKE_CUDA11_STANDARD__HAS_FULL_SUPPORT)
-  endif()
-  if(_result EQUAL 0 AND DEFINED CMAKE_CUDA03_STANDARD_COMPILE_OPTION)
-    if(CMAKE_CUDA03_STANDARD__HAS_FULL_SUPPORT)
-      _has_compiler_features_cuda(03)
-    else()
-      _record_compiler_features_cuda(03)
-    endif()
-    unset(CMAKE_CUDA03_STANDARD__HAS_FULL_SUPPORT)
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/Clang-C.cmake b/share/cmake-3.18/Modules/Compiler/Clang-C.cmake
deleted file mode 100644
index 7c4a263..0000000
--- a/share/cmake-3.18/Modules/Compiler/Clang-C.cmake
+++ /dev/null
@@ -1,46 +0,0 @@
-include(Compiler/Clang)
-__compiler_clang(C)
-
-cmake_policy(GET CMP0025 appleClangPolicy)
-if(APPLE AND NOT appleClangPolicy STREQUAL NEW)
-  return()
-endif()
-
-if("x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
-  set(CMAKE_C_CLANG_TIDY_DRIVER_MODE "cl")
-endif()
-
-if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
-  if(NOT "x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
-    set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
-    set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
-    set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
-
-    set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
-    set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
-    set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
-
-    set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
-    set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
-    set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
-  else()
-    # clang-cl doesn't have any of these
-    set(CMAKE_C90_STANDARD_COMPILE_OPTION "")
-    set(CMAKE_C90_EXTENSION_COMPILE_OPTION "")
-    set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
-
-    set(CMAKE_C99_STANDARD_COMPILE_OPTION "")
-    set(CMAKE_C99_EXTENSION_COMPILE_OPTION "")
-    set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
-
-    set(CMAKE_C11_STANDARD_COMPILE_OPTION "")
-    set(CMAKE_C11_EXTENSION_COMPILE_OPTION "")
-    set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
-  endif()
-endif()
-
-if(NOT "x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
-  __compiler_check_default_language_standard(C 3.4 99 3.6 11)
-else()
-  set(CMAKE_C_STANDARD_DEFAULT "")
-endif()
diff --git a/share/cmake-3.18/Modules/Compiler/Clang-CUDA.cmake b/share/cmake-3.18/Modules/Compiler/Clang-CUDA.cmake
deleted file mode 100644
index 336827b..0000000
--- a/share/cmake-3.18/Modules/Compiler/Clang-CUDA.cmake
+++ /dev/null
@@ -1,28 +0,0 @@
-include(Compiler/Clang)
-__compiler_clang(CUDA)
-
-# Set explicitly, because __compiler_clang() doesn't set this if we're simulating MSVC.
-set(CMAKE_DEPFILE_FLAGS_CUDA "-MD -MT <OBJECT> -MF <DEPFILE>")
-
-# C++03 isn't supported for CXX, but is for CUDA, so we need to set these manually.
-# Do this before __compiler_clang_cxx_standards() since that adds the feature.
-set(CMAKE_CUDA03_STANDARD_COMPILE_OPTION "-std=c++03")
-set(CMAKE_CUDA03_EXTENSION_COMPILE_OPTION "-std=gnu++03")
-__compiler_clang_cxx_standards(CUDA)
-
-set(CMAKE_CUDA_COMPILER_HAS_DEVICE_LINK_PHASE TRUE)
-set(_CMAKE_COMPILE_AS_CUDA_FLAG "-x cuda")
-set(_CMAKE_CUDA_PTX_FLAG "--cuda-device-only -S")
-
-# RulePlaceholderExpander expands crosscompile variables like sysroot and target only for CMAKE_<LANG>_COMPILER. Override the default.
-set(CMAKE_CUDA_LINK_EXECUTABLE "<CMAKE_CUDA_COMPILER> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>${__IMPLICT_LINKS}")
-set(CMAKE_CUDA_CREATE_SHARED_LIBRARY "<CMAKE_CUDA_COMPILER> <CMAKE_SHARED_LIBRARY_CUDA_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CUDA_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>${__IMPLICT_LINKS}")
-
-set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "STATIC")
-set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_STATIC "cudadevrt;cudart_static")
-set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_SHARED "cudadevrt;cudart")
-set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_NONE   "")
-
-if(UNIX)
-  list(APPEND CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_STATIC "rt" "pthread" "dl")
-endif()
diff --git a/share/cmake-3.18/Modules/Compiler/Clang-CXX.cmake b/share/cmake-3.18/Modules/Compiler/Clang-CXX.cmake
deleted file mode 100644
index 789e991..0000000
--- a/share/cmake-3.18/Modules/Compiler/Clang-CXX.cmake
+++ /dev/null
@@ -1,16 +0,0 @@
-include(Compiler/Clang)
-__compiler_clang(CXX)
-__compiler_clang_cxx_standards(CXX)
-
-if("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
-  set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
-endif()
-
-cmake_policy(GET CMP0025 appleClangPolicy)
-if(APPLE AND NOT appleClangPolicy STREQUAL NEW)
-  return()
-endif()
-
-if("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
-  set(CMAKE_CXX_CLANG_TIDY_DRIVER_MODE "cl")
-endif()
diff --git a/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake b/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake
deleted file mode 100644
index b852660..0000000
--- a/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake
+++ /dev/null
@@ -1,35 +0,0 @@
-if(NOT DEFINED _CMAKE_PROCESSING_LANGUAGE OR _CMAKE_PROCESSING_LANGUAGE STREQUAL "")
-  message(FATAL_ERROR "Internal error: _CMAKE_PROCESSING_LANGUAGE is not set")
-endif()
-
-# Debian:
-# * /usr/bin/llvm-ar-4.0
-# * /usr/bin/llvm-ranlib-4.0
-string(REGEX MATCH "^([0-9]+\\.[0-9]+)" __version_x_y
-    "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION}")
-
-# Try to find tools in the same directory as Clang itself
-get_filename_component(__clang_hint_1 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" REALPATH)
-get_filename_component(__clang_hint_1 "${__clang_hint_1}" DIRECTORY)
-
-get_filename_component(__clang_hint_2 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" DIRECTORY)
-
-set(__clang_hints ${__clang_hint_1} ${__clang_hint_2})
-
-# http://manpages.ubuntu.com/manpages/precise/en/man1/llvm-ar.1.html
-find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR NAMES
-    "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ar-${__version_x_y}"
-    "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ar"
-    HINTS ${__clang_hints}
-    DOC "LLVM archiver"
-)
-mark_as_advanced(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR)
-
-# http://manpages.ubuntu.com/manpages/precise/en/man1/llvm-ranlib.1.html
-find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_RANLIB NAMES
-    "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ranlib-${__version_x_y}"
-    "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ranlib"
-    HINTS ${__clang_hints}
-    DOC "Generate index for LLVM archive"
-)
-mark_as_advanced(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_RANLIB)
diff --git a/share/cmake-3.18/Modules/Compiler/Clang-OBJC.cmake b/share/cmake-3.18/Modules/Compiler/Clang-OBJC.cmake
deleted file mode 100644
index c61c497..0000000
--- a/share/cmake-3.18/Modules/Compiler/Clang-OBJC.cmake
+++ /dev/null
@@ -1,18 +0,0 @@
-include(Compiler/Clang)
-__compiler_clang(OBJC)
-
-if(NOT CMAKE_OBJC_COMPILER_VERSION VERSION_LESS 3.4)
-  set(CMAKE_OBJC90_STANDARD_COMPILE_OPTION "-std=c90")
-  set(CMAKE_OBJC90_EXTENSION_COMPILE_OPTION "-std=gnu90")
-  set(CMAKE_OBJC90_STANDARD__HAS_FULL_SUPPORT ON)
-
-  set(CMAKE_OBJC99_STANDARD_COMPILE_OPTION "-std=c99")
-  set(CMAKE_OBJC99_EXTENSION_COMPILE_OPTION "-std=gnu99")
-  set(CMAKE_OBJC99_STANDARD__HAS_FULL_SUPPORT ON)
-
-  set(CMAKE_OBJC11_STANDARD_COMPILE_OPTION "-std=c11")
-  set(CMAKE_OBJC11_EXTENSION_COMPILE_OPTION "-std=gnu11")
-  set(CMAKE_OBJC11_STANDARD__HAS_FULL_SUPPORT ON)
-endif()
-
-__compiler_check_default_language_standard(OBJC 3.4 99 3.6 11)
diff --git a/share/cmake-3.18/Modules/Compiler/Clang-OBJCXX.cmake b/share/cmake-3.18/Modules/Compiler/Clang-OBJCXX.cmake
deleted file mode 100644
index 453b5fd..0000000
--- a/share/cmake-3.18/Modules/Compiler/Clang-OBJCXX.cmake
+++ /dev/null
@@ -1,3 +0,0 @@
-include(Compiler/Clang)
-__compiler_clang(OBJCXX)
-__compiler_clang_cxx_standards(OBJCXX)
diff --git a/share/cmake-3.18/Modules/Compiler/Clang.cmake b/share/cmake-3.18/Modules/Compiler/Clang.cmake
deleted file mode 100644
index 52d5350..0000000
--- a/share/cmake-3.18/Modules/Compiler/Clang.cmake
+++ /dev/null
@@ -1,234 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This module is shared by multiple languages; use include blocker.
-if(__COMPILER_CLANG)
-  return()
-endif()
-set(__COMPILER_CLANG 1)
-
-include(Compiler/CMakeCommonCompilerMacros)
-
-if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC"
-    OR "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC"
-    OR "x${CMAKE_Fortran_SIMULATE_ID}" STREQUAL "xMSVC")
-  macro(__compiler_clang lang)
-  endmacro()
-else()
-  include(Compiler/GNU)
-
-  macro(__compiler_clang lang)
-    __compiler_gnu(${lang})
-    set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
-    # Link options for PIE are already set in 'Compiler/GNU.cmake'
-    # but clang may require alternate syntax on some platforms
-    if (APPLE)
-      set(CMAKE_${lang}_LINK_OPTIONS_PIE ${CMAKE_${lang}_COMPILE_OPTIONS_PIE} -Xlinker -pie)
-      set(CMAKE_${lang}_LINK_OPTIONS_NO_PIE -Xlinker -no_pie)
-    endif()
-    set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-isystem ")
-    set(CMAKE_${lang}_COMPILE_OPTIONS_VISIBILITY "-fvisibility=")
-    if(CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4.0)
-      set(CMAKE_${lang}_COMPILE_OPTIONS_TARGET "-target ")
-      set(CMAKE_${lang}_COMPILE_OPTIONS_EXTERNAL_TOOLCHAIN "-gcc-toolchain ")
-    else()
-      set(CMAKE_${lang}_COMPILE_OPTIONS_TARGET "--target=")
-      set(CMAKE_${lang}_COMPILE_OPTIONS_EXTERNAL_TOOLCHAIN "--gcc-toolchain=")
-    endif()
-    set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Xlinker" " ")
-    set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP)
-
-    if(CMAKE_${lang}_COMPILER_TARGET)
-      if(CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4.0)
-        list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-target" "${CMAKE_${lang}_COMPILER_TARGET}")
-      else()
-        list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "--target=${CMAKE_${lang}_COMPILER_TARGET}")
-      endif()
-    endif()
-
-    set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
-    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
-
-    string(COMPARE EQUAL "${CMAKE_${lang}_COMPILER_ID}" "AppleClang" __is_apple_clang)
-
-    # '-flto=thin' available since Clang 3.9 and Xcode 8
-    # * http://clang.llvm.org/docs/ThinLTO.html#clang-llvm
-    # * https://trac.macports.org/wiki/XcodeVersionInfo
-    set(_CMAKE_LTO_THIN TRUE)
-    if(__is_apple_clang)
-      if(CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 8.0)
-        set(_CMAKE_LTO_THIN FALSE)
-      endif()
-    else()
-      if(CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.9)
-        set(_CMAKE_LTO_THIN FALSE)
-      endif()
-    endif()
-
-    if(_CMAKE_LTO_THIN)
-      set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto=thin")
-    else()
-      set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto")
-    endif()
-
-    if(ANDROID)
-      # https://github.com/android-ndk/ndk/issues/242
-      set(CMAKE_${lang}_LINK_OPTIONS_IPO "-fuse-ld=gold")
-    endif()
-
-    if(ANDROID OR __is_apple_clang)
-      set(__ar "${CMAKE_AR}")
-      set(__ranlib "${CMAKE_RANLIB}")
-    else()
-      set(__ar "${CMAKE_${lang}_COMPILER_AR}")
-      set(__ranlib "${CMAKE_${lang}_COMPILER_RANLIB}")
-    endif()
-
-    set(CMAKE_${lang}_ARCHIVE_CREATE_IPO
-      "\"${__ar}\" cr <TARGET> <LINK_FLAGS> <OBJECTS>"
-    )
-
-    set(CMAKE_${lang}_ARCHIVE_APPEND_IPO
-      "\"${__ar}\" r <TARGET> <LINK_FLAGS> <OBJECTS>"
-    )
-
-    set(CMAKE_${lang}_ARCHIVE_FINISH_IPO
-      "\"${__ranlib}\" <TARGET>"
-    )
-
-    set(CMAKE_PCH_EXTENSION .pch)
-    if (NOT CMAKE_GENERATOR MATCHES "Xcode")
-      set(CMAKE_PCH_PROLOGUE "#pragma clang system_header")
-    endif()
-    set(CMAKE_${lang}_COMPILE_OPTIONS_USE_PCH -Xclang -include-pch -Xclang <PCH_FILE> -Xclang -include -Xclang <PCH_HEADER>)
-    set(CMAKE_${lang}_COMPILE_OPTIONS_CREATE_PCH -Xclang -emit-pch -Xclang -include -Xclang <PCH_HEADER>)
-  endmacro()
-endif()
-
-macro(__compiler_clang_cxx_standards lang)
-  if("x${CMAKE_${lang}_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
-    if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 2.1)
-      set(CMAKE_${lang}98_STANDARD_COMPILE_OPTION "-std=c++98")
-      set(CMAKE_${lang}98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
-    endif()
-
-    if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.1)
-      set(CMAKE_${lang}98_STANDARD__HAS_FULL_SUPPORT ON)
-      set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "-std=c++11")
-      set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
-      set(CMAKE_${lang}11_STANDARD__HAS_FULL_SUPPORT ON)
-    elseif(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 2.1)
-      set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "-std=c++0x")
-      set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "-std=gnu++0x")
-    endif()
-
-    if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.5)
-      set(CMAKE_${lang}14_STANDARD_COMPILE_OPTION "-std=c++14")
-      set(CMAKE_${lang}14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
-      set(CMAKE_${lang}14_STANDARD__HAS_FULL_SUPPORT ON)
-    elseif(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4)
-      set(CMAKE_${lang}14_STANDARD_COMPILE_OPTION "-std=c++1y")
-      set(CMAKE_${lang}14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
-      set(CMAKE_${lang}14_STANDARD__HAS_FULL_SUPPORT ON)
-    endif()
-
-    set(_clang_version_std17 5.0)
-    if(CMAKE_SYSTEM_NAME STREQUAL "Android")
-      set(_clang_version_std17 6.0)
-    endif()
-
-    if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS "${_clang_version_std17}")
-      set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "-std=c++17")
-      set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
-    elseif (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.5)
-      set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "-std=c++1z")
-      set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
-    endif()
-
-    if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 6.0)
-      set(CMAKE_${lang}17_STANDARD__HAS_FULL_SUPPORT ON)
-    endif()
-
-    if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 11.0)
-      set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std=c++20")
-      set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std=gnu++20")
-    elseif(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS "${_clang_version_std17}")
-      set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std=c++2a")
-      set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std=gnu++2a")
-    endif()
-
-    unset(_clang_version_std17)
-
-    if("x${CMAKE_${lang}_SIMULATE_ID}" STREQUAL "xMSVC")
-      # The MSVC standard library requires C++14, and MSVC itself has no
-      # notion of operating in a mode not aware of at least that standard.
-      set(CMAKE_${lang}98_STANDARD_COMPILE_OPTION "-std=c++14")
-      set(CMAKE_${lang}98_EXTENSION_COMPILE_OPTION "-std=gnu++14")
-      set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "-std=c++14")
-      set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "-std=gnu++14")
-
-      # This clang++ is missing some features because of MSVC compatibility.
-      unset(CMAKE_${lang}11_STANDARD__HAS_FULL_SUPPORT)
-      unset(CMAKE_${lang}14_STANDARD__HAS_FULL_SUPPORT)
-      unset(CMAKE_${lang}17_STANDARD__HAS_FULL_SUPPORT)
-      unset(CMAKE_${lang}20_STANDARD__HAS_FULL_SUPPORT)
-    endif()
-
-    __compiler_check_default_language_standard(${lang} 2.1 98)
-  elseif(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 3.9
-      AND CMAKE_${lang}_SIMULATE_VERSION VERSION_GREATER_EQUAL 19.0)
-    # This version of clang-cl and the MSVC version it simulates have
-    # support for -std: flags.
-    set(CMAKE_${lang}98_STANDARD_COMPILE_OPTION "")
-    set(CMAKE_${lang}98_EXTENSION_COMPILE_OPTION "")
-    set(CMAKE_${lang}98_STANDARD__HAS_FULL_SUPPORT ON)
-    set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "")
-    set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "")
-    set(CMAKE_${lang}14_STANDARD_COMPILE_OPTION "-std:c++14")
-    set(CMAKE_${lang}14_EXTENSION_COMPILE_OPTION "-std:c++14")
-    if (CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 6.0)
-      set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "-std:c++17")
-      set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "-std:c++17")
-      set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std:c++latest")
-      set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std:c++latest")
-    else()
-      set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "-std:c++latest")
-      set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "-std:c++latest")
-    endif()
-
-    __compiler_check_default_language_standard(${lang} 3.9 14)
-  else()
-    # This version of clang-cl, or the MSVC version it simulates, does not have
-    # language standards.  Set these options as empty strings so the feature
-    # test infrastructure can at least check to see if they are defined.
-    set(CMAKE_${lang}98_STANDARD_COMPILE_OPTION "")
-    set(CMAKE_${lang}98_EXTENSION_COMPILE_OPTION "")
-    set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "")
-    set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "")
-    set(CMAKE_${lang}14_STANDARD_COMPILE_OPTION "")
-    set(CMAKE_${lang}14_EXTENSION_COMPILE_OPTION "")
-    set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "")
-    set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "")
-    set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "")
-    set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "")
-
-    # There is no meaningful default for this
-    set(CMAKE_${lang}_STANDARD_DEFAULT "")
-
-    # There are no compiler modes so we only need to test features once.
-    # Override the default macro for this special case.  Pretend that
-    # all language standards are available so that at least compilation
-    # can be attempted.
-    macro(cmake_record_${lang}_compile_features)
-      list(APPEND CMAKE_${lang}_COMPILE_FEATURES
-        cxx_std_98
-        cxx_std_11
-        cxx_std_14
-        cxx_std_17
-        cxx_std_20
-        )
-      _record_compiler_features(${lang} "" CMAKE_${lang}_COMPILE_FEATURES)
-    endmacro()
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/Cray-Fortran.cmake b/share/cmake-3.18/Modules/Compiler/Cray-Fortran.cmake
deleted file mode 100644
index 696ae76..0000000
--- a/share/cmake-3.18/Modules/Compiler/Cray-Fortran.cmake
+++ /dev/null
@@ -1,21 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-include(Compiler/Cray)
-__compiler_cray(Fortran)
-
-set(CMAKE_Fortran_SUBMODULE_SEP "")
-set(CMAKE_Fortran_SUBMODULE_EXT ".mod")
-set(CMAKE_Fortran_MODOUT_FLAG -em)
-set(CMAKE_Fortran_MODDIR_FLAG -J)
-set(CMAKE_Fortran_MODDIR_DEFAULT .)
-set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-f fixed")
-set(CMAKE_Fortran_FORMAT_FREE_FLAG "-f free")
-
-if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 8.5)
-  set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_ON "-eT")
-  set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_OFF "-dT")
-else()
-  set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_ON "-eZ")
-  set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_OFF "-dZ")
-endif()
diff --git a/share/cmake-3.18/Modules/Compiler/Fujitsu-DetermineCompiler.cmake b/share/cmake-3.18/Modules/Compiler/Fujitsu-DetermineCompiler.cmake
deleted file mode 100644
index 73ee38c..0000000
--- a/share/cmake-3.18/Modules/Compiler/Fujitsu-DetermineCompiler.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-
-set(_compiler_id_pp_test "defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version)")
diff --git a/share/cmake-3.18/Modules/Compiler/GNU-ASM.cmake b/share/cmake-3.18/Modules/Compiler/GNU-ASM.cmake
deleted file mode 100644
index 94af401..0000000
--- a/share/cmake-3.18/Modules/Compiler/GNU-ASM.cmake
+++ /dev/null
@@ -1,13 +0,0 @@
-# This file is loaded when gcc/g++ is used for assembler files (the "ASM" cmake language)
-include(Compiler/GNU)
-
-set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s;S;asm)
-
-__compiler_gnu(ASM)
-
-if(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_MATCH STREQUAL "GNU assembler")
-  set(CMAKE_DEPFILE_FLAGS_ASM${ASM_DIALECT} "--MD <DEPFILE>")
-  set(CMAKE_ASM${ASM_DIALECT}_LINK_EXECUTABLE
-    "<CMAKE_LINKER> <FLAGS> <CMAKE_ASM${ASM_DIALECT}_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
-  set(CMAKE_ASM_DEFINE_FLAG "--defsym ")
-endif()
diff --git a/share/cmake-3.18/Modules/Compiler/GNU-C.cmake b/share/cmake-3.18/Modules/Compiler/GNU-C.cmake
deleted file mode 100644
index ca286b3..0000000
--- a/share/cmake-3.18/Modules/Compiler/GNU-C.cmake
+++ /dev/null
@@ -1,28 +0,0 @@
-include(Compiler/GNU)
-__compiler_gnu(C)
-
-if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.5)
-  set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
-  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
-elseif (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
-  set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c89")
-  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu89")
-endif()
-
-if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
-  set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
-  set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
-  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
-  set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
-endif()
-
-if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.7)
-  set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
-  set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
-  set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
-elseif (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.6)
-  set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c1x")
-  set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu1x")
-endif()
-
-__compiler_check_default_language_standard(C 3.4 90 5.0 11)
diff --git a/share/cmake-3.18/Modules/Compiler/GNU-CXX.cmake b/share/cmake-3.18/Modules/Compiler/GNU-CXX.cmake
deleted file mode 100644
index fcaaeab..0000000
--- a/share/cmake-3.18/Modules/Compiler/GNU-CXX.cmake
+++ /dev/null
@@ -1,58 +0,0 @@
-include(Compiler/GNU)
-__compiler_gnu(CXX)
-
-if (WIN32)
-  if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.6)
-    set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fno-keep-inline-dllexport")
-  endif()
-else()
-  if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.0)
-    set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
-  endif()
-endif()
-
-if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4)
-  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
-  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
-endif()
-
-if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
-  set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
-  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
-  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
-elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.4)
-  # 4.3 supports 0x variants
-  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++0x")
-  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++0x")
-endif()
-
-if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8.1)
-  set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
-endif()
-
-if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9)
-  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
-  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
-elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
-  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++1y")
-  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
-endif()
-
-if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0)
-  set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
-endif()
-
-if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0)
-  set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
-  set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
-elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.1)
-  set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++1z")
-  set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
-endif()
-
-if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0)
-  set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++2a")
-  set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++2a")
-endif()
-
-__compiler_check_default_language_standard(CXX 3.4 98 6.0 14)
diff --git a/share/cmake-3.18/Modules/Compiler/GNU-FindBinUtils.cmake b/share/cmake-3.18/Modules/Compiler/GNU-FindBinUtils.cmake
deleted file mode 100644
index 097fbf3..0000000
--- a/share/cmake-3.18/Modules/Compiler/GNU-FindBinUtils.cmake
+++ /dev/null
@@ -1,35 +0,0 @@
-if(NOT DEFINED _CMAKE_PROCESSING_LANGUAGE OR _CMAKE_PROCESSING_LANGUAGE STREQUAL "")
-  message(FATAL_ERROR "Internal error: _CMAKE_PROCESSING_LANGUAGE is not set")
-endif()
-
-# Ubuntu 16.04:
-# * /usr/bin/gcc-ar-5
-# * /usr/bin/gcc-ranlib-5
-string(REGEX MATCH "^([0-9]+)" __version_x
-    "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION}")
-
-string(REGEX MATCH "^([0-9]+\\.[0-9]+)" __version_x_y
-    "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION}")
-
-# Try to find tools in the same directory as GCC itself
-get_filename_component(__gcc_hints "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" DIRECTORY)
-
-# http://manpages.ubuntu.com/manpages/wily/en/man1/gcc-ar.1.html
-find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR NAMES
-    "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar-${__version_x_y}"
-    "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar-${__version_x}"
-    "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar${_CMAKE_COMPILER_SUFFIX}"
-    HINTS ${__gcc_hints}
-    DOC "A wrapper around 'ar' adding the appropriate '--plugin' option for the GCC compiler"
-)
-mark_as_advanced(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR)
-
-# http://manpages.ubuntu.com/manpages/wily/en/man1/gcc-ranlib.1.html
-find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_RANLIB NAMES
-    "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib-${__version_x_y}"
-    "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib-${__version_x}"
-    "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib${_CMAKE_COMPILER_SUFFIX}"
-    HINTS ${__gcc_hints}
-    DOC "A wrapper around 'ranlib' adding the appropriate '--plugin' option for the GCC compiler"
-)
-mark_as_advanced(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_RANLIB)
diff --git a/share/cmake-3.18/Modules/Compiler/GNU-OBJC.cmake b/share/cmake-3.18/Modules/Compiler/GNU-OBJC.cmake
deleted file mode 100644
index fb9b0b2..0000000
--- a/share/cmake-3.18/Modules/Compiler/GNU-OBJC.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-include(Compiler/GNU)
-__compiler_gnu(OBJC)
diff --git a/share/cmake-3.18/Modules/Compiler/GNU-OBJCXX.cmake b/share/cmake-3.18/Modules/Compiler/GNU-OBJCXX.cmake
deleted file mode 100644
index 06f0244..0000000
--- a/share/cmake-3.18/Modules/Compiler/GNU-OBJCXX.cmake
+++ /dev/null
@@ -1,10 +0,0 @@
-include(Compiler/GNU)
-__compiler_gnu(OBJCXX)
-
-if(NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 4.2)
-  set(CMAKE_OBJCXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
-endif()
-
-if(NOT CMAKE_OBJCXX_LINK_FLAGS)
-  set(CMAKE_OBCXX_LINK_FLAGS "-lstdc++")
-endif()
diff --git a/share/cmake-3.18/Modules/Compiler/GNU.cmake b/share/cmake-3.18/Modules/Compiler/GNU.cmake
deleted file mode 100644
index 668a6a9..0000000
--- a/share/cmake-3.18/Modules/Compiler/GNU.cmake
+++ /dev/null
@@ -1,123 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This module is shared by multiple languages; use include blocker.
-if(__COMPILER_GNU)
-  return()
-endif()
-set(__COMPILER_GNU 1)
-
-include(Compiler/CMakeCommonCompilerMacros)
-include(Internal/CMakeCheckCompilerFlag)
-
-set(__pch_header_C "c-header")
-set(__pch_header_CXX "c++-header")
-set(__pch_header_OBJC "objective-c-header")
-set(__pch_header_OBJCXX "objective-c++-header")
-
-macro(__compiler_gnu lang)
-  # Feature flags.
-  set(CMAKE_${lang}_VERBOSE_FLAG "-v")
-  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC")
-  set (_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER NO)
-  if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4)
-    set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
-    # Support of PIE at link stage depends on various elements : platform, compiler, linker
-    # so to activate it, module CheckPIESupported must be used.
-    set (_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER YES)
-    set(CMAKE_${lang}_LINK_OPTIONS_PIE ${CMAKE_${lang}_COMPILE_OPTIONS_PIE} "-pie")
-    set(CMAKE_${lang}_LINK_OPTIONS_NO_PIE "-no-pie")
-  endif()
-  if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.0)
-    set(CMAKE_${lang}_COMPILE_OPTIONS_VISIBILITY "-fvisibility=")
-  endif()
-  set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-fPIC")
-  set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-shared")
-  set(CMAKE_${lang}_COMPILE_OPTIONS_SYSROOT "--sysroot=")
-
-  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Wl,")
-  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP ",")
-
-  # Older versions of gcc (< 4.5) contain a bug causing them to report a missing
-  # header file as a warning if depfiles are enabled, causing check_header_file
-  # tests to always succeed.  Work around this by disabling dependency tracking
-  # in try_compile mode.
-  get_property(_IN_TC GLOBAL PROPERTY IN_TRY_COMPILE)
-  if(CMAKE_${lang}_COMPILER_ID STREQUAL "GNU" AND _IN_TC AND NOT CMAKE_FORCE_DEPFILES)
-  else()
-    # distcc does not transform -o to -MT when invoking the preprocessor
-    # internally, as it ought to.  Work around this bug by setting -MT here
-    # even though it isn't strictly necessary.
-    set(CMAKE_DEPFILE_FLAGS_${lang} "-MD -MT <OBJECT> -MF <DEPFILE>")
-  endif()
-
-  # Initial configuration flags.
-  string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
-  string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g")
-  string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Os -DNDEBUG")
-  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3 -DNDEBUG")
-  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g -DNDEBUG")
-  set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
-  set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
-  if(NOT APPLE OR NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4) # work around #4462
-    set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-isystem ")
-  endif()
-
-  set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
-  set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER NO)
-
-  # '-flto' introduced since GCC 4.5:
-  # * https://gcc.gnu.org/onlinedocs/gcc-4.4.7/gcc/Option-Summary.html (no)
-  # * https://gcc.gnu.org/onlinedocs/gcc-4.5.4/gcc/Option-Summary.html (yes)
-  if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.5)
-    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
-    set(__lto_flags -flto)
-
-    if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.7)
-      # '-ffat-lto-objects' introduced since GCC 4.7:
-      # * https://gcc.gnu.org/onlinedocs/gcc-4.6.4/gcc/Option-Summary.html (no)
-      # * https://gcc.gnu.org/onlinedocs/gcc-4.7.4/gcc/Option-Summary.html (yes)
-      list(APPEND __lto_flags -fno-fat-lto-objects)
-    endif()
-
-    set(CMAKE_${lang}_COMPILE_OPTIONS_IPO ${__lto_flags})
-
-    # Need to use version of 'ar'/'ranlib' with plugin support.
-    # Quote from [documentation][1]:
-    #
-    #   To create static libraries suitable for LTO,
-    #   use gcc-ar and gcc-ranlib instead of ar and ranlib
-    #
-    # [1]: https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/Optimize-Options.html
-    set(CMAKE_${lang}_ARCHIVE_CREATE_IPO
-      "\"${CMAKE_${lang}_COMPILER_AR}\" cr <TARGET> <LINK_FLAGS> <OBJECTS>"
-    )
-
-    set(CMAKE_${lang}_ARCHIVE_APPEND_IPO
-      "\"${CMAKE_${lang}_COMPILER_AR}\" r <TARGET> <LINK_FLAGS> <OBJECTS>"
-    )
-
-    set(CMAKE_${lang}_ARCHIVE_FINISH_IPO
-      "\"${CMAKE_${lang}_COMPILER_RANLIB}\" <TARGET>"
-    )
-  endif()
-
-  set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}")
-  if(CMAKE_${lang}_COMPILER_ARG1)
-    separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}")
-    list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS})
-    unset(_COMPILER_ARGS)
-  endif()
-  list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp")
-
-  if(NOT "x${lang}" STREQUAL "xFortran")
-    set(CMAKE_PCH_EXTENSION .gch)
-    if (NOT CMAKE_GENERATOR MATCHES "Xcode")
-      set(CMAKE_PCH_PROLOGUE "#pragma GCC system_header")
-    endif()
-    set(CMAKE_${lang}_COMPILE_OPTIONS_INVALID_PCH -Winvalid-pch)
-    set(CMAKE_${lang}_COMPILE_OPTIONS_USE_PCH -include <PCH_HEADER>)
-    set(CMAKE_${lang}_COMPILE_OPTIONS_CREATE_PCH -x ${__pch_header_${lang}} -include <PCH_HEADER>)
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/IAR-ASM.cmake b/share/cmake-3.18/Modules/Compiler/IAR-ASM.cmake
deleted file mode 100644
index 936d4ae..0000000
--- a/share/cmake-3.18/Modules/Compiler/IAR-ASM.cmake
+++ /dev/null
@@ -1,52 +0,0 @@
-# This file is processed when the IAR compiler is used for an assembler file
-
-include(Compiler/IAR)
-
-if("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM")
-  set(CMAKE_ASM_COMPILE_OBJECT  "<CMAKE_ASM_COMPILER> -S <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT>")
-  __compiler_iar_ilink(ASM)
-  set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s;asm;msa)
-
-elseif("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RX")
-  set(CMAKE_ASM_COMPILE_OBJECT  "<CMAKE_ASM_COMPILER> --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT>")
-  __compiler_iar_ilink(ASM)
-  set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s;asm;msa)
-
-elseif("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RH850")
-  set(CMAKE_ASM_COMPILE_OBJECT  "<CMAKE_ASM_COMPILER> --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT>")
-  __compiler_iar_ilink(ASM)
-  set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s;asm;msa)
-
-elseif("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RL78")
-  set(CMAKE_ASM_COMPILE_OBJECT  "<CMAKE_ASM_COMPILER> --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT>")
-  __compiler_iar_ilink(ASM)
-  set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s;asm;msa)
-
-elseif("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RISC-V")
-  set(CMAKE_ASM_COMPILE_OBJECT  "<CMAKE_ASM_COMPILER> --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT>")
-  __compiler_iar_ilink(ASM)
-  set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s;asm;msa)
-
-elseif("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" STREQUAL "AVR")
-  set(CMAKE_ASM_COMPILE_OBJECT  "<CMAKE_ASM_COMPILER> -S <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT>")
-  __compiler_iar_xlink(ASM)
-  set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s90;asm;msa)
-
-elseif("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" STREQUAL "MSP430")
-  set(CMAKE_ASM_COMPILE_OBJECT  "<CMAKE_ASM_COMPILER> -S <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT>")
-  __compiler_iar_xlink(ASM)
-  set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s43;asm;msa)
-
-elseif("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" STREQUAL "V850")
-  set(CMAKE_ASM_COMPILE_OBJECT  "<CMAKE_ASM_COMPILER> -S <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT>")
-  __compiler_iar_xlink(ASM)
-  set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s85;asm;msa)
-
-elseif("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" STREQUAL "8051")
-  set(CMAKE_ASM_COMPILE_OBJECT  "<CMAKE_ASM_COMPILER> -S <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT>")
-  __compiler_iar_xlink(ASM)
-  set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s51;asm;msa)
-
-else()
-  message(FATAL_ERROR "CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID not detected. This should be automatic.")
-endif()
diff --git a/share/cmake-3.18/Modules/Compiler/IAR-C.cmake b/share/cmake-3.18/Modules/Compiler/IAR-C.cmake
deleted file mode 100644
index e27fdfc..0000000
--- a/share/cmake-3.18/Modules/Compiler/IAR-C.cmake
+++ /dev/null
@@ -1,75 +0,0 @@
-# This file is processed when the IAR compiler is used for a C file
-
-include(Compiler/IAR)
-include(Compiler/CMakeCommonCompilerMacros)
-
-# Common
-if(NOT CMAKE_C_COMPILER_VERSION)
-  message(FATAL_ERROR "CMAKE_C_COMPILER_VERSION not detected.  This should be automatic.")
-endif()
-
-set(CMAKE_C_EXTENSION_COMPILE_OPTION -e)
-
-if(CMAKE_C_COMPILER_VERSION_INTERNAL VERSION_GREATER 7)
-  set(CMAKE_C90_STANDARD_COMPILE_OPTION --c89)
-  set(CMAKE_C90_EXTENSION_COMPILE_OPTION --c89 -e)
-  set(CMAKE_C99_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_C99_EXTENSION_COMPILE_OPTION -e)
-else()
-  set(CMAKE_C90_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_C90_EXTENSION_COMPILE_OPTION -e)
-endif()
-
-if(CMAKE_C_COMPILER_VERSION_INTERNAL VERSION_GREATER 8)
-  set(CMAKE_C11_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_C11_EXTENSION_COMPILE_OPTION -e)
-endif()
-
-# Architecture specific
-if("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM")
-  if(CMAKE_C_COMPILER_VERSION_INTERNAL VERSION_LESS 7)
-    # IAR ARM 4.X uses xlink.exe, detection is not yet implemented
-    message(FATAL_ERROR "CMAKE_C_COMPILER_VERSION = ${CMAKE_C_COMPILER_VERSION} not supported by CMake.")
-  endif()
-  __compiler_iar_ilink(C)
-  __compiler_check_default_language_standard(C 1.10 90 6.10 99 8.10 11)
-
-elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "RX")
-  __compiler_iar_ilink(C)
-  __compiler_check_default_language_standard(C 1.10 90 2.10 99 4.10 11)
-
-elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "RH850")
-  __compiler_iar_ilink(C)
-  __compiler_check_default_language_standard(C 1.10 90 1.10 99 2.10 11)
-
-elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "RL78")
-  __compiler_iar_ilink(C)
-  __compiler_check_default_language_standard(C 1.10 90 1.10 99 4.10 11)
-
-elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "RISCV")
-  __compiler_iar_ilink(C)
-  __compiler_check_default_language_standard(C 1.10 90 1.10 99 1.10 11)
-
-elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "AVR")
-  __compiler_iar_xlink(C)
-  __compiler_check_default_language_standard(C 7.10 99)
-  set(CMAKE_C_OUTPUT_EXTENSION ".r90")
-
-elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "MSP430")
-  __compiler_iar_xlink(C)
-  __compiler_check_default_language_standard(C 1.10 90 5.10 99)
-  set(CMAKE_C_OUTPUT_EXTENSION ".r43")
-
-elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "V850")
-  __compiler_iar_xlink(C)
-  __compiler_check_default_language_standard(C 1.10 90 4.10 99)
-  set(CMAKE_C_OUTPUT_EXTENSION ".r85")
-
-elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "8051")
-  __compiler_iar_xlink(C)
-  __compiler_check_default_language_standard(C 6.10 90 8.10 99)
-  set(CMAKE_C_OUTPUT_EXTENSION ".r51")
-
-else()
-  message(FATAL_ERROR "CMAKE_C_COMPILER_ARCHITECTURE_ID not detected. This should be automatic.")
-endif()
diff --git a/share/cmake-3.18/Modules/Compiler/IAR-CXX.cmake b/share/cmake-3.18/Modules/Compiler/IAR-CXX.cmake
deleted file mode 100644
index eca89c5..0000000
--- a/share/cmake-3.18/Modules/Compiler/IAR-CXX.cmake
+++ /dev/null
@@ -1,83 +0,0 @@
-# This file is processed when the IAR compiler is used for a C++ file
-
-include(Compiler/IAR)
-include(Compiler/CMakeCommonCompilerMacros)
-
-# Common
-if(NOT CMAKE_CXX_COMPILER_VERSION)
-  message(FATAL_ERROR "CMAKE_CXX_COMPILER_VERSION not detected. This should be automatic.")
-endif()
-
-if(NOT CMAKE_IAR_CXX_FLAG)
-  # The --c++ flag was introduced in platform version 9 for all architectures except ARM where it was introduced already in version 7
-  if(CMAKE_CXX_COMPILER_VERSION_INTERNAL VERSION_GREATER 8 OR
-    (CMAKE_CXX_COMPILER_VERSION_INTERNAL VERSION_GREATER 6 AND "${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM") )
-    set(CMAKE_IAR_CXX_FLAG --c++)
-  else()
-    set(CMAKE_IAR_CXX_FLAG --eec++)
-  endif()
-endif()
-
-set(CMAKE_CXX_EXTENSION_COMPILE_OPTION -e)
-
-if(CMAKE_CXX_COMPILER_VERSION_INTERNAL VERSION_GREATER 7)
-  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION -e)
-  set(CMAKE_CXX03_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_CXX03_EXTENSION_COMPILE_OPTION -e)
-endif()
-
-if(CMAKE_CXX_COMPILER_VERSION_INTERNAL VERSION_GREATER 8)
-  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION -e)
-  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION -e)
-endif()
-
-# Architecture specific
-if("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM")
-  if(CMAKE_CXX_COMPILER_VERSION_INTERNAL VERSION_LESS 7)
-    # IAR ARM 4.X uses xlink.exe, detection is not yet implemented
-    message(FATAL_ERROR "CMAKE_CXX_COMPILER_VERSION = ${CMAKE_C_COMPILER_VERSION} not supported by CMake.")
-  endif()
-  __compiler_iar_ilink(CXX)
-  __compiler_check_default_language_standard(CXX 6.10 98 8.10 14)
-
-elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "RX")
-  __compiler_iar_ilink(CXX)
-  __compiler_check_default_language_standard(CXX 2.10 98 4.10 14)
-
-elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "RH850")
-  __compiler_iar_ilink(CXX)
-  __compiler_check_default_language_standard(CXX 1.10 98 2.10 14)
-
-elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "RL78")
-  __compiler_iar_ilink(CXX)
-  __compiler_check_default_language_standard(CXX 1.10 98 4.10 14)
-
-elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "RISCV")
-  __compiler_iar_ilink(CXX)
-  __compiler_check_default_language_standard(CXX 1.10 98 1.10 14)
-
-elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "AVR")
-  __compiler_iar_xlink(CXX)
-  __compiler_check_default_language_standard(CXX 7.10 98)
-
-elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "MSP430")
-  __compiler_iar_xlink(CXX)
-  __compiler_check_default_language_standard(CXX 5.10 98)
-  set(CMAKE_CXX_OUTPUT_EXTENSION ".r43")
-
-elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "V850")
-  __compiler_iar_xlink(CXX)
-  __compiler_check_default_language_standard(CXX 1.10 98)
-  set(CMAKE_C_OUTPUT_EXTENSION ".r85")
-
-elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "8051")
-  __compiler_iar_xlink(CXX)
-  __compiler_check_default_language_standard(CXX 6.10 98)
-  set(CMAKE_C_OUTPUT_EXTENSION ".r51")
-
-else()
-  message(FATAL_ERROR "CMAKE_CXX_COMPILER_ARCHITECTURE_ID not detected. This should be automatic." )
-endif()
diff --git a/share/cmake-3.18/Modules/Compiler/IAR-DetermineCompiler.cmake b/share/cmake-3.18/Modules/Compiler/IAR-DetermineCompiler.cmake
deleted file mode 100644
index 0a026b2..0000000
--- a/share/cmake-3.18/Modules/Compiler/IAR-DetermineCompiler.cmake
+++ /dev/null
@@ -1,39 +0,0 @@
-# IAR Systems compiler for ARM embedded systems.
-#   http://www.iar.com
-#   http://supp.iar.com/FilesPublic/UPDINFO/004916/arm/doc/EWARM_DevelopmentGuide.ENU.pdf
-#
-# __IAR_SYSTEMS_ICC__ An integer that identifies the IAR compiler platform:
-#                       9 and higher means C11 and C++14 as language default
-#                       8 means C99 and C++03 as language default
-#                       7 and lower means C89 and EC++ as language default.
-# __ICCARM__          An integer that is set to 1 when the code is compiled with the IAR C/C++ Compiler for ARM
-# __VER__             An integer that identifies the version number of the IAR compiler in use. For example,
-#                     version 5.11.3 is returned as 5011003.
-#
-# IAR Systems Compiler for AVR embedded systems
-#  http://supp.iar.com/FilesPublic/UPDINFO/007051/ew/doc/EWAVR_CompilerReference.pdf
-#
-# __IAR_SYSTEMS_ICC__ An integer that identifies the IAR compiler platform.
-# __ICCAVR__          An integer that is set to 1 when the code is compiled with the IAR C/C++ Compiler for AVR
-# __VER__             An integer that identifies the version number of the IAR compiler in use.
-#                     The value is calculated by (100 * VERSION_MAJOR + VERSION_MINOR). For example the version
-#                     3.34 is given as 334
-# __SUBVERSION__      An integer that identifies the subversion number of the compiler version number
-#                     for example 3 in 1.2.3.4.  THis is used as the patch version, as seen when running iccavr
-#                     from the command line
-#
-
-set(_compiler_id_pp_test "defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)")
-
-set(_compiler_id_version_compute "
-# if defined(__VER__) && defined(__ICCARM__)
-#  define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@((__VER__) / 1000000)
-#  define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(((__VER__) / 1000) % 1000)
-#  define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@((__VER__) % 1000)
-#  define @PREFIX@COMPILER_VERSION_INTERNAL @MACRO_DEC@(__IAR_SYSTEMS_ICC__)
-# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__))
-#  define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@((__VER__) / 100)
-#  define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@((__VER__) - (((__VER__) / 100)*100))
-#  define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__SUBVERSION__)
-#  define @PREFIX@COMPILER_VERSION_INTERNAL @MACRO_DEC@(__IAR_SYSTEMS_ICC__)
-# endif")
diff --git a/share/cmake-3.18/Modules/Compiler/IAR-FindBinUtils.cmake b/share/cmake-3.18/Modules/Compiler/IAR-FindBinUtils.cmake
deleted file mode 100644
index 6ef3759..0000000
--- a/share/cmake-3.18/Modules/Compiler/IAR-FindBinUtils.cmake
+++ /dev/null
@@ -1,63 +0,0 @@
-if(NOT DEFINED _CMAKE_PROCESSING_LANGUAGE OR _CMAKE_PROCESSING_LANGUAGE STREQUAL "")
-  message(FATAL_ERROR "Internal error: _CMAKE_PROCESSING_LANGUAGE is not set")
-endif()
-
-# Try to find tools in the same directory as the compiler itself
-get_filename_component(__iar_hint_1 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" REALPATH)
-get_filename_component(__iar_hint_1 "${__iar_hint_1}" DIRECTORY)
-
-get_filename_component(__iar_hint_2 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" DIRECTORY)
-
-set(__iar_hints "${__iar_hint_1}" "${__iar_hint_2}")
-
-if("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM" OR
-   "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RX" OR
-   "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RH850" OR
-   "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RL78" OR
-   "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RISCV")
-
-  string(TOLOWER "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" _archid_lower)
-
-  # Find linker
-  find_program(CMAKE_IAR_LINKER ilink${_archid_lower} HINTS ${__iar_hints}
-      DOC "The IAR ILINK linker")
-  find_program(CMAKE_IAR_ARCHIVE iarchive HINTS ${__iar_hints}
-      DOC "The IAR archiver")
-
-  # Find utility tools
-  find_program(CMAKE_IAR_ELFTOOL ielftool HINTS ${__iar_hints}
-      DOC "The IAR ELF Tool")
-    find_program(CMAKE_IAR_ELFDUMP ielfdump${_archid_lower} HINTS ${__iar_hints}
-      DOC "The IAR ELF Dumper")
-  find_program(CMAKE_IAR_OBJMANIP iobjmanip HINTS ${__iar_hints}
-      DOC "The IAR ELF Object Tool")
-  find_program(CMAKE_IAR_SYMEXPORT isymexport HINTS ${__iar_hints}
-      DOC "The IAR Absolute Symbol Exporter")
-  mark_as_advanced(CMAKE_IAR_LINKER CMAKE_IAR_ARCHIVE CMAKE_IAR_ELFTOOL CMAKE_IAR_ELFDUMP CMAKE_IAR_OBJMANIP CMAKE_IAR_SYMEXPORT)
-
-  set(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_CUSTOM_CODE
-"set(CMAKE_IAR_LINKER \"${CMAKE_IAR_LINKER}\")
-set(CMAKE_IAR_ARCHIVE \"${CMAKE_IAR_ARCHIVE}\")
-set(CMAKE_IAR_ELFTOOL \"${CMAKE_IAR_ELFTOOL}\")
-set(CMAKE_IAR_ELFDUMP \"${CMAKE_IAR_ELFDUMP}\")
-set(CMAKE_IAR_OBJMANIP \"${CMAKE_IAR_OBJMANIP}\")
-set(CMAKE_IAR_LINKER \"${CMAKE_IAR_LINKER}\")
-")
-
-elseif("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "AVR" OR
-       "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "MSP430" OR
-       "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "V850" OR
-       "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "8051")
-
-  # Find the "xlink" linker and "xar" archiver:
-  find_program(CMAKE_IAR_LINKER xlink HINTS ${__iar_hints}
-      DOC "The IAR XLINK linker")
-  find_program(CMAKE_IAR_AR xar HINTS ${__iar_hints}
-      DOC "The IAR archiver")
-  mark_as_advanced(CMAKE_IAR_LINKER CMAKE_IAR_AR)
-
-  set(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_CUSTOM_CODE
-"set(CMAKE_IAR_LINKER \"${CMAKE_IAR_LINKER}\")
-set(CMAKE_IAR_AR \"${CMAKE_IAR_AR}\")
-")
-endif()
diff --git a/share/cmake-3.18/Modules/Compiler/IAR.cmake b/share/cmake-3.18/Modules/Compiler/IAR.cmake
deleted file mode 100644
index 296e2fd..0000000
--- a/share/cmake-3.18/Modules/Compiler/IAR.cmake
+++ /dev/null
@@ -1,114 +0,0 @@
-# This file is processed when the IAR compiler is used for a C or C++ file
-# Documentation can be downloaded here: http://www.iar.com/website1/1.0.1.0/675/1/
-# The initial feature request is here: https://gitlab.kitware.com/cmake/cmake/-/issues/10176
-# It also contains additional links and information.
-# See USER GUIDES -> C/C++ Development Guide and ReleaseNotes for EWARM:
-# version 6.30.8: http://supp.iar.com/FilesPublic/UPDINFO/006607/arm/doc/infocenter/index.ENU.html
-# version 7.60.1: http://supp.iar.com/FilesPublic/UPDINFO/011006/arm/doc/infocenter/index.ENU.html
-# version 8.10.1: http://netstorage.iar.com/SuppDB/Public/UPDINFO/011854/arm/doc/infocenter/index.ENU.html
-
-# The IAR internal compiler platform generations (Predefined symbol __IAR_SYSTEMS_ICC__):
-#  9 and higher means C11 and C++14 as language default (EWARM v8.x, EWRX v4.x and higher)
-#  8 means C99 and C++03 as language default (EWARM v6.x, v7.x. EWRX v2.x, 3.x)
-#  7 and lower means C89 and EC++ as language default. (EWARM v5.x and lower)
-
-# C/C++ Standard versions
-#
-# IAR typically only supports one C and C++ Standard version,
-# the exception is C89 which is always supported and can be selected
-# if its not the default
-#
-# C++ is trickier, there were historically 3 switches,
-# and some IAR versions support multiple of those.
-# they are --eec++, --ec++ and --c++ and where used to
-# enable various language features like exceptions
-#
-# recent versions only have --c++ for full support
-# but can choose to disable features with further arguments
-#
-# C/C++ Standard compliance
-#
-# IAR has 3 modes: default, strict and extended
-# the extended mode is needed for popular libraries like CMSIS
-#
-# "Silent" Operation
-#
-# this really is different to most programs I know.
-# nothing meaningful from the operation is lost, just some redundant
-# code and data size printouts (that can be inspected with common tools).
-
-# This module is shared by multiple languages; use include blocker.
-include_guard()
-
-macro(__compiler_iar_ilink lang)
-  set(CMAKE_EXECUTABLE_SUFFIX ".elf")
-  if (${lang} STREQUAL "C" OR ${lang} STREQUAL "CXX")
-    set(CMAKE_${lang}_COMPILE_OBJECT             "<CMAKE_${lang}_COMPILER> ${CMAKE_IAR_${lang}_FLAG} --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT>")
-    set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> ${CMAKE_IAR_${lang}_FLAG} --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> --preprocess=cnl <PREPROCESSED_SOURCE>")
-    set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE     "<CMAKE_${lang}_COMPILER> ${CMAKE_IAR_${lang}_FLAG} --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -lAH <ASSEMBLY_SOURCE> -o <OBJECT>.dummy")
-
-    set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "-f ")
-    set(CMAKE_DEPFILE_FLAGS_${lang} "--dependencies=ns <DEPFILE>")
-
-    string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
-    string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -r")
-    string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Ohz -DNDEBUG")
-    string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -Oh -DNDEBUG")
-    string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -Oh -r -DNDEBUG")
-  endif()
-
-  if (${lang} STREQUAL "ASM")
-    string(APPEND CMAKE_ASM_FLAGS_INIT " ")
-    string(APPEND CMAKE_ASM_FLAGS_DEBUG_INIT " -r")
-    string(APPEND CMAKE_ASM_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
-    string(APPEND CMAKE_ASM_FLAGS_RELEASE_INIT " -DNDEBUG")
-    string(APPEND CMAKE_ASM_FLAGS_RELWITHDEBINFO_INIT " -r -DNDEBUG")
-  endif()
-
-  set(CMAKE_${lang}_LINK_EXECUTABLE "\"${CMAKE_IAR_LINKER}\" --silent <OBJECTS> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> -o <TARGET>")
-  set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "\"${CMAKE_IAR_ARCHIVE}\" <TARGET> --create <LINK_FLAGS> <OBJECTS>")
-  set(CMAKE_${lang}_ARCHIVE_CREATE "\"${CMAKE_IAR_ARCHIVE}\" <TARGET> --create <LINK_FLAGS> <OBJECTS>")
-  set(CMAKE_${lang}_ARCHIVE_APPEND "\"${CMAKE_IAR_ARCHIVE}\" <TARGET> --replace <LINK_FLAGS> <OBJECTS>")
-  set(CMAKE_${lang}_ARCHIVE_FINISH "")
-
-  set(CMAKE_LINKER "${CMAKE_IAR_LINKER}" CACHE FILEPATH "The IAR linker" FORCE)
-  set(CMAKE_AR "${CMAKE_IAR_ARCHIVE}" CACHE FILEPATH "The IAR archiver" FORCE)
-endmacro()
-
-macro(__compiler_iar_xlink lang)
-  set(CMAKE_EXECUTABLE_SUFFIX ".bin")
-  if (${lang} STREQUAL "C" OR ${lang} STREQUAL "CXX")
-
-    set(CMAKE_${lang}_COMPILE_OBJECT             "<CMAKE_${lang}_COMPILER> ${CMAKE_IAR_${lang}_FLAG} --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT>")
-    set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> ${CMAKE_IAR_${lang}_FLAG} --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> --preprocess=cnl <PREPROCESSED_SOURCE>")
-    set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE     "<CMAKE_${lang}_COMPILER> ${CMAKE_IAR_${lang}_FLAG} --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -lAH <ASSEMBLY_SOURCE> -o <OBJECT>.dummy")
-
-    set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "-f ")
-    set(CMAKE_DEPFILE_FLAGS_${lang} "--dependencies=ns <DEPFILE>")
-
-    string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
-    string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -r")
-    string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Ohz -DNDEBUG")
-    string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -Oh -DNDEBUG")
-    string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -Oh -r -DNDEBUG")
-  endif()
-
-  if (${lang} STREQUAL "ASM")
-    string(APPEND CMAKE_ASM_FLAGS_INIT " ")
-    string(APPEND CMAKE_ASM_FLAGS_DEBUG_INIT " -r")
-    string(APPEND CMAKE_ASM_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
-    string(APPEND CMAKE_ASM_FLAGS_RELEASE_INIT " -DNDEBUG")
-    string(APPEND CMAKE_ASM_FLAGS_RELWITHDEBINFO_INIT " -r -DNDEBUG")
-  endif()
-
-  set(CMAKE_${lang}_LINK_EXECUTABLE "\"${CMAKE_IAR_LINKER}\" -S <OBJECTS> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> -o <TARGET>")
-  set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "\"${CMAKE_IAR_AR}\" <TARGET> <LINK_FLAGS> <OBJECTS>")
-  set(CMAKE_${lang}_ARCHIVE_CREATE "\"${CMAKE_IAR_AR}\" <TARGET> <LINK_FLAGS> <OBJECTS>")
-  set(CMAKE_${lang}_ARCHIVE_APPEND "")
-  set(CMAKE_${lang}_ARCHIVE_FINISH "")
-
-  set(CMAKE_LIBRARY_PATH_FLAG "-I")
-
-  set(CMAKE_LINKER "${CMAKE_IAR_LINKER}" CACHE FILEPATH "The IAR linker" FORCE)
-  set(CMAKE_AR "${CMAKE_IAR_AR}" CACHE FILEPATH "The IAR archiver" FORCE)
-endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/Intel-C.cmake b/share/cmake-3.18/Modules/Compiler/Intel-C.cmake
deleted file mode 100644
index ec3bfd8..0000000
--- a/share/cmake-3.18/Modules/Compiler/Intel-C.cmake
+++ /dev/null
@@ -1,51 +0,0 @@
-include(Compiler/Intel)
-__compiler_intel(C)
-
-string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
-string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG")
-string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -DNDEBUG")
-
-set(CMAKE_DEPFILE_FLAGS_C "-MD -MT <OBJECT> -MF <DEPFILE>")
-
-if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
-
-  set(CMAKE_C_CLANG_TIDY_DRIVER_MODE "cl")
-
-  if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 16.0.0)
-    set(CMAKE_C11_STANDARD_COMPILE_OPTION "-Qstd=c11")
-    set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-Qstd=c11")
-    set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
-  endif()
-
-  if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.0)
-    set(CMAKE_C90_STANDARD_COMPILE_OPTION "-Qstd=c89")
-    set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-Qstd=c89")
-    set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
-    set(CMAKE_C99_STANDARD_COMPILE_OPTION "-Qstd=c99")
-    set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-Qstd=c99")
-    set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
-  endif()
-
-else()
-
-  if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0.0)
-    set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
-    set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
-    set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
-  endif()
-
-  if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.0)
-    set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c89")
-    set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu89")
-    set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
-    set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
-    set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
-    set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
-  endif()
-
-endif()
-
-__compiler_check_default_language_standard(C 12.0 90 15.0.0 11)
-
-set(CMAKE_C_CREATE_PREPROCESSED_SOURCE "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
-set(CMAKE_C_CREATE_ASSEMBLY_SOURCE "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
diff --git a/share/cmake-3.18/Modules/Compiler/Intel-CXX.cmake b/share/cmake-3.18/Modules/Compiler/Intel-CXX.cmake
deleted file mode 100644
index b71b946..0000000
--- a/share/cmake-3.18/Modules/Compiler/Intel-CXX.cmake
+++ /dev/null
@@ -1,96 +0,0 @@
-include(Compiler/Intel)
-__compiler_intel(CXX)
-
-string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
-string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -DNDEBUG")
-string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT " -DNDEBUG")
-
-set(CMAKE_DEPFILE_FLAGS_CXX "-MD -MT <OBJECT> -MF <DEPFILE>")
-
-if("x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
-
-  set(CMAKE_CXX_CLANG_TIDY_DRIVER_MODE "cl")
-
-  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0)
-    set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-Qstd=c++20")
-    set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-Qstd=c++20")
-  endif()
-
-  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0.0)
-    set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-Qstd=c++17")
-    set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-Qstd=c++17")
-  endif()
-
-  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16.0)
-    set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-Qstd=c++14")
-    set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-Qstd=c++14")
-  endif()
-
-  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.0)
-    set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-Qstd=c++11")
-    set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-Qstd=c++11")
-  elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
-    set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-Qstd=c++0x")
-    set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-Qstd=c++0x")
-  endif()
-
-  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
-    set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
-    set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "")
-    set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
-  endif()
-
-else()
-
-  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0)
-    set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++20")
-    set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++20")
-  endif()
-
-  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0.0)
-    set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
-    set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
-  endif()
-
-  if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 17.0)
-    set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
-  endif()
-
-  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0.2)
-    set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
-  elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0.0)
-    set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++1y")
-  endif()
-
-  # Intel 15.0.2 accepts c++14 instead of c++1y, but not gnu++14
-  # instead of gnu++1y.  Intel 17.0.0 accepts gnu++14 too.
-  if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 17.0)
-    set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
-  elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0.0)
-    set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
-  endif()
-
-  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0)
-    set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
-  endif()
-
-  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.0)
-    set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
-    set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
-  elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
-    set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++0x")
-    set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++0x")
-  endif()
-
-  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
-    set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
-    set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
-    set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
-  endif()
-
-endif()
-
-__compiler_check_default_language_standard(CXX 12.1 98)
-
-set(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
-set(CMAKE_CXX_CREATE_ASSEMBLY_SOURCE "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
diff --git a/share/cmake-3.18/Modules/Compiler/Intel-DetermineCompiler.cmake b/share/cmake-3.18/Modules/Compiler/Intel-DetermineCompiler.cmake
deleted file mode 100644
index c31aa77..0000000
--- a/share/cmake-3.18/Modules/Compiler/Intel-DetermineCompiler.cmake
+++ /dev/null
@@ -1,40 +0,0 @@
-
-set(_compiler_id_pp_test "defined(__INTEL_COMPILER) || defined(__ICC)")
-
-set(_compiler_id_version_compute "
-  /* __INTEL_COMPILER = VRP */
-# define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__INTEL_COMPILER/100)
-# define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__INTEL_COMPILER/10 % 10)
-# if defined(__INTEL_COMPILER_UPDATE)
-#  define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__INTEL_COMPILER_UPDATE)
-# else
-#  define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__INTEL_COMPILER   % 10)
-# endif
-# if defined(__INTEL_COMPILER_BUILD_DATE)
-  /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
-#  define @PREFIX@COMPILER_VERSION_TWEAK @MACRO_DEC@(__INTEL_COMPILER_BUILD_DATE)
-# endif
-# if defined(_MSC_VER)
-   /* _MSC_VER = VVRR */
-#  define @PREFIX@SIMULATE_VERSION_MAJOR @MACRO_DEC@(_MSC_VER / 100)
-#  define @PREFIX@SIMULATE_VERSION_MINOR @MACRO_DEC@(_MSC_VER % 100)
-# endif
-# if defined(__GNUC__)
-#  define @PREFIX@SIMULATE_VERSION_MAJOR @MACRO_DEC@(__GNUC__)
-# elif defined(__GNUG__)
-#  define @PREFIX@SIMULATE_VERSION_MAJOR @MACRO_DEC@(__GNUG__)
-# endif
-# if defined(__GNUC_MINOR__)
-#  define @PREFIX@SIMULATE_VERSION_MINOR @MACRO_DEC@(__GNUC_MINOR__)
-# endif
-# if defined(__GNUC_PATCHLEVEL__)
-#  define @PREFIX@SIMULATE_VERSION_PATCH @MACRO_DEC@(__GNUC_PATCHLEVEL__)
-# endif")
-
-set(_compiler_id_simulate "
-# if defined(_MSC_VER)
-#  define @PREFIX@SIMULATE_ID \"MSVC\"
-# endif
-# if defined(__GNUC__)
-#  define @PREFIX@SIMULATE_ID \"GNU\"
-# endif")
diff --git a/share/cmake-3.18/Modules/Compiler/Intel-Fortran.cmake b/share/cmake-3.18/Modules/Compiler/Intel-Fortran.cmake
deleted file mode 100644
index 71f25f4..0000000
--- a/share/cmake-3.18/Modules/Compiler/Intel-Fortran.cmake
+++ /dev/null
@@ -1,19 +0,0 @@
-include(Compiler/Intel)
-__compiler_intel(Fortran)
-
-set(CMAKE_Fortran_SUBMODULE_SEP "@")
-set(CMAKE_Fortran_SUBMODULE_EXT ".smod")
-
-set(CMAKE_Fortran_MODDIR_FLAG "-module ")
-set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-fixed")
-set(CMAKE_Fortran_FORMAT_FREE_FLAG "-free")
-
-set(CMAKE_Fortran_COMPILE_WITH_DEFINES 1)
-
-set(CMAKE_Fortran_CREATE_PREPROCESSED_SOURCE "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
-set(CMAKE_Fortran_CREATE_ASSEMBLY_SOURCE "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
-
-set(CMAKE_Fortran_PREPROCESS_SOURCE
-  "<CMAKE_Fortran_COMPILER> -fpp <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
-set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_ON "-fpp")
-set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_OFF "-nofpp")
diff --git a/share/cmake-3.18/Modules/Compiler/MSVC-C-FeatureTests.cmake b/share/cmake-3.18/Modules/Compiler/MSVC-C-FeatureTests.cmake
deleted file mode 100644
index 3f09be2..0000000
--- a/share/cmake-3.18/Modules/Compiler/MSVC-C-FeatureTests.cmake
+++ /dev/null
@@ -1,8 +0,0 @@
-set(_cmake_oldestSupported "_MSC_VER >= 1600")
-
-# Not yet supported:
-#set(_cmake_feature_test_c_static_assert "")
-#set(_cmake_feature_test_c_restrict "")
-
-set(_cmake_feature_test_c_variadic_macros "${_cmake_oldestSupported}")
-set(_cmake_feature_test_c_function_prototypes "${_cmake_oldestSupported}")
diff --git a/share/cmake-3.18/Modules/Compiler/MSVC-C.cmake b/share/cmake-3.18/Modules/Compiler/MSVC-C.cmake
deleted file mode 100644
index bca9764..0000000
--- a/share/cmake-3.18/Modules/Compiler/MSVC-C.cmake
+++ /dev/null
@@ -1,40 +0,0 @@
-# MSVC has no specific options to set C language standards, but set them as
-# empty strings anyways so the feature test infrastructure can at least check
-# to see if they are defined.
-set(CMAKE_C90_STANDARD_COMPILE_OPTION "")
-set(CMAKE_C90_EXTENSION_COMPILE_OPTION "")
-set(CMAKE_C99_STANDARD_COMPILE_OPTION "")
-set(CMAKE_C99_EXTENSION_COMPILE_OPTION "")
-set(CMAKE_C11_STANDARD_COMPILE_OPTION "")
-set(CMAKE_C11_EXTENSION_COMPILE_OPTION "")
-
-# There is no meaningful default for this
-set(CMAKE_C_STANDARD_DEFAULT "")
-
-set(CMAKE_C_CLANG_TIDY_DRIVER_MODE "cl")
-
-# There are no C compiler modes so we hard-code the known compiler supported
-# features. Override the default macro for this special case.  Pretend that
-# all language standards are available so that at least compilation
-# can be attempted.
-macro(cmake_record_c_compile_features)
-  list(APPEND CMAKE_C_COMPILE_FEATURES
-    c_std_90
-    c_std_99
-    c_std_11
-    c_function_prototypes
-    )
-  list(APPEND CMAKE_C90_COMPILE_FEATURES c_std_90 c_function_prototypes)
-  list(APPEND CMAKE_C99_COMPILE_FEATURES c_std_99)
-  list(APPEND CMAKE_C11_COMPILE_FEATURES c_std_11)
-  if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 14.0)
-    list(APPEND CMAKE_C_COMPILE_FEATURES c_variadic_macros)
-    list(APPEND CMAKE_C99_COMPILE_FEATURES c_variadic_macros)
-  endif()
-  set(_result 0) # expected by cmake_determine_compile_features
-endmacro()
-
-# /JMC "Just My Code" is only supported by MSVC 19.05 onward.
-if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 19.05)
-  set(CMAKE_C_COMPILE_OPTIONS_JMC "-JMC")
-endif()
diff --git a/share/cmake-3.18/Modules/Compiler/MSVC-CXX.cmake b/share/cmake-3.18/Modules/Compiler/MSVC-CXX.cmake
deleted file mode 100644
index 1dfc760..0000000
--- a/share/cmake-3.18/Modules/Compiler/MSVC-CXX.cmake
+++ /dev/null
@@ -1,74 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-include(Compiler/CMakeCommonCompilerMacros)
-
-set(CMAKE_CXX_CLANG_TIDY_DRIVER_MODE "cl")
-
-if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0.24215.1 AND
-     CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.10) OR
-   CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.10.25017)
-
-  # VS 2015 Update 3 and above support language standard level flags,
-  # with the default and minimum level being C++14.
-  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "")
-  set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
-  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "")
-  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std:c++14")
-  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std:c++14")
-  if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.11.25505)
-    set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
-    set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
-    set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std:c++17")
-    set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std:c++17")
-  else()
-    set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std:c++latest")
-    set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std:c++latest")
-  endif()
-  if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.12.25835)
-    set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std:c++latest")
-    set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std:c++latest")
-  endif()
-
-  __compiler_check_default_language_standard(CXX 19.0 14)
-
-elseif (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)
-  # MSVC has no specific options to set language standards, but set them as
-  # empty strings anyways so the feature test infrastructure can at least check
-  # to see if they are defined.
-  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "")
-  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "")
-  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "")
-  set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "")
-  set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "")
-
-  # There is no meaningful default for this
-  set(CMAKE_CXX_STANDARD_DEFAULT "")
-
-  # There are no compiler modes so we only need to test features once.
-  # Override the default macro for this special case.  Pretend that
-  # all language standards are available so that at least compilation
-  # can be attempted.
-  macro(cmake_record_cxx_compile_features)
-    list(APPEND CMAKE_CXX_COMPILE_FEATURES
-      cxx_std_98
-      cxx_std_11
-      cxx_std_14
-      cxx_std_17
-      cxx_std_20
-      )
-    _record_compiler_features(CXX "" CMAKE_CXX_COMPILE_FEATURES)
-  endmacro()
-endif()
-
-# /JMC "Just My Code" is only supported by MSVC 19.05 onward.
-if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.05)
-  set(CMAKE_CXX_COMPILE_OPTIONS_JMC "-JMC")
-endif()
diff --git a/share/cmake-3.18/Modules/Compiler/NAG-Fortran.cmake b/share/cmake-3.18/Modules/Compiler/NAG-Fortran.cmake
deleted file mode 100644
index ffce97e..0000000
--- a/share/cmake-3.18/Modules/Compiler/NAG-Fortran.cmake
+++ /dev/null
@@ -1,40 +0,0 @@
-# Help CMAKE_PARSE_IMPLICIT_LINK_INFO detect NAG Fortran object files.
-if(NOT CMAKE_Fortran_COMPILER_WORKS AND NOT CMAKE_Fortran_COMPILER_FORCED)
-  message(CHECK_START "Detecting NAG Fortran directory")
-  # Run with -dryrun to see sample "link" line.
-  execute_process(
-    COMMAND ${CMAKE_Fortran_COMPILER} dummy.o -dryrun
-    OUTPUT_VARIABLE _dryrun
-    ERROR_VARIABLE _dryrun
-    )
-  # Match an object file.
-  string(REGEX MATCH "/[^ ]*/[^ /][^ /]*\\.o" _nag_obj "${_dryrun}")
-  if(_nag_obj)
-    # Parse object directory and convert to a regex.
-    string(REGEX REPLACE "/[^/]*$" "" _nag_dir "${_nag_obj}")
-    string(REGEX REPLACE "([][+.*()^])" "\\\\\\1" _nag_regex "${_nag_dir}")
-    set(CMAKE_Fortran_IMPLICIT_OBJECT_REGEX "^${_nag_regex}/")
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-      "Detecting NAG Fortran directory with -dryrun found\n"
-      "  object: ${_nag_obj}\n"
-      "  directory: ${_nag_dir}\n"
-      "  regex: ${CMAKE_Fortran_IMPLICIT_OBJECT_REGEX}\n"
-      "from output:\n${_dryrun}\n\n")
-    message(CHECK_PASS "${_nag_dir}")
-  else()
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-      "Detecting NAG Fortran directory with -dryrun failed:\n${_dryrun}\n\n")
-    message(CHECK_FAIL "failed")
-  endif()
-endif()
-
-set(CMAKE_Fortran_SUBMODULE_SEP ".")
-set(CMAKE_Fortran_SUBMODULE_EXT ".sub")
-set(CMAKE_Fortran_MODDIR_FLAG "-mdir ")
-set(CMAKE_SHARED_LIBRARY_Fortran_FLAGS "-PIC")
-set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-fixed")
-set(CMAKE_Fortran_FORMAT_FREE_FLAG "-free")
-set(CMAKE_Fortran_COMPILE_OPTIONS_PIC "-PIC")
-set(CMAKE_Fortran_COMPILE_OPTIONS_PIE "-PIC")
-set(CMAKE_Fortran_RESPONSE_FILE_LINK_FLAG "-Wl,@")
-set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_ON "-fpp")
diff --git a/share/cmake-3.18/Modules/Compiler/NVIDIA-CUDA.cmake b/share/cmake-3.18/Modules/Compiler/NVIDIA-CUDA.cmake
deleted file mode 100644
index feb5ecc..0000000
--- a/share/cmake-3.18/Modules/Compiler/NVIDIA-CUDA.cmake
+++ /dev/null
@@ -1,119 +0,0 @@
-include(Compiler/CMakeCommonCompilerMacros)
-
-set(CMAKE_CUDA_COMPILER_HAS_DEVICE_LINK_PHASE True)
-set(CMAKE_CUDA_VERBOSE_FLAG "-v")
-set(CMAKE_CUDA_VERBOSE_COMPILE_FLAG "-Xcompiler=-v")
-
-set(_CMAKE_COMPILE_AS_CUDA_FLAG "-x cu")
-set(_CMAKE_CUDA_PTX_FLAG "-ptx")
-
-if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 10.2.89)
-  # The -forward-unknown-to-host-compiler flag was only
-  # added to nvcc in 10.2 so before that we had no good
-  # way to invoke the CUDA compiler and propagate unknown
-  # flags such as -pthread to the host compiler
-  set(_CMAKE_CUDA_EXTRA_FLAGS "-forward-unknown-to-host-compiler")
-else()
-  set(_CMAKE_CUDA_EXTRA_FLAGS "")
-endif()
-
-if(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL "8.0.0")
-  set(_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS "-Wno-deprecated-gpu-targets")
-else()
-  set(_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS "")
-endif()
-
-if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 10.2.89)
-  # The -MD flag was only added to nvcc in 10.2 so
-  # before that we had to invoke the compiler twice
-  # to get header dependency information
-  set(CMAKE_DEPFILE_FLAGS_CUDA "-MD -MT <OBJECT> -MF <DEPFILE>")
-endif()
-
-if(NOT "x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC")
-  set(CMAKE_CUDA_COMPILE_OPTIONS_PIE -Xcompiler=-fPIE)
-  set(CMAKE_CUDA_COMPILE_OPTIONS_PIC -Xcompiler=-fPIC)
-  set(CMAKE_CUDA_COMPILE_OPTIONS_VISIBILITY -Xcompiler=-fvisibility=)
-  # CMAKE_SHARED_LIBRARY_CUDA_FLAGS is sent to the host linker so we
-  # don't need to forward it through nvcc.
-  set(CMAKE_SHARED_LIBRARY_CUDA_FLAGS -fPIC)
-  string(APPEND CMAKE_CUDA_FLAGS_INIT " ")
-  string(APPEND CMAKE_CUDA_FLAGS_DEBUG_INIT " -g")
-  string(APPEND CMAKE_CUDA_FLAGS_RELEASE_INIT " -O3 -DNDEBUG")
-  string(APPEND CMAKE_CUDA_FLAGS_MINSIZEREL_INIT " -O1 -DNDEBUG")
-  string(APPEND CMAKE_CUDA_FLAGS_RELWITHDEBINFO_INIT " -O2 -g -DNDEBUG")
-endif()
-set(CMAKE_SHARED_LIBRARY_CREATE_CUDA_FLAGS -shared)
-set(CMAKE_INCLUDE_SYSTEM_FLAG_CUDA -isystem=)
-
-if (CMAKE_CUDA_SIMULATE_ID STREQUAL "GNU")
-  set(CMAKE_CUDA_LINKER_WRAPPER_FLAG "-Wl,")
-  set(CMAKE_CUDA_LINKER_WRAPPER_FLAG_SEP ",")
-elseif(CMAKE_CUDA_SIMULATE_ID STREQUAL "Clang")
-  set(CMAKE_CUDA_LINKER_WRAPPER_FLAG "-Xlinker" " ")
-  set(CMAKE_CUDA_LINKER_WRAPPER_FLAG_SEP)
-endif()
-
-set(CMAKE_CUDA_DEVICE_COMPILER_WRAPPER_FLAG "-Xcompiler=")
-set(CMAKE_CUDA_DEVICE_COMPILER_WRAPPER_FLAG_SEP ",")
-set(CMAKE_CUDA_DEVICE_LINKER_WRAPPER_FLAG "-Xlinker=")
-set(CMAKE_CUDA_DEVICE_LINKER_WRAPPER_FLAG_SEP ",")
-
-set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_STATIC  "cudadevrt;cudart_static")
-set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_SHARED  "cudadevrt;cudart")
-set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_NONE    "")
-
-if(UNIX)
-  list(APPEND CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_STATIC "rt" "pthread" "dl")
-endif()
-
-if("x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC")
-  set(CMAKE_CUDA03_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_CUDA03_EXTENSION_COMPILE_OPTION "")
-
-  set(CMAKE_CUDA11_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_CUDA11_EXTENSION_COMPILE_OPTION "")
-
-  if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 9.0)
-    set(CMAKE_CUDA14_STANDARD_COMPILE_OPTION "")
-    set(CMAKE_CUDA14_EXTENSION_COMPILE_OPTION "")
-  endif()
-
-  if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 11.0)
-    set(CMAKE_CUDA17_STANDARD_COMPILE_OPTION "")
-    set(CMAKE_CUDA17_EXTENSION_COMPILE_OPTION "")
-  endif()
-
-else()
-  set(CMAKE_CUDA03_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_CUDA03_EXTENSION_COMPILE_OPTION "")
-
-  set(CMAKE_CUDA11_STANDARD_COMPILE_OPTION "-std=c++11")
-  set(CMAKE_CUDA11_EXTENSION_COMPILE_OPTION "-std=c++11")
-
-  if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 9.0)
-    set(CMAKE_CUDA03_STANDARD_COMPILE_OPTION "-std=c++03")
-    set(CMAKE_CUDA03_EXTENSION_COMPILE_OPTION "-std=c++03")
-    set(CMAKE_CUDA14_STANDARD_COMPILE_OPTION "-std=c++14")
-    set(CMAKE_CUDA14_EXTENSION_COMPILE_OPTION "-std=c++14")
-  endif()
-
-  if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 11.0)
-    set(CMAKE_CUDA17_STANDARD_COMPILE_OPTION "-std=c++17")
-    set(CMAKE_CUDA17_EXTENSION_COMPILE_OPTION "-std=c++17")
-  endif()
-
-endif()
-
-# FIXME: investigate use of --options-file.
-# Tell Makefile generator that nvcc does not support @<rspfile> syntax.
-set(CMAKE_CUDA_USE_RESPONSE_FILE_FOR_INCLUDES 0)
-set(CMAKE_CUDA_USE_RESPONSE_FILE_FOR_LIBRARIES 0)
-set(CMAKE_CUDA_USE_RESPONSE_FILE_FOR_OBJECTS 0)
-
-if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL "9.0")
-  set(CMAKE_CUDA_RESPONSE_FILE_DEVICE_LINK_FLAG "--options-file ")
-  set(CMAKE_CUDA_RESPONSE_FILE_FLAG "--options-file ")
-endif()
-
-__compiler_check_default_language_standard(CUDA 6.0 03)
diff --git a/share/cmake-3.18/Modules/Compiler/OpenWatcom.cmake b/share/cmake-3.18/Modules/Compiler/OpenWatcom.cmake
deleted file mode 100644
index 9efbfc2..0000000
--- a/share/cmake-3.18/Modules/Compiler/OpenWatcom.cmake
+++ /dev/null
@@ -1,118 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-# This module is shared by multiple languages; use include blocker.
-include_guard()
-
-set(CMAKE_LIBRARY_PATH_FLAG "libpath ")
-set(CMAKE_LINK_LIBRARY_FLAG "library ")
-set(CMAKE_LINK_LIBRARY_FILE_FLAG "library ")
-
-if(CMAKE_VERBOSE_MAKEFILE)
-  set(CMAKE_WCL_QUIET)
-  set(CMAKE_WLINK_QUIET)
-  set(CMAKE_LIB_QUIET)
-else()
-  set(CMAKE_WCL_QUIET "-zq")
-  set(CMAKE_WLINK_QUIET "option quiet")
-  set(CMAKE_LIB_QUIET "-q")
-endif()
-
-foreach(type CREATE_SHARED_LIBRARY CREATE_SHARED_MODULE LINK_EXECUTABLE)
-  set(CMAKE_C_${type}_USE_WATCOM_QUOTE 1)
-  set(CMAKE_CXX_${type}_USE_WATCOM_QUOTE 1)
-endforeach()
-
-foreach(type SHARED MODULE EXE)
-  # linker map file creation directives
-  string(APPEND CMAKE_${type}_LINKER_FLAGS_INIT " opt map")
-  # linker debug directives
-  string(APPEND CMAKE_${type}_LINKER_FLAGS_DEBUG_INIT " debug all")
-  string(APPEND CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO_INIT " debug all")
-endforeach()
-
-foreach(lang C CXX)
-  # warning level
-  string(APPEND CMAKE_${lang}_FLAGS_INIT " -w3")
-  # debug options
-  string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -d2")
-  string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -s -os -d0 -dNDEBUG")
-  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -s -ot -d0 -dNDEBUG")
-  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -s -ot -d1 -dNDEBUG")
-endforeach()
-
-# C create import library
-set(CMAKE_C_CREATE_IMPORT_LIBRARY
-  "wlib -c -q -n -b <TARGET_IMPLIB> +<TARGET_QUOTED>")
-# C++ create import library
-set(CMAKE_CXX_CREATE_IMPORT_LIBRARY ${CMAKE_C_CREATE_IMPORT_LIBRARY})
-
-# C link a object files into an executable file
-set(CMAKE_C_LINK_EXECUTABLE
-  "wlink ${CMAKE_WLINK_QUIET} name <TARGET> <LINK_FLAGS> file {<OBJECTS>} <LINK_LIBRARIES>")
-# C++ link a object files into an executable file
-set(CMAKE_CXX_LINK_EXECUTABLE ${CMAKE_C_LINK_EXECUTABLE})
-
-# C compile a file into an object file
-set(CMAKE_C_COMPILE_OBJECT
-  "<CMAKE_C_COMPILER> ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo<OBJECT> -c -cc <SOURCE>")
-# C++ compile a file into an object file
-set(CMAKE_CXX_COMPILE_OBJECT
-  "<CMAKE_CXX_COMPILER> ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo<OBJECT> -c -cc++ <SOURCE>")
-
-# C preprocess a source file
-set(CMAKE_C_CREATE_PREPROCESSED_SOURCE
-  "<CMAKE_C_COMPILER> ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo<PREPROCESSED_SOURCE> -pl -cc <SOURCE>")
-# C++ preprocess a source file
-set(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE
-  "<CMAKE_CXX_COMPILER> ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo<PREPROCESSED_SOURCE> -pl -cc++ <SOURCE>")
-
-# C create a shared library
-set(CMAKE_C_CREATE_SHARED_LIBRARY
-  "wlink ${CMAKE_WLINK_QUIET} name <TARGET> <LINK_FLAGS> option implib=<TARGET_IMPLIB> file {<OBJECTS>} <LINK_LIBRARIES>")
-# C++ create a shared library
-set(CMAKE_CXX_CREATE_SHARED_LIBRARY ${CMAKE_C_CREATE_SHARED_LIBRARY})
-
-# C create a shared module
-set(CMAKE_C_CREATE_SHARED_MODULE
-  "wlink ${CMAKE_WLINK_QUIET} name <TARGET> <LINK_FLAGS> file {<OBJECTS>} <LINK_LIBRARIES>")
-# C++ create a shared module
-set(CMAKE_CXX_CREATE_SHARED_MODULE ${CMAKE_C_CREATE_SHARED_MODULE})
-
-# C create a static library
-set(CMAKE_C_CREATE_STATIC_LIBRARY
-  "wlib ${CMAKE_LIB_QUIET} -c -n -b <TARGET_QUOTED> <LINK_FLAGS> <OBJECTS> ")
-# C++ create a static library
-set(CMAKE_CXX_CREATE_STATIC_LIBRARY ${CMAKE_C_CREATE_STATIC_LIBRARY})
-
-
-# old CMake internaly used OpenWatcom version macros
-# for backward compatibility
-if(NOT _CMAKE_WATCOM_VERSION)
-  set(_CMAKE_WATCOM_VERSION 1)
-  if(CMAKE_C_COMPILER_VERSION)
-    set(_compiler_version ${CMAKE_C_COMPILER_VERSION})
-    set(_compiler_id ${CMAKE_C_COMPILER_ID})
-  else()
-    set(_compiler_version ${CMAKE_CXX_COMPILER_VERSION})
-    set(_compiler_id ${CMAKE_CXX_COMPILER_ID})
-  endif()
-  set(WATCOM16)
-  set(WATCOM17)
-  set(WATCOM18)
-  set(WATCOM19)
-  if("${_compiler_id}" STREQUAL "OpenWatcom")
-    if("${_compiler_version}" VERSION_LESS 1.7)
-      set(WATCOM16 1)
-    endif()
-    if("${_compiler_version}" VERSION_EQUAL 1.7)
-      set(WATCOM17 1)
-    endif()
-    if("${_compiler_version}" VERSION_EQUAL 1.8)
-      set(WATCOM18 1)
-    endif()
-    if("${_compiler_version}" VERSION_EQUAL 1.9)
-      set(WATCOM19 1)
-    endif()
-  endif()
-endif()
diff --git a/share/cmake-3.18/Modules/Compiler/PGI-CXX.cmake b/share/cmake-3.18/Modules/Compiler/PGI-CXX.cmake
deleted file mode 100644
index c77de36..0000000
--- a/share/cmake-3.18/Modules/Compiler/PGI-CXX.cmake
+++ /dev/null
@@ -1,27 +0,0 @@
-include(Compiler/PGI)
-__compiler_pgi(CXX)
-string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
-string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -DNDEBUG")
-
-if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 12.10)
-  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION  -A)
-  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION --gnu_extensions)
-  set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
-  if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.10)
-    set(CMAKE_CXX11_STANDARD_COMPILE_OPTION  --c++11 -A)
-    set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION --c++11 --gnu_extensions)
-    set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
-    if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 15.7)
-      set(CMAKE_CXX14_STANDARD_COMPILE_OPTION  --c++14 -A)
-      set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION --c++14 --gnu_extensions)
-      set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
-      if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 17.1)
-        set(CMAKE_CXX17_STANDARD_COMPILE_OPTION  --c++17 -A)
-        set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION --c++17 --gnu_extensions)
-        set(CMAKE_CXX17_STANDARD__HAS_FULL_SUPPORT ON)
-      endif()
-    endif()
-  endif()
-endif()
-
-__compiler_check_default_language_standard(CXX 12.10 98)
diff --git a/share/cmake-3.18/Modules/Compiler/PGI.cmake b/share/cmake-3.18/Modules/Compiler/PGI.cmake
deleted file mode 100644
index 4f8b90b..0000000
--- a/share/cmake-3.18/Modules/Compiler/PGI.cmake
+++ /dev/null
@@ -1,42 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This module is shared by multiple languages; use include blocker.
-if(__COMPILER_PGI)
-  return()
-endif()
-set(__COMPILER_PGI 1)
-
-include(Compiler/CMakeCommonCompilerMacros)
-
-macro(__compiler_pgi lang)
-  # Feature flags.
-  set(CMAKE_${lang}_VERBOSE_FLAG "-v")
-
-  # Initial configuration flags.
-  string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
-  string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g -O0")
-  string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -O2 -s")
-  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -fast -O3")
-  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -gopt")
-
-  if(CMAKE_HOST_WIN32)
-    string(APPEND CMAKE_${lang}_FLAGS_INIT " -Bdynamic")
-  endif()
-
-  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Wl,")
-  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG ",")
-
-  set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
-  if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL ppc64le AND (NOT CMAKE_HOST_WIN32 OR CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 16.3))
-    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
-    set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-Mipa=fast,inline")
-  else()
-    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER NO)
-  endif()
-
-  # Preprocessing and assembly rules.
-  set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
-  set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
-endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/QCC.cmake b/share/cmake-3.18/Modules/Compiler/QCC.cmake
deleted file mode 100644
index 10e1389..0000000
--- a/share/cmake-3.18/Modules/Compiler/QCC.cmake
+++ /dev/null
@@ -1,37 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-include(Compiler/GNU)
-
-macro(__compiler_qcc lang)
-  __compiler_gnu(${lang})
-
-  # http://www.qnx.com/developers/docs/6.4.0/neutrino/utilities/q/qcc.html#examples
-  set(CMAKE_${lang}_COMPILE_OPTIONS_TARGET "-V")
-
-  set(CMAKE_PREFIX_LIBRARY_ARCHITECTURE "ON")
-
-  set(CMAKE_${lang}_COMPILE_OPTIONS_SYSROOT "-Wc,-isysroot,")
-  set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-Wp,-isystem,")
-  set(CMAKE_DEPFILE_FLAGS_${lang} "-Wp,-MD,<DEPFILE> -Wp,-MT,<OBJECT> -Wp,-MF,<DEPFILE>")
-
-  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Wl,")
-  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP ",")
-
-  set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE NO)
-  set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER NO)
-
-  set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}")
-  if(CMAKE_${lang}_COMPILER_ARG1)
-    separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}")
-    list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS})
-    unset(_COMPILER_ARGS)
-  endif()
-  list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-Wp,-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp")
-
-  unset(CMAKE_${lang}_COMPILE_OPTIONS_IPO)
-  unset(CMAKE_${lang}_ARCHIVE_CREATE_IPO)
-  unset(CMAKE_${lang}_ARCHIVE_APPEND_IPO)
-  unset(CMAKE_${lang}_ARCHIVE_FINISH_IPO)
-endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/SunPro-C.cmake b/share/cmake-3.18/Modules/Compiler/SunPro-C.cmake
deleted file mode 100644
index 7e962b8..0000000
--- a/share/cmake-3.18/Modules/Compiler/SunPro-C.cmake
+++ /dev/null
@@ -1,59 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-include(Compiler/SunPro)
-
-set(CMAKE_C_VERBOSE_FLAG "-#")
-
-set(CMAKE_C_COMPILE_OPTIONS_PIC -KPIC)
-set(CMAKE_C_COMPILE_OPTIONS_PIE "")
-set(_CMAKE_C_PIE_MAY_BE_SUPPORTED_BY_LINKER NO)
-set(CMAKE_C_LINK_OPTIONS_PIE "")
-set(CMAKE_C_LINK_OPTIONS_NO_PIE "")
-set(CMAKE_SHARED_LIBRARY_C_FLAGS "-KPIC")
-set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-G")
-set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-R")
-set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":")
-set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-h")
-
-string(APPEND CMAKE_C_FLAGS_INIT " ")
-string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " -g")
-string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -xO2 -xspace -DNDEBUG")
-string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -xO3 -DNDEBUG")
-string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -g -xO2 -DNDEBUG")
-
-set(CMAKE_DEPFILE_FLAGS_C "-xMD -xMF <DEPFILE>")
-
-# Initialize C link type selection flags.  These flags are used when
-# building a shared library, shared module, or executable that links
-# to other libraries to select whether to use the static or shared
-# versions of the libraries.
-foreach(type SHARED_LIBRARY SHARED_MODULE EXE)
-  set(CMAKE_${type}_LINK_STATIC_C_FLAGS "-Bstatic")
-  set(CMAKE_${type}_LINK_DYNAMIC_C_FLAGS "-Bdynamic")
-endforeach()
-
-set(CMAKE_C_LINKER_WRAPPER_FLAG "-Qoption" "ld" " ")
-set(CMAKE_C_LINKER_WRAPPER_FLAG_SEP ",")
-
-if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 5.13)
-  set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c89")
-  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=c89")
-  set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
-  set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
-  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=c99")
-  set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
-  set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
-  set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=c11")
-  set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
-elseif (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 5.11)
-  set(CMAKE_C90_STANDARD_COMPILE_OPTION "")
-  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "")
-  set(CMAKE_C99_STANDARD_COMPILE_OPTION "-xc99")
-  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-xc99")
-endif()
-
-__compiler_check_default_language_standard(C 5.11 90 5.14 11)
-
-set(CMAKE_C_CREATE_PREPROCESSED_SOURCE "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
-set(CMAKE_C_CREATE_ASSEMBLY_SOURCE "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
diff --git a/share/cmake-3.18/Modules/Compiler/SunPro-CXX.cmake b/share/cmake-3.18/Modules/Compiler/SunPro-CXX.cmake
deleted file mode 100644
index c946c64..0000000
--- a/share/cmake-3.18/Modules/Compiler/SunPro-CXX.cmake
+++ /dev/null
@@ -1,66 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-include(Compiler/SunPro)
-
-set(CMAKE_CXX_VERBOSE_FLAG "-v")
-
-set(CMAKE_CXX_COMPILE_OPTIONS_PIC -KPIC)
-set(CMAKE_CXX_COMPILE_OPTIONS_PIE "")
-set(_CMAKE_CXX_PIE_MAY_BE_SUPPORTED_BY_LINKER NO)
-set(CMAKE_CXX_LINK_OPTIONS_PIE "")
-set(CMAKE_CXX_LINK_OPTIONS_NO_PIE "")
-set(CMAKE_SHARED_LIBRARY_CXX_FLAGS "-KPIC")
-set(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-G")
-set(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG "-R")
-set(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG_SEP ":")
-set(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-h")
-
-string(APPEND CMAKE_CXX_FLAGS_INIT " ")
-string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " -g")
-string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -xO2 -xspace -DNDEBUG")
-string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -xO3 -DNDEBUG")
-string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT " -g -xO2 -DNDEBUG")
-
-set(CMAKE_DEPFILE_FLAGS_CXX "-xMD -xMF <DEPFILE>")
-
-# Initialize C link type selection flags.  These flags are used when
-# building a shared library, shared module, or executable that links
-# to other libraries to select whether to use the static or shared
-# versions of the libraries.
-foreach(type SHARED_LIBRARY SHARED_MODULE EXE)
-  set(CMAKE_${type}_LINK_STATIC_CXX_FLAGS "-Bstatic")
-  set(CMAKE_${type}_LINK_DYNAMIC_CXX_FLAGS "-Bdynamic")
-endforeach()
-
-set(CMAKE_CXX_LINKER_WRAPPER_FLAG "-Qoption" "ld" " ")
-set(CMAKE_CXX_LINKER_WRAPPER_FLAG_SEP ",")
-
-set(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
-set(CMAKE_CXX_CREATE_ASSEMBLY_SOURCE "<CMAKE_CXX_COMPILER> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
-
-# Create archives with "CC -xar" in case user adds "-instances=extern"
-# so that template instantiations are available to archive members.
-set(CMAKE_CXX_CREATE_STATIC_LIBRARY
-  "<CMAKE_CXX_COMPILER> -xar -o <TARGET> <OBJECTS> "
-  "<CMAKE_RANLIB> <TARGET> ")
-
-if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.13)
-  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++03")
-  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=c++03")
-  set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
-  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
-  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=c++11")
-  set(CMAKE_CXX_LINK_WITH_STANDARD_COMPILE_OPTION 1)
-
-  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.14)
-    set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
-    set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=c++14")
-  endif()
-else()
-  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-library=stlport4")
-  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-library=stlport4")
-  set(CMAKE_CXX_LINK_WITH_STANDARD_COMPILE_OPTION 1)
-endif()
-
-__compiler_check_default_language_standard(CXX 1 98)
diff --git a/share/cmake-3.18/Modules/Compiler/TI-ASM.cmake b/share/cmake-3.18/Modules/Compiler/TI-ASM.cmake
deleted file mode 100644
index a566d70..0000000
--- a/share/cmake-3.18/Modules/Compiler/TI-ASM.cmake
+++ /dev/null
@@ -1,8 +0,0 @@
-set(CMAKE_LIBRARY_PATH_FLAG "--search_path=")
-set(CMAKE_LINK_LIBRARY_FLAG "--library=")
-set(CMAKE_INCLUDE_FLAG_ASM "--include_path=")
-
-set(CMAKE_ASM_COMPILE_OBJECT  "<CMAKE_ASM_COMPILER> --compile_only --asm_file=<SOURCE> <DEFINES> <INCLUDES> <FLAGS> --output_file=<OBJECT>")
-set(CMAKE_ASM_LINK_EXECUTABLE "<CMAKE_ASM_COMPILER> <OBJECTS> --run_linker --output_file=<TARGET> <CMAKE_ASM_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES>")
-
-set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS asm;s;abs)
diff --git a/share/cmake-3.18/Modules/Compiler/TI-C.cmake b/share/cmake-3.18/Modules/Compiler/TI-C.cmake
deleted file mode 100644
index b060ee9..0000000
--- a/share/cmake-3.18/Modules/Compiler/TI-C.cmake
+++ /dev/null
@@ -1,22 +0,0 @@
-set(CMAKE_LIBRARY_PATH_FLAG "--search_path=")
-set(CMAKE_LINK_LIBRARY_FLAG "--library=")
-set(CMAKE_INCLUDE_FLAG_C "--include_path=")
-
-set(CMAKE_C90_STANDARD_COMPILE_OPTION "--c89")
-set(CMAKE_C90_EXTENSION_COMPILE_OPTION "--c89 --relaxed_ansi")
-
-set(CMAKE_C99_STANDARD_COMPILE_OPTION "--c99")
-set(CMAKE_C99_EXTENSION_COMPILE_OPTION "--c99 --relaxed_ansi")
-
-set(CMAKE_DEPFILE_FLAGS_C "--preproc_with_compile --preproc_dependency=<DEPFILE>")
-
-set(CMAKE_C_CREATE_ASSEMBLY_SOURCE "<CMAKE_C_COMPILER> --compile_only --skip_assembler --c_file=<SOURCE> <DEFINES> <INCLUDES> <FLAGS> --output_file=<ASSEMBLY_SOURCE>")
-set(CMAKE_C_CREATE_PREPROCESSED_SOURCE "<CMAKE_C_COMPILER> --preproc_only --c_file=<SOURCE> <DEFINES> <INCLUDES> <FLAGS> --output_file=<PREPROCESSED_SOURCE>")
-
-set(CMAKE_C_COMPILE_OBJECT  "<CMAKE_C_COMPILER> --compile_only --c_file=<SOURCE> <DEFINES> <INCLUDES> <FLAGS> --output_file=<OBJECT>")
-set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> qr <TARGET> <OBJECTS>")
-set(CMAKE_C_ARCHIVE_APPEND "<CMAKE_AR> qa <TARGET> <OBJECTS>")
-set(CMAKE_C_LINK_EXECUTABLE "<CMAKE_C_COMPILER> --run_linker --output_file=<TARGET> --map_file=<TARGET_NAME>.map <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> <LINK_LIBRARIES>")
-set(CMAKE_ASM_RESPONSE_FILE_FLAG "--cmd_file=")
-set(CMAKE_C_RESPONSE_FILE_FLAG "--cmd_file=")
-set(CMAKE_C_RESPONSE_FILE_LINK_FLAG " ")
diff --git a/share/cmake-3.18/Modules/Compiler/TI-CXX.cmake b/share/cmake-3.18/Modules/Compiler/TI-CXX.cmake
deleted file mode 100644
index 7836543..0000000
--- a/share/cmake-3.18/Modules/Compiler/TI-CXX.cmake
+++ /dev/null
@@ -1,15 +0,0 @@
-set(CMAKE_LIBRARY_PATH_FLAG "--search_path=")
-set(CMAKE_LINK_LIBRARY_FLAG "--library=")
-set(CMAKE_INCLUDE_FLAG_CXX "--include_path=")
-
-set(CMAKE_DEPFILE_FLAGS_CXX "--preproc_with_compile --preproc_dependency=<DEPFILE>")
-
-set(CMAKE_CXX_CREATE_ASSEMBLY_SOURCE "<CMAKE_CXX_COMPILER> --compile_only --skip_assembler --cpp_file=<SOURCE> <DEFINES> <INCLUDES> <FLAGS> --output_file=<ASSEMBLY_SOURCE>")
-set(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE "<CMAKE_CXX_COMPILER> --preproc_only --cpp_file=<SOURCE> <DEFINES> <INCLUDES> <FLAGS> --output_file=<PREPROCESSED_SOURCE>")
-
-set(CMAKE_CXX_COMPILE_OBJECT  "<CMAKE_CXX_COMPILER> --compile_only --cpp_file=<SOURCE> <DEFINES> <INCLUDES> <FLAGS> --output_file=<OBJECT>")
-set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> qr <TARGET> <OBJECTS>")
-set(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> qa <TARGET> <OBJECTS>")
-set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> --run_linker --output_file=<TARGET> --map_file=<TARGET_NAME>.map <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> <LINK_LIBRARIES>")
-set(CMAKE_CXX_RESPONSE_FILE_FLAG "--cmd_file=")
-set(CMAKE_CXX_RESPONSE_FILE_LINK_FLAG " ")
diff --git a/share/cmake-3.18/Modules/Compiler/XL.cmake b/share/cmake-3.18/Modules/Compiler/XL.cmake
deleted file mode 100644
index fc71ab4..0000000
--- a/share/cmake-3.18/Modules/Compiler/XL.cmake
+++ /dev/null
@@ -1,34 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This module is shared by multiple languages; use include blocker.
-if(__COMPILER_XL)
-  return()
-endif()
-set(__COMPILER_XL 1)
-
-include(Compiler/CMakeCommonCompilerMacros)
-
-macro(__compiler_xl lang)
-  # Feature flags.
-  set(CMAKE_${lang}_VERBOSE_FLAG "-V")
-  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-qpic")
-  set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-qpic")
-  set(CMAKE_${lang}_RESPONSE_FILE_FLAG "-qoptfile=")
-  set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "-qoptfile=")
-
-  set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-qmkshrobj")
-
-  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Wl,")
-  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP ",")
-
-  string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g")
-  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O")
-  string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -O")
-  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -g")
-  set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
-  set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE     "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
-
-  set(CMAKE_DEPFILE_FLAGS_${lang} "-MF <DEPFILE> -qmakedep=gcc")
-endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/XLClang-C.cmake b/share/cmake-3.18/Modules/Compiler/XLClang-C.cmake
deleted file mode 100644
index 54c18a6..0000000
--- a/share/cmake-3.18/Modules/Compiler/XLClang-C.cmake
+++ /dev/null
@@ -1,20 +0,0 @@
-include(Compiler/XLClang)
-__compiler_xlclang(C)
-
-if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.1)
-  set(CMAKE_C90_STANDARD_COMPILE_OPTION  "-std=c89")
-  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu89")
-  set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
-  set(CMAKE_C99_STANDARD_COMPILE_OPTION  "-std=c99")
-  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
-  set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
-  set(CMAKE_C11_STANDARD_COMPILE_OPTION  "-qlanglvl=extc1x")
-  set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-qlanglvl=extc1x")
-  if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.2)
-    set(CMAKE_C11_STANDARD_COMPILE_OPTION  "-std=c11")
-    set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
-    set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
-  endif ()
-endif()
-
-__compiler_check_default_language_standard(C 13.1.1 99)
diff --git a/share/cmake-3.18/Modules/Compiler/XLClang-CXX.cmake b/share/cmake-3.18/Modules/Compiler/XLClang-CXX.cmake
deleted file mode 100644
index 9ea3d7c..0000000
--- a/share/cmake-3.18/Modules/Compiler/XLClang-CXX.cmake
+++ /dev/null
@@ -1,27 +0,0 @@
-include(Compiler/XLClang)
-__compiler_xlclang(CXX)
-
-if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.1)
-  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION  "")
-  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "")
-  set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
-  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION  "-qlanglvl=extended0x")
-  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-qlanglvl=extended0x")
-  set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
-  if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.2)
-    set(CMAKE_CXX11_STANDARD_COMPILE_OPTION  "-std=c++11")
-    set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
-    set(CMAKE_CXX14_STANDARD_COMPILE_OPTION  "-std=c++1y")
-    set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
-    set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
-  endif ()
-  if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.1.0)
-    set(CMAKE_CXX14_STANDARD_COMPILE_OPTION  "-std=c++14")
-    set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
-  endif()
-endif()
-
-__compiler_check_default_language_standard(CXX 13.1.1 98)
-
-set(CMAKE_CXX_COMPILE_OBJECT
-  "<CMAKE_CXX_COMPILER> -x c++ <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
diff --git a/share/cmake-3.18/Modules/CompilerId/VS-10.csproj.in b/share/cmake-3.18/Modules/CompilerId/VS-10.csproj.in
deleted file mode 100644
index ed5e847..0000000
--- a/share/cmake-3.18/Modules/CompilerId/VS-10.csproj.in
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{CAE07175-D007-4FC3-BFE8-47B392814159}</ProjectGuid>
-    <RootNamespace>CompilerId@id_lang@</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-    @id_system@
-    @id_system_version@
-    @id_WindowsTargetPlatformVersion@
-    @id_WindowsSDKDesktopARMSupport@
-  </PropertyGroup>
-  <PropertyGroup>
-    @id_PreferredToolArchitecture@
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@id_platform@'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    @id_toolset@
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <!-- ============================================================ -->
-  <!-- ==                set preprocessor definitions            == -->
-  <!-- ============================================================ -->
-  <PropertyGroup>
-    <DefineConstants></DefineConstants>
-    <UnknownValue>Unknown</UnknownValue>
-  </PropertyGroup>
-  <!-- Platform -->
-  <PropertyGroup Condition="'$(Platform)'!=''">
-    <DefineConstants>$(DefineConstants);Platform$(Platform)</DefineConstants>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Platform)'==''">
-    <DefineConstants>$(DefineConstants);Platform$(UnknownValue)</DefineConstants>
-  </PropertyGroup>
-  <!-- PlatformToolset -->
-  <PropertyGroup Condition="'$(PlatformToolset)'!=''">
-    <DefineConstants>$(DefineConstants);PlatformToolset$(PlatformToolset)</DefineConstants>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(PlatformToolset)'==''">
-    <DefineConstants>$(DefineConstants);PlatformToolset$(UnknownValue)</DefineConstants>
-  </PropertyGroup>
-  <!-- ============================================================ -->
-  <PropertyGroup>
-    <OutputPath Condition="'$(Configuration)|$(Platform)'=='Debug|@id_platform@'">.\</OutputPath>
-  </PropertyGroup>
-  <ItemGroup>
-    <Compile Include="@id_src@" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <PropertyGroup>
-    <PostBuildEvent>if not "$(RoslynTargetsPath)"=="" if exist "$(RoslynTargetsPath)\@id_cl@" set _CSC=$(RoslynTargetsPath)
-if exist "$(MSBuildToolsPath)\@id_cl@" set _CSC=$(MSBuildToolsPath)
-if "%_CSC%"=="" exit -1
-%40echo CMAKE_@id_lang@_COMPILER=%_CSC%\@id_cl@</PostBuildEvent>
-  </PropertyGroup>
-</Project>
diff --git a/share/cmake-3.18/Modules/CompilerId/VS-10.vcxproj.in b/share/cmake-3.18/Modules/CompilerId/VS-10.vcxproj.in
deleted file mode 100644
index b48a332..0000000
--- a/share/cmake-3.18/Modules/CompilerId/VS-10.vcxproj.in
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|@id_platform@">
-      <Configuration>Debug</Configuration>
-      <Platform>@id_platform@</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{CAE07175-D007-4FC3-BFE8-47B392814159}</ProjectGuid>
-    <RootNamespace>CompilerId@id_lang@</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-    @id_system@
-    @id_system_version@
-    @id_WindowsTargetPlatformVersion@
-    @id_WindowsSDKDesktopARMSupport@
-    @id_CudaToolkitCustomDir@
-    @id_ToolsetVCTargetsDir@
-    @id_CustomGlobals@
-  </PropertyGroup>
-  @id_toolset_version_props@
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup>
-    @id_PreferredToolArchitecture@
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@id_platform@'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    @id_toolset@
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    @id_Import_props@
-  </ImportGroup>
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|@id_platform@'">.\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|@id_platform@'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|@id_platform@'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@id_platform@'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>false</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>TurnOffAllWarnings</WarningLevel>
-      <DebugInformationFormat>
-      </DebugInformationFormat>
-    </ClCompile>
-    @id_ItemDefinitionGroup_entry@
-    <Link>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      @id_Link_AdditionalDependencies@
-    </Link>
-    <PostBuildEvent>
-      <Command>@id_PostBuildEvent_Command@</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <@id_compile@ Include="@id_src@" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    @id_Import_targets@
-  </ImportGroup>
-</Project>
diff --git a/share/cmake-3.18/Modules/CompilerId/Xcode-3.pbxproj.in b/share/cmake-3.18/Modules/CompilerId/Xcode-3.pbxproj.in
deleted file mode 100644
index 6fe17e5..0000000
--- a/share/cmake-3.18/Modules/CompilerId/Xcode-3.pbxproj.in
+++ /dev/null
@@ -1,114 +0,0 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 45;
-	objects = {
-
-		2C18F0B615DC1E0300593670 = {isa = PBXBuildFile; fileRef = 2C18F0B415DC1DC700593670; };
-		2C18F0B415DC1DC700593670 = {isa = PBXFileReference; fileEncoding = 4; explicitFileType = @id_type@; path = @id_src@; sourceTree = "<group>"; };
-		08FB7794FE84155DC02AAC07 = {
-			isa = PBXGroup;
-			children = (
-				2C18F0B415DC1DC700593670,
-			);
-			name = CompilerId@id_lang@;
-			sourceTree = "<group>";
-		};
-		8DD76FA90486AB0100D96B5E = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 1DEB928508733DD80010E9CD;
-			buildPhases = (
-				2C18F0B515DC1DCE00593670,
-				2C8FEB8E15DC1A1A00E56A5D,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = CompilerId@id_lang@;
-			productName = CompilerId@id_lang@;
-			productType = "@id_product_type@";
-		};
-		08FB7793FE84155DC02AAC07 = {
-			isa = PBXProject;
-			buildConfigurationList = 1DEB928908733DD80010E9CD;
-			compatibilityVersion = "Xcode 3.1";
-			developmentRegion = English;
-			hasScannedForEncodings = 1;
-			knownRegions = (
-				en,
-			);
-			mainGroup = 08FB7794FE84155DC02AAC07;
-			projectDirPath = "";
-			projectRoot = "";
-			targets = (
-				8DD76FA90486AB0100D96B5E,
-			);
-		};
-		2C8FEB8E15DC1A1A00E56A5D = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-			);
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "echo \"GCC_VERSION=$GCC_VERSION\" ; echo \"ARCHS=$ARCHS\"";
-			showEnvVarsInLog = 0;
-		};
-		2C18F0B515DC1DCE00593670 = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				2C18F0B615DC1E0300593670,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		1DEB928608733DD80010E9CD = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				CODE_SIGN_IDENTITY = "";
-				PRODUCT_NAME = CompilerId@id_lang@;
-			};
-			name = Debug;
-		};
-		1DEB928A08733DD80010E9CD = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ONLY_ACTIVE_ARCH = YES;
-				CODE_SIGNING_REQUIRED = NO;
-				CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)";
-				SYMROOT = .;
-				@id_archs@
-				@id_toolset@
-				@id_lang_version@
-				@id_clang_cxx_library@
-				@id_deployment_target@
-				@id_sdkroot@
-			};
-			name = Debug;
-		};
-		1DEB928508733DD80010E9CD = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				1DEB928608733DD80010E9CD,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Debug;
-		};
-		1DEB928908733DD80010E9CD = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				1DEB928A08733DD80010E9CD,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Debug;
-		};
-	};
-	rootObject = 08FB7793FE84155DC02AAC07;
-}
diff --git a/share/cmake-3.18/Modules/DartConfiguration.tcl.in b/share/cmake-3.18/Modules/DartConfiguration.tcl.in
deleted file mode 100644
index 086ba07..0000000
--- a/share/cmake-3.18/Modules/DartConfiguration.tcl.in
+++ /dev/null
@@ -1,107 +0,0 @@
-# This file is configured by CMake automatically as DartConfiguration.tcl
-# If you choose not to use CMake, this file may be hand configured, by
-# filling in the required variables.
-
-
-# Configuration directories and files
-SourceDirectory: @PROJECT_SOURCE_DIR@
-BuildDirectory: @PROJECT_BINARY_DIR@
-
-# Where to place the cost data store
-CostDataFile: @CTEST_COST_DATA_FILE@
-
-# Site is something like machine.domain, i.e. pragmatic.crd
-Site: @SITE@
-
-# Build name is osname-revision-compiler, i.e. Linux-2.4.2-2smp-c++
-BuildName: @BUILDNAME@
-
-# Subprojects
-LabelsForSubprojects: @CTEST_LABELS_FOR_SUBPROJECTS@
-
-# Submission information
-SubmitURL: @SUBMIT_URL@
-
-# Dashboard start time
-NightlyStartTime: @NIGHTLY_START_TIME@
-
-# Commands for the build/test/submit cycle
-ConfigureCommand: "@CMAKE_COMMAND@" "@PROJECT_SOURCE_DIR@"
-MakeCommand: @MAKECOMMAND@
-DefaultCTestConfigurationType: @DEFAULT_CTEST_CONFIGURATION_TYPE@
-
-# version control
-UpdateVersionOnly: @CTEST_UPDATE_VERSION_ONLY@
-
-# CVS options
-# Default is "-d -P -A"
-CVSCommand: @CVSCOMMAND@
-CVSUpdateOptions: @CVS_UPDATE_OPTIONS@
-
-# Subversion options
-SVNCommand: @SVNCOMMAND@
-SVNOptions: @CTEST_SVN_OPTIONS@
-SVNUpdateOptions: @SVN_UPDATE_OPTIONS@
-
-# Git options
-GITCommand: @GITCOMMAND@
-GITInitSubmodules: @CTEST_GIT_INIT_SUBMODULES@
-GITUpdateOptions: @GIT_UPDATE_OPTIONS@
-GITUpdateCustom: @CTEST_GIT_UPDATE_CUSTOM@
-
-# Perforce options
-P4Command: @P4COMMAND@
-P4Client: @CTEST_P4_CLIENT@
-P4Options: @CTEST_P4_OPTIONS@
-P4UpdateOptions: @CTEST_P4_UPDATE_OPTIONS@
-P4UpdateCustom: @CTEST_P4_UPDATE_CUSTOM@
-
-# Generic update command
-UpdateCommand: @UPDATE_COMMAND@
-UpdateOptions: @UPDATE_OPTIONS@
-UpdateType: @UPDATE_TYPE@
-
-# Compiler info
-Compiler: @CMAKE_CXX_COMPILER@
-CompilerVersion: @CMAKE_CXX_COMPILER_VERSION@
-
-# Dynamic analysis (MemCheck)
-PurifyCommand: @PURIFYCOMMAND@
-ValgrindCommand: @VALGRIND_COMMAND@
-ValgrindCommandOptions: @VALGRIND_COMMAND_OPTIONS@
-DrMemoryCommand: @DRMEMORY_COMMAND@
-DrMemoryCommandOptions: @DRMEMORY_COMMAND_OPTIONS@
-MemoryCheckType: @MEMORYCHECK_TYPE@
-MemoryCheckSanitizerOptions: @MEMORYCHECK_SANITIZER_OPTIONS@
-MemoryCheckCommand: @MEMORYCHECK_COMMAND@
-MemoryCheckCommandOptions: @MEMORYCHECK_COMMAND_OPTIONS@
-MemoryCheckSuppressionFile: @MEMORYCHECK_SUPPRESSIONS_FILE@
-
-# Coverage
-CoverageCommand: @COVERAGE_COMMAND@
-CoverageExtraFlags: @COVERAGE_EXTRA_FLAGS@
-
-# Cluster commands
-SlurmBatchCommand: @SLURM_SBATCH_COMMAND@
-SlurmRunCommand: @SLURM_SRUN_COMMAND@
-
-# Testing options
-# TimeOut is the amount of time in seconds to wait for processes
-# to complete during testing.  After TimeOut seconds, the
-# process will be summarily terminated.
-# Currently set to 25 minutes
-TimeOut: @DART_TESTING_TIMEOUT@
-
-# During parallel testing CTest will not start a new test if doing
-# so would cause the system load to exceed this value.
-TestLoad: @CTEST_TEST_LOAD@
-
-UseLaunchers: @CTEST_USE_LAUNCHERS@
-CurlOptions: @CTEST_CURL_OPTIONS@
-# warning, if you add new options here that have to do with submit,
-# you have to update cmCTestSubmitCommand.cxx
-
-# For CTest submissions that timeout, these options
-# specify behavior for retrying the submission
-CTestSubmitRetryDelay: @CTEST_SUBMIT_RETRY_DELAY@
-CTestSubmitRetryCount: @CTEST_SUBMIT_RETRY_COUNT@
diff --git a/share/cmake-3.18/Modules/Documentation.cmake b/share/cmake-3.18/Modules/Documentation.cmake
deleted file mode 100644
index c297231..0000000
--- a/share/cmake-3.18/Modules/Documentation.cmake
+++ /dev/null
@@ -1,74 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-Documentation
--------------
-
-This module provides support for the VTK documentation framework.  It
-relies on several tools (Doxygen, Perl, etc).
-#]=======================================================================]
-
-cmake_policy(GET CMP0106 _Documentation_policy)
-
-if (_Documentation_policy STREQUAL "NEW")
-  message(FATAL_ERROR
-    "Documentation.cmake is VTK-specific code and should not be used in "
-    "non-VTK projects. This logic in this module is best shipped with the "
-    "project using it rather than with CMake. This is now an error according "
-    "to policy CMP0106.")
-else ()
-
-if (_Documentation_policy STREQUAL "")
-  # Ignore the warning if the project is detected as VTK itself.
-  if (NOT CMAKE_PROJECT_NAME STREQUAL "VTK" AND
-      NOT PROJECT_NAME STREQUAL "VTK")
-    cmake_policy(GET_WARNING CMP0106 _Documentation_policy_warning)
-    message(AUTHOR_WARNING
-      "${_Documentation_policy_warning}\n"
-      "Documentation.cmake is VTK-specific code and should not be used in "
-      "non-VTK projects. This logic in this module is best shipped with the "
-      "project using it rather than with CMake.")
-  endif ()
-  unset(_Documentation_policy_warning)
-endif ()
-
-#
-# Build the documentation ?
-#
-option(BUILD_DOCUMENTATION "Build the documentation (Doxygen)." OFF)
-mark_as_advanced(BUILD_DOCUMENTATION)
-
-if (BUILD_DOCUMENTATION)
-
-  #
-  # Check for the tools
-  #
-  find_package(UnixCommands)
-  find_package(Doxygen)
-  find_package(Gnuplot)
-  find_package(HTMLHelp)
-  find_package(Perl)
-  find_package(Wget)
-
-  option(DOCUMENTATION_HTML_HELP
-    "Build the HTML Help file (CHM)." OFF)
-
-  option(DOCUMENTATION_HTML_TARZ
-    "Build a compressed tar archive of the HTML doc." OFF)
-
-  mark_as_advanced(
-    DOCUMENTATION_HTML_HELP
-    DOCUMENTATION_HTML_TARZ
-    )
-
-  #
-  # The documentation process is controlled by a batch file.
-  # We will probably need bash to create the custom target
-  #
-
-endif ()
-
-endif ()
-
-unset(_Documentation_policy)
diff --git a/share/cmake-3.18/Modules/ExternalData.cmake b/share/cmake-3.18/Modules/ExternalData.cmake
deleted file mode 100644
index e5dbcd9..0000000
--- a/share/cmake-3.18/Modules/ExternalData.cmake
+++ /dev/null
@@ -1,1152 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-ExternalData
-------------
-
-.. only:: html
-
-   .. contents::
-
-Manage data files stored outside source tree
-
-Introduction
-^^^^^^^^^^^^
-
-Use this module to unambiguously reference data files stored outside
-the source tree and fetch them at build time from arbitrary local and
-remote content-addressed locations.  Functions provided by this module
-recognize arguments with the syntax ``DATA{<name>}`` as references to
-external data, replace them with full paths to local copies of those
-data, and create build rules to fetch and update the local copies.
-
-For example:
-
-.. code-block:: cmake
-
- include(ExternalData)
- set(ExternalData_URL_TEMPLATES "file:///local/%(algo)/%(hash)"
-                                "file:////host/share/%(algo)/%(hash)"
-                                "http://data.org/%(algo)/%(hash)")
- ExternalData_Add_Test(MyData
-   NAME MyTest
-   COMMAND MyExe DATA{MyInput.png}
-   )
- ExternalData_Add_Target(MyData)
-
-When test ``MyTest`` runs the ``DATA{MyInput.png}`` argument will be
-replaced by the full path to a real instance of the data file
-``MyInput.png`` on disk.  If the source tree contains a content link
-such as ``MyInput.png.md5`` then the ``MyData`` target creates a real
-``MyInput.png`` in the build tree.
-
-Module Functions
-^^^^^^^^^^^^^^^^
-
-.. command:: ExternalData_Expand_Arguments
-
-  The ``ExternalData_Expand_Arguments`` function evaluates ``DATA{}``
-  references in its arguments and constructs a new list of arguments::
-
-    ExternalData_Expand_Arguments(
-      <target>   # Name of data management target
-      <outVar>   # Output variable
-      [args...]  # Input arguments, DATA{} allowed
-      )
-
-  It replaces each ``DATA{}`` reference in an argument with the full path of
-  a real data file on disk that will exist after the ``<target>`` builds.
-
-.. command:: ExternalData_Add_Test
-
-  The ``ExternalData_Add_Test`` function wraps around the CMake
-  :command:`add_test` command but supports ``DATA{}`` references in
-  its arguments::
-
-    ExternalData_Add_Test(
-      <target>   # Name of data management target
-      ...        # Arguments of add_test(), DATA{} allowed
-      )
-
-  It passes its arguments through ``ExternalData_Expand_Arguments`` and then
-  invokes the :command:`add_test` command using the results.
-
-.. command:: ExternalData_Add_Target
-
-  The ``ExternalData_Add_Target`` function creates a custom target to
-  manage local instances of data files stored externally::
-
-    ExternalData_Add_Target(
-      <target>   # Name of data management target
-      )
-
-  It creates custom commands in the target as necessary to make data
-  files available for each ``DATA{}`` reference previously evaluated by
-  other functions provided by this module.
-  Data files may be fetched from one of the URL templates specified in
-  the ``ExternalData_URL_TEMPLATES`` variable, or may be found locally
-  in one of the paths specified in the ``ExternalData_OBJECT_STORES``
-  variable.
-
-  Typically only one target is needed to manage all external data within
-  a project.  Call this function once at the end of configuration after
-  all data references have been processed.
-
-Module Variables
-^^^^^^^^^^^^^^^^
-
-The following variables configure behavior.  They should be set before
-calling any of the functions provided by this module.
-
-.. variable:: ExternalData_BINARY_ROOT
-
-  The ``ExternalData_BINARY_ROOT`` variable may be set to the directory to
-  hold the real data files named by expanded ``DATA{}`` references.  The
-  default is ``CMAKE_BINARY_DIR``.  The directory layout will mirror that of
-  content links under ``ExternalData_SOURCE_ROOT``.
-
-.. variable:: ExternalData_CUSTOM_SCRIPT_<key>
-
-  Specify a full path to a ``.cmake`` custom fetch script identified by
-  ``<key>`` in entries of the ``ExternalData_URL_TEMPLATES`` list.
-  See `Custom Fetch Scripts`_.
-
-.. variable:: ExternalData_LINK_CONTENT
-
-  The ``ExternalData_LINK_CONTENT`` variable may be set to the name of a
-  supported hash algorithm to enable automatic conversion of real data
-  files referenced by the ``DATA{}`` syntax into content links.  For each
-  such ``<file>`` a content link named ``<file><ext>`` is created.  The
-  original file is renamed to the form ``.ExternalData_<algo>_<hash>`` to
-  stage it for future transmission to one of the locations in the list
-  of URL templates (by means outside the scope of this module).  The
-  data fetch rule created for the content link will use the staged
-  object if it cannot be found using any URL template.
-
-.. variable:: ExternalData_NO_SYMLINKS
-
-  The real data files named by expanded ``DATA{}`` references may be made
-  available under ``ExternalData_BINARY_ROOT`` using symbolic links on
-  some platforms.  The ``ExternalData_NO_SYMLINKS`` variable may be set
-  to disable use of symbolic links and enable use of copies instead.
-
-.. variable:: ExternalData_OBJECT_STORES
-
-  The ``ExternalData_OBJECT_STORES`` variable may be set to a list of local
-  directories that store objects using the layout ``<dir>/%(algo)/%(hash)``.
-  These directories will be searched first for a needed object.  If the
-  object is not available in any store then it will be fetched remotely
-  using the URL templates and added to the first local store listed.  If
-  no stores are specified the default is a location inside the build
-  tree.
-
-.. variable:: ExternalData_SERIES_PARSE
-              ExternalData_SERIES_PARSE_PREFIX
-              ExternalData_SERIES_PARSE_NUMBER
-              ExternalData_SERIES_PARSE_SUFFIX
-              ExternalData_SERIES_MATCH
-
-  See `Referencing File Series`_.
-
-.. variable:: ExternalData_SOURCE_ROOT
-
-  The ``ExternalData_SOURCE_ROOT`` variable may be set to the highest source
-  directory containing any path named by a ``DATA{}`` reference.  The
-  default is ``CMAKE_SOURCE_DIR``.  ``ExternalData_SOURCE_ROOT`` and
-  ``CMAKE_SOURCE_DIR`` must refer to directories within a single source
-  distribution (e.g.  they come together in one tarball).
-
-.. variable:: ExternalData_TIMEOUT_ABSOLUTE
-
-  The ``ExternalData_TIMEOUT_ABSOLUTE`` variable sets the download
-  absolute timeout, in seconds, with a default of ``300`` seconds.
-  Set to ``0`` to disable enforcement.
-
-.. variable:: ExternalData_TIMEOUT_INACTIVITY
-
-  The ``ExternalData_TIMEOUT_INACTIVITY`` variable sets the download
-  inactivity timeout, in seconds, with a default of ``60`` seconds.
-  Set to ``0`` to disable enforcement.
-
-.. variable:: ExternalData_URL_ALGO_<algo>_<key>
-
-  Specify a custom URL component to be substituted for URL template
-  placeholders of the form ``%(algo:<key>)``, where ``<key>`` is a
-  valid C identifier, when fetching an object referenced via hash
-  algorithm ``<algo>``.  If not defined, the default URL component
-  is just ``<algo>`` for any ``<key>``.
-
-.. variable:: ExternalData_URL_TEMPLATES
-
-  The ``ExternalData_URL_TEMPLATES`` may be set to provide a list of
-  of URL templates using the placeholders ``%(algo)`` and ``%(hash)``
-  in each template.  Data fetch rules try each URL template in order
-  by substituting the hash algorithm name for ``%(algo)`` and the hash
-  value for ``%(hash)``.  Alternatively one may use ``%(algo:<key>)``
-  with ``ExternalData_URL_ALGO_<algo>_<key>`` variables to gain more
-  flexibility in remote URLs.
-
-Referencing Files
-^^^^^^^^^^^^^^^^^
-
-Referencing Single Files
-""""""""""""""""""""""""
-
-The ``DATA{}`` syntax is literal and the ``<name>`` is a full or relative path
-within the source tree.  The source tree must contain either a real
-data file at ``<name>`` or a "content link" at ``<name><ext>`` containing a
-hash of the real file using a hash algorithm corresponding to ``<ext>``.
-For example, the argument ``DATA{img.png}`` may be satisfied by either a
-real ``img.png`` file in the current source directory or a ``img.png.md5``
-file containing its MD5 sum.
-
-Multiple content links of the same name with different hash algorithms
-are supported (e.g. ``img.png.sha256`` and ``img.png.sha1``) so long as
-they all correspond to the same real file.  This allows objects to be
-fetched from sources indexed by different hash algorithms.
-
-Referencing File Series
-"""""""""""""""""""""""
-
-The ``DATA{}`` syntax can be told to fetch a file series using the form
-``DATA{<name>,:}``, where the ``:`` is literal.  If the source tree
-contains a group of files or content links named like a series then a
-reference to one member adds rules to fetch all of them.  Although all
-members of a series are fetched, only the file originally named by the
-``DATA{}`` argument is substituted for it.  The default configuration
-recognizes file series names ending with ``#.ext``, ``_#.ext``, ``.#.ext``,
-or ``-#.ext`` where ``#`` is a sequence of decimal digits and ``.ext`` is
-any single extension.  Configure it with a regex that parses ``<number>``
-and ``<suffix>`` parts from the end of ``<name>``::
-
- ExternalData_SERIES_PARSE = regex of the form (<number>)(<suffix>)$
-
-For more complicated cases set::
-
- ExternalData_SERIES_PARSE = regex with at least two () groups
- ExternalData_SERIES_PARSE_PREFIX = <prefix> regex group number, if any
- ExternalData_SERIES_PARSE_NUMBER = <number> regex group number
- ExternalData_SERIES_PARSE_SUFFIX = <suffix> regex group number
-
-Configure series number matching with a regex that matches the
-``<number>`` part of series members named ``<prefix><number><suffix>``::
-
- ExternalData_SERIES_MATCH = regex matching <number> in all series members
-
-Note that the ``<suffix>`` of a series does not include a hash-algorithm
-extension.
-
-Referencing Associated Files
-""""""""""""""""""""""""""""
-
-The ``DATA{}`` syntax can alternatively match files associated with the
-named file and contained in the same directory.  Associated files may
-be specified by options using the syntax
-``DATA{<name>,<opt1>,<opt2>,...}``.  Each option may specify one file by
-name or specify a regular expression to match file names using the
-syntax ``REGEX:<regex>``.  For example, the arguments::
-
- DATA{MyData/MyInput.mhd,MyInput.img}                   # File pair
- DATA{MyData/MyFrames00.png,REGEX:MyFrames[0-9]+\\.png} # Series
-
-will pass ``MyInput.mha`` and ``MyFrames00.png`` on the command line but
-ensure that the associated files are present next to them.
-
-Referencing Directories
-"""""""""""""""""""""""
-
-The ``DATA{}`` syntax may reference a directory using a trailing slash and
-a list of associated files.  The form ``DATA{<name>/,<opt1>,<opt2>,...}``
-adds rules to fetch any files in the directory that match one of the
-associated file options.  For example, the argument
-``DATA{MyDataDir/,REGEX:.*}`` will pass the full path to a ``MyDataDir``
-directory on the command line and ensure that the directory contains
-files corresponding to every file or content link in the ``MyDataDir``
-source directory.  In order to match associated files in subdirectories,
-specify a ``RECURSE:`` option, e.g. ``DATA{MyDataDir/,RECURSE:,REGEX:.*}``.
-
-Hash Algorithms
-^^^^^^^^^^^^^^^
-
-The following hash algorithms are supported::
-
- %(algo)     <ext>     Description
- -------     -----     -----------
- MD5         .md5      Message-Digest Algorithm 5, RFC 1321
- SHA1        .sha1     US Secure Hash Algorithm 1, RFC 3174
- SHA224      .sha224   US Secure Hash Algorithms, RFC 4634
- SHA256      .sha256   US Secure Hash Algorithms, RFC 4634
- SHA384      .sha384   US Secure Hash Algorithms, RFC 4634
- SHA512      .sha512   US Secure Hash Algorithms, RFC 4634
- SHA3_224    .sha3-224 Keccak SHA-3
- SHA3_256    .sha3-256 Keccak SHA-3
- SHA3_384    .sha3-384 Keccak SHA-3
- SHA3_512    .sha3-512 Keccak SHA-3
-
-Note that the hashes are used only for unique data identification and
-download verification.
-
-.. _`ExternalData Custom Fetch Scripts`:
-
-Custom Fetch Scripts
-^^^^^^^^^^^^^^^^^^^^
-
-When a data file must be fetched from one of the URL templates
-specified in the ``ExternalData_URL_TEMPLATES`` variable, it is
-normally downloaded using the :command:`file(DOWNLOAD)` command.
-One may specify usage of a custom fetch script by using a URL
-template of the form ``ExternalDataCustomScript://<key>/<loc>``.
-The ``<key>`` must be a C identifier, and the ``<loc>`` must
-contain the ``%(algo)`` and ``%(hash)`` placeholders.
-A variable corresponding to the key, ``ExternalData_CUSTOM_SCRIPT_<key>``,
-must be set to the full path to a ``.cmake`` script file.  The script
-will be included to perform the actual fetch, and provided with
-the following variables:
-
-.. variable:: ExternalData_CUSTOM_LOCATION
-
-  When a custom fetch script is loaded, this variable is set to the
-  location part of the URL, which will contain the substituted hash
-  algorithm name and content hash value.
-
-.. variable:: ExternalData_CUSTOM_FILE
-
-  When a custom fetch script is loaded, this variable is set to the
-  full path to a file in which the script must store the fetched
-  content.  The name of the file is unspecified and should not be
-  interpreted in any way.
-
-The custom fetch script is expected to store fetched content in the
-file or set a variable:
-
-.. variable:: ExternalData_CUSTOM_ERROR
-
-  When a custom fetch script fails to fetch the requested content,
-  it must set this variable to a short one-line message describing
-  the reason for failure.
-
-#]=======================================================================]
-
-function(ExternalData_add_test target)
-  # Expand all arguments as a single string to preserve escaped semicolons.
-  ExternalData_expand_arguments("${target}" testArgs "${ARGN}")
-  add_test(${testArgs})
-endfunction()
-
-function(ExternalData_add_target target)
-  if(NOT ExternalData_URL_TEMPLATES AND NOT ExternalData_OBJECT_STORES)
-    message(FATAL_ERROR
-      "Neither ExternalData_URL_TEMPLATES nor ExternalData_OBJECT_STORES is set!")
-  endif()
-  if(NOT ExternalData_OBJECT_STORES)
-    set(ExternalData_OBJECT_STORES ${CMAKE_BINARY_DIR}/ExternalData/Objects)
-  endif()
-  set(_ExternalData_CONFIG_CODE "")
-
-  # Store custom script configuration.
-  foreach(url_template IN LISTS ExternalData_URL_TEMPLATES)
-    if("${url_template}" MATCHES "^ExternalDataCustomScript://([^/]*)/(.*)$")
-      set(key "${CMAKE_MATCH_1}")
-      if(key MATCHES "^[A-Za-z_][A-Za-z0-9_]*$")
-        if(ExternalData_CUSTOM_SCRIPT_${key})
-          if(IS_ABSOLUTE "${ExternalData_CUSTOM_SCRIPT_${key}}")
-            string(CONCAT _ExternalData_CONFIG_CODE "${_ExternalData_CONFIG_CODE}\n"
-              "set(ExternalData_CUSTOM_SCRIPT_${key} \"${ExternalData_CUSTOM_SCRIPT_${key}}\")")
-          else()
-            message(FATAL_ERROR
-              "No ExternalData_CUSTOM_SCRIPT_${key} is not set to a full path:\n"
-              " ${ExternalData_CUSTOM_SCRIPT_${key}}")
-          endif()
-        else()
-          message(FATAL_ERROR
-            "No ExternalData_CUSTOM_SCRIPT_${key} is set for URL template:\n"
-            " ${url_template}")
-        endif()
-      else()
-        message(FATAL_ERROR
-          "Bad ExternalDataCustomScript key '${key}' in URL template:\n"
-          " ${url_template}\n"
-          "The key must be a valid C identifier.")
-      endif()
-    endif()
-
-    # Store custom algorithm name to URL component maps.
-    if("${url_template}" MATCHES "%\\(algo:([^)]*)\\)")
-      set(key "${CMAKE_MATCH_1}")
-      if(key MATCHES "^[A-Za-z_][A-Za-z0-9_]*$")
-        string(REPLACE "|" ";" _algos "${_ExternalData_REGEX_ALGO}")
-        foreach(algo ${_algos})
-          if(DEFINED ExternalData_URL_ALGO_${algo}_${key})
-            string(CONCAT _ExternalData_CONFIG_CODE "${_ExternalData_CONFIG_CODE}\n"
-              "set(ExternalData_URL_ALGO_${algo}_${key} \"${ExternalData_URL_ALGO_${algo}_${key}}\")")
-          endif()
-        endforeach()
-      else()
-        message(FATAL_ERROR
-          "Bad %(algo:${key}) in URL template:\n"
-          " ${url_template}\n"
-          "The transform name must be a valid C identifier.")
-      endif()
-    endif()
-  endforeach()
-
-  # Store configuration for use by build-time script.
-  set(config ${CMAKE_CURRENT_BINARY_DIR}/${target}_config.cmake)
-  configure_file(${_ExternalData_SELF_DIR}/ExternalData_config.cmake.in ${config} @ONLY)
-
-  set(files "")
-
-  # Set a "_ExternalData_FILE_${file}" variable for each output file to avoid
-  # duplicate entries within this target.  Set a directory property of the same
-  # name to avoid repeating custom commands with the same output in this directory.
-  # Repeating custom commands with the same output across directories or across
-  # targets in the same directory may be a race, but this is likely okay because
-  # we use atomic replacement of output files.
-  #
-  # Use local data first to prefer real files over content links.
-
-  # Custom commands to copy or link local data.
-  get_property(data_local GLOBAL PROPERTY _ExternalData_${target}_LOCAL)
-  foreach(entry IN LISTS data_local)
-    string(REPLACE "|" ";" tuple "${entry}")
-    list(GET tuple 0 file)
-    list(GET tuple 1 name)
-    if(NOT DEFINED "_ExternalData_FILE_${file}")
-      set("_ExternalData_FILE_${file}" 1)
-      get_property(added DIRECTORY PROPERTY "_ExternalData_FILE_${file}")
-      if(NOT added)
-        set_property(DIRECTORY PROPERTY "_ExternalData_FILE_${file}" 1)
-        add_custom_command(
-          COMMENT "Generating ${file}"
-          OUTPUT "${file}"
-          COMMAND ${CMAKE_COMMAND} -Drelative_top=${CMAKE_BINARY_DIR}
-                                   -Dfile=${file} -Dname=${name}
-                                   -DExternalData_ACTION=local
-                                   -DExternalData_CONFIG=${config}
-                                   -P ${_ExternalData_SELF}
-          MAIN_DEPENDENCY "${name}"
-          )
-      endif()
-      list(APPEND files "${file}")
-    endif()
-  endforeach()
-
-  # Custom commands to fetch remote data.
-  get_property(data_fetch GLOBAL PROPERTY _ExternalData_${target}_FETCH)
-  foreach(entry IN LISTS data_fetch)
-    string(REPLACE "|" ";" tuple "${entry}")
-    list(GET tuple 0 file)
-    list(GET tuple 1 name)
-    list(GET tuple 2 exts)
-    string(REPLACE "+" ";" exts_list "${exts}")
-    list(GET exts_list 0 first_ext)
-    set(stamp "-hash-stamp")
-    if(NOT DEFINED "_ExternalData_FILE_${file}")
-      set("_ExternalData_FILE_${file}" 1)
-      get_property(added DIRECTORY PROPERTY "_ExternalData_FILE_${file}")
-      if(NOT added)
-        set_property(DIRECTORY PROPERTY "_ExternalData_FILE_${file}" 1)
-        add_custom_command(
-          # Users care about the data file, so hide the hash/timestamp file.
-          COMMENT "Generating ${file}"
-          # The hash/timestamp file is the output from the build perspective.
-          # List the real file as a second output in case it is a broken link.
-          # The files must be listed in this order so CMake can hide from the
-          # make tool that a symlink target may not be newer than the input.
-          OUTPUT "${file}${stamp}" "${file}"
-          # Run the data fetch/update script.
-          COMMAND ${CMAKE_COMMAND} -Drelative_top=${CMAKE_BINARY_DIR}
-                                   -Dfile=${file} -Dname=${name} -Dexts=${exts}
-                                   -DExternalData_ACTION=fetch
-                                   -DExternalData_CONFIG=${config}
-                                   -P ${_ExternalData_SELF}
-          # Update whenever the object hash changes.
-          MAIN_DEPENDENCY "${name}${first_ext}"
-          )
-      endif()
-      list(APPEND files "${file}${stamp}")
-    endif()
-  endforeach()
-
-  # Custom target to drive all update commands.
-  add_custom_target(${target} ALL DEPENDS ${files})
-endfunction()
-
-function(ExternalData_expand_arguments target outArgsVar)
-  # Replace DATA{} references with real arguments.
-  set(data_regex "DATA{([^;{}\r\n]*)}")
-  set(other_regex "([^D]|D[^A]|DA[^T]|DAT[^A]|DATA[^{])+|.")
-  set(outArgs "")
-  # This list expansion un-escapes semicolons in list element values so we
-  # must re-escape them below anywhere a new list expansion will occur.
-  foreach(arg IN LISTS ARGN)
-    if("x${arg}" MATCHES "${data_regex}")
-      # Re-escape in-value semicolons before expansion in foreach below.
-      string(REPLACE ";" "\\;" tmp "${arg}")
-      # Split argument into DATA{}-pieces and other pieces.
-      string(REGEX MATCHALL "${data_regex}|${other_regex}" pieces "${tmp}")
-      # Compose output argument with DATA{}-pieces replaced.
-      set(outArg "")
-      foreach(piece IN LISTS pieces)
-        if("x${piece}" MATCHES "^x${data_regex}$")
-          # Replace this DATA{}-piece with a file path.
-          _ExternalData_arg("${target}" "${piece}" "${CMAKE_MATCH_1}" file)
-          string(APPEND outArg "${file}")
-        else()
-          # No replacement needed for this piece.
-          string(APPEND outArg "${piece}")
-        endif()
-      endforeach()
-    else()
-      # No replacements needed in this argument.
-      set(outArg "${arg}")
-    endif()
-    # Re-escape in-value semicolons in resulting list.
-    string(REPLACE ";" "\\;" outArg "${outArg}")
-    list(APPEND outArgs "${outArg}")
-  endforeach()
-  set("${outArgsVar}" "${outArgs}" PARENT_SCOPE)
-endfunction()
-
-#-----------------------------------------------------------------------------
-# Private helper interface
-
-set(_ExternalData_REGEX_ALGO "MD5|SHA1|SHA224|SHA256|SHA384|SHA512|SHA3_224|SHA3_256|SHA3_384|SHA3_512")
-set(_ExternalData_REGEX_EXT "md5|sha1|sha224|sha256|sha384|sha512|sha3-224|sha3-256|sha3-384|sha3-512")
-set(_ExternalData_SELF "${CMAKE_CURRENT_LIST_FILE}")
-get_filename_component(_ExternalData_SELF_DIR "${_ExternalData_SELF}" PATH)
-
-function(_ExternalData_compute_hash var_hash algo file)
-  if("${algo}" MATCHES "^${_ExternalData_REGEX_ALGO}$")
-    file("${algo}" "${file}" hash)
-    set("${var_hash}" "${hash}" PARENT_SCOPE)
-  else()
-    message(FATAL_ERROR "Hash algorithm ${algo} unimplemented.")
-  endif()
-endfunction()
-
-function(_ExternalData_random var)
-  string(RANDOM LENGTH 6 random)
-  set("${var}" "${random}" PARENT_SCOPE)
-endfunction()
-
-function(_ExternalData_exact_regex regex_var string)
-  string(REGEX REPLACE "([][+.*()^])" "\\\\\\1" regex "${string}")
-  set("${regex_var}" "${regex}" PARENT_SCOPE)
-endfunction()
-
-function(_ExternalData_atomic_write file content)
-  _ExternalData_random(random)
-  set(tmp "${file}.tmp${random}")
-  file(WRITE "${tmp}" "${content}")
-  file(RENAME "${tmp}" "${file}")
-endfunction()
-
-function(_ExternalData_link_content name var_ext)
-  if("${ExternalData_LINK_CONTENT}" MATCHES "^(${_ExternalData_REGEX_ALGO})$")
-    set(algo "${ExternalData_LINK_CONTENT}")
-  else()
-    message(FATAL_ERROR
-      "Unknown hash algorithm specified by ExternalData_LINK_CONTENT:\n"
-      "  ${ExternalData_LINK_CONTENT}")
-  endif()
-  _ExternalData_compute_hash(hash "${algo}" "${name}")
-  get_filename_component(dir "${name}" PATH)
-  set(staged "${dir}/.ExternalData_${algo}_${hash}")
-  string(TOLOWER ".${algo}" ext)
-  _ExternalData_atomic_write("${name}${ext}" "${hash}\n")
-  file(RENAME "${name}" "${staged}")
-  set("${var_ext}" "${ext}" PARENT_SCOPE)
-
-  file(RELATIVE_PATH relname "${ExternalData_SOURCE_ROOT}" "${name}${ext}")
-  message(STATUS "Linked ${relname} to ExternalData ${algo}/${hash}")
-endfunction()
-
-function(_ExternalData_arg target arg options var_file)
-  # Separate data path from the options.
-  string(REPLACE "," ";" options "${options}")
-  list(GET options 0 data)
-  list(REMOVE_AT options 0)
-
-  # Interpret trailing slashes as directories.
-  set(data_is_directory 0)
-  if("x${data}" MATCHES "^x(.*)([/\\])$")
-    set(data_is_directory 1)
-    set(data "${CMAKE_MATCH_1}")
-  endif()
-
-  # Convert to full path.
-  if(IS_ABSOLUTE "${data}")
-    set(absdata "${data}")
-  else()
-    set(absdata "${CMAKE_CURRENT_SOURCE_DIR}/${data}")
-  endif()
-  get_filename_component(absdata "${absdata}" ABSOLUTE)
-
-  # Convert to relative path under the source tree.
-  if(NOT ExternalData_SOURCE_ROOT)
-    set(ExternalData_SOURCE_ROOT "${CMAKE_SOURCE_DIR}")
-  endif()
-  set(top_src "${ExternalData_SOURCE_ROOT}")
-  file(RELATIVE_PATH reldata "${top_src}" "${absdata}")
-  if(IS_ABSOLUTE "${reldata}" OR "${reldata}" MATCHES "^\\.\\./")
-    message(FATAL_ERROR "Data file referenced by argument\n"
-      "  ${arg}\n"
-      "does not lie under the top-level source directory\n"
-      "  ${top_src}\n")
-  endif()
-  if(data_is_directory AND NOT IS_DIRECTORY "${top_src}/${reldata}")
-    message(FATAL_ERROR "Data directory referenced by argument\n"
-      "  ${arg}\n"
-      "corresponds to source tree path\n"
-      "  ${reldata}\n"
-      "that does not exist as a directory!")
-  endif()
-  if(NOT ExternalData_BINARY_ROOT)
-    set(ExternalData_BINARY_ROOT "${CMAKE_BINARY_DIR}")
-  endif()
-  set(top_bin "${ExternalData_BINARY_ROOT}")
-
-  # Handle in-source builds gracefully.
-  if("${top_src}" STREQUAL "${top_bin}")
-    if(ExternalData_LINK_CONTENT)
-      message(WARNING "ExternalData_LINK_CONTENT cannot be used in-source")
-      set(ExternalData_LINK_CONTENT 0)
-    endif()
-    set(top_same 1)
-  endif()
-
-  set(external "") # Entries external to the source tree.
-  set(internal "") # Entries internal to the source tree.
-  set(have_original ${data_is_directory})
-  set(have_original_as_dir 0)
-
-  # Process options.
-  set(series_option "")
-  set(recurse_option "")
-  set(associated_files "")
-  set(associated_regex "")
-  foreach(opt ${options})
-    # Regular expression to match associated files.
-    if("x${opt}" MATCHES "^xREGEX:([^:/]+)$")
-      list(APPEND associated_regex "${CMAKE_MATCH_1}")
-    elseif(opt STREQUAL ":")
-      # Activate series matching.
-      set(series_option "${opt}")
-    elseif(opt STREQUAL "RECURSE:")
-      # Activate recursive matching in directories.
-      set(recurse_option "${opt}")
-    elseif("x${opt}" MATCHES "^[^][:/*?]+$")
-      # Specific associated file.
-      list(APPEND associated_files "${opt}")
-    else()
-      message(FATAL_ERROR "Unknown option \"${opt}\" in argument\n"
-        "  ${arg}\n")
-    endif()
-  endforeach()
-
-  if(series_option)
-    if(data_is_directory)
-      message(FATAL_ERROR "Series option \"${series_option}\" not allowed with directories.")
-    endif()
-    if(associated_files OR associated_regex)
-      message(FATAL_ERROR "Series option \"${series_option}\" not allowed with associated files.")
-    endif()
-    if(recurse_option)
-      message(FATAL_ERROR "Recurse option \"${recurse_option}\" allowed only with directories.")
-    endif()
-    # Load a whole file series.
-    _ExternalData_arg_series()
-  elseif(data_is_directory)
-    if(associated_files OR associated_regex)
-      # Load listed/matching associated files in the directory.
-      _ExternalData_arg_associated()
-    else()
-      message(FATAL_ERROR "Data directory referenced by argument\n"
-        "  ${arg}\n"
-        "must list associated files.")
-    endif()
-  else()
-    if(recurse_option)
-      message(FATAL_ERROR "Recurse option \"${recurse_option}\" allowed only with directories.")
-    endif()
-    # Load the named data file.
-    _ExternalData_arg_single()
-    if(associated_files OR associated_regex)
-      # Load listed/matching associated files.
-      _ExternalData_arg_associated()
-    endif()
-  endif()
-
-  if(NOT have_original)
-    if(have_original_as_dir)
-      set(msg_kind FATAL_ERROR)
-      set(msg "that is directory instead of a file!")
-    else()
-      set(msg_kind AUTHOR_WARNING)
-      set(msg "that does not exist as a file (with or without an extension)!")
-    endif()
-    message(${msg_kind} "Data file referenced by argument\n"
-      "  ${arg}\n"
-      "corresponds to source tree path\n"
-      "  ${reldata}\n"
-      "${msg}")
-  endif()
-
-  if(external)
-    # Make the series available in the build tree.
-    set_property(GLOBAL APPEND PROPERTY
-      _ExternalData_${target}_FETCH "${external}")
-    set_property(GLOBAL APPEND PROPERTY
-      _ExternalData_${target}_LOCAL "${internal}")
-    set("${var_file}" "${top_bin}/${reldata}" PARENT_SCOPE)
-  else()
-    # The whole series is in the source tree.
-    set("${var_file}" "${top_src}/${reldata}" PARENT_SCOPE)
-  endif()
-endfunction()
-
-macro(_ExternalData_arg_associated)
-  # Associated files lie in the same directory.
-  if(data_is_directory)
-    set(reldir "${reldata}")
-  else()
-    get_filename_component(reldir "${reldata}" PATH)
-  endif()
-  if(reldir)
-    string(APPEND reldir "/")
-  endif()
-  _ExternalData_exact_regex(reldir_regex "${reldir}")
-  if(recurse_option)
-    set(glob GLOB_RECURSE)
-    string(APPEND reldir_regex "(.+/)?")
-  else()
-    set(glob GLOB)
-  endif()
-
-  # Find files named explicitly.
-  foreach(file ${associated_files})
-    _ExternalData_exact_regex(file_regex "${file}")
-    _ExternalData_arg_find_files(${glob} "${reldir}${file}"
-      "${reldir_regex}${file_regex}")
-  endforeach()
-
-  # Find files matching the given regular expressions.
-  set(all "")
-  set(sep "")
-  foreach(regex ${associated_regex})
-    string(APPEND all "${sep}${reldir_regex}${regex}")
-    set(sep "|")
-  endforeach()
-  _ExternalData_arg_find_files(${glob} "${reldir}" "${all}")
-endmacro()
-
-macro(_ExternalData_arg_single)
-  # Match only the named data by itself.
-  _ExternalData_exact_regex(data_regex "${reldata}")
-  _ExternalData_arg_find_files(GLOB "${reldata}" "${data_regex}")
-endmacro()
-
-macro(_ExternalData_arg_series)
-  # Configure series parsing and matching.
-  set(series_parse_prefix "")
-  set(series_parse_number "\\1")
-  set(series_parse_suffix "\\2")
-  if(ExternalData_SERIES_PARSE)
-    if(ExternalData_SERIES_PARSE_NUMBER AND ExternalData_SERIES_PARSE_SUFFIX)
-      if(ExternalData_SERIES_PARSE_PREFIX)
-        set(series_parse_prefix "\\${ExternalData_SERIES_PARSE_PREFIX}")
-      endif()
-      set(series_parse_number "\\${ExternalData_SERIES_PARSE_NUMBER}")
-      set(series_parse_suffix "\\${ExternalData_SERIES_PARSE_SUFFIX}")
-    elseif(NOT "x${ExternalData_SERIES_PARSE}" MATCHES "^x\\([^()]*\\)\\([^()]*\\)\\$$")
-      message(FATAL_ERROR
-        "ExternalData_SERIES_PARSE is set to\n"
-        "  ${ExternalData_SERIES_PARSE}\n"
-        "which is not of the form\n"
-        "  (<number>)(<suffix>)$\n"
-        "Fix the regular expression or set variables\n"
-        "  ExternalData_SERIES_PARSE_PREFIX = <prefix> regex group number, if any\n"
-        "  ExternalData_SERIES_PARSE_NUMBER = <number> regex group number\n"
-        "  ExternalData_SERIES_PARSE_SUFFIX = <suffix> regex group number\n"
-        )
-    endif()
-    set(series_parse "${ExternalData_SERIES_PARSE}")
-  else()
-    set(series_parse "([0-9]*)(\\.[^./]*)$")
-  endif()
-  if(ExternalData_SERIES_MATCH)
-    set(series_match "${ExternalData_SERIES_MATCH}")
-  else()
-    set(series_match "[_.-]?[0-9]*")
-  endif()
-
-  # Parse the base, number, and extension components of the series.
-  string(REGEX REPLACE "${series_parse}" "${series_parse_prefix};${series_parse_number};${series_parse_suffix}" tuple "${reldata}")
-  list(LENGTH tuple len)
-  if(NOT "${len}" EQUAL 3)
-    message(FATAL_ERROR "Data file referenced by argument\n"
-      "  ${arg}\n"
-      "corresponds to path\n"
-      "  ${reldata}\n"
-      "that does not match regular expression\n"
-      "  ${series_parse}")
-  endif()
-  list(GET tuple 0 relbase)
-  list(GET tuple 2 ext)
-
-  # Glob files that might match the series.
-  # Then match base, number, and extension.
-  _ExternalData_exact_regex(series_base "${relbase}")
-  _ExternalData_exact_regex(series_ext "${ext}")
-  _ExternalData_arg_find_files(GLOB "${relbase}*${ext}"
-    "${series_base}${series_match}${series_ext}")
-endmacro()
-
-function(_ExternalData_arg_find_files glob pattern regex)
-  cmake_policy(PUSH)
-  cmake_policy(SET CMP0009 NEW)
-  file(${glob} globbed RELATIVE "${top_src}" "${top_src}/${pattern}*")
-  cmake_policy(POP)
-  set(externals_count -1)
-  foreach(entry IN LISTS globbed)
-    if("x${entry}" MATCHES "^x(.*)(\\.(${_ExternalData_REGEX_EXT}))$")
-      set(relname "${CMAKE_MATCH_1}")
-      set(alg "${CMAKE_MATCH_2}")
-    else()
-      set(relname "${entry}")
-      set(alg "")
-    endif()
-    if("x${relname}" MATCHES "^x${regex}$" # matches
-        AND NOT "x${relname}" MATCHES "(^x|/)\\.ExternalData_" # not staged obj
-        )
-      if(IS_DIRECTORY "${top_src}/${entry}")
-        if("${relname}" STREQUAL "${reldata}")
-          set(have_original_as_dir 1)
-        endif()
-      else()
-        set(name "${top_src}/${relname}")
-        set(file "${top_bin}/${relname}")
-        if(alg)
-          if(NOT "${external_${externals_count}_file_name}" STREQUAL "${file}|${name}")
-            math(EXPR externals_count "${externals_count} + 1")
-            set(external_${externals_count}_file_name "${file}|${name}")
-          endif()
-          list(APPEND external_${externals_count}_algs "${alg}")
-        elseif(ExternalData_LINK_CONTENT)
-          _ExternalData_link_content("${name}" alg)
-          list(APPEND external "${file}|${name}|${alg}")
-        elseif(NOT top_same)
-          list(APPEND internal "${file}|${name}")
-        endif()
-        if("${relname}" STREQUAL "${reldata}")
-          set(have_original 1)
-        endif()
-      endif()
-    endif()
-  endforeach()
-  if(${externals_count} GREATER -1)
-    foreach(ii RANGE ${externals_count})
-      string(REPLACE ";" "+" algs_delim "${external_${ii}_algs}")
-      list(APPEND external "${external_${ii}_file_name}|${algs_delim}")
-      unset(external_${ii}_algs)
-      unset(external_${ii}_file_name)
-    endforeach()
-  endif()
-  set(external "${external}" PARENT_SCOPE)
-  set(internal "${internal}" PARENT_SCOPE)
-  set(have_original "${have_original}" PARENT_SCOPE)
-  set(have_original_as_dir "${have_original_as_dir}" PARENT_SCOPE)
-endfunction()
-
-#-----------------------------------------------------------------------------
-# Private script mode interface
-
-if(CMAKE_GENERATOR OR NOT ExternalData_ACTION)
-  return()
-endif()
-
-if(ExternalData_CONFIG)
-  include(${ExternalData_CONFIG})
-endif()
-if(NOT ExternalData_URL_TEMPLATES AND NOT ExternalData_OBJECT_STORES)
-  message(FATAL_ERROR
-    "Neither ExternalData_URL_TEMPLATES nor ExternalData_OBJECT_STORES is set!")
-endif()
-
-function(_ExternalData_link_or_copy src dst)
-  # Create a temporary file first.
-  get_filename_component(dst_dir "${dst}" PATH)
-  file(MAKE_DIRECTORY "${dst_dir}")
-  _ExternalData_random(random)
-  set(tmp "${dst}.tmp${random}")
-  if(UNIX AND NOT ExternalData_NO_SYMLINKS)
-    # Create a symbolic link.
-    set(tgt "${src}")
-    if(relative_top)
-      # Use relative path if files are close enough.
-      file(RELATIVE_PATH relsrc "${relative_top}" "${src}")
-      file(RELATIVE_PATH relfile "${relative_top}" "${dst}")
-      if(NOT IS_ABSOLUTE "${relsrc}" AND NOT "${relsrc}" MATCHES "^\\.\\./" AND
-          NOT IS_ABSOLUTE "${reldst}" AND NOT "${reldst}" MATCHES "^\\.\\./")
-        file(RELATIVE_PATH tgt "${dst_dir}" "${src}")
-      endif()
-    endif()
-    execute_process(COMMAND "${CMAKE_COMMAND}" -E create_symlink "${tgt}" "${tmp}" RESULT_VARIABLE result)
-  else()
-    # Create a copy.
-    execute_process(COMMAND "${CMAKE_COMMAND}" -E copy "${src}" "${tmp}" RESULT_VARIABLE result)
-  endif()
-  if(result)
-    file(REMOVE "${tmp}")
-    message(FATAL_ERROR "Failed to create\n  ${tmp}\nfrom\n  ${obj}")
-  endif()
-
-  # Atomically create/replace the real destination.
-  file(RENAME "${tmp}" "${dst}")
-endfunction()
-
-function(_ExternalData_download_file url file err_var msg_var)
-  set(retry 3)
-  while(retry)
-    math(EXPR retry "${retry} - 1")
-    if(ExternalData_TIMEOUT_INACTIVITY)
-      set(inactivity_timeout INACTIVITY_TIMEOUT ${ExternalData_TIMEOUT_INACTIVITY})
-    elseif(NOT "${ExternalData_TIMEOUT_INACTIVITY}" EQUAL 0)
-      set(inactivity_timeout INACTIVITY_TIMEOUT 60)
-    else()
-      set(inactivity_timeout "")
-    endif()
-    if(ExternalData_TIMEOUT_ABSOLUTE)
-      set(absolute_timeout TIMEOUT ${ExternalData_TIMEOUT_ABSOLUTE})
-    elseif(NOT "${ExternalData_TIMEOUT_ABSOLUTE}" EQUAL 0)
-      set(absolute_timeout TIMEOUT 300)
-    else()
-      set(absolute_timeout "")
-    endif()
-    file(DOWNLOAD "${url}" "${file}" STATUS status LOG log ${inactivity_timeout} ${absolute_timeout} SHOW_PROGRESS)
-    list(GET status 0 err)
-    list(GET status 1 msg)
-    if(err)
-      if("${msg}" MATCHES "HTTP response code said error" AND
-          "${log}" MATCHES "error: 503")
-        set(msg "temporarily unavailable")
-      endif()
-    elseif("${log}" MATCHES "\nHTTP[^\n]* 503")
-      set(err TRUE)
-      set(msg "temporarily unavailable")
-    endif()
-    if(NOT err OR NOT "${msg}" MATCHES "partial|timeout|temporarily")
-      break()
-    elseif(retry)
-      message(STATUS "[download terminated: ${msg}, retries left: ${retry}]")
-    endif()
-  endwhile()
-  set("${err_var}" "${err}" PARENT_SCOPE)
-  set("${msg_var}" "${msg}" PARENT_SCOPE)
-endfunction()
-
-function(_ExternalData_custom_fetch key loc file err_var msg_var)
-  if(NOT ExternalData_CUSTOM_SCRIPT_${key})
-    set(err 1)
-    set(msg "No ExternalData_CUSTOM_SCRIPT_${key} set!")
-  elseif(NOT EXISTS "${ExternalData_CUSTOM_SCRIPT_${key}}")
-    set(err 1)
-    set(msg "No '${ExternalData_CUSTOM_SCRIPT_${key}}' exists!")
-  else()
-    set(ExternalData_CUSTOM_LOCATION "${loc}")
-    set(ExternalData_CUSTOM_FILE "${file}")
-    unset(ExternalData_CUSTOM_ERROR)
-    include("${ExternalData_CUSTOM_SCRIPT_${key}}")
-    if(DEFINED ExternalData_CUSTOM_ERROR)
-      set(err 1)
-      set(msg "${ExternalData_CUSTOM_ERROR}")
-    else()
-      set(err 0)
-      set(msg "no error")
-    endif()
-  endif()
-  set("${err_var}" "${err}" PARENT_SCOPE)
-  set("${msg_var}" "${msg}" PARENT_SCOPE)
-endfunction()
-
-function(_ExternalData_get_from_object_store hash algo var_obj var_success)
-  # Search all object stores for an existing object.
-  foreach(dir ${ExternalData_OBJECT_STORES})
-    set(obj "${dir}/${algo}/${hash}")
-    if(EXISTS "${obj}")
-      message(STATUS "Found object: \"${obj}\"")
-      set("${var_obj}" "${obj}" PARENT_SCOPE)
-      set("${var_success}" 1 PARENT_SCOPE)
-      return()
-    endif()
-  endforeach()
-endfunction()
-
-function(_ExternalData_download_object name hash algo var_obj var_success var_errorMsg)
-  # Search all object stores for an existing object.
-  set(success 1)
-  foreach(dir ${ExternalData_OBJECT_STORES})
-    set(obj "${dir}/${algo}/${hash}")
-    if(EXISTS "${obj}")
-      message(STATUS "Found object: \"${obj}\"")
-      set("${var_obj}" "${obj}" PARENT_SCOPE)
-      set("${var_success}" "${success}" PARENT_SCOPE)
-      return()
-    endif()
-  endforeach()
-
-  # Download object to the first store.
-  list(GET ExternalData_OBJECT_STORES 0 store)
-  set(obj "${store}/${algo}/${hash}")
-
-  _ExternalData_random(random)
-  set(tmp "${obj}.tmp${random}")
-  set(found 0)
-  set(tried "")
-  foreach(url_template IN LISTS ExternalData_URL_TEMPLATES)
-    string(REPLACE "%(hash)" "${hash}" url_tmp "${url_template}")
-    string(REPLACE "%(algo)" "${algo}" url "${url_tmp}")
-    if(url MATCHES "^(.*)%\\(algo:([A-Za-z_][A-Za-z0-9_]*)\\)(.*)$")
-      set(lhs "${CMAKE_MATCH_1}")
-      set(key "${CMAKE_MATCH_2}")
-      set(rhs "${CMAKE_MATCH_3}")
-      if(DEFINED ExternalData_URL_ALGO_${algo}_${key})
-        set(url "${lhs}${ExternalData_URL_ALGO_${algo}_${key}}${rhs}")
-      else()
-        set(url "${lhs}${algo}${rhs}")
-      endif()
-    endif()
-    string(REGEX REPLACE "((https?|ftp)://)([^@]+@)?(.*)" "\\1\\4" secured_url "${url}")
-    message(STATUS "Fetching \"${secured_url}\"")
-    if(url MATCHES "^ExternalDataCustomScript://([A-Za-z_][A-Za-z0-9_]*)/(.*)$")
-      _ExternalData_custom_fetch("${CMAKE_MATCH_1}" "${CMAKE_MATCH_2}" "${tmp}" err errMsg)
-    else()
-      _ExternalData_download_file("${url}" "${tmp}" err errMsg)
-    endif()
-    string(APPEND tried "\n  ${url}")
-    if(err)
-      string(APPEND tried " (${errMsg})")
-    else()
-      # Verify downloaded object.
-      _ExternalData_compute_hash(dl_hash "${algo}" "${tmp}")
-      if("${dl_hash}" STREQUAL "${hash}")
-        set(found 1)
-        break()
-      else()
-        string(APPEND tried " (wrong hash ${algo}=${dl_hash})")
-        if("$ENV{ExternalData_DEBUG_DOWNLOAD}" MATCHES ".")
-          file(RENAME "${tmp}" "${store}/${algo}/${dl_hash}")
-        endif()
-      endif()
-    endif()
-    file(REMOVE "${tmp}")
-  endforeach()
-
-  get_filename_component(dir "${name}" PATH)
-  set(staged "${dir}/.ExternalData_${algo}_${hash}")
-
-  set(success 1)
-  if(found)
-    file(RENAME "${tmp}" "${obj}")
-    message(STATUS "Downloaded object: \"${obj}\"")
-  elseif(EXISTS "${staged}")
-    set(obj "${staged}")
-    message(STATUS "Staged object: \"${obj}\"")
-  else()
-    if(NOT tried)
-      set(tried "\n  (No ExternalData_URL_TEMPLATES given)")
-    endif()
-    set(success 0)
-    set("${var_errorMsg}" "Object ${algo}=${hash} not found at:${tried}" PARENT_SCOPE)
-  endif()
-
-  set("${var_obj}" "${obj}" PARENT_SCOPE)
-  set("${var_success}" "${success}" PARENT_SCOPE)
-endfunction()
-
-if("${ExternalData_ACTION}" STREQUAL "fetch")
-  foreach(v ExternalData_OBJECT_STORES file name exts)
-    if(NOT DEFINED "${v}")
-      message(FATAL_ERROR "No \"-D${v}=\" value provided!")
-    endif()
-  endforeach()
-
-  string(REPLACE "+" ";" exts_list "${exts}")
-  set(succeeded 0)
-  set(errorMsg "")
-  set(hash_list )
-  set(algo_list )
-  set(hash )
-  set(algo )
-  foreach(ext ${exts_list})
-    file(READ "${name}${ext}" hash)
-    string(STRIP "${hash}" hash)
-
-    if("${ext}" MATCHES "^\\.(${_ExternalData_REGEX_EXT})$")
-      string(TOUPPER "${CMAKE_MATCH_1}" algo)
-      string(REPLACE "-" "_" algo "${algo}")
-    else()
-      message(FATAL_ERROR "Unknown hash algorithm extension \"${ext}\"")
-    endif()
-
-    list(APPEND hash_list ${hash})
-    list(APPEND algo_list ${algo})
-  endforeach()
-
-  list(LENGTH exts_list num_extensions)
-  math(EXPR exts_range "${num_extensions} - 1")
-  foreach(ii RANGE 0 ${exts_range})
-    list(GET hash_list ${ii} hash)
-    list(GET algo_list ${ii} algo)
-    _ExternalData_get_from_object_store("${hash}" "${algo}" obj succeeded)
-    if(succeeded)
-      break()
-    endif()
-  endforeach()
-  if(NOT succeeded)
-    foreach(ii RANGE 0 ${exts_range})
-      list(GET hash_list ${ii} hash)
-      list(GET algo_list ${ii} algo)
-      _ExternalData_download_object("${name}" "${hash}" "${algo}"
-        obj succeeded algoErrorMsg)
-      string(APPEND errorMsg "\n${algoErrorMsg}")
-      if(succeeded)
-        break()
-      endif()
-    endforeach()
-  endif()
-  if(NOT succeeded)
-    message(FATAL_ERROR "${errorMsg}")
-  endif()
-  # Check if file already corresponds to the object.
-  set(stamp "-hash-stamp")
-  set(file_up_to_date 0)
-  if(EXISTS "${file}" AND EXISTS "${file}${stamp}")
-    file(READ "${file}${stamp}" f_hash)
-    string(STRIP "${f_hash}" f_hash)
-    if("${f_hash}" STREQUAL "${hash}")
-      set(file_up_to_date 1)
-    endif()
-  endif()
-
-  if(file_up_to_date)
-    # Touch the file to convince the build system it is up to date.
-    file(TOUCH "${file}")
-  else()
-    _ExternalData_link_or_copy("${obj}" "${file}")
-  endif()
-
-  # Atomically update the hash/timestamp file to record the object referenced.
-  _ExternalData_atomic_write("${file}${stamp}" "${hash}\n")
-elseif("${ExternalData_ACTION}" STREQUAL "local")
-  foreach(v file name)
-    if(NOT DEFINED "${v}")
-      message(FATAL_ERROR "No \"-D${v}=\" value provided!")
-    endif()
-  endforeach()
-  _ExternalData_link_or_copy("${name}" "${file}")
-else()
-  message(FATAL_ERROR "Unknown ExternalData_ACTION=[${ExternalData_ACTION}]")
-endif()
diff --git a/share/cmake-3.18/Modules/ExternalProject-download.cmake.in b/share/cmake-3.18/Modules/ExternalProject-download.cmake.in
deleted file mode 100644
index 99fb917..0000000
--- a/share/cmake-3.18/Modules/ExternalProject-download.cmake.in
+++ /dev/null
@@ -1,162 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-cmake_minimum_required(VERSION 3.5)
-
-function(check_file_hash has_hash hash_is_good)
-  if("${has_hash}" STREQUAL "")
-    message(FATAL_ERROR "has_hash Can't be empty")
-  endif()
-
-  if("${hash_is_good}" STREQUAL "")
-    message(FATAL_ERROR "hash_is_good Can't be empty")
-  endif()
-
-  if("@ALGO@" STREQUAL "")
-    # No check
-    set("${has_hash}" FALSE PARENT_SCOPE)
-    set("${hash_is_good}" FALSE PARENT_SCOPE)
-    return()
-  endif()
-
-  set("${has_hash}" TRUE PARENT_SCOPE)
-
-  message(STATUS "verifying file...
-       file='@LOCAL@'")
-
-  file("@ALGO@" "@LOCAL@" actual_value)
-
-  if(NOT "${actual_value}" STREQUAL "@EXPECT_VALUE@")
-    set("${hash_is_good}" FALSE PARENT_SCOPE)
-    message(STATUS "@ALGO@ hash of
-    @LOCAL@
-  does not match expected value
-    expected: '@EXPECT_VALUE@'
-      actual: '${actual_value}'")
-  else()
-    set("${hash_is_good}" TRUE PARENT_SCOPE)
-  endif()
-endfunction()
-
-function(sleep_before_download attempt)
-  if(attempt EQUAL 0)
-    return()
-  endif()
-
-  if(attempt EQUAL 1)
-    message(STATUS "Retrying...")
-    return()
-  endif()
-
-  set(sleep_seconds 0)
-
-  if(attempt EQUAL 2)
-    set(sleep_seconds 5)
-  elseif(attempt EQUAL 3)
-    set(sleep_seconds 5)
-  elseif(attempt EQUAL 4)
-    set(sleep_seconds 15)
-  elseif(attempt EQUAL 5)
-    set(sleep_seconds 60)
-  elseif(attempt EQUAL 6)
-    set(sleep_seconds 90)
-  elseif(attempt EQUAL 7)
-    set(sleep_seconds 300)
-  else()
-    set(sleep_seconds 1200)
-  endif()
-
-  message(STATUS "Retry after ${sleep_seconds} seconds (attempt #${attempt}) ...")
-
-  execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep "${sleep_seconds}")
-endfunction()
-
-if("@LOCAL@" STREQUAL "")
-  message(FATAL_ERROR "LOCAL can't be empty")
-endif()
-
-if("@REMOTE@" STREQUAL "")
-  message(FATAL_ERROR "REMOTE can't be empty")
-endif()
-
-if(EXISTS "@LOCAL@")
-  check_file_hash(has_hash hash_is_good)
-  if(has_hash)
-    if(hash_is_good)
-      message(STATUS "File already exists and hash match (skip download):
-  file='@LOCAL@'
-  @ALGO@='@EXPECT_VALUE@'"
-      )
-      return()
-    else()
-      message(STATUS "File already exists but hash mismatch. Removing...")
-      file(REMOVE "@LOCAL@")
-    endif()
-  else()
-    message(STATUS "File already exists but no hash specified (use URL_HASH):
-  file='@LOCAL@'
-Old file will be removed and new file downloaded from URL."
-    )
-    file(REMOVE "@LOCAL@")
-  endif()
-endif()
-
-set(retry_number 5)
-
-message(STATUS "Downloading...
-   dst='@LOCAL@'
-   timeout='@TIMEOUT_MSG@'"
-)
-
-foreach(i RANGE ${retry_number})
-  sleep_before_download(${i})
-
-  foreach(url @REMOTE@)
-    message(STATUS "Using src='${url}'")
-
-    @TLS_VERIFY_CODE@
-    @TLS_CAINFO_CODE@
-    @NETRC_CODE@
-    @NETRC_FILE_CODE@
-
-    file(
-        DOWNLOAD
-        "${url}" "@LOCAL@"
-        @SHOW_PROGRESS@
-        @TIMEOUT_ARGS@
-        STATUS status
-        LOG log
-        @USERPWD_ARGS@
-        @HTTP_HEADERS_ARGS@
-    )
-
-    list(GET status 0 status_code)
-    list(GET status 1 status_string)
-
-    if(status_code EQUAL 0)
-      check_file_hash(has_hash hash_is_good)
-      if(has_hash AND NOT hash_is_good)
-        message(STATUS "Hash mismatch, removing...")
-        file(REMOVE "@LOCAL@")
-      else()
-        message(STATUS "Downloading... done")
-        return()
-      endif()
-    else()
-      string(APPEND logFailedURLs "error: downloading '${url}' failed
-       status_code: ${status_code}
-       status_string: ${status_string}
-       log:
-       --- LOG BEGIN ---
-       ${log}
-       --- LOG END ---
-       "
-      )
-    endif()
-  endforeach()
-endforeach()
-
-message(FATAL_ERROR "Each download failed!
-  ${logFailedURLs}
-  "
-)
diff --git a/share/cmake-3.18/Modules/ExternalProject-gitupdate.cmake.in b/share/cmake-3.18/Modules/ExternalProject-gitupdate.cmake.in
deleted file mode 100644
index eff39c1..0000000
--- a/share/cmake-3.18/Modules/ExternalProject-gitupdate.cmake.in
+++ /dev/null
@@ -1,216 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-cmake_minimum_required(VERSION 3.5)
-
-execute_process(
-  COMMAND "@git_EXECUTABLE@" rev-list --max-count=1 HEAD
-  WORKING_DIRECTORY "@work_dir@"
-  RESULT_VARIABLE error_code
-  OUTPUT_VARIABLE head_sha
-  OUTPUT_STRIP_TRAILING_WHITESPACE
-  )
-if(error_code)
-  message(FATAL_ERROR "Failed to get the hash for HEAD")
-endif()
-
-execute_process(
-  COMMAND "@git_EXECUTABLE@" show-ref "@git_tag@"
-  WORKING_DIRECTORY "@work_dir@"
-  OUTPUT_VARIABLE show_ref_output
-  )
-# If a remote ref is asked for, which can possibly move around,
-# we must always do a fetch and checkout.
-if("${show_ref_output}" MATCHES "remotes")
-  set(is_remote_ref 1)
-else()
-  set(is_remote_ref 0)
-endif()
-
-# Tag is in the form <remote>/<tag> (i.e. origin/master) we must strip
-# the remote from the tag.
-if("${show_ref_output}" MATCHES "refs/remotes/@git_tag@")
-  string(REGEX MATCH "^([^/]+)/(.+)$" _unused "@git_tag@")
-  set(git_remote "${CMAKE_MATCH_1}")
-  set(git_tag "${CMAKE_MATCH_2}")
-else()
-  set(git_remote "@git_remote_name@")
-  set(git_tag "@git_tag@")
-endif()
-
-# This will fail if the tag does not exist (it probably has not been fetched
-# yet).
-execute_process(
-  COMMAND "@git_EXECUTABLE@" rev-list --max-count=1 "${git_tag}"
-  WORKING_DIRECTORY "@work_dir@"
-  RESULT_VARIABLE error_code
-  OUTPUT_VARIABLE tag_sha
-  OUTPUT_STRIP_TRAILING_WHITESPACE
-  )
-
-# Is the hash checkout out that we want?
-if(error_code OR is_remote_ref OR NOT ("${tag_sha}" STREQUAL "${head_sha}"))
-  execute_process(
-    COMMAND "@git_EXECUTABLE@" fetch
-    WORKING_DIRECTORY "@work_dir@"
-    RESULT_VARIABLE error_code
-    )
-  if(error_code)
-    message(FATAL_ERROR "Failed to fetch repository '@git_repository@'")
-  endif()
-
-  if(is_remote_ref)
-    # Check if stash is needed
-    execute_process(
-      COMMAND "@git_EXECUTABLE@" status --porcelain
-      WORKING_DIRECTORY "@work_dir@"
-      RESULT_VARIABLE error_code
-      OUTPUT_VARIABLE repo_status
-      )
-    if(error_code)
-      message(FATAL_ERROR "Failed to get the status")
-    endif()
-    string(LENGTH "${repo_status}" need_stash)
-
-    # If not in clean state, stash changes in order to be able to perform a
-    # rebase or checkout without losing those changes permanently
-    if(need_stash)
-      execute_process(
-        COMMAND "@git_EXECUTABLE@" stash save @git_stash_save_options@
-        WORKING_DIRECTORY "@work_dir@"
-        RESULT_VARIABLE error_code
-        )
-      if(error_code)
-        message(FATAL_ERROR "Failed to stash changes")
-      endif()
-    endif()
-
-    if("@git_update_strategy@" STREQUAL "CHECKOUT")
-      execute_process(
-        COMMAND "@git_EXECUTABLE@" checkout "${git_remote}/${git_tag}"
-        WORKING_DIRECTORY "@work_dir@"
-        RESULT_VARIABLE error_code
-        )
-      if(error_code)
-        message(FATAL_ERROR "Failed to checkout tag: '${git_remote}/${git_tag}'")
-      endif()
-    else()
-      # Pull changes from the remote branch
-      execute_process(
-        COMMAND "@git_EXECUTABLE@" rebase "${git_remote}/${git_tag}"
-        WORKING_DIRECTORY "@work_dir@"
-        RESULT_VARIABLE error_code
-        OUTPUT_VARIABLE rebase_output
-        ERROR_VARIABLE  rebase_output
-        )
-      if(error_code)
-        # Rebase failed, undo the rebase attempt before continuing
-        execute_process(
-          COMMAND "@git_EXECUTABLE@" rebase --abort
-          WORKING_DIRECTORY "@work_dir@"
-        )
-
-        if(NOT "@git_update_strategy@" STREQUAL "REBASE_CHECKOUT")
-          # Not allowed to do a checkout as a fallback, so cannot proceed
-          if(need_stash)
-            execute_process(
-              COMMAND "@git_EXECUTABLE@" stash pop --index --quiet
-              WORKING_DIRECTORY "@work_dir@"
-              )
-          endif()
-          message(FATAL_ERROR "\nFailed to rebase in: '@work_dir@'."
-                              "\nOutput from the attempted rebase follows:"
-                              "\n${rebase_output}"
-                              "\n\nYou will have to resolve the conflicts manually")
-        endif()
-
-        # Fall back to checkout. We create an annotated tag so that the user
-        # can manually inspect the situation and revert if required.
-        # We can't log the failed rebase output because MSVC sees it and
-        # intervenes, causing the build to fail even though it completes.
-        # Write it to a file instead.
-        string(TIMESTAMP tag_timestamp "%Y%m%dT%H%M%S" UTC)
-        set(tag_name _cmake_ExternalProject_moved_from_here_${tag_timestamp}Z)
-        set(error_log_file ${CMAKE_CURRENT_LIST_DIR}/rebase_error_${tag_timestamp}Z.log)
-        file(WRITE ${error_log_file} "${rebase_output}")
-        message(WARNING "Rebase failed, output has been saved to ${error_log_file}"
-                        "\nFalling back to checkout, previous commit tagged as ${tag_name}")
-        execute_process(
-          COMMAND "@git_EXECUTABLE@" tag -a
-                  -m "ExternalProject attempting to move from here to ${git_remote}/${git_tag}"
-                  ${tag_name}
-          WORKING_DIRECTORY "@work_dir@"
-          RESULT_VARIABLE error_code
-        )
-        if(error_code)
-          message(FATAL_ERROR "Failed to add marker tag")
-        endif()
-
-        execute_process(
-          COMMAND "@git_EXECUTABLE@" checkout "${git_remote}/${git_tag}"
-          WORKING_DIRECTORY "@work_dir@"
-          RESULT_VARIABLE error_code
-        )
-        if(error_code)
-          message(FATAL_ERROR "Failed to checkout : '${git_remote}/${git_tag}'")
-        endif()
-
-      endif()
-    endif()
-
-    if(need_stash)
-      execute_process(
-        COMMAND "@git_EXECUTABLE@" stash pop --index --quiet
-        WORKING_DIRECTORY "@work_dir@"
-        RESULT_VARIABLE error_code
-        )
-      if(error_code)
-        # Stash pop --index failed: Try again dropping the index
-        execute_process(
-          COMMAND "@git_EXECUTABLE@" reset --hard --quiet
-          WORKING_DIRECTORY "@work_dir@"
-          RESULT_VARIABLE error_code
-          )
-        execute_process(
-          COMMAND "@git_EXECUTABLE@" stash pop --quiet
-          WORKING_DIRECTORY "@work_dir@"
-          RESULT_VARIABLE error_code
-          )
-        if(error_code)
-          # Stash pop failed: Restore previous state.
-          execute_process(
-            COMMAND "@git_EXECUTABLE@" reset --hard --quiet ${head_sha}
-            WORKING_DIRECTORY "@work_dir@"
-          )
-          execute_process(
-            COMMAND "@git_EXECUTABLE@" stash pop --index --quiet
-            WORKING_DIRECTORY "@work_dir@"
-          )
-          message(FATAL_ERROR "\nFailed to unstash changes in: '@work_dir@'."
-                              "\nYou will have to resolve the conflicts manually")
-        endif()
-      endif()
-    endif()
-  else()
-    execute_process(
-      COMMAND "@git_EXECUTABLE@" checkout "${git_tag}"
-      WORKING_DIRECTORY "@work_dir@"
-      RESULT_VARIABLE error_code
-      )
-    if(error_code)
-      message(FATAL_ERROR "Failed to checkout tag: '${git_tag}'")
-    endif()
-  endif()
-
-  set(init_submodules "@init_submodules@")
-  if(init_submodules)
-    execute_process(
-      COMMAND "@git_EXECUTABLE@" submodule update @git_submodules_recurse@ --init @git_submodules@
-      WORKING_DIRECTORY "@work_dir@"
-      RESULT_VARIABLE error_code
-      )
-  endif()
-  if(error_code)
-    message(FATAL_ERROR "Failed to update submodules in: '@work_dir@'")
-  endif()
-endif()
diff --git a/share/cmake-3.18/Modules/ExternalProject.cmake b/share/cmake-3.18/Modules/ExternalProject.cmake
deleted file mode 100644
index aecc00b..0000000
--- a/share/cmake-3.18/Modules/ExternalProject.cmake
+++ /dev/null
@@ -1,3241 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-ExternalProject
----------------
-
-.. only:: html
-
-   .. contents::
-
-Commands
-^^^^^^^^
-
-External Project Definition
-"""""""""""""""""""""""""""
-
-.. command:: ExternalProject_Add
-
-  The ``ExternalProject_Add()`` function creates a custom target to drive
-  download, update/patch, configure, build, install and test steps of an
-  external project:
-
-  .. code-block:: cmake
-
-    ExternalProject_Add(<name> [<option>...])
-
-  The individual steps within the process can be driven independently if
-  required (e.g. for CDash submission) and extra custom steps can be defined,
-  along with the ability to control the step dependencies. The directory
-  structure used for the management of the external project can also be
-  customized. The function supports a large number of options which can be used
-  to tailor the external project behavior.
-
-  **Directory Options:**
-    Most of the time, the default directory layout is sufficient. It is largely
-    an implementation detail that the main project usually doesn't need to
-    change. In some circumstances, however, control over the directory layout
-    can be useful or necessary. The directory options are potentially more
-    useful from the point of view that the main build can use the
-    :command:`ExternalProject_Get_Property` command to retrieve their values,
-    thereby allowing the main project to refer to build artifacts of the
-    external project.
-
-    ``PREFIX <dir>``
-      Root directory for the external project. Unless otherwise noted below,
-      all other directories associated with the external project will be
-      created under here.
-
-    ``TMP_DIR <dir>``
-      Directory in which to store temporary files.
-
-    ``STAMP_DIR <dir>``
-      Directory in which to store the timestamps of each step. Log files from
-      individual steps are also created in here unless overridden by LOG_DIR
-      (see *Logging Options* below).
-
-    ``LOG_DIR <dir>``
-      Directory in which to store the logs of each step.
-
-    ``DOWNLOAD_DIR <dir>``
-      Directory in which to store downloaded files before unpacking them. This
-      directory is only used by the URL download method, all other download
-      methods use ``SOURCE_DIR`` directly instead.
-
-    ``SOURCE_DIR <dir>``
-      Source directory into which downloaded contents will be unpacked, or for
-      non-URL download methods, the directory in which the repository should be
-      checked out, cloned, etc. If no download method is specified, this must
-      point to an existing directory where the external project has already
-      been unpacked or cloned/checked out.
-
-      .. note::
-         If a download method is specified, any existing contents of the source
-         directory may be deleted. Only the URL download method checks whether
-         this directory is either missing or empty before initiating the
-         download, stopping with an error if it is not empty. All other
-         download methods silently discard any previous contents of the source
-         directory.
-
-    ``BINARY_DIR <dir>``
-      Specify the build directory location. This option is ignored if
-      ``BUILD_IN_SOURCE`` is enabled.
-
-    ``INSTALL_DIR <dir>``
-      Installation prefix to be placed in the ``<INSTALL_DIR>`` placeholder.
-      This does not actually configure the external project to install to
-      the given prefix. That must be done by passing appropriate arguments
-      to the external project configuration step, e.g. using ``<INSTALL_DIR>``.
-
-    If any of the above ``..._DIR`` options are not specified, their defaults
-    are computed as follows. If the ``PREFIX`` option is given or the
-    ``EP_PREFIX`` directory property is set, then an external project is built
-    and installed under the specified prefix::
-
-      TMP_DIR      = <prefix>/tmp
-      STAMP_DIR    = <prefix>/src/<name>-stamp
-      DOWNLOAD_DIR = <prefix>/src
-      SOURCE_DIR   = <prefix>/src/<name>
-      BINARY_DIR   = <prefix>/src/<name>-build
-      INSTALL_DIR  = <prefix>
-      LOG_DIR      = <STAMP_DIR>
-
-    Otherwise, if the ``EP_BASE`` directory property is set then components
-    of an external project are stored under the specified base::
-
-      TMP_DIR      = <base>/tmp/<name>
-      STAMP_DIR    = <base>/Stamp/<name>
-      DOWNLOAD_DIR = <base>/Download/<name>
-      SOURCE_DIR   = <base>/Source/<name>
-      BINARY_DIR   = <base>/Build/<name>
-      INSTALL_DIR  = <base>/Install/<name>
-      LOG_DIR      = <STAMP_DIR>
-
-    If no ``PREFIX``, ``EP_PREFIX``, or ``EP_BASE`` is specified, then the
-    default is to set ``PREFIX`` to ``<name>-prefix``. Relative paths are
-    interpreted with respect to :variable:`CMAKE_CURRENT_BINARY_DIR` at the
-    point where ``ExternalProject_Add()`` is called.
-
-  **Download Step Options:**
-    A download method can be omitted if the ``SOURCE_DIR`` option is used to
-    point to an existing non-empty directory. Otherwise, one of the download
-    methods below must be specified (multiple download methods should not be
-    given) or a custom ``DOWNLOAD_COMMAND`` provided.
-
-    ``DOWNLOAD_COMMAND <cmd>...``
-      Overrides the command used for the download step
-      (:manual:`generator expressions <cmake-generator-expressions(7)>` are
-      supported). If this option is specified, all other download options will
-      be ignored. Providing an empty string for ``<cmd>`` effectively disables
-      the download step.
-
-    *URL Download*
-      ``URL <url1> [<url2>...]``
-        List of paths and/or URL(s) of the external project's source. When more
-        than one URL is given, they are tried in turn until one succeeds. A URL
-        may be an ordinary path in the local file system (in which case it
-        must be the only URL provided) or any downloadable URL supported by the
-        :command:`file(DOWNLOAD)` command. A local filesystem path may refer to
-        either an existing directory or to an archive file, whereas a URL is
-        expected to point to a file which can be treated as an archive. When an
-        archive is used, it will be unpacked automatically unless the
-        ``DOWNLOAD_NO_EXTRACT`` option is set to prevent it. The archive type
-        is determined by inspecting the actual content rather than using logic
-        based on the file extension.
-
-      ``URL_HASH <algo>=<hashValue>``
-        Hash of the archive file to be downloaded. The argument should be of
-        the form ``<algo>=<hashValue>`` where ``algo`` can be any of the hashing
-        algorithms supported by the :command:`file()` command. Specifying this
-        option is strongly recommended for URL downloads, as it ensures the
-        integrity of the downloaded content. It is also used as a check for a
-        previously downloaded file, allowing connection to the remote location
-        to be avoided altogether if the local directory already has a file from
-        an earlier download that matches the specified hash.
-
-      ``URL_MD5 <md5>``
-        Equivalent to ``URL_HASH MD5=<md5>``.
-
-      ``DOWNLOAD_NAME <fname>``
-        File name to use for the downloaded file. If not given, the end of the
-        URL is used to determine the file name. This option is rarely needed,
-        the default name is generally suitable and is not normally used outside
-        of code internal to the ``ExternalProject`` module.
-
-      ``DOWNLOAD_NO_EXTRACT <bool>``
-        Allows the extraction part of the download step to be disabled by
-        passing a boolean true value for this option. If this option is not
-        given, the downloaded contents will be unpacked automatically if
-        required. If extraction has been disabled, the full path to the
-        downloaded file is available as ``<DOWNLOADED_FILE>`` in subsequent
-        steps or as the property ``DOWNLOADED_FILE`` with the
-        :command:`ExternalProject_Get_Property` command.
-
-      ``DOWNLOAD_NO_PROGRESS <bool>``
-        Can be used to disable logging the download progress. If this option is
-        not given, download progress messages will be logged.
-
-      ``TIMEOUT <seconds>``
-        Maximum time allowed for file download operations.
-
-      ``HTTP_USERNAME <username>``
-        Username for the download operation if authentication is required.
-
-      ``HTTP_PASSWORD <password>``
-        Password for the download operation if authentication is required.
-
-      ``HTTP_HEADER <header1> [<header2>...]``
-        Provides an arbitrary list of HTTP headers for the download operation.
-        This can be useful for accessing content in systems like AWS, etc.
-
-      ``TLS_VERIFY <bool>``
-        Specifies whether certificate verification should be performed for
-        https URLs. If this option is not provided, the default behavior is
-        determined by the ``CMAKE_TLS_VERIFY`` variable (see
-        :command:`file(DOWNLOAD)`). If that is also not set, certificate
-        verification will not be performed. In situations where ``URL_HASH``
-        cannot be provided, this option can be an alternative verification
-        measure.
-
-      ``TLS_CAINFO <file>``
-        Specify a custom certificate authority file to use if ``TLS_VERIFY``
-        is enabled. If this option is not specified, the value of the
-        ``CMAKE_TLS_CAINFO`` variable will be used instead (see
-        :command:`file(DOWNLOAD)`)
-
-      ``NETRC <level>``
-        Specify whether the ``.netrc`` file is to be used for operation.
-        If this option is not specified, the value of the ``CMAKE_NETRC``
-        variable will be used instead (see :command:`file(DOWNLOAD)`)
-        Valid levels are:
-
-        ``IGNORED``
-          The ``.netrc`` file is ignored.
-          This is the default.
-        ``OPTIONAL``
-          The ``.netrc`` file is optional, and information in the URL
-          is preferred.  The file will be scanned to find which ever
-          information is not specified in the URL.
-        ``REQUIRED``
-          The ``.netrc`` file is required, and information in the URL
-          is ignored.
-
-      ``NETRC_FILE <file>``
-        Specify an alternative ``.netrc`` file to the one in your home directory
-        if the ``NETRC`` level is ``OPTIONAL`` or ``REQUIRED``. If this option
-        is not specified, the value of the ``CMAKE_NETRC_FILE`` variable will
-        be used instead (see :command:`file(DOWNLOAD)`)
-
-    *Git*
-      NOTE: A git version of 1.6.5 or later is required if this download method
-      is used.
-
-      ``GIT_REPOSITORY <url>``
-        URL of the git repository. Any URL understood by the ``git`` command
-        may be used.
-
-      ``GIT_TAG <tag>``
-        Git branch name, tag or commit hash. Note that branch names and tags
-        should generally be specified as remote names (i.e. ``origin/myBranch``
-        rather than simply ``myBranch``). This ensures that if the remote end
-        has its tag moved or branch rebased or history rewritten, the local
-        clone will still be updated correctly. In general, however, specifying
-        a commit hash should be preferred for a number of reasons:
-
-        - If the local clone already has the commit corresponding to the hash,
-          no ``git fetch`` needs to be performed to check for changes each time
-          CMake is re-run. This can result in a significant speed up if many
-          external projects are being used.
-        - Using a specific git hash ensures that the main project's own history
-          is fully traceable to a specific point in the external project's
-          evolution. If a branch or tag name is used instead, then checking out
-          a specific commit of the main project doesn't necessarily pin the
-          whole build to a specific point in the life of the external project.
-          The lack of such deterministic behavior makes the main project lose
-          traceability and repeatability.
-
-        If ``GIT_SHALLOW`` is enabled then ``GIT_TAG`` works only with
-        branch names and tags.  A commit hash is not allowed.
-
-      ``GIT_REMOTE_NAME <name>``
-        The optional name of the remote. If this option is not specified, it
-        defaults to ``origin``.
-
-      ``GIT_SUBMODULES <module>...``
-        Specific git submodules that should also be updated. If this option is
-        not provided, all git submodules will be updated. When :policy:`CMP0097`
-        is set to ``NEW`` if this value is set to an empty string then no submodules
-        are initialized or updated.
-
-      ``GIT_SUBMODULES_RECURSE <bool>``
-        Specify whether git submodules (if any) should update recursively by
-        passing the ``--recursive`` flag to ``git submodule update``.
-        If not specified, the default is on.
-
-      ``GIT_SHALLOW <bool>``
-        When this option is enabled, the ``git clone`` operation will be given
-        the ``--depth 1`` option. This performs a shallow clone, which avoids
-        downloading the whole history and instead retrieves just the commit
-        denoted by the ``GIT_TAG`` option.
-
-      ``GIT_PROGRESS <bool>``
-        When enabled, this option instructs the ``git clone`` operation to
-        report its progress by passing it the ``--progress`` option. Without
-        this option, the clone step for large projects may appear to make the
-        build stall, since nothing will be logged until the clone operation
-        finishes. While this option can be used to provide progress to prevent
-        the appearance of the build having stalled, it may also make the build
-        overly noisy if lots of external projects are used.
-
-      ``GIT_CONFIG <option1> [<option2>...]``
-        Specify a list of config options to pass to ``git clone``. Each option
-        listed will be transformed into its own ``--config <option>`` on the
-        ``git clone`` command line, with each option required to be in the
-        form ``key=value``.
-
-      ``GIT_REMOTE_UPDATE_STRATEGY <strategy>``
-        When ``GIT_TAG`` refers to a remote branch, this option can be used to
-        specify how the update step behaves.  The ``<strategy>`` must be one of
-        the following:
-
-        ``CHECKOUT``
-          Ignore the local branch and always checkout the branch specified by
-          ``GIT_TAG``.
-
-        ``REBASE``
-          Try to rebase the current branch to the one specified by ``GIT_TAG``.
-          If there are local uncommitted changes, they will be stashed first
-          and popped again after rebasing.  If rebasing or popping stashed
-          changes fail, abort the rebase and halt with an error.
-          When ``GIT_REMOTE_UPDATE_STRATEGY`` is not present, this is the
-          default strategy unless the default has been overridden with
-          ``CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY`` (see below).
-
-        ``REBASE_CHECKOUT``
-          Same as ``REBASE`` except if the rebase fails, an annotated tag will
-          be created at the original ``HEAD`` position from before the rebase
-          and then checkout ``GIT_TAG`` just like the ``CHECKOUT`` strategy.
-          The message stored on the annotated tag will give information about
-          what was attempted and the tag name will include a timestamp so that
-          each failed run will add a new tag.  This strategy ensures no changes
-          will be lost, but updates should always succeed if ``GIT_TAG`` refers
-          to a valid ref unless there are uncommitted changes that cannot be
-          popped successfully.
-
-        The variable ``CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY`` can be set to
-        override the default strategy.  This variable should not be set by a
-        project, it is intended for the user to set.  It is primarily intended
-        for use in continuous integration scripts to ensure that when history
-        is rewritten on a remote branch, the build doesn't end up with unintended
-        changes or failed builds resulting from conflicts during rebase operations.
-
-    *Subversion*
-      ``SVN_REPOSITORY <url>``
-        URL of the Subversion repository.
-
-      ``SVN_REVISION -r<rev>``
-        Revision to checkout from the Subversion repository.
-
-      ``SVN_USERNAME <username>``
-        Username for the Subversion checkout and update.
-
-      ``SVN_PASSWORD <password>``
-        Password for the Subversion checkout and update.
-
-      ``SVN_TRUST_CERT <bool>``
-        Specifies whether to trust the Subversion server site certificate. If
-        enabled, the ``--trust-server-cert`` option is passed to the ``svn``
-        checkout and update commands.
-
-    *Mercurial*
-      ``HG_REPOSITORY <url>``
-        URL of the mercurial repository.
-
-      ``HG_TAG <tag>``
-        Mercurial branch name, tag or commit id.
-
-    *CVS*
-      ``CVS_REPOSITORY <cvsroot>``
-        CVSROOT of the CVS repository.
-
-      ``CVS_MODULE <mod>``
-        Module to checkout from the CVS repository.
-
-      ``CVS_TAG <tag>``
-        Tag to checkout from the CVS repository.
-
-  **Update/Patch Step Options:**
-    Whenever CMake is re-run, by default the external project's sources will be
-    updated if the download method supports updates (e.g. a git repository
-    would be checked if the ``GIT_TAG`` does not refer to a specific commit).
-
-    ``UPDATE_COMMAND <cmd>...``
-      Overrides the download method's update step with a custom command.
-      The command may use
-      :manual:`generator expressions <cmake-generator-expressions(7)>`.
-
-    ``UPDATE_DISCONNECTED <bool>``
-      When enabled, this option causes the update step to be skipped. It does
-      not, however, prevent the download step. The update step can still be
-      added as a step target (see :command:`ExternalProject_Add_StepTargets`)
-      and called manually. This is useful if you want to allow developers to
-      build the project when disconnected from the network (the network may
-      still be needed for the download step though).
-
-      When this option is present, it is generally advisable to make the value
-      a cache variable under the developer's control rather than hard-coding
-      it. If this option is not present, the default value is taken from the
-      ``EP_UPDATE_DISCONNECTED`` directory property. If that is also not
-      defined, updates are performed as normal. The ``EP_UPDATE_DISCONNECTED``
-      directory property is intended as a convenience for controlling the
-      ``UPDATE_DISCONNECTED`` behavior for an entire section of a project's
-      directory hierarchy and may be a more convenient method of giving
-      developers control over whether or not to perform updates (assuming the
-      project also provides a cache variable or some other convenient method
-      for setting the directory property).
-
-    ``PATCH_COMMAND <cmd>...``
-      Specifies a custom command to patch the sources after an update. By
-      default, no patch command is defined. Note that it can be quite difficult
-      to define an appropriate patch command that performs robustly, especially
-      for download methods such as git where changing the ``GIT_TAG`` will not
-      discard changes from a previous patch, but the patch command will be
-      called again after updating to the new tag.
-
-  **Configure Step Options:**
-    The configure step is run after the download and update steps. By default,
-    the external project is assumed to be a CMake project, but this can be
-    overridden if required.
-
-    ``CONFIGURE_COMMAND <cmd>...``
-      The default configure command runs CMake with options based on the main
-      project. For non-CMake external projects, the ``CONFIGURE_COMMAND``
-      option must be used to override this behavior
-      (:manual:`generator expressions <cmake-generator-expressions(7)>` are
-      supported). For projects that require no configure step, specify this
-      option with an empty string as the command to execute.
-
-    ``CMAKE_COMMAND /.../cmake``
-      Specify an alternative cmake executable for the configure step (use an
-      absolute path). This is generally not recommended, since it is
-      usually desirable to use the same CMake version throughout the whole
-      build. This option is ignored if a custom configure command has been
-      specified with ``CONFIGURE_COMMAND``.
-
-    ``CMAKE_GENERATOR <gen>``
-      Override the CMake generator used for the configure step. Without this
-      option, the same generator as the main build will be used. This option is
-      ignored if a custom configure command has been specified with the
-      ``CONFIGURE_COMMAND`` option.
-
-    ``CMAKE_GENERATOR_PLATFORM <platform>``
-      Pass a generator-specific platform name to the CMake command (see
-      :variable:`CMAKE_GENERATOR_PLATFORM`). It is an error to provide this
-      option without the ``CMAKE_GENERATOR`` option.
-
-    ``CMAKE_GENERATOR_TOOLSET <toolset>``
-      Pass a generator-specific toolset name to the CMake command (see
-      :variable:`CMAKE_GENERATOR_TOOLSET`). It is an error to provide this
-      option without the ``CMAKE_GENERATOR`` option.
-
-    ``CMAKE_GENERATOR_INSTANCE <instance>``
-      Pass a generator-specific instance selection to the CMake command (see
-      :variable:`CMAKE_GENERATOR_INSTANCE`). It is an error to provide this
-      option without the ``CMAKE_GENERATOR`` option.
-
-    ``CMAKE_ARGS <arg>...``
-      The specified arguments are passed to the ``cmake`` command line. They
-      can be any argument the ``cmake`` command understands, not just cache
-      values defined by ``-D...`` arguments (see also
-      :manual:`CMake Options <cmake(1)>`). In addition, arguments may use
-      :manual:`generator expressions <cmake-generator-expressions(7)>`.
-
-    ``CMAKE_CACHE_ARGS <arg>...``
-      This is an alternate way of specifying cache variables where command line
-      length issues may become a problem. The arguments are expected to be in
-      the form ``-Dvar:STRING=value``, which are then transformed into
-      CMake :command:`set` commands with the ``FORCE`` option used. These
-      ``set()`` commands are written to a pre-load script which is then applied
-      using the :manual:`cmake -C <cmake(1)>` command line option. Arguments
-      may use :manual:`generator expressions <cmake-generator-expressions(7)>`.
-
-    ``CMAKE_CACHE_DEFAULT_ARGS <arg>...``
-      This is the same as the ``CMAKE_CACHE_ARGS`` option except the ``set()``
-      commands do not include the ``FORCE`` keyword. This means the values act
-      as initial defaults only and will not override any variables already set
-      from a previous run. Use this option with care, as it can lead to
-      different behavior depending on whether the build starts from a fresh
-      build directory or re-uses previous build contents.
-
-      If the CMake generator is the ``Green Hills MULTI`` and not overridden then
-      the original project's settings for the GHS toolset and target system
-      customization cache variables are propagated into the external project.
-
-    ``SOURCE_SUBDIR <dir>``
-      When no ``CONFIGURE_COMMAND`` option is specified, the configure step
-      assumes the external project has a ``CMakeLists.txt`` file at the top of
-      its source tree (i.e. in ``SOURCE_DIR``). The ``SOURCE_SUBDIR`` option
-      can be used to point to an alternative directory within the source tree
-      to use as the top of the CMake source tree instead. This must be a
-      relative path and it will be interpreted as being relative to
-      ``SOURCE_DIR``.  When ``BUILD_IN_SOURCE 1`` is specified, the
-      ``BUILD_COMMAND`` is used to point to an alternative directory within the
-      source tree.
-
-  **Build Step Options:**
-    If the configure step assumed the external project uses CMake as its build
-    system, the build step will also. Otherwise, the build step will assume a
-    Makefile-based build and simply run ``make`` with no arguments as the
-    default build step. This can be overridden with custom build commands if
-    required.
-
-    ``BUILD_COMMAND <cmd>...``
-      Overrides the default build command
-      (:manual:`generator expressions <cmake-generator-expressions(7)>` are
-      supported). If this option is not given, the default build command will
-      be chosen to integrate with the main build in the most appropriate way
-      (e.g. using recursive ``make`` for Makefile generators or
-      ``cmake --build`` if the project uses a CMake build). This option can be
-      specified with an empty string as the command to make the build step do
-      nothing.
-
-    ``BUILD_IN_SOURCE <bool>``
-      When this option is enabled, the build will be done directly within the
-      external project's source tree. This should generally be avoided, the use
-      of a separate build directory is usually preferred, but it can be useful
-      when the external project assumes an in-source build. The ``BINARY_DIR``
-      option should not be specified if building in-source.
-
-    ``BUILD_ALWAYS <bool>``
-      Enabling this option forces the build step to always be run. This can be
-      the easiest way to robustly ensure that the external project's own build
-      dependencies are evaluated rather than relying on the default
-      success timestamp-based method. This option is not normally needed unless
-      developers are expected to modify something the external project's build
-      depends on in a way that is not detectable via the step target
-      dependencies (e.g. ``SOURCE_DIR`` is used without a download method and
-      developers might modify the sources in ``SOURCE_DIR``).
-
-    ``BUILD_BYPRODUCTS <file>...``
-      Specifies files that will be generated by the build command but which
-      might or might not have their modification time updated by subsequent
-      builds. These ultimately get passed through as ``BYPRODUCTS`` to the
-      build step's own underlying call to :command:`add_custom_command`.
-
-  **Install Step Options:**
-    If the configure step assumed the external project uses CMake as its build
-    system, the install step will also. Otherwise, the install step will assume
-    a Makefile-based build and simply run ``make install`` as the default build
-    step. This can be overridden with custom install commands if required.
-
-    ``INSTALL_COMMAND <cmd>...``
-      The external project's own install step is invoked as part of the main
-      project's *build*. It is done after the external project's build step
-      and may be before or after the external project's test step (see the
-      ``TEST_BEFORE_INSTALL`` option below). The external project's install
-      rules are not part of the main project's install rules, so if anything
-      from the external project should be installed as part of the main build,
-      these need to be specified in the main build as additional
-      :command:`install` commands. The default install step builds the
-      ``install`` target of the external project, but this can be overridden
-      with a custom command using this option
-      (:manual:`generator expressions <cmake-generator-expressions(7)>` are
-      supported). Passing an empty string as the ``<cmd>`` makes the install
-      step do nothing.
-
-  **Test Step Options:**
-    The test step is only defined if at least one of the following ``TEST_...``
-    options are provided.
-
-    ``TEST_COMMAND <cmd>...``
-      Overrides the default test command
-      (:manual:`generator expressions <cmake-generator-expressions(7)>` are
-      supported). If this option is not given, the default behavior of the test
-      step is to build the external project's own ``test`` target. This option
-      can be specified with ``<cmd>`` as an empty string, which allows the test
-      step to still be defined, but it will do nothing. Do not specify any of
-      the other ``TEST_...`` options if providing an empty string as the test
-      command, but prefer to omit all ``TEST_...`` options altogether if the
-      test step target is not needed.
-
-    ``TEST_BEFORE_INSTALL <bool>``
-      When this option is enabled, the test step will be executed before the
-      install step. The default behavior is for the test step to run after the
-      install step.
-
-    ``TEST_AFTER_INSTALL <bool>``
-      This option is mainly useful as a way to indicate that the test step is
-      desired but all default behavior is sufficient. Specifying this option
-      with a boolean true value ensures the test step is defined and that it
-      comes after the install step. If both ``TEST_BEFORE_INSTALL`` and
-      ``TEST_AFTER_INSTALL`` are enabled, the latter is silently ignored.
-
-    ``TEST_EXCLUDE_FROM_MAIN <bool>``
-      If enabled, the main build's default ALL target will not depend on the
-      test step. This can be a useful way of ensuring the test step is defined
-      but only gets invoked when manually requested.
-
-  **Output Logging Options:**
-    Each of the following ``LOG_...`` options can be used to wrap the relevant
-    step in a script to capture its output to files. The log files will be
-    created in ``LOG_DIR`` if supplied or otherwise the ``STAMP_DIR``
-    directory with step-specific file names.
-
-    ``LOG_DOWNLOAD <bool>``
-      When enabled, the output of the download step is logged to files.
-
-    ``LOG_UPDATE <bool>``
-      When enabled, the output of the update step is logged to files.
-
-    ``LOG_PATCH <bool>``
-      When enabled, the output of the patch step is logged to files.
-
-    ``LOG_CONFIGURE <bool>``
-      When enabled, the output of the configure step is logged to files.
-
-    ``LOG_BUILD <bool>``
-      When enabled, the output of the build step is logged to files.
-
-    ``LOG_INSTALL <bool>``
-      When enabled, the output of the install step is logged to files.
-
-    ``LOG_TEST <bool>``
-      When enabled, the output of the test step is logged to files.
-
-    ``LOG_MERGED_STDOUTERR <bool>``
-      When enabled, stdout and stderr will be merged for any step whose
-      output is being logged to files.
-
-    ``LOG_OUTPUT_ON_FAILURE <bool>``
-      This option only has an effect if at least one of the other ``LOG_<step>``
-      options is enabled.  If an error occurs for a step which has logging to
-      file enabled, that step's output will be printed to the console if
-      ``LOG_OUTPUT_ON_FAILURE`` is set to true.  For cases where a large amount
-      of output is recorded, just the end of that output may be printed to the
-      console.
-
-  **Terminal Access Options:**
-    Steps can be given direct access to the terminal in some cases. Giving a
-    step access to the terminal may allow it to receive terminal input if
-    required, such as for authentication details not provided by other options.
-    With the :generator:`Ninja` generator, these options place the steps in the
-    ``console`` :prop_gbl:`job pool <JOB_POOLS>`. Each step can be given access
-    to the terminal individually via the following options:
-
-    ``USES_TERMINAL_DOWNLOAD <bool>``
-      Give the download step access to the terminal.
-
-    ``USES_TERMINAL_UPDATE <bool>``
-      Give the update step access to the terminal.
-
-    ``USES_TERMINAL_CONFIGURE <bool>``
-      Give the configure step access to the terminal.
-
-    ``USES_TERMINAL_BUILD <bool>``
-      Give the build step access to the terminal.
-
-    ``USES_TERMINAL_INSTALL <bool>``
-      Give the install step access to the terminal.
-
-    ``USES_TERMINAL_TEST <bool>``
-      Give the test step access to the terminal.
-
-  **Target Options:**
-    ``DEPENDS <targets>...``
-      Specify other targets on which the external project depends. The other
-      targets will be brought up to date before any of the external project's
-      steps are executed. Because the external project uses additional custom
-      targets internally for each step, the ``DEPENDS`` option is the most
-      convenient way to ensure all of those steps depend on the other targets.
-      Simply doing
-      :command:`add_dependencies(\<name\> \<targets\>) <add_dependencies>` will
-      not make any of the steps dependent on ``<targets>``.
-
-    ``EXCLUDE_FROM_ALL <bool>``
-      When enabled, this option excludes the external project from the default
-      ALL target of the main build.
-
-    ``STEP_TARGETS <step-target>...``
-      Generate custom targets for the specified steps. This is required if the
-      steps need to be triggered manually or if they need to be used as
-      dependencies of other targets. If this option is not specified, the
-      default value is taken from the ``EP_STEP_TARGETS`` directory property.
-      See :command:`ExternalProject_Add_Step` below for further discussion of
-      the effects of this option.
-
-    ``INDEPENDENT_STEP_TARGETS <step-target>...``
-      Generate custom targets for the specified steps and prevent these targets
-      from having the usual dependencies applied to them. If this option is not
-      specified, the default value is taken from the
-      ``EP_INDEPENDENT_STEP_TARGETS`` directory property. This option is mostly
-      useful for allowing individual steps to be driven independently, such as
-      for a CDash setup where each step should be initiated and reported
-      individually rather than as one whole build. See
-      :command:`ExternalProject_Add_Step` below for further discussion of the
-      effects of this option.
-
-  **Miscellaneous Options:**
-    ``LIST_SEPARATOR <sep>``
-      For any of the various ``..._COMMAND`` options, replace ``;`` with
-      ``<sep>`` in the specified command lines. This can be useful where list
-      variables may be given in commands where they should end up as
-      space-separated arguments (``<sep>`` would be a single space character
-      string in this case).
-
-    ``COMMAND <cmd>...``
-      Any of the other ``..._COMMAND`` options can have additional commands
-      appended to them by following them with as many ``COMMAND ...`` options
-      as needed
-      (:manual:`generator expressions <cmake-generator-expressions(7)>` are
-      supported). For example:
-
-      .. code-block:: cmake
-
-        ExternalProject_Add(example
-          ... # Download options, etc.
-          BUILD_COMMAND ${CMAKE_COMMAND} -E echo "Starting $<CONFIG> build"
-          COMMAND       ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG>
-          COMMAND       ${CMAKE_COMMAND} -E echo "$<CONFIG> build complete"
-        )
-
-  It should also be noted that each build step is created via a call to
-  :command:`ExternalProject_Add_Step`. See that command's documentation for the
-  automatic substitutions that are supported for some options.
-
-Obtaining Project Properties
-""""""""""""""""""""""""""""
-
-.. command:: ExternalProject_Get_Property
-
-  The ``ExternalProject_Get_Property()`` function retrieves external project
-  target properties:
-
-  .. code-block:: cmake
-
-    ExternalProject_Get_Property(<name> <prop1> [<prop2>...])
-
-  The function stores property values in variables of the same name. Property
-  names correspond to the keyword argument names of ``ExternalProject_Add()``.
-  For example, the source directory might be retrieved like so:
-
-  .. code-block:: cmake
-
-    ExternalProject_Get_property(myExtProj SOURCE_DIR)
-    message("Source dir of myExtProj = ${SOURCE_DIR}")
-
-Explicit Step Management
-""""""""""""""""""""""""
-
-The ``ExternalProject_Add()`` function on its own is often sufficient for
-incorporating an external project into the main build. Certain scenarios
-require additional work to implement desired behavior, such as adding in a
-custom step or making steps available as manually triggerable targets. The
-``ExternalProject_Add_Step()``, ``ExternalProject_Add_StepTargets()`` and
-``ExternalProject_Add_StepDependencies`` functions provide the lower level
-control needed to implement such step-level capabilities.
-
-.. command:: ExternalProject_Add_Step
-
-  The ``ExternalProject_Add_Step()`` function specifies an additional custom
-  step for an external project defined by an earlier call to
-  :command:`ExternalProject_Add`:
-
-  .. code-block:: cmake
-
-    ExternalProject_Add_Step(<name> <step> [<option>...])
-
-  ``<name>`` is the same as the name passed to the original call to
-  :command:`ExternalProject_Add`. The specified ``<step>`` must not be one of
-  the pre-defined steps (``mkdir``, ``download``, ``update``, ``skip-update``,
-  ``patch``, ``configure``, ``build``, ``install`` or ``test``). The supported
-  options are:
-
-  ``COMMAND <cmd>...``
-    The command line to be executed by this custom step
-    (:manual:`generator expressions <cmake-generator-expressions(7)>` are
-    supported). This option can be repeated multiple times to specify multiple
-    commands to be executed in order.
-
-  ``COMMENT "<text>..."``
-    Text to be printed when the custom step executes.
-
-  ``DEPENDEES <step>...``
-    Other steps (custom or pre-defined) on which this step depends.
-
-  ``DEPENDERS <step>...``
-    Other steps (custom or pre-defined) that depend on this new custom step.
-
-  ``DEPENDS <file>...``
-    Files on which this custom step depends.
-
-  ``BYPRODUCTS <file>...``
-    Files that will be generated by this custom step but which might or might
-    not have their modification time updated by subsequent builds. This list of
-    files will ultimately be passed through as the ``BYPRODUCTS`` option to the
-    :command:`add_custom_command` used to implement the custom step internally.
-
-  ``ALWAYS <bool>``
-    When enabled, this option specifies that the custom step should always be
-    run (i.e. that it is always considered out of date).
-
-  ``EXCLUDE_FROM_MAIN <bool>``
-    When enabled, this option specifies that the external project's main target
-    does not depend on the custom step.
-
-  ``WORKING_DIRECTORY <dir>``
-    Specifies the working directory to set before running the custom step's
-    command. If this option is not specified, the directory will be the value
-    of the :variable:`CMAKE_CURRENT_BINARY_DIR` at the point where
-    ``ExternalProject_Add_Step()`` was called.
-
-  ``LOG <bool>``
-    If set, this causes the output from the custom step to be captured to files
-    in the external project's ``LOG_DIR`` if supplied or ``STAMP_DIR``.
-
-  ``USES_TERMINAL <bool>``
-    If enabled, this gives the custom step direct access to the terminal if
-    possible.
-
-  The command line, comment, working directory and byproducts of every
-  standard and custom step are processed to replace the tokens
-  ``<SOURCE_DIR>``, ``<SOURCE_SUBDIR>``, ``<BINARY_DIR>``, ``<INSTALL_DIR>``
-  ``<TMP_DIR>``, ``<DOWNLOAD_DIR>`` and ``<DOWNLOADED_FILE>`` with their
-  corresponding property values defined in the original call to
-  :command:`ExternalProject_Add`.
-
-.. command:: ExternalProject_Add_StepTargets
-
-  The ``ExternalProject_Add_StepTargets()`` function generates targets for the
-  steps listed. The name of each created target will be of the form
-  ``<name>-<step>``:
-
-  .. code-block:: cmake
-
-    ExternalProject_Add_StepTargets(<name> [NO_DEPENDS] <step1> [<step2>...])
-
-  Creating a target for a step allows it to be used as a dependency of another
-  target or to be triggered manually. Having targets for specific steps also
-  allows them to be driven independently of each other by specifying targets on
-  build command lines. For example, you may be submitting to a sub-project
-  based dashboard where you want to drive the configure portion of the build,
-  then submit to the dashboard, followed by the build portion, followed
-  by tests. If you invoke a custom target that depends on a step halfway
-  through the step dependency chain, then all the previous steps will also run
-  to ensure everything is up to date.
-
-  If the ``NO_DEPENDS`` option is specified, the step target will not depend on
-  the dependencies of the external project (i.e. on any dependencies of the
-  ``<name>`` custom target created by :command:`ExternalProject_Add`). This is
-  usually safe for the ``download``, ``update`` and ``patch`` steps, since they
-  do not typically require that the dependencies are updated and built. Using
-  ``NO_DEPENDS`` for any of the other pre-defined steps, however, may break
-  parallel builds. Only use ``NO_DEPENDS`` where it is certain that the named
-  steps genuinely do not have dependencies. For custom steps, consider whether
-  or not the custom commands require the dependencies to be configured, built
-  and installed.
-
-  Internally, :command:`ExternalProject_Add` calls
-  :command:`ExternalProject_Add_Step` to create each step. If any
-  ``STEP_TARGETS`` or ``INDEPENDENT_STEP_TARGETS`` were specified, then
-  ``ExternalProject_Add_StepTargets()`` will also be called after
-  :command:`ExternalProject_Add_Step`. ``INDEPENDENT_STEP_TARGETS`` have the
-  ``NO_DEPENDS`` option set, whereas ``STEP_TARGETS`` do not. Other than that,
-  the two options result in ``ExternalProject_Add_StepTargets()`` being called
-  in the same way. Even if a step is not mentioned in either of those two
-  options, ``ExternalProject_Add_StepTargets()`` can still be called later to
-  manually define a target for the step.
-
-  The ``STEP_TARGETS`` and ``INDEPENDENT_STEP_TARGETS`` options for
-  :command:`ExternalProject_Add` are generally the easiest way to ensure
-  targets are created for specific steps of interest. For custom steps,
-  ``ExternalProject_Add_StepTargets()`` must be called explicitly if a target
-  should also be created for that custom step. An alternative to these two
-  options is to populate the ``EP_STEP_TARGETS`` and
-  ``EP_INDEPENDENT_STEP_TARGETS`` directory properties. These act as defaults
-  for the step target options and can save having to repeatedly specify the
-  same set of step targets when multiple external projects are being defined.
-
-.. command:: ExternalProject_Add_StepDependencies
-
-  The ``ExternalProject_Add_StepDependencies()`` function can be used to add
-  dependencies to a step. The dependencies added must be targets CMake already
-  knows about (these can be ordinary executable or library targets, custom
-  targets or even step targets of another external project):
-
-  .. code-block:: cmake
-
-    ExternalProject_Add_StepDependencies(<name> <step> <target1> [<target2>...])
-
-  This function takes care to set both target and file level dependencies and
-  will ensure that parallel builds will not break. It should be used instead of
-  :command:`add_dependencies` whenever adding a dependency for some of the step
-  targets generated by the ``ExternalProject`` module.
-
-Examples
-^^^^^^^^
-
-The following example shows how to download and build a hypothetical project
-called *FooBar* from github:
-
-.. code-block:: cmake
-
-  include(ExternalProject)
-  ExternalProject_Add(foobar
-    GIT_REPOSITORY    git@github.com:FooCo/FooBar.git
-    GIT_TAG           origin/release/1.2.3
-  )
-
-For the sake of the example, also define a second hypothetical external project
-called *SecretSauce*, which is downloaded from a web server. Two URLs are given
-to take advantage of a faster internal network if available, with a fallback to
-a slower external server. The project is a typical ``Makefile`` project with no
-configure step, so some of the default commands are overridden. The build is
-only required to build the *sauce* target:
-
-.. code-block:: cmake
-
-  find_program(MAKE_EXE NAMES gmake nmake make)
-  ExternalProject_Add(secretsauce
-    URL               http://intranet.somecompany.com/artifacts/sauce-2.7.tgz
-                      https://www.somecompany.com/downloads/sauce-2.7.zip
-    URL_HASH          MD5=d41d8cd98f00b204e9800998ecf8427e
-    CONFIGURE_COMMAND ""
-    BUILD_COMMAND     ${MAKE_EXE} sauce
-  )
-
-Suppose the build step of ``secretsauce`` requires that ``foobar`` must already
-be built. This could be enforced like so:
-
-.. code-block:: cmake
-
-  ExternalProject_Add_StepDependencies(secretsauce build foobar)
-
-Another alternative would be to create a custom target for ``foobar``'s build
-step and make ``secretsauce`` depend on that rather than the whole ``foobar``
-project. This would mean ``foobar`` only needs to be built, it doesn't need to
-run its install or test steps before ``secretsauce`` can be built. The
-dependency can also be defined along with the ``secretsauce`` project:
-
-.. code-block:: cmake
-
-  ExternalProject_Add_StepTargets(foobar build)
-  ExternalProject_Add(secretsauce
-    URL               http://intranet.somecompany.com/artifacts/sauce-2.7.tgz
-                      https://www.somecompany.com/downloads/sauce-2.7.zip
-    URL_HASH          MD5=d41d8cd98f00b204e9800998ecf8427e
-    CONFIGURE_COMMAND ""
-    BUILD_COMMAND     ${MAKE_EXE} sauce
-    DEPENDS           foobar-build
-  )
-
-Instead of calling :command:`ExternalProject_Add_StepTargets`, the target could
-be defined along with the ``foobar`` project itself:
-
-.. code-block:: cmake
-
-  ExternalProject_Add(foobar
-    GIT_REPOSITORY git@github.com:FooCo/FooBar.git
-    GIT_TAG        origin/release/1.2.3
-    STEP_TARGETS   build
-  )
-
-If many external projects should have the same set of step targets, setting a
-directory property may be more convenient. The ``build`` step target could be
-created automatically by setting the ``EP_STEP_TARGETS`` directory property
-before creating the external projects with :command:`ExternalProject_Add`:
-
-.. code-block:: cmake
-
-  set_property(DIRECTORY PROPERTY EP_STEP_TARGETS build)
-
-Lastly, suppose that ``secretsauce`` provides a script called ``makedoc`` which
-can be used to generate its own documentation. Further suppose that the script
-expects the output directory to be provided as the only parameter and that it
-should be run from the ``secretsauce`` source directory. A custom step and a
-custom target to trigger the script can be defined like so:
-
-.. code-block:: cmake
-
-  ExternalProject_Add_Step(secretsauce docs
-    COMMAND           <SOURCE_DIR>/makedoc <BINARY_DIR>
-    WORKING_DIRECTORY <SOURCE_DIR>
-    COMMENT           "Building secretsauce docs"
-    ALWAYS            TRUE
-    EXCLUDE_FROM_MAIN TRUE
-  )
-  ExternalProject_Add_StepTargets(secretsauce docs)
-
-The custom step could then be triggered from the main build like so::
-
-  cmake --build . --target secretsauce-docs
-
-#]=======================================================================]
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced
-cmake_policy(SET CMP0057 NEW) # if() supports IN_LIST
-
-# Pre-compute a regex to match documented keywords for each command.
-math(EXPR _ep_documentation_line_count "${CMAKE_CURRENT_LIST_LINE} - 4")
-file(STRINGS "${CMAKE_CURRENT_LIST_FILE}" lines
-     LIMIT_COUNT ${_ep_documentation_line_count}
-     REGEX "^\\.\\. command:: [A-Za-z0-9_]+|^ +``[A-Z0-9_]+ [^`]*``$")
-foreach(line IN LISTS lines)
-  if("${line}" MATCHES "^\\.\\. command:: ([A-Za-z0-9_]+)")
-    if(_ep_func)
-      string(APPEND _ep_keywords_${_ep_func} ")$")
-    endif()
-    set(_ep_func "${CMAKE_MATCH_1}")
-    #message("function [${_ep_func}]")
-    set(_ep_keywords_${_ep_func} "^(")
-    set(_ep_keyword_sep)
-  elseif("${line}" MATCHES "^ +``([A-Z0-9_]+) [^`]*``$")
-    set(_ep_key "${CMAKE_MATCH_1}")
-    # COMMAND should never be included as a keyword,
-    # for ExternalProject_Add(), as it is treated as a
-    # special case by argument parsing as an extension
-    # of a previous ..._COMMAND
-    if("x${_ep_key}x" STREQUAL "xCOMMANDx" AND
-       "x${_ep_func}x" STREQUAL "xExternalProject_Addx")
-      continue()
-    endif()
-    #message("  keyword [${_ep_key}]")
-    string(APPEND _ep_keywords_${_ep_func}
-      "${_ep_keyword_sep}${_ep_key}")
-    set(_ep_keyword_sep "|")
-  endif()
-endforeach()
-if(_ep_func)
-  string(APPEND _ep_keywords_${_ep_func} ")$")
-endif()
-
-# Save regex matching supported hash algorithm names.
-set(_ep_hash_algos "MD5|SHA1|SHA224|SHA256|SHA384|SHA512|SHA3_224|SHA3_256|SHA3_384|SHA3_512")
-set(_ep_hash_regex "^(${_ep_hash_algos})=([0-9A-Fa-f]+)$")
-
-set(_ExternalProject_SELF "${CMAKE_CURRENT_LIST_FILE}")
-get_filename_component(_ExternalProject_SELF_DIR "${_ExternalProject_SELF}" PATH)
-
-function(_ep_parse_arguments f name ns args)
-  # Transfer the arguments to this function into target properties for the
-  # new custom target we just added so that we can set up all the build steps
-  # correctly based on target properties.
-  #
-  # We loop through ARGN and consider the namespace starting with an
-  # upper-case letter followed by at least two more upper-case letters,
-  # numbers or underscores to be keywords.
-
-  if(NOT DEFINED _ExternalProject_SELF)
-    message(FATAL_ERROR "error: ExternalProject module must be explicitly included before using ${f} function")
-  endif()
-
-  set(key)
-
-  foreach(arg IN LISTS args)
-    set(is_value 1)
-
-    if(arg MATCHES "^[A-Z][A-Z0-9_][A-Z0-9_]+$" AND
-        NOT (("x${arg}x" STREQUAL "x${key}x") AND ("x${key}x" STREQUAL "xCOMMANDx")) AND
-        NOT arg MATCHES "^(TRUE|FALSE)$")
-      if(_ep_keywords_${f} AND arg MATCHES "${_ep_keywords_${f}}")
-        set(is_value 0)
-      endif()
-    endif()
-
-    if(is_value)
-      if(key)
-        # Value
-        if(NOT arg STREQUAL "")
-          set_property(TARGET ${name} APPEND PROPERTY ${ns}${key} "${arg}")
-        else()
-          get_property(have_key TARGET ${name} PROPERTY ${ns}${key} SET)
-          if(have_key)
-            get_property(value TARGET ${name} PROPERTY ${ns}${key})
-            set_property(TARGET ${name} PROPERTY ${ns}${key} "${value};${arg}")
-          else()
-            set_property(TARGET ${name} PROPERTY ${ns}${key} "${arg}")
-          endif()
-        endif()
-      else()
-        # Missing Keyword
-        message(AUTHOR_WARNING "value '${arg}' with no previous keyword in ${f}")
-      endif()
-    else()
-      set(key "${arg}")
-      if(key MATCHES GIT)
-       get_property(have_key TARGET ${name} PROPERTY ${ns}${key} SET)
-      endif()
-    endif()
-  endforeach()
-endfunction()
-
-
-define_property(DIRECTORY PROPERTY "EP_BASE" INHERITED
-  BRIEF_DOCS "Base directory for External Project storage."
-  FULL_DOCS
-  "See documentation of the ExternalProject_Add() function in the "
-  "ExternalProject module."
-  )
-
-define_property(DIRECTORY PROPERTY "EP_PREFIX" INHERITED
-  BRIEF_DOCS "Top prefix for External Project storage."
-  FULL_DOCS
-  "See documentation of the ExternalProject_Add() function in the "
-  "ExternalProject module."
-  )
-
-define_property(DIRECTORY PROPERTY "EP_STEP_TARGETS" INHERITED
-  BRIEF_DOCS
-  "List of ExternalProject steps that automatically get corresponding targets"
-  FULL_DOCS
-  "These targets will be dependent on the main target dependencies. "
-  "See documentation of the ExternalProject_Add_StepTargets() function in the "
-  "ExternalProject module."
-  )
-
-define_property(DIRECTORY PROPERTY "EP_INDEPENDENT_STEP_TARGETS" INHERITED
-  BRIEF_DOCS
-  "List of ExternalProject steps that automatically get corresponding targets"
-  FULL_DOCS
-  "These targets will not be dependent on the main target dependencies. "
-  "See documentation of the ExternalProject_Add_StepTargets() function in the "
-  "ExternalProject module."
-  )
-
-define_property(DIRECTORY PROPERTY "EP_UPDATE_DISCONNECTED" INHERITED
-  BRIEF_DOCS "Never update automatically from the remote repo."
-  FULL_DOCS
-  "See documentation of the ExternalProject_Add() function in the "
-  "ExternalProject module."
-  )
-
-function(_ep_write_gitclone_script script_filename source_dir git_EXECUTABLE git_repository git_tag git_remote_name init_submodules git_submodules_recurse git_submodules git_shallow git_progress git_config src_name work_dir gitclone_infofile gitclone_stampfile tls_verify)
-  if(NOT GIT_VERSION_STRING VERSION_LESS 1.8.5)
-    # Use `git checkout <tree-ish> --` to avoid ambiguity with a local path.
-    set(git_checkout_explicit-- "--")
-  else()
-    # Use `git checkout <branch>` even though this risks ambiguity with a
-    # local path.  Unfortunately we cannot use `git checkout <tree-ish> --`
-    # because that will not search for remote branch names, a common use case.
-    set(git_checkout_explicit-- "")
-  endif()
-  if("${git_tag}" STREQUAL "")
-    message(FATAL_ERROR "Tag for git checkout should not be empty.")
-  endif()
-
-  if(GIT_VERSION_STRING VERSION_LESS 2.20 OR 2.21 VERSION_LESS_EQUAL GIT_VERSION_STRING)
-    set(git_clone_options "--no-checkout")
-  else()
-    set(git_clone_options)
-  endif()
-  if(git_shallow)
-    if(NOT GIT_VERSION_STRING VERSION_LESS 1.7.10)
-      list(APPEND git_clone_options "--depth 1 --no-single-branch")
-    else()
-      list(APPEND git_clone_options "--depth 1")
-    endif()
-  endif()
-  if(git_progress)
-    list(APPEND git_clone_options --progress)
-  endif()
-  foreach(config IN LISTS git_config)
-    list(APPEND git_clone_options --config \"${config}\")
-  endforeach()
-  if(NOT ${git_remote_name} STREQUAL "origin")
-    list(APPEND git_clone_options --origin \"${git_remote_name}\")
-  endif()
-
-  string (REPLACE ";" " " git_clone_options "${git_clone_options}")
-
-  set(git_options)
-  # disable cert checking if explicitly told not to do it
-  if(NOT "x${tls_verify}" STREQUAL "x" AND NOT tls_verify)
-    set(git_options
-      -c http.sslVerify=false)
-  endif()
-  string (REPLACE ";" " " git_options "${git_options}")
-
-  file(WRITE ${script_filename}
-"
-if(NOT \"${gitclone_infofile}\" IS_NEWER_THAN \"${gitclone_stampfile}\")
-  message(STATUS \"Avoiding repeated git clone, stamp file is up to date: '${gitclone_stampfile}'\")
-  return()
-endif()
-
-execute_process(
-  COMMAND \${CMAKE_COMMAND} -E rm -rf \"${source_dir}\"
-  RESULT_VARIABLE error_code
-  )
-if(error_code)
-  message(FATAL_ERROR \"Failed to remove directory: '${source_dir}'\")
-endif()
-
-# try the clone 3 times in case there is an odd git clone issue
-set(error_code 1)
-set(number_of_tries 0)
-while(error_code AND number_of_tries LESS 3)
-  execute_process(
-    COMMAND \"${git_EXECUTABLE}\" ${git_options} clone ${git_clone_options} \"${git_repository}\" \"${src_name}\"
-    WORKING_DIRECTORY \"${work_dir}\"
-    RESULT_VARIABLE error_code
-    )
-  math(EXPR number_of_tries \"\${number_of_tries} + 1\")
-endwhile()
-if(number_of_tries GREATER 1)
-  message(STATUS \"Had to git clone more than once:
-          \${number_of_tries} times.\")
-endif()
-if(error_code)
-  message(FATAL_ERROR \"Failed to clone repository: '${git_repository}'\")
-endif()
-
-execute_process(
-  COMMAND \"${git_EXECUTABLE}\" ${git_options} checkout ${git_tag} ${git_checkout_explicit--}
-  WORKING_DIRECTORY \"${work_dir}/${src_name}\"
-  RESULT_VARIABLE error_code
-  )
-if(error_code)
-  message(FATAL_ERROR \"Failed to checkout tag: '${git_tag}'\")
-endif()
-
-set(init_submodules ${init_submodules})
-if(init_submodules)
-  execute_process(
-    COMMAND \"${git_EXECUTABLE}\" ${git_options} submodule update ${git_submodules_recurse} --init ${git_submodules}
-    WORKING_DIRECTORY \"${work_dir}/${src_name}\"
-    RESULT_VARIABLE error_code
-    )
-endif()
-if(error_code)
-  message(FATAL_ERROR \"Failed to update submodules in: '${work_dir}/${src_name}'\")
-endif()
-
-# Complete success, update the script-last-run stamp file:
-#
-execute_process(
-  COMMAND \${CMAKE_COMMAND} -E copy
-    \"${gitclone_infofile}\"
-    \"${gitclone_stampfile}\"
-  RESULT_VARIABLE error_code
-  )
-if(error_code)
-  message(FATAL_ERROR \"Failed to copy script-last-run stamp file: '${gitclone_stampfile}'\")
-endif()
-
-"
-)
-
-endfunction()
-
-function(_ep_write_hgclone_script script_filename source_dir hg_EXECUTABLE hg_repository hg_tag src_name work_dir hgclone_infofile hgclone_stampfile)
-  if("${hg_tag}" STREQUAL "")
-    message(FATAL_ERROR "Tag for hg checkout should not be empty.")
-  endif()
-  file(WRITE ${script_filename}
-"
-if(NOT \"${hgclone_infofile}\" IS_NEWER_THAN \"${hgclone_stampfile}\")
-  message(STATUS \"Avoiding repeated hg clone, stamp file is up to date: '${hgclone_stampfile}'\")
-  return()
-endif()
-
-execute_process(
-  COMMAND \${CMAKE_COMMAND} -E rm -rf \"${source_dir}\"
-  RESULT_VARIABLE error_code
-  )
-if(error_code)
-  message(FATAL_ERROR \"Failed to remove directory: '${source_dir}'\")
-endif()
-
-execute_process(
-  COMMAND \"${hg_EXECUTABLE}\" clone -U \"${hg_repository}\" \"${src_name}\"
-  WORKING_DIRECTORY \"${work_dir}\"
-  RESULT_VARIABLE error_code
-  )
-if(error_code)
-  message(FATAL_ERROR \"Failed to clone repository: '${hg_repository}'\")
-endif()
-
-execute_process(
-  COMMAND \"${hg_EXECUTABLE}\" update ${hg_tag}
-  WORKING_DIRECTORY \"${work_dir}/${src_name}\"
-  RESULT_VARIABLE error_code
-  )
-if(error_code)
-  message(FATAL_ERROR \"Failed to checkout tag: '${hg_tag}'\")
-endif()
-
-# Complete success, update the script-last-run stamp file:
-#
-execute_process(
-  COMMAND \${CMAKE_COMMAND} -E copy
-    \"${hgclone_infofile}\"
-    \"${hgclone_stampfile}\"
-  RESULT_VARIABLE error_code
-  )
-if(error_code)
-  message(FATAL_ERROR \"Failed to copy script-last-run stamp file: '${hgclone_stampfile}'\")
-endif()
-
-"
-)
-
-endfunction()
-
-
-function(_ep_write_gitupdate_script script_filename git_EXECUTABLE git_tag git_remote_name init_submodules git_submodules_recurse git_submodules git_repository work_dir git_update_strategy)
-  if("${git_tag}" STREQUAL "")
-    message(FATAL_ERROR "Tag for git checkout should not be empty.")
-  endif()
-  if(NOT GIT_VERSION_STRING VERSION_LESS 1.7.6)
-    set(git_stash_save_options --all --quiet)
-  else()
-    set(git_stash_save_options --quiet)
-  endif()
-
-  configure_file(
-      "${_ExternalProject_SELF_DIR}/ExternalProject-gitupdate.cmake.in"
-      "${script_filename}"
-      @ONLY
-  )
-endfunction()
-
-function(_ep_write_downloadfile_script script_filename REMOTE LOCAL timeout no_progress hash tls_verify tls_cainfo userpwd http_headers netrc netrc_file)
-  if(timeout)
-    set(TIMEOUT_ARGS TIMEOUT ${timeout})
-    set(TIMEOUT_MSG "${timeout} seconds")
-  else()
-    set(TIMEOUT_ARGS "# no TIMEOUT")
-    set(TIMEOUT_MSG "none")
-  endif()
-
-  if(no_progress)
-    set(SHOW_PROGRESS "")
-  else()
-    set(SHOW_PROGRESS "SHOW_PROGRESS")
-  endif()
-
-  if("${hash}" MATCHES "${_ep_hash_regex}")
-    set(ALGO "${CMAKE_MATCH_1}")
-    string(TOLOWER "${CMAKE_MATCH_2}" EXPECT_VALUE)
-  else()
-    set(ALGO "")
-    set(EXPECT_VALUE "")
-  endif()
-
-  set(TLS_VERIFY_CODE "")
-  set(TLS_CAINFO_CODE "")
-  set(NETRC_CODE "")
-  set(NETRC_FILE_CODE "")
-
-  # check for curl globals in the project
-  if(DEFINED CMAKE_TLS_VERIFY)
-    set(TLS_VERIFY_CODE "set(CMAKE_TLS_VERIFY ${CMAKE_TLS_VERIFY})")
-  endif()
-  if(DEFINED CMAKE_TLS_CAINFO)
-    set(TLS_CAINFO_CODE "set(CMAKE_TLS_CAINFO \"${CMAKE_TLS_CAINFO}\")")
-  endif()
-  if(DEFINED CMAKE_NETRC)
-    set(NETRC_CODE "set(CMAKE_NETRC \"${CMAKE_NETRC}\")")
-  endif()
-  if(DEFINED CMAKE_NETRC_FILE)
-    set(NETRC_FILE_CODE "set(CMAKE_NETRC_FILE \"${CMAKE_NETRC_FILE}\")")
-  endif()
-
-  # now check for curl locals so that the local values
-  # will override the globals
-
-  # check for tls_verify argument
-  string(LENGTH "${tls_verify}" tls_verify_len)
-  if(tls_verify_len GREATER 0)
-    set(TLS_VERIFY_CODE "set(CMAKE_TLS_VERIFY ${tls_verify})")
-  endif()
-  # check for tls_cainfo argument
-  string(LENGTH "${tls_cainfo}" tls_cainfo_len)
-  if(tls_cainfo_len GREATER 0)
-    set(TLS_CAINFO_CODE "set(CMAKE_TLS_CAINFO \"${tls_cainfo}\")")
-  endif()
-  # check for netrc argument
-  string(LENGTH "${netrc}" netrc_len)
-  if(netrc_len GREATER 0)
-    set(NETRC_CODE "set(CMAKE_NETRC \"${netrc}\")")
-  endif()
-  # check for netrc_file argument
-  string(LENGTH "${netrc_file}" netrc_file_len)
-  if(netrc_file_len GREATER 0)
-    set(NETRC_FILE_CODE "set(CMAKE_NETRC_FILE \"${netrc_file}\")")
-  endif()
-
-  if(userpwd STREQUAL ":")
-    set(USERPWD_ARGS)
-  else()
-    set(USERPWD_ARGS USERPWD "${userpwd}")
-  endif()
-
-  set(HTTP_HEADERS_ARGS "")
-  if(NOT http_headers STREQUAL "")
-    foreach(header ${http_headers})
-      set(
-          HTTP_HEADERS_ARGS
-          "HTTPHEADER \"${header}\"\n        ${HTTP_HEADERS_ARGS}"
-      )
-    endforeach()
-  endif()
-
-  # Used variables:
-  # * TLS_VERIFY_CODE
-  # * TLS_CAINFO_CODE
-  # * ALGO
-  # * EXPECT_VALUE
-  # * REMOTE
-  # * LOCAL
-  # * SHOW_PROGRESS
-  # * TIMEOUT_ARGS
-  # * TIMEOUT_MSG
-  # * USERPWD_ARGS
-  # * HTTP_HEADERS_ARGS
-  configure_file(
-      "${_ExternalProject_SELF_DIR}/ExternalProject-download.cmake.in"
-      "${script_filename}"
-      @ONLY
-  )
-endfunction()
-
-function(_ep_write_verifyfile_script script_filename LOCAL hash)
-  if("${hash}" MATCHES "${_ep_hash_regex}")
-    set(ALGO "${CMAKE_MATCH_1}")
-    string(TOLOWER "${CMAKE_MATCH_2}" EXPECT_VALUE)
-  else()
-    set(ALGO "")
-    set(EXPECT_VALUE "")
-  endif()
-
-  # Used variables:
-  # * ALGO
-  # * EXPECT_VALUE
-  # * LOCAL
-  configure_file(
-      "${_ExternalProject_SELF_DIR}/ExternalProject-verify.cmake.in"
-      "${script_filename}"
-      @ONLY
-  )
-endfunction()
-
-
-function(_ep_write_extractfile_script script_filename name filename directory)
-  set(args "")
-
-  if(filename MATCHES "(\\.|=)(7z|tar\\.bz2|tar\\.gz|tar\\.xz|tbz2|tgz|txz|zip)$")
-    set(args xfz)
-  endif()
-
-  if(filename MATCHES "(\\.|=)tar$")
-    set(args xf)
-  endif()
-
-  if(args STREQUAL "")
-    message(SEND_ERROR "error: do not know how to extract '${filename}' -- known types are .7z, .tar, .tar.bz2, .tar.gz, .tar.xz, .tbz2, .tgz, .txz and .zip")
-    return()
-  endif()
-
-  file(WRITE ${script_filename}
-"# Make file names absolute:
-#
-get_filename_component(filename \"${filename}\" ABSOLUTE)
-get_filename_component(directory \"${directory}\" ABSOLUTE)
-
-message(STATUS \"extracting...
-     src='\${filename}'
-     dst='\${directory}'\")
-
-if(NOT EXISTS \"\${filename}\")
-  message(FATAL_ERROR \"error: file to extract does not exist: '\${filename}'\")
-endif()
-
-# Prepare a space for extracting:
-#
-set(i 1234)
-while(EXISTS \"\${directory}/../ex-${name}\${i}\")
-  math(EXPR i \"\${i} + 1\")
-endwhile()
-set(ut_dir \"\${directory}/../ex-${name}\${i}\")
-file(MAKE_DIRECTORY \"\${ut_dir}\")
-
-# Extract it:
-#
-message(STATUS \"extracting... [tar ${args}]\")
-execute_process(COMMAND \${CMAKE_COMMAND} -E tar ${args} \${filename}
-  WORKING_DIRECTORY \${ut_dir}
-  RESULT_VARIABLE rv)
-
-if(NOT rv EQUAL 0)
-  message(STATUS \"extracting... [error clean up]\")
-  file(REMOVE_RECURSE \"\${ut_dir}\")
-  message(FATAL_ERROR \"error: extract of '\${filename}' failed\")
-endif()
-
-# Analyze what came out of the tar file:
-#
-message(STATUS \"extracting... [analysis]\")
-file(GLOB contents \"\${ut_dir}/*\")
-list(REMOVE_ITEM contents \"\${ut_dir}/.DS_Store\")
-list(LENGTH contents n)
-if(NOT n EQUAL 1 OR NOT IS_DIRECTORY \"\${contents}\")
-  set(contents \"\${ut_dir}\")
-endif()
-
-# Move \"the one\" directory to the final directory:
-#
-message(STATUS \"extracting... [rename]\")
-file(REMOVE_RECURSE \${directory})
-get_filename_component(contents \${contents} ABSOLUTE)
-file(RENAME \${contents} \${directory})
-
-# Clean up:
-#
-message(STATUS \"extracting... [clean up]\")
-file(REMOVE_RECURSE \"\${ut_dir}\")
-
-message(STATUS \"extracting... done\")
-"
-)
-
-endfunction()
-
-
-function(_ep_set_directories name)
-  get_property(prefix TARGET ${name} PROPERTY _EP_PREFIX)
-  if(NOT prefix)
-    get_property(prefix DIRECTORY PROPERTY EP_PREFIX)
-    if(NOT prefix)
-      get_property(base DIRECTORY PROPERTY EP_BASE)
-      if(NOT base)
-        set(prefix "${name}-prefix")
-      endif()
-    endif()
-  endif()
-  if(prefix)
-    set(tmp_default "${prefix}/tmp")
-    set(download_default "${prefix}/src")
-    set(source_default "${prefix}/src/${name}")
-    set(binary_default "${prefix}/src/${name}-build")
-    set(stamp_default "${prefix}/src/${name}-stamp")
-    set(install_default "${prefix}")
-  else()
-    set(tmp_default "${base}/tmp/${name}")
-    set(download_default "${base}/Download/${name}")
-    set(source_default "${base}/Source/${name}")
-    set(binary_default "${base}/Build/${name}")
-    set(stamp_default "${base}/Stamp/${name}")
-    set(install_default "${base}/Install/${name}")
-  endif()
-  get_property(build_in_source TARGET ${name} PROPERTY _EP_BUILD_IN_SOURCE)
-  if(build_in_source)
-    get_property(have_binary_dir TARGET ${name} PROPERTY _EP_BINARY_DIR SET)
-    if(have_binary_dir)
-      message(FATAL_ERROR
-        "External project ${name} has both BINARY_DIR and BUILD_IN_SOURCE!")
-    endif()
-  endif()
-  set(top "${CMAKE_CURRENT_BINARY_DIR}")
-
-  # Apply defaults and convert to absolute paths.
-  set(places stamp download source binary install tmp)
-  foreach(var ${places})
-    string(TOUPPER "${var}" VAR)
-    get_property(${var}_dir TARGET ${name} PROPERTY _EP_${VAR}_DIR)
-    if(NOT ${var}_dir)
-      set(${var}_dir "${${var}_default}")
-    endif()
-    if(NOT IS_ABSOLUTE "${${var}_dir}")
-      get_filename_component(${var}_dir "${top}/${${var}_dir}" ABSOLUTE)
-    endif()
-    set_property(TARGET ${name} PROPERTY _EP_${VAR}_DIR "${${var}_dir}")
-  endforeach()
-
-  # Special case for default log directory based on stamp directory.
-  get_property(log_dir TARGET ${name} PROPERTY _EP_LOG_DIR)
-  if(NOT log_dir)
-    get_property(log_dir TARGET ${name} PROPERTY _EP_STAMP_DIR)
-  endif()
-  if(NOT IS_ABSOLUTE "${log_dir}")
-    get_filename_component(log_dir "${top}/${log_dir}" ABSOLUTE)
-  endif()
-  set_property(TARGET ${name} PROPERTY _EP_LOG_DIR "${log_dir}")
-
-  get_property(source_subdir TARGET ${name} PROPERTY _EP_SOURCE_SUBDIR)
-  if(NOT source_subdir)
-    set_property(TARGET ${name} PROPERTY _EP_SOURCE_SUBDIR "")
-  elseif(IS_ABSOLUTE "${source_subdir}")
-    message(FATAL_ERROR
-      "External project ${name} has non-relative SOURCE_SUBDIR!")
-  else()
-    # Prefix with a slash so that when appended to the source directory, it
-    # behaves as expected.
-    set_property(TARGET ${name} PROPERTY _EP_SOURCE_SUBDIR "/${source_subdir}")
-  endif()
-  if(build_in_source)
-    get_property(source_dir TARGET ${name} PROPERTY _EP_SOURCE_DIR)
-    if(source_subdir)
-      set_property(TARGET ${name} PROPERTY _EP_BINARY_DIR "${source_dir}/${source_subdir}")
-    else()
-      set_property(TARGET ${name} PROPERTY _EP_BINARY_DIR "${source_dir}")
-    endif()
-  endif()
-
-  # Make the directories at CMake configure time *and* add a custom command
-  # to make them at build time. They need to exist at makefile generation
-  # time for Borland make and wmake so that CMake may generate makefiles
-  # with "cd C:\short\paths\with\no\spaces" commands in them.
-  #
-  # Additionally, the add_custom_command is still used in case somebody
-  # removes one of the necessary directories and tries to rebuild without
-  # re-running cmake.
-  foreach(var ${places})
-    string(TOUPPER "${var}" VAR)
-    get_property(dir TARGET ${name} PROPERTY _EP_${VAR}_DIR)
-    file(MAKE_DIRECTORY "${dir}")
-    if(NOT EXISTS "${dir}")
-      message(FATAL_ERROR "dir '${dir}' does not exist after file(MAKE_DIRECTORY)")
-    endif()
-  endforeach()
-endfunction()
-
-
-# IMPORTANT: this MUST be a macro and not a function because of the
-# in-place replacements that occur in each ${var}
-#
-macro(_ep_replace_location_tags target_name)
-  set(vars ${ARGN})
-  foreach(var ${vars})
-    if(${var})
-      foreach(dir SOURCE_DIR SOURCE_SUBDIR BINARY_DIR INSTALL_DIR TMP_DIR DOWNLOAD_DIR DOWNLOADED_FILE LOG_DIR)
-        get_property(val TARGET ${target_name} PROPERTY _EP_${dir})
-        string(REPLACE "<${dir}>" "${val}" ${var} "${${var}}")
-      endforeach()
-    endif()
-  endforeach()
-endmacro()
-
-
-function(_ep_command_line_to_initial_cache var args force)
-  set(script_initial_cache "")
-  set(regex "^([^:]+):([^=]+)=(.*)$")
-  set(setArg "")
-  set(forceArg "")
-  if(force)
-    set(forceArg "FORCE")
-  endif()
-  foreach(line ${args})
-    if("${line}" MATCHES "^-D(.*)")
-      set(line "${CMAKE_MATCH_1}")
-      if(NOT "${setArg}" STREQUAL "")
-        # This is required to build up lists in variables, or complete an entry
-        string(APPEND setArg "${accumulator}\" CACHE ${type} \"Initial cache\" ${forceArg})")
-        string(APPEND script_initial_cache "\n${setArg}")
-        set(accumulator "")
-        set(setArg "")
-      endif()
-      if("${line}" MATCHES "${regex}")
-        set(name "${CMAKE_MATCH_1}")
-        set(type "${CMAKE_MATCH_2}")
-        set(value "${CMAKE_MATCH_3}")
-        set(setArg "set(${name} \"${value}")
-      else()
-        message(WARNING "Line '${line}' does not match regex. Ignoring.")
-      endif()
-    else()
-      # Assume this is a list to append to the last var
-      string(APPEND accumulator ";${line}")
-    endif()
-  endforeach()
-  # Catch the final line of the args
-  if(NOT "${setArg}" STREQUAL "")
-    string(APPEND setArg "${accumulator}\" CACHE ${type} \"Initial cache\" ${forceArg})")
-    string(APPEND script_initial_cache "\n${setArg}")
-  endif()
-  set(${var} ${script_initial_cache} PARENT_SCOPE)
-endfunction()
-
-
-function(_ep_write_initial_cache target_name script_filename script_initial_cache)
-  # Write out values into an initial cache, that will be passed to CMake with -C
-  # Replace location tags.
-  _ep_replace_location_tags(${target_name} script_initial_cache)
-  _ep_replace_location_tags(${target_name} script_filename)
-  # Replace list separators.
-  get_property(sep TARGET ${target_name} PROPERTY _EP_LIST_SEPARATOR)
-  if(sep AND script_initial_cache)
-    string(REPLACE "${sep}" ";" script_initial_cache "${script_initial_cache}")
-  endif()
-  # Write out the initial cache file to the location specified.
-  file(GENERATE OUTPUT "${script_filename}" CONTENT "${script_initial_cache}")
-endfunction()
-
-
-function(ExternalProject_Get_Property name)
-  foreach(var ${ARGN})
-    string(TOUPPER "${var}" VAR)
-    get_property(is_set TARGET ${name} PROPERTY _EP_${VAR} SET)
-    if(NOT is_set)
-      message(FATAL_ERROR "External project \"${name}\" has no ${var}")
-    endif()
-    get_property(${var} TARGET ${name} PROPERTY _EP_${VAR})
-    set(${var} "${${var}}" PARENT_SCOPE)
-  endforeach()
-endfunction()
-
-
-function(_ep_get_configure_command_id name cfg_cmd_id_var)
-  get_target_property(cmd ${name} _EP_CONFIGURE_COMMAND)
-
-  if(cmd STREQUAL "")
-    # Explicit empty string means no configure step for this project
-    set(${cfg_cmd_id_var} "none" PARENT_SCOPE)
-  else()
-    if(NOT cmd)
-      # Default is "use cmake":
-      set(${cfg_cmd_id_var} "cmake" PARENT_SCOPE)
-    else()
-      # Otherwise we have to analyze the value:
-      if(cmd MATCHES "^[^;]*/configure")
-        set(${cfg_cmd_id_var} "configure" PARENT_SCOPE)
-      elseif(cmd MATCHES "^[^;]*/cmake" AND NOT cmd MATCHES ";-[PE];")
-        set(${cfg_cmd_id_var} "cmake" PARENT_SCOPE)
-      elseif(cmd MATCHES "config")
-        set(${cfg_cmd_id_var} "configure" PARENT_SCOPE)
-      else()
-        set(${cfg_cmd_id_var} "unknown:${cmd}" PARENT_SCOPE)
-      endif()
-    endif()
-  endif()
-endfunction()
-
-
-function(_ep_get_build_command name step cmd_var)
-  set(cmd "")
-  set(args)
-  _ep_get_configure_command_id(${name} cfg_cmd_id)
-  if(cfg_cmd_id STREQUAL "cmake")
-    # CMake project.  Select build command based on generator.
-    get_target_property(cmake_generator ${name} _EP_CMAKE_GENERATOR)
-    if("${CMAKE_GENERATOR}" MATCHES "Make" AND
-       ("${cmake_generator}" MATCHES "Make" OR NOT cmake_generator))
-      # The project uses the same Makefile generator.  Use recursive make.
-      set(cmd "$(MAKE)")
-      if(step STREQUAL "INSTALL")
-        set(args install)
-      endif()
-      if("x${step}x" STREQUAL "xTESTx")
-        set(args test)
-      endif()
-    else()
-      # Drive the project with "cmake --build".
-      get_target_property(cmake_command ${name} _EP_CMAKE_COMMAND)
-      if(cmake_command)
-        set(cmd "${cmake_command}")
-      else()
-        set(cmd "${CMAKE_COMMAND}")
-      endif()
-      set(args --build ".")
-      get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
-      if(_isMultiConfig)
-        if (CMAKE_CFG_INTDIR AND
-            NOT CMAKE_CFG_INTDIR STREQUAL "." AND
-            NOT CMAKE_CFG_INTDIR MATCHES "\\$")
-          # CMake 3.4 and below used the CMAKE_CFG_INTDIR placeholder value
-          # provided by multi-configuration generators.  Some projects were
-          # taking advantage of that undocumented implementation detail to
-          # specify a specific configuration here.  They should use
-          # BUILD_COMMAND to change the default command instead, but for
-          # compatibility honor the value.
-          set(config ${CMAKE_CFG_INTDIR})
-          message(AUTHOR_WARNING "CMAKE_CFG_INTDIR should not be set by project code.\n"
-            "To get a non-default build command, use the BUILD_COMMAND option.")
-        else()
-          set(config $<CONFIG>)
-        endif()
-        list(APPEND args --config ${config})
-      endif()
-      if(step STREQUAL "INSTALL")
-        list(APPEND args --target install)
-      endif()
-      # But for "TEST" drive the project with corresponding "ctest".
-      if("x${step}x" STREQUAL "xTESTx")
-        string(REGEX REPLACE "^(.*/)cmake([^/]*)$" "\\1ctest\\2" cmd "${cmd}")
-        set(args "")
-        if(_isMultiConfig)
-          list(APPEND args -C ${config})
-        endif()
-      endif()
-    endif()
-  else()
-    # Non-CMake project.  Guess "make" and "make install" and "make test".
-    if("${CMAKE_GENERATOR}" MATCHES "Makefiles")
-      # Try to get the parallel arguments
-      set(cmd "$(MAKE)")
-    else()
-      set(cmd "make")
-    endif()
-    if(step STREQUAL "INSTALL")
-      set(args install)
-    endif()
-    if("x${step}x" STREQUAL "xTESTx")
-      set(args test)
-    endif()
-  endif()
-
-  # Use user-specified arguments instead of default arguments, if any.
-  get_property(have_args TARGET ${name} PROPERTY _EP_${step}_ARGS SET)
-  if(have_args)
-    get_target_property(args ${name} _EP_${step}_ARGS)
-  endif()
-
-  if(NOT "${args}" STREQUAL "")
-    # args could have empty items, so we must quote it to prevent them
-    # from being silently removed
-    list(APPEND cmd "${args}")
-  endif()
-  set(${cmd_var} "${cmd}" PARENT_SCOPE)
-endfunction()
-
-function(_ep_write_log_script name step cmd_var)
-  ExternalProject_Get_Property(${name} log_dir)
-  ExternalProject_Get_Property(${name} stamp_dir)
-  set(command "${${cmd_var}}")
-
-  set(make "")
-  set(code_cygpath_make "")
-  if(command MATCHES "^\\$\\(MAKE\\)")
-    # GNU make recognizes the string "$(MAKE)" as recursive make, so
-    # ensure that it appears directly in the makefile.
-    string(REGEX REPLACE "^\\$\\(MAKE\\)" "\${make}" command "${command}")
-    set(make "-Dmake=$(MAKE)")
-
-    if(WIN32 AND NOT CYGWIN)
-      set(code_cygpath_make "
-if(\${make} MATCHES \"^/\")
-  execute_process(
-    COMMAND cygpath -w \${make}
-    OUTPUT_VARIABLE cygpath_make
-    ERROR_VARIABLE cygpath_make
-    RESULT_VARIABLE cygpath_error
-    OUTPUT_STRIP_TRAILING_WHITESPACE
-  )
-  if(NOT cygpath_error)
-    set(make \${cygpath_make})
-  endif()
-endif()
-")
-    endif()
-  endif()
-
-  set(config "")
-  if("${CMAKE_CFG_INTDIR}" MATCHES "^\\$")
-    string(REPLACE "${CMAKE_CFG_INTDIR}" "\${config}" command "${command}")
-    set(config "-Dconfig=${CMAKE_CFG_INTDIR}")
-  endif()
-
-  # Wrap multiple 'COMMAND' lines up into a second-level wrapper
-  # script so all output can be sent to one log file.
-  if(command MATCHES "(^|;)COMMAND;")
-    set(code_execute_process "
-${code_cygpath_make}
-execute_process(COMMAND \${command} RESULT_VARIABLE result)
-if(result)
-  set(msg \"Command failed (\${result}):\\n\")
-  foreach(arg IN LISTS command)
-    set(msg \"\${msg} '\${arg}'\")
-  endforeach()
-  message(FATAL_ERROR \"\${msg}\")
-endif()
-")
-    set(code "")
-    set(cmd "")
-    set(sep "")
-    foreach(arg IN LISTS command)
-      if("x${arg}" STREQUAL "xCOMMAND")
-        if(NOT "x${cmd}" STREQUAL "x")
-          string(APPEND code "set(command \"${cmd}\")${code_execute_process}")
-        endif()
-        set(cmd "")
-        set(sep "")
-      else()
-        string(APPEND cmd "${sep}${arg}")
-        set(sep ";")
-      endif()
-    endforeach()
-    string(APPEND code "set(command \"${cmd}\")${code_execute_process}")
-    file(GENERATE OUTPUT "${stamp_dir}/${name}-${step}-$<CONFIG>-impl.cmake" CONTENT "${code}")
-    set(command ${CMAKE_COMMAND} "-Dmake=\${make}" "-Dconfig=\${config}" -P ${stamp_dir}/${name}-${step}-$<CONFIG>-impl.cmake)
-  endif()
-
-  # Wrap the command in a script to log output to files.
-  set(script ${stamp_dir}/${name}-${step}-$<CONFIG>.cmake)
-  set(logbase ${log_dir}/${name}-${step})
-  get_property(log_merged TARGET ${name} PROPERTY _EP_LOG_MERGED_STDOUTERR)
-  get_property(log_output_on_failure TARGET ${name} PROPERTY _EP_LOG_OUTPUT_ON_FAILURE)
-  if (log_merged)
-    set(stdout_log "${logbase}.log")
-    set(stderr_log "${logbase}.log")
-  else()
-    set(stdout_log "${logbase}-out.log")
-    set(stderr_log "${logbase}-err.log")
-  endif()
-  set(code "
-cmake_minimum_required(VERSION 3.15)
-${code_cygpath_make}
-set(command \"${command}\")
-set(log_merged \"${log_merged}\")
-set(log_output_on_failure \"${log_output_on_failure}\")
-set(stdout_log \"${stdout_log}\")
-set(stderr_log \"${stderr_log}\")
-execute_process(
-  COMMAND \${command}
-  RESULT_VARIABLE result
-  OUTPUT_FILE \"\${stdout_log}\"
-  ERROR_FILE \"\${stderr_log}\"
-  )
-macro(read_up_to_max_size log_file output_var)
-  file(SIZE \${log_file} determined_size)
-  set(max_size 10240)
-  if (determined_size GREATER max_size)
-    math(EXPR seek_position \"\${determined_size} - \${max_size}\")
-    file(READ \${log_file} \${output_var} OFFSET \${seek_position})
-    set(\${output_var} \"...skipping to end...\\n\${\${output_var}}\")
-  else()
-    file(READ \${log_file} \${output_var})
-  endif()
-endmacro()
-if(result)
-  set(msg \"Command failed: \${result}\\n\")
-  foreach(arg IN LISTS command)
-    set(msg \"\${msg} '\${arg}'\")
-  endforeach()
-  if (\${log_merged})
-    set(msg \"\${msg}\\nSee also\\n  \${stderr_log}\")
-  else()
-    set(msg \"\${msg}\\nSee also\\n  ${logbase}-*.log\")
-  endif()
-  if (\${log_output_on_failure})
-    message(SEND_ERROR \"\${msg}\")
-    if (\${log_merged})
-      read_up_to_max_size(\"\${stderr_log}\" error_log_contents)
-      message(STATUS \"Log output is:\\n\${error_log_contents}\")
-    else()
-      read_up_to_max_size(\"\${stdout_log}\" out_log_contents)
-      read_up_to_max_size(\"\${stderr_log}\" err_log_contents)
-      message(STATUS \"stdout output is:\\n\${out_log_contents}\")
-      message(STATUS \"stderr output is:\\n\${err_log_contents}\")
-    endif()
-    message(FATAL_ERROR \"Stopping after outputting logs.\")
-  else()
-    message(FATAL_ERROR \"\${msg}\")
-  endif()
-else()
-  set(msg \"${name} ${step} command succeeded.  See also ${logbase}-*.log\")
-  message(STATUS \"\${msg}\")
-endif()
-")
-  file(GENERATE OUTPUT "${script}" CONTENT "${code}")
-  set(command ${CMAKE_COMMAND} ${make} ${config} -P ${script})
-  set(${cmd_var} "${command}" PARENT_SCOPE)
-endfunction()
-
-# This module used to use "/${CMAKE_CFG_INTDIR}" directly and produced
-# makefiles with "/./" in paths for custom command dependencies. Which
-# resulted in problems with parallel make -j invocations.
-#
-# This function was added so that the suffix (search below for ${cfgdir}) is
-# only set to "/${CMAKE_CFG_INTDIR}" when ${CMAKE_CFG_INTDIR} is not going to
-# be "." (multi-configuration build systems like Visual Studio and Xcode...)
-#
-function(_ep_get_configuration_subdir_suffix suffix_var)
-  set(suffix "")
-  get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
-  if(_isMultiConfig)
-    set(suffix "/${CMAKE_CFG_INTDIR}")
-  endif()
-  set(${suffix_var} "${suffix}" PARENT_SCOPE)
-endfunction()
-
-
-function(_ep_get_step_stampfile name step stampfile_var)
-  ExternalProject_Get_Property(${name} stamp_dir)
-
-  _ep_get_configuration_subdir_suffix(cfgdir)
-  set(stampfile "${stamp_dir}${cfgdir}/${name}-${step}")
-
-  set(${stampfile_var} "${stampfile}" PARENT_SCOPE)
-endfunction()
-
-
-function(_ep_get_complete_stampfile name stampfile_var)
-  set(cmf_dir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles)
-  _ep_get_configuration_subdir_suffix(cfgdir)
-  set(stampfile "${cmf_dir}${cfgdir}/${name}-complete")
-
-  set(${stampfile_var} ${stampfile} PARENT_SCOPE)
-endfunction()
-
-
-function(ExternalProject_Add_StepTargets name)
-  set(steps ${ARGN})
-  if(ARGC GREATER 1 AND "${ARGV1}" STREQUAL "NO_DEPENDS")
-    set(no_deps 1)
-    list(REMOVE_AT steps 0)
-  endif()
-  foreach(step ${steps})
-    if(no_deps  AND  "${step}" MATCHES "^(configure|build|install|test)$")
-      message(AUTHOR_WARNING "Using NO_DEPENDS for \"${step}\" step  might break parallel builds")
-    endif()
-    _ep_get_step_stampfile(${name} ${step} stamp_file)
-    add_custom_target(${name}-${step}
-      DEPENDS ${stamp_file})
-    set_property(TARGET ${name}-${step} PROPERTY _EP_IS_EXTERNAL_PROJECT_STEP 1)
-    set_property(TARGET ${name}-${step} PROPERTY LABELS ${name})
-    set_property(TARGET ${name}-${step} PROPERTY FOLDER "ExternalProjectTargets/${name}")
-
-    # Depend on other external projects (target-level).
-    if(NOT no_deps)
-      get_property(deps TARGET ${name} PROPERTY _EP_DEPENDS)
-      foreach(arg IN LISTS deps)
-        add_dependencies(${name}-${step} ${arg})
-      endforeach()
-    endif()
-  endforeach()
-endfunction()
-
-
-function(ExternalProject_Add_Step name step)
-  _ep_get_complete_stampfile(${name} complete_stamp_file)
-  _ep_get_step_stampfile(${name} ${step} stamp_file)
-
-  _ep_parse_arguments(ExternalProject_Add_Step
-                      ${name} _EP_${step}_ "${ARGN}")
-
-  get_property(exclude_from_main TARGET ${name} PROPERTY _EP_${step}_EXCLUDE_FROM_MAIN)
-  if(NOT exclude_from_main)
-    add_custom_command(APPEND
-      OUTPUT ${complete_stamp_file}
-      DEPENDS ${stamp_file}
-      )
-  endif()
-
-  # Steps depending on this step.
-  get_property(dependers TARGET ${name} PROPERTY _EP_${step}_DEPENDERS)
-  foreach(depender IN LISTS dependers)
-    _ep_get_step_stampfile(${name} ${depender} depender_stamp_file)
-    add_custom_command(APPEND
-      OUTPUT ${depender_stamp_file}
-      DEPENDS ${stamp_file}
-      )
-  endforeach()
-
-  # Dependencies on files.
-  get_property(depends TARGET ${name} PROPERTY _EP_${step}_DEPENDS)
-
-  # Byproducts of the step.
-  get_property(byproducts TARGET ${name} PROPERTY _EP_${step}_BYPRODUCTS)
-
-  # Dependencies on steps.
-  get_property(dependees TARGET ${name} PROPERTY _EP_${step}_DEPENDEES)
-  foreach(dependee IN LISTS dependees)
-    _ep_get_step_stampfile(${name} ${dependee} dependee_stamp_file)
-    list(APPEND depends ${dependee_stamp_file})
-  endforeach()
-
-  # The command to run.
-  get_property(command TARGET ${name} PROPERTY _EP_${step}_COMMAND)
-  if(command)
-    set(comment "Performing ${step} step for '${name}'")
-  else()
-    set(comment "No ${step} step for '${name}'")
-  endif()
-  get_property(work_dir TARGET ${name} PROPERTY _EP_${step}_WORKING_DIRECTORY)
-
-  # Replace list separators.
-  get_property(sep TARGET ${name} PROPERTY _EP_LIST_SEPARATOR)
-  if(sep AND command)
-    string(REPLACE "${sep}" "\\;" command "${command}")
-  endif()
-
-  # Replace location tags.
-  _ep_replace_location_tags(${name} comment command work_dir byproducts)
-
-  # Custom comment?
-  get_property(comment_set TARGET ${name} PROPERTY _EP_${step}_COMMENT SET)
-  if(comment_set)
-    get_property(comment TARGET ${name} PROPERTY _EP_${step}_COMMENT)
-  endif()
-
-  # Uses terminal?
-  get_property(uses_terminal TARGET ${name} PROPERTY _EP_${step}_USES_TERMINAL)
-  if(uses_terminal)
-    set(uses_terminal USES_TERMINAL)
-  else()
-    set(uses_terminal "")
-  endif()
-
-  # Run every time?
-  get_property(always TARGET ${name} PROPERTY _EP_${step}_ALWAYS)
-  if(always)
-    set_property(SOURCE ${stamp_file} PROPERTY SYMBOLIC 1)
-    set(touch)
-    # Remove any existing stamp in case the option changed in an existing tree.
-    get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
-    if(_isMultiConfig)
-      foreach(cfg ${CMAKE_CONFIGURATION_TYPES})
-        string(REPLACE "/${CMAKE_CFG_INTDIR}" "/${cfg}" stamp_file_config "${stamp_file}")
-        file(REMOVE ${stamp_file_config})
-      endforeach()
-    else()
-      file(REMOVE ${stamp_file})
-    endif()
-  else()
-    set(touch ${CMAKE_COMMAND} -E touch ${stamp_file})
-  endif()
-
-  # Wrap with log script?
-  get_property(log TARGET ${name} PROPERTY _EP_${step}_LOG)
-  if(command AND log)
-    _ep_write_log_script(${name} ${step} command)
-  endif()
-
-  if("${command}" STREQUAL "")
-    # Some generators (i.e. Xcode) will not generate a file level target
-    # if no command is set, and therefore the dependencies on this
-    # target will be broken.
-    # The empty command is replaced by an echo command here in order to
-    # avoid this issue.
-    set(command ${CMAKE_COMMAND} -E echo_append)
-  endif()
-
-  set(__cmdQuoted)
-  foreach(__item IN LISTS command)
-    string(APPEND __cmdQuoted " [==[${__item}]==]")
-  endforeach()
-  cmake_language(EVAL CODE "
-    add_custom_command(
-      OUTPUT \${stamp_file}
-      BYPRODUCTS \${byproducts}
-      COMMENT \${comment}
-      COMMAND ${__cmdQuoted}
-      COMMAND \${touch}
-      DEPENDS \${depends}
-      WORKING_DIRECTORY \${work_dir}
-      VERBATIM
-      ${uses_terminal}
-    )"
-  )
-  set_property(TARGET ${name} APPEND PROPERTY _EP_STEPS ${step})
-
-  # Add custom "step target"?
-  get_property(step_targets TARGET ${name} PROPERTY _EP_STEP_TARGETS)
-  if(NOT step_targets)
-    get_property(step_targets DIRECTORY PROPERTY EP_STEP_TARGETS)
-  endif()
-  foreach(st ${step_targets})
-    if("${st}" STREQUAL "${step}")
-      ExternalProject_Add_StepTargets(${name} ${step})
-      break()
-    endif()
-  endforeach()
-
-  get_property(independent_step_targets TARGET ${name} PROPERTY _EP_INDEPENDENT_STEP_TARGETS)
-  if(NOT independent_step_targets)
-    get_property(independent_step_targets DIRECTORY PROPERTY EP_INDEPENDENT_STEP_TARGETS)
-  endif()
-  foreach(st ${independent_step_targets})
-    if("${st}" STREQUAL "${step}")
-      ExternalProject_Add_StepTargets(${name} NO_DEPENDS ${step})
-      break()
-    endif()
-  endforeach()
-endfunction()
-
-
-function(ExternalProject_Add_StepDependencies name step)
-  set(dependencies ${ARGN})
-
-  # Sanity checks on "name" and "step".
-  if(NOT TARGET ${name})
-    message(FATAL_ERROR "Cannot find target \"${name}\". Perhaps it has not yet been created using ExternalProject_Add.")
-  endif()
-
-  get_property(type TARGET ${name} PROPERTY TYPE)
-  if(NOT type STREQUAL "UTILITY")
-    message(FATAL_ERROR "Target \"${name}\" was not generated by ExternalProject_Add.")
-  endif()
-
-  get_property(is_ep TARGET ${name} PROPERTY _EP_IS_EXTERNAL_PROJECT)
-  if(NOT is_ep)
-    message(FATAL_ERROR "Target \"${name}\" was not generated by ExternalProject_Add.")
-  endif()
-
-  get_property(steps TARGET ${name} PROPERTY _EP_STEPS)
-  list(FIND steps ${step} is_step)
-  if(is_step LESS 0)
-    message(FATAL_ERROR "External project \"${name}\" does not have a step \"${step}\".")
-  endif()
-
-  if(TARGET ${name}-${step})
-    get_property(type TARGET ${name}-${step} PROPERTY TYPE)
-    if(NOT type STREQUAL "UTILITY")
-      message(FATAL_ERROR "Target \"${name}-${step}\" was not generated by ExternalProject_Add_StepTargets.")
-    endif()
-    get_property(is_ep_step TARGET ${name}-${step} PROPERTY _EP_IS_EXTERNAL_PROJECT_STEP)
-    if(NOT is_ep_step)
-      message(FATAL_ERROR "Target \"${name}-${step}\" was not generated by ExternalProject_Add_StepTargets.")
-    endif()
-  endif()
-
-  # Always add file-level dependency, but add target-level dependency
-  # only if the target exists for that step.
-  _ep_get_step_stampfile(${name} ${step} stamp_file)
-  foreach(dep ${dependencies})
-    add_custom_command(APPEND
-      OUTPUT ${stamp_file}
-      DEPENDS ${dep})
-    if(TARGET ${name}-${step})
-      foreach(dep ${dependencies})
-        add_dependencies(${name}-${step} ${dep})
-      endforeach()
-    endif()
-  endforeach()
-
-endfunction()
-
-
-function(_ep_add_mkdir_command name)
-  ExternalProject_Get_Property(${name}
-    source_dir binary_dir install_dir stamp_dir download_dir tmp_dir log_dir)
-
-  _ep_get_configuration_subdir_suffix(cfgdir)
-
-  ExternalProject_Add_Step(${name} mkdir
-    COMMENT "Creating directories for '${name}'"
-    COMMAND ${CMAKE_COMMAND} -E make_directory ${source_dir}
-    COMMAND ${CMAKE_COMMAND} -E make_directory ${binary_dir}
-    COMMAND ${CMAKE_COMMAND} -E make_directory ${install_dir}
-    COMMAND ${CMAKE_COMMAND} -E make_directory ${tmp_dir}
-    COMMAND ${CMAKE_COMMAND} -E make_directory ${stamp_dir}${cfgdir}
-    COMMAND ${CMAKE_COMMAND} -E make_directory ${download_dir}
-    COMMAND ${CMAKE_COMMAND} -E make_directory ${log_dir}
-    )
-endfunction()
-
-
-function(_ep_is_dir_empty dir empty_var)
-  file(GLOB gr "${dir}/*")
-  if("${gr}" STREQUAL "")
-    set(${empty_var} 1 PARENT_SCOPE)
-  else()
-    set(${empty_var} 0 PARENT_SCOPE)
-  endif()
-endfunction()
-
-function(_ep_get_git_submodules_recurse git_submodules_recurse)
-  # Checks for GIT_SUBMODULES_RECURSE property
-  # Default is ON, which sets git_submodules_recurse output variable to "--recursive"
-  # Otherwise, the output variable is set to an empty value ""
-  get_property(git_submodules_recurse_set TARGET ${name} PROPERTY _EP_GIT_SUBMODULES_RECURSE SET)
-  if(NOT git_submodules_recurse_set)
-    set(recurseFlag "--recursive")
-  else()
-    get_property(git_submodules_recurse_value TARGET ${name} PROPERTY _EP_GIT_SUBMODULES_RECURSE)
-    if(git_submodules_recurse_value)
-      set(recurseFlag "--recursive")
-    else()
-      set(recurseFlag "")
-    endif()
-  endif()
-  set(${git_submodules_recurse} "${recurseFlag}" PARENT_SCOPE)
-
-  # The git submodule update '--recursive' flag requires git >= v1.6.5
-  if(recurseFlag AND GIT_VERSION_STRING VERSION_LESS 1.6.5)
-    message(FATAL_ERROR "error: git version 1.6.5 or later required for --recursive flag with 'git submodule ...': GIT_VERSION_STRING='${GIT_VERSION_STRING}'")
-  endif()
-endfunction()
-
-
-function(_ep_add_download_command name)
-  ExternalProject_Get_Property(${name} source_dir stamp_dir download_dir tmp_dir)
-
-  get_property(cmd_set TARGET ${name} PROPERTY _EP_DOWNLOAD_COMMAND SET)
-  get_property(cmd TARGET ${name} PROPERTY _EP_DOWNLOAD_COMMAND)
-  get_property(cvs_repository TARGET ${name} PROPERTY _EP_CVS_REPOSITORY)
-  get_property(svn_repository TARGET ${name} PROPERTY _EP_SVN_REPOSITORY)
-  get_property(git_repository TARGET ${name} PROPERTY _EP_GIT_REPOSITORY)
-  get_property(hg_repository  TARGET ${name} PROPERTY _EP_HG_REPOSITORY )
-  get_property(url TARGET ${name} PROPERTY _EP_URL)
-  get_property(fname TARGET ${name} PROPERTY _EP_DOWNLOAD_NAME)
-
-  # TODO: Perhaps file:// should be copied to download dir before extraction.
-  string(REGEX REPLACE "file://" "" url "${url}")
-
-  set(depends)
-  set(comment)
-  set(work_dir)
-
-  if(cmd_set)
-    set(work_dir ${download_dir})
-  elseif(cvs_repository)
-    find_package(CVS QUIET)
-    if(NOT CVS_EXECUTABLE)
-      message(FATAL_ERROR "error: could not find cvs for checkout of ${name}")
-    endif()
-
-    get_target_property(cvs_module ${name} _EP_CVS_MODULE)
-    if(NOT cvs_module)
-      message(FATAL_ERROR "error: no CVS_MODULE")
-    endif()
-
-    get_property(cvs_tag TARGET ${name} PROPERTY _EP_CVS_TAG)
-
-    set(repository ${cvs_repository})
-    set(module ${cvs_module})
-    set(tag ${cvs_tag})
-    configure_file(
-      "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in"
-      "${stamp_dir}/${name}-cvsinfo.txt"
-      @ONLY
-      )
-
-    get_filename_component(src_name "${source_dir}" NAME)
-    get_filename_component(work_dir "${source_dir}" PATH)
-    set(comment "Performing download step (CVS checkout) for '${name}'")
-    set(cmd ${CVS_EXECUTABLE} -d ${cvs_repository} -q co ${cvs_tag} -d ${src_name} ${cvs_module})
-    list(APPEND depends ${stamp_dir}/${name}-cvsinfo.txt)
-  elseif(svn_repository)
-    find_package(Subversion QUIET)
-    if(NOT Subversion_SVN_EXECUTABLE)
-      message(FATAL_ERROR "error: could not find svn for checkout of ${name}")
-    endif()
-
-    get_property(svn_revision TARGET ${name} PROPERTY _EP_SVN_REVISION)
-    get_property(svn_username TARGET ${name} PROPERTY _EP_SVN_USERNAME)
-    get_property(svn_password TARGET ${name} PROPERTY _EP_SVN_PASSWORD)
-    get_property(svn_trust_cert TARGET ${name} PROPERTY _EP_SVN_TRUST_CERT)
-
-    set(repository "${svn_repository} user=${svn_username} password=${svn_password}")
-    set(module)
-    set(tag ${svn_revision})
-    configure_file(
-      "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in"
-      "${stamp_dir}/${name}-svninfo.txt"
-      @ONLY
-      )
-
-    get_filename_component(src_name "${source_dir}" NAME)
-    get_filename_component(work_dir "${source_dir}" PATH)
-    set(comment "Performing download step (SVN checkout) for '${name}'")
-    set(svn_user_pw_args "")
-    if(DEFINED svn_username)
-      set(svn_user_pw_args ${svn_user_pw_args} "--username=${svn_username}")
-    endif()
-    if(DEFINED svn_password)
-      set(svn_user_pw_args ${svn_user_pw_args} "--password=${svn_password}")
-    endif()
-    if(svn_trust_cert)
-      set(svn_trust_cert_args --trust-server-cert)
-    endif()
-    set(cmd ${Subversion_SVN_EXECUTABLE} co ${svn_repository} ${svn_revision}
-      --non-interactive ${svn_trust_cert_args} ${svn_user_pw_args} ${src_name})
-    list(APPEND depends ${stamp_dir}/${name}-svninfo.txt)
-  elseif(git_repository)
-    unset(CMAKE_MODULE_PATH) # Use CMake builtin find module
-    find_package(Git QUIET)
-    if(NOT GIT_EXECUTABLE)
-      message(FATAL_ERROR "error: could not find git for clone of ${name}")
-    endif()
-
-    _ep_get_git_submodules_recurse(git_submodules_recurse)
-
-    get_property(git_tag TARGET ${name} PROPERTY _EP_GIT_TAG)
-    if(NOT git_tag)
-      set(git_tag "master")
-    endif()
-
-    set(git_init_submodules TRUE)
-    get_property(git_submodules_set TARGET ${name} PROPERTY _EP_GIT_SUBMODULES SET)
-    if(git_submodules_set)
-      get_property(git_submodules TARGET ${name} PROPERTY _EP_GIT_SUBMODULES)
-      if(git_submodules  STREQUAL "" AND _EP_CMP0097 STREQUAL "NEW")
-        set(git_init_submodules FALSE)
-      endif()
-    endif()
-
-    get_property(git_remote_name TARGET ${name} PROPERTY _EP_GIT_REMOTE_NAME)
-    if(NOT git_remote_name)
-      set(git_remote_name "origin")
-    endif()
-
-    get_property(tls_verify TARGET ${name} PROPERTY _EP_TLS_VERIFY)
-    if("x${tls_verify}" STREQUAL "x" AND DEFINED CMAKE_TLS_VERIFY)
-      set(tls_verify "${CMAKE_TLS_VERIFY}")
-    endif()
-    get_property(git_shallow TARGET ${name} PROPERTY _EP_GIT_SHALLOW)
-    get_property(git_progress TARGET ${name} PROPERTY _EP_GIT_PROGRESS)
-    get_property(git_config TARGET ${name} PROPERTY _EP_GIT_CONFIG)
-
-    # For the download step, and the git clone operation, only the repository
-    # should be recorded in a configured RepositoryInfo file. If the repo
-    # changes, the clone script should be run again. But if only the tag
-    # changes, avoid running the clone script again. Let the 'always' running
-    # update step checkout the new tag.
-    #
-    set(repository ${git_repository})
-    set(module)
-    set(tag ${git_remote_name})
-    configure_file(
-      "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in"
-      "${stamp_dir}/${name}-gitinfo.txt"
-      @ONLY
-      )
-
-    get_filename_component(src_name "${source_dir}" NAME)
-    get_filename_component(work_dir "${source_dir}" PATH)
-
-    # Since git clone doesn't succeed if the non-empty source_dir exists,
-    # create a cmake script to invoke as download command.
-    # The script will delete the source directory and then call git clone.
-    #
-    _ep_write_gitclone_script(${tmp_dir}/${name}-gitclone.cmake ${source_dir}
-      ${GIT_EXECUTABLE} ${git_repository} ${git_tag} ${git_remote_name} ${git_init_submodules} "${git_submodules_recurse}" "${git_submodules}" "${git_shallow}" "${git_progress}" "${git_config}" ${src_name} ${work_dir}
-      ${stamp_dir}/${name}-gitinfo.txt ${stamp_dir}/${name}-gitclone-lastrun.txt "${tls_verify}"
-      )
-    set(comment "Performing download step (git clone) for '${name}'")
-    set(cmd ${CMAKE_COMMAND} -P ${tmp_dir}/${name}-gitclone.cmake)
-    list(APPEND depends ${stamp_dir}/${name}-gitinfo.txt)
-  elseif(hg_repository)
-    find_package(Hg QUIET)
-    if(NOT HG_EXECUTABLE)
-      message(FATAL_ERROR "error: could not find hg for clone of ${name}")
-    endif()
-
-    get_property(hg_tag TARGET ${name} PROPERTY _EP_HG_TAG)
-    if(NOT hg_tag)
-      set(hg_tag "tip")
-    endif()
-
-    # For the download step, and the hg clone operation, only the repository
-    # should be recorded in a configured RepositoryInfo file. If the repo
-    # changes, the clone script should be run again. But if only the tag
-    # changes, avoid running the clone script again. Let the 'always' running
-    # update step checkout the new tag.
-    #
-    set(repository ${hg_repository})
-    set(module)
-    set(tag)
-    configure_file(
-      "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in"
-      "${stamp_dir}/${name}-hginfo.txt"
-      @ONLY
-      )
-
-    get_filename_component(src_name "${source_dir}" NAME)
-    get_filename_component(work_dir "${source_dir}" PATH)
-
-    # Since hg clone doesn't succeed if the non-empty source_dir exists,
-    # create a cmake script to invoke as download command.
-    # The script will delete the source directory and then call hg clone.
-    #
-    _ep_write_hgclone_script(${tmp_dir}/${name}-hgclone.cmake ${source_dir}
-      ${HG_EXECUTABLE} ${hg_repository} ${hg_tag} ${src_name} ${work_dir}
-      ${stamp_dir}/${name}-hginfo.txt ${stamp_dir}/${name}-hgclone-lastrun.txt
-      )
-    set(comment "Performing download step (hg clone) for '${name}'")
-    set(cmd ${CMAKE_COMMAND} -P ${tmp_dir}/${name}-hgclone.cmake)
-    list(APPEND depends ${stamp_dir}/${name}-hginfo.txt)
-  elseif(url)
-    get_filename_component(work_dir "${source_dir}" PATH)
-    get_property(hash TARGET ${name} PROPERTY _EP_URL_HASH)
-    if(hash AND NOT "${hash}" MATCHES "${_ep_hash_regex}")
-      message(FATAL_ERROR "URL_HASH is set to\n  ${hash}\n"
-        "but must be ALGO=value where ALGO is\n  ${_ep_hash_algos}\n"
-        "and value is a hex string.")
-    endif()
-    get_property(md5 TARGET ${name} PROPERTY _EP_URL_MD5)
-    if(md5 AND NOT "MD5=${md5}" MATCHES "${_ep_hash_regex}")
-      message(FATAL_ERROR "URL_MD5 is set to\n  ${md5}\nbut must be a hex string.")
-    endif()
-    if(md5 AND NOT hash)
-      set(hash "MD5=${md5}")
-    endif()
-    set(repository "external project URL")
-    set(module "${url}")
-    set(tag "${hash}")
-    configure_file(
-      "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in"
-      "${stamp_dir}/${name}-urlinfo.txt"
-      @ONLY
-      )
-    list(APPEND depends ${stamp_dir}/${name}-urlinfo.txt)
-
-    list(LENGTH url url_list_length)
-    if(NOT "${url_list_length}" STREQUAL "1")
-      foreach(entry ${url})
-        if(NOT "${entry}" MATCHES "^[a-z]+://")
-          message(FATAL_ERROR "At least one entry of URL is a path (invalid in a list)")
-        endif()
-      endforeach()
-      if("x${fname}" STREQUAL "x")
-        list(GET url 0 fname)
-      endif()
-    endif()
-
-    if(IS_DIRECTORY "${url}")
-      get_filename_component(abs_dir "${url}" ABSOLUTE)
-      set(comment "Performing download step (DIR copy) for '${name}'")
-      set(cmd   ${CMAKE_COMMAND} -E rm -rf ${source_dir}
-        COMMAND ${CMAKE_COMMAND} -E copy_directory ${abs_dir} ${source_dir})
-    else()
-      get_property(no_extract TARGET "${name}" PROPERTY _EP_DOWNLOAD_NO_EXTRACT)
-      if("${url}" MATCHES "^[a-z]+://")
-        # TODO: Should download and extraction be different steps?
-        if("x${fname}" STREQUAL "x")
-          set(fname "${url}")
-        endif()
-        if("${fname}" MATCHES [[([^/\?#]+(\.|=)(7z|tar|tar\.bz2|tar\.gz|tar\.xz|tbz2|tgz|txz|zip))([/?#].*)?$]])
-          set(fname "${CMAKE_MATCH_1}")
-        elseif(no_extract)
-          get_filename_component(fname "${fname}" NAME)
-        else()
-          # Fall back to a default file name.  The actual file name does not
-          # matter because it is used only internally and our extraction tool
-          # inspects the file content directly.  If it turns out the wrong URL
-          # was given that will be revealed during the build which is an easier
-          # place for users to diagnose than an error here anyway.
-          set(fname "archive.tar")
-        endif()
-        string(REPLACE ";" "-" fname "${fname}")
-        set(file ${download_dir}/${fname})
-        get_property(timeout TARGET ${name} PROPERTY _EP_TIMEOUT)
-        get_property(no_progress TARGET ${name} PROPERTY _EP_DOWNLOAD_NO_PROGRESS)
-        get_property(tls_verify TARGET ${name} PROPERTY _EP_TLS_VERIFY)
-        get_property(tls_cainfo TARGET ${name} PROPERTY _EP_TLS_CAINFO)
-        get_property(netrc TARGET ${name} PROPERTY _EP_NETRC)
-        get_property(netrc_file TARGET ${name} PROPERTY _EP_NETRC_FILE)
-        get_property(http_username TARGET ${name} PROPERTY _EP_HTTP_USERNAME)
-        get_property(http_password TARGET ${name} PROPERTY _EP_HTTP_PASSWORD)
-        get_property(http_headers TARGET ${name} PROPERTY _EP_HTTP_HEADER)
-        set(download_script "${stamp_dir}/download-${name}.cmake")
-        _ep_write_downloadfile_script("${download_script}" "${url}" "${file}" "${timeout}" "${no_progress}" "${hash}" "${tls_verify}" "${tls_cainfo}" "${http_username}:${http_password}" "${http_headers}" "${netrc}" "${netrc_file}")
-        set(cmd ${CMAKE_COMMAND} -P "${download_script}"
-          COMMAND)
-        if (no_extract)
-          set(steps "download and verify")
-        else ()
-          set(steps "download, verify and extract")
-        endif ()
-        set(comment "Performing download step (${steps}) for '${name}'")
-        file(WRITE "${stamp_dir}/verify-${name}.cmake" "") # already verified by 'download_script'
-      else()
-        set(file "${url}")
-        if (no_extract)
-          set(steps "verify")
-        else ()
-          set(steps "verify and extract")
-        endif ()
-        set(comment "Performing download step (${steps}) for '${name}'")
-        _ep_write_verifyfile_script("${stamp_dir}/verify-${name}.cmake" "${file}" "${hash}")
-      endif()
-      list(APPEND cmd ${CMAKE_COMMAND} -P ${stamp_dir}/verify-${name}.cmake)
-      if (NOT no_extract)
-        _ep_write_extractfile_script("${stamp_dir}/extract-${name}.cmake" "${name}" "${file}" "${source_dir}")
-        list(APPEND cmd COMMAND ${CMAKE_COMMAND} -P ${stamp_dir}/extract-${name}.cmake)
-      else ()
-        set_property(TARGET ${name} PROPERTY _EP_DOWNLOADED_FILE ${file})
-      endif ()
-    endif()
-  else()
-    _ep_is_dir_empty("${source_dir}" empty)
-    if(${empty})
-      message(SEND_ERROR
-        "No download info given for '${name}' and its source directory:\n"
-        " ${source_dir}\n"
-        "is not an existing non-empty directory.  Please specify one of:\n"
-        " * SOURCE_DIR with an existing non-empty directory\n"
-        " * DOWNLOAD_COMMAND\n"
-        " * URL\n"
-        " * GIT_REPOSITORY\n"
-        " * SVN_REPOSITORY\n"
-        " * HG_REPOSITORY\n"
-        " * CVS_REPOSITORY and CVS_MODULE"
-        )
-    endif()
-  endif()
-
-  get_property(log TARGET ${name} PROPERTY _EP_LOG_DOWNLOAD)
-  if(log)
-    set(log LOG 1)
-  else()
-    set(log "")
-  endif()
-
-  get_property(uses_terminal TARGET ${name} PROPERTY
-    _EP_USES_TERMINAL_DOWNLOAD)
-  if(uses_terminal)
-    set(uses_terminal USES_TERMINAL 1)
-  else()
-    set(uses_terminal "")
-  endif()
-
-  set(__cmdQuoted)
-  foreach(__item IN LISTS cmd)
-    string(APPEND __cmdQuoted " [==[${__item}]==]")
-  endforeach()
-  cmake_language(EVAL CODE "
-    ExternalProject_Add_Step(\${name} download
-      COMMENT \${comment}
-      COMMAND ${__cmdQuoted}
-      WORKING_DIRECTORY \${work_dir}
-      DEPENDS \${depends}
-      DEPENDEES mkdir
-      ${log}
-      ${uses_terminal}
-      )"
-  )
-endfunction()
-
-function(_ep_get_update_disconnected var name)
-  get_property(update_disconnected_set TARGET ${name} PROPERTY _EP_UPDATE_DISCONNECTED SET)
-  if(update_disconnected_set)
-    get_property(update_disconnected TARGET ${name} PROPERTY _EP_UPDATE_DISCONNECTED)
-  else()
-    get_property(update_disconnected DIRECTORY PROPERTY EP_UPDATE_DISCONNECTED)
-  endif()
-  set(${var} "${update_disconnected}" PARENT_SCOPE)
-endfunction()
-
-function(_ep_add_update_command name)
-  ExternalProject_Get_Property(${name} source_dir tmp_dir)
-
-  get_property(cmd_set TARGET ${name} PROPERTY _EP_UPDATE_COMMAND SET)
-  get_property(cmd TARGET ${name} PROPERTY _EP_UPDATE_COMMAND)
-  get_property(cvs_repository TARGET ${name} PROPERTY _EP_CVS_REPOSITORY)
-  get_property(svn_repository TARGET ${name} PROPERTY _EP_SVN_REPOSITORY)
-  get_property(git_repository TARGET ${name} PROPERTY _EP_GIT_REPOSITORY)
-  get_property(hg_repository  TARGET ${name} PROPERTY _EP_HG_REPOSITORY )
-
-  _ep_get_update_disconnected(update_disconnected ${name})
-
-  set(work_dir)
-  set(comment)
-  set(always)
-
-  if(cmd_set)
-    set(work_dir ${source_dir})
-    if(NOT "x${cmd}" STREQUAL "x")
-      set(always 1)
-    endif()
-  elseif(cvs_repository)
-    if(NOT CVS_EXECUTABLE)
-      message(FATAL_ERROR "error: could not find cvs for update of ${name}")
-    endif()
-    set(work_dir ${source_dir})
-    set(comment "Performing update step (CVS update) for '${name}'")
-    get_property(cvs_tag TARGET ${name} PROPERTY _EP_CVS_TAG)
-    set(cmd ${CVS_EXECUTABLE} -d ${cvs_repository} -q up -dP ${cvs_tag})
-    set(always 1)
-  elseif(svn_repository)
-    if(NOT Subversion_SVN_EXECUTABLE)
-      message(FATAL_ERROR "error: could not find svn for update of ${name}")
-    endif()
-    set(work_dir ${source_dir})
-    set(comment "Performing update step (SVN update) for '${name}'")
-    get_property(svn_revision TARGET ${name} PROPERTY _EP_SVN_REVISION)
-    get_property(svn_username TARGET ${name} PROPERTY _EP_SVN_USERNAME)
-    get_property(svn_password TARGET ${name} PROPERTY _EP_SVN_PASSWORD)
-    get_property(svn_trust_cert TARGET ${name} PROPERTY _EP_SVN_TRUST_CERT)
-    set(svn_user_pw_args "")
-    if(DEFINED svn_username)
-      set(svn_user_pw_args ${svn_user_pw_args} "--username=${svn_username}")
-    endif()
-    if(DEFINED svn_password)
-      set(svn_user_pw_args ${svn_user_pw_args} "--password=${svn_password}")
-    endif()
-    if(svn_trust_cert)
-      set(svn_trust_cert_args --trust-server-cert)
-    endif()
-    set(cmd ${Subversion_SVN_EXECUTABLE} up ${svn_revision}
-      --non-interactive ${svn_trust_cert_args} ${svn_user_pw_args})
-    set(always 1)
-  elseif(git_repository)
-    unset(CMAKE_MODULE_PATH) # Use CMake builtin find module
-    find_package(Git QUIET)
-    if(NOT GIT_EXECUTABLE)
-      message(FATAL_ERROR "error: could not find git for fetch of ${name}")
-    endif()
-    set(work_dir ${source_dir})
-    set(comment "Performing update step for '${name}'")
-    get_property(git_tag TARGET ${name} PROPERTY _EP_GIT_TAG)
-    if(NOT git_tag)
-      set(git_tag "master")
-    endif()
-    get_property(git_remote_name TARGET ${name} PROPERTY _EP_GIT_REMOTE_NAME)
-    if(NOT git_remote_name)
-      set(git_remote_name "origin")
-    endif()
-
-    set(git_init_submodules TRUE)
-    get_property(git_submodules_set TARGET ${name} PROPERTY _EP_GIT_SUBMODULES SET)
-    if(git_submodules_set)
-      get_property(git_submodules TARGET ${name} PROPERTY _EP_GIT_SUBMODULES)
-      if(git_submodules  STREQUAL "" AND _EP_CMP0097 STREQUAL "NEW")
-        set(git_init_submodules FALSE)
-      endif()
-    endif()
-
-    get_property(git_update_strategy TARGET ${name} PROPERTY _EP_GIT_REMOTE_UPDATE_STRATEGY)
-    if(NOT git_update_strategy)
-      set(git_update_strategy "${CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY}")
-    endif()
-    if(NOT git_update_strategy)
-      set(git_update_strategy REBASE)
-    endif()
-    set(strategies CHECKOUT REBASE REBASE_CHECKOUT)
-    if(NOT git_update_strategy IN_LIST strategies)
-      message(FATAL_ERROR "'${git_update_strategy}' is not one of the supported strategies: ${strategies}")
-    endif()
-
-    _ep_get_git_submodules_recurse(git_submodules_recurse)
-
-    _ep_write_gitupdate_script(${tmp_dir}/${name}-gitupdate.cmake
-      ${GIT_EXECUTABLE} ${git_tag} ${git_remote_name} ${git_init_submodules} "${git_submodules_recurse}" "${git_submodules}" ${git_repository} ${work_dir} ${git_update_strategy}
-      )
-    set(cmd ${CMAKE_COMMAND} -P ${tmp_dir}/${name}-gitupdate.cmake)
-    set(always 1)
-  elseif(hg_repository)
-    if(NOT HG_EXECUTABLE)
-      message(FATAL_ERROR "error: could not find hg for pull of ${name}")
-    endif()
-    set(work_dir ${source_dir})
-    set(comment "Performing update step (hg pull) for '${name}'")
-    get_property(hg_tag TARGET ${name} PROPERTY _EP_HG_TAG)
-    if(NOT hg_tag)
-      set(hg_tag "tip")
-    endif()
-    if("${HG_VERSION_STRING}" STREQUAL "2.1")
-      message(WARNING "Mercurial 2.1 does not distinguish an empty pull from a failed pull:
- http://mercurial.selenic.com/wiki/UpgradeNotes#A2.1.1:_revert_pull_return_code_change.2C_compile_issue_on_OS_X
- http://thread.gmane.org/gmane.comp.version-control.mercurial.devel/47656
-Update to Mercurial >= 2.1.1.
-")
-    endif()
-    set(cmd ${HG_EXECUTABLE} pull
-      COMMAND ${HG_EXECUTABLE} update ${hg_tag}
-      )
-    set(always 1)
-  endif()
-
-  get_property(log TARGET ${name} PROPERTY _EP_LOG_UPDATE)
-  if(log)
-    set(log LOG 1)
-  else()
-    set(log "")
-  endif()
-
-  get_property(uses_terminal TARGET ${name} PROPERTY
-    _EP_USES_TERMINAL_UPDATE)
-  if(uses_terminal)
-    set(uses_terminal USES_TERMINAL 1)
-  else()
-    set(uses_terminal "")
-  endif()
-
-  set(__cmdQuoted)
-  foreach(__item IN LISTS cmd)
-    string(APPEND __cmdQuoted " [==[${__item}]==]")
-  endforeach()
-  cmake_language(EVAL CODE "
-    ExternalProject_Add_Step(${name} update
-      COMMENT \${comment}
-      COMMAND ${__cmdQuoted}
-      ALWAYS \${always}
-      EXCLUDE_FROM_MAIN \${update_disconnected}
-      WORKING_DIRECTORY \${work_dir}
-      DEPENDEES download
-      ${log}
-      ${uses_terminal}
-      )"
-  )
-
-  if(update_disconnected)
-    _ep_get_step_stampfile(${name} skip-update skip-update_stamp_file)
-    string(REPLACE "Performing" "Skipping" comment "${comment}")
-    ExternalProject_Add_Step(${name} skip-update
-      COMMENT ${comment}
-      ALWAYS ${always}
-      EXCLUDE_FROM_MAIN 1
-      WORKING_DIRECTORY ${work_dir}
-      DEPENDEES download
-      ${log}
-      ${uses_terminal}
-    )
-    set_property(SOURCE ${skip-update_stamp_file} PROPERTY SYMBOLIC 1)
-  endif()
-
-endfunction()
-
-
-function(_ep_add_patch_command name)
-  ExternalProject_Get_Property(${name} source_dir)
-
-  get_property(cmd_set TARGET ${name} PROPERTY _EP_PATCH_COMMAND SET)
-  get_property(cmd TARGET ${name} PROPERTY _EP_PATCH_COMMAND)
-
-  set(work_dir)
-
-  if(cmd_set)
-    set(work_dir ${source_dir})
-  endif()
-
-  get_property(log TARGET ${name} PROPERTY _EP_LOG_PATCH)
-  if(log)
-    set(log LOG 1)
-  else()
-    set(log "")
-  endif()
-
-  _ep_get_update_disconnected(update_disconnected ${name})
-  if(update_disconnected)
-    set(update_dep skip-update)
-  else()
-    set(update_dep update)
-  endif()
-
-  set(__cmdQuoted)
-  foreach(__item IN LISTS cmd)
-    string(APPEND __cmdQuoted " [==[${__item}]==]")
-  endforeach()
-  cmake_language(EVAL CODE "
-    ExternalProject_Add_Step(${name} patch
-      COMMAND ${__cmdQuoted}
-      WORKING_DIRECTORY \${work_dir}
-      DEPENDEES download \${update_dep}
-      ${log}
-      )"
-  )
-endfunction()
-
-
-function(_ep_extract_configure_command var name)
-  get_property(cmd_set TARGET ${name} PROPERTY _EP_CONFIGURE_COMMAND SET)
-  if(cmd_set)
-    get_property(cmd TARGET ${name} PROPERTY _EP_CONFIGURE_COMMAND)
-  else()
-    get_target_property(cmake_command ${name} _EP_CMAKE_COMMAND)
-    if(cmake_command)
-      set(cmd "${cmake_command}")
-    else()
-      set(cmd "${CMAKE_COMMAND}")
-    endif()
-
-    get_property(cmake_args TARGET ${name} PROPERTY _EP_CMAKE_ARGS)
-    list(APPEND cmd ${cmake_args})
-
-    # If there are any CMAKE_CACHE_ARGS or CMAKE_CACHE_DEFAULT_ARGS,
-    # write an initial cache and use it
-    get_property(cmake_cache_args TARGET ${name} PROPERTY _EP_CMAKE_CACHE_ARGS)
-    get_property(cmake_cache_default_args TARGET ${name} PROPERTY _EP_CMAKE_CACHE_DEFAULT_ARGS)
-
-    set(has_cmake_cache_args 0)
-    if(NOT "${cmake_cache_args}" STREQUAL "")
-      set(has_cmake_cache_args 1)
-    endif()
-
-    set(has_cmake_cache_default_args 0)
-    if(NOT "${cmake_cache_default_args}" STREQUAL "")
-      set(has_cmake_cache_default_args 1)
-    endif()
-
-    get_target_property(cmake_generator ${name} _EP_CMAKE_GENERATOR)
-    get_target_property(cmake_generator_instance ${name} _EP_CMAKE_GENERATOR_INSTANCE)
-    get_target_property(cmake_generator_platform ${name} _EP_CMAKE_GENERATOR_PLATFORM)
-    get_target_property(cmake_generator_toolset ${name} _EP_CMAKE_GENERATOR_TOOLSET)
-    if(cmake_generator)
-      list(APPEND cmd "-G${cmake_generator}")
-      if(cmake_generator_platform)
-        list(APPEND cmd "-A${cmake_generator_platform}")
-      endif()
-      if(cmake_generator_toolset)
-        list(APPEND cmd "-T${cmake_generator_toolset}")
-      endif()
-      if(cmake_generator_instance)
-        list(APPEND cmd "-DCMAKE_GENERATOR_INSTANCE:INTERNAL=${cmake_generator_instance}")
-      endif()
-    else()
-      if(CMAKE_EXTRA_GENERATOR)
-        list(APPEND cmd "-G${CMAKE_EXTRA_GENERATOR} - ${CMAKE_GENERATOR}")
-      else()
-        list(APPEND cmd "-G${CMAKE_GENERATOR}")
-        if("${CMAKE_GENERATOR}" MATCHES "Green Hills MULTI")
-          set(has_cmake_cache_default_args 1)
-          set(cmake_cache_default_args ${cmake_cache_default_args}
-            "-DGHS_TARGET_PLATFORM:STRING=${GHS_TARGET_PLATFORM}"
-            "-DGHS_PRIMARY_TARGET:STRING=${GHS_PRIMARY_TARGET}"
-            "-DGHS_TOOLSET_ROOT:STRING=${GHS_TOOLSET_ROOT}"
-            "-DGHS_OS_ROOT:STRING=${GHS_OS_ROOT}"
-            "-DGHS_OS_DIR:STRING=${GHS_OS_DIR}"
-            "-DGHS_BSP_NAME:STRING=${GHS_BSP_NAME}")
-        endif()
-      endif()
-      if(cmake_generator_platform)
-        message(FATAL_ERROR "Option CMAKE_GENERATOR_PLATFORM not allowed without CMAKE_GENERATOR.")
-      endif()
-      if(CMAKE_GENERATOR_PLATFORM)
-        list(APPEND cmd "-A${CMAKE_GENERATOR_PLATFORM}")
-      endif()
-      if(cmake_generator_toolset)
-        message(FATAL_ERROR "Option CMAKE_GENERATOR_TOOLSET not allowed without CMAKE_GENERATOR.")
-      endif()
-      if(CMAKE_GENERATOR_TOOLSET)
-        list(APPEND cmd "-T${CMAKE_GENERATOR_TOOLSET}")
-      endif()
-      if(cmake_generator_instance)
-        message(FATAL_ERROR "Option CMAKE_GENERATOR_INSTANCE not allowed without CMAKE_GENERATOR.")
-      endif()
-      if(CMAKE_GENERATOR_INSTANCE)
-        list(APPEND cmd "-DCMAKE_GENERATOR_INSTANCE:INTERNAL=${CMAKE_GENERATOR_INSTANCE}")
-      endif()
-    endif()
-
-    if(has_cmake_cache_args OR has_cmake_cache_default_args)
-      set(_ep_cache_args_script "<TMP_DIR>/${name}-cache-$<CONFIG>.cmake")
-      if(has_cmake_cache_args)
-        _ep_command_line_to_initial_cache(script_initial_cache_force "${cmake_cache_args}" 1)
-      endif()
-      if(has_cmake_cache_default_args)
-        _ep_command_line_to_initial_cache(script_initial_cache_default "${cmake_cache_default_args}" 0)
-      endif()
-      _ep_write_initial_cache(${name} "${_ep_cache_args_script}" "${script_initial_cache_force}${script_initial_cache_default}")
-      list(APPEND cmd "-C${_ep_cache_args_script}")
-      _ep_replace_location_tags(${name} _ep_cache_args_script)
-      set(_ep_cache_args_script
-        "${_ep_cache_args_script}"
-        PARENT_SCOPE)
-    endif()
-
-    list(APPEND cmd "<SOURCE_DIR><SOURCE_SUBDIR>")
-  endif()
-
-  set("${var}" "${cmd}" PARENT_SCOPE)
-endfunction()
-
-# TODO: Make sure external projects use the proper compiler
-function(_ep_add_configure_command name)
-  ExternalProject_Get_Property(${name} binary_dir tmp_dir)
-
-  # Depend on other external projects (file-level).
-  set(file_deps)
-  get_property(deps TARGET ${name} PROPERTY _EP_DEPENDS)
-  foreach(dep IN LISTS deps)
-    get_property(dep_type TARGET ${dep} PROPERTY TYPE)
-    if(dep_type STREQUAL "UTILITY")
-      get_property(is_ep TARGET ${dep} PROPERTY _EP_IS_EXTERNAL_PROJECT)
-      if(is_ep)
-        _ep_get_step_stampfile(${dep} "done" done_stamp_file)
-        list(APPEND file_deps ${done_stamp_file})
-      endif()
-    endif()
-  endforeach()
-
-  _ep_extract_configure_command(cmd ${name})
-
-  # If anything about the configure command changes, (command itself, cmake
-  # used, cmake args or cmake generator) then re-run the configure step.
-  # Fixes issue https://gitlab.kitware.com/cmake/cmake/-/issues/10258
-  #
-  if(NOT EXISTS ${tmp_dir}/${name}-cfgcmd.txt.in)
-    file(WRITE ${tmp_dir}/${name}-cfgcmd.txt.in "cmd='\@cmd\@'\n")
-  endif()
-  configure_file(${tmp_dir}/${name}-cfgcmd.txt.in ${tmp_dir}/${name}-cfgcmd.txt)
-  list(APPEND file_deps ${tmp_dir}/${name}-cfgcmd.txt)
-  list(APPEND file_deps ${_ep_cache_args_script})
-
-  get_property(log TARGET ${name} PROPERTY _EP_LOG_CONFIGURE)
-  if(log)
-    set(log LOG 1)
-  else()
-    set(log "")
-  endif()
-
-  get_property(uses_terminal TARGET ${name} PROPERTY
-    _EP_USES_TERMINAL_CONFIGURE)
-  if(uses_terminal)
-    set(uses_terminal USES_TERMINAL 1)
-  else()
-    set(uses_terminal "")
-  endif()
-
-  _ep_get_update_disconnected(update_disconnected ${name})
-  if(update_disconnected)
-    set(update_dep skip-update)
-  else()
-    set(update_dep update)
-  endif()
-
-  set(__cmdQuoted)
-  foreach(__item IN LISTS cmd)
-    string(APPEND __cmdQuoted " [==[${__item}]==]")
-  endforeach()
-  cmake_language(EVAL CODE "
-    ExternalProject_Add_Step(${name} configure
-      COMMAND ${__cmdQuoted}
-      WORKING_DIRECTORY \${binary_dir}
-      DEPENDEES \${update_dep} patch
-      DEPENDS \${file_deps}
-      ${log}
-      ${uses_terminal}
-      )"
-  )
-endfunction()
-
-
-function(_ep_add_build_command name)
-  ExternalProject_Get_Property(${name} binary_dir)
-
-  get_property(cmd_set TARGET ${name} PROPERTY _EP_BUILD_COMMAND SET)
-  if(cmd_set)
-    get_property(cmd TARGET ${name} PROPERTY _EP_BUILD_COMMAND)
-  else()
-    _ep_get_build_command(${name} BUILD cmd)
-  endif()
-
-  get_property(log TARGET ${name} PROPERTY _EP_LOG_BUILD)
-  if(log)
-    set(log LOG 1)
-  else()
-    set(log "")
-  endif()
-
-  get_property(uses_terminal TARGET ${name} PROPERTY
-    _EP_USES_TERMINAL_BUILD)
-  if(uses_terminal)
-    set(uses_terminal USES_TERMINAL 1)
-  else()
-    set(uses_terminal "")
-  endif()
-
-  get_property(build_always TARGET ${name} PROPERTY _EP_BUILD_ALWAYS)
-  if(build_always)
-    set(always 1)
-  else()
-    set(always 0)
-  endif()
-
-  get_property(build_byproducts TARGET ${name} PROPERTY _EP_BUILD_BYPRODUCTS)
-
-  set(__cmdQuoted)
-  foreach(__item IN LISTS cmd)
-    string(APPEND __cmdQuoted " [==[${__item}]==]")
-  endforeach()
-  cmake_language(EVAL CODE "
-    ExternalProject_Add_Step(${name} build
-      COMMAND ${__cmdQuoted}
-      BYPRODUCTS \${build_byproducts}
-      WORKING_DIRECTORY \${binary_dir}
-      DEPENDEES configure
-      ALWAYS \${always}
-      ${log}
-      ${uses_terminal}
-      )"
-  )
-endfunction()
-
-
-function(_ep_add_install_command name)
-  ExternalProject_Get_Property(${name} binary_dir)
-
-  get_property(cmd_set TARGET ${name} PROPERTY _EP_INSTALL_COMMAND SET)
-  if(cmd_set)
-    get_property(cmd TARGET ${name} PROPERTY _EP_INSTALL_COMMAND)
-  else()
-    _ep_get_build_command(${name} INSTALL cmd)
-  endif()
-
-  get_property(log TARGET ${name} PROPERTY _EP_LOG_INSTALL)
-  if(log)
-    set(log LOG 1)
-  else()
-    set(log "")
-  endif()
-
-  get_property(uses_terminal TARGET ${name} PROPERTY
-    _EP_USES_TERMINAL_INSTALL)
-  if(uses_terminal)
-    set(uses_terminal USES_TERMINAL 1)
-  else()
-    set(uses_terminal "")
-  endif()
-
-  set(__cmdQuoted)
-  foreach(__item IN LISTS cmd)
-    string(APPEND __cmdQuoted " [==[${__item}]==]")
-  endforeach()
-  cmake_language(EVAL CODE "
-    ExternalProject_Add_Step(${name} install
-      COMMAND ${__cmdQuoted}
-      WORKING_DIRECTORY \${binary_dir}
-      DEPENDEES build
-      ${log}
-      ${uses_terminal}
-      )"
-  )
-endfunction()
-
-
-function(_ep_add_test_command name)
-  ExternalProject_Get_Property(${name} binary_dir)
-
-  get_property(before TARGET ${name} PROPERTY _EP_TEST_BEFORE_INSTALL)
-  get_property(after TARGET ${name} PROPERTY _EP_TEST_AFTER_INSTALL)
-  get_property(exclude TARGET ${name} PROPERTY _EP_TEST_EXCLUDE_FROM_MAIN)
-  get_property(cmd_set TARGET ${name} PROPERTY _EP_TEST_COMMAND SET)
-
-  # Only actually add the test step if one of the test related properties is
-  # explicitly set. (i.e. the test step is omitted unless requested...)
-  #
-  if(cmd_set OR before OR after OR exclude)
-    if(cmd_set)
-      get_property(cmd TARGET ${name} PROPERTY _EP_TEST_COMMAND)
-    else()
-      _ep_get_build_command(${name} TEST cmd)
-    endif()
-
-    if(before)
-      set(dependees_args DEPENDEES build)
-    else()
-      set(dependees_args DEPENDEES install)
-    endif()
-
-    if(exclude)
-      set(dependers_args "")
-      set(exclude_args EXCLUDE_FROM_MAIN 1)
-    else()
-      if(before)
-        set(dependers_args DEPENDERS install)
-      else()
-        set(dependers_args "")
-      endif()
-      set(exclude_args "")
-    endif()
-
-    get_property(log TARGET ${name} PROPERTY _EP_LOG_TEST)
-    if(log)
-      set(log LOG 1)
-    else()
-      set(log "")
-    endif()
-
-    get_property(uses_terminal TARGET ${name} PROPERTY
-      _EP_USES_TERMINAL_TEST)
-    if(uses_terminal)
-      set(uses_terminal USES_TERMINAL 1)
-    else()
-      set(uses_terminal "")
-    endif()
-
-    set(__cmdQuoted)
-    foreach(__item IN LISTS cmd)
-      string(APPEND __cmdQuoted " [==[${__item}]==]")
-    endforeach()
-    cmake_language(EVAL CODE "
-      ExternalProject_Add_Step(${name} test
-        COMMAND ${__cmdQuoted}
-        WORKING_DIRECTORY \${binary_dir}
-        ${dependees_args}
-        ${dependers_args}
-        ${exclude_args}
-        ${log}
-        ${uses_terminal}
-        )"
-    )
-  endif()
-endfunction()
-
-
-function(ExternalProject_Add name)
-  cmake_policy(GET CMP0097 _EP_CMP0097
-    PARENT_SCOPE # undocumented, do not use outside of CMake
-    )
-
-  _ep_get_configuration_subdir_suffix(cfgdir)
-
-  # Add a custom target for the external project.
-  set(cmf_dir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles)
-  _ep_get_complete_stampfile(${name} complete_stamp_file)
-
-  # The "ALL" option to add_custom_target just tells it to not set the
-  # EXCLUDE_FROM_ALL target property. Later, if the EXCLUDE_FROM_ALL
-  # argument was passed, we explicitly set it for the target.
-  add_custom_target(${name} ALL DEPENDS ${complete_stamp_file})
-  set_property(TARGET ${name} PROPERTY _EP_IS_EXTERNAL_PROJECT 1)
-  set_property(TARGET ${name} PROPERTY LABELS ${name})
-  set_property(TARGET ${name} PROPERTY FOLDER "ExternalProjectTargets/${name}")
-
-  _ep_parse_arguments(ExternalProject_Add ${name} _EP_ "${ARGN}")
-  _ep_set_directories(${name})
-  _ep_get_step_stampfile(${name} "done" done_stamp_file)
-  _ep_get_step_stampfile(${name} "install" install_stamp_file)
-
-  # Set the EXCLUDE_FROM_ALL target property if required.
-  get_property(exclude_from_all TARGET ${name} PROPERTY _EP_EXCLUDE_FROM_ALL)
-  if(exclude_from_all)
-    set_property(TARGET ${name} PROPERTY EXCLUDE_FROM_ALL TRUE)
-  endif()
-
-  # The 'complete' step depends on all other steps and creates a
-  # 'done' mark.  A dependent external project's 'configure' step
-  # depends on the 'done' mark so that it rebuilds when this project
-  # rebuilds.  It is important that 'done' is not the output of any
-  # custom command so that CMake does not propagate build rules to
-  # other external project targets, which may cause problems during
-  # parallel builds.  However, the Ninja generator needs to see the entire
-  # dependency graph, and can cope with custom commands belonging to
-  # multiple targets, so we add the 'done' mark as an output for Ninja only.
-  set(complete_outputs ${complete_stamp_file})
-  if(${CMAKE_GENERATOR} MATCHES "Ninja")
-    set(complete_outputs ${complete_outputs} ${done_stamp_file})
-  endif()
-
-  add_custom_command(
-    OUTPUT ${complete_outputs}
-    COMMENT "Completed '${name}'"
-    COMMAND ${CMAKE_COMMAND} -E make_directory ${cmf_dir}${cfgdir}
-    COMMAND ${CMAKE_COMMAND} -E touch ${complete_stamp_file}
-    COMMAND ${CMAKE_COMMAND} -E touch ${done_stamp_file}
-    DEPENDS ${install_stamp_file}
-    VERBATIM
-    )
-
-
-  # Depend on other external projects (target-level).
-  get_property(deps TARGET ${name} PROPERTY _EP_DEPENDS)
-  foreach(arg IN LISTS deps)
-    add_dependencies(${name} ${arg})
-  endforeach()
-
-  # Set up custom build steps based on the target properties.
-  # Each step depends on the previous one.
-  #
-  # The target depends on the output of the final step.
-  # (Already set up above in the DEPENDS of the add_custom_target command.)
-  #
-  _ep_add_mkdir_command(${name})
-  _ep_add_download_command(${name})
-  _ep_add_update_command(${name})
-  _ep_add_patch_command(${name})
-  _ep_add_configure_command(${name})
-  _ep_add_build_command(${name})
-  _ep_add_install_command(${name})
-
-  # Test is special in that it might depend on build, or it might depend
-  # on install.
-  #
-  _ep_add_test_command(${name})
-endfunction()
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FeatureSummary.cmake b/share/cmake-3.18/Modules/FeatureSummary.cmake
deleted file mode 100644
index 4a3e83a..0000000
--- a/share/cmake-3.18/Modules/FeatureSummary.cmake
+++ /dev/null
@@ -1,739 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FeatureSummary
---------------
-
-Functions for generating a summary of enabled/disabled features.
-
-These functions can be used to generate a summary of enabled and disabled
-packages and/or feature for a build tree such as::
-
-    -- The following OPTIONAL packages have been found:
-    LibXml2 (required version >= 2.4), XML processing lib, <http://xmlsoft.org>
-       * Enables HTML-import in MyWordProcessor
-       * Enables odt-export in MyWordProcessor
-    PNG, A PNG image library., <http://www.libpng.org/pub/png/>
-       * Enables saving screenshots
-    -- The following OPTIONAL packages have not been found:
-    Lua51, The Lua scripting language., <http://www.lua.org>
-       * Enables macros in MyWordProcessor
-    Foo, Foo provides cool stuff.
-
-Global Properties
-^^^^^^^^^^^^^^^^^
-
-.. variable:: FeatureSummary_PKG_TYPES
-
-The global property :variable:`FeatureSummary_PKG_TYPES` defines the type of
-packages used by `FeatureSummary`.
-
-The order in this list is important, the first package type in the list is the
-least important, the last is the most important. the of a package can only be
-changed to higher types.
-
-The default package types are , ``RUNTIME``, ``OPTIONAL``, ``RECOMMENDED`` and
-``REQUIRED``, and their importance is
-``RUNTIME < OPTIONAL < RECOMMENDED < REQUIRED``.
-
-
-.. variable:: FeatureSummary_REQUIRED_PKG_TYPES
-
-The global property :variable:`FeatureSummary_REQUIRED_PKG_TYPES` defines which
-package types are required.
-
-If one or more package in this categories has not been found, CMake will abort
-when calling :command:`feature_summary` with the
-'FATAL_ON_MISSING_REQUIRED_PACKAGES' option enabled.
-
-The default value for this global property is ``REQUIRED``.
-
-
-.. variable:: FeatureSummary_DEFAULT_PKG_TYPE
-
-The global property :variable:`FeatureSummary_DEFAULT_PKG_TYPE` defines which
-package type is the default one.
-When calling :command:`feature_summary`, if the user did not set the package type
-explicitly, the package will be assigned to this category.
-
-This value must be one of the types defined in the
-:variable:`FeatureSummary_PKG_TYPES` global property unless the package type
-is set for all the packages.
-
-The default value for this global property is ``OPTIONAL``.
-
-
-.. variable:: FeatureSummary_<TYPE>_DESCRIPTION
-
-The global property :variable:`FeatureSummary_<TYPE>_DESCRIPTION` can be defined
-for each type to replace the type name with the specified string whenever the
-package type is used in an output string.
-
-If not set, the string "``<TYPE>`` packages" is used.
-
-
-#]=======================================================================]
-
-get_property(_fsPkgTypeIsSet GLOBAL PROPERTY FeatureSummary_PKG_TYPES SET)
-if(NOT _fsPkgTypeIsSet)
-  set_property(GLOBAL PROPERTY FeatureSummary_PKG_TYPES RUNTIME OPTIONAL RECOMMENDED REQUIRED)
-endif()
-
-get_property(_fsReqPkgTypesIsSet GLOBAL PROPERTY FeatureSummary_REQUIRED_PKG_TYPES SET)
-if(NOT _fsReqPkgTypesIsSet)
-  set_property(GLOBAL PROPERTY FeatureSummary_REQUIRED_PKG_TYPES REQUIRED)
-endif()
-
-get_property(_fsDefaultPkgTypeIsSet GLOBAL PROPERTY FeatureSummary_DEFAULT_PKG_TYPE SET)
-if(NOT _fsDefaultPkgTypeIsSet)
-  set_property(GLOBAL PROPERTY FeatureSummary_DEFAULT_PKG_TYPE OPTIONAL)
-endif()
-
-#[=======================================================================[.rst:
-
-Functions
-^^^^^^^^^
-
-#]=======================================================================]
-
-function(_FS_GET_FEATURE_SUMMARY _property _var _includeQuiet)
-
-  get_property(_fsPkgTypes GLOBAL PROPERTY FeatureSummary_PKG_TYPES)
-  get_property(_fsDefaultPkgType GLOBAL PROPERTY FeatureSummary_DEFAULT_PKG_TYPE)
-
-  set(_type "ANY")
-  foreach(_fsPkgType ${_fsPkgTypes})
-    if("${_property}" MATCHES "${_fsPkgType}_PACKAGES_(NOT_)?FOUND")
-      set(_type "${_fsPkgType}")
-      break()
-    endif()
-  endforeach()
-
-  if("${_property}" MATCHES "PACKAGES_FOUND")
-    set(_property "PACKAGES_FOUND")
-  elseif("${_property}" MATCHES "PACKAGES_NOT_FOUND")
-    set(_property "PACKAGES_NOT_FOUND")
-  endif()
-
-
-  set(_currentFeatureText "")
-  get_property(_EnabledFeatures  GLOBAL PROPERTY ${_property})
-  if(_EnabledFeatures)
-    list(REMOVE_DUPLICATES _EnabledFeatures)
-  endif(_EnabledFeatures)
-
-  foreach(_currentFeature ${_EnabledFeatures})
-
-    # does this package belong to the type we currently want to list ?
-    get_property(_currentType  GLOBAL PROPERTY _CMAKE_${_currentFeature}_TYPE)
-    if(NOT _currentType)
-      list(FIND _fsPkgTypes "${_fsDefaultPkgType}" _defaultInPkgTypes)
-      if("${_defaultInPkgTypes}" STREQUAL "-1")
-        string(REGEX REPLACE ";([^;]+)$" " and \\1" _fsPkgTypes_msg "${_fsPkgTypes}")
-        string(REPLACE ";" ", " _fsPkgTypes_msg "${_fsPkgTypes_msg}")
-        message(FATAL_ERROR "Bad package property type ${_fsDefaultPkgType} used in global property FeatureSummary_DEFAULT_PKG_TYPE. "
-                            "Valid types are ${_fsPkgTypes_msg}. "
-                            "Either update FeatureSummary_DEFAULT_PKG_TYPE or add ${_fsDefaultPkgType} to the FeatureSummary_PKG_TYPES global property.")
-      endif()
-      set(_currentType ${_fsDefaultPkgType})
-    endif()
-
-    if("${_type}" STREQUAL ANY  OR  "${_type}" STREQUAL "${_currentType}")
-      # check whether the current feature/package should be in the output depending on whether it was QUIET or not
-      set(includeThisOne TRUE)
-      set(_required FALSE)
-      # skip QUIET packages, except if they are REQUIRED or INCLUDE_QUIET_PACKAGES has been set
-      get_property(_fsReqPkgTypes GLOBAL PROPERTY FeatureSummary_REQUIRED_PKG_TYPES)
-      foreach(_fsReqPkgType ${_fsReqPkgTypes})
-        if("${_currentType}" STREQUAL "${_fsReqPkgType}")
-          set(_required TRUE)
-          break()
-        endif()
-      endforeach()
-      if(NOT _required AND NOT _includeQuiet)
-        get_property(_isQuiet  GLOBAL PROPERTY _CMAKE_${_currentFeature}_QUIET)
-        if(_isQuiet)
-          set(includeThisOne FALSE)
-        endif()
-      endif()
-      get_property(_isTransitiveDepend
-        GLOBAL PROPERTY _CMAKE_${_currentFeature}_TRANSITIVE_DEPENDENCY
-      )
-      if(_isTransitiveDepend)
-        set(includeThisOne FALSE)
-      endif()
-
-      if(includeThisOne)
-
-        string(APPEND _currentFeatureText "\n * ${_currentFeature}")
-        get_property(_info  GLOBAL PROPERTY _CMAKE_${_currentFeature}_REQUIRED_VERSION)
-        if(_info)
-          string(APPEND _currentFeatureText " (required version ${_info})")
-        endif()
-        get_property(_info  GLOBAL PROPERTY _CMAKE_${_currentFeature}_DESCRIPTION)
-        if(_info)
-          string(APPEND _currentFeatureText ", ${_info}")
-        endif()
-        get_property(_info  GLOBAL PROPERTY _CMAKE_${_currentFeature}_URL)
-        if(_info)
-          string(APPEND _currentFeatureText ", <${_info}>")
-        endif()
-
-        get_property(_info  GLOBAL PROPERTY _CMAKE_${_currentFeature}_PURPOSE)
-        foreach(_purpose ${_info})
-          string(APPEND _currentFeatureText "\n   ${_purpose}")
-        endforeach()
-
-      endif()
-
-    endif()
-
-  endforeach()
-  set(${_var} "${_currentFeatureText}" PARENT_SCOPE)
-endfunction()
-
-
-#[=======================================================================[.rst:
-.. command:: feature_summary
-
-  ::
-
-    feature_summary( [FILENAME <file>]
-                     [APPEND]
-                     [VAR <variable_name>]
-                     [INCLUDE_QUIET_PACKAGES]
-                     [FATAL_ON_MISSING_REQUIRED_PACKAGES]
-                     [DESCRIPTION "<description>" | DEFAULT_DESCRIPTION]
-                     [QUIET_ON_EMPTY]
-                     WHAT (ALL
-                          | PACKAGES_FOUND | PACKAGES_NOT_FOUND
-                          | <TYPE>_PACKAGES_FOUND | <TYPE>_PACKAGES_NOT_FOUND
-                          | ENABLED_FEATURES | DISABLED_FEATURES)
-                   )
-
-  The ``feature_summary()`` macro can be used to print information about
-  enabled or disabled packages or features of a project.  By default,
-  only the names of the features/packages will be printed and their
-  required version when one was specified.  Use ``set_package_properties()``
-  to add more useful information, like e.g.  a download URL for the
-  respective package or their purpose in the project.
-
-  The ``WHAT`` option is the only mandatory option.  Here you specify what
-  information will be printed:
-
-  ``ALL``
-   print everything
-  ``ENABLED_FEATURES``
-   the list of all features which are enabled
-  ``DISABLED_FEATURES``
-   the list of all features which are disabled
-  ``PACKAGES_FOUND``
-   the list of all packages which have been found
-  ``PACKAGES_NOT_FOUND``
-   the list of all packages which have not been found
-
-  For each package type ``<TYPE>`` defined by the
-  :variable:`FeatureSummary_PKG_TYPES` global property, the following
-  information can also be used:
-
-  ``<TYPE>_PACKAGES_FOUND``
-   only those packages which have been found which have the type <TYPE>
-  ``<TYPE>_PACKAGES_NOT_FOUND``
-   only those packages which have not been found which have the type <TYPE>
-
-  With the exception of the ``ALL`` value, these values can be combined
-  in order to customize the output. For example:
-
-  .. code-block:: cmake
-
-    feature_summary(WHAT ENABLED_FEATURES DISABLED_FEATURES)
-
-  If a ``FILENAME`` is given, the information is printed into this file.  If
-  ``APPEND`` is used, it is appended to this file, otherwise the file is
-  overwritten if it already existed.  If the VAR option is used, the
-  information is "printed" into the specified variable.  If ``FILENAME`` is
-  not used, the information is printed to the terminal.  Using the
-  ``DESCRIPTION`` option a description or headline can be set which will be
-  printed above the actual content.  If only one type of
-  package was requested, no title is printed, unless it is explicitly set using
-  either ``DESCRIPTION`` to use a custom string, or ``DEFAULT_DESCRIPTION`` to
-  use a default title for the requested type.
-  If ``INCLUDE_QUIET_PACKAGES`` is given, packages which have been searched with
-  ``find_package(... QUIET)`` will also be listed. By default they are skipped.
-  If ``FATAL_ON_MISSING_REQUIRED_PACKAGES`` is given, CMake will abort if a
-  package which is marked as one of the package types listed in the
-  :variable:`FeatureSummary_REQUIRED_PKG_TYPES` global property has not been
-  found.
-  The default value for the :variable:`FeatureSummary_REQUIRED_PKG_TYPES` global
-  property is ``REQUIRED``.
-
-  The :variable:`FeatureSummary_DEFAULT_PKG_TYPE` global property can be
-  modified to change the default package type assigned when not explicitly
-  assigned by the user.
-
-  If the ``QUIET_ON_EMPTY`` option is used, if only one type of package was
-  requested, and no packages belonging to that category were found, then no
-  output (including the ``DESCRIPTION``) is printed or added to the ``VAR``
-  variable.
-
-  Example 1, append everything to a file:
-
-  .. code-block:: cmake
-
-   include(FeatureSummary)
-   feature_summary(WHAT ALL
-                   FILENAME ${CMAKE_BINARY_DIR}/all.log APPEND)
-
-  Example 2, print the enabled features into the variable
-  enabledFeaturesText, including QUIET packages:
-
-  .. code-block:: cmake
-
-   include(FeatureSummary)
-   feature_summary(WHAT ENABLED_FEATURES
-                   INCLUDE_QUIET_PACKAGES
-                   DESCRIPTION "Enabled Features:"
-                   VAR enabledFeaturesText)
-   message(STATUS "${enabledFeaturesText}")
-
-  Example 3, change default package types and print only the categories that
-  are not empty:
-
-  .. code-block:: cmake
-
-   include(FeatureSummary)
-   set_property(GLOBAL APPEND PROPERTY FeatureSummary_PKG_TYPES BUILD)
-   find_package(FOO)
-   set_package_properties(FOO PROPERTIES TYPE BUILD)
-   feature_summary(WHAT BUILD_PACKAGES_FOUND
-                   Description "Build tools found:"
-                   QUIET_ON_EMPTY)
-   feature_summary(WHAT BUILD_PACKAGES_NOT_FOUND
-                   Description "Build tools not found:"
-                   QUIET_ON_EMPTY)
-
-#]=======================================================================]
-
-function(FEATURE_SUMMARY)
-# CMAKE_PARSE_ARGUMENTS(<prefix> <options> <one_value_keywords> <multi_value_keywords> args...)
-  set(options APPEND
-              INCLUDE_QUIET_PACKAGES
-              FATAL_ON_MISSING_REQUIRED_PACKAGES
-              QUIET_ON_EMPTY
-              DEFAULT_DESCRIPTION)
-  set(oneValueArgs FILENAME
-                   VAR
-                   DESCRIPTION)
-  set(multiValueArgs WHAT)
-
-  CMAKE_PARSE_ARGUMENTS(_FS "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${_FIRST_ARG} ${ARGN})
-
-  if(_FS_UNPARSED_ARGUMENTS)
-    message(FATAL_ERROR "Unknown keywords given to FEATURE_SUMMARY(): \"${_FS_UNPARSED_ARGUMENTS}\"")
-  endif()
-
-  if(NOT _FS_WHAT)
-    message(FATAL_ERROR "The call to FEATURE_SUMMARY() doesn't set the required WHAT argument.")
-  endif()
-
-  if(_FS_DEFAULT_DESCRIPTION AND DEFINED _FS_DESCRIPTION)
-    message(WARNING "DEFAULT_DESCRIPTION option discarded since DESCRIPTION is set.")
-    set(_FS_DEFAULT_DESCRIPTION 0)
-  endif()
-
-  set(validWhatParts "ENABLED_FEATURES"
-                     "DISABLED_FEATURES"
-                     "PACKAGES_FOUND"
-                     "PACKAGES_NOT_FOUND")
-
-  get_property(_fsPkgTypes GLOBAL PROPERTY FeatureSummary_PKG_TYPES)
-  get_property(_fsReqPkgTypes GLOBAL PROPERTY FeatureSummary_REQUIRED_PKG_TYPES)
-  foreach(_fsPkgType ${_fsPkgTypes})
-    list(APPEND validWhatParts "${_fsPkgType}_PACKAGES_FOUND"
-                               "${_fsPkgType}_PACKAGES_NOT_FOUND")
-  endforeach()
-
-  set(title_ENABLED_FEATURES               "The following features have been enabled:")
-  set(title_DISABLED_FEATURES              "The following features have been disabled:")
-  set(title_PACKAGES_FOUND                 "The following packages have been found:")
-  set(title_PACKAGES_NOT_FOUND             "The following packages have not been found:")
-  foreach(_fsPkgType ${_fsPkgTypes})
-    set(_fsPkgTypeDescription "${_fsPkgType} packages")
-    get_property(_fsPkgTypeDescriptionIsSet GLOBAL PROPERTY FeatureSummary_${_fsPkgType}_DESCRIPTION SET)
-    if(_fsPkgTypeDescriptionIsSet)
-      get_property(_fsPkgTypeDescription GLOBAL PROPERTY FeatureSummary_${_fsPkgType}_DESCRIPTION )
-    endif()
-    set(title_${_fsPkgType}_PACKAGES_FOUND     "The following ${_fsPkgTypeDescription} have been found:")
-    set(title_${_fsPkgType}_PACKAGES_NOT_FOUND "The following ${_fsPkgTypeDescription} have not been found:")
-  endforeach()
-
-  list(FIND validWhatParts "${_FS_WHAT}" indexInList)
-  if(NOT "${indexInList}" STREQUAL "-1")
-    _FS_GET_FEATURE_SUMMARY( ${_FS_WHAT} _featureSummary ${_FS_INCLUDE_QUIET_PACKAGES} )
-    if(_featureSummary OR NOT _FS_QUIET_ON_EMPTY)
-      if(_FS_DEFAULT_DESCRIPTION)
-        set(_fullText "${title_${_FS_WHAT}}\n${_featureSummary}\n")
-      else()
-        set(_fullText "${_FS_DESCRIPTION}${_featureSummary}\n")
-      endif()
-    endif()
-
-    if(_featureSummary)
-      foreach(_fsReqPkgType ${_fsReqPkgTypes})
-        if("${_FS_WHAT}" STREQUAL "${_fsReqPkgType}_PACKAGES_NOT_FOUND")
-          set(requiredPackagesNotFound TRUE)
-          break()
-        endif()
-      endforeach()
-    endif()
-
-  else()
-    if("${_FS_WHAT}" STREQUAL "ALL")
-
-      set(allWhatParts "ENABLED_FEATURES")
-      foreach(_fsPkgType ${_fsPkgTypes})
-        list(APPEND allWhatParts "${_fsPkgType}_PACKAGES_FOUND")
-      endforeach()
-      list(APPEND allWhatParts "DISABLED_FEATURES")
-      foreach(_fsPkgType ${_fsPkgTypes})
-        list(APPEND allWhatParts "${_fsPkgType}_PACKAGES_NOT_FOUND")
-      endforeach()
-    else()
-      set(allWhatParts)
-      foreach(part ${_FS_WHAT})
-        list(FIND validWhatParts "${part}" indexInList)
-        if(NOT "${indexInList}" STREQUAL "-1")
-          list(APPEND allWhatParts "${part}")
-        else()
-          if("${part}" STREQUAL "ALL")
-            message(FATAL_ERROR "The WHAT argument of FEATURE_SUMMARY() contains ALL, which cannot be combined with other values.")
-          else()
-            message(FATAL_ERROR "The WHAT argument of FEATURE_SUMMARY() contains ${part}, which is not a valid value.")
-          endif()
-        endif()
-      endforeach()
-    endif()
-
-    set(_fullText "${_FS_DESCRIPTION}")
-    foreach(part ${allWhatParts})
-      set(_tmp)
-      _FS_GET_FEATURE_SUMMARY( ${part} _tmp ${_FS_INCLUDE_QUIET_PACKAGES})
-      if(_tmp)
-        if(_fullText)
-          string(APPEND _fullText "\n-- ")
-        endif()
-        string(APPEND _fullText "${title_${part}}\n${_tmp}\n")
-        foreach(_fsReqPkgType ${_fsReqPkgTypes})
-          if("${part}" STREQUAL "${_fsReqPkgType}_PACKAGES_NOT_FOUND")
-            set(requiredPackagesNotFound TRUE)
-            break()
-          endif()
-        endforeach()
-      endif()
-    endforeach()
-  endif()
-
-  if(_fullText OR NOT _FS_QUIET_ON_EMPTY)
-    if(_FS_FILENAME)
-      if(_FS_APPEND)
-        file(APPEND "${_FS_FILENAME}" "${_fullText}")
-      else()
-        file(WRITE  "${_FS_FILENAME}" "${_fullText}")
-      endif()
-
-    else()
-      if(NOT _FS_VAR)
-        message(STATUS "${_fullText}")
-      endif()
-    endif()
-
-    if(_FS_VAR)
-      set(${_FS_VAR} "${_fullText}" PARENT_SCOPE)
-    endif()
-  endif()
-
-  if(requiredPackagesNotFound  AND  _FS_FATAL_ON_MISSING_REQUIRED_PACKAGES)
-    message(FATAL_ERROR "feature_summary() Error: REQUIRED package(s) are missing, aborting CMake run.")
-  endif()
-
-endfunction()
-
-#[=======================================================================[.rst:
-.. command:: set_package_properties
-
-  ::
-
-    set_package_properties(<name> PROPERTIES
-                           [ URL <url> ]
-                           [ DESCRIPTION <description> ]
-                           [ TYPE (RUNTIME|OPTIONAL|RECOMMENDED|REQUIRED) ]
-                           [ PURPOSE <purpose> ]
-                          )
-
-  Use this macro to set up information about the named package, which
-  can then be displayed via FEATURE_SUMMARY().  This can be done either
-  directly in the Find-module or in the project which uses the module
-  after the find_package() call.  The features for which information can
-  be set are added automatically by the find_package() command.
-
-  ``URL <url>``
-    This should be the homepage of the package, or something similar.
-    Ideally this is set already directly in the Find-module.
-
-  ``DESCRIPTION <description>``
-    A short description what that package is, at most one sentence.
-    Ideally this is set already directly in the Find-module.
-
-  ``TYPE <type>``
-    What type of dependency has the using project on that package.
-    Default is ``OPTIONAL``.  In this case it is a package which can be used
-    by the project when available at buildtime, but it also work without.
-    ``RECOMMENDED`` is similar to ``OPTIONAL``, i.e.  the project will build if
-    the package is not present, but the functionality of the resulting
-    binaries will be severely limited.  If a ``REQUIRED`` package is not
-    available at buildtime, the project may not even build.  This can be
-    combined with the ``FATAL_ON_MISSING_REQUIRED_PACKAGES`` argument for
-    ``feature_summary()``.  Last, a ``RUNTIME`` package is a package which is
-    actually not used at all during the build, but which is required for
-    actually running the resulting binaries.  So if such a package is
-    missing, the project can still be built, but it may not work later on.
-    If ``set_package_properties()`` is called multiple times for the same
-    package with different TYPEs, the ``TYPE`` is only changed to higher
-    TYPEs (``RUNTIME < OPTIONAL < RECOMMENDED < REQUIRED``), lower TYPEs are
-    ignored.  The ``TYPE`` property is project-specific, so it cannot be set
-    by the Find-module, but must be set in the project.
-    Type accepted can be changed by setting the
-    :variable:`FeatureSummary_PKG_TYPES` global property.
-
-  ``PURPOSE <purpose>``
-    This describes which features this package enables in the
-    project, i.e.  it tells the user what functionality he gets in the
-    resulting binaries.  If set_package_properties() is called multiple
-    times for a package, all PURPOSE properties are appended to a list of
-    purposes of the package in the project.  As the TYPE property, also
-    the PURPOSE property is project-specific, so it cannot be set by the
-    Find-module, but must be set in the project.
-
-  Example for setting the info for a package:
-
-  .. code-block:: cmake
-
-    find_package(LibXml2)
-    set_package_properties(LibXml2 PROPERTIES
-                           DESCRIPTION "A XML processing library."
-                           URL "http://xmlsoft.org/")
-    # or
-    set_package_properties(LibXml2 PROPERTIES
-                           TYPE RECOMMENDED
-                           PURPOSE "Enables HTML-import in MyWordProcessor")
-    # or
-    set_package_properties(LibXml2 PROPERTIES
-                           TYPE OPTIONAL
-                           PURPOSE "Enables odt-export in MyWordProcessor")
-
-    find_package(DBUS)
-    set_package_properties(DBUS PROPERTIES
-      TYPE RUNTIME
-      PURPOSE "Necessary to disable the screensaver during a presentation")
-#]=======================================================================]
-function(SET_PACKAGE_PROPERTIES _name _props)
-  if(NOT "${_props}" STREQUAL "PROPERTIES")
-    message(FATAL_ERROR "PROPERTIES keyword is missing in SET_PACKAGE_PROPERTIES() call.")
-  endif()
-
-  set(options ) # none
-  set(oneValueArgs DESCRIPTION URL TYPE PURPOSE )
-  set(multiValueArgs ) # none
-
-  CMAKE_PARSE_ARGUMENTS(_SPP "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${ARGN})
-
-  if(_SPP_UNPARSED_ARGUMENTS)
-    message(FATAL_ERROR "Unknown keywords given to SET_PACKAGE_PROPERTIES(): \"${_SPP_UNPARSED_ARGUMENTS}\"")
-  endif()
-
-  if(_SPP_DESCRIPTION)
-    get_property(_info  GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION)
-    if(_info AND NOT "${_info}" STREQUAL "${_SPP_DESCRIPTION}")
-      message(STATUS "Warning: Property DESCRIPTION for package ${_name} already set to \"${_info}\", overriding it with \"${_SPP_DESCRIPTION}\"")
-    endif()
-
-    set_property(GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION "${_SPP_DESCRIPTION}" )
-  endif()
-
-
-  if(_SPP_URL)
-    get_property(_info  GLOBAL PROPERTY _CMAKE_${_name}_URL)
-    if(_info AND NOT "${_info}" STREQUAL "${_SPP_URL}")
-      message(STATUS "Warning: Property URL already set to \"${_info}\", overriding it with \"${_SPP_URL}\"")
-    endif()
-
-    set_property(GLOBAL PROPERTY _CMAKE_${_name}_URL "${_SPP_URL}" )
-  endif()
-
-
-  # handle the PURPOSE: use APPEND, since there can be multiple purposes for one package inside a project
-  if(_SPP_PURPOSE)
-    set_property(GLOBAL APPEND PROPERTY _CMAKE_${_name}_PURPOSE "${_SPP_PURPOSE}" )
-  endif()
-
-  get_property(_fsPkgTypes GLOBAL PROPERTY FeatureSummary_PKG_TYPES)
-  get_property(_fsDefaultPkgType GLOBAL PROPERTY FeatureSummary_DEFAULT_PKG_TYPE)
-
-  # handle the TYPE
-  if(DEFINED _SPP_TYPE)
-    # Supported types are listed in FeatureSummary_PKG_TYPES according to their priority
-    get_property(_fsPkgTypes GLOBAL PROPERTY FeatureSummary_PKG_TYPES)
-    list(FIND _fsPkgTypes ${_SPP_TYPE} _typeIndexInList)
-    if("${_typeIndexInList}" STREQUAL "-1" )
-      string(REGEX REPLACE ";([^;]+)$" " and \\1" _fsPkgTypes_msg "${_fsPkgTypes}")
-      string(REPLACE ";" ", " _fsPkgTypes_msg "${_fsPkgTypes_msg}")
-      message(FATAL_ERROR "Bad package property type ${_SPP_TYPE} used in SET_PACKAGE_PROPERTIES(). "
-                          "Valid types are ${_fsPkgTypes_msg}." )
-    endif()
-
-    get_property(_previousType  GLOBAL PROPERTY _CMAKE_${_name}_TYPE)
-    list(FIND _fsPkgTypes "${_previousType}" _prevTypeIndexInList)
-
-    # make sure a previously set TYPE is not overridden with a lower new TYPE:
-    if("${_typeIndexInList}" GREATER "${_prevTypeIndexInList}")
-      set_property(GLOBAL PROPERTY _CMAKE_${_name}_TYPE "${_SPP_TYPE}" )
-    endif()
-  endif()
-
-endfunction()
-
-#[=======================================================================[.rst:
-.. command:: add_feature_info
-
-  ::
-
-    add_feature_info(<name> <enabled> <description>)
-
-  Use this macro to add information about a feature with the given ``<name>``.
-  ``<enabled>`` contains whether this feature is enabled or not. It can be a
-  variable or a list of conditions.
-  ``<description>`` is a text describing the feature.  The information can
-  be displayed using ``feature_summary()`` for ``ENABLED_FEATURES`` and
-  ``DISABLED_FEATURES`` respectively.
-
-  Example for setting the info for a feature:
-
-  .. code-block:: cmake
-
-     option(WITH_FOO "Help for foo" ON)
-     add_feature_info(Foo WITH_FOO "The Foo feature provides very cool stuff.")
-#]=======================================================================]
-function(ADD_FEATURE_INFO _name _depends _desc)
-  set(_enabled 1)
-  foreach(_d ${_depends})
-    string(REGEX REPLACE " +" ";" _d "${_d}")
-    if(${_d})
-    else()
-      set(_enabled 0)
-      break()
-    endif()
-  endforeach()
-  if (${_enabled})
-    set_property(GLOBAL APPEND PROPERTY ENABLED_FEATURES "${_name}")
-  else ()
-    set_property(GLOBAL APPEND PROPERTY DISABLED_FEATURES "${_name}")
-  endif ()
-
-  set_property(GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION "${_desc}" )
-endfunction()
-
-
-# The stuff below is only kept for compatibility
-
-#[=======================================================================[.rst:
-Legacy Macros
-^^^^^^^^^^^^^
-
-The following macros are provided for compatibility with previous
-CMake versions:
-
-.. command:: set_package_info
-
-  ::
-
-    set_package_info(<name> <description> [ <url> [<purpose>] ])
-
-  Use this macro to set up information about the named package, which
-  can then be displayed via ``feature_summary()``.  This can be done either
-  directly in the Find-module or in the project which uses the module
-  after the :command:`find_package` call.  The features for which information
-  can be set are added automatically by the ``find_package()`` command.
-#]=======================================================================]
-function(SET_PACKAGE_INFO _name _desc)
-  message(DEPRECATION "SET_PACKAGE_INFO is deprecated. Use SET_PACKAGE_PROPERTIES instead.")
-  unset(_url)
-  unset(_purpose)
-  if(ARGC GREATER 2)
-    set(_url "${ARGV2}")
-  endif()
-  if(ARGC GREATER 3)
-    set(_purpose "${ARGV3}")
-  endif()
-  set_property(GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION "${_desc}" )
-  if(NOT _url STREQUAL "")
-    set_property(GLOBAL PROPERTY _CMAKE_${_name}_URL "${_url}" )
-  endif()
-  if(NOT _purpose STREQUAL "")
-    set_property(GLOBAL APPEND PROPERTY _CMAKE_${_name}_PURPOSE "${_purpose}" )
-  endif()
-endfunction()
-
-#[=======================================================================[.rst:
-.. command:: set_feature_info
-
-  ::
-
-    set_feature_info(<name> <description> [<url>])
-
-  Does the same as::
-
-    set_package_info(<name> <description> <url>)
-#]=======================================================================]
-function(SET_FEATURE_INFO)
-  message(DEPRECATION "SET_FEATURE_INFO is deprecated. Use ADD_FEATURE_INFO instead.")
-  SET_PACKAGE_INFO(${ARGN})
-endfunction()
-
-#[=======================================================================[.rst:
-.. command:: print_enabled_features
-
-  ::
-
-    print_enabled_features()
-
-  Does the same as
-
-  .. code-block:: cmake
-
-    feature_summary(WHAT ENABLED_FEATURES DESCRIPTION "Enabled features:")
-#]=======================================================================]
-function(PRINT_ENABLED_FEATURES)
-  message(DEPRECATION "PRINT_ENABLED_FEATURES is deprecated. Use
-    feature_summary(WHAT ENABLED_FEATURES DESCRIPTION \"Enabled features:\")")
-  FEATURE_SUMMARY(WHAT ENABLED_FEATURES  DESCRIPTION "Enabled features:")
-endfunction()
-
-#[=======================================================================[.rst:
-.. command:: print_disabled_features
-
-  ::
-
-    print_disabled_features()
-
-  Does the same as
-
-  .. code-block:: cmake
-
-    feature_summary(WHAT DISABLED_FEATURES DESCRIPTION "Disabled features:")
-#]=======================================================================]
-function(PRINT_DISABLED_FEATURES)
-  message(DEPRECATION "PRINT_DISABLED_FEATURES is deprecated. Use
-    feature_summary(WHAT DISABLED_FEATURES DESCRIPTION \"Disabled features:\")")
-  FEATURE_SUMMARY(WHAT DISABLED_FEATURES  DESCRIPTION "Disabled features:")
-endfunction()
diff --git a/share/cmake-3.18/Modules/FetchContent.cmake b/share/cmake-3.18/Modules/FetchContent.cmake
deleted file mode 100644
index e05ca96..0000000
--- a/share/cmake-3.18/Modules/FetchContent.cmake
+++ /dev/null
@@ -1,1154 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FetchContent
-------------------
-
-.. only:: html
-
-  .. contents::
-
-Overview
-^^^^^^^^
-
-This module enables populating content at configure time via any method
-supported by the :module:`ExternalProject` module.  Whereas
-:command:`ExternalProject_Add` downloads at build time, the
-``FetchContent`` module makes content available immediately, allowing the
-configure step to use the content in commands like :command:`add_subdirectory`,
-:command:`include` or :command:`file` operations.
-
-Content population details would normally be defined separately from the
-command that performs the actual population.  This separation ensures that
-all of the dependency details are defined before anything may try to use those
-details to populate content.  This is particularly important in more complex
-project hierarchies where dependencies may be shared between multiple projects.
-
-The following shows a typical example of declaring content details:
-
-.. code-block:: cmake
-
-  FetchContent_Declare(
-    googletest
-    GIT_REPOSITORY https://github.com/google/googletest.git
-    GIT_TAG        release-1.8.0
-  )
-
-For most typical cases, populating the content can then be done with a single
-command like so:
-
-.. code-block:: cmake
-
-  FetchContent_MakeAvailable(googletest)
-
-The above command not only populates the content, it also adds it to the main
-build (if possible) so that the main build can use the populated project's
-targets, etc.  In some cases, the main project may need to have more precise
-control over the population or may be required to explicitly define the
-population steps (e.g. if CMake versions earlier than 3.14 need to be
-supported).  The typical pattern of such custom steps looks like this:
-
-.. code-block:: cmake
-
-  FetchContent_GetProperties(googletest)
-  if(NOT googletest_POPULATED)
-    FetchContent_Populate(googletest)
-    add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR})
-  endif()
-
-Regardless of which population method is used, when using the
-declare-populate pattern with a hierarchical project arrangement, projects at
-higher levels in the hierarchy are able to override the population details of
-content specified anywhere lower in the project hierarchy.  The ability to
-detect whether content has already been populated ensures that even if
-multiple child projects want certain content to be available, the first one
-to populate it wins.  The other child project can simply make use of the
-already available content instead of repeating the population for itself.
-See the :ref:`Examples <fetch-content-examples>` section which demonstrates
-this scenario.
-
-The ``FetchContent`` module also supports defining and populating
-content in a single call, with no check for whether the content has been
-populated elsewhere in the project already.  This is a more low level
-operation and would not normally be the way the module is used, but it is
-sometimes useful as part of implementing some higher level feature or to
-populate some content in CMake's script mode.
-
-
-Commands
-^^^^^^^^
-
-Declaring Content Details
-"""""""""""""""""""""""""
-
-.. command:: FetchContent_Declare
-
-  .. code-block:: cmake
-
-    FetchContent_Declare(<name> <contentOptions>...)
-
-  The ``FetchContent_Declare()`` function records the options that describe
-  how to populate the specified content, but if such details have already
-  been recorded earlier in this project (regardless of where in the project
-  hierarchy), this and all later calls for the same content ``<name>`` are
-  ignored.  This "first to record, wins" approach is what allows hierarchical
-  projects to have parent projects override content details of child projects.
-
-  The content ``<name>`` can be any string without spaces, but good practice
-  would be to use only letters, numbers and underscores.  The name will be
-  treated case-insensitively and it should be obvious for the content it
-  represents, often being the name of the child project or the value given
-  to its top level :command:`project` command (if it is a CMake project).
-  For well-known public projects, the name should generally be the official
-  name of the project.  Choosing an unusual name makes it unlikely that other
-  projects needing that same content will use the same name, leading to
-  the content being populated multiple times.
-
-  The ``<contentOptions>`` can be any of the download or update/patch options
-  that the :command:`ExternalProject_Add` command understands.  The configure,
-  build, install and test steps are explicitly disabled and therefore options
-  related to them will be ignored.  The ``SOURCE_SUBDIR`` option is an
-  exception, see :command:`FetchContent_MakeAvailable` for details on how that
-  affects behavior.
-
-  In most cases, ``<contentOptions>`` will just be a couple of options defining
-  the download method and method-specific details like a commit tag or archive
-  hash.  For example:
-
-  .. code-block:: cmake
-
-    FetchContent_Declare(
-      googletest
-      GIT_REPOSITORY https://github.com/google/googletest.git
-      GIT_TAG        release-1.8.0
-    )
-
-    FetchContent_Declare(
-      myCompanyIcons
-      URL      https://intranet.mycompany.com/assets/iconset_1.12.tar.gz
-      URL_HASH 5588a7b18261c20068beabfb4f530b87
-    )
-
-    FetchContent_Declare(
-      myCompanyCertificates
-      SVN_REPOSITORY svn+ssh://svn.mycompany.com/srv/svn/trunk/certs
-      SVN_REVISION   -r12345
-    )
-
-Populating The Content
-""""""""""""""""""""""
-
-For most common scenarios, population means making content available to the
-main build according to previously declared details for that dependency.
-There are two main patterns for populating content, one based on calling
-:command:`FetchContent_GetProperties` and
-:command:`FetchContent_Populate` for more precise control and the other on
-calling :command:`FetchContent_MakeAvailable` for a simpler, more automated
-approach.  The former generally follows this canonical pattern:
-
-.. _`fetch-content-canonical-pattern`:
-
-.. code-block:: cmake
-
-  # Check if population has already been performed
-  FetchContent_GetProperties(<name>)
-  string(TOLOWER "<name>" lcName)
-  if(NOT ${lcName}_POPULATED)
-    # Fetch the content using previously declared details
-    FetchContent_Populate(<name>)
-
-    # Set custom variables, policies, etc.
-    # ...
-
-    # Bring the populated content into the build
-    add_subdirectory(${${lcName}_SOURCE_DIR} ${${lcName}_BINARY_DIR})
-  endif()
-
-The above is such a common pattern that, where no custom steps are needed
-between the calls to :command:`FetchContent_Populate` and
-:command:`add_subdirectory`, equivalent logic can be obtained by calling
-:command:`FetchContent_MakeAvailable` instead.  Where it meets the needs of
-the project, :command:`FetchContent_MakeAvailable` should be preferred, as it
-is simpler and provides additional features over the pattern above.
-
-.. command:: FetchContent_Populate
-
-  .. code-block:: cmake
-
-    FetchContent_Populate( <name> )
-
-  In most cases, the only argument given to ``FetchContent_Populate()`` is the
-  ``<name>``.  When used this way, the command assumes the content details have
-  been recorded by an earlier call to :command:`FetchContent_Declare`.  The
-  details are stored in a global property, so they are unaffected by things
-  like variable or directory scope.  Therefore, it doesn't matter where in the
-  project the details were previously declared, as long as they have been
-  declared before the call to ``FetchContent_Populate()``.  Those saved details
-  are then used to construct a call to :command:`ExternalProject_Add` in a
-  private sub-build to perform the content population immediately.  The
-  implementation of ``ExternalProject_Add()`` ensures that if the content has
-  already been populated in a previous CMake run, that content will be reused
-  rather than repopulating them again.  For the common case where population
-  involves downloading content, the cost of the download is only paid once.
-
-  An internal global property records when a particular content population
-  request has been processed.  If ``FetchContent_Populate()`` is called more
-  than once for the same content name within a configure run, the second call
-  will halt with an error.  Projects can and should check whether content
-  population has already been processed with the
-  :command:`FetchContent_GetProperties` command before calling
-  ``FetchContent_Populate()``.
-
-  ``FetchContent_Populate()`` will set three variables in the scope of the
-  caller; ``<lcName>_POPULATED``, ``<lcName>_SOURCE_DIR`` and
-  ``<lcName>_BINARY_DIR``, where ``<lcName>`` is the lowercased ``<name>``.
-  ``<lcName>_POPULATED`` will always be set to ``True`` by the call.
-  ``<lcName>_SOURCE_DIR`` is the location where the
-  content can be found upon return (it will have already been populated), while
-  ``<lcName>_BINARY_DIR`` is a directory intended for use as a corresponding
-  build directory.  The main use case for the two directory variables is to
-  call :command:`add_subdirectory` immediately after population, i.e.:
-
-  .. code-block:: cmake
-
-    FetchContent_Populate(FooBar ...)
-    add_subdirectory(${foobar_SOURCE_DIR} ${foobar_BINARY_DIR})
-
-  The values of the three variables can also be retrieved from anywhere in the
-  project hierarchy using the :command:`FetchContent_GetProperties` command.
-
-  A number of cache variables influence the behavior of all content population
-  performed using details saved from a :command:`FetchContent_Declare` call:
-
-  ``FETCHCONTENT_BASE_DIR``
-    In most cases, the saved details do not specify any options relating to the
-    directories to use for the internal sub-build, final source and build areas.
-    It is generally best to leave these decisions up to the ``FetchContent``
-    module to handle on the project's behalf.  The ``FETCHCONTENT_BASE_DIR``
-    cache variable controls the point under which all content population
-    directories are collected, but in most cases developers would not need to
-    change this.  The default location is ``${CMAKE_BINARY_DIR}/_deps``, but if
-    developers change this value, they should aim to keep the path short and
-    just below the top level of the build tree to avoid running into path
-    length problems on Windows.
-
-  ``FETCHCONTENT_QUIET``
-    The logging output during population can be quite verbose, making the
-    configure stage quite noisy.  This cache option (``ON`` by default) hides
-    all population output unless an error is encountered.  If experiencing
-    problems with hung downloads, temporarily switching this option off may
-    help diagnose which content population is causing the issue.
-
-  ``FETCHCONTENT_FULLY_DISCONNECTED``
-    When this option is enabled, no attempt is made to download or update
-    any content.  It is assumed that all content has already been populated in
-    a previous run or the source directories have been pointed at existing
-    contents the developer has provided manually (using options described
-    further below).  When the developer knows that no changes have been made to
-    any content details, turning this option ``ON`` can significantly speed up
-    the configure stage.  It is ``OFF`` by default.
-
-  ``FETCHCONTENT_UPDATES_DISCONNECTED``
-    This is a less severe download/update control compared to
-    ``FETCHCONTENT_FULLY_DISCONNECTED``.  Instead of bypassing all download and
-    update logic, the ``FETCHCONTENT_UPDATES_DISCONNECTED`` only disables the
-    update stage.  Therefore, if content has not been downloaded previously,
-    it will still be downloaded when this option is enabled.  This can speed up
-    the configure stage, but not as much as
-    ``FETCHCONTENT_FULLY_DISCONNECTED``.  It is ``OFF`` by default.
-
-  In addition to the above cache variables, the following cache variables are
-  also defined for each content name (``<ucName>`` is the uppercased value of
-  ``<name>``):
-
-  ``FETCHCONTENT_SOURCE_DIR_<ucName>``
-    If this is set, no download or update steps are performed for the specified
-    content and the ``<lcName>_SOURCE_DIR`` variable returned to the caller is
-    pointed at this location.  This gives developers a way to have a separate
-    checkout of the content that they can modify freely without interference
-    from the build.  The build simply uses that existing source, but it still
-    defines ``<lcName>_BINARY_DIR`` to point inside its own build area.
-    Developers are strongly encouraged to use this mechanism rather than
-    editing the sources populated in the default location, as changes to
-    sources in the default location can be lost when content population details
-    are changed by the project.
-
-  ``FETCHCONTENT_UPDATES_DISCONNECTED_<ucName>``
-    This is the per-content equivalent of
-    ``FETCHCONTENT_UPDATES_DISCONNECTED``. If the global option or this option
-    is ``ON``, then updates will be disabled for the named content.
-    Disabling updates for individual content can be useful for content whose
-    details rarely change, while still leaving other frequently changing
-    content with updates enabled.
-
-
-  The ``FetchContent_Populate()`` command also supports a syntax allowing the
-  content details to be specified directly rather than using any saved
-  details.  This is more low-level and use of this form is generally to be
-  avoided in favour of using saved content details as outlined above.
-  Nevertheless, in certain situations it can be useful to invoke the content
-  population as an isolated operation (typically as part of implementing some
-  other higher level feature or when using CMake in script mode):
-
-  .. code-block:: cmake
-
-    FetchContent_Populate( <name>
-      [QUIET]
-      [SUBBUILD_DIR <subBuildDir>]
-      [SOURCE_DIR <srcDir>]
-      [BINARY_DIR <binDir>]
-      ...
-    )
-
-  This form has a number of key differences to that where only ``<name>`` is
-  provided:
-
-  - All required population details are assumed to have been provided directly
-    in the call to ``FetchContent_Populate()``. Any saved details for
-    ``<name>`` are ignored.
-  - No check is made for whether content for ``<name>`` has already been
-    populated.
-  - No global property is set to record that the population has occurred.
-  - No global properties record the source or binary directories used for the
-    populated content.
-  - The ``FETCHCONTENT_FULLY_DISCONNECTED`` and
-    ``FETCHCONTENT_UPDATES_DISCONNECTED`` cache variables are ignored.
-
-  The ``<lcName>_SOURCE_DIR`` and ``<lcName>_BINARY_DIR`` variables are still
-  returned to the caller, but since these locations are not stored as global
-  properties when this form is used, they are only available to the calling
-  scope and below rather than the entire project hierarchy.  No
-  ``<lcName>_POPULATED`` variable is set in the caller's scope with this form.
-
-  The supported options for ``FetchContent_Populate()`` are the same as those
-  for :command:`FetchContent_Declare()`.  Those few options shown just
-  above are either specific to ``FetchContent_Populate()`` or their behavior is
-  slightly modified from how :command:`ExternalProject_Add` treats them.
-
-  ``QUIET``
-    The ``QUIET`` option can be given to hide the output associated with
-    populating the specified content.  If the population fails, the output will
-    be shown regardless of whether this option was given or not so that the
-    cause of the failure can be diagnosed.  The global ``FETCHCONTENT_QUIET``
-    cache variable has no effect on ``FetchContent_Populate()`` calls where the
-    content details are provided directly.
-
-  ``SUBBUILD_DIR``
-    The ``SUBBUILD_DIR`` argument can be provided to change the location of the
-    sub-build created to perform the population.  The default value is
-    ``${CMAKE_CURRENT_BINARY_DIR}/<lcName>-subbuild`` and it would be unusual
-    to need to override this default.  If a relative path is specified, it will
-    be interpreted as relative to :variable:`CMAKE_CURRENT_BINARY_DIR`.
-    This option should not be confused with the ``SOURCE_SUBDIR`` option which
-    only affects the :command:`FetchContent_MakeAvailable` command.
-
-  ``SOURCE_DIR``, ``BINARY_DIR``
-    The ``SOURCE_DIR`` and ``BINARY_DIR`` arguments are supported by
-    :command:`ExternalProject_Add`, but different default values are used by
-    ``FetchContent_Populate()``.  ``SOURCE_DIR`` defaults to
-    ``${CMAKE_CURRENT_BINARY_DIR}/<lcName>-src`` and ``BINARY_DIR`` defaults to
-    ``${CMAKE_CURRENT_BINARY_DIR}/<lcName>-build``.  If a relative path is
-    specified, it will be interpreted as relative to
-    :variable:`CMAKE_CURRENT_BINARY_DIR`.
-
-  In addition to the above explicit options, any other unrecognized options are
-  passed through unmodified to :command:`ExternalProject_Add` to perform the
-  download, patch and update steps.  The following options are explicitly
-  prohibited (they are disabled by the ``FetchContent_Populate()`` command):
-
-  - ``CONFIGURE_COMMAND``
-  - ``BUILD_COMMAND``
-  - ``INSTALL_COMMAND``
-  - ``TEST_COMMAND``
-
-  If using ``FetchContent_Populate()`` within CMake's script mode, be aware
-  that the implementation sets up a sub-build which therefore requires a CMake
-  generator and build tool to be available. If these cannot be found by
-  default, then the :variable:`CMAKE_GENERATOR` and/or
-  :variable:`CMAKE_MAKE_PROGRAM` variables will need to be set appropriately
-  on the command line invoking the script.
-
-
-.. command:: FetchContent_GetProperties
-
-  When using saved content details, a call to :command:`FetchContent_Populate`
-  records information in global properties which can be queried at any time.
-  This information includes the source and binary directories associated with
-  the content and also whether or not the content population has been processed
-  during the current configure run.
-
-  .. code-block:: cmake
-
-    FetchContent_GetProperties( <name>
-      [SOURCE_DIR <srcDirVar>]
-      [BINARY_DIR <binDirVar>]
-      [POPULATED <doneVar>]
-    )
-
-  The ``SOURCE_DIR``, ``BINARY_DIR`` and ``POPULATED`` options can be used to
-  specify which properties should be retrieved.  Each option accepts a value
-  which is the name of the variable in which to store that property.  Most of
-  the time though, only ``<name>`` is given, in which case the call will then
-  set the same variables as a call to
-  :command:`FetchContent_Populate(name) <FetchContent_Populate>`.  This allows
-  the following canonical pattern to be used, which ensures that the relevant
-  variables will always be defined regardless of whether or not the population
-  has been performed elsewhere in the project already:
-
-  .. code-block:: cmake
-
-    FetchContent_GetProperties(foobar)
-    if(NOT foobar_POPULATED)
-      FetchContent_Populate(foobar)
-      ...
-    endif()
-
-  The above pattern allows other parts of the overall project hierarchy to
-  re-use the same content and ensure that it is only populated once.
-
-
-.. command:: FetchContent_MakeAvailable
-
-  .. code-block:: cmake
-
-    FetchContent_MakeAvailable( <name1> [<name2>...] )
-
-  This command implements the common pattern typically needed for most
-  dependencies.  It iterates over each of the named dependencies in turn
-  and for each one it loosely follows the
-  :ref:`canonical pattern <fetch-content-canonical-pattern>` as
-  presented at the beginning of this section.  An important difference is
-  that :command:`add_subdirectory` will only be called on the
-  populated content if there is a ``CMakeLists.txt`` file in its top level
-  source directory.  This allows the command to be used for dependencies
-  that make downloaded content available at a known location but which do
-  not need or support being added directly to the build.
-
-  The ``SOURCE_SUBDIR`` option can be given in the declared details to
-  instruct ``FetchContent_MakeAvailable()`` to look for a ``CMakeLists.txt``
-  file in a subdirectory below the top level (i.e. the same way that
-  ``SOURCE_SUBDIR`` is used by the :command:`ExternalProject_Add` command).
-  ``SOURCE_SUBDIR`` must always be a relative path.  See the next section
-  for an example of this option.
-
-
-.. _`fetch-content-examples`:
-
-Examples
-^^^^^^^^
-
-This first fairly straightforward example ensures that some popular testing
-frameworks are available to the main build:
-
-.. code-block:: cmake
-
-  include(FetchContent)
-  FetchContent_Declare(
-    googletest
-    GIT_REPOSITORY https://github.com/google/googletest.git
-    GIT_TAG        release-1.8.0
-  )
-  FetchContent_Declare(
-    Catch2
-    GIT_REPOSITORY https://github.com/catchorg/Catch2.git
-    GIT_TAG        v2.5.0
-  )
-
-  # After the following call, the CMake targets defined by googletest and
-  # Catch2 will be defined and available to the rest of the build
-  FetchContent_MakeAvailable(googletest Catch2)
-
-If the sub-project's ``CMakeLists.txt`` file is not at the top level of its
-source tree, the ``SOURCE_SUBDIR`` option can be used to tell ``FetchContent``
-where to find it.  The following example shows how to use that option and
-it also sets a variable which is meaningful to the subproject before pulling
-it into the main build:
-
-.. code-block:: cmake
-
-  include(FetchContent)
-  FetchContent_Declare(
-    protobuf
-    GIT_REPOSITORY https://github.com/protocolbuffers/protobuf.git
-    GIT_TAG        v3.12.0
-    SOURCE_SUBDIR  cmake
-  )
-  set(protobuf_BUILD_TESTS OFF)
-  FetchContent_MakeAvailable(protobuf)
-
-In more complex project hierarchies, the dependency relationships can be more
-complicated.  Consider a hierarchy where ``projA`` is the top level project and
-it depends directly on projects ``projB`` and ``projC``.  Both ``projB`` and
-``projC`` can be built standalone and they also both depend on another project
-``projD``.  ``projB`` additionally depends on ``projE``.  This example assumes
-that all five projects are available on a company git server.  The
-``CMakeLists.txt`` of each project might have sections like the following:
-
-*projA*:
-
-.. code-block:: cmake
-
-  include(FetchContent)
-  FetchContent_Declare(
-    projB
-    GIT_REPOSITORY git@mycompany.com:git/projB.git
-    GIT_TAG        4a89dc7e24ff212a7b5167bef7ab079d
-  )
-  FetchContent_Declare(
-    projC
-    GIT_REPOSITORY git@mycompany.com:git/projC.git
-    GIT_TAG        4ad4016bd1d8d5412d135cf8ceea1bb9
-  )
-  FetchContent_Declare(
-    projD
-    GIT_REPOSITORY git@mycompany.com:git/projD.git
-    GIT_TAG        origin/integrationBranch
-  )
-  FetchContent_Declare(
-    projE
-    GIT_REPOSITORY git@mycompany.com:git/projE.git
-    GIT_TAG        origin/release/2.3-rc1
-  )
-
-  # Order is important, see notes in the discussion further below
-  FetchContent_MakeAvailable(projD projB projC)
-
-*projB*:
-
-.. code-block:: cmake
-
-  include(FetchContent)
-  FetchContent_Declare(
-    projD
-    GIT_REPOSITORY git@mycompany.com:git/projD.git
-    GIT_TAG        20b415f9034bbd2a2e8216e9a5c9e632
-  )
-  FetchContent_Declare(
-    projE
-    GIT_REPOSITORY git@mycompany.com:git/projE.git
-    GIT_TAG        68e20f674a48be38d60e129f600faf7d
-  )
-
-  FetchContent_MakeAvailable(projD projE)
-
-*projC*:
-
-.. code-block:: cmake
-
-  include(FetchContent)
-  FetchContent_Declare(
-    projD
-    GIT_REPOSITORY git@mycompany.com:git/projD.git
-    GIT_TAG        7d9a17ad2c962aa13e2fbb8043fb6b8a
-  )
-
-  # This particular version of projD requires workarounds
-  FetchContent_GetProperties(projD)
-  if(NOT projd_POPULATED)
-    FetchContent_Populate(projD)
-
-    # Copy an additional/replacement file into the populated source
-    file(COPY someFile.c DESTINATION ${projd_SOURCE_DIR}/src)
-
-    add_subdirectory(${projd_SOURCE_DIR} ${projd_BINARY_DIR})
-  endif()
-
-A few key points should be noted in the above:
-
-- ``projB`` and ``projC`` define different content details for ``projD``,
-  but ``projA`` also defines a set of content details for ``projD``.
-  Because ``projA`` will define them first, the details from ``projB`` and
-  ``projC`` will not be used.  The override details defined by ``projA``
-  are not required to match either of those from ``projB`` or ``projC``, but
-  it is up to the higher level project to ensure that the details it does
-  define still make sense for the child projects.
-- In the ``projA`` call to :command:`FetchContent_MakeAvailable`, ``projD``
-  is listed ahead of ``projB`` and ``projC`` to ensure that ``projA`` is in
-  control of how ``projD`` is populated.
-- While ``projA`` defines content details for ``projE``, it does not need
-  to explicitly call ``FetchContent_MakeAvailable(projE)`` or
-  ``FetchContent_Populate(projD)`` itself.  Instead, it leaves that to the
-  child ``projB``.  For higher level projects, it is often enough to just
-  define the override content details and leave the actual population to the
-  child projects.  This saves repeating the same thing at each level of the
-  project hierarchy unnecessarily.
-
-
-Projects don't always need to add the populated content to the build.
-Sometimes the project just wants to make the downloaded content available at
-a predictable location.  The next example ensures that a set of standard
-company toolchain files (and potentially even the toolchain binaries
-themselves) is available early enough to be used for that same build.
-
-.. code-block:: cmake
-
-  cmake_minimum_required(VERSION 3.14)
-
-  include(FetchContent)
-  FetchContent_Declare(
-    mycom_toolchains
-    URL  https://intranet.mycompany.com//toolchains_1.3.2.tar.gz
-  )
-  FetchContent_MakeAvailable(mycom_toolchains)
-
-  project(CrossCompileExample)
-
-The project could be configured to use one of the downloaded toolchains like
-so:
-
-.. code-block:: shell
-
-  cmake -DCMAKE_TOOLCHAIN_FILE=_deps/mycom_toolchains-src/toolchain_arm.cmake /path/to/src
-
-When CMake processes the ``CMakeLists.txt`` file, it will download and unpack
-the tarball into ``_deps/mycompany_toolchains-src`` relative to the build
-directory.  The :variable:`CMAKE_TOOLCHAIN_FILE` variable is not used until
-the :command:`project` command is reached, at which point CMake looks for the
-named toolchain file relative to the build directory.  Because the tarball has
-already been downloaded and unpacked by then, the toolchain file will be in
-place, even the very first time that ``cmake`` is run in the build directory.
-
-Lastly, the following example demonstrates how one might download and unpack a
-firmware tarball using CMake's :manual:`script mode <cmake(1)>`.  The call to
-:command:`FetchContent_Populate` specifies all the content details and the
-unpacked firmware will be placed in a ``firmware`` directory below the
-current working directory.
-
-*getFirmware.cmake*:
-
-.. code-block:: cmake
-
-  # NOTE: Intended to be run in script mode with cmake -P
-  include(FetchContent)
-  FetchContent_Populate(
-    firmware
-    URL        https://mycompany.com/assets/firmware-1.23-arm.tar.gz
-    URL_HASH   MD5=68247684da89b608d466253762b0ff11
-    SOURCE_DIR firmware
-  )
-
-#]=======================================================================]
-
-#=======================================================================
-# Recording and retrieving content details for later population
-#=======================================================================
-
-# Internal use, projects must not call this directly. It is
-# intended for use by FetchContent_Declare() only.
-#
-# Sets a content-specific global property (not meant for use
-# outside of functions defined here in this file) which can later
-# be retrieved using __FetchContent_getSavedDetails() with just the
-# same content name. If there is already a value stored in the
-# property, it is left unchanged and this call has no effect.
-# This allows parent projects to define the content details,
-# overriding anything a child project may try to set (properties
-# are not cached between runs, so the first thing to set it in a
-# build will be in control).
-function(__FetchContent_declareDetails contentName)
-
-  string(TOLOWER ${contentName} contentNameLower)
-  set(propertyName "_FetchContent_${contentNameLower}_savedDetails")
-  get_property(alreadyDefined GLOBAL PROPERTY ${propertyName} DEFINED)
-  if(NOT alreadyDefined)
-    define_property(GLOBAL PROPERTY ${propertyName}
-      BRIEF_DOCS "Internal implementation detail of FetchContent_Populate()"
-      FULL_DOCS  "Details used by FetchContent_Populate() for ${contentName}"
-    )
-    set(__cmdArgs)
-    foreach(__item IN LISTS ARGN)
-      string(APPEND __cmdArgs " [==[${__item}]==]")
-    endforeach()
-    cmake_language(EVAL CODE
-      "set_property(GLOBAL PROPERTY ${propertyName} ${__cmdArgs})")
-  endif()
-
-endfunction()
-
-
-# Internal use, projects must not call this directly. It is
-# intended for use by the FetchContent_Declare() function.
-#
-# Retrieves details saved for the specified content in an
-# earlier call to __FetchContent_declareDetails().
-function(__FetchContent_getSavedDetails contentName outVar)
-
-  string(TOLOWER ${contentName} contentNameLower)
-  set(propertyName "_FetchContent_${contentNameLower}_savedDetails")
-  get_property(alreadyDefined GLOBAL PROPERTY ${propertyName} DEFINED)
-  if(NOT alreadyDefined)
-    message(FATAL_ERROR "No content details recorded for ${contentName}")
-  endif()
-  get_property(propertyValue GLOBAL PROPERTY ${propertyName})
-  set(${outVar} "${propertyValue}" PARENT_SCOPE)
-
-endfunction()
-
-
-# Saves population details of the content, sets defaults for the
-# SOURCE_DIR and BUILD_DIR.
-function(FetchContent_Declare contentName)
-
-  set(options "")
-  set(oneValueArgs SVN_REPOSITORY)
-  set(multiValueArgs "")
-
-  cmake_parse_arguments(PARSE_ARGV 1 ARG
-    "${options}" "${oneValueArgs}" "${multiValueArgs}")
-
-  unset(srcDirSuffix)
-  unset(svnRepoArgs)
-  if(ARG_SVN_REPOSITORY)
-    # Add a hash of the svn repository URL to the source dir. This works
-    # around the problem where if the URL changes, the download would
-    # fail because it tries to checkout/update rather than switch the
-    # old URL to the new one. We limit the hash to the first 7 characters
-    # so that the source path doesn't get overly long (which can be a
-    # problem on windows due to path length limits).
-    string(SHA1 urlSHA ${ARG_SVN_REPOSITORY})
-    string(SUBSTRING ${urlSHA} 0 7 urlSHA)
-    set(srcDirSuffix "-${urlSHA}")
-    set(svnRepoArgs  SVN_REPOSITORY ${ARG_SVN_REPOSITORY})
-  endif()
-
-  string(TOLOWER ${contentName} contentNameLower)
-
-  set(__argsQuoted)
-  foreach(__item IN LISTS ARG_UNPARSED_ARGUMENTS)
-    string(APPEND __argsQuoted " [==[${__item}]==]")
-  endforeach()
-  cmake_language(EVAL CODE "
-    __FetchContent_declareDetails(
-      ${contentNameLower}
-      SOURCE_DIR \"${FETCHCONTENT_BASE_DIR}/${contentNameLower}-src${srcDirSuffix}\"
-      BINARY_DIR \"${FETCHCONTENT_BASE_DIR}/${contentNameLower}-build\"
-      \${svnRepoArgs}
-      # List these last so they can override things we set above
-      ${__argsQuoted}
-    )"
-  )
-
-endfunction()
-
-
-#=======================================================================
-# Set/get whether the specified content has been populated yet.
-# The setter also records the source and binary dirs used.
-#=======================================================================
-
-# Internal use, projects must not call this directly. It is
-# intended for use by the FetchContent_Populate() function to
-# record when FetchContent_Populate() is called for a particular
-# content name.
-function(__FetchContent_setPopulated contentName sourceDir binaryDir)
-
-  string(TOLOWER ${contentName} contentNameLower)
-  set(prefix "_FetchContent_${contentNameLower}")
-
-  set(propertyName "${prefix}_sourceDir")
-  define_property(GLOBAL PROPERTY ${propertyName}
-    BRIEF_DOCS "Internal implementation detail of FetchContent_Populate()"
-    FULL_DOCS  "Details used by FetchContent_Populate() for ${contentName}"
-  )
-  set_property(GLOBAL PROPERTY ${propertyName} ${sourceDir})
-
-  set(propertyName "${prefix}_binaryDir")
-  define_property(GLOBAL PROPERTY ${propertyName}
-    BRIEF_DOCS "Internal implementation detail of FetchContent_Populate()"
-    FULL_DOCS  "Details used by FetchContent_Populate() for ${contentName}"
-  )
-  set_property(GLOBAL PROPERTY ${propertyName} ${binaryDir})
-
-  set(propertyName "${prefix}_populated")
-  define_property(GLOBAL PROPERTY ${propertyName}
-    BRIEF_DOCS "Internal implementation detail of FetchContent_Populate()"
-    FULL_DOCS  "Details used by FetchContent_Populate() for ${contentName}"
-  )
-  set_property(GLOBAL PROPERTY ${propertyName} True)
-
-endfunction()
-
-
-# Set variables in the calling scope for any of the retrievable
-# properties. If no specific properties are requested, variables
-# will be set for all retrievable properties.
-#
-# This function is intended to also be used by projects as the canonical
-# way to detect whether they should call FetchContent_Populate()
-# and pull the populated source into the build with add_subdirectory(),
-# if they are using the populated content in that way.
-function(FetchContent_GetProperties contentName)
-
-  string(TOLOWER ${contentName} contentNameLower)
-
-  set(options "")
-  set(oneValueArgs SOURCE_DIR BINARY_DIR POPULATED)
-  set(multiValueArgs "")
-
-  cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
-
-  if(NOT ARG_SOURCE_DIR AND
-     NOT ARG_BINARY_DIR AND
-     NOT ARG_POPULATED)
-    # No specific properties requested, provide them all
-    set(ARG_SOURCE_DIR ${contentNameLower}_SOURCE_DIR)
-    set(ARG_BINARY_DIR ${contentNameLower}_BINARY_DIR)
-    set(ARG_POPULATED  ${contentNameLower}_POPULATED)
-  endif()
-
-  set(prefix "_FetchContent_${contentNameLower}")
-
-  if(ARG_SOURCE_DIR)
-    set(propertyName "${prefix}_sourceDir")
-    get_property(value GLOBAL PROPERTY ${propertyName})
-    if(value)
-      set(${ARG_SOURCE_DIR} ${value} PARENT_SCOPE)
-    endif()
-  endif()
-
-  if(ARG_BINARY_DIR)
-    set(propertyName "${prefix}_binaryDir")
-    get_property(value GLOBAL PROPERTY ${propertyName})
-    if(value)
-      set(${ARG_BINARY_DIR} ${value} PARENT_SCOPE)
-    endif()
-  endif()
-
-  if(ARG_POPULATED)
-    set(propertyName "${prefix}_populated")
-    get_property(value GLOBAL PROPERTY ${propertyName} DEFINED)
-    set(${ARG_POPULATED} ${value} PARENT_SCOPE)
-  endif()
-
-endfunction()
-
-
-#=======================================================================
-# Performing the population
-#=======================================================================
-
-# The value of contentName will always have been lowercased by the caller.
-# All other arguments are assumed to be options that are understood by
-# ExternalProject_Add(), except for QUIET and SUBBUILD_DIR.
-function(__FetchContent_directPopulate contentName)
-
-  set(options
-      QUIET
-  )
-  set(oneValueArgs
-      SUBBUILD_DIR
-      SOURCE_DIR
-      BINARY_DIR
-      # We need special processing if DOWNLOAD_NO_EXTRACT is true
-      DOWNLOAD_NO_EXTRACT
-      # Prevent the following from being passed through
-      CONFIGURE_COMMAND
-      BUILD_COMMAND
-      INSTALL_COMMAND
-      TEST_COMMAND
-      # We force both of these to be ON since we are always executing serially
-      # and we want all steps to have access to the terminal in case they
-      # need input from the command line (e.g. ask for a private key password)
-      # or they want to provide timely progress. We silently absorb and
-      # discard these if they are set by the caller.
-      USES_TERMINAL_DOWNLOAD
-      USES_TERMINAL_UPDATE
-  )
-  set(multiValueArgs "")
-
-  cmake_parse_arguments(PARSE_ARGV 1 ARG
-    "${options}" "${oneValueArgs}" "${multiValueArgs}")
-
-  if(NOT ARG_SUBBUILD_DIR)
-    message(FATAL_ERROR "Internal error: SUBBUILD_DIR not set")
-  elseif(NOT IS_ABSOLUTE "${ARG_SUBBUILD_DIR}")
-    set(ARG_SUBBUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/${ARG_SUBBUILD_DIR}")
-  endif()
-
-  if(NOT ARG_SOURCE_DIR)
-    message(FATAL_ERROR "Internal error: SOURCE_DIR not set")
-  elseif(NOT IS_ABSOLUTE "${ARG_SOURCE_DIR}")
-    set(ARG_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/${ARG_SOURCE_DIR}")
-  endif()
-
-  if(NOT ARG_BINARY_DIR)
-    message(FATAL_ERROR "Internal error: BINARY_DIR not set")
-  elseif(NOT IS_ABSOLUTE "${ARG_BINARY_DIR}")
-    set(ARG_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/${ARG_BINARY_DIR}")
-  endif()
-
-  # Ensure the caller can know where to find the source and build directories
-  # with some convenient variables. Doing this here ensures the caller sees
-  # the correct result in the case where the default values are overridden by
-  # the content details set by the project.
-  set(${contentName}_SOURCE_DIR "${ARG_SOURCE_DIR}" PARENT_SCOPE)
-  set(${contentName}_BINARY_DIR "${ARG_BINARY_DIR}" PARENT_SCOPE)
-
-  # The unparsed arguments may contain spaces, so build up ARG_EXTRA
-  # in such a way that it correctly substitutes into the generated
-  # CMakeLists.txt file with each argument quoted.
-  unset(ARG_EXTRA)
-  foreach(arg IN LISTS ARG_UNPARSED_ARGUMENTS)
-    set(ARG_EXTRA "${ARG_EXTRA} \"${arg}\"")
-  endforeach()
-
-  if(ARG_DOWNLOAD_NO_EXTRACT)
-    set(ARG_EXTRA "${ARG_EXTRA} DOWNLOAD_NO_EXTRACT YES")
-    set(__FETCHCONTENT_COPY_FILE
-"
-ExternalProject_Get_Property(${contentName}-populate DOWNLOADED_FILE)
-get_filename_component(dlFileName \"\${DOWNLOADED_FILE}\" NAME)
-
-ExternalProject_Add_Step(${contentName}-populate copyfile
-  COMMAND    \"${CMAKE_COMMAND}\" -E copy_if_different
-             \"<DOWNLOADED_FILE>\" \"${ARG_SOURCE_DIR}\"
-  DEPENDEES  patch
-  DEPENDERS  configure
-  BYPRODUCTS \"${ARG_SOURCE_DIR}/\${dlFileName}\"
-  COMMENT    \"Copying file to SOURCE_DIR\"
-)
-")
-  else()
-    unset(__FETCHCONTENT_COPY_FILE)
-  endif()
-
-  # Hide output if requested, but save it to a variable in case there's an
-  # error so we can show the output upon failure. When not quiet, don't
-  # capture the output to a variable because the user may want to see the
-  # output as it happens (e.g. progress during long downloads). Combine both
-  # stdout and stderr in the one capture variable so the output stays in order.
-  if (ARG_QUIET)
-    set(outputOptions
-        OUTPUT_VARIABLE capturedOutput
-        ERROR_VARIABLE  capturedOutput
-    )
-  else()
-    set(capturedOutput)
-    set(outputOptions)
-    message(STATUS "Populating ${contentName}")
-  endif()
-
-  if(CMAKE_GENERATOR)
-    set(subCMakeOpts "-G${CMAKE_GENERATOR}")
-    if(CMAKE_GENERATOR_PLATFORM)
-      list(APPEND subCMakeOpts "-A${CMAKE_GENERATOR_PLATFORM}")
-    endif()
-    if(CMAKE_GENERATOR_TOOLSET)
-      list(APPEND subCMakeOpts "-T${CMAKE_GENERATOR_TOOLSET}")
-    endif()
-
-    if(CMAKE_MAKE_PROGRAM)
-      list(APPEND subCMakeOpts "-DCMAKE_MAKE_PROGRAM:FILEPATH=${CMAKE_MAKE_PROGRAM}")
-    endif()
-
-  else()
-    # Likely we've been invoked via CMake's script mode where no
-    # generator is set (and hence CMAKE_MAKE_PROGRAM could not be
-    # trusted even if provided). We will have to rely on being
-    # able to find the default generator and build tool.
-    unset(subCMakeOpts)
-  endif()
-
-  if(DEFINED CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY)
-    list(APPEND subCMakeOpts
-      "-DCMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY=${CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY}")
-  endif()
-
-  # Create and build a separate CMake project to carry out the population.
-  # If we've already previously done these steps, they will not cause
-  # anything to be updated, so extra rebuilds of the project won't occur.
-  # Make sure to pass through CMAKE_MAKE_PROGRAM in case the main project
-  # has this set to something not findable on the PATH.
-  configure_file("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/FetchContent/CMakeLists.cmake.in"
-                 "${ARG_SUBBUILD_DIR}/CMakeLists.txt")
-  execute_process(
-    COMMAND ${CMAKE_COMMAND} ${subCMakeOpts} .
-    RESULT_VARIABLE result
-    ${outputOptions}
-    WORKING_DIRECTORY "${ARG_SUBBUILD_DIR}"
-  )
-  if(result)
-    if(capturedOutput)
-      message("${capturedOutput}")
-    endif()
-    message(FATAL_ERROR "CMake step for ${contentName} failed: ${result}")
-  endif()
-  execute_process(
-    COMMAND ${CMAKE_COMMAND} --build .
-    RESULT_VARIABLE result
-    ${outputOptions}
-    WORKING_DIRECTORY "${ARG_SUBBUILD_DIR}"
-  )
-  if(result)
-    if(capturedOutput)
-      message("${capturedOutput}")
-    endif()
-    message(FATAL_ERROR "Build step for ${contentName} failed: ${result}")
-  endif()
-
-endfunction()
-
-
-option(FETCHCONTENT_FULLY_DISCONNECTED   "Disables all attempts to download or update content and assumes source dirs already exist")
-option(FETCHCONTENT_UPDATES_DISCONNECTED "Enables UPDATE_DISCONNECTED behavior for all content population")
-option(FETCHCONTENT_QUIET                "Enables QUIET option for all content population" ON)
-set(FETCHCONTENT_BASE_DIR "${CMAKE_BINARY_DIR}/_deps" CACHE PATH "Directory under which to collect all populated content")
-
-# Populate the specified content using details stored from
-# an earlier call to FetchContent_Declare().
-function(FetchContent_Populate contentName)
-
-  if(NOT contentName)
-    message(FATAL_ERROR "Empty contentName not allowed for FetchContent_Populate()")
-  endif()
-
-  string(TOLOWER ${contentName} contentNameLower)
-
-  if(ARGN)
-    # This is the direct population form with details fully specified
-    # as part of the call, so we already have everything we need
-    __FetchContent_directPopulate(
-      ${contentNameLower}
-      SUBBUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/${contentNameLower}-subbuild"
-      SOURCE_DIR   "${CMAKE_CURRENT_BINARY_DIR}/${contentNameLower}-src"
-      BINARY_DIR   "${CMAKE_CURRENT_BINARY_DIR}/${contentNameLower}-build"
-      ${ARGN}  # Could override any of the above ..._DIR variables
-    )
-
-    # Pass source and binary dir variables back to the caller
-    set(${contentNameLower}_SOURCE_DIR "${${contentNameLower}_SOURCE_DIR}" PARENT_SCOPE)
-    set(${contentNameLower}_BINARY_DIR "${${contentNameLower}_BINARY_DIR}" PARENT_SCOPE)
-
-    # Don't set global properties, or record that we did this population, since
-    # this was a direct call outside of the normal declared details form.
-    # We only want to save values in the global properties for content that
-    # honours the hierarchical details mechanism so that projects are not
-    # robbed of the ability to override details set in nested projects.
-    return()
-  endif()
-
-  # No details provided, so assume they were saved from an earlier call
-  # to FetchContent_Declare(). Do a check that we haven't already
-  # populated this content before in case the caller forgot to check.
-  FetchContent_GetProperties(${contentName})
-  if(${contentNameLower}_POPULATED)
-    message(FATAL_ERROR "Content ${contentName} already populated in ${${contentNameLower}_SOURCE_DIR}")
-  endif()
-
-  string(TOUPPER ${contentName} contentNameUpper)
-  set(FETCHCONTENT_SOURCE_DIR_${contentNameUpper}
-      "${FETCHCONTENT_SOURCE_DIR_${contentNameUpper}}"
-      CACHE PATH "When not empty, overrides where to find pre-populated content for ${contentName}")
-
-  if(FETCHCONTENT_SOURCE_DIR_${contentNameUpper})
-    # The source directory has been explicitly provided in the cache,
-    # so no population is required
-    set(${contentNameLower}_SOURCE_DIR "${FETCHCONTENT_SOURCE_DIR_${contentNameUpper}}")
-    set(${contentNameLower}_BINARY_DIR "${FETCHCONTENT_BASE_DIR}/${contentNameLower}-build")
-
-  elseif(FETCHCONTENT_FULLY_DISCONNECTED)
-    # Bypass population and assume source is already there from a previous run
-    set(${contentNameLower}_SOURCE_DIR "${FETCHCONTENT_BASE_DIR}/${contentNameLower}-src")
-    set(${contentNameLower}_BINARY_DIR "${FETCHCONTENT_BASE_DIR}/${contentNameLower}-build")
-
-  else()
-    # Support both a global "disconnect all updates" and a per-content
-    # update test (either one being set disables updates for this content).
-    option(FETCHCONTENT_UPDATES_DISCONNECTED_${contentNameUpper}
-           "Enables UPDATE_DISCONNECTED behavior just for population of ${contentName}")
-    if(FETCHCONTENT_UPDATES_DISCONNECTED OR
-       FETCHCONTENT_UPDATES_DISCONNECTED_${contentNameUpper})
-      set(disconnectUpdates True)
-    else()
-      set(disconnectUpdates False)
-    endif()
-
-    if(FETCHCONTENT_QUIET)
-      set(quietFlag QUIET)
-    else()
-      unset(quietFlag)
-    endif()
-
-    __FetchContent_getSavedDetails(${contentName} contentDetails)
-    if("${contentDetails}" STREQUAL "")
-      message(FATAL_ERROR "No details have been set for content: ${contentName}")
-    endif()
-
-    set(__detailsQuoted)
-    foreach(__item IN LISTS contentDetails)
-      string(APPEND __detailsQuoted " [==[${__item}]==]")
-    endforeach()
-    cmake_language(EVAL CODE "
-      __FetchContent_directPopulate(
-        ${contentNameLower}
-        ${quietFlag}
-        UPDATE_DISCONNECTED ${disconnectUpdates}
-        SUBBUILD_DIR \"${FETCHCONTENT_BASE_DIR}/${contentNameLower}-subbuild\"
-        SOURCE_DIR   \"${FETCHCONTENT_BASE_DIR}/${contentNameLower}-src\"
-        BINARY_DIR   \"${FETCHCONTENT_BASE_DIR}/${contentNameLower}-build\"
-        # Put the saved details last so they can override any of the
-        # the options we set above (this can include SOURCE_DIR or
-        # BUILD_DIR)
-        ${__detailsQuoted}
-      )"
-    )
-  endif()
-
-  __FetchContent_setPopulated(
-    ${contentName}
-    ${${contentNameLower}_SOURCE_DIR}
-    ${${contentNameLower}_BINARY_DIR}
-  )
-
-  # Pass variables back to the caller. The variables passed back here
-  # must match what FetchContent_GetProperties() sets when it is called
-  # with just the content name.
-  set(${contentNameLower}_SOURCE_DIR "${${contentNameLower}_SOURCE_DIR}" PARENT_SCOPE)
-  set(${contentNameLower}_BINARY_DIR "${${contentNameLower}_BINARY_DIR}" PARENT_SCOPE)
-  set(${contentNameLower}_POPULATED  True PARENT_SCOPE)
-
-endfunction()
-
-# Arguments are assumed to be the names of dependencies that have been
-# declared previously and should be populated. It is not an error if
-# any of them have already been populated (they will just be skipped in
-# that case). The command is implemented as a macro so that the variables
-# defined by the FetchContent_GetProperties() and FetchContent_Populate()
-# calls will be available to the caller.
-macro(FetchContent_MakeAvailable)
-
-  foreach(contentName IN ITEMS ${ARGV})
-    string(TOLOWER ${contentName} contentNameLower)
-    FetchContent_GetProperties(${contentName})
-    if(NOT ${contentNameLower}_POPULATED)
-      FetchContent_Populate(${contentName})
-
-      # Only try to call add_subdirectory() if the populated content
-      # can be treated that way. Protecting the call with the check
-      # allows this function to be used for projects that just want
-      # to ensure the content exists, such as to provide content at
-      # a known location. We check the saved details for an optional
-      # SOURCE_SUBDIR which can be used in the same way as its meaning
-      # for ExternalProject. It won't matter if it was passed through
-      # to the ExternalProject sub-build, since it would have been
-      # ignored there.
-      set(__fc_srcdir "${${contentNameLower}_SOURCE_DIR}")
-      __FetchContent_getSavedDetails(${contentName} contentDetails)
-      if("${contentDetails}" STREQUAL "")
-        message(FATAL_ERROR "No details have been set for content: ${contentName}")
-      endif()
-      cmake_parse_arguments(__fc_arg "" "SOURCE_SUBDIR" "" ${contentDetails})
-      if(NOT "${__fc_arg_SOURCE_SUBDIR}" STREQUAL "")
-        string(APPEND __fc_srcdir "/${__fc_arg_SOURCE_SUBDIR}")
-      endif()
-
-      if(EXISTS ${__fc_srcdir}/CMakeLists.txt)
-        add_subdirectory(${__fc_srcdir} ${${contentNameLower}_BINARY_DIR})
-      endif()
-
-      unset(__fc_srcdir)
-    endif()
-  endforeach()
-
-endmacro()
diff --git a/share/cmake-3.18/Modules/FetchContent/CMakeLists.cmake.in b/share/cmake-3.18/Modules/FetchContent/CMakeLists.cmake.in
deleted file mode 100644
index 45e4df0..0000000
--- a/share/cmake-3.18/Modules/FetchContent/CMakeLists.cmake.in
+++ /dev/null
@@ -1,25 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-cmake_minimum_required(VERSION ${CMAKE_VERSION})
-
-# We name the project and the target for the ExternalProject_Add() call
-# to something that will highlight to the user what we are working on if
-# something goes wrong and an error message is produced.
-
-project(${contentName}-populate NONE)
-
-include(ExternalProject)
-ExternalProject_Add(${contentName}-populate
-                    ${ARG_EXTRA}
-                    SOURCE_DIR          "${ARG_SOURCE_DIR}"
-                    BINARY_DIR          "${ARG_BINARY_DIR}"
-                    CONFIGURE_COMMAND   ""
-                    BUILD_COMMAND       ""
-                    INSTALL_COMMAND     ""
-                    TEST_COMMAND        ""
-                    USES_TERMINAL_DOWNLOAD  YES
-                    USES_TERMINAL_UPDATE    YES
-)
-
-@__FETCHCONTENT_COPY_FILE@
diff --git a/share/cmake-3.18/Modules/FindALSA.cmake b/share/cmake-3.18/Modules/FindALSA.cmake
deleted file mode 100644
index 88e2681..0000000
--- a/share/cmake-3.18/Modules/FindALSA.cmake
+++ /dev/null
@@ -1,74 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindALSA
---------
-
-Find Advanced Linux Sound Architecture (ALSA)
-
-Find the alsa libraries (``asound``)
-
-IMPORTED Targets
-^^^^^^^^^^^^^^^^
-
-This module defines :prop_tgt:`IMPORTED` target ``ALSA::ALSA``, if
-ALSA has been found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module defines the following variables:
-
-``ALSA_FOUND``
-  True if ALSA_INCLUDE_DIR & ALSA_LIBRARY are found
-
-``ALSA_LIBRARIES``
-  List of libraries when using ALSA.
-
-``ALSA_INCLUDE_DIRS``
-  Where to find the ALSA headers.
-
-Cache variables
-^^^^^^^^^^^^^^^
-
-The following cache variables may also be set:
-
-``ALSA_INCLUDE_DIR``
-  the ALSA include directory
-
-``ALSA_LIBRARY``
-  the absolute path of the asound library
-#]=======================================================================]
-
-find_path(ALSA_INCLUDE_DIR NAMES alsa/asoundlib.h
-          DOC "The ALSA (asound) include directory"
-)
-
-find_library(ALSA_LIBRARY NAMES asound
-          DOC "The ALSA (asound) library"
-)
-
-if(ALSA_INCLUDE_DIR AND EXISTS "${ALSA_INCLUDE_DIR}/alsa/version.h")
-  file(STRINGS "${ALSA_INCLUDE_DIR}/alsa/version.h" alsa_version_str REGEX "^#define[\t ]+SND_LIB_VERSION_STR[\t ]+\".*\"")
-
-  string(REGEX REPLACE "^.*SND_LIB_VERSION_STR[\t ]+\"([^\"]*)\".*$" "\\1" ALSA_VERSION_STRING "${alsa_version_str}")
-  unset(alsa_version_str)
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(ALSA
-                                  REQUIRED_VARS ALSA_LIBRARY ALSA_INCLUDE_DIR
-                                  VERSION_VAR ALSA_VERSION_STRING)
-
-if(ALSA_FOUND)
-  set( ALSA_LIBRARIES ${ALSA_LIBRARY} )
-  set( ALSA_INCLUDE_DIRS ${ALSA_INCLUDE_DIR} )
-  if(NOT TARGET ALSA::ALSA)
-    add_library(ALSA::ALSA UNKNOWN IMPORTED)
-    set_target_properties(ALSA::ALSA PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${ALSA_INCLUDE_DIRS}")
-    set_property(TARGET ALSA::ALSA APPEND PROPERTY IMPORTED_LOCATION "${ALSA_LIBRARY}")
-  endif()
-endif()
-
-mark_as_advanced(ALSA_INCLUDE_DIR ALSA_LIBRARY)
diff --git a/share/cmake-3.18/Modules/FindArmadillo.cmake b/share/cmake-3.18/Modules/FindArmadillo.cmake
deleted file mode 100644
index 243b9e0..0000000
--- a/share/cmake-3.18/Modules/FindArmadillo.cmake
+++ /dev/null
@@ -1,131 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindArmadillo
--------------
-
-Find the Armadillo C++ library.
-Armadillo is a library for linear algebra & scientific computing.
-
-Using Armadillo:
-
-::
-
-  find_package(Armadillo REQUIRED)
-  include_directories(${ARMADILLO_INCLUDE_DIRS})
-  add_executable(foo foo.cc)
-  target_link_libraries(foo ${ARMADILLO_LIBRARIES})
-
-This module sets the following variables:
-
-::
-
-  ARMADILLO_FOUND - set to true if the library is found
-  ARMADILLO_INCLUDE_DIRS - list of required include directories
-  ARMADILLO_LIBRARIES - list of libraries to be linked
-  ARMADILLO_VERSION_MAJOR - major version number
-  ARMADILLO_VERSION_MINOR - minor version number
-  ARMADILLO_VERSION_PATCH - patch version number
-  ARMADILLO_VERSION_STRING - version number as a string (ex: "1.0.4")
-  ARMADILLO_VERSION_NAME - name of the version (ex: "Antipodean Antileech")
-#]=======================================================================]
-
-find_path(ARMADILLO_INCLUDE_DIR
-  NAMES armadillo
-  PATHS "$ENV{ProgramFiles}/Armadillo/include"
-  )
-mark_as_advanced(ARMADILLO_INCLUDE_DIR)
-
-if(ARMADILLO_INCLUDE_DIR)
-  # ------------------------------------------------------------------------
-  #  Extract version information from <armadillo>
-  # ------------------------------------------------------------------------
-
-  # WARNING: Early releases of Armadillo didn't have the arma_version.hpp file.
-  # (e.g. v.0.9.8-1 in ubuntu maverick packages (2001-03-15))
-  # If the file is missing, set all values to 0
-  set(ARMADILLO_VERSION_MAJOR 0)
-  set(ARMADILLO_VERSION_MINOR 0)
-  set(ARMADILLO_VERSION_PATCH 0)
-  set(ARMADILLO_VERSION_NAME "EARLY RELEASE")
-
-  if(EXISTS "${ARMADILLO_INCLUDE_DIR}/armadillo_bits/arma_version.hpp")
-
-    # Read and parse armdillo version header file for version number
-    file(STRINGS "${ARMADILLO_INCLUDE_DIR}/armadillo_bits/arma_version.hpp" _ARMA_HEADER_CONTENTS REGEX "#define ARMA_VERSION_[A-Z]+ ")
-    string(REGEX REPLACE ".*#define ARMA_VERSION_MAJOR ([0-9]+).*" "\\1" ARMADILLO_VERSION_MAJOR "${_ARMA_HEADER_CONTENTS}")
-    string(REGEX REPLACE ".*#define ARMA_VERSION_MINOR ([0-9]+).*" "\\1" ARMADILLO_VERSION_MINOR "${_ARMA_HEADER_CONTENTS}")
-    string(REGEX REPLACE ".*#define ARMA_VERSION_PATCH ([0-9]+).*" "\\1" ARMADILLO_VERSION_PATCH "${_ARMA_HEADER_CONTENTS}")
-
-    # WARNING: The number of spaces before the version name is not one.
-    string(REGEX REPLACE ".*#define ARMA_VERSION_NAME\ +\"([0-9a-zA-Z\ _-]+)\".*" "\\1" ARMADILLO_VERSION_NAME "${_ARMA_HEADER_CONTENTS}")
-
-  endif()
-
-  set(ARMADILLO_VERSION_STRING "${ARMADILLO_VERSION_MAJOR}.${ARMADILLO_VERSION_MINOR}.${ARMADILLO_VERSION_PATCH}")
-endif ()
-
-if(EXISTS "${ARMADILLO_INCLUDE_DIR}/armadillo_bits/config.hpp")
-  file(STRINGS "${ARMADILLO_INCLUDE_DIR}/armadillo_bits/config.hpp" _ARMA_CONFIG_CONTENTS REGEX "^#define ARMA_USE_[A-Z]+")
-  string(REGEX MATCH "ARMA_USE_WRAPPER" _ARMA_USE_WRAPPER "${_ARMA_CONFIG_CONTENTS}")
-  string(REGEX MATCH "ARMA_USE_LAPACK" _ARMA_USE_LAPACK "${_ARMA_CONFIG_CONTENTS}")
-  string(REGEX MATCH "ARMA_USE_BLAS" _ARMA_USE_BLAS "${_ARMA_CONFIG_CONTENTS}")
-  string(REGEX MATCH "ARMA_USE_ARPACK" _ARMA_USE_ARPACK "${_ARMA_CONFIG_CONTENTS}")
-  string(REGEX MATCH "ARMA_USE_HDF5" _ARMA_USE_HDF5 "${_ARMA_CONFIG_CONTENTS}")
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-
-# If _ARMA_USE_WRAPPER is set, then we just link to armadillo, but if it's not then we need support libraries instead
-set(_ARMA_SUPPORT_LIBRARIES)
-
-if(_ARMA_USE_WRAPPER)
-  # Link to the armadillo wrapper library.
-  find_library(ARMADILLO_LIBRARY
-    NAMES armadillo
-    PATHS
-      "$ENV{ProgramFiles}/Armadillo/lib"
-      "$ENV{ProgramFiles}/Armadillo/lib64"
-      "$ENV{ProgramFiles}/Armadillo"
-    )
-  mark_as_advanced(ARMADILLO_LIBRARY)
-  set(_ARMA_REQUIRED_VARS ARMADILLO_LIBRARY)
-else()
-  # Link directly to individual components.
-  set(ARMADILLO_LIBRARY "")
-  foreach(pkg
-      LAPACK
-      BLAS
-      ARPACK
-      HDF5
-      )
-    if(_ARMA_USE_${pkg})
-      find_package(${pkg} QUIET)
-      list(APPEND _ARMA_REQUIRED_VARS "${pkg}_FOUND")
-      if(${pkg}_FOUND)
-        list(APPEND _ARMA_SUPPORT_LIBRARIES ${${pkg}_LIBRARIES})
-      endif()
-    endif()
-  endforeach()
-endif()
-
-find_package_handle_standard_args(Armadillo
-  REQUIRED_VARS ARMADILLO_INCLUDE_DIR ${_ARMA_REQUIRED_VARS}
-  VERSION_VAR ARMADILLO_VERSION_STRING)
-
-if (ARMADILLO_FOUND)
-  set(ARMADILLO_INCLUDE_DIRS ${ARMADILLO_INCLUDE_DIR})
-  set(ARMADILLO_LIBRARIES ${ARMADILLO_LIBRARY} ${_ARMA_SUPPORT_LIBRARIES})
-endif ()
-
-# Clean up internal variables
-unset(_ARMA_REQUIRED_VARS)
-unset(_ARMA_SUPPORT_LIBRARIES)
-unset(_ARMA_USE_WRAPPER)
-unset(_ARMA_USE_LAPACK)
-unset(_ARMA_USE_BLAS)
-unset(_ARMA_USE_ARPACK)
-unset(_ARMA_USE_HDF5)
-unset(_ARMA_CONFIG_CONTENTS)
-unset(_ARMA_HEADER_CONTENTS)
diff --git a/share/cmake-3.18/Modules/FindBISON.cmake b/share/cmake-3.18/Modules/FindBISON.cmake
deleted file mode 100644
index 1e1a5a3..0000000
--- a/share/cmake-3.18/Modules/FindBISON.cmake
+++ /dev/null
@@ -1,297 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindBISON
----------
-
-Find ``bison`` executable and provide a macro to generate custom build rules.
-
-The module defines the following variables:
-
-``BISON_EXECUTABLE``
-  path to the ``bison`` program
-
-``BISON_VERSION``
-  version of ``bison``
-
-``BISON_FOUND``
-  "True" if the program was found
-
-The minimum required version of ``bison`` can be specified using the
-standard CMake syntax, e.g.  :command:`find_package(BISON 2.1.3)`.
-
-If ``bison`` is found, the module defines the macro::
-
-  BISON_TARGET(<Name> <YaccInput> <CodeOutput>
-               [COMPILE_FLAGS <flags>]
-               [DEFINES_FILE <file>]
-               [VERBOSE [<file>]]
-               [REPORT_FILE <file>]
-               )
-
-which will create a custom rule to generate a parser.  ``<YaccInput>`` is
-the path to a yacc file.  ``<CodeOutput>`` is the name of the source file
-generated by bison.  A header file is also be generated, and contains
-the token list.
-
-The options are:
-
-``COMPILE_FLAGS <flags>``
-  Specify flags to be added to the ``bison`` command line.
-
-``DEFINES_FILE <file>``
-  Specify a non-default header ``<file>`` to be generated by ``bison``.
-
-``VERBOSE [<file>]``
-  Tell ``bison`` to write a report file of the grammar and parser.
-  If ``<file>`` is given, it specifies path the report file is copied to.
-  ``[<file>]`` is left for backward compatibility of this module.
-  Use ``VERBOSE REPORT_FILE <file>``.
-
-``REPORT_FILE <file>``
-  Specify a non-default report ``<file>``, if generated.
-
-The macro defines the following variables:
-
-``BISON_<Name>_DEFINED``
-  ``True`` is the macro ran successfully
-
-``BISON_<Name>_INPUT``
-  The input source file, an alias for <YaccInput>
-
-``BISON_<Name>_OUTPUT_SOURCE``
-  The source file generated by bison
-
-``BISON_<Name>_OUTPUT_HEADER``
-  The header file generated by bison
-
-``BISON_<Name>_OUTPUTS``
-  All files generated by bison including the source, the header and the report
-
-``BISON_<Name>_COMPILE_FLAGS``
-  Options used in the ``bison`` command line
-
-Example usage:
-
-.. code-block:: cmake
-
-  find_package(BISON)
-  BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp
-               DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/parser.h)
-  add_executable(Foo main.cpp ${BISON_MyParser_OUTPUTS})
-#]=======================================================================]
-
-find_program(BISON_EXECUTABLE NAMES bison win-bison win_bison DOC "path to the bison executable")
-mark_as_advanced(BISON_EXECUTABLE)
-
-if(BISON_EXECUTABLE)
-  # the bison commands should be executed with the C locale, otherwise
-  # the message (which are parsed) may be translated
-  set(_Bison_SAVED_LC_ALL "$ENV{LC_ALL}")
-  set(ENV{LC_ALL} C)
-
-  execute_process(COMMAND ${BISON_EXECUTABLE} --version
-    OUTPUT_VARIABLE BISON_version_output
-    ERROR_VARIABLE BISON_version_error
-    RESULT_VARIABLE BISON_version_result
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-  set(ENV{LC_ALL} ${_Bison_SAVED_LC_ALL})
-
-  if(NOT ${BISON_version_result} EQUAL 0)
-    message(SEND_ERROR "Command \"${BISON_EXECUTABLE} --version\" failed with output:\n${BISON_version_error}")
-  else()
-    # Bison++
-    if("${BISON_version_output}" MATCHES "^bison\\+\\+ Version ([^,]+)")
-      set(BISON_VERSION "${CMAKE_MATCH_1}")
-    # GNU Bison
-    elseif("${BISON_version_output}" MATCHES "^bison \\(GNU Bison\\) ([^\n]+)\n")
-      set(BISON_VERSION "${CMAKE_MATCH_1}")
-    elseif("${BISON_version_output}" MATCHES "^GNU Bison (version )?([^\n]+)")
-      set(BISON_VERSION "${CMAKE_MATCH_2}")
-    endif()
-  endif()
-
-  # internal macro
-  # sets BISON_TARGET_cmdopt
-  macro(BISON_TARGET_option_extraopts Options)
-    set(BISON_TARGET_cmdopt "")
-    set(BISON_TARGET_extraopts "${Options}")
-    separate_arguments(BISON_TARGET_extraopts)
-    list(APPEND BISON_TARGET_cmdopt ${BISON_TARGET_extraopts})
-  endmacro()
-
-  # internal macro
-  # sets BISON_TARGET_output_header and BISON_TARGET_cmdopt
-  macro(BISON_TARGET_option_defines BisonOutput Header)
-    if("${Header}" STREQUAL "")
-      # default header path generated by bison (see option -d)
-      string(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\2" _fileext "${BisonOutput}")
-      string(REPLACE "c" "h" _fileext ${_fileext})
-      string(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\1${_fileext}"
-          BISON_TARGET_output_header "${BisonOutput}")
-      list(APPEND BISON_TARGET_cmdopt "-d")
-    else()
-      set(BISON_TARGET_output_header "${Header}")
-      list(APPEND BISON_TARGET_cmdopt "--defines=${BISON_TARGET_output_header}")
-    endif()
-  endmacro()
-
-  # internal macro
-  # sets BISON_TARGET_verbose_file and BISON_TARGET_cmdopt
-  macro(BISON_TARGET_option_report_file BisonOutput ReportFile)
-    if("${ReportFile}" STREQUAL "")
-      get_filename_component(BISON_TARGET_output_path "${BisonOutput}" PATH)
-      get_filename_component(BISON_TARGET_output_name "${BisonOutput}" NAME_WE)
-      set(BISON_TARGET_verbose_file
-        "${BISON_TARGET_output_path}/${BISON_TARGET_output_name}.output")
-    else()
-      set(BISON_TARGET_verbose_file "${ReportFile}")
-      list(APPEND BISON_TARGET_cmdopt "--report-file=${BISON_TARGET_verbose_file}")
-    endif()
-    if(NOT IS_ABSOLUTE "${BISON_TARGET_verbose_file}")
-      cmake_policy(GET CMP0088 _BISON_CMP0088
-        PARENT_SCOPE # undocumented, do not use outside of CMake
-        )
-      if("x${_BISON_CMP0088}x" STREQUAL "xNEWx")
-        set(BISON_TARGET_verbose_file "${CMAKE_CURRENT_BINARY_DIR}/${BISON_TARGET_verbose_file}")
-      else()
-        set(BISON_TARGET_verbose_file "${CMAKE_CURRENT_SOURCE_DIR}/${BISON_TARGET_verbose_file}")
-      endif()
-      unset(_BISON_CMP0088)
-    endif()
-  endmacro()
-
-  # internal macro
-  # adds a custom command and sets
-  #   BISON_TARGET_cmdopt, BISON_TARGET_extraoutputs
-  macro(BISON_TARGET_option_verbose Name BisonOutput filename)
-    cmake_policy(GET CMP0088 _BISON_CMP0088
-        PARENT_SCOPE # undocumented, do not use outside of CMake
-        )
-    set(_BISON_WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
-    if("x${_BISON_CMP0088}x" STREQUAL "xNEWx")
-      set(_BISON_WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
-    endif()
-    unset(_BISON_CMP0088)
-
-    list(APPEND BISON_TARGET_cmdopt "--verbose")
-    list(APPEND BISON_TARGET_outputs
-      "${BISON_TARGET_verbose_file}")
-    if (NOT "${filename}" STREQUAL "")
-      if(IS_ABSOLUTE "${filename}")
-        set(BISON_TARGET_verbose_extra_file "${filename}")
-      else()
-        set(BISON_TARGET_verbose_extra_file "${_BISON_WORKING_DIRECTORY}/${filename}")
-      endif()
-
-      add_custom_command(OUTPUT ${BISON_TARGET_verbose_extra_file}
-        COMMAND ${CMAKE_COMMAND} -E copy
-        "${BISON_TARGET_verbose_file}"
-        "${filename}"
-        VERBATIM
-        DEPENDS
-        "${BISON_TARGET_verbose_file}"
-        COMMENT "[BISON][${Name}] Copying bison verbose table to ${filename}"
-        WORKING_DIRECTORY ${_BISON_WORKING_DIRECTORY})
-      list(APPEND BISON_TARGET_extraoutputs
-        "${BISON_TARGET_verbose_extra_file}")
-      unset(BISON_TARGET_verbose_extra_file)
-      unset(_BISON_WORKING_DIRECTORY)
-    endif()
-  endmacro()
-
-  #============================================================
-  # BISON_TARGET (public macro)
-  #============================================================
-  #
-  macro(BISON_TARGET Name BisonInput BisonOutput)
-    set(BISON_TARGET_outputs "${BisonOutput}")
-    set(BISON_TARGET_extraoutputs "")
-
-    # Parsing parameters
-    set(BISON_TARGET_PARAM_OPTIONS
-      )
-    set(BISON_TARGET_PARAM_ONE_VALUE_KEYWORDS
-      COMPILE_FLAGS
-      DEFINES_FILE
-      REPORT_FILE
-      )
-    set(BISON_TARGET_PARAM_MULTI_VALUE_KEYWORDS
-      VERBOSE
-      )
-    cmake_parse_arguments(
-        BISON_TARGET_ARG
-        "${BISON_TARGET_PARAM_OPTIONS}"
-        "${BISON_TARGET_PARAM_ONE_VALUE_KEYWORDS}"
-        "${BISON_TARGET_PARAM_MULTI_VALUE_KEYWORDS}"
-        ${ARGN}
-    )
-
-    if(NOT "${BISON_TARGET_ARG_UNPARSED_ARGUMENTS}" STREQUAL "")
-      message(SEND_ERROR "Usage")
-    elseif("${BISON_TARGET_ARG_VERBOSE}" MATCHES ";")
-      # [VERBOSE [<file>] hack: <file> is non-multi value by usage
-      message(SEND_ERROR "Usage")
-    else()
-
-      BISON_TARGET_option_extraopts("${BISON_TARGET_ARG_COMPILE_FLAGS}")
-      BISON_TARGET_option_defines("${BisonOutput}" "${BISON_TARGET_ARG_DEFINES_FILE}")
-      BISON_TARGET_option_report_file("${BisonOutput}" "${BISON_TARGET_ARG_REPORT_FILE}")
-      if(NOT "${BISON_TARGET_ARG_VERBOSE}" STREQUAL "")
-        BISON_TARGET_option_verbose(${Name} ${BisonOutput} "${BISON_TARGET_ARG_VERBOSE}")
-      else()
-        # [VERBOSE [<file>]] is used with no argument or is not used
-        set(BISON_TARGET_args "${ARGN}")
-        list(FIND BISON_TARGET_args "VERBOSE" BISON_TARGET_args_indexof_verbose)
-        if(${BISON_TARGET_args_indexof_verbose} GREATER -1)
-          # VERBOSE is used without <file>
-          BISON_TARGET_option_verbose(${Name} ${BisonOutput} "")
-        endif()
-      endif()
-
-      list(APPEND BISON_TARGET_outputs "${BISON_TARGET_output_header}")
-
-      cmake_policy(GET CMP0088 _BISON_CMP0088
-        PARENT_SCOPE # undocumented, do not use outside of CMake
-        )
-      set(_BISON_WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
-      set(_BisonInput "${BisonInput}")
-      if("x${_BISON_CMP0088}x" STREQUAL "xNEWx")
-        set(_BISON_WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
-        if(NOT IS_ABSOLUTE "${_BisonInput}")
-          set(_BisonInput "${CMAKE_CURRENT_SOURCE_DIR}/${_BisonInput}")
-        endif()
-      endif()
-      unset(_BISON_CMP0088)
-
-      add_custom_command(OUTPUT ${BISON_TARGET_outputs}
-        COMMAND ${BISON_EXECUTABLE} ${BISON_TARGET_cmdopt} -o ${BisonOutput} ${_BisonInput}
-        VERBATIM
-        DEPENDS ${_BisonInput}
-        COMMENT "[BISON][${Name}] Building parser with bison ${BISON_VERSION}"
-        WORKING_DIRECTORY ${_BISON_WORKING_DIRECTORY})
-
-      unset(_BISON_WORKING_DIRECTORY)
-
-      # define target variables
-      set(BISON_${Name}_DEFINED TRUE)
-      set(BISON_${Name}_INPUT ${_BisonInput})
-      set(BISON_${Name}_OUTPUTS ${BISON_TARGET_outputs} ${BISON_TARGET_extraoutputs})
-      set(BISON_${Name}_COMPILE_FLAGS ${BISON_TARGET_cmdopt})
-      set(BISON_${Name}_OUTPUT_SOURCE "${BisonOutput}")
-      set(BISON_${Name}_OUTPUT_HEADER "${BISON_TARGET_output_header}")
-
-      unset(_BisonInput)
-
-    endif()
-  endmacro()
-  #
-  #============================================================
-
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(BISON REQUIRED_VARS  BISON_EXECUTABLE
-                                        VERSION_VAR BISON_VERSION)
diff --git a/share/cmake-3.18/Modules/FindBLAS.cmake b/share/cmake-3.18/Modules/FindBLAS.cmake
deleted file mode 100644
index 60f178b..0000000
--- a/share/cmake-3.18/Modules/FindBLAS.cmake
+++ /dev/null
@@ -1,959 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindBLAS
---------
-
-Find Basic Linear Algebra Subprograms (BLAS) library
-
-This module finds an installed Fortran library that implements the
-BLAS linear-algebra interface (see http://www.netlib.org/blas/).
-
-The approach follows that taken for the ``autoconf`` macro file,
-``acx_blas.m4`` (distributed at
-http://ac-archive.sourceforge.net/ac-archive/acx_blas.html).
-
-Input Variables
-^^^^^^^^^^^^^^^
-
-The following variables may be set to influence this module's behavior:
-
-``BLA_STATIC``
-  if ``ON`` use static linkage
-
-``BLA_VENDOR``
-  If set, checks only the specified vendor, if not set checks all the
-  possibilities.  List of vendors valid in this module:
-
-  * ``Goto``
-  * ``OpenBLAS``
-  * ``FLAME``
-  * ``ATLAS PhiPACK``
-  * ``CXML``
-  * ``DXML``
-  * ``SunPerf``
-  * ``SCSL``
-  * ``SGIMATH``
-  * ``IBMESSL``
-  * ``Intel10_32`` (intel mkl v10 32 bit)
-  * ``Intel10_64lp`` (intel mkl v10+ 64 bit, threaded code, lp64 model)
-  * ``Intel10_64lp_seq`` (intel mkl v10+ 64 bit, sequential code, lp64 model)
-  * ``Intel10_64ilp`` (intel mkl v10+ 64 bit, threaded code, ilp64 model)
-  * ``Intel10_64ilp_seq`` (intel mkl v10+ 64 bit, sequential code, ilp64 model)
-  * ``Intel10_64_dyn`` (intel mkl v10+ 64 bit, single dynamic library)
-  * ``Intel`` (obsolete versions of mkl 32 and 64 bit)
-  * ``ACML``
-  * ``ACML_MP``
-  * ``ACML_GPU``
-  * ``Apple``
-  * ``NAS``
-  * ``Arm``
-  * ``Arm_mp``
-  * ``Arm_ilp64``
-  * ``Arm_ilp64_mp``
-  * ``Generic``
-
-``BLA_F95``
-  if ``ON`` tries to find the BLAS95 interfaces
-
-``BLA_PREFER_PKGCONFIG``
-  if set ``pkg-config`` will be used to search for a BLAS library first
-  and if one is found that is preferred
-
-Imported targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :prop_tgt:`IMPORTED` target:
-
-``BLAS::BLAS``
-  The libraries to use for BLAS, if found.
-
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module defines the following variables:
-
-``BLAS_FOUND``
-  library implementing the BLAS interface is found
-``BLAS_LINKER_FLAGS``
-  uncached list of required linker flags (excluding ``-l`` and ``-L``).
-``BLAS_LIBRARIES``
-  uncached list of libraries (using full path name) to link against
-  to use BLAS (may be empty if compiler implicitly links BLAS)
-``BLAS95_LIBRARIES``
-  uncached list of libraries (using full path name) to link against
-  to use BLAS95 interface
-``BLAS95_FOUND``
-  library implementing the BLAS95 interface is found
-
-.. note::
-
-  C, CXX or Fortran must be enabled to detect a BLAS library.
-  C or CXX must be enabled to use Intel Math Kernel Library (MKL).
-
-  For example, to use Intel MKL libraries and/or Intel compiler:
-
-  .. code-block:: cmake
-
-    set(BLA_VENDOR Intel10_64lp)
-    find_package(BLAS)
-
-Hints
-^^^^^
-
-Set the ``MKLROOT`` environment variable to a directory that contains an MKL
-installation, or add the directory to the dynamic library loader environment
-variable for your platform (``LIB``, ``DYLD_LIBRARY_PATH`` or
-``LD_LIBRARY_PATH``).
-
-#]=======================================================================]
-
-# Check the language being used
-if(NOT (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED OR CMAKE_Fortran_COMPILER_LOADED))
-  if(BLAS_FIND_REQUIRED)
-    message(FATAL_ERROR "FindBLAS requires Fortran, C, or C++ to be enabled.")
-  else()
-    message(STATUS "Looking for BLAS... - NOT found (Unsupported languages)")
-    return()
-  endif()
-endif()
-
-function(_add_blas_target)
-  if(NOT TARGET BLAS::BLAS)
-    add_library(BLAS::BLAS INTERFACE IMPORTED)
-    if(BLAS_LIBRARIES)
-      set_target_properties(BLAS::BLAS PROPERTIES
-        INTERFACE_LINK_LIBRARIES "${BLAS_LIBRARIES}"
-      )
-    endif()
-  endif()
-endfunction()
-
-if(CMAKE_Fortran_COMPILER_LOADED)
-  include(${CMAKE_CURRENT_LIST_DIR}/CheckFortranFunctionExists.cmake)
-else()
-  include(${CMAKE_CURRENT_LIST_DIR}/CheckFunctionExists.cmake)
-endif()
-include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-cmake_push_check_state()
-set(CMAKE_REQUIRED_QUIET ${BLAS_FIND_QUIETLY})
-
-if(BLA_PREFER_PKGCONFIG)
-  find_package(PkgConfig)
-  pkg_check_modules(PKGC_BLAS blas)
-  if(PKGC_BLAS_FOUND)
-    set(BLAS_FOUND ${PKGC_BLAS_FOUND})
-    set(BLAS_LIBRARIES "${PKGC_BLAS_LINK_LIBRARIES}")
-    _add_blas_target()
-    return()
-  endif()
-endif()
-
-set(_blas_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
-if(BLA_STATIC)
-  if(WIN32)
-    set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
-  else()
-    set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
-  endif()
-else()
-  if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
-    # for ubuntu's libblas3gf and liblapack3gf packages
-    set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES} .so.3gf)
-  endif()
-endif()
-
-# TODO: move this stuff to a separate module
-
-macro(CHECK_BLAS_LIBRARIES LIBRARIES _prefix _name _flags _list _threadlibs _addlibdir _subdirs)
-  # This macro checks for the existence of the combination of fortran libraries
-  # given by _list.  If the combination is found, this macro checks (using the
-  # Check_Fortran_Function_Exists macro) whether can link against that library
-  # combination using the name of a routine given by _name using the linker
-  # flags given by _flags.  If the combination of libraries is found and passes
-  # the link test, LIBRARIES is set to the list of complete library paths that
-  # have been found.  Otherwise, LIBRARIES is set to FALSE.
-
-  # N.B. _prefix is the prefix applied to the names of all cached variables that
-  # are generated internally and marked advanced by this macro.
-  # _addlibdir is a list of additional search paths. _subdirs is a list of path
-  # suffixes to be used by find_library().
-
-  set(_libraries_work TRUE)
-  set(${LIBRARIES})
-  set(_combined_name)
-
-  set(_extaddlibdir "${_addlibdir}")
-  if(WIN32)
-    list(APPEND _extaddlibdir ENV LIB)
-  elseif(APPLE)
-    list(APPEND _extaddlibdir ENV DYLD_LIBRARY_PATH)
-  else()
-    list(APPEND _extaddlibdir ENV LD_LIBRARY_PATH)
-  endif()
-  list(APPEND _extaddlibdir "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}")
-
-  foreach(_library ${_list})
-    if(_library MATCHES "^-Wl,--(start|end)-group$")
-      # Respect linker flags like --start/end-group (required by MKL)
-      set(${LIBRARIES} ${${LIBRARIES}} "${_library}")
-    else()
-      set(_combined_name ${_combined_name}_${_library})
-      if(NOT "${_threadlibs}" STREQUAL "")
-        set(_combined_name ${_combined_name}_threadlibs)
-      endif()
-      if(_libraries_work)
-        find_library(${_prefix}_${_library}_LIBRARY
-          NAMES ${_library}
-          PATHS ${_extaddlibdir}
-          PATH_SUFFIXES ${_subdirs}
-        )
-        #message("DEBUG: find_library(${_library}) got ${${_prefix}_${_library}_LIBRARY}")
-        mark_as_advanced(${_prefix}_${_library}_LIBRARY)
-        set(${LIBRARIES} ${${LIBRARIES}} ${${_prefix}_${_library}_LIBRARY})
-        set(_libraries_work ${${_prefix}_${_library}_LIBRARY})
-      endif()
-    endif()
-  endforeach()
-
-  if(_libraries_work)
-    # Test this combination of libraries.
-    set(CMAKE_REQUIRED_LIBRARIES ${_flags} ${${LIBRARIES}} ${_threadlibs})
-    #message("DEBUG: CMAKE_REQUIRED_LIBRARIES = ${CMAKE_REQUIRED_LIBRARIES}")
-    if(CMAKE_Fortran_COMPILER_LOADED)
-      check_fortran_function_exists("${_name}" ${_prefix}${_combined_name}_WORKS)
-    else()
-      check_function_exists("${_name}_" ${_prefix}${_combined_name}_WORKS)
-    endif()
-    set(CMAKE_REQUIRED_LIBRARIES)
-    set(_libraries_work ${${_prefix}${_combined_name}_WORKS})
-  endif()
-
-  if(_libraries_work)
-    if("${_list}" STREQUAL "")
-      set(${LIBRARIES} "${LIBRARIES}-PLACEHOLDER-FOR-EMPTY-LIBRARIES")
-    else()
-      set(${LIBRARIES} ${${LIBRARIES}} ${_threadlibs})
-    endif()
-  else()
-    set(${LIBRARIES} FALSE)
-  endif()
-  #message("DEBUG: ${LIBRARIES} = ${${LIBRARIES}}")
-endmacro()
-
-set(BLAS_LINKER_FLAGS)
-set(BLAS_LIBRARIES)
-set(BLAS95_LIBRARIES)
-if(NOT $ENV{BLA_VENDOR} STREQUAL "")
-  set(BLA_VENDOR $ENV{BLA_VENDOR})
-else()
-  if(NOT BLA_VENDOR)
-    set(BLA_VENDOR "All")
-  endif()
-endif()
-
-# Implicitly linked BLAS libraries?
-if(BLA_VENDOR STREQUAL "All")
-  if(NOT BLAS_LIBRARIES)
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      ""
-      ""
-      ""
-      ""
-      )
-  endif()
-endif()
-
-# BLAS in the Intel MKL 10+ library?
-if(BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
-  if(NOT BLAS_LIBRARIES)
-    if(CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED)
-      # System-specific settings
-      if(WIN32)
-        if(BLA_STATIC)
-          set(BLAS_mkl_DLL_SUFFIX "")
-        else()
-          set(BLAS_mkl_DLL_SUFFIX "_dll")
-        endif()
-      else()
-        if(BLA_STATIC)
-          set(BLAS_mkl_START_GROUP "-Wl,--start-group")
-          set(BLAS_mkl_END_GROUP "-Wl,--end-group")
-        else()
-          set(BLAS_mkl_START_GROUP "")
-          set(BLAS_mkl_END_GROUP "")
-        endif()
-        # Switch to GNU Fortran support layer if needed (but not on Apple, where MKL does not provide it)
-        if(CMAKE_Fortran_COMPILER_LOADED AND CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" AND NOT APPLE)
-            set(BLAS_mkl_INTFACE "gf")
-            set(BLAS_mkl_THREADING "gnu")
-            set(BLAS_mkl_OMP "gomp")
-        else()
-            set(BLAS_mkl_INTFACE "intel")
-            set(BLAS_mkl_THREADING "intel")
-            set(BLAS_mkl_OMP "iomp5")
-        endif()
-        set(BLAS_mkl_LM "-lm")
-        set(BLAS_mkl_LDL "-ldl")
-      endif()
-
-      if(BLAS_FIND_QUIETLY OR NOT BLAS_FIND_REQUIRED)
-        find_package(Threads)
-      else()
-        find_package(Threads REQUIRED)
-      endif()
-
-      if(BLA_VENDOR MATCHES "_64ilp")
-        set(BLAS_mkl_ILP_MODE "ilp64")
-      else()
-        set(BLAS_mkl_ILP_MODE "lp64")
-      endif()
-
-      set(BLAS_SEARCH_LIBS "")
-
-      if(BLA_F95)
-        set(BLAS_mkl_SEARCH_SYMBOL "sgemm_f95")
-        set(_LIBRARIES BLAS95_LIBRARIES)
-        if(WIN32)
-          # Find the main file (32-bit or 64-bit)
-          set(BLAS_SEARCH_LIBS_WIN_MAIN "")
-          if(BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
-              "mkl_blas95${BLAS_mkl_DLL_SUFFIX} mkl_intel_c${BLAS_mkl_DLL_SUFFIX}")
-          endif()
-
-          if(BLA_VENDOR MATCHES "^Intel10_64i?lp" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
-              "mkl_blas95_${BLAS_mkl_ILP_MODE}${BLAS_mkl_DLL_SUFFIX} mkl_intel_${BLAS_mkl_ILP_MODE}${BLAS_mkl_DLL_SUFFIX}")
-          endif()
-
-          # Add threading/sequential libs
-          set(BLAS_SEARCH_LIBS_WIN_THREAD "")
-          if(BLA_VENDOR MATCHES "^Intel10_64i?lp$" OR BLA_VENDOR STREQUAL "All")
-            # old version
-            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
-              "libguide40 mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
-            # mkl >= 10.3
-            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
-              "libiomp5md mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
-          endif()
-          if(BLA_VENDOR MATCHES "^Intel10_64i?lp_seq$" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
-              "mkl_sequential${BLAS_mkl_DLL_SUFFIX}")
-          endif()
-
-          # Cartesian product of the above
-          foreach(MAIN ${BLAS_SEARCH_LIBS_WIN_MAIN})
-            foreach(THREAD ${BLAS_SEARCH_LIBS_WIN_THREAD})
-              list(APPEND BLAS_SEARCH_LIBS
-                "${MAIN} ${THREAD} mkl_core${BLAS_mkl_DLL_SUFFIX}")
-            endforeach()
-          endforeach()
-        else()
-          if(BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
-            # old version
-            list(APPEND BLAS_SEARCH_LIBS
-              "mkl_blas95 mkl_${BLAS_mkl_INTFACE} mkl_${BLAS_mkl_THREADING}_thread mkl_core guide")
-
-            # mkl >= 10.3
-            list(APPEND BLAS_SEARCH_LIBS
-              "${BLAS_mkl_START_GROUP} mkl_blas95 mkl_${BLAS_mkl_INTFACE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_END_GROUP} ${BLAS_mkl_OMP}")
-          endif()
-          if(BLA_VENDOR MATCHES "^Intel10_64i?lp$" OR BLA_VENDOR STREQUAL "All")
-            # old version
-            list(APPEND BLAS_SEARCH_LIBS
-              "mkl_blas95 mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_THREADING}_thread mkl_core guide")
-
-            # mkl >= 10.3
-            list(APPEND BLAS_SEARCH_LIBS
-              "${BLAS_mkl_START_GROUP} mkl_blas95_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_END_GROUP} ${BLAS_mkl_OMP}")
-          endif()
-          if(BLA_VENDOR MATCHES "^Intel10_64i?lp_seq$" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS
-              "${BLAS_mkl_START_GROUP} mkl_blas95_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_sequential mkl_core ${BLAS_mkl_END_GROUP}")
-          endif()
-        endif()
-      else()
-        set(BLAS_mkl_SEARCH_SYMBOL sgemm)
-        set(_LIBRARIES BLAS_LIBRARIES)
-        if(WIN32)
-          # Find the main file (32-bit or 64-bit)
-          set(BLAS_SEARCH_LIBS_WIN_MAIN "")
-          if(BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
-              "mkl_intel_c${BLAS_mkl_DLL_SUFFIX}")
-          endif()
-          if(BLA_VENDOR MATCHES "^Intel10_64i?lp" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
-              "mkl_intel_${BLAS_mkl_ILP_MODE}${BLAS_mkl_DLL_SUFFIX}")
-          endif()
-
-          # Add threading/sequential libs
-          set(BLAS_SEARCH_LIBS_WIN_THREAD "")
-          if(BLA_VENDOR MATCHES "^Intel10_64i?lp$" OR BLA_VENDOR STREQUAL "All")
-            # old version
-            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
-              "libguide40 mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
-            # mkl >= 10.3
-            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
-              "libiomp5md mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
-          endif()
-          if(BLA_VENDOR MATCHES "^Intel10_64i?lp_seq$" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
-              "mkl_sequential${BLAS_mkl_DLL_SUFFIX}")
-          endif()
-
-          # Cartesian product of the above
-          foreach(MAIN ${BLAS_SEARCH_LIBS_WIN_MAIN})
-            foreach(THREAD ${BLAS_SEARCH_LIBS_WIN_THREAD})
-              list(APPEND BLAS_SEARCH_LIBS
-                "${MAIN} ${THREAD} mkl_core${BLAS_mkl_DLL_SUFFIX}")
-            endforeach()
-          endforeach()
-        else()
-          if(BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
-            # old version
-            list(APPEND BLAS_SEARCH_LIBS
-              "mkl_${BLAS_mkl_INTFACE} mkl_${BLAS_mkl_THREADING}_thread mkl_core guide")
-
-            # mkl >= 10.3
-            list(APPEND BLAS_SEARCH_LIBS
-              "${BLAS_mkl_START_GROUP} mkl_${BLAS_mkl_INTFACE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_END_GROUP} ${BLAS_mkl_OMP}")
-          endif()
-          if(BLA_VENDOR MATCHES "^Intel10_64i?lp$" OR BLA_VENDOR STREQUAL "All")
-            # old version
-            list(APPEND BLAS_SEARCH_LIBS
-              "mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_THREADING}_thread mkl_core guide")
-
-            # mkl >= 10.3
-            list(APPEND BLAS_SEARCH_LIBS
-              "${BLAS_mkl_START_GROUP} mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_END_GROUP} ${BLAS_mkl_OMP}")
-          endif()
-          if(BLA_VENDOR MATCHES "^Intel10_64i?lp_seq$" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS
-              "${BLAS_mkl_START_GROUP} mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_sequential mkl_core ${BLAS_mkl_END_GROUP}")
-          endif()
-
-          #older vesions of intel mkl libs
-          if(BLA_VENDOR STREQUAL "Intel" OR BLA_VENDOR STREQUAL "All")
-            list(APPEND BLAS_SEARCH_LIBS
-              "mkl")
-            list(APPEND BLAS_SEARCH_LIBS
-              "mkl_ia32")
-            list(APPEND BLAS_SEARCH_LIBS
-              "mkl_em64t")
-          endif()
-        endif()
-      endif()
-
-      if(BLA_VENDOR MATCHES "^Intel10_64_dyn$" OR BLA_VENDOR STREQUAL "All")
-        # mkl >= 10.3 with single dynamic library
-        list(APPEND BLAS_SEARCH_LIBS
-          "mkl_rt")
-      endif()
-
-      # MKL uses a multitude of partially platform-specific subdirectories:
-      if(BLA_VENDOR STREQUAL "Intel10_32")
-        set(BLAS_mkl_ARCH_NAME "ia32")
-      else()
-        set(BLAS_mkl_ARCH_NAME "intel64")
-      endif()
-      if(WIN32)
-        set(BLAS_mkl_OS_NAME "win")
-      elseif(APPLE)
-        set(BLAS_mkl_OS_NAME "mac")
-      else()
-        set(BLAS_mkl_OS_NAME "lin")
-      endif()
-      if(DEFINED ENV{MKLROOT})
-        file(TO_CMAKE_PATH "$ENV{MKLROOT}" BLAS_mkl_MKLROOT)
-        # If MKLROOT points to the subdirectory 'mkl', use the parent directory instead
-        # so we can better detect other relevant libraries in 'compiler' or 'tbb':
-        get_filename_component(BLAS_mkl_MKLROOT_LAST_DIR "${BLAS_mkl_MKLROOT}" NAME)
-        if(BLAS_mkl_MKLROOT_LAST_DIR STREQUAL "mkl")
-            get_filename_component(BLAS_mkl_MKLROOT "${BLAS_mkl_MKLROOT}" DIRECTORY)
-        endif()
-      endif()
-      set(BLAS_mkl_LIB_PATH_SUFFIXES
-          "compiler/lib" "compiler/lib/${BLAS_mkl_ARCH_NAME}_${BLAS_mkl_OS_NAME}"
-          "mkl/lib" "mkl/lib/${BLAS_mkl_ARCH_NAME}_${BLAS_mkl_OS_NAME}"
-          "lib/${BLAS_mkl_ARCH_NAME}_${BLAS_mkl_OS_NAME}")
-
-      foreach(IT ${BLAS_SEARCH_LIBS})
-        string(REPLACE " " ";" SEARCH_LIBS ${IT})
-        if(NOT ${_LIBRARIES})
-          check_blas_libraries(
-            ${_LIBRARIES}
-            BLAS
-            ${BLAS_mkl_SEARCH_SYMBOL}
-            ""
-            "${SEARCH_LIBS}"
-            "${CMAKE_THREAD_LIBS_INIT};${BLAS_mkl_LM};${BLAS_mkl_LDL}"
-            "${BLAS_mkl_MKLROOT}"
-            "${BLAS_mkl_LIB_PATH_SUFFIXES}"
-            )
-        endif()
-      endforeach()
-
-      unset(BLAS_mkl_ILP_MODE)
-      unset(BLAS_mkl_INTFACE)
-      unset(BLAS_mkl_THREADING)
-      unset(BLAS_mkl_OMP)
-      unset(BLAS_mkl_DLL_SUFFIX)
-      unset(BLAS_mkl_LM)
-      unset(BLAS_mkl_LDL)
-      unset(BLAS_mkl_MKLROOT)
-      unset(BLAS_mkl_MKLROOT_LAST_DIR)
-      unset(BLAS_mkl_ARCH_NAME)
-      unset(BLAS_mkl_OS_NAME)
-      unset(BLAS_mkl_LIB_PATH_SUFFIXES)
-    endif()
-  endif()
-endif()
-
-if(BLA_F95)
-  find_package_handle_standard_args(BLAS REQUIRED_VARS BLAS95_LIBRARIES)
-  set(BLAS95_FOUND ${BLAS_FOUND})
-  if(BLAS_FOUND)
-    set(BLAS_LIBRARIES "${BLAS95_LIBRARIES}")
-  endif()
-endif()
-
-# gotoblas? (http://www.tacc.utexas.edu/tacc-projects/gotoblas2)
-if(BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All")
-  if(NOT BLAS_LIBRARIES)
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "goto2"
-      ""
-      ""
-      ""
-      )
-  endif()
-endif()
-
-# OpenBLAS? (http://www.openblas.net)
-if(BLA_VENDOR STREQUAL "OpenBLAS" OR BLA_VENDOR STREQUAL "All")
-  if(NOT BLAS_LIBRARIES)
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "openblas"
-      ""
-      ""
-      ""
-      )
-  endif()
-  if(NOT BLAS_LIBRARIES AND (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED))
-    if(BLAS_FIND_QUIETLY OR NOT BLAS_FIND_REQUIRED)
-      find_package(Threads)
-    else()
-      find_package(Threads REQUIRED)
-    endif()
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "openblas"
-      "${CMAKE_THREAD_LIBS_INIT}"
-      ""
-      ""
-      )
-  endif()
-endif()
-
-# ArmPL blas library? (https://developer.arm.com/tools-and-software/server-and-hpc/compile/arm-compiler-for-linux/arm-performance-libraries)
-if(BLA_VENDOR MATCHES "Arm" OR BLA_VENDOR STREQUAL "All")
-
-   # Check for 64bit Integer support
-   if(BLA_VENDOR MATCHES "_ilp64")
-     set(BLAS_armpl_LIB "armpl_ilp64")
-   else()
-     set(BLAS_armpl_LIB "armpl_lp64")
-   endif()
-
-   # Check for OpenMP support, VIA BLA_VENDOR of Arm_mp or Arm_ipl64_mp
-   if(BLA_VENDOR MATCHES "_mp")
-     set(BLAS_armpl_LIB "${BLAS_armpl_LIB}_mp")
-   endif()
-
-   if(NOT BLAS_LIBRARIES)
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "${BLAS_armpl_LIB}"
-      ""
-      ""
-      ""
-      )
-  endif()
-
-endif()
-
-# FLAME's blis library? (https://github.com/flame/blis)
-if(BLA_VENDOR STREQUAL "FLAME" OR BLA_VENDOR STREQUAL "All")
-  if(NOT BLAS_LIBRARIES)
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "blis"
-      ""
-      ""
-      ""
-      )
-  endif()
-endif()
-
-# BLAS in the ATLAS library? (http://math-atlas.sourceforge.net/)
-if(BLA_VENDOR STREQUAL "ATLAS" OR BLA_VENDOR STREQUAL "All")
-  if(NOT BLAS_LIBRARIES)
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      dgemm
-      ""
-      "blas;f77blas;atlas"
-      ""
-      ""
-      ""
-      )
-  endif()
-endif()
-
-# BLAS in PhiPACK libraries? (requires generic BLAS lib, too)
-if(BLA_VENDOR STREQUAL "PhiPACK" OR BLA_VENDOR STREQUAL "All")
-  if(NOT BLAS_LIBRARIES)
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "sgemm;dgemm;blas"
-      ""
-      ""
-      ""
-      )
-  endif()
-endif()
-
-# BLAS in Alpha CXML library?
-if(BLA_VENDOR STREQUAL "CXML" OR BLA_VENDOR STREQUAL "All")
-  if(NOT BLAS_LIBRARIES)
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "cxml"
-      ""
-      ""
-      ""
-      )
-  endif()
-endif()
-
-# BLAS in Alpha DXML library? (now called CXML, see above)
-if(BLA_VENDOR STREQUAL "DXML" OR BLA_VENDOR STREQUAL "All")
-  if(NOT BLAS_LIBRARIES)
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "dxml"
-      ""
-      ""
-      ""
-      )
-  endif()
-endif()
-
-# BLAS in Sun Performance library?
-if(BLA_VENDOR STREQUAL "SunPerf" OR BLA_VENDOR STREQUAL "All")
-  if(NOT BLAS_LIBRARIES)
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      "-xlic_lib=sunperf"
-      "sunperf;sunmath"
-      ""
-      ""
-      ""
-      )
-    if(BLAS_LIBRARIES)
-      set(BLAS_LINKER_FLAGS "-xlic_lib=sunperf")
-    endif()
-  endif()
-endif()
-
-# BLAS in SCSL library?  (SGI/Cray Scientific Library)
-if(BLA_VENDOR STREQUAL "SCSL" OR BLA_VENDOR STREQUAL "All")
-  if(NOT BLAS_LIBRARIES)
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "scsl"
-      ""
-      ""
-      ""
-      )
-  endif()
-endif()
-
-# BLAS in SGIMATH library?
-if(BLA_VENDOR STREQUAL "SGIMATH" OR BLA_VENDOR STREQUAL "All")
-  if(NOT BLAS_LIBRARIES)
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "complib.sgimath"
-      ""
-      ""
-      ""
-      )
-  endif()
-endif()
-
-# BLAS in IBM ESSL library? (requires generic BLAS lib, too)
-if(BLA_VENDOR STREQUAL "IBMESSL" OR BLA_VENDOR STREQUAL "All")
-  if(NOT BLAS_LIBRARIES)
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "essl;blas"
-      ""
-      ""
-      ""
-      )
-  endif()
-endif()
-
-# BLAS in acml library?
-if(BLA_VENDOR MATCHES "ACML" OR BLA_VENDOR STREQUAL "All")
-  if(((BLA_VENDOR STREQUAL "ACML") AND (NOT BLAS_ACML_LIB_DIRS)) OR
-    ((BLA_VENDOR STREQUAL "ACML_MP") AND (NOT BLAS_ACML_MP_LIB_DIRS)) OR
-    ((BLA_VENDOR STREQUAL "ACML_GPU") AND (NOT BLAS_ACML_GPU_LIB_DIRS))
-    )
-  # try to find acml in "standard" paths
-  if(WIN32)
-    file(GLOB _ACML_ROOT "C:/AMD/acml*/ACML-EULA.txt")
-  else()
-    file(GLOB _ACML_ROOT "/opt/acml*/ACML-EULA.txt")
-  endif()
-  if(WIN32)
-    file(GLOB _ACML_GPU_ROOT "C:/AMD/acml*/GPGPUexamples")
-  else()
-    file(GLOB _ACML_GPU_ROOT "/opt/acml*/GPGPUexamples")
-  endif()
-  list(GET _ACML_ROOT 0 _ACML_ROOT)
-  list(GET _ACML_GPU_ROOT 0 _ACML_GPU_ROOT)
-  if(_ACML_ROOT)
-    get_filename_component(_ACML_ROOT ${_ACML_ROOT} PATH)
-    if(SIZEOF_INTEGER EQUAL 8)
-      set(_ACML_PATH_SUFFIX "_int64")
-    else()
-      set(_ACML_PATH_SUFFIX "")
-    endif()
-    if(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
-      set(_ACML_COMPILER32 "ifort32")
-      set(_ACML_COMPILER64 "ifort64")
-    elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "SunPro")
-      set(_ACML_COMPILER32 "sun32")
-      set(_ACML_COMPILER64 "sun64")
-    elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "PGI")
-      set(_ACML_COMPILER32 "pgi32")
-      if(WIN32)
-        set(_ACML_COMPILER64 "win64")
-      else()
-        set(_ACML_COMPILER64 "pgi64")
-      endif()
-    elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Open64")
-      # 32 bit builds not supported on Open64 but for code simplicity
-      # We'll just use the same directory twice
-      set(_ACML_COMPILER32 "open64_64")
-      set(_ACML_COMPILER64 "open64_64")
-    elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "NAG")
-      set(_ACML_COMPILER32 "nag32")
-      set(_ACML_COMPILER64 "nag64")
-    else()
-      set(_ACML_COMPILER32 "gfortran32")
-      set(_ACML_COMPILER64 "gfortran64")
-    endif()
-
-    if(BLA_VENDOR STREQUAL "ACML_MP")
-      set(_ACML_MP_LIB_DIRS
-        "${_ACML_ROOT}/${_ACML_COMPILER32}_mp${_ACML_PATH_SUFFIX}/lib"
-        "${_ACML_ROOT}/${_ACML_COMPILER64}_mp${_ACML_PATH_SUFFIX}/lib")
-    else()
-      set(_ACML_LIB_DIRS
-        "${_ACML_ROOT}/${_ACML_COMPILER32}${_ACML_PATH_SUFFIX}/lib"
-        "${_ACML_ROOT}/${_ACML_COMPILER64}${_ACML_PATH_SUFFIX}/lib")
-    endif()
-  endif()
-elseif(BLAS_${BLA_VENDOR}_LIB_DIRS)
-  set(_${BLA_VENDOR}_LIB_DIRS ${BLAS_${BLA_VENDOR}_LIB_DIRS})
-endif()
-
-if(BLA_VENDOR STREQUAL "ACML_MP")
-  foreach(BLAS_ACML_MP_LIB_DIRS ${_ACML_MP_LIB_DIRS})
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      "" "acml_mp;acml_mv" "" ${BLAS_ACML_MP_LIB_DIRS} ""
-      )
-    if(BLAS_LIBRARIES)
-      break()
-    endif()
-  endforeach()
-elseif(BLA_VENDOR STREQUAL "ACML_GPU")
-  foreach(BLAS_ACML_GPU_LIB_DIRS ${_ACML_GPU_LIB_DIRS})
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      "" "acml;acml_mv;CALBLAS" "" ${BLAS_ACML_GPU_LIB_DIRS} ""
-      )
-    if(BLAS_LIBRARIES)
-      break()
-    endif()
-  endforeach()
-else()
-  foreach(BLAS_ACML_LIB_DIRS ${_ACML_LIB_DIRS})
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      "" "acml;acml_mv" "" ${BLAS_ACML_LIB_DIRS} ""
-      )
-    if(BLAS_LIBRARIES)
-      break()
-    endif()
-  endforeach()
-endif()
-
-# Either acml or acml_mp should be in LD_LIBRARY_PATH but not both
-if(NOT BLAS_LIBRARIES)
-  check_blas_libraries(
-    BLAS_LIBRARIES
-    BLAS
-    sgemm
-    ""
-    "acml;acml_mv"
-    ""
-    ""
-    ""
-    )
-endif()
-if(NOT BLAS_LIBRARIES)
-  check_blas_libraries(
-    BLAS_LIBRARIES
-    BLAS
-    sgemm
-    ""
-    "acml_mp;acml_mv"
-    ""
-    ""
-    ""
-    )
-endif()
-if(NOT BLAS_LIBRARIES)
-  check_blas_libraries(
-    BLAS_LIBRARIES
-    BLAS
-    sgemm
-    ""
-    "acml;acml_mv;CALBLAS"
-    ""
-    ""
-    ""
-    )
-endif()
-endif() # ACML
-
-# Apple BLAS library?
-if(BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All")
-  if(NOT BLAS_LIBRARIES)
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      dgemm
-      ""
-      "Accelerate"
-      ""
-      ""
-      ""
-      )
-  endif()
-endif()
-
-# Apple NAS (vecLib) library?
-if(BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All")
-  if(NOT BLAS_LIBRARIES)
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      dgemm
-      ""
-      "vecLib"
-      ""
-      ""
-      ""
-      )
-  endif()
-endif()
-
-# Generic BLAS library?
-if(BLA_VENDOR STREQUAL "Generic" OR BLA_VENDOR STREQUAL "All")
-  if(NOT BLAS_LIBRARIES)
-    check_blas_libraries(
-      BLAS_LIBRARIES
-      BLAS
-      sgemm
-      ""
-      "blas"
-      ""
-      ""
-      ""
-      )
-  endif()
-endif()
-
-if(NOT BLA_F95)
-  find_package_handle_standard_args(BLAS REQUIRED_VARS BLAS_LIBRARIES)
-endif()
-
-
-# On compilers that implicitly link BLAS (such as ftn, cc, and CC on Cray HPC machines)
-# we used a placeholder for empty BLAS_LIBRARIES to get through our logic above.
-if(BLAS_LIBRARIES STREQUAL "BLAS_LIBRARIES-PLACEHOLDER-FOR-EMPTY-LIBRARIES")
-  set(BLAS_LIBRARIES "")
-endif()
-
-_add_blas_target()
-cmake_pop_check_state()
-set(CMAKE_FIND_LIBRARY_SUFFIXES ${_blas_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
diff --git a/share/cmake-3.18/Modules/FindBZip2.cmake b/share/cmake-3.18/Modules/FindBZip2.cmake
deleted file mode 100644
index 98ab72c..0000000
--- a/share/cmake-3.18/Modules/FindBZip2.cmake
+++ /dev/null
@@ -1,104 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindBZip2
----------
-
-Try to find BZip2
-
-IMPORTED Targets
-^^^^^^^^^^^^^^^^
-
-This module defines :prop_tgt:`IMPORTED` target ``BZip2::BZip2``, if
-BZip2 has been found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module defines the following variables:
-
-``BZIP2_FOUND``
-  system has BZip2
-``BZIP2_INCLUDE_DIRS``
-  the BZip2 include directories
-``BZIP2_LIBRARIES``
-  Link these to use BZip2
-``BZIP2_NEED_PREFIX``
-  this is set if the functions are prefixed with ``BZ2_``
-``BZIP2_VERSION_STRING``
-  the version of BZip2 found
-
-Cache variables
-^^^^^^^^^^^^^^^
-
-The following cache variables may also be set:
-
-``BZIP2_INCLUDE_DIR``
-  the BZip2 include directory
-#]=======================================================================]
-
-set(_BZIP2_PATHS PATHS
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Bzip2;InstallPath]"
-  )
-
-find_path(BZIP2_INCLUDE_DIR bzlib.h ${_BZIP2_PATHS} PATH_SUFFIXES include)
-
-if (NOT BZIP2_LIBRARIES)
-    find_library(BZIP2_LIBRARY_RELEASE NAMES bz2 bzip2 libbz2 libbzip2 ${_BZIP2_PATHS} PATH_SUFFIXES lib)
-    find_library(BZIP2_LIBRARY_DEBUG NAMES bz2d bzip2d libbz2d libbzip2d ${_BZIP2_PATHS} PATH_SUFFIXES lib)
-
-    include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-    SELECT_LIBRARY_CONFIGURATIONS(BZIP2)
-else ()
-    file(TO_CMAKE_PATH "${BZIP2_LIBRARIES}" BZIP2_LIBRARIES)
-endif ()
-
-if (BZIP2_INCLUDE_DIR AND EXISTS "${BZIP2_INCLUDE_DIR}/bzlib.h")
-    file(STRINGS "${BZIP2_INCLUDE_DIR}/bzlib.h" BZLIB_H REGEX "bzip2/libbzip2 version [0-9]+\\.[^ ]+ of [0-9]+ ")
-    string(REGEX REPLACE ".* bzip2/libbzip2 version ([0-9]+\\.[^ ]+) of [0-9]+ .*" "\\1" BZIP2_VERSION_STRING "${BZLIB_H}")
-endif ()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(BZip2
-                                  REQUIRED_VARS BZIP2_LIBRARIES BZIP2_INCLUDE_DIR
-                                  VERSION_VAR BZIP2_VERSION_STRING)
-
-if (BZIP2_FOUND)
-  set(BZIP2_INCLUDE_DIRS ${BZIP2_INCLUDE_DIR})
-  include(${CMAKE_CURRENT_LIST_DIR}/CheckSymbolExists.cmake)
-  include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
-  cmake_push_check_state()
-  set(CMAKE_REQUIRED_QUIET ${BZip2_FIND_QUIETLY})
-  set(CMAKE_REQUIRED_INCLUDES ${BZIP2_INCLUDE_DIR})
-  set(CMAKE_REQUIRED_LIBRARIES ${BZIP2_LIBRARIES})
-  CHECK_SYMBOL_EXISTS(BZ2_bzCompressInit "bzlib.h" BZIP2_NEED_PREFIX)
-  cmake_pop_check_state()
-
-  if(NOT TARGET BZip2::BZip2)
-    add_library(BZip2::BZip2 UNKNOWN IMPORTED)
-    set_target_properties(BZip2::BZip2 PROPERTIES
-      INTERFACE_INCLUDE_DIRECTORIES "${BZIP2_INCLUDE_DIRS}")
-
-    if(BZIP2_LIBRARY_RELEASE)
-      set_property(TARGET BZip2::BZip2 APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS RELEASE)
-      set_target_properties(BZip2::BZip2 PROPERTIES
-        IMPORTED_LOCATION_RELEASE "${BZIP2_LIBRARY_RELEASE}")
-    endif()
-
-    if(BZIP2_LIBRARY_DEBUG)
-      set_property(TARGET BZip2::BZip2 APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS DEBUG)
-      set_target_properties(BZip2::BZip2 PROPERTIES
-        IMPORTED_LOCATION_DEBUG "${BZIP2_LIBRARY_DEBUG}")
-    endif()
-
-    if(NOT BZIP2_LIBRARY_RELEASE AND NOT BZIP2_LIBRARY_DEBUG)
-      set_property(TARGET BZip2::BZip2 APPEND PROPERTY
-        IMPORTED_LOCATION "${BZIP2_LIBRARY}")
-    endif()
-  endif()
-endif ()
-
-mark_as_advanced(BZIP2_INCLUDE_DIR)
diff --git a/share/cmake-3.18/Modules/FindBoost.cmake b/share/cmake-3.18/Modules/FindBoost.cmake
deleted file mode 100644
index 13981d3..0000000
--- a/share/cmake-3.18/Modules/FindBoost.cmake
+++ /dev/null
@@ -1,2390 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindBoost
----------
-
-Find Boost include dirs and libraries
-
-Use this module by invoking find_package with the form::
-
-  find_package(Boost
-    [version] [EXACT]      # Minimum or EXACT version e.g. 1.67.0
-    [REQUIRED]             # Fail with error if Boost is not found
-    [COMPONENTS <libs>...] # Boost libraries by their canonical name
-                           # e.g. "date_time" for "libboost_date_time"
-    [OPTIONAL_COMPONENTS <libs>...]
-                           # Optional Boost libraries by their canonical name)
-    )                      # e.g. "date_time" for "libboost_date_time"
-
-This module finds headers and requested component libraries OR a CMake
-package configuration file provided by a "Boost CMake" build.  For the
-latter case skip to the "Boost CMake" section below.  For the former
-case results are reported in variables::
-
-  Boost_FOUND            - True if headers and requested libraries were found
-  Boost_INCLUDE_DIRS     - Boost include directories
-  Boost_LIBRARY_DIRS     - Link directories for Boost libraries
-  Boost_LIBRARIES        - Boost component libraries to be linked
-  Boost_<C>_FOUND        - True if component <C> was found (<C> is upper-case)
-  Boost_<C>_LIBRARY      - Libraries to link for component <C> (may include
-                           target_link_libraries debug/optimized keywords)
-  Boost_VERSION_MACRO    - BOOST_VERSION value from boost/version.hpp
-  Boost_VERSION_STRING   - Boost version number in x.y.z format
-  Boost_VERSION          - if CMP0093 NEW => same as Boost_VERSION_STRING
-                           if CMP0093 OLD or unset => same as Boost_VERSION_MACRO
-  Boost_LIB_VERSION      - Version string appended to library filenames
-  Boost_VERSION_MAJOR    - Boost major version number (X in X.y.z)
-                           alias: Boost_MAJOR_VERSION
-  Boost_VERSION_MINOR    - Boost minor version number (Y in x.Y.z)
-                           alias: Boost_MINOR_VERSION
-  Boost_VERSION_PATCH    - Boost subminor version number (Z in x.y.Z)
-                           alias: Boost_SUBMINOR_VERSION
-  Boost_VERSION_COUNT    - Amount of version components (3)
-  Boost_LIB_DIAGNOSTIC_DEFINITIONS (Windows)
-                         - Pass to add_definitions() to have diagnostic
-                           information about Boost's automatic linking
-                           displayed during compilation
-
-Note that Boost Python components require a Python version suffix
-(Boost 1.67 and later), e.g. ``python36`` or ``python27`` for the
-versions built against Python 3.6 and 2.7, respectively.  This also
-applies to additional components using Python including
-``mpi_python`` and ``numpy``.  Earlier Boost releases may use
-distribution-specific suffixes such as ``2``, ``3`` or ``2.7``.
-These may also be used as suffixes, but note that they are not
-portable.
-
-This module reads hints about search locations from variables::
-
-  BOOST_ROOT             - Preferred installation prefix
-   (or BOOSTROOT)
-  BOOST_INCLUDEDIR       - Preferred include directory e.g. <prefix>/include
-  BOOST_LIBRARYDIR       - Preferred library directory e.g. <prefix>/lib
-  Boost_NO_SYSTEM_PATHS  - Set to ON to disable searching in locations not
-                           specified by these hint variables. Default is OFF.
-  Boost_ADDITIONAL_VERSIONS
-                         - List of Boost versions not known to this module
-                           (Boost install locations may contain the version)
-
-and saves search results persistently in CMake cache entries::
-
-  Boost_INCLUDE_DIR         - Directory containing Boost headers
-  Boost_LIBRARY_DIR_RELEASE - Directory containing release Boost libraries
-  Boost_LIBRARY_DIR_DEBUG   - Directory containing debug Boost libraries
-  Boost_<C>_LIBRARY_DEBUG   - Component <C> library debug variant
-  Boost_<C>_LIBRARY_RELEASE - Component <C> library release variant
-
-The following :prop_tgt:`IMPORTED` targets are also defined::
-
-  Boost::headers                - Target for header-only dependencies
-                                  (Boost include directory)
-                                  alias: Boost::boost
-  Boost::<C>                    - Target for specific component dependency
-                                  (shared or static library); <C> is lower-
-                                  case
-  Boost::diagnostic_definitions - interface target to enable diagnostic
-                                  information about Boost's automatic linking
-                                  during compilation (adds BOOST_LIB_DIAGNOSTIC)
-  Boost::disable_autolinking    - interface target to disable automatic
-                                  linking with MSVC (adds BOOST_ALL_NO_LIB)
-  Boost::dynamic_linking        - interface target to enable dynamic linking
-                                  linking with MSVC (adds BOOST_ALL_DYN_LINK)
-
-Implicit dependencies such as ``Boost::filesystem`` requiring
-``Boost::system`` will be automatically detected and satisfied, even
-if system is not specified when using :command:`find_package` and if
-``Boost::system`` is not added to :command:`target_link_libraries`.  If using
-``Boost::thread``, then ``Threads::Threads`` will also be added automatically.
-
-It is important to note that the imported targets behave differently
-than variables created by this module: multiple calls to
-:command:`find_package(Boost)` in the same directory or sub-directories with
-different options (e.g. static or shared) will not override the
-values of the targets created by the first call.
-
-Users may set these hints or results as ``CACHE`` entries.  Projects
-should not read these entries directly but instead use the above
-result variables.  Note that some hint names start in upper-case
-"BOOST".  One may specify these as environment variables if they are
-not specified as CMake variables or cache entries.
-
-This module first searches for the ``Boost`` header files using the above
-hint variables (excluding ``BOOST_LIBRARYDIR``) and saves the result in
-``Boost_INCLUDE_DIR``.  Then it searches for requested component libraries
-using the above hints (excluding ``BOOST_INCLUDEDIR`` and
-``Boost_ADDITIONAL_VERSIONS``), "lib" directories near ``Boost_INCLUDE_DIR``,
-and the library name configuration settings below.  It saves the
-library directories in ``Boost_LIBRARY_DIR_DEBUG`` and
-``Boost_LIBRARY_DIR_RELEASE`` and individual library
-locations in ``Boost_<C>_LIBRARY_DEBUG`` and ``Boost_<C>_LIBRARY_RELEASE``.
-When one changes settings used by previous searches in the same build
-tree (excluding environment variables) this module discards previous
-search results affected by the changes and searches again.
-
-Boost libraries come in many variants encoded in their file name.
-Users or projects may tell this module which variant to find by
-setting variables::
-
-  Boost_USE_DEBUG_LIBS     - Set to ON or OFF to specify whether to search
-                             and use the debug libraries.  Default is ON.
-  Boost_USE_RELEASE_LIBS   - Set to ON or OFF to specify whether to search
-                             and use the release libraries.  Default is ON.
-  Boost_USE_MULTITHREADED  - Set to OFF to use the non-multithreaded
-                             libraries ('mt' tag).  Default is ON.
-  Boost_USE_STATIC_LIBS    - Set to ON to force the use of the static
-                             libraries.  Default is OFF.
-  Boost_USE_STATIC_RUNTIME - Set to ON or OFF to specify whether to use
-                             libraries linked statically to the C++ runtime
-                             ('s' tag).  Default is platform dependent.
-  Boost_USE_DEBUG_RUNTIME  - Set to ON or OFF to specify whether to use
-                             libraries linked to the MS debug C++ runtime
-                             ('g' tag).  Default is ON.
-  Boost_USE_DEBUG_PYTHON   - Set to ON to use libraries compiled with a
-                             debug Python build ('y' tag). Default is OFF.
-  Boost_USE_STLPORT        - Set to ON to use libraries compiled with
-                             STLPort ('p' tag).  Default is OFF.
-  Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS
-                           - Set to ON to use libraries compiled with
-                             STLPort deprecated "native iostreams"
-                             ('n' tag).  Default is OFF.
-  Boost_COMPILER           - Set to the compiler-specific library suffix
-                             (e.g. "-gcc43").  Default is auto-computed
-                             for the C++ compiler in use.  A list may be
-                             used if multiple compatible suffixes should
-                             be tested for, in decreasing order of
-                             preference.
-  Boost_LIB_PREFIX         - Set to the platform-specific library name
-                             prefix (e.g. "lib") used by Boost static libs.
-                             This is needed only on platforms where CMake
-                             does not know the prefix by default.
-  Boost_ARCHITECTURE       - Set to the architecture-specific library suffix
-                             (e.g. "-x64").  Default is auto-computed for the
-                             C++ compiler in use.
-  Boost_THREADAPI          - Suffix for "thread" component library name,
-                             such as "pthread" or "win32".  Names with
-                             and without this suffix will both be tried.
-  Boost_NAMESPACE          - Alternate namespace used to build boost with
-                             e.g. if set to "myboost", will search for
-                             myboost_thread instead of boost_thread.
-
-Other variables one may set to control this module are::
-
-  Boost_DEBUG              - Set to ON to enable debug output from FindBoost.
-                             Please enable this before filing any bug report.
-  Boost_REALPATH           - Set to ON to resolve symlinks for discovered
-                             libraries to assist with packaging.  For example,
-                             the "system" component library may be resolved to
-                             "/usr/lib/libboost_system.so.1.67.0" instead of
-                             "/usr/lib/libboost_system.so".  This does not
-                             affect linking and should not be enabled unless
-                             the user needs this information.
-  Boost_LIBRARY_DIR        - Default value for Boost_LIBRARY_DIR_RELEASE and
-                             Boost_LIBRARY_DIR_DEBUG.
-
-On Visual Studio and Borland compilers Boost headers request automatic
-linking to corresponding libraries.  This requires matching libraries
-to be linked explicitly or available in the link library search path.
-In this case setting ``Boost_USE_STATIC_LIBS`` to ``OFF`` may not achieve
-dynamic linking.  Boost automatic linking typically requests static
-libraries with a few exceptions (such as ``Boost.Python``).  Use::
-
-  add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS})
-
-to ask Boost to report information about automatic linking requests.
-
-Example to find Boost headers only::
-
-  find_package(Boost 1.36.0)
-  if(Boost_FOUND)
-    include_directories(${Boost_INCLUDE_DIRS})
-    add_executable(foo foo.cc)
-  endif()
-
-Example to find Boost libraries and use imported targets::
-
-  find_package(Boost 1.56 REQUIRED COMPONENTS
-               date_time filesystem iostreams)
-  add_executable(foo foo.cc)
-  target_link_libraries(foo Boost::date_time Boost::filesystem
-                            Boost::iostreams)
-
-Example to find Boost Python 3.6 libraries and use imported targets::
-
-  find_package(Boost 1.67 REQUIRED COMPONENTS
-               python36 numpy36)
-  add_executable(foo foo.cc)
-  target_link_libraries(foo Boost::python36 Boost::numpy36)
-
-Example to find Boost headers and some *static* (release only) libraries::
-
-  set(Boost_USE_STATIC_LIBS        ON)  # only find static libs
-  set(Boost_USE_DEBUG_LIBS         OFF) # ignore debug libs and
-  set(Boost_USE_RELEASE_LIBS       ON)  # only find release libs
-  set(Boost_USE_MULTITHREADED      ON)
-  set(Boost_USE_STATIC_RUNTIME    OFF)
-  find_package(Boost 1.66.0 COMPONENTS date_time filesystem system ...)
-  if(Boost_FOUND)
-    include_directories(${Boost_INCLUDE_DIRS})
-    add_executable(foo foo.cc)
-    target_link_libraries(foo ${Boost_LIBRARIES})
-  endif()
-
-Boost CMake
-^^^^^^^^^^^
-
-If Boost was built using the boost-cmake project or from Boost 1.70.0 on
-it provides a package configuration file for use with find_package's config mode.
-This module looks for the package configuration file called
-``BoostConfig.cmake`` or ``boost-config.cmake`` and stores the result in
-``CACHE`` entry "Boost_DIR".  If found, the package configuration file is loaded
-and this module returns with no further action.  See documentation of
-the Boost CMake package configuration for details on what it provides.
-
-Set ``Boost_NO_BOOST_CMAKE`` to ``ON``, to disable the search for boost-cmake.
-#]=======================================================================]
-
-# The FPHSA helper provides standard way of reporting final search results to
-# the user including the version and component checks.
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-
-# Save project's policies
-cmake_policy(PUSH)
-cmake_policy(SET CMP0057 NEW) # if IN_LIST
-cmake_policy(SET CMP0102 NEW) # if mark_as_advanced(non_cache_var)
-
-function(_boost_get_existing_target component target_var)
-  set(names "${component}")
-  if(component MATCHES "^([a-z_]*)(python|numpy)([1-9])\\.?([0-9])?$")
-    # handle pythonXY and numpyXY versioned components and also python X.Y, mpi_python etc.
-    list(APPEND names
-      "${CMAKE_MATCH_1}${CMAKE_MATCH_2}" # python
-      "${CMAKE_MATCH_1}${CMAKE_MATCH_2}${CMAKE_MATCH_3}" # pythonX
-      "${CMAKE_MATCH_1}${CMAKE_MATCH_2}${CMAKE_MATCH_3}${CMAKE_MATCH_4}" #pythonXY
-    )
-  endif()
-  # https://github.com/boost-cmake/boost-cmake uses boost::file_system etc.
-  # So handle similar constructions of target names
-  string(TOLOWER "${component}" lower_component)
-  list(APPEND names "${lower_component}")
-  foreach(prefix Boost boost)
-    foreach(name IN LISTS names)
-      if(TARGET "${prefix}::${name}")
-        # The target may be an INTERFACE library that wraps around a single other
-        # target for compatibility.  Unwrap this layer so we can extract real info.
-        if("${name}" MATCHES "^(python|numpy|mpi_python)([1-9])([0-9])$")
-          set(name_nv "${CMAKE_MATCH_1}")
-          if(TARGET "${prefix}::${name_nv}")
-            get_property(type TARGET "${prefix}::${name}" PROPERTY TYPE)
-            if(type STREQUAL "INTERFACE_LIBRARY")
-              get_property(lib TARGET "${prefix}::${name}" PROPERTY INTERFACE_LINK_LIBRARIES)
-              if("${lib}" STREQUAL "${prefix}::${name_nv}")
-                set(${target_var} "${prefix}::${name_nv}" PARENT_SCOPE)
-                return()
-              endif()
-            endif()
-          endif()
-        endif()
-        set(${target_var} "${prefix}::${name}" PARENT_SCOPE)
-        return()
-      endif()
-    endforeach()
-  endforeach()
-  set(${target_var} "" PARENT_SCOPE)
-endfunction()
-
-function(_boost_get_canonical_target_name component target_var)
-  string(TOLOWER "${component}" component)
-  if(component MATCHES "^([a-z_]*)(python|numpy)([1-9])\\.?([0-9])?$")
-    # handle pythonXY and numpyXY versioned components and also python X.Y, mpi_python etc.
-    set(${target_var} "Boost::${CMAKE_MATCH_1}${CMAKE_MATCH_2}" PARENT_SCOPE)
-  else()
-    set(${target_var} "Boost::${component}" PARENT_SCOPE)
-  endif()
-endfunction()
-
-macro(_boost_set_in_parent_scope name value)
-  # Set a variable in parent scope and make it visibile in current scope
-  set(${name} "${value}" PARENT_SCOPE)
-  set(${name} "${value}")
-endmacro()
-
-macro(_boost_set_if_unset name value)
-  if(NOT ${name})
-    _boost_set_in_parent_scope(${name} "${value}")
-  endif()
-endmacro()
-
-macro(_boost_set_cache_if_unset name value)
-  if(NOT ${name})
-    set(${name} "${value}" CACHE STRING "" FORCE)
-  endif()
-endmacro()
-
-macro(_boost_append_include_dir target)
-  get_target_property(inc "${target}" INTERFACE_INCLUDE_DIRECTORIES)
-  if(inc)
-    list(APPEND include_dirs "${inc}")
-  endif()
-endmacro()
-
-function(_boost_set_legacy_variables_from_config)
-  # Set legacy variables for compatibility if not set
-  set(include_dirs "")
-  set(library_dirs "")
-  set(libraries "")
-  # Header targets Boost::headers or Boost::boost
-  foreach(comp headers boost)
-    _boost_get_existing_target(${comp} target)
-    if(target)
-      _boost_append_include_dir("${target}")
-    endif()
-  endforeach()
-  # Library targets
-  foreach(comp IN LISTS Boost_FIND_COMPONENTS)
-    string(TOUPPER ${comp} uppercomp)
-    # Overwrite if set
-    _boost_set_in_parent_scope(Boost_${uppercomp}_FOUND "${Boost_${comp}_FOUND}")
-    if(Boost_${comp}_FOUND)
-      _boost_get_existing_target(${comp} target)
-      if(NOT target)
-        if(Boost_DEBUG OR Boost_VERBOSE)
-          message(WARNING "Could not find imported target for required component '${comp}'. Legacy variables for this component might be missing. Refer to the documentation of your Boost installation for help on variables to use.")
-        endif()
-        continue()
-      endif()
-      _boost_append_include_dir("${target}")
-      _boost_set_if_unset(Boost_${uppercomp}_LIBRARY "${target}")
-      _boost_set_if_unset(Boost_${uppercomp}_LIBRARIES "${target}") # Very old legacy variable
-      list(APPEND libraries "${target}")
-      get_property(type TARGET "${target}" PROPERTY TYPE)
-      if(NOT type STREQUAL "INTERFACE_LIBRARY")
-        foreach(cfg RELEASE DEBUG)
-          get_target_property(lib ${target} IMPORTED_LOCATION_${cfg})
-          if(lib)
-            get_filename_component(lib_dir "${lib}" DIRECTORY)
-            list(APPEND library_dirs ${lib_dir})
-            _boost_set_cache_if_unset(Boost_${uppercomp}_LIBRARY_${cfg} "${lib}")
-          endif()
-        endforeach()
-      elseif(Boost_DEBUG OR Boost_VERBOSE)
-        # For projects using only the Boost::* targets this warning can be safely ignored.
-        message(WARNING "Imported target '${target}' for required component '${comp}' has no artifact. Legacy variables for this component might be missing. Refer to the documentation of your Boost installation for help on variables to use.")
-      endif()
-      _boost_get_canonical_target_name("${comp}" canonical_target)
-      if(NOT TARGET "${canonical_target}")
-        add_library("${canonical_target}" INTERFACE IMPORTED)
-        target_link_libraries("${canonical_target}" INTERFACE "${target}")
-      endif()
-    endif()
-  endforeach()
-  list(REMOVE_DUPLICATES include_dirs)
-  list(REMOVE_DUPLICATES library_dirs)
-  _boost_set_if_unset(Boost_INCLUDE_DIRS "${include_dirs}")
-  _boost_set_if_unset(Boost_LIBRARY_DIRS "${library_dirs}")
-  _boost_set_if_unset(Boost_LIBRARIES "${libraries}")
-  _boost_set_if_unset(Boost_VERSION_STRING "${Boost_VERSION_MAJOR}.${Boost_VERSION_MINOR}.${Boost_VERSION_PATCH}")
-  find_path(Boost_INCLUDE_DIR
-    NAMES boost/version.hpp boost/config.hpp
-    HINTS ${Boost_INCLUDE_DIRS}
-    NO_DEFAULT_PATH
-  )
-  if(NOT Boost_VERSION_MACRO OR NOT Boost_LIB_VERSION)
-    set(version_file ${Boost_INCLUDE_DIR}/boost/version.hpp)
-    if(EXISTS "${version_file}")
-      file(STRINGS "${version_file}" contents REGEX "#define BOOST_(LIB_)?VERSION ")
-      if(contents MATCHES "#define BOOST_VERSION ([0-9]+)")
-        _boost_set_if_unset(Boost_VERSION_MACRO "${CMAKE_MATCH_1}")
-      endif()
-      if(contents MATCHES "#define BOOST_LIB_VERSION \"([0-9_]+)\"")
-        _boost_set_if_unset(Boost_LIB_VERSION "${CMAKE_MATCH_1}")
-      endif()
-    endif()
-  endif()
-  _boost_set_if_unset(Boost_MAJOR_VERSION ${Boost_VERSION_MAJOR})
-  _boost_set_if_unset(Boost_MINOR_VERSION ${Boost_VERSION_MINOR})
-  _boost_set_if_unset(Boost_SUBMINOR_VERSION ${Boost_VERSION_PATCH})
-  if(WIN32)
-    _boost_set_if_unset(Boost_LIB_DIAGNOSTIC_DEFINITIONS "-DBOOST_LIB_DIAGNOSTIC")
-  endif()
-  if(NOT TARGET Boost::headers)
-    add_library(Boost::headers INTERFACE IMPORTED)
-    target_include_directories(Boost::headers INTERFACE ${Boost_INCLUDE_DIRS})
-  endif()
-  # Legacy targets w/o functionality as all handled by defined targets
-  foreach(lib diagnostic_definitions disable_autolinking dynamic_linking)
-    if(NOT TARGET Boost::${lib})
-      add_library(Boost::${lib} INTERFACE IMPORTED)
-    endif()
-  endforeach()
-  if(NOT TARGET Boost::boost)
-    add_library(Boost::boost INTERFACE IMPORTED)
-    target_link_libraries(Boost::boost INTERFACE Boost::headers)
-  endif()
-endfunction()
-
-#-------------------------------------------------------------------------------
-# Before we go searching, check whether a boost cmake package is available, unless
-# the user specifically asked NOT to search for one.
-#
-# If Boost_DIR is set, this behaves as any find_package call would. If not,
-# it looks at BOOST_ROOT and BOOSTROOT to find Boost.
-#
-if (NOT Boost_NO_BOOST_CMAKE)
-  # If Boost_DIR is not set, look for BOOSTROOT and BOOST_ROOT as alternatives,
-  # since these are more conventional for Boost.
-  if ("$ENV{Boost_DIR}" STREQUAL "")
-    if (NOT "$ENV{BOOST_ROOT}" STREQUAL "")
-      set(ENV{Boost_DIR} $ENV{BOOST_ROOT})
-    elseif (NOT "$ENV{BOOSTROOT}" STREQUAL "")
-      set(ENV{Boost_DIR} $ENV{BOOSTROOT})
-    endif()
-  endif()
-
-  # Do the same find_package call but look specifically for the CMake version.
-  # Note that args are passed in the Boost_FIND_xxxxx variables, so there is no
-  # need to delegate them to this find_package call.
-  find_package(Boost QUIET NO_MODULE)
-  if (DEFINED Boost_DIR)
-    mark_as_advanced(Boost_DIR)
-  endif ()
-
-  # If we found a boost cmake package, then we're done. Print out what we found.
-  # Otherwise let the rest of the module try to find it.
-  if(Boost_FOUND)
-    # Convert component found variables to standard variables if required
-    # Necessary for legacy boost-cmake and 1.70 builtin BoostConfig
-    if(Boost_FIND_COMPONENTS)
-      # Ignore the meta-component "ALL", introduced by Boost 1.73
-      list(REMOVE_ITEM Boost_FIND_COMPONENTS "ALL")
-
-      foreach(_comp IN LISTS Boost_FIND_COMPONENTS)
-        if(DEFINED Boost_${_comp}_FOUND)
-          continue()
-        endif()
-        string(TOUPPER ${_comp} _uppercomp)
-        if(DEFINED Boost${_comp}_FOUND) # legacy boost-cmake project
-          set(Boost_${_comp}_FOUND ${Boost${_comp}_FOUND})
-        elseif(DEFINED Boost_${_uppercomp}_FOUND) # Boost 1.70
-          set(Boost_${_comp}_FOUND ${Boost_${_uppercomp}_FOUND})
-        endif()
-      endforeach()
-    endif()
-
-    find_package_handle_standard_args(Boost HANDLE_COMPONENTS CONFIG_MODE)
-    _boost_set_legacy_variables_from_config()
-
-    # Restore project's policies
-    cmake_policy(POP)
-    return()
-  endif()
-endif()
-
-
-#-------------------------------------------------------------------------------
-#  FindBoost functions & macros
-#
-
-#
-# Print debug text if Boost_DEBUG is set.
-# Call example:
-# _Boost_DEBUG_PRINT("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "debug message")
-#
-function(_Boost_DEBUG_PRINT file line text)
-  if(Boost_DEBUG)
-    message(STATUS "[ ${file}:${line} ] ${text}")
-  endif()
-endfunction()
-
-#
-# _Boost_DEBUG_PRINT_VAR(file line variable_name [ENVIRONMENT]
-#                        [SOURCE "short explanation of origin of var value"])
-#
-#   ENVIRONMENT - look up environment variable instead of CMake variable
-#
-# Print variable name and its value if Boost_DEBUG is set.
-# Call example:
-# _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" BOOST_ROOT)
-#
-function(_Boost_DEBUG_PRINT_VAR file line name)
-  if(Boost_DEBUG)
-    cmake_parse_arguments(_args "ENVIRONMENT" "SOURCE" "" ${ARGN})
-
-    unset(source)
-    if(_args_SOURCE)
-      set(source " (${_args_SOURCE})")
-    endif()
-
-    if(_args_ENVIRONMENT)
-      if(DEFINED ENV{${name}})
-        set(value "\"$ENV{${name}}\"")
-      else()
-        set(value "<unset>")
-      endif()
-      set(_name "ENV{${name}}")
-    else()
-      if(DEFINED "${name}")
-        set(value "\"${${name}}\"")
-      else()
-        set(value "<unset>")
-      endif()
-      set(_name "${name}")
-    endif()
-
-    _Boost_DEBUG_PRINT("${file}" "${line}" "${_name} = ${value}${source}")
-  endif()
-endfunction()
-
-############################################
-#
-# Check the existence of the libraries.
-#
-############################################
-# This macro was taken directly from the FindQt4.cmake file that is included
-# with the CMake distribution. This is NOT my work. All work was done by the
-# original authors of the FindQt4.cmake file. Only minor modifications were
-# made to remove references to Qt and make this file more generally applicable
-# And ELSE/ENDIF pairs were removed for readability.
-#########################################################################
-
-macro(_Boost_ADJUST_LIB_VARS basename)
-  if(Boost_INCLUDE_DIR )
-    if(Boost_${basename}_LIBRARY_DEBUG AND Boost_${basename}_LIBRARY_RELEASE)
-      # if the generator is multi-config or if CMAKE_BUILD_TYPE is set for
-      # single-config generators, set optimized and debug libraries
-      get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
-      if(_isMultiConfig OR CMAKE_BUILD_TYPE)
-        set(Boost_${basename}_LIBRARY optimized ${Boost_${basename}_LIBRARY_RELEASE} debug ${Boost_${basename}_LIBRARY_DEBUG})
-      else()
-        # For single-config generators where CMAKE_BUILD_TYPE has no value,
-        # just use the release libraries
-        set(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY_RELEASE} )
-      endif()
-      # FIXME: This probably should be set for both cases
-      set(Boost_${basename}_LIBRARIES optimized ${Boost_${basename}_LIBRARY_RELEASE} debug ${Boost_${basename}_LIBRARY_DEBUG})
-    endif()
-
-    # if only the release version was found, set the debug variable also to the release version
-    if(Boost_${basename}_LIBRARY_RELEASE AND NOT Boost_${basename}_LIBRARY_DEBUG)
-      set(Boost_${basename}_LIBRARY_DEBUG ${Boost_${basename}_LIBRARY_RELEASE})
-      set(Boost_${basename}_LIBRARY       ${Boost_${basename}_LIBRARY_RELEASE})
-      set(Boost_${basename}_LIBRARIES     ${Boost_${basename}_LIBRARY_RELEASE})
-    endif()
-
-    # if only the debug version was found, set the release variable also to the debug version
-    if(Boost_${basename}_LIBRARY_DEBUG AND NOT Boost_${basename}_LIBRARY_RELEASE)
-      set(Boost_${basename}_LIBRARY_RELEASE ${Boost_${basename}_LIBRARY_DEBUG})
-      set(Boost_${basename}_LIBRARY         ${Boost_${basename}_LIBRARY_DEBUG})
-      set(Boost_${basename}_LIBRARIES       ${Boost_${basename}_LIBRARY_DEBUG})
-    endif()
-
-    # If the debug & release library ends up being the same, omit the keywords
-    if("${Boost_${basename}_LIBRARY_RELEASE}" STREQUAL "${Boost_${basename}_LIBRARY_DEBUG}")
-      set(Boost_${basename}_LIBRARY   ${Boost_${basename}_LIBRARY_RELEASE} )
-      set(Boost_${basename}_LIBRARIES ${Boost_${basename}_LIBRARY_RELEASE} )
-    endif()
-
-    if(Boost_${basename}_LIBRARY AND Boost_${basename}_HEADER)
-      set(Boost_${basename}_FOUND ON)
-      if("x${basename}" STREQUAL "xTHREAD" AND NOT TARGET Threads::Threads)
-        string(APPEND Boost_ERROR_REASON_THREAD " (missing dependency: Threads)")
-        set(Boost_THREAD_FOUND OFF)
-      endif()
-    endif()
-
-  endif()
-  # Make variables changeable to the advanced user
-  mark_as_advanced(
-      Boost_${basename}_LIBRARY_RELEASE
-      Boost_${basename}_LIBRARY_DEBUG
-  )
-endmacro()
-
-# Detect changes in used variables.
-# Compares the current variable value with the last one.
-# In short form:
-# v != v_LAST                      -> CHANGED = 1
-# v is defined, v_LAST not         -> CHANGED = 1
-# v is not defined, but v_LAST is  -> CHANGED = 1
-# otherwise                        -> CHANGED = 0
-# CHANGED is returned in variable named ${changed_var}
-macro(_Boost_CHANGE_DETECT changed_var)
-  set(${changed_var} 0)
-  foreach(v ${ARGN})
-    if(DEFINED _Boost_COMPONENTS_SEARCHED)
-      if(${v})
-        if(_${v}_LAST)
-          string(COMPARE NOTEQUAL "${${v}}" "${_${v}_LAST}" _${v}_CHANGED)
-        else()
-          set(_${v}_CHANGED 1)
-        endif()
-      elseif(_${v}_LAST)
-        set(_${v}_CHANGED 1)
-      endif()
-      if(_${v}_CHANGED)
-        set(${changed_var} 1)
-      endif()
-    else()
-      set(_${v}_CHANGED 0)
-    endif()
-  endforeach()
-endmacro()
-
-#
-# Find the given library (var).
-# Use 'build_type' to support different lib paths for RELEASE or DEBUG builds
-#
-macro(_Boost_FIND_LIBRARY var build_type)
-
-  find_library(${var} ${ARGN})
-
-  if(${var})
-    # If this is the first library found then save Boost_LIBRARY_DIR_[RELEASE,DEBUG].
-    if(NOT Boost_LIBRARY_DIR_${build_type})
-      get_filename_component(_dir "${${var}}" PATH)
-      set(Boost_LIBRARY_DIR_${build_type} "${_dir}" CACHE PATH "Boost library directory ${build_type}" FORCE)
-    endif()
-  elseif(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT)
-    # Try component-specific hints but do not save Boost_LIBRARY_DIR_[RELEASE,DEBUG].
-    find_library(${var} HINTS ${_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT} ${ARGN})
-  endif()
-
-  # If Boost_LIBRARY_DIR_[RELEASE,DEBUG] is known then search only there.
-  if(Boost_LIBRARY_DIR_${build_type})
-    set(_boost_LIBRARY_SEARCH_DIRS_${build_type} ${Boost_LIBRARY_DIR_${build_type}} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
-    _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
-                           "Boost_LIBRARY_DIR_${build_type}")
-    _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
-                           "_boost_LIBRARY_SEARCH_DIRS_${build_type}")
-  endif()
-endmacro()
-
-#-------------------------------------------------------------------------------
-
-# Convert CMAKE_CXX_COMPILER_VERSION to boost compiler suffix version.
-function(_Boost_COMPILER_DUMPVERSION _OUTPUT_VERSION _OUTPUT_VERSION_MAJOR _OUTPUT_VERSION_MINOR)
-  string(REGEX REPLACE "([0-9]+)\\.([0-9]+)(\\.[0-9]+)?" "\\1"
-    _boost_COMPILER_VERSION_MAJOR "${CMAKE_CXX_COMPILER_VERSION}")
-  string(REGEX REPLACE "([0-9]+)\\.([0-9]+)(\\.[0-9]+)?" "\\2"
-    _boost_COMPILER_VERSION_MINOR "${CMAKE_CXX_COMPILER_VERSION}")
-
-  set(_boost_COMPILER_VERSION "${_boost_COMPILER_VERSION_MAJOR}${_boost_COMPILER_VERSION_MINOR}")
-
-  set(${_OUTPUT_VERSION} ${_boost_COMPILER_VERSION} PARENT_SCOPE)
-  set(${_OUTPUT_VERSION_MAJOR} ${_boost_COMPILER_VERSION_MAJOR} PARENT_SCOPE)
-  set(${_OUTPUT_VERSION_MINOR} ${_boost_COMPILER_VERSION_MINOR} PARENT_SCOPE)
-endfunction()
-
-#
-# Take a list of libraries with "thread" in it
-# and prepend duplicates with "thread_${Boost_THREADAPI}"
-# at the front of the list
-#
-function(_Boost_PREPEND_LIST_WITH_THREADAPI _output)
-  set(_orig_libnames ${ARGN})
-  string(REPLACE "thread" "thread_${Boost_THREADAPI}" _threadapi_libnames "${_orig_libnames}")
-  set(${_output} ${_threadapi_libnames} ${_orig_libnames} PARENT_SCOPE)
-endfunction()
-
-#
-# If a library is found, replace its cache entry with its REALPATH
-#
-function(_Boost_SWAP_WITH_REALPATH _library _docstring)
-  if(${_library})
-    get_filename_component(_boost_filepathreal ${${_library}} REALPATH)
-    unset(${_library} CACHE)
-    set(${_library} ${_boost_filepathreal} CACHE FILEPATH "${_docstring}")
-  endif()
-endfunction()
-
-function(_Boost_CHECK_SPELLING _var)
-  if(${_var})
-    string(TOUPPER ${_var} _var_UC)
-    message(FATAL_ERROR "ERROR: ${_var} is not the correct spelling.  The proper spelling is ${_var_UC}.")
-  endif()
-endfunction()
-
-# Guesses Boost's compiler prefix used in built library names
-# Returns the guess by setting the variable pointed to by _ret
-function(_Boost_GUESS_COMPILER_PREFIX _ret)
-  if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xIntel")
-    if(WIN32)
-      set (_boost_COMPILER "-iw")
-    else()
-      set (_boost_COMPILER "-il")
-    endif()
-  elseif (GHSMULTI)
-    set(_boost_COMPILER "-ghs")
-  elseif("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC" OR "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
-    if(MSVC_TOOLSET_VERSION GREATER_EQUAL 150)
-      # Not yet known.
-      set(_boost_COMPILER "")
-    elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 140)
-      # MSVC toolset 14.x versions are forward compatible.
-      set(_boost_COMPILER "")
-      foreach(v 9 8 7 6 5 4 3 2 1 0)
-        if(MSVC_TOOLSET_VERSION GREATER_EQUAL 14${v})
-          list(APPEND _boost_COMPILER "-vc14${v}")
-        endif()
-      endforeach()
-    elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 80)
-      set(_boost_COMPILER "-vc${MSVC_TOOLSET_VERSION}")
-    elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.10)
-      set(_boost_COMPILER "-vc71")
-    elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13) # Good luck!
-      set(_boost_COMPILER "-vc7") # yes, this is correct
-    else() # VS 6.0 Good luck!
-      set(_boost_COMPILER "-vc6") # yes, this is correct
-    endif()
-
-    if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xClang")
-      string(REPLACE "." ";" VERSION_LIST "${CMAKE_CXX_COMPILER_VERSION}")
-      list(GET VERSION_LIST 0 CLANG_VERSION_MAJOR)
-      set(_boost_COMPILER "-clangw${CLANG_VERSION_MAJOR};${_boost_COMPILER}")
-    endif()
-  elseif (BORLAND)
-    set(_boost_COMPILER "-bcb")
-  elseif(CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")
-    set(_boost_COMPILER "-sw")
-  elseif(CMAKE_CXX_COMPILER_ID STREQUAL "XL")
-    set(_boost_COMPILER "-xlc")
-  elseif (MINGW)
-    if(Boost_VERSION_STRING VERSION_LESS 1.34)
-        set(_boost_COMPILER "-mgw") # no GCC version encoding prior to 1.34
-    else()
-      _Boost_COMPILER_DUMPVERSION(_boost_COMPILER_VERSION _boost_COMPILER_VERSION_MAJOR _boost_COMPILER_VERSION_MINOR)
-      if(Boost_VERSION_STRING VERSION_GREATER_EQUAL 1.73 AND _boost_COMPILER_VERSION_MAJOR VERSION_GREATER_EQUAL 5)
-        set(_boost_COMPILER "-mgw${_boost_COMPILER_VERSION_MAJOR}")
-      else()
-        set(_boost_COMPILER "-mgw${_boost_COMPILER_VERSION}")
-      endif()
-    endif()
-  elseif (UNIX)
-    _Boost_COMPILER_DUMPVERSION(_boost_COMPILER_VERSION _boost_COMPILER_VERSION_MAJOR _boost_COMPILER_VERSION_MINOR)
-    if(NOT Boost_VERSION_STRING VERSION_LESS 1.69.0)
-      # From GCC 5 and clang 4, versioning changes and minor becomes patch.
-      # For those compilers, patch is exclude from compiler tag in Boost 1.69+ library naming.
-      if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND _boost_COMPILER_VERSION_MAJOR VERSION_GREATER 4)
-        set(_boost_COMPILER_VERSION "${_boost_COMPILER_VERSION_MAJOR}")
-      elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND _boost_COMPILER_VERSION_MAJOR VERSION_GREATER 3)
-        set(_boost_COMPILER_VERSION "${_boost_COMPILER_VERSION_MAJOR}")
-      endif()
-    endif()
-
-    if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
-      if(Boost_VERSION_STRING VERSION_LESS 1.34)
-        set(_boost_COMPILER "-gcc") # no GCC version encoding prior to 1.34
-      else()
-        # Determine which version of GCC we have.
-        if(APPLE)
-          if(Boost_VERSION_STRING VERSION_LESS 1.36.0)
-            # In Boost <= 1.35.0, there is no mangled compiler name for
-            # the macOS/Darwin version of GCC.
-            set(_boost_COMPILER "")
-          else()
-            # In Boost 1.36.0 and newer, the mangled compiler name used
-            # on macOS/Darwin is "xgcc".
-            set(_boost_COMPILER "-xgcc${_boost_COMPILER_VERSION}")
-          endif()
-        else()
-          set(_boost_COMPILER "-gcc${_boost_COMPILER_VERSION}")
-        endif()
-      endif()
-    elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
-      # TODO: Find out any Boost version constraints vs clang support.
-      set(_boost_COMPILER "-clang${_boost_COMPILER_VERSION}")
-    endif()
-  else()
-    set(_boost_COMPILER "")
-  endif()
-  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
-                         "_boost_COMPILER" SOURCE "guessed")
-  set(${_ret} ${_boost_COMPILER} PARENT_SCOPE)
-endfunction()
-
-#
-# Get component dependencies.  Requires the dependencies to have been
-# defined for the Boost release version.
-#
-# component - the component to check
-# _ret - list of library dependencies
-#
-function(_Boost_COMPONENT_DEPENDENCIES component _ret)
-  # Note: to add a new Boost release, run
-  #
-  #   % cmake -DBOOST_DIR=/path/to/boost/source -P Utilities/Scripts/BoostScanDeps.cmake
-  #
-  # The output may be added in a new block below.  If it's the same as
-  # the previous release, simply update the version range of the block
-  # for the previous release.  Also check if any new components have
-  # been added, and add any new components to
-  # _Boost_COMPONENT_HEADERS.
-  #
-  # This information was originally generated by running
-  # BoostScanDeps.cmake against every boost release to date supported
-  # by FindBoost:
-  #
-  #   % for version in /path/to/boost/sources/*
-  #     do
-  #       cmake -DBOOST_DIR=$version -P Utilities/Scripts/BoostScanDeps.cmake
-  #     done
-  #
-  # The output was then updated by search and replace with these regexes:
-  #
-  # - Strip message(STATUS) prefix dashes
-  #   s;^-- ;;
-  # - Indent
-  #   s;^set(;    set(;;
-  # - Add conditionals
-  #   s;Scanning /path/to/boost/sources/boost_\(.*\)_\(.*\)_\(.*);  elseif(NOT Boost_VERSION_STRING VERSION_LESS \1\.\2\.\3 AND Boost_VERSION_STRING VERSION_LESS xxxx);
-  #
-  # This results in the logic seen below, but will require the xxxx
-  # replacing with the following Boost release version (or the next
-  # minor version to be released, e.g. 1.59 was the latest at the time
-  # of writing, making 1.60 the next. Identical consecutive releases
-  # were then merged together by updating the end range of the first
-  # block and removing the following redundant blocks.
-  #
-  # Running the script against all historical releases should be
-  # required only if the BoostScanDeps.cmake script logic is changed.
-  # The addition of a new release should only require it to be run
-  # against the new release.
-
-  # Handle Python version suffixes
-  if(component MATCHES "^(python|mpi_python|numpy)([0-9][0-9]?|[0-9]\\.[0-9])\$")
-    set(component "${CMAKE_MATCH_1}")
-    set(component_python_version "${CMAKE_MATCH_2}")
-  endif()
-
-  set(_Boost_IMPORTED_TARGETS TRUE)
-  if(Boost_VERSION_STRING)
-    if(Boost_VERSION_STRING VERSION_LESS 1.33.0)
-      message(WARNING "Imported targets and dependency information not available for Boost version ${Boost_VERSION_STRING} (all versions older than 1.33)")
-      set(_Boost_IMPORTED_TARGETS FALSE)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.35.0)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex thread)
-      set(_Boost_REGEX_DEPENDENCIES thread)
-      set(_Boost_WAVE_DEPENDENCIES filesystem thread)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.36.0)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system thread)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.38.0)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system thread)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.43.0)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_THREAD_DEPENDENCIES date_time)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system thread date_time)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.44.0)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_THREAD_DEPENDENCIES date_time)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system thread date_time)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.45.0)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random serialization)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_THREAD_DEPENDENCIES date_time)
-      set(_Boost_WAVE_DEPENDENCIES serialization filesystem system thread date_time)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.47.0)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_THREAD_DEPENDENCIES date_time)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.48.0)
-      set(_Boost_CHRONO_DEPENDENCIES system)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_THREAD_DEPENDENCIES date_time)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.50.0)
-      set(_Boost_CHRONO_DEPENDENCIES system)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_THREAD_DEPENDENCIES date_time)
-      set(_Boost_TIMER_DEPENDENCIES chrono system)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.53.0)
-      set(_Boost_CHRONO_DEPENDENCIES system)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l regex random)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_THREAD_DEPENDENCIES chrono system date_time)
-      set(_Boost_TIMER_DEPENDENCIES chrono system)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.54.0)
-      set(_Boost_ATOMIC_DEPENDENCIES thread chrono system date_time)
-      set(_Boost_CHRONO_DEPENDENCIES system)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l regex random)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
-      set(_Boost_TIMER_DEPENDENCIES chrono system)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.55.0)
-      set(_Boost_ATOMIC_DEPENDENCIES thread chrono system date_time)
-      set(_Boost_CHRONO_DEPENDENCIES system)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_LOG_DEPENDENCIES log_setup date_time system filesystem thread regex chrono)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l regex random)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
-      set(_Boost_TIMER_DEPENDENCIES chrono system)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.56.0)
-      set(_Boost_CHRONO_DEPENDENCIES system)
-      set(_Boost_COROUTINE_DEPENDENCIES context system)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_LOG_DEPENDENCIES log_setup date_time system filesystem thread regex chrono)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l regex random)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
-      set(_Boost_TIMER_DEPENDENCIES chrono system)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.59.0)
-      set(_Boost_CHRONO_DEPENDENCIES system)
-      set(_Boost_COROUTINE_DEPENDENCIES context system)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_LOG_DEPENDENCIES log_setup date_time system filesystem thread regex chrono)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_RANDOM_DEPENDENCIES system)
-      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
-      set(_Boost_TIMER_DEPENDENCIES chrono system)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.60.0)
-      set(_Boost_CHRONO_DEPENDENCIES system)
-      set(_Boost_COROUTINE_DEPENDENCIES context system)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_LOG_DEPENDENCIES log_setup date_time system filesystem thread regex chrono atomic)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_RANDOM_DEPENDENCIES system)
-      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
-      set(_Boost_TIMER_DEPENDENCIES chrono system)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.61.0)
-      set(_Boost_CHRONO_DEPENDENCIES system)
-      set(_Boost_COROUTINE_DEPENDENCIES context system)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_RANDOM_DEPENDENCIES system)
-      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
-      set(_Boost_TIMER_DEPENDENCIES chrono system)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.62.0)
-      set(_Boost_CHRONO_DEPENDENCIES system)
-      set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time)
-      set(_Boost_COROUTINE_DEPENDENCIES context system)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_RANDOM_DEPENDENCIES system)
-      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.63.0)
-      set(_Boost_CHRONO_DEPENDENCIES system)
-      set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time)
-      set(_Boost_COROUTINE_DEPENDENCIES context system)
-      set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_RANDOM_DEPENDENCIES system)
-      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.65.0)
-      set(_Boost_CHRONO_DEPENDENCIES system)
-      set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time)
-      set(_Boost_COROUTINE_DEPENDENCIES context system)
-      set(_Boost_COROUTINE2_DEPENDENCIES context fiber thread chrono system date_time)
-      set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_RANDOM_DEPENDENCIES system)
-      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.67.0)
-      set(_Boost_CHRONO_DEPENDENCIES system)
-      set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time)
-      set(_Boost_COROUTINE_DEPENDENCIES context system)
-      set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
-      set(_Boost_RANDOM_DEPENDENCIES system)
-      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
-      set(_Boost_TIMER_DEPENDENCIES chrono system)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.68.0)
-      set(_Boost_CHRONO_DEPENDENCIES system)
-      set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time)
-      set(_Boost_COROUTINE_DEPENDENCIES context system)
-      set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
-      set(_Boost_RANDOM_DEPENDENCIES system)
-      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
-      set(_Boost_TIMER_DEPENDENCIES chrono system)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.69.0)
-      set(_Boost_CHRONO_DEPENDENCIES system)
-      set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time)
-      set(_Boost_CONTRACT_DEPENDENCIES thread chrono system date_time)
-      set(_Boost_COROUTINE_DEPENDENCIES context system)
-      set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time)
-      set(_Boost_FILESYSTEM_DEPENDENCIES system)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
-      set(_Boost_RANDOM_DEPENDENCIES system)
-      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
-      set(_Boost_TIMER_DEPENDENCIES chrono system)
-      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.70.0)
-      set(_Boost_CONTRACT_DEPENDENCIES thread chrono date_time)
-      set(_Boost_COROUTINE_DEPENDENCIES context)
-      set(_Boost_FIBER_DEPENDENCIES context)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_LOG_DEPENDENCIES date_time log_setup filesystem thread regex chrono atomic)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
-      set(_Boost_THREAD_DEPENDENCIES chrono date_time atomic)
-      set(_Boost_TIMER_DEPENDENCIES chrono system)
-      set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono date_time atomic)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.72.0)
-      set(_Boost_CONTRACT_DEPENDENCIES thread chrono date_time)
-      set(_Boost_COROUTINE_DEPENDENCIES context)
-      set(_Boost_FIBER_DEPENDENCIES context)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_LOG_DEPENDENCIES date_time log_setup filesystem thread regex chrono atomic)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
-      set(_Boost_THREAD_DEPENDENCIES chrono date_time atomic)
-      set(_Boost_TIMER_DEPENDENCIES chrono)
-      set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono date_time atomic)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    elseif(Boost_VERSION_STRING VERSION_LESS 1.73.0)
-      set(_Boost_CONTRACT_DEPENDENCIES thread chrono date_time)
-      set(_Boost_COROUTINE_DEPENDENCIES context)
-      set(_Boost_FIBER_DEPENDENCIES context)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_LOG_DEPENDENCIES date_time log_setup filesystem thread regex chrono atomic)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l chrono atomic)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
-      set(_Boost_THREAD_DEPENDENCIES chrono date_time atomic)
-      set(_Boost_TIMER_DEPENDENCIES chrono)
-      set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono date_time atomic)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-    else()
-      set(_Boost_CONTRACT_DEPENDENCIES thread chrono date_time)
-      set(_Boost_COROUTINE_DEPENDENCIES context)
-      set(_Boost_FIBER_DEPENDENCIES context)
-      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-      set(_Boost_LOG_DEPENDENCIES date_time log_setup filesystem thread regex chrono atomic)
-      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
-      set(_Boost_MPI_DEPENDENCIES serialization)
-      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-      set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
-      set(_Boost_THREAD_DEPENDENCIES chrono date_time atomic)
-      set(_Boost_TIMER_DEPENDENCIES chrono)
-      set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono date_time atomic)
-      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-      if(Boost_VERSION_STRING VERSION_GREATER_EQUAL 1.74.0)
-        message(WARNING "New Boost version may have incorrect or missing dependencies and imported targets")
-      endif()
-    endif()
-  endif()
-
-  string(TOUPPER ${component} uppercomponent)
-  set(${_ret} ${_Boost_${uppercomponent}_DEPENDENCIES} PARENT_SCOPE)
-  set(_Boost_IMPORTED_TARGETS ${_Boost_IMPORTED_TARGETS} PARENT_SCOPE)
-
-  string(REGEX REPLACE ";" " " _boost_DEPS_STRING "${_Boost_${uppercomponent}_DEPENDENCIES}")
-  if (NOT _boost_DEPS_STRING)
-    set(_boost_DEPS_STRING "(none)")
-  endif()
-  # message(STATUS "Dependencies for Boost::${component}: ${_boost_DEPS_STRING}")
-endfunction()
-
-#
-# Get component headers.  This is the primary header (or headers) for
-# a given component, and is used to check that the headers are present
-# as well as the library itself as an extra sanity check of the build
-# environment.
-#
-# component - the component to check
-# _hdrs
-#
-function(_Boost_COMPONENT_HEADERS component _hdrs)
-  # Handle Python version suffixes
-  if(component MATCHES "^(python|mpi_python|numpy)([0-9][0-9]?|[0-9]\\.[0-9])\$")
-    set(component "${CMAKE_MATCH_1}")
-    set(component_python_version "${CMAKE_MATCH_2}")
-  endif()
-
-  # Note: new boost components will require adding here.  The header
-  # must be present in all versions of Boost providing a library.
-  set(_Boost_ATOMIC_HEADERS              "boost/atomic.hpp")
-  set(_Boost_CHRONO_HEADERS              "boost/chrono.hpp")
-  set(_Boost_CONTAINER_HEADERS           "boost/container/container_fwd.hpp")
-  set(_Boost_CONTRACT_HEADERS            "boost/contract.hpp")
-  if(Boost_VERSION_STRING VERSION_LESS 1.61.0)
-    set(_Boost_CONTEXT_HEADERS           "boost/context/all.hpp")
-  else()
-    set(_Boost_CONTEXT_HEADERS           "boost/context/detail/fcontext.hpp")
-  endif()
-  set(_Boost_COROUTINE_HEADERS           "boost/coroutine/all.hpp")
-  set(_Boost_DATE_TIME_HEADERS           "boost/date_time/date.hpp")
-  set(_Boost_EXCEPTION_HEADERS           "boost/exception/exception.hpp")
-  set(_Boost_FIBER_HEADERS               "boost/fiber/all.hpp")
-  set(_Boost_FILESYSTEM_HEADERS          "boost/filesystem/path.hpp")
-  set(_Boost_GRAPH_HEADERS               "boost/graph/adjacency_list.hpp")
-  set(_Boost_GRAPH_PARALLEL_HEADERS      "boost/graph/adjacency_list.hpp")
-  set(_Boost_IOSTREAMS_HEADERS           "boost/iostreams/stream.hpp")
-  set(_Boost_LOCALE_HEADERS              "boost/locale.hpp")
-  set(_Boost_LOG_HEADERS                 "boost/log/core.hpp")
-  set(_Boost_LOG_SETUP_HEADERS           "boost/log/detail/setup_config.hpp")
-  set(_Boost_MATH_HEADERS                "boost/math_fwd.hpp")
-  set(_Boost_MATH_C99_HEADERS            "boost/math/tr1.hpp")
-  set(_Boost_MATH_C99F_HEADERS           "boost/math/tr1.hpp")
-  set(_Boost_MATH_C99L_HEADERS           "boost/math/tr1.hpp")
-  set(_Boost_MATH_TR1_HEADERS            "boost/math/tr1.hpp")
-  set(_Boost_MATH_TR1F_HEADERS           "boost/math/tr1.hpp")
-  set(_Boost_MATH_TR1L_HEADERS           "boost/math/tr1.hpp")
-  set(_Boost_MPI_HEADERS                 "boost/mpi.hpp")
-  set(_Boost_MPI_PYTHON_HEADERS          "boost/mpi/python/config.hpp")
-  set(_Boost_NUMPY_HEADERS               "boost/python/numpy.hpp")
-  set(_Boost_NOWIDE_HEADERS              "boost/nowide/cstdlib.hpp")
-  set(_Boost_PRG_EXEC_MONITOR_HEADERS    "boost/test/prg_exec_monitor.hpp")
-  set(_Boost_PROGRAM_OPTIONS_HEADERS     "boost/program_options.hpp")
-  set(_Boost_PYTHON_HEADERS              "boost/python.hpp")
-  set(_Boost_RANDOM_HEADERS              "boost/random.hpp")
-  set(_Boost_REGEX_HEADERS               "boost/regex.hpp")
-  set(_Boost_SERIALIZATION_HEADERS       "boost/serialization/serialization.hpp")
-  set(_Boost_SIGNALS_HEADERS             "boost/signals.hpp")
-  set(_Boost_STACKTRACE_ADDR2LINE_HEADERS "boost/stacktrace.hpp")
-  set(_Boost_STACKTRACE_BACKTRACE_HEADERS "boost/stacktrace.hpp")
-  set(_Boost_STACKTRACE_BASIC_HEADERS    "boost/stacktrace.hpp")
-  set(_Boost_STACKTRACE_NOOP_HEADERS     "boost/stacktrace.hpp")
-  set(_Boost_STACKTRACE_WINDBG_CACHED_HEADERS "boost/stacktrace.hpp")
-  set(_Boost_STACKTRACE_WINDBG_HEADERS   "boost/stacktrace.hpp")
-  set(_Boost_SYSTEM_HEADERS              "boost/system/config.hpp")
-  set(_Boost_TEST_EXEC_MONITOR_HEADERS   "boost/test/test_exec_monitor.hpp")
-  set(_Boost_THREAD_HEADERS              "boost/thread.hpp")
-  set(_Boost_TIMER_HEADERS               "boost/timer.hpp")
-  set(_Boost_TYPE_ERASURE_HEADERS        "boost/type_erasure/config.hpp")
-  set(_Boost_UNIT_TEST_FRAMEWORK_HEADERS "boost/test/framework.hpp")
-  set(_Boost_WAVE_HEADERS                "boost/wave.hpp")
-  set(_Boost_WSERIALIZATION_HEADERS      "boost/archive/text_wiarchive.hpp")
-  if(WIN32)
-    set(_Boost_BZIP2_HEADERS             "boost/iostreams/filter/bzip2.hpp")
-    set(_Boost_ZLIB_HEADERS              "boost/iostreams/filter/zlib.hpp")
-  endif()
-
-  string(TOUPPER ${component} uppercomponent)
-  set(${_hdrs} ${_Boost_${uppercomponent}_HEADERS} PARENT_SCOPE)
-
-  string(REGEX REPLACE ";" " " _boost_HDRS_STRING "${_Boost_${uppercomponent}_HEADERS}")
-  if (NOT _boost_HDRS_STRING)
-    set(_boost_HDRS_STRING "(none)")
-  endif()
-  # message(STATUS "Headers for Boost::${component}: ${_boost_HDRS_STRING}")
-endfunction()
-
-#
-# Determine if any missing dependencies require adding to the component list.
-#
-# Sets _Boost_${COMPONENT}_DEPENDENCIES for each required component,
-# plus _Boost_IMPORTED_TARGETS (TRUE if imported targets should be
-# defined; FALSE if dependency information is unavailable).
-#
-# componentvar - the component list variable name
-# extravar - the indirect dependency list variable name
-#
-#
-function(_Boost_MISSING_DEPENDENCIES componentvar extravar)
-  # _boost_unprocessed_components - list of components requiring processing
-  # _boost_processed_components - components already processed (or currently being processed)
-  # _boost_new_components - new components discovered for future processing
-  #
-  list(APPEND _boost_unprocessed_components ${${componentvar}})
-
-  while(_boost_unprocessed_components)
-    list(APPEND _boost_processed_components ${_boost_unprocessed_components})
-    foreach(component ${_boost_unprocessed_components})
-      string(TOUPPER ${component} uppercomponent)
-      set(${_ret} ${_Boost_${uppercomponent}_DEPENDENCIES} PARENT_SCOPE)
-      _Boost_COMPONENT_DEPENDENCIES("${component}" _Boost_${uppercomponent}_DEPENDENCIES)
-      set(_Boost_${uppercomponent}_DEPENDENCIES ${_Boost_${uppercomponent}_DEPENDENCIES} PARENT_SCOPE)
-      set(_Boost_IMPORTED_TARGETS ${_Boost_IMPORTED_TARGETS} PARENT_SCOPE)
-      foreach(componentdep ${_Boost_${uppercomponent}_DEPENDENCIES})
-        if (NOT ("${componentdep}" IN_LIST _boost_processed_components OR "${componentdep}" IN_LIST _boost_new_components))
-          list(APPEND _boost_new_components ${componentdep})
-        endif()
-      endforeach()
-    endforeach()
-    set(_boost_unprocessed_components ${_boost_new_components})
-    unset(_boost_new_components)
-  endwhile()
-  set(_boost_extra_components ${_boost_processed_components})
-  if(_boost_extra_components AND ${componentvar})
-    list(REMOVE_ITEM _boost_extra_components ${${componentvar}})
-  endif()
-  set(${componentvar} ${_boost_processed_components} PARENT_SCOPE)
-  set(${extravar} ${_boost_extra_components} PARENT_SCOPE)
-endfunction()
-
-#
-# Some boost libraries may require particular set of compler features.
-# The very first one was `boost::fiber` introduced in Boost 1.62.
-# One can check required compiler features of it in
-# - `${Boost_ROOT}/libs/fiber/build/Jamfile.v2`;
-# - `${Boost_ROOT}/libs/context/build/Jamfile.v2`.
-#
-# TODO (Re)Check compiler features on (every?) release ???
-# One may use the following command to get the files to check:
-#
-#   $ find . -name Jamfile.v2 | grep build | xargs grep -l cxx1
-#
-function(_Boost_COMPILER_FEATURES component _ret)
-  # Boost >= 1.62
-  if(NOT Boost_VERSION_STRING VERSION_LESS 1.62.0)
-    set(_Boost_FIBER_COMPILER_FEATURES
-        cxx_alias_templates
-        cxx_auto_type
-        cxx_constexpr
-        cxx_defaulted_functions
-        cxx_final
-        cxx_lambdas
-        cxx_noexcept
-        cxx_nullptr
-        cxx_rvalue_references
-        cxx_thread_local
-        cxx_variadic_templates
-    )
-    # Compiler feature for `context` same as for `fiber`.
-    set(_Boost_CONTEXT_COMPILER_FEATURES ${_Boost_FIBER_COMPILER_FEATURES})
-  endif()
-
-  # Boost Contract library available in >= 1.67
-  if(NOT Boost_VERSION_STRING VERSION_LESS 1.67.0)
-    # From `libs/contract/build/boost_contract_build.jam`
-    set(_Boost_CONTRACT_COMPILER_FEATURES
-        cxx_lambdas
-        cxx_variadic_templates
-    )
-  endif()
-
-  string(TOUPPER ${component} uppercomponent)
-  set(${_ret} ${_Boost_${uppercomponent}_COMPILER_FEATURES} PARENT_SCOPE)
-endfunction()
-
-#
-# Update library search directory hint variable with paths used by prebuilt boost binaries.
-#
-# Prebuilt windows binaries (https://sourceforge.net/projects/boost/files/boost-binaries/)
-# have library directories named using MSVC compiler version and architecture.
-# This function would append corresponding directories if MSVC is a current compiler,
-# so having `BOOST_ROOT` would be enough to specify to find everything.
-#
-function(_Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS componentlibvar basedir)
-  if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC")
-    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-      set(_arch_suffix 64)
-    else()
-      set(_arch_suffix 32)
-    endif()
-    if(MSVC_TOOLSET_VERSION GREATER_EQUAL 150)
-      # Not yet known.
-    elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 140)
-      # MSVC toolset 14.x versions are forward compatible.
-      foreach(v 9 8 7 6 5 4 3 2 1 0)
-        if(MSVC_TOOLSET_VERSION GREATER_EQUAL 14${v})
-          list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-14.${v})
-        endif()
-      endforeach()
-    elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 80)
-      math(EXPR _toolset_major_version "${MSVC_TOOLSET_VERSION} / 10")
-      list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-${_toolset_major_version}.0)
-    endif()
-    set(${componentlibvar} ${${componentlibvar}} PARENT_SCOPE)
-  endif()
-endfunction()
-
-#
-# End functions/macros
-#
-#-------------------------------------------------------------------------------
-
-#-------------------------------------------------------------------------------
-# main.
-#-------------------------------------------------------------------------------
-
-
-# If the user sets Boost_LIBRARY_DIR, use it as the default for both
-# configurations.
-if(NOT Boost_LIBRARY_DIR_RELEASE AND Boost_LIBRARY_DIR)
-  set(Boost_LIBRARY_DIR_RELEASE "${Boost_LIBRARY_DIR}")
-endif()
-if(NOT Boost_LIBRARY_DIR_DEBUG AND Boost_LIBRARY_DIR)
-  set(Boost_LIBRARY_DIR_DEBUG   "${Boost_LIBRARY_DIR}")
-endif()
-
-if(NOT DEFINED Boost_USE_DEBUG_LIBS)
-  set(Boost_USE_DEBUG_LIBS TRUE)
-endif()
-if(NOT DEFINED Boost_USE_RELEASE_LIBS)
-  set(Boost_USE_RELEASE_LIBS TRUE)
-endif()
-if(NOT DEFINED Boost_USE_MULTITHREADED)
-  set(Boost_USE_MULTITHREADED TRUE)
-endif()
-if(NOT DEFINED Boost_USE_DEBUG_RUNTIME)
-  set(Boost_USE_DEBUG_RUNTIME TRUE)
-endif()
-
-# Check the version of Boost against the requested version.
-if(Boost_FIND_VERSION AND NOT Boost_FIND_VERSION_MINOR)
-  message(SEND_ERROR "When requesting a specific version of Boost, you must provide at least the major and minor version numbers, e.g., 1.34")
-endif()
-
-if(Boost_FIND_VERSION_EXACT)
-  # The version may appear in a directory with or without the patch
-  # level, even when the patch level is non-zero.
-  set(_boost_TEST_VERSIONS
-    "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}.${Boost_FIND_VERSION_PATCH}"
-    "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}")
-else()
-  # The user has not requested an exact version.  Among known
-  # versions, find those that are acceptable to the user request.
-  #
-  # Note: When adding a new Boost release, also update the dependency
-  # information in _Boost_COMPONENT_DEPENDENCIES and
-  # _Boost_COMPONENT_HEADERS.  See the instructions at the top of
-  # _Boost_COMPONENT_DEPENDENCIES.
-  set(_Boost_KNOWN_VERSIONS ${Boost_ADDITIONAL_VERSIONS}
-    "1.73.0" "1.73" "1.72.0" "1.72" "1.71.0" "1.71" "1.70.0" "1.70" "1.69.0" "1.69"
-    "1.68.0" "1.68" "1.67.0" "1.67" "1.66.0" "1.66" "1.65.1" "1.65.0" "1.65"
-    "1.64.0" "1.64" "1.63.0" "1.63" "1.62.0" "1.62" "1.61.0" "1.61" "1.60.0" "1.60"
-    "1.59.0" "1.59" "1.58.0" "1.58" "1.57.0" "1.57" "1.56.0" "1.56" "1.55.0" "1.55"
-    "1.54.0" "1.54" "1.53.0" "1.53" "1.52.0" "1.52" "1.51.0" "1.51"
-    "1.50.0" "1.50" "1.49.0" "1.49" "1.48.0" "1.48" "1.47.0" "1.47" "1.46.1"
-    "1.46.0" "1.46" "1.45.0" "1.45" "1.44.0" "1.44" "1.43.0" "1.43" "1.42.0" "1.42"
-    "1.41.0" "1.41" "1.40.0" "1.40" "1.39.0" "1.39" "1.38.0" "1.38" "1.37.0" "1.37"
-    "1.36.1" "1.36.0" "1.36" "1.35.1" "1.35.0" "1.35" "1.34.1" "1.34.0"
-    "1.34" "1.33.1" "1.33.0" "1.33")
-
-  set(_boost_TEST_VERSIONS)
-  if(Boost_FIND_VERSION)
-    set(_Boost_FIND_VERSION_SHORT "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}")
-    # Select acceptable versions.
-    foreach(version ${_Boost_KNOWN_VERSIONS})
-      if(NOT "${version}" VERSION_LESS "${Boost_FIND_VERSION}")
-        # This version is high enough.
-        list(APPEND _boost_TEST_VERSIONS "${version}")
-      elseif("${version}.99" VERSION_EQUAL "${_Boost_FIND_VERSION_SHORT}.99")
-        # This version is a short-form for the requested version with
-        # the patch level dropped.
-        list(APPEND _boost_TEST_VERSIONS "${version}")
-      endif()
-    endforeach()
-  else()
-    # Any version is acceptable.
-    set(_boost_TEST_VERSIONS "${_Boost_KNOWN_VERSIONS}")
-  endif()
-endif()
-
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "_boost_TEST_VERSIONS")
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_USE_MULTITHREADED")
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_USE_STATIC_LIBS")
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_USE_STATIC_RUNTIME")
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_ADDITIONAL_VERSIONS")
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_NO_SYSTEM_PATHS")
-
-cmake_policy(GET CMP0074 _Boost_CMP0074)
-if(NOT "x${_Boost_CMP0074}x" STREQUAL "xNEWx")
-  _Boost_CHECK_SPELLING(Boost_ROOT)
-endif()
-unset(_Boost_CMP0074)
-_Boost_CHECK_SPELLING(Boost_LIBRARYDIR)
-_Boost_CHECK_SPELLING(Boost_INCLUDEDIR)
-
-# Collect environment variable inputs as hints.  Do not consider changes.
-foreach(v BOOSTROOT BOOST_ROOT BOOST_INCLUDEDIR BOOST_LIBRARYDIR)
-  set(_env $ENV{${v}})
-  if(_env)
-    file(TO_CMAKE_PATH "${_env}" _ENV_${v})
-  else()
-    set(_ENV_${v} "")
-  endif()
-endforeach()
-if(NOT _ENV_BOOST_ROOT AND _ENV_BOOSTROOT)
-  set(_ENV_BOOST_ROOT "${_ENV_BOOSTROOT}")
-endif()
-
-# Collect inputs and cached results.  Detect changes since the last run.
-if(NOT BOOST_ROOT AND BOOSTROOT)
-  set(BOOST_ROOT "${BOOSTROOT}")
-endif()
-set(_Boost_VARS_DIR
-  BOOST_ROOT
-  Boost_NO_SYSTEM_PATHS
-  )
-
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "BOOST_ROOT")
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "BOOST_ROOT" ENVIRONMENT)
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "BOOST_INCLUDEDIR")
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "BOOST_INCLUDEDIR" ENVIRONMENT)
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "BOOST_LIBRARYDIR")
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "BOOST_LIBRARYDIR" ENVIRONMENT)
-
-# ------------------------------------------------------------------------
-#  Search for Boost include DIR
-# ------------------------------------------------------------------------
-
-set(_Boost_VARS_INC BOOST_INCLUDEDIR Boost_INCLUDE_DIR Boost_ADDITIONAL_VERSIONS)
-_Boost_CHANGE_DETECT(_Boost_CHANGE_INCDIR ${_Boost_VARS_DIR} ${_Boost_VARS_INC})
-# Clear Boost_INCLUDE_DIR if it did not change but other input affecting the
-# location did.  We will find a new one based on the new inputs.
-if(_Boost_CHANGE_INCDIR AND NOT _Boost_INCLUDE_DIR_CHANGED)
-  unset(Boost_INCLUDE_DIR CACHE)
-endif()
-
-if(NOT Boost_INCLUDE_DIR)
-  set(_boost_INCLUDE_SEARCH_DIRS "")
-  if(BOOST_INCLUDEDIR)
-    list(APPEND _boost_INCLUDE_SEARCH_DIRS ${BOOST_INCLUDEDIR})
-  elseif(_ENV_BOOST_INCLUDEDIR)
-    list(APPEND _boost_INCLUDE_SEARCH_DIRS ${_ENV_BOOST_INCLUDEDIR})
-  endif()
-
-  if( BOOST_ROOT )
-    list(APPEND _boost_INCLUDE_SEARCH_DIRS ${BOOST_ROOT}/include ${BOOST_ROOT})
-  elseif( _ENV_BOOST_ROOT )
-    list(APPEND _boost_INCLUDE_SEARCH_DIRS ${_ENV_BOOST_ROOT}/include ${_ENV_BOOST_ROOT})
-  endif()
-
-  if( Boost_NO_SYSTEM_PATHS)
-    list(APPEND _boost_INCLUDE_SEARCH_DIRS NO_CMAKE_SYSTEM_PATH NO_SYSTEM_ENVIRONMENT_PATH)
-  else()
-    if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC")
-      foreach(ver ${_boost_TEST_VERSIONS})
-        string(REPLACE "." "_" ver "${ver}")
-        list(APPEND _boost_INCLUDE_SEARCH_DIRS PATHS "C:/local/boost_${ver}")
-      endforeach()
-    endif()
-    list(APPEND _boost_INCLUDE_SEARCH_DIRS PATHS
-      C:/boost/include
-      C:/boost
-      /sw/local/include
-      )
-  endif()
-
-  # Try to find Boost by stepping backwards through the Boost versions
-  # we know about.
-  # Build a list of path suffixes for each version.
-  set(_boost_PATH_SUFFIXES)
-  foreach(_boost_VER ${_boost_TEST_VERSIONS})
-    # Add in a path suffix, based on the required version, ideally
-    # we could read this from version.hpp, but for that to work we'd
-    # need to know the include dir already
-    set(_boost_BOOSTIFIED_VERSION)
-
-    # Transform 1.35 => 1_35 and 1.36.0 => 1_36_0
-    if(_boost_VER MATCHES "([0-9]+)\\.([0-9]+)\\.([0-9]+)")
-        set(_boost_BOOSTIFIED_VERSION
-          "${CMAKE_MATCH_1}_${CMAKE_MATCH_2}_${CMAKE_MATCH_3}")
-    elseif(_boost_VER MATCHES "([0-9]+)\\.([0-9]+)")
-        set(_boost_BOOSTIFIED_VERSION
-          "${CMAKE_MATCH_1}_${CMAKE_MATCH_2}")
-    endif()
-
-    list(APPEND _boost_PATH_SUFFIXES
-      "boost-${_boost_BOOSTIFIED_VERSION}"
-      "boost_${_boost_BOOSTIFIED_VERSION}"
-      "boost/boost-${_boost_BOOSTIFIED_VERSION}"
-      "boost/boost_${_boost_BOOSTIFIED_VERSION}"
-      )
-
-  endforeach()
-
-  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "_boost_INCLUDE_SEARCH_DIRS")
-  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "_boost_PATH_SUFFIXES")
-
-  # Look for a standard boost header file.
-  find_path(Boost_INCLUDE_DIR
-    NAMES         boost/config.hpp
-    HINTS         ${_boost_INCLUDE_SEARCH_DIRS}
-    PATH_SUFFIXES ${_boost_PATH_SUFFIXES}
-    )
-endif()
-
-# ------------------------------------------------------------------------
-#  Extract version information from version.hpp
-# ------------------------------------------------------------------------
-
-if(Boost_INCLUDE_DIR)
-  _Boost_DEBUG_PRINT("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
-                     "location of version.hpp: ${Boost_INCLUDE_DIR}/boost/version.hpp")
-
-  # Extract Boost_VERSION_MACRO and Boost_LIB_VERSION from version.hpp
-  set(Boost_VERSION_MACRO 0)
-  set(Boost_LIB_VERSION "")
-  file(STRINGS "${Boost_INCLUDE_DIR}/boost/version.hpp" _boost_VERSION_HPP_CONTENTS REGEX "#define BOOST_(LIB_)?VERSION ")
-  if("${_boost_VERSION_HPP_CONTENTS}" MATCHES "#define BOOST_VERSION ([0-9]+)")
-    set(Boost_VERSION_MACRO "${CMAKE_MATCH_1}")
-  endif()
-  if("${_boost_VERSION_HPP_CONTENTS}" MATCHES "#define BOOST_LIB_VERSION \"([0-9_]+)\"")
-    set(Boost_LIB_VERSION "${CMAKE_MATCH_1}")
-  endif()
-  unset(_boost_VERSION_HPP_CONTENTS)
-
-  # Calculate version components
-  math(EXPR Boost_VERSION_MAJOR "${Boost_VERSION_MACRO} / 100000")
-  math(EXPR Boost_VERSION_MINOR "${Boost_VERSION_MACRO} / 100 % 1000")
-  math(EXPR Boost_VERSION_PATCH "${Boost_VERSION_MACRO} % 100")
-  set(Boost_VERSION_COUNT 3)
-
-  # Define alias variables for backwards compat.
-  set(Boost_MAJOR_VERSION ${Boost_VERSION_MAJOR})
-  set(Boost_MINOR_VERSION ${Boost_VERSION_MINOR})
-  set(Boost_SUBMINOR_VERSION ${Boost_VERSION_PATCH})
-
-  # Define Boost version in x.y.z format
-  set(Boost_VERSION_STRING "${Boost_VERSION_MAJOR}.${Boost_VERSION_MINOR}.${Boost_VERSION_PATCH}")
-
-  # Define final Boost_VERSION
-  cmake_policy(GET CMP0093 _Boost_CMP0093
-    PARENT_SCOPE # undocumented, do not use outside of CMake
-  )
-  if("x${_Boost_CMP0093}x" STREQUAL "xNEWx")
-    set(Boost_VERSION ${Boost_VERSION_STRING})
-  else()
-    set(Boost_VERSION ${Boost_VERSION_MACRO})
-  endif()
-  unset(_Boost_CMP0093)
-
-  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_VERSION")
-  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_VERSION_STRING")
-  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_VERSION_MACRO")
-  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_VERSION_MAJOR")
-  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_VERSION_MINOR")
-  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_VERSION_PATCH")
-  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_VERSION_COUNT")
-endif()
-
-# ------------------------------------------------------------------------
-#  Prefix initialization
-# ------------------------------------------------------------------------
-
-if ( NOT DEFINED Boost_LIB_PREFIX )
-  # Boost's static libraries use a "lib" prefix on DLL platforms
-  # to distinguish them from the DLL import libraries.
-  if (Boost_USE_STATIC_LIBS AND (
-      (WIN32 AND NOT CYGWIN)
-      OR GHSMULTI
-      ))
-    set(Boost_LIB_PREFIX "lib")
-  else()
-    set(Boost_LIB_PREFIX "")
-  endif()
-endif()
-
-if ( NOT Boost_NAMESPACE )
-  set(Boost_NAMESPACE "boost")
-endif()
-
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_LIB_PREFIX")
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_NAMESPACE")
-
-# ------------------------------------------------------------------------
-#  Suffix initialization and compiler suffix detection.
-# ------------------------------------------------------------------------
-
-set(_Boost_VARS_NAME
-  Boost_NAMESPACE
-  Boost_COMPILER
-  Boost_THREADAPI
-  Boost_USE_DEBUG_PYTHON
-  Boost_USE_MULTITHREADED
-  Boost_USE_STATIC_LIBS
-  Boost_USE_STATIC_RUNTIME
-  Boost_USE_STLPORT
-  Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS
-  )
-_Boost_CHANGE_DETECT(_Boost_CHANGE_LIBNAME ${_Boost_VARS_NAME})
-
-# Setting some more suffixes for the library
-if (Boost_COMPILER)
-  set(_boost_COMPILER ${Boost_COMPILER})
-  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
-                         "_boost_COMPILER" SOURCE "user-specified via Boost_COMPILER")
-else()
-  # Attempt to guess the compiler suffix
-  # NOTE: this is not perfect yet, if you experience any issues
-  # please report them and use the Boost_COMPILER variable
-  # to work around the problems.
-  _Boost_GUESS_COMPILER_PREFIX(_boost_COMPILER)
-endif()
-
-set (_boost_MULTITHREADED "-mt")
-if( NOT Boost_USE_MULTITHREADED )
-  set (_boost_MULTITHREADED "")
-endif()
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "_boost_MULTITHREADED")
-
-#======================
-# Systematically build up the Boost ABI tag for the 'tagged' and 'versioned' layouts
-# http://boost.org/doc/libs/1_66_0/more/getting_started/windows.html#library-naming
-# http://boost.org/doc/libs/1_66_0/boost/config/auto_link.hpp
-# http://boost.org/doc/libs/1_66_0/tools/build/src/tools/common.jam
-# http://boost.org/doc/libs/1_66_0/boostcpp.jam
-set( _boost_RELEASE_ABI_TAG "-")
-set( _boost_DEBUG_ABI_TAG   "-")
-# Key       Use this library when:
-#  s        linking statically to the C++ standard library and
-#           compiler runtime support libraries.
-if(Boost_USE_STATIC_RUNTIME)
-  set( _boost_RELEASE_ABI_TAG "${_boost_RELEASE_ABI_TAG}s")
-  set( _boost_DEBUG_ABI_TAG   "${_boost_DEBUG_ABI_TAG}s")
-endif()
-#  g        using debug versions of the standard and runtime
-#           support libraries
-if(WIN32 AND Boost_USE_DEBUG_RUNTIME)
-  if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC"
-          OR "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xClang"
-          OR "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xIntel")
-    string(APPEND _boost_DEBUG_ABI_TAG "g")
-  endif()
-endif()
-#  y        using special debug build of python
-if(Boost_USE_DEBUG_PYTHON)
-  string(APPEND _boost_DEBUG_ABI_TAG "y")
-endif()
-#  d        using a debug version of your code
-string(APPEND _boost_DEBUG_ABI_TAG "d")
-#  p        using the STLport standard library rather than the
-#           default one supplied with your compiler
-if(Boost_USE_STLPORT)
-  string(APPEND _boost_RELEASE_ABI_TAG "p")
-  string(APPEND _boost_DEBUG_ABI_TAG "p")
-endif()
-#  n        using the STLport deprecated "native iostreams" feature
-#           removed from the documentation in 1.43.0 but still present in
-#           boost/config/auto_link.hpp
-if(Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS)
-  string(APPEND _boost_RELEASE_ABI_TAG "n")
-  string(APPEND _boost_DEBUG_ABI_TAG "n")
-endif()
-
-#  -x86     Architecture and address model tag
-#           First character is the architecture, then word-size, either 32 or 64
-#           Only used in 'versioned' layout, added in Boost 1.66.0
-if(DEFINED Boost_ARCHITECTURE)
-  set(_boost_ARCHITECTURE_TAG "${Boost_ARCHITECTURE}")
-  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
-                         "_boost_ARCHITECTURE_TAG" SOURCE "user-specified via Boost_ARCHITECTURE")
-else()
-  set(_boost_ARCHITECTURE_TAG "")
-  # {CMAKE_CXX_COMPILER_ARCHITECTURE_ID} is not currently set for all compilers
-  if(NOT "x${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "x" AND NOT Boost_VERSION_STRING VERSION_LESS 1.66.0)
-    string(APPEND _boost_ARCHITECTURE_TAG "-")
-    # This needs to be kept in-sync with the section of CMakePlatformId.h.in
-    # inside 'defined(_WIN32) && defined(_MSC_VER)'
-    if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "IA64")
-      string(APPEND _boost_ARCHITECTURE_TAG "i")
-    elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "X86"
-              OR CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "x64")
-      string(APPEND _boost_ARCHITECTURE_TAG "x")
-    elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID MATCHES "^ARM")
-      string(APPEND _boost_ARCHITECTURE_TAG "a")
-    elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "MIPS")
-      string(APPEND _boost_ARCHITECTURE_TAG "m")
-    endif()
-
-    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-      string(APPEND _boost_ARCHITECTURE_TAG "64")
-    else()
-      string(APPEND _boost_ARCHITECTURE_TAG "32")
-    endif()
-  endif()
-  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
-                         "_boost_ARCHITECTURE_TAG" SOURCE "detected")
-endif()
-
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "_boost_RELEASE_ABI_TAG")
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "_boost_DEBUG_ABI_TAG")
-
-# ------------------------------------------------------------------------
-#  Begin finding boost libraries
-# ------------------------------------------------------------------------
-
-set(_Boost_VARS_LIB "")
-foreach(c DEBUG RELEASE)
-  set(_Boost_VARS_LIB_${c} BOOST_LIBRARYDIR Boost_LIBRARY_DIR_${c})
-  list(APPEND _Boost_VARS_LIB ${_Boost_VARS_LIB_${c}})
-  _Boost_CHANGE_DETECT(_Boost_CHANGE_LIBDIR_${c} ${_Boost_VARS_DIR} ${_Boost_VARS_LIB_${c}} Boost_INCLUDE_DIR)
-  # Clear Boost_LIBRARY_DIR_${c} if it did not change but other input affecting the
-  # location did.  We will find a new one based on the new inputs.
-  if(_Boost_CHANGE_LIBDIR_${c} AND NOT _Boost_LIBRARY_DIR_${c}_CHANGED)
-    unset(Boost_LIBRARY_DIR_${c} CACHE)
-  endif()
-
-  # If Boost_LIBRARY_DIR_[RELEASE,DEBUG] is set, prefer its value.
-  if(Boost_LIBRARY_DIR_${c})
-    set(_boost_LIBRARY_SEARCH_DIRS_${c} ${Boost_LIBRARY_DIR_${c}} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
-  else()
-    set(_boost_LIBRARY_SEARCH_DIRS_${c} "")
-    if(BOOST_LIBRARYDIR)
-      list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${BOOST_LIBRARYDIR})
-    elseif(_ENV_BOOST_LIBRARYDIR)
-      list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${_ENV_BOOST_LIBRARYDIR})
-    endif()
-
-    if(BOOST_ROOT)
-      list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${BOOST_ROOT}/lib ${BOOST_ROOT}/stage/lib)
-      _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "${BOOST_ROOT}")
-    elseif(_ENV_BOOST_ROOT)
-      list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${_ENV_BOOST_ROOT}/lib ${_ENV_BOOST_ROOT}/stage/lib)
-      _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "${_ENV_BOOST_ROOT}")
-    endif()
-
-    list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c}
-      ${Boost_INCLUDE_DIR}/lib
-      ${Boost_INCLUDE_DIR}/../lib
-      ${Boost_INCLUDE_DIR}/stage/lib
-      )
-    _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "${Boost_INCLUDE_DIR}/..")
-    _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "${Boost_INCLUDE_DIR}")
-    if( Boost_NO_SYSTEM_PATHS )
-      list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} NO_CMAKE_SYSTEM_PATH NO_SYSTEM_ENVIRONMENT_PATH)
-    else()
-      foreach(ver ${_boost_TEST_VERSIONS})
-        string(REPLACE "." "_" ver "${ver}")
-        _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "C:/local/boost_${ver}")
-      endforeach()
-      _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "C:/boost")
-      list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} PATHS
-        C:/boost/lib
-        C:/boost
-        /sw/local/lib
-        )
-    endif()
-  endif()
-endforeach()
-
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "_boost_LIBRARY_SEARCH_DIRS_RELEASE")
-_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "_boost_LIBRARY_SEARCH_DIRS_DEBUG")
-
-# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
-if( Boost_USE_STATIC_LIBS )
-  set( _boost_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
-  if(WIN32)
-    list(INSERT CMAKE_FIND_LIBRARY_SUFFIXES 0 .lib .a)
-  else()
-    set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
-  endif()
-endif()
-
-# We want to use the tag inline below without risking double dashes
-if(_boost_RELEASE_ABI_TAG)
-  if(${_boost_RELEASE_ABI_TAG} STREQUAL "-")
-    set(_boost_RELEASE_ABI_TAG "")
-  endif()
-endif()
-if(_boost_DEBUG_ABI_TAG)
-  if(${_boost_DEBUG_ABI_TAG} STREQUAL "-")
-    set(_boost_DEBUG_ABI_TAG "")
-  endif()
-endif()
-
-# The previous behavior of FindBoost when Boost_USE_STATIC_LIBS was enabled
-# on WIN32 was to:
-#  1. Search for static libs compiled against a SHARED C++ standard runtime library (use if found)
-#  2. Search for static libs compiled against a STATIC C++ standard runtime library (use if found)
-# We maintain this behavior since changing it could break people's builds.
-# To disable the ambiguous behavior, the user need only
-# set Boost_USE_STATIC_RUNTIME either ON or OFF.
-set(_boost_STATIC_RUNTIME_WORKAROUND false)
-if(WIN32 AND Boost_USE_STATIC_LIBS)
-  if(NOT DEFINED Boost_USE_STATIC_RUNTIME)
-    set(_boost_STATIC_RUNTIME_WORKAROUND TRUE)
-  endif()
-endif()
-
-# On versions < 1.35, remove the System library from the considered list
-# since it wasn't added until 1.35.
-if(Boost_VERSION_STRING AND Boost_FIND_COMPONENTS)
-  if(Boost_VERSION_STRING VERSION_LESS 1.35.0)
-    list(REMOVE_ITEM Boost_FIND_COMPONENTS system)
-  endif()
-endif()
-
-# Additional components may be required via component dependencies.
-# Add any missing components to the list.
-_Boost_MISSING_DEPENDENCIES(Boost_FIND_COMPONENTS _Boost_EXTRA_FIND_COMPONENTS)
-
-# If thread is required, get the thread libs as a dependency
-if("thread" IN_LIST Boost_FIND_COMPONENTS)
-  if(Boost_FIND_QUIETLY)
-    set(_Boost_find_quiet QUIET)
-  else()
-    set(_Boost_find_quiet "")
-  endif()
-  find_package(Threads ${_Boost_find_quiet})
-  unset(_Boost_find_quiet)
-endif()
-
-# If the user changed any of our control inputs flush previous results.
-if(_Boost_CHANGE_LIBDIR_DEBUG OR _Boost_CHANGE_LIBDIR_RELEASE OR _Boost_CHANGE_LIBNAME)
-  foreach(COMPONENT ${_Boost_COMPONENTS_SEARCHED})
-    string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
-    foreach(c DEBUG RELEASE)
-      set(_var Boost_${UPPERCOMPONENT}_LIBRARY_${c})
-      unset(${_var} CACHE)
-      set(${_var} "${_var}-NOTFOUND")
-    endforeach()
-  endforeach()
-  set(_Boost_COMPONENTS_SEARCHED "")
-endif()
-
-foreach(COMPONENT ${Boost_FIND_COMPONENTS})
-  string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
-
-  set( _boost_docstring_release "Boost ${COMPONENT} library (release)")
-  set( _boost_docstring_debug   "Boost ${COMPONENT} library (debug)")
-
-  # Compute component-specific hints.
-  set(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT "")
-  if(${COMPONENT} STREQUAL "mpi" OR ${COMPONENT} STREQUAL "mpi_python" OR
-     ${COMPONENT} STREQUAL "graph_parallel")
-    foreach(lib ${MPI_CXX_LIBRARIES} ${MPI_C_LIBRARIES})
-      if(IS_ABSOLUTE "${lib}")
-        get_filename_component(libdir "${lib}" PATH)
-        string(REPLACE "\\" "/" libdir "${libdir}")
-        list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT ${libdir})
-      endif()
-    endforeach()
-  endif()
-
-  # Handle Python version suffixes
-  unset(COMPONENT_PYTHON_VERSION_MAJOR)
-  unset(COMPONENT_PYTHON_VERSION_MINOR)
-  if(${COMPONENT} MATCHES "^(python|mpi_python|numpy)([0-9])\$")
-    set(COMPONENT_UNVERSIONED "${CMAKE_MATCH_1}")
-    set(COMPONENT_PYTHON_VERSION_MAJOR "${CMAKE_MATCH_2}")
-  elseif(${COMPONENT} MATCHES "^(python|mpi_python|numpy)([0-9])\\.?([0-9])\$")
-    set(COMPONENT_UNVERSIONED "${CMAKE_MATCH_1}")
-    set(COMPONENT_PYTHON_VERSION_MAJOR "${CMAKE_MATCH_2}")
-    set(COMPONENT_PYTHON_VERSION_MINOR "${CMAKE_MATCH_3}")
-  endif()
-
-  unset(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME)
-  if (COMPONENT_PYTHON_VERSION_MINOR)
-    # Boost >= 1.67
-    list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}")
-    # Debian/Ubuntu (Some versions omit the 2 and/or 3 from the suffix)
-    list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}${COMPONENT_PYTHON_VERSION_MAJOR}-py${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}")
-    list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}-py${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}")
-    # Gentoo
-    list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}-${COMPONENT_PYTHON_VERSION_MAJOR}.${COMPONENT_PYTHON_VERSION_MINOR}")
-    # RPMs
-    list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}-${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}")
-  endif()
-  if (COMPONENT_PYTHON_VERSION_MAJOR AND NOT COMPONENT_PYTHON_VERSION_MINOR)
-    # Boost < 1.67
-    list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}${COMPONENT_PYTHON_VERSION_MAJOR}")
-  endif()
-
-  # Consolidate and report component-specific hints.
-  if(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME)
-    list(REMOVE_DUPLICATES _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME)
-    _Boost_DEBUG_PRINT("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
-      "Component-specific library search names for ${COMPONENT_NAME}: ${_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME}")
-  endif()
-  if(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT)
-    list(REMOVE_DUPLICATES _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT)
-    _Boost_DEBUG_PRINT("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
-      "Component-specific library search paths for ${COMPONENT}: ${_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT}")
-  endif()
-
-  #
-  # Find headers
-  #
-  _Boost_COMPONENT_HEADERS("${COMPONENT}" Boost_${UPPERCOMPONENT}_HEADER_NAME)
-  # Look for a standard boost header file.
-  if(Boost_${UPPERCOMPONENT}_HEADER_NAME)
-    if(EXISTS "${Boost_INCLUDE_DIR}/${Boost_${UPPERCOMPONENT}_HEADER_NAME}")
-      set(Boost_${UPPERCOMPONENT}_HEADER ON)
-    else()
-      set(Boost_${UPPERCOMPONENT}_HEADER OFF)
-    endif()
-  else()
-    set(Boost_${UPPERCOMPONENT}_HEADER ON)
-    message(WARNING "No header defined for ${COMPONENT}; skipping header check "
-                    "(note: header-only libraries have no designated component)")
-  endif()
-
-  #
-  # Find RELEASE libraries
-  #
-  unset(_boost_RELEASE_NAMES)
-  foreach(component IN LISTS _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME COMPONENT)
-    foreach(compiler IN LISTS _boost_COMPILER)
-      list(APPEND _boost_RELEASE_NAMES
-        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
-        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG}
-        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG} )
-    endforeach()
-    list(APPEND _boost_RELEASE_NAMES
-      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
-      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG}
-      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}
-      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}
-      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component} )
-    if(_boost_STATIC_RUNTIME_WORKAROUND)
-      set(_boost_RELEASE_STATIC_ABI_TAG "-s${_boost_RELEASE_ABI_TAG}")
-      foreach(compiler IN LISTS _boost_COMPILER)
-        list(APPEND _boost_RELEASE_NAMES
-          ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
-          ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}
-          ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG} )
-      endforeach()
-      list(APPEND _boost_RELEASE_NAMES
-        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
-        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}
-        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG} )
-    endif()
-  endforeach()
-  if(Boost_THREADAPI AND ${COMPONENT} STREQUAL "thread")
-    _Boost_PREPEND_LIST_WITH_THREADAPI(_boost_RELEASE_NAMES ${_boost_RELEASE_NAMES})
-  endif()
-  _Boost_DEBUG_PRINT("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
-                     "Searching for ${UPPERCOMPONENT}_LIBRARY_RELEASE: ${_boost_RELEASE_NAMES}")
-
-  # if Boost_LIBRARY_DIR_RELEASE is not defined,
-  # but Boost_LIBRARY_DIR_DEBUG is, look there first for RELEASE libs
-  if(NOT Boost_LIBRARY_DIR_RELEASE AND Boost_LIBRARY_DIR_DEBUG)
-    list(INSERT _boost_LIBRARY_SEARCH_DIRS_RELEASE 0 ${Boost_LIBRARY_DIR_DEBUG})
-  endif()
-
-  # Avoid passing backslashes to _Boost_FIND_LIBRARY due to macro re-parsing.
-  string(REPLACE "\\" "/" _boost_LIBRARY_SEARCH_DIRS_tmp "${_boost_LIBRARY_SEARCH_DIRS_RELEASE}")
-
-  if(Boost_USE_RELEASE_LIBS)
-    _Boost_FIND_LIBRARY(Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE RELEASE
-      NAMES ${_boost_RELEASE_NAMES}
-      HINTS ${_boost_LIBRARY_SEARCH_DIRS_tmp}
-      NAMES_PER_DIR
-      DOC "${_boost_docstring_release}"
-      )
-  endif()
-
-  #
-  # Find DEBUG libraries
-  #
-  unset(_boost_DEBUG_NAMES)
-  foreach(component IN LISTS _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME COMPONENT)
-    foreach(compiler IN LISTS _boost_COMPILER)
-      list(APPEND _boost_DEBUG_NAMES
-        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
-        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}${_boost_ARCHITECTURE_TAG}
-        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG} )
-    endforeach()
-    list(APPEND _boost_DEBUG_NAMES
-      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
-      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}${_boost_ARCHITECTURE_TAG}
-      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}
-      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}
-      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component} )
-    if(_boost_STATIC_RUNTIME_WORKAROUND)
-      set(_boost_DEBUG_STATIC_ABI_TAG "-s${_boost_DEBUG_ABI_TAG}")
-      foreach(compiler IN LISTS _boost_COMPILER)
-        list(APPEND _boost_DEBUG_NAMES
-          ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
-          ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}
-          ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG} )
-      endforeach()
-      list(APPEND _boost_DEBUG_NAMES
-        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
-        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}
-        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG} )
-    endif()
-  endforeach()
-  if(Boost_THREADAPI AND ${COMPONENT} STREQUAL "thread")
-     _Boost_PREPEND_LIST_WITH_THREADAPI(_boost_DEBUG_NAMES ${_boost_DEBUG_NAMES})
-  endif()
-  _Boost_DEBUG_PRINT("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
-                     "Searching for ${UPPERCOMPONENT}_LIBRARY_DEBUG: ${_boost_DEBUG_NAMES}")
-
-  # if Boost_LIBRARY_DIR_DEBUG is not defined,
-  # but Boost_LIBRARY_DIR_RELEASE is, look there first for DEBUG libs
-  if(NOT Boost_LIBRARY_DIR_DEBUG AND Boost_LIBRARY_DIR_RELEASE)
-    list(INSERT _boost_LIBRARY_SEARCH_DIRS_DEBUG 0 ${Boost_LIBRARY_DIR_RELEASE})
-  endif()
-
-  # Avoid passing backslashes to _Boost_FIND_LIBRARY due to macro re-parsing.
-  string(REPLACE "\\" "/" _boost_LIBRARY_SEARCH_DIRS_tmp "${_boost_LIBRARY_SEARCH_DIRS_DEBUG}")
-
-  if(Boost_USE_DEBUG_LIBS)
-    _Boost_FIND_LIBRARY(Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG DEBUG
-      NAMES ${_boost_DEBUG_NAMES}
-      HINTS ${_boost_LIBRARY_SEARCH_DIRS_tmp}
-      NAMES_PER_DIR
-      DOC "${_boost_docstring_debug}"
-      )
-  endif ()
-
-  if(Boost_REALPATH)
-    _Boost_SWAP_WITH_REALPATH(Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE "${_boost_docstring_release}")
-    _Boost_SWAP_WITH_REALPATH(Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG   "${_boost_docstring_debug}"  )
-  endif()
-
-  _Boost_ADJUST_LIB_VARS(${UPPERCOMPONENT})
-
-  # Check if component requires some compiler features
-  _Boost_COMPILER_FEATURES(${COMPONENT} _Boost_${UPPERCOMPONENT}_COMPILER_FEATURES)
-
-endforeach()
-
-# Restore the original find library ordering
-if( Boost_USE_STATIC_LIBS )
-  set(CMAKE_FIND_LIBRARY_SUFFIXES ${_boost_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
-endif()
-
-# ------------------------------------------------------------------------
-#  End finding boost libraries
-# ------------------------------------------------------------------------
-
-set(Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIR})
-set(Boost_LIBRARY_DIRS)
-if(Boost_LIBRARY_DIR_RELEASE)
-  list(APPEND Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIR_RELEASE})
-endif()
-if(Boost_LIBRARY_DIR_DEBUG)
-  list(APPEND Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIR_DEBUG})
-endif()
-if(Boost_LIBRARY_DIRS)
-  list(REMOVE_DUPLICATES Boost_LIBRARY_DIRS)
-endif()
-
-# ------------------------------------------------------------------------
-#  Call FPHSA helper, see https://cmake.org/cmake/help/latest/module/FindPackageHandleStandardArgs.html
-# ------------------------------------------------------------------------
-
-# Define aliases as needed by the component handler in the FPHSA helper below
-foreach(_comp IN LISTS Boost_FIND_COMPONENTS)
-  string(TOUPPER ${_comp} _uppercomp)
-  if(DEFINED Boost_${_uppercomp}_FOUND)
-    set(Boost_${_comp}_FOUND ${Boost_${_uppercomp}_FOUND})
-  endif()
-endforeach()
-
-find_package_handle_standard_args(Boost
-  REQUIRED_VARS Boost_INCLUDE_DIR
-  VERSION_VAR Boost_VERSION_STRING
-  HANDLE_COMPONENTS)
-
-if(Boost_FOUND)
-  if( NOT Boost_LIBRARY_DIRS )
-    # Compatibility Code for backwards compatibility with CMake
-    # 2.4's FindBoost module.
-
-    # Look for the boost library path.
-    # Note that the user may not have installed any libraries
-    # so it is quite possible the Boost_LIBRARY_DIRS may not exist.
-    set(_boost_LIB_DIR ${Boost_INCLUDE_DIR})
-
-    if("${_boost_LIB_DIR}" MATCHES "boost-[0-9]+")
-      get_filename_component(_boost_LIB_DIR ${_boost_LIB_DIR} PATH)
-    endif()
-
-    if("${_boost_LIB_DIR}" MATCHES "/include$")
-      # Strip off the trailing "/include" in the path.
-      get_filename_component(_boost_LIB_DIR ${_boost_LIB_DIR} PATH)
-    endif()
-
-    if(EXISTS "${_boost_LIB_DIR}/lib")
-      string(APPEND _boost_LIB_DIR /lib)
-    elseif(EXISTS "${_boost_LIB_DIR}/stage/lib")
-      string(APPEND _boost_LIB_DIR "/stage/lib")
-    else()
-      set(_boost_LIB_DIR "")
-    endif()
-
-    if(_boost_LIB_DIR AND EXISTS "${_boost_LIB_DIR}")
-      set(Boost_LIBRARY_DIRS ${_boost_LIB_DIR})
-    endif()
-
-  endif()
-else()
-  # Boost headers were not found so no components were found.
-  foreach(COMPONENT ${Boost_FIND_COMPONENTS})
-    string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
-    set(Boost_${UPPERCOMPONENT}_FOUND 0)
-  endforeach()
-endif()
-
-# ------------------------------------------------------------------------
-#  Add imported targets
-# ------------------------------------------------------------------------
-
-if(Boost_FOUND)
-  # The builtin CMake package in Boost 1.70+ introduces a new name
-  # for the header-only lib, let's provide the same UI in module mode
-  if(NOT TARGET Boost::headers)
-    add_library(Boost::headers INTERFACE IMPORTED)
-    if(Boost_INCLUDE_DIRS)
-      set_target_properties(Boost::headers PROPERTIES
-        INTERFACE_INCLUDE_DIRECTORIES "${Boost_INCLUDE_DIRS}")
-    endif()
-  endif()
-
-  # Define the old target name for header-only libraries for backwards
-  # compat.
-  if(NOT TARGET Boost::boost)
-    add_library(Boost::boost INTERFACE IMPORTED)
-    set_target_properties(Boost::boost
-      PROPERTIES INTERFACE_LINK_LIBRARIES Boost::headers)
-  endif()
-
-  foreach(COMPONENT ${Boost_FIND_COMPONENTS})
-    if(_Boost_IMPORTED_TARGETS AND NOT TARGET Boost::${COMPONENT})
-      string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
-      if(Boost_${UPPERCOMPONENT}_FOUND)
-        if(Boost_USE_STATIC_LIBS)
-          add_library(Boost::${COMPONENT} STATIC IMPORTED)
-        else()
-          # Even if Boost_USE_STATIC_LIBS is OFF, we might have static
-          # libraries as a result.
-          add_library(Boost::${COMPONENT} UNKNOWN IMPORTED)
-        endif()
-        if(Boost_INCLUDE_DIRS)
-          set_target_properties(Boost::${COMPONENT} PROPERTIES
-            INTERFACE_INCLUDE_DIRECTORIES "${Boost_INCLUDE_DIRS}")
-        endif()
-        if(EXISTS "${Boost_${UPPERCOMPONENT}_LIBRARY}")
-          set_target_properties(Boost::${COMPONENT} PROPERTIES
-            IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
-            IMPORTED_LOCATION "${Boost_${UPPERCOMPONENT}_LIBRARY}")
-        endif()
-        if(EXISTS "${Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE}")
-          set_property(TARGET Boost::${COMPONENT} APPEND PROPERTY
-            IMPORTED_CONFIGURATIONS RELEASE)
-          set_target_properties(Boost::${COMPONENT} PROPERTIES
-            IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
-            IMPORTED_LOCATION_RELEASE "${Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE}")
-        endif()
-        if(EXISTS "${Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG}")
-          set_property(TARGET Boost::${COMPONENT} APPEND PROPERTY
-            IMPORTED_CONFIGURATIONS DEBUG)
-          set_target_properties(Boost::${COMPONENT} PROPERTIES
-            IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
-            IMPORTED_LOCATION_DEBUG "${Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG}")
-        endif()
-        if(_Boost_${UPPERCOMPONENT}_DEPENDENCIES)
-          unset(_Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES)
-          foreach(dep ${_Boost_${UPPERCOMPONENT}_DEPENDENCIES})
-            list(APPEND _Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES Boost::${dep})
-          endforeach()
-          if(COMPONENT STREQUAL "thread")
-            list(APPEND _Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES Threads::Threads)
-          endif()
-          set_target_properties(Boost::${COMPONENT} PROPERTIES
-            INTERFACE_LINK_LIBRARIES "${_Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES}")
-        endif()
-        if(_Boost_${UPPERCOMPONENT}_COMPILER_FEATURES)
-          set_target_properties(Boost::${COMPONENT} PROPERTIES
-            INTERFACE_COMPILE_FEATURES "${_Boost_${UPPERCOMPONENT}_COMPILER_FEATURES}")
-        endif()
-      endif()
-    endif()
-  endforeach()
-
-  # Supply Boost_LIB_DIAGNOSTIC_DEFINITIONS as a convenience target. It
-  # will only contain any interface definitions on WIN32, but is created
-  # on all platforms to keep end user code free from platform dependent
-  # code.  Also provide convenience targets to disable autolinking and
-  # enable dynamic linking.
-  if(NOT TARGET Boost::diagnostic_definitions)
-    add_library(Boost::diagnostic_definitions INTERFACE IMPORTED)
-    add_library(Boost::disable_autolinking INTERFACE IMPORTED)
-    add_library(Boost::dynamic_linking INTERFACE IMPORTED)
-    set_target_properties(Boost::dynamic_linking PROPERTIES
-      INTERFACE_COMPILE_DEFINITIONS "BOOST_ALL_DYN_LINK")
-  endif()
-  if(WIN32)
-    # In windows, automatic linking is performed, so you do not have
-    # to specify the libraries.  If you are linking to a dynamic
-    # runtime, then you can choose to link to either a static or a
-    # dynamic Boost library, the default is to do a static link.  You
-    # can alter this for a specific library "whatever" by defining
-    # BOOST_WHATEVER_DYN_LINK to force Boost library "whatever" to be
-    # linked dynamically.  Alternatively you can force all Boost
-    # libraries to dynamic link by defining BOOST_ALL_DYN_LINK.
-
-    # This feature can be disabled for Boost library "whatever" by
-    # defining BOOST_WHATEVER_NO_LIB, or for all of Boost by defining
-    # BOOST_ALL_NO_LIB.
-
-    # If you want to observe which libraries are being linked against
-    # then defining BOOST_LIB_DIAGNOSTIC will cause the auto-linking
-    # code to emit a #pragma message each time a library is selected
-    # for linking.
-    set(Boost_LIB_DIAGNOSTIC_DEFINITIONS "-DBOOST_LIB_DIAGNOSTIC")
-    set_target_properties(Boost::diagnostic_definitions PROPERTIES
-      INTERFACE_COMPILE_DEFINITIONS "BOOST_LIB_DIAGNOSTIC")
-    set_target_properties(Boost::disable_autolinking PROPERTIES
-      INTERFACE_COMPILE_DEFINITIONS "BOOST_ALL_NO_LIB")
-  endif()
-endif()
-
-# ------------------------------------------------------------------------
-#  Finalize
-# ------------------------------------------------------------------------
-
-# Report Boost_LIBRARIES
-set(Boost_LIBRARIES "")
-foreach(_comp IN LISTS Boost_FIND_COMPONENTS)
-  string(TOUPPER ${_comp} _uppercomp)
-  if(Boost_${_uppercomp}_FOUND)
-    list(APPEND Boost_LIBRARIES ${Boost_${_uppercomp}_LIBRARY})
-    if(_comp STREQUAL "thread")
-      list(APPEND Boost_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
-    endif()
-  endif()
-endforeach()
-
-# Configure display of cache entries in GUI.
-foreach(v BOOSTROOT BOOST_ROOT ${_Boost_VARS_INC} ${_Boost_VARS_LIB})
-  get_property(_type CACHE ${v} PROPERTY TYPE)
-  if(_type)
-    set_property(CACHE ${v} PROPERTY ADVANCED 1)
-    if("x${_type}" STREQUAL "xUNINITIALIZED")
-      if("x${v}" STREQUAL "xBoost_ADDITIONAL_VERSIONS")
-        set_property(CACHE ${v} PROPERTY TYPE STRING)
-      else()
-        set_property(CACHE ${v} PROPERTY TYPE PATH)
-      endif()
-    endif()
-  endif()
-endforeach()
-
-# Record last used values of input variables so we can
-# detect on the next run if the user changed them.
-foreach(v
-    ${_Boost_VARS_INC} ${_Boost_VARS_LIB}
-    ${_Boost_VARS_DIR} ${_Boost_VARS_NAME}
-    )
-  if(DEFINED ${v})
-    set(_${v}_LAST "${${v}}" CACHE INTERNAL "Last used ${v} value.")
-  else()
-    unset(_${v}_LAST CACHE)
-  endif()
-endforeach()
-
-# Maintain a persistent list of components requested anywhere since
-# the last flush.
-set(_Boost_COMPONENTS_SEARCHED "${_Boost_COMPONENTS_SEARCHED}")
-list(APPEND _Boost_COMPONENTS_SEARCHED ${Boost_FIND_COMPONENTS})
-list(REMOVE_DUPLICATES _Boost_COMPONENTS_SEARCHED)
-list(SORT _Boost_COMPONENTS_SEARCHED)
-set(_Boost_COMPONENTS_SEARCHED "${_Boost_COMPONENTS_SEARCHED}"
-  CACHE INTERNAL "Components requested for this build tree.")
-
-# Restore project's policies
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FindCUDA.cmake b/share/cmake-3.18/Modules/FindCUDA.cmake
deleted file mode 100644
index a93d4fd..0000000
--- a/share/cmake-3.18/Modules/FindCUDA.cmake
+++ /dev/null
@@ -1,2027 +0,0 @@
-#[=======================================================================[.rst:
-FindCUDA
---------
-
-.. deprecated:: 3.10
-
-  Superseded by first-class support for the CUDA language in CMake.
-  Superseded by the :module:`FindCUDAToolkit` for CUDA toolkit libraries.
-
-Replacement
-^^^^^^^^^^^
-
-It is no longer necessary to use this module or call ``find_package(CUDA)``
-for compiling CUDA code. Instead, list ``CUDA`` among the languages named
-in the top-level call to the :command:`project` command, or call the
-:command:`enable_language` command with ``CUDA``.
-Then one can add CUDA (``.cu``) sources to programs directly
-in calls to :command:`add_library` and :command:`add_executable`.
-
-To find and use the CUDA toolkit libraries the :module:`FindCUDAToolkit`
-module has superseded this module.  It works whether or not the ``CUDA``
-language is enabled.
-
-Documentation of Deprecated Usage
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Tools for building CUDA C files: libraries and build dependencies.
-
-This script locates the NVIDIA CUDA C tools.  It should work on Linux,
-Windows, and macOS and should be reasonably up to date with CUDA C
-releases.
-
-This script makes use of the standard :command:`find_package` arguments of
-``<VERSION>``, ``REQUIRED`` and ``QUIET``.  ``CUDA_FOUND`` will report if an
-acceptable version of CUDA was found.
-
-The script will prompt the user to specify ``CUDA_TOOLKIT_ROOT_DIR`` if
-the prefix cannot be determined by the location of nvcc in the system
-path and ``REQUIRED`` is specified to :command:`find_package`.  To use
-a different installed version of the toolkit set the environment variable
-``CUDA_BIN_PATH`` before running cmake (e.g.
-``CUDA_BIN_PATH=/usr/local/cuda1.0`` instead of the default
-``/usr/local/cuda``) or set ``CUDA_TOOLKIT_ROOT_DIR`` after configuring.  If
-you change the value of ``CUDA_TOOLKIT_ROOT_DIR``, various components that
-depend on the path will be relocated.
-
-It might be necessary to set ``CUDA_TOOLKIT_ROOT_DIR`` manually on certain
-platforms, or to use a CUDA runtime not installed in the default
-location.  In newer versions of the toolkit the CUDA library is
-included with the graphics driver -- be sure that the driver version
-matches what is needed by the CUDA runtime version.
-
-The following variables affect the behavior of the macros in the
-script (in alphabetical order).  Note that any of these flags can be
-changed multiple times in the same directory before calling
-``CUDA_ADD_EXECUTABLE``, ``CUDA_ADD_LIBRARY``, ``CUDA_COMPILE``,
-``CUDA_COMPILE_PTX``, ``CUDA_COMPILE_FATBIN``, ``CUDA_COMPILE_CUBIN``
-or ``CUDA_WRAP_SRCS``::
-
-  CUDA_64_BIT_DEVICE_CODE (Default matches host bit size)
-  -- Set to ON to compile for 64 bit device code, OFF for 32 bit device code.
-     Note that making this different from the host code when generating object
-     or C files from CUDA code just won't work, because size_t gets defined by
-     nvcc in the generated source.  If you compile to PTX and then load the
-     file yourself, you can mix bit sizes between device and host.
-
-  CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE (Default ON)
-  -- Set to ON if you want the custom build rule to be attached to the source
-     file in Visual Studio.  Turn OFF if you add the same cuda file to multiple
-     targets.
-
-     This allows the user to build the target from the CUDA file; however, bad
-     things can happen if the CUDA source file is added to multiple targets.
-     When performing parallel builds it is possible for the custom build
-     command to be run more than once and in parallel causing cryptic build
-     errors.  VS runs the rules for every source file in the target, and a
-     source can have only one rule no matter how many projects it is added to.
-     When the rule is run from multiple targets race conditions can occur on
-     the generated file.  Eventually everything will get built, but if the user
-     is unaware of this behavior, there may be confusion.  It would be nice if
-     this script could detect the reuse of source files across multiple targets
-     and turn the option off for the user, but no good solution could be found.
-
-  CUDA_BUILD_CUBIN (Default OFF)
-  -- Set to ON to enable and extra compilation pass with the -cubin option in
-     Device mode. The output is parsed and register, shared memory usage is
-     printed during build.
-
-  CUDA_BUILD_EMULATION (Default OFF for device mode)
-  -- Set to ON for Emulation mode. -D_DEVICEEMU is defined for CUDA C files
-     when CUDA_BUILD_EMULATION is TRUE.
-
-  CUDA_LINK_LIBRARIES_KEYWORD (Default "")
-   -- The <PRIVATE|PUBLIC|INTERFACE> keyword to use for internal
-      target_link_libraries calls. The default is to use no keyword which
-      uses the old "plain" form of target_link_libraries. Note that is matters
-      because whatever is used inside the FindCUDA module must also be used
-      outside - the two forms of target_link_libraries cannot be mixed.
-
-  CUDA_GENERATED_OUTPUT_DIR (Default CMAKE_CURRENT_BINARY_DIR)
-  -- Set to the path you wish to have the generated files placed.  If it is
-     blank output files will be placed in CMAKE_CURRENT_BINARY_DIR.
-     Intermediate files will always be placed in
-     CMAKE_CURRENT_BINARY_DIR/CMakeFiles.
-
-  CUDA_HOST_COMPILATION_CPP (Default ON)
-  -- Set to OFF for C compilation of host code.
-
-  CUDA_HOST_COMPILER (Default CMAKE_C_COMPILER)
-  -- Set the host compiler to be used by nvcc.  Ignored if -ccbin or
-     --compiler-bindir is already present in the CUDA_NVCC_FLAGS or
-     CUDA_NVCC_FLAGS_<CONFIG> variables.  For Visual Studio targets,
-     the host compiler is constructed with one or more visual studio macros
-     such as $(VCInstallDir), that expands out to the path when
-     the command is run from within VS.
-     If the CUDAHOSTCXX environment variable is set it will
-     be used as the default.
-
-  CUDA_NVCC_FLAGS
-  CUDA_NVCC_FLAGS_<CONFIG>
-  -- Additional NVCC command line arguments.  NOTE: multiple arguments must be
-     semi-colon delimited (e.g. --compiler-options;-Wall)
-
-  CUDA_PROPAGATE_HOST_FLAGS (Default ON)
-  -- Set to ON to propagate CMAKE_{C,CXX}_FLAGS and their configuration
-     dependent counterparts (e.g. CMAKE_C_FLAGS_DEBUG) automatically to the
-     host compiler through nvcc's -Xcompiler flag.  This helps make the
-     generated host code match the rest of the system better.  Sometimes
-     certain flags give nvcc problems, and this will help you turn the flag
-     propagation off.  This does not affect the flags supplied directly to nvcc
-     via CUDA_NVCC_FLAGS or through the OPTION flags specified through
-     CUDA_ADD_LIBRARY, CUDA_ADD_EXECUTABLE, or CUDA_WRAP_SRCS.  Flags used for
-     shared library compilation are not affected by this flag.
-
-  CUDA_SEPARABLE_COMPILATION (Default OFF)
-  -- If set this will enable separable compilation for all CUDA runtime object
-     files.  If used outside of CUDA_ADD_EXECUTABLE and CUDA_ADD_LIBRARY
-     (e.g. calling CUDA_WRAP_SRCS directly),
-     CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME and
-     CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS should be called.
-
-  CUDA_SOURCE_PROPERTY_FORMAT
-  -- If this source file property is set, it can override the format specified
-     to CUDA_WRAP_SRCS (OBJ, PTX, CUBIN, or FATBIN).  If an input source file
-     is not a .cu file, setting this file will cause it to be treated as a .cu
-     file. See documentation for set_source_files_properties on how to set
-     this property.
-
-  CUDA_USE_STATIC_CUDA_RUNTIME (Default ON)
-  -- When enabled the static version of the CUDA runtime library will be used
-     in CUDA_LIBRARIES.  If the version of CUDA configured doesn't support
-     this option, then it will be silently disabled.
-
-  CUDA_VERBOSE_BUILD (Default OFF)
-  -- Set to ON to see all the commands used when building the CUDA file.  When
-     using a Makefile generator the value defaults to VERBOSE (run make
-     VERBOSE=1 to see output), although setting CUDA_VERBOSE_BUILD to ON will
-     always print the output.
-
-The script creates the following macros (in alphabetical order)::
-
-  CUDA_ADD_CUFFT_TO_TARGET( cuda_target )
-  -- Adds the cufft library to the target (can be any target).  Handles whether
-     you are in emulation mode or not.
-
-  CUDA_ADD_CUBLAS_TO_TARGET( cuda_target )
-  -- Adds the cublas library to the target (can be any target).  Handles
-     whether you are in emulation mode or not.
-
-  CUDA_ADD_EXECUTABLE( cuda_target file0 file1 ...
-                       [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [OPTIONS ...] )
-  -- Creates an executable "cuda_target" which is made up of the files
-     specified.  All of the non CUDA C files are compiled using the standard
-     build rules specified by CMAKE and the cuda files are compiled to object
-     files using nvcc and the host compiler.  In addition CUDA_INCLUDE_DIRS is
-     added automatically to include_directories().  Some standard CMake target
-     calls can be used on the target after calling this macro
-     (e.g. set_target_properties and target_link_libraries), but setting
-     properties that adjust compilation flags will not affect code compiled by
-     nvcc.  Such flags should be modified before calling CUDA_ADD_EXECUTABLE,
-     CUDA_ADD_LIBRARY or CUDA_WRAP_SRCS.
-
-  CUDA_ADD_LIBRARY( cuda_target file0 file1 ...
-                    [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] [OPTIONS ...] )
-  -- Same as CUDA_ADD_EXECUTABLE except that a library is created.
-
-  CUDA_BUILD_CLEAN_TARGET()
-  -- Creates a convenience target that deletes all the dependency files
-     generated.  You should make clean after running this target to ensure the
-     dependency files get regenerated.
-
-  CUDA_COMPILE( generated_files file0 file1 ... [STATIC | SHARED | MODULE]
-                [OPTIONS ...] )
-  -- Returns a list of generated files from the input source files to be used
-     with ADD_LIBRARY or ADD_EXECUTABLE.
-
-  CUDA_COMPILE_PTX( generated_files file0 file1 ... [OPTIONS ...] )
-  -- Returns a list of PTX files generated from the input source files.
-
-  CUDA_COMPILE_FATBIN( generated_files file0 file1 ... [OPTIONS ...] )
-  -- Returns a list of FATBIN files generated from the input source files.
-
-  CUDA_COMPILE_CUBIN( generated_files file0 file1 ... [OPTIONS ...] )
-  -- Returns a list of CUBIN files generated from the input source files.
-
-  CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME( output_file_var
-                                                       cuda_target
-                                                       object_files )
-  -- Compute the name of the intermediate link file used for separable
-     compilation.  This file name is typically passed into
-     CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS.  output_file_var is produced
-     based on cuda_target the list of objects files that need separable
-     compilation as specified by object_files.  If the object_files list is
-     empty, then output_file_var will be empty.  This function is called
-     automatically for CUDA_ADD_LIBRARY and CUDA_ADD_EXECUTABLE.  Note that
-     this is a function and not a macro.
-
-  CUDA_INCLUDE_DIRECTORIES( path0 path1 ... )
-  -- Sets the directories that should be passed to nvcc
-     (e.g. nvcc -Ipath0 -Ipath1 ... ). These paths usually contain other .cu
-     files.
-
-
-  CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS( output_file_var cuda_target
-                                           nvcc_flags object_files)
-  -- Generates the link object required by separable compilation from the given
-     object files.  This is called automatically for CUDA_ADD_EXECUTABLE and
-     CUDA_ADD_LIBRARY, but can be called manually when using CUDA_WRAP_SRCS
-     directly.  When called from CUDA_ADD_LIBRARY or CUDA_ADD_EXECUTABLE the
-     nvcc_flags passed in are the same as the flags passed in via the OPTIONS
-     argument.  The only nvcc flag added automatically is the bitness flag as
-     specified by CUDA_64_BIT_DEVICE_CODE.  Note that this is a function
-     instead of a macro.
-
-  CUDA_SELECT_NVCC_ARCH_FLAGS(out_variable [target_CUDA_architectures])
-  -- Selects GPU arch flags for nvcc based on target_CUDA_architectures
-     target_CUDA_architectures : Auto | Common | All | LIST(ARCH_AND_PTX ...)
-      - "Auto" detects local machine GPU compute arch at runtime.
-      - "Common" and "All" cover common and entire subsets of architectures
-     ARCH_AND_PTX : NAME | NUM.NUM | NUM.NUM(NUM.NUM) | NUM.NUM+PTX
-     NAME: Fermi Kepler Maxwell Kepler+Tegra Kepler+Tesla Maxwell+Tegra Pascal
-     NUM: Any number. Only those pairs are currently accepted by NVCC though:
-           2.0 2.1 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.2
-     Returns LIST of flags to be added to CUDA_NVCC_FLAGS in ${out_variable}
-     Additionally, sets ${out_variable}_readable to the resulting numeric list
-     Example:
-      CUDA_SELECT_NVCC_ARCH_FLAGS(ARCH_FLAGS 3.0 3.5+PTX 5.2(5.0) Maxwell)
-       LIST(APPEND CUDA_NVCC_FLAGS ${ARCH_FLAGS})
-
-     More info on CUDA architectures: https://en.wikipedia.org/wiki/CUDA
-     Note that this is a function instead of a macro.
-
-  CUDA_WRAP_SRCS ( cuda_target format generated_files file0 file1 ...
-                   [STATIC | SHARED | MODULE] [OPTIONS ...] )
-  -- This is where all the magic happens.  CUDA_ADD_EXECUTABLE,
-     CUDA_ADD_LIBRARY, CUDA_COMPILE, and CUDA_COMPILE_PTX all call this
-     function under the hood.
-
-     Given the list of files (file0 file1 ... fileN) this macro generates
-     custom commands that generate either PTX or linkable objects (use "PTX" or
-     "OBJ" for the format argument to switch).  Files that don't end with .cu
-     or have the HEADER_FILE_ONLY property are ignored.
-
-     The arguments passed in after OPTIONS are extra command line options to
-     give to nvcc.  You can also specify per configuration options by
-     specifying the name of the configuration followed by the options.  General
-     options must precede configuration specific options.  Not all
-     configurations need to be specified, only the ones provided will be used.
-
-        OPTIONS -DFLAG=2 "-DFLAG_OTHER=space in flag"
-        DEBUG -g
-        RELEASE --use_fast_math
-        RELWITHDEBINFO --use_fast_math;-g
-        MINSIZEREL --use_fast_math
-
-     For certain configurations (namely VS generating object files with
-     CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE set to ON), no generated file will
-     be produced for the given cuda file.  This is because when you add the
-     cuda file to Visual Studio it knows that this file produces an object file
-     and will link in the resulting object file automatically.
-
-     This script will also generate a separate cmake script that is used at
-     build time to invoke nvcc.  This is for several reasons.
-
-       1. nvcc can return negative numbers as return values which confuses
-       Visual Studio into thinking that the command succeeded.  The script now
-       checks the error codes and produces errors when there was a problem.
-
-       2. nvcc has been known to not delete incomplete results when it
-       encounters problems.  This confuses build systems into thinking the
-       target was generated when in fact an unusable file exists.  The script
-       now deletes the output files if there was an error.
-
-       3. By putting all the options that affect the build into a file and then
-       make the build rule dependent on the file, the output files will be
-       regenerated when the options change.
-
-     This script also looks at optional arguments STATIC, SHARED, or MODULE to
-     determine when to target the object compilation for a shared library.
-     BUILD_SHARED_LIBS is ignored in CUDA_WRAP_SRCS, but it is respected in
-     CUDA_ADD_LIBRARY.  On some systems special flags are added for building
-     objects intended for shared libraries.  A preprocessor macro,
-     <target_name>_EXPORTS is defined when a shared library compilation is
-     detected.
-
-     Flags passed into add_definitions with -D or /D are passed along to nvcc.
-
-
-
-The script defines the following variables::
-
-  CUDA_VERSION_MAJOR    -- The major version of cuda as reported by nvcc.
-  CUDA_VERSION_MINOR    -- The minor version.
-  CUDA_VERSION
-  CUDA_VERSION_STRING   -- CUDA_VERSION_MAJOR.CUDA_VERSION_MINOR
-  CUDA_HAS_FP16         -- Whether a short float (float16,fp16) is supported.
-
-  CUDA_TOOLKIT_ROOT_DIR -- Path to the CUDA Toolkit (defined if not set).
-  CUDA_SDK_ROOT_DIR     -- Path to the CUDA SDK.  Use this to find files in the
-                           SDK.  This script will not directly support finding
-                           specific libraries or headers, as that isn't
-                           supported by NVIDIA.  If you want to change
-                           libraries when the path changes see the
-                           FindCUDA.cmake script for an example of how to clear
-                           these variables.  There are also examples of how to
-                           use the CUDA_SDK_ROOT_DIR to locate headers or
-                           libraries, if you so choose (at your own risk).
-  CUDA_INCLUDE_DIRS     -- Include directory for cuda headers.  Added automatically
-                           for CUDA_ADD_EXECUTABLE and CUDA_ADD_LIBRARY.
-  CUDA_LIBRARIES        -- Cuda RT library.
-  CUDA_CUFFT_LIBRARIES  -- Device or emulation library for the Cuda FFT
-                           implementation (alternative to:
-                           CUDA_ADD_CUFFT_TO_TARGET macro)
-  CUDA_CUBLAS_LIBRARIES -- Device or emulation library for the Cuda BLAS
-                           implementation (alternative to:
-                           CUDA_ADD_CUBLAS_TO_TARGET macro).
-  CUDA_cudart_static_LIBRARY -- Statically linkable cuda runtime library.
-                                Only available for CUDA version 5.5+
-  CUDA_cudadevrt_LIBRARY -- Device runtime library.
-                            Required for separable compilation.
-  CUDA_cupti_LIBRARY    -- CUDA Profiling Tools Interface library.
-                           Only available for CUDA version 4.0+.
-  CUDA_curand_LIBRARY   -- CUDA Random Number Generation library.
-                           Only available for CUDA version 3.2+.
-  CUDA_cusolver_LIBRARY -- CUDA Direct Solver library.
-                           Only available for CUDA version 7.0+.
-  CUDA_cusparse_LIBRARY -- CUDA Sparse Matrix library.
-                           Only available for CUDA version 3.2+.
-  CUDA_npp_LIBRARY      -- NVIDIA Performance Primitives lib.
-                           Only available for CUDA version 4.0+.
-  CUDA_nppc_LIBRARY     -- NVIDIA Performance Primitives lib (core).
-                           Only available for CUDA version 5.5+.
-  CUDA_nppi_LIBRARY     -- NVIDIA Performance Primitives lib (image processing).
-                           Only available for CUDA version 5.5 - 8.0.
-  CUDA_nppial_LIBRARY   -- NVIDIA Performance Primitives lib (image processing).
-                           Only available for CUDA version 9.0.
-  CUDA_nppicc_LIBRARY   -- NVIDIA Performance Primitives lib (image processing).
-                           Only available for CUDA version 9.0.
-  CUDA_nppicom_LIBRARY  -- NVIDIA Performance Primitives lib (image processing).
-                           Only available for CUDA version 9.0 - 10.2.
-                           Replaced by nvjpeg.
-  CUDA_nppidei_LIBRARY  -- NVIDIA Performance Primitives lib (image processing).
-                           Only available for CUDA version 9.0.
-  CUDA_nppif_LIBRARY    -- NVIDIA Performance Primitives lib (image processing).
-                           Only available for CUDA version 9.0.
-  CUDA_nppig_LIBRARY    -- NVIDIA Performance Primitives lib (image processing).
-                           Only available for CUDA version 9.0.
-  CUDA_nppim_LIBRARY    -- NVIDIA Performance Primitives lib (image processing).
-                           Only available for CUDA version 9.0.
-  CUDA_nppist_LIBRARY   -- NVIDIA Performance Primitives lib (image processing).
-                           Only available for CUDA version 9.0.
-  CUDA_nppisu_LIBRARY   -- NVIDIA Performance Primitives lib (image processing).
-                           Only available for CUDA version 9.0.
-  CUDA_nppitc_LIBRARY   -- NVIDIA Performance Primitives lib (image processing).
-                           Only available for CUDA version 9.0.
-  CUDA_npps_LIBRARY     -- NVIDIA Performance Primitives lib (signal processing).
-                           Only available for CUDA version 5.5+.
-  CUDA_nvcuvenc_LIBRARY -- CUDA Video Encoder library.
-                           Only available for CUDA version 3.2+.
-                           Windows only.
-  CUDA_nvcuvid_LIBRARY  -- CUDA Video Decoder library.
-                           Only available for CUDA version 3.2+.
-                           Windows only.
-  CUDA_nvToolsExt_LIBRARY
-                        -- NVIDA CUDA Tools Extension library.
-                           Available for CUDA version 5+.
-  CUDA_OpenCL_LIBRARY   -- NVIDA CUDA OpenCL library.
-                           Available for CUDA version 5+.
-
-#]=======================================================================]
-
-#   James Bigler, NVIDIA Corp (nvidia.com - jbigler)
-#   Abe Stephens, SCI Institute -- http://www.sci.utah.edu/~abe/FindCuda.html
-#
-#   Copyright (c) 2008 - 2009 NVIDIA Corporation.  All rights reserved.
-#
-#   Copyright (c) 2007-2009
-#   Scientific Computing and Imaging Institute, University of Utah
-#
-#   This code is licensed under the MIT License.  See the FindCUDA.cmake script
-#   for the text of the license.
-
-# The MIT License
-#
-# License for the specific language governing rights and limitations under
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-#
-###############################################################################
-
-# FindCUDA.cmake
-
-# This macro helps us find the location of helper files we will need the full path to
-macro(CUDA_FIND_HELPER_FILE _name _extension)
-  set(_full_name "${_name}.${_extension}")
-  # CMAKE_CURRENT_LIST_FILE contains the full path to the file currently being
-  # processed.  Using this variable, we can pull out the current path, and
-  # provide a way to get access to the other files we need local to here.
-  get_filename_component(CMAKE_CURRENT_LIST_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
-  set(CUDA_${_name} "${CMAKE_CURRENT_LIST_DIR}/FindCUDA/${_full_name}")
-  if(NOT EXISTS "${CUDA_${_name}}")
-    set(error_message "${_full_name} not found in ${CMAKE_CURRENT_LIST_DIR}/FindCUDA")
-    if(CUDA_FIND_REQUIRED)
-      message(FATAL_ERROR "${error_message}")
-    else()
-      if(NOT CUDA_FIND_QUIETLY)
-        message(STATUS "${error_message}")
-      endif()
-    endif()
-  endif()
-  # Set this variable as internal, so the user isn't bugged with it.
-  set(CUDA_${_name} ${CUDA_${_name}} CACHE INTERNAL "Location of ${_full_name}" FORCE)
-endmacro()
-
-#####################################################################
-## CUDA_INCLUDE_NVCC_DEPENDENCIES
-##
-
-# So we want to try and include the dependency file if it exists.  If
-# it doesn't exist then we need to create an empty one, so we can
-# include it.
-
-# If it does exist, then we need to check to see if all the files it
-# depends on exist.  If they don't then we should clear the dependency
-# file and regenerate it later.  This covers the case where a header
-# file has disappeared or moved.
-
-macro(CUDA_INCLUDE_NVCC_DEPENDENCIES dependency_file)
-  set(CUDA_NVCC_DEPEND)
-  set(CUDA_NVCC_DEPEND_REGENERATE FALSE)
-
-
-  # Include the dependency file.  Create it first if it doesn't exist .  The
-  # INCLUDE puts a dependency that will force CMake to rerun and bring in the
-  # new info when it changes.  DO NOT REMOVE THIS (as I did and spent a few
-  # hours figuring out why it didn't work.
-  if(NOT EXISTS ${dependency_file})
-    file(WRITE ${dependency_file} "#FindCUDA.cmake generated file.  Do not edit.\n")
-  endif()
-  # Always include this file to force CMake to run again next
-  # invocation and rebuild the dependencies.
-  #message("including dependency_file = ${dependency_file}")
-  include(${dependency_file})
-
-  # Now we need to verify the existence of all the included files
-  # here.  If they aren't there we need to just blank this variable and
-  # make the file regenerate again.
-#   if(DEFINED CUDA_NVCC_DEPEND)
-#     message("CUDA_NVCC_DEPEND set")
-#   else()
-#     message("CUDA_NVCC_DEPEND NOT set")
-#   endif()
-  if(CUDA_NVCC_DEPEND)
-    #message("CUDA_NVCC_DEPEND found")
-    foreach(f ${CUDA_NVCC_DEPEND})
-      # message("searching for ${f}")
-      if(NOT EXISTS ${f})
-        #message("file ${f} not found")
-        set(CUDA_NVCC_DEPEND_REGENERATE TRUE)
-      endif()
-    endforeach()
-  else()
-    #message("CUDA_NVCC_DEPEND false")
-    # No dependencies, so regenerate the file.
-    set(CUDA_NVCC_DEPEND_REGENERATE TRUE)
-  endif()
-
-  #message("CUDA_NVCC_DEPEND_REGENERATE = ${CUDA_NVCC_DEPEND_REGENERATE}")
-  # No incoming dependencies, so we need to generate them.  Make the
-  # output depend on the dependency file itself, which should cause the
-  # rule to re-run.
-  if(CUDA_NVCC_DEPEND_REGENERATE)
-    set(CUDA_NVCC_DEPEND ${dependency_file})
-    #message("Generating an empty dependency_file: ${dependency_file}")
-    file(WRITE ${dependency_file} "#FindCUDA.cmake generated file.  Do not edit.\n")
-  endif()
-
-endmacro()
-
-###############################################################################
-###############################################################################
-# Setup variables' defaults
-###############################################################################
-###############################################################################
-
-# Allow the user to specify if the device code is supposed to be 32 or 64 bit.
-if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-  set(CUDA_64_BIT_DEVICE_CODE_DEFAULT ON)
-else()
-  set(CUDA_64_BIT_DEVICE_CODE_DEFAULT OFF)
-endif()
-option(CUDA_64_BIT_DEVICE_CODE "Compile device code in 64 bit mode" ${CUDA_64_BIT_DEVICE_CODE_DEFAULT})
-
-# Attach the build rule to the source file in VS.  This option
-option(CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE "Attach the build rule to the CUDA source file.  Enable only when the CUDA source file is added to at most one target." ON)
-
-# Prints out extra information about the cuda file during compilation
-option(CUDA_BUILD_CUBIN "Generate and parse .cubin files in Device mode." OFF)
-
-# Set whether we are using emulation or device mode.
-option(CUDA_BUILD_EMULATION "Build in Emulation mode" OFF)
-
-# Where to put the generated output.
-set(CUDA_GENERATED_OUTPUT_DIR "" CACHE PATH "Directory to put all the output files.  If blank it will default to the CMAKE_CURRENT_BINARY_DIR")
-
-# Parse HOST_COMPILATION mode.
-option(CUDA_HOST_COMPILATION_CPP "Generated file extension" ON)
-
-# Extra user settable flags
-cmake_initialize_per_config_variable(CUDA_NVCC_FLAGS "Semi-colon delimit multiple arguments.")
-
-if(DEFINED ENV{CUDAHOSTCXX})
-  set(CUDA_HOST_COMPILER "$ENV{CUDAHOSTCXX}" CACHE FILEPATH "Host side compiler used by NVCC")
-elseif(CMAKE_GENERATOR MATCHES "Visual Studio")
-  set(_CUDA_MSVC_HOST_COMPILER "$(VCInstallDir)Tools/MSVC/$(VCToolsVersion)/bin/Host$(Platform)/$(PlatformTarget)")
-  if(MSVC_VERSION LESS 1910)
-    set(_CUDA_MSVC_HOST_COMPILER "$(VCInstallDir)bin")
-  endif()
-
-  set(CUDA_HOST_COMPILER "${_CUDA_MSVC_HOST_COMPILER}" CACHE FILEPATH "Host side compiler used by NVCC")
-
-else()
-  if(APPLE
-      AND "${CMAKE_C_COMPILER_ID}" MATCHES "Clang"
-      AND "${CMAKE_C_COMPILER}" MATCHES "/cc$")
-    # Using cc which is symlink to clang may let NVCC think it is GCC and issue
-    # unhandled -dumpspecs option to clang. Also in case neither
-    # CMAKE_C_COMPILER is defined (project does not use C language) nor
-    # CUDA_HOST_COMPILER is specified manually we should skip -ccbin and let
-    # nvcc use its own default C compiler.
-    # Only care about this on APPLE with clang to avoid
-    # following symlinks to things like ccache
-    if(DEFINED CMAKE_C_COMPILER AND NOT DEFINED CUDA_HOST_COMPILER)
-      get_filename_component(c_compiler_realpath "${CMAKE_C_COMPILER}" REALPATH)
-      # if the real path does not end up being clang then
-      # go back to using CMAKE_C_COMPILER
-      if(NOT "${c_compiler_realpath}" MATCHES "/clang$")
-        set(c_compiler_realpath "${CMAKE_C_COMPILER}")
-      endif()
-    else()
-      set(c_compiler_realpath "")
-    endif()
-    set(CUDA_HOST_COMPILER "${c_compiler_realpath}" CACHE FILEPATH "Host side compiler used by NVCC")
-  elseif(MSVC AND "${CMAKE_C_COMPILER}" MATCHES "clcache|sccache")
-    # NVCC does not think it will work if it is passed clcache.exe or sccache.exe
-    # as the host compiler, which means that builds with CC=cl.exe won't work.
-    # Best to just feed it whatever the actual cl.exe is as the host compiler.
-    set(CUDA_HOST_COMPILER "cl.exe" CACHE FILEPATH "Host side compiler used by NVCC")
-  else()
-    set(CUDA_HOST_COMPILER "${CMAKE_C_COMPILER}"
-      CACHE FILEPATH "Host side compiler used by NVCC")
-  endif()
-endif()
-
-# Propagate the host flags to the host compiler via -Xcompiler
-option(CUDA_PROPAGATE_HOST_FLAGS "Propagate C/CXX_FLAGS and friends to the host compiler via -Xcompile" ON)
-
-# Enable CUDA_SEPARABLE_COMPILATION
-option(CUDA_SEPARABLE_COMPILATION "Compile CUDA objects with separable compilation enabled.  Requires CUDA 5.0+" OFF)
-
-# Specifies whether the commands used when compiling the .cu file will be printed out.
-option(CUDA_VERBOSE_BUILD "Print out the commands run while compiling the CUDA source file.  With the Makefile generator this defaults to VERBOSE variable specified on the command line, but can be forced on with this option." OFF)
-
-mark_as_advanced(
-  CUDA_64_BIT_DEVICE_CODE
-  CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE
-  CUDA_GENERATED_OUTPUT_DIR
-  CUDA_HOST_COMPILATION_CPP
-  CUDA_NVCC_FLAGS
-  CUDA_PROPAGATE_HOST_FLAGS
-  CUDA_BUILD_CUBIN
-  CUDA_BUILD_EMULATION
-  CUDA_VERBOSE_BUILD
-  CUDA_SEPARABLE_COMPILATION
-  )
-
-# Single config generators like Makefiles or Ninja don't usually have
-# CMAKE_CONFIGURATION_TYPES defined (but note that it can be defined if set by
-# projects or developers). Even CMAKE_BUILD_TYPE might not be defined for
-# single config generators (and should not be defined for multi-config
-# generators). To ensure we get a complete superset of all possible
-# configurations, we combine CMAKE_CONFIGURATION_TYPES, CMAKE_BUILD_TYPE and
-# all of the standard configurations, then weed out duplicates with
-# list(REMOVE_DUPLICATES). Looping over the unique set then ensures we have
-# each configuration-specific set of nvcc flags defined and marked as advanced.
-set(CUDA_configuration_types ${CMAKE_CONFIGURATION_TYPES} ${CMAKE_BUILD_TYPE} Debug MinSizeRel Release RelWithDebInfo)
-list(REMOVE_DUPLICATES CUDA_configuration_types)
-
-###############################################################################
-###############################################################################
-# Locate CUDA, Set Build Type, etc.
-###############################################################################
-###############################################################################
-
-macro(cuda_unset_include_and_libraries)
-  unset(CUDA_TOOLKIT_INCLUDE CACHE)
-  unset(CUDA_CUDART_LIBRARY CACHE)
-  unset(CUDA_CUDA_LIBRARY CACHE)
-  # Make sure you run this before you unset CUDA_VERSION.
-  if(CUDA_VERSION VERSION_EQUAL "3.0")
-    # This only existed in the 3.0 version of the CUDA toolkit
-    unset(CUDA_CUDARTEMU_LIBRARY CACHE)
-  endif()
-  unset(CUDA_cudart_static_LIBRARY CACHE)
-  unset(CUDA_cudadevrt_LIBRARY CACHE)
-  unset(CUDA_cublas_LIBRARY CACHE)
-  unset(CUDA_cublas_device_LIBRARY CACHE)
-  unset(CUDA_cublasemu_LIBRARY CACHE)
-  unset(CUDA_cufft_LIBRARY CACHE)
-  unset(CUDA_cufftemu_LIBRARY CACHE)
-  unset(CUDA_cupti_LIBRARY CACHE)
-  unset(CUDA_curand_LIBRARY CACHE)
-  unset(CUDA_cusolver_LIBRARY CACHE)
-  unset(CUDA_cusparse_LIBRARY CACHE)
-  unset(CUDA_npp_LIBRARY CACHE)
-  unset(CUDA_nppc_LIBRARY CACHE)
-  unset(CUDA_nppi_LIBRARY CACHE)
-  unset(CUDA_npps_LIBRARY CACHE)
-  unset(CUDA_nvcuvenc_LIBRARY CACHE)
-  unset(CUDA_nvcuvid_LIBRARY CACHE)
-  unset(CUDA_nvToolsExt_LIBRARY CACHE)
-  unset(CUDA_OpenCL_LIBRARY CACHE)
-  unset(CUDA_GPU_DETECT_OUTPUT CACHE)
-endmacro()
-
-# Check to see if the CUDA_TOOLKIT_ROOT_DIR and CUDA_SDK_ROOT_DIR have changed,
-# if they have then clear the cache variables, so that will be detected again.
-if(NOT "${CUDA_TOOLKIT_ROOT_DIR}" STREQUAL "${CUDA_TOOLKIT_ROOT_DIR_INTERNAL}")
-  unset(CUDA_TOOLKIT_TARGET_DIR CACHE)
-  unset(CUDA_NVCC_EXECUTABLE CACHE)
-  cuda_unset_include_and_libraries()
-  unset(CUDA_VERSION CACHE)
-endif()
-
-if(NOT "${CUDA_TOOLKIT_TARGET_DIR}" STREQUAL "${CUDA_TOOLKIT_TARGET_DIR_INTERNAL}")
-  cuda_unset_include_and_libraries()
-endif()
-
-#
-#  End of unset()
-#
-
-#
-#  Start looking for things
-#
-
-# Search for the cuda distribution.
-if(NOT CUDA_TOOLKIT_ROOT_DIR AND NOT CMAKE_CROSSCOMPILING)
-  # Search in the CUDA_BIN_PATH first.
-  find_program(CUDA_TOOLKIT_ROOT_DIR_NVCC
-    NAMES nvcc nvcc.exe
-    PATHS
-      ENV CUDA_TOOLKIT_ROOT
-      ENV CUDA_PATH
-      ENV CUDA_BIN_PATH
-    PATH_SUFFIXES bin bin64
-    DOC "Toolkit location."
-    NO_DEFAULT_PATH
-    )
-
-  # Now search default paths
-  find_program(CUDA_TOOLKIT_ROOT_DIR_NVCC
-    NAMES nvcc nvcc.exe
-    PATHS /opt/cuda/bin
-    PATH_SUFFIXES cuda/bin
-    DOC "Toolkit location."
-    )
-
-  if (CUDA_TOOLKIT_ROOT_DIR_NVCC)
-    get_filename_component(CUDA_TOOLKIT_ROOT_DIR_NVCC_PAR "${CUDA_TOOLKIT_ROOT_DIR_NVCC}" DIRECTORY)
-    get_filename_component(CUDA_TOOLKIT_ROOT_DIR "${CUDA_TOOLKIT_ROOT_DIR_NVCC_PAR}" DIRECTORY CACHE)
-    string(REGEX REPLACE "[/\\\\]?bin[64]*[/\\\\]?$" "" CUDA_TOOLKIT_ROOT_DIR ${CUDA_TOOLKIT_ROOT_DIR})
-    # We need to force this back into the cache.
-    set(CUDA_TOOLKIT_ROOT_DIR ${CUDA_TOOLKIT_ROOT_DIR} CACHE PATH "Toolkit location." FORCE)
-    set(CUDA_TOOLKIT_TARGET_DIR ${CUDA_TOOLKIT_ROOT_DIR})
-  endif()
-  unset(CUDA_TOOLKIT_ROOT_DIR_NVCC CACHE)
-
-  if (NOT EXISTS ${CUDA_TOOLKIT_ROOT_DIR})
-    if(CUDA_FIND_REQUIRED)
-      message(FATAL_ERROR "Specify CUDA_TOOLKIT_ROOT_DIR")
-    elseif(NOT CUDA_FIND_QUIETLY)
-      message("CUDA_TOOLKIT_ROOT_DIR not found or specified")
-    endif()
-  endif ()
-endif ()
-
-if(CMAKE_CROSSCOMPILING)
-  SET (CUDA_TOOLKIT_ROOT $ENV{CUDA_TOOLKIT_ROOT})
-  if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a")
-    # Support for NVPACK
-    set (CUDA_TOOLKIT_TARGET_NAME "armv7-linux-androideabi")
-  elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
-    # Support for arm cross compilation
-    set(CUDA_TOOLKIT_TARGET_NAME "armv7-linux-gnueabihf")
-  elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
-    # Support for aarch64 cross compilation
-    if (ANDROID_ARCH_NAME STREQUAL "arm64")
-      set(CUDA_TOOLKIT_TARGET_NAME "aarch64-linux-androideabi")
-    else()
-      set(CUDA_TOOLKIT_TARGET_NAME "aarch64-linux")
-    endif (ANDROID_ARCH_NAME STREQUAL "arm64")
-  endif()
-
-  if (EXISTS "${CUDA_TOOLKIT_ROOT}/targets/${CUDA_TOOLKIT_TARGET_NAME}")
-    set(CUDA_TOOLKIT_TARGET_DIR "${CUDA_TOOLKIT_ROOT}/targets/${CUDA_TOOLKIT_TARGET_NAME}" CACHE PATH "CUDA Toolkit target location.")
-    SET (CUDA_TOOLKIT_ROOT_DIR ${CUDA_TOOLKIT_ROOT})
-    mark_as_advanced(CUDA_TOOLKIT_TARGET_DIR)
-  endif()
-
-  # add known CUDA targetr root path to the set of directories we search for programs, libraries and headers
-  set( CMAKE_FIND_ROOT_PATH "${CUDA_TOOLKIT_TARGET_DIR};${CMAKE_FIND_ROOT_PATH}")
-  macro( cuda_find_host_program )
-    if (COMMAND find_host_program)
-      find_host_program( ${ARGN} )
-    else()
-      find_program( ${ARGN} )
-    endif()
-  endmacro()
-else()
-  # for non-cross-compile, find_host_program == find_program and CUDA_TOOLKIT_TARGET_DIR == CUDA_TOOLKIT_ROOT_DIR
-  macro( cuda_find_host_program )
-    find_program( ${ARGN} )
-  endmacro()
-  SET (CUDA_TOOLKIT_TARGET_DIR ${CUDA_TOOLKIT_ROOT_DIR})
-endif()
-
-
-# CUDA_NVCC_EXECUTABLE
-if(DEFINED ENV{CUDA_NVCC_EXECUTABLE})
-  set(CUDA_NVCC_EXECUTABLE "$ENV{CUDA_NVCC_EXECUTABLE}" CACHE FILEPATH "The CUDA compiler")
-else()
-  cuda_find_host_program(CUDA_NVCC_EXECUTABLE
-    NAMES nvcc
-    PATHS "${CUDA_TOOLKIT_ROOT_DIR}"
-    ENV CUDA_PATH
-    ENV CUDA_BIN_PATH
-    PATH_SUFFIXES bin bin64
-    NO_DEFAULT_PATH
-    )
-  # Search default search paths, after we search our own set of paths.
-  cuda_find_host_program(CUDA_NVCC_EXECUTABLE nvcc)
-endif()
-mark_as_advanced(CUDA_NVCC_EXECUTABLE)
-
-if(CUDA_NVCC_EXECUTABLE AND NOT CUDA_VERSION)
-  # Compute the version.
-  execute_process (COMMAND ${CUDA_NVCC_EXECUTABLE} "--version" OUTPUT_VARIABLE NVCC_OUT)
-  string(REGEX REPLACE ".*release ([0-9]+)\\.([0-9]+).*" "\\1" CUDA_VERSION_MAJOR ${NVCC_OUT})
-  string(REGEX REPLACE ".*release ([0-9]+)\\.([0-9]+).*" "\\2" CUDA_VERSION_MINOR ${NVCC_OUT})
-  set(CUDA_VERSION "${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}" CACHE STRING "Version of CUDA as computed from nvcc.")
-  mark_as_advanced(CUDA_VERSION)
-else()
-  # Need to set these based off of the cached value
-  string(REGEX REPLACE "([0-9]+)\\.([0-9]+).*" "\\1" CUDA_VERSION_MAJOR "${CUDA_VERSION}")
-  string(REGEX REPLACE "([0-9]+)\\.([0-9]+).*" "\\2" CUDA_VERSION_MINOR "${CUDA_VERSION}")
-endif()
-
-
-# Always set this convenience variable
-set(CUDA_VERSION_STRING "${CUDA_VERSION}")
-
-# CUDA_TOOLKIT_INCLUDE
-find_path(CUDA_TOOLKIT_INCLUDE
-  device_functions.h # Header included in toolkit
-  PATHS ${CUDA_TOOLKIT_TARGET_DIR}
-  ENV CUDA_PATH
-  ENV CUDA_INC_PATH
-  PATH_SUFFIXES include
-  NO_DEFAULT_PATH
-  )
-# Search default search paths, after we search our own set of paths.
-find_path(CUDA_TOOLKIT_INCLUDE device_functions.h)
-mark_as_advanced(CUDA_TOOLKIT_INCLUDE)
-
-if (CUDA_VERSION VERSION_GREATER "7.0" OR EXISTS "${CUDA_TOOLKIT_INCLUDE}/cuda_fp16.h")
-  set(CUDA_HAS_FP16 TRUE)
-else()
-  set(CUDA_HAS_FP16 FALSE)
-endif()
-
-# Set the user list of include dir to nothing to initialize it.
-set (CUDA_NVCC_INCLUDE_DIRS_USER "")
-set (CUDA_INCLUDE_DIRS ${CUDA_TOOLKIT_INCLUDE})
-
-macro(cuda_find_library_local_first_with_path_ext _var _names _doc _path_ext )
-  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-    # CUDA 3.2+ on Windows moved the library directories, so we need the new
-    # and old paths.
-    set(_cuda_64bit_lib_dir "${_path_ext}lib/x64" "${_path_ext}lib64" "${_path_ext}libx64" )
-  endif()
-  # CUDA 3.2+ on Windows moved the library directories, so we need to new
-  # (lib/Win32) and the old path (lib).
-  find_library(${_var}
-    NAMES ${_names}
-    PATHS "${CUDA_TOOLKIT_TARGET_DIR}"
-    ENV CUDA_PATH
-    ENV CUDA_LIB_PATH
-    PATH_SUFFIXES ${_cuda_64bit_lib_dir} "${_path_ext}lib/Win32" "${_path_ext}lib" "${_path_ext}libWin32"
-    DOC ${_doc}
-    NO_DEFAULT_PATH
-    )
-  if (NOT CMAKE_CROSSCOMPILING)
-    # Search default search paths, after we search our own set of paths.
-    find_library(${_var}
-      NAMES ${_names}
-      PATHS "/usr/lib/nvidia-current"
-      DOC ${_doc}
-      )
-  endif()
-endmacro()
-
-macro(cuda_find_library_local_first _var _names _doc)
-  cuda_find_library_local_first_with_path_ext( "${_var}" "${_names}" "${_doc}" "" )
-endmacro()
-
-macro(find_library_local_first _var _names _doc )
-  cuda_find_library_local_first( "${_var}" "${_names}" "${_doc}" "" )
-endmacro()
-
-
-# CUDA_LIBRARIES
-cuda_find_library_local_first(CUDA_CUDART_LIBRARY cudart "\"cudart\" library")
-if(CUDA_VERSION VERSION_EQUAL "3.0")
-  # The cudartemu library only existed for the 3.0 version of CUDA.
-  cuda_find_library_local_first(CUDA_CUDARTEMU_LIBRARY cudartemu "\"cudartemu\" library")
-  mark_as_advanced(
-    CUDA_CUDARTEMU_LIBRARY
-    )
-endif()
-
-if(NOT CUDA_VERSION VERSION_LESS "5.5")
-  cuda_find_library_local_first(CUDA_cudart_static_LIBRARY cudart_static "static CUDA runtime library")
-  mark_as_advanced(CUDA_cudart_static_LIBRARY)
-endif()
-
-
-if(CUDA_cudart_static_LIBRARY)
-  # If static cudart available, use it by default, but provide a user-visible option to disable it.
-  option(CUDA_USE_STATIC_CUDA_RUNTIME "Use the static version of the CUDA runtime library if available" ON)
-else()
-  # If not available, silently disable the option.
-  set(CUDA_USE_STATIC_CUDA_RUNTIME OFF CACHE INTERNAL "")
-endif()
-
-if(CUDA_USE_STATIC_CUDA_RUNTIME)
-  set(CUDA_CUDART_LIBRARY_VAR CUDA_cudart_static_LIBRARY)
-else()
-  set(CUDA_CUDART_LIBRARY_VAR CUDA_CUDART_LIBRARY)
-endif()
-
-if(NOT CUDA_VERSION VERSION_LESS "5.0")
-  cuda_find_library_local_first(CUDA_cudadevrt_LIBRARY cudadevrt "\"cudadevrt\" library")
-  mark_as_advanced(CUDA_cudadevrt_LIBRARY)
-endif()
-
-if(CUDA_USE_STATIC_CUDA_RUNTIME)
-  if(UNIX)
-    # Check for the dependent libraries.
-
-    # Many of the FindXYZ CMake comes with makes use of try_compile with int main(){return 0;}
-    # as the source file.  Unfortunately this causes a warning with -Wstrict-prototypes and
-    # -Werror causes the try_compile to fail.  We will just temporarily disable other flags
-    # when doing the find_package command here.
-    set(_cuda_cmake_c_flags ${CMAKE_C_FLAGS})
-    set(CMAKE_C_FLAGS "-fPIC")
-    find_package(Threads REQUIRED)
-    set(CMAKE_C_FLAGS ${_cuda_cmake_c_flags})
-
-    if(NOT APPLE)
-      #On Linux, you must link against librt when using the static cuda runtime.
-      find_library(CUDA_rt_LIBRARY rt)
-      if (NOT CUDA_rt_LIBRARY)
-        message(WARNING "Expecting to find librt for libcudart_static, but didn't find it.")
-      endif()
-    endif()
-  endif()
-endif()
-
-# CUPTI library showed up in cuda toolkit 4.0
-if(NOT CUDA_VERSION VERSION_LESS "4.0")
-  cuda_find_library_local_first_with_path_ext(CUDA_cupti_LIBRARY cupti "\"cupti\" library" "extras/CUPTI/")
-  mark_as_advanced(CUDA_cupti_LIBRARY)
-endif()
-
-# Set the CUDA_LIBRARIES variable.  This is the set of stuff to link against if you are
-# using the CUDA runtime.  For the dynamic version of the runtime, most of the
-# dependencies are brough in, but for the static version there are additional libraries
-# and linker commands needed.
-# Initialize to empty
-set(CUDA_LIBRARIES)
-
-# If we are using emulation mode and we found the cudartemu library then use
-# that one instead of cudart.
-if(CUDA_BUILD_EMULATION AND CUDA_CUDARTEMU_LIBRARY)
-  list(APPEND CUDA_LIBRARIES ${CUDA_CUDARTEMU_LIBRARY})
-elseif(CUDA_USE_STATIC_CUDA_RUNTIME AND CUDA_cudart_static_LIBRARY)
-  list(APPEND CUDA_LIBRARIES ${CUDA_cudart_static_LIBRARY})
-  if (TARGET Threads::Threads)
-    list(APPEND CUDA_LIBRARIES Threads::Threads)
-  endif()
-  list(APPEND CUDA_LIBRARIES ${CMAKE_DL_LIBS})
-  if (CUDA_rt_LIBRARY)
-    list(APPEND CUDA_LIBRARIES ${CUDA_rt_LIBRARY})
-  endif()
-  if(APPLE)
-    # We need to add the default path to the driver (libcuda.dylib) as an rpath, so that
-    # the static cuda runtime can find it at runtime.
-    list(APPEND CUDA_LIBRARIES -Wl,-rpath,/usr/local/cuda/lib)
-  endif()
-else()
-  list(APPEND CUDA_LIBRARIES ${CUDA_CUDART_LIBRARY})
-endif()
-
-# 1.1 toolkit on linux doesn't appear to have a separate library on
-# some platforms.
-cuda_find_library_local_first(CUDA_CUDA_LIBRARY cuda "\"cuda\" library (older versions only).")
-
-mark_as_advanced(
-  CUDA_CUDA_LIBRARY
-  CUDA_CUDART_LIBRARY
-  )
-
-#######################
-# Look for some of the toolkit helper libraries
-macro(FIND_CUDA_HELPER_LIBS _name)
-  cuda_find_library_local_first(CUDA_${_name}_LIBRARY ${_name} "\"${_name}\" library")
-  mark_as_advanced(CUDA_${_name}_LIBRARY)
-endmacro()
-
-#######################
-# Disable emulation for v3.1 onward
-if(CUDA_VERSION VERSION_GREATER "3.0")
-  if(CUDA_BUILD_EMULATION)
-    message(FATAL_ERROR "CUDA_BUILD_EMULATION is not supported in version 3.1 and onwards.  You must disable it to proceed.  You have version ${CUDA_VERSION}.")
-  endif()
-endif()
-
-# Search for additional CUDA toolkit libraries.
-if(CUDA_VERSION VERSION_LESS "3.1")
-  # Emulation libraries aren't available in version 3.1 onward.
-  find_cuda_helper_libs(cufftemu)
-  find_cuda_helper_libs(cublasemu)
-endif()
-find_cuda_helper_libs(cufft)
-find_cuda_helper_libs(cublas)
-if(NOT CUDA_VERSION VERSION_LESS "3.2")
-  # cusparse showed up in version 3.2
-  find_cuda_helper_libs(cusparse)
-  find_cuda_helper_libs(curand)
-  if (WIN32)
-    find_cuda_helper_libs(nvcuvenc)
-    find_cuda_helper_libs(nvcuvid)
-  endif()
-endif()
-if(CUDA_VERSION VERSION_GREATER "5.0" AND CUDA_VERSION VERSION_LESS "9.2")
-  # In CUDA 9.2 cublas_device was deprecated
-  find_cuda_helper_libs(cublas_device)
-endif()
-
-if(NOT CUDA_VERSION VERSION_LESS "5.0")
-  find_cuda_helper_libs(nvToolsExt)
-  find_cuda_helper_libs(OpenCL)
-endif()
-
-if(NOT CUDA_VERSION VERSION_LESS "9.0")
-  # In CUDA 9.0 NPP was nppi was removed
-  find_cuda_helper_libs(nppc)
-  find_cuda_helper_libs(nppial)
-  find_cuda_helper_libs(nppicc)
-  if(CUDA_VERSION VERSION_LESS "11.0")
-    find_cuda_helper_libs(nppicom)
-  endif()
-  find_cuda_helper_libs(nppidei)
-  find_cuda_helper_libs(nppif)
-  find_cuda_helper_libs(nppig)
-  find_cuda_helper_libs(nppim)
-  find_cuda_helper_libs(nppist)
-  find_cuda_helper_libs(nppisu)
-  find_cuda_helper_libs(nppitc)
-  find_cuda_helper_libs(npps)
-  set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppial_LIBRARY};${CUDA_nppicc_LIBRARY};${CUDA_nppicom_LIBRARY};${CUDA_nppidei_LIBRARY};${CUDA_nppif_LIBRARY};${CUDA_nppig_LIBRARY};${CUDA_nppim_LIBRARY};${CUDA_nppist_LIBRARY};${CUDA_nppisu_LIBRARY};${CUDA_nppitc_LIBRARY};${CUDA_npps_LIBRARY}")
-elseif(CUDA_VERSION VERSION_GREATER "5.0")
-  # In CUDA 5.5 NPP was split into 3 separate libraries.
-  find_cuda_helper_libs(nppc)
-  find_cuda_helper_libs(nppi)
-  find_cuda_helper_libs(npps)
-  set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppi_LIBRARY};${CUDA_npps_LIBRARY}")
-elseif(NOT CUDA_VERSION VERSION_LESS "4.0")
-  find_cuda_helper_libs(npp)
-endif()
-if(NOT CUDA_VERSION VERSION_LESS "7.0")
-  # cusolver showed up in version 7.0
-  find_cuda_helper_libs(cusolver)
-endif()
-
-if (CUDA_BUILD_EMULATION)
-  set(CUDA_CUFFT_LIBRARIES ${CUDA_cufftemu_LIBRARY})
-  set(CUDA_CUBLAS_LIBRARIES ${CUDA_cublasemu_LIBRARY})
-else()
-  set(CUDA_CUFFT_LIBRARIES ${CUDA_cufft_LIBRARY})
-  set(CUDA_CUBLAS_LIBRARIES ${CUDA_cublas_LIBRARY} ${CUDA_cublas_device_LIBRARY})
-endif()
-
-########################
-# Look for the SDK stuff.  As of CUDA 3.0 NVSDKCUDA_ROOT has been replaced with
-# NVSDKCOMPUTE_ROOT with the old CUDA C contents moved into the C subdirectory
-find_path(CUDA_SDK_ROOT_DIR common/inc/cutil.h
- HINTS
-  "$ENV{NVSDKCOMPUTE_ROOT}/C"
-  ENV NVSDKCUDA_ROOT
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\NVIDIA Corporation\\Installed Products\\NVIDIA SDK 10\\Compute;InstallDir]"
- PATHS
-  "/Developer/GPU\ Computing/C"
-  )
-
-# Keep the CUDA_SDK_ROOT_DIR first in order to be able to override the
-# environment variables.
-set(CUDA_SDK_SEARCH_PATH
-  "${CUDA_SDK_ROOT_DIR}"
-  "${CUDA_TOOLKIT_ROOT_DIR}/local/NVSDK0.2"
-  "${CUDA_TOOLKIT_ROOT_DIR}/NVSDK0.2"
-  "${CUDA_TOOLKIT_ROOT_DIR}/NV_CUDA_SDK"
-  "$ENV{HOME}/NVIDIA_CUDA_SDK"
-  "$ENV{HOME}/NVIDIA_CUDA_SDK_MACOSX"
-  "/Developer/CUDA"
-  )
-
-# Example of how to find an include file from the CUDA_SDK_ROOT_DIR
-
-# find_path(CUDA_CUT_INCLUDE_DIR
-#   cutil.h
-#   PATHS ${CUDA_SDK_SEARCH_PATH}
-#   PATH_SUFFIXES "common/inc"
-#   DOC "Location of cutil.h"
-#   NO_DEFAULT_PATH
-#   )
-# # Now search system paths
-# find_path(CUDA_CUT_INCLUDE_DIR cutil.h DOC "Location of cutil.h")
-
-# mark_as_advanced(CUDA_CUT_INCLUDE_DIR)
-
-
-# Example of how to find a library in the CUDA_SDK_ROOT_DIR
-
-# # cutil library is called cutil64 for 64 bit builds on windows.  We don't want
-# # to get these confused, so we are setting the name based on the word size of
-# # the build.
-
-# if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-#   set(cuda_cutil_name cutil64)
-# else()
-#   set(cuda_cutil_name cutil32)
-# endif()
-
-# find_library(CUDA_CUT_LIBRARY
-#   NAMES cutil ${cuda_cutil_name}
-#   PATHS ${CUDA_SDK_SEARCH_PATH}
-#   # The new version of the sdk shows up in common/lib, but the old one is in lib
-#   PATH_SUFFIXES "common/lib" "lib"
-#   DOC "Location of cutil library"
-#   NO_DEFAULT_PATH
-#   )
-# # Now search system paths
-# find_library(CUDA_CUT_LIBRARY NAMES cutil ${cuda_cutil_name} DOC "Location of cutil library")
-# mark_as_advanced(CUDA_CUT_LIBRARY)
-# set(CUDA_CUT_LIBRARIES ${CUDA_CUT_LIBRARY})
-
-
-
-#############################
-# Check for required components
-set(CUDA_FOUND TRUE)
-
-set(CUDA_TOOLKIT_ROOT_DIR_INTERNAL "${CUDA_TOOLKIT_ROOT_DIR}" CACHE INTERNAL
-  "This is the value of the last time CUDA_TOOLKIT_ROOT_DIR was set successfully." FORCE)
-set(CUDA_TOOLKIT_TARGET_DIR_INTERNAL "${CUDA_TOOLKIT_TARGET_DIR}" CACHE INTERNAL
-  "This is the value of the last time CUDA_TOOLKIT_TARGET_DIR was set successfully." FORCE)
-set(CUDA_SDK_ROOT_DIR_INTERNAL "${CUDA_SDK_ROOT_DIR}" CACHE INTERNAL
-  "This is the value of the last time CUDA_SDK_ROOT_DIR was set successfully." FORCE)
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-
-find_package_handle_standard_args(CUDA
-  REQUIRED_VARS
-    CUDA_TOOLKIT_ROOT_DIR
-    CUDA_NVCC_EXECUTABLE
-    CUDA_INCLUDE_DIRS
-    ${CUDA_CUDART_LIBRARY_VAR}
-  VERSION_VAR
-    CUDA_VERSION
-  )
-
-
-
-###############################################################################
-###############################################################################
-# Macros
-###############################################################################
-###############################################################################
-
-###############################################################################
-# Add include directories to pass to the nvcc command.
-macro(CUDA_INCLUDE_DIRECTORIES)
-  foreach(dir ${ARGN})
-    list(APPEND CUDA_NVCC_INCLUDE_DIRS_USER ${dir})
-  endforeach()
-endmacro()
-
-
-##############################################################################
-cuda_find_helper_file(parse_cubin cmake)
-cuda_find_helper_file(make2cmake cmake)
-cuda_find_helper_file(run_nvcc cmake)
-include("${CMAKE_CURRENT_LIST_DIR}/FindCUDA/select_compute_arch.cmake")
-
-##############################################################################
-# Separate the OPTIONS out from the sources
-#
-macro(CUDA_GET_SOURCES_AND_OPTIONS _sources _cmake_options _options)
-  set( ${_sources} )
-  set( ${_cmake_options} )
-  set( ${_options} )
-  set( _found_options FALSE )
-  foreach(arg ${ARGN})
-    if("x${arg}" STREQUAL "xOPTIONS")
-      set( _found_options TRUE )
-    elseif(
-        "x${arg}" STREQUAL "xWIN32" OR
-        "x${arg}" STREQUAL "xMACOSX_BUNDLE" OR
-        "x${arg}" STREQUAL "xEXCLUDE_FROM_ALL" OR
-        "x${arg}" STREQUAL "xSTATIC" OR
-        "x${arg}" STREQUAL "xSHARED" OR
-        "x${arg}" STREQUAL "xMODULE"
-        )
-      list(APPEND ${_cmake_options} ${arg})
-    else()
-      if ( _found_options )
-        list(APPEND ${_options} ${arg})
-      else()
-        # Assume this is a file
-        list(APPEND ${_sources} ${arg})
-      endif()
-    endif()
-  endforeach()
-endmacro()
-
-##############################################################################
-# Parse the OPTIONS from ARGN and set the variables prefixed by _option_prefix
-#
-macro(CUDA_PARSE_NVCC_OPTIONS _option_prefix)
-  set( _found_config )
-  foreach(arg ${ARGN})
-    # Determine if we are dealing with a perconfiguration flag
-    foreach(config ${CUDA_configuration_types})
-      string(TOUPPER ${config} config_upper)
-      if (arg STREQUAL "${config_upper}")
-        set( _found_config _${arg})
-        # Set arg to nothing to keep it from being processed further
-        set( arg )
-      endif()
-    endforeach()
-
-    if ( arg )
-      list(APPEND ${_option_prefix}${_found_config} "${arg}")
-    endif()
-  endforeach()
-endmacro()
-
-##############################################################################
-# Helper to add the include directory for CUDA only once
-function(CUDA_ADD_CUDA_INCLUDE_ONCE)
-  get_directory_property(_include_directories INCLUDE_DIRECTORIES)
-  set(_add TRUE)
-  if(_include_directories)
-    foreach(dir ${_include_directories})
-      if("${dir}" STREQUAL "${CUDA_INCLUDE_DIRS}")
-        set(_add FALSE)
-      endif()
-    endforeach()
-  endif()
-  if(_add)
-    include_directories(${CUDA_INCLUDE_DIRS})
-  endif()
-endfunction()
-
-function(CUDA_BUILD_SHARED_LIBRARY shared_flag)
-  set(cmake_args ${ARGN})
-  # If SHARED, MODULE, or STATIC aren't already in the list of arguments, then
-  # add SHARED or STATIC based on the value of BUILD_SHARED_LIBS.
-  list(FIND cmake_args SHARED _cuda_found_SHARED)
-  list(FIND cmake_args MODULE _cuda_found_MODULE)
-  list(FIND cmake_args STATIC _cuda_found_STATIC)
-  if( _cuda_found_SHARED GREATER -1 OR
-      _cuda_found_MODULE GREATER -1 OR
-      _cuda_found_STATIC GREATER -1)
-    set(_cuda_build_shared_libs)
-  else()
-    if (BUILD_SHARED_LIBS)
-      set(_cuda_build_shared_libs SHARED)
-    else()
-      set(_cuda_build_shared_libs STATIC)
-    endif()
-  endif()
-  set(${shared_flag} ${_cuda_build_shared_libs} PARENT_SCOPE)
-endfunction()
-
-##############################################################################
-# Helper to avoid clashes of files with the same basename but different paths.
-# This doesn't attempt to do exactly what CMake internals do, which is to only
-# add this path when there is a conflict, since by the time a second collision
-# in names is detected it's already too late to fix the first one.  For
-# consistency sake the relative path will be added to all files.
-function(CUDA_COMPUTE_BUILD_PATH path build_path)
-  #message("CUDA_COMPUTE_BUILD_PATH([${path}] ${build_path})")
-  # Only deal with CMake style paths from here on out
-  file(TO_CMAKE_PATH "${path}" bpath)
-  if (IS_ABSOLUTE "${bpath}")
-    # Absolute paths are generally unnessary, especially if something like
-    # file(GLOB_RECURSE) is used to pick up the files.
-
-    string(FIND "${bpath}" "${CMAKE_CURRENT_BINARY_DIR}" _binary_dir_pos)
-    if (_binary_dir_pos EQUAL 0)
-      file(RELATIVE_PATH bpath "${CMAKE_CURRENT_BINARY_DIR}" "${bpath}")
-    else()
-      file(RELATIVE_PATH bpath "${CMAKE_CURRENT_SOURCE_DIR}" "${bpath}")
-    endif()
-  endif()
-
-  # This recipe is from cmLocalGenerator::CreateSafeUniqueObjectFileName in the
-  # CMake source.
-
-  # Remove leading /
-  string(REGEX REPLACE "^[/]+" "" bpath "${bpath}")
-  # Avoid absolute paths by removing ':'
-  string(REPLACE ":" "_" bpath "${bpath}")
-  # Avoid relative paths that go up the tree
-  string(REPLACE "../" "__/" bpath "${bpath}")
-  # Avoid spaces
-  string(REPLACE " " "_" bpath "${bpath}")
-
-  # Strip off the filename.  I wait until here to do it, since removin the
-  # basename can make a path that looked like path/../basename turn into
-  # path/.. (notice the trailing slash).
-  get_filename_component(bpath "${bpath}" PATH)
-
-  set(${build_path} "${bpath}" PARENT_SCOPE)
-  #message("${build_path} = ${bpath}")
-endfunction()
-
-##############################################################################
-# This helper macro populates the following variables and setups up custom
-# commands and targets to invoke the nvcc compiler to generate C or PTX source
-# dependent upon the format parameter.  The compiler is invoked once with -M
-# to generate a dependency file and a second time with -cuda or -ptx to generate
-# a .cpp or .ptx file.
-# INPUT:
-#   cuda_target         - Target name
-#   format              - PTX, CUBIN, FATBIN or OBJ
-#   FILE1 .. FILEN      - The remaining arguments are the sources to be wrapped.
-#   OPTIONS             - Extra options to NVCC
-# OUTPUT:
-#   generated_files     - List of generated files
-##############################################################################
-##############################################################################
-
-macro(CUDA_WRAP_SRCS cuda_target format generated_files)
-
-  # Put optional arguments in list.
-  set(_argn_list "${ARGN}")
-  # If one of the given optional arguments is "PHONY", make a note of it, then
-  # remove it from the list.
-  list(FIND _argn_list "PHONY" _phony_idx)
-  if("${_phony_idx}" GREATER "-1")
-    set(_target_is_phony true)
-    list(REMOVE_AT _argn_list ${_phony_idx})
-  else()
-    set(_target_is_phony false)
-  endif()
-
-  # If CMake doesn't support separable compilation, complain
-  if(CUDA_SEPARABLE_COMPILATION AND CMAKE_VERSION VERSION_LESS "2.8.10.1")
-    message(SEND_ERROR "CUDA_SEPARABLE_COMPILATION isn't supported for CMake versions less than 2.8.10.1")
-  endif()
-
-  # Set up all the command line flags here, so that they can be overridden on a per target basis.
-
-  set(nvcc_flags "")
-
-  # Emulation if the card isn't present.
-  if (CUDA_BUILD_EMULATION)
-    # Emulation.
-    set(nvcc_flags ${nvcc_flags} --device-emulation -D_DEVICEEMU -g)
-  else()
-    # Device mode.  No flags necessary.
-  endif()
-
-  if(CUDA_HOST_COMPILATION_CPP)
-    set(CUDA_C_OR_CXX CXX)
-  else()
-    if(CUDA_VERSION VERSION_LESS "3.0")
-      set(nvcc_flags ${nvcc_flags} --host-compilation C)
-    else()
-      message(WARNING "--host-compilation flag is deprecated in CUDA version >= 3.0.  Removing --host-compilation C flag" )
-    endif()
-    set(CUDA_C_OR_CXX C)
-  endif()
-
-  set(generated_extension ${CMAKE_${CUDA_C_OR_CXX}_OUTPUT_EXTENSION})
-
-  if(CUDA_64_BIT_DEVICE_CODE)
-    set(nvcc_flags ${nvcc_flags} -m64)
-  else()
-    set(nvcc_flags ${nvcc_flags} -m32)
-  endif()
-
-  if(CUDA_TARGET_CPU_ARCH)
-    set(nvcc_flags ${nvcc_flags} "--target-cpu-architecture=${CUDA_TARGET_CPU_ARCH}")
-  endif()
-
-  # This needs to be passed in at this stage, because VS needs to fill out the
-  # various macros from within VS.  Note that CCBIN is only used if
-  # -ccbin or --compiler-bindir isn't used and CUDA_HOST_COMPILER matches
-  # _CUDA_MSVC_HOST_COMPILER
-  if(CMAKE_GENERATOR MATCHES "Visual Studio")
-    set(ccbin_flags -D "\"CCBIN:PATH=${_CUDA_MSVC_HOST_COMPILER}\"" )
-  else()
-    set(ccbin_flags)
-  endif()
-
-  # Figure out which configure we will use and pass that in as an argument to
-  # the script.  We need to defer the decision until compilation time, because
-  # for VS projects we won't know if we are making a debug or release build
-  # until build time.
-  if(CMAKE_GENERATOR MATCHES "Visual Studio")
-    set( CUDA_build_configuration "$(ConfigurationName)" )
-  else()
-    set( CUDA_build_configuration "${CMAKE_BUILD_TYPE}")
-  endif()
-
-  # Initialize our list of includes with the user ones followed by the CUDA system ones.
-  set(CUDA_NVCC_INCLUDE_DIRS ${CUDA_NVCC_INCLUDE_DIRS_USER} "${CUDA_INCLUDE_DIRS}")
-  if(_target_is_phony)
-    # If the passed in target name isn't a real target (i.e., this is from a call to one of the
-    # cuda_compile_* functions), need to query directory properties to get include directories
-    # and compile definitions.
-    get_directory_property(_dir_include_dirs INCLUDE_DIRECTORIES)
-    get_directory_property(_dir_compile_defs COMPILE_DEFINITIONS)
-
-    list(APPEND CUDA_NVCC_INCLUDE_DIRS "${_dir_include_dirs}")
-    set(CUDA_NVCC_COMPILE_DEFINITIONS "${_dir_compile_defs}")
-  else()
-    # Append the include directories for this target via generator expression, which is
-    # expanded by the FILE(GENERATE) call below.  This generator expression captures all
-    # include dirs set by the user, whether via directory properties or target properties
-    list(APPEND CUDA_NVCC_INCLUDE_DIRS "$<TARGET_PROPERTY:${cuda_target},INCLUDE_DIRECTORIES>")
-
-    # Do the same thing with compile definitions
-    set(CUDA_NVCC_COMPILE_DEFINITIONS "$<TARGET_PROPERTY:${cuda_target},COMPILE_DEFINITIONS>")
-  endif()
-
-
-  # Reset these variables
-  set(CUDA_WRAP_OPTION_NVCC_FLAGS)
-  foreach(config ${CUDA_configuration_types})
-    string(TOUPPER ${config} config_upper)
-    set(CUDA_WRAP_OPTION_NVCC_FLAGS_${config_upper})
-  endforeach()
-
-  CUDA_GET_SOURCES_AND_OPTIONS(_cuda_wrap_sources _cuda_wrap_cmake_options _cuda_wrap_options ${_argn_list})
-  CUDA_PARSE_NVCC_OPTIONS(CUDA_WRAP_OPTION_NVCC_FLAGS ${_cuda_wrap_options})
-
-  # Figure out if we are building a shared library.  BUILD_SHARED_LIBS is
-  # respected in CUDA_ADD_LIBRARY.
-  set(_cuda_build_shared_libs FALSE)
-  # SHARED, MODULE
-  list(FIND _cuda_wrap_cmake_options SHARED _cuda_found_SHARED)
-  list(FIND _cuda_wrap_cmake_options MODULE _cuda_found_MODULE)
-  if(_cuda_found_SHARED GREATER -1 OR _cuda_found_MODULE GREATER -1)
-    set(_cuda_build_shared_libs TRUE)
-  endif()
-  # STATIC
-  list(FIND _cuda_wrap_cmake_options STATIC _cuda_found_STATIC)
-  if(_cuda_found_STATIC GREATER -1)
-    set(_cuda_build_shared_libs FALSE)
-  endif()
-
-  # CUDA_HOST_FLAGS
-  if(_cuda_build_shared_libs)
-    # If we are setting up code for a shared library, then we need to add extra flags for
-    # compiling objects for shared libraries.
-    set(CUDA_HOST_SHARED_FLAGS ${CMAKE_SHARED_LIBRARY_${CUDA_C_OR_CXX}_FLAGS})
-  else()
-    set(CUDA_HOST_SHARED_FLAGS)
-  endif()
-  # Only add the CMAKE_{C,CXX}_FLAGS if we are propagating host flags.  We
-  # always need to set the SHARED_FLAGS, though.
-  if(CUDA_PROPAGATE_HOST_FLAGS)
-    set(_cuda_host_flags "set(CMAKE_HOST_FLAGS ${CMAKE_${CUDA_C_OR_CXX}_FLAGS} ${CUDA_HOST_SHARED_FLAGS})")
-  else()
-    set(_cuda_host_flags "set(CMAKE_HOST_FLAGS ${CUDA_HOST_SHARED_FLAGS})")
-  endif()
-
-  set(_cuda_nvcc_flags_config "# Build specific configuration flags")
-  # Loop over all the configuration types to generate appropriate flags for run_nvcc.cmake
-  foreach(config ${CUDA_configuration_types})
-    string(TOUPPER ${config} config_upper)
-    # CMAKE_FLAGS are strings and not lists.  By not putting quotes around CMAKE_FLAGS
-    # we convert the strings to lists (like we want).
-
-    if(CUDA_PROPAGATE_HOST_FLAGS)
-      # nvcc chokes on -g3 in versions previous to 3.0, so replace it with -g
-      set(_cuda_fix_g3 FALSE)
-
-      if(CMAKE_COMPILER_IS_GNUCC)
-        if (CUDA_VERSION VERSION_LESS  "3.0" OR
-            CUDA_VERSION VERSION_EQUAL "4.1" OR
-            CUDA_VERSION VERSION_EQUAL "4.2"
-            )
-          set(_cuda_fix_g3 TRUE)
-        endif()
-      endif()
-      if(_cuda_fix_g3)
-        string(REPLACE "-g3" "-g" _cuda_C_FLAGS "${CMAKE_${CUDA_C_OR_CXX}_FLAGS_${config_upper}}")
-      else()
-        set(_cuda_C_FLAGS "${CMAKE_${CUDA_C_OR_CXX}_FLAGS_${config_upper}}")
-      endif()
-
-      string(APPEND _cuda_host_flags "\nset(CMAKE_HOST_FLAGS_${config_upper} ${_cuda_C_FLAGS})")
-    endif()
-
-    # Note that if we ever want CUDA_NVCC_FLAGS_<CONFIG> to be string (instead of a list
-    # like it is currently), we can remove the quotes around the
-    # ${CUDA_NVCC_FLAGS_${config_upper}} variable like the CMAKE_HOST_FLAGS_<CONFIG> variable.
-    string(APPEND _cuda_nvcc_flags_config "\nset(CUDA_NVCC_FLAGS_${config_upper} ${CUDA_NVCC_FLAGS_${config_upper}} ;; ${CUDA_WRAP_OPTION_NVCC_FLAGS_${config_upper}})")
-  endforeach()
-
-  # Process the C++11 flag.  If the host sets the flag, we need to add it to nvcc and
-  # remove it from the host. This is because -Xcompile -std=c++ will choke nvcc (it uses
-  # the C preprocessor).  In order to get this to work correctly, we need to use nvcc's
-  # specific c++11 flag.
-  if( "${_cuda_host_flags}" MATCHES "-std=c\\+\\+11")
-    # Add the c++11 flag to nvcc if it isn't already present.  Note that we only look at
-    # the main flag instead of the configuration specific flags.
-    if( NOT "${CUDA_NVCC_FLAGS}" MATCHES "-std=c\\+\\+11" )
-      list(APPEND nvcc_flags --std c++11)
-    endif()
-    string(REGEX REPLACE "[-]+std=c\\+\\+11" "" _cuda_host_flags "${_cuda_host_flags}")
-  endif()
-
-  if(_cuda_build_shared_libs)
-    list(APPEND nvcc_flags "-D${cuda_target}_EXPORTS")
-  endif()
-
-  # Reset the output variable
-  set(_cuda_wrap_generated_files "")
-
-  # Iterate over the macro arguments and create custom
-  # commands for all the .cu files.
-  foreach(file ${_argn_list})
-    # Ignore any file marked as a HEADER_FILE_ONLY
-    get_source_file_property(_is_header ${file} HEADER_FILE_ONLY)
-    # Allow per source file overrides of the format.  Also allows compiling non-.cu files.
-    get_source_file_property(_cuda_source_format ${file} CUDA_SOURCE_PROPERTY_FORMAT)
-    if((${file} MATCHES "\\.cu$" OR _cuda_source_format) AND NOT _is_header)
-
-      if(NOT _cuda_source_format)
-        set(_cuda_source_format ${format})
-      endif()
-      # If file isn't a .cu file, we need to tell nvcc to treat it as such.
-      if(NOT ${file} MATCHES "\\.cu$")
-        set(cuda_language_flag -x=cu)
-      else()
-        set(cuda_language_flag)
-      endif()
-
-      if( ${_cuda_source_format} MATCHES "OBJ")
-        set( cuda_compile_to_external_module OFF )
-      else()
-        set( cuda_compile_to_external_module ON )
-        if( ${_cuda_source_format} MATCHES "PTX" )
-          set( cuda_compile_to_external_module_type "ptx" )
-        elseif( ${_cuda_source_format} MATCHES "CUBIN")
-          set( cuda_compile_to_external_module_type "cubin" )
-        elseif( ${_cuda_source_format} MATCHES "FATBIN")
-          set( cuda_compile_to_external_module_type "fatbin" )
-        else()
-          message( FATAL_ERROR "Invalid format flag passed to CUDA_WRAP_SRCS or set with CUDA_SOURCE_PROPERTY_FORMAT file property for file '${file}': '${_cuda_source_format}'.  Use OBJ, PTX, CUBIN or FATBIN.")
-        endif()
-      endif()
-
-      if(cuda_compile_to_external_module)
-        # Don't use any of the host compilation flags for PTX targets.
-        set(CUDA_HOST_FLAGS)
-        set(CUDA_NVCC_FLAGS_CONFIG)
-      else()
-        set(CUDA_HOST_FLAGS ${_cuda_host_flags})
-        set(CUDA_NVCC_FLAGS_CONFIG ${_cuda_nvcc_flags_config})
-      endif()
-
-      # Determine output directory
-      cuda_compute_build_path("${file}" cuda_build_path)
-      set(cuda_compile_intermediate_directory "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${cuda_target}.dir/${cuda_build_path}")
-      if(CUDA_GENERATED_OUTPUT_DIR)
-        set(cuda_compile_output_dir "${CUDA_GENERATED_OUTPUT_DIR}")
-      else()
-        if ( cuda_compile_to_external_module )
-          set(cuda_compile_output_dir "${CMAKE_CURRENT_BINARY_DIR}")
-        else()
-          set(cuda_compile_output_dir "${cuda_compile_intermediate_directory}")
-        endif()
-      endif()
-
-      # Add a custom target to generate a c or ptx file. ######################
-
-      get_filename_component( basename ${file} NAME )
-      if( cuda_compile_to_external_module )
-        set(generated_file_path "${cuda_compile_output_dir}")
-        set(generated_file_basename "${cuda_target}_generated_${basename}.${cuda_compile_to_external_module_type}")
-        set(format_flag "-${cuda_compile_to_external_module_type}")
-        file(MAKE_DIRECTORY "${cuda_compile_output_dir}")
-      else()
-        set(generated_file_path "${cuda_compile_output_dir}/${CMAKE_CFG_INTDIR}")
-        set(generated_file_basename "${cuda_target}_generated_${basename}${generated_extension}")
-        if(CUDA_SEPARABLE_COMPILATION)
-          set(format_flag "-dc")
-        else()
-          set(format_flag "-c")
-        endif()
-      endif()
-
-      # Set all of our file names.  Make sure that whatever filenames that have
-      # generated_file_path in them get passed in through as a command line
-      # argument, so that the ${CMAKE_CFG_INTDIR} gets expanded at run time
-      # instead of configure time.
-      set(generated_file "${generated_file_path}/${generated_file_basename}")
-      set(cmake_dependency_file "${cuda_compile_intermediate_directory}/${generated_file_basename}.depend")
-      set(NVCC_generated_dependency_file "${cuda_compile_intermediate_directory}/${generated_file_basename}.NVCC-depend")
-      set(generated_cubin_file "${generated_file_path}/${generated_file_basename}.cubin.txt")
-      set(custom_target_script_pregen "${cuda_compile_intermediate_directory}/${generated_file_basename}.cmake.pre-gen")
-      set(custom_target_script "${cuda_compile_intermediate_directory}/${generated_file_basename}$<$<BOOL:$<CONFIG>>:.$<CONFIG>>.cmake")
-
-      # Setup properties for obj files:
-      if( NOT cuda_compile_to_external_module )
-        set_source_files_properties("${generated_file}"
-          PROPERTIES
-          EXTERNAL_OBJECT true # This is an object file not to be compiled, but only be linked.
-          )
-      endif()
-
-      # Don't add CMAKE_CURRENT_SOURCE_DIR if the path is already an absolute path.
-      get_filename_component(file_path "${file}" PATH)
-      if(IS_ABSOLUTE "${file_path}")
-        set(source_file "${file}")
-      else()
-        set(source_file "${CMAKE_CURRENT_SOURCE_DIR}/${file}")
-      endif()
-
-      if( NOT cuda_compile_to_external_module AND CUDA_SEPARABLE_COMPILATION)
-        list(APPEND ${cuda_target}_SEPARABLE_COMPILATION_OBJECTS "${generated_file}")
-      endif()
-
-      # Bring in the dependencies.  Creates a variable CUDA_NVCC_DEPEND #######
-      cuda_include_nvcc_dependencies(${cmake_dependency_file})
-
-      # Convenience string for output #########################################
-      if(CUDA_BUILD_EMULATION)
-        set(cuda_build_type "Emulation")
-      else()
-        set(cuda_build_type "Device")
-      endif()
-
-      # Build the NVCC made dependency file ###################################
-      set(build_cubin OFF)
-      if ( NOT CUDA_BUILD_EMULATION AND CUDA_BUILD_CUBIN )
-         if ( NOT cuda_compile_to_external_module )
-           set ( build_cubin ON )
-         endif()
-      endif()
-
-      # Configure the build script
-      configure_file("${CUDA_run_nvcc}" "${custom_target_script_pregen}" @ONLY)
-      file(GENERATE
-        OUTPUT "${custom_target_script}"
-        INPUT "${custom_target_script_pregen}"
-        )
-
-      # So if a user specifies the same cuda file as input more than once, you
-      # can have bad things happen with dependencies.  Here we check an option
-      # to see if this is the behavior they want.
-      if(CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE)
-        set(main_dep MAIN_DEPENDENCY ${source_file})
-      else()
-        set(main_dep DEPENDS ${source_file})
-      endif()
-
-      if(CUDA_VERBOSE_BUILD)
-        set(verbose_output ON)
-      elseif(CMAKE_GENERATOR MATCHES "Makefiles")
-        set(verbose_output "$(VERBOSE)")
-      else()
-        set(verbose_output OFF)
-      endif()
-
-      # Create up the comment string
-      file(RELATIVE_PATH generated_file_relative_path "${CMAKE_BINARY_DIR}" "${generated_file}")
-      if(cuda_compile_to_external_module)
-        set(cuda_build_comment_string "Building NVCC ${cuda_compile_to_external_module_type} file ${generated_file_relative_path}")
-      else()
-        set(cuda_build_comment_string "Building NVCC (${cuda_build_type}) object ${generated_file_relative_path}")
-      endif()
-
-      set(_verbatim VERBATIM)
-      if(ccbin_flags MATCHES "\\$\\(VCInstallDir\\)")
-        set(_verbatim "")
-      endif()
-
-      # Build the generated file and dependency file ##########################
-      add_custom_command(
-        OUTPUT ${generated_file}
-        # These output files depend on the source_file and the contents of cmake_dependency_file
-        ${main_dep}
-        DEPENDS ${CUDA_NVCC_DEPEND}
-        DEPENDS ${custom_target_script}
-        # Make sure the output directory exists before trying to write to it.
-        COMMAND ${CMAKE_COMMAND} -E make_directory "${generated_file_path}"
-        COMMAND ${CMAKE_COMMAND} ARGS
-          -D verbose:BOOL=${verbose_output}
-          ${ccbin_flags}
-          -D build_configuration:STRING=${CUDA_build_configuration}
-          -D "generated_file:STRING=${generated_file}"
-          -D "generated_cubin_file:STRING=${generated_cubin_file}"
-          -P "${custom_target_script}"
-        WORKING_DIRECTORY "${cuda_compile_intermediate_directory}"
-        COMMENT "${cuda_build_comment_string}"
-        ${_verbatim}
-        )
-
-      # Make sure the build system knows the file is generated.
-      set_source_files_properties(${generated_file} PROPERTIES GENERATED TRUE)
-
-      list(APPEND _cuda_wrap_generated_files ${generated_file})
-
-      # Add the other files that we want cmake to clean on a cleanup ##########
-      list(APPEND CUDA_ADDITIONAL_CLEAN_FILES "${cmake_dependency_file}")
-      list(REMOVE_DUPLICATES CUDA_ADDITIONAL_CLEAN_FILES)
-      set(CUDA_ADDITIONAL_CLEAN_FILES ${CUDA_ADDITIONAL_CLEAN_FILES} CACHE INTERNAL "List of intermediate files that are part of the cuda dependency scanning.")
-
-    endif()
-  endforeach()
-
-  # Set the return parameter
-  set(${generated_files} ${_cuda_wrap_generated_files})
-endmacro()
-
-function(_cuda_get_important_host_flags important_flags flag_string)
-  if(CMAKE_GENERATOR MATCHES "Visual Studio")
-    string(REGEX MATCHALL "/M[DT][d]?" flags "${flag_string}")
-    list(APPEND ${important_flags} ${flags})
-  else()
-    string(REGEX MATCHALL "-fPIC" flags "${flag_string}")
-    list(APPEND ${important_flags} ${flags})
-  endif()
-  set(${important_flags} ${${important_flags}} PARENT_SCOPE)
-endfunction()
-
-###############################################################################
-###############################################################################
-# Separable Compilation Link
-###############################################################################
-###############################################################################
-
-# Compute the filename to be used by CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS
-function(CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME output_file_var cuda_target object_files)
-  if (object_files)
-    set(generated_extension ${CMAKE_${CUDA_C_OR_CXX}_OUTPUT_EXTENSION})
-    set(output_file "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${cuda_target}.dir/${CMAKE_CFG_INTDIR}/${cuda_target}_intermediate_link${generated_extension}")
-  else()
-    set(output_file)
-  endif()
-
-  set(${output_file_var} "${output_file}" PARENT_SCOPE)
-endfunction()
-
-# Setup the build rule for the separable compilation intermediate link file.
-function(CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS output_file cuda_target options object_files)
-  if (object_files)
-
-    set_source_files_properties("${output_file}"
-      PROPERTIES
-      EXTERNAL_OBJECT TRUE # This is an object file not to be compiled, but only
-                           # be linked.
-      GENERATED TRUE       # This file is generated during the build
-      )
-
-    # For now we are ignoring all the configuration specific flags.
-    set(nvcc_flags)
-    CUDA_PARSE_NVCC_OPTIONS(nvcc_flags ${options})
-    if(CUDA_64_BIT_DEVICE_CODE)
-      list(APPEND nvcc_flags -m64)
-    else()
-      list(APPEND nvcc_flags -m32)
-    endif()
-    # If -ccbin, --compiler-bindir has been specified, don't do anything.  Otherwise add it here.
-    list( FIND nvcc_flags "-ccbin" ccbin_found0 )
-    list( FIND nvcc_flags "--compiler-bindir" ccbin_found1 )
-    if( ccbin_found0 LESS 0 AND ccbin_found1 LESS 0 AND CUDA_HOST_COMPILER )
-      # Match VERBATIM check below.
-      if(CUDA_HOST_COMPILER MATCHES "\\$\\(VCInstallDir\\)")
-        list(APPEND nvcc_flags -ccbin "\"${CUDA_HOST_COMPILER}\"")
-      else()
-        list(APPEND nvcc_flags -ccbin "${CUDA_HOST_COMPILER}")
-      endif()
-    endif()
-
-    # Create a list of flags specified by CUDA_NVCC_FLAGS_${CONFIG} and CMAKE_${CUDA_C_OR_CXX}_FLAGS*
-    set(config_specific_flags)
-    set(flags)
-    foreach(config ${CUDA_configuration_types})
-      string(TOUPPER ${config} config_upper)
-      # Add config specific flags
-      foreach(f ${CUDA_NVCC_FLAGS_${config_upper}})
-        list(APPEND config_specific_flags $<$<CONFIG:${config}>:${f}>)
-      endforeach()
-      set(important_host_flags)
-      _cuda_get_important_host_flags(important_host_flags "${CMAKE_${CUDA_C_OR_CXX}_FLAGS_${config_upper}}")
-      foreach(f ${important_host_flags})
-        list(APPEND flags $<$<CONFIG:${config}>:-Xcompiler> $<$<CONFIG:${config}>:${f}>)
-      endforeach()
-    endforeach()
-    # Add CMAKE_${CUDA_C_OR_CXX}_FLAGS
-    set(important_host_flags)
-    _cuda_get_important_host_flags(important_host_flags "${CMAKE_${CUDA_C_OR_CXX}_FLAGS}")
-    foreach(f ${important_host_flags})
-      list(APPEND flags -Xcompiler ${f})
-    endforeach()
-
-    # Add our general CUDA_NVCC_FLAGS with the configuration specifig flags
-    set(nvcc_flags ${CUDA_NVCC_FLAGS} ${config_specific_flags} ${nvcc_flags})
-
-    file(RELATIVE_PATH output_file_relative_path "${CMAKE_BINARY_DIR}" "${output_file}")
-
-    # Some generators don't handle the multiple levels of custom command
-    # dependencies correctly (obj1 depends on file1, obj2 depends on obj1), so
-    # we work around that issue by compiling the intermediate link object as a
-    # pre-link custom command in that situation.
-    set(do_obj_build_rule TRUE)
-    if (MSVC_VERSION GREATER 1599 AND MSVC_VERSION LESS 1800)
-      # VS 2010 and 2012 have this problem.
-      set(do_obj_build_rule FALSE)
-    endif()
-
-    set(_verbatim VERBATIM)
-    if(nvcc_flags MATCHES "\\$\\(VCInstallDir\\)")
-      set(_verbatim "")
-    endif()
-
-    if (do_obj_build_rule)
-      add_custom_command(
-        OUTPUT ${output_file}
-        DEPENDS ${object_files}
-        COMMAND ${CUDA_NVCC_EXECUTABLE} ${nvcc_flags} -dlink ${object_files} -o ${output_file}
-        ${flags}
-        COMMENT "Building NVCC intermediate link file ${output_file_relative_path}"
-        COMMAND_EXPAND_LISTS
-        ${_verbatim}
-        )
-    else()
-      get_filename_component(output_file_dir "${output_file}" DIRECTORY)
-      add_custom_command(
-        TARGET ${cuda_target}
-        PRE_LINK
-        COMMAND ${CMAKE_COMMAND} -E echo "Building NVCC intermediate link file ${output_file_relative_path}"
-        COMMAND ${CMAKE_COMMAND} -E make_directory "${output_file_dir}"
-        COMMAND ${CUDA_NVCC_EXECUTABLE} ${nvcc_flags} ${flags} -dlink ${object_files} -o "${output_file}"
-        COMMAND_EXPAND_LISTS
-        ${_verbatim}
-        )
-    endif()
- endif()
-endfunction()
-
-###############################################################################
-###############################################################################
-# ADD LIBRARY
-###############################################################################
-###############################################################################
-macro(CUDA_ADD_LIBRARY cuda_target)
-
-  CUDA_ADD_CUDA_INCLUDE_ONCE()
-
-  # Separate the sources from the options
-  CUDA_GET_SOURCES_AND_OPTIONS(_sources _cmake_options _options ${ARGN})
-  CUDA_BUILD_SHARED_LIBRARY(_cuda_shared_flag ${ARGN})
-  # Create custom commands and targets for each file.
-  CUDA_WRAP_SRCS( ${cuda_target} OBJ _generated_files ${_sources}
-    ${_cmake_options} ${_cuda_shared_flag}
-    OPTIONS ${_options} )
-
-  # Compute the file name of the intermedate link file used for separable
-  # compilation.
-  CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME(link_file ${cuda_target} "${${cuda_target}_SEPARABLE_COMPILATION_OBJECTS}")
-
-  # Add the library.
-  add_library(${cuda_target} ${_cmake_options}
-    ${_generated_files}
-    ${_sources}
-    ${link_file}
-    )
-
-  # Add a link phase for the separable compilation if it has been enabled.  If
-  # it has been enabled then the ${cuda_target}_SEPARABLE_COMPILATION_OBJECTS
-  # variable will have been defined.
-  CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS("${link_file}" ${cuda_target} "${_options}" "${${cuda_target}_SEPARABLE_COMPILATION_OBJECTS}")
-
-  target_link_libraries(${cuda_target} ${CUDA_LINK_LIBRARIES_KEYWORD}
-    ${CUDA_LIBRARIES}
-    )
-
-  if(CUDA_SEPARABLE_COMPILATION)
-    target_link_libraries(${cuda_target} ${CUDA_LINK_LIBRARIES_KEYWORD}
-      ${CUDA_cudadevrt_LIBRARY}
-      )
-  endif()
-
-  # We need to set the linker language based on what the expected generated file
-  # would be. CUDA_C_OR_CXX is computed based on CUDA_HOST_COMPILATION_CPP.
-  set_target_properties(${cuda_target}
-    PROPERTIES
-    LINKER_LANGUAGE ${CUDA_C_OR_CXX}
-    )
-
-endmacro()
-
-
-###############################################################################
-###############################################################################
-# ADD EXECUTABLE
-###############################################################################
-###############################################################################
-macro(CUDA_ADD_EXECUTABLE cuda_target)
-
-  CUDA_ADD_CUDA_INCLUDE_ONCE()
-
-  # Separate the sources from the options
-  CUDA_GET_SOURCES_AND_OPTIONS(_sources _cmake_options _options ${ARGN})
-  # Create custom commands and targets for each file.
-  CUDA_WRAP_SRCS( ${cuda_target} OBJ _generated_files ${_sources} OPTIONS ${_options} )
-
-  # Compute the file name of the intermedate link file used for separable
-  # compilation.
-  CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME(link_file ${cuda_target} "${${cuda_target}_SEPARABLE_COMPILATION_OBJECTS}")
-
-  # Add the library.
-  add_executable(${cuda_target} ${_cmake_options}
-    ${_generated_files}
-    ${_sources}
-    ${link_file}
-    )
-
-  # Add a link phase for the separable compilation if it has been enabled.  If
-  # it has been enabled then the ${cuda_target}_SEPARABLE_COMPILATION_OBJECTS
-  # variable will have been defined.
-  CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS("${link_file}" ${cuda_target} "${_options}" "${${cuda_target}_SEPARABLE_COMPILATION_OBJECTS}")
-
-  target_link_libraries(${cuda_target} ${CUDA_LINK_LIBRARIES_KEYWORD}
-    ${CUDA_LIBRARIES}
-    )
-
-  # We need to set the linker language based on what the expected generated file
-  # would be. CUDA_C_OR_CXX is computed based on CUDA_HOST_COMPILATION_CPP.
-  set_target_properties(${cuda_target}
-    PROPERTIES
-    LINKER_LANGUAGE ${CUDA_C_OR_CXX}
-    )
-
-endmacro()
-
-
-###############################################################################
-###############################################################################
-# (Internal) helper for manually added cuda source files with specific targets
-###############################################################################
-###############################################################################
-macro(cuda_compile_base cuda_target format generated_files)
-  # Update a counter in this directory, to keep phony target names unique.
-  set(_cuda_target "${cuda_target}")
-  get_property(_counter DIRECTORY PROPERTY _cuda_internal_phony_counter)
-  if(_counter)
-    math(EXPR _counter "${_counter} + 1")
-  else()
-    set(_counter 1)
-  endif()
-  string(APPEND _cuda_target "_${_counter}")
-  set_property(DIRECTORY PROPERTY _cuda_internal_phony_counter ${_counter})
-
-  # Separate the sources from the options
-  CUDA_GET_SOURCES_AND_OPTIONS(_sources _cmake_options _options ${ARGN})
-
-  # Create custom commands and targets for each file.
-  CUDA_WRAP_SRCS( ${_cuda_target} ${format} _generated_files ${_sources}
-                  ${_cmake_options} OPTIONS ${_options} PHONY)
-
-  set( ${generated_files} ${_generated_files})
-
-endmacro()
-
-###############################################################################
-###############################################################################
-# CUDA COMPILE
-###############################################################################
-###############################################################################
-macro(CUDA_COMPILE generated_files)
-  cuda_compile_base(cuda_compile OBJ ${generated_files} ${ARGN})
-endmacro()
-
-###############################################################################
-###############################################################################
-# CUDA COMPILE PTX
-###############################################################################
-###############################################################################
-macro(CUDA_COMPILE_PTX generated_files)
-  cuda_compile_base(cuda_compile_ptx PTX ${generated_files} ${ARGN})
-endmacro()
-
-###############################################################################
-###############################################################################
-# CUDA COMPILE FATBIN
-###############################################################################
-###############################################################################
-macro(CUDA_COMPILE_FATBIN generated_files)
-  cuda_compile_base(cuda_compile_fatbin FATBIN ${generated_files} ${ARGN})
-endmacro()
-
-###############################################################################
-###############################################################################
-# CUDA COMPILE CUBIN
-###############################################################################
-###############################################################################
-macro(CUDA_COMPILE_CUBIN generated_files)
-  cuda_compile_base(cuda_compile_cubin CUBIN ${generated_files} ${ARGN})
-endmacro()
-
-
-###############################################################################
-###############################################################################
-# CUDA ADD CUFFT TO TARGET
-###############################################################################
-###############################################################################
-macro(CUDA_ADD_CUFFT_TO_TARGET target)
-  if (CUDA_BUILD_EMULATION)
-    target_link_libraries(${target} ${CUDA_LINK_LIBRARIES_KEYWORD} ${CUDA_cufftemu_LIBRARY})
-  else()
-    target_link_libraries(${target} ${CUDA_LINK_LIBRARIES_KEYWORD} ${CUDA_cufft_LIBRARY})
-  endif()
-endmacro()
-
-###############################################################################
-###############################################################################
-# CUDA ADD CUBLAS TO TARGET
-###############################################################################
-###############################################################################
-macro(CUDA_ADD_CUBLAS_TO_TARGET target)
-  if (CUDA_BUILD_EMULATION)
-    target_link_libraries(${target} ${CUDA_LINK_LIBRARIES_KEYWORD} ${CUDA_cublasemu_LIBRARY})
-  else()
-    target_link_libraries(${target} ${CUDA_LINK_LIBRARIES_KEYWORD} ${CUDA_cublas_LIBRARY} ${CUDA_cublas_device_LIBRARY})
-  endif()
-endmacro()
-
-###############################################################################
-###############################################################################
-# CUDA BUILD CLEAN TARGET
-###############################################################################
-###############################################################################
-macro(CUDA_BUILD_CLEAN_TARGET)
-  # Call this after you add all your CUDA targets, and you will get a
-  # convenience target.  You should also make clean after running this target
-  # to get the build system to generate all the code again.
-
-  set(cuda_clean_target_name clean_cuda_depends)
-  if (CMAKE_GENERATOR MATCHES "Visual Studio")
-    string(TOUPPER ${cuda_clean_target_name} cuda_clean_target_name)
-  endif()
-  add_custom_target(${cuda_clean_target_name}
-    COMMAND ${CMAKE_COMMAND} -E rm -f ${CUDA_ADDITIONAL_CLEAN_FILES})
-
-  # Clear out the variable, so the next time we configure it will be empty.
-  # This is useful so that the files won't persist in the list after targets
-  # have been removed.
-  set(CUDA_ADDITIONAL_CLEAN_FILES "" CACHE INTERNAL "List of intermediate files that are part of the cuda dependency scanning.")
-endmacro()
diff --git a/share/cmake-3.18/Modules/FindCUDA/run_nvcc.cmake b/share/cmake-3.18/Modules/FindCUDA/run_nvcc.cmake
deleted file mode 100644
index ba35433..0000000
--- a/share/cmake-3.18/Modules/FindCUDA/run_nvcc.cmake
+++ /dev/null
@@ -1,306 +0,0 @@
-#  James Bigler, NVIDIA Corp (nvidia.com - jbigler)
-#
-#  Copyright (c) 2008 - 2009 NVIDIA Corporation.  All rights reserved.
-#
-#  This code is licensed under the MIT License.  See the FindCUDA.cmake script
-#  for the text of the license.
-
-# The MIT License
-#
-# License for the specific language governing rights and limitations under
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-
-
-##########################################################################
-# This file runs the nvcc commands to produce the desired output file along with
-# the dependency file needed by CMake to compute dependencies.  In addition the
-# file checks the output of each command and if the command fails it deletes the
-# output files.
-
-# Input variables
-#
-# verbose:BOOL=<>          OFF: Be as quiet as possible (default)
-#                          ON : Describe each step
-#
-# build_configuration:STRING=<> Typically one of Debug, MinSizeRel, Release, or
-#                               RelWithDebInfo, but it should match one of the
-#                               entries in CUDA_HOST_FLAGS. This is the build
-#                               configuration used when compiling the code.  If
-#                               blank or unspecified Debug is assumed as this is
-#                               what CMake does.
-#
-# generated_file:STRING=<> File to generate.  This argument must be passed in.
-#
-# generated_cubin_file:STRING=<> File to generate.  This argument must be passed
-#                                                   in if build_cubin is true.
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0007 NEW)
-if(NOT generated_file)
-  message(FATAL_ERROR "You must specify generated_file on the command line")
-endif()
-
-# Set these up as variables to make reading the generated file easier
-set(CMAKE_COMMAND "@CMAKE_COMMAND@") # path
-set(source_file "@source_file@") # path
-set(NVCC_generated_dependency_file "@NVCC_generated_dependency_file@") # path
-set(cmake_dependency_file "@cmake_dependency_file@") # path
-set(CUDA_make2cmake "@CUDA_make2cmake@") # path
-set(CUDA_parse_cubin "@CUDA_parse_cubin@") # path
-set(build_cubin @build_cubin@) # bool
-set(CUDA_HOST_COMPILER "@CUDA_HOST_COMPILER@") # path
-# We won't actually use these variables for now, but we need to set this, in
-# order to force this file to be run again if it changes.
-set(generated_file_path "@generated_file_path@") # path
-set(generated_file_internal "@generated_file@") # path
-set(generated_cubin_file_internal "@generated_cubin_file@") # path
-
-set(CUDA_NVCC_EXECUTABLE "@CUDA_NVCC_EXECUTABLE@") # path
-set(CUDA_NVCC_FLAGS @CUDA_NVCC_FLAGS@ ;; @CUDA_WRAP_OPTION_NVCC_FLAGS@) # list
-@CUDA_NVCC_FLAGS_CONFIG@
-set(nvcc_flags @nvcc_flags@) # list
-set(CUDA_NVCC_INCLUDE_DIRS [==[@CUDA_NVCC_INCLUDE_DIRS@]==]) # list (needs to be in lua quotes to address backslashes)
-string(REPLACE "\\" "/" CUDA_NVCC_INCLUDE_DIRS "${CUDA_NVCC_INCLUDE_DIRS}")
-set(CUDA_NVCC_COMPILE_DEFINITIONS [==[@CUDA_NVCC_COMPILE_DEFINITIONS@]==]) # list (needs to be in lua quotes see #16510 ).
-set(format_flag "@format_flag@") # string
-set(cuda_language_flag @cuda_language_flag@) # list
-
-# Clean up list of include directories and add -I flags
-list(REMOVE_DUPLICATES CUDA_NVCC_INCLUDE_DIRS)
-set(CUDA_NVCC_INCLUDE_ARGS)
-foreach(dir ${CUDA_NVCC_INCLUDE_DIRS})
-  # Extra quotes are added around each flag to help nvcc parse out flags with spaces.
-  list(APPEND CUDA_NVCC_INCLUDE_ARGS "-I${dir}")
-endforeach()
-
-# Clean up list of compile definitions, add -D flags, and append to nvcc_flags
-list(REMOVE_DUPLICATES CUDA_NVCC_COMPILE_DEFINITIONS)
-foreach(def ${CUDA_NVCC_COMPILE_DEFINITIONS})
-  list(APPEND nvcc_flags "-D${def}")
-endforeach()
-
-if(build_cubin AND NOT generated_cubin_file)
-  message(FATAL_ERROR "You must specify generated_cubin_file on the command line")
-endif()
-
-# This is the list of host compilation flags.  It C or CXX should already have
-# been chosen by FindCUDA.cmake.
-@CUDA_HOST_FLAGS@
-
-# Take the compiler flags and package them up to be sent to the compiler via -Xcompiler
-set(nvcc_host_compiler_flags "")
-# If we weren't given a build_configuration, use Debug.
-if(NOT build_configuration)
-  set(build_configuration Debug)
-endif()
-string(TOUPPER "${build_configuration}" build_configuration)
-#message("CUDA_NVCC_HOST_COMPILER_FLAGS = ${CUDA_NVCC_HOST_COMPILER_FLAGS}")
-foreach(flag ${CMAKE_HOST_FLAGS} ${CMAKE_HOST_FLAGS_${build_configuration}})
-  # Extra quotes are added around each flag to help nvcc parse out flags with spaces.
-  string(APPEND nvcc_host_compiler_flags ",\"${flag}\"")
-endforeach()
-if (nvcc_host_compiler_flags)
-  set(nvcc_host_compiler_flags "-Xcompiler" ${nvcc_host_compiler_flags})
-endif()
-#message("nvcc_host_compiler_flags = \"${nvcc_host_compiler_flags}\"")
-# Add the build specific configuration flags
-list(APPEND CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS_${build_configuration}})
-
-# Any -ccbin existing in CUDA_NVCC_FLAGS gets highest priority
-list( FIND CUDA_NVCC_FLAGS "-ccbin" ccbin_found0 )
-list( FIND CUDA_NVCC_FLAGS "--compiler-bindir" ccbin_found1 )
-if( ccbin_found0 LESS 0 AND ccbin_found1 LESS 0 AND CUDA_HOST_COMPILER )
-  if (CUDA_HOST_COMPILER STREQUAL "@_CUDA_MSVC_HOST_COMPILER@" AND DEFINED CCBIN)
-    set(CCBIN -ccbin "${CCBIN}")
-  else()
-    set(CCBIN -ccbin "${CUDA_HOST_COMPILER}")
-  endif()
-endif()
-
-# cuda_execute_process - Executes a command with optional command echo and status message.
-#
-#   status  - Status message to print if verbose is true
-#   command - COMMAND argument from the usual execute_process argument structure
-#   ARGN    - Remaining arguments are the command with arguments
-#
-#   CUDA_result - return value from running the command
-#
-# Make this a macro instead of a function, so that things like RESULT_VARIABLE
-# and other return variables are present after executing the process.
-macro(cuda_execute_process status command)
-  set(_command ${command})
-  if(NOT "x${_command}" STREQUAL "xCOMMAND")
-    message(FATAL_ERROR "Malformed call to cuda_execute_process.  Missing COMMAND as second argument. (command = ${command})")
-  endif()
-  if(verbose)
-    execute_process(COMMAND "${CMAKE_COMMAND}" -E echo -- ${status})
-    # Now we need to build up our command string.  We are accounting for quotes
-    # and spaces, anything else is left up to the user to fix if they want to
-    # copy and paste a runnable command line.
-    set(cuda_execute_process_string)
-    foreach(arg ${ARGN})
-      # If there are quotes, excape them, so they come through.
-      string(REPLACE "\"" "\\\"" arg ${arg})
-      # Args with spaces need quotes around them to get them to be parsed as a single argument.
-      if(arg MATCHES " ")
-        list(APPEND cuda_execute_process_string "\"${arg}\"")
-      else()
-        list(APPEND cuda_execute_process_string ${arg})
-      endif()
-    endforeach()
-    # Echo the command
-    execute_process(COMMAND ${CMAKE_COMMAND} -E echo ${cuda_execute_process_string})
-  endif()
-  # Run the command
-  execute_process(COMMAND ${ARGN} RESULT_VARIABLE CUDA_result )
-endmacro()
-
-# Delete the target file
-cuda_execute_process(
-  "Removing ${generated_file}"
-  COMMAND "${CMAKE_COMMAND}" -E rm -f "${generated_file}"
-  )
-
-# For CUDA 2.3 and below, -G -M doesn't work, so remove the -G flag
-# for dependency generation and hope for the best.
-set(depends_CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS}")
-set(CUDA_VERSION @CUDA_VERSION@)
-if(CUDA_VERSION VERSION_LESS "3.0")
-  # Note that this will remove all occurrences of -G.
-  list(REMOVE_ITEM depends_CUDA_NVCC_FLAGS "-G")
-endif()
-
-# nvcc doesn't define __CUDACC__ for some reason when generating dependency files.  This
-# can cause incorrect dependencies when #including files based on this macro which is
-# defined in the generating passes of nvcc invocation.  We will go ahead and manually
-# define this for now until a future version fixes this bug.
-set(CUDACC_DEFINE -D__CUDACC__)
-
-# Generate the dependency file
-cuda_execute_process(
-  "Generating dependency file: ${NVCC_generated_dependency_file}"
-  COMMAND "${CUDA_NVCC_EXECUTABLE}"
-  -M
-  ${CUDACC_DEFINE}
-  "${source_file}"
-  -o "${NVCC_generated_dependency_file}"
-  ${CCBIN}
-  ${nvcc_flags}
-  ${nvcc_host_compiler_flags}
-  ${depends_CUDA_NVCC_FLAGS}
-  -DNVCC
-  ${CUDA_NVCC_INCLUDE_ARGS}
-  )
-
-if(CUDA_result)
-  message(FATAL_ERROR "Error generating ${generated_file}")
-endif()
-
-# Generate the cmake readable dependency file to a temp file.  Don't put the
-# quotes just around the filenames for the input_file and output_file variables.
-# CMake will pass the quotes through and not be able to find the file.
-cuda_execute_process(
-  "Generating temporary cmake readable file: ${cmake_dependency_file}.tmp"
-  COMMAND "${CMAKE_COMMAND}"
-  -D "input_file:FILEPATH=${NVCC_generated_dependency_file}"
-  -D "output_file:FILEPATH=${cmake_dependency_file}.tmp"
-  -D "verbose=${verbose}"
-  -P "${CUDA_make2cmake}"
-  )
-
-if(CUDA_result)
-  message(FATAL_ERROR "Error generating ${generated_file}")
-endif()
-
-# Copy the file if it is different
-cuda_execute_process(
-  "Copy if different ${cmake_dependency_file}.tmp to ${cmake_dependency_file}"
-  COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${cmake_dependency_file}.tmp" "${cmake_dependency_file}"
-  )
-
-if(CUDA_result)
-  message(FATAL_ERROR "Error generating ${generated_file}")
-endif()
-
-# Delete the temporary file
-cuda_execute_process(
-  "Removing ${cmake_dependency_file}.tmp and ${NVCC_generated_dependency_file}"
-  COMMAND "${CMAKE_COMMAND}" -E rm -f "${cmake_dependency_file}.tmp" "${NVCC_generated_dependency_file}"
-  )
-
-if(CUDA_result)
-  message(FATAL_ERROR "Error generating ${generated_file}")
-endif()
-
-# Generate the code
-cuda_execute_process(
-  "Generating ${generated_file}"
-  COMMAND "${CUDA_NVCC_EXECUTABLE}"
-  "${source_file}"
-  ${cuda_language_flag}
-  ${format_flag} -o "${generated_file}"
-  ${CCBIN}
-  ${nvcc_flags}
-  ${nvcc_host_compiler_flags}
-  ${CUDA_NVCC_FLAGS}
-  -DNVCC
-  ${CUDA_NVCC_INCLUDE_ARGS}
-  )
-
-if(CUDA_result)
-  # Since nvcc can sometimes leave half done files make sure that we delete the output file.
-  cuda_execute_process(
-    "Removing ${generated_file}"
-    COMMAND "${CMAKE_COMMAND}" -E rm -f "${generated_file}"
-    )
-  message(FATAL_ERROR "Error generating file ${generated_file}")
-else()
-  if(verbose)
-    message("Generated ${generated_file} successfully.")
-  endif()
-endif()
-
-# Cubin resource report commands.
-if( build_cubin )
-  # Run with -cubin to produce resource usage report.
-  cuda_execute_process(
-    "Generating ${generated_cubin_file}"
-    COMMAND "${CUDA_NVCC_EXECUTABLE}"
-    "${source_file}"
-    ${CUDA_NVCC_FLAGS}
-    ${nvcc_flags}
-    ${CCBIN}
-    ${nvcc_host_compiler_flags}
-    -DNVCC
-    -cubin
-    -o "${generated_cubin_file}"
-    ${CUDA_NVCC_INCLUDE_ARGS}
-    )
-
-  # Execute the parser script.
-  cuda_execute_process(
-    "Executing the parser script"
-    COMMAND  "${CMAKE_COMMAND}"
-    -D "input_file:STRING=${generated_cubin_file}"
-    -P "${CUDA_parse_cubin}"
-    )
-
-endif()
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FindCUDA/select_compute_arch.cmake b/share/cmake-3.18/Modules/FindCUDA/select_compute_arch.cmake
deleted file mode 100644
index c11725d..0000000
--- a/share/cmake-3.18/Modules/FindCUDA/select_compute_arch.cmake
+++ /dev/null
@@ -1,291 +0,0 @@
-# Synopsis:
-#   CUDA_SELECT_NVCC_ARCH_FLAGS(out_variable [target_CUDA_architectures])
-#   -- Selects GPU arch flags for nvcc based on target_CUDA_architectures
-#      target_CUDA_architectures : Auto | Common | All | LIST(ARCH_AND_PTX ...)
-#       - "Auto" detects local machine GPU compute arch at runtime.
-#       - "Common" and "All" cover common and entire subsets of architectures
-#      ARCH_AND_PTX : NAME | NUM.NUM | NUM.NUM(NUM.NUM) | NUM.NUM+PTX
-#      NAME: Fermi Kepler Maxwell Kepler+Tegra Kepler+Tesla Maxwell+Tegra Pascal Volta Turing Ampere
-#      NUM: Any number. Only those pairs are currently accepted by NVCC though:
-#            2.0 2.1 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.2 7.0 7.2 7.5 8.0
-#      Returns LIST of flags to be added to CUDA_NVCC_FLAGS in ${out_variable}
-#      Additionally, sets ${out_variable}_readable to the resulting numeric list
-#      Example:
-#       CUDA_SELECT_NVCC_ARCH_FLAGS(ARCH_FLAGS 3.0 3.5+PTX 5.2(5.0) Maxwell)
-#        LIST(APPEND CUDA_NVCC_FLAGS ${ARCH_FLAGS})
-#
-#      More info on CUDA architectures: https://en.wikipedia.org/wiki/CUDA
-#
-
-if(CMAKE_CUDA_COMPILER_LOADED) # CUDA as a language
-  if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA"
-      AND CMAKE_CUDA_COMPILER_VERSION MATCHES "^([0-9]+\\.[0-9]+)")
-    set(CUDA_VERSION "${CMAKE_MATCH_1}")
-  endif()
-endif()
-
-# See: https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#gpu-feature-list
-
-# This list will be used for CUDA_ARCH_NAME = All option
-set(CUDA_KNOWN_GPU_ARCHITECTURES  "Fermi" "Kepler" "Maxwell")
-
-# This list will be used for CUDA_ARCH_NAME = Common option (enabled by default)
-set(CUDA_COMMON_GPU_ARCHITECTURES "3.5" "5.0")
-# 3.0 is removed in CUDA 11, see:
-# https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#deprecated-features
-if(CUDA_VERSION VERSION_LESS "11.0")
-  list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "3.0")
-endif()
-
-if(CUDA_VERSION VERSION_LESS "7.0")
-  set(CUDA_LIMIT_GPU_ARCHITECTURE "5.2")
-endif()
-
-# This list is used to filter CUDA archs when autodetecting
-set(CUDA_ALL_GPU_ARCHITECTURES "3.0" "3.2" "3.5" "5.0")
-
-if(CUDA_VERSION VERSION_GREATER_EQUAL "7.0")
-  list(APPEND CUDA_KNOWN_GPU_ARCHITECTURES "Kepler+Tegra" "Kepler+Tesla" "Maxwell+Tegra")
-  list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "5.2")
-
-  if(CUDA_VERSION VERSION_LESS "8.0")
-    list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "5.2+PTX")
-    set(CUDA_LIMIT_GPU_ARCHITECTURE "6.0")
-  endif()
-endif()
-
-if(CUDA_VERSION VERSION_GREATER_EQUAL "8.0")
-  list(APPEND CUDA_KNOWN_GPU_ARCHITECTURES "Pascal")
-  list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "6.0" "6.1")
-  list(APPEND CUDA_ALL_GPU_ARCHITECTURES "6.0" "6.1" "6.2")
-
-  if(CUDA_VERSION VERSION_LESS "9.0")
-    list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "6.2+PTX")
-    set(CUDA_LIMIT_GPU_ARCHITECTURE "7.0")
-  endif()
-endif ()
-
-if(CUDA_VERSION VERSION_GREATER_EQUAL "9.0")
-  list(APPEND CUDA_KNOWN_GPU_ARCHITECTURES "Volta")
-  list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "7.0")
-  list(APPEND CUDA_ALL_GPU_ARCHITECTURES "7.0" "7.2")
-
-  if(CUDA_VERSION VERSION_LESS "10.0")
-    list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "7.2+PTX")
-    set(CUDA_LIMIT_GPU_ARCHITECTURE "8.0")
-  endif()
-endif()
-
-if(CUDA_VERSION VERSION_GREATER_EQUAL "10.0")
-  list(APPEND CUDA_KNOWN_GPU_ARCHITECTURES "Turing")
-  list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "7.5")
-  list(APPEND CUDA_ALL_GPU_ARCHITECTURES "7.5")
-
-  if(CUDA_VERSION VERSION_LESS "11.0")
-    set(CUDA_LIMIT_GPU_ARCHITECTURE "8.0")
-    list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "7.5+PTX")
-  endif()
-endif()
-
-if(CUDA_VERSION VERSION_GREATER_EQUAL "11.0")
-  list(APPEND CUDA_KNOWN_GPU_ARCHITECTURES "Ampere")
-  list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "8.0" "8.0+PTX")
-  list(APPEND CUDA_ALL_GPU_ARCHITECTURES "8.0")
-
-  if(CUDA_VERSION VERSION_LESS "12.0")
-    set(CUDA_LIMIT_GPU_ARCHITECTURE "9.0")
-  endif()
-endif()
-
-################################################################################################
-# A function for automatic detection of GPUs installed  (if autodetection is enabled)
-# Usage:
-#   CUDA_DETECT_INSTALLED_GPUS(OUT_VARIABLE)
-#
-function(CUDA_DETECT_INSTALLED_GPUS OUT_VARIABLE)
-  if(NOT CUDA_GPU_DETECT_OUTPUT)
-    if(CMAKE_CUDA_COMPILER_LOADED) # CUDA as a language
-      set(file "${PROJECT_BINARY_DIR}/detect_cuda_compute_capabilities.cu")
-    else()
-      set(file "${PROJECT_BINARY_DIR}/detect_cuda_compute_capabilities.cpp")
-    endif()
-
-    file(WRITE ${file} ""
-      "#include <cuda_runtime.h>\n"
-      "#include <cstdio>\n"
-      "int main()\n"
-      "{\n"
-      "  int count = 0;\n"
-      "  if (cudaSuccess != cudaGetDeviceCount(&count)) return -1;\n"
-      "  if (count == 0) return -1;\n"
-      "  for (int device = 0; device < count; ++device)\n"
-      "  {\n"
-      "    cudaDeviceProp prop;\n"
-      "    if (cudaSuccess == cudaGetDeviceProperties(&prop, device))\n"
-      "      std::printf(\"%d.%d \", prop.major, prop.minor);\n"
-      "  }\n"
-      "  return 0;\n"
-      "}\n")
-
-    if(CMAKE_CUDA_COMPILER_LOADED) # CUDA as a language
-      try_run(run_result compile_result ${PROJECT_BINARY_DIR} ${file}
-              RUN_OUTPUT_VARIABLE compute_capabilities)
-    else()
-      try_run(run_result compile_result ${PROJECT_BINARY_DIR} ${file}
-              CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${CUDA_INCLUDE_DIRS}"
-              LINK_LIBRARIES ${CUDA_LIBRARIES}
-              RUN_OUTPUT_VARIABLE compute_capabilities)
-    endif()
-
-    # Filter unrelated content out of the output.
-    string(REGEX MATCHALL "[0-9]+\\.[0-9]+" compute_capabilities "${compute_capabilities}")
-
-    if(run_result EQUAL 0)
-      string(REPLACE "2.1" "2.1(2.0)" compute_capabilities "${compute_capabilities}")
-      set(CUDA_GPU_DETECT_OUTPUT ${compute_capabilities}
-        CACHE INTERNAL "Returned GPU architectures from detect_gpus tool" FORCE)
-    endif()
-  endif()
-
-  if(NOT CUDA_GPU_DETECT_OUTPUT)
-    message(STATUS "Automatic GPU detection failed. Building for common architectures.")
-    set(${OUT_VARIABLE} ${CUDA_COMMON_GPU_ARCHITECTURES} PARENT_SCOPE)
-  else()
-    # Filter based on CUDA version supported archs
-    set(CUDA_GPU_DETECT_OUTPUT_FILTERED "")
-    separate_arguments(CUDA_GPU_DETECT_OUTPUT)
-    foreach(ITEM IN ITEMS ${CUDA_GPU_DETECT_OUTPUT})
-        if(CUDA_LIMIT_GPU_ARCHITECTURE AND ITEM VERSION_GREATER_EQUAL CUDA_LIMIT_GPU_ARCHITECTURE)
-        list(GET CUDA_COMMON_GPU_ARCHITECTURES -1 NEWITEM)
-        string(APPEND CUDA_GPU_DETECT_OUTPUT_FILTERED " ${NEWITEM}")
-      else()
-        string(APPEND CUDA_GPU_DETECT_OUTPUT_FILTERED " ${ITEM}")
-      endif()
-    endforeach()
-
-    set(${OUT_VARIABLE} ${CUDA_GPU_DETECT_OUTPUT_FILTERED} PARENT_SCOPE)
-  endif()
-endfunction()
-
-
-################################################################################################
-# Function for selecting GPU arch flags for nvcc based on CUDA architectures from parameter list
-# Usage:
-#   SELECT_NVCC_ARCH_FLAGS(out_variable [list of CUDA compute archs])
-function(CUDA_SELECT_NVCC_ARCH_FLAGS out_variable)
-  set(CUDA_ARCH_LIST "${ARGN}")
-
-  if("X${CUDA_ARCH_LIST}" STREQUAL "X" )
-    set(CUDA_ARCH_LIST "Auto")
-  endif()
-
-  set(cuda_arch_bin)
-  set(cuda_arch_ptx)
-
-  if("${CUDA_ARCH_LIST}" STREQUAL "All")
-    set(CUDA_ARCH_LIST ${CUDA_KNOWN_GPU_ARCHITECTURES})
-  elseif("${CUDA_ARCH_LIST}" STREQUAL "Common")
-    set(CUDA_ARCH_LIST ${CUDA_COMMON_GPU_ARCHITECTURES})
-  elseif("${CUDA_ARCH_LIST}" STREQUAL "Auto")
-    CUDA_DETECT_INSTALLED_GPUS(CUDA_ARCH_LIST)
-    message(STATUS "Autodetected CUDA architecture(s): ${CUDA_ARCH_LIST}")
-  endif()
-
-  # Now process the list and look for names
-  string(REGEX REPLACE "[ \t]+" ";" CUDA_ARCH_LIST "${CUDA_ARCH_LIST}")
-  list(REMOVE_DUPLICATES CUDA_ARCH_LIST)
-  foreach(arch_name ${CUDA_ARCH_LIST})
-    set(arch_bin)
-    set(arch_ptx)
-    set(add_ptx FALSE)
-    # Check to see if we are compiling PTX
-    if(arch_name MATCHES "(.*)\\+PTX$")
-      set(add_ptx TRUE)
-      set(arch_name ${CMAKE_MATCH_1})
-    endif()
-    if(arch_name MATCHES "^([0-9]\\.[0-9](\\([0-9]\\.[0-9]\\))?)$")
-      set(arch_bin ${CMAKE_MATCH_1})
-      set(arch_ptx ${arch_bin})
-    else()
-      # Look for it in our list of known architectures
-      if(${arch_name} STREQUAL "Fermi")
-        set(arch_bin 2.0 "2.1(2.0)")
-      elseif(${arch_name} STREQUAL "Kepler+Tegra")
-        set(arch_bin 3.2)
-      elseif(${arch_name} STREQUAL "Kepler+Tesla")
-        set(arch_bin 3.7)
-      elseif(${arch_name} STREQUAL "Kepler")
-        set(arch_bin 3.0 3.5)
-        set(arch_ptx 3.5)
-      elseif(${arch_name} STREQUAL "Maxwell+Tegra")
-        set(arch_bin 5.3)
-      elseif(${arch_name} STREQUAL "Maxwell")
-        set(arch_bin 5.0 5.2)
-        set(arch_ptx 5.2)
-      elseif(${arch_name} STREQUAL "Pascal")
-        set(arch_bin 6.0 6.1)
-        set(arch_ptx 6.1)
-      elseif(${arch_name} STREQUAL "Volta")
-        set(arch_bin 7.0 7.0)
-        set(arch_ptx 7.0)
-      elseif(${arch_name} STREQUAL "Turing")
-        set(arch_bin 7.5)
-        set(arch_ptx 7.5)
-      elseif(${arch_name} STREQUAL "Ampere")
-        set(arch_bin 8.0)
-        set(arch_ptx 8.0)
-      else()
-        message(SEND_ERROR "Unknown CUDA Architecture Name ${arch_name} in CUDA_SELECT_NVCC_ARCH_FLAGS")
-      endif()
-    endif()
-    if(NOT arch_bin)
-      message(SEND_ERROR "arch_bin wasn't set for some reason")
-    endif()
-    list(APPEND cuda_arch_bin ${arch_bin})
-    if(add_ptx)
-      if (NOT arch_ptx)
-        set(arch_ptx ${arch_bin})
-      endif()
-      list(APPEND cuda_arch_ptx ${arch_ptx})
-    endif()
-  endforeach()
-
-  # remove dots and convert to lists
-  string(REGEX REPLACE "\\." "" cuda_arch_bin "${cuda_arch_bin}")
-  string(REGEX REPLACE "\\." "" cuda_arch_ptx "${cuda_arch_ptx}")
-  string(REGEX MATCHALL "[0-9()]+" cuda_arch_bin "${cuda_arch_bin}")
-  string(REGEX MATCHALL "[0-9]+"   cuda_arch_ptx "${cuda_arch_ptx}")
-
-  if(cuda_arch_bin)
-    list(REMOVE_DUPLICATES cuda_arch_bin)
-  endif()
-  if(cuda_arch_ptx)
-    list(REMOVE_DUPLICATES cuda_arch_ptx)
-  endif()
-
-  set(nvcc_flags "")
-  set(nvcc_archs_readable "")
-
-  # Tell NVCC to add binaries for the specified GPUs
-  foreach(arch ${cuda_arch_bin})
-    if(arch MATCHES "([0-9]+)\\(([0-9]+)\\)")
-      # User explicitly specified ARCH for the concrete CODE
-      list(APPEND nvcc_flags -gencode arch=compute_${CMAKE_MATCH_2},code=sm_${CMAKE_MATCH_1})
-      list(APPEND nvcc_archs_readable sm_${CMAKE_MATCH_1})
-    else()
-      # User didn't explicitly specify ARCH for the concrete CODE, we assume ARCH=CODE
-      list(APPEND nvcc_flags -gencode arch=compute_${arch},code=sm_${arch})
-      list(APPEND nvcc_archs_readable sm_${arch})
-    endif()
-  endforeach()
-
-  # Tell NVCC to add PTX intermediate code for the specified architectures
-  foreach(arch ${cuda_arch_ptx})
-    list(APPEND nvcc_flags -gencode arch=compute_${arch},code=compute_${arch})
-    list(APPEND nvcc_archs_readable compute_${arch})
-  endforeach()
-
-  string(REPLACE ";" " " nvcc_archs_readable "${nvcc_archs_readable}")
-  set(${out_variable}          ${nvcc_flags}          PARENT_SCOPE)
-  set(${out_variable}_readable ${nvcc_archs_readable} PARENT_SCOPE)
-endfunction()
diff --git a/share/cmake-3.18/Modules/FindCUDAToolkit.cmake b/share/cmake-3.18/Modules/FindCUDAToolkit.cmake
deleted file mode 100644
index 47bc546..0000000
--- a/share/cmake-3.18/Modules/FindCUDAToolkit.cmake
+++ /dev/null
@@ -1,881 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindCUDAToolkit
----------------
-
-This script locates the NVIDIA CUDA toolkit and the associated libraries, but
-does not require the ``CUDA`` language be enabled for a given project. This
-module does not search for the NVIDIA CUDA Samples.
-
-Search Behavior
-^^^^^^^^^^^^^^^
-
-Finding the CUDA Toolkit requires finding the ``nvcc`` executable, which is
-searched for in the following order:
-
-1. If the ``CUDA`` language has been enabled we will use the directory
-   containing the compiler as the first search location for ``nvcc``.
-
-2. If the ``CUDAToolkit_ROOT`` cmake configuration variable (e.g.,
-   ``-DCUDAToolkit_ROOT=/some/path``) *or* environment variable is defined, it
-   will be searched.  If both an environment variable **and** a
-   configuration variable are specified, the *configuration* variable takes
-   precedence.
-
-   The directory specified here must be such that the executable ``nvcc`` can be
-   found underneath the directory specified by ``CUDAToolkit_ROOT``.  If
-   ``CUDAToolkit_ROOT`` is specified, but no ``nvcc`` is found underneath, this
-   package is marked as **not** found.  No subsequent search attempts are
-   performed.
-
-3. If the CUDA_PATH environment variable is defined, it will be searched.
-
-4. The user's path is searched for ``nvcc`` using :command:`find_program`.  If
-   this is found, no subsequent search attempts are performed.  Users are
-   responsible for ensuring that the first ``nvcc`` to show up in the path is
-   the desired path in the event that multiple CUDA Toolkits are installed.
-
-5. On Unix systems, if the symbolic link ``/usr/local/cuda`` exists, this is
-   used.  No subsequent search attempts are performed.  No default symbolic link
-   location exists for the Windows platform.
-
-6. The platform specific default install locations are searched.  If exactly one
-   candidate is found, this is used.  The default CUDA Toolkit install locations
-   searched are:
-
-   +-------------+-------------------------------------------------------------+
-   | Platform    | Search Pattern                                              |
-   +=============+=============================================================+
-   | macOS       | ``/Developer/NVIDIA/CUDA-X.Y``                              |
-   +-------------+-------------------------------------------------------------+
-   | Other Unix  | ``/usr/local/cuda-X.Y``                                     |
-   +-------------+-------------------------------------------------------------+
-   | Windows     | ``C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y`` |
-   +-------------+-------------------------------------------------------------+
-
-   Where ``X.Y`` would be a specific version of the CUDA Toolkit, such as
-   ``/usr/local/cuda-9.0`` or
-   ``C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0``
-
-   .. note::
-
-       When multiple CUDA Toolkits are installed in the default location of a
-       system (e.g., both ``/usr/local/cuda-9.0`` and ``/usr/local/cuda-10.0``
-       exist but the ``/usr/local/cuda`` symbolic link does **not** exist), this
-       package is marked as **not** found.
-
-       There are too many factors involved in making an automatic decision in
-       the presence of multiple CUDA Toolkits being installed.  In this
-       situation, users are encouraged to either (1) set ``CUDAToolkit_ROOT`` or
-       (2) ensure that the correct ``nvcc`` executable shows up in ``$PATH`` for
-       :command:`find_program` to find.
-
-Options
-^^^^^^^
-
-``VERSION``
-    If specified, describes the version of the CUDA Toolkit to search for.
-
-``REQUIRED``
-    If specified, configuration will error if a suitable CUDA Toolkit is not
-    found.
-
-``QUIET``
-    If specified, the search for a suitable CUDA Toolkit will not produce any
-    messages.
-
-``EXACT``
-    If specified, the CUDA Toolkit is considered found only if the exact
-    ``VERSION`` specified is recovered.
-
-Imported targets
-^^^^^^^^^^^^^^^^
-
-An :ref:`imported target <Imported targets>` named ``CUDA::toolkit`` is provided.
-
-This module defines :prop_tgt:`IMPORTED` targets for each
-of the following libraries that are part of the CUDAToolkit:
-
-- :ref:`CUDA Runtime Library<cuda_toolkit_rt_lib>`
-- :ref:`CUDA Driver Library<cuda_toolkit_driver_lib>`
-- :ref:`cuBLAS<cuda_toolkit_cuBLAS>`
-- :ref:`cuFFT<cuda_toolkit_cuFFT>`
-- :ref:`cuRAND<cuda_toolkit_cuRAND>`
-- :ref:`cuSOLVER<cuda_toolkit_cuSOLVER>`
-- :ref:`cuSPARSE<cuda_toolkit_cuSPARSE>`
-- :ref:`cuPTI<cuda_toolkit_cupti>`
-- :ref:`NPP<cuda_toolkit_NPP>`
-- :ref:`nvBLAS<cuda_toolkit_nvBLAS>`
-- :ref:`nvGRAPH<cuda_toolkit_nvGRAPH>`
-- :ref:`nvJPEG<cuda_toolkit_nvJPEG>`
-- :ref:`nvidia-ML<cuda_toolkit_nvML>`
-- :ref:`nvRTC<cuda_toolkit_nvRTC>`
-- :ref:`nvToolsExt<cuda_toolkit_nvToolsExt>`
-- :ref:`OpenCL<cuda_toolkit_opencl>`
-- :ref:`cuLIBOS<cuda_toolkit_cuLIBOS>`
-
-.. _`cuda_toolkit_rt_lib`:
-
-CUDA Runtime Library
-""""""""""""""""""""
-
-The CUDA Runtime library (cudart) are what most applications will typically
-need to link against to make any calls such as `cudaMalloc`, and `cudaFree`.
-
-Targets Created:
-
-- ``CUDA::cudart``
-- ``CUDA::cudart_static``
-
-.. _`cuda_toolkit_driver_lib`:
-
-CUDA Driver Library
-""""""""""""""""""""
-
-The CUDA Driver library (cuda) are used by applications that use calls
-such as `cuMemAlloc`, and `cuMemFree`. This is generally used by advanced
-
-
-Targets Created:
-
-- ``CUDA::cuda_driver``
-- ``CUDA::cuda_driver``
-
-.. _`cuda_toolkit_cuBLAS`:
-
-cuBLAS
-""""""
-
-The `cuBLAS <https://docs.nvidia.com/cuda/cublas/index.html>`_ library.
-
-Targets Created:
-
-- ``CUDA::cublas``
-- ``CUDA::cublas_static``
-- ``CUDA::cublasLt`` starting in CUDA 10.1
-- ``CUDA::cublasLt_static`` starting in CUDA 10.1
-
-.. _`cuda_toolkit_cuFFT`:
-
-cuFFT
-"""""
-
-The `cuFFT <https://docs.nvidia.com/cuda/cufft/index.html>`_ library.
-
-Targets Created:
-
-- ``CUDA::cufft``
-- ``CUDA::cufftw``
-- ``CUDA::cufft_static``
-- ``CUDA::cufftw_static``
-
-cuRAND
-""""""
-
-The `cuRAND <https://docs.nvidia.com/cuda/curand/index.html>`_ library.
-
-Targets Created:
-
-- ``CUDA::curand``
-- ``CUDA::curand_static``
-
-.. _`cuda_toolkit_cuSOLVER`:
-
-cuSOLVER
-""""""""
-
-The `cuSOLVER <https://docs.nvidia.com/cuda/cusolver/index.html>`_ library.
-
-Targets Created:
-
-- ``CUDA::cusolver``
-- ``CUDA::cusolver_static``
-
-.. _`cuda_toolkit_cuSPARSE`:
-
-cuSPARSE
-""""""""
-
-The `cuSPARSE <https://docs.nvidia.com/cuda/cusparse/index.html>`_ library.
-
-Targets Created:
-
-- ``CUDA::cusparse``
-- ``CUDA::cusparse_static``
-
-.. _`cuda_toolkit_cupti`:
-
-cupti
-"""""
-
-The `NVIDIA CUDA Profiling Tools Interface <https://developer.nvidia.com/CUPTI>`_.
-
-Targets Created:
-
-- ``CUDA::cupti``
-- ``CUDA::cupti_static``
-
-.. _`cuda_toolkit_NPP`:
-
-NPP
-"""
-
-The `NPP <https://docs.nvidia.com/cuda/npp/index.html>`_ libraries.
-
-Targets Created:
-
-- `nppc`:
-
-  - ``CUDA::nppc``
-  - ``CUDA::nppc_static``
-
-- `nppial`: Arithmetic and logical operation functions in `nppi_arithmetic_and_logical_operations.h`
-
-  - ``CUDA::nppial``
-  - ``CUDA::nppial_static``
-
-- `nppicc`: Color conversion and sampling functions in `nppi_color_conversion.h`
-
-  - ``CUDA::nppicc``
-  - ``CUDA::nppicc_static``
-
-- `nppicom`: JPEG compression and decompression functions in `nppi_compression_functions.h`
-  Removed starting in CUDA 11.0, use :ref:`nvJPEG<cuda_toolkit_nvJPEG>` instead.
-
-  - ``CUDA::nppicom``
-  - ``CUDA::nppicom_static``
-
-- `nppidei`: Data exchange and initialization functions in `nppi_data_exchange_and_initialization.h`
-
-  - ``CUDA::nppidei``
-  - ``CUDA::nppidei_static``
-
-- `nppif`: Filtering and computer vision functions in `nppi_filter_functions.h`
-
-  - ``CUDA::nppif``
-  - ``CUDA::nppif_static``
-
-- `nppig`: Geometry transformation functions found in `nppi_geometry_transforms.h`
-
-  - ``CUDA::nppig``
-  - ``CUDA::nppig_static``
-
-- `nppim`: Morphological operation functions found in `nppi_morphological_operations.h`
-
-  - ``CUDA::nppim``
-  - ``CUDA::nppim_static``
-
-- `nppist`: Statistics and linear transform in `nppi_statistics_functions.h` and `nppi_linear_transforms.h`
-
-  - ``CUDA::nppist``
-  - ``CUDA::nppist_static``
-
-- `nppisu`: Memory support functions in `nppi_support_functions.h`
-
-  - ``CUDA::nppisu``
-  - ``CUDA::nppisu_static``
-
-- `nppitc`: Threshold and compare operation functions in `nppi_threshold_and_compare_operations.h`
-
-  - ``CUDA::nppitc``
-  - ``CUDA::nppitc_static``
-
-- `npps`:
-
-  - ``CUDA::npps``
-  - ``CUDA::npps_static``
-
-.. _`cuda_toolkit_nvBLAS`:
-
-nvBLAS
-""""""
-
-The `nvBLAS <https://docs.nvidia.com/cuda/nvblas/index.html>`_ libraries.
-This is a shared library only.
-
-Targets Created:
-
-- ``CUDA::nvblas``
-
-.. _`cuda_toolkit_nvGRAPH`:
-
-nvGRAPH
-"""""""
-
-The `nvGRAPH <https://docs.nvidia.com/cuda/nvgraph/index.html>`_ library.
-Removed starting in CUDA 11.0
-
-Targets Created:
-
-- ``CUDA::nvgraph``
-- ``CUDA::nvgraph_static``
-
-
-.. _`cuda_toolkit_nvJPEG`:
-
-nvJPEG
-""""""
-
-The `nvJPEG <https://docs.nvidia.com/cuda/nvjpeg/index.html>`_ library.
-Introduced in CUDA 10.
-
-Targets Created:
-
-- ``CUDA::nvjpeg``
-- ``CUDA::nvjpeg_static``
-
-.. _`cuda_toolkit_nvRTC`:
-
-nvRTC
-"""""
-
-The `nvRTC <https://docs.nvidia.com/cuda/nvrtc/index.html>`_ (Runtime Compilation) library.
-This is a shared library only.
-
-Targets Created:
-
-- ``CUDA::nvrtc``
-
-.. _`cuda_toolkit_nvml`:
-
-nvidia-ML
-"""""""""
-
-The `NVIDIA Management Library <https://developer.nvidia.com/nvidia-management-library-nvml>`_.
-This is a shared library only.
-
-Targets Created:
-
-- ``CUDA::nvml``
-
-.. _`cuda_toolkit_nvToolsExt`:
-
-nvToolsExt
-""""""""""
-
-The `NVIDIA Tools Extension <https://docs.nvidia.com/gameworks/content/gameworkslibrary/nvtx/nvidia_tools_extension_library_nvtx.htm>`_.
-This is a shared library only.
-
-Targets Created:
-
-- ``CUDA::nvToolsExt``
-
-.. _`cuda_toolkit_opencl`:
-
-OpenCL
-""""""
-
-The `NVIDIA OpenCL Library <https://developer.nvidia.com/opencl>`_.
-This is a shared library only.
-
-Targets Created:
-
-- ``CUDA::OpenCL``
-
-.. _`cuda_toolkit_cuLIBOS`:
-
-cuLIBOS
-"""""""
-
-The cuLIBOS library is a backend thread abstraction layer library which is
-static only.  The ``CUDA::cublas_static``, ``CUDA::cusparse_static``,
-``CUDA::cufft_static``, ``CUDA::curand_static``, and (when implemented) NPP
-libraries all automatically have this dependency linked.
-
-Target Created:
-
-- ``CUDA::culibos``
-
-**Note**: direct usage of this target by consumers should not be necessary.
-
-.. _`cuda_toolkit_cuRAND`:
-
-
-
-Result variables
-^^^^^^^^^^^^^^^^
-
-``CUDAToolkit_FOUND``
-    A boolean specifying whether or not the CUDA Toolkit was found.
-
-``CUDAToolkit_VERSION``
-    The exact version of the CUDA Toolkit found (as reported by
-    ``nvcc --version``).
-
-``CUDAToolkit_VERSION_MAJOR``
-    The major version of the CUDA Toolkit.
-
-``CUDAToolkit_VERSION_MAJOR``
-    The minor version of the CUDA Toolkit.
-
-``CUDAToolkit_VERSION_PATCH``
-    The patch version of the CUDA Toolkit.
-
-``CUDAToolkit_BIN_DIR``
-    The path to the CUDA Toolkit library directory that contains the CUDA
-    executable ``nvcc``.
-
-``CUDAToolkit_INCLUDE_DIRS``
-    The path to the CUDA Toolkit ``include`` folder containing the header files
-    required to compile a project linking against CUDA.
-
-``CUDAToolkit_LIBRARY_DIR``
-    The path to the CUDA Toolkit library directory that contains the CUDA
-    Runtime library ``cudart``.
-
-``CUDAToolkit_LIBRARY_ROOT``
-    The path to the CUDA Toolkit directory containing the nvvm directory and
-    version.txt.
-
-``CUDAToolkit_TARGET_DIR``
-    The path to the CUDA Toolkit directory including the target architecture
-    when cross-compiling. When not cross-compiling this will be equivalant to
-    ``CUDAToolkit_ROOT_DIR``.
-
-``CUDAToolkit_NVCC_EXECUTABLE``
-    The path to the NVIDIA CUDA compiler ``nvcc``.  Note that this path may
-    **not** be the same as
-    :variable:`CMAKE_CUDA_COMPILER <CMAKE_<LANG>_COMPILER>`.  ``nvcc`` must be
-    found to determine the CUDA Toolkit version as well as determining other
-    features of the Toolkit.  This variable is set for the convenience of
-    modules that depend on this one.
-
-
-#]=======================================================================]
-
-# NOTE: much of this was simply extracted from FindCUDA.cmake.
-
-#   James Bigler, NVIDIA Corp (nvidia.com - jbigler)
-#   Abe Stephens, SCI Institute -- http://www.sci.utah.edu/~abe/FindCuda.html
-#
-#   Copyright (c) 2008 - 2009 NVIDIA Corporation.  All rights reserved.
-#
-#   Copyright (c) 2007-2009
-#   Scientific Computing and Imaging Institute, University of Utah
-#
-#   This code is licensed under the MIT License.  See the FindCUDA.cmake script
-#   for the text of the license.
-
-# The MIT License
-#
-# License for the specific language governing rights and limitations under
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-#
-###############################################################################
-
-# The toolkit is located during compiler detection for CUDA and stored in CMakeCUDACompiler.cmake as
-# CMAKE_CUDA_COMPILER_TOOLKIT_ROOT and CMAKE_CUDA_COMPILER_LIBRARY_ROOT.
-# We compute the rest based on those here to avoid re-searching and to avoid finding a possibly
-# different installation.
-if(CMAKE_CUDA_COMPILER_TOOLKIT_ROOT)
-  set(CUDAToolkit_ROOT_DIR "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}")
-  set(CUDAToolkit_LIBRARY_ROOT "${CMAKE_CUDA_COMPILER_LIBRARY_ROOT}")
-  set(CUDAToolkit_BIN_DIR "${CUDAToolkit_ROOT_DIR}/bin")
-  set(CUDAToolkit_NVCC_EXECUTABLE "${CUDAToolkit_BIN_DIR}/nvcc${CMAKE_EXECUTABLE_SUFFIX}")
-else()
-  # For NVCC we can easily deduce the SDK binary directory from the compiler path.
-  if(CMAKE_CUDA_COMPILER_LOADED AND NOT CUDAToolkit_BIN_DIR AND CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
-    get_filename_component(CUDAToolkit_BIN_DIR "${CMAKE_CUDA_COMPILER}" DIRECTORY)
-    set(CUDAToolkit_BIN_DIR "${CUDAToolkit_BIN_DIR}" CACHE PATH "")
-    mark_as_advanced(CUDAToolkit_BIN_DIR)
-  endif()
-
-  # Try language- or user-provided path first.
-  if(CUDAToolkit_BIN_DIR)
-    find_program(CUDAToolkit_NVCC_EXECUTABLE
-      NAMES nvcc nvcc.exe
-      PATHS ${CUDAToolkit_BIN_DIR}
-      NO_DEFAULT_PATH
-    )
-  endif()
-
-  # Search using CUDAToolkit_ROOT
-  find_program(CUDAToolkit_NVCC_EXECUTABLE
-    NAMES nvcc nvcc.exe
-    PATHS ENV CUDA_PATH
-    PATH_SUFFIXES bin
-  )
-
-  # If the user specified CUDAToolkit_ROOT but nvcc could not be found, this is an error.
-  if(NOT CUDAToolkit_NVCC_EXECUTABLE AND (DEFINED CUDAToolkit_ROOT OR DEFINED ENV{CUDAToolkit_ROOT}))
-    # Declare error messages now, print later depending on find_package args.
-    set(fail_base "Could not find nvcc executable in path specified by")
-    set(cuda_root_fail "${fail_base} CUDAToolkit_ROOT=${CUDAToolkit_ROOT}")
-    set(env_cuda_root_fail "${fail_base} environment variable CUDAToolkit_ROOT=$ENV{CUDAToolkit_ROOT}")
-
-    if(CUDAToolkit_FIND_REQUIRED)
-      if(DEFINED CUDAToolkit_ROOT)
-        message(FATAL_ERROR ${cuda_root_fail})
-      elseif(DEFINED ENV{CUDAToolkit_ROOT})
-        message(FATAL_ERROR ${env_cuda_root_fail})
-      endif()
-    else()
-      if(NOT CUDAToolkit_FIND_QUIETLY)
-        if(DEFINED CUDAToolkit_ROOT)
-          message(STATUS ${cuda_root_fail})
-        elseif(DEFINED ENV{CUDAToolkit_ROOT})
-          message(STATUS ${env_cuda_root_fail})
-        endif()
-      endif()
-      set(CUDAToolkit_FOUND FALSE)
-      unset(fail_base)
-      unset(cuda_root_fail)
-      unset(env_cuda_root_fail)
-      return()
-    endif()
-  endif()
-
-  # CUDAToolkit_ROOT cmake / env variable not specified, try platform defaults.
-  #
-  # - Linux: /usr/local/cuda-X.Y
-  # - macOS: /Developer/NVIDIA/CUDA-X.Y
-  # - Windows: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y
-  #
-  # We will also search the default symlink location /usr/local/cuda first since
-  # if CUDAToolkit_ROOT is not specified, it is assumed that the symlinked
-  # directory is the desired location.
-  if(NOT CUDAToolkit_NVCC_EXECUTABLE)
-    if(UNIX)
-      if(NOT APPLE)
-        set(platform_base "/usr/local/cuda-")
-      else()
-        set(platform_base "/Developer/NVIDIA/CUDA-")
-      endif()
-    else()
-      set(platform_base "C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v")
-    endif()
-
-    # Build out a descending list of possible cuda installations, e.g.
-    file(GLOB possible_paths "${platform_base}*")
-    # Iterate the glob results and create a descending list.
-    set(versions)
-    foreach(p ${possible_paths})
-      # Extract version number from end of string
-      string(REGEX MATCH "[0-9][0-9]?\\.[0-9]$" p_version ${p})
-      if(IS_DIRECTORY ${p} AND p_version)
-        list(APPEND versions ${p_version})
-      endif()
-    endforeach()
-
-    # Sort numerically in descending order, so we try the newest versions first.
-    list(SORT versions COMPARE NATURAL ORDER DESCENDING)
-
-    # With a descending list of versions, populate possible paths to search.
-    set(search_paths)
-    foreach(v ${versions})
-      list(APPEND search_paths "${platform_base}${v}")
-    endforeach()
-
-    # Force the global default /usr/local/cuda to the front on Unix.
-    if(UNIX)
-      list(INSERT search_paths 0 "/usr/local/cuda")
-    endif()
-
-    # Now search for nvcc again using the platform default search paths.
-    find_program(CUDAToolkit_NVCC_EXECUTABLE
-      NAMES nvcc nvcc.exe
-      PATHS ${search_paths}
-      PATH_SUFFIXES bin
-    )
-
-    # We are done with these variables now, cleanup for caller.
-    unset(platform_base)
-    unset(possible_paths)
-    unset(versions)
-    unset(search_paths)
-
-    if(NOT CUDAToolkit_NVCC_EXECUTABLE)
-      if(CUDAToolkit_FIND_REQUIRED)
-        message(FATAL_ERROR "Could not find nvcc, please set CUDAToolkit_ROOT.")
-      elseif(NOT CUDAToolkit_FIND_QUIETLY)
-        message(STATUS "Could not find nvcc, please set CUDAToolkit_ROOT.")
-      endif()
-
-      set(CUDAToolkit_FOUND FALSE)
-      return()
-    endif()
-  endif()
-
-  if(NOT CUDAToolkit_BIN_DIR AND CUDAToolkit_NVCC_EXECUTABLE)
-    get_filename_component(CUDAToolkit_BIN_DIR "${CUDAToolkit_NVCC_EXECUTABLE}" DIRECTORY)
-    set(CUDAToolkit_BIN_DIR "${CUDAToolkit_BIN_DIR}" CACHE PATH "" FORCE)
-    mark_as_advanced(CUDAToolkit_BIN_DIR)
-  endif()
-
-  get_filename_component(CUDAToolkit_ROOT_DIR ${CUDAToolkit_BIN_DIR} DIRECTORY ABSOLUTE)
-
-  # CUDAToolkit_LIBRARY_ROOT contains the device library and version file.
-  # In a non-scattered installation this is equivalent to CUDAToolkit_ROOT_DIR.
-  # We first check for a non-scattered installation to prefer it over a scattered installation.
-  if(EXISTS "${CUDAToolkit_ROOT_DIR}/version.txt")
-    set(CUDAToolkit_LIBRARY_ROOT "${CUDAToolkit_ROOT_DIR}")
-  elseif(CMAKE_SYSROOT_LINK AND EXISTS "${CMAKE_SYSROOT_LINK}/usr/lib/cuda/version.txt")
-    set(CUDAToolkit_LIBRARY_ROOT "${CMAKE_SYSROOT_LINK}/usr/lib/cuda")
-  elseif(EXISTS "${CMAKE_SYSROOT}/usr/lib/cuda/version.txt")
-    set(CUDAToolkit_LIBRARY_ROOT "${CMAKE_SYSROOT}/usr/lib/cuda")
-  endif()
-endif()
-
-# Handle cross compilation
-if(CMAKE_CROSSCOMPILING)
-  if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a")
-    # Support for NVPACK
-    set(CUDAToolkit_TARGET_NAME "armv7-linux-androideabi")
-  elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
-    # Support for arm cross compilation
-    set(CUDAToolkit_TARGET_NAME "armv7-linux-gnueabihf")
-  elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
-    # Support for aarch64 cross compilation
-    if(ANDROID_ARCH_NAME STREQUAL "arm64")
-      set(CUDAToolkit_TARGET_NAME "aarch64-linux-androideabi")
-    else()
-      set(CUDAToolkit_TARGET_NAME "aarch64-linux")
-    endif(ANDROID_ARCH_NAME STREQUAL "arm64")
-  elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
-    set(CUDAToolkit_TARGET_NAME "x86_64-linux")
-  endif()
-
-  if(EXISTS "${CUDAToolkit_ROOT_DIR}/targets/${CUDAToolkit_TARGET_NAME}")
-    set(CUDAToolkit_TARGET_DIR "${CUDAToolkit_ROOT_DIR}/targets/${CUDAToolkit_TARGET_NAME}")
-    # add known CUDA target root path to the set of directories we search for programs, libraries and headers
-    list(PREPEND CMAKE_FIND_ROOT_PATH "${CUDAToolkit_TARGET_DIR}")
-
-    # Mark that we need to pop the root search path changes after we have
-    # found all cuda libraries so that searches for our cross-compilation
-    # libraries work when another cuda sdk is in CMAKE_PREFIX_PATH or
-    # PATh
-    set(_CUDAToolkit_Pop_ROOT_PATH True)
-  endif()
-else()
-  # Not cross compiling
-  set(CUDAToolkit_TARGET_DIR "${CUDAToolkit_ROOT_DIR}")
-  # Now that we have the real ROOT_DIR, find components inside it.
-  list(APPEND CMAKE_PREFIX_PATH ${CUDAToolkit_ROOT_DIR})
-
-  # Mark that we need to pop the prefix path changes after we have
-  # found the cudart library.
-  set(_CUDAToolkit_Pop_Prefix True)
-endif()
-
-# CUDAToolkit_TARGET_DIR always points to the directory containing the include directory.
-# On a scattered installation /usr, on a non-scattered something like /usr/local/cuda or /usr/local/cuda-10.2/targets/aarch64-linux.
-if(EXISTS "${CUDAToolkit_TARGET_DIR}/include/cuda_runtime.h")
-  set(CUDAToolkit_INCLUDE_DIR "${CUDAToolkit_TARGET_DIR}/include")
-elseif(NOT CUDAToolkit_FIND_QUIETLY)
-  message(STATUS "Unable to find cuda_runtime.h in \"${CUDAToolkit_TARGET_DIR}/include\" for CUDAToolkit_INCLUDE_DIR.")
-endif()
-
-if(CUDAToolkit_NVCC_EXECUTABLE AND
-   CUDAToolkit_NVCC_EXECUTABLE STREQUAL CMAKE_CUDA_COMPILER)
-  # Need to set these based off the already computed CMAKE_CUDA_COMPILER_VERSION value
-  # This if statement will always match, but is used to provide variables for MATCH 1,2,3...
-  if(CMAKE_CUDA_COMPILER_VERSION MATCHES [=[([0-9]+)\.([0-9]+)\.([0-9]+)]=])
-    set(CUDAToolkit_VERSION_MAJOR "${CMAKE_MATCH_1}")
-    set(CUDAToolkit_VERSION_MINOR "${CMAKE_MATCH_2}")
-    set(CUDAToolkit_VERSION_PATCH "${CMAKE_MATCH_3}")
-    set(CUDAToolkit_VERSION "${CMAKE_CUDA_COMPILER_VERSION}")
-  endif()
-else()
-  # Compute the version by invoking nvcc
-  execute_process(COMMAND ${CUDAToolkit_NVCC_EXECUTABLE} "--version" OUTPUT_VARIABLE NVCC_OUT)
-  if(NVCC_OUT MATCHES [=[ V([0-9]+)\.([0-9]+)\.([0-9]+)]=])
-    set(CUDAToolkit_VERSION_MAJOR "${CMAKE_MATCH_1}")
-    set(CUDAToolkit_VERSION_MINOR "${CMAKE_MATCH_2}")
-    set(CUDAToolkit_VERSION_PATCH "${CMAKE_MATCH_3}")
-    set(CUDAToolkit_VERSION  "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}")
-  endif()
-  unset(NVCC_OUT)
-endif()
-
-# Find the CUDA Runtime Library libcudart
-find_library(CUDA_CUDART
-  NAMES cudart
-  PATH_SUFFIXES lib64 lib/x64
-)
-find_library(CUDA_CUDART
-  NAMES cudart
-  PATH_SUFFIXES lib64/stubs lib/x64/stubs
-)
-
-if(NOT CUDA_CUDART AND NOT CUDAToolkit_FIND_QUIETLY)
-  message(STATUS "Unable to find cudart library.")
-endif()
-
-unset(CUDAToolkit_ROOT_DIR)
-if(_CUDAToolkit_Pop_Prefix)
-  list(REMOVE_AT CMAKE_PREFIX_PATH -1)
-  unset(_CUDAToolkit_Pop_Prefix)
-endif()
-
-#-----------------------------------------------------------------------------
-# Perform version comparison and validate all required variables are set.
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(CUDAToolkit
-  REQUIRED_VARS
-    CUDAToolkit_INCLUDE_DIR
-    CUDA_CUDART
-    CUDAToolkit_NVCC_EXECUTABLE
-  VERSION_VAR
-    CUDAToolkit_VERSION
-)
-mark_as_advanced(CUDA_CUDART
-                 CUDAToolkit_INCLUDE_DIR
-                 CUDAToolkit_NVCC_EXECUTABLE
-                 )
-
-#-----------------------------------------------------------------------------
-# Construct result variables
-if(CUDAToolkit_FOUND)
-  set(CUDAToolkit_INCLUDE_DIRS ${CUDAToolkit_INCLUDE_DIR})
-  get_filename_component(CUDAToolkit_LIBRARY_DIR ${CUDA_CUDART} DIRECTORY ABSOLUTE)
-endif()
-
-#-----------------------------------------------------------------------------
-# Construct import targets
-if(CUDAToolkit_FOUND)
-
-  function(_CUDAToolkit_find_and_add_import_lib lib_name)
-    cmake_parse_arguments(arg "" "" "ALT;DEPS;EXTRA_PATH_SUFFIXES" ${ARGN})
-
-    set(search_names ${lib_name} ${arg_ALT})
-
-    find_library(CUDA_${lib_name}_LIBRARY
-      NAMES ${search_names}
-      HINTS ${CUDAToolkit_LIBRARY_DIR}
-            ENV CUDA_PATH
-      PATH_SUFFIXES nvidia/current lib64 lib/x64 lib
-                    ${arg_EXTRA_PATH_SUFFIXES}
-    )
-    # Don't try any stub directories until we have exhausted all other
-    # search locations.
-    find_library(CUDA_${lib_name}_LIBRARY
-      NAMES ${search_names}
-      HINTS ${CUDAToolkit_LIBRARY_DIR}
-            ENV CUDA_PATH
-      PATH_SUFFIXES lib64/stubs lib/x64/stubs lib/stubs stubs
-    )
-
-    mark_as_advanced(CUDA_${lib_name}_LIBRARY)
-
-    if (NOT TARGET CUDA::${lib_name} AND CUDA_${lib_name}_LIBRARY)
-      add_library(CUDA::${lib_name} IMPORTED INTERFACE)
-      target_include_directories(CUDA::${lib_name} SYSTEM INTERFACE "${CUDAToolkit_INCLUDE_DIRS}")
-      target_link_libraries(CUDA::${lib_name} INTERFACE "${CUDA_${lib_name}_LIBRARY}")
-      foreach(dep ${arg_DEPS})
-        if(TARGET CUDA::${dep})
-          target_link_libraries(CUDA::${lib_name} INTERFACE CUDA::${dep})
-        endif()
-      endforeach()
-    endif()
-  endfunction()
-
-  if(NOT TARGET CUDA::toolkit)
-    add_library(CUDA::toolkit IMPORTED INTERFACE)
-    target_include_directories(CUDA::toolkit SYSTEM INTERFACE "${CUDAToolkit_INCLUDE_DIRS}")
-    target_link_directories(CUDA::toolkit INTERFACE "${CUDAToolkit_LIBRARY_DIR}")
-  endif()
-
-  _CUDAToolkit_find_and_add_import_lib(cuda_driver ALT cuda)
-
-  _CUDAToolkit_find_and_add_import_lib(cudart)
-  _CUDAToolkit_find_and_add_import_lib(cudart_static)
-
-  # setup dependencies that are required for cudart_static when building
-  # on linux. These are generally only required when using the CUDA toolkit
-  # when CUDA language is disabled
-  if(NOT TARGET CUDA::cudart_static_deps
-     AND TARGET CUDA::cudart_static)
-
-    add_library(CUDA::cudart_static_deps IMPORTED INTERFACE)
-    target_link_libraries(CUDA::cudart_static INTERFACE CUDA::cudart_static_deps)
-
-    if(UNIX AND (CMAKE_C_COMPILER OR CMAKE_CXX_COMPILER))
-      find_package(Threads REQUIRED)
-      target_link_libraries(CUDA::cudart_static_deps INTERFACE Threads::Threads ${CMAKE_DL_LIBS})
-    endif()
-
-    if(UNIX AND NOT APPLE)
-      # On Linux, you must link against librt when using the static cuda runtime.
-      find_library(CUDAToolkit_rt_LIBRARY rt)
-      mark_as_advanced(CUDAToolkit_rt_LIBRARY)
-      if(NOT CUDAToolkit_rt_LIBRARY)
-        message(WARNING "Could not find librt library, needed by CUDA::cudart_static")
-      else()
-        target_link_libraries(CUDA::cudart_static_deps INTERFACE ${CUDAToolkit_rt_LIBRARY})
-      endif()
-    endif()
-  endif()
-
-  _CUDAToolkit_find_and_add_import_lib(culibos) # it's a static library
-  foreach (cuda_lib cublasLt cublas cufft curand cusparse nppc nvjpeg)
-    _CUDAToolkit_find_and_add_import_lib(${cuda_lib})
-    _CUDAToolkit_find_and_add_import_lib(${cuda_lib}_static DEPS culibos)
-  endforeach()
-
-  # cuFFTW depends on cuFFT
-  _CUDAToolkit_find_and_add_import_lib(cufftw DEPS cufft)
-  _CUDAToolkit_find_and_add_import_lib(cufftw DEPS cufft_static)
-
-  # cuSOLVER depends on cuBLAS, and cuSPARSE
-  _CUDAToolkit_find_and_add_import_lib(cusolver DEPS cublas cusparse)
-  _CUDAToolkit_find_and_add_import_lib(cusolver_static DEPS cublas_static cusparse_static culibos)
-
-  # nvGRAPH depends on cuRAND, and cuSOLVER.
-  _CUDAToolkit_find_and_add_import_lib(nvgraph DEPS curand cusolver)
-  _CUDAToolkit_find_and_add_import_lib(nvgraph_static DEPS curand_static cusolver_static)
-
-  # Process the majority of the NPP libraries.
-  foreach (cuda_lib nppial nppicc nppidei nppif nppig nppim nppist nppitc npps nppicom nppisu)
-    _CUDAToolkit_find_and_add_import_lib(${cuda_lib} DEPS nppc)
-    _CUDAToolkit_find_and_add_import_lib(${cuda_lib}_static DEPS nppc_static)
-  endforeach()
-
-  _CUDAToolkit_find_and_add_import_lib(cupti
-                                       EXTRA_PATH_SUFFIXES ../extras/CUPTI/lib64/
-                                                           ../extras/CUPTI/lib/)
-  _CUDAToolkit_find_and_add_import_lib(cupti_static
-                                       EXTRA_PATH_SUFFIXES ../extras/CUPTI/lib64/
-                                                           ../extras/CUPTI/lib/)
-
-  _CUDAToolkit_find_and_add_import_lib(nvrtc DEPS cuda_driver)
-
-  _CUDAToolkit_find_and_add_import_lib(nvml ALT nvidia-ml nvml)
-
-  if(WIN32)
-    # nvtools can be installed outside the CUDA toolkit directory
-    # so prefer the NVTOOLSEXT_PATH windows only environment variable
-    # In addition on windows the most common name is nvToolsExt64_1
-    find_library(CUDA_nvToolsExt_LIBRARY
-      NAMES nvToolsExt64_1 nvToolsExt64 nvToolsExt
-      PATHS ENV NVTOOLSEXT_PATH
-            ENV CUDA_PATH
-      PATH_SUFFIXES lib/x64 lib
-    )
-  endif()
-  _CUDAToolkit_find_and_add_import_lib(nvToolsExt ALT nvToolsExt64)
-
-  _CUDAToolkit_find_and_add_import_lib(OpenCL)
-endif()
-
-if(_CUDAToolkit_Pop_ROOT_PATH)
-  list(REMOVE_AT CMAKE_FIND_ROOT_PATH 0)
-  unset(_CUDAToolkit_Pop_ROOT_PATH)
-endif()
diff --git a/share/cmake-3.18/Modules/FindCURL.cmake b/share/cmake-3.18/Modules/FindCURL.cmake
deleted file mode 100644
index be7e16e..0000000
--- a/share/cmake-3.18/Modules/FindCURL.cmake
+++ /dev/null
@@ -1,203 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindCURL
---------
-
-Find the native CURL headers and libraries.
-
-This module accept optional COMPONENTS to check supported features and
-protocols::
-
-  PROTOCOLS: ICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS LDAP LDAPS POP3
-             POP3S RTMP RTSP SCP SFTP SMB SMBS SMTP SMTPS TELNET TFTP
-  FEATURES:  SSL IPv6 UnixSockets libz AsynchDNS IDN GSS-API PSL SPNEGO
-             Kerberos NTLM NTLM_WB TLS-SRP HTTP2 HTTPS-proxy
-
-IMPORTED Targets
-^^^^^^^^^^^^^^^^
-
-This module defines :prop_tgt:`IMPORTED` target ``CURL::libcurl``, if
-curl has been found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module defines the following variables:
-
-``CURL_FOUND``
-  "True" if ``curl`` found.
-
-``CURL_INCLUDE_DIRS``
-  where to find ``curl``/``curl.h``, etc.
-
-``CURL_LIBRARIES``
-  List of libraries when using ``curl``.
-
-``CURL_VERSION_STRING``
-  The version of ``curl`` found.
-
-CURL CMake
-^^^^^^^^^^
-
-If CURL was built using the CMake buildsystem then it provides its own
-``CURLConfig.cmake`` file for use with the :command:`find_package` command's
-config mode. This module looks for this file and, if found,
-returns its results with no further action.
-
-Set ``CURL_NO_CURL_CMAKE`` to ``ON`` to disable this search.
-
-#]=======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-
-if(NOT CURL_NO_CURL_CMAKE)
-  # do a find package call to specifically look for the CMake version
-  # of curl
-  find_package(CURL QUIET NO_MODULE)
-  mark_as_advanced(CURL_DIR)
-
-  # if we found the CURL cmake package then we are done, and
-  # can print what we found and return.
-  if(CURL_FOUND)
-    find_package_handle_standard_args(CURL HANDLE_COMPONENTS CONFIG_MODE)
-    return()
-  endif()
-endif()
-
-find_package(PkgConfig QUIET)
-if(PKG_CONFIG_FOUND)
-  pkg_check_modules(PC_CURL QUIET libcurl)
-  if(PC_CURL_FOUND)
-    set(CURL_VERSION_STRING ${PC_CURL_VERSION})
-    pkg_get_variable(CURL_SUPPORTED_PROTOCOLS libcurl supported_protocols)
-    pkg_get_variable(CURL_SUPPORTED_FEATURES libcurl supported_features)
-  endif()
-endif()
-
-# Look for the header file.
-find_path(CURL_INCLUDE_DIR
-          NAMES curl/curl.h
-          HINTS ${PC_CURL_INCLUDE_DIRS})
-mark_as_advanced(CURL_INCLUDE_DIR)
-
-if(NOT CURL_LIBRARY)
-  # Look for the library (sorted from most current/relevant entry to least).
-  find_library(CURL_LIBRARY_RELEASE NAMES
-      curl
-    # Windows MSVC prebuilts:
-      curllib
-      libcurl_imp
-      curllib_static
-    # Windows older "Win32 - MSVC" prebuilts (libcurl.lib, e.g. libcurl-7.15.5-win32-msvc.zip):
-      libcurl
-      HINTS ${PC_CURL_LIBRARY_DIRS}
-  )
-  mark_as_advanced(CURL_LIBRARY_RELEASE)
-
-  find_library(CURL_LIBRARY_DEBUG NAMES
-    # Windows MSVC CMake builds in debug configuration on vcpkg:
-      libcurl-d_imp
-      libcurl-d
-      HINTS ${PC_CURL_LIBRARY_DIRS}
-  )
-  mark_as_advanced(CURL_LIBRARY_DEBUG)
-
-  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-  select_library_configurations(CURL)
-endif()
-
-if(CURL_INCLUDE_DIR AND NOT CURL_VERSION_STRING)
-  foreach(_curl_version_header curlver.h curl.h)
-    if(EXISTS "${CURL_INCLUDE_DIR}/curl/${_curl_version_header}")
-      file(STRINGS "${CURL_INCLUDE_DIR}/curl/${_curl_version_header}" curl_version_str REGEX "^#define[\t ]+LIBCURL_VERSION[\t ]+\".*\"")
-
-      string(REGEX REPLACE "^#define[\t ]+LIBCURL_VERSION[\t ]+\"([^\"]*)\".*" "\\1" CURL_VERSION_STRING "${curl_version_str}")
-      unset(curl_version_str)
-      break()
-    endif()
-  endforeach()
-endif()
-
-if(CURL_FIND_COMPONENTS)
-  set(CURL_KNOWN_PROTOCOLS ICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS LDAP LDAPS POP3 POP3S RTMP RTSP SCP SFTP SMB SMBS SMTP SMTPS TELNET TFTP)
-  set(CURL_KNOWN_FEATURES  SSL IPv6 UnixSockets libz AsynchDNS IDN GSS-API PSL SPNEGO Kerberos NTLM NTLM_WB TLS-SRP HTTP2 HTTPS-proxy)
-  foreach(component IN LISTS CURL_KNOWN_PROTOCOLS CURL_KNOWN_FEATURES)
-    set(CURL_${component}_FOUND FALSE)
-  endforeach()
-  if(NOT PC_CURL_FOUND)
-    find_program(CURL_CONFIG_EXECUTABLE NAMES curl-config)
-    if(CURL_CONFIG_EXECUTABLE)
-      execute_process(COMMAND ${CURL_CONFIG_EXECUTABLE} --version
-                      OUTPUT_VARIABLE CURL_CONFIG_VERSION_STRING
-                      ERROR_QUIET
-                      OUTPUT_STRIP_TRAILING_WHITESPACE)
-      execute_process(COMMAND ${CURL_CONFIG_EXECUTABLE} --feature
-                      OUTPUT_VARIABLE CURL_CONFIG_FEATURES_STRING
-                      ERROR_QUIET
-                      OUTPUT_STRIP_TRAILING_WHITESPACE)
-      string(REPLACE "\n" ";" CURL_SUPPORTED_FEATURES "${CURL_CONFIG_FEATURES_STRING}")
-      execute_process(COMMAND ${CURL_CONFIG_EXECUTABLE} --protocols
-                      OUTPUT_VARIABLE CURL_CONFIG_PROTOCOLS_STRING
-                      ERROR_QUIET
-                      OUTPUT_STRIP_TRAILING_WHITESPACE)
-      string(REPLACE "\n" ";" CURL_SUPPORTED_PROTOCOLS "${CURL_CONFIG_PROTOCOLS_STRING}")
-    endif()
-
-  endif()
-  foreach(component IN LISTS CURL_FIND_COMPONENTS)
-    list(FIND CURL_KNOWN_PROTOCOLS ${component} _found)
-    if(NOT _found EQUAL -1)
-      list(FIND CURL_SUPPORTED_PROTOCOLS ${component} _found)
-      if(NOT _found EQUAL -1)
-        set(CURL_${component}_FOUND TRUE)
-      elseif(CURL_FIND_REQUIRED)
-        message(FATAL_ERROR "CURL: Required protocol ${component} is not found")
-      endif()
-    else()
-      list(FIND CURL_SUPPORTED_FEATURES ${component} _found)
-      if(NOT _found EQUAL -1)
-        set(CURL_${component}_FOUND TRUE)
-      elseif(CURL_FIND_REQUIRED)
-        message(FATAL_ERROR "CURL: Required feature ${component} is not found")
-      endif()
-    endif()
-  endforeach()
-endif()
-
-find_package_handle_standard_args(CURL
-                                  REQUIRED_VARS CURL_LIBRARY CURL_INCLUDE_DIR
-                                  VERSION_VAR CURL_VERSION_STRING
-                                  HANDLE_COMPONENTS)
-
-if(CURL_FOUND)
-  set(CURL_LIBRARIES ${CURL_LIBRARY})
-  set(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIR})
-
-  if(NOT TARGET CURL::libcurl)
-    add_library(CURL::libcurl UNKNOWN IMPORTED)
-    set_target_properties(CURL::libcurl PROPERTIES
-      INTERFACE_INCLUDE_DIRECTORIES "${CURL_INCLUDE_DIRS}")
-
-    if(EXISTS "${CURL_LIBRARY}")
-      set_target_properties(CURL::libcurl PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-        IMPORTED_LOCATION "${CURL_LIBRARY}")
-    endif()
-    if(CURL_LIBRARY_RELEASE)
-      set_property(TARGET CURL::libcurl APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS RELEASE)
-      set_target_properties(CURL::libcurl PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-        IMPORTED_LOCATION_RELEASE "${CURL_LIBRARY_RELEASE}")
-    endif()
-    if(CURL_LIBRARY_DEBUG)
-      set_property(TARGET CURL::libcurl APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS DEBUG)
-      set_target_properties(CURL::libcurl PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-        IMPORTED_LOCATION_DEBUG "${CURL_LIBRARY_DEBUG}")
-    endif()
-  endif()
-endif()
diff --git a/share/cmake-3.18/Modules/FindCups.cmake b/share/cmake-3.18/Modules/FindCups.cmake
deleted file mode 100644
index 4e8232d..0000000
--- a/share/cmake-3.18/Modules/FindCups.cmake
+++ /dev/null
@@ -1,98 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindCups
---------
-
-Find the Common UNIX Printing System (CUPS).
-
-Set ``CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE`` to ``TRUE`` if you need a version which
-features this function (i.e. at least ``1.1.19``)
-
-Imported targets
-^^^^^^^^^^^^^^^^
-
-This module defines :prop_tgt:`IMPORTED` target ``Cups::Cups``, if Cups has
-been found.
-
-Result variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``CUPS_FOUND``
-  true if CUPS headers and libraries were found
-``CUPS_INCLUDE_DIRS``
-  the directory containing the Cups headers
-``CUPS_LIBRARIES``
-  the libraries to link against to use CUPS.
-``CUPS_VERSION_STRING``
-  the version of CUPS found (since CMake 2.8.8)
-
-Cache variables
-^^^^^^^^^^^^^^^
-
-The following cache variables may also be set:
-
-``CUPS_INCLUDE_DIR``
-  the directory containing the Cups headers
-#]=======================================================================]
-
-find_path(CUPS_INCLUDE_DIR cups/cups.h )
-
-find_library(CUPS_LIBRARIES NAMES cups )
-
-if (CUPS_INCLUDE_DIR AND CUPS_LIBRARIES AND CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE)
-    include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake)
-    include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
-    cmake_push_check_state()
-    set(CMAKE_REQUIRED_QUIET ${Cups_FIND_QUIETLY})
-
-    # ippDeleteAttribute is new in cups-1.1.19 (and used by kdeprint)
-    CHECK_LIBRARY_EXISTS(cups ippDeleteAttribute "" CUPS_HAS_IPP_DELETE_ATTRIBUTE)
-    cmake_pop_check_state()
-endif ()
-
-if (CUPS_INCLUDE_DIR AND EXISTS "${CUPS_INCLUDE_DIR}/cups/cups.h")
-    file(STRINGS "${CUPS_INCLUDE_DIR}/cups/cups.h" cups_version_str
-         REGEX "^#[\t ]*define[\t ]+CUPS_VERSION_(MAJOR|MINOR|PATCH)[\t ]+[0-9]+$")
-
-    unset(CUPS_VERSION_STRING)
-    foreach(VPART MAJOR MINOR PATCH)
-        foreach(VLINE ${cups_version_str})
-            if(VLINE MATCHES "^#[\t ]*define[\t ]+CUPS_VERSION_${VPART}[\t ]+([0-9]+)$")
-                set(CUPS_VERSION_PART "${CMAKE_MATCH_1}")
-                if(CUPS_VERSION_STRING)
-                    string(APPEND CUPS_VERSION_STRING ".${CUPS_VERSION_PART}")
-                else()
-                    set(CUPS_VERSION_STRING "${CUPS_VERSION_PART}")
-                endif()
-            endif()
-        endforeach()
-    endforeach()
-endif ()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-
-if (CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE)
-    FIND_PACKAGE_HANDLE_STANDARD_ARGS(Cups
-                                      REQUIRED_VARS CUPS_LIBRARIES CUPS_INCLUDE_DIR CUPS_HAS_IPP_DELETE_ATTRIBUTE
-                                      VERSION_VAR CUPS_VERSION_STRING)
-else ()
-    FIND_PACKAGE_HANDLE_STANDARD_ARGS(Cups
-                                      REQUIRED_VARS CUPS_LIBRARIES CUPS_INCLUDE_DIR
-                                      VERSION_VAR CUPS_VERSION_STRING)
-endif ()
-
-mark_as_advanced(CUPS_INCLUDE_DIR CUPS_LIBRARIES)
-
-if (CUPS_FOUND)
-    set(CUPS_INCLUDE_DIRS "${CUPS_INCLUDE_DIR}")
-    if (NOT TARGET Cups::Cups)
-        add_library(Cups::Cups INTERFACE IMPORTED)
-        set_target_properties(Cups::Cups PROPERTIES
-            INTERFACE_LINK_LIBRARIES      "${CUPS_LIBRARIES}"
-            INTERFACE_INCLUDE_DIRECTORIES "${CUPS_INCLUDE_DIR}")
-    endif ()
-endif ()
diff --git a/share/cmake-3.18/Modules/FindCurses.cmake b/share/cmake-3.18/Modules/FindCurses.cmake
deleted file mode 100644
index ba56078..0000000
--- a/share/cmake-3.18/Modules/FindCurses.cmake
+++ /dev/null
@@ -1,270 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindCurses
-----------
-
-Find the curses or ncurses include file and library.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module defines the following variables:
-
-``CURSES_FOUND``
-  True if Curses is found.
-``CURSES_INCLUDE_DIRS``
-  The include directories needed to use Curses.
-``CURSES_LIBRARIES``
-  The libraries needed to use Curses.
-``CURSES_CFLAGS``
-  Parameters which ought be given to C/C++ compilers when using Curses.
-``CURSES_HAVE_CURSES_H``
-  True if curses.h is available.
-``CURSES_HAVE_NCURSES_H``
-  True if ncurses.h is available.
-``CURSES_HAVE_NCURSES_NCURSES_H``
-  True if ``ncurses/ncurses.h`` is available.
-``CURSES_HAVE_NCURSES_CURSES_H``
-  True if ``ncurses/curses.h`` is available.
-
-Set ``CURSES_NEED_NCURSES`` to ``TRUE`` before the
-``find_package(Curses)`` call if NCurses functionality is required.
-Set ``CURSES_NEED_WIDE`` to ``TRUE`` before the
-``find_package(Curses)`` call if unicode functionality is required.
-
-Backward Compatibility
-^^^^^^^^^^^^^^^^^^^^^^
-
-The following variable are provided for backward compatibility:
-
-``CURSES_INCLUDE_DIR``
-  Path to Curses include.  Use ``CURSES_INCLUDE_DIRS`` instead.
-``CURSES_LIBRARY``
-  Path to Curses library.  Use ``CURSES_LIBRARIES`` instead.
-#]=======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake)
-
-# we don't know anything about cursesw, so only ncurses
-# may be ncursesw
-if(NOT CURSES_NEED_WIDE)
-  set(NCURSES_LIBRARY_NAME "ncurses")
-  set(CURSES_FORM_LIBRARY_NAME "form")
-else()
-  set(NCURSES_LIBRARY_NAME "ncursesw")
-  set(CURSES_FORM_LIBRARY_NAME "formw")
-  # Also, if we are searching for wide curses - we are actually searching
-  # for ncurses, we don't know about any other unicode version.
-  set(CURSES_NEED_NCURSES TRUE)
-endif()
-
-find_library(CURSES_CURSES_LIBRARY NAMES curses)
-
-find_library(CURSES_NCURSES_LIBRARY NAMES "${NCURSES_LIBRARY_NAME}" )
-set(CURSES_USE_NCURSES FALSE)
-
-if(CURSES_NCURSES_LIBRARY  AND ((NOT CURSES_CURSES_LIBRARY) OR CURSES_NEED_NCURSES))
-  set(CURSES_USE_NCURSES TRUE)
-endif()
-# http://cygwin.com/ml/cygwin-announce/2010-01/msg00002.html
-# cygwin ncurses stopped providing curses.h symlinks see above
-# message.  Cygwin is an ncurses package, so force ncurses on
-# cygwin if the curses.h is missing
-if(CYGWIN)
-  if (CURSES_NEED_WIDE)
-    if(NOT EXISTS /usr/include/ncursesw/curses.h)
-      set(CURSES_USE_NCURSES TRUE)
-    endif()
-  else()
-    if(NOT EXISTS /usr/include/curses.h)
-      set(CURSES_USE_NCURSES TRUE)
-    endif()
-  endif()
-endif()
-
-
-# Not sure the logic is correct here.
-# If NCurses is required, use the function wsyncup() to check if the library
-# has NCurses functionality (at least this is where it breaks on NetBSD).
-# If wsyncup is in curses, use this one.
-# If not, try to find ncurses and check if this has the symbol.
-# Once the ncurses library is found, search the ncurses.h header first, but
-# some web pages also say that even with ncurses there is not always a ncurses.h:
-# http://osdir.com/ml/gnome.apps.mc.devel/2002-06/msg00029.html
-# So at first try ncurses.h, if not found, try to find curses.h under the same
-# prefix as the library was found, if still not found, try curses.h with the
-# default search paths.
-if(CURSES_CURSES_LIBRARY  AND  CURSES_NEED_NCURSES)
-  include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
-  cmake_push_check_state()
-  set(CMAKE_REQUIRED_QUIET ${Curses_FIND_QUIETLY})
-  CHECK_LIBRARY_EXISTS("${CURSES_CURSES_LIBRARY}"
-    wsyncup "" CURSES_CURSES_HAS_WSYNCUP)
-
-  if(CURSES_NCURSES_LIBRARY  AND NOT  CURSES_CURSES_HAS_WSYNCUP)
-    CHECK_LIBRARY_EXISTS("${CURSES_NCURSES_LIBRARY}"
-      wsyncup "" CURSES_NCURSES_HAS_WSYNCUP)
-    if( CURSES_NCURSES_HAS_WSYNCUP)
-      set(CURSES_USE_NCURSES TRUE)
-    endif()
-  endif()
-  cmake_pop_check_state()
-
-endif()
-
-if(CURSES_USE_NCURSES)
-  get_filename_component(_cursesLibDir "${CURSES_NCURSES_LIBRARY}" PATH)
-  get_filename_component(_cursesParentDir "${_cursesLibDir}" PATH)
-
-  # Use CURSES_NCURSES_INCLUDE_PATH if set, for compatibility.
-  if(CURSES_NCURSES_INCLUDE_PATH)
-    if (CURSES_NEED_WIDE)
-      find_path(CURSES_INCLUDE_PATH
-        NAMES ncursesw/ncurses.h ncursesw/curses.h ncursesw.h cursesw.h
-        PATHS ${CURSES_NCURSES_INCLUDE_PATH}
-        NO_DEFAULT_PATH
-        )
-    else()
-      find_path(CURSES_INCLUDE_PATH
-        NAMES ncurses/ncurses.h ncurses/curses.h ncurses.h curses.h
-        PATHS ${CURSES_NCURSES_INCLUDE_PATH}
-        NO_DEFAULT_PATH
-        )
-    endif()
-  endif()
-
-  if (CURSES_NEED_WIDE)
-    set(CURSES_TINFO_LIBRARY_NAME tinfow)
-    find_path(CURSES_INCLUDE_PATH
-      NAMES ncursesw/ncurses.h ncursesw/curses.h ncursesw.h cursesw.h
-      HINTS "${_cursesParentDir}/include"
-      )
-  else()
-    set(CURSES_TINFO_LIBRARY_NAME tinfo)
-    find_path(CURSES_INCLUDE_PATH
-      NAMES ncurses/ncurses.h ncurses/curses.h ncurses.h curses.h
-      HINTS "${_cursesParentDir}/include"
-      )
-  endif()
-
-  # Previous versions of FindCurses provided these values.
-  if(NOT DEFINED CURSES_LIBRARY)
-    set(CURSES_LIBRARY "${CURSES_NCURSES_LIBRARY}")
-  endif()
-
-  CHECK_LIBRARY_EXISTS("${CURSES_NCURSES_LIBRARY}"
-    cbreak "" CURSES_NCURSES_HAS_CBREAK)
-  if(NOT CURSES_NCURSES_HAS_CBREAK)
-    find_library(CURSES_EXTRA_LIBRARY "${CURSES_TINFO_LIBRARY_NAME}" HINTS "${_cursesLibDir}")
-    find_library(CURSES_EXTRA_LIBRARY "${CURSES_TINFO_LIBRARY_NAME}" )
-
-    mark_as_advanced(
-      CURSES_EXTRA_LIBRARY
-      )
-  endif()
-else()
-  get_filename_component(_cursesLibDir "${CURSES_CURSES_LIBRARY}" PATH)
-  get_filename_component(_cursesParentDir "${_cursesLibDir}" PATH)
-
-  #We can't find anything with CURSES_NEED_WIDE because we know
-  #only about ncursesw unicode curses version
-  if(NOT CURSES_NEED_WIDE)
-    find_path(CURSES_INCLUDE_PATH
-      NAMES curses.h
-      HINTS "${_cursesParentDir}/include"
-      )
-  endif()
-
-  # Previous versions of FindCurses provided these values.
-  if(NOT DEFINED CURSES_CURSES_H_PATH)
-    set(CURSES_CURSES_H_PATH "${CURSES_INCLUDE_PATH}")
-  endif()
-  if(NOT DEFINED CURSES_LIBRARY)
-    set(CURSES_LIBRARY "${CURSES_CURSES_LIBRARY}")
-  endif()
-endif()
-
-# Report whether each possible header name exists in the include directory.
-if(NOT DEFINED CURSES_HAVE_NCURSES_NCURSES_H)
-  if(CURSES_NEED_WIDE)
-    if(EXISTS "${CURSES_INCLUDE_PATH}/ncursesw/ncurses.h")
-      set(CURSES_HAVE_NCURSES_NCURSES_H "${CURSES_INCLUDE_PATH}/ncursesw/ncurses.h")
-    endif()
-  elseif(EXISTS "${CURSES_INCLUDE_PATH}/ncurses/ncurses.h")
-    set(CURSES_HAVE_NCURSES_NCURSES_H "${CURSES_INCLUDE_PATH}/ncurses/ncurses.h")
-  endif()
-  if(NOT DEFINED CURSES_HAVE_NCURSES_NCURSES_H)
-    set(CURSES_HAVE_NCURSES_NCURSES_H "CURSES_HAVE_NCURSES_NCURSES_H-NOTFOUND")
-  endif()
-endif()
-if(NOT DEFINED CURSES_HAVE_NCURSES_CURSES_H)
-  if(CURSES_NEED_WIDE)
-    if(EXISTS "${CURSES_INCLUDE_PATH}/ncursesw/curses.h")
-      set(CURSES_HAVE_NCURSES_CURSES_H "${CURSES_INCLUDE_PATH}/ncursesw/curses.h")
-    endif()
-  elseif(EXISTS "${CURSES_INCLUDE_PATH}/ncurses/curses.h")
-    set(CURSES_HAVE_NCURSES_CURSES_H "${CURSES_INCLUDE_PATH}/ncurses/curses.h")
-  endif()
-  if(NOT DEFINED CURSES_HAVE_NCURSES_CURSES_H)
-    set(CURSES_HAVE_NCURSES_CURSES_H "CURSES_HAVE_NCURSES_CURSES_H-NOTFOUND")
-  endif()
-endif()
-if(NOT CURSES_NEED_WIDE)
-  #ncursesw can't be found for this paths
-  if(NOT DEFINED CURSES_HAVE_NCURSES_H)
-    if(EXISTS "${CURSES_INCLUDE_PATH}/ncurses.h")
-      set(CURSES_HAVE_NCURSES_H "${CURSES_INCLUDE_PATH}/ncurses.h")
-    else()
-      set(CURSES_HAVE_NCURSES_H "CURSES_HAVE_NCURSES_H-NOTFOUND")
-    endif()
-  endif()
-  if(NOT DEFINED CURSES_HAVE_CURSES_H)
-    if(EXISTS "${CURSES_INCLUDE_PATH}/curses.h")
-      set(CURSES_HAVE_CURSES_H "${CURSES_INCLUDE_PATH}/curses.h")
-    else()
-      set(CURSES_HAVE_CURSES_H "CURSES_HAVE_CURSES_H-NOTFOUND")
-    endif()
-  endif()
-endif()
-
-find_library(CURSES_FORM_LIBRARY "${CURSES_FORM_LIBRARY_NAME}" HINTS "${_cursesLibDir}")
-find_library(CURSES_FORM_LIBRARY "${CURSES_FORM_LIBRARY_NAME}" )
-
-# Previous versions of FindCurses provided these values.
-if(NOT DEFINED FORM_LIBRARY)
-  set(FORM_LIBRARY "${CURSES_FORM_LIBRARY}")
-endif()
-
-# Need to provide the *_LIBRARIES
-set(CURSES_LIBRARIES ${CURSES_LIBRARY})
-
-if(CURSES_EXTRA_LIBRARY)
-  set(CURSES_LIBRARIES ${CURSES_LIBRARIES} ${CURSES_EXTRA_LIBRARY})
-endif()
-
-if(CURSES_FORM_LIBRARY)
-  set(CURSES_LIBRARIES ${CURSES_LIBRARIES} ${CURSES_FORM_LIBRARY})
-endif()
-
-# Provide the *_INCLUDE_DIRS and *_CFLAGS results.
-set(CURSES_INCLUDE_DIRS ${CURSES_INCLUDE_PATH})
-set(CURSES_INCLUDE_DIR ${CURSES_INCLUDE_PATH}) # compatibility
-
-find_package(PkgConfig QUIET)
-if(PKG_CONFIG_FOUND)
-  pkg_check_modules(NCURSES QUIET ${NCURSES_LIBRARY_NAME})
-  set(CURSES_CFLAGS ${NCURSES_CFLAGS_OTHER})
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Curses DEFAULT_MSG
-  CURSES_LIBRARY CURSES_INCLUDE_PATH)
-
-mark_as_advanced(
-  CURSES_INCLUDE_PATH
-  CURSES_CURSES_LIBRARY
-  CURSES_NCURSES_LIBRARY
-  CURSES_FORM_LIBRARY
-  )
diff --git a/share/cmake-3.18/Modules/FindDevIL.cmake b/share/cmake-3.18/Modules/FindDevIL.cmake
deleted file mode 100644
index 9984943..0000000
--- a/share/cmake-3.18/Modules/FindDevIL.cmake
+++ /dev/null
@@ -1,75 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindDevIL
----------
-
-
-
-This module locates the developer's image library.
-http://openil.sourceforge.net/
-
-This module sets:
-
-::
-
-   IL_LIBRARIES -   the name of the IL library. These include the full path to
-                    the core DevIL library. This one has to be linked into the
-                    application.
-   ILU_LIBRARIES -  the name of the ILU library. Again, the full path. This
-                    library is for filters and effects, not actual loading. It
-                    doesn't have to be linked if the functionality it provides
-                    is not used.
-   ILUT_LIBRARIES - the name of the ILUT library. Full path. This part of the
-                    library interfaces with OpenGL. It is not strictly needed
-                    in applications.
-   IL_INCLUDE_DIR - where to find the il.h, ilu.h and ilut.h files.
-   DevIL_FOUND    - this is set to TRUE if all the above variables were set.
-                    This will be set to false if ILU or ILUT are not found,
-                    even if they are not needed. In most systems, if one
-                    library is found all the others are as well. That's the
-                    way the DevIL developers release it.
-#]=======================================================================]
-
-# TODO: Add version support.
-# Tested under Linux and Windows (MSVC)
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-
-find_path(IL_INCLUDE_DIR il.h
-  PATH_SUFFIXES include IL
-  DOC "The path to the directory that contains il.h"
-)
-
-#message("IL_INCLUDE_DIR is ${IL_INCLUDE_DIR}")
-
-find_library(IL_LIBRARIES
-  NAMES IL DEVIL
-  PATH_SUFFIXES libx32 lib64 lib lib32
-  DOC "The file that corresponds to the base il library."
-)
-
-#message("IL_LIBRARIES is ${IL_LIBRARIES}")
-
-find_library(ILUT_LIBRARIES
-  NAMES ILUT
-  PATH_SUFFIXES libx32 lib64 lib lib32
-  DOC "The file that corresponds to the il (system?) utility library."
-)
-
-#message("ILUT_LIBRARIES is ${ILUT_LIBRARIES}")
-
-find_library(ILU_LIBRARIES
-  NAMES ILU
-  PATH_SUFFIXES libx32 lib64 lib lib32
-  DOC "The file that corresponds to the il utility library."
-)
-
-#message("ILU_LIBRARIES is ${ILU_LIBRARIES}")
-
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(DevIL DEFAULT_MSG
-                                  IL_LIBRARIES ILU_LIBRARIES
-                                  IL_INCLUDE_DIR)
-# provide legacy variable for compatibility
-set(IL_FOUND ${DevIL_FOUND})
diff --git a/share/cmake-3.18/Modules/FindDoxygen.cmake b/share/cmake-3.18/Modules/FindDoxygen.cmake
deleted file mode 100644
index 184a9a2..0000000
--- a/share/cmake-3.18/Modules/FindDoxygen.cmake
+++ /dev/null
@@ -1,1160 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindDoxygen
------------
-
-Doxygen is a documentation generation tool (see http://www.doxygen.org).
-This module looks for Doxygen and some optional tools it supports. These
-tools are enabled as components in the :command:`find_package` command:
-
-``dot``
-  `Graphviz <http://graphviz.org>`_ ``dot`` utility used to render various
-  graphs.
-``mscgen``
-  `Message Chart Generator <http://www.mcternan.me.uk/mscgen/>`_ utility used
-  by Doxygen's ``\msc`` and ``\mscfile`` commands.
-``dia``
-  `Dia <https://wiki.gnome.org/Apps/Dia>`_ the diagram editor used by Doxygen's
-  ``\diafile`` command.
-
-Examples:
-
-.. code-block:: cmake
-
-  # Require dot, treat the other components as optional
-  find_package(Doxygen
-               REQUIRED dot
-               OPTIONAL_COMPONENTS mscgen dia)
-
-The following variables are defined by this module:
-
-.. variable:: DOXYGEN_FOUND
-
-  True if the ``doxygen`` executable was found.
-
-.. variable:: DOXYGEN_VERSION
-
-  The version reported by ``doxygen --version``.
-
-The module defines ``IMPORTED`` targets for Doxygen and each component found.
-These can be used as part of custom commands, etc. and should be preferred over
-old-style (and now deprecated) variables like ``DOXYGEN_EXECUTABLE``. The
-following import targets are defined if their corresponding executable could be
-found (the component import targets will only be defined if that component was
-requested):
-
-::
-
-  Doxygen::doxygen
-  Doxygen::dot
-  Doxygen::mscgen
-  Doxygen::dia
-
-
-Functions
-^^^^^^^^^
-
-.. command:: doxygen_add_docs
-
-  This function is intended as a convenience for adding a target for generating
-  documentation with Doxygen. It aims to provide sensible defaults so that
-  projects can generally just provide the input files and directories and that
-  will be sufficient to give sensible results. The function supports the
-  ability to customize the Doxygen configuration used to build the
-  documentation.
-
-  ::
-
-    doxygen_add_docs(targetName
-        [filesOrDirs...]
-        [ALL]
-        [USE_STAMP_FILE]
-        [WORKING_DIRECTORY dir]
-        [COMMENT comment])
-
-  The function constructs a ``Doxyfile`` and defines a custom target that runs
-  Doxygen on that generated file. The listed files and directories are used as
-  the ``INPUT`` of the generated ``Doxyfile`` and they can contain wildcards.
-  Any files that are listed explicitly will also be added as ``SOURCES`` of the
-  custom target so they will show up in an IDE project's source list.
-
-  So that relative input paths work as expected, by default the working
-  directory of the Doxygen command will be the current source directory (i.e.
-  :variable:`CMAKE_CURRENT_SOURCE_DIR`). This can be overridden with the
-  ``WORKING_DIRECTORY`` option to change the directory used as the relative
-  base point. Note also that Doxygen's default behavior is to strip the working
-  directory from relative paths in the generated documentation (see the
-  ``STRIP_FROM_PATH`` `Doxygen config option
-  <http://www.doxygen.org/manual/config.html>`_ for details).
-
-  If provided, the optional ``comment`` will be passed as the ``COMMENT`` for
-  the :command:`add_custom_target` command used to create the custom target
-  internally.
-
-  If ``ALL`` is set, the target will be added to the default build target.
-
-  If ``USE_STAMP_FILE`` is set, the custom command defined by this function will
-  create a stamp file with the name ``<targetName>.stamp`` in the current
-  binary directory whenever doxygen is re-run.  With this option present, all
-  items in ``<filesOrDirs>`` must be files (i.e. no directories, symlinks or
-  wildcards) and each of the files must exist at the time
-  ``doxygen_add_docs()`` is called.  An error will be raised if any of the
-  items listed is missing or is not a file when ``USE_STAMP_FILE`` is given.
-  A dependency will be created on each of the files so that doxygen will only
-  be re-run if one of the files is updated.  Without the ``USE_STAMP_FILE``
-  option, doxygen will always be re-run if the ``<targetName>`` target is built
-  regardless of whether anything listed in ``<filesOrDirs>`` has changed.
-
-  The contents of the generated ``Doxyfile`` can be customized by setting CMake
-  variables before calling ``doxygen_add_docs()``. Any variable with a name of
-  the form ``DOXYGEN_<tag>`` will have its value substituted for the
-  corresponding ``<tag>`` configuration option in the ``Doxyfile``. See the
-  `Doxygen documentation <http://www.doxygen.org/manual/config.html>`_ for the
-  full list of supported configuration options.
-
-  Some of Doxygen's defaults are overridden to provide more appropriate
-  behavior for a CMake project. Each of the following will be explicitly set
-  unless the variable already has a value before ``doxygen_add_docs()`` is
-  called (with some exceptions noted):
-
-  .. variable:: DOXYGEN_HAVE_DOT
-
-    Set to ``YES`` if the ``dot`` component was requested and it was found,
-    ``NO`` otherwise. Any existing value of ``DOXYGEN_HAVE_DOT`` is ignored.
-
-  .. variable:: DOXYGEN_DOT_MULTI_TARGETS
-
-    Set to ``YES`` by this module (note that this requires a ``dot`` version
-    newer than 1.8.10). This option is only meaningful if ``DOXYGEN_HAVE_DOT``
-    is also set to ``YES``.
-
-  .. variable:: DOXYGEN_GENERATE_LATEX
-
-    Set to ``NO`` by this module.
-
-  .. variable:: DOXYGEN_WARN_FORMAT
-
-    For Visual Studio based generators, this is set to the form recognized by
-    the Visual Studio IDE: ``$file($line) : $text``. For all other generators,
-    Doxygen's default value is not overridden.
-
-  .. variable:: DOXYGEN_PROJECT_NAME
-
-    Populated with the name of the current project (i.e.
-    :variable:`PROJECT_NAME`).
-
-  .. variable:: DOXYGEN_PROJECT_NUMBER
-
-    Populated with the version of the current project (i.e.
-    :variable:`PROJECT_VERSION`).
-
-  .. variable:: DOXYGEN_PROJECT_BRIEF
-
-    Populated with the description of the current project (i.e.
-    :variable:`PROJECT_DESCRIPTION`).
-
-  .. variable:: DOXYGEN_INPUT
-
-    Projects should not set this variable. It will be populated with the set of
-    files and directories passed to ``doxygen_add_docs()``, thereby providing
-    consistent behavior with the other built-in commands like
-    :command:`add_executable`, :command:`add_library` and
-    :command:`add_custom_target`. If a variable named ``DOXYGEN_INPUT`` is set
-    by the project, it will be ignored and a warning will be issued.
-
-  .. variable:: DOXYGEN_RECURSIVE
-
-    Set to ``YES`` by this module.
-
-  .. variable:: DOXYGEN_EXCLUDE_PATTERNS
-
-    If the set of inputs includes directories, this variable will specify
-    patterns used to exclude files from them. The following patterns are added
-    by ``doxygen_add_docs()`` to ensure CMake-specific files and directories
-    are not included in the input. If the project sets
-    ``DOXYGEN_EXCLUDE_PATTERNS``, those contents are merged with these
-    additional patterns rather than replacing them:
-
-    ::
-
-      */.git/*
-      */.svn/*
-      */.hg/*
-      */CMakeFiles/*
-      */_CPack_Packages/*
-      DartConfiguration.tcl
-      CMakeLists.txt
-      CMakeCache.txt
-
-  .. variable:: DOXYGEN_OUTPUT_DIRECTORY
-
-    Set to :variable:`CMAKE_CURRENT_BINARY_DIR` by this module. Note that if
-    the project provides its own value for this and it is a relative path, it
-    will be converted to an absolute path relative to the current binary
-    directory. This is necessary because doxygen will normally be run from a
-    directory within the source tree so that relative source paths work as
-    expected. If this directory does not exist, it will be recursively created
-    prior to executing the doxygen commands.
-
-To change any of these defaults or override any other Doxygen config option,
-set relevant variables before calling ``doxygen_add_docs()``. For example:
-
-  .. code-block:: cmake
-
-    set(DOXYGEN_GENERATE_HTML NO)
-    set(DOXYGEN_GENERATE_MAN YES)
-
-    doxygen_add_docs(
-        doxygen
-        ${PROJECT_SOURCE_DIR}
-        COMMENT "Generate man pages"
-    )
-
-A number of Doxygen config options accept lists of values, but Doxygen requires
-them to be separated by whitespace. CMake variables hold lists as a string with
-items separated by semi-colons, so a conversion needs to be performed. The
-``doxygen_add_docs()`` command specifically checks the following Doxygen config
-options and will convert their associated CMake variable's contents into the
-required form if set.
-
-::
-
-  ABBREVIATE_BRIEF
-  ALIASES
-  CITE_BIB_FILES
-  DIAFILE_DIRS
-  DOTFILE_DIRS
-  DOT_FONTPATH
-  ENABLED_SECTIONS
-  EXAMPLE_PATH
-  EXAMPLE_PATTERNS
-  EXCLUDE
-  EXCLUDE_PATTERNS
-  EXCLUDE_SYMBOLS
-  EXPAND_AS_DEFINED
-  EXTENSION_MAPPING
-  EXTRA_PACKAGES
-  EXTRA_SEARCH_MAPPINGS
-  FILE_PATTERNS
-  FILTER_PATTERNS
-  FILTER_SOURCE_PATTERNS
-  HTML_EXTRA_FILES
-  HTML_EXTRA_STYLESHEET
-  IGNORE_PREFIX
-  IMAGE_PATH
-  INCLUDE_FILE_PATTERNS
-  INCLUDE_PATH
-  INPUT
-  LATEX_EXTRA_FILES
-  LATEX_EXTRA_STYLESHEET
-  MATHJAX_EXTENSIONS
-  MSCFILE_DIRS
-  PLANTUML_INCLUDE_PATH
-  PREDEFINED
-  QHP_CUST_FILTER_ATTRS
-  QHP_SECT_FILTER_ATTRS
-  STRIP_FROM_INC_PATH
-  STRIP_FROM_PATH
-  TAGFILES
-  TCL_SUBST
-
-The following single value Doxygen options will be quoted automatically
-if they contain at least one space:
-
-::
-
-  CHM_FILE
-  DIA_PATH
-  DOCBOOK_OUTPUT
-  DOCSET_FEEDNAME
-  DOCSET_PUBLISHER_NAME
-  DOT_FONTNAME
-  DOT_PATH
-  EXTERNAL_SEARCH_ID
-  FILE_VERSION_FILTER
-  GENERATE_TAGFILE
-  HHC_LOCATION
-  HTML_FOOTER
-  HTML_HEADER
-  HTML_OUTPUT
-  HTML_STYLESHEET
-  INPUT_FILTER
-  LATEX_FOOTER
-  LATEX_HEADER
-  LATEX_OUTPUT
-  LAYOUT_FILE
-  MAN_OUTPUT
-  MAN_SUBDIR
-  MATHJAX_CODEFILE
-  MSCGEN_PATH
-  OUTPUT_DIRECTORY
-  PERL_PATH
-  PLANTUML_JAR_PATH
-  PROJECT_BRIEF
-  PROJECT_LOGO
-  PROJECT_NAME
-  QCH_FILE
-  QHG_LOCATION
-  QHP_CUST_FILTER_NAME
-  QHP_VIRTUAL_FOLDER
-  RTF_EXTENSIONS_FILE
-  RTF_OUTPUT
-  RTF_STYLESHEET_FILE
-  SEARCHDATA_FILE
-  USE_MDFILE_AS_MAINPAGE
-  WARN_FORMAT
-  WARN_LOGFILE
-  XML_OUTPUT
-
-There are situations where it may be undesirable for a particular config option
-to be automatically quoted by ``doxygen_add_docs()``, such as ``ALIASES`` which
-may need to include its own embedded quoting.  The ``DOXYGEN_VERBATIM_VARS``
-variable can be used to specify a list of Doxygen variables (including the
-leading ``DOXYGEN_`` prefix) which should not be quoted.  The project is then
-responsible for ensuring that those variables' values make sense when placed
-directly in the Doxygen input file.  In the case of list variables, list items
-are still separated by spaces, it is only the automatic quoting that is
-skipped.  For example, the following allows ``doxygen_add_docs()`` to apply
-quoting to ``DOXYGEN_PROJECT_BRIEF``, but not each item in the
-``DOXYGEN_ALIASES`` list (:ref:`bracket syntax <Bracket Argument>` can also
-be used to make working with embedded quotes easier):
-
-.. code-block:: cmake
-
-  set(DOXYGEN_PROJECT_BRIEF "String with spaces")
-  set(DOXYGEN_ALIASES
-      [[somealias="@some_command param"]]
-      "anotherAlias=@foobar"
-  )
-  set(DOXYGEN_VERBATIM_VARS DOXYGEN_ALIASES)
-
-The resultant ``Doxyfile`` will contain the following lines:
-
-.. code-block:: text
-
-  PROJECT_BRIEF = "String with spaces"
-  ALIASES       = somealias="@some_command param" anotherAlias=@foobar
-
-
-Deprecated Result Variables
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-For compatibility with previous versions of CMake, the following variables
-are also defined but they are deprecated and should no longer be used:
-
-.. variable:: DOXYGEN_EXECUTABLE
-
-  The path to the ``doxygen`` command. If projects need to refer to the
-  ``doxygen`` executable directly, they should use the ``Doxygen::doxygen``
-  import target instead.
-
-.. variable:: DOXYGEN_DOT_FOUND
-
-  True if the ``dot`` executable was found.
-
-.. variable:: DOXYGEN_DOT_EXECUTABLE
-
-  The path to the ``dot`` command. If projects need to refer to the ``dot``
-  executable directly, they should use the ``Doxygen::dot`` import target
-  instead.
-
-.. variable:: DOXYGEN_DOT_PATH
-
-  The path to the directory containing the ``dot`` executable as reported in
-  ``DOXYGEN_DOT_EXECUTABLE``. The path may have forward slashes even on Windows
-  and is not suitable for direct substitution into a ``Doxyfile.in`` template.
-  If you need this value, get the :prop_tgt:`IMPORTED_LOCATION` property of the
-  ``Doxygen::dot`` target and use :command:`get_filename_component` to extract
-  the directory part of that path. You may also want to consider using
-  :command:`file(TO_NATIVE_PATH)` to prepare the path for a Doxygen
-  configuration file.
-
-
-Deprecated Hint Variables
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. variable:: DOXYGEN_SKIP_DOT
-
-  This variable has no effect for the component form of ``find_package``.
-  In backward compatibility mode (i.e. without components list) it prevents
-  the finder module from searching for Graphviz's ``dot`` utility.
-
-#]=======================================================================]
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0057 NEW) # if IN_LIST
-
-# For backwards compatibility support
-if(Doxygen_FIND_QUIETLY)
-    set(DOXYGEN_FIND_QUIETLY TRUE)
-endif()
-
-# ===== Rationale for OS X AppBundle mods below =====
-#  With the OS X GUI version, Doxygen likes to be installed to /Applications
-#  and it contains the doxygen executable in the bundle. In the versions I've
-#  seen, it is located in Resources, but in general, more often binaries are
-#  located in MacOS.
-#
-#  NOTE: The official Doxygen.app distributed for OS X uses non-standard
-#  conventions. Instead of the command-line "doxygen" tool being placed in
-#  Doxygen.app/Contents/MacOS, "Doxywizard" is placed there instead and
-#  "doxygen" is placed in Contents/Resources.  This is most likely done
-#  so that something happens when people double-click on the Doxygen.app
-#  package. Unfortunately, CMake gets confused by this as when it sees the
-#  bundle it uses "Doxywizard" as the executable to use instead of
-#  "doxygen". Therefore to work-around this issue we temporarily disable
-#  the app-bundle feature, just for this CMake module:
-#
-if(APPLE)
-    # Save the old setting
-    set(TEMP_DOXYGEN_SAVE_CMAKE_FIND_APPBUNDLE ${CMAKE_FIND_APPBUNDLE})
-    # Disable the App-bundle detection feature
-    set(CMAKE_FIND_APPBUNDLE "NEVER")
-endif()
-# FYI:
-# In older versions of OS X Doxygen, dot was included with the Doxygen bundle,
-# but newer versions require you to download Graphviz.app which contains "dot"
-# or use something like homebrew.
-# ============== End OSX stuff ================
-
-#
-# Find Doxygen...
-#
-macro(_Doxygen_find_doxygen)
-    find_program(
-        DOXYGEN_EXECUTABLE
-        NAMES doxygen
-        PATHS
-            "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\doxygen_is1;Inno Setup: App Path]/bin"
-            /Applications/Doxygen.app/Contents/Resources
-            /Applications/Doxygen.app/Contents/MacOS
-            /Applications/Utilities/Doxygen.app/Contents/Resources
-            /Applications/Utilities/Doxygen.app/Contents/MacOS
-        DOC "Doxygen documentation generation tool (http://www.doxygen.org)"
-    )
-    mark_as_advanced(DOXYGEN_EXECUTABLE)
-
-    if(DOXYGEN_EXECUTABLE)
-        execute_process(
-            COMMAND "${DOXYGEN_EXECUTABLE}" --version
-            OUTPUT_VARIABLE DOXYGEN_VERSION
-            OUTPUT_STRIP_TRAILING_WHITESPACE
-            RESULT_VARIABLE _Doxygen_version_result
-        )
-        if(_Doxygen_version_result)
-            message(WARNING "Unable to determine doxygen version: ${_Doxygen_version_result}")
-        endif()
-
-        # Create an imported target for Doxygen
-        if(NOT TARGET Doxygen::doxygen)
-            add_executable(Doxygen::doxygen IMPORTED GLOBAL)
-            set_target_properties(Doxygen::doxygen PROPERTIES
-                IMPORTED_LOCATION "${DOXYGEN_EXECUTABLE}"
-            )
-        endif()
-    endif()
-endmacro()
-
-#
-# Find Diagram Editor...
-#
-macro(_Doxygen_find_dia)
-    set(_x86 "(x86)")
-    find_program(
-        DOXYGEN_DIA_EXECUTABLE
-        NAMES dia
-        PATHS
-            "$ENV{ProgramFiles}/Dia"
-            "$ENV{ProgramFiles${_x86}}/Dia"
-        DOC "Diagram Editor tool for use with Doxygen"
-    )
-    mark_as_advanced(DOXYGEN_DIA_EXECUTABLE)
-
-    if(DOXYGEN_DIA_EXECUTABLE)
-        # The Doxyfile wants the path to the utility, not the entire path
-        # including file name
-        get_filename_component(DOXYGEN_DIA_PATH
-                              "${DOXYGEN_DIA_EXECUTABLE}"
-                              DIRECTORY)
-        if(WIN32)
-            file(TO_NATIVE_PATH "${DOXYGEN_DIA_PATH}" DOXYGEN_DIA_PATH)
-        endif()
-
-        # Create an imported target for component
-        if(NOT TARGET Doxygen::dia)
-            add_executable(Doxygen::dia IMPORTED GLOBAL)
-            set_target_properties(Doxygen::dia PROPERTIES
-                IMPORTED_LOCATION "${DOXYGEN_DIA_EXECUTABLE}"
-            )
-        endif()
-    endif()
-
-    unset(_x86)
-endmacro()
-
-#
-# Find Graphviz Dot...
-#
-macro(_Doxygen_find_dot)
-    if(WIN32)
-        set(_x86 "(x86)")
-        file(
-            GLOB _Doxygen_GRAPHVIZ_BIN_DIRS
-            "$ENV{ProgramFiles}/Graphviz*/bin"
-            "$ENV{ProgramFiles${_x86}}/Graphviz*/bin"
-        )
-        unset(_x86)
-    else()
-        set(_Doxygen_GRAPHVIZ_BIN_DIRS "")
-    endif()
-
-    find_program(
-        DOXYGEN_DOT_EXECUTABLE
-        NAMES dot
-        PATHS
-            ${_Doxygen_GRAPHVIZ_BIN_DIRS}
-            "$ENV{ProgramFiles}/ATT/Graphviz/bin"
-            "C:/Program Files/ATT/Graphviz/bin"
-            [HKEY_LOCAL_MACHINE\\SOFTWARE\\ATT\\Graphviz;InstallPath]/bin
-            /Applications/Graphviz.app/Contents/MacOS
-            /Applications/Utilities/Graphviz.app/Contents/MacOS
-            /Applications/Doxygen.app/Contents/Resources
-            /Applications/Doxygen.app/Contents/MacOS
-            /Applications/Utilities/Doxygen.app/Contents/Resources
-            /Applications/Utilities/Doxygen.app/Contents/MacOS
-        DOC "Dot tool for use with Doxygen"
-    )
-    mark_as_advanced(DOXYGEN_DOT_EXECUTABLE)
-
-    if(DOXYGEN_DOT_EXECUTABLE)
-        # The Doxyfile wants the path to the utility, not the entire path
-        # including file name
-        get_filename_component(DOXYGEN_DOT_PATH
-                               "${DOXYGEN_DOT_EXECUTABLE}"
-                               DIRECTORY)
-        if(WIN32)
-            file(TO_NATIVE_PATH "${DOXYGEN_DOT_PATH}" DOXYGEN_DOT_PATH)
-        endif()
-
-        # Create an imported target for component
-        if(NOT TARGET Doxygen::dot)
-            add_executable(Doxygen::dot IMPORTED GLOBAL)
-            set_target_properties(Doxygen::dot PROPERTIES
-                IMPORTED_LOCATION "${DOXYGEN_DOT_EXECUTABLE}"
-            )
-        endif()
-    endif()
-
-    unset(_Doxygen_GRAPHVIZ_BIN_DIRS)
-endmacro()
-
-#
-# Find Message Sequence Chart...
-#
-macro(_Doxygen_find_mscgen)
-    set(_x86 "(x86)")
-    find_program(
-        DOXYGEN_MSCGEN_EXECUTABLE
-        NAMES mscgen
-        PATHS
-            "$ENV{ProgramFiles}/Mscgen"
-            "$ENV{ProgramFiles${_x86}}/Mscgen"
-        DOC "Message sequence chart tool for use with Doxygen"
-    )
-    mark_as_advanced(DOXYGEN_MSCGEN_EXECUTABLE)
-
-    if(DOXYGEN_MSCGEN_EXECUTABLE)
-        # The Doxyfile wants the path to the utility, not the entire path
-        # including file name
-        get_filename_component(DOXYGEN_MSCGEN_PATH
-                               "${DOXYGEN_MSCGEN_EXECUTABLE}"
-                               DIRECTORY)
-        if(WIN32)
-            file(TO_NATIVE_PATH "${DOXYGEN_MSCGEN_PATH}" DOXYGEN_MSCGEN_PATH)
-        endif()
-
-        # Create an imported target for component
-        if(NOT TARGET Doxygen::mscgen)
-            add_executable(Doxygen::mscgen IMPORTED GLOBAL)
-            set_target_properties(Doxygen::mscgen PROPERTIES
-                IMPORTED_LOCATION "${DOXYGEN_MSCGEN_EXECUTABLE}"
-            )
-        endif()
-    endif()
-
-    unset(_x86)
-endmacro()
-
-# Make sure `doxygen` is one of the components to find
-set(_Doxygen_keep_backward_compat FALSE)
-if(NOT Doxygen_FIND_COMPONENTS)
-    # Search at least for `doxygen` executable
-    set(Doxygen_FIND_COMPONENTS doxygen)
-    # Preserve backward compatibility:
-    # search for `dot` also if `DOXYGEN_SKIP_DOT` is not explicitly disable this.
-    if(NOT DOXYGEN_SKIP_DOT)
-        list(APPEND Doxygen_FIND_COMPONENTS dot)
-    endif()
-    set(_Doxygen_keep_backward_compat TRUE)
-elseif(NOT doxygen IN_LIST Doxygen_FIND_COMPONENTS)
-    list(INSERT Doxygen_FIND_COMPONENTS 0 doxygen)
-endif()
-
-#
-# Find all requested components of Doxygen...
-#
-foreach(_comp IN LISTS Doxygen_FIND_COMPONENTS)
-    if(_comp STREQUAL "doxygen")
-        _Doxygen_find_doxygen()
-    elseif(_comp STREQUAL "dia")
-        _Doxygen_find_dia()
-    elseif(_comp STREQUAL "dot")
-        _Doxygen_find_dot()
-    elseif(_comp STREQUAL "mscgen")
-        _Doxygen_find_mscgen()
-    else()
-        message(WARNING "${_comp} is not a valid Doxygen component")
-        set(Doxygen_${_comp}_FOUND FALSE)
-        continue()
-    endif()
-
-    if(TARGET Doxygen::${_comp})
-        set(Doxygen_${_comp}_FOUND TRUE)
-    else()
-        set(Doxygen_${_comp}_FOUND FALSE)
-    endif()
-endforeach()
-unset(_comp)
-
-# Verify find results
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(
-    Doxygen
-    REQUIRED_VARS DOXYGEN_EXECUTABLE
-    VERSION_VAR DOXYGEN_VERSION
-    HANDLE_COMPONENTS
-)
-
-#
-# Backwards compatibility...
-#
-if(APPLE)
-    # Restore the old app-bundle setting
-    set(CMAKE_FIND_APPBUNDLE ${TEMP_DOXYGEN_SAVE_CMAKE_FIND_APPBUNDLE})
-endif()
-
-# Maintain the _FOUND variables as "YES" or "NO" for backwards
-# compatibility. This allows people to substitute them directly into
-# Doxyfile with configure_file().
-if(DOXYGEN_FOUND)
-    set(DOXYGEN_FOUND "YES")
-else()
-    set(DOXYGEN_FOUND "NO")
-endif()
-if(_Doxygen_keep_backward_compat)
-    if(Doxygen_dot_FOUND)
-        set(DOXYGEN_DOT_FOUND "YES")
-    else()
-        set(DOXYGEN_DOT_FOUND "NO")
-    endif()
-
-    # For backwards compatibility support for even older CMake versions
-    set(DOXYGEN ${DOXYGEN_EXECUTABLE})
-    set(DOT ${DOXYGEN_DOT_EXECUTABLE})
-
-    # No need to keep any backward compatibility for `DOXYGEN_MSCGEN_XXX`
-    # and `DOXYGEN_DIA_XXX` since they were not supported before component
-    # support was added
-endif()
-unset(_Doxygen_keep_backward_compat)
-
-#
-# Allow full control of Doxygen from CMakeLists.txt
-#
-
-# Prepare a template Doxyfile and Doxygen's default values CMake file
-if(TARGET Doxygen::doxygen)
-    # If doxygen was found, use it to generate a minimal default Doxyfile.
-    # We will delete this file after we have finished using it below to
-    # generate the other files that doxygen_add_docs() will use.
-    set(_Doxygen_tpl "${CMAKE_BINARY_DIR}/CMakeDoxyfile.tpl")
-    execute_process(
-        COMMAND "${DOXYGEN_EXECUTABLE}" -s -g "${_Doxygen_tpl}"
-        OUTPUT_QUIET
-        RESULT_VARIABLE _Doxygen_tpl_result
-    )
-    if(_Doxygen_tpl_result)
-        message(FATAL_ERROR
-                "Unable to generate Doxyfile template: ${_Doxygen_tpl_result}")
-    elseif(NOT EXISTS "${_Doxygen_tpl}")
-        message(FATAL_ERROR
-                "Doxygen has failed to generate a Doxyfile template")
-    endif()
-
-    # Write a do-not-edit header to files we are going to generate...
-    set(_Doxygen_dne_header
-[[
-#
-# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE!
-#
-
-]]
-    )
-    # We only need one copy of these across the whole build, since their
-    # content is only dependent on the version of Doxygen being used. Therefore
-    # we always put them at the top of the build tree so that they are in a
-    # predictable location.
-    set(_doxyfile_in       "${CMAKE_BINARY_DIR}/CMakeDoxyfile.in")
-    set(_doxyfile_defaults "${CMAKE_BINARY_DIR}/CMakeDoxygenDefaults.cmake")
-
-    file(WRITE "${_doxyfile_in}"       ${_Doxygen_dne_header})
-    file(WRITE "${_doxyfile_defaults}" ${_Doxygen_dne_header})
-
-    # Get strings containing a configuration key from the template Doxyfile
-    # we obtained from this version of Doxygen. Because some options are split
-    # across multiple lines by ending lines with backslashes, we cannot just
-    # use file(STRINGS...) with a REGEX. Instead, read lines without a REGEX
-    # so that file(STRINGS...) handles the trailing backslash as a line
-    # continuation. It stores multi-lines as lists, so we then have to replace
-    # the ";" list separator with backslashed newlines again so that we get the
-    # original content stored back as the value part.
-    file(STRINGS "${_Doxygen_tpl}" _file_lines)
-    unset(_Doxygen_tpl_params)
-    foreach(_line IN LISTS _file_lines)
-        if(_line MATCHES "([A-Z][A-Z0-9_]+)( *=)(.*)")
-            set(_key "${CMAKE_MATCH_1}")
-            set(_eql "${CMAKE_MATCH_2}")
-            set(_value "${CMAKE_MATCH_3}")
-            string(REPLACE "\\" "\\\\" _value "${_value}")
-            string(REPLACE ";" "\\\n" _value "${_value}")
-            list(APPEND _Doxygen_tpl_params "${_key}${_eql}${_value}")
-        endif()
-    endforeach()
-
-    # Build up a Doxyfile that provides @configVar@ substitutions for each
-    # Doxygen config option as well as a separate CMake script which provides
-    # the default value for each of those options if the project doesn't supply
-    # them. Each config option will support substitution of a CMake variable
-    # of the same name except with DOXYGEN_ prepended.
-    foreach(_Doxygen_param IN LISTS _Doxygen_tpl_params)
-        if(_Doxygen_param MATCHES "([A-Z][A-Z0-9_]+)( *)=( (.*))?")
-            # Ok, this is a config key with a value
-            if(CMAKE_MATCH_COUNT EQUAL 4)
-                file(APPEND "${_doxyfile_in}"
-                    "${CMAKE_MATCH_1}${CMAKE_MATCH_2}= @DOXYGEN_${CMAKE_MATCH_1}@\n")
-                # Remove the backslashes we had to preserve to handle newlines
-                string(REPLACE "\\\n" "\n" _value "${CMAKE_MATCH_4}")
-                file(APPEND "${_doxyfile_defaults}"
-"if(NOT DEFINED DOXYGEN_${CMAKE_MATCH_1})
-    set(DOXYGEN_${CMAKE_MATCH_1} ${_value})
-endif()
-")
-            # Ok, this is a config key with empty default value
-            elseif(CMAKE_MATCH_COUNT EQUAL 2)
-                file(APPEND "${_doxyfile_in}"
-                    "${CMAKE_MATCH_1}${CMAKE_MATCH_2}= @DOXYGEN_${CMAKE_MATCH_1}@\n")
-            else()
-                message(AUTHOR_WARNING
-"Unexpected line format! Code review required!\nFault line: ${_Doxygen_param}")
-            endif()
-        else()
-            message(AUTHOR_WARNING
-"Unexpected line format! Code review required!\nFault line: ${_Doxygen_param}")
-        endif()
-    endforeach()
-
-    # Ok, dumped defaults are not needed anymore...
-    file(REMOVE "${_Doxygen_tpl}")
-
-    unset(_Doxygen_param)
-    unset(_Doxygen_tpl_params)
-    unset(_Doxygen_dne_header)
-    unset(_Doxygen_tpl)
-
-endif()
-
-function(doxygen_quote_value VARIABLE)
-    # Quote a value of the given variable if:
-    # - VARIABLE parameter was really given
-    # - the variable it names is defined and is not present in the list
-    #   specified by DOXYGEN_VERBATIM_VARS (if set)
-    # - the value of the named variable isn't already quoted
-    # - the value has spaces
-    if(VARIABLE AND DEFINED ${VARIABLE} AND
-       NOT ${VARIABLE} MATCHES "^\".* .*\"$" AND ${VARIABLE} MATCHES " " AND
-       NOT (DEFINED DOXYGEN_VERBATIM_VARS AND
-            "${VARIABLE}" IN_LIST DOXYGEN_VERBATIM_VARS))
-        set(${VARIABLE} "\"${${VARIABLE}}\"" PARENT_SCOPE)
-    endif()
-endfunction()
-
-function(doxygen_list_to_quoted_strings LIST_VARIABLE)
-    if(LIST_VARIABLE AND DEFINED ${LIST_VARIABLE})
-        unset(_inputs)
-        unset(_sep)
-        unset(_verbatim)
-        # Have to test if list items should be treated as verbatim here
-        # because we lose the variable name when we pass just one list item
-        # to doxygen_quote_value() below
-        if(DEFINED DOXYGEN_VERBATIM_VARS AND
-           "${LIST_VARIABLE}" IN_LIST DOXYGEN_VERBATIM_VARS)
-            set(_verbatim True)
-        endif()
-        foreach(_in IN LISTS ${LIST_VARIABLE})
-            if(NOT _verbatim)
-                doxygen_quote_value(_in)
-            endif()
-            string(APPEND _inputs "${_sep}${_in}")
-            set(_sep " ")
-        endforeach()
-        set(${LIST_VARIABLE} "${_inputs}" PARENT_SCOPE)
-    endif()
-endfunction()
-
-function(doxygen_add_docs targetName)
-    set(_options ALL USE_STAMP_FILE)
-    set(_one_value_args WORKING_DIRECTORY COMMENT)
-    set(_multi_value_args)
-    cmake_parse_arguments(_args
-                          "${_options}"
-                          "${_one_value_args}"
-                          "${_multi_value_args}"
-                          ${ARGN})
-
-    if(NOT _args_COMMENT)
-        set(_args_COMMENT "Generate API documentation for ${targetName}")
-    endif()
-
-    if(NOT _args_WORKING_DIRECTORY)
-        set(_args_WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
-    endif()
-
-    if(DEFINED DOXYGEN_INPUT)
-        message(WARNING
-"DOXYGEN_INPUT is set but it will be ignored. Pass the files and directories \
-directly to the doxygen_add_docs() command instead.")
-    endif()
-    set(DOXYGEN_INPUT ${_args_UNPARSED_ARGUMENTS})
-
-    if(NOT TARGET Doxygen::doxygen)
-        message(FATAL_ERROR "Doxygen was not found, needed by \
-doxygen_add_docs() for target ${targetName}")
-    endif()
-
-    # If not already defined, set some relevant defaults based on the
-    # assumption that the documentation is for the whole project. Details
-    # specified in the project() command will be used to populate a number of
-    # these defaults.
-
-    if(NOT DEFINED DOXYGEN_PROJECT_NAME)
-        # The PROJECT_NAME tag is a single word (or a sequence of words
-        # surrounded by double-quotes, unless you are using Doxywizard) that
-        # should identify the project for which the documentation is generated.
-        # This name is used in the title of most generated pages and in a few
-        # other places. The default value is: My Project.
-        set(DOXYGEN_PROJECT_NAME ${PROJECT_NAME})
-    endif()
-
-    if(NOT DEFINED DOXYGEN_PROJECT_NUMBER)
-        # The PROJECT_NUMBER tag can be used to enter a project or revision
-        # number. This could be handy for archiving the generated documentation
-        # or if some version control system is used.
-        set(DOXYGEN_PROJECT_NUMBER ${PROJECT_VERSION})
-    endif()
-
-    if(NOT DEFINED DOXYGEN_PROJECT_BRIEF)
-        # Using the PROJECT_BRIEF tag one can provide an optional one line
-        # description for a project that appears at the top of each page and
-        # should give viewer a quick idea about the purpose of the project.
-        # Keep the description short.
-        set(DOXYGEN_PROJECT_BRIEF "${PROJECT_DESCRIPTION}")
-    endif()
-
-    if(NOT DEFINED DOXYGEN_RECURSIVE)
-        # The RECURSIVE tag can be used to specify whether or not
-        # subdirectories should be searched for input files as well. CMake
-        # projects generally evolve to span multiple directories, so it makes
-        # more sense for this to be on by default. Doxygen's default value
-        # has this setting turned off, so we override it.
-        set(DOXYGEN_RECURSIVE YES)
-    endif()
-
-    if(NOT DEFINED DOXYGEN_OUTPUT_DIRECTORY)
-        # The OUTPUT_DIRECTORY tag is used to specify the (relative or
-        # absolute) path into which the generated documentation will be
-        # written. If a relative path is used, Doxygen will interpret it as
-        # being relative to the location where doxygen was started, but we need
-        # to run Doxygen in the source tree so that relative input paths work
-        # intuitively. Therefore, we ensure that the output directory is always
-        # an absolute path and if the project provided a relative path, we
-        # treat it as relative to the current BINARY directory so that output
-        # is not generated inside the source tree.
-        set(DOXYGEN_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
-    elseif(NOT IS_ABSOLUTE "${DOXYGEN_OUTPUT_DIRECTORY}")
-        get_filename_component(DOXYGEN_OUTPUT_DIRECTORY
-                               "${DOXYGEN_OUTPUT_DIRECTORY}"
-                               ABSOLUTE
-                               BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
-    endif()
-
-    if(NOT DEFINED DOXYGEN_HAVE_DOT)
-        # If you set the HAVE_DOT tag to YES then doxygen will assume the dot
-        # tool is available from the path. This tool is part of Graphviz (see:
-        # http://www.graphviz.org/), a graph visualization toolkit from AT&T
-        # and Lucent Bell Labs. The other options in this section have no
-        # effect if this option is set to NO.
-        # Doxygen's default value is: NO.
-        if(Doxygen_dot_FOUND)
-          set(DOXYGEN_HAVE_DOT "YES")
-        else()
-          set(DOXYGEN_HAVE_DOT "NO")
-        endif()
-    endif()
-
-    if(NOT DEFINED DOXYGEN_DOT_MULTI_TARGETS)
-        # Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate
-        # multiple output files in one run (i.e. multiple -o and -T options on
-        # the command line). This makes dot run faster, but since only newer
-        # versions of dot (>1.8.10) support this, Doxygen disables this feature
-        # by default.
-        # This tag requires that the tag HAVE_DOT is set to YES.
-        set(DOXYGEN_DOT_MULTI_TARGETS YES)
-    endif()
-
-    if(NOT DEFINED DOXYGEN_GENERATE_LATEX)
-        # If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX
-        # output. We only want the HTML output enabled by default, so we turn
-        # this off if the project hasn't specified it.
-        set(DOXYGEN_GENERATE_LATEX NO)
-    endif()
-
-    if(NOT DEFINED DOXYGEN_WARN_FORMAT)
-        if(CMAKE_VS_MSBUILD_COMMAND OR CMAKE_VS_DEVENV_COMMAND)
-            # The WARN_FORMAT tag determines the format of the warning messages
-            # that doxygen can produce. The string should contain the $file,
-            # $line and $text tags, which will be replaced by the file and line
-            # number from which the warning originated and the warning text.
-            # Optionally, the format may contain $version, which will be
-            # replaced by the version of the file (if it could be obtained via
-            # FILE_VERSION_FILTER).
-            # Doxygen's default value is: $file:$line: $text
-            set(DOXYGEN_WARN_FORMAT "$file($line) : $text ")
-        endif()
-    endif()
-
-    if(DEFINED DOXYGEN_WARN_LOGFILE AND NOT IS_ABSOLUTE "${DOXYGEN_WARN_LOGFILE}")
-        # The WARN_LOGFILE tag can be used to specify a file to which warning and error
-        # messages should be written. If left blank the output is written to standard
-        # error (stderr).
-        get_filename_component(DOXYGEN_WARN_LOGFILE
-                               "${DOXYGEN_WARN_LOGFILE}"
-                               ABSOLUTE
-                               BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
-    endif()
-
-    # Any files from the INPUT that match any of the EXCLUDE_PATTERNS will be
-    # excluded from the set of input files. We provide some additional patterns
-    # to prevent commonly unwanted things from CMake builds being pulled in.
-    #
-    # Note that the wildcards are matched against the file with absolute path,
-    # so to exclude all test directories for example use the pattern */test/*
-    list(
-        APPEND
-        DOXYGEN_EXCLUDE_PATTERNS
-        "*/.git/*"
-        "*/.svn/*"
-        "*/.hg/*"
-        "*/CMakeFiles/*"
-        "*/_CPack_Packages/*"
-        "DartConfiguration.tcl"
-        "CMakeLists.txt"
-        "CMakeCache.txt"
-    )
-
-    # Now bring in Doxgen's defaults for those things the project has not
-    # already set and we have not provided above
-    include("${CMAKE_BINARY_DIR}/CMakeDoxygenDefaults.cmake" OPTIONAL)
-
-    # Cleanup built HTMLs on "make clean"
-    # TODO Any other dirs?
-    if(DOXYGEN_GENERATE_HTML)
-        if(IS_ABSOLUTE "${DOXYGEN_HTML_OUTPUT}")
-            set(_args_clean_html_dir "${DOXYGEN_HTML_OUTPUT}")
-        else()
-            set(_args_clean_html_dir
-                "${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_HTML_OUTPUT}")
-        endif()
-        set_property(DIRECTORY APPEND PROPERTY
-            ADDITIONAL_CLEAN_FILES "${_args_clean_html_dir}")
-    endif()
-
-    # Build up a list of files we can identify from the inputs so we can list
-    # them as DEPENDS and SOURCES in the custom command/target (the latter
-    # makes them display in IDEs). This must be done before we transform the
-    # various DOXYGEN_... variables below because we need to process
-    # DOXYGEN_INPUT as a list first.
-    unset(_sources)
-    foreach(_item IN LISTS DOXYGEN_INPUT)
-        get_filename_component(_abs_item "${_item}" ABSOLUTE
-                               BASE_DIR "${_args_WORKING_DIRECTORY}")
-        get_source_file_property(_isGenerated "${_abs_item}" GENERATED)
-        if(_isGenerated OR
-           (EXISTS "${_abs_item}" AND
-            NOT IS_DIRECTORY "${_abs_item}" AND
-            NOT IS_SYMLINK "${_abs_item}"))
-            list(APPEND _sources "${_abs_item}")
-        elseif(_args_USE_STAMP_FILE)
-            message(FATAL_ERROR "Source does not exist or is not a file:\n"
-                "    ${_abs_item}\n"
-                "Only existing files may be specified when the "
-                "USE_STAMP_FILE option is given.")
-        endif()
-    endforeach()
-
-    # Transform known list type options into space separated strings.
-    set(_doxygen_list_options
-        ABBREVIATE_BRIEF
-        ALIASES
-        CITE_BIB_FILES
-        DIAFILE_DIRS
-        DOTFILE_DIRS
-        DOT_FONTPATH
-        ENABLED_SECTIONS
-        EXAMPLE_PATH
-        EXAMPLE_PATTERNS
-        EXCLUDE
-        EXCLUDE_PATTERNS
-        EXCLUDE_SYMBOLS
-        EXPAND_AS_DEFINED
-        EXTENSION_MAPPING
-        EXTRA_PACKAGES
-        EXTRA_SEARCH_MAPPINGS
-        FILE_PATTERNS
-        FILTER_PATTERNS
-        FILTER_SOURCE_PATTERNS
-        HTML_EXTRA_FILES
-        HTML_EXTRA_STYLESHEET
-        IGNORE_PREFIX
-        IMAGE_PATH
-        INCLUDE_FILE_PATTERNS
-        INCLUDE_PATH
-        INPUT
-        LATEX_EXTRA_FILES
-        LATEX_EXTRA_STYLESHEET
-        MATHJAX_EXTENSIONS
-        MSCFILE_DIRS
-        PLANTUML_INCLUDE_PATH
-        PREDEFINED
-        QHP_CUST_FILTER_ATTRS
-        QHP_SECT_FILTER_ATTRS
-        STRIP_FROM_INC_PATH
-        STRIP_FROM_PATH
-        TAGFILES
-        TCL_SUBST
-    )
-    foreach(_item IN LISTS _doxygen_list_options)
-        doxygen_list_to_quoted_strings(DOXYGEN_${_item})
-    endforeach()
-
-    # Transform known single value variables which may contain spaces, such as
-    # paths or description strings.
-    set(_doxygen_quoted_options
-        CHM_FILE
-        DIA_PATH
-        DOCBOOK_OUTPUT
-        DOCSET_FEEDNAME
-        DOCSET_PUBLISHER_NAME
-        DOT_FONTNAME
-        DOT_PATH
-        EXTERNAL_SEARCH_ID
-        FILE_VERSION_FILTER
-        GENERATE_TAGFILE
-        HHC_LOCATION
-        HTML_FOOTER
-        HTML_HEADER
-        HTML_OUTPUT
-        HTML_STYLESHEET
-        INPUT_FILTER
-        LATEX_FOOTER
-        LATEX_HEADER
-        LATEX_OUTPUT
-        LAYOUT_FILE
-        MAN_OUTPUT
-        MAN_SUBDIR
-        MATHJAX_CODEFILE
-        MSCGEN_PATH
-        OUTPUT_DIRECTORY
-        PERL_PATH
-        PLANTUML_JAR_PATH
-        PROJECT_BRIEF
-        PROJECT_LOGO
-        PROJECT_NAME
-        QCH_FILE
-        QHG_LOCATION
-        QHP_CUST_FILTER_NAME
-        QHP_VIRTUAL_FOLDER
-        RTF_EXTENSIONS_FILE
-        RTF_OUTPUT
-        RTF_STYLESHEET_FILE
-        SEARCHDATA_FILE
-        USE_MDFILE_AS_MAINPAGE
-        WARN_FORMAT
-        WARN_LOGFILE
-        XML_OUTPUT
-    )
-
-    # Store the unmodified value of DOXYGEN_OUTPUT_DIRECTORY prior to invoking
-    # doxygen_quote_value() below. This will mutate the string specifically for
-    # consumption by Doxygen's config file, which we do not want when we use it
-    # later in the custom target's commands.
-    set( _original_doxygen_output_dir ${DOXYGEN_OUTPUT_DIRECTORY} )
-
-    foreach(_item IN LISTS _doxygen_quoted_options)
-        doxygen_quote_value(DOXYGEN_${_item})
-    endforeach()
-
-    # Prepare doxygen configuration file
-    set(_doxyfile_template "${CMAKE_BINARY_DIR}/CMakeDoxyfile.in")
-    set(_target_doxyfile "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.${targetName}")
-    configure_file("${_doxyfile_template}" "${_target_doxyfile}")
-
-    unset(_all)
-    if(${_args_ALL})
-        set(_all ALL)
-    endif()
-
-    # Only create the stamp file if asked to. If we don't create it,
-    # the target will always be considered out-of-date.
-    if(_args_USE_STAMP_FILE)
-        set(__stamp_file "${CMAKE_CURRENT_BINARY_DIR}/${targetName}.stamp")
-        add_custom_command(
-            VERBATIM
-            OUTPUT ${__stamp_file}
-            COMMAND ${CMAKE_COMMAND} -E make_directory ${_original_doxygen_output_dir}
-            COMMAND "${DOXYGEN_EXECUTABLE}" "${_target_doxyfile}"
-            COMMAND ${CMAKE_COMMAND} -E touch ${__stamp_file}
-            WORKING_DIRECTORY "${_args_WORKING_DIRECTORY}"
-            DEPENDS "${_target_doxyfile}" ${_sources}
-            COMMENT "${_args_COMMENT}"
-        )
-        add_custom_target(${targetName} ${_all}
-            DEPENDS ${__stamp_file}
-            SOURCES ${_sources}
-        )
-        unset(__stamp_file)
-    else()
-        add_custom_target( ${targetName} ${_all} VERBATIM
-            COMMAND ${CMAKE_COMMAND} -E make_directory ${_original_doxygen_output_dir}
-            COMMAND "${DOXYGEN_EXECUTABLE}" "${_target_doxyfile}"
-            WORKING_DIRECTORY "${_args_WORKING_DIRECTORY}"
-            DEPENDS "${_target_doxyfile}" ${_sources}
-            COMMENT "${_args_COMMENT}"
-            SOURCES ${_sources}
-        )
-    endif()
-
-endfunction()
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FindEXPAT.cmake b/share/cmake-3.18/Modules/FindEXPAT.cmake
deleted file mode 100644
index 15b419a..0000000
--- a/share/cmake-3.18/Modules/FindEXPAT.cmake
+++ /dev/null
@@ -1,81 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindEXPAT
----------
-
-Find the native Expat headers and library.
-Expat is a stream-oriented XML parser library written in C.
-
-Imported Targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :prop_tgt:`IMPORTED` targets:
-
-``EXPAT::EXPAT``
-  The Expat ``expat`` library, if found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``EXPAT_INCLUDE_DIRS``
-  where to find expat.h, etc.
-``EXPAT_LIBRARIES``
-  the libraries to link against to use Expat.
-``EXPAT_FOUND``
-  true if the Expat headers and libraries were found.
-
-#]=======================================================================]
-
-find_package(PkgConfig QUIET)
-
-pkg_check_modules(PC_EXPAT QUIET expat)
-
-# Look for the header file.
-find_path(EXPAT_INCLUDE_DIR NAMES expat.h HINTS ${PC_EXPAT_INCLUDE_DIRS})
-
-# Look for the library.
-find_library(EXPAT_LIBRARY NAMES expat libexpat HINTS ${PC_EXPAT_LIBRARY_DIRS})
-
-if (EXPAT_INCLUDE_DIR AND EXISTS "${EXPAT_INCLUDE_DIR}/expat.h")
-    file(STRINGS "${EXPAT_INCLUDE_DIR}/expat.h" expat_version_str
-         REGEX "^#[\t ]*define[\t ]+XML_(MAJOR|MINOR|MICRO)_VERSION[\t ]+[0-9]+$")
-
-    unset(EXPAT_VERSION_STRING)
-    foreach(VPART MAJOR MINOR MICRO)
-        foreach(VLINE ${expat_version_str})
-            if(VLINE MATCHES "^#[\t ]*define[\t ]+XML_${VPART}_VERSION[\t ]+([0-9]+)$")
-                set(EXPAT_VERSION_PART "${CMAKE_MATCH_1}")
-                if(EXPAT_VERSION_STRING)
-                    string(APPEND EXPAT_VERSION_STRING ".${EXPAT_VERSION_PART}")
-                else()
-                    set(EXPAT_VERSION_STRING "${EXPAT_VERSION_PART}")
-                endif()
-            endif()
-        endforeach()
-    endforeach()
-endif ()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(EXPAT
-                                  REQUIRED_VARS EXPAT_LIBRARY EXPAT_INCLUDE_DIR
-                                  VERSION_VAR EXPAT_VERSION_STRING)
-
-# Copy the results to the output variables and target.
-if(EXPAT_FOUND)
-  set(EXPAT_LIBRARIES ${EXPAT_LIBRARY})
-  set(EXPAT_INCLUDE_DIRS ${EXPAT_INCLUDE_DIR})
-
-  if(NOT TARGET EXPAT::EXPAT)
-    add_library(EXPAT::EXPAT UNKNOWN IMPORTED)
-    set_target_properties(EXPAT::EXPAT PROPERTIES
-      IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-      IMPORTED_LOCATION "${EXPAT_LIBRARY}"
-      INTERFACE_INCLUDE_DIRECTORIES "${EXPAT_INCLUDE_DIRS}")
-  endif()
-endif()
-
-mark_as_advanced(EXPAT_INCLUDE_DIR EXPAT_LIBRARY)
diff --git a/share/cmake-3.18/Modules/FindEnvModules.cmake b/share/cmake-3.18/Modules/FindEnvModules.cmake
deleted file mode 100644
index 4dd5116..0000000
--- a/share/cmake-3.18/Modules/FindEnvModules.cmake
+++ /dev/null
@@ -1,333 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindEnvModules
---------------
-
-Locate an environment module implementation and make commands available to
-CMake scripts to use them.  This is compatible with both Lua-based Lmod
-and TCL-based EnvironmentModules.
-
-This module is intended for the use case of setting up the compiler and library
-environment within a :ref:`CTest Script <CTest Script>` (``ctest -S``).  It can
-also be used in a :ref:`CMake Script <Script Processing Mode>` (``cmake -P``).
-
-.. note::
-
-  The loaded environment will not survive past the end of the calling process.
-  Do not use this module in project code (``CMakeLists.txt`` files) to load
-  a compiler environment; it will not be available during the build.  Instead
-  load the environment manually before running CMake or using the generated
-  build system.
-
-Example Usage
-^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  set(CTEST_BUILD_NAME "CrayLinux-CrayPE-Cray-dynamic")
-  set(CTEST_BUILD_CONFIGURATION Release)
-  set(CTEST_BUILD_FLAGS "-k -j8")
-  set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
-
-  ...
-
-  find_package(EnvModules REQUIRED)
-
-  env_module(purge)
-  env_module(load modules)
-  env_module(load craype)
-  env_module(load PrgEnv-cray)
-  env_module(load craype-knl)
-  env_module(load cray-mpich)
-  env_module(load cray-libsci)
-
-  set(ENV{CRAYPE_LINK_TYPE} dynamic)
-
-  ...
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``EnvModules_FOUND``
-  True if a compatible environment modules framework was found.
-
-Cache Variables
-^^^^^^^^^^^^^^^
-
-The following cache variable will be set:
-
-``EnvModules_COMMAND``
-  The low level module command to use.  Currently supported
-  implementations are the Lua based Lmod and TCL based EnvironmentModules.
-
-Environment Variables
-^^^^^^^^^^^^^^^^^^^^^
-
-``ENV{MODULESHOME}``
-  Usually set by the module environment implementation, used as a hint to
-  locate the module command to execute.
-
-Provided Functions
-^^^^^^^^^^^^^^^^^^
-
-This defines the following CMake functions for interacting with environment
-modules:
-
-.. command:: env_module
-
-  Execute an aribitrary module command:
-
-  .. code-block:: cmake
-
-    env_module(cmd arg1 ... argN)
-    env_module(
-      COMMAND cmd arg1 ... argN
-      [OUTPUT_VARIABLE <out-var>]
-      [RESULT_VARIABLE <ret-var>]
-    )
-
-  The options are:
-
-  ``cmd arg1 ... argN``
-    The module sub-command and arguments to execute as if they were
-    passed directly to the module command in your shell environment.
-
-  ``OUTPUT_VARIABLE <out-var>``
-    The standard output from executing the module command.
-
-  ``RESULT_VARIABLE <ret-var>``
-    The return code from executing the module command.
-
-.. command:: env_module_swap
-
-  Swap one module for another:
-
-  .. code-block:: cmake
-
-    env_module_swap(out_mod in_mod
-      [OUTPUT_VARIABLE <out-var>]
-      [RESULT_VARIABLE <ret-var>]
-    )
-
-  This is functionally equivalent to the ``module swap out_mod in_mod`` shell
-  command.  The options are:
-
-  ``OUTPUT_VARIABLE <out-var>``
-    The standard output from executing the module command.
-
-  ``RESULT_VARIABLE <ret-var>``
-    The return code from executing the module command.
-
-.. command:: env_module_list
-
-  Retrieve the list of currently loaded modules:
-
-  .. code-block:: cmake
-
-    env_module_list(<out-var>)
-
-  This is functionally equivalent to the ``module list`` shell command.
-  The result is stored in ``<out-var>`` as a properly formatted CMake
-  :ref:`semicolon-separated list <CMake Language Lists>` variable.
-
-.. command:: env_module_avail
-
-  Retrieve the list of available modules:
-
-  .. code-block:: cmake
-
-    env_module_avail([<mod-prefix>] <out-var>)
-
-  This is functionally equivalent to the ``module avail <mod-prefix>`` shell
-  command.  The result is stored in ``<out-var>`` as a properly formatted
-  CMake :ref:`semicolon-separated list <CMake Language Lists>` variable.
-
-#]=======================================================================]
-
-function(env_module)
-  if(NOT EnvModules_COMMAND)
-    message(FATAL_ERROR "Failed to process module command.  EnvModules_COMMAND not found")
-    return()
-  endif()
-
-  set(options)
-  set(oneValueArgs OUTPUT_VARIABLE RESULT_VARIABLE)
-  set(multiValueArgs COMMAND)
-  cmake_parse_arguments(MOD_ARGS
-    "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGV}
-  )
-  if(NOT MOD_ARGS_COMMAND)
-    # If no explicit command argument was given, then treat the calling syntax
-    # as: module(cmd args...)
-    set(exec_cmd ${ARGV})
-  else()
-    set(exec_cmd ${MOD_ARGS_COMMAND})
-  endif()
-
-  if(MOD_ARGS_OUTPUT_VARIABLE)
-    set(err_var_args ERROR_VARIABLE err_var)
-  endif()
-
-  execute_process(
-    COMMAND mktemp -t module.cmake.XXXXXXXXXXXX
-    OUTPUT_VARIABLE tempfile_name
-  )
-  string(STRIP "${tempfile_name}" tempfile_name)
-
-  # If the $MODULESHOME/init/cmake file exists then assume that the CMake
-  # "shell" functionality exits
-  if(EXISTS "$ENV{MODULESHOME}/init/cmake")
-    execute_process(
-      COMMAND ${EnvModules_COMMAND} cmake ${exec_cmd}
-      OUTPUT_FILE ${tempfile_name}
-      ${err_var_args}
-      RESULT_VARIABLE ret_var
-    )
-
-  else() # fallback to the sh shell and manually convert to CMake
-    execute_process(
-      COMMAND ${EnvModules_COMMAND} sh ${exec_cmd}
-      OUTPUT_VARIABLE out_var
-      ${err_var_args}
-      RESULT_VARIABLE ret_var
-    )
-  endif()
-
-  # If we executed successfully then process and cleanup the temp file
-  if(ret_var EQUAL 0)
-    # No CMake shell so we need to process the sh output into CMake code
-    if(NOT EXISTS "$ENV{MODULESHOME}/init/cmake")
-      file(WRITE ${tempfile_name} "")
-      string(REPLACE "\n" ";" out_var "${out_var}")
-      foreach(sh_cmd IN LISTS out_var)
-        if(sh_cmd MATCHES "^ *unset *([^ ]*)")
-          set(cmake_cmd "unset(ENV{${CMAKE_MATCH_1}})")
-        elseif(sh_cmd MATCHES "^ *export *([^ ]*)")
-          set(cmake_cmd "set(ENV{${CMAKE_MATCH_1}} \"\${${CMAKE_MATCH_1}}\")")
-        elseif(sh_cmd MATCHES " *([^ =]*) *= *(.*)")
-          set(var_name "${CMAKE_MATCH_1}")
-          set(var_value "${CMAKE_MATCH_2}")
-          if(var_value MATCHES "^\"(.*[^\\])\"")
-            # If it's in quotes, take the value as is
-            set(var_value "${CMAKE_MATCH_1}")
-          else()
-            # Otherwise, strip trailing spaces
-            string(REGEX REPLACE "([^\\])? +$" "\\1" var_value "${var_value}")
-          endif()
-          string(REPLACE "\\ " " " var_value "${var_value}")
-          set(cmake_cmd "set(${var_name} \"${var_value}\")")
-        else()
-          continue()
-        endif()
-        file(APPEND ${tempfile_name} "${cmake_cmd}\n")
-      endforeach()
-    endif()
-
-    # Process the change in environment variables
-    include(${tempfile_name})
-    file(REMOVE ${tempfile_name})
-  endif()
-
-  # Push the output back out to the calling scope
-  if(MOD_ARGS_OUTPUT_VARIABLE)
-    set(${MOD_ARGS_OUTPUT_VARIABLE} "${err_var}" PARENT_SCOPE)
-  endif()
-  if(MOD_ARGS_RESULT_VARIABLE)
-    set(${MOD_ARGS_RESULT_VARIABLE} ${ret_var} PARENT_SCOPE)
-  endif()
-endfunction(env_module)
-
-#------------------------------------------------------------------------------
-function(env_module_swap out_mod in_mod)
-  set(options)
-  set(oneValueArgs OUTPUT_VARIABLE RESULT_VARIABLE)
-  set(multiValueArgs)
-
-  cmake_parse_arguments(MOD_ARGS
-    "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGV}
-  )
-
-  env_module(COMMAND -t swap ${out_mod} ${in_mod}
-    OUTPUT_VARIABLE tmp_out
-    RETURN_VARIABLE tmp_ret
-  )
-
-  if(MOD_ARGS_OUTPUT_VARIABLE)
-    set(${MOD_ARGS_OUTPUT_VARIABLE} "${err_var}" PARENT_SCOPE)
-  endif()
-  if(MOD_ARGS_RESULT_VARIABLE)
-    set(${MOD_ARGS_RESULT_VARIABLE} ${tmp_ret} PARENT_SCOPE)
-  endif()
-endfunction()
-
-#------------------------------------------------------------------------------
-function(env_module_list out_var)
-  cmake_policy(SET CMP0007 NEW)
-  env_module(COMMAND -t list OUTPUT_VARIABLE tmp_out)
-
-  # Convert output into a CMake list
-  string(REPLACE "\n" ";" ${out_var} "${tmp_out}")
-
-  # Remove title headers and empty entries
-  list(REMOVE_ITEM ${out_var} "No modules loaded")
-  if(${out_var})
-    list(FILTER ${out_var} EXCLUDE REGEX "^(.*:)?$")
-  endif()
-  list(FILTER ${out_var} EXCLUDE REGEX "^(.*:)?$")
-
-  set(${out_var} ${${out_var}} PARENT_SCOPE)
-endfunction()
-
-#------------------------------------------------------------------------------
-function(env_module_avail)
-  cmake_policy(SET CMP0007 NEW)
-
-  if(ARGC EQUAL 1)
-    set(mod_prefix)
-    set(out_var ${ARGV0})
-  elseif(ARGC EQUAL 2)
-    set(mod_prefix ${ARGV0})
-    set(out_var ${ARGV1})
-  else()
-    message(FATAL_ERROR "Usage: env_module_avail([mod_prefix] out_var)")
-  endif()
-  env_module(COMMAND -t avail ${mod_prefix} OUTPUT_VARIABLE tmp_out)
-
-  # Convert output into a CMake list
-  string(REPLACE "\n" ";" tmp_out "${tmp_out}")
-
-  set(${out_var})
-  foreach(MOD IN LISTS tmp_out)
-    # Remove directory entries and empty values
-    if(MOD MATCHES "^(.*:)?$")
-      continue()
-    endif()
-
-    # Convert default modules
-    if(MOD MATCHES "^(.*)/$" ) # "foo/"
-      list(APPEND ${out_var} ${CMAKE_MATCH_1})
-    elseif(MOD MATCHES "^((.*)/.*)\\(default\\)$") # "foo/1.2.3(default)"
-      list(APPEND ${out_var} ${CMAKE_MATCH_2})
-      list(APPEND ${out_var} ${CMAKE_MATCH_1})
-    else()
-      list(APPEND ${out_var} ${MOD})
-    endif()
-  endforeach()
-
-  set(${out_var} ${${out_var}} PARENT_SCOPE)
-endfunction()
-
-#------------------------------------------------------------------------------
-# Make sure we know where the underlying module command is
-find_program(EnvModules_COMMAND
-  NAMES lmod modulecmd
-  HINTS ENV MODULESHOME
-  PATH_SUFFIXES libexec
-)
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(EnvModules DEFAULT_MSG EnvModules_COMMAND)
diff --git a/share/cmake-3.18/Modules/FindFLEX.cmake b/share/cmake-3.18/Modules/FindFLEX.cmake
deleted file mode 100644
index 1384736..0000000
--- a/share/cmake-3.18/Modules/FindFLEX.cmake
+++ /dev/null
@@ -1,256 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindFLEX
---------
-
-Find Fast Lexical Analyzer (Flex) executable and provides a macro
-to generate custom build rules
-
-
-
-The module defines the following variables:
-
-::
-
-  FLEX_FOUND - True is flex executable is found
-  FLEX_EXECUTABLE - the path to the flex executable
-  FLEX_VERSION - the version of flex
-  FLEX_LIBRARIES - The flex libraries
-  FLEX_INCLUDE_DIRS - The path to the flex headers
-
-
-
-The minimum required version of flex can be specified using the
-standard syntax, e.g.  :command:`find_package(FLEX 2.5.13)`
-
-
-
-If flex is found on the system, the module provides the macro:
-
-::
-
-  FLEX_TARGET(Name FlexInput FlexOutput
-              [COMPILE_FLAGS <string>]
-              [DEFINES_FILE <string>]
-              )
-
-which creates a custom command to generate the ``FlexOutput`` file from
-the ``FlexInput`` file.  If ``COMPILE_FLAGS`` option is specified, the next
-parameter is added to the flex command line. If flex is configured to
-output a header file, the ``DEFINES_FILE`` option may be used to specify its
-name. Name is an alias used to get details of this custom command.
-Indeed the macro defines the following variables:
-
-::
-
-  FLEX_${Name}_DEFINED - true is the macro ran successfully
-  FLEX_${Name}_OUTPUTS - the source file generated by the custom rule, an
-  alias for FlexOutput
-  FLEX_${Name}_INPUT - the flex source file, an alias for ${FlexInput}
-  FLEX_${Name}_OUTPUT_HEADER - the header flex output, if any.
-
-
-
-Flex scanners often use tokens defined by Bison: the code generated
-by Flex depends of the header generated by Bison.  This module also
-defines a macro:
-
-::
-
-  ADD_FLEX_BISON_DEPENDENCY(FlexTarget BisonTarget)
-
-which adds the required dependency between a scanner and a parser
-where ``FlexTarget`` and ``BisonTarget`` are the first parameters of
-respectively ``FLEX_TARGET`` and ``BISON_TARGET`` macros.
-
-::
-
-  ====================================================================
-  Example:
-
-
-
-::
-
-   find_package(BISON)
-   find_package(FLEX)
-
-
-
-::
-
-   BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp)
-   FLEX_TARGET(MyScanner lexer.l  ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp)
-   ADD_FLEX_BISON_DEPENDENCY(MyScanner MyParser)
-
-
-
-::
-
-   include_directories(${CMAKE_CURRENT_BINARY_DIR})
-   add_executable(Foo
-      Foo.cc
-      ${BISON_MyParser_OUTPUTS}
-      ${FLEX_MyScanner_OUTPUTS}
-   )
-   target_link_libraries(Foo ${FLEX_LIBRARIES})
-  ====================================================================
-#]=======================================================================]
-
-find_program(FLEX_EXECUTABLE NAMES flex win-flex win_flex DOC "path to the flex executable")
-mark_as_advanced(FLEX_EXECUTABLE)
-
-find_library(FL_LIBRARY NAMES fl
-  DOC "Path to the fl library")
-
-find_path(FLEX_INCLUDE_DIR FlexLexer.h
-  DOC "Path to the flex headers")
-
-mark_as_advanced(FL_LIBRARY FLEX_INCLUDE_DIR)
-
-set(FLEX_INCLUDE_DIRS ${FLEX_INCLUDE_DIR})
-set(FLEX_LIBRARIES ${FL_LIBRARY})
-
-if(FLEX_EXECUTABLE)
-
-  execute_process(COMMAND ${FLEX_EXECUTABLE} --version
-    OUTPUT_VARIABLE FLEX_version_output
-    ERROR_VARIABLE FLEX_version_error
-    RESULT_VARIABLE FLEX_version_result
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-  if(NOT ${FLEX_version_result} EQUAL 0)
-    if(FLEX_FIND_REQUIRED)
-      message(SEND_ERROR "Command \"${FLEX_EXECUTABLE} --version\" failed with output:\n${FLEX_version_output}\n${FLEX_version_error}")
-    else()
-      message("Command \"${FLEX_EXECUTABLE} --version\" failed with output:\n${FLEX_version_output}\n${FLEX_version_error}\nFLEX_VERSION will not be available")
-    endif()
-  else()
-    # older versions of flex printed "/full/path/to/executable version X.Y"
-    # newer versions use "basename(executable) X.Y"
-    get_filename_component(FLEX_EXE_NAME_WE "${FLEX_EXECUTABLE}" NAME_WE)
-    get_filename_component(FLEX_EXE_EXT "${FLEX_EXECUTABLE}" EXT)
-    string(REGEX REPLACE "^.*${FLEX_EXE_NAME_WE}(${FLEX_EXE_EXT})?\"? (version )?([0-9]+[^ ]*)( .*)?$" "\\3"
-      FLEX_VERSION "${FLEX_version_output}")
-    unset(FLEX_EXE_EXT)
-    unset(FLEX_EXE_NAME_WE)
-  endif()
-
-  #============================================================
-  # FLEX_TARGET (public macro)
-  #============================================================
-  #
-  macro(FLEX_TARGET Name Input Output)
-
-    set(FLEX_TARGET_PARAM_OPTIONS)
-    set(FLEX_TARGET_PARAM_ONE_VALUE_KEYWORDS
-      COMPILE_FLAGS
-      DEFINES_FILE
-      )
-    set(FLEX_TARGET_PARAM_MULTI_VALUE_KEYWORDS)
-
-    cmake_parse_arguments(
-      FLEX_TARGET_ARG
-      "${FLEX_TARGET_PARAM_OPTIONS}"
-      "${FLEX_TARGET_PARAM_ONE_VALUE_KEYWORDS}"
-      "${FLEX_TARGET_MULTI_VALUE_KEYWORDS}"
-      ${ARGN}
-      )
-
-    set(FLEX_TARGET_usage "FLEX_TARGET(<Name> <Input> <Output> [COMPILE_FLAGS <string>] [DEFINES_FILE <string>]")
-
-    if(NOT "${FLEX_TARGET_ARG_UNPARSED_ARGUMENTS}" STREQUAL "")
-      message(SEND_ERROR ${FLEX_TARGET_usage})
-    else()
-
-      cmake_policy(GET CMP0098 _flex_CMP0098
-          PARENT_SCOPE # undocumented, do not use outside of CMake
-        )
-      set(_flex_INPUT "${Input}")
-      if("x${_flex_CMP0098}x" STREQUAL "xNEWx")
-        set(_flex_WORKING_DIR "${CMAKE_CURRENT_BINARY_DIR}")
-        if(NOT IS_ABSOLUTE "${_flex_INPUT}")
-          set(_flex_INPUT "${CMAKE_CURRENT_SOURCE_DIR}/${_flex_INPUT}")
-        endif()
-      else()
-        set(_flex_WORKING_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
-      endif()
-      unset(_flex_CMP0098)
-
-      set(_flex_OUTPUT "${Output}")
-      if(NOT IS_ABSOLUTE ${_flex_OUTPUT})
-        set(_flex_OUTPUT "${_flex_WORKING_DIR}/${_flex_OUTPUT}")
-      endif()
-      set(_flex_TARGET_OUTPUTS "${_flex_OUTPUT}")
-
-      set(_flex_EXE_OPTS "")
-      if(NOT "${FLEX_TARGET_ARG_COMPILE_FLAGS}" STREQUAL "")
-        set(_flex_EXE_OPTS "${FLEX_TARGET_ARG_COMPILE_FLAGS}")
-        separate_arguments(_flex_EXE_OPTS)
-      endif()
-
-      set(_flex_OUTPUT_HEADER "")
-      if(NOT "${FLEX_TARGET_ARG_DEFINES_FILE}" STREQUAL "")
-        set(_flex_OUTPUT_HEADER "${FLEX_TARGET_ARG_DEFINES_FILE}")
-        if(IS_ABSOLUTE "${_flex_OUTPUT_HEADER}")
-          set(_flex_OUTPUT_HEADER_ABS "${_flex_OUTPUT_HEADER}")
-        else()
-          set(_flex_OUTPUT_HEADER_ABS "${_flex_WORKING_DIR}/${_flex_OUTPUT_HEADER}")
-        endif()
-        list(APPEND _flex_TARGET_OUTPUTS "${_flex_OUTPUT_HEADER_ABS}")
-        list(APPEND _flex_EXE_OPTS --header-file=${_flex_OUTPUT_HEADER_ABS})
-      endif()
-
-      get_filename_component(_flex_EXE_NAME_WE "${FLEX_EXECUTABLE}" NAME_WE)
-      add_custom_command(OUTPUT ${_flex_TARGET_OUTPUTS}
-        COMMAND ${FLEX_EXECUTABLE} ${_flex_EXE_OPTS} -o${_flex_OUTPUT} ${_flex_INPUT}
-        VERBATIM
-        DEPENDS ${_flex_INPUT}
-        COMMENT "[FLEX][${Name}] Building scanner with ${_flex_EXE_NAME_WE} ${FLEX_VERSION}"
-        WORKING_DIRECTORY ${_flex_WORKING_DIR})
-
-      set(FLEX_${Name}_DEFINED TRUE)
-      set(FLEX_${Name}_OUTPUTS ${_flex_TARGET_OUTPUTS})
-      set(FLEX_${Name}_INPUT ${_flex_INPUT})
-      set(FLEX_${Name}_COMPILE_FLAGS ${_flex_EXE_OPTS})
-      set(FLEX_${Name}_OUTPUT_HEADER ${_flex_OUTPUT_HEADER})
-
-      unset(_flex_EXE_NAME_WE)
-      unset(_flex_EXE_OPTS)
-      unset(_flex_INPUT)
-      unset(_flex_OUTPUT)
-      unset(_flex_OUTPUT_HEADER)
-      unset(_flex_OUTPUT_HEADER_ABS)
-      unset(_flex_TARGET_OUTPUTS)
-      unset(_flex_WORKING_DIR)
-
-    endif()
-  endmacro()
-  #============================================================
-
-
-  #============================================================
-  # ADD_FLEX_BISON_DEPENDENCY (public macro)
-  #============================================================
-  #
-  macro(ADD_FLEX_BISON_DEPENDENCY FlexTarget BisonTarget)
-
-    if(NOT FLEX_${FlexTarget}_OUTPUTS)
-      message(SEND_ERROR "Flex target `${FlexTarget}' does not exist.")
-    endif()
-
-    if(NOT BISON_${BisonTarget}_OUTPUT_HEADER)
-      message(SEND_ERROR "Bison target `${BisonTarget}' does not exist.")
-    endif()
-
-    set_source_files_properties(${FLEX_${FlexTarget}_OUTPUTS}
-      PROPERTIES OBJECT_DEPENDS ${BISON_${BisonTarget}_OUTPUT_HEADER})
-  endmacro()
-  #============================================================
-
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(FLEX REQUIRED_VARS FLEX_EXECUTABLE
-                                       VERSION_VAR FLEX_VERSION)
diff --git a/share/cmake-3.18/Modules/FindFLTK.cmake b/share/cmake-3.18/Modules/FindFLTK.cmake
deleted file mode 100644
index e273642..0000000
--- a/share/cmake-3.18/Modules/FindFLTK.cmake
+++ /dev/null
@@ -1,336 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindFLTK
---------
-
-Find the Fast Light Toolkit (FLTK) library
-
-Input Variables
-^^^^^^^^^^^^^^^
-
-By default this module will search for all of the FLTK components and
-add them to the ``FLTK_LIBRARIES`` variable.  You can limit the components
-which get placed in ``FLTK_LIBRARIES`` by defining one or more of the
-following three options:
-
-``FLTK_SKIP_OPENGL``
-  Set to true to disable searching for the FLTK GL library
-
-``FLTK_SKIP_FORMS``
-  Set to true to disable searching for the FLTK Forms library
-
-``FLTK_SKIP_IMAGES``
-  Set to true to disable searching for the FLTK Images library
-
-FLTK is composed also by a binary tool. You can set the following option:
-
-``FLTK_SKIP_FLUID``
-  Set to true to not look for the FLUID binary
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-The following variables will be defined:
-
-``FLTK_FOUND``
-  True if all components not skipped were found
-
-``FLTK_INCLUDE_DIR``
-  Path to the include directory for FLTK header files
-
-``FLTK_LIBRARIES``
-  List of the FLTK libraries found
-
-``FLTK_FLUID_EXECUTABLE``
-  Path to the FLUID binary tool
-
-``FLTK_WRAP_UI``
-  True if FLUID is found, used to enable the FLTK_WRAP_UI command
-
-Cache Variables
-^^^^^^^^^^^^^^^
-
-The following cache variables are also available to set or use:
-
-``FLTK_BASE_LIBRARY_RELEASE``
-  The FLTK base library (optimized)
-
-``FLTK_BASE_LIBRARY_DEBUG``
-  The FLTK base library (debug)
-
-``FLTK_GL_LIBRARY_RELEASE``
-  The FLTK GL library (optimized)
-
-``FLTK_GL_LIBRARY_DEBUG``
-  The FLTK GL library (debug)
-
-``FLTK_FORMS_LIBRARY_RELEASE``
-  The FLTK Forms library (optimized)
-
-``FLTK_FORMS_LIBRARY_DEBUG``
-  The FLTK Forms library (debug)
-
-``FLTK_IMAGES_LIBRARY_RELEASE``
-  The FLTK Images protobuf library (optimized)
-
-``FLTK_IMAGES_LIBRARY_DEBUG``
-  The FLTK Images library (debug)
-#]=======================================================================]
-
-if(NOT FLTK_SKIP_OPENGL)
-  find_package(OpenGL)
-endif()
-
-#  Platform dependent libraries required by FLTK
-if(WIN32)
-  if(NOT CYGWIN)
-    if(BORLAND)
-      set( FLTK_PLATFORM_DEPENDENT_LIBS import32 )
-    else()
-      set( FLTK_PLATFORM_DEPENDENT_LIBS wsock32 comctl32 )
-    endif()
-  endif()
-endif()
-
-if(UNIX)
-  include(${CMAKE_CURRENT_LIST_DIR}/FindX11.cmake)
-  find_library(FLTK_MATH_LIBRARY m)
-  set( FLTK_PLATFORM_DEPENDENT_LIBS ${X11_LIBRARIES} ${FLTK_MATH_LIBRARY})
-endif()
-
-if(APPLE)
-  set( FLTK_PLATFORM_DEPENDENT_LIBS  "-framework Carbon -framework Cocoa -framework ApplicationServices -lz")
-endif()
-
-# If FLTK_INCLUDE_DIR is already defined we assigne its value to FLTK_DIR
-if(FLTK_INCLUDE_DIR)
-  set(FLTK_DIR ${FLTK_INCLUDE_DIR})
-endif()
-
-
-# If FLTK has been built using CMake we try to find everything directly
-set(FLTK_DIR_STRING "directory containing FLTKConfig.cmake.  This is either the root of the build tree, or PREFIX/lib/fltk for an installation.")
-
-# Search only if the location is not already known.
-if(NOT FLTK_DIR)
-  # Get the system search path as a list.
-  file(TO_CMAKE_PATH "$ENV{PATH}" FLTK_DIR_SEARCH2)
-
-  # Construct a set of paths relative to the system search path.
-  set(FLTK_DIR_SEARCH "")
-  foreach(dir ${FLTK_DIR_SEARCH2})
-    set(FLTK_DIR_SEARCH ${FLTK_DIR_SEARCH} "${dir}/../lib/fltk")
-  endforeach()
-  string(REPLACE "//" "/" FLTK_DIR_SEARCH "${FLTK_DIR_SEARCH}")
-
-  #
-  # Look for an installation or build tree.
-  #
-  find_path(FLTK_DIR FLTKConfig.cmake
-    # Look for an environment variable FLTK_DIR.
-    HINTS
-      ENV FLTK_DIR
-
-    # Look in places relative to the system executable search path.
-    ${FLTK_DIR_SEARCH}
-
-    PATH_SUFFIXES
-    fltk
-    fltk/include
-    lib/fltk
-    lib/fltk/include
-
-    # Help the user find it if we cannot.
-    DOC "The ${FLTK_DIR_STRING}"
-    )
-endif()
-
-# Check if FLTK was built using CMake
-if(EXISTS ${FLTK_DIR}/FLTKConfig.cmake)
-  set(FLTK_BUILT_WITH_CMAKE 1)
-endif()
-
-if(FLTK_BUILT_WITH_CMAKE)
-  set(FLTK_FOUND 1)
-  include(${FLTK_DIR}/FLTKConfig.cmake)
-
-  # Fluid
-  if(FLUID_COMMAND)
-    set(FLTK_FLUID_EXECUTABLE ${FLUID_COMMAND} CACHE FILEPATH "Fluid executable")
-  else()
-    find_program(FLTK_FLUID_EXECUTABLE fluid PATHS
-      ${FLTK_EXECUTABLE_DIRS}
-      ${FLTK_EXECUTABLE_DIRS}/RelWithDebInfo
-      ${FLTK_EXECUTABLE_DIRS}/Debug
-      ${FLTK_EXECUTABLE_DIRS}/Release
-      NO_SYSTEM_PATH)
-  endif()
-  # mark_as_advanced(FLTK_FLUID_EXECUTABLE)
-
-  set(FLTK_INCLUDE_DIR ${FLTK_DIR})
-  link_directories(${FLTK_LIBRARY_DIRS})
-
-  set(FLTK_BASE_LIBRARY fltk)
-  set(FLTK_GL_LIBRARY fltk_gl)
-  set(FLTK_FORMS_LIBRARY fltk_forms)
-  set(FLTK_IMAGES_LIBRARY fltk_images)
-
-  # Add the extra libraries
-  load_cache(${FLTK_DIR}
-    READ_WITH_PREFIX
-    FL FLTK_USE_SYSTEM_JPEG
-    FL FLTK_USE_SYSTEM_PNG
-    FL FLTK_USE_SYSTEM_ZLIB
-    )
-
-  set(FLTK_IMAGES_LIBS "")
-  if(FLFLTK_USE_SYSTEM_JPEG)
-    set(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_jpeg)
-  endif()
-  if(FLFLTK_USE_SYSTEM_PNG)
-    set(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_png)
-  endif()
-  if(FLFLTK_USE_SYSTEM_ZLIB)
-    set(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_zlib)
-  endif()
-  set(FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}" CACHE INTERNAL
-    "Extra libraries for fltk_images library.")
-
-else()
-
-  # if FLTK was not built using CMake
-  # Find fluid executable.
-  find_program(FLTK_FLUID_EXECUTABLE fluid ${FLTK_INCLUDE_DIR}/fluid)
-
-  # Use location of fluid to help find everything else.
-  set(FLTK_INCLUDE_SEARCH_PATH "")
-  set(FLTK_LIBRARY_SEARCH_PATH "")
-  if(FLTK_FLUID_EXECUTABLE)
-    get_filename_component(FLTK_BIN_DIR "${FLTK_FLUID_EXECUTABLE}" PATH)
-    set(FLTK_INCLUDE_SEARCH_PATH ${FLTK_INCLUDE_SEARCH_PATH}
-      ${FLTK_BIN_DIR}/../include ${FLTK_BIN_DIR}/..)
-    set(FLTK_LIBRARY_SEARCH_PATH ${FLTK_LIBRARY_SEARCH_PATH}
-      ${FLTK_BIN_DIR}/../lib)
-    set(FLTK_WRAP_UI 1)
-  endif()
-
-  #
-  # Try to find FLTK include dir using fltk-config
-  #
-  if(UNIX)
-    # Use fltk-config to generate a list of possible include directories
-    find_program(FLTK_CONFIG_SCRIPT fltk-config PATHS ${FLTK_BIN_DIR})
-    if(FLTK_CONFIG_SCRIPT)
-      if(NOT FLTK_INCLUDE_DIR)
-        exec_program(${FLTK_CONFIG_SCRIPT} ARGS --cxxflags OUTPUT_VARIABLE FLTK_CXXFLAGS)
-        if(FLTK_CXXFLAGS)
-          string(REGEX MATCHALL "-I[^ ]*" _fltk_temp_dirs ${FLTK_CXXFLAGS})
-          string(REPLACE "-I" "" _fltk_temp_dirs "${_fltk_temp_dirs}")
-          foreach(_dir ${_fltk_temp_dirs})
-            string(STRIP ${_dir} _output)
-            list(APPEND _FLTK_POSSIBLE_INCLUDE_DIRS ${_output})
-          endforeach()
-        endif()
-      endif()
-    endif()
-  endif()
-
-  list(APPEND FLTK_INCLUDE_SEARCH_PATH ${_FLTK_POSSIBLE_INCLUDE_DIRS})
-
-  find_path(FLTK_INCLUDE_DIR
-      NAMES FL/Fl.h FL/Fl.H    # fltk 1.1.9 has Fl.H (#8376)
-      PATH_SUFFIXES fltk fltk/include
-      PATHS ${FLTK_INCLUDE_SEARCH_PATH})
-
-  #
-  # Try to find FLTK library
-  if(UNIX)
-    if(FLTK_CONFIG_SCRIPT)
-      exec_program(${FLTK_CONFIG_SCRIPT} ARGS --libs OUTPUT_VARIABLE _FLTK_POSSIBLE_LIBS)
-      if(_FLTK_POSSIBLE_LIBS)
-        get_filename_component(_FLTK_POSSIBLE_LIBRARY_DIR ${_FLTK_POSSIBLE_LIBS} PATH)
-      endif()
-    endif()
-  endif()
-
-  list(APPEND FLTK_LIBRARY_SEARCH_PATH ${FLTK_INCLUDE_DIR}/lib ${_FLTK_POSSIBLE_LIBRARY_DIR})
-
-  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-
-  # Allow libraries to be set manually
-  if(NOT FLTK_BASE_LIBRARY)
-      find_library(FLTK_BASE_LIBRARY_RELEASE NAMES fltk PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
-      find_library(FLTK_BASE_LIBRARY_DEBUG NAMES fltkd PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
-      select_library_configurations(FLTK_BASE)
-  endif()
-  if(NOT FLTK_GL_LIBRARY)
-      find_library(FLTK_GL_LIBRARY_RELEASE NAMES fltkgl fltk_gl PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
-      find_library(FLTK_GL_LIBRARY_DEBUG NAMES fltkgld fltk_gld PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
-      select_library_configurations(FLTK_GL)
-  endif()
-  if(NOT FLTK_FORMS_LIBRARY)
-      find_library(FLTK_FORMS_LIBRARY_RELEASE NAMES fltkforms fltk_forms PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
-      find_library(FLTK_FORMS_LIBRARY_DEBUG NAMES fltkformsd fltk_formsd PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
-      select_library_configurations(FLTK_FORMS)
-  endif()
-  if(NOT FLTK_IMAGES_LIBRARY)
-      find_library(FLTK_IMAGES_LIBRARY_RELEASE NAMES fltkimages fltk_images PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
-      find_library(FLTK_IMAGES_LIBRARY_DEBUG NAMES fltkimagesd fltk_imagesd PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
-      select_library_configurations(FLTK_IMAGES)
-  endif()
-
-  # Find the extra libraries needed for the fltk_images library.
-  if(UNIX)
-    if(FLTK_CONFIG_SCRIPT)
-      exec_program(${FLTK_CONFIG_SCRIPT} ARGS --use-images --ldflags
-        OUTPUT_VARIABLE FLTK_IMAGES_LDFLAGS)
-      set(FLTK_LIBS_EXTRACT_REGEX ".*-lfltk_images (.*) -lfltk.*")
-      if("${FLTK_IMAGES_LDFLAGS}" MATCHES "${FLTK_LIBS_EXTRACT_REGEX}")
-        string(REGEX REPLACE " +" ";" FLTK_IMAGES_LIBS "${CMAKE_MATCH_1}")
-        # The EXEC_PROGRAM will not be inherited into subdirectories from
-        # the file that originally included this module.  Save the answer.
-        set(FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}" CACHE INTERNAL
-          "Extra libraries for fltk_images library.")
-      endif()
-    endif()
-  endif()
-
-endif()
-
-# Append all of the required libraries together (by default, everything)
-set(FLTK_LIBRARIES)
-if(NOT FLTK_SKIP_IMAGES)
-  list(APPEND FLTK_LIBRARIES ${FLTK_IMAGES_LIBRARY})
-endif()
-if(NOT FLTK_SKIP_FORMS)
-  list(APPEND FLTK_LIBRARIES ${FLTK_FORMS_LIBRARY})
-endif()
-if(NOT FLTK_SKIP_OPENGL)
-  list(APPEND FLTK_LIBRARIES ${FLTK_GL_LIBRARY} ${OPENGL_gl_LIBRARY})
-  list(APPEND FLTK_INCLUDE_DIR ${OPENGL_INCLUDE_DIR})
-  list(REMOVE_DUPLICATES FLTK_INCLUDE_DIR)
-endif()
-list(APPEND FLTK_LIBRARIES ${FLTK_BASE_LIBRARY})
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-if(FLTK_SKIP_FLUID)
-  FIND_PACKAGE_HANDLE_STANDARD_ARGS(FLTK DEFAULT_MSG FLTK_LIBRARIES FLTK_INCLUDE_DIR)
-else()
-  FIND_PACKAGE_HANDLE_STANDARD_ARGS(FLTK DEFAULT_MSG FLTK_LIBRARIES FLTK_INCLUDE_DIR FLTK_FLUID_EXECUTABLE)
-endif()
-
-if(FLTK_FOUND)
-  if(APPLE)
-    set(FLTK_LIBRARIES ${FLTK_PLATFORM_DEPENDENT_LIBS} ${FLTK_LIBRARIES})
-  else()
-    set(FLTK_LIBRARIES ${FLTK_LIBRARIES} ${FLTK_PLATFORM_DEPENDENT_LIBS})
-  endif()
-
-  # The following deprecated settings are for compatibility with CMake 1.4
-  set (HAS_FLTK ${FLTK_FOUND})
-  set (FLTK_INCLUDE_PATH ${FLTK_INCLUDE_DIR})
-  set (FLTK_FLUID_EXE ${FLTK_FLUID_EXECUTABLE})
-  set (FLTK_LIBRARY ${FLTK_LIBRARIES})
-endif()
diff --git a/share/cmake-3.18/Modules/FindFontconfig.cmake b/share/cmake-3.18/Modules/FindFontconfig.cmake
deleted file mode 100644
index a6f0180..0000000
--- a/share/cmake-3.18/Modules/FindFontconfig.cmake
+++ /dev/null
@@ -1,101 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindFontconfig
---------------
-
-Find Fontconfig headers and library.
-
-Imported Targets
-^^^^^^^^^^^^^^^^
-
-``Fontconfig::Fontconfig``
-  The Fontconfig library, if found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This will define the following variables in your project:
-
-``Fontconfig_FOUND``
-  true if (the requested version of) Fontconfig is available.
-``Fontconfig_VERSION``
-  the version of Fontconfig.
-``Fontconfig_LIBRARIES``
-  the libraries to link against to use Fontconfig.
-``Fontconfig_INCLUDE_DIRS``
-  where to find the Fontconfig headers.
-``Fontconfig_COMPILE_OPTIONS``
-  this should be passed to target_compile_options(), if the
-  target is not used for linking
-
-#]=======================================================================]
-
-
-# use pkg-config to get the directories and then use these values
-# in the FIND_PATH() and FIND_LIBRARY() calls
-find_package(PkgConfig QUIET)
-pkg_check_modules(PKG_FONTCONFIG QUIET fontconfig)
-set(Fontconfig_COMPILE_OPTIONS ${PKG_FONTCONFIG_CFLAGS_OTHER})
-set(Fontconfig_VERSION ${PKG_FONTCONFIG_VERSION})
-
-find_path( Fontconfig_INCLUDE_DIR
-  NAMES
-    fontconfig/fontconfig.h
-  HINTS
-    ${PKG_FONTCONFIG_INCLUDE_DIRS}
-    /usr/X11/include
-)
-
-find_library( Fontconfig_LIBRARY
-  NAMES
-    fontconfig
-  PATHS
-    ${PKG_FONTCONFIG_LIBRARY_DIRS}
-)
-
-if (Fontconfig_INCLUDE_DIR AND NOT Fontconfig_VERSION)
-  file(STRINGS ${Fontconfig_INCLUDE_DIR}/fontconfig/fontconfig.h _contents REGEX "^#define[ \t]+FC_[A-Z]+[ \t]+[0-9]+$")
-  unset(Fontconfig_VERSION)
-  foreach(VPART MAJOR MINOR REVISION)
-    foreach(VLINE ${_contents})
-      if(VLINE MATCHES "^#define[\t ]+FC_${VPART}[\t ]+([0-9]+)$")
-        set(Fontconfig_VERSION_PART "${CMAKE_MATCH_1}")
-        if(Fontconfig_VERSION)
-          string(APPEND Fontconfig_VERSION ".${Fontconfig_VERSION_PART}")
-        else()
-          set(Fontconfig_VERSION "${Fontconfig_VERSION_PART}")
-        endif()
-      endif()
-    endforeach()
-  endforeach()
-endif ()
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Fontconfig
-  FOUND_VAR
-    Fontconfig_FOUND
-  REQUIRED_VARS
-    Fontconfig_LIBRARY
-    Fontconfig_INCLUDE_DIR
-  VERSION_VAR
-    Fontconfig_VERSION
-)
-
-
-if(Fontconfig_FOUND AND NOT TARGET Fontconfig::Fontconfig)
-  add_library(Fontconfig::Fontconfig UNKNOWN IMPORTED)
-  set_target_properties(Fontconfig::Fontconfig PROPERTIES
-    IMPORTED_LOCATION "${Fontconfig_LIBRARY}"
-    INTERFACE_COMPILE_OPTIONS "${Fontconfig_COMPILE_OPTIONS}"
-    INTERFACE_INCLUDE_DIRECTORIES "${Fontconfig_INCLUDE_DIR}"
-  )
-endif()
-
-mark_as_advanced(Fontconfig_LIBRARY Fontconfig_INCLUDE_DIR)
-
-if(Fontconfig_FOUND)
-  set(Fontconfig_LIBRARIES ${Fontconfig_LIBRARY})
-  set(Fontconfig_INCLUDE_DIRS ${Fontconfig_INCLUDE_DIR})
-endif()
diff --git a/share/cmake-3.18/Modules/FindFreetype.cmake b/share/cmake-3.18/Modules/FindFreetype.cmake
deleted file mode 100644
index 3e6a177..0000000
--- a/share/cmake-3.18/Modules/FindFreetype.cmake
+++ /dev/null
@@ -1,199 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindFreetype
-------------
-
-Find the FreeType font renderer includes and library.
-
-Imported Targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :prop_tgt:`IMPORTED` target:
-
-``Freetype::Freetype``
-  The Freetype ``freetype`` library, if found
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``FREETYPE_FOUND``
-  true if the Freetype headers and libraries were found
-``FREETYPE_INCLUDE_DIRS``
-  directories containing the Freetype headers. This is the
-  concatenation of the variables:
-
-  ``FREETYPE_INCLUDE_DIR_ft2build``
-    directory holding the main Freetype API configuration header
-  ``FREETYPE_INCLUDE_DIR_freetype2``
-    directory holding Freetype public headers
-``FREETYPE_LIBRARIES``
-  the library to link against
-``FREETYPE_VERSION_STRING``
-  the version of freetype found (since CMake 2.8.8)
-
-Hints
-^^^^^
-
-The user may set the environment variable ``FREETYPE_DIR`` to the root
-directory of a Freetype installation.
-#]=======================================================================]
-
-# Created by Eric Wing.
-# Modifications by Alexander Neundorf.
-# This file has been renamed to "FindFreetype.cmake" instead of the correct
-# "FindFreeType.cmake" in order to be compatible with the one from KDE4, Alex.
-
-# Ugh, FreeType seems to use some #include trickery which
-# makes this harder than it should be. It looks like they
-# put ft2build.h in a common/easier-to-find location which
-# then contains a #include to a more specific header in a
-# more specific location (#include <freetype/config/ftheader.h>).
-# Then from there, they need to set a bunch of #define's
-# so you can do something like:
-# #include FT_FREETYPE_H
-# Unfortunately, using CMake's mechanisms like include_directories()
-# wants explicit full paths and this trickery doesn't work too well.
-# I'm going to attempt to cut out the middleman and hope
-# everything still works.
-
-set(FREETYPE_FIND_ARGS
-  HINTS
-    ENV FREETYPE_DIR
-  PATHS
-    ENV GTKMM_BASEPATH
-    [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]
-    [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]
-)
-
-find_path(
-  FREETYPE_INCLUDE_DIR_ft2build
-  ft2build.h
-  ${FREETYPE_FIND_ARGS}
-  PATH_SUFFIXES
-    include/freetype2
-    include
-    freetype2
-)
-
-find_path(
-  FREETYPE_INCLUDE_DIR_freetype2
-  NAMES
-    freetype/config/ftheader.h
-    config/ftheader.h
-  ${FREETYPE_FIND_ARGS}
-  PATH_SUFFIXES
-    include/freetype2
-    include
-    freetype2
-)
-
-if(NOT FREETYPE_LIBRARY)
-  find_library(FREETYPE_LIBRARY_RELEASE
-    NAMES
-      freetype
-      libfreetype
-      freetype219
-    ${FREETYPE_FIND_ARGS}
-    PATH_SUFFIXES
-      lib
-  )
-  find_library(FREETYPE_LIBRARY_DEBUG
-    NAMES
-      freetyped
-      libfreetyped
-      freetype219d
-    ${FREETYPE_FIND_ARGS}
-    PATH_SUFFIXES
-      lib
-  )
-  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-  select_library_configurations(FREETYPE)
-else()
-  # on Windows, ensure paths are in canonical format (forward slahes):
-  file(TO_CMAKE_PATH "${FREETYPE_LIBRARY}" FREETYPE_LIBRARY)
-endif()
-
-unset(FREETYPE_FIND_ARGS)
-
-# set the user variables
-if(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
-  set(FREETYPE_INCLUDE_DIRS "${FREETYPE_INCLUDE_DIR_ft2build};${FREETYPE_INCLUDE_DIR_freetype2}")
-  list(REMOVE_DUPLICATES FREETYPE_INCLUDE_DIRS)
-endif()
-set(FREETYPE_LIBRARIES "${FREETYPE_LIBRARY}")
-
-if(EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h")
-  set(FREETYPE_H "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h")
-elseif(EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype.h")
-  set(FREETYPE_H "${FREETYPE_INCLUDE_DIR_freetype2}/freetype.h")
-endif()
-
-if(FREETYPE_INCLUDE_DIR_freetype2 AND FREETYPE_H)
-  file(STRINGS "${FREETYPE_H}" freetype_version_str
-       REGEX "^#[\t ]*define[\t ]+FREETYPE_(MAJOR|MINOR|PATCH)[\t ]+[0-9]+$")
-
-  unset(FREETYPE_VERSION_STRING)
-  foreach(VPART MAJOR MINOR PATCH)
-    foreach(VLINE ${freetype_version_str})
-      if(VLINE MATCHES "^#[\t ]*define[\t ]+FREETYPE_${VPART}[\t ]+([0-9]+)$")
-        set(FREETYPE_VERSION_PART "${CMAKE_MATCH_1}")
-        if(FREETYPE_VERSION_STRING)
-          string(APPEND FREETYPE_VERSION_STRING ".${FREETYPE_VERSION_PART}")
-        else()
-          set(FREETYPE_VERSION_STRING "${FREETYPE_VERSION_PART}")
-        endif()
-        unset(FREETYPE_VERSION_PART)
-      endif()
-    endforeach()
-  endforeach()
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-
-find_package_handle_standard_args(
-  Freetype
-  REQUIRED_VARS
-    FREETYPE_LIBRARY
-    FREETYPE_INCLUDE_DIRS
-  VERSION_VAR
-    FREETYPE_VERSION_STRING
-)
-
-mark_as_advanced(
-  FREETYPE_INCLUDE_DIR_freetype2
-  FREETYPE_INCLUDE_DIR_ft2build
-)
-
-if(Freetype_FOUND)
-  if(NOT TARGET Freetype::Freetype)
-    add_library(Freetype::Freetype UNKNOWN IMPORTED)
-    set_target_properties(Freetype::Freetype PROPERTIES
-      INTERFACE_INCLUDE_DIRECTORIES "${FREETYPE_INCLUDE_DIRS}")
-
-    if(FREETYPE_LIBRARY_RELEASE)
-      set_property(TARGET Freetype::Freetype APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS RELEASE)
-      set_target_properties(Freetype::Freetype PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
-        IMPORTED_LOCATION_RELEASE "${FREETYPE_LIBRARY_RELEASE}")
-    endif()
-
-    if(FREETYPE_LIBRARY_DEBUG)
-      set_property(TARGET Freetype::Freetype APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS DEBUG)
-      set_target_properties(Freetype::Freetype PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
-        IMPORTED_LOCATION_DEBUG "${FREETYPE_LIBRARY_DEBUG}")
-    endif()
-
-    if(NOT FREETYPE_LIBRARY_RELEASE AND NOT FREETYPE_LIBRARY_DEBUG)
-      set_target_properties(Freetype::Freetype PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-        IMPORTED_LOCATION "${FREETYPE_LIBRARY}")
-    endif()
-  endif()
-endif()
diff --git a/share/cmake-3.18/Modules/FindGDAL.cmake b/share/cmake-3.18/Modules/FindGDAL.cmake
deleted file mode 100644
index fde84d4..0000000
--- a/share/cmake-3.18/Modules/FindGDAL.cmake
+++ /dev/null
@@ -1,165 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindGDAL
---------
-
-Find Geospatial Data Abstraction Library (GDAL).
-
-IMPORTED Targets
-^^^^^^^^^^^^^^^^
-
-This module defines :prop_tgt:`IMPORTED` target ``GDAL::GDAL``
-if GDAL has been found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``GDAL_FOUND``
-  True if GDAL is found.
-``GDAL_INCLUDE_DIRS``
-  Include directories for GDAL headers.
-``GDAL_LIBRARIES``
-  Libraries to link to GDAL.
-``GDAL_VERSION``
-  The version of GDAL found.
-
-Cache variables
-^^^^^^^^^^^^^^^
-
-The following cache variables may also be set:
-
-``GDAL_LIBRARY``
-  The libgdal library file.
-``GDAL_INCLUDE_DIR``
-  The directory containing ``gdal.h``.
-
-Hints
-^^^^^
-
-Set ``GDAL_DIR`` or ``GDAL_ROOT`` in the environment to specify the
-GDAL installation prefix.
-#]=======================================================================]
-
-# $GDALDIR is an environment variable that would
-# correspond to the ./configure --prefix=$GDAL_DIR
-# used in building gdal.
-#
-# Created by Eric Wing. I'm not a gdal user, but OpenSceneGraph uses it
-# for osgTerrain so I whipped this module together for completeness.
-# I actually don't know the conventions or where files are typically
-# placed in distros.
-# Any real gdal users are encouraged to correct this (but please don't
-# break the OS X framework stuff when doing so which is what usually seems
-# to happen).
-
-# This makes the presumption that you are include gdal.h like
-#
-#include "gdal.h"
-
-find_path(GDAL_INCLUDE_DIR gdal.h
-  HINTS
-    ENV GDAL_DIR
-    ENV GDAL_ROOT
-  PATH_SUFFIXES
-     include/gdal
-     include/GDAL
-     include
-)
-
-if(UNIX)
-    # Use gdal-config to obtain the library version (this should hopefully
-    # allow us to -lgdal1.x.y where x.y are correct version)
-    # For some reason, libgdal development packages do not contain
-    # libgdal.so...
-    find_program(GDAL_CONFIG gdal-config
-        HINTS
-          ENV GDAL_DIR
-          ENV GDAL_ROOT
-        PATH_SUFFIXES bin
-    )
-
-    if(GDAL_CONFIG)
-        exec_program(${GDAL_CONFIG} ARGS --libs OUTPUT_VARIABLE GDAL_CONFIG_LIBS)
-
-        if(GDAL_CONFIG_LIBS)
-            # treat the output as a command line and split it up
-            separate_arguments(args NATIVE_COMMAND "${GDAL_CONFIG_LIBS}")
-
-            # only consider libraries whose name matches this pattern
-            set(name_pattern "[gG][dD][aA][lL]")
-
-            # consider each entry as a possible library path, name, or parent directory
-            foreach(arg IN LISTS args)
-                # library name
-                if("${arg}" MATCHES "^-l(.*)$")
-                    set(lib "${CMAKE_MATCH_1}")
-
-                    # only consider libraries whose name matches the expected pattern
-                    if("${lib}" MATCHES "${name_pattern}")
-                        list(APPEND _gdal_lib "${lib}")
-                    endif()
-                # library search path
-                elseif("${arg}" MATCHES "^-L(.*)$")
-                    list(APPEND _gdal_libpath "${CMAKE_MATCH_1}")
-                # assume this is a full path to a library
-                elseif(IS_ABSOLUTE "${arg}" AND EXISTS "${arg}")
-                    # extract the file name
-                    get_filename_component(lib "${arg}" NAME)
-
-                    # only consider libraries whose name matches the expected pattern
-                    if(NOT "${lib}" MATCHES "${name_pattern}")
-                        continue()
-                    endif()
-
-                    # extract the file directory
-                    get_filename_component(dir "${arg}" DIRECTORY)
-
-                    # remove library prefixes/suffixes
-                    string(REGEX REPLACE "^(${CMAKE_SHARED_LIBRARY_PREFIX}|${CMAKE_STATIC_LIBRARY_PREFIX})" "" lib "${lib}")
-                    string(REGEX REPLACE "(${CMAKE_SHARED_LIBRARY_SUFFIX}|${CMAKE_STATIC_LIBRARY_SUFFIX})$" "" lib "${lib}")
-
-                    # use the file name and directory as hints
-                    list(APPEND _gdal_libpath "${dir}")
-                    list(APPEND _gdal_lib "${lib}")
-                endif()
-            endforeach()
-        endif()
-    endif()
-endif()
-
-find_library(GDAL_LIBRARY
-  NAMES ${_gdal_lib} gdal gdal_i gdal1.5.0 gdal1.4.0 gdal1.3.2 GDAL
-  HINTS
-     ENV GDAL_DIR
-     ENV GDAL_ROOT
-     ${_gdal_libpath}
-  PATH_SUFFIXES lib
-)
-
-if (EXISTS "${GDAL_INCLUDE_DIR}/gdal_version.h")
-    file(STRINGS "${GDAL_INCLUDE_DIR}/gdal_version.h" _gdal_version
-        REGEX "GDAL_RELEASE_NAME")
-    string(REGEX REPLACE ".*\"\(.*\)\"" "\\1" GDAL_VERSION "${_gdal_version}")
-    unset(_gdal_version)
-else ()
-    set(GDAL_VERSION GDAL_VERSION-NOTFOUND)
-endif ()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GDAL
-    VERSION_VAR GDAL_VERSION
-    REQUIRED_VARS GDAL_LIBRARY GDAL_INCLUDE_DIR)
-
-if (GDAL_FOUND AND NOT TARGET GDAL::GDAL)
-    add_library(GDAL::GDAL UNKNOWN IMPORTED)
-    set_target_properties(GDAL::GDAL PROPERTIES
-        IMPORTED_LOCATION "${GDAL_LIBRARY}"
-        INTERFACE_INCLUDE_DIRECTORIES "${GDAL_INCLUDE_DIR}")
-endif ()
-
-set(GDAL_LIBRARIES ${GDAL_LIBRARY})
-set(GDAL_INCLUDE_DIRS ${GDAL_INCLUDE_DIR})
diff --git a/share/cmake-3.18/Modules/FindGIF.cmake b/share/cmake-3.18/Modules/FindGIF.cmake
deleted file mode 100644
index d5a143e..0000000
--- a/share/cmake-3.18/Modules/FindGIF.cmake
+++ /dev/null
@@ -1,127 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindGIF
--------
-
-This finds the Graphics Interchange Format (GIF) library (``giflib``)
-
-Imported targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :prop_tgt:`IMPORTED` target:
-
-``GIF::GIF``
-  The ``giflib`` library, if found.
-
-Result variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``GIF_FOUND``
-  If false, do not try to use GIF.
-``GIF_INCLUDE_DIRS``
-  where to find gif_lib.h, etc.
-``GIF_LIBRARIES``
-  the libraries needed to use GIF.
-``GIF_VERSION``
-  3, 4 or a full version string (eg 5.1.4) for versions >= 4.1.6.
-
-Cache variables
-^^^^^^^^^^^^^^^
-
-The following cache variables may also be set:
-
-``GIF_INCLUDE_DIR``
-  where to find the GIF headers.
-``GIF_LIBRARY``
-  where to find the GIF library.
-
-Hints
-^^^^^
-
-``GIF_DIR`` is an environment variable that would correspond to the
-``./configure --prefix=$GIF_DIR``.
-#]=======================================================================]
-
-# Created by Eric Wing.
-# Modifications by Alexander Neundorf, Ben Campbell
-
-find_path(GIF_INCLUDE_DIR gif_lib.h
-  HINTS
-    ENV GIF_DIR
-  PATH_SUFFIXES include
-)
-
-# the gif library can have many names :-/
-set(POTENTIAL_GIF_LIBS gif libgif ungif libungif giflib giflib4)
-
-find_library(GIF_LIBRARY
-  NAMES ${POTENTIAL_GIF_LIBS}
-  HINTS
-    ENV GIF_DIR
-  PATH_SUFFIXES lib
-)
-
-# Very basic version detection.
-# The GIF_LIB_VERSION string in gif_lib.h seems to be unreliable, since it seems
-# to be always " Version 2.0, " in versions 3.x of giflib.
-# In version 4 the member UserData was added to GifFileType, so we check for this
-# one.
-# Versions after 4.1.6 define GIFLIB_MAJOR, GIFLIB_MINOR, and GIFLIB_RELEASE
-# see http://giflib.sourceforge.net/gif_lib.html#compatibility
-if(GIF_INCLUDE_DIR)
-  include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
-  include(${CMAKE_CURRENT_LIST_DIR}/CheckStructHasMember.cmake)
-  CMAKE_PUSH_CHECK_STATE()
-  set(CMAKE_REQUIRED_QUIET ${GIF_FIND_QUIETLY})
-  set(CMAKE_REQUIRED_INCLUDES "${GIF_INCLUDE_DIR}")
-
-  # Check for the specific version defines (>=4.1.6 only)
-  file(STRINGS ${GIF_INCLUDE_DIR}/gif_lib.h _GIF_DEFS REGEX "^[ \t]*#define[ \t]+GIFLIB_(MAJOR|MINOR|RELEASE)")
-  if(_GIF_DEFS)
-    # yay - got exact version info
-    string(REGEX REPLACE ".*GIFLIB_MAJOR ([0-9]+).*" "\\1" _GIF_MAJ "${_GIF_DEFS}")
-    string(REGEX REPLACE ".*GIFLIB_MINOR ([0-9]+).*" "\\1" _GIF_MIN "${_GIF_DEFS}")
-    string(REGEX REPLACE ".*GIFLIB_RELEASE ([0-9]+).*" "\\1" _GIF_REL "${_GIF_DEFS}")
-    set(GIF_VERSION "${_GIF_MAJ}.${_GIF_MIN}.${_GIF_REL}")
-  else()
-    # use UserData field to sniff version instead
-    CHECK_STRUCT_HAS_MEMBER(GifFileType UserData gif_lib.h GIF_GifFileType_UserData )
-    if(GIF_GifFileType_UserData)
-      set(GIF_VERSION 4)
-    else()
-      set(GIF_VERSION 3)
-    endif()
-  endif()
-
-  unset(_GIF_MAJ)
-  unset(_GIF_MIN)
-  unset(_GIF_REL)
-  unset(_GIF_DEFS)
-  CMAKE_POP_CHECK_STATE()
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GIF  REQUIRED_VARS  GIF_LIBRARY  GIF_INCLUDE_DIR
-                                       VERSION_VAR GIF_VERSION )
-
-if(GIF_FOUND)
-  set(GIF_INCLUDE_DIRS "${GIF_INCLUDE_DIR}")
-  set(GIF_LIBRARIES ${GIF_LIBRARY})
-
-  if(NOT TARGET GIF::GIF)
-    add_library(GIF::GIF UNKNOWN IMPORTED)
-    set_target_properties(GIF::GIF PROPERTIES
-      INTERFACE_INCLUDE_DIRECTORIES "${GIF_INCLUDE_DIRS}")
-    if(EXISTS "${GIF_LIBRARY}")
-      set_target_properties(GIF::GIF PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-        IMPORTED_LOCATION "${GIF_LIBRARY}")
-    endif()
-  endif()
-endif()
-
-mark_as_advanced(GIF_INCLUDE_DIR GIF_LIBRARY)
diff --git a/share/cmake-3.18/Modules/FindGLEW.cmake b/share/cmake-3.18/Modules/FindGLEW.cmake
deleted file mode 100644
index 27ffa13..0000000
--- a/share/cmake-3.18/Modules/FindGLEW.cmake
+++ /dev/null
@@ -1,342 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindGLEW
---------
-
-Find the OpenGL Extension Wrangler Library (GLEW)
-
-Input Variables
-^^^^^^^^^^^^^^^
-
-The following variables may be set to influence this module's behavior:
-
-``GLEW_USE_STATIC_LIBS``
-  to find and create :prop_tgt:`IMPORTED` target for static linkage.
-
-``GLEW_VERBOSE``
-  to output a detailed log of this module.
-
-Imported Targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :ref:`Imported Targets <Imported Targets>`:
-
-
-``GLEW::glew``
-  The GLEW shared library.
-``GLEW::glew_s``
-  The GLEW static library, if ``GLEW_USE_STATIC_LIBS`` is set to ``TRUE``.
-``GLEW::GLEW``
-  Duplicates either ``GLEW::glew`` or ``GLEW::glew_s`` based on availability.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module defines the following variables:
-
-``GLEW_INCLUDE_DIRS``
-  include directories for GLEW
-``GLEW_LIBRARIES``
-  libraries to link against GLEW
-``GLEW_SHARED_LIBRARIES``
-  libraries to link against shared GLEW
-``GLEW_STATIC_LIBRARIES``
-  libraries to link against static GLEW
-``GLEW_FOUND``
-  true if GLEW has been found and can be used
-``GLEW_VERSION``
-  GLEW version
-``GLEW_VERSION_MAJOR``
-  GLEW major version
-``GLEW_VERSION_MINOR``
-  GLEW minor version
-``GLEW_VERSION_MICRO``
-  GLEW micro version
-
-#]=======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-
-find_package(GLEW CONFIG QUIET)
-
-if(GLEW_FOUND)
-  find_package_handle_standard_args(GLEW DEFAULT_MSG GLEW_CONFIG)
-  return()
-endif()
-
-if(GLEW_VERBOSE)
-  message(STATUS "FindGLEW: did not find GLEW CMake config file. Searching for libraries.")
-endif()
-
-if(APPLE)
-  find_package(OpenGL QUIET)
-
-  if(OpenGL_FOUND)
-    if(GLEW_VERBOSE)
-      message(STATUS "FindGLEW: Found OpenGL Framework.")
-      message(STATUS "FindGLEW: OPENGL_LIBRARIES: ${OPENGL_LIBRARIES}")
-    endif()
-  else()
-    if(GLEW_VERBOSE)
-      message(STATUS "FindGLEW: could not find GLEW library.")
-    endif()
-    return()
-  endif()
-endif()
-
-
-function(__glew_set_find_library_suffix shared_or_static)
-  if((UNIX AND NOT APPLE) AND "${shared_or_static}" MATCHES "SHARED")
-    set(CMAKE_FIND_LIBRARY_SUFFIXES ".so" PARENT_SCOPE)
-  elseif((UNIX AND NOT APPLE) AND "${shared_or_static}" MATCHES "STATIC")
-    set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" PARENT_SCOPE)
-  elseif(APPLE AND "${shared_or_static}" MATCHES "SHARED")
-    set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib;.so" PARENT_SCOPE)
-  elseif(APPLE AND "${shared_or_static}" MATCHES "STATIC")
-    set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" PARENT_SCOPE)
-  elseif(WIN32 AND "${shared_or_static}" MATCHES "SHARED")
-    set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" PARENT_SCOPE)
-  elseif(WIN32 AND "${shared_or_static}" MATCHES "STATIC")
-    set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib;.dll.a" PARENT_SCOPE)
-  endif()
-
-  if(GLEW_VERBOSE)
-    message(STATUS "FindGLEW: CMAKE_FIND_LIBRARY_SUFFIXES for ${shared_or_static}: ${CMAKE_FIND_LIBRARY_SUFFIXES}")
-  endif()
-endfunction()
-
-
-if(GLEW_VERBOSE)
-  if(DEFINED GLEW_USE_STATIC_LIBS)
-    message(STATUS "FindGLEW: GLEW_USE_STATIC_LIBS: ${GLEW_USE_STATIC_LIBS}.")
-  else()
-    message(STATUS "FindGLEW: GLEW_USE_STATIC_LIBS is undefined. Treated as FALSE.")
-  endif()
-endif()
-
-find_path(GLEW_INCLUDE_DIR GL/glew.h)
-mark_as_advanced(GLEW_INCLUDE_DIR)
-
-set(GLEW_INCLUDE_DIRS ${GLEW_INCLUDE_DIR})
-
-if(GLEW_VERBOSE)
-  message(STATUS "FindGLEW: GLEW_INCLUDE_DIR: ${GLEW_INCLUDE_DIR}")
-  message(STATUS "FindGLEW: GLEW_INCLUDE_DIRS: ${GLEW_INCLUDE_DIRS}")
-endif()
-
-if("${CMAKE_GENERATOR_PLATFORM}" MATCHES "x64" OR "${CMAKE_GENERATOR}" MATCHES "Win64")
-  set(_arch "x64")
-else()
-  set(_arch "Win32")
-endif()
-
-
-set(__GLEW_CURRENT_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
-
-__glew_set_find_library_suffix(SHARED)
-
-find_library(GLEW_SHARED_LIBRARY_RELEASE
-             NAMES GLEW glew glew32
-             PATH_SUFFIXES lib lib64 libx32 lib/Release/${_arch}
-             PATHS ENV GLEW_ROOT)
-
-find_library(GLEW_SHARED_LIBRARY_DEBUG
-             NAMES GLEWd glewd glew32d
-             PATH_SUFFIXES lib lib64
-             PATHS ENV GLEW_ROOT)
-
-
-__glew_set_find_library_suffix(STATIC)
-
-find_library(GLEW_STATIC_LIBRARY_RELEASE
-             NAMES GLEW glew glew32s
-             PATH_SUFFIXES lib lib64 libx32 lib/Release/${_arch}
-             PATHS ENV GLEW_ROOT)
-
-find_library(GLEW_STATIC_LIBRARY_DEBUG
-             NAMES GLEWds glewds glew32ds
-             PATH_SUFFIXES lib lib64
-             PATHS ENV GLEW_ROOT)
-
-set(CMAKE_FIND_LIBRARY_SUFFIXES ${__GLEW_CURRENT_FIND_LIBRARY_SUFFIXES})
-unset(__GLEW_CURRENT_FIND_LIBRARY_SUFFIXES)
-
-include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-
-select_library_configurations(GLEW_SHARED)
-select_library_configurations(GLEW_STATIC)
-
-if(NOT GLEW_USE_STATIC_LIBS)
-  set(GLEW_LIBRARIES ${GLEW_SHARED_LIBRARY})
-else()
-  set(GLEW_LIBRARIES ${GLEW_STATIC_LIBRARY})
-endif()
-
-
-if(GLEW_VERBOSE)
-  message(STATUS "FindGLEW: GLEW_SHARED_LIBRARY_RELEASE: ${GLEW_SHARED_LIBRARY_RELEASE}")
-  message(STATUS "FindGLEW: GLEW_STATIC_LIBRARY_RELEASE: ${GLEW_STATIC_LIBRARY_RELEASE}")
-  message(STATUS "FindGLEW: GLEW_SHARED_LIBRARY_DEBUG: ${GLEW_SHARED_LIBRARY_DEBUG}")
-  message(STATUS "FindGLEW: GLEW_STATIC_LIBRARY_DEBUG: ${GLEW_STATIC_LIBRARY_DEBUG}")
-  message(STATUS "FindGLEW: GLEW_SHARED_LIBRARY: ${GLEW_SHARED_LIBRARY}")
-  message(STATUS "FindGLEW: GLEW_STATIC_LIBRARY: ${GLEW_STATIC_LIBRARY}")
-  message(STATUS "FindGLEW: GLEW_LIBRARIES: ${GLEW_LIBRARIES}")
-endif()
-
-
-# Read version from GL/glew.h file
-if(EXISTS "${GLEW_INCLUDE_DIR}/GL/glew.h")
-  file(STRINGS "${GLEW_INCLUDE_DIR}/GL/glew.h" _contents REGEX "^VERSION_.+ [0-9]+")
-  if(_contents)
-    string(REGEX REPLACE ".*VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" GLEW_VERSION_MAJOR "${_contents}")
-    string(REGEX REPLACE ".*VERSION_MINOR[ \t]+([0-9]+).*" "\\1" GLEW_VERSION_MINOR "${_contents}")
-    string(REGEX REPLACE ".*VERSION_MICRO[ \t]+([0-9]+).*" "\\1" GLEW_VERSION_MICRO "${_contents}")
-    set(GLEW_VERSION "${GLEW_VERSION_MAJOR}.${GLEW_VERSION_MINOR}.${GLEW_VERSION_MICRO}")
-  endif()
-endif()
-
-if(GLEW_VERBOSE)
-  message(STATUS "FindGLEW: GLEW_VERSION_MAJOR: ${GLEW_VERSION_MAJOR}")
-  message(STATUS "FindGLEW: GLEW_VERSION_MINOR: ${GLEW_VERSION_MINOR}")
-  message(STATUS "FindGLEW: GLEW_VERSION_MICRO: ${GLEW_VERSION_MICRO}")
-  message(STATUS "FindGLEW: GLEW_VERSION: ${GLEW_VERSION}")
-endif()
-
-find_package_handle_standard_args(GLEW
-                                  REQUIRED_VARS GLEW_INCLUDE_DIRS GLEW_LIBRARIES
-                                  VERSION_VAR GLEW_VERSION)
-
-if(NOT GLEW_FOUND)
-  if(GLEW_VERBOSE)
-    message(STATUS "FindGLEW: could not find GLEW library.")
-  endif()
-  return()
-endif()
-
-
-if(NOT TARGET GLEW::glew AND NOT GLEW_USE_STATIC_LIBS)
-  if(GLEW_VERBOSE)
-    message(STATUS "FindGLEW: Creating GLEW::glew imported target.")
-  endif()
-
-  add_library(GLEW::glew UNKNOWN IMPORTED)
-
-  set_target_properties(GLEW::glew
-                        PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${GLEW_INCLUDE_DIRS}")
-
-  if(APPLE)
-    set_target_properties(GLEW::glew
-                          PROPERTIES INTERFACE_LINK_LIBRARIES OpenGL::GL)
-  endif()
-
-  if(GLEW_SHARED_LIBRARY_RELEASE)
-    set_property(TARGET GLEW::glew
-                 APPEND
-                 PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
-
-    set_target_properties(GLEW::glew
-                          PROPERTIES IMPORTED_LOCATION_RELEASE "${GLEW_SHARED_LIBRARY_RELEASE}")
-  endif()
-
-  if(GLEW_SHARED_LIBRARY_DEBUG)
-    set_property(TARGET GLEW::glew
-                 APPEND
-                 PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
-
-    set_target_properties(GLEW::glew
-                          PROPERTIES IMPORTED_LOCATION_DEBUG "${GLEW_SHARED_LIBRARY_DEBUG}")
-  endif()
-
-elseif(NOT TARGET GLEW::glew_s AND GLEW_USE_STATIC_LIBS)
-  if(GLEW_VERBOSE)
-    message(STATUS "FindGLEW: Creating GLEW::glew_s imported target.")
-  endif()
-
-  add_library(GLEW::glew_s UNKNOWN IMPORTED)
-
-  set_target_properties(GLEW::glew_s
-                        PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${GLEW_INCLUDE_DIRS}")
-
-  if(APPLE)
-    set_target_properties(GLEW::glew_s
-                          PROPERTIES INTERFACE_LINK_LIBRARIES OpenGL::GL)
-  endif()
-
-  if(GLEW_STATIC_LIBRARY_RELEASE)
-    set_property(TARGET GLEW::glew_s
-                 APPEND
-                 PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
-
-    set_target_properties(GLEW::glew_s
-                          PROPERTIES IMPORTED_LOCATION_RELEASE "${GLEW_STATIC_LIBRARY_RELEASE}")
-  endif()
-
-  if(GLEW_STATIC_LIBRARY_DEBUG)
-    set_property(TARGET GLEW::glew_s
-                 APPEND
-                 PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
-
-    set_target_properties(GLEW::glew_s
-                          PROPERTIES IMPORTED_LOCATION_DEBUG "${GLEW_STATIC_LIBRARY_DEBUG}")
-  endif()
-endif()
-
-if(NOT TARGET GLEW::GLEW)
-  if(GLEW_VERBOSE)
-    message(STATUS "FindGLEW: Creating GLEW::GLEW imported target.")
-  endif()
-
-  add_library(GLEW::GLEW UNKNOWN IMPORTED)
-
-  set_target_properties(GLEW::GLEW
-                        PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${GLEW_INCLUDE_DIRS}")
-
-  if(APPLE)
-    set_target_properties(GLEW::GLEW
-                          PROPERTIES INTERFACE_LINK_LIBRARIES OpenGL::GL)
-  endif()
-
-  if(TARGET GLEW::glew)
-    if(GLEW_SHARED_LIBRARY_RELEASE)
-      set_property(TARGET GLEW::GLEW
-                   APPEND
-                   PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
-
-      set_target_properties(GLEW::GLEW
-                            PROPERTIES IMPORTED_LOCATION_RELEASE "${GLEW_SHARED_LIBRARY_RELEASE}")
-    endif()
-
-    if(GLEW_SHARED_LIBRARY_DEBUG)
-      set_property(TARGET GLEW::GLEW
-                   APPEND
-                   PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
-
-      set_target_properties(GLEW::GLEW
-                            PROPERTIES IMPORTED_LOCATION_DEBUG "${GLEW_SHARED_LIBRARY_DEBUG}")
-    endif()
-
-  elseif(TARGET GLEW::glew_s)
-    if(GLEW_STATIC_LIBRARY_RELEASE)
-      set_property(TARGET GLEW::GLEW
-                   APPEND
-                   PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
-
-      set_target_properties(GLEW::GLEW
-                            PROPERTIES IMPORTED_LOCATION_RELEASE "${GLEW_STATIC_LIBRARY_RELEASE}")
-    endif()
-
-    if(GLEW_STATIC_LIBRARY_DEBUG AND GLEW_USE_STATIC_LIBS)
-      set_property(TARGET GLEW::GLEW
-                   APPEND
-                   PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
-
-      set_target_properties(GLEW::GLEW
-                            PROPERTIES IMPORTED_LOCATION_DEBUG "${GLEW_STATIC_LIBRARY_DEBUG}")
-    endif()
-
-  elseif(GLEW_VERBOSE)
-    message(WARNING "FindGLEW: no `GLEW::glew` or `GLEW::glew_s` target was created. Something went wrong in FindGLEW target creation.")
-  endif()
-endif()
diff --git a/share/cmake-3.18/Modules/FindGLUT.cmake b/share/cmake-3.18/Modules/FindGLUT.cmake
deleted file mode 100644
index a22bf5b..0000000
--- a/share/cmake-3.18/Modules/FindGLUT.cmake
+++ /dev/null
@@ -1,193 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindGLUT
---------
-
-Find OpenGL Utility Toolkit (GLUT) library and include files.
-
-IMPORTED Targets
-^^^^^^^^^^^^^^^^
-
-This module defines the :prop_tgt:`IMPORTED` targets:
-
-``GLUT::GLUT``
- Defined if the system has GLUT.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module sets the following variables:
-
-::
-
-  GLUT_INCLUDE_DIR, where to find GL/glut.h, etc.
-  GLUT_LIBRARIES, the libraries to link against
-  GLUT_FOUND, If false, do not try to use GLUT.
-
-Also defined, but not for general use are:
-
-::
-
-  GLUT_glut_LIBRARY = the full path to the glut library.
-  GLUT_Xmu_LIBRARY  = the full path to the Xmu library.
-  GLUT_Xi_LIBRARY   = the full path to the Xi Library.
-#]=======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-
-if (WIN32)
-  find_path( GLUT_INCLUDE_DIR NAMES GL/glut.h
-    PATHS  ${GLUT_ROOT_PATH}/include )
-  find_library( GLUT_glut_LIBRARY_RELEASE NAMES glut glut32 freeglut
-    PATHS
-    ${OPENGL_LIBRARY_DIR}
-    ${GLUT_ROOT_PATH}/Release
-    )
-  find_library( GLUT_glut_LIBRARY_DEBUG NAMES freeglutd
-    PATHS
-    ${OPENGL_LIBRARY_DIR}
-    ${GLUT_ROOT_PATH}/Debug
-    )
-  mark_as_advanced(GLUT_glut_LIBRARY_RELEASE GLUT_glut_LIBRARY_DEBUG)
-  select_library_configurations(GLUT_glut)
-else ()
-
-  if (APPLE)
-    find_path(GLUT_INCLUDE_DIR glut.h ${OPENGL_LIBRARY_DIR})
-    find_library(GLUT_glut_LIBRARY GLUT DOC "GLUT library for OSX")
-    find_library(GLUT_cocoa_LIBRARY Cocoa DOC "Cocoa framework for OSX")
-    mark_as_advanced(GLUT_glut_LIBRARY GLUT_cocoa_LIBRARY)
-
-    if(GLUT_cocoa_LIBRARY AND NOT TARGET GLUT::Cocoa)
-      add_library(GLUT::Cocoa UNKNOWN IMPORTED)
-      # Cocoa should always be a Framework, but we check to make sure.
-      if(GLUT_cocoa_LIBRARY MATCHES "/([^/]+)\\.framework$")
-        set_target_properties(GLUT::Cocoa PROPERTIES
-          IMPORTED_LOCATION "${GLUT_cocoa_LIBRARY}/${CMAKE_MATCH_1}")
-      else()
-        set_target_properties(GLUT::Cocoa PROPERTIES
-          IMPORTED_LOCATION "${GLUT_cocoa_LIBRARY}")
-      endif()
-    endif()
-  else ()
-
-    if (BEOS)
-
-      set(_GLUT_INC_DIR /boot/develop/headers/os/opengl)
-      set(_GLUT_glut_LIB_DIR /boot/develop/lib/x86)
-
-    else()
-
-      find_library( GLUT_Xi_LIBRARY Xi
-        /usr/openwin/lib
-        )
-      mark_as_advanced(GLUT_Xi_LIBRARY)
-
-      find_library( GLUT_Xmu_LIBRARY Xmu
-        /usr/openwin/lib
-        )
-      mark_as_advanced(GLUT_Xmu_LIBRARY)
-
-      if(GLUT_Xi_LIBRARY AND NOT TARGET GLUT::Xi)
-        add_library(GLUT::Xi UNKNOWN IMPORTED)
-        set_target_properties(GLUT::Xi PROPERTIES
-          IMPORTED_LOCATION "${GLUT_Xi_LIBRARY}")
-      endif()
-
-      if(GLUT_Xmu_LIBRARY AND NOT TARGET GLUT::Xmu)
-        add_library(GLUT::Xmu UNKNOWN IMPORTED)
-        set_target_properties(GLUT::Xmu PROPERTIES
-          IMPORTED_LOCATION "${GLUT_Xmu_LIBRARY}")
-      endif()
-
-    endif ()
-
-    find_path( GLUT_INCLUDE_DIR GL/glut.h
-      /usr/include/GL
-      /usr/openwin/share/include
-      /usr/openwin/include
-      /opt/graphics/OpenGL/include
-      /opt/graphics/OpenGL/contrib/libglut
-      ${_GLUT_INC_DIR}
-      )
-
-    find_library( GLUT_glut_LIBRARY glut
-      /usr/openwin/lib
-      ${_GLUT_glut_LIB_DIR}
-      )
-    mark_as_advanced(GLUT_glut_LIBRARY)
-
-    unset(_GLUT_INC_DIR)
-    unset(_GLUT_glut_LIB_DIR)
-
-  endif ()
-
-endif ()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLUT REQUIRED_VARS GLUT_glut_LIBRARY GLUT_INCLUDE_DIR)
-
-if (GLUT_FOUND)
-  # Is -lXi and -lXmu required on all platforms that have it?
-  # If not, we need some way to figure out what platform we are on.
-  set( GLUT_LIBRARIES
-    ${GLUT_glut_LIBRARY}
-    )
-  foreach(v GLUT_Xmu_LIBRARY GLUT_Xi_LIBRARY GLUT_cocoa_LIBRARY)
-    if(${v})
-      list(APPEND GLUT_LIBRARIES ${${v}})
-    endif()
-  endforeach()
-
-  if(NOT TARGET GLUT::GLUT)
-    add_library(GLUT::GLUT UNKNOWN IMPORTED)
-    set_target_properties(GLUT::GLUT PROPERTIES
-      INTERFACE_INCLUDE_DIRECTORIES "${GLUT_INCLUDE_DIR}")
-    if(GLUT_glut_LIBRARY MATCHES "/([^/]+)\\.framework$")
-      set_target_properties(GLUT::GLUT PROPERTIES
-        IMPORTED_LOCATION "${GLUT_glut_LIBRARY}/${CMAKE_MATCH_1}")
-    else()
-      if(GLUT_glut_LIBRARY_RELEASE)
-        set_property(TARGET GLUT::GLUT APPEND PROPERTY
-          IMPORTED_CONFIGURATIONS RELEASE)
-        set_target_properties(GLUT::GLUT PROPERTIES
-          IMPORTED_LOCATION_RELEASE "${GLUT_glut_LIBRARY_RELEASE}")
-      endif()
-
-      if(GLUT_glut_LIBRARY_DEBUG)
-        set_property(TARGET GLUT::GLUT APPEND PROPERTY
-          IMPORTED_CONFIGURATIONS DEBUG)
-        set_target_properties(GLUT::GLUT PROPERTIES
-          IMPORTED_LOCATION_DEBUG "${GLUT_glut_LIBRARY_DEBUG}")
-      endif()
-
-      if(NOT GLUT_glut_LIBRARY_RELEASE AND NOT GLUT_glut_LIBRARY_DEBUG)
-        set_property(TARGET GLUT::GLUT APPEND PROPERTY
-          IMPORTED_LOCATION "${GLUT_glut_LIBRARY}")
-      endif()
-    endif()
-
-    if(TARGET GLUT::Xmu)
-      set_property(TARGET GLUT::GLUT APPEND
-        PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Xmu)
-    endif()
-
-    if(TARGET GLUT::Xi)
-      set_property(TARGET GLUT::GLUT APPEND
-        PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Xi)
-    endif()
-
-    if(TARGET GLUT::Cocoa)
-      set_property(TARGET GLUT::GLUT APPEND
-        PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Cocoa)
-    endif()
-  endif()
-
-  #The following deprecated settings are for backwards compatibility with CMake1.4
-  set (GLUT_LIBRARY ${GLUT_LIBRARIES})
-  set (GLUT_INCLUDE_PATH ${GLUT_INCLUDE_DIR})
-endif()
-
-mark_as_advanced(GLUT_INCLUDE_DIR)
diff --git a/share/cmake-3.18/Modules/FindGSL.cmake b/share/cmake-3.18/Modules/FindGSL.cmake
deleted file mode 100644
index da1b3c4..0000000
--- a/share/cmake-3.18/Modules/FindGSL.cmake
+++ /dev/null
@@ -1,229 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindGSL
---------
-
-Find the native GNU Scientific Library (GSL) includes and libraries.
-
-The GNU Scientific Library (GSL) is a numerical library for C and C++
-programmers. It is free software under the GNU General Public
-License.
-
-Imported Targets
-^^^^^^^^^^^^^^^^
-
-If GSL is found, this module defines the following :prop_tgt:`IMPORTED`
-targets::
-
- GSL::gsl      - The main GSL library.
- GSL::gslcblas - The CBLAS support library used by GSL.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project::
-
- GSL_FOUND          - True if GSL found on the local system
- GSL_INCLUDE_DIRS   - Location of GSL header files.
- GSL_LIBRARIES      - The GSL libraries.
- GSL_VERSION        - The version of the discovered GSL install.
-
-Hints
-^^^^^
-
-Set ``GSL_ROOT_DIR`` to a directory that contains a GSL installation.
-
-This script expects to find libraries at ``$GSL_ROOT_DIR/lib`` and the GSL
-headers at ``$GSL_ROOT_DIR/include/gsl``.  The library directory may
-optionally provide Release and Debug folders. If available, the libraries
-named ``gsld``, ``gslblasd`` or ``cblasd`` are recognized as debug libraries.
-For Unix-like systems, this script will use ``$GSL_ROOT_DIR/bin/gsl-config``
-(if found) to aid in the discovery of GSL.
-
-Cache Variables
-^^^^^^^^^^^^^^^
-
-This module may set the following variables depending on platform and type
-of GSL installation discovered.  These variables may optionally be set to
-help this module find the correct files::
-
- GSL_CBLAS_LIBRARY       - Location of the GSL CBLAS library.
- GSL_CBLAS_LIBRARY_DEBUG - Location of the debug GSL CBLAS library (if any).
- GSL_CONFIG_EXECUTABLE   - Location of the ``gsl-config`` script (if any).
- GSL_LIBRARY             - Location of the GSL library.
- GSL_LIBRARY_DEBUG       - Location of the debug GSL library (if any).
-
-#]=======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-
-#=============================================================================
-# If the user has provided ``GSL_ROOT_DIR``, use it!  Choose items found
-# at this location over system locations.
-if( EXISTS "$ENV{GSL_ROOT_DIR}" )
-  file( TO_CMAKE_PATH "$ENV{GSL_ROOT_DIR}" GSL_ROOT_DIR )
-  set( GSL_ROOT_DIR "${GSL_ROOT_DIR}" CACHE PATH "Prefix for GSL installation." )
-endif()
-if( NOT EXISTS "${GSL_ROOT_DIR}" )
-  set( GSL_USE_PKGCONFIG ON )
-endif()
-
-#=============================================================================
-# As a first try, use the PkgConfig module.  This will work on many
-# *NIX systems.  See :module:`findpkgconfig`
-# This will return ``GSL_INCLUDEDIR`` and ``GSL_LIBDIR`` used below.
-if( GSL_USE_PKGCONFIG )
-  find_package(PkgConfig)
-  pkg_check_modules( GSL QUIET gsl )
-
-  if( EXISTS "${GSL_INCLUDEDIR}" )
-    get_filename_component( GSL_ROOT_DIR "${GSL_INCLUDEDIR}" DIRECTORY CACHE)
-  endif()
-endif()
-
-#=============================================================================
-# Set GSL_INCLUDE_DIRS and GSL_LIBRARIES. If we skipped the PkgConfig step, try
-# to find the libraries at $GSL_ROOT_DIR (if provided) or in standard system
-# locations.  These find_library and find_path calls will prefer custom
-# locations over standard locations (HINTS).  If the requested file is not found
-# at the HINTS location, standard system locations will be still be searched
-# (/usr/lib64 (Redhat), lib/i386-linux-gnu (Debian)).
-
-find_path( GSL_INCLUDE_DIR
-  NAMES gsl/gsl_sf.h
-  HINTS ${GSL_ROOT_DIR}/include ${GSL_INCLUDEDIR}
-)
-find_library( GSL_LIBRARY
-  NAMES gsl
-  HINTS ${GSL_ROOT_DIR}/lib ${GSL_LIBDIR}
-  PATH_SUFFIXES Release Debug
-)
-find_library( GSL_CBLAS_LIBRARY
-  NAMES gslcblas cblas
-  HINTS ${GSL_ROOT_DIR}/lib ${GSL_LIBDIR}
-  PATH_SUFFIXES Release Debug
-)
-# Do we also have debug versions?
-find_library( GSL_LIBRARY_DEBUG
-  NAMES gsld gsl
-  HINTS ${GSL_ROOT_DIR}/lib ${GSL_LIBDIR}
-  PATH_SUFFIXES Debug
-)
-find_library( GSL_CBLAS_LIBRARY_DEBUG
-  NAMES gslcblasd cblasd gslcblas cblas
-  HINTS ${GSL_ROOT_DIR}/lib ${GSL_LIBDIR}
-  PATH_SUFFIXES Debug
-)
-set( GSL_INCLUDE_DIRS ${GSL_INCLUDE_DIR} )
-set( GSL_LIBRARIES ${GSL_LIBRARY} ${GSL_CBLAS_LIBRARY} )
-
-# If we didn't use PkgConfig, try to find the version via gsl-config or by
-# reading gsl_version.h.
-if( NOT GSL_VERSION )
-  # 1. If gsl-config exists, query for the version.
-  find_program( GSL_CONFIG_EXECUTABLE
-    NAMES gsl-config
-    HINTS "${GSL_ROOT_DIR}/bin"
-    )
-  if( EXISTS "${GSL_CONFIG_EXECUTABLE}" )
-    execute_process(
-      COMMAND "${GSL_CONFIG_EXECUTABLE}" --version
-      OUTPUT_VARIABLE GSL_VERSION
-      OUTPUT_STRIP_TRAILING_WHITESPACE )
-  endif()
-
-  # 2. If gsl-config is not available, try looking in gsl/gsl_version.h
-  if( NOT GSL_VERSION AND EXISTS "${GSL_INCLUDE_DIRS}/gsl/gsl_version.h" )
-    file( STRINGS "${GSL_INCLUDE_DIRS}/gsl/gsl_version.h" gsl_version_h_contents REGEX "define GSL_VERSION" )
-    string( REGEX REPLACE ".*([0-9]\\.[0-9][0-9]?).*" "\\1" GSL_VERSION ${gsl_version_h_contents} )
-  endif()
-
-  # might also try scraping the directory name for a regex match "gsl-X.X"
-endif()
-
-#=============================================================================
-# handle the QUIETLY and REQUIRED arguments and set GSL_FOUND to TRUE if all
-# listed variables are TRUE
-find_package_handle_standard_args( GSL
-  FOUND_VAR
-    GSL_FOUND
-  REQUIRED_VARS
-    GSL_INCLUDE_DIR
-    GSL_LIBRARY
-    GSL_CBLAS_LIBRARY
-  VERSION_VAR
-    GSL_VERSION
-    )
-
-mark_as_advanced( GSL_ROOT_DIR GSL_VERSION GSL_LIBRARY GSL_INCLUDE_DIR
-  GSL_CBLAS_LIBRARY GSL_LIBRARY_DEBUG GSL_CBLAS_LIBRARY_DEBUG
-  GSL_USE_PKGCONFIG GSL_CONFIG )
-
-#=============================================================================
-# Register imported libraries:
-# 1. If we can find a Windows .dll file (or if we can find both Debug and
-#    Release libraries), we will set appropriate target properties for these.
-# 2. However, for most systems, we will only register the import location and
-#    include directory.
-
-# Look for dlls, or Release and Debug libraries.
-if(WIN32)
-  string( REPLACE ".lib" ".dll" GSL_LIBRARY_DLL       "${GSL_LIBRARY}" )
-  string( REPLACE ".lib" ".dll" GSL_CBLAS_LIBRARY_DLL "${GSL_CBLAS_LIBRARY}" )
-  string( REPLACE ".lib" ".dll" GSL_LIBRARY_DEBUG_DLL "${GSL_LIBRARY_DEBUG}" )
-  string( REPLACE ".lib" ".dll" GSL_CBLAS_LIBRARY_DEBUG_DLL "${GSL_CBLAS_LIBRARY_DEBUG}" )
-endif()
-
-if( GSL_FOUND AND NOT TARGET GSL::gsl )
-  if( EXISTS "${GSL_LIBRARY_DLL}" AND EXISTS "${GSL_CBLAS_LIBRARY_DLL}")
-
-    # Windows systems with dll libraries.
-    add_library( GSL::gsl      SHARED IMPORTED )
-    add_library( GSL::gslcblas SHARED IMPORTED )
-
-    # Windows with dlls, but only Release libraries.
-    set_target_properties( GSL::gslcblas PROPERTIES
-      IMPORTED_LOCATION_RELEASE         "${GSL_CBLAS_LIBRARY_DLL}"
-      IMPORTED_IMPLIB                   "${GSL_CBLAS_LIBRARY}"
-      INTERFACE_INCLUDE_DIRECTORIES     "${GSL_INCLUDE_DIRS}"
-      IMPORTED_CONFIGURATIONS           Release
-      IMPORTED_LINK_INTERFACE_LANGUAGES "C" )
-    set_target_properties( GSL::gsl PROPERTIES
-      IMPORTED_LOCATION_RELEASE         "${GSL_LIBRARY_DLL}"
-      IMPORTED_IMPLIB                   "${GSL_LIBRARY}"
-      INTERFACE_INCLUDE_DIRECTORIES     "${GSL_INCLUDE_DIRS}"
-      IMPORTED_CONFIGURATIONS           Release
-      IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-      INTERFACE_LINK_LIBRARIES          GSL::gslcblas )
-
-    # If we have both Debug and Release libraries
-    if( EXISTS "${GSL_LIBRARY_DEBUG_DLL}" AND EXISTS "${GSL_CBLAS_LIBRARY_DEBUG_DLL}")
-      set_property( TARGET GSL::gslcblas APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug )
-      set_target_properties( GSL::gslcblas PROPERTIES
-        IMPORTED_LOCATION_DEBUG           "${GSL_CBLAS_LIBRARY_DEBUG_DLL}"
-        IMPORTED_IMPLIB_DEBUG             "${GSL_CBLAS_LIBRARY_DEBUG}" )
-      set_property( TARGET GSL::gsl APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug )
-      set_target_properties( GSL::gsl PROPERTIES
-        IMPORTED_LOCATION_DEBUG           "${GSL_LIBRARY_DEBUG_DLL}"
-        IMPORTED_IMPLIB_DEBUG             "${GSL_LIBRARY_DEBUG}" )
-    endif()
-
-  else()
-
-    # For all other environments (ones without dll libraries), create
-    # the imported library targets.
-    add_library( GSL::gsl      UNKNOWN IMPORTED )
-    add_library( GSL::gslcblas UNKNOWN IMPORTED )
-    set_target_properties( GSL::gslcblas PROPERTIES
-      IMPORTED_LOCATION                 "${GSL_CBLAS_LIBRARY}"
-      INTERFACE_INCLUDE_DIRECTORIES     "${GSL_INCLUDE_DIRS}"
-      IMPORTED_LINK_INTERFACE_LANGUAGES "C" )
-    set_target_properties( GSL::gsl PROPERTIES
-      IMPORTED_LOCATION                 "${GSL_LIBRARY}"
-      INTERFACE_INCLUDE_DIRECTORIES     "${GSL_INCLUDE_DIRS}"
-      IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-      INTERFACE_LINK_LIBRARIES          GSL::gslcblas )
-  endif()
-endif()
diff --git a/share/cmake-3.18/Modules/FindGTK2.cmake b/share/cmake-3.18/Modules/FindGTK2.cmake
deleted file mode 100644
index 62f1614..0000000
--- a/share/cmake-3.18/Modules/FindGTK2.cmake
+++ /dev/null
@@ -1,946 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindGTK2
---------
-
-Find the GTK2 widget libraries and several of its other optional components
-like ``gtkmm``, ``glade``, and ``glademm``.
-
-Specify one or more of the following components as you call this find
-module.  See example below.
-
-* ``gtk``
-* ``gtkmm``
-* ``glade``
-* ``glademm``
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-The following variables will be defined for your use
-
-``GTK2_FOUND``
-  Were all of your specified components found?
-``GTK2_INCLUDE_DIRS``
-  All include directories
-``GTK2_LIBRARIES``
-  All libraries
-``GTK2_TARGETS``
-  All imported targets
-``GTK2_DEFINITIONS``
-  Additional compiler flags
-``GTK2_VERSION``
-  The version of GTK2 found (x.y.z)
-``GTK2_MAJOR_VERSION``
-  The major version of GTK2
-``GTK2_MINOR_VERSION``
-  The minor version of GTK2
-``GTK2_PATCH_VERSION``
-  The patch version of GTK2
-
-Input Variables
-^^^^^^^^^^^^^^^
-
-Optional variables you can define prior to calling this module:
-
-``GTK2_DEBUG``
-  Enables verbose debugging of the module
-``GTK2_ADDITIONAL_SUFFIXES``
-  Allows defining additional directories to search for include files
-
-Example Usage
-^^^^^^^^^^^^^
-
-Call :command:`find_package` once.  Here are some examples to pick from:
-
-Require GTK 2.6 or later:
-
-.. code-block:: cmake
-
-  find_package(GTK2 2.6 REQUIRED gtk)
-
-Require GTK 2.10 or later and Glade:
-
-.. code-block:: cmake
-
-  find_package(GTK2 2.10 REQUIRED gtk glade)
-
-Search for GTK/GTKMM 2.8 or later:
-
-.. code-block:: cmake
-
-  find_package(GTK2 2.8 COMPONENTS gtk gtkmm)
-
-Use the results:
-
-.. code-block:: cmake
-
-  if(GTK2_FOUND)
-    include_directories(${GTK2_INCLUDE_DIRS})
-    add_executable(mygui mygui.cc)
-    target_link_libraries(mygui ${GTK2_LIBRARIES})
-  endif()
-#]=======================================================================]
-
-# Version 1.6 (CMake 3.0)
-#   * Create targets for each library
-#   * Do not link libfreetype
-# Version 1.5 (CMake 2.8.12)
-#   * 14236: Detect gthread library
-#            Detect pangocairo on windows
-#            Detect pangocairo with gtk module instead of with gtkmm
-#   * 14259: Use vc100 libraries with VS 11
-#   * 14260: Export a GTK2_DEFINITIONS variable to set /vd2 when appropriate
-#            (i.e. MSVC)
-#   * Use the optimized/debug syntax for _LIBRARY and _LIBRARIES variables when
-#     appropriate. A new set of _RELEASE variables was also added.
-#   * Remove GTK2_SKIP_MARK_AS_ADVANCED option, as now the variables are
-#     marked as advanced by SelectLibraryConfigurations
-#   * Detect gmodule, pangoft2 and pangoxft libraries
-# Version 1.4 (10/4/2012) (CMake 2.8.10)
-#   * 12596: Missing paths for FindGTK2 on NetBSD
-#   * 12049: Fixed detection of GTK include files in the lib folder on
-#            multiarch systems.
-# Version 1.3 (11/9/2010) (CMake 2.8.4)
-#   * 11429: Add support for detecting GTK2 built with Visual Studio 10.
-#            Thanks to Vincent Levesque for the patch.
-# Version 1.2 (8/30/2010) (CMake 2.8.3)
-#   * Merge patch for detecting gdk-pixbuf library (split off
-#     from core GTK in 2.21).  Thanks to Vincent Untz for the patch
-#     and Ricardo Cruz for the heads up.
-# Version 1.1 (8/19/2010) (CMake 2.8.3)
-#   * Add support for detecting GTK2 under macports (thanks to Gary Kramlich)
-# Version 1.0 (8/12/2010) (CMake 2.8.3)
-#   * Add support for detecting new pangommconfig.h header file
-#     (Thanks to Sune Vuorela & the Debian Project for the patch)
-#   * Add support for detecting fontconfig.h header
-#   * Call find_package(Freetype) since it's required
-#   * Add support for allowing users to add additional library directories
-#     via the GTK2_ADDITIONAL_SUFFIXES variable (kind of a future-kludge in
-#     case the GTK developers change versions on any of the directories in the
-#     future).
-# Version 0.8 (1/4/2010)
-#   * Get module working under MacOSX fink by adding /sw/include, /sw/lib
-#     to PATHS and the gobject library
-# Version 0.7 (3/22/09)
-#   * Checked into CMake CVS
-#   * Added versioning support
-#   * Module now defaults to searching for GTK if COMPONENTS not specified.
-#   * Added HKCU prior to HKLM registry key and GTKMM specific environment
-#      variable as per mailing list discussion.
-#   * Added lib64 to include search path and a few other search paths where GTK
-#      may be installed on Unix systems.
-#   * Switched to lowercase CMake commands
-#   * Prefaced internal variables with _GTK2 to prevent collision
-#   * Changed internal macros to functions
-#   * Enhanced documentation
-# Version 0.6 (1/8/08)
-#   Added GTK2_SKIP_MARK_AS_ADVANCED option
-# Version 0.5 (12/19/08)
-#   Second release to cmake mailing list
-
-#=============================================================
-# _GTK2_GET_VERSION
-# Internal function to parse the version number in gtkversion.h
-#   _OUT_major = Major version number
-#   _OUT_minor = Minor version number
-#   _OUT_micro = Micro version number
-#   _gtkversion_hdr = Header file to parse
-#=============================================================
-
-include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-
-function(_GTK2_GET_VERSION _OUT_major _OUT_minor _OUT_micro _gtkversion_hdr)
-    file(STRINGS ${_gtkversion_hdr} _contents REGEX "#define GTK_M[A-Z]+_VERSION[ \t]+")
-    if(_contents)
-        string(REGEX REPLACE ".*#define GTK_MAJOR_VERSION[ \t]+\\(([0-9]+)\\).*" "\\1" ${_OUT_major} "${_contents}")
-        string(REGEX REPLACE ".*#define GTK_MINOR_VERSION[ \t]+\\(([0-9]+)\\).*" "\\1" ${_OUT_minor} "${_contents}")
-        string(REGEX REPLACE ".*#define GTK_MICRO_VERSION[ \t]+\\(([0-9]+)\\).*" "\\1" ${_OUT_micro} "${_contents}")
-
-        if(NOT ${_OUT_major} MATCHES "[0-9]+")
-            message(FATAL_ERROR "Version parsing failed for GTK2_MAJOR_VERSION!")
-        endif()
-        if(NOT ${_OUT_minor} MATCHES "[0-9]+")
-            message(FATAL_ERROR "Version parsing failed for GTK2_MINOR_VERSION!")
-        endif()
-        if(NOT ${_OUT_micro} MATCHES "[0-9]+")
-            message(FATAL_ERROR "Version parsing failed for GTK2_MICRO_VERSION!")
-        endif()
-
-        set(${_OUT_major} ${${_OUT_major}} PARENT_SCOPE)
-        set(${_OUT_minor} ${${_OUT_minor}} PARENT_SCOPE)
-        set(${_OUT_micro} ${${_OUT_micro}} PARENT_SCOPE)
-    else()
-        message(FATAL_ERROR "Include file ${_gtkversion_hdr} does not exist")
-    endif()
-endfunction()
-
-
-#=============================================================
-# _GTK2_SIGCXX_GET_VERSION
-# Internal function to parse the version number in
-# sigc++config.h
-#   _OUT_major = Major version number
-#   _OUT_minor = Minor version number
-#   _OUT_micro = Micro version number
-#   _sigcxxversion_hdr = Header file to parse
-#=============================================================
-
-function(_GTK2_SIGCXX_GET_VERSION _OUT_major _OUT_minor _OUT_micro _sigcxxversion_hdr)
-    file(STRINGS ${_sigcxxversion_hdr} _contents REGEX "#define SIGCXX_M[A-Z]+_VERSION[ \t]+")
-    if(_contents)
-        string(REGEX REPLACE ".*#define SIGCXX_MAJOR_VERSION[ \t]+([0-9]+).*" "\\1" ${_OUT_major} "${_contents}")
-        string(REGEX REPLACE ".*#define SIGCXX_MINOR_VERSION[ \t]+([0-9]+).*" "\\1" ${_OUT_minor} "${_contents}")
-        string(REGEX REPLACE ".*#define SIGCXX_MICRO_VERSION[ \t]+([0-9]+).*" "\\1" ${_OUT_micro} "${_contents}")
-
-        if(NOT ${_OUT_major} MATCHES "[0-9]+")
-            message(FATAL_ERROR "Version parsing failed for SIGCXX_MAJOR_VERSION!")
-        endif()
-        if(NOT ${_OUT_minor} MATCHES "[0-9]+")
-            message(FATAL_ERROR "Version parsing failed for SIGCXX_MINOR_VERSION!")
-        endif()
-        if(NOT ${_OUT_micro} MATCHES "[0-9]+")
-            message(FATAL_ERROR "Version parsing failed for SIGCXX_MICRO_VERSION!")
-        endif()
-
-        set(${_OUT_major} ${${_OUT_major}} PARENT_SCOPE)
-        set(${_OUT_minor} ${${_OUT_minor}} PARENT_SCOPE)
-        set(${_OUT_micro} ${${_OUT_micro}} PARENT_SCOPE)
-    else()
-        # The header does not have the version macros; assume it is ``0.0.0``.
-        set(${_OUT_major} 0)
-        set(${_OUT_minor} 0)
-        set(${_OUT_micro} 0)
-    endif()
-endfunction()
-
-
-#=============================================================
-# _GTK2_FIND_INCLUDE_DIR
-# Internal function to find the GTK include directories
-#   _var = variable to set (_INCLUDE_DIR is appended)
-#   _hdr = header file to look for
-#=============================================================
-function(_GTK2_FIND_INCLUDE_DIR _var _hdr)
-
-    if(GTK2_DEBUG)
-        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] "
-                       "_GTK2_FIND_INCLUDE_DIR( ${_var} ${_hdr} )")
-    endif()
-
-    set(_gtk_packages
-        # If these ever change, things will break.
-        ${GTK2_ADDITIONAL_SUFFIXES}
-        glibmm-2.4
-        glib-2.0
-        atk-1.0
-        atkmm-1.6
-        cairo
-        cairomm-1.0
-        gdk-pixbuf-2.0
-        gdkmm-2.4
-        giomm-2.4
-        gtk-2.0
-        gtkmm-2.4
-        libglade-2.0
-        libglademm-2.4
-        harfbuzz
-        pango-1.0
-        pangomm-1.4
-        sigc++-2.0
-    )
-
-    #
-    # NOTE: The following suffixes cause searching for header files in both of
-    # these directories:
-    #         /usr/include/<pkg>
-    #         /usr/lib/<pkg>/include
-    #
-
-    set(_suffixes)
-    foreach(_d ${_gtk_packages})
-        list(APPEND _suffixes ${_d})
-        list(APPEND _suffixes ${_d}/include) # for /usr/lib/gtk-2.0/include
-    endforeach()
-
-    if(GTK2_DEBUG)
-        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
-                       "include suffixes = ${_suffixes}")
-    endif()
-
-    if(CMAKE_LIBRARY_ARCHITECTURE)
-      set(_gtk2_arch_dir /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE})
-      if(GTK2_DEBUG)
-        message(STATUS "Adding ${_gtk2_arch_dir} to search path for multiarch support")
-      endif()
-    endif()
-    find_path(GTK2_${_var}_INCLUDE_DIR ${_hdr}
-        PATHS
-            ${_gtk2_arch_dir}
-            /usr/local/libx32
-            /usr/local/lib64
-            /usr/local/lib
-            /usr/libx32
-            /usr/lib64
-            /usr/lib
-            /opt/gnome/include
-            /opt/gnome/lib
-            /opt/openwin/include
-            /usr/openwin/lib
-            /sw/lib
-            /opt/local/lib
-            /usr/pkg/lib
-            /usr/pkg/include/glib
-            $ENV{GTKMM_BASEPATH}/include
-            $ENV{GTKMM_BASEPATH}/lib
-            [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/include
-            [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/lib
-            [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/include
-            [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/lib
-        PATH_SUFFIXES
-            ${_suffixes}
-    )
-    mark_as_advanced(GTK2_${_var}_INCLUDE_DIR)
-
-    if(GTK2_${_var}_INCLUDE_DIR)
-        set(GTK2_INCLUDE_DIRS ${GTK2_INCLUDE_DIRS} ${GTK2_${_var}_INCLUDE_DIR} PARENT_SCOPE)
-    endif()
-
-endfunction()
-
-#=============================================================
-# _GTK2_FIND_LIBRARY
-# Internal function to find libraries packaged with GTK2
-#   _var = library variable to create (_LIBRARY is appended)
-#=============================================================
-function(_GTK2_FIND_LIBRARY _var _lib _expand_vc _append_version)
-
-    if(GTK2_DEBUG)
-        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] "
-                       "_GTK2_FIND_LIBRARY( ${_var} ${_lib} ${_expand_vc} ${_append_version} )")
-    endif()
-
-    # Not GTK versions per se but the versions encoded into Windows
-    # import libraries (GtkMM 2.14.1 has a gtkmm-vc80-2_4.lib for example)
-    # Also the MSVC libraries use _ for . (this is handled below)
-    set(_versions 2.20 2.18 2.16 2.14 2.12
-                  2.10  2.8  2.6  2.4  2.2 2.0
-                  1.20 1.18 1.16 1.14 1.12
-                  1.10  1.8  1.6  1.4  1.2 1.0)
-
-    set(_library)
-    set(_library_d)
-
-    set(_library ${_lib})
-
-    if(_expand_vc AND MSVC)
-        # Add vc80/vc90/vc100 midfixes
-        if(MSVC_TOOLSET_VERSION LESS 110)
-            set(_library   ${_library}-vc${MSVC_TOOLSET_VERSION})
-        else()
-            # Up to gtkmm-win 2.22.0-2 there are no vc110 libraries but vc100 can be used
-            set(_library ${_library}-vc100)
-        endif()
-        set(_library_d ${_library}-d)
-    endif()
-
-    if(GTK2_DEBUG)
-        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
-                       "After midfix addition = ${_library} and ${_library_d}")
-    endif()
-
-    set(_lib_list)
-    set(_libd_list)
-    if(_append_version)
-        foreach(_ver ${_versions})
-            list(APPEND _lib_list  "${_library}-${_ver}")
-            list(APPEND _libd_list "${_library_d}-${_ver}")
-        endforeach()
-    else()
-        set(_lib_list ${_library})
-        set(_libd_list ${_library_d})
-    endif()
-
-    if(GTK2_DEBUG)
-        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
-                       "library list = ${_lib_list} and library debug list = ${_libd_list}")
-    endif()
-
-    # For some silly reason the MSVC libraries use _ instead of .
-    # in the version fields
-    if(_expand_vc AND MSVC)
-        set(_no_dots_lib_list)
-        set(_no_dots_libd_list)
-        foreach(_l ${_lib_list})
-            string(REPLACE "." "_" _no_dots_library ${_l})
-            list(APPEND _no_dots_lib_list ${_no_dots_library})
-        endforeach()
-        # And for debug
-        set(_no_dots_libsd_list)
-        foreach(_l ${_libd_list})
-            string(REPLACE "." "_" _no_dots_libraryd ${_l})
-            list(APPEND _no_dots_libd_list ${_no_dots_libraryd})
-        endforeach()
-
-        # Copy list back to original names
-        set(_lib_list ${_no_dots_lib_list})
-        set(_libd_list ${_no_dots_libd_list})
-    endif()
-
-    if(GTK2_DEBUG)
-        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
-                       "While searching for GTK2_${_var}_LIBRARY, our proposed library list is ${_lib_list}")
-    endif()
-
-    find_library(GTK2_${_var}_LIBRARY_RELEASE
-        NAMES ${_lib_list}
-        PATHS
-            /opt/gnome/lib
-            /usr/openwin/lib
-            $ENV{GTKMM_BASEPATH}/lib
-            [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/lib
-            [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/lib
-        )
-
-    if(_expand_vc AND MSVC)
-        if(GTK2_DEBUG)
-            message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
-                           "While searching for GTK2_${_var}_LIBRARY_DEBUG our proposed library list is ${_libd_list}")
-        endif()
-
-        find_library(GTK2_${_var}_LIBRARY_DEBUG
-            NAMES ${_libd_list}
-            PATHS
-            $ENV{GTKMM_BASEPATH}/lib
-            [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/lib
-            [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/lib
-        )
-    endif()
-
-    select_library_configurations(GTK2_${_var})
-
-    set(GTK2_${_var}_LIBRARY ${GTK2_${_var}_LIBRARY} PARENT_SCOPE)
-    set(GTK2_${_var}_FOUND ${GTK2_${_var}_FOUND} PARENT_SCOPE)
-
-    if(GTK2_${_var}_FOUND)
-        set(GTK2_LIBRARIES ${GTK2_LIBRARIES} ${GTK2_${_var}_LIBRARY})
-        set(GTK2_LIBRARIES ${GTK2_LIBRARIES} PARENT_SCOPE)
-    endif()
-
-    if(GTK2_DEBUG)
-        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
-                       "GTK2_${_var}_LIBRARY_RELEASE = \"${GTK2_${_var}_LIBRARY_RELEASE}\"")
-        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
-                       "GTK2_${_var}_LIBRARY_DEBUG   = \"${GTK2_${_var}_LIBRARY_DEBUG}\"")
-        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
-                       "GTK2_${_var}_LIBRARY         = \"${GTK2_${_var}_LIBRARY}\"")
-        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
-                       "GTK2_${_var}_FOUND           = \"${GTK2_${_var}_FOUND}\"")
-    endif()
-
-endfunction()
-
-
-function(_GTK2_ADD_TARGET_DEPENDS_INTERNAL _var _property)
-    if(GTK2_DEBUG)
-        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] "
-                       "_GTK2_ADD_TARGET_DEPENDS_INTERNAL( ${_var} ${_property} )")
-    endif()
-
-    string(TOLOWER "${_var}" _basename)
-
-    if (TARGET GTK2::${_basename})
-        foreach(_depend ${ARGN})
-            set(_valid_depends)
-            if (TARGET GTK2::${_depend})
-                list(APPEND _valid_depends GTK2::${_depend})
-            endif()
-            if (_valid_depends)
-                set_property(TARGET GTK2::${_basename} APPEND PROPERTY ${_property} "${_valid_depends}")
-            endif()
-            set(_valid_depends)
-        endforeach()
-    endif()
-endfunction()
-
-function(_GTK2_ADD_TARGET_DEPENDS _var)
-    if(GTK2_DEBUG)
-        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] "
-                       "_GTK2_ADD_TARGET_DEPENDS( ${_var} )")
-    endif()
-
-    string(TOLOWER "${_var}" _basename)
-
-    if(TARGET GTK2::${_basename})
-        get_target_property(_configs GTK2::${_basename} IMPORTED_CONFIGURATIONS)
-        _GTK2_ADD_TARGET_DEPENDS_INTERNAL(${_var} INTERFACE_LINK_LIBRARIES ${ARGN})
-        foreach(_config ${_configs})
-            _GTK2_ADD_TARGET_DEPENDS_INTERNAL(${_var} IMPORTED_LINK_INTERFACE_LIBRARIES_${_config} ${ARGN})
-        endforeach()
-    endif()
-endfunction()
-
-function(_GTK2_ADD_TARGET_INCLUDE_DIRS _var)
-    if(GTK2_DEBUG)
-        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] "
-                       "_GTK2_ADD_TARGET_INCLUDE_DIRS( ${_var} )")
-    endif()
-
-    string(TOLOWER "${_var}" _basename)
-
-    if(TARGET GTK2::${_basename})
-        foreach(_include ${ARGN})
-            set_property(TARGET GTK2::${_basename} APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${_include}")
-        endforeach()
-    endif()
-endfunction()
-
-#=============================================================
-# _GTK2_ADD_TARGET
-# Internal function to create targets for GTK2
-#   _var = target to create
-#=============================================================
-function(_GTK2_ADD_TARGET _var)
-    if(GTK2_DEBUG)
-        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] "
-                       "_GTK2_ADD_TARGET( ${_var} )")
-    endif()
-
-    string(TOLOWER "${_var}" _basename)
-
-    cmake_parse_arguments(_${_var} "" "" "GTK2_DEPENDS;GTK2_OPTIONAL_DEPENDS;OPTIONAL_INCLUDES" ${ARGN})
-
-    if(GTK2_${_var}_FOUND)
-        if(NOT TARGET GTK2::${_basename})
-            # Do not create the target if dependencies are missing
-            foreach(_dep ${_${_var}_GTK2_DEPENDS})
-                if(NOT TARGET GTK2::${_dep})
-                    return()
-                endif()
-            endforeach()
-
-            add_library(GTK2::${_basename} UNKNOWN IMPORTED)
-
-            if(GTK2_${_var}_LIBRARY_RELEASE)
-                set_property(TARGET GTK2::${_basename} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
-                set_property(TARGET GTK2::${_basename}        PROPERTY IMPORTED_LOCATION_RELEASE "${GTK2_${_var}_LIBRARY_RELEASE}" )
-            endif()
-
-            if(GTK2_${_var}_LIBRARY_DEBUG)
-                set_property(TARGET GTK2::${_basename} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
-                set_property(TARGET GTK2::${_basename}        PROPERTY IMPORTED_LOCATION_DEBUG "${GTK2_${_var}_LIBRARY_DEBUG}" )
-            endif()
-
-            if(GTK2_${_var}_INCLUDE_DIR)
-                set_property(TARGET GTK2::${_basename} APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${GTK2_${_var}_INCLUDE_DIR}")
-            endif()
-
-            if(GTK2_${_var}CONFIG_INCLUDE_DIR AND NOT "x${GTK2_${_var}CONFIG_INCLUDE_DIR}" STREQUAL "x${GTK2_${_var}_INCLUDE_DIR}")
-                set_property(TARGET GTK2::${_basename} APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${GTK2_${_var}CONFIG_INCLUDE_DIR}")
-            endif()
-
-            if(GTK2_DEFINITIONS)
-                set_property(TARGET GTK2::${_basename} PROPERTY INTERFACE_COMPILE_DEFINITIONS "${GTK2_DEFINITIONS}")
-            endif()
-
-            if(_${_var}_GTK2_DEPENDS)
-                _GTK2_ADD_TARGET_DEPENDS(${_var} ${_${_var}_GTK2_DEPENDS} ${_${_var}_GTK2_OPTIONAL_DEPENDS})
-            endif()
-
-            if(_${_var}_OPTIONAL_INCLUDES)
-                foreach(_D ${_${_var}_OPTIONAL_INCLUDES})
-                    if(_D)
-                        _GTK2_ADD_TARGET_INCLUDE_DIRS(${_var} ${_D})
-                    endif()
-                endforeach()
-            endif()
-        endif()
-
-        set(GTK2_TARGETS ${GTK2_TARGETS} GTK2::${_basename})
-        set(GTK2_TARGETS ${GTK2_TARGETS} PARENT_SCOPE)
-
-        if(GTK2_USE_IMPORTED_TARGETS)
-            set(GTK2_${_var}_LIBRARY GTK2::${_basename} PARENT_SCOPE)
-        endif()
-
-    endif()
-endfunction()
-
-
-
-#=============================================================
-
-#
-# main()
-#
-
-set(GTK2_FOUND)
-set(GTK2_INCLUDE_DIRS)
-set(GTK2_LIBRARIES)
-set(GTK2_TARGETS)
-set(GTK2_DEFINITIONS)
-
-if(NOT GTK2_FIND_COMPONENTS)
-    # Assume they only want GTK
-    set(GTK2_FIND_COMPONENTS gtk)
-endif()
-
-#
-# If specified, enforce version number
-#
-if(GTK2_FIND_VERSION)
-    set(GTK2_FAILED_VERSION_CHECK true)
-    if(GTK2_DEBUG)
-        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] "
-                       "Searching for version ${GTK2_FIND_VERSION}")
-    endif()
-    _GTK2_FIND_INCLUDE_DIR(GTK gtk/gtk.h)
-    if(GTK2_GTK_INCLUDE_DIR)
-        _GTK2_GET_VERSION(GTK2_MAJOR_VERSION
-                          GTK2_MINOR_VERSION
-                          GTK2_PATCH_VERSION
-                          ${GTK2_GTK_INCLUDE_DIR}/gtk/gtkversion.h)
-        set(GTK2_VERSION
-            ${GTK2_MAJOR_VERSION}.${GTK2_MINOR_VERSION}.${GTK2_PATCH_VERSION})
-        if(GTK2_FIND_VERSION_EXACT)
-            if(GTK2_VERSION VERSION_EQUAL GTK2_FIND_VERSION)
-                set(GTK2_FAILED_VERSION_CHECK false)
-            endif()
-        else()
-            if(GTK2_VERSION VERSION_EQUAL   GTK2_FIND_VERSION OR
-               GTK2_VERSION VERSION_GREATER GTK2_FIND_VERSION)
-                set(GTK2_FAILED_VERSION_CHECK false)
-            endif()
-        endif()
-    else()
-        # If we can't find the GTK include dir, we can't do version checking
-        if(GTK2_FIND_REQUIRED AND NOT GTK2_FIND_QUIETLY)
-            message(FATAL_ERROR "Could not find GTK2 include directory")
-        endif()
-        return()
-    endif()
-
-    if(GTK2_FAILED_VERSION_CHECK)
-        if(GTK2_FIND_REQUIRED AND NOT GTK2_FIND_QUIETLY)
-            if(GTK2_FIND_VERSION_EXACT)
-                message(FATAL_ERROR "GTK2 version check failed.  Version ${GTK2_VERSION} was found, version ${GTK2_FIND_VERSION} is needed exactly.")
-            else()
-                message(FATAL_ERROR "GTK2 version check failed.  Version ${GTK2_VERSION} was found, at least version ${GTK2_FIND_VERSION} is required")
-            endif()
-        endif()
-
-        # If the version check fails, exit out of the module here
-        return()
-    endif()
-endif()
-
-#
-# On MSVC, according to https://wiki.gnome.org/gtkmm/MSWindows, the /vd2 flag needs to be
-# passed to the compiler in order to use gtkmm
-#
-if(MSVC)
-    foreach(_GTK2_component ${GTK2_FIND_COMPONENTS})
-        if(_GTK2_component STREQUAL "gtkmm")
-            set(GTK2_DEFINITIONS "/vd2")
-        elseif(_GTK2_component STREQUAL "glademm")
-            set(GTK2_DEFINITIONS "/vd2")
-        endif()
-    endforeach()
-endif()
-
-#
-# Find all components
-#
-
-find_package(Freetype QUIET)
-if(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
-    list(APPEND GTK2_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2})
-endif()
-
-foreach(_GTK2_component ${GTK2_FIND_COMPONENTS})
-    if(_GTK2_component STREQUAL "gtk")
-        # Left for compatibility with previous versions.
-        _GTK2_FIND_INCLUDE_DIR(FONTCONFIG fontconfig/fontconfig.h)
-        _GTK2_FIND_INCLUDE_DIR(X11 X11/Xlib.h)
-
-        _GTK2_FIND_INCLUDE_DIR(GLIB glib.h)
-        _GTK2_FIND_INCLUDE_DIR(GLIBCONFIG glibconfig.h)
-        _GTK2_FIND_LIBRARY    (GLIB glib false true)
-        _GTK2_ADD_TARGET      (GLIB)
-
-        _GTK2_FIND_INCLUDE_DIR(GOBJECT glib-object.h)
-        _GTK2_FIND_LIBRARY    (GOBJECT gobject false true)
-        _GTK2_ADD_TARGET      (GOBJECT GTK2_DEPENDS glib)
-
-        _GTK2_FIND_INCLUDE_DIR(ATK atk/atk.h)
-        _GTK2_FIND_LIBRARY    (ATK atk false true)
-        _GTK2_ADD_TARGET      (ATK GTK2_DEPENDS gobject glib)
-
-        _GTK2_FIND_LIBRARY    (GIO gio false true)
-        _GTK2_ADD_TARGET      (GIO GTK2_DEPENDS gobject glib)
-
-        _GTK2_FIND_LIBRARY    (GTHREAD gthread false true)
-        _GTK2_ADD_TARGET      (GTHREAD GTK2_DEPENDS glib)
-
-        _GTK2_FIND_LIBRARY    (GMODULE gmodule false true)
-        _GTK2_ADD_TARGET      (GMODULE GTK2_DEPENDS glib)
-
-        _GTK2_FIND_INCLUDE_DIR(GDK_PIXBUF gdk-pixbuf/gdk-pixbuf.h)
-        _GTK2_FIND_LIBRARY    (GDK_PIXBUF gdk_pixbuf false true)
-        _GTK2_ADD_TARGET      (GDK_PIXBUF GTK2_DEPENDS gobject glib)
-
-        _GTK2_FIND_INCLUDE_DIR(CAIRO cairo.h)
-        _GTK2_FIND_LIBRARY    (CAIRO cairo false false)
-        _GTK2_ADD_TARGET      (CAIRO)
-
-        _GTK2_FIND_INCLUDE_DIR(HARFBUZZ hb.h)
-        _GTK2_FIND_LIBRARY    (HARFBUZZ harfbuzz false false)
-        _GTK2_ADD_TARGET      (HARFBUZZ)
-
-        _GTK2_FIND_INCLUDE_DIR(PANGO pango/pango.h)
-        _GTK2_FIND_LIBRARY    (PANGO pango false true)
-        _GTK2_ADD_TARGET      (PANGO GTK2_DEPENDS gobject glib
-                                     GTK2_OPTIONAL_DEPENDS harfbuzz)
-
-        _GTK2_FIND_LIBRARY    (PANGOCAIRO pangocairo false true)
-        _GTK2_ADD_TARGET      (PANGOCAIRO GTK2_DEPENDS pango cairo gobject glib)
-
-        _GTK2_FIND_LIBRARY    (PANGOFT2 pangoft2 false true)
-        _GTK2_ADD_TARGET      (PANGOFT2 GTK2_DEPENDS pango gobject glib
-                                        OPTIONAL_INCLUDES ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2}
-                                                          ${GTK2_FONTCONFIG_INCLUDE_DIR}
-                                                          ${GTK2_X11_INCLUDE_DIR})
-
-        _GTK2_FIND_LIBRARY    (PANGOXFT pangoxft false true)
-        _GTK2_ADD_TARGET      (PANGOXFT GTK2_DEPENDS pangoft2 pango gobject glib
-                                        OPTIONAL_INCLUDES ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2}
-                                                          ${GTK2_FONTCONFIG_INCLUDE_DIR}
-                                                          ${GTK2_X11_INCLUDE_DIR})
-
-        _GTK2_FIND_INCLUDE_DIR(GDK gdk/gdk.h)
-        _GTK2_FIND_INCLUDE_DIR(GDKCONFIG gdkconfig.h)
-        if(UNIX)
-            if(APPLE)
-                _GTK2_FIND_LIBRARY    (GDK gdk-quartz false true)
-            endif()
-            _GTK2_FIND_LIBRARY    (GDK gdk-x11 false true)
-        else()
-            _GTK2_FIND_LIBRARY    (GDK gdk-win32 false true)
-        endif()
-        _GTK2_ADD_TARGET (GDK GTK2_DEPENDS pango gdk_pixbuf gobject glib
-                              GTK2_OPTIONAL_DEPENDS pangocairo cairo)
-
-        _GTK2_FIND_INCLUDE_DIR(GTK gtk/gtk.h)
-        if(UNIX)
-            if(APPLE)
-                _GTK2_FIND_LIBRARY    (GTK gtk-quartz false true)
-            endif()
-            _GTK2_FIND_LIBRARY    (GTK gtk-x11 false true)
-        else()
-            _GTK2_FIND_LIBRARY    (GTK gtk-win32 false true)
-        endif()
-        _GTK2_ADD_TARGET (GTK GTK2_DEPENDS gdk atk pangoft2 pango gdk_pixbuf gthread gobject glib
-                              GTK2_OPTIONAL_DEPENDS gio pangocairo cairo)
-
-    elseif(_GTK2_component STREQUAL "gtkmm")
-
-        _GTK2_FIND_INCLUDE_DIR(SIGC++ sigc++/sigc++.h)
-        _GTK2_FIND_INCLUDE_DIR(SIGC++CONFIG sigc++config.h)
-        _GTK2_FIND_LIBRARY    (SIGC++ sigc true true)
-        _GTK2_ADD_TARGET      (SIGC++)
-        # Since sigc++ 2.5.1 c++11 support is required
-        if(GTK2_SIGC++CONFIG_INCLUDE_DIR)
-            _GTK2_SIGCXX_GET_VERSION(GTK2_SIGC++_VERSION_MAJOR
-                                     GTK2_SIGC++_VERSION_MINOR
-                                     GTK2_SIGC++_VERSION_MICRO
-                                     ${GTK2_SIGC++CONFIG_INCLUDE_DIR}/sigc++config.h)
-            if(NOT ${GTK2_SIGC++_VERSION_MAJOR}.${GTK2_SIGC++_VERSION_MINOR}.${GTK2_SIGC++_VERSION_MICRO} VERSION_LESS 2.5.1)
-                # These are the features needed by clients in order to include the
-                # project headers:
-                set_property(TARGET GTK2::sigc++
-                             PROPERTY INTERFACE_COMPILE_FEATURES cxx_alias_templates
-                                                                 cxx_auto_type
-                                                                 cxx_decltype
-                                                                 cxx_deleted_functions
-                                                                 cxx_noexcept
-                                                                 cxx_nullptr
-                                                                 cxx_right_angle_brackets
-                                                                 cxx_rvalue_references
-                                                                 cxx_variadic_templates)
-            endif()
-        endif()
-
-        _GTK2_FIND_INCLUDE_DIR(GLIBMM glibmm.h)
-        _GTK2_FIND_INCLUDE_DIR(GLIBMMCONFIG glibmmconfig.h)
-        _GTK2_FIND_LIBRARY    (GLIBMM glibmm true true)
-        _GTK2_ADD_TARGET      (GLIBMM GTK2_DEPENDS gobject sigc++ glib)
-
-        _GTK2_FIND_INCLUDE_DIR(GIOMM giomm.h)
-        _GTK2_FIND_INCLUDE_DIR(GIOMMCONFIG giommconfig.h)
-        _GTK2_FIND_LIBRARY    (GIOMM giomm true true)
-        _GTK2_ADD_TARGET      (GIOMM GTK2_DEPENDS gio glibmm gobject sigc++ glib)
-
-        _GTK2_FIND_INCLUDE_DIR(ATKMM atkmm.h)
-        _GTK2_FIND_LIBRARY    (ATKMM atkmm true true)
-        _GTK2_ADD_TARGET      (ATKMM GTK2_DEPENDS atk glibmm gobject sigc++ glib)
-
-        _GTK2_FIND_INCLUDE_DIR(CAIROMM cairomm/cairomm.h)
-        _GTK2_FIND_INCLUDE_DIR(CAIROMMCONFIG cairommconfig.h)
-        _GTK2_FIND_LIBRARY    (CAIROMM cairomm true true)
-        _GTK2_ADD_TARGET      (CAIROMM GTK2_DEPENDS cairo sigc++
-                                       OPTIONAL_INCLUDES ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2}
-                                                         ${GTK2_FONTCONFIG_INCLUDE_DIR}
-                                                         ${GTK2_X11_INCLUDE_DIR})
-
-        _GTK2_FIND_INCLUDE_DIR(PANGOMM pangomm.h)
-        _GTK2_FIND_INCLUDE_DIR(PANGOMMCONFIG pangommconfig.h)
-        _GTK2_FIND_LIBRARY    (PANGOMM pangomm true true)
-        _GTK2_ADD_TARGET      (PANGOMM GTK2_DEPENDS glibmm sigc++ pango gobject glib
-                                       GTK2_OPTIONAL_DEPENDS cairomm pangocairo cairo
-                                       OPTIONAL_INCLUDES ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2}
-                                                         ${GTK2_FONTCONFIG_INCLUDE_DIR}
-                                                         ${GTK2_X11_INCLUDE_DIR})
-
-        _GTK2_FIND_INCLUDE_DIR(GDKMM gdkmm.h)
-        _GTK2_FIND_INCLUDE_DIR(GDKMMCONFIG gdkmmconfig.h)
-        _GTK2_FIND_LIBRARY    (GDKMM gdkmm true true)
-        _GTK2_ADD_TARGET      (GDKMM GTK2_DEPENDS pangomm gtk glibmm sigc++ gdk atk pangoft2 gdk_pixbuf pango gobject glib
-                                     GTK2_OPTIONAL_DEPENDS giomm cairomm gio pangocairo cairo
-                                     OPTIONAL_INCLUDES ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2}
-                                                       ${GTK2_FONTCONFIG_INCLUDE_DIR}
-                                                       ${GTK2_X11_INCLUDE_DIR})
-
-        _GTK2_FIND_INCLUDE_DIR(GTKMM gtkmm.h)
-        _GTK2_FIND_INCLUDE_DIR(GTKMMCONFIG gtkmmconfig.h)
-        _GTK2_FIND_LIBRARY    (GTKMM gtkmm true true)
-        _GTK2_ADD_TARGET      (GTKMM GTK2_DEPENDS atkmm gdkmm pangomm gtk glibmm sigc++ gdk atk pangoft2 gdk_pixbuf pango gthread gobject glib
-                                     GTK2_OPTIONAL_DEPENDS giomm cairomm gio pangocairo cairo
-                                     OPTIONAL_INCLUDES ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2}
-                                                       ${GTK2_FONTCONFIG_INCLUDE_DIR}
-                                                       ${GTK2_X11_INCLUDE_DIR})
-
-    elseif(_GTK2_component STREQUAL "glade")
-
-        _GTK2_FIND_INCLUDE_DIR(GLADE glade/glade.h)
-        _GTK2_FIND_LIBRARY    (GLADE glade false true)
-        _GTK2_ADD_TARGET      (GLADE GTK2_DEPENDS gtk gdk atk gio pangoft2 gdk_pixbuf pango gobject glib
-                                     GTK2_OPTIONAL_DEPENDS pangocairo cairo
-                                     OPTIONAL_INCLUDES ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2}
-                                                       ${GTK2_FONTCONFIG_INCLUDE_DIR}
-                                                       ${GTK2_X11_INCLUDE_DIR})
-
-    elseif(_GTK2_component STREQUAL "glademm")
-
-        _GTK2_FIND_INCLUDE_DIR(GLADEMM libglademm.h)
-        _GTK2_FIND_INCLUDE_DIR(GLADEMMCONFIG libglademmconfig.h)
-        _GTK2_FIND_LIBRARY    (GLADEMM glademm true true)
-        _GTK2_ADD_TARGET      (GLADEMM GTK2_DEPENDS gtkmm glade atkmm gdkmm giomm pangomm glibmm sigc++ gtk gdk atk pangoft2 gdk_pixbuf pango gthread gobject glib
-                                       GTK2_OPTIONAL_DEPENDS giomm cairomm gio pangocairo cairo
-                                       OPTIONAL_INCLUDES ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2}
-                                                         ${GTK2_FONTCONFIG_INCLUDE_DIR}
-                                                         ${GTK2_X11_INCLUDE_DIR})
-
-    else()
-        message(FATAL_ERROR "Unknown GTK2 component ${_component}")
-    endif()
-endforeach()
-
-#
-# Solve for the GTK2 version if we haven't already
-#
-if(NOT GTK2_FIND_VERSION AND GTK2_GTK_INCLUDE_DIR)
-    _GTK2_GET_VERSION(GTK2_MAJOR_VERSION
-                      GTK2_MINOR_VERSION
-                      GTK2_PATCH_VERSION
-                      ${GTK2_GTK_INCLUDE_DIR}/gtk/gtkversion.h)
-    set(GTK2_VERSION ${GTK2_MAJOR_VERSION}.${GTK2_MINOR_VERSION}.${GTK2_PATCH_VERSION})
-endif()
-
-#
-# Try to enforce components
-#
-
-set(_GTK2_did_we_find_everything true)  # This gets set to GTK2_FOUND
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-
-foreach(_GTK2_component ${GTK2_FIND_COMPONENTS})
-    string(TOUPPER ${_GTK2_component} _COMPONENT_UPPER)
-
-    set(GTK2_${_COMPONENT_UPPER}_FIND_QUIETLY ${GTK2_FIND_QUIETLY})
-
-    set(FPHSA_NAME_MISMATCHED 1)
-    if(_GTK2_component STREQUAL "gtk")
-        FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "Some or all of the gtk libraries were not found."
-            GTK2_GTK_LIBRARY
-            GTK2_GTK_INCLUDE_DIR
-
-            GTK2_GDK_INCLUDE_DIR
-            GTK2_GDKCONFIG_INCLUDE_DIR
-            GTK2_GDK_LIBRARY
-
-            GTK2_GLIB_INCLUDE_DIR
-            GTK2_GLIBCONFIG_INCLUDE_DIR
-            GTK2_GLIB_LIBRARY
-        )
-    elseif(_GTK2_component STREQUAL "gtkmm")
-        FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "Some or all of the gtkmm libraries were not found."
-            GTK2_GTKMM_LIBRARY
-            GTK2_GTKMM_INCLUDE_DIR
-            GTK2_GTKMMCONFIG_INCLUDE_DIR
-
-            GTK2_GDKMM_INCLUDE_DIR
-            GTK2_GDKMMCONFIG_INCLUDE_DIR
-            GTK2_GDKMM_LIBRARY
-
-            GTK2_GLIBMM_INCLUDE_DIR
-            GTK2_GLIBMMCONFIG_INCLUDE_DIR
-            GTK2_GLIBMM_LIBRARY
-
-            FREETYPE_INCLUDE_DIR_ft2build
-            FREETYPE_INCLUDE_DIR_freetype2
-        )
-    elseif(_GTK2_component STREQUAL "glade")
-        FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "The glade library was not found."
-            GTK2_GLADE_LIBRARY
-            GTK2_GLADE_INCLUDE_DIR
-        )
-    elseif(_GTK2_component STREQUAL "glademm")
-        FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "The glademm library was not found."
-            GTK2_GLADEMM_LIBRARY
-            GTK2_GLADEMM_INCLUDE_DIR
-            GTK2_GLADEMMCONFIG_INCLUDE_DIR
-        )
-    endif()
-    unset(FPHSA_NAME_MISMATCHED)
-
-    if(NOT GTK2_${_COMPONENT_UPPER}_FOUND)
-        set(_GTK2_did_we_find_everything false)
-    endif()
-endforeach()
-
-if(GTK2_USE_IMPORTED_TARGETS)
-    set(GTK2_LIBRARIES ${GTK2_TARGETS})
-endif()
-
-
-if(_GTK2_did_we_find_everything AND NOT GTK2_VERSION_CHECK_FAILED)
-    set(GTK2_FOUND true)
-else()
-    # Unset our variables.
-    set(GTK2_FOUND false)
-    set(GTK2_VERSION)
-    set(GTK2_VERSION_MAJOR)
-    set(GTK2_VERSION_MINOR)
-    set(GTK2_VERSION_PATCH)
-    set(GTK2_INCLUDE_DIRS)
-    set(GTK2_LIBRARIES)
-    set(GTK2_TARGETS)
-    set(GTK2_DEFINITIONS)
-endif()
-
-if(GTK2_INCLUDE_DIRS)
-  list(REMOVE_DUPLICATES GTK2_INCLUDE_DIRS)
-endif()
diff --git a/share/cmake-3.18/Modules/FindGTest.cmake b/share/cmake-3.18/Modules/FindGTest.cmake
deleted file mode 100644
index 53cab1a..0000000
--- a/share/cmake-3.18/Modules/FindGTest.cmake
+++ /dev/null
@@ -1,254 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindGTest
----------
-
-Locate the Google C++ Testing Framework.
-
-Imported targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :prop_tgt:`IMPORTED` targets:
-
-``GTest::GTest``
-  The Google Test ``gtest`` library, if found; adds Thread::Thread
-  automatically
-``GTest::Main``
-  The Google Test ``gtest_main`` library, if found
-
-
-Result variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``GTEST_FOUND``
-  Found the Google Testing framework
-``GTEST_INCLUDE_DIRS``
-  the directory containing the Google Test headers
-
-The library variables below are set as normal variables.  These
-contain debug/optimized keywords when a debugging library is found.
-
-``GTEST_LIBRARIES``
-  The Google Test ``gtest`` library; note it also requires linking
-  with an appropriate thread library
-``GTEST_MAIN_LIBRARIES``
-  The Google Test ``gtest_main`` library
-``GTEST_BOTH_LIBRARIES``
-  Both ``gtest`` and ``gtest_main``
-
-Cache variables
-^^^^^^^^^^^^^^^
-
-The following cache variables may also be set:
-
-``GTEST_ROOT``
-  The root directory of the Google Test installation (may also be
-  set as an environment variable)
-``GTEST_MSVC_SEARCH``
-  If compiling with MSVC, this variable can be set to ``MT`` or
-  ``MD`` (the default) to enable searching a GTest build tree
-
-
-Example usage
-^^^^^^^^^^^^^
-
-::
-
-    enable_testing()
-    find_package(GTest REQUIRED)
-
-    add_executable(foo foo.cc)
-    target_link_libraries(foo GTest::GTest GTest::Main)
-
-    add_test(AllTestsInFoo foo)
-
-
-Deeper integration with CTest
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-See :module:`GoogleTest` for information on the :command:`gtest_add_tests`
-and :command:`gtest_discover_tests` commands.
-#]=======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/GoogleTest.cmake)
-
-function(__gtest_append_debugs _endvar _library)
-    if(${_library} AND ${_library}_DEBUG)
-        set(_output optimized ${${_library}} debug ${${_library}_DEBUG})
-    else()
-        set(_output ${${_library}})
-    endif()
-    set(${_endvar} ${_output} PARENT_SCOPE)
-endfunction()
-
-function(__gtest_find_library _name)
-    find_library(${_name}
-        NAMES ${ARGN}
-        HINTS
-            ENV GTEST_ROOT
-            ${GTEST_ROOT}
-        PATH_SUFFIXES ${_gtest_libpath_suffixes}
-    )
-    mark_as_advanced(${_name})
-endfunction()
-
-macro(__gtest_determine_windows_library_type _var)
-    if(EXISTS "${${_var}}")
-        file(TO_NATIVE_PATH "${${_var}}" _lib_path)
-        get_filename_component(_name "${${_var}}" NAME_WE)
-        file(STRINGS "${${_var}}" _match REGEX "${_name}\\.dll" LIMIT_COUNT 1)
-        if(NOT _match STREQUAL "")
-            set(${_var}_TYPE SHARED PARENT_SCOPE)
-        else()
-            set(${_var}_TYPE UNKNOWN PARENT_SCOPE)
-        endif()
-        return()
-    endif()
-endmacro()
-
-function(__gtest_determine_library_type _var)
-    if(WIN32)
-        # For now, at least, only Windows really needs to know the library type
-        __gtest_determine_windows_library_type(${_var})
-        __gtest_determine_windows_library_type(${_var}_RELEASE)
-        __gtest_determine_windows_library_type(${_var}_DEBUG)
-    endif()
-    # If we get here, no determination was made from the above checks
-    set(${_var}_TYPE UNKNOWN PARENT_SCOPE)
-endfunction()
-
-function(__gtest_import_library _target _var _config)
-    if(_config)
-        set(_config_suffix "_${_config}")
-    else()
-        set(_config_suffix "")
-    endif()
-
-    set(_lib "${${_var}${_config_suffix}}")
-    if(EXISTS "${_lib}")
-        if(_config)
-            set_property(TARGET ${_target} APPEND PROPERTY
-                IMPORTED_CONFIGURATIONS ${_config})
-        endif()
-        set_target_properties(${_target} PROPERTIES
-            IMPORTED_LINK_INTERFACE_LANGUAGES${_config_suffix} "CXX")
-        if(WIN32 AND ${_var}_TYPE STREQUAL SHARED)
-            set_target_properties(${_target} PROPERTIES
-                IMPORTED_IMPLIB${_config_suffix} "${_lib}")
-        else()
-            set_target_properties(${_target} PROPERTIES
-                IMPORTED_LOCATION${_config_suffix} "${_lib}")
-        endif()
-    endif()
-endfunction()
-
-#
-
-if(NOT DEFINED GTEST_MSVC_SEARCH)
-    set(GTEST_MSVC_SEARCH MD)
-endif()
-
-set(_gtest_libpath_suffixes lib)
-if(MSVC)
-    if(GTEST_MSVC_SEARCH STREQUAL "MD")
-        list(APPEND _gtest_libpath_suffixes
-            msvc/gtest-md/Debug
-            msvc/gtest-md/Release
-            msvc/x64/Debug
-            msvc/x64/Release
-            msvc/2010/gtest-md/Win32-Debug
-            msvc/2010/gtest-md/Win32-Release
-            msvc/2010/gtest-md/x64-Debug
-            msvc/2010/gtest-md/x64-Release
-            )
-    elseif(GTEST_MSVC_SEARCH STREQUAL "MT")
-        list(APPEND _gtest_libpath_suffixes
-            msvc/gtest/Debug
-            msvc/gtest/Release
-            msvc/x64/Debug
-            msvc/x64/Release
-            msvc/2010/gtest/Win32-Debug
-            msvc/2010/gtest/Win32-Release
-            msvc/2010/gtest/x64-Debug
-            msvc/2010/gtest/x64-Release
-            )
-    endif()
-endif()
-
-
-find_path(GTEST_INCLUDE_DIR gtest/gtest.h
-    HINTS
-        $ENV{GTEST_ROOT}/include
-        ${GTEST_ROOT}/include
-)
-mark_as_advanced(GTEST_INCLUDE_DIR)
-
-if(MSVC AND GTEST_MSVC_SEARCH STREQUAL "MD")
-    # The provided /MD project files for Google Test add -md suffixes to the
-    # library names.
-    __gtest_find_library(GTEST_LIBRARY            gtest-md  gtest)
-    __gtest_find_library(GTEST_LIBRARY_DEBUG      gtest-mdd gtestd)
-    __gtest_find_library(GTEST_MAIN_LIBRARY       gtest_main-md  gtest_main)
-    __gtest_find_library(GTEST_MAIN_LIBRARY_DEBUG gtest_main-mdd gtest_maind)
-else()
-    __gtest_find_library(GTEST_LIBRARY            gtest)
-    __gtest_find_library(GTEST_LIBRARY_DEBUG      gtestd)
-    __gtest_find_library(GTEST_MAIN_LIBRARY       gtest_main)
-    __gtest_find_library(GTEST_MAIN_LIBRARY_DEBUG gtest_maind)
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTest DEFAULT_MSG GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)
-
-if(GTEST_FOUND)
-    set(GTEST_INCLUDE_DIRS ${GTEST_INCLUDE_DIR})
-    __gtest_append_debugs(GTEST_LIBRARIES      GTEST_LIBRARY)
-    __gtest_append_debugs(GTEST_MAIN_LIBRARIES GTEST_MAIN_LIBRARY)
-    set(GTEST_BOTH_LIBRARIES ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES})
-
-    find_package(Threads QUIET)
-
-    if(NOT TARGET GTest::GTest)
-        __gtest_determine_library_type(GTEST_LIBRARY)
-        add_library(GTest::GTest ${GTEST_LIBRARY_TYPE} IMPORTED)
-        if(TARGET Threads::Threads)
-            set_target_properties(GTest::GTest PROPERTIES
-                INTERFACE_LINK_LIBRARIES Threads::Threads)
-        endif()
-        if(GTEST_LIBRARY_TYPE STREQUAL "SHARED")
-            set_target_properties(GTest::GTest PROPERTIES
-                INTERFACE_COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
-        endif()
-        if(GTEST_INCLUDE_DIRS)
-            set_target_properties(GTest::GTest PROPERTIES
-                INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}")
-        endif()
-        __gtest_import_library(GTest::GTest GTEST_LIBRARY "")
-        __gtest_import_library(GTest::GTest GTEST_LIBRARY "RELEASE")
-        __gtest_import_library(GTest::GTest GTEST_LIBRARY "DEBUG")
-    endif()
-    if(NOT TARGET GTest::Main)
-        __gtest_determine_library_type(GTEST_MAIN_LIBRARY)
-        add_library(GTest::Main ${GTEST_MAIN_LIBRARY_TYPE} IMPORTED)
-        set_target_properties(GTest::Main PROPERTIES
-            INTERFACE_LINK_LIBRARIES "GTest::GTest")
-        __gtest_import_library(GTest::Main GTEST_MAIN_LIBRARY "")
-        __gtest_import_library(GTest::Main GTEST_MAIN_LIBRARY "RELEASE")
-        __gtest_import_library(GTest::Main GTEST_MAIN_LIBRARY "DEBUG")
-    endif()
-
-    # Add targets mapping the same library names as defined in
-    # GTest's CMake package config.
-    if(NOT TARGET GTest::gtest)
-        add_library(GTest::gtest INTERFACE IMPORTED)
-        target_link_libraries(GTest::gtest INTERFACE GTest::GTest)
-    endif()
-    if(NOT TARGET GTest::gtest_main)
-        add_library(GTest::gtest_main INTERFACE IMPORTED)
-        target_link_libraries(GTest::gtest_main INTERFACE GTest::Main)
-    endif()
-endif()
diff --git a/share/cmake-3.18/Modules/FindGettext.cmake b/share/cmake-3.18/Modules/FindGettext.cmake
deleted file mode 100644
index 213ad13..0000000
--- a/share/cmake-3.18/Modules/FindGettext.cmake
+++ /dev/null
@@ -1,232 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindGettext
------------
-
-Find GNU gettext tools
-
-This module looks for the GNU gettext tools.  This module defines the
-following values:
-
-::
-
-  GETTEXT_MSGMERGE_EXECUTABLE: the full path to the msgmerge tool.
-  GETTEXT_MSGFMT_EXECUTABLE: the full path to the msgfmt tool.
-  GETTEXT_FOUND: True if gettext has been found.
-  GETTEXT_VERSION_STRING: the version of gettext found (since CMake 2.8.8)
-
-
-
-Additionally it provides the following macros:
-
-GETTEXT_CREATE_TRANSLATIONS ( outputFile [ALL] file1 ...  fileN )
-
-::
-
-    This will create a target "translations" which will convert the
-    given input po files into the binary output mo file. If the
-    ALL option is used, the translations will also be created when
-    building the default target.
-
-GETTEXT_PROCESS_POT_FILE( <potfile> [ALL] [INSTALL_DESTINATION <destdir>]
-LANGUAGES <lang1> <lang2> ...  )
-
-::
-
-     Process the given pot file to mo files.
-     If INSTALL_DESTINATION is given then automatically install rules will
-     be created, the language subdirectory will be taken into account
-     (by default use share/locale/).
-     If ALL is specified, the pot file is processed when building the all traget.
-     It creates a custom target "potfile".
-
-GETTEXT_PROCESS_PO_FILES( <lang> [ALL] [INSTALL_DESTINATION <dir>]
-PO_FILES <po1> <po2> ...  )
-
-::
-
-     Process the given po files to mo files for the given language.
-     If INSTALL_DESTINATION is given then automatically install rules will
-     be created, the language subdirectory will be taken into account
-     (by default use share/locale/).
-     If ALL is specified, the po files are processed when building the all traget.
-     It creates a custom target "pofiles".
-
-.. note::
-  If you wish to use the Gettext library (libintl), use :module:`FindIntl`.
-#]=======================================================================]
-
-find_program(GETTEXT_MSGMERGE_EXECUTABLE msgmerge)
-
-find_program(GETTEXT_MSGFMT_EXECUTABLE msgfmt)
-
-if(GETTEXT_MSGMERGE_EXECUTABLE)
-  execute_process(COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --version
-                  OUTPUT_VARIABLE gettext_version
-                  ERROR_QUIET
-                  OUTPUT_STRIP_TRAILING_WHITESPACE)
-  get_filename_component(msgmerge_name ${GETTEXT_MSGMERGE_EXECUTABLE} NAME)
-  get_filename_component(msgmerge_namewe ${GETTEXT_MSGMERGE_EXECUTABLE} NAME_WE)
-  if (gettext_version MATCHES "^(${msgmerge_name}|${msgmerge_namewe}) \\([^\\)]*\\) ([0-9\\.]+[^ \n]*)")
-    set(GETTEXT_VERSION_STRING "${CMAKE_MATCH_2}")
-  endif()
-  unset(gettext_version)
-  unset(msgmerge_name)
-  unset(msgmerge_namewe)
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Gettext
-                                  REQUIRED_VARS GETTEXT_MSGMERGE_EXECUTABLE GETTEXT_MSGFMT_EXECUTABLE
-                                  VERSION_VAR GETTEXT_VERSION_STRING)
-
-function(_GETTEXT_GET_UNIQUE_TARGET_NAME _name _unique_name)
-  set(propertyName "_GETTEXT_UNIQUE_COUNTER_${_name}")
-  get_property(currentCounter GLOBAL PROPERTY "${propertyName}")
-  if(NOT currentCounter)
-    set(currentCounter 1)
-  endif()
-  set(${_unique_name} "${_name}_${currentCounter}" PARENT_SCOPE)
-  math(EXPR currentCounter "${currentCounter} + 1")
-  set_property(GLOBAL PROPERTY ${propertyName} ${currentCounter} )
-endfunction()
-
-macro(GETTEXT_CREATE_TRANSLATIONS _potFile _firstPoFileArg)
-  # make it a real variable, so we can modify it here
-  set(_firstPoFile "${_firstPoFileArg}")
-
-  set(_gmoFiles)
-  get_filename_component(_potName ${_potFile} NAME)
-  string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _potBasename ${_potName})
-  get_filename_component(_absPotFile ${_potFile} ABSOLUTE)
-
-  set(_addToAll)
-  if(${_firstPoFile} STREQUAL "ALL")
-    set(_addToAll "ALL")
-    set(_firstPoFile)
-  endif()
-
-  foreach (_currentPoFile ${_firstPoFile} ${ARGN})
-    get_filename_component(_absFile ${_currentPoFile} ABSOLUTE)
-    get_filename_component(_abs_PATH ${_absFile} PATH)
-    get_filename_component(_lang ${_absFile} NAME_WE)
-    set(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo)
-
-    add_custom_command(
-      OUTPUT ${_gmoFile}
-      COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet --update --backup=none -s ${_absFile} ${_absPotFile}
-      COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_absFile}
-      DEPENDS ${_absPotFile} ${_absFile}
-    )
-
-    install(FILES ${_gmoFile} DESTINATION share/locale/${_lang}/LC_MESSAGES RENAME ${_potBasename}.mo)
-    set(_gmoFiles ${_gmoFiles} ${_gmoFile})
-
-  endforeach ()
-
-  if(NOT TARGET translations)
-    add_custom_target(translations)
-  endif()
-
-  _GETTEXT_GET_UNIQUE_TARGET_NAME(translations uniqueTargetName)
-
-  add_custom_target(${uniqueTargetName} ${_addToAll} DEPENDS ${_gmoFiles})
-
-  add_dependencies(translations ${uniqueTargetName})
-
-endmacro()
-
-
-function(GETTEXT_PROCESS_POT_FILE _potFile)
-  set(_gmoFiles)
-  set(_options ALL)
-  set(_oneValueArgs INSTALL_DESTINATION)
-  set(_multiValueArgs LANGUAGES)
-
-  CMAKE_PARSE_ARGUMENTS(_parsedArguments "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN})
-
-  get_filename_component(_potName ${_potFile} NAME)
-  string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _potBasename ${_potName})
-  get_filename_component(_absPotFile ${_potFile} ABSOLUTE)
-
-  foreach (_lang ${_parsedArguments_LANGUAGES})
-    set(_poFile  "${CMAKE_CURRENT_BINARY_DIR}/${_lang}.po")
-    set(_gmoFile "${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo")
-
-    add_custom_command(
-      OUTPUT "${_poFile}"
-      COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet --update --backup=none -s ${_poFile} ${_absPotFile}
-      DEPENDS ${_absPotFile}
-    )
-
-    add_custom_command(
-      OUTPUT "${_gmoFile}"
-      COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_poFile}
-      DEPENDS ${_absPotFile} ${_poFile}
-    )
-
-    if(_parsedArguments_INSTALL_DESTINATION)
-      install(FILES ${_gmoFile} DESTINATION ${_parsedArguments_INSTALL_DESTINATION}/${_lang}/LC_MESSAGES RENAME ${_potBasename}.mo)
-    endif()
-    list(APPEND _gmoFiles ${_gmoFile})
-  endforeach ()
-
-  if(NOT TARGET potfiles)
-    add_custom_target(potfiles)
-  endif()
-
-  _GETTEXT_GET_UNIQUE_TARGET_NAME( potfiles uniqueTargetName)
-
-  if(_parsedArguments_ALL)
-    add_custom_target(${uniqueTargetName} ALL DEPENDS ${_gmoFiles})
-  else()
-    add_custom_target(${uniqueTargetName} DEPENDS ${_gmoFiles})
-  endif()
-
-  add_dependencies(potfiles ${uniqueTargetName})
-
-endfunction()
-
-
-function(GETTEXT_PROCESS_PO_FILES _lang)
-  set(_options ALL)
-  set(_oneValueArgs INSTALL_DESTINATION)
-  set(_multiValueArgs PO_FILES)
-  set(_gmoFiles)
-
-  CMAKE_PARSE_ARGUMENTS(_parsedArguments "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN})
-
-  foreach(_current_PO_FILE ${_parsedArguments_PO_FILES})
-    get_filename_component(_name ${_current_PO_FILE} NAME)
-    string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _basename ${_name})
-    set(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.gmo)
-    add_custom_command(OUTPUT ${_gmoFile}
-      COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_current_PO_FILE}
-      WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
-      DEPENDS ${_current_PO_FILE}
-    )
-
-    if(_parsedArguments_INSTALL_DESTINATION)
-      install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.gmo DESTINATION ${_parsedArguments_INSTALL_DESTINATION}/${_lang}/LC_MESSAGES/ RENAME ${_basename}.mo)
-    endif()
-    list(APPEND _gmoFiles ${_gmoFile})
-  endforeach()
-
-
-  if(NOT TARGET pofiles)
-    add_custom_target(pofiles)
-  endif()
-
-  _GETTEXT_GET_UNIQUE_TARGET_NAME( pofiles uniqueTargetName)
-
-  if(_parsedArguments_ALL)
-    add_custom_target(${uniqueTargetName} ALL DEPENDS ${_gmoFiles})
-  else()
-    add_custom_target(${uniqueTargetName} DEPENDS ${_gmoFiles})
-  endif()
-
-  add_dependencies(pofiles ${uniqueTargetName})
-
-endfunction()
diff --git a/share/cmake-3.18/Modules/FindGit.cmake b/share/cmake-3.18/Modules/FindGit.cmake
deleted file mode 100644
index 3491cdc..0000000
--- a/share/cmake-3.18/Modules/FindGit.cmake
+++ /dev/null
@@ -1,98 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindGit
--------
-
-The module defines the following ``IMPORTED`` targets (when
-:prop_gbl:`CMAKE_ROLE` is ``PROJECT``):
-
-``Git::Git``
-  Executable of the Git command-line client.
-
-The module defines the following variables:
-
-``GIT_EXECUTABLE``
-  Path to Git command-line client.
-``Git_FOUND``, ``GIT_FOUND``
-  True if the Git command-line client was found.
-``GIT_VERSION_STRING``
-  The version of Git found.
-
-Example usage:
-
-.. code-block:: cmake
-
-   find_package(Git)
-   if(Git_FOUND)
-     message("Git found: ${GIT_EXECUTABLE}")
-   endif()
-#]=======================================================================]
-
-# Look for 'git' or 'eg' (easy git)
-#
-set(git_names git eg)
-
-# Prefer .cmd variants on Windows unless running in a Makefile
-# in the MSYS shell.
-#
-if(CMAKE_HOST_WIN32)
-  if(NOT CMAKE_GENERATOR MATCHES "MSYS")
-    set(git_names git.cmd git eg.cmd eg)
-    # GitHub search path for Windows
-    file(GLOB github_path
-      "$ENV{LOCALAPPDATA}/Github/PortableGit*/cmd"
-      "$ENV{LOCALAPPDATA}/Github/PortableGit*/bin"
-      )
-    # SourceTree search path for Windows
-    set(_git_sourcetree_path "$ENV{LOCALAPPDATA}/Atlassian/SourceTree/git_local/bin")
-  endif()
-endif()
-
-# First search the PATH and specific locations.
-find_program(GIT_EXECUTABLE
-  NAMES ${git_names}
-  PATHS ${github_path} ${_git_sourcetree_path}
-  DOC "Git command line client"
-  )
-
-if(CMAKE_HOST_WIN32)
-  # Now look for installations in Git/ directories under typical installation
-  # prefixes on Windows.  Exclude PATH from this search because VS 2017's
-  # command prompt happens to have a PATH entry with a Git/ subdirectory
-  # containing a minimal git not meant for general use.
-  find_program(GIT_EXECUTABLE
-    NAMES ${git_names}
-    PATH_SUFFIXES Git/cmd Git/bin
-    NO_SYSTEM_ENVIRONMENT_PATH
-    DOC "Git command line client"
-    )
-endif()
-
-mark_as_advanced(GIT_EXECUTABLE)
-
-unset(git_names)
-unset(_git_sourcetree_path)
-
-if(GIT_EXECUTABLE)
-  execute_process(COMMAND ${GIT_EXECUTABLE} --version
-                  OUTPUT_VARIABLE git_version
-                  ERROR_QUIET
-                  OUTPUT_STRIP_TRAILING_WHITESPACE)
-  if (git_version MATCHES "^git version [0-9]")
-    string(REPLACE "git version " "" GIT_VERSION_STRING "${git_version}")
-  endif()
-  unset(git_version)
-
-  get_property(_findgit_role GLOBAL PROPERTY CMAKE_ROLE)
-  if(_findgit_role STREQUAL "PROJECT" AND NOT TARGET Git::Git)
-    add_executable(Git::Git IMPORTED)
-    set_property(TARGET Git::Git PROPERTY IMPORTED_LOCATION "${GIT_EXECUTABLE}")
-  endif()
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(Git
-                                  REQUIRED_VARS GIT_EXECUTABLE
-                                  VERSION_VAR GIT_VERSION_STRING)
diff --git a/share/cmake-3.18/Modules/FindGnuTLS.cmake b/share/cmake-3.18/Modules/FindGnuTLS.cmake
deleted file mode 100644
index 819f000..0000000
--- a/share/cmake-3.18/Modules/FindGnuTLS.cmake
+++ /dev/null
@@ -1,82 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindGnuTLS
-----------
-
-Find the GNU Transport Layer Security library (gnutls)
-
-IMPORTED Targets
-^^^^^^^^^^^^^^^^
-
-This module defines :prop_tgt:`IMPORTED` target ``GnuTLS::GnuTLS``, if
-gnutls has been found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-``GNUTLS_FOUND``
-  System has gnutls
-``GNUTLS_INCLUDE_DIR``
-  The gnutls include directory
-``GNUTLS_LIBRARIES``
-  The libraries needed to use gnutls
-``GNUTLS_DEFINITIONS``
-  Compiler switches required for using gnutls
-``GNUTLS_VERSION``
-  version of gnutls.
-#]=======================================================================]
-
-# Note that this doesn't try to find the gnutls-extra package.
-
-
-if (GNUTLS_INCLUDE_DIR AND GNUTLS_LIBRARY)
-  # in cache already
-  set(gnutls_FIND_QUIETLY TRUE)
-endif ()
-
-if (NOT WIN32)
-  # try using pkg-config to get the directories and then use these values
-  # in the find_path() and find_library() calls
-  # also fills in GNUTLS_DEFINITIONS, although that isn't normally useful
-  find_package(PkgConfig QUIET)
-  PKG_CHECK_MODULES(PC_GNUTLS QUIET gnutls)
-  set(GNUTLS_DEFINITIONS ${PC_GNUTLS_CFLAGS_OTHER})
-  set(GNUTLS_VERSION ${PC_GNUTLS_VERSION})
-  # keep for backward compatibility
-  set(GNUTLS_VERSION_STRING ${PC_GNUTLS_VERSION})
-endif ()
-
-find_path(GNUTLS_INCLUDE_DIR gnutls/gnutls.h
-  HINTS
-    ${PC_GNUTLS_INCLUDEDIR}
-    ${PC_GNUTLS_INCLUDE_DIRS}
-  )
-
-find_library(GNUTLS_LIBRARY NAMES gnutls libgnutls
-  HINTS
-    ${PC_GNUTLS_LIBDIR}
-    ${PC_GNUTLS_LIBRARY_DIRS}
-  )
-
-mark_as_advanced(GNUTLS_INCLUDE_DIR GNUTLS_LIBRARY)
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GnuTLS
-                                  REQUIRED_VARS GNUTLS_LIBRARY GNUTLS_INCLUDE_DIR
-                                  VERSION_VAR GNUTLS_VERSION_STRING)
-
-if(GNUTLS_FOUND)
-  set(GNUTLS_LIBRARIES    ${GNUTLS_LIBRARY})
-  set(GNUTLS_INCLUDE_DIRS ${GNUTLS_INCLUDE_DIR})
-
-  if(NOT TARGET GnuTLS::GnuTLS)
-    add_library(GnuTLS::GnuTLS UNKNOWN IMPORTED)
-    set_target_properties(GnuTLS::GnuTLS PROPERTIES
-      INTERFACE_INCLUDE_DIRECTORIES "${GNUTLS_INCLUDE_DIRS}"
-      INTERFACE_COMPILE_DEFINITIONS "${GNUTLS_DEFINITIONS}"
-      IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-      IMPORTED_LOCATION "${GNUTLS_LIBRARIES}")
-  endif()
-endif()
diff --git a/share/cmake-3.18/Modules/FindGnuplot.cmake b/share/cmake-3.18/Modules/FindGnuplot.cmake
deleted file mode 100644
index ca2467d..0000000
--- a/share/cmake-3.18/Modules/FindGnuplot.cmake
+++ /dev/null
@@ -1,55 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindGnuplot
------------
-
-this module looks for gnuplot
-
-
-
-Once done this will define
-
-::
-
-  GNUPLOT_FOUND - system has Gnuplot
-  GNUPLOT_EXECUTABLE - the Gnuplot executable
-  GNUPLOT_VERSION_STRING - the version of Gnuplot found (since CMake 2.8.8)
-
-
-
-GNUPLOT_VERSION_STRING will not work for old versions like 3.7.1.
-#]=======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake)
-
-find_program(GNUPLOT_EXECUTABLE
-  NAMES
-  gnuplot
-  pgnuplot
-  wgnupl32
-  PATHS
-  ${CYGWIN_INSTALL_PATH}/bin
-)
-
-if (GNUPLOT_EXECUTABLE)
-    execute_process(COMMAND "${GNUPLOT_EXECUTABLE}" --version
-                  OUTPUT_VARIABLE GNUPLOT_OUTPUT_VARIABLE
-                  ERROR_QUIET
-                  OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-    string(REGEX REPLACE "^gnuplot ([0-9\\.]+)( patchlevel )?" "\\1." GNUPLOT_VERSION_STRING "${GNUPLOT_OUTPUT_VARIABLE}")
-    string(REGEX REPLACE "\\.$" "" GNUPLOT_VERSION_STRING "${GNUPLOT_VERSION_STRING}")
-    unset(GNUPLOT_OUTPUT_VARIABLE)
-endif()
-
-# for compatibility
-set(GNUPLOT ${GNUPLOT_EXECUTABLE})
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Gnuplot
-                                  REQUIRED_VARS GNUPLOT_EXECUTABLE
-                                  VERSION_VAR GNUPLOT_VERSION_STRING)
-
-mark_as_advanced( GNUPLOT_EXECUTABLE )
diff --git a/share/cmake-3.18/Modules/FindHDF5.cmake b/share/cmake-3.18/Modules/FindHDF5.cmake
deleted file mode 100644
index 60a313d..0000000
--- a/share/cmake-3.18/Modules/FindHDF5.cmake
+++ /dev/null
@@ -1,992 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindHDF5
---------
-
-Find Hierarchical Data Format (HDF5), a library for reading and writing
-self describing array data.
-
-
-This module invokes the ``HDF5`` wrapper compiler that should be installed
-alongside ``HDF5``.  Depending upon the ``HDF5`` Configuration, the wrapper
-compiler is called either ``h5cc`` or ``h5pcc``.  If this succeeds, the module
-will then call the compiler with the show argument to see what flags
-are used when compiling an ``HDF5`` client application.
-
-The module will optionally accept the ``COMPONENTS`` argument.  If no
-``COMPONENTS`` are specified, then the find module will default to finding
-only the ``HDF5`` C library.  If one or more ``COMPONENTS`` are specified, the
-module will attempt to find the language bindings for the specified
-components.  The valid components are ``C``, ``CXX``, ``Fortran``, ``HL``.
-``HL`` refers to the "high-level" HDF5 functions for C and Fortran.
-If the ``COMPONENTS`` argument is not given, the module will
-attempt to find only the C bindings.
-For example, to use Fortran HDF5 and HDF5-HL functions, do:
-``find_package(HDF5 COMPONENTS Fortran HL)``.
-
-This module will read the variable
-``HDF5_USE_STATIC_LIBRARIES`` to determine whether or not to prefer a
-static link to a dynamic link for ``HDF5`` and all of it's dependencies.
-To use this feature, make sure that the ``HDF5_USE_STATIC_LIBRARIES``
-variable is set before the call to find_package.
-
-Both the serial and parallel ``HDF5`` wrappers are considered and the first
-directory to contain either one will be used.  In the event that both appear
-in the same directory the serial version is preferentially selected. This
-behavior can be reversed by setting the variable ``HDF5_PREFER_PARALLEL`` to
-``TRUE``.
-
-In addition to finding the includes and libraries required to compile
-an ``HDF5`` client application, this module also makes an effort to find
-tools that come with the ``HDF5`` distribution that may be useful for
-regression testing.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``HDF5_FOUND``
-  HDF5 was found on the system
-``HDF5_VERSION``
-  HDF5 library version
-``HDF5_INCLUDE_DIRS``
-  Location of the HDF5 header files
-``HDF5_DEFINITIONS``
-  Required compiler definitions for HDF5
-``HDF5_LIBRARIES``
-  Required libraries for all requested bindings
-``HDF5_HL_LIBRARIES``
-  Required libraries for the HDF5 high level API for all bindings,
-  if the ``HL`` component is enabled
-
-Available components are: ``C`` ``CXX`` ``Fortran`` and ``HL``.
-For each enabled language binding, a corresponding ``HDF5_${LANG}_LIBRARIES``
-variable, and potentially ``HDF5_${LANG}_DEFINITIONS``, will be defined.
-If the ``HL`` component is enabled, then an ``HDF5_${LANG}_HL_LIBRARIES`` will
-also be defined.  With all components enabled, the following variables will be defined:
-
-``HDF5_C_DEFINITIONS``
-  Required compiler definitions for HDF5 C bindings
-``HDF5_CXX_DEFINITIONS``
-  Required compiler definitions for HDF5 C++ bindings
-``HDF5_Fortran_DEFINITIONS``
-  Required compiler definitions for HDF5 Fortran bindings
-``HDF5_C_INCLUDE_DIRS``
-  Required include directories for HDF5 C bindings
-``HDF5_CXX_INCLUDE_DIRS``
-  Required include directories for HDF5 C++ bindings
-``HDF5_Fortran_INCLUDE_DIRS``
-  Required include directories for HDF5 Fortran bindings
-``HDF5_C_LIBRARIES``
-  Required libraries for the HDF5 C bindings
-``HDF5_CXX_LIBRARIES``
-  Required libraries for the HDF5 C++ bindings
-``HDF5_Fortran_LIBRARIES``
-  Required libraries for the HDF5 Fortran bindings
-``HDF5_C_HL_LIBRARIES``
-  Required libraries for the high level C bindings
-``HDF5_CXX_HL_LIBRARIES``
-  Required libraries for the high level C++ bindings
-``HDF5_Fortran_HL_LIBRARIES``
-  Required libraries for the high level Fortran bindings.
-
-``HDF5_IS_PARALLEL``
-  HDF5 library has parallel IO support
-``HDF5_C_COMPILER_EXECUTABLE``
-  path to the HDF5 C wrapper compiler
-``HDF5_CXX_COMPILER_EXECUTABLE``
-  path to the HDF5 C++ wrapper compiler
-``HDF5_Fortran_COMPILER_EXECUTABLE``
-  path to the HDF5 Fortran wrapper compiler
-``HDF5_C_COMPILER_EXECUTABLE_NO_INTERROGATE``
-  path to the primary C compiler which is also the HDF5 wrapper
-``HDF5_CXX_COMPILER_EXECUTABLE_NO_INTERROGATE``
-  path to the primary C++ compiler which is also the HDF5 wrapper
-``HDF5_Fortran_COMPILER_EXECUTABLE_NO_INTERROGATE``
-  path to the primary Fortran compiler which is also the HDF5 wrapper
-``HDF5_DIFF_EXECUTABLE``
-  path to the HDF5 dataset comparison tool
-
-Hints
-^^^^^
-
-The following variables can be set to guide the search for HDF5 libraries and includes:
-
-``HDF5_PREFER_PARALLEL``
-  set ``true`` to prefer parallel HDF5 (by default, serial is preferred)
-
-``HDF5_FIND_DEBUG``
-  Set ``true`` to get extra debugging output.
-
-``HDF5_NO_FIND_PACKAGE_CONFIG_FILE``
-  Set ``true`` to skip trying to find ``hdf5-config.cmake``.
-#]=======================================================================]
-
-# This module is maintained by Will Dicharry <wdicharry@stellarscience.com>.
-
-include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-
-# List of the valid HDF5 components
-set(HDF5_VALID_LANGUAGE_BINDINGS C CXX Fortran)
-
-# Validate the list of find components.
-if(NOT HDF5_FIND_COMPONENTS)
-  set(HDF5_LANGUAGE_BINDINGS "C")
-else()
-  set(HDF5_LANGUAGE_BINDINGS)
-  # add the extra specified components, ensuring that they are valid.
-  set(HDF5_FIND_HL OFF)
-  foreach(_component IN LISTS HDF5_FIND_COMPONENTS)
-    list(FIND HDF5_VALID_LANGUAGE_BINDINGS ${_component} _component_location)
-    if(NOT _component_location EQUAL -1)
-      list(APPEND HDF5_LANGUAGE_BINDINGS ${_component})
-    elseif(_component STREQUAL "HL")
-      set(HDF5_FIND_HL ON)
-    elseif(_component STREQUAL "Fortran_HL") # only for compatibility
-      list(APPEND HDF5_LANGUAGE_BINDINGS Fortran)
-      set(HDF5_FIND_HL ON)
-      set(HDF5_FIND_REQUIRED_Fortran_HL FALSE)
-      set(HDF5_FIND_REQUIRED_Fortran TRUE)
-      set(HDF5_FIND_REQUIRED_HL TRUE)
-    else()
-      message(FATAL_ERROR "${_component} is not a valid HDF5 component.")
-    endif()
-  endforeach()
-  unset(_component)
-  unset(_component_location)
-  if(NOT HDF5_LANGUAGE_BINDINGS)
-    get_property(_langs GLOBAL PROPERTY ENABLED_LANGUAGES)
-    foreach(_lang IN LISTS _langs)
-      if(_lang MATCHES "^(C|CXX|Fortran)$")
-        list(APPEND HDF5_LANGUAGE_BINDINGS ${_lang})
-      endif()
-    endforeach()
-  endif()
-  list(REMOVE_ITEM HDF5_FIND_COMPONENTS Fortran_HL) # replaced by Fortran and HL
-  list(REMOVE_DUPLICATES HDF5_LANGUAGE_BINDINGS)
-endif()
-
-# Determine whether to search for serial or parallel executable first
-if(HDF5_PREFER_PARALLEL)
-  set(HDF5_C_COMPILER_NAMES h5pcc h5cc)
-  set(HDF5_CXX_COMPILER_NAMES h5pc++ h5c++)
-  set(HDF5_Fortran_COMPILER_NAMES h5pfc h5fc)
-else()
-  set(HDF5_C_COMPILER_NAMES h5cc h5pcc)
-  set(HDF5_CXX_COMPILER_NAMES h5c++ h5pc++)
-  set(HDF5_Fortran_COMPILER_NAMES h5fc h5pfc)
-endif()
-
-# We may have picked up some duplicates in various lists during the above
-# process for the language bindings (both the C and C++ bindings depend on
-# libz for example).  Remove the duplicates. It appears that the default
-# CMake behavior is to remove duplicates from the end of a list. However,
-# for link lines, this is incorrect since unresolved symbols are searched
-# for down the link line. Therefore, we reverse the list, remove the
-# duplicates, and then reverse it again to get the duplicates removed from
-# the beginning.
-macro(_HDF5_remove_duplicates_from_beginning _list_name)
-  if(${_list_name})
-    list(REVERSE ${_list_name})
-    list(REMOVE_DUPLICATES ${_list_name})
-    list(REVERSE ${_list_name})
-  endif()
-endmacro()
-
-
-# Test first if the current compilers automatically wrap HDF5
-
-function(_HDF5_test_regular_compiler_C success version is_parallel)
-  set(scratch_directory
-    ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hdf5)
-  if(NOT ${success} OR
-     NOT EXISTS ${scratch_directory}/compiler_has_h5_c)
-    set(test_file ${scratch_directory}/cmake_hdf5_test.c)
-    file(WRITE ${test_file}
-      "#include <hdf5.h>\n"
-      "#include <hdf5_hl.h>\n"
-      "const char* info_ver = \"INFO\" \":\" H5_VERSION;\n"
-      "#ifdef H5_HAVE_PARALLEL\n"
-      "const char* info_parallel = \"INFO\" \":\" \"PARALLEL\";\n"
-      "#endif\n"
-      "int main(int argc, char **argv) {\n"
-      "  int require = 0;\n"
-      "  require += info_ver[argc];\n"
-      "#ifdef H5_HAVE_PARALLEL\n"
-      "  require += info_parallel[argc];\n"
-      "#endif\n"
-      "  hid_t fid;\n"
-      "  fid = H5Fcreate(\"foo.h5\",H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT);\n"
-      "  return 0;\n"
-      "}")
-    try_compile(${success} ${scratch_directory} ${test_file}
-      COPY_FILE ${scratch_directory}/compiler_has_h5_c
-    )
-  endif()
-  if(${success})
-    file(STRINGS ${scratch_directory}/compiler_has_h5_c INFO_STRINGS
-      REGEX "^INFO:"
-    )
-    string(REGEX MATCH "^INFO:([0-9]+\\.[0-9]+\\.[0-9]+)(-patch([0-9]+))?"
-      INFO_VER "${INFO_STRINGS}"
-    )
-    set(${version} ${CMAKE_MATCH_1})
-    if(CMAKE_MATCH_3)
-      set(${version} ${HDF5_C_VERSION}.${CMAKE_MATCH_3})
-    endif()
-    set(${version} ${${version}} PARENT_SCOPE)
-
-    if(INFO_STRINGS MATCHES "INFO:PARALLEL")
-      set(${is_parallel} TRUE PARENT_SCOPE)
-    else()
-      set(${is_parallel} FALSE PARENT_SCOPE)
-    endif()
-  endif()
-endfunction()
-
-function(_HDF5_test_regular_compiler_CXX success version is_parallel)
-  set(scratch_directory ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hdf5)
-  if(NOT ${success} OR
-     NOT EXISTS ${scratch_directory}/compiler_has_h5_cxx)
-    set(test_file ${scratch_directory}/cmake_hdf5_test.cxx)
-    file(WRITE ${test_file}
-      "#include <H5Cpp.h>\n"
-      "#ifndef H5_NO_NAMESPACE\n"
-      "using namespace H5;\n"
-      "#endif\n"
-      "const char* info_ver = \"INFO\" \":\" H5_VERSION;\n"
-      "#ifdef H5_HAVE_PARALLEL\n"
-      "const char* info_parallel = \"INFO\" \":\" \"PARALLEL\";\n"
-      "#endif\n"
-      "int main(int argc, char **argv) {\n"
-      "  int require = 0;\n"
-      "  require += info_ver[argc];\n"
-      "#ifdef H5_HAVE_PARALLEL\n"
-      "  require += info_parallel[argc];\n"
-      "#endif\n"
-      "  H5File file(\"foo.h5\", H5F_ACC_TRUNC);\n"
-      "  return 0;\n"
-      "}")
-    try_compile(${success} ${scratch_directory} ${test_file}
-      COPY_FILE ${scratch_directory}/compiler_has_h5_cxx
-    )
-  endif()
-  if(${success})
-    file(STRINGS ${scratch_directory}/compiler_has_h5_cxx INFO_STRINGS
-      REGEX "^INFO:"
-    )
-    string(REGEX MATCH "^INFO:([0-9]+\\.[0-9]+\\.[0-9]+)(-patch([0-9]+))?"
-      INFO_VER "${INFO_STRINGS}"
-    )
-    set(${version} ${CMAKE_MATCH_1})
-    if(CMAKE_MATCH_3)
-      set(${version} ${HDF5_CXX_VERSION}.${CMAKE_MATCH_3})
-    endif()
-    set(${version} ${${version}} PARENT_SCOPE)
-
-    if(INFO_STRINGS MATCHES "INFO:PARALLEL")
-      set(${is_parallel} TRUE PARENT_SCOPE)
-    else()
-      set(${is_parallel} FALSE PARENT_SCOPE)
-    endif()
-  endif()
-endfunction()
-
-function(_HDF5_test_regular_compiler_Fortran success is_parallel)
-  if(NOT ${success})
-    set(scratch_directory
-      ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hdf5)
-    set(test_file ${scratch_directory}/cmake_hdf5_test.f90)
-    file(WRITE ${test_file}
-      "program hdf5_hello\n"
-      "  use hdf5\n"
-      "  use h5lt\n"
-      "  use h5ds\n"
-      "  integer error\n"
-      "  call h5open_f(error)\n"
-      "  call h5close_f(error)\n"
-      "end\n")
-    try_compile(${success} ${scratch_directory} ${test_file})
-    if(${success})
-      execute_process(COMMAND ${CMAKE_Fortran_COMPILER} -showconfig
-        OUTPUT_VARIABLE config_output
-        ERROR_VARIABLE config_error
-        RESULT_VARIABLE config_result
-        )
-      if(config_output MATCHES "Parallel HDF5: yes")
-        set(${is_parallel} TRUE PARENT_SCOPE)
-      else()
-        set(${is_parallel} FALSE PARENT_SCOPE)
-      endif()
-    endif()
-  endif()
-endfunction()
-
-# Invoke the HDF5 wrapper compiler.  The compiler return value is stored to the
-# return_value argument, the text output is stored to the output variable.
-function( _HDF5_invoke_compiler language output_var return_value_var version_var is_parallel_var)
-  set(is_parallel FALSE)
-  if(HDF5_USE_STATIC_LIBRARIES)
-    set(lib_type_args -noshlib)
-  else()
-    set(lib_type_args -shlib)
-  endif()
-  set(scratch_dir ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hdf5)
-  if("${language}" STREQUAL "C")
-    set(test_file ${scratch_dir}/cmake_hdf5_test.c)
-  elseif("${language}" STREQUAL "CXX")
-    set(test_file ${scratch_dir}/cmake_hdf5_test.cxx)
-  elseif("${language}" STREQUAL "Fortran")
-    set(test_file ${scratch_dir}/cmake_hdf5_test.f90)
-  endif()
-  # Verify that the compiler wrapper can actually compile: sometimes the compiler
-  # wrapper exists, but not the compiler.  E.g. Miniconda / Anaconda Python
-  execute_process(
-    COMMAND ${HDF5_${language}_COMPILER_EXECUTABLE} ${test_file}
-    RESULT_VARIABLE return_value
-    )
-  if(return_value)
-    message(STATUS
-      "HDF5 ${language} compiler wrapper is unable to compile a minimal HDF5 program.")
-  else()
-    execute_process(
-      COMMAND ${HDF5_${language}_COMPILER_EXECUTABLE} -show ${lib_type_args} ${test_file}
-      OUTPUT_VARIABLE output
-      ERROR_VARIABLE output
-      RESULT_VARIABLE return_value
-      OUTPUT_STRIP_TRAILING_WHITESPACE
-      )
-    if(return_value)
-      message(STATUS
-        "Unable to determine HDF5 ${language} flags from HDF5 wrapper.")
-    endif()
-    execute_process(
-      COMMAND ${HDF5_${language}_COMPILER_EXECUTABLE} -showconfig
-      OUTPUT_VARIABLE config_output
-      ERROR_VARIABLE config_output
-      RESULT_VARIABLE return_value
-      OUTPUT_STRIP_TRAILING_WHITESPACE
-      )
-    if(return_value)
-      message(STATUS
-        "Unable to determine HDF5 ${language} version_var from HDF5 wrapper.")
-    endif()
-    string(REGEX MATCH "HDF5 Version: ([a-zA-Z0-9\\.\\-]*)" version "${config_output}")
-    if(version)
-      string(REPLACE "HDF5 Version: " "" version "${version}")
-      string(REPLACE "-patch" "." version "${version}")
-    endif()
-    if(config_output MATCHES "Parallel HDF5: yes")
-      set(is_parallel TRUE)
-    endif()
-  endif()
-  foreach(var output return_value version is_parallel)
-    set(${${var}_var} ${${var}} PARENT_SCOPE)
-  endforeach()
-endfunction()
-
-# Parse a compile line for definitions, includes, library paths, and libraries.
-function(_HDF5_parse_compile_line compile_line_var include_paths definitions
-    library_paths libraries libraries_hl)
-
-  separate_arguments(_compile_args NATIVE_COMMAND "${${compile_line_var}}")
-
-  foreach(_arg IN LISTS _compile_args)
-    if("${_arg}" MATCHES "^-I(.*)$")
-      # include directory
-      list(APPEND include_paths "${CMAKE_MATCH_1}")
-    elseif("${_arg}" MATCHES "^-D(.*)$")
-      # compile definition
-      list(APPEND definitions "-D${CMAKE_MATCH_1}")
-    elseif("${_arg}" MATCHES "^-L(.*)$")
-      # library search path
-      list(APPEND library_paths "${CMAKE_MATCH_1}")
-    elseif("${_arg}" MATCHES "^-l(hdf5.*hl.*)$")
-      # library name (hl)
-      list(APPEND libraries_hl "${CMAKE_MATCH_1}")
-    elseif("${_arg}" MATCHES "^-l(.*)$")
-      # library name
-      list(APPEND libraries "${CMAKE_MATCH_1}")
-    elseif("${_arg}" MATCHES "^(.:)?[/\\].*\\.(a|so|dylib|sl|lib)$")
-      # library file
-      if(NOT EXISTS "${_arg}")
-        continue()
-      endif()
-      get_filename_component(_lpath "${_arg}" DIRECTORY)
-      get_filename_component(_lname "${_arg}" NAME_WE)
-      string(REGEX REPLACE "^lib" "" _lname "${_lname}")
-      list(APPEND library_paths "${_lpath}")
-      if(_lname MATCHES "hdf5.*hl")
-        list(APPEND libraries_hl "${_lname}")
-      else()
-        list(APPEND libraries "${_lname}")
-      endif()
-    endif()
-  endforeach()
-  foreach(var include_paths definitions library_paths libraries libraries_hl)
-    set(${${var}_var} ${${var}} PARENT_SCOPE)
-  endforeach()
-endfunction()
-
-# Select a preferred imported configuration from a target
-function(_HDF5_select_imported_config target imported_conf)
-    # We will first assign the value to a local variable _imported_conf, then assign
-    # it to the function argument at the end.
-    get_target_property(_imported_conf ${target} MAP_IMPORTED_CONFIG_${CMAKE_BUILD_TYPE})
-    if (NOT _imported_conf)
-        # Get available imported configurations by examining target properties
-        get_target_property(_imported_conf ${target} IMPORTED_CONFIGURATIONS)
-        if(HDF5_FIND_DEBUG)
-            message(STATUS "Found imported configurations: ${_imported_conf}")
-        endif()
-        # Find the imported configuration that we prefer.
-        # We do this by making list of configurations in order of preference,
-        # starting with ${CMAKE_BUILD_TYPE} and ending with the first imported_conf
-        set(_preferred_confs ${CMAKE_BUILD_TYPE})
-        list(GET _imported_conf 0 _fallback_conf)
-        list(APPEND _preferred_confs RELWITHDEBINFO RELEASE DEBUG ${_fallback_conf})
-        if(HDF5_FIND_DEBUG)
-            message(STATUS "Start search through imported configurations in the following order: ${_preferred_confs}")
-        endif()
-        # Now find the first of these that is present in imported_conf
-        cmake_policy(PUSH)
-        cmake_policy(SET CMP0057 NEW) # support IN_LISTS
-        foreach (_conf IN LISTS _preferred_confs)
-            if (${_conf} IN_LIST _imported_conf)
-               set(_imported_conf ${_conf})
-               break()
-            endif()
-        endforeach()
-        cmake_policy(POP)
-    endif()
-    if(HDF5_FIND_DEBUG)
-        message(STATUS "Selected imported configuration: ${_imported_conf}")
-    endif()
-    # assign value to function argument
-    set(${imported_conf} ${_imported_conf} PARENT_SCOPE)
-endfunction()
-
-
-if(NOT HDF5_ROOT)
-    set(HDF5_ROOT $ENV{HDF5_ROOT})
-endif()
-if(HDF5_ROOT)
-    set(_HDF5_SEARCH_OPTS NO_DEFAULT_PATH)
-else()
-    set(_HDF5_SEARCH_OPTS)
-endif()
-
-# Try to find HDF5 using an installed hdf5-config.cmake
-if(NOT HDF5_FOUND AND NOT HDF5_NO_FIND_PACKAGE_CONFIG_FILE)
-    find_package(HDF5 QUIET NO_MODULE
-      HINTS ${HDF5_ROOT}
-      ${_HDF5_SEARCH_OPTS}
-      )
-    if( HDF5_FOUND)
-        if(HDF5_FIND_DEBUG)
-            message(STATUS "Found HDF5 at ${HDF5_DIR} via NO_MODULE. Now trying to extract locations etc.")
-        endif()
-        set(HDF5_IS_PARALLEL ${HDF5_ENABLE_PARALLEL})
-        set(HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIR})
-        set(HDF5_LIBRARIES)
-        if (NOT TARGET hdf5 AND NOT TARGET hdf5-static AND NOT TARGET hdf5-shared)
-            # Some HDF5 versions (e.g. 1.8.18) used hdf5::hdf5 etc
-            set(_target_prefix "hdf5::")
-        endif()
-        set(HDF5_C_TARGET ${_target_prefix}hdf5)
-        set(HDF5_C_HL_TARGET ${_target_prefix}hdf5_hl)
-        set(HDF5_CXX_TARGET ${_target_prefix}hdf5_cpp)
-        set(HDF5_CXX_HL_TARGET ${_target_prefix}hdf5_hl_cpp)
-        set(HDF5_Fortran_TARGET ${_target_prefix}hdf5_fortran)
-        set(HDF5_Fortran_HL_TARGET ${_target_prefix}hdf5_hl_fortran)
-        set(HDF5_DEFINITIONS "")
-        if(HDF5_USE_STATIC_LIBRARIES)
-            set(_suffix "-static")
-        else()
-            set(_suffix "-shared")
-        endif()
-        foreach(_lang ${HDF5_LANGUAGE_BINDINGS})
-
-            #Older versions of hdf5 don't have a static/shared suffix so
-            #if we detect that occurrence clear the suffix
-            if(_suffix AND NOT TARGET ${HDF5_${_lang}_TARGET}${_suffix})
-              if(NOT TARGET ${HDF5_${_lang}_TARGET})
-                #can't find this component with or without the suffix
-                #so bail out, and let the following locate HDF5
-                set(HDF5_FOUND FALSE)
-                break()
-              endif()
-              set(_suffix "")
-            endif()
-
-            if(HDF5_FIND_DEBUG)
-                message(STATUS "Trying to get properties of target ${HDF5_${_lang}_TARGET}${_suffix}")
-            endif()
-            # Find library for this target. Complicated as on Windows with a DLL, we need to search for the import-lib.
-            _HDF5_select_imported_config(${HDF5_${_lang}_TARGET}${_suffix} _hdf5_imported_conf)
-            get_target_property(_hdf5_lang_location ${HDF5_${_lang}_TARGET}${_suffix} IMPORTED_IMPLIB_${_hdf5_imported_conf} )
-            if (NOT _hdf5_lang_location)
-                # no import lib, just try LOCATION
-                get_target_property(_hdf5_lang_location ${HDF5_${_lang}_TARGET}${_suffix} LOCATION_${_hdf5_imported_conf})
-                if (NOT _hdf5_lang_location)
-                    get_target_property(_hdf5_lang_location ${HDF5_${_lang}_TARGET}${_suffix} LOCATION)
-                endif()
-            endif()
-            if( _hdf5_lang_location )
-                set(HDF5_${_lang}_LIBRARY ${_hdf5_lang_location})
-                list(APPEND HDF5_LIBRARIES ${HDF5_${_lang}_TARGET}${_suffix})
-                set(HDF5_${_lang}_LIBRARIES ${HDF5_${_lang}_TARGET}${_suffix})
-                set(HDF5_${_lang}_FOUND TRUE)
-            endif()
-            if(HDF5_FIND_HL)
-                get_target_property(_lang_hl_location ${HDF5_${_lang}_HL_TARGET}${_suffix} IMPORTED_IMPLIB_${_hdf5_imported_conf} )
-                if (NOT _hdf5_lang_hl_location)
-                    get_target_property(_hdf5_lang_hl_location ${HDF5_${_lang}_HL_TARGET}${_suffix} LOCATION_${_hdf5_imported_conf})
-                    if (NOT _hdf5_hl_lang_location)
-                        get_target_property(_hdf5_hl_lang_location ${HDF5_${_lang}_HL_TARGET}${_suffix} LOCATION)
-                    endif()
-                endif()
-                if( _hdf5_lang_hl_location )
-                    set(HDF5_${_lang}_HL_LIBRARY ${_hdf5_lang_hl_location})
-                    list(APPEND HDF5_HL_LIBRARIES ${HDF5_${_lang}_HL_TARGET}${_suffix})
-                    set(HDF5_${_lang}_HL_LIBRARIES ${HDF5_${_lang}_HL_TARGET}${_suffix})
-                    set(HDF5_HL_FOUND TRUE)
-                endif()
-                unset(_hdf5_lang_hl_location)
-            endif()
-            unset(_hdf5_imported_conf)
-            unset(_hdf5_lang_location)
-        endforeach()
-    endif()
-endif()
-
-if(NOT HDF5_FOUND)
-  set(_HDF5_NEED_TO_SEARCH FALSE)
-  set(HDF5_COMPILER_NO_INTERROGATE TRUE)
-  # Only search for languages we've enabled
-  foreach(_lang IN LISTS HDF5_LANGUAGE_BINDINGS)
-    # First check to see if our regular compiler is one of wrappers
-    if(_lang STREQUAL "C")
-      _HDF5_test_regular_compiler_C(
-        HDF5_${_lang}_COMPILER_NO_INTERROGATE
-        HDF5_${_lang}_VERSION
-        HDF5_${_lang}_IS_PARALLEL)
-    elseif(_lang STREQUAL "CXX")
-      _HDF5_test_regular_compiler_CXX(
-        HDF5_${_lang}_COMPILER_NO_INTERROGATE
-        HDF5_${_lang}_VERSION
-        HDF5_${_lang}_IS_PARALLEL)
-    elseif(_lang STREQUAL "Fortran")
-      _HDF5_test_regular_compiler_Fortran(
-        HDF5_${_lang}_COMPILER_NO_INTERROGATE
-        HDF5_${_lang}_IS_PARALLEL)
-    else()
-      continue()
-    endif()
-    if(HDF5_${_lang}_COMPILER_NO_INTERROGATE)
-      if(HDF5_FIND_DEBUG)
-        message(STATUS "HDF5: Using hdf5 compiler wrapper for all ${_lang} compiling")
-      endif()
-      set(HDF5_${_lang}_FOUND TRUE)
-      set(HDF5_${_lang}_COMPILER_EXECUTABLE_NO_INTERROGATE
-          "${CMAKE_${_lang}_COMPILER}"
-          CACHE FILEPATH "HDF5 ${_lang} compiler wrapper")
-      set(HDF5_${_lang}_DEFINITIONS)
-      set(HDF5_${_lang}_INCLUDE_DIRS)
-      set(HDF5_${_lang}_LIBRARIES)
-      set(HDF5_${_lang}_HL_LIBRARIES)
-
-      mark_as_advanced(HDF5_${_lang}_COMPILER_EXECUTABLE_NO_INTERROGATE)
-
-      set(HDF5_${_lang}_FOUND TRUE)
-      set(HDF5_HL_FOUND TRUE)
-    else()
-      set(HDF5_COMPILER_NO_INTERROGATE FALSE)
-      # If this language isn't using the wrapper, then try to seed the
-      # search options with the wrapper
-      find_program(HDF5_${_lang}_COMPILER_EXECUTABLE
-        NAMES ${HDF5_${_lang}_COMPILER_NAMES} NAMES_PER_DIR
-        HINTS ${HDF5_ROOT}
-        PATH_SUFFIXES bin Bin
-        DOC "HDF5 ${_lang} Wrapper compiler.  Used only to detect HDF5 compile flags."
-        ${_HDF5_SEARCH_OPTS}
-      )
-      mark_as_advanced( HDF5_${_lang}_COMPILER_EXECUTABLE )
-      unset(HDF5_${_lang}_COMPILER_NAMES)
-
-      if(HDF5_${_lang}_COMPILER_EXECUTABLE)
-        _HDF5_invoke_compiler(${_lang} HDF5_${_lang}_COMPILE_LINE
-          HDF5_${_lang}_RETURN_VALUE HDF5_${_lang}_VERSION HDF5_${_lang}_IS_PARALLEL)
-        if(HDF5_${_lang}_RETURN_VALUE EQUAL 0)
-          if(HDF5_FIND_DEBUG)
-            message(STATUS "HDF5: Using hdf5 compiler wrapper to determine ${_lang} configuration")
-          endif()
-          _HDF5_parse_compile_line( HDF5_${_lang}_COMPILE_LINE
-            HDF5_${_lang}_INCLUDE_DIRS
-            HDF5_${_lang}_DEFINITIONS
-            HDF5_${_lang}_LIBRARY_DIRS
-            HDF5_${_lang}_LIBRARY_NAMES
-            HDF5_${_lang}_HL_LIBRARY_NAMES
-          )
-          set(HDF5_${_lang}_LIBRARIES)
-
-          foreach(_lib IN LISTS HDF5_${_lang}_LIBRARY_NAMES)
-            set(_HDF5_SEARCH_NAMES_LOCAL)
-            if("x${_lib}" MATCHES "hdf5")
-              # hdf5 library
-              set(_HDF5_SEARCH_OPTS_LOCAL ${_HDF5_SEARCH_OPTS})
-              if(HDF5_USE_STATIC_LIBRARIES)
-                if(WIN32)
-                  set(_HDF5_SEARCH_NAMES_LOCAL lib${_lib})
-                else()
-                  set(_HDF5_SEARCH_NAMES_LOCAL lib${_lib}.a)
-                endif()
-              endif()
-            else()
-              # external library
-              set(_HDF5_SEARCH_OPTS_LOCAL)
-            endif()
-            find_library(HDF5_${_lang}_LIBRARY_${_lib}
-              NAMES ${_HDF5_SEARCH_NAMES_LOCAL} ${_lib} NAMES_PER_DIR
-              HINTS ${HDF5_${_lang}_LIBRARY_DIRS}
-                    ${HDF5_ROOT}
-              ${_HDF5_SEARCH_OPTS_LOCAL}
-              )
-            unset(_HDF5_SEARCH_OPTS_LOCAL)
-            unset(_HDF5_SEARCH_NAMES_LOCAL)
-            if(HDF5_${_lang}_LIBRARY_${_lib})
-              list(APPEND HDF5_${_lang}_LIBRARIES ${HDF5_${_lang}_LIBRARY_${_lib}})
-            else()
-              list(APPEND HDF5_${_lang}_LIBRARIES ${_lib})
-            endif()
-          endforeach()
-          if(HDF5_FIND_HL)
-            set(HDF5_${_lang}_HL_LIBRARIES)
-            foreach(_lib IN LISTS HDF5_${_lang}_HL_LIBRARY_NAMES)
-              set(_HDF5_SEARCH_NAMES_LOCAL)
-              if("x${_lib}" MATCHES "hdf5")
-                # hdf5 library
-                set(_HDF5_SEARCH_OPTS_LOCAL ${_HDF5_SEARCH_OPTS})
-                if(HDF5_USE_STATIC_LIBRARIES)
-                  if(WIN32)
-                    set(_HDF5_SEARCH_NAMES_LOCAL lib${_lib})
-                  else()
-                    set(_HDF5_SEARCH_NAMES_LOCAL lib${_lib}.a)
-                  endif()
-                endif()
-              else()
-                # external library
-                set(_HDF5_SEARCH_OPTS_LOCAL)
-              endif()
-              find_library(HDF5_${_lang}_LIBRARY_${_lib}
-                NAMES ${_HDF5_SEARCH_NAMES_LOCAL} ${_lib} NAMES_PER_DIR
-                HINTS ${HDF5_${_lang}_LIBRARY_DIRS}
-                      ${HDF5_ROOT}
-                ${_HDF5_SEARCH_OPTS_LOCAL}
-                )
-              unset(_HDF5_SEARCH_OPTS_LOCAL)
-              unset(_HDF5_SEARCH_NAMES_LOCAL)
-              if(HDF5_${_lang}_LIBRARY_${_lib})
-                list(APPEND HDF5_${_lang}_HL_LIBRARIES ${HDF5_${_lang}_LIBRARY_${_lib}})
-              else()
-                list(APPEND HDF5_${_lang}_HL_LIBRARIES ${_lib})
-              endif()
-            endforeach()
-            set(HDF5_HL_FOUND TRUE)
-          endif()
-
-          set(HDF5_${_lang}_FOUND TRUE)
-          _HDF5_remove_duplicates_from_beginning(HDF5_${_lang}_DEFINITIONS)
-          _HDF5_remove_duplicates_from_beginning(HDF5_${_lang}_INCLUDE_DIRS)
-          _HDF5_remove_duplicates_from_beginning(HDF5_${_lang}_LIBRARIES)
-          _HDF5_remove_duplicates_from_beginning(HDF5_${_lang}_HL_LIBRARIES)
-        else()
-          set(_HDF5_NEED_TO_SEARCH TRUE)
-        endif()
-      else()
-        set(_HDF5_NEED_TO_SEARCH TRUE)
-      endif()
-    endif()
-    if(HDF5_${_lang}_VERSION)
-      if(NOT HDF5_VERSION)
-        set(HDF5_VERSION ${HDF5_${_lang}_VERSION})
-      elseif(NOT HDF5_VERSION VERSION_EQUAL HDF5_${_lang}_VERSION)
-        message(WARNING "HDF5 Version found for language ${_lang}, ${HDF5_${_lang}_VERSION} is different than previously found version ${HDF5_VERSION}")
-      endif()
-    endif()
-    if(DEFINED HDF5_${_lang}_IS_PARALLEL)
-      if(NOT DEFINED HDF5_IS_PARALLEL)
-        set(HDF5_IS_PARALLEL ${HDF5_${_lang}_IS_PARALLEL})
-      elseif(NOT HDF5_IS_PARALLEL AND HDF5_${_lang}_IS_PARALLEL)
-        message(WARNING "HDF5 found for language ${_lang} is parallel but previously found language is not parallel.")
-      elseif(HDF5_IS_PARALLEL AND NOT HDF5_${_lang}_IS_PARALLEL)
-        message(WARNING "HDF5 found for language ${_lang} is not parallel but previously found language is parallel.")
-      endif()
-    endif()
-  endforeach()
-  unset(_lib)
-else()
-  set(_HDF5_NEED_TO_SEARCH TRUE)
-endif()
-
-if(NOT HDF5_FOUND AND HDF5_COMPILER_NO_INTERROGATE)
-  # No arguments necessary, all languages can use the compiler wrappers
-  set(HDF5_FOUND TRUE)
-  set(HDF5_METHOD "Included by compiler wrappers")
-  set(HDF5_REQUIRED_VARS HDF5_METHOD)
-elseif(NOT HDF5_FOUND AND NOT _HDF5_NEED_TO_SEARCH)
-  # Compiler wrappers aren't being used by the build but were found and used
-  # to determine necessary include and library flags
-  set(HDF5_INCLUDE_DIRS)
-  set(HDF5_LIBRARIES)
-  set(HDF5_HL_LIBRARIES)
-  foreach(_lang IN LISTS HDF5_LANGUAGE_BINDINGS)
-    if(HDF5_${_lang}_FOUND)
-      if(NOT HDF5_${_lang}_COMPILER_NO_INTERROGATE)
-        list(APPEND HDF5_DEFINITIONS ${HDF5_${_lang}_DEFINITIONS})
-        list(APPEND HDF5_INCLUDE_DIRS ${HDF5_${_lang}_INCLUDE_DIRS})
-        list(APPEND HDF5_LIBRARIES ${HDF5_${_lang}_LIBRARIES})
-        if(HDF5_FIND_HL)
-          list(APPEND HDF5_HL_LIBRARIES ${HDF5_${_lang}_HL_LIBRARIES})
-        endif()
-      endif()
-    endif()
-  endforeach()
-  _HDF5_remove_duplicates_from_beginning(HDF5_DEFINITIONS)
-  _HDF5_remove_duplicates_from_beginning(HDF5_INCLUDE_DIRS)
-  _HDF5_remove_duplicates_from_beginning(HDF5_LIBRARIES)
-  _HDF5_remove_duplicates_from_beginning(HDF5_HL_LIBRARIES)
-  set(HDF5_FOUND TRUE)
-  set(HDF5_REQUIRED_VARS HDF5_LIBRARIES)
-  if(HDF5_FIND_HL)
-    list(APPEND HDF5_REQUIRED_VARS HDF5_HL_LIBRARIES)
-  endif()
-endif()
-
-find_program( HDF5_DIFF_EXECUTABLE
-    NAMES h5diff
-    HINTS ${HDF5_ROOT}
-    PATH_SUFFIXES bin Bin
-    ${_HDF5_SEARCH_OPTS}
-    DOC "HDF5 file differencing tool." )
-mark_as_advanced( HDF5_DIFF_EXECUTABLE )
-
-if( NOT HDF5_FOUND )
-    # seed the initial lists of libraries to find with items we know we need
-    set(HDF5_C_LIBRARY_NAMES          hdf5)
-    set(HDF5_C_HL_LIBRARY_NAMES       hdf5_hl ${HDF5_C_LIBRARY_NAMES} )
-
-    set(HDF5_CXX_LIBRARY_NAMES        hdf5_cpp    ${HDF5_C_LIBRARY_NAMES})
-    set(HDF5_CXX_HL_LIBRARY_NAMES     hdf5_hl_cpp ${HDF5_C_HL_LIBRARY_NAMES} ${HDF5_CXX_LIBRARY_NAMES})
-
-    set(HDF5_Fortran_LIBRARY_NAMES    hdf5_fortran   ${HDF5_C_LIBRARY_NAMES})
-    set(HDF5_Fortran_HL_LIBRARY_NAMES hdf5hl_fortran ${HDF5_C_HL_LIBRARY_NAMES} ${HDF5_Fortran_LIBRARY_NAMES})
-
-    # suffixes as seen on Linux, MSYS2, ...
-    set(_lib_suffixes hdf5)
-    if(NOT HDF5_PREFER_PARALLEL)
-      list(APPEND _lib_suffixes hdf5/serial)
-    endif()
-    if(HDF5_USE_STATIC_LIBRARIES)
-      set(_inc_suffixes include/static)
-    else()
-      set(_inc_suffixes include/shared)
-    endif()
-
-    foreach(_lang IN LISTS HDF5_LANGUAGE_BINDINGS)
-        # find the HDF5 include directories
-        if("${_lang}" STREQUAL "Fortran")
-            set(HDF5_INCLUDE_FILENAME hdf5.mod HDF5.mod)
-        elseif("${_lang}" STREQUAL "CXX")
-            set(HDF5_INCLUDE_FILENAME H5Cpp.h)
-        else()
-            set(HDF5_INCLUDE_FILENAME hdf5.h)
-        endif()
-
-        find_path(HDF5_${_lang}_INCLUDE_DIR ${HDF5_INCLUDE_FILENAME}
-            HINTS ${HDF5_ROOT}
-            PATHS $ENV{HOME}/.local/include
-            PATH_SUFFIXES include Include ${_inc_suffixes} ${_lib_suffixes}
-            ${_HDF5_SEARCH_OPTS}
-        )
-        mark_as_advanced(HDF5_${_lang}_INCLUDE_DIR)
-        # set the _DIRS variable as this is what the user will normally use
-        set(HDF5_${_lang}_INCLUDE_DIRS ${HDF5_${_lang}_INCLUDE_DIR})
-        list(APPEND HDF5_INCLUDE_DIRS ${HDF5_${_lang}_INCLUDE_DIR})
-
-        # find the HDF5 libraries
-        foreach(LIB IN LISTS HDF5_${_lang}_LIBRARY_NAMES)
-            if(HDF5_USE_STATIC_LIBRARIES)
-                # According to bug 1643 on the CMake bug tracker, this is the
-                # preferred method for searching for a static library.
-                # See https://gitlab.kitware.com/cmake/cmake/-/issues/1643.  We search
-                # first for the full static library name, but fall back to a
-                # generic search on the name if the static search fails.
-                set( THIS_LIBRARY_SEARCH_DEBUG
-                    lib${LIB}d.a lib${LIB}_debug.a lib${LIB}d lib${LIB}_D lib${LIB}_debug
-                    lib${LIB}d-static.a lib${LIB}_debug-static.a ${LIB}d-static ${LIB}_D-static ${LIB}_debug-static )
-                set( THIS_LIBRARY_SEARCH_RELEASE lib${LIB}.a lib${LIB} lib${LIB}-static.a ${LIB}-static)
-            else()
-                set( THIS_LIBRARY_SEARCH_DEBUG ${LIB}d ${LIB}_D ${LIB}_debug ${LIB}d-shared ${LIB}_D-shared ${LIB}_debug-shared)
-                set( THIS_LIBRARY_SEARCH_RELEASE ${LIB} ${LIB}-shared)
-                if(WIN32)
-                  list(APPEND HDF5_DEFINITIONS "-DH5_BUILT_AS_DYNAMIC_LIB")
-                endif()
-            endif()
-            find_library(HDF5_${LIB}_LIBRARY_DEBUG
-                NAMES ${THIS_LIBRARY_SEARCH_DEBUG}
-                HINTS ${HDF5_ROOT} PATH_SUFFIXES lib Lib ${_lib_suffixes}
-                ${_HDF5_SEARCH_OPTS}
-            )
-            find_library(HDF5_${LIB}_LIBRARY_RELEASE
-                NAMES ${THIS_LIBRARY_SEARCH_RELEASE}
-                HINTS ${HDF5_ROOT} PATH_SUFFIXES lib Lib ${_lib_suffixes}
-                ${_HDF5_SEARCH_OPTS}
-            )
-
-            select_library_configurations( HDF5_${LIB} )
-            list(APPEND HDF5_${_lang}_LIBRARIES ${HDF5_${LIB}_LIBRARY})
-        endforeach()
-        if(HDF5_${_lang}_LIBRARIES)
-            set(HDF5_${_lang}_FOUND TRUE)
-        endif()
-
-        # Append the libraries for this language binding to the list of all
-        # required libraries.
-        list(APPEND HDF5_LIBRARIES ${HDF5_${_lang}_LIBRARIES})
-
-        if(HDF5_FIND_HL)
-            foreach(LIB IN LISTS HDF5_${_lang}_HL_LIBRARY_NAMES)
-                if(HDF5_USE_STATIC_LIBRARIES)
-                    # According to bug 1643 on the CMake bug tracker, this is the
-                    # preferred method for searching for a static library.
-                    # See https://gitlab.kitware.com/cmake/cmake/-/issues/1643.  We search
-                    # first for the full static library name, but fall back to a
-                    # generic search on the name if the static search fails.
-                    set( THIS_LIBRARY_SEARCH_DEBUG
-                        lib${LIB}d.a lib${LIB}_debug.a lib${LIB}d lib${LIB}_D lib${LIB}_debug
-                        lib${LIB}d-static.a lib${LIB}_debug-static.a lib${LIB}d-static lib${LIB}_D-static lib${LIB}_debug-static )
-                    set( THIS_LIBRARY_SEARCH_RELEASE lib${LIB}.a lib${LIB} lib${LIB}-static.a lib${LIB}-static)
-                else()
-                    set( THIS_LIBRARY_SEARCH_DEBUG ${LIB}d ${LIB}_D ${LIB}_debug ${LIB}d-shared ${LIB}_D-shared ${LIB}_debug-shared)
-                    set( THIS_LIBRARY_SEARCH_RELEASE ${LIB} ${LIB}-shared)
-                endif()
-                find_library(HDF5_${LIB}_LIBRARY_DEBUG
-                    NAMES ${THIS_LIBRARY_SEARCH_DEBUG}
-                    HINTS ${HDF5_ROOT} PATH_SUFFIXES lib Lib ${_lib_suffixes}
-                    ${_HDF5_SEARCH_OPTS}
-                )
-                find_library(HDF5_${LIB}_LIBRARY_RELEASE
-                    NAMES ${THIS_LIBRARY_SEARCH_RELEASE}
-                    HINTS ${HDF5_ROOT} PATH_SUFFIXES lib Lib ${_lib_suffixes}
-                    ${_HDF5_SEARCH_OPTS}
-                )
-
-                select_library_configurations( HDF5_${LIB} )
-                list(APPEND HDF5_${_lang}_HL_LIBRARIES ${HDF5_${LIB}_LIBRARY})
-            endforeach()
-
-            # Append the libraries for this language binding to the list of all
-            # required libraries.
-            list(APPEND HDF5_HL_LIBRARIES ${HDF5_${_lang}_HL_LIBRARIES})
-        endif()
-    endforeach()
-    if(HDF5_FIND_HL AND HDF5_HL_LIBRARIES)
-        set(HDF5_HL_FOUND TRUE)
-    endif()
-
-    _HDF5_remove_duplicates_from_beginning(HDF5_DEFINITIONS)
-    _HDF5_remove_duplicates_from_beginning(HDF5_INCLUDE_DIRS)
-    _HDF5_remove_duplicates_from_beginning(HDF5_LIBRARIES)
-    _HDF5_remove_duplicates_from_beginning(HDF5_HL_LIBRARIES)
-
-    # If the HDF5 include directory was found, open H5pubconf.h to determine if
-    # HDF5 was compiled with parallel IO support
-    set( HDF5_IS_PARALLEL FALSE )
-    set( HDF5_VERSION "" )
-    foreach( _dir IN LISTS HDF5_INCLUDE_DIRS )
-      foreach(_hdr "${_dir}/H5pubconf.h" "${_dir}/H5pubconf-64.h" "${_dir}/H5pubconf-32.h")
-        if( EXISTS "${_hdr}" )
-            file( STRINGS "${_hdr}"
-                HDF5_HAVE_PARALLEL_DEFINE
-                REGEX "HAVE_PARALLEL 1" )
-            if( HDF5_HAVE_PARALLEL_DEFINE )
-                set( HDF5_IS_PARALLEL TRUE )
-            endif()
-            unset(HDF5_HAVE_PARALLEL_DEFINE)
-
-            file( STRINGS "${_hdr}"
-                HDF5_VERSION_DEFINE
-                REGEX "^[ \t]*#[ \t]*define[ \t]+H5_VERSION[ \t]+" )
-            if( "${HDF5_VERSION_DEFINE}" MATCHES
-                "H5_VERSION[ \t]+\"([0-9]+\\.[0-9]+\\.[0-9]+)(-patch([0-9]+))?\"" )
-                set( HDF5_VERSION "${CMAKE_MATCH_1}" )
-                if( CMAKE_MATCH_3 )
-                  set( HDF5_VERSION ${HDF5_VERSION}.${CMAKE_MATCH_3})
-                endif()
-            endif()
-            unset(HDF5_VERSION_DEFINE)
-        endif()
-      endforeach()
-    endforeach()
-    unset(_hdr)
-    unset(_dir)
-    set( HDF5_IS_PARALLEL ${HDF5_IS_PARALLEL} CACHE BOOL
-        "HDF5 library compiled with parallel IO support" )
-    mark_as_advanced( HDF5_IS_PARALLEL )
-
-    set(HDF5_REQUIRED_VARS HDF5_LIBRARIES HDF5_INCLUDE_DIRS)
-    if(HDF5_FIND_HL)
-        list(APPEND HDF5_REQUIRED_VARS HDF5_HL_LIBRARIES)
-    endif()
-endif()
-
-# For backwards compatibility we set HDF5_INCLUDE_DIR to the value of
-# HDF5_INCLUDE_DIRS
-if( HDF5_INCLUDE_DIRS )
-  set( HDF5_INCLUDE_DIR "${HDF5_INCLUDE_DIRS}" )
-endif()
-
-# If HDF5_REQUIRED_VARS is empty at this point, then it's likely that
-# something external is trying to explicitly pass already found
-# locations
-if(NOT HDF5_REQUIRED_VARS)
-    set(HDF5_REQUIRED_VARS HDF5_LIBRARIES HDF5_INCLUDE_DIRS)
-endif()
-
-find_package_handle_standard_args(HDF5
-    REQUIRED_VARS ${HDF5_REQUIRED_VARS}
-    VERSION_VAR   HDF5_VERSION
-    HANDLE_COMPONENTS
-)
-
-unset(_HDF5_SEARCH_OPTS)
-
-if( HDF5_FOUND AND NOT HDF5_DIR)
-  # hide HDF5_DIR for the non-advanced user to avoid confusion with
-  # HDF5_DIR-NOT_FOUND while HDF5 was found.
-  mark_as_advanced(HDF5_DIR)
-endif()
-
-if (HDF5_FIND_DEBUG)
-  message(STATUS "HDF5_DIR: ${HDF5_DIR}")
-  message(STATUS "HDF5_DEFINITIONS: ${HDF5_DEFINITIONS}")
-  message(STATUS "HDF5_INCLUDE_DIRS: ${HDF5_INCLUDE_DIRS}")
-  message(STATUS "HDF5_LIBRARIES: ${HDF5_LIBRARIES}")
-  message(STATUS "HDF5_HL_LIBRARIES: ${HDF5_HL_LIBRARIES}")
-  foreach(_lang IN LISTS HDF5_LANGUAGE_BINDINGS)
-    message(STATUS "HDF5_${_lang}_DEFINITIONS: ${HDF5_${_lang}_DEFINITIONS}")
-    message(STATUS "HDF5_${_lang}_INCLUDE_DIR: ${HDF5_${_lang}_INCLUDE_DIR}")
-    message(STATUS "HDF5_${_lang}_INCLUDE_DIRS: ${HDF5_${_lang}_INCLUDE_DIRS}")
-    message(STATUS "HDF5_${_lang}_LIBRARY: ${HDF5_${_lang}_LIBRARY}")
-    message(STATUS "HDF5_${_lang}_LIBRARIES: ${HDF5_${_lang}_LIBRARIES}")
-    message(STATUS "HDF5_${_lang}_HL_LIBRARY: ${HDF5_${_lang}_HL_LIBRARY}")
-    message(STATUS "HDF5_${_lang}_HL_LIBRARIES: ${HDF5_${_lang}_HL_LIBRARIES}")
-  endforeach()
-endif()
-unset(_lang)
-unset(_HDF5_NEED_TO_SEARCH)
diff --git a/share/cmake-3.18/Modules/FindHg.cmake b/share/cmake-3.18/Modules/FindHg.cmake
deleted file mode 100644
index 1358363..0000000
--- a/share/cmake-3.18/Modules/FindHg.cmake
+++ /dev/null
@@ -1,97 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindHg
-------
-
-Extract information from a mercurial working copy.
-
-The module defines the following variables:
-
-::
-
-   HG_EXECUTABLE - path to mercurial command line client (hg)
-   HG_FOUND - true if the command line client was found
-   HG_VERSION_STRING - the version of mercurial found
-
-If the command line client executable is found the following macro is defined:
-
-::
-
-  HG_WC_INFO(<dir> <var-prefix>)
-
-Hg_WC_INFO extracts information of a mercurial working copy
-at a given location.  This macro defines the following variables:
-
-::
-
-  <var-prefix>_WC_CHANGESET - current changeset
-  <var-prefix>_WC_REVISION - current revision
-
-Example usage:
-
-::
-
-   find_package(Hg)
-   if(HG_FOUND)
-     message("hg found: ${HG_EXECUTABLE}")
-     HG_WC_INFO(${PROJECT_SOURCE_DIR} Project)
-     message("Current revision is ${Project_WC_REVISION}")
-     message("Current changeset is ${Project_WC_CHANGESET}")
-   endif()
-#]=======================================================================]
-
-find_program(HG_EXECUTABLE
-  NAMES hg
-  PATHS
-    [HKEY_LOCAL_MACHINE\\Software\\TortoiseHG]
-  PATH_SUFFIXES Mercurial
-  DOC "hg command line client"
-  )
-mark_as_advanced(HG_EXECUTABLE)
-
-if(HG_EXECUTABLE)
-  set(_saved_lc_all "$ENV{LC_ALL}")
-  set(ENV{LC_ALL} "C")
-
-  set(_saved_language "$ENV{LANGUAGE}")
-  set(ENV{LANGUAGE})
-
-  execute_process(COMMAND ${HG_EXECUTABLE} --version
-                  OUTPUT_VARIABLE hg_version
-                  ERROR_QUIET
-                  RESULT_VARIABLE hg_result
-                  OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-  set(ENV{LC_ALL} ${_saved_lc_all})
-  set(ENV{LANGUAGE} ${_saved_language})
-
-  if(hg_result MATCHES "is not a valid Win32 application")
-    set_property(CACHE HG_EXECUTABLE PROPERTY VALUE "HG_EXECUTABLE-NOTFOUND")
-  endif()
-  if(hg_version MATCHES "^Mercurial Distributed SCM \\(version ([0-9][^)]*)\\)")
-    set(HG_VERSION_STRING "${CMAKE_MATCH_1}")
-  endif()
-  unset(hg_version)
-
-  macro(HG_WC_INFO dir prefix)
-    execute_process(COMMAND ${HG_EXECUTABLE} id -i -n
-      WORKING_DIRECTORY ${dir}
-      RESULT_VARIABLE hg_id_result
-      ERROR_VARIABLE hg_id_error
-      OUTPUT_VARIABLE ${prefix}_WC_DATA
-      OUTPUT_STRIP_TRAILING_WHITESPACE)
-    if(NOT ${hg_id_result} EQUAL 0)
-      message(SEND_ERROR "Command \"${HG_EXECUTBALE} id -n\" in directory ${dir} failed with output:\n${hg_id_error}")
-    endif()
-
-    string(REGEX REPLACE "([0-9a-f]+)\\+? [0-9]+\\+?" "\\1" ${prefix}_WC_CHANGESET ${${prefix}_WC_DATA})
-    string(REGEX REPLACE "[0-9a-f]+\\+? ([0-9]+)\\+?" "\\1" ${prefix}_WC_REVISION ${${prefix}_WC_DATA})
-  endmacro(HG_WC_INFO)
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(Hg
-                                  REQUIRED_VARS HG_EXECUTABLE
-                                  VERSION_VAR HG_VERSION_STRING)
diff --git a/share/cmake-3.18/Modules/FindICU.cmake b/share/cmake-3.18/Modules/FindICU.cmake
deleted file mode 100644
index 38081f5..0000000
--- a/share/cmake-3.18/Modules/FindICU.cmake
+++ /dev/null
@@ -1,428 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindICU
--------
-
-Find the International Components for Unicode (ICU) libraries and
-programs.
-
-This module supports multiple components.
-Components can include any of: ``data``, ``i18n``, ``io``, ``le``,
-``lx``, ``test``, ``tu`` and ``uc``.
-
-Note that on Windows ``data`` is named ``dt`` and ``i18n`` is named
-``in``; any of the names may be used, and the appropriate
-platform-specific library name will be automatically selected.
-
-This module reports information about the ICU installation in
-several variables.  General variables::
-
-  ICU_VERSION - ICU release version
-  ICU_FOUND - true if the main programs and libraries were found
-  ICU_LIBRARIES - component libraries to be linked
-  ICU_INCLUDE_DIRS - the directories containing the ICU headers
-
-Imported targets::
-
-  ICU::<C>
-
-Where ``<C>`` is the name of an ICU component, for example
-``ICU::i18n``.
-
-ICU programs are reported in::
-
-  ICU_GENCNVAL_EXECUTABLE - path to gencnval executable
-  ICU_ICUINFO_EXECUTABLE - path to icuinfo executable
-  ICU_GENBRK_EXECUTABLE - path to genbrk executable
-  ICU_ICU-CONFIG_EXECUTABLE - path to icu-config executable
-  ICU_GENRB_EXECUTABLE - path to genrb executable
-  ICU_GENDICT_EXECUTABLE - path to gendict executable
-  ICU_DERB_EXECUTABLE - path to derb executable
-  ICU_PKGDATA_EXECUTABLE - path to pkgdata executable
-  ICU_UCONV_EXECUTABLE - path to uconv executable
-  ICU_GENCFU_EXECUTABLE - path to gencfu executable
-  ICU_MAKECONV_EXECUTABLE - path to makeconv executable
-  ICU_GENNORM2_EXECUTABLE - path to gennorm2 executable
-  ICU_GENCCODE_EXECUTABLE - path to genccode executable
-  ICU_GENSPREP_EXECUTABLE - path to gensprep executable
-  ICU_ICUPKG_EXECUTABLE - path to icupkg executable
-  ICU_GENCMN_EXECUTABLE - path to gencmn executable
-
-ICU component libraries are reported in::
-
-  ICU_<C>_FOUND - ON if component was found
-  ICU_<C>_LIBRARIES - libraries for component
-
-ICU datafiles are reported in::
-
-  ICU_MAKEFILE_INC - Makefile.inc
-  ICU_PKGDATA_INC - pkgdata.inc
-
-Note that ``<C>`` is the uppercased name of the component.
-
-This module reads hints about search results from::
-
-  ICU_ROOT - the root of the ICU installation
-
-The environment variable ``ICU_ROOT`` may also be used; the
-ICU_ROOT variable takes precedence.
-
-The following cache variables may also be set::
-
-  ICU_<P>_EXECUTABLE - the path to executable <P>
-  ICU_INCLUDE_DIR - the directory containing the ICU headers
-  ICU_<C>_LIBRARY - the library for component <C>
-
-.. note::
-
-  In most cases none of the above variables will require setting,
-  unless multiple ICU versions are available and a specific version
-  is required.
-
-Other variables one may set to control this module are::
-
-  ICU_DEBUG - Set to ON to enable debug output from FindICU.
-#]=======================================================================]
-
-# Written by Roger Leigh <rleigh@codelibre.net>
-
-set(icu_programs
-  gencnval
-  icuinfo
-  genbrk
-  icu-config
-  genrb
-  gendict
-  derb
-  pkgdata
-  uconv
-  gencfu
-  makeconv
-  gennorm2
-  genccode
-  gensprep
-  icupkg
-  gencmn)
-
-set(icu_data
-  Makefile.inc
-  pkgdata.inc)
-
-# The ICU checks are contained in a function due to the large number
-# of temporary variables needed.
-function(_ICU_FIND)
-  # Set up search paths, taking compiler into account.  Search ICU_ROOT,
-  # with ICU_ROOT in the environment as a fallback if unset.
-  if(ICU_ROOT)
-    list(APPEND icu_roots "${ICU_ROOT}")
-  else()
-    if(NOT "$ENV{ICU_ROOT}" STREQUAL "")
-      file(TO_CMAKE_PATH "$ENV{ICU_ROOT}" NATIVE_PATH)
-      list(APPEND icu_roots "${NATIVE_PATH}")
-      set(ICU_ROOT "${NATIVE_PATH}"
-          CACHE PATH "Location of the ICU installation" FORCE)
-    endif()
-  endif()
-
-  # Find include directory
-  list(APPEND icu_include_suffixes "include")
-  find_path(ICU_INCLUDE_DIR
-            NAMES "unicode/utypes.h"
-            HINTS ${icu_roots}
-            PATH_SUFFIXES ${icu_include_suffixes}
-            DOC "ICU include directory")
-  set(ICU_INCLUDE_DIR "${ICU_INCLUDE_DIR}" PARENT_SCOPE)
-
-  # Get version
-  if(ICU_INCLUDE_DIR AND EXISTS "${ICU_INCLUDE_DIR}/unicode/uvernum.h")
-    file(STRINGS "${ICU_INCLUDE_DIR}/unicode/uvernum.h" icu_header_str
-      REGEX "^#define[\t ]+U_ICU_VERSION[\t ]+\".*\".*")
-
-    string(REGEX REPLACE "^#define[\t ]+U_ICU_VERSION[\t ]+\"([^ \\n]*)\".*"
-      "\\1" icu_version_string "${icu_header_str}")
-    set(ICU_VERSION "${icu_version_string}")
-    set(ICU_VERSION "${icu_version_string}" PARENT_SCOPE)
-    unset(icu_header_str)
-    unset(icu_version_string)
-  endif()
-
-  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-    # 64-bit binary directory
-    set(_bin64 "bin64")
-    # 64-bit library directory
-    set(_lib64 "lib64")
-  endif()
-
-
-  # Find all ICU programs
-  list(APPEND icu_binary_suffixes "${_bin64}" "bin" "sbin")
-  foreach(program ${icu_programs})
-    string(TOUPPER "${program}" program_upcase)
-    set(cache_var "ICU_${program_upcase}_EXECUTABLE")
-    set(program_var "ICU_${program_upcase}_EXECUTABLE")
-    find_program("${cache_var}"
-      NAMES "${program}"
-      HINTS ${icu_roots}
-      PATH_SUFFIXES ${icu_binary_suffixes}
-      DOC "ICU ${program} executable"
-      NO_PACKAGE_ROOT_PATH
-      )
-    mark_as_advanced(cache_var)
-    set("${program_var}" "${${cache_var}}" PARENT_SCOPE)
-  endforeach()
-
-  # Find all ICU libraries
-  list(APPEND icu_library_suffixes "${_lib64}" "lib")
-  set(ICU_REQUIRED_LIBS_FOUND ON)
-  set(static_prefix )
-  # static icu libraries compiled with MSVC have the prefix 's'
-  if(MSVC)
-    set(static_prefix "s")
-  endif()
-  foreach(component ${ICU_FIND_COMPONENTS})
-    string(TOUPPER "${component}" component_upcase)
-    set(component_cache "ICU_${component_upcase}_LIBRARY")
-    set(component_cache_release "${component_cache}_RELEASE")
-    set(component_cache_debug "${component_cache}_DEBUG")
-    set(component_found "${component_upcase}_FOUND")
-    set(component_libnames "icu${component}")
-    set(component_debug_libnames "icu${component}d")
-
-    # Special case deliberate library naming mismatches between Unix
-    # and Windows builds
-    unset(component_libnames)
-    unset(component_debug_libnames)
-    list(APPEND component_libnames "icu${component}")
-    list(APPEND component_debug_libnames "icu${component}d")
-    if(component STREQUAL "data")
-      list(APPEND component_libnames "icudt")
-      # Note there is no debug variant at present
-      list(APPEND component_debug_libnames "icudtd")
-    endif()
-    if(component STREQUAL "dt")
-      list(APPEND component_libnames "icudata")
-      # Note there is no debug variant at present
-      list(APPEND component_debug_libnames "icudatad")
-    endif()
-    if(component STREQUAL "i18n")
-      list(APPEND component_libnames "icuin")
-      list(APPEND component_debug_libnames "icuind")
-    endif()
-    if(component STREQUAL "in")
-      list(APPEND component_libnames "icui18n")
-      list(APPEND component_debug_libnames "icui18nd")
-    endif()
-
-    if(static_prefix)
-      unset(static_component_libnames)
-      unset(static_component_debug_libnames)
-      foreach(component_libname ${component_libnames})
-        list(APPEND static_component_libnames
-          ${static_prefix}${component_libname})
-      endforeach()
-      foreach(component_libname ${component_debug_libnames})
-        list(APPEND static_component_debug_libnames
-          ${static_prefix}${component_libname})
-      endforeach()
-      list(APPEND component_libnames ${static_component_libnames})
-      list(APPEND component_debug_libnames ${static_component_debug_libnames})
-    endif()
-    find_library("${component_cache_release}"
-      NAMES ${component_libnames}
-      HINTS ${icu_roots}
-      PATH_SUFFIXES ${icu_library_suffixes}
-      DOC "ICU ${component} library (release)"
-      NO_PACKAGE_ROOT_PATH
-      )
-    find_library("${component_cache_debug}"
-      NAMES ${component_debug_libnames}
-      HINTS ${icu_roots}
-      PATH_SUFFIXES ${icu_library_suffixes}
-      DOC "ICU ${component} library (debug)"
-      NO_PACKAGE_ROOT_PATH
-      )
-    include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-    select_library_configurations(ICU_${component_upcase})
-    mark_as_advanced("${component_cache_release}" "${component_cache_debug}")
-    if(${component_cache})
-      set("${component_found}" ON)
-      list(APPEND ICU_LIBRARY "${${component_cache}}")
-    endif()
-    mark_as_advanced("${component_found}")
-    set("${component_cache}" "${${component_cache}}" PARENT_SCOPE)
-    set("${component_found}" "${${component_found}}" PARENT_SCOPE)
-    if(${component_found})
-      if (ICU_FIND_REQUIRED_${component})
-        list(APPEND ICU_LIBS_FOUND "${component} (required)")
-      else()
-        list(APPEND ICU_LIBS_FOUND "${component} (optional)")
-      endif()
-    else()
-      if (ICU_FIND_REQUIRED_${component})
-        set(ICU_REQUIRED_LIBS_FOUND OFF)
-        list(APPEND ICU_LIBS_NOTFOUND "${component} (required)")
-      else()
-        list(APPEND ICU_LIBS_NOTFOUND "${component} (optional)")
-      endif()
-    endif()
-  endforeach()
-  set(_ICU_REQUIRED_LIBS_FOUND "${ICU_REQUIRED_LIBS_FOUND}" PARENT_SCOPE)
-  set(ICU_LIBRARY "${ICU_LIBRARY}" PARENT_SCOPE)
-
-  # Find all ICU data files
-  if(CMAKE_LIBRARY_ARCHITECTURE)
-    list(APPEND icu_data_suffixes
-      "${_lib64}/${CMAKE_LIBRARY_ARCHITECTURE}/icu/${ICU_VERSION}"
-      "lib/${CMAKE_LIBRARY_ARCHITECTURE}/icu/${ICU_VERSION}"
-      "${_lib64}/${CMAKE_LIBRARY_ARCHITECTURE}/icu"
-      "lib/${CMAKE_LIBRARY_ARCHITECTURE}/icu")
-  endif()
-  list(APPEND icu_data_suffixes
-    "${_lib64}/icu/${ICU_VERSION}"
-    "lib/icu/${ICU_VERSION}"
-    "${_lib64}/icu"
-    "lib/icu")
-  foreach(data ${icu_data})
-    string(TOUPPER "${data}" data_upcase)
-    string(REPLACE "." "_" data_upcase "${data_upcase}")
-    set(cache_var "ICU_${data_upcase}")
-    set(data_var "ICU_${data_upcase}")
-    find_file("${cache_var}"
-      NAMES "${data}"
-      HINTS ${icu_roots}
-      PATH_SUFFIXES ${icu_data_suffixes}
-      DOC "ICU ${data} data file")
-    mark_as_advanced(cache_var)
-    set("${data_var}" "${${cache_var}}" PARENT_SCOPE)
-  endforeach()
-
-  if(NOT ICU_FIND_QUIETLY)
-    if(ICU_LIBS_FOUND)
-      message(STATUS "Found the following ICU libraries:")
-      foreach(found ${ICU_LIBS_FOUND})
-        message(STATUS "  ${found}")
-      endforeach()
-    endif()
-    if(ICU_LIBS_NOTFOUND)
-      message(STATUS "The following ICU libraries were not found:")
-      foreach(notfound ${ICU_LIBS_NOTFOUND})
-        message(STATUS "  ${notfound}")
-      endforeach()
-    endif()
-  endif()
-
-  if(ICU_DEBUG)
-    message(STATUS "--------FindICU.cmake search debug--------")
-    message(STATUS "ICU binary path search order: ${icu_roots}")
-    message(STATUS "ICU include path search order: ${icu_roots}")
-    message(STATUS "ICU library path search order: ${icu_roots}")
-    message(STATUS "----------------")
-  endif()
-endfunction()
-
-_ICU_FIND()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(ICU
-                                  FOUND_VAR ICU_FOUND
-                                  REQUIRED_VARS ICU_INCLUDE_DIR
-                                                ICU_LIBRARY
-                                                _ICU_REQUIRED_LIBS_FOUND
-                                  VERSION_VAR ICU_VERSION
-                                  FAIL_MESSAGE "Failed to find all ICU components")
-
-unset(_ICU_REQUIRED_LIBS_FOUND)
-
-if(ICU_FOUND)
-  set(ICU_INCLUDE_DIRS "${ICU_INCLUDE_DIR}")
-  set(ICU_LIBRARIES "${ICU_LIBRARY}")
-  foreach(_ICU_component ${ICU_FIND_COMPONENTS})
-    string(TOUPPER "${_ICU_component}" _ICU_component_upcase)
-    set(_ICU_component_cache "ICU_${_ICU_component_upcase}_LIBRARY")
-    set(_ICU_component_cache_release "ICU_${_ICU_component_upcase}_LIBRARY_RELEASE")
-    set(_ICU_component_cache_debug "ICU_${_ICU_component_upcase}_LIBRARY_DEBUG")
-    set(_ICU_component_lib "ICU_${_ICU_component_upcase}_LIBRARIES")
-    set(_ICU_component_found "${_ICU_component_upcase}_FOUND")
-    set(_ICU_imported_target "ICU::${_ICU_component}")
-    if(${_ICU_component_found})
-      set("${_ICU_component_lib}" "${${_ICU_component_cache}}")
-      if(NOT TARGET ${_ICU_imported_target})
-        add_library(${_ICU_imported_target} UNKNOWN IMPORTED)
-        if(ICU_INCLUDE_DIR)
-          set_target_properties(${_ICU_imported_target} PROPERTIES
-            INTERFACE_INCLUDE_DIRECTORIES "${ICU_INCLUDE_DIR}")
-        endif()
-        if(EXISTS "${${_ICU_component_cache}}")
-          set_target_properties(${_ICU_imported_target} PROPERTIES
-            IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
-            IMPORTED_LOCATION "${${_ICU_component_cache}}")
-        endif()
-        if(EXISTS "${${_ICU_component_cache_release}}")
-          set_property(TARGET ${_ICU_imported_target} APPEND PROPERTY
-            IMPORTED_CONFIGURATIONS RELEASE)
-          set_target_properties(${_ICU_imported_target} PROPERTIES
-            IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
-            IMPORTED_LOCATION_RELEASE "${${_ICU_component_cache_release}}")
-        endif()
-        if(EXISTS "${${_ICU_component_cache_debug}}")
-          set_property(TARGET ${_ICU_imported_target} APPEND PROPERTY
-            IMPORTED_CONFIGURATIONS DEBUG)
-          set_target_properties(${_ICU_imported_target} PROPERTIES
-            IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
-            IMPORTED_LOCATION_DEBUG "${${_ICU_component_cache_debug}}")
-        endif()
-        if(CMAKE_DL_LIBS AND _ICU_component STREQUAL "uc")
-          set_target_properties(${_ICU_imported_target} PROPERTIES
-            INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS}")
-        endif()
-      endif()
-    endif()
-    unset(_ICU_component_upcase)
-    unset(_ICU_component_cache)
-    unset(_ICU_component_lib)
-    unset(_ICU_component_found)
-    unset(_ICU_imported_target)
-  endforeach()
-endif()
-
-if(ICU_DEBUG)
-  message(STATUS "--------FindICU.cmake results debug--------")
-  message(STATUS "ICU found: ${ICU_FOUND}")
-  message(STATUS "ICU_VERSION number: ${ICU_VERSION}")
-  message(STATUS "ICU_ROOT directory: ${ICU_ROOT}")
-  message(STATUS "ICU_INCLUDE_DIR directory: ${ICU_INCLUDE_DIR}")
-  message(STATUS "ICU_LIBRARIES: ${ICU_LIBRARIES}")
-
-  foreach(program IN LISTS icu_programs)
-    string(TOUPPER "${program}" program_upcase)
-    set(program_lib "ICU_${program_upcase}_EXECUTABLE")
-    message(STATUS "${program} program: ${${program_lib}}")
-    unset(program_upcase)
-    unset(program_lib)
-  endforeach()
-
-  foreach(data IN LISTS icu_data)
-    string(TOUPPER "${data}" data_upcase)
-    string(REPLACE "." "_" data_upcase "${data_upcase}")
-    set(data_lib "ICU_${data_upcase}")
-    message(STATUS "${data} data: ${${data_lib}}")
-    unset(data_upcase)
-    unset(data_lib)
-  endforeach()
-
-  foreach(component IN LISTS ICU_FIND_COMPONENTS)
-    string(TOUPPER "${component}" component_upcase)
-    set(component_lib "ICU_${component_upcase}_LIBRARIES")
-    set(component_found "${component_upcase}_FOUND")
-    message(STATUS "${component} library found: ${${component_found}}")
-    message(STATUS "${component} library: ${${component_lib}}")
-    unset(component_upcase)
-    unset(component_lib)
-    unset(component_found)
-  endforeach()
-  message(STATUS "----------------")
-endif()
-
-unset(icu_programs)
diff --git a/share/cmake-3.18/Modules/FindIce.cmake b/share/cmake-3.18/Modules/FindIce.cmake
deleted file mode 100644
index 5ce2b42..0000000
--- a/share/cmake-3.18/Modules/FindIce.cmake
+++ /dev/null
@@ -1,619 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindIce
--------
-
-Find the ZeroC Internet Communication Engine (ICE) programs,
-libraries and datafiles.
-
-This module supports multiple components.
-Components can include any of: ``Freeze``, ``Glacier2``, ``Ice``,
-``IceBox``, ``IceDB``, ``IceDiscovery``, ``IceGrid``,
-``IceLocatorDiscovery``, ``IcePatch``, ``IceSSL``, ``IceStorm``,
-``IceUtil``, ``IceXML``, or ``Slice``.
-
-Ice 3.7 and later also include C++11-specific components:
-``Glacier2++11``, ``Ice++11``, ``IceBox++11``, ``IceDiscovery++11``
-``IceGrid``, ``IceLocatorDiscovery++11``, ``IceSSL++11``,
-``IceStorm++11``
-
-Note that the set of supported components is Ice version-specific.
-
-This module reports information about the Ice installation in
-several variables.  General variables::
-
-  Ice_VERSION - Ice release version
-  Ice_FOUND - true if the main programs and libraries were found
-  Ice_LIBRARIES - component libraries to be linked
-  Ice_INCLUDE_DIRS - the directories containing the Ice headers
-  Ice_SLICE_DIRS - the directories containing the Ice slice interface
-                   definitions
-
-Imported targets::
-
-  Ice::<C>
-
-Where ``<C>`` is the name of an Ice component, for example
-``Ice::Glacier2`` or ``Ice++11``.
-
-Ice slice programs are reported in::
-
-  Ice_SLICE2CONFLUENCE_EXECUTABLE - path to slice2confluence executable
-  Ice_SLICE2CPP_EXECUTABLE - path to slice2cpp executable
-  Ice_SLICE2CS_EXECUTABLE - path to slice2cs executable
-  Ice_SLICE2FREEZEJ_EXECUTABLE - path to slice2freezej executable
-  Ice_SLICE2FREEZE_EXECUTABLE - path to slice2freeze executable
-  Ice_SLICE2HTML_EXECUTABLE - path to slice2html executable
-  Ice_SLICE2JAVA_EXECUTABLE - path to slice2java executable
-  Ice_SLICE2JS_EXECUTABLE - path to slice2js executable
-  Ice_SLICE2MATLAB_EXECUTABLE - path to slice2matlab executable
-  Ice_SLICE2OBJC_EXECUTABLE - path to slice2objc executable
-  Ice_SLICE2PHP_EXECUTABLE - path to slice2php executable
-  Ice_SLICE2PY_EXECUTABLE - path to slice2py executable
-  Ice_SLICE2RB_EXECUTABLE - path to slice2rb executable
-
-Ice programs are reported in::
-
-  Ice_GLACIER2ROUTER_EXECUTABLE - path to glacier2router executable
-  Ice_ICEBOX_EXECUTABLE - path to icebox executable
-  Ice_ICEBOXXX11_EXECUTABLE - path to icebox++11 executable
-  Ice_ICEBOXADMIN_EXECUTABLE - path to iceboxadmin executable
-  Ice_ICEBOXD_EXECUTABLE - path to iceboxd executable
-  Ice_ICEBOXNET_EXECUTABLE - path to iceboxnet executable
-  Ice_ICEBRIDGE_EXECUTABLE - path to icebridge executable
-  Ice_ICEGRIDADMIN_EXECUTABLE - path to icegridadmin executable
-  Ice_ICEGRIDDB_EXECUTABLE - path to icegriddb executable
-  Ice_ICEGRIDNODE_EXECUTABLE - path to icegridnode executable
-  Ice_ICEGRIDNODED_EXECUTABLE - path to icegridnoded executable
-  Ice_ICEGRIDREGISTRY_EXECUTABLE - path to icegridregistry executable
-  Ice_ICEGRIDREGISTRYD_EXECUTABLE - path to icegridregistryd executable
-  Ice_ICEPATCH2CALC_EXECUTABLE - path to icepatch2calc executable
-  Ice_ICEPATCH2CLIENT_EXECUTABLE - path to icepatch2client executable
-  Ice_ICEPATCH2SERVER_EXECUTABLE - path to icepatch2server executable
-  Ice_ICESERVICEINSTALL_EXECUTABLE - path to iceserviceinstall executable
-  Ice_ICESTORMADMIN_EXECUTABLE - path to icestormadmin executable
-  Ice_ICESTORMDB_EXECUTABLE - path to icestormdb executable
-  Ice_ICESTORMMIGRATE_EXECUTABLE - path to icestormmigrate executable
-
-Ice db programs (Windows only; standard system versions on all other
-platforms) are reported in::
-
-  Ice_DB_ARCHIVE_EXECUTABLE - path to db_archive executable
-  Ice_DB_CHECKPOINT_EXECUTABLE - path to db_checkpoint executable
-  Ice_DB_DEADLOCK_EXECUTABLE - path to db_deadlock executable
-  Ice_DB_DUMP_EXECUTABLE - path to db_dump executable
-  Ice_DB_HOTBACKUP_EXECUTABLE - path to db_hotbackup executable
-  Ice_DB_LOAD_EXECUTABLE - path to db_load executable
-  Ice_DB_LOG_VERIFY_EXECUTABLE - path to db_log_verify executable
-  Ice_DB_PRINTLOG_EXECUTABLE - path to db_printlog executable
-  Ice_DB_RECOVER_EXECUTABLE - path to db_recover executable
-  Ice_DB_STAT_EXECUTABLE - path to db_stat executable
-  Ice_DB_TUNER_EXECUTABLE - path to db_tuner executable
-  Ice_DB_UPGRADE_EXECUTABLE - path to db_upgrade executable
-  Ice_DB_VERIFY_EXECUTABLE - path to db_verify executable
-  Ice_DUMPDB_EXECUTABLE - path to dumpdb executable
-  Ice_TRANSFORMDB_EXECUTABLE - path to transformdb executable
-
-Ice component libraries are reported in::
-
-  Ice_<C>_FOUND - ON if component was found
-  Ice_<C>_LIBRARIES - libraries for component
-
-Note that ``<C>`` is the uppercased name of the component.
-
-This module reads hints about search results from::
-
-  Ice_HOME - the root of the Ice installation
-
-The environment variable ``ICE_HOME`` may also be used; the
-Ice_HOME variable takes precedence.
-
-.. note::
-  On Windows, Ice 3.7.0 and later provide libraries via the NuGet
-  package manager.  Appropriate NuGet packages will be searched for
-  using ``CMAKE_PREFIX_PATH``, or alternatively ``Ice_HOME`` may be
-  set to the location of a specific NuGet package to restrict the
-  search.
-
-The following cache variables may also be set::
-
-  Ice_<P>_EXECUTABLE - the path to executable <P>
-  Ice_INCLUDE_DIR - the directory containing the Ice headers
-  Ice_SLICE_DIR - the directory containing the Ice slice interface
-                  definitions
-  Ice_<C>_LIBRARY - the library for component <C>
-
-.. note::
-
-  In most cases none of the above variables will require setting,
-  unless multiple Ice versions are available and a specific version
-  is required.  On Windows, the most recent version of Ice will be
-  found through the registry.  On Unix, the programs, headers and
-  libraries will usually be in standard locations, but Ice_SLICE_DIRS
-  might not be automatically detected (commonly known locations are
-  searched).  All the other variables are defaulted using Ice_HOME,
-  if set.  It's possible to set Ice_HOME and selectively specify
-  alternative locations for the other components; this might be
-  required for e.g. newer versions of Visual Studio if the
-  heuristics are not sufficient to identify the correct programs and
-  libraries for the specific Visual Studio version.
-
-Other variables one may set to control this module are::
-
-  Ice_DEBUG - Set to ON to enable debug output from FindIce.
-#]=======================================================================]
-
-# Written by Roger Leigh <rleigh@codelibre.net>
-
-  set(_Ice_db_programs
-      db_archive
-      db_checkpoint
-      db_deadlock
-      db_dump
-      db_hotbackup
-      db_load
-      db_log_verify
-      db_printlog
-      db_recover
-      db_stat
-      db_tuner
-      db_upgrade
-      db_verify
-      dumpdb
-      transformdb)
-
-  set(_Ice_programs
-      glacier2router
-      icebox
-      icebox++11
-      iceboxadmin
-      iceboxd
-      iceboxnet
-      icebridge
-      icegridadmin
-      icegriddb
-      icegridnode
-      icegridnoded
-      icegridregistry
-      icegridregistryd
-      icepatch2calc
-      icepatch2client
-      icepatch2server
-      iceserviceinstall
-      icestormadmin
-      icestormdb
-      icestormmigrate)
-
-  set(_Ice_slice_programs
-      slice2confluence
-      slice2cpp
-      slice2cs
-      slice2freezej
-      slice2freeze
-      slice2html
-      slice2java
-      slice2js
-      slice2matlab
-      slice2objc
-      slice2php
-      slice2py
-      slice2rb)
-
-
-# The Ice checks are contained in a function due to the large number
-# of temporary variables needed.
-function(_Ice_FIND)
-  # Released versions of Ice, including generic short forms
-  set(ice_versions
-      3
-      3.7
-      3.7.0
-      3.6
-      3.6.3
-      3.6.2
-      3.6.1
-      3.6.0
-      3.5
-      3.5.1
-      3.5.0
-      3.4
-      3.4.2
-      3.4.1
-      3.4.0
-      3.3
-      3.3.1
-      3.3.0)
-
-  foreach(ver ${ice_versions})
-    string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\$" two_digit_version_match "${ver}")
-    if(two_digit_version_match)
-      string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\$" "\\1\\2" two_digit_version "${ver}")
-      list(APPEND ice_suffix_versions "${two_digit_version}")
-    endif()
-  endforeach()
-
-  # Set up search paths, taking compiler into account.  Search Ice_HOME,
-  # with ICE_HOME in the environment as a fallback if unset.
-  if(Ice_HOME)
-    list(APPEND ice_roots "${Ice_HOME}")
-  else()
-    if(NOT "$ENV{ICE_HOME}" STREQUAL "")
-      file(TO_CMAKE_PATH "$ENV{ICE_HOME}" NATIVE_PATH)
-      list(APPEND ice_roots "${NATIVE_PATH}")
-      set(Ice_HOME "${NATIVE_PATH}"
-          CACHE PATH "Location of the Ice installation" FORCE)
-    endif()
-  endif()
-
-  set(_bin "bin/Win32")
-  set(_lib "lib/Win32")
-  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-    set(_bin "bin/x64")
-    set(_lib "lib/x64")
-    # 64-bit path suffix
-    set(_x64 "/x64")
-    # 64-bit library directory
-    set(_lib64 "lib64")
-  endif()
-
-  unset(vcvers)
-  if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" OR "${CMAKE_CXX_SIMULATE_ID}" STREQUAL "MSVC")
-    if(MSVC_TOOLSET_VERSION GREATER_EQUAL 141)
-      set(vcvers "141;140")
-    elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 100)
-      set(vcvers "${MSVC_TOOLSET_VERSION}")
-    elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 90)
-      set(vcvers "${MSVC_TOOLSET_VERSION}")
-      set(vcyear "2008")
-    elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 80)
-      set(vcvers "${MSVC_TOOLSET_VERSION}")
-      set(vcyear "2005")
-    else() # Unknown version
-      set(vcvers Unknown)
-    endif()
-  endif()
-
-  # For compatibility with ZeroC Windows builds.
-  if(vcvers)
-    list(APPEND ice_binary_suffixes "build/native/${_bin}/Release" "tools")
-    list(APPEND ice_debug_library_suffixes "build/native/${_lib}/Debug")
-    list(APPEND ice_release_library_suffixes "build/native/${_lib}/Release")
-    foreach(vcver IN LISTS vcvers)
-      # Earlier Ice (3.3) builds don't use vcnnn subdirectories, but are harmless to check.
-      list(APPEND ice_binary_suffixes "bin/vc${vcver}${_x64}" "bin/vc${vcver}")
-      list(APPEND ice_debug_library_suffixes "lib/vc${vcver}${_x64}" "lib/vc${vcver}")
-      list(APPEND ice_release_library_suffixes "lib/vc${vcver}${_x64}" "lib/vc${vcver}")
-    endforeach()
-  endif()
-  # Generic 64-bit and 32-bit directories
-  list(APPEND ice_binary_suffixes "bin${_x64}" "bin")
-  list(APPEND ice_debug_library_suffixes "libx32" "${_lib64}" "lib${_x64}" "lib")
-  list(APPEND ice_release_library_suffixes "libx32" "${_lib64}" "lib${_x64}" "lib")
-  if(vcvers)
-    list(APPEND ice_include_suffixes "build/native/include")
-  endif()
-  list(APPEND ice_include_suffixes "include")
-  list(APPEND ice_slice_suffixes "slice")
-
-  # On Windows, look in the registry for install locations.  Different
-  # versions of Ice install support different compiler versions.
-  if(vcvers)
-    foreach(ice_version ${ice_versions})
-      foreach(vcver IN LISTS vcvers)
-        list(APPEND ice_nuget_dirs "zeroc.ice.v${vcver}.${ice_version}")
-        list(APPEND freeze_nuget_dirs "zeroc.freeze.v${vcver}.${ice_version}")
-      endforeach()
-    endforeach()
-    find_path(Ice_NUGET_DIR
-              NAMES "tools/slice2cpp.exe"
-              PATH_SUFFIXES ${ice_nuget_dirs}
-              DOC "Ice NuGet directory")
-    if(Ice_NUGET_DIR)
-      list(APPEND ice_roots "${Ice_NUGET_DIR}")
-    endif()
-    find_path(Freeze_NUGET_DIR
-              NAMES "tools/slice2freeze.exe"
-              PATH_SUFFIXES ${freeze_nuget_dirs}
-              DOC "Freeze NuGet directory")
-    if(Freeze_NUGET_DIR)
-      list(APPEND ice_roots "${Freeze_NUGET_DIR}")
-    endif()
-    foreach(ice_version ${ice_versions})
-      # Ice 3.3 releases use a Visual Studio year suffix and value is
-      # enclosed in double quotes, though only the leading quote is
-      # returned by get_filename_component.
-      unset(ice_location)
-      if(vcyear)
-        get_filename_component(ice_location
-                               "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ZeroC\\Ice ${ice_version} for Visual Studio ${vcyear};InstallDir]"
-                               PATH)
-        if(ice_location AND NOT ("${ice_location}" STREQUAL "/registry" OR "${ice_location}" STREQUAL "/"))
-          string(REGEX REPLACE "^\"(.*)\"?$" "\\1" ice_location "${ice_location}")
-          get_filename_component(ice_location "${ice_location}" ABSOLUTE)
-        else()
-          unset(ice_location)
-        endif()
-      endif()
-      # Ice 3.4+ releases don't use a suffix
-      if(NOT ice_location OR "${ice_location}" STREQUAL "/registry")
-        get_filename_component(ice_location
-                               "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ZeroC\\Ice ${ice_version};InstallDir]"
-                               ABSOLUTE)
-      endif()
-
-      if(ice_location AND NOT "${ice_location}" STREQUAL "/registry")
-        list(APPEND ice_roots "${ice_location}")
-      endif()
-    endforeach()
-  else()
-    foreach(ice_version ${ice_versions})
-      # Prefer 64-bit variants if present (and using a 64-bit compiler)
-      list(APPEND ice_roots "/opt/Ice-${ice_version}")
-    endforeach()
-  endif()
-
-  # Find all Ice programs
-  foreach(program ${_Ice_db_programs} ${_Ice_programs} ${_Ice_slice_programs})
-    string(TOUPPER "${program}" program_upcase)
-    set(cache_var "Ice_${program_upcase}_EXECUTABLE")
-    set(program_var "Ice_${program_upcase}_EXECUTABLE")
-    find_program("${cache_var}" "${program}"
-      HINTS ${ice_roots}
-      PATH_SUFFIXES ${ice_binary_suffixes}
-      DOC "Ice ${program} executable")
-    mark_as_advanced(cache_var)
-    set("${program_var}" "${${cache_var}}" PARENT_SCOPE)
-  endforeach()
-
-  # Get version.
-  if(Ice_SLICE2CPP_EXECUTABLE)
-    # Execute in C locale for safety
-    set(_Ice_SAVED_LC_ALL "$ENV{LC_ALL}")
-    set(ENV{LC_ALL} C)
-
-    execute_process(COMMAND ${Ice_SLICE2CPP_EXECUTABLE} --version
-      ERROR_VARIABLE Ice_VERSION_SLICE2CPP_FULL
-      ERROR_STRIP_TRAILING_WHITESPACE)
-
-    # restore the previous LC_ALL
-    set(ENV{LC_ALL} ${_Ice_SAVED_LC_ALL})
-
-    # Make short version
-    string(REGEX REPLACE "^(.*)\\.[^.]*$" "\\1" Ice_VERSION_SLICE2CPP_SHORT "${Ice_VERSION_SLICE2CPP_FULL}")
-    set(Ice_VERSION "${Ice_VERSION_SLICE2CPP_FULL}" PARENT_SCOPE)
-  endif()
-
-  if(NOT Ice_FIND_QUIETLY)
-    message(STATUS "Ice version: ${Ice_VERSION_SLICE2CPP_FULL}")
-  endif()
-
-  # Find include directory
-  find_path(Ice_INCLUDE_DIR
-            NAMES "Ice/Ice.h"
-            HINTS ${ice_roots}
-            PATH_SUFFIXES ${ice_include_suffixes}
-            DOC "Ice include directory")
-  set(Ice_INCLUDE_DIR "${Ice_INCLUDE_DIR}" PARENT_SCOPE)
-
-  find_path(Freeze_INCLUDE_DIR
-            NAMES "Freeze/Freeze.h"
-            HINTS ${ice_roots}
-            PATH_SUFFIXES ${ice_include_suffixes}
-            DOC "Freeze include directory")
-  set(Freeze_INCLUDE_DIR "${Freeze_INCLUDE_DIR}" PARENT_SCOPE)
-
-  # In common use on Linux, MacOS X (homebrew) and FreeBSD; prefer
-  # version-specific dir
-  list(APPEND ice_slice_paths
-       /usr/local/share /usr/share)
-  list(APPEND ice_slice_suffixes
-       "Ice-${Ice_VERSION_SLICE2CPP_FULL}/slice"
-       "Ice-${Ice_VERSION_SLICE2CPP_SHORT}/slice"
-       "ice/slice"
-       Ice)
-
-  # Find slice directory
-  find_path(Ice_SLICE_DIR
-            NAMES "Ice/Connection.ice"
-            HINTS ${ice_roots}
-                  ${ice_slice_paths}
-            PATH_SUFFIXES ${ice_slice_suffixes}
-            NO_DEFAULT_PATH
-            DOC "Ice slice directory")
-  set(Ice_SLICE_DIR "${Ice_SLICE_DIR}" PARENT_SCOPE)
-
-  # Find all Ice libraries
-  set(Ice_REQUIRED_LIBS_FOUND ON)
-  foreach(component ${Ice_FIND_COMPONENTS})
-    string(TOUPPER "${component}" component_upcase)
-    set(component_cache "Ice_${component_upcase}_LIBRARY")
-    set(component_cache_release "${component_cache}_RELEASE")
-    set(component_cache_debug "${component_cache}_DEBUG")
-    set(component_found "${component_upcase}_FOUND")
-    set(component_library "${component}")
-    unset(component_library_release_names)
-    unset(component_library_debug_names)
-    if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" OR "${CMAKE_CXX_SIMULATE_ID}" STREQUAL "MSVC")
-      string(REGEX MATCH ".+\\+\\+11$" component_library_cpp11 "${component_library}")
-      if(component_library_cpp11)
-        string(REGEX REPLACE "^(.+)(\\+\\+11)$" "\\1" component_library "${component_library}")
-      endif()
-      foreach(suffix_ver ${ice_suffix_versions})
-        set(_name "${component_library}${suffix_ver}")
-        if(component_library_cpp11)
-          string(APPEND _name "++11")
-        endif()
-        list(APPEND component_library_debug_names "${_name}d")
-        list(APPEND component_library_release_names "${_name}")
-      endforeach()
-      set(_name "${component_library}")
-      if(component_library_cpp11)
-        string(APPEND _name "++11")
-      endif()
-      list(APPEND component_library_debug_names "${_name}d")
-      list(APPEND component_library_release_names "${_name}")
-    else()
-      list(APPEND component_library_debug_names "${component_library}d")
-      list(APPEND component_library_release_names "${component_library}")
-    endif()
-    find_library("${component_cache_release}" ${component_library_release_names}
-      HINTS ${ice_roots}
-      PATH_SUFFIXES ${ice_release_library_suffixes}
-      DOC "Ice ${component} library (release)")
-    find_library("${component_cache_debug}" ${component_library_debug_names}
-      HINTS ${ice_roots}
-      PATH_SUFFIXES ${ice_debug_library_suffixes}
-      DOC "Ice ${component} library (debug)")
-    include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-    select_library_configurations(Ice_${component_upcase})
-    mark_as_advanced("${component_cache_release}" "${component_cache_debug}")
-    if(${component_cache})
-      set("${component_found}" ON)
-      list(APPEND Ice_LIBRARY "${${component_cache}}")
-    endif()
-    mark_as_advanced("${component_found}")
-    set("${component_cache}" "${${component_cache}}" PARENT_SCOPE)
-    set("${component_found}" "${${component_found}}" PARENT_SCOPE)
-    if(${component_found})
-      if (Ice_FIND_REQUIRED_${component})
-        list(APPEND Ice_LIBS_FOUND "${component} (required)")
-      else()
-        list(APPEND Ice_LIBS_FOUND "${component} (optional)")
-      endif()
-    else()
-      if (Ice_FIND_REQUIRED_${component})
-        set(Ice_REQUIRED_LIBS_FOUND OFF)
-        list(APPEND Ice_LIBS_NOTFOUND "${component} (required)")
-      else()
-        list(APPEND Ice_LIBS_NOTFOUND "${component} (optional)")
-      endif()
-    endif()
-  endforeach()
-  set(_Ice_REQUIRED_LIBS_FOUND "${Ice_REQUIRED_LIBS_FOUND}" PARENT_SCOPE)
-  set(Ice_LIBRARY "${Ice_LIBRARY}" PARENT_SCOPE)
-
-  if(NOT Ice_FIND_QUIETLY)
-    if(Ice_LIBS_FOUND)
-      message(STATUS "Found the following Ice libraries:")
-      foreach(found ${Ice_LIBS_FOUND})
-        message(STATUS "  ${found}")
-      endforeach()
-    endif()
-    if(Ice_LIBS_NOTFOUND)
-      message(STATUS "The following Ice libraries were not found:")
-      foreach(notfound ${Ice_LIBS_NOTFOUND})
-        message(STATUS "  ${notfound}")
-      endforeach()
-    endif()
-  endif()
-
-  if(Ice_DEBUG)
-    message(STATUS "--------FindIce.cmake search debug--------")
-    message(STATUS "ICE binary path search order: ${ice_roots}")
-    message(STATUS "ICE binary suffixes: ${ice_binary_suffixes}")
-    message(STATUS "ICE include path search order: ${ice_roots}")
-    message(STATUS "ICE include suffixes: ${ice_include_suffixes}")
-    message(STATUS "ICE slice path search order: ${ice_roots} ${ice_slice_paths}")
-    message(STATUS "ICE slice suffixes: ${ice_slice_suffixes}")
-    message(STATUS "ICE library path search order: ${ice_roots}")
-    message(STATUS "ICE debug library suffixes: ${ice_debug_library_suffixes}")
-    message(STATUS "ICE release library suffixes: ${ice_release_library_suffixes}")
-    message(STATUS "----------------")
-  endif()
-endfunction()
-
-_Ice_FIND()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Ice
-                                  FOUND_VAR Ice_FOUND
-                                  REQUIRED_VARS Ice_SLICE2CPP_EXECUTABLE
-                                                Ice_INCLUDE_DIR
-                                                Ice_SLICE_DIR
-                                                Ice_LIBRARY
-                                                _Ice_REQUIRED_LIBS_FOUND
-                                  VERSION_VAR Ice_VERSION
-                                  FAIL_MESSAGE "Failed to find all Ice components")
-
-unset(_Ice_REQUIRED_LIBS_FOUND)
-
-if(Ice_FOUND)
-  set(Ice_INCLUDE_DIRS "${Ice_INCLUDE_DIR}")
-  if (Freeze_INCLUDE_DIR)
-    list(APPEND Ice_INCLUDE_DIRS "${Freeze_INCLUDE_DIR}")
-  endif()
-  set(Ice_SLICE_DIRS "${Ice_SLICE_DIR}")
-  set(Ice_LIBRARIES "${Ice_LIBRARY}")
-  foreach(_Ice_component ${Ice_FIND_COMPONENTS})
-    string(TOUPPER "${_Ice_component}" _Ice_component_upcase)
-    set(_Ice_component_cache "Ice_${_Ice_component_upcase}_LIBRARY")
-    set(_Ice_component_cache_release "Ice_${_Ice_component_upcase}_LIBRARY_RELEASE")
-    set(_Ice_component_cache_debug "Ice_${_Ice_component_upcase}_LIBRARY_DEBUG")
-    set(_Ice_component_lib "Ice_${_Ice_component_upcase}_LIBRARIES")
-    set(_Ice_component_found "${_Ice_component_upcase}_FOUND")
-    set(_Ice_imported_target "Ice::${_Ice_component}")
-    if(${_Ice_component_found})
-      set("${_Ice_component_lib}" "${${_Ice_component_cache}}")
-      if(NOT TARGET ${_Ice_imported_target})
-        add_library(${_Ice_imported_target} UNKNOWN IMPORTED)
-        set_target_properties(${_Ice_imported_target} PROPERTIES
-          INTERFACE_INCLUDE_DIRECTORIES "${Ice_INCLUDE_DIRS}")
-        if(EXISTS "${${_Ice_component_cache}}")
-          set_target_properties(${_Ice_imported_target} PROPERTIES
-            IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
-            IMPORTED_LOCATION "${${_Ice_component_cache}}")
-        endif()
-        if(EXISTS "${${_Ice_component_cache_release}}")
-          set_property(TARGET ${_Ice_imported_target} APPEND PROPERTY
-            IMPORTED_CONFIGURATIONS RELEASE)
-          set_target_properties(${_Ice_imported_target} PROPERTIES
-            IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
-            IMPORTED_LOCATION_RELEASE "${${_Ice_component_cache_release}}")
-        endif()
-        if(EXISTS "${${_Ice_component_cache_debug}}")
-          set_property(TARGET ${_Ice_imported_target} APPEND PROPERTY
-            IMPORTED_CONFIGURATIONS DEBUG)
-          set_target_properties(${_Ice_imported_target} PROPERTIES
-            IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
-            IMPORTED_LOCATION_DEBUG "${${_Ice_component_cache_debug}}")
-        endif()
-      endif()
-    endif()
-    unset(_Ice_component_upcase)
-    unset(_Ice_component_cache)
-    unset(_Ice_component_lib)
-    unset(_Ice_component_found)
-    unset(_Ice_imported_target)
-  endforeach()
-endif()
-
-if(Ice_DEBUG)
-  message(STATUS "--------FindIce.cmake results debug--------")
-  message(STATUS "Ice_VERSION number: ${Ice_VERSION}")
-  message(STATUS "Ice_HOME directory: ${Ice_HOME}")
-  message(STATUS "Ice_INCLUDE_DIR directory: ${Ice_INCLUDE_DIR}")
-  message(STATUS "Ice_SLICE_DIR directory: ${Ice_SLICE_DIR}")
-  message(STATUS "Ice_LIBRARIES: ${Ice_LIBRARIES}")
-  message(STATUS "Freeze_INCLUDE_DIR directory: ${Freeze_INCLUDE_DIR}")
-  message(STATUS "Ice_INCLUDE_DIRS directory: ${Ice_INCLUDE_DIRS}")
-
-  foreach(program ${_Ice_db_programs} ${_Ice_programs} ${_Ice_slice_programs})
-    string(TOUPPER "${program}" program_upcase)
-    message(STATUS "${program} executable: ${Ice_${program_upcase}_EXECUTABLE}")
-  endforeach()
-
-  foreach(component ${Ice_FIND_COMPONENTS})
-    string(TOUPPER "${component}" component_upcase)
-    set(component_lib "Ice_${component_upcase}_LIBRARIES")
-    set(component_found "${component_upcase}_FOUND")
-    message(STATUS "${component} library found: ${${component_found}}")
-    message(STATUS "${component} library: ${${component_lib}}")
-  endforeach()
-  message(STATUS "----------------")
-endif()
-
-unset(_Ice_db_programs)
-unset(_Ice_programs)
-unset(_Ice_slice_programs)
diff --git a/share/cmake-3.18/Modules/FindIconv.cmake b/share/cmake-3.18/Modules/FindIconv.cmake
deleted file mode 100644
index bf20f6f..0000000
--- a/share/cmake-3.18/Modules/FindIconv.cmake
+++ /dev/null
@@ -1,133 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindIconv
----------
-
-This module finds the ``iconv()`` POSIX.1 functions on the system.
-These functions might be provided in the regular C library or externally
-in the form of an additional library.
-
-The following variables are provided to indicate iconv support:
-
-.. variable:: Iconv_FOUND
-
-  Variable indicating if the iconv support was found.
-
-.. variable:: Iconv_INCLUDE_DIRS
-
-  The directories containing the iconv headers.
-
-.. variable:: Iconv_LIBRARIES
-
-  The iconv libraries to be linked.
-
-.. variable:: Iconv_IS_BUILT_IN
-
-  A variable indicating whether iconv support is stemming from the
-  C library or not. Even if the C library provides `iconv()`, the presence of
-  an external `libiconv` implementation might lead to this being false.
-
-Additionally, the following :prop_tgt:`IMPORTED` target is being provided:
-
-.. variable:: Iconv::Iconv
-
-  Imported target for using iconv.
-
-The following cache variables may also be set:
-
-.. variable:: Iconv_INCLUDE_DIR
-
-  The directory containing the iconv headers.
-
-.. variable:: Iconv_LIBRARY
-
-  The iconv library (if not implicitly given in the C library).
-
-.. note::
-  On POSIX platforms, iconv might be part of the C library and the cache
-  variables ``Iconv_INCLUDE_DIR`` and ``Iconv_LIBRARY`` might be empty.
-
-#]=======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
-if(CMAKE_C_COMPILER_LOADED)
-  include(${CMAKE_CURRENT_LIST_DIR}/CheckCSourceCompiles.cmake)
-elseif(CMAKE_CXX_COMPILER_LOADED)
-  include(${CMAKE_CURRENT_LIST_DIR}/CheckCXXSourceCompiles.cmake)
-else()
-  # If neither C nor CXX are loaded, implicit iconv makes no sense.
-  set(Iconv_IS_BUILT_IN FALSE)
-endif()
-
-# iconv can only be provided in libc on a POSIX system.
-# If any cache variable is already set, we'll skip this test.
-if(NOT DEFINED Iconv_IS_BUILT_IN)
-  if(UNIX AND NOT DEFINED Iconv_INCLUDE_DIR AND NOT DEFINED Iconv_LIBRARY)
-    cmake_push_check_state(RESET)
-    # We always suppress the message here: Otherwise on supported systems
-    # not having iconv in their C library (e.g. those using libiconv)
-    # would always display a confusing "Looking for iconv - not found" message
-    set(CMAKE_FIND_QUIETLY TRUE)
-    # The following code will not work, but it's sufficient to see if it compiles.
-    # Note: libiconv will define the iconv functions as macros, so CheckSymbolExists
-    # will not yield correct results.
-    set(Iconv_IMPLICIT_TEST_CODE
-      "
-      #include <stddef.h>
-      #include <iconv.h>
-      int main() {
-        char *a, *b;
-        size_t i, j;
-        iconv_t ic;
-        ic = iconv_open(\"to\", \"from\");
-        iconv(ic, &a, &i, &b, &j);
-        iconv_close(ic);
-      }
-      "
-    )
-    if(CMAKE_C_COMPILER_LOADED)
-      check_c_source_compiles("${Iconv_IMPLICIT_TEST_CODE}" Iconv_IS_BUILT_IN)
-    else()
-      check_cxx_source_compiles("${Iconv_IMPLICIT_TEST_CODE}" Iconv_IS_BUILT_IN)
-    endif()
-    cmake_pop_check_state()
-  else()
-    set(Iconv_IS_BUILT_IN FALSE)
-  endif()
-endif()
-
-if(NOT Iconv_IS_BUILT_IN)
-  find_path(Iconv_INCLUDE_DIR
-    NAMES "iconv.h"
-    DOC "iconv include directory")
-  set(Iconv_LIBRARY_NAMES "iconv" "libiconv")
-else()
-  set(Iconv_INCLUDE_DIR "" CACHE FILEPATH "iconv include directory")
-  set(Iconv_LIBRARY_NAMES "c")
-endif()
-
-find_library(Iconv_LIBRARY
-  NAMES ${Iconv_LIBRARY_NAMES}
-  DOC "iconv library (potentially the C library)")
-
-mark_as_advanced(Iconv_INCLUDE_DIR)
-mark_as_advanced(Iconv_LIBRARY)
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-if(NOT Iconv_IS_BUILT_IN)
-  find_package_handle_standard_args(Iconv REQUIRED_VARS Iconv_LIBRARY Iconv_INCLUDE_DIR)
-else()
-  find_package_handle_standard_args(Iconv REQUIRED_VARS Iconv_LIBRARY)
-endif()
-
-if(Iconv_FOUND)
-  set(Iconv_INCLUDE_DIRS "${Iconv_INCLUDE_DIR}")
-  set(Iconv_LIBRARIES "${Iconv_LIBRARY}")
-  if(NOT TARGET Iconv::Iconv)
-    add_library(Iconv::Iconv INTERFACE IMPORTED)
-  endif()
-  set_property(TARGET Iconv::Iconv PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${Iconv_INCLUDE_DIRS}")
-  set_property(TARGET Iconv::Iconv PROPERTY INTERFACE_LINK_LIBRARIES "${Iconv_LIBRARIES}")
-endif()
diff --git a/share/cmake-3.18/Modules/FindImageMagick.cmake b/share/cmake-3.18/Modules/FindImageMagick.cmake
deleted file mode 100644
index 8bf5123..0000000
--- a/share/cmake-3.18/Modules/FindImageMagick.cmake
+++ /dev/null
@@ -1,307 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindImageMagick
----------------
-
-Find ImageMagick binary suite.
-
-This module will search for a set of ImageMagick tools specified as
-components in the :command:`find_package` call.  Typical components include,
-but are not limited to (future versions of ImageMagick might have
-additional components not listed here):
-
-::
-
-  animate
-  compare
-  composite
-  conjure
-  convert
-  display
-  identify
-  import
-  mogrify
-  montage
-  stream
-
-
-
-If no component is specified in the :command:`find_package` call, then it only
-searches for the ImageMagick executable directory.  This code defines
-the following variables:
-
-::
-
-  ImageMagick_FOUND                  - TRUE if all components are found.
-  ImageMagick_EXECUTABLE_DIR         - Full path to executables directory.
-  ImageMagick_<component>_FOUND      - TRUE if <component> is found.
-  ImageMagick_<component>_EXECUTABLE - Full path to <component> executable.
-  ImageMagick_VERSION_STRING         - the version of ImageMagick found
-                                       (since CMake 2.8.8)
-
-
-
-``ImageMagick_VERSION_STRING`` will not work for old versions like 5.2.3.
-
-There are also components for the following ImageMagick APIs:
-
-::
-
-  Magick++
-  MagickWand
-  MagickCore
-
-
-
-For these components the following variables are set:
-
-::
-
-  ImageMagick_FOUND                    - TRUE if all components are found.
-  ImageMagick_INCLUDE_DIRS             - Full paths to all include dirs.
-  ImageMagick_LIBRARIES                - Full paths to all libraries.
-  ImageMagick_<component>_FOUND        - TRUE if <component> is found.
-  ImageMagick_<component>_INCLUDE_DIRS - Full path to <component> include dirs.
-  ImageMagick_<component>_LIBRARIES    - Full path to <component> libraries.
-
-
-
-Example Usages:
-
-::
-
-  find_package(ImageMagick)
-  find_package(ImageMagick COMPONENTS convert)
-  find_package(ImageMagick COMPONENTS convert mogrify display)
-  find_package(ImageMagick COMPONENTS Magick++)
-  find_package(ImageMagick COMPONENTS Magick++ convert)
-
-
-
-Note that the standard :command:`find_package` features are supported (i.e.,
-``QUIET``, ``REQUIRED``, etc.).
-#]=======================================================================]
-
-find_package(PkgConfig QUIET)
-
-#---------------------------------------------------------------------
-# Helper functions
-#---------------------------------------------------------------------
-function(FIND_IMAGEMAGICK_API component header)
-  set(ImageMagick_${component}_FOUND FALSE PARENT_SCOPE)
-
-  pkg_check_modules(PC_${component} QUIET ${component})
-
-  find_path(ImageMagick_${component}_INCLUDE_DIR
-    NAMES ${header}
-    HINTS
-      ${PC_${component}_INCLUDEDIR}
-      ${PC_${component}_INCLUDE_DIRS}
-    PATHS
-      ${ImageMagick_INCLUDE_DIRS}
-      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ImageMagick\\Current;BinPath]/include"
-    PATH_SUFFIXES
-      ImageMagick ImageMagick-6 ImageMagick-7
-    DOC "Path to the ImageMagick arch-independent include dir."
-    NO_DEFAULT_PATH
-    )
-  find_path(ImageMagick_${component}_ARCH_INCLUDE_DIR
-    NAMES magick/magick-baseconfig.h
-    HINTS
-      ${PC_${component}_INCLUDEDIR}
-      ${PC_${component}_INCLUDE_DIRS}
-    PATHS
-      ${ImageMagick_INCLUDE_DIRS}
-      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ImageMagick\\Current;BinPath]/include"
-    PATH_SUFFIXES
-      ImageMagick ImageMagick-6 ImageMagick-7
-    DOC "Path to the ImageMagick arch-specific include dir."
-    NO_DEFAULT_PATH
-    )
-  find_library(ImageMagick_${component}_LIBRARY
-    NAMES ${ARGN}
-    HINTS
-      ${PC_${component}_LIBDIR}
-      ${PC_${component}_LIB_DIRS}
-    PATHS
-      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ImageMagick\\Current;BinPath]/lib"
-    DOC "Path to the ImageMagick Magick++ library."
-    NO_DEFAULT_PATH
-    )
-
-  # old version have only indep dir
-  if(ImageMagick_${component}_INCLUDE_DIR AND ImageMagick_${component}_LIBRARY)
-    set(ImageMagick_${component}_FOUND TRUE PARENT_SCOPE)
-
-    # Construct per-component include directories.
-    set(ImageMagick_${component}_INCLUDE_DIRS
-      ${ImageMagick_${component}_INCLUDE_DIR}
-      )
-    if(ImageMagick_${component}_ARCH_INCLUDE_DIR)
-      list(APPEND ImageMagick_${component}_INCLUDE_DIRS
-        ${ImageMagick_${component}_ARCH_INCLUDE_DIR})
-    endif()
-    list(REMOVE_DUPLICATES ImageMagick_${component}_INCLUDE_DIRS)
-    set(ImageMagick_${component}_INCLUDE_DIRS
-      ${ImageMagick_${component}_INCLUDE_DIRS} PARENT_SCOPE)
-
-    # Add the per-component include directories to the full include dirs.
-    list(APPEND ImageMagick_INCLUDE_DIRS ${ImageMagick_${component}_INCLUDE_DIRS})
-    list(REMOVE_DUPLICATES ImageMagick_INCLUDE_DIRS)
-    set(ImageMagick_INCLUDE_DIRS ${ImageMagick_INCLUDE_DIRS} PARENT_SCOPE)
-
-    list(APPEND ImageMagick_LIBRARIES
-      ${ImageMagick_${component}_LIBRARY}
-      )
-    set(ImageMagick_LIBRARIES ${ImageMagick_LIBRARIES} PARENT_SCOPE)
-  endif()
-endfunction()
-
-function(FIND_IMAGEMAGICK_EXE component)
-  set(_IMAGEMAGICK_EXECUTABLE
-    ${ImageMagick_EXECUTABLE_DIR}/${component}${CMAKE_EXECUTABLE_SUFFIX})
-  if(EXISTS ${_IMAGEMAGICK_EXECUTABLE})
-    set(ImageMagick_${component}_EXECUTABLE
-      ${_IMAGEMAGICK_EXECUTABLE}
-       PARENT_SCOPE
-       )
-    set(ImageMagick_${component}_FOUND TRUE PARENT_SCOPE)
-  else()
-    set(ImageMagick_${component}_FOUND FALSE PARENT_SCOPE)
-  endif()
-endfunction()
-
-#---------------------------------------------------------------------
-# Start Actual Work
-#---------------------------------------------------------------------
-# Try to find a ImageMagick installation binary path.
-find_path(ImageMagick_EXECUTABLE_DIR
-  NAMES mogrify${CMAKE_EXECUTABLE_SUFFIX}
-  PATHS
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ImageMagick\\Current;BinPath]"
-  DOC "Path to the ImageMagick binary directory."
-  NO_DEFAULT_PATH
-  )
-find_path(ImageMagick_EXECUTABLE_DIR
-  NAMES mogrify${CMAKE_EXECUTABLE_SUFFIX}
-  )
-
-# Find each component. Search for all tools in same dir
-# <ImageMagick_EXECUTABLE_DIR>; otherwise they should be found
-# independently and not in a cohesive module such as this one.
-unset(ImageMagick_REQUIRED_VARS)
-unset(ImageMagick_DEFAULT_EXECUTABLES)
-foreach(component ${ImageMagick_FIND_COMPONENTS}
-    # DEPRECATED: forced components for backward compatibility
-    convert mogrify import montage composite
-    )
-  if(component STREQUAL "Magick++")
-    FIND_IMAGEMAGICK_API(Magick++ Magick++.h
-      Magick++ CORE_RL_Magick++_
-      Magick++-6 Magick++-7
-      Magick++-Q8 Magick++-Q16 Magick++-Q16HDRI Magick++-Q8HDRI
-      Magick++-6.Q64 Magick++-6.Q32 Magick++-6.Q64HDRI Magick++-6.Q32HDRI
-      Magick++-6.Q16 Magick++-6.Q8 Magick++-6.Q16HDRI Magick++-6.Q8HDRI
-      Magick++-7.Q64 Magick++-7.Q32 Magick++-7.Q64HDRI Magick++-7.Q32HDRI
-      Magick++-7.Q16 Magick++-7.Q8 Magick++-7.Q16HDRI Magick++-7.Q8HDRI
-      )
-    list(APPEND ImageMagick_REQUIRED_VARS ImageMagick_Magick++_LIBRARY)
-  elseif(component STREQUAL "MagickWand")
-    FIND_IMAGEMAGICK_API(MagickWand "wand/MagickWand.h;MagickWand/MagickWand.h"
-      Wand MagickWand CORE_RL_wand_ CORE_RL_MagickWand_
-      MagickWand-6 MagickWand-7
-      MagickWand-Q16 MagickWand-Q8 MagickWand-Q16HDRI MagickWand-Q8HDRI
-      MagickWand-6.Q64 MagickWand-6.Q32 MagickWand-6.Q64HDRI MagickWand-6.Q32HDRI
-      MagickWand-6.Q16 MagickWand-6.Q8 MagickWand-6.Q16HDRI MagickWand-6.Q8HDRI
-      MagickWand-7.Q64 MagickWand-7.Q32 MagickWand-7.Q64HDRI MagickWand-7.Q32HDRI
-      MagickWand-7.Q16 MagickWand-7.Q8 MagickWand-7.Q16HDRI MagickWand-7.Q8HDRI
-      )
-    list(APPEND ImageMagick_REQUIRED_VARS ImageMagick_MagickWand_LIBRARY)
-  elseif(component STREQUAL "MagickCore")
-    FIND_IMAGEMAGICK_API(MagickCore "magick/MagickCore.h;MagickCore/MagickCore.h"
-      Magick MagickCore CORE_RL_magick_ CORE_RL_MagickCore_
-      MagickCore-6 MagickCore-7
-      MagickCore-Q16 MagickCore-Q8 MagickCore-Q16HDRI MagickCore-Q8HDRI
-      MagickCore-6.Q64 MagickCore-6.Q32 MagickCore-6.Q64HDRI MagickCore-6.Q32HDRI
-      MagickCore-6.Q16 MagickCore-6.Q8 MagickCore-6.Q16HDRI MagickCore-6.Q8HDRI
-      MagickCore-7.Q64 MagickCore-7.Q32 MagickCore-7.Q64HDRI MagickCore-7.Q32HDRI
-      MagickCore-7.Q16 MagickCore-7.Q8 MagickCore-7.Q16HDRI MagickCore-7.Q8HDRI
-      )
-    list(APPEND ImageMagick_REQUIRED_VARS ImageMagick_MagickCore_LIBRARY)
-  else()
-    if(ImageMagick_EXECUTABLE_DIR)
-      FIND_IMAGEMAGICK_EXE(${component})
-    endif()
-
-    if(ImageMagick_FIND_COMPONENTS)
-      list(FIND ImageMagick_FIND_COMPONENTS ${component} is_requested)
-      if(is_requested GREATER -1)
-        list(APPEND ImageMagick_REQUIRED_VARS ImageMagick_${component}_EXECUTABLE)
-      endif()
-    elseif(ImageMagick_${component}_EXECUTABLE)
-      # if no components were requested explicitly put all (default) executables
-      # in the list
-      list(APPEND ImageMagick_DEFAULT_EXECUTABLES ImageMagick_${component}_EXECUTABLE)
-    endif()
-  endif()
-endforeach()
-
-if(NOT ImageMagick_FIND_COMPONENTS AND NOT ImageMagick_DEFAULT_EXECUTABLES)
-  # No components were requested, and none of the default components were
-  # found. Just insert mogrify into the list of the default components to
-  # find so FPHSA below has something to check
-  list(APPEND ImageMagick_REQUIRED_VARS ImageMagick_mogrify_EXECUTABLE)
-elseif(ImageMagick_DEFAULT_EXECUTABLES)
-  list(APPEND ImageMagick_REQUIRED_VARS ${ImageMagick_DEFAULT_EXECUTABLES})
-endif()
-
-set(ImageMagick_INCLUDE_DIRS ${ImageMagick_INCLUDE_DIRS})
-set(ImageMagick_LIBRARIES ${ImageMagick_LIBRARIES})
-
-if(ImageMagick_mogrify_EXECUTABLE)
-  execute_process(COMMAND ${ImageMagick_mogrify_EXECUTABLE} -version
-                  OUTPUT_VARIABLE imagemagick_version
-                  ERROR_QUIET
-                  OUTPUT_STRIP_TRAILING_WHITESPACE)
-  if(imagemagick_version MATCHES "^Version: ImageMagick ([-0-9\\.]+)")
-    set(ImageMagick_VERSION_STRING "${CMAKE_MATCH_1}")
-  endif()
-  unset(imagemagick_version)
-endif()
-
-#---------------------------------------------------------------------
-# Standard Package Output
-#---------------------------------------------------------------------
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(ImageMagick
-                                  REQUIRED_VARS ${ImageMagick_REQUIRED_VARS}
-                                  VERSION_VAR ImageMagick_VERSION_STRING
-  )
-# Maintain consistency with all other variables.
-set(ImageMagick_FOUND ${IMAGEMAGICK_FOUND})
-
-#---------------------------------------------------------------------
-# DEPRECATED: Setting variables for backward compatibility.
-#---------------------------------------------------------------------
-set(IMAGEMAGICK_BINARY_PATH          ${ImageMagick_EXECUTABLE_DIR}
-    CACHE PATH "Path to the ImageMagick binary directory.")
-set(IMAGEMAGICK_CONVERT_EXECUTABLE   ${ImageMagick_convert_EXECUTABLE}
-    CACHE FILEPATH "Path to ImageMagick's convert executable.")
-set(IMAGEMAGICK_MOGRIFY_EXECUTABLE   ${ImageMagick_mogrify_EXECUTABLE}
-    CACHE FILEPATH "Path to ImageMagick's mogrify executable.")
-set(IMAGEMAGICK_IMPORT_EXECUTABLE    ${ImageMagick_import_EXECUTABLE}
-    CACHE FILEPATH "Path to ImageMagick's import executable.")
-set(IMAGEMAGICK_MONTAGE_EXECUTABLE   ${ImageMagick_montage_EXECUTABLE}
-    CACHE FILEPATH "Path to ImageMagick's montage executable.")
-set(IMAGEMAGICK_COMPOSITE_EXECUTABLE ${ImageMagick_composite_EXECUTABLE}
-    CACHE FILEPATH "Path to ImageMagick's composite executable.")
-mark_as_advanced(
-  IMAGEMAGICK_BINARY_PATH
-  IMAGEMAGICK_CONVERT_EXECUTABLE
-  IMAGEMAGICK_MOGRIFY_EXECUTABLE
-  IMAGEMAGICK_IMPORT_EXECUTABLE
-  IMAGEMAGICK_MONTAGE_EXECUTABLE
-  IMAGEMAGICK_COMPOSITE_EXECUTABLE
-  )
diff --git a/share/cmake-3.18/Modules/FindIntl.cmake b/share/cmake-3.18/Modules/FindIntl.cmake
deleted file mode 100644
index 3818d45..0000000
--- a/share/cmake-3.18/Modules/FindIntl.cmake
+++ /dev/null
@@ -1,60 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindIntl
---------
-
-Find the Gettext libintl headers and libraries.
-
-This module reports information about the Gettext libintl
-installation in several variables.  General variables::
-
-  Intl_FOUND - true if the libintl headers and libraries were found
-  Intl_INCLUDE_DIRS - the directory containing the libintl headers
-  Intl_LIBRARIES - libintl libraries to be linked
-
-The following cache variables may also be set::
-
-  Intl_INCLUDE_DIR - the directory containing the libintl headers
-  Intl_LIBRARY - the libintl library (if any)
-
-.. note::
-  On some platforms, such as Linux with GNU libc, the gettext
-  functions are present in the C standard library and libintl
-  is not required.  ``Intl_LIBRARIES`` will be empty in this
-  case.
-
-.. note::
-  If you wish to use the Gettext tools (``msgmerge``,
-  ``msgfmt``, etc.), use :module:`FindGettext`.
-#]=======================================================================]
-
-
-# Written by Roger Leigh <rleigh@codelibre.net>
-
-# Find include directory
-find_path(Intl_INCLUDE_DIR
-          NAMES "libintl.h"
-          DOC "libintl include directory")
-mark_as_advanced(Intl_INCLUDE_DIR)
-
-# Find all Intl libraries
-find_library(Intl_LIBRARY "intl"
-  DOC "libintl libraries (if not in the C library)")
-mark_as_advanced(Intl_LIBRARY)
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Intl
-                                  FOUND_VAR Intl_FOUND
-                                  REQUIRED_VARS Intl_INCLUDE_DIR
-                                  FAIL_MESSAGE "Failed to find Gettext libintl")
-
-if(Intl_FOUND)
-  set(Intl_INCLUDE_DIRS "${Intl_INCLUDE_DIR}")
-  if(Intl_LIBRARY)
-    set(Intl_LIBRARIES "${Intl_LIBRARY}")
-  else()
-    unset(Intl_LIBRARIES)
-  endif()
-endif()
diff --git a/share/cmake-3.18/Modules/FindJNI.cmake b/share/cmake-3.18/Modules/FindJNI.cmake
deleted file mode 100644
index 3a5bd31..0000000
--- a/share/cmake-3.18/Modules/FindJNI.cmake
+++ /dev/null
@@ -1,395 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindJNI
--------
-
-Find Java Native Interface (JNI) libraries.
-
-JNI enables Java code running in a Java Virtual Machine (JVM) to call
-and be called by native applications and libraries written in other
-languages such as C, C++.
-
-This module finds if Java is installed and determines where the
-include files and libraries are.  It also determines what the name of
-the library is.  The caller may set variable ``JAVA_HOME`` to specify a
-Java installation prefix explicitly.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module sets the following result variables:
-
-``JNI_INCLUDE_DIRS``
-  the include dirs to use
-``JNI_LIBRARIES``
-  the libraries to use (JAWT and JVM)
-``JNI_FOUND``
-  TRUE if JNI headers and libraries were found.
-
-Cache Variables
-^^^^^^^^^^^^^^^
-
-The following cache variables are also available to set or use:
-
-``JAVA_AWT_LIBRARY``
-  the path to the Java AWT Native Interface (JAWT) library
-``JAVA_JVM_LIBRARY``
-  the path to the Java Virtual Machine (JVM) library
-``JAVA_INCLUDE_PATH``
-  the include path to jni.h
-``JAVA_INCLUDE_PATH2``
-  the include path to jni_md.h and jniport.h
-``JAVA_AWT_INCLUDE_PATH``
-  the include path to jawt.h
-#]=======================================================================]
-
-# Expand {libarch} occurrences to java_libarch subdirectory(-ies) and set ${_var}
-macro(java_append_library_directories _var)
-    # Determine java arch-specific library subdir
-    # Mostly based on openjdk/jdk/make/common/shared/Platform.gmk as of openjdk
-    # 1.6.0_18 + icedtea patches. However, it would be much better to base the
-    # guess on the first part of the GNU config.guess platform triplet.
-    if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
-      if(CMAKE_LIBRARY_ARCHITECTURE STREQUAL "x86_64-linux-gnux32")
-        set(_java_libarch "x32" "amd64" "i386")
-      else()
-        set(_java_libarch "amd64" "i386")
-      endif()
-    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$")
-        set(_java_libarch "i386")
-    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^alpha")
-        set(_java_libarch "alpha")
-    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
-        # Subdir is "arm" for both big-endian (arm) and little-endian (armel).
-        set(_java_libarch "arm" "aarch32")
-    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^mips")
-        # mips* machines are bi-endian mostly so processor does not tell
-        # endianness of the underlying system.
-        set(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}"
-            "mips" "mipsel" "mipseb" "mipsr6" "mipsr6el"
-            "mips64" "mips64el" "mips64r6" "mips64r6el"
-            "mipsn32" "mipsn32el" "mipsn32r6" "mipsn32r6el")
-    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64le")
-        set(_java_libarch "ppc64" "ppc64le")
-    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64")
-        set(_java_libarch "ppc64" "ppc")
-    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
-        set(_java_libarch "ppc" "ppc64")
-    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^sparc")
-        # Both flavours can run on the same processor
-        set(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}" "sparc" "sparcv9")
-    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(parisc|hppa)")
-        set(_java_libarch "parisc" "parisc64")
-    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^s390")
-        # s390 binaries can run on s390x machines
-        set(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}" "s390" "s390x")
-    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^sh")
-        set(_java_libarch "sh")
-    else()
-        set(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}")
-    endif()
-
-    # Append default list architectures if CMAKE_SYSTEM_PROCESSOR was empty or
-    # system is non-Linux (where the code above has not been well tested)
-    if(NOT _java_libarch OR NOT (CMAKE_SYSTEM_NAME MATCHES "Linux"))
-        list(APPEND _java_libarch "i386" "amd64" "ppc")
-    endif()
-
-    # Sometimes ${CMAKE_SYSTEM_PROCESSOR} is added to the list to prefer
-    # current value to a hardcoded list. Remove possible duplicates.
-    list(REMOVE_DUPLICATES _java_libarch)
-
-    foreach(_path ${ARGN})
-        if(_path MATCHES "{libarch}")
-            foreach(_libarch ${_java_libarch})
-                string(REPLACE "{libarch}" "${_libarch}" _newpath "${_path}")
-                if(EXISTS ${_newpath})
-                    list(APPEND ${_var} "${_newpath}")
-                endif()
-            endforeach()
-        else()
-            if(EXISTS ${_path})
-                list(APPEND ${_var} "${_path}")
-            endif()
-        endif()
-    endforeach()
-endmacro()
-
-include(${CMAKE_CURRENT_LIST_DIR}/CMakeFindJavaCommon.cmake)
-
-# Save CMAKE_FIND_FRAMEWORK
-if(DEFINED CMAKE_FIND_FRAMEWORK)
-  set(_JNI_CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK})
-else()
-  unset(_JNI_CMAKE_FIND_FRAMEWORK)
-endif()
-
-if(_JAVA_HOME_EXPLICIT)
-  set(CMAKE_FIND_FRAMEWORK NEVER)
-endif()
-
-set(JAVA_AWT_LIBRARY_DIRECTORIES)
-if(_JAVA_HOME)
-  JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_LIBRARY_DIRECTORIES
-    ${_JAVA_HOME}/jre/lib/{libarch}
-    ${_JAVA_HOME}/jre/lib
-    ${_JAVA_HOME}/lib/{libarch}
-    ${_JAVA_HOME}/lib
-    ${_JAVA_HOME}
-    )
-endif()
-
-if (WIN32)
-  set (_JNI_HINTS)
-  execute_process(COMMAND REG QUERY HKLM\\SOFTWARE\\JavaSoft\\JDK
-    RESULT_VARIABLE _JNI_RESULT
-    OUTPUT_VARIABLE _JNI_VERSIONS
-    ERROR_QUIET)
-  if (NOT  _JNI_RESULT)
-    string (REGEX MATCHALL "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\JavaSoft\\\\JDK\\\\[0-9.]+" _JNI_VERSIONS "${_JNI_VERSIONS}")
-    if (_JNI_VERSIONS)
-      # sort versions. Most recent first
-      ## handle version 9 apart from other versions to get correct ordering
-      set (_JNI_V9 ${_JNI_VERSIONS})
-      list (FILTER _JNI_VERSIONS EXCLUDE REGEX "JDK\\\\9")
-      list (SORT _JNI_VERSIONS)
-      list (REVERSE _JNI_VERSIONS)
-      list (FILTER _JNI_V9 INCLUDE REGEX "JDK\\\\9")
-      list (SORT _JNI_V9)
-      list (REVERSE _JNI_V9)
-      list (APPEND _JNI_VERSIONS ${_JNI_V9})
-      foreach (_JNI_HINT IN LISTS _JNI_VERSIONS)
-        list(APPEND _JNI_HINTS "[${_JNI_HINT};JavaHome]")
-      endforeach()
-    endif()
-  endif()
-
-  foreach (_JNI_HINT IN LISTS _JNI_HINTS)
-    list(APPEND JAVA_AWT_LIBRARY_DIRECTORIES "${_JNI_HINT}/lib")
-  endforeach()
-
-  get_filename_component(java_install_version
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit;CurrentVersion]" NAME)
-
-  list(APPEND JAVA_AWT_LIBRARY_DIRECTORIES
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/lib"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.8;JavaHome]/lib"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.7;JavaHome]/lib"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.6;JavaHome]/lib"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5;JavaHome]/lib"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/lib"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/lib"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\${java_install_version};JavaHome]/lib"
-    )
-endif()
-
-set(_JNI_JAVA_DIRECTORIES_BASE
-  /usr/lib/jvm/java
-  /usr/lib/java
-  /usr/lib/jvm
-  /usr/local/lib/java
-  /usr/local/share/java
-  /usr/lib/j2sdk1.4-sun
-  /usr/lib/j2sdk1.5-sun
-  /opt/sun-jdk-1.5.0.04
-  /usr/lib/jvm/java-6-sun
-  /usr/lib/jvm/java-1.5.0-sun
-  /usr/lib/jvm/java-6-sun-1.6.0.00       # can this one be removed according to #8821 ? Alex
-  /usr/lib/jvm/java-6-openjdk
-  /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0        # fedora
-  # Debian specific paths for default JVM
-  /usr/lib/jvm/default-java
-  # Arch Linux specific paths for default JVM
-  /usr/lib/jvm/default
-  # Ubuntu specific paths for default JVM
-  /usr/lib/jvm/java-11-openjdk-{libarch}    # Ubuntu 18.04 LTS
-  /usr/lib/jvm/java-8-openjdk-{libarch}     # Ubuntu 15.10
-  /usr/lib/jvm/java-7-openjdk-{libarch}     # Ubuntu 15.10
-  /usr/lib/jvm/java-6-openjdk-{libarch}     # Ubuntu 15.10
-  # OpenBSD specific paths for default JVM
-  /usr/local/jdk-1.7.0
-  /usr/local/jre-1.7.0
-  /usr/local/jdk-1.6.0
-  /usr/local/jre-1.6.0
-  # SuSE specific paths for default JVM
-  /usr/lib64/jvm/java
-  /usr/lib64/jvm/jre
-  )
-
-set(_JNI_JAVA_AWT_LIBRARY_TRIES)
-set(_JNI_JAVA_INCLUDE_TRIES)
-
-foreach(_java_dir IN LISTS _JNI_JAVA_DIRECTORIES_BASE)
-  list(APPEND _JNI_JAVA_AWT_LIBRARY_TRIES
-    ${_java_dir}/jre/lib/{libarch}
-    ${_java_dir}/jre/lib
-    ${_java_dir}/lib/{libarch}
-    ${_java_dir}/lib
-    ${_java_dir}
-  )
-  list(APPEND _JNI_JAVA_INCLUDE_TRIES
-    ${_java_dir}/include
-  )
-endforeach()
-
-JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_LIBRARY_DIRECTORIES
-    ${_JNI_JAVA_AWT_LIBRARY_TRIES}
-  )
-
-set(JAVA_JVM_LIBRARY_DIRECTORIES)
-foreach(dir ${JAVA_AWT_LIBRARY_DIRECTORIES})
-  list(APPEND JAVA_JVM_LIBRARY_DIRECTORIES
-    "${dir}"
-    "${dir}/client"
-    "${dir}/server"
-    # IBM SDK, Java Technology Edition, specific paths
-    "${dir}/j9vm"
-    "${dir}/default"
-    )
-endforeach()
-
-set(JAVA_AWT_INCLUDE_DIRECTORIES)
-if(_JAVA_HOME)
-  list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES ${_JAVA_HOME}/include)
-endif()
-if (WIN32)
-  foreach (_JNI_HINT IN LISTS _JNI_HINTS)
-    list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES "${_JNI_HINT}/include")
-  endforeach()
-  list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/include"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.8;JavaHome]/include"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.7;JavaHome]/include"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.6;JavaHome]/include"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5;JavaHome]/include"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/include"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/include"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\${java_install_version};JavaHome]/include"
-    )
-endif()
-
-JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_INCLUDE_DIRECTORIES
-  ${_JNI_JAVA_INCLUDE_TRIES}
-  )
-
-foreach(JAVA_PROG "${JAVA_RUNTIME}" "${JAVA_COMPILE}" "${JAVA_ARCHIVE}")
-  get_filename_component(jpath "${JAVA_PROG}" PATH)
-  foreach(JAVA_INC_PATH ../include ../java/include ../share/java/include)
-    if(EXISTS ${jpath}/${JAVA_INC_PATH})
-      list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES "${jpath}/${JAVA_INC_PATH}")
-    endif()
-  endforeach()
-  foreach(JAVA_LIB_PATH
-    ../lib ../jre/lib ../jre/lib/i386
-    ../java/lib ../java/jre/lib ../java/jre/lib/i386
-    ../share/java/lib ../share/java/jre/lib ../share/java/jre/lib/i386)
-    if(EXISTS ${jpath}/${JAVA_LIB_PATH})
-      list(APPEND JAVA_AWT_LIBRARY_DIRECTORIES "${jpath}/${JAVA_LIB_PATH}")
-    endif()
-  endforeach()
-endforeach()
-
-if(APPLE)
-  if(CMAKE_FIND_FRAMEWORK STREQUAL "ONLY")
-    set(_JNI_SEARCHES FRAMEWORK)
-  elseif(CMAKE_FIND_FRAMEWORK STREQUAL "NEVER")
-    set(_JNI_SEARCHES NORMAL)
-  elseif(CMAKE_FIND_FRAMEWORK STREQUAL "LAST")
-    set(_JNI_SEARCHES NORMAL FRAMEWORK)
-  else()
-    set(_JNI_SEARCHES FRAMEWORK NORMAL)
-  endif()
-  set(_JNI_FRAMEWORK_JVM NAMES JavaVM)
-  set(_JNI_FRAMEWORK_JAWT "${_JNI_FRAMEWORK_JVM}")
-else()
-  set(_JNI_SEARCHES NORMAL)
-endif()
-
-set(_JNI_NORMAL_JVM
-  NAMES jvm
-  PATHS ${JAVA_JVM_LIBRARY_DIRECTORIES}
-  )
-
-set(_JNI_NORMAL_JAWT
-  NAMES jawt
-  PATHS ${JAVA_AWT_LIBRARY_DIRECTORIES}
-  )
-
-foreach(search ${_JNI_SEARCHES})
-  find_library(JAVA_JVM_LIBRARY ${_JNI_${search}_JVM})
-  find_library(JAVA_AWT_LIBRARY ${_JNI_${search}_JAWT})
-  if(JAVA_JVM_LIBRARY)
-    break()
-  endif()
-endforeach()
-unset(_JNI_SEARCHES)
-unset(_JNI_FRAMEWORK_JVM)
-unset(_JNI_FRAMEWORK_JAWT)
-unset(_JNI_NORMAL_JVM)
-unset(_JNI_NORMAL_JAWT)
-
-# Find headers matching the library.
-if("${JAVA_JVM_LIBRARY};${JAVA_AWT_LIBRARY};" MATCHES "(/JavaVM.framework|-framework JavaVM);")
-  set(CMAKE_FIND_FRAMEWORK ONLY)
-else()
-  set(CMAKE_FIND_FRAMEWORK NEVER)
-endif()
-
-# add in the include path
-find_path(JAVA_INCLUDE_PATH jni.h
-  ${JAVA_AWT_INCLUDE_DIRECTORIES}
-)
-
-find_path(JAVA_INCLUDE_PATH2 NAMES jni_md.h jniport.h
-  PATHS
-  ${JAVA_INCLUDE_PATH}
-  ${JAVA_INCLUDE_PATH}/darwin
-  ${JAVA_INCLUDE_PATH}/win32
-  ${JAVA_INCLUDE_PATH}/linux
-  ${JAVA_INCLUDE_PATH}/freebsd
-  ${JAVA_INCLUDE_PATH}/openbsd
-  ${JAVA_INCLUDE_PATH}/solaris
-  ${JAVA_INCLUDE_PATH}/hp-ux
-  ${JAVA_INCLUDE_PATH}/alpha
-  ${JAVA_INCLUDE_PATH}/aix
-)
-
-find_path(JAVA_AWT_INCLUDE_PATH jawt.h
-  ${JAVA_INCLUDE_PATH}
-)
-
-# Restore CMAKE_FIND_FRAMEWORK
-if(DEFINED _JNI_CMAKE_FIND_FRAMEWORK)
-  set(CMAKE_FIND_FRAMEWORK ${_JNI_CMAKE_FIND_FRAMEWORK})
-  unset(_JNI_CMAKE_FIND_FRAMEWORK)
-else()
-  unset(CMAKE_FIND_FRAMEWORK)
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(JNI  DEFAULT_MSG  JAVA_AWT_LIBRARY
-                                                    JAVA_JVM_LIBRARY
-                                                    JAVA_INCLUDE_PATH
-                                                    JAVA_INCLUDE_PATH2
-                                                    JAVA_AWT_INCLUDE_PATH)
-
-mark_as_advanced(
-  JAVA_AWT_LIBRARY
-  JAVA_JVM_LIBRARY
-  JAVA_AWT_INCLUDE_PATH
-  JAVA_INCLUDE_PATH
-  JAVA_INCLUDE_PATH2
-)
-
-set(JNI_LIBRARIES
-  ${JAVA_AWT_LIBRARY}
-  ${JAVA_JVM_LIBRARY}
-)
-
-set(JNI_INCLUDE_DIRS
-  ${JAVA_INCLUDE_PATH}
-  ${JAVA_INCLUDE_PATH2}
-  ${JAVA_AWT_INCLUDE_PATH}
-)
diff --git a/share/cmake-3.18/Modules/FindJPEG.cmake b/share/cmake-3.18/Modules/FindJPEG.cmake
deleted file mode 100644
index 0bb6989..0000000
--- a/share/cmake-3.18/Modules/FindJPEG.cmake
+++ /dev/null
@@ -1,136 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindJPEG
---------
-
-Find the Joint Photographic Experts Group (JPEG) library (``libjpeg``)
-
-Imported targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :prop_tgt:`IMPORTED` targets:
-
-``JPEG::JPEG``
-  The JPEG library, if found.
-
-Result variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``JPEG_FOUND``
-  If false, do not try to use JPEG.
-``JPEG_INCLUDE_DIRS``
-  where to find jpeglib.h, etc.
-``JPEG_LIBRARIES``
-  the libraries needed to use JPEG.
-``JPEG_VERSION``
-  the version of the JPEG library found
-
-Cache variables
-^^^^^^^^^^^^^^^
-
-The following cache variables may also be set:
-
-``JPEG_INCLUDE_DIRS``
-  where to find jpeglib.h, etc.
-``JPEG_LIBRARY_RELEASE``
-  where to find the JPEG library (optimized).
-``JPEG_LIBRARY_DEBUG``
-  where to find the JPEG library (debug).
-
-Obsolete variables
-^^^^^^^^^^^^^^^^^^
-
-``JPEG_INCLUDE_DIR``
-  where to find jpeglib.h, etc. (same as JPEG_INCLUDE_DIRS)
-``JPEG_LIBRARY``
-  where to find the JPEG library.
-#]=======================================================================]
-
-find_path(JPEG_INCLUDE_DIR jpeglib.h)
-
-set(jpeg_names ${JPEG_NAMES} jpeg jpeg-static libjpeg libjpeg-static)
-foreach(name ${jpeg_names})
-  list(APPEND jpeg_names_debug "${name}d")
-endforeach()
-
-if(NOT JPEG_LIBRARY)
-  find_library(JPEG_LIBRARY_RELEASE NAMES ${jpeg_names})
-  find_library(JPEG_LIBRARY_DEBUG NAMES ${jpeg_names_debug})
-  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-  select_library_configurations(JPEG)
-  mark_as_advanced(JPEG_LIBRARY_RELEASE JPEG_LIBRARY_DEBUG)
-endif()
-unset(jpeg_names)
-unset(jpeg_names_debug)
-
-if(JPEG_INCLUDE_DIR)
-  file(GLOB _JPEG_CONFIG_HEADERS_FEDORA "${JPEG_INCLUDE_DIR}/jconfig*.h")
-  file(GLOB _JPEG_CONFIG_HEADERS_DEBIAN "${JPEG_INCLUDE_DIR}/*/jconfig.h")
-  set(_JPEG_CONFIG_HEADERS
-    "${JPEG_INCLUDE_DIR}/jpeglib.h"
-    ${_JPEG_CONFIG_HEADERS_FEDORA}
-    ${_JPEG_CONFIG_HEADERS_DEBIAN})
-  foreach (_JPEG_CONFIG_HEADER IN LISTS _JPEG_CONFIG_HEADERS)
-    if (NOT EXISTS "${_JPEG_CONFIG_HEADER}")
-      continue ()
-    endif ()
-    file(STRINGS "${_JPEG_CONFIG_HEADER}"
-      jpeg_lib_version REGEX "^#define[\t ]+JPEG_LIB_VERSION[\t ]+.*")
-
-    if (NOT jpeg_lib_version)
-      continue ()
-    endif ()
-
-    string(REGEX REPLACE "^#define[\t ]+JPEG_LIB_VERSION[\t ]+([0-9]+).*"
-      "\\1" JPEG_VERSION "${jpeg_lib_version}")
-    break ()
-  endforeach ()
-  unset(jpeg_lib_version)
-  unset(_JPEG_CONFIG_HEADER)
-  unset(_JPEG_CONFIG_HEADERS)
-  unset(_JPEG_CONFIG_HEADERS_FEDORA)
-  unset(_JPEG_CONFIG_HEADERS_DEBIAN)
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(JPEG
-  REQUIRED_VARS JPEG_LIBRARY JPEG_INCLUDE_DIR
-  VERSION_VAR JPEG_VERSION)
-
-if(JPEG_FOUND)
-  set(JPEG_LIBRARIES ${JPEG_LIBRARY})
-  set(JPEG_INCLUDE_DIRS "${JPEG_INCLUDE_DIR}")
-
-  if(NOT TARGET JPEG::JPEG)
-    add_library(JPEG::JPEG UNKNOWN IMPORTED)
-    if(JPEG_INCLUDE_DIRS)
-      set_target_properties(JPEG::JPEG PROPERTIES
-        INTERFACE_INCLUDE_DIRECTORIES "${JPEG_INCLUDE_DIRS}")
-    endif()
-    if(EXISTS "${JPEG_LIBRARY}")
-      set_target_properties(JPEG::JPEG PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-        IMPORTED_LOCATION "${JPEG_LIBRARY}")
-    endif()
-    if(EXISTS "${JPEG_LIBRARY_RELEASE}")
-      set_property(TARGET JPEG::JPEG APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS RELEASE)
-      set_target_properties(JPEG::JPEG PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
-        IMPORTED_LOCATION_RELEASE "${JPEG_LIBRARY_RELEASE}")
-    endif()
-    if(EXISTS "${JPEG_LIBRARY_DEBUG}")
-      set_property(TARGET JPEG::JPEG APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS DEBUG)
-      set_target_properties(JPEG::JPEG PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
-        IMPORTED_LOCATION_DEBUG "${JPEG_LIBRARY_DEBUG}")
-    endif()
-  endif()
-endif()
-
-mark_as_advanced(JPEG_LIBRARY JPEG_INCLUDE_DIR)
diff --git a/share/cmake-3.18/Modules/FindJasper.cmake b/share/cmake-3.18/Modules/FindJasper.cmake
deleted file mode 100644
index 729a503..0000000
--- a/share/cmake-3.18/Modules/FindJasper.cmake
+++ /dev/null
@@ -1,47 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindJasper
-----------
-
-Try to find the Jasper JPEG2000 library
-
-Once done this will define
-
-::
-
-  JASPER_FOUND - system has Jasper
-  JASPER_INCLUDE_DIR - the Jasper include directory
-  JASPER_LIBRARIES - the libraries needed to use Jasper
-  JASPER_VERSION_STRING - the version of Jasper found (since CMake 2.8.8)
-#]=======================================================================]
-
-find_path(JASPER_INCLUDE_DIR jasper/jasper.h)
-
-if (NOT JASPER_LIBRARIES)
-    find_package(JPEG)
-
-    find_library(JASPER_LIBRARY_RELEASE NAMES jasper libjasper)
-    find_library(JASPER_LIBRARY_DEBUG NAMES jasperd)
-
-    include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-    SELECT_LIBRARY_CONFIGURATIONS(JASPER)
-endif ()
-
-if (JASPER_INCLUDE_DIR AND EXISTS "${JASPER_INCLUDE_DIR}/jasper/jas_config.h")
-    file(STRINGS "${JASPER_INCLUDE_DIR}/jasper/jas_config.h" jasper_version_str REGEX "^#define[\t ]+JAS_VERSION[\t ]+\".*\".*")
-
-    string(REGEX REPLACE "^#define[\t ]+JAS_VERSION[\t ]+\"([^\"]+)\".*" "\\1" JASPER_VERSION_STRING "${jasper_version_str}")
-endif ()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Jasper
-                                  REQUIRED_VARS JASPER_LIBRARIES JASPER_INCLUDE_DIR JPEG_LIBRARIES
-                                  VERSION_VAR JASPER_VERSION_STRING)
-
-if (JASPER_FOUND)
-  set(JASPER_LIBRARIES ${JASPER_LIBRARIES} ${JPEG_LIBRARIES} )
-endif ()
-
-mark_as_advanced(JASPER_INCLUDE_DIR)
diff --git a/share/cmake-3.18/Modules/FindJava.cmake b/share/cmake-3.18/Modules/FindJava.cmake
deleted file mode 100644
index 9db740b..0000000
--- a/share/cmake-3.18/Modules/FindJava.cmake
+++ /dev/null
@@ -1,359 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindJava
---------
-
-Find Java
-
-This module finds if Java is installed and determines where the
-include files and libraries are.  The caller may set variable ``JAVA_HOME``
-to specify a Java installation prefix explicitly.
-
-See also the :module:`FindJNI` module to find Java Native Interface (JNI).
-
-Specify one or more of the following components as you call this find module. See example below.
-
-::
-
-  Runtime     = Java Runtime Environment used to execute Java byte-compiled applications
-  Development = Development tools (java, javac, javah, jar and javadoc), includes Runtime component
-  IdlJ        = Interface Description Language (IDL) to Java compiler
-  JarSigner   = Signer and verifier tool for Java Archive (JAR) files
-
-
-This module sets the following result variables:
-
-::
-
-  Java_JAVA_EXECUTABLE      = the full path to the Java runtime
-  Java_JAVAC_EXECUTABLE     = the full path to the Java compiler
-  Java_JAVAH_EXECUTABLE     = the full path to the Java header generator
-  Java_JAVADOC_EXECUTABLE   = the full path to the Java documentation generator
-  Java_IDLJ_EXECUTABLE      = the full path to the Java idl compiler
-  Java_JAR_EXECUTABLE       = the full path to the Java archiver
-  Java_JARSIGNER_EXECUTABLE = the full path to the Java jar signer
-  Java_VERSION_STRING       = Version of java found, eg. 1.6.0_12
-  Java_VERSION_MAJOR        = The major version of the package found.
-  Java_VERSION_MINOR        = The minor version of the package found.
-  Java_VERSION_PATCH        = The patch version of the package found.
-  Java_VERSION_TWEAK        = The tweak version of the package found (after '_')
-  Java_VERSION              = This is set to: $major[.$minor[.$patch[.$tweak]]]
-
-
-
-The minimum required version of Java can be specified using the
-:command:`find_package` syntax, e.g.
-
-.. code-block:: cmake
-
-  find_package(Java 1.8)
-
-NOTE: ``${Java_VERSION}`` and ``${Java_VERSION_STRING}`` are not guaranteed to
-be identical.  For example some java version may return:
-``Java_VERSION_STRING = 1.8.0_17`` and ``Java_VERSION = 1.8.0.17``
-
-another example is the Java OEM, with: ``Java_VERSION_STRING = 1.8.0-oem``
-and ``Java_VERSION = 1.8.0``
-
-For these components the following variables are set:
-
-::
-
-  Java_FOUND                    - TRUE if all components are found.
-  Java_<component>_FOUND        - TRUE if <component> is found.
-
-
-
-Example Usages:
-
-::
-
-  find_package(Java)
-  find_package(Java 1.8 REQUIRED)
-  find_package(Java COMPONENTS Runtime)
-  find_package(Java COMPONENTS Development)
-#]=======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/CMakeFindJavaCommon.cmake)
-
-# The HINTS option should only be used for values computed from the system.
-set(_JAVA_HINTS)
-if(_JAVA_HOME)
-  list(APPEND _JAVA_HINTS ${_JAVA_HOME}/bin)
-endif()
-if (WIN32)
-  macro (_JAVA_GET_INSTALLED_VERSIONS _KIND)
-    execute_process(COMMAND REG QUERY HKLM\\SOFTWARE\\JavaSoft\\${_KIND}
-      RESULT_VARIABLE _JAVA_RESULT
-      OUTPUT_VARIABLE _JAVA_VERSIONS
-      ERROR_QUIET)
-    if (NOT  _JAVA_RESULT)
-      string (REGEX MATCHALL "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\JavaSoft\\\\${_KIND}\\\\[0-9.]+" _JAVA_VERSIONS "${_JAVA_VERSIONS}")
-      if (_JAVA_VERSIONS)
-        # sort versions. Most recent first
-        ## handle version 9 apart from other versions to get correct ordering
-        set (_JAVA_V9 ${_JAVA_VERSIONS})
-        list (FILTER _JAVA_VERSIONS EXCLUDE REGEX "${_KIND}\\\\9")
-        list (SORT _JAVA_VERSIONS)
-        list (REVERSE _JAVA_VERSIONS)
-        list (FILTER _JAVA_V9 INCLUDE REGEX "${_KIND}\\\\9")
-        list (SORT _JAVA_V9)
-        list (REVERSE _JAVA_V9)
-        list (APPEND _JAVA_VERSIONS ${_JAVA_V9})
-        foreach (_JAVA_HINT IN LISTS _JAVA_VERSIONS)
-          list(APPEND _JAVA_HINTS "[${_JAVA_HINT};JavaHome]/bin")
-        endforeach()
-      endif()
-    endif()
-  endmacro()
-
-  # search for installed versions for version 9 and upper
-  _JAVA_GET_INSTALLED_VERSIONS("JDK")
-  _JAVA_GET_INSTALLED_VERSIONS("JRE")
-
-  list(APPEND _JAVA_HINTS
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/bin"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.8;JavaHome]/bin"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.7;JavaHome]/bin"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.6;JavaHome]/bin"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5;JavaHome]/bin"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/bin"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/bin"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.9;JavaHome]/bin"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.8;JavaHome]/bin"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.7;JavaHome]/bin"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.6;JavaHome]/bin"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.5;JavaHome]/bin"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.4;JavaHome]/bin"
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.3;JavaHome]/bin"
-  )
-endif()
-
-# Hard-coded guesses should still go in PATHS. This ensures that the user
-# environment can always override hard guesses.
-set(_JAVA_PATHS
-  /usr/lib/java/bin
-  /usr/share/java/bin
-  /usr/local/java/bin
-  /usr/local/java/share/bin
-  /usr/java/j2sdk1.4.2_04
-  /usr/lib/j2sdk1.4-sun/bin
-  /usr/java/j2sdk1.4.2_09/bin
-  /usr/lib/j2sdk1.5-sun/bin
-  /opt/sun-jdk-1.5.0.04/bin
-  /usr/local/jdk-1.7.0/bin
-  /usr/local/jdk-1.6.0/bin
-  )
-find_program(Java_JAVA_EXECUTABLE
-  NAMES java
-  HINTS ${_JAVA_HINTS}
-  PATHS ${_JAVA_PATHS}
-)
-
-if(Java_JAVA_EXECUTABLE)
-    execute_process(COMMAND "${Java_JAVA_EXECUTABLE}" -version
-      RESULT_VARIABLE res
-      OUTPUT_VARIABLE var
-      ERROR_VARIABLE var # sun-java output to stderr
-      OUTPUT_STRIP_TRAILING_WHITESPACE
-      ERROR_STRIP_TRAILING_WHITESPACE)
-    if( res )
-      if(var MATCHES "Unable to locate a Java Runtime to invoke|No Java runtime present, requesting install")
-        set(Java_JAVA_EXECUTABLE Java_JAVA_EXECUTABLE-NOTFOUND)
-      elseif(${Java_FIND_REQUIRED})
-        message( FATAL_ERROR "Error executing java -version" )
-      else()
-        message( STATUS "Warning, could not run java -version")
-      endif()
-    else()
-      # Extract version components (up to 4 levels) from "java -version" output.
-      set(_java_version_regex [[(([0-9]+)(\.([0-9]+)(\.([0-9]+)(_([0-9]+))?)?)?.*)]])
-      if(var MATCHES "java version \"${_java_version_regex}\"")
-        # Sun, GCJ, older OpenJDK
-        set(Java_VERSION_STRING "${CMAKE_MATCH_1}")
-        set(Java_VERSION_MAJOR "${CMAKE_MATCH_2}")
-        if (CMAKE_MATCH_4)
-        set(Java_VERSION_MINOR "${CMAKE_MATCH_4}")
-        else()
-          set(Java_VERSION_MINOR 0)
-        endif()
-        if (CMAKE_MATCH_6)
-        set(Java_VERSION_PATCH "${CMAKE_MATCH_6}")
-        else()
-          set(Java_VERSION_PATCH 0)
-        endif()
-        set(Java_VERSION_TWEAK "${CMAKE_MATCH_8}")
-      elseif(var MATCHES "openjdk version \"${_java_version_regex}\"")
-        # OpenJDK
-        set(Java_VERSION_STRING "${CMAKE_MATCH_1}")
-        set(Java_VERSION_MAJOR "${CMAKE_MATCH_2}")
-        if (CMAKE_MATCH_4)
-        set(Java_VERSION_MINOR "${CMAKE_MATCH_4}")
-        else()
-          set(Java_VERSION_MINOR 0)
-        endif()
-        if (CMAKE_MATCH_6)
-        set(Java_VERSION_PATCH "${CMAKE_MATCH_6}")
-        else()
-          set(Java_VERSION_PATCH 0)
-        endif()
-        set(Java_VERSION_TWEAK "${CMAKE_MATCH_8}")
-      elseif(var MATCHES "openjdk version \"([0-9]+)-[A-Za-z]+\"")
-        # OpenJDK 9 early access builds or locally built
-        set(Java_VERSION_STRING "1.${CMAKE_MATCH_1}.0")
-        set(Java_VERSION_MAJOR "1")
-        set(Java_VERSION_MINOR "${CMAKE_MATCH_1}")
-        set(Java_VERSION_PATCH "0")
-        set(Java_VERSION_TWEAK "")
-      elseif(var MATCHES "java full version \"kaffe-${_java_version_regex}\"")
-        # Kaffe style
-        set(Java_VERSION_STRING "${CMAKE_MATCH_1}")
-        set(Java_VERSION_MAJOR "${CMAKE_MATCH_2}")
-        set(Java_VERSION_MINOR "${CMAKE_MATCH_4}")
-        set(Java_VERSION_PATCH "${CMAKE_MATCH_6}")
-        set(Java_VERSION_TWEAK "${CMAKE_MATCH_8}")
-      else()
-        if(NOT Java_FIND_QUIETLY)
-          string(REPLACE "\n" "\n  " ver_msg "\n${var}")
-          message(WARNING "Java version not recognized:${ver_msg}\nPlease report.")
-        endif()
-        set(Java_VERSION_STRING "")
-        set(Java_VERSION_MAJOR "")
-        set(Java_VERSION_MINOR "")
-        set(Java_VERSION_PATCH "")
-        set(Java_VERSION_TWEAK "")
-      endif()
-      set(Java_VERSION "${Java_VERSION_MAJOR}")
-      if(NOT "x${Java_VERSION}" STREQUAL "x")
-        foreach(c MINOR PATCH TWEAK)
-          if(NOT "x${Java_VERSION_${c}}" STREQUAL "x")
-            string(APPEND Java_VERSION ".${Java_VERSION_${c}}")
-          else()
-            break()
-          endif()
-        endforeach()
-      endif()
-    endif()
-
-endif()
-
-
-find_program(Java_JAR_EXECUTABLE
-  NAMES jar
-  HINTS ${_JAVA_HINTS}
-  PATHS ${_JAVA_PATHS}
-)
-
-find_program(Java_JAVAC_EXECUTABLE
-  NAMES javac
-  HINTS ${_JAVA_HINTS}
-  PATHS ${_JAVA_PATHS}
-)
-
-find_program(Java_JAVAH_EXECUTABLE
-  NAMES javah
-  HINTS ${_JAVA_HINTS}
-  PATHS ${_JAVA_PATHS}
-)
-
-find_program(Java_JAVADOC_EXECUTABLE
-  NAMES javadoc
-  HINTS ${_JAVA_HINTS}
-  PATHS ${_JAVA_PATHS}
-)
-
-find_program(Java_IDLJ_EXECUTABLE
-  NAMES idlj
-  HINTS ${_JAVA_HINTS}
-  PATHS ${_JAVA_PATHS}
-)
-
-find_program(Java_JARSIGNER_EXECUTABLE
-  NAMES jarsigner
-  HINTS ${_JAVA_HINTS}
-  PATHS ${_JAVA_PATHS}
-)
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-if(Java_FIND_COMPONENTS)
-  set(_JAVA_REQUIRED_VARS)
-  foreach(component ${Java_FIND_COMPONENTS})
-    # User just want to execute some Java byte-compiled
-    If(component STREQUAL "Runtime")
-      list(APPEND _JAVA_REQUIRED_VARS Java_JAVA_EXECUTABLE)
-      if(Java_JAVA_EXECUTABLE)
-        set(Java_Runtime_FOUND TRUE)
-      endif()
-    elseif(component STREQUAL "Development")
-      list(APPEND _JAVA_REQUIRED_VARS Java_JAVA_EXECUTABLE Java_JAVAC_EXECUTABLE
-                                      Java_JAR_EXECUTABLE Java_JAVADOC_EXECUTABLE)
-      if(Java_VERSION VERSION_LESS "10")
-        list(APPEND _JAVA_REQUIRED_VARS Java_JAVAH_EXECUTABLE)
-        if(Java_JAVA_EXECUTABLE AND Java_JAVAC_EXECUTABLE
-            AND Java_JAVAH_EXECUTABLE AND Java_JAR_EXECUTABLE AND Java_JAVADOC_EXECUTABLE)
-          set(Java_Development_FOUND TRUE)
-        endif()
-      else()
-        if(Java_JAVA_EXECUTABLE AND Java_JAVAC_EXECUTABLE
-            AND Java_JAR_EXECUTABLE AND Java_JAVADOC_EXECUTABLE)
-          set(Java_Development_FOUND TRUE)
-        endif()
-      endif()
-    elseif(component STREQUAL "IdlJ")
-      list(APPEND _JAVA_REQUIRED_VARS Java_IDLJ_EXECUTABLE)
-      if(Java_IDLJ_EXECUTABLE)
-        set(Java_IdlJ_FOUND TRUE)
-      endif()
-    elseif(component STREQUAL "JarSigner")
-      list(APPEND _JAVA_REQUIRED_VARS Java_JARSIGNER_EXECUTABLE)
-      if(Java_JARSIGNER_EXECUTABLE)
-        set(Java_JarSigner_FOUND TRUE)
-      endif()
-    else()
-      message(FATAL_ERROR "Comp: ${component} is not handled")
-    endif()
-  endforeach()
-  list (REMOVE_DUPLICATES _JAVA_REQUIRED_VARS)
-  find_package_handle_standard_args(Java
-    REQUIRED_VARS ${_JAVA_REQUIRED_VARS} HANDLE_COMPONENTS
-    VERSION_VAR Java_VERSION
-    )
-  if(Java_FOUND)
-    foreach(component ${Java_FIND_COMPONENTS})
-      set(Java_${component}_FOUND TRUE)
-    endforeach()
-  endif()
-else()
-  # Check for Development
-  if(Java_VERSION VERSION_LESS "10")
-    find_package_handle_standard_args(Java
-      REQUIRED_VARS Java_JAVA_EXECUTABLE Java_JAR_EXECUTABLE Java_JAVAC_EXECUTABLE
-                    Java_JAVAH_EXECUTABLE Java_JAVADOC_EXECUTABLE
-      VERSION_VAR Java_VERSION_STRING
-      )
-  else()
-    find_package_handle_standard_args(Java
-      REQUIRED_VARS Java_JAVA_EXECUTABLE Java_JAR_EXECUTABLE Java_JAVAC_EXECUTABLE
-                    Java_JAVADOC_EXECUTABLE
-      VERSION_VAR Java_VERSION_STRING
-      )
-  endif()
-endif()
-
-
-mark_as_advanced(
-  Java_JAVA_EXECUTABLE
-  Java_JAR_EXECUTABLE
-  Java_JAVAC_EXECUTABLE
-  Java_JAVAH_EXECUTABLE
-  Java_JAVADOC_EXECUTABLE
-  Java_IDLJ_EXECUTABLE
-  Java_JARSIGNER_EXECUTABLE
-  )
-
-# LEGACY
-set(JAVA_RUNTIME ${Java_JAVA_EXECUTABLE})
-set(JAVA_ARCHIVE ${Java_JAR_EXECUTABLE})
-set(JAVA_COMPILE ${Java_JAVAC_EXECUTABLE})
diff --git a/share/cmake-3.18/Modules/FindLAPACK.cmake b/share/cmake-3.18/Modules/FindLAPACK.cmake
deleted file mode 100644
index 31e7de6..0000000
--- a/share/cmake-3.18/Modules/FindLAPACK.cmake
+++ /dev/null
@@ -1,555 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindLAPACK
-----------
-
-Find Linear Algebra PACKage (LAPACK) library
-
-This module finds an installed Fortran library that implements the
-LAPACK linear-algebra interface (see http://www.netlib.org/lapack/).
-
-The approach follows that taken for the ``autoconf`` macro file,
-``acx_lapack.m4`` (distributed at
-http://ac-archive.sourceforge.net/ac-archive/acx_lapack.html).
-
-Input Variables
-^^^^^^^^^^^^^^^
-
-The following variables may be set to influence this module's behavior:
-
-``BLA_STATIC``
-  if ``ON`` use static linkage
-
-``BLA_VENDOR``
-  If set, checks only the specified vendor, if not set checks all the
-  possibilities.  List of vendors valid in this module:
-
-  * ``OpenBLAS``
-  * ``FLAME``
-  * ``Intel10_32`` (intel mkl v10 32 bit)
-  * ``Intel10_64lp`` (intel mkl v10+ 64 bit, threaded code, lp64 model)
-  * ``Intel10_64lp_seq`` (intel mkl v10+ 64 bit, sequential code, lp64 model)
-  * ``Intel10_64ilp`` (intel mkl v10+ 64 bit, threaded code, ilp64 model)
-  * ``Intel10_64ilp_seq`` (intel mkl v10+ 64 bit, sequential code, ilp64 model)
-  * ``Intel10_64_dyn`` (intel mkl v10+ 64 bit, single dynamic library)
-  * ``Intel`` (obsolete versions of mkl 32 and 64 bit)
-  * ``ACML``
-  * ``Apple``
-  * ``NAS``
-  * ``Arm``
-  * ``Arm_mp``
-  * ``Arm_ilp64``
-  * ``Arm_ilp64_mp``
-  * ``Generic``
-
-``BLA_F95``
-  if ``ON`` tries to find the BLAS95/LAPACK95 interfaces
-
-Imported targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :prop_tgt:`IMPORTED` target:
-
-``LAPACK::LAPACK``
-  The libraries to use for LAPACK, if found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module defines the following variables:
-
-``LAPACK_FOUND``
-  library implementing the LAPACK interface is found
-``LAPACK_LINKER_FLAGS``
-  uncached list of required linker flags (excluding ``-l`` and ``-L``).
-``LAPACK_LIBRARIES``
-  uncached list of libraries (using full path name) to link against
-  to use LAPACK
-``LAPACK95_LIBRARIES``
-  uncached list of libraries (using full path name) to link against
-  to use LAPACK95
-``LAPACK95_FOUND``
-  library implementing the LAPACK95 interface is found
-
-.. note::
-
-  C, CXX or Fortran must be enabled to detect a BLAS/LAPACK library.
-  C or CXX must be enabled to use Intel Math Kernel Library (MKL).
-
-  For example, to use Intel MKL libraries and/or Intel compiler:
-
-  .. code-block:: cmake
-
-    set(BLA_VENDOR Intel10_64lp)
-    find_package(LAPACK)
-#]=======================================================================]
-
-# Check the language being used
-if(NOT (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED OR CMAKE_Fortran_COMPILER_LOADED))
-  if(LAPACK_FIND_REQUIRED)
-    message(FATAL_ERROR "FindLAPACK requires Fortran, C, or C++ to be enabled.")
-  else()
-    message(STATUS "Looking for LAPACK... - NOT found (Unsupported languages)")
-    return()
-  endif()
-endif()
-
-if(CMAKE_Fortran_COMPILER_LOADED)
-  include(${CMAKE_CURRENT_LIST_DIR}/CheckFortranFunctionExists.cmake)
-else()
-  include(${CMAKE_CURRENT_LIST_DIR}/CheckFunctionExists.cmake)
-endif()
-include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
-
-cmake_push_check_state()
-set(CMAKE_REQUIRED_QUIET ${LAPACK_FIND_QUIETLY})
-
-set(LAPACK_FOUND FALSE)
-set(LAPACK95_FOUND FALSE)
-
-set(_lapack_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
-if(BLA_STATIC)
-  if(WIN32)
-    set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
-  else()
-    set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
-  endif()
-else()
-  if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
-    # for ubuntu's libblas3gf and liblapack3gf packages
-    set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES} .so.3gf)
-  endif()
-endif()
-
-# TODO: move this stuff to a separate module
-
-macro(CHECK_LAPACK_LIBRARIES LIBRARIES _prefix _name _flags _list _threadlibs _addlibdir _subdirs _blas)
-  # This macro checks for the existence of the combination of fortran libraries
-  # given by _list.  If the combination is found, this macro checks (using the
-  # Check_Fortran_Function_Exists macro) whether can link against that library
-  # combination using the name of a routine given by _name using the linker
-  # flags given by _flags.  If the combination of libraries is found and passes
-  # the link test, LIBRARIES is set to the list of complete library paths that
-  # have been found.  Otherwise, LIBRARIES is set to FALSE.
-
-  # N.B. _prefix is the prefix applied to the names of all cached variables that
-  # are generated internally and marked advanced by this macro.
-  # _addlibdir is a list of additional search paths. _subdirs is a list of path
-  # suffixes to be used by find_library().
-
-  set(_libraries_work TRUE)
-  set(${LIBRARIES})
-  set(_combined_name)
-
-  set(_extaddlibdir "${_addlibdir}")
-  if(WIN32)
-    list(APPEND _extaddlibdir ENV LIB)
-  elseif(APPLE)
-    list(APPEND _extaddlibdir ENV DYLD_LIBRARY_PATH)
-  else()
-    list(APPEND _extaddlibdir ENV LD_LIBRARY_PATH)
-  endif()
-  list(APPEND _extaddlibdir "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}")
-
-  foreach(_library ${_list})
-    if(_library MATCHES "^-Wl,--(start|end)-group$")
-      # Respect linker flags like --start/end-group (required by MKL)
-      set(${LIBRARIES} ${${LIBRARIES}} "${_library}")
-    else()
-      set(_combined_name ${_combined_name}_${_library})
-      if(_libraries_work)
-        find_library(${_prefix}_${_library}_LIBRARY
-          NAMES ${_library}
-          PATHS ${_extaddlibdir}
-          PATH_SUFFIXES ${_subdirs}
-        )
-        #message("DEBUG: find_library(${_library}) got ${${_prefix}_${_library}_LIBRARY}")
-        mark_as_advanced(${_prefix}_${_library}_LIBRARY)
-        set(${LIBRARIES} ${${LIBRARIES}} ${${_prefix}_${_library}_LIBRARY})
-        set(_libraries_work ${${_prefix}_${_library}_LIBRARY})
-      endif()
-    endif()
-  endforeach()
-
-  if(_libraries_work)
-    # Test this combination of libraries.
-    set(CMAKE_REQUIRED_LIBRARIES ${_flags} ${${LIBRARIES}} ${_blas} ${_threadlibs})
-    #message("DEBUG: CMAKE_REQUIRED_LIBRARIES = ${CMAKE_REQUIRED_LIBRARIES}")
-    if(CMAKE_Fortran_COMPILER_LOADED)
-      check_fortran_function_exists("${_name}" ${_prefix}${_combined_name}_WORKS)
-    else()
-      check_function_exists("${_name}_" ${_prefix}${_combined_name}_WORKS)
-    endif()
-    set(CMAKE_REQUIRED_LIBRARIES)
-    set(_libraries_work ${${_prefix}${_combined_name}_WORKS})
-  endif()
-
-  if(_libraries_work)
-    if("${_list}${_blas}" STREQUAL "")
-      set(${LIBRARIES} "${LIBRARIES}-PLACEHOLDER-FOR-EMPTY-LIBRARIES")
-    else()
-      set(${LIBRARIES} ${${LIBRARIES}} ${_blas} ${_threadlibs})
-    endif()
-  else()
-    set(${LIBRARIES} FALSE)
-  endif()
-  #message("DEBUG: ${LIBRARIES} = ${${LIBRARIES}}")
-endmacro()
-
-set(LAPACK_LINKER_FLAGS)
-set(LAPACK_LIBRARIES)
-set(LAPACK95_LIBRARIES)
-
-if(LAPACK_FIND_QUIETLY OR NOT LAPACK_FIND_REQUIRED)
-  find_package(BLAS)
-else()
-  find_package(BLAS REQUIRED)
-endif()
-
-if(BLAS_FOUND)
-  set(LAPACK_LINKER_FLAGS ${BLAS_LINKER_FLAGS})
-  if(NOT $ENV{BLA_VENDOR} STREQUAL "")
-    set(BLA_VENDOR $ENV{BLA_VENDOR})
-  else()
-    if(NOT BLA_VENDOR)
-      set(BLA_VENDOR "All")
-    endif()
-  endif()
-
-  # LAPACK in the Intel MKL 10+ library?
-  if(BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
-    if(NOT LAPACK_LIBRARIES)
-      if(CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED)
-        # System-specific settings
-        if(NOT WIN32)
-          set(LAPACK_mkl_LM "-lm")
-          set(LAPACK_mkl_LDL "-ldl")
-        endif()
-
-        if(LAPACK_FIND_QUIETLY OR NOT LAPACK_FIND_REQUIRED)
-          find_package(Threads)
-        else()
-          find_package(Threads REQUIRED)
-        endif()
-
-        if(BLA_VENDOR MATCHES "_64ilp")
-          set(LAPACK_mkl_ILP_MODE "ilp64")
-        else()
-          set(LAPACK_mkl_ILP_MODE "lp64")
-        endif()
-
-        set(LAPACK_SEARCH_LIBS "")
-
-        if(BLA_F95)
-          set(LAPACK_mkl_SEARCH_SYMBOL "cheev_f95")
-          set(_LIBRARIES LAPACK95_LIBRARIES)
-          set(_BLAS_LIBRARIES ${BLAS95_LIBRARIES})
-
-          # old
-          list(APPEND LAPACK_SEARCH_LIBS
-            "mkl_lapack95")
-          # new >= 10.3
-          list(APPEND LAPACK_SEARCH_LIBS
-            "mkl_intel_c")
-          list(APPEND LAPACK_SEARCH_LIBS
-            "mkl_lapack95_${LAPACK_mkl_ILP_MODE}")
-        else()
-          set(LAPACK_mkl_SEARCH_SYMBOL "cheev")
-          set(_LIBRARIES LAPACK_LIBRARIES)
-          set(_BLAS_LIBRARIES ${BLAS_LIBRARIES})
-
-          # old and new >= 10.3
-          list(APPEND LAPACK_SEARCH_LIBS
-            "mkl_lapack")
-        endif()
-
-        # MKL uses a multitude of partially platform-specific subdirectories:
-        if(BLA_VENDOR STREQUAL "Intel10_32")
-          set(LAPACK_mkl_ARCH_NAME "ia32")
-        else()
-          set(LAPACK_mkl_ARCH_NAME "intel64")
-        endif()
-        if(WIN32)
-          set(LAPACK_mkl_OS_NAME "win")
-        elseif(APPLE)
-          set(LAPACK_mkl_OS_NAME "mac")
-        else()
-          set(LAPACK_mkl_OS_NAME "lin")
-        endif()
-        if(DEFINED ENV{MKLROOT})
-          file(TO_CMAKE_PATH "$ENV{MKLROOT}" LAPACK_mkl_MKLROOT)
-          # If MKLROOT points to the subdirectory 'mkl', use the parent directory instead
-          # so we can better detect other relevant libraries in 'compiler' or 'tbb':
-          get_filename_component(LAPACK_mkl_MKLROOT_LAST_DIR "${LAPACK_mkl_MKLROOT}" NAME)
-          if(LAPACK_mkl_MKLROOT_LAST_DIR STREQUAL "mkl")
-              get_filename_component(LAPACK_mkl_MKLROOT "${LAPACK_mkl_MKLROOT}" DIRECTORY)
-          endif()
-        endif()
-        set(LAPACK_mkl_LIB_PATH_SUFFIXES
-            "compiler/lib" "compiler/lib/${LAPACK_mkl_ARCH_NAME}_${LAPACK_mkl_OS_NAME}"
-            "mkl/lib" "mkl/lib/${LAPACK_mkl_ARCH_NAME}_${LAPACK_mkl_OS_NAME}"
-            "lib/${LAPACK_mkl_ARCH_NAME}_${LAPACK_mkl_OS_NAME}")
-
-        # First try empty lapack libs
-        if(NOT ${_LIBRARIES})
-          check_lapack_libraries(
-            ${_LIBRARIES}
-            LAPACK
-            ${LAPACK_mkl_SEARCH_SYMBOL}
-            ""
-            ""
-            "${CMAKE_THREAD_LIBS_INIT};${LAPACK_mkl_LM};${LAPACK_mkl_LDL}"
-            "${LAPACK_mkl_MKLROOT}"
-            "${LAPACK_mkl_LIB_PATH_SUFFIXES}"
-            "${_BLAS_LIBRARIES}"
-          )
-        endif()
-
-        # Then try the search libs
-        foreach(IT ${LAPACK_SEARCH_LIBS})
-          string(REPLACE " " ";" SEARCH_LIBS ${IT})
-          if(NOT ${_LIBRARIES})
-            check_lapack_libraries(
-              ${_LIBRARIES}
-              LAPACK
-              ${LAPACK_mkl_SEARCH_SYMBOL}
-              ""
-              "${SEARCH_LIBS}"
-              "${CMAKE_THREAD_LIBS_INIT};${LAPACK_mkl_LM};${LAPACK_mkl_LDL}"
-              "${LAPACK_mkl_MKLROOT}"
-              "${LAPACK_mkl_LIB_PATH_SUFFIXES}"
-              "${_BLAS_LIBRARIES}"
-            )
-          endif()
-        endforeach()
-
-        unset(LAPACK_mkl_ILP_MODE)
-        unset(LAPACK_mkl_SEARCH_SYMBOL)
-        unset(LAPACK_mkl_LM)
-        unset(LAPACK_mkl_LDL)
-        unset(LAPACK_mkl_MKLROOT)
-        unset(LAPACK_mkl_ARCH_NAME)
-        unset(LAPACK_mkl_OS_NAME)
-        unset(LAPACK_mkl_LIB_PATH_SUFFIXES)
-      endif()
-    endif()
-  endif()
-
-  # gotoblas? (http://www.tacc.utexas.edu/tacc-projects/gotoblas2)
-  if(BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All")
-    if(NOT LAPACK_LIBRARIES)
-      check_lapack_libraries(
-        LAPACK_LIBRARIES
-        LAPACK
-        cheev
-        ""
-        "goto2"
-        ""
-        ""
-        ""
-        "${BLAS_LIBRARIES}"
-      )
-    endif()
-  endif()
-
-  # OpenBLAS? (http://www.openblas.net)
-  if(BLA_VENDOR STREQUAL "OpenBLAS" OR BLA_VENDOR STREQUAL "All")
-    if(NOT LAPACK_LIBRARIES)
-      check_lapack_libraries(
-        LAPACK_LIBRARIES
-        LAPACK
-        cheev
-        ""
-        "openblas"
-        ""
-        ""
-        ""
-        "${BLAS_LIBRARIES}"
-      )
-    endif()
-  endif()
-
-  # ArmPL? (https://developer.arm.com/tools-and-software/server-and-hpc/compile/arm-compiler-for-linux/arm-performance-libraries)
-  if(BLA_VENDOR MATCHES "Arm" OR BLA_VENDOR STREQUAL "All")
-
-    # Check for 64bit Integer support
-    if(BLA_VENDOR MATCHES "_ilp64")
-      set(LAPACK_armpl_LIB "armpl_ilp64")
-    else()
-      set(LAPACK_armpl_LIB "armpl_lp64")
-    endif()
-
-    # Check for OpenMP support, VIA BLA_VENDOR of Arm_mp or Arm_ipl64_mp
-    if(BLA_VENDOR MATCHES "_mp")
-     set(LAPACK_armpl_LIB "${LAPACK_armpl_LIB}_mp")
-    endif()
-
-    if(NOT LAPACK_LIBRARIES)
-      check_lapack_libraries(
-        LAPACK_LIBRARIES
-        LAPACK
-        cheev
-        ""
-        "${LAPACK_armpl_LIB}"
-        ""
-        ""
-        ""
-        "${BLAS_LIBRARIES}"
-      )
-    endif()
-  endif()
-
-  # FLAME's blis library? (https://github.com/flame/blis)
-  if(BLA_VENDOR STREQUAL "FLAME" OR BLA_VENDOR STREQUAL "All")
-    if(NOT LAPACK_LIBRARIES)
-      check_lapack_libraries(
-        LAPACK_LIBRARIES
-        LAPACK
-        cheev
-        ""
-        "flame"
-        ""
-        ""
-        ""
-        "${BLAS_LIBRARIES}"
-      )
-    endif()
-  endif()
-
-  # BLAS in acml library?
-  if(BLA_VENDOR MATCHES "ACML" OR BLA_VENDOR STREQUAL "All")
-    if(BLAS_LIBRARIES MATCHES ".+acml.+")
-      set(LAPACK_LIBRARIES ${BLAS_LIBRARIES})
-    endif()
-  endif()
-
-  # Apple LAPACK library?
-  if(BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All")
-    if(NOT LAPACK_LIBRARIES)
-      check_lapack_libraries(
-        LAPACK_LIBRARIES
-        LAPACK
-        cheev
-        ""
-        "Accelerate"
-        ""
-        ""
-        ""
-        "${BLAS_LIBRARIES}"
-      )
-    endif()
-  endif()
-
-  # Apple NAS (vecLib) library?
-  if(BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All")
-    if(NOT LAPACK_LIBRARIES)
-      check_lapack_libraries(
-        LAPACK_LIBRARIES
-        LAPACK
-        cheev
-        ""
-        "vecLib"
-        ""
-        ""
-        ""
-        "${BLAS_LIBRARIES}"
-      )
-    endif()
-  endif()
-
-  # Generic LAPACK library?
-  if(BLA_VENDOR STREQUAL "Generic" OR
-      BLA_VENDOR STREQUAL "ATLAS" OR
-      BLA_VENDOR STREQUAL "All")
-    if(NOT LAPACK_LIBRARIES)
-      check_lapack_libraries(
-        LAPACK_LIBRARIES
-        LAPACK
-        cheev
-        ""
-        "lapack"
-        ""
-        ""
-        ""
-        "${BLAS_LIBRARIES}"
-      )
-    endif()
-  endif()
-else()
-  message(STATUS "LAPACK requires BLAS")
-endif()
-
-if(BLA_F95)
-  if(LAPACK95_LIBRARIES)
-    set(LAPACK95_FOUND TRUE)
-  else()
-    set(LAPACK95_FOUND FALSE)
-  endif()
-  if(NOT LAPACK_FIND_QUIETLY)
-    if(LAPACK95_FOUND)
-      message(STATUS "A library with LAPACK95 API found.")
-    else()
-      if(LAPACK_FIND_REQUIRED)
-        message(FATAL_ERROR
-          "A required library with LAPACK95 API not found. Please specify library location."
-        )
-      else()
-        message(STATUS
-          "A library with LAPACK95 API not found. Please specify library location."
-        )
-      endif()
-    endif()
-  endif()
-  set(LAPACK_FOUND "${LAPACK95_FOUND}")
-  set(LAPACK_LIBRARIES "${LAPACK95_LIBRARIES}")
-else()
-  if(LAPACK_LIBRARIES)
-    set(LAPACK_FOUND TRUE)
-  else()
-    set(LAPACK_FOUND FALSE)
-  endif()
-
-  if(NOT LAPACK_FIND_QUIETLY)
-    if(LAPACK_FOUND)
-      message(STATUS "A library with LAPACK API found.")
-    else()
-      if(LAPACK_FIND_REQUIRED)
-        message(FATAL_ERROR
-          "A required library with LAPACK API not found. Please specify library location."
-        )
-      else()
-        message(STATUS
-          "A library with LAPACK API not found. Please specify library location."
-        )
-      endif()
-    endif()
-  endif()
-endif()
-
-# On compilers that implicitly link LAPACK (such as ftn, cc, and CC on Cray HPC machines)
-# we used a placeholder for empty LAPACK_LIBRARIES to get through our logic above.
-if(LAPACK_LIBRARIES STREQUAL "LAPACK_LIBRARIES-PLACEHOLDER-FOR-EMPTY-LIBRARIES")
-  set(LAPACK_LIBRARIES "")
-endif()
-
-if(NOT TARGET LAPACK::LAPACK)
-  add_library(LAPACK::LAPACK INTERFACE IMPORTED)
-  set(_lapack_libs "${LAPACK_LIBRARIES}")
-  if(_lapack_libs AND TARGET BLAS::BLAS)
-    # remove the ${BLAS_LIBRARIES} from the interface and replace it
-    # with the BLAS::BLAS target
-    list(REMOVE_ITEM _lapack_libs "${BLAS_LIBRARIES}")
-  endif()
-
-  if(_lapack_libs)
-    set_target_properties(LAPACK::LAPACK PROPERTIES
-      INTERFACE_LINK_LIBRARIES "${_lapack_libs}"
-    )
-  endif()
-  unset(_lapack_libs)
-endif()
-
-cmake_pop_check_state()
-set(CMAKE_FIND_LIBRARY_SUFFIXES ${_lapack_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
diff --git a/share/cmake-3.18/Modules/FindLATEX.cmake b/share/cmake-3.18/Modules/FindLATEX.cmake
deleted file mode 100644
index b0dad7d..0000000
--- a/share/cmake-3.18/Modules/FindLATEX.cmake
+++ /dev/null
@@ -1,279 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindLATEX
----------
-
-Find LaTeX
-
-This module finds an installed LaTeX and determines the location
-of the compiler.  Additionally the module looks for Latex-related
-software like BibTeX.
-
-This module sets the following result variables::
-
-  LATEX_FOUND:          whether found Latex and requested components
-  LATEX_<component>_FOUND:  whether found <component>
-  LATEX_COMPILER:       path to the LaTeX compiler
-  PDFLATEX_COMPILER:    path to the PdfLaTeX compiler
-  XELATEX_COMPILER:     path to the XeLaTeX compiler
-  LUALATEX_COMPILER:    path to the LuaLaTeX compiler
-  BIBTEX_COMPILER:      path to the BibTeX compiler
-  BIBER_COMPILER:       path to the Biber compiler
-  MAKEINDEX_COMPILER:   path to the MakeIndex compiler
-  XINDY_COMPILER:       path to the xindy compiler
-  DVIPS_CONVERTER:      path to the DVIPS converter
-  DVIPDF_CONVERTER:     path to the DVIPDF converter
-  PS2PDF_CONVERTER:     path to the PS2PDF converter
-  PDFTOPS_CONVERTER:    path to the pdftops converter
-  LATEX2HTML_CONVERTER: path to the LaTeX2Html converter
-  HTLATEX_COMPILER:     path to the htlatex compiler
-
-Possible components are::
-
-  PDFLATEX
-  XELATEX
-  LUALATEX
-  BIBTEX
-  BIBER
-  MAKEINDEX
-  XINDY
-  DVIPS
-  DVIPDF
-  PS2PDF
-  PDFTOPS
-  LATEX2HTML
-  HTLATEX
-
-Example Usages::
-
-  find_package(LATEX)
-  find_package(LATEX COMPONENTS PDFLATEX)
-  find_package(LATEX COMPONENTS BIBTEX PS2PDF)
-#]=======================================================================]
-
-if (WIN32)
-  # Try to find the MikTex binary path (look for its package manager).
-  find_path(MIKTEX_BINARY_PATH mpm.exe
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MiK\\MiKTeX\\CurrentVersion\\MiKTeX;Install Root]/miktex/bin"
-    DOC
-    "Path to the MikTex binary directory."
-  )
-  mark_as_advanced(MIKTEX_BINARY_PATH)
-
-  # Try to find the GhostScript binary path (look for gswin32).
-  get_filename_component(GHOSTSCRIPT_BINARY_PATH_FROM_REGISTERY_8_00
-     "[HKEY_LOCAL_MACHINE\\SOFTWARE\\AFPL Ghostscript\\8.00;GS_DLL]" PATH
-  )
-
-  get_filename_component(GHOSTSCRIPT_BINARY_PATH_FROM_REGISTERY_7_04
-     "[HKEY_LOCAL_MACHINE\\SOFTWARE\\AFPL Ghostscript\\7.04;GS_DLL]" PATH
-  )
-
-  find_path(GHOSTSCRIPT_BINARY_PATH gswin32.exe
-    ${GHOSTSCRIPT_BINARY_PATH_FROM_REGISTERY_8_00}
-    ${GHOSTSCRIPT_BINARY_PATH_FROM_REGISTERY_7_04}
-    DOC "Path to the GhostScript binary directory."
-  )
-  mark_as_advanced(GHOSTSCRIPT_BINARY_PATH)
-
-  find_path(GHOSTSCRIPT_LIBRARY_PATH ps2pdf13.bat
-    "${GHOSTSCRIPT_BINARY_PATH}/../lib"
-    DOC "Path to the GhostScript library directory."
-  )
-  mark_as_advanced(GHOSTSCRIPT_LIBRARY_PATH)
-endif ()
-
-# try to find Latex and the related programs
-find_program(LATEX_COMPILER
-  NAMES latex
-  PATHS ${MIKTEX_BINARY_PATH}
-        /usr/bin
-)
-
-# find pdflatex
-find_program(PDFLATEX_COMPILER
-  NAMES pdflatex
-  PATHS ${MIKTEX_BINARY_PATH}
-        /usr/bin
-)
-if (PDFLATEX_COMPILER)
-  set(LATEX_PDFLATEX_FOUND TRUE)
-else()
-  set(LATEX_PDFLATEX_FOUND FALSE)
-endif()
-
-# find xelatex
-find_program(XELATEX_COMPILER
-  NAMES xelatex
-  PATHS ${MIKTEX_BINARY_PATH}
-        /usr/bin
-)
-if (XELATEX_COMPILER)
-  set(LATEX_XELATEX_FOUND TRUE)
-else()
-  set(LATEX_XELATEX_FOUND FALSE)
-endif()
-
-# find lualatex
-find_program(LUALATEX_COMPILER
-  NAMES lualatex
-  PATHS ${MIKTEX_BINARY_PATH}
-        /usr/bin
-)
-if (LUALATEX_COMPILER)
-  set(LATEX_LUALATEX_FOUND TRUE)
-else()
-  set(LATEX_LUALATEX_FOUND FALSE)
-endif()
-
-# find bibtex
-find_program(BIBTEX_COMPILER
-  NAMES bibtex
-  PATHS ${MIKTEX_BINARY_PATH}
-        /usr/bin
-)
-if (BIBTEX_COMPILER)
-  set(LATEX_BIBTEX_FOUND TRUE)
-else()
-  set(LATEX_BIBTEX_FOUND FALSE)
-endif()
-
-# find biber
-find_program(BIBER_COMPILER
-  NAMES biber
-  PATHS ${MIKTEX_BINARY_PATH}
-        /usr/bin
-)
-if (BIBER_COMPILER)
-  set(LATEX_BIBER_FOUND TRUE)
-else()
-  set(LATEX_BIBER_FOUND FALSE)
-endif()
-
-# find makeindex
-find_program(MAKEINDEX_COMPILER
-  NAMES makeindex
-  PATHS ${MIKTEX_BINARY_PATH}
-        /usr/bin
-)
-if (MAKEINDEX_COMPILER)
-  set(LATEX_MAKEINDEX_FOUND TRUE)
-else()
-  set(LATEX_MAKEINDEX_FOUND FALSE)
-endif()
-
-# find xindy
-find_program(XINDY_COMPILER
-  NAMES xindy
-  PATHS ${MIKTEX_BINARY_PATH}
-        /usr/bin
-)
-if (XINDY_COMPILER)
-  set(LATEX_XINDY_FOUND TRUE)
-else()
-  set(LATEX_XINDY_FOUND FALSE)
-endif()
-
-# find dvips
-find_program(DVIPS_CONVERTER
-  NAMES dvips
-  PATHS ${MIKTEX_BINARY_PATH}
-        /usr/bin
-)
-if (DVIPS_CONVERTER)
-  set(LATEX_DVIPS_FOUND TRUE)
-else()
-  set(LATEX_DVIPS_FOUND FALSE)
-endif()
-
-# find dvipdf
-find_program(DVIPDF_CONVERTER
-  NAMES dvipdfm dvipdft dvipdf
-  PATHS ${MIKTEX_BINARY_PATH}
-        /usr/bin
-)
-if (DVIPDF_CONVERTER)
-  set(LATEX_DVIPDF_FOUND TRUE)
-else()
-  set(LATEX_DVIPDF_FOUND FALSE)
-endif()
-
-# find ps2pdf
-if (WIN32)
-  find_program(PS2PDF_CONVERTER
-    NAMES ps2pdf14.bat ps2pdf14 ps2pdf
-    PATHS ${GHOSTSCRIPT_LIBRARY_PATH}
-          ${MIKTEX_BINARY_PATH}
-  )
-else ()
-  find_program(PS2PDF_CONVERTER
-    NAMES ps2pdf14 ps2pdf
-  )
-endif ()
-if (PS2PDF_CONVERTER)
-  set(LATEX_PS2PDF_FOUND TRUE)
-else()
-  set(LATEX_PS2PDF_FOUND FALSE)
-endif()
-
-# find pdftops
-find_program(PDFTOPS_CONVERTER
-  NAMES pdftops
-  PATHS ${MIKTEX_BINARY_PATH}
-        /usr/bin
-)
-if (PDFTOPS_CONVERTER)
-  set(LATEX_PDFTOPS_FOUND TRUE)
-else()
-  set(LATEX_PDFTOPS_FOUND FALSE)
-endif()
-
-# find latex2html
-find_program(LATEX2HTML_CONVERTER
-  NAMES latex2html
-  PATHS ${MIKTEX_BINARY_PATH}
-        /usr/bin
-)
-if (LATEX2HTML_CONVERTER)
-  set(LATEX_LATEX2HTML_FOUND TRUE)
-else()
-  set(LATEX_LATEX2HTML_FOUND FALSE)
-endif()
-
-# find htlatex
-find_program(HTLATEX_COMPILER
-  NAMES htlatex
-  PATHS ${MIKTEX_BINARY_PATH}
-        /usr/bin
-)
-if (HTLATEX_COMPILER)
-  set(LATEX_HTLATEX_FOUND TRUE)
-else()
-  set(LATEX_HTLATEX_FOUND FALSE)
-endif()
-
-
-mark_as_advanced(
-  LATEX_COMPILER
-  PDFLATEX_COMPILER
-  XELATEX_COMPILER
-  LUALATEX_COMPILER
-  BIBTEX_COMPILER
-  BIBER_COMPILER
-  MAKEINDEX_COMPILER
-  XINDY_COMPILER
-  DVIPS_CONVERTER
-  DVIPDF_CONVERTER
-  PS2PDF_CONVERTER
-  PDFTOPS_CONVERTER
-  LATEX2HTML_CONVERTER
-  HTLATEX_COMPILER
-)
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(LATEX
-  REQUIRED_VARS LATEX_COMPILER
-  HANDLE_COMPONENTS
-)
diff --git a/share/cmake-3.18/Modules/FindLTTngUST.cmake b/share/cmake-3.18/Modules/FindLTTngUST.cmake
deleted file mode 100644
index 9cd17eb..0000000
--- a/share/cmake-3.18/Modules/FindLTTngUST.cmake
+++ /dev/null
@@ -1,100 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindLTTngUST
-------------
-
-Find
-`Linux Trace Toolkit Next Generation (LTTng-UST) <http://lttng.org/>`__ library.
-
-Imported target
-^^^^^^^^^^^^^^^
-
-This module defines the following :prop_tgt:`IMPORTED` target:
-
-``LTTng::UST``
-  The LTTng-UST library, if found
-
-Result variables
-^^^^^^^^^^^^^^^^
-
-This module sets the following
-
-``LTTNGUST_FOUND``
-  ``TRUE`` if system has LTTng-UST
-``LTTNGUST_INCLUDE_DIRS``
-  The LTTng-UST include directories
-``LTTNGUST_LIBRARIES``
-  The libraries needed to use LTTng-UST
-``LTTNGUST_VERSION_STRING``
-  The LTTng-UST version
-``LTTNGUST_HAS_TRACEF``
-  ``TRUE`` if the ``tracef()`` API is available in the system's LTTng-UST
-``LTTNGUST_HAS_TRACELOG``
-  ``TRUE`` if the ``tracelog()`` API is available in the system's LTTng-UST
-#]=======================================================================]
-
-find_path(LTTNGUST_INCLUDE_DIRS NAMES lttng/tracepoint.h)
-find_library(LTTNGUST_LIBRARIES NAMES lttng-ust)
-
-if(LTTNGUST_INCLUDE_DIRS AND LTTNGUST_LIBRARIES)
-  # find tracef() and tracelog() support
-  set(LTTNGUST_HAS_TRACEF 0)
-  set(LTTNGUST_HAS_TRACELOG 0)
-
-  if(EXISTS "${LTTNGUST_INCLUDE_DIRS}/lttng/tracef.h")
-    set(LTTNGUST_HAS_TRACEF TRUE)
-  endif()
-
-  if(EXISTS "${LTTNGUST_INCLUDE_DIRS}/lttng/tracelog.h")
-    set(LTTNGUST_HAS_TRACELOG TRUE)
-  endif()
-
-  # get version
-  set(lttngust_version_file "${LTTNGUST_INCLUDE_DIRS}/lttng/ust-version.h")
-
-  if(EXISTS "${lttngust_version_file}")
-    file(STRINGS "${lttngust_version_file}" lttngust_version_major_string
-         REGEX "^[\t ]*#define[\t ]+LTTNG_UST_MAJOR_VERSION[\t ]+[0-9]+[\t ]*$")
-    file(STRINGS "${lttngust_version_file}" lttngust_version_minor_string
-         REGEX "^[\t ]*#define[\t ]+LTTNG_UST_MINOR_VERSION[\t ]+[0-9]+[\t ]*$")
-    file(STRINGS "${lttngust_version_file}" lttngust_version_patch_string
-         REGEX "^[\t ]*#define[\t ]+LTTNG_UST_PATCHLEVEL_VERSION[\t ]+[0-9]+[\t ]*$")
-    string(REGEX REPLACE ".*([0-9]+).*" "\\1"
-           lttngust_v_major "${lttngust_version_major_string}")
-    string(REGEX REPLACE ".*([0-9]+).*" "\\1"
-           lttngust_v_minor "${lttngust_version_minor_string}")
-    string(REGEX REPLACE ".*([0-9]+).*" "\\1"
-           lttngust_v_patch "${lttngust_version_patch_string}")
-    set(LTTNGUST_VERSION_STRING
-        "${lttngust_v_major}.${lttngust_v_minor}.${lttngust_v_patch}")
-    unset(lttngust_version_major_string)
-    unset(lttngust_version_minor_string)
-    unset(lttngust_version_patch_string)
-    unset(lttngust_v_major)
-    unset(lttngust_v_minor)
-    unset(lttngust_v_patch)
-  endif()
-
-  unset(lttngust_version_file)
-
-  if(NOT TARGET LTTng::UST)
-    add_library(LTTng::UST UNKNOWN IMPORTED)
-    set_target_properties(LTTng::UST PROPERTIES
-      INTERFACE_INCLUDE_DIRECTORIES "${LTTNGUST_INCLUDE_DIRS}"
-      INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS}
-      IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-      IMPORTED_LOCATION "${LTTNGUST_LIBRARIES}")
-  endif()
-
-  # add libdl to required libraries
-  set(LTTNGUST_LIBRARIES ${LTTNGUST_LIBRARIES} ${CMAKE_DL_LIBS})
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(LTTngUST FOUND_VAR LTTNGUST_FOUND
-                                  REQUIRED_VARS LTTNGUST_LIBRARIES
-                                                LTTNGUST_INCLUDE_DIRS
-                                  VERSION_VAR LTTNGUST_VERSION_STRING)
-mark_as_advanced(LTTNGUST_LIBRARIES LTTNGUST_INCLUDE_DIRS)
diff --git a/share/cmake-3.18/Modules/FindLibArchive.cmake b/share/cmake-3.18/Modules/FindLibArchive.cmake
deleted file mode 100644
index ce3c8b8..0000000
--- a/share/cmake-3.18/Modules/FindLibArchive.cmake
+++ /dev/null
@@ -1,76 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindLibArchive
---------------
-
-Find libarchive library and headers.
-Libarchive is multi-format archive and compression library.
-
-The module defines the following variables:
-
-::
-
-  LibArchive_FOUND        - true if libarchive was found
-  LibArchive_INCLUDE_DIRS - include search path
-  LibArchive_LIBRARIES    - libraries to link
-  LibArchive_VERSION      - libarchive 3-component version number
-
-The module defines the following ``IMPORTED`` targets:
-
-::
-
-  LibArchive::LibArchive  - target for linking against libarchive
-#]=======================================================================]
-
-find_path(LibArchive_INCLUDE_DIR
-  NAMES archive.h
-  PATHS
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\LibArchive;InstallPath]/include"
-  DOC "libarchive include directory"
-  )
-
-find_library(LibArchive_LIBRARY
-  NAMES archive libarchive
-  PATHS
-  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\LibArchive;InstallPath]/lib"
-  DOC "libarchive library"
-  )
-
-mark_as_advanced(LibArchive_INCLUDE_DIR LibArchive_LIBRARY)
-
-# Extract the version number from the header.
-if(LibArchive_INCLUDE_DIR AND EXISTS "${LibArchive_INCLUDE_DIR}/archive.h")
-  # The version string appears in one of three known formats in the header:
-  #  #define ARCHIVE_LIBRARY_VERSION "libarchive 2.4.12"
-  #  #define ARCHIVE_VERSION_STRING "libarchive 2.8.4"
-  #  #define ARCHIVE_VERSION_ONLY_STRING "3.2.0"
-  # Match any format.
-  set(_LibArchive_VERSION_REGEX "^#define[ \t]+ARCHIVE[_A-Z]+VERSION[_A-Z]*[ \t]+\"(libarchive +)?([0-9]+)\\.([0-9]+)\\.([0-9]+)[^\"]*\".*$")
-  file(STRINGS "${LibArchive_INCLUDE_DIR}/archive.h" _LibArchive_VERSION_STRING LIMIT_COUNT 1 REGEX "${_LibArchive_VERSION_REGEX}")
-  if(_LibArchive_VERSION_STRING)
-    string(REGEX REPLACE "${_LibArchive_VERSION_REGEX}" "\\2.\\3.\\4" LibArchive_VERSION "${_LibArchive_VERSION_STRING}")
-  endif()
-  unset(_LibArchive_VERSION_REGEX)
-  unset(_LibArchive_VERSION_STRING)
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(LibArchive
-                                  REQUIRED_VARS LibArchive_LIBRARY LibArchive_INCLUDE_DIR
-                                  VERSION_VAR LibArchive_VERSION
-  )
-unset(LIBARCHIVE_FOUND)
-
-if(LibArchive_FOUND)
-  set(LibArchive_INCLUDE_DIRS ${LibArchive_INCLUDE_DIR})
-  set(LibArchive_LIBRARIES    ${LibArchive_LIBRARY})
-
-  if (NOT TARGET LibArchive::LibArchive)
-    add_library(LibArchive::LibArchive UNKNOWN IMPORTED)
-    set_target_properties(LibArchive::LibArchive PROPERTIES
-      IMPORTED_LOCATION "${LibArchive_LIBRARY}"
-      INTERFACE_INCLUDE_DIRECTORIES "${LibArchive_INCLUDE_DIR}")
-  endif ()
-endif()
diff --git a/share/cmake-3.18/Modules/FindLibLZMA.cmake b/share/cmake-3.18/Modules/FindLibLZMA.cmake
deleted file mode 100644
index 200d6bf..0000000
--- a/share/cmake-3.18/Modules/FindLibLZMA.cmake
+++ /dev/null
@@ -1,124 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindLibLZMA
------------
-
-Find LZMA compression algorithm headers and library.
-
-
-Imported Targets
-^^^^^^^^^^^^^^^^
-
-This module defines :prop_tgt:`IMPORTED` target ``LibLZMA::LibLZMA``, if
-liblzma has been found.
-
-Result variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``LIBLZMA_FOUND``
-  True if liblzma headers and library were found.
-``LIBLZMA_INCLUDE_DIRS``
-  Directory where liblzma headers are located.
-``LIBLZMA_LIBRARIES``
-  Lzma libraries to link against.
-``LIBLZMA_HAS_AUTO_DECODER``
-  True if lzma_auto_decoder() is found (required).
-``LIBLZMA_HAS_EASY_ENCODER``
-  True if lzma_easy_encoder() is found (required).
-``LIBLZMA_HAS_LZMA_PRESET``
-  True if lzma_lzma_preset() is found (required).
-``LIBLZMA_VERSION_MAJOR``
-  The major version of lzma
-``LIBLZMA_VERSION_MINOR``
-  The minor version of lzma
-``LIBLZMA_VERSION_PATCH``
-  The patch version of lzma
-``LIBLZMA_VERSION_STRING``
-  version number as a string (ex: "5.0.3")
-#]=======================================================================]
-
-find_path(LIBLZMA_INCLUDE_DIR lzma.h )
-if(NOT LIBLZMA_LIBRARY)
-  find_library(LIBLZMA_LIBRARY_RELEASE NAMES lzma liblzma PATH_SUFFIXES lib)
-  find_library(LIBLZMA_LIBRARY_DEBUG NAMES lzmad liblzmad PATH_SUFFIXES lib)
-  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-  select_library_configurations(LIBLZMA)
-else()
-  file(TO_CMAKE_PATH "${LIBLZMA_LIBRARY}" LIBLZMA_LIBRARY)
-endif()
-
-if(LIBLZMA_INCLUDE_DIR AND EXISTS "${LIBLZMA_INCLUDE_DIR}/lzma/version.h")
-    file(STRINGS "${LIBLZMA_INCLUDE_DIR}/lzma/version.h" LIBLZMA_HEADER_CONTENTS REGEX "#define LZMA_VERSION_[A-Z]+ [0-9]+")
-
-    string(REGEX REPLACE ".*#define LZMA_VERSION_MAJOR ([0-9]+).*" "\\1" LIBLZMA_VERSION_MAJOR "${LIBLZMA_HEADER_CONTENTS}")
-    string(REGEX REPLACE ".*#define LZMA_VERSION_MINOR ([0-9]+).*" "\\1" LIBLZMA_VERSION_MINOR "${LIBLZMA_HEADER_CONTENTS}")
-    string(REGEX REPLACE ".*#define LZMA_VERSION_PATCH ([0-9]+).*" "\\1" LIBLZMA_VERSION_PATCH "${LIBLZMA_HEADER_CONTENTS}")
-
-    set(LIBLZMA_VERSION_STRING "${LIBLZMA_VERSION_MAJOR}.${LIBLZMA_VERSION_MINOR}.${LIBLZMA_VERSION_PATCH}")
-    unset(LIBLZMA_HEADER_CONTENTS)
-endif()
-
-# We're using new code known now as XZ, even library still been called LZMA
-# it can be found in http://tukaani.org/xz/
-# Avoid using old codebase
-if (LIBLZMA_LIBRARY)
-  include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake)
-  set(CMAKE_REQUIRED_QUIET_SAVE ${CMAKE_REQUIRED_QUIET})
-  set(CMAKE_REQUIRED_QUIET ${LibLZMA_FIND_QUIETLY})
-  if(NOT LIBLZMA_LIBRARY_RELEASE AND NOT LIBLZMA_LIBRARY_DEBUG)
-    set(LIBLZMA_LIBRARY_check ${LIBLZMA_LIBRARY})
-  elseif(LIBLZMA_LIBRARY_RELEASE)
-    set(LIBLZMA_LIBRARY_check ${LIBLZMA_LIBRARY_RELEASE})
-  elseif(LIBLZMA_LIBRARY_DEBUG)
-    set(LIBLZMA_LIBRARY_check ${LIBLZMA_LIBRARY_DEBUG})
-  endif()
-  CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARY_check} lzma_auto_decoder "" LIBLZMA_HAS_AUTO_DECODER)
-  CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARY_check} lzma_easy_encoder "" LIBLZMA_HAS_EASY_ENCODER)
-  CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARY_check} lzma_lzma_preset "" LIBLZMA_HAS_LZMA_PRESET)
-  unset(LIBLZMA_LIBRARY_check)
-  set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE})
-endif ()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(LibLZMA  REQUIRED_VARS  LIBLZMA_LIBRARY
-                                                          LIBLZMA_INCLUDE_DIR
-                                                          LIBLZMA_HAS_AUTO_DECODER
-                                                          LIBLZMA_HAS_EASY_ENCODER
-                                                          LIBLZMA_HAS_LZMA_PRESET
-                                           VERSION_VAR    LIBLZMA_VERSION_STRING
-                                 )
-mark_as_advanced( LIBLZMA_INCLUDE_DIR LIBLZMA_LIBRARY )
-
-if (LIBLZMA_FOUND)
-    set(LIBLZMA_LIBRARIES ${LIBLZMA_LIBRARY})
-    set(LIBLZMA_INCLUDE_DIRS ${LIBLZMA_INCLUDE_DIR})
-    if(NOT TARGET LibLZMA::LibLZMA)
-        add_library(LibLZMA::LibLZMA UNKNOWN IMPORTED)
-        set_target_properties(LibLZMA::LibLZMA PROPERTIES
-                              INTERFACE_INCLUDE_DIRECTORIES ${LIBLZMA_INCLUDE_DIR}
-                              IMPORTED_LINK_INTERFACE_LANGUAGES C)
-
-        if(LIBLZMA_LIBRARY_RELEASE)
-            set_property(TARGET LibLZMA::LibLZMA APPEND PROPERTY
-                IMPORTED_CONFIGURATIONS RELEASE)
-            set_target_properties(LibLZMA::LibLZMA PROPERTIES
-                IMPORTED_LOCATION_RELEASE "${LIBLZMA_LIBRARY_RELEASE}")
-        endif()
-
-        if(LIBLZMA_LIBRARY_DEBUG)
-            set_property(TARGET LibLZMA::LibLZMA APPEND PROPERTY
-                IMPORTED_CONFIGURATIONS DEBUG)
-            set_target_properties(LibLZMA::LibLZMA PROPERTIES
-                IMPORTED_LOCATION_DEBUG "${LIBLZMA_LIBRARY_DEBUG}")
-        endif()
-
-        if(NOT LIBLZMA_LIBRARY_RELEASE AND NOT LIBLZMA_LIBRARY_DEBUG)
-            set_target_properties(LibLZMA::LibLZMA PROPERTIES
-                IMPORTED_LOCATION "${LIBLZMA_LIBRARY}")
-        endif()
-    endif()
-endif ()
diff --git a/share/cmake-3.18/Modules/FindLibXml2.cmake b/share/cmake-3.18/Modules/FindLibXml2.cmake
deleted file mode 100644
index f551dfe..0000000
--- a/share/cmake-3.18/Modules/FindLibXml2.cmake
+++ /dev/null
@@ -1,120 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindLibXml2
------------
-
-Find the XML processing library (libxml2).
-
-IMPORTED Targets
-^^^^^^^^^^^^^^^^
-
-The following :prop_tgt:`IMPORTED` targets may be defined:
-
-``LibXml2::LibXml2``
-  If the libxml2 library has been found
-``LibXml2::xmllint``
-  If the xmllint command-line executable has been found
-
-Result variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``LibXml2_FOUND``
-  true if libxml2 headers and libraries were found
-``LIBXML2_INCLUDE_DIR``
-  the directory containing LibXml2 headers
-``LIBXML2_INCLUDE_DIRS``
-  list of the include directories needed to use LibXml2
-``LIBXML2_LIBRARIES``
-  LibXml2 libraries to be linked
-``LIBXML2_DEFINITIONS``
-  the compiler switches required for using LibXml2
-``LIBXML2_XMLLINT_EXECUTABLE``
-  path to the XML checking tool xmllint coming with LibXml2
-``LIBXML2_VERSION_STRING``
-  the version of LibXml2 found (since CMake 2.8.8)
-
-Cache variables
-^^^^^^^^^^^^^^^
-
-The following cache variables may also be set:
-
-``LIBXML2_INCLUDE_DIR``
-  the directory containing LibXml2 headers
-``LIBXML2_LIBRARY``
-  path to the LibXml2 library
-#]=======================================================================]
-
-# use pkg-config to get the directories and then use these values
-# in the find_path() and find_library() calls
-find_package(PkgConfig QUIET)
-PKG_CHECK_MODULES(PC_LIBXML QUIET libxml-2.0)
-
-find_path(LIBXML2_INCLUDE_DIR NAMES libxml/xpath.h
-   HINTS
-   ${PC_LIBXML_INCLUDEDIR}
-   ${PC_LIBXML_INCLUDE_DIRS}
-   PATH_SUFFIXES libxml2
-   )
-
-# CMake 3.9 and below used 'LIBXML2_LIBRARIES' as the name of
-# the cache entry storing the find_library result.  Use the
-# value if it was set by the project or user.
-if(DEFINED LIBXML2_LIBRARIES AND NOT DEFINED LIBXML2_LIBRARY)
-  set(LIBXML2_LIBRARY ${LIBXML2_LIBRARIES})
-endif()
-
-find_library(LIBXML2_LIBRARY NAMES xml2 libxml2
-   HINTS
-   ${PC_LIBXML_LIBDIR}
-   ${PC_LIBXML_LIBRARY_DIRS}
-   )
-
-find_program(LIBXML2_XMLLINT_EXECUTABLE xmllint)
-# for backwards compat. with KDE 4.0.x:
-set(XMLLINT_EXECUTABLE "${LIBXML2_XMLLINT_EXECUTABLE}")
-
-if(LIBXML2_INCLUDE_DIR AND EXISTS "${LIBXML2_INCLUDE_DIR}/libxml/xmlversion.h")
-    file(STRINGS "${LIBXML2_INCLUDE_DIR}/libxml/xmlversion.h" libxml2_version_str
-         REGEX "^#define[\t ]+LIBXML_DOTTED_VERSION[\t ]+\".*\"")
-
-    string(REGEX REPLACE "^#define[\t ]+LIBXML_DOTTED_VERSION[\t ]+\"([^\"]*)\".*" "\\1"
-           LIBXML2_VERSION_STRING "${libxml2_version_str}")
-    unset(libxml2_version_str)
-endif()
-
-set(LIBXML2_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR})
-set(LIBXML2_LIBRARIES ${LIBXML2_LIBRARY})
-
-# Did we find the same installation as pkg-config?
-# If so, use additional information from it.
-unset(LIBXML2_DEFINITIONS)
-foreach(libxml2_pc_lib_dir IN LISTS PC_LIBXML_LIBDIR PC_LIBXML_LIBRARY_DIRS)
-  if (LIBXML2_LIBRARY MATCHES "^${libxml2_pc_lib_dir}")
-    list(APPEND LIBXML2_INCLUDE_DIRS ${PC_LIBXML_INCLUDE_DIRS})
-    set(LIBXML2_DEFINITIONS ${PC_LIBXML_CFLAGS_OTHER})
-    break()
-  endif()
-endforeach()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibXml2
-                                  REQUIRED_VARS LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR
-                                  VERSION_VAR LIBXML2_VERSION_STRING)
-
-mark_as_advanced(LIBXML2_INCLUDE_DIR LIBXML2_LIBRARY LIBXML2_XMLLINT_EXECUTABLE)
-
-if(LibXml2_FOUND AND NOT TARGET LibXml2::LibXml2)
-  add_library(LibXml2::LibXml2 UNKNOWN IMPORTED)
-  set_target_properties(LibXml2::LibXml2 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBXML2_INCLUDE_DIRS}")
-  set_target_properties(LibXml2::LibXml2 PROPERTIES INTERFACE_COMPILE_OPTIONS "${LIBXML2_DEFINITIONS}")
-  set_property(TARGET LibXml2::LibXml2 APPEND PROPERTY IMPORTED_LOCATION "${LIBXML2_LIBRARY}")
-endif()
-
-if(LIBXML2_XMLLINT_EXECUTABLE AND NOT TARGET LibXml2::xmllint)
-  add_executable(LibXml2::xmllint IMPORTED)
-  set_target_properties(LibXml2::xmllint PROPERTIES IMPORTED_LOCATION "${LIBXML2_XMLLINT_EXECUTABLE}")
-endif()
diff --git a/share/cmake-3.18/Modules/FindLibXslt.cmake b/share/cmake-3.18/Modules/FindLibXslt.cmake
deleted file mode 100644
index fc7adeb..0000000
--- a/share/cmake-3.18/Modules/FindLibXslt.cmake
+++ /dev/null
@@ -1,131 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindLibXslt
------------
-
-Find the XSL Transformations, Extensible Stylesheet Language
-Transformations (XSLT) library (LibXslt)
-
-IMPORTED Targets
-^^^^^^^^^^^^^^^^
-
-The following :prop_tgt:`IMPORTED` targets may be defined:
-
-``LibXslt::LibXslt``
-  If the libxslt library has been found
-``LibXslt::LibExslt``
-  If the libexslt library has been found
-``LibXslt::xsltproc``
-  If the xsltproc command-line executable has been found
-
-Result variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-  LIBXSLT_FOUND - system has LibXslt
-  LIBXSLT_INCLUDE_DIR - the LibXslt include directory
-  LIBXSLT_LIBRARIES - Link these to LibXslt
-  LIBXSLT_DEFINITIONS - Compiler switches required for using LibXslt
-  LIBXSLT_VERSION_STRING - version of LibXslt found (since CMake 2.8.8)
-
-Additionally, the following two variables are set (but not required
-for using xslt):
-
-``LIBXSLT_EXSLT_INCLUDE_DIR``
-  The include directory for exslt.
-``LIBXSLT_EXSLT_LIBRARIES``
-  Link to these if you need to link against the exslt library.
-``LIBXSLT_XSLTPROC_EXECUTABLE``
-  Contains the full path to the xsltproc executable if found.
-#]=======================================================================]
-
-# use pkg-config to get the directories and then use these values
-# in the find_path() and find_library() calls
-find_package(PkgConfig QUIET)
-PKG_CHECK_MODULES(PC_LIBXSLT QUIET libxslt)
-set(LIBXSLT_DEFINITIONS ${PC_LIBXSLT_CFLAGS_OTHER})
-
-find_path(LIBXSLT_INCLUDE_DIR NAMES libxslt/xslt.h
-    HINTS
-   ${PC_LIBXSLT_INCLUDEDIR}
-   ${PC_LIBXSLT_INCLUDE_DIRS}
-  )
-
-# CMake 3.17 and below used 'LIBXSLT_LIBRARIES' as the name of
-# the cache entry storing the find_library result.  Use the
-# value if it was set by the project or user.
-if(DEFINED LIBXSLT_LIBRARIES AND NOT DEFINED LIBXSLT_LIBRARY)
-  set(LIBXSLT_LIBRARY ${LIBXSLT_LIBRARIES})
-endif()
-
-find_library(LIBXSLT_LIBRARY NAMES xslt libxslt
-    HINTS
-   ${PC_LIBXSLT_LIBDIR}
-   ${PC_LIBXSLT_LIBRARY_DIRS}
-  )
-
-set(LIBXSLT_LIBRARIES ${LIBXSLT_LIBRARY})
-
-PKG_CHECK_MODULES(PC_LIBXSLT_EXSLT QUIET libexslt)
-set(LIBXSLT_EXSLT_DEFINITIONS ${PC_LIBXSLT_EXSLT_CFLAGS_OTHER})
-
-find_path(LIBXSLT_EXSLT_INCLUDE_DIR NAMES libexslt/exslt.h
-  HINTS
-  ${PC_LIBXSLT_EXSLT_INCLUDEDIR}
-  ${PC_LIBXSLT_EXSLT_INCLUDE_DIRS}
-)
-
-find_library(LIBXSLT_EXSLT_LIBRARY NAMES exslt libexslt
-    HINTS
-    ${PC_LIBXSLT_LIBDIR}
-    ${PC_LIBXSLT_LIBRARY_DIRS}
-    ${PC_LIBXSLT_EXSLT_LIBDIR}
-    ${PC_LIBXSLT_EXSLT_LIBRARY_DIRS}
-  )
-
-set(LIBXSLT_EXSLT_LIBRARIES ${LIBXSLT_EXSLT_LIBRARY} )
-
-find_program(LIBXSLT_XSLTPROC_EXECUTABLE xsltproc)
-
-if(PC_LIBXSLT_VERSION)
-    set(LIBXSLT_VERSION_STRING ${PC_LIBXSLT_VERSION})
-elseif(LIBXSLT_INCLUDE_DIR AND EXISTS "${LIBXSLT_INCLUDE_DIR}/libxslt/xsltconfig.h")
-    file(STRINGS "${LIBXSLT_INCLUDE_DIR}/libxslt/xsltconfig.h" libxslt_version_str
-         REGEX "^#define[\t ]+LIBXSLT_DOTTED_VERSION[\t ]+\".*\"")
-
-    string(REGEX REPLACE "^#define[\t ]+LIBXSLT_DOTTED_VERSION[\t ]+\"([^\"]*)\".*" "\\1"
-           LIBXSLT_VERSION_STRING "${libxslt_version_str}")
-    unset(libxslt_version_str)
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibXslt
-                                  REQUIRED_VARS LIBXSLT_LIBRARIES LIBXSLT_INCLUDE_DIR
-                                  VERSION_VAR LIBXSLT_VERSION_STRING)
-
-mark_as_advanced(LIBXSLT_INCLUDE_DIR
-                 LIBXSLT_LIBRARIES
-                 LIBXSLT_EXSLT_LIBRARY
-                 LIBXSLT_XSLTPROC_EXECUTABLE)
-
-if(LIBXSLT_FOUND AND NOT TARGET LibXslt::LibXslt)
-  add_library(LibXslt::LibXslt UNKNOWN IMPORTED)
-  set_target_properties(LibXslt::LibXslt PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBXSLT_INCLUDE_DIR}")
-  set_target_properties(LibXslt::LibXslt PROPERTIES INTERFACE_COMPILE_OPTIONS "${LIBXSLT_DEFINITIONS}")
-  set_property(TARGET LibXslt::LibXslt APPEND PROPERTY IMPORTED_LOCATION "${LIBXSLT_LIBRARY}")
-endif()
-
-if(LIBXSLT_FOUND AND NOT TARGET LibXslt::LibExslt)
-  add_library(LibXslt::LibExslt UNKNOWN IMPORTED)
-  set_target_properties(LibXslt::LibExslt PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBXSLT_EXSLT_INCLUDE_DIR}")
-  set_target_properties(LibXslt::LibExslt PROPERTIES INTERFACE_COMPILE_OPTIONS "${LIBXSLT_EXSLT_DEFINITIONS}")
-  set_property(TARGET LibXslt::LibExslt APPEND PROPERTY IMPORTED_LOCATION "${LIBXSLT_EXSLT_LIBRARY}")
-endif()
-
-if(LIBXSLT_XSLTPROC_EXECUTABLE AND NOT TARGET LibXslt::xsltproc)
-  add_executable(LibXslt::xsltproc IMPORTED)
-  set_target_properties(LibXslt::xsltproc PROPERTIES IMPORTED_LOCATION "${LIBXSLT_XSLTPROC_EXECUTABLE}")
-endif()
diff --git a/share/cmake-3.18/Modules/FindLibinput.cmake b/share/cmake-3.18/Modules/FindLibinput.cmake
deleted file mode 100644
index c1fe455..0000000
--- a/share/cmake-3.18/Modules/FindLibinput.cmake
+++ /dev/null
@@ -1,82 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindLibinput
-------------
-
-Find libinput headers and library.
-
-Imported Targets
-^^^^^^^^^^^^^^^^
-
-``Libinput::Libinput``
-  The libinput library, if found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This will define the following variables in your project:
-
-``Libinput_FOUND``
-  true if (the requested version of) libinput is available.
-``Libinput_VERSION``
-  the version of libinput.
-``Libinput_LIBRARIES``
-  the libraries to link against to use libinput.
-``Libinput_INCLUDE_DIRS``
-  where to find the libinput headers.
-``Libinput_COMPILE_OPTIONS``
-  this should be passed to target_compile_options(), if the
-  target is not used for linking
-
-#]=======================================================================]
-
-
-# Use pkg-config to get the directories and then use these values
-# in the FIND_PATH() and FIND_LIBRARY() calls
-find_package(PkgConfig QUIET)
-pkg_check_modules(PKG_Libinput QUIET libinput)
-
-set(Libinput_COMPILE_OPTIONS ${PKG_Libinput_CFLAGS_OTHER})
-set(Libinput_VERSION ${PKG_Libinput_VERSION})
-
-find_path(Libinput_INCLUDE_DIR
-  NAMES
-    libinput.h
-  HINTS
-    ${PKG_Libinput_INCLUDE_DIRS}
-)
-find_library(Libinput_LIBRARY
-  NAMES
-    input
-  HINTS
-    ${PKG_Libinput_LIBRARY_DIRS}
-)
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Libinput
-  FOUND_VAR
-    Libinput_FOUND
-  REQUIRED_VARS
-    Libinput_LIBRARY
-    Libinput_INCLUDE_DIR
-  VERSION_VAR
-    Libinput_VERSION
-)
-
-if(Libinput_FOUND AND NOT TARGET Libinput::Libinput)
-  add_library(Libinput::Libinput UNKNOWN IMPORTED)
-  set_target_properties(Libinput::Libinput PROPERTIES
-    IMPORTED_LOCATION "${Libinput_LIBRARY}"
-    INTERFACE_COMPILE_OPTIONS "${Libinput_COMPILE_OPTIONS}"
-    INTERFACE_INCLUDE_DIRECTORIES "${Libinput_INCLUDE_DIR}"
-  )
-endif()
-
-mark_as_advanced(Libinput_LIBRARY Libinput_INCLUDE_DIR)
-
-if(Libinput_FOUND)
-  set(Libinput_LIBRARIES ${Libinput_LIBRARY})
-  set(Libinput_INCLUDE_DIRS ${Libinput_INCLUDE_DIR})
-endif()
diff --git a/share/cmake-3.18/Modules/FindLua.cmake b/share/cmake-3.18/Modules/FindLua.cmake
deleted file mode 100644
index c4361b7..0000000
--- a/share/cmake-3.18/Modules/FindLua.cmake
+++ /dev/null
@@ -1,238 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindLua
--------
-
-
-
-Locate Lua library.
-
-This module defines::
-
-::
-
-  LUA_FOUND          - if false, do not try to link to Lua
-  LUA_LIBRARIES      - both lua and lualib
-  LUA_INCLUDE_DIR    - where to find lua.h
-  LUA_VERSION_STRING - the version of Lua found
-  LUA_VERSION_MAJOR  - the major version of Lua
-  LUA_VERSION_MINOR  - the minor version of Lua
-  LUA_VERSION_PATCH  - the patch version of Lua
-
-
-
-Note that the expected include convention is
-
-::
-
-  #include "lua.h"
-
-and not
-
-::
-
-  #include <lua/lua.h>
-
-This is because, the lua location is not standardized and may exist in
-locations other than lua/
-#]=======================================================================]
-
-cmake_policy(PUSH)  # Policies apply to functions at definition-time
-cmake_policy(SET CMP0012 NEW)  # For while(TRUE)
-
-unset(_lua_include_subdirs)
-unset(_lua_library_names)
-unset(_lua_append_versions)
-
-# this is a function only to have all the variables inside go away automatically
-function(_lua_get_versions)
-    set(LUA_VERSIONS5 5.4 5.3 5.2 5.1 5.0)
-
-    if (Lua_FIND_VERSION_EXACT)
-        if (Lua_FIND_VERSION_COUNT GREATER 1)
-            set(_lua_append_versions ${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR})
-        endif ()
-    elseif (Lua_FIND_VERSION)
-        # once there is a different major version supported this should become a loop
-        if (NOT Lua_FIND_VERSION_MAJOR GREATER 5)
-            if (Lua_FIND_VERSION_COUNT EQUAL 1)
-                set(_lua_append_versions ${LUA_VERSIONS5})
-            else ()
-                foreach (subver IN LISTS LUA_VERSIONS5)
-                    if (NOT subver VERSION_LESS ${Lua_FIND_VERSION})
-                        list(APPEND _lua_append_versions ${subver})
-                    endif ()
-                endforeach ()
-                # New version -> Search for it (heuristic only! Defines in include might have changed)
-                if (NOT _lua_append_versions)
-                    set(_lua_append_versions ${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR})
-                endif()
-            endif ()
-        endif ()
-    else ()
-        # once there is a different major version supported this should become a loop
-        set(_lua_append_versions ${LUA_VERSIONS5})
-    endif ()
-
-    if (LUA_Debug)
-        message(STATUS "Considering following Lua versions: ${_lua_append_versions}")
-    endif()
-
-    set(_lua_append_versions "${_lua_append_versions}" PARENT_SCOPE)
-endfunction()
-
-function(_lua_set_version_vars)
-  set(_lua_include_subdirs_raw "lua")
-
-  foreach (ver IN LISTS _lua_append_versions)
-    string(REGEX MATCH "^([0-9]+)\\.([0-9]+)$" _ver "${ver}")
-    list(APPEND _lua_include_subdirs_raw
-        lua${CMAKE_MATCH_1}${CMAKE_MATCH_2}
-        lua${CMAKE_MATCH_1}.${CMAKE_MATCH_2}
-        lua-${CMAKE_MATCH_1}.${CMAKE_MATCH_2}
-        )
-  endforeach ()
-
-  # Prepend "include/" to each path directly after the path
-  set(_lua_include_subdirs "include")
-  foreach (dir IN LISTS _lua_include_subdirs_raw)
-    list(APPEND _lua_include_subdirs "${dir}" "include/${dir}")
-  endforeach ()
-
-  set(_lua_include_subdirs "${_lua_include_subdirs}" PARENT_SCOPE)
-endfunction(_lua_set_version_vars)
-
-function(_lua_get_header_version)
-  unset(LUA_VERSION_STRING PARENT_SCOPE)
-  set(_hdr_file "${LUA_INCLUDE_DIR}/lua.h")
-
-  if (NOT EXISTS "${_hdr_file}")
-    return()
-  endif ()
-
-  # At least 5.[012] have different ways to express the version
-  # so all of them need to be tested. Lua 5.2 defines LUA_VERSION
-  # and LUA_RELEASE as joined by the C preprocessor, so avoid those.
-  file(STRINGS "${_hdr_file}" lua_version_strings
-       REGEX "^#define[ \t]+LUA_(RELEASE[ \t]+\"Lua [0-9]|VERSION([ \t]+\"Lua [0-9]|_[MR])).*")
-
-  string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MAJOR[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_MAJOR ";${lua_version_strings};")
-  if (LUA_VERSION_MAJOR MATCHES "^[0-9]+$")
-    string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MINOR[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_MINOR ";${lua_version_strings};")
-    string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_RELEASE[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_PATCH ";${lua_version_strings};")
-    set(LUA_VERSION_STRING "${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}.${LUA_VERSION_PATCH}")
-  else ()
-    string(REGEX REPLACE ".*;#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" LUA_VERSION_STRING ";${lua_version_strings};")
-    if (NOT LUA_VERSION_STRING MATCHES "^[0-9.]+$")
-      string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" LUA_VERSION_STRING ";${lua_version_strings};")
-    endif ()
-    string(REGEX REPLACE "^([0-9]+)\\.[0-9.]*$" "\\1" LUA_VERSION_MAJOR "${LUA_VERSION_STRING}")
-    string(REGEX REPLACE "^[0-9]+\\.([0-9]+)[0-9.]*$" "\\1" LUA_VERSION_MINOR "${LUA_VERSION_STRING}")
-    string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]).*" "\\1" LUA_VERSION_PATCH "${LUA_VERSION_STRING}")
-  endif ()
-  foreach (ver IN LISTS _lua_append_versions)
-    if (ver STREQUAL "${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}")
-      set(LUA_VERSION_MAJOR ${LUA_VERSION_MAJOR} PARENT_SCOPE)
-      set(LUA_VERSION_MINOR ${LUA_VERSION_MINOR} PARENT_SCOPE)
-      set(LUA_VERSION_PATCH ${LUA_VERSION_PATCH} PARENT_SCOPE)
-      set(LUA_VERSION_STRING ${LUA_VERSION_STRING} PARENT_SCOPE)
-      return()
-    endif ()
-  endforeach ()
-endfunction(_lua_get_header_version)
-
-function(_lua_find_header)
-  _lua_set_version_vars()
-
-  # Initialize as local variable
-  set(CMAKE_IGNORE_PATH ${CMAKE_IGNORE_PATH})
-  while (TRUE)
-    # Find the next header to test. Check each possible subdir in order
-    # This prefers e.g. higher versions as they are earlier in the list
-    # It is also consistent with previous versions of FindLua
-    foreach (subdir IN LISTS _lua_include_subdirs)
-      find_path(LUA_INCLUDE_DIR lua.h
-        HINTS ENV LUA_DIR
-        PATH_SUFFIXES ${subdir}
-        )
-      if (LUA_INCLUDE_DIR)
-        break()
-      endif()
-    endforeach()
-    # Did not found header -> Fail
-    if (NOT LUA_INCLUDE_DIR)
-      return()
-    endif()
-    _lua_get_header_version()
-    # Found accepted version -> Ok
-    if (LUA_VERSION_STRING)
-      if (LUA_Debug)
-        message(STATUS "Found suitable version ${LUA_VERSION_STRING} in ${LUA_INCLUDE_DIR}/lua.h")
-      endif()
-      return()
-    endif()
-    # Found wrong version -> Ignore this path and retry
-    if (LUA_Debug)
-      message(STATUS "Ignoring unsuitable version in ${LUA_INCLUDE_DIR}")
-    endif()
-    list(APPEND CMAKE_IGNORE_PATH "${LUA_INCLUDE_DIR}")
-    unset(LUA_INCLUDE_DIR CACHE)
-    unset(LUA_INCLUDE_DIR)
-    unset(LUA_INCLUDE_DIR PARENT_SCOPE)
-  endwhile ()
-endfunction()
-
-_lua_get_versions()
-_lua_find_header()
-_lua_get_header_version()
-unset(_lua_append_versions)
-
-if (LUA_VERSION_STRING)
-  set(_lua_library_names
-    lua${LUA_VERSION_MAJOR}${LUA_VERSION_MINOR}
-    lua${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}
-    lua-${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}
-    lua.${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}
-    )
-endif ()
-
-find_library(LUA_LIBRARY
-  NAMES ${_lua_library_names} lua
-  NAMES_PER_DIR
-  HINTS
-    ENV LUA_DIR
-  PATH_SUFFIXES lib
-)
-unset(_lua_library_names)
-
-if (LUA_LIBRARY)
-  # include the math library for Unix
-  if (UNIX AND NOT APPLE AND NOT BEOS)
-    find_library(LUA_MATH_LIBRARY m)
-    mark_as_advanced(LUA_MATH_LIBRARY)
-    set(LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}")
-
-    # include dl library for statically-linked Lua library
-    get_filename_component(LUA_LIB_EXT ${LUA_LIBRARY} EXT)
-    if(LUA_LIB_EXT STREQUAL CMAKE_STATIC_LIBRARY_SUFFIX)
-      list(APPEND LUA_LIBRARIES ${CMAKE_DL_LIBS})
-    endif()
-
-  # For Windows and Mac, don't need to explicitly include the math library
-  else ()
-    set(LUA_LIBRARIES "${LUA_LIBRARY}")
-  endif ()
-endif ()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-# handle the QUIETLY and REQUIRED arguments and set LUA_FOUND to TRUE if
-# all listed variables are TRUE
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua
-                                  REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR
-                                  VERSION_VAR LUA_VERSION_STRING)
-
-mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARY)
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FindMPI.cmake b/share/cmake-3.18/Modules/FindMPI.cmake
deleted file mode 100644
index 25de562..0000000
--- a/share/cmake-3.18/Modules/FindMPI.cmake
+++ /dev/null
@@ -1,1791 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindMPI
--------
-
-Find a Message Passing Interface (MPI) implementation.
-
-The Message Passing Interface (MPI) is a library used to write
-high-performance distributed-memory parallel applications, and is
-typically deployed on a cluster.  MPI is a standard interface (defined
-by the MPI forum) for which many implementations are available.
-
-Variables for using MPI
-^^^^^^^^^^^^^^^^^^^^^^^
-
-The module exposes the components ``C``, ``CXX``, ``MPICXX`` and ``Fortran``.
-Each of these controls the various MPI languages to search for.
-The difference between ``CXX`` and ``MPICXX`` is that ``CXX`` refers to the
-MPI C API being usable from C++, whereas ``MPICXX`` refers to the MPI-2 C++ API
-that was removed again in MPI-3.
-
-Depending on the enabled components the following variables will be set:
-
-``MPI_FOUND``
-  Variable indicating that MPI settings for all requested languages have been found.
-  If no components are specified, this is true if MPI settings for all enabled languages
-  were detected. Note that the ``MPICXX`` component does not affect this variable.
-``MPI_VERSION``
-  Minimal version of MPI detected among the requested languages, or all enabled languages
-  if no components were specified.
-
-This module will set the following variables per language in your
-project, where ``<lang>`` is one of C, CXX, or Fortran:
-
-``MPI_<lang>_FOUND``
-  Variable indicating the MPI settings for ``<lang>`` were found and that
-  simple MPI test programs compile with the provided settings.
-``MPI_<lang>_COMPILER``
-  MPI compiler for ``<lang>`` if such a program exists.
-``MPI_<lang>_COMPILE_OPTIONS``
-  Compilation options for MPI programs in ``<lang>``, given as a :ref:`;-list <CMake Language Lists>`.
-``MPI_<lang>_COMPILE_DEFINITIONS``
-  Compilation definitions for MPI programs in ``<lang>``, given as a :ref:`;-list <CMake Language Lists>`.
-``MPI_<lang>_INCLUDE_DIRS``
-  Include path(s) for MPI header.
-``MPI_<lang>_LINK_FLAGS``
-  Linker flags for MPI programs.
-``MPI_<lang>_LIBRARIES``
-  All libraries to link MPI programs against.
-
-Additionally, the following :prop_tgt:`IMPORTED` targets are defined:
-
-``MPI::MPI_<lang>``
-  Target for using MPI from ``<lang>``.
-
-The following variables indicating which bindings are present will be defined:
-
-``MPI_MPICXX_FOUND``
-  Variable indicating whether the MPI-2 C++ bindings are present (introduced in MPI-2, removed with MPI-3).
-``MPI_Fortran_HAVE_F77_HEADER``
-  True if the Fortran 77 header ``mpif.h`` is available.
-``MPI_Fortran_HAVE_F90_MODULE``
-  True if the Fortran 90 module ``mpi`` can be used for accessing MPI (MPI-2 and higher only).
-``MPI_Fortran_HAVE_F08_MODULE``
-  True if the Fortran 2008 ``mpi_f08`` is available to MPI programs (MPI-3 and higher only).
-
-If possible, the MPI version will be determined by this module. The facilities to detect the MPI version
-were introduced with MPI-1.2, and therefore cannot be found for older MPI versions.
-
-``MPI_<lang>_VERSION_MAJOR``
-  Major version of MPI implemented for ``<lang>`` by the MPI distribution.
-``MPI_<lang>_VERSION_MINOR``
-  Minor version of MPI implemented for ``<lang>`` by the MPI distribution.
-``MPI_<lang>_VERSION``
-  MPI version implemented for ``<lang>`` by the MPI distribution.
-
-Note that there's no variable for the C bindings being accessible through ``mpi.h``, since the MPI standards
-always have required this binding to work in both C and C++ code.
-
-For running MPI programs, the module sets the following variables
-
-``MPIEXEC_EXECUTABLE``
-  Executable for running MPI programs, if such exists.
-``MPIEXEC_NUMPROC_FLAG``
-  Flag to pass to ``mpiexec`` before giving it the number of processors to run on.
-``MPIEXEC_MAX_NUMPROCS``
-  Number of MPI processors to utilize. Defaults to the number
-  of processors detected on the host system.
-``MPIEXEC_PREFLAGS``
-  Flags to pass to ``mpiexec`` directly before the executable to run.
-``MPIEXEC_POSTFLAGS``
-  Flags to pass to ``mpiexec`` after other flags.
-
-Variables for locating MPI
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This module performs a four step search for an MPI implementation:
-
-1. Search for ``MPIEXEC_EXECUTABLE`` and, if found, use its base directory.
-2. Check if the compiler has MPI support built-in. This is the case if the user passed a
-   compiler wrapper as ``CMAKE_<LANG>_COMPILER`` or if they're on a Cray system.
-3. Attempt to find an MPI compiler wrapper and determine the compiler information from it.
-4. Try to find an MPI implementation that does not ship such a wrapper by guessing settings.
-   Currently, only Microsoft MPI and MPICH2 on Windows are supported.
-
-For controlling the ``MPIEXEC_EXECUTABLE`` step, the following variables may be set:
-
-``MPIEXEC_EXECUTABLE``
-  Manually specify the location of ``mpiexec``.
-``MPI_HOME``
-  Specify the base directory of the MPI installation.
-``ENV{MPI_HOME}``
-  Environment variable to specify the base directory of the MPI installation.
-``ENV{I_MPI_ROOT}``
-  Environment variable to specify the base directory of the MPI installation.
-
-For controlling the compiler wrapper step, the following variables may be set:
-
-``MPI_<lang>_COMPILER``
-  Search for the specified compiler wrapper and use it.
-``MPI_<lang>_COMPILER_FLAGS``
-  Flags to pass to the MPI compiler wrapper during interrogation. Some compiler wrappers
-  support linking debug or tracing libraries if a specific flag is passed and this variable
-  may be used to obtain them.
-``MPI_COMPILER_FLAGS``
-  Used to initialize ``MPI_<lang>_COMPILER_FLAGS`` if no language specific flag has been given.
-  Empty by default.
-``MPI_EXECUTABLE_SUFFIX``
-  A suffix which is appended to all names that are being looked for. For instance you may set this
-  to ``.mpich`` or ``.openmpi`` to prefer the one or the other on Debian and its derivatives.
-
-In order to control the guessing step, the following variable may be set:
-
-``MPI_GUESS_LIBRARY_NAME``
-  Valid values are ``MSMPI`` and ``MPICH2``. If set, only the given library will be searched for.
-  By default, ``MSMPI`` will be preferred over ``MPICH2`` if both are available.
-  This also sets ``MPI_SKIP_COMPILER_WRAPPER`` to ``true``, which may be overridden.
-
-Each of the search steps may be skipped with the following control variables:
-
-``MPI_ASSUME_NO_BUILTIN_MPI``
-  If true, the module assumes that the compiler itself does not provide an MPI implementation and
-  skips to step 2.
-``MPI_SKIP_COMPILER_WRAPPER``
-  If true, no compiler wrapper will be searched for.
-``MPI_SKIP_GUESSING``
-  If true, the guessing step will be skipped.
-
-Additionally, the following control variable is available to change search behavior:
-
-``MPI_CXX_SKIP_MPICXX``
-  Add some definitions that will disable the MPI-2 C++ bindings.
-  Currently supported are MPICH, Open MPI, Platform MPI and derivatives thereof,
-  for example MVAPICH or Intel MPI.
-
-If the find procedure fails for a variable ``MPI_<lang>_WORKS``, then the settings detected by or passed to
-the module did not work and even a simple MPI test program failed to compile.
-
-If all of these parameters were not sufficient to find the right MPI implementation, a user may
-disable the entire autodetection process by specifying both a list of libraries in ``MPI_<lang>_LIBRARIES``
-and a list of include directories in ``MPI_<lang>_ADDITIONAL_INCLUDE_DIRS``.
-Any other variable may be set in addition to these two. The module will then validate the MPI settings and store the
-settings in the cache.
-
-Cache variables for MPI
-^^^^^^^^^^^^^^^^^^^^^^^
-
-The variable ``MPI_<lang>_INCLUDE_DIRS`` will be assembled from the following variables.
-For C and CXX:
-
-``MPI_<lang>_HEADER_DIR``
-  Location of the ``mpi.h`` header on disk.
-
-For Fortran:
-
-``MPI_Fortran_F77_HEADER_DIR``
-  Location of the Fortran 77 header ``mpif.h``, if it exists.
-``MPI_Fortran_MODULE_DIR``
-  Location of the ``mpi`` or ``mpi_f08`` modules, if available.
-
-For all languages the following variables are additionally considered:
-
-``MPI_<lang>_ADDITIONAL_INCLUDE_DIRS``
-  A :ref:`;-list <CMake Language Lists>` of paths needed in addition to the normal include directories.
-``MPI_<include_name>_INCLUDE_DIR``
-  Path variables for include folders referred to by ``<include_name>``.
-``MPI_<lang>_ADDITIONAL_INCLUDE_VARS``
-  A :ref:`;-list <CMake Language Lists>` of ``<include_name>`` that will be added to the include locations of ``<lang>``.
-
-The variable ``MPI_<lang>_LIBRARIES`` will be assembled from the following variables:
-
-``MPI_<lib_name>_LIBRARY``
-  The location of a library called ``<lib_name>`` for use with MPI.
-``MPI_<lang>_LIB_NAMES``
-  A :ref:`;-list <CMake Language Lists>` of ``<lib_name>`` that will be added to the include locations of ``<lang>``.
-
-Usage of mpiexec
-^^^^^^^^^^^^^^^^
-
-When using ``MPIEXEC_EXECUTABLE`` to execute MPI applications, you should typically
-use all of the ``MPIEXEC_EXECUTABLE`` flags as follows:
-
-::
-
-   ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS}
-     ${MPIEXEC_PREFLAGS} EXECUTABLE ${MPIEXEC_POSTFLAGS} ARGS
-
-where ``EXECUTABLE`` is the MPI program, and ``ARGS`` are the arguments to
-pass to the MPI program.
-
-Advanced variables for using MPI
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The module can perform some advanced feature detections upon explicit request.
-
-**Important notice:** The following checks cannot be performed without *executing* an MPI test program.
-Consider the special considerations for the behavior of :command:`try_run` during cross compilation.
-Moreover, running an MPI program can cause additional issues, like a firewall notification on some systems.
-You should only enable these detections if you absolutely need the information.
-
-If the following variables are set to true, the respective search will be performed:
-
-``MPI_DETERMINE_Fortran_CAPABILITIES``
-  Determine for all available Fortran bindings what the values of ``MPI_SUBARRAYS_SUPPORTED`` and
-  ``MPI_ASYNC_PROTECTS_NONBLOCKING`` are and make their values available as ``MPI_Fortran_<binding>_SUBARRAYS``
-  and ``MPI_Fortran_<binding>_ASYNCPROT``, where ``<binding>`` is one of ``F77_HEADER``, ``F90_MODULE`` and
-  ``F08_MODULE``.
-``MPI_DETERMINE_LIBRARY_VERSION``
-  For each language, find the output of ``MPI_Get_library_version`` and make it available as ``MPI_<lang>_LIBRARY_VERSION_STRING``.
-  This information is usually tied to the runtime component of an MPI implementation and might differ depending on ``<lang>``.
-  Note that the return value is entirely implementation defined. This information might be used to identify
-  the MPI vendor and for example pick the correct one of multiple third party binaries that matches the MPI vendor.
-
-Backward Compatibility
-^^^^^^^^^^^^^^^^^^^^^^
-
-For backward compatibility with older versions of FindMPI, these
-variables are set, but deprecated:
-
-::
-
-   MPI_COMPILER        MPI_LIBRARY        MPI_EXTRA_LIBRARY
-   MPI_COMPILE_FLAGS   MPI_INCLUDE_PATH   MPI_LINK_FLAGS
-   MPI_LIBRARIES
-
-In new projects, please use the ``MPI_<lang>_XXX`` equivalents.
-Additionally, the following variables are deprecated:
-
-``MPI_<lang>_COMPILE_FLAGS``
-  Use ``MPI_<lang>_COMPILE_OPTIONS`` and ``MPI_<lang>_COMPILE_DEFINITIONS`` instead.
-``MPI_<lang>_INCLUDE_PATH``
-  For consumption use ``MPI_<lang>_INCLUDE_DIRS`` and for specifying folders use ``MPI_<lang>_ADDITIONAL_INCLUDE_DIRS`` instead.
-``MPIEXEC``
-  Use ``MPIEXEC_EXECUTABLE`` instead.
-#]=======================================================================]
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0057 NEW) # if IN_LIST
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-
-# Generic compiler names
-set(_MPI_C_GENERIC_COMPILER_NAMES          mpicc    mpcc      mpicc_r mpcc_r)
-set(_MPI_CXX_GENERIC_COMPILER_NAMES        mpicxx   mpiCC     mpcxx   mpCC    mpic++   mpc++
-                                           mpicxx_r mpiCC_r   mpcxx_r mpCC_r  mpic++_r mpc++_r)
-set(_MPI_Fortran_GENERIC_COMPILER_NAMES    mpif95   mpif95_r  mpf95   mpf95_r
-                                           mpif90   mpif90_r  mpf90   mpf90_r
-                                           mpif77   mpif77_r  mpf77   mpf77_r
-                                           mpifc)
-
-# GNU compiler names
-set(_MPI_GNU_C_COMPILER_NAMES              mpigcc mpgcc mpigcc_r mpgcc_r)
-set(_MPI_GNU_CXX_COMPILER_NAMES            mpig++ mpg++ mpig++_r mpg++_r mpigxx)
-set(_MPI_GNU_Fortran_COMPILER_NAMES        mpigfortran mpgfortran mpigfortran_r mpgfortran_r
-                                           mpig77 mpig77_r mpg77 mpg77_r)
-
-# Intel MPI compiler names on Windows
-if(WIN32)
-  list(APPEND _MPI_C_GENERIC_COMPILER_NAMES       mpicc.bat)
-  list(APPEND _MPI_CXX_GENERIC_COMPILER_NAMES     mpicxx.bat)
-  list(APPEND _MPI_Fortran_GENERIC_COMPILER_NAMES mpifc.bat)
-
-  # Intel MPI compiler names
-  set(_MPI_Intel_C_COMPILER_NAMES            mpiicc.bat)
-  set(_MPI_Intel_CXX_COMPILER_NAMES          mpiicpc.bat)
-  set(_MPI_Intel_Fortran_COMPILER_NAMES      mpiifort.bat mpif77.bat mpif90.bat)
-
-  # Intel MPI compiler names for MSMPI
-  set(_MPI_MSVC_C_COMPILER_NAMES             mpicl.bat)
-  set(_MPI_MSVC_CXX_COMPILER_NAMES           mpicl.bat)
-else()
-  # Intel compiler names
-  set(_MPI_Intel_C_COMPILER_NAMES            mpiicc)
-  set(_MPI_Intel_CXX_COMPILER_NAMES          mpiicpc  mpiicxx mpiic++)
-  set(_MPI_Intel_Fortran_COMPILER_NAMES      mpiifort mpiif95 mpiif90 mpiif77)
-endif()
-
-# PGI compiler names
-set(_MPI_PGI_C_COMPILER_NAMES              mpipgicc mpipgcc mppgcc)
-set(_MPI_PGI_CXX_COMPILER_NAMES            mpipgic++ mpipgCC mppgCC)
-set(_MPI_PGI_Fortran_COMPILER_NAMES        mpipgifort mpipgf95 mpipgf90 mppgf95 mppgf90 mpipgf77 mppgf77)
-
-# XLC MPI Compiler names
-set(_MPI_XL_C_COMPILER_NAMES               mpxlc      mpxlc_r    mpixlc     mpixlc_r)
-set(_MPI_XL_CXX_COMPILER_NAMES             mpixlcxx   mpixlC     mpixlc++   mpxlcxx   mpxlc++   mpixlc++   mpxlCC
-                                           mpixlcxx_r mpixlC_r   mpixlc++_r mpxlcxx_r mpxlc++_r mpixlc++_r mpxlCC_r)
-set(_MPI_XL_Fortran_COMPILER_NAMES         mpixlf95   mpixlf95_r mpxlf95 mpxlf95_r
-                                           mpixlf90   mpixlf90_r mpxlf90 mpxlf90_r
-                                           mpixlf77   mpixlf77_r mpxlf77 mpxlf77_r
-                                           mpixlf     mpixlf_r   mpxlf   mpxlf_r)
-
-# Prepend vendor-specific compiler wrappers to the list. If we don't know the compiler,
-# attempt all of them.
-# By attempting vendor-specific compiler names first, we should avoid situations where the compiler wrapper
-# stems from a proprietary MPI and won't know which compiler it's being used for. For instance, Intel MPI
-# controls its settings via the I_MPI_CC environment variables if the generic name is being used.
-# If we know which compiler we're working with, we can use the most specialized wrapper there is in order to
-# pick up the right settings for it.
-foreach (LANG IN ITEMS C CXX Fortran)
-  set(_MPI_${LANG}_COMPILER_NAMES "")
-  foreach (id IN ITEMS GNU Intel MSVC PGI XL)
-    if (NOT CMAKE_${LANG}_COMPILER_ID OR CMAKE_${LANG}_COMPILER_ID STREQUAL id)
-      foreach(_COMPILER_NAME IN LISTS _MPI_${id}_${LANG}_COMPILER_NAMES)
-        list(APPEND _MPI_${LANG}_COMPILER_NAMES ${_COMPILER_NAME}${MPI_EXECUTABLE_SUFFIX})
-      endforeach()
-    endif()
-    unset(_MPI_${id}_${LANG}_COMPILER_NAMES)
-  endforeach()
-  foreach(_COMPILER_NAME IN LISTS _MPI_${LANG}_GENERIC_COMPILER_NAMES)
-    list(APPEND _MPI_${LANG}_COMPILER_NAMES ${_COMPILER_NAME}${MPI_EXECUTABLE_SUFFIX})
-  endforeach()
-  unset(_MPI_${LANG}_GENERIC_COMPILER_NAMES)
-endforeach()
-
-# Names to try for mpiexec
-# Only mpiexec commands are guaranteed to behave as described in the standard,
-# mpirun commands are not covered by the standard in any way whatsoever.
-# lamexec is the executable for LAM/MPI, srun is for SLURM or Open MPI with SLURM support.
-# srun -n X <executable> is however a valid command, so it behaves 'like' mpiexec.
-set(_MPIEXEC_NAMES_BASE                   mpiexec mpiexec.hydra mpiexec.mpd mpirun lamexec srun)
-
-unset(_MPIEXEC_NAMES)
-foreach(_MPIEXEC_NAME IN LISTS _MPIEXEC_NAMES_BASE)
-  list(APPEND _MPIEXEC_NAMES "${_MPIEXEC_NAME}${MPI_EXECUTABLE_SUFFIX}")
-endforeach()
-unset(_MPIEXEC_NAMES_BASE)
-
-function (_MPI_check_compiler LANG QUERY_FLAG OUTPUT_VARIABLE RESULT_VARIABLE)
-  if(DEFINED MPI_${LANG}_COMPILER_FLAGS)
-    separate_arguments(_MPI_COMPILER_WRAPPER_OPTIONS NATIVE_COMMAND "${MPI_${LANG}_COMPILER_FLAGS}")
-  else()
-    separate_arguments(_MPI_COMPILER_WRAPPER_OPTIONS NATIVE_COMMAND "${MPI_COMPILER_FLAGS}")
-  endif()
-  execute_process(
-    COMMAND ${MPI_${LANG}_COMPILER} ${_MPI_COMPILER_WRAPPER_OPTIONS} ${QUERY_FLAG}
-    OUTPUT_VARIABLE  WRAPPER_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE
-    ERROR_VARIABLE   WRAPPER_OUTPUT ERROR_STRIP_TRAILING_WHITESPACE
-    RESULT_VARIABLE  WRAPPER_RETURN)
-  # Some compiler wrappers will yield spurious zero return values, for example
-  # Intel MPI tolerates unknown arguments and if the MPI wrappers loads a shared
-  # library that has invalid or missing version information there would be warning
-  # messages emitted by ld.so in the compiler output. In either case, we'll treat
-  # the output as invalid.
-  if("${WRAPPER_OUTPUT}" MATCHES "undefined reference|unrecognized|need to set|no version information available|command not found")
-    set(WRAPPER_RETURN 255)
-  endif()
-  # Ensure that no error output might be passed upwards.
-  if(NOT WRAPPER_RETURN EQUAL 0)
-    unset(WRAPPER_OUTPUT)
-  else()
-    # Strip leading whitespace
-    string(REGEX REPLACE "^ +" "" WRAPPER_OUTPUT "${WRAPPER_OUTPUT}")
-  endif()
-  set(${OUTPUT_VARIABLE} "${WRAPPER_OUTPUT}" PARENT_SCOPE)
-  set(${RESULT_VARIABLE} "${WRAPPER_RETURN}" PARENT_SCOPE)
-endfunction()
-
-macro(_MPI_env_set_ifnot VAR VALUE)
-  if(NOT DEFINED ENV{${VAR}})
-    set(_MPI_${VAR}_WAS_SET FALSE)
-    set(ENV{${VAR}} ${${VALUE}})
-  else()
-    set(_MPI_${VAR}_WAS_SET TRUE)
-  endif()
-endmacro()
-
-macro(_MPI_env_unset_ifnot VAR)
-  if(NOT _MPI_${VAR}_WAS_SET)
-    unset(ENV{${VAR}})
-  endif()
-endmacro()
-
-function (_MPI_interrogate_compiler LANG)
-  unset(MPI_COMPILE_CMDLINE)
-  unset(MPI_LINK_CMDLINE)
-
-  unset(MPI_COMPILE_OPTIONS_WORK)
-  unset(MPI_COMPILE_DEFINITIONS_WORK)
-  unset(MPI_INCLUDE_DIRS_WORK)
-  unset(MPI_LINK_FLAGS_WORK)
-  unset(MPI_LIB_NAMES_WORK)
-  unset(MPI_LIB_FULLPATHS_WORK)
-
-  # Define the MPICH and Intel MPI compiler variables to the compilers set in CMake.
-  # It's possible to have a per-compiler configuration in these MPI implementations and
-  # a particular MPICH derivate might check compiler interoperability.
-  # Intel MPI in particular does this with I_MPI_CHECK_COMPILER.
-  file(TO_NATIVE_PATH "${CMAKE_${LANG}_COMPILER}" _MPI_UNDERLAYING_COMPILER)
-  # On Windows, the Intel MPI batch scripts can only work with filnames - Full paths will break them.
-  # Due to the lack of other MPICH-based wrappers for Visual C++, we may treat this as default.
-  if(MSVC)
-    get_filename_component(_MPI_UNDERLAYING_COMPILER "${_MPI_UNDERLAYING_COMPILER}" NAME)
-  endif()
-  if("${LANG}" STREQUAL "C")
-    _MPI_env_set_ifnot(I_MPI_CC _MPI_UNDERLAYING_COMPILER)
-    _MPI_env_set_ifnot(MPICH_CC _MPI_UNDERLAYING_COMPILER)
-  elseif("${LANG}" STREQUAL "CXX")
-    _MPI_env_set_ifnot(I_MPI_CXX _MPI_UNDERLAYING_COMPILER)
-    _MPI_env_set_ifnot(MPICH_CXX _MPI_UNDERLAYING_COMPILER)
-  elseif("${LANG}" STREQUAL "Fortran")
-    _MPI_env_set_ifnot(I_MPI_FC _MPI_UNDERLAYING_COMPILER)
-    _MPI_env_set_ifnot(MPICH_FC _MPI_UNDERLAYING_COMPILER)
-    _MPI_env_set_ifnot(I_MPI_F77 _MPI_UNDERLAYING_COMPILER)
-    _MPI_env_set_ifnot(MPICH_F77 _MPI_UNDERLAYING_COMPILER)
-    _MPI_env_set_ifnot(I_MPI_F90 _MPI_UNDERLAYING_COMPILER)
-    _MPI_env_set_ifnot(MPICH_F90 _MPI_UNDERLAYING_COMPILER)
-  endif()
-
-  # Set these two variables for Intel MPI:
-  #   - I_MPI_DEBUG_INFO_STRIP: It adds 'objcopy' lines to the compiler output. We support stripping them
-  #     (see below), but if we can avoid them in the first place, we should.
-  #   - I_MPI_FORT_BIND: By default Intel MPI makes the C/C++ compiler wrappers link Fortran bindings.
-  #     This is so that mixed-language code doesn't require additional libraries when linking with mpicc.
-  #     For our purposes, this makes little sense, since correct MPI usage from CMake already circumvenes this.
-  set(_MPI_ENV_VALUE "disable")
-  _MPI_env_set_ifnot(I_MPI_DEBUG_INFO_STRIP _MPI_ENV_VALUE)
-  _MPI_env_set_ifnot(I_MPI_FORT_BIND _MPI_ENV_VALUE)
-
-  # Check whether the -showme:compile option works. This indicates that we have either Open MPI
-  # or a newer version of LAM/MPI, and implies that -showme:link will also work.
-  # Open MPI also supports -show, but separates linker and compiler information
-  _MPI_check_compiler(${LANG} "-showme:compile" MPI_COMPILE_CMDLINE MPI_COMPILER_RETURN)
-  if (MPI_COMPILER_RETURN EQUAL 0)
-    _MPI_check_compiler(${LANG} "-showme:link" MPI_LINK_CMDLINE MPI_COMPILER_RETURN)
-
-    if (NOT MPI_COMPILER_RETURN EQUAL 0)
-      unset(MPI_COMPILE_CMDLINE)
-    endif()
-  endif()
-
-  # MPICH and MVAPICH offer -compile-info and -link-info.
-  # For modern versions, both do the same as -show. However, for old versions, they do differ
-  # when called for mpicxx and mpif90 and it's necessary to use them over -show in order to find the
-  # removed MPI C++ bindings.
-  if (NOT MPI_COMPILER_RETURN EQUAL 0)
-    _MPI_check_compiler(${LANG} "-compile-info" MPI_COMPILE_CMDLINE MPI_COMPILER_RETURN)
-
-    if (MPI_COMPILER_RETURN EQUAL 0)
-      _MPI_check_compiler(${LANG} "-link-info" MPI_LINK_CMDLINE MPI_COMPILER_RETURN)
-
-      if (NOT MPI_COMPILER_RETURN EQUAL 0)
-        unset(MPI_COMPILE_CMDLINE)
-      endif()
-    endif()
-  endif()
-
-  # MPICH, MVAPICH2 and Intel MPI just use "-show". Open MPI also offers this, but the
-  # -showme commands are more specialized.
-  if (NOT MPI_COMPILER_RETURN EQUAL 0)
-    _MPI_check_compiler(${LANG} "-show" MPI_COMPILE_CMDLINE MPI_COMPILER_RETURN)
-  endif()
-
-  # Older versions of LAM/MPI have "-showme". Open MPI also supports this.
-  # Unknown to MPICH, MVAPICH and Intel MPI.
-  if (NOT MPI_COMPILER_RETURN EQUAL 0)
-    _MPI_check_compiler(${LANG} "-showme" MPI_COMPILE_CMDLINE MPI_COMPILER_RETURN)
-  endif()
-
-  if (MPI_COMPILER_RETURN EQUAL 0 AND DEFINED MPI_COMPILE_CMDLINE)
-    # Intel MPI can be run with -compchk or I_MPI_CHECK_COMPILER set to 1.
-    # In this case, -show will be prepended with a line to the compiler checker. This is a script that performs
-    # compatibility checks and returns a non-zero exit code together with an error if something fails.
-    # It has to be called as "compchk.sh <arch> <compiler>". Here, <arch> is one out of 32 (i686), 64 (ia64) or 32e (x86_64).
-    # The compiler is identified by filename, and can be either the MPI compiler or the underlying compiler.
-    # NOTE: It is vital to run this script while the environment variables are set up, otherwise it can check the wrong compiler.
-    if("${MPI_COMPILE_CMDLINE}" MATCHES "^([^\" ]+/compchk.sh|\"[^\"]+/compchk.sh\") +([^ ]+)")
-      # Now CMAKE_MATCH_1 contains the path to the compchk.sh file and CMAKE_MATCH_2 the architecture flag.
-      unset(COMPILER_CHECKER_OUTPUT)
-      execute_process(
-      COMMAND ${CMAKE_MATCH_1} ${CMAKE_MATCH_2} ${MPI_${LANG}_COMPILER}
-      OUTPUT_VARIABLE  COMPILER_CHECKER_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE
-      ERROR_VARIABLE   COMPILER_CHECKER_OUTPUT ERROR_STRIP_TRAILING_WHITESPACE
-      RESULT_VARIABLE  MPI_COMPILER_RETURN)
-      # If it returned a non-zero value, the check below will fail and cause the interrogation to be aborted.
-      if(NOT MPI_COMPILER_RETURN EQUAL 0)
-        if(NOT MPI_FIND_QUIETLY)
-          message(STATUS "Intel MPI compiler check failed: ${COMPILER_CHECKER_OUTPUT}")
-        endif()
-      else()
-        # Since the check passed, we can remove the compchk.sh script.
-        string(REGEX REPLACE "^([^\" ]+|\"[^\"]+\")/compchk.sh.*\n" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}")
-      endif()
-    endif()
-  endif()
-
-  # Revert changes to the environment made previously
-  if("${LANG}" STREQUAL "C")
-    _MPI_env_unset_ifnot(I_MPI_CC)
-    _MPI_env_unset_ifnot(MPICH_CC)
-  elseif("${LANG}" STREQUAL "CXX")
-    _MPI_env_unset_ifnot(I_MPI_CXX)
-    _MPI_env_unset_ifnot(MPICH_CXX)
-  elseif("${LANG}" STREQUAL "Fortran")
-    _MPI_env_unset_ifnot(I_MPI_FC)
-    _MPI_env_unset_ifnot(MPICH_FC)
-    _MPI_env_unset_ifnot(I_MPI_F77)
-    _MPI_env_unset_ifnot(MPICH_F77)
-    _MPI_env_unset_ifnot(I_MPI_F90)
-    _MPI_env_unset_ifnot(MPICH_F90)
-  endif()
-
-  _MPI_env_unset_ifnot(I_MPI_DEBUG_INFO_STRIP)
-  _MPI_env_unset_ifnot(I_MPI_FORT_BIND)
-
-  if (NOT (MPI_COMPILER_RETURN EQUAL 0) OR NOT (DEFINED MPI_COMPILE_CMDLINE))
-    # Cannot interrogate this compiler, so exit.
-    set(MPI_${LANG}_WRAPPER_FOUND FALSE PARENT_SCOPE)
-    return()
-  endif()
-  unset(MPI_COMPILER_RETURN)
-
-  # We have our command lines, but we might need to copy MPI_COMPILE_CMDLINE
-  # into MPI_LINK_CMDLINE, if we didn't find the link line.
-  if (NOT DEFINED MPI_LINK_CMDLINE)
-    set(MPI_LINK_CMDLINE "${MPI_COMPILE_CMDLINE}")
-  endif()
-
-  # Visual Studio parsers permit each flag prefixed by either / or -.
-  # We'll normalize this to the - syntax we use for CMake purposes anyways.
-  if(MSVC)
-    foreach(_MPI_VARIABLE IN ITEMS COMPILE LINK)
-      # The Intel MPI wrappers on Windows prefix their output with some copyright boilerplate.
-      # To prevent possible problems, we discard this text before proceeding with any further matching.
-      string(REGEX REPLACE "^[^ ]+ for the Intel\\(R\\) MPI Library [^\n]+ for Windows\\*\nCopyright\\(C\\) [^\n]+, Intel Corporation\\. All rights reserved\\.\n\n" ""
-        MPI_${_MPI_VARIABLE}_CMDLINE "${MPI_${_MPI_VARIABLE}_CMDLINE}")
-      string(REGEX REPLACE "(^| )/" "\\1-" MPI_${_MPI_VARIABLE}_CMDLINE "${MPI_${_MPI_VARIABLE}_CMDLINE}")
-      string(REPLACE "-libpath:" "-LIBPATH:" MPI_${_MPI_VARIABLE}_CMDLINE "${MPI_${_MPI_VARIABLE}_CMDLINE}")
-    endforeach()
-  endif()
-
-  # For MSVC and cl-compatible compilers, the keyword /link indicates a point after which
-  # everything following is passed to the linker. In this case, we drop all prior information
-  # from the link line and treat any unknown extra flags as linker flags.
-  set(_MPI_FILTERED_LINK_INFORMATION FALSE)
-  if(MSVC)
-    if(MPI_LINK_CMDLINE MATCHES " -(link|LINK) ")
-      string(REGEX REPLACE ".+-(link|LINK) +" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}")
-      set(_MPI_FILTERED_LINK_INFORMATION TRUE)
-    endif()
-    string(REGEX REPLACE " +-(link|LINK) .+" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}")
-  endif()
-
-  if(UNIX)
-    # At this point, we obtained some output from a compiler wrapper that works.
-    # We'll now try to parse it into variables with meaning to us.
-    if("${LANG}" STREQUAL "Fortran")
-      # If MPICH (and derivates) didn't recognize the Fortran compiler include flag during configuration,
-      # they'll return a set of three commands, consisting out of a symlink command for mpif.h,
-      # the actual compiler command and deletion of the created symlink.
-      # Especially with M(VA)PICH-1, this appears to happen erroneously, and therefore we should translate
-      # this output into an additional include directory and then drop it from the output.
-      if("${MPI_COMPILE_CMDLINE}" MATCHES "^ln -s ([^\" ]+|\"[^\"]+\") mpif.h")
-        get_filename_component(MPI_INCLUDE_DIRS_WORK "${CMAKE_MATCH_1}" DIRECTORY)
-        string(REGEX REPLACE "^ln -s ([^\" ]+|\"[^\"]+\") mpif.h\n" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}")
-        string(REGEX REPLACE "^ln -s ([^\" ]+|\"[^\"]+\") mpif.h\n" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}")
-        string(REGEX REPLACE "\nrm -f mpif.h$" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}")
-        string(REGEX REPLACE "\nrm -f mpif.h$" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}")
-      endif()
-    endif()
-
-    # If Intel MPI was configured for static linkage with -static_mpi, the wrapper will by default strip
-    # debug information from resulting binaries (see I_MPI_DEBUG_INFO_STRIP).
-    # Since we cannot process this information into CMake logic, we need to discard the resulting objcopy
-    # commands from the output.
-    string(REGEX REPLACE "(^|\n)objcopy[^\n]+(\n|$)" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}")
-    string(REGEX REPLACE "(^|\n)objcopy[^\n]+(\n|$)" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}")
-  endif()
-
-  # For Visual C++, extracting compiler options in a generic fashion isn't easy. However, no MPI implementation
-  # on Windows seems to require any specific ones, either.
-  if(NOT MSVC)
-    # Extract compile options from the compile command line.
-    string(REGEX MATCHALL "(^| )-f([^\" ]+|\"[^\"]+\")" MPI_ALL_COMPILE_OPTIONS "${MPI_COMPILE_CMDLINE}")
-
-    foreach(_MPI_COMPILE_OPTION IN LISTS MPI_ALL_COMPILE_OPTIONS)
-      string(REGEX REPLACE "^ " "" _MPI_COMPILE_OPTION "${_MPI_COMPILE_OPTION}")
-
-      # Ignore -fstack-protector directives: These occur on MPICH and MVAPICH when the libraries
-      # themselves were built with this flag. However, this flag is unrelated to using MPI, and
-      # we won't match the accompanying --param-ssp-size and -Wp,-D_FORTIFY_SOURCE flags and therefore
-      # produce inconsistent results with the regularly flags.
-      # Similarly, aliasing flags do not belong into our flag array.
-      if(NOT "${_MPI_COMPILE_OPTION}" MATCHES "^-f((no-|)(stack-protector|strict-aliasing)|PI[CE]|pi[ce])")
-        list(APPEND MPI_COMPILE_OPTIONS_WORK "${_MPI_COMPILE_OPTION}")
-      endif()
-    endforeach()
-  endif()
-
-  # For GNU-style compilers, it's possible to prefix includes and definitions with certain flags to pass them
-  # only to the preprocessor. For CMake purposes, we need to treat, but ignore such scopings.
-  # Note that we do not support spaces between the arguments, i.e. -Wp,-I -Wp,/opt/mympi will not be parsed
-  # correctly. This form does not seem to occur in any common MPI implementation, however.
-  if(NOT MSVC)
-    set(_MPI_PREPROCESSOR_FLAG_REGEX "(-Wp,|-Xpreprocessor )?")
-  else()
-    set(_MPI_PREPROCESSOR_FLAG_REGEX "")
-  endif()
-
-  # Same deal as above, for the definitions.
-  string(REGEX MATCHALL "(^| )${_MPI_PREPROCESSOR_FLAG_REGEX}-D *([^\" ]+|\"[^\"]+\")" MPI_ALL_COMPILE_DEFINITIONS "${MPI_COMPILE_CMDLINE}")
-
-  foreach(_MPI_COMPILE_DEFINITION IN LISTS MPI_ALL_COMPILE_DEFINITIONS)
-    string(REGEX REPLACE "^ ?${_MPI_PREPROCESSOR_FLAG_REGEX}-D *" "" _MPI_COMPILE_DEFINITION "${_MPI_COMPILE_DEFINITION}")
-    string(REPLACE "\"" "" _MPI_COMPILE_DEFINITION "${_MPI_COMPILE_DEFINITION}")
-    if(NOT "${_MPI_COMPILE_DEFINITION}" MATCHES "^_FORTIFY_SOURCE.*")
-      list(APPEND MPI_COMPILE_DEFINITIONS_WORK "${_MPI_COMPILE_DEFINITION}")
-    endif()
-  endforeach()
-
-  # Extract include paths from compile command line
-  string(REGEX MATCHALL "(^| )${_MPI_PREPROCESSOR_FLAG_REGEX}${CMAKE_INCLUDE_FLAG_${LANG}} *([^\" ]+|\"[^\"]+\")"
-    MPI_ALL_INCLUDE_PATHS "${MPI_COMPILE_CMDLINE}")
-
-  # If extracting failed to work, we'll try using -showme:incdirs.
-  # Unlike before, we do this without the environment variables set up, but since only MPICH derivates are affected by any of them, and
-  # -showme:... is only supported by Open MPI and LAM/MPI, this isn't a concern.
-  if (NOT MPI_ALL_INCLUDE_PATHS)
-    _MPI_check_compiler(${LANG} "-showme:incdirs" MPI_INCDIRS_CMDLINE MPI_INCDIRS_COMPILER_RETURN)
-    if(MPI_INCDIRS_COMPILER_RETURN)
-      separate_arguments(MPI_ALL_INCLUDE_PATHS NATIVE_COMMAND "${MPI_INCDIRS_CMDLINE}")
-    endif()
-  endif()
-
-  foreach(_MPI_INCLUDE_PATH IN LISTS MPI_ALL_INCLUDE_PATHS)
-    string(REGEX REPLACE "^ ?${_MPI_PREPROCESSOR_FLAG_REGEX}${CMAKE_INCLUDE_FLAG_${LANG}} *" "" _MPI_INCLUDE_PATH "${_MPI_INCLUDE_PATH}")
-    string(REPLACE "\"" "" _MPI_INCLUDE_PATH "${_MPI_INCLUDE_PATH}")
-    get_filename_component(_MPI_INCLUDE_PATH "${_MPI_INCLUDE_PATH}" REALPATH)
-    list(APPEND MPI_INCLUDE_DIRS_WORK "${_MPI_INCLUDE_PATH}")
-  endforeach()
-
-  # The next step are linker flags and library directories. Here, we first take the flags given in raw -L or -LIBPATH: syntax.
-  string(REGEX MATCHALL "(^| )${CMAKE_LIBRARY_PATH_FLAG} *([^\" ]+|\"[^\"]+\")" MPI_DIRECT_LINK_PATHS "${MPI_LINK_CMDLINE}")
-  foreach(_MPI_LPATH IN LISTS MPI_DIRECT_LINK_PATHS)
-    string(REGEX REPLACE "(^| )${CMAKE_LIBRARY_PATH_FLAG} *" "" _MPI_LPATH "${_MPI_LPATH}")
-    list(APPEND MPI_ALL_LINK_PATHS "${_MPI_LPATH}")
-  endforeach()
-
-  # If the link commandline hasn't been filtered (e.g. when using MSVC and /link), we need to extract the relevant parts first.
-  if(NOT _MPI_FILTERED_LINK_INFORMATION)
-    string(REGEX MATCHALL "(^| )(-Wl,|-Xlinker +)([^\" ]+|\"[^\"]+\")" MPI_LINK_FLAGS "${MPI_LINK_CMDLINE}")
-
-    # In this case, we could also find some indirectly given linker paths, e.g. prefixed by -Xlinker or -Wl,
-    # Since syntaxes like -Wl,-L -Wl,/my/path/to/lib are also valid, we parse these paths by first removing -Wl, and -Xlinker
-    # from the list of filtered flags and then parse the remainder of the output.
-    string(REGEX REPLACE "(-Wl,|-Xlinker +)" "" MPI_LINK_FLAGS_RAW "${MPI_LINK_FLAGS}")
-
-    # Now we can parse the leftover output. Note that spaces can now be handled since the above example would reduce to
-    # -L /my/path/to/lib and can be extracted correctly.
-    string(REGEX MATCHALL "^(${CMAKE_LIBRARY_PATH_FLAG},? *|--library-path=)([^\" ]+|\"[^\"]+\")"
-      MPI_INDIRECT_LINK_PATHS "${MPI_LINK_FLAGS_RAW}")
-
-    foreach(_MPI_LPATH IN LISTS MPI_INDIRECT_LINK_PATHS)
-      string(REGEX REPLACE "^(${CMAKE_LIBRARY_PATH_FLAG},? *|--library-path=)" "" _MPI_LPATH "${_MPI_LPATH}")
-      list(APPEND MPI_ALL_LINK_PATHS "${_MPI_LPATH}")
-    endforeach()
-
-    # We need to remove the flags we extracted from the linker flag list now.
-    string(REGEX REPLACE "(^| )(-Wl,|-Xlinker +)(${CMAKE_LIBRARY_PATH_FLAG},? *(-Wl,|-Xlinker +)?|--library-path=)([^\" ]+|\"[^\"]+\")" ""
-      MPI_LINK_CMDLINE_FILTERED "${MPI_LINK_CMDLINE}")
-
-    # Some MPI implementations pass on options they themselves were built with. Since -z,noexecstack is a common
-    # hardening, we should strip it. In general, the -z options should be undesirable.
-    string(REGEX REPLACE "(^| )-Wl,-z(,[^ ]+| +-Wl,[^ ]+)" "" MPI_LINK_CMDLINE_FILTERED "${MPI_LINK_CMDLINE_FILTERED}")
-    string(REGEX REPLACE "(^| )-Xlinker +-z +-Xlinker +[^ ]+" "" MPI_LINK_CMDLINE_FILTERED "${MPI_LINK_CMDLINE_FILTERED}")
-
-    # We only consider options of the form -Wl or -Xlinker:
-    string(REGEX MATCHALL "(^| )(-Wl,|-Xlinker +)([^\" ]+|\"[^\"]+\")" MPI_ALL_LINK_FLAGS "${MPI_LINK_CMDLINE_FILTERED}")
-
-    # As a next step, we assemble the linker flags extracted in a preliminary flags string
-    foreach(_MPI_LINK_FLAG IN LISTS MPI_ALL_LINK_FLAGS)
-      string(STRIP "${_MPI_LINK_FLAG}" _MPI_LINK_FLAG)
-      if (MPI_LINK_FLAGS_WORK)
-        string(APPEND MPI_LINK_FLAGS_WORK " ${_MPI_LINK_FLAG}")
-      else()
-        set(MPI_LINK_FLAGS_WORK "${_MPI_LINK_FLAG}")
-      endif()
-    endforeach()
-  else()
-    # In the filtered case, we obtain the link time flags by just stripping the library paths.
-    string(REGEX REPLACE "(^| )${CMAKE_LIBRARY_PATH_FLAG} *([^\" ]+|\"[^\"]+\")" "" MPI_LINK_CMDLINE_FILTERED "${MPI_LINK_CMDLINE}")
-  endif()
-
-  # If we failed to extract any linker paths, we'll try using the -showme:libdirs option with the MPI compiler.
-  # This will return a list of folders, not a set of flags!
-  if (NOT MPI_ALL_LINK_PATHS)
-    _MPI_check_compiler(${LANG} "-showme:libdirs" MPI_LIBDIRS_CMDLINE MPI_LIBDIRS_COMPILER_RETURN)
-    if(MPI_LIBDIRS_COMPILER_RETURN)
-      separate_arguments(MPI_ALL_LINK_PATHS NATIVE_COMMAND "${MPI_LIBDIRS_CMDLINE}")
-    endif()
-  endif()
-
-  # We need to remove potential quotes and convert the paths to CMake syntax while resolving them, too.
-  foreach(_MPI_LPATH IN LISTS MPI_ALL_LINK_PATHS)
-    string(REPLACE "\"" "" _MPI_LPATH "${_MPI_LPATH}")
-    get_filename_component(_MPI_LPATH "${_MPI_LPATH}" REALPATH)
-    list(APPEND MPI_LINK_DIRECTORIES_WORK "${_MPI_LPATH}")
-  endforeach()
-
-  # Extract the set of libraries to link against from the link command line
-  # This only makes sense if CMAKE_LINK_LIBRARY_FLAG is defined, i.e. a -lxxxx syntax is supported by the compiler.
-  if(CMAKE_LINK_LIBRARY_FLAG)
-    string(REGEX MATCHALL "(^| )${CMAKE_LINK_LIBRARY_FLAG}([^\" ]+|\"[^\"]+\")"
-      MPI_LIBNAMES "${MPI_LINK_CMDLINE}")
-
-    foreach(_MPI_LIB_NAME IN LISTS MPI_LIBNAMES)
-      string(REGEX REPLACE "^ ?${CMAKE_LINK_LIBRARY_FLAG}" "" _MPI_LIB_NAME "${_MPI_LIB_NAME}")
-      string(REPLACE "\"" "" _MPI_LIB_NAME "${_MPI_LIB_NAME}")
-      list(APPEND MPI_LIB_NAMES_WORK "${_MPI_LIB_NAME}")
-    endforeach()
-  endif()
-
-  # Treat linker objects given by full path, for example static libraries, import libraries
-  # or shared libraries if there aren't any import libraries in use on the system.
-  # Note that we do not consider CMAKE_<TYPE>_LIBRARY_PREFIX intentionally here: The linker will for a given file
-  # decide how to link it based on file type, not based on a prefix like 'lib'.
-  set(_MPI_LIB_SUFFIX_REGEX "${CMAKE_STATIC_LIBRARY_SUFFIX}")
-  if(DEFINED CMAKE_IMPORT_LIBRARY_SUFFIX)
-    if(NOT ("${CMAKE_IMPORT_LIBRARY_SUFFIX}" STREQUAL "${CMAKE_STATIC_LIBRARY_SUFFIX}"))
-      string(APPEND _MPI_SUFFIX_REGEX "|${CMAKE_IMPORT_LIBRARY_SUFFIX}")
-    endif()
-  else()
-    string(APPEND _MPI_LIB_SUFFIX_REGEX "|${CMAKE_SHARED_LIBRARY_SUFFIX}")
-  endif()
-  set(_MPI_LIB_NAME_REGEX "(([^\" ]+(${_MPI_LIB_SUFFIX_REGEX}))|(\"[^\"]+(${_MPI_LIB_SUFFIX_REGEX})\"))( +|$)")
-  string(REPLACE "." "\\." _MPI_LIB_NAME_REGEX "${_MPI_LIB_NAME_REGEX}")
-
-  string(REGEX MATCHALL "${_MPI_LIB_NAME_REGEX}" MPI_LIBNAMES "${MPI_LINK_CMDLINE}")
-  foreach(_MPI_LIB_NAME IN LISTS MPI_LIBNAMES)
-    string(REGEX REPLACE "^ +\"?|\"? +$" "" _MPI_LIB_NAME "${_MPI_LIB_NAME}")
-    get_filename_component(_MPI_LIB_PATH "${_MPI_LIB_NAME}" DIRECTORY)
-    if(NOT "${_MPI_LIB_PATH}" STREQUAL "")
-      list(APPEND MPI_LIB_FULLPATHS_WORK "${_MPI_LIB_NAME}")
-    else()
-      list(APPEND MPI_LIB_NAMES_WORK "${_MPI_LIB_NAME}")
-    endif()
-  endforeach()
-
-  # Save the explicitly given link directories
-  set(MPI_LINK_DIRECTORIES_LEFTOVER "${MPI_LINK_DIRECTORIES_WORK}")
-
-  # An MPI compiler wrapper could have its MPI libraries in the implictly
-  # linked directories of the compiler itself.
-  if(DEFINED CMAKE_${LANG}_IMPLICIT_LINK_DIRECTORIES)
-    list(APPEND MPI_LINK_DIRECTORIES_WORK "${CMAKE_${LANG}_IMPLICIT_LINK_DIRECTORIES}")
-  endif()
-
-  # Determine full path names for all of the libraries that one needs
-  # to link against in an MPI program
-  unset(MPI_PLAIN_LIB_NAMES_WORK)
-  foreach(_MPI_LIB_NAME IN LISTS MPI_LIB_NAMES_WORK)
-    get_filename_component(_MPI_PLAIN_LIB_NAME "${_MPI_LIB_NAME}" NAME_WE)
-    list(APPEND MPI_PLAIN_LIB_NAMES_WORK "${_MPI_PLAIN_LIB_NAME}")
-    find_library(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY
-      NAMES "${_MPI_LIB_NAME}" "lib${_MPI_LIB_NAME}"
-      HINTS ${MPI_LINK_DIRECTORIES_WORK}
-      DOC "Location of the ${_MPI_PLAIN_LIB_NAME} library for MPI"
-    )
-    mark_as_advanced(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY)
-    # Remove the directory from the remainder list.
-    if(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY)
-      get_filename_component(_MPI_TAKEN_DIRECTORY "${MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY}" DIRECTORY)
-      list(REMOVE_ITEM MPI_LINK_DIRECTORIES_LEFTOVER "${_MPI_TAKEN_DIRECTORY}")
-    endif()
-  endforeach()
-
-  # Add the link directories given explicitly that we haven't used back as linker directories.
-  if(NOT WIN32)
-    foreach(_MPI_LINK_DIRECTORY IN LISTS MPI_LINK_DIRECTORIES_LEFTOVER)
-      file(TO_NATIVE_PATH "${_MPI_LINK_DIRECTORY}" _MPI_LINK_DIRECTORY_ACTUAL)
-      string(FIND "${_MPI_LINK_DIRECTORY_ACTUAL}" " " _MPI_LINK_DIRECTORY_CONTAINS_SPACE)
-      if(NOT _MPI_LINK_DIRECTORY_CONTAINS_SPACE EQUAL -1)
-        set(_MPI_LINK_DIRECTORY_ACTUAL "\"${_MPI_LINK_DIRECTORY_ACTUAL}\"")
-      endif()
-      if(MPI_LINK_FLAGS_WORK)
-        string(APPEND MPI_LINK_FLAGS_WORK " ${CMAKE_LIBRARY_PATH_FLAG}${_MPI_LINK_DIRECTORY_ACTUAL}")
-      else()
-        set(MPI_LINK_FLAGS_WORK "${CMAKE_LIBRARY_PATH_FLAG}${_MPI_LINK_DIRECTORY_ACTUAL}")
-      endif()
-    endforeach()
-  endif()
-
-  # Deal with the libraries given with full path next
-  unset(MPI_DIRECT_LIB_NAMES_WORK)
-  foreach(_MPI_LIB_FULLPATH IN LISTS MPI_LIB_FULLPATHS_WORK)
-    get_filename_component(_MPI_PLAIN_LIB_NAME "${_MPI_LIB_FULLPATH}" NAME_WE)
-    list(APPEND MPI_DIRECT_LIB_NAMES_WORK "${_MPI_PLAIN_LIB_NAME}")
-    set(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY "${_MPI_LIB_FULLPATH}" CACHE FILEPATH "Location of the ${_MPI_PLAIN_LIB_NAME} library for MPI")
-    mark_as_advanced(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY)
-  endforeach()
-  # Directly linked objects should be linked first in case some generic linker flags are needed for them.
-  if(MPI_DIRECT_LIB_NAMES_WORK)
-    set(MPI_PLAIN_LIB_NAMES_WORK "${MPI_DIRECT_LIB_NAMES_WORK};${MPI_PLAIN_LIB_NAMES_WORK}")
-  endif()
-
-  # MPI might require pthread to work. The above mechanism wouldn't detect it, but we need to
-  # link it in that case. -lpthread is covered by the normal library treatment on the other hand.
-  if("${MPI_COMPILE_CMDLINE}" MATCHES "-pthread")
-    list(APPEND MPI_COMPILE_OPTIONS_WORK "-pthread")
-    if(MPI_LINK_FLAGS_WORK)
-      string(APPEND MPI_LINK_FLAGS_WORK " -pthread")
-    else()
-      set(MPI_LINK_FLAGS_WORK "-pthread")
-    endif()
-  endif()
-
-  if(MPI_${LANG}_EXTRA_COMPILE_DEFINITIONS)
-    list(APPEND MPI_COMPILE_DEFINITIONS_WORK "${MPI_${LANG}_EXTRA_COMPILE_DEFINITIONS}")
-  endif()
-  if(MPI_${LANG}_EXTRA_COMPILE_OPTIONS)
-    list(APPEND MPI_COMPILE_OPTIONS_WORK "${MPI_${LANG}_EXTRA_COMPILE_OPTIONS}")
-  endif()
-  if(MPI_${LANG}_EXTRA_LIB_NAMES)
-    list(APPEND MPI_PLAIN_LIB_NAMES_WORK "${MPI_${LANG}_EXTRA_LIB_NAMES}")
-  endif()
-
-  # If we found MPI, set up all of the appropriate cache entries
-  if(NOT MPI_${LANG}_COMPILE_OPTIONS)
-    set(MPI_${LANG}_COMPILE_OPTIONS          ${MPI_COMPILE_OPTIONS_WORK}     CACHE STRING "MPI ${LANG} compilation options"            FORCE)
-  endif()
-  if(NOT MPI_${LANG}_COMPILE_DEFINITIONS)
-    set(MPI_${LANG}_COMPILE_DEFINITIONS      ${MPI_COMPILE_DEFINITIONS_WORK} CACHE STRING "MPI ${LANG} compilation definitions"        FORCE)
-  endif()
-  if(NOT MPI_${LANG}_COMPILER_INCLUDE_DIRS)
-    set(MPI_${LANG}_COMPILER_INCLUDE_DIRS    ${MPI_INCLUDE_DIRS_WORK}        CACHE STRING "MPI ${LANG} compiler wrapper include directories" FORCE)
-  endif()
-  if(NOT MPI_${LANG}_LINK_FLAGS)
-    set(MPI_${LANG}_LINK_FLAGS               ${MPI_LINK_FLAGS_WORK}          CACHE STRING "MPI ${LANG} linker flags"                   FORCE)
-  endif()
-  if(NOT MPI_${LANG}_LIB_NAMES)
-    set(MPI_${LANG}_LIB_NAMES                ${MPI_PLAIN_LIB_NAMES_WORK}     CACHE STRING "MPI ${LANG} libraries to link against"      FORCE)
-  endif()
-  set(MPI_${LANG}_WRAPPER_FOUND TRUE PARENT_SCOPE)
-endfunction()
-
-function(_MPI_guess_settings LANG)
-  set(MPI_GUESS_FOUND FALSE)
-  # Currently only MSMPI and MPICH2 on Windows are supported, so we can skip this search if we're not targeting that.
-  if(WIN32)
-    # MSMPI
-
-    # The environment variables MSMPI_INC and MSMPILIB32/64 are the only ways of locating the MSMPI_SDK,
-    # which is installed separately from the runtime. Thus it's possible to have mpiexec but not MPI headers
-    # or import libraries and vice versa.
-    if(NOT MPI_GUESS_LIBRARY_NAME OR "${MPI_GUESS_LIBRARY_NAME}" STREQUAL "MSMPI")
-      # We first attempt to locate the msmpi.lib. Should be find it, we'll assume that the MPI present is indeed
-      # Microsoft MPI.
-      if("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
-        file(TO_CMAKE_PATH "$ENV{MSMPI_LIB64}" MPI_MSMPI_LIB_PATH)
-        file(TO_CMAKE_PATH "$ENV{MSMPI_INC}/x64" MPI_MSMPI_INC_PATH_EXTRA)
-      else()
-        file(TO_CMAKE_PATH "$ENV{MSMPI_LIB32}" MPI_MSMPI_LIB_PATH)
-        file(TO_CMAKE_PATH "$ENV{MSMPI_INC}/x86" MPI_MSMPI_INC_PATH_EXTRA)
-      endif()
-
-      find_library(MPI_msmpi_LIBRARY
-        NAMES msmpi
-        HINTS ${MPI_MSMPI_LIB_PATH}
-        DOC "Location of the msmpi library for Microsoft MPI")
-      mark_as_advanced(MPI_msmpi_LIBRARY)
-
-      if(MPI_msmpi_LIBRARY)
-        # Next, we attempt to locate the MPI header. Note that for Fortran we know that mpif.h is a way
-        # MSMPI can be used and therefore that header has to be present.
-        if(NOT MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS)
-          get_filename_component(MPI_MSMPI_INC_DIR "$ENV{MSMPI_INC}" REALPATH)
-          set(MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS "${MPI_MSMPI_INC_DIR}" CACHE STRING "MPI ${LANG} additional include directories" FORCE)
-          unset(MPI_MSMPI_INC_DIR)
-        endif()
-
-        # For MSMPI, one can compile the MPI module by building the mpi.f90 shipped with the MSMPI SDK,
-        # thus it might be present or provided by the user. Figuring out which is supported is done later on.
-        # The PGI Fortran compiler for instance ships a prebuilt set of modules in its own include folder.
-        # Should a user be employing PGI or have built its own set and provided it via cache variables, the
-        # splitting routine would have located the module files.
-
-        # For C and C++, we're done here (MSMPI does not ship the MPI-2 C++ bindings) - however, for Fortran
-        # we need some extra library to glue Fortran support together:
-        # MSMPI ships 2-4 Fortran libraries, each for different Fortran compiler behaviors. The library names
-        # ending with a c are using the cdecl calling convention, whereas those ending with an s are for Fortran
-        # implementations using stdcall. Therefore, the 64-bit MSMPI only ships those ending in 'c', whereas the 32-bit
-        # has both variants available.
-        # The second difference is the last but one letter, if it's an e(nd), the length of a string argument is
-        # passed by the Fortran compiler after all other arguments on the parameter list, if it's an m(ixed),
-        # it's passed immediately after the string address.
-
-        # To summarize:
-        #   - msmpifec: CHARACTER length passed after the parameter list and using cdecl calling convention
-        #   - msmpifmc: CHARACTER length passed directly after string address and using cdecl calling convention
-        #   - msmpifes: CHARACTER length passed after the parameter list and using stdcall calling convention
-        #   - msmpifms: CHARACTER length passed directly after string address and using stdcall calling convention
-        # 32-bit MSMPI ships all four libraries, 64-bit MSMPI ships only the first two.
-
-        # As is, Intel Fortran and PGI Fortran both use the 'ec' variant of the calling convention, whereas
-        # the old Compaq Visual Fortran compiler defaulted to the 'ms' version. It's possible to make Intel Fortran
-        # use the CVF calling convention using /iface:cvf, but we assume - and this is also assumed in FortranCInterface -
-        # this isn't the case. It's also possible to make CVF use the 'ec' variant, using /iface=(cref,nomixed_str_len_arg).
-
-        # Our strategy is now to locate all libraries, but enter msmpifec into the LIB_NAMES array.
-        # Should this not be adequate it's a straightforward way for a user to change the LIB_NAMES array and
-        # have his library found. Still, this should not be necessary outside of exceptional cases, as reasoned.
-        if ("${LANG}" STREQUAL "Fortran")
-          set(MPI_MSMPI_CALLINGCONVS c)
-          if("${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
-            list(APPEND MPI_MSMPI_CALLINGCONVS s)
-          endif()
-          foreach(mpistrlenpos IN ITEMS e m)
-            foreach(mpicallingconv IN LISTS MPI_MSMPI_CALLINGCONVS)
-              find_library(MPI_msmpif${mpistrlenpos}${mpicallingconv}_LIBRARY
-                NAMES msmpif${mpistrlenpos}${mpicallingconv}
-                HINTS "${MPI_MSMPI_LIB_PATH}"
-                DOC "Location of the msmpi${mpistrlenpos}${mpicallingconv} library for Microsoft MPI")
-              mark_as_advanced(MPI_msmpif${mpistrlenpos}${mpicallingconv}_LIBRARY)
-            endforeach()
-          endforeach()
-          if(NOT MPI_${LANG}_LIB_NAMES)
-            set(MPI_${LANG}_LIB_NAMES "msmpi;msmpifec" CACHE STRING "MPI ${LANG} libraries to link against" FORCE)
-          endif()
-
-          # At this point we're *not* done. MSMPI requires an additional include file for Fortran giving the value
-          # of MPI_AINT. This file is called mpifptr.h located in the x64 and x86 subfolders, respectively.
-          find_path(MPI_mpifptr_INCLUDE_DIR
-            NAMES "mpifptr.h"
-            HINTS "${MPI_MSMPI_INC_PATH_EXTRA}"
-            DOC "Location of the mpifptr.h extra header for Microsoft MPI")
-          if(NOT MPI_${LANG}_ADDITIONAL_INCLUDE_VARS)
-            set(MPI_${LANG}_ADDITIONAL_INCLUDE_VARS "mpifptr" CACHE STRING "MPI ${LANG} additional include directory variables, given in the form MPI_<name>_INCLUDE_DIR." FORCE)
-          endif()
-          mark_as_advanced(MPI_${LANG}_ADDITIONAL_INCLUDE_VARS MPI_mpifptr_INCLUDE_DIR)
-        else()
-          if(NOT MPI_${LANG}_LIB_NAMES)
-            set(MPI_${LANG}_LIB_NAMES "msmpi" CACHE STRING "MPI ${LANG} libraries to link against" FORCE)
-          endif()
-        endif()
-        mark_as_advanced(MPI_${LANG}_LIB_NAMES)
-        set(MPI_GUESS_FOUND TRUE)
-
-        if(_MPIEXEC_NOT_GIVEN)
-          unset(MPIEXEC_EXECUTABLE CACHE)
-        endif()
-
-        find_program(MPIEXEC_EXECUTABLE
-          NAMES mpiexec
-          HINTS $ENV{MSMPI_BIN} "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MPI;InstallRoot]/Bin"
-          DOC "Executable for running MPI programs.")
-      endif()
-    endif()
-
-    # At this point there's not many MPIs that we could still consider.
-    # OpenMPI 1.6.x and below supported Windows, but these ship compiler wrappers that still work.
-    # The only other relevant MPI implementation without a wrapper is MPICH2, which had Windows support in 1.4.1p1 and older.
-    if(NOT MPI_GUESS_FOUND AND (NOT MPI_GUESS_LIBRARY_NAME OR "${MPI_GUESS_LIBRARY_NAME}" STREQUAL "MPICH2"))
-      set(MPI_MPICH_PREFIX_PATHS
-        "$ENV{ProgramW6432}/MPICH2/lib"
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MPICH\\SMPD;binary]/../lib"
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MPICH2;Path]/lib"
-      )
-
-      # All of C, C++ and Fortran will need mpi.lib, so we'll look for this first
-      find_library(MPI_mpi_LIBRARY
-        NAMES mpi
-        HINTS ${MPI_MPICH_PREFIX_PATHS})
-      mark_as_advanced(MPI_mpi_LIBRARY)
-      # If we found mpi.lib, we detect the rest of MPICH2
-      if(MPI_mpi_LIBRARY)
-        set(MPI_MPICH_LIB_NAMES "mpi")
-        # If MPI-2 C++ bindings are requested, we need to locate cxx.lib as well.
-        # Otherwise, MPICH_SKIP_MPICXX will be defined and these bindings aren't needed.
-        if("${LANG}" STREQUAL "CXX" AND NOT MPI_CXX_SKIP_MPICXX)
-          find_library(MPI_cxx_LIBRARY
-            NAMES cxx
-            HINTS ${MPI_MPICH_PREFIX_PATHS})
-          mark_as_advanced(MPI_cxx_LIBRARY)
-          list(APPEND MPI_MPICH_LIB_NAMES "cxx")
-        # For Fortran, MPICH2 provides three different libraries:
-        #   fmpich2.lib which uses uppercase symbols and cdecl,
-        #   fmpich2s.lib which uses uppercase symbols and stdcall (32-bit only),
-        #   fmpich2g.lib which uses lowercase symbols with double underscores and cdecl.
-        # fmpich2s.lib would be useful for Compaq Visual Fortran, fmpich2g.lib has to be used with GNU g77 and is also
-        # provided in the form of an .a archive for MinGW and Cygwin. From our perspective, fmpich2.lib is the only one
-        # we need to try, and if it doesn't work with the given Fortran compiler we'd find out later on during validation
-        elseif("${LANG}" STREQUAL "Fortran")
-          find_library(MPI_fmpich2_LIBRARY
-            NAMES fmpich2
-            HINTS ${MPI_MPICH_PREFIX_PATHS})
-          find_library(MPI_fmpich2s_LIBRARY
-            NAMES fmpich2s
-            HINTS ${MPI_MPICH_PREFIX_PATHS})
-          find_library(MPI_fmpich2g_LIBRARY
-            NAMES fmpich2g
-            HINTS ${MPI_MPICH_PREFIX_PATHS})
-          mark_as_advanced(MPI_fmpich2_LIBRARY MPI_fmpich2s_LIBRARY MPI_fmpich2g_LIBRARY)
-          list(APPEND MPI_MPICH_LIB_NAMES "fmpich2")
-        endif()
-
-        if(NOT MPI_${LANG}_LIB_NAMES)
-          set(MPI_${LANG}_LIB_NAMES "${MPI_MPICH_LIB_NAMES}" CACHE STRING "MPI ${LANG} libraries to link against" FORCE)
-        endif()
-        unset(MPI_MPICH_LIB_NAMES)
-
-        if(NOT MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS)
-          # For MPICH2, the include folder would be in ../include relative to the library folder.
-          get_filename_component(MPI_MPICH_ROOT_DIR "${MPI_mpi_LIBRARY}" DIRECTORY)
-          get_filename_component(MPI_MPICH_ROOT_DIR "${MPI_MPICH_ROOT_DIR}" DIRECTORY)
-          if(IS_DIRECTORY "${MPI_MPICH_ROOT_DIR}/include")
-            set(MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS "${MPI_MPICH_ROOT_DIR}/include" CACHE STRING "MPI ${LANG} additional include directory variables, given in the form MPI_<name>_INCLUDE_DIR." FORCE)
-          endif()
-          unset(MPI_MPICH_ROOT_DIR)
-        endif()
-        set(MPI_GUESS_FOUND TRUE)
-
-        if(_MPIEXEC_NOT_GIVEN)
-          unset(MPIEXEC_EXECUTABLE CACHE)
-        endif()
-
-        find_program(MPIEXEC_EXECUTABLE
-          NAMES ${_MPIEXEC_NAMES}
-          HINTS "$ENV{ProgramW6432}/MPICH2/bin"
-                "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MPICH\\SMPD;binary]"
-                "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MPICH2;Path]/bin"
-          DOC "Executable for running MPI programs.")
-      endif()
-      unset(MPI_MPICH_PREFIX_PATHS)
-    endif()
-  endif()
-  set(MPI_${LANG}_GUESS_FOUND "${MPI_GUESS_FOUND}" PARENT_SCOPE)
-endfunction()
-
-function(_MPI_adjust_compile_definitions LANG)
-  if("${LANG}" STREQUAL "CXX")
-    # To disable the C++ bindings, we need to pass some definitions since the mpi.h header has to deal with both C and C++
-    # bindings in MPI-2.
-    if(MPI_CXX_SKIP_MPICXX AND NOT MPI_${LANG}_COMPILE_DEFINITIONS MATCHES "SKIP_MPICXX")
-      # MPICH_SKIP_MPICXX is being used in MPICH and derivatives like MVAPICH or Intel MPI
-      # OMPI_SKIP_MPICXX is being used in Open MPI
-      # _MPICC_H is being used for IBM Platform MPI
-      list(APPEND MPI_${LANG}_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX" "OMPI_SKIP_MPICXX" "_MPICC_H")
-      set(MPI_${LANG}_COMPILE_DEFINITIONS "${MPI_${LANG}_COMPILE_DEFINITIONS}" CACHE STRING "MPI ${LANG} compilation definitions" FORCE)
-    endif()
-  endif()
-endfunction()
-
-macro(_MPI_assemble_libraries LANG)
-  set(MPI_${LANG}_LIBRARIES "")
-  # Only for libraries do we need to check whether the compiler's linking stage is separate.
-  if(NOT "${MPI_${LANG}_COMPILER}" STREQUAL "${CMAKE_${LANG}_COMPILER}" OR NOT MPI_${LANG}_WORKS_IMPLICIT)
-    foreach(mpilib IN LISTS MPI_${LANG}_LIB_NAMES)
-      list(APPEND MPI_${LANG}_LIBRARIES ${MPI_${mpilib}_LIBRARY})
-    endforeach()
-  endif()
-endmacro()
-
-macro(_MPI_assemble_include_dirs LANG)
-  set(MPI_${LANG}_INCLUDE_DIRS
-    ${MPI_${LANG}_COMPILER_INCLUDE_DIRS}
-    ${MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS}
-    )
-  if("${LANG}" MATCHES "(C|CXX)")
-    if(MPI_${LANG}_HEADER_DIR)
-      list(APPEND MPI_${LANG}_INCLUDE_DIRS "${MPI_${LANG}_HEADER_DIR}")
-    endif()
-  else() # Fortran
-    if(MPI_${LANG}_F77_HEADER_DIR)
-      list(APPEND MPI_${LANG}_INCLUDE_DIRS "${MPI_${LANG}_F77_HEADER_DIR}")
-    endif()
-    if(MPI_${LANG}_MODULE_DIR)
-      list(APPEND MPI_${LANG}_INCLUDE_DIRS "${MPI_${LANG}_MODULE_DIR}")
-    endif()
-  endif()
-  if(MPI_${LANG}_INCLUDE_DIRS)
-    list(REMOVE_DUPLICATES MPI_${LANG}_INCLUDE_DIRS)
-  endif()
-endmacro()
-
-macro(_MPI_split_include_dirs LANG)
-  # Backwards compatibility: Search INCLUDE_PATH if given.
-  if(MPI_${LANG}_INCLUDE_PATH)
-    list(APPEND MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS "${MPI_${LANG}_INCLUDE_PATH}")
-  endif()
-
-  # We try to find the headers/modules among those paths (and system paths)
-  # For C/C++, we just need to have a look for mpi.h.
-  if("${LANG}" MATCHES "(C|CXX)")
-    find_path(MPI_${LANG}_HEADER_DIR "mpi.h"
-      HINTS
-        ${MPI_${LANG}_COMPILER_INCLUDE_DIRS}
-        ${MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS}
-    )
-    mark_as_advanced(MPI_${LANG}_HEADER_DIR)
-    if(MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS)
-      list(REMOVE_ITEM MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS "${MPI_${LANG}_HEADER_DIR}")
-    endif()
-
-  # Fortran is more complicated here: An implementation could provide
-  # any of the Fortran 77/90/2008 APIs for MPI. For example, MSMPI
-  # only provides Fortran 77 and - if mpi.f90 is built - potentially
-  # a Fortran 90 module.
-  elseif("${LANG}" STREQUAL "Fortran")
-    find_path(MPI_${LANG}_F77_HEADER_DIR "mpif.h"
-      HINTS
-        ${MPI_${LANG}_COMPILER_INCLUDE_DIRS}
-        ${MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS}
-    )
-    find_path(MPI_${LANG}_MODULE_DIR
-      NAMES "mpi.mod" "mpi_f08.mod"
-      HINTS
-        ${MPI_${LANG}_COMPILER_INCLUDE_DIRS}
-        ${MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS}
-    )
-    if(MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS)
-      list(REMOVE_ITEM MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS
-        "${MPI_${LANG}_F77_HEADER_DIR}"
-        "${MPI_${LANG}_MODULE_DIR}"
-      )
-    endif()
-    mark_as_advanced(MPI_${LANG}_F77_HEADER_DIR MPI_${LANG}_MODULE_DIR)
-  endif()
-
-  # Remove duplicates and default system directories from the list.
-  if(MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS)
-    list(REMOVE_DUPLICATES MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS)
-    foreach(MPI_IMPLICIT_INC_DIR IN LISTS CMAKE_${LANG}_IMPLICIT_LINK_DIRECTORIES)
-      list(REMOVE_ITEM MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS ${MPI_IMPLICIT_INC_DIR})
-    endforeach()
-  endif()
-
-  set(MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS ${MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS} CACHE STRING "MPI ${LANG} additional include directories" FORCE)
-endmacro()
-
-macro(_MPI_create_imported_target LANG)
-  if(NOT TARGET MPI::MPI_${LANG})
-    add_library(MPI::MPI_${LANG} INTERFACE IMPORTED)
-  endif()
-
-  # When this is consumed for compiling CUDA, use '-Xcompiler' to wrap '-pthread' and '-fexceptions'.
-  string(REPLACE "-pthread" "$<$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>:SHELL:-Xcompiler >-pthread"
-    _MPI_${LANG}_COMPILE_OPTIONS "${MPI_${LANG}_COMPILE_OPTIONS}")
-  string(REPLACE "-fexceptions" "$<$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>:SHELL:-Xcompiler >-fexceptions"
-    _MPI_${LANG}_COMPILE_OPTIONS "${MPI_${LANG}_COMPILE_OPTIONS}")
-  set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_COMPILE_OPTIONS "${_MPI_${LANG}_COMPILE_OPTIONS}")
-  unset(_MPI_${LANG}_COMPILE_OPTIONS)
-
-  set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_COMPILE_DEFINITIONS "${MPI_${LANG}_COMPILE_DEFINITIONS}")
-
-  if(MPI_${LANG}_LINK_FLAGS)
-    string(REPLACE "-pthread" "$<$<LINK_LANG_AND_ID:CUDA,NVIDIA>:-Xlinker >-pthread"
-      _MPI_${LANG}_LINK_FLAGS "${MPI_${LANG}_LINK_FLAGS}")
-    set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_LINK_OPTIONS "SHELL:${MPI_${LANG}_LINK_FLAGS}")
-  endif()
-  # If the compiler links MPI implicitly, no libraries will be found as they're contained within
-  # CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES already.
-  if(MPI_${LANG}_LIBRARIES)
-    set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_LINK_LIBRARIES "${MPI_${LANG}_LIBRARIES}")
-  endif()
-  # Given the new design of FindMPI, INCLUDE_DIRS will always be located, even under implicit linking.
-  set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${MPI_${LANG}_INCLUDE_DIRS}")
-endmacro()
-
-function(_MPI_try_staged_settings LANG MPI_TEST_FILE_NAME MODE RUN_BINARY SUPPRESS_ERRORS)
-  set(WORK_DIR "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindMPI")
-  set(SRC_DIR "${CMAKE_ROOT}/Modules/FindMPI")
-  set(BIN_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindMPI/${MPI_TEST_FILE_NAME}_${LANG}.bin")
-  unset(MPI_TEST_COMPILE_DEFINITIONS)
-  if("${LANG}" STREQUAL "Fortran")
-    if("${MODE}" STREQUAL "F90_MODULE")
-      set(MPI_Fortran_INCLUDE_LINE "use mpi\n      implicit none")
-    elseif("${MODE}" STREQUAL "F08_MODULE")
-      set(MPI_Fortran_INCLUDE_LINE "use mpi_f08\n      implicit none")
-    else() # F77 header
-      set(MPI_Fortran_INCLUDE_LINE "implicit none\n      include 'mpif.h'")
-    endif()
-    configure_file("${SRC_DIR}/${MPI_TEST_FILE_NAME}.f90.in" "${WORK_DIR}/${MPI_TEST_FILE_NAME}.f90" @ONLY)
-    set(MPI_TEST_SOURCE_FILE "${WORK_DIR}/${MPI_TEST_FILE_NAME}.f90")
-  elseif("${LANG}" STREQUAL "CXX")
-    configure_file("${SRC_DIR}/${MPI_TEST_FILE_NAME}.c" "${WORK_DIR}/${MPI_TEST_FILE_NAME}.cpp" COPYONLY)
-    set(MPI_TEST_SOURCE_FILE "${WORK_DIR}/${MPI_TEST_FILE_NAME}.cpp")
-    if("${MODE}" STREQUAL "TEST_MPICXX")
-      set(MPI_TEST_COMPILE_DEFINITIONS TEST_MPI_MPICXX)
-    endif()
-  else() # C
-    set(MPI_TEST_SOURCE_FILE "${SRC_DIR}/${MPI_TEST_FILE_NAME}.c")
-  endif()
-  if(RUN_BINARY)
-    try_run(MPI_RUN_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE} MPI_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}
-     "${CMAKE_BINARY_DIR}" SOURCES "${MPI_TEST_SOURCE_FILE}"
-      COMPILE_DEFINITIONS ${MPI_TEST_COMPILE_DEFINITIONS}
-      LINK_LIBRARIES MPI::MPI_${LANG}
-      RUN_OUTPUT_VARIABLE MPI_RUN_OUTPUT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}
-      COMPILE_OUTPUT_VARIABLE _MPI_TRY_${MPI_TEST_FILE_NAME}_${MODE}_OUTPUT)
-    set(MPI_RUN_OUTPUT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE} "${MPI_RUN_OUTPUT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}}" PARENT_SCOPE)
-  else()
-    try_compile(MPI_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}
-      "${CMAKE_BINARY_DIR}" SOURCES "${MPI_TEST_SOURCE_FILE}"
-      COMPILE_DEFINITIONS ${MPI_TEST_COMPILE_DEFINITIONS}
-      LINK_LIBRARIES MPI::MPI_${LANG}
-      COPY_FILE "${BIN_FILE}"
-      OUTPUT_VARIABLE _MPI_TRY_${MPI_TEST_FILE_NAME}_${MODE}_OUTPUT)
-  endif()
-  if(NOT SUPPRESS_ERRORS)
-    if(NOT MPI_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE})
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-          "The MPI test ${MPI_TEST_FILE_NAME} for ${LANG} in mode ${MODE} failed to compile with the following output:\n${_MPI_TRY_${MPI_TEST_FILE_NAME}_${MODE}_OUTPUT}\n\n")
-    elseif(DEFINED MPI_RUN_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE} AND MPI_RUN_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE})
-        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-          "The MPI test ${MPI_TEST_FILE_NAME} for ${LANG} in mode ${MODE} failed to run with the following output:\n${MPI_RUN_OUTPUT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}}\n\n")
-    endif()
-  endif()
-endfunction()
-
-macro(_MPI_check_lang_works LANG SUPPRESS_ERRORS)
-  # For Fortran we may have by the MPI-3 standard an implementation that provides:
-  #   - the mpi_f08 module
-  #   - *both*, the mpi module and 'mpif.h'
-  # Since older MPI standards (MPI-1) did not define anything but 'mpif.h', we need to check all three individually.
-  if( NOT MPI_${LANG}_WORKS )
-    if("${LANG}" STREQUAL "Fortran")
-      set(MPI_Fortran_INTEGER_LINE "(kind=MPI_INTEGER_KIND)")
-      _MPI_try_staged_settings(${LANG} test_mpi F77_HEADER FALSE ${SUPPRESS_ERRORS})
-      _MPI_try_staged_settings(${LANG} test_mpi F90_MODULE FALSE ${SUPPRESS_ERRORS})
-      _MPI_try_staged_settings(${LANG} test_mpi F08_MODULE FALSE ${SUPPRESS_ERRORS})
-
-      set(MPI_${LANG}_WORKS FALSE)
-
-      foreach(mpimethod IN ITEMS F77_HEADER F08_MODULE F90_MODULE)
-        if(MPI_RESULT_${LANG}_test_mpi_${mpimethod})
-          set(MPI_${LANG}_WORKS TRUE)
-          set(MPI_${LANG}_HAVE_${mpimethod} TRUE)
-        else()
-          set(MPI_${LANG}_HAVE_${mpimethod} FALSE)
-        endif()
-      endforeach()
-      # MPI-1 versions had no MPI_INTGER_KIND defined, so we need to try without it.
-      # However, MPI-1 also did not define the Fortran 90 and 08 modules, so we only try the F77 header.
-      unset(MPI_Fortran_INTEGER_LINE)
-      if(NOT MPI_${LANG}_WORKS)
-        _MPI_try_staged_settings(${LANG} test_mpi F77_HEADER_NOKIND FALSE ${SUPPRESS_ERRORS})
-        if(MPI_RESULT_${LANG}_test_mpi_F77_HEADER_NOKIND)
-          set(MPI_${LANG}_WORKS TRUE)
-          set(MPI_${LANG}_HAVE_F77_HEADER TRUE)
-        endif()
-      endif()
-    else()
-      _MPI_try_staged_settings(${LANG} test_mpi normal FALSE ${SUPPRESS_ERRORS})
-      # If 'test_mpi' built correctly, we've found valid MPI settings. There might not be MPI-2 C++ support, but there can't
-      # be MPI-2 C++ support without the C bindings being present, so checking for them is sufficient.
-      set(MPI_${LANG}_WORKS "${MPI_RESULT_${LANG}_test_mpi_normal}")
-    endif()
-  endif()
-endmacro()
-
-# Some systems install various MPI implementations in separate folders in some MPI prefix
-# This macro enumerates all such subfolders and adds them to the list of hints that will be searched.
-macro(MPI_search_mpi_prefix_folder PREFIX_FOLDER)
-  if(EXISTS "${PREFIX_FOLDER}")
-    file(GLOB _MPI_folder_children RELATIVE "${PREFIX_FOLDER}" "${PREFIX_FOLDER}/*")
-    foreach(_MPI_folder_child IN LISTS _MPI_folder_children)
-      if(IS_DIRECTORY "${PREFIX_FOLDER}/${_MPI_folder_child}")
-        list(APPEND MPI_HINT_DIRS "${PREFIX_FOLDER}/${_MPI_folder_child}")
-      endif()
-    endforeach()
-  endif()
-endmacro()
-
-set(MPI_HINT_DIRS ${MPI_HOME} $ENV{MPI_HOME} $ENV{I_MPI_ROOT})
-if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux")
-  # SUSE Linux Enterprise Server stores its MPI implementations under /usr/lib64/mpi/gcc/<name>
-  # We enumerate the subfolders and append each as a prefix
-  MPI_search_mpi_prefix_folder("/usr/lib64/mpi/gcc")
-elseif("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "FreeBSD")
-  # FreeBSD ships mpich under the normal system paths - but available openmpi implementations
-  # will be found in /usr/local/mpi/<name>
-  MPI_search_mpi_prefix_folder("/usr/local/mpi")
-endif()
-
-# Most MPI distributions have some form of mpiexec or mpirun which gives us something we can look for.
-# The MPI standard does not mandate the existence of either, but instead only makes requirements if a distribution
-# ships an mpiexec program (mpirun executables are not regulated by the standard).
-
-# We defer searching for mpiexec binaries belonging to guesses until later. By doing so, mismatches between mpiexec
-# and the MPI we found should be reduced.
-if(NOT MPIEXEC_EXECUTABLE)
-  set(_MPIEXEC_NOT_GIVEN TRUE)
-else()
-  set(_MPIEXEC_NOT_GIVEN FALSE)
-endif()
-
-find_program(MPIEXEC_EXECUTABLE
-  NAMES ${_MPIEXEC_NAMES}
-  PATH_SUFFIXES bin sbin
-  HINTS ${MPI_HINT_DIRS}
-  DOC "Executable for running MPI programs.")
-
-# call get_filename_component twice to remove mpiexec and the directory it exists in (typically bin).
-# This gives us a fairly reliable base directory to search for /bin /lib and /include from.
-get_filename_component(_MPI_BASE_DIR "${MPIEXEC_EXECUTABLE}" PATH)
-get_filename_component(_MPI_BASE_DIR "${_MPI_BASE_DIR}" PATH)
-
-# According to the MPI standard, section 8.8 -n is a guaranteed, and the only guaranteed way to
-# launch an MPI process using mpiexec if such a program exists.
-set(MPIEXEC_NUMPROC_FLAG "-n"  CACHE STRING "Flag used by MPI to specify the number of processes for mpiexec; the next option will be the number of processes.")
-set(MPIEXEC_PREFLAGS     ""    CACHE STRING "These flags will be directly before the executable that is being run by mpiexec.")
-set(MPIEXEC_POSTFLAGS    ""    CACHE STRING "These flags will be placed after all flags passed to mpiexec.")
-
-# Set the number of processes to the physical processor count
-cmake_host_system_information(RESULT _MPIEXEC_NUMPROCS QUERY NUMBER_OF_PHYSICAL_CORES)
-set(MPIEXEC_MAX_NUMPROCS "${_MPIEXEC_NUMPROCS}" CACHE STRING "Maximum number of processors available to run MPI applications.")
-unset(_MPIEXEC_NUMPROCS)
-mark_as_advanced(MPIEXEC_EXECUTABLE MPIEXEC_NUMPROC_FLAG MPIEXEC_PREFLAGS MPIEXEC_POSTFLAGS MPIEXEC_MAX_NUMPROCS)
-
-#=============================================================================
-# Backward compatibility input hacks.  Propagate the FindMPI hints to C and
-# CXX if the respective new versions are not defined.  Translate the old
-# MPI_LIBRARY and MPI_EXTRA_LIBRARY to respective MPI_${LANG}_LIBRARIES.
-#
-# Once we find the new variables, we translate them back into their old
-# equivalents below.
-if(NOT MPI_IGNORE_LEGACY_VARIABLES)
-  foreach (LANG IN ITEMS C CXX)
-    # Old input variables.
-    set(_MPI_OLD_INPUT_VARS COMPILER COMPILE_FLAGS INCLUDE_PATH LINK_FLAGS)
-
-    # Set new vars based on their old equivalents, if the new versions are not already set.
-    foreach (var ${_MPI_OLD_INPUT_VARS})
-      if (NOT MPI_${LANG}_${var} AND MPI_${var})
-        set(MPI_${LANG}_${var} "${MPI_${var}}")
-      endif()
-    endforeach()
-
-    # Chop the old compile flags into options and definitions
-
-    unset(MPI_${LANG}_EXTRA_COMPILE_DEFINITIONS)
-    unset(MPI_${LANG}_EXTRA_COMPILE_OPTIONS)
-    if(MPI_${LANG}_COMPILE_FLAGS)
-      separate_arguments(MPI_SEPARATE_FLAGS NATIVE_COMMAND "${MPI_${LANG}_COMPILE_FLAGS}")
-      foreach(_MPI_FLAG IN LISTS MPI_SEPARATE_FLAGS)
-        if("${_MPI_FLAG}" MATCHES "^ *-D([^ ]+)")
-          list(APPEND MPI_${LANG}_EXTRA_COMPILE_DEFINITIONS "${CMAKE_MATCH_1}")
-        else()
-          list(APPEND MPI_${LANG}_EXTRA_COMPILE_OPTIONS "${_MPI_FLAG}")
-        endif()
-      endforeach()
-      unset(MPI_SEPARATE_FLAGS)
-    endif()
-
-    # If a list of libraries was given, we'll split it into new-style cache variables
-    unset(MPI_${LANG}_EXTRA_LIB_NAMES)
-    if(NOT MPI_${LANG}_LIB_NAMES)
-      foreach(_MPI_LIB IN LISTS MPI_${LANG}_LIBRARIES MPI_LIBRARY MPI_EXTRA_LIBRARY)
-        if(_MPI_LIB)
-          get_filename_component(_MPI_PLAIN_LIB_NAME "${_MPI_LIB}" NAME_WE)
-          get_filename_component(_MPI_LIB_NAME "${_MPI_LIB}" NAME)
-          get_filename_component(_MPI_LIB_DIR "${_MPI_LIB}" DIRECTORY)
-          list(APPEND MPI_${LANG}_EXTRA_LIB_NAMES "${_MPI_PLAIN_LIB_NAME}")
-          find_library(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY
-            NAMES "${_MPI_LIB_NAME}" "lib${_MPI_LIB_NAME}"
-            HINTS ${_MPI_LIB_DIR} $ENV{MPI_LIB}
-            DOC "Location of the ${_MPI_PLAIN_LIB_NAME} library for MPI"
-          )
-          mark_as_advanced(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY)
-        endif()
-      endforeach()
-    endif()
-  endforeach()
-endif()
-#=============================================================================
-
-unset(MPI_VERSION)
-unset(MPI_VERSION_MAJOR)
-unset(MPI_VERSION_MINOR)
-
-unset(_MPI_MIN_VERSION)
-
-# If the user specified a library name we assume they prefer that library over a wrapper. If not, they can disable skipping manually.
-if(NOT DEFINED MPI_SKIP_COMPILER_WRAPPER AND MPI_GUESS_LIBRARY_NAME)
-  set(MPI_SKIP_COMPILER_WRAPPER TRUE)
-endif()
-
-# This loop finds the compilers and sends them off for interrogation.
-foreach(LANG IN ITEMS C CXX Fortran)
-  if(CMAKE_${LANG}_COMPILER_LOADED)
-    if(NOT MPI_FIND_COMPONENTS)
-      set(_MPI_FIND_${LANG} TRUE)
-    elseif( ${LANG} IN_LIST MPI_FIND_COMPONENTS)
-      set(_MPI_FIND_${LANG} TRUE)
-    elseif( ${LANG} STREQUAL CXX AND NOT MPI_CXX_SKIP_MPICXX AND MPICXX IN_LIST MPI_FIND_COMPONENTS )
-      set(_MPI_FIND_${LANG} TRUE)
-    else()
-      set(_MPI_FIND_${LANG} FALSE)
-    endif()
-  else()
-    set(_MPI_FIND_${LANG} FALSE)
-    string(APPEND _MPI_FAIL_REASON "MPI component '${LANG}' was requested, but language ${LANG} is not enabled.  ")
-  endif()
-  if(_MPI_FIND_${LANG})
-    if( ${LANG} STREQUAL CXX AND NOT MPICXX IN_LIST MPI_FIND_COMPONENTS )
-      set(MPI_CXX_SKIP_MPICXX FALSE CACHE BOOL "If true, the MPI-2 C++ bindings are disabled using definitions.")
-      mark_as_advanced(MPI_CXX_SKIP_MPICXX)
-    endif()
-    if(NOT (MPI_${LANG}_LIB_NAMES AND (MPI_${LANG}_INCLUDE_PATH OR MPI_${LANG}_INCLUDE_DIRS OR MPI_${LANG}_COMPILER_INCLUDE_DIRS)))
-      set(MPI_${LANG}_TRIED_IMPLICIT FALSE)
-      set(MPI_${LANG}_WORKS_IMPLICIT FALSE)
-      if(NOT MPI_${LANG}_COMPILER AND NOT MPI_ASSUME_NO_BUILTIN_MPI)
-        # Should the imported targets be empty, we effectively try whether the compiler supports MPI on its own, which is the case on e.g.
-        # Cray PrgEnv.
-        _MPI_create_imported_target(${LANG})
-        _MPI_check_lang_works(${LANG} TRUE)
-
-        # If the compiler can build MPI code on its own, it functions as an MPI compiler and we'll set the variable to point to it.
-        if(MPI_${LANG}_WORKS)
-          set(MPI_${LANG}_COMPILER "${CMAKE_${LANG}_COMPILER}" CACHE FILEPATH "MPI compiler for ${LANG}" FORCE)
-          set(MPI_${LANG}_WORKS_IMPLICIT TRUE)
-        endif()
-        set(MPI_${LANG}_TRIED_IMPLICIT TRUE)
-      endif()
-
-      if(NOT "${MPI_${LANG}_COMPILER}" STREQUAL "${CMAKE_${LANG}_COMPILER}" OR NOT MPI_${LANG}_WORKS)
-        set(MPI_${LANG}_WRAPPER_FOUND FALSE)
-        set(MPI_PINNED_COMPILER FALSE)
-
-        if(NOT MPI_SKIP_COMPILER_WRAPPER)
-          if(MPI_${LANG}_COMPILER)
-            # If the user supplies a compiler *name* instead of an absolute path, assume that we need to find THAT compiler.
-            if (NOT IS_ABSOLUTE "${MPI_${LANG}_COMPILER}")
-              # Get rid of our default list of names and just search for the name the user wants.
-              set(_MPI_${LANG}_COMPILER_NAMES "${MPI_${LANG}_COMPILER}")
-              unset(MPI_${LANG}_COMPILER CACHE)
-            endif()
-            # If the user specifies a compiler, we don't want to try to search libraries either.
-            set(MPI_PINNED_COMPILER TRUE)
-          endif()
-
-          # If we have an MPI base directory, we'll try all compiler names in that one first.
-          # This should prevent mixing different MPI environments
-          if(_MPI_BASE_DIR)
-            find_program(MPI_${LANG}_COMPILER
-              NAMES  ${_MPI_${LANG}_COMPILER_NAMES}
-              PATH_SUFFIXES bin sbin
-              HINTS  ${_MPI_BASE_DIR}
-              NO_DEFAULT_PATH
-              DOC    "MPI compiler for ${LANG}"
-            )
-          endif()
-
-          # If the base directory did not help (for example because the mpiexec isn't in the same directory as the compilers),
-          # we shall try searching in the default paths.
-          find_program(MPI_${LANG}_COMPILER
-            NAMES  ${_MPI_${LANG}_COMPILER_NAMES}
-            PATH_SUFFIXES bin sbin
-            DOC    "MPI compiler for ${LANG}"
-          )
-
-          if("${MPI_${LANG}_COMPILER}" STREQUAL "${CMAKE_${LANG}_COMPILER}")
-            set(MPI_PINNED_COMPILER TRUE)
-
-            # If we haven't made the implicit compiler test yet, perform it now.
-            if(NOT MPI_${LANG}_TRIED_IMPLICIT)
-              _MPI_create_imported_target(${LANG})
-              _MPI_check_lang_works(${LANG} TRUE)
-            endif()
-
-            # Should the MPI compiler not work implicitly for MPI, still interrogate it.
-            # Otherwise, MPI compilers for which CMake has separate linking stages, e.g. Intel MPI on Windows where link.exe is being used
-            # directly during linkage instead of CMAKE_<LANG>_COMPILER will not work.
-            if(NOT MPI_${LANG}_WORKS)
-              set(MPI_${LANG}_WORKS_IMPLICIT FALSE)
-              _MPI_interrogate_compiler(${LANG})
-            else()
-              set(MPI_${LANG}_WORKS_IMPLICIT TRUE)
-            endif()
-          elseif(MPI_${LANG}_COMPILER)
-            _MPI_interrogate_compiler(${LANG})
-          endif()
-        endif()
-
-        if(NOT MPI_PINNED_COMPILER AND NOT MPI_${LANG}_WRAPPER_FOUND)
-          # If MPI_PINNED_COMPILER wasn't given, and the MPI compiler we potentially found didn't work, we withdraw it.
-          set(MPI_${LANG}_COMPILER "MPI_${LANG}_COMPILER-NOTFOUND" CACHE FILEPATH "MPI compiler for ${LANG}" FORCE)
-          if(NOT MPI_SKIP_GUESSING)
-            # For C++, we may use the settings for C. Should a given compiler wrapper for C++ not exist, but one for C does, we copy over the
-            # settings for C. An MPI distribution that is in this situation would be IBM Platform MPI.
-            if("${LANG}" STREQUAL "CXX" AND MPI_C_WRAPPER_FOUND)
-              set(MPI_${LANG}_COMPILE_OPTIONS          ${MPI_C_COMPILE_OPTIONS}     CACHE STRING "MPI ${LANG} compilation options"           )
-              set(MPI_${LANG}_COMPILE_DEFINITIONS      ${MPI_C_COMPILE_DEFINITIONS} CACHE STRING "MPI ${LANG} compilation definitions"       )
-              set(MPI_${LANG}_COMPILER_INCLUDE_DIRS    ${MPI_C_INCLUDE_DIRS}        CACHE STRING "MPI ${LANG} compiler wrapper include directories")
-              set(MPI_${LANG}_LINK_FLAGS               ${MPI_C_LINK_FLAGS}          CACHE STRING "MPI ${LANG} linker flags"                  )
-              set(MPI_${LANG}_LIB_NAMES                ${MPI_C_LIB_NAMES}           CACHE STRING "MPI ${LANG} libraries to link against"     )
-            else()
-              _MPI_guess_settings(${LANG})
-            endif()
-          endif()
-        endif()
-      endif()
-    endif()
-
-    if(NOT "${MPI_${LANG}_COMPILER}" STREQUAL "${CMAKE_${LANG}_COMPILER}")
-      _MPI_split_include_dirs(${LANG})
-      _MPI_assemble_include_dirs(${LANG})
-    else()
-      set(MPI_${LANG}_INCLUDE_DIRS "")
-    endif()
-    _MPI_assemble_libraries(${LANG})
-
-    _MPI_adjust_compile_definitions(${LANG})
-    # We always create imported targets even if they're empty
-    _MPI_create_imported_target(${LANG})
-
-    if(NOT MPI_${LANG}_WORKS)
-      _MPI_check_lang_works(${LANG} FALSE)
-    endif()
-
-    # Next, we'll initialize the MPI variables that have not been previously set.
-    set(MPI_${LANG}_COMPILE_OPTIONS          "" CACHE STRING "MPI ${LANG} compilation flags"             )
-    set(MPI_${LANG}_COMPILE_DEFINITIONS      "" CACHE STRING "MPI ${LANG} compilation definitions"       )
-    set(MPI_${LANG}_COMPILER_INCLUDE_DIRS    "" CACHE STRING "MPI ${LANG} compiler wrapper include directories")
-    set(MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS  "" CACHE STRING "MPI ${LANG} additional include directories")
-    set(MPI_${LANG}_LINK_FLAGS               "" CACHE STRING "MPI ${LANG} linker flags"                  )
-    if(NOT MPI_${LANG}_COMPILER STREQUAL CMAKE_${LANG}_COMPILER)
-      set(MPI_${LANG}_LIB_NAMES                "" CACHE STRING "MPI ${LANG} libraries to link against"   )
-    endif()
-    mark_as_advanced(
-      MPI_${LANG}_COMPILE_OPTIONS
-      MPI_${LANG}_COMPILE_DEFINITIONS
-      MPI_${LANG}_LINK_FLAGS
-      MPI_${LANG}_LIB_NAMES
-      MPI_${LANG}_COMPILER_INCLUDE_DIRS
-      MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS
-      MPI_${LANG}_COMPILER
-      )
-
-    # If we've found MPI, then we'll perform additional analysis: Determine the MPI version, MPI library version, supported
-    # MPI APIs (i.e. MPI-2 C++ bindings). For Fortran we also need to find specific parameters if we're under MPI-3.
-    if(MPI_${LANG}_WORKS)
-      if("${LANG}" STREQUAL "CXX" AND NOT DEFINED MPI_MPICXX_FOUND)
-        if(NOT MPI_CXX_SKIP_MPICXX AND NOT MPI_CXX_VALIDATE_SKIP_MPICXX)
-          _MPI_try_staged_settings(${LANG} test_mpi MPICXX FALSE FALSE)
-          if(MPI_RESULT_${LANG}_test_mpi_MPICXX)
-            set(MPI_MPICXX_FOUND TRUE)
-          else()
-            set(MPI_MPICXX_FOUND FALSE)
-          endif()
-        else()
-          set(MPI_MPICXX_FOUND FALSE)
-        endif()
-      endif()
-
-      # At this point, we know the bindings present but not the MPI version or anything else.
-      if(NOT DEFINED MPI_${LANG}_VERSION)
-        unset(MPI_${LANG}_VERSION_MAJOR)
-        unset(MPI_${LANG}_VERSION_MINOR)
-      endif()
-      set(MPI_BIN_FOLDER ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindMPI)
-
-      # For Fortran, we'll want to use the most modern MPI binding to test capabilities other than the
-      # Fortran parameters, since those depend on the method of consumption.
-      # For C++, we can always use the C bindings, and should do so, since the C++ bindings do not exist in MPI-3
-      # whereas the C bindings do, and the C++ bindings never offered any feature advantage over their C counterparts.
-      if("${LANG}" STREQUAL "Fortran")
-        if(MPI_${LANG}_HAVE_F08_MODULE)
-          set(MPI_${LANG}_HIGHEST_METHOD F08_MODULE)
-        elseif(MPI_${LANG}_HAVE_F90_MODULE)
-          set(MPI_${LANG}_HIGHEST_METHOD F90_MODULE)
-        else()
-          set(MPI_${LANG}_HIGHEST_METHOD F77_HEADER)
-        endif()
-
-        # Another difference between C and Fortran is that we can't use the preprocessor to determine whether MPI_VERSION
-        # and MPI_SUBVERSION are provided. These defines did not exist in MPI 1.0 and 1.1 and therefore might not
-        # exist. For C/C++, test_mpi.c will handle the MPI_VERSION extraction, but for Fortran, we need mpiver.f90.
-        if(NOT DEFINED MPI_${LANG}_VERSION)
-          _MPI_try_staged_settings(${LANG} mpiver ${MPI_${LANG}_HIGHEST_METHOD} FALSE FALSE)
-          if(MPI_RESULT_${LANG}_mpiver_${MPI_${LANG}_HIGHEST_METHOD})
-            file(STRINGS ${MPI_BIN_FOLDER}/mpiver_${LANG}.bin _MPI_VERSION_STRING LIMIT_COUNT 1 REGEX "INFO:MPI-VER")
-            if("${_MPI_VERSION_STRING}" MATCHES ".*INFO:MPI-VER\\[([0-9]+)\\.([0-9]+)\\].*")
-              set(MPI_${LANG}_VERSION_MAJOR "${CMAKE_MATCH_1}")
-              set(MPI_${LANG}_VERSION_MINOR "${CMAKE_MATCH_2}")
-              set(MPI_${LANG}_VERSION "${MPI_${LANG}_VERSION_MAJOR}.${MPI_${LANG}_VERSION_MINOR}")
-            endif()
-          endif()
-        endif()
-
-        # Finally, we want to find out which capabilities a given interface supports, compare the MPI-3 standard.
-        # This is determined by interface specific parameters MPI_SUBARRAYS_SUPPORTED and MPI_ASYNC_PROTECTS_NONBLOCKING
-        # and might vary between the different methods of consumption.
-        if(MPI_DETERMINE_Fortran_CAPABILITIES AND NOT MPI_Fortran_CAPABILITIES_DETERMINED)
-          foreach(mpimethod IN ITEMS F08_MODULE F90_MODULE F77_HEADER)
-            if(MPI_${LANG}_HAVE_${mpimethod})
-              set(MPI_${LANG}_${mpimethod}_SUBARRAYS FALSE)
-              set(MPI_${LANG}_${mpimethod}_ASYNCPROT FALSE)
-              _MPI_try_staged_settings(${LANG} fortranparam_mpi ${mpimethod} TRUE FALSE)
-              if(MPI_RESULT_${LANG}_fortranparam_mpi_${mpimethod} AND
-                NOT "${MPI_RUN_RESULT_${LANG}_fortranparam_mpi_${mpimethod}}" STREQUAL "FAILED_TO_RUN")
-                if("${MPI_RUN_OUTPUT_${LANG}_fortranparam_mpi_${mpimethod}}" MATCHES
-                  ".*INFO:SUBARRAYS\\[ *([TF]) *\\]-ASYNCPROT\\[ *([TF]) *\\].*")
-                  if("${CMAKE_MATCH_1}" STREQUAL "T")
-                    set(MPI_${LANG}_${mpimethod}_SUBARRAYS TRUE)
-                  endif()
-                  if("${CMAKE_MATCH_2}" STREQUAL "T")
-                    set(MPI_${LANG}_${mpimethod}_ASYNCPROT TRUE)
-                  endif()
-                endif()
-              endif()
-            endif()
-          endforeach()
-          set(MPI_Fortran_CAPABILITIES_DETERMINED TRUE)
-        endif()
-      else()
-        set(MPI_${LANG}_HIGHEST_METHOD normal)
-
-        # By the MPI-2 standard, MPI_VERSION and MPI_SUBVERSION are valid for both C and C++ bindings.
-        if(NOT DEFINED MPI_${LANG}_VERSION)
-          file(STRINGS ${MPI_BIN_FOLDER}/test_mpi_${LANG}.bin _MPI_VERSION_STRING LIMIT_COUNT 1 REGEX "INFO:MPI-VER")
-          if("${_MPI_VERSION_STRING}" MATCHES ".*INFO:MPI-VER\\[([0-9]+)\\.([0-9]+)\\].*")
-            set(MPI_${LANG}_VERSION_MAJOR "${CMAKE_MATCH_1}")
-            set(MPI_${LANG}_VERSION_MINOR "${CMAKE_MATCH_2}")
-            set(MPI_${LANG}_VERSION "${MPI_${LANG}_VERSION_MAJOR}.${MPI_${LANG}_VERSION_MINOR}")
-          endif()
-        endif()
-      endif()
-
-      unset(MPI_BIN_FOLDER)
-
-      # At this point, we have dealt with determining the MPI version and parameters for each Fortran method available.
-      # The one remaining issue is to determine which MPI library is installed.
-      # Determining the version and vendor of the MPI library is only possible via MPI_Get_library_version() at runtime,
-      # and therefore we cannot do this while cross-compiling (a user may still define MPI_<lang>_LIBRARY_VERSION_STRING
-      # themselves and we'll attempt splitting it, which is equivalent to provide the try_run output).
-      # It's also worth noting that the installed version string can depend on the language, or on the system the binary
-      # runs on if MPI is not statically linked.
-      if(MPI_DETERMINE_LIBRARY_VERSION AND NOT MPI_${LANG}_LIBRARY_VERSION_STRING)
-        _MPI_try_staged_settings(${LANG} libver_mpi ${MPI_${LANG}_HIGHEST_METHOD} TRUE FALSE)
-        if(MPI_RESULT_${LANG}_libver_mpi_${MPI_${LANG}_HIGHEST_METHOD} AND
-          "${MPI_RUN_RESULT_${LANG}_libver_mpi_${MPI_${LANG}_HIGHEST_METHOD}}" EQUAL "0")
-          string(STRIP "${MPI_RUN_OUTPUT_${LANG}_libver_mpi_${MPI_${LANG}_HIGHEST_METHOD}}"
-            MPI_${LANG}_LIBRARY_VERSION_STRING)
-        else()
-          set(MPI_${LANG}_LIBRARY_VERSION_STRING "NOTFOUND")
-        endif()
-      endif()
-    endif()
-
-    set(MPI_${LANG}_FIND_QUIETLY ${MPI_FIND_QUIETLY})
-    set(MPI_${LANG}_FIND_VERSION ${MPI_FIND_VERSION})
-    set(MPI_${LANG}_FIND_VERSION_EXACT ${MPI_FIND_VERSION_EXACT})
-
-    unset(MPI_${LANG}_REQUIRED_VARS)
-    if (NOT "${MPI_${LANG}_COMPILER}" STREQUAL "${CMAKE_${LANG}_COMPILER}")
-      foreach(mpilibname IN LISTS MPI_${LANG}_LIB_NAMES)
-        list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${mpilibname}_LIBRARY")
-      endforeach()
-      list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${LANG}_LIB_NAMES")
-      if("${LANG}" STREQUAL "Fortran")
-        # For Fortran we only need one of the module or header directories to have *some* support for MPI.
-        if(NOT MPI_${LANG}_MODULE_DIR)
-          list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${LANG}_F77_HEADER_DIR")
-        endif()
-        if(NOT MPI_${LANG}_F77_HEADER_DIR)
-          list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${LANG}_MODULE_DIR")
-        endif()
-      else()
-        list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${LANG}_HEADER_DIR")
-      endif()
-      if(MPI_${LANG}_ADDITIONAL_INCLUDE_VARS)
-        foreach(mpiincvar IN LISTS MPI_${LANG}_ADDITIONAL_INCLUDE_VARS)
-          list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${mpiincvar}_INCLUDE_DIR")
-        endforeach()
-      endif()
-      # Append the works variable now. If the settings did not work, this will show up properly.
-      list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${LANG}_WORKS")
-    else()
-      # If the compiler worked implicitly, use its path as output.
-      # Should the compiler variable be set, we also require it to work.
-      list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${LANG}_COMPILER")
-      if(MPI_${LANG}_COMPILER)
-        list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${LANG}_WORKS")
-      endif()
-    endif()
-    find_package_handle_standard_args(MPI_${LANG} NAME_MISMATCHED
-      REQUIRED_VARS ${MPI_${LANG}_REQUIRED_VARS}
-      VERSION_VAR MPI_${LANG}_VERSION)
-
-    if(DEFINED MPI_${LANG}_VERSION)
-      if(NOT _MPI_MIN_VERSION OR _MPI_MIN_VERSION VERSION_GREATER MPI_${LANG}_VERSION)
-        set(_MPI_MIN_VERSION MPI_${LANG}_VERSION)
-      endif()
-    endif()
-  endif()
-endforeach()
-
-unset(_MPI_REQ_VARS)
-foreach(LANG IN ITEMS C CXX Fortran)
-  if((NOT MPI_FIND_COMPONENTS AND CMAKE_${LANG}_COMPILER_LOADED) OR LANG IN_LIST MPI_FIND_COMPONENTS)
-    list(APPEND _MPI_REQ_VARS "MPI_${LANG}_FOUND")
-  endif()
-endforeach()
-
-if(MPICXX IN_LIST MPI_FIND_COMPONENTS)
-  list(APPEND _MPI_REQ_VARS "MPI_MPICXX_FOUND")
-endif()
-
-find_package_handle_standard_args(MPI
-    REQUIRED_VARS ${_MPI_REQ_VARS}
-    VERSION_VAR ${_MPI_MIN_VERSION}
-    REASON_FAILURE_MESSAGE "${_MPI_FAIL_REASON}"
-    HANDLE_COMPONENTS)
-
-#=============================================================================
-# More backward compatibility stuff
-
-# For compatibility reasons, we also define MPIEXEC
-set(MPIEXEC "${MPIEXEC_EXECUTABLE}")
-
-# Copy over MPI_<LANG>_INCLUDE_PATH from the assembled INCLUDE_DIRS.
-foreach(LANG IN ITEMS C CXX Fortran)
-  if(MPI_${LANG}_FOUND)
-    set(MPI_${LANG}_INCLUDE_PATH "${MPI_${LANG}_INCLUDE_DIRS}")
-    unset(MPI_${LANG}_COMPILE_FLAGS)
-    if(MPI_${LANG}_COMPILE_OPTIONS)
-      list(JOIN MPI_${LANG}_COMPILE_OPTIONS " " MPI_${LANG}_COMPILE_FLAGS)
-    endif()
-    if(MPI_${LANG}_COMPILE_DEFINITIONS)
-      foreach(_MPI_DEF IN LISTS MPI_${LANG}_COMPILE_DEFINITIONS)
-        string(APPEND MPI_${LANG}_COMPILE_FLAGS " -D${_MPI_DEF}")
-      endforeach()
-    endif()
-  endif()
-endforeach()
-
-# Bare MPI sans ${LANG} vars are set to CXX then C, depending on what was found.
-# This mimics the behavior of the old language-oblivious FindMPI.
-set(_MPI_OLD_VARS COMPILER INCLUDE_PATH COMPILE_FLAGS LINK_FLAGS LIBRARIES)
-if (MPI_CXX_FOUND)
-  foreach (var ${_MPI_OLD_VARS})
-    set(MPI_${var} ${MPI_CXX_${var}})
-  endforeach()
-elseif (MPI_C_FOUND)
-  foreach (var ${_MPI_OLD_VARS})
-    set(MPI_${var} ${MPI_C_${var}})
-  endforeach()
-endif()
-
-# Chop MPI_LIBRARIES into the old-style MPI_LIBRARY and MPI_EXTRA_LIBRARY, and set them in cache.
-if (MPI_LIBRARIES)
-  list(GET MPI_LIBRARIES 0 MPI_LIBRARY_WORK)
-  set(MPI_LIBRARY "${MPI_LIBRARY_WORK}")
-  unset(MPI_LIBRARY_WORK)
-else()
-  set(MPI_LIBRARY "MPI_LIBRARY-NOTFOUND")
-endif()
-
-list(LENGTH MPI_LIBRARIES MPI_NUMLIBS)
-if (MPI_NUMLIBS GREATER 1)
-  set(MPI_EXTRA_LIBRARY_WORK "${MPI_LIBRARIES}")
-  list(REMOVE_AT MPI_EXTRA_LIBRARY_WORK 0)
-  set(MPI_EXTRA_LIBRARY "${MPI_EXTRA_LIBRARY_WORK}")
-  unset(MPI_EXTRA_LIBRARY_WORK)
-else()
-  set(MPI_EXTRA_LIBRARY "MPI_EXTRA_LIBRARY-NOTFOUND")
-endif()
-set(MPI_IGNORE_LEGACY_VARIABLES TRUE)
-#=============================================================================
-
-# unset these vars to cleanup namespace
-unset(_MPI_OLD_VARS)
-unset(_MPI_PREFIX_PATH)
-unset(_MPI_BASE_DIR)
-foreach (lang C CXX Fortran)
-  unset(_MPI_${LANG}_COMPILER_NAMES)
-endforeach()
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FindMPI/test_mpi.c b/share/cmake-3.18/Modules/FindMPI/test_mpi.c
deleted file mode 100644
index 7c96d54..0000000
--- a/share/cmake-3.18/Modules/FindMPI/test_mpi.c
+++ /dev/null
@@ -1,38 +0,0 @@
-#include <mpi.h>
-
-#ifdef __cplusplus
-#  include <cstdio>
-#else
-#  include <stdio.h>
-#endif
-
-#if defined(MPI_VERSION) && defined(MPI_SUBVERSION)
-const char mpiver_str[] = { 'I', 'N',
-                            'F', 'O',
-                            ':', 'M',
-                            'P', 'I',
-                            '-', 'V',
-                            'E', 'R',
-                            '[', ('0' + MPI_VERSION),
-                            '.', ('0' + MPI_SUBVERSION),
-                            ']', '\0' };
-#endif
-
-int main(int argc, char* argv[])
-{
-#if defined(MPI_VERSION) && defined(MPI_SUBVERSION)
-#  ifdef __cplusplus
-  std::puts(mpiver_str);
-#  else
-  puts(mpiver_str);
-#  endif
-#endif
-#ifdef TEST_MPI_MPICXX
-  MPI::MPI_Init(&argc, &argv);
-  MPI::MPI_Finalize();
-#else
-  MPI_Init(&argc, &argv);
-  MPI_Finalize();
-#endif
-  return 0;
-}
diff --git a/share/cmake-3.18/Modules/FindMatlab.cmake b/share/cmake-3.18/Modules/FindMatlab.cmake
deleted file mode 100644
index e42c206..0000000
--- a/share/cmake-3.18/Modules/FindMatlab.cmake
+++ /dev/null
@@ -1,1834 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindMatlab
-----------
-
-Finds Matlab or Matlab Compiler Runtime (MCR) and provides Matlab tools,
-libraries and compilers to CMake.
-
-This package primary purpose is to find the libraries associated with Matlab
-or the MCR in order to be able to build Matlab extensions (mex files). It
-can also be used:
-
-* to run specific commands in Matlab in case Matlab is available
-* for declaring Matlab unit test
-* to retrieve various information from Matlab (mex extensions, versions and
-  release queries, ...)
-
-The module supports the following components:
-
-* ``ENG_LIBRARY`` and ``MAT_LIBRARY``: respectively the ``ENG`` and ``MAT``
-  libraries of Matlab
-* ``MAIN_PROGRAM`` the Matlab binary program. Note that this component is not
-  available on the MCR version, and will yield an error if the MCR is found
-  instead of the regular Matlab installation.
-* ``MEX_COMPILER`` the MEX compiler.
-* ``MCC_COMPILER`` the MCC compiler, included with the Matlab Compiler add-on.
-* ``SIMULINK`` the Simulink environment.
-
-.. note::
-
-  The version given to the :command:`find_package` directive is the Matlab
-  **version**, which should not be confused with the Matlab *release* name
-  (eg. `R2014`).
-  The :command:`matlab_get_version_from_release_name` and
-  :command:`matlab_get_release_name_from_version` provide a mapping
-  between the release name and the version.
-
-The variable :variable:`Matlab_ROOT_DIR` may be specified in order to give
-the path of the desired Matlab version. Otherwise, the behaviour is platform
-specific:
-
-* Windows: The installed versions of Matlab/MCR are retrieved from the
-  Windows registry
-* OS X: The installed versions of Matlab/MCR are given by the MATLAB
-  default installation paths in ``/Application``. If no such application is
-  found, it falls back to the one that might be accessible from the ``PATH``.
-* Unix: The desired Matlab should be accessible from the ``PATH``. This does
-  not work for MCR installation and :variable:`Matlab_ROOT_DIR` should be
-  specified on this platform.
-
-Additional information is provided when :variable:`MATLAB_FIND_DEBUG` is set.
-When a Matlab/MCR installation is found automatically and the ``MATLAB_VERSION``
-is not given, the version is queried from Matlab directly (on Windows this
-may pop up a Matlab window) or from the MCR installation.
-
-The mapping of the release names and the version of Matlab is performed by
-defining pairs (name, version).  The variable
-:variable:`MATLAB_ADDITIONAL_VERSIONS` may be provided before the call to
-the :command:`find_package` in order to handle additional versions.
-
-A Matlab scripts can be added to the set of tests using the
-:command:`matlab_add_unit_test`. By default, the Matlab unit test framework
-will be used (>= 2013a) to run this script, but regular ``.m`` files
-returning an exit code can be used as well (0 indicating a success).
-
-Module Input Variables
-^^^^^^^^^^^^^^^^^^^^^^
-
-Users or projects may set the following variables to configure the module
-behaviour:
-
-:variable:`Matlab_ROOT_DIR`
-  the root of the Matlab installation.
-:variable:`MATLAB_FIND_DEBUG`
-  outputs debug information
-:variable:`MATLAB_ADDITIONAL_VERSIONS`
-  additional versions of Matlab for the automatic retrieval of the installed
-  versions.
-
-Variables defined by the module
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Result variables
-""""""""""""""""
-
-``Matlab_FOUND``
-  ``TRUE`` if the Matlab installation is found, ``FALSE``
-  otherwise. All variable below are defined if Matlab is found.
-``Matlab_ROOT_DIR``
-  the final root of the Matlab installation determined by the FindMatlab
-  module.
-``Matlab_MAIN_PROGRAM``
-  the Matlab binary program. Available only if the component ``MAIN_PROGRAM``
-  is given in the :command:`find_package` directive.
-``Matlab_INCLUDE_DIRS``
- the path of the Matlab libraries headers
-``Matlab_MEX_LIBRARY``
-  library for mex, always available.
-``Matlab_MX_LIBRARY``
-  mx library of Matlab (arrays), always available.
-``Matlab_ENG_LIBRARY``
-  Matlab engine library. Available only if the component ``ENG_LIBRARY``
-  is requested.
-``Matlab_MAT_LIBRARY``
-  Matlab matrix library. Available only if the component ``MAT_LIBRARY``
-  is requested.
-``Matlab_ENGINE_LIBRARY``
-  Matlab C++ engine library, always available for R2018a and newer.
-``Matlab_DATAARRAY_LIBRARY``
-  Matlab C++ data array library, always available for R2018a and newer.
-``Matlab_LIBRARIES``
-  the whole set of libraries of Matlab
-``Matlab_MEX_COMPILER``
-  the mex compiler of Matlab. Currently not used.
-  Available only if the component ``MEX_COMPILER`` is requested.
-``Matlab_MCC_COMPILER``
-  the mcc compiler of Matlab. Included with the Matlab Compiler add-on.
-  Available only if the component ``MCC_COMPILER`` is requested.
-
-Cached variables
-""""""""""""""""
-
-``Matlab_MEX_EXTENSION``
-  the extension of the mex files for the current platform (given by Matlab).
-``Matlab_ROOT_DIR``
-  the location of the root of the Matlab installation found. If this value
-  is changed by the user, the result variables are recomputed.
-
-Provided macros
-^^^^^^^^^^^^^^^
-
-:command:`matlab_get_version_from_release_name`
-  returns the version from the release name
-:command:`matlab_get_release_name_from_version`
-  returns the release name from the Matlab version
-
-Provided functions
-^^^^^^^^^^^^^^^^^^
-
-:command:`matlab_add_mex`
-  adds a target compiling a MEX file.
-:command:`matlab_add_unit_test`
-  adds a Matlab unit test file as a test to the project.
-:command:`matlab_extract_all_installed_versions_from_registry`
-  parses the registry for all Matlab versions. Available on Windows only.
-  The part of the registry parsed is dependent on the host processor
-:command:`matlab_get_all_valid_matlab_roots_from_registry`
-  returns all the possible Matlab or MCR paths, according to a previously
-  given list. Only the existing/accessible paths are kept. This is mainly
-  useful for the searching all possible Matlab installation.
-:command:`matlab_get_mex_suffix`
-  returns the suffix to be used for the mex files
-  (platform/architecture dependent)
-:command:`matlab_get_version_from_matlab_run`
-  returns the version of Matlab/MCR, given the full directory of the Matlab/MCR
-  installation path.
-
-
-Known issues
-^^^^^^^^^^^^
-
-**Symbol clash in a MEX target**
-  By default, every symbols inside a MEX
-  file defined with the command :command:`matlab_add_mex` have hidden
-  visibility, except for the entry point. This is the default behaviour of
-  the MEX compiler, which lowers the risk of symbol collision between the
-  libraries shipped with Matlab, and the libraries to which the MEX file is
-  linking to. This is also the default on Windows platforms.
-
-  However, this is not sufficient in certain case, where for instance your
-  MEX file is linking against libraries that are already loaded by Matlab,
-  even if those libraries have different SONAMES.
-  A possible solution is to hide the symbols of the libraries to which the
-  MEX target is linking to. This can be achieved in GNU GCC compilers with
-  the linker option ``-Wl,--exclude-libs,ALL``.
-
-**Tests using GPU resources**
-  in case your MEX file is using the GPU and
-  in order to be able to run unit tests on this MEX file, the GPU resources
-  should be properly released by Matlab. A possible solution is to make
-  Matlab aware of the use of the GPU resources in the session, which can be
-  performed by a command such as ``D = gpuDevice()`` at the beginning of
-  the test script (or via a fixture).
-
-
-Reference
-^^^^^^^^^
-
-.. variable:: Matlab_ROOT_DIR
-
-   The root folder of the Matlab installation. If set before the call to
-   :command:`find_package`, the module will look for the components in that
-   path. If not set, then an automatic search of Matlab
-   will be performed. If set, it should point to a valid version of Matlab.
-
-.. variable:: MATLAB_FIND_DEBUG
-
-   If set, the lookup of Matlab and the intermediate configuration steps are
-   outputted to the console.
-
-.. variable:: MATLAB_ADDITIONAL_VERSIONS
-
-  If set, specifies additional versions of Matlab that may be looked for.
-  The variable should be a list of strings, organised by pairs of release
-  name and versions, such as follows::
-
-    set(MATLAB_ADDITIONAL_VERSIONS
-        "release_name1=corresponding_version1"
-        "release_name2=corresponding_version2"
-        ...
-        )
-
-  Example::
-
-    set(MATLAB_ADDITIONAL_VERSIONS
-        "R2013b=8.2"
-        "R2013a=8.1"
-        "R2012b=8.0")
-
-  The order of entries in this list matters when several versions of
-  Matlab are installed. The priority is set according to the ordering in
-  this list.
-#]=======================================================================]
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0057 NEW) # if IN_LIST
-
-set(_FindMatlab_SELF_DIR "${CMAKE_CURRENT_LIST_DIR}")
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-include(CheckCXXCompilerFlag)
-include(CheckCCompilerFlag)
-
-
-# The currently supported versions. Other version can be added by the user by
-# providing MATLAB_ADDITIONAL_VERSIONS
-if(NOT MATLAB_ADDITIONAL_VERSIONS)
-  set(MATLAB_ADDITIONAL_VERSIONS)
-endif()
-
-set(MATLAB_VERSIONS_MAPPING
-  "R2020a=9.8"
-  "R2019b=9.7"
-  "R2019a=9.6"
-  "R2018b=9.5"
-  "R2018a=9.4"
-  "R2017b=9.3"
-  "R2017a=9.2"
-  "R2016b=9.1"
-  "R2016a=9.0"
-  "R2015b=8.6"
-  "R2015a=8.5"
-  "R2014b=8.4"
-  "R2014a=8.3"
-  "R2013b=8.2"
-  "R2013a=8.1"
-  "R2012b=8.0"
-  "R2012a=7.14"
-  "R2011b=7.13"
-  "R2011a=7.12"
-  "R2010b=7.11"
-
-  ${MATLAB_ADDITIONAL_VERSIONS}
-  )
-
-
-# temporary folder for all Matlab runs
-set(_matlab_temporary_folder ${CMAKE_BINARY_DIR}/Matlab)
-
-if(NOT EXISTS "${_matlab_temporary_folder}")
-  file(MAKE_DIRECTORY "${_matlab_temporary_folder}")
-endif()
-
-#[=======================================================================[.rst:
-.. command:: matlab_get_version_from_release_name
-
-  Returns the version of Matlab (17.58) from a release name (R2017k)
-#]=======================================================================]
-macro(matlab_get_version_from_release_name release_name version_name)
-
-  string(REGEX MATCHALL "${release_name}=([0-9]+\\.?[0-9]*)" _matched ${MATLAB_VERSIONS_MAPPING})
-
-  set(${version_name} "")
-  if(NOT _matched STREQUAL "")
-    set(${version_name} ${CMAKE_MATCH_1})
-  else()
-    message(WARNING "[MATLAB] The release name ${release_name} is not registered")
-  endif()
-  unset(_matched)
-
-endmacro()
-
-
-
-
-
-#[=======================================================================[.rst:
-.. command:: matlab_get_release_name_from_version
-
-  Returns the release name (R2017k) from the version of Matlab (17.58)
-#]=======================================================================]
-macro(matlab_get_release_name_from_version version release_name)
-
-  set(${release_name} "")
-  foreach(_var IN LISTS MATLAB_VERSIONS_MAPPING)
-    string(REGEX MATCHALL "(.+)=${version}" _matched ${_var})
-    if(NOT _matched STREQUAL "")
-      set(${release_name} ${CMAKE_MATCH_1})
-      break()
-    endif()
-  endforeach(_var)
-
-  unset(_var)
-  unset(_matched)
-  if(${release_name} STREQUAL "")
-    message(WARNING "[MATLAB] The version ${version} is not registered")
-  endif()
-
-endmacro()
-
-
-
-
-
-# extracts all the supported release names (R2017k...) of Matlab
-# internal use
-macro(matlab_get_supported_releases list_releases)
-  set(${list_releases})
-  foreach(_var IN LISTS MATLAB_VERSIONS_MAPPING)
-    string(REGEX MATCHALL "(.+)=([0-9]+\\.?[0-9]*)" _matched ${_var})
-    if(NOT _matched STREQUAL "")
-      list(APPEND ${list_releases} ${CMAKE_MATCH_1})
-    endif()
-    unset(_matched)
-    unset(CMAKE_MATCH_1)
-  endforeach(_var)
-  unset(_var)
-endmacro()
-
-
-
-# extracts all the supported versions of Matlab
-# internal use
-macro(matlab_get_supported_versions list_versions)
-  set(${list_versions})
-  foreach(_var IN LISTS MATLAB_VERSIONS_MAPPING)
-    string(REGEX MATCHALL "(.+)=([0-9]+\\.?[0-9]*)" _matched ${_var})
-    if(NOT _matched STREQUAL "")
-      list(APPEND ${list_versions} ${CMAKE_MATCH_2})
-    endif()
-    unset(_matched)
-    unset(CMAKE_MATCH_1)
-  endforeach(_var)
-  unset(_var)
-endmacro()
-
-
-#[=======================================================================[.rst:
-.. command:: matlab_extract_all_installed_versions_from_registry
-
-  This function parses the registry and founds the Matlab versions that are
-  installed. The found versions are returned in `matlab_versions`.
-  Set `win64` to `TRUE` if the 64 bit version of Matlab should be looked for
-  The returned list contains all versions under
-  ``HKLM\\SOFTWARE\\Mathworks\\MATLAB`` and
-  ``HKLM\\SOFTWARE\\Mathworks\\MATLAB Runtime`` or an empty list in case an
-  error occurred (or nothing found).
-
-  .. note::
-
-    Only the versions are provided. No check is made over the existence of the
-    installation referenced in the registry,
-
-#]=======================================================================]
-function(matlab_extract_all_installed_versions_from_registry win64 matlab_versions)
-
-  if(NOT CMAKE_HOST_WIN32)
-    message(FATAL_ERROR "[MATLAB] This macro can only be called by a windows host (call to reg.exe)")
-  endif()
-
-  if(${win64} AND CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "64")
-    set(APPEND_REG "/reg:64")
-  else()
-    set(APPEND_REG "/reg:32")
-  endif()
-
-  set(matlabs_from_registry)
-
-  foreach(_installation_type IN ITEMS "MATLAB" "MATLAB Runtime")
-
-    # /reg:64 should be added on 64 bits capable OSs in order to enable the
-    # redirection of 64 bits applications
-    execute_process(
-      COMMAND reg query HKEY_LOCAL_MACHINE\\SOFTWARE\\Mathworks\\${_installation_type} /f * /k ${APPEND_REG}
-      RESULT_VARIABLE resultMatlab
-      OUTPUT_VARIABLE varMatlab
-      ERROR_VARIABLE errMatlab
-      INPUT_FILE NUL
-      )
-
-
-    if(resultMatlab EQUAL 0)
-
-      string(
-        REGEX MATCHALL "MATLAB\\\\([0-9]+(\\.[0-9]+)?)"
-        matlab_versions_regex ${varMatlab})
-
-      foreach(match IN LISTS matlab_versions_regex)
-        string(
-          REGEX MATCH "MATLAB\\\\(([0-9]+)(\\.([0-9]+))?)"
-          current_match ${match})
-
-        set(_matlab_current_version ${CMAKE_MATCH_1})
-        set(current_matlab_version_major ${CMAKE_MATCH_2})
-        set(current_matlab_version_minor ${CMAKE_MATCH_4})
-        if(NOT current_matlab_version_minor)
-          set(current_matlab_version_minor "0")
-        endif()
-
-        list(APPEND matlabs_from_registry ${_matlab_current_version})
-        unset(_matlab_current_version)
-      endforeach()
-
-    endif()
-  endforeach()
-
-  if(matlabs_from_registry)
-    list(REMOVE_DUPLICATES matlabs_from_registry)
-    list(SORT matlabs_from_registry)
-    list(REVERSE matlabs_from_registry)
-  endif()
-
-  set(${matlab_versions} ${matlabs_from_registry} PARENT_SCOPE)
-
-endfunction()
-
-
-
-# (internal)
-macro(extract_matlab_versions_from_registry_brute_force matlab_versions)
-  # get the supported versions
-  set(matlab_supported_versions)
-  matlab_get_supported_versions(matlab_supported_versions)
-
-
-  # this is a manual population of the versions we want to look for
-  # this can be done as is, but preferably with the call to
-  # matlab_get_supported_versions and variable
-
-  # populating the versions we want to look for
-  # set(matlab_supported_versions)
-
-  # # Matlab 7
-  # set(matlab_major 7)
-  # foreach(current_matlab_minor RANGE 4 20)
-    # list(APPEND matlab_supported_versions "${matlab_major}.${current_matlab_minor}")
-  # endforeach(current_matlab_minor)
-
-  # # Matlab 8
-  # set(matlab_major 8)
-  # foreach(current_matlab_minor RANGE 0 5)
-    # list(APPEND matlab_supported_versions "${matlab_major}.${current_matlab_minor}")
-  # endforeach(current_matlab_minor)
-
-  # # taking into account the possible additional versions provided by the user
-  # if(DEFINED MATLAB_ADDITIONAL_VERSIONS)
-    # list(APPEND matlab_supported_versions MATLAB_ADDITIONAL_VERSIONS)
-  # endif()
-
-  # we order from more recent to older
-  if(matlab_supported_versions)
-    list(REMOVE_DUPLICATES matlab_supported_versions)
-    list(SORT matlab_supported_versions)
-    list(REVERSE matlab_supported_versions)
-  endif()
-
-  set(${matlab_versions} ${matlab_supported_versions})
-endmacro()
-
-
-
-
-#[=======================================================================[.rst:
-.. command:: matlab_get_all_valid_matlab_roots_from_registry
-
-  Populates the Matlab root with valid versions of Matlab or
-  Matlab Runtime (MCR).
-  The returned matlab_roots is organized in triplets
-  ``(type,version_number,matlab_root_path)``, where ``type``
-  indicates either ``MATLAB`` or ``MCR``.
-
-  ::
-
-    matlab_get_all_valid_matlab_roots_from_registry(
-        matlab_versions
-        matlab_roots)
-
-  ``matlab_versions``
-    the versions of each of the Matlab or MCR installations
-  ``matlab_roots``
-    the location of each of the Matlab or MCR installations
-#]=======================================================================]
-function(matlab_get_all_valid_matlab_roots_from_registry matlab_versions matlab_roots)
-
-  # The matlab_versions comes either from
-  # extract_matlab_versions_from_registry_brute_force or
-  # matlab_extract_all_installed_versions_from_registry.
-
-  set(_matlab_roots_list )
-  # check for Matlab installations
-  foreach(_matlab_current_version ${matlab_versions})
-    get_filename_component(
-      current_MATLAB_ROOT
-      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\${_matlab_current_version};MATLABROOT]"
-      ABSOLUTE)
-
-    if(EXISTS ${current_MATLAB_ROOT})
-      list(APPEND _matlab_roots_list "MATLAB" ${_matlab_current_version} ${current_MATLAB_ROOT})
-    endif()
-
-  endforeach()
-
-  # Check for MCR installations
-  foreach(_matlab_current_version ${matlab_versions})
-    get_filename_component(
-      current_MATLAB_ROOT
-      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB Runtime\\${_matlab_current_version};MATLABROOT]"
-      ABSOLUTE)
-
-    # remove the dot
-    string(REPLACE "." "" _matlab_current_version_without_dot "${_matlab_current_version}")
-
-    if(EXISTS ${current_MATLAB_ROOT})
-      list(APPEND _matlab_roots_list "MCR" ${_matlab_current_version} "${current_MATLAB_ROOT}/v${_matlab_current_version_without_dot}")
-    endif()
-
-  endforeach()
-  set(${matlab_roots} ${_matlab_roots_list} PARENT_SCOPE)
-endfunction()
-
-#[=======================================================================[.rst:
-.. command:: matlab_get_mex_suffix
-
-  Returns the extension of the mex files (the suffixes).
-  This function should not be called before the appropriate Matlab root has
-  been found.
-
-  ::
-
-    matlab_get_mex_suffix(
-        matlab_root
-        mex_suffix)
-
-  ``matlab_root``
-    the root of the Matlab/MCR installation
-  ``mex_suffix``
-    the variable name in which the suffix will be returned.
-#]=======================================================================]
-function(matlab_get_mex_suffix matlab_root mex_suffix)
-
-  # todo setup the extension properly. Currently I do not know if this is
-  # sufficient for all win32 distributions.
-  # there is also CMAKE_EXECUTABLE_SUFFIX that could be tweaked
-  set(mexext_suffix "")
-  if(WIN32)
-    list(APPEND mexext_suffix ".bat")
-  endif()
-
-  # we first try without suffix, since cmake does not understand a list with
-  # one empty string element
-  find_program(
-    Matlab_MEXEXTENSIONS_PROG
-    NAMES mexext
-    PATHS ${matlab_root}/bin
-    DOC "Matlab MEX extension provider"
-    NO_DEFAULT_PATH
-  )
-
-  foreach(current_mexext_suffix IN LISTS mexext_suffix)
-    if(NOT DEFINED Matlab_MEXEXTENSIONS_PROG OR NOT Matlab_MEXEXTENSIONS_PROG)
-      # this call should populate the cache automatically
-      find_program(
-        Matlab_MEXEXTENSIONS_PROG
-        "mexext${current_mexext_suffix}"
-        PATHS ${matlab_root}/bin
-        DOC "Matlab MEX extension provider"
-        NO_DEFAULT_PATH
-      )
-    endif()
-  endforeach(current_mexext_suffix)
-  if(MATLAB_FIND_DEBUG)
-    message(STATUS "[MATLAB] Determining mex files extensions from '${matlab_root}/bin' with program '${Matlab_MEXEXTENSIONS_PROG}'")
-  endif()
-
-  # the program has been found?
-  if((NOT Matlab_MEXEXTENSIONS_PROG) OR (NOT EXISTS ${Matlab_MEXEXTENSIONS_PROG}))
-    if(MATLAB_FIND_DEBUG)
-      message(WARNING "[MATLAB] Cannot found mexext program. Matlab root is ${matlab_root}")
-    endif()
-    unset(Matlab_MEXEXTENSIONS_PROG CACHE)
-    return()
-  endif()
-
-  set(_matlab_mex_extension)
-
-  set(devnull)
-  if(UNIX)
-    set(devnull INPUT_FILE /dev/null)
-  elseif(WIN32)
-    set(devnull INPUT_FILE NUL)
-  endif()
-
-  if(WIN32)
-    # this environment variable is used to determine the arch on Windows
-    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-      set(ENV{MATLAB_ARCH} "win64")
-    else()
-      set(ENV{MATLAB_ARCH} "win32")
-    endif()
-  endif()
-
-  # this is the preferred way. If this does not work properly (eg. MCR on Windows), then we use our own knowledge
-  execute_process(
-    COMMAND ${Matlab_MEXEXTENSIONS_PROG}
-    OUTPUT_VARIABLE _matlab_mex_extension
-    ERROR_VARIABLE _matlab_mex_extension_error
-    OUTPUT_STRIP_TRAILING_WHITESPACE
-    ${devnull})
-  unset(ENV{MATLAB_ARCH})
-
-  if(_matlab_mex_extension_error)
-    if(WIN32)
-      # this is only for intel architecture
-      if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-        set(_matlab_mex_extension "mexw64")
-      else()
-        set(_matlab_mex_extension "mexw32")
-      endif()
-    endif()
-  endif()
-
-  string(STRIP "${_matlab_mex_extension}"  _matlab_mex_extension)
-  if(MATLAB_FIND_DEBUG)
-    message(STATUS "[MATLAB] '${Matlab_MEXEXTENSIONS_PROG}' : determined extension '${_matlab_mex_extension}' and error string is '${_matlab_mex_extension_error}'")
-  endif()
-
-  unset(Matlab_MEXEXTENSIONS_PROG CACHE)
-  set(${mex_suffix} ${_matlab_mex_extension} PARENT_SCOPE)
-endfunction()
-
-
-
-
-#[=======================================================================[.rst:
-.. command:: matlab_get_version_from_matlab_run
-
-  This function runs Matlab program specified on arguments and extracts its
-  version. If the path provided for the Matlab installation points to an MCR
-  installation, the version is extracted from the installed files.
-
-  ::
-
-    matlab_get_version_from_matlab_run(
-        matlab_binary_path
-        matlab_list_versions)
-
-  ``matlab_binary_path``
-    the location of the `matlab` binary executable
-  ``matlab_list_versions``
-    the version extracted from Matlab
-#]=======================================================================]
-function(matlab_get_version_from_matlab_run matlab_binary_program matlab_list_versions)
-
-  set(${matlab_list_versions} "" PARENT_SCOPE)
-
-  if(MATLAB_FIND_DEBUG)
-    message(STATUS "[MATLAB] Determining the version of Matlab from ${matlab_binary_program}")
-  endif()
-
-  if(EXISTS "${_matlab_temporary_folder}/matlabVersionLog.cmaketmp")
-    if(MATLAB_FIND_DEBUG)
-      message(STATUS "[MATLAB] Removing previous ${_matlab_temporary_folder}/matlabVersionLog.cmaketmp file")
-    endif()
-    file(REMOVE "${_matlab_temporary_folder}/matlabVersionLog.cmaketmp")
-  endif()
-
-
-  # the log file is needed since on windows the command executes in a new
-  # window and it is not possible to get back the answer of Matlab
-  # the -wait command is needed on windows, otherwise the call returns
-  # immediately after the program launches itself.
-  if(WIN32)
-    set(_matlab_additional_commands "-wait")
-  endif()
-
-  set(devnull)
-  if(UNIX)
-    set(devnull INPUT_FILE /dev/null)
-  elseif(WIN32)
-    set(devnull INPUT_FILE NUL)
-  endif()
-
-  # timeout set to 120 seconds, in case it does not start
-  # note as said before OUTPUT_VARIABLE cannot be used in a platform
-  # independent manner however, not setting it would flush the output of Matlab
-  # in the current console (unix variant)
-  execute_process(
-    COMMAND "${matlab_binary_program}" -nosplash -nojvm ${_matlab_additional_commands} -logfile "matlabVersionLog.cmaketmp" -nodesktop -nodisplay -r "version, exit"
-    OUTPUT_VARIABLE _matlab_version_from_cmd_dummy
-    RESULT_VARIABLE _matlab_result_version_call
-    ERROR_VARIABLE _matlab_result_version_call_error
-    TIMEOUT 120
-    WORKING_DIRECTORY "${_matlab_temporary_folder}"
-    ${devnull}
-    )
-
-  if(_matlab_result_version_call MATCHES "timeout")
-    if(MATLAB_FIND_DEBUG)
-      message(WARNING "[MATLAB] Unable to determine the version of Matlab."
-        " Matlab call timed out after 120 seconds.")
-    endif()
-    return()
-  endif()
-
-  if(${_matlab_result_version_call})
-    if(MATLAB_FIND_DEBUG)
-      message(WARNING "[MATLAB] Unable to determine the version of Matlab. Matlab call returned with error ${_matlab_result_version_call}.")
-    endif()
-    return()
-  elseif(NOT EXISTS "${_matlab_temporary_folder}/matlabVersionLog.cmaketmp")
-    if(MATLAB_FIND_DEBUG)
-      message(WARNING "[MATLAB] Unable to determine the version of Matlab. The log file does not exist.")
-    endif()
-    return()
-  endif()
-
-  # if successful, read back the log
-  file(READ "${_matlab_temporary_folder}/matlabVersionLog.cmaketmp" _matlab_version_from_cmd)
-  file(REMOVE "${_matlab_temporary_folder}/matlabVersionLog.cmaketmp")
-
-  set(index -1)
-  string(FIND "${_matlab_version_from_cmd}" "ans" index)
-  if(index EQUAL -1)
-
-    if(MATLAB_FIND_DEBUG)
-      message(WARNING "[MATLAB] Cannot find the version of Matlab returned by the run.")
-    endif()
-
-  else()
-    set(matlab_list_of_all_versions_tmp)
-
-    string(SUBSTRING "${_matlab_version_from_cmd}" ${index} -1 substring_ans)
-    string(
-      REGEX MATCHALL "ans[\r\n\t ]*=[\r\n\t ]*'?([0-9]+(\\.[0-9]+)?)"
-      matlab_versions_regex
-      ${substring_ans})
-    foreach(match IN LISTS matlab_versions_regex)
-      string(
-        REGEX MATCH "ans[\r\n\t ]*=[\r\n\t ]*'?(([0-9]+)(\\.([0-9]+))?)"
-        current_match ${match})
-
-      list(APPEND matlab_list_of_all_versions_tmp ${CMAKE_MATCH_1})
-    endforeach()
-    if(matlab_list_of_all_versions_tmp)
-      list(REMOVE_DUPLICATES matlab_list_of_all_versions_tmp)
-    endif()
-    set(${matlab_list_versions} ${matlab_list_of_all_versions_tmp} PARENT_SCOPE)
-
-  endif()
-
-endfunction()
-
-#[=======================================================================[.rst:
-.. command:: matlab_add_unit_test
-
-  Adds a Matlab unit test to the test set of cmake/ctest.
-  This command requires the component ``MAIN_PROGRAM`` and hence is not
-  available for an MCR installation.
-
-  The unit test uses the Matlab unittest framework (default, available
-  starting Matlab 2013b+) except if the option ``NO_UNITTEST_FRAMEWORK``
-  is given.
-
-  The function expects one Matlab test script file to be given.
-  In the case ``NO_UNITTEST_FRAMEWORK`` is given, the unittest script file
-  should contain the script to be run, plus an exit command with the exit
-  value. This exit value will be passed to the ctest framework (0 success,
-  non 0 failure). Additional arguments accepted by :command:`add_test` can be
-  passed through ``TEST_ARGS`` (eg. ``CONFIGURATION <config> ...``).
-
-  ::
-
-    matlab_add_unit_test(
-        NAME <name>
-        UNITTEST_FILE matlab_file_containing_unittest.m
-        [CUSTOM_TEST_COMMAND matlab_command_to_run_as_test]
-        [UNITTEST_PRECOMMAND matlab_command_to_run]
-        [TIMEOUT timeout]
-        [ADDITIONAL_PATH path1 [path2 ...]]
-        [MATLAB_ADDITIONAL_STARTUP_OPTIONS option1 [option2 ...]]
-        [TEST_ARGS arg1 [arg2 ...]]
-        [NO_UNITTEST_FRAMEWORK]
-        )
-
-  The function arguments are:
-
-  ``NAME``
-    name of the unittest in ctest.
-  ``UNITTEST_FILE``
-    the matlab unittest file. Its path will be automatically
-    added to the Matlab path.
-  ``CUSTOM_TEST_COMMAND``
-    Matlab script command to run as the test.
-    If this is not set, then the following is run:
-    ``runtests('matlab_file_name'), exit(max([ans(1,:).Failed]))``
-    where ``matlab_file_name`` is the ``UNITTEST_FILE`` without the extension.
-  ``UNITTEST_PRECOMMAND``
-    Matlab script command to be ran before the file
-    containing the test (eg. GPU device initialisation based on CMake
-    variables).
-  ``TIMEOUT``
-    the test timeout in seconds. Defaults to 180 seconds as the
-    Matlab unit test may hang.
-  ``ADDITIONAL_PATH``
-    a list of paths to add to the Matlab path prior to
-    running the unit test.
-  ``MATLAB_ADDITIONAL_STARTUP_OPTIONS``
-    a list of additional option in order
-    to run Matlab from the command line.
-    ``-nosplash -nodesktop -nodisplay`` are always added.
-  ``TEST_ARGS``
-    Additional options provided to the add_test command. These
-    options are added to the default options (eg. "CONFIGURATIONS Release")
-  ``NO_UNITTEST_FRAMEWORK``
-    when set, indicates that the test should not
-    use the unittest framework of Matlab (available for versions >= R2013a).
-  ``WORKING_DIRECTORY``
-    This will be the working directory for the test. If specified it will
-    also be the output directory used for the log file of the test run.
-    If not specified the temporary directory ``${CMAKE_BINARY_DIR}/Matlab`` will
-    be used as the working directory and the log location.
-
-#]=======================================================================]
-function(matlab_add_unit_test)
-
-  if(NOT Matlab_MAIN_PROGRAM)
-    message(FATAL_ERROR "[MATLAB] This functionality needs the MAIN_PROGRAM component (not default)")
-  endif()
-
-  set(options NO_UNITTEST_FRAMEWORK)
-  set(oneValueArgs NAME UNITTEST_FILE TIMEOUT WORKING_DIRECTORY
-    UNITTEST_PRECOMMAND CUSTOM_TEST_COMMAND)
-  set(multiValueArgs ADDITIONAL_PATH MATLAB_ADDITIONAL_STARTUP_OPTIONS TEST_ARGS)
-
-  set(prefix _matlab_unittest_prefix)
-  cmake_parse_arguments(PARSE_ARGV 0 ${prefix} "${options}" "${oneValueArgs}" "${multiValueArgs}" )
-
-  if(NOT ${prefix}_NAME)
-    message(FATAL_ERROR "[MATLAB] The Matlab test name cannot be empty")
-  endif()
-
-  add_test(NAME ${${prefix}_NAME}
-           COMMAND ${CMAKE_COMMAND}
-            "-Dtest_name=${${prefix}_NAME}"
-            "-Dadditional_paths=${${prefix}_ADDITIONAL_PATH}"
-            "-Dtest_timeout=${${prefix}_TIMEOUT}"
-            "-Doutput_directory=${_matlab_temporary_folder}"
-            "-Dworking_directory=${${prefix}_WORKING_DIRECTORY}"
-            "-DMatlab_PROGRAM=${Matlab_MAIN_PROGRAM}"
-            "-Dno_unittest_framework=${${prefix}_NO_UNITTEST_FRAMEWORK}"
-            "-DMatlab_ADDITIONAL_STARTUP_OPTIONS=${${prefix}_MATLAB_ADDITIONAL_STARTUP_OPTIONS}"
-            "-Dunittest_file_to_run=${${prefix}_UNITTEST_FILE}"
-            "-Dcustom_Matlab_test_command=${${prefix}_CUSTOM_TEST_COMMAND}"
-            "-Dcmd_to_run_before_test=${${prefix}_UNITTEST_PRECOMMAND}"
-            -P ${_FindMatlab_SELF_DIR}/MatlabTestsRedirect.cmake
-           ${${prefix}_TEST_ARGS}
-           ${${prefix}_UNPARSED_ARGUMENTS}
-           )
-endfunction()
-
-
-#[=======================================================================[.rst:
-.. command:: matlab_add_mex
-
-  Adds a Matlab MEX target.
-  This commands compiles the given sources with the current tool-chain in
-  order to produce a MEX file. The final name of the produced output may be
-  specified, as well as additional link libraries, and a documentation entry
-  for the MEX file. Remaining arguments of the call are passed to the
-  :command:`add_library` or :command:`add_executable` command.
-
-  ::
-
-     matlab_add_mex(
-         NAME <name>
-         [EXECUTABLE | MODULE | SHARED]
-         SRC src1 [src2 ...]
-         [OUTPUT_NAME output_name]
-         [DOCUMENTATION file.txt]
-         [LINK_TO target1 target2 ...]
-         [R2017b | R2018a]
-         [EXCLUDE_FROM_ALL]
-         [...]
-     )
-
-  ``NAME``
-    name of the target.
-  ``SRC``
-    list of source files.
-  ``LINK_TO``
-    a list of additional link dependencies.  The target links to ``libmex``
-    and ``libmx`` by default.
-  ``OUTPUT_NAME``
-    if given, overrides the default name. The default name is
-    the name of the target without any prefix and
-    with ``Matlab_MEX_EXTENSION`` suffix.
-  ``DOCUMENTATION``
-    if given, the file ``file.txt`` will be considered as
-    being the documentation file for the MEX file. This file is copied into
-    the same folder without any processing, with the same name as the final
-    mex file, and with extension `.m`. In that case, typing ``help <name>``
-    in Matlab prints the documentation contained in this file.
-  ``R2017b`` or ``R2018a`` may be given to specify the version of the C API
-    to use: ``R2017b`` specifies the traditional (separate complex) C API,
-    and corresponds to the ``-R2017b`` flag for the `mex` command. ``R2018a``
-    specifies the new interleaved complex C API, and corresponds to the
-    ``-R2018a`` flag for the `mex` command. Ignored if MATLAB version prior
-    to R2018a. Defaults to ``R2017b``.
-  ``MODULE`` or ``SHARED`` may be given to specify the type of library to be
-    created. ``EXECUTABLE`` may be given to create an executable instead of
-    a library. If no type is given explicitly, the type is ``SHARED``.
-  ``EXCLUDE_FROM_ALL``
-    This option has the same meaning as for :prop_tgt:`EXCLUDE_FROM_ALL` and
-    is forwarded to :command:`add_library` or :command:`add_executable`
-    commands.
-
-  The documentation file is not processed and should be in the following
-  format:
-
-  ::
-
-    % This is the documentation
-    function ret = mex_target_output_name(input1)
-
-#]=======================================================================]
-function(matlab_add_mex)
-
-  if(NOT WIN32)
-    # we do not need all this on Windows
-    # pthread options
-    if(CMAKE_CXX_COMPILER_LOADED)
-      check_cxx_compiler_flag(-pthread HAS_MINUS_PTHREAD)
-    elseif(CMAKE_C_COMPILER_LOADED)
-      check_c_compiler_flag(-pthread HAS_MINUS_PTHREAD)
-    endif()
-    # we should use try_compile instead, the link flags are discarded from
-    # this compiler_flag function.
-    #check_cxx_compiler_flag(-Wl,--exclude-libs,ALL HAS_SYMBOL_HIDING_CAPABILITY)
-
-  endif()
-
-  set(options EXECUTABLE MODULE SHARED R2017b R2018a EXCLUDE_FROM_ALL)
-  set(oneValueArgs NAME DOCUMENTATION OUTPUT_NAME)
-  set(multiValueArgs LINK_TO SRC)
-
-  set(prefix _matlab_addmex_prefix)
-  cmake_parse_arguments(${prefix} "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
-
-  if(NOT ${prefix}_NAME)
-    message(FATAL_ERROR "[MATLAB] The MEX target name cannot be empty")
-  endif()
-
-  if(NOT ${prefix}_OUTPUT_NAME)
-    set(${prefix}_OUTPUT_NAME ${${prefix}_NAME})
-  endif()
-
-  if(NOT Matlab_VERSION_STRING VERSION_LESS "9.1") # For 9.1 (R2016b) and newer, add version source file
-    # Add the correct version file depending on which languages are enabled in the project
-    if(CMAKE_C_COMPILER_LOADED)
-      # If C is enabled, use the .c file as it will work fine also with C++
-      set(MEX_VERSION_FILE "${Matlab_ROOT_DIR}/extern/version/c_mexapi_version.c")
-    elseif(CMAKE_CXX_COMPILER_LOADED)
-      # If C is not enabled, check if CXX is enabled and use the .cpp file
-      # to avoid that the .c file is silently ignored
-      set(MEX_VERSION_FILE "${Matlab_ROOT_DIR}/extern/version/cpp_mexapi_version.cpp")
-    else()
-      # If neither C or CXX is enabled, warn because we cannot add the source.
-      # TODO: add support for fortran mex files
-      message(WARNING "[MATLAB] matlab_add_mex requires that at least C or CXX are enabled languages")
-    endif()
-  endif()
-
-  if(NOT Matlab_VERSION_STRING VERSION_LESS "9.4") # For 9.4 (R2018a) and newer, add API macro
-    if(${${prefix}_R2018a})
-      set(MEX_API_MACRO "MATLAB_DEFAULT_RELEASE=R2018a")
-    else()
-      set(MEX_API_MACRO "MATLAB_DEFAULT_RELEASE=R2017b")
-    endif()
-  endif()
-
-  set(_option_EXCLUDE_FROM_ALL)
-  if(${prefix}_EXCLUDE_FROM_ALL)
-    set(_option_EXCLUDE_FROM_ALL "EXCLUDE_FROM_ALL")
-  endif()
-
-  if(${prefix}_EXECUTABLE)
-    add_executable(${${prefix}_NAME}
-      ${_option_EXCLUDE_FROM_ALL}
-      ${${prefix}_SRC}
-      ${MEX_VERSION_FILE}
-      ${${prefix}_DOCUMENTATION}
-      ${${prefix}_UNPARSED_ARGUMENTS})
-  else()
-    if(${prefix}_MODULE)
-      set(type MODULE)
-    else()
-      set(type SHARED)
-    endif()
-
-    add_library(${${prefix}_NAME}
-      ${type}
-      ${_option_EXCLUDE_FROM_ALL}
-      ${${prefix}_SRC}
-      ${MEX_VERSION_FILE}
-      ${${prefix}_DOCUMENTATION}
-      ${${prefix}_UNPARSED_ARGUMENTS})
-  endif()
-
-  target_include_directories(${${prefix}_NAME} PRIVATE ${Matlab_INCLUDE_DIRS})
-
-  if(Matlab_HAS_CPP_API)
-    target_link_libraries(${${prefix}_NAME} ${Matlab_ENGINE_LIBRARY} ${Matlab_DATAARRAY_LIBRARY})
-  endif()
-
-  target_link_libraries(${${prefix}_NAME} ${Matlab_MEX_LIBRARY} ${Matlab_MX_LIBRARY} ${${prefix}_LINK_TO})
-  set_target_properties(${${prefix}_NAME}
-      PROPERTIES
-        PREFIX ""
-        OUTPUT_NAME ${${prefix}_OUTPUT_NAME}
-        SUFFIX ".${Matlab_MEX_EXTENSION}")
-
-  target_compile_definitions(${${prefix}_NAME} PRIVATE ${MEX_API_MACRO} MATLAB_MEX_FILE)
-
-  # documentation
-  if(NOT ${${prefix}_DOCUMENTATION} STREQUAL "")
-    get_target_property(output_name ${${prefix}_NAME} OUTPUT_NAME)
-    add_custom_command(
-      TARGET ${${prefix}_NAME}
-      PRE_BUILD
-      COMMAND ${CMAKE_COMMAND} -E copy_if_different ${${prefix}_DOCUMENTATION} $<TARGET_FILE_DIR:${${prefix}_NAME}>/${output_name}.m
-      COMMENT "[MATLAB] Copy ${${prefix}_NAME} documentation file into the output folder"
-    )
-  endif() # documentation
-
-  # entry point in the mex file + taking care of visibility and symbol clashes.
-  if(WIN32)
-
-    if (MSVC)
-
-      set(_link_flags "${_link_flags} /EXPORT:mexFunction")
-      if(NOT Matlab_VERSION_STRING VERSION_LESS "9.1") # For 9.1 (R2016b) and newer, export version
-        set(_link_flags "${_link_flags} /EXPORT:mexfilerequiredapiversion")
-      endif()
-
-      set_property(TARGET ${${prefix}_NAME} APPEND PROPERTY LINK_FLAGS ${_link_flags})
-
-    endif() # No other compiler currently supported on Windows.
-
-    set_target_properties(${${prefix}_NAME}
-      PROPERTIES
-        DEFINE_SYMBOL "DLL_EXPORT_SYM=__declspec(dllexport)")
-
-  else()
-
-    if(Matlab_VERSION_STRING VERSION_LESS "9.1") # For versions prior to 9.1 (R2016b)
-      set(_ver_map_files ${Matlab_EXTERN_LIBRARY_DIR}/mexFunction.map)
-    else()                                          # For 9.1 (R2016b) and newer
-      set(_ver_map_files ${Matlab_EXTERN_LIBRARY_DIR}/c_exportsmexfileversion.map)
-    endif()
-
-    if(NOT Matlab_VERSION_STRING VERSION_LESS "9.5") # For 9.5 (R2018b) (and newer?)
-      target_compile_options(${${prefix}_NAME} PRIVATE "-fvisibility=default")
-      # This one is weird, it might be a bug in <mex.h> for R2018b. When compiling with
-      # -fvisibility=hidden, the symbol `mexFunction` cannot be exported. Reading the
-      # source code for <mex.h>, it seems that the preprocessor macro `MW_NEEDS_VERSION_H`
-      # needs to be defined for `__attribute__((visibility("default")))` to be added
-      # in front of the declaration of `mexFunction`. In previous versions of MATLAB this
-      # was not the case, there `DLL_EXPORT_SYM` needed to be defined.
-      # Adding `-fvisibility=hidden` to the `mex` command causes the build to fail.
-      # TODO: Check that this is still necessary in R2019a when it comes out.
-    endif()
-
-    if(APPLE)
-
-      if(Matlab_HAS_CPP_API)
-        list(APPEND _ver_map_files ${Matlab_EXTERN_LIBRARY_DIR}/cppMexFunction.map) # This one doesn't exist on Linux
-        set(_link_flags "${_link_flags} -Wl,-U,_mexCreateMexFunction -Wl,-U,_mexDestroyMexFunction -Wl,-U,_mexFunctionAdapter")
-        # On MacOS, the MEX command adds the above, without it the link breaks
-        # because we indiscriminately use "cppMexFunction.map" even for C API MEX-files.
-      endif()
-
-      set(_export_flag_name -exported_symbols_list)
-
-    else() # Linux
-
-      if(HAS_MINUS_PTHREAD)
-        # Apparently, compiling with -pthread generated the proper link flags
-        # and some defines at compilation
-        target_compile_options(${${prefix}_NAME} PRIVATE "-pthread")
-      endif()
-
-      set(_link_flags "${_link_flags} -Wl,--as-needed")
-
-      set(_export_flag_name --version-script)
-
-    endif()
-
-    foreach(_file ${_ver_map_files})
-      set(_link_flags "${_link_flags} -Wl,${_export_flag_name},${_file}")
-    endforeach()
-
-    # The `mex` command doesn't add this define. It is specified here in order
-    # to export the symbol in case the client code decides to hide its symbols
-    set_target_properties(${${prefix}_NAME}
-      PROPERTIES
-        DEFINE_SYMBOL "DLL_EXPORT_SYM=__attribute__((visibility(\"default\")))"
-        LINK_FLAGS "${_link_flags}"
-    )
-
-  endif()
-
-endfunction()
-
-
-# (internal)
-# Used to get the version of matlab, using caching. This basically transforms the
-# output of the root list, with possible unknown version, to a version
-# This can possibly run Matlab for extracting the version.
-function(_Matlab_get_version_from_root matlab_root matlab_or_mcr matlab_known_version matlab_final_version)
-
-  # if the version is not trivial, we query matlab (if not MCR) for that
-  # we keep track of the location of matlab that induced this version
-  #if(NOT DEFINED Matlab_PROG_VERSION_STRING_AUTO_DETECT)
-  #  set(Matlab_PROG_VERSION_STRING_AUTO_DETECT "" CACHE INTERNAL "internal matlab location for the discovered version")
-  #endif()
-
-  if(NOT matlab_known_version STREQUAL "NOTFOUND")
-    # the version is known, we just return it
-    set(${matlab_final_version} ${matlab_known_version} PARENT_SCOPE)
-    set(Matlab_VERSION_STRING_INTERNAL ${matlab_known_version} CACHE INTERNAL "Matlab version (automatically determined)" FORCE)
-    return()
-  endif()
-
-  if(matlab_or_mcr STREQUAL "UNKNOWN")
-    if(MATLAB_FIND_DEBUG)
-      message(WARNING "[MATLAB] Determining Matlab or MCR")
-    endif()
-
-    if(EXISTS "${matlab_root}/appdata/version.xml")
-      # we inspect the application version.xml file that contains the product information
-      file(STRINGS "${matlab_root}/appdata/version.xml" productinfo_string NEWLINE_CONSUME)
-      string(REGEX MATCH "<installedProductData.*displayedString=\"([a-zA-Z ]+)\".*/>"
-             product_reg_match
-             ${productinfo_string}
-            )
-
-      # default fallback to Matlab
-      set(matlab_or_mcr "MATLAB")
-      if(NOT CMAKE_MATCH_1 STREQUAL "")
-        string(TOLOWER "${CMAKE_MATCH_1}" product_reg_match)
-
-        if(product_reg_match STREQUAL "matlab runtime")
-          set(matlab_or_mcr "MCR")
-        endif()
-      endif()
-    endif()
-
-    if(MATLAB_FIND_DEBUG)
-      message(WARNING "[MATLAB] '${matlab_root}' contains the '${matlab_or_mcr}'")
-    endif()
-  endif()
-
-  # UNKNOWN is the default behaviour in case we
-  # - have an erroneous matlab_root
-  # - have an initial 'UNKNOWN'
-  if(matlab_or_mcr STREQUAL "MATLAB" OR matlab_or_mcr STREQUAL "UNKNOWN")
-    # MATLAB versions
-    set(_matlab_current_program ${Matlab_MAIN_PROGRAM})
-
-    # do we already have a matlab program?
-    if(NOT _matlab_current_program)
-
-      set(_find_matlab_options)
-      if(matlab_root AND EXISTS ${matlab_root})
-        set(_find_matlab_options PATHS ${matlab_root} ${matlab_root}/bin NO_DEFAULT_PATH)
-      endif()
-
-      find_program(
-          _matlab_current_program
-          matlab
-          ${_find_matlab_options}
-          DOC "Matlab main program"
-        )
-    endif()
-
-    if(NOT _matlab_current_program OR NOT EXISTS ${_matlab_current_program})
-      # if not found, clear the dependent variables
-      if(MATLAB_FIND_DEBUG)
-        message(WARNING "[MATLAB] Cannot find the main matlab program under ${matlab_root}")
-      endif()
-      set(Matlab_PROG_VERSION_STRING_AUTO_DETECT "" CACHE INTERNAL "internal matlab location for the discovered version" FORCE)
-      set(Matlab_VERSION_STRING_INTERNAL "" CACHE INTERNAL "internal matlab location for the discovered version" FORCE)
-      unset(_matlab_current_program)
-      unset(_matlab_current_program CACHE)
-      return()
-    endif()
-
-    # full real path for path comparison
-    get_filename_component(_matlab_main_real_path_tmp "${_matlab_current_program}" REALPATH)
-    unset(_matlab_current_program)
-    unset(_matlab_current_program CACHE)
-
-    # is it the same as the previous one?
-    if(_matlab_main_real_path_tmp STREQUAL Matlab_PROG_VERSION_STRING_AUTO_DETECT)
-      set(${matlab_final_version} ${Matlab_VERSION_STRING_INTERNAL} PARENT_SCOPE)
-      return()
-    endif()
-
-    # update the location of the program
-    set(Matlab_PROG_VERSION_STRING_AUTO_DETECT
-        ${_matlab_main_real_path_tmp}
-        CACHE INTERNAL "internal matlab location for the discovered version" FORCE)
-
-    set(matlab_list_of_all_versions)
-    matlab_get_version_from_matlab_run("${Matlab_PROG_VERSION_STRING_AUTO_DETECT}" matlab_list_of_all_versions)
-
-    list(LENGTH matlab_list_of_all_versions list_of_all_versions_length)
-    if(list_of_all_versions_length GREATER 0)
-      list(GET matlab_list_of_all_versions 0 _matlab_version_tmp)
-    else()
-      set(_matlab_version_tmp "unknown")
-    endif()
-
-    # set the version into the cache
-    set(Matlab_VERSION_STRING_INTERNAL ${_matlab_version_tmp} CACHE INTERNAL "Matlab version (automatically determined)" FORCE)
-
-    # warning, just in case several versions found (should not happen)
-    if((list_of_all_versions_length GREATER 1) AND MATLAB_FIND_DEBUG)
-      message(WARNING "[MATLAB] Found several versions, taking the first one (versions found ${matlab_list_of_all_versions})")
-    endif()
-
-    # return the updated value
-    set(${matlab_final_version} ${Matlab_VERSION_STRING_INTERNAL} PARENT_SCOPE)
-  elseif(EXISTS "${matlab_root}/VersionInfo.xml")
-    # MCR
-    # we cannot run anything in order to extract the version. We assume that the file
-    # VersionInfo.xml exists under the MatlabRoot, we look for it and extract the version from there
-    set(_matlab_version_tmp "unknown")
-    file(STRINGS "${matlab_root}/VersionInfo.xml" versioninfo_string NEWLINE_CONSUME)
-
-    if(versioninfo_string)
-      # parses "<version>9.2.0.538062</version>"
-      string(REGEX MATCH "<version>(.*)</version>"
-             version_reg_match
-             ${versioninfo_string}
-            )
-
-      if(CMAKE_MATCH_1 MATCHES "(([0-9])\\.([0-9]))[\\.0-9]*")
-        set(_matlab_version_tmp "${CMAKE_MATCH_1}")
-      endif()
-    endif()
-    set(${matlab_final_version} "${_matlab_version_tmp}" PARENT_SCOPE)
-    set(Matlab_VERSION_STRING_INTERNAL
-        "${_matlab_version_tmp}"
-        CACHE INTERNAL "Matlab (MCR) version (automatically determined)"
-        FORCE)
-  endif() # Matlab or MCR
-
-endfunction()
-
-
-# Utility function for finding Matlab or MCR on Win32
-function(_Matlab_find_instances_win32 matlab_roots)
-  # On WIN32, we look for Matlab installation in the registry
-  # if unsuccessful, we look for all known revision and filter the existing
-  # ones.
-
-  # testing if we are able to extract the needed information from the registry
-  set(_matlab_versions_from_registry)
-
-  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-    set(_matlab_win64 ON)
-  else()
-    set(_matlab_win64 OFF)
-  endif()
-
-  matlab_extract_all_installed_versions_from_registry(_matlab_win64 _matlab_versions_from_registry)
-
-  # the returned list is empty, doing the search on all known versions
-  if(NOT _matlab_versions_from_registry)
-    if(MATLAB_FIND_DEBUG)
-      message(STATUS "[MATLAB] Search for Matlab from the registry unsuccessful, testing all supported versions")
-    endif()
-    extract_matlab_versions_from_registry_brute_force(_matlab_versions_from_registry)
-  endif()
-
-  # filtering the results with the registry keys
-  matlab_get_all_valid_matlab_roots_from_registry("${_matlab_versions_from_registry}" _matlab_possible_roots)
-  set(${matlab_roots} ${_matlab_possible_roots} PARENT_SCOPE)
-
-endfunction()
-
-# Utility function for finding Matlab or MCR on OSX
-function(_Matlab_find_instances_osx matlab_roots)
-
-  set(_matlab_possible_roots)
-  # on mac, we look for the /Application paths
-  # this corresponds to the behaviour on Windows. On Linux, we do not have
-  # any other guess.
-  matlab_get_supported_releases(_matlab_releases)
-  if(MATLAB_FIND_DEBUG)
-    message(STATUS "[MATLAB] Matlab supported versions ${_matlab_releases}. If more version should be supported "
-                 "the variable MATLAB_ADDITIONAL_VERSIONS can be set according to the documentation")
-  endif()
-
-  foreach(_matlab_current_release IN LISTS _matlab_releases)
-    matlab_get_version_from_release_name("${_matlab_current_release}" _matlab_current_version)
-    string(REPLACE "." "" _matlab_current_version_without_dot "${_matlab_current_version}")
-    set(_matlab_base_path "/Applications/MATLAB_${_matlab_current_release}.app")
-
-    # Check Matlab, has precedence over MCR
-    if(EXISTS ${_matlab_base_path})
-      if(MATLAB_FIND_DEBUG)
-        message(STATUS "[MATLAB] Found version ${_matlab_current_release} (${_matlab_current_version}) in ${_matlab_base_path}")
-      endif()
-      list(APPEND _matlab_possible_roots "MATLAB" ${_matlab_current_version} ${_matlab_base_path})
-    endif()
-
-    # Checks MCR
-    set(_mcr_path "/Applications/MATLAB/MATLAB_Runtime/v${_matlab_current_version_without_dot}")
-    if(EXISTS "${_mcr_path}")
-      if(MATLAB_FIND_DEBUG)
-        message(STATUS "[MATLAB] Found MCR version ${_matlab_current_release} (${_matlab_current_version}) in ${_mcr_path}")
-      endif()
-      list(APPEND _matlab_possible_roots "MCR" ${_matlab_current_version} ${_mcr_path})
-    endif()
-
-  endforeach()
-  set(${matlab_roots} ${_matlab_possible_roots} PARENT_SCOPE)
-
-endfunction()
-
-# Utility function for finding Matlab or MCR from the PATH
-function(_Matlab_find_instances_from_path matlab_roots)
-
-  set(_matlab_possible_roots)
-
-  # At this point, we have no other choice than trying to find it from PATH.
-  # If set by the user, this wont change
-  find_program(
-    _matlab_main_tmp
-    NAMES matlab)
-
-  if(_matlab_main_tmp)
-    # we then populate the list of roots, with empty version
-    if(MATLAB_FIND_DEBUG)
-      message(STATUS "[MATLAB] matlab found from PATH: ${_matlab_main_tmp}")
-    endif()
-
-    # resolve symlinks
-    get_filename_component(_matlab_current_location "${_matlab_main_tmp}" REALPATH)
-
-    # get the directory (the command below has to be run twice)
-    # this will be the matlab root
-    get_filename_component(_matlab_current_location "${_matlab_current_location}" DIRECTORY)
-    get_filename_component(_matlab_current_location "${_matlab_current_location}" DIRECTORY) # Matlab should be in bin
-
-    # We found the Matlab program
-    list(APPEND _matlab_possible_roots "MATLAB" "NOTFOUND" ${_matlab_current_location})
-
-    # we remove this from the CACHE
-    unset(_matlab_main_tmp CACHE)
-  else()
-    find_program(
-      _matlab_mex_tmp
-      NAMES mex)
-    if(_matlab_mex_tmp)
-      # we then populate the list of roots, with empty version
-      if(MATLAB_FIND_DEBUG)
-        message(STATUS "[MATLAB] mex compiler found from PATH: ${_matlab_mex_tmp}")
-      endif()
-
-      # resolve symlinks
-      get_filename_component(_mex_current_location "${_matlab_mex_tmp}" REALPATH)
-
-      # get the directory (the command below has to be run twice)
-      # this will be the matlab root
-      get_filename_component(_mex_current_location "${_mex_current_location}" DIRECTORY)
-      get_filename_component(_mex_current_location "${_mex_current_location}" DIRECTORY) # Matlab Runtime mex compiler should be in bin
-
-      # We found the Matlab program
-      list(APPEND _matlab_possible_roots "MCR" "NOTFOUND" ${_mex_current_location})
-
-      unset(_matlab_mex_tmp CACHE)
-    else()
-      if(MATLAB_FIND_DEBUG)
-        message(STATUS "[MATLAB] mex compiler not found")
-      endif()
-    endif()
-
-
-  endif()
-
-  set(${matlab_roots} ${_matlab_possible_roots} PARENT_SCOPE)
-endfunction()
-
-
-# ###################################
-# Exploring the possible Matlab_ROOTS
-
-# this variable will get all Matlab installations found in the current system.
-set(_matlab_possible_roots)
-
-if(Matlab_ROOT_DIR)
-  # if the user specifies a possible root, we keep this one
-
-  if(NOT EXISTS "${Matlab_ROOT_DIR}")
-    # if Matlab_ROOT_DIR specified but erroneous
-    if(MATLAB_FIND_DEBUG)
-      message(WARNING "[MATLAB] the specified path for Matlab_ROOT_DIR does not exist (${Matlab_ROOT_DIR})")
-    endif()
-  else()
-    # NOTFOUND indicates the code below to search for the version automatically
-    if("${Matlab_VERSION_STRING_INTERNAL}" STREQUAL "")
-      list(APPEND _matlab_possible_roots "UNKNOWN" "NOTFOUND" ${Matlab_ROOT_DIR}) # empty version, empty MCR/Matlab indication
-    else()
-      list(APPEND _matlab_possible_roots "UNKNOWN" ${Matlab_VERSION_STRING_INTERNAL} ${Matlab_ROOT_DIR}) # cached version
-    endif()
-  endif()
-else()
-
-  # if the user does not specify the possible installation root, we look for
-  # one installation using the appropriate heuristics.
-  # There is apparently no standard way on Linux.
-  if(CMAKE_HOST_WIN32)
-    _Matlab_find_instances_win32(_matlab_possible_roots_win32)
-    list(APPEND _matlab_possible_roots ${_matlab_possible_roots_win32})
-  elseif(APPLE)
-    _Matlab_find_instances_osx(_matlab_possible_roots_osx)
-    list(APPEND _matlab_possible_roots ${_matlab_possible_roots_osx})
-  endif()
-endif()
-
-
-list(LENGTH _matlab_possible_roots _numbers_of_matlab_roots)
-if(_numbers_of_matlab_roots EQUAL 0)
-  # if we have not found anything, we fall back on the PATH
-  _Matlab_find_instances_from_path(_matlab_possible_roots)
-endif()
-
-
-if(MATLAB_FIND_DEBUG)
-  message(STATUS "[MATLAB] Matlab root folders are ${_matlab_possible_roots}")
-endif()
-
-
-
-
-
-# take the first possible Matlab root
-list(LENGTH _matlab_possible_roots _numbers_of_matlab_roots)
-set(Matlab_VERSION_STRING "NOTFOUND")
-set(Matlab_Or_MCR "UNKNOWN")
-if(_numbers_of_matlab_roots GREATER 0)
-  if(Matlab_FIND_VERSION_EXACT)
-    list(FIND _matlab_possible_roots ${Matlab_FIND_VERSION} _list_index)
-    if(_list_index LESS 0)
-      set(_list_index 1)
-    endif()
-
-    math(EXPR _matlab_or_mcr_index "${_list_index} - 1")
-    math(EXPR _matlab_root_dir_index "${_list_index} + 1")
-
-    list(GET _matlab_possible_roots ${_matlab_or_mcr_index} Matlab_Or_MCR)
-    list(GET _matlab_possible_roots ${_list_index} Matlab_VERSION_STRING)
-    list(GET _matlab_possible_roots ${_matlab_root_dir_index} Matlab_ROOT_DIR)
-  else()
-    list(GET _matlab_possible_roots 0 Matlab_Or_MCR)
-    list(GET _matlab_possible_roots 1 Matlab_VERSION_STRING)
-    list(GET _matlab_possible_roots 2 Matlab_ROOT_DIR)
-
-    # adding a warning in case of ambiguity
-    if(_numbers_of_matlab_roots GREATER 3 AND MATLAB_FIND_DEBUG)
-      message(WARNING "[MATLAB] Found several distributions of Matlab. Setting the current version to ${Matlab_VERSION_STRING} (located ${Matlab_ROOT_DIR})."
-                      " If this is not the desired behaviour, use the EXACT keyword or provide the -DMatlab_ROOT_DIR=... on the command line")
-    endif()
-  endif()
-endif()
-
-
-# check if the root changed wrt. the previous defined one, if so
-# clear all the cached variables for being able to reconfigure properly
-if(DEFINED Matlab_ROOT_DIR_LAST_CACHED)
-
-  if(NOT Matlab_ROOT_DIR_LAST_CACHED STREQUAL Matlab_ROOT_DIR)
-    set(_Matlab_cached_vars
-        Matlab_VERSION_STRING
-        Matlab_INCLUDE_DIRS
-        Matlab_MEX_LIBRARY
-        Matlab_MEX_COMPILER
-        Matlab_MCC_COMPILER
-        Matlab_MAIN_PROGRAM
-        Matlab_MX_LIBRARY
-        Matlab_ENG_LIBRARY
-        Matlab_MAT_LIBRARY
-        Matlab_ENGINE_LIBRARY
-        Matlab_DATAARRAY_LIBRARY
-        Matlab_MEX_EXTENSION
-        Matlab_SIMULINK_INCLUDE_DIR
-
-        # internal
-        Matlab_MEXEXTENSIONS_PROG
-        Matlab_ROOT_DIR_LAST_CACHED
-        #Matlab_PROG_VERSION_STRING_AUTO_DETECT
-        #Matlab_VERSION_STRING_INTERNAL
-        )
-    foreach(_var IN LISTS _Matlab_cached_vars)
-      if(DEFINED ${_var})
-        unset(${_var} CACHE)
-      endif()
-    endforeach()
-  endif()
-endif()
-
-set(Matlab_ROOT_DIR_LAST_CACHED ${Matlab_ROOT_DIR} CACHE INTERNAL "last Matlab root dir location")
-set(Matlab_ROOT_DIR ${Matlab_ROOT_DIR} CACHE PATH "Matlab installation root path" FORCE)
-
-# Fix the version, in case this one is NOTFOUND
-_Matlab_get_version_from_root(
-  "${Matlab_ROOT_DIR}"
-  "${Matlab_Or_MCR}"
-  ${Matlab_VERSION_STRING}
-  Matlab_VERSION_STRING
-)
-
-if(MATLAB_FIND_DEBUG)
-  message(STATUS "[MATLAB] Current version is ${Matlab_VERSION_STRING} located ${Matlab_ROOT_DIR}")
-endif()
-
-# MATLAB 9.4 (R2018a) and newer have a new C++ API
-# This API pulls additional required libraries.
-if(NOT ${Matlab_VERSION_STRING} VERSION_LESS "9.4")
-  set(Matlab_HAS_CPP_API 1)
-endif()
-
-if(Matlab_ROOT_DIR)
-  file(TO_CMAKE_PATH ${Matlab_ROOT_DIR} Matlab_ROOT_DIR)
-endif()
-
-if(CMAKE_SIZEOF_VOID_P EQUAL 4)
-  set(_matlab_64Build FALSE)
-else()
-  set(_matlab_64Build TRUE)
-endif()
-
-if(APPLE)
-  set(_matlab_bin_prefix "mac") # i should be for intel
-  set(_matlab_bin_suffix_32bits "i")
-  set(_matlab_bin_suffix_64bits "i64")
-elseif(UNIX)
-  set(_matlab_bin_prefix "gln")
-  set(_matlab_bin_suffix_32bits "x86")
-  set(_matlab_bin_suffix_64bits "xa64")
-else()
-  set(_matlab_bin_prefix "win")
-  set(_matlab_bin_suffix_32bits "32")
-  set(_matlab_bin_suffix_64bits "64")
-endif()
-
-
-
-set(MATLAB_INCLUDE_DIR_TO_LOOK ${Matlab_ROOT_DIR}/extern/include)
-if(_matlab_64Build)
-  set(_matlab_current_suffix ${_matlab_bin_suffix_64bits})
-else()
-  set(_matlab_current_suffix ${_matlab_bin_suffix_32bits})
-endif()
-
-set(Matlab_BINARIES_DIR
-    ${Matlab_ROOT_DIR}/bin/${_matlab_bin_prefix}${_matlab_current_suffix})
-set(Matlab_EXTERN_LIBRARY_DIR
-    ${Matlab_ROOT_DIR}/extern/lib/${_matlab_bin_prefix}${_matlab_current_suffix})
-set(Matlab_EXTERN_BINARIES_DIR
-    ${Matlab_ROOT_DIR}/extern/bin/${_matlab_bin_prefix}${_matlab_current_suffix})
-
-if(WIN32)
-  if(MINGW)
-    set(_matlab_lib_dir_for_search ${Matlab_EXTERN_LIBRARY_DIR}/mingw64)
-  else()
-    set(_matlab_lib_dir_for_search ${Matlab_EXTERN_LIBRARY_DIR}/microsoft)
-  endif()
-  set(_matlab_lib_prefix_for_search "lib")
-else()
-  set(_matlab_lib_dir_for_search ${Matlab_BINARIES_DIR} ${Matlab_EXTERN_BINARIES_DIR})
-  set(_matlab_lib_prefix_for_search "lib")
-endif()
-
-unset(_matlab_64Build)
-
-
-if(NOT DEFINED Matlab_MEX_EXTENSION)
-  set(_matlab_mex_extension "")
-  matlab_get_mex_suffix("${Matlab_ROOT_DIR}" _matlab_mex_extension)
-
-  # This variable goes to the cache.
-  set(Matlab_MEX_EXTENSION ${_matlab_mex_extension} CACHE STRING "Extensions for the mex targets (automatically given by Matlab)")
-  unset(_matlab_mex_extension)
-endif()
-
-
-if(MATLAB_FIND_DEBUG)
-  message(STATUS "[MATLAB] [DEBUG]_matlab_lib_prefix_for_search = ${_matlab_lib_prefix_for_search} | _matlab_lib_dir_for_search = ${_matlab_lib_dir_for_search}")
-endif()
-
-
-
-# internal
-# This small stub around find_library is to prevent any pollution of CMAKE_FIND_LIBRARY_PREFIXES in the global scope.
-# This is the function to be used below instead of the find_library directives.
-function(_Matlab_find_library _matlab_library_prefix)
-  set(CMAKE_FIND_LIBRARY_PREFIXES ${CMAKE_FIND_LIBRARY_PREFIXES} ${_matlab_library_prefix})
-  find_library(${ARGN})
-endfunction()
-
-
-set(_matlab_required_variables)
-
-# Order is as follow:
-# - unconditionally required libraries/headers first
-# - then library components
-# - then program components
-
-# the MEX library/header are required
-find_path(
-  Matlab_INCLUDE_DIRS
-  mex.h
-  PATHS ${MATLAB_INCLUDE_DIR_TO_LOOK}
-  NO_DEFAULT_PATH
-  )
-list(APPEND _matlab_required_variables Matlab_INCLUDE_DIRS)
-
-_Matlab_find_library(
-  ${_matlab_lib_prefix_for_search}
-  Matlab_MEX_LIBRARY
-  mex
-  PATHS ${_matlab_lib_dir_for_search}
-  NO_DEFAULT_PATH
-)
-list(APPEND _matlab_required_variables Matlab_MEX_LIBRARY)
-
-# the MEX extension is required
-list(APPEND _matlab_required_variables Matlab_MEX_EXTENSION)
-
-# the matlab root is required
-list(APPEND _matlab_required_variables Matlab_ROOT_DIR)
-
-# The MX library is required
-_Matlab_find_library(
-  ${_matlab_lib_prefix_for_search}
-  Matlab_MX_LIBRARY
-  mx
-  PATHS ${_matlab_lib_dir_for_search}
-  NO_DEFAULT_PATH
-)
-list(APPEND _matlab_required_variables Matlab_MX_LIBRARY)
-if(Matlab_MX_LIBRARY)
-  set(Matlab_MX_LIBRARY_FOUND TRUE)
-endif()
-
-if(Matlab_HAS_CPP_API)
-
-  # The MatlabEngine library is required for R2018a+
-  _Matlab_find_library(
-    ${_matlab_lib_prefix_for_search}
-    Matlab_ENGINE_LIBRARY
-    MatlabEngine
-    PATHS ${_matlab_lib_dir_for_search}
-    DOC "MatlabEngine Library"
-    NO_DEFAULT_PATH
-  )
-  list(APPEND _matlab_required_variables Matlab_ENGINE_LIBRARY)
-  if(Matlab_ENGINE_LIBRARY)
-    set(Matlab_ENGINE_LIBRARY_FOUND TRUE)
-  endif()
-
-  # The MatlabDataArray library is required for R2018a+
-  _Matlab_find_library(
-    ${_matlab_lib_prefix_for_search}
-    Matlab_DATAARRAY_LIBRARY
-    MatlabDataArray
-    PATHS ${_matlab_lib_dir_for_search}
-    DOC "MatlabDataArray Library"
-    NO_DEFAULT_PATH
-  )
-  list(APPEND _matlab_required_variables Matlab_DATAARRAY_LIBRARY)
-  if(Matlab_DATAARRAY_LIBRARY)
-    set(Matlab_DATAARRAY_LIBRARY_FOUND TRUE)
-  endif()
-
-endif()
-
-# Component ENG library
-if("ENG_LIBRARY" IN_LIST Matlab_FIND_COMPONENTS)
-  _Matlab_find_library(
-    ${_matlab_lib_prefix_for_search}
-    Matlab_ENG_LIBRARY
-    eng
-    PATHS ${_matlab_lib_dir_for_search}
-    NO_DEFAULT_PATH
-  )
-  if(Matlab_ENG_LIBRARY)
-    set(Matlab_ENG_LIBRARY_FOUND TRUE)
-  endif()
-endif()
-
-# Component MAT library
-if("MAT_LIBRARY" IN_LIST Matlab_FIND_COMPONENTS)
-  _Matlab_find_library(
-    ${_matlab_lib_prefix_for_search}
-    Matlab_MAT_LIBRARY
-    mat
-    PATHS ${_matlab_lib_dir_for_search}
-    NO_DEFAULT_PATH
-  )
-  if(Matlab_MAT_LIBRARY)
-    set(Matlab_MAT_LIBRARY_FOUND TRUE)
-  endif()
-endif()
-
-# Component Simulink
-if("SIMULINK" IN_LIST Matlab_FIND_COMPONENTS)
-  find_path(
-    Matlab_SIMULINK_INCLUDE_DIR
-    simstruc.h
-    PATHS "${Matlab_ROOT_DIR}/simulink/include"
-    NO_DEFAULT_PATH
-    )
-  if(Matlab_SIMULINK_INCLUDE_DIR)
-    set(Matlab_SIMULINK_FOUND TRUE)
-    list(APPEND Matlab_INCLUDE_DIRS "${Matlab_SIMULINK_INCLUDE_DIR}")
-  endif()
-endif()
-
-# component Matlab program
-if("MAIN_PROGRAM" IN_LIST Matlab_FIND_COMPONENTS)
-  find_program(
-    Matlab_MAIN_PROGRAM
-    matlab
-    PATHS ${Matlab_ROOT_DIR} ${Matlab_ROOT_DIR}/bin
-    DOC "Matlab main program"
-    NO_DEFAULT_PATH
-  )
-  if(Matlab_MAIN_PROGRAM)
-    set(Matlab_MAIN_PROGRAM_FOUND TRUE)
-  endif()
-endif()
-
-# component Mex Compiler
-if("MEX_COMPILER" IN_LIST Matlab_FIND_COMPONENTS)
-  find_program(
-    Matlab_MEX_COMPILER
-    "mex"
-    PATHS ${Matlab_BINARIES_DIR}
-    DOC "Matlab MEX compiler"
-    NO_DEFAULT_PATH
-  )
-  if(Matlab_MEX_COMPILER)
-    set(Matlab_MEX_COMPILER_FOUND TRUE)
-  endif()
-endif()
-
-# component MCC Compiler
-if("MCC_COMPILER" IN_LIST Matlab_FIND_COMPONENTS)
-  find_program(
-    Matlab_MCC_COMPILER
-    "mcc"
-    PATHS ${Matlab_BINARIES_DIR}
-    DOC "Matlab MCC compiler"
-    NO_DEFAULT_PATH
-  )
-  if(Matlab_MCC_COMPILER)
-    set(Matlab_MCC_COMPILER_FOUND TRUE)
-  endif()
-endif()
-
-set(Matlab_LIBRARIES
-  ${Matlab_MEX_LIBRARY} ${Matlab_MX_LIBRARY}
-  ${Matlab_ENG_LIBRARY} ${Matlab_MAT_LIBRARY}
-  ${Matlab_DATAARRAY_LIBRARY} ${Matlab_ENGINE_LIBRARY})
-
-find_package_handle_standard_args(
-  Matlab
-  FOUND_VAR Matlab_FOUND
-  REQUIRED_VARS ${_matlab_required_variables}
-  VERSION_VAR Matlab_VERSION_STRING
-  HANDLE_COMPONENTS)
-
-unset(_matlab_required_variables)
-unset(_matlab_bin_prefix)
-unset(_matlab_bin_suffix_32bits)
-unset(_matlab_bin_suffix_64bits)
-unset(_matlab_current_suffix)
-unset(_matlab_lib_dir_for_search)
-unset(_matlab_lib_prefix_for_search)
-
-if(Matlab_INCLUDE_DIRS AND Matlab_LIBRARIES)
-  mark_as_advanced(
-    Matlab_MEX_LIBRARY
-    Matlab_MX_LIBRARY
-    Matlab_ENG_LIBRARY
-    Matlab_ENGINE_LIBRARY
-    Matlab_DATAARRAY_LIBRARY
-    Matlab_MAT_LIBRARY
-    Matlab_INCLUDE_DIRS
-    Matlab_FOUND
-    Matlab_MAIN_PROGRAM
-    Matlab_MEXEXTENSIONS_PROG
-    Matlab_MEX_EXTENSION
-  )
-endif()
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FindODBC.cmake b/share/cmake-3.18/Modules/FindODBC.cmake
deleted file mode 100644
index 3f710db..0000000
--- a/share/cmake-3.18/Modules/FindODBC.cmake
+++ /dev/null
@@ -1,231 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindODBC
---------
-
-Find an Open Database Connectivity (ODBC) include directory and library.
-
-On Windows, when building with Visual Studio, this module assumes the ODBC
-library is provided by the available Windows SDK.
-
-On Unix, this module allows to search for ODBC library provided by
-unixODBC or iODBC implementations of ODBC API.
-This module reads hint about location of the config program:
-
-.. variable:: ODBC_CONFIG
-
-  Location of odbc_config or iodbc-config program
-
-Otherwise, this module tries to find the config program,
-first from unixODBC, then from iODBC.
-If no config program found, this module searches for ODBC header
-and library in list of known locations.
-
-Imported targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :prop_tgt:`IMPORTED` targets:
-
-.. variable:: ODBC::ODBC
-
-  Imported target for using the ODBC library, if found.
-
-Result variables
-^^^^^^^^^^^^^^^^
-
-.. variable:: ODBC_FOUND
-
-  Set to true if ODBC library found, otherwise false or undefined.
-
-.. variable:: ODBC_INCLUDE_DIRS
-
-  Paths to include directories listed in one variable for use by ODBC client.
-  May be empty on Windows, where the include directory corresponding to the
-  expected Windows SDK is already available in the compilation environment.
-
-.. variable:: ODBC_LIBRARIES
-
-  Paths to libraries to linked against to use ODBC.
-  May just a library name on Windows, where the library directory corresponding
-  to the expected Windows SDK is already available in the compilation environment.
-
-.. variable:: ODBC_CONFIG
-
-  Path to unixODBC or iODBC config program, if found or specified.
-
-Cache variables
-^^^^^^^^^^^^^^^
-
-For users who wish to edit and control the module behavior, this module
-reads hints about search locations from the following variables:
-
-.. variable:: ODBC_INCLUDE_DIR
-
-  Path to ODBC include directory with ``sql.h`` header.
-
-.. variable:: ODBC_LIBRARY
-
-  Path to ODBC library to be linked.
-
-These variables should not be used directly by project code.
-
-Limitations
-^^^^^^^^^^^
-
-On Windows, this module does not search for iODBC.
-On Unix, there is no way to prefer unixODBC over iODBC, or vice versa,
-other than providing the config program location using the ``ODBC_CONFIG``.
-This module does not allow to search for a specific ODBC driver.
-
-#]=======================================================================]
-
-# Define lists used internally
-set(_odbc_include_paths)
-set(_odbc_lib_paths)
-set(_odbc_lib_names)
-set(_odbc_required_libs_names)
-
-### Try Windows Kits ##########################################################
-if(WIN32)
-  # List names of ODBC libraries on Windows
-  if(NOT MINGW)
-    set(ODBC_LIBRARY odbc32.lib)
-  else()
-    set(ODBC_LIBRARY libodbc32.a)
-  endif()
-  set(_odbc_lib_names odbc32;)
-
-  # List additional libraries required to use ODBC library
-  if(MSVC OR CMAKE_CXX_COMPILER_ID MATCHES "Intel")
-    set(_odbc_required_libs_names odbccp32;ws2_32)
-  elseif(MINGW)
-    set(_odbc_required_libs_names odbccp32)
-  endif()
-endif()
-
-### Try unixODBC or iODBC config program ######################################
-if (UNIX)
-  find_program(ODBC_CONFIG
-    NAMES odbc_config iodbc-config
-    DOC "Path to unixODBC or iODBC config program")
-  mark_as_advanced(ODBC_CONFIG)
-endif()
-
-if (UNIX AND ODBC_CONFIG)
-  # unixODBC and iODBC accept unified command line options
-  execute_process(COMMAND ${ODBC_CONFIG} --cflags
-    OUTPUT_VARIABLE _cflags OUTPUT_STRIP_TRAILING_WHITESPACE)
-  execute_process(COMMAND ${ODBC_CONFIG} --libs
-    OUTPUT_VARIABLE _libs OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-  # Collect paths of include directories from CFLAGS
-  separate_arguments(_cflags NATIVE_COMMAND "${_cflags}")
-  foreach(arg IN LISTS _cflags)
-    if("${arg}" MATCHES "^-I(.*)$")
-      list(APPEND _odbc_include_paths "${CMAKE_MATCH_1}")
-    endif()
-  endforeach()
-  unset(_cflags)
-
-  # Collect paths of library names and directories from LIBS
-  separate_arguments(_libs NATIVE_COMMAND "${_libs}")
-  foreach(arg IN LISTS _libs)
-    if("${arg}" MATCHES "^-L(.*)$")
-      list(APPEND _odbc_lib_paths "${CMAKE_MATCH_1}")
-    elseif("${arg}" MATCHES "^-l(.*)$")
-      set(_lib_name ${CMAKE_MATCH_1})
-      string(REGEX MATCH "odbc" _is_odbc ${_lib_name})
-      if(_is_odbc)
-        list(APPEND _odbc_lib_names ${_lib_name})
-      else()
-        list(APPEND _odbc_required_libs_names ${_lib_name})
-      endif()
-      unset(_lib_name)
-    endif()
-  endforeach()
-  unset(_libs)
-endif()
-
-### Try unixODBC or iODBC in include/lib filesystems ##########################
-if (UNIX AND NOT ODBC_CONFIG)
-  # List names of both ODBC libraries, unixODBC and iODBC
-  set(_odbc_lib_names odbc;iodbc;unixodbc;)
-endif()
-
-### Find include directories ##################################################
-find_path(ODBC_INCLUDE_DIR
-  NAMES sql.h
-  PATHS ${_odbc_include_paths})
-
-if(NOT ODBC_INCLUDE_DIR AND WIN32)
-  set(ODBC_INCLUDE_DIR "")
-endif()
-
-### Find libraries ############################################################
-if(NOT ODBC_LIBRARY)
-  find_library(ODBC_LIBRARY
-    NAMES ${_odbc_lib_names}
-    PATHS ${_odbc_lib_paths}
-    PATH_SUFFIXES odbc)
-
-  foreach(_lib IN LISTS _odbc_required_libs_names)
-    find_library(_lib_path
-      NAMES ${_lib}
-      PATHS ${_odbc_lib_paths} # system parths or collected from ODBC_CONFIG
-      PATH_SUFFIXES odbc)
-    if(_lib_path)
-      list(APPEND _odbc_required_libs_paths ${_lib_path})
-    endif()
-    unset(_lib_path CACHE)
-  endforeach()
-endif()
-
-# Unset internal lists as no longer used
-unset(_odbc_include_paths)
-unset(_odbc_lib_paths)
-unset(_odbc_lib_names)
-unset(_odbc_required_libs_names)
-
-### Set result variables ######################################################
-set(_odbc_required_vars ODBC_LIBRARY)
-if(NOT WIN32)
-  list(APPEND _odbc_required_vars ODBC_INCLUDE_DIR)
-endif()
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(ODBC DEFAULT_MSG ${_odbc_required_vars})
-
-unset(_odbc_required_vars)
-
-mark_as_advanced(ODBC_LIBRARY ODBC_INCLUDE_DIR)
-
-set(ODBC_INCLUDE_DIRS ${ODBC_INCLUDE_DIR})
-list(APPEND ODBC_LIBRARIES ${ODBC_LIBRARY})
-list(APPEND ODBC_LIBRARIES ${_odbc_required_libs_paths})
-
-### Import targets ############################################################
-if(ODBC_FOUND)
-  if(NOT TARGET ODBC::ODBC)
-    if(IS_ABSOLUTE "${ODBC_LIBRARY}")
-      add_library(ODBC::ODBC UNKNOWN IMPORTED)
-      set_target_properties(ODBC::ODBC PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-        IMPORTED_LOCATION "${ODBC_LIBRARY}")
-    else()
-      add_library(ODBC::ODBC INTERFACE IMPORTED)
-      set_target_properties(ODBC::ODBC PROPERTIES
-        IMPORTED_LIBNAME "${ODBC_LIBRARY}")
-    endif()
-    set_target_properties(ODBC::ODBC PROPERTIES
-      INTERFACE_INCLUDE_DIRECTORIES "${ODBC_INCLUDE_DIR}")
-
-    if(_odbc_required_libs_paths)
-      set_property(TARGET ODBC::ODBC APPEND PROPERTY
-        INTERFACE_LINK_LIBRARIES "${_odbc_required_libs_paths}")
-    endif()
-  endif()
-endif()
-
-unset(_odbc_required_libs_paths)
diff --git a/share/cmake-3.18/Modules/FindOpenACC.cmake b/share/cmake-3.18/Modules/FindOpenACC.cmake
deleted file mode 100644
index 398dcf5..0000000
--- a/share/cmake-3.18/Modules/FindOpenACC.cmake
+++ /dev/null
@@ -1,284 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindOpenACC
------------
-
-Detect OpenACC support by the compiler.
-
-This module can be used to detect OpenACC support in a compiler.
-If the compiler supports OpenACC, the flags required to compile with
-OpenACC support are returned in variables for the different languages.
-Currently, only PGI, GNU and Cray compilers are supported.
-
-Variables
-^^^^^^^^^
-
-This module will set the following variables per language in your
-project, where ``<lang>`` is one of C, CXX, or Fortran:
-
-``OpenACC_<lang>_FOUND``
-  Variable indicating if OpenACC support for ``<lang>`` was detected.
-``OpenACC_<lang>_FLAGS``
-  OpenACC compiler flags for ``<lang>``, separated by spaces.
-``OpenACC_<lang>_OPTIONS``
-  OpenACC compiler flags for ``<lang>``, as a list. Suitable for usage
-  with target_compile_options or target_link_options.
-
-Additionally, the module provides :prop_tgt:`IMPORTED` targets:
-
-``OpenACC::OpenACC_<lang>``
-  Target for using OpenACC from ``<lang>``.
-
-The module will also try to provide the OpenACC version variables:
-
-``OpenACC_<lang>_SPEC_DATE``
-  Date of the OpenACC specification implemented by the ``<lang>`` compiler.
-``OpenACC_<lang>_VERSION_MAJOR``
-  Major version of OpenACC implemented by the ``<lang>`` compiler.
-``OpenACC_<lang>_VERSION_MINOR``
-  Minor version of OpenACC implemented by the ``<lang>`` compiler.
-``OpenACC_<lang>_VERSION``
-  OpenACC version implemented by the ``<lang>`` compiler.
-
-The specification date is formatted as given in the OpenACC standard:
-``yyyymm`` where ``yyyy`` and ``mm`` represents the year and month of
-the OpenACC specification implemented by the ``<lang>`` compiler.
-
-Input Variables
-^^^^^^^^^^^^^^^
-
-``OpenACC_ACCEL_TARGET=<target>``
-If set, will the correct target accelerator flag set to the <target> will
-be returned with OpenACC_<lang>_FLAGS.
-#]=======================================================================]
-
-set(OpenACC_C_CXX_TEST_SOURCE
-"
-int main(){
-#ifdef _OPENACC
-  return 0;
-#else
-  breaks_on_purpose
-#endif
-}
-"
-)
-set(OpenACC_Fortran_TEST_SOURCE
-"
-program test
-#ifndef _OPENACC
-  breaks_on_purpose
-#endif
-endprogram test
-"
-)
-set(OpenACC_C_CXX_CHECK_VERSION_SOURCE
-"
-#include <stdio.h>
-const char accver_str[] = { 'I', 'N', 'F', 'O', ':', 'O', 'p', 'e', 'n', 'A',
-                            'C', 'C', '-', 'd', 'a', 't', 'e', '[',
-                            ('0' + ((_OPENACC/100000)%10)),
-                            ('0' + ((_OPENACC/10000)%10)),
-                            ('0' + ((_OPENACC/1000)%10)),
-                            ('0' + ((_OPENACC/100)%10)),
-                            ('0' + ((_OPENACC/10)%10)),
-                            ('0' + ((_OPENACC/1)%10)),
-                            ']', '\\0' };
-int main()
-{
-  puts(accver_str);
-  return 0;
-}
-")
-set(OpenACC_Fortran_CHECK_VERSION_SOURCE
-"
-      program acc_ver
-      implicit none
-      integer, parameter :: zero = ichar('0')
-      character, dimension(25), parameter :: accver_str =&
-      (/ 'I', 'N', 'F', 'O', ':', 'O', 'p', 'e', 'n', 'A', 'C', 'C', '-',&
-         'd', 'a', 't', 'e', '[',&
-         char(zero + mod(_OPENACC/100000, 10)),&
-         char(zero + mod(_OPENACC/10000, 10)),&
-         char(zero + mod(_OPENACC/1000, 10)),&
-         char(zero + mod(_OPENACC/100, 10)),&
-         char(zero + mod(_OPENACC/10, 10)),&
-         char(zero + mod(_OPENACC/1, 10)), ']' /)
-      print *, accver_str
-      end program acc_ver
-"
-)
-
-
-function(_OPENACC_WRITE_SOURCE_FILE LANG SRC_FILE_CONTENT_VAR SRC_FILE_NAME SRC_FILE_FULLPATH)
-  set(WORK_DIR ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindOpenACC)
-  if("${LANG}" STREQUAL "C")
-    set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.c")
-    file(WRITE "${SRC_FILE}" "${OpenACC_C_CXX_${SRC_FILE_CONTENT_VAR}}")
-  elseif("${LANG}" STREQUAL "CXX")
-    set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.cpp")
-    file(WRITE "${SRC_FILE}" "${OpenACC_C_CXX_${SRC_FILE_CONTENT_VAR}}")
-  elseif("${LANG}" STREQUAL "Fortran")
-    set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.F90")
-    file(WRITE "${SRC_FILE}_in" "${OpenACC_Fortran_${SRC_FILE_CONTENT_VAR}}")
-    configure_file("${SRC_FILE}_in" "${SRC_FILE}" @ONLY)
-  endif()
-  set(${SRC_FILE_FULLPATH} "${SRC_FILE}" PARENT_SCOPE)
-endfunction()
-
-
-function(_OPENACC_GET_FLAGS_CANDIDATE LANG FLAG_VAR)
-  set(ACC_FLAG_PGI "-acc")
-  set(ACC_FLAG_GNU "-fopenacc")
-  set(ACC_FLAG_Cray "-h acc")
-
-  if(DEFINED ACC_FLAG_${CMAKE_${LANG}_COMPILER_ID})
-    set("${FLAG_VAR}" "${ACC_FLAG_${CMAKE_${LANG}_COMPILER_ID}}" PARENT_SCOPE)
-  else()
-    # Fall back to a few common flags.
-    set("${FLAG_VAR}" ${ACC_FLAG_GNU} ${ACC_FLAG_PGI})
-  endif()
-
-endfunction()
-
-
-function(_OPENACC_GET_ACCEL_TARGET_FLAG LANG TARGET FLAG_VAR)
-  # Find target accelerator flags.
-  set(ACC_TARGET_FLAG_PGI "-ta")
-  if(DEFINED ACC_TARGET_FLAG_${CMAKE_${LANG}_COMPILER_ID})
-    set("${FLAG_VAR}" "${ACC_TARGET_FLAG_${CMAKE_${LANG}_COMPILER_ID}}=${TARGET}" PARENT_SCOPE)
-  endif()
-endfunction()
-
-
-function(_OPENACC_GET_VERBOSE_FLAG LANG FLAG_VAR)
-  # Find compiler's verbose flag for OpenACC.
-  set(ACC_VERBOSE_FLAG_PGI "-Minfo=accel")
-  if(DEFINED ACC_VERBOSE_FLAG_${CMAKE_${LANG}_COMPILER_ID})
-    set("${FLAG_VAR}" "${ACC_VERBOSE_FLAG_${CMAKE_${LANG}_COMPILER_ID}}" PARENT_SCOPE)
-  endif()
-endfunction()
-
-
-function(_OPENACC_GET_FLAGS LANG FLAG_VAR)
-  set(FLAG_CANDIDATES "")
-  _OPENACC_GET_FLAGS_CANDIDATE("${LANG}" FLAG_CANDIDATES)
-  _OPENACC_WRITE_SOURCE_FILE("${LANG}" "TEST_SOURCE" OpenACCTryFlag _OPENACC_TEST_SRC)
-
-  foreach(FLAG IN LISTS FLAG_CANDIDATES)
-    try_compile(OpenACC_FLAG_TEST_RESULT ${CMAKE_BINARY_DIR} ${_OPENACC_TEST_SRC}
-      CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${FLAG}"
-      OUTPUT_VARIABLE OpenACC_TRY_COMPILE_OUTPUT
-    )
-    if(OpenACC_FLAG_TEST_RESULT)
-      set("${FLAG_VAR}" "${FLAG}")
-      if(DEFINED OpenACC_ACCEL_TARGET)
-        _OPENACC_GET_ACCEL_TARGET_FLAG("${LANG}" "${OpenACC_ACCEL_TARGET}" TARGET_FLAG)
-        string(APPEND "${FLAG_VAR}" " ${TARGET_FLAG}")
-      endif()
-
-      if(CMAKE_VERBOSE_MAKEFILE)
-        # -Minfo=accel prints out OpenACC's messages on optimizations.
-        _OPENACC_GET_VERBOSE_FLAG("${LANG}" OpenACC_VERBOSE_FLAG)
-        string(APPEND "${FLAG_VAR}" " ${OpenACC_VERBOSE_FLAG}")
-      endif()
-      set("${FLAG_VAR}" "${${FLAG_VAR}}" PARENT_SCOPE)
-      break()
-    endif()
-  endforeach()
-
-endfunction()
-
-
-function(_OPENACC_GET_SPEC_DATE LANG SPEC_DATE)
-  _OPENACC_WRITE_SOURCE_FILE("${LANG}" "CHECK_VERSION_SOURCE" OpenACCCheckVersion _OPENACC_TEST_SRC)
-
-  set(BIN_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindOpenACC/accver_${LANG}.bin")
-  try_compile(OpenACC_SPECTEST_${LANG} "${CMAKE_BINARY_DIR}" "${_OPENACC_TEST_SRC}"
-              CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OpenACC_${LANG}_FLAGS}"
-              COPY_FILE ${BIN_FILE}
-              OUTPUT_VARIABLE OUTPUT)
-
-  if(${OpenACC_SPECTEST_${LANG}})
-    file(STRINGS ${BIN_FILE} specstr LIMIT_COUNT 1 REGEX "INFO:OpenACC-date")
-    set(regex_spec_date ".*INFO:OpenACC-date\\[0*([^]]*)\\].*")
-    if("${specstr}" MATCHES "${regex_spec_date}")
-      set(${SPEC_DATE} "${CMAKE_MATCH_1}" PARENT_SCOPE)
-    endif()
-  endif()
-endfunction()
-
-
-macro(_OPENACC_SET_VERSION_BY_SPEC_DATE LANG)
-  set(OpenACC_SPEC_DATE_MAP
-    # Combined versions, 2.5 onwards
-    "201510=2.5"
-    # 2013 08 is the corrected version.
-    "201308=2.0"
-    "201306=2.0"
-    "201111=1.0"
-  )
-
-  string(REGEX MATCHALL "${OpenACC_${LANG}_SPEC_DATE}=([0-9]+)\\.([0-9]+)" _version_match "${OpenACC_SPEC_DATE_MAP}")
-  if(NOT _version_match STREQUAL "")
-    set(OpenACC_${LANG}_VERSION_MAJOR ${CMAKE_MATCH_1})
-    set(OpenACC_${LANG}_VERSION_MINOR ${CMAKE_MATCH_2})
-    set(OpenACC_${LANG}_VERSION "${OpenACC_${LANG}_VERSION_MAJOR}.${OpenACC_${LANG}_VERSION_MINOR}")
-  else()
-    unset(OpenACC_${LANG}_VERSION_MAJOR)
-    unset(OpenACC_${LANG}_VERSION_MINOR)
-    unset(OpenACC_${LANG}_VERSION)
-  endif()
-  unset(_version_match)
-  unset(OpenACC_SPEC_DATE_MAP)
-endmacro()
-
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-foreach (LANG IN ITEMS C CXX Fortran)
-  if(CMAKE_${LANG}_COMPILER_LOADED)
-    set(OpenACC_${LANG}_FIND_QUIETLY ${OpenACC_FIND_QUIETLY})
-    set(OpenACC_${LANG}_FIND_REQUIRED ${OpenACC_FIND_REQUIRED})
-    set(OpenACC_${LANG}_FIND_VERSION ${OpenACC_FIND_VERSION})
-    set(OpenACC_${LANG}_FIND_VERSION_EXACT ${OpenACC_FIND_VERSION_EXACT})
-
-    if(NOT DEFINED OpenACC_${LANG}_FLAGS)
-      _OPENACC_GET_FLAGS("${LANG}" OpenACC_${LANG}_FLAGS)
-    endif()
-    if(NOT DEFINED OpenACC_${LANG}_OPTIONS)
-      separate_arguments(OpenACC_${LANG}_OPTIONS NATIVE_COMMAND "${OpenACC_${LANG}_FLAGS}")
-    endif()
-    _OPENACC_GET_SPEC_DATE("${LANG}" OpenACC_${LANG}_SPEC_DATE)
-    _OPENACC_SET_VERSION_BY_SPEC_DATE("${LANG}")
-
-    find_package_handle_standard_args(OpenACC_${LANG}
-      NAME_MISMATCHED
-      REQUIRED_VARS OpenACC_${LANG}_FLAGS
-      VERSION_VAR OpenACC_${LANG}_VERSION
-    )
-  endif()
-endforeach()
-
-foreach (LANG IN ITEMS C CXX Fortran)
-  if(OpenACC_${LANG}_FOUND AND NOT TARGET OpenACC::OpenACC_${LANG})
-    add_library(OpenACC::OpenACC_${LANG} INTERFACE IMPORTED)
-  endif()
-  if(OpenACC_${LANG}_LIBRARIES)
-    set_property(TARGET OpenACC::OpenACC_${LANG} PROPERTY
-      INTERFACE_LINK_LIBRARIES "${OpenACC_${LANG}_LIBRARIES}")
-  endif()
-  if(OpenACC_${LANG}_FLAGS)
-    set_property(TARGET OpenACC::OpenACC_${LANG} PROPERTY
-      INTERFACE_COMPILE_OPTIONS "$<$<COMPILE_LANGUAGE:${LANG}>:${OpenACC_${LANG}_OPTIONS}>")
-    set_property(TARGET OpenACC::OpenACC_${LANG} PROPERTY
-      INTERFACE_LINK_OPTIONS "$<$<COMPILE_LANGUAGE:${LANG}>:${OpenACC_${LANG}_OPTIONS}>")
-    unset(_OpenACC_${LANG}_OPTIONS)
-  endif()
-endforeach()
-
-unset(OpenACC_C_CXX_TEST_SOURCE)
-unset(OpenACC_Fortran_TEST_SOURCE)
-unset(OpenACC_C_CXX_CHECK_VERSION_SOURCE)
-unset(OpenACC_Fortran_CHECK_VERSION_SOURCE)
diff --git a/share/cmake-3.18/Modules/FindOpenCL.cmake b/share/cmake-3.18/Modules/FindOpenCL.cmake
deleted file mode 100644
index 34a203e..0000000
--- a/share/cmake-3.18/Modules/FindOpenCL.cmake
+++ /dev/null
@@ -1,178 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindOpenCL
-----------
-
-Finds Open Computing Language (OpenCL)
-
-IMPORTED Targets
-^^^^^^^^^^^^^^^^
-
-This module defines :prop_tgt:`IMPORTED` target ``OpenCL::OpenCL``, if
-OpenCL has been found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module defines the following variables::
-
-  OpenCL_FOUND          - True if OpenCL was found
-  OpenCL_INCLUDE_DIRS   - include directories for OpenCL
-  OpenCL_LIBRARIES      - link against this library to use OpenCL
-  OpenCL_VERSION_STRING - Highest supported OpenCL version (eg. 1.2)
-  OpenCL_VERSION_MAJOR  - The major version of the OpenCL implementation
-  OpenCL_VERSION_MINOR  - The minor version of the OpenCL implementation
-
-The module will also define two cache variables::
-
-  OpenCL_INCLUDE_DIR    - the OpenCL include directory
-  OpenCL_LIBRARY        - the path to the OpenCL library
-
-#]=======================================================================]
-
-function(_FIND_OPENCL_VERSION)
-  include(CheckSymbolExists)
-  include(CMakePushCheckState)
-  set(CMAKE_REQUIRED_QUIET ${OpenCL_FIND_QUIETLY})
-
-  CMAKE_PUSH_CHECK_STATE()
-  foreach(VERSION "2_2" "2_1" "2_0" "1_2" "1_1" "1_0")
-    set(CMAKE_REQUIRED_INCLUDES "${OpenCL_INCLUDE_DIR}")
-
-    if(APPLE)
-      CHECK_SYMBOL_EXISTS(
-        CL_VERSION_${VERSION}
-        "${OpenCL_INCLUDE_DIR}/Headers/cl.h"
-        OPENCL_VERSION_${VERSION})
-    else()
-      CHECK_SYMBOL_EXISTS(
-        CL_VERSION_${VERSION}
-        "${OpenCL_INCLUDE_DIR}/CL/cl.h"
-        OPENCL_VERSION_${VERSION})
-    endif()
-
-    if(OPENCL_VERSION_${VERSION})
-      string(REPLACE "_" "." VERSION "${VERSION}")
-      set(OpenCL_VERSION_STRING ${VERSION} PARENT_SCOPE)
-      string(REGEX MATCHALL "[0-9]+" version_components "${VERSION}")
-      list(GET version_components 0 major_version)
-      list(GET version_components 1 minor_version)
-      set(OpenCL_VERSION_MAJOR ${major_version} PARENT_SCOPE)
-      set(OpenCL_VERSION_MINOR ${minor_version} PARENT_SCOPE)
-      break()
-    endif()
-  endforeach()
-  CMAKE_POP_CHECK_STATE()
-endfunction()
-
-find_path(OpenCL_INCLUDE_DIR
-  NAMES
-    CL/cl.h OpenCL/cl.h
-  PATHS
-    ENV "PROGRAMFILES(X86)"
-    ENV AMDAPPSDKROOT
-    ENV INTELOCLSDKROOT
-    ENV NVSDKCOMPUTE_ROOT
-    ENV CUDA_PATH
-    ENV ATISTREAMSDKROOT
-    ENV OCL_ROOT
-    /usr/local/cuda
-    /opt/cuda
-  PATH_SUFFIXES
-    include
-    OpenCL/common/inc
-    "AMD APP/include")
-
-_FIND_OPENCL_VERSION()
-
-if(WIN32)
-  if(CMAKE_SIZEOF_VOID_P EQUAL 4)
-    find_library(OpenCL_LIBRARY
-      NAMES OpenCL
-      PATHS
-        ENV "PROGRAMFILES(X86)"
-        ENV AMDAPPSDKROOT
-        ENV INTELOCLSDKROOT
-        ENV CUDA_PATH
-        ENV NVSDKCOMPUTE_ROOT
-        ENV ATISTREAMSDKROOT
-        ENV OCL_ROOT
-      PATH_SUFFIXES
-        "AMD APP/lib/x86"
-        lib/x86
-        lib/Win32
-        OpenCL/common/lib/Win32)
-  elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
-    find_library(OpenCL_LIBRARY
-      NAMES OpenCL
-      PATHS
-        ENV "PROGRAMFILES(X86)"
-        ENV AMDAPPSDKROOT
-        ENV INTELOCLSDKROOT
-        ENV CUDA_PATH
-        ENV NVSDKCOMPUTE_ROOT
-        ENV ATISTREAMSDKROOT
-        ENV OCL_ROOT
-      PATH_SUFFIXES
-        "AMD APP/lib/x86_64"
-        lib/x86_64
-        lib/x64
-        OpenCL/common/lib/x64)
-  endif()
-else()
-  if(CMAKE_SIZEOF_VOID_P EQUAL 4)
-    find_library(OpenCL_LIBRARY
-      NAMES OpenCL
-      PATHS
-        ENV AMDAPPSDKROOT
-        ENV CUDA_PATH
-        /usr/local/cuda
-        /opt/cuda
-      PATH_SUFFIXES
-        lib/x86
-        lib)
-  elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
-    find_library(OpenCL_LIBRARY
-      NAMES OpenCL
-      PATHS
-        ENV AMDAPPSDKROOT
-        ENV CUDA_PATH
-        /usr/local/cuda
-        /opt/cuda
-      PATH_SUFFIXES
-        lib/x86_64
-        lib/x64
-        lib
-        lib64)
-  endif()
-endif()
-
-set(OpenCL_LIBRARIES ${OpenCL_LIBRARY})
-set(OpenCL_INCLUDE_DIRS ${OpenCL_INCLUDE_DIR})
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(
-  OpenCL
-  FOUND_VAR OpenCL_FOUND
-  REQUIRED_VARS OpenCL_LIBRARY OpenCL_INCLUDE_DIR
-  VERSION_VAR OpenCL_VERSION_STRING)
-
-mark_as_advanced(
-  OpenCL_INCLUDE_DIR
-  OpenCL_LIBRARY)
-
-if(OpenCL_FOUND AND NOT TARGET OpenCL::OpenCL)
-  if(OpenCL_LIBRARY MATCHES "/([^/]+)\\.framework$")
-    add_library(OpenCL::OpenCL INTERFACE IMPORTED)
-    set_target_properties(OpenCL::OpenCL PROPERTIES
-      INTERFACE_LINK_LIBRARIES "${OpenCL_LIBRARY}")
-  else()
-    add_library(OpenCL::OpenCL UNKNOWN IMPORTED)
-    set_target_properties(OpenCL::OpenCL PROPERTIES
-      IMPORTED_LOCATION "${OpenCL_LIBRARY}")
-  endif()
-  set_target_properties(OpenCL::OpenCL PROPERTIES
-    INTERFACE_INCLUDE_DIRECTORIES "${OpenCL_INCLUDE_DIRS}")
-endif()
diff --git a/share/cmake-3.18/Modules/FindOpenGL.cmake b/share/cmake-3.18/Modules/FindOpenGL.cmake
deleted file mode 100644
index 74392da..0000000
--- a/share/cmake-3.18/Modules/FindOpenGL.cmake
+++ /dev/null
@@ -1,566 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindOpenGL
-----------
-
-FindModule for OpenGL and OpenGL Utility Library (GLU).
-
-Optional COMPONENTS
-^^^^^^^^^^^^^^^^^^^
-
-This module respects several optional COMPONENTS: ``EGL``, ``GLX``, and
-``OpenGL``.  There are corresponding import targets for each of these flags.
-
-IMPORTED Targets
-^^^^^^^^^^^^^^^^
-
-This module defines the :prop_tgt:`IMPORTED` targets:
-
-``OpenGL::GL``
- Defined to the platform-specific OpenGL libraries if the system has OpenGL.
-``OpenGL::OpenGL``
- Defined to libOpenGL if the system is GLVND-based.
-``OpenGL::GLU``
- Defined if the system has OpenGL Utility Library (GLU).
-``OpenGL::GLX``
- Defined if the system has OpenGL Extension to the X Window System (GLX).
-``OpenGL::EGL``
- Defined if the system has EGL.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module sets the following variables:
-
-``OPENGL_FOUND``
- True, if the system has OpenGL and all components are found.
-``OPENGL_XMESA_FOUND``
- True, if the system has XMESA.
-``OPENGL_GLU_FOUND``
- True, if the system has GLU.
-``OpenGL_OpenGL_FOUND``
- True, if the system has an OpenGL library.
-``OpenGL_GLX_FOUND``
- True, if the system has GLX.
-``OpenGL_EGL_FOUND``
- True, if the system has EGL.
-``OPENGL_INCLUDE_DIR``
- Path to the OpenGL include directory.
-``OPENGL_EGL_INCLUDE_DIRS``
- Path to the EGL include directory.
-``OPENGL_LIBRARIES``
- Paths to the OpenGL library, windowing system libraries, and GLU libraries.
- On Linux, this assumes GLX and is never correct for EGL-based targets.
- Clients are encouraged to use the ``OpenGL::*`` import targets instead.
-
-Cache variables
-^^^^^^^^^^^^^^^
-
-The following cache variables may also be set:
-
-``OPENGL_egl_LIBRARY``
- Path to the EGL library.
-``OPENGL_glu_LIBRARY``
- Path to the GLU library.
-``OPENGL_glx_LIBRARY``
- Path to the GLVND 'GLX' library.
-``OPENGL_opengl_LIBRARY``
- Path to the GLVND 'OpenGL' library
-``OPENGL_gl_LIBRARY``
- Path to the OpenGL library.  New code should prefer the ``OpenGL::*`` import
- targets.
-
-Linux-specific
-^^^^^^^^^^^^^^
-
-Some Linux systems utilize GLVND as a new ABI for OpenGL.  GLVND separates
-context libraries from OpenGL itself; OpenGL lives in "libOpenGL", and
-contexts are defined in "libGLX" or "libEGL".  GLVND is currently the only way
-to get OpenGL 3+ functionality via EGL in a manner portable across vendors.
-Projects may use GLVND explicitly with target ``OpenGL::OpenGL`` and either
-``OpenGL::GLX`` or ``OpenGL::EGL``.
-
-Projects may use the ``OpenGL::GL`` target (or ``OPENGL_LIBRARIES`` variable)
-to use legacy GL interfaces.  These will use the legacy GL library located
-by ``OPENGL_gl_LIBRARY``, if available.  If ``OPENGL_gl_LIBRARY`` is empty or
-not found and GLVND is available, the ``OpenGL::GL`` target will use GLVND
-``OpenGL::OpenGL`` and ``OpenGL::GLX`` (and the ``OPENGL_LIBRARIES``
-variable will use the corresponding libraries).  Thus, for non-EGL-based
-Linux targets, the ``OpenGL::GL`` target is most portable.
-
-A ``OpenGL_GL_PREFERENCE`` variable may be set to specify the preferred way
-to provide legacy GL interfaces in case multiple choices are available.
-The value may be one of:
-
-``GLVND``
- If the GLVND OpenGL and GLX libraries are available, prefer them.
- This forces ``OPENGL_gl_LIBRARY`` to be empty.
- This is the default if components were requested (since components
- correspond to GLVND libraries) or if policy :policy:`CMP0072` is
- set to ``NEW``.
-
-``LEGACY``
- Prefer to use the legacy libGL library, if available.
- This is the default if no components were requested and
- policy :policy:`CMP0072` is not set to ``NEW``.
-
-For EGL targets the client must rely on GLVND support on the user's system.
-Linking should use the ``OpenGL::OpenGL OpenGL::EGL`` targets.  Using GLES*
-libraries is theoretically possible in place of ``OpenGL::OpenGL``, but this
-module does not currently support that; contributions welcome.
-
-``OPENGL_egl_LIBRARY`` and ``OPENGL_EGL_INCLUDE_DIRS`` are defined in the case of
-GLVND.  For non-GLVND Linux and other systems these are left undefined.
-
-macOS-Specific
-^^^^^^^^^^^^^^
-
-On OSX FindOpenGL defaults to using the framework version of OpenGL. People
-will have to change the cache values of OPENGL_glu_LIBRARY and
-OPENGL_gl_LIBRARY to use OpenGL with X11 on OSX.
-#]=======================================================================]
-
-set(_OpenGL_REQUIRED_VARS OPENGL_gl_LIBRARY)
-
-# Provide OPENGL_USE_<C> variables for each component.
-foreach(component ${OpenGL_FIND_COMPONENTS})
-  string(TOUPPER ${component} _COMPONENT)
-  set(OPENGL_USE_${_COMPONENT} 1)
-endforeach()
-
-set(_OpenGL_CACHE_VARS)
-
-if (CYGWIN)
-  find_path(OPENGL_INCLUDE_DIR GL/gl.h )
-  list(APPEND _OpenGL_REQUIRED_VARS OPENGL_INCLUDE_DIR)
-
-  find_library(OPENGL_gl_LIBRARY opengl32 )
-  find_library(OPENGL_glu_LIBRARY glu32 )
-
-  list(APPEND _OpenGL_CACHE_VARS
-    OPENGL_INCLUDE_DIR
-    OPENGL_gl_LIBRARY
-    OPENGL_glu_LIBRARY
-    )
-elseif (WIN32)
-
-  if(BORLAND)
-    set (OPENGL_gl_LIBRARY import32 CACHE STRING "OpenGL library for win32")
-    set (OPENGL_glu_LIBRARY import32 CACHE STRING "GLU library for win32")
-  else()
-    set (OPENGL_gl_LIBRARY opengl32 CACHE STRING "OpenGL library for win32")
-    set (OPENGL_glu_LIBRARY glu32 CACHE STRING "GLU library for win32")
-  endif()
-
-  list(APPEND _OpenGL_CACHE_VARS
-    OPENGL_gl_LIBRARY
-    OPENGL_glu_LIBRARY
-    )
-elseif (APPLE)
-  # The OpenGL.framework provides both gl and glu
-  find_library(OPENGL_gl_LIBRARY OpenGL DOC "OpenGL library for OS X")
-  find_library(OPENGL_glu_LIBRARY OpenGL DOC
-    "GLU library for OS X (usually same as OpenGL library)")
-  find_path(OPENGL_INCLUDE_DIR OpenGL/gl.h DOC "Include for OpenGL on OS X")
-  list(APPEND _OpenGL_REQUIRED_VARS OPENGL_INCLUDE_DIR)
-
-  list(APPEND _OpenGL_CACHE_VARS
-    OPENGL_INCLUDE_DIR
-    OPENGL_gl_LIBRARY
-    OPENGL_glu_LIBRARY
-    )
-else()
-  if (CMAKE_SYSTEM_NAME MATCHES "HP-UX")
-    # Handle HP-UX cases where we only want to find OpenGL in either hpux64
-    # or hpux32 depending on if we're doing a 64 bit build.
-    if(CMAKE_SIZEOF_VOID_P EQUAL 4)
-      set(_OPENGL_LIB_PATH
-        /opt/graphics/OpenGL/lib/hpux32/)
-    else()
-      set(_OPENGL_LIB_PATH
-        /opt/graphics/OpenGL/lib/hpux64/
-        /opt/graphics/OpenGL/lib/pa20_64)
-    endif()
-  elseif(CMAKE_SYSTEM_NAME STREQUAL Haiku)
-    set(_OPENGL_LIB_PATH
-      /boot/develop/lib/x86)
-    set(_OPENGL_INCLUDE_PATH
-      /boot/develop/headers/os/opengl)
-  endif()
-
-  # The first line below is to make sure that the proper headers
-  # are used on a Linux machine with the NVidia drivers installed.
-  # They replace Mesa with NVidia's own library but normally do not
-  # install headers and that causes the linking to
-  # fail since the compiler finds the Mesa headers but NVidia's library.
-  # Make sure the NVIDIA directory comes BEFORE the others.
-  #  - Atanas Georgiev <atanas@cs.columbia.edu>
-  find_path(OPENGL_INCLUDE_DIR GL/gl.h
-    /usr/share/doc/NVIDIA_GLX-1.0/include
-    /usr/openwin/share/include
-    /opt/graphics/OpenGL/include
-    ${_OPENGL_INCLUDE_PATH}
-  )
-  find_path(OPENGL_GLX_INCLUDE_DIR GL/glx.h ${_OPENGL_INCLUDE_PATH})
-  find_path(OPENGL_EGL_INCLUDE_DIR EGL/egl.h ${_OPENGL_INCLUDE_PATH})
-  find_path(OPENGL_xmesa_INCLUDE_DIR GL/xmesa.h
-    /usr/share/doc/NVIDIA_GLX-1.0/include
-    /usr/openwin/share/include
-    /opt/graphics/OpenGL/include
-  )
-  list(APPEND _OpenGL_CACHE_VARS
-    OPENGL_INCLUDE_DIR
-    OPENGL_GLX_INCLUDE_DIR
-    OPENGL_EGL_INCLUDE_DIR
-    OPENGL_xmesa_INCLUDE_DIR
-    )
-
-  # Search for the GLVND libraries.  We do this regardless of COMPONENTS; we'll
-  # take into account the COMPONENTS logic later.
-  find_library(OPENGL_opengl_LIBRARY
-    NAMES OpenGL
-    PATHS ${_OPENGL_LIB_PATH}
-  )
-
-  find_library(OPENGL_glx_LIBRARY
-    NAMES GLX
-    PATHS ${_OPENGL_LIB_PATH}
-    PATH_SUFFIXES libglvnd
-  )
-
-  find_library(OPENGL_egl_LIBRARY
-    NAMES EGL
-    PATHS ${_OPENGL_LIB_PATH}
-    PATH_SUFFIXES libglvnd
-  )
-
-  find_library(OPENGL_glu_LIBRARY
-    NAMES GLU MesaGLU
-    PATHS ${OPENGL_gl_LIBRARY}
-          /opt/graphics/OpenGL/lib
-          /usr/openwin/lib
-          /usr/shlib
-  )
-
-  list(APPEND _OpenGL_CACHE_VARS
-    OPENGL_opengl_LIBRARY
-    OPENGL_glx_LIBRARY
-    OPENGL_egl_LIBRARY
-    OPENGL_glu_LIBRARY
-    )
-
-  set(_OpenGL_GL_POLICY_WARN 0)
-  if(NOT DEFINED OpenGL_GL_PREFERENCE)
-    set(OpenGL_GL_PREFERENCE "")
-  endif()
-  if(NOT OpenGL_GL_PREFERENCE STREQUAL "")
-    # A preference has been explicitly specified.
-    if(NOT OpenGL_GL_PREFERENCE MATCHES "^(GLVND|LEGACY)$")
-      message(FATAL_ERROR
-        "OpenGL_GL_PREFERENCE value '${OpenGL_GL_PREFERENCE}' not recognized.  "
-        "Allowed values are 'GLVND' and 'LEGACY'."
-        )
-    endif()
-  elseif(OpenGL_FIND_COMPONENTS)
-    # No preference was explicitly specified, but the caller did request
-    # at least one GLVND component.  Prefer GLVND for legacy GL.
-    set(OpenGL_GL_PREFERENCE "GLVND")
-  else()
-    # No preference was explicitly specified and no GLVND components were
-    # requested.  Use a policy to choose the default.
-    cmake_policy(GET CMP0072 _OpenGL_GL_POLICY)
-    if("x${_OpenGL_GL_POLICY}x" STREQUAL "xNEWx")
-      set(OpenGL_GL_PREFERENCE "GLVND")
-    else()
-      set(OpenGL_GL_PREFERENCE "LEGACY")
-      if("x${_OpenGL_GL_POLICY}x" STREQUAL "xx")
-        set(_OpenGL_GL_POLICY_WARN 1)
-      endif()
-    endif()
-    unset(_OpenGL_GL_POLICY)
-  endif()
-
-  if("x${OpenGL_GL_PREFERENCE}x" STREQUAL "xGLVNDx" AND OPENGL_opengl_LIBRARY AND OPENGL_glx_LIBRARY)
-    # We can provide legacy GL using GLVND libraries.
-    # Do not use any legacy GL library.
-    set(OPENGL_gl_LIBRARY "")
-  else()
-    # We cannot provide legacy GL using GLVND libraries.
-    # Search for the legacy GL library.
-    find_library(OPENGL_gl_LIBRARY
-      NAMES GL MesaGL
-      PATHS /opt/graphics/OpenGL/lib
-            /usr/openwin/lib
-            /usr/shlib
-            ${_OPENGL_LIB_PATH}
-      PATH_SUFFIXES libglvnd
-      )
-    list(APPEND _OpenGL_CACHE_VARS OPENGL_gl_LIBRARY)
-  endif()
-
-  if(_OpenGL_GL_POLICY_WARN AND OPENGL_gl_LIBRARY AND OPENGL_opengl_LIBRARY AND OPENGL_glx_LIBRARY)
-    cmake_policy(GET_WARNING CMP0072 _cmp0072_warning)
-    message(AUTHOR_WARNING
-      "${_cmp0072_warning}\n"
-      "FindOpenGL found both a legacy GL library:\n"
-      "  OPENGL_gl_LIBRARY: ${OPENGL_gl_LIBRARY}\n"
-      "and GLVND libraries for OpenGL and GLX:\n"
-      "  OPENGL_opengl_LIBRARY: ${OPENGL_opengl_LIBRARY}\n"
-      "  OPENGL_glx_LIBRARY: ${OPENGL_glx_LIBRARY}\n"
-      "OpenGL_GL_PREFERENCE has not been set to \"GLVND\" or \"LEGACY\", so for "
-      "compatibility with CMake 3.10 and below the legacy GL library will be used."
-      )
-  endif()
-  unset(_OpenGL_GL_POLICY_WARN)
-
-  # FPHSA cannot handle "this OR that is required", so we conditionally set what
-  # it must look for.  First clear any previous config we might have done:
-  set(_OpenGL_REQUIRED_VARS)
-
-  # now we append the libraries as appropriate.  The complicated logic
-  # basically comes down to "use libOpenGL when we can, and add in specific
-  # context mechanisms when requested, or we need them to preserve the previous
-  # default where glx is always available."
-  if((NOT OPENGL_USE_EGL AND
-      NOT OPENGL_opengl_LIBRARY AND
-          OPENGL_glx_LIBRARY AND
-      NOT OPENGL_gl_LIBRARY) OR
-     (NOT OPENGL_USE_EGL AND
-      NOT OPENGL_glx_LIBRARY AND
-      NOT OPENGL_gl_LIBRARY) OR
-     (NOT OPENGL_USE_EGL AND
-          OPENGL_opengl_LIBRARY AND
-          OPENGL_glx_LIBRARY) OR
-     (    OPENGL_USE_EGL))
-    list(APPEND _OpenGL_REQUIRED_VARS OPENGL_opengl_LIBRARY)
-  endif()
-
-  # GLVND GLX library.  Preferred when available.
-  if((NOT OPENGL_USE_OPENGL AND
-      NOT OPENGL_USE_GLX AND
-      NOT OPENGL_USE_EGL AND
-      NOT OPENGL_glx_LIBRARY AND
-      NOT OPENGL_gl_LIBRARY) OR
-     (    OPENGL_USE_GLX AND
-      NOT OPENGL_USE_EGL AND
-      NOT OPENGL_glx_LIBRARY AND
-      NOT OPENGL_gl_LIBRARY) OR
-     (NOT OPENGL_USE_EGL AND
-          OPENGL_opengl_LIBRARY AND
-          OPENGL_glx_LIBRARY) OR
-     (OPENGL_USE_GLX AND OPENGL_USE_EGL))
-    list(APPEND _OpenGL_REQUIRED_VARS OPENGL_glx_LIBRARY)
-  endif()
-
-  # GLVND EGL library.
-  if(OPENGL_USE_EGL)
-    list(APPEND _OpenGL_REQUIRED_VARS OPENGL_egl_LIBRARY)
-  endif()
-
-  # Old-style "libGL" library: used as a fallback when GLVND isn't available.
-  if((NOT OPENGL_USE_EGL AND
-      NOT OPENGL_opengl_LIBRARY AND
-          OPENGL_glx_LIBRARY AND
-          OPENGL_gl_LIBRARY) OR
-     (NOT OPENGL_USE_EGL AND
-      NOT OPENGL_glx_LIBRARY AND
-          OPENGL_gl_LIBRARY))
-    list(APPEND _OpenGL_REQUIRED_VARS OPENGL_gl_LIBRARY)
-  endif()
-
-  # We always need the 'gl.h' include dir.
-  list(APPEND _OpenGL_REQUIRED_VARS OPENGL_INCLUDE_DIR)
-
-  unset(_OPENGL_INCLUDE_PATH)
-  unset(_OPENGL_LIB_PATH)
-
-  find_library(OPENGL_glu_LIBRARY
-    NAMES GLU MesaGLU
-    PATHS ${OPENGL_gl_LIBRARY}
-          /opt/graphics/OpenGL/lib
-          /usr/openwin/lib
-          /usr/shlib
-  )
-endif ()
-
-if(OPENGL_xmesa_INCLUDE_DIR)
-  set( OPENGL_XMESA_FOUND "YES" )
-else()
-  set( OPENGL_XMESA_FOUND "NO" )
-endif()
-
-if(OPENGL_glu_LIBRARY)
-  set( OPENGL_GLU_FOUND "YES" )
-else()
-  set( OPENGL_GLU_FOUND "NO" )
-endif()
-
-# OpenGL_OpenGL_FOUND is a bit unique in that it is okay if /either/ libOpenGL
-# or libGL is found.
-# Using libGL with libEGL is never okay, though; we handle that case later.
-if(NOT OPENGL_opengl_LIBRARY AND NOT OPENGL_gl_LIBRARY)
-  set(OpenGL_OpenGL_FOUND FALSE)
-else()
-  set(OpenGL_OpenGL_FOUND TRUE)
-endif()
-
-if(OPENGL_glx_LIBRARY AND OPENGL_GLX_INCLUDE_DIR)
-  set(OpenGL_GLX_FOUND TRUE)
-else()
-  set(OpenGL_GLX_FOUND FALSE)
-endif()
-
-if(OPENGL_egl_LIBRARY AND OPENGL_EGL_INCLUDE_DIR)
-  set(OpenGL_EGL_FOUND TRUE)
-else()
-  set(OpenGL_EGL_FOUND FALSE)
-endif()
-
-# User-visible names should be plural.
-if(OPENGL_EGL_INCLUDE_DIR)
-  set(OPENGL_EGL_INCLUDE_DIRS ${OPENGL_EGL_INCLUDE_DIR})
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenGL REQUIRED_VARS ${_OpenGL_REQUIRED_VARS}
-                                  HANDLE_COMPONENTS)
-unset(_OpenGL_REQUIRED_VARS)
-
-# OpenGL:: targets
-if(OPENGL_FOUND)
-  # ::OpenGL is a GLVND library, and thus Linux-only: we don't bother checking
-  # for a framework version of this library.
-  if(OPENGL_opengl_LIBRARY AND NOT TARGET OpenGL::OpenGL)
-    if(IS_ABSOLUTE "${OPENGL_opengl_LIBRARY}")
-      add_library(OpenGL::OpenGL UNKNOWN IMPORTED)
-      set_target_properties(OpenGL::OpenGL PROPERTIES IMPORTED_LOCATION
-                            "${OPENGL_opengl_LIBRARY}")
-    else()
-      add_library(OpenGL::OpenGL INTERFACE IMPORTED)
-      set_target_properties(OpenGL::OpenGL PROPERTIES IMPORTED_LIBNAME
-                            "${OPENGL_opengl_LIBRARY}")
-    endif()
-    set_target_properties(OpenGL::OpenGL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
-                          "${OPENGL_INCLUDE_DIR}")
-  endif()
-
-  # ::GLX is a GLVND library, and thus Linux-only: we don't bother checking
-  # for a framework version of this library.
-  if(OpenGL_GLX_FOUND AND NOT TARGET OpenGL::GLX)
-    if(IS_ABSOLUTE "${OPENGL_glx_LIBRARY}")
-      add_library(OpenGL::GLX UNKNOWN IMPORTED)
-      set_target_properties(OpenGL::GLX PROPERTIES IMPORTED_LOCATION
-                            "${OPENGL_glx_LIBRARY}")
-    else()
-      add_library(OpenGL::GLX INTERFACE IMPORTED)
-      set_target_properties(OpenGL::GLX PROPERTIES IMPORTED_LIBNAME
-                            "${OPENGL_glx_LIBRARY}")
-    endif()
-    set_target_properties(OpenGL::GLX PROPERTIES INTERFACE_LINK_LIBRARIES
-                          OpenGL::OpenGL)
-    set_target_properties(OpenGL::GLX PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
-                          "${OPENGL_GLX_INCLUDE_DIR}")
-  endif()
-
-  if(OPENGL_gl_LIBRARY AND NOT TARGET OpenGL::GL)
-    # A legacy GL library is available, so use it for the legacy GL target.
-    if(IS_ABSOLUTE "${OPENGL_gl_LIBRARY}")
-      add_library(OpenGL::GL UNKNOWN IMPORTED)
-      if(OPENGL_gl_LIBRARY MATCHES "/([^/]+)\\.framework$")
-        set(_gl_fw "${OPENGL_gl_LIBRARY}/${CMAKE_MATCH_1}")
-        if(EXISTS "${_gl_fw}.tbd")
-          string(APPEND _gl_fw ".tbd")
-        endif()
-        set_target_properties(OpenGL::GL PROPERTIES
-          IMPORTED_LOCATION "${_gl_fw}")
-      else()
-        set_target_properties(OpenGL::GL PROPERTIES
-          IMPORTED_LOCATION "${OPENGL_gl_LIBRARY}")
-      endif()
-    else()
-      add_library(OpenGL::GL INTERFACE IMPORTED)
-      set_target_properties(OpenGL::GL PROPERTIES
-        IMPORTED_LIBNAME "${OPENGL_gl_LIBRARY}")
-    endif()
-    set_target_properties(OpenGL::GL PROPERTIES
-      INTERFACE_INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}")
-  elseif(NOT TARGET OpenGL::GL AND TARGET OpenGL::OpenGL AND TARGET OpenGL::GLX)
-    # A legacy GL library is not available, but we can provide the legacy GL
-    # target using GLVND OpenGL+GLX.
-    add_library(OpenGL::GL INTERFACE IMPORTED)
-    set_target_properties(OpenGL::GL PROPERTIES INTERFACE_LINK_LIBRARIES
-                          OpenGL::OpenGL)
-    set_property(TARGET OpenGL::GL APPEND PROPERTY INTERFACE_LINK_LIBRARIES
-                 OpenGL::GLX)
-    set_target_properties(OpenGL::GL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
-                          "${OPENGL_INCLUDE_DIR}")
-  endif()
-
-  # ::EGL is a GLVND library, and thus Linux-only: we don't bother checking
-  # for a framework version of this library.
-  # Note we test for OpenGL::OpenGL as a target.  When this module is updated to
-  # support GLES, we would additionally want to check for the hypothetical GLES
-  # target and enable EGL if either ::GLES or ::OpenGL is created.
-  if(TARGET OpenGL::OpenGL AND OpenGL_EGL_FOUND AND NOT TARGET OpenGL::EGL)
-    if(IS_ABSOLUTE "${OPENGL_egl_LIBRARY}")
-      add_library(OpenGL::EGL UNKNOWN IMPORTED)
-      set_target_properties(OpenGL::EGL PROPERTIES IMPORTED_LOCATION
-                            "${OPENGL_egl_LIBRARY}")
-    else()
-      add_library(OpenGL::EGL INTERFACE IMPORTED)
-      set_target_properties(OpenGL::EGL PROPERTIES IMPORTED_LIBNAME
-                            "${OPENGL_egl_LIBRARY}")
-    endif()
-    set_target_properties(OpenGL::EGL PROPERTIES INTERFACE_LINK_LIBRARIES
-                          OpenGL::OpenGL)
-    # Note that EGL's include directory is different from OpenGL/GLX's!
-    set_target_properties(OpenGL::EGL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
-                          "${OPENGL_EGL_INCLUDE_DIR}")
-  endif()
-
-  if(OPENGL_GLU_FOUND AND NOT TARGET OpenGL::GLU)
-    if(IS_ABSOLUTE "${OPENGL_glu_LIBRARY}")
-      add_library(OpenGL::GLU UNKNOWN IMPORTED)
-      if(OPENGL_glu_LIBRARY MATCHES "/([^/]+)\\.framework$")
-        set(_glu_fw "${OPENGL_glu_LIBRARY}/${CMAKE_MATCH_1}")
-        if(EXISTS "${_glu_fw}.tbd")
-          string(APPEND _glu_fw ".tbd")
-        endif()
-        set_target_properties(OpenGL::GLU PROPERTIES
-          IMPORTED_LOCATION "${_glu_fw}")
-      else()
-        set_target_properties(OpenGL::GLU PROPERTIES
-          IMPORTED_LOCATION "${OPENGL_glu_LIBRARY}")
-      endif()
-    else()
-      add_library(OpenGL::GLU INTERFACE IMPORTED)
-      set_target_properties(OpenGL::GLU PROPERTIES
-        IMPORTED_LIBNAME "${OPENGL_glu_LIBRARY}")
-    endif()
-    set_target_properties(OpenGL::GLU PROPERTIES
-      INTERFACE_LINK_LIBRARIES OpenGL::GL)
-  endif()
-
-  # OPENGL_LIBRARIES mirrors OpenGL::GL's logic ...
-  if(OPENGL_gl_LIBRARY)
-    set(OPENGL_LIBRARIES ${OPENGL_gl_LIBRARY})
-  elseif(TARGET OpenGL::OpenGL AND TARGET OpenGL::GLX)
-    set(OPENGL_LIBRARIES ${OPENGL_opengl_LIBRARY} ${OPENGL_glx_LIBRARY})
-  else()
-    set(OPENGL_LIBRARIES "")
-  endif()
-  # ... and also includes GLU, if available.
-  if(TARGET OpenGL::GLU)
-    list(APPEND OPENGL_LIBRARIES ${OPENGL_glu_LIBRARY})
-  endif()
-endif()
-
-# This deprecated setting is for backward compatibility with CMake1.4
-set(OPENGL_LIBRARY ${OPENGL_LIBRARIES})
-# This deprecated setting is for backward compatibility with CMake1.4
-set(OPENGL_INCLUDE_PATH ${OPENGL_INCLUDE_DIR})
-
-mark_as_advanced(${_OpenGL_CACHE_VARS})
-unset(_OpenGL_CACHE_VARS)
diff --git a/share/cmake-3.18/Modules/FindOpenMP.cmake b/share/cmake-3.18/Modules/FindOpenMP.cmake
deleted file mode 100644
index bb38e28..0000000
--- a/share/cmake-3.18/Modules/FindOpenMP.cmake
+++ /dev/null
@@ -1,605 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindOpenMP
-----------
-
-Finds Open Multi-Processing (OpenMP) support.
-
-This module can be used to detect OpenMP support in a compiler.  If
-the compiler supports OpenMP, the flags required to compile with
-OpenMP support are returned in variables for the different languages.
-The variables may be empty if the compiler does not need a special
-flag to support OpenMP.
-
-Variables
-^^^^^^^^^
-
-The module exposes the components ``C``, ``CXX``, and ``Fortran``.
-Each of these controls the various languages to search OpenMP support for.
-
-Depending on the enabled components the following variables will be set:
-
-``OpenMP_FOUND``
-  Variable indicating that OpenMP flags for all requested languages have been found.
-  If no components are specified, this is true if OpenMP settings for all enabled languages
-  were detected.
-``OpenMP_VERSION``
-  Minimal version of the OpenMP standard detected among the requested languages,
-  or all enabled languages if no components were specified.
-
-This module will set the following variables per language in your
-project, where ``<lang>`` is one of C, CXX, or Fortran:
-
-``OpenMP_<lang>_FOUND``
-  Variable indicating if OpenMP support for ``<lang>`` was detected.
-``OpenMP_<lang>_FLAGS``
-  OpenMP compiler flags for ``<lang>``, separated by spaces.
-``OpenMP_<lang>_INCLUDE_DIRS``
-  Directories that must be added to the header search path for ``<lang>``
-  when using OpenMP.
-
-For linking with OpenMP code written in ``<lang>``, the following
-variables are provided:
-
-``OpenMP_<lang>_LIB_NAMES``
-  :ref:`;-list <CMake Language Lists>` of libraries for OpenMP programs for ``<lang>``.
-``OpenMP_<libname>_LIBRARY``
-  Location of the individual libraries needed for OpenMP support in ``<lang>``.
-``OpenMP_<lang>_LIBRARIES``
-  A list of libraries needed to link with OpenMP code written in ``<lang>``.
-
-Additionally, the module provides :prop_tgt:`IMPORTED` targets:
-
-``OpenMP::OpenMP_<lang>``
-  Target for using OpenMP from ``<lang>``.
-
-Specifically for Fortran, the module sets the following variables:
-
-``OpenMP_Fortran_HAVE_OMPLIB_HEADER``
-  Boolean indicating if OpenMP is accessible through ``omp_lib.h``.
-``OpenMP_Fortran_HAVE_OMPLIB_MODULE``
-  Boolean indicating if OpenMP is accessible through the ``omp_lib`` Fortran module.
-
-The module will also try to provide the OpenMP version variables:
-
-``OpenMP_<lang>_SPEC_DATE``
-  Date of the OpenMP specification implemented by the ``<lang>`` compiler.
-``OpenMP_<lang>_VERSION_MAJOR``
-  Major version of OpenMP implemented by the ``<lang>`` compiler.
-``OpenMP_<lang>_VERSION_MINOR``
-  Minor version of OpenMP implemented by the ``<lang>`` compiler.
-``OpenMP_<lang>_VERSION``
-  OpenMP version implemented by the ``<lang>`` compiler.
-
-The specification date is formatted as given in the OpenMP standard:
-``yyyymm`` where ``yyyy`` and ``mm`` represents the year and month of
-the OpenMP specification implemented by the ``<lang>`` compiler.
-
-For some compilers, it may be necessary to add a header search path to find
-the relevant OpenMP headers.  This location may be language-specific.  Where
-this is needed, the module may attempt to find the location, but it can be
-provided directly by setting the ``OpenMP_<lang>_INCLUDE_DIR`` cache variable.
-Note that this variable is an _input_ control to the module.  Project code
-should use the ``OpenMP_<lang>_INCLUDE_DIRS`` _output_ variable if it needs
-to know what include directories are needed.
-#]=======================================================================]
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0012 NEW) # if() recognizes numbers and booleans
-cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced
-cmake_policy(SET CMP0057 NEW) # if IN_LIST
-
-function(_OPENMP_FLAG_CANDIDATES LANG)
-  if(NOT OpenMP_${LANG}_FLAG)
-    unset(OpenMP_FLAG_CANDIDATES)
-
-    set(OMP_FLAG_GNU "-fopenmp")
-    set(OMP_FLAG_Clang "-fopenmp=libomp" "-fopenmp=libiomp5" "-fopenmp" "-Xclang -fopenmp")
-    set(OMP_FLAG_AppleClang "-Xclang -fopenmp")
-    set(OMP_FLAG_HP "+Oopenmp")
-    if(WIN32)
-      set(OMP_FLAG_Intel "-Qopenmp")
-    elseif(CMAKE_${LANG}_COMPILER_ID STREQUAL "Intel" AND
-           "${CMAKE_${LANG}_COMPILER_VERSION}" VERSION_LESS "15.0.0.20140528")
-      set(OMP_FLAG_Intel "-openmp")
-    else()
-      set(OMP_FLAG_Intel "-qopenmp")
-    endif()
-    set(OMP_FLAG_MSVC "-openmp")
-    set(OMP_FLAG_PathScale "-openmp")
-    set(OMP_FLAG_NAG "-openmp")
-    set(OMP_FLAG_Absoft "-openmp")
-    set(OMP_FLAG_PGI "-mp")
-    set(OMP_FLAG_Flang "-fopenmp")
-    set(OMP_FLAG_SunPro "-xopenmp")
-    set(OMP_FLAG_XL "-qsmp=omp")
-    # Cray compiler activate OpenMP with -h omp, which is enabled by default.
-    set(OMP_FLAG_Cray " " "-h omp")
-
-    # If we know the correct flags, use those
-    if(DEFINED OMP_FLAG_${CMAKE_${LANG}_COMPILER_ID})
-      set(OpenMP_FLAG_CANDIDATES "${OMP_FLAG_${CMAKE_${LANG}_COMPILER_ID}}")
-    # Fall back to reasonable default tries otherwise
-    else()
-      set(OpenMP_FLAG_CANDIDATES "-openmp" "-fopenmp" "-mp" " ")
-    endif()
-    set(OpenMP_${LANG}_FLAG_CANDIDATES "${OpenMP_FLAG_CANDIDATES}" PARENT_SCOPE)
-  else()
-    set(OpenMP_${LANG}_FLAG_CANDIDATES "${OpenMP_${LANG}_FLAG}" PARENT_SCOPE)
-  endif()
-endfunction()
-
-# sample openmp source code to test
-set(OpenMP_C_CXX_TEST_SOURCE
-"
-#include <omp.h>
-int main(void) {
-#ifdef _OPENMP
-  omp_get_max_threads();
-  return 0;
-#elif defined(__HIP_DEVICE_COMPILE__)
-  return 0;
-#else
-  breaks_on_purpose
-#endif
-}
-")
-
-# in Fortran, an implementation may provide an omp_lib.h header
-# or omp_lib module, or both (OpenMP standard, section 3.1)
-# Furthmore !$ is the Fortran equivalent of #ifdef _OPENMP (OpenMP standard, 2.2.2)
-# Without the conditional compilation, some compilers (e.g. PGI) might compile OpenMP code
-# while not actually enabling OpenMP, building code sequentially
-set(OpenMP_Fortran_TEST_SOURCE
-  "
-      program test
-      @OpenMP_Fortran_INCLUDE_LINE@
-  !$  integer :: n
-      n = omp_get_num_threads()
-      end program test
-  "
-)
-
-function(_OPENMP_WRITE_SOURCE_FILE LANG SRC_FILE_CONTENT_VAR SRC_FILE_NAME SRC_FILE_FULLPATH)
-  set(WORK_DIR ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindOpenMP)
-  if("${LANG}" STREQUAL "C")
-    set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.c")
-    file(WRITE "${SRC_FILE}" "${OpenMP_C_CXX_${SRC_FILE_CONTENT_VAR}}")
-  elseif("${LANG}" STREQUAL "CXX")
-    set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.cpp")
-    file(WRITE "${SRC_FILE}" "${OpenMP_C_CXX_${SRC_FILE_CONTENT_VAR}}")
-  elseif("${LANG}" STREQUAL "Fortran")
-    set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.f90")
-    file(WRITE "${SRC_FILE}_in" "${OpenMP_Fortran_${SRC_FILE_CONTENT_VAR}}")
-    configure_file("${SRC_FILE}_in" "${SRC_FILE}" @ONLY)
-  endif()
-  set(${SRC_FILE_FULLPATH} "${SRC_FILE}" PARENT_SCOPE)
-endfunction()
-
-include(${CMAKE_CURRENT_LIST_DIR}/CMakeParseImplicitLinkInfo.cmake)
-
-function(_OPENMP_GET_FLAGS LANG FLAG_MODE OPENMP_FLAG_VAR OPENMP_LIB_NAMES_VAR)
-  _OPENMP_FLAG_CANDIDATES("${LANG}")
-  _OPENMP_WRITE_SOURCE_FILE("${LANG}" "TEST_SOURCE" OpenMPTryFlag _OPENMP_TEST_SRC)
-
-  unset(OpenMP_VERBOSE_COMPILE_OPTIONS)
-  separate_arguments(OpenMP_VERBOSE_OPTIONS NATIVE_COMMAND "${CMAKE_${LANG}_VERBOSE_FLAG}")
-  foreach(_VERBOSE_OPTION IN LISTS OpenMP_VERBOSE_OPTIONS)
-    if(NOT _VERBOSE_OPTION MATCHES "^-Wl,")
-      list(APPEND OpenMP_VERBOSE_COMPILE_OPTIONS ${_VERBOSE_OPTION})
-    endif()
-  endforeach()
-
-  foreach(OPENMP_FLAG IN LISTS OpenMP_${LANG}_FLAG_CANDIDATES)
-    set(OPENMP_FLAGS_TEST "${OPENMP_FLAG}")
-    if(OpenMP_VERBOSE_COMPILE_OPTIONS)
-      string(APPEND OPENMP_FLAGS_TEST " ${OpenMP_VERBOSE_COMPILE_OPTIONS}")
-    endif()
-    string(REGEX REPLACE "[-/=+]" "" OPENMP_PLAIN_FLAG "${OPENMP_FLAG}")
-    try_compile( OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG} ${CMAKE_BINARY_DIR} ${_OPENMP_TEST_SRC}
-      CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OPENMP_FLAGS_TEST}"
-      LINK_LIBRARIES ${CMAKE_${LANG}_VERBOSE_FLAG}
-      OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT
-    )
-
-    if(OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG})
-      set("${OPENMP_FLAG_VAR}" "${OPENMP_FLAG}" PARENT_SCOPE)
-
-      if(CMAKE_${LANG}_VERBOSE_FLAG)
-        unset(OpenMP_${LANG}_IMPLICIT_LIBRARIES)
-        unset(OpenMP_${LANG}_IMPLICIT_LINK_DIRS)
-        unset(OpenMP_${LANG}_IMPLICIT_FWK_DIRS)
-        unset(OpenMP_${LANG}_LOG_VAR)
-
-        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Detecting ${LANG} OpenMP compiler ABI info compiled with the following output:\n${OpenMP_TRY_COMPILE_OUTPUT}\n\n")
-
-        cmake_parse_implicit_link_info("${OpenMP_TRY_COMPILE_OUTPUT}"
-          OpenMP_${LANG}_IMPLICIT_LIBRARIES
-          OpenMP_${LANG}_IMPLICIT_LINK_DIRS
-          OpenMP_${LANG}_IMPLICIT_FWK_DIRS
-          OpenMP_${LANG}_LOG_VAR
-          "${CMAKE_${LANG}_IMPLICIT_OBJECT_REGEX}"
-        )
-
-        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Parsed ${LANG} OpenMP implicit link information from above output:\n${OpenMP_${LANG}_LOG_VAR}\n\n")
-
-        unset(_OPENMP_LIB_NAMES)
-        foreach(_OPENMP_IMPLICIT_LIB IN LISTS OpenMP_${LANG}_IMPLICIT_LIBRARIES)
-          get_filename_component(_OPENMP_IMPLICIT_LIB_DIR "${_OPENMP_IMPLICIT_LIB}" DIRECTORY)
-          get_filename_component(_OPENMP_IMPLICIT_LIB_NAME "${_OPENMP_IMPLICIT_LIB}" NAME)
-          get_filename_component(_OPENMP_IMPLICIT_LIB_PLAIN "${_OPENMP_IMPLICIT_LIB}" NAME_WE)
-          string(REGEX REPLACE "([][+.*?()^$])" "\\\\\\1" _OPENMP_IMPLICIT_LIB_PLAIN_ESC "${_OPENMP_IMPLICIT_LIB_PLAIN}")
-          string(REGEX REPLACE "([][+.*?()^$])" "\\\\\\1" _OPENMP_IMPLICIT_LIB_PATH_ESC "${_OPENMP_IMPLICIT_LIB}")
-          if(NOT ( "${_OPENMP_IMPLICIT_LIB}" IN_LIST CMAKE_${LANG}_IMPLICIT_LINK_LIBRARIES
-            OR "${CMAKE_${LANG}_STANDARD_LIBRARIES}" MATCHES "(^| )(-Wl,)?(-l)?(${_OPENMP_IMPLICIT_LIB_PLAIN_ESC}|${_OPENMP_IMPLICIT_LIB_PATH_ESC})( |$)"
-            OR "${CMAKE_${LANG}_LINK_EXECUTABLE}" MATCHES "(^| )(-Wl,)?(-l)?(${_OPENMP_IMPLICIT_LIB_PLAIN_ESC}|${_OPENMP_IMPLICIT_LIB_PATH_ESC})( |$)" ) )
-            if(_OPENMP_IMPLICIT_LIB_DIR)
-              set(OpenMP_${_OPENMP_IMPLICIT_LIB_PLAIN}_LIBRARY "${_OPENMP_IMPLICIT_LIB}" CACHE FILEPATH
-                "Path to the ${_OPENMP_IMPLICIT_LIB_PLAIN} library for OpenMP")
-            else()
-              find_library(OpenMP_${_OPENMP_IMPLICIT_LIB_PLAIN}_LIBRARY
-                NAMES "${_OPENMP_IMPLICIT_LIB_NAME}"
-                DOC "Path to the ${_OPENMP_IMPLICIT_LIB_PLAIN} library for OpenMP"
-                HINTS ${OpenMP_${LANG}_IMPLICIT_LINK_DIRS}
-                CMAKE_FIND_ROOT_PATH_BOTH
-                NO_DEFAULT_PATH
-              )
-            endif()
-            mark_as_advanced(OpenMP_${_OPENMP_IMPLICIT_LIB_PLAIN}_LIBRARY)
-            list(APPEND _OPENMP_LIB_NAMES ${_OPENMP_IMPLICIT_LIB_PLAIN})
-          endif()
-        endforeach()
-        set("${OPENMP_LIB_NAMES_VAR}" "${_OPENMP_LIB_NAMES}" PARENT_SCOPE)
-      else()
-        # We do not know how to extract implicit OpenMP libraries for this compiler.
-        # Assume that it handles them automatically, e.g. the Intel Compiler on
-        # Windows should put the dependency in its object files.
-        set("${OPENMP_LIB_NAMES_VAR}" "" PARENT_SCOPE)
-      endif()
-      break()
-    elseif(CMAKE_${LANG}_COMPILER_ID STREQUAL "AppleClang"
-      AND CMAKE_${LANG}_COMPILER_VERSION VERSION_GREATER_EQUAL "7.0")
-
-      # Check for separate OpenMP library on AppleClang 7+
-      find_library(OpenMP_libomp_LIBRARY
-        NAMES omp gomp iomp5
-        HINTS ${CMAKE_${LANG}_IMPLICIT_LINK_DIRECTORIES}
-      )
-      mark_as_advanced(OpenMP_libomp_LIBRARY)
-
-      if(OpenMP_libomp_LIBRARY)
-        # Try without specifying include directory first. We only want to
-        # explicitly add a search path if the header can't be found on the
-        # default header search path already.
-        try_compile( OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG} ${CMAKE_BINARY_DIR} ${_OPENMP_TEST_SRC}
-          CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OPENMP_FLAGS_TEST}"
-          LINK_LIBRARIES ${CMAKE_${LANG}_VERBOSE_FLAG} ${OpenMP_libomp_LIBRARY}
-          OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT
-        )
-        if(NOT OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG})
-          find_path(OpenMP_${LANG}_INCLUDE_DIR omp.h)
-          mark_as_advanced(OpenMP_${LANG}_INCLUDE_DIR)
-          set(OpenMP_${LANG}_INCLUDE_DIR "${OpenMP_${LANG}_INCLUDE_DIR}" PARENT_SCOPE)
-          if(OpenMP_${LANG}_INCLUDE_DIR)
-            try_compile( OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG} ${CMAKE_BINARY_DIR} ${_OPENMP_TEST_SRC}
-              CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OPENMP_FLAGS_TEST}"
-                          "-DINCLUDE_DIRECTORIES:STRING=${OpenMP_${LANG}_INCLUDE_DIR}"
-              LINK_LIBRARIES ${CMAKE_${LANG}_VERBOSE_FLAG} ${OpenMP_libomp_LIBRARY}
-              OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT
-            )
-          endif()
-        endif()
-        if(OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG})
-          set("${OPENMP_FLAG_VAR}" "${OPENMP_FLAG}" PARENT_SCOPE)
-          set("${OPENMP_LIB_NAMES_VAR}" "libomp" PARENT_SCOPE)
-          break()
-        endif()
-      endif()
-    elseif(CMAKE_${LANG}_COMPILER_ID STREQUAL "Clang" AND WIN32)
-      # Check for separate OpenMP library for Clang on Windows
-      find_library(OpenMP_libomp_LIBRARY
-        NAMES libomp libgomp libiomp5
-        HINTS ${CMAKE_${LANG}_IMPLICIT_LINK_DIRECTORIES}
-      )
-      mark_as_advanced(OpenMP_libomp_LIBRARY)
-      if(OpenMP_libomp_LIBRARY)
-        try_compile( OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG} ${CMAKE_BINARY_DIR} ${_OPENMP_TEST_SRC}
-          CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OPENMP_FLAGS_TEST}"
-          LINK_LIBRARIES ${CMAKE_${LANG}_VERBOSE_FLAG} ${OpenMP_libomp_LIBRARY}
-          OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT
-        )
-        if(OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG})
-          set("${OPENMP_FLAG_VAR}" "${OPENMP_FLAG}" PARENT_SCOPE)
-          set("${OPENMP_LIB_NAMES_VAR}" "libomp" PARENT_SCOPE)
-          break()
-        endif()
-      endif()
-    else()
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Detecting ${LANG} OpenMP failed with the following output:\n${OpenMP_TRY_COMPILE_OUTPUT}\n\n")
-    endif()
-    set("${OPENMP_LIB_NAMES_VAR}" "NOTFOUND" PARENT_SCOPE)
-    set("${OPENMP_FLAG_VAR}" "NOTFOUND" PARENT_SCOPE)
-  endforeach()
-
-  unset(OpenMP_VERBOSE_COMPILE_OPTIONS)
-endfunction()
-
-set(OpenMP_C_CXX_CHECK_VERSION_SOURCE
-"
-#include <stdio.h>
-#include <omp.h>
-const char ompver_str[] = { 'I', 'N', 'F', 'O', ':', 'O', 'p', 'e', 'n', 'M',
-                            'P', '-', 'd', 'a', 't', 'e', '[',
-                            ('0' + ((_OPENMP/100000)%10)),
-                            ('0' + ((_OPENMP/10000)%10)),
-                            ('0' + ((_OPENMP/1000)%10)),
-                            ('0' + ((_OPENMP/100)%10)),
-                            ('0' + ((_OPENMP/10)%10)),
-                            ('0' + ((_OPENMP/1)%10)),
-                            ']', '\\0' };
-int main(void)
-{
-  puts(ompver_str);
-  return 0;
-}
-")
-
-set(OpenMP_Fortran_CHECK_VERSION_SOURCE
-"
-      program omp_ver
-      @OpenMP_Fortran_INCLUDE_LINE@
-      integer, parameter :: zero = ichar('0')
-      integer, parameter :: ompv = openmp_version
-      character, dimension(24), parameter :: ompver_str =&
-      (/ 'I', 'N', 'F', 'O', ':', 'O', 'p', 'e', 'n', 'M', 'P', '-',&
-         'd', 'a', 't', 'e', '[',&
-         char(zero + mod(ompv/100000, 10)),&
-         char(zero + mod(ompv/10000, 10)),&
-         char(zero + mod(ompv/1000, 10)),&
-         char(zero + mod(ompv/100, 10)),&
-         char(zero + mod(ompv/10, 10)),&
-         char(zero + mod(ompv/1, 10)), ']' /)
-      print *, ompver_str
-      end program omp_ver
-")
-
-function(_OPENMP_GET_SPEC_DATE LANG SPEC_DATE)
-  _OPENMP_WRITE_SOURCE_FILE("${LANG}" "CHECK_VERSION_SOURCE" OpenMPCheckVersion _OPENMP_TEST_SRC)
-
-  unset(_includeDirFlags)
-  if(OpenMP_${LANG}_INCLUDE_DIR)
-    set(_includeDirFlags "-DINCLUDE_DIRECTORIES:STRING=${OpenMP_${LANG}_INCLUDE_DIR}")
-  endif()
-
-  set(BIN_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindOpenMP/ompver_${LANG}.bin")
-  string(REGEX REPLACE "[-/=+]" "" OPENMP_PLAIN_FLAG "${OPENMP_FLAG}")
-  try_compile(OpenMP_SPECTEST_${LANG}_${OPENMP_PLAIN_FLAG} "${CMAKE_BINARY_DIR}" "${_OPENMP_TEST_SRC}"
-              CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OpenMP_${LANG}_FLAGS}" ${_includeDirFlags}
-              COPY_FILE ${BIN_FILE}
-              OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT)
-
-  if(${OpenMP_SPECTEST_${LANG}_${OPENMP_PLAIN_FLAG}})
-    file(STRINGS ${BIN_FILE} specstr LIMIT_COUNT 1 REGEX "INFO:OpenMP-date")
-    set(regex_spec_date ".*INFO:OpenMP-date\\[0*([^]]*)\\].*")
-    if("${specstr}" MATCHES "${regex_spec_date}")
-      set(${SPEC_DATE} "${CMAKE_MATCH_1}" PARENT_SCOPE)
-    endif()
-  else()
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Detecting ${LANG} OpenMP version failed with the following output:\n${OpenMP_TRY_COMPILE_OUTPUT}\n\n")
-  endif()
-endfunction()
-
-macro(_OPENMP_SET_VERSION_BY_SPEC_DATE LANG)
-  set(OpenMP_SPEC_DATE_MAP
-    # Preview versions
-    "201611=5.0" # OpenMP 5.0 preview 1
-    # Combined versions, 2.5 onwards
-    "201811=5.0"
-    "201511=4.5"
-    "201307=4.0"
-    "201107=3.1"
-    "200805=3.0"
-    "200505=2.5"
-    # C/C++ version 2.0
-    "200203=2.0"
-    # Fortran version 2.0
-    "200011=2.0"
-    # Fortran version 1.1
-    "199911=1.1"
-    # C/C++ version 1.0 (there's no 1.1 for C/C++)
-    "199810=1.0"
-    # Fortran version 1.0
-    "199710=1.0"
-  )
-  if(MSVC)
-    list(APPEND OpenMP_SPEC_DATE_MAP "2019=2.0")
-  endif()
-
-  if(OpenMP_${LANG}_SPEC_DATE)
-    string(REGEX MATCHALL "${OpenMP_${LANG}_SPEC_DATE}=([0-9]+)\\.([0-9]+)" _version_match "${OpenMP_SPEC_DATE_MAP}")
-  else()
-    set(_version_match "")
-  endif()
-  if(NOT _version_match STREQUAL "")
-    set(OpenMP_${LANG}_VERSION_MAJOR ${CMAKE_MATCH_1})
-    set(OpenMP_${LANG}_VERSION_MINOR ${CMAKE_MATCH_2})
-    set(OpenMP_${LANG}_VERSION "${OpenMP_${LANG}_VERSION_MAJOR}.${OpenMP_${LANG}_VERSION_MINOR}")
-  else()
-    unset(OpenMP_${LANG}_VERSION_MAJOR)
-    unset(OpenMP_${LANG}_VERSION_MINOR)
-    unset(OpenMP_${LANG}_VERSION)
-  endif()
-  unset(_version_match)
-  unset(OpenMP_SPEC_DATE_MAP)
-endmacro()
-
-foreach(LANG IN ITEMS C CXX)
-  if(CMAKE_${LANG}_COMPILER_LOADED)
-    if(NOT DEFINED OpenMP_${LANG}_FLAGS OR "${OpenMP_${LANG}_FLAGS}" STREQUAL "NOTFOUND"
-      OR NOT DEFINED OpenMP_${LANG}_LIB_NAMES OR "${OpenMP_${LANG}_LIB_NAMES}" STREQUAL "NOTFOUND")
-      _OPENMP_GET_FLAGS("${LANG}" "${LANG}" OpenMP_${LANG}_FLAGS_WORK OpenMP_${LANG}_LIB_NAMES_WORK)
-      set(OpenMP_${LANG}_FLAGS "${OpenMP_${LANG}_FLAGS_WORK}"
-        CACHE STRING "${LANG} compiler flags for OpenMP parallelization" FORCE)
-      set(OpenMP_${LANG}_LIB_NAMES "${OpenMP_${LANG}_LIB_NAMES_WORK}"
-        CACHE STRING "${LANG} compiler libraries for OpenMP parallelization" FORCE)
-      mark_as_advanced(OpenMP_${LANG}_FLAGS OpenMP_${LANG}_LIB_NAMES)
-    endif()
-  endif()
-endforeach()
-
-if(CMAKE_Fortran_COMPILER_LOADED)
-  if(NOT DEFINED OpenMP_Fortran_FLAGS OR "${OpenMP_Fortran_FLAGS}" STREQUAL "NOTFOUND"
-    OR NOT DEFINED OpenMP_Fortran_LIB_NAMES OR "${OpenMP_Fortran_LIB_NAMES}" STREQUAL "NOTFOUND"
-    OR NOT DEFINED OpenMP_Fortran_HAVE_OMPLIB_MODULE)
-    set(OpenMP_Fortran_INCLUDE_LINE "use omp_lib\n      implicit none")
-    _OPENMP_GET_FLAGS("Fortran" "FortranHeader" OpenMP_Fortran_FLAGS_WORK OpenMP_Fortran_LIB_NAMES_WORK)
-    if(OpenMP_Fortran_FLAGS_WORK)
-      set(OpenMP_Fortran_HAVE_OMPLIB_MODULE TRUE CACHE BOOL INTERNAL "")
-    endif()
-
-    set(OpenMP_Fortran_FLAGS "${OpenMP_Fortran_FLAGS_WORK}"
-      CACHE STRING "Fortran compiler flags for OpenMP parallelization")
-    set(OpenMP_Fortran_LIB_NAMES "${OpenMP_Fortran_LIB_NAMES_WORK}"
-      CACHE STRING "Fortran compiler libraries for OpenMP parallelization")
-    mark_as_advanced(OpenMP_Fortran_FLAGS OpenMP_Fortran_LIB_NAMES)
-  endif()
-
-  if(NOT DEFINED OpenMP_Fortran_FLAGS OR "${OpenMP_Fortran_FLAGS}" STREQUAL "NOTFOUND"
-    OR NOT DEFINED OpenMP_Fortran_LIB_NAMES OR "${OpenMP_Fortran_LIB_NAMES}" STREQUAL "NOTFOUND"
-    OR NOT DEFINED OpenMP_Fortran_HAVE_OMPLIB_HEADER)
-    set(OpenMP_Fortran_INCLUDE_LINE "implicit none\n      include 'omp_lib.h'")
-    _OPENMP_GET_FLAGS("Fortran" "FortranModule" OpenMP_Fortran_FLAGS_WORK OpenMP_Fortran_LIB_NAMES_WORK)
-    if(OpenMP_Fortran_FLAGS_WORK)
-      set(OpenMP_Fortran_HAVE_OMPLIB_HEADER TRUE CACHE BOOL INTERNAL "")
-    endif()
-
-    set(OpenMP_Fortran_FLAGS "${OpenMP_Fortran_FLAGS_WORK}"
-      CACHE STRING "Fortran compiler flags for OpenMP parallelization")
-
-    set(OpenMP_Fortran_LIB_NAMES "${OpenMP_Fortran_LIB_NAMES}"
-      CACHE STRING "Fortran compiler libraries for OpenMP parallelization")
-  endif()
-
-  if(OpenMP_Fortran_HAVE_OMPLIB_MODULE)
-    set(OpenMP_Fortran_INCLUDE_LINE "use omp_lib\n      implicit none")
-  else()
-    set(OpenMP_Fortran_INCLUDE_LINE "implicit none\n      include 'omp_lib.h'")
-  endif()
-endif()
-
-if(NOT OpenMP_FIND_COMPONENTS)
-  set(OpenMP_FINDLIST C CXX Fortran)
-else()
-  set(OpenMP_FINDLIST ${OpenMP_FIND_COMPONENTS})
-endif()
-
-unset(_OpenMP_MIN_VERSION)
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-
-foreach(LANG IN LISTS OpenMP_FINDLIST)
-  if(CMAKE_${LANG}_COMPILER_LOADED)
-    if (NOT OpenMP_${LANG}_SPEC_DATE AND OpenMP_${LANG}_FLAGS)
-      _OPENMP_GET_SPEC_DATE("${LANG}" OpenMP_${LANG}_SPEC_DATE_INTERNAL)
-      set(OpenMP_${LANG}_SPEC_DATE "${OpenMP_${LANG}_SPEC_DATE_INTERNAL}" CACHE
-        INTERNAL "${LANG} compiler's OpenMP specification date")
-    endif()
-    _OPENMP_SET_VERSION_BY_SPEC_DATE("${LANG}")
-
-    set(OpenMP_${LANG}_FIND_QUIETLY ${OpenMP_FIND_QUIETLY})
-    set(OpenMP_${LANG}_FIND_REQUIRED ${OpenMP_FIND_REQUIRED})
-    set(OpenMP_${LANG}_FIND_VERSION ${OpenMP_FIND_VERSION})
-    set(OpenMP_${LANG}_FIND_VERSION_EXACT ${OpenMP_FIND_VERSION_EXACT})
-
-    set(_OPENMP_${LANG}_REQUIRED_VARS OpenMP_${LANG}_FLAGS)
-    if("${OpenMP_${LANG}_LIB_NAMES}" STREQUAL "NOTFOUND")
-      set(_OPENMP_${LANG}_REQUIRED_LIB_VARS OpenMP_${LANG}_LIB_NAMES)
-    else()
-      foreach(_OPENMP_IMPLICIT_LIB IN LISTS OpenMP_${LANG}_LIB_NAMES)
-        list(APPEND _OPENMP_${LANG}_REQUIRED_LIB_VARS OpenMP_${_OPENMP_IMPLICIT_LIB}_LIBRARY)
-      endforeach()
-    endif()
-
-    find_package_handle_standard_args(OpenMP_${LANG}
-      NAME_MISMATCHED
-      REQUIRED_VARS OpenMP_${LANG}_FLAGS ${_OPENMP_${LANG}_REQUIRED_LIB_VARS}
-      VERSION_VAR OpenMP_${LANG}_VERSION
-    )
-
-    if(OpenMP_${LANG}_FOUND)
-      if(DEFINED OpenMP_${LANG}_VERSION)
-        if(NOT _OpenMP_MIN_VERSION OR _OpenMP_MIN_VERSION VERSION_GREATER OpenMP_${LANG}_VERSION)
-          set(_OpenMP_MIN_VERSION OpenMP_${LANG}_VERSION)
-        endif()
-      endif()
-      set(OpenMP_${LANG}_LIBRARIES "")
-      foreach(_OPENMP_IMPLICIT_LIB IN LISTS OpenMP_${LANG}_LIB_NAMES)
-        list(APPEND OpenMP_${LANG}_LIBRARIES "${OpenMP_${_OPENMP_IMPLICIT_LIB}_LIBRARY}")
-      endforeach()
-      if(OpenMP_${LANG}_INCLUDE_DIR)
-        set(OpenMP_${LANG}_INCLUDE_DIRS ${OpenMP_${LANG}_INCLUDE_DIR})
-      else()
-        set(OpenMP_${LANG}_INCLUDE_DIRS "")
-      endif()
-
-      if(NOT TARGET OpenMP::OpenMP_${LANG})
-        add_library(OpenMP::OpenMP_${LANG} INTERFACE IMPORTED)
-      endif()
-      if(OpenMP_${LANG}_FLAGS)
-        separate_arguments(_OpenMP_${LANG}_OPTIONS NATIVE_COMMAND "${OpenMP_${LANG}_FLAGS}")
-        set_property(TARGET OpenMP::OpenMP_${LANG} PROPERTY
-          INTERFACE_COMPILE_OPTIONS "$<$<COMPILE_LANGUAGE:${LANG}>:${_OpenMP_${LANG}_OPTIONS}>")
-        unset(_OpenMP_${LANG}_OPTIONS)
-      endif()
-      if(OpenMP_${LANG}_INCLUDE_DIRS)
-        set_property(TARGET OpenMP::OpenMP_${LANG} PROPERTY
-          INTERFACE_INCLUDE_DIRECTORIES "$<BUILD_INTERFACE:${OpenMP_${LANG}_INCLUDE_DIRS}>")
-      endif()
-      if(OpenMP_${LANG}_LIBRARIES)
-        set_property(TARGET OpenMP::OpenMP_${LANG} PROPERTY
-          INTERFACE_LINK_LIBRARIES "${OpenMP_${LANG}_LIBRARIES}")
-      endif()
-    endif()
-  endif()
-endforeach()
-
-unset(_OpenMP_REQ_VARS)
-foreach(LANG IN ITEMS C CXX Fortran)
-  if((NOT OpenMP_FIND_COMPONENTS AND CMAKE_${LANG}_COMPILER_LOADED) OR LANG IN_LIST OpenMP_FIND_COMPONENTS)
-    list(APPEND _OpenMP_REQ_VARS "OpenMP_${LANG}_FOUND")
-  endif()
-endforeach()
-
-find_package_handle_standard_args(OpenMP
-    REQUIRED_VARS ${_OpenMP_REQ_VARS}
-    VERSION_VAR ${_OpenMP_MIN_VERSION}
-    HANDLE_COMPONENTS)
-
-set(OPENMP_FOUND ${OpenMP_FOUND})
-
-if(CMAKE_Fortran_COMPILER_LOADED AND OpenMP_Fortran_FOUND)
-  if(NOT DEFINED OpenMP_Fortran_HAVE_OMPLIB_MODULE)
-    set(OpenMP_Fortran_HAVE_OMPLIB_MODULE FALSE CACHE BOOL INTERNAL "")
-  endif()
-  if(NOT DEFINED OpenMP_Fortran_HAVE_OMPLIB_HEADER)
-    set(OpenMP_Fortran_HAVE_OMPLIB_HEADER FALSE CACHE BOOL INTERNAL "")
-  endif()
-endif()
-
-if(NOT ( CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED OR CMAKE_Fortran_COMPILER_LOADED ))
-  message(SEND_ERROR "FindOpenMP requires the C, CXX or Fortran languages to be enabled")
-endif()
-
-unset(OpenMP_C_CXX_TEST_SOURCE)
-unset(OpenMP_Fortran_TEST_SOURCE)
-unset(OpenMP_C_CXX_CHECK_VERSION_SOURCE)
-unset(OpenMP_Fortran_CHECK_VERSION_SOURCE)
-unset(OpenMP_Fortran_INCLUDE_LINE)
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FindOpenSSL.cmake b/share/cmake-3.18/Modules/FindOpenSSL.cmake
deleted file mode 100644
index ee40696..0000000
--- a/share/cmake-3.18/Modules/FindOpenSSL.cmake
+++ /dev/null
@@ -1,590 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindOpenSSL
------------
-
-Find the OpenSSL encryption library.
-
-Optional COMPONENTS
-^^^^^^^^^^^^^^^^^^^
-
-This module supports two optional COMPONENTS: ``Crypto`` and ``SSL``.  Both
-components have associated imported targets, as described below.
-
-Imported Targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :prop_tgt:`IMPORTED` targets:
-
-``OpenSSL::SSL``
-  The OpenSSL ``ssl`` library, if found.
-``OpenSSL::Crypto``
-  The OpenSSL ``crypto`` library, if found.
-``OpenSSL::applink``
-  The OpenSSL ``applink`` components that might be need to be compiled into
-  projects under MSVC. This target is available only if found OpenSSL version
-  is not less than 0.9.8. By linking this target the above OpenSSL targets can
-  be linked even if the project has different MSVC runtime configurations with
-  the above OpenSSL targets. This target has no effect on plaforms other than
-  MSVC.
-
-NOTE: Due to how ``INTERFACE_SOURCES`` are consumed by the consuming target,
-unless you certainly know what you are doing, it is always prefered to link
-``OpenSSL::applink`` target as ``PRIVATE`` and to make sure that this target is
-linked at most once for the whole dependency graph of any library or
-executable:
-
-.. code-block:: cmake
-
-   target_link_libraries(myTarget PRIVATE OpenSSL::applink)
-
-Otherwise you would probably encounter unexpected random problems when building
-and linking, as both the ISO C and the ISO C++ standard claims almost nothing
-about what a link process should be.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``OPENSSL_FOUND``
-  System has the OpenSSL library. If no components are requested it only
-  requires the crypto library.
-``OPENSSL_INCLUDE_DIR``
-  The OpenSSL include directory.
-``OPENSSL_CRYPTO_LIBRARY``
-  The OpenSSL crypto library.
-``OPENSSL_CRYPTO_LIBRARIES``
-  The OpenSSL crypto library and its dependencies.
-``OPENSSL_SSL_LIBRARY``
-  The OpenSSL SSL library.
-``OPENSSL_SSL_LIBRARIES``
-  The OpenSSL SSL library and its dependencies.
-``OPENSSL_LIBRARIES``
-  All OpenSSL libraries and their dependencies.
-``OPENSSL_VERSION``
-  This is set to ``$major.$minor.$revision$patch`` (e.g. ``0.9.8s``).
-``OPENSSL_APPLINK_SOURCE``
-  The sources in the target ``OpenSSL::applink`` that is mentioned above. This
-  variable shall always be undefined if found openssl version is less than
-  0.9.8 or if platform is not MSVC.
-
-Hints
-^^^^^
-
-Set ``OPENSSL_ROOT_DIR`` to the root directory of an OpenSSL installation.
-Set ``OPENSSL_USE_STATIC_LIBS`` to ``TRUE`` to look for static libraries.
-Set ``OPENSSL_MSVC_STATIC_RT`` set ``TRUE`` to choose the MT version of the lib.
-#]=======================================================================]
-
-macro(_OpenSSL_test_and_find_dependencies ssl_library crypto_library)
-  if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND
-     (("${ssl_library}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$") OR
-      ("${crypto_library}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$")))
-    set(_OpenSSL_has_dependencies TRUE)
-    find_package(Threads)
-  else()
-    set(_OpenSSL_has_dependencies FALSE)
-  endif()
-endmacro()
-
-function(_OpenSSL_add_dependencies libraries_var)
-  if(CMAKE_THREAD_LIBS_INIT)
-    list(APPEND ${libraries_var} ${CMAKE_THREAD_LIBS_INIT})
-  endif()
-  list(APPEND ${libraries_var} ${CMAKE_DL_LIBS})
-  set(${libraries_var} ${${libraries_var}} PARENT_SCOPE)
-endfunction()
-
-function(_OpenSSL_target_add_dependencies target)
-  if(_OpenSSL_has_dependencies)
-    set_property( TARGET ${target} APPEND PROPERTY INTERFACE_LINK_LIBRARIES Threads::Threads )
-    set_property( TARGET ${target} APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS} )
-  endif()
-endfunction()
-
-if (UNIX)
-  find_package(PkgConfig QUIET)
-  pkg_check_modules(_OPENSSL QUIET openssl)
-endif ()
-
-# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
-if(OPENSSL_USE_STATIC_LIBS)
-  set(_openssl_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
-  if(WIN32)
-    set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
-  else()
-    set(CMAKE_FIND_LIBRARY_SUFFIXES .a )
-  endif()
-endif()
-
-if (WIN32)
-  # http://www.slproweb.com/products/Win32OpenSSL.html
-  set(_OPENSSL_ROOT_HINTS
-    ${OPENSSL_ROOT_DIR}
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;Inno Setup: App Path]"
-    ENV OPENSSL_ROOT_DIR
-    )
-  file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
-  set(_OPENSSL_ROOT_PATHS
-    "${_programfiles}/OpenSSL"
-    "${_programfiles}/OpenSSL-Win32"
-    "${_programfiles}/OpenSSL-Win64"
-    "C:/OpenSSL/"
-    "C:/OpenSSL-Win32/"
-    "C:/OpenSSL-Win64/"
-    )
-  unset(_programfiles)
-else ()
-  set(_OPENSSL_ROOT_HINTS
-    ${OPENSSL_ROOT_DIR}
-    ENV OPENSSL_ROOT_DIR
-    )
-endif ()
-
-set(_OPENSSL_ROOT_HINTS_AND_PATHS
-    HINTS ${_OPENSSL_ROOT_HINTS}
-    PATHS ${_OPENSSL_ROOT_PATHS}
-    )
-
-find_path(OPENSSL_INCLUDE_DIR
-  NAMES
-    openssl/ssl.h
-  ${_OPENSSL_ROOT_HINTS_AND_PATHS}
-  HINTS
-    ${_OPENSSL_INCLUDEDIR}
-    ${_OPENSSL_INCLUDE_DIRS}
-  PATH_SUFFIXES
-    include
-)
-
-if(WIN32 AND NOT CYGWIN)
-  if(MSVC)
-    # /MD and /MDd are the standard values - if someone wants to use
-    # others, the libnames have to change here too
-    # use also ssl and ssleay32 in debug as fallback for openssl < 0.9.8b
-    # enable OPENSSL_MSVC_STATIC_RT to get the libs build /MT (Multithreaded no-DLL)
-    # In Visual C++ naming convention each of these four kinds of Windows libraries has it's standard suffix:
-    #   * MD for dynamic-release
-    #   * MDd for dynamic-debug
-    #   * MT for static-release
-    #   * MTd for static-debug
-
-    # Implementation details:
-    # We are using the libraries located in the VC subdir instead of the parent directory even though :
-    # libeay32MD.lib is identical to ../libeay32.lib, and
-    # ssleay32MD.lib is identical to ../ssleay32.lib
-    # enable OPENSSL_USE_STATIC_LIBS to use the static libs located in lib/VC/static
-
-    if (OPENSSL_MSVC_STATIC_RT)
-      set(_OPENSSL_MSVC_RT_MODE "MT")
-    else ()
-      set(_OPENSSL_MSVC_RT_MODE "MD")
-    endif ()
-
-    # Since OpenSSL 1.1, lib names are like libcrypto32MTd.lib and libssl32MTd.lib
-    if( "${CMAKE_SIZEOF_VOID_P}" STREQUAL "8" )
-        set(_OPENSSL_MSVC_ARCH_SUFFIX "64")
-    else()
-        set(_OPENSSL_MSVC_ARCH_SUFFIX "32")
-    endif()
-
-    if(OPENSSL_USE_STATIC_LIBS)
-      set(_OPENSSL_PATH_SUFFIXES
-        "lib/VC/static"
-        "VC/static"
-        "lib"
-        )
-    else()
-      set(_OPENSSL_PATH_SUFFIXES
-        "lib/VC"
-        "VC"
-        "lib"
-        )
-    endif ()
-
-    find_library(LIB_EAY_DEBUG
-      NAMES
-        libcrypto${_OPENSSL_MSVC_ARCH_SUFFIX}${_OPENSSL_MSVC_RT_MODE}d
-        libcrypto${_OPENSSL_MSVC_RT_MODE}d
-        libcryptod
-        libeay32${_OPENSSL_MSVC_RT_MODE}d
-        libeay32d
-        cryptod
-      NAMES_PER_DIR
-      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
-      PATH_SUFFIXES
-        ${_OPENSSL_PATH_SUFFIXES}
-    )
-
-    find_library(LIB_EAY_RELEASE
-      NAMES
-        libcrypto${_OPENSSL_MSVC_ARCH_SUFFIX}${_OPENSSL_MSVC_RT_MODE}
-        libcrypto${_OPENSSL_MSVC_RT_MODE}
-        libcrypto
-        libeay32${_OPENSSL_MSVC_RT_MODE}
-        libeay32
-        crypto
-      NAMES_PER_DIR
-      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
-      PATH_SUFFIXES
-        ${_OPENSSL_PATH_SUFFIXES}
-    )
-
-    find_library(SSL_EAY_DEBUG
-      NAMES
-        libssl${_OPENSSL_MSVC_ARCH_SUFFIX}${_OPENSSL_MSVC_RT_MODE}d
-        libssl${_OPENSSL_MSVC_RT_MODE}d
-        libssld
-        ssleay32${_OPENSSL_MSVC_RT_MODE}d
-        ssleay32d
-        ssld
-      NAMES_PER_DIR
-      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
-      PATH_SUFFIXES
-        ${_OPENSSL_PATH_SUFFIXES}
-    )
-
-    find_library(SSL_EAY_RELEASE
-      NAMES
-        libssl${_OPENSSL_MSVC_ARCH_SUFFIX}${_OPENSSL_MSVC_RT_MODE}
-        libssl${_OPENSSL_MSVC_RT_MODE}
-        libssl
-        ssleay32${_OPENSSL_MSVC_RT_MODE}
-        ssleay32
-        ssl
-      NAMES_PER_DIR
-      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
-      PATH_SUFFIXES
-        ${_OPENSSL_PATH_SUFFIXES}
-    )
-
-    set(LIB_EAY_LIBRARY_DEBUG "${LIB_EAY_DEBUG}")
-    set(LIB_EAY_LIBRARY_RELEASE "${LIB_EAY_RELEASE}")
-    set(SSL_EAY_LIBRARY_DEBUG "${SSL_EAY_DEBUG}")
-    set(SSL_EAY_LIBRARY_RELEASE "${SSL_EAY_RELEASE}")
-
-    include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-    select_library_configurations(LIB_EAY)
-    select_library_configurations(SSL_EAY)
-
-    mark_as_advanced(LIB_EAY_LIBRARY_DEBUG LIB_EAY_LIBRARY_RELEASE
-                     SSL_EAY_LIBRARY_DEBUG SSL_EAY_LIBRARY_RELEASE)
-    set(OPENSSL_SSL_LIBRARY ${SSL_EAY_LIBRARY} )
-    set(OPENSSL_CRYPTO_LIBRARY ${LIB_EAY_LIBRARY} )
-  elseif(MINGW)
-    # same player, for MinGW
-    set(LIB_EAY_NAMES crypto libeay32)
-    set(SSL_EAY_NAMES ssl ssleay32)
-    find_library(LIB_EAY
-      NAMES
-        ${LIB_EAY_NAMES}
-      NAMES_PER_DIR
-      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
-      PATH_SUFFIXES
-        "lib/MinGW"
-        "lib"
-    )
-
-    find_library(SSL_EAY
-      NAMES
-        ${SSL_EAY_NAMES}
-      NAMES_PER_DIR
-      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
-      PATH_SUFFIXES
-        "lib/MinGW"
-        "lib"
-    )
-
-    mark_as_advanced(SSL_EAY LIB_EAY)
-    set(OPENSSL_SSL_LIBRARY ${SSL_EAY} )
-    set(OPENSSL_CRYPTO_LIBRARY ${LIB_EAY} )
-    unset(LIB_EAY_NAMES)
-    unset(SSL_EAY_NAMES)
-  else()
-    # Not sure what to pick for -say- intel, let's use the toplevel ones and hope someone report issues:
-    find_library(LIB_EAY
-      NAMES
-        libcrypto
-        libeay32
-      NAMES_PER_DIR
-      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
-      HINTS
-        ${_OPENSSL_LIBDIR}
-      PATH_SUFFIXES
-        lib
-    )
-
-    find_library(SSL_EAY
-      NAMES
-        libssl
-        ssleay32
-      NAMES_PER_DIR
-      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
-      HINTS
-        ${_OPENSSL_LIBDIR}
-      PATH_SUFFIXES
-        lib
-    )
-
-    mark_as_advanced(SSL_EAY LIB_EAY)
-    set(OPENSSL_SSL_LIBRARY ${SSL_EAY} )
-    set(OPENSSL_CRYPTO_LIBRARY ${LIB_EAY} )
-  endif()
-else()
-
-  find_library(OPENSSL_SSL_LIBRARY
-    NAMES
-      ssl
-      ssleay32
-      ssleay32MD
-    NAMES_PER_DIR
-    ${_OPENSSL_ROOT_HINTS_AND_PATHS}
-    HINTS
-      ${_OPENSSL_LIBDIR}
-      ${_OPENSSL_LIBRARY_DIRS}
-    PATH_SUFFIXES
-      lib
-  )
-
-  find_library(OPENSSL_CRYPTO_LIBRARY
-    NAMES
-      crypto
-    NAMES_PER_DIR
-    ${_OPENSSL_ROOT_HINTS_AND_PATHS}
-    HINTS
-      ${_OPENSSL_LIBDIR}
-      ${_OPENSSL_LIBRARY_DIRS}
-    PATH_SUFFIXES
-      lib
-  )
-
-  mark_as_advanced(OPENSSL_CRYPTO_LIBRARY OPENSSL_SSL_LIBRARY)
-
-endif()
-
-set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY})
-set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY})
-set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARIES} ${OPENSSL_CRYPTO_LIBRARIES} )
-_OpenSSL_test_and_find_dependencies("${OPENSSL_SSL_LIBRARY}" "${OPENSSL_CRYPTO_LIBRARY}")
-if(_OpenSSL_has_dependencies)
-  _OpenSSL_add_dependencies( OPENSSL_SSL_LIBRARIES )
-  _OpenSSL_add_dependencies( OPENSSL_CRYPTO_LIBRARIES )
-  _OpenSSL_add_dependencies( OPENSSL_LIBRARIES )
-endif()
-
-function(from_hex HEX DEC)
-  string(TOUPPER "${HEX}" HEX)
-  set(_res 0)
-  string(LENGTH "${HEX}" _strlen)
-
-  while (_strlen GREATER 0)
-    math(EXPR _res "${_res} * 16")
-    string(SUBSTRING "${HEX}" 0 1 NIBBLE)
-    string(SUBSTRING "${HEX}" 1 -1 HEX)
-    if (NIBBLE STREQUAL "A")
-      math(EXPR _res "${_res} + 10")
-    elseif (NIBBLE STREQUAL "B")
-      math(EXPR _res "${_res} + 11")
-    elseif (NIBBLE STREQUAL "C")
-      math(EXPR _res "${_res} + 12")
-    elseif (NIBBLE STREQUAL "D")
-      math(EXPR _res "${_res} + 13")
-    elseif (NIBBLE STREQUAL "E")
-      math(EXPR _res "${_res} + 14")
-    elseif (NIBBLE STREQUAL "F")
-      math(EXPR _res "${_res} + 15")
-    else()
-      math(EXPR _res "${_res} + ${NIBBLE}")
-    endif()
-
-    string(LENGTH "${HEX}" _strlen)
-  endwhile()
-
-  set(${DEC} ${_res} PARENT_SCOPE)
-endfunction()
-
-if(OPENSSL_INCLUDE_DIR AND EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h")
-  file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" openssl_version_str
-       REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])+.*")
-
-  if(openssl_version_str)
-    # The version number is encoded as 0xMNNFFPPS: major minor fix patch status
-    # The status gives if this is a developer or prerelease and is ignored here.
-    # Major, minor, and fix directly translate into the version numbers shown in
-    # the string. The patch field translates to the single character suffix that
-    # indicates the bug fix state, which 00 -> nothing, 01 -> a, 02 -> b and so
-    # on.
-
-    string(REGEX REPLACE "^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F]).*$"
-           "\\1;\\2;\\3;\\4;\\5" OPENSSL_VERSION_LIST "${openssl_version_str}")
-    list(GET OPENSSL_VERSION_LIST 0 OPENSSL_VERSION_MAJOR)
-    list(GET OPENSSL_VERSION_LIST 1 OPENSSL_VERSION_MINOR)
-    from_hex("${OPENSSL_VERSION_MINOR}" OPENSSL_VERSION_MINOR)
-    list(GET OPENSSL_VERSION_LIST 2 OPENSSL_VERSION_FIX)
-    from_hex("${OPENSSL_VERSION_FIX}" OPENSSL_VERSION_FIX)
-    list(GET OPENSSL_VERSION_LIST 3 OPENSSL_VERSION_PATCH)
-
-    if (NOT OPENSSL_VERSION_PATCH STREQUAL "00")
-      from_hex("${OPENSSL_VERSION_PATCH}" _tmp)
-      # 96 is the ASCII code of 'a' minus 1
-      math(EXPR OPENSSL_VERSION_PATCH_ASCII "${_tmp} + 96")
-      unset(_tmp)
-      # Once anyone knows how OpenSSL would call the patch versions beyond 'z'
-      # this should be updated to handle that, too. This has not happened yet
-      # so it is simply ignored here for now.
-      string(ASCII "${OPENSSL_VERSION_PATCH_ASCII}" OPENSSL_VERSION_PATCH_STRING)
-    endif ()
-
-    set(OPENSSL_VERSION "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}.${OPENSSL_VERSION_FIX}${OPENSSL_VERSION_PATCH_STRING}")
-  else ()
-    # Since OpenSSL 3.0.0, the new version format is MAJOR.MINOR.PATCH and
-    # a new OPENSSL_VERSION_STR macro contains exactly that
-    file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" OPENSSL_VERSION_STR
-         REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_STR[\t ]+\"([0-9])+\\.([0-9])+\\.([0-9])+\".*")
-    string(REGEX REPLACE "^.*OPENSSL_VERSION_STR[\t ]+\"([0-9]+\\.[0-9]+\\.[0-9]+)\".*$"
-           "\\1" OPENSSL_VERSION_STR "${OPENSSL_VERSION_STR}")
-
-    set(OPENSSL_VERSION "${OPENSSL_VERSION_STR}")
-
-    unset(OPENSSL_VERSION_STR)
-  endif ()
-endif ()
-
-foreach(_comp IN LISTS OpenSSL_FIND_COMPONENTS)
-  if(_comp STREQUAL "Crypto")
-    if(EXISTS "${OPENSSL_INCLUDE_DIR}" AND
-        (EXISTS "${OPENSSL_CRYPTO_LIBRARY}" OR
-        EXISTS "${LIB_EAY_LIBRARY_DEBUG}" OR
-        EXISTS "${LIB_EAY_LIBRARY_RELEASE}")
-    )
-      set(OpenSSL_${_comp}_FOUND TRUE)
-    else()
-      set(OpenSSL_${_comp}_FOUND FALSE)
-    endif()
-  elseif(_comp STREQUAL "SSL")
-    if(EXISTS "${OPENSSL_INCLUDE_DIR}" AND
-        (EXISTS "${OPENSSL_SSL_LIBRARY}" OR
-        EXISTS "${SSL_EAY_LIBRARY_DEBUG}" OR
-        EXISTS "${SSL_EAY_LIBRARY_RELEASE}")
-    )
-      set(OpenSSL_${_comp}_FOUND TRUE)
-    else()
-      set(OpenSSL_${_comp}_FOUND FALSE)
-    endif()
-  else()
-    message(WARNING "${_comp} is not a valid OpenSSL component")
-    set(OpenSSL_${_comp}_FOUND FALSE)
-  endif()
-endforeach()
-unset(_comp)
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(OpenSSL
-  REQUIRED_VARS
-    OPENSSL_CRYPTO_LIBRARY
-    OPENSSL_INCLUDE_DIR
-  VERSION_VAR
-    OPENSSL_VERSION
-  HANDLE_COMPONENTS
-  FAIL_MESSAGE
-    "Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
-)
-
-mark_as_advanced(OPENSSL_INCLUDE_DIR)
-
-if(OPENSSL_FOUND)
-  if(NOT TARGET OpenSSL::Crypto AND
-      (EXISTS "${OPENSSL_CRYPTO_LIBRARY}" OR
-        EXISTS "${LIB_EAY_LIBRARY_DEBUG}" OR
-        EXISTS "${LIB_EAY_LIBRARY_RELEASE}")
-      )
-    add_library(OpenSSL::Crypto UNKNOWN IMPORTED)
-    set_target_properties(OpenSSL::Crypto PROPERTIES
-      INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}")
-    if(EXISTS "${OPENSSL_CRYPTO_LIBRARY}")
-      set_target_properties(OpenSSL::Crypto PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-        IMPORTED_LOCATION "${OPENSSL_CRYPTO_LIBRARY}")
-    endif()
-    if(EXISTS "${LIB_EAY_LIBRARY_RELEASE}")
-      set_property(TARGET OpenSSL::Crypto APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS RELEASE)
-      set_target_properties(OpenSSL::Crypto PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
-        IMPORTED_LOCATION_RELEASE "${LIB_EAY_LIBRARY_RELEASE}")
-    endif()
-    if(EXISTS "${LIB_EAY_LIBRARY_DEBUG}")
-      set_property(TARGET OpenSSL::Crypto APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS DEBUG)
-      set_target_properties(OpenSSL::Crypto PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
-        IMPORTED_LOCATION_DEBUG "${LIB_EAY_LIBRARY_DEBUG}")
-    endif()
-    _OpenSSL_target_add_dependencies(OpenSSL::Crypto)
-  endif()
-
-  if(NOT TARGET OpenSSL::SSL AND
-      (EXISTS "${OPENSSL_SSL_LIBRARY}" OR
-        EXISTS "${SSL_EAY_LIBRARY_DEBUG}" OR
-        EXISTS "${SSL_EAY_LIBRARY_RELEASE}")
-      )
-    add_library(OpenSSL::SSL UNKNOWN IMPORTED)
-    set_target_properties(OpenSSL::SSL PROPERTIES
-      INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}")
-    if(EXISTS "${OPENSSL_SSL_LIBRARY}")
-      set_target_properties(OpenSSL::SSL PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-        IMPORTED_LOCATION "${OPENSSL_SSL_LIBRARY}")
-    endif()
-    if(EXISTS "${SSL_EAY_LIBRARY_RELEASE}")
-      set_property(TARGET OpenSSL::SSL APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS RELEASE)
-      set_target_properties(OpenSSL::SSL PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
-        IMPORTED_LOCATION_RELEASE "${SSL_EAY_LIBRARY_RELEASE}")
-    endif()
-    if(EXISTS "${SSL_EAY_LIBRARY_DEBUG}")
-      set_property(TARGET OpenSSL::SSL APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS DEBUG)
-      set_target_properties(OpenSSL::SSL PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
-        IMPORTED_LOCATION_DEBUG "${SSL_EAY_LIBRARY_DEBUG}")
-    endif()
-    if(TARGET OpenSSL::Crypto)
-      set_target_properties(OpenSSL::SSL PROPERTIES
-        INTERFACE_LINK_LIBRARIES OpenSSL::Crypto)
-    endif()
-    _OpenSSL_target_add_dependencies(OpenSSL::SSL)
-  endif()
-
-  if("${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_FIX}" VERSION_GREATER_EQUAL "0.9.8")
-    if(MSVC)
-      if(EXISTS "${OPENSSL_INCLUDE_DIR}")
-        set(_OPENSSL_applink_paths PATHS ${OPENSSL_INCLUDE_DIR})
-      endif()
-      find_file(OPENSSL_APPLINK_SOURCE
-        NAMES
-          openssl/applink.c
-        ${_OPENSSL_applink_paths}
-        NO_DEFAULT_PATH)
-      if(OPENSSL_APPLINK_SOURCE)
-        set(_OPENSSL_applink_interface_srcs ${OPENSSL_APPLINK_SOURCE})
-      endif()
-    endif()
-    if(NOT TARGET OpenSSL::applink)
-      add_library(OpenSSL::applink INTERFACE IMPORTED)
-      set_property(TARGET OpenSSL::applink APPEND
-        PROPERTY INTERFACE_SOURCES
-          ${_OPENSSL_applink_interface_srcs})
-    endif()
-  endif()
-endif()
-
-# Restore the original find library ordering
-if(OPENSSL_USE_STATIC_LIBS)
-  set(CMAKE_FIND_LIBRARY_SUFFIXES ${_openssl_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
-endif()
diff --git a/share/cmake-3.18/Modules/FindPNG.cmake b/share/cmake-3.18/Modules/FindPNG.cmake
deleted file mode 100644
index f1fe89a..0000000
--- a/share/cmake-3.18/Modules/FindPNG.cmake
+++ /dev/null
@@ -1,160 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindPNG
--------
-
-Find libpng, the official reference library for the PNG image format.
-
-Imported targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :prop_tgt:`IMPORTED` target:
-
-``PNG::PNG``
-  The libpng library, if found.
-
-Result variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``PNG_INCLUDE_DIRS``
-  where to find png.h, etc.
-``PNG_LIBRARIES``
-  the libraries to link against to use PNG.
-``PNG_DEFINITIONS``
-  You should add_definitions(${PNG_DEFINITIONS}) before compiling code
-  that includes png library files.
-``PNG_FOUND``
-  If false, do not try to use PNG.
-``PNG_VERSION_STRING``
-  the version of the PNG library found (since CMake 2.8.8)
-
-Obsolete variables
-^^^^^^^^^^^^^^^^^^
-
-The following variables may also be set, for backwards compatibility:
-
-``PNG_LIBRARY``
-  where to find the PNG library.
-``PNG_INCLUDE_DIR``
-  where to find the PNG headers (same as PNG_INCLUDE_DIRS)
-
-Since PNG depends on the ZLib compression library, none of the above
-will be defined unless ZLib can be found.
-#]=======================================================================]
-
-if(PNG_FIND_QUIETLY)
-  set(_FIND_ZLIB_ARG QUIET)
-endif()
-find_package(ZLIB ${_FIND_ZLIB_ARG})
-
-if(ZLIB_FOUND)
-  find_path(PNG_PNG_INCLUDE_DIR png.h PATH_SUFFIXES include/libpng)
-
-  list(APPEND PNG_NAMES png libpng)
-  unset(PNG_NAMES_DEBUG)
-  set(_PNG_VERSION_SUFFIXES 17 16 15 14 12)
-  if (PNG_FIND_VERSION MATCHES "^([0-9]+)\\.([0-9]+)(\\..*)?$")
-    set(_PNG_VERSION_SUFFIX_MIN "${CMAKE_MATCH_1}${CMAKE_MATCH_2}")
-    if (PNG_FIND_VERSION_EXACT)
-      set(_PNG_VERSION_SUFFIXES ${_PNG_VERSION_SUFFIX_MIN})
-    else ()
-      string(REGEX REPLACE
-          "${_PNG_VERSION_SUFFIX_MIN}.*" "${_PNG_VERSION_SUFFIX_MIN}"
-          _PNG_VERSION_SUFFIXES "${_PNG_VERSION_SUFFIXES}")
-    endif ()
-    unset(_PNG_VERSION_SUFFIX_MIN)
-  endif ()
-  foreach(v IN LISTS _PNG_VERSION_SUFFIXES)
-    list(APPEND PNG_NAMES png${v} libpng${v} libpng${v}_static)
-    list(APPEND PNG_NAMES_DEBUG png${v}d libpng${v}d libpng${v}_staticd)
-  endforeach()
-  unset(_PNG_VERSION_SUFFIXES)
-  # For compatibility with versions prior to this multi-config search, honor
-  # any PNG_LIBRARY that is already specified and skip the search.
-  if(NOT PNG_LIBRARY)
-    find_library(PNG_LIBRARY_RELEASE NAMES ${PNG_NAMES})
-    find_library(PNG_LIBRARY_DEBUG NAMES ${PNG_NAMES_DEBUG})
-    include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-    select_library_configurations(PNG)
-    mark_as_advanced(PNG_LIBRARY_RELEASE PNG_LIBRARY_DEBUG)
-  endif()
-  unset(PNG_NAMES)
-  unset(PNG_NAMES_DEBUG)
-
-  # Set by select_library_configurations(), but we want the one from
-  # find_package_handle_standard_args() below.
-  unset(PNG_FOUND)
-
-  if (PNG_LIBRARY AND PNG_PNG_INCLUDE_DIR)
-      # png.h includes zlib.h. Sigh.
-      set(PNG_INCLUDE_DIRS ${PNG_PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} )
-      set(PNG_INCLUDE_DIR ${PNG_INCLUDE_DIRS} ) # for backward compatibility
-      set(PNG_LIBRARIES ${PNG_LIBRARY} ${ZLIB_LIBRARY})
-      if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND
-         ("${PNG_LIBRARY}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$"))
-        list(APPEND PNG_LIBRARIES m)
-      endif()
-
-      if (CYGWIN)
-        if(BUILD_SHARED_LIBS)
-           # No need to define PNG_USE_DLL here, because it's default for Cygwin.
-        else()
-          set (PNG_DEFINITIONS -DPNG_STATIC)
-          set(_PNG_COMPILE_DEFINITIONS PNG_STATIC)
-        endif()
-      endif ()
-
-      if(NOT TARGET PNG::PNG)
-        add_library(PNG::PNG UNKNOWN IMPORTED)
-        set_target_properties(PNG::PNG PROPERTIES
-          INTERFACE_COMPILE_DEFINITIONS "${_PNG_COMPILE_DEFINITIONS}"
-          INTERFACE_INCLUDE_DIRECTORIES "${PNG_INCLUDE_DIRS}"
-          INTERFACE_LINK_LIBRARIES ZLIB::ZLIB)
-        if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND
-           ("${PNG_LIBRARY}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$"))
-          set_property(TARGET PNG::PNG APPEND PROPERTY
-            INTERFACE_LINK_LIBRARIES m)
-        endif()
-
-        if(EXISTS "${PNG_LIBRARY}")
-          set_target_properties(PNG::PNG PROPERTIES
-            IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-            IMPORTED_LOCATION "${PNG_LIBRARY}")
-        endif()
-        if(EXISTS "${PNG_LIBRARY_RELEASE}")
-          set_property(TARGET PNG::PNG APPEND PROPERTY
-            IMPORTED_CONFIGURATIONS RELEASE)
-          set_target_properties(PNG::PNG PROPERTIES
-            IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
-            IMPORTED_LOCATION_RELEASE "${PNG_LIBRARY_RELEASE}")
-        endif()
-        if(EXISTS "${PNG_LIBRARY_DEBUG}")
-          set_property(TARGET PNG::PNG APPEND PROPERTY
-            IMPORTED_CONFIGURATIONS DEBUG)
-          set_target_properties(PNG::PNG PROPERTIES
-            IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
-            IMPORTED_LOCATION_DEBUG "${PNG_LIBRARY_DEBUG}")
-        endif()
-      endif()
-
-      unset(_PNG_COMPILE_DEFINITIONS)
-  endif ()
-
-  if (PNG_PNG_INCLUDE_DIR AND EXISTS "${PNG_PNG_INCLUDE_DIR}/png.h")
-      file(STRINGS "${PNG_PNG_INCLUDE_DIR}/png.h" png_version_str REGEX "^#define[ \t]+PNG_LIBPNG_VER_STRING[ \t]+\".+\"")
-
-      string(REGEX REPLACE "^#define[ \t]+PNG_LIBPNG_VER_STRING[ \t]+\"([^\"]+)\".*" "\\1" PNG_VERSION_STRING "${png_version_str}")
-      unset(png_version_str)
-  endif ()
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(PNG
-                                  REQUIRED_VARS PNG_LIBRARY PNG_PNG_INCLUDE_DIR
-                                  VERSION_VAR PNG_VERSION_STRING)
-
-mark_as_advanced(PNG_PNG_INCLUDE_DIR PNG_LIBRARY )
diff --git a/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake b/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake
deleted file mode 100644
index 4fb0825..0000000
--- a/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake
+++ /dev/null
@@ -1,466 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindPackageHandleStandardArgs
------------------------------
-
-This module provides a function intended to be used in :ref:`Find Modules`
-implementing :command:`find_package(<PackageName>)` calls.  It handles the
-``REQUIRED``, ``QUIET`` and version-related arguments of ``find_package``.
-It also sets the ``<PackageName>_FOUND`` variable.  The package is
-considered found if all variables listed contain valid results, e.g.
-valid filepaths.
-
-.. command:: find_package_handle_standard_args
-
-  There are two signatures::
-
-    find_package_handle_standard_args(<PackageName>
-      (DEFAULT_MSG|<custom-failure-message>)
-      <required-var>...
-      )
-
-    find_package_handle_standard_args(<PackageName>
-      [FOUND_VAR <result-var>]
-      [REQUIRED_VARS <required-var>...]
-      [VERSION_VAR <version-var>]
-      [HANDLE_COMPONENTS]
-      [CONFIG_MODE]
-      [NAME_MISMATCHED]
-      [REASON_FAILURE_MESSAGE <reason-failure-message>]
-      [FAIL_MESSAGE <custom-failure-message>]
-      )
-
-  The ``<PackageName>_FOUND`` variable will be set to ``TRUE`` if all
-  the variables ``<required-var>...`` are valid and any optional
-  constraints are satisfied, and ``FALSE`` otherwise.  A success or
-  failure message may be displayed based on the results and on
-  whether the ``REQUIRED`` and/or ``QUIET`` option was given to
-  the :command:`find_package` call.
-
-  The options are:
-
-  ``(DEFAULT_MSG|<custom-failure-message>)``
-    In the simple signature this specifies the failure message.
-    Use ``DEFAULT_MSG`` to ask for a default message to be computed
-    (recommended).  Not valid in the full signature.
-
-  ``FOUND_VAR <result-var>``
-    Obsolete.  Specifies either ``<PackageName>_FOUND`` or
-    ``<PACKAGENAME>_FOUND`` as the result variable.  This exists only
-    for compatibility with older versions of CMake and is now ignored.
-    Result variables of both names are always set for compatibility.
-
-  ``REQUIRED_VARS <required-var>...``
-    Specify the variables which are required for this package.
-    These may be named in the generated failure message asking the
-    user to set the missing variable values.  Therefore these should
-    typically be cache entries such as ``FOO_LIBRARY`` and not output
-    variables like ``FOO_LIBRARIES``. This option is mandatory if
-    ``HANDLE_COMPONENTS`` is not specified.
-
-  ``VERSION_VAR <version-var>``
-    Specify the name of a variable that holds the version of the package
-    that has been found.  This version will be checked against the
-    (potentially) specified required version given to the
-    :command:`find_package` call, including its ``EXACT`` option.
-    The default messages include information about the required
-    version and the version which has been actually found, both
-    if the version is ok or not.
-
-  ``HANDLE_COMPONENTS``
-    Enable handling of package components.  In this case, the command
-    will report which components have been found and which are missing,
-    and the ``<PackageName>_FOUND`` variable will be set to ``FALSE``
-    if any of the required components (i.e. not the ones listed after
-    the ``OPTIONAL_COMPONENTS`` option of :command:`find_package`) are
-    missing.
-
-  ``CONFIG_MODE``
-    Specify that the calling find module is a wrapper around a
-    call to ``find_package(<PackageName> NO_MODULE)``.  This implies
-    a ``VERSION_VAR`` value of ``<PackageName>_VERSION``.  The command
-    will automatically check whether the package configuration file
-    was found.
-
-  ``REASON_FAILURE_MESSAGE <reason-failure-message>``
-    Specify a custom message of the reason for the failure which will be
-    appended to the default generated message.
-
-  ``FAIL_MESSAGE <custom-failure-message>``
-    Specify a custom failure message instead of using the default
-    generated message.  Not recommended.
-
-  ``NAME_MISMATCHED``
-    Indicate that the ``<PackageName>`` does not match
-    ``${CMAKE_FIND_PACKAGE_NAME}``. This is usually a mistake and raises a
-    warning, but it may be intentional for usage of the command for components
-    of a larger package.
-
-Example for the simple signature:
-
-.. code-block:: cmake
-
-  find_package_handle_standard_args(LibXml2 DEFAULT_MSG
-    LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR)
-
-The ``LibXml2`` package is considered to be found if both
-``LIBXML2_LIBRARY`` and ``LIBXML2_INCLUDE_DIR`` are valid.
-Then also ``LibXml2_FOUND`` is set to ``TRUE``.  If it is not found
-and ``REQUIRED`` was used, it fails with a
-:command:`message(FATAL_ERROR)`, independent whether ``QUIET`` was
-used or not.  If it is found, success will be reported, including
-the content of the first ``<required-var>``.  On repeated CMake runs,
-the same message will not be printed again.
-
-.. note::
-
-  If ``<PackageName>`` does not match ``CMAKE_FIND_PACKAGE_NAME`` for the
-  calling module, a warning that there is a mismatch is given. The
-  ``FPHSA_NAME_MISMATCHED`` variable may be set to bypass the warning if using
-  the old signature and the ``NAME_MISMATCHED`` argument using the new
-  signature. To avoid forcing the caller to require newer versions of CMake for
-  usage, the variable's value will be used if defined when the
-  ``NAME_MISMATCHED`` argument is not passed for the new signature (but using
-  both is an error)..
-
-Example for the full signature:
-
-.. code-block:: cmake
-
-  find_package_handle_standard_args(LibArchive
-    REQUIRED_VARS LibArchive_LIBRARY LibArchive_INCLUDE_DIR
-    VERSION_VAR LibArchive_VERSION)
-
-In this case, the ``LibArchive`` package is considered to be found if
-both ``LibArchive_LIBRARY`` and ``LibArchive_INCLUDE_DIR`` are valid.
-Also the version of ``LibArchive`` will be checked by using the version
-contained in ``LibArchive_VERSION``.  Since no ``FAIL_MESSAGE`` is given,
-the default messages will be printed.
-
-Another example for the full signature:
-
-.. code-block:: cmake
-
-  find_package(Automoc4 QUIET NO_MODULE HINTS /opt/automoc4)
-  find_package_handle_standard_args(Automoc4  CONFIG_MODE)
-
-In this case, a ``FindAutmoc4.cmake`` module wraps a call to
-``find_package(Automoc4 NO_MODULE)`` and adds an additional search
-directory for ``automoc4``.  Then the call to
-``find_package_handle_standard_args`` produces a proper success/failure
-message.
-#]=======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageMessage.cmake)
-
-# internal helper macro
-macro(_FPHSA_FAILURE_MESSAGE _msg)
-  set (__msg "${_msg}")
-  if (FPHSA_REASON_FAILURE_MESSAGE)
-    string(APPEND __msg "\n    Reason given by package: ${FPHSA_REASON_FAILURE_MESSAGE}\n")
-  endif()
-  if (${_NAME}_FIND_REQUIRED)
-    message(FATAL_ERROR "${__msg}")
-  else ()
-    if (NOT ${_NAME}_FIND_QUIETLY)
-      message(STATUS "${__msg}")
-    endif ()
-  endif ()
-endmacro()
-
-
-# internal helper macro to generate the failure message when used in CONFIG_MODE:
-macro(_FPHSA_HANDLE_FAILURE_CONFIG_MODE)
-  # <PackageName>_CONFIG is set, but FOUND is false, this means that some other of the REQUIRED_VARS was not found:
-  if(${_NAME}_CONFIG)
-    _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: missing:${MISSING_VARS} (found ${${_NAME}_CONFIG} ${VERSION_MSG})")
-  else()
-    # If _CONSIDERED_CONFIGS is set, the config-file has been found, but no suitable version.
-    # List them all in the error message:
-    if(${_NAME}_CONSIDERED_CONFIGS)
-      set(configsText "")
-      list(LENGTH ${_NAME}_CONSIDERED_CONFIGS configsCount)
-      math(EXPR configsCount "${configsCount} - 1")
-      foreach(currentConfigIndex RANGE ${configsCount})
-        list(GET ${_NAME}_CONSIDERED_CONFIGS ${currentConfigIndex} filename)
-        list(GET ${_NAME}_CONSIDERED_VERSIONS ${currentConfigIndex} version)
-        string(APPEND configsText "\n    ${filename} (version ${version})")
-      endforeach()
-      if (${_NAME}_NOT_FOUND_MESSAGE)
-        if (FPHSA_REASON_FAILURE_MESSAGE)
-          string(PREPEND FPHSA_REASON_FAILURE_MESSAGE "${${_NAME}_NOT_FOUND_MESSAGE}\n    ")
-        else()
-          set(FPHSA_REASON_FAILURE_MESSAGE "${${_NAME}_NOT_FOUND_MESSAGE}")
-        endif()
-      else()
-        string(APPEND configsText "\n")
-      endif()
-      _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} ${VERSION_MSG}, checked the following files:${configsText}")
-
-    else()
-      # Simple case: No Config-file was found at all:
-      _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: found neither ${_NAME}Config.cmake nor ${_NAME_LOWER}-config.cmake ${VERSION_MSG}")
-    endif()
-  endif()
-endmacro()
-
-
-function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
-
-  # Set up the arguments for `cmake_parse_arguments`.
-  set(options  CONFIG_MODE  HANDLE_COMPONENTS NAME_MISMATCHED)
-  set(oneValueArgs  FAIL_MESSAGE  REASON_FAILURE_MESSAGE VERSION_VAR  FOUND_VAR)
-  set(multiValueArgs REQUIRED_VARS)
-
-  # Check whether we are in 'simple' or 'extended' mode:
-  set(_KEYWORDS_FOR_EXTENDED_MODE  ${options} ${oneValueArgs} ${multiValueArgs} )
-  list(FIND _KEYWORDS_FOR_EXTENDED_MODE "${_FIRST_ARG}" INDEX)
-
-  unset(FPHSA_NAME_MISMATCHED_override)
-  if (DEFINED FPHSA_NAME_MISMATCHED)
-    # If the variable NAME_MISMATCHED variable is set, error if it is passed as
-    # an argument. The former is for old signatures, the latter is for new
-    # signatures.
-    list(FIND ARGN "NAME_MISMATCHED" name_mismatched_idx)
-    if (NOT name_mismatched_idx EQUAL "-1")
-      message(FATAL_ERROR
-        "The `NAME_MISMATCHED` argument may only be specified by the argument or "
-        "the variable, not both.")
-    endif ()
-
-    # But use the variable if it is not an argument to avoid forcing minimum
-    # CMake version bumps for calling modules.
-    set(FPHSA_NAME_MISMATCHED_override "${FPHSA_NAME_MISMATCHED}")
-  endif ()
-
-  if(${INDEX} EQUAL -1)
-    set(FPHSA_FAIL_MESSAGE ${_FIRST_ARG})
-    set(FPHSA_REQUIRED_VARS ${ARGN})
-    set(FPHSA_VERSION_VAR)
-  else()
-    cmake_parse_arguments(FPHSA "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${_FIRST_ARG} ${ARGN})
-
-    if(FPHSA_UNPARSED_ARGUMENTS)
-      message(FATAL_ERROR "Unknown keywords given to FIND_PACKAGE_HANDLE_STANDARD_ARGS(): \"${FPHSA_UNPARSED_ARGUMENTS}\"")
-    endif()
-
-    if(NOT FPHSA_FAIL_MESSAGE)
-      set(FPHSA_FAIL_MESSAGE  "DEFAULT_MSG")
-    endif()
-
-    # In config-mode, we rely on the variable <PackageName>_CONFIG, which is set by find_package()
-    # when it successfully found the config-file, including version checking:
-    if(FPHSA_CONFIG_MODE)
-      list(INSERT FPHSA_REQUIRED_VARS 0 ${_NAME}_CONFIG)
-      list(REMOVE_DUPLICATES FPHSA_REQUIRED_VARS)
-      set(FPHSA_VERSION_VAR ${_NAME}_VERSION)
-    endif()
-
-    if(NOT FPHSA_REQUIRED_VARS AND NOT FPHSA_HANDLE_COMPONENTS)
-      message(FATAL_ERROR "No REQUIRED_VARS specified for FIND_PACKAGE_HANDLE_STANDARD_ARGS()")
-    endif()
-  endif()
-
-  if (DEFINED FPHSA_NAME_MISMATCHED_override)
-    set(FPHSA_NAME_MISMATCHED "${FPHSA_NAME_MISMATCHED_override}")
-  endif ()
-
-  if (DEFINED CMAKE_FIND_PACKAGE_NAME
-      AND NOT FPHSA_NAME_MISMATCHED
-      AND NOT _NAME STREQUAL CMAKE_FIND_PACKAGE_NAME)
-    message(AUTHOR_WARNING
-      "The package name passed to `find_package_handle_standard_args` "
-      "(${_NAME}) does not match the name of the calling package "
-      "(${CMAKE_FIND_PACKAGE_NAME}). This can lead to problems in calling "
-      "code that expects `find_package` result variables (e.g., `_FOUND`) "
-      "to follow a certain pattern.")
-  endif ()
-
-# now that we collected all arguments, process them
-
-  if("x${FPHSA_FAIL_MESSAGE}" STREQUAL "xDEFAULT_MSG")
-    set(FPHSA_FAIL_MESSAGE "Could NOT find ${_NAME}")
-  endif()
-
-  if (FPHSA_REQUIRED_VARS)
-    list(GET FPHSA_REQUIRED_VARS 0 _FIRST_REQUIRED_VAR)
-  endif()
-
-  string(TOUPPER ${_NAME} _NAME_UPPER)
-  string(TOLOWER ${_NAME} _NAME_LOWER)
-
-  if(FPHSA_FOUND_VAR)
-    set(_FOUND_VAR_UPPER ${_NAME_UPPER}_FOUND)
-    set(_FOUND_VAR_MIXED ${_NAME}_FOUND)
-    if(FPHSA_FOUND_VAR STREQUAL _FOUND_VAR_MIXED  OR  FPHSA_FOUND_VAR STREQUAL _FOUND_VAR_UPPER)
-      set(_FOUND_VAR ${FPHSA_FOUND_VAR})
-    else()
-      message(FATAL_ERROR "The argument for FOUND_VAR is \"${FPHSA_FOUND_VAR}\", but only \"${_FOUND_VAR_MIXED}\" and \"${_FOUND_VAR_UPPER}\" are valid names.")
-    endif()
-  else()
-    set(_FOUND_VAR ${_NAME_UPPER}_FOUND)
-  endif()
-
-  # collect all variables which were not found, so they can be printed, so the
-  # user knows better what went wrong (#6375)
-  set(MISSING_VARS "")
-  set(DETAILS "")
-  # check if all passed variables are valid
-  set(FPHSA_FOUND_${_NAME} TRUE)
-  foreach(_CURRENT_VAR ${FPHSA_REQUIRED_VARS})
-    if(NOT ${_CURRENT_VAR})
-      set(FPHSA_FOUND_${_NAME} FALSE)
-      string(APPEND MISSING_VARS " ${_CURRENT_VAR}")
-    else()
-      string(APPEND DETAILS "[${${_CURRENT_VAR}}]")
-    endif()
-  endforeach()
-  if(FPHSA_FOUND_${_NAME})
-    set(${_NAME}_FOUND TRUE)
-    set(${_NAME_UPPER}_FOUND TRUE)
-  else()
-    set(${_NAME}_FOUND FALSE)
-    set(${_NAME_UPPER}_FOUND FALSE)
-  endif()
-
-  # component handling
-  unset(FOUND_COMPONENTS_MSG)
-  unset(MISSING_COMPONENTS_MSG)
-
-  if(FPHSA_HANDLE_COMPONENTS)
-    foreach(comp ${${_NAME}_FIND_COMPONENTS})
-      if(${_NAME}_${comp}_FOUND)
-
-        if(NOT DEFINED FOUND_COMPONENTS_MSG)
-          set(FOUND_COMPONENTS_MSG "found components:")
-        endif()
-        string(APPEND FOUND_COMPONENTS_MSG " ${comp}")
-
-      else()
-
-        if(NOT DEFINED MISSING_COMPONENTS_MSG)
-          set(MISSING_COMPONENTS_MSG "missing components:")
-        endif()
-        string(APPEND MISSING_COMPONENTS_MSG " ${comp}")
-
-        if(${_NAME}_FIND_REQUIRED_${comp})
-          set(${_NAME}_FOUND FALSE)
-          string(APPEND MISSING_VARS " ${comp}")
-        endif()
-
-      endif()
-    endforeach()
-    set(COMPONENT_MSG "${FOUND_COMPONENTS_MSG} ${MISSING_COMPONENTS_MSG}")
-    string(APPEND DETAILS "[c${COMPONENT_MSG}]")
-  endif()
-
-  # version handling:
-  set(VERSION_MSG "")
-  set(VERSION_OK TRUE)
-
-  # check with DEFINED here as the requested or found version may be "0"
-  if (DEFINED ${_NAME}_FIND_VERSION)
-    if(DEFINED ${FPHSA_VERSION_VAR})
-      set(_FOUND_VERSION ${${FPHSA_VERSION_VAR}})
-
-      if(${_NAME}_FIND_VERSION_EXACT)       # exact version required
-        # count the dots in the version string
-        string(REGEX REPLACE "[^.]" "" _VERSION_DOTS "${_FOUND_VERSION}")
-        # add one dot because there is one dot more than there are components
-        string(LENGTH "${_VERSION_DOTS}." _VERSION_DOTS)
-        if (_VERSION_DOTS GREATER ${_NAME}_FIND_VERSION_COUNT)
-          # Because of the C++ implementation of find_package() ${_NAME}_FIND_VERSION_COUNT
-          # is at most 4 here. Therefore a simple lookup table is used.
-          if (${_NAME}_FIND_VERSION_COUNT EQUAL 1)
-            set(_VERSION_REGEX "[^.]*")
-          elseif (${_NAME}_FIND_VERSION_COUNT EQUAL 2)
-            set(_VERSION_REGEX "[^.]*\\.[^.]*")
-          elseif (${_NAME}_FIND_VERSION_COUNT EQUAL 3)
-            set(_VERSION_REGEX "[^.]*\\.[^.]*\\.[^.]*")
-          else ()
-            set(_VERSION_REGEX "[^.]*\\.[^.]*\\.[^.]*\\.[^.]*")
-          endif ()
-          string(REGEX REPLACE "^(${_VERSION_REGEX})\\..*" "\\1" _VERSION_HEAD "${_FOUND_VERSION}")
-          unset(_VERSION_REGEX)
-          if (NOT ${_NAME}_FIND_VERSION VERSION_EQUAL _VERSION_HEAD)
-            set(VERSION_MSG "Found unsuitable version \"${_FOUND_VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"")
-            set(VERSION_OK FALSE)
-          else ()
-            set(VERSION_MSG "(found suitable exact version \"${_FOUND_VERSION}\")")
-          endif ()
-          unset(_VERSION_HEAD)
-        else ()
-          if (NOT ${_NAME}_FIND_VERSION VERSION_EQUAL _FOUND_VERSION)
-            set(VERSION_MSG "Found unsuitable version \"${_FOUND_VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"")
-            set(VERSION_OK FALSE)
-          else ()
-            set(VERSION_MSG "(found suitable exact version \"${_FOUND_VERSION}\")")
-          endif ()
-        endif ()
-        unset(_VERSION_DOTS)
-
-      else()     # minimum version specified:
-        if (${_NAME}_FIND_VERSION VERSION_GREATER _FOUND_VERSION)
-          set(VERSION_MSG "Found unsuitable version \"${_FOUND_VERSION}\", but required is at least \"${${_NAME}_FIND_VERSION}\"")
-          set(VERSION_OK FALSE)
-        else ()
-          set(VERSION_MSG "(found suitable version \"${_FOUND_VERSION}\", minimum required is \"${${_NAME}_FIND_VERSION}\")")
-        endif ()
-      endif()
-
-    else()
-
-      # if the package was not found, but a version was given, add that to the output:
-      if(${_NAME}_FIND_VERSION_EXACT)
-         set(VERSION_MSG "(Required is exact version \"${${_NAME}_FIND_VERSION}\")")
-      else()
-         set(VERSION_MSG "(Required is at least version \"${${_NAME}_FIND_VERSION}\")")
-      endif()
-
-    endif()
-  else ()
-    # Check with DEFINED as the found version may be 0.
-    if(DEFINED ${FPHSA_VERSION_VAR})
-      set(VERSION_MSG "(found version \"${${FPHSA_VERSION_VAR}}\")")
-    endif()
-  endif ()
-
-  if(VERSION_OK)
-    string(APPEND DETAILS "[v${${FPHSA_VERSION_VAR}}(${${_NAME}_FIND_VERSION})]")
-  else()
-    set(${_NAME}_FOUND FALSE)
-  endif()
-
-
-  # print the result:
-  if (${_NAME}_FOUND)
-    FIND_PACKAGE_MESSAGE(${_NAME} "Found ${_NAME}: ${${_FIRST_REQUIRED_VAR}} ${VERSION_MSG} ${COMPONENT_MSG}" "${DETAILS}")
-  else ()
-
-    if(FPHSA_CONFIG_MODE)
-      _FPHSA_HANDLE_FAILURE_CONFIG_MODE()
-    else()
-      if(NOT VERSION_OK)
-        set(RESULT_MSG)
-        if (_FIRST_REQUIRED_VAR)
-          string (APPEND RESULT_MSG "found ${${_FIRST_REQUIRED_VAR}}")
-        endif()
-        if (COMPONENT_MSG)
-          if (RESULT_MSG)
-            string (APPEND RESULT_MSG ", ")
-          endif()
-          string (APPEND RESULT_MSG "${FOUND_COMPONENTS_MSG}")
-        endif()
-        _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: ${VERSION_MSG} (${RESULT_MSG})")
-      else()
-        _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} (missing:${MISSING_VARS}) ${VERSION_MSG}")
-      endif()
-    endif()
-
-  endif ()
-
-  set(${_NAME}_FOUND ${${_NAME}_FOUND} PARENT_SCOPE)
-  set(${_NAME_UPPER}_FOUND ${${_NAME}_FOUND} PARENT_SCOPE)
-endfunction()
diff --git a/share/cmake-3.18/Modules/FindPatch.cmake b/share/cmake-3.18/Modules/FindPatch.cmake
deleted file mode 100644
index 4998839..0000000
--- a/share/cmake-3.18/Modules/FindPatch.cmake
+++ /dev/null
@@ -1,69 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindPatch
----------
-
-The module defines the following variables:
-
-``Patch_EXECUTABLE``
-  Path to patch command-line executable.
-``Patch_FOUND``
-  True if the patch command-line executable was found.
-
-The following :prop_tgt:`IMPORTED` targets are also defined:
-
-``Patch::patch``
-  The command-line executable.
-
-Example usage:
-
-.. code-block:: cmake
-
-   find_package(Patch)
-   if(Patch_FOUND)
-     message("Patch found: ${Patch_EXECUTABLE}")
-   endif()
-#]=======================================================================]
-
-set(_doc "Patch command line executable")
-set(_patch_path )
-
-if(CMAKE_HOST_WIN32)
-  set(_patch_path
-    "$ENV{LOCALAPPDATA}/Programs/Git/bin"
-    "$ENV{LOCALAPPDATA}/Programs/Git/usr/bin"
-    "$ENV{APPDATA}/Programs/Git/bin"
-    "$ENV{APPDATA}/Programs/Git/usr/bin"
-    )
-endif()
-
-# First search the PATH
-find_program(Patch_EXECUTABLE
-  NAME patch
-  PATHS ${_patch_path}
-  DOC ${_doc}
-  )
-
-if(CMAKE_HOST_WIN32)
-  # Now look for installations in Git/ directories under typical installation
-  # prefixes on Windows.
-  find_program(Patch_EXECUTABLE
-    NAMES patch
-    PATH_SUFFIXES Git/usr/bin Git/bin GnuWin32/bin
-    DOC ${_doc}
-    )
-endif()
-
-if(Patch_EXECUTABLE AND NOT TARGET Patch::patch)
-  add_executable(Patch::patch IMPORTED)
-  set_property(TARGET Patch::patch PROPERTY IMPORTED_LOCATION ${Patch_EXECUTABLE})
-endif()
-
-unset(_patch_path)
-unset(_doc)
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(Patch
-                                  REQUIRED_VARS Patch_EXECUTABLE)
diff --git a/share/cmake-3.18/Modules/FindPerl.cmake b/share/cmake-3.18/Modules/FindPerl.cmake
deleted file mode 100644
index fd120bf..0000000
--- a/share/cmake-3.18/Modules/FindPerl.cmake
+++ /dev/null
@@ -1,80 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindPerl
---------
-
-Find perl
-
-this module looks for Perl
-
-::
-
-  PERL_EXECUTABLE     - the full path to perl
-  PERL_FOUND          - If false, don't attempt to use perl.
-  PERL_VERSION_STRING - version of perl found (since CMake 2.8.8)
-#]=======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake)
-
-set(PERL_POSSIBLE_BIN_PATHS
-  ${CYGWIN_INSTALL_PATH}/bin
-  )
-
-if(WIN32)
-  get_filename_component(
-    ActivePerl_CurrentVersion
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActivePerl;CurrentVersion]"
-    NAME)
-  set(PERL_POSSIBLE_BIN_PATHS ${PERL_POSSIBLE_BIN_PATHS}
-    "C:/Perl/bin"
-    "C:/Strawberry/perl/bin"
-    [HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActivePerl\\${ActivePerl_CurrentVersion}]/bin
-    )
-endif()
-
-find_program(PERL_EXECUTABLE
-  NAMES perl
-  PATHS ${PERL_POSSIBLE_BIN_PATHS}
-  )
-
-if(PERL_EXECUTABLE)
-  ### PERL_VERSION
-  execute_process(
-    COMMAND
-      ${PERL_EXECUTABLE} -V:version
-      OUTPUT_VARIABLE
-        PERL_VERSION_OUTPUT_VARIABLE
-      RESULT_VARIABLE
-        PERL_VERSION_RESULT_VARIABLE
-      ERROR_QUIET
-      OUTPUT_STRIP_TRAILING_WHITESPACE
-  )
-  if(NOT PERL_VERSION_RESULT_VARIABLE AND NOT PERL_VERSION_OUTPUT_VARIABLE MATCHES "^version='UNKNOWN'")
-    string(REGEX REPLACE "version='([^']+)'.*" "\\1" PERL_VERSION_STRING ${PERL_VERSION_OUTPUT_VARIABLE})
-  else()
-    execute_process(
-      COMMAND ${PERL_EXECUTABLE} -v
-      OUTPUT_VARIABLE PERL_VERSION_OUTPUT_VARIABLE
-      RESULT_VARIABLE PERL_VERSION_RESULT_VARIABLE
-      ERROR_QUIET
-      OUTPUT_STRIP_TRAILING_WHITESPACE
-    )
-    if(NOT PERL_VERSION_RESULT_VARIABLE AND PERL_VERSION_OUTPUT_VARIABLE MATCHES "This is perl.*[ \\(]v([0-9\\._]+)[ \\)]")
-      set(PERL_VERSION_STRING "${CMAKE_MATCH_1}")
-    elseif(NOT PERL_VERSION_RESULT_VARIABLE AND PERL_VERSION_OUTPUT_VARIABLE MATCHES "This is perl, version ([0-9\\._]+) +")
-      set(PERL_VERSION_STRING "${CMAKE_MATCH_1}")
-    endif()
-  endif()
-endif()
-
-# Deprecated settings for compatibility with CMake1.4
-set(PERL ${PERL_EXECUTABLE})
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Perl
-                                  REQUIRED_VARS PERL_EXECUTABLE
-                                  VERSION_VAR PERL_VERSION_STRING)
-
-mark_as_advanced(PERL_EXECUTABLE)
diff --git a/share/cmake-3.18/Modules/FindPerlLibs.cmake b/share/cmake-3.18/Modules/FindPerlLibs.cmake
deleted file mode 100644
index 7e27f31..0000000
--- a/share/cmake-3.18/Modules/FindPerlLibs.cmake
+++ /dev/null
@@ -1,159 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindPerlLibs
-------------
-
-Find Perl libraries
-
-This module finds if PERL is installed and determines where the
-include files and libraries are.  It also determines what the name of
-the library is.  This code sets the following variables:
-
-::
-
-  PERLLIBS_FOUND    = True if perl.h & libperl were found
-  PERL_INCLUDE_PATH = path to where perl.h is found
-  PERL_LIBRARY      = path to libperl
-  PERL_EXECUTABLE   = full path to the perl binary
-
-
-
-The minimum required version of Perl can be specified using the
-standard syntax, e.g.  find_package(PerlLibs 6.0)
-
-::
-
-  The following variables are also available if needed
-  (introduced after CMake 2.6.4)
-
-
-
-::
-
-  PERL_SITESEARCH     = path to the sitesearch install dir (-V:installsitesearch)
-  PERL_SITEARCH       = path to the sitelib install directory (-V:installsitearch)
-  PERL_SITELIB        = path to the sitelib install directory (-V:installsitelib)
-  PERL_VENDORARCH     = path to the vendor arch install directory (-V:installvendorarch)
-  PERL_VENDORLIB      = path to the vendor lib install directory (-V:installvendorlib)
-  PERL_ARCHLIB        = path to the core arch lib install directory (-V:archlib)
-  PERL_PRIVLIB        = path to the core priv lib install directory (-V:privlib)
-  PERL_UPDATE_ARCHLIB = path to the update arch lib install directory (-V:installarchlib)
-  PERL_UPDATE_PRIVLIB = path to the update priv lib install directory (-V:installprivlib)
-  PERL_EXTRA_C_FLAGS = Compilation flags used to build perl
-#]=======================================================================]
-
-# find the perl executable
-include(${CMAKE_CURRENT_LIST_DIR}/FindPerl.cmake)
-
-if (PERL_EXECUTABLE)
-
-  function (perl_get_info _pgi_info tag)
-    cmake_parse_arguments(_PGI "IS_PATH" "" "" ${ARGN})
-
-    set (${_pgi_info} NOTFOUND PARENT_SCOPE)
-
-    execute_process(COMMAND "${PERL_EXECUTABLE}" -V:${tag}
-      OUTPUT_VARIABLE result
-      RESULT_VARIABLE status)
-
-    if (NOT status)
-      string(REGEX REPLACE "${tag}='([^']*)'.*" "\\1" result "${result}")
-      if (_PGI_IS_PATH)
-        file(TO_CMAKE_PATH "${result}" result)
-      endif()
-      set (${_pgi_info} "${result}" PARENT_SCOPE)
-    endif ()
-  endfunction()
-
-  ### PERL_PREFIX
-  perl_get_info(PERL_PREFIX prefix IS_PATH)
-
-  ### PERL_ARCHNAME
-  perl_get_info(PERL_ARCHNAME archname)
-
-  ### PERL_EXTRA_C_FLAGS
-  perl_get_info(PERL_EXTRA_C_FLAGS cppflags)
-
-  ### PERL_SITESEARCH
-  perl_get_info(PERL_SITESEARCH installsitesearch IS_PATH)
-
-  ### PERL_SITEARCH
-  perl_get_info(PERL_SITEARCH installsitearch IS_PATH)
-
-  ### PERL_SITELIB
-  perl_get_info(PERL_SITELIB installsitelib IS_PATH)
-
-  ### PERL_VENDORARCH
-  perl_get_info(PERL_VENDORARCH installvendorarch IS_PATH)
-
-  ### PERL_VENDORLIB
-  perl_get_info(PERL_VENDORLIB installvendorlib IS_PATH)
-
-  ### PERL_ARCHLIB
-  perl_get_info(PERL_ARCHLIB archlib IS_PATH)
-
-  ### PERL_PRIVLIB
-  perl_get_info(PERL_PRIVLIB privlib IS_PATH)
-
-  ### PERL_UPDATE_ARCHLIB
-  perl_get_info(PERL_UPDATE_ARCHLIB installarchlib IS_PATH)
-
-  ### PERL_UPDATE_PRIVLIB
-  perl_get_info(PERL_UPDATE_PRIVLIB installprivlib IS_PATH)
-
-  ### PERL_POSSIBLE_LIBRARY_NAMES
-  perl_get_info(PERL_POSSIBLE_LIBRARY_NAMES libperl)
-  if (NOT PERL_POSSIBLE_LIBRARY_NAMES)
-    set(PERL_POSSIBLE_LIBRARY_NAMES perl${PERL_VERSION_STRING} perl)
-  endif()
-  if (CMAKE_SYSTEM_NAME MATCHES "MSYS|CYGWIN")
-    # on MSYS and CYGWIN environments, current perl -V:libperl gives shared library name
-    # rather than the import library. So, extends possible library names
-    list (APPEND PERL_POSSIBLE_LIBRARY_NAMES perl)
-  endif()
-
-  ### PERL_INCLUDE_PATH
-  find_path(PERL_INCLUDE_PATH
-    NAMES
-      perl.h
-    PATHS
-      "${PERL_UPDATE_ARCHLIB}/CORE"
-      "${PERL_ARCHLIB}/CORE"
-      /usr/lib/perl5/${PERL_VERSION_STRING}/${PERL_ARCHNAME}/CORE
-      /usr/lib/perl/${PERL_VERSION_STRING}/${PERL_ARCHNAME}/CORE
-      /usr/lib/perl5/${PERL_VERSION_STRING}/CORE
-      /usr/lib/perl/${PERL_VERSION_STRING}/CORE
-  )
-
-  ### PERL_LIBRARY
-  find_library(PERL_LIBRARY
-    NAMES
-      ${PERL_POSSIBLE_LIBRARY_NAMES}
-    PATHS
-      "${PERL_UPDATE_ARCHLIB}/CORE"
-      "${PERL_ARCHLIB}/CORE"
-      /usr/lib/perl5/${PERL_VERSION_STRING}/${PERL_ARCHNAME}/CORE
-      /usr/lib/perl/${PERL_VERSION_STRING}/${PERL_ARCHNAME}/CORE
-      /usr/lib/perl5/${PERL_VERSION_STRING}/CORE
-      /usr/lib/perl/${PERL_VERSION_STRING}/CORE
-  )
-
-endif ()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(PerlLibs REQUIRED_VARS PERL_LIBRARY PERL_INCLUDE_PATH
-                                           VERSION_VAR PERL_VERSION_STRING)
-
-# Introduced after CMake 2.6.4 to bring module into compliance
-set(PERL_INCLUDE_DIR  ${PERL_INCLUDE_PATH})
-set(PERL_INCLUDE_DIRS ${PERL_INCLUDE_PATH})
-set(PERL_LIBRARIES    ${PERL_LIBRARY})
-# For backward compatibility with CMake before 2.8.8
-set(PERL_VERSION ${PERL_VERSION_STRING})
-
-mark_as_advanced(
-  PERL_INCLUDE_PATH
-  PERL_LIBRARY
-)
diff --git a/share/cmake-3.18/Modules/FindPkgConfig.cmake b/share/cmake-3.18/Modules/FindPkgConfig.cmake
deleted file mode 100644
index 93827d8..0000000
--- a/share/cmake-3.18/Modules/FindPkgConfig.cmake
+++ /dev/null
@@ -1,864 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[========================================[.rst:
-FindPkgConfig
--------------
-
-A ``pkg-config`` module for CMake.
-
-Finds the ``pkg-config`` executable and adds the :command:`pkg_get_variable`,
-:command:`pkg_check_modules` and :command:`pkg_search_module` commands. The
-following variables will also be set:
-
-``PKG_CONFIG_FOUND``
-  if pkg-config executable was found
-``PKG_CONFIG_EXECUTABLE``
-  pathname of the pkg-config program
-``PKG_CONFIG_VERSION_STRING``
-  version of pkg-config (since CMake 2.8.8)
-
-#]========================================]
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced
-cmake_policy(SET CMP0057 NEW) # if IN_LIST
-
-### Common stuff ####
-set(PKG_CONFIG_VERSION 1)
-
-# find pkg-config, use PKG_CONFIG if set
-if((NOT PKG_CONFIG_EXECUTABLE) AND (NOT "$ENV{PKG_CONFIG}" STREQUAL ""))
-  set(PKG_CONFIG_EXECUTABLE "$ENV{PKG_CONFIG}" CACHE FILEPATH "pkg-config executable")
-endif()
-find_program(PKG_CONFIG_EXECUTABLE NAMES pkg-config DOC "pkg-config executable")
-mark_as_advanced(PKG_CONFIG_EXECUTABLE)
-
-set(_PKG_CONFIG_FAILURE_MESSAGE "")
-if (PKG_CONFIG_EXECUTABLE)
-  execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --version
-    OUTPUT_VARIABLE PKG_CONFIG_VERSION_STRING OUTPUT_STRIP_TRAILING_WHITESPACE
-    ERROR_VARIABLE _PKG_CONFIG_VERSION_ERROR ERROR_STRIP_TRAILING_WHITESPACE
-    RESULT_VARIABLE _PKG_CONFIG_VERSION_RESULT
-    )
-
-  if (NOT _PKG_CONFIG_VERSION_RESULT EQUAL 0)
-    string(REPLACE "\n" "\n    " _PKG_CONFIG_VERSION_ERROR "      ${_PKG_CONFIG_VERSION_ERROR}")
-    string(APPEND _PKG_CONFIG_FAILURE_MESSAGE
-      "The command\n"
-      "      \"${PKG_CONFIG_EXECUTABLE}\" --version\n"
-      "    failed with output\n${_PKG_CONFIG_VERSION_ERROR}"
-      )
-    set(PKG_CONFIG_EXECUTABLE "")
-    unset(PKG_CONFIG_VERSION_STRING)
-  endif ()
-  unset(_PKG_CONFIG_VERSION_RESULT)
-endif ()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(PkgConfig
-                                  REQUIRED_VARS PKG_CONFIG_EXECUTABLE
-                                  REASON_FAILURE_MESSAGE "${_PKG_CONFIG_FAILURE_MESSAGE}"
-                                  VERSION_VAR PKG_CONFIG_VERSION_STRING)
-
-# This is needed because the module name is "PkgConfig" but the name of
-# this variable has always been PKG_CONFIG_FOUND so this isn't automatically
-# handled by FPHSA.
-set(PKG_CONFIG_FOUND "${PKGCONFIG_FOUND}")
-
-# Unsets the given variables
-macro(_pkgconfig_unset var)
-  set(${var} "" CACHE INTERNAL "")
-endmacro()
-
-macro(_pkgconfig_set var value)
-  set(${var} ${value} CACHE INTERNAL "")
-endmacro()
-
-# Invokes pkgconfig, cleans up the result and sets variables
-macro(_pkgconfig_invoke _pkglist _prefix _varname _regexp)
-  set(_pkgconfig_invoke_result)
-
-  execute_process(
-    COMMAND ${PKG_CONFIG_EXECUTABLE} ${ARGN} ${_pkglist}
-    OUTPUT_VARIABLE _pkgconfig_invoke_result
-    RESULT_VARIABLE _pkgconfig_failed
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-  if (_pkgconfig_failed)
-    set(_pkgconfig_${_varname} "")
-    _pkgconfig_unset(${_prefix}_${_varname})
-  else()
-    string(REGEX REPLACE "[\r\n]"       " " _pkgconfig_invoke_result "${_pkgconfig_invoke_result}")
-
-    if (NOT ${_regexp} STREQUAL "")
-      string(REGEX REPLACE "${_regexp}" " " _pkgconfig_invoke_result "${_pkgconfig_invoke_result}")
-    endif()
-
-    separate_arguments(_pkgconfig_invoke_result)
-
-    #message(STATUS "  ${_varname} ... ${_pkgconfig_invoke_result}")
-    set(_pkgconfig_${_varname} ${_pkgconfig_invoke_result})
-    _pkgconfig_set(${_prefix}_${_varname} "${_pkgconfig_invoke_result}")
-  endif()
-endmacro()
-
-# Internal version of pkg_get_variable; expects PKG_CONFIG_PATH to already be set
-function (_pkg_get_variable result pkg variable)
-  _pkgconfig_invoke("${pkg}" "prefix" "result" "" "--variable=${variable}")
-  set("${result}"
-    "${prefix_result}"
-    PARENT_SCOPE)
-endfunction ()
-
-# Invokes pkgconfig two times; once without '--static' and once with
-# '--static'
-macro(_pkgconfig_invoke_dyn _pkglist _prefix _varname cleanup_regexp)
-  _pkgconfig_invoke("${_pkglist}" ${_prefix}        ${_varname} "${cleanup_regexp}" ${ARGN})
-  _pkgconfig_invoke("${_pkglist}" ${_prefix} STATIC_${_varname} "${cleanup_regexp}" --static  ${ARGN})
-endmacro()
-
-# Splits given arguments into options and a package list
-macro(_pkgconfig_parse_options _result _is_req _is_silent _no_cmake_path _no_cmake_environment_path _imp_target _imp_target_global)
-  set(${_is_req} 0)
-  set(${_is_silent} 0)
-  set(${_no_cmake_path} 0)
-  set(${_no_cmake_environment_path} 0)
-  set(${_imp_target} 0)
-  set(${_imp_target_global} 0)
-  if(DEFINED PKG_CONFIG_USE_CMAKE_PREFIX_PATH)
-    if(NOT PKG_CONFIG_USE_CMAKE_PREFIX_PATH)
-      set(${_no_cmake_path} 1)
-      set(${_no_cmake_environment_path} 1)
-    endif()
-  elseif(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 3.1)
-    set(${_no_cmake_path} 1)
-    set(${_no_cmake_environment_path} 1)
-  endif()
-
-  foreach(_pkg ${ARGN})
-    if (_pkg STREQUAL "REQUIRED")
-      set(${_is_req} 1)
-    endif ()
-    if (_pkg STREQUAL "QUIET")
-      set(${_is_silent} 1)
-    endif ()
-    if (_pkg STREQUAL "NO_CMAKE_PATH")
-      set(${_no_cmake_path} 1)
-    endif()
-    if (_pkg STREQUAL "NO_CMAKE_ENVIRONMENT_PATH")
-      set(${_no_cmake_environment_path} 1)
-    endif()
-    if (_pkg STREQUAL "IMPORTED_TARGET")
-      set(${_imp_target} 1)
-    endif()
-    if (_pkg STREQUAL "GLOBAL")
-      set(${_imp_target_global} 1)
-    endif()
-  endforeach()
-
-  if (${_imp_target_global} AND NOT ${_imp_target})
-    message(SEND_ERROR "the argument GLOBAL may only be used together with IMPORTED_TARGET")
-  endif()
-
-  set(${_result} ${ARGN})
-  list(REMOVE_ITEM ${_result} "REQUIRED")
-  list(REMOVE_ITEM ${_result} "QUIET")
-  list(REMOVE_ITEM ${_result} "NO_CMAKE_PATH")
-  list(REMOVE_ITEM ${_result} "NO_CMAKE_ENVIRONMENT_PATH")
-  list(REMOVE_ITEM ${_result} "IMPORTED_TARGET")
-  list(REMOVE_ITEM ${_result} "GLOBAL")
-endmacro()
-
-# Add the content of a variable or an environment variable to a list of
-# paths
-# Usage:
-#  - _pkgconfig_add_extra_path(_extra_paths VAR)
-#  - _pkgconfig_add_extra_path(_extra_paths ENV VAR)
-function(_pkgconfig_add_extra_path _extra_paths_var _var)
-  set(_is_env 0)
-  if(ARGC GREATER 2 AND _var STREQUAL "ENV")
-    set(_var ${ARGV2})
-    set(_is_env 1)
-  endif()
-  if(NOT _is_env)
-    if(NOT "${${_var}}" STREQUAL "")
-      list(APPEND ${_extra_paths_var} ${${_var}})
-    endif()
-  else()
-    if(NOT "$ENV{${_var}}" STREQUAL "")
-      file(TO_CMAKE_PATH "$ENV{${_var}}" _path)
-      list(APPEND ${_extra_paths_var} ${_path})
-      unset(_path)
-    endif()
-  endif()
-  set(${_extra_paths_var} ${${_extra_paths_var}} PARENT_SCOPE)
-endfunction()
-
-# scan the LDFLAGS returned by pkg-config for library directories and
-# libraries, figure out the absolute paths of that libraries in the
-# given directories
-function(_pkg_find_libs _prefix _no_cmake_path _no_cmake_environment_path)
-  unset(_libs)
-  unset(_find_opts)
-
-  # set the options that are used as long as the .pc file does not provide a library
-  # path to look into
-  if(_no_cmake_path)
-    list(APPEND _find_opts "NO_CMAKE_PATH")
-  endif()
-  if(_no_cmake_environment_path)
-    list(APPEND _find_opts "NO_CMAKE_ENVIRONMENT_PATH")
-  endif()
-
-  unset(_search_paths)
-  unset(_next_is_framework)
-  foreach (flag IN LISTS ${_prefix}_LDFLAGS)
-    if (_next_is_framework)
-      list(APPEND _libs "-framework ${flag}")
-      unset(_next_is_framework)
-      continue()
-    endif ()
-    if (flag MATCHES "^-L(.*)")
-      list(APPEND _search_paths ${CMAKE_MATCH_1})
-      continue()
-    endif()
-    if (flag MATCHES "^-l(.*)")
-      set(_pkg_search "${CMAKE_MATCH_1}")
-    else()
-      if (flag STREQUAL "-framework")
-        set(_next_is_framework TRUE)
-      endif ()
-      continue()
-    endif()
-
-    if(_search_paths)
-        # Firstly search in -L paths
-        find_library(pkgcfg_lib_${_prefix}_${_pkg_search}
-                     NAMES ${_pkg_search}
-                     HINTS ${_search_paths} NO_DEFAULT_PATH)
-    endif()
-    find_library(pkgcfg_lib_${_prefix}_${_pkg_search}
-                 NAMES ${_pkg_search}
-                 ${_find_opts})
-    mark_as_advanced(pkgcfg_lib_${_prefix}_${_pkg_search})
-    if(pkgcfg_lib_${_prefix}_${_pkg_search})
-      list(APPEND _libs "${pkgcfg_lib_${_prefix}_${_pkg_search}}")
-    else()
-      list(APPEND _libs ${_pkg_search})
-    endif()
-  endforeach()
-
-  set(${_prefix}_LINK_LIBRARIES "${_libs}" PARENT_SCOPE)
-endfunction()
-
-# create an imported target from all the information returned by pkg-config
-function(_pkg_create_imp_target _prefix _imp_target_global)
-  # only create the target if it is linkable, i.e. no executables
-  if (NOT TARGET PkgConfig::${_prefix}
-      AND ( ${_prefix}_INCLUDE_DIRS OR ${_prefix}_LINK_LIBRARIES OR ${_prefix}_LDFLAGS_OTHER OR ${_prefix}_CFLAGS_OTHER ))
-    if(${_imp_target_global})
-      set(_global_opt "GLOBAL")
-    else()
-      unset(_global_opt)
-    endif()
-    add_library(PkgConfig::${_prefix} INTERFACE IMPORTED ${_global_opt})
-
-    if(${_prefix}_INCLUDE_DIRS)
-      set_property(TARGET PkgConfig::${_prefix} PROPERTY
-                   INTERFACE_INCLUDE_DIRECTORIES "${${_prefix}_INCLUDE_DIRS}")
-    endif()
-    if(${_prefix}_LINK_LIBRARIES)
-      set_property(TARGET PkgConfig::${_prefix} PROPERTY
-                   INTERFACE_LINK_LIBRARIES "${${_prefix}_LINK_LIBRARIES}")
-    endif()
-    if(${_prefix}_LDFLAGS_OTHER)
-      set_property(TARGET PkgConfig::${_prefix} PROPERTY
-                   INTERFACE_LINK_OPTIONS "${${_prefix}_LDFLAGS_OTHER}")
-    endif()
-    if(${_prefix}_CFLAGS_OTHER)
-      set_property(TARGET PkgConfig::${_prefix} PROPERTY
-                   INTERFACE_COMPILE_OPTIONS "${${_prefix}_CFLAGS_OTHER}")
-    endif()
-  endif()
-endfunction()
-
-# recalculate the dynamic output
-# this is a macro and not a function so the result of _pkg_find_libs is automatically propagated
-macro(_pkg_recalculate _prefix _no_cmake_path _no_cmake_environment_path _imp_target _imp_target_global)
-  _pkg_find_libs(${_prefix} ${_no_cmake_path} ${_no_cmake_environment_path})
-  if(${_imp_target})
-    _pkg_create_imp_target(${_prefix} ${_imp_target_global})
-  endif()
-endmacro()
-
-###
-macro(_pkg_set_path_internal)
-  set(_extra_paths)
-
-  if(NOT _no_cmake_path)
-    _pkgconfig_add_extra_path(_extra_paths CMAKE_PREFIX_PATH)
-    _pkgconfig_add_extra_path(_extra_paths CMAKE_FRAMEWORK_PATH)
-    _pkgconfig_add_extra_path(_extra_paths CMAKE_APPBUNDLE_PATH)
-  endif()
-
-  if(NOT _no_cmake_environment_path)
-    _pkgconfig_add_extra_path(_extra_paths ENV CMAKE_PREFIX_PATH)
-    _pkgconfig_add_extra_path(_extra_paths ENV CMAKE_FRAMEWORK_PATH)
-    _pkgconfig_add_extra_path(_extra_paths ENV CMAKE_APPBUNDLE_PATH)
-  endif()
-
-  if(NOT _extra_paths STREQUAL "")
-    # Save the PKG_CONFIG_PATH environment variable, and add paths
-    # from the CMAKE_PREFIX_PATH variables
-    set(_pkgconfig_path_old "$ENV{PKG_CONFIG_PATH}")
-    set(_pkgconfig_path "${_pkgconfig_path_old}")
-    if(NOT _pkgconfig_path STREQUAL "")
-      file(TO_CMAKE_PATH "${_pkgconfig_path}" _pkgconfig_path)
-    endif()
-
-    # Create a list of the possible pkgconfig subfolder (depending on
-    # the system
-    set(_lib_dirs)
-    if(NOT DEFINED CMAKE_SYSTEM_NAME
-        OR (CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU)$"
-            AND NOT CMAKE_CROSSCOMPILING))
-      if(EXISTS "/etc/debian_version") # is this a debian system ?
-        if(CMAKE_LIBRARY_ARCHITECTURE)
-          list(APPEND _lib_dirs "lib/${CMAKE_LIBRARY_ARCHITECTURE}/pkgconfig")
-        endif()
-      else()
-        # not debian, check the FIND_LIBRARY_USE_LIB32_PATHS and FIND_LIBRARY_USE_LIB64_PATHS properties
-        get_property(uselib32 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS)
-        if(uselib32 AND CMAKE_SIZEOF_VOID_P EQUAL 4)
-          list(APPEND _lib_dirs "lib32/pkgconfig")
-        endif()
-        get_property(uselib64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS)
-        if(uselib64 AND CMAKE_SIZEOF_VOID_P EQUAL 8)
-          list(APPEND _lib_dirs "lib64/pkgconfig")
-        endif()
-        get_property(uselibx32 GLOBAL PROPERTY FIND_LIBRARY_USE_LIBX32_PATHS)
-        if(uselibx32 AND CMAKE_INTERNAL_PLATFORM_ABI STREQUAL "ELF X32")
-          list(APPEND _lib_dirs "libx32/pkgconfig")
-        endif()
-      endif()
-    endif()
-    if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" AND NOT CMAKE_CROSSCOMPILING)
-      list(APPEND _lib_dirs "libdata/pkgconfig")
-    endif()
-    list(APPEND _lib_dirs "lib/pkgconfig")
-    list(APPEND _lib_dirs "share/pkgconfig")
-
-    # Check if directories exist and eventually append them to the
-    # pkgconfig path list
-    foreach(_prefix_dir ${_extra_paths})
-      foreach(_lib_dir ${_lib_dirs})
-        if(EXISTS "${_prefix_dir}/${_lib_dir}")
-          list(APPEND _pkgconfig_path "${_prefix_dir}/${_lib_dir}")
-          list(REMOVE_DUPLICATES _pkgconfig_path)
-        endif()
-      endforeach()
-    endforeach()
-
-    # Prepare and set the environment variable
-    if(NOT _pkgconfig_path STREQUAL "")
-      # remove empty values from the list
-      list(REMOVE_ITEM _pkgconfig_path "")
-      file(TO_NATIVE_PATH "${_pkgconfig_path}" _pkgconfig_path)
-      if(CMAKE_HOST_UNIX)
-        string(REPLACE ";" ":" _pkgconfig_path "${_pkgconfig_path}")
-        string(REPLACE "\\ " " " _pkgconfig_path "${_pkgconfig_path}")
-      endif()
-      set(ENV{PKG_CONFIG_PATH} "${_pkgconfig_path}")
-    endif()
-
-    # Unset variables
-    unset(_lib_dirs)
-    unset(_pkgconfig_path)
-  endif()
-endmacro()
-
-macro(_pkg_restore_path_internal)
-  if(NOT _extra_paths STREQUAL "")
-    # Restore the environment variable
-    set(ENV{PKG_CONFIG_PATH} "${_pkgconfig_path_old}")
-  endif()
-
-  unset(_extra_paths)
-  unset(_pkgconfig_path_old)
-endmacro()
-
-# pkg-config returns frameworks in --libs-only-other
-# they need to be in ${_prefix}_LIBRARIES so "-framework a -framework b" does
-# not incorrectly be combined to "-framework a b"
-function(_pkgconfig_extract_frameworks _prefix)
-  set(ldflags "${${_prefix}_LDFLAGS_OTHER}")
-  list(FIND ldflags "-framework" FR_POS)
-  list(LENGTH ldflags LD_LENGTH)
-
-  # reduce length by 1 as we need "-framework" and the next entry
-  math(EXPR LD_LENGTH "${LD_LENGTH} - 1")
-  while (FR_POS GREATER -1 AND LD_LENGTH GREATER FR_POS)
-    list(REMOVE_AT ldflags ${FR_POS})
-    list(GET ldflags ${FR_POS} HEAD)
-    list(REMOVE_AT ldflags ${FR_POS})
-    math(EXPR LD_LENGTH "${LD_LENGTH} - 2")
-
-    list(APPEND LIBS "-framework ${HEAD}")
-
-    list(FIND ldflags "-framework" FR_POS)
-  endwhile ()
-  set(${_prefix}_LIBRARIES ${${_prefix}_LIBRARIES} ${LIBS} PARENT_SCOPE)
-  set(${_prefix}_LDFLAGS_OTHER "${ldflags}" PARENT_SCOPE)
-endfunction()
-
-# pkg-config returns -isystem include directories in --cflags-only-other,
-# depending on the version and if there is a space between -isystem and
-# the actual path
-function(_pkgconfig_extract_isystem _prefix)
-  set(cflags "${${_prefix}_CFLAGS_OTHER}")
-  set(outflags "")
-  set(incdirs "${${_prefix}_INCLUDE_DIRS}")
-
-  set(next_is_isystem FALSE)
-  foreach (THING IN LISTS cflags)
-    # This may filter "-isystem -isystem". That would not work anyway,
-    # so let it happen.
-    if (THING STREQUAL "-isystem")
-      set(next_is_isystem TRUE)
-      continue()
-    endif ()
-    if (next_is_isystem)
-      set(next_is_isystem FALSE)
-      list(APPEND incdirs "${THING}")
-    elseif (THING MATCHES "^-isystem")
-      string(SUBSTRING "${THING}" 8 -1 THING)
-      list(APPEND incdirs "${THING}")
-    else ()
-      list(APPEND outflags "${THING}")
-    endif ()
-  endforeach ()
-  set(${_prefix}_CFLAGS_OTHER "${outflags}" PARENT_SCOPE)
-  set(${_prefix}_INCLUDE_DIRS "${incdirs}" PARENT_SCOPE)
-endfunction()
-
-###
-macro(_pkg_check_modules_internal _is_required _is_silent _no_cmake_path _no_cmake_environment_path _imp_target _imp_target_global _prefix)
-  _pkgconfig_unset(${_prefix}_FOUND)
-  _pkgconfig_unset(${_prefix}_VERSION)
-  _pkgconfig_unset(${_prefix}_PREFIX)
-  _pkgconfig_unset(${_prefix}_INCLUDEDIR)
-  _pkgconfig_unset(${_prefix}_LIBDIR)
-  _pkgconfig_unset(${_prefix}_MODULE_NAME)
-  _pkgconfig_unset(${_prefix}_LIBS)
-  _pkgconfig_unset(${_prefix}_LIBS_L)
-  _pkgconfig_unset(${_prefix}_LIBS_PATHS)
-  _pkgconfig_unset(${_prefix}_LIBS_OTHER)
-  _pkgconfig_unset(${_prefix}_CFLAGS)
-  _pkgconfig_unset(${_prefix}_CFLAGS_I)
-  _pkgconfig_unset(${_prefix}_CFLAGS_OTHER)
-  _pkgconfig_unset(${_prefix}_STATIC_LIBDIR)
-  _pkgconfig_unset(${_prefix}_STATIC_LIBS)
-  _pkgconfig_unset(${_prefix}_STATIC_LIBS_L)
-  _pkgconfig_unset(${_prefix}_STATIC_LIBS_PATHS)
-  _pkgconfig_unset(${_prefix}_STATIC_LIBS_OTHER)
-  _pkgconfig_unset(${_prefix}_STATIC_CFLAGS)
-  _pkgconfig_unset(${_prefix}_STATIC_CFLAGS_I)
-  _pkgconfig_unset(${_prefix}_STATIC_CFLAGS_OTHER)
-
-  # create a better addressable variable of the modules and calculate its size
-  set(_pkg_check_modules_list ${ARGN})
-  list(LENGTH _pkg_check_modules_list _pkg_check_modules_cnt)
-
-  if(PKG_CONFIG_EXECUTABLE)
-    # give out status message telling checked module
-    if (NOT ${_is_silent})
-      if (_pkg_check_modules_cnt EQUAL 1)
-        message(STATUS "Checking for module '${_pkg_check_modules_list}'")
-      else()
-        message(STATUS "Checking for modules '${_pkg_check_modules_list}'")
-      endif()
-    endif()
-
-    set(_pkg_check_modules_packages)
-    set(_pkg_check_modules_failed)
-
-    _pkg_set_path_internal()
-
-    # iterate through module list and check whether they exist and match the required version
-    foreach (_pkg_check_modules_pkg ${_pkg_check_modules_list})
-      set(_pkg_check_modules_exist_query)
-
-      # check whether version is given
-      if (_pkg_check_modules_pkg MATCHES "(.*[^><])(=|[><]=?)(.*)")
-        set(_pkg_check_modules_pkg_name "${CMAKE_MATCH_1}")
-        set(_pkg_check_modules_pkg_op "${CMAKE_MATCH_2}")
-        set(_pkg_check_modules_pkg_ver "${CMAKE_MATCH_3}")
-      else()
-        set(_pkg_check_modules_pkg_name "${_pkg_check_modules_pkg}")
-        set(_pkg_check_modules_pkg_op)
-        set(_pkg_check_modules_pkg_ver)
-      endif()
-
-      _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_VERSION)
-      _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_PREFIX)
-      _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_INCLUDEDIR)
-      _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_LIBDIR)
-
-      list(APPEND _pkg_check_modules_packages    "${_pkg_check_modules_pkg_name}")
-
-      # create the final query which is of the format:
-      # * <pkg-name> > <version>
-      # * <pkg-name> >= <version>
-      # * <pkg-name> = <version>
-      # * <pkg-name> <= <version>
-      # * <pkg-name> < <version>
-      # * --exists <pkg-name>
-      list(APPEND _pkg_check_modules_exist_query --print-errors --short-errors)
-      if (_pkg_check_modules_pkg_op)
-        list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_name} ${_pkg_check_modules_pkg_op} ${_pkg_check_modules_pkg_ver}")
-      else()
-        list(APPEND _pkg_check_modules_exist_query --exists)
-        list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_name}")
-      endif()
-
-      # execute the query
-      execute_process(
-        COMMAND ${PKG_CONFIG_EXECUTABLE} ${_pkg_check_modules_exist_query}
-        RESULT_VARIABLE _pkgconfig_retval
-        ERROR_VARIABLE _pkgconfig_error
-        ERROR_STRIP_TRAILING_WHITESPACE)
-
-      # evaluate result and tell failures
-      if (_pkgconfig_retval)
-        if(NOT ${_is_silent})
-          message(STATUS "  ${_pkgconfig_error}")
-        endif()
-
-        set(_pkg_check_modules_failed 1)
-      endif()
-    endforeach()
-
-    if(_pkg_check_modules_failed)
-      # fail when requested
-      if (${_is_required})
-        message(FATAL_ERROR "A required package was not found")
-      endif ()
-    else()
-      # when we are here, we checked whether requested modules
-      # exist. Now, go through them and set variables
-
-      _pkgconfig_set(${_prefix}_FOUND 1)
-      list(LENGTH _pkg_check_modules_packages pkg_count)
-
-      # iterate through all modules again and set individual variables
-      foreach (_pkg_check_modules_pkg ${_pkg_check_modules_packages})
-        # handle case when there is only one package required
-        if (pkg_count EQUAL 1)
-          set(_pkg_check_prefix "${_prefix}")
-        else()
-          set(_pkg_check_prefix "${_prefix}_${_pkg_check_modules_pkg}")
-        endif()
-
-        _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" VERSION    ""   --modversion )
-        pkg_get_variable("${_pkg_check_prefix}_PREFIX" ${_pkg_check_modules_pkg} "prefix")
-        pkg_get_variable("${_pkg_check_prefix}_INCLUDEDIR" ${_pkg_check_modules_pkg} "includedir")
-        pkg_get_variable("${_pkg_check_prefix}_LIBDIR" ${_pkg_check_modules_pkg} "libdir")
-        foreach (variable IN ITEMS PREFIX INCLUDEDIR LIBDIR)
-          _pkgconfig_set("${_pkg_check_prefix}_${variable}" "${${_pkg_check_prefix}_${variable}}")
-        endforeach ()
-          _pkgconfig_set("${_pkg_check_prefix}_MODULE_NAME" "${_pkg_check_modules_pkg}")
-
-        if (NOT ${_is_silent})
-          message(STATUS "  Found ${_pkg_check_modules_pkg}, version ${_pkgconfig_VERSION}")
-        endif ()
-      endforeach()
-
-      # set variables which are combined for multiple modules
-      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LIBRARIES     "(^| )-l"             --libs-only-l )
-      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LIBRARY_DIRS  "(^| )-L"             --libs-only-L )
-      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LDFLAGS       ""                    --libs )
-      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LDFLAGS_OTHER ""                    --libs-only-other )
-
-      if (APPLE AND "-framework" IN_LIST ${_prefix}_LDFLAGS_OTHER)
-        _pkgconfig_extract_frameworks("${_prefix}")
-      endif()
-
-      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" INCLUDE_DIRS  "(^| )(-I|-isystem ?)" --cflags-only-I )
-      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" CFLAGS        ""                    --cflags )
-      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" CFLAGS_OTHER  ""                    --cflags-only-other )
-
-      if (${_prefix}_CFLAGS_OTHER MATCHES "-isystem")
-        _pkgconfig_extract_isystem("${_prefix}")
-      endif ()
-
-      _pkg_recalculate("${_prefix}" ${_no_cmake_path} ${_no_cmake_environment_path} ${_imp_target} ${_imp_target_global})
-    endif()
-
-    _pkg_restore_path_internal()
-  else()
-    if (${_is_required})
-      message(SEND_ERROR "pkg-config tool not found")
-    endif ()
-  endif()
-endmacro()
-
-
-#[========================================[.rst:
-.. command:: pkg_check_modules
-
-  Checks for all the given modules, setting a variety of result variables in
-  the calling scope.
-
-  .. code-block:: cmake
-
-    pkg_check_modules(<prefix>
-                      [REQUIRED] [QUIET]
-                      [NO_CMAKE_PATH]
-                      [NO_CMAKE_ENVIRONMENT_PATH]
-                      [IMPORTED_TARGET [GLOBAL]]
-                      <moduleSpec> [<moduleSpec>...])
-
-  When the ``REQUIRED`` argument is given, the command will fail with an error
-  if module(s) could not be found.
-
-  When the ``QUIET`` argument is given, no status messages will be printed.
-
-  By default, if :variable:`CMAKE_MINIMUM_REQUIRED_VERSION` is 3.1 or
-  later, or if :variable:`PKG_CONFIG_USE_CMAKE_PREFIX_PATH` is set to a
-  boolean ``True`` value, then the :variable:`CMAKE_PREFIX_PATH`,
-  :variable:`CMAKE_FRAMEWORK_PATH`, and :variable:`CMAKE_APPBUNDLE_PATH` cache
-  and environment variables will be added to the ``pkg-config`` search path.
-  The ``NO_CMAKE_PATH`` and ``NO_CMAKE_ENVIRONMENT_PATH`` arguments
-  disable this behavior for the cache variables and environment variables
-  respectively.
-
-  The ``IMPORTED_TARGET`` argument will create an imported target named
-  ``PkgConfig::<prefix>`` that can be passed directly as an argument to
-  :command:`target_link_libraries`. The ``GLOBAL`` argument will make the
-  imported target available in global scope.
-
-  Each ``<moduleSpec>`` can be either a bare module name or it can be a
-  module name with a version constraint (operators ``=``, ``<``, ``>``,
-  ``<=`` and ``>=`` are supported).  The following are examples for a module
-  named ``foo`` with various constraints:
-
-  - ``foo`` matches any version.
-  - ``foo<2`` only matches versions before 2.
-  - ``foo>=3.1`` matches any version from 3.1 or later.
-  - ``foo=1.2.3`` requires that foo must be exactly version 1.2.3.
-
-  The following variables may be set upon return.  Two sets of values exist:
-  One for the common case (``<XXX> = <prefix>``) and another for the
-  information ``pkg-config`` provides when called with the ``--static``
-  option (``<XXX> = <prefix>_STATIC``).
-
-  ``<XXX>_FOUND``
-    set to 1 if module(s) exist
-  ``<XXX>_LIBRARIES``
-    only the libraries (without the '-l')
-  ``<XXX>_LINK_LIBRARIES``
-    the libraries and their absolute paths
-  ``<XXX>_LIBRARY_DIRS``
-    the paths of the libraries (without the '-L')
-  ``<XXX>_LDFLAGS``
-    all required linker flags
-  ``<XXX>_LDFLAGS_OTHER``
-    all other linker flags
-  ``<XXX>_INCLUDE_DIRS``
-    the '-I' preprocessor flags (without the '-I')
-  ``<XXX>_CFLAGS``
-    all required cflags
-  ``<XXX>_CFLAGS_OTHER``
-    the other compiler flags
-
-  All but ``<XXX>_FOUND`` may be a :ref:`;-list <CMake Language Lists>` if the
-  associated variable returned from ``pkg-config`` has multiple values.
-
-  There are some special variables whose prefix depends on the number of
-  ``<moduleSpec>`` given.  When there is only one ``<moduleSpec>``,
-  ``<YYY>`` will simply be ``<prefix>``, but if two or more ``<moduleSpec>``
-  items are given, ``<YYY>`` will be ``<prefix>_<moduleName>``.
-
-  ``<YYY>_VERSION``
-    version of the module
-  ``<YYY>_PREFIX``
-    prefix directory of the module
-  ``<YYY>_INCLUDEDIR``
-    include directory of the module
-  ``<YYY>_LIBDIR``
-    lib directory of the module
-
-  Examples:
-
-  .. code-block:: cmake
-
-    pkg_check_modules (GLIB2 glib-2.0)
-
-  Looks for any version of glib2.  If found, the output variable
-  ``GLIB2_VERSION`` will hold the actual version found.
-
-  .. code-block:: cmake
-
-    pkg_check_modules (GLIB2 glib-2.0>=2.10)
-
-  Looks for at least version 2.10 of glib2.  If found, the output variable
-  ``GLIB2_VERSION`` will hold the actual version found.
-
-  .. code-block:: cmake
-
-    pkg_check_modules (FOO glib-2.0>=2.10 gtk+-2.0)
-
-  Looks for both glib2-2.0 (at least version 2.10) and any version of
-  gtk2+-2.0.  Only if both are found will ``FOO`` be considered found.
-  The ``FOO_glib-2.0_VERSION`` and ``FOO_gtk+-2.0_VERSION`` variables will be
-  set to their respective found module versions.
-
-  .. code-block:: cmake
-
-    pkg_check_modules (XRENDER REQUIRED xrender)
-
-  Requires any version of ``xrender``.  Example output variables set by a
-  successful call::
-
-    XRENDER_LIBRARIES=Xrender;X11
-    XRENDER_STATIC_LIBRARIES=Xrender;X11;pthread;Xau;Xdmcp
-#]========================================]
-macro(pkg_check_modules _prefix _module0)
-  _pkgconfig_parse_options(_pkg_modules _pkg_is_required _pkg_is_silent _no_cmake_path _no_cmake_environment_path _imp_target _imp_target_global "${_module0}" ${ARGN})
-  # check cached value
-  if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND OR
-      (NOT "${ARGN}" STREQUAL "" AND NOT "${__pkg_config_arguments_${_prefix}}" STREQUAL "${_module0};${ARGN}") OR
-      (    "${ARGN}" STREQUAL "" AND NOT "${__pkg_config_arguments_${_prefix}}" STREQUAL "${_module0}"))
-    _pkg_check_modules_internal("${_pkg_is_required}" "${_pkg_is_silent}" ${_no_cmake_path} ${_no_cmake_environment_path} ${_imp_target} ${_imp_target_global} "${_prefix}" ${_pkg_modules})
-
-    _pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION})
-    if (${_prefix}_FOUND)
-      _pkgconfig_set(__pkg_config_arguments_${_prefix} "${_module0};${ARGN}")
-    endif()
-  else()
-    if (${_prefix}_FOUND)
-      _pkg_recalculate("${_prefix}" ${_no_cmake_path} ${_no_cmake_environment_path} ${_imp_target} ${_imp_target_global})
-    endif()
-  endif()
-endmacro()
-
-
-#[========================================[.rst:
-.. command:: pkg_search_module
-
-  The behavior of this command is the same as :command:`pkg_check_modules`,
-  except that rather than checking for all the specified modules, it searches
-  for just the first successful match.
-
-  .. code-block:: cmake
-
-    pkg_search_module(<prefix>
-                      [REQUIRED] [QUIET]
-                      [NO_CMAKE_PATH]
-                      [NO_CMAKE_ENVIRONMENT_PATH]
-                      [IMPORTED_TARGET [GLOBAL]]
-                      <moduleSpec> [<moduleSpec>...])
-
-  If a module is found, the ``<prefix>_MODULE_NAME`` variable will contain the
-  name of the matching module. This variable can be used if you need to run
-  :command:`pkg_get_variable`.
-
-  Example:
-
-  .. code-block:: cmake
-
-    pkg_search_module (BAR libxml-2.0 libxml2 libxml>=2)
-#]========================================]
-macro(pkg_search_module _prefix _module0)
-  _pkgconfig_parse_options(_pkg_modules_alt _pkg_is_required _pkg_is_silent _no_cmake_path _no_cmake_environment_path _imp_target _imp_target_global "${_module0}" ${ARGN})
-  # check cached value
-  if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND)
-    set(_pkg_modules_found 0)
-
-    if (NOT ${_pkg_is_silent})
-      message(STATUS "Checking for one of the modules '${_pkg_modules_alt}'")
-    endif ()
-
-    # iterate through all modules and stop at the first working one.
-    foreach(_pkg_alt ${_pkg_modules_alt})
-      if(NOT _pkg_modules_found)
-        _pkg_check_modules_internal(0 1 ${_no_cmake_path} ${_no_cmake_environment_path} ${_imp_target} ${_imp_target_global} "${_prefix}" "${_pkg_alt}")
-      endif()
-
-      if (${_prefix}_FOUND)
-        set(_pkg_modules_found 1)
-        break()
-      endif()
-    endforeach()
-
-    if (NOT ${_prefix}_FOUND)
-      if(${_pkg_is_required})
-        message(SEND_ERROR "None of the required '${_pkg_modules_alt}' found")
-      endif()
-    endif()
-
-    _pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION})
-  elseif (${_prefix}_FOUND)
-    _pkg_recalculate("${_prefix}" ${_no_cmake_path} ${_no_cmake_environment_path} ${_imp_target} ${_imp_target_global})
-  endif()
-endmacro()
-
-#[========================================[.rst:
-.. command:: pkg_get_variable
-
-  Retrieves the value of a pkg-config variable ``varName`` and stores it in the
-  result variable ``resultVar`` in the calling scope.
-
-  .. code-block:: cmake
-
-    pkg_get_variable(<resultVar> <moduleName> <varName>)
-
-  If ``pkg-config`` returns multiple values for the specified variable,
-  ``resultVar`` will contain a :ref:`;-list <CMake Language Lists>`.
-
-  For example:
-
-  .. code-block:: cmake
-
-    pkg_get_variable(GI_GIRDIR gobject-introspection-1.0 girdir)
-#]========================================]
-function (pkg_get_variable result pkg variable)
-  _pkg_set_path_internal()
-  _pkgconfig_invoke("${pkg}" "prefix" "result" "" "--variable=${variable}")
-  set("${result}"
-    "${prefix_result}"
-    PARENT_SCOPE)
-  _pkg_restore_path_internal()
-endfunction ()
-
-
-#[========================================[.rst:
-Variables Affecting Behavior
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. variable:: PKG_CONFIG_EXECUTABLE
-
-  This can be set to the path of the pkg-config executable.  If not provided,
-  it will be set by the module as a result of calling :command:`find_program`
-  internally.  The ``PKG_CONFIG`` environment variable can be used as a hint.
-
-.. variable:: PKG_CONFIG_USE_CMAKE_PREFIX_PATH
-
-  Specifies whether :command:`pkg_check_modules` and
-  :command:`pkg_search_module` should add the paths in the
-  :variable:`CMAKE_PREFIX_PATH`, :variable:`CMAKE_FRAMEWORK_PATH` and
-  :variable:`CMAKE_APPBUNDLE_PATH` cache and environment variables to the
-  ``pkg-config`` search path.
-
-  If this variable is not set, this behavior is enabled by default if
-  :variable:`CMAKE_MINIMUM_REQUIRED_VERSION` is 3.1 or later, disabled
-  otherwise.
-#]========================================]
-
-
-### Local Variables:
-### mode: cmake
-### End:
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FindPostgreSQL.cmake b/share/cmake-3.18/Modules/FindPostgreSQL.cmake
deleted file mode 100644
index 1927aa4..0000000
--- a/share/cmake-3.18/Modules/FindPostgreSQL.cmake
+++ /dev/null
@@ -1,284 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindPostgreSQL
---------------
-
-Find the PostgreSQL installation.
-
-IMPORTED Targets
-^^^^^^^^^^^^^^^^
-
-This module defines :prop_tgt:`IMPORTED` target ``PostgreSQL::PostgreSQL``
-if PostgreSQL has been found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``PostgreSQL_FOUND``
-  True if PostgreSQL is found.
-``PostgreSQL_LIBRARIES``
-  the PostgreSQL libraries needed for linking
-``PostgreSQL_INCLUDE_DIRS``
-  the directories of the PostgreSQL headers
-``PostgreSQL_LIBRARY_DIRS``
-  the link directories for PostgreSQL libraries
-``PostgreSQL_VERSION_STRING``
-  the version of PostgreSQL found
-#]=======================================================================]
-
-# ----------------------------------------------------------------------------
-# History:
-# This module is derived from the module originally found in the VTK source tree.
-#
-# ----------------------------------------------------------------------------
-# Note:
-# PostgreSQL_ADDITIONAL_VERSIONS is a variable that can be used to set the
-# version number of the implementation of PostgreSQL.
-# In Windows the default installation of PostgreSQL uses that as part of the path.
-# E.g C:\Program Files\PostgreSQL\8.4.
-# Currently, the following version numbers are known to this module:
-# "11" "10" "9.6" "9.5" "9.4" "9.3" "9.2" "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0"
-#
-# To use this variable just do something like this:
-# set(PostgreSQL_ADDITIONAL_VERSIONS "9.2" "8.4.4")
-# before calling find_package(PostgreSQL) in your CMakeLists.txt file.
-# This will mean that the versions you set here will be found first in the order
-# specified before the default ones are searched.
-#
-# ----------------------------------------------------------------------------
-# You may need to manually set:
-#  PostgreSQL_INCLUDE_DIR  - the path to where the PostgreSQL include files are.
-#  PostgreSQL_LIBRARY_DIR  - The path to where the PostgreSQL library files are.
-# If FindPostgreSQL.cmake cannot find the include files or the library files.
-#
-# ----------------------------------------------------------------------------
-# The following variables are set if PostgreSQL is found:
-#  PostgreSQL_FOUND         - Set to true when PostgreSQL is found.
-#  PostgreSQL_INCLUDE_DIRS  - Include directories for PostgreSQL
-#  PostgreSQL_LIBRARY_DIRS  - Link directories for PostgreSQL libraries
-#  PostgreSQL_LIBRARIES     - The PostgreSQL libraries.
-#
-# The ``PostgreSQL::PostgreSQL`` imported target is also created.
-#
-# ----------------------------------------------------------------------------
-# If you have installed PostgreSQL in a non-standard location.
-# (Please note that in the following comments, it is assumed that <Your Path>
-# points to the root directory of the include directory of PostgreSQL.)
-# Then you have three options.
-# 1) After CMake runs, set PostgreSQL_INCLUDE_DIR to <Your Path>/include and
-#    PostgreSQL_LIBRARY_DIR to wherever the library pq (or libpq in windows) is
-# 2) Use CMAKE_INCLUDE_PATH to set a path to <Your Path>/PostgreSQL<-version>. This will allow find_path()
-#    to locate PostgreSQL_INCLUDE_DIR by utilizing the PATH_SUFFIXES option. e.g. In your CMakeLists.txt file
-#    set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "<Your Path>/include")
-# 3) Set an environment variable called ${PostgreSQL_ROOT} that points to the root of where you have
-#    installed PostgreSQL, e.g. <Your Path>.
-#
-# ----------------------------------------------------------------------------
-
-set(PostgreSQL_INCLUDE_PATH_DESCRIPTION "top-level directory containing the PostgreSQL include directories. E.g /usr/local/include/PostgreSQL/8.4 or C:/Program Files/PostgreSQL/8.4/include")
-set(PostgreSQL_INCLUDE_DIR_MESSAGE "Set the PostgreSQL_INCLUDE_DIR cmake cache entry to the ${PostgreSQL_INCLUDE_PATH_DESCRIPTION}")
-set(PostgreSQL_LIBRARY_PATH_DESCRIPTION "top-level directory containing the PostgreSQL libraries.")
-set(PostgreSQL_LIBRARY_DIR_MESSAGE "Set the PostgreSQL_LIBRARY_DIR cmake cache entry to the ${PostgreSQL_LIBRARY_PATH_DESCRIPTION}")
-set(PostgreSQL_ROOT_DIR_MESSAGE "Set the PostgreSQL_ROOT system variable to where PostgreSQL is found on the machine E.g C:/Program Files/PostgreSQL/8.4")
-
-
-set(PostgreSQL_KNOWN_VERSIONS ${PostgreSQL_ADDITIONAL_VERSIONS}
-    "12" "11" "10" "9.6" "9.5" "9.4" "9.3" "9.2" "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0")
-
-# Define additional search paths for root directories.
-set( PostgreSQL_ROOT_DIRECTORIES
-   ENV PostgreSQL_ROOT
-   ${PostgreSQL_ROOT}
-)
-foreach(suffix ${PostgreSQL_KNOWN_VERSIONS})
-  if(WIN32)
-    list(APPEND PostgreSQL_LIBRARY_ADDITIONAL_SEARCH_SUFFIXES
-        "PostgreSQL/${suffix}/lib")
-    list(APPEND PostgreSQL_INCLUDE_ADDITIONAL_SEARCH_SUFFIXES
-        "PostgreSQL/${suffix}/include")
-    list(APPEND PostgreSQL_TYPE_ADDITIONAL_SEARCH_SUFFIXES
-        "PostgreSQL/${suffix}/include/server")
-  endif()
-  if(UNIX)
-    list(APPEND PostgreSQL_LIBRARY_ADDITIONAL_SEARCH_SUFFIXES
-        "postgresql${suffix}"
-        "pgsql-${suffix}/lib")
-    list(APPEND PostgreSQL_INCLUDE_ADDITIONAL_SEARCH_SUFFIXES
-        "postgresql${suffix}"
-        "postgresql/${suffix}"
-        "pgsql-${suffix}/include")
-    list(APPEND PostgreSQL_TYPE_ADDITIONAL_SEARCH_SUFFIXES
-        "postgresql${suffix}/server"
-        "postgresql/${suffix}/server"
-        "pgsql-${suffix}/include/server")
-  endif()
-endforeach()
-
-#
-# Look for an installation.
-#
-find_path(PostgreSQL_INCLUDE_DIR
-  NAMES libpq-fe.h
-  PATHS
-   # Look in other places.
-   ${PostgreSQL_ROOT_DIRECTORIES}
-  PATH_SUFFIXES
-    pgsql
-    postgresql
-    include
-    ${PostgreSQL_INCLUDE_ADDITIONAL_SEARCH_SUFFIXES}
-  # Help the user find it if we cannot.
-  DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
-)
-
-find_path(PostgreSQL_TYPE_INCLUDE_DIR
-  NAMES catalog/pg_type.h
-  PATHS
-   # Look in other places.
-   ${PostgreSQL_ROOT_DIRECTORIES}
-  PATH_SUFFIXES
-    postgresql
-    pgsql/server
-    postgresql/server
-    include/server
-    ${PostgreSQL_TYPE_ADDITIONAL_SEARCH_SUFFIXES}
-  # Help the user find it if we cannot.
-  DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
-)
-
-# The PostgreSQL library.
-set (PostgreSQL_LIBRARY_TO_FIND pq)
-# Setting some more prefixes for the library
-set (PostgreSQL_LIB_PREFIX "")
-if ( WIN32 )
-  set (PostgreSQL_LIB_PREFIX ${PostgreSQL_LIB_PREFIX} "lib")
-  set (PostgreSQL_LIBRARY_TO_FIND ${PostgreSQL_LIB_PREFIX}${PostgreSQL_LIBRARY_TO_FIND})
-endif()
-
-function(__postgresql_find_library _name)
-  find_library(${_name}
-   NAMES ${ARGN}
-   PATHS
-     ${PostgreSQL_ROOT_DIRECTORIES}
-   PATH_SUFFIXES
-     lib
-     ${PostgreSQL_LIBRARY_ADDITIONAL_SEARCH_SUFFIXES}
-   # Help the user find it if we cannot.
-   DOC "The ${PostgreSQL_LIBRARY_DIR_MESSAGE}"
-  )
-endfunction()
-
-# For compatibility with versions prior to this multi-config search, honor
-# any PostgreSQL_LIBRARY that is already specified and skip the search.
-if(PostgreSQL_LIBRARY)
-  set(PostgreSQL_LIBRARIES "${PostgreSQL_LIBRARY}")
-  get_filename_component(PostgreSQL_LIBRARY_DIR "${PostgreSQL_LIBRARY}" PATH)
-else()
-  __postgresql_find_library(PostgreSQL_LIBRARY_RELEASE ${PostgreSQL_LIBRARY_TO_FIND})
-  __postgresql_find_library(PostgreSQL_LIBRARY_DEBUG ${PostgreSQL_LIBRARY_TO_FIND}d)
-  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-  select_library_configurations(PostgreSQL)
-  mark_as_advanced(PostgreSQL_LIBRARY_RELEASE PostgreSQL_LIBRARY_DEBUG)
-  if(PostgreSQL_LIBRARY_RELEASE)
-    get_filename_component(PostgreSQL_LIBRARY_DIR "${PostgreSQL_LIBRARY_RELEASE}" PATH)
-  elseif(PostgreSQL_LIBRARY_DEBUG)
-    get_filename_component(PostgreSQL_LIBRARY_DIR "${PostgreSQL_LIBRARY_DEBUG}" PATH)
-  else()
-    set(PostgreSQL_LIBRARY_DIR "")
-  endif()
-endif()
-
-if (PostgreSQL_INCLUDE_DIR)
-  # Some platforms include multiple pg_config.hs for multi-lib configurations
-  # This is a temporary workaround.  A better solution would be to compile
-  # a dummy c file and extract the value of the symbol.
-  file(GLOB _PG_CONFIG_HEADERS "${PostgreSQL_INCLUDE_DIR}/pg_config*.h")
-  foreach(_PG_CONFIG_HEADER ${_PG_CONFIG_HEADERS})
-    if(EXISTS "${_PG_CONFIG_HEADER}")
-      file(STRINGS "${_PG_CONFIG_HEADER}" pgsql_version_str
-           REGEX "^#define[\t ]+PG_VERSION_NUM[\t ]+.*")
-      if(pgsql_version_str)
-        string(REGEX REPLACE "^#define[\t ]+PG_VERSION_NUM[\t ]+([0-9]*).*"
-               "\\1" _PostgreSQL_VERSION_NUM "${pgsql_version_str}")
-        break()
-      endif()
-    endif()
-  endforeach()
-  if (_PostgreSQL_VERSION_NUM)
-    # 9.x and older encoding
-    if (_PostgreSQL_VERSION_NUM LESS 100000)
-      math(EXPR _PostgreSQL_major_version "${_PostgreSQL_VERSION_NUM} / 10000")
-      math(EXPR _PostgreSQL_minor_version "${_PostgreSQL_VERSION_NUM} % 10000 / 100")
-      math(EXPR _PostgreSQL_patch_version "${_PostgreSQL_VERSION_NUM} % 100")
-      set(PostgreSQL_VERSION_STRING "${_PostgreSQL_major_version}.${_PostgreSQL_minor_version}.${_PostgreSQL_patch_version}")
-      unset(_PostgreSQL_major_version)
-      unset(_PostgreSQL_minor_version)
-      unset(_PostgreSQL_patch_version)
-    else ()
-      math(EXPR _PostgreSQL_major_version "${_PostgreSQL_VERSION_NUM} / 10000")
-      math(EXPR _PostgreSQL_minor_version "${_PostgreSQL_VERSION_NUM} % 10000")
-      set(PostgreSQL_VERSION_STRING "${_PostgreSQL_major_version}.${_PostgreSQL_minor_version}")
-      unset(_PostgreSQL_major_version)
-      unset(_PostgreSQL_minor_version)
-    endif ()
-  else ()
-    foreach(_PG_CONFIG_HEADER ${_PG_CONFIG_HEADERS})
-      if(EXISTS "${_PG_CONFIG_HEADER}")
-        file(STRINGS "${_PG_CONFIG_HEADER}" pgsql_version_str
-             REGEX "^#define[\t ]+PG_VERSION[\t ]+\".*\"")
-        if(pgsql_version_str)
-          string(REGEX REPLACE "^#define[\t ]+PG_VERSION[\t ]+\"([^\"]*)\".*"
-                 "\\1" PostgreSQL_VERSION_STRING "${pgsql_version_str}")
-          break()
-        endif()
-      endif()
-    endforeach()
-  endif ()
-  unset(_PostgreSQL_VERSION_NUM)
-  unset(pgsql_version_str)
-endif()
-
-# Did we find anything?
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(PostgreSQL
-                                  REQUIRED_VARS PostgreSQL_LIBRARY PostgreSQL_INCLUDE_DIR PostgreSQL_TYPE_INCLUDE_DIR
-                                  VERSION_VAR PostgreSQL_VERSION_STRING)
-set(PostgreSQL_FOUND  ${POSTGRESQL_FOUND})
-
-function(__postgresql_import_library _target _var _config)
-  if(_config)
-    set(_config_suffix "_${_config}")
-  else()
-    set(_config_suffix "")
-  endif()
-
-  set(_lib "${${_var}${_config_suffix}}")
-  if(EXISTS "${_lib}")
-    if(_config)
-      set_property(TARGET ${_target} APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS ${_config})
-    endif()
-    set_target_properties(${_target} PROPERTIES
-      IMPORTED_LOCATION${_config_suffix} "${_lib}")
-  endif()
-endfunction()
-
-# Now try to get the include and library path.
-if(PostgreSQL_FOUND)
-  if (NOT TARGET PostgreSQL::PostgreSQL)
-    add_library(PostgreSQL::PostgreSQL UNKNOWN IMPORTED)
-    set_target_properties(PostgreSQL::PostgreSQL PROPERTIES
-      INTERFACE_INCLUDE_DIRECTORIES "${PostgreSQL_INCLUDE_DIR};${PostgreSQL_TYPE_INCLUDE_DIR}")
-    __postgresql_import_library(PostgreSQL::PostgreSQL PostgreSQL_LIBRARY "")
-    __postgresql_import_library(PostgreSQL::PostgreSQL PostgreSQL_LIBRARY "RELEASE")
-    __postgresql_import_library(PostgreSQL::PostgreSQL PostgreSQL_LIBRARY "DEBUG")
-  endif ()
-  set(PostgreSQL_INCLUDE_DIRS ${PostgreSQL_INCLUDE_DIR} ${PostgreSQL_TYPE_INCLUDE_DIR} )
-  set(PostgreSQL_LIBRARY_DIRS ${PostgreSQL_LIBRARY_DIR} )
-endif()
-
-mark_as_advanced(PostgreSQL_INCLUDE_DIR PostgreSQL_TYPE_INCLUDE_DIR)
diff --git a/share/cmake-3.18/Modules/FindProtobuf.cmake b/share/cmake-3.18/Modules/FindProtobuf.cmake
deleted file mode 100644
index e09717d..0000000
--- a/share/cmake-3.18/Modules/FindProtobuf.cmake
+++ /dev/null
@@ -1,661 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindProtobuf
-------------
-
-Locate and configure the Google Protocol Buffers library.
-
-The following variables can be set and are optional:
-
-``Protobuf_SRC_ROOT_FOLDER``
-  When compiling with MSVC, if this cache variable is set
-  the protobuf-default VS project build locations
-  (vsprojects/Debug and vsprojects/Release
-  or vsprojects/x64/Debug and vsprojects/x64/Release)
-  will be searched for libraries and binaries.
-``Protobuf_IMPORT_DIRS``
-  List of additional directories to be searched for
-  imported .proto files.
-``Protobuf_DEBUG``
-  Show debug messages.
-``Protobuf_USE_STATIC_LIBS``
-  Set to ON to force the use of the static libraries.
-  Default is OFF.
-
-Defines the following variables:
-
-``Protobuf_FOUND``
-  Found the Google Protocol Buffers library
-  (libprotobuf & header files)
-``Protobuf_VERSION``
-  Version of package found.
-``Protobuf_INCLUDE_DIRS``
-  Include directories for Google Protocol Buffers
-``Protobuf_LIBRARIES``
-  The protobuf libraries
-``Protobuf_PROTOC_LIBRARIES``
-  The protoc libraries
-``Protobuf_LITE_LIBRARIES``
-  The protobuf-lite libraries
-
-The following :prop_tgt:`IMPORTED` targets are also defined:
-
-``protobuf::libprotobuf``
-  The protobuf library.
-``protobuf::libprotobuf-lite``
-  The protobuf lite library.
-``protobuf::libprotoc``
-  The protoc library.
-``protobuf::protoc``
-  The protoc compiler.
-
-The following cache variables are also available to set or use:
-
-``Protobuf_LIBRARY``
-  The protobuf library
-``Protobuf_PROTOC_LIBRARY``
-  The protoc library
-``Protobuf_INCLUDE_DIR``
-  The include directory for protocol buffers
-``Protobuf_PROTOC_EXECUTABLE``
-  The protoc compiler
-``Protobuf_LIBRARY_DEBUG``
-  The protobuf library (debug)
-``Protobuf_PROTOC_LIBRARY_DEBUG``
-  The protoc library (debug)
-``Protobuf_LITE_LIBRARY``
-  The protobuf lite library
-``Protobuf_LITE_LIBRARY_DEBUG``
-  The protobuf lite library (debug)
-
-Example:
-
-.. code-block:: cmake
-
-  find_package(Protobuf REQUIRED)
-  include_directories(${Protobuf_INCLUDE_DIRS})
-  include_directories(${CMAKE_CURRENT_BINARY_DIR})
-  protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS foo.proto)
-  protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS EXPORT_MACRO DLL_EXPORT foo.proto)
-  protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS DESCRIPTORS PROTO_DESCS foo.proto)
-  protobuf_generate_python(PROTO_PY foo.proto)
-  add_executable(bar bar.cc ${PROTO_SRCS} ${PROTO_HDRS})
-  target_link_libraries(bar ${Protobuf_LIBRARIES})
-
-.. note::
-  The ``protobuf_generate_cpp`` and ``protobuf_generate_python``
-  functions and :command:`add_executable` or :command:`add_library`
-  calls only work properly within the same directory.
-
-.. command:: protobuf_generate_cpp
-
-  Add custom commands to process ``.proto`` files to C++::
-
-    protobuf_generate_cpp (<SRCS> <HDRS>
-        [DESCRIPTORS <DESC>] [EXPORT_MACRO <MACRO>] [<ARGN>...])
-
-  ``SRCS``
-    Variable to define with autogenerated source files
-  ``HDRS``
-    Variable to define with autogenerated header files
-  ``DESCRIPTORS``
-    Variable to define with autogenerated descriptor files, if requested.
-  ``EXPORT_MACRO``
-    is a macro which should expand to ``__declspec(dllexport)`` or
-    ``__declspec(dllimport)`` depending on what is being compiled.
-  ``ARGN``
-    ``.proto`` files
-
-.. command:: protobuf_generate_python
-
-  Add custom commands to process ``.proto`` files to Python::
-
-    protobuf_generate_python (<PY> [<ARGN>...])
-
-  ``PY``
-    Variable to define with autogenerated Python files
-  ``ARGN``
-    ``.proto`` files
-#]=======================================================================]
-
-function(protobuf_generate)
-  set(_options APPEND_PATH DESCRIPTORS)
-  set(_singleargs LANGUAGE OUT_VAR EXPORT_MACRO PROTOC_OUT_DIR)
-  if(COMMAND target_sources)
-    list(APPEND _singleargs TARGET)
-  endif()
-  set(_multiargs PROTOS IMPORT_DIRS GENERATE_EXTENSIONS)
-
-  cmake_parse_arguments(protobuf_generate "${_options}" "${_singleargs}" "${_multiargs}" "${ARGN}")
-
-  if(NOT protobuf_generate_PROTOS AND NOT protobuf_generate_TARGET)
-    message(SEND_ERROR "Error: protobuf_generate called without any targets or source files")
-    return()
-  endif()
-
-  if(NOT protobuf_generate_OUT_VAR AND NOT protobuf_generate_TARGET)
-    message(SEND_ERROR "Error: protobuf_generate called without a target or output variable")
-    return()
-  endif()
-
-  if(NOT protobuf_generate_LANGUAGE)
-    set(protobuf_generate_LANGUAGE cpp)
-  endif()
-  string(TOLOWER ${protobuf_generate_LANGUAGE} protobuf_generate_LANGUAGE)
-
-  if(NOT protobuf_generate_PROTOC_OUT_DIR)
-    set(protobuf_generate_PROTOC_OUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
-  endif()
-
-  if(protobuf_generate_EXPORT_MACRO AND protobuf_generate_LANGUAGE STREQUAL cpp)
-    set(_dll_export_decl "dllexport_decl=${protobuf_generate_EXPORT_MACRO}:")
-  endif()
-
-  if(NOT protobuf_generate_GENERATE_EXTENSIONS)
-    if(protobuf_generate_LANGUAGE STREQUAL cpp)
-      set(protobuf_generate_GENERATE_EXTENSIONS .pb.h .pb.cc)
-    elseif(protobuf_generate_LANGUAGE STREQUAL python)
-      set(protobuf_generate_GENERATE_EXTENSIONS _pb2.py)
-    else()
-      message(SEND_ERROR "Error: protobuf_generate given unknown Language ${LANGUAGE}, please provide a value for GENERATE_EXTENSIONS")
-      return()
-    endif()
-  endif()
-
-  if(protobuf_generate_TARGET)
-    get_target_property(_source_list ${protobuf_generate_TARGET} SOURCES)
-    foreach(_file ${_source_list})
-      if(_file MATCHES "proto$")
-        list(APPEND protobuf_generate_PROTOS ${_file})
-      endif()
-    endforeach()
-  endif()
-
-  if(NOT protobuf_generate_PROTOS)
-    message(SEND_ERROR "Error: protobuf_generate could not find any .proto files")
-    return()
-  endif()
-
-  if(protobuf_generate_APPEND_PATH)
-    # Create an include path for each file specified
-    foreach(_file ${protobuf_generate_PROTOS})
-      get_filename_component(_abs_file ${_file} ABSOLUTE)
-      get_filename_component(_abs_path ${_abs_file} PATH)
-      list(FIND _protobuf_include_path ${_abs_path} _contains_already)
-      if(${_contains_already} EQUAL -1)
-          list(APPEND _protobuf_include_path -I ${_abs_path})
-      endif()
-    endforeach()
-  else()
-    set(_protobuf_include_path -I ${CMAKE_CURRENT_SOURCE_DIR})
-  endif()
-
-  foreach(DIR ${protobuf_generate_IMPORT_DIRS})
-    get_filename_component(ABS_PATH ${DIR} ABSOLUTE)
-    list(FIND _protobuf_include_path ${ABS_PATH} _contains_already)
-    if(${_contains_already} EQUAL -1)
-        list(APPEND _protobuf_include_path -I ${ABS_PATH})
-    endif()
-  endforeach()
-
-  set(_generated_srcs_all)
-  foreach(_proto ${protobuf_generate_PROTOS})
-    get_filename_component(_abs_file ${_proto} ABSOLUTE)
-    get_filename_component(_abs_dir ${_abs_file} DIRECTORY)
-    get_filename_component(_basename ${_proto} NAME_WE)
-    file(RELATIVE_PATH _rel_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_abs_dir})
-
-    set(_possible_rel_dir)
-    if (NOT protobuf_generate_APPEND_PATH)
-        set(_possible_rel_dir ${_rel_dir}/)
-    endif()
-
-    set(_generated_srcs)
-    foreach(_ext ${protobuf_generate_GENERATE_EXTENSIONS})
-      list(APPEND _generated_srcs "${protobuf_generate_PROTOC_OUT_DIR}/${_possible_rel_dir}${_basename}${_ext}")
-    endforeach()
-
-    if(protobuf_generate_DESCRIPTORS AND protobuf_generate_LANGUAGE STREQUAL cpp)
-      set(_descriptor_file "${CMAKE_CURRENT_BINARY_DIR}/${_basename}.desc")
-      set(_dll_desc_out "--descriptor_set_out=${_descriptor_file}")
-      list(APPEND _generated_srcs ${_descriptor_file})
-    endif()
-    list(APPEND _generated_srcs_all ${_generated_srcs})
-
-    add_custom_command(
-      OUTPUT ${_generated_srcs}
-      COMMAND  protobuf::protoc
-      ARGS --${protobuf_generate_LANGUAGE}_out ${_dll_export_decl}${protobuf_generate_PROTOC_OUT_DIR} ${_dll_desc_out} ${_protobuf_include_path} ${_abs_file}
-      DEPENDS ${_abs_file} protobuf::protoc
-      COMMENT "Running ${protobuf_generate_LANGUAGE} protocol buffer compiler on ${_proto}"
-      VERBATIM )
-  endforeach()
-
-  set_source_files_properties(${_generated_srcs_all} PROPERTIES GENERATED TRUE)
-  if(protobuf_generate_OUT_VAR)
-    set(${protobuf_generate_OUT_VAR} ${_generated_srcs_all} PARENT_SCOPE)
-  endif()
-  if(protobuf_generate_TARGET)
-    target_sources(${protobuf_generate_TARGET} PRIVATE ${_generated_srcs_all})
-  endif()
-endfunction()
-
-function(PROTOBUF_GENERATE_CPP SRCS HDRS)
-  cmake_parse_arguments(protobuf_generate_cpp "" "EXPORT_MACRO;DESCRIPTORS" "" ${ARGN})
-
-  set(_proto_files "${protobuf_generate_cpp_UNPARSED_ARGUMENTS}")
-  if(NOT _proto_files)
-    message(SEND_ERROR "Error: PROTOBUF_GENERATE_CPP() called without any proto files")
-    return()
-  endif()
-
-  if(PROTOBUF_GENERATE_CPP_APPEND_PATH)
-    set(_append_arg APPEND_PATH)
-  endif()
-
-  if(protobuf_generate_cpp_DESCRIPTORS)
-    set(_descriptors DESCRIPTORS)
-  endif()
-
-  if(DEFINED PROTOBUF_IMPORT_DIRS AND NOT DEFINED Protobuf_IMPORT_DIRS)
-    set(Protobuf_IMPORT_DIRS "${PROTOBUF_IMPORT_DIRS}")
-  endif()
-
-  if(DEFINED Protobuf_IMPORT_DIRS)
-    set(_import_arg IMPORT_DIRS ${Protobuf_IMPORT_DIRS})
-  endif()
-
-  set(_outvar)
-  protobuf_generate(${_append_arg} ${_descriptors} LANGUAGE cpp EXPORT_MACRO ${protobuf_generate_cpp_EXPORT_MACRO} OUT_VAR _outvar ${_import_arg} PROTOS ${_proto_files})
-
-  set(${SRCS})
-  set(${HDRS})
-  if(protobuf_generate_cpp_DESCRIPTORS)
-    set(${protobuf_generate_cpp_DESCRIPTORS})
-  endif()
-
-  foreach(_file ${_outvar})
-    if(_file MATCHES "cc$")
-      list(APPEND ${SRCS} ${_file})
-    elseif(_file MATCHES "desc$")
-      list(APPEND ${protobuf_generate_cpp_DESCRIPTORS} ${_file})
-    else()
-      list(APPEND ${HDRS} ${_file})
-    endif()
-  endforeach()
-  set(${SRCS} ${${SRCS}} PARENT_SCOPE)
-  set(${HDRS} ${${HDRS}} PARENT_SCOPE)
-  if(protobuf_generate_cpp_DESCRIPTORS)
-    set(${protobuf_generate_cpp_DESCRIPTORS} "${${protobuf_generate_cpp_DESCRIPTORS}}" PARENT_SCOPE)
-  endif()
-endfunction()
-
-function(PROTOBUF_GENERATE_PYTHON SRCS)
-  if(NOT ARGN)
-    message(SEND_ERROR "Error: PROTOBUF_GENERATE_PYTHON() called without any proto files")
-    return()
-  endif()
-
-  if(PROTOBUF_GENERATE_CPP_APPEND_PATH)
-    set(_append_arg APPEND_PATH)
-  endif()
-
-  if(DEFINED PROTOBUF_IMPORT_DIRS AND NOT DEFINED Protobuf_IMPORT_DIRS)
-    set(Protobuf_IMPORT_DIRS "${PROTOBUF_IMPORT_DIRS}")
-  endif()
-
-  if(DEFINED Protobuf_IMPORT_DIRS)
-    set(_import_arg IMPORT_DIRS ${Protobuf_IMPORT_DIRS})
-  endif()
-
-  set(_outvar)
-  protobuf_generate(${_append_arg} LANGUAGE python OUT_VAR _outvar ${_import_arg} PROTOS ${ARGN})
-  set(${SRCS} ${_outvar} PARENT_SCOPE)
-endfunction()
-
-
-if(Protobuf_DEBUG)
-  # Output some of their choices
-  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
-                 "Protobuf_USE_STATIC_LIBS = ${Protobuf_USE_STATIC_LIBS}")
-endif()
-
-
-# Backwards compatibility
-# Define camel case versions of input variables
-foreach(UPPER
-    PROTOBUF_SRC_ROOT_FOLDER
-    PROTOBUF_IMPORT_DIRS
-    PROTOBUF_DEBUG
-    PROTOBUF_LIBRARY
-    PROTOBUF_PROTOC_LIBRARY
-    PROTOBUF_INCLUDE_DIR
-    PROTOBUF_PROTOC_EXECUTABLE
-    PROTOBUF_LIBRARY_DEBUG
-    PROTOBUF_PROTOC_LIBRARY_DEBUG
-    PROTOBUF_LITE_LIBRARY
-    PROTOBUF_LITE_LIBRARY_DEBUG
-    )
-    if (DEFINED ${UPPER})
-        string(REPLACE "PROTOBUF_" "Protobuf_" Camel ${UPPER})
-        if (NOT DEFINED ${Camel})
-            set(${Camel} ${${UPPER}})
-        endif()
-    endif()
-endforeach()
-
-if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-  set(_PROTOBUF_ARCH_DIR x64/)
-endif()
-
-
-# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
-if( Protobuf_USE_STATIC_LIBS )
-  set( _protobuf_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
-  if(WIN32)
-    set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
-  else()
-    set(CMAKE_FIND_LIBRARY_SUFFIXES .a )
-  endif()
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-
-# Internal function: search for normal library as well as a debug one
-#    if the debug one is specified also include debug/optimized keywords
-#    in *_LIBRARIES variable
-function(_protobuf_find_libraries name filename)
-  if(${name}_LIBRARIES)
-    # Use result recorded by a previous call.
-    return()
-  elseif(${name}_LIBRARY)
-    # Honor cache entry used by CMake 3.5 and lower.
-    set(${name}_LIBRARIES "${${name}_LIBRARY}" PARENT_SCOPE)
-  else()
-    find_library(${name}_LIBRARY_RELEASE
-      NAMES ${filename}
-      PATHS ${Protobuf_SRC_ROOT_FOLDER}/vsprojects/${_PROTOBUF_ARCH_DIR}Release)
-    mark_as_advanced(${name}_LIBRARY_RELEASE)
-
-    find_library(${name}_LIBRARY_DEBUG
-      NAMES ${filename}d ${filename}
-      PATHS ${Protobuf_SRC_ROOT_FOLDER}/vsprojects/${_PROTOBUF_ARCH_DIR}Debug)
-    mark_as_advanced(${name}_LIBRARY_DEBUG)
-
-    select_library_configurations(${name})
-
-    if(UNIX AND Threads_FOUND)
-      list(APPEND ${name}_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
-    endif()
-
-    set(${name}_LIBRARY "${${name}_LIBRARY}" PARENT_SCOPE)
-    set(${name}_LIBRARIES "${${name}_LIBRARIES}" PARENT_SCOPE)
-  endif()
-endfunction()
-
-#
-# Main.
-#
-
-# By default have PROTOBUF_GENERATE_CPP macro pass -I to protoc
-# for each directory where a proto file is referenced.
-if(NOT DEFINED PROTOBUF_GENERATE_CPP_APPEND_PATH)
-  set(PROTOBUF_GENERATE_CPP_APPEND_PATH TRUE)
-endif()
-
-
-# Google's provided vcproj files generate libraries with a "lib"
-# prefix on Windows
-if(MSVC)
-    set(Protobuf_ORIG_FIND_LIBRARY_PREFIXES "${CMAKE_FIND_LIBRARY_PREFIXES}")
-    set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
-
-    find_path(Protobuf_SRC_ROOT_FOLDER protobuf.pc.in)
-endif()
-
-if(UNIX)
-  # Protobuf headers may depend on threading.
-  find_package(Threads QUIET)
-endif()
-
-# The Protobuf library
-_protobuf_find_libraries(Protobuf protobuf)
-#DOC "The Google Protocol Buffers RELEASE Library"
-
-_protobuf_find_libraries(Protobuf_LITE protobuf-lite)
-
-# The Protobuf Protoc Library
-_protobuf_find_libraries(Protobuf_PROTOC protoc)
-
-# Restore original find library prefixes
-if(MSVC)
-    set(CMAKE_FIND_LIBRARY_PREFIXES "${Protobuf_ORIG_FIND_LIBRARY_PREFIXES}")
-endif()
-
-# Find the include directory
-find_path(Protobuf_INCLUDE_DIR
-    google/protobuf/service.h
-    PATHS ${Protobuf_SRC_ROOT_FOLDER}/src
-)
-mark_as_advanced(Protobuf_INCLUDE_DIR)
-
-# Find the protoc Executable
-find_program(Protobuf_PROTOC_EXECUTABLE
-    NAMES protoc
-    DOC "The Google Protocol Buffers Compiler"
-    PATHS
-    ${Protobuf_SRC_ROOT_FOLDER}/vsprojects/${_PROTOBUF_ARCH_DIR}Release
-    ${Protobuf_SRC_ROOT_FOLDER}/vsprojects/${_PROTOBUF_ARCH_DIR}Debug
-)
-mark_as_advanced(Protobuf_PROTOC_EXECUTABLE)
-
-if(Protobuf_DEBUG)
-    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
-        "requested version of Google Protobuf is ${Protobuf_FIND_VERSION}")
-endif()
-
-if(Protobuf_INCLUDE_DIR)
-  set(_PROTOBUF_COMMON_HEADER ${Protobuf_INCLUDE_DIR}/google/protobuf/stubs/common.h)
-
-  if(Protobuf_DEBUG)
-    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
-                   "location of common.h: ${_PROTOBUF_COMMON_HEADER}")
-  endif()
-
-  set(Protobuf_VERSION "")
-  set(Protobuf_LIB_VERSION "")
-  file(STRINGS ${_PROTOBUF_COMMON_HEADER} _PROTOBUF_COMMON_H_CONTENTS REGEX "#define[ \t]+GOOGLE_PROTOBUF_VERSION[ \t]+")
-  if(_PROTOBUF_COMMON_H_CONTENTS MATCHES "#define[ \t]+GOOGLE_PROTOBUF_VERSION[ \t]+([0-9]+)")
-      set(Protobuf_LIB_VERSION "${CMAKE_MATCH_1}")
-  endif()
-  unset(_PROTOBUF_COMMON_H_CONTENTS)
-
-  math(EXPR _PROTOBUF_MAJOR_VERSION "${Protobuf_LIB_VERSION} / 1000000")
-  math(EXPR _PROTOBUF_MINOR_VERSION "${Protobuf_LIB_VERSION} / 1000 % 1000")
-  math(EXPR _PROTOBUF_SUBMINOR_VERSION "${Protobuf_LIB_VERSION} % 1000")
-  set(Protobuf_VERSION "${_PROTOBUF_MAJOR_VERSION}.${_PROTOBUF_MINOR_VERSION}.${_PROTOBUF_SUBMINOR_VERSION}")
-
-  if(Protobuf_DEBUG)
-    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
-        "${_PROTOBUF_COMMON_HEADER} reveals protobuf ${Protobuf_VERSION}")
-  endif()
-
-  if(Protobuf_PROTOC_EXECUTABLE)
-    # Check Protobuf compiler version to be aligned with libraries version
-    execute_process(COMMAND ${Protobuf_PROTOC_EXECUTABLE} --version
-                    OUTPUT_VARIABLE _PROTOBUF_PROTOC_EXECUTABLE_VERSION)
-
-    if("${_PROTOBUF_PROTOC_EXECUTABLE_VERSION}" MATCHES "libprotoc ([0-9.]+)")
-      set(_PROTOBUF_PROTOC_EXECUTABLE_VERSION "${CMAKE_MATCH_1}")
-    endif()
-
-    if(Protobuf_DEBUG)
-      message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
-          "${Protobuf_PROTOC_EXECUTABLE} reveals version ${_PROTOBUF_PROTOC_EXECUTABLE_VERSION}")
-    endif()
-
-    if(NOT "${_PROTOBUF_PROTOC_EXECUTABLE_VERSION}" VERSION_EQUAL "${Protobuf_VERSION}")
-      message(WARNING "Protobuf compiler version ${_PROTOBUF_PROTOC_EXECUTABLE_VERSION}"
-        " doesn't match library version ${Protobuf_VERSION}")
-    endif()
-  endif()
-
-  if(Protobuf_LIBRARY)
-      if(NOT TARGET protobuf::libprotobuf)
-          add_library(protobuf::libprotobuf UNKNOWN IMPORTED)
-          set_target_properties(protobuf::libprotobuf PROPERTIES
-            INTERFACE_INCLUDE_DIRECTORIES "${Protobuf_INCLUDE_DIR}")
-          if(EXISTS "${Protobuf_LIBRARY}")
-            set_target_properties(protobuf::libprotobuf PROPERTIES
-              IMPORTED_LOCATION "${Protobuf_LIBRARY}")
-          endif()
-          if(EXISTS "${Protobuf_LIBRARY_RELEASE}")
-            set_property(TARGET protobuf::libprotobuf APPEND PROPERTY
-              IMPORTED_CONFIGURATIONS RELEASE)
-            set_target_properties(protobuf::libprotobuf PROPERTIES
-              IMPORTED_LOCATION_RELEASE "${Protobuf_LIBRARY_RELEASE}")
-          endif()
-          if(EXISTS "${Protobuf_LIBRARY_DEBUG}")
-            set_property(TARGET protobuf::libprotobuf APPEND PROPERTY
-              IMPORTED_CONFIGURATIONS DEBUG)
-            set_target_properties(protobuf::libprotobuf PROPERTIES
-              IMPORTED_LOCATION_DEBUG "${Protobuf_LIBRARY_DEBUG}")
-          endif()
-          if (Protobuf_VERSION VERSION_GREATER_EQUAL "3.6")
-            set_property(TARGET protobuf::libprotobuf APPEND PROPERTY
-              INTERFACE_COMPILE_FEATURES cxx_std_11
-            )
-          endif()
-          if (MSVC AND NOT Protobuf_USE_STATIC_LIBS)
-            set_property(TARGET protobuf::libprotobuf APPEND PROPERTY
-              INTERFACE_COMPILE_DEFINITIONS "PROTOBUF_USE_DLLS"
-            )
-          endif()
-          if(UNIX AND TARGET Threads::Threads)
-            set_property(TARGET protobuf::libprotobuf APPEND PROPERTY
-                INTERFACE_LINK_LIBRARIES Threads::Threads)
-          endif()
-      endif()
-  endif()
-
-  if(Protobuf_LITE_LIBRARY)
-      if(NOT TARGET protobuf::libprotobuf-lite)
-          add_library(protobuf::libprotobuf-lite UNKNOWN IMPORTED)
-          set_target_properties(protobuf::libprotobuf-lite PROPERTIES
-            INTERFACE_INCLUDE_DIRECTORIES "${Protobuf_INCLUDE_DIR}")
-          if(EXISTS "${Protobuf_LITE_LIBRARY}")
-            set_target_properties(protobuf::libprotobuf-lite PROPERTIES
-              IMPORTED_LOCATION "${Protobuf_LITE_LIBRARY}")
-          endif()
-          if(EXISTS "${Protobuf_LITE_LIBRARY_RELEASE}")
-            set_property(TARGET protobuf::libprotobuf-lite APPEND PROPERTY
-              IMPORTED_CONFIGURATIONS RELEASE)
-            set_target_properties(protobuf::libprotobuf-lite PROPERTIES
-              IMPORTED_LOCATION_RELEASE "${Protobuf_LITE_LIBRARY_RELEASE}")
-          endif()
-          if(EXISTS "${Protobuf_LITE_LIBRARY_DEBUG}")
-            set_property(TARGET protobuf::libprotobuf-lite APPEND PROPERTY
-              IMPORTED_CONFIGURATIONS DEBUG)
-            set_target_properties(protobuf::libprotobuf-lite PROPERTIES
-              IMPORTED_LOCATION_DEBUG "${Protobuf_LITE_LIBRARY_DEBUG}")
-          endif()
-          if (MSVC AND NOT Protobuf_USE_STATIC_LIBS)
-            set_property(TARGET protobuf::libprotobuf-lite APPEND PROPERTY
-              INTERFACE_COMPILE_DEFINITIONS "PROTOBUF_USE_DLLS"
-            )
-          endif()
-          if(UNIX AND TARGET Threads::Threads)
-            set_property(TARGET protobuf::libprotobuf-lite APPEND PROPERTY
-                INTERFACE_LINK_LIBRARIES Threads::Threads)
-          endif()
-      endif()
-  endif()
-
-  if(Protobuf_PROTOC_LIBRARY)
-      if(NOT TARGET protobuf::libprotoc)
-          add_library(protobuf::libprotoc UNKNOWN IMPORTED)
-          set_target_properties(protobuf::libprotoc PROPERTIES
-            INTERFACE_INCLUDE_DIRECTORIES "${Protobuf_INCLUDE_DIR}")
-          if(EXISTS "${Protobuf_PROTOC_LIBRARY}")
-            set_target_properties(protobuf::libprotoc PROPERTIES
-              IMPORTED_LOCATION "${Protobuf_PROTOC_LIBRARY}")
-          endif()
-          if(EXISTS "${Protobuf_PROTOC_LIBRARY_RELEASE}")
-            set_property(TARGET protobuf::libprotoc APPEND PROPERTY
-              IMPORTED_CONFIGURATIONS RELEASE)
-            set_target_properties(protobuf::libprotoc PROPERTIES
-              IMPORTED_LOCATION_RELEASE "${Protobuf_PROTOC_LIBRARY_RELEASE}")
-          endif()
-          if(EXISTS "${Protobuf_PROTOC_LIBRARY_DEBUG}")
-            set_property(TARGET protobuf::libprotoc APPEND PROPERTY
-              IMPORTED_CONFIGURATIONS DEBUG)
-            set_target_properties(protobuf::libprotoc PROPERTIES
-              IMPORTED_LOCATION_DEBUG "${Protobuf_PROTOC_LIBRARY_DEBUG}")
-          endif()
-          if (Protobuf_VERSION VERSION_GREATER_EQUAL "3.6")
-            set_property(TARGET protobuf::libprotoc APPEND PROPERTY
-              INTERFACE_COMPILE_FEATURES cxx_std_11
-            )
-          endif()
-          if (MSVC AND NOT Protobuf_USE_STATIC_LIBS)
-            set_property(TARGET protobuf::libprotoc APPEND PROPERTY
-              INTERFACE_COMPILE_DEFINITIONS "PROTOBUF_USE_DLLS"
-            )
-          endif()
-          if(UNIX AND TARGET Threads::Threads)
-            set_property(TARGET protobuf::libprotoc APPEND PROPERTY
-                INTERFACE_LINK_LIBRARIES Threads::Threads)
-          endif()
-      endif()
-  endif()
-
-  if(Protobuf_PROTOC_EXECUTABLE)
-      if(NOT TARGET protobuf::protoc)
-          add_executable(protobuf::protoc IMPORTED)
-          if(EXISTS "${Protobuf_PROTOC_EXECUTABLE}")
-            set_target_properties(protobuf::protoc PROPERTIES
-              IMPORTED_LOCATION "${Protobuf_PROTOC_EXECUTABLE}")
-          endif()
-      endif()
-  endif()
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Protobuf
-    REQUIRED_VARS Protobuf_LIBRARIES Protobuf_INCLUDE_DIR
-    VERSION_VAR Protobuf_VERSION
-)
-
-if(Protobuf_FOUND)
-    set(Protobuf_INCLUDE_DIRS ${Protobuf_INCLUDE_DIR})
-endif()
-
-# Restore the original find library ordering
-if( Protobuf_USE_STATIC_LIBS )
-  set(CMAKE_FIND_LIBRARY_SUFFIXES ${_protobuf_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
-endif()
-
-# Backwards compatibility
-# Define upper case versions of output variables
-foreach(Camel
-    Protobuf_SRC_ROOT_FOLDER
-    Protobuf_IMPORT_DIRS
-    Protobuf_DEBUG
-    Protobuf_INCLUDE_DIRS
-    Protobuf_LIBRARIES
-    Protobuf_PROTOC_LIBRARIES
-    Protobuf_LITE_LIBRARIES
-    Protobuf_LIBRARY
-    Protobuf_PROTOC_LIBRARY
-    Protobuf_INCLUDE_DIR
-    Protobuf_PROTOC_EXECUTABLE
-    Protobuf_LIBRARY_DEBUG
-    Protobuf_PROTOC_LIBRARY_DEBUG
-    Protobuf_LITE_LIBRARY
-    Protobuf_LITE_LIBRARY_DEBUG
-    )
-    string(TOUPPER ${Camel} UPPER)
-    set(${UPPER} ${${Camel}})
-endforeach()
diff --git a/share/cmake-3.18/Modules/FindPython.cmake b/share/cmake-3.18/Modules/FindPython.cmake
deleted file mode 100644
index 01b82c4..0000000
--- a/share/cmake-3.18/Modules/FindPython.cmake
+++ /dev/null
@@ -1,448 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindPython
-----------
-
-Find Python interpreter, compiler and development environment (include
-directories and libraries).
-
-The following components are supported:
-
-* ``Interpreter``: search for Python interpreter.
-* ``Compiler``: search for Python compiler. Only offered by IronPython.
-* ``Development``: search for development artifacts (include directories and
-  libraries). This component includes two sub-components which can be specified
-  independently:
-
-  * ``Development.Module``: search for artifacts for Python module
-    developments.
-  * ``Development.Embed``: search for artifacts for Python embedding
-    developments.
-
-* ``NumPy``: search for NumPy include directories.
-
-If no ``COMPONENTS`` are specified, ``Interpreter`` is assumed.
-
-If component ``Development`` is specified, it implies sub-components
-``Development.Module`` and ``Development.Embed``.
-
-To ensure consistent versions between components ``Interpreter``, ``Compiler``,
-``Development`` (or one of its sub-components) and ``NumPy``, specify all
-components at the same time::
-
-  find_package (Python COMPONENTS Interpreter Development)
-
-This module looks preferably for version 3 of Python. If not found, version 2
-is searched.
-To manage concurrent versions 3 and 2 of Python, use :module:`FindPython3` and
-:module:`FindPython2` modules rather than this one.
-
-.. note::
-
-  If components ``Interpreter`` and ``Development`` (or one of its
-  sub-components) are both specified, this module search only for interpreter
-  with same platform architecture as the one defined by ``CMake``
-  configuration. This contraint does not apply if only ``Interpreter``
-  component is specified.
-
-Imported Targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :ref:`Imported Targets <Imported Targets>`
-(when :prop_gbl:`CMAKE_ROLE` is ``PROJECT``):
-
-``Python::Interpreter``
-  Python interpreter. Target defined if component ``Interpreter`` is found.
-``Python::Compiler``
-  Python compiler. Target defined if component ``Compiler`` is found.
-``Python::Module``
-  Python library for Python module. Target defined if component
-  ``Development.Module`` is found.
-``Python::Python``
-  Python library for Python embedding. Target defined if component
-  ``Development.Embed`` is found.
-``Python::NumPy``
-  NumPy Python library. Target defined if component ``NumPy`` is found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project
-(see :ref:`Standard Variable Names <CMake Developer Standard Variable Names>`):
-
-``Python_FOUND``
-  System has the Python requested components.
-``Python_Interpreter_FOUND``
-  System has the Python interpreter.
-``Python_EXECUTABLE``
-  Path to the Python interpreter.
-``Python_INTERPRETER_ID``
-  A short string unique to the interpreter. Possible values include:
-    * Python
-    * ActivePython
-    * Anaconda
-    * Canopy
-    * IronPython
-    * PyPy
-``Python_STDLIB``
-  Standard platform independent installation directory.
-
-  Information returned by
-  ``distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=True)``
-  or else ``sysconfig.get_path('stdlib')``.
-``Python_STDARCH``
-  Standard platform dependent installation directory.
-
-  Information returned by
-  ``distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=True)``
-  or else ``sysconfig.get_path('platstdlib')``.
-``Python_SITELIB``
-  Third-party platform independent installation directory.
-
-  Information returned by
-  ``distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=False)``
-  or else ``sysconfig.get_path('purelib')``.
-``Python_SITEARCH``
-  Third-party platform dependent installation directory.
-
-  Information returned by
-  ``distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=False)``
-  or else ``sysconfig.get_path('platlib')``.
-``Python_SOABI``
-  Extension suffix for modules.
-
-  Information returned by
-  ``distutils.sysconfig.get_config_var('SOABI')`` or computed from
-  ``distutils.sysconfig.get_config_var('EXT_SUFFIX')`` or
-  ``python-config --extension-suffix``. If package ``distutils.sysconfig`` is
-  not available, ``sysconfig.get_config_var('SOABI')`` or
-  ``sysconfig.get_config_var('EXT_SUFFIX')`` are used.
-``Python_Compiler_FOUND``
-  System has the Python compiler.
-``Python_COMPILER``
-  Path to the Python compiler. Only offered by IronPython.
-``Python_COMPILER_ID``
-  A short string unique to the compiler. Possible values include:
-    * IronPython
-``Python_DOTNET_LAUNCHER``
-  The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
-``Python_Development_FOUND``
-  System has the Python development artifacts.
-``Python_Development.Module_FOUND``
-  System has the Python development artifacts for Python module.
-``Python_Development.Embed_FOUND``
-  System has the Python development artifacts for Python embedding.
-``Python_INCLUDE_DIRS``
-  The Python include directories.
-``Python_LIBRARIES``
-  The Python libraries.
-``Python_LIBRARY_DIRS``
-  The Python library directories.
-``Python_RUNTIME_LIBRARY_DIRS``
-  The Python runtime library directories.
-``Python_VERSION``
-  Python version.
-``Python_VERSION_MAJOR``
-  Python major version.
-``Python_VERSION_MINOR``
-  Python minor version.
-``Python_VERSION_PATCH``
-  Python patch version.
-``Python_PyPy_VERSION``
-  Python PyPy version.
-``Python_NumPy_FOUND``
-  System has the NumPy.
-``Python_NumPy_INCLUDE_DIRS``
-  The NumPy include directries.
-``Python_NumPy_VERSION``
-  The NumPy version.
-
-Hints
-^^^^^
-
-``Python_ROOT_DIR``
-  Define the root directory of a Python installation.
-
-``Python_USE_STATIC_LIBS``
-  * If not defined, search for shared libraries and static libraries in that
-    order.
-  * If set to TRUE, search **only** for static libraries.
-  * If set to FALSE, search **only** for shared libraries.
-
-``Python_FIND_ABI``
-  This variable defines which ABIs, as defined in
-  `PEP 3149 <https://www.python.org/dev/peps/pep-3149/>`_, should be searched.
-
-  .. note::
-
-    This hint will be honored only when searched for ``Python`` version 3.
-
-  .. note::
-
-    If ``Python_FIND_ABI`` is not defined, any ABI will be searched.
-
-  The ``Python_FIND_ABI`` variable is a 3-tuple specifying, in that order,
-  ``pydebug`` (``d``), ``pymalloc`` (``m``) and ``unicode`` (``u``) flags.
-  Each element can be set to one of the following:
-
-  * ``ON``: Corresponding flag is selected.
-  * ``OFF``: Corresponding flag is not selected.
-  * ``ANY``: The two posibilties (``ON`` and ``OFF``) will be searched.
-
-  From this 3-tuple, various ABIs will be searched starting from the most
-  specialized to the most general. Moreover, ``debug`` versions will be
-  searched **after** ``non-debug`` ones.
-
-  For example, if we have::
-
-    set (Python_FIND_ABI "ON" "ANY" "ANY")
-
-  The following flags combinations will be appended, in that order, to the
-  artifact names: ``dmu``, ``dm``, ``du``, and ``d``.
-
-  And to search any possible ABIs::
-
-    set (Python_FIND_ABI "ANY" "ANY" "ANY")
-
-  The following combinations, in that order, will be used: ``mu``, ``m``,
-  ``u``, ``<empty>``, ``dmu``, ``dm``, ``du`` and ``d``.
-
-  .. note::
-
-    This hint is useful only on ``POSIX`` systems. So, on ``Windows`` systems,
-    when ``Python_FIND_ABI`` is defined, ``Python`` distributions from
-    `python.org <https://www.python.org/>`_ will be found only if value for
-    each flag is ``OFF`` or ``ANY``.
-
-``Python_FIND_STRATEGY``
-  This variable defines how lookup will be done.
-  The ``Python_FIND_STRATEGY`` variable can be set to one of the following:
-
-  * ``VERSION``: Try to find the most recent version in all specified
-    locations.
-    This is the default if policy :policy:`CMP0094` is undefined or set to
-    ``OLD``.
-  * ``LOCATION``: Stops lookup as soon as a version satisfying version
-    constraints is founded.
-    This is the default if policy :policy:`CMP0094` is set to ``NEW``.
-
-``Python_FIND_REGISTRY``
-  On Windows the ``Python_FIND_REGISTRY`` variable determine the order
-  of preference between registry and environment variables.
-  the ``Python_FIND_REGISTRY`` variable can be set to one of the following:
-
-  * ``FIRST``: Try to use registry before environment variables.
-    This is the default.
-  * ``LAST``: Try to use registry after environment variables.
-  * ``NEVER``: Never try to use registry.
-
-``Python_FIND_FRAMEWORK``
-  On macOS the ``Python_FIND_FRAMEWORK`` variable determine the order of
-  preference between Apple-style and unix-style package components.
-  This variable can take same values as :variable:`CMAKE_FIND_FRAMEWORK`
-  variable.
-
-  .. note::
-
-    Value ``ONLY`` is not supported so ``FIRST`` will be used instead.
-
-  If ``Python_FIND_FRAMEWORK`` is not defined, :variable:`CMAKE_FIND_FRAMEWORK`
-  variable will be used, if any.
-
-``Python_FIND_VIRTUALENV``
-  This variable defines the handling of virtual environments managed by
-  ``virtualenv`` or ``conda``. It is meaningful only when a virtual environment
-  is active (i.e. the ``activate`` script has been evaluated). In this case, it
-  takes precedence over ``Python_FIND_REGISTRY`` and ``CMAKE_FIND_FRAMEWORK``
-  variables.  The ``Python_FIND_VIRTUALENV`` variable can be set to one of the
-  following:
-
-  * ``FIRST``: The virtual environment is used before any other standard
-    paths to look-up for the interpreter. This is the default.
-  * ``ONLY``: Only the virtual environment is used to look-up for the
-    interpreter.
-  * ``STANDARD``: The virtual environment is not used to look-up for the
-    interpreter but environment variable ``PATH`` is always considered.
-    In this case, variable ``Python_FIND_REGISTRY`` (Windows) or
-    ``CMAKE_FIND_FRAMEWORK`` (macOS) can be set with value ``LAST`` or
-    ``NEVER`` to select preferably the interpreter from the virtual
-    environment.
-
-  .. note::
-
-    If the component ``Development`` is requested, it is **strongly**
-    recommended to also include the component ``Interpreter`` to get expected
-    result.
-
-``Python_FIND_IMPLEMENTATIONS``
-  This variable defines, in an ordered list, the different implementations
-  which will be searched. The ``Python_FIND_IMPLEMENTATIONS`` variable can
-  hold the following values:
-
-  * ``CPython``: this is the standard implementation. Various products, like
-    ``Anaconda`` or ``ActivePython``, rely on this implementation.
-  * ``IronPython``: This implementation use the ``CSharp`` language for
-    ``.NET Framework`` on top of the `Dynamic Language Runtime` (``DLR``).
-    See `IronPython <http://ironpython.net>`_.
-  * ``PyPy``: This implementation use ``RPython`` language and
-    ``RPython translation toolchain`` to produce the python interpreter.
-    See `PyPy <https://www.pypy.org>`_.
-
-  The default value is:
-
-  * Windows platform: ``CPython``, ``IronPython``
-  * Other platforms: ``CPython``
-
-  .. note::
-
-    This hint has the lowest priority of all hints, so even if, for example,
-    you specify ``IronPython`` first and ``CPython`` in second, a python
-    product based on ``CPython`` can be selected because, for example with
-    ``Python_FIND_STRATEGY=LOCATION``, each location will be search first for
-    ``IronPython`` and second for ``CPython``.
-
-  .. note::
-
-    When ``IronPython`` is specified, on platforms other than ``Windows``, the
-    ``.Net`` interpreter (i.e. ``mono`` command) is expected to be available
-    through the ``PATH`` variable.
-
-Artifacts Specification
-^^^^^^^^^^^^^^^^^^^^^^^
-
-To solve special cases, it is possible to specify directly the artifacts by
-setting the following variables:
-
-``Python_EXECUTABLE``
-  The path to the interpreter.
-
-``Python_COMPILER``
-  The path to the compiler.
-
-``Python_DOTNET_LAUNCHER``
-  The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
-
-``Python_LIBRARY``
-  The path to the library. It will be used to compute the
-  variables ``Python_LIBRARIES``, ``Python_LIBRAY_DIRS`` and
-  ``Python_RUNTIME_LIBRARY_DIRS``.
-
-``Python_INCLUDE_DIR``
-  The path to the directory of the ``Python`` headers. It will be used to
-  compute the variable ``Python_INCLUDE_DIRS``.
-
-``Python_NumPy_INCLUDE_DIR``
-  The path to the directory of the ``NumPy`` headers. It will be used to
-  compute the variable ``Python_NumPy_INCLUDE_DIRS``.
-
-.. note::
-
-  All paths must be absolute. Any artifact specified with a relative path
-  will be ignored.
-
-.. note::
-
-  When an artifact is specified, all ``HINTS`` will be ignored and no search
-  will be performed for this artifact.
-
-  If more than one artifact is specified, it is the user's responsability to
-  ensure the consistency of the various artifacts.
-
-By default, this module supports multiple calls in different directories of a
-project with different version/component requirements while providing correct
-and consistent results for each call. To support this behavior, ``CMake`` cache
-is not used in the traditional way which can be problematic for interactive
-specification. So, to enable also interactive specification, module behavior
-can be controled with the following variable:
-
-``Python_ARTIFACTS_INTERACTIVE``
-  Selects the behavior of the module. This is a boolean variable:
-
-  * If set to ``TRUE``: Create CMake cache entries for the above artifact
-    specification variables so that users can edit them interactively.
-    This disables support for multiple version/component requirements.
-  * If set to ``FALSE`` or undefined: Enable multiple version/component
-    requirements.
-
-Commands
-^^^^^^^^
-
-This module defines the command ``Python_add_library`` (when
-:prop_gbl:`CMAKE_ROLE` is ``PROJECT``), which has the same semantics as
-:command:`add_library` and adds a dependency to target ``Python::Python`` or,
-when library type is ``MODULE``, to target ``Python::Module`` and takes care of
-Python module naming rules::
-
-  Python_add_library (<name> [STATIC | SHARED | MODULE [WITH_SOABI]]
-                      <source1> [<source2> ...])
-
-If the library type is not specified, ``MODULE`` is assumed.
-
-For ``MODULE`` library type, if option ``WITH_SOABI`` is specified, the
-module suffix will include the ``Python_SOABI`` value, if any.
-#]=======================================================================]
-
-
-set (_PYTHON_PREFIX Python)
-
-if (DEFINED Python_FIND_VERSION)
-  set (_Python_REQUIRED_VERSION_MAJOR ${Python_FIND_VERSION_MAJOR})
-
-  include (${CMAKE_CURRENT_LIST_DIR}/FindPython/Support.cmake)
-else()
-  # iterate over versions in quiet and NOT required modes to avoid multiple
-  # "Found" messages and prematurally failure.
-  set (_Python_QUIETLY ${Python_FIND_QUIETLY})
-  set (_Python_REQUIRED ${Python_FIND_REQUIRED})
-  set (Python_FIND_QUIETLY TRUE)
-  set (Python_FIND_REQUIRED FALSE)
-
-  set (_Python_REQUIRED_VERSIONS 3 2)
-  set (_Python_REQUIRED_VERSION_LAST 2)
-
-  unset (_Python_INPUT_VARS)
-  foreach (_Python_ITEM IN ITEMS Python_EXECUTABLE Python_COMPILER Python_LIBRARY
-                                 Python_INCLUDE_DIR Python_NumPy_INCLUDE_DIR)
-    if (NOT DEFINED ${_Python_ITEM})
-      list (APPEND _Python_INPUT_VARS ${_Python_ITEM})
-    endif()
-  endforeach()
-
-  foreach (_Python_REQUIRED_VERSION_MAJOR IN LISTS _Python_REQUIRED_VERSIONS)
-    set (Python_FIND_VERSION ${_Python_REQUIRED_VERSION_MAJOR})
-    include (${CMAKE_CURRENT_LIST_DIR}/FindPython/Support.cmake)
-    if (Python_FOUND OR
-        _Python_REQUIRED_VERSION_MAJOR EQUAL _Python_REQUIRED_VERSION_LAST)
-      break()
-    endif()
-    # clean-up INPUT variables not set by the user
-    foreach (_Python_ITEM IN LISTS _Python_INPUT_VARS)
-      unset (${_Python_ITEM})
-    endforeach()
-    # clean-up some CACHE variables to ensure look-up restart from scratch
-    foreach (_Python_ITEM IN LISTS _Python_CACHED_VARS)
-      unset (${_Python_ITEM} CACHE)
-    endforeach()
-  endforeach()
-
-  unset (Python_FIND_VERSION)
-
-  set (Python_FIND_QUIETLY ${_Python_QUIETLY})
-  set (Python_FIND_REQUIRED ${_Python_REQUIRED})
-  if (Python_FIND_REQUIRED OR NOT Python_FIND_QUIETLY)
-    # call again validation command to get "Found" or error message
-    find_package_handle_standard_args (Python HANDLE_COMPONENTS
-                                              REQUIRED_VARS ${_Python_REQUIRED_VARS}
-                                              VERSION_VAR Python_VERSION)
-  endif()
-endif()
-
-if (COMMAND __Python_add_library)
-  macro (Python_add_library)
-    __Python_add_library (Python ${ARGV})
-  endmacro()
-endif()
-
-unset (_PYTHON_PREFIX)
diff --git a/share/cmake-3.18/Modules/FindPython/Support.cmake b/share/cmake-3.18/Modules/FindPython/Support.cmake
deleted file mode 100644
index 1be0625..0000000
--- a/share/cmake-3.18/Modules/FindPython/Support.cmake
+++ /dev/null
@@ -1,3172 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#
-# This file is a "template" file used by various FindPython modules.
-#
-
-cmake_policy (GET CMP0094 _${_PYTHON_PREFIX}_LOOKUP_POLICY)
-
-cmake_policy (VERSION 3.7)
-
-if (_${_PYTHON_PREFIX}_LOOKUP_POLICY)
-  cmake_policy (SET CMP0094 ${_${_PYTHON_PREFIX}_LOOKUP_POLICY})
-endif()
-
-#
-# Initial configuration
-#
-if (NOT DEFINED _PYTHON_PREFIX)
-  message (FATAL_ERROR "FindPython: INTERNAL ERROR")
-endif()
-if (NOT DEFINED _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
-  message (FATAL_ERROR "FindPython: INTERNAL ERROR")
-endif()
-if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL "3")
-  set(_${_PYTHON_PREFIX}_VERSIONS 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
-elseif (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL "2")
-  set(_${_PYTHON_PREFIX}_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
-else()
-  message (FATAL_ERROR "FindPython: INTERNAL ERROR")
-endif()
-
-get_property(_${_PYTHON_PREFIX}_CMAKE_ROLE GLOBAL PROPERTY CMAKE_ROLE)
-
-
-#
-# helper commands
-#
-macro (_PYTHON_DISPLAY_FAILURE _PYTHON_MSG)
-  if (${_PYTHON_PREFIX}_FIND_REQUIRED)
-    message (FATAL_ERROR "${_PYTHON_MSG}")
-  else()
-    if (NOT ${_PYTHON_PREFIX}_FIND_QUIETLY)
-      message(STATUS "${_PYTHON_MSG}")
-    endif ()
-  endif()
-
-  set (${_PYTHON_PREFIX}_FOUND FALSE)
-  string (TOUPPER "${_PYTHON_PREFIX}" _${_PYTHON_PREFIX}_UPPER_PREFIX)
-  set (${_PYTHON_UPPER_PREFIX}_FOUND FALSE)
-  return()
-endmacro()
-
-
-function (_PYTHON_MARK_AS_INTERNAL)
-  foreach (var IN LISTS ARGV)
-    if (DEFINED CACHE{${var}})
-      set_property (CACHE ${var} PROPERTY TYPE INTERNAL)
-    endif()
-  endforeach()
-endfunction()
-
-
-macro (_PYTHON_SELECT_LIBRARY_CONFIGURATIONS _PYTHON_BASENAME)
-  if(NOT DEFINED ${_PYTHON_BASENAME}_LIBRARY_RELEASE)
-    set(${_PYTHON_BASENAME}_LIBRARY_RELEASE "${_PYTHON_BASENAME}_LIBRARY_RELEASE-NOTFOUND")
-  endif()
-  if(NOT DEFINED ${_PYTHON_BASENAME}_LIBRARY_DEBUG)
-    set(${_PYTHON_BASENAME}_LIBRARY_DEBUG "${_PYTHON_BASENAME}_LIBRARY_DEBUG-NOTFOUND")
-  endif()
-
-  get_property(_PYTHON_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
-  if (${_PYTHON_BASENAME}_LIBRARY_DEBUG AND ${_PYTHON_BASENAME}_LIBRARY_RELEASE AND
-      NOT ${_PYTHON_BASENAME}_LIBRARY_DEBUG STREQUAL ${_PYTHON_BASENAME}_LIBRARY_RELEASE AND
-      (_PYTHON_isMultiConfig OR CMAKE_BUILD_TYPE))
-    # if the generator is multi-config or if CMAKE_BUILD_TYPE is set for
-    # single-config generators, set optimized and debug libraries
-    set (${_PYTHON_BASENAME}_LIBRARIES "")
-    foreach (_PYTHON_libname IN LISTS ${_PYTHON_BASENAME}_LIBRARY_RELEASE)
-      list( APPEND ${_PYTHON_BASENAME}_LIBRARIES optimized "${_PYTHON_libname}")
-    endforeach()
-    foreach (_PYTHON_libname IN LISTS ${_PYTHON_BASENAME}_LIBRARY_DEBUG)
-      list( APPEND ${_PYTHON_BASENAME}_LIBRARIES debug "${_PYTHON_libname}")
-    endforeach()
-  elseif (${_PYTHON_BASENAME}_LIBRARY_RELEASE)
-    set (${_PYTHON_BASENAME}_LIBRARIES "${${_PYTHON_BASENAME}_LIBRARY_RELEASE}")
-  elseif (${_PYTHON_BASENAME}_LIBRARY_DEBUG)
-    set (${_PYTHON_BASENAME}_LIBRARIES "${${_PYTHON_BASENAME}_LIBRARY_DEBUG}")
-  else()
-    set (${_PYTHON_BASENAME}_LIBRARIES "${_PYTHON_BASENAME}_LIBRARY-NOTFOUND")
-  endif()
-endmacro()
-
-
-macro (_PYTHON_FIND_FRAMEWORKS)
-  if (CMAKE_HOST_APPLE OR APPLE)
-    file(TO_CMAKE_PATH "$ENV{CMAKE_FRAMEWORK_PATH}" _pff_CMAKE_FRAMEWORK_PATH)
-    set (_pff_frameworks ${CMAKE_FRAMEWORK_PATH}
-                         ${_pff_CMAKE_FRAMEWORK_PATH}
-                         ~/Library/Frameworks
-                         /usr/local/Frameworks
-                         ${CMAKE_SYSTEM_FRAMEWORK_PATH})
-    list (REMOVE_DUPLICATES _pff_frameworks)
-    foreach (_pff_implementation IN LISTS _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS)
-      unset (_${_PYTHON_PREFIX}_${_pff_implementation}_FRAMEWORKS)
-      if (_pff_implementation STREQUAL "CPython")
-        foreach (_pff_framework IN LISTS _pff_frameworks)
-          if (EXISTS ${_pff_framework}/Python${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}.framework)
-            list (APPEND _${_PYTHON_PREFIX}_${_pff_implementation}_FRAMEWORKS ${_pff_framework}/Python${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}.framework)
-          endif()
-          if (EXISTS ${_pff_framework}/Python.framework)
-            list (APPEND _${_PYTHON_PREFIX}_${_pff_implementation}_FRAMEWORKS ${_pff_framework}/Python.framework)
-          endif()
-        endforeach()
-      elseif (_pff_implementation STREQUAL "IronPython")
-        foreach (_pff_framework IN LISTS _pff_frameworks)
-          if (EXISTS ${_pff_framework}/IronPython.framework)
-            list (APPEND _${_PYTHON_PREFIX}_${_pff_implementation}_FRAMEWORKS ${_pff_framework}/IronPython.framework)
-          endif()
-        endforeach()
-      endif()
-    endforeach()
-    unset (_pff_implementation)
-    unset (_pff_frameworks)
-    unset (_pff_framework)
-  endif()
-endmacro()
-
-function (_PYTHON_GET_FRAMEWORKS _PYTHON_PGF_FRAMEWORK_PATHS)
-  cmake_parse_arguments (PARSE_ARGV 1 _PGF "" "" "IMPLEMENTATIONS;VERSION")
-
-  if (NOT _PGF_IMPLEMENTATIONS)
-    set (_PGF_IMPLEMENTATIONS ${_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS})
-  endif()
-
-  set (framework_paths)
-
-  foreach (implementation IN LISTS _PGF_IMPLEMENTATIONS)
-    if (implementation STREQUAL "CPython")
-      foreach (version IN LISTS _PGF_VERSION)
-        foreach (framework IN LISTS _${_PYTHON_PREFIX}_${implementation}_FRAMEWORKS)
-          if (EXISTS "${framework}/Versions/${version}")
-            list (APPEND framework_paths "${framework}/Versions/${version}")
-          endif()
-        endforeach()
-      endforeach()
-    elseif (implementation STREQUAL "IronPython")
-      foreach (version IN LISTS _PGF_VERSION)
-        foreach (framework IN LISTS _${_PYTHON_PREFIX}_${implementation}_FRAMEWORKS)
-          # pick-up all available versions
-          file (GLOB versions LIST_DIRECTORIES true RELATIVE "${framework}/Versions/"
-                              "${framework}/Versions/${version}*")
-          list (SORT versions ORDER DESCENDING)
-          list (TRANSFORM versions PREPEND "${framework}/Versions/")
-          list (APPEND framework_paths ${versions})
-        endforeach()
-      endforeach()
-    endif()
-  endforeach()
-
-  set (${_PYTHON_PGF_FRAMEWORK_PATHS} ${framework_paths} PARENT_SCOPE)
-endfunction()
-
-function (_PYTHON_GET_REGISTRIES _PYTHON_PGR_REGISTRY_PATHS)
-  cmake_parse_arguments (PARSE_ARGV 1 _PGR "" "" "IMPLEMENTATIONS;VERSION")
-
-  if (NOT _PGR_IMPLEMENTATIONS)
-    set (_PGR_IMPLEMENTATIONS ${_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS})
-  endif()
-
-  set (registries)
-
-  foreach (implementation IN LISTS _PGR_IMPLEMENTATIONS)
-    if (implementation STREQUAL "CPython")
-      foreach (version IN LISTS _PGR_VERSION)
-        string (REPLACE "." "" version_no_dots ${version})
-        list (APPEND registries
-                     [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${version}-${_${_PYTHON_PREFIX}_ARCH}\\InstallPath]
-                     [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${version}-${_${_PYTHON_PREFIX}_ARCH2}\\InstallPath])
-        if (version VERSION_GREATER_EQUAL "3.5")
-          get_filename_component (arch "[HKEY_CURRENT_USER\\Software\\Python\\PythonCore\\${version};SysArchitecture]" NAME)
-          if (arch MATCHES "(${_${_PYTHON_PREFIX}_ARCH}|${_${_PYTHON_PREFIX}_ARCH2})bit")
-            list (APPEND registries
-                         [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${version}\\InstallPath])
-          endif()
-        else()
-          list (APPEND registries
-                       [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${version}\\InstallPath])
-        endif()
-        list (APPEND registries
-                     [HKEY_CURRENT_USER\\SOFTWARE\\Python\\ContinuumAnalytics\\Anaconda${version_no_dots}-${_${_PYTHON_PREFIX}_ARCH}\\InstallPath]
-                     [HKEY_CURRENT_USER\\SOFTWARE\\Python\\ContinuumAnalytics\\Anaconda${version_no_dots}-${_${_PYTHON_PREFIX}_ARCH2}\\InstallPath]
-                     [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${version}-${_${_PYTHON_PREFIX}_ARCH}\\InstallPath]
-                     [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${version}-${_${_PYTHON_PREFIX}_ARCH2}\\InstallPath]
-                     [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${version}\\InstallPath]
-                     [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\ContinuumAnalytics\\Anaconda${version_no_dots}-${_${_PYTHON_PREFIX}_ARCH}\\InstallPath]
-                     [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\ContinuumAnalytics\\Anaconda${version_no_dots}-${_${_PYTHON_PREFIX}_ARCH2}\\InstallPath])
-      endforeach()
-    elseif (implementation STREQUAL "IronPython")
-      foreach (version  IN LISTS _PGR_VERSION)
-        list (APPEND registries [HKEY_LOCAL_MACHINE\\SOFTWARE\\IronPython\\${version}\\InstallPath])
-      endforeach()
-    endif()
-  endforeach()
-
-  set (${_PYTHON_PGR_REGISTRY_PATHS} "${registries}" PARENT_SCOPE)
-endfunction()
-
-
-function (_PYTHON_GET_ABIFLAGS _PGABIFLAGS)
-  set (abiflags)
-  list (GET _${_PYTHON_PREFIX}_FIND_ABI 0 pydebug)
-  list (GET _${_PYTHON_PREFIX}_FIND_ABI 1 pymalloc)
-  list (GET _${_PYTHON_PREFIX}_FIND_ABI 2 unicode)
-
-  if (pymalloc STREQUAL "ANY" AND unicode STREQUAL "ANY")
-    set (abiflags "mu" "m" "u" "")
-  elseif (pymalloc STREQUAL "ANY" AND unicode STREQUAL "ON")
-    set (abiflags "mu" "u")
-  elseif (pymalloc STREQUAL "ANY" AND unicode STREQUAL "OFF")
-    set (abiflags "m" "")
-  elseif (pymalloc STREQUAL "ON" AND unicode STREQUAL "ANY")
-    set (abiflags "mu" "m")
-  elseif (pymalloc STREQUAL "ON" AND unicode STREQUAL "ON")
-    set (abiflags "mu")
-  elseif (pymalloc STREQUAL "ON" AND unicode STREQUAL "OFF")
-    set (abiflags "m")
-  elseif (pymalloc STREQUAL "ON" AND unicode STREQUAL "ANY")
-    set (abiflags "u" "")
-  elseif (pymalloc STREQUAL "OFF" AND unicode STREQUAL "ON")
-    set (abiflags "u")
-  endif()
-
-  if (pydebug STREQUAL "ON")
-    if (abiflags)
-      list (TRANSFORM abiflags PREPEND "d")
-    else()
-      set (abiflags "d")
-    endif()
-  elseif (pydebug STREQUAL "ANY")
-    if (abiflags)
-      set (flags "${abiflags}")
-      list (TRANSFORM flags PREPEND "d")
-      list (APPEND abiflags "${flags}")
-    else()
-      set (abiflags "" "d")
-    endif()
-  endif()
-
-  set (${_PGABIFLAGS} "${abiflags}" PARENT_SCOPE)
-endfunction()
-
-function (_PYTHON_GET_PATH_SUFFIXES _PYTHON_PGPS_PATH_SUFFIXES)
-  cmake_parse_arguments (PARSE_ARGV 1 _PGPS "INTERPRETER;COMPILER;LIBRARY;INCLUDE" "" "IMPLEMENTATIONS;VERSION")
-
-  if (NOT _PGPS_IMPLEMENTATIONS)
-    set (_PGPS_IMPLEMENTATIONS ${_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS})
-  endif()
-
-  if (DEFINED _${_PYTHON_PREFIX}_ABIFLAGS)
-    set (abi "${_${_PYTHON_PREFIX}_ABIFLAGS}")
-  else()
-    set (abi "mu" "m" "u" "")
-  endif()
-
-  set (path_suffixes)
-
-  foreach (implementation IN LISTS _PGPS_IMPLEMENTATIONS)
-    if (implementation STREQUAL "CPython")
-      if (_PGPS_INTERPRETER)
-        list (APPEND path_suffixes bin Scripts)
-      else()
-        foreach (version IN LISTS _PGPS_VERSION)
-          if (_PGPS_LIBRARY)
-            if (CMAKE_LIBRARY_ARCHITECTURE)
-              list (APPEND path_suffixes lib/${CMAKE_LIBRARY_ARCHITECTURE})
-            endif()
-            list (APPEND path_suffixes lib libs)
-
-            if (CMAKE_LIBRARY_ARCHITECTURE)
-              set (suffixes "${abi}")
-              if (suffixes)
-                list (TRANSFORM suffixes PREPEND "lib/python${_PGPS_VERSION}/config-${_PGPS_VERSION}")
-                list (TRANSFORM suffixes APPEND "-${CMAKE_LIBRARY_ARCHITECTURE}")
-              else()
-                set (suffixes "lib/python${_PGPS_VERSION}/config-${_PGPS_VERSION}-${CMAKE_LIBRARY_ARCHITECTURE}")
-              endif()
-              list (APPEND path_suffixes ${suffixes})
-            endif()
-            set (suffixes "${abi}")
-            if (suffixes)
-              list (TRANSFORM suffixes PREPEND "lib/python${_PGPS_VERSION}/config-${_PGPS_VERSION}")
-            else()
-              set (suffixes "lib/python${_PGPS_VERSION}/config-${_PGPS_VERSION}")
-            endif()
-            list (APPEND path_suffixes ${suffixes})
-          elseif (_PGPS_INCLUDE)
-            set (suffixes "${abi}")
-            if (suffixes)
-              list (TRANSFORM suffixes PREPEND "include/python${_PGPS_VERSION}")
-            else()
-              set (suffixes "include/python${_PGPS_VERSION}")
-            endif()
-            list (APPEND path_suffixes ${suffixes} include)
-          endif()
-        endforeach()
-      endif()
-    elseif (implementation STREQUAL "IronPython")
-      if (_PGPS_INTERPRETER OR _PGPS_COMPILER)
-        foreach (version IN LISTS _PGPS_VERSION)
-          list (APPEND path_suffixes "share/ironpython${version}")
-        endforeach()
-        list (APPEND path_suffixes ${_${_PYTHON_PREFIX}_IRON_PYTHON_PATH_SUFFIXES})
-      endif()
-    elseif (implementation STREQUAL "PyPy")
-      if (_PGPS_INTERPRETER)
-        list (APPEND path_suffixes ${_${_PYTHON_PREFIX}_PYPY_EXECUTABLE_PATH_SUFFIXES})
-      elseif (_PGPS_LIBRARY)
-        list (APPEND path_suffixes ${_${_PYTHON_PREFIX}_PYPY_LIBRARY_PATH_SUFFIXES})
-      elseif (_PGPS_INCLUDE)
-        list (APPEND path_suffixes ${_${_PYTHON_PREFIX}_PYPY_INCLUDE_PATH_SUFFIXES})
-      endif()
-    endif()
-  endforeach()
-  list (REMOVE_DUPLICATES path_suffixes)
-
-  set (${_PYTHON_PGPS_PATH_SUFFIXES} ${path_suffixes} PARENT_SCOPE)
-endfunction()
-
-function (_PYTHON_GET_NAMES _PYTHON_PGN_NAMES)
-  cmake_parse_arguments (PARSE_ARGV 1 _PGN "POSIX;INTERPRETER;COMPILER;CONFIG;LIBRARY;WIN32;DEBUG" "" "IMPLEMENTATIONS;VERSION")
-
-  if (NOT _PGN_IMPLEMENTATIONS)
-    set (_PGN_IMPLEMENTATIONS ${_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS})
-  endif()
-
-  set (names)
-
-  foreach (implementation IN LISTS _PGN_IMPLEMENTATIONS)
-    if (implementation STREQUAL "CPython")
-      foreach (version IN LISTS _PGN_VERSION)
-        if (_PGN_WIN32)
-          string (REPLACE "." "" version_no_dots ${version})
-
-          set (name python${version_no_dots})
-          if (_PGN_DEBUG)
-            string (APPEND name "_d")
-          endif()
-
-          list (APPEND names "${name}")
-        endif()
-
-        if (_PGN_POSIX)
-          if (DEFINED _${_PYTHON_PREFIX}_ABIFLAGS)
-            set (abi "${_${_PYTHON_PREFIX}_ABIFLAGS}")
-          else()
-            if (_PGN_INTERPRETER OR _PGN_CONFIG)
-              set (abi "")
-            else()
-              set (abi "mu" "m" "u" "")
-            endif()
-          endif()
-
-          if (abi)
-            if (_PGN_CONFIG AND DEFINED CMAKE_LIBRARY_ARCHITECTURE)
-              set (abinames "${abi}")
-              list (TRANSFORM abinames PREPEND "${CMAKE_LIBRARY_ARCHITECTURE}-python${version}")
-              list (TRANSFORM abinames APPEND "-config")
-              list (APPEND names ${abinames})
-            endif()
-            set (abinames "${abi}")
-            list (TRANSFORM abinames PREPEND "python${version}")
-            if (_PGN_CONFIG)
-              list (TRANSFORM abinames APPEND "-config")
-            endif()
-            list (APPEND names ${abinames})
-          else()
-            unset (abinames)
-            if (_PGN_CONFIG AND DEFINED CMAKE_LIBRARY_ARCHITECTURE)
-              set (abinames "${CMAKE_LIBRARY_ARCHITECTURE}-python${version}")
-            endif()
-            list (APPEND abinames "python${version}")
-            if (_PGN_CONFIG)
-              list (TRANSFORM abinames APPEND "-config")
-            endif()
-            list (APPEND names ${abinames})
-          endif()
-        endif()
-      endforeach()
-      if (_PGN_INTERPRETER)
-        list (APPEND names python${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR} python)
-      endif()
-    elseif (implementation STREQUAL "IronPython")
-      if (_PGN_INTERPRETER)
-        if (NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
-          # Do not use wrapper script on Linux because it is buggy: -c interpreter option cannot be used
-          foreach (version IN LISTS _PGN_VERSION)
-            list (APPEND names "ipy${version}")
-          endforeach()
-        endif()
-        list (APPEND names ${_${_PYTHON_PREFIX}_IRON_PYTHON_INTERPRETER_NAMES})
-      elseif (_PGN_COMPILER)
-        list (APPEND names ${_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_NAMES})
-      endif()
-    elseif (implementation STREQUAL "PyPy")
-      if (_PGN_INTERPRETER)
-        list (APPEND names ${_${_PYTHON_PREFIX}_PYPY_NAMES})
-      elseif (_PGN_LIBRARY)
-        if (_PGN_WIN32)
-          foreach (version IN LISTS _PGN_VERSION)
-            string (REPLACE "." "" version_no_dots ${version})
-
-            set (name "python${version_no_dots}")
-            if (_PGN_DEBUG)
-              string (APPEND name "_d")
-            endif()
-            list (APPEND names "${name}")
-          endforeach()
-        endif()
-        list (APPEND names ${_${_PYTHON_PREFIX}_PYPY_LIB_NAMES})
-      endif()
-    endif()
-  endforeach()
-
-  set (${_PYTHON_PGN_NAMES} ${names} PARENT_SCOPE)
-endfunction()
-
-function (_PYTHON_GET_CONFIG_VAR _PYTHON_PGCV_VALUE NAME)
-  unset (${_PYTHON_PGCV_VALUE} PARENT_SCOPE)
-
-  if (NOT NAME MATCHES "^(PREFIX|ABIFLAGS|CONFIGDIR|INCLUDES|LIBS|SOABI)$")
-    return()
-  endif()
-
-  if (_${_PYTHON_PREFIX}_CONFIG)
-    if (NAME STREQUAL "SOABI")
-      set (config_flag "--extension-suffix")
-    else()
-      set (config_flag "--${NAME}")
-    endif()
-    string (TOLOWER "${config_flag}" config_flag)
-    execute_process (COMMAND "${_${_PYTHON_PREFIX}_CONFIG}" ${config_flag}
-                     RESULT_VARIABLE _result
-                     OUTPUT_VARIABLE _values
-                     ERROR_QUIET
-                     OUTPUT_STRIP_TRAILING_WHITESPACE)
-    if (_result)
-      unset (_values)
-    else()
-      if (NAME STREQUAL "INCLUDES")
-        # do some clean-up
-        string (REGEX MATCHALL "(-I|-iwithsysroot)[ ]*[^ ]+" _values "${_values}")
-        string (REGEX REPLACE "(-I|-iwithsysroot)[ ]*" "" _values "${_values}")
-        list (REMOVE_DUPLICATES _values)
-      elseif (NAME STREQUAL "SOABI")
-        # clean-up: remove prefix character and suffix
-        string (REGEX REPLACE "^[.-](.+)(${CMAKE_SHARED_LIBRARY_SUFFIX}|\\.(so|pyd))$" "\\1" _values "${_values}")
-      endif()
-    endif()
-  endif()
-
-  if (_${_PYTHON_PREFIX}_EXECUTABLE AND NOT CMAKE_CROSSCOMPILING)
-    if (NAME STREQUAL "PREFIX")
-      execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c "import sys\ntry:\n   from distutils import sysconfig\n   sys.stdout.write(';'.join([sysconfig.PREFIX,sysconfig.EXEC_PREFIX,sysconfig.BASE_EXEC_PREFIX]))\nexcept Exception:\n   import sysconfig\n   sys.stdout.write(';'.join([sysconfig.get_config_var('base') or '', sysconfig.get_config_var('installed_base') or '']))"
-                       RESULT_VARIABLE _result
-                       OUTPUT_VARIABLE _values
-                       ERROR_QUIET
-                       OUTPUT_STRIP_TRAILING_WHITESPACE)
-      if (_result)
-        unset (_values)
-      else()
-        list (REMOVE_DUPLICATES _values)
-      endif()
-    elseif (NAME STREQUAL "INCLUDES")
-      if (WIN32)
-        set (_scheme "nt")
-      else()
-        set (_scheme "posix_prefix")
-      endif()
-      execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
-                               "import sys\ntry:\n   from distutils import sysconfig\n   sys.stdout.write(';'.join([sysconfig.get_python_inc(plat_specific=True),sysconfig.get_python_inc(plat_specific=False)]))\nexcept Exception:\n   import sysconfig\n   sys.stdout.write(';'.join([sysconfig.get_path('platinclude'),sysconfig.get_path('platinclude','${_scheme}'),sysconfig.get_path('include'),sysconfig.get_path('include','${_scheme}')]))"
-                       RESULT_VARIABLE _result
-                       OUTPUT_VARIABLE _values
-                       ERROR_QUIET
-                       OUTPUT_STRIP_TRAILING_WHITESPACE)
-      if (_result)
-        unset (_values)
-      else()
-        list (REMOVE_DUPLICATES _values)
-      endif()
-    elseif (NAME STREQUAL "SOABI")
-      execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
-                               "import sys\ntry:\n   from distutils import sysconfig\n   sys.stdout.write(';'.join([sysconfig.get_config_var('SOABI') or '',sysconfig.get_config_var('EXT_SUFFIX') or '']))\nexcept Exception:\n   import sysconfig;sys.stdout.write(';'.join([sysconfig.get_config_var('SOABI') or '',sysconfig.get_config_var('EXT_SUFFIX') or '']))"
-                       RESULT_VARIABLE _result
-                       OUTPUT_VARIABLE _soabi
-                       ERROR_QUIET
-                       OUTPUT_STRIP_TRAILING_WHITESPACE)
-      if (_result)
-        unset (_values)
-      else()
-        foreach (_item IN LISTS _soabi)
-          if (_item)
-            set (_values "${_item}")
-            break()
-          endif()
-        endforeach()
-        if (_values)
-          # clean-up: remove prefix character and suffix
-          string (REGEX REPLACE "^[.-](.+)(${CMAKE_SHARED_LIBRARY_SUFFIX}|\\.(so|pyd))$" "\\1" _values "${_values}")
-        endif()
-      endif()
-    else()
-      set (config_flag "${NAME}")
-      if (NAME STREQUAL "CONFIGDIR")
-        set (config_flag "LIBPL")
-      endif()
-      execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
-                               "import sys\ntry:\n   from distutils import sysconfig\n   sys.stdout.write(sysconfig.get_config_var('${config_flag}'))\nexcept Exception:\n   import sysconfig\n   sys.stdout.write(sysconfig.get_config_var('${config_flag}'))"
-                       RESULT_VARIABLE _result
-                       OUTPUT_VARIABLE _values
-                       ERROR_QUIET
-                       OUTPUT_STRIP_TRAILING_WHITESPACE)
-      if (_result)
-        unset (_values)
-      endif()
-    endif()
-  endif()
-
-  if (config_flag STREQUAL "ABIFLAGS")
-    set (${_PYTHON_PGCV_VALUE} "${_values}" PARENT_SCOPE)
-    return()
-  endif()
-
-  if (NOT _values OR _values STREQUAL "None")
-    return()
-  endif()
-
-  if (NAME STREQUAL "LIBS")
-    # do some clean-up
-    string (REGEX MATCHALL "-(l|framework)[ ]*[^ ]+" _values "${_values}")
-    # remove elements relative to python library itself
-    list (FILTER _values EXCLUDE REGEX "-lpython")
-    list (REMOVE_DUPLICATES _values)
-  endif()
-
-  if (WIN32 AND NAME MATCHES "^(PREFIX|CONFIGDIR|INCLUDES)$")
-    file (TO_CMAKE_PATH "${_values}" _values)
-  endif()
-
-  set (${_PYTHON_PGCV_VALUE} "${_values}" PARENT_SCOPE)
-endfunction()
-
-function (_PYTHON_GET_VERSION)
-  cmake_parse_arguments (PARSE_ARGV 0 _PGV "LIBRARY;INCLUDE" "PREFIX" "")
-
-  unset (${_PGV_PREFIX}VERSION PARENT_SCOPE)
-  unset (${_PGV_PREFIX}VERSION_MAJOR PARENT_SCOPE)
-  unset (${_PGV_PREFIX}VERSION_MINOR PARENT_SCOPE)
-  unset (${_PGV_PREFIX}VERSION_PATCH PARENT_SCOPE)
-  unset (${_PGV_PREFIX}ABI PARENT_SCOPE)
-
-  if (_PGV_LIBRARY)
-    # retrieve version and abi from library name
-    if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE)
-      # extract version from library name
-      if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "python([23])([0-9]+)")
-        set (${_PGV_PREFIX}VERSION_MAJOR "${CMAKE_MATCH_1}" PARENT_SCOPE)
-        set (${_PGV_PREFIX}VERSION_MINOR "${CMAKE_MATCH_2}" PARENT_SCOPE)
-        set (${_PGV_PREFIX}VERSION "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}" PARENT_SCOPE)
-        set (${_PGV_PREFIX}ABI "" PARENT_SCOPE)
-      elseif (_${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "python([23])\\.([0-9]+)([dmu]*)")
-        set (${_PGV_PREFIX}VERSION_MAJOR "${CMAKE_MATCH_1}" PARENT_SCOPE)
-        set (${_PGV_PREFIX}VERSION_MINOR "${CMAKE_MATCH_2}" PARENT_SCOPE)
-        set (${_PGV_PREFIX}VERSION "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}" PARENT_SCOPE)
-        set (${_PGV_PREFIX}ABI "${CMAKE_MATCH_3}" PARENT_SCOPE)
-      elseif (_${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "pypy(3)?")
-        set (version "${CMAKE_MATCH_1}")
-        if (version EQUAL "3")
-          set (${_PGV_PREFIX}VERSION_MAJOR "3" PARENT_SCOPE)
-          set (${_PGV_PREFIX}VERSION "3" PARENT_SCOPE)
-        else()
-          set (${_PGV_PREFIX}VERSION_MAJOR "2" PARENT_SCOPE)
-          set (${_PGV_PREFIX}VERSION "2" PARENT_SCOPE)
-        endif()
-        set (${_PGV_PREFIX}ABI "" PARENT_SCOPE)
-      endif()
-    endif()
-  else()
-    if (_${_PYTHON_PREFIX}_INCLUDE_DIR)
-      # retrieve version from header file
-      file (STRINGS "${_${_PYTHON_PREFIX}_INCLUDE_DIR}/patchlevel.h" version
-            REGEX "^#define[ \t]+PY_VERSION[ \t]+\"[^\"]+\"")
-      string (REGEX REPLACE "^#define[ \t]+PY_VERSION[ \t]+\"([^\"]+)\".*" "\\1"
-                            version "${version}")
-      string (REGEX MATCHALL "[0-9]+" versions "${version}")
-      list (GET versions 0 version_major)
-      list (GET versions 1 version_minor)
-      list (GET versions 2 version_patch)
-
-      set (${_PGV_PREFIX}VERSION "${version_major}.${version_minor}.${version_patch}" PARENT_SCOPE)
-      set (${_PGV_PREFIX}VERSION_MAJOR ${version_major} PARENT_SCOPE)
-      set (${_PGV_PREFIX}VERSION_MINOR ${version_minor} PARENT_SCOPE)
-      set (${_PGV_PREFIX}VERSION_PATCH ${version_patch} PARENT_SCOPE)
-
-      # compute ABI flags
-      if (version_major VERSION_GREATER "2")
-        file (STRINGS "${_${_PYTHON_PREFIX}_INCLUDE_DIR}/pyconfig.h" config REGEX "(Py_DEBUG|WITH_PYMALLOC|Py_UNICODE_SIZE|MS_WIN32)")
-        set (abi)
-        if (config MATCHES "#[ ]*define[ ]+MS_WIN32")
-          # ABI not used on Windows
-          set (abi "")
-        else()
-          if (config MATCHES "#[ ]*define[ ]+Py_DEBUG[ ]+1")
-            string (APPEND abi "d")
-          endif()
-          if (config MATCHES "#[ ]*define[ ]+WITH_PYMALLOC[ ]+1")
-            string (APPEND abi "m")
-          endif()
-          if (config MATCHES "#[ ]*define[ ]+Py_UNICODE_SIZE[ ]+4")
-            string (APPEND abi "u")
-          endif()
-          set (${_PGV_PREFIX}ABI "${abi}" PARENT_SCOPE)
-        endif()
-      else()
-        # ABI not supported
-        set (${_PGV_PREFIX}ABI "" PARENT_SCOPE)
-      endif()
-    endif()
-  endif()
-endfunction()
-
-function (_PYTHON_GET_LAUNCHER _PYTHON_PGL_NAME)
-  cmake_parse_arguments (PARSE_ARGV 1 _PGL "INTERPRETER;COMPILER" "" "")
-
-  unset ({_PYTHON_PGL_NAME} PARENT_SCOPE)
-
-  if ((_PGL_INTERPRETER AND NOT _${_PYTHON_PREFIX}_EXECUTABLE)
-      OR (_PGL_COMPILER AND NOT _${_PYTHON_PREFIX}_COMPILER))
-    return()
-  endif()
-
-  if ("IronPython" IN_LIST _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS
-      AND NOT SYSTEM_NAME MATCHES "Windows|Linux")
-    if (_PGL_INTERPRETER)
-      get_filename_component (name "${_${_PYTHON_PREFIX}_EXECUTABLE}" NAME)
-      get_filename_component (ext "${_${_PYTHON_PREFIX}_EXECUTABLE}" LAST_EXT)
-      if (name IN_LIST _${_PYTHON_PREFIX}_IRON_PYTHON_INTERPRETER_NAMES
-          AND ext STREQUAL ".exe")
-        set (${_PYTHON_PGL_NAME} "${${_PYTHON_PREFIX}_DOTNET_LAUNCHER}" PARENT_SCOPE)
-      endif()
-    else()
-      get_filename_component (name "${_${_PYTHON_PREFIX}_COMPILER}" NAME)
-      get_filename_component (ext "${_${_PYTHON_PREFIX}_COMPILER}" LAST_EXT)
-      if (name IN_LIST _${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_NAMES
-          AND ext STREQUAL ".exe")
-        set (${_PYTHON_PGL_NAME} "${${_PYTHON_PREFIX}_DOTNET_LAUNCHER}" PARENT_SCOPE)
-      endif()
-    endif()
-  endif()
-endfunction()
-
-
-function (_PYTHON_VALIDATE_INTERPRETER)
-  if (NOT _${_PYTHON_PREFIX}_EXECUTABLE)
-    return()
-  endif()
-
-  cmake_parse_arguments (PARSE_ARGV 0 _PVI "EXACT;CHECK_EXISTS" "" "")
-  if (_PVI_UNPARSED_ARGUMENTS)
-    set (expected_version "${_PVI_UNPARSED_ARGUMENTS}")
-  else()
-    unset (expected_version)
-  endif()
-
-  if (_PVI_CHECK_EXISTS AND NOT EXISTS "${_${_PYTHON_PREFIX}_EXECUTABLE}")
-    # interpreter does not exist anymore
-    set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Cannot find the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
-    set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND")
-    return()
-  endif()
-
-  _python_get_launcher (launcher INTERPRETER)
-
-  # validate ABI compatibility
-  if (DEFINED _${_PYTHON_PREFIX}_FIND_ABI)
-    execute_process (COMMAND ${launcher} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
-                             "import sys; sys.stdout.write(sys.abiflags)"
-                     RESULT_VARIABLE result
-                     OUTPUT_VARIABLE abi
-                     ERROR_QUIET
-                     OUTPUT_STRIP_TRAILING_WHITESPACE)
-    if (result)
-      # assume ABI is not supported
-      set (abi "")
-    endif()
-    if (NOT abi IN_LIST _${_PYTHON_PREFIX}_ABIFLAGS)
-      # incompatible ABI
-      set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Wrong ABI for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
-      set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND")
-      return()
-    endif()
-  endif()
-
-  get_filename_component (python_name "${_${_PYTHON_PREFIX}_EXECUTABLE}" NAME)
-
-  if (expected_version)
-    if (NOT python_name STREQUAL "python${expected_version}${abi}${CMAKE_EXECUTABLE_SUFFIX}")
-      # compute number of components for version
-      string (REGEX REPLACE "[^.]" "" dots "${expected_version}")
-      # add one dot because there is one dot less than there are components
-      string (LENGTH "${dots}." count)
-      if (count GREATER 3)
-        set (count 3)
-      endif()
-
-      # executable found must have a specific version
-      execute_process (COMMAND ${launcher} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
-                               "import sys; sys.stdout.write('.'.join([str(x) for x in sys.version_info[:${count}]]))"
-                       RESULT_VARIABLE result
-                       OUTPUT_VARIABLE version
-                       ERROR_QUIET
-                       OUTPUT_STRIP_TRAILING_WHITESPACE)
-      if (result)
-        # interpreter is not usable
-        set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Cannot use the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
-        set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND")
-      else()
-        if (_PVI_EXACT AND NOT version VERSION_EQUAL expected_version)
-          # interpreter has wrong version
-          set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Wrong version for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
-          set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND")
-        else()
-          # check that version is OK
-          string(REGEX REPLACE "^([0-9]+)\\.?.*$" "\\1" major_version "${version}")
-          string(REGEX REPLACE "^([0-9]+)\\.?.*$" "\\1" expected_major_version "${expected_version}")
-          if (NOT major_version VERSION_EQUAL expected_major_version
-              OR NOT version VERSION_GREATER_EQUAL expected_version)
-            set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Wrong version for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
-            set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND")
-          endif()
-        endif()
-      endif()
-      if (NOT _${_PYTHON_PREFIX}_EXECUTABLE)
-        return()
-      endif()
-    endif()
-  else()
-    if (NOT python_name STREQUAL "python${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}${CMAKE_EXECUTABLE_SUFFIX}")
-      # executable found do not have version in name
-      # ensure major version is OK
-      execute_process (COMMAND ${launcher} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
-                               "import sys; sys.stdout.write(str(sys.version_info[0]))"
-                       RESULT_VARIABLE result
-                       OUTPUT_VARIABLE version
-                       ERROR_QUIET
-                       OUTPUT_STRIP_TRAILING_WHITESPACE)
-      if (result OR NOT version EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
-        # interpreter not usable or has wrong major version
-        if (result)
-          set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Cannot use the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
-        else()
-          set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Wrong major version for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
-        endif()
-        set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND")
-        return()
-      endif()
-    endif()
-  endif()
-
-  if (CMAKE_SIZEOF_VOID_P AND ("Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
-        OR "Development.Embed" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
-      AND NOT CMAKE_CROSSCOMPILING)
-    # In this case, interpreter must have same architecture as environment
-    execute_process (COMMAND ${launcher} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
-                             "import sys, struct; sys.stdout.write(str(struct.calcsize(\"P\")))"
-                     RESULT_VARIABLE result
-                     OUTPUT_VARIABLE size
-                     ERROR_QUIET
-                     OUTPUT_STRIP_TRAILING_WHITESPACE)
-    if (result OR NOT size EQUAL CMAKE_SIZEOF_VOID_P)
-      # interpreter not usable or has wrong architecture
-      if (result)
-        set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Cannot use the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
-      else()
-        set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Wrong architecture for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
-      endif()
-      set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND")
-      return()
-    endif()
-  endif()
-endfunction()
-
-
-function (_PYTHON_VALIDATE_COMPILER)
-  if (NOT _${_PYTHON_PREFIX}_COMPILER)
-    return()
-  endif()
-
-  cmake_parse_arguments (PARSE_ARGV 0 _PVC "EXACT;CHECK_EXISTS" "" "")
-  if (_PVC_UNPARSED_ARGUMENTS)
-    set (major_version FALSE)
-    set (expected_version "${_PVC_UNPARSED_ARGUMENTS}")
-  else()
-    set (major_version TRUE)
-    set (expected_version "${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}")
-    set (_PVC_EXACT TRUE)
-  endif()
-
-  if (_PVC_CHECK_EXISTS AND NOT EXISTS "${_${_PYTHON_PREFIX}_COMPILER}")
-    # Compiler does not exist anymore
-    set (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE "Cannot find the compiler \"${_${_PYTHON_PREFIX}_COMPILER}\"" PARENT_SCOPE)
-    set_property (CACHE _${_PYTHON_PREFIX}_COMPILER PROPERTY VALUE "${_PYTHON_PREFIX}_COMPILER-NOTFOUND")
-    return()
-  endif()
-
-  _python_get_launcher (launcher COMPILER)
-
-  # retrieve python environment version from compiler
-  set (working_dir "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/PythonCompilerVersion.dir")
-  if (major_version)
-    # check only major version
-    file (WRITE "${working_dir}/version.py" "import sys; sys.stdout.write(str(sys.version_info[0]))")
-  else()
-    # compute number of components for version
-    string (REGEX REPLACE "[^.]" "" dots "${expected_version}")
-    # add one dot because there is one dot less than there are components
-    string (LENGTH "${dots}." count)
-    if (count GREATER 3)
-      set (count 3)
-    endif()
-    file (WRITE "${working_dir}/version.py" "import sys; sys.stdout.write('.'.join([str(x) for x in sys.version_info[:${count}]]))\n")
-  endif()
-  execute_process (COMMAND ${launcher} "${_${_PYTHON_PREFIX}_COMPILER}"
-                           ${_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_ARCH_FLAGS}
-                           /target:exe /embed "${working_dir}/version.py"
-                   WORKING_DIRECTORY "${working_dir}"
-                   OUTPUT_QUIET
-                   ERROR_QUIET
-                   OUTPUT_STRIP_TRAILING_WHITESPACE)
-  get_filename_component (ir_dir "${_${_PYTHON_PREFIX}_COMPILER}" DIRECTORY)
-  execute_process (COMMAND "${CMAKE_COMMAND}" -E env "MONO_PATH=${ir_dir}"
-                                              ${${_PYTHON_PREFIX}_DOTNET_LAUNCHER} "${working_dir}/version.exe"
-                   WORKING_DIRECTORY "${working_dir}"
-                   RESULT_VARIABLE result
-                   OUTPUT_VARIABLE version
-                   ERROR_QUIET)
-  file (REMOVE_RECURSE "${working_dir}")
-  if (result)
-    # compiler is not usable
-    set (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE "Cannot use the compiler \"${_${_PYTHON_PREFIX}_COMPILER}\"" PARENT_SCOPE)
-    set_property (CACHE _${_PYTHON_PREFIX}_COMPILER PROPERTY VALUE "${_PYTHON_PREFIX}_COMPILER-NOTFOUND")
-  elseif ((_PVC_EXACT AND NOT version VERSION_EQUAL expected_version)
-          OR NOT version VERSION_GREATER_EQUAL expected_version)
-    # Compiler has wrong version
-    set (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE "Wrong version for the compiler \"${_${_PYTHON_PREFIX}_COMPILER}\"" PARENT_SCOPE)
-    set_property (CACHE _${_PYTHON_PREFIX}_COMPILER PROPERTY VALUE "${_PYTHON_PREFIX}_COMPILER-NOTFOUND")
-  endif()
-endfunction()
-
-
-function (_PYTHON_VALIDATE_LIBRARY)
-  if (NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
-    unset (_${_PYTHON_PREFIX}_LIBRARY_DEBUG)
-    return()
-  endif()
-
-  cmake_parse_arguments (PARSE_ARGV 0 _PVL "EXACT;CHECK_EXISTS" "" "")
-  if (_PVL_UNPARSED_ARGUMENTS)
-    set (expected_version ${_PVL_UNPARSED_ARGUMENTS})
-  else()
-    unset (expected_version)
-  endif()
-
-  if (_PVL_CHECK_EXISTS AND NOT EXISTS "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}")
-    # library does not exist anymore
-    set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Cannot find the library \"${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}\"" PARENT_SCOPE)
-    set_property (CACHE _${_PYTHON_PREFIX}_LIBRARY_RELEASE PROPERTY VALUE "${_PYTHON_PREFIX}_LIBRARY_RELEASE-NOTFOUND")
-    if (WIN32)
-      set_property (CACHE _${_PYTHON_PREFIX}_LIBRARY_DEBUG PROPERTY VALUE "${_PYTHON_PREFIX}_LIBRARY_DEBUG-NOTFOUND")
-    endif()
-    set_property (CACHE _${_PYTHON_PREFIX}_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_INCLUDE_DIR-NOTFOUND")
-    return()
-  endif()
-
-  # retrieve version and abi from library name
-  _python_get_version (LIBRARY PREFIX lib_)
-
-  if (DEFINED _${_PYTHON_PREFIX}_FIND_ABI AND NOT lib_ABI IN_LIST _${_PYTHON_PREFIX}_ABIFLAGS)
-    # incompatible ABI
-    set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Wrong ABI for the library \"${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}\"" PARENT_SCOPE)
-    set_property (CACHE _${_PYTHON_PREFIX}_LIBRARY_RELEASE PROPERTY VALUE "${_PYTHON_PREFIX}_LIBRARY_RELEASE-NOTFOUND")
-  else()
-    if (expected_version)
-      # library have only major.minor information
-      string (REGEX MATCH "[0-9](\\.[0-9]+)?" version "${expected_version}")
-      if ((_PVL_EXACT AND NOT lib_VERSION VERSION_EQUAL version) OR (lib_VERSION VERSION_LESS version))
-        # library has wrong version
-        set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Wrong version for the library \"${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}\"" PARENT_SCOPE)
-        set_property (CACHE _${_PYTHON_PREFIX}_LIBRARY_RELEASE PROPERTY VALUE "${_PYTHON_PREFIX}_LIBRARY_RELEASE-NOTFOUND")
-      endif()
-    else()
-      if (NOT lib_VERSION_MAJOR VERSION_EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
-        # library has wrong major version
-        set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Wrong major version for the library \"${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}\"" PARENT_SCOPE)
-        set_property (CACHE _${_PYTHON_PREFIX}_LIBRARY_RELEASE PROPERTY VALUE "${_PYTHON_PREFIX}_LIBRARY_RELEASE-NOTFOUND")
-      endif()
-    endif()
-  endif()
-
-  if (NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
-    if (WIN32)
-      set_property (CACHE _${_PYTHON_PREFIX}_LIBRARY_DEBUG PROPERTY VALUE "${_PYTHON_PREFIX}_LIBRARY_DEBUG-NOTFOUND")
-    endif()
-    unset (_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE CACHE)
-    unset (_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG CACHE)
-    set_property (CACHE _${_PYTHON_PREFIX}_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_INCLUDE_DIR-NOTFOUND")
-  endif()
-endfunction()
-
-
-function (_PYTHON_VALIDATE_INCLUDE_DIR)
-  if (NOT _${_PYTHON_PREFIX}_INCLUDE_DIR)
-    return()
-  endif()
-
-  cmake_parse_arguments (PARSE_ARGV 0 _PVID "EXACT;CHECK_EXISTS" "" "")
-  if (_PVID_UNPARSED_ARGUMENTS)
-    set (expected_version ${_PVID_UNPARSED_ARGUMENTS})
-  else()
-    unset (expected_version)
-  endif()
-
-  if (_PVID_CHECK_EXISTS AND NOT EXISTS "${_${_PYTHON_PREFIX}_INCLUDE_DIR}")
-    # include file does not exist anymore
-    set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Cannot find the directory \"${_${_PYTHON_PREFIX}_INCLUDE_DIR}\"" PARENT_SCOPE)
-    set_property (CACHE _${_PYTHON_PREFIX}_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_INCLUDE_DIR-NOTFOUND")
-    return()
-  endif()
-
-  # retrieve version from header file
-  _python_get_version (INCLUDE PREFIX inc_)
-
-  if (DEFINED _${_PYTHON_PREFIX}_FIND_ABI AND NOT inc_ABI IN_LIST _${_PYTHON_PREFIX}_ABIFLAGS)
-    # incompatible ABI
-    set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Wrong ABI for the directory \"${_${_PYTHON_PREFIX}_INCLUDE_DIR}\"" PARENT_SCOPE)
-    set_property (CACHE _${_PYTHON_PREFIX}_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_INCLUDE_DIR-NOTFOUND")
-  else()
-    if (expected_version)
-      if ((_PVID_EXACT AND NOT inc_VERSION VERSION_EQUAL expected_version) OR (inc_VERSION VERSION_LESS expected_version))
-        # include dir has wrong version
-        set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Wrong version for the directory \"${_${_PYTHON_PREFIX}_INCLUDE_DIR}\"" PARENT_SCOPE)
-        set_property (CACHE _${_PYTHON_PREFIX}_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_INCLUDE_DIR-NOTFOUND")
-      endif()
-    else()
-      if (NOT inc_VERSION_MAJOR VERSION_EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
-        # include dir has wrong major version
-        set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Wrong major version for the directory \"${_${_PYTHON_PREFIX}_INCLUDE_DIR}\"" PARENT_SCOPE)
-        set_property (CACHE _${_PYTHON_PREFIX}_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_INCLUDE_DIR-NOTFOUND")
-      endif()
-    endif()
-  endif()
-endfunction()
-
-
-function (_PYTHON_FIND_RUNTIME_LIBRARY _PYTHON_LIB)
-  string (REPLACE "_RUNTIME" "" _PYTHON_LIB "${_PYTHON_LIB}")
-  # look at runtime part on systems supporting it
-  if (CMAKE_SYSTEM_NAME STREQUAL "Windows" OR
-      (CMAKE_SYSTEM_NAME MATCHES "MSYS|CYGWIN"
-        AND ${_PYTHON_LIB} MATCHES "${CMAKE_IMPORT_LIBRARY_SUFFIX}$"))
-    set (CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_SHARED_LIBRARY_SUFFIX})
-    # MSYS has a special syntax for runtime libraries
-    if (CMAKE_SYSTEM_NAME MATCHES "MSYS")
-      list (APPEND CMAKE_FIND_LIBRARY_PREFIXES "msys-")
-    endif()
-    find_library (${ARGV})
-  endif()
-endfunction()
-
-
-function (_PYTHON_SET_LIBRARY_DIRS _PYTHON_SLD_RESULT)
-  unset (_PYTHON_DIRS)
-  set (_PYTHON_LIBS ${ARGN})
-  foreach (_PYTHON_LIB IN LISTS _PYTHON_LIBS)
-    if (${_PYTHON_LIB})
-      get_filename_component (_PYTHON_DIR "${${_PYTHON_LIB}}" DIRECTORY)
-      list (APPEND _PYTHON_DIRS "${_PYTHON_DIR}")
-    endif()
-  endforeach()
-  list (REMOVE_DUPLICATES _PYTHON_DIRS)
-  set (${_PYTHON_SLD_RESULT} ${_PYTHON_DIRS} PARENT_SCOPE)
-endfunction()
-
-
-function (_PYTHON_SET_DEVELOPMENT_MODULE_FOUND module)
-  if ("Development.${module}" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
-    string(TOUPPER "${module}" id)
-    set (module_found TRUE)
-
-    if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS
-        AND NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
-      set (module_found FALSE)
-    endif()
-    if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS
-        AND NOT _${_PYTHON_PREFIX}_INCLUDE_DIR)
-      set (module_found FALSE)
-    endif()
-
-    set (${_PYTHON_PREFIX}_Development.${module}_FOUND ${module_found} PARENT_SCOPE)
-  endif()
-endfunction()
-
-
-# If major version is specified, it must be the same as internal major version
-if (DEFINED ${_PYTHON_PREFIX}_FIND_VERSION_MAJOR
-    AND NOT ${_PYTHON_PREFIX}_FIND_VERSION_MAJOR VERSION_EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
-  _python_display_failure ("Could NOT find ${_PYTHON_PREFIX}: Wrong major version specified is \"${${_PYTHON_PREFIX}_FIND_VERSION_MAJOR}\", but expected major version is \"${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}\"")
-endif()
-
-
-# handle components
-if (NOT ${_PYTHON_PREFIX}_FIND_COMPONENTS)
-  set (${_PYTHON_PREFIX}_FIND_COMPONENTS Interpreter)
-  set (${_PYTHON_PREFIX}_FIND_REQUIRED_Interpreter TRUE)
-endif()
-if ("NumPy" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
-  list (APPEND ${_PYTHON_PREFIX}_FIND_COMPONENTS "Interpreter" "Development.Module")
-endif()
-if ("Development" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
-  list (APPEND ${_PYTHON_PREFIX}_FIND_COMPONENTS "Development.Module" "Development.Embed")
-endif()
-list (REMOVE_DUPLICATES ${_PYTHON_PREFIX}_FIND_COMPONENTS)
-foreach (_${_PYTHON_PREFIX}_COMPONENT IN ITEMS Interpreter Compiler Development Development.Module Development.Embed NumPy)
-  set (${_PYTHON_PREFIX}_${_${_PYTHON_PREFIX}_COMPONENT}_FOUND FALSE)
-endforeach()
-if (${_PYTHON_PREFIX}_FIND_REQUIRED_Development)
-  set (${_PYTHON_PREFIX}_FIND_REQUIRED_Development.Module TRUE)
-  set (${_PYTHON_PREFIX}_FIND_REQUIRED_Development.Embed TRUE)
-endif()
-
-unset (_${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
-unset (_${_PYTHON_PREFIX}_FIND_DEVELOPMENT_MODULE_ARTIFACTS)
-unset (_${_PYTHON_PREFIX}_FIND_DEVELOPMENT_EMBED_ARTIFACTS)
-if ("Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
-  if (CMAKE_SYSTEM_NAME MATCHES "^(Windows.*|CYGWIN|MSYS)$")
-    list (APPEND _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_MODULE_ARTIFACTS "LIBRARY")
-  endif()
-  list (APPEND _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_MODULE_ARTIFACTS "INCLUDE_DIR")
-endif()
-if ("Development.Embed" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
-  list (APPEND _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_EMBED_ARTIFACTS "LIBRARY" "INCLUDE_DIR")
-endif()
-set (_${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS ${_${_PYTHON_PREFIX}_FIND_DEVELOPMENT_MODULE_ARTIFACTS} ${_${_PYTHON_PREFIX}_FIND_DEVELOPMENT_EMBED_ARTIFACTS})
-list (REMOVE_DUPLICATES _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
-
-# Set versions to search
-## default: search any version
-set (_${_PYTHON_PREFIX}_FIND_VERSIONS ${_${_PYTHON_PREFIX}_VERSIONS})
-unset (_${_PYTHON_PREFIX}_FIND_VERSION_EXACT)
-
-if (${_PYTHON_PREFIX}_FIND_VERSION_COUNT)
-  if (${_PYTHON_PREFIX}_FIND_VERSION_EXACT)
-    set (_${_PYTHON_PREFIX}_FIND_VERSION_EXACT "EXACT")
-    set (_${_PYTHON_PREFIX}_FIND_VERSIONS ${${_PYTHON_PREFIX}_FIND_VERSION_MAJOR}.${${_PYTHON_PREFIX}_FIND_VERSION_MINOR})
-  else()
-    unset (_${_PYTHON_PREFIX}_FIND_VERSIONS)
-    # add all compatible versions
-    foreach (_${_PYTHON_PREFIX}_VERSION IN LISTS _${_PYTHON_PREFIX}_VERSIONS)
-      if (_${_PYTHON_PREFIX}_VERSION VERSION_GREATER_EQUAL "${${_PYTHON_PREFIX}_FIND_VERSION_MAJOR}.${${_PYTHON_PREFIX}_FIND_VERSION_MINOR}")
-        list (APPEND _${_PYTHON_PREFIX}_FIND_VERSIONS ${_${_PYTHON_PREFIX}_VERSION})
-      endif()
-    endforeach()
-  endif()
-endif()
-
-# Set ABIs to search
-## default: search any ABI
-if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR VERSION_LESS "3")
-  # ABI not supported
-  unset (_${_PYTHON_PREFIX}_FIND_ABI)
-  set (_${_PYTHON_PREFIX}_ABIFLAGS "")
-else()
-  unset (_${_PYTHON_PREFIX}_FIND_ABI)
-  unset (_${_PYTHON_PREFIX}_ABIFLAGS)
-  if (DEFINED ${_PYTHON_PREFIX}_FIND_ABI)
-    # normalization
-    string (TOUPPER "${${_PYTHON_PREFIX}_FIND_ABI}" _${_PYTHON_PREFIX}_FIND_ABI)
-    list (TRANSFORM _${_PYTHON_PREFIX}_FIND_ABI REPLACE "^(TRUE|Y(ES)?|1)$" "ON")
-    list (TRANSFORM _${_PYTHON_PREFIX}_FIND_ABI REPLACE "^(FALSE|N(O)?|0)$" "OFF")
-    if (NOT _${_PYTHON_PREFIX}_FIND_ABI MATCHES "^(ON|OFF|ANY);(ON|OFF|ANY);(ON|OFF|ANY)$")
-      message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${${_PYTHON_PREFIX}_FIND_ABI}: invalid value for '${_PYTHON_PREFIX}_FIND_ABI'. Ignore it")
-      unset (_${_PYTHON_PREFIX}_FIND_ABI)
-    endif()
-    _python_get_abiflags (_${_PYTHON_PREFIX}_ABIFLAGS)
-  endif()
-endif()
-unset (${_PYTHON_PREFIX}_SOABI)
-
-# Define lookup strategy
-if (_${_PYTHON_PREFIX}_LOOKUP_POLICY STREQUAL "NEW")
-  set (_${_PYTHON_PREFIX}_FIND_STRATEGY "LOCATION")
-else()
-  set (_${_PYTHON_PREFIX}_FIND_STRATEGY "VERSION")
-endif()
-if (DEFINED ${_PYTHON_PREFIX}_FIND_STRATEGY)
-  if (NOT ${_PYTHON_PREFIX}_FIND_STRATEGY MATCHES "^(VERSION|LOCATION)$")
-    message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${${_PYTHON_PREFIX}_FIND_STRATEGY}: invalid value for '${_PYTHON_PREFIX}_FIND_STRATEGY'. 'VERSION' or 'LOCATION' expected.")
-    set (_${_PYTHON_PREFIX}_FIND_STRATEGY "VERSION")
-  else()
-    set (_${_PYTHON_PREFIX}_FIND_STRATEGY "${${_PYTHON_PREFIX}_FIND_STRATEGY}")
-  endif()
-endif()
-
-# Python and Anaconda distributions: define which architectures can be used
-if (CMAKE_SIZEOF_VOID_P)
-  # In this case, search only for 64bit or 32bit
-  math (EXPR _${_PYTHON_PREFIX}_ARCH "${CMAKE_SIZEOF_VOID_P} * 8")
-  set (_${_PYTHON_PREFIX}_ARCH2 ${_${_PYTHON_PREFIX}_ARCH})
-else()
-  # architecture unknown, search for both 64bit and 32bit
-  set (_${_PYTHON_PREFIX}_ARCH 64)
-  set (_${_PYTHON_PREFIX}_ARCH2 32)
-endif()
-
-# IronPython support
-unset (_${_PYTHON_PREFIX}_IRON_PYTHON_INTERPRETER_NAMES)
-unset (_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_NAMES)
-unset (_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_ARCH_FLAGS)
-if (CMAKE_SIZEOF_VOID_P)
-  if (_${_PYTHON_PREFIX}_ARCH EQUAL "32")
-    set (_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_ARCH_FLAGS "/platform:x86")
-  else()
-    set (_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_ARCH_FLAGS "/platform:x64")
-  endif()
-endif()
-if (NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
-  # Do not use wrapper script on Linux because it is buggy: -c interpreter option cannot be used
-  list (APPEND _${_PYTHON_PREFIX}_IRON_PYTHON_INTERPRETER_NAMES "ipy${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}" "ipy64" "ipy32" "ipy")
-  list (APPEND _${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_NAMES "ipyc")
-endif()
-list (APPEND _${_PYTHON_PREFIX}_IRON_PYTHON_INTERPRETER_NAMES "ipy.exe")
-list (APPEND _${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_NAMES "ipyc.exe")
-set (_${_PYTHON_PREFIX}_IRON_PYTHON_PATH_SUFFIXES net45 net40 bin)
-
-# PyPy support
-if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL "3")
-  set (_${_PYTHON_PREFIX}_PYPY_NAMES pypy3)
-  set (_${_PYTHON_PREFIX}_PYPY_LIB_NAMES pypy3-c)
-  if (WIN32)
-    # special name for runtime part
-    list (APPEND _${_PYTHON_PREFIX}_PYPY_LIB_NAMES libpypy3-c)
-  endif()
-  set (_${_PYTHON_PREFIX}_PYPY_INCLUDE_PATH_SUFFIXES lib/pypy3)
-else()
-  set (_${_PYTHON_PREFIX}_PYPY_NAMES pypy)
-  set (_${_PYTHON_PREFIX}_PYPY_LIB_NAMES pypy-c)
-  if (WIN32)
-    # special name for runtime part
-    list (APPEND _${_PYTHON_PREFIX}_PYPY_LIB_NAMES libpypy-c)
-  endif()
-  set (_${_PYTHON_PREFIX}_PYPY_INCLUDE_PATH_SUFFIXES lib/pypy)
-endif()
-set (_${_PYTHON_PREFIX}_PYPY_EXECUTABLE_PATH_SUFFIXES bin)
-set (_${_PYTHON_PREFIX}_PYPY_LIBRARY_PATH_SUFFIXES lib libs bin)
-list (APPEND _${_PYTHON_PREFIX}_PYPY_INCLUDE_PATH_SUFFIXES include)
-
-# Python Implementations handling
-unset (_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS)
-if (DEFINED ${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS)
-  foreach (_${_PYTHON_PREFIX}_IMPLEMENTATION IN LISTS ${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS)
-    if (NOT _${_PYTHON_PREFIX}_IMPLEMENTATION MATCHES "^(CPython|IronPython|PyPy)$")
-      message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${_${_PYTHON_PREFIX}_IMPLEMENTATION}: invalid value for '${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS'. 'CPython', 'IronPython' or 'PyPy' expected. Value will be ignored.")
-    else()
-      list (APPEND _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS ${_${_PYTHON_PREFIX}_IMPLEMENTATION})
-    endif()
-  endforeach()
-else()
-  if (WIN32)
-    set (_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS CPython IronPython)
-  else()
-    set (_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS CPython)
-  endif()
-endif()
-
-# compute list of names for header file
-unset (_${_PYTHON_PREFIX}_INCLUDE_NAMES)
-foreach (_${_PYTHON_PREFIX}_IMPLEMENTATION IN LISTS _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS)
-  if (_${_PYTHON_PREFIX}_IMPLEMENTATION STREQUAL "CPython")
-    list (APPEND _${_PYTHON_PREFIX}_INCLUDE_NAMES "Python.h")
-  elseif (_${_PYTHON_PREFIX}_IMPLEMENTATION STREQUAL "PyPy")
-    list (APPEND _${_PYTHON_PREFIX}_INCLUDE_NAMES "PyPy.h")
-  endif()
-endforeach()
-
-
-# Apple frameworks handling
-_python_find_frameworks ()
-
-set (_${_PYTHON_PREFIX}_FIND_FRAMEWORK "FIRST")
-
-if (DEFINED ${_PYTHON_PREFIX}_FIND_FRAMEWORK)
-  if (NOT ${_PYTHON_PREFIX}_FIND_FRAMEWORK MATCHES "^(FIRST|LAST|NEVER)$")
-    message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${${_PYTHON_PREFIX}_FIND_FRAMEWORK}: invalid value for '${_PYTHON_PREFIX}_FIND_FRAMEWORK'. 'FIRST', 'LAST' or 'NEVER' expected. 'FIRST' will be used instead.")
-  else()
-    set (_${_PYTHON_PREFIX}_FIND_FRAMEWORK ${${_PYTHON_PREFIX}_FIND_FRAMEWORK})
-  endif()
-elseif (DEFINED CMAKE_FIND_FRAMEWORK)
-  if (CMAKE_FIND_FRAMEWORK STREQUAL "ONLY")
-    message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: CMAKE_FIND_FRAMEWORK: 'ONLY' value is not supported. 'FIRST' will be used instead.")
-  elseif (NOT CMAKE_FIND_FRAMEWORK MATCHES "^(FIRST|LAST|NEVER)$")
-    message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${CMAKE_FIND_FRAMEWORK}: invalid value for 'CMAKE_FIND_FRAMEWORK'. 'FIRST', 'LAST' or 'NEVER' expected. 'FIRST' will be used instead.")
-  else()
-    set (_${_PYTHON_PREFIX}_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK})
-  endif()
-endif()
-
-# Save CMAKE_FIND_APPBUNDLE
-if (DEFINED CMAKE_FIND_APPBUNDLE)
-  set (_${_PYTHON_PREFIX}_CMAKE_FIND_APPBUNDLE ${CMAKE_FIND_APPBUNDLE})
-else()
-  unset (_${_PYTHON_PREFIX}_CMAKE_FIND_APPBUNDLE)
-endif()
-# To avoid app bundle lookup
-set (CMAKE_FIND_APPBUNDLE "NEVER")
-
-# Save CMAKE_FIND_FRAMEWORK
-if (DEFINED CMAKE_FIND_FRAMEWORK)
-  set (_${_PYTHON_PREFIX}_CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK})
-else()
-  unset (_${_PYTHON_PREFIX}_CMAKE_FIND_FRAMEWORK)
-endif()
-# To avoid framework lookup
-set (CMAKE_FIND_FRAMEWORK "NEVER")
-
-# Windows Registry handling
-if (DEFINED ${_PYTHON_PREFIX}_FIND_REGISTRY)
-  if (NOT ${_PYTHON_PREFIX}_FIND_REGISTRY MATCHES "^(FIRST|LAST|NEVER)$")
-    message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${${_PYTHON_PREFIX}_FIND_REGISTRY}: invalid value for '${_PYTHON_PREFIX}_FIND_REGISTRY'. 'FIRST', 'LAST' or 'NEVER' expected. 'FIRST' will be used instead.")
-    set (_${_PYTHON_PREFIX}_FIND_REGISTRY "FIRST")
-  else()
-    set (_${_PYTHON_PREFIX}_FIND_REGISTRY ${${_PYTHON_PREFIX}_FIND_REGISTRY})
-  endif()
-else()
-  set (_${_PYTHON_PREFIX}_FIND_REGISTRY "FIRST")
-endif()
-
-# virtual environments recognition
-if (DEFINED ENV{VIRTUAL_ENV} OR DEFINED ENV{CONDA_PREFIX})
-  if (DEFINED ${_PYTHON_PREFIX}_FIND_VIRTUALENV)
-    if (NOT ${_PYTHON_PREFIX}_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY|STANDARD)$")
-      message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${${_PYTHON_PREFIX}_FIND_VIRTUALENV}: invalid value for '${_PYTHON_PREFIX}_FIND_VIRTUALENV'. 'FIRST', 'ONLY' or 'STANDARD' expected. 'FIRST' will be used instead.")
-      set (_${_PYTHON_PREFIX}_FIND_VIRTUALENV "FIRST")
-    else()
-      set (_${_PYTHON_PREFIX}_FIND_VIRTUALENV ${${_PYTHON_PREFIX}_FIND_VIRTUALENV})
-    endif()
-  else()
-    set (_${_PYTHON_PREFIX}_FIND_VIRTUALENV FIRST)
-  endif()
-else()
-  set (_${_PYTHON_PREFIX}_FIND_VIRTUALENV STANDARD)
-endif()
-
-
-# Compute search signature
-# This signature will be used to check validity of cached variables on new search
-set (_${_PYTHON_PREFIX}_SIGNATURE "${${_PYTHON_PREFIX}_ROOT_DIR}:${_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS}:${_${_PYTHON_PREFIX}_FIND_STRATEGY}:${${_PYTHON_PREFIX}_FIND_VIRTUALENV}")
-if (NOT WIN32)
-  string (APPEND _${_PYTHON_PREFIX}_SIGNATURE ":${${_PYTHON_PREFIX}_USE_STATIC_LIBS}:")
-endif()
-if (CMAKE_HOST_APPLE)
-  string (APPEND _${_PYTHON_PREFIX}_SIGNATURE ":${_${_PYTHON_PREFIX}_FIND_FRAMEWORK}")
-endif()
-if (CMAKE_HOST_WIN32)
-  string (APPEND _${_PYTHON_PREFIX}_SIGNATURE ":${_${_PYTHON_PREFIX}_FIND_REGISTRY}")
-endif()
-
-function (_PYTHON_CHECK_DEVELOPMENT_SIGNATURE module)
-  if ("Development.${module}" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
-    string (TOUPPER "${module}" id)
-    set (signature "${_${_PYTHON_PREFIX}_SIGNATURE}:")
-    if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS)
-      list (APPEND signature "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}:")
-    endif()
-    if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS)
-      list (APPEND signature "${_${_PYTHON_PREFIX}_INCLUDE_DIR}:")
-    endif()
-    string (MD5 signature "${signature}")
-    if (signature STREQUAL _${_PYTHON_PREFIX}_DEVELOPMENT_${id}_SIGNATURE)
-      if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS)
-        _python_validate_library (${${_PYTHON_PREFIX}_FIND_VERSION}
-                                  ${_${_PYTHON_PREFIX}_FIND_VERSION_EXACT}
-                                  CHECK_EXISTS)
-      endif()
-      if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS)
-        _python_validate_include_dir (${${_PYTHON_PREFIX}_FIND_VERSION}
-                                      ${_${_PYTHON_PREFIX}_FIND_VERSION_EXACT}
-                                      CHECK_EXISTS)
-      endif()
-    else()
-      if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS)
-        unset (_${_PYTHON_PREFIX}_LIBRARY_RELEASE CACHE)
-        unset (_${_PYTHON_PREFIX}_LIBRARY_DEBUG CACHE)
-      endif()
-      if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS)
-        unset (_${_PYTHON_PREFIX}_INCLUDE_DIR CACHE)
-      endif()
-    endif()
-    if (("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS
-          AND NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
-        OR ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS
-          AND NOT _${_PYTHON_PREFIX}_INCLUDE_DIR))
-      unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
-      unset (_${_PYTHON_PREFIX}_DEVELOPMENT_${id}_SIGNATURE CACHE)
-    endif()
-  endif()
-endfunction()
-
-function (_PYTHON_COMPUTE_DEVELOPMENT_SIGNATURE module)
-  string (TOUPPER "${module}" id)
-  if (${_PYTHON_PREFIX}_Development.${module}_FOUND)
-    set (signature "${_${_PYTHON_PREFIX}_SIGNATURE}:")
-    if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS)
-      list (APPEND signature "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}:")
-    endif()
-    if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS)
-      list (APPEND signature "${_${_PYTHON_PREFIX}_INCLUDE_DIR}:")
-    endif()
-    string (MD5 signature "${signature}")
-    set (_${_PYTHON_PREFIX}_DEVELOPMENT_${id}_SIGNATURE "${signature}" CACHE INTERNAL "")
-  else()
-    unset (_${_PYTHON_PREFIX}_DEVELOPMENT_${id}_SIGNATURE CACHE)
-  endif()
-endfunction()
-
-
-unset (_${_PYTHON_PREFIX}_REQUIRED_VARS)
-unset (_${_PYTHON_PREFIX}_CACHED_VARS)
-unset (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE)
-unset (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE)
-unset (_${_PYTHON_PREFIX}_Development_REASON_FAILURE)
-unset (_${_PYTHON_PREFIX}_NumPy_REASON_FAILURE)
-
-
-# preamble
-## For IronPython on platforms other than Windows, search for the .Net interpreter
-if ("IronPython" IN_LIST _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS
-    AND NOT WIN32)
-  find_program (${_PYTHON_PREFIX}_DOTNET_LAUNCHER
-                NAMES "mono")
-endif()
-
-
-# first step, search for the interpreter
-if ("Interpreter" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
-  list (APPEND _${_PYTHON_PREFIX}_CACHED_VARS _${_PYTHON_PREFIX}_EXECUTABLE
-                                              _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES)
-  if (${_PYTHON_PREFIX}_FIND_REQUIRED_Interpreter)
-    list (APPEND _${_PYTHON_PREFIX}_REQUIRED_VARS ${_PYTHON_PREFIX}_EXECUTABLE)
-  endif()
-
-  if (DEFINED ${_PYTHON_PREFIX}_EXECUTABLE
-      AND IS_ABSOLUTE "${${_PYTHON_PREFIX}_EXECUTABLE}")
-    if (NOT ${_PYTHON_PREFIX}_EXECUTABLE STREQUAL _${_PYTHON_PREFIX}_EXECUTABLE)
-      # invalidate cache properties
-      unset (_${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES CACHE)
-    endif()
-    set (_${_PYTHON_PREFIX}_EXECUTABLE "${${_PYTHON_PREFIX}_EXECUTABLE}" CACHE INTERNAL "")
-  elseif (DEFINED _${_PYTHON_PREFIX}_EXECUTABLE)
-    # compute interpreter signature and check validity of definition
-    string (MD5 __${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE "${_${_PYTHON_PREFIX}_SIGNATURE}:${_${_PYTHON_PREFIX}_EXECUTABLE}")
-    if (__${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE STREQUAL _${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE)
-      # check version validity
-      if (${_PYTHON_PREFIX}_FIND_VERSION_EXACT)
-        _python_validate_interpreter (${${_PYTHON_PREFIX}_FIND_VERSION} EXACT CHECK_EXISTS)
-      else()
-        _python_validate_interpreter (${${_PYTHON_PREFIX}_FIND_VERSION} CHECK_EXISTS)
-      endif()
-    else()
-      unset (_${_PYTHON_PREFIX}_EXECUTABLE CACHE)
-    endif()
-    if (NOT _${_PYTHON_PREFIX}_EXECUTABLE)
-      unset (_${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE CACHE)
-      unset (_${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES CACHE)
-    endif()
-  endif()
-
-  if (NOT _${_PYTHON_PREFIX}_EXECUTABLE)
-    set (_${_PYTHON_PREFIX}_HINTS "${${_PYTHON_PREFIX}_ROOT_DIR}" ENV ${_PYTHON_PREFIX}_ROOT_DIR)
-
-    if (_${_PYTHON_PREFIX}_FIND_STRATEGY STREQUAL "LOCATION")
-      # build all executable names
-      _python_get_names (_${_PYTHON_PREFIX}_NAMES VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS} POSIX INTERPRETER)
-      _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS} INTERPRETER)
-
-      # Framework Paths
-      _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS})
-      # Registry Paths
-      _python_get_registries (_${_PYTHON_PREFIX}_REGISTRY_PATHS VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS})
-
-      while (TRUE)
-        # Virtual environments handling
-        if (_${_PYTHON_PREFIX}_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY)$")
-          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
-                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
-                        NAMES_PER_DIR
-                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                        PATHS ENV VIRTUAL_ENV ENV CONDA_PREFIX
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_CMAKE_PATH
-                        NO_CMAKE_ENVIRONMENT_PATH
-                        NO_SYSTEM_ENVIRONMENT_PATH
-                        NO_CMAKE_SYSTEM_PATH)
-
-          _python_validate_interpreter (${${_PYTHON_PREFIX}_FIND_VERSION} ${_${_PYTHON_PREFIX}_FIND_VERSION_EXACT})
-          if (_${_PYTHON_PREFIX}_EXECUTABLE)
-            break()
-          endif()
-          if (_${_PYTHON_PREFIX}_FIND_VIRTUALENV STREQUAL "ONLY")
-            break()
-          endif()
-        endif()
-
-        # Apple frameworks handling
-        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
-          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
-                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
-                        NAMES_PER_DIR
-                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_CMAKE_PATH
-                        NO_CMAKE_ENVIRONMENT_PATH
-                        NO_SYSTEM_ENVIRONMENT_PATH
-                        NO_CMAKE_SYSTEM_PATH)
-          _python_validate_interpreter (${${_PYTHON_PREFIX}_FIND_VERSION} ${_${_PYTHON_PREFIX}_FIND_VERSION_EXACT})
-          if (_${_PYTHON_PREFIX}_EXECUTABLE)
-            break()
-          endif()
-        endif()
-        # Windows registry
-        if (CMAKE_HOST_WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "FIRST")
-          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
-                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
-                        NAMES_PER_DIR
-                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                        PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_SYSTEM_ENVIRONMENT_PATH
-                        NO_CMAKE_SYSTEM_PATH)
-          _python_validate_interpreter (${${_PYTHON_PREFIX}_FIND_VERSION} ${_${_PYTHON_PREFIX}_FIND_VERSION_EXACT})
-          if (_${_PYTHON_PREFIX}_EXECUTABLE)
-            break()
-          endif()
-        endif()
-
-        # try using HINTS
-        find_program (_${_PYTHON_PREFIX}_EXECUTABLE
-                      NAMES ${_${_PYTHON_PREFIX}_NAMES}
-                      NAMES_PER_DIR
-                      HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                      PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                      NO_SYSTEM_ENVIRONMENT_PATH
-                      NO_CMAKE_SYSTEM_PATH)
-        _python_validate_interpreter (${${_PYTHON_PREFIX}_FIND_VERSION} ${_${_PYTHON_PREFIX}_FIND_VERSION_EXACT})
-        if (_${_PYTHON_PREFIX}_EXECUTABLE)
-          break()
-        endif()
-        # try using standard paths
-        find_program (_${_PYTHON_PREFIX}_EXECUTABLE
-                      NAMES ${_${_PYTHON_PREFIX}_NAMES}
-                      NAMES_PER_DIR
-                      PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES})
-        _python_validate_interpreter (${${_PYTHON_PREFIX}_FIND_VERSION} ${_${_PYTHON_PREFIX}_FIND_VERSION_EXACT})
-        if (_${_PYTHON_PREFIX}_EXECUTABLE)
-          break()
-        endif()
-
-        # Apple frameworks handling
-        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
-          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
-                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
-                        NAMES_PER_DIR
-                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_DEFAULT_PATH)
-          _python_validate_interpreter (${${_PYTHON_PREFIX}_FIND_VERSION} ${_${_PYTHON_PREFIX}_FIND_VERSION_EXACT})
-          if (_${_PYTHON_PREFIX}_EXECUTABLE)
-            break()
-          endif()
-        endif()
-        # Windows registry
-        if (CMAKE_HOST_WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "LAST")
-          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
-                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
-                        NAMES_PER_DIR
-                        PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_DEFAULT_PATH)
-          _python_validate_interpreter (${${_PYTHON_PREFIX}_FIND_VERSION} ${_${_PYTHON_PREFIX}_FIND_VERSION_EXACT})
-          if (_${_PYTHON_PREFIX}_EXECUTABLE)
-            break()
-          endif()
-        endif()
-
-        break()
-      endwhile()
-    else()
-      # look-up for various versions and locations
-      foreach (_${_PYTHON_PREFIX}_VERSION IN LISTS _${_PYTHON_PREFIX}_FIND_VERSIONS)
-        _python_get_names (_${_PYTHON_PREFIX}_NAMES VERSION ${_${_PYTHON_PREFIX}_VERSION} POSIX INTERPRETER)
-        _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES VERSION ${_${_PYTHON_PREFIX}_VERSION} INTERPRETER)
-
-        _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS VERSION ${_${_PYTHON_PREFIX}_VERSION})
-        _python_get_registries (_${_PYTHON_PREFIX}_REGISTRY_PATHS VERSION ${_${_PYTHON_PREFIX}_VERSION})
-
-        # Virtual environments handling
-        if (_${_PYTHON_PREFIX}_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY)$")
-          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
-                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
-                        NAMES_PER_DIR
-                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                        PATHS ENV VIRTUAL_ENV ENV CONDA_PREFIX
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_CMAKE_PATH
-                        NO_CMAKE_ENVIRONMENT_PATH
-                        NO_SYSTEM_ENVIRONMENT_PATH
-                        NO_CMAKE_SYSTEM_PATH)
-          _python_validate_interpreter (${_${_PYTHON_PREFIX}_VERSION} EXACT)
-          if (_${_PYTHON_PREFIX}_EXECUTABLE)
-            break()
-          endif()
-          if (_${_PYTHON_PREFIX}_FIND_VIRTUALENV STREQUAL "ONLY")
-            continue()
-          endif()
-        endif()
-
-        # Apple frameworks handling
-        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
-          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
-                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
-                        NAMES_PER_DIR
-                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_CMAKE_PATH
-                        NO_CMAKE_ENVIRONMENT_PATH
-                        NO_SYSTEM_ENVIRONMENT_PATH
-                        NO_CMAKE_SYSTEM_PATH)
-        endif()
-
-        # Windows registry
-        if (CMAKE_HOST_WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "FIRST")
-          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
-                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
-                        NAMES_PER_DIR
-                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                        PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_SYSTEM_ENVIRONMENT_PATH
-                        NO_CMAKE_SYSTEM_PATH)
-        endif()
-
-        _python_validate_interpreter (${_${_PYTHON_PREFIX}_VERSION} EXACT)
-        if (_${_PYTHON_PREFIX}_EXECUTABLE)
-          break()
-        endif()
-
-        # try using HINTS
-        find_program (_${_PYTHON_PREFIX}_EXECUTABLE
-                      NAMES ${_${_PYTHON_PREFIX}_NAMES}
-                      NAMES_PER_DIR
-                      HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                      PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                      NO_SYSTEM_ENVIRONMENT_PATH
-                      NO_CMAKE_SYSTEM_PATH)
-        _python_validate_interpreter (${_${_PYTHON_PREFIX}_VERSION} EXACT)
-        if (_${_PYTHON_PREFIX}_EXECUTABLE)
-          break()
-        endif()
-        # try using standard paths.
-        # NAMES_PER_DIR is not defined on purpose to have a chance to find
-        # expected version.
-        # For example, typical systems have 'python' for version 2.* and 'python3'
-        # for version 3.*. So looking for names per dir will find, potentially,
-        # systematically 'python' (i.e. version 2) even if version 3 is searched.
-        find_program (_${_PYTHON_PREFIX}_EXECUTABLE
-                      NAMES ${_${_PYTHON_PREFIX}_NAMES}
-                      PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES})
-        _python_validate_interpreter (${_${_PYTHON_PREFIX}_VERSION} EXACT)
-        if (_${_PYTHON_PREFIX}_EXECUTABLE)
-          break()
-        endif()
-
-        # Apple frameworks handling
-        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
-          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
-                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
-                        NAMES_PER_DIR
-                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_DEFAULT_PATH)
-        endif()
-
-        # Windows registry
-        if (CMAKE_HOST_WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "LAST")
-          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
-                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
-                        NAMES_PER_DIR
-                        PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_DEFAULT_PATH)
-        endif()
-
-        _python_validate_interpreter (${_${_PYTHON_PREFIX}_VERSION} EXACT)
-        if (_${_PYTHON_PREFIX}_EXECUTABLE)
-          break()
-        endif()
-      endforeach()
-
-      if (NOT _${_PYTHON_PREFIX}_EXECUTABLE AND
-          NOT _${_PYTHON_PREFIX}_FIND_VIRTUALENV STREQUAL "ONLY")
-        # No specific version found. Retry with generic names and standard paths.
-        # NAMES_PER_DIR is not defined on purpose to have a chance to find
-        # expected version.
-        # For example, typical systems have 'python' for version 2.* and 'python3'
-        # for version 3.*. So looking for names per dir will find, potentially,
-        # systematically 'python' (i.e. version 2) even if version 3 is searched.
-        _python_get_names (_${_PYTHON_PREFIX}_NAMES POSIX INTERPRETER)
-        find_program (_${_PYTHON_PREFIX}_EXECUTABLE
-                      NAMES ${_${_PYTHON_PREFIX}_NAMES})
-        _python_validate_interpreter ()
-      endif()
-    endif()
-  endif()
-
-  set (${_PYTHON_PREFIX}_EXECUTABLE "${_${_PYTHON_PREFIX}_EXECUTABLE}")
-  _python_get_launcher (_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER INTERPRETER)
-
-  # retrieve exact version of executable found
-  if (_${_PYTHON_PREFIX}_EXECUTABLE)
-    execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
-                             "import sys; sys.stdout.write('.'.join([str(x) for x in sys.version_info[:3]]))"
-                     RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
-                     OUTPUT_VARIABLE ${_PYTHON_PREFIX}_VERSION
-                     ERROR_QUIET
-                     OUTPUT_STRIP_TRAILING_WHITESPACE)
-    if (NOT _${_PYTHON_PREFIX}_RESULT)
-      set (_${_PYTHON_PREFIX}_EXECUTABLE_USABLE TRUE)
-    else()
-      # Interpreter is not usable
-      set (_${_PYTHON_PREFIX}_EXECUTABLE_USABLE FALSE)
-      unset (${_PYTHON_PREFIX}_VERSION)
-      set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Cannot run the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"")
-    endif()
-  endif()
-
-  if (_${_PYTHON_PREFIX}_EXECUTABLE AND _${_PYTHON_PREFIX}_EXECUTABLE_USABLE)
-    if (_${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES)
-      set (${_PYTHON_PREFIX}_Interpreter_FOUND TRUE)
-
-      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 0 ${_PYTHON_PREFIX}_INTERPRETER_ID)
-
-      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 1 ${_PYTHON_PREFIX}_VERSION_MAJOR)
-      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 2 ${_PYTHON_PREFIX}_VERSION_MINOR)
-      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 3 ${_PYTHON_PREFIX}_VERSION_PATCH)
-
-      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 4 _${_PYTHON_PREFIX}_ARCH)
-      set (_${_PYTHON_PREFIX}_ARCH2 ${_${_PYTHON_PREFIX}_ARCH})
-
-      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 5 _${_PYTHON_PREFIX}_ABIFLAGS)
-      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 6 ${_PYTHON_PREFIX}_SOABI)
-
-      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 7 ${_PYTHON_PREFIX}_STDLIB)
-      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 8 ${_PYTHON_PREFIX}_STDARCH)
-      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 9 ${_PYTHON_PREFIX}_SITELIB)
-      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 10 ${_PYTHON_PREFIX}_SITEARCH)
-    else()
-      string (REGEX MATCHALL "[0-9]+" _${_PYTHON_PREFIX}_VERSIONS "${${_PYTHON_PREFIX}_VERSION}")
-      list (GET _${_PYTHON_PREFIX}_VERSIONS 0 ${_PYTHON_PREFIX}_VERSION_MAJOR)
-      list (GET _${_PYTHON_PREFIX}_VERSIONS 1 ${_PYTHON_PREFIX}_VERSION_MINOR)
-      list (GET _${_PYTHON_PREFIX}_VERSIONS 2 ${_PYTHON_PREFIX}_VERSION_PATCH)
-
-      if (${_PYTHON_PREFIX}_VERSION_MAJOR VERSION_EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
-        set (${_PYTHON_PREFIX}_Interpreter_FOUND TRUE)
-
-        # Use interpreter version and ABI for future searches to ensure consistency
-        set (_${_PYTHON_PREFIX}_FIND_VERSIONS ${${_PYTHON_PREFIX}_VERSION_MAJOR}.${${_PYTHON_PREFIX}_VERSION_MINOR})
-        execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETR_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
-                                 "import sys; sys.stdout.write(sys.abiflags)"
-                         RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
-                         OUTPUT_VARIABLE _${_PYTHON_PREFIX}_ABIFLAGS
-                         ERROR_QUIET
-                         OUTPUT_STRIP_TRAILING_WHITESPACE)
-        if (_${_PYTHON_PREFIX}_RESULT)
-          # assunme ABI is not supported
-          set (_${_PYTHON_PREFIX}_ABIFLAGS "")
-        endif()
-      endif()
-
-      if (${_PYTHON_PREFIX}_Interpreter_FOUND)
-        unset (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE)
-
-        # compute and save interpreter signature
-        string (MD5 __${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE "${_${_PYTHON_PREFIX}_SIGNATURE}:${_${_PYTHON_PREFIX}_EXECUTABLE}")
-        set (_${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE "${__${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE}" CACHE INTERNAL "")
-
-        if (NOT CMAKE_SIZEOF_VOID_P)
-          # determine interpreter architecture
-          execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
-                                   "import sys; sys.stdout.write(str(sys.maxsize > 2**32))"
-                           RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
-                           OUTPUT_VARIABLE ${_PYTHON_PREFIX}_IS64BIT
-                           ERROR_VARIABLE ${_PYTHON_PREFIX}_IS64BIT)
-          if (NOT _${_PYTHON_PREFIX}_RESULT)
-            if (${_PYTHON_PREFIX}_IS64BIT)
-              set (_${_PYTHON_PREFIX}_ARCH 64)
-              set (_${_PYTHON_PREFIX}_ARCH2 64)
-            else()
-              set (_${_PYTHON_PREFIX}_ARCH 32)
-              set (_${_PYTHON_PREFIX}_ARCH2 32)
-            endif()
-          endif()
-        endif()
-
-        # retrieve interpreter identity
-        execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -V
-                         RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
-                         OUTPUT_VARIABLE ${_PYTHON_PREFIX}_INTERPRETER_ID
-                         ERROR_VARIABLE ${_PYTHON_PREFIX}_INTERPRETER_ID)
-        if (NOT _${_PYTHON_PREFIX}_RESULT)
-          if (${_PYTHON_PREFIX}_INTERPRETER_ID MATCHES "Anaconda")
-            set (${_PYTHON_PREFIX}_INTERPRETER_ID "Anaconda")
-          elseif (${_PYTHON_PREFIX}_INTERPRETER_ID MATCHES "Enthought")
-            set (${_PYTHON_PREFIX}_INTERPRETER_ID "Canopy")
-          elseif (${_PYTHON_PREFIX}_INTERPRETER_ID MATCHES "PyPy ([0-9.]+)")
-            set (${_PYTHON_PREFIX}_INTERPRETER_ID "PyPy")
-            set  (${_PYTHON_PREFIX}_PyPy_VERSION "${CMAKE_MATCH_1}")
-          else()
-            string (REGEX REPLACE "^([^ ]+).*" "\\1" ${_PYTHON_PREFIX}_INTERPRETER_ID "${${_PYTHON_PREFIX}_INTERPRETER_ID}")
-            if (${_PYTHON_PREFIX}_INTERPRETER_ID STREQUAL "Python")
-              # try to get a more precise ID
-              execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
-                                       "import sys; sys.stdout.write(sys.copyright)"
-                               RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
-                               OUTPUT_VARIABLE ${_PYTHON_PREFIX}_COPYRIGHT
-                               ERROR_QUIET)
-              if (${_PYTHON_PREFIX}_COPYRIGHT MATCHES "ActiveState")
-                set (${_PYTHON_PREFIX}_INTERPRETER_ID "ActivePython")
-              endif()
-            endif()
-          endif()
-        else()
-          set (${_PYTHON_PREFIX}_INTERPRETER_ID Python)
-        endif()
-
-        # retrieve various package installation directories
-        execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
-                                 "import sys\ntry:\n   from distutils import sysconfig\n   sys.stdout.write(';'.join([sysconfig.get_python_lib(plat_specific=False,standard_lib=True),sysconfig.get_python_lib(plat_specific=True,standard_lib=True),sysconfig.get_python_lib(plat_specific=False,standard_lib=False),sysconfig.get_python_lib(plat_specific=True,standard_lib=False)]))\nexcept Exception:\n   import sysconfig\n   sys.stdout.write(';'.join([sysconfig.get_path('stdlib'),sysconfig.get_path('platstdlib'),sysconfig.get_path('purelib'),sysconfig.get_path('platlib')]))"
-                         RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
-                         OUTPUT_VARIABLE _${_PYTHON_PREFIX}_LIBPATHS
-                         ERROR_QUIET)
-        if (NOT _${_PYTHON_PREFIX}_RESULT)
-          list (GET _${_PYTHON_PREFIX}_LIBPATHS 0 ${_PYTHON_PREFIX}_STDLIB)
-          list (GET _${_PYTHON_PREFIX}_LIBPATHS 1 ${_PYTHON_PREFIX}_STDARCH)
-          list (GET _${_PYTHON_PREFIX}_LIBPATHS 2 ${_PYTHON_PREFIX}_SITELIB)
-          list (GET _${_PYTHON_PREFIX}_LIBPATHS 3 ${_PYTHON_PREFIX}_SITEARCH)
-        else()
-          unset (${_PYTHON_PREFIX}_STDLIB)
-          unset (${_PYTHON_PREFIX}_STDARCH)
-          unset (${_PYTHON_PREFIX}_SITELIB)
-          unset (${_PYTHON_PREFIX}_SITEARCH)
-        endif()
-
-        if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR VERSION_GREATER_EQUAL "3")
-          _python_get_config_var (${_PYTHON_PREFIX}_SOABI SOABI)
-        endif()
-
-        # store properties in the cache to speed-up future searches
-        set (_${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES
-          "${${_PYTHON_PREFIX}_INTERPRETER_ID};${${_PYTHON_PREFIX}_VERSION_MAJOR};${${_PYTHON_PREFIX}_VERSION_MINOR};${${_PYTHON_PREFIX}_VERSION_PATCH};${_${_PYTHON_PREFIX}_ARCH};${_${_PYTHON_PREFIX}_ABIFLAGS};${${_PYTHON_PREFIX}_SOABI};${${_PYTHON_PREFIX}_STDLIB};${${_PYTHON_PREFIX}_STDARCH};${${_PYTHON_PREFIX}_SITELIB};${${_PYTHON_PREFIX}_SITEARCH}" CACHE INTERNAL "${_PYTHON_PREFIX} Properties")
-      else()
-        unset (_${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE CACHE)
-        unset (${_PYTHON_PREFIX}_INTERPRETER_ID)
-      endif()
-    endif()
-  endif()
-
-  if (${_PYTHON_PREFIX}_ARTIFACTS_INTERACTIVE)
-    set (${_PYTHON_PREFIX}_EXECUTABLE "${_${_PYTHON_PREFIX}_EXECUTABLE}" CACHE FILEPATH "${_PYTHON_PREFIX} Interpreter")
-  endif()
-
-  _python_mark_as_internal (_${_PYTHON_PREFIX}_EXECUTABLE
-                            _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES
-                            _${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE)
-endif()
-
-
-# second step, search for compiler (IronPython)
-if ("Compiler" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
-  list (APPEND _${_PYTHON_PREFIX}_CACHED_VARS _${_PYTHON_PREFIX}_COMPILER)
-  if (${_PYTHON_PREFIX}_FIND_REQUIRED_Compiler)
-    list (APPEND _${_PYTHON_PREFIX}_REQUIRED_VARS ${_PYTHON_PREFIX}_COMPILER)
-  endif()
-
-  if (NOT "IronPython" IN_LIST _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS)
-    unset (_${_PYTHON_PREFIX}_COMPILER CACHE)
-    unset (_${_PYTHON_PREFIX}_COMPILER_SIGNATURE CACHE)
-  elseif (DEFINED ${_PYTHON_PREFIX}_COMPILER
-      AND IS_ABSOLUTE "${${_PYTHON_PREFIX}_COMPILER}")
-    set (_${_PYTHON_PREFIX}_COMPILER "${${_PYTHON_PREFIX}_COMPILER}" CACHE INTERNAL "")
-  elseif (DEFINED _${_PYTHON_PREFIX}_COMPILER)
-    # compute compiler signature and check validity of definition
-    string (MD5 __${_PYTHON_PREFIX}_COMPILER_SIGNATURE "${_${_PYTHON_PREFIX}_SIGNATURE}:${_${_PYTHON_PREFIX}_COMPILER}")
-    if (__${_PYTHON_PREFIX}_COMPILER_SIGNATURE STREQUAL _${_PYTHON_PREFIX}_COMPILER_SIGNATURE)
-      # check version validity
-      if (${_PYTHON_PREFIX}_FIND_VERSION_EXACT)
-        _python_validate_compiler (${${_PYTHON_PREFIX}_FIND_VERSION} EXACT CHECK_EXISTS)
-      else()
-        _python_validate_compiler (${${_PYTHON_PREFIX}_FIND_VERSION} CHECK_EXISTS)
-      endif()
-    else()
-      unset (_${_PYTHON_PREFIX}_COMPILER CACHE)
-      unset (_${_PYTHON_PREFIX}_COMPILER_SIGNATURE CACHE)
-    endif()
-  endif()
-
-  if ("IronPython" IN_LIST _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS
-      AND NOT _${_PYTHON_PREFIX}_COMPILER)
-    # IronPython specific artifacts
-    # If IronPython interpreter is found, use its path
-    unset (_${_PYTHON_PREFIX}_IRON_ROOT)
-    if (${_PYTHON_PREFIX}_Interpreter_FOUND AND ${_PYTHON_PREFIX}_INTERPRETER_ID STREQUAL "IronPython")
-      get_filename_component (_${_PYTHON_PREFIX}_IRON_ROOT "${${_PYTHON_PREFIX}_EXECUTABLE}" DIRECTORY)
-    endif()
-
-    if (_${_PYTHON_PREFIX}_FIND_STRATEGY STREQUAL "LOCATION")
-      _python_get_names (_${_PYTHON_PREFIX}_COMPILER_NAMES
-                         IMPLEMENTATIONS IronPython
-                         VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS}
-                         COMPILER)
-
-      _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES
-                                 IMPLEMENTATIONS IronPython
-                                 VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS}
-                                 COMPILER)
-
-      _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS
-                              IMPLEMENTATIONS IronPython
-                              VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS})
-      _python_get_registries (_${_PYTHON_PREFIX}_REGISTRY_PATHS
-                              IMPLEMENTATIONS IronPython
-                              VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS})
-
-      while (TRUE)
-        # Apple frameworks handling
-        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
-          find_program (_${_PYTHON_PREFIX}_COMPILER
-                        NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
-                        NAMES_PER_DIR
-                        HINTS ${_${_PYTHON_PREFIX}_IRON_ROOT} ${_${_PYTHON_PREFIX}_HINTS}
-                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_CMAKE_PATH
-                        NO_CMAKE_ENVIRONMENT_PATH
-                        NO_SYSTEM_ENVIRONMENT_PATH
-                        NO_CMAKE_SYSTEM_PATH)
-          _python_validate_compiler (${${_PYTHON_PREFIX}_FIND_VERSION} ${_${_PYTHON_PREFIX}_FIND_VERSION_EXACT})
-          if (_${_PYTHON_PREFIX}_COMPILER)
-            break()
-          endif()
-        endif()
-        # Windows registry
-        if (CMAKE_HOST_WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "FIRST")
-          find_program (_${_PYTHON_PREFIX}_COMPILER
-                        NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
-                        NAMES_PER_DIR
-                        HINTS ${_${_PYTHON_PREFIX}_IRON_ROOT} ${_${_PYTHON_PREFIX}_HINTS}
-                        PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_SYSTEM_ENVIRONMENT_PATH
-                        NO_CMAKE_SYSTEM_PATH)
-          _python_validate_compiler (${${_PYTHON_PREFIX}_FIND_VERSION} ${_${_PYTHON_PREFIX}_FIND_VERSION_EXACT})
-          if (_${_PYTHON_PREFIX}_COMPILER)
-            break()
-          endif()
-        endif()
-
-        # try using HINTS
-        find_program (_${_PYTHON_PREFIX}_COMPILER
-                      NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
-                      NAMES_PER_DIR
-                      HINTS ${_${_PYTHON_PREFIX}_IRON_ROOT} ${_${_PYTHON_PREFIX}_HINTS}
-                      PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                      NO_SYSTEM_ENVIRONMENT_PATH
-                      NO_CMAKE_SYSTEM_PATH)
-        _python_validate_compiler (${${_PYTHON_PREFIX}_FIND_VERSION} ${_${_PYTHON_PREFIX}_FIND_VERSION_EXACT})
-        if (_${_PYTHON_PREFIX}_COMPILER)
-          break()
-        endif()
-
-        # try using standard paths
-        find_program (_${_PYTHON_PREFIX}_COMPILER
-                      NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
-                      NAMES_PER_DIR
-                      PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES})
-        _python_validate_compiler (${${_PYTHON_PREFIX}_FIND_VERSION} ${_${_PYTHON_PREFIX}_FIND_VERSION_EXACT})
-        if (_${_PYTHON_PREFIX}_COMPILER)
-          break()
-        endif()
-
-        # Apple frameworks handling
-        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
-          find_program (_${_PYTHON_PREFIX}_COMPILER
-                        NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
-                        NAMES_PER_DIR
-                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_DEFAULT_PATH)
-          _python_validate_compiler (${${_PYTHON_PREFIX}_FIND_VERSION} ${_${_PYTHON_PREFIX}_FIND_VERSION_EXACT})
-          if (_${_PYTHON_PREFIX}_COMPILER)
-            break()
-          endif()
-        endif()
-        # Windows registry
-        if (CMAKE_HOST_WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "LAST")
-          find_program (_${_PYTHON_PREFIX}_COMPILER
-                        NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
-                        NAMES_PER_DIR
-                        PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_DEFAULT_PATH)
-          if (_${_PYTHON_PREFIX}_COMPILER)
-            break()
-          endif()
-        endif()
-
-        break()
-      endwhile()
-    else()
-      # try using root dir and registry
-      foreach (_${_PYTHON_PREFIX}_VERSION IN LISTS _${_PYTHON_PREFIX}_FIND_VERSIONS)
-        _python_get_names (_${_PYTHON_PREFIX}_COMPILER_NAMES
-                           IMPLEMENTATIONS IronPython
-                           VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS}
-                           COMPILER)
-
-        _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES
-                                   IMPLEMENTATIONS IronPython
-                                   VERSION ${_${_PYTHON_PREFIX}_FIND_VERSION}
-                                   COMPILER)
-
-        _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS
-                                IMPLEMENTATIONS IronPython
-                                VERSION ${_${_PYTHON_PREFIX}_VERSION})
-        _python_get_registries (_${_PYTHON_PREFIX}_REGISTRY_PATHS
-                                IMPLEMENTATIONS IronPython
-                                VERSION ${_${_PYTHON_PREFIX}_VERSION})
-
-        # Apple frameworks handling
-        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
-          find_program (_${_PYTHON_PREFIX}_COMPILER
-                        NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
-                        NAMES_PER_DIR
-                        HINTS ${_${_PYTHON_PREFIX}_IRON_ROOT} ${_${_PYTHON_PREFIX}_HINTS}
-                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_CMAKE_PATH
-                        NO_CMAKE_ENVIRONMENT_PATH
-                        NO_SYSTEM_ENVIRONMENT_PATH
-                        NO_CMAKE_SYSTEM_PATH)
-          _python_validate_compiler (${_${_PYTHON_PREFIX}_VERSION} EXACT)
-          if (_${_PYTHON_PREFIX}_COMPILER)
-            break()
-          endif()
-        endif()
-        # Windows registry
-        if (CMAKE_HOST_WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "FIRST")
-          find_program (_${_PYTHON_PREFIX}_COMPILER
-                        NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
-                        NAMES_PER_DIR
-                        HINTS ${_${_PYTHON_PREFIX}_IRON_ROOT} ${_${_PYTHON_PREFIX}_HINTS}
-                        PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_SYSTEM_ENVIRONMENT_PATH
-                        NO_CMAKE_SYSTEM_PATH)
-          _python_validate_compiler (${_${_PYTHON_PREFIX}_VERSION} EXACT)
-          if (_${_PYTHON_PREFIX}_COMPILER)
-            break()
-          endif()
-        endif()
-
-        # try using HINTS
-        find_program (_${_PYTHON_PREFIX}_COMPILER
-                      NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
-                      NAMES_PER_DIR
-                      HINTS ${_${_PYTHON_PREFIX}_IRON_ROOT} ${_${_PYTHON_PREFIX}_HINTS}
-                      PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                      NO_SYSTEM_ENVIRONMENT_PATH
-                      NO_CMAKE_SYSTEM_PATH)
-        _python_validate_compiler (${_${_PYTHON_PREFIX}_VERSION} EXACT)
-        if (_${_PYTHON_PREFIX}_COMPILER)
-          break()
-        endif()
-
-        # Apple frameworks handling
-        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
-          find_program (_${_PYTHON_PREFIX}_COMPILER
-                        NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
-                        NAMES_PER_DIR
-                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_DEFAULT_PATH)
-          _python_validate_compiler (${_${_PYTHON_PREFIX}_VERSION} EXACT)
-          if (_${_PYTHON_PREFIX}_COMPILER)
-            break()
-          endif()
-        endif()
-        # Windows registry
-        if (CMAKE_HOST_WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "LAST")
-          find_program (_${_PYTHON_PREFIX}_COMPILER
-                        NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
-                        NAMES_PER_DIR
-                        PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_DEFAULT_PATH)
-          _python_validate_compiler (${_${_PYTHON_PREFIX}_VERSION} EXACT)
-          if (_${_PYTHON_PREFIX}_COMPILER)
-            break()
-          endif()
-        endif()
-      endforeach()
-
-      # no specific version found, re-try in standard paths
-      _python_get_names (_${_PYTHON_PREFIX}_COMPILER_NAMES
-                         IMPLEMENTATIONS IronPython
-                         VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS}
-                         COMPILER)
-      _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES
-                                 IMPLEMENTATIONS IronPython
-                                 VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS}
-                                 COMPILER)
-      find_program (_${_PYTHON_PREFIX}_COMPILER
-                    NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
-                    HINTS ${_${_PYTHON_PREFIX}_IRON_ROOT} ${_${_PYTHON_PREFIX}_HINTS}
-                    PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES})
-    endif()
-  endif()
-
-  set (${_PYTHON_PREFIX}_COMPILER "${_${_PYTHON_PREFIX}_COMPILER}")
-
-  if (_${_PYTHON_PREFIX}_COMPILER)
-    # retrieve python environment version from compiler
-    _python_get_launcher (_${_PYTHON_PREFIX}_COMPILER_LAUNCHER COMPILER)
-    set (_${_PYTHON_PREFIX}_VERSION_DIR "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/PythonCompilerVersion.dir")
-    file (WRITE "${_${_PYTHON_PREFIX}_VERSION_DIR}/version.py" "import sys; sys.stdout.write('.'.join([str(x) for x in sys.version_info[:3]]))\n")
-    execute_process (COMMAND ${_${_PYTHON_PREFIX}_COMPILER_LAUNCHER} "${_${_PYTHON_PREFIX}_COMPILER}"
-                             ${_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_ARCH_FLAGS}
-                             /target:exe /embed "${_${_PYTHON_PREFIX}_VERSION_DIR}/version.py"
-                     WORKING_DIRECTORY "${_${_PYTHON_PREFIX}_VERSION_DIR}"
-                     OUTPUT_QUIET
-                     ERROR_QUIET)
-    get_filename_component (_${_PYTHON_PREFIX}_IR_DIR "${_${_PYTHON_PREFIX}_COMPILER}" DIRECTORY)
-    execute_process (COMMAND "${CMAKE_COMMAND}" -E env "MONO_PATH=${_${_PYTHON_PREFIX}_IR_DIR}"
-                             ${${_PYTHON_PREFIX}_DOTNET_LAUNCHER} "${_${_PYTHON_PREFIX}_VERSION_DIR}/version.exe"
-                     WORKING_DIRECTORY "${_${_PYTHON_PREFIX}_VERSION_DIR}"
-                     RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
-                     OUTPUT_VARIABLE _${_PYTHON_PREFIX}_VERSION
-                     ERROR_QUIET)
-    if (NOT _${_PYTHON_PREFIX}_RESULT)
-      set (_${_PYTHON_PREFIX}_COMPILER_USABLE TRUE)
-      string (REGEX MATCHALL "[0-9]+" _${_PYTHON_PREFIX}_VERSIONS "${_${_PYTHON_PREFIX}_VERSION}")
-      list (GET _${_PYTHON_PREFIX}_VERSIONS 0 _${_PYTHON_PREFIX}_VERSION_MAJOR)
-      list (GET _${_PYTHON_PREFIX}_VERSIONS 1 _${_PYTHON_PREFIX}_VERSION_MINOR)
-      list (GET _${_PYTHON_PREFIX}_VERSIONS 2 _${_PYTHON_PREFIX}_VERSION_PATCH)
-
-      if (NOT ${_PYTHON_PREFIX}_Interpreter_FOUND)
-        # set public version information
-        set (${_PYTHON_PREFIX}_VERSION ${_${_PYTHON_PREFIX}_VERSION})
-        set (${_PYTHON_PREFIX}_VERSION_MAJOR ${_${_PYTHON_PREFIX}_VERSION_MAJOR})
-        set (${_PYTHON_PREFIX}_VERSION_MINOR ${_${_PYTHON_PREFIX}_VERSION_MINOR})
-        set (${_PYTHON_PREFIX}_VERSION_PATCH ${_${_PYTHON_PREFIX}_VERSION_PATCH})
-      endif()
-    else()
-      # compiler not usable
-      set (_${_PYTHON_PREFIX}_COMPILER_USABLE FALSE)
-      set (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE "Cannot run the compiler \"${_${_PYTHON_PREFIX}_COMPILER}\"")
-    endif()
-    file (REMOVE_RECURSE "${_${_PYTHON_PREFIX}_VERSION_DIR}")
-  endif()
-
-  if (_${_PYTHON_PREFIX}_COMPILER AND _${_PYTHON_PREFIX}_COMPILER_USABLE)
-    if (${_PYTHON_PREFIX}_Interpreter_FOUND)
-      # Compiler must be compatible with interpreter
-      if ("${_${_PYTHON_PREFIX}_VERSION_MAJOR}.${_${_PYTHON_PREFIX}_VERSION_MINOR}" VERSION_EQUAL "${${_PYTHON_PREFIX}_VERSION_MAJOR}.${${_PYTHON_PREFIX}_VERSION_MINOR}")
-        set (${_PYTHON_PREFIX}_Compiler_FOUND TRUE)
-      endif()
-    elseif (${_PYTHON_PREFIX}_VERSION_MAJOR VERSION_EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
-      set (${_PYTHON_PREFIX}_Compiler_FOUND TRUE)
-      # Use compiler version for future searches to ensure consistency
-      set (_${_PYTHON_PREFIX}_FIND_VERSIONS ${${_PYTHON_PREFIX}_VERSION_MAJOR}.${${_PYTHON_PREFIX}_VERSION_MINOR})
-    endif()
-  endif()
-
-  if (${_PYTHON_PREFIX}_Compiler_FOUND)
-    unset (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE)
-
-    # compute and save compiler signature
-    string (MD5 __${_PYTHON_PREFIX}_COMPILER_SIGNATURE "${_${_PYTHON_PREFIX}_SIGNATURE}:${_${_PYTHON_PREFIX}_COMPILER}")
-    set (_${_PYTHON_PREFIX}_COMPILER_SIGNATURE "${__${_PYTHON_PREFIX}_COMPILER_SIGNATURE}" CACHE INTERNAL "")
-
-    set (${_PYTHON_PREFIX}_COMPILER_ID IronPython)
-  else()
-    unset (_${_PYTHON_PREFIX}_COMPILER_SIGNATURE CACHE)
-    unset (${_PYTHON_PREFIX}_COMPILER_ID)
-  endif()
-
-  if (${_PYTHON_PREFIX}_ARTIFACTS_INTERACTIVE)
-    set (${_PYTHON_PREFIX}_COMPILER "${_${_PYTHON_PREFIX}_COMPILER}" CACHE FILEPATH "${_PYTHON_PREFIX} Compiler")
-  endif()
-
-  _python_mark_as_internal (_${_PYTHON_PREFIX}_COMPILER
-                            _${_PYTHON_PREFIX}_COMPILER_SIGNATURE)
-endif()
-
-# third step, search for the development artifacts
-if (${_PYTHON_PREFIX}_FIND_REQUIRED_Development.Module)
-  if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_MODULE_ARTIFACTS)
-    list (APPEND _${_PYTHON_PREFIX}_REQUIRED_VARS ${_PYTHON_PREFIX}_LIBRARIES)
-  endif()
-  if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_MODULE_ARTIFACTS)
-    list (APPEND _${_PYTHON_PREFIX}_REQUIRED_VARS ${_PYTHON_PREFIX}_INCLUDE_DIRS)
-  endif()
-endif()
-if (${_PYTHON_PREFIX}_FIND_REQUIRED_Development.Embed)
-  if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_EMBED_ARTIFACTS)
-    list (APPEND _${_PYTHON_PREFIX}_REQUIRED_VARS ${_PYTHON_PREFIX}_LIBRARIES)
-  endif()
-  if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_EMBED_ARTIFACTS)
-    list (APPEND _${_PYTHON_PREFIX}_REQUIRED_VARS ${_PYTHON_PREFIX}_INCLUDE_DIRS)
-  endif()
-endif()
-list (REMOVE_DUPLICATES _${_PYTHON_PREFIX}_REQUIRED_VARS)
-## Development environment is not compatible with IronPython interpreter
-if (("Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
-      OR "Development.Embed" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
-    AND ((${_PYTHON_PREFIX}_Interpreter_FOUND
-        AND NOT ${_PYTHON_PREFIX}_INTERPRETER_ID STREQUAL "IronPython")
-      OR NOT ${_PYTHON_PREFIX}_Interpreter_FOUND))
-  if (${_PYTHON_PREFIX}_Interpreter_FOUND)
-    # reduce possible implementations to the interpreter one
-    if (${_PYTHON_PREFIX}_INTERPRETER_ID STREQUAL "PyPy")
-      set (_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS "PyPy")
-    else()
-      set (_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS "CPython")
-    endif()
-  else()
-    list (REMOVE_ITEM _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS "IronPython")
-  endif()
-  if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
-  list (APPEND _${_PYTHON_PREFIX}_CACHED_VARS _${_PYTHON_PREFIX}_LIBRARY_RELEASE
-                                              _${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE
-                                              _${_PYTHON_PREFIX}_LIBRARY_DEBUG
-                                              _${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG)
-  endif()
-  if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
-    list (APPEND _${_PYTHON_PREFIX}_CACHED_VARS _${_PYTHON_PREFIX}_INCLUDE_DIR)
-  endif()
-
-  _python_check_development_signature (Module)
-  _python_check_development_signature (Embed)
-
-  if (DEFINED ${_PYTHON_PREFIX}_LIBRARY
-      AND IS_ABSOLUTE "${${_PYTHON_PREFIX}_LIBRARY}")
-    set (_${_PYTHON_PREFIX}_LIBRARY_RELEASE "${${_PYTHON_PREFIX}_LIBRARY}" CACHE INTERNAL "")
-    unset (_${_PYTHON_PREFIX}_LIBRARY_DEBUG CACHE)
-    unset (_${_PYTHON_PREFIX}_INCLUDE_DIR CACHE)
-  endif()
-  if (DEFINED ${_PYTHON_PREFIX}_INCLUDE_DIR
-      AND IS_ABSOLUTE "${${_PYTHON_PREFIX}_INCLUDE_DIR}")
-    set (_${_PYTHON_PREFIX}_INCLUDE_DIR "${${_PYTHON_PREFIX}_INCLUDE_DIR}" CACHE INTERNAL "")
-  endif()
-
-  # Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
-  unset (_${_PYTHON_PREFIX}_CMAKE_FIND_LIBRARY_SUFFIXES)
-  if (DEFINED ${_PYTHON_PREFIX}_USE_STATIC_LIBS AND NOT WIN32)
-    set(_${_PYTHON_PREFIX}_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
-    if(${_PYTHON_PREFIX}_USE_STATIC_LIBS)
-      set (CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX})
-    else()
-      list (REMOVE_ITEM CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX})
-    endif()
-  endif()
-
-  if (NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE OR NOT _${_PYTHON_PREFIX}_INCLUDE_DIR)
-    # if python interpreter is found, use it to look-up for artifacts
-    # to ensure consistency between interpreter and development environments.
-    # If not, try to locate a compatible config tool
-    if ((NOT ${_PYTHON_PREFIX}_Interpreter_FOUND OR CMAKE_CROSSCOMPILING)
-        AND "CPython" IN_LIST _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS)
-      set (_${_PYTHON_PREFIX}_HINTS "${${_PYTHON_PREFIX}_ROOT_DIR}" ENV ${_PYTHON_PREFIX}_ROOT_DIR)
-      unset (_${_PYTHON_PREFIX}_VIRTUALENV_PATHS)
-      if (_${_PYTHON_PREFIX}_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY)$")
-        set (_${_PYTHON_PREFIX}_VIRTUALENV_PATHS ENV VIRTUAL_ENV ENV CONDA_PREFIX)
-      endif()
-
-      if (_${_PYTHON_PREFIX}_FIND_STRATEGY STREQUAL "LOCATION")
-        _python_get_names (_${_PYTHON_PREFIX}_CONFIG_NAMES VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS} POSIX CONFIG)
-          # Framework Paths
-        _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS})
-
-        # Apple frameworks handling
-        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
-          find_program (_${_PYTHON_PREFIX}_CONFIG
-                        NAMES ${_${_PYTHON_PREFIX}_CONFIG_NAMES}
-                        NAMES_PER_DIR
-                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                        PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
-                              ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                        PATH_SUFFIXES bin
-                        NO_CMAKE_PATH
-                        NO_CMAKE_ENVIRONMENT_PATH
-                        NO_SYSTEM_ENVIRONMENT_PATH
-                        NO_CMAKE_SYSTEM_PATH)
-        endif()
-
-        find_program (_${_PYTHON_PREFIX}_CONFIG
-                      NAMES ${_${_PYTHON_PREFIX}_CONFIG_NAMES}
-                      NAMES_PER_DIR
-                      HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                      PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
-                      PATH_SUFFIXES bin)
-
-        # Apple frameworks handling
-        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
-          find_program (_${_PYTHON_PREFIX}_CONFIG
-                        NAMES ${_${_PYTHON_PREFIX}_CONFIG_NAMES}
-                        NAMES_PER_DIR
-                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                        PATH_SUFFIXES bin
-                        NO_DEFAULT_PATH)
-        endif()
-
-        if (_${_PYTHON_PREFIX}_CONFIG)
-          execute_process (COMMAND "${_${_PYTHON_PREFIX}_CONFIG}" --help
-                           RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
-                           OUTPUT_VARIABLE __${_PYTHON_PREFIX}_HELP
-                           ERROR_QUIET
-                           OUTPUT_STRIP_TRAILING_WHITESPACE)
-          if (_${_PYTHON_PREFIX}_RESULT)
-            # assume config tool is not usable
-            unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
-          endif()
-        endif()
-
-        if (_${_PYTHON_PREFIX}_CONFIG)
-          execute_process (COMMAND "${_${_PYTHON_PREFIX}_CONFIG}" --abiflags
-                           RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
-                           OUTPUT_VARIABLE __${_PYTHON_PREFIX}_ABIFLAGS
-                           ERROR_QUIET
-                           OUTPUT_STRIP_TRAILING_WHITESPACE)
-          if (_${_PYTHON_PREFIX}_RESULT)
-            # assume ABI is not supported
-            set (__${_PYTHON_PREFIX}_ABIFLAGS "")
-          endif()
-          if (DEFINED _${_PYTHON_PREFIX}_FIND_ABI AND NOT __${_PYTHON_PREFIX}_ABIFLAGS IN_LIST _${_PYTHON_PREFIX}_ABIFLAGS)
-            # Wrong ABI
-            unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
-          endif()
-        endif()
-
-        if (_${_PYTHON_PREFIX}_CONFIG AND DEFINED CMAKE_LIBRARY_ARCHITECTURE)
-          # check that config tool match library architecture
-          execute_process (COMMAND "${_${_PYTHON_PREFIX}_CONFIG}" --configdir
-                           RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
-                           OUTPUT_VARIABLE _${_PYTHON_PREFIX}_CONFIGDIR
-                           ERROR_QUIET
-                           OUTPUT_STRIP_TRAILING_WHITESPACE)
-          if (_${_PYTHON_PREFIX}_RESULT)
-            unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
-          else()
-            string(FIND "${_${_PYTHON_PREFIX}_CONFIGDIR}" "${CMAKE_LIBRARY_ARCHITECTURE}" _${_PYTHON_PREFIX}_RESULT)
-            if (_${_PYTHON_PREFIX}_RESULT EQUAL -1)
-              unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
-            endif()
-          endif()
-        endif()
-      else()
-        foreach (_${_PYTHON_PREFIX}_VERSION IN LISTS _${_PYTHON_PREFIX}_FIND_VERSIONS)
-          # try to use pythonX.Y-config tool
-          _python_get_names (_${_PYTHON_PREFIX}_CONFIG_NAMES VERSION ${_${_PYTHON_PREFIX}_VERSION} POSIX CONFIG)
-
-          # Framework Paths
-          _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS VERSION ${_${_PYTHON_PREFIX}_VERSION})
-
-          # Apple frameworks handling
-          if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
-            find_program (_${_PYTHON_PREFIX}_CONFIG
-                          NAMES ${_${_PYTHON_PREFIX}_CONFIG_NAMES}
-                          NAMES_PER_DIR
-                          HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                          PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
-                                ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                          PATH_SUFFIXES bin
-                          NO_CMAKE_PATH
-                          NO_CMAKE_ENVIRONMENT_PATH
-                          NO_SYSTEM_ENVIRONMENT_PATH
-                          NO_CMAKE_SYSTEM_PATH)
-          endif()
-
-          find_program (_${_PYTHON_PREFIX}_CONFIG
-                        NAMES ${_${_PYTHON_PREFIX}_CONFIG_NAMES}
-                        NAMES_PER_DIR
-                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                        PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
-                        PATH_SUFFIXES bin)
-
-          # Apple frameworks handling
-          if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
-            find_program (_${_PYTHON_PREFIX}_CONFIG
-                          NAMES ${_${_PYTHON_PREFIX}_CONFIG_NAMES}
-                          NAMES_PER_DIR
-                          PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                          PATH_SUFFIXES bin
-                          NO_DEFAULT_PATH)
-          endif()
-
-          unset (_${_PYTHON_PREFIX}_CONFIG_NAMES)
-
-          if (_${_PYTHON_PREFIX}_CONFIG)
-            execute_process (COMMAND "${_${_PYTHON_PREFIX}_CONFIG}" --help
-                             RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
-                             OUTPUT_VARIABLE __${_PYTHON_PREFIX}_HELP
-                             ERROR_QUIET
-                             OUTPUT_STRIP_TRAILING_WHITESPACE)
-            if (_${_PYTHON_PREFIX}_RESULT)
-              # assume config tool is not usable
-              unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
-            endif()
-          endif()
-
-          if (NOT _${_PYTHON_PREFIX}_CONFIG)
-            continue()
-          endif()
-
-          execute_process (COMMAND "${_${_PYTHON_PREFIX}_CONFIG}" --abiflags
-                           RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
-                           OUTPUT_VARIABLE __${_PYTHON_PREFIX}_ABIFLAGS
-                           ERROR_QUIET
-                           OUTPUT_STRIP_TRAILING_WHITESPACE)
-          if (_${_PYTHON_PREFIX}_RESULT)
-            # assume ABI is not supported
-            set (__${_PYTHON_PREFIX}_ABIFLAGS "")
-          endif()
-          if (DEFINED _${_PYTHON_PREFIX}_FIND_ABI AND NOT __${_PYTHON_PREFIX}_ABIFLAGS IN_LIST _${_PYTHON_PREFIX}_ABIFLAGS)
-            # Wrong ABI
-            unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
-            continue()
-          endif()
-
-          if (_${_PYTHON_PREFIX}_CONFIG AND DEFINED CMAKE_LIBRARY_ARCHITECTURE)
-            # check that config tool match library architecture
-            execute_process (COMMAND "${_${_PYTHON_PREFIX}_CONFIG}" --configdir
-                             RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
-                             OUTPUT_VARIABLE _${_PYTHON_PREFIX}_CONFIGDIR
-                             ERROR_QUIET
-                             OUTPUT_STRIP_TRAILING_WHITESPACE)
-            if (_${_PYTHON_PREFIX}_RESULT)
-              unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
-              continue()
-            endif()
-            string (FIND "${_${_PYTHON_PREFIX}_CONFIGDIR}" "${CMAKE_LIBRARY_ARCHITECTURE}" _${_PYTHON_PREFIX}_RESULT)
-            if (_${_PYTHON_PREFIX}_RESULT EQUAL -1)
-              unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
-              continue()
-            endif()
-          endif()
-
-          if (_${_PYTHON_PREFIX}_CONFIG)
-            break()
-          endif()
-        endforeach()
-      endif()
-    endif()
-  endif()
-
-  if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
-    if (NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
-      if ((${_PYTHON_PREFIX}_Interpreter_FOUND AND NOT CMAKE_CROSSCOMPILING) OR _${_PYTHON_PREFIX}_CONFIG)
-        # retrieve root install directory
-        _python_get_config_var (_${_PYTHON_PREFIX}_PREFIX PREFIX)
-
-        # enforce current ABI
-        _python_get_config_var (_${_PYTHON_PREFIX}_ABIFLAGS ABIFLAGS)
-
-        set (_${_PYTHON_PREFIX}_HINTS "${_${_PYTHON_PREFIX}_PREFIX}")
-
-        # retrieve library
-        ## compute some paths and artifact names
-        if (_${_PYTHON_PREFIX}_CONFIG)
-          string (REGEX REPLACE "^.+python([0-9.]+)[a-z]*-config" "\\1" _${_PYTHON_PREFIX}_VERSION "${_${_PYTHON_PREFIX}_CONFIG}")
-        else()
-          set (_${_PYTHON_PREFIX}_VERSION "${${_PYTHON_PREFIX}_VERSION_MAJOR}.${${_PYTHON_PREFIX}_VERSION_MINOR}")
-        endif()
-        _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES VERSION ${_${_PYTHON_PREFIX}_VERSION} LIBRARY)
-        _python_get_names (_${_PYTHON_PREFIX}_LIB_NAMES VERSION ${_${_PYTHON_PREFIX}_VERSION} WIN32 POSIX LIBRARY)
-
-        _python_get_config_var (_${_PYTHON_PREFIX}_CONFIGDIR CONFIGDIR)
-        list (APPEND _${_PYTHON_PREFIX}_HINTS "${_${_PYTHON_PREFIX}_CONFIGDIR}")
-
-        list (APPEND _${_PYTHON_PREFIX}_HINTS "${${_PYTHON_PREFIX}_ROOT_DIR}" ENV ${_PYTHON_PREFIX}_ROOT_DIR)
-
-        find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
-                      NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
-                      NAMES_PER_DIR
-                      HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                      PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                      NO_SYSTEM_ENVIRONMENT_PATH
-                      NO_CMAKE_SYSTEM_PATH)
-      endif()
-
-      # Rely on HINTS and standard paths if interpreter or config tool failed to locate artifacts
-      if (NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
-        set (_${_PYTHON_PREFIX}_HINTS "${${_PYTHON_PREFIX}_ROOT_DIR}" ENV ${_PYTHON_PREFIX}_ROOT_DIR)
-
-        unset (_${_PYTHON_PREFIX}_VIRTUALENV_PATHS)
-        if (_${_PYTHON_PREFIX}_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY)$")
-          set (_${_PYTHON_PREFIX}_VIRTUALENV_PATHS ENV VIRTUAL_ENV ENV CONDA_PREFIX)
-        endif()
-
-        if (_${_PYTHON_PREFIX}_FIND_STRATEGY STREQUAL "LOCATION")
-          # library names
-          _python_get_names (_${_PYTHON_PREFIX}_LIB_NAMES VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS} WIN32 POSIX LIBRARY)
-          _python_get_names (_${_PYTHON_PREFIX}_LIB_NAMES_DEBUG VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS} WIN32 DEBUG)
-          # Paths suffixes
-          _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS} LIBRARY)
-
-          # Framework Paths
-          _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS VERSION ${_${_PYTHON_PREFIX}_LIB_FIND_VERSIONS})
-          # Registry Paths
-          _python_get_registries (_${_PYTHON_PREFIX}_REGISTRY_PATHS VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS} )
-
-          if (APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
-            find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
-                          NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
-                          NAMES_PER_DIR
-                          HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                          PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
-                                ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                          PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                          NO_CMAKE_PATH
-                          NO_CMAKE_ENVIRONMENT_PATH
-                          NO_SYSTEM_ENVIRONMENT_PATH
-                          NO_CMAKE_SYSTEM_PATH)
-          endif()
-
-          if (WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "FIRST")
-            find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
-                          NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
-                          NAMES_PER_DIR
-                          HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                          PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
-                                ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
-                          PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                          NO_SYSTEM_ENVIRONMENT_PATH
-                          NO_CMAKE_SYSTEM_PATH)
-          endif()
-
-          # search in HINTS locations
-          find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
-                        NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
-                        NAMES_PER_DIR
-                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                        PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                        NO_SYSTEM_ENVIRONMENT_PATH
-                        NO_CMAKE_SYSTEM_PATH)
-
-          if (APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
-            set (__${_PYTHON_PREFIX}_FRAMEWORK_PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS})
-          else()
-            unset (__${_PYTHON_PREFIX}_FRAMEWORK_PATHS)
-          endif()
-
-          if (WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "LAST")
-            set (__${_PYTHON_PREFIX}_REGISTRY_PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS})
-          else()
-            unset (__${_PYTHON_PREFIX}_REGISTRY_PATHS)
-          endif()
-
-          # search in all default paths
-          find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
-                        NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
-                        NAMES_PER_DIR
-                        PATHS ${__${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                              ${__${_PYTHON_PREFIX}_REGISTRY_PATHS}
-                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES})
-        else()
-          foreach (_${_PYTHON_PREFIX}_LIB_VERSION IN LISTS _${_PYTHON_PREFIX}_FIND_VERSIONS)
-            _python_get_names (_${_PYTHON_PREFIX}_LIB_NAMES VERSION ${_${_PYTHON_PREFIX}_LIB_VERSION} WIN32 POSIX LIBRARY)
-            _python_get_names (_${_PYTHON_PREFIX}_LIB_NAMES_DEBUG VERSION ${_${_PYTHON_PREFIX}_LIB_VERSION} WIN32 DEBUG)
-
-            _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS VERSION ${_${_PYTHON_PREFIX}_LIB_VERSION})
-            _python_get_registries (_${_PYTHON_PREFIX}_REGISTRY_PATHS VERSION ${_${_PYTHON_PREFIX}_LIB_VERSION})
-
-            _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES VERSION ${_${_PYTHON_PREFIX}_LIB_VERSION} LIBRARY)
-
-            if (APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
-              find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
-                            NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
-                            NAMES_PER_DIR
-                            HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                            PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
-                                  ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                            PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                            NO_CMAKE_PATH
-                            NO_CMAKE_ENVIRONMENT_PATH
-                            NO_SYSTEM_ENVIRONMENT_PATH
-                            NO_CMAKE_SYSTEM_PATH)
-            endif()
-
-            if (WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "FIRST")
-              find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
-                            NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
-                            NAMES_PER_DIR
-                            HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                            PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
-                                  ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
-                            PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                            NO_SYSTEM_ENVIRONMENT_PATH
-                            NO_CMAKE_SYSTEM_PATH)
-            endif()
-
-            # search in HINTS locations
-            find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
-                          NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
-                          NAMES_PER_DIR
-                          HINTS ${_${_PYTHON_PREFIX}_HINTS}
-                          PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
-                          PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                          NO_SYSTEM_ENVIRONMENT_PATH
-                          NO_CMAKE_SYSTEM_PATH)
-
-            if (APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
-              set (__${_PYTHON_PREFIX}_FRAMEWORK_PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS})
-            else()
-              unset (__${_PYTHON_PREFIX}_FRAMEWORK_PATHS)
-            endif()
-
-            if (WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "LAST")
-              set (__${_PYTHON_PREFIX}_REGISTRY_PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS})
-            else()
-              unset (__${_PYTHON_PREFIX}_REGISTRY_PATHS)
-            endif()
-
-            # search in all default paths
-            find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
-                          NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
-                          NAMES_PER_DIR
-                          PATHS ${__${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                                ${__${_PYTHON_PREFIX}_REGISTRY_PATHS}
-                          PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES})
-
-            if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE)
-              break()
-            endif()
-          endforeach()
-        endif()
-      endif()
-    endif()
-
-    # finalize library version information
-    _python_get_version (LIBRARY PREFIX _${_PYTHON_PREFIX}_)
-    if (_${_PYTHON_PREFIX}_VERSION EQUAL "${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}")
-      # not able to extract full version from library name
-      if (${_PYTHON_PREFIX}_Interpreter_FOUND)
-        # update from interpreter
-        set (_${_PYTHON_PREFIX}_VERSION ${${_PYTHON_PREFIX}_VERSION})
-        set (_${_PYTHON_PREFIX}_VERSION_MAJOR ${${_PYTHON_PREFIX}_VERSION_MAJOR})
-        set (_${_PYTHON_PREFIX}_VERSION_MINOR ${${_PYTHON_PREFIX}_VERSION_MINOR})
-        set (_${_PYTHON_PREFIX}_VERSION_PATCH ${${_PYTHON_PREFIX}_VERSION_PATCH})
-      endif()
-    endif()
-
-    set (${_PYTHON_PREFIX}_LIBRARY_RELEASE "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}")
-
-    if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE AND NOT EXISTS "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}")
-      set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Cannot find the library \"${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}\"")
-      set_property (CACHE _${_PYTHON_PREFIX}_LIBRARY_RELEASE PROPERTY VALUE "${_PYTHON_PREFIX}_LIBRARY_RELEASE-NOTFOUND")
-    endif()
-
-    set (_${_PYTHON_PREFIX}_HINTS "${${_PYTHON_PREFIX}_ROOT_DIR}" ENV ${_PYTHON_PREFIX}_ROOT_DIR)
-
-    if (WIN32 AND _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
-      # search for debug library
-      # use release library location as a hint
-      _python_get_names (_${_PYTHON_PREFIX}_LIB_NAMES_DEBUG VERSION ${_${_PYTHON_PREFIX}_VERSION} WIN32 DEBUG)
-      get_filename_component (_${_PYTHON_PREFIX}_PATH "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}" DIRECTORY)
-      find_library (_${_PYTHON_PREFIX}_LIBRARY_DEBUG
-                    NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES_DEBUG}
-                    NAMES_PER_DIR
-                    HINTS "${_${_PYTHON_PREFIX}_PATH}" ${_${_PYTHON_PREFIX}_HINTS}
-                    NO_DEFAULT_PATH)
-      # second try including CMAKE variables to catch-up non conventional layouts
-      find_library (_${_PYTHON_PREFIX}_LIBRARY_DEBUG
-                    NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES_DEBUG}
-                    NAMES_PER_DIR
-                    NO_SYSTEM_ENVIRONMENT_PATH
-                    NO_CMAKE_SYSTEM_PATH)
-    endif()
-
-    # retrieve runtime libraries
-    if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE)
-      _python_get_names (_${_PYTHON_PREFIX}_LIB_NAMES VERSION ${_${_PYTHON_PREFIX}_VERSION} WIN32 POSIX LIBRARY)
-      get_filename_component (_${_PYTHON_PREFIX}_PATH "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}" DIRECTORY)
-      get_filename_component (_${_PYTHON_PREFIX}_PATH2 "${_${_PYTHON_PREFIX}_PATH}" DIRECTORY)
-      _python_find_runtime_library (_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE
-                                    NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
-                                    NAMES_PER_DIR
-                                    HINTS "${_${_PYTHON_PREFIX}_PATH}"
-                                          "${_${_PYTHON_PREFIX}_PATH2}" ${_${_PYTHON_PREFIX}_HINTS}
-                                    PATH_SUFFIXES bin)
-    endif()
-    if (_${_PYTHON_PREFIX}_LIBRARY_DEBUG)
-      _python_get_names (_${_PYTHON_PREFIX}_LIB_NAMES_DEBUG VERSION ${_${_PYTHON_PREFIX}_VERSION} WIN32 DEBUG)
-      get_filename_component (_${_PYTHON_PREFIX}_PATH "${_${_PYTHON_PREFIX}_LIBRARY_DEBUG}" DIRECTORY)
-      get_filename_component (_${_PYTHON_PREFIX}_PATH2 "${_${_PYTHON_PREFIX}_PATH}" DIRECTORY)
-      _python_find_runtime_library (_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG
-                                    NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES_DEBUG}
-                                    NAMES_PER_DIR
-                                    HINTS "${_${_PYTHON_PREFIX}_PATH}"
-                                          "${_${_PYTHON_PREFIX}_PATH2}" ${_${_PYTHON_PREFIX}_HINTS}
-                                    PATH_SUFFIXES bin)
-    endif()
-  endif()
-
-  if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
-    while (NOT _${_PYTHON_PREFIX}_INCLUDE_DIR)
-      if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS
-          AND NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
-        # Don't search for include dir if no library was founded
-        break()
-      endif()
-
-      if ((${_PYTHON_PREFIX}_Interpreter_FOUND AND NOT CMAKE_CROSSCOMPILING) OR _${_PYTHON_PREFIX}_CONFIG)
-        _python_get_config_var (_${_PYTHON_PREFIX}_INCLUDE_DIRS INCLUDES)
-
-        find_path (_${_PYTHON_PREFIX}_INCLUDE_DIR
-                   NAMES ${_${_PYTHON_PREFIX}_INCLUDE_NAMES}
-                   HINTS ${_${_PYTHON_PREFIX}_INCLUDE_DIRS}
-                   NO_SYSTEM_ENVIRONMENT_PATH
-                   NO_CMAKE_SYSTEM_PATH)
-      endif()
-
-      # Rely on HINTS and standard paths if interpreter or config tool failed to locate artifacts
-      if (NOT _${_PYTHON_PREFIX}_INCLUDE_DIR)
-        unset (_${_PYTHON_PREFIX}_VIRTUALENV_PATHS)
-        if (_${_PYTHON_PREFIX}_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY)$")
-          set (_${_PYTHON_PREFIX}_VIRTUALENV_PATHS ENV VIRTUAL_ENV ENV CONDA_PREFIX)
-        endif()
-        unset (_${_PYTHON_PREFIX}_INCLUDE_HINTS)
-
-        if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE)
-          # Use the library's install prefix as a hint
-          if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "^(.+/Frameworks/Python.framework/Versions/[0-9.]+)")
-            list (APPEND _${_PYTHON_PREFIX}_INCLUDE_HINTS "${CMAKE_MATCH_1}")
-          elseif (_${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "^(.+)/lib(64|32)?/python[0-9.]+/config")
-            list (APPEND _${_PYTHON_PREFIX}_INCLUDE_HINTS "${CMAKE_MATCH_1}")
-          elseif (DEFINED CMAKE_LIBRARY_ARCHITECTURE AND ${_${_PYTHON_PREFIX}_LIBRARY_RELEASE} MATCHES "^(.+)/lib/${CMAKE_LIBRARY_ARCHITECTURE}")
-            list (APPEND _${_PYTHON_PREFIX}_INCLUDE_HINTS "${CMAKE_MATCH_1}")
-          else()
-            # assume library is in a directory under root
-            get_filename_component (_${_PYTHON_PREFIX}_PREFIX "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}" DIRECTORY)
-            get_filename_component (_${_PYTHON_PREFIX}_PREFIX "${_${_PYTHON_PREFIX}_PREFIX}" DIRECTORY)
-            list (APPEND _${_PYTHON_PREFIX}_INCLUDE_HINTS "${_${_PYTHON_PREFIX}_PREFIX}")
-          endif()
-        endif()
-
-        _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS VERSION ${_${_PYTHON_PREFIX}_VERSION})
-        _python_get_registries (_${_PYTHON_PREFIX}_REGISTRY_PATHS VERSION ${_${_PYTHON_PREFIX}_VERSION})
-        _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES VERSION ${_${_PYTHON_PREFIX}_VERSION} INCLUDE)
-
-        if (APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
-          find_path (_${_PYTHON_PREFIX}_INCLUDE_DIR
-                     NAMES ${_${_PYTHON_PREFIX}_INCLUDE_NAMES}
-                     HINTS ${_${_PYTHON_PREFIX}_INCLUDE_HINTS} ${_${_PYTHON_PREFIX}_HINTS}
-                     PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
-                           ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                     PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                     NO_CMAKE_PATH
-                     NO_CMAKE_ENVIRONMENT_PATH
-                     NO_SYSTEM_ENVIRONMENT_PATH
-                     NO_CMAKE_SYSTEM_PATH)
-        endif()
-
-        if (WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "FIRST")
-          find_path (_${_PYTHON_PREFIX}_INCLUDE_DIR
-                     NAMES ${_${_PYTHON_PREFIX}_INCLUDE_NAMES}
-                     HINTS ${_${_PYTHON_PREFIX}_INCLUDE_HINTS} ${_${_PYTHON_PREFIX}_HINTS}
-                     PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
-                           ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
-                     PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                     NO_SYSTEM_ENVIRONMENT_PATH
-                     NO_CMAKE_SYSTEM_PATH)
-        endif()
-
-        if (APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
-          set (__${_PYTHON_PREFIX}_FRAMEWORK_PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS})
-        else()
-          unset (__${_PYTHON_PREFIX}_FRAMEWORK_PATHS)
-        endif()
-
-        if (WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "LAST")
-          set (__${_PYTHON_PREFIX}_REGISTRY_PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS})
-        else()
-          unset (__${_PYTHON_PREFIX}_REGISTRY_PATHS)
-        endif()
-
-        find_path (_${_PYTHON_PREFIX}_INCLUDE_DIR
-                   NAMES ${_${_PYTHON_PREFIX}_INCLUDE_NAMES}
-                   HINTS ${_${_PYTHON_PREFIX}_INCLUDE_HINTS} ${_${_PYTHON_PREFIX}_HINTS}
-                   PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
-                         ${__${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
-                         ${__${_PYTHON_PREFIX}_REGISTRY_PATHS}
-                   PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
-                   NO_SYSTEM_ENVIRONMENT_PATH
-                   NO_CMAKE_SYSTEM_PATH)
-      endif()
-
-      # search header file in standard locations
-      find_path (_${_PYTHON_PREFIX}_INCLUDE_DIR
-                 NAMES ${_${_PYTHON_PREFIX}_INCLUDE_NAMES})
-
-      break()
-    endwhile()
-
-    set (${_PYTHON_PREFIX}_INCLUDE_DIRS "${_${_PYTHON_PREFIX}_INCLUDE_DIR}")
-
-    if (_${_PYTHON_PREFIX}_INCLUDE_DIR AND NOT EXISTS "${_${_PYTHON_PREFIX}_INCLUDE_DIR}")
-      set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Cannot find the directory \"${_${_PYTHON_PREFIX}_INCLUDE_DIR}\"")
-      set_property (CACHE _${_PYTHON_PREFIX}_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_INCLUDE_DIR-NOTFOUND")
-    endif()
-
-    if (_${_PYTHON_PREFIX}_INCLUDE_DIR)
-      # retrieve version from header file
-      _python_get_version (INCLUDE PREFIX _${_PYTHON_PREFIX}_INC_)
-
-      if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE)
-        if ("${_${_PYTHON_PREFIX}_INC_VERSION_MAJOR}.${_${_PYTHON_PREFIX}_INC_VERSION_MINOR}"
-            VERSION_EQUAL _${_PYTHON_PREFIX}_VERSION)
-          # update versioning
-          set (_${_PYTHON_PREFIX}_VERSION ${_${_PYTHON_PREFIX}_INC_VERSION})
-          set (_${_PYTHON_PREFIX}_VERSION_PATCH ${_${_PYTHON_PREFIX}_INC_VERSION_PATCH})
-        endif()
-      else()
-        set (_${_PYTHON_PREFIX}_VERSION ${_${_PYTHON_PREFIX}_INC_VERSION})
-        set (_${_PYTHON_PREFIX}_VERSION_MAJOR ${_${_PYTHON_PREFIX}_INC_VERSION_MAJOR})
-        set (_${_PYTHON_PREFIX}_VERSION_MINOR ${_${_PYTHON_PREFIX}_INC_VERSION_MINOR})
-        set (_${_PYTHON_PREFIX}_VERSION_PATCH ${_${_PYTHON_PREFIX}_INC_VERSION_PATCH})
-      endif()
-    endif()
-  endif()
-
-  if (NOT ${_PYTHON_PREFIX}_Interpreter_FOUND AND NOT ${_PYTHON_PREFIX}_Compiler_FOUND)
-    # set public version information
-    set (${_PYTHON_PREFIX}_VERSION ${_${_PYTHON_PREFIX}_VERSION})
-    set (${_PYTHON_PREFIX}_VERSION_MAJOR ${_${_PYTHON_PREFIX}_VERSION_MAJOR})
-    set (${_PYTHON_PREFIX}_VERSION_MINOR ${_${_PYTHON_PREFIX}_VERSION_MINOR})
-    set (${_PYTHON_PREFIX}_VERSION_PATCH ${_${_PYTHON_PREFIX}_VERSION_PATCH})
-  endif()
-
-  # define public variables
-  if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
-    set (${_PYTHON_PREFIX}_LIBRARY_DEBUG "${_${_PYTHON_PREFIX}_LIBRARY_DEBUG}")
-    _python_select_library_configurations (${_PYTHON_PREFIX})
-
-    set (${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE "${_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE}")
-    set (${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG "${_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG}")
-
-    if (_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE)
-      set (${_PYTHON_PREFIX}_RUNTIME_LIBRARY "${_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE}")
-    elseif (_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG)
-      set (${_PYTHON_PREFIX}_RUNTIME_LIBRARY "${_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG}")
-    else()
-      set (${_PYTHON_PREFIX}_RUNTIME_LIBRARY "${_PYTHON_PREFIX}_RUNTIME_LIBRARY-NOTFOUND")
-    endif()
-
-    _python_set_library_dirs (${_PYTHON_PREFIX}_LIBRARY_DIRS
-                              _${_PYTHON_PREFIX}_LIBRARY_RELEASE
-                              _${_PYTHON_PREFIX}_LIBRARY_DEBUG)
-    if (UNIX)
-      if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "${CMAKE_SHARED_LIBRARY_SUFFIX}$")
-        set (${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DIRS ${${_PYTHON_PREFIX}_LIBRARY_DIRS})
-      endif()
-    else()
-      _python_set_library_dirs (${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DIRS
-                                _${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE
-                                _${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG)
-    endif()
-  endif()
-
-  if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE OR _${_PYTHON_PREFIX}_INCLUDE_DIR)
-    if (${_PYTHON_PREFIX}_Interpreter_FOUND OR ${_PYTHON_PREFIX}_Compiler_FOUND)
-      # development environment must be compatible with interpreter/compiler
-      if ("${_${_PYTHON_PREFIX}_VERSION_MAJOR}.${_${_PYTHON_PREFIX}_VERSION_MINOR}" VERSION_EQUAL "${${_PYTHON_PREFIX}_VERSION_MAJOR}.${${_PYTHON_PREFIX}_VERSION_MINOR}"
-          AND "${_${_PYTHON_PREFIX}_INC_VERSION_MAJOR}.${_${_PYTHON_PREFIX}_INC_VERSION_MINOR}" VERSION_EQUAL "${_${_PYTHON_PREFIX}_VERSION_MAJOR}.${_${_PYTHON_PREFIX}_VERSION_MINOR}")
-        _python_set_development_module_found (Module)
-        _python_set_development_module_found (Embed)
-      endif()
-    elseif (${_PYTHON_PREFIX}_VERSION_MAJOR VERSION_EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR
-        AND "${_${_PYTHON_PREFIX}_INC_VERSION_MAJOR}.${_${_PYTHON_PREFIX}_INC_VERSION_MINOR}" VERSION_EQUAL "${_${_PYTHON_PREFIX}_VERSION_MAJOR}.${_${_PYTHON_PREFIX}_VERSION_MINOR}")
-      _python_set_development_module_found (Module)
-      _python_set_development_module_found (Embed)
-    endif()
-    if (DEFINED _${_PYTHON_PREFIX}_FIND_ABI AND
-        (NOT _${_PYTHON_PREFIX}_ABI IN_LIST _${_PYTHON_PREFIX}_ABIFLAGS
-          OR NOT _${_PYTHON_PREFIX}_INC_ABI IN_LIST _${_PYTHON_PREFIX}_ABIFLAGS))
-      set (${_PYTHON_PREFIX}_Development.Module_FOUND FALSE)
-      set (${_PYTHON_PREFIX}_Development.Embed_FOUND FALSE)
-    endif()
-  endif()
-
-  if (( ${_PYTHON_PREFIX}_Development.Module_FOUND
-        AND ${_PYTHON_PREFIX}_Development.Embed_FOUND)
-      OR (NOT "Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
-        AND ${_PYTHON_PREFIX}_Development.Embed_FOUND)
-      OR (NOT "Development.Embed" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
-        AND ${_PYTHON_PREFIX}_Development.Module_FOUND))
-    unset (_${_PYTHON_PREFIX}_Development_REASON_FAILURE)
-  endif()
-
-  if ("Development" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
-      AND ${_PYTHON_PREFIX}_Development.Module_FOUND
-      AND ${_PYTHON_PREFIX}_Development.Embed_FOUND)
-    set (${_PYTHON_PREFIX}_Development_FOUND TRUE)
-  endif()
-
-  if ((${_PYTHON_PREFIX}_Development.Module_FOUND
-      OR ${_PYTHON_PREFIX}_Development.Embed_FOUND)
-    AND EXISTS "${_${_PYTHON_PREFIX}_INCLUDE_DIR}/PyPy.h")
-  # retrieve PyPy version
-  file (STRINGS "${_${_PYTHON_PREFIX}_INCLUDE_DIR}/patchlevel.h" ${_PYTHON_PREFIX}_PyPy_VERSION
-                REGEX "^#define[ \t]+PYPY_VERSION[ \t]+\"[^\"]+\"")
-  string (REGEX REPLACE "^#define[ \t]+PYPY_VERSION[ \t]+\"([^\"]+)\".*" "\\1"
-                ${_PYTHON_PREFIX}_PyPy_VERSION "${${_PYTHON_PREFIX}_PyPy_VERSION}")
-  endif()
-
-  if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR VERSION_GREATER_EQUAL "3"
-      AND NOT DEFINED ${_PYTHON_PREFIX}_SOABI)
-    _python_get_config_var (${_PYTHON_PREFIX}_SOABI SOABI)
-  endif()
-
-  _python_compute_development_signature (Module)
-  _python_compute_development_signature (Embed)
-
-  # Restore the original find library ordering
-  if (DEFINED _${_PYTHON_PREFIX}_CMAKE_FIND_LIBRARY_SUFFIXES)
-    set (CMAKE_FIND_LIBRARY_SUFFIXES ${_${_PYTHON_PREFIX}_CMAKE_FIND_LIBRARY_SUFFIXES})
-  endif()
-
-  if (${_PYTHON_PREFIX}_ARTIFACTS_INTERACTIVE)
-    if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
-      set (${_PYTHON_PREFIX}_LIBRARY "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}" CACHE FILEPATH "${_PYTHON_PREFIX} Library")
-    endif()
-    if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
-      set (${_PYTHON_PREFIX}_INCLUDE_DIR "${_${_PYTHON_PREFIX}_INCLUDE_DIR}" CACHE FILEPATH "${_PYTHON_PREFIX} Include Directory")
-    endif()
-  endif()
-
-  _python_mark_as_internal (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
-                            _${_PYTHON_PREFIX}_LIBRARY_DEBUG
-                            _${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE
-                            _${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG
-                            _${_PYTHON_PREFIX}_INCLUDE_DIR
-                            _${_PYTHON_PREFIX}_CONFIG
-                            _${_PYTHON_PREFIX}_DEVELOPMENT_MODULE_SIGNATURE
-                            _${_PYTHON_PREFIX}_DEVELOPMENT_EMBED_SIGNATURE)
-endif()
-
-if (${_PYTHON_PREFIX}_FIND_REQUIRED_NumPy)
-  list (APPEND _${_PYTHON_PREFIX}_REQUIRED_VARS ${_PYTHON_PREFIX}_NumPy_INCLUDE_DIRS)
-endif()
-if ("NumPy" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS AND ${_PYTHON_PREFIX}_Interpreter_FOUND)
-  list (APPEND _${_PYTHON_PREFIX}_CACHED_VARS _${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR)
-
-  if (DEFINED ${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR
-      AND IS_ABSOLUTE "${${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR}")
-    set (_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR "${${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR}" CACHE INTERNAL "")
-  elseif (DEFINED _${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR)
-    # compute numpy signature. Depends on interpreter and development signatures
-    string (MD5 __${_PYTHON_PREFIX}_NUMPY_SIGNATURE "${_${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE}:${_${_PYTHON_PREFIX}_DEVELOPMENT_MODULE_SIGNATURE}:${_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR}")
-    if (NOT __${_PYTHON_PREFIX}_NUMPY_SIGNATURE STREQUAL _${_PYTHON_PREFIX}_NUMPY_SIGNATURE
-        OR NOT EXISTS "${_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR}")
-      unset (_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR CACHE)
-      unset (_${_PYTHON_PREFIX}_NUMPY_SIGNATURE CACHE)
-    endif()
-  endif()
-
-  if (NOT _${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR)
-    execute_process(COMMAND ${${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
-                            "import sys\ntry: import numpy; sys.stdout.write(numpy.get_include())\nexcept:pass\n"
-                    RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
-                    OUTPUT_VARIABLE _${_PYTHON_PREFIX}_NumPy_PATH
-                    ERROR_QUIET
-                    OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-    if (NOT _${_PYTHON_PREFIX}_RESULT)
-      find_path (_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR
-                 NAMES "numpy/arrayobject.h" "numpy/numpyconfig.h"
-                 HINTS "${_${_PYTHON_PREFIX}_NumPy_PATH}"
-                 NO_DEFAULT_PATH)
-    endif()
-  endif()
-
-  set (${_PYTHON_PREFIX}_NumPy_INCLUDE_DIRS "${_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR}")
-
-  if(_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR AND NOT EXISTS "${_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR}")
-    set (_${_PYTHON_PREFIX}_NumPy_REASON_FAILURE "Cannot find the directory \"${_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR}\"")
-    set_property (CACHE _${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR-NOTFOUND")
-  endif()
-
-  if (_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR)
-    execute_process (COMMAND ${${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
-                             "import sys\ntry: import numpy; sys.stdout.write(numpy.__version__)\nexcept:pass\n"
-                     RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
-                     OUTPUT_VARIABLE _${_PYTHON_PREFIX}_NumPy_VERSION)
-    if (NOT _${_PYTHON_PREFIX}_RESULT)
-      set (${_PYTHON_PREFIX}_NumPy_VERSION "${_${_PYTHON_PREFIX}_NumPy_VERSION}")
-    else()
-      unset (${_PYTHON_PREFIX}_NumPy_VERSION)
-    endif()
-
-    # final step: set NumPy founded only if Development.Module component is founded as well
-    set(${_PYTHON_PREFIX}_NumPy_FOUND ${${_PYTHON_PREFIX}_Development.Module_FOUND})
-  else()
-    set (${_PYTHON_PREFIX}_NumPy_FOUND FALSE)
-  endif()
-
-  if (${_PYTHON_PREFIX}_NumPy_FOUND)
-    unset (_${_PYTHON_PREFIX}_NumPy_REASON_FAILURE)
-
-    # compute and save numpy signature
-    string (MD5 __${_PYTHON_PREFIX}_NUMPY_SIGNATURE "${_${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE}:${_${_PYTHON_PREFIX}_DEVELOPMENT_MODULE_SIGNATURE}:${${_PYTHON_PREFIX}_NumPyINCLUDE_DIR}")
-    set (_${_PYTHON_PREFIX}_NUMPY_SIGNATURE "${__${_PYTHON_PREFIX}_NUMPY_SIGNATURE}" CACHE INTERNAL "")
-  else()
-    unset (_${_PYTHON_PREFIX}_NUMPY_SIGNATURE CACHE)
-  endif()
-
-  if (${_PYTHON_PREFIX}_ARTIFACTS_INTERACTIVE)
-    set (${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR "${_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR}" CACHE FILEPATH "${_PYTHON_PREFIX} NumPy Include Directory")
-  endif()
-
-  _python_mark_as_internal (_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR
-                            _${_PYTHON_PREFIX}_NUMPY_SIGNATURE)
-endif()
-
-# final validation
-if (${_PYTHON_PREFIX}_VERSION_MAJOR AND
-    NOT ${_PYTHON_PREFIX}_VERSION_MAJOR VERSION_EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
-  _python_display_failure ("Could NOT find ${_PYTHON_PREFIX}: Found unsuitable major version \"${${_PYTHON_PREFIX}_VERSION_MAJOR}\", but required major version is exact version \"${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}\"")
-endif()
-
-unset (_${_PYTHON_PREFIX}_REASON_FAILURE)
-foreach (_${_PYTHON_PREFIX}_COMPONENT IN ITEMS Interpreter Compiler Development NumPy)
-  if (_${_PYTHON_PREFIX}_${_${_PYTHON_PREFIX}_COMPONENT}_REASON_FAILURE)
-    string (APPEND _${_PYTHON_PREFIX}_REASON_FAILURE "\n        ${_${_PYTHON_PREFIX}_COMPONENT}: ${_${_PYTHON_PREFIX}_${_${_PYTHON_PREFIX}_COMPONENT}_REASON_FAILURE}")
-    unset (_${_PYTHON_PREFIX}_${_${_PYTHON_PREFIX}_COMPONENT}_REASON_FAILURE)
-  endif()
-endforeach()
-
-include (${CMAKE_CURRENT_LIST_DIR}/../FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args (${_PYTHON_PREFIX}
-                                   REQUIRED_VARS ${_${_PYTHON_PREFIX}_REQUIRED_VARS}
-                                   VERSION_VAR ${_PYTHON_PREFIX}_VERSION
-                                   HANDLE_COMPONENTS
-                                   REASON_FAILURE_MESSAGE "${_${_PYTHON_PREFIX}_REASON_FAILURE}")
-
-# Create imported targets and helper functions
-if(_${_PYTHON_PREFIX}_CMAKE_ROLE STREQUAL "PROJECT")
-  if ("Interpreter" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
-      AND ${_PYTHON_PREFIX}_Interpreter_FOUND
-      AND NOT TARGET ${_PYTHON_PREFIX}::Interpreter)
-    add_executable (${_PYTHON_PREFIX}::Interpreter IMPORTED)
-    set_property (TARGET ${_PYTHON_PREFIX}::Interpreter
-                  PROPERTY IMPORTED_LOCATION "${${_PYTHON_PREFIX}_EXECUTABLE}")
-  endif()
-
-  if ("Compiler" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
-      AND ${_PYTHON_PREFIX}_Compiler_FOUND
-      AND NOT TARGET ${_PYTHON_PREFIX}::Compiler)
-    add_executable (${_PYTHON_PREFIX}::Compiler IMPORTED)
-    set_property (TARGET ${_PYTHON_PREFIX}::Compiler
-                  PROPERTY IMPORTED_LOCATION "${${_PYTHON_PREFIX}_COMPILER}")
-  endif()
-
-  if (("Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
-        AND ${_PYTHON_PREFIX}_Development.Module_FOUND)
-      OR ("Development.Embed" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
-        AND ${_PYTHON_PREFIX}_Development.Embed_FOUND))
-
-    macro (__PYTHON_IMPORT_LIBRARY __name)
-      if (${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "${CMAKE_SHARED_LIBRARY_SUFFIX}$"
-          OR ${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE)
-        set (_${_PYTHON_PREFIX}_LIBRARY_TYPE SHARED)
-      else()
-        set (_${_PYTHON_PREFIX}_LIBRARY_TYPE STATIC)
-      endif()
-
-      if (NOT TARGET ${__name})
-        add_library (${__name} ${_${_PYTHON_PREFIX}_LIBRARY_TYPE} IMPORTED)
-      endif()
-
-      set_property (TARGET ${__name}
-                    PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${${_PYTHON_PREFIX}_INCLUDE_DIRS}")
-
-      if (${_PYTHON_PREFIX}_LIBRARY_RELEASE AND ${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE)
-        # System manage shared libraries in two parts: import and runtime
-        if (${_PYTHON_PREFIX}_LIBRARY_RELEASE AND ${_PYTHON_PREFIX}_LIBRARY_DEBUG)
-          set_property (TARGET ${__name} PROPERTY IMPORTED_CONFIGURATIONS RELEASE DEBUG)
-          set_target_properties (${__name}
-                                 PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
-                                            IMPORTED_IMPLIB_RELEASE "${${_PYTHON_PREFIX}_LIBRARY_RELEASE}"
-                                            IMPORTED_LOCATION_RELEASE "${${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE}")
-          set_target_properties (${__name}
-                                 PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
-                                            IMPORTED_IMPLIB_DEBUG "${${_PYTHON_PREFIX}_LIBRARY_DEBUG}"
-                                            IMPORTED_LOCATION_DEBUG "${${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG}")
-        else()
-          set_target_properties (${__name}
-                                 PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-                                            IMPORTED_IMPLIB "${${_PYTHON_PREFIX}_LIBRARIES}"
-                                            IMPORTED_LOCATION "${${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE}")
-        endif()
-      else()
-        if (${_PYTHON_PREFIX}_LIBRARY_RELEASE AND ${_PYTHON_PREFIX}_LIBRARY_DEBUG)
-          set_property (TARGET ${__name} PROPERTY IMPORTED_CONFIGURATIONS RELEASE DEBUG)
-          set_target_properties (${__name}
-                                 PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
-                                            IMPORTED_LOCATION_RELEASE "${${_PYTHON_PREFIX}_LIBRARY_RELEASE}")
-          set_target_properties (${__name}
-                                 PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
-                                            IMPORTED_LOCATION_DEBUG "${${_PYTHON_PREFIX}_LIBRARY_DEBUG}")
-        else()
-          set_target_properties (${__name}
-                                 PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-                                            IMPORTED_LOCATION "${${_PYTHON_PREFIX}_LIBRARY_RELEASE}")
-        endif()
-      endif()
-
-      if (_${_PYTHON_PREFIX}_LIBRARY_TYPE STREQUAL "STATIC")
-        # extend link information with dependent libraries
-        _python_get_config_var (_${_PYTHON_PREFIX}_LINK_LIBRARIES LIBS)
-        if (_${_PYTHON_PREFIX}_LINK_LIBRARIES)
-          set_property (TARGET ${__name}
-                        PROPERTY INTERFACE_LINK_LIBRARIES ${_${_PYTHON_PREFIX}_LINK_LIBRARIES})
-        endif()
-      endif()
-    endmacro()
-
-    if (${_PYTHON_PREFIX}_Development.Embed_FOUND)
-      __python_import_library (${_PYTHON_PREFIX}::Python)
-    endif()
-
-    if (${_PYTHON_PREFIX}_Development.Module_FOUND)
-      if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_MODULE_ARTIFACTS)
-        # On Windows/CYGWIN/MSYS, Python::Module is the same as Python::Python
-        # but ALIAS cannot be used because the imported library is not GLOBAL.
-        __python_import_library (${_PYTHON_PREFIX}::Module)
-      else()
-        if (NOT TARGET ${_PYTHON_PREFIX}::Module)
-          add_library (${_PYTHON_PREFIX}::Module INTERFACE IMPORTED)
-        endif()
-        set_property (TARGET ${_PYTHON_PREFIX}::Module
-                      PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${${_PYTHON_PREFIX}_INCLUDE_DIRS}")
-
-        # When available, enforce shared library generation with undefined symbols
-        if (APPLE)
-          set_property (TARGET ${_PYTHON_PREFIX}::Module
-                        PROPERTY INTERFACE_LINK_OPTIONS "LINKER:-undefined,dynamic_lookup")
-        endif()
-        if (CMAKE_SYSTEM_NAME STREQUAL "SunOS")
-          set_property (TARGET ${_PYTHON_PREFIX}::Module
-                        PROPERTY INTERFACE_LINK_OPTIONS "LINKER:-z,nodefs")
-        endif()
-        if (CMAKE_SYSTEM_NAME STREQUAL "AIX")
-          set_property (TARGET ${_PYTHON_PREFIX}::Module
-                        PROPERTY INTERFACE_LINK_OPTIONS "LINKER:-b,erok")
-        endif()
-      endif()
-    endif()
-
-    #
-    # PYTHON_ADD_LIBRARY (<name> [STATIC|SHARED|MODULE] src1 src2 ... srcN)
-    # It is used to build modules for python.
-    #
-    function (__${_PYTHON_PREFIX}_ADD_LIBRARY prefix name)
-      cmake_parse_arguments (PARSE_ARGV 2 PYTHON_ADD_LIBRARY "STATIC;SHARED;MODULE;WITH_SOABI" "" "")
-
-      if (prefix STREQUAL "Python2" AND PYTHON_ADD_LIBRARY_WITH_SOABI)
-        message (AUTHOR_WARNING "FindPython2: Option `WITH_SOABI` is not supported for Python2 and will be ignored.")
-        unset (PYTHON_ADD_LIBRARY_WITH_SOABI)
-      endif()
-
-      if (PYTHON_ADD_LIBRARY_STATIC)
-        set (type STATIC)
-      elseif (PYTHON_ADD_LIBRARY_SHARED)
-        set (type SHARED)
-      else()
-        set (type MODULE)
-      endif()
-
-      if (type STREQUAL "MODULE" AND NOT TARGET ${prefix}::Module)
-        message (SEND_ERROR "${prefix}_ADD_LIBRARY: dependent target '${prefix}::Module' is not defined.\n   Did you miss to request COMPONENT 'Development.Module'?")
-        return()
-      endif()
-      if (NOT type STREQUAL "MODULE" AND NOT TARGET ${prefix}::Python)
-        message (SEND_ERROR "${prefix}_ADD_LIBRARY: dependent target '${prefix}::Python' is not defined.\n   Did you miss to request COMPONENT 'Development.Embed'?")
-        return()
-      endif()
-
-      add_library (${name} ${type} ${PYTHON_ADD_LIBRARY_UNPARSED_ARGUMENTS})
-
-      get_property (type TARGET ${name} PROPERTY TYPE)
-
-      if (type STREQUAL "MODULE_LIBRARY")
-        target_link_libraries (${name} PRIVATE ${prefix}::Module)
-        # customize library name to follow module name rules
-        set_property (TARGET ${name} PROPERTY PREFIX "")
-        if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
-          set_property (TARGET ${name} PROPERTY SUFFIX ".pyd")
-        endif()
-
-        if (PYTHON_ADD_LIBRARY_WITH_SOABI AND ${prefix}_SOABI)
-          get_property (suffix TARGET ${name} PROPERTY SUFFIX)
-          if (NOT suffix)
-            set (suffix "${CMAKE_SHARED_MODULE_SUFFIX}")
-          endif()
-          set_property (TARGET ${name} PROPERTY SUFFIX ".${${prefix}_SOABI}${suffix}")
-        endif()
-      else()
-        if (PYTHON_ADD_LIBRARY_WITH_SOABI)
-          message (AUTHOR_WARNING "Find${prefix}: Option `WITH_SOABI` is only supported for `MODULE` library type.")
-        endif()
-        target_link_libraries (${name} PRIVATE ${prefix}::Python)
-      endif()
-    endfunction()
-  endif()
-
-  if ("NumPy" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS AND ${_PYTHON_PREFIX}_NumPy_FOUND
-      AND NOT TARGET ${_PYTHON_PREFIX}::NumPy AND TARGET ${_PYTHON_PREFIX}::Module)
-    add_library (${_PYTHON_PREFIX}::NumPy INTERFACE IMPORTED)
-    set_property (TARGET ${_PYTHON_PREFIX}::NumPy
-                  PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${${_PYTHON_PREFIX}_NumPy_INCLUDE_DIRS}")
-    target_link_libraries (${_PYTHON_PREFIX}::NumPy INTERFACE ${_PYTHON_PREFIX}::Module)
-  endif()
-endif()
-
-# final clean-up
-
-# Restore CMAKE_FIND_APPBUNDLE
-if (DEFINED _${_PYTHON_PREFIX}_CMAKE_FIND_APPBUNDLE)
-  set (CMAKE_FIND_APPBUNDLE ${_${_PYTHON_PREFIX}_CMAKE_FIND_APPBUNDLE})
-  unset (_${_PYTHON_PREFIX}_CMAKE_FIND_APPBUNDLE)
-else()
-  unset (CMAKE_FIND_APPBUNDLE)
-endif()
-# Restore CMAKE_FIND_FRAMEWORK
-if (DEFINED _${_PYTHON_PREFIX}_CMAKE_FIND_FRAMEWORK)
-  set (CMAKE_FIND_FRAMEWORK ${_${_PYTHON_PREFIX}_CMAKE_FIND_FRAMEWORK})
-  unset (_${_PYTHON_PREFIX}_CMAKE_FIND_FRAMEWORK)
-else()
-  unset (CMAKE_FIND_FRAMEWORK)
-endif()
diff --git a/share/cmake-3.18/Modules/FindPython2.cmake b/share/cmake-3.18/Modules/FindPython2.cmake
deleted file mode 100644
index 84c0c73..0000000
--- a/share/cmake-3.18/Modules/FindPython2.cmake
+++ /dev/null
@@ -1,344 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindPython2
------------
-
-Find Python 2 interpreter, compiler and development environment (include
-directories and libraries).
-
-The following components are supported:
-
-* ``Interpreter``: search for Python 2 interpreter
-* ``Compiler``: search for Python 2 compiler. Only offered by IronPython.
-* ``Development``: search for development artifacts (include directories and
-  libraries). This component includes two sub-components which can be specified
-  independently:
-
-  * ``Development.Module``: search for artifacts for Python 2 module
-    developments.
-  * ``Development.Embed``: search for artifacts for Python 2 embedding
-    developments.
-
-* ``NumPy``: search for NumPy include directories.
-
-If no ``COMPONENTS`` are specified, ``Interpreter`` is assumed.
-
-If component ``Development`` is specified, it implies sub-components
-``Development.Module`` and ``Development.Embed``.
-
-To ensure consistent versions between components ``Interpreter``, ``Compiler``,
-``Development`` (or one of its sub-components) and ``NumPy``, specify all
-components at the same time::
-
-  find_package (Python2 COMPONENTS Interpreter Development)
-
-This module looks only for version 2 of Python. This module can be used
-concurrently with :module:`FindPython3` module to use both Python versions.
-
-The :module:`FindPython` module can be used if Python version does not matter
-for you.
-
-.. note::
-
-  If components ``Interpreter`` and ``Development`` (or one of its
-  sub-components) are both specified, this module search only for interpreter
-  with same platform architecture as the one defined by ``CMake``
-  configuration. This contraint does not apply if only ``Interpreter``
-  component is specified.
-
-Imported Targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :ref:`Imported Targets <Imported Targets>`
-(when :prop_gbl:`CMAKE_ROLE` is ``PROJECT``):
-
-``Python2::Interpreter``
-  Python 2 interpreter. Target defined if component ``Interpreter`` is found.
-``Python2::Compiler``
-  Python 2 compiler. Target defined if component ``Compiler`` is found.
-``Python2::Module``
-  Python 2 library for Python module. Target defined if component
-  ``Development.Module`` is found.
-``Python2::Python``
-  Python 2 library for Python embedding. Target defined if component
-  ``Development.Embed`` is found.
-``Python2::NumPy``
-  NumPy library for Python 2. Target defined if component ``NumPy`` is found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project
-(see :ref:`Standard Variable Names <CMake Developer Standard Variable Names>`):
-
-``Python2_FOUND``
-  System has the Python 2 requested components.
-``Python2_Interpreter_FOUND``
-  System has the Python 2 interpreter.
-``Python2_EXECUTABLE``
-  Path to the Python 2 interpreter.
-``Python2_INTERPRETER_ID``
-  A short string unique to the interpreter. Possible values include:
-    * Python
-    * ActivePython
-    * Anaconda
-    * Canopy
-    * IronPython
-    * PyPy
-``Python2_STDLIB``
-  Standard platform independent installation directory.
-
-  Information returned by
-  ``distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=True)``
-  or else ``sysconfig.get_path('stdlib')``.
-``Python2_STDARCH``
-  Standard platform dependent installation directory.
-
-  Information returned by
-  ``distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=True)``
-  or else ``sysconfig.get_path('platstdlib')``.
-``Python2_SITELIB``
-  Third-party platform independent installation directory.
-
-  Information returned by
-  ``distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=False)``
-  or else ``sysconfig.get_path('purelib')``.
-``Python2_SITEARCH``
-  Third-party platform dependent installation directory.
-
-  Information returned by
-  ``distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=False)``
-  or else ``sysconfig.get_path('platlib')``.
-``Python2_Compiler_FOUND``
-  System has the Python 2 compiler.
-``Python2_COMPILER``
-  Path to the Python 2 compiler. Only offered by IronPython.
-``Python2_COMPILER_ID``
-  A short string unique to the compiler. Possible values include:
-    * IronPython
-``Python2_DOTNET_LAUNCHER``
-  The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
-``Python2_Development_FOUND``
-  System has the Python 2 development artifacts.
-``Python2_Development.Module_FOUND``
-  System has the Python 2 development artifacts for Python module.
-``Python2_Development.Embed_FOUND``
-  System has the Python 2 development artifacts for Python embedding.
-``Python2_INCLUDE_DIRS``
-  The Python 2 include directories.
-``Python2_LIBRARIES``
-  The Python 2 libraries.
-``Python2_LIBRARY_DIRS``
-  The Python 2 library directories.
-``Python2_RUNTIME_LIBRARY_DIRS``
-  The Python 2 runtime library directories.
-``Python2_VERSION``
-  Python 2 version.
-``Python2_VERSION_MAJOR``
-  Python 2 major version.
-``Python2_VERSION_MINOR``
-  Python 2 minor version.
-``Python2_VERSION_PATCH``
-  Python 2 patch version.
-``Python2_PyPy_VERSION``
-  Python 2 PyPy version.
-``Python2_NumPy_FOUND``
-  System has the NumPy.
-``Python2_NumPy_INCLUDE_DIRS``
-  The NumPy include directries.
-``Python2_NumPy_VERSION``
-  The NumPy version.
-
-Hints
-^^^^^
-
-``Python2_ROOT_DIR``
-  Define the root directory of a Python 2 installation.
-
-``Python2_USE_STATIC_LIBS``
-  * If not defined, search for shared libraries and static libraries in that
-    order.
-  * If set to TRUE, search **only** for static libraries.
-  * If set to FALSE, search **only** for shared libraries.
-
-``Python2_FIND_STRATEGY``
-  This variable defines how lookup will be done.
-  The ``Python2_FIND_STRATEGY`` variable can be set to one of the following:
-
-  * ``VERSION``: Try to find the most recent version in all specified
-    locations.
-    This is the default if policy :policy:`CMP0094` is undefined or set to
-    ``OLD``.
-  * ``LOCATION``: Stops lookup as soon as a version satisfying version
-    constraints is founded.
-    This is the default if policy :policy:`CMP0094` is set to ``NEW``.
-
-``Python2_FIND_REGISTRY``
-  On Windows the ``Python2_FIND_REGISTRY`` variable determine the order
-  of preference between registry and environment variables.
-  the ``Python2_FIND_REGISTRY`` variable can be set to one of the following:
-
-  * ``FIRST``: Try to use registry before environment variables.
-    This is the default.
-  * ``LAST``: Try to use registry after environment variables.
-  * ``NEVER``: Never try to use registry.
-
-``Python2_FIND_FRAMEWORK``
-  On macOS the ``Python2_FIND_FRAMEWORK`` variable determine the order of
-  preference between Apple-style and unix-style package components.
-  This variable can take same values as :variable:`CMAKE_FIND_FRAMEWORK`
-  variable.
-
-  .. note::
-
-    Value ``ONLY`` is not supported so ``FIRST`` will be used instead.
-
-  If ``Python2_FIND_FRAMEWORK`` is not defined, :variable:`CMAKE_FIND_FRAMEWORK`
-  variable will be used, if any.
-
-``Python2_FIND_VIRTUALENV``
-  This variable defines the handling of virtual environments managed by
-  ``virtualenv`` or ``conda``. It is meaningful only when a virtual environment
-  is active (i.e. the ``activate`` script has been evaluated). In this case, it
-  takes precedence over ``Python2_FIND_REGISTRY`` and ``CMAKE_FIND_FRAMEWORK``
-  variables.  The ``Python2_FIND_VIRTUALENV`` variable can be set to one of the
-  following:
-
-  * ``FIRST``: The virtual environment is used before any other standard
-    paths to look-up for the interpreter. This is the default.
-  * ``ONLY``: Only the virtual environment is used to look-up for the
-    interpreter.
-  * ``STANDARD``: The virtual environment is not used to look-up for the
-    interpreter but environment variable ``PATH`` is always considered.
-    In this case, variable ``Python2_FIND_REGISTRY`` (Windows) or
-    ``CMAKE_FIND_FRAMEWORK`` (macOS) can be set with value ``LAST`` or
-    ``NEVER`` to select preferably the interpreter from the virtual
-    environment.
-
-  .. note::
-
-    If the component ``Development`` is requested, it is **strongly**
-    recommended to also include the component ``Interpreter`` to get expected
-    result.
-
-``Python2_FIND_IMPLEMENTATIONS``
-  This variable defines, in an ordered list, the different implementations
-  which will be searched. The ``Python2_FIND_IMPLEMENTATIONS`` variable can
-  hold the following values:
-
-  * ``CPython``: this is the standard implementation. Various products, like
-    ``Anaconda`` or ``ActivePython``, rely on this implementation.
-  * ``IronPython``: This implementation use the ``CSharp`` language for
-    ``.NET Framework`` on top of the `Dynamic Language Runtime` (``DLR``).
-    See `IronPython <http://ironpython.net>`_.
-  * ``PyPy``: This implementation use ``RPython`` language and
-    ``RPython translation toolchain`` to produce the python interpreter.
-    See `PyPy <https://www.pypy.org>`_.
-
-  The default value is:
-
-  * Windows platform: ``CPython``, ``IronPython``
-  * Other platforms: ``CPython``
-
-  .. note::
-
-    This hint has the lowest priority of all hints, so even if, for example,
-    you specify ``IronPython`` first and ``CPython`` in second, a python
-    product based on ``CPython`` can be selected because, for example with
-    ``Python2_FIND_STRATEGY=LOCATION``, each location will be search first for
-    ``IronPython`` and second for ``CPython``.
-
-  .. note::
-
-    When ``IronPython`` is specified, on platforms other than ``Windows``, the
-    ``.Net`` interpreter (i.e. ``mono`` command) is expected to be available
-    through the ``PATH`` variable.
-
-Artifacts Specification
-^^^^^^^^^^^^^^^^^^^^^^^
-
-To solve special cases, it is possible to specify directly the artifacts by
-setting the following variables:
-
-``Python2_EXECUTABLE``
-  The path to the interpreter.
-
-``Python2_COMPILER``
-  The path to the compiler.
-
-``Python2_DOTNET_LAUNCHER``
-  The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
-
-``Python2_LIBRARY``
-  The path to the library. It will be used to compute the
-  variables ``Python2_LIBRARIES``, ``Python2_LIBRAY_DIRS`` and
-  ``Python2_RUNTIME_LIBRARY_DIRS``.
-
-``Python2_INCLUDE_DIR``
-  The path to the directory of the ``Python`` headers. It will be used to
-  compute the variable ``Python2_INCLUDE_DIRS``.
-
-``Python2_NumPy_INCLUDE_DIR``
-  The path to the directory of the ``NumPy`` headers. It will be used to
-  compute the variable ``Python2_NumPy_INCLUDE_DIRS``.
-
-.. note::
-
-  All paths must be absolute. Any artifact specified with a relative path
-  will be ignored.
-
-.. note::
-
-  When an artifact is specified, all ``HINTS`` will be ignored and no search
-  will be performed for this artifact.
-
-  If more than one artifact is specified, it is the user's responsability to
-  ensure the consistency of the various artifacts.
-
-By default, this module supports multiple calls in different directories of a
-project with different version/component requirements while providing correct
-and consistent results for each call. To support this behavior, ``CMake`` cache
-is not used in the traditional way which can be problematic for interactive
-specification. So, to enable also interactive specification, module behavior
-can be controled with the following variable:
-
-``Python2_ARTIFACTS_INTERACTIVE``
-  Selects the behavior of the module. This is a boolean variable:
-
-  * If set to ``TRUE``: Create CMake cache entries for the above artifact
-    specification variables so that users can edit them interactively.
-    This disables support for multiple version/component requirements.
-  * If set to ``FALSE`` or undefined: Enable multiple version/component
-    requirements.
-
-Commands
-^^^^^^^^
-
-This module defines the command ``Python2_add_library`` (when
-:prop_gbl:`CMAKE_ROLE` is ``PROJECT``), which has the same semantics as
-:command:`add_library` and adds a dependency to target ``Python2::Python`` or,
-when library type is ``MODULE``, to target ``Python2::Module`` and takes care
-of Python module naming rules::
-
-  Python2_add_library (<name> [STATIC | SHARED | MODULE]
-                       <source1> [<source2> ...])
-
-If library type is not specified, ``MODULE`` is assumed.
-#]=======================================================================]
-
-
-set (_PYTHON_PREFIX Python2)
-
-set (_Python2_REQUIRED_VERSION_MAJOR 2)
-
-include (${CMAKE_CURRENT_LIST_DIR}/FindPython/Support.cmake)
-
-if (COMMAND __Python2_add_library)
-  macro (Python2_add_library)
-    __Python2_add_library (Python2 ${ARGV})
-  endmacro()
-endif()
-
-unset (_PYTHON_PREFIX)
diff --git a/share/cmake-3.18/Modules/FindPython3.cmake b/share/cmake-3.18/Modules/FindPython3.cmake
deleted file mode 100644
index f142c07..0000000
--- a/share/cmake-3.18/Modules/FindPython3.cmake
+++ /dev/null
@@ -1,397 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindPython3
------------
-
-Find Python 3 interpreter, compiler and development environment (include
-directories and libraries).
-
-The following components are supported:
-
-* ``Interpreter``: search for Python 3 interpreter
-* ``Compiler``: search for Python 3 compiler. Only offered by IronPython.
-* ``Development``: search for development artifacts (include directories and
-  libraries). This component includes two sub-components which can be specified
-  independently:
-
-  * ``Development.Module``: search for artifacts for Python 3 module
-    developments.
-  * ``Development.Embed``: search for artifacts for Python 3 embedding
-    developments.
-
-* ``NumPy``: search for NumPy include directories.
-
-If no ``COMPONENTS`` are specified, ``Interpreter`` is assumed.
-
-If component ``Development`` is specified, it implies sub-components
-``Development.Module`` and ``Development.Embed``.
-
-To ensure consistent versions between components ``Interpreter``, ``Compiler``,
-``Development`` (or one of its sub-components) and ``NumPy``, specify all
-components at the same time::
-
-  find_package (Python3 COMPONENTS Interpreter Development)
-
-This module looks only for version 3 of Python. This module can be used
-concurrently with :module:`FindPython2` module to use both Python versions.
-
-The :module:`FindPython` module can be used if Python version does not matter
-for you.
-
-.. note::
-
-  If components ``Interpreter`` and ``Development`` (or one of its
-  sub-components) are both specified, this module search only for interpreter
-  with same platform architecture as the one defined by ``CMake``
-  configuration. This contraint does not apply if only ``Interpreter``
-  component is specified.
-
-Imported Targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :ref:`Imported Targets <Imported Targets>`
-(when :prop_gbl:`CMAKE_ROLE` is ``PROJECT``):
-
-``Python3::Interpreter``
-  Python 3 interpreter. Target defined if component ``Interpreter`` is found.
-``Python3::Compiler``
-  Python 3 compiler. Target defined if component ``Compiler`` is found.
-``Python3::Module``
-  Python 3 library for Python module. Target defined if component
-  ``Development.Module`` is found.
-``Python3::Python``
-  Python 3 library for Python embedding. Target defined if component
-  ``Development.Embed`` is found.
-``Python3::NumPy``
-  NumPy library for Python 3. Target defined if component ``NumPy`` is found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project
-(see :ref:`Standard Variable Names <CMake Developer Standard Variable Names>`):
-
-``Python3_FOUND``
-  System has the Python 3 requested components.
-``Python3_Interpreter_FOUND``
-  System has the Python 3 interpreter.
-``Python3_EXECUTABLE``
-  Path to the Python 3 interpreter.
-``Python3_INTERPRETER_ID``
-  A short string unique to the interpreter. Possible values include:
-    * Python
-    * ActivePython
-    * Anaconda
-    * Canopy
-    * IronPython
-    * PyPy
-``Python3_STDLIB``
-  Standard platform independent installation directory.
-
-  Information returned by
-  ``distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=True)``
-  or else ``sysconfig.get_path('stdlib')``.
-``Python3_STDARCH``
-  Standard platform dependent installation directory.
-
-  Information returned by
-  ``distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=True)``
-  or else ``sysconfig.get_path('platstdlib')``.
-``Python3_SITELIB``
-  Third-party platform independent installation directory.
-
-  Information returned by
-  ``distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=False)``
-  or else ``sysconfig.get_path('purelib')``.
-``Python3_SITEARCH``
-  Third-party platform dependent installation directory.
-
-  Information returned by
-  ``distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=False)``
-  or else ``sysconfig.get_path('platlib')``.
-``Python3_SOABI``
-  Extension suffix for modules.
-
-  Information returned by
-  ``distutils.sysconfig.get_config_var('SOABI')`` or computed from
-  ``distutils.sysconfig.get_config_var('EXT_SUFFIX')`` or
-  ``python3-config --extension-suffix``. If package ``distutils.sysconfig`` is
-  not available, ``sysconfig.get_config_var('SOABI')`` or
-  ``sysconfig.get_config_var('EXT_SUFFIX')`` are used.
-``Python3_Compiler_FOUND``
-  System has the Python 3 compiler.
-``Python3_COMPILER``
-  Path to the Python 3 compiler. Only offered by IronPython.
-``Python3_COMPILER_ID``
-  A short string unique to the compiler. Possible values include:
-    * IronPython
-``Python3_DOTNET_LAUNCHER``
-  The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
-``Python3_Development_FOUND``
-  System has the Python 3 development artifacts.
-``Python3_Development.Module_FOUND``
-  System has the Python 3 development artifacts for Python module.
-``Python3_Development.Embed_FOUND``
-  System has the Python 3 development artifacts for Python embedding.
-``Python3_INCLUDE_DIRS``
-  The Python 3 include directories.
-``Python3_LIBRARIES``
-  The Python 3 libraries.
-``Python3_LIBRARY_DIRS``
-  The Python 3 library directories.
-``Python3_RUNTIME_LIBRARY_DIRS``
-  The Python 3 runtime library directories.
-``Python3_VERSION``
-  Python 3 version.
-``Python3_VERSION_MAJOR``
-  Python 3 major version.
-``Python3_VERSION_MINOR``
-  Python 3 minor version.
-``Python3_VERSION_PATCH``
-  Python 3 patch version.
-``Python3_PyPy_VERSION``
-  Python 3 PyPy version.
-``Python3_NumPy_FOUND``
-  System has the NumPy.
-``Python3_NumPy_INCLUDE_DIRS``
-  The NumPy include directries.
-``Python3_NumPy_VERSION``
-  The NumPy version.
-
-Hints
-^^^^^
-
-``Python3_ROOT_DIR``
-  Define the root directory of a Python 3 installation.
-
-``Python3_USE_STATIC_LIBS``
-  * If not defined, search for shared libraries and static libraries in that
-    order.
-  * If set to TRUE, search **only** for static libraries.
-  * If set to FALSE, search **only** for shared libraries.
-
-``Python3_FIND_ABI``
-  This variable defines which ABIs, as defined in
-  `PEP 3149 <https://www.python.org/dev/peps/pep-3149/>`_, should be searched.
-
-  .. note::
-
-    If ``Python3_FIND_ABI`` is not defined, any ABI will be searched.
-
-  The ``Python3_FIND_ABI`` variable is a 3-tuple specifying, in that order,
-  ``pydebug`` (``d``), ``pymalloc`` (``m``) and ``unicode`` (``u``) flags.
-  Each element can be set to one of the following:
-
-  * ``ON``: Corresponding flag is selected.
-  * ``OFF``: Corresponding flag is not selected.
-  * ``ANY``: The two posibilties (``ON`` and ``OFF``) will be searched.
-
-  From this 3-tuple, various ABIs will be searched starting from the most
-  specialized to the most general. Moreover, ``debug`` versions will be
-  searched **after** ``non-debug`` ones.
-
-  For example, if we have::
-
-    set (Python3_FIND_ABI "ON" "ANY" "ANY")
-
-  The following flags combinations will be appended, in that order, to the
-  artifact names: ``dmu``, ``dm``, ``du``, and ``d``.
-
-  And to search any possible ABIs::
-
-    set (Python3_FIND_ABI "ANY" "ANY" "ANY")
-
-  The following combinations, in that order, will be used: ``mu``, ``m``,
-  ``u``, ``<empty>``, ``dmu``, ``dm``, ``du`` and ``d``.
-
-  .. note::
-
-    This hint is useful only on ``POSIX`` systems. So, on ``Windows`` systems,
-    when ``Python3_FIND_ABI`` is defined, ``Python`` distributions from
-    `python.org <https://www.python.org/>`_ will be found only if value for
-    each flag is ``OFF`` or ``ANY``.
-
-``Python3_FIND_STRATEGY``
-  This variable defines how lookup will be done.
-  The ``Python3_FIND_STRATEGY`` variable can be set to one of the following:
-
-  * ``VERSION``: Try to find the most recent version in all specified
-    locations.
-    This is the default if policy :policy:`CMP0094` is undefined or set to
-    ``OLD``.
-  * ``LOCATION``: Stops lookup as soon as a version satisfying version
-    constraints is founded.
-    This is the default if policy :policy:`CMP0094` is set to ``NEW``.
-
-``Python3_FIND_REGISTRY``
-  On Windows the ``Python3_FIND_REGISTRY`` variable determine the order
-  of preference between registry and environment variables.
-  The ``Python3_FIND_REGISTRY`` variable can be set to one of the following:
-
-  * ``FIRST``: Try to use registry before environment variables.
-    This is the default.
-  * ``LAST``: Try to use registry after environment variables.
-  * ``NEVER``: Never try to use registry.
-
-``Python3_FIND_FRAMEWORK``
-  On macOS the ``Python3_FIND_FRAMEWORK`` variable determine the order of
-  preference between Apple-style and unix-style package components.
-  This variable can take same values as :variable:`CMAKE_FIND_FRAMEWORK`
-  variable.
-
-  .. note::
-
-    Value ``ONLY`` is not supported so ``FIRST`` will be used instead.
-
-  If ``Python3_FIND_FRAMEWORK`` is not defined, :variable:`CMAKE_FIND_FRAMEWORK`
-  variable will be used, if any.
-
-``Python3_FIND_VIRTUALENV``
-  This variable defines the handling of virtual environments managed by
-  ``virtualenv`` or ``conda``. It is meaningful only when a virtual environment
-  is active (i.e. the ``activate`` script has been evaluated). In this case, it
-  takes precedence over ``Python3_FIND_REGISTRY`` and ``CMAKE_FIND_FRAMEWORK``
-  variables.  The ``Python3_FIND_VIRTUALENV`` variable can be set to one of the
-  following:
-
-  * ``FIRST``: The virtual environment is used before any other standard
-    paths to look-up for the interpreter. This is the default.
-  * ``ONLY``: Only the virtual environment is used to look-up for the
-    interpreter.
-  * ``STANDARD``: The virtual environment is not used to look-up for the
-    interpreter but environment variable ``PATH`` is always considered.
-    In this case, variable ``Python3_FIND_REGISTRY`` (Windows) or
-    ``CMAKE_FIND_FRAMEWORK`` (macOS) can be set with value ``LAST`` or
-    ``NEVER`` to select preferably the interpreter from the virtual
-    environment.
-
-  .. note::
-
-    If the component ``Development`` is requested, it is **strongly**
-    recommended to also include the component ``Interpreter`` to get expected
-    result.
-
-``Python3_FIND_IMPLEMENTATIONS``
-  This variable defines, in an ordered list, the different implementations
-  which will be searched. The ``Python3_FIND_IMPLEMENTATIONS`` variable can
-  hold the following values:
-
-  * ``CPython``: this is the standard implementation. Various products, like
-    ``Anaconda`` or ``ActivePython``, rely on this implementation.
-  * ``IronPython``: This implementation use the ``CSharp`` language for
-    ``.NET Framework`` on top of the `Dynamic Language Runtime` (``DLR``).
-    See `IronPython <http://ironpython.net>`_.
-  * ``PyPy``: This implementation use ``RPython`` language and
-    ``RPython translation toolchain`` to produce the python interpreter.
-    See `PyPy <https://www.pypy.org>`_.
-
-  The default value is:
-
-  * Windows platform: ``CPython``, ``IronPython``
-  * Other platforms: ``CPython``
-
-  .. note::
-
-    This hint has the lowest priority of all hints, so even if, for example,
-    you specify ``IronPython`` first and ``CPython`` in second, a python
-    product based on ``CPython`` can be selected because, for example with
-    ``Python3_FIND_STRATEGY=LOCATION``, each location will be search first for
-    ``IronPython`` and second for ``CPython``.
-
-  .. note::
-
-    When ``IronPython`` is specified, on platforms other than ``Windows``, the
-    ``.Net`` interpreter (i.e. ``mono`` command) is expected to be available
-    through the ``PATH`` variable.
-
-Artifacts Specification
-^^^^^^^^^^^^^^^^^^^^^^^
-
-To solve special cases, it is possible to specify directly the artifacts by
-setting the following variables:
-
-``Python3_EXECUTABLE``
-  The path to the interpreter.
-
-``Python3_COMPILER``
-  The path to the compiler.
-
-``Python3_DOTNET_LAUNCHER``
-  The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
-
-``Python3_LIBRARY``
-  The path to the library. It will be used to compute the
-  variables ``Python3_LIBRARIES``, ``Python3_LIBRAY_DIRS`` and
-  ``Python3_RUNTIME_LIBRARY_DIRS``.
-
-``Python3_INCLUDE_DIR``
-  The path to the directory of the ``Python`` headers. It will be used to
-  compute the variable ``Python3_INCLUDE_DIRS``.
-
-``Python3_NumPy_INCLUDE_DIR``
-  The path to the directory of the ``NumPy`` headers. It will be used to
-  compute the variable ``Python3_NumPy_INCLUDE_DIRS``.
-
-.. note::
-
-  All paths must be absolute. Any artifact specified with a relative path
-  will be ignored.
-
-.. note::
-
-  When an artifact is specified, all ``HINTS`` will be ignored and no search
-  will be performed for this artifact.
-
-  If more than one artifact is specified, it is the user's responsability to
-  ensure the consistency of the various artifacts.
-
-By default, this module supports multiple calls in different directories of a
-project with different version/component requirements while providing correct
-and consistent results for each call. To support this behavior, ``CMake`` cache
-is not used in the traditional way which can be problematic for interactive
-specification. So, to enable also interactive specification, module behavior
-can be controled with the following variable:
-
-``Python3_ARTIFACTS_INTERACTIVE``
-  Selects the behavior of the module. This is a boolean variable:
-
-  * If set to ``TRUE``: Create CMake cache entries for the above artifact
-    specification variables so that users can edit them interactively.
-    This disables support for multiple version/component requirements.
-  * If set to ``FALSE`` or undefined: Enable multiple version/component
-    requirements.
-
-Commands
-^^^^^^^^
-
-This module defines the command ``Python3_add_library`` (when
-:prop_gbl:`CMAKE_ROLE` is ``PROJECT``), which has the same semantics as
-:command:`add_library` and adds a dependency to target ``Python3::Python`` or,
-when library type is ``MODULE``, to target ``Python3::Module`` and takes care
-of Python module naming rules::
-
-  Python3_add_library (<name> [STATIC | SHARED | MODULE [WITH_SOABI]]
-                       <source1> [<source2> ...])
-
-If the library type is not specified, ``MODULE`` is assumed.
-
-For ``MODULE`` library type, if option ``WITH_SOABI`` is specified, the
-module suffix will include the ``Python3_SOABI`` value, if any.
-#]=======================================================================]
-
-
-set (_PYTHON_PREFIX Python3)
-
-set (_Python3_REQUIRED_VERSION_MAJOR 3)
-
-include (${CMAKE_CURRENT_LIST_DIR}/FindPython/Support.cmake)
-
-if (COMMAND __Python3_add_library)
-  macro (Python3_add_library)
-    __Python3_add_library (Python3 ${ARGV})
-  endmacro()
-endif()
-
-unset (_PYTHON_PREFIX)
diff --git a/share/cmake-3.18/Modules/FindPythonInterp.cmake b/share/cmake-3.18/Modules/FindPythonInterp.cmake
deleted file mode 100644
index 1e01a99..0000000
--- a/share/cmake-3.18/Modules/FindPythonInterp.cmake
+++ /dev/null
@@ -1,171 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindPythonInterp
-----------------
-
-.. deprecated:: 3.12
-
-  Use :module:`FindPython3`, :module:`FindPython2` or :module:`FindPython` instead.
-
-Find python interpreter
-
-This module finds if Python interpreter is installed and determines
-where the executables are.  This code sets the following variables:
-
-::
-
-  PYTHONINTERP_FOUND         - Was the Python executable found
-  PYTHON_EXECUTABLE          - path to the Python interpreter
-
-
-
-::
-
-  PYTHON_VERSION_STRING      - Python version found e.g. 2.5.2
-  PYTHON_VERSION_MAJOR       - Python major version found e.g. 2
-  PYTHON_VERSION_MINOR       - Python minor version found e.g. 5
-  PYTHON_VERSION_PATCH       - Python patch version found e.g. 2
-
-
-
-The Python_ADDITIONAL_VERSIONS variable can be used to specify a list
-of version numbers that should be taken into account when searching
-for Python.  You need to set this variable before calling
-find_package(PythonInterp).
-
-If calling both ``find_package(PythonInterp)`` and
-``find_package(PythonLibs)``, call ``find_package(PythonInterp)`` first to
-get the currently active Python version by default with a consistent version
-of PYTHON_LIBRARIES.
-
-.. note::
-
-  A call to ``find_package(PythonInterp ${V})`` for python version ``V``
-  may find a ``python`` executable with no version suffix.  In this case
-  no attempt is made to avoid python executables from other versions.
-  Use :module:`FindPython3`, :module:`FindPython2` or :module:`FindPython`
-  instead.
-
-#]=======================================================================]
-
-unset(_Python_NAMES)
-
-set(_PYTHON1_VERSIONS 1.6 1.5)
-set(_PYTHON2_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
-set(_PYTHON3_VERSIONS 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
-
-if(PythonInterp_FIND_VERSION)
-    if(PythonInterp_FIND_VERSION_COUNT GREATER 1)
-        set(_PYTHON_FIND_MAJ_MIN "${PythonInterp_FIND_VERSION_MAJOR}.${PythonInterp_FIND_VERSION_MINOR}")
-        list(APPEND _Python_NAMES
-             python${_PYTHON_FIND_MAJ_MIN}
-             python${PythonInterp_FIND_VERSION_MAJOR})
-        unset(_PYTHON_FIND_OTHER_VERSIONS)
-        if(NOT PythonInterp_FIND_VERSION_EXACT)
-            foreach(_PYTHON_V ${_PYTHON${PythonInterp_FIND_VERSION_MAJOR}_VERSIONS})
-                if(NOT _PYTHON_V VERSION_LESS _PYTHON_FIND_MAJ_MIN)
-                    list(APPEND _PYTHON_FIND_OTHER_VERSIONS ${_PYTHON_V})
-                endif()
-             endforeach()
-        endif()
-        unset(_PYTHON_FIND_MAJ_MIN)
-    else()
-        list(APPEND _Python_NAMES python${PythonInterp_FIND_VERSION_MAJOR})
-        set(_PYTHON_FIND_OTHER_VERSIONS ${_PYTHON${PythonInterp_FIND_VERSION_MAJOR}_VERSIONS})
-    endif()
-else()
-    set(_PYTHON_FIND_OTHER_VERSIONS ${_PYTHON3_VERSIONS} ${_PYTHON2_VERSIONS} ${_PYTHON1_VERSIONS})
-endif()
-find_program(PYTHON_EXECUTABLE NAMES ${_Python_NAMES})
-
-# Set up the versions we know about, in the order we will search. Always add
-# the user supplied additional versions to the front.
-set(_Python_VERSIONS ${Python_ADDITIONAL_VERSIONS})
-# If FindPythonInterp has already found the major and minor version,
-# insert that version next to get consistent versions of the interpreter and
-# library.
-if(DEFINED PYTHONLIBS_VERSION_STRING)
-  string(REPLACE "." ";" _PYTHONLIBS_VERSION "${PYTHONLIBS_VERSION_STRING}")
-  list(GET _PYTHONLIBS_VERSION 0 _PYTHONLIBS_VERSION_MAJOR)
-  list(GET _PYTHONLIBS_VERSION 1 _PYTHONLIBS_VERSION_MINOR)
-  list(APPEND _Python_VERSIONS ${_PYTHONLIBS_VERSION_MAJOR}.${_PYTHONLIBS_VERSION_MINOR})
-endif()
-# Search for the current active python version first
-list(APPEND _Python_VERSIONS ";")
-list(APPEND _Python_VERSIONS ${_PYTHON_FIND_OTHER_VERSIONS})
-
-unset(_PYTHON_FIND_OTHER_VERSIONS)
-unset(_PYTHON1_VERSIONS)
-unset(_PYTHON2_VERSIONS)
-unset(_PYTHON3_VERSIONS)
-
-# Search for newest python version if python executable isn't found
-if(NOT PYTHON_EXECUTABLE)
-    foreach(_CURRENT_VERSION IN LISTS _Python_VERSIONS)
-      set(_Python_NAMES python${_CURRENT_VERSION})
-      if(CMAKE_HOST_WIN32)
-        list(APPEND _Python_NAMES python)
-      endif()
-      find_program(PYTHON_EXECUTABLE
-        NAMES ${_Python_NAMES}
-        PATHS
-            [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]
-            [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-32\\InstallPath]
-            [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-64\\InstallPath]
-            [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]
-            [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-32\\InstallPath]
-            [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-64\\InstallPath]
-        )
-    endforeach()
-endif()
-
-# determine python version string
-if(PYTHON_EXECUTABLE)
-    execute_process(COMMAND "${PYTHON_EXECUTABLE}" -c
-                            "import sys; sys.stdout.write(';'.join([str(x) for x in sys.version_info[:3]]))"
-                    OUTPUT_VARIABLE _VERSION
-                    RESULT_VARIABLE _PYTHON_VERSION_RESULT
-                    ERROR_QUIET)
-    if(NOT _PYTHON_VERSION_RESULT)
-        string(REPLACE ";" "." PYTHON_VERSION_STRING "${_VERSION}")
-        list(GET _VERSION 0 PYTHON_VERSION_MAJOR)
-        list(GET _VERSION 1 PYTHON_VERSION_MINOR)
-        list(GET _VERSION 2 PYTHON_VERSION_PATCH)
-        if(PYTHON_VERSION_PATCH EQUAL 0)
-            # it's called "Python 2.7", not "2.7.0"
-            string(REGEX REPLACE "\\.0$" "" PYTHON_VERSION_STRING "${PYTHON_VERSION_STRING}")
-        endif()
-    else()
-        # sys.version predates sys.version_info, so use that
-        # sys.version was first documented for Python 1.5, so assume version 1.4
-        # if retrieving sys.version fails.
-        execute_process(COMMAND "${PYTHON_EXECUTABLE}" -c "try: import sys; sys.stdout.write(sys.version)\nexcept: sys.stdout.write(\"1.4.0\")"
-                        OUTPUT_VARIABLE _VERSION
-                        RESULT_VARIABLE _PYTHON_VERSION_RESULT
-                        ERROR_QUIET)
-        if(NOT _PYTHON_VERSION_RESULT)
-            string(REGEX REPLACE " .*" "" PYTHON_VERSION_STRING "${_VERSION}")
-            string(REGEX REPLACE "^([0-9]+)\\.[0-9]+.*" "\\1" PYTHON_VERSION_MAJOR "${PYTHON_VERSION_STRING}")
-            string(REGEX REPLACE "^[0-9]+\\.([0-9])+.*" "\\1" PYTHON_VERSION_MINOR "${PYTHON_VERSION_STRING}")
-            if(PYTHON_VERSION_STRING MATCHES "^[0-9]+\\.[0-9]+\\.([0-9]+)")
-                set(PYTHON_VERSION_PATCH "${CMAKE_MATCH_1}")
-            else()
-                set(PYTHON_VERSION_PATCH "0")
-            endif()
-        else()
-            unset(PYTHON_VERSION_STRING)
-            unset(PYTHON_VERSION_MAJOR)
-            unset(PYTHON_VERSION_MINOR)
-            unset(PYTHON_VERSION_PATCH)
-        endif()
-    endif()
-    unset(_PYTHON_VERSION_RESULT)
-    unset(_VERSION)
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonInterp REQUIRED_VARS PYTHON_EXECUTABLE VERSION_VAR PYTHON_VERSION_STRING)
-
-mark_as_advanced(PYTHON_EXECUTABLE)
diff --git a/share/cmake-3.18/Modules/FindPythonLibs.cmake b/share/cmake-3.18/Modules/FindPythonLibs.cmake
deleted file mode 100644
index d3ec7be..0000000
--- a/share/cmake-3.18/Modules/FindPythonLibs.cmake
+++ /dev/null
@@ -1,399 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindPythonLibs
---------------
-
-.. deprecated:: 3.12
-
-  Use :module:`FindPython3`, :module:`FindPython2` or :module:`FindPython` instead.
-
-Find python libraries
-
-This module finds if Python is installed and determines where the
-include files and libraries are.  It also determines what the name of
-the library is.  This code sets the following variables:
-
-::
-
-  PYTHONLIBS_FOUND           - have the Python libs been found
-  PYTHON_LIBRARIES           - path to the python library
-  PYTHON_INCLUDE_PATH        - path to where Python.h is found (deprecated)
-  PYTHON_INCLUDE_DIRS        - path to where Python.h is found
-  PYTHON_DEBUG_LIBRARIES     - path to the debug library (deprecated)
-  PYTHONLIBS_VERSION_STRING  - version of the Python libs found (since CMake 2.8.8)
-
-
-
-The Python_ADDITIONAL_VERSIONS variable can be used to specify a list
-of version numbers that should be taken into account when searching
-for Python.  You need to set this variable before calling
-find_package(PythonLibs).
-
-If you'd like to specify the installation of Python to use, you should
-modify the following cache variables:
-
-::
-
-  PYTHON_LIBRARY             - path to the python library
-  PYTHON_INCLUDE_DIR         - path to where Python.h is found
-
-If calling both ``find_package(PythonInterp)`` and
-``find_package(PythonLibs)``, call ``find_package(PythonInterp)`` first to
-get the currently active Python version by default with a consistent version
-of PYTHON_LIBRARIES.
-#]=======================================================================]
-
-# Use the executable's path as a hint
-set(_Python_LIBRARY_PATH_HINT)
-if(IS_ABSOLUTE "${PYTHON_EXECUTABLE}")
-  if(WIN32)
-    get_filename_component(_Python_PREFIX "${PYTHON_EXECUTABLE}" PATH)
-    if(_Python_PREFIX)
-      set(_Python_LIBRARY_PATH_HINT ${_Python_PREFIX}/libs)
-    endif()
-    unset(_Python_PREFIX)
-  else()
-    get_filename_component(_Python_PREFIX "${PYTHON_EXECUTABLE}" PATH)
-    get_filename_component(_Python_PREFIX "${_Python_PREFIX}" PATH)
-    if(_Python_PREFIX)
-      set(_Python_LIBRARY_PATH_HINT ${_Python_PREFIX}/lib)
-    endif()
-    unset(_Python_PREFIX)
-  endif()
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/CMakeFindFrameworks.cmake)
-# Search for the python framework on Apple.
-CMAKE_FIND_FRAMEWORKS(Python)
-
-# Save CMAKE_FIND_FRAMEWORK
-if(DEFINED CMAKE_FIND_FRAMEWORK)
-  set(_PythonLibs_CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK})
-else()
-  unset(_PythonLibs_CMAKE_FIND_FRAMEWORK)
-endif()
-# To avoid picking up the system Python.h pre-maturely.
-set(CMAKE_FIND_FRAMEWORK LAST)
-
-set(_PYTHON1_VERSIONS 1.6 1.5)
-set(_PYTHON2_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
-set(_PYTHON3_VERSIONS 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
-
-if(PythonLibs_FIND_VERSION)
-    if(PythonLibs_FIND_VERSION_COUNT GREATER 1)
-        set(_PYTHON_FIND_MAJ_MIN "${PythonLibs_FIND_VERSION_MAJOR}.${PythonLibs_FIND_VERSION_MINOR}")
-        unset(_PYTHON_FIND_OTHER_VERSIONS)
-        if(PythonLibs_FIND_VERSION_EXACT)
-            if(_PYTHON_FIND_MAJ_MIN STREQUAL PythonLibs_FIND_VERSION)
-                set(_PYTHON_FIND_OTHER_VERSIONS "${PythonLibs_FIND_VERSION}")
-            else()
-                set(_PYTHON_FIND_OTHER_VERSIONS "${PythonLibs_FIND_VERSION}" "${_PYTHON_FIND_MAJ_MIN}")
-            endif()
-        else()
-            foreach(_PYTHON_V ${_PYTHON${PythonLibs_FIND_VERSION_MAJOR}_VERSIONS})
-                if(NOT _PYTHON_V VERSION_LESS _PYTHON_FIND_MAJ_MIN)
-                    list(APPEND _PYTHON_FIND_OTHER_VERSIONS ${_PYTHON_V})
-                endif()
-             endforeach()
-        endif()
-        unset(_PYTHON_FIND_MAJ_MIN)
-    else()
-        set(_PYTHON_FIND_OTHER_VERSIONS ${_PYTHON${PythonLibs_FIND_VERSION_MAJOR}_VERSIONS})
-    endif()
-else()
-    set(_PYTHON_FIND_OTHER_VERSIONS ${_PYTHON3_VERSIONS} ${_PYTHON2_VERSIONS} ${_PYTHON1_VERSIONS})
-endif()
-
-# Set up the versions we know about, in the order we will search. Always add
-# the user supplied additional versions to the front.
-# If FindPythonInterp has already found the major and minor version,
-# insert that version between the user supplied versions and the stock
-# version list.
-set(_Python_VERSIONS ${Python_ADDITIONAL_VERSIONS})
-if(DEFINED PYTHON_VERSION_MAJOR AND DEFINED PYTHON_VERSION_MINOR)
-  list(APPEND _Python_VERSIONS ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR})
-endif()
-list(APPEND _Python_VERSIONS ${_PYTHON_FIND_OTHER_VERSIONS})
-
-unset(_PYTHON_FIND_OTHER_VERSIONS)
-unset(_PYTHON1_VERSIONS)
-unset(_PYTHON2_VERSIONS)
-unset(_PYTHON3_VERSIONS)
-
-# Python distribution: define which architectures can be used
-if (CMAKE_SIZEOF_VOID_P)
-  # In this case, search only for 64bit or 32bit
-  math (EXPR _PYTHON_ARCH "${CMAKE_SIZEOF_VOID_P} * 8")
-  set (_PYTHON_ARCH2 _PYTHON_PREFIX_ARCH})
-else()
-  if (PYTHON_EXECUTABLE)
-    # determine interpreter architecture
-    execute_process (COMMAND "${PYTHON_EXECUTABLE}" -c "import sys; print(sys.maxsize > 2**32)"
-                     RESULT_VARIABLE _PYTHON_RESULT
-                     OUTPUT_VARIABLE _PYTHON_IS64BIT
-                     ERROR_VARIABLE _PYTHON_IS64BIT)
-      if (NOT _PYTHON_RESULT)
-        if (_PYTHON_IS64BIT)
-          set (_PYTHON_ARCH 64)
-          set (_PYTHON_ARCH2 64)
-        else()
-          set (_PYTHON_ARCH 32)
-          set (_PYTHON_ARCH2 32)
-        endif()
-      endif()
-  else()
-    # architecture unknown, search for both 64bit and 32bit
-    set (_PYTHON_ARCH 64)
-    set (_PYTHON_ARCH2 32)
-  endif()
-endif()
-
-foreach(_CURRENT_VERSION ${_Python_VERSIONS})
-  string(REPLACE "." "" _CURRENT_VERSION_NO_DOTS ${_CURRENT_VERSION})
-  if(WIN32)
-    find_library(PYTHON_DEBUG_LIBRARY
-      NAMES python${_CURRENT_VERSION_NO_DOTS}_d python
-      NAMES_PER_DIR
-      HINTS ${_Python_LIBRARY_PATH_HINT}
-      PATHS
-      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs/Debug
-      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH}\\InstallPath]/libs/Debug
-      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH2}\\InstallPath]/libs/Debug
-      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs/Debug
-      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH}\\InstallPath]/libs/Debug
-      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH2}\\InstallPath]/libs/Debug
-      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs
-      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH}\\InstallPath]/libs
-      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH2}\\InstallPath]/libs
-      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs
-      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH}\\InstallPath]/libs
-      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH2}\\InstallPath]/libs
-      )
-  endif()
-
-  set(PYTHON_FRAMEWORK_LIBRARIES)
-  if(Python_FRAMEWORKS AND NOT PYTHON_LIBRARY)
-    foreach(dir ${Python_FRAMEWORKS})
-      list(APPEND PYTHON_FRAMEWORK_LIBRARIES
-           ${dir}/Versions/${_CURRENT_VERSION}/lib)
-    endforeach()
-  endif()
-  find_library(PYTHON_LIBRARY
-    NAMES
-      python${_CURRENT_VERSION_NO_DOTS}
-      python${_CURRENT_VERSION}mu
-      python${_CURRENT_VERSION}m
-      python${_CURRENT_VERSION}u
-      python${_CURRENT_VERSION}
-    NAMES_PER_DIR
-    HINTS
-      ${_Python_LIBRARY_PATH_HINT}
-    PATHS
-      ${PYTHON_FRAMEWORK_LIBRARIES}
-      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs
-      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH}\\InstallPath]/libs
-      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH2}\\InstallPath]/libs
-      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs
-      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH}\\InstallPath]/libs
-      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH2}\\InstallPath]/libs
-  )
-  # Look for the static library in the Python config directory
-  find_library(PYTHON_LIBRARY
-    NAMES python${_CURRENT_VERSION_NO_DOTS} python${_CURRENT_VERSION}
-    NAMES_PER_DIR
-    # This is where the static library is usually located
-    PATH_SUFFIXES python${_CURRENT_VERSION}/config
-  )
-
-  # Don't search for include dir until library location is known
-  if(PYTHON_LIBRARY)
-
-    # Use the library's install prefix as a hint
-    set(_Python_INCLUDE_PATH_HINT)
-    # PYTHON_LIBRARY may contain a list because of SelectLibraryConfigurations
-    # which may have been run previously. If it is the case, the list can be:
-    #   optimized;<FILEPATH_TO_RELEASE_LIBRARY>;debug;<FILEPATH_TO_DEBUG_LIBRARY>
-    foreach(lib ${PYTHON_LIBRARY} ${PYTHON_DEBUG_LIBRARY})
-      if(IS_ABSOLUTE "${lib}")
-        get_filename_component(_Python_PREFIX "${lib}" PATH)
-        get_filename_component(_Python_PREFIX "${_Python_PREFIX}" PATH)
-        if(_Python_PREFIX)
-          list(APPEND _Python_INCLUDE_PATH_HINT ${_Python_PREFIX}/include)
-        endif()
-        unset(_Python_PREFIX)
-      endif()
-    endforeach()
-
-    # Add framework directories to the search paths
-    set(PYTHON_FRAMEWORK_INCLUDES)
-    if(Python_FRAMEWORKS AND NOT PYTHON_INCLUDE_DIR)
-      foreach(dir ${Python_FRAMEWORKS})
-        list(APPEND PYTHON_FRAMEWORK_INCLUDES
-          ${dir}/Versions/${_CURRENT_VERSION}/include)
-      endforeach()
-    endif()
-
-    find_path(PYTHON_INCLUDE_DIR
-      NAMES Python.h
-      HINTS
-        ${_Python_INCLUDE_PATH_HINT}
-      PATHS
-        ${PYTHON_FRAMEWORK_INCLUDES}
-        [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/include
-        [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH}\\InstallPath]/include
-        [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH2}\\InstallPath]/include
-        [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/include
-        [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH}\\InstallPath]/include
-        [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH2}\\InstallPath]/include
-      PATH_SUFFIXES
-        python${_CURRENT_VERSION}mu
-        python${_CURRENT_VERSION}m
-        python${_CURRENT_VERSION}u
-        python${_CURRENT_VERSION}
-    )
-  endif()
-
-  # For backward compatibility, set PYTHON_INCLUDE_PATH.
-  set(PYTHON_INCLUDE_PATH "${PYTHON_INCLUDE_DIR}")
-
-  if(PYTHON_INCLUDE_DIR AND EXISTS "${PYTHON_INCLUDE_DIR}/patchlevel.h")
-    file(STRINGS "${PYTHON_INCLUDE_DIR}/patchlevel.h" python_version_str
-         REGEX "^#define[ \t]+PY_VERSION[ \t]+\"[^\"]+\"")
-    string(REGEX REPLACE "^#define[ \t]+PY_VERSION[ \t]+\"([^\"]+)\".*" "\\1"
-                         PYTHONLIBS_VERSION_STRING "${python_version_str}")
-    unset(python_version_str)
-  endif()
-
-  if(PYTHON_LIBRARY AND PYTHON_INCLUDE_DIR)
-    break()
-  endif()
-endforeach()
-
-unset(_Python_INCLUDE_PATH_HINT)
-unset(_Python_LIBRARY_PATH_HINT)
-
-mark_as_advanced(
-  PYTHON_DEBUG_LIBRARY
-  PYTHON_LIBRARY
-  PYTHON_INCLUDE_DIR
-)
-
-# We use PYTHON_INCLUDE_DIR, PYTHON_LIBRARY and PYTHON_DEBUG_LIBRARY for the
-# cache entries because they are meant to specify the location of a single
-# library. We now set the variables listed by the documentation for this
-# module.
-set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
-set(PYTHON_DEBUG_LIBRARIES "${PYTHON_DEBUG_LIBRARY}")
-
-# These variables have been historically named in this module different from
-# what SELECT_LIBRARY_CONFIGURATIONS() expects.
-set(PYTHON_LIBRARY_DEBUG "${PYTHON_DEBUG_LIBRARY}")
-set(PYTHON_LIBRARY_RELEASE "${PYTHON_LIBRARY}")
-include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-SELECT_LIBRARY_CONFIGURATIONS(PYTHON)
-# SELECT_LIBRARY_CONFIGURATIONS() sets ${PREFIX}_FOUND if it has a library.
-# Unset this, this prefix doesn't match the module prefix, they are different
-# for historical reasons.
-unset(PYTHON_FOUND)
-
-# Restore CMAKE_FIND_FRAMEWORK
-if(DEFINED _PythonLibs_CMAKE_FIND_FRAMEWORK)
-  set(CMAKE_FIND_FRAMEWORK ${_PythonLibs_CMAKE_FIND_FRAMEWORK})
-  unset(_PythonLibs_CMAKE_FIND_FRAMEWORK)
-else()
-  unset(CMAKE_FIND_FRAMEWORK)
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonLibs
-                                  REQUIRED_VARS PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS
-                                  VERSION_VAR PYTHONLIBS_VERSION_STRING)
-
-# PYTHON_ADD_MODULE(<name> src1 src2 ... srcN) is used to build modules for python.
-# PYTHON_WRITE_MODULES_HEADER(<filename>) writes a header file you can include
-# in your sources to initialize the static python modules
-function(PYTHON_ADD_MODULE _NAME )
-  get_property(_TARGET_SUPPORTS_SHARED_LIBS
-    GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS)
-  option(PYTHON_ENABLE_MODULE_${_NAME} "Add module ${_NAME}" TRUE)
-  option(PYTHON_MODULE_${_NAME}_BUILD_SHARED
-    "Add module ${_NAME} shared" ${_TARGET_SUPPORTS_SHARED_LIBS})
-
-  # Mark these options as advanced
-  mark_as_advanced(PYTHON_ENABLE_MODULE_${_NAME}
-    PYTHON_MODULE_${_NAME}_BUILD_SHARED)
-
-  if(PYTHON_ENABLE_MODULE_${_NAME})
-    if(PYTHON_MODULE_${_NAME}_BUILD_SHARED)
-      set(PY_MODULE_TYPE MODULE)
-    else()
-      set(PY_MODULE_TYPE STATIC)
-      set_property(GLOBAL  APPEND  PROPERTY  PY_STATIC_MODULES_LIST ${_NAME})
-    endif()
-
-    set_property(GLOBAL  APPEND  PROPERTY  PY_MODULES_LIST ${_NAME})
-    add_library(${_NAME} ${PY_MODULE_TYPE} ${ARGN})
-#    target_link_libraries(${_NAME} ${PYTHON_LIBRARIES})
-
-    if(PYTHON_MODULE_${_NAME}_BUILD_SHARED)
-      set_target_properties(${_NAME} PROPERTIES PREFIX "${PYTHON_MODULE_PREFIX}")
-      if(WIN32 AND NOT CYGWIN)
-        set_target_properties(${_NAME} PROPERTIES SUFFIX ".pyd")
-      endif()
-    endif()
-
-  endif()
-endfunction()
-
-function(PYTHON_WRITE_MODULES_HEADER _filename)
-
-  get_property(PY_STATIC_MODULES_LIST  GLOBAL  PROPERTY PY_STATIC_MODULES_LIST)
-
-  get_filename_component(_name "${_filename}" NAME)
-  string(REPLACE "." "_" _name "${_name}")
-  string(TOUPPER ${_name} _nameUpper)
-  set(_filename ${CMAKE_CURRENT_BINARY_DIR}/${_filename})
-
-  set(_filenameTmp "${_filename}.in")
-  file(WRITE ${_filenameTmp} "/*Created by cmake, do not edit, changes will be lost*/\n")
-  file(APPEND ${_filenameTmp}
-"#ifndef ${_nameUpper}
-#define ${_nameUpper}
-
-#include <Python.h>
-
-#ifdef __cplusplus
-extern \"C\" {
-#endif /* __cplusplus */
-
-")
-
-  foreach(_currentModule ${PY_STATIC_MODULES_LIST})
-    file(APPEND ${_filenameTmp} "extern void init${PYTHON_MODULE_PREFIX}${_currentModule}(void);\n\n")
-  endforeach()
-
-  file(APPEND ${_filenameTmp}
-"#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-")
-
-
-  foreach(_currentModule ${PY_STATIC_MODULES_LIST})
-    file(APPEND ${_filenameTmp} "int ${_name}_${_currentModule}(void) \n{\n  static char name[]=\"${PYTHON_MODULE_PREFIX}${_currentModule}\"; return PyImport_AppendInittab(name, init${PYTHON_MODULE_PREFIX}${_currentModule});\n}\n\n")
-  endforeach()
-
-  file(APPEND ${_filenameTmp} "void ${_name}_LoadAllPythonModules(void)\n{\n")
-  foreach(_currentModule ${PY_STATIC_MODULES_LIST})
-    file(APPEND ${_filenameTmp} "  ${_name}_${_currentModule}();\n")
-  endforeach()
-  file(APPEND ${_filenameTmp} "}\n\n")
-  file(APPEND ${_filenameTmp} "#ifndef EXCLUDE_LOAD_ALL_FUNCTION\nvoid CMakeLoadAllPythonModules(void)\n{\n  ${_name}_LoadAllPythonModules();\n}\n#endif\n\n#endif\n")
-
-# with configure_file() cmake complains that you may not use a file created using file(WRITE) as input file for configure_file()
-  execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${_filenameTmp}" "${_filename}" OUTPUT_QUIET ERROR_QUIET)
-
-endfunction()
diff --git a/share/cmake-3.18/Modules/FindQt.cmake b/share/cmake-3.18/Modules/FindQt.cmake
deleted file mode 100644
index d6a0662..0000000
--- a/share/cmake-3.18/Modules/FindQt.cmake
+++ /dev/null
@@ -1,188 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindQt
-------
-
-Searches for all installed versions of Qt3 or Qt4.
-
-This module cannot handle Qt5 or any later versions.
-For those, see :manual:`cmake-qt(7)`.
-
-This module exists for the :command:`find_package` command only if
-policy :policy:`CMP0084` is not set to ``NEW``.
-
-This module should only be used if your project can work with multiple
-versions of Qt.  If not, you should just directly use FindQt4 or
-FindQt3.  If multiple versions of Qt are found on the machine, then
-The user must set the option DESIRED_QT_VERSION to the version they
-want to use.  If only one version of qt is found on the machine, then
-the DESIRED_QT_VERSION is set to that version and the matching FindQt3
-or FindQt4 module is included.  Once the user sets DESIRED_QT_VERSION,
-then the FindQt3 or FindQt4 module is included.
-
-::
-
-  QT_REQUIRED if this is set to TRUE then if CMake can
-              not find Qt4 or Qt3 an error is raised
-              and a message is sent to the user.
-
-
-
-::
-
-  DESIRED_QT_VERSION OPTION is created
-  QT4_INSTALLED is set to TRUE if qt4 is found.
-  QT3_INSTALLED is set to TRUE if qt3 is found.
-#]=======================================================================]
-
-if(_findqt_testing)
-  set(_findqt_included TRUE)
-  return()
-endif()
-
-# look for signs of qt3 installations
-file(GLOB GLOB_TEMP_VAR /usr/lib*/qt-3*/bin/qmake /usr/lib*/qt3*/bin/qmake)
-if(GLOB_TEMP_VAR)
-  set(QT3_INSTALLED TRUE)
-endif()
-set(GLOB_TEMP_VAR)
-
-file(GLOB GLOB_TEMP_VAR /usr/local/qt-x11-commercial-3*/bin/qmake)
-if(GLOB_TEMP_VAR)
-  set(QT3_INSTALLED TRUE)
-endif()
-set(GLOB_TEMP_VAR)
-
-file(GLOB GLOB_TEMP_VAR /usr/local/lib/qt3/bin/qmake)
-if(GLOB_TEMP_VAR)
-  set(QT3_INSTALLED TRUE)
-endif()
-set(GLOB_TEMP_VAR)
-
-# look for qt4 installations
-file(GLOB GLOB_TEMP_VAR /usr/local/qt-x11-commercial-4*/bin/qmake)
-if(GLOB_TEMP_VAR)
-  set(QT4_INSTALLED TRUE)
-endif()
-set(GLOB_TEMP_VAR)
-
-file(GLOB GLOB_TEMP_VAR /usr/local/Trolltech/Qt-4*/bin/qmake)
-if(GLOB_TEMP_VAR)
-  set(QT4_INSTALLED TRUE)
-endif()
-set(GLOB_TEMP_VAR)
-
-file(GLOB GLOB_TEMP_VAR /usr/local/lib/qt4/bin/qmake)
-if(GLOB_TEMP_VAR)
-  set(QT4_INSTALLED TRUE)
-endif()
-set(GLOB_TEMP_VAR)
-
-if (Qt_FIND_VERSION)
-  if (Qt_FIND_VERSION MATCHES "^([34])(\\.[0-9]+.*)?$")
-    set(DESIRED_QT_VERSION ${CMAKE_MATCH_1})
-  else ()
-    message(FATAL_ERROR "FindQt was called with invalid version '${Qt_FIND_VERSION}'. Only Qt major versions 3 or 4 are supported. If you do not need to support both Qt3 and Qt4 in your source consider calling find_package(Qt3) or find_package(Qt4) instead of find_package(Qt) instead.")
-  endif ()
-endif ()
-
-# now find qmake
-find_program(QT_QMAKE_EXECUTABLE_FINDQT NAMES qmake PATHS "${QT_SEARCH_PATH}/bin" "$ENV{QTDIR}/bin")
-if(QT_QMAKE_EXECUTABLE_FINDQT)
-  exec_program(${QT_QMAKE_EXECUTABLE_FINDQT} ARGS "-query QT_VERSION"
-    OUTPUT_VARIABLE QTVERSION)
-  if(QTVERSION MATCHES "4")
-    set(QT_QMAKE_EXECUTABLE ${QT_QMAKE_EXECUTABLE_FINDQT} CACHE PATH "Qt4 qmake program.")
-    set(QT4_INSTALLED TRUE)
-  endif()
-  if(QTVERSION MATCHES "Unknown")
-    set(QT3_INSTALLED TRUE)
-  endif()
-endif()
-
-if(QT_QMAKE_EXECUTABLE_FINDQT)
-  exec_program( ${QT_QMAKE_EXECUTABLE_FINDQT}
-    ARGS "-query QT_INSTALL_HEADERS"
-    OUTPUT_VARIABLE qt_headers )
-endif()
-
-find_file( QT4_QGLOBAL_H_FILE qglobal.h
-  "${QT_SEARCH_PATH}/Qt/include"
-  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\4.0.0;InstallDir]/include/Qt"
-  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\4.0.0;InstallDir]/include/Qt"
-  ${qt_headers}/Qt
-  $ENV{QTDIR}/include/Qt
-  /usr/lib/qt/include/Qt
-  /usr/share/qt4/include/Qt
-  /usr/local/include/X11/qt4/Qt
-  C:/Progra~1/qt/include/Qt
-  PATH_SUFFIXES qt/include/Qt include/Qt)
-
-if(QT4_QGLOBAL_H_FILE)
-  set(QT4_INSTALLED TRUE)
-endif()
-
-find_file( QT3_QGLOBAL_H_FILE qglobal.h
-  "${QT_SEARCH_PATH}/Qt/include"
- "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]/include/Qt"
-  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]/include/Qt"
-  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]/include/Qt"
-  C:/Qt/3.3.3Educational/include
-  $ENV{QTDIR}/include
-  /usr/include/qt3/Qt
-  /usr/share/qt3/include
-  /usr/local/include/X11/qt3
-  C:/Progra~1/qt/include
-  PATH_SUFFIXES qt/include include/qt3)
-
-if(QT3_QGLOBAL_H_FILE)
-  set(QT3_INSTALLED TRUE)
-endif()
-
-if(QT3_INSTALLED AND QT4_INSTALLED AND NOT DESIRED_QT_VERSION)
-  # force user to pick if we have both
-  set(DESIRED_QT_VERSION 0 CACHE STRING "Pick a version of Qt to use: 3 or 4")
-else()
-  # if only one found then pick that one
-  if(QT3_INSTALLED AND NOT DESIRED_QT_VERSION EQUAL 4)
-    set(DESIRED_QT_VERSION 3 CACHE STRING "Pick a version of Qt to use: 3 or 4")
-  endif()
-  if(QT4_INSTALLED AND NOT DESIRED_QT_VERSION EQUAL 3)
-    set(DESIRED_QT_VERSION 4 CACHE STRING "Pick a version of Qt to use: 3 or 4")
-  endif()
-endif()
-
-if(DESIRED_QT_VERSION EQUAL 3)
-  set(Qt3_FIND_REQUIRED ${Qt_FIND_REQUIRED})
-  set(Qt3_FIND_QUIETLY  ${Qt_FIND_QUIETLY})
-  include(${CMAKE_CURRENT_LIST_DIR}/FindQt3.cmake)
-endif()
-if(DESIRED_QT_VERSION EQUAL 4)
-  set(Qt4_FIND_REQUIRED ${Qt_FIND_REQUIRED})
-  set(Qt4_FIND_QUIETLY  ${Qt_FIND_QUIETLY})
-  include(${CMAKE_CURRENT_LIST_DIR}/FindQt4.cmake)
-endif()
-
-if(NOT QT3_INSTALLED AND NOT QT4_INSTALLED)
-  if(QT_REQUIRED)
-    message(SEND_ERROR "CMake was unable to find any Qt versions, put qmake in your path, or set QT_QMAKE_EXECUTABLE.")
-  endif()
-else()
-  if(NOT QT_FOUND AND NOT DESIRED_QT_VERSION)
-    if(QT_REQUIRED)
-      message(SEND_ERROR "Multiple versions of Qt found please set DESIRED_QT_VERSION")
-    else()
-      message("Multiple versions of Qt found please set DESIRED_QT_VERSION")
-    endif()
-  endif()
-  if(NOT QT_FOUND AND DESIRED_QT_VERSION)
-    if(QT_REQUIRED)
-      message(FATAL_ERROR "CMake was unable to find Qt version: ${DESIRED_QT_VERSION}. Set advanced values QT_QMAKE_EXECUTABLE and QT${DESIRED_QT_VERSION}_QGLOBAL_H_FILE, if those are set then QT_QT_LIBRARY or QT_LIBRARY_DIR.")
-    else()
-      message( "CMake was unable to find desired Qt version: ${DESIRED_QT_VERSION}. Set advanced values QT_QMAKE_EXECUTABLE and QT${DESIRED_QT_VERSION}_QGLOBAL_H_FILE.")
-    endif()
-  endif()
-endif()
-mark_as_advanced(QT3_QGLOBAL_H_FILE QT4_QGLOBAL_H_FILE QT_QMAKE_EXECUTABLE_FINDQT)
diff --git a/share/cmake-3.18/Modules/FindQt3.cmake b/share/cmake-3.18/Modules/FindQt3.cmake
deleted file mode 100644
index 563ed46..0000000
--- a/share/cmake-3.18/Modules/FindQt3.cmake
+++ /dev/null
@@ -1,296 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindQt3
--------
-
-Locate Qt include paths and libraries
-
-This module defines:
-
-::
-
-  QT_INCLUDE_DIR    - where to find qt.h, etc.
-  QT_LIBRARIES      - the libraries to link against to use Qt.
-  QT_DEFINITIONS    - definitions to use when
-                      compiling code that uses Qt.
-  QT_FOUND          - If false, don't try to use Qt.
-  QT_VERSION_STRING - the version of Qt found
-
-
-
-If you need the multithreaded version of Qt, set QT_MT_REQUIRED to
-TRUE
-
-Also defined, but not for general use are:
-
-::
-
-  QT_MOC_EXECUTABLE, where to find the moc tool.
-  QT_UIC_EXECUTABLE, where to find the uic tool.
-  QT_QT_LIBRARY, where to find the Qt library.
-  QT_QTMAIN_LIBRARY, where to find the qtmain
-   library. This is only required by Qt3 on Windows.
-#]=======================================================================]
-
-# These are around for backwards compatibility
-# they will be set
-#  QT_WRAP_CPP, set true if QT_MOC_EXECUTABLE is found
-#  QT_WRAP_UI set true if QT_UIC_EXECUTABLE is found
-
-# If Qt4 has already been found, fail.
-if(QT4_FOUND)
-  if(Qt3_FIND_REQUIRED)
-    message( FATAL_ERROR "Qt3 and Qt4 cannot be used together in one project.")
-  else()
-    if(NOT Qt3_FIND_QUIETLY)
-      message( STATUS    "Qt3 and Qt4 cannot be used together in one project.")
-    endif()
-    return()
-  endif()
-endif()
-
-
-file(GLOB GLOB_PATHS /usr/lib/qt-3*)
-foreach(GLOB_PATH ${GLOB_PATHS})
-  list(APPEND GLOB_PATHS_BIN "${GLOB_PATH}/bin")
-endforeach()
-find_path(QT_INCLUDE_DIR qt.h
-  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]/include/Qt"
-  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]/include/Qt"
-  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]/include/Qt"
-  $ENV{QTDIR}/include
-  ${GLOB_PATHS}
-  /usr/share/qt3/include
-  C:/Progra~1/qt/include
-  /usr/local/include/X11/qt3
-  PATH_SUFFIXES lib/qt/include lib/qt3/include include/qt include/qt3 qt/include qt3/include
-  )
-
-# if qglobal.h is not in the qt_include_dir then set
-# QT_INCLUDE_DIR to NOTFOUND
-if(NOT EXISTS ${QT_INCLUDE_DIR}/qglobal.h)
-  set(QT_INCLUDE_DIR QT_INCLUDE_DIR-NOTFOUND CACHE PATH "path to Qt3 include directory" FORCE)
-endif()
-
-if(QT_INCLUDE_DIR)
-  #extract the version string from qglobal.h
-  file(STRINGS ${QT_INCLUDE_DIR}/qglobal.h QGLOBAL_H REGEX "#define[\t ]+QT_VERSION_STR[\t ]+\"[0-9]+.[0-9]+.[0-9]+[a-z]*\"")
-  string(REGEX REPLACE ".*\"([0-9]+.[0-9]+.[0-9]+[a-z]*)\".*" "\\1" qt_version_str "${QGLOBAL_H}")
-  unset(QGLOBAL_H)
-
-  # Under windows the qt library (MSVC) has the format qt-mtXYZ where XYZ is the
-  # version X.Y.Z, so we need to remove the dots from version
-  string(REGEX REPLACE "\\." "" qt_version_str_lib "${qt_version_str}")
-  set(QT_VERSION_STRING "${qt_version_str}")
-endif()
-
-file(GLOB GLOB_PATHS_LIB /usr/lib/qt-3*/lib/)
-if (QT_MT_REQUIRED)
-  find_library(QT_QT_LIBRARY
-    NAMES
-    qt-mt qt-mt${qt_version_str_lib} qt-mtnc${qt_version_str_lib}
-    qt-mtedu${qt_version_str_lib} qt-mt230nc qt-mtnc321 qt-mt3
-    PATHS
-      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]"
-      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]"
-      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]"
-      ENV QTDIR
-      ${GLOB_PATHS_LIB}
-      /usr/share/qt3
-      C:/Progra~1/qt
-    PATH_SUFFIXES
-      lib lib/qt lib/qt3 qt qt3 qt/lib qt3/lib
-    )
-
-else ()
-  find_library(QT_QT_LIBRARY
-    NAMES
-    qt qt-${qt_version_str_lib} qt-edu${qt_version_str_lib}
-    qt-mt qt-mt${qt_version_str_lib} qt-mtnc${qt_version_str_lib}
-    qt-mtedu${qt_version_str_lib} qt-mt230nc qt-mtnc321 qt-mt3
-    PATHS
-      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]"
-      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]"
-      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]"
-      ENV QTDIR
-      ${GLOB_PATHS_LIB}
-      /usr/share/qt3
-      C:/Progra~1/qt/lib
-    PATH_SUFFIXES
-      lib lib/qt lib/qt3 qt qt3 qt/lib qt3/lib
-    )
-endif ()
-
-
-find_library(QT_QASSISTANTCLIENT_LIBRARY
-  NAMES qassistantclient
-  PATHS
-    "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]"
-    "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]"
-    "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]"
-    ENV QTDIR
-    ${GLOB_PATHS_LIB}
-    /usr/share/qt3
-    C:/Progra~1/qt
-  PATH_SUFFIXES
-    lib lib/qt lib/qt3 qt qt3 qt/lib qt3/lib
-  )
-
-# Qt 3 should prefer QTDIR over the PATH
-find_program(QT_MOC_EXECUTABLE
-  NAMES moc-qt3 moc3 moc3-mt moc
-  HINTS
-    ENV QTDIR
-  PATHS
-  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]/include/Qt"
-  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]/include/Qt"
-  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]/include/Qt"
-  ${GLOB_PATHS_BIN}
-    /usr/share/qt3
-    C:/Progra~1/qt
-  PATH_SUFFIXES
-    bin lib/qt lib/qt3 qt qt3 qt/bin qt3/bin lib/qt/bin lib/qt3/bin
-  )
-
-if(QT_MOC_EXECUTABLE)
-  set ( QT_WRAP_CPP "YES")
-endif()
-
-# Qt 3 should prefer QTDIR over the PATH
-find_program(QT_UIC_EXECUTABLE
-  NAMES uic-qt3 uic3 uic3-mt uic
-  HINTS
-    ENV QTDIR
-  PATHS
-  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]/include/Qt"
-  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]/include/Qt"
-  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]/include/Qt"
-  ${GLOB_PATHS_BIN}
-    /usr/share/qt3
-    C:/Progra~1/qt
-  PATH_SUFFIXES
-    bin lib/qt lib/qt3 qt qt3 qt/bin qt3/bin lib/qt/bin lib/qt3/bin
-  )
-
-if(QT_UIC_EXECUTABLE)
-  set ( QT_WRAP_UI "YES")
-endif()
-
-if (WIN32)
-  find_library(QT_QTMAIN_LIBRARY qtmain
-    HINTS
-      ENV QTDIR
-      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]"
-      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]"
-      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]"
-    PATHS
-      "$ENV{ProgramFiles}/qt"
-      "C:/Program Files/qt"
-    PATH_SUFFIXES
-      lib
-    DOC "This Library is only needed by and included with Qt3 on MSWindows. It should be NOTFOUND, undefined or IGNORE otherwise."
-    )
-endif ()
-
-#support old QT_MIN_VERSION if set, but not if version is supplied by find_package()
-if(NOT Qt3_FIND_VERSION AND QT_MIN_VERSION)
-  set(Qt3_FIND_VERSION ${QT_MIN_VERSION})
-endif()
-
-# if the include a library are found then we have it
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Qt3
-                                  REQUIRED_VARS QT_QT_LIBRARY QT_INCLUDE_DIR QT_MOC_EXECUTABLE
-                                  VERSION_VAR QT_VERSION_STRING)
-set(QT_FOUND ${QT3_FOUND} )
-
-if(QT_FOUND)
-  set( QT_LIBRARIES ${QT_LIBRARIES} ${QT_QT_LIBRARY} )
-  set( QT_DEFINITIONS "")
-
-  if (WIN32 AND NOT CYGWIN)
-    if (QT_QTMAIN_LIBRARY)
-      # for version 3
-      set (QT_DEFINITIONS -DQT_DLL -DQT_THREAD_SUPPORT -DNO_DEBUG)
-      set (QT_LIBRARIES imm32.lib ${QT_QT_LIBRARY} ${QT_QTMAIN_LIBRARY} )
-      set (QT_LIBRARIES ${QT_LIBRARIES} winmm wsock32)
-    else ()
-      # for version 2
-      set (QT_LIBRARIES imm32.lib ws2_32.lib ${QT_QT_LIBRARY} )
-    endif ()
-  else ()
-    set (QT_LIBRARIES ${QT_QT_LIBRARY} )
-
-    set (QT_DEFINITIONS -DQT_SHARED -DQT_NO_DEBUG)
-    if(QT_QT_LIBRARY MATCHES "qt-mt")
-      set (QT_DEFINITIONS ${QT_DEFINITIONS} -DQT_THREAD_SUPPORT -D_REENTRANT)
-    endif()
-
-  endif ()
-
-  if (QT_QASSISTANTCLIENT_LIBRARY)
-    set (QT_LIBRARIES ${QT_QASSISTANTCLIENT_LIBRARY} ${QT_LIBRARIES})
-  endif ()
-
-  # Backwards compatibility for CMake1.4 and 1.2
-  set (QT_MOC_EXE ${QT_MOC_EXECUTABLE} )
-  set (QT_UIC_EXE ${QT_UIC_EXECUTABLE} )
-  # for unix add X11 stuff
-  if(UNIX)
-    find_package(X11)
-    if (X11_FOUND)
-      set (QT_LIBRARIES ${QT_LIBRARIES} ${X11_LIBRARIES})
-    endif ()
-    if (CMAKE_DL_LIBS)
-      set (QT_LIBRARIES ${QT_LIBRARIES} ${CMAKE_DL_LIBS})
-    endif ()
-  endif()
-  if(QT_QT_LIBRARY MATCHES "qt-mt")
-    find_package(Threads)
-    set(QT_LIBRARIES ${QT_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
-  endif()
-endif()
-
-if(QT_MOC_EXECUTABLE)
-  execute_process(COMMAND ${QT_MOC_EXECUTABLE} "-v"
-                  OUTPUT_VARIABLE QTVERSION_MOC
-                  ERROR_QUIET)
-endif()
-if(QT_UIC_EXECUTABLE)
-  execute_process(COMMAND ${QT_UIC_EXECUTABLE} "-version"
-                  OUTPUT_VARIABLE QTVERSION_UIC
-                  ERROR_QUIET)
-endif()
-
-set(_QT_UIC_VERSION_3 FALSE)
-if("${QTVERSION_UIC}" MATCHES " 3.")
-  set(_QT_UIC_VERSION_3 TRUE)
-endif()
-
-set(_QT_MOC_VERSION_3 FALSE)
-if("${QTVERSION_MOC}" MATCHES " 3.")
-  set(_QT_MOC_VERSION_3 TRUE)
-endif()
-
-set(QT_WRAP_CPP FALSE)
-if (QT_MOC_EXECUTABLE AND _QT_MOC_VERSION_3)
-  set ( QT_WRAP_CPP TRUE)
-endif ()
-
-set(QT_WRAP_UI FALSE)
-if (QT_UIC_EXECUTABLE AND _QT_UIC_VERSION_3)
-  set ( QT_WRAP_UI TRUE)
-endif ()
-
-mark_as_advanced(
-  QT_INCLUDE_DIR
-  QT_QT_LIBRARY
-  QT_QTMAIN_LIBRARY
-  QT_QASSISTANTCLIENT_LIBRARY
-  QT_UIC_EXECUTABLE
-  QT_MOC_EXECUTABLE
-  QT_WRAP_CPP
-  QT_WRAP_UI
-  )
diff --git a/share/cmake-3.18/Modules/FindQt4.cmake b/share/cmake-3.18/Modules/FindQt4.cmake
deleted file mode 100644
index 3993968..0000000
--- a/share/cmake-3.18/Modules/FindQt4.cmake
+++ /dev/null
@@ -1,1338 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindQt4
--------
-
-Finding and Using Qt4
-^^^^^^^^^^^^^^^^^^^^^
-
-This module can be used to find Qt4.  The most important issue is that
-the Qt4 qmake is available via the system path.  This qmake is then
-used to detect basically everything else.  This module defines a
-number of :prop_tgt:`IMPORTED` targets, macros and variables.
-
-Typical usage could be something like:
-
-.. code-block:: cmake
-
-   set(CMAKE_AUTOMOC ON)
-   set(CMAKE_INCLUDE_CURRENT_DIR ON)
-   find_package(Qt4 4.4.3 REQUIRED QtGui QtXml)
-   add_executable(myexe main.cpp)
-   target_link_libraries(myexe Qt4::QtGui Qt4::QtXml)
-
-.. note::
-
- When using :prop_tgt:`IMPORTED` targets, the qtmain.lib static library is
- automatically linked on Windows for :prop_tgt:`WIN32 <WIN32_EXECUTABLE>`
- executables. To disable that globally, set the
- ``QT4_NO_LINK_QTMAIN`` variable before finding Qt4. To disable that
- for a particular executable, set the ``QT4_NO_LINK_QTMAIN`` target
- property to ``TRUE`` on the executable.
-
-Qt Build Tools
-^^^^^^^^^^^^^^
-
-Qt relies on some bundled tools for code generation, such as ``moc`` for
-meta-object code generation,``uic`` for widget layout and population,
-and ``rcc`` for virtual filesystem content generation.  These tools may be
-automatically invoked by :manual:`cmake(1)` if the appropriate conditions
-are met.  See :manual:`cmake-qt(7)` for more.
-
-Qt Macros
-^^^^^^^^^
-
-In some cases it can be necessary or useful to invoke the Qt build tools in a
-more-manual way. Several macros are available to add targets for such uses.
-
-::
-
-  macro QT4_WRAP_CPP(outfiles inputfile ... [TARGET tgt] OPTIONS ...)
-        create moc code from a list of files containing Qt class with
-        the Q_OBJECT declaration.  Per-directory preprocessor definitions
-        are also added.  If the <tgt> is specified, the
-        INTERFACE_INCLUDE_DIRECTORIES and INTERFACE_COMPILE_DEFINITIONS from
-        the <tgt> are passed to moc.  Options may be given to moc, such as
-        those found when executing "moc -help".
-
-
-::
-
-  macro QT4_WRAP_UI(outfiles inputfile ... OPTIONS ...)
-        create code from a list of Qt designer ui files.
-        Options may be given to uic, such as those found
-        when executing "uic -help"
-
-
-::
-
-  macro QT4_ADD_RESOURCES(outfiles inputfile ... OPTIONS ...)
-        create code from a list of Qt resource files.
-        Options may be given to rcc, such as those found
-        when executing "rcc -help"
-
-
-::
-
-  macro QT4_GENERATE_MOC(inputfile outputfile [TARGET tgt])
-        creates a rule to run moc on infile and create outfile.
-        Use this if for some reason QT4_WRAP_CPP() isn't appropriate, e.g.
-        because you need a custom filename for the moc file or something
-        similar.  If the <tgt> is specified, the
-        INTERFACE_INCLUDE_DIRECTORIES and INTERFACE_COMPILE_DEFINITIONS from
-        the <tgt> are passed to moc.
-
-
-::
-
-  macro QT4_ADD_DBUS_INTERFACE(outfiles interface basename)
-        Create the interface header and implementation files with the
-        given basename from the given interface xml file and add it to
-        the list of sources.
-
-        You can pass additional parameters to the qdbusxml2cpp call by setting
-        properties on the input file:
-
-        INCLUDE the given file will be included in the generate interface header
-
-        CLASSNAME the generated class is named accordingly
-
-        NO_NAMESPACE the generated class is not wrapped in a namespace
-
-
-::
-
-  macro QT4_ADD_DBUS_INTERFACES(outfiles inputfile ... )
-        Create the interface header and implementation files
-        for all listed interface xml files.
-        The basename will be automatically determined from the name
-        of the xml file.
-
-        The source file properties described for
-        QT4_ADD_DBUS_INTERFACE also apply here.
-
-
-::
-
-  macro QT4_ADD_DBUS_ADAPTOR(outfiles xmlfile parentheader parentclassname
-                             [basename] [classname])
-        create a dbus adaptor (header and implementation file) from the xml file
-        describing the interface, and add it to the list of sources. The adaptor
-        forwards the calls to a parent class, defined in parentheader and named
-        parentclassname. The name of the generated files will be
-        <basename>adaptor.{cpp,h} where basename defaults to the basename of the
-        xml file.
-        If <classname> is provided, then it will be used as the classname of the
-        adaptor itself.
-
-
-::
-
-  macro QT4_GENERATE_DBUS_INTERFACE( header [interfacename] OPTIONS ...)
-        generate the xml interface file from the given header.
-        If the optional argument interfacename is omitted, the name of the
-        interface file is constructed from the basename of the header with
-        the suffix .xml appended.
-        Options may be given to qdbuscpp2xml, such as those found when
-        executing "qdbuscpp2xml --help"
-
-
-::
-
-  macro QT4_CREATE_TRANSLATION( qm_files directories ... sources ...
-                                ts_files ... OPTIONS ...)
-        out: qm_files
-        in:  directories sources ts_files
-        options: flags to pass to lupdate, such as -extensions to specify
-        extensions for a directory scan.
-        generates commands to create .ts (vie lupdate) and .qm
-        (via lrelease) - files from directories and/or sources. The ts files are
-        created and/or updated in the source tree (unless given with full paths).
-        The qm files are generated in the build tree.
-        Updating the translations can be done by adding the qm_files
-        to the source list of your library/executable, so they are
-        always updated, or by adding a custom target to control when
-        they get updated/generated.
-
-
-::
-
-  macro QT4_ADD_TRANSLATION( qm_files ts_files ... )
-        out: qm_files
-        in:  ts_files
-        generates commands to create .qm from .ts - files. The generated
-        filenames can be found in qm_files. The ts_files
-        must exist and are not updated in any way.
-
-
-::
-
-  macro QT4_AUTOMOC(sourcefile1 sourcefile2 ... [TARGET tgt])
-        The qt4_automoc macro is obsolete.  Use the CMAKE_AUTOMOC feature instead.
-        This macro is still experimental.
-        It can be used to have moc automatically handled.
-        So if you have the files foo.h and foo.cpp, and in foo.h a
-        a class uses the Q_OBJECT macro, moc has to run on it. If you don't
-        want to use QT4_WRAP_CPP() (which is reliable and mature), you can insert
-        #include "foo.moc"
-        in foo.cpp and then give foo.cpp as argument to QT4_AUTOMOC(). This will
-        scan all listed files at cmake-time for such included moc files and if it
-        finds them cause a rule to be generated to run moc at build time on the
-        accompanying header file foo.h.
-        If a source file has the SKIP_AUTOMOC property set it will be ignored by
-        this macro.
-        If the <tgt> is specified, the INTERFACE_INCLUDE_DIRECTORIES and
-        INTERFACE_COMPILE_DEFINITIONS from the <tgt> are passed to moc.
-
-
-::
-
- function QT4_USE_MODULES( target [link_type] modules...)
-        This function is obsolete. Use target_link_libraries with IMPORTED targets
-        instead.
-        Make <target> use the <modules> from Qt. Using a Qt module means
-        to link to the library, add the relevant include directories for the
-        module, and add the relevant compiler defines for using the module.
-        Modules are roughly equivalent to components of Qt4, so usage would be
-        something like:
-         qt4_use_modules(myexe Core Gui Declarative)
-        to use QtCore, QtGui and QtDeclarative. The optional <link_type> argument
-        can be specified as either LINK_PUBLIC or LINK_PRIVATE to specify the
-        same argument to the target_link_libraries call.
-
-
-IMPORTED Targets
-^^^^^^^^^^^^^^^^
-
-A particular Qt library may be used by using the corresponding
-:prop_tgt:`IMPORTED` target with the :command:`target_link_libraries`
-command:
-
-.. code-block:: cmake
-
-  target_link_libraries(myexe Qt4::QtGui Qt4::QtXml)
-
-Using a target in this way causes :cmake(1)` to use the appropriate include
-directories and compile definitions for the target when compiling ``myexe``.
-
-Targets are aware of their dependencies, so for example it is not necessary
-to list ``Qt4::QtCore`` if another Qt library is listed, and it is not
-necessary to list ``Qt4::QtGui`` if ``Qt4::QtDeclarative`` is listed.
-Targets may be tested for existence in the usual way with the
-:command:`if(TARGET)` command.
-
-The Qt toolkit may contain both debug and release libraries.
-:manual:`cmake(1)` will choose the appropriate version based on the build
-configuration.
-
-``Qt4::QtCore``
- The QtCore target
-``Qt4::QtGui``
- The QtGui target
-``Qt4::Qt3Support``
- The Qt3Support target
-``Qt4::QtAssistant``
- The QtAssistant target
-``Qt4::QtAssistantClient``
- The QtAssistantClient target
-``Qt4::QAxContainer``
- The QAxContainer target (Windows only)
-``Qt4::QAxServer``
- The QAxServer target (Windows only)
-``Qt4::QtDBus``
- The QtDBus target
-``Qt4::QtDeclarative``
- The QtDeclarative target
-``Qt4::QtDesigner``
- The QtDesigner target
-``Qt4::QtDesignerComponents``
- The QtDesignerComponents target
-``Qt4::QtHelp``
- The QtHelp target
-``Qt4::QtMotif``
- The QtMotif target
-``Qt4::QtMultimedia``
- The QtMultimedia target
-``Qt4::QtNetwork``
- The QtNetwork target
-``Qt4::QtNsPLugin``
- The QtNsPLugin target
-``Qt4::QtOpenGL``
- The QtOpenGL target
-``Qt4::QtScript``
- The QtScript target
-``Qt4::QtScriptTools``
- The QtScriptTools target
-``Qt4::QtSql``
- The QtSql target
-``Qt4::QtSvg``
- The QtSvg target
-``Qt4::QtTest``
- The QtTest target
-``Qt4::QtUiTools``
- The QtUiTools target
-``Qt4::QtWebKit``
- The QtWebKit target
-``Qt4::QtXml``
- The QtXml target
-``Qt4::QtXmlPatterns``
- The QtXmlPatterns target
-``Qt4::phonon``
- The phonon target
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-  Below is a detailed list of variables that FindQt4.cmake sets.
-
-``Qt4_FOUND``
- If false, don't try to use Qt 4.
-``QT_FOUND``
- If false, don't try to use Qt. This variable is for compatibility only.
-``QT4_FOUND``
- If false, don't try to use Qt 4. This variable is for compatibility only.
-``QT_VERSION_MAJOR``
- The major version of Qt found.
-``QT_VERSION_MINOR``
- The minor version of Qt found.
-``QT_VERSION_PATCH``
- The patch version of Qt found.
-#]=======================================================================]
-
-# Use find_package( Qt4 COMPONENTS ... ) to enable modules
-if( Qt4_FIND_COMPONENTS )
-  foreach( component ${Qt4_FIND_COMPONENTS} )
-    string( TOUPPER ${component} _COMPONENT )
-    set( QT_USE_${_COMPONENT} 1 )
-  endforeach()
-
-  # To make sure we don't use QtCore or QtGui when not in COMPONENTS
-  if(NOT QT_USE_QTCORE)
-    set( QT_DONT_USE_QTCORE 1 )
-  endif()
-
-  if(NOT QT_USE_QTGUI)
-    set( QT_DONT_USE_QTGUI 1 )
-  endif()
-
-endif()
-
-# If Qt3 has already been found, fail.
-if(QT_QT_LIBRARY)
-  if(Qt4_FIND_REQUIRED)
-    message( FATAL_ERROR "Qt3 and Qt4 cannot be used together in one project.  If switching to Qt4, the CMakeCache.txt needs to be cleaned.")
-  else()
-    if(NOT Qt4_FIND_QUIETLY)
-      message( STATUS    "Qt3 and Qt4 cannot be used together in one project.  If switching to Qt4, the CMakeCache.txt needs to be cleaned.")
-    endif()
-    return()
-  endif()
-endif()
-
-
-include(${CMAKE_CURRENT_LIST_DIR}/CheckCXXSymbolExists.cmake)
-include(${CMAKE_CURRENT_LIST_DIR}/MacroAddFileDependencies.cmake)
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
-
-set(QT_USE_FILE ${CMAKE_ROOT}/Modules/UseQt4.cmake)
-
-set( QT_DEFINITIONS "")
-
-# convenience macro for dealing with debug/release library names
-macro (_QT4_ADJUST_LIB_VARS _camelCaseBasename)
-
-  string(TOUPPER "${_camelCaseBasename}" basename)
-
-  # The name of the imported targets, i.e. the prefix "Qt4::" must not change,
-  # since it is stored in EXPORT-files as name of a required library. If the name would change
-  # here, this would lead to the imported Qt4-library targets not being resolved by cmake anymore.
-  if (QT_${basename}_LIBRARY_RELEASE OR QT_${basename}_LIBRARY_DEBUG)
-
-    if(NOT TARGET Qt4::${_camelCaseBasename})
-      add_library(Qt4::${_camelCaseBasename} UNKNOWN IMPORTED )
-
-      if (QT_${basename}_LIBRARY_RELEASE)
-        set_property(TARGET Qt4::${_camelCaseBasename} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
-        set(_location "${QT_${basename}_LIBRARY_RELEASE}")
-        if(QT_USE_FRAMEWORKS AND EXISTS ${_location}/${_camelCaseBasename})
-          set_property(TARGET Qt4::${_camelCaseBasename}        PROPERTY IMPORTED_LOCATION_RELEASE "${_location}/${_camelCaseBasename}" )
-        else()
-          set_property(TARGET Qt4::${_camelCaseBasename}        PROPERTY IMPORTED_LOCATION_RELEASE "${_location}" )
-        endif()
-      endif ()
-
-      if (QT_${basename}_LIBRARY_DEBUG)
-        set_property(TARGET Qt4::${_camelCaseBasename} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
-        set(_location "${QT_${basename}_LIBRARY_DEBUG}")
-        if(QT_USE_FRAMEWORKS AND EXISTS ${_location}/${_camelCaseBasename})
-          set_property(TARGET Qt4::${_camelCaseBasename}        PROPERTY IMPORTED_LOCATION_DEBUG "${_location}/${_camelCaseBasename}" )
-        else()
-          set_property(TARGET Qt4::${_camelCaseBasename}        PROPERTY IMPORTED_LOCATION_DEBUG "${_location}" )
-        endif()
-      endif ()
-      set_property(TARGET Qt4::${_camelCaseBasename} PROPERTY
-        INTERFACE_INCLUDE_DIRECTORIES
-          "${QT_${basename}_INCLUDE_DIR}"
-      )
-      string(REGEX REPLACE "^QT" "" _stemname ${basename})
-      set_property(TARGET Qt4::${_camelCaseBasename} PROPERTY
-        INTERFACE_COMPILE_DEFINITIONS
-          "QT_${_stemname}_LIB"
-      )
-    endif()
-
-    # If QT_USE_IMPORTED_TARGETS is enabled, the QT_QTFOO_LIBRARY variables are set to point at these
-    # imported targets. This works better in general, and is also in almost all cases fully
-    # backward compatible. The only issue is when a project A which had this enabled then exports its
-    # libraries via export or export_library_dependencies(). In this case the libraries from project
-    # A will depend on the imported Qt targets, and the names of these imported targets will be stored
-    # in the dependency files on disk. This means when a project B then uses project A, these imported
-    # targets must be created again, otherwise e.g. "Qt4__QtCore" will be interpreted as name of a
-    # library file on disk, and not as a target, and linking will fail:
-    if(QT_USE_IMPORTED_TARGETS)
-        set(QT_${basename}_LIBRARY       Qt4::${_camelCaseBasename} )
-        set(QT_${basename}_LIBRARIES     Qt4::${_camelCaseBasename} )
-    else()
-
-      # if the release- as well as the debug-version of the library have been found:
-      if (QT_${basename}_LIBRARY_DEBUG AND QT_${basename}_LIBRARY_RELEASE)
-        # if the generator is multi-config or if CMAKE_BUILD_TYPE is set for
-        # single-config generators, set optimized and debug libraries
-        get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
-        if(_isMultiConfig OR CMAKE_BUILD_TYPE)
-          set(QT_${basename}_LIBRARY       optimized ${QT_${basename}_LIBRARY_RELEASE} debug ${QT_${basename}_LIBRARY_DEBUG})
-        else()
-          # For single-config generators where CMAKE_BUILD_TYPE has no value,
-          # just use the release libraries
-          set(QT_${basename}_LIBRARY       ${QT_${basename}_LIBRARY_RELEASE} )
-        endif()
-        set(QT_${basename}_LIBRARIES       optimized ${QT_${basename}_LIBRARY_RELEASE} debug ${QT_${basename}_LIBRARY_DEBUG})
-      endif ()
-
-      # if only the release version was found, set the debug variable also to the release version
-      if (QT_${basename}_LIBRARY_RELEASE AND NOT QT_${basename}_LIBRARY_DEBUG)
-        set(QT_${basename}_LIBRARY_DEBUG ${QT_${basename}_LIBRARY_RELEASE})
-        set(QT_${basename}_LIBRARY       ${QT_${basename}_LIBRARY_RELEASE})
-        set(QT_${basename}_LIBRARIES     ${QT_${basename}_LIBRARY_RELEASE})
-      endif ()
-
-      # if only the debug version was found, set the release variable also to the debug version
-      if (QT_${basename}_LIBRARY_DEBUG AND NOT QT_${basename}_LIBRARY_RELEASE)
-        set(QT_${basename}_LIBRARY_RELEASE ${QT_${basename}_LIBRARY_DEBUG})
-        set(QT_${basename}_LIBRARY         ${QT_${basename}_LIBRARY_DEBUG})
-        set(QT_${basename}_LIBRARIES       ${QT_${basename}_LIBRARY_DEBUG})
-      endif ()
-
-      # put the value in the cache:
-      set(QT_${basename}_LIBRARY ${QT_${basename}_LIBRARY} CACHE STRING "The Qt ${basename} library" FORCE)
-
-    endif()
-
-    set(QT_${basename}_FOUND 1)
-
-  else ()
-
-    set(QT_${basename}_LIBRARY "" CACHE STRING "The Qt ${basename} library" FORCE)
-
-  endif ()
-
-  if (QT_${basename}_INCLUDE_DIR)
-    #add the include directory to QT_INCLUDES
-    set(QT_INCLUDES "${QT_${basename}_INCLUDE_DIR}" ${QT_INCLUDES})
-  endif ()
-
-  # Make variables changeable to the advanced user
-  mark_as_advanced(QT_${basename}_LIBRARY QT_${basename}_LIBRARY_RELEASE QT_${basename}_LIBRARY_DEBUG QT_${basename}_INCLUDE_DIR)
-endmacro ()
-
-function(_QT4_QUERY_QMAKE VAR RESULT)
-  execute_process(COMMAND "${QT_QMAKE_EXECUTABLE}" -query ${VAR}
-    RESULT_VARIABLE return_code
-    OUTPUT_VARIABLE output
-    OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE)
-  if(NOT return_code)
-    file(TO_CMAKE_PATH "${output}" output)
-    set(${RESULT} ${output} PARENT_SCOPE)
-  endif()
-endfunction()
-
-function(_QT4_GET_VERSION_COMPONENTS VERSION RESULT_MAJOR RESULT_MINOR RESULT_PATCH)
-  string(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" QT_VERSION_MAJOR "${QTVERSION}")
-  string(REGEX REPLACE "^[0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" QT_VERSION_MINOR "${QTVERSION}")
-  string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" QT_VERSION_PATCH "${QTVERSION}")
-
-  set(${RESULT_MAJOR} ${QT_VERSION_MAJOR} PARENT_SCOPE)
-  set(${RESULT_MINOR} ${QT_VERSION_MINOR} PARENT_SCOPE)
-  set(${RESULT_PATCH} ${QT_VERSION_PATCH} PARENT_SCOPE)
-endfunction()
-
-function(_QT4_FIND_QMAKE QMAKE_NAMES QMAKE_RESULT VERSION_RESULT)
-  list(LENGTH QMAKE_NAMES QMAKE_NAMES_LEN)
-  if(${QMAKE_NAMES_LEN} EQUAL 0)
-    return()
-  endif()
-  list(GET QMAKE_NAMES 0 QMAKE_NAME)
-
-  get_filename_component(qt_install_version "[HKEY_CURRENT_USER\\Software\\trolltech\\Versions;DefaultQtVersion]" NAME)
-
-  find_program(QT_QMAKE_EXECUTABLE NAMES ${QMAKE_NAME}
-    PATHS
-      ENV QTDIR
-      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\${qt_install_version};InstallDir]"
-    PATH_SUFFIXES bin
-    DOC "The qmake executable for the Qt installation to use"
-  )
-
-  set(major 0)
-  if (QT_QMAKE_EXECUTABLE)
-    _qt4_query_qmake(QT_VERSION QTVERSION)
-    _qt4_get_version_components("${QTVERSION}" major minor patch)
-  endif()
-
-  if (NOT QT_QMAKE_EXECUTABLE OR NOT "${major}" EQUAL 4)
-    set(curr_qmake "${QT_QMAKE_EXECUTABLE}")
-    set(curr_qt_version "${QTVERSION}")
-
-    set(QT_QMAKE_EXECUTABLE NOTFOUND CACHE FILEPATH "" FORCE)
-    list(REMOVE_AT QMAKE_NAMES 0)
-    _qt4_find_qmake("${QMAKE_NAMES}" QMAKE QTVERSION)
-
-    _qt4_get_version_components("${QTVERSION}" major minor patch)
-    if (NOT ${major} EQUAL 4)
-      # Restore possibly found qmake and it's version; these are used later
-      # in error message if incorrect version is found
-      set(QT_QMAKE_EXECUTABLE "${curr_qmake}" CACHE FILEPATH "" FORCE)
-      set(QTVERSION "${curr_qt_version}")
-    endif()
-
-  endif()
-
-
-  set(${QMAKE_RESULT} "${QT_QMAKE_EXECUTABLE}" PARENT_SCOPE)
-  set(${VERSION_RESULT} "${QTVERSION}" PARENT_SCOPE)
-endfunction()
-
-
-set(QT4_INSTALLED_VERSION_TOO_OLD FALSE)
-
-set(_QT4_QMAKE_NAMES qmake qmake4 qmake-qt4 qmake-mac)
-_qt4_find_qmake("${_QT4_QMAKE_NAMES}" QT_QMAKE_EXECUTABLE QTVERSION)
-
-if (QT_QMAKE_EXECUTABLE AND
-  QTVERSION VERSION_GREATER 3 AND QTVERSION VERSION_LESS 5)
-
-  if (Qt5Core_FOUND)
-    # Qt5CoreConfig sets QT_MOC_EXECUTABLE as a non-cache variable to the Qt 5
-    # path to moc.  Unset that variable when Qt 4 and 5 are used together, so
-    # that when find_program looks for moc, it is not set to the Qt 5 version.
-    # If FindQt4 has already put the Qt 4 path in the cache, the unset()
-    # command 'unhides' the (correct) cache variable.
-    unset(QT_MOC_EXECUTABLE)
-  endif()
-  if (QT_QMAKE_EXECUTABLE_LAST)
-    string(COMPARE NOTEQUAL "${QT_QMAKE_EXECUTABLE_LAST}" "${QT_QMAKE_EXECUTABLE}" QT_QMAKE_CHANGED)
-  endif()
-  set(QT_QMAKE_EXECUTABLE_LAST "${QT_QMAKE_EXECUTABLE}" CACHE INTERNAL "" FORCE)
-
-  _qt4_get_version_components("${QTVERSION}" QT_VERSION_MAJOR QT_VERSION_MINOR QT_VERSION_PATCH)
-
-  # ask qmake for the mkspecs directory
-  # we do this first because QT_LIBINFIX might be set
-  if (NOT QT_MKSPECS_DIR  OR  QT_QMAKE_CHANGED)
-    _qt4_query_qmake(QMAKE_MKSPECS qt_mkspecs_dirs)
-    # do not replace : on windows as it might be a drive letter
-    # and windows should already use ; as a separator
-    if(NOT WIN32)
-      string(REPLACE ":" ";" qt_mkspecs_dirs "${qt_mkspecs_dirs}")
-    endif()
-
-    find_path(QT_MKSPECS_DIR NAMES qconfig.pri
-      HINTS ${qt_mkspecs_dirs}
-      PATH_SUFFIXES mkspecs share/qt4/mkspecs
-      DOC "The location of the Qt mkspecs containing qconfig.pri")
-  endif()
-
-  if(EXISTS "${QT_MKSPECS_DIR}/qconfig.pri")
-    file(READ ${QT_MKSPECS_DIR}/qconfig.pri _qconfig_FILE_contents)
-    string(REGEX MATCH "QT_CONFIG[^\n]+" QT_QCONFIG "${_qconfig_FILE_contents}")
-    string(REGEX MATCH "CONFIG[^\n]+" QT_CONFIG "${_qconfig_FILE_contents}")
-    string(REGEX MATCH "EDITION[^\n]+" QT_EDITION "${_qconfig_FILE_contents}")
-    string(REGEX MATCH "QT_LIBINFIX[^\n]+" _qconfig_qt_libinfix "${_qconfig_FILE_contents}")
-    string(REGEX REPLACE "QT_LIBINFIX *= *([^\n]*)" "\\1" QT_LIBINFIX "${_qconfig_qt_libinfix}")
-  endif()
-  if("${QT_EDITION}" MATCHES "DesktopLight")
-    set(QT_EDITION_DESKTOPLIGHT 1)
-  endif()
-
-  # ask qmake for the library dir as a hint, then search for QtCore library and use that as a reference for finding the
-  # others and for setting QT_LIBRARY_DIR
-  if (NOT (QT_QTCORE_LIBRARY_RELEASE OR QT_QTCORE_LIBRARY_DEBUG)  OR QT_QMAKE_CHANGED)
-    _qt4_query_qmake(QT_INSTALL_LIBS QT_LIBRARY_DIR_TMP)
-    set(QT_QTCORE_LIBRARY_RELEASE NOTFOUND)
-    set(QT_QTCORE_LIBRARY_DEBUG NOTFOUND)
-    find_library(QT_QTCORE_LIBRARY_RELEASE
-                 NAMES QtCore${QT_LIBINFIX} QtCore${QT_LIBINFIX}4
-                 HINTS ${QT_LIBRARY_DIR_TMP}
-                 NO_DEFAULT_PATH
-        )
-    find_library(QT_QTCORE_LIBRARY_DEBUG
-                 NAMES QtCore${QT_LIBINFIX}_debug QtCore${QT_LIBINFIX}d QtCore${QT_LIBINFIX}d4
-                 HINTS ${QT_LIBRARY_DIR_TMP}
-                 NO_DEFAULT_PATH
-        )
-
-    if(NOT QT_QTCORE_LIBRARY_RELEASE AND NOT QT_QTCORE_LIBRARY_DEBUG)
-      find_library(QT_QTCORE_LIBRARY_RELEASE
-                   NAMES QtCore${QT_LIBINFIX} QtCore${QT_LIBINFIX}4
-                   HINTS ${QT_LIBRARY_DIR_TMP}
-          )
-      find_library(QT_QTCORE_LIBRARY_DEBUG
-                   NAMES QtCore${QT_LIBINFIX}_debug QtCore${QT_LIBINFIX}d QtCore${QT_LIBINFIX}d4
-                   HINTS ${QT_LIBRARY_DIR_TMP}
-          )
-    endif()
-
-    # try dropping a hint if trying to use Visual Studio with Qt built by MinGW
-    if(NOT QT_QTCORE_LIBRARY_RELEASE AND MSVC)
-      if(EXISTS ${QT_LIBRARY_DIR_TMP}/libqtmain.a)
-        message( FATAL_ERROR "It appears you're trying to use Visual Studio with Qt built by MinGW.  Those compilers do not produce code compatible with each other.")
-      endif()
-    endif()
-
-  endif ()
-
-  # set QT_LIBRARY_DIR based on location of QtCore found.
-  if(QT_QTCORE_LIBRARY_RELEASE)
-    get_filename_component(QT_LIBRARY_DIR_TMP "${QT_QTCORE_LIBRARY_RELEASE}" PATH)
-    set(QT_LIBRARY_DIR ${QT_LIBRARY_DIR_TMP} CACHE INTERNAL "Qt library dir" FORCE)
-    set(QT_QTCORE_FOUND 1)
-  elseif(QT_QTCORE_LIBRARY_DEBUG)
-    get_filename_component(QT_LIBRARY_DIR_TMP "${QT_QTCORE_LIBRARY_DEBUG}" PATH)
-    set(QT_LIBRARY_DIR ${QT_LIBRARY_DIR_TMP} CACHE INTERNAL "Qt library dir" FORCE)
-    set(QT_QTCORE_FOUND 1)
-  else()
-    if(NOT Qt4_FIND_QUIETLY)
-      message(WARNING
-        "${QT_QMAKE_EXECUTABLE} reported QT_INSTALL_LIBS as "
-        "\"${QT_LIBRARY_DIR_TMP}\" "
-        "but QtCore could not be found there.  "
-        "Qt is NOT installed correctly for the target build environment.")
-    endif()
-    set(Qt4_FOUND FALSE)
-    if(Qt4_FIND_REQUIRED)
-      message( FATAL_ERROR "Could NOT find QtCore. Check ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log for more details.")
-    else()
-      return()
-    endif()
-  endif()
-
-  # ask qmake for the binary dir
-  if (NOT QT_BINARY_DIR  OR  QT_QMAKE_CHANGED)
-    _qt4_query_qmake(QT_INSTALL_BINS qt_bins)
-    set(QT_BINARY_DIR ${qt_bins} CACHE INTERNAL "" FORCE)
-  endif ()
-
-  if (APPLE)
-    set(CMAKE_FIND_FRAMEWORK_OLD ${CMAKE_FIND_FRAMEWORK})
-    if (EXISTS ${QT_LIBRARY_DIR}/QtCore.framework)
-      set(QT_USE_FRAMEWORKS ON CACHE INTERNAL "" FORCE)
-      set(CMAKE_FIND_FRAMEWORK FIRST)
-    else ()
-      set(QT_USE_FRAMEWORKS OFF CACHE INTERNAL "" FORCE)
-      set(CMAKE_FIND_FRAMEWORK LAST)
-    endif ()
-  endif ()
-
-  # ask qmake for the include dir
-  if (QT_LIBRARY_DIR AND (NOT QT_QTCORE_INCLUDE_DIR OR NOT QT_HEADERS_DIR OR  QT_QMAKE_CHANGED))
-      _qt4_query_qmake(QT_INSTALL_HEADERS qt_headers)
-      set(QT_QTCORE_INCLUDE_DIR NOTFOUND)
-      find_path(QT_QTCORE_INCLUDE_DIR QtCore
-                HINTS ${qt_headers} ${QT_LIBRARY_DIR}
-                PATH_SUFFIXES QtCore qt4/QtCore
-                NO_DEFAULT_PATH
-        )
-      if(NOT QT_QTCORE_INCLUDE_DIR)
-        find_path(QT_QTCORE_INCLUDE_DIR QtCore
-                  HINTS ${qt_headers} ${QT_LIBRARY_DIR}
-                  PATH_SUFFIXES QtCore qt4/QtCore
-          )
-      endif()
-
-      # Set QT_HEADERS_DIR based on finding QtCore header
-      if(QT_QTCORE_INCLUDE_DIR)
-        if(QT_USE_FRAMEWORKS)
-          set(QT_HEADERS_DIR "${qt_headers}" CACHE INTERNAL "" FORCE)
-        else()
-          get_filename_component(qt_headers "${QT_QTCORE_INCLUDE_DIR}/../" ABSOLUTE)
-          set(QT_HEADERS_DIR "${qt_headers}" CACHE INTERNAL "" FORCE)
-        endif()
-      else()
-        message("Warning: QT_QMAKE_EXECUTABLE reported QT_INSTALL_HEADERS as ${qt_headers}")
-        message("Warning: But QtCore couldn't be found.  Qt must NOT be installed correctly.")
-      endif()
-  endif()
-
-  if(APPLE)
-    set(CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_OLD})
-  endif()
-
-  # Set QT_INCLUDE_DIR based on QT_HEADERS_DIR
-  if(QT_HEADERS_DIR)
-    if(QT_USE_FRAMEWORKS)
-      # Qt/Mac frameworks has two include dirs.
-      # One is the framework include for which CMake will add a -F flag
-      # and the other is an include dir for non-framework Qt modules
-      set(QT_INCLUDE_DIR ${QT_HEADERS_DIR} ${QT_QTCORE_LIBRARY_RELEASE} )
-    else()
-      set(QT_INCLUDE_DIR ${QT_HEADERS_DIR})
-    endif()
-  endif()
-
-  # Set QT_INCLUDES
-  set( QT_INCLUDES ${QT_MKSPECS_DIR}/default ${QT_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR})
-
-
-  # ask qmake for the documentation directory
-  if (QT_LIBRARY_DIR AND NOT QT_DOC_DIR  OR  QT_QMAKE_CHANGED)
-    _qt4_query_qmake(QT_INSTALL_DOCS qt_doc_dir)
-    set(QT_DOC_DIR ${qt_doc_dir} CACHE PATH "The location of the Qt docs" FORCE)
-  endif ()
-
-
-  # ask qmake for the plugins directory
-  if (QT_LIBRARY_DIR AND NOT QT_PLUGINS_DIR  OR  QT_QMAKE_CHANGED)
-    _qt4_query_qmake(QT_INSTALL_PLUGINS qt_plugins_dir)
-    if(CMAKE_CROSSCOMPILING OR NOT qt_plugins_dir)
-      find_path(QT_PLUGINS_DIR
-        NAMES accessible bearer codecs designer graphicssystems iconengines imageformats inputmethods qmltooling script sqldrivers
-        HINTS ${qt_plugins_dir}
-        PATH_SUFFIXES plugins lib/qt4/plugins
-        DOC "The location of the Qt plugins")
-    else()
-      set(QT_PLUGINS_DIR ${qt_plugins_dir} CACHE PATH "The location of the Qt plugins")
-    endif()
-  endif ()
-
-  # ask qmake for the translations directory
-  if (QT_LIBRARY_DIR AND NOT QT_TRANSLATIONS_DIR  OR  QT_QMAKE_CHANGED)
-    _qt4_query_qmake(QT_INSTALL_TRANSLATIONS qt_translations_dir)
-    set(QT_TRANSLATIONS_DIR ${qt_translations_dir} CACHE PATH "The location of the Qt translations" FORCE)
-  endif ()
-
-  # ask qmake for the imports directory
-  if (QT_LIBRARY_DIR AND NOT QT_IMPORTS_DIR OR QT_QMAKE_CHANGED)
-    _qt4_query_qmake(QT_INSTALL_IMPORTS qt_imports_dir)
-    if(CMAKE_CROSSCOMPILING OR NOT qt_imports_dir)
-      find_path(QT_IMPORTS_DIR NAMES Qt
-        HINTS ${qt_imports_dir}
-        PATH_SUFFIXES imports lib/qt4/imports
-        DOC "The location of the Qt imports")
-    else()
-      set(QT_IMPORTS_DIR ${qt_imports_dir} CACHE PATH "The location of the Qt imports")
-    endif()
-  endif ()
-
-  # Make variables changeable to the advanced user
-  mark_as_advanced( QT_LIBRARY_DIR QT_DOC_DIR QT_MKSPECS_DIR
-                    QT_PLUGINS_DIR QT_TRANSLATIONS_DIR)
-
-
-
-
-  #############################################
-  #
-  # Find out what window system we're using
-  #
-  #############################################
-  cmake_push_check_state()
-  # Add QT_INCLUDE_DIR to CMAKE_REQUIRED_INCLUDES
-  list(APPEND CMAKE_REQUIRED_INCLUDES "${QT_INCLUDE_DIR}")
-  set(CMAKE_REQUIRED_QUIET ${Qt4_FIND_QUIETLY})
-  # Check for Window system symbols (note: only one should end up being set)
-  CHECK_CXX_SYMBOL_EXISTS(Q_WS_X11 "QtCore/qglobal.h" Q_WS_X11)
-  CHECK_CXX_SYMBOL_EXISTS(Q_WS_WIN "QtCore/qglobal.h" Q_WS_WIN)
-  CHECK_CXX_SYMBOL_EXISTS(Q_WS_QWS "QtCore/qglobal.h" Q_WS_QWS)
-  CHECK_CXX_SYMBOL_EXISTS(Q_WS_MAC "QtCore/qglobal.h" Q_WS_MAC)
-  if(Q_WS_MAC)
-    if(QT_QMAKE_CHANGED)
-      unset(QT_MAC_USE_COCOA CACHE)
-    endif()
-    CHECK_CXX_SYMBOL_EXISTS(QT_MAC_USE_COCOA "QtCore/qconfig.h" QT_MAC_USE_COCOA)
-  endif()
-
-  if (QT_QTCOPY_REQUIRED)
-     CHECK_CXX_SYMBOL_EXISTS(QT_IS_QTCOPY "QtCore/qglobal.h" QT_KDE_QT_COPY)
-     if (NOT QT_IS_QTCOPY)
-        message(FATAL_ERROR "qt-copy is required, but hasn't been found")
-     endif ()
-  endif ()
-
-  cmake_pop_check_state()
-  #
-  #############################################
-
-
-
-  ########################################
-  #
-  #       Setting the INCLUDE-Variables
-  #
-  ########################################
-
-  set(QT_MODULES QtGui Qt3Support QtSvg QtScript QtTest QtUiTools
-                 QtHelp QtWebKit QtXmlPatterns phonon QtNetwork QtMultimedia
-                 QtNsPlugin QtOpenGL QtSql QtXml QtDesigner QtDBus QtScriptTools
-                 QtDeclarative)
-
-  if(Q_WS_X11)
-    set(QT_MODULES ${QT_MODULES} QtMotif)
-  endif()
-
-  if(QT_QMAKE_CHANGED)
-    foreach(QT_MODULE ${QT_MODULES})
-      string(TOUPPER ${QT_MODULE} _upper_qt_module)
-      set(QT_${_upper_qt_module}_INCLUDE_DIR NOTFOUND)
-      set(QT_${_upper_qt_module}_LIBRARY_RELEASE NOTFOUND)
-      set(QT_${_upper_qt_module}_LIBRARY_DEBUG NOTFOUND)
-    endforeach()
-    set(QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR NOTFOUND)
-    set(QT_QTDESIGNERCOMPONENTS_LIBRARY_RELEASE NOTFOUND)
-    set(QT_QTDESIGNERCOMPONENTS_LIBRARY_DEBUG NOTFOUND)
-    set(QT_QTASSISTANTCLIENT_INCLUDE_DIR NOTFOUND)
-    set(QT_QTASSISTANTCLIENT_LIBRARY_RELEASE NOTFOUND)
-    set(QT_QTASSISTANTCLIENT_LIBRARY_DEBUG NOTFOUND)
-    set(QT_QTASSISTANT_INCLUDE_DIR NOTFOUND)
-    set(QT_QTASSISTANT_LIBRARY_RELEASE NOTFOUND)
-    set(QT_QTASSISTANT_LIBRARY_DEBUG NOTFOUND)
-    set(QT_QTCLUCENE_LIBRARY_RELEASE NOTFOUND)
-    set(QT_QTCLUCENE_LIBRARY_DEBUG NOTFOUND)
-    set(QT_QAXCONTAINER_INCLUDE_DIR NOTFOUND)
-    set(QT_QAXCONTAINER_LIBRARY_RELEASE NOTFOUND)
-    set(QT_QAXCONTAINER_LIBRARY_DEBUG NOTFOUND)
-    set(QT_QAXSERVER_INCLUDE_DIR NOTFOUND)
-    set(QT_QAXSERVER_LIBRARY_RELEASE NOTFOUND)
-    set(QT_QAXSERVER_LIBRARY_DEBUG NOTFOUND)
-    if(Q_WS_WIN)
-      set(QT_QTMAIN_LIBRARY_DEBUG NOTFOUND)
-      set(QT_QTMAIN_LIBRARY_RELEASE NOTFOUND)
-    endif()
-  endif()
-
-  foreach(QT_MODULE ${QT_MODULES})
-    string(TOUPPER ${QT_MODULE} _upper_qt_module)
-    find_path(QT_${_upper_qt_module}_INCLUDE_DIR ${QT_MODULE}
-              PATHS
-              ${QT_HEADERS_DIR}/${QT_MODULE}
-              ${QT_LIBRARY_DIR}/${QT_MODULE}.framework/Headers
-              NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
-      )
-    # phonon doesn't seem consistent, let's try phonondefs.h for some
-    # installations
-    if(${QT_MODULE} STREQUAL "phonon")
-      find_path(QT_${_upper_qt_module}_INCLUDE_DIR phonondefs.h
-                PATHS
-                ${QT_HEADERS_DIR}/${QT_MODULE}
-                ${QT_LIBRARY_DIR}/${QT_MODULE}.framework/Headers
-                NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
-        )
-    endif()
-  endforeach()
-
-  if(Q_WS_WIN)
-    set(QT_MODULES ${QT_MODULES} QAxContainer QAxServer)
-    # Set QT_AXCONTAINER_INCLUDE_DIR and QT_AXSERVER_INCLUDE_DIR
-    find_path(QT_QAXCONTAINER_INCLUDE_DIR ActiveQt
-      PATHS ${QT_HEADERS_DIR}/ActiveQt
-      NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
-      )
-    find_path(QT_QAXSERVER_INCLUDE_DIR ActiveQt
-      PATHS ${QT_HEADERS_DIR}/ActiveQt
-      NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
-      )
-  endif()
-
-  # Set QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR
-  find_path(QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR QDesignerComponents
-    PATHS
-    ${QT_HEADERS_DIR}/QtDesigner
-    ${QT_LIBRARY_DIR}/QtDesigner.framework/Headers
-    NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
-    )
-
-  # Set QT_QTASSISTANT_INCLUDE_DIR
-  find_path(QT_QTASSISTANT_INCLUDE_DIR QtAssistant
-    PATHS
-    ${QT_HEADERS_DIR}/QtAssistant
-    ${QT_LIBRARY_DIR}/QtAssistant.framework/Headers
-    NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
-    )
-
-  # Set QT_QTASSISTANTCLIENT_INCLUDE_DIR
-  find_path(QT_QTASSISTANTCLIENT_INCLUDE_DIR QAssistantClient
-    PATHS
-    ${QT_HEADERS_DIR}/QtAssistant
-    ${QT_LIBRARY_DIR}/QtAssistant.framework/Headers
-    NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
-    )
-
-  ########################################
-  #
-  #       Setting the LIBRARY-Variables
-  #
-  ########################################
-
-  # find the libraries
-  foreach(QT_MODULE ${QT_MODULES})
-    string(TOUPPER ${QT_MODULE} _upper_qt_module)
-    find_library(QT_${_upper_qt_module}_LIBRARY_RELEASE
-                 NAMES ${QT_MODULE}${QT_LIBINFIX} ${QT_MODULE}${QT_LIBINFIX}4
-                 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
-        )
-    find_library(QT_${_upper_qt_module}_LIBRARY_DEBUG
-                 NAMES ${QT_MODULE}${QT_LIBINFIX}_debug ${QT_MODULE}${QT_LIBINFIX}d ${QT_MODULE}${QT_LIBINFIX}d4
-                 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
-        )
-    if(QT_${_upper_qt_module}_LIBRARY_RELEASE MATCHES "/${QT_MODULE}\\.framework$")
-      if(NOT EXISTS "${QT_${_upper_qt_module}_LIBRARY_RELEASE}/${QT_MODULE}")
-        # Release framework library file does not exist... Force to NOTFOUND:
-        set(QT_${_upper_qt_module}_LIBRARY_RELEASE "QT_${_upper_qt_module}_LIBRARY_RELEASE-NOTFOUND" CACHE FILEPATH "Path to a library." FORCE)
-      endif()
-    endif()
-    if(QT_${_upper_qt_module}_LIBRARY_DEBUG MATCHES "/${QT_MODULE}\\.framework$")
-      if(NOT EXISTS "${QT_${_upper_qt_module}_LIBRARY_DEBUG}/${QT_MODULE}")
-        # Debug framework library file does not exist... Force to NOTFOUND:
-        set(QT_${_upper_qt_module}_LIBRARY_DEBUG "QT_${_upper_qt_module}_LIBRARY_DEBUG-NOTFOUND" CACHE FILEPATH "Path to a library." FORCE)
-      endif()
-    endif()
-  endforeach()
-
-  # QtUiTools is sometimes not in the same directory as the other found libraries
-  # e.g. on Mac, its never a framework like the others are
-  if(QT_QTCORE_LIBRARY_RELEASE AND NOT QT_QTUITOOLS_LIBRARY_RELEASE)
-    find_library(QT_QTUITOOLS_LIBRARY_RELEASE NAMES QtUiTools${QT_LIBINFIX} PATHS ${QT_LIBRARY_DIR})
-  endif()
-
-  # Set QT_QTDESIGNERCOMPONENTS_LIBRARY
-  find_library(QT_QTDESIGNERCOMPONENTS_LIBRARY_RELEASE NAMES QtDesignerComponents${QT_LIBINFIX} QtDesignerComponents${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
-  find_library(QT_QTDESIGNERCOMPONENTS_LIBRARY_DEBUG   NAMES QtDesignerComponents${QT_LIBINFIX}_debug QtDesignerComponents${QT_LIBINFIX}d QtDesignerComponents${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
-
-  # Set QT_QTMAIN_LIBRARY
-  if(Q_WS_WIN)
-    find_library(QT_QTMAIN_LIBRARY_RELEASE NAMES qtmain${QT_LIBINFIX} PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
-    find_library(QT_QTMAIN_LIBRARY_DEBUG NAMES qtmain${QT_LIBINFIX}d PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
-  endif()
-
-  # Set QT_QTASSISTANTCLIENT_LIBRARY
-  find_library(QT_QTASSISTANTCLIENT_LIBRARY_RELEASE NAMES QtAssistantClient${QT_LIBINFIX} QtAssistantClient${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
-  find_library(QT_QTASSISTANTCLIENT_LIBRARY_DEBUG   NAMES QtAssistantClient${QT_LIBINFIX}_debug QtAssistantClient${QT_LIBINFIX}d QtAssistantClient${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR}  NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
-
-  # Set QT_QTASSISTANT_LIBRARY
-  find_library(QT_QTASSISTANT_LIBRARY_RELEASE NAMES QtAssistantClient${QT_LIBINFIX} QtAssistantClient${QT_LIBINFIX}4 QtAssistant${QT_LIBINFIX} QtAssistant${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
-  find_library(QT_QTASSISTANT_LIBRARY_DEBUG   NAMES QtAssistantClient${QT_LIBINFIX}_debug QtAssistantClient${QT_LIBINFIX}d QtAssistantClient${QT_LIBINFIX}d4 QtAssistant${QT_LIBINFIX}_debug QtAssistant${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
-
-  # Set QT_QTHELP_LIBRARY
-  find_library(QT_QTCLUCENE_LIBRARY_RELEASE NAMES QtCLucene${QT_LIBINFIX} QtCLucene${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
-  find_library(QT_QTCLUCENE_LIBRARY_DEBUG   NAMES QtCLucene${QT_LIBINFIX}_debug QtCLucene${QT_LIBINFIX}d QtCLucene${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
-  if(Q_WS_MAC AND QT_QTCORE_LIBRARY_RELEASE AND NOT QT_QTCLUCENE_LIBRARY_RELEASE)
-    find_library(QT_QTCLUCENE_LIBRARY_RELEASE NAMES QtCLucene${QT_LIBINFIX} PATHS ${QT_LIBRARY_DIR})
-  endif()
-
-
-  ############################################
-  #
-  # Check the existence of the libraries.
-  #
-  ############################################
-
-
-  macro(_qt4_add_target_depends_internal _QT_MODULE _PROPERTY)
-    if (TARGET Qt4::${_QT_MODULE})
-      foreach(_DEPEND ${ARGN})
-        set(_VALID_DEPENDS)
-        if (TARGET Qt4::Qt${_DEPEND})
-          list(APPEND _VALID_DEPENDS Qt4::Qt${_DEPEND})
-        endif()
-        if (_VALID_DEPENDS)
-          set_property(TARGET Qt4::${_QT_MODULE} APPEND PROPERTY
-            ${_PROPERTY}
-            "${_VALID_DEPENDS}"
-          )
-        endif()
-        set(_VALID_DEPENDS)
-      endforeach()
-    endif()
-  endmacro()
-
-  macro(_qt4_add_target_depends _QT_MODULE)
-    if (TARGET Qt4::${_QT_MODULE})
-      get_target_property(_configs Qt4::${_QT_MODULE} IMPORTED_CONFIGURATIONS)
-      _qt4_add_target_depends_internal(${_QT_MODULE} INTERFACE_LINK_LIBRARIES ${ARGN})
-      foreach(_config ${_configs})
-        _qt4_add_target_depends_internal(${_QT_MODULE} IMPORTED_LINK_INTERFACE_LIBRARIES_${_config} ${ARGN})
-      endforeach()
-      set(_configs)
-    endif()
-  endmacro()
-
-  macro(_qt4_add_target_private_depends _QT_MODULE)
-    if (TARGET Qt4::${_QT_MODULE})
-      get_target_property(_configs Qt4::${_QT_MODULE} IMPORTED_CONFIGURATIONS)
-      foreach(_config ${_configs})
-        _qt4_add_target_depends_internal(${_QT_MODULE} IMPORTED_LINK_DEPENDENT_LIBRARIES_${_config} ${ARGN})
-      endforeach()
-      set(_configs)
-    endif()
-  endmacro()
-
-
-  # Set QT_xyz_LIBRARY variable and add
-  # library include path to QT_INCLUDES
-  _QT4_ADJUST_LIB_VARS(QtCore)
-  set_property(TARGET Qt4::QtCore APPEND PROPERTY
-    INTERFACE_INCLUDE_DIRECTORIES
-      "${QT_MKSPECS_DIR}/default"
-      ${QT_INCLUDE_DIR}
-  )
-  set_property(TARGET Qt4::QtCore APPEND PROPERTY
-    INTERFACE_COMPILE_DEFINITIONS
-      $<$<NOT:$<CONFIG:Debug>>:QT_NO_DEBUG>
-  )
-  set_property(TARGET Qt4::QtCore PROPERTY
-    INTERFACE_QT_MAJOR_VERSION 4
-  )
-  set_property(TARGET Qt4::QtCore APPEND PROPERTY
-    COMPATIBLE_INTERFACE_STRING QT_MAJOR_VERSION
-  )
-
-  foreach(QT_MODULE ${QT_MODULES})
-    _QT4_ADJUST_LIB_VARS(${QT_MODULE})
-    _qt4_add_target_depends(${QT_MODULE} Core)
-  endforeach()
-
-  _QT4_ADJUST_LIB_VARS(QtAssistant)
-  _QT4_ADJUST_LIB_VARS(QtAssistantClient)
-  _QT4_ADJUST_LIB_VARS(QtCLucene)
-  _QT4_ADJUST_LIB_VARS(QtDesignerComponents)
-
-  # platform dependent libraries
-  if(Q_WS_WIN)
-    _QT4_ADJUST_LIB_VARS(qtmain)
-
-    _QT4_ADJUST_LIB_VARS(QAxServer)
-    if(QT_QAXSERVER_FOUND)
-      set_property(TARGET Qt4::QAxServer PROPERTY
-        INTERFACE_QT4_NO_LINK_QTMAIN ON
-      )
-      set_property(TARGET Qt4::QAxServer APPEND PROPERTY
-        COMPATIBLE_INTERFACE_BOOL QT4_NO_LINK_QTMAIN)
-    endif()
-
-    _QT4_ADJUST_LIB_VARS(QAxContainer)
-  endif()
-
-  # Only public dependencies are listed here.
-  # Eg, QtDBus links to QtXml, but users of QtDBus do not need to
-  # link to QtXml because QtDBus only uses it internally, not in public
-  # headers.
-  # Everything depends on QtCore, but that is covered above already
-  _qt4_add_target_depends(Qt3Support Sql Gui Network)
-  if (TARGET Qt4::Qt3Support)
-    # An additional define is required for QT3_SUPPORT
-    set_property(TARGET Qt4::Qt3Support APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS QT3_SUPPORT)
-  endif()
-  _qt4_add_target_depends(QtDeclarative Script Gui)
-  _qt4_add_target_depends(QtDesigner Gui)
-  _qt4_add_target_depends(QtHelp Gui)
-  _qt4_add_target_depends(QtMultimedia Gui)
-  _qt4_add_target_depends(QtOpenGL Gui)
-  _qt4_add_target_depends(QtSvg Gui)
-  _qt4_add_target_depends(QtWebKit Gui Network)
-
-  _qt4_add_target_private_depends(Qt3Support Xml)
-  if(QT_VERSION VERSION_GREATER 4.6)
-    _qt4_add_target_private_depends(QtSvg Xml)
-  endif()
-  _qt4_add_target_private_depends(QtDBus Xml)
-  _qt4_add_target_private_depends(QtUiTools Xml Gui)
-  _qt4_add_target_private_depends(QtHelp Sql Xml Network)
-  _qt4_add_target_private_depends(QtXmlPatterns Network)
-  _qt4_add_target_private_depends(QtScriptTools Gui)
-  _qt4_add_target_private_depends(QtWebKit XmlPatterns)
-  _qt4_add_target_private_depends(QtDeclarative XmlPatterns Svg Sql Gui)
-  _qt4_add_target_private_depends(QtMultimedia Gui)
-  _qt4_add_target_private_depends(QtOpenGL Gui)
-  if(QT_QAXSERVER_FOUND)
-    _qt4_add_target_private_depends(QAxServer Gui)
-  endif()
-  if(QT_QAXCONTAINER_FOUND)
-    _qt4_add_target_private_depends(QAxContainer Gui)
-  endif()
-  _qt4_add_target_private_depends(phonon Gui)
-  if(QT_QTDBUS_FOUND)
-    _qt4_add_target_private_depends(phonon DBus)
-  endif()
-
-  if (WIN32 AND NOT QT4_NO_LINK_QTMAIN)
-    set(_isExe $<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>)
-    set(_isWin32 $<BOOL:$<TARGET_PROPERTY:WIN32_EXECUTABLE>>)
-    set(_isNotExcluded $<NOT:$<BOOL:$<TARGET_PROPERTY:QT4_NO_LINK_QTMAIN>>>)
-    set(_isPolicyNEW $<TARGET_POLICY:CMP0020>)
-    get_target_property(_configs Qt4::QtCore IMPORTED_CONFIGURATIONS)
-    set_property(TARGET Qt4::QtCore APPEND PROPERTY
-        INTERFACE_LINK_LIBRARIES
-          $<$<AND:${_isExe},${_isWin32},${_isNotExcluded},${_isPolicyNEW}>:Qt4::qtmain>
-    )
-    foreach(_config ${_configs})
-      set_property(TARGET Qt4::QtCore APPEND PROPERTY
-        IMPORTED_LINK_INTERFACE_LIBRARIES_${_config}
-          $<$<AND:${_isExe},${_isWin32},${_isNotExcluded},${_isPolicyNEW}>:Qt4::qtmain>
-      )
-    endforeach()
-    unset(_configs)
-    unset(_isExe)
-    unset(_isWin32)
-    unset(_isNotExcluded)
-    unset(_isPolicyNEW)
-  endif()
-
-  #######################################
-  #
-  #       Check the executables of Qt
-  #          ( moc, uic, rcc )
-  #
-  #######################################
-
-
-  if(QT_QMAKE_CHANGED)
-    set(QT_UIC_EXECUTABLE NOTFOUND)
-    set(QT_MOC_EXECUTABLE NOTFOUND)
-    set(QT_UIC3_EXECUTABLE NOTFOUND)
-    set(QT_RCC_EXECUTABLE NOTFOUND)
-    set(QT_DBUSCPP2XML_EXECUTABLE NOTFOUND)
-    set(QT_DBUSXML2CPP_EXECUTABLE NOTFOUND)
-    set(QT_LUPDATE_EXECUTABLE NOTFOUND)
-    set(QT_LRELEASE_EXECUTABLE NOTFOUND)
-    set(QT_QCOLLECTIONGENERATOR_EXECUTABLE NOTFOUND)
-    set(QT_DESIGNER_EXECUTABLE NOTFOUND)
-    set(QT_LINGUIST_EXECUTABLE NOTFOUND)
-  endif()
-
-  macro(_find_qt4_program VAR NAME)
-    find_program(${VAR}
-      NAMES ${ARGN}
-      PATHS ${QT_BINARY_DIR}
-      NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
-      )
-    if (${VAR} AND NOT TARGET ${NAME})
-      add_executable(${NAME} IMPORTED)
-      set_property(TARGET ${NAME} PROPERTY IMPORTED_LOCATION ${${VAR}})
-    endif()
-  endmacro()
-
-  _find_qt4_program(QT_MOC_EXECUTABLE Qt4::moc moc-qt4 moc4 moc)
-  _find_qt4_program(QT_UIC_EXECUTABLE Qt4::uic uic-qt4 uic4 uic)
-  _find_qt4_program(QT_UIC3_EXECUTABLE Qt4::uic3 uic3)
-  _find_qt4_program(QT_RCC_EXECUTABLE Qt4::rcc rcc)
-  _find_qt4_program(QT_DBUSCPP2XML_EXECUTABLE Qt4::qdbuscpp2xml qdbuscpp2xml)
-  _find_qt4_program(QT_DBUSXML2CPP_EXECUTABLE Qt4::qdbusxml2cpp qdbusxml2cpp)
-  _find_qt4_program(QT_LUPDATE_EXECUTABLE Qt4::lupdate lupdate-qt4 lupdate4 lupdate)
-  _find_qt4_program(QT_LRELEASE_EXECUTABLE Qt4::lrelease lrelease-qt4 lrelease4 lrelease)
-  _find_qt4_program(QT_QCOLLECTIONGENERATOR_EXECUTABLE Qt4::qcollectiongenerator qcollectiongenerator-qt4 qcollectiongenerator)
-  _find_qt4_program(QT_DESIGNER_EXECUTABLE Qt4::designer designer-qt4 designer4 designer)
-  _find_qt4_program(QT_LINGUIST_EXECUTABLE Qt4::linguist linguist-qt4 linguist4 linguist)
-
-  if (NOT TARGET Qt4::qmake)
-    add_executable(Qt4::qmake IMPORTED)
-    set_property(TARGET Qt4::qmake PROPERTY IMPORTED_LOCATION ${QT_QMAKE_EXECUTABLE})
-  endif()
-
-  if (QT_MOC_EXECUTABLE)
-     set(QT_WRAP_CPP "YES")
-  endif ()
-
-  if (QT_UIC_EXECUTABLE)
-     set(QT_WRAP_UI "YES")
-  endif ()
-
-
-
-  mark_as_advanced( QT_UIC_EXECUTABLE QT_UIC3_EXECUTABLE QT_MOC_EXECUTABLE
-    QT_RCC_EXECUTABLE QT_DBUSXML2CPP_EXECUTABLE QT_DBUSCPP2XML_EXECUTABLE
-    QT_LUPDATE_EXECUTABLE QT_LRELEASE_EXECUTABLE QT_QCOLLECTIONGENERATOR_EXECUTABLE
-    QT_DESIGNER_EXECUTABLE QT_LINGUIST_EXECUTABLE)
-
-
-  # get the directory of the current file, used later on in the file
-  get_filename_component( _qt4_current_dir  "${CMAKE_CURRENT_LIST_FILE}" PATH)
-
-
-  ###############################################
-  #
-  #       configuration/system dependent settings
-  #
-  ###############################################
-
-  include("${_qt4_current_dir}/Qt4ConfigDependentSettings.cmake")
-
-
-  #######################################
-  #
-  #       Check the plugins of Qt
-  #
-  #######################################
-
-  set( QT_PLUGIN_TYPES accessible bearer codecs decorations designer gfxdrivers graphicssystems iconengines imageformats inputmethods mousedrivers phonon_backend script sqldrivers )
-
-  set( QT_ACCESSIBLE_PLUGINS qtaccessiblecompatwidgets qtaccessiblewidgets )
-  set( QT_BEARER_PLUGINS qcorewlanbearer qgenericbearer qnativewifibearer )
-  set( QT_CODECS_PLUGINS qcncodecs qjpcodecs qkrcodecs qtwcodecs )
-  set( QT_DECORATIONS_PLUGINS qdecorationdefault qdecorationwindows )
-  set( QT_DESIGNER_PLUGINS arthurplugin containerextension customwidgetplugin phononwidgets qdeclarativeview qt3supportwidgets qwebview taskmenuextension worldtimeclockplugin )
-  set( QT_GRAPHICSDRIVERS_PLUGINS qgfxtransformed qgfxvnc qscreenvfb )
-  set( QT_GRAPHICSSYSTEMS_PLUGINS qglgraphicssystem qtracegraphicssystem )
-  set( QT_ICONENGINES_PLUGINS qsvgicon )
-  set( QT_IMAGEFORMATS_PLUGINS qgif qjpeg qmng qico qsvg qtiff qtga )
-  set( QT_INPUTMETHODS_PLUGINS qimsw_multi )
-  set( QT_MOUSEDRIVERS_PLUGINS qwstslibmousehandler )
-  if(APPLE)
-    set( QT_PHONON_BACKEND_PLUGINS phonon_qt7 )
-  elseif(WIN32)
-    set( QT_PHONON_BACKEND_PLUGINS phonon_ds9 )
-  endif()
-  set( QT_SCRIPT_PLUGINS qtscriptdbus )
-  set( QT_SQLDRIVERS_PLUGINS qsqldb2 qsqlibase qsqlite qsqlite2 qsqlmysql qsqloci qsqlodbc qsqlpsql qsqltds )
-
-  set( QT_PHONON_PLUGINS ${QT_PHONON_BACKEND_PLUGINS} )
-  set( QT_QT3SUPPORT_PLUGINS qtaccessiblecompatwidgets )
-  set( QT_QTCORE_PLUGINS ${QT_BEARER_PLUGINS} ${QT_CODECS_PLUGINS} )
-  set( QT_QTGUI_PLUGINS qtaccessiblewidgets ${QT_IMAGEFORMATS_PLUGINS} ${QT_DECORATIONS_PLUGINS} ${QT_GRAPHICSDRIVERS_PLUGINS} ${QT_GRAPHICSSYSTEMS_PLUGINS} ${QT_INPUTMETHODS_PLUGINS} ${QT_MOUSEDRIVERS_PLUGINS} )
-  set( QT_QTSCRIPT_PLUGINS ${QT_SCRIPT_PLUGINS} )
-  set( QT_QTSQL_PLUGINS ${QT_SQLDRIVERS_PLUGINS} )
-  set( QT_QTSVG_PLUGINS qsvg qsvgicon )
-
-  if(QT_QMAKE_CHANGED)
-    foreach(QT_PLUGIN_TYPE ${QT_PLUGIN_TYPES})
-      string(TOUPPER ${QT_PLUGIN_TYPE} _upper_qt_plugin_type)
-      set(QT_${_upper_qt_plugin_type}_PLUGINS_DIR ${QT_PLUGINS_DIR}/${QT_PLUGIN_TYPE})
-      foreach(QT_PLUGIN ${QT_${_upper_qt_plugin_type}_PLUGINS})
-        string(TOUPPER ${QT_PLUGIN} _upper_qt_plugin)
-        unset(QT_${_upper_qt_plugin}_LIBRARY_RELEASE CACHE)
-        unset(QT_${_upper_qt_plugin}_LIBRARY_DEBUG CACHE)
-        unset(QT_${_upper_qt_plugin}_LIBRARY CACHE)
-        unset(QT_${_upper_qt_plugin}_PLUGIN_RELEASE CACHE)
-        unset(QT_${_upper_qt_plugin}_PLUGIN_DEBUG CACHE)
-        unset(QT_${_upper_qt_plugin}_PLUGIN CACHE)
-      endforeach()
-    endforeach()
-  endif()
-
-  # find_library works better than find_file but we need to set prefixes to only match plugins
-  foreach(QT_PLUGIN_TYPE ${QT_PLUGIN_TYPES})
-    string(TOUPPER ${QT_PLUGIN_TYPE} _upper_qt_plugin_type)
-    set(QT_${_upper_qt_plugin_type}_PLUGINS_DIR ${QT_PLUGINS_DIR}/${QT_PLUGIN_TYPE})
-    foreach(QT_PLUGIN ${QT_${_upper_qt_plugin_type}_PLUGINS})
-      string(TOUPPER ${QT_PLUGIN} _upper_qt_plugin)
-      if(QT_IS_STATIC)
-        find_library(QT_${_upper_qt_plugin}_LIBRARY_RELEASE
-                     NAMES ${QT_PLUGIN}${QT_LIBINFIX} ${QT_PLUGIN}${QT_LIBINFIX}4
-                     PATHS ${QT_${_upper_qt_plugin_type}_PLUGINS_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
-            )
-        find_library(QT_${_upper_qt_plugin}_LIBRARY_DEBUG
-                     NAMES ${QT_PLUGIN}${QT_LIBINFIX}_debug ${QT_PLUGIN}${QT_LIBINFIX}d ${QT_PLUGIN}${QT_LIBINFIX}d4
-                     PATHS ${QT_${_upper_qt_plugin_type}_PLUGINS_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
-            )
-        _QT4_ADJUST_LIB_VARS(${QT_PLUGIN})
-      else()
-        # find_library works easier/better than find_file but we need to set suffixes to only match plugins
-        set(CMAKE_FIND_LIBRARY_SUFFIXES_DEFAULT ${CMAKE_FIND_LIBRARY_SUFFIXES})
-        set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_SHARED_MODULE_SUFFIX} ${CMAKE_SHARED_LIBRARY_SUFFIX})
-        find_library(QT_${_upper_qt_plugin}_PLUGIN_RELEASE
-                     NAMES ${QT_PLUGIN}${QT_LIBINFIX} ${QT_PLUGIN}${QT_LIBINFIX}4
-                     PATHS ${QT_${_upper_qt_plugin_type}_PLUGINS_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
-            )
-        find_library(QT_${_upper_qt_plugin}_PLUGIN_DEBUG
-                     NAMES ${QT_PLUGIN}${QT_LIBINFIX}_debug ${QT_PLUGIN}${QT_LIBINFIX}d ${QT_PLUGIN}${QT_LIBINFIX}d4
-                     PATHS ${QT_${_upper_qt_plugin_type}_PLUGINS_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
-            )
-        mark_as_advanced(QT_${_upper_qt_plugin}_PLUGIN_RELEASE QT_${_upper_qt_plugin}_PLUGIN_DEBUG)
-        set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_DEFAULT})
-      endif()
-    endforeach()
-  endforeach()
-
-
-  ######################################
-  #
-  #       Macros for building Qt files
-  #
-  ######################################
-
-  include("${_qt4_current_dir}/Qt4Macros.cmake")
-
-endif()
-
-#support old QT_MIN_VERSION if set, but not if version is supplied by find_package()
-if(NOT Qt4_FIND_VERSION AND QT_MIN_VERSION)
-  set(Qt4_FIND_VERSION ${QT_MIN_VERSION})
-endif()
-
-if( Qt4_FIND_COMPONENTS )
-
-  # if components specified in find_package(), make sure each of those pieces were found
-  set(_QT4_FOUND_REQUIRED_VARS QT_QMAKE_EXECUTABLE QT_MOC_EXECUTABLE QT_RCC_EXECUTABLE QT_INCLUDE_DIR QT_LIBRARY_DIR)
-  foreach( component ${Qt4_FIND_COMPONENTS} )
-    string( TOUPPER ${component} _COMPONENT )
-    if(${_COMPONENT} STREQUAL "QTMAIN")
-      if(Q_WS_WIN)
-        set(_QT4_FOUND_REQUIRED_VARS ${_QT4_FOUND_REQUIRED_VARS} QT_${_COMPONENT}_LIBRARY)
-      endif()
-    else()
-      set(_QT4_FOUND_REQUIRED_VARS ${_QT4_FOUND_REQUIRED_VARS} QT_${_COMPONENT}_INCLUDE_DIR QT_${_COMPONENT}_LIBRARY)
-    endif()
-  endforeach()
-
-  if(Qt4_FIND_COMPONENTS MATCHES QtGui)
-    set(_QT4_FOUND_REQUIRED_VARS ${_QT4_FOUND_REQUIRED_VARS} QT_UIC_EXECUTABLE)
-  endif()
-
-else()
-
-  # if no components specified, we'll make a default set of required variables to say Qt is found
-  set(_QT4_FOUND_REQUIRED_VARS QT_QMAKE_EXECUTABLE QT_MOC_EXECUTABLE QT_RCC_EXECUTABLE QT_UIC_EXECUTABLE QT_INCLUDE_DIR
-    QT_LIBRARY_DIR QT_QTCORE_LIBRARY)
-
-endif()
-
-if (NOT QT_VERSION_MAJOR EQUAL 4)
-    set(VERSION_MSG "Found unsuitable Qt version \"${QTVERSION}\" from ${QT_QMAKE_EXECUTABLE}")
-    set(Qt4_FOUND FALSE)
-    if(Qt4_FIND_REQUIRED)
-       message( FATAL_ERROR "${VERSION_MSG}, this code requires Qt 4.x")
-    else()
-      if(NOT Qt4_FIND_QUIETLY)
-         message( STATUS    "${VERSION_MSG}")
-      endif()
-    endif()
-else()
-  FIND_PACKAGE_HANDLE_STANDARD_ARGS(Qt4 FOUND_VAR Qt4_FOUND
-    REQUIRED_VARS ${_QT4_FOUND_REQUIRED_VARS}
-    VERSION_VAR QTVERSION
-    )
-endif()
-
-#######################################
-#
-#       compatibility settings
-#
-#######################################
-# Backwards compatibility for CMake1.4 and 1.2
-set (QT_MOC_EXE ${QT_MOC_EXECUTABLE} )
-set (QT_UIC_EXE ${QT_UIC_EXECUTABLE} )
-set( QT_QT_LIBRARY "")
-set(QT4_FOUND ${Qt4_FOUND})
-set(QT_FOUND ${Qt4_FOUND})
-
diff --git a/share/cmake-3.18/Modules/FindRuby.cmake b/share/cmake-3.18/Modules/FindRuby.cmake
deleted file mode 100644
index 1bdee60..0000000
--- a/share/cmake-3.18/Modules/FindRuby.cmake
+++ /dev/null
@@ -1,512 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindRuby
---------
-
-Find Ruby
-
-This module finds if Ruby is installed and determines where the
-include files and libraries are.  Ruby 1.8 through 2.7 are
-supported.
-
-The minimum required version of Ruby can be specified using the
-standard syntax, e.g.
-
-.. code-block:: cmake
-
-  find_package(Ruby 2.5.1 EXACT REQUIRED)
-  # OR
-  find_package(Ruby 2.4)
-
-It also determines what the name of the library is.
-
-Virtual environments such as RVM are handled as well, by passing
-the argument ``Ruby_FIND_VIRTUALENV``
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``Ruby_FOUND``
-  set to true if ruby was found successfully
-``Ruby_EXECUTABLE``
-  full path to the ruby binary
-``Ruby_INCLUDE_DIRS``
-  include dirs to be used when using the ruby library
-``Ruby_LIBRARIES``
-  libraries needed to use ruby from C.
-``Ruby_VERSION``
-  the version of ruby which was found, e.g. "1.8.7"
-``Ruby_VERSION_MAJOR``
-  Ruby major version.
-``Ruby_VERSION_MINOR``
-  Ruby minor version.
-``Ruby_VERSION_PATCH``
-  Ruby patch version.
-
-
-Also:
-
-``Ruby_INCLUDE_PATH``
-  same as Ruby_INCLUDE_DIRS, only provided for compatibility reasons, don't use it
-
-Hints
-^^^^^
-
-``Ruby_ROOT_DIR``
-  Define the root directory of a Ruby installation.
-
-``Ruby_FIND_VIRTUALENV``
-  This variable defines the handling of virtual environments managed by
-  ``rvm``. It is meaningful only when a virtual environment
-  is active (i.e. the ``rvm`` script has been evaluated or at least the
-  ``MY_RUBY_HOME`` environment variable is set).
-  The ``Ruby_FIND_VIRTUALENV`` variable can be set to empty or
-  one of the following:
-
-  * ``FIRST``: The virtual environment is used before any other standard
-    paths to look-up for the interpreter. This is the default.
-  * ``ONLY``: Only the virtual environment is used to look-up for the
-    interpreter.
-  * ``STANDARD``: The virtual environment is not used to look-up for the
-    interpreter (assuming it isn't still in the PATH...)
-
-#]=======================================================================]
-
-# Backwards compatibility
-# Define camel case versions of input variables
-foreach(UPPER
-    RUBY_EXECUTABLE
-    RUBY_LIBRARY
-    RUBY_INCLUDE_DIR
-    RUBY_CONFIG_INCLUDE_DIR
-    )
-    if (DEFINED ${UPPER})
-      string(REPLACE "RUBY_" "Ruby_" Camel ${UPPER})
-        if (NOT DEFINED ${Camel})
-            set(${Camel} ${${UPPER}})
-        endif()
-    endif()
-endforeach()
-
-#   Ruby_ARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"archdir"@:>@)'`
-#   Ruby_SITEARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitearchdir"@:>@)'`
-#   Ruby_SITEDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitelibdir"@:>@)'`
-#   Ruby_LIBDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"libdir"@:>@)'`
-#   Ruby_LIBRUBYARG=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"LIBRUBYARG_SHARED"@:>@)'`
-
-# uncomment the following line to get debug output for this file
-# set(_Ruby_DEBUG_OUTPUT TRUE)
-
-# Determine the list of possible names of the ruby executable depending
-# on which version of ruby is required
-set(_Ruby_POSSIBLE_EXECUTABLE_NAMES ruby)
-
-# If not specified, allow everything as far back as 1.8.0
-if(NOT DEFINED Ruby_FIND_VERSION_MAJOR)
-  set(Ruby_FIND_VERSION "1.8.0")
-  set(Ruby_FIND_VERSION_MAJOR 1)
-  set(Ruby_FIND_VERSION_MINOR 8)
-  set(Ruby_FIND_VERSION_PATCH 0)
-endif()
-
-if(_Ruby_DEBUG_OUTPUT)
-  message("Ruby_FIND_VERSION=${Ruby_FIND_VERSION}")
-  message("Ruby_FIND_VERSION_MAJOR=${Ruby_FIND_VERSION_MAJOR}")
-  message("Ruby_FIND_VERSION_MINOR=${Ruby_FIND_VERSION_MINOR}")
-  message("Ruby_FIND_VERSION_PATCH=${Ruby_FIND_VERSION_PATCH}")
-endif()
-
-set(Ruby_FIND_VERSION_SHORT_NODOT "${Ruby_FIND_VERSION_MAJOR}${Ruby_FIND_VERSION_MINOR}")
-
-# Set name of possible executables, ignoring the minor
-# Eg:
-# 2.1.1 => from ruby27 to ruby21 included
-# 2.1   => from ruby27 to ruby21 included
-# 2     => from ruby26 to ruby20 included
-# empty => from ruby27 to ruby18 included
-if(NOT Ruby_FIND_VERSION_EXACT)
-
-  foreach(_ruby_version RANGE 27 18 -1)
-    string(SUBSTRING "${_ruby_version}" 0 1 _ruby_major_version)
-    string(SUBSTRING "${_ruby_version}" 1 1 _ruby_minor_version)
-
-    if(NOT "${_ruby_major_version}${_ruby_minor_version}" VERSION_LESS ${Ruby_FIND_VERSION_SHORT_NODOT})
-      # Append both rubyX.Y and rubyXY (eg: ruby2.7 ruby27)
-      list(APPEND _Ruby_POSSIBLE_EXECUTABLE_NAMES ruby${_ruby_major_version}.${_ruby_minor_version} ruby${_ruby_major_version}${_ruby_minor_version})
-    else()
-      break()
-    endif()
-
-  endforeach()
-
-  list(REMOVE_DUPLICATES _Ruby_POSSIBLE_EXECUTABLE_NAMES)
-endif()
-
-# virtual environments handling (eg RVM)
-if (DEFINED ENV{MY_RUBY_HOME})
-  if(_Ruby_DEBUG_OUTPUT)
-    message("My ruby home is defined: $ENV{MY_RUBY_HOME}")
-  endif()
-
-  if (DEFINED Ruby_FIND_VIRTUALENV)
-    if (NOT Ruby_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY|STANDARD)$")
-      message (AUTHOR_WARNING "FindRuby: ${Ruby_FIND_VIRTUALENV}: invalid value for 'Ruby_FIND_VIRTUALENV'. 'FIRST', 'ONLY' or 'STANDARD' expected. 'FIRST' will be used instead.")
-      set (_Ruby_FIND_VIRTUALENV "FIRST")
-    else()
-      set (_Ruby_FIND_VIRTUALENV ${Ruby_FIND_VIRTUALENV})
-    endif()
-  else()
-    set (_Ruby_FIND_VIRTUALENV FIRST)
-  endif()
-else()
-  if (DEFINED Ruby_FIND_VIRTUALENV)
-    message("Environment variable MY_RUBY_HOME isn't set, defaulting back to Ruby_FIND_VIRTUALENV=STANDARD")
-  endif()
-  set (_Ruby_FIND_VIRTUALENV STANDARD)
-endif()
-
-if(_Ruby_DEBUG_OUTPUT)
-  message("_Ruby_POSSIBLE_EXECUTABLE_NAMES=${_Ruby_POSSIBLE_EXECUTABLE_NAMES}")
-  message("_Ruby_FIND_VIRTUALENV=${_Ruby_FIND_VIRTUALENV}")
-endif()
-
-function (_RUBY_VALIDATE_INTERPRETER)
-  if (NOT Ruby_EXECUTABLE)
-    return()
-  endif()
-
-  cmake_parse_arguments (PARSE_ARGV 0 _RVI "EXACT;CHECK_EXISTS" "" "")
-  if (_RVI_UNPARSED_ARGUMENTS)
-    set (expected_version ${_RVI_UNPARSED_ARGUMENTS})
-  else()
-    unset (expected_version)
-  endif()
-
-  if (_RVI_CHECK_EXISTS AND NOT EXISTS "${Ruby_EXECUTABLE}")
-    # interpreter does not exist anymore
-    set (_Ruby_Interpreter_REASON_FAILURE "Cannot find the interpreter \"${Ruby_EXECUTABLE}\"")
-    set_property (CACHE Ruby_EXECUTABLE PROPERTY VALUE "Ruby_EXECUTABLE-NOTFOUND")
-    return()
-  endif()
-
-  # Check the version it returns
-  # executable found must have a specific version
-  execute_process (COMMAND "${Ruby_EXECUTABLE}" -e "puts RUBY_VERSION"
-                   RESULT_VARIABLE result
-                   OUTPUT_VARIABLE version
-                   ERROR_QUIET
-                   OUTPUT_STRIP_TRAILING_WHITESPACE)
-  if (result OR (_RVI_EXACT AND NOT version VERSION_EQUAL expected_version) OR (version VERSION_LESS expected_version))
-    # interpreter not usable or has wrong major version
-    if (result)
-      set (_Ruby_Interpreter_REASON_FAILURE "Cannot use the interpreter \"${Ruby_EXECUTABLE}\"")
-    else()
-      set (_Ruby_Interpreter_REASON_FAILURE "Wrong major version for the interpreter \"${Ruby_EXECUTABLE}\"")
-    endif()
-    set_property (CACHE Ruby_EXECUTABLE PROPERTY VALUE "Ruby_EXECUTABLE-NOTFOUND")
-    return()
-  endif()
-
-endfunction()
-
-while(1)
-  # Virtual environments handling
-  if(_Ruby_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY)$")
-    if(_Ruby_DEBUG_OUTPUT)
-      message("Inside Matches")
-    endif()
-    find_program (Ruby_EXECUTABLE
-                  NAMES ${_Ruby_POSSIBLE_EXECUTABLE_NAMES}
-                  NAMES_PER_DIR
-                  PATHS ENV MY_RUBY_HOME
-                  PATH_SUFFIXES bin Scripts
-                  NO_CMAKE_PATH
-                  NO_CMAKE_ENVIRONMENT_PATH
-                  NO_SYSTEM_ENVIRONMENT_PATH
-                  NO_CMAKE_SYSTEM_PATH)
-
-    if(_Ruby_DEBUG_OUTPUT)
-      message("Ruby_EXECUTABLE=${Ruby_EXECUTABLE}")
-    endif()
-
-    _RUBY_VALIDATE_INTERPRETER (${Ruby_FIND_VERSION}})
-    if(Ruby_EXECUTABLE)
-      break()
-    endif()
-    if(NOT _Ruby_FIND_VIRTUALENV STREQUAL "ONLY")
-      break()
-    endif()
-  elseif(_Ruby_DEBUG_OUTPUT)
-    message("_Ruby_FIND_VIRTUALENV doesn't match: ${_Ruby_FIND_VIRTUALENV}")
-  endif()
-
-  # try using standard paths
-  find_program (Ruby_EXECUTABLE
-                NAMES ${_Ruby_POSSIBLE_EXECUTABLE_NAMES}
-                NAMES_PER_DIR)
-  _RUBY_VALIDATE_INTERPRETER (${Ruby_FIND_VERSION})
-  if (Ruby_EXECUTABLE)
-    break()
-  endif()
-
-  break()
-endwhile()
-
-if(Ruby_EXECUTABLE AND NOT Ruby_VERSION_MAJOR)
-  function(_RUBY_CONFIG_VAR RBVAR OUTVAR)
-    execute_process(COMMAND ${Ruby_EXECUTABLE} -r rbconfig -e "print RbConfig::CONFIG['${RBVAR}']"
-      RESULT_VARIABLE _Ruby_SUCCESS
-      OUTPUT_VARIABLE _Ruby_OUTPUT
-      ERROR_QUIET)
-    if(_Ruby_SUCCESS OR _Ruby_OUTPUT STREQUAL "")
-      execute_process(COMMAND ${Ruby_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['${RBVAR}']"
-        RESULT_VARIABLE _Ruby_SUCCESS
-        OUTPUT_VARIABLE _Ruby_OUTPUT
-        ERROR_QUIET)
-    endif()
-    set(${OUTVAR} "${_Ruby_OUTPUT}" PARENT_SCOPE)
-  endfunction()
-
-
-  # query the ruby version
-  _RUBY_CONFIG_VAR("MAJOR" Ruby_VERSION_MAJOR)
-  _RUBY_CONFIG_VAR("MINOR" Ruby_VERSION_MINOR)
-  _RUBY_CONFIG_VAR("TEENY" Ruby_VERSION_PATCH)
-
-  # query the different directories
-  _RUBY_CONFIG_VAR("archdir" Ruby_ARCH_DIR)
-  _RUBY_CONFIG_VAR("arch" Ruby_ARCH)
-  _RUBY_CONFIG_VAR("rubyhdrdir" Ruby_HDR_DIR)
-  _RUBY_CONFIG_VAR("rubyarchhdrdir" Ruby_ARCHHDR_DIR)
-  _RUBY_CONFIG_VAR("libdir" Ruby_POSSIBLE_LIB_DIR)
-  _RUBY_CONFIG_VAR("rubylibdir" Ruby_RUBY_LIB_DIR)
-
-  # site_ruby
-  _RUBY_CONFIG_VAR("sitearchdir" Ruby_SITEARCH_DIR)
-  _RUBY_CONFIG_VAR("sitelibdir" Ruby_SITELIB_DIR)
-
-  # vendor_ruby available ?
-  execute_process(COMMAND ${Ruby_EXECUTABLE} -r vendor-specific -e "print 'true'"
-    OUTPUT_VARIABLE Ruby_HAS_VENDOR_RUBY  ERROR_QUIET)
-
-  if(Ruby_HAS_VENDOR_RUBY)
-    _RUBY_CONFIG_VAR("vendorlibdir" Ruby_VENDORLIB_DIR)
-    _RUBY_CONFIG_VAR("vendorarchdir" Ruby_VENDORARCH_DIR)
-  endif()
-
-  # save the results in the cache so we don't have to run ruby the next time again
-  set(Ruby_VERSION_MAJOR    ${Ruby_VERSION_MAJOR}    CACHE PATH "The Ruby major version" FORCE)
-  set(Ruby_VERSION_MINOR    ${Ruby_VERSION_MINOR}    CACHE PATH "The Ruby minor version" FORCE)
-  set(Ruby_VERSION_PATCH    ${Ruby_VERSION_PATCH}    CACHE PATH "The Ruby patch version" FORCE)
-  set(Ruby_ARCH_DIR         ${Ruby_ARCH_DIR}         CACHE PATH "The Ruby arch dir" FORCE)
-  set(Ruby_HDR_DIR          ${Ruby_HDR_DIR}          CACHE PATH "The Ruby header dir (1.9+)" FORCE)
-  set(Ruby_ARCHHDR_DIR      ${Ruby_ARCHHDR_DIR}      CACHE PATH "The Ruby arch header dir (2.0+)" FORCE)
-  set(Ruby_POSSIBLE_LIB_DIR ${Ruby_POSSIBLE_LIB_DIR} CACHE PATH "The Ruby lib dir" FORCE)
-  set(Ruby_RUBY_LIB_DIR     ${Ruby_RUBY_LIB_DIR}     CACHE PATH "The Ruby ruby-lib dir" FORCE)
-  set(Ruby_SITEARCH_DIR     ${Ruby_SITEARCH_DIR}     CACHE PATH "The Ruby site arch dir" FORCE)
-  set(Ruby_SITELIB_DIR      ${Ruby_SITELIB_DIR}      CACHE PATH "The Ruby site lib dir" FORCE)
-  set(Ruby_HAS_VENDOR_RUBY  ${Ruby_HAS_VENDOR_RUBY}  CACHE BOOL "Vendor Ruby is available" FORCE)
-  set(Ruby_VENDORARCH_DIR   ${Ruby_VENDORARCH_DIR}   CACHE PATH "The Ruby vendor arch dir" FORCE)
-  set(Ruby_VENDORLIB_DIR    ${Ruby_VENDORLIB_DIR}    CACHE PATH "The Ruby vendor lib dir" FORCE)
-
-  mark_as_advanced(
-    Ruby_ARCH_DIR
-    Ruby_ARCH
-    Ruby_HDR_DIR
-    Ruby_ARCHHDR_DIR
-    Ruby_POSSIBLE_LIB_DIR
-    Ruby_RUBY_LIB_DIR
-    Ruby_SITEARCH_DIR
-    Ruby_SITELIB_DIR
-    Ruby_HAS_VENDOR_RUBY
-    Ruby_VENDORARCH_DIR
-    Ruby_VENDORLIB_DIR
-    Ruby_VERSION_MAJOR
-    Ruby_VERSION_MINOR
-    Ruby_VERSION_PATCH
-    )
-endif()
-
-# In case Ruby_EXECUTABLE could not be executed (e.g. cross compiling)
-# try to detect which version we found. This is not too good.
-if(Ruby_EXECUTABLE AND NOT Ruby_VERSION_MAJOR)
-  # by default assume 1.8.0
-  set(Ruby_VERSION_MAJOR 1)
-  set(Ruby_VERSION_MINOR 8)
-  set(Ruby_VERSION_PATCH 0)
-  # check whether we found 1.9.x
-  if(${Ruby_EXECUTABLE} MATCHES "ruby1\\.?9")
-    set(Ruby_VERSION_MAJOR 1)
-    set(Ruby_VERSION_MINOR 9)
-  endif()
-  # check whether we found 2.0.x
-  if(${Ruby_EXECUTABLE} MATCHES "ruby2\\.?0")
-    set(Ruby_VERSION_MAJOR 2)
-    set(Ruby_VERSION_MINOR 0)
-  endif()
-  # check whether we found 2.1.x
-  if(${Ruby_EXECUTABLE} MATCHES "ruby2\\.?1")
-    set(Ruby_VERSION_MAJOR 2)
-    set(Ruby_VERSION_MINOR 1)
-  endif()
-  # check whether we found 2.2.x
-  if(${Ruby_EXECUTABLE} MATCHES "ruby2\\.?2")
-    set(Ruby_VERSION_MAJOR 2)
-    set(Ruby_VERSION_MINOR 2)
-  endif()
-  # check whether we found 2.3.x
-  if(${Ruby_EXECUTABLE} MATCHES "ruby2\\.?3")
-    set(Ruby_VERSION_MAJOR 2)
-    set(Ruby_VERSION_MINOR 3)
-  endif()
-  # check whether we found 2.4.x
-  if(${Ruby_EXECUTABLE} MATCHES "ruby2\\.?4")
-    set(Ruby_VERSION_MAJOR 2)
-    set(Ruby_VERSION_MINOR 4)
-  endif()
-  # check whether we found 2.5.x
-  if(${Ruby_EXECUTABLE} MATCHES "ruby2\\.?5")
-    set(Ruby_VERSION_MAJOR 2)
-    set(Ruby_VERSION_MINOR 5)
-  endif()
-  # check whether we found 2.6.x
-  if(${Ruby_EXECUTABLE} MATCHES "ruby2\\.?6")
-    set(Ruby_VERSION_MAJOR 2)
-    set(Ruby_VERSION_MINOR 6)
-  endif()
-  # check whether we found 2.7.x
-  if(${Ruby_EXECUTABLE} MATCHES "ruby2\\.?7")
-    set(Ruby_VERSION_MAJOR 2)
-    set(Ruby_VERSION_MINOR 7)
-  endif()
-endif()
-
-if(Ruby_VERSION_MAJOR)
-  set(Ruby_VERSION "${Ruby_VERSION_MAJOR}.${Ruby_VERSION_MINOR}.${Ruby_VERSION_PATCH}")
-  set(_Ruby_VERSION_SHORT "${Ruby_VERSION_MAJOR}.${Ruby_VERSION_MINOR}")
-  set(_Ruby_VERSION_SHORT_NODOT "${Ruby_VERSION_MAJOR}${Ruby_VERSION_MINOR}")
-  set(_Ruby_NODOT_VERSION "${Ruby_VERSION_MAJOR}${Ruby_VERSION_MINOR}${Ruby_VERSION_PATCH}")
-endif()
-
-# FIXME: Currently we require both the interpreter and development components to be found
-# in order to use either.  See issue #20474.
-find_path(Ruby_INCLUDE_DIR
-  NAMES ruby.h
-  HINTS
-    ${Ruby_HDR_DIR}
-    ${Ruby_ARCH_DIR}
-    /usr/lib/ruby/${_Ruby_VERSION_SHORT}/i586-linux-gnu/
-)
-
-set(Ruby_INCLUDE_DIRS ${Ruby_INCLUDE_DIR})
-
-# if ruby > 1.8 is required or if ruby > 1.8 was found, search for the config.h dir
-if( Ruby_FIND_VERSION VERSION_GREATER_EQUAL "1.9"  OR  Ruby_VERSION VERSION_GREATER_EQUAL "1.9"  OR  Ruby_HDR_DIR)
-  find_path(Ruby_CONFIG_INCLUDE_DIR
-    NAMES ruby/config.h  config.h
-    HINTS
-      ${Ruby_HDR_DIR}/${Ruby_ARCH}
-      ${Ruby_ARCH_DIR}
-      ${Ruby_ARCHHDR_DIR}
-  )
-
-  set(Ruby_INCLUDE_DIRS ${Ruby_INCLUDE_DIRS} ${Ruby_CONFIG_INCLUDE_DIR} )
-endif()
-
-
-# Determine the list of possible names for the ruby library
-set(_Ruby_POSSIBLE_LIB_NAMES ruby ruby-static ruby${_Ruby_VERSION_SHORT} ruby${_Ruby_VERSION_SHORT_NODOT} ruby-${_Ruby_VERSION_SHORT} ruby-${Ruby_VERSION})
-
-if(WIN32)
-  if(MSVC_TOOLSET_VERSION)
-    set(_Ruby_MSVC_RUNTIME "${MSVC_TOOLSET_VERSION}")
-  else()
-    set(_Ruby_MSVC_RUNTIME "")
-  endif()
-
-  set(_Ruby_ARCH_PREFIX "")
-  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-    set(_Ruby_ARCH_PREFIX "x64-")
-  endif()
-
-  list(APPEND _Ruby_POSSIBLE_LIB_NAMES
-             "${_Ruby_ARCH_PREFIX}msvcr${_Ruby_MSVC_RUNTIME}-ruby${_Ruby_NODOT_VERSION}"
-             "${_Ruby_ARCH_PREFIX}msvcr${_Ruby_MSVC_RUNTIME}-ruby${_Ruby_NODOT_VERSION}-static"
-             "${_Ruby_ARCH_PREFIX}msvcrt-ruby${_Ruby_NODOT_VERSION}"
-             "${_Ruby_ARCH_PREFIX}msvcrt-ruby${_Ruby_NODOT_VERSION}-static" )
-endif()
-
-find_library(Ruby_LIBRARY NAMES ${_Ruby_POSSIBLE_LIB_NAMES} HINTS ${Ruby_POSSIBLE_LIB_DIR} )
-
-set(_Ruby_REQUIRED_VARS Ruby_EXECUTABLE Ruby_INCLUDE_DIR Ruby_LIBRARY)
-if(_Ruby_VERSION_SHORT_NODOT GREATER 18)
-  list(APPEND _Ruby_REQUIRED_VARS Ruby_CONFIG_INCLUDE_DIR)
-endif()
-
-if(_Ruby_DEBUG_OUTPUT)
-  message(STATUS "--------FindRuby.cmake debug------------")
-  message(STATUS "_Ruby_POSSIBLE_EXECUTABLE_NAMES: ${_Ruby_POSSIBLE_EXECUTABLE_NAMES}")
-  message(STATUS "_Ruby_POSSIBLE_LIB_NAMES: ${_Ruby_POSSIBLE_LIB_NAMES}")
-  message(STATUS "Ruby_ARCH_DIR: ${Ruby_ARCH_DIR}")
-  message(STATUS "Ruby_HDR_DIR: ${Ruby_HDR_DIR}")
-  message(STATUS "Ruby_POSSIBLE_LIB_DIR: ${Ruby_POSSIBLE_LIB_DIR}")
-  message(STATUS "Found Ruby_VERSION: \"${Ruby_VERSION}\" , short: \"${_Ruby_VERSION_SHORT}\", nodot: \"${_Ruby_VERSION_SHORT_NODOT}\"")
-  message(STATUS "_Ruby_REQUIRED_VARS: ${_Ruby_REQUIRED_VARS}")
-  message(STATUS "Ruby_EXECUTABLE: ${Ruby_EXECUTABLE}")
-  message(STATUS "Ruby_LIBRARY: ${Ruby_LIBRARY}")
-  message(STATUS "Ruby_INCLUDE_DIR: ${Ruby_INCLUDE_DIR}")
-  message(STATUS "Ruby_CONFIG_INCLUDE_DIR: ${Ruby_CONFIG_INCLUDE_DIR}")
-  message(STATUS "--------------------")
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Ruby  REQUIRED_VARS  ${_Ruby_REQUIRED_VARS}
-                                        VERSION_VAR Ruby_VERSION )
-
-if(Ruby_FOUND)
-  set(Ruby_LIBRARIES ${Ruby_LIBRARY})
-endif()
-
-mark_as_advanced(
-  Ruby_EXECUTABLE
-  Ruby_LIBRARY
-  Ruby_INCLUDE_DIR
-  Ruby_CONFIG_INCLUDE_DIR
-  )
-
-# Set some variables for compatibility with previous version of this file (no need to provide a CamelCase version of that...)
-set(RUBY_POSSIBLE_LIB_PATH ${Ruby_POSSIBLE_LIB_DIR})
-set(RUBY_RUBY_LIB_PATH ${Ruby_RUBY_LIB_DIR})
-set(RUBY_INCLUDE_PATH ${Ruby_INCLUDE_DIRS})
-
-# Backwards compatibility
-# Define upper case versions of output variables
-foreach(Camel
-    Ruby_EXECUTABLE
-    Ruby_INCLUDE_DIRS
-    Ruby_LIBRARY
-    Ruby_VERSION
-    Ruby_VERSION_MAJOR
-    Ruby_VERSION_MINOR
-    Ruby_VERSION_PATCH
-    Ruby_INCLUDE_PATH
-
-    Ruby_ARCH_DIR
-    Ruby_ARCH
-    Ruby_HDR_DIR
-    Ruby_ARCHHDR_DIR
-    Ruby_POSSIBLE_LIB_DIR
-    Ruby_RUBY_LIB_DIR
-    Ruby_SITEARCH_DIR
-    Ruby_SITELIB_DIR
-    Ruby_HAS_VENDOR_RUBY
-    Ruby_VENDORARCH_DIR
-
-    )
-    string(TOUPPER ${Camel} UPPER)
-    set(${UPPER} ${${Camel}})
-endforeach()
diff --git a/share/cmake-3.18/Modules/FindSDL.cmake b/share/cmake-3.18/Modules/FindSDL.cmake
deleted file mode 100644
index 8d793a9..0000000
--- a/share/cmake-3.18/Modules/FindSDL.cmake
+++ /dev/null
@@ -1,190 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindSDL
--------
-
-Locate SDL library
-
-This module defines
-
-::
-
-  SDL_LIBRARY, the name of the library to link against
-  SDL_FOUND, if false, do not try to link to SDL
-  SDL_INCLUDE_DIR, where to find SDL.h
-  SDL_VERSION_STRING, human-readable string containing the version of SDL
-
-
-
-This module responds to the flag:
-
-::
-
-  SDL_BUILDING_LIBRARY
-    If this is defined, then no SDL_main will be linked in because
-    only applications need main().
-    Otherwise, it is assumed you are building an application and this
-    module will attempt to locate and set the proper link flags
-    as part of the returned SDL_LIBRARY variable.
-
-
-
-Don't forget to include SDLmain.h and SDLmain.m your project for the
-OS X framework based version.  (Other versions link to -lSDLmain which
-this module will try to find on your behalf.) Also for OS X, this
-module will automatically add the -framework Cocoa on your behalf.
-
-
-
-Additional Note: If you see an empty SDL_LIBRARY_TEMP in your
-configuration and no SDL_LIBRARY, it means CMake did not find your SDL
-library (SDL.dll, libsdl.so, SDL.framework, etc).  Set
-SDL_LIBRARY_TEMP to point to your SDL library, and configure again.
-Similarly, if you see an empty SDLMAIN_LIBRARY, you should set this
-value as appropriate.  These values are used to generate the final
-SDL_LIBRARY variable, but when these values are unset, SDL_LIBRARY
-does not get created.
-
-
-
-$SDLDIR is an environment variable that would correspond to the
-./configure --prefix=$SDLDIR used in building SDL.  l.e.galup 9-20-02
-
-Modified by Eric Wing.  Added code to assist with automated building
-by using environmental variables and providing a more
-controlled/consistent search behavior.  Added new modifications to
-recognize OS X frameworks and additional Unix paths (FreeBSD, etc).
-Also corrected the header search path to follow "proper" SDL
-guidelines.  Added a search for SDLmain which is needed by some
-platforms.  Added a search for threads which is needed by some
-platforms.  Added needed compile switches for MinGW.
-
-On OSX, this will prefer the Framework version (if found) over others.
-People will have to manually change the cache values of SDL_LIBRARY to
-override this selection or set the CMake environment
-CMAKE_INCLUDE_PATH to modify the search paths.
-
-Note that the header path has changed from SDL/SDL.h to just SDL.h
-This needed to change because "proper" SDL convention is #include
-"SDL.h", not <SDL/SDL.h>.  This is done for portability reasons
-because not all systems place things in SDL/ (see FreeBSD).
-#]=======================================================================]
-
-find_path(SDL_INCLUDE_DIR SDL.h
-  HINTS
-    ENV SDLDIR
-  PATH_SUFFIXES SDL SDL12 SDL11
-                # path suffixes to search inside ENV{SDLDIR}
-                include/SDL include/SDL12 include/SDL11 include
-)
-
-if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-  set(VC_LIB_PATH_SUFFIX lib/x64)
-else()
-  set(VC_LIB_PATH_SUFFIX lib/x86)
-endif()
-
-# SDL-1.1 is the name used by FreeBSD ports...
-# don't confuse it for the version number.
-find_library(SDL_LIBRARY_TEMP
-  NAMES SDL SDL-1.1
-  HINTS
-    ENV SDLDIR
-  PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
-)
-
-# Hide this cache variable from the user, it's an internal implementation
-# detail. The documented library variable for the user is SDL_LIBRARY
-# which is derived from SDL_LIBRARY_TEMP further below.
-set_property(CACHE SDL_LIBRARY_TEMP PROPERTY TYPE INTERNAL)
-
-if(NOT SDL_BUILDING_LIBRARY)
-  if(NOT SDL_INCLUDE_DIR MATCHES ".framework")
-    # Non-OS X framework versions expect you to also dynamically link to
-    # SDLmain. This is mainly for Windows and OS X. Other (Unix) platforms
-    # seem to provide SDLmain for compatibility even though they don't
-    # necessarily need it.
-    find_library(SDLMAIN_LIBRARY
-      NAMES SDLmain SDLmain-1.1
-      HINTS
-        ENV SDLDIR
-      PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
-      PATHS
-      /opt
-    )
-  endif()
-endif()
-
-# SDL may require threads on your system.
-# The Apple build may not need an explicit flag because one of the
-# frameworks may already provide it.
-# But for non-OSX systems, I will use the CMake Threads package.
-if(NOT APPLE)
-  find_package(Threads)
-endif()
-
-# MinGW needs an additional link flag, -mwindows
-# It's total link flags should look like -lmingw32 -lSDLmain -lSDL -mwindows
-if(MINGW)
-  set(MINGW32_LIBRARY mingw32 "-mwindows" CACHE STRING "link flags for MinGW")
-endif()
-
-if(SDL_LIBRARY_TEMP)
-  # For SDLmain
-  if(SDLMAIN_LIBRARY AND NOT SDL_BUILDING_LIBRARY)
-    list(FIND SDL_LIBRARY_TEMP "${SDLMAIN_LIBRARY}" _SDL_MAIN_INDEX)
-    if(_SDL_MAIN_INDEX EQUAL -1)
-      set(SDL_LIBRARY_TEMP "${SDLMAIN_LIBRARY}" ${SDL_LIBRARY_TEMP})
-    endif()
-    unset(_SDL_MAIN_INDEX)
-  endif()
-
-  # For OS X, SDL uses Cocoa as a backend so it must link to Cocoa.
-  # CMake doesn't display the -framework Cocoa string in the UI even
-  # though it actually is there if I modify a pre-used variable.
-  # I think it has something to do with the CACHE STRING.
-  # So I use a temporary variable until the end so I can set the
-  # "real" variable in one-shot.
-  if(APPLE)
-    set(SDL_LIBRARY_TEMP ${SDL_LIBRARY_TEMP} "-framework Cocoa")
-  endif()
-
-  # For threads, as mentioned Apple doesn't need this.
-  # In fact, there seems to be a problem if I used the Threads package
-  # and try using this line, so I'm just skipping it entirely for OS X.
-  if(NOT APPLE)
-    set(SDL_LIBRARY_TEMP ${SDL_LIBRARY_TEMP} ${CMAKE_THREAD_LIBS_INIT})
-  endif()
-
-  # For MinGW library
-  if(MINGW)
-    set(SDL_LIBRARY_TEMP ${MINGW32_LIBRARY} ${SDL_LIBRARY_TEMP})
-  endif()
-
-  # Set the final string here so the GUI reflects the final state.
-  set(SDL_LIBRARY ${SDL_LIBRARY_TEMP} CACHE STRING "Where the SDL Library can be found")
-endif()
-
-if(SDL_INCLUDE_DIR AND EXISTS "${SDL_INCLUDE_DIR}/SDL_version.h")
-  file(STRINGS "${SDL_INCLUDE_DIR}/SDL_version.h" SDL_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+[0-9]+$")
-  file(STRINGS "${SDL_INCLUDE_DIR}/SDL_version.h" SDL_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_MINOR_VERSION[ \t]+[0-9]+$")
-  file(STRINGS "${SDL_INCLUDE_DIR}/SDL_version.h" SDL_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_PATCHLEVEL[ \t]+[0-9]+$")
-  string(REGEX REPLACE "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL_VERSION_MAJOR "${SDL_VERSION_MAJOR_LINE}")
-  string(REGEX REPLACE "^#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL_VERSION_MINOR "${SDL_VERSION_MINOR_LINE}")
-  string(REGEX REPLACE "^#define[ \t]+SDL_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL_VERSION_PATCH "${SDL_VERSION_PATCH_LINE}")
-  set(SDL_VERSION_STRING ${SDL_VERSION_MAJOR}.${SDL_VERSION_MINOR}.${SDL_VERSION_PATCH})
-  unset(SDL_VERSION_MAJOR_LINE)
-  unset(SDL_VERSION_MINOR_LINE)
-  unset(SDL_VERSION_PATCH_LINE)
-  unset(SDL_VERSION_MAJOR)
-  unset(SDL_VERSION_MINOR)
-  unset(SDL_VERSION_PATCH)
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL
-                                  REQUIRED_VARS SDL_LIBRARY SDL_INCLUDE_DIR
-                                  VERSION_VAR SDL_VERSION_STRING)
diff --git a/share/cmake-3.18/Modules/FindSQLite3.cmake b/share/cmake-3.18/Modules/FindSQLite3.cmake
deleted file mode 100644
index 374d7af..0000000
--- a/share/cmake-3.18/Modules/FindSQLite3.cmake
+++ /dev/null
@@ -1,66 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindSQLite3
------------
-
-Find the SQLite libraries, v3
-
-IMPORTED targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :prop_tgt:`IMPORTED` target:
-
-``SQLite::SQLite3``
-
-Result variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables if found:
-
-``SQLite3_INCLUDE_DIRS``
-  where to find sqlite3.h, etc.
-``SQLite3_LIBRARIES``
-  the libraries to link against to use SQLite3.
-``SQLite3_VERSION``
-  version of the SQLite3 library found
-``SQLite3_FOUND``
-  TRUE if found
-
-#]=======================================================================]
-
-# Look for the necessary header
-find_path(SQLite3_INCLUDE_DIR NAMES sqlite3.h)
-mark_as_advanced(SQLite3_INCLUDE_DIR)
-
-# Look for the necessary library
-find_library(SQLite3_LIBRARY NAMES sqlite3 sqlite)
-mark_as_advanced(SQLite3_LIBRARY)
-
-# Extract version information from the header file
-if(SQLite3_INCLUDE_DIR)
-    file(STRINGS ${SQLite3_INCLUDE_DIR}/sqlite3.h _ver_line
-         REGEX "^#define SQLITE_VERSION  *\"[0-9]+\\.[0-9]+\\.[0-9]+\""
-         LIMIT_COUNT 1)
-    string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+"
-           SQLite3_VERSION "${_ver_line}")
-    unset(_ver_line)
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(SQLite3
-    REQUIRED_VARS SQLite3_INCLUDE_DIR SQLite3_LIBRARY
-    VERSION_VAR SQLite3_VERSION)
-
-# Create the imported target
-if(SQLite3_FOUND)
-    set(SQLite3_INCLUDE_DIRS ${SQLite3_INCLUDE_DIR})
-    set(SQLite3_LIBRARIES ${SQLite3_LIBRARY})
-    if(NOT TARGET SQLite::SQLite3)
-        add_library(SQLite::SQLite3 UNKNOWN IMPORTED)
-        set_target_properties(SQLite::SQLite3 PROPERTIES
-            IMPORTED_LOCATION             "${SQLite3_LIBRARY}"
-            INTERFACE_INCLUDE_DIRECTORIES "${SQLite3_INCLUDE_DIR}")
-    endif()
-endif()
diff --git a/share/cmake-3.18/Modules/FindSWIG.cmake b/share/cmake-3.18/Modules/FindSWIG.cmake
deleted file mode 100644
index 2fded49..0000000
--- a/share/cmake-3.18/Modules/FindSWIG.cmake
+++ /dev/null
@@ -1,110 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindSWIG
---------
-
-Find the Simplified Wrapper and Interface Generator (SWIG_) executable.
-
-
-This module finds an installed SWIG and determines its version. If a
-``COMPONENTS`` or ``OPTIONAL_COMPONENTS`` argument is given to ``find_package``,
-it will also determine supported target languages.  The module sents the
-following variables:
-
-``SWIG_FOUND``
-  Whether SWIG and any required components were found on the system.
-``SWIG_EXECUTABLE``
-  Path to the SWIG executable.
-``SWIG_DIR``
-  Path to the installed SWIG ``Lib`` directory (result of ``swig -swiglib``).
-``SWIG_VERSION``
-  SWIG executable version (result of ``swig -version``).
-``SWIG_<lang>_FOUND``
-  If ``COMPONENTS`` or ``OPTIONAL_COMPONENTS`` are requested, each available
-  target language ``<lang>`` (lowercase) will be set to TRUE.
-
-Any ``COMPONENTS`` given to ``find_package`` should be the names of supported
-target languages as provided to the LANGUAGE argument of ``swig_add_library``,
-such as ``python`` or ``perl5``. Language names *must* be lowercase.
-
-All information is collected from the ``SWIG_EXECUTABLE``, so the version
-to be found can be changed from the command line by means of setting
-``SWIG_EXECUTABLE``.
-
-Example usage requiring SWIG 4.0 or higher and Python language support, with
-optional Fortran support:
-
-.. code-block:: cmake
-
-   find_package(SWIG 4.0 COMPONENTS python OPTIONAL_COMPONENTS fortran)
-   if(SWIG_FOUND)
-     message("SWIG found: ${SWIG_EXECUTABLE}")
-     if(NOT SWIG_fortran_FOUND)
-       message(WARNING "SWIG Fortran bindings cannot be generated")
-     endif()
-   endif()
-
-.. _`SWIG`: http://swig.org
-
-#]=======================================================================]
-
-find_program(SWIG_EXECUTABLE NAMES swig4.0 swig3.0 swig2.0 swig)
-
-if(SWIG_EXECUTABLE)
-  execute_process(COMMAND ${SWIG_EXECUTABLE} -swiglib
-    OUTPUT_VARIABLE SWIG_swiglib_output
-    ERROR_VARIABLE SWIG_swiglib_error
-    RESULT_VARIABLE SWIG_swiglib_result)
-
-  if(SWIG_swiglib_result)
-    if(SWIG_FIND_REQUIRED)
-      message(SEND_ERROR "Command \"${SWIG_EXECUTABLE} -swiglib\" failed with output:\n${SWIG_swiglib_error}")
-    else()
-      message(STATUS "Command \"${SWIG_EXECUTABLE} -swiglib\" failed with output:\n${SWIG_swiglib_error}")
-    endif()
-  else()
-    string(REGEX REPLACE "[\n\r]+" ";" SWIG_swiglib_output ${SWIG_swiglib_output})
-    find_path(SWIG_DIR swig.swg PATHS ${SWIG_swiglib_output} NO_CMAKE_FIND_ROOT_PATH)
-    if(SWIG_DIR)
-      set(SWIG_USE_FILE ${CMAKE_CURRENT_LIST_DIR}/UseSWIG.cmake)
-      execute_process(COMMAND ${SWIG_EXECUTABLE} -version
-        OUTPUT_VARIABLE SWIG_version_output
-        ERROR_VARIABLE SWIG_version_output
-        RESULT_VARIABLE SWIG_version_result)
-      if(SWIG_version_result)
-        message(SEND_ERROR "Command \"${SWIG_EXECUTABLE} -version\" failed with output:\n${SWIG_version_output}")
-      else()
-        string(REGEX REPLACE ".*SWIG Version[^0-9.]*\([0-9.]+\).*" "\\1"
-          SWIG_version_output "${SWIG_version_output}")
-        set(SWIG_VERSION ${SWIG_version_output} CACHE STRING "Swig version" FORCE)
-      endif()
-    endif()
-  endif()
-
-  if(SWIG_FIND_COMPONENTS)
-    execute_process(COMMAND ${SWIG_EXECUTABLE} -help
-      OUTPUT_VARIABLE SWIG_swighelp_output
-      ERROR_VARIABLE SWIG_swighelp_error
-      RESULT_VARIABLE SWIG_swighelp_result)
-    if(SWIG_swighelp_result)
-      message(SEND_ERROR "Command \"${SWIG_EXECUTABLE} -help\" failed with output:\n${SWIG_swiglib_error}")
-    else()
-      string(REPLACE "\n" ";" SWIG_swighelp_output "${SWIG_swighelp_output}")
-      foreach(SWIG_line IN LISTS SWIG_swighelp_output)
-        if(SWIG_line MATCHES "-([A-Za-z0-9_]+) +- *Generate.*wrappers")
-          set(SWIG_${CMAKE_MATCH_1}_FOUND TRUE)
-        endif()
-      endforeach()
-    endif()
-  endif()
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(
-  SWIG HANDLE_COMPONENTS
-  REQUIRED_VARS SWIG_EXECUTABLE SWIG_DIR
-  VERSION_VAR SWIG_VERSION)
-
-mark_as_advanced(SWIG_DIR SWIG_VERSION SWIG_EXECUTABLE)
diff --git a/share/cmake-3.18/Modules/FindSelfPackers.cmake b/share/cmake-3.18/Modules/FindSelfPackers.cmake
deleted file mode 100644
index 1abbcbd..0000000
--- a/share/cmake-3.18/Modules/FindSelfPackers.cmake
+++ /dev/null
@@ -1,58 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindSelfPackers
----------------
-
-Find upx
-
-This module looks for some executable packers (i.e.  software that
-compress executables or shared libs into on-the-fly self-extracting
-executables or shared libs.  Examples:
-
-::
-
-  UPX: http://wildsau.idv.uni-linz.ac.at/mfx/upx.html
-#]=======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake)
-
-find_program(SELF_PACKER_FOR_EXECUTABLE
-  upx
-  ${CYGWIN_INSTALL_PATH}/bin
-)
-
-find_program(SELF_PACKER_FOR_SHARED_LIB
-  upx
-  ${CYGWIN_INSTALL_PATH}/bin
-)
-
-mark_as_advanced(
-  SELF_PACKER_FOR_EXECUTABLE
-  SELF_PACKER_FOR_SHARED_LIB
-)
-
-#
-# Set flags
-#
-if (SELF_PACKER_FOR_EXECUTABLE MATCHES "upx")
-  set (SELF_PACKER_FOR_EXECUTABLE_FLAGS "-q" CACHE STRING
-       "Flags for the executable self-packer.")
-else ()
-  set (SELF_PACKER_FOR_EXECUTABLE_FLAGS "" CACHE STRING
-       "Flags for the executable self-packer.")
-endif ()
-
-if (SELF_PACKER_FOR_SHARED_LIB MATCHES "upx")
-  set (SELF_PACKER_FOR_SHARED_LIB_FLAGS "-q" CACHE STRING
-       "Flags for the shared lib self-packer.")
-else ()
-  set (SELF_PACKER_FOR_SHARED_LIB_FLAGS "" CACHE STRING
-       "Flags for the shared lib self-packer.")
-endif ()
-
-mark_as_advanced(
-  SELF_PACKER_FOR_EXECUTABLE_FLAGS
-  SELF_PACKER_FOR_SHARED_LIB_FLAGS
-)
diff --git a/share/cmake-3.18/Modules/FindSquish.cmake b/share/cmake-3.18/Modules/FindSquish.cmake
deleted file mode 100644
index 91d1410..0000000
--- a/share/cmake-3.18/Modules/FindSquish.cmake
+++ /dev/null
@@ -1,288 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindSquish
-----------
-
--- Typical Use
-
-
-
-This module can be used to find Squish.
-
-::
-
-  SQUISH_FOUND                    If false, don't try to use Squish
-  SQUISH_VERSION                  The full version of Squish found
-  SQUISH_VERSION_MAJOR            The major version of Squish found
-  SQUISH_VERSION_MINOR            The minor version of Squish found
-  SQUISH_VERSION_PATCH            The patch version of Squish found
-
-
-
-::
-
-  SQUISH_INSTALL_DIR              The Squish installation directory
-                                  (containing bin, lib, etc)
-  SQUISH_SERVER_EXECUTABLE        The squishserver executable
-  SQUISH_CLIENT_EXECUTABLE        The squishrunner executable
-
-
-
-::
-
-  SQUISH_INSTALL_DIR_FOUND        Was the install directory found?
-  SQUISH_SERVER_EXECUTABLE_FOUND  Was the server executable found?
-  SQUISH_CLIENT_EXECUTABLE_FOUND  Was the client executable found?
-
-
-
-It provides the function squish_add_test() for adding a squish test
-to cmake using Squish >= 4.x:
-
-::
-
-   squish_add_test(cmakeTestName
-     AUT targetName SUITE suiteName TEST squishTestName
-     [SETTINGSGROUP group] [PRE_COMMAND command] [POST_COMMAND command] )
-
-
-
-The arguments have the following meaning:
-
-``cmakeTestName``
-  this will be used as the first argument for add_test()
-``AUT targetName``
-  the name of the cmake target which will be used as AUT, i.e. the
-  executable which will be tested.
-``SUITE suiteName``
-  this is either the full path to the squish suite, or just the
-  last directory of the suite, i.e. the suite name. In this case
-  the CMakeLists.txt which calls squish_add_test() must be located
-  in the parent directory of the suite directory.
-``TEST squishTestName``
-  the name of the squish test, i.e. the name of the subdirectory
-  of the test inside the suite directory.
-``SETTINGSGROUP group``
-  deprecated, this argument will be ignored.
-``PRE_COMMAND command``
-  if specified, the given command will be executed before starting the squish test.
-``POST_COMMAND command``
-  same as PRE_COMMAND, but after the squish test has been executed.
-
-
-
-::
-
-   enable_testing()
-   find_package(Squish 6.5)
-   if (SQUISH_FOUND)
-      squish_add_test(myTestName
-        AUT myApp
-        SUITE ${CMAKE_SOURCE_DIR}/tests/mySuite
-        TEST someSquishTest
-        )
-   endif ()
-
-
-
-
-
-For users of Squish version 3.x the macro squish_v3_add_test() is
-provided:
-
-::
-
-   squish_v3_add_test(testName applicationUnderTest testCase envVars testWrapper)
-   Use this macro to add a test using Squish 3.x.
-
-
-
-::
-
-  enable_testing()
-  find_package(Squish 3.0)
-  if (SQUISH_FOUND)
-    squish_v3_add_test(myTestName myApplication testCase envVars testWrapper)
-  endif ()
-
-
-#]=======================================================================]
-
-set(SQUISH_INSTALL_DIR_STRING "Directory containing the bin, doc, and lib directories for Squish; this should be the root of the installation directory.")
-set(SQUISH_SERVER_EXECUTABLE_STRING "The squishserver executable program.")
-set(SQUISH_CLIENT_EXECUTABLE_STRING "The squishclient executable program.")
-
-# Search only if the location is not already known.
-if(NOT SQUISH_INSTALL_DIR)
-  # Get the system search path as a list.
-  file(TO_CMAKE_PATH "$ENV{PATH}" SQUISH_INSTALL_DIR_SEARCH2)
-
-  # Construct a set of paths relative to the system search path.
-  set(SQUISH_INSTALL_DIR_SEARCH "")
-  foreach(dir ${SQUISH_INSTALL_DIR_SEARCH2})
-    set(SQUISH_INSTALL_DIR_SEARCH ${SQUISH_INSTALL_DIR_SEARCH} "${dir}/../lib/fltk")
-  endforeach()
-  string(REPLACE "//" "/" SQUISH_INSTALL_DIR_SEARCH "${SQUISH_INSTALL_DIR_SEARCH}")
-
-  # Look for an installation
-  find_path(SQUISH_INSTALL_DIR
-    NAMES bin/squishrunner bin/squishrunner.exe
-    HINTS
-    # Look for an environment variable SQUISH_INSTALL_DIR.
-      ENV SQUISH_INSTALL_DIR
-
-    # Look in places relative to the system executable search path.
-    ${SQUISH_INSTALL_DIR_SEARCH}
-
-    DOC "The ${SQUISH_INSTALL_DIR_STRING}"
-    )
-endif()
-
-# search for the executables
-if(SQUISH_INSTALL_DIR)
-  set(SQUISH_INSTALL_DIR_FOUND 1)
-
-  # find the client program
-  if(NOT SQUISH_CLIENT_EXECUTABLE)
-    find_program(SQUISH_CLIENT_EXECUTABLE ${SQUISH_INSTALL_DIR}/bin/squishrunner${CMAKE_EXECUTABLE_SUFFIX} DOC "The ${SQUISH_CLIENT_EXECUTABLE_STRING}")
-  endif()
-
-  # find the server program
-  if(NOT SQUISH_SERVER_EXECUTABLE)
-    find_program(SQUISH_SERVER_EXECUTABLE ${SQUISH_INSTALL_DIR}/bin/squishserver${CMAKE_EXECUTABLE_SUFFIX} DOC "The ${SQUISH_SERVER_EXECUTABLE_STRING}")
-  endif()
-
-else()
-  set(SQUISH_INSTALL_DIR_FOUND 0)
-endif()
-
-
-set(SQUISH_VERSION)
-set(SQUISH_VERSION_MAJOR)
-set(SQUISH_VERSION_MINOR)
-set(SQUISH_VERSION_PATCH)
-
-# record if executables are set
-if(SQUISH_CLIENT_EXECUTABLE)
-  set(SQUISH_CLIENT_EXECUTABLE_FOUND 1)
-  execute_process(COMMAND "${SQUISH_CLIENT_EXECUTABLE}" --version
-                  OUTPUT_VARIABLE _squishVersionOutput
-                  ERROR_QUIET )
-  if("${_squishVersionOutput}" MATCHES "([0-9]+)\\.([0-9]+)\\.([0-9]+)")
-    set(SQUISH_VERSION_MAJOR "${CMAKE_MATCH_1}")
-    set(SQUISH_VERSION_MINOR "${CMAKE_MATCH_2}")
-    set(SQUISH_VERSION_PATCH "${CMAKE_MATCH_3}")
-    set(SQUISH_VERSION "${SQUISH_VERSION_MAJOR}.${SQUISH_VERSION_MINOR}.${SQUISH_VERSION_PATCH}" )
-  endif()
-else()
-  set(SQUISH_CLIENT_EXECUTABLE_FOUND 0)
-endif()
-
-if(SQUISH_SERVER_EXECUTABLE)
-  set(SQUISH_SERVER_EXECUTABLE_FOUND 1)
-else()
-  set(SQUISH_SERVER_EXECUTABLE_FOUND 0)
-endif()
-
-# record if Squish was found
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(Squish  REQUIRED_VARS  SQUISH_INSTALL_DIR SQUISH_CLIENT_EXECUTABLE SQUISH_SERVER_EXECUTABLE
-                                          VERSION_VAR  SQUISH_VERSION )
-
-
-set(_SQUISH_MODULE_DIR "${CMAKE_CURRENT_LIST_DIR}")
-
-macro(squish_v3_add_test testName testAUT testCase envVars testWraper)
-  if("${SQUISH_VERSION_MAJOR}" STRGREATER "3")
-    message(STATUS "Using squish_v3_add_test(), but SQUISH_VERSION_MAJOR is ${SQUISH_VERSION_MAJOR}.\nThis may not work.")
-  endif()
-
-  add_test(${testName}
-    ${CMAKE_COMMAND} -V -VV
-    "-Dsquish_version:STRING=3"
-    "-Dsquish_aut:STRING=${testAUT}"
-    "-Dsquish_server_executable:STRING=${SQUISH_SERVER_EXECUTABLE}"
-    "-Dsquish_client_executable:STRING=${SQUISH_CLIENT_EXECUTABLE}"
-    "-Dsquish_libqtdir:STRING=${QT_LIBRARY_DIR}"
-    "-Dsquish_test_case:STRING=${testCase}"
-    "-Dsquish_env_vars:STRING=${envVars}"
-    "-Dsquish_wrapper:STRING=${testWraper}"
-    "-Dsquish_module_dir:STRING=${_SQUISH_MODULE_DIR}"
-    -P "${_SQUISH_MODULE_DIR}/SquishTestScript.cmake"
-    )
-  set_tests_properties(${testName}
-    PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED;ERROR;FATAL"
-    )
-endmacro()
-
-
-function(squish_v4_add_test testName)
-  if(NOT "${SQUISH_VERSION_MAJOR}" STRGREATER "3")
-    message(STATUS "Using squish_add_test(), but SQUISH_VERSION_MAJOR is ${SQUISH_VERSION_MAJOR}.\nThis may not work.")
-  endif()
-
-  set(oneValueArgs AUT SUITE TEST SETTINGSGROUP PRE_COMMAND POST_COMMAND)
-
-  cmake_parse_arguments(_SQUISH "" "${oneValueArgs}" "" ${ARGN} )
-
-  if(_SQUISH_UNPARSED_ARGUMENTS)
-    message(FATAL_ERROR "Unknown keywords given to SQUISH_ADD_TEST(): \"${_SQUISH_UNPARSED_ARGUMENTS}\"")
-  endif()
-
-  if(NOT _SQUISH_AUT)
-    message(FATAL_ERROR "Required argument AUT not given for SQUISH_ADD_TEST()")
-  endif()
-
-  if(NOT _SQUISH_SUITE)
-    message(FATAL_ERROR "Required argument SUITE not given for SQUISH_ADD_TEST()")
-  endif()
-
-  if(NOT _SQUISH_TEST)
-    message(FATAL_ERROR "Required argument TEST not given for SQUISH_ADD_TEST()")
-  endif()
-
-  get_filename_component(absTestSuite "${_SQUISH_SUITE}" ABSOLUTE)
-  if(NOT EXISTS "${absTestSuite}")
-    message(FATAL_ERROR "Could not find squish test suite ${_SQUISH_SUITE} (checked ${absTestSuite})")
-  endif()
-
-  set(absTestCase "${absTestSuite}/${_SQUISH_TEST}")
-  if(NOT EXISTS "${absTestCase}")
-    message(FATAL_ERROR "Could not find squish testcase ${_SQUISH_TEST} (checked ${absTestCase})")
-  endif()
-
-  if(_SQUISH_SETTINGSGROUP)
-    message("SETTINGSGROUP is deprecated and will be ignored.")
-  endif()
-
-  add_test(NAME ${testName}
-    COMMAND ${CMAKE_COMMAND} -V -VV
-    "-Dsquish_version:STRING=4"
-    "-Dsquish_aut:STRING=$<TARGET_FILE_BASE_NAME:${_SQUISH_AUT}>"
-    "-Dsquish_aut_dir:STRING=$<TARGET_FILE_DIR:${_SQUISH_AUT}>"
-    "-Dsquish_server_executable:STRING=${SQUISH_SERVER_EXECUTABLE}"
-    "-Dsquish_client_executable:STRING=${SQUISH_CLIENT_EXECUTABLE}"
-    "-Dsquish_libqtdir:STRING=${QT_LIBRARY_DIR}"
-    "-Dsquish_test_suite:STRING=${absTestSuite}"
-    "-Dsquish_test_case:STRING=${_SQUISH_TEST}"
-    "-Dsquish_env_vars:STRING=${envVars}"
-    "-Dsquish_wrapper:STRING=${testWraper}"
-    "-Dsquish_module_dir:STRING=${_SQUISH_MODULE_DIR}"
-    "-Dsquish_pre_command:STRING=${_SQUISH_PRE_COMMAND}"
-    "-Dsquish_post_command:STRING=${_SQUISH_POST_COMMAND}"
-    -P "${_SQUISH_MODULE_DIR}/SquishTestScript.cmake"
-    )
-  set_tests_properties(${testName}
-    PROPERTIES FAIL_REGULAR_EXPRESSION "FAIL;FAILED;ERROR;FATAL"
-    )
-endfunction()
-
-macro(squish_add_test)
-  if("${SQUISH_VERSION_MAJOR}" STRGREATER "3")
-    squish_v4_add_test(${ARGV})
-  else()
-    squish_v3_add_test(${ARGV})
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/FindSubversion.cmake b/share/cmake-3.18/Modules/FindSubversion.cmake
deleted file mode 100644
index 07cb770..0000000
--- a/share/cmake-3.18/Modules/FindSubversion.cmake
+++ /dev/null
@@ -1,166 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindSubversion
---------------
-
-Extract information from a subversion working copy
-
-The module defines the following variables:
-
-::
-
-  Subversion_SVN_EXECUTABLE - path to svn command line client
-  Subversion_VERSION_SVN - version of svn command line client
-  Subversion_FOUND - true if the command line client was found
-  SUBVERSION_FOUND - same as Subversion_FOUND, set for compatibility reasons
-
-
-
-The minimum required version of Subversion can be specified using the
-standard syntax, e.g. ``find_package(Subversion 1.4)``.
-
-If the command line client executable is found two macros are defined:
-
-::
-
-  Subversion_WC_INFO(<dir> <var-prefix> [IGNORE_SVN_FAILURE])
-  Subversion_WC_LOG(<dir> <var-prefix>)
-
-``Subversion_WC_INFO`` extracts information of a subversion working copy at a
-given location.  This macro defines the following variables if running
-Subversion's ``info`` command on ``<dir>`` succeeds; otherwise a
-``SEND_ERROR`` message is generated. The error can be ignored by providing the
-``IGNORE_SVN_FAILURE`` option, which causes these variables to remain
-undefined.
-
-::
-
-  <var-prefix>_WC_URL - url of the repository (at <dir>)
-  <var-prefix>_WC_ROOT - root url of the repository
-  <var-prefix>_WC_REVISION - current revision
-  <var-prefix>_WC_LAST_CHANGED_AUTHOR - author of last commit
-  <var-prefix>_WC_LAST_CHANGED_DATE - date of last commit
-  <var-prefix>_WC_LAST_CHANGED_REV - revision of last commit
-  <var-prefix>_WC_INFO - output of command `svn info <dir>'
-
-``Subversion_WC_LOG`` retrieves the log message of the base revision of a
-subversion working copy at a given location.  This macro defines the variable:
-
-::
-
-  <var-prefix>_LAST_CHANGED_LOG - last log of base revision
-
-Example usage:
-
-::
-
-  find_package(Subversion)
-  if(SUBVERSION_FOUND)
-    Subversion_WC_INFO(${PROJECT_SOURCE_DIR} Project)
-    message("Current revision is ${Project_WC_REVISION}")
-    Subversion_WC_LOG(${PROJECT_SOURCE_DIR} Project)
-    message("Last changed log is ${Project_LAST_CHANGED_LOG}")
-  endif()
-#]=======================================================================]
-
-find_program(Subversion_SVN_EXECUTABLE svn
-  PATHS
-    [HKEY_LOCAL_MACHINE\\Software\\TortoiseSVN;Directory]/bin
-  DOC "subversion command line client")
-mark_as_advanced(Subversion_SVN_EXECUTABLE)
-
-if(Subversion_SVN_EXECUTABLE)
-  # the subversion commands should be executed with the C locale, otherwise
-  # the message (which are parsed) may be translated, Alex
-  set(_Subversion_SAVED_LC_ALL "$ENV{LC_ALL}")
-  set(ENV{LC_ALL} C)
-
-  execute_process(COMMAND ${Subversion_SVN_EXECUTABLE} --version
-    OUTPUT_VARIABLE Subversion_VERSION_SVN
-    ERROR_VARIABLE _Subversion_VERSION_STDERR
-    RESULT_VARIABLE _Subversion_VERSION_RESULT
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-  # restore the previous LC_ALL
-  set(ENV{LC_ALL} ${_Subversion_SAVED_LC_ALL})
-
-  if(_Subversion_VERSION_RESULT EQUAL 0)
-    string(REGEX REPLACE "^(.*\n)?svn, version ([.0-9]+).*"
-      "\\2" Subversion_VERSION_SVN "${Subversion_VERSION_SVN}")
-  else()
-    unset(Subversion_VERSION_SVN)
-    if(_Subversion_VERSION_STDERR MATCHES "svn: error: The subversion command line tools are no longer provided by Xcode")
-      set(Subversion_SVN_EXECUTABLE Subversion_SVN_EXECUTABLE-NOTFOUND)
-    endif()
-  endif()
-
-  macro(Subversion_WC_INFO dir prefix)
-
-    cmake_parse_arguments(
-      "Subversion_WC_INFO"
-      "IGNORE_SVN_FAILURE"
-      "" ""
-      ${ARGN}
-    )
-
-    # the subversion commands should be executed with the C locale, otherwise
-    # the message (which are parsed) may be translated, Alex
-    set(_Subversion_SAVED_LC_ALL "$ENV{LC_ALL}")
-    set(ENV{LC_ALL} C)
-
-    execute_process(COMMAND ${Subversion_SVN_EXECUTABLE} info ${dir}
-      OUTPUT_VARIABLE ${prefix}_WC_INFO
-      ERROR_VARIABLE Subversion_svn_info_error
-      RESULT_VARIABLE Subversion_svn_info_result
-      OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-    if(${Subversion_svn_info_result} EQUAL 0)
-      string(REGEX REPLACE "^(.*\n)?URL: ([^\n]+).*"
-        "\\2" ${prefix}_WC_URL "${${prefix}_WC_INFO}")
-      string(REGEX REPLACE "^(.*\n)?Repository Root: ([^\n]+).*"
-        "\\2" ${prefix}_WC_ROOT "${${prefix}_WC_INFO}")
-      string(REGEX REPLACE "^(.*\n)?Revision: ([^\n]+).*"
-        "\\2" ${prefix}_WC_REVISION "${${prefix}_WC_INFO}")
-      string(REGEX REPLACE "^(.*\n)?Last Changed Author: ([^\n]+).*"
-        "\\2" ${prefix}_WC_LAST_CHANGED_AUTHOR "${${prefix}_WC_INFO}")
-      string(REGEX REPLACE "^(.*\n)?Last Changed Rev: ([^\n]+).*"
-        "\\2" ${prefix}_WC_LAST_CHANGED_REV "${${prefix}_WC_INFO}")
-      string(REGEX REPLACE "^(.*\n)?Last Changed Date: ([^\n]+).*"
-        "\\2" ${prefix}_WC_LAST_CHANGED_DATE "${${prefix}_WC_INFO}")
-    elseif(NOT Subversion_WC_INFO_IGNORE_SVN_FAILURE)
-      message(SEND_ERROR "Command \"${Subversion_SVN_EXECUTABLE} info ${dir}\" failed with output:\n${Subversion_svn_info_error}")
-    endif()
-
-    # restore the previous LC_ALL
-    set(ENV{LC_ALL} ${_Subversion_SAVED_LC_ALL})
-
-  endmacro()
-
-  macro(Subversion_WC_LOG dir prefix)
-    # This macro can block if the certificate is not signed:
-    # svn ask you to accept the certificate and wait for your answer
-    # This macro requires a svn server network access (Internet most of the time)
-    # and can also be slow since it access the svn server
-    execute_process(COMMAND
-      ${Subversion_SVN_EXECUTABLE} --non-interactive log -r BASE ${dir}
-      OUTPUT_VARIABLE ${prefix}_LAST_CHANGED_LOG
-      ERROR_VARIABLE Subversion_svn_log_error
-      RESULT_VARIABLE Subversion_svn_log_result
-      OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-    if(NOT ${Subversion_svn_log_result} EQUAL 0)
-      message(SEND_ERROR "Command \"${Subversion_SVN_EXECUTABLE} log -r BASE ${dir}\" failed with output:\n${Subversion_svn_log_error}")
-    endif()
-  endmacro()
-
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Subversion REQUIRED_VARS Subversion_SVN_EXECUTABLE
-                                             VERSION_VAR Subversion_VERSION_SVN )
-
-# for compatibility
-set(Subversion_FOUND ${SUBVERSION_FOUND})
-set(Subversion_SVN_FOUND ${SUBVERSION_FOUND})
diff --git a/share/cmake-3.18/Modules/FindTCL.cmake b/share/cmake-3.18/Modules/FindTCL.cmake
deleted file mode 100644
index 960265f..0000000
--- a/share/cmake-3.18/Modules/FindTCL.cmake
+++ /dev/null
@@ -1,241 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindTCL
--------
-
-TK_INTERNAL_PATH was removed.
-
-This module finds if Tcl is installed and determines where the include
-files and libraries are.  It also determines what the name of the
-library is.  This code sets the following variables:
-
-::
-
-  TCL_FOUND              = Tcl was found
-  TK_FOUND               = Tk was found
-  TCLTK_FOUND            = Tcl and Tk were found
-  TCL_LIBRARY            = path to Tcl library (tcl tcl80)
-  TCL_INCLUDE_PATH       = path to where tcl.h can be found
-  TCL_TCLSH              = path to tclsh binary (tcl tcl80)
-  TK_LIBRARY             = path to Tk library (tk tk80 etc)
-  TK_INCLUDE_PATH        = path to where tk.h can be found
-  TK_WISH                = full path to the wish executable
-
-
-
-In an effort to remove some clutter and clear up some issues for
-people who are not necessarily Tcl/Tk gurus/developers, some
-variables were moved or removed.  Changes compared to CMake 2.4 are:
-
-::
-
-   => they were only useful for people writing Tcl/Tk extensions.
-   => these libs are not packaged by default with Tcl/Tk distributions.
-      Even when Tcl/Tk is built from source, several flavors of debug libs
-      are created and there is no real reason to pick a single one
-      specifically (say, amongst tcl84g, tcl84gs, or tcl84sgx).
-      Let's leave that choice to the user by allowing him to assign
-      TCL_LIBRARY to any Tcl library, debug or not.
-   => this ended up being only a Win32 variable, and there is a lot of
-      confusion regarding the location of this file in an installed Tcl/Tk
-      tree anyway (see 8.5 for example). If you need the internal path at
-      this point it is safer you ask directly where the *source* tree is
-      and dig from there.
-#]=======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/CMakeFindFrameworks.cmake)
-include(${CMAKE_CURRENT_LIST_DIR}/FindTclsh.cmake)
-include(${CMAKE_CURRENT_LIST_DIR}/FindWish.cmake)
-
-if(TCLSH_VERSION_STRING)
-  set(TCL_TCLSH_VERSION "${TCLSH_VERSION_STRING}")
-else()
-  get_filename_component(TCL_TCLSH_PATH "${TCL_TCLSH}" PATH)
-  get_filename_component(TCL_TCLSH_PATH_PARENT "${TCL_TCLSH_PATH}" PATH)
-  string(REGEX REPLACE
-    "^.*tclsh([0-9]\\.*[0-9]).*$" "\\1" TCL_TCLSH_VERSION "${TCL_TCLSH}")
-endif()
-
-get_filename_component(TK_WISH_PATH "${TK_WISH}" PATH)
-get_filename_component(TK_WISH_PATH_PARENT "${TK_WISH_PATH}" PATH)
-string(REGEX REPLACE
-  "^.*wish([0-9]\\.*[0-9]).*$" "\\1" TK_WISH_VERSION "${TK_WISH}")
-
-get_filename_component(TCL_INCLUDE_PATH_PARENT "${TCL_INCLUDE_PATH}" PATH)
-get_filename_component(TK_INCLUDE_PATH_PARENT "${TK_INCLUDE_PATH}" PATH)
-
-get_filename_component(TCL_LIBRARY_PATH "${TCL_LIBRARY}" PATH)
-get_filename_component(TCL_LIBRARY_PATH_PARENT "${TCL_LIBRARY_PATH}" PATH)
-string(REGEX REPLACE
-  "^.*tcl([0-9]\\.*[0-9]).*$" "\\1" TCL_LIBRARY_VERSION "${TCL_LIBRARY}")
-
-get_filename_component(TK_LIBRARY_PATH "${TK_LIBRARY}" PATH)
-get_filename_component(TK_LIBRARY_PATH_PARENT "${TK_LIBRARY_PATH}" PATH)
-string(REGEX REPLACE
-  "^.*tk([0-9]\\.*[0-9]).*$" "\\1" TK_LIBRARY_VERSION "${TK_LIBRARY}")
-
-set(TCLTK_POSSIBLE_LIB_PATHS
-  "${TCL_INCLUDE_PATH_PARENT}/lib"
-  "${TK_INCLUDE_PATH_PARENT}/lib"
-  "${TCL_LIBRARY_PATH}"
-  "${TK_LIBRARY_PATH}"
-  "${TCL_TCLSH_PATH_PARENT}/lib"
-  "${TK_WISH_PATH_PARENT}/lib"
-)
-
-set(TCLTK_POSSIBLE_LIB_PATH_SUFFIXES
-  lib/tcl/tcl8.7
-  lib/tcl/tk8.7
-  lib/tcl/tcl8.6
-  lib/tcl/tk8.6
-  lib/tcl/tcl8.5
-  lib/tcl/tk8.5
-  lib/tcl/tcl8.4
-  lib/tcl/tk8.4
-)
-
-if(WIN32)
-  get_filename_component(
-    ActiveTcl_CurrentVersion
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl;CurrentVersion]"
-    NAME)
-  set(TCLTK_POSSIBLE_LIB_PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/lib"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/lib"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/lib"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.4;Root]/lib"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.3;Root]/lib"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.2;Root]/lib"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/lib"
-    "$ENV{ProgramFiles}/Tcl/Lib"
-    "C:/Program Files/Tcl/lib"
-    "C:/Tcl/lib"
-    )
-endif()
-
-find_library(TCL_LIBRARY
-  NAMES
-  tcl
-  tcl${TCL_LIBRARY_VERSION} tcl${TCL_TCLSH_VERSION} tcl${TK_WISH_VERSION}
-  tcl87 tcl8.7 tcl87t tcl8.7t
-  tcl86 tcl8.6 tcl86t tcl8.6t
-  tcl85 tcl8.5
-  tcl84 tcl8.4
-  tcl83 tcl8.3
-  tcl82 tcl8.2
-  tcl80 tcl8.0
-  PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
-  PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
-  )
-
-find_library(TK_LIBRARY
-  NAMES
-  tk
-  tk${TK_LIBRARY_VERSION} tk${TCL_TCLSH_VERSION} tk${TK_WISH_VERSION}
-  tk87 tk8.7 tk87t tk8.7t
-  tk86 tk8.6 tk86t tk8.6t
-  tk85 tk8.5
-  tk84 tk8.4
-  tk83 tk8.3
-  tk82 tk8.2
-  tk80 tk8.0
-  PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
-  PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
-  )
-
-CMAKE_FIND_FRAMEWORKS(Tcl)
-CMAKE_FIND_FRAMEWORKS(Tk)
-
-set(TCL_FRAMEWORK_INCLUDES)
-if(Tcl_FRAMEWORKS)
-  if(NOT TCL_INCLUDE_PATH)
-    foreach(dir ${Tcl_FRAMEWORKS})
-      set(TCL_FRAMEWORK_INCLUDES ${TCL_FRAMEWORK_INCLUDES} ${dir}/Headers)
-    endforeach()
-  endif()
-endif()
-
-set(TK_FRAMEWORK_INCLUDES)
-if(Tk_FRAMEWORKS)
-  if(NOT TK_INCLUDE_PATH)
-    foreach(dir ${Tk_FRAMEWORKS})
-      set(TK_FRAMEWORK_INCLUDES ${TK_FRAMEWORK_INCLUDES}
-        ${dir}/Headers ${dir}/PrivateHeaders)
-    endforeach()
-  endif()
-endif()
-
-set(TCLTK_POSSIBLE_INCLUDE_PATHS
-  "${TCL_LIBRARY_PATH_PARENT}/include"
-  "${TK_LIBRARY_PATH_PARENT}/include"
-  "${TCL_INCLUDE_PATH}"
-  "${TK_INCLUDE_PATH}"
-  ${TCL_FRAMEWORK_INCLUDES}
-  ${TK_FRAMEWORK_INCLUDES}
-  "${TCL_TCLSH_PATH_PARENT}/include"
-  "${TK_WISH_PATH_PARENT}/include"
-  )
-
-set(TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES
-  include/tcl${TK_LIBRARY_VERSION}
-  include/tcl${TCL_LIBRARY_VERSION}
-  include/tcl8.7
-  include/tk8.7
-  include/tcl8.6
-  include/tk8.6
-  include/tcl8.5
-  include/tk8.5
-  include/tcl8.4
-  include/tk8.4
-  include/tcl8.3
-  include/tcl8.2
-  include/tcl8.0
-  )
-
-if(WIN32)
-  set(TCLTK_POSSIBLE_INCLUDE_PATHS ${TCLTK_POSSIBLE_INCLUDE_PATHS}
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/include"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/include"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/include"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.4;Root]/include"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.3;Root]/include"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.2;Root]/include"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/include"
-    "$ENV{ProgramFiles}/Tcl/include"
-    "C:/Program Files/Tcl/include"
-    "C:/Tcl/include"
-    )
-endif()
-
-find_path(TCL_INCLUDE_PATH
-  NAMES tcl.h
-  HINTS ${TCLTK_POSSIBLE_INCLUDE_PATHS}
-  PATH_SUFFIXES ${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
-  )
-
-find_path(TK_INCLUDE_PATH
-  NAMES tk.h
-  HINTS ${TCLTK_POSSIBLE_INCLUDE_PATHS}
-  PATH_SUFFIXES ${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
-  )
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(TCL DEFAULT_MSG TCL_LIBRARY TCL_INCLUDE_PATH)
-set(FPHSA_NAME_MISMATCHED 1)
-set(TCLTK_FIND_REQUIRED ${TCL_FIND_REQUIRED})
-set(TCLTK_FIND_QUIETLY  ${TCL_FIND_QUIETLY})
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(TCLTK DEFAULT_MSG TCL_LIBRARY TCL_INCLUDE_PATH TK_LIBRARY TK_INCLUDE_PATH)
-set(TK_FIND_REQUIRED ${TCL_FIND_REQUIRED})
-set(TK_FIND_QUIETLY  ${TCL_FIND_QUIETLY})
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(TK DEFAULT_MSG TK_LIBRARY TK_INCLUDE_PATH)
-unset(FPHSA_NAME_MISMATCHED)
-
-mark_as_advanced(
-  TCL_INCLUDE_PATH
-  TK_INCLUDE_PATH
-  TCL_LIBRARY
-  TK_LIBRARY
-  )
diff --git a/share/cmake-3.18/Modules/FindTIFF.cmake b/share/cmake-3.18/Modules/FindTIFF.cmake
deleted file mode 100644
index 00a3a41..0000000
--- a/share/cmake-3.18/Modules/FindTIFF.cmake
+++ /dev/null
@@ -1,106 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindTIFF
---------
-
-Find the TIFF library (``libtiff``).
-
-Imported targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :prop_tgt:`IMPORTED` targets:
-
-``TIFF::TIFF``
-  The TIFF library, if found.
-
-Result variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``TIFF_FOUND``
-  true if the TIFF headers and libraries were found
-``TIFF_INCLUDE_DIR``
-  the directory containing the TIFF headers
-``TIFF_INCLUDE_DIRS``
-  the directory containing the TIFF headers
-``TIFF_LIBRARIES``
-  TIFF libraries to be linked
-
-Cache variables
-^^^^^^^^^^^^^^^
-
-The following cache variables may also be set:
-
-``TIFF_INCLUDE_DIR``
-  the directory containing the TIFF headers
-``TIFF_LIBRARY``
-  the path to the TIFF library
-#]=======================================================================]
-
-find_path(TIFF_INCLUDE_DIR tiff.h)
-
-set(TIFF_NAMES ${TIFF_NAMES} tiff libtiff tiff3 libtiff3)
-foreach(name ${TIFF_NAMES})
-  list(APPEND TIFF_NAMES_DEBUG "${name}d")
-endforeach()
-
-if(NOT TIFF_LIBRARY)
-  find_library(TIFF_LIBRARY_RELEASE NAMES ${TIFF_NAMES})
-  find_library(TIFF_LIBRARY_DEBUG NAMES ${TIFF_NAMES_DEBUG})
-  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-  select_library_configurations(TIFF)
-  mark_as_advanced(TIFF_LIBRARY_RELEASE TIFF_LIBRARY_DEBUG)
-endif()
-unset(TIFF_NAMES)
-unset(TIFF_NAMES_DEBUG)
-
-if(TIFF_INCLUDE_DIR AND EXISTS "${TIFF_INCLUDE_DIR}/tiffvers.h")
-    file(STRINGS "${TIFF_INCLUDE_DIR}/tiffvers.h" tiff_version_str
-         REGEX "^#define[\t ]+TIFFLIB_VERSION_STR[\t ]+\"LIBTIFF, Version .*")
-
-    string(REGEX REPLACE "^#define[\t ]+TIFFLIB_VERSION_STR[\t ]+\"LIBTIFF, Version +([^ \\n]*).*"
-           "\\1" TIFF_VERSION_STRING "${tiff_version_str}")
-    unset(tiff_version_str)
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(TIFF
-                                  REQUIRED_VARS TIFF_LIBRARY TIFF_INCLUDE_DIR
-                                  VERSION_VAR TIFF_VERSION_STRING)
-
-if(TIFF_FOUND)
-  set(TIFF_LIBRARIES ${TIFF_LIBRARY})
-  set(TIFF_INCLUDE_DIRS "${TIFF_INCLUDE_DIR}")
-
-  if(NOT TARGET TIFF::TIFF)
-    add_library(TIFF::TIFF UNKNOWN IMPORTED)
-    if(TIFF_INCLUDE_DIRS)
-      set_target_properties(TIFF::TIFF PROPERTIES
-        INTERFACE_INCLUDE_DIRECTORIES "${TIFF_INCLUDE_DIRS}")
-    endif()
-    if(EXISTS "${TIFF_LIBRARY}")
-      set_target_properties(TIFF::TIFF PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-        IMPORTED_LOCATION "${TIFF_LIBRARY}")
-    endif()
-    if(EXISTS "${TIFF_LIBRARY_RELEASE}")
-      set_property(TARGET TIFF::TIFF APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS RELEASE)
-      set_target_properties(TIFF::TIFF PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
-        IMPORTED_LOCATION_RELEASE "${TIFF_LIBRARY_RELEASE}")
-    endif()
-    if(EXISTS "${TIFF_LIBRARY_DEBUG}")
-      set_property(TARGET TIFF::TIFF APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS DEBUG)
-      set_target_properties(TIFF::TIFF PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
-        IMPORTED_LOCATION_DEBUG "${TIFF_LIBRARY_DEBUG}")
-    endif()
-  endif()
-endif()
-
-mark_as_advanced(TIFF_INCLUDE_DIR TIFF_LIBRARY)
diff --git a/share/cmake-3.18/Modules/FindTclsh.cmake b/share/cmake-3.18/Modules/FindTclsh.cmake
deleted file mode 100644
index 82be473..0000000
--- a/share/cmake-3.18/Modules/FindTclsh.cmake
+++ /dev/null
@@ -1,99 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindTclsh
----------
-
-Find tclsh
-
-This module finds if TCL is installed and determines where the include
-files and libraries are.  It also determines what the name of the
-library is.  This code sets the following variables:
-
-::
-
-  TCLSH_FOUND = TRUE if tclsh has been found
-  TCL_TCLSH = the path to the tclsh executable
-
-In cygwin, look for the cygwin version first.  Don't look for it later
-to avoid finding the cygwin version on a Win32 build.
-#]=======================================================================]
-
-if(CYGWIN)
-  find_program(TCL_TCLSH NAMES cygtclsh83 cygtclsh80)
-endif()
-
-get_filename_component(TK_WISH_PATH "${TK_WISH}" PATH)
-get_filename_component(TK_WISH_PATH_PARENT "${TK_WISH_PATH}" PATH)
-string(REGEX REPLACE
-  "^.*wish([0-9]\\.*[0-9]).*$" "\\1" TK_WISH_VERSION "${TK_WISH}")
-
-get_filename_component(TCL_INCLUDE_PATH_PARENT "${TCL_INCLUDE_PATH}" PATH)
-get_filename_component(TK_INCLUDE_PATH_PARENT "${TK_INCLUDE_PATH}" PATH)
-
-get_filename_component(TCL_LIBRARY_PATH "${TCL_LIBRARY}" PATH)
-get_filename_component(TCL_LIBRARY_PATH_PARENT "${TCL_LIBRARY_PATH}" PATH)
-string(REGEX REPLACE
-  "^.*tcl([0-9]\\.*[0-9]).*$" "\\1" TCL_LIBRARY_VERSION "${TCL_LIBRARY}")
-
-get_filename_component(TK_LIBRARY_PATH "${TK_LIBRARY}" PATH)
-get_filename_component(TK_LIBRARY_PATH_PARENT "${TK_LIBRARY_PATH}" PATH)
-string(REGEX REPLACE
-  "^.*tk([0-9]\\.*[0-9]).*$" "\\1" TK_LIBRARY_VERSION "${TK_LIBRARY}")
-
-set(TCLTK_POSSIBLE_BIN_PATHS
-  "${TCL_INCLUDE_PATH_PARENT}/bin"
-  "${TK_INCLUDE_PATH_PARENT}/bin"
-  "${TCL_LIBRARY_PATH_PARENT}/bin"
-  "${TK_LIBRARY_PATH_PARENT}/bin"
-  "${TK_WISH_PATH_PARENT}/bin"
-  )
-
-if(WIN32)
-  get_filename_component(
-    ActiveTcl_CurrentVersion
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl;CurrentVersion]"
-    NAME)
-  set(TCLTK_POSSIBLE_BIN_PATHS ${TCLTK_POSSIBLE_BIN_PATHS}
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.4;Root]/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.3;Root]/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.2;Root]/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/bin"
-    )
-endif()
-
-set(TCL_TCLSH_NAMES
-  tclsh
-  tclsh${TCL_LIBRARY_VERSION} tclsh${TK_LIBRARY_VERSION} tclsh${TK_WISH_VERSION}
-  tclsh87 tclsh8.7
-  tclsh86 tclsh8.6
-  tclsh85 tclsh8.5
-  tclsh84 tclsh8.4
-  tclsh83 tclsh8.3
-  tclsh82 tclsh8.2
-  tclsh80 tclsh8.0
-  )
-
-find_program(TCL_TCLSH
-  NAMES ${TCL_TCLSH_NAMES}
-  HINTS ${TCLTK_POSSIBLE_BIN_PATHS}
-  )
-
-if(TCL_TCLSH)
-  execute_process(COMMAND "${CMAKE_COMMAND}" -E echo puts "\$tcl_version"
-                  COMMAND "${TCL_TCLSH}"
-                  OUTPUT_VARIABLE TCLSH_VERSION_STRING
-                  ERROR_QUIET
-                  OUTPUT_STRIP_TRAILING_WHITESPACE)
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Tclsh
-                                  REQUIRED_VARS TCL_TCLSH
-                                  VERSION_VAR TCLSH_VERSION_STRING)
-
-mark_as_advanced(TCL_TCLSH)
diff --git a/share/cmake-3.18/Modules/FindThreads.cmake b/share/cmake-3.18/Modules/FindThreads.cmake
deleted file mode 100644
index ee49867..0000000
--- a/share/cmake-3.18/Modules/FindThreads.cmake
+++ /dev/null
@@ -1,248 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindThreads
------------
-
-This module determines the thread library of the system.
-
-Imported Targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :prop_tgt:`IMPORTED` target:
-
-``Threads::Threads``
-  The thread library, if found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-The following variables are set:
-
-``Threads_FOUND``
-  If a supported thread library was found.
-``CMAKE_THREAD_LIBS_INIT``
-  The thread library to use. This may be empty if the thread functions
-  are provided by the system libraries and no special flags are needed
-  to use them.
-``CMAKE_USE_WIN32_THREADS_INIT``
-  If the found thread library is the win32 one.
-``CMAKE_USE_PTHREADS_INIT``
-  If the found thread library is pthread compatible.
-``CMAKE_HP_PTHREADS_INIT``
-  If the found thread library is the HP thread library.
-
-Variables Affecting Behavior
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. variable:: THREADS_PREFER_PTHREAD_FLAG
-
-  If the use of the -pthread compiler and linker flag is preferred then
-  the caller can set this variable to TRUE. The compiler flag can only be
-  used with the imported target. Use of both the imported target as well
-  as this switch is highly recommended for new code.
-
-  This variable has no effect if the system libraries provide the
-  thread functions, i.e. when ``CMAKE_THREAD_LIBS_INIT`` will be empty.
-#]=======================================================================]
-
-include (CheckLibraryExists)
-set(Threads_FOUND FALSE)
-set(CMAKE_REQUIRED_QUIET_SAVE ${CMAKE_REQUIRED_QUIET})
-set(CMAKE_REQUIRED_QUIET ${Threads_FIND_QUIETLY})
-
-if(CMAKE_C_COMPILER_LOADED)
-  include (CheckIncludeFile)
-  include (CheckCSourceCompiles)
-elseif(CMAKE_CXX_COMPILER_LOADED)
-  include (CheckIncludeFileCXX)
-  include (CheckCXXSourceCompiles)
-else()
-  message(FATAL_ERROR "FindThreads only works if either C or CXX language is enabled")
-endif()
-
-# simple pthread test code
-set(PTHREAD_C_CXX_TEST_SOURCE [====[
-#include <pthread.h>
-
-void* test_func(void* data)
-{
-  return data;
-}
-
-int main(void)
-{
-  pthread_t thread;
-  pthread_create(&thread, NULL, test_func, NULL);
-  pthread_detach(thread);
-  pthread_cancel(thread);
-  pthread_join(thread, NULL);
-  pthread_atfork(NULL, NULL, NULL);
-  pthread_exit(NULL);
-
-  return 0;
-}
-]====])
-
-# Internal helper macro.
-# Do NOT even think about using it outside of this file!
-macro(_check_threads_lib LIBNAME FUNCNAME VARNAME)
-  if(NOT Threads_FOUND)
-     CHECK_LIBRARY_EXISTS(${LIBNAME} ${FUNCNAME} "" ${VARNAME})
-     if(${VARNAME})
-       set(CMAKE_THREAD_LIBS_INIT "-l${LIBNAME}")
-       set(CMAKE_HAVE_THREADS_LIBRARY 1)
-       set(Threads_FOUND TRUE)
-     endif()
-  endif ()
-endmacro()
-
-# Internal helper macro.
-# Do NOT even think about using it outside of this file!
-macro(_check_pthreads_flag)
-  if(NOT Threads_FOUND)
-    # If we did not found -lpthread, -lpthread, or -lthread, look for -pthread
-    if(NOT DEFINED THREADS_HAVE_PTHREAD_ARG)
-      message(CHECK_START "Check if compiler accepts -pthread")
-      if(CMAKE_C_COMPILER_LOADED)
-        set(_threads_src ${CMAKE_CURRENT_LIST_DIR}/CheckForPthreads.c)
-      elseif(CMAKE_CXX_COMPILER_LOADED)
-        set(_threads_src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindThreads/CheckForPthreads.cxx)
-        configure_file(${CMAKE_CURRENT_LIST_DIR}/CheckForPthreads.c "${_threads_src}" COPYONLY)
-      endif()
-      try_compile(THREADS_HAVE_PTHREAD_ARG
-        ${CMAKE_BINARY_DIR}
-        ${_threads_src}
-        CMAKE_FLAGS -DLINK_LIBRARIES:STRING=-pthread
-        OUTPUT_VARIABLE OUTPUT)
-      unset(_threads_src)
-
-      if(THREADS_HAVE_PTHREAD_ARG)
-        set(Threads_FOUND TRUE)
-        message(CHECK_PASS "yes")
-      else()
-        message(CHECK_FAIL "no")
-        file(APPEND
-          ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-          "Determining if compiler accepts -pthread failed with the following output:\n${OUTPUT}\n\n")
-      endif()
-
-    endif()
-
-    if(THREADS_HAVE_PTHREAD_ARG)
-      set(Threads_FOUND TRUE)
-      set(CMAKE_THREAD_LIBS_INIT "-pthread")
-    endif()
-  endif()
-endmacro()
-
-# Do we have pthreads?
-if(CMAKE_C_COMPILER_LOADED)
-  CHECK_INCLUDE_FILE("pthread.h" CMAKE_HAVE_PTHREAD_H)
-else()
-  CHECK_INCLUDE_FILE_CXX("pthread.h" CMAKE_HAVE_PTHREAD_H)
-endif()
-
-if(CMAKE_HAVE_PTHREAD_H)
-  #
-  # We have pthread.h
-  # Let's check for the library now.
-  #
-  set(CMAKE_HAVE_THREADS_LIBRARY)
-  if(NOT THREADS_HAVE_PTHREAD_ARG)
-    # Check if pthread functions are in normal C library.
-    # We list some pthread functions in PTHREAD_C_CXX_TEST_SOURCE test code.
-    # If the pthread functions already exist in C library, we could just use
-    # them instead of linking to the additional pthread library.
-    if(CMAKE_C_COMPILER_LOADED)
-      CHECK_C_SOURCE_COMPILES("${PTHREAD_C_CXX_TEST_SOURCE}" CMAKE_HAVE_LIBC_PTHREAD)
-    elseif(CMAKE_CXX_COMPILER_LOADED)
-      CHECK_CXX_SOURCE_COMPILES("${PTHREAD_C_CXX_TEST_SOURCE}" CMAKE_HAVE_LIBC_PTHREAD)
-    endif()
-    if(CMAKE_HAVE_LIBC_PTHREAD)
-      set(CMAKE_THREAD_LIBS_INIT "")
-      set(CMAKE_HAVE_THREADS_LIBRARY 1)
-      set(Threads_FOUND TRUE)
-    else()
-      # Check for -pthread first if enabled. This is the recommended
-      # way, but not backwards compatible as one must also pass -pthread
-      # as compiler flag then.
-      if (THREADS_PREFER_PTHREAD_FLAG)
-         _check_pthreads_flag()
-      endif ()
-
-      if(CMAKE_SYSTEM MATCHES "GHS-MULTI")
-        _check_threads_lib(posix pthread_create CMAKE_HAVE_PTHREADS_CREATE)
-      endif()
-      _check_threads_lib(pthreads pthread_create CMAKE_HAVE_PTHREADS_CREATE)
-      _check_threads_lib(pthread  pthread_create CMAKE_HAVE_PTHREAD_CREATE)
-      if(CMAKE_SYSTEM_NAME MATCHES "SunOS")
-          # On sun also check for -lthread
-          _check_threads_lib(thread thr_create CMAKE_HAVE_THR_CREATE)
-      endif()
-    endif()
-  endif()
-
-  _check_pthreads_flag()
-endif()
-
-if(CMAKE_THREAD_LIBS_INIT OR CMAKE_HAVE_LIBC_PTHREAD)
-  set(CMAKE_USE_PTHREADS_INIT 1)
-  set(Threads_FOUND TRUE)
-endif()
-
-if(CMAKE_SYSTEM_NAME MATCHES "Windows")
-  set(CMAKE_USE_WIN32_THREADS_INIT 1)
-  set(Threads_FOUND TRUE)
-endif()
-
-if(CMAKE_USE_PTHREADS_INIT)
-  if(CMAKE_SYSTEM_NAME MATCHES "HP-UX")
-    # Use libcma if it exists and can be used.  It provides more
-    # symbols than the plain pthread library.  CMA threads
-    # have actually been deprecated:
-    #   http://docs.hp.com/en/B3920-90091/ch12s03.html#d0e11395
-    #   http://docs.hp.com/en/947/d8.html
-    # but we need to maintain compatibility here.
-    # The CMAKE_HP_PTHREADS setting actually indicates whether CMA threads
-    # are available.
-    CHECK_LIBRARY_EXISTS(cma pthread_attr_create "" CMAKE_HAVE_HP_CMA)
-    if(CMAKE_HAVE_HP_CMA)
-      set(CMAKE_THREAD_LIBS_INIT "-lcma")
-      set(CMAKE_HP_PTHREADS_INIT 1)
-      set(Threads_FOUND TRUE)
-    endif()
-    set(CMAKE_USE_PTHREADS_INIT 1)
-  endif()
-
-  if(CMAKE_SYSTEM MATCHES "OSF1-V")
-    set(CMAKE_USE_PTHREADS_INIT 0)
-    set(CMAKE_THREAD_LIBS_INIT )
-  endif()
-
-  if(CMAKE_SYSTEM MATCHES "CYGWIN_NT")
-    set(CMAKE_USE_PTHREADS_INIT 1)
-    set(Threads_FOUND TRUE)
-    set(CMAKE_THREAD_LIBS_INIT )
-    set(CMAKE_USE_WIN32_THREADS_INIT 0)
-  endif()
-endif()
-
-set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE})
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Threads DEFAULT_MSG Threads_FOUND)
-
-if(THREADS_FOUND AND NOT TARGET Threads::Threads)
-  add_library(Threads::Threads INTERFACE IMPORTED)
-
-  if(THREADS_HAVE_PTHREAD_ARG)
-    set_property(TARGET Threads::Threads
-                 PROPERTY INTERFACE_COMPILE_OPTIONS "$<$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>:SHELL:-Xcompiler -pthread>"
-                                                    "$<$<NOT:$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>>:-pthread>")
-  endif()
-
-  if(CMAKE_THREAD_LIBS_INIT)
-    set_property(TARGET Threads::Threads PROPERTY INTERFACE_LINK_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
-  endif()
-endif()
diff --git a/share/cmake-3.18/Modules/FindUnixCommands.cmake b/share/cmake-3.18/Modules/FindUnixCommands.cmake
deleted file mode 100644
index 2513f5c..0000000
--- a/share/cmake-3.18/Modules/FindUnixCommands.cmake
+++ /dev/null
@@ -1,71 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindUnixCommands
-----------------
-
-Find Unix commands, including the ones from Cygwin
-
-This module looks for the Unix commands ``bash``, ``cp``, ``gzip``,
-``mv``, ``rm``, and ``tar`` and stores the result in the variables
-``BASH``, ``CP``, ``GZIP``, ``MV``, ``RM``, and ``TAR``.
-#]=======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake)
-
-find_program(BASH
-  bash
-  ${CYGWIN_INSTALL_PATH}/bin
-)
-mark_as_advanced(
-  BASH
-)
-
-find_program(CP
-  cp
-  ${CYGWIN_INSTALL_PATH}/bin
-)
-mark_as_advanced(
-  CP
-)
-
-find_program(GZIP
-  gzip
-  ${CYGWIN_INSTALL_PATH}/bin
-)
-mark_as_advanced(
-  GZIP
-)
-
-find_program(MV
-  mv
-  ${CYGWIN_INSTALL_PATH}/bin
-)
-mark_as_advanced(
-  MV
-)
-
-find_program(RM
-  rm
-  ${CYGWIN_INSTALL_PATH}/bin
-)
-mark_as_advanced(
-  RM
-)
-
-find_program(TAR
-  NAMES
-  tar
-  gtar
-  PATH
-  ${CYGWIN_INSTALL_PATH}/bin
-)
-mark_as_advanced(
-  TAR
-)
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(UnixCommands
-  REQUIRED_VARS BASH CP GZIP MV RM TAR
-)
diff --git a/share/cmake-3.18/Modules/FindVulkan.cmake b/share/cmake-3.18/Modules/FindVulkan.cmake
deleted file mode 100644
index 4b999b6..0000000
--- a/share/cmake-3.18/Modules/FindVulkan.cmake
+++ /dev/null
@@ -1,88 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindVulkan
-----------
-
-Find Vulkan, which is a low-overhead, cross-platform 3D graphics
-and computing API.
-
-IMPORTED Targets
-^^^^^^^^^^^^^^^^
-
-This module defines :prop_tgt:`IMPORTED` target ``Vulkan::Vulkan``, if
-Vulkan has been found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module defines the following variables::
-
-  Vulkan_FOUND          - "True" if Vulkan was found
-  Vulkan_INCLUDE_DIRS   - include directories for Vulkan
-  Vulkan_LIBRARIES      - link against this library to use Vulkan
-
-The module will also define two cache variables::
-
-  Vulkan_INCLUDE_DIR    - the Vulkan include directory
-  Vulkan_LIBRARY        - the path to the Vulkan library
-
-Hints
-^^^^^
-
-The ``VULKAN_SDK`` environment variable optionally specifies the
-location of the Vulkan SDK root directory for the given
-architecture. It is typically set by sourcing the toplevel
-``setup-env.sh`` script of the Vulkan SDK directory into the shell
-environment.
-
-#]=======================================================================]
-
-if(WIN32)
-  find_path(Vulkan_INCLUDE_DIR
-    NAMES vulkan/vulkan.h
-    HINTS
-      "$ENV{VULKAN_SDK}/Include"
-    )
-
-  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-    find_library(Vulkan_LIBRARY
-      NAMES vulkan-1
-      HINTS
-        "$ENV{VULKAN_SDK}/Lib"
-        "$ENV{VULKAN_SDK}/Bin"
-      )
-  elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
-    find_library(Vulkan_LIBRARY
-      NAMES vulkan-1
-      HINTS
-        "$ENV{VULKAN_SDK}/Lib32"
-        "$ENV{VULKAN_SDK}/Bin32"
-      )
-  endif()
-else()
-  find_path(Vulkan_INCLUDE_DIR
-    NAMES vulkan/vulkan.h
-    HINTS "$ENV{VULKAN_SDK}/include")
-  find_library(Vulkan_LIBRARY
-    NAMES vulkan
-    HINTS "$ENV{VULKAN_SDK}/lib")
-endif()
-
-set(Vulkan_LIBRARIES ${Vulkan_LIBRARY})
-set(Vulkan_INCLUDE_DIRS ${Vulkan_INCLUDE_DIR})
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(Vulkan
-  DEFAULT_MSG
-  Vulkan_LIBRARY Vulkan_INCLUDE_DIR)
-
-mark_as_advanced(Vulkan_INCLUDE_DIR Vulkan_LIBRARY)
-
-if(Vulkan_FOUND AND NOT TARGET Vulkan::Vulkan)
-  add_library(Vulkan::Vulkan UNKNOWN IMPORTED)
-  set_target_properties(Vulkan::Vulkan PROPERTIES
-    IMPORTED_LOCATION "${Vulkan_LIBRARIES}"
-    INTERFACE_INCLUDE_DIRECTORIES "${Vulkan_INCLUDE_DIRS}")
-endif()
diff --git a/share/cmake-3.18/Modules/FindWget.cmake b/share/cmake-3.18/Modules/FindWget.cmake
deleted file mode 100644
index bd01ec2..0000000
--- a/share/cmake-3.18/Modules/FindWget.cmake
+++ /dev/null
@@ -1,32 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindWget
---------
-
-Find wget
-
-This module looks for wget.  This module defines the following values:
-
-::
-
-  WGET_EXECUTABLE: the full path to the wget tool.
-  WGET_FOUND: True if wget has been found.
-#]=======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake)
-
-find_program(WGET_EXECUTABLE
-  wget
-  ${CYGWIN_INSTALL_PATH}/bin
-)
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Wget DEFAULT_MSG WGET_EXECUTABLE)
-
-mark_as_advanced( WGET_EXECUTABLE )
-
-# WGET option is deprecated.
-# use WGET_EXECUTABLE instead.
-set (WGET ${WGET_EXECUTABLE})
diff --git a/share/cmake-3.18/Modules/FindX11.cmake b/share/cmake-3.18/Modules/FindX11.cmake
deleted file mode 100644
index aa83575..0000000
--- a/share/cmake-3.18/Modules/FindX11.cmake
+++ /dev/null
@@ -1,823 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindX11
--------
-
-Find X11 installation
-
-Try to find X11 on UNIX systems. The following values are defined
-
-::
-
-  X11_FOUND        - True if X11 is available
-  X11_INCLUDE_DIR  - include directories to use X11
-  X11_LIBRARIES    - link against these to use X11
-
-and also the following more fine grained variables and targets:
-
-::
-
-  X11_ICE_INCLUDE_PATH,          X11_ICE_LIB,        X11_ICE_FOUND,        X11::ICE
-  X11_SM_INCLUDE_PATH,           X11_SM_LIB,         X11_SM_FOUND,         X11::SM
-  X11_X11_INCLUDE_PATH,          X11_X11_LIB,                              X11::X11
-  X11_Xaccessrules_INCLUDE_PATH,
-  X11_Xaccessstr_INCLUDE_PATH,                       X11_Xaccess_FOUND
-  X11_Xau_INCLUDE_PATH,          X11_Xau_LIB,        X11_Xau_FOUND,        X11::Xau
-  X11_xcb_INCLUDE_PATH,          X11_xcb_LIB,        X11_xcb_FOUND,        X11::xcb
-  X11_X11_xcb_INCLUDE_PATH,      X11_X11_xcb_LIB,    X11_X11_xcb_FOUND,    X11::X11_xcb
-  X11_xcb_icccm_INCLUDE_PATH,    X11_xcb_icccm_LIB,  X11_xcb_icccm_FOUND,  X11::xcb_icccm
-  X11_xcb_xkb_INCLUDE_PATH,      X11_xcb_xkb_LIB,    X11_xcb_xkb_FOUND,    X11::xcb_xkb
-  X11_Xcomposite_INCLUDE_PATH,   X11_Xcomposite_LIB, X11_Xcomposite_FOUND, X11::Xcomposite
-  X11_Xcursor_INCLUDE_PATH,      X11_Xcursor_LIB,    X11_Xcursor_FOUND,    X11::Xcursor
-  X11_Xdamage_INCLUDE_PATH,      X11_Xdamage_LIB,    X11_Xdamage_FOUND,    X11::Xdamage
-  X11_Xdmcp_INCLUDE_PATH,        X11_Xdmcp_LIB,      X11_Xdmcp_FOUND,      X11::Xdmcp
-  X11_Xext_INCLUDE_PATH,         X11_Xext_LIB,       X11_Xext_FOUND,       X11::Xext
-  X11_Xxf86misc_INCLUDE_PATH,    X11_Xxf86misc_LIB,  X11_Xxf86misc_FOUND,  X11::Xxf86misc
-  X11_Xxf86vm_INCLUDE_PATH,      X11_Xxf86vm_LIB     X11_Xxf86vm_FOUND,    X11::Xxf86vm
-  X11_Xfixes_INCLUDE_PATH,       X11_Xfixes_LIB,     X11_Xfixes_FOUND,     X11::Xfixes
-  X11_Xft_INCLUDE_PATH,          X11_Xft_LIB,        X11_Xft_FOUND,        X11::Xft
-  X11_Xi_INCLUDE_PATH,           X11_Xi_LIB,         X11_Xi_FOUND,         X11::Xi
-  X11_Xinerama_INCLUDE_PATH,     X11_Xinerama_LIB,   X11_Xinerama_FOUND,   X11::Xinerama
-  X11_Xkb_INCLUDE_PATH,
-  X11_Xkblib_INCLUDE_PATH,                           X11_Xkb_FOUND,        X11::Xkb
-  X11_xkbcommon_INCLUDE_PATH,    X11_xkbcommon_LIB,  X11_xkbcommon_FOUND,  X11::xkbcommon
-  X11_xkbcommon_X11_INCLUDE_PATH,X11_xkbcommon_X11_LIB,X11_xkbcommon_X11_FOUND,X11::xkbcommon_X11
-  X11_xkbfile_INCLUDE_PATH,      X11_xkbfile_LIB,    X11_xkbfile_FOUND,    X11::xkbfile
-  X11_Xmu_INCLUDE_PATH,          X11_Xmu_LIB,        X11_Xmu_FOUND,        X11::Xmu
-  X11_Xpm_INCLUDE_PATH,          X11_Xpm_LIB,        X11_Xpm_FOUND,        X11::Xpm
-  X11_Xtst_INCLUDE_PATH,         X11_Xtst_LIB,       X11_Xtst_FOUND,       X11::Xtst
-  X11_Xrandr_INCLUDE_PATH,       X11_Xrandr_LIB,     X11_Xrandr_FOUND,     X11::Xrandr
-  X11_Xrender_INCLUDE_PATH,      X11_Xrender_LIB,    X11_Xrender_FOUND,    X11::Xrender
-  X11_XRes_INCLUDE_PATH,         X11_XRes_LIB,       X11_XRes_FOUND,       X11::XRes
-  X11_Xss_INCLUDE_PATH,          X11_Xss_LIB,        X11_Xss_FOUND,        X11::Xss
-  X11_Xt_INCLUDE_PATH,           X11_Xt_LIB,         X11_Xt_FOUND,         X11::Xt
-  X11_Xutil_INCLUDE_PATH,                            X11_Xutil_FOUND,      X11::Xutil
-  X11_Xv_INCLUDE_PATH,           X11_Xv_LIB,         X11_Xv_FOUND,         X11::Xv
-  X11_dpms_INCLUDE_PATH,         (in X11_Xext_LIB),  X11_dpms_FOUND
-  X11_XShm_INCLUDE_PATH,         (in X11_Xext_LIB),  X11_XShm_FOUND
-  X11_Xshape_INCLUDE_PATH,       (in X11_Xext_LIB),  X11_Xshape_FOUND
-  X11_XSync_INCLUDE_PATH,        (in X11_Xext_LIB),  X11_XSync_FOUND
-#]=======================================================================]
-
-if (UNIX)
-  set(X11_FOUND 0)
-  # X11 is never a framework and some header files may be
-  # found in tcl on the mac
-  set(CMAKE_FIND_FRAMEWORK_SAVE ${CMAKE_FIND_FRAMEWORK})
-  set(CMAKE_FIND_FRAMEWORK NEVER)
-  set(CMAKE_REQUIRED_QUIET_SAVE ${CMAKE_REQUIRED_QUIET})
-  set(CMAKE_REQUIRED_QUIET ${X11_FIND_QUIETLY})
-  set(X11_INC_SEARCH_PATH
-    /usr/pkg/xorg/include
-    /usr/X11R6/include
-    /usr/X11R7/include
-    /usr/include/X11
-    /usr/openwin/include
-    /usr/openwin/share/include
-    /opt/graphics/OpenGL/include
-    /opt/X11/include
-  )
-
-  set(X11_LIB_SEARCH_PATH
-    /usr/pkg/xorg/lib
-    /usr/X11R6/lib
-    /usr/X11R7/lib
-    /usr/openwin/lib
-    /opt/X11/lib
-  )
-
-  find_path(X11_X11_INCLUDE_PATH X11/X.h                             ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xlib_INCLUDE_PATH X11/Xlib.h                         ${X11_INC_SEARCH_PATH})
-
-  # Look for includes; keep the list sorted by name of the cmake *_INCLUDE_PATH
-  # variable (which doesn't need to match the include file name).
-
-  # Solaris lacks XKBrules.h, so we should skip kxkbd there.
-  find_path(X11_ICE_INCLUDE_PATH X11/ICE/ICE.h                       ${X11_INC_SEARCH_PATH})
-  find_path(X11_SM_INCLUDE_PATH X11/SM/SM.h                          ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xaccessrules_INCLUDE_PATH X11/extensions/XKBrules.h  ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xaccessstr_INCLUDE_PATH X11/extensions/XKBstr.h      ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xau_INCLUDE_PATH X11/Xauth.h                         ${X11_INC_SEARCH_PATH})
-  find_path(X11_xcb_INCLUDE_PATH xcb/xcb.h                           ${X11_INC_SEARCH_PATH})
-  find_path(X11_X11_xcb_INCLUDE_PATH X11/Xlib-xcb.h                  ${X11_INC_SEARCH_PATH})
-  find_path(X11_xcb_icccm_INCLUDE_PATH xcb/xcb_icccm.h               ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xcomposite_INCLUDE_PATH X11/extensions/Xcomposite.h  ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xcursor_INCLUDE_PATH X11/Xcursor/Xcursor.h           ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xdamage_INCLUDE_PATH X11/extensions/Xdamage.h        ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xdmcp_INCLUDE_PATH X11/Xdmcp.h                       ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xext_INCLUDE_PATH X11/extensions/Xext.h              ${X11_INC_SEARCH_PATH})
-  find_path(X11_dpms_INCLUDE_PATH X11/extensions/dpms.h              ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xxf86misc_INCLUDE_PATH X11/extensions/xf86misc.h     ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xxf86vm_INCLUDE_PATH X11/extensions/xf86vmode.h      ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xfixes_INCLUDE_PATH X11/extensions/Xfixes.h          ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xft_INCLUDE_PATH X11/Xft/Xft.h                       ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xi_INCLUDE_PATH X11/extensions/XInput.h              ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xinerama_INCLUDE_PATH X11/extensions/Xinerama.h      ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xkb_INCLUDE_PATH X11/extensions/XKB.h                ${X11_INC_SEARCH_PATH})
-  find_path(X11_xkbcommon_INCLUDE_PATH xkbcommon/xkbcommon.h         ${X11_INC_SEARCH_PATH})
-  find_path(X11_xkbcommon_X11_INCLUDE_PATH xkbcommon/xkbcommon-x11.h ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xkblib_INCLUDE_PATH X11/XKBlib.h                     ${X11_INC_SEARCH_PATH})
-  find_path(X11_xkbfile_INCLUDE_PATH X11/extensions/XKBfile.h        ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xmu_INCLUDE_PATH X11/Xmu/Xmu.h                       ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xpm_INCLUDE_PATH X11/xpm.h                           ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xtst_INCLUDE_PATH X11/extensions/XTest.h             ${X11_INC_SEARCH_PATH})
-  find_path(X11_XShm_INCLUDE_PATH X11/extensions/XShm.h              ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xrandr_INCLUDE_PATH X11/extensions/Xrandr.h          ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xrender_INCLUDE_PATH X11/extensions/Xrender.h        ${X11_INC_SEARCH_PATH})
-  find_path(X11_XRes_INCLUDE_PATH X11/extensions/XRes.h              ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xss_INCLUDE_PATH X11/extensions/scrnsaver.h          ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xshape_INCLUDE_PATH X11/extensions/shape.h           ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xutil_INCLUDE_PATH X11/Xutil.h                       ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xt_INCLUDE_PATH X11/Intrinsic.h                      ${X11_INC_SEARCH_PATH})
-  find_path(X11_Xv_INCLUDE_PATH X11/extensions/Xvlib.h               ${X11_INC_SEARCH_PATH})
-  find_path(X11_XSync_INCLUDE_PATH X11/extensions/sync.h             ${X11_INC_SEARCH_PATH})
-
-  # Backwards compatibility.
-  set(X11_Xinput_INCLUDE_PATH "${X11_Xi_INCLUDE_PATH}")
-  set(X11_xf86misc_INCLUDE_PATH "${X11_Xxf86misc_INCLUDE_PATH}")
-  set(X11_xf86vmode_INCLUDE_PATH "${X11_Xxf8vm_INCLUDE_PATH}")
-  set(X11_Xkbfile_INCLUDE_PATH "${X11_xkbfile_INCLUDE_PATH}")
-  set(X11_XTest_INCLUDE_PATH "${X11_Xtst_INCLUDE_PATH}")
-  set(X11_Xscreensaver_INCLUDE_PATH "${X11_Xss_INCLUDE_PATH}")
-
-  find_library(X11_X11_LIB X11               ${X11_LIB_SEARCH_PATH})
-
-  # Find additional X libraries. Keep list sorted by library name.
-  find_library(X11_ICE_LIB ICE               ${X11_LIB_SEARCH_PATH})
-  find_library(X11_SM_LIB SM                 ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xau_LIB Xau               ${X11_LIB_SEARCH_PATH})
-  find_library(X11_xcb_LIB xcb               ${X11_LIB_SEARCH_PATH})
-  find_library(X11_X11_xcb_LIB X11-xcb       ${X11_LIB_SEARCH_PATH})
-  find_library(X11_xcb_icccm_LIB xcb-icccm   ${X11_LIB_SEARCH_PATH})
-  find_library(X11_xcb_xkb_LIB xcb-xkb       ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xcomposite_LIB Xcomposite ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xcursor_LIB Xcursor       ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xdamage_LIB Xdamage       ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xdmcp_LIB Xdmcp           ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xext_LIB Xext             ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xfixes_LIB Xfixes         ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xft_LIB Xft               ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xi_LIB Xi                 ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xinerama_LIB Xinerama     ${X11_LIB_SEARCH_PATH})
-  find_library(X11_xkbcommon_LIB xkbcommon   ${X11_LIB_SEARCH_PATH})
-  find_library(X11_xkbcommon_X11_LIB xkbcommon-x11   ${X11_LIB_SEARCH_PATH})
-  find_library(X11_xkbfile_LIB xkbfile       ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xmu_LIB Xmu               ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xpm_LIB Xpm               ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xrandr_LIB Xrandr         ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xrender_LIB Xrender       ${X11_LIB_SEARCH_PATH})
-  find_library(X11_XRes_LIB XRes             ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xss_LIB Xss               ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xt_LIB Xt                 ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xtst_LIB Xtst             ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xv_LIB Xv                 ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xxf86misc_LIB Xxf86misc   ${X11_LIB_SEARCH_PATH})
-  find_library(X11_Xxf86vm_LIB Xxf86vm       ${X11_LIB_SEARCH_PATH})
-
-  # Backwards compatibility.
-  set(X11_Xinput_LIB "${X11_Xi_LIB}")
-  set(X11_Xkbfile_LIB "${X11_xkbfile_LIB}")
-  set(X11_XTest_LIB "${X11_Xtst_LIB}")
-  set(X11_Xscreensaver_LIB "${X11_Xss_LIB}")
-
-  set(X11_LIBRARY_DIR "")
-  if(X11_X11_LIB)
-    get_filename_component(X11_LIBRARY_DIR ${X11_X11_LIB} PATH)
-  endif()
-
-  set(X11_INCLUDE_DIR) # start with empty list
-  if(X11_X11_INCLUDE_PATH)
-    list(APPEND X11_INCLUDE_DIR ${X11_X11_INCLUDE_PATH})
-  endif()
-
-  if(X11_Xlib_INCLUDE_PATH)
-    list(APPEND X11_INCLUDE_DIR ${X11_Xlib_INCLUDE_PATH})
-  endif()
-
-  if(X11_Xutil_INCLUDE_PATH)
-    set(X11_Xutil_FOUND TRUE)
-    list(APPEND X11_INCLUDE_DIR ${X11_Xutil_INCLUDE_PATH})
-  endif()
-
-  if(X11_Xshape_INCLUDE_PATH)
-    set(X11_Xshape_FOUND TRUE)
-    list(APPEND X11_INCLUDE_DIR ${X11_Xshape_INCLUDE_PATH})
-  endif()
-
-  set(X11_LIBRARIES) # start with empty list
-  if(X11_X11_LIB)
-    list(APPEND X11_LIBRARIES ${X11_X11_LIB})
-  endif()
-
-  if(X11_Xext_LIB)
-    set(X11_Xext_FOUND TRUE)
-    list(APPEND X11_LIBRARIES ${X11_Xext_LIB})
-  endif()
-
-  if(X11_Xt_LIB AND X11_Xt_INCLUDE_PATH)
-    set(X11_Xt_FOUND TRUE)
-  endif()
-
-  if(X11_Xft_LIB AND X11_Xft_INCLUDE_PATH)
-    find_package(Freetype QUIET)
-    find_package(Fontconfig QUIET)
-    if (FREETYPE_FOUND AND Fontconfig_FOUND)
-      set(X11_Xft_FOUND TRUE)
-    endif ()
-    list(APPEND X11_INCLUDE_DIR ${X11_Xft_INCLUDE_PATH})
-  endif()
-
-  if(X11_Xv_LIB AND X11_Xv_INCLUDE_PATH)
-    set(X11_Xv_FOUND TRUE)
-    list(APPEND X11_INCLUDE_DIR ${X11_Xv_INCLUDE_PATH})
-  endif()
-
-  if (X11_Xau_LIB AND X11_Xau_INCLUDE_PATH)
-    set(X11_Xau_FOUND TRUE)
-  endif ()
-
-  if (X11_xcb_LIB AND X11_xcb_INCLUDE_PATH)
-    set(X11_xcb_FOUND TRUE)
-  endif ()
-
-  if (X11_X11_xcb_LIB AND X11_X11_xcb_INCLUDE_PATH)
-    set(X11_X11_xcb_FOUND TRUE)
-  endif ()
-
-  if (X11_xcb_icccm_LIB AND X11_xcb_icccm_INCLUDE_PATH)
-    set(X11_xcb_icccm_FOUND TRUE)
-  endif ()
-
-  if (X11_xcb_xkb_LIB)
-    set(X11_xcb_xkb_FOUND TRUE)
-  endif ()
-
-  if (X11_Xdmcp_INCLUDE_PATH AND X11_Xdmcp_LIB)
-      set(X11_Xdmcp_FOUND TRUE)
-      list(APPEND X11_INCLUDE_DIR ${X11_Xdmcp_INCLUDE_PATH})
-  endif ()
-
-  if (X11_Xaccessrules_INCLUDE_PATH AND X11_Xaccessstr_INCLUDE_PATH)
-      set(X11_Xaccess_FOUND TRUE)
-      set(X11_Xaccess_INCLUDE_PATH ${X11_Xaccessstr_INCLUDE_PATH})
-      list(APPEND X11_INCLUDE_DIR ${X11_Xaccess_INCLUDE_PATH})
-  endif ()
-
-  if (X11_Xpm_INCLUDE_PATH AND X11_Xpm_LIB)
-      set(X11_Xpm_FOUND TRUE)
-      list(APPEND X11_INCLUDE_DIR ${X11_Xpm_INCLUDE_PATH})
-  endif ()
-
-  if (X11_Xcomposite_INCLUDE_PATH AND X11_Xcomposite_LIB)
-     set(X11_Xcomposite_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_Xcomposite_INCLUDE_PATH})
-  endif ()
-
-  if (X11_Xdamage_INCLUDE_PATH AND X11_Xdamage_LIB)
-     set(X11_Xdamage_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_Xdamage_INCLUDE_PATH})
-  endif ()
-
-  if (X11_XShm_INCLUDE_PATH)
-     set(X11_XShm_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_XShm_INCLUDE_PATH})
-  endif ()
-
-  if (X11_Xtst_INCLUDE_PATH AND X11_Xtst_LIB)
-      set(X11_Xtst_FOUND TRUE)
-      # Backwards compatibility.
-      set(X11_XTest_FOUND TRUE)
-      list(APPEND X11_INCLUDE_DIR ${X11_Xtst_INCLUDE_PATH})
-  endif ()
-
-  if (X11_Xi_INCLUDE_PATH AND X11_Xi_LIB)
-     set(X11_Xi_FOUND TRUE)
-     # Backwards compatibility.
-     set(X11_Xinput_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_Xi_INCLUDE_PATH})
-  endif ()
-
-  if (X11_Xinerama_INCLUDE_PATH AND X11_Xinerama_LIB)
-     set(X11_Xinerama_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_Xinerama_INCLUDE_PATH})
-  endif ()
-
-  if (X11_Xfixes_INCLUDE_PATH AND X11_Xfixes_LIB)
-     set(X11_Xfixes_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_Xfixes_INCLUDE_PATH})
-  endif ()
-
-  if (X11_Xrender_INCLUDE_PATH AND X11_Xrender_LIB)
-     set(X11_Xrender_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_Xrender_INCLUDE_PATH})
-  endif ()
-
-  if (X11_XRes_INCLUDE_PATH AND X11_XRes_LIB)
-     set(X11_XRes_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_XRes_INCLUDE_PATH})
-  endif ()
-
-  if (X11_Xrandr_INCLUDE_PATH AND X11_Xrandr_LIB)
-     set(X11_Xrandr_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_Xrandr_INCLUDE_PATH})
-  endif ()
-
-  if (X11_Xxf86misc_INCLUDE_PATH AND X11_Xxf86misc_LIB)
-     set(X11_Xxf86misc_FOUND TRUE)
-     # Backwards compatibility.
-     set(X11_xf86misc_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_Xxf86misc_INCLUDE_PATH})
-  endif ()
-
-  if (X11_Xxf86vm_INCLUDE_PATH AND X11_Xxf86vm_LIB)
-     set(X11_Xxf86vm_FOUND TRUE)
-     # Backwards compatibility.
-     set(X11_xf86vmode_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_Xxf86vm_INCLUDE_PATH})
-  endif ()
-
-  if (X11_Xcursor_INCLUDE_PATH AND X11_Xcursor_LIB)
-     set(X11_Xcursor_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_Xcursor_INCLUDE_PATH})
-  endif ()
-
-  if (X11_Xss_INCLUDE_PATH AND X11_Xss_LIB)
-     set(X11_Xss_FOUND TRUE)
-     set(X11_Xscreensaver_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_Xss_INCLUDE_PATH})
-  endif ()
-
-  if (X11_dpms_INCLUDE_PATH)
-     set(X11_dpms_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_dpms_INCLUDE_PATH})
-  endif ()
-
-  if (X11_Xkb_INCLUDE_PATH AND X11_Xkblib_INCLUDE_PATH AND X11_Xlib_INCLUDE_PATH)
-     set(X11_Xkb_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_Xkb_INCLUDE_PATH} )
-  endif ()
-
-  if (X11_xkbcommon_INCLUDE_PATH AND X11_xkbcommon_LIB)
-     set(X11_xkbcommon_FOUND TRUE)
-  endif ()
-
-  if (X11_xkbcommon_X11_INCLUDE_PATH AND X11_xkbcommon_X11_LIB)
-     set(X11_xkbcommon_X11_FOUND TRUE)
-  endif ()
-
-  if (X11_xkbfile_INCLUDE_PATH AND X11_xkbfile_LIB AND X11_Xlib_INCLUDE_PATH)
-     set(X11_xkbfile_FOUND TRUE)
-     # Backwards compatibility.
-     set(X11_Xkbfile_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_xkbfile_INCLUDE_PATH} )
-  endif ()
-
-  if (X11_Xmu_INCLUDE_PATH AND X11_Xmu_LIB)
-     set(X11_Xmu_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_Xmu_INCLUDE_PATH})
-  endif ()
-
-  if (X11_XSync_INCLUDE_PATH)
-     set(X11_XSync_FOUND TRUE)
-     list(APPEND X11_INCLUDE_DIR ${X11_XSync_INCLUDE_PATH})
-  endif ()
-
-  if(X11_ICE_LIB AND X11_ICE_INCLUDE_PATH)
-     set(X11_ICE_FOUND TRUE)
-  endif()
-
-  if(X11_SM_LIB AND X11_SM_INCLUDE_PATH)
-     set(X11_SM_FOUND TRUE)
-  endif()
-
-  # Most of the X11 headers will be in the same directories, avoid
-  # creating a huge list of duplicates.
-  if (X11_INCLUDE_DIR)
-     list(REMOVE_DUPLICATES X11_INCLUDE_DIR)
-  endif ()
-
-  # Deprecated variable for backwards compatibility with CMake 1.4
-  if (X11_X11_INCLUDE_PATH AND X11_LIBRARIES)
-    set(X11_FOUND 1)
-  endif ()
-
-  include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-  find_package_handle_standard_args(X11
-    REQUIRED_VARS X11_X11_INCLUDE_PATH X11_X11_LIB
-    HANDLE_COMPONENTS)
-
-  if(X11_FOUND)
-    include(${CMAKE_CURRENT_LIST_DIR}/CheckFunctionExists.cmake)
-    include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake)
-
-    # Translated from an autoconf-generated configure script.
-    # See libs.m4 in autoconf's m4 directory.
-    if($ENV{ISC} MATCHES "^yes$")
-      set(X11_X_EXTRA_LIBS -lnsl_s -linet)
-    else()
-      set(X11_X_EXTRA_LIBS "")
-
-      # See if XOpenDisplay in X11 works by itself.
-      check_library_exists("${X11_LIBRARIES}" "XOpenDisplay" "${X11_LIBRARY_DIR}" X11_LIB_X11_SOLO)
-      if(NOT X11_LIB_X11_SOLO)
-        # Find library needed for dnet_ntoa.
-        check_library_exists("dnet" "dnet_ntoa" "" X11_LIB_DNET_HAS_DNET_NTOA)
-        if (X11_LIB_DNET_HAS_DNET_NTOA)
-          list(APPEND X11_X_EXTRA_LIBS -ldnet)
-        else ()
-          check_library_exists("dnet_stub" "dnet_ntoa" "" X11_LIB_DNET_STUB_HAS_DNET_NTOA)
-          if (X11_LIB_DNET_STUB_HAS_DNET_NTOA)
-            list(APPEND X11_X_EXTRA_LIBS -ldnet_stub)
-          endif ()
-        endif ()
-      endif()
-
-      # Find library needed for gethostbyname.
-      check_function_exists("gethostbyname" CMAKE_HAVE_GETHOSTBYNAME)
-      if(NOT CMAKE_HAVE_GETHOSTBYNAME)
-        check_library_exists("nsl" "gethostbyname" "" CMAKE_LIB_NSL_HAS_GETHOSTBYNAME)
-        if (CMAKE_LIB_NSL_HAS_GETHOSTBYNAME)
-          list(APPEND X11_X_EXTRA_LIBS -lnsl)
-        else ()
-          check_library_exists("bsd" "gethostbyname" "" CMAKE_LIB_BSD_HAS_GETHOSTBYNAME)
-          if (CMAKE_LIB_BSD_HAS_GETHOSTBYNAME)
-            list(APPEND X11_X_EXTRA_LIBS -lbsd)
-          endif ()
-        endif ()
-      endif()
-
-      # Find library needed for connect.
-      check_function_exists("connect" CMAKE_HAVE_CONNECT)
-      if(NOT CMAKE_HAVE_CONNECT)
-        check_library_exists("socket" "connect" "" CMAKE_LIB_SOCKET_HAS_CONNECT)
-        if (CMAKE_LIB_SOCKET_HAS_CONNECT)
-          list(INSERT X11_X_EXTRA_LIBS 0 -lsocket)
-        endif ()
-      endif()
-
-      # Find library needed for remove.
-      check_function_exists("remove" CMAKE_HAVE_REMOVE)
-      if(NOT CMAKE_HAVE_REMOVE)
-        check_library_exists("posix" "remove" "" CMAKE_LIB_POSIX_HAS_REMOVE)
-        if (CMAKE_LIB_POSIX_HAS_REMOVE)
-          list(APPEND X11_X_EXTRA_LIBS -lposix)
-        endif ()
-      endif()
-
-      # Find library needed for shmat.
-      check_function_exists("shmat" CMAKE_HAVE_SHMAT)
-      if(NOT CMAKE_HAVE_SHMAT)
-        check_library_exists("ipc" "shmat" "" CMAKE_LIB_IPS_HAS_SHMAT)
-        if (CMAKE_LIB_IPS_HAS_SHMAT)
-          list(APPEND X11_X_EXTRA_LIBS -lipc)
-        endif ()
-      endif()
-    endif()
-
-    if (X11_ICE_FOUND)
-      check_library_exists("ICE" "IceConnectionNumber" "${X11_LIBRARY_DIR}"
-                            CMAKE_LIB_ICE_HAS_ICECONNECTIONNUMBER)
-      if(CMAKE_LIB_ICE_HAS_ICECONNECTIONNUMBER)
-        set (X11_X_PRE_LIBS ${X11_ICE_LIB})
-        if(X11_SM_LIB)
-          list(INSERT X11_X_PRE_LIBS 0 ${X11_SM_LIB})
-        endif()
-      endif()
-    endif ()
-
-    # Build the final list of libraries.
-    set(X11_LIBRARIES ${X11_X_PRE_LIBS} ${X11_LIBRARIES} ${X11_X_EXTRA_LIBS})
-
-    if (NOT TARGET X11::X11)
-      add_library(X11::X11 UNKNOWN IMPORTED)
-      set_target_properties(X11::X11 PROPERTIES
-        IMPORTED_LOCATION "${X11_X11_LIB}"
-        INTERFACE_INCLUDE_DIRECTORIES "${X11_X11_INCLUDE_PATH}")
-    endif ()
-  endif ()
-
-  if (X11_ICE_FOUND AND NOT TARGET X11::ICE)
-    add_library(X11::ICE UNKNOWN IMPORTED)
-    set_target_properties(X11::ICE PROPERTIES
-      IMPORTED_LOCATION "${X11_ICE_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_ICE_INCLUDE_PATH}")
-  endif ()
-
-  if (X11_SM_FOUND AND NOT TARGET X11::SM)
-    add_library(X11::SM UNKNOWN IMPORTED)
-    set_target_properties(X11::SM PROPERTIES
-      IMPORTED_LOCATION "${X11_SM_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_SM_INCLUDE_PATH}")
-  endif ()
-
-  if (X11_Xau_FOUND AND NOT TARGET X11::Xau)
-    add_library(X11::Xau UNKNOWN IMPORTED)
-    set_target_properties(X11::Xau PROPERTIES
-      IMPORTED_LOCATION "${X11_Xau_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xau_INCLUDE_PATH}")
-  endif ()
-
-  if (X11_xcb_FOUND AND NOT TARGET X11::xcb)
-    add_library(X11::xcb UNKNOWN IMPORTED)
-    set_target_properties(X11::xcb PROPERTIES
-      IMPORTED_LOCATION "${X11_xcb_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_xcb_INCLUDE_PATH}")
-  endif ()
-
-  if (X11_X11_xcb_FOUND AND NOT TARGET X11::X11_xcb)
-    add_library(X11::X11_xcb UNKNOWN IMPORTED)
-    set_target_properties(X11::X11_xcb PROPERTIES
-      IMPORTED_LOCATION "${X11_X11_xcb_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_X11_xcb_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::xcb;X11::X11")
-  endif ()
-
-  if (X11_xcb_icccm_FOUND AND NOT TARGET X11::xcb_icccm)
-    add_library(X11::xcb_icccm UNKNOWN IMPORTED)
-    set_target_properties(X11::xcb_icccm PROPERTIES
-      IMPORTED_LOCATION "${X11_xcb_icccm_LIB}"
-      INTERFACE_LINK_LIBRARIES "X11::xcb")
-  endif ()
-
-  if (X11_xcb_xkb_FOUND AND NOT TARGET X11::xcb_xkb)
-    add_library(X11::xcb_xkb UNKNOWN IMPORTED)
-    set_target_properties(X11::xcb_xkb PROPERTIES
-      IMPORTED_LOCATION "${X11_xcb_xkb_LIB}"
-      INTERFACE_LINK_LIBRARIES "X11::xcb")
-  endif ()
-
-  if (X11_Xcomposite_FOUND AND NOT TARGET X11::Xcomposite)
-    add_library(X11::Xcomposite UNKNOWN IMPORTED)
-    set_target_properties(X11::Xcomposite PROPERTIES
-      IMPORTED_LOCATION "${X11_Xcomposite_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xcomposite_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::X11")
-  endif ()
-
-  if (X11_Xcursor_FOUND AND NOT TARGET X11::Xcursor)
-    add_library(X11::Xcursor UNKNOWN IMPORTED)
-    set_target_properties(X11::Xcursor PROPERTIES
-      IMPORTED_LOCATION "${X11_Xcursor_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xcursor_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::Xrender;X11::Xfixes;X11::X11")
-  endif ()
-
-  if (X11_Xdamage_FOUND AND NOT TARGET X11::Xdamage)
-    add_library(X11::Xdamage UNKNOWN IMPORTED)
-    set_target_properties(X11::Xdamage PROPERTIES
-      IMPORTED_LOCATION "${X11_Xdamage_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xdamage_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::Xfixes;X11::X11")
-  endif ()
-
-  if (X11_Xdmcp_FOUND AND NOT TARGET X11::Xdmcp)
-    add_library(X11::Xdmcp UNKNOWN IMPORTED)
-    set_target_properties(X11::Xdmcp PROPERTIES
-      IMPORTED_LOCATION "${X11_Xdmcp_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xdmcp_INCLUDE_PATH}")
-  endif ()
-
-  if (X11_Xext_FOUND AND NOT TARGET X11::Xext)
-    add_library(X11::Xext UNKNOWN IMPORTED)
-    set_target_properties(X11::Xext PROPERTIES
-      IMPORTED_LOCATION "${X11_Xext_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xext_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::X11")
-  endif ()
-
-  if (X11_Xxf86misc_FOUND AND NOT TARGET X11::Xxf86misc)
-    add_library(X11::Xxf86misc UNKNOWN IMPORTED)
-    set_target_properties(X11::Xxf86misc PROPERTIES
-      IMPORTED_LOCATION "${X11_Xxf86misc_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xxf86misc_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::X11;X11::Xext")
-  endif ()
-
-  if (X11_Xxf86vm_FOUND AND NOT TARGET X11::Xxf86vm)
-    add_library(X11::Xxf86vm UNKNOWN IMPORTED)
-    set_target_properties(X11::Xxf86vm PROPERTIES
-      IMPORTED_LOCATION "${X11_Xxf86vm_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xxf86vm_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::X11;X11::Xext")
-  endif ()
-
-  if (X11_Xfixes_FOUND AND NOT TARGET X11::Xfixes)
-    add_library(X11::Xfixes UNKNOWN IMPORTED)
-    set_target_properties(X11::Xfixes PROPERTIES
-      IMPORTED_LOCATION "${X11_Xfixes_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xfixes_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::X11")
-  endif ()
-
-  if (X11_Xft_FOUND AND NOT TARGET X11::Xft)
-    add_library(X11::Xft UNKNOWN IMPORTED)
-    set_target_properties(X11::Xft PROPERTIES
-      IMPORTED_LOCATION "${X11_Xft_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xft_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::Xrender;X11::X11;Fontconfig::Fontconfig;Freetype::Freetype")
-  endif ()
-
-  if (X11_Xi_FOUND AND NOT TARGET X11::Xi)
-    add_library(X11::Xi UNKNOWN IMPORTED)
-    set_target_properties(X11::Xi PROPERTIES
-      IMPORTED_LOCATION "${X11_Xi_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xi_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
-  endif ()
-
-  if (X11_Xinerama_FOUND AND NOT TARGET X11::Xinerama)
-    add_library(X11::Xinerama UNKNOWN IMPORTED)
-    set_target_properties(X11::Xinerama PROPERTIES
-      IMPORTED_LOCATION "${X11_Xinerama_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xinerama_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
-  endif ()
-
-  if (X11_Xkb_FOUND AND NOT TARGET X11::Xkb)
-    add_library(X11::Xkb INTERFACE IMPORTED)
-    set_target_properties(X11::Xkb PROPERTIES
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xkb_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::X11")
-  endif ()
-
-  if (X11_xkbcommon_FOUND AND NOT TARGET X11::xkbcommon)
-    add_library(X11::xkbcommon UNKNOWN IMPORTED)
-    set_target_properties(X11::xkbcommon PROPERTIES
-      IMPORTED_LOCATION "${X11_xkbcommon_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_xkbcommon_INCLUDE_PATH}")
-  endif ()
-
-  if (X11_xkbcommon_X11_FOUND AND NOT TARGET X11::xkbcommon_X11)
-    add_library(X11::xkbcommon_X11 UNKNOWN IMPORTED)
-    set_target_properties(X11::xkbcommon_X11 PROPERTIES
-      IMPORTED_LOCATION "${X11_xkbcommon_X11_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_xkbcommon_X11_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::X11;X11::xkbcommon")
-  endif ()
-
-  if (X11_xkbfile_FOUND AND NOT TARGET X11::xkbfile)
-    add_library(X11::xkbfile UNKNOWN IMPORTED)
-    set_target_properties(X11::xkbfile PROPERTIES
-      IMPORTED_LOCATION "${X11_xkbfile_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_xkbfile_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::X11")
-  endif ()
-
-  if (X11_Xmu_FOUND AND NOT TARGET X11::Xmu)
-    add_library(X11::Xmu UNKNOWN IMPORTED)
-    set_target_properties(X11::Xmu PROPERTIES
-      IMPORTED_LOCATION "${X11_Xmu_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xmu_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::Xt;X11::Xext;X11::X11")
-  endif ()
-
-  if (X11_Xpm_FOUND AND NOT TARGET X11::Xpm)
-    add_library(X11::Xpm UNKNOWN IMPORTED)
-    set_target_properties(X11::Xpm PROPERTIES
-      IMPORTED_LOCATION "${X11_Xpm_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xpm_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::X11")
-  endif ()
-
-  if (X11_Xtst_FOUND AND NOT TARGET X11::Xtst)
-    add_library(X11::Xtst UNKNOWN IMPORTED)
-    set_target_properties(X11::Xtst PROPERTIES
-      IMPORTED_LOCATION "${X11_Xtst_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xtst_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::Xi;X11::Xext;X11::X11")
-  endif ()
-
-  if (X11_Xrandr_FOUND AND NOT TARGET X11::Xrandr)
-    add_library(X11::Xrandr UNKNOWN IMPORTED)
-    set_target_properties(X11::Xrandr PROPERTIES
-      IMPORTED_LOCATION "${X11_Xrandr_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xrandr_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::Xrender;X11::Xext;X11::X11")
-  endif ()
-
-  if (X11_Xrender_FOUND AND NOT TARGET X11::Xrender)
-    add_library(X11::Xrender UNKNOWN IMPORTED)
-    set_target_properties(X11::Xrender PROPERTIES
-      IMPORTED_LOCATION "${X11_Xrender_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xrender_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::X11")
-  endif ()
-
-  if (X11_XRes_FOUND AND NOT TARGET X11::XRes)
-    add_library(X11::XRes UNKNOWN IMPORTED)
-    set_target_properties(X11::XRes PROPERTIES
-      IMPORTED_LOCATION "${X11_XRes_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_XRes_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
-  endif ()
-
-  if (X11_Xss_FOUND AND NOT TARGET X11::Xss)
-    add_library(X11::Xss UNKNOWN IMPORTED)
-    set_target_properties(X11::Xss PROPERTIES
-      IMPORTED_LOCATION "${X11_Xss_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xss_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
-  endif ()
-
-  if (X11_Xt_FOUND AND NOT TARGET X11::Xt)
-    add_library(X11::Xt UNKNOWN IMPORTED)
-    set_target_properties(X11::Xt PROPERTIES
-      IMPORTED_LOCATION "${X11_Xt_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xt_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::ICE;X11::SM;X11::X11")
-  endif ()
-
-  if (X11_Xutil_FOUND AND NOT TARGET X11::Xutil)
-    add_library(X11::Xutil INTERFACE IMPORTED)
-    set_target_properties(X11::Xutil PROPERTIES
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xutil_INCLUDE_PATH}"
-      # libX11 contains the implementations for functions in the Xutil.h
-      # header.
-      INTERFACE_LINK_LIBRARIES "X11::X11")
-  endif ()
-
-  if (X11_Xv_FOUND AND NOT TARGET X11::Xv)
-    add_library(X11::Xv UNKNOWN IMPORTED)
-    set_target_properties(X11::Xv PROPERTIES
-      IMPORTED_LOCATION "${X11_Xv_LIB}"
-      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xv_INCLUDE_PATH}"
-      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
-  endif ()
-
-  mark_as_advanced(
-    X11_X11_INCLUDE_PATH
-    X11_X11_LIB
-    X11_Xext_INCLUDE_PATH
-    X11_Xext_LIB
-    X11_Xau_LIB
-    X11_Xau_INCLUDE_PATH
-    X11_xcb_LIB
-    X11_xcb_INCLUDE_PATH
-    X11_xcb_xkb_LIB
-    X11_X11_xcb_LIB
-    X11_X11_xcb_INCLUDE_PATH
-    X11_Xlib_INCLUDE_PATH
-    X11_Xutil_INCLUDE_PATH
-    X11_Xcomposite_INCLUDE_PATH
-    X11_Xcomposite_LIB
-    X11_Xfixes_LIB
-    X11_Xfixes_INCLUDE_PATH
-    X11_Xrandr_LIB
-    X11_Xrandr_INCLUDE_PATH
-    X11_Xdamage_LIB
-    X11_Xdamage_INCLUDE_PATH
-    X11_Xrender_LIB
-    X11_Xrender_INCLUDE_PATH
-    X11_XRes_LIB
-    X11_XRes_INCLUDE_PATH
-    X11_Xxf86misc_LIB
-    X11_Xxf86misc_INCLUDE_PATH
-    X11_Xxf86vm_LIB
-    X11_Xxf86vm_INCLUDE_PATH
-    X11_Xi_LIB
-    X11_Xi_INCLUDE_PATH
-    X11_Xinerama_LIB
-    X11_Xinerama_INCLUDE_PATH
-    X11_Xtst_LIB
-    X11_Xtst_INCLUDE_PATH
-    X11_Xcursor_LIB
-    X11_Xcursor_INCLUDE_PATH
-    X11_dpms_INCLUDE_PATH
-    X11_Xt_LIB
-    X11_Xt_INCLUDE_PATH
-    X11_Xdmcp_LIB
-    X11_LIBRARIES
-    X11_Xaccessrules_INCLUDE_PATH
-    X11_Xaccessstr_INCLUDE_PATH
-    X11_Xdmcp_INCLUDE_PATH
-    X11_Xkb_INCLUDE_PATH
-    X11_Xkblib_INCLUDE_PATH
-    X11_xkbcommon_INCLUDE_PATH
-    X11_xkbcommon_LIB
-    X11_xkbcommon_X11_INCLUDE_PATH
-    X11_xkbcommon_X11_LIB
-    X11_xkbfile_INCLUDE_PATH
-    X11_xkbfile_LIB
-    X11_Xmu_INCLUDE_PATH
-    X11_Xmu_LIB
-    X11_Xss_INCLUDE_PATH
-    X11_Xss_LIB
-    X11_Xpm_INCLUDE_PATH
-    X11_Xpm_LIB
-    X11_Xft_LIB
-    X11_Xft_INCLUDE_PATH
-    X11_Xshape_INCLUDE_PATH
-    X11_Xv_LIB
-    X11_Xv_INCLUDE_PATH
-    X11_XShm_INCLUDE_PATH
-    X11_ICE_LIB
-    X11_ICE_INCLUDE_PATH
-    X11_SM_LIB
-    X11_SM_INCLUDE_PATH
-    X11_XSync_INCLUDE_PATH
-  )
-  set(CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_SAVE})
-  set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE})
-endif ()
diff --git a/share/cmake-3.18/Modules/FindXCTest.cmake b/share/cmake-3.18/Modules/FindXCTest.cmake
deleted file mode 100644
index 15721e1..0000000
--- a/share/cmake-3.18/Modules/FindXCTest.cmake
+++ /dev/null
@@ -1,213 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindXCTest
-----------
-
-Functions to help creating and executing XCTest bundles.
-
-An XCTest bundle is a CFBundle with a special product-type
-and bundle extension. The Mac Developer Library provides more
-information in the `Testing with Xcode`_ document.
-
-.. _Testing with Xcode: http://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/testing_with_xcode/
-
-Module Functions
-^^^^^^^^^^^^^^^^
-
-.. command:: xctest_add_bundle
-
-  The ``xctest_add_bundle`` function creates a XCTest bundle named
-  <target> which will test the target <testee>. Supported target types
-  for testee are Frameworks and App Bundles::
-
-    xctest_add_bundle(
-      <target>  # Name of the XCTest bundle
-      <testee>  # Target name of the testee
-      )
-
-.. command:: xctest_add_test
-
-  The ``xctest_add_test`` function adds an XCTest bundle to the
-  project to be run by :manual:`ctest(1)`. The test will be named
-  <name> and tests <bundle>::
-
-    xctest_add_test(
-      <name>    # Test name
-      <bundle>  # Target name of XCTest bundle
-      )
-
-Module Variables
-^^^^^^^^^^^^^^^^
-
-The following variables are set by including this module:
-
-.. variable:: XCTest_FOUND
-
-  True if the XCTest Framework and executable were found.
-
-.. variable:: XCTest_EXECUTABLE
-
-  The path to the xctest command line tool used to execute XCTest bundles.
-
-.. variable:: XCTest_INCLUDE_DIRS
-
-  The directory containing the XCTest Framework headers.
-
-.. variable:: XCTest_LIBRARIES
-
-  The location of the XCTest Framework.
-
-#]=======================================================================]
-
-set(_PRESERVED_CMAKE_FIND_ROOT_PATH "${CMAKE_FIND_ROOT_PATH}")
-
-if(CMAKE_EFFECTIVE_SYSTEM_NAME STREQUAL "Apple"
-   AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
-  # Non-macos systems set the CMAKE_FIND_ROOT_PATH_MODE to "ONLY" which
-  # restricts the search paths too much to find XCTest.framework. In
-  # contrast to the regular system frameworks which reside within the
-  # SDK direectory the XCTest framework is located in the respective
-  # platform directory which is not added to the CMAKE_FIND_ROOT_PATH
-  # (only to CMAKE_SYSTEM_FRAMEWORK_PATH) and therefore not searched.
-  #
-  # Until this is properly addressed, temporaily add the platform
-  # directory to CMAKE_FIND_ROOT_PATH.
-  list(APPEND CMAKE_FIND_ROOT_PATH "${_CMAKE_OSX_SYSROOT_PATH}/../..")
-endif()
-
-find_path(XCTest_INCLUDE_DIR
-  NAMES "XCTest/XCTest.h"
-  DOC "XCTest include directory")
-mark_as_advanced(XCTest_INCLUDE_DIR)
-
-find_library(XCTest_LIBRARY
-  NAMES XCTest
-  DOC "XCTest Framework library")
-mark_as_advanced(XCTest_LIBRARY)
-
-set(CMAKE_FIND_ROOT_PATH "${_PRESERVED_CMAKE_FIND_ROOT_PATH}")
-unset(_PRESERVED_CMAKE_FIND_ROOT_PATH)
-
-execute_process(
-  COMMAND xcrun --find xctest
-  OUTPUT_VARIABLE _xcrun_out OUTPUT_STRIP_TRAILING_WHITESPACE
-  ERROR_VARIABLE _xcrun_err)
-if(_xcrun_out)
-  set(XCTest_EXECUTABLE "${_xcrun_out}" CACHE FILEPATH "XCTest executable")
-  mark_as_advanced(XCTest_EXECUTABLE)
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(XCTest
-  FOUND_VAR XCTest_FOUND
-  REQUIRED_VARS XCTest_LIBRARY XCTest_INCLUDE_DIR XCTest_EXECUTABLE)
-
-if(XCTest_FOUND)
-  set(XCTest_INCLUDE_DIRS "${XCTest_INCLUDE_DIR}")
-  set(XCTest_LIBRARIES "${XCTest_LIBRARY}")
-endif(XCTest_FOUND)
-
-
-function(xctest_add_bundle target testee)
-  if(NOT XCTest_FOUND)
-    message(FATAL_ERROR "XCTest is required to create a XCTest Bundle.")
-  endif(NOT XCTest_FOUND)
-
-  if(NOT CMAKE_OSX_SYSROOT)
-    message(FATAL_ERROR "Adding XCTest bundles requires CMAKE_OSX_SYSROOT to be set.")
-  endif()
-
-  add_library(${target} MODULE ${ARGN})
-
-  set_target_properties(${target} PROPERTIES
-    BUNDLE TRUE
-    XCTEST TRUE
-    XCTEST_TESTEE ${testee})
-
-  target_link_libraries(${target} PRIVATE "-framework Foundation")
-  target_link_libraries(${target} PRIVATE ${XCTest_LIBRARIES})
-  target_include_directories(${target} PRIVATE ${XCTest_INCLUDE_DIRS})
-
-  # retrieve testee target type
-  if(NOT TARGET ${testee})
-    message(FATAL_ERROR "${testee} is not a target.")
-  endif()
-  get_property(_testee_type TARGET ${testee} PROPERTY TYPE)
-  get_property(_testee_framework TARGET ${testee} PROPERTY FRAMEWORK)
-  get_property(_testee_macosx_bundle TARGET ${testee} PROPERTY MACOSX_BUNDLE)
-
-  if(_testee_type STREQUAL "SHARED_LIBRARY" AND _testee_framework)
-    # testee is a Framework
-    target_link_libraries(${target} PRIVATE ${testee})
-
-  elseif(_testee_type STREQUAL "STATIC_LIBRARY")
-    # testee is a static library
-    target_link_libraries(${target} PRIVATE ${testee})
-
-  elseif(_testee_type STREQUAL "EXECUTABLE" AND _testee_macosx_bundle)
-    # testee is an App Bundle
-    add_dependencies(${target} ${testee})
-    if(XCODE)
-      set_target_properties(${target} PROPERTIES
-        XCODE_ATTRIBUTE_BUNDLE_LOADER "$(TEST_HOST)"
-        XCODE_ATTRIBUTE_TEST_HOST "$<TARGET_FILE:${testee}>")
-      if(NOT XCODE_VERSION VERSION_LESS 7.3)
-        set_target_properties(${target} PROPERTIES
-          LIBRARY_OUTPUT_DIRECTORY "$<TARGET_BUNDLE_CONTENT_DIR:${testee}>/PlugIns")
-      endif()
-    else(XCODE)
-      target_link_libraries(${target}
-        PRIVATE -bundle_loader $<TARGET_FILE:${testee}>)
-    endif(XCODE)
-
-  else()
-    message(FATAL_ERROR "Testee ${testee} is of unsupported type.")
-  endif()
-endfunction(xctest_add_bundle)
-
-
-function(xctest_add_test name bundle)
-  if(NOT XCTest_EXECUTABLE)
-    message(FATAL_ERROR "XCTest executable is required to register a test.")
-  endif()
-
-  # check that bundle is a XCTest Bundle
-
-  if(NOT TARGET ${bundle})
-    message(FATAL_ERROR "${bundle} is not a target.")
-  endif(NOT TARGET ${bundle})
-
-  get_property(_test_type TARGET ${bundle} PROPERTY TYPE)
-  get_property(_test_bundle TARGET ${bundle} PROPERTY BUNDLE)
-  get_property(_test_xctest TARGET ${bundle} PROPERTY XCTEST)
-
-  if(NOT _test_type STREQUAL "MODULE_LIBRARY"
-       OR NOT _test_xctest OR NOT _test_bundle)
-    message(FATAL_ERROR "Test ${bundle} is not an XCTest Bundle")
-  endif()
-
-  # get and check testee properties
-
-  get_property(_testee TARGET ${bundle} PROPERTY XCTEST_TESTEE)
-  if(NOT TARGET ${_testee})
-    message(FATAL_ERROR "${_testee} is not a target.")
-  endif()
-
-  get_property(_testee_type TARGET ${_testee} PROPERTY TYPE)
-  get_property(_testee_framework TARGET ${_testee} PROPERTY FRAMEWORK)
-
-  # register test
-
-  add_test(
-    NAME ${name}
-    COMMAND ${XCTest_EXECUTABLE} $<TARGET_BUNDLE_DIR:${bundle}>)
-
-  # point loader to testee in case rpath is disabled
-
-  if(_testee_type STREQUAL "SHARED_LIBRARY" AND _testee_framework)
-    set_property(TEST ${name} APPEND PROPERTY
-      ENVIRONMENT DYLD_FRAMEWORK_PATH=$<TARGET_LINKER_FILE_DIR:${_testee}>/..)
-  endif()
-endfunction(xctest_add_test)
diff --git a/share/cmake-3.18/Modules/FindXalanC.cmake b/share/cmake-3.18/Modules/FindXalanC.cmake
deleted file mode 100644
index 54783e3..0000000
--- a/share/cmake-3.18/Modules/FindXalanC.cmake
+++ /dev/null
@@ -1,153 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindXalanC
------------
-
-Find the Apache Xalan-C++ XSL transform processor headers and libraries.
-
-Imported targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :prop_tgt:`IMPORTED` targets:
-
-``XalanC::XalanC``
-  The Xalan-C++ ``xalan-c`` library, if found.
-
-Result variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``XalanC_FOUND``
-  true if the Xalan headers and libraries were found
-``XalanC_VERSION``
-  Xalan release version
-``XalanC_INCLUDE_DIRS``
-  the directory containing the Xalan headers; note
-  ``XercesC_INCLUDE_DIRS`` is also required
-``XalanC_LIBRARIES``
-  Xalan libraries to be linked; note ``XercesC_LIBRARIES`` is also
-  required
-
-Cache variables
-^^^^^^^^^^^^^^^
-
-The following cache variables may also be set:
-
-``XalanC_INCLUDE_DIR``
-  the directory containing the Xalan headers
-``XalanC_LIBRARY``
-  the Xalan library
-#]=======================================================================]
-
-# Written by Roger Leigh <rleigh@codelibre.net>
-
-function(_XalanC_GET_VERSION  version_hdr)
-    file(STRINGS ${version_hdr} _contents REGEX "^[ \t]*#define XALAN_VERSION_.*")
-    if(_contents)
-        string(REGEX REPLACE "[^*]*#define XALAN_VERSION_MAJOR[ \t(]+([0-9]+).*" "\\1" XalanC_MAJOR "${_contents}")
-        string(REGEX REPLACE "[^*]*#define XALAN_VERSION_MINOR[ \t(]+([0-9]+).*" "\\1" XalanC_MINOR "${_contents}")
-        string(REGEX REPLACE "[^*]*#define XALAN_VERSION_REVISION[ \t(]+([0-9]+).*" "\\1" XalanC_PATCH "${_contents}")
-
-        if(NOT XalanC_MAJOR MATCHES "^[0-9]+$")
-            message(FATAL_ERROR "Version parsing failed for XALAN_VERSION_MAJOR!")
-        endif()
-        if(NOT XalanC_MINOR MATCHES "^[0-9]+$")
-            message(FATAL_ERROR "Version parsing failed for XALAN_VERSION_MINOR!")
-        endif()
-        if(NOT XalanC_PATCH MATCHES "^[0-9]+$")
-            message(FATAL_ERROR "Version parsing failed for XALAN_VERSION_REVISION!")
-        endif()
-
-        set(XalanC_VERSION "${XalanC_MAJOR}.${XalanC_MINOR}.${XalanC_PATCH}" PARENT_SCOPE)
-        set(XalanC_VERSION_MAJOR "${XalanC_MAJOR}" PARENT_SCOPE)
-        set(XalanC_VERSION_MINOR "${XalanC_MINOR}" PARENT_SCOPE)
-        set(XalanC_VERSION_PATCH "${XalanC_PATCH}" PARENT_SCOPE)
-    else()
-        message(FATAL_ERROR "Include file ${version_hdr} does not exist or does not contain expected version information")
-    endif()
-endfunction()
-
-# Find include directory
-find_path(XalanC_INCLUDE_DIR
-          NAMES "xalanc/XalanTransformer/XalanTransformer.hpp"
-          DOC "Xalan-C++ include directory")
-mark_as_advanced(XalanC_INCLUDE_DIR)
-
-if(XalanC_INCLUDE_DIR AND EXISTS "${XalanC_INCLUDE_DIR}/xalanc/Include/XalanVersion.hpp")
-  _XalanC_GET_VERSION("${XalanC_INCLUDE_DIR}/xalanc/Include/XalanVersion.hpp")
-endif()
-
-if(NOT XalanC_LIBRARY)
-  # Find all XalanC libraries
-  find_library(XalanC_LIBRARY_RELEASE
-               NAMES "Xalan-C" "xalan-c"
-                     "Xalan-C_${XalanC_VERSION_MAJOR}"
-                     "Xalan-C_${XalanC_VERSION_MAJOR}_${XalanC_VERSION_MINOR}"
-               DOC "Xalan-C++ libraries (release)")
-  find_library(XalanC_LIBRARY_DEBUG
-               NAMES "Xalan-CD" "xalan-cd"
-                     "Xalan-C_${XalanC_VERSION_MAJOR}D"
-                     "Xalan-C_${XalanC_VERSION_MAJOR}_${XalanC_VERSION_MINOR}D"
-               DOC "Xalan-C++ libraries (debug)")
-  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-  select_library_configurations(XalanC)
-  mark_as_advanced(XalanC_LIBRARY_RELEASE XalanC_LIBRARY_DEBUG)
-endif()
-
-unset(XalanC_VERSION_MAJOR)
-unset(XalanC_VERSION_MINOR)
-unset(XalanC_VERSION_PATCH)
-
-unset(XalanC_XERCESC_REQUIRED)
-if(XalanC_FIND_REQUIRED)
-  set(XalanC_XERCESC_REQUIRED REQUIRED)
-endif()
-find_package(XercesC ${XalanC_XERCESC_REQUIRED})
-unset(XalanC_XERCESC_REQUIRED)
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(XalanC
-                                  FOUND_VAR XalanC_FOUND
-                                  REQUIRED_VARS XalanC_LIBRARY
-                                                XalanC_INCLUDE_DIR
-                                                XalanC_VERSION
-                                                XercesC_FOUND
-                                  VERSION_VAR XalanC_VERSION
-                                  FAIL_MESSAGE "Failed to find XalanC")
-
-if(XalanC_FOUND)
-  set(XalanC_INCLUDE_DIRS "${XalanC_INCLUDE_DIR}" ${XercesC_INCLUDE_DIRS})
-  set(XalanC_LIBRARIES "${XalanC_LIBRARY}" ${XercesC_LIBRARIES})
-
-  # For header-only libraries
-  if(NOT TARGET XalanC::XalanC)
-    add_library(XalanC::XalanC UNKNOWN IMPORTED)
-    if(XalanC_INCLUDE_DIRS)
-      set_target_properties(XalanC::XalanC PROPERTIES
-        INTERFACE_INCLUDE_DIRECTORIES "${XalanC_INCLUDE_DIRS}")
-    endif()
-    if(EXISTS "${XalanC_LIBRARY}")
-      set_target_properties(XalanC::XalanC PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
-        IMPORTED_LOCATION "${XalanC_LIBRARY}")
-    endif()
-    if(EXISTS "${XalanC_LIBRARY_RELEASE}")
-      set_property(TARGET XalanC::XalanC APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS RELEASE)
-      set_target_properties(XalanC::XalanC PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
-        IMPORTED_LOCATION_RELEASE "${XalanC_LIBRARY_RELEASE}")
-    endif()
-    if(EXISTS "${XalanC_LIBRARY_DEBUG}")
-      set_property(TARGET XalanC::XalanC APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS DEBUG)
-      set_target_properties(XalanC::XalanC PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
-        IMPORTED_LOCATION_DEBUG "${XalanC_LIBRARY_DEBUG}")
-    endif()
-    set_target_properties(XalanC::XalanC PROPERTIES INTERFACE_LINK_LIBRARIES XercesC::XercesC)
-  endif()
-endif()
diff --git a/share/cmake-3.18/Modules/FindXercesC.cmake b/share/cmake-3.18/Modules/FindXercesC.cmake
deleted file mode 100644
index db78b61..0000000
--- a/share/cmake-3.18/Modules/FindXercesC.cmake
+++ /dev/null
@@ -1,142 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindXercesC
------------
-
-Find the Apache Xerces-C++ validating XML parser headers and libraries.
-
-Imported targets
-^^^^^^^^^^^^^^^^
-
-This module defines the following :prop_tgt:`IMPORTED` targets:
-
-``XercesC::XercesC``
-  The Xerces-C++ ``xerces-c`` library, if found.
-
-Result variables
-^^^^^^^^^^^^^^^^
-
-This module will set the following variables in your project:
-
-``XercesC_FOUND``
-  true if the Xerces headers and libraries were found
-``XercesC_VERSION``
-  Xerces release version
-``XercesC_INCLUDE_DIRS``
-  the directory containing the Xerces headers
-``XercesC_LIBRARIES``
-  Xerces libraries to be linked
-
-Cache variables
-^^^^^^^^^^^^^^^
-
-The following cache variables may also be set:
-
-``XercesC_INCLUDE_DIR``
-  the directory containing the Xerces headers
-``XercesC_LIBRARY``
-  the Xerces library
-#]=======================================================================]
-
-# Written by Roger Leigh <rleigh@codelibre.net>
-
-function(_XercesC_GET_VERSION  version_hdr)
-    file(STRINGS ${version_hdr} _contents REGEX "^[ \t]*#define XERCES_VERSION_.*")
-    if(_contents)
-        string(REGEX REPLACE ".*#define XERCES_VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" XercesC_MAJOR "${_contents}")
-        string(REGEX REPLACE ".*#define XERCES_VERSION_MINOR[ \t]+([0-9]+).*" "\\1" XercesC_MINOR "${_contents}")
-        string(REGEX REPLACE ".*#define XERCES_VERSION_REVISION[ \t]+([0-9]+).*" "\\1" XercesC_PATCH "${_contents}")
-
-        if(NOT XercesC_MAJOR MATCHES "^[0-9]+$")
-            message(FATAL_ERROR "Version parsing failed for XERCES_VERSION_MAJOR!")
-        endif()
-        if(NOT XercesC_MINOR MATCHES "^[0-9]+$")
-            message(FATAL_ERROR "Version parsing failed for XERCES_VERSION_MINOR!")
-        endif()
-        if(NOT XercesC_PATCH MATCHES "^[0-9]+$")
-            message(FATAL_ERROR "Version parsing failed for XERCES_VERSION_REVISION!")
-        endif()
-
-        set(XercesC_VERSION "${XercesC_MAJOR}.${XercesC_MINOR}.${XercesC_PATCH}" PARENT_SCOPE)
-        set(XercesC_VERSION_MAJOR "${XercesC_MAJOR}" PARENT_SCOPE)
-        set(XercesC_VERSION_MINOR "${XercesC_MINOR}" PARENT_SCOPE)
-        set(XercesC_VERSION_PATCH "${XercesC_PATCH}" PARENT_SCOPE)
-    else()
-        message(FATAL_ERROR "Include file ${version_hdr} does not exist or does not contain expected version information")
-    endif()
-endfunction()
-
-# Find include directory
-find_path(XercesC_INCLUDE_DIR
-          NAMES "xercesc/util/PlatformUtils.hpp"
-          DOC "Xerces-C++ include directory")
-mark_as_advanced(XercesC_INCLUDE_DIR)
-
-if(XercesC_INCLUDE_DIR AND EXISTS "${XercesC_INCLUDE_DIR}/xercesc/util/XercesVersion.hpp")
-  _XercesC_GET_VERSION("${XercesC_INCLUDE_DIR}/xercesc/util/XercesVersion.hpp")
-endif()
-
-if(NOT XercesC_LIBRARY)
-  # Find all XercesC libraries
-  find_library(XercesC_LIBRARY_RELEASE
-               NAMES "xerces-c"
-                     "xerces-c_${XercesC_VERSION_MAJOR}"
-                     "xerces-c-${XercesC_VERSION_MAJOR}.${XercesC_VERSION_MINOR}"
-               DOC "Xerces-C++ libraries (release)")
-  find_library(XercesC_LIBRARY_DEBUG
-               NAMES "xerces-cd"
-                     "xerces-c_${XercesC_VERSION_MAJOR}D"
-                     "xerces-c_${XercesC_VERSION_MAJOR}_${XercesC_VERSION_MINOR}D"
-               DOC "Xerces-C++ libraries (debug)")
-  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-  select_library_configurations(XercesC)
-  mark_as_advanced(XercesC_LIBRARY_RELEASE XercesC_LIBRARY_DEBUG)
-endif()
-
-unset(XercesC_VERSION_MAJOR)
-unset(XercesC_VERSION_MINOR)
-unset(XercesC_VERSION_PATCH)
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(XercesC
-                                  FOUND_VAR XercesC_FOUND
-                                  REQUIRED_VARS XercesC_LIBRARY
-                                                XercesC_INCLUDE_DIR
-                                                XercesC_VERSION
-                                  VERSION_VAR XercesC_VERSION
-                                  FAIL_MESSAGE "Failed to find XercesC")
-
-if(XercesC_FOUND)
-  set(XercesC_INCLUDE_DIRS "${XercesC_INCLUDE_DIR}")
-  set(XercesC_LIBRARIES "${XercesC_LIBRARY}")
-
-  # For header-only libraries
-  if(NOT TARGET XercesC::XercesC)
-    add_library(XercesC::XercesC UNKNOWN IMPORTED)
-    if(XercesC_INCLUDE_DIRS)
-      set_target_properties(XercesC::XercesC PROPERTIES
-        INTERFACE_INCLUDE_DIRECTORIES "${XercesC_INCLUDE_DIRS}")
-    endif()
-    if(EXISTS "${XercesC_LIBRARY}")
-      set_target_properties(XercesC::XercesC PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
-        IMPORTED_LOCATION "${XercesC_LIBRARY}")
-    endif()
-    if(EXISTS "${XercesC_LIBRARY_RELEASE}")
-      set_property(TARGET XercesC::XercesC APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS RELEASE)
-      set_target_properties(XercesC::XercesC PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
-        IMPORTED_LOCATION_RELEASE "${XercesC_LIBRARY_RELEASE}")
-    endif()
-    if(EXISTS "${XercesC_LIBRARY_DEBUG}")
-      set_property(TARGET XercesC::XercesC APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS DEBUG)
-      set_target_properties(XercesC::XercesC PROPERTIES
-        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
-        IMPORTED_LOCATION_DEBUG "${XercesC_LIBRARY_DEBUG}")
-    endif()
-  endif()
-endif()
diff --git a/share/cmake-3.18/Modules/FindZLIB.cmake b/share/cmake-3.18/Modules/FindZLIB.cmake
deleted file mode 100644
index 79e2313..0000000
--- a/share/cmake-3.18/Modules/FindZLIB.cmake
+++ /dev/null
@@ -1,149 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindZLIB
---------
-
-Find the native ZLIB includes and library.
-
-IMPORTED Targets
-^^^^^^^^^^^^^^^^
-
-This module defines :prop_tgt:`IMPORTED` target ``ZLIB::ZLIB``, if
-ZLIB has been found.
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-This module defines the following variables:
-
-::
-
-  ZLIB_INCLUDE_DIRS   - where to find zlib.h, etc.
-  ZLIB_LIBRARIES      - List of libraries when using zlib.
-  ZLIB_FOUND          - True if zlib found.
-
-::
-
-  ZLIB_VERSION_STRING - The version of zlib found (x.y.z)
-  ZLIB_VERSION_MAJOR  - The major version of zlib
-  ZLIB_VERSION_MINOR  - The minor version of zlib
-  ZLIB_VERSION_PATCH  - The patch version of zlib
-  ZLIB_VERSION_TWEAK  - The tweak version of zlib
-
-Backward Compatibility
-^^^^^^^^^^^^^^^^^^^^^^
-
-The following variable are provided for backward compatibility
-
-::
-
-  ZLIB_MAJOR_VERSION  - The major version of zlib
-  ZLIB_MINOR_VERSION  - The minor version of zlib
-  ZLIB_PATCH_VERSION  - The patch version of zlib
-
-Hints
-^^^^^
-
-A user may set ``ZLIB_ROOT`` to a zlib installation root to tell this
-module where to look.
-#]=======================================================================]
-
-set(_ZLIB_SEARCHES)
-
-# Search ZLIB_ROOT first if it is set.
-if(ZLIB_ROOT)
-  set(_ZLIB_SEARCH_ROOT PATHS ${ZLIB_ROOT} NO_DEFAULT_PATH)
-  list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_ROOT)
-endif()
-
-# Normal search.
-set(_ZLIB_x86 "(x86)")
-set(_ZLIB_SEARCH_NORMAL
-    PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]"
-          "$ENV{ProgramFiles}/zlib"
-          "$ENV{ProgramFiles${_ZLIB_x86}}/zlib")
-unset(_ZLIB_x86)
-list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_NORMAL)
-
-set(ZLIB_NAMES z zlib zdll zlib1 zlibstatic)
-set(ZLIB_NAMES_DEBUG zd zlibd zdlld zlibd1 zlib1d zlibstaticd)
-
-# Try each search configuration.
-foreach(search ${_ZLIB_SEARCHES})
-  find_path(ZLIB_INCLUDE_DIR NAMES zlib.h ${${search}} PATH_SUFFIXES include)
-endforeach()
-
-# Allow ZLIB_LIBRARY to be set manually, as the location of the zlib library
-if(NOT ZLIB_LIBRARY)
-  foreach(search ${_ZLIB_SEARCHES})
-    find_library(ZLIB_LIBRARY_RELEASE NAMES ${ZLIB_NAMES} NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
-    find_library(ZLIB_LIBRARY_DEBUG NAMES ${ZLIB_NAMES_DEBUG} NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
-  endforeach()
-
-  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
-  select_library_configurations(ZLIB)
-endif()
-
-unset(ZLIB_NAMES)
-unset(ZLIB_NAMES_DEBUG)
-
-mark_as_advanced(ZLIB_INCLUDE_DIR)
-
-if(ZLIB_INCLUDE_DIR AND EXISTS "${ZLIB_INCLUDE_DIR}/zlib.h")
-    file(STRINGS "${ZLIB_INCLUDE_DIR}/zlib.h" ZLIB_H REGEX "^#define ZLIB_VERSION \"[^\"]*\"$")
-
-    string(REGEX REPLACE "^.*ZLIB_VERSION \"([0-9]+).*$" "\\1" ZLIB_VERSION_MAJOR "${ZLIB_H}")
-    string(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_MINOR  "${ZLIB_H}")
-    string(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_PATCH "${ZLIB_H}")
-    set(ZLIB_VERSION_STRING "${ZLIB_VERSION_MAJOR}.${ZLIB_VERSION_MINOR}.${ZLIB_VERSION_PATCH}")
-
-    # only append a TWEAK version if it exists:
-    set(ZLIB_VERSION_TWEAK "")
-    if( "${ZLIB_H}" MATCHES "ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+)")
-        set(ZLIB_VERSION_TWEAK "${CMAKE_MATCH_1}")
-        string(APPEND ZLIB_VERSION_STRING ".${ZLIB_VERSION_TWEAK}")
-    endif()
-
-    set(ZLIB_MAJOR_VERSION "${ZLIB_VERSION_MAJOR}")
-    set(ZLIB_MINOR_VERSION "${ZLIB_VERSION_MINOR}")
-    set(ZLIB_PATCH_VERSION "${ZLIB_VERSION_PATCH}")
-endif()
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZLIB REQUIRED_VARS ZLIB_LIBRARY ZLIB_INCLUDE_DIR
-                                       VERSION_VAR ZLIB_VERSION_STRING)
-
-if(ZLIB_FOUND)
-    set(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
-
-    if(NOT ZLIB_LIBRARIES)
-      set(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
-    endif()
-
-    if(NOT TARGET ZLIB::ZLIB)
-      add_library(ZLIB::ZLIB UNKNOWN IMPORTED)
-      set_target_properties(ZLIB::ZLIB PROPERTIES
-        INTERFACE_INCLUDE_DIRECTORIES "${ZLIB_INCLUDE_DIRS}")
-
-      if(ZLIB_LIBRARY_RELEASE)
-        set_property(TARGET ZLIB::ZLIB APPEND PROPERTY
-          IMPORTED_CONFIGURATIONS RELEASE)
-        set_target_properties(ZLIB::ZLIB PROPERTIES
-          IMPORTED_LOCATION_RELEASE "${ZLIB_LIBRARY_RELEASE}")
-      endif()
-
-      if(ZLIB_LIBRARY_DEBUG)
-        set_property(TARGET ZLIB::ZLIB APPEND PROPERTY
-          IMPORTED_CONFIGURATIONS DEBUG)
-        set_target_properties(ZLIB::ZLIB PROPERTIES
-          IMPORTED_LOCATION_DEBUG "${ZLIB_LIBRARY_DEBUG}")
-      endif()
-
-      if(NOT ZLIB_LIBRARY_RELEASE AND NOT ZLIB_LIBRARY_DEBUG)
-        set_property(TARGET ZLIB::ZLIB APPEND PROPERTY
-          IMPORTED_LOCATION "${ZLIB_LIBRARY}")
-      endif()
-    endif()
-endif()
diff --git a/share/cmake-3.18/Modules/FindwxWidgets.cmake b/share/cmake-3.18/Modules/FindwxWidgets.cmake
deleted file mode 100644
index 93ac51d..0000000
--- a/share/cmake-3.18/Modules/FindwxWidgets.cmake
+++ /dev/null
@@ -1,1226 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindwxWidgets
--------------
-
-Find a wxWidgets (a.k.a., wxWindows) installation.
-
-This module finds if wxWidgets is installed and selects a default
-configuration to use.  wxWidgets is a modular library.  To specify the
-modules that you will use, you need to name them as components to the
-package:
-
-find_package(wxWidgets COMPONENTS core base ... OPTIONAL_COMPONENTS net ...)
-
-There are two search branches: a windows style and a unix style.  For
-windows, the following variables are searched for and set to defaults
-in case of multiple choices.  Change them if the defaults are not
-desired (i.e., these are the only variables you should change to
-select a configuration):
-
-::
-
-  wxWidgets_ROOT_DIR      - Base wxWidgets directory
-                            (e.g., C:/wxWidgets-2.6.3).
-  wxWidgets_LIB_DIR       - Path to wxWidgets libraries
-                            (e.g., C:/wxWidgets-2.6.3/lib/vc_lib).
-  wxWidgets_CONFIGURATION - Configuration to use
-                            (e.g., msw, mswd, mswu, mswunivud, etc.)
-  wxWidgets_EXCLUDE_COMMON_LIBRARIES
-                          - Set to TRUE to exclude linking of
-                            commonly required libs (e.g., png tiff
-                            jpeg zlib regex expat).
-
-
-
-For unix style it uses the wx-config utility.  You can select between
-debug/release, unicode/ansi, universal/non-universal, and
-static/shared in the QtDialog or ccmake interfaces by turning ON/OFF
-the following variables:
-
-::
-
-  wxWidgets_USE_DEBUG
-  wxWidgets_USE_UNICODE
-  wxWidgets_USE_UNIVERSAL
-  wxWidgets_USE_STATIC
-
-
-
-There is also a wxWidgets_CONFIG_OPTIONS variable for all other
-options that need to be passed to the wx-config utility.  For example,
-to use the base toolkit found in the /usr/local path, set the variable
-(before calling the FIND_PACKAGE command) as such:
-
-::
-
-  set(wxWidgets_CONFIG_OPTIONS --toolkit=base --prefix=/usr)
-
-
-
-The following are set after the configuration is done for both windows
-and unix style:
-
-::
-
-  wxWidgets_FOUND            - Set to TRUE if wxWidgets was found.
-  wxWidgets_INCLUDE_DIRS     - Include directories for WIN32
-                               i.e., where to find "wx/wx.h" and
-                               "wx/setup.h"; possibly empty for unices.
-  wxWidgets_LIBRARIES        - Path to the wxWidgets libraries.
-  wxWidgets_LIBRARY_DIRS     - compile time link dirs, useful for
-                               rpath on UNIX. Typically an empty string
-                               in WIN32 environment.
-  wxWidgets_DEFINITIONS      - Contains defines required to compile/link
-                               against WX, e.g. WXUSINGDLL
-  wxWidgets_DEFINITIONS_DEBUG- Contains defines required to compile/link
-                               against WX debug builds, e.g. __WXDEBUG__
-  wxWidgets_CXX_FLAGS        - Include dirs and compiler flags for
-                               unices, empty on WIN32. Essentially
-                               "`wx-config --cxxflags`".
-  wxWidgets_USE_FILE         - Convenience include file.
-
-
-
-Sample usage:
-
-::
-
-   # Note that for MinGW users the order of libs is important!
-   find_package(wxWidgets COMPONENTS gl core base OPTIONAL_COMPONENTS net)
-   if(wxWidgets_FOUND)
-     include(${wxWidgets_USE_FILE})
-     # and for each of your dependent executable/library targets:
-     target_link_libraries(<YourTarget> ${wxWidgets_LIBRARIES})
-   endif()
-
-
-
-If wxWidgets is required (i.e., not an optional part):
-
-::
-
-   find_package(wxWidgets REQUIRED gl core base OPTIONAL_COMPONENTS net)
-   include(${wxWidgets_USE_FILE})
-   # and for each of your dependent executable/library targets:
-   target_link_libraries(<YourTarget> ${wxWidgets_LIBRARIES})
-#]=======================================================================]
-
-#
-# FIXME: check this and provide a correct sample usage...
-#        Remember to connect back to the upper text.
-# Sample usage with monolithic wx build:
-#
-#   find_package(wxWidgets COMPONENTS mono)
-#   ...
-
-# NOTES
-#
-# This module has been tested on the WIN32 platform with wxWidgets
-# 2.6.2, 2.6.3, and 2.5.3. However, it has been designed to
-# easily extend support to all possible builds, e.g., static/shared,
-# debug/release, unicode, universal, multilib/monolithic, etc..
-#
-# If you want to use the module and your build type is not supported
-# out-of-the-box, please contact me to exchange information on how
-# your system is setup and I'll try to add support for it.
-#
-# AUTHOR
-#
-# Miguel A. Figueroa-Villanueva (miguelf at ieee dot org).
-# Jan Woetzel (jw at mip.informatik.uni-kiel.de).
-#
-# Based on previous works of:
-# Jan Woetzel (FindwxWindows.cmake),
-# Jorgen Bodde and Jerry Fath (FindwxWin.cmake).
-
-# TODO/ideas
-#
-# (1) Option/Setting to use all available wx libs
-# In contrast to expert developer who lists the
-# minimal set of required libs in wxWidgets_USE_LIBS
-# there is the newbie user:
-#   - who just wants to link against WX with more 'magic'
-#   - doesn't know the internal structure of WX or how it was built,
-#     in particular if it is monolithic or not
-#   - want to link against all available WX libs
-# Basically, the intent here is to mimic what wx-config would do by
-# default (i.e., `wx-config --libs`).
-#
-# Possible solution:
-#   Add a reserved keyword "std" that initializes to what wx-config
-# would default to. If the user has not set the wxWidgets_USE_LIBS,
-# default to "std" instead of "base core" as it is now. To implement
-# "std" will basically boil down to a FOR_EACH lib-FOUND, but maybe
-# checking whether a minimal set was found.
-
-
-# FIXME: This and all the DBG_MSG calls should be removed after the
-# module stabilizes.
-#
-# Helper macro to control the debugging output globally. There are
-# two versions for controlling how verbose your output should be.
-macro(DBG_MSG _MSG)
-#  message(STATUS
-#    "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}")
-endmacro()
-macro(DBG_MSG_V _MSG)
-#  message(STATUS
-#    "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}")
-endmacro()
-
-# Clear return values in case the module is loaded more than once.
-set(wxWidgets_FOUND FALSE)
-set(wxWidgets_INCLUDE_DIRS "")
-set(wxWidgets_LIBRARIES    "")
-set(wxWidgets_LIBRARY_DIRS "")
-set(wxWidgets_CXX_FLAGS    "")
-
-# DEPRECATED: This is a patch to support the DEPRECATED use of
-# wxWidgets_USE_LIBS.
-#
-# If wxWidgets_USE_LIBS is set:
-# - if using <components>, then override wxWidgets_USE_LIBS
-# - else set wxWidgets_FIND_COMPONENTS to wxWidgets_USE_LIBS
-if(wxWidgets_USE_LIBS AND NOT wxWidgets_FIND_COMPONENTS)
-  set(wxWidgets_FIND_COMPONENTS ${wxWidgets_USE_LIBS})
-endif()
-DBG_MSG("wxWidgets_FIND_COMPONENTS : ${wxWidgets_FIND_COMPONENTS}")
-
-# Add the convenience use file if available.
-#
-# Get dir of this file which may reside in:
-# - CMAKE_MAKE_ROOT/Modules on CMake installation
-# - CMAKE_MODULE_PATH if user prefers his own specialized version
-set(wxWidgets_USE_FILE "")
-get_filename_component(
-  wxWidgets_CURRENT_LIST_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
-# Prefer an existing customized version, but the user might override
-# the FindwxWidgets module and not the UsewxWidgets one.
-if(EXISTS "${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake")
-  set(wxWidgets_USE_FILE
-    "${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake")
-else()
-  set(wxWidgets_USE_FILE UsewxWidgets)
-endif()
-
-#=====================================================================
-# Determine whether unix or win32 paths should be used
-#=====================================================================
-if(WIN32 AND NOT CYGWIN AND NOT MSYS AND NOT CMAKE_CROSSCOMPILING)
-  set(wxWidgets_FIND_STYLE "win32")
-else()
-  set(wxWidgets_FIND_STYLE "unix")
-endif()
-
-#=====================================================================
-# WIN32_FIND_STYLE
-#=====================================================================
-if(wxWidgets_FIND_STYLE STREQUAL "win32")
-  # Useful common wx libs needed by almost all components.
-  set(wxWidgets_COMMON_LIBRARIES png tiff jpeg zlib regex expat)
-
-  # DEPRECATED: Use find_package(wxWidgets COMPONENTS mono) instead.
-  if(NOT wxWidgets_FIND_COMPONENTS)
-    if(wxWidgets_USE_MONOLITHIC)
-      set(wxWidgets_FIND_COMPONENTS mono)
-    else()
-      set(wxWidgets_FIND_COMPONENTS core base) # this is default
-    endif()
-  endif()
-
-  # Add the common (usually required libs) unless
-  # wxWidgets_EXCLUDE_COMMON_LIBRARIES has been set.
-  if(NOT wxWidgets_EXCLUDE_COMMON_LIBRARIES)
-    list(APPEND wxWidgets_FIND_COMPONENTS
-      ${wxWidgets_COMMON_LIBRARIES})
-  endif()
-
-  #-------------------------------------------------------------------
-  # WIN32: Helper MACROS
-  #-------------------------------------------------------------------
-  #
-  # Get filename components for a configuration. For example,
-  #   if _CONFIGURATION = mswunivud, then _PF="msw", _UNV=univ, _UCD=u _DBG=d
-  #   if _CONFIGURATION = mswu,      then _PF="msw", _UNV="",   _UCD=u _DBG=""
-  #
-  macro(WX_GET_NAME_COMPONENTS _CONFIGURATION _PF _UNV _UCD _DBG)
-    DBG_MSG_V(${_CONFIGURATION})
-    string(REGEX MATCH "univ" ${_UNV} "${_CONFIGURATION}")
-    string(REGEX REPLACE "[msw|qt].*(u)[d]*$" "u" ${_UCD} "${_CONFIGURATION}")
-    if(${_UCD} STREQUAL ${_CONFIGURATION})
-      set(${_UCD} "")
-    endif()
-    string(REGEX MATCH "d$" ${_DBG} "${_CONFIGURATION}")
-    string(REGEX MATCH "^[msw|qt]*" ${_PF} "${_CONFIGURATION}")
-  endmacro()
-
-  #
-  # Find libraries associated to a configuration.
-  #
-  macro(WX_FIND_LIBS _PF _UNV _UCD _DBG)
-    DBG_MSG_V("m_unv = ${_UNV}")
-    DBG_MSG_V("m_ucd = ${_UCD}")
-    DBG_MSG_V("m_dbg = ${_DBG}")
-
-    # FIXME: What if both regex libs are available. regex should be
-    # found outside the loop and only wx${LIB}${_UCD}${_DBG}.
-    # Find wxWidgets common libraries.
-    foreach(LIB ${wxWidgets_COMMON_LIBRARIES} scintilla)
-      find_library(WX_${LIB}${_DBG}
-        NAMES
-        wx${LIB}${_UCD}${_DBG} # for regex
-        wx${LIB}${_DBG}
-        PATHS ${WX_LIB_DIR}
-        NO_DEFAULT_PATH
-        )
-      mark_as_advanced(WX_${LIB}${_DBG})
-    endforeach()
-
-    # Find wxWidgets multilib base libraries.
-    find_library(WX_base${_DBG}
-      NAMES
-      wxbase31${_UCD}${_DBG}
-      wxbase30${_UCD}${_DBG}
-      wxbase29${_UCD}${_DBG}
-      wxbase28${_UCD}${_DBG}
-      wxbase27${_UCD}${_DBG}
-      wxbase26${_UCD}${_DBG}
-      wxbase25${_UCD}${_DBG}
-      PATHS ${WX_LIB_DIR}
-      NO_DEFAULT_PATH
-      )
-    mark_as_advanced(WX_base${_DBG})
-    foreach(LIB net odbc xml)
-      find_library(WX_${LIB}${_DBG}
-        NAMES
-        wxbase31${_UCD}${_DBG}_${LIB}
-        wxbase30${_UCD}${_DBG}_${LIB}
-        wxbase29${_UCD}${_DBG}_${LIB}
-        wxbase28${_UCD}${_DBG}_${LIB}
-        wxbase27${_UCD}${_DBG}_${LIB}
-        wxbase26${_UCD}${_DBG}_${LIB}
-        wxbase25${_UCD}${_DBG}_${LIB}
-        PATHS ${WX_LIB_DIR}
-        NO_DEFAULT_PATH
-        )
-      mark_as_advanced(WX_${LIB}${_DBG})
-    endforeach()
-
-    # Find wxWidgets monolithic library.
-    find_library(WX_mono${_DBG}
-      NAMES
-      wx${_PF}${_UNV}31${_UCD}${_DBG}
-      wx${_PF}${_UNV}30${_UCD}${_DBG}
-      wx${_PF}${_UNV}29${_UCD}${_DBG}
-      wx${_PF}${_UNV}28${_UCD}${_DBG}
-      wx${_PF}${_UNV}27${_UCD}${_DBG}
-      wx${_PF}${_UNV}26${_UCD}${_DBG}
-      wx${_PF}${_UNV}25${_UCD}${_DBG}
-      PATHS ${WX_LIB_DIR}
-      NO_DEFAULT_PATH
-      )
-    mark_as_advanced(WX_mono${_DBG})
-
-    # Find wxWidgets multilib libraries.
-    foreach(LIB core adv aui html media xrc dbgrid gl qa richtext
-                stc ribbon propgrid webview)
-      find_library(WX_${LIB}${_DBG}
-        NAMES
-        wx${_PF}${_UNV}31${_UCD}${_DBG}_${LIB}
-        wx${_PF}${_UNV}30${_UCD}${_DBG}_${LIB}
-        wx${_PF}${_UNV}29${_UCD}${_DBG}_${LIB}
-        wx${_PF}${_UNV}28${_UCD}${_DBG}_${LIB}
-        wx${_PF}${_UNV}27${_UCD}${_DBG}_${LIB}
-        wx${_PF}${_UNV}26${_UCD}${_DBG}_${LIB}
-        wx${_PF}${_UNV}25${_UCD}${_DBG}_${LIB}
-        PATHS ${WX_LIB_DIR}
-        NO_DEFAULT_PATH
-        )
-      mark_as_advanced(WX_${LIB}${_DBG})
-    endforeach()
-  endmacro()
-
-  #
-  # Clear all library paths, so that FIND_LIBRARY refinds them.
-  #
-  # Clear a lib, reset its found flag, and mark as advanced.
-  macro(WX_CLEAR_LIB _LIB)
-    set(${_LIB} "${_LIB}-NOTFOUND" CACHE FILEPATH "Cleared." FORCE)
-    set(${_LIB}_FOUND FALSE)
-    mark_as_advanced(${_LIB})
-  endmacro()
-  # Clear all debug or release library paths (arguments are "d" or "").
-  macro(WX_CLEAR_ALL_LIBS _DBG)
-    # Clear wxWidgets common libraries.
-    foreach(LIB ${wxWidgets_COMMON_LIBRARIES} scintilla)
-      WX_CLEAR_LIB(WX_${LIB}${_DBG})
-    endforeach()
-
-    # Clear wxWidgets multilib base libraries.
-    WX_CLEAR_LIB(WX_base${_DBG})
-    foreach(LIB net odbc xml)
-      WX_CLEAR_LIB(WX_${LIB}${_DBG})
-    endforeach()
-
-    # Clear wxWidgets monolithic library.
-    WX_CLEAR_LIB(WX_mono${_DBG})
-
-    # Clear wxWidgets multilib libraries.
-    foreach(LIB core adv aui html media xrc dbgrid gl qa richtext
-                webview stc ribbon propgrid)
-      WX_CLEAR_LIB(WX_${LIB}${_DBG})
-    endforeach()
-  endmacro()
-  # Clear all wxWidgets debug libraries.
-  macro(WX_CLEAR_ALL_DBG_LIBS)
-    WX_CLEAR_ALL_LIBS("d")
-  endmacro()
-  # Clear all wxWidgets release libraries.
-  macro(WX_CLEAR_ALL_REL_LIBS)
-    WX_CLEAR_ALL_LIBS("")
-  endmacro()
-
-  #
-  # Set the wxWidgets_LIBRARIES variable.
-  # Also, Sets output variable wxWidgets_FOUND to FALSE if it fails.
-  #
-  macro(WX_SET_LIBRARIES _LIBS _DBG)
-    DBG_MSG_V("Looking for ${${_LIBS}}")
-    if(WX_USE_REL_AND_DBG)
-      foreach(LIB ${${_LIBS}})
-        DBG_MSG_V("Searching for ${LIB} and ${LIB}d")
-        DBG_MSG_V("WX_${LIB}  : ${WX_${LIB}}")
-        DBG_MSG_V("WX_${LIB}d : ${WX_${LIB}d}")
-        if(WX_${LIB} AND WX_${LIB}d)
-          DBG_MSG_V("Found ${LIB} and ${LIB}d")
-          list(APPEND wxWidgets_LIBRARIES
-            debug ${WX_${LIB}d} optimized ${WX_${LIB}}
-            )
-          set(wxWidgets_${LIB}_FOUND TRUE)
-        elseif(NOT wxWidgets_FIND_REQUIRED_${LIB})
-          DBG_MSG_V("- ignored optional missing WX_${LIB}=${WX_${LIB}} or WX_${LIB}d=${WX_${LIB}d}")
-        else()
-          DBG_MSG_V("- not found due to missing WX_${LIB}=${WX_${LIB}} or WX_${LIB}d=${WX_${LIB}d}")
-          set(wxWidgets_FOUND FALSE)
-        endif()
-      endforeach()
-    else()
-      foreach(LIB ${${_LIBS}})
-        DBG_MSG_V("Searching for ${LIB}${_DBG}")
-        DBG_MSG_V("WX_${LIB}${_DBG} : ${WX_${LIB}${_DBG}}")
-        if(WX_${LIB}${_DBG})
-          DBG_MSG_V("Found ${LIB}${_DBG}")
-          list(APPEND wxWidgets_LIBRARIES ${WX_${LIB}${_DBG}})
-          set(wxWidgets_${LIB}_FOUND TRUE)
-        elseif(NOT wxWidgets_FIND_REQUIRED_${LIB})
-          DBG_MSG_V("- ignored optional missing WX_${LIB}${_DBG}=${WX_${LIB}${_DBG}}")
-        else()
-          DBG_MSG_V("- not found due to missing WX_${LIB}${_DBG}=${WX_${LIB}${_DBG}}")
-          set(wxWidgets_FOUND FALSE)
-        endif()
-      endforeach()
-    endif()
-
-    DBG_MSG_V("OpenGL")
-    list(FIND ${_LIBS} gl WX_USE_GL)
-    if(NOT WX_USE_GL EQUAL -1)
-      DBG_MSG_V("- is required.")
-      list(APPEND wxWidgets_LIBRARIES opengl32 glu32)
-    endif()
-
-    list(APPEND wxWidgets_LIBRARIES winmm comctl32 uuid oleacc uxtheme rpcrt4 shlwapi version wsock32)
-  endmacro()
-
-  #-------------------------------------------------------------------
-  # WIN32: Start actual work.
-  #-------------------------------------------------------------------
-
-  # Look for an installation tree.
-  find_path(wxWidgets_ROOT_DIR
-    NAMES include/wx/wx.h
-    PATHS
-      ENV wxWidgets_ROOT_DIR
-      ENV WXWIN
-      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWidgets_is1;Inno Setup: App Path]"  # WX 2.6.x
-      C:/
-      D:/
-      ENV ProgramFiles
-    PATH_SUFFIXES
-      wxWidgets-3.1.0
-      wxWidgets-3.0.2
-      wxWidgets-3.0.1
-      wxWidgets-3.0.0
-      wxWidgets-2.9.5
-      wxWidgets-2.9.4
-      wxWidgets-2.9.3
-      wxWidgets-2.9.2
-      wxWidgets-2.9.1
-      wxWidgets-2.9.0
-      wxWidgets-2.8.9
-      wxWidgets-2.8.8
-      wxWidgets-2.8.7
-      wxWidgets-2.8.6
-      wxWidgets-2.8.5
-      wxWidgets-2.8.4
-      wxWidgets-2.8.3
-      wxWidgets-2.8.2
-      wxWidgets-2.8.1
-      wxWidgets-2.8.0
-      wxWidgets-2.7.4
-      wxWidgets-2.7.3
-      wxWidgets-2.7.2
-      wxWidgets-2.7.1
-      wxWidgets-2.7.0
-      wxWidgets-2.7.0-1
-      wxWidgets-2.6.4
-      wxWidgets-2.6.3
-      wxWidgets-2.6.2
-      wxWidgets-2.6.1
-      wxWidgets-2.5.4
-      wxWidgets-2.5.3
-      wxWidgets-2.5.2
-      wxWidgets-2.5.1
-      wxWidgets
-    DOC "wxWidgets base/installation directory"
-    )
-
-  # If wxWidgets_ROOT_DIR changed, clear lib dir.
-  if(NOT WX_ROOT_DIR STREQUAL wxWidgets_ROOT_DIR)
-    set(WX_ROOT_DIR ${wxWidgets_ROOT_DIR}
-        CACHE INTERNAL "wxWidgets_ROOT_DIR")
-    set(wxWidgets_LIB_DIR "wxWidgets_LIB_DIR-NOTFOUND"
-        CACHE PATH "Cleared." FORCE)
-  endif()
-
-  if(WX_ROOT_DIR)
-    # Select one default tree inside the already determined wx tree.
-    # Prefer static/shared order usually consistent with build
-    # settings.
-    set(_WX_TOOL "")
-    set(_WX_TOOLVER "")
-    set(_WX_ARCH "")
-    if(MINGW)
-      set(_WX_TOOL gcc)
-    elseif(MSVC)
-      set(_WX_TOOL vc)
-      set(_WX_TOOLVER ${MSVC_TOOLSET_VERSION})
-      # support for a lib/vc14x_x64_dll/ path from wxW 3.1.3 distribution
-      string(REGEX REPLACE ".$" "x" _WX_TOOLVERx ${_WX_TOOLVER})
-      if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-        set(_WX_ARCH _x64)
-      endif()
-    endif()
-    if(BUILD_SHARED_LIBS)
-      find_path(wxWidgets_LIB_DIR
-        NAMES
-          qtu/wx/setup.h
-          qtud/wx/setup.h
-          msw/wx/setup.h
-          mswd/wx/setup.h
-          mswu/wx/setup.h
-          mswud/wx/setup.h
-          mswuniv/wx/setup.h
-          mswunivd/wx/setup.h
-          mswunivu/wx/setup.h
-          mswunivud/wx/setup.h
-        PATHS
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVER}_xp${_WX_ARCH}_dll   # prefer shared
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVER}${_WX_ARCH}_dll   # prefer shared
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVERx}_xp${_WX_ARCH}_dll   # prefer shared
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVERx}${_WX_ARCH}_dll   # prefer shared
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_ARCH}_dll                 # prefer shared
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVER}_xp${_WX_ARCH}_lib
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVER}${_WX_ARCH}_lib
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVERx}_xp${_WX_ARCH}_lib
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVERx}${_WX_ARCH}_lib
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_ARCH}_lib
-        DOC "Path to wxWidgets libraries"
-        NO_DEFAULT_PATH
-        )
-    else()
-      find_path(wxWidgets_LIB_DIR
-        NAMES
-          qtu/wx/setup.h
-          qtud/wx/setup.h
-          msw/wx/setup.h
-          mswd/wx/setup.h
-          mswu/wx/setup.h
-          mswud/wx/setup.h
-          mswuniv/wx/setup.h
-          mswunivd/wx/setup.h
-          mswunivu/wx/setup.h
-          mswunivud/wx/setup.h
-        PATHS
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVER}_xp${_WX_ARCH}_lib   # prefer static
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVER}${_WX_ARCH}_lib   # prefer static
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVERx}_xp${_WX_ARCH}_lib   # prefer static
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVERx}${_WX_ARCH}_lib   # prefer static
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_ARCH}_lib                 # prefer static
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVER}_xp${_WX_ARCH}_dll
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVER}${_WX_ARCH}_dll
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVERx}_xp${_WX_ARCH}_dll
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVERx}${_WX_ARCH}_dll
-        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_ARCH}_dll
-        DOC "Path to wxWidgets libraries"
-        NO_DEFAULT_PATH
-        )
-    endif()
-    unset(_WX_TOOL)
-    unset(_WX_TOOLVER)
-    unset(_WX_ARCH)
-
-    # If wxWidgets_LIB_DIR changed, clear all libraries.
-    if(NOT WX_LIB_DIR STREQUAL wxWidgets_LIB_DIR)
-      set(WX_LIB_DIR ${wxWidgets_LIB_DIR} CACHE INTERNAL "wxWidgets_LIB_DIR")
-      WX_CLEAR_ALL_DBG_LIBS()
-      WX_CLEAR_ALL_REL_LIBS()
-    endif()
-
-    if(WX_LIB_DIR)
-      # If building shared libs, define WXUSINGDLL to use dllimport.
-      if(WX_LIB_DIR MATCHES "[dD][lL][lL]")
-        set(wxWidgets_DEFINITIONS WXUSINGDLL)
-        DBG_MSG_V("detected SHARED/DLL tree WX_LIB_DIR=${WX_LIB_DIR}")
-      endif()
-
-      # Search for available configuration types.
-      foreach(CFG mswunivud mswunivd mswud mswd mswunivu mswuniv mswu msw qt qtd qtu qtud)
-        set(WX_${CFG}_FOUND FALSE)
-        if(EXISTS ${WX_LIB_DIR}/${CFG})
-          list(APPEND WX_CONFIGURATION_LIST ${CFG})
-          set(WX_${CFG}_FOUND TRUE)
-          set(WX_CONFIGURATION ${CFG})
-        endif()
-      endforeach()
-      DBG_MSG_V("WX_CONFIGURATION_LIST=${WX_CONFIGURATION_LIST}")
-
-      if(WX_CONFIGURATION)
-        set(wxWidgets_FOUND TRUE)
-
-        # If the selected configuration wasn't found force the default
-        # one. Otherwise, use it but still force a refresh for
-        # updating the doc string with the current list of available
-        # configurations.
-        if(NOT WX_${wxWidgets_CONFIGURATION}_FOUND)
-          set(wxWidgets_CONFIGURATION ${WX_CONFIGURATION} CACHE STRING
-            "Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE)
-        else()
-          set(wxWidgets_CONFIGURATION ${wxWidgets_CONFIGURATION} CACHE STRING
-            "Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE)
-        endif()
-
-        # If release config selected, and both release/debug exist.
-        if(WX_${wxWidgets_CONFIGURATION}d_FOUND)
-          option(wxWidgets_USE_REL_AND_DBG
-            "Use release and debug configurations?" TRUE)
-          set(WX_USE_REL_AND_DBG ${wxWidgets_USE_REL_AND_DBG})
-        else()
-          # If the option exists (already in cache), force it false.
-          if(wxWidgets_USE_REL_AND_DBG)
-            set(wxWidgets_USE_REL_AND_DBG FALSE CACHE BOOL
-              "No ${wxWidgets_CONFIGURATION}d found." FORCE)
-          endif()
-          set(WX_USE_REL_AND_DBG FALSE)
-        endif()
-
-        # Get configuration parameters from the name.
-        WX_GET_NAME_COMPONENTS(${wxWidgets_CONFIGURATION} PF UNV UCD DBG)
-
-        # Set wxWidgets lib setup include directory.
-        if(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h)
-          set(wxWidgets_INCLUDE_DIRS
-            ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION})
-        else()
-          DBG_MSG("wxWidgets_FOUND FALSE because ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h does not exists.")
-          set(wxWidgets_FOUND FALSE)
-        endif()
-
-        # Set wxWidgets main include directory.
-        if(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
-          list(APPEND wxWidgets_INCLUDE_DIRS ${WX_ROOT_DIR}/include)
-        else()
-          DBG_MSG("wxWidgets_FOUND FALSE because WX_ROOT_DIR=${WX_ROOT_DIR} has no ${WX_ROOT_DIR}/include/wx/wx.h")
-          set(wxWidgets_FOUND FALSE)
-        endif()
-
-        # Find wxWidgets libraries.
-        WX_FIND_LIBS("${PF}" "${UNV}" "${UCD}" "${DBG}")
-        if(WX_USE_REL_AND_DBG)
-          WX_FIND_LIBS("${PF}" "${UNV}" "${UCD}" "d")
-        endif()
-
-        # Settings for requested libs (i.e., include dir, libraries, etc.).
-        WX_SET_LIBRARIES(wxWidgets_FIND_COMPONENTS "${DBG}")
-
-        # Add necessary definitions for unicode builds
-        if("${UCD}" STREQUAL "u")
-          list(APPEND wxWidgets_DEFINITIONS UNICODE _UNICODE)
-        endif()
-
-        # Add necessary definitions for debug builds
-        set(wxWidgets_DEFINITIONS_DEBUG _DEBUG __WXDEBUG__)
-
-      endif()
-    endif()
-  endif()
-
-#=====================================================================
-# UNIX_FIND_STYLE
-#=====================================================================
-else()
-  if(wxWidgets_FIND_STYLE STREQUAL "unix")
-    #-----------------------------------------------------------------
-    # UNIX: Helper MACROS
-    #-----------------------------------------------------------------
-    #
-    # Set the default values based on "wx-config --selected-config".
-    #
-    macro(WX_CONFIG_SELECT_GET_DEFAULT)
-      execute_process(
-        COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}"
-          ${wxWidgets_CONFIG_OPTIONS} --selected-config
-        OUTPUT_VARIABLE _wx_selected_config
-        RESULT_VARIABLE _wx_result
-        ERROR_QUIET
-        )
-      if(_wx_result EQUAL 0)
-        foreach(_opt_name debug static unicode universal)
-          string(TOUPPER ${_opt_name} _upper_opt_name)
-          if(_wx_selected_config MATCHES "${_opt_name}")
-            set(wxWidgets_DEFAULT_${_upper_opt_name} ON)
-          else()
-            set(wxWidgets_DEFAULT_${_upper_opt_name} OFF)
-          endif()
-        endforeach()
-      else()
-        foreach(_upper_opt_name DEBUG STATIC UNICODE UNIVERSAL)
-          set(wxWidgets_DEFAULT_${_upper_opt_name} OFF)
-        endforeach()
-      endif()
-    endmacro()
-
-    #
-    # Query a boolean configuration option to determine if the system
-    # has both builds available. If so, provide the selection option
-    # to the user.
-    #
-    macro(WX_CONFIG_SELECT_QUERY_BOOL _OPT_NAME _OPT_HELP)
-      execute_process(
-        COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}"
-          ${wxWidgets_CONFIG_OPTIONS} --${_OPT_NAME}=yes
-        RESULT_VARIABLE _wx_result_yes
-        OUTPUT_QUIET
-        ERROR_QUIET
-        )
-      execute_process(
-        COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}"
-          ${wxWidgets_CONFIG_OPTIONS} --${_OPT_NAME}=no
-        RESULT_VARIABLE _wx_result_no
-        OUTPUT_QUIET
-        ERROR_QUIET
-        )
-      string(TOUPPER ${_OPT_NAME} _UPPER_OPT_NAME)
-      if(_wx_result_yes EQUAL 0 AND _wx_result_no EQUAL 0)
-        option(wxWidgets_USE_${_UPPER_OPT_NAME}
-          ${_OPT_HELP} ${wxWidgets_DEFAULT_${_UPPER_OPT_NAME}})
-      else()
-        # If option exists (already in cache), force to available one.
-        if(DEFINED wxWidgets_USE_${_UPPER_OPT_NAME})
-          if(_wx_result_yes EQUAL 0)
-            set(wxWidgets_USE_${_UPPER_OPT_NAME} ON  CACHE BOOL ${_OPT_HELP} FORCE)
-          else()
-            set(wxWidgets_USE_${_UPPER_OPT_NAME} OFF CACHE BOOL ${_OPT_HELP} FORCE)
-          endif()
-        endif()
-      endif()
-    endmacro()
-
-    #
-    # Set wxWidgets_SELECT_OPTIONS to wx-config options for selecting
-    # among multiple builds.
-    #
-    macro(WX_CONFIG_SELECT_SET_OPTIONS)
-      set(wxWidgets_SELECT_OPTIONS ${wxWidgets_CONFIG_OPTIONS})
-      foreach(_opt_name debug static unicode universal)
-        string(TOUPPER ${_opt_name} _upper_opt_name)
-        if(DEFINED wxWidgets_USE_${_upper_opt_name})
-          if(wxWidgets_USE_${_upper_opt_name})
-            list(APPEND wxWidgets_SELECT_OPTIONS --${_opt_name}=yes)
-          else()
-            list(APPEND wxWidgets_SELECT_OPTIONS --${_opt_name}=no)
-          endif()
-        endif()
-      endforeach()
-    endmacro()
-
-    #-----------------------------------------------------------------
-    # UNIX: Start actual work.
-    #-----------------------------------------------------------------
-    # Support cross-compiling, only search in the target platform.
-    find_program(wxWidgets_CONFIG_EXECUTABLE
-      NAMES $ENV{WX_CONFIG} wx-config wx-config-3.1 wx-config-3.0 wx-config-2.9 wx-config-2.8
-      DOC "Location of wxWidgets library configuration provider binary (wx-config)."
-      ONLY_CMAKE_FIND_ROOT_PATH
-      )
-
-    if(wxWidgets_CONFIG_EXECUTABLE)
-      set(wxWidgets_FOUND TRUE)
-
-      # get defaults based on "wx-config --selected-config"
-      WX_CONFIG_SELECT_GET_DEFAULT()
-
-      # for each option: if both builds are available, provide option
-      WX_CONFIG_SELECT_QUERY_BOOL(debug "Use debug build?")
-      WX_CONFIG_SELECT_QUERY_BOOL(unicode "Use unicode build?")
-      WX_CONFIG_SELECT_QUERY_BOOL(universal "Use universal build?")
-      WX_CONFIG_SELECT_QUERY_BOOL(static "Link libraries statically?")
-
-      # process selection to set wxWidgets_SELECT_OPTIONS
-      WX_CONFIG_SELECT_SET_OPTIONS()
-      DBG_MSG("wxWidgets_SELECT_OPTIONS=${wxWidgets_SELECT_OPTIONS}")
-
-      # run the wx-config program to get cxxflags
-      execute_process(
-        COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}"
-          ${wxWidgets_SELECT_OPTIONS} --cxxflags
-        OUTPUT_VARIABLE wxWidgets_CXX_FLAGS
-        RESULT_VARIABLE RET
-        ERROR_QUIET
-        )
-      if(RET EQUAL 0)
-        string(STRIP "${wxWidgets_CXX_FLAGS}" wxWidgets_CXX_FLAGS)
-        separate_arguments(wxWidgets_CXX_FLAGS_LIST NATIVE_COMMAND "${wxWidgets_CXX_FLAGS}")
-
-        DBG_MSG_V("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}")
-
-        # parse definitions and include dirs from cxxflags
-        #   drop the -D and -I prefixes
-        set(wxWidgets_CXX_FLAGS)
-        foreach(arg IN LISTS wxWidgets_CXX_FLAGS_LIST)
-          if("${arg}" MATCHES "^-I(.*)$")
-            # include directory
-            list(APPEND wxWidgets_INCLUDE_DIRS "${CMAKE_MATCH_1}")
-          elseif("${arg}" MATCHES "^-D(.*)$")
-            # compile definition
-            list(APPEND wxWidgets_DEFINITIONS "${CMAKE_MATCH_1}")
-          else()
-            list(APPEND wxWidgets_CXX_FLAGS "${arg}")
-          endif()
-        endforeach()
-
-        DBG_MSG_V("wxWidgets_DEFINITIONS=${wxWidgets_DEFINITIONS}")
-        DBG_MSG_V("wxWidgets_INCLUDE_DIRS=${wxWidgets_INCLUDE_DIRS}")
-        DBG_MSG_V("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}")
-
-      else()
-        set(wxWidgets_FOUND FALSE)
-        DBG_MSG_V(
-          "${wxWidgets_CONFIG_EXECUTABLE} --cxxflags FAILED with RET=${RET}")
-      endif()
-
-      # run the wx-config program to get the libs
-      # - NOTE: wx-config doesn't verify that the libs requested exist
-      #         it just produces the names. Maybe a TRY_COMPILE would
-      #         be useful here...
-      unset(_cmp_req)
-      unset(_cmp_opt)
-      foreach(_cmp IN LISTS wxWidgets_FIND_COMPONENTS)
-        if(wxWidgets_FIND_REQUIRED_${_cmp})
-          list(APPEND _cmp_req "${_cmp}")
-        else()
-          list(APPEND _cmp_opt "${_cmp}")
-        endif()
-      endforeach()
-      DBG_MSG_V("wxWidgets required components : ${_cmp_req}")
-      DBG_MSG_V("wxWidgets optional components : ${_cmp_opt}")
-      if(DEFINED _cmp_opt)
-        string(REPLACE ";" "," _cmp_opt "--optional-libs ${_cmp_opt}")
-      endif()
-      string(REPLACE ";" "," _cmp_req "${_cmp_req}")
-      execute_process(
-        COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}"
-          ${wxWidgets_SELECT_OPTIONS} --libs ${_cmp_req} ${_cmp_opt}
-        OUTPUT_VARIABLE wxWidgets_LIBRARIES
-        RESULT_VARIABLE RET
-        ERROR_QUIET
-        )
-      if(RET EQUAL 0)
-        string(STRIP "${wxWidgets_LIBRARIES}" wxWidgets_LIBRARIES)
-        separate_arguments(wxWidgets_LIBRARIES)
-        string(REPLACE "-framework;" "-framework "
-          wxWidgets_LIBRARIES "${wxWidgets_LIBRARIES}")
-        string(REPLACE "-weak_framework;" "-weak_framework "
-          wxWidgets_LIBRARIES "${wxWidgets_LIBRARIES}")
-        string(REPLACE "-arch;" "-arch "
-          wxWidgets_LIBRARIES "${wxWidgets_LIBRARIES}")
-        string(REPLACE "-isysroot;" "-isysroot "
-          wxWidgets_LIBRARIES "${wxWidgets_LIBRARIES}")
-
-        # extract linkdirs (-L) for rpath (i.e., LINK_DIRECTORIES)
-        string(REGEX MATCHALL "-L[^;]+"
-          wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARIES}")
-        string(REGEX REPLACE "-L([^;]+)" "\\1"
-          wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARY_DIRS}")
-
-        DBG_MSG_V("wxWidgets_LIBRARIES=${wxWidgets_LIBRARIES}")
-        DBG_MSG_V("wxWidgets_LIBRARY_DIRS=${wxWidgets_LIBRARY_DIRS}")
-
-      else()
-        set(wxWidgets_FOUND FALSE)
-        DBG_MSG("${wxWidgets_CONFIG_EXECUTABLE} --libs ${_cmp_req} ${_cmp_opt} FAILED with RET=${RET}")
-      endif()
-      unset(_cmp_req)
-      unset(_cmp_opt)
-    endif()
-
-    # When using wx-config in MSYS, the include paths are UNIX style paths which may or may
-    # not work correctly depending on you MSYS/MinGW configuration.  CMake expects native
-    # paths internally.
-    if(wxWidgets_FOUND AND MSYS)
-      find_program(_cygpath_exe cygpath ONLY_CMAKE_FIND_ROOT_PATH)
-      DBG_MSG_V("_cygpath_exe:  ${_cygpath_exe}")
-      if(_cygpath_exe)
-        set(_tmp_path "")
-        foreach(_path ${wxWidgets_INCLUDE_DIRS})
-          execute_process(
-            COMMAND cygpath -w ${_path}
-            OUTPUT_VARIABLE _native_path
-            RESULT_VARIABLE _retv
-            OUTPUT_STRIP_TRAILING_WHITESPACE
-            ERROR_QUIET
-            )
-          if(_retv EQUAL 0)
-            file(TO_CMAKE_PATH ${_native_path} _native_path)
-            DBG_MSG_V("Path ${_path} converted to ${_native_path}")
-            string(APPEND _tmp_path " ${_native_path}")
-          endif()
-        endforeach()
-        DBG_MSG("Setting wxWidgets_INCLUDE_DIRS = ${_tmp_path}")
-        set(wxWidgets_INCLUDE_DIRS ${_tmp_path})
-        separate_arguments(wxWidgets_INCLUDE_DIRS)
-        list(REMOVE_ITEM wxWidgets_INCLUDE_DIRS "")
-
-        set(_tmp_path "")
-        foreach(_path ${wxWidgets_LIBRARY_DIRS})
-          execute_process(
-            COMMAND cygpath -w ${_path}
-            OUTPUT_VARIABLE _native_path
-            RESULT_VARIABLE _retv
-            OUTPUT_STRIP_TRAILING_WHITESPACE
-            ERROR_QUIET
-            )
-          if(_retv EQUAL 0)
-            file(TO_CMAKE_PATH ${_native_path} _native_path)
-            DBG_MSG_V("Path ${_path} converted to ${_native_path}")
-            string(APPEND _tmp_path " ${_native_path}")
-          endif()
-        endforeach()
-        DBG_MSG("Setting wxWidgets_LIBRARY_DIRS = ${_tmp_path}")
-        set(wxWidgets_LIBRARY_DIRS ${_tmp_path})
-        separate_arguments(wxWidgets_LIBRARY_DIRS)
-        list(REMOVE_ITEM wxWidgets_LIBRARY_DIRS "")
-      endif()
-      unset(_cygpath_exe CACHE)
-    endif()
-
-#=====================================================================
-# Neither UNIX_FIND_STYLE, nor WIN32_FIND_STYLE
-#=====================================================================
-  else()
-    if(NOT wxWidgets_FIND_QUIETLY)
-      message(STATUS
-        "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): \n"
-        "  Platform unknown/unsupported. It's neither WIN32 nor UNIX "
-        "find style."
-        )
-    endif()
-  endif()
-endif()
-
-# Check that all libraries are present, as wx-config does not check it
-set(_wx_lib_missing "")
-foreach(_wx_lib_ ${wxWidgets_LIBRARIES})
-  if("${_wx_lib_}" MATCHES "^-l(.*)")
-    set(_wx_lib_name "${CMAKE_MATCH_1}")
-    unset(_wx_lib_found CACHE)
-    find_library(_wx_lib_found NAMES ${_wx_lib_name} HINTS ${wxWidgets_LIBRARY_DIRS})
-    if(_wx_lib_found STREQUAL _wx_lib_found-NOTFOUND)
-      list(APPEND _wx_lib_missing ${_wx_lib_name})
-    endif()
-    unset(_wx_lib_found CACHE)
-  endif()
-endforeach()
-
-if (_wx_lib_missing)
-  string(REPLACE ";" " " _wx_lib_missing "${_wx_lib_missing}")
-  DBG_MSG_V("wxWidgets not found due to following missing libraries: ${_wx_lib_missing}")
-  set(wxWidgets_FOUND FALSE)
-  unset(wxWidgets_LIBRARIES)
-endif()
-unset(_wx_lib_missing)
-
-# Check if a specific version was requested by find_package().
-if(wxWidgets_FOUND)
-  unset(_wx_filename)
-  find_file(_wx_filename wx/version.h PATHS ${wxWidgets_INCLUDE_DIRS} NO_DEFAULT_PATH)
-  dbg_msg("_wx_filename:  ${_wx_filename}")
-
-  if(NOT _wx_filename)
-    message(FATAL_ERROR "wxWidgets wx/version.h file not found in ${wxWidgets_INCLUDE_DIRS}.")
-  endif()
-
-  file(READ "${_wx_filename}" _wx_version_h)
-  unset(_wx_filename CACHE)
-
-  string(REGEX REPLACE "^(.*\n)?#define +wxMAJOR_VERSION +([0-9]+).*"
-    "\\2" wxWidgets_VERSION_MAJOR "${_wx_version_h}" )
-  string(REGEX REPLACE "^(.*\n)?#define +wxMINOR_VERSION +([0-9]+).*"
-    "\\2" wxWidgets_VERSION_MINOR "${_wx_version_h}" )
-  string(REGEX REPLACE "^(.*\n)?#define +wxRELEASE_NUMBER +([0-9]+).*"
-    "\\2" wxWidgets_VERSION_PATCH "${_wx_version_h}" )
-  set(wxWidgets_VERSION_STRING
-    "${wxWidgets_VERSION_MAJOR}.${wxWidgets_VERSION_MINOR}.${wxWidgets_VERSION_PATCH}" )
-  dbg_msg("wxWidgets_VERSION_STRING:    ${wxWidgets_VERSION_STRING}")
-endif()
-
-# Debug output:
-DBG_MSG("wxWidgets_FOUND           : ${wxWidgets_FOUND}")
-DBG_MSG("wxWidgets_INCLUDE_DIRS    : ${wxWidgets_INCLUDE_DIRS}")
-DBG_MSG("wxWidgets_LIBRARY_DIRS    : ${wxWidgets_LIBRARY_DIRS}")
-DBG_MSG("wxWidgets_LIBRARIES       : ${wxWidgets_LIBRARIES}")
-DBG_MSG("wxWidgets_CXX_FLAGS       : ${wxWidgets_CXX_FLAGS}")
-DBG_MSG("wxWidgets_USE_FILE        : ${wxWidgets_USE_FILE}")
-
-#=====================================================================
-#=====================================================================
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-
-# FIXME: set wxWidgets_<comp>_FOUND for wx-config branch
-#        and use HANDLE_COMPONENTS on Unix too
-if(wxWidgets_FIND_STYLE STREQUAL "win32")
-  set(wxWidgets_HANDLE_COMPONENTS "HANDLE_COMPONENTS")
-endif()
-
-find_package_handle_standard_args(wxWidgets
-  REQUIRED_VARS wxWidgets_LIBRARIES wxWidgets_INCLUDE_DIRS
-  VERSION_VAR   wxWidgets_VERSION_STRING
-  ${wxWidgets_HANDLE_COMPONENTS}
-  )
-unset(wxWidgets_HANDLE_COMPONENTS)
-
-#=====================================================================
-# Macros for use in wxWidgets apps.
-# - This module will not fail to find wxWidgets based on the code
-#   below. Hence, it's required to check for validity of:
-#
-# wxWidgets_wxrc_EXECUTABLE
-#=====================================================================
-
-# Resource file compiler.
-find_program(wxWidgets_wxrc_EXECUTABLE
-  NAMES $ENV{WXRC_CMD} wxrc
-  PATHS ${wxWidgets_ROOT_DIR}/utils/wxrc/vc_msw
-  DOC "Location of wxWidgets resource file compiler binary (wxrc)"
-  )
-
-#
-# WX_SPLIT_ARGUMENTS_ON(<keyword> <left> <right> <arg1> <arg2> ...)
-#
-# Sets <left> and <right> to contain arguments to the left and right,
-# respectively, of <keyword>.
-#
-# Example usage:
-#  function(WXWIDGETS_ADD_RESOURCES outfiles)
-#    WX_SPLIT_ARGUMENTS_ON(OPTIONS wxrc_files wxrc_options ${ARGN})
-#    ...
-#  endfunction()
-#
-#  WXWIDGETS_ADD_RESOURCES(sources ${xrc_files} OPTIONS -e -o file.C)
-#
-# NOTE: This is a generic piece of code that should be renamed to
-# SPLIT_ARGUMENTS_ON and put in a file serving the same purpose as
-# FindPackageStandardArgs.cmake. At the time of this writing
-# FindQt4.cmake has a QT4_EXTRACT_OPTIONS, which I basically copied
-# here a bit more generalized. So, there are already two find modules
-# using this approach.
-#
-function(WX_SPLIT_ARGUMENTS_ON _keyword _leftvar _rightvar)
-  # FIXME: Document that the input variables will be cleared.
-  #list(APPEND ${_leftvar}  "")
-  #list(APPEND ${_rightvar} "")
-  set(${_leftvar}  "")
-  set(${_rightvar} "")
-
-  set(_doing_right FALSE)
-  foreach(element ${ARGN})
-    if("${element}" STREQUAL "${_keyword}")
-      set(_doing_right TRUE)
-    else()
-      if(_doing_right)
-        list(APPEND ${_rightvar} "${element}")
-      else()
-        list(APPEND ${_leftvar} "${element}")
-      endif()
-    endif()
-  endforeach()
-
-  set(${_leftvar}  ${${_leftvar}}  PARENT_SCOPE)
-  set(${_rightvar} ${${_rightvar}} PARENT_SCOPE)
-endfunction()
-
-#
-# WX_GET_DEPENDENCIES_FROM_XML(
-#   <depends>
-#   <match_pattern>
-#   <clean_pattern>
-#   <xml_contents>
-#   <depends_path>
-#   )
-#
-# FIXME: Add documentation here...
-#
-function(WX_GET_DEPENDENCIES_FROM_XML
-    _depends
-    _match_patt
-    _clean_patt
-    _xml_contents
-    _depends_path
-    )
-
-  string(REGEX MATCHALL
-    ${_match_patt}
-    dep_file_list
-    "${${_xml_contents}}"
-    )
-  foreach(dep_file ${dep_file_list})
-    string(REGEX REPLACE ${_clean_patt} "" dep_file "${dep_file}")
-
-    # make the file have an absolute path
-    if(NOT IS_ABSOLUTE "${dep_file}")
-      set(dep_file "${${_depends_path}}/${dep_file}")
-    endif()
-
-    # append file to dependency list
-    list(APPEND ${_depends} "${dep_file}")
-  endforeach()
-
-  set(${_depends} ${${_depends}} PARENT_SCOPE)
-endfunction()
-
-#
-# WXWIDGETS_ADD_RESOURCES(<sources> <xrc_files>
-#                         OPTIONS <options> [NO_CPP_CODE])
-#
-# Adds a custom command for resource file compilation of the
-# <xrc_files> and appends the output files to <sources>.
-#
-# Example usages:
-#   WXWIDGETS_ADD_RESOURCES(sources xrc/main_frame.xrc)
-#   WXWIDGETS_ADD_RESOURCES(sources ${xrc_files} OPTIONS -e -o altname.cxx)
-#
-function(WXWIDGETS_ADD_RESOURCES _outfiles)
-  WX_SPLIT_ARGUMENTS_ON(OPTIONS rc_file_list rc_options ${ARGN})
-
-  # Parse files for dependencies.
-  set(rc_file_list_abs "")
-  set(rc_depends       "")
-  foreach(rc_file ${rc_file_list})
-    get_filename_component(depends_path ${rc_file} PATH)
-
-    get_filename_component(rc_file_abs ${rc_file} ABSOLUTE)
-    list(APPEND rc_file_list_abs "${rc_file_abs}")
-
-    # All files have absolute paths or paths relative to the location
-    # of the rc file.
-    file(READ "${rc_file_abs}" rc_file_contents)
-
-    # get bitmap/bitmap2 files
-    WX_GET_DEPENDENCIES_FROM_XML(
-      rc_depends
-      "<bitmap[^<]+"
-      "^<bitmap[^>]*>"
-      rc_file_contents
-      depends_path
-      )
-
-    # get url files
-    WX_GET_DEPENDENCIES_FROM_XML(
-      rc_depends
-      "<url[^<]+"
-      "^<url[^>]*>"
-      rc_file_contents
-      depends_path
-      )
-
-    # get wxIcon files
-    WX_GET_DEPENDENCIES_FROM_XML(
-      rc_depends
-      "<object[^>]*class=\"wxIcon\"[^<]+"
-      "^<object[^>]*>"
-      rc_file_contents
-      depends_path
-      )
-  endforeach()
-
-  #
-  # Parse options.
-  #
-  # If NO_CPP_CODE option specified, then produce .xrs file rather
-  # than a .cpp file (i.e., don't add the default --cpp-code option).
-  list(FIND rc_options NO_CPP_CODE index)
-  if(index EQUAL -1)
-    list(APPEND rc_options --cpp-code)
-    # wxrc's default output filename for cpp code.
-    set(outfile resource.cpp)
-  else()
-    list(REMOVE_AT rc_options ${index})
-    # wxrc's default output filename for xrs file.
-    set(outfile resource.xrs)
-  endif()
-
-  # Get output name for use in ADD_CUSTOM_COMMAND.
-  # - short option scanning
-  list(FIND rc_options -o index)
-  if(NOT index EQUAL -1)
-    math(EXPR filename_index "${index} + 1")
-    list(GET rc_options ${filename_index} outfile)
-    #list(REMOVE_AT rc_options ${index} ${filename_index})
-  endif()
-  # - long option scanning
-  string(REGEX MATCH "--output=[^;]*" outfile_opt "${rc_options}")
-  if(outfile_opt)
-    string(REPLACE "--output=" "" outfile "${outfile_opt}")
-  endif()
-  #string(REGEX REPLACE "--output=[^;]*;?" "" rc_options "${rc_options}")
-  #string(REGEX REPLACE ";$" "" rc_options "${rc_options}")
-
-  if(NOT IS_ABSOLUTE "${outfile}")
-    set(outfile "${CMAKE_CURRENT_BINARY_DIR}/${outfile}")
-  endif()
-  add_custom_command(
-    OUTPUT "${outfile}"
-    COMMAND ${wxWidgets_wxrc_EXECUTABLE} ${rc_options} ${rc_file_list_abs}
-    DEPENDS ${rc_file_list_abs} ${rc_depends}
-    )
-
-  # Add generated header to output file list.
-  list(FIND rc_options -e short_index)
-  list(FIND rc_options --extra-cpp-code long_index)
-  if(NOT short_index EQUAL -1 OR NOT long_index EQUAL -1)
-    get_filename_component(outfile_ext ${outfile} EXT)
-    string(REPLACE "${outfile_ext}" ".h" outfile_header "${outfile}")
-    list(APPEND ${_outfiles} "${outfile_header}")
-    set_source_files_properties(
-      "${outfile_header}" PROPERTIES GENERATED TRUE
-      )
-  endif()
-
-  # Add generated file to output file list.
-  list(APPEND ${_outfiles} "${outfile}")
-
-  set(${_outfiles} ${${_outfiles}} PARENT_SCOPE)
-endfunction()
diff --git a/share/cmake-3.18/Modules/FindwxWindows.cmake b/share/cmake-3.18/Modules/FindwxWindows.cmake
deleted file mode 100644
index 35840f5..0000000
--- a/share/cmake-3.18/Modules/FindwxWindows.cmake
+++ /dev/null
@@ -1,730 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FindwxWindows
--------------
-
-.. deprecated:: 3.0
-
-  Replaced by :module:`FindwxWidgets`.
-
-Find wxWindows (wxWidgets) installation
-
-This module finds if wxWindows/wxWidgets is installed and determines
-where the include files and libraries are.  It also determines what
-the name of the library is.  This code sets the following variables:
-
-::
-
-  WXWINDOWS_FOUND     = system has WxWindows
-  WXWINDOWS_LIBRARIES = path to the wxWindows libraries
-                        on Unix/Linux with additional
-                        linker flags from
-                        "wx-config --libs"
-  CMAKE_WXWINDOWS_CXX_FLAGS  = Compiler flags for wxWindows,
-                               essentially "`wx-config --cxxflags`"
-                               on Linux
-  WXWINDOWS_INCLUDE_DIR      = where to find "wx/wx.h" and "wx/setup.h"
-  WXWINDOWS_LINK_DIRECTORIES = link directories, useful for rpath on
-                                Unix
-  WXWINDOWS_DEFINITIONS      = extra defines
-
-
-
-OPTIONS If you need OpenGL support please
-
-::
-
-  set(WXWINDOWS_USE_GL 1)
-
-in your CMakeLists.txt *before* you include this file.
-
-::
-
-  HAVE_ISYSTEM      - true required to replace -I by -isystem on g++
-
-
-
-For convenience include Use_wxWindows.cmake in your project's
-CMakeLists.txt using
-include(${CMAKE_CURRENT_LIST_DIR}/Use_wxWindows.cmake).
-
-USAGE
-
-::
-
-  set(WXWINDOWS_USE_GL 1)
-  find_package(wxWindows)
-
-
-
-NOTES wxWidgets 2.6.x is supported for monolithic builds e.g.
-compiled in wx/build/msw dir as:
-
-::
-
-  nmake -f makefile.vc BUILD=debug SHARED=0 USE_OPENGL=1 MONOLITHIC=1
-
-
-
-DEPRECATED
-
-::
-
-  CMAKE_WX_CAN_COMPILE
-  WXWINDOWS_LIBRARY
-  CMAKE_WX_CXX_FLAGS
-  WXWINDOWS_INCLUDE_PATH
-
-
-
-AUTHOR Jan Woetzel <http://www.mip.informatik.uni-kiel.de/~jw>
-(07/2003-01/2006)
-#]=======================================================================]
-
-# ------------------------------------------------------------------
-#
-# -removed OPTION for CMAKE_WXWINDOWS_USE_GL. Force the developer to SET it before calling this.
-# -major update for wx 2.6.2 and monolithic build option. (10/2005)
-#
-# STATUS
-# tested with:
-#  cmake 1.6.7, Linux (Suse 7.3), wxWindows 2.4.0, gcc 2.95
-#  cmake 1.6.7, Linux (Suse 8.2), wxWindows 2.4.0, gcc 3.3
-#  cmake 1.6.7, Linux (Suse 8.2), wxWindows 2.4.1-patch1,  gcc 3.3
-#  cmake 1.6.7, MS Windows XP home, wxWindows 2.4.1, MS Visual Studio .net 7 2002 (static build)
-#  cmake 2.0.5 on Windows XP and Suse Linux 9.2
-#  cmake 2.0.6 on Windows XP and Suse Linux 9.2, wxWidgets 2.6.2 MONOLITHIC build
-#  cmake 2.2.2 on Windows XP, MS Visual Studio .net 2003 7.1 wxWidgets 2.6.2 MONOLITHIC build
-#
-# TODO
-#  -OPTION for unicode builds
-#  -further testing of DLL linking under MS WIN32
-#  -better support for non-monolithic builds
-#
-
-
-if(WIN32)
-  set(WIN32_STYLE_FIND 1)
-endif()
-if(MINGW)
-  set(WIN32_STYLE_FIND 0)
-  set(UNIX_STYLE_FIND 1)
-endif()
-if(UNIX)
-  set(UNIX_STYLE_FIND 1)
-endif()
-
-
-if(WIN32_STYLE_FIND)
-
-  ## ######################################################################
-  ##
-  ## Windows specific:
-  ##
-  ## candidates for root/base directory of wxwindows
-  ## should have subdirs include and lib containing include/wx/wx.h
-  ## fix the root dir to avoid mixing of headers/libs from different
-  ## versions/builds:
-
-  ## WX supports monolithic and multiple smaller libs (since 2.5.x), we prefer monolithic for now.
-  ## monolithic = WX is built as a single big library
-  ## e.g. compile on WIN32 as  "nmake -f makefile.vc MONOLITHIC=1 BUILD=debug SHARED=0 USE_OPENGL=1" (JW)
-  option(WXWINDOWS_USE_MONOLITHIC "Use monolithic build of WX??" ON)
-  mark_as_advanced(WXWINDOWS_USE_MONOLITHIC)
-
-  ## GL libs used?
-  option(WXWINDOWS_USE_GL "Use Wx with GL support(glcanvas)?" ON)
-  mark_as_advanced(WXWINDOWS_USE_GL)
-
-
-  ## avoid mixing of headers and libs between multiple installed WX versions,
-  ## select just one tree here:
-  find_path(WXWINDOWS_ROOT_DIR  include/wx/wx.h
-    HINTS
-      ENV WXWIN
-      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWidgets_is1;Inno Setup: App Path]"  ## WX 2.6.x
-      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWindows_is1;Inno Setup: App Path]"  ## WX 2.4.x
-    PATHS
-      C:/wxWidgets-2.6.2
-      D:/wxWidgets-2.6.2
-      C:/wxWidgets-2.6.1
-      D:/wxWidgets-2.6.1
-      C:/wxWindows-2.4.2
-      D:/wxWindows-2.4.2
-  )
-  # message("DBG found WXWINDOWS_ROOT_DIR: ${WXWINDOWS_ROOT_DIR}")
-
-
-  ## find libs for combination of static/shared with release/debug
-  ## be careful if you add something here,
-  ## avoid mixing of headers and libs of different wx versions,
-  ## there may be multiple WX versions installed.
-  set (WXWINDOWS_POSSIBLE_LIB_PATHS
-    "${WXWINDOWS_ROOT_DIR}/lib"
-    )
-
-  ## monolithic?
-  if (WXWINDOWS_USE_MONOLITHIC)
-
-    find_library(WXWINDOWS_STATIC_LIBRARY
-      NAMES wx wxmsw wxmsw26
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows static release build library" )
-
-    find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY
-      NAMES wxd wxmswd wxmsw26d
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows static debug build library" )
-
-    find_library(WXWINDOWS_SHARED_LIBRARY
-      NAMES wxmsw26 wxmsw262 wxmsw24 wxmsw242 wxmsw241 wxmsw240 wx23_2 wx22_9
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_dll"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows shared release build library" )
-
-    find_library(WXWINDOWS_SHARED_DEBUG_LIBRARY
-      NAMES wxmsw26d wxmsw262d wxmsw24d wxmsw241d wxmsw240d wx23_2d wx22_9d
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_dll"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows shared debug build library " )
-
-
-    ##
-    ## required for WXWINDOWS_USE_GL
-    ## gl lib is always build separate:
-    ##
-    find_library(WXWINDOWS_STATIC_LIBRARY_GL
-      NAMES wx_gl wxmsw_gl wxmsw26_gl
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows static release build GL library" )
-
-    find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_GL
-      NAMES wxd_gl wxmswd_gl wxmsw26d_gl
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows static debug build GL library" )
-
-
-    find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_PNG
-      NAMES wxpngd
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows static debug png library" )
-
-    find_library(WXWINDOWS_STATIC_LIBRARY_PNG
-      NAMES wxpng
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows static png library" )
-
-    find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_TIFF
-      NAMES wxtiffd
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows static debug tiff library" )
-
-    find_library(WXWINDOWS_STATIC_LIBRARY_TIFF
-      NAMES wxtiff
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows static tiff library" )
-
-    find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_JPEG
-      NAMES wxjpegd  wxjpgd
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows static debug jpeg library" )
-
-    find_library(WXWINDOWS_STATIC_LIBRARY_JPEG
-      NAMES wxjpeg wxjpg
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows static jpeg library" )
-
-    find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_ZLIB
-      NAMES wxzlibd
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows static debug zlib library" )
-
-    find_library(WXWINDOWS_STATIC_LIBRARY_ZLIB
-      NAMES wxzlib
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows static zib library" )
-
-    find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_REGEX
-      NAMES wxregexd
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows static debug regex library" )
-
-    find_library(WXWINDOWS_STATIC_LIBRARY_REGEX
-      NAMES wxregex
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows static regex library" )
-
-
-
-    ## untested:
-    find_library(WXWINDOWS_SHARED_LIBRARY_GL
-      NAMES wx_gl wxmsw_gl wxmsw26_gl
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_dll"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows shared release build GL library" )
-
-    find_library(WXWINDOWS_SHARED_DEBUG_LIBRARY_GL
-      NAMES wxd_gl wxmswd_gl wxmsw26d_gl
-      PATHS
-      "${WXWINDOWS_ROOT_DIR}/lib/vc_dll"
-      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
-      DOC "wxWindows shared debug build GL library" )
-
-
-  else ()
-    ## WX is built as multiple small pieces libraries instead of monolithic
-
-    ## DEPECATED (jw) replaced by more general WXWINDOWS_USE_MONOLITHIC ON/OFF
-    # option(WXWINDOWS_SEPARATE_LIBS_BUILD "Is wxWindows build with separate libs?" OFF)
-
-    ## HACK: This is very dirty.
-    ## because the libs of a particular version are explicitly listed
-    ## and NOT searched/verified.
-    ## TODO:  Really search for each lib, then decide for
-    ## monolithic x debug x shared x GL (=16 combinations) for at least 18 libs
-    ## -->  about 288 combinations
-    ## thus we need a different approach so solve this correctly ...
-
-    message(STATUS "Warning: You are trying to use wxWidgets without monolithic build (WXWINDOWS_SEPARATE_LIBS_BUILD). This is a HACK, libraries are not verified! (JW).")
-
-    set(WXWINDOWS_STATIC_LIBS ${WXWINDOWS_STATIC_LIBS}
-      wxbase26
-      wxbase26_net
-      wxbase26_odbc
-      wxbase26_xml
-      wxmsw26_adv
-      wxmsw26_core
-      wxmsw26_dbgrid
-      wxmsw26_gl
-      wxmsw26_html
-      wxmsw26_media
-      wxmsw26_qa
-      wxmsw26_xrc
-      wxexpat
-      wxjpeg
-      wxpng
-      wxregex
-      wxtiff
-      wxzlib
-      comctl32
-      rpcrt4
-      wsock32
-      )
-    ## HACK: feed in to optimized / debug libraries if both were FOUND.
-    set(WXWINDOWS_STATIC_DEBUG_LIBS ${WXWINDOWS_STATIC_DEBUG_LIBS}
-      wxbase26d
-      wxbase26d_net
-      wxbase26d_odbc
-      wxbase26d_xml
-      wxmsw26d_adv
-      wxmsw26d_core
-      wxmsw26d_dbgrid
-      wxmsw26d_gl
-      wxmsw26d_html
-      wxmsw26d_media
-      wxmsw26d_qa
-      wxmsw26d_xrc
-      wxexpatd
-      wxjpegd
-      wxpngd
-      wxregexd
-      wxtiffd
-      wxzlibd
-      comctl32
-      rpcrt4
-      wsock32
-      )
-  endif ()
-
-
-  ##
-  ## now we should have found all WX libs available on the system.
-  ## let the user decide which of the available onse to use.
-  ##
-
-  ## if there is at least one shared lib available
-  ## let user choose whether to use shared or static wxwindows libs
-  if(WXWINDOWS_SHARED_LIBRARY OR WXWINDOWS_SHARED_DEBUG_LIBRARY)
-    ## default value OFF because wxWindows MSVS default build is static
-    option(WXWINDOWS_USE_SHARED_LIBS
-      "Use shared versions (dll) of wxWindows libraries?" OFF)
-    mark_as_advanced(WXWINDOWS_USE_SHARED_LIBS)
-  endif()
-
-  ## add system libraries wxwindows always seems to depend on
-  set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
-    comctl32
-    rpcrt4
-    wsock32
-    )
-
-  if (NOT WXWINDOWS_USE_SHARED_LIBS)
-    set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
-      ##  these ones don't seem required, in particular  ctl3d32 is not necessary (Jan Woetzel 07/2003)
-      #   ctl3d32
-      debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY_ZLIB}   optimized ${WXWINDOWS_STATIC_LIBRARY_ZLIB}
-      debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY_REGEX}  optimized ${WXWINDOWS_STATIC_LIBRARY_REGEX}
-      debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY_PNG}    optimized ${WXWINDOWS_STATIC_LIBRARY_PNG}
-      debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY_JPEG}   optimized ${WXWINDOWS_STATIC_LIBRARY_JPEG}
-      debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY_TIFF}   optimized ${WXWINDOWS_STATIC_LIBRARY_TIFF}
-      )
-  endif ()
-
-  ## opengl/glu: TODO/FIXME: better use FindOpenGL.cmake here
-  ## assume release versions of glu an dopengl, here.
-  if (WXWINDOWS_USE_GL)
-    set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
-      opengl32
-      glu32 )
-  endif ()
-
-  ##
-  ## select between use of  shared or static wxWindows lib then set libs to use
-  ## for debug and optimized build.  so the user can switch between debug and
-  ## release build e.g. within MS Visual Studio without running cmake with a
-  ## different build directory again.
-  ##
-  ## then add the build specific include dir for wx/setup.h
-  ##
-
-  if(WXWINDOWS_USE_SHARED_LIBS)
-    ##message("DBG wxWindows use shared lib selected.")
-    ## assume that both builds use the same setup(.h) for simplicity
-
-    ## shared: both wx (debug and release) found?
-    ## assume that both builds use the same setup(.h) for simplicity
-    if(WXWINDOWS_SHARED_DEBUG_LIBRARY AND WXWINDOWS_SHARED_LIBRARY)
-      ##message("DBG wx shared: debug and optimized found.")
-      find_path(WXWINDOWS_INCLUDE_DIR_SETUPH  wx/setup.h
-        ${WXWINDOWS_ROOT_DIR}/lib/mswdlld
-        ${WXWINDOWS_ROOT_DIR}/lib/mswdll
-        ${WXWINDOWS_ROOT_DIR}/lib/vc_dll/mswd
-        ${WXWINDOWS_ROOT_DIR}/lib/vc_dll/msw )
-      set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
-        debug     ${WXWINDOWS_SHARED_DEBUG_LIBRARY}
-        optimized ${WXWINDOWS_SHARED_LIBRARY} )
-      if (WXWINDOWS_USE_GL)
-        set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
-          debug     ${WXWINDOWS_SHARED_DEBUG_LIBRARY_GL}
-          optimized ${WXWINDOWS_SHARED_LIBRARY_GL} )
-      endif ()
-    endif()
-
-    ## shared: only debug wx lib found?
-    if(WXWINDOWS_SHARED_DEBUG_LIBRARY)
-      if(NOT WXWINDOWS_SHARED_LIBRARY)
-        ##message("DBG wx shared: debug (but no optimized) found.")
-        find_path(WXWINDOWS_INCLUDE_DIR_SETUPH  wx/setup.h
-          ${WXWINDOWS_ROOT_DIR}/lib/mswdlld
-          ${WXWINDOWS_ROOT_DIR}/lib/vc_dll/mswd  )
-        set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
-          ${WXWINDOWS_SHARED_DEBUG_LIBRARY} )
-        if (WXWINDOWS_USE_GL)
-          set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
-            ${WXWINDOWS_SHARED_DEBUG_LIBRARY_GL} )
-        endif ()
-      endif()
-    endif()
-
-    ## shared: only release wx lib found?
-    if(NOT WXWINDOWS_SHARED_DEBUG_LIBRARY)
-      if(WXWINDOWS_SHARED_LIBRARY)
-        ##message("DBG wx shared: optimized (but no debug) found.")
-        find_path(WXWINDOWS_INCLUDE_DIR_SETUPH  wx/setup.h
-          ${WXWINDOWS_ROOT_DIR}/lib/mswdll
-          ${WXWINDOWS_ROOT_DIR}/lib/vc_dll/msw  )
-        set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
-          ${WXWINDOWS_SHARED_DEBUG_LIBRARY} )
-        if (WXWINDOWS_USE_GL)
-          set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
-            ${WXWINDOWS_SHARED_DEBUG_LIBRARY_GL} )
-        endif ()
-      endif()
-    endif()
-
-    ## shared: none found?
-    if(NOT WXWINDOWS_SHARED_DEBUG_LIBRARY)
-      if(NOT WXWINDOWS_SHARED_LIBRARY)
-        message(STATUS
-          "No shared wxWindows lib found, but WXWINDOWS_USE_SHARED_LIBS=${WXWINDOWS_USE_SHARED_LIBS}.")
-      endif()
-    endif()
-
-    #########################################################################################
-  else()
-
-    ##jw: DEPRECATED if(NOT WXWINDOWS_SEPARATE_LIBS_BUILD)
-
-    ## static: both wx (debug and release) found?
-    ## assume that both builds use the same setup(.h) for simplicity
-    if(WXWINDOWS_STATIC_DEBUG_LIBRARY AND WXWINDOWS_STATIC_LIBRARY)
-      ##message("DBG wx static: debug and optimized found.")
-      find_path(WXWINDOWS_INCLUDE_DIR_SETUPH  wx/setup.h
-        ${WXWINDOWS_ROOT_DIR}/lib/mswd
-        ${WXWINDOWS_ROOT_DIR}/lib/msw
-        ${WXWINDOWS_ROOT_DIR}/lib/vc_lib/mswd
-        ${WXWINDOWS_ROOT_DIR}/lib/vc_lib/msw )
-      set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
-        debug     ${WXWINDOWS_STATIC_DEBUG_LIBRARY}
-        optimized ${WXWINDOWS_STATIC_LIBRARY} )
-      if (WXWINDOWS_USE_GL)
-        set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
-          debug     ${WXWINDOWS_STATIC_DEBUG_LIBRARY_GL}
-          optimized ${WXWINDOWS_STATIC_LIBRARY_GL} )
-      endif ()
-    endif()
-
-    ## static: only debug wx lib found?
-    if(WXWINDOWS_STATIC_DEBUG_LIBRARY)
-      if(NOT WXWINDOWS_STATIC_LIBRARY)
-        ##message("DBG wx static: debug (but no optimized) found.")
-        find_path(WXWINDOWS_INCLUDE_DIR_SETUPH  wx/setup.h
-          ${WXWINDOWS_ROOT_DIR}/lib/mswd
-          ${WXWINDOWS_ROOT_DIR}/lib/vc_lib/mswd  )
-        set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
-          ${WXWINDOWS_STATIC_DEBUG_LIBRARY} )
-        if (WXWINDOWS_USE_GL)
-          set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
-            ${WXWINDOWS_STATIC_DEBUG_LIBRARY_GL} )
-        endif ()
-      endif()
-    endif()
-
-    ## static: only release wx lib found?
-    if(NOT WXWINDOWS_STATIC_DEBUG_LIBRARY)
-      if(WXWINDOWS_STATIC_LIBRARY)
-        ##message("DBG wx static: optimized (but no debug) found.")
-        find_path(WXWINDOWS_INCLUDE_DIR_SETUPH  wx/setup.h
-          ${WXWINDOWS_ROOT_DIR}/lib/msw
-          ${WXWINDOWS_ROOT_DIR}/lib/vc_lib/msw )
-        set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
-          ${WXWINDOWS_STATIC_LIBRARY} )
-        if (WXWINDOWS_USE_GL)
-          set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
-            ${WXWINDOWS_STATIC_LIBRARY_GL} )
-        endif ()
-      endif()
-    endif()
-
-    ## static: none found?
-    if(NOT WXWINDOWS_STATIC_DEBUG_LIBRARY AND NOT WXWINDOWS_SEPARATE_LIBS_BUILD)
-      if(NOT WXWINDOWS_STATIC_LIBRARY)
-        message(STATUS
-          "No static wxWindows lib found, but WXWINDOWS_USE_SHARED_LIBS=${WXWINDOWS_USE_SHARED_LIBS}.")
-      endif()
-    endif()
-  endif()
-
-
-  ## not necessary in wxWindows 2.4.1 and 2.6.2
-  ## but it may fix a previous bug, see
-  ## http://lists.wxwindows.org/cgi-bin/ezmlm-cgi?8:mss:37574:200305:mpdioeneabobmgjenoap
-  option(WXWINDOWS_SET_DEFINITIONS "Set additional defines for wxWindows" OFF)
-  mark_as_advanced(WXWINDOWS_SET_DEFINITIONS)
-  if (WXWINDOWS_SET_DEFINITIONS)
-    set(WXWINDOWS_DEFINITIONS "-DWINVER=0x400")
-  else ()
-    # clear:
-    set(WXWINDOWS_DEFINITIONS "")
-  endif ()
-
-
-
-  ## Find the include directories for wxwindows
-  ## the first, build specific for wx/setup.h was determined before.
-  ## add inc dir for general for "wx/wx.h"
-  find_path(WXWINDOWS_INCLUDE_DIR  wx/wx.h
-    "${WXWINDOWS_ROOT_DIR}/include" )
-  ## append the build specific include dir for wx/setup.h:
-  if (WXWINDOWS_INCLUDE_DIR_SETUPH)
-    set(WXWINDOWS_INCLUDE_DIR ${WXWINDOWS_INCLUDE_DIR} ${WXWINDOWS_INCLUDE_DIR_SETUPH} )
-  endif ()
-
-
-
-  mark_as_advanced(
-    WXWINDOWS_ROOT_DIR
-    WXWINDOWS_INCLUDE_DIR
-    WXWINDOWS_INCLUDE_DIR_SETUPH
-    WXWINDOWS_STATIC_LIBRARY
-    WXWINDOWS_STATIC_LIBRARY_GL
-    WXWINDOWS_STATIC_DEBUG_LIBRARY
-    WXWINDOWS_STATIC_DEBUG_LIBRARY_GL
-    WXWINDOWS_STATIC_LIBRARY_ZLIB
-    WXWINDOWS_STATIC_DEBUG_LIBRARY_ZLIB
-    WXWINDOWS_STATIC_LIBRARY_REGEX
-    WXWINDOWS_STATIC_DEBUG_LIBRARY_REGEX
-    WXWINDOWS_STATIC_LIBRARY_PNG
-    WXWINDOWS_STATIC_DEBUG_LIBRARY_PNG
-    WXWINDOWS_STATIC_LIBRARY_JPEG
-    WXWINDOWS_STATIC_DEBUG_LIBRARY_JPEG
-    WXWINDOWS_STATIC_DEBUG_LIBRARY_TIFF
-    WXWINDOWS_STATIC_LIBRARY_TIFF
-    WXWINDOWS_SHARED_LIBRARY
-    WXWINDOWS_SHARED_DEBUG_LIBRARY
-    WXWINDOWS_SHARED_LIBRARY_GL
-    WXWINDOWS_SHARED_DEBUG_LIBRARY_GL
-    )
-
-
-else()
-
-  if (UNIX_STYLE_FIND)
-    ## ######################################################################
-    ##
-    ## UNIX/Linux specific:
-    ##
-    ## use backquoted wx-config to query and set flags and libs:
-    ## 06/2003 Jan Woetzel
-    ##
-
-    option(WXWINDOWS_USE_SHARED_LIBS "Use shared versions (.so) of wxWindows libraries" ON)
-    mark_as_advanced(WXWINDOWS_USE_SHARED_LIBS)
-
-    # JW removed option and force the develper th SET it.
-    # option(WXWINDOWS_USE_GL "use wxWindows with GL support (use additional
-    # --gl-libs for wx-config)?" OFF)
-
-    # wx-config should be in your path anyhow, usually no need to set WXWIN or
-    # search in ../wx or ../../wx
-    find_program(CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE
-      NAMES $ENV{WX_CONFIG} wx-config
-      HINTS
-        ENV WXWIN
-        $ENV{WXWIN}/bin
-      PATHS
-      ../wx/bin
-      ../../wx/bin )
-
-    # check whether wx-config was found:
-    if(CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE)
-
-      # use shared/static wx lib?
-      # remember: always link shared to use systems GL etc. libs (no static
-      # linking, just link *against* static .a libs)
-      if(WXWINDOWS_USE_SHARED_LIBS)
-        set(WX_CONFIG_ARGS_LIBS "--libs")
-      else()
-        set(WX_CONFIG_ARGS_LIBS "--static --libs")
-      endif()
-
-      # do we need additionial wx GL stuff like GLCanvas ?
-      if(WXWINDOWS_USE_GL)
-        string(APPEND WX_CONFIG_ARGS_LIBS " --gl-libs" )
-      endif()
-      ##message("DBG: WX_CONFIG_ARGS_LIBS=${WX_CONFIG_ARGS_LIBS}===")
-
-      # set CXXFLAGS to be fed into CMAKE_CXX_FLAGS by the user:
-      if (HAVE_ISYSTEM) # does the compiler support -isystem ?
-              if (NOT APPLE) # -isystem seem sto be unsuppored on Mac
-                if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_COMPILER_IS_GNUCXX )
-            if (CMAKE_CXX_COMPILER MATCHES g\\+\\+)
-              set(CMAKE_WXWINDOWS_CXX_FLAGS "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} --cxxflags|sed -e s/-I/-isystem/g`")
-            else()
-              set(CMAKE_WXWINDOWS_CXX_FLAGS "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} --cxxflags`")
-            endif()
-                endif()
-              endif ()
-      endif ()
-      ##message("DBG: for compilation:
-      ##CMAKE_WXWINDOWS_CXX_FLAGS=${CMAKE_WXWINDOWS_CXX_FLAGS}===")
-
-      # keep the back-quoted string for clarity
-      set(WXWINDOWS_LIBRARIES "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} ${WX_CONFIG_ARGS_LIBS}`")
-      ##message("DBG2: for linking:
-      ##WXWINDOWS_LIBRARIES=${WXWINDOWS_LIBRARIES}===")
-
-      # evaluate wx-config output to separate linker flags and linkdirs for
-      # rpath:
-      exec_program(${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE}
-        ARGS ${WX_CONFIG_ARGS_LIBS}
-        OUTPUT_VARIABLE WX_CONFIG_LIBS )
-
-      ## extract linkdirs (-L) for rpath
-      ## use regular expression to match wildcard equivalent "-L*<endchar>"
-      ## with <endchar> is a space or a semicolon
-      string(REGEX MATCHALL "[-][L]([^ ;])+" WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX "${WX_CONFIG_LIBS}" )
-      # message("DBG  WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX=${WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX}")
-
-      ## remove prefix -L because we need the pure directory for LINK_DIRECTORIES
-      ## replace -L by ; because the separator seems to be lost otherwise (bug or
-      ## feature?)
-      if(WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX)
-        string(REGEX REPLACE "[-][L]" ";" WXWINDOWS_LINK_DIRECTORIES ${WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX} )
-        # message("DBG  WXWINDOWS_LINK_DIRECTORIES=${WXWINDOWS_LINK_DIRECTORIES}")
-      endif()
-
-
-      ## replace space separated string by semicolon separated vector to make it
-      ## work with LINK_DIRECTORIES
-      separate_arguments(WXWINDOWS_LINK_DIRECTORIES)
-
-      mark_as_advanced(
-        CMAKE_WXWINDOWS_CXX_FLAGS
-        WXWINDOWS_INCLUDE_DIR
-        WXWINDOWS_LIBRARIES
-        CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE
-        )
-
-
-      ## we really need wx-config...
-    else()
-      message(STATUS "Cannot find wx-config anywhere on the system. Please put the file into your path or specify it in CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE.")
-      mark_as_advanced(CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE)
-    endif()
-
-
-
-  else()
-    message(STATUS "FindwxWindows.cmake:  Platform unknown/unsupported by FindwxWindows.cmake. It's neither WIN32 nor UNIX")
-  endif()
-endif()
-
-
-if(WXWINDOWS_LIBRARIES)
-  if(WXWINDOWS_INCLUDE_DIR OR CMAKE_WXWINDOWS_CXX_FLAGS)
-    ## found all we need.
-    set(WXWINDOWS_FOUND 1)
-
-    ## set deprecated variables for backward compatibility:
-    set(CMAKE_WX_CAN_COMPILE   ${WXWINDOWS_FOUND})
-    set(WXWINDOWS_LIBRARY     ${WXWINDOWS_LIBRARIES})
-    set(WXWINDOWS_INCLUDE_PATH ${WXWINDOWS_INCLUDE_DIR})
-    set(WXWINDOWS_LINK_DIRECTORIES ${WXWINDOWS_LINK_DIRECTORIES})
-    set(CMAKE_WX_CXX_FLAGS     ${CMAKE_WXWINDOWS_CXX_FLAGS})
-
-  endif()
-endif()
diff --git a/share/cmake-3.18/Modules/FortranCInterface.cmake b/share/cmake-3.18/Modules/FortranCInterface.cmake
deleted file mode 100644
index 547346b..0000000
--- a/share/cmake-3.18/Modules/FortranCInterface.cmake
+++ /dev/null
@@ -1,392 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-FortranCInterface
------------------
-
-Fortran/C Interface Detection
-
-This module automatically detects the API by which C and Fortran
-languages interact.
-
-Module Variables
-^^^^^^^^^^^^^^^^
-
-Variables that indicate if the mangling is found:
-
-``FortranCInterface_GLOBAL_FOUND``
-  Global subroutines and functions.
-
-``FortranCInterface_MODULE_FOUND``
-  Module subroutines and functions (declared by "MODULE PROCEDURE").
-
-This module also provides the following variables to specify
-the detected mangling, though a typical use case does not need
-to reference them and can use the `Module Functions`_ below.
-
-``FortranCInterface_GLOBAL_PREFIX``
-  Prefix for a global symbol without an underscore.
-
-``FortranCInterface_GLOBAL_SUFFIX``
-  Suffix for a global symbol without an underscore.
-
-``FortranCInterface_GLOBAL_CASE``
-  The case for a global symbol without an underscore,
-  either ``UPPER`` or ``LOWER``.
-
-``FortranCInterface_GLOBAL__PREFIX``
-  Prefix for a global symbol with an underscore.
-
-``FortranCInterface_GLOBAL__SUFFIX``
-  Suffix for a global symbol with an underscore.
-
-``FortranCInterface_GLOBAL__CASE``
-  The case for a global symbol with an underscore,
-  either ``UPPER`` or ``LOWER``.
-
-``FortranCInterface_MODULE_PREFIX``
-  Prefix for a module symbol without an underscore.
-
-``FortranCInterface_MODULE_MIDDLE``
-  Middle of a module symbol without an underscore that appears
-  between the name of the module and the name of the symbol.
-
-``FortranCInterface_MODULE_SUFFIX``
-  Suffix for a module symbol without an underscore.
-
-``FortranCInterface_MODULE_CASE``
-  The case for a module symbol without an underscore,
-  either ``UPPER`` or ``LOWER``.
-
-``FortranCInterface_MODULE__PREFIX``
-  Prefix for a module symbol with an underscore.
-
-``FortranCInterface_MODULE__MIDDLE``
-  Middle of a module symbol with an underscore that appears
-  between the name of the module and the name of the symbol.
-
-``FortranCInterface_MODULE__SUFFIX``
-  Suffix for a module symbol with an underscore.
-
-``FortranCInterface_MODULE__CASE``
-  The case for a module symbol with an underscore,
-  either ``UPPER`` or ``LOWER``.
-
-Module Functions
-^^^^^^^^^^^^^^^^
-
-.. command:: FortranCInterface_HEADER
-
-  The ``FortranCInterface_HEADER`` function is provided to generate a
-  C header file containing macros to mangle symbol names::
-
-    FortranCInterface_HEADER(<file>
-                             [MACRO_NAMESPACE <macro-ns>]
-                             [SYMBOL_NAMESPACE <ns>]
-                             [SYMBOLS [<module>:]<function> ...])
-
-  It generates in ``<file>`` definitions of the following macros::
-
-     #define FortranCInterface_GLOBAL (name,NAME) ...
-     #define FortranCInterface_GLOBAL_(name,NAME) ...
-     #define FortranCInterface_MODULE (mod,name, MOD,NAME) ...
-     #define FortranCInterface_MODULE_(mod,name, MOD,NAME) ...
-
-  These macros mangle four categories of Fortran symbols, respectively:
-
-  * Global symbols without '_': ``call mysub()``
-  * Global symbols with '_'   : ``call my_sub()``
-  * Module symbols without '_': ``use mymod; call mysub()``
-  * Module symbols with '_'   : ``use mymod; call my_sub()``
-
-  If mangling for a category is not known, its macro is left undefined.
-  All macros require raw names in both lower case and upper case.
-
-  The options are:
-
-  ``MACRO_NAMESPACE``
-    Replace the default ``FortranCInterface_`` prefix with a given
-    namespace ``<macro-ns>``.
-
-  ``SYMBOLS``
-    List symbols to mangle automatically with C preprocessor definitions::
-
-      <function>          ==> #define <ns><function> ...
-      <module>:<function> ==> #define <ns><module>_<function> ...
-
-    If the mangling for some symbol is not known then no preprocessor
-    definition is created, and a warning is displayed.
-
-  ``SYMBOL_NAMESPACE``
-    Prefix all preprocessor definitions generated by the ``SYMBOLS``
-    option with a given namespace ``<ns>``.
-
-.. command:: FortranCInterface_VERIFY
-
-  The ``FortranCInterface_VERIFY`` function is provided to verify
-  that the Fortran and C/C++ compilers work together::
-
-    FortranCInterface_VERIFY([CXX] [QUIET])
-
-  It tests whether a simple test executable using Fortran and C (and C++
-  when the CXX option is given) compiles and links successfully.  The
-  result is stored in the cache entry ``FortranCInterface_VERIFIED_C``
-  (or ``FortranCInterface_VERIFIED_CXX`` if ``CXX`` is given) as a boolean.
-  If the check fails and ``QUIET`` is not given the function terminates with a
-  fatal error message describing the problem.  The purpose of this check
-  is to stop a build early for incompatible compiler combinations.  The
-  test is built in the ``Release`` configuration.
-
-Example Usage
-^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-   include(FortranCInterface)
-   FortranCInterface_HEADER(FC.h MACRO_NAMESPACE "FC_")
-
-This creates a "FC.h" header that defines mangling macros ``FC_GLOBAL()``,
-``FC_GLOBAL_()``, ``FC_MODULE()``, and ``FC_MODULE_()``.
-
-.. code-block:: cmake
-
-   include(FortranCInterface)
-   FortranCInterface_HEADER(FCMangle.h
-                            MACRO_NAMESPACE "FC_"
-                            SYMBOL_NAMESPACE "FC_"
-                            SYMBOLS mysub mymod:my_sub)
-
-This creates a "FCMangle.h" header that defines the same ``FC_*()``
-mangling macros as the previous example plus preprocessor symbols
-``FC_mysub`` and ``FC_mymod_my_sub``.
-
-Additional Manglings
-^^^^^^^^^^^^^^^^^^^^
-
-FortranCInterface is aware of possible ``GLOBAL`` and ``MODULE`` manglings
-for many Fortran compilers, but it also provides an interface to specify
-new possible manglings.  Set the variables::
-
-   FortranCInterface_GLOBAL_SYMBOLS
-   FortranCInterface_MODULE_SYMBOLS
-
-before including FortranCInterface to specify manglings of the symbols
-``MySub``, ``My_Sub``, ``MyModule:MySub``, and ``My_Module:My_Sub``.
-For example, the code:
-
-.. code-block:: cmake
-
-   set(FortranCInterface_GLOBAL_SYMBOLS mysub_ my_sub__ MYSUB_)
-     #                                  ^^^^^  ^^^^^^   ^^^^^
-   set(FortranCInterface_MODULE_SYMBOLS
-       __mymodule_MOD_mysub __my_module_MOD_my_sub)
-     #   ^^^^^^^^     ^^^^^   ^^^^^^^^^     ^^^^^^
-   include(FortranCInterface)
-
-tells FortranCInterface to try given ``GLOBAL`` and ``MODULE`` manglings.
-(The carets point at raw symbol names for clarity in this example but
-are not needed.)
-#]=======================================================================]
-
-#-----------------------------------------------------------------------------
-# Execute at most once in a project.
-if(FortranCInterface_SOURCE_DIR)
-  return()
-endif()
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0007 NEW)
-
-#-----------------------------------------------------------------------------
-# Verify that C and Fortran are available.
-foreach(lang C Fortran)
-  if(NOT CMAKE_${lang}_COMPILER_LOADED)
-    message(FATAL_ERROR
-      "FortranCInterface requires the ${lang} language to be enabled.")
-  endif()
-endforeach()
-
-#-----------------------------------------------------------------------------
-set(FortranCInterface_SOURCE_DIR ${CMAKE_ROOT}/Modules/FortranCInterface)
-
-# MinGW's make tool does not always like () in the path
-if("${CMAKE_GENERATOR}" MATCHES "MinGW" AND
-    "${FortranCInterface_SOURCE_DIR}" MATCHES "[()]")
-  file(COPY ${FortranCInterface_SOURCE_DIR}/
-    DESTINATION ${CMAKE_BINARY_DIR}/CMakeFiles/FortranCInterfaceMinGW)
-  set(FortranCInterface_SOURCE_DIR ${CMAKE_BINARY_DIR}/CMakeFiles/FortranCInterfaceMinGW)
-endif()
-
-# Create the interface detection project if it does not exist.
-if(NOT FortranCInterface_BINARY_DIR)
-  set(FortranCInterface_BINARY_DIR ${CMAKE_BINARY_DIR}/CMakeFiles/FortranCInterface)
-  include(${FortranCInterface_SOURCE_DIR}/Detect.cmake)
-endif()
-
-# Load the detection results.
-include(${FortranCInterface_BINARY_DIR}/Output.cmake)
-
-#-----------------------------------------------------------------------------
-function(FortranCInterface_HEADER file)
-  # Parse arguments.
-  if(IS_ABSOLUTE "${file}")
-    set(FILE "${file}")
-  else()
-    set(FILE "${CMAKE_CURRENT_BINARY_DIR}/${file}")
-  endif()
-  set(MACRO_NAMESPACE "FortranCInterface_")
-  set(SYMBOL_NAMESPACE)
-  set(SYMBOLS)
-  set(doing)
-  foreach(arg ${ARGN})
-    if("x${arg}" MATCHES "^x(SYMBOLS|SYMBOL_NAMESPACE|MACRO_NAMESPACE)$")
-      set(doing "${arg}")
-    elseif("x${doing}" MATCHES "^x(SYMBOLS)$")
-      list(APPEND "${doing}" "${arg}")
-    elseif("x${doing}" MATCHES "^x(SYMBOL_NAMESPACE|MACRO_NAMESPACE)$")
-      set("${doing}" "${arg}")
-      set(doing)
-    else()
-      message(AUTHOR_WARNING "Unknown argument: \"${arg}\"")
-    endif()
-  endforeach()
-
-  # Generate macro definitions.
-  set(HEADER_CONTENT)
-  set(_desc_GLOBAL  "/* Mangling for Fortran global symbols without underscores. */")
-  set(_desc_GLOBAL_ "/* Mangling for Fortran global symbols with underscores. */")
-  set(_desc_MODULE  "/* Mangling for Fortran module symbols without underscores. */")
-  set(_desc_MODULE_ "/* Mangling for Fortran module symbols with underscores. */")
-  foreach(macro GLOBAL GLOBAL_ MODULE MODULE_)
-    if(FortranCInterface_${macro}_MACRO)
-      string(APPEND HEADER_CONTENT "
-${_desc_${macro}}
-#define ${MACRO_NAMESPACE}${macro}${FortranCInterface_${macro}_MACRO}
-")
-    endif()
-  endforeach()
-
-  # Generate symbol mangling definitions.
-  if(SYMBOLS)
-    string(APPEND HEADER_CONTENT "
-/*--------------------------------------------------------------------------*/
-/* Mangle some symbols automatically.                                       */
-")
-  endif()
-  foreach(f ${SYMBOLS})
-    if("${f}" MATCHES ":")
-      # Module symbol name.  Parse "<module>:<function>" syntax.
-      string(REPLACE ":" ";" pieces "${f}")
-      list(GET pieces 0 module)
-      list(GET pieces 1 function)
-      string(TOUPPER "${module}" m_upper)
-      string(TOLOWER "${module}" m_lower)
-      string(TOUPPER "${function}" f_upper)
-      string(TOLOWER "${function}" f_lower)
-      if("${function}" MATCHES "_")
-        set(form "_")
-      else()
-        set(form "")
-      endif()
-      if(FortranCInterface_MODULE${form}_MACRO)
-        string(APPEND HEADER_CONTENT "#define ${SYMBOL_NAMESPACE}${module}_${function} ${MACRO_NAMESPACE}MODULE${form}(${m_lower},${f_lower}, ${m_upper},${f_upper})\n")
-      else()
-        message(AUTHOR_WARNING "No FortranCInterface mangling known for ${f}")
-      endif()
-    else()
-      # Global symbol name.
-      if("${f}" MATCHES "_")
-        set(form "_")
-      else()
-        set(form "")
-      endif()
-      string(TOUPPER "${f}" f_upper)
-      string(TOLOWER "${f}" f_lower)
-      if(FortranCInterface_GLOBAL${form}_MACRO)
-        string(APPEND HEADER_CONTENT "#define ${SYMBOL_NAMESPACE}${f} ${MACRO_NAMESPACE}GLOBAL${form}(${f_lower}, ${f_upper})\n")
-      else()
-        message(AUTHOR_WARNING "No FortranCInterface mangling known for ${f}")
-      endif()
-    endif()
-  endforeach()
-
-  # Store the content.
-  configure_file(${FortranCInterface_SOURCE_DIR}/Macro.h.in ${FILE} @ONLY)
-endfunction()
-
-function(FortranCInterface_VERIFY)
-  # Check arguments.
-
-  set(lang C)
-  set(quiet 0)
-  set(verify_cxx 0)
-  foreach(arg ${ARGN})
-    if("${arg}" STREQUAL "QUIET")
-      set(quiet 1)
-    elseif("${arg}" STREQUAL "CXX")
-      set(lang CXX)
-      set(verify_cxx 1)
-    else()
-      message(FATAL_ERROR
-        "FortranCInterface_VERIFY - called with unknown argument:\n  ${arg}")
-    endif()
-  endforeach()
-
-  if(NOT CMAKE_${lang}_COMPILER_LOADED)
-    message(FATAL_ERROR
-      "FortranCInterface_VERIFY(${lang}) requires ${lang} to be enabled.")
-  endif()
-
-  # Build the verification project if not yet built.
-  if(NOT DEFINED FortranCInterface_VERIFIED_${lang})
-    set(_desc "Verifying Fortran/${lang} Compiler Compatibility")
-    message(CHECK_START "${_desc}")
-
-    # Build a sample project which reports symbols.
-    set(CMAKE_TRY_COMPILE_CONFIGURATION Release)
-    try_compile(FortranCInterface_VERIFY_${lang}_COMPILED
-      ${FortranCInterface_BINARY_DIR}/Verify${lang}
-      ${FortranCInterface_SOURCE_DIR}/Verify
-      VerifyFortranC # project name
-      VerifyFortranC # target name
-      CMAKE_FLAGS -DVERIFY_CXX=${verify_cxx}
-                  -DCMAKE_VERBOSE_MAKEFILE=ON
-                 "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS}"
-                 "-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS}"
-                 "-DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS}"
-                 "-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}"
-                 "-DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}"
-                 "-DCMAKE_Fortran_FLAGS_RELEASE:STRING=${CMAKE_Fortran_FLAGS_RELEASE}"
-      OUTPUT_VARIABLE _output)
-    file(WRITE "${FortranCInterface_BINARY_DIR}/Verify${lang}/output.txt" "${_output}")
-
-    # Report results.
-    if(FortranCInterface_VERIFY_${lang}_COMPILED)
-      message(CHECK_PASS "Success")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "${_desc} passed with the following output:\n${_output}\n\n")
-      set(FortranCInterface_VERIFIED_${lang} 1 CACHE INTERNAL "Fortran/${lang} compatibility")
-    else()
-      message(CHECK_FAIL "Failed")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "${_desc} failed with the following output:\n${_output}\n\n")
-      set(FortranCInterface_VERIFIED_${lang} 0 CACHE INTERNAL "Fortran/${lang} compatibility")
-    endif()
-    unset(FortranCInterface_VERIFY_${lang}_COMPILED CACHE)
-  endif()
-
-  # Error if compilers are incompatible.
-  if(NOT FortranCInterface_VERIFIED_${lang} AND NOT quiet)
-    file(READ "${FortranCInterface_BINARY_DIR}/Verify${lang}/output.txt" _output)
-    string(REPLACE "\n" "\n  " _output "${_output}")
-    message(FATAL_ERROR
-      "The Fortran compiler:\n  ${CMAKE_Fortran_COMPILER}\n"
-      "and the ${lang} compiler:\n  ${CMAKE_${lang}_COMPILER}\n"
-      "failed to compile a simple test project using both languages.  "
-      "The output was:\n  ${_output}")
-  endif()
-endfunction()
-
-# Restore including context policies.
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FortranCInterface/Detect.cmake b/share/cmake-3.18/Modules/FortranCInterface/Detect.cmake
deleted file mode 100644
index c75067b..0000000
--- a/share/cmake-3.18/Modules/FortranCInterface/Detect.cmake
+++ /dev/null
@@ -1,174 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-configure_file(${FortranCInterface_SOURCE_DIR}/Input.cmake.in
-               ${FortranCInterface_BINARY_DIR}/Input.cmake @ONLY)
-
-# Detect the Fortran/C interface on the first run or when the
-# configuration changes.
-if(${FortranCInterface_BINARY_DIR}/Input.cmake
-    IS_NEWER_THAN ${FortranCInterface_BINARY_DIR}/Output.cmake
-    OR ${FortranCInterface_SOURCE_DIR}/Output.cmake.in
-    IS_NEWER_THAN ${FortranCInterface_BINARY_DIR}/Output.cmake
-    OR ${FortranCInterface_SOURCE_DIR}/CMakeLists.txt
-    IS_NEWER_THAN ${FortranCInterface_BINARY_DIR}/Output.cmake
-    OR ${CMAKE_CURRENT_LIST_FILE}
-    IS_NEWER_THAN ${FortranCInterface_BINARY_DIR}/Output.cmake
-    )
-  message(CHECK_START "Detecting Fortran/C Interface")
-else()
-  return()
-endif()
-
-# Invalidate verification results.
-unset(FortranCInterface_VERIFIED_C CACHE)
-unset(FortranCInterface_VERIFIED_CXX CACHE)
-
-set(_result)
-
-# Build a sample project which reports symbols.
-set(CMAKE_TRY_COMPILE_CONFIGURATION Release)
-try_compile(FortranCInterface_COMPILED
-  ${FortranCInterface_BINARY_DIR}
-  ${FortranCInterface_SOURCE_DIR}
-  FortranCInterface # project name
-  FortranCInterface # target name
-  CMAKE_FLAGS
-    "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS}"
-    "-DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS}"
-    "-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}"
-    "-DCMAKE_Fortran_FLAGS_RELEASE:STRING=${CMAKE_Fortran_FLAGS_RELEASE}"
-  OUTPUT_VARIABLE FortranCInterface_OUTPUT)
-set(FortranCInterface_COMPILED ${FortranCInterface_COMPILED})
-unset(FortranCInterface_COMPILED CACHE)
-
-# Locate the sample project executable.
-set(FortranCInterface_EXE)
-if(FortranCInterface_COMPILED)
-  include(${FortranCInterface_BINARY_DIR}/exe-Release.cmake OPTIONAL)
-else()
-  set(_result "Failed to compile")
-  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-    "Fortran/C interface test project failed with the following output:\n"
-    "${FortranCInterface_OUTPUT}\n")
-endif()
-
-# Load symbols from INFO:symbol[] strings in the executable.
-set(FortranCInterface_SYMBOLS)
-if(FortranCInterface_EXE)
-  file(STRINGS "${FortranCInterface_EXE}" _info_strings
-    LIMIT_COUNT 8 REGEX "INFO:[A-Za-z0-9_]+\\[[^]]*\\]")
-  foreach(info ${_info_strings})
-    if("${info}" MATCHES "INFO:symbol\\[([^]]*)\\]")
-      list(APPEND FortranCInterface_SYMBOLS ${CMAKE_MATCH_1})
-    endif()
-  endforeach()
-elseif(NOT _result)
-  set(_result "Failed to load sample executable")
-endif()
-
-set(_case_mysub "LOWER")
-set(_case_my_sub "LOWER")
-set(_case_MYSUB "UPPER")
-set(_case_MY_SUB "UPPER")
-set(_global_regex  "^(_*)(mysub|MYSUB)([_$]*)$")
-set(_global__regex "^(_*)(my_sub|MY_SUB)([_$]*)$")
-set(_module_regex  "^(_*)(mymodule|MYMODULE)([A-Za-z_$]*)(mysub|MYSUB)([_$]*)$")
-set(_module__regex "^(_*)(my_module|MY_MODULE)([A-Za-z_$]*)(my_sub|MY_SUB)([_$]*)$")
-
-# Parse the symbol names.
-foreach(symbol ${FortranCInterface_SYMBOLS})
-  foreach(form "" "_")
-    # Look for global symbols.
-    string(REGEX REPLACE "${_global_${form}regex}"
-                         "\\1;\\2;\\3" pieces "${symbol}")
-    list(LENGTH pieces len)
-    if(len EQUAL 3)
-      set(FortranCInterface_GLOBAL_${form}SYMBOL "${symbol}")
-      list(GET pieces 0 FortranCInterface_GLOBAL_${form}PREFIX)
-      list(GET pieces 1 name)
-      list(GET pieces 2 FortranCInterface_GLOBAL_${form}SUFFIX)
-      set(FortranCInterface_GLOBAL_${form}CASE "${_case_${name}}")
-    endif()
-
-    # Look for module symbols.
-    string(REGEX REPLACE "${_module_${form}regex}"
-                         "\\1;\\2;\\3;\\4;\\5" pieces "${symbol}")
-    list(LENGTH pieces len)
-    if(len EQUAL 5)
-      set(FortranCInterface_MODULE_${form}SYMBOL "${symbol}")
-      list(GET pieces 0 FortranCInterface_MODULE_${form}PREFIX)
-      list(GET pieces 1 module)
-      list(GET pieces 2 FortranCInterface_MODULE_${form}MIDDLE)
-      list(GET pieces 3 name)
-      list(GET pieces 4 FortranCInterface_MODULE_${form}SUFFIX)
-      set(FortranCInterface_MODULE_${form}CASE "${_case_${name}}")
-    endif()
-  endforeach()
-endforeach()
-
-# Construct mangling macro definitions.
-set(_name_LOWER "name")
-set(_name_UPPER "NAME")
-foreach(form "" "_")
-  if(FortranCInterface_GLOBAL_${form}SYMBOL)
-    if(FortranCInterface_GLOBAL_${form}PREFIX)
-      set(_prefix "${FortranCInterface_GLOBAL_${form}PREFIX}##")
-    else()
-      set(_prefix "")
-    endif()
-    if(FortranCInterface_GLOBAL_${form}SUFFIX)
-      set(_suffix "##${FortranCInterface_GLOBAL_${form}SUFFIX}")
-    else()
-      set(_suffix "")
-    endif()
-    set(_name "${_name_${FortranCInterface_GLOBAL_${form}CASE}}")
-    set(FortranCInterface_GLOBAL${form}_MACRO
-      "(name,NAME) ${_prefix}${_name}${_suffix}")
-  endif()
-  if(FortranCInterface_MODULE_${form}SYMBOL)
-    if(FortranCInterface_MODULE_${form}PREFIX)
-      set(_prefix "${FortranCInterface_MODULE_${form}PREFIX}##")
-    else()
-      set(_prefix "")
-    endif()
-    if(FortranCInterface_MODULE_${form}SUFFIX)
-      set(_suffix "##${FortranCInterface_MODULE_${form}SUFFIX}")
-    else()
-      set(_suffix "")
-    endif()
-    set(_name "${_name_${FortranCInterface_MODULE_${form}CASE}}")
-    set(_middle "##${FortranCInterface_MODULE_${form}MIDDLE}##")
-    set(FortranCInterface_MODULE${form}_MACRO
-      "(mod_name,name, mod_NAME,NAME) ${_prefix}mod_${_name}${_middle}${_name}${_suffix}")
-  endif()
-endforeach()
-
-# Summarize what is available.
-foreach(scope GLOBAL MODULE)
-  if(FortranCInterface_${scope}_SYMBOL AND
-      FortranCInterface_${scope}__SYMBOL)
-    set(FortranCInterface_${scope}_FOUND 1)
-  else()
-    set(FortranCInterface_${scope}_FOUND 0)
-  endif()
-endforeach()
-
-# Record the detection results.
-configure_file(${FortranCInterface_SOURCE_DIR}/Output.cmake.in
-               ${FortranCInterface_BINARY_DIR}/Output.cmake @ONLY)
-file(APPEND ${FortranCInterface_BINARY_DIR}/Output.cmake "\n")
-
-# Report the results.
-if(FortranCInterface_GLOBAL_FOUND)
-  if(FortranCInterface_MODULE_FOUND)
-    set(_result "Found GLOBAL and MODULE mangling")
-  else()
-    set(_result "Found GLOBAL but not MODULE mangling")
-  endif()
-  set(_result_type CHECK_PASS)
-elseif(NOT _result)
-  set(_result "Failed to recognize symbols")
-  set(_result_type CHECK_FAIL)
-endif()
-message(${_result_type} "${_result}")
diff --git a/share/cmake-3.18/Modules/GNUInstallDirs.cmake b/share/cmake-3.18/Modules/GNUInstallDirs.cmake
deleted file mode 100644
index 9ef22b9..0000000
--- a/share/cmake-3.18/Modules/GNUInstallDirs.cmake
+++ /dev/null
@@ -1,383 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-GNUInstallDirs
---------------
-
-Define GNU standard installation directories
-
-Provides install directory variables as defined by the
-`GNU Coding Standards`_.
-
-.. _`GNU Coding Standards`: https://www.gnu.org/prep/standards/html_node/Directory-Variables.html
-
-Result Variables
-^^^^^^^^^^^^^^^^
-
-Inclusion of this module defines the following variables:
-
-``CMAKE_INSTALL_<dir>``
-
-  Destination for files of a given type.  This value may be passed to
-  the ``DESTINATION`` options of :command:`install` commands for the
-  corresponding file type.
-
-``CMAKE_INSTALL_FULL_<dir>``
-
-  The absolute path generated from the corresponding ``CMAKE_INSTALL_<dir>``
-  value.  If the value is not already an absolute path, an absolute path
-  is constructed typically by prepending the value of the
-  :variable:`CMAKE_INSTALL_PREFIX` variable.  However, there are some
-  `special cases`_ as documented below.
-
-where ``<dir>`` is one of:
-
-``BINDIR``
-  user executables (``bin``)
-``SBINDIR``
-  system admin executables (``sbin``)
-``LIBEXECDIR``
-  program executables (``libexec``)
-``SYSCONFDIR``
-  read-only single-machine data (``etc``)
-``SHAREDSTATEDIR``
-  modifiable architecture-independent data (``com``)
-``LOCALSTATEDIR``
-  modifiable single-machine data (``var``)
-``RUNSTATEDIR``
-  run-time variable data (``LOCALSTATEDIR/run``)
-``LIBDIR``
-  object code libraries (``lib`` or ``lib64``
-  or ``lib/<multiarch-tuple>`` on Debian)
-``INCLUDEDIR``
-  C header files (``include``)
-``OLDINCLUDEDIR``
-  C header files for non-gcc (``/usr/include``)
-``DATAROOTDIR``
-  read-only architecture-independent data root (``share``)
-``DATADIR``
-  read-only architecture-independent data (``DATAROOTDIR``)
-``INFODIR``
-  info documentation (``DATAROOTDIR/info``)
-``LOCALEDIR``
-  locale-dependent data (``DATAROOTDIR/locale``)
-``MANDIR``
-  man documentation (``DATAROOTDIR/man``)
-``DOCDIR``
-  documentation root (``DATAROOTDIR/doc/PROJECT_NAME``)
-
-If the includer does not define a value the above-shown default will be
-used and the value will appear in the cache for editing by the user.
-
-Special Cases
-^^^^^^^^^^^^^
-
-The following values of :variable:`CMAKE_INSTALL_PREFIX` are special:
-
-``/``
-
-  For ``<dir>`` other than the ``SYSCONFDIR``, ``LOCALSTATEDIR`` and
-  ``RUNSTATEDIR``, the value of ``CMAKE_INSTALL_<dir>`` is prefixed
-  with ``usr/`` if it is not user-specified as an absolute path.
-  For example, the ``INCLUDEDIR`` value ``include`` becomes ``usr/include``.
-  This is required by the `GNU Coding Standards`_, which state:
-
-    When building the complete GNU system, the prefix will be empty
-    and ``/usr`` will be a symbolic link to ``/``.
-
-``/usr``
-
-  For ``<dir>`` equal to ``SYSCONFDIR``, ``LOCALSTATEDIR`` or
-  ``RUNSTATEDIR``, the ``CMAKE_INSTALL_FULL_<dir>`` is computed by
-  prepending just ``/`` to the value of ``CMAKE_INSTALL_<dir>``
-  if it is not user-specified as an absolute path.
-  For example, the ``SYSCONFDIR`` value ``etc`` becomes ``/etc``.
-  This is required by the `GNU Coding Standards`_.
-
-``/opt/...``
-
-  For ``<dir>`` equal to ``SYSCONFDIR``, ``LOCALSTATEDIR`` or
-  ``RUNSTATEDIR``, the ``CMAKE_INSTALL_FULL_<dir>`` is computed by
-  *appending* the prefix to the value of ``CMAKE_INSTALL_<dir>``
-  if it is not user-specified as an absolute path.
-  For example, the ``SYSCONFDIR`` value ``etc`` becomes ``/etc/opt/...``.
-  This is defined by the `Filesystem Hierarchy Standard`_.
-
-.. _`Filesystem Hierarchy Standard`: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
-
-Macros
-^^^^^^
-
-.. command:: GNUInstallDirs_get_absolute_install_dir
-
-  ::
-
-    GNUInstallDirs_get_absolute_install_dir(absvar var)
-
-  Set the given variable ``absvar`` to the absolute path contained
-  within the variable ``var``.  This is to allow the computation of an
-  absolute path, accounting for all the special cases documented
-  above.  While this macro is used to compute the various
-  ``CMAKE_INSTALL_FULL_<dir>`` variables, it is exposed publicly to
-  allow users who create additional path variables to also compute
-  absolute paths where necessary, using the same logic.
-#]=======================================================================]
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced
-
-# Convert a cache variable to PATH type
-
-macro(_GNUInstallDirs_cache_convert_to_path var description)
-  get_property(_GNUInstallDirs_cache_type CACHE ${var} PROPERTY TYPE)
-  if(_GNUInstallDirs_cache_type STREQUAL "UNINITIALIZED")
-    file(TO_CMAKE_PATH "${${var}}" _GNUInstallDirs_cmakepath)
-    set_property(CACHE ${var} PROPERTY TYPE PATH)
-    set_property(CACHE ${var} PROPERTY VALUE "${_GNUInstallDirs_cmakepath}")
-    set_property(CACHE ${var} PROPERTY HELPSTRING "${description}")
-    unset(_GNUInstallDirs_cmakepath)
-  endif()
-  unset(_GNUInstallDirs_cache_type)
-endmacro()
-
-# Create a cache variable with default for a path.
-macro(_GNUInstallDirs_cache_path var default description)
-  if(NOT DEFINED ${var})
-    set(${var} "${default}" CACHE PATH "${description}")
-  endif()
-  _GNUInstallDirs_cache_convert_to_path("${var}" "${description}")
-endmacro()
-
-# Create a cache variable with not default for a path, with a fallback
-# when unset; used for entries slaved to other entries such as
-# DATAROOTDIR.
-macro(_GNUInstallDirs_cache_path_fallback var default description)
-  if(NOT ${var})
-    set(${var} "" CACHE PATH "${description}")
-    set(${var} "${default}")
-  endif()
-  _GNUInstallDirs_cache_convert_to_path("${var}" "${description}")
-endmacro()
-
-# Installation directories
-#
-
-_GNUInstallDirs_cache_path(CMAKE_INSTALL_BINDIR "bin"
-  "User executables (bin)")
-_GNUInstallDirs_cache_path(CMAKE_INSTALL_SBINDIR "sbin"
-  "System admin executables (sbin)")
-_GNUInstallDirs_cache_path(CMAKE_INSTALL_LIBEXECDIR "libexec"
-  "Program executables (libexec)")
-_GNUInstallDirs_cache_path(CMAKE_INSTALL_SYSCONFDIR "etc"
-  "Read-only single-machine data (etc)")
-_GNUInstallDirs_cache_path(CMAKE_INSTALL_SHAREDSTATEDIR "com"
-  "Modifiable architecture-independent data (com)")
-_GNUInstallDirs_cache_path(CMAKE_INSTALL_LOCALSTATEDIR "var"
-  "Modifiable single-machine data (var)")
-
-# We check if the variable was manually set and not cached, in order to
-# allow projects to set the values as normal variables before including
-# GNUInstallDirs to avoid having the entries cached or user-editable. It
-# replaces the "if(NOT DEFINED CMAKE_INSTALL_XXX)" checks in all the
-# other cases.
-# If CMAKE_INSTALL_LIBDIR is defined, if _libdir_set is false, then the
-# variable is a normal one, otherwise it is a cache one.
-get_property(_libdir_set CACHE CMAKE_INSTALL_LIBDIR PROPERTY TYPE SET)
-if(NOT DEFINED CMAKE_INSTALL_LIBDIR OR (_libdir_set
-    AND DEFINED _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX
-    AND NOT "${_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX}" STREQUAL "${CMAKE_INSTALL_PREFIX}"))
-  # If CMAKE_INSTALL_LIBDIR is not defined, it is always executed.
-  # Otherwise:
-  #  * if _libdir_set is false it is not executed (meaning that it is
-  #    not a cache variable)
-  #  * if _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX is not defined it is
-  #    not executed
-  #  * if _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX and
-  #    CMAKE_INSTALL_PREFIX are the same string it is not executed.
-  #    _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX is updated after the
-  #    execution, of this part of code, therefore at the next inclusion
-  #    of the file, CMAKE_INSTALL_LIBDIR is defined, and the 2 strings
-  #    are equal, meaning that the if is not executed the code the
-  #    second time.
-
-  set(_LIBDIR_DEFAULT "lib")
-  # Override this default 'lib' with 'lib64' iff:
-  #  - we are on Linux system but NOT cross-compiling
-  #  - we are NOT on debian
-  #  - we are on a 64 bits system
-  # reason is: amd64 ABI: https://github.com/hjl-tools/x86-psABI/wiki/X86-psABI
-  # For Debian with multiarch, use 'lib/${CMAKE_LIBRARY_ARCHITECTURE}' if
-  # CMAKE_LIBRARY_ARCHITECTURE is set (which contains e.g. "i386-linux-gnu"
-  # and CMAKE_INSTALL_PREFIX is "/usr"
-  # See http://wiki.debian.org/Multiarch
-  if(DEFINED _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX)
-    set(__LAST_LIBDIR_DEFAULT "lib")
-    # __LAST_LIBDIR_DEFAULT is the default value that we compute from
-    # _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX, not a cache entry for
-    # the value that was last used as the default.
-    # This value is used to figure out whether the user changed the
-    # CMAKE_INSTALL_LIBDIR value manually, or if the value was the
-    # default one. When CMAKE_INSTALL_PREFIX changes, the value is
-    # updated to the new default, unless the user explicitly changed it.
-  endif()
-  if (NOT DEFINED CMAKE_SYSTEM_NAME OR NOT DEFINED CMAKE_SIZEOF_VOID_P)
-    message(AUTHOR_WARNING
-      "Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. "
-      "Please enable at least one language before including GNUInstallDirs.")
-  endif()
-  if(CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU)$"
-      AND NOT CMAKE_CROSSCOMPILING
-      AND NOT EXISTS "/etc/arch-release")
-    if (EXISTS "/etc/debian_version") # is this a debian system ?
-      if(CMAKE_LIBRARY_ARCHITECTURE)
-        if("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$")
-          set(_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
-        endif()
-        if(DEFINED _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX
-            AND "${_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$")
-          set(__LAST_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
-        endif()
-      endif()
-    else() # not debian, rely on CMAKE_SIZEOF_VOID_P:
-      if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
-        set(_LIBDIR_DEFAULT "lib64")
-        if(DEFINED _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX)
-          set(__LAST_LIBDIR_DEFAULT "lib64")
-        endif()
-      endif()
-    endif()
-  endif()
-  if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
-    set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "Object code libraries (${_LIBDIR_DEFAULT})")
-  elseif(DEFINED __LAST_LIBDIR_DEFAULT
-      AND "${__LAST_LIBDIR_DEFAULT}" STREQUAL "${CMAKE_INSTALL_LIBDIR}")
-    set_property(CACHE CMAKE_INSTALL_LIBDIR PROPERTY VALUE "${_LIBDIR_DEFAULT}")
-  endif()
-endif()
-_GNUInstallDirs_cache_convert_to_path(CMAKE_INSTALL_LIBDIR "Object code libraries (lib)")
-
-# Save for next run
-set(_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE INTERNAL "CMAKE_INSTALL_PREFIX during last run")
-unset(_libdir_set)
-unset(__LAST_LIBDIR_DEFAULT)
-
-_GNUInstallDirs_cache_path(CMAKE_INSTALL_INCLUDEDIR "include"
-  "C header files (include)")
-_GNUInstallDirs_cache_path(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include"
-  "C header files for non-gcc (/usr/include)")
-_GNUInstallDirs_cache_path(CMAKE_INSTALL_DATAROOTDIR "share"
-  "Read-only architecture-independent data root (share)")
-
-#-----------------------------------------------------------------------------
-# Values whose defaults are relative to DATAROOTDIR.  Store empty values in
-# the cache and store the defaults in local variables if the cache values are
-# not set explicitly.  This auto-updates the defaults as DATAROOTDIR changes.
-
-_GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}"
-  "Read-only architecture-independent data (DATAROOTDIR)")
-
-if(CMAKE_SYSTEM_NAME MATCHES "^(([^kF].*)?BSD|DragonFly)$")
-  _GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_INFODIR "info"
-    "Info documentation (info)")
-else()
-  _GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info"
-    "Info documentation (DATAROOTDIR/info)")
-endif()
-
-if(CMAKE_SYSTEM_NAME MATCHES "^(([^k].*)?BSD|DragonFly)$")
-  _GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_MANDIR "man"
-    "Man documentation (man)")
-else()
-  _GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man"
-    "Man documentation (DATAROOTDIR/man)")
-endif()
-
-_GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale"
-  "Locale-dependent data (DATAROOTDIR/locale)")
-_GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}"
-  "Documentation root (DATAROOTDIR/doc/PROJECT_NAME)")
-
-_GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_RUNSTATEDIR "${CMAKE_INSTALL_LOCALSTATEDIR}/run"
-  "Run-time variable data (LOCALSTATEDIR/run)")
-
-#-----------------------------------------------------------------------------
-
-mark_as_advanced(
-  CMAKE_INSTALL_BINDIR
-  CMAKE_INSTALL_SBINDIR
-  CMAKE_INSTALL_LIBEXECDIR
-  CMAKE_INSTALL_SYSCONFDIR
-  CMAKE_INSTALL_SHAREDSTATEDIR
-  CMAKE_INSTALL_LOCALSTATEDIR
-  CMAKE_INSTALL_RUNSTATEDIR
-  CMAKE_INSTALL_LIBDIR
-  CMAKE_INSTALL_INCLUDEDIR
-  CMAKE_INSTALL_OLDINCLUDEDIR
-  CMAKE_INSTALL_DATAROOTDIR
-  CMAKE_INSTALL_DATADIR
-  CMAKE_INSTALL_INFODIR
-  CMAKE_INSTALL_LOCALEDIR
-  CMAKE_INSTALL_MANDIR
-  CMAKE_INSTALL_DOCDIR
-  )
-
-macro(GNUInstallDirs_get_absolute_install_dir absvar var)
-  if(NOT IS_ABSOLUTE "${${var}}")
-    # Handle special cases:
-    # - CMAKE_INSTALL_PREFIX == /
-    # - CMAKE_INSTALL_PREFIX == /usr
-    # - CMAKE_INSTALL_PREFIX == /opt/...
-    if("${CMAKE_INSTALL_PREFIX}" STREQUAL "/")
-      if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR" OR "${dir}" STREQUAL "RUNSTATEDIR")
-        set(${absvar} "/${${var}}")
-      else()
-        if (NOT "${${var}}" MATCHES "^usr/")
-          set(${var} "usr/${${var}}")
-        endif()
-        set(${absvar} "/${${var}}")
-      endif()
-    elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$")
-      if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR" OR "${dir}" STREQUAL "RUNSTATEDIR")
-        set(${absvar} "/${${var}}")
-      else()
-        set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
-      endif()
-    elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/opt/.*")
-      if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR" OR "${dir}" STREQUAL "RUNSTATEDIR")
-        set(${absvar} "/${${var}}${CMAKE_INSTALL_PREFIX}")
-      else()
-        set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
-      endif()
-    else()
-      set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
-    endif()
-  else()
-    set(${absvar} "${${var}}")
-  endif()
-endmacro()
-
-# Result directories
-#
-foreach(dir
-    BINDIR
-    SBINDIR
-    LIBEXECDIR
-    SYSCONFDIR
-    SHAREDSTATEDIR
-    LOCALSTATEDIR
-    RUNSTATEDIR
-    LIBDIR
-    INCLUDEDIR
-    OLDINCLUDEDIR
-    DATAROOTDIR
-    DATADIR
-    INFODIR
-    LOCALEDIR
-    MANDIR
-    DOCDIR
-    )
-  GNUInstallDirs_get_absolute_install_dir(CMAKE_INSTALL_FULL_${dir} CMAKE_INSTALL_${dir})
-endforeach()
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/GenerateExportHeader.cmake b/share/cmake-3.18/Modules/GenerateExportHeader.cmake
deleted file mode 100644
index e4481f6..0000000
--- a/share/cmake-3.18/Modules/GenerateExportHeader.cmake
+++ /dev/null
@@ -1,443 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-GenerateExportHeader
---------------------
-
-Function for generation of export macros for libraries
-
-This module provides the function ``GENERATE_EXPORT_HEADER()``.
-
-The ``GENERATE_EXPORT_HEADER`` function can be used to generate a file
-suitable for preprocessor inclusion which contains EXPORT macros to be
-used in library classes::
-
-   GENERATE_EXPORT_HEADER( LIBRARY_TARGET
-             [BASE_NAME <base_name>]
-             [EXPORT_MACRO_NAME <export_macro_name>]
-             [EXPORT_FILE_NAME <export_file_name>]
-             [DEPRECATED_MACRO_NAME <deprecated_macro_name>]
-             [NO_EXPORT_MACRO_NAME <no_export_macro_name>]
-             [INCLUDE_GUARD_NAME <include_guard_name>]
-             [STATIC_DEFINE <static_define>]
-             [NO_DEPRECATED_MACRO_NAME <no_deprecated_macro_name>]
-             [DEFINE_NO_DEPRECATED]
-             [PREFIX_NAME <prefix_name>]
-             [CUSTOM_CONTENT_FROM_VARIABLE <variable>]
-   )
-
-
-The target properties :prop_tgt:`CXX_VISIBILITY_PRESET <<LANG>_VISIBILITY_PRESET>`
-and :prop_tgt:`VISIBILITY_INLINES_HIDDEN` can be used to add the appropriate
-compile flags for targets.  See the documentation of those target properties,
-and the convenience variables
-:variable:`CMAKE_CXX_VISIBILITY_PRESET <CMAKE_<LANG>_VISIBILITY_PRESET>` and
-:variable:`CMAKE_VISIBILITY_INLINES_HIDDEN`.
-
-By default ``GENERATE_EXPORT_HEADER()`` generates macro names in a file
-name determined by the name of the library.  This means that in the
-simplest case, users of ``GenerateExportHeader`` will be equivalent to:
-
-.. code-block:: cmake
-
-   set(CMAKE_CXX_VISIBILITY_PRESET hidden)
-   set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
-   add_library(somelib someclass.cpp)
-   generate_export_header(somelib)
-   install(TARGETS somelib DESTINATION ${LIBRARY_INSTALL_DIR})
-   install(FILES
-    someclass.h
-    ${PROJECT_BINARY_DIR}/somelib_export.h DESTINATION ${INCLUDE_INSTALL_DIR}
-   )
-
-
-And in the ABI header files:
-
-.. code-block:: c++
-
-   #include "somelib_export.h"
-   class SOMELIB_EXPORT SomeClass {
-     ...
-   };
-
-
-The CMake fragment will generate a file in the
-``${CMAKE_CURRENT_BINARY_DIR}`` called ``somelib_export.h`` containing the
-macros ``SOMELIB_EXPORT``, ``SOMELIB_NO_EXPORT``, ``SOMELIB_DEPRECATED``,
-``SOMELIB_DEPRECATED_EXPORT`` and ``SOMELIB_DEPRECATED_NO_EXPORT``.
-They will be followed by content taken from the variable specified by
-the ``CUSTOM_CONTENT_FROM_VARIABLE`` option, if any.
-The resulting file should be installed with other headers in the library.
-
-The ``BASE_NAME`` argument can be used to override the file name and the
-names used for the macros:
-
-.. code-block:: cmake
-
-   add_library(somelib someclass.cpp)
-   generate_export_header(somelib
-     BASE_NAME other_name
-   )
-
-
-Generates a file called ``other_name_export.h`` containing the macros
-``OTHER_NAME_EXPORT``, ``OTHER_NAME_NO_EXPORT`` and ``OTHER_NAME_DEPRECATED``
-etc.
-
-The ``BASE_NAME`` may be overridden by specifying other options in the
-function.  For example:
-
-.. code-block:: cmake
-
-   add_library(somelib someclass.cpp)
-   generate_export_header(somelib
-     EXPORT_MACRO_NAME OTHER_NAME_EXPORT
-   )
-
-
-creates the macro ``OTHER_NAME_EXPORT`` instead of ``SOMELIB_EXPORT``, but
-other macros and the generated file name is as default:
-
-.. code-block:: cmake
-
-   add_library(somelib someclass.cpp)
-   generate_export_header(somelib
-     DEPRECATED_MACRO_NAME KDE_DEPRECATED
-   )
-
-
-creates the macro ``KDE_DEPRECATED`` instead of ``SOMELIB_DEPRECATED``.
-
-If ``LIBRARY_TARGET`` is a static library, macros are defined without
-values.
-
-If the same sources are used to create both a shared and a static
-library, the uppercased symbol ``${BASE_NAME}_STATIC_DEFINE`` should be
-used when building the static library:
-
-.. code-block:: cmake
-
-   add_library(shared_variant SHARED ${lib_SRCS})
-   add_library(static_variant ${lib_SRCS})
-   generate_export_header(shared_variant BASE_NAME libshared_and_static)
-   set_target_properties(static_variant PROPERTIES
-     COMPILE_FLAGS -DLIBSHARED_AND_STATIC_STATIC_DEFINE)
-
-This will cause the export macros to expand to nothing when building
-the static library.
-
-If ``DEFINE_NO_DEPRECATED`` is specified, then a macro
-``${BASE_NAME}_NO_DEPRECATED`` will be defined This macro can be used to
-remove deprecated code from preprocessor output:
-
-.. code-block:: cmake
-
-   option(EXCLUDE_DEPRECATED "Exclude deprecated parts of the library" FALSE)
-   if (EXCLUDE_DEPRECATED)
-     set(NO_BUILD_DEPRECATED DEFINE_NO_DEPRECATED)
-   endif()
-   generate_export_header(somelib ${NO_BUILD_DEPRECATED})
-
-
-And then in somelib:
-
-.. code-block:: c++
-
-   class SOMELIB_EXPORT SomeClass
-   {
-   public:
-   #ifndef SOMELIB_NO_DEPRECATED
-     SOMELIB_DEPRECATED void oldMethod();
-   #endif
-   };
-
-.. code-block:: c++
-
-   #ifndef SOMELIB_NO_DEPRECATED
-   void SomeClass::oldMethod() {  }
-   #endif
-
-
-If ``PREFIX_NAME`` is specified, the argument will be used as a prefix to
-all generated macros.
-
-For example:
-
-.. code-block:: cmake
-
-   generate_export_header(somelib PREFIX_NAME VTK_)
-
-Generates the macros ``VTK_SOMELIB_EXPORT`` etc.
-
-::
-
-   ADD_COMPILER_EXPORT_FLAGS( [<output_variable>] )
-
-The ``ADD_COMPILER_EXPORT_FLAGS`` function adds ``-fvisibility=hidden`` to
-:variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>` if supported, and is a no-op
-on Windows which does not need extra compiler flags for exporting support.
-You may optionally pass a single argument to ``ADD_COMPILER_EXPORT_FLAGS``
-that will be populated with the ``CXX_FLAGS`` required to enable visibility
-support for the compiler/architecture in use.
-
-This function is deprecated.  Set the target properties
-:prop_tgt:`CXX_VISIBILITY_PRESET <<LANG>_VISIBILITY_PRESET>` and
-:prop_tgt:`VISIBILITY_INLINES_HIDDEN` instead.
-#]=======================================================================]
-
-include(CheckCCompilerFlag)
-include(CheckCXXCompilerFlag)
-
-# TODO: Install this macro separately?
-macro(_check_cxx_compiler_attribute _ATTRIBUTE _RESULT)
-  check_cxx_source_compiles("${_ATTRIBUTE} int somefunc() { return 0; }
-    int main() { return somefunc();}" ${_RESULT}
-  )
-endmacro()
-
-# TODO: Install this macro separately?
-macro(_check_c_compiler_attribute _ATTRIBUTE _RESULT)
-  check_c_source_compiles("${_ATTRIBUTE} int somefunc() { return 0; }
-    int main() { return somefunc();}" ${_RESULT}
-  )
-endmacro()
-
-macro(_test_compiler_hidden_visibility)
-
-  if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.2")
-    set(GCC_TOO_OLD TRUE)
-  elseif(CMAKE_COMPILER_IS_GNUCC AND CMAKE_C_COMPILER_VERSION VERSION_LESS "4.2")
-    set(GCC_TOO_OLD TRUE)
-  elseif(CMAKE_CXX_COMPILER_ID MATCHES Intel AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "12.0")
-    set(_INTEL_TOO_OLD TRUE)
-  endif()
-
-  # Exclude XL here because it misinterprets -fvisibility=hidden even though
-  # the check_cxx_compiler_flag passes
-  if(NOT GCC_TOO_OLD
-      AND NOT _INTEL_TOO_OLD
-      AND NOT WIN32
-      AND NOT CYGWIN
-      AND NOT CMAKE_CXX_COMPILER_ID MATCHES XL
-      AND NOT CMAKE_CXX_COMPILER_ID MATCHES PGI
-      AND NOT CMAKE_CXX_COMPILER_ID MATCHES Watcom)
-    if (CMAKE_CXX_COMPILER_LOADED)
-      check_cxx_compiler_flag(-fvisibility=hidden COMPILER_HAS_HIDDEN_VISIBILITY)
-      check_cxx_compiler_flag(-fvisibility-inlines-hidden
-        COMPILER_HAS_HIDDEN_INLINE_VISIBILITY)
-    else()
-      check_c_compiler_flag(-fvisibility=hidden COMPILER_HAS_HIDDEN_VISIBILITY)
-      check_c_compiler_flag(-fvisibility-inlines-hidden
-        COMPILER_HAS_HIDDEN_INLINE_VISIBILITY)
-    endif()
-  endif()
-endmacro()
-
-macro(_test_compiler_has_deprecated)
-  # NOTE:  Some Embarcadero compilers silently compile __declspec(deprecated)
-  # without error, but this is not a documented feature and the attribute does
-  # not actually generate any warnings.
-  if(CMAKE_CXX_COMPILER_ID MATCHES Borland
-      OR CMAKE_CXX_COMPILER_ID MATCHES Embarcadero
-      OR CMAKE_CXX_COMPILER_ID MATCHES HP
-      OR GCC_TOO_OLD
-      OR CMAKE_CXX_COMPILER_ID MATCHES PGI
-      OR CMAKE_CXX_COMPILER_ID MATCHES Watcom)
-    set(COMPILER_HAS_DEPRECATED "" CACHE INTERNAL
-      "Compiler support for a deprecated attribute")
-  else()
-    if (CMAKE_CXX_COMPILER_LOADED)
-      _check_cxx_compiler_attribute("__attribute__((__deprecated__))"
-        COMPILER_HAS_DEPRECATED_ATTR)
-      if(COMPILER_HAS_DEPRECATED_ATTR)
-        set(COMPILER_HAS_DEPRECATED "${COMPILER_HAS_DEPRECATED_ATTR}"
-          CACHE INTERNAL "Compiler support for a deprecated attribute")
-      else()
-        _check_cxx_compiler_attribute("__declspec(deprecated)"
-          COMPILER_HAS_DEPRECATED)
-      endif()
-    else()
-      _check_c_compiler_attribute("__attribute__((__deprecated__))"
-        COMPILER_HAS_DEPRECATED_ATTR)
-      if(COMPILER_HAS_DEPRECATED_ATTR)
-        set(COMPILER_HAS_DEPRECATED "${COMPILER_HAS_DEPRECATED_ATTR}"
-          CACHE INTERNAL "Compiler support for a deprecated attribute")
-      else()
-        _check_c_compiler_attribute("__declspec(deprecated)"
-          COMPILER_HAS_DEPRECATED)
-      endif()
-
-    endif()
-  endif()
-endmacro()
-
-get_filename_component(_GENERATE_EXPORT_HEADER_MODULE_DIR
-  "${CMAKE_CURRENT_LIST_FILE}" PATH)
-
-macro(_DO_SET_MACRO_VALUES TARGET_LIBRARY)
-  set(DEFINE_DEPRECATED)
-  set(DEFINE_EXPORT)
-  set(DEFINE_IMPORT)
-  set(DEFINE_NO_EXPORT)
-
-  if (COMPILER_HAS_DEPRECATED_ATTR)
-    set(DEFINE_DEPRECATED "__attribute__ ((__deprecated__))")
-  elseif(COMPILER_HAS_DEPRECATED)
-    set(DEFINE_DEPRECATED "__declspec(deprecated)")
-  endif()
-
-  get_property(type TARGET ${TARGET_LIBRARY} PROPERTY TYPE)
-
-  if(NOT ${type} STREQUAL "STATIC_LIBRARY")
-    if(WIN32 OR CYGWIN)
-      set(DEFINE_EXPORT "__declspec(dllexport)")
-      set(DEFINE_IMPORT "__declspec(dllimport)")
-    elseif(COMPILER_HAS_HIDDEN_VISIBILITY)
-      set(DEFINE_EXPORT "__attribute__((visibility(\"default\")))")
-      set(DEFINE_IMPORT "__attribute__((visibility(\"default\")))")
-      set(DEFINE_NO_EXPORT "__attribute__((visibility(\"hidden\")))")
-    endif()
-  endif()
-endmacro()
-
-macro(_DO_GENERATE_EXPORT_HEADER TARGET_LIBRARY)
-  # Option overrides
-  set(options DEFINE_NO_DEPRECATED)
-  set(oneValueArgs PREFIX_NAME BASE_NAME EXPORT_MACRO_NAME EXPORT_FILE_NAME
-    DEPRECATED_MACRO_NAME NO_EXPORT_MACRO_NAME STATIC_DEFINE
-    NO_DEPRECATED_MACRO_NAME CUSTOM_CONTENT_FROM_VARIABLE INCLUDE_GUARD_NAME)
-  set(multiValueArgs)
-
-  cmake_parse_arguments(_GEH "${options}" "${oneValueArgs}" "${multiValueArgs}"
-    ${ARGN})
-
-  set(BASE_NAME "${TARGET_LIBRARY}")
-
-  if(_GEH_BASE_NAME)
-    set(BASE_NAME ${_GEH_BASE_NAME})
-  endif()
-
-  string(TOUPPER ${BASE_NAME} BASE_NAME_UPPER)
-  string(TOLOWER ${BASE_NAME} BASE_NAME_LOWER)
-
-  # Default options
-  set(EXPORT_MACRO_NAME "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_EXPORT")
-  set(NO_EXPORT_MACRO_NAME "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_NO_EXPORT")
-  set(EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${BASE_NAME_LOWER}_export.h")
-  set(DEPRECATED_MACRO_NAME "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_DEPRECATED")
-  set(STATIC_DEFINE "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_STATIC_DEFINE")
-  set(NO_DEPRECATED_MACRO_NAME
-    "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_NO_DEPRECATED")
-
-  if(_GEH_UNPARSED_ARGUMENTS)
-    message(FATAL_ERROR "Unknown keywords given to GENERATE_EXPORT_HEADER(): \"${_GEH_UNPARSED_ARGUMENTS}\"")
-  endif()
-
-  if(_GEH_EXPORT_MACRO_NAME)
-    set(EXPORT_MACRO_NAME ${_GEH_PREFIX_NAME}${_GEH_EXPORT_MACRO_NAME})
-  endif()
-  string(MAKE_C_IDENTIFIER ${EXPORT_MACRO_NAME} EXPORT_MACRO_NAME)
-  if(_GEH_EXPORT_FILE_NAME)
-    if(IS_ABSOLUTE ${_GEH_EXPORT_FILE_NAME})
-      set(EXPORT_FILE_NAME ${_GEH_EXPORT_FILE_NAME})
-    else()
-      set(EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${_GEH_EXPORT_FILE_NAME}")
-    endif()
-  endif()
-  if(_GEH_DEPRECATED_MACRO_NAME)
-    set(DEPRECATED_MACRO_NAME ${_GEH_PREFIX_NAME}${_GEH_DEPRECATED_MACRO_NAME})
-  endif()
-  string(MAKE_C_IDENTIFIER ${DEPRECATED_MACRO_NAME} DEPRECATED_MACRO_NAME)
-  if(_GEH_NO_EXPORT_MACRO_NAME)
-    set(NO_EXPORT_MACRO_NAME ${_GEH_PREFIX_NAME}${_GEH_NO_EXPORT_MACRO_NAME})
-  endif()
-  string(MAKE_C_IDENTIFIER ${NO_EXPORT_MACRO_NAME} NO_EXPORT_MACRO_NAME)
-  if(_GEH_STATIC_DEFINE)
-    set(STATIC_DEFINE ${_GEH_PREFIX_NAME}${_GEH_STATIC_DEFINE})
-  endif()
-  string(MAKE_C_IDENTIFIER ${STATIC_DEFINE} STATIC_DEFINE)
-
-  if(_GEH_DEFINE_NO_DEPRECATED)
-    set(DEFINE_NO_DEPRECATED 1)
-  else()
-    set(DEFINE_NO_DEPRECATED 0)
-  endif()
-
-  if(_GEH_NO_DEPRECATED_MACRO_NAME)
-    set(NO_DEPRECATED_MACRO_NAME
-      ${_GEH_PREFIX_NAME}${_GEH_NO_DEPRECATED_MACRO_NAME})
-  endif()
-  string(MAKE_C_IDENTIFIER ${NO_DEPRECATED_MACRO_NAME} NO_DEPRECATED_MACRO_NAME)
-
-  if(_GEH_INCLUDE_GUARD_NAME)
-    set(INCLUDE_GUARD_NAME ${_GEH_INCLUDE_GUARD_NAME})
-  else()
-    set(INCLUDE_GUARD_NAME "${EXPORT_MACRO_NAME}_H")
-  endif()
-
-  get_target_property(EXPORT_IMPORT_CONDITION ${TARGET_LIBRARY} DEFINE_SYMBOL)
-
-  if(NOT EXPORT_IMPORT_CONDITION)
-    set(EXPORT_IMPORT_CONDITION ${TARGET_LIBRARY}_EXPORTS)
-  endif()
-  string(MAKE_C_IDENTIFIER ${EXPORT_IMPORT_CONDITION} EXPORT_IMPORT_CONDITION)
-
-  if(_GEH_CUSTOM_CONTENT_FROM_VARIABLE)
-    if(DEFINED "${_GEH_CUSTOM_CONTENT_FROM_VARIABLE}")
-      set(CUSTOM_CONTENT "${${_GEH_CUSTOM_CONTENT_FROM_VARIABLE}}")
-    else()
-      set(CUSTOM_CONTENT "")
-    endif()
-  endif()
-
-  configure_file("${_GENERATE_EXPORT_HEADER_MODULE_DIR}/exportheader.cmake.in"
-    "${EXPORT_FILE_NAME}" @ONLY)
-endmacro()
-
-function(GENERATE_EXPORT_HEADER TARGET_LIBRARY)
-  get_property(type TARGET ${TARGET_LIBRARY} PROPERTY TYPE)
-  if(NOT ${type} STREQUAL "STATIC_LIBRARY"
-      AND NOT ${type} STREQUAL "SHARED_LIBRARY"
-      AND NOT ${type} STREQUAL "OBJECT_LIBRARY"
-      AND NOT ${type} STREQUAL "MODULE_LIBRARY")
-    message(WARNING "This macro can only be used with libraries")
-    return()
-  endif()
-  _test_compiler_hidden_visibility()
-  _test_compiler_has_deprecated()
-  _do_set_macro_values(${TARGET_LIBRARY})
-  _do_generate_export_header(${TARGET_LIBRARY} ${ARGN})
-endfunction()
-
-function(add_compiler_export_flags)
-  if(NOT CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12)
-    message(DEPRECATION "The add_compiler_export_flags function is obsolete. Use the CXX_VISIBILITY_PRESET and VISIBILITY_INLINES_HIDDEN target properties instead.")
-  endif()
-
-  _test_compiler_hidden_visibility()
-  _test_compiler_has_deprecated()
-
-  option(USE_COMPILER_HIDDEN_VISIBILITY
-    "Use HIDDEN visibility support if available." ON)
-  mark_as_advanced(USE_COMPILER_HIDDEN_VISIBILITY)
-  if(NOT (USE_COMPILER_HIDDEN_VISIBILITY AND COMPILER_HAS_HIDDEN_VISIBILITY))
-    # Just return if there are no flags to add.
-    return()
-  endif()
-
-  set (EXTRA_FLAGS "-fvisibility=hidden")
-
-  if(COMPILER_HAS_HIDDEN_INLINE_VISIBILITY)
-    set (EXTRA_FLAGS "${EXTRA_FLAGS} -fvisibility-inlines-hidden")
-  endif()
-
-  # Either return the extra flags needed in the supplied argument, or to the
-  # CMAKE_CXX_FLAGS if no argument is supplied.
-  if(ARGC GREATER 0)
-    set(${ARGV0} "${EXTRA_FLAGS}" PARENT_SCOPE)
-  else()
-    string(APPEND CMAKE_CXX_FLAGS " ${EXTRA_FLAGS}")
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" PARENT_SCOPE)
-  endif()
-endfunction()
diff --git a/share/cmake-3.18/Modules/GetPrerequisites.cmake b/share/cmake-3.18/Modules/GetPrerequisites.cmake
deleted file mode 100644
index 5c8c196..0000000
--- a/share/cmake-3.18/Modules/GetPrerequisites.cmake
+++ /dev/null
@@ -1,1047 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-GetPrerequisites
-----------------
-
-.. deprecated:: 3.16
-
-  Use :command:`file(GET_RUNTIME_DEPENDENCIES)` instead.
-
-Functions to analyze and list executable file prerequisites.
-
-This module provides functions to list the .dll, .dylib or .so files
-that an executable or shared library file depends on.  (Its
-prerequisites.)
-
-It uses various tools to obtain the list of required shared library
-files:
-
-::
-
-   dumpbin (Windows)
-   objdump (MinGW on Windows)
-   ldd (Linux/Unix)
-   otool (Mac OSX)
-
-The following functions are provided by this module:
-
-::
-
-   get_prerequisites
-   list_prerequisites
-   list_prerequisites_by_glob
-   gp_append_unique
-   is_file_executable
-   gp_item_default_embedded_path
-     (projects can override with gp_item_default_embedded_path_override)
-   gp_resolve_item
-     (projects can override with gp_resolve_item_override)
-   gp_resolved_file_type
-     (projects can override with gp_resolved_file_type_override)
-   gp_file_type
-
-Requires CMake 2.6 or greater because it uses function, break, return
-and PARENT_SCOPE.
-
-::
-
-  GET_PREREQUISITES(<target> <prerequisites_var> <exclude_system> <recurse>
-                    <exepath> <dirs> [<rpaths>])
-
-Get the list of shared library files required by <target>.  The list
-in the variable named <prerequisites_var> should be empty on first
-entry to this function.  On exit, <prerequisites_var> will contain the
-list of required shared library files.
-
-<target> is the full path to an executable file.  <prerequisites_var>
-is the name of a CMake variable to contain the results.
-<exclude_system> must be 0 or 1 indicating whether to include or
-exclude "system" prerequisites.  If <recurse> is set to 1 all
-prerequisites will be found recursively, if set to 0 only direct
-prerequisites are listed.  <exepath> is the path to the top level
-executable used for @executable_path replacment on the Mac.  <dirs> is
-a list of paths where libraries might be found: these paths are
-searched first when a target without any path info is given.  Then
-standard system locations are also searched: PATH, Framework
-locations, /usr/lib...
-
-The variable GET_PREREQUISITES_VERBOSE can be set to true to enable verbose
-output.
-
-::
-
-  LIST_PREREQUISITES(<target> [<recurse> [<exclude_system> [<verbose>]]])
-
-Print a message listing the prerequisites of <target>.
-
-<target> is the name of a shared library or executable target or the
-full path to a shared library or executable file.  If <recurse> is set
-to 1 all prerequisites will be found recursively, if set to 0 only
-direct prerequisites are listed.  <exclude_system> must be 0 or 1
-indicating whether to include or exclude "system" prerequisites.  With
-<verbose> set to 0 only the full path names of the prerequisites are
-printed, set to 1 extra informatin will be displayed.
-
-::
-
-  LIST_PREREQUISITES_BY_GLOB(<glob_arg> <glob_exp>)
-
-Print the prerequisites of shared library and executable files
-matching a globbing pattern.  <glob_arg> is GLOB or GLOB_RECURSE and
-<glob_exp> is a globbing expression used with "file(GLOB" or
-"file(GLOB_RECURSE" to retrieve a list of matching files.  If a
-matching file is executable, its prerequisites are listed.
-
-Any additional (optional) arguments provided are passed along as the
-optional arguments to the list_prerequisites calls.
-
-::
-
-  GP_APPEND_UNIQUE(<list_var> <value>)
-
-Append <value> to the list variable <list_var> only if the value is
-not already in the list.
-
-::
-
-  IS_FILE_EXECUTABLE(<file> <result_var>)
-
-Return 1 in <result_var> if <file> is a binary executable, 0
-otherwise.
-
-::
-
-  GP_ITEM_DEFAULT_EMBEDDED_PATH(<item> <default_embedded_path_var>)
-
-Return the path that others should refer to the item by when the item
-is embedded inside a bundle.
-
-Override on a per-project basis by providing a project-specific
-gp_item_default_embedded_path_override function.
-
-::
-
-  GP_RESOLVE_ITEM(<context> <item> <exepath> <dirs> <resolved_item_var>
-                  [<rpaths>])
-
-Resolve an item into an existing full path file.
-
-Override on a per-project basis by providing a project-specific
-gp_resolve_item_override function.
-
-::
-
-  GP_RESOLVED_FILE_TYPE(<original_file> <file> <exepath> <dirs> <type_var>
-                        [<rpaths>])
-
-Return the type of <file> with respect to <original_file>.  String
-describing type of prerequisite is returned in variable named
-<type_var>.
-
-Use <exepath> and <dirs> if necessary to resolve non-absolute <file>
-values -- but only for non-embedded items.
-
-Possible types are:
-
-::
-
-   system
-   local
-   embedded
-   other
-
-Override on a per-project basis by providing a project-specific
-gp_resolved_file_type_override function.
-
-::
-
-  GP_FILE_TYPE(<original_file> <file> <type_var>)
-
-Return the type of <file> with respect to <original_file>.  String
-describing type of prerequisite is returned in variable named
-<type_var>.
-
-Possible types are:
-
-::
-
-   system
-   local
-   embedded
-   other
-#]=======================================================================]
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0057 NEW) # if IN_LIST
-
-function(gp_append_unique list_var value)
-  if(NOT value IN_LIST ${list_var})
-    set(${list_var} ${${list_var}} "${value}" PARENT_SCOPE)
-  endif()
-endfunction()
-
-
-function(is_file_executable file result_var)
-  #
-  # A file is not executable until proven otherwise:
-  #
-  set(${result_var} 0 PARENT_SCOPE)
-
-  get_filename_component(file_full "${file}" ABSOLUTE)
-  string(TOLOWER "${file_full}" file_full_lower)
-
-  # If file name ends in .exe on Windows, *assume* executable:
-  #
-  if(WIN32 AND NOT UNIX)
-    if("${file_full_lower}" MATCHES "\\.exe$")
-      set(${result_var} 1 PARENT_SCOPE)
-      return()
-    endif()
-
-    # A clause could be added here that uses output or return value of dumpbin
-    # to determine ${result_var}. In 99%+? practical cases, the exe name
-    # match will be sufficient...
-    #
-  endif()
-
-  # Use the information returned from the Unix shell command "file" to
-  # determine if ${file_full} should be considered an executable file...
-  #
-  # If the file command's output contains "executable" and does *not* contain
-  # "text" then it is likely an executable suitable for prerequisite analysis
-  # via the get_prerequisites macro.
-  #
-  if(UNIX)
-    if(NOT file_cmd)
-      find_program(file_cmd "file")
-      mark_as_advanced(file_cmd)
-    endif()
-
-    if(file_cmd)
-      execute_process(COMMAND "${file_cmd}" "${file_full}"
-        RESULT_VARIABLE file_rv
-        OUTPUT_VARIABLE file_ov
-        ERROR_VARIABLE file_ev
-        OUTPUT_STRIP_TRAILING_WHITESPACE
-        )
-      if(NOT file_rv STREQUAL "0")
-        message(FATAL_ERROR "${file_cmd} failed: ${file_rv}\n${file_ev}")
-      endif()
-
-      # Replace the name of the file in the output with a placeholder token
-      # (the string " _file_full_ ") so that just in case the path name of
-      # the file contains the word "text" or "executable" we are not fooled
-      # into thinking "the wrong thing" because the file name matches the
-      # other 'file' command output we are looking for...
-      #
-      string(REPLACE "${file_full}" " _file_full_ " file_ov "${file_ov}")
-      string(TOLOWER "${file_ov}" file_ov)
-
-      #message(STATUS "file_ov='${file_ov}'")
-      if("${file_ov}" MATCHES "executable")
-        #message(STATUS "executable!")
-        if("${file_ov}" MATCHES "text")
-          #message(STATUS "but text, so *not* a binary executable!")
-        else()
-          set(${result_var} 1 PARENT_SCOPE)
-          return()
-        endif()
-      endif()
-
-      # Also detect position independent executables on Linux,
-      # where "file" gives "shared object ... (uses shared libraries)"
-      if("${file_ov}" MATCHES "shared object.*\(uses shared libs\)")
-        set(${result_var} 1 PARENT_SCOPE)
-        return()
-      endif()
-
-      # "file" version 5.22 does not print "(used shared libraries)"
-      # but uses "interpreter"
-      if("${file_ov}" MATCHES "shared object.*interpreter")
-        set(${result_var} 1 PARENT_SCOPE)
-        return()
-      endif()
-
-    else()
-      message(STATUS "warning: No 'file' command, skipping execute_process...")
-    endif()
-  endif()
-endfunction()
-
-
-function(gp_item_default_embedded_path item default_embedded_path_var)
-
-  # On Windows and Linux, "embed" prerequisites in the same directory
-  # as the executable by default:
-  #
-  set(path "@executable_path")
-
-  # On the Mac, relative to the executable depending on the type
-  # of the thing we are embedding:
-  #
-  if(APPLE)
-    #
-    # The assumption here is that all executables in the bundle will be
-    # in same-level-directories inside the bundle. The parent directory
-    # of an executable inside the bundle should be MacOS or a sibling of
-    # MacOS and all embedded paths returned from here will begin with
-    # "@executable_path/../" and will work from all executables in all
-    # such same-level-directories inside the bundle.
-    #
-
-    # By default, embed things right next to the main bundle executable:
-    #
-    set(path "@executable_path/../../Contents/MacOS")
-
-    # Embed frameworks and .dylibs in the embedded "Frameworks" directory
-    # (sibling of MacOS):
-    #
-    if(item MATCHES "[^/]+\\.framework/" OR item MATCHES "\\.dylib$")
-      set(path "@executable_path/../Frameworks")
-    endif()
-  endif()
-
-  # Provide a hook so that projects can override the default embedded location
-  # of any given library by whatever logic they choose:
-  #
-  if(COMMAND gp_item_default_embedded_path_override)
-    gp_item_default_embedded_path_override("${item}" path)
-  endif()
-
-  set(${default_embedded_path_var} "${path}" PARENT_SCOPE)
-endfunction()
-
-
-function(gp_resolve_item context item exepath dirs resolved_item_var)
-  set(resolved 0)
-  set(resolved_item "${item}")
-  if(ARGC GREATER 5)
-    set(rpaths "${ARGV5}")
-  else()
-    set(rpaths "")
-  endif()
-
-  # Is it already resolved?
-  #
-  if(IS_ABSOLUTE "${resolved_item}" AND EXISTS "${resolved_item}")
-    set(resolved 1)
-  endif()
-
-  if(NOT resolved)
-    if(item MATCHES "^@executable_path")
-      #
-      # @executable_path references are assumed relative to exepath
-      #
-      string(REPLACE "@executable_path" "${exepath}" ri "${item}")
-      get_filename_component(ri "${ri}" ABSOLUTE)
-
-      if(EXISTS "${ri}")
-        #message(STATUS "info: embedded item exists (${ri})")
-        set(resolved 1)
-        set(resolved_item "${ri}")
-      else()
-        message(STATUS "warning: embedded item does not exist '${ri}'")
-      endif()
-    endif()
-  endif()
-
-  if(NOT resolved)
-    if(item MATCHES "^@loader_path")
-      #
-      # @loader_path references are assumed relative to the
-      # PATH of the given "context" (presumably another library)
-      #
-      get_filename_component(contextpath "${context}" PATH)
-      string(REPLACE "@loader_path" "${contextpath}" ri "${item}")
-      get_filename_component(ri "${ri}" ABSOLUTE)
-
-      if(EXISTS "${ri}")
-        #message(STATUS "info: embedded item exists (${ri})")
-        set(resolved 1)
-        set(resolved_item "${ri}")
-      else()
-        message(STATUS "warning: embedded item does not exist '${ri}'")
-      endif()
-    endif()
-  endif()
-
-  if(NOT resolved)
-    if(item MATCHES "^@rpath")
-      #
-      # @rpath references are relative to the paths built into the binaries with -rpath
-      # We handle this case like we do for other Unixes
-      #
-      string(REPLACE "@rpath/" "" norpath_item "${item}")
-
-      set(ri "ri-NOTFOUND")
-      find_file(ri "${norpath_item}" ${exepath} ${dirs} ${rpaths} NO_DEFAULT_PATH)
-      if(ri)
-        #message(STATUS "info: 'find_file' in exepath/dirs/rpaths (${ri})")
-        set(resolved 1)
-        set(resolved_item "${ri}")
-        set(ri "ri-NOTFOUND")
-      endif()
-
-    endif()
-  endif()
-
-  if(NOT resolved)
-    set(ri "ri-NOTFOUND")
-    find_file(ri "${item}" ${exepath} ${dirs} NO_DEFAULT_PATH)
-    find_file(ri "${item}" ${exepath} ${dirs} /usr/lib)
-
-    get_filename_component(basename_item "${item}" NAME)
-    find_file(ri "${basename_item}" PATHS ${exepath} ${dirs} NO_DEFAULT_PATH)
-    find_file(ri "${basename_item}" PATHS /usr/lib)
-
-    if(ri)
-      #message(STATUS "info: 'find_file' in exepath/dirs (${ri})")
-      set(resolved 1)
-      set(resolved_item "${ri}")
-      set(ri "ri-NOTFOUND")
-    endif()
-  endif()
-
-  if(NOT resolved)
-    if(item MATCHES "[^/]+\\.framework/")
-      set(fw "fw-NOTFOUND")
-      find_file(fw "${item}"
-        "~/Library/Frameworks"
-        "/Library/Frameworks"
-        "/System/Library/Frameworks"
-      )
-      if(fw)
-        #message(STATUS "info: 'find_file' found framework (${fw})")
-        set(resolved 1)
-        set(resolved_item "${fw}")
-        set(fw "fw-NOTFOUND")
-      endif()
-    endif()
-  endif()
-
-  # Using find_program on Windows will find dll files that are in the PATH.
-  # (Converting simple file names into full path names if found.)
-  #
-  if(WIN32 AND NOT UNIX)
-  if(NOT resolved)
-    set(ri "ri-NOTFOUND")
-    find_program(ri "${item}" PATHS ${exepath} ${dirs} NO_DEFAULT_PATH)
-    find_program(ri "${item}" PATHS ${exepath} ${dirs})
-    if(ri)
-      #message(STATUS "info: 'find_program' in exepath/dirs (${ri})")
-      set(resolved 1)
-      set(resolved_item "${ri}")
-      set(ri "ri-NOTFOUND")
-    endif()
-  endif()
-  endif()
-
-  # Provide a hook so that projects can override item resolution
-  # by whatever logic they choose:
-  #
-  if(COMMAND gp_resolve_item_override)
-    gp_resolve_item_override("${context}" "${item}" "${exepath}" "${dirs}" resolved_item resolved)
-  endif()
-
-  if(NOT resolved)
-    message(STATUS "
-warning: cannot resolve item '${item}'
-
-  possible problems:
-    need more directories?
-    need to use InstallRequiredSystemLibraries?
-    run in install tree instead of build tree?
-")
-#    message(STATUS "
-#******************************************************************************
-#warning: cannot resolve item '${item}'
-#
-#  possible problems:
-#    need more directories?
-#    need to use InstallRequiredSystemLibraries?
-#    run in install tree instead of build tree?
-#
-#    context='${context}'
-#    item='${item}'
-#    exepath='${exepath}'
-#    dirs='${dirs}'
-#    resolved_item_var='${resolved_item_var}'
-#******************************************************************************
-#")
-  endif()
-
-  set(${resolved_item_var} "${resolved_item}" PARENT_SCOPE)
-endfunction()
-
-
-function(gp_resolved_file_type original_file file exepath dirs type_var)
-  if(ARGC GREATER 5)
-    set(rpaths "${ARGV5}")
-  else()
-    set(rpaths "")
-  endif()
-  #message(STATUS "**")
-
-  if(NOT IS_ABSOLUTE "${original_file}")
-    message(STATUS "warning: gp_resolved_file_type expects absolute full path for first arg original_file")
-  endif()
-  if(IS_ABSOLUTE "${original_file}")
-    get_filename_component(original_file "${original_file}" ABSOLUTE) # canonicalize path
-  endif()
-
-  set(is_embedded 0)
-  set(is_local 0)
-  set(is_system 0)
-
-  set(resolved_file "${file}")
-
-  if("${file}" MATCHES "^@(executable|loader)_path")
-    set(is_embedded 1)
-  endif()
-
-  if(NOT is_embedded)
-    if(NOT IS_ABSOLUTE "${file}")
-      gp_resolve_item("${original_file}" "${file}" "${exepath}" "${dirs}" resolved_file "${rpaths}")
-    endif()
-    if(IS_ABSOLUTE "${resolved_file}")
-      get_filename_component(resolved_file "${resolved_file}" ABSOLUTE) # canonicalize path
-    endif()
-
-    string(TOLOWER "${original_file}" original_lower)
-    string(TOLOWER "${resolved_file}" lower)
-
-    if(UNIX)
-      if(resolved_file MATCHES "^(/lib/|/lib32/|/libx32/|/lib64/|/usr/lib/|/usr/lib32/|/usr/libx32/|/usr/lib64/|/usr/X11R6/|/usr/bin/)")
-        set(is_system 1)
-      endif()
-    endif()
-
-    if(APPLE)
-      if(resolved_file MATCHES "^(/System/Library/|/usr/lib/)")
-        set(is_system 1)
-      endif()
-    endif()
-
-    if(WIN32)
-      string(TOLOWER "$ENV{SystemRoot}" sysroot)
-      file(TO_CMAKE_PATH "${sysroot}" sysroot)
-
-      string(TOLOWER "$ENV{windir}" windir)
-      file(TO_CMAKE_PATH "${windir}" windir)
-
-      if(lower MATCHES "^(${sysroot}/sys(tem|wow)|${windir}/sys(tem|wow)|(.*/)*(msvc|api-ms-win-|vcruntime)[^/]+dll)")
-        set(is_system 1)
-      endif()
-
-      if(UNIX)
-        # if cygwin, we can get the properly formed windows paths from cygpath
-        find_program(CYGPATH_EXECUTABLE cygpath)
-
-        if(CYGPATH_EXECUTABLE)
-          execute_process(COMMAND ${CYGPATH_EXECUTABLE} -W
-                          RESULT_VARIABLE env_rv
-                          OUTPUT_VARIABLE env_windir
-                          ERROR_VARIABLE env_ev
-                          OUTPUT_STRIP_TRAILING_WHITESPACE)
-          if(NOT env_rv STREQUAL "0")
-            message(FATAL_ERROR "${CYGPATH_EXECUTABLE} -W failed: ${env_rv}\n${env_ev}")
-          endif()
-          execute_process(COMMAND ${CYGPATH_EXECUTABLE} -S
-                          RESULT_VARIABLE env_rv
-                          OUTPUT_VARIABLE env_sysdir
-                          ERROR_VARIABLE env_ev
-                          OUTPUT_STRIP_TRAILING_WHITESPACE)
-          if(NOT env_rv STREQUAL "0")
-            message(FATAL_ERROR "${CYGPATH_EXECUTABLE} -S failed: ${env_rv}\n${env_ev}")
-          endif()
-          string(TOLOWER "${env_windir}" windir)
-          string(TOLOWER "${env_sysdir}" sysroot)
-
-          if(lower MATCHES "^(${sysroot}/sys(tem|wow)|${windir}/sys(tem|wow)|(.*/)*(msvc|api-ms-win-|vcruntime)[^/]+dll)")
-            set(is_system 1)
-          endif()
-        endif()
-      endif()
-    endif()
-
-    if(NOT is_system)
-      get_filename_component(original_path "${original_lower}" PATH)
-      get_filename_component(path "${lower}" PATH)
-      if(original_path STREQUAL path)
-        set(is_local 1)
-      else()
-        string(LENGTH "${original_path}/" original_length)
-        string(LENGTH "${lower}" path_length)
-        if(${path_length} GREATER ${original_length})
-          string(SUBSTRING "${lower}" 0 ${original_length} path)
-          if("${original_path}/" STREQUAL path)
-            set(is_embedded 1)
-          endif()
-        endif()
-      endif()
-    endif()
-  endif()
-
-  # Return type string based on computed booleans:
-  #
-  set(type "other")
-
-  if(is_system)
-    set(type "system")
-  elseif(is_embedded)
-    set(type "embedded")
-  elseif(is_local)
-    set(type "local")
-  endif()
-
-  #message(STATUS "gp_resolved_file_type: '${file}' '${resolved_file}'")
-  #message(STATUS "                type: '${type}'")
-
-  if(NOT is_embedded)
-    if(NOT IS_ABSOLUTE "${resolved_file}")
-      if(lower MATCHES "^(msvc|api-ms-win-|vcruntime)[^/]+dll" AND is_system)
-        message(STATUS "info: non-absolute msvc file '${file}' returning type '${type}'")
-      else()
-        message(STATUS "warning: gp_resolved_file_type non-absolute file '${file}' returning type '${type}' -- possibly incorrect")
-      endif()
-    endif()
-  endif()
-
-  # Provide a hook so that projects can override the decision on whether a
-  # library belongs to the system or not by whatever logic they choose:
-  #
-  if(COMMAND gp_resolved_file_type_override)
-    gp_resolved_file_type_override("${resolved_file}" type)
-  endif()
-
-  set(${type_var} "${type}" PARENT_SCOPE)
-
-  #message(STATUS "**")
-endfunction()
-
-
-function(gp_file_type original_file file type_var)
-  if(NOT IS_ABSOLUTE "${original_file}")
-    message(STATUS "warning: gp_file_type expects absolute full path for first arg original_file")
-  endif()
-
-  get_filename_component(exepath "${original_file}" PATH)
-
-  set(type "")
-  gp_resolved_file_type("${original_file}" "${file}" "${exepath}" "" type)
-
-  set(${type_var} "${type}" PARENT_SCOPE)
-endfunction()
-
-
-function(get_prerequisites target prerequisites_var exclude_system recurse exepath dirs)
-  set(verbose 0)
-  set(eol_char "E")
-  if(ARGC GREATER 6)
-    set(rpaths "${ARGV6}")
-  else()
-    set(rpaths "")
-  endif()
-
-  if(GET_PREREQUISITES_VERBOSE)
-    set(verbose 1)
-  endif()
-
-  if(NOT IS_ABSOLUTE "${target}")
-    message("warning: target '${target}' is not absolute...")
-  endif()
-
-  if(NOT EXISTS "${target}")
-    message("warning: target '${target}' does not exist...")
-    return()
-  endif()
-
-  # Check for a script by extension (.bat,.sh,...) or if the file starts with "#!" (shebang)
-  file(READ ${target} file_contents LIMIT 5)
-  if(target MATCHES "\\.(bat|c?sh|bash|ksh|cmd)$" OR file_contents MATCHES "^#!")
-    message(STATUS "GetPrequisites(${target}) : ignoring script file")
-    # Clear var
-    set(${prerequisites_var} "" PARENT_SCOPE)
-    return()
-  endif()
-
-  set(gp_cmd_paths ${gp_cmd_paths}
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\14.0;InstallDir]/../../VC/bin"
-    "$ENV{VS140COMNTOOLS}/../../VC/bin"
-    "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\12.0;InstallDir]/../../VC/bin"
-    "$ENV{VS120COMNTOOLS}/../../VC/bin"
-    "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0;InstallDir]/../../VC/bin"
-    "$ENV{VS110COMNTOOLS}/../../VC/bin"
-    "C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0;InstallDir]/../../VC/bin"
-    "$ENV{VS100COMNTOOLS}/../../VC/bin"
-    "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0;InstallDir]/../../VC/bin"
-    "$ENV{VS90COMNTOOLS}/../../VC/bin"
-    "C:/Program Files/Microsoft Visual Studio 9.0/VC/bin"
-    "C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0;InstallDir]/../../VC/bin"
-    "$ENV{VS80COMNTOOLS}/../../VC/bin"
-    "C:/Program Files/Microsoft Visual Studio 8/VC/BIN"
-    "C:/Program Files (x86)/Microsoft Visual Studio 8/VC/BIN"
-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\7.1;InstallDir]/../../VC7/bin"
-    "$ENV{VS71COMNTOOLS}/../../VC7/bin"
-    "C:/Program Files/Microsoft Visual Studio .NET 2003/VC7/BIN"
-    "C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/VC7/BIN"
-    )
-
-  # <setup-gp_tool-vars>
-  #
-  # Try to choose the right tool by default. Caller can set gp_tool prior to
-  # calling this function to force using a different tool.
-  #
-  if(NOT gp_tool)
-    set(gp_tool "ldd")
-
-    if(APPLE)
-      set(gp_tool "otool")
-    endif()
-
-    if(WIN32 AND NOT UNIX) # This is how to check for cygwin, har!
-      find_program(gp_dumpbin "dumpbin" PATHS ${gp_cmd_paths})
-      if(gp_dumpbin)
-        set(gp_tool "dumpbin")
-      elseif(CMAKE_OBJDUMP) # Try harder. Maybe we're on MinGW
-        set(gp_tool "${CMAKE_OBJDUMP}")
-      else()
-        set(gp_tool "objdump")
-      endif()
-    endif()
-  endif()
-
-  find_program(gp_cmd ${gp_tool} PATHS ${gp_cmd_paths})
-
-  if(NOT gp_cmd)
-    message(STATUS "warning: could not find '${gp_tool}' - cannot analyze prerequisites...")
-    return()
-  endif()
-
-  set(gp_cmd_maybe_filter)      # optional command to pre-filter gp_tool results
-
-  if(gp_tool MATCHES "ldd$")
-    set(gp_cmd_args "")
-    set(gp_regex "^[\t ]*[^\t ]+ =>[\t ]+([^\t\(]+)( \(.+\))?${eol_char}$")
-    set(gp_regex_error "not found${eol_char}$")
-    set(gp_regex_fallback "^[\t ]*([^\t ]+) => ([^\t ]+).*${eol_char}$")
-    set(gp_regex_cmp_count 1)
-  elseif(gp_tool MATCHES "otool$")
-    set(gp_cmd_args "-L")
-    set(gp_regex "^\t([^\t]+) \\(compatibility version ([0-9]+.[0-9]+.[0-9]+), current version ([0-9]+.[0-9]+.[0-9]+)\\)${eol_char}$")
-    set(gp_regex_error "")
-    set(gp_regex_fallback "")
-    set(gp_regex_cmp_count 3)
-  elseif(gp_tool MATCHES "dumpbin$")
-    set(gp_cmd_args "/dependents")
-    set(gp_regex "^    ([^ ].*[Dd][Ll][Ll])${eol_char}$")
-    set(gp_regex_error "")
-    set(gp_regex_fallback "")
-    set(gp_regex_cmp_count 1)
-  elseif(gp_tool MATCHES "objdump$")
-    set(gp_cmd_args "-p")
-    set(gp_regex "^\t*DLL Name: (.*\\.[Dd][Ll][Ll])${eol_char}$")
-    set(gp_regex_error "")
-    set(gp_regex_fallback "")
-    set(gp_regex_cmp_count 1)
-    # objdump generates copious output so we create a grep filter to pre-filter results
-    if(WIN32)
-      find_program(gp_grep_cmd findstr)
-    else()
-      find_program(gp_grep_cmd grep)
-    endif()
-    if(gp_grep_cmd)
-      set(gp_cmd_maybe_filter COMMAND ${gp_grep_cmd} "-a" "^[[:blank:]]*DLL Name: ")
-    endif()
-  else()
-    message(STATUS "warning: gp_tool='${gp_tool}' is an unknown tool...")
-    message(STATUS "CMake function get_prerequisites needs more code to handle '${gp_tool}'")
-    message(STATUS "Valid gp_tool values are dumpbin, ldd, objdump and otool.")
-    return()
-  endif()
-
-
-  if(gp_tool MATCHES "dumpbin$")
-    # When running dumpbin, it also needs the "Common7/IDE" directory in the
-    # PATH. It will already be in the PATH if being run from a Visual Studio
-    # command prompt. Add it to the PATH here in case we are running from a
-    # different command prompt.
-    #
-    get_filename_component(gp_cmd_dir "${gp_cmd}" PATH)
-    get_filename_component(gp_cmd_dlls_dir "${gp_cmd_dir}/../../Common7/IDE" ABSOLUTE)
-    # Use cmake paths as a user may have a PATH element ending with a backslash.
-    # This will escape the list delimiter and create havoc!
-    if(EXISTS "${gp_cmd_dlls_dir}")
-      # only add to the path if it is not already in the path
-      set(gp_found_cmd_dlls_dir 0)
-      file(TO_CMAKE_PATH "$ENV{PATH}" env_path)
-      foreach(gp_env_path_element ${env_path})
-        if(gp_env_path_element STREQUAL gp_cmd_dlls_dir)
-          set(gp_found_cmd_dlls_dir 1)
-        endif()
-      endforeach()
-
-      if(NOT gp_found_cmd_dlls_dir)
-        file(TO_NATIVE_PATH "${gp_cmd_dlls_dir}" gp_cmd_dlls_dir)
-        set(ENV{PATH} "$ENV{PATH};${gp_cmd_dlls_dir}")
-      endif()
-    endif()
-  endif()
-  #
-  # </setup-gp_tool-vars>
-
-  if(gp_tool MATCHES "ldd$")
-    set(old_ld_env "$ENV{LD_LIBRARY_PATH}")
-    set(new_ld_env "${exepath}")
-    foreach(dir ${dirs})
-      string(APPEND new_ld_env ":${dir}")
-    endforeach()
-    set(ENV{LD_LIBRARY_PATH} "${new_ld_env}:$ENV{LD_LIBRARY_PATH}")
-  endif()
-
-
-  # Track new prerequisites at each new level of recursion. Start with an
-  # empty list at each level:
-  #
-  set(unseen_prereqs)
-
-  # Run gp_cmd on the target:
-  #
-  execute_process(
-    COMMAND ${gp_cmd} ${gp_cmd_args} ${target}
-    ${gp_cmd_maybe_filter}
-    RESULT_VARIABLE gp_rv
-    OUTPUT_VARIABLE gp_cmd_ov
-    ERROR_VARIABLE gp_ev
-    )
-
-  if(gp_tool MATCHES "dumpbin$")
-    # Exclude delay load dependencies under windows (they are listed in dumpbin output after the message below)
-    string(FIND "${gp_cmd_ov}" "Image has the following delay load dependencies" gp_delayload_pos)
-    if (${gp_delayload_pos} GREATER -1)
-      string(SUBSTRING "${gp_cmd_ov}" 0 ${gp_delayload_pos} gp_cmd_ov_no_delayload_deps)
-      string(SUBSTRING "${gp_cmd_ov}" ${gp_delayload_pos} -1 gp_cmd_ov_delayload_deps)
-      if (verbose)
-        message(STATUS "GetPrequisites(${target}) : ignoring the following delay load dependencies :\n ${gp_cmd_ov_delayload_deps}")
-      endif()
-      set(gp_cmd_ov ${gp_cmd_ov_no_delayload_deps})
-    endif()
-  endif()
-
-  if(NOT gp_rv STREQUAL "0")
-    if(gp_tool MATCHES "dumpbin$")
-      # dumpbin error messages seem to go to stdout
-      message(FATAL_ERROR "${gp_cmd} failed: ${gp_rv}\n${gp_ev}\n${gp_cmd_ov}")
-    else()
-      message(FATAL_ERROR "${gp_cmd} failed: ${gp_rv}\n${gp_ev}")
-    endif()
-  endif()
-
-  if(gp_tool MATCHES "ldd$")
-    set(ENV{LD_LIBRARY_PATH} "${old_ld_env}")
-  endif()
-
-  if(verbose)
-    message(STATUS "<RawOutput cmd='${gp_cmd} ${gp_cmd_args} ${target}'>")
-    message(STATUS "gp_cmd_ov='${gp_cmd_ov}'")
-    message(STATUS "</RawOutput>")
-  endif()
-
-  get_filename_component(target_dir "${target}" PATH)
-
-  # Convert to a list of lines:
-  #
-  string(REPLACE ";" "\\;" candidates "${gp_cmd_ov}")
-  string(REPLACE "\n" "${eol_char};" candidates "${candidates}")
-
-  # check for install id and remove it from list, since otool -L can include a
-  # reference to itself
-  set(gp_install_id)
-  if(gp_tool MATCHES "otool$")
-    execute_process(
-      COMMAND ${gp_cmd} -D ${target}
-      RESULT_VARIABLE otool_rv
-      OUTPUT_VARIABLE gp_install_id_ov
-      ERROR_VARIABLE otool_ev
-      )
-    if(NOT otool_rv STREQUAL "0")
-      message(FATAL_ERROR "otool -D failed: ${otool_rv}\n${otool_ev}")
-    endif()
-    # second line is install name
-    string(REGEX REPLACE ".*:\n" "" gp_install_id "${gp_install_id_ov}")
-    if(gp_install_id)
-      # trim
-      string(REGEX MATCH "[^\n ].*[^\n ]" gp_install_id "${gp_install_id}")
-      #message("INSTALL ID is \"${gp_install_id}\"")
-    endif()
-  endif()
-
-  # Analyze each line for file names that match the regular expression:
-  #
-  foreach(candidate ${candidates})
-  if("${candidate}" MATCHES "${gp_regex}")
-
-    # Extract information from each candidate:
-    if(gp_regex_error AND "${candidate}" MATCHES "${gp_regex_error}")
-      string(REGEX REPLACE "${gp_regex_fallback}" "\\1" raw_item "${candidate}")
-    else()
-      string(REGEX REPLACE "${gp_regex}" "\\1" raw_item "${candidate}")
-    endif()
-
-    if(gp_regex_cmp_count GREATER 1)
-      string(REGEX REPLACE "${gp_regex}" "\\2" raw_compat_version "${candidate}")
-      string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\1" compat_major_version "${raw_compat_version}")
-      string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\2" compat_minor_version "${raw_compat_version}")
-      string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\3" compat_patch_version "${raw_compat_version}")
-    endif()
-
-    if(gp_regex_cmp_count GREATER 2)
-      string(REGEX REPLACE "${gp_regex}" "\\3" raw_current_version "${candidate}")
-      string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\1" current_major_version "${raw_current_version}")
-      string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\2" current_minor_version "${raw_current_version}")
-      string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\3" current_patch_version "${raw_current_version}")
-    endif()
-
-    # Use the raw_item as the list entries returned by this function. Use the
-    # gp_resolve_item function to resolve it to an actual full path file if
-    # necessary.
-    #
-    set(item "${raw_item}")
-
-    # Add each item unless it is excluded:
-    #
-    set(add_item 1)
-
-    if(item STREQUAL gp_install_id)
-      set(add_item 0)
-    endif()
-
-    if(add_item AND ${exclude_system})
-      set(type "")
-      gp_resolved_file_type("${target}" "${item}" "${exepath}" "${dirs}" type "${rpaths}")
-
-      if(type STREQUAL "system")
-        set(add_item 0)
-      endif()
-    endif()
-
-    if(add_item)
-      list(LENGTH ${prerequisites_var} list_length_before_append)
-      gp_append_unique(${prerequisites_var} "${item}")
-      list(LENGTH ${prerequisites_var} list_length_after_append)
-
-      if(${recurse})
-        # If item was really added, this is the first time we have seen it.
-        # Add it to unseen_prereqs so that we can recursively add *its*
-        # prerequisites...
-        #
-        # But first: resolve its name to an absolute full path name such
-        # that the analysis tools can simply accept it as input.
-        #
-        if(NOT list_length_before_append EQUAL list_length_after_append)
-          gp_resolve_item("${target}" "${item}" "${exepath}" "${dirs}" resolved_item "${rpaths}")
-          if(EXISTS "${resolved_item}")
-            # Recurse only if we could resolve the item.
-            # Otherwise the prerequisites_var list will be cleared
-            set(unseen_prereqs ${unseen_prereqs} "${resolved_item}")
-          endif()
-        endif()
-      endif()
-    endif()
-  else()
-    if(verbose)
-      message(STATUS "ignoring non-matching line: '${candidate}'")
-    endif()
-  endif()
-  endforeach()
-
-  list(LENGTH ${prerequisites_var} prerequisites_var_length)
-  if(prerequisites_var_length GREATER 0)
-    list(SORT ${prerequisites_var})
-  endif()
-  if(${recurse})
-    set(more_inputs ${unseen_prereqs})
-    foreach(input ${more_inputs})
-      get_prerequisites("${input}" ${prerequisites_var} ${exclude_system} ${recurse} "${exepath}" "${dirs}" "${rpaths}")
-    endforeach()
-  endif()
-
-  set(${prerequisites_var} ${${prerequisites_var}} PARENT_SCOPE)
-endfunction()
-
-
-function(list_prerequisites target)
-  if(ARGC GREATER 1 AND NOT "${ARGV1}" STREQUAL "")
-    set(all "${ARGV1}")
-  else()
-    set(all 1)
-  endif()
-
-  if(ARGC GREATER 2 AND NOT "${ARGV2}" STREQUAL "")
-    set(exclude_system "${ARGV2}")
-  else()
-    set(exclude_system 0)
-  endif()
-
-  if(ARGC GREATER 3 AND NOT "${ARGV3}" STREQUAL "")
-    set(verbose "${ARGV3}")
-  else()
-    set(verbose 0)
-  endif()
-
-  set(count 0)
-  set(count_str "")
-  set(print_count "${verbose}")
-  set(print_prerequisite_type "${verbose}")
-  set(print_target "${verbose}")
-  set(type_str "")
-
-  get_filename_component(exepath "${target}" PATH)
-
-  set(prereqs "")
-  get_prerequisites("${target}" prereqs ${exclude_system} ${all} "${exepath}" "")
-
-  if(print_target)
-    message(STATUS "File '${target}' depends on:")
-  endif()
-
-  foreach(d ${prereqs})
-    math(EXPR count "${count} + 1")
-
-    if(print_count)
-      set(count_str "${count}. ")
-    endif()
-
-    if(print_prerequisite_type)
-      gp_file_type("${target}" "${d}" type)
-      set(type_str " (${type})")
-    endif()
-
-    message(STATUS "${count_str}${d}${type_str}")
-  endforeach()
-endfunction()
-
-
-function(list_prerequisites_by_glob glob_arg glob_exp)
-  message(STATUS "=============================================================================")
-  message(STATUS "List prerequisites of executables matching ${glob_arg} '${glob_exp}'")
-  message(STATUS "")
-  file(${glob_arg} file_list ${glob_exp})
-  foreach(f ${file_list})
-    is_file_executable("${f}" is_f_executable)
-    if(is_f_executable)
-      message(STATUS "=============================================================================")
-      list_prerequisites("${f}" ${ARGN})
-      message(STATUS "")
-    endif()
-  endforeach()
-endfunction()
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/GoogleTest.cmake b/share/cmake-3.18/Modules/GoogleTest.cmake
deleted file mode 100644
index b210a77..0000000
--- a/share/cmake-3.18/Modules/GoogleTest.cmake
+++ /dev/null
@@ -1,547 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-GoogleTest
-----------
-
-This module defines functions to help use the Google Test infrastructure.  Two
-mechanisms for adding tests are provided. :command:`gtest_add_tests` has been
-around for some time, originally via ``find_package(GTest)``.
-:command:`gtest_discover_tests` was introduced in CMake 3.10.
-
-The (older) :command:`gtest_add_tests` scans source files to identify tests.
-This is usually effective, with some caveats, including in cross-compiling
-environments, and makes setting additional properties on tests more convenient.
-However, its handling of parameterized tests is less comprehensive, and it
-requires re-running CMake to detect changes to the list of tests.
-
-The (newer) :command:`gtest_discover_tests` discovers tests by asking the
-compiled test executable to enumerate its tests.  This is more robust and
-provides better handling of parameterized tests, and does not require CMake
-to be re-run when tests change.  However, it may not work in a cross-compiling
-environment, and setting test properties is less convenient.
-
-More details can be found in the documentation of the respective functions.
-
-Both commands are intended to replace use of :command:`add_test` to register
-tests, and will create a separate CTest test for each Google Test test case.
-Note that this is in some cases less efficient, as common set-up and tear-down
-logic cannot be shared by multiple test cases executing in the same instance.
-However, it provides more fine-grained pass/fail information to CTest, which is
-usually considered as more beneficial.  By default, the CTest test name is the
-same as the Google Test name (i.e. ``suite.testcase``); see also
-``TEST_PREFIX`` and ``TEST_SUFFIX``.
-
-.. command:: gtest_add_tests
-
-  Automatically add tests with CTest by scanning source code for Google Test
-  macros::
-
-    gtest_add_tests(TARGET target
-                    [SOURCES src1...]
-                    [EXTRA_ARGS arg1...]
-                    [WORKING_DIRECTORY dir]
-                    [TEST_PREFIX prefix]
-                    [TEST_SUFFIX suffix]
-                    [SKIP_DEPENDENCY]
-                    [TEST_LIST outVar]
-    )
-
-  ``gtest_add_tests`` attempts to identify tests by scanning source files.
-  Although this is generally effective, it uses only a basic regular expression
-  match, which can be defeated by atypical test declarations, and is unable to
-  fully "split" parameterized tests.  Additionally, it requires that CMake be
-  re-run to discover any newly added, removed or renamed tests (by default,
-  this means that CMake is re-run when any test source file is changed, but see
-  ``SKIP_DEPENDENCY``).  However, it has the advantage of declaring tests at
-  CMake time, which somewhat simplifies setting additional properties on tests,
-  and always works in a cross-compiling environment.
-
-  The options are:
-
-  ``TARGET target``
-    Specifies the Google Test executable, which must be a known CMake
-    executable target.  CMake will substitute the location of the built
-    executable when running the test.
-
-  ``SOURCES src1...``
-    When provided, only the listed files will be scanned for test cases.  If
-    this option is not given, the :prop_tgt:`SOURCES` property of the
-    specified ``target`` will be used to obtain the list of sources.
-
-  ``EXTRA_ARGS arg1...``
-    Any extra arguments to pass on the command line to each test case.
-
-  ``WORKING_DIRECTORY dir``
-    Specifies the directory in which to run the discovered test cases.  If this
-    option is not provided, the current binary directory is used.
-
-  ``TEST_PREFIX prefix``
-    Specifies a ``prefix`` to be prepended to the name of each discovered test
-    case.  This can be useful when the same source files are being used in
-    multiple calls to ``gtest_add_test()`` but with different ``EXTRA_ARGS``.
-
-  ``TEST_SUFFIX suffix``
-    Similar to ``TEST_PREFIX`` except the ``suffix`` is appended to the name of
-    every discovered test case.  Both ``TEST_PREFIX`` and ``TEST_SUFFIX`` may
-    be specified.
-
-  ``SKIP_DEPENDENCY``
-    Normally, the function creates a dependency which will cause CMake to be
-    re-run if any of the sources being scanned are changed.  This is to ensure
-    that the list of discovered tests is updated.  If this behavior is not
-    desired (as may be the case while actually writing the test cases), this
-    option can be used to prevent the dependency from being added.
-
-  ``TEST_LIST outVar``
-    The variable named by ``outVar`` will be populated in the calling scope
-    with the list of discovered test cases.  This allows the caller to do
-    things like manipulate test properties of the discovered tests.
-
-  .. code-block:: cmake
-
-    include(GoogleTest)
-    add_executable(FooTest FooUnitTest.cxx)
-    gtest_add_tests(TARGET      FooTest
-                    TEST_SUFFIX .noArgs
-                    TEST_LIST   noArgsTests
-    )
-    gtest_add_tests(TARGET      FooTest
-                    EXTRA_ARGS  --someArg someValue
-                    TEST_SUFFIX .withArgs
-                    TEST_LIST   withArgsTests
-    )
-    set_tests_properties(${noArgsTests}   PROPERTIES TIMEOUT 10)
-    set_tests_properties(${withArgsTests} PROPERTIES TIMEOUT 20)
-
-  For backward compatibility, the following form is also supported::
-
-    gtest_add_tests(exe args files...)
-
-  ``exe``
-    The path to the test executable or the name of a CMake target.
-  ``args``
-    A ;-list of extra arguments to be passed to executable.  The entire
-    list must be passed as a single argument.  Enclose it in quotes,
-    or pass ``""`` for no arguments.
-  ``files...``
-    A list of source files to search for tests and test fixtures.
-    Alternatively, use ``AUTO`` to specify that ``exe`` is the name
-    of a CMake executable target whose sources should be scanned.
-
-  .. code-block:: cmake
-
-    include(GoogleTest)
-    set(FooTestArgs --foo 1 --bar 2)
-    add_executable(FooTest FooUnitTest.cxx)
-    gtest_add_tests(FooTest "${FooTestArgs}" AUTO)
-
-.. command:: gtest_discover_tests
-
-  Automatically add tests with CTest by querying the compiled test executable
-  for available tests::
-
-    gtest_discover_tests(target
-                         [EXTRA_ARGS arg1...]
-                         [WORKING_DIRECTORY dir]
-                         [TEST_PREFIX prefix]
-                         [TEST_SUFFIX suffix]
-                         [NO_PRETTY_TYPES] [NO_PRETTY_VALUES]
-                         [PROPERTIES name1 value1...]
-                         [TEST_LIST var]
-                         [DISCOVERY_TIMEOUT seconds]
-                         [XML_OUTPUT_DIR dir]
-                         [DISCOVERY_MODE <POST_BUILD|PRE_TEST>]
-    )
-
-  ``gtest_discover_tests()`` sets up a post-build command on the test executable
-  that generates the list of tests by parsing the output from running the test
-  with the ``--gtest_list_tests`` argument.  Compared to the source parsing
-  approach of :command:`gtest_add_tests`, this ensures that the full list of
-  tests, including instantiations of parameterized tests, is obtained.  Since
-  test discovery occurs at build time, it is not necessary to re-run CMake when
-  the list of tests changes.
-  However, it requires that :prop_tgt:`CROSSCOMPILING_EMULATOR` is properly set
-  in order to function in a cross-compiling environment.
-
-  Additionally, setting properties on tests is somewhat less convenient, since
-  the tests are not available at CMake time.  Additional test properties may be
-  assigned to the set of tests as a whole using the ``PROPERTIES`` option.  If
-  more fine-grained test control is needed, custom content may be provided
-  through an external CTest script using the :prop_dir:`TEST_INCLUDE_FILES`
-  directory property.  The set of discovered tests is made accessible to such a
-  script via the ``<target>_TESTS`` variable.
-
-  The options are:
-
-  ``target``
-    Specifies the Google Test executable, which must be a known CMake
-    executable target.  CMake will substitute the location of the built
-    executable when running the test.
-
-  ``EXTRA_ARGS arg1...``
-    Any extra arguments to pass on the command line to each test case.
-
-  ``WORKING_DIRECTORY dir``
-    Specifies the directory in which to run the discovered test cases.  If this
-    option is not provided, the current binary directory is used.
-
-  ``TEST_PREFIX prefix``
-    Specifies a ``prefix`` to be prepended to the name of each discovered test
-    case.  This can be useful when the same test executable is being used in
-    multiple calls to ``gtest_discover_tests()`` but with different
-    ``EXTRA_ARGS``.
-
-  ``TEST_SUFFIX suffix``
-    Similar to ``TEST_PREFIX`` except the ``suffix`` is appended to the name of
-    every discovered test case.  Both ``TEST_PREFIX`` and ``TEST_SUFFIX`` may
-    be specified.
-
-  ``NO_PRETTY_TYPES``
-    By default, the type index of type-parameterized tests is replaced by the
-    actual type name in the CTest test name.  If this behavior is undesirable
-    (e.g. because the type names are unwieldy), this option will suppress this
-    behavior.
-
-  ``NO_PRETTY_VALUES``
-    By default, the value index of value-parameterized tests is replaced by the
-    actual value in the CTest test name.  If this behavior is undesirable
-    (e.g. because the value strings are unwieldy), this option will suppress
-    this behavior.
-
-  ``PROPERTIES name1 value1...``
-    Specifies additional properties to be set on all tests discovered by this
-    invocation of ``gtest_discover_tests()``.
-
-  ``TEST_LIST var``
-    Make the list of tests available in the variable ``var``, rather than the
-    default ``<target>_TESTS``.  This can be useful when the same test
-    executable is being used in multiple calls to ``gtest_discover_tests()``.
-    Note that this variable is only available in CTest.
-
-  ``DISCOVERY_TIMEOUT num``
-    Specifies how long (in seconds) CMake will wait for the test to enumerate
-    available tests.  If the test takes longer than this, discovery (and your
-    build) will fail.  Most test executables will enumerate their tests very
-    quickly, but under some exceptional circumstances, a test may require a
-    longer timeout.  The default is 5.  See also the ``TIMEOUT`` option of
-    :command:`execute_process`.
-
-    .. note::
-
-      In CMake versions 3.10.1 and 3.10.2, this option was called ``TIMEOUT``.
-      This clashed with the ``TIMEOUT`` test property, which is one of the
-      common properties that would be set with the ``PROPERTIES`` keyword,
-      usually leading to legal but unintended behavior.  The keyword was
-      changed to ``DISCOVERY_TIMEOUT`` in CMake 3.10.3 to address this
-      problem.  The ambiguous behavior of the ``TIMEOUT`` keyword in 3.10.1
-      and 3.10.2 has not been preserved.
-
-  ``XML_OUTPUT_DIR dir``
-    If specified, the parameter is passed along with ``--gtest_output=xml:``
-    to test executable. The actual file name is the same as the test target,
-    including prefix and suffix. This should be used instead of
-    ``EXTRA_ARGS --gtest_output=xml`` to avoid race conditions writing the
-    XML result output when using parallel test execution.
-
-  ``DISCOVERY_MODE``
-    Provides greater control over when ``gtest_discover_tests()`` performs test
-    discovery. By default, ``POST_BUILD`` sets up a post-build command
-    to perform test discovery at build time. In certain scenarios, like
-    cross-compiling, this ``POST_BUILD`` behavior is not desirable.
-    By contrast, ``PRE_TEST`` delays test discovery until just prior to test
-    execution. This way test discovery occurs in the target environment
-    where the test has a better chance at finding appropriate runtime
-    dependencies.
-
-    ``DISCOVERY_MODE`` defaults to the value of the
-    ``CMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE`` variable if it is not
-    passed when calling ``gtest_discover_tests()``. This provides a mechanism
-    for globally selecting a preferred test discovery behavior without having
-    to modify each call site.
-
-#]=======================================================================]
-
-# Save project's policies
-cmake_policy(PUSH)
-cmake_policy(SET CMP0057 NEW) # if IN_LIST
-
-#------------------------------------------------------------------------------
-function(gtest_add_tests)
-
-  if (ARGC LESS 1)
-    message(FATAL_ERROR "No arguments supplied to gtest_add_tests()")
-  endif()
-
-  set(options
-      SKIP_DEPENDENCY
-  )
-  set(oneValueArgs
-      TARGET
-      WORKING_DIRECTORY
-      TEST_PREFIX
-      TEST_SUFFIX
-      TEST_LIST
-  )
-  set(multiValueArgs
-      SOURCES
-      EXTRA_ARGS
-  )
-  set(allKeywords ${options} ${oneValueArgs} ${multiValueArgs})
-
-  unset(sources)
-  if("${ARGV0}" IN_LIST allKeywords)
-    cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
-    set(autoAddSources YES)
-  else()
-    # Non-keyword syntax, convert to keyword form
-    if (ARGC LESS 3)
-      message(FATAL_ERROR "gtest_add_tests() without keyword options requires at least 3 arguments")
-    endif()
-    set(ARGS_TARGET     "${ARGV0}")
-    set(ARGS_EXTRA_ARGS "${ARGV1}")
-    if(NOT "${ARGV2}" STREQUAL "AUTO")
-      set(ARGS_SOURCES "${ARGV}")
-      list(REMOVE_AT ARGS_SOURCES 0 1)
-    endif()
-  endif()
-
-  # The non-keyword syntax allows the first argument to be an arbitrary
-  # executable rather than a target if source files are also provided. In all
-  # other cases, both forms require a target.
-  if(NOT TARGET "${ARGS_TARGET}" AND NOT ARGS_SOURCES)
-    message(FATAL_ERROR "${ARGS_TARGET} does not define an existing CMake target")
-  endif()
-  if(NOT ARGS_WORKING_DIRECTORY)
-    unset(workDir)
-  else()
-    set(workDir WORKING_DIRECTORY "${ARGS_WORKING_DIRECTORY}")
-  endif()
-
-  if(NOT ARGS_SOURCES)
-    get_property(ARGS_SOURCES TARGET ${ARGS_TARGET} PROPERTY SOURCES)
-  endif()
-
-  unset(testList)
-
-  set(gtest_case_name_regex ".*\\( *([A-Za-z_0-9]+) *, *([A-Za-z_0-9]+) *\\).*")
-  set(gtest_test_type_regex "(TYPED_TEST|TEST_?[FP]?)")
-
-  foreach(source IN LISTS ARGS_SOURCES)
-    if(NOT ARGS_SKIP_DEPENDENCY)
-      set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${source})
-    endif()
-    file(READ "${source}" contents)
-    string(REGEX MATCHALL "${gtest_test_type_regex} *\\(([A-Za-z_0-9 ,]+)\\)" found_tests "${contents}")
-    foreach(hit ${found_tests})
-      string(REGEX MATCH "${gtest_test_type_regex}" test_type ${hit})
-
-      # Parameterized tests have a different signature for the filter
-      if("x${test_type}" STREQUAL "xTEST_P")
-        string(REGEX REPLACE ${gtest_case_name_regex}  "*/\\1.\\2/*" gtest_test_name ${hit})
-      elseif("x${test_type}" STREQUAL "xTEST_F" OR "x${test_type}" STREQUAL "xTEST")
-        string(REGEX REPLACE ${gtest_case_name_regex} "\\1.\\2" gtest_test_name ${hit})
-      elseif("x${test_type}" STREQUAL "xTYPED_TEST")
-        string(REGEX REPLACE ${gtest_case_name_regex} "\\1/*.\\2" gtest_test_name ${hit})
-      else()
-        message(WARNING "Could not parse GTest ${hit} for adding to CTest.")
-        continue()
-      endif()
-
-      # Make sure tests disabled in GTest get disabled in CTest
-      if(gtest_test_name MATCHES "(^|\\.)DISABLED_")
-        # Add the disabled test if CMake is new enough
-        # Note that this check is to allow backwards compatibility so this
-        # module can be copied locally in projects to use with older CMake
-        # versions
-        if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.8.20170401)
-          string(REGEX REPLACE
-                 "(^|\\.)DISABLED_" "\\1"
-                 orig_test_name "${gtest_test_name}"
-          )
-          set(ctest_test_name
-              ${ARGS_TEST_PREFIX}${orig_test_name}${ARGS_TEST_SUFFIX}
-          )
-          add_test(NAME ${ctest_test_name}
-                   ${workDir}
-                   COMMAND ${ARGS_TARGET}
-                     --gtest_also_run_disabled_tests
-                     --gtest_filter=${gtest_test_name}
-                     ${ARGS_EXTRA_ARGS}
-          )
-          set_tests_properties(${ctest_test_name} PROPERTIES DISABLED TRUE)
-          list(APPEND testList ${ctest_test_name})
-        endif()
-      else()
-        set(ctest_test_name ${ARGS_TEST_PREFIX}${gtest_test_name}${ARGS_TEST_SUFFIX})
-        add_test(NAME ${ctest_test_name}
-                 ${workDir}
-                 COMMAND ${ARGS_TARGET}
-                   --gtest_filter=${gtest_test_name}
-                   ${ARGS_EXTRA_ARGS}
-        )
-        list(APPEND testList ${ctest_test_name})
-      endif()
-    endforeach()
-  endforeach()
-
-  if(ARGS_TEST_LIST)
-    set(${ARGS_TEST_LIST} ${testList} PARENT_SCOPE)
-  endif()
-
-endfunction()
-
-#------------------------------------------------------------------------------
-
-function(gtest_discover_tests TARGET)
-  cmake_parse_arguments(
-    ""
-    "NO_PRETTY_TYPES;NO_PRETTY_VALUES"
-    "TEST_PREFIX;TEST_SUFFIX;WORKING_DIRECTORY;TEST_LIST;DISCOVERY_TIMEOUT;XML_OUTPUT_DIR;DISCOVERY_MODE"
-    "EXTRA_ARGS;PROPERTIES"
-    ${ARGN}
-  )
-
-  if(NOT _WORKING_DIRECTORY)
-    set(_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
-  endif()
-  if(NOT _TEST_LIST)
-    set(_TEST_LIST ${TARGET}_TESTS)
-  endif()
-  if(NOT _DISCOVERY_TIMEOUT)
-    set(_DISCOVERY_TIMEOUT 5)
-  endif()
-  if(NOT _DISCOVERY_MODE)
-    if(NOT CMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE)
-      set(CMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE "POST_BUILD")
-    endif()
-    set(_DISCOVERY_MODE ${CMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE})
-  endif()
-
-  get_property(
-    has_counter
-    TARGET ${TARGET}
-    PROPERTY CTEST_DISCOVERED_TEST_COUNTER
-    SET
-  )
-  if(has_counter)
-    get_property(
-      counter
-      TARGET ${TARGET}
-      PROPERTY CTEST_DISCOVERED_TEST_COUNTER
-    )
-    math(EXPR counter "${counter} + 1")
-  else()
-    set(counter 1)
-  endif()
-  set_property(
-    TARGET ${TARGET}
-    PROPERTY CTEST_DISCOVERED_TEST_COUNTER
-    ${counter}
-  )
-
-  # Define rule to generate test list for aforementioned test executable
-  set(ctest_file_base "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}[${counter}]")
-  set(ctest_include_file "${ctest_file_base}_include.cmake")
-  set(ctest_tests_file "${ctest_file_base}_tests.cmake")
-  get_property(crosscompiling_emulator
-    TARGET ${TARGET}
-    PROPERTY CROSSCOMPILING_EMULATOR
-  )
-
-  if(_DISCOVERY_MODE STREQUAL "POST_BUILD")
-    add_custom_command(
-      TARGET ${TARGET} POST_BUILD
-      BYPRODUCTS "${ctest_tests_file}"
-      COMMAND "${CMAKE_COMMAND}"
-              -D "TEST_TARGET=${TARGET}"
-              -D "TEST_EXECUTABLE=$<TARGET_FILE:${TARGET}>"
-              -D "TEST_EXECUTOR=${crosscompiling_emulator}"
-              -D "TEST_WORKING_DIR=${_WORKING_DIRECTORY}"
-              -D "TEST_EXTRA_ARGS=${_EXTRA_ARGS}"
-              -D "TEST_PROPERTIES=${_PROPERTIES}"
-              -D "TEST_PREFIX=${_TEST_PREFIX}"
-              -D "TEST_SUFFIX=${_TEST_SUFFIX}"
-              -D "NO_PRETTY_TYPES=${_NO_PRETTY_TYPES}"
-              -D "NO_PRETTY_VALUES=${_NO_PRETTY_VALUES}"
-              -D "TEST_LIST=${_TEST_LIST}"
-              -D "CTEST_FILE=${ctest_tests_file}"
-              -D "TEST_DISCOVERY_TIMEOUT=${_DISCOVERY_TIMEOUT}"
-              -D "TEST_XML_OUTPUT_DIR=${_XML_OUTPUT_DIR}"
-              -P "${_GOOGLETEST_DISCOVER_TESTS_SCRIPT}"
-      VERBATIM
-    )
-
-    file(WRITE "${ctest_include_file}"
-      "if(EXISTS \"${ctest_tests_file}\")\n"
-      "  include(\"${ctest_tests_file}\")\n"
-      "else()\n"
-      "  add_test(${TARGET}_NOT_BUILT ${TARGET}_NOT_BUILT)\n"
-      "endif()\n"
-    )
-  elseif(_DISCOVERY_MODE STREQUAL "PRE_TEST")
-
-    get_property(GENERATOR_IS_MULTI_CONFIG GLOBAL
-        PROPERTY GENERATOR_IS_MULTI_CONFIG
-    )
-
-    if(GENERATOR_IS_MULTI_CONFIG)
-      set(ctest_tests_file "${ctest_file_base}_tests-$<CONFIG>.cmake")
-    endif()
-
-    string(CONCAT ctest_include_content
-      "if(EXISTS \"$<TARGET_FILE:${TARGET}>\")"                                    "\n"
-      "  if(\"$<TARGET_FILE:${TARGET}>\" IS_NEWER_THAN \"${ctest_tests_file}\")"   "\n"
-      "    include(GoogleTestAddTests)"                                            "\n"
-      "    gtest_discover_tests_impl("                                             "\n"
-      "      TEST_EXECUTABLE"        " [==[" "$<TARGET_FILE:${TARGET}>"   "]==]"   "\n"
-      "      TEST_EXECUTOR"          " [==[" "${crosscompiling_emulator}" "]==]"   "\n"
-      "      TEST_WORKING_DIR"       " [==[" "${_WORKING_DIRECTORY}"      "]==]"   "\n"
-      "      TEST_EXTRA_ARGS"        " [==[" "${_EXTRA_ARGS}"             "]==]"   "\n"
-      "      TEST_PROPERTIES"        " [==[" "${_PROPERTIES}"             "]==]"   "\n"
-      "      TEST_PREFIX"            " [==[" "${_TEST_PREFIX}"            "]==]"   "\n"
-      "      TEST_SUFFIX"            " [==[" "${_TEST_SUFFIX}"            "]==]"   "\n"
-      "      NO_PRETTY_TYPES"        " [==[" "${_NO_PRETTY_TYPES}"        "]==]"   "\n"
-      "      NO_PRETTY_VALUES"       " [==[" "${_NO_PRETTY_VALUES}"       "]==]"   "\n"
-      "      TEST_LIST"              " [==[" "${_TEST_LIST}"              "]==]"   "\n"
-      "      CTEST_FILE"             " [==[" "${ctest_tests_file}"        "]==]"   "\n"
-      "      TEST_DISCOVERY_TIMEOUT" " [==[" "${_DISCOVERY_TIMEOUT}"      "]==]"   "\n"
-      "      TEST_XML_OUTPUT_DIR"    " [==[" "${_XML_OUTPUT_DIR}"         "]==]"   "\n"
-      "    )"                                                                      "\n"
-      "  endif()"                                                                  "\n"
-      "  include(\"${ctest_tests_file}\")"                                         "\n"
-      "else()"                                                                     "\n"
-      "  add_test(${TARGET}_NOT_BUILT ${TARGET}_NOT_BUILT)"                        "\n"
-      "endif()"                                                                    "\n"
-    )
-
-    if(GENERATOR_IS_MULTI_CONFIG)
-      foreach(_config ${CMAKE_CONFIGURATION_TYPES})
-        file(GENERATE OUTPUT "${ctest_file_base}_include-${_config}.cmake" CONTENT "${ctest_include_content}" CONDITION $<CONFIG:${_config}>)
-      endforeach()
-      file(WRITE "${ctest_include_file}" "include(\"${ctest_file_base}_include-\${CTEST_CONFIGURATION_TYPE}.cmake\")")
-    else()
-      file(GENERATE OUTPUT "${ctest_file_base}_include.cmake" CONTENT "${ctest_include_content}")
-      file(WRITE "${ctest_include_file}" "include(\"${ctest_file_base}_include.cmake\")")
-    endif()
-
-  else()
-    message(FATAL_ERROR "Unknown DISCOVERY_MODE: ${_DISCOVERY_MODE}")
-  endif()
-
-  # Add discovered tests to directory TEST_INCLUDE_FILES
-  set_property(DIRECTORY
-    APPEND PROPERTY TEST_INCLUDE_FILES "${ctest_include_file}"
-  )
-
-endfunction()
-
-###############################################################################
-
-set(_GOOGLETEST_DISCOVER_TESTS_SCRIPT
-  ${CMAKE_CURRENT_LIST_DIR}/GoogleTestAddTests.cmake
-)
-
-# Restore project's policies
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/GoogleTestAddTests.cmake b/share/cmake-3.18/Modules/GoogleTestAddTests.cmake
deleted file mode 100644
index 5d098d9..0000000
--- a/share/cmake-3.18/Modules/GoogleTestAddTests.cmake
+++ /dev/null
@@ -1,188 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-cmake_minimum_required(VERSION ${CMAKE_VERSION})
-
-# Overwrite possibly existing ${_CTEST_FILE} with empty file
-set(flush_tests_MODE WRITE)
-
-# Flushes script to ${_CTEST_FILE}
-macro(flush_script)
-  file(${flush_tests_MODE} "${_CTEST_FILE}" "${script}")
-  set(flush_tests_MODE APPEND)
-
-  set(script "")
-endmacro()
-
-# Flushes tests_buffer to tests
-macro(flush_tests_buffer)
-  list(APPEND tests "${tests_buffer}")
-  set(tests_buffer "")
-endmacro()
-
-macro(add_command NAME)
-  set(_args "")
-  foreach(_arg ${ARGN})
-    if(_arg MATCHES "[^-./:a-zA-Z0-9_]")
-      string(APPEND _args " [==[${_arg}]==]")
-    else()
-      string(APPEND _args " ${_arg}")
-    endif()
-  endforeach()
-  string(APPEND script "${NAME}(${_args})\n")
-  string(LENGTH "${script}" _script_len)
-  if(${_script_len} GREATER "50000")
-    flush_script()
-  endif()
-  # Unsets macro local variables to prevent leakage outside of this macro.
-  unset(_args)
-  unset(_script_len)
-endmacro()
-
-function(gtest_discover_tests_impl)
-
-  cmake_parse_arguments(
-    ""
-    ""
-    "NO_PRETTY_TYPES;NO_PRETTY_VALUES;TEST_EXECUTABLE;TEST_EXECUTOR;TEST_WORKING_DIR;TEST_PREFIX;TEST_SUFFIX;TEST_LIST;CTEST_FILE;TEST_DISCOVERY_TIMEOUT;TEST_XML_OUTPUT_DIR"
-    "TEST_EXTRA_ARGS;TEST_PROPERTIES"
-    ${ARGN}
-  )
-
-  set(prefix "${_TEST_PREFIX}")
-  set(suffix "${_TEST_SUFFIX}")
-  set(extra_args ${_TEST_EXTRA_ARGS})
-  set(properties ${_TEST_PROPERTIES})
-  set(script)
-  set(suite)
-  set(tests)
-  set(tests_buffer)
-
-  # Run test executable to get list of available tests
-  if(NOT EXISTS "${_TEST_EXECUTABLE}")
-    message(FATAL_ERROR
-      "Specified test executable does not exist.\n"
-      "  Path: '${_TEST_EXECUTABLE}'"
-    )
-  endif()
-  execute_process(
-    COMMAND ${_TEST_EXECUTOR} "${_TEST_EXECUTABLE}" --gtest_list_tests
-    WORKING_DIRECTORY "${_TEST_WORKING_DIR}"
-    TIMEOUT ${_TEST_DISCOVERY_TIMEOUT}
-    OUTPUT_VARIABLE output
-    RESULT_VARIABLE result
-  )
-  if(NOT ${result} EQUAL 0)
-    string(REPLACE "\n" "\n    " output "${output}")
-    message(FATAL_ERROR
-      "Error running test executable.\n"
-      "  Path: '${_TEST_EXECUTABLE}'\n"
-      "  Result: ${result}\n"
-      "  Output:\n"
-      "    ${output}\n"
-    )
-  endif()
-
-  # Preserve semicolon in test-parameters
-  string(REPLACE [[;]] [[\;]] output "${output}")
-  string(REPLACE "\n" ";" output "${output}")
-
-  # Parse output
-  foreach(line ${output})
-    # Skip header
-    if(NOT line MATCHES "gtest_main\\.cc")
-      # Do we have a module name or a test name?
-      if(NOT line MATCHES "^  ")
-        # Module; remove trailing '.' to get just the name...
-        string(REGEX REPLACE "\\.( *#.*)?" "" suite "${line}")
-        if(line MATCHES "#" AND NOT _NO_PRETTY_TYPES)
-          string(REGEX REPLACE "/[0-9]\\.+ +#.*= +" "/" pretty_suite "${line}")
-        else()
-          set(pretty_suite "${suite}")
-        endif()
-        string(REGEX REPLACE "^DISABLED_" "" pretty_suite "${pretty_suite}")
-      else()
-        # Test name; strip spaces and comments to get just the name...
-        string(REGEX REPLACE " +" "" test "${line}")
-        if(test MATCHES "#" AND NOT _NO_PRETTY_VALUES)
-          string(REGEX REPLACE "/[0-9]+#GetParam..=" "/" pretty_test "${test}")
-        else()
-          string(REGEX REPLACE "#.*" "" pretty_test "${test}")
-        endif()
-        string(REGEX REPLACE "^DISABLED_" "" pretty_test "${pretty_test}")
-        string(REGEX REPLACE "#.*" "" test "${test}")
-        if(NOT "${_TEST_XML_OUTPUT_DIR}" STREQUAL "")
-          set(TEST_XML_OUTPUT_PARAM "--gtest_output=xml:${_TEST_XML_OUTPUT_DIR}/${prefix}${suite}.${test}${suffix}.xml")
-        else()
-          unset(TEST_XML_OUTPUT_PARAM)
-        endif()
-
-        # sanitize test name for further processing downstream
-        set(testname "${prefix}${pretty_suite}.${pretty_test}${suffix}")
-        # escape \
-        string(REPLACE [[\]] [[\\]] testname "${testname}")
-        # escape ;
-        string(REPLACE [[;]] [[\;]] testname "${testname}")
-        # escape $
-        string(REPLACE [[$]] [[\$]] testname "${testname}")
-
-        # ...and add to script
-        add_command(add_test
-          "${testname}"
-          ${_TEST_EXECUTOR}
-          "${_TEST_EXECUTABLE}"
-          "--gtest_filter=${suite}.${test}"
-          "--gtest_also_run_disabled_tests"
-          ${TEST_XML_OUTPUT_PARAM}
-          ${extra_args}
-        )
-        if(suite MATCHES "^DISABLED" OR test MATCHES "^DISABLED")
-          add_command(set_tests_properties
-            "${testname}"
-            PROPERTIES DISABLED TRUE
-          )
-        endif()
-        add_command(set_tests_properties
-          "${testname}"
-          PROPERTIES
-          WORKING_DIRECTORY "${_TEST_WORKING_DIR}"
-          SKIP_REGULAR_EXPRESSION "\\\\[  SKIPPED \\\\]"
-          ${properties}
-        )
-        list(APPEND tests_buffer "${testname}")
-        list(LENGTH tests_buffer tests_buffer_length)
-        if(${tests_buffer_length} GREATER "250")
-          flush_tests_buffer()
-        endif()
-      endif()
-    endif()
-  endforeach()
-
-
-  # Create a list of all discovered tests, which users may use to e.g. set
-  # properties on the tests
-  flush_tests_buffer()
-  add_command(set ${_TEST_LIST} ${tests})
-
-  # Write CTest script
-  flush_script()
-
-endfunction()
-
-if(CMAKE_SCRIPT_MODE_FILE)
-  gtest_discover_tests_impl(
-    NO_PRETTY_TYPES ${NO_PRETTY_TYPES}
-    NO_PRETTY_VALUES ${NO_PRETTY_VALUES}
-    TEST_EXECUTABLE ${TEST_EXECUTABLE}
-    TEST_EXECUTOR ${TEST_EXECUTOR}
-    TEST_WORKING_DIR ${TEST_WORKING_DIR}
-    TEST_PREFIX ${TEST_PREFIX}
-    TEST_SUFFIX ${TEST_SUFFIX}
-    TEST_LIST ${TEST_LIST}
-    CTEST_FILE ${CTEST_FILE}
-    TEST_DISCOVERY_TIMEOUT ${TEST_DISCOVERY_TIMEOUT}
-    TEST_XML_OUTPUT_DIR ${TEST_XML_OUTPUT_DIR}
-    TEST_EXTRA_ARGS ${TEST_EXTRA_ARGS}
-    TEST_PROPERTIES ${TEST_PROPERTIES}
-  )
-endif()
diff --git a/share/cmake-3.18/Modules/InstallRequiredSystemLibraries.cmake b/share/cmake-3.18/Modules/InstallRequiredSystemLibraries.cmake
deleted file mode 100644
index caca697..0000000
--- a/share/cmake-3.18/Modules/InstallRequiredSystemLibraries.cmake
+++ /dev/null
@@ -1,772 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-InstallRequiredSystemLibraries
-------------------------------
-
-Include this module to search for compiler-provided system runtime
-libraries and add install rules for them.  Some optional variables
-may be set prior to including the module to adjust behavior:
-
-``CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS``
-  Specify additional runtime libraries that may not be detected.
-  After inclusion any detected libraries will be appended to this.
-
-``CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP``
-  Set to TRUE to skip calling the :command:`install(PROGRAMS)` command to
-  allow the includer to specify its own install rule, using the value of
-  ``CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS`` to get the list of libraries.
-
-``CMAKE_INSTALL_DEBUG_LIBRARIES``
-  Set to TRUE to install the debug runtime libraries when available
-  with MSVC tools.
-
-``CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY``
-  Set to TRUE to install only the debug runtime libraries with MSVC
-  tools even if the release runtime libraries are also available.
-
-``CMAKE_INSTALL_UCRT_LIBRARIES``
-  Set to TRUE to install the Windows Universal CRT libraries for
-  app-local deployment (e.g. to Windows XP).  This is meaningful
-  only with MSVC from Visual Studio 2015 or higher.
-
-  One may set a ``CMAKE_WINDOWS_KITS_10_DIR`` *environment variable*
-  to an absolute path to tell CMake to look for Windows 10 SDKs in
-  a custom location.  The specified directory is expected to contain
-  ``Redist/ucrt/DLLs/*`` directories.
-
-``CMAKE_INSTALL_MFC_LIBRARIES``
-  Set to TRUE to install the MSVC MFC runtime libraries.
-
-``CMAKE_INSTALL_OPENMP_LIBRARIES``
-  Set to TRUE to install the MSVC OpenMP runtime libraries
-
-``CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION``
-  Specify the :command:`install(PROGRAMS)` command ``DESTINATION``
-  option.  If not specified, the default is ``bin`` on Windows
-  and ``lib`` elsewhere.
-
-``CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS``
-  Set to TRUE to disable warnings about required library files that
-  do not exist.  (For example, Visual Studio Express editions may
-  not provide the redistributable files.)
-
-``CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT``
-  Specify the :command:`install(PROGRAMS)` command ``COMPONENT``
-  option.  If not specified, no such option will be used.
-#]=======================================================================]
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced
-
-set(_IRSL_HAVE_Intel FALSE)
-set(_IRSL_HAVE_MSVC FALSE)
-foreach(LANG IN ITEMS C CXX Fortran)
-  if("${CMAKE_${LANG}_COMPILER_ID}" STREQUAL "Intel")
-    if(NOT _IRSL_HAVE_Intel)
-      get_filename_component(_Intel_basedir "${CMAKE_${LANG}_COMPILER}" PATH)
-      if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-        set(_Intel_archdir intel64)
-      else()
-        set(_Intel_archdir ia32)
-      endif()
-      set(_Intel_compiler_ver ${CMAKE_${LANG}_COMPILER_VERSION})
-      if(WIN32)
-        get_filename_component(_Intel_redistdir "${_Intel_basedir}/../../redist/${_Intel_archdir}/compiler" ABSOLUTE)
-      elseif(APPLE)
-        get_filename_component(_Intel_redistdir "${_Intel_basedir}/../../compiler/lib" ABSOLUTE)
-      else()
-        if(EXISTS "${_Intel_basedir}/../lib/${_Intel_archdir}_lin")
-          get_filename_component(_Intel_redistdir "${_Intel_basedir}/../lib/${_Intel_archdir}" ABSOLUTE)
-        else()
-          get_filename_component(_Intel_redistdir "${_Intel_basedir}/../../compiler/lib/${_Intel_archdir}_lin" ABSOLUTE)
-        endif()
-      endif()
-      set(_IRSL_HAVE_Intel TRUE)
-    endif()
-  elseif("${CMAKE_${LANG}_COMPILER_ID}" STREQUAL "MSVC")
-    set(_IRSL_HAVE_MSVC TRUE)
-  endif()
-endforeach()
-
-if(MSVC)
-  file(TO_CMAKE_PATH "$ENV{SYSTEMROOT}" SYSTEMROOT)
-
-  if(CMAKE_CL_64)
-    if(MSVC_VERSION GREATER 1599)
-      # VS 10 and later:
-      set(CMAKE_MSVC_ARCH x64)
-    else()
-      # VS 9 and earlier:
-      set(CMAKE_MSVC_ARCH amd64)
-    endif()
-  else()
-    set(CMAKE_MSVC_ARCH x86)
-  endif()
-
-  get_filename_component(devenv_dir "${CMAKE_MAKE_PROGRAM}" PATH)
-  get_filename_component(base_dir "${devenv_dir}/../.." ABSOLUTE)
-
-  if(MSVC_VERSION EQUAL 1300)
-    set(__install__libs
-      "${SYSTEMROOT}/system32/msvcp70.dll"
-      "${SYSTEMROOT}/system32/msvcr70.dll"
-      )
-  endif()
-
-  if(MSVC_VERSION EQUAL 1310)
-    set(__install__libs
-      "${SYSTEMROOT}/system32/msvcp71.dll"
-      "${SYSTEMROOT}/system32/msvcr71.dll"
-      )
-  endif()
-
-  if(MSVC_TOOLSET_VERSION EQUAL 80)
-    # Find the runtime library redistribution directory.
-    get_filename_component(msvc_install_dir
-      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0;InstallDir]" ABSOLUTE)
-    if(DEFINED MSVC80_REDIST_DIR AND EXISTS "${MSVC80_REDIST_DIR}")
-      set(MSVC_REDIST_DIR "${MSVC80_REDIST_DIR}") # use old cache entry
-    endif()
-    find_path(MSVC_REDIST_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest
-      PATHS
-        "${msvc_install_dir}/../../VC/redist"
-        "${base_dir}/VC/redist"
-      )
-    mark_as_advanced(MSVC_REDIST_DIR)
-    set(MSVC_CRT_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC80.CRT")
-
-    # Install the manifest that allows DLLs to be loaded from the
-    # directory containing the executable.
-    if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
-      set(__install__libs
-        "${MSVC_CRT_DIR}/Microsoft.VC80.CRT.manifest"
-        "${MSVC_CRT_DIR}/msvcm80.dll"
-        "${MSVC_CRT_DIR}/msvcp80.dll"
-        "${MSVC_CRT_DIR}/msvcr80.dll"
-        )
-    else()
-      set(__install__libs)
-    endif()
-
-    if(CMAKE_INSTALL_DEBUG_LIBRARIES)
-      set(MSVC_CRT_DIR
-        "${MSVC_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC80.DebugCRT")
-      set(__install__libs ${__install__libs}
-        "${MSVC_CRT_DIR}/Microsoft.VC80.DebugCRT.manifest"
-        "${MSVC_CRT_DIR}/msvcm80d.dll"
-        "${MSVC_CRT_DIR}/msvcp80d.dll"
-        "${MSVC_CRT_DIR}/msvcr80d.dll"
-        )
-    endif()
-  endif()
-
-  if(MSVC_TOOLSET_VERSION EQUAL 90)
-    # Find the runtime library redistribution directory.
-    get_filename_component(msvc_install_dir
-      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0;InstallDir]" ABSOLUTE)
-    get_filename_component(msvc_express_install_dir
-      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\9.0;InstallDir]" ABSOLUTE)
-    if(DEFINED MSVC90_REDIST_DIR AND EXISTS "${MSVC90_REDIST_DIR}")
-      set(MSVC_REDIST_DIR "${MSVC90_REDIST_DIR}") # use old cache entry
-    endif()
-    find_path(MSVC_REDIST_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.VC90.CRT/Microsoft.VC90.CRT.manifest
-      PATHS
-        "${msvc_install_dir}/../../VC/redist"
-        "${msvc_express_install_dir}/../../VC/redist"
-        "${base_dir}/VC/redist"
-      )
-    mark_as_advanced(MSVC_REDIST_DIR)
-    set(MSVC_CRT_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC90.CRT")
-
-    # Install the manifest that allows DLLs to be loaded from the
-    # directory containing the executable.
-    if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
-      set(__install__libs
-        "${MSVC_CRT_DIR}/Microsoft.VC90.CRT.manifest"
-        "${MSVC_CRT_DIR}/msvcm90.dll"
-        "${MSVC_CRT_DIR}/msvcp90.dll"
-        "${MSVC_CRT_DIR}/msvcr90.dll"
-        )
-    else()
-      set(__install__libs)
-    endif()
-
-    if(CMAKE_INSTALL_DEBUG_LIBRARIES)
-      set(MSVC_CRT_DIR
-        "${MSVC_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC90.DebugCRT")
-      set(__install__libs ${__install__libs}
-        "${MSVC_CRT_DIR}/Microsoft.VC90.DebugCRT.manifest"
-        "${MSVC_CRT_DIR}/msvcm90d.dll"
-        "${MSVC_CRT_DIR}/msvcp90d.dll"
-        "${MSVC_CRT_DIR}/msvcr90d.dll"
-        )
-    endif()
-  endif()
-
-  set(MSVC_REDIST_NAME "")
-  set(_MSVC_DLL_VERSION "")
-  set(_MSVC_IDE_VERSION "")
-  if(MSVC_VERSION GREATER_EQUAL 2000)
-    message(WARNING "MSVC ${MSVC_VERSION} not yet supported.")
-  elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 143)
-    message(WARNING "MSVC toolset v${MSVC_TOOLSET_VERSION} not yet supported.")
-  elseif(MSVC_TOOLSET_VERSION EQUAL 142)
-    set(MSVC_REDIST_NAME VC142)
-    set(_MSVC_DLL_VERSION 140)
-    set(_MSVC_IDE_VERSION 16)
-    if(MSVC_VERSION EQUAL 1920)
-      # VS2019 named this differently prior to update 1.
-      set(MSVC_REDIST_NAME VC141)
-    endif()
-  elseif(MSVC_TOOLSET_VERSION EQUAL 141)
-    set(MSVC_REDIST_NAME VC141)
-    set(_MSVC_DLL_VERSION 140)
-    set(_MSVC_IDE_VERSION 15)
-    if(MSVC_VERSION EQUAL 1910)
-      # VS2017 named this differently prior to update 3.
-      set(MSVC_REDIST_NAME VC150)
-    endif()
-  elseif(MSVC_TOOLSET_VERSION)
-    set(MSVC_REDIST_NAME VC${MSVC_TOOLSET_VERSION})
-    math(EXPR _MSVC_DLL_VERSION "${MSVC_TOOLSET_VERSION} / 10 * 10")
-    math(EXPR _MSVC_IDE_VERSION "${MSVC_TOOLSET_VERSION} / 10")
-  endif()
-
-  set(_MSVCRT_DLL_VERSION "")
-  set(_MSVCRT_IDE_VERSION "")
-  if(_MSVC_IDE_VERSION GREATER_EQUAL 10)
-    set(_MSVCRT_DLL_VERSION "${_MSVC_DLL_VERSION}")
-    set(_MSVCRT_IDE_VERSION "${_MSVC_IDE_VERSION}")
-  endif()
-
-  if(_MSVCRT_DLL_VERSION)
-    set(v "${_MSVCRT_DLL_VERSION}")
-    set(vs "${_MSVCRT_IDE_VERSION}")
-
-    # Find the runtime library redistribution directory.
-    if(vs VERSION_LESS 15 AND DEFINED MSVC${vs}_REDIST_DIR AND EXISTS "${MSVC${vs}_REDIST_DIR}")
-      set(MSVC_REDIST_DIR "${MSVC${vs}_REDIST_DIR}") # use old cache entry
-    endif()
-    if(NOT vs VERSION_LESS 15)
-      set(_vs_redist_paths "")
-      # The toolset and its redistributables may come with any VS version 15 or newer.
-      set(_MSVC_IDE_VERSIONS 16 15)
-      foreach(_vs_ver ${_MSVC_IDE_VERSIONS})
-        set(_vs_glob_redist_paths "")
-        cmake_host_system_information(RESULT _vs_dir QUERY VS_${_vs_ver}_DIR) # undocumented query
-        if(IS_DIRECTORY "${_vs_dir}")
-          file(GLOB _vs_glob_redist_paths "${_vs_dir}/VC/Redist/MSVC/*")
-          list(REVERSE _vs_glob_redist_paths)
-          list(APPEND _vs_redist_paths ${_vs_glob_redist_paths})
-        endif()
-        unset(_vs_glob_redist_paths)
-      endforeach()
-      unset(_MSVC_IDE_VERSIONS)
-      unset(_vs_dir)
-    else()
-      get_filename_component(_vs_dir
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${vs}.0;InstallDir]" ABSOLUTE)
-      set(programfilesx86 "ProgramFiles(x86)")
-      set(_vs_redist_paths
-        "${_vs_dir}/../../VC/redist"
-        "${base_dir}/VC/redist"
-        "$ENV{ProgramFiles}/Microsoft Visual Studio ${vs}.0/VC/redist"
-        "$ENV{${programfilesx86}}/Microsoft Visual Studio ${vs}.0/VC/redist"
-        )
-      unset(_vs_dir)
-      unset(programfilesx86)
-    endif()
-    find_path(MSVC_REDIST_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.CRT PATHS ${_vs_redist_paths})
-    unset(_vs_redist_paths)
-    mark_as_advanced(MSVC_REDIST_DIR)
-    set(MSVC_CRT_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.CRT")
-
-    if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
-      set(__install__libs
-        "${MSVC_CRT_DIR}/msvcp${v}.dll"
-        )
-      if(NOT vs VERSION_LESS 14)
-        foreach(crt
-            "${MSVC_CRT_DIR}/msvcp${v}_1.dll"
-            "${MSVC_CRT_DIR}/msvcp${v}_2.dll"
-            "${MSVC_CRT_DIR}/msvcp${v}_codecvt_ids.dll"
-            "${MSVC_CRT_DIR}/vcruntime${v}_1.dll"
-            )
-          if(EXISTS "${crt}")
-            list(APPEND __install__libs "${crt}")
-          endif()
-        endforeach()
-        list(APPEND __install__libs
-            "${MSVC_CRT_DIR}/vcruntime${v}.dll"
-            "${MSVC_CRT_DIR}/concrt${v}.dll"
-            )
-      else()
-        list(APPEND __install__libs "${MSVC_CRT_DIR}/msvcr${v}.dll")
-      endif()
-    else()
-      set(__install__libs)
-    endif()
-
-    if(CMAKE_INSTALL_DEBUG_LIBRARIES)
-      set(MSVC_CRT_DIR
-        "${MSVC_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.DebugCRT")
-      set(__install__libs ${__install__libs}
-        "${MSVC_CRT_DIR}/msvcp${v}d.dll"
-        )
-      if(NOT vs VERSION_LESS 14)
-        foreach(crt
-            "${MSVC_CRT_DIR}/msvcp${v}_1d.dll"
-            "${MSVC_CRT_DIR}/msvcp${v}_2d.dll"
-            "${MSVC_CRT_DIR}/msvcp${v}d_codecvt_ids.dll"
-            "${MSVC_CRT_DIR}/vcruntime${v}_1d.dll"
-            )
-          if(EXISTS "${crt}")
-            list(APPEND __install__libs "${crt}")
-          endif()
-        endforeach()
-        list(APPEND __install__libs
-            "${MSVC_CRT_DIR}/vcruntime${v}d.dll"
-            "${MSVC_CRT_DIR}/concrt${v}d.dll"
-            )
-      else()
-        list(APPEND __install__libs "${MSVC_CRT_DIR}/msvcr${v}d.dll")
-      endif()
-    endif()
-
-    if(CMAKE_INSTALL_UCRT_LIBRARIES AND NOT vs VERSION_LESS 14)
-      # Find the Windows Kits directory.
-      get_filename_component(windows_kits_dir
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]" ABSOLUTE)
-      set(programfilesx86 "ProgramFiles(x86)")
-      if(";${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION};$ENV{UCRTVersion};$ENV{WindowsSDKVersion};" MATCHES [=[;(10\.[0-9.]+)[;\]]=])
-        set(__ucrt_version "${CMAKE_MATCH_1}/")
-      else()
-        set(__ucrt_version "")
-      endif()
-      find_path(WINDOWS_KITS_DIR
-        NAMES
-          Redist/${__ucrt_version}ucrt/DLLs/${CMAKE_MSVC_ARCH}/ucrtbase.dll
-          Redist/ucrt/DLLs/${CMAKE_MSVC_ARCH}/ucrtbase.dll
-        PATHS
-        $ENV{CMAKE_WINDOWS_KITS_10_DIR}
-        "${windows_kits_dir}"
-        "$ENV{ProgramFiles}/Windows Kits/10"
-        "$ENV{${programfilesx86}}/Windows Kits/10"
-        )
-      mark_as_advanced(WINDOWS_KITS_DIR)
-
-      # Glob the list of UCRT DLLs.
-      if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
-        if(EXISTS "${WINDOWS_KITS_DIR}/Redist/${__ucrt_version}ucrt/DLLs/${CMAKE_MSVC_ARCH}/ucrtbase.dll")
-          file(GLOB __ucrt_dlls "${WINDOWS_KITS_DIR}/Redist/${__ucrt_version}ucrt/DLLs/${CMAKE_MSVC_ARCH}/*.dll")
-        else()
-          file(GLOB __ucrt_dlls "${WINDOWS_KITS_DIR}/Redist/ucrt/DLLs/${CMAKE_MSVC_ARCH}/*.dll")
-        endif()
-        list(APPEND __install__libs ${__ucrt_dlls})
-      endif()
-      if(CMAKE_INSTALL_DEBUG_LIBRARIES)
-        if(EXISTS "${WINDOWS_KITS_DIR}/bin/${__ucrt_version}${CMAKE_MSVC_ARCH}/ucrt/ucrtbased.dll")
-          file(GLOB __ucrt_dlls "${WINDOWS_KITS_DIR}/bin/${__ucrt_version}${CMAKE_MSVC_ARCH}/ucrt/*.dll")
-        else()
-          file(GLOB __ucrt_dlls "${WINDOWS_KITS_DIR}/bin/${CMAKE_MSVC_ARCH}/ucrt/*.dll")
-        endif()
-        list(APPEND __install__libs ${__ucrt_dlls})
-      endif()
-    endif()
-  endif()
-
-  if(CMAKE_INSTALL_MFC_LIBRARIES)
-    if(MSVC_VERSION EQUAL 1300)
-      set(__install__libs ${__install__libs}
-        "${SYSTEMROOT}/system32/mfc70.dll"
-        )
-    endif()
-
-    if(MSVC_VERSION EQUAL 1310)
-      set(__install__libs ${__install__libs}
-        "${SYSTEMROOT}/system32/mfc71.dll"
-        )
-    endif()
-
-    if(MSVC_VERSION EQUAL 1400)
-      if(CMAKE_INSTALL_DEBUG_LIBRARIES)
-        set(MSVC_MFC_DIR
-          "${MSVC_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC80.DebugMFC")
-        set(__install__libs ${__install__libs}
-          "${MSVC_MFC_DIR}/Microsoft.VC80.DebugMFC.manifest"
-          "${MSVC_MFC_DIR}/mfc80d.dll"
-          "${MSVC_MFC_DIR}/mfc80ud.dll"
-          "${MSVC_MFC_DIR}/mfcm80d.dll"
-          "${MSVC_MFC_DIR}/mfcm80ud.dll"
-          )
-      endif()
-
-      set(MSVC_MFC_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC80.MFC")
-      # Install the manifest that allows DLLs to be loaded from the
-      # directory containing the executable.
-      if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
-        set(__install__libs ${__install__libs}
-          "${MSVC_MFC_DIR}/Microsoft.VC80.MFC.manifest"
-          "${MSVC_MFC_DIR}/mfc80.dll"
-          "${MSVC_MFC_DIR}/mfc80u.dll"
-          "${MSVC_MFC_DIR}/mfcm80.dll"
-          "${MSVC_MFC_DIR}/mfcm80u.dll"
-          )
-      endif()
-
-      # include the language dll's for vs8 as well as the actual dll's
-      set(MSVC_MFCLOC_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC80.MFCLOC")
-      # Install the manifest that allows DLLs to be loaded from the
-      # directory containing the executable.
-      set(__install__libs ${__install__libs}
-        "${MSVC_MFCLOC_DIR}/Microsoft.VC80.MFCLOC.manifest"
-        "${MSVC_MFCLOC_DIR}/mfc80chs.dll"
-        "${MSVC_MFCLOC_DIR}/mfc80cht.dll"
-        "${MSVC_MFCLOC_DIR}/mfc80enu.dll"
-        "${MSVC_MFCLOC_DIR}/mfc80esp.dll"
-        "${MSVC_MFCLOC_DIR}/mfc80deu.dll"
-        "${MSVC_MFCLOC_DIR}/mfc80fra.dll"
-        "${MSVC_MFCLOC_DIR}/mfc80ita.dll"
-        "${MSVC_MFCLOC_DIR}/mfc80jpn.dll"
-        "${MSVC_MFCLOC_DIR}/mfc80kor.dll"
-        )
-    endif()
-
-    if(MSVC_VERSION EQUAL 1500)
-      if(CMAKE_INSTALL_DEBUG_LIBRARIES)
-        set(MSVC_MFC_DIR
-          "${MSVC_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC90.DebugMFC")
-        set(__install__libs ${__install__libs}
-          "${MSVC_MFC_DIR}/Microsoft.VC90.DebugMFC.manifest"
-          "${MSVC_MFC_DIR}/mfc90d.dll"
-          "${MSVC_MFC_DIR}/mfc90ud.dll"
-          "${MSVC_MFC_DIR}/mfcm90d.dll"
-          "${MSVC_MFC_DIR}/mfcm90ud.dll"
-          )
-      endif()
-
-      set(MSVC_MFC_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC90.MFC")
-      # Install the manifest that allows DLLs to be loaded from the
-      # directory containing the executable.
-      if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
-        set(__install__libs ${__install__libs}
-          "${MSVC_MFC_DIR}/Microsoft.VC90.MFC.manifest"
-          "${MSVC_MFC_DIR}/mfc90.dll"
-          "${MSVC_MFC_DIR}/mfc90u.dll"
-          "${MSVC_MFC_DIR}/mfcm90.dll"
-          "${MSVC_MFC_DIR}/mfcm90u.dll"
-          )
-      endif()
-
-      # include the language dll's for vs9 as well as the actual dll's
-      set(MSVC_MFCLOC_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC90.MFCLOC")
-      # Install the manifest that allows DLLs to be loaded from the
-      # directory containing the executable.
-      set(__install__libs ${__install__libs}
-        "${MSVC_MFCLOC_DIR}/Microsoft.VC90.MFCLOC.manifest"
-        "${MSVC_MFCLOC_DIR}/mfc90chs.dll"
-        "${MSVC_MFCLOC_DIR}/mfc90cht.dll"
-        "${MSVC_MFCLOC_DIR}/mfc90enu.dll"
-        "${MSVC_MFCLOC_DIR}/mfc90esp.dll"
-        "${MSVC_MFCLOC_DIR}/mfc90deu.dll"
-        "${MSVC_MFCLOC_DIR}/mfc90fra.dll"
-        "${MSVC_MFCLOC_DIR}/mfc90ita.dll"
-        "${MSVC_MFCLOC_DIR}/mfc90jpn.dll"
-        "${MSVC_MFCLOC_DIR}/mfc90kor.dll"
-        )
-    endif()
-
-    set(_MFC_DLL_VERSION "")
-    set(_MFC_IDE_VERSION "")
-    if(_MSVC_IDE_VERSION GREATER_EQUAL 10)
-      set(_MFC_DLL_VERSION ${_MSVC_DLL_VERSION})
-      set(_MFC_IDE_VERSION ${_MSVC_IDE_VERSION})
-    endif()
-
-    if(_MFC_DLL_VERSION)
-      set(v "${_MFC_DLL_VERSION}")
-      set(vs "${_MFC_IDE_VERSION}")
-
-      # Starting with VS 15 the MFC DLLs may be in a different directory.
-      if (NOT vs VERSION_LESS 15)
-        file(GLOB _MSVC_REDIST_DIRS "${MSVC_REDIST_DIR}/../*")
-        find_path(MSVC_REDIST_MFC_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.MFC
-          PATHS ${_MSVC_REDIST_DIRS} NO_DEFAULT_PATH)
-        mark_as_advanced(MSVC_REDIST_MFC_DIR)
-        unset(_MSVC_REDIST_DIRS)
-      else()
-        set(MSVC_REDIST_MFC_DIR "${MSVC_REDIST_DIR}")
-      endif()
-
-      # Multi-Byte Character Set versions of MFC are available as optional
-      # addon since Visual Studio 12.  So for version 12 or higher, check
-      # whether they are available and exclude them if they are not.
-
-      if(CMAKE_INSTALL_DEBUG_LIBRARIES)
-        set(MSVC_MFC_DIR
-          "${MSVC_REDIST_MFC_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.DebugMFC")
-        set(__install__libs ${__install__libs}
-          "${MSVC_MFC_DIR}/mfc${v}ud.dll"
-          "${MSVC_MFC_DIR}/mfcm${v}ud.dll"
-          )
-        if("${v}" LESS 12 OR EXISTS "${MSVC_MFC_DIR}/mfc${v}d.dll")
-          set(__install__libs ${__install__libs}
-            "${MSVC_MFC_DIR}/mfc${v}d.dll"
-          )
-        endif()
-        if("${v}" LESS 12 OR EXISTS "${MSVC_MFC_DIR}/mfcm${v}d.dll")
-          set(__install__libs ${__install__libs}
-            "${MSVC_MFC_DIR}/mfcm${v}d.dll"
-          )
-        endif()
-      endif()
-
-      set(MSVC_MFC_DIR "${MSVC_REDIST_MFC_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.MFC")
-      if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
-        set(__install__libs ${__install__libs}
-          "${MSVC_MFC_DIR}/mfc${v}u.dll"
-          "${MSVC_MFC_DIR}/mfcm${v}u.dll"
-          )
-        if("${v}" LESS 12 OR EXISTS "${MSVC_MFC_DIR}/mfc${v}.dll")
-          set(__install__libs ${__install__libs}
-            "${MSVC_MFC_DIR}/mfc${v}.dll"
-          )
-        endif()
-        if("${v}" LESS 12 OR EXISTS "${MSVC_MFC_DIR}/mfcm${v}.dll")
-          set(__install__libs ${__install__libs}
-            "${MSVC_MFC_DIR}/mfcm${v}.dll"
-          )
-        endif()
-      endif()
-
-      # include the language dll's as well as the actual dll's
-      set(MSVC_MFCLOC_DIR "${MSVC_REDIST_MFC_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.MFCLOC")
-      set(__install__libs ${__install__libs}
-        "${MSVC_MFCLOC_DIR}/mfc${v}chs.dll"
-        "${MSVC_MFCLOC_DIR}/mfc${v}cht.dll"
-        "${MSVC_MFCLOC_DIR}/mfc${v}deu.dll"
-        "${MSVC_MFCLOC_DIR}/mfc${v}enu.dll"
-        "${MSVC_MFCLOC_DIR}/mfc${v}esn.dll"
-        "${MSVC_MFCLOC_DIR}/mfc${v}fra.dll"
-        "${MSVC_MFCLOC_DIR}/mfc${v}ita.dll"
-        "${MSVC_MFCLOC_DIR}/mfc${v}jpn.dll"
-        "${MSVC_MFCLOC_DIR}/mfc${v}kor.dll"
-        "${MSVC_MFCLOC_DIR}/mfc${v}rus.dll"
-        )
-    endif()
-  endif()
-
-  # MSVC 8 was the first version with OpenMP
-  # Furthermore, there is no debug version of this
-  if(CMAKE_INSTALL_OPENMP_LIBRARIES AND _IRSL_HAVE_MSVC)
-    set(_MSOMP_DLL_VERSION ${_MSVC_DLL_VERSION})
-    set(_MSOMP_IDE_VERSION ${_MSVC_IDE_VERSION})
-
-    if(_MSOMP_DLL_VERSION)
-      set(v "${_MSOMP_DLL_VERSION}")
-      set(vs "${_MSOMP_IDE_VERSION}")
-      set(MSVC_OPENMP_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.OPENMP")
-
-      if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
-        set(__install__libs ${__install__libs}
-          "${MSVC_OPENMP_DIR}/vcomp${v}.dll")
-      endif()
-    endif()
-  endif()
-
-  foreach(lib
-      ${__install__libs}
-      )
-    if(EXISTS ${lib})
-      set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS
-        ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} ${lib})
-    else()
-      if(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
-        message(WARNING "system runtime library file does not exist: '${lib}'")
-        # This warning indicates an incomplete Visual Studio installation
-        # or a bug somewhere above here in this file.
-        # If you would like to avoid this warning, fix the real problem, or
-        # set CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS before including
-        # this file.
-      endif()
-    endif()
-  endforeach()
-endif()
-
-if(_IRSL_HAVE_Intel)
-  unset(__install_libs)
-  if(CMAKE_INSTALL_OPENMP_LIBRARIES)
-    if(WIN32)
-      list(APPEND __install_libs "${_Intel_redistdir}/libiomp5md.dll" "${_Intel_redistdir}/libiompstubs5md.dll")
-    elseif(APPLE)
-      list(APPEND __install_libs "${_Intel_redistdir}/libiomp5.dylib" "${_Intel_redistdir}/libiompstubs5.dylib")
-    else()
-      list(APPEND __install_libs "${_Intel_redistdir}/libiomp5.so" "${_Intel_redistdir}/libiompstubs5.so")
-      if(_Intel_compiler_ver VERSION_LESS 17)
-        list(APPEND __install_libs "${_Intel_redistdir}/libomp_db.so")
-      endif()
-      if(_Intel_compiler_ver VERSION_LESS 13)
-        list(APPEND __install_libs "${_Intel_redistdir}/libiompprof5.so")
-      endif()
-    endif()
-  endif()
-  if(WIN32)
-    set(__install_dirs "${_Intel_redistdir}/1033")
-    if(EXISTS "${_Intel_redistdir}/1041")
-      list(APPEND __install_dirs "${_Intel_redistdir}/1041")
-    endif()
-    if(_Intel_compiler_ver VERSION_LESS 18)
-      list(APPEND __install_dirs "${_Intel_redistdir}/irml" "${_Intel_redistdir}/irml_c")
-    endif()
-    foreach(__Intel_lib IN ITEMS cilkrts20.dll libchkp.dll libioffload_host.dll libirngmd.dll
-      libmmd.dll libmmdd.dll libmpx.dll liboffload.dll svml_dispmd.dll)
-
-      list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
-    endforeach()
-    if(CMAKE_C_COMPILER_ID STREQUAL Intel OR CMAKE_CXX_COMPILER_ID STREQUAL Intel)
-      list(APPEND __install_libs "${_Intel_redistdir}/libgfxoffload.dll")
-    endif()
-    if(CMAKE_Fortran_COMPILER_ID STREQUAL Intel)
-      foreach(__Intel_lib IN ITEMS ifdlg100.dll libicaf.dll libifcoremd.dll libifcoremdd.dll libifcorert.dll libifcorertd.dll libifportmd.dll)
-
-        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
-      endforeach()
-    endif()
-  elseif(APPLE)
-    foreach(__Intel_lib IN ITEMS libchkp.dylib libcilkrts.5.dylib libcilkrts.dylib libimf.dylib libintlc.dylib libirc.dylib libirng.dylib libsvml.dylib)
-      list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
-    endforeach()
-    if(CMAKE_C_COMPILER_ID STREQUAL Intel OR CMAKE_CXX_COMPILER_ID STREQUAL Intel)
-      if(_Intel_compiler_ver VERSION_LESS 17)
-        list(APPEND __install_libs "${_Intel_redistdir}/libistrconv.dylib")
-      endif()
-    endif()
-    if(CMAKE_Fortran_COMPILER_ID STREQUAL Intel)
-      foreach(__Intel_lib IN ITEMS libifcore.dylib libifcoremt.dylib libifport.dylib libifportmt.dylib)
-
-        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
-      endforeach()
-    endif()
-  else()
-    foreach(__Intel_lib IN ITEMS libchkp.so libcilkrts.so libcilkrts.so.5 libimf.so libintlc.so libintlc.so.5 libirc.so libpdbx.so libpdbx.so.5 libsvml.so)
-
-      list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
-    endforeach()
-    if(_Intel_compiler_ver VERSION_GREATER_EQUAL 13)
-      foreach(__Intel_lib IN ITEMS libirng.so liboffload.so liboffload.so.5)
-
-        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
-      endforeach()
-    endif()
-    if(CMAKE_C_COMPILER_ID STREQUAL Intel OR CMAKE_CXX_COMPILER_ID STREQUAL Intel)
-      set(__install_dirs "${_Intel_redistdir}/irml")
-      list(APPEND __install_libs "${_Intel_redistdir}/cilk_db.so")
-      if(_Intel_compiler_ver VERSION_GREATER_EQUAL 15)
-        list(APPEND __install_libs "${_Intel_redistdir}/libistrconv.so" "${_Intel_redistdir}/libgfxoffload.so")
-      endif()
-    endif()
-    if(_Intel_compiler_ver VERSION_GREATER_EQUAL 16)
-      foreach(__Intel_lib IN ITEMS libioffload_host.so libioffload_host.so.5 libioffload_target.so libioffload_target.so.5 libmpx.so offload_main)
-
-        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
-      endforeach()
-    endif()
-    if(_Intel_compiler_ver VERSION_LESS 15)
-      foreach(__Intel_lib IN ITEMS libcxaguard.so libcxaguard.so.5)
-
-        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
-      endforeach()
-    endif()
-    if(CMAKE_Fortran_COMPILER_ID STREQUAL Intel)
-      foreach(__Intel_lib IN ITEMS libicaf.so libifcore.so libifcore.so.5 libifcoremt.so libifcoremt.so.5 libifport.so libifport.so.5)
-
-        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
-      endforeach()
-    endif()
-  endif()
-
-  foreach(lib IN LISTS __install_libs)
-    if(EXISTS ${lib})
-      list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${lib})
-    else()
-      if(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
-        message(WARNING "system runtime library file does not exist: '${lib}'")
-      endif()
-    endif()
-  endforeach()
-
-  foreach(dir IN LISTS __install_dirs)
-    if(EXISTS ${dir})
-      list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_DIRECTORIES ${dir})
-    else()
-      if(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
-        message(WARNING "system runtime library file does not exist: '${dir}'")
-      endif()
-    endif()
-  endforeach()
-endif()
-
-if(WATCOM)
-  get_filename_component( CompilerPath ${CMAKE_C_COMPILER} PATH )
-  if(CMAKE_C_COMPILER_VERSION)
-    set(_compiler_version ${CMAKE_C_COMPILER_VERSION})
-  else()
-    set(_compiler_version ${CMAKE_CXX_COMPILER_VERSION})
-  endif()
-  string(REGEX MATCHALL "[0-9]+" _watcom_version_list "${_compiler_version}")
-  list(GET _watcom_version_list 0 _watcom_major)
-  list(GET _watcom_version_list 1 _watcom_minor)
-  set( __install__libs
-    ${CompilerPath}/clbr${_watcom_major}${_watcom_minor}.dll
-    ${CompilerPath}/mt7r${_watcom_major}${_watcom_minor}.dll
-    ${CompilerPath}/plbr${_watcom_major}${_watcom_minor}.dll )
-  foreach(lib
-      ${__install__libs}
-      )
-    if(EXISTS ${lib})
-      set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS
-        ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} ${lib})
-    else()
-      if(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
-        message(WARNING "system runtime library file does not exist: '${lib}'")
-        # This warning indicates an incomplete Watcom installation
-        # or a bug somewhere above here in this file.
-        # If you would like to avoid this warning, fix the real problem, or
-        # set CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS before including
-        # this file.
-      endif()
-    endif()
-  endforeach()
-endif()
-
-
-# Include system runtime libraries in the installation if any are
-# specified by CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS.
-if(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS)
-  if(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP)
-    if(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION)
-      if(WIN32)
-        set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION bin)
-      else()
-        set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION lib)
-      endif()
-    endif()
-    if(CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT)
-      set(_CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT
-        COMPONENT ${CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT})
-    endif()
-    install(PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}
-      DESTINATION ${CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION}
-      ${_CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT}
-      )
-
-    install(DIRECTORY ${CMAKE_INSTALL_SYSTEM_RUNTIME_DIRECTORIES}
-      DESTINATION ${CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION}
-      ${_CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT}
-      )
-  endif()
-endif()
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake b/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake
deleted file mode 100644
index 9c8dfb6..0000000
--- a/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake
+++ /dev/null
@@ -1,158 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=[
-
-NOTE: This function is used internally by CMake. Projects should not include
-      this file directly.
-
-The cmake_check_compiler_flag() function can be used to compile and link a
-source file to check whether a specific compiler or linker flag is supported.
-The function does not use the try_compile() command so as to avoid infinite
-recursion.  It may not work for all platforms or toolchains, the caller is
-responsible for ensuring it is only called in valid situations.
-
-  cmake_check_compiler_flag(<lang> <flag> <result>
-                            [SRC_EXT <ext>] [COMMAND_PATTERN <pattern>]
-                            [FAIL_REGEX <regex> ...]
-                            [OUTPUT_VARIABLE <output>])
-
-Parameters:
-  <lang>   - Language to check.
-  <flag>   - The flag to add to the compile/link command line.
-  <result> - Boolean output variable.  It will be stored in the cache as an
-             internal variable and if true, will cause future tests that assign
-             to that variable to be bypassed.
-
-Optional parameters:
-  SRC_EXT         - Overrides the extension of the source file used for the
-                    check.  Defaults are 'c' (C), 'cxx' (CXX), 'F' (Fortran).
-  COMMAND_PATTERN - Pattern to be used for the command line. The default is
-                    '<FLAG> -o <OUTPUT> <SOURCE>'
-  FAIL_REGEX      - List of additional regular expressions that, if matched by
-                    the output, give a failed result for the check.  A common
-                    set of regular expressions will be included in addition to
-                    those given by FAIL_REGEX.
-  OUTPUT_VARIABLE - Set <output> variable with details about any error.
-#]=]
-
-include_guard(GLOBAL)
-include(CMakeCheckCompilerFlagCommonPatterns)
-
-function(CMAKE_CHECK_COMPILER_FLAG lang flag result)
-  # Cache results between runs similar to check_<lang>_source_compiles()
-  if(DEFINED ${result})
-    return()
-  endif()
-
-  set(comment "Is the '${flag}' option(s) supported")
-  string(REPLACE ";" " " comment "${comment}")
-
-  if (NOT lang MATCHES "^(C|CXX|Fortran|ASM)$")
-    # other possible languages are not supported
-    # log message to keep trace of this problem...
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-      "Function 'CMAKE_CHECK_COMPILER_FLAG' called with unsupported language: ${lang}\n")
-    set(${result} FALSE CACHE INTERNAL ${comment})
-    return()
-  endif()
-  if (lang STREQUAL "ASM")
-    # assume ASM compiler is a multi-language compiler, so supports C language as well
-    set(check_lang C)
-  else()
-    set(check_lang ${lang})
-  endif()
-
-  cmake_parse_arguments(CCCF "" "SRC_EXT;COMMAND_PATTERN;OUTPUT_VARIABLE" "FAIL_REGEX" ${ARGN})
-
-  if (NOT CCCF_COMMAND_PATTERN)
-    set (CCCF_COMMAND_PATTERN "<FLAG> -o <OUTPUT> <SOURCE>")
-  endif()
-
-  list (APPEND CCCF_FAIL_REGEX "argument unused during compilation") # clang
-  if (check_lang STREQUAL "C")
-    list(APPEND CCCF_FAIL_REGEX
-      "command line option .* is valid for .* but not for C") # GNU
-  elseif(check_lang STREQUAL "CXX")
-    list(APPEND CCCF_FAIL_REGEX
-      "command line option .* is valid for .* but not for C\\+\\+") # GNU
-  elseif(check_lang STREQUAL "Fortran")
-    list(APPEND CCCF_FAIL_REGEX
-      "command line option .* is valid for .* but not for Fortran") # GNU
-  endif()
-
-  # Add patterns for common errors
-  check_compiler_flag_common_patterns(COMPILER_FLAG_COMMON_PATTERNS)
-  foreach(arg IN LISTS COMPILER_FLAG_COMMON_PATTERNS)
-    if(arg MATCHES "^FAIL_REGEX$")
-      continue()
-    endif()
-    list(APPEND CCCF_FAIL_REGEX "${arg}")
-  endforeach()
-
-  if(NOT CCCF_SRC_EXT)
-    if (check_lang STREQUAL "C")
-      set(CCCF_SRC_EXT c)
-    elseif(check_lang STREQUAL "CXX")
-      set(CCCF_SRC_EXT cxx)
-    elseif(check_lang STREQUAL "Fortran")
-      set(CCCF_SRC_EXT F)
-    endif()
-  endif()
-
-  if (CCCF_OUTPUT_VARIABLE)
-    unset(${CCCF_OUTPUT_VARIABLE} PARENT_SCOPE)
-  endif()
-
-  # Compute the directory in which to run the test.
-  set(COMPILER_FLAG_DIR "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp")
-  # Compute source and output files.
-  set(COMPILER_FLAG_SRC
-    "${COMPILER_FLAG_DIR}/CompilerFlag${lang}.${CCCF_SRC_EXT}")
-  if(check_lang STREQUAL "Fortran")
-    file(WRITE "${COMPILER_FLAG_SRC}"
-      "      program simple\n      end program simple\n")
-  else()
-    file(WRITE "${COMPILER_FLAG_SRC}" "int main (void)\n{ return 0; }\n")
-  endif()
-  get_filename_component(COMPILER_FLAG_EXE "${COMPILER_FLAG_SRC}" NAME_WE)
-  string(APPEND COMPILER_FLAG_EXE "${CMAKE_EXECUTABLE_SUFFIX}")
-
-  # Build command line
-  separate_arguments(CCCF_COMMAND_PATTERN UNIX_COMMAND
-    "${CCCF_COMMAND_PATTERN}")
-  list(TRANSFORM CCCF_COMMAND_PATTERN REPLACE "<SOURCE>" "${COMPILER_FLAG_SRC}")
-  list(TRANSFORM CCCF_COMMAND_PATTERN REPLACE "<OUTPUT>" "${COMPILER_FLAG_EXE}")
-  list(TRANSFORM CCCF_COMMAND_PATTERN REPLACE "<FLAG>" "${flag}")
-
-  execute_process(
-    COMMAND "${CMAKE_COMMAND}" -E env LC_ALL=C LC_MESSAGES=C LANG=C
-            "${CMAKE_${lang}_COMPILER}" ${CCCF_COMMAND_PATTERN}
-    WORKING_DIRECTORY "${COMPILER_FLAG_DIR}"
-    OUTPUT_VARIABLE COMPILER_FLAG_OUTPUT
-    ERROR_VARIABLE COMPILER_FLAG_OUTPUT
-    RESULT_VARIABLE COMPILER_FLAG_RESULT)
-
-  # Record result in the cache so we can avoid re-testing every CMake run
-  if (COMPILER_FLAG_RESULT)
-    set(${result} FALSE CACHE INTERNAL ${comment})
-  else()
-    foreach(regex IN LISTS CCCF_FAIL_REGEX)
-      if(COMPILER_FLAG_OUTPUT MATCHES "${regex}")
-        set(${result} FALSE CACHE INTERNAL ${comment})
-      endif()
-    endforeach()
-  endif()
-  if (DEFINED ${result})
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Determining if the ${flag} option "
-        "is supported for ${lang} language failed with the following output:\n"
-        "${COMPILER_FLAG_OUTPUT}\n")
-    if (CCCF_OUTPUT_VARIABLE)
-      set(${CCCF_OUTPUT_VARIABLE} "${COMPILER_FLAG_OUTPUT}" PARENT_SCOPE)
-    endif()
-    return()
-  endif()
-
-  set(${result} TRUE CACHE INTERNAL ${comment})
-endfunction()
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPack.NuGet.nuspec.in b/share/cmake-3.18/Modules/Internal/CPack/CPack.NuGet.nuspec.in
deleted file mode 100644
index b7beb5d..0000000
--- a/share/cmake-3.18/Modules/Internal/CPack/CPack.NuGet.nuspec.in
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
-    <metadata>
-        <!-- Required elements-->
-        <id>@CPACK_NUGET_PACKAGE_NAME@</id>
-        <version>@CPACK_NUGET_PACKAGE_VERSION@</version>
-        <description>@CPACK_NUGET_PACKAGE_DESCRIPTION@</description>
-        <authors>@CPACK_NUGET_PACKAGE_AUTHORS@</authors>
-
-        <!-- Optional elements -->
-        @_CPACK_NUGET_TITLE_TAG@
-        @_CPACK_NUGET_OWNERS_TAG@
-        @_CPACK_NUGET_PROJECTURL_TAG@
-        @_CPACK_NUGET_LICENSEURL_TAG@
-        @_CPACK_NUGET_ICONURL_TAG@
-        @_CPACK_NUGET_REQUIRELICENSEACCEPTANCE_TAG@
-        @_CPACK_NUGET_SUMMARY_TAG@
-        @_CPACK_NUGET_RELEASENOTES_TAG@
-        @_CPACK_NUGET_COPYRIGHT_TAG@
-        @_CPACK_NUGET_TAGS_TAG@
-        @_CPACK_NUGET_DEPENDENCIES_TAG@
-    </metadata>
-    @_CPACK_NUGET_FILES_TAG@
-</package>
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPackDeb.cmake b/share/cmake-3.18/Modules/Internal/CPack/CPackDeb.cmake
deleted file mode 100644
index db35e3a..0000000
--- a/share/cmake-3.18/Modules/Internal/CPack/CPackDeb.cmake
+++ /dev/null
@@ -1,776 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-# CPack script for creating Debian package
-# Author: Mathieu Malaterre
-#
-# http://wiki.debian.org/HowToPackageForDebian
-
-if(CMAKE_BINARY_DIR)
-  message(FATAL_ERROR "CPackDeb.cmake may only be used by CPack internally.")
-endif()
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0057 NEW) # if IN_LIST
-
-function(cpack_deb_variable_fallback OUTPUT_VAR_NAME)
-  set(FALLBACK_VAR_NAMES ${ARGN})
-
-  foreach(variable_name IN LISTS FALLBACK_VAR_NAMES)
-    if(${variable_name})
-      set(${OUTPUT_VAR_NAME} "${${variable_name}}" PARENT_SCOPE)
-      break()
-    endif()
-  endforeach()
-endfunction()
-
-function(get_component_package_name var component)
-  string(TOUPPER "${component}" component_upcase)
-  if(CPACK_DEBIAN_${component_upcase}_PACKAGE_NAME)
-    string(TOLOWER "${CPACK_DEBIAN_${component_upcase}_PACKAGE_NAME}" package_name)
-  else()
-    string(TOLOWER "${CPACK_DEBIAN_PACKAGE_NAME}-${component}" package_name)
-  endif()
-
-  set("${var}" "${package_name}" PARENT_SCOPE)
-endfunction()
-
-#extract library name and version for given shared object
-function(extract_so_info shared_object libname version)
-  if(READELF_EXECUTABLE)
-    execute_process(COMMAND "${READELF_EXECUTABLE}" -d "${shared_object}"
-      WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
-      RESULT_VARIABLE result
-      OUTPUT_VARIABLE output
-      ERROR_QUIET
-      OUTPUT_STRIP_TRAILING_WHITESPACE)
-    if(result EQUAL 0)
-      string(REGEX MATCH "\\(?SONAME\\)?[^\n]*\\[([^\n]+)\\.so\\.([^\n]*)\\]" soname "${output}")
-      set(${libname} "${CMAKE_MATCH_1}" PARENT_SCOPE)
-      set(${version} "${CMAKE_MATCH_2}" PARENT_SCOPE)
-    else()
-      message(WARNING "Error running readelf for \"${shared_object}\"")
-    endif()
-  else()
-    message(FATAL_ERROR "Readelf utility is not available.")
-  endif()
-endfunction()
-
-function(cpack_deb_check_description SUMMARY LINES RESULT_VARIABLE)
-  set(_result TRUE)
-
-  # Get the summary line
-  if(NOT SUMMARY MATCHES "^[^\\s].*$")
-    set(_result FALSE)
-    set(${RESULT_VARIABLE} ${_result} PARENT_SCOPE)
-    return()
-  endif()
-
-  foreach(_line IN LISTS LINES)
-    if(NOT _line MATCHES "^ +[^ ]+.*$")
-      set(_result FALSE)
-      break()
-    endif()
-  endforeach()
-
-  set(${RESULT_VARIABLE} ${_result} PARENT_SCOPE)
-endfunction()
-
-function(cpack_deb_format_package_description TEXT OUTPUT_VAR)
-  # Turn the possible multi-line string into a list
-  string(UUID uuid NAMESPACE 00000000-0000-0000-0000-000000000000 TYPE SHA1)
-  string(REPLACE ";" "${uuid}" _text "${TEXT}")
-  string(REPLACE "\n" ";" _lines "${_text}")
-  list(POP_FRONT _lines _summary)
-
-  # If the description ends with a newline (e.g. typically if it was read
-  # from a file) the last line will be empty. We drop it here, otherwise
-  # it would be replaced by a `.` which would lead to the package violating
-  # the extended-description-contains-empty-paragraph debian policy
-  list(POP_BACK _lines _last_line)
-  string(STRIP "${_last_line}" _last_line_strip)
-  if(_last_line_strip)
-    list(APPEND _lines "${_last_line_strip}")
-  endif()
-
-  # Check if reformatting required
-  cpack_deb_check_description("${_summary}" "${_lines}" _result)
-  if(_result)
-    # Ok, no formatting required
-    set(${OUTPUT_VAR} "${TEXT}" PARENT_SCOPE)
-    return()
-  endif()
-
-  # Format the summary line
-  string(STRIP "${_summary}" _summary)
-
-  # Make sure the rest formatted properly
-  set(_result)
-  foreach(_line IN LISTS _lines)
-    string(STRIP "${_line}" _line_strip)
-    if(NOT _line_strip)
-      # Replace empty lines w/ a _single full stop character_
-      set(_line " .")
-    else()
-      # Prepend the normal lines w/ a single space.
-      # If the line already starts w/ at least one space,
-      # it'll become _verbatim_ (assuming it supposed to be
-      # verbatim in the original text).
-      string(PREPEND _line " ")
-    endif()
-    list(APPEND _result "${_line}")
-  endforeach()
-
-  list(PREPEND _result "${_summary}")
-  list(JOIN _result "\n" _result)
-  string(REPLACE "${uuid}"  ";" _result "${_result}")
-  set(${OUTPUT_VAR} "${_result}" PARENT_SCOPE)
-endfunction()
-
-function(cpack_deb_prepare_package_vars)
-  # CPACK_DEBIAN_PACKAGE_SHLIBDEPS
-  # If specify OFF, only user depends are used
-  if(NOT DEFINED CPACK_DEBIAN_PACKAGE_SHLIBDEPS)
-    set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS OFF)
-  endif()
-
-  set(WDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_DEB_PACKAGE_COMPONENT_PART_PATH}")
-  set(DBGSYMDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_DEB_PACKAGE_COMPONENT_PART_PATH}-dbgsym")
-  file(REMOVE_RECURSE "${DBGSYMDIR}")
-
-  # per component automatic discover: some of the component might not have
-  # binaries.
-  if(CPACK_DEB_PACKAGE_COMPONENT)
-    string(TOUPPER "${CPACK_DEB_PACKAGE_COMPONENT}" _local_component_name)
-    set(_component_shlibdeps_var "CPACK_DEBIAN_${_local_component_name}_PACKAGE_SHLIBDEPS")
-
-    # if set, overrides the global configuration
-    if(DEFINED ${_component_shlibdeps_var})
-      set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS "${${_component_shlibdeps_var}}")
-      if(CPACK_DEBIAN_PACKAGE_DEBUG)
-        message("CPackDeb Debug: component '${CPACK_DEB_PACKAGE_COMPONENT}' dpkg-shlibdeps set to ${CPACK_DEBIAN_PACKAGE_SHLIBDEPS}")
-      endif()
-    endif()
-  endif()
-
-  cpack_deb_variable_fallback("CPACK_DEBIAN_DEBUGINFO_PACKAGE"
-    "CPACK_DEBIAN_${_local_component_name}_DEBUGINFO_PACKAGE"
-    "CPACK_DEBIAN_DEBUGINFO_PACKAGE")
-  if(CPACK_DEBIAN_PACKAGE_SHLIBDEPS OR CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS OR CPACK_DEBIAN_DEBUGINFO_PACKAGE)
-    # Generating binary list - Get type of all install files
-    file(GLOB_RECURSE FILE_PATHS_ LIST_DIRECTORIES false RELATIVE "${WDIR}" "${WDIR}/*")
-
-    find_program(FILE_EXECUTABLE file)
-    if(NOT FILE_EXECUTABLE)
-      message(FATAL_ERROR "CPackDeb: file utility is not available. CPACK_DEBIAN_PACKAGE_SHLIBDEPS and CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS options are not available.")
-    endif()
-
-    # get file info so that we can determine if file is executable or not
-    unset(CPACK_DEB_INSTALL_FILES)
-    foreach(FILE_ IN LISTS FILE_PATHS_)
-      execute_process(COMMAND ${CMAKE_COMMAND} -E env LC_ALL=C ${FILE_EXECUTABLE} "./${FILE_}"
-        WORKING_DIRECTORY "${WDIR}"
-        RESULT_VARIABLE FILE_RESULT_
-        OUTPUT_VARIABLE INSTALL_FILE_)
-      if(NOT FILE_RESULT_ EQUAL 0)
-        message(FATAL_ERROR "CPackDeb: execution of command: '${FILE_EXECUTABLE} ./${FILE_}' failed with exit code: ${FILE_RESULT_}")
-      endif()
-      list(APPEND CPACK_DEB_INSTALL_FILES "${INSTALL_FILE_}")
-    endforeach()
-
-    # Only dynamically linked ELF files are included
-    # Extract only file name infront of ":"
-    foreach(_FILE IN LISTS CPACK_DEB_INSTALL_FILES)
-      if(_FILE MATCHES "ELF.*dynamically linked")
-        string(REGEX MATCH "(^.*):" _FILE_NAME "${_FILE}")
-        list(APPEND CPACK_DEB_BINARY_FILES "${CMAKE_MATCH_1}")
-        set(CONTAINS_EXECUTABLE_FILES_ TRUE)
-      endif()
-      if(_FILE MATCHES "ELF.*shared object")
-        string(REGEX MATCH "(^.*):" _FILE_NAME "${_FILE}")
-        list(APPEND CPACK_DEB_SHARED_OBJECT_FILES "${CMAKE_MATCH_1}")
-      endif()
-      if(_FILE MATCHES "ELF.*not stripped")
-        string(REGEX MATCH "(^.*):" _FILE_NAME "${_FILE}")
-        list(APPEND CPACK_DEB_UNSTRIPPED_FILES "${CMAKE_MATCH_1}")
-      endif()
-    endforeach()
-  endif()
-
-  find_program(READELF_EXECUTABLE NAMES readelf)
-
-  if(CPACK_DEBIAN_DEBUGINFO_PACKAGE AND CPACK_DEB_UNSTRIPPED_FILES)
-    find_program(OBJCOPY_EXECUTABLE NAMES objcopy)
-
-    if(NOT OBJCOPY_EXECUTABLE)
-      message(FATAL_ERROR "debuginfo packages require the objcopy tool")
-    endif()
-    if(NOT READELF_EXECUTABLE)
-      message(FATAL_ERROR "debuginfo packages require the readelf tool")
-    endif()
-
-    file(RELATIVE_PATH _DBGSYM_ROOT "${CPACK_TEMPORARY_DIRECTORY}" "${DBGSYMDIR}")
-    foreach(_FILE IN LISTS CPACK_DEB_UNSTRIPPED_FILES)
-
-      # Get the file's Build ID
-      execute_process(COMMAND env LC_ALL=C ${READELF_EXECUTABLE} -n "${_FILE}"
-        WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
-        OUTPUT_VARIABLE READELF_OUTPUT
-        RESULT_VARIABLE READELF_RESULT
-        ERROR_VARIABLE READELF_ERROR
-        OUTPUT_STRIP_TRAILING_WHITESPACE )
-      if(NOT READELF_RESULT EQUAL 0)
-        message(FATAL_ERROR "CPackDeb: readelf: '${READELF_ERROR}';\n"
-            "executed command: '${READELF_EXECUTABLE} -n ${_FILE}'")
-      endif()
-      if(READELF_OUTPUT MATCHES "Build ID: ([0-9a-zA-Z][0-9a-zA-Z])([0-9a-zA-Z]*)")
-        set(_BUILD_ID_START ${CMAKE_MATCH_1})
-        set(_BUILD_ID_REMAINING ${CMAKE_MATCH_2})
-        list(APPEND BUILD_IDS ${_BUILD_ID_START}${_BUILD_ID_REMAINING})
-      else()
-        message(FATAL_ERROR "Unable to determine Build ID for ${_FILE}")
-      endif()
-
-      # Split out the debug symbols from the binaries
-      set(_FILE_DBGSYM ${_DBGSYM_ROOT}/usr/lib/debug/.build-id/${_BUILD_ID_START}/${_BUILD_ID_REMAINING}.debug)
-      get_filename_component(_OUT_DIR "${_FILE_DBGSYM}" DIRECTORY)
-      file(MAKE_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}/${_OUT_DIR}")
-      execute_process(COMMAND ${OBJCOPY_EXECUTABLE} --only-keep-debug "${_FILE}" "${_FILE_DBGSYM}"
-        WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
-        OUTPUT_VARIABLE OBJCOPY_OUTPUT
-        RESULT_VARIABLE OBJCOPY_RESULT
-        ERROR_VARIABLE OBJCOPY_ERROR
-        OUTPUT_STRIP_TRAILING_WHITESPACE )
-      if(NOT OBJCOPY_RESULT EQUAL 0)
-        message(FATAL_ERROR "CPackDeb: objcopy: '${OBJCOPY_ERROR}';\n"
-            "executed command: '${OBJCOPY_EXECUTABLE} --only-keep-debug ${_FILE} ${_FILE_DBGSYM}'")
-      endif()
-      execute_process(COMMAND ${OBJCOPY_EXECUTABLE} --strip-unneeded ${_FILE}
-        WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
-        OUTPUT_VARIABLE OBJCOPY_OUTPUT
-        RESULT_VARIABLE OBJCOPY_RESULT
-        ERROR_VARIABLE OBJCOPY_ERROR
-        OUTPUT_STRIP_TRAILING_WHITESPACE )
-      if(NOT OBJCOPY_RESULT EQUAL 0)
-        message(FATAL_ERROR "CPackDeb: objcopy: '${OBJCOPY_ERROR}';\n"
-            "executed command: '${OBJCOPY_EXECUTABLE} --strip-debug ${_FILE}'")
-      endif()
-      execute_process(COMMAND ${OBJCOPY_EXECUTABLE} --add-gnu-debuglink=${_FILE_DBGSYM} ${_FILE}
-        WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
-        OUTPUT_VARIABLE OBJCOPY_OUTPUT
-        RESULT_VARIABLE OBJCOPY_RESULT
-        ERROR_VARIABLE OBJCOPY_ERROR
-        OUTPUT_STRIP_TRAILING_WHITESPACE )
-      if(NOT OBJCOPY_RESULT EQUAL 0)
-        message(FATAL_ERROR "CPackDeb: objcopy: '${OBJCOPY_ERROR}';\n"
-            "executed command: '${OBJCOPY_EXECUTABLE} --add-gnu-debuglink=${_FILE_DBGSYM} ${_FILE}'")
-      endif()
-    endforeach()
-  endif()
-
-  if(CPACK_DEBIAN_PACKAGE_SHLIBDEPS)
-    # dpkg-shlibdeps is a Debian utility for generating dependency list
-    find_program(SHLIBDEPS_EXECUTABLE dpkg-shlibdeps)
-
-    if(SHLIBDEPS_EXECUTABLE)
-      # Check version of the dpkg-shlibdeps tool using CPackDEB method
-      execute_process(COMMAND ${CMAKE_COMMAND} -E env LC_ALL=C ${SHLIBDEPS_EXECUTABLE} --version
-        OUTPUT_VARIABLE _TMP_VERSION
-        ERROR_QUIET
-        OUTPUT_STRIP_TRAILING_WHITESPACE)
-      if(_TMP_VERSION MATCHES "dpkg-shlibdeps version ([0-9]+\\.[0-9]+\\.[0-9]+)")
-        set(SHLIBDEPS_EXECUTABLE_VERSION "${CMAKE_MATCH_1}")
-      else()
-        unset(SHLIBDEPS_EXECUTABLE_VERSION)
-      endif()
-
-      if(CPACK_DEBIAN_PACKAGE_DEBUG)
-        message("CPackDeb Debug: dpkg-shlibdeps --version output is '${_TMP_VERSION}'")
-        message("CPackDeb Debug: dpkg-shlibdeps version is <${SHLIBDEPS_EXECUTABLE_VERSION}>")
-      endif()
-
-      if(CONTAINS_EXECUTABLE_FILES_)
-        message("CPackDeb: - Generating dependency list")
-
-        # Create blank control file for running dpkg-shlibdeps
-        # There might be some other way to invoke dpkg-shlibdeps without creating this file
-        # but standard debian package should not have anything that can collide with this file or directory
-        file(MAKE_DIRECTORY ${CPACK_TEMPORARY_DIRECTORY}/debian)
-        file(WRITE ${CPACK_TEMPORARY_DIRECTORY}/debian/control "")
-
-        # Create a DEBIAN directory so that dpkg-shlibdeps can find the package dir when resolving $ORIGIN.
-        file(MAKE_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}/DEBIAN")
-
-        # Add --ignore-missing-info if the tool supports it
-        execute_process(COMMAND ${CMAKE_COMMAND} -E env LC_ALL=C ${SHLIBDEPS_EXECUTABLE} --help
-          OUTPUT_VARIABLE _TMP_HELP
-          ERROR_QUIET
-          OUTPUT_STRIP_TRAILING_WHITESPACE)
-        if(_TMP_HELP MATCHES "--ignore-missing-info")
-          set(IGNORE_MISSING_INFO_FLAG "--ignore-missing-info")
-        endif()
-
-        # Execute dpkg-shlibdeps
-        # --ignore-missing-info : allow dpkg-shlibdeps to run even if some libs do not belong to a package
-        # -O : print to STDOUT
-        execute_process(COMMAND ${SHLIBDEPS_EXECUTABLE} ${IGNORE_MISSING_INFO_FLAG} -O ${CPACK_DEB_BINARY_FILES}
-          WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
-          OUTPUT_VARIABLE SHLIBDEPS_OUTPUT
-          RESULT_VARIABLE SHLIBDEPS_RESULT
-          ERROR_VARIABLE SHLIBDEPS_ERROR
-          OUTPUT_STRIP_TRAILING_WHITESPACE )
-        if(CPACK_DEBIAN_PACKAGE_DEBUG)
-          # dpkg-shlibdeps will throw some warnings if some input files are not binary
-          message( "CPackDeb Debug: dpkg-shlibdeps warnings \n${SHLIBDEPS_ERROR}")
-        endif()
-        if(NOT SHLIBDEPS_RESULT EQUAL 0)
-          message(FATAL_ERROR "CPackDeb: dpkg-shlibdeps: '${SHLIBDEPS_ERROR}';\n"
-              "executed command: '${SHLIBDEPS_EXECUTABLE} ${IGNORE_MISSING_INFO_FLAG} -O ${CPACK_DEB_BINARY_FILES}';\n"
-              "found files: '${INSTALL_FILE_}';\n"
-              "files info: '${CPACK_DEB_INSTALL_FILES}';\n"
-              "binary files: '${CPACK_DEB_BINARY_FILES}'")
-        endif()
-
-        #Get rid of prefix generated by dpkg-shlibdeps
-        string(REGEX REPLACE "^.*Depends=" "" CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS "${SHLIBDEPS_OUTPUT}")
-
-        if(CPACK_DEBIAN_PACKAGE_DEBUG)
-          message("CPackDeb Debug: Found dependency: ${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS} from output ${SHLIBDEPS_OUTPUT}")
-        endif()
-
-        # Remove blank control file
-        # Might not be safe if package actual contain file or directory named debian
-        file(REMOVE_RECURSE "${CPACK_TEMPORARY_DIRECTORY}/debian")
-
-        # remove temporary directory that was created only for dpkg-shlibdeps execution
-        file(REMOVE_RECURSE "${CPACK_TEMPORARY_DIRECTORY}/DEBIAN")
-      else()
-        if(CPACK_DEBIAN_PACKAGE_DEBUG)
-          message(AUTHOR_WARNING "CPackDeb Debug: Using only user-provided depends because package does not contain executable files that link to shared libraries.")
-        endif()
-      endif()
-    else()
-      message("CPackDeb: Using only user-provided dependencies because dpkg-shlibdeps is not found.")
-    endif()
-
-  else()
-    if(CPACK_DEBIAN_PACKAGE_DEBUG)
-      message("CPackDeb Debug: Using only user-provided dependencies")
-    endif()
-  endif()
-
-  # Let's define the control file found in debian package:
-
-  # Binary package:
-  # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-binarycontrolfiles
-
-  # DEBIAN/control
-  # debian policy enforce lower case for package name
-  # Package: (mandatory)
-  if(NOT CPACK_DEBIAN_PACKAGE_NAME)
-    string(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_DEBIAN_PACKAGE_NAME)
-  endif()
-
-  # Version: (mandatory)
-  if(NOT CPACK_DEBIAN_PACKAGE_VERSION)
-    if(NOT CPACK_PACKAGE_VERSION)
-      message(FATAL_ERROR "CPackDeb: Debian package requires a package version")
-    endif()
-    set(CPACK_DEBIAN_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})
-  endif()
-
-  if(DEFINED CPACK_DEBIAN_PACKAGE_RELEASE OR DEFINED CPACK_DEBIAN_PACKAGE_EPOCH)
-    # only test the version format if CPACK_DEBIAN_PACKAGE_RELEASE or
-    # CPACK_DEBIAN_PACKAGE_EPOCH is set
-    if(NOT CPACK_DEBIAN_PACKAGE_VERSION MATCHES "^[0-9][A-Za-z0-9.+~-]*$")
-      message(FATAL_ERROR
-        "CPackDeb: Debian package version must confirm to \"^[0-9][A-Za-z0-9.+~-]*$\" regex!")
-    endif()
-  else()
-    # before CMake 3.10 version format was not tested so only warn to preserve
-    # backward compatibility
-    if(NOT CPACK_DEBIAN_PACKAGE_VERSION MATCHES "^([0-9]+:)?[0-9][A-Za-z0-9.+~-]*$")
-      message(AUTHOR_WARNING
-        "CPackDeb: Debian package versioning ([<epoch>:]<version>[-<release>])"
-        " should confirm to \"^([0-9]+:)?[0-9][A-Za-z0-9.+~-]*$\" regex in"
-        " order to satisfy Debian packaging rules.")
-    endif()
-  endif()
-
-  if(CPACK_DEBIAN_PACKAGE_RELEASE)
-    if(NOT CPACK_DEBIAN_PACKAGE_RELEASE MATCHES "^[A-Za-z0-9.+~]+$")
-      message(FATAL_ERROR
-        "CPackDeb: Debian package release must confirm to \"^[A-Za-z0-9.+~]+$\" regex!")
-    endif()
-    string(APPEND CPACK_DEBIAN_PACKAGE_VERSION
-      "-${CPACK_DEBIAN_PACKAGE_RELEASE}")
-  elseif(DEFINED CPACK_DEBIAN_PACKAGE_EPOCH)
-    # only test the version format if CPACK_DEBIAN_PACKAGE_RELEASE or
-    # CPACK_DEBIAN_PACKAGE_EPOCH is set - versions CPack/Deb generator before
-    # CMake 3.10 did not check for version format so we have to preserve
-    # backward compatibility
-    if(CPACK_DEBIAN_PACKAGE_VERSION MATCHES ".*-.*")
-      message(FATAL_ERROR
-        "CPackDeb: Debian package version must not contain hyphens when CPACK_DEBIAN_PACKAGE_RELEASE is not provided!")
-    endif()
-  endif()
-
-  if(CPACK_DEBIAN_PACKAGE_EPOCH)
-    if(NOT CPACK_DEBIAN_PACKAGE_EPOCH MATCHES "^[0-9]+$")
-      message(FATAL_ERROR
-        "CPackDeb: Debian package epoch must confirm to \"^[0-9]+$\" regex!")
-    endif()
-    set(CPACK_DEBIAN_PACKAGE_VERSION
-      "${CPACK_DEBIAN_PACKAGE_EPOCH}:${CPACK_DEBIAN_PACKAGE_VERSION}")
-  endif()
-
-  # Architecture: (mandatory)
-  if(CPACK_DEB_PACKAGE_COMPONENT AND CPACK_DEBIAN_${_local_component_name}_PACKAGE_ARCHITECTURE)
-    set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${CPACK_DEBIAN_${_local_component_name}_PACKAGE_ARCHITECTURE}")
-  elseif(NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE)
-    # There is no such thing as i686 architecture on debian, you should use i386 instead
-    # $ dpkg --print-architecture
-    find_program(DPKG_CMD dpkg)
-    if(NOT DPKG_CMD)
-      message(STATUS "CPackDeb: Can not find dpkg in your path, default to i386.")
-      set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386)
-    endif()
-    execute_process(COMMAND "${DPKG_CMD}" --print-architecture
-      OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE
-      OUTPUT_STRIP_TRAILING_WHITESPACE
-      )
-  endif()
-
-  # Source: (optional)
-  # in case several packages are constructed from a unique source
-  # (multipackaging), the source may be indicated as well.
-  # The source might contain a version if the generated package
-  # version is different from the source version
-  if(NOT CPACK_DEBIAN_PACKAGE_SOURCE)
-    set(CPACK_DEBIAN_PACKAGE_SOURCE "")
-  endif()
-
-  # have a look at get_property(result GLOBAL PROPERTY ENABLED_FEATURES),
-  # this returns the successful find_package() calls, maybe this can help
-  # Depends:
-  # You should set: DEBIAN_PACKAGE_DEPENDS
-  # TODO: automate 'objdump -p | grep NEEDED'
-
-  # if per-component variable, overrides the global CPACK_DEBIAN_PACKAGE_${variable_type_}
-  # automatic dependency discovery will be performed afterwards.
-  if(CPACK_DEB_PACKAGE_COMPONENT)
-    foreach(value_type_ IN ITEMS DEPENDS RECOMMENDS SUGGESTS PREDEPENDS ENHANCES BREAKS CONFLICTS PROVIDES REPLACES SOURCE SECTION PRIORITY NAME)
-      set(_component_var "CPACK_DEBIAN_${_local_component_name}_PACKAGE_${value_type_}")
-
-      # if set, overrides the global variable
-      if(DEFINED ${_component_var})
-        set(CPACK_DEBIAN_PACKAGE_${value_type_} "${${_component_var}}")
-        if(CPACK_DEBIAN_PACKAGE_DEBUG)
-          message("CPackDeb Debug: component '${_local_component_name}' ${value_type_} "
-            "value set to '${CPACK_DEBIAN_PACKAGE_${value_type_}}'")
-        endif()
-      endif()
-    endforeach()
-
-    if(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS)
-      unset(COMPONENT_DEPENDS)
-      foreach(_PACK IN LISTS CPACK_COMPONENT_${_local_component_name}_DEPENDS)
-        get_component_package_name(_PACK_NAME "${_PACK}")
-        list(PREPEND COMPONENT_DEPENDS "${_PACK_NAME} (= ${CPACK_DEBIAN_PACKAGE_VERSION})")
-      endforeach()
-      list(JOIN COMPONENT_DEPENDS ", " COMPONENT_DEPENDS)
-      if(COMPONENT_DEPENDS)
-        list(PREPEND CPACK_DEBIAN_PACKAGE_DEPENDS ${COMPONENT_DEPENDS})
-        list(JOIN CPACK_DEBIAN_PACKAGE_DEPENDS ", " CPACK_DEBIAN_PACKAGE_DEPENDS)
-      endif()
-    endif()
-  endif()
-
-  # at this point, the CPACK_DEBIAN_PACKAGE_DEPENDS is properly set
-  # to the minimal dependency of the package
-  # Append automatically discovered dependencies .
-  if(CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS)
-    list(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS})
-    list(JOIN CPACK_DEBIAN_PACKAGE_DEPENDS ", " CPACK_DEBIAN_PACKAGE_DEPENDS)
-  endif()
-
-  if(NOT CPACK_DEBIAN_PACKAGE_DEPENDS)
-    message(STATUS "CPACK_DEBIAN_PACKAGE_DEPENDS not set, the package will have no dependencies.")
-  endif()
-
-  # Maintainer: (mandatory)
-  if(NOT CPACK_DEBIAN_PACKAGE_MAINTAINER)
-    if(NOT CPACK_PACKAGE_CONTACT)
-      message(FATAL_ERROR "CPackDeb: Debian package requires a maintainer for a package, set CPACK_PACKAGE_CONTACT or CPACK_DEBIAN_PACKAGE_MAINTAINER")
-    endif()
-    set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_CONTACT})
-  endif()
-
-  # Description: (mandatory)
-  # Try package description first
-  if(CPACK_USED_DEFAULT_PACKAGE_DESCRIPTION_FILE)
-    set(_desc_fallback)
-  else()
-    set(_desc_fallback "CPACK_PACKAGE_DESCRIPTION")
-  endif()
-  if(CPACK_DEB_PACKAGE_COMPONENT)
-    cpack_deb_variable_fallback("CPACK_DEBIAN_PACKAGE_DESCRIPTION"
-      "CPACK_DEBIAN_${_local_component_name}_DESCRIPTION"
-      "CPACK_COMPONENT_${_local_component_name}_DESCRIPTION")
-  else()
-    cpack_deb_variable_fallback("CPACK_DEBIAN_PACKAGE_DESCRIPTION"
-      "CPACK_DEBIAN_PACKAGE_DESCRIPTION"
-      ${_desc_fallback})
-  endif()
-
-  # Still no description? ... and description file has set ...
-  if(NOT CPACK_DEBIAN_PACKAGE_DESCRIPTION
-     AND CPACK_PACKAGE_DESCRIPTION_FILE
-     AND NOT CPACK_PACKAGE_DESCRIPTION_FILE STREQUAL CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE)
-    # Read `CPACK_PACKAGE_DESCRIPTION_FILE` then...
-    file(READ ${CPACK_PACKAGE_DESCRIPTION_FILE} CPACK_DEBIAN_PACKAGE_DESCRIPTION)
-  endif()
-
-  # Still no description? #2
-  if(NOT CPACK_DEBIAN_PACKAGE_DESCRIPTION)
-    # Try to get `CPACK_PACKAGE_DESCRIPTION_SUMMARY` as the last hope
-    if(CPACK_PACKAGE_DESCRIPTION_SUMMARY)
-      set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION_SUMMARY})
-    else()
-      # Giving up! Report an error...
-      set(_description_failure_message
-        "CPackDeb: Debian package requires a summary for a package, set CPACK_PACKAGE_DESCRIPTION_SUMMARY or CPACK_DEBIAN_PACKAGE_DESCRIPTION")
-      if(CPACK_DEB_PACKAGE_COMPONENT)
-        string(APPEND _description_failure_message
-          " or CPACK_DEBIAN_${_local_component_name}_DESCRIPTION")
-      endif()
-      message(FATAL_ERROR _description_failure_message)
-    endif()
-
-  # Ok, description has set. According to the `Debian Policy Manual`_ the frist
-  # line is a pacakge summary.  Try to get it as well...
-  # See also: https://www.debian.org/doc/debian-policy/ch-controlfields.html#description
-  elseif(CPACK_PACKAGE_DESCRIPTION_SUMMARY AND
-         NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY STREQUAL CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY)
-    # Merge summary w/ the detailed description
-    string(PREPEND CPACK_DEBIAN_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}\n")
-  endif()
-  # assert(CPACK_DEBIAN_PACKAGE_DESCRIPTION)
-
-  # Make sure description is properly formatted
-  cpack_deb_format_package_description(
-    "${CPACK_DEBIAN_PACKAGE_DESCRIPTION}"
-    CPACK_DEBIAN_PACKAGE_DESCRIPTION
-  )
-
-  # Homepage: (optional)
-  if(NOT CPACK_DEBIAN_PACKAGE_HOMEPAGE AND CPACK_PACKAGE_HOMEPAGE_URL)
-    set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "${CPACK_PACKAGE_HOMEPAGE_URL}")
-  endif()
-
-  # Section: (recommended)
-  if(NOT CPACK_DEBIAN_PACKAGE_SECTION)
-    set(CPACK_DEBIAN_PACKAGE_SECTION "devel")
-  endif()
-
-  # Priority: (recommended)
-  if(NOT CPACK_DEBIAN_PACKAGE_PRIORITY)
-    set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
-  endif()
-
-  if(CPACK_DEBIAN_ARCHIVE_TYPE)
-    if(CPACK_DEBIAN_ARCHIVE_TYPE STREQUAL "paxr")
-      message(DEPRECATION "CPACK_DEBIAN_ARCHIVE_TYPE set to old and invalid "
-        "type 'paxr', mapping to 'gnutar'")
-      set(CPACK_DEBIAN_ARCHIVE_TYPE "gnutar")
-    elseif(NOT CPACK_DEBIAN_ARCHIVE_TYPE STREQUAL "gnutar")
-      message(FATAL_ERROR "CPACK_DEBIAN_ARCHIVE_TYPE set to unsupported"
-        "type ${CPACK_DEBIAN_ARCHIVE_TYPE}")
-    endif()
-  else()
-    set(CPACK_DEBIAN_ARCHIVE_TYPE "gnutar")
-  endif()
-
-  # Compression: (recommended)
-  if(NOT CPACK_DEBIAN_COMPRESSION_TYPE)
-    set(CPACK_DEBIAN_COMPRESSION_TYPE "gzip")
-  endif()
-
-  # Recommends:
-  # You should set: CPACK_DEBIAN_PACKAGE_RECOMMENDS
-
-  # Suggests:
-  # You should set: CPACK_DEBIAN_PACKAGE_SUGGESTS
-
-  # CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
-  # This variable allow advanced user to add custom script to the control.tar.gz (inside the .deb archive)
-  # Typical examples are:
-  # - conffiles
-  # - postinst
-  # - postrm
-  # - prerm
-  # Usage:
-  # set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
-  #    "${CMAKE_CURRENT_SOURCE_DIR}/prerm;${CMAKE_CURRENT_SOURCE_DIR}/postrm")
-
-  # Are we packaging components ?
-  if(CPACK_DEB_PACKAGE_COMPONENT)
-    # override values with per component version if set
-    foreach(VAR_NAME_ IN ITEMS PACKAGE_CONTROL_EXTRA PACKAGE_CONTROL_STRICT_PERMISSION)
-      if(CPACK_DEBIAN_${_local_component_name}_${VAR_NAME_})
-        set(CPACK_DEBIAN_${VAR_NAME_} "${CPACK_DEBIAN_${_local_component_name}_${VAR_NAME_}}")
-      endif()
-    endforeach()
-    get_component_package_name(CPACK_DEBIAN_PACKAGE_NAME ${_local_component_name})
-  endif()
-
-  if(NOT CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY)
-    set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY "=")
-  endif()
-
-  unset(CPACK_DEBIAN_PACKAGE_SHLIBS_LIST)
-
-  if(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS)
-    if(READELF_EXECUTABLE)
-      foreach(_FILE IN LISTS CPACK_DEB_SHARED_OBJECT_FILES)
-        extract_so_info("${_FILE}" libname soversion)
-        if(libname AND DEFINED soversion)
-          list(APPEND CPACK_DEBIAN_PACKAGE_SHLIBS_LIST
-               "${libname} ${soversion} ${CPACK_DEBIAN_PACKAGE_NAME} (${CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY} ${CPACK_DEBIAN_PACKAGE_VERSION})")
-        else()
-          message(AUTHOR_WARNING "Shared library '${_FILE}' is missing soname or soversion. Library will not be added to DEBIAN/shlibs control file.")
-        endif()
-      endforeach()
-      list(JOIN CPACK_DEBIAN_PACKAGE_SHLIBS_LIST "\n" CPACK_DEBIAN_PACKAGE_SHLIBS_LIST)
-    else()
-      message(FATAL_ERROR "Readelf utility is not available. CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS option is not available.")
-    endif()
-  endif()
-
-  # add ldconfig call in default postrm and postint
-  set(CPACK_ADD_LDCONFIG_CALL 0)
-  foreach(_FILE IN LISTS CPACK_DEB_SHARED_OBJECT_FILES)
-    get_filename_component(_DIR ${_FILE} DIRECTORY)
-    # all files in CPACK_DEB_SHARED_OBJECT_FILES have dot at the beginning
-    if(_DIR STREQUAL "./lib" OR _DIR STREQUAL "./usr/lib")
-      set(CPACK_ADD_LDCONFIG_CALL 1)
-    endif()
-  endforeach()
-
-  if(CPACK_ADD_LDCONFIG_CALL)
-    set(CPACK_DEBIAN_GENERATE_POSTINST 1)
-    set(CPACK_DEBIAN_GENERATE_POSTRM 1)
-    foreach(f IN LISTS PACKAGE_CONTROL_EXTRA)
-      get_filename_component(n "${f}" NAME)
-      if(n STREQUAL "postinst")
-        set(CPACK_DEBIAN_GENERATE_POSTINST 0)
-      endif()
-      if(n STREQUAL "postrm")
-        set(CPACK_DEBIAN_GENERATE_POSTRM 0)
-      endif()
-    endforeach()
-  else()
-    set(CPACK_DEBIAN_GENERATE_POSTINST 0)
-    set(CPACK_DEBIAN_GENERATE_POSTRM 0)
-  endif()
-
-  cpack_deb_variable_fallback("CPACK_DEBIAN_FILE_NAME"
-    "CPACK_DEBIAN_${_local_component_name}_FILE_NAME"
-    "CPACK_DEBIAN_FILE_NAME")
-  if(CPACK_DEBIAN_FILE_NAME)
-    if(CPACK_DEBIAN_FILE_NAME STREQUAL "DEB-DEFAULT")
-      # Patch package file name to be in correct debian format:
-      # <foo>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
-      set(CPACK_OUTPUT_FILE_NAME
-        "${CPACK_DEBIAN_PACKAGE_NAME}_${CPACK_DEBIAN_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb")
-      set(CPACK_DBGSYM_OUTPUT_FILE_NAME
-        "${CPACK_DEBIAN_PACKAGE_NAME}-dbgsym_${CPACK_DEBIAN_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.ddeb")
-    else()
-      if(NOT CPACK_DEBIAN_FILE_NAME MATCHES ".*\\.(deb|ipk)")
-        message(FATAL_ERROR "'${CPACK_DEBIAN_FILE_NAME}' is not a valid DEB package file name as it must end with '.deb' or '.ipk'!")
-      endif()
-
-      set(CPACK_OUTPUT_FILE_NAME "${CPACK_DEBIAN_FILE_NAME}")
-      string(REGEX REPLACE "\.deb$" "-dbgsym.ddeb" CPACK_DBGSYM_OUTPUT_FILE_NAME "${CPACK_DEBIAN_FILE_NAME}")
-    endif()
-
-    set(CPACK_TEMPORARY_PACKAGE_FILE_NAME "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_OUTPUT_FILE_NAME}")
-    get_filename_component(BINARY_DIR "${CPACK_OUTPUT_FILE_PATH}" DIRECTORY)
-    set(CPACK_OUTPUT_FILE_PATH "${BINARY_DIR}/${CPACK_OUTPUT_FILE_NAME}")
-  else()
-    # back compatibility - don't change the name
-    string(REGEX REPLACE "\.deb$" "-dbgsym.ddeb" CPACK_DBGSYM_OUTPUT_FILE_NAME "${CPACK_OUTPUT_FILE_NAME}")
-  endif()
-
-  # Print out some debug information if we were asked for that
-  if(CPACK_DEBIAN_PACKAGE_DEBUG)
-     message("CPackDeb:Debug: CPACK_TOPLEVEL_DIRECTORY          = '${CPACK_TOPLEVEL_DIRECTORY}'")
-     message("CPackDeb:Debug: CPACK_TOPLEVEL_TAG                = '${CPACK_TOPLEVEL_TAG}'")
-     message("CPackDeb:Debug: CPACK_TEMPORARY_DIRECTORY         = '${CPACK_TEMPORARY_DIRECTORY}'")
-     message("CPackDeb:Debug: CPACK_OUTPUT_FILE_NAME            = '${CPACK_OUTPUT_FILE_NAME}'")
-     message("CPackDeb:Debug: CPACK_OUTPUT_FILE_PATH            = '${CPACK_OUTPUT_FILE_PATH}'")
-     message("CPackDeb:Debug: CPACK_PACKAGE_FILE_NAME           = '${CPACK_PACKAGE_FILE_NAME}'")
-     message("CPackDeb:Debug: CPACK_PACKAGE_INSTALL_DIRECTORY   = '${CPACK_PACKAGE_INSTALL_DIRECTORY}'")
-     message("CPackDeb:Debug: CPACK_TEMPORARY_PACKAGE_FILE_NAME = '${CPACK_TEMPORARY_PACKAGE_FILE_NAME}'")
-     message("CPackDeb:Debug: CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION = '${CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION}'")
-     message("CPackDeb:Debug: CPACK_DEBIAN_PACKAGE_SOURCE       = '${CPACK_DEBIAN_PACKAGE_SOURCE}'")
-  endif()
-
-  # For debian source packages:
-  # debian/control
-  # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-sourcecontrolfiles
-
-  # .dsc
-  # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-debiansourcecontrolfiles
-
-  # Builds-Depends:
-  #if(NOT CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS)
-  #  set(CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS
-  #    "debhelper (>> 5.0.0), libncurses5-dev, tcl8.4"
-  #  )
-  #endif()
-
-  # move variables to parent scope so that they may be used to create debian package
-  set(GEN_CPACK_OUTPUT_FILE_NAME "${CPACK_OUTPUT_FILE_NAME}" PARENT_SCOPE)
-  set(GEN_CPACK_TEMPORARY_PACKAGE_FILE_NAME "${CPACK_TEMPORARY_PACKAGE_FILE_NAME}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_NAME "${CPACK_DEBIAN_PACKAGE_NAME}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_VERSION "${CPACK_DEBIAN_PACKAGE_VERSION}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_SECTION "${CPACK_DEBIAN_PACKAGE_SECTION}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_PRIORITY "${CPACK_DEBIAN_PACKAGE_PRIORITY}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_MAINTAINER "${CPACK_DEBIAN_PACKAGE_MAINTAINER}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_DESCRIPTION "${CPACK_DEBIAN_PACKAGE_DESCRIPTION}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_ARCHIVE_TYPE "${CPACK_DEBIAN_ARCHIVE_TYPE}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_COMPRESSION_TYPE "${CPACK_DEBIAN_COMPRESSION_TYPE}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_RECOMMENDS "${CPACK_DEBIAN_PACKAGE_RECOMMENDS}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_SUGGESTS "${CPACK_DEBIAN_PACKAGE_SUGGESTS}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_HOMEPAGE "${CPACK_DEBIAN_PACKAGE_HOMEPAGE}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_PREDEPENDS "${CPACK_DEBIAN_PACKAGE_PREDEPENDS}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_ENHANCES "${CPACK_DEBIAN_PACKAGE_ENHANCES}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_BREAKS "${CPACK_DEBIAN_PACKAGE_BREAKS}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_CONFLICTS "${CPACK_DEBIAN_PACKAGE_CONFLICTS}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_PROVIDES "${CPACK_DEBIAN_PACKAGE_PROVIDES}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_REPLACES "${CPACK_DEBIAN_PACKAGE_REPLACES}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_SHLIBS "${CPACK_DEBIAN_PACKAGE_SHLIBS_LIST}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION
-      "${CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_PACKAGE_SOURCE
-     "${CPACK_DEBIAN_PACKAGE_SOURCE}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_GENERATE_POSTINST "${CPACK_DEBIAN_GENERATE_POSTINST}" PARENT_SCOPE)
-  set(GEN_CPACK_DEBIAN_GENERATE_POSTRM "${CPACK_DEBIAN_GENERATE_POSTRM}" PARENT_SCOPE)
-  set(GEN_WDIR "${WDIR}" PARENT_SCOPE)
-
-  set(GEN_CPACK_DEBIAN_DEBUGINFO_PACKAGE "${CPACK_DEBIAN_DEBUGINFO_PACKAGE}" PARENT_SCOPE)
-  if(BUILD_IDS)
-    set(GEN_DBGSYMDIR "${DBGSYMDIR}" PARENT_SCOPE)
-    set(GEN_CPACK_DBGSYM_OUTPUT_FILE_NAME "${CPACK_DBGSYM_OUTPUT_FILE_NAME}" PARENT_SCOPE)
-    list(JOIN BUILD_IDS " " BUILD_IDS)
-    set(GEN_BUILD_IDS "${BUILD_IDS}" PARENT_SCOPE)
-  endif()
-endfunction()
-
-cpack_deb_prepare_package_vars()
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPackNuGet.cmake b/share/cmake-3.18/Modules/Internal/CPack/CPackNuGet.cmake
deleted file mode 100644
index 20eed2e..0000000
--- a/share/cmake-3.18/Modules/Internal/CPack/CPackNuGet.cmake
+++ /dev/null
@@ -1,370 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-# Author: Alex Turbov
-
-if(CMAKE_BINARY_DIR)
-  message(FATAL_ERROR "CPackNuGet.cmake may only be used by CPack internally.")
-endif()
-
-function(_cpack_nuget_debug)
-    if(CPACK_NUGET_PACKAGE_DEBUG)
-        message("CPackNuGet:Debug: " ${ARGN})
-    endif()
-endfunction()
-
-function(_cpack_nuget_debug_var NAME)
-    if(CPACK_NUGET_PACKAGE_DEBUG)
-        message("CPackNuGet:Debug: ${NAME}=`${${NAME}}`")
-    endif()
-endfunction()
-
-function(_cpack_nuget_variable_fallback OUTPUT_VAR_NAME NUGET_VAR_NAME)
-    if(ARGN)
-        list(JOIN ARGN "`, `" _va_args)
-        set(_va_args ", ARGN: `${_va_args}`")
-    endif()
-    _cpack_nuget_debug(
-        "_cpack_nuget_variable_fallback: "
-        "OUTPUT_VAR_NAME=`${OUTPUT_VAR_NAME}`, "
-        "NUGET_VAR_NAME=`${NUGET_VAR_NAME}`"
-        "${_va_args}"
-      )
-
-    set(_options USE_CDATA)
-    set(_one_value_args LIST_GLUE)
-    set(_multi_value_args FALLBACK_VARS)
-    cmake_parse_arguments(PARSE_ARGV 0 _args "${_options}" "${_one_value_args}" "${_multi_value_args}")
-
-    if(CPACK_NUGET_PACKAGE_COMPONENT)
-        string(
-            TOUPPER "${CPACK_NUGET_PACKAGE_COMPONENT}"
-            CPACK_NUGET_PACKAGE_COMPONENT_UPPER
-          )
-    endif()
-
-    if(CPACK_NUGET_PACKAGE_COMPONENT
-      AND CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT}_PACKAGE_${NUGET_VAR_NAME}
-      )
-        set(
-            _result
-            "${CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT}_PACKAGE_${NUGET_VAR_NAME}}"
-          )
-        _cpack_nuget_debug(
-            "  CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT}_PACKAGE_${NUGET_VAR_NAME}: "
-            "OUTPUT_VAR_NAME->${OUTPUT_VAR_NAME}=`${_result}`"
-          )
-
-    elseif(CPACK_NUGET_PACKAGE_COMPONENT_UPPER
-      AND CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_PACKAGE_${NUGET_VAR_NAME}
-      )
-        set(
-            _result
-            "${CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_PACKAGE_${NUGET_VAR_NAME}}"
-          )
-        _cpack_nuget_debug(
-            "  CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_PACKAGE_${NUGET_VAR_NAME}: "
-            "OUTPUT_VAR_NAME->${OUTPUT_VAR_NAME}=`${_result}`"
-          )
-
-    elseif(CPACK_NUGET_PACKAGE_${NUGET_VAR_NAME})
-        set(_result "${CPACK_NUGET_PACKAGE_${NUGET_VAR_NAME}}")
-        _cpack_nuget_debug(
-            "  CPACK_NUGET_PACKAGE_${NUGET_VAR_NAME}: "
-            "OUTPUT_VAR_NAME->${OUTPUT_VAR_NAME}=`${_result}`"
-          )
-
-    else()
-        foreach(_var IN LISTS _args_FALLBACK_VARS)
-            _cpack_nuget_debug("  Fallback: ${_var} ...")
-            if(${_var})
-                _cpack_nuget_debug("            ${_var}=`${${_var}}`")
-                set(_result "${${_var}}")
-                _cpack_nuget_debug(
-                    "  ${_var}: OUTPUT_VAR_NAME->${OUTPUT_VAR_NAME}=`${_result}`"
-                  )
-                break()
-            endif()
-        endforeach()
-    endif()
-
-    if(_result)
-        if(_args_USE_CDATA)
-            set(_value_before "<![CDATA[")
-            set(_value_after "]]>")
-        endif()
-
-        list(LENGTH _result _result_len)
-        if(_result_len GREATER 1 AND _args_LIST_GLUE)
-            list(JOIN _result "${_args_LIST_GLUE}" _result)
-        endif()
-
-        set(${OUTPUT_VAR_NAME} "${_value_before}${_result}${_value_after}" PARENT_SCOPE)
-    endif()
-
-endfunction()
-
-function(_cpack_nuget_variable_fallback_and_wrap_into_element ELEMENT NUGET_VAR_NAME)
-    set(_options)
-    set(_one_value_args)
-    set(_multi_value_args FALLBACK_VARS)
-    cmake_parse_arguments(PARSE_ARGV 0 _args "${_options}" "${_one_value_args}" "${_multi_value_args}")
-
-    _cpack_nuget_variable_fallback(_value ${NUGET_VAR_NAME} ${ARGN} USE_CDATA)
-
-    if(_value)
-        string(TOUPPER "${ELEMENT}" _ELEMENT_UP)
-        set(
-            _CPACK_NUGET_${_ELEMENT_UP}_TAG
-            "<${ELEMENT}>${_value}</${ELEMENT}>"
-            PARENT_SCOPE
-          )
-    endif()
-endfunction()
-
-# Print some debug info
-_cpack_nuget_debug("---[CPack NuGet Input Variables]---")
-_cpack_nuget_debug_var(CPACK_PACKAGE_NAME)
-_cpack_nuget_debug_var(CPACK_PACKAGE_VERSION)
-_cpack_nuget_debug_var(CPACK_TOPLEVEL_TAG)
-_cpack_nuget_debug_var(CPACK_TOPLEVEL_DIRECTORY)
-_cpack_nuget_debug_var(CPACK_TEMPORARY_DIRECTORY)
-_cpack_nuget_debug_var(CPACK_NUGET_GROUPS)
-if(CPACK_NUGET_GROUPS)
-    foreach(_group IN LISTS CPACK_NUGET_GROUPS)
-        string(MAKE_C_IDENTIFIER "${_group}" _group_up)
-        string(TOUPPER "${_group_up}" _group_up)
-        _cpack_nuget_debug_var(CPACK_NUGET_${_group_up}_GROUP_COMPONENTS)
-    endforeach()
-endif()
-_cpack_nuget_debug_var(CPACK_NUGET_COMPONENTS)
-_cpack_nuget_debug_var(CPACK_NUGET_ALL_IN_ONE)
-_cpack_nuget_debug_var(CPACK_NUGET_ORDINAL_MONOLITIC)
-_cpack_nuget_debug("-----------------------------------")
-
-function(_cpack_nuget_render_spec)
-    # Make a variable w/ upper-cased component name
-    if(CPACK_NUGET_PACKAGE_COMPONENT)
-        string(TOUPPER "${CPACK_NUGET_PACKAGE_COMPONENT}" CPACK_NUGET_PACKAGE_COMPONENT_UPPER)
-    endif()
-
-    # Set mandatory variables (not wrapped into XML elements)
-    # https://docs.microsoft.com/en-us/nuget/reference/nuspec#required-metadata-elements
-    if(CPACK_NUGET_PACKAGE_COMPONENT)
-        if(CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_PACKAGE_NAME)
-            set(
-                CPACK_NUGET_PACKAGE_NAME
-                "${CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_PACKAGE_NAME}"
-              )
-        elseif(NOT CPACK_NUGET_PACKAGE_COMPONENT STREQUAL "Unspecified")
-            set(
-                CPACK_NUGET_PACKAGE_NAME
-                "${CPACK_PACKAGE_NAME}.${CPACK_NUGET_PACKAGE_COMPONENT}"
-              )
-        else()
-            set(CPACK_NUGET_PACKAGE_NAME "${CPACK_PACKAGE_NAME}")
-        endif()
-    elseif(NOT CPACK_NUGET_PACKAGE_NAME)
-        set(CPACK_NUGET_PACKAGE_NAME "${CPACK_PACKAGE_NAME}")
-    endif()
-
-    _cpack_nuget_variable_fallback(
-        CPACK_NUGET_PACKAGE_VERSION VERSION
-        FALLBACK_VARS
-            CPACK_PACKAGE_VERSION
-      )
-    _cpack_nuget_variable_fallback(
-        CPACK_NUGET_PACKAGE_DESCRIPTION DESCRIPTION
-        FALLBACK_VARS
-            CPACK_COMPONENT_${CPACK_NUGET_PACKAGE_COMPONENT}_DESCRIPTION
-            CPACK_COMPONENT_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_DESCRIPTION
-            CPACK_COMPONENT_GROUP_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_DESCRIPTION
-            CPACK_PACKAGE_DESCRIPTION
-        USE_CDATA
-      )
-    _cpack_nuget_variable_fallback(
-        CPACK_NUGET_PACKAGE_AUTHORS AUTHORS
-        FALLBACK_VARS
-            CPACK_PACKAGE_VENDOR
-        USE_CDATA
-        LIST_GLUE ","
-      )
-
-    # Set optional variables (wrapped into XML elements)
-    # https://docs.microsoft.com/en-us/nuget/reference/nuspec#optional-metadata-elements
-    _cpack_nuget_variable_fallback_and_wrap_into_element(
-        title
-        TITLE
-        FALLBACK_VARS
-            CPACK_COMPONENT_${CPACK_NUGET_PACKAGE_COMPONENT}_DISPLAY_NAME
-            CPACK_COMPONENT_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_DISPLAY_NAME
-            CPACK_COMPONENT_GROUP_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_DISPLAY_NAME
-      )
-    _cpack_nuget_variable_fallback_and_wrap_into_element(owners OWNERS LIST_GLUE ",")
-    _cpack_nuget_variable_fallback_and_wrap_into_element(
-        projectUrl
-        HOMEPAGE_URL
-        FALLBACK_VARS
-            CPACK_PACKAGE_HOMEPAGE_URL
-      )
-    _cpack_nuget_variable_fallback_and_wrap_into_element(licenseUrl LICENSEURL)
-    _cpack_nuget_variable_fallback_and_wrap_into_element(iconUrl ICONURL)
-    _cpack_nuget_variable_fallback_and_wrap_into_element(
-        summary DESCRIPTION_SUMMARY
-        FALLBACK_VARS
-            CPACK_PACKAGE_DESCRIPTION_SUMMARY
-      )
-    if(CPACK_NUGET_PACKAGE_REQUIRE_LICENSE_ACCEPTANCE)
-        set(
-            _CPACK_NUGET_REQUIRELICENSEACCEPTANCE_TAG
-            "<requireLicenseAcceptance>true</requireLicenseAcceptance>"
-          )
-    endif()
-    _cpack_nuget_variable_fallback_and_wrap_into_element(releaseNotes RELEASE_NOTES)
-    _cpack_nuget_variable_fallback_and_wrap_into_element(copyright COPYRIGHT)
-    _cpack_nuget_variable_fallback_and_wrap_into_element(tags TAGS LIST_GLUE " ")
-
-    # Handle dependencies
-    _cpack_nuget_variable_fallback(_deps DEPENDENCIES)
-    set(_collected_deps)
-    foreach(_dep IN LISTS _deps)
-        _cpack_nuget_debug("  checking dependency `${_dep}`")
-
-        _cpack_nuget_variable_fallback(_ver DEPENDENCIES_${_dep}_VERSION)
-
-        if(NOT _ver)
-            string(TOUPPER "${_dep}" _dep_upper)
-            _cpack_nuget_variable_fallback(_ver DEPENDENCIES_${_dep_upper}_VERSION)
-        endif()
-
-        if(_ver)
-            _cpack_nuget_debug("  got `${_dep}` dependency version ${_ver}")
-            string(CONCAT _collected_deps "${_collected_deps}" "            <dependency id=\"${_dep}\" version=\"${_ver}\" />\n")
-        endif()
-    endforeach()
-
-    # Render deps into the variable
-    if(_collected_deps)
-        string(CONCAT _CPACK_NUGET_DEPENDENCIES_TAG "<dependencies>\n" "${_collected_deps}" "        </dependencies>")
-    endif()
-
-    # Render the spec file
-    # NOTE The spec filename doesn't matter. Being included into a package,
-    # NuGet will name it properly.
-    _cpack_nuget_debug("Rendering `${CPACK_TEMPORARY_DIRECTORY}/CPack.NuGet.nuspec` file...")
-    configure_file(
-        "${CMAKE_ROOT}/Modules/Internal/CPack/CPack.NuGet.nuspec.in"
-        "${CPACK_TEMPORARY_DIRECTORY}/CPack.NuGet.nuspec"
-        @ONLY
-      )
-endfunction()
-
-function(_cpack_nuget_make_files_tag)
-    set(_files)
-    foreach(_comp IN LISTS ARGN)
-        string(APPEND _files "        <file src=\"${_comp}\\**\" target=\".\" />\n")
-    endforeach()
-    set(_CPACK_NUGET_FILES_TAG "<files>\n${_files}    </files>" PARENT_SCOPE)
-endfunction()
-
-find_program(NUGET_EXECUTABLE nuget)
-_cpack_nuget_debug_var(NUGET_EXECUTABLE)
-if(NOT NUGET_EXECUTABLE)
-    message(FATAL_ERROR "NuGet executable not found")
-endif()
-
-# Add details for debug run
-if(CPACK_NUGET_PACKAGE_DEBUG)
-    list(APPEND CPACK_NUGET_PACK_ADDITIONAL_OPTIONS "-Verbosity" "detailed")
-endif()
-
-# Case one: ordinal all-in-one package
-if(CPACK_NUGET_ORDINAL_MONOLITIC)
-    # This variable `CPACK_NUGET_ALL_IN_ONE` set by C++ code:
-    # Meaning to pack all installed files into a single package
-    _cpack_nuget_debug("---[Making an ordinal monolitic package]---")
-    _cpack_nuget_render_spec()
-    execute_process(
-        COMMAND "${NUGET_EXECUTABLE}" pack ${CPACK_NUGET_PACK_ADDITIONAL_OPTIONS}
-        WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
-        RESULT_VARIABLE _nuget_result
-      )
-    if(NOT _nuget_result EQUAL 0)
-        message(FATAL_ERROR "Nuget pack failed")
-    endif()
-
-elseif(CPACK_NUGET_ALL_IN_ONE)
-    # This variable `CPACK_NUGET_ALL_IN_ONE` set by C++ code:
-    # Meaning to pack all installed components into a single package
-    _cpack_nuget_debug("---[Making a monolitic package from installed components]---")
-
-    # Prepare the `files` element which include files from several components
-    _cpack_nuget_make_files_tag(${CPACK_NUGET_COMPONENTS})
-    _cpack_nuget_render_spec()
-    execute_process(
-        COMMAND "${NUGET_EXECUTABLE}" pack ${CPACK_NUGET_PACK_ADDITIONAL_OPTIONS}
-        WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
-        RESULT_VARIABLE _nuget_result
-      )
-    if(NOT _nuget_result EQUAL 0)
-        message(FATAL_ERROR "Nuget pack failed")
-    endif()
-
-else()
-    # Is there any grouped component?
-    if(CPACK_NUGET_GROUPS)
-        _cpack_nuget_debug("---[Making grouped component(s) package(s)]---")
-        foreach(_group IN LISTS CPACK_NUGET_GROUPS)
-            _cpack_nuget_debug("Starting to make the package for group `${_group}`")
-            string(MAKE_C_IDENTIFIER "${_group}" _group_up)
-            string(TOUPPER "${_group_up}" _group_up)
-
-            # Render a spec file which includes all components in the current group
-            unset(_CPACK_NUGET_FILES_TAG)
-            _cpack_nuget_make_files_tag(${CPACK_NUGET_${_group_up}_GROUP_COMPONENTS})
-            # Temporary set `CPACK_NUGET_PACKAGE_COMPONENT` to the group name
-            # to properly collect various per group settings
-            set(CPACK_NUGET_PACKAGE_COMPONENT ${_group})
-            _cpack_nuget_render_spec()
-            unset(CPACK_NUGET_PACKAGE_COMPONENT)
-            execute_process(
-                COMMAND "${NUGET_EXECUTABLE}" pack ${CPACK_NUGET_PACK_ADDITIONAL_OPTIONS}
-                WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
-                RESULT_VARIABLE _nuget_result
-              )
-            if(NOT _nuget_result EQUAL 0)
-                message(FATAL_ERROR "Nuget pack failed")
-            endif()
-        endforeach()
-    endif()
-    # Is there any single component package needed?
-    if(CPACK_NUGET_COMPONENTS)
-        _cpack_nuget_debug("---[Making single-component(s) package(s)]---")
-        foreach(_comp IN LISTS CPACK_NUGET_COMPONENTS)
-            _cpack_nuget_debug("Starting to make the package for component `${_comp}`")
-            # Render a spec file which includes only given component
-            unset(_CPACK_NUGET_FILES_TAG)
-            _cpack_nuget_make_files_tag(${_comp})
-            # Temporary set `CPACK_NUGET_PACKAGE_COMPONENT` to the current
-            # component name to properly collect various per group settings
-            set(CPACK_NUGET_PACKAGE_COMPONENT ${_comp})
-            _cpack_nuget_render_spec()
-            unset(CPACK_NUGET_PACKAGE_COMPONENT)
-            execute_process(
-                COMMAND "${NUGET_EXECUTABLE}" pack ${CPACK_NUGET_PACK_ADDITIONAL_OPTIONS}
-                WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
-                RESULT_VARIABLE _nuget_result
-              )
-            if(NOT _nuget_result EQUAL 0)
-                message(FATAL_ERROR "Nuget pack failed")
-            endif()
-        endforeach()
-    endif()
-endif()
-
-file(GLOB_RECURSE GEN_CPACK_OUTPUT_FILES "${CPACK_TEMPORARY_DIRECTORY}/*.nupkg")
-if(NOT GEN_CPACK_OUTPUT_FILES)
-    message(FATAL_ERROR "NuGet package was not generated at `${CPACK_TEMPORARY_DIRECTORY}`!")
-endif()
-
-_cpack_nuget_debug("Generated files: ${GEN_CPACK_OUTPUT_FILES}")
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPackRPM.cmake b/share/cmake-3.18/Modules/Internal/CPack/CPackRPM.cmake
deleted file mode 100644
index 08bbc68..0000000
--- a/share/cmake-3.18/Modules/Internal/CPack/CPackRPM.cmake
+++ /dev/null
@@ -1,1889 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-# Author: Eric Noulard with the help of Alexander Neundorf.
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0057 NEW) # if IN_LIST
-
-function(get_file_permissions FILE RETURN_VAR)
-  execute_process(COMMAND ls -l ${FILE}
-          OUTPUT_VARIABLE permissions_
-          ERROR_QUIET
-          OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-  string(REPLACE " " ";" permissions_ "${permissions_}")
-  list(GET permissions_ 0 permissions_)
-
-  unset(text_notation_)
-  set(any_chars_ ".")
-  foreach(PERMISSION_TYPE "OWNER" "GROUP" "WORLD")
-    if(permissions_ MATCHES "${any_chars_}r.*")
-      list(APPEND text_notation_ "${PERMISSION_TYPE}_READ")
-    endif()
-    string(APPEND any_chars_ ".")
-    if(permissions_ MATCHES "${any_chars_}w.*")
-      list(APPEND text_notation_ "${PERMISSION_TYPE}_WRITE")
-    endif()
-    string(APPEND any_chars_ ".")
-    if(permissions_ MATCHES "${any_chars_}x.*")
-      list(APPEND text_notation_ "${PERMISSION_TYPE}_EXECUTE")
-    endif()
-  endforeach()
-
-  set(${RETURN_VAR} "${text_notation_}" PARENT_SCOPE)
-endfunction()
-
-function(get_unix_permissions_octal_notation PERMISSIONS_VAR RETURN_VAR)
-  set(PERMISSIONS ${${PERMISSIONS_VAR}})
-  list(LENGTH PERMISSIONS PERM_LEN_PRE)
-  list(REMOVE_DUPLICATES PERMISSIONS)
-  list(LENGTH PERMISSIONS PERM_LEN_POST)
-
-  if(NOT ${PERM_LEN_PRE} EQUAL ${PERM_LEN_POST})
-    message(FATAL_ERROR "${PERMISSIONS_VAR} contains duplicate values.")
-  endif()
-
-  foreach(PERMISSION_TYPE "OWNER" "GROUP" "WORLD")
-    set(${PERMISSION_TYPE}_PERMISSIONS 0)
-
-    foreach(PERMISSION ${PERMISSIONS})
-      if("${PERMISSION}" STREQUAL "${PERMISSION_TYPE}_READ")
-        math(EXPR ${PERMISSION_TYPE}_PERMISSIONS "${${PERMISSION_TYPE}_PERMISSIONS} + 4")
-      elseif("${PERMISSION}" STREQUAL "${PERMISSION_TYPE}_WRITE")
-        math(EXPR ${PERMISSION_TYPE}_PERMISSIONS "${${PERMISSION_TYPE}_PERMISSIONS} + 2")
-      elseif("${PERMISSION}" STREQUAL "${PERMISSION_TYPE}_EXECUTE")
-        math(EXPR ${PERMISSION_TYPE}_PERMISSIONS "${${PERMISSION_TYPE}_PERMISSIONS} + 1")
-      elseif(PERMISSION MATCHES "${PERMISSION_TYPE}.*")
-        message(FATAL_ERROR "${PERMISSIONS_VAR} contains invalid values.")
-      endif()
-    endforeach()
-  endforeach()
-
-  set(${RETURN_VAR} "${OWNER_PERMISSIONS}${GROUP_PERMISSIONS}${WORLD_PERMISSIONS}" PARENT_SCOPE)
-endfunction()
-
-function(cpack_rpm_exact_regex regex_var string)
-  string(REGEX REPLACE "([][+.*()^])" "\\\\\\1" regex "${string}")
-  set("${regex_var}" "${regex}" PARENT_SCOPE)
-endfunction()
-
-function(cpack_rpm_prepare_relocation_paths)
-  # set appropriate prefix, remove possible trailing slash and convert backslashes to slashes
-  if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_PREFIX)
-    file(TO_CMAKE_PATH "${CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_PREFIX}" PATH_PREFIX)
-  elseif(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_PACKAGE_PREFIX)
-    file(TO_CMAKE_PATH "${CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_PACKAGE_PREFIX}" PATH_PREFIX)
-  else()
-    file(TO_CMAKE_PATH "${CPACK_PACKAGING_INSTALL_PREFIX}" PATH_PREFIX)
-  endif()
-
-  set(RPM_RELOCATION_PATHS "${CPACK_RPM_RELOCATION_PATHS}")
-  list(REMOVE_DUPLICATES RPM_RELOCATION_PATHS)
-
-  # set base path prefix
-  if(EXISTS "${WDIR}/${PATH_PREFIX}")
-    if(NOT CPACK_RPM_NO_INSTALL_PREFIX_RELOCATION AND
-       NOT CPACK_RPM_NO_${CPACK_RPM_PACKAGE_COMPONENT}_INSTALL_PREFIX_RELOCATION AND
-       NOT CPACK_RPM_NO_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_INSTALL_PREFIX_RELOCATION)
-      string(APPEND TMP_RPM_PREFIXES "Prefix: ${PATH_PREFIX}\n")
-      list(APPEND RPM_USED_PACKAGE_PREFIXES "${PATH_PREFIX}")
-
-      if(CPACK_RPM_PACKAGE_DEBUG)
-        message("CPackRPM:Debug: removing '${PATH_PREFIX}' from relocation paths")
-      endif()
-    endif()
-  endif()
-
-  # set other path prefixes
-  foreach(RELOCATION_PATH ${RPM_RELOCATION_PATHS})
-    if(IS_ABSOLUTE "${RELOCATION_PATH}")
-      set(PREPARED_RELOCATION_PATH "${RELOCATION_PATH}")
-    elseif(PATH_PREFIX STREQUAL "/")
-      # don't prefix path with a second slash as "//" is treated as network path
-      # by get_filename_component() so it remains in path even inside rpm
-      # package where it may cause problems with relocation
-      set(PREPARED_RELOCATION_PATH "/${RELOCATION_PATH}")
-    else()
-      set(PREPARED_RELOCATION_PATH "${PATH_PREFIX}/${RELOCATION_PATH}")
-    endif()
-
-    # handle cases where path contains extra slashes (e.g. /a//b/ instead of
-    # /a/b)
-    get_filename_component(PREPARED_RELOCATION_PATH
-      "${PREPARED_RELOCATION_PATH}" ABSOLUTE)
-
-    if(EXISTS "${WDIR}/${PREPARED_RELOCATION_PATH}")
-      string(APPEND TMP_RPM_PREFIXES "Prefix: ${PREPARED_RELOCATION_PATH}\n")
-      list(APPEND RPM_USED_PACKAGE_PREFIXES "${PREPARED_RELOCATION_PATH}")
-    endif()
-  endforeach()
-
-  # warn about all the paths that are not relocatable
-  file(GLOB_RECURSE FILE_PATHS_ "${WDIR}/*")
-  foreach(TMP_PATH ${FILE_PATHS_})
-    string(LENGTH "${WDIR}" WDIR_LEN)
-    string(SUBSTRING "${TMP_PATH}" ${WDIR_LEN} -1 TMP_PATH)
-    unset(TMP_PATH_FOUND_)
-
-    foreach(RELOCATION_PATH ${RPM_USED_PACKAGE_PREFIXES})
-      file(RELATIVE_PATH REL_PATH_ "${RELOCATION_PATH}" "${TMP_PATH}")
-      string(SUBSTRING "${REL_PATH_}" 0 2 PREFIX_)
-
-      if(NOT "${PREFIX_}" STREQUAL "..")
-        set(TPM_PATH_FOUND_ TRUE)
-        break()
-      endif()
-    endforeach()
-
-    if(NOT TPM_PATH_FOUND_)
-      message(AUTHOR_WARNING "CPackRPM:Warning: Path ${TMP_PATH} is not on one of the relocatable paths! Package will be partially relocatable.")
-    endif()
-  endforeach()
-
-  set(RPM_USED_PACKAGE_PREFIXES "${RPM_USED_PACKAGE_PREFIXES}" PARENT_SCOPE)
-  set(TMP_RPM_PREFIXES "${TMP_RPM_PREFIXES}" PARENT_SCOPE)
-endfunction()
-
-function(cpack_rpm_prepare_content_list)
-  # get files list
-  file(GLOB_RECURSE CPACK_RPM_INSTALL_FILES LIST_DIRECTORIES true RELATIVE "${WDIR}" "${WDIR}/*")
-  set(CPACK_RPM_INSTALL_FILES "/${CPACK_RPM_INSTALL_FILES}")
-  string(REPLACE ";" ";/" CPACK_RPM_INSTALL_FILES "${CPACK_RPM_INSTALL_FILES}")
-
-  # if we are creating a relocatable package, omit parent directories of
-  # CPACK_RPM_PACKAGE_PREFIX. This is achieved by building a "filter list"
-  # which is passed to the find command that generates the content-list
-  if(CPACK_RPM_PACKAGE_RELOCATABLE)
-    # get a list of the elements in CPACK_RPM_PACKAGE_PREFIXES that are
-    # destinct parent paths of other relocation paths and remove the
-    # final element (so the install-prefix dir itself is not omitted
-    # from the RPM's content-list)
-    list(SORT RPM_USED_PACKAGE_PREFIXES)
-    set(_DISTINCT_PATH "NOT_SET")
-    foreach(_RPM_RELOCATION_PREFIX ${RPM_USED_PACKAGE_PREFIXES})
-      if(NOT "${_RPM_RELOCATION_PREFIX}" MATCHES "${_DISTINCT_PATH}/.*")
-        set(_DISTINCT_PATH "${_RPM_RELOCATION_PREFIX}")
-
-        string(REPLACE "/" ";" _CPACK_RPM_PACKAGE_PREFIX_ELEMS " ${_RPM_RELOCATION_PREFIX}")
-        list(REMOVE_AT _CPACK_RPM_PACKAGE_PREFIX_ELEMS -1)
-        unset(_TMP_LIST)
-        # Now generate all of the parent dirs of the relocation path
-        foreach(_PREFIX_PATH_ELEM ${_CPACK_RPM_PACKAGE_PREFIX_ELEMS})
-          list(APPEND _TMP_LIST "${_PREFIX_PATH_ELEM}")
-          string(REPLACE ";" "/" _OMIT_DIR "${_TMP_LIST}")
-          separate_arguments(_OMIT_DIR)
-          list(APPEND _RPM_DIRS_TO_OMIT ${_OMIT_DIR})
-        endforeach()
-      endif()
-    endforeach()
-  endif()
-
-  if(CPACK_RPM_PACKAGE_DEBUG)
-    message("CPackRPM:Debug: Initial list of path to OMIT in RPM: ${_RPM_DIRS_TO_OMIT}")
-  endif()
-
-  if(NOT DEFINED CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST)
-    set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST /etc /etc/init.d /usr /usr/bin
-        /usr/include /usr/lib /usr/libx32 /usr/lib64
-        /usr/share /usr/share/aclocal /usr/share/doc )
-    if(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION)
-      if(CPACK_RPM_PACKAGE_DEBUG)
-        message("CPackRPM:Debug: Adding ${CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION} to builtin omit list.")
-      endif()
-      list(APPEND CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST "${CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION}")
-    endif()
-  endif()
-
-  if(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST)
-    if(CPACK_RPM_PACKAGE_DEBUG)
-      message("CPackRPM:Debug: CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST= ${CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST}")
-    endif()
-    list(APPEND _RPM_DIRS_TO_OMIT ${CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST})
-  endif()
-
-  if(CPACK_RPM_PACKAGE_DEBUG)
-    message("CPackRPM:Debug: Final list of path to OMIT in RPM: ${_RPM_DIRS_TO_OMIT}")
-  endif()
-
-  list(REMOVE_ITEM CPACK_RPM_INSTALL_FILES ${_RPM_DIRS_TO_OMIT})
-
-  # add man paths that will be compressed
-  # (copied from /usr/lib/rpm/brp-compress - script that does the actual
-  # compressing)
-  list(APPEND MAN_LOCATIONS "/usr/man/man.*" "/usr/man/.*/man.*" "/usr/info.*"
-    "/usr/share/man/man.*" "/usr/share/man/.*/man.*" "/usr/share/info.*"
-    "/usr/kerberos/man.*" "/usr/X11R6/man/man.*" "/usr/lib/perl5/man/man.*"
-    "/usr/share/doc/.*/man/man.*" "/usr/lib/.*/man/man.*")
-
-  if(CPACK_RPM_ADDITIONAL_MAN_DIRS)
-    if(CPACK_RPM_PACKAGE_DEBUG)
-      message("CPackRPM:Debug: CPACK_RPM_ADDITIONAL_MAN_DIRS= ${CPACK_RPM_ADDITIONAL_MAN_DIRS}")
-    endif()
-    list(APPEND MAN_LOCATIONS ${CPACK_RPM_ADDITIONAL_MAN_DIRS})
-  endif()
-
-  foreach(PACK_LOCATION IN LISTS CPACK_RPM_INSTALL_FILES)
-    foreach(MAN_LOCATION IN LISTS MAN_LOCATIONS)
-      # man pages are files inside a certain location
-      if(PACK_LOCATION MATCHES "${MAN_LOCATION}/"
-        AND NOT IS_DIRECTORY "${WDIR}${PACK_LOCATION}"
-        AND NOT IS_SYMLINK "${WDIR}${PACK_LOCATION}")
-        list(FIND CPACK_RPM_INSTALL_FILES "${PACK_LOCATION}" INDEX)
-        # insert file location that covers compressed man pages
-        # even if using a wildcard causes duplicates as those are
-        # handled by RPM and we still keep the same file list
-        # in spec file - wildcard only represents file type (e.g. .gz)
-        list(INSERT CPACK_RPM_INSTALL_FILES ${INDEX} "${PACK_LOCATION}*")
-        # remove file location that doesn't cover compressed man pages
-        math(EXPR INDEX ${INDEX}+1)
-        list(REMOVE_AT CPACK_RPM_INSTALL_FILES ${INDEX})
-
-        break()
-      endif()
-    endforeach()
-  endforeach()
-
-  set(CPACK_RPM_INSTALL_FILES "${CPACK_RPM_INSTALL_FILES}" PARENT_SCOPE)
-endfunction()
-
-function(cpack_rpm_symlink_get_relocation_prefixes LOCATION PACKAGE_PREFIXES RETURN_VARIABLE)
-  foreach(PKG_PREFIX IN LISTS PACKAGE_PREFIXES)
-    string(REGEX MATCH "^${PKG_PREFIX}/.*" FOUND_ "${LOCATION}")
-    if(FOUND_)
-      list(APPEND TMP_PREFIXES "${PKG_PREFIX}")
-    endif()
-  endforeach()
-
-  set(${RETURN_VARIABLE} "${TMP_PREFIXES}" PARENT_SCOPE)
-endfunction()
-
-function(cpack_rpm_symlink_create_relocation_script PACKAGE_PREFIXES)
-  list(LENGTH PACKAGE_PREFIXES LAST_INDEX)
-  set(SORTED_PACKAGE_PREFIXES "${PACKAGE_PREFIXES}")
-  list(SORT SORTED_PACKAGE_PREFIXES)
-  list(REVERSE SORTED_PACKAGE_PREFIXES)
-  math(EXPR LAST_INDEX ${LAST_INDEX}-1)
-
-  foreach(SYMLINK_INDEX RANGE ${LAST_INDEX})
-    list(GET SORTED_PACKAGE_PREFIXES ${SYMLINK_INDEX} SRC_PATH)
-    list(FIND PACKAGE_PREFIXES "${SRC_PATH}" SYMLINK_INDEX) # reverse magic
-    string(LENGTH "${SRC_PATH}" SRC_PATH_LEN)
-
-    set(PARTS_CNT 0)
-    set(SCRIPT_PART "if [ \"$RPM_INSTALL_PREFIX${SYMLINK_INDEX}\" != \"${SRC_PATH}\" ]; then\n")
-
-    # both paths relocated
-    foreach(POINT_INDEX RANGE ${LAST_INDEX})
-      list(GET SORTED_PACKAGE_PREFIXES ${POINT_INDEX} POINT_PATH)
-      list(FIND PACKAGE_PREFIXES "${POINT_PATH}" POINT_INDEX) # reverse magic
-      string(LENGTH "${POINT_PATH}" POINT_PATH_LEN)
-
-      if(_RPM_RELOCATION_SCRIPT_${SYMLINK_INDEX}_${POINT_INDEX})
-        if("${SYMLINK_INDEX}" EQUAL "${POINT_INDEX}")
-          set(INDENT "")
-        else()
-          string(APPEND SCRIPT_PART "  if [ \"$RPM_INSTALL_PREFIX${POINT_INDEX}\" != \"${POINT_PATH}\" ]; then\n")
-          set(INDENT "  ")
-        endif()
-
-        foreach(RELOCATION_NO IN LISTS _RPM_RELOCATION_SCRIPT_${SYMLINK_INDEX}_${POINT_INDEX})
-          math(EXPR PARTS_CNT ${PARTS_CNT}+1)
-
-          math(EXPR RELOCATION_INDEX ${RELOCATION_NO}-1)
-          list(GET _RPM_RELOCATION_SCRIPT_PAIRS ${RELOCATION_INDEX} RELOCATION_SCRIPT_PAIR)
-          string(FIND "${RELOCATION_SCRIPT_PAIR}" ":" SPLIT_INDEX)
-
-          math(EXPR SRC_PATH_END ${SPLIT_INDEX}-${SRC_PATH_LEN})
-          string(SUBSTRING ${RELOCATION_SCRIPT_PAIR} ${SRC_PATH_LEN} ${SRC_PATH_END} SYMLINK_)
-
-          math(EXPR POINT_PATH_START ${SPLIT_INDEX}+1+${POINT_PATH_LEN})
-          string(SUBSTRING ${RELOCATION_SCRIPT_PAIR} ${POINT_PATH_START} -1 POINT_)
-
-          string(APPEND SCRIPT_PART "  ${INDENT}if [ -z \"$CPACK_RPM_RELOCATED_SYMLINK_${RELOCATION_INDEX}\" ]; then\n")
-          string(APPEND SCRIPT_PART "    ${INDENT}ln -s \"$RPM_INSTALL_PREFIX${POINT_INDEX}${POINT_}\" \"$RPM_INSTALL_PREFIX${SYMLINK_INDEX}${SYMLINK_}\"\n")
-          string(APPEND SCRIPT_PART "    ${INDENT}CPACK_RPM_RELOCATED_SYMLINK_${RELOCATION_INDEX}=true\n")
-          string(APPEND SCRIPT_PART "  ${INDENT}fi\n")
-        endforeach()
-
-        if(NOT "${SYMLINK_INDEX}" EQUAL "${POINT_INDEX}")
-          string(APPEND SCRIPT_PART "  fi\n")
-        endif()
-      endif()
-    endforeach()
-
-    # source path relocated
-    if(_RPM_RELOCATION_SCRIPT_${SYMLINK_INDEX}_X)
-      foreach(RELOCATION_NO IN LISTS _RPM_RELOCATION_SCRIPT_${SYMLINK_INDEX}_X)
-        math(EXPR PARTS_CNT ${PARTS_CNT}+1)
-
-        math(EXPR RELOCATION_INDEX ${RELOCATION_NO}-1)
-        list(GET _RPM_RELOCATION_SCRIPT_PAIRS ${RELOCATION_INDEX} RELOCATION_SCRIPT_PAIR)
-        string(FIND "${RELOCATION_SCRIPT_PAIR}" ":" SPLIT_INDEX)
-
-        math(EXPR SRC_PATH_END ${SPLIT_INDEX}-${SRC_PATH_LEN})
-        string(SUBSTRING ${RELOCATION_SCRIPT_PAIR} ${SRC_PATH_LEN} ${SRC_PATH_END} SYMLINK_)
-
-        math(EXPR POINT_PATH_START ${SPLIT_INDEX}+1)
-        string(SUBSTRING ${RELOCATION_SCRIPT_PAIR} ${POINT_PATH_START} -1 POINT_)
-
-        string(APPEND SCRIPT_PART "  if [ -z \"$CPACK_RPM_RELOCATED_SYMLINK_${RELOCATION_INDEX}\" ]; then\n")
-        string(APPEND SCRIPT_PART "    ln -s \"${POINT_}\" \"$RPM_INSTALL_PREFIX${SYMLINK_INDEX}${SYMLINK_}\"\n")
-        string(APPEND SCRIPT_PART "    CPACK_RPM_RELOCATED_SYMLINK_${RELOCATION_INDEX}=true\n")
-        string(APPEND SCRIPT_PART "  fi\n")
-      endforeach()
-    endif()
-
-    if(PARTS_CNT)
-      set(SCRIPT "${SCRIPT_PART}")
-      string(APPEND SCRIPT "fi\n")
-    endif()
-  endforeach()
-
-  # point path relocated
-  foreach(POINT_INDEX RANGE ${LAST_INDEX})
-    list(GET SORTED_PACKAGE_PREFIXES ${POINT_INDEX} POINT_PATH)
-    list(FIND PACKAGE_PREFIXES "${POINT_PATH}" POINT_INDEX) # reverse magic
-    string(LENGTH "${POINT_PATH}" POINT_PATH_LEN)
-
-    if(_RPM_RELOCATION_SCRIPT_X_${POINT_INDEX})
-      string(APPEND SCRIPT "if [ \"$RPM_INSTALL_PREFIX${POINT_INDEX}\" != \"${POINT_PATH}\" ]; then\n")
-
-      foreach(RELOCATION_NO IN LISTS _RPM_RELOCATION_SCRIPT_X_${POINT_INDEX})
-        math(EXPR RELOCATION_INDEX ${RELOCATION_NO}-1)
-        list(GET _RPM_RELOCATION_SCRIPT_PAIRS ${RELOCATION_INDEX} RELOCATION_SCRIPT_PAIR)
-        string(FIND "${RELOCATION_SCRIPT_PAIR}" ":" SPLIT_INDEX)
-
-        string(SUBSTRING ${RELOCATION_SCRIPT_PAIR} 0 ${SPLIT_INDEX} SYMLINK_)
-
-        math(EXPR POINT_PATH_START ${SPLIT_INDEX}+1+${POINT_PATH_LEN})
-        string(SUBSTRING ${RELOCATION_SCRIPT_PAIR} ${POINT_PATH_START} -1 POINT_)
-
-        string(APPEND SCRIPT "  if [ -z \"$CPACK_RPM_RELOCATED_SYMLINK_${RELOCATION_INDEX}\" ]; then\n")
-        string(APPEND SCRIPT "    ln -s \"$RPM_INSTALL_PREFIX${POINT_INDEX}${POINT_}\" \"${SYMLINK_}\"\n")
-        string(APPEND SCRIPT "    CPACK_RPM_RELOCATED_SYMLINK_${RELOCATION_INDEX}=true\n")
-        string(APPEND SCRIPT "  fi\n")
-      endforeach()
-
-      string(APPEND SCRIPT "fi\n")
-    endif()
-  endforeach()
-
-  # no path relocated
-  if(_RPM_RELOCATION_SCRIPT_X_X)
-    foreach(RELOCATION_NO IN LISTS _RPM_RELOCATION_SCRIPT_X_X)
-      math(EXPR RELOCATION_INDEX ${RELOCATION_NO}-1)
-      list(GET _RPM_RELOCATION_SCRIPT_PAIRS ${RELOCATION_INDEX} RELOCATION_SCRIPT_PAIR)
-      string(FIND "${RELOCATION_SCRIPT_PAIR}" ":" SPLIT_INDEX)
-
-      string(SUBSTRING ${RELOCATION_SCRIPT_PAIR} 0 ${SPLIT_INDEX} SYMLINK_)
-
-      math(EXPR POINT_PATH_START ${SPLIT_INDEX}+1)
-      string(SUBSTRING ${RELOCATION_SCRIPT_PAIR} ${POINT_PATH_START} -1 POINT_)
-
-      string(APPEND SCRIPT "if [ -z \"$CPACK_RPM_RELOCATED_SYMLINK_${RELOCATION_INDEX}\" ]; then\n")
-      string(APPEND SCRIPT "  ln -s \"${POINT_}\" \"${SYMLINK_}\"\n")
-      string(APPEND SCRIPT "fi\n")
-    endforeach()
-  endif()
-
-  set(RPM_SYMLINK_POSTINSTALL "${SCRIPT}" PARENT_SCOPE)
-endfunction()
-
-function(cpack_rpm_symlink_add_for_relocation_script PACKAGE_PREFIXES SYMLINK SYMLINK_RELOCATION_PATHS POINT POINT_RELOCATION_PATHS)
-  list(LENGTH SYMLINK_RELOCATION_PATHS SYMLINK_PATHS_COUTN)
-  list(LENGTH POINT_RELOCATION_PATHS POINT_PATHS_COUNT)
-
-  list(APPEND _RPM_RELOCATION_SCRIPT_PAIRS "${SYMLINK}:${POINT}")
-  list(LENGTH _RPM_RELOCATION_SCRIPT_PAIRS PAIR_NO)
-
-  if(SYMLINK_PATHS_COUTN)
-    foreach(SYMLINK_RELOC_PATH IN LISTS SYMLINK_RELOCATION_PATHS)
-      list(FIND PACKAGE_PREFIXES "${SYMLINK_RELOC_PATH}" SYMLINK_INDEX)
-
-      # source path relocated
-      list(APPEND _RPM_RELOCATION_SCRIPT_${SYMLINK_INDEX}_X "${PAIR_NO}")
-      list(APPEND RELOCATION_VARS "_RPM_RELOCATION_SCRIPT_${SYMLINK_INDEX}_X")
-
-      foreach(POINT_RELOC_PATH IN LISTS POINT_RELOCATION_PATHS)
-        list(FIND PACKAGE_PREFIXES "${POINT_RELOC_PATH}" POINT_INDEX)
-
-        # both paths relocated
-        list(APPEND _RPM_RELOCATION_SCRIPT_${SYMLINK_INDEX}_${POINT_INDEX} "${PAIR_NO}")
-        list(APPEND RELOCATION_VARS "_RPM_RELOCATION_SCRIPT_${SYMLINK_INDEX}_${POINT_INDEX}")
-
-        # point path relocated
-        list(APPEND _RPM_RELOCATION_SCRIPT_X_${POINT_INDEX} "${PAIR_NO}")
-        list(APPEND RELOCATION_VARS "_RPM_RELOCATION_SCRIPT_X_${POINT_INDEX}")
-      endforeach()
-    endforeach()
-  elseif(POINT_PATHS_COUNT)
-    foreach(POINT_RELOC_PATH IN LISTS POINT_RELOCATION_PATHS)
-      list(FIND PACKAGE_PREFIXES "${POINT_RELOC_PATH}" POINT_INDEX)
-
-      # point path relocated
-      list(APPEND _RPM_RELOCATION_SCRIPT_X_${POINT_INDEX} "${PAIR_NO}")
-      list(APPEND RELOCATION_VARS "_RPM_RELOCATION_SCRIPT_X_${POINT_INDEX}")
-    endforeach()
-  endif()
-
-  # no path relocated
-  list(APPEND _RPM_RELOCATION_SCRIPT_X_X "${PAIR_NO}")
-  list(APPEND RELOCATION_VARS "_RPM_RELOCATION_SCRIPT_X_X")
-
-  # place variables into parent scope
-  foreach(VAR IN LISTS RELOCATION_VARS)
-    set(${VAR} "${${VAR}}" PARENT_SCOPE)
-  endforeach()
-  set(_RPM_RELOCATION_SCRIPT_PAIRS "${_RPM_RELOCATION_SCRIPT_PAIRS}" PARENT_SCOPE)
-  set(REQUIRES_SYMLINK_RELOCATION_SCRIPT "true" PARENT_SCOPE)
-  set(DIRECTIVE "%ghost " PARENT_SCOPE)
-endfunction()
-
-function(cpack_rpm_prepare_install_files INSTALL_FILES_LIST WDIR PACKAGE_PREFIXES IS_RELOCATABLE)
-  # Prepend directories in ${CPACK_RPM_INSTALL_FILES} with %dir
-  # This is necessary to avoid duplicate files since rpmbuild does
-  # recursion on its own when encountering a pathname which is a directory
-  # which is not flagged as %dir
-  string(STRIP "${INSTALL_FILES_LIST}" INSTALL_FILES_LIST)
-  string(REPLACE "\n" ";" INSTALL_FILES_LIST
-                          "${INSTALL_FILES_LIST}")
-  string(REPLACE "\"" "" INSTALL_FILES_LIST
-                          "${INSTALL_FILES_LIST}")
-  string(LENGTH "${WDIR}" WDR_LEN_)
-
-  list(SORT INSTALL_FILES_LIST) # make file order consistent on all platforms
-
-  foreach(F IN LISTS INSTALL_FILES_LIST)
-    unset(DIRECTIVE)
-
-    if(IS_SYMLINK "${WDIR}/${F}")
-      if(IS_RELOCATABLE)
-        # check that symlink has relocatable format
-        get_filename_component(SYMLINK_LOCATION_ "${WDIR}/${F}" DIRECTORY)
-        execute_process(COMMAND ls -la "${WDIR}/${F}"
-                  WORKING_DIRECTORY "${WDIR}"
-                  OUTPUT_VARIABLE SYMLINK_POINT_
-                  OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-        string(FIND "${SYMLINK_POINT_}" "->" SYMLINK_POINT_INDEX_ REVERSE)
-        math(EXPR SYMLINK_POINT_INDEX_ ${SYMLINK_POINT_INDEX_}+3)
-        string(LENGTH "${SYMLINK_POINT_}" SYMLINK_POINT_LENGTH_)
-
-        # get destination path
-        string(SUBSTRING "${SYMLINK_POINT_}" ${SYMLINK_POINT_INDEX_} ${SYMLINK_POINT_LENGTH_} SYMLINK_POINT_)
-
-        # check if path is relative or absolute
-        string(SUBSTRING "${SYMLINK_POINT_}" 0 1 SYMLINK_IS_ABSOLUTE_)
-
-        if(${SYMLINK_IS_ABSOLUTE_} STREQUAL "/")
-          # prevent absolute paths from having /../ or /./ section inside of them
-          get_filename_component(SYMLINK_POINT_ "${SYMLINK_POINT_}" ABSOLUTE)
-        else()
-          # handle relative path
-          get_filename_component(SYMLINK_POINT_ "${SYMLINK_LOCATION_}/${SYMLINK_POINT_}" ABSOLUTE)
-        endif()
-
-        # recalculate path length after conversion to canonical form
-        string(LENGTH "${SYMLINK_POINT_}" SYMLINK_POINT_LENGTH_)
-
-        cpack_rpm_exact_regex(IN_SYMLINK_POINT_REGEX "${WDIR}")
-        string(APPEND IN_SYMLINK_POINT_REGEX "/.*")
-        if(SYMLINK_POINT_ MATCHES "${IN_SYMLINK_POINT_REGEX}")
-          # only symlinks that are pointing inside the packaging structure should be checked for relocation
-          string(SUBSTRING "${SYMLINK_POINT_}" ${WDR_LEN_} -1 SYMLINK_POINT_WD_)
-          cpack_rpm_symlink_get_relocation_prefixes("${F}" "${PACKAGE_PREFIXES}" "SYMLINK_RELOCATIONS")
-          cpack_rpm_symlink_get_relocation_prefixes("${SYMLINK_POINT_WD_}" "${PACKAGE_PREFIXES}" "POINT_RELOCATIONS")
-
-          list(LENGTH SYMLINK_RELOCATIONS SYMLINK_RELOCATIONS_COUNT)
-          list(LENGTH POINT_RELOCATIONS POINT_RELOCATIONS_COUNT)
-        else()
-          # location pointed to is outside WDR so it should be treated as a permanent symlink
-          set(SYMLINK_POINT_WD_ "${SYMLINK_POINT_}")
-
-          unset(SYMLINK_RELOCATIONS)
-          unset(POINT_RELOCATIONS)
-          unset(SYMLINK_RELOCATIONS_COUNT)
-          unset(POINT_RELOCATIONS_COUNT)
-
-          message(AUTHOR_WARNING "CPackRPM:Warning: Symbolic link '${F}' points to location that is outside packaging path! Link will possibly not be relocatable.")
-        endif()
-
-        if(SYMLINK_RELOCATIONS_COUNT AND POINT_RELOCATIONS_COUNT)
-          # find matching
-          foreach(SYMLINK_RELOCATION_PREFIX IN LISTS SYMLINK_RELOCATIONS)
-            list(FIND POINT_RELOCATIONS "${SYMLINK_RELOCATION_PREFIX}" FOUND_INDEX)
-            if(NOT ${FOUND_INDEX} EQUAL -1)
-              break()
-            endif()
-          endforeach()
-
-          if(NOT ${FOUND_INDEX} EQUAL -1)
-            # symlinks have the same subpath
-            if(${SYMLINK_RELOCATIONS_COUNT} EQUAL 1 AND ${POINT_RELOCATIONS_COUNT} EQUAL 1)
-              # permanent symlink
-              get_filename_component(SYMLINK_LOCATION_ "${F}" DIRECTORY)
-              file(RELATIVE_PATH FINAL_PATH_ ${SYMLINK_LOCATION_} ${SYMLINK_POINT_WD_})
-              execute_process(COMMAND "${CMAKE_COMMAND}" -E create_symlink "${FINAL_PATH_}" "${WDIR}/${F}")
-            else()
-              # relocation subpaths
-              cpack_rpm_symlink_add_for_relocation_script("${PACKAGE_PREFIXES}" "${F}" "${SYMLINK_RELOCATIONS}"
-                  "${SYMLINK_POINT_WD_}" "${POINT_RELOCATIONS}")
-            endif()
-          else()
-            # not on the same relocation path
-            cpack_rpm_symlink_add_for_relocation_script("${PACKAGE_PREFIXES}" "${F}" "${SYMLINK_RELOCATIONS}"
-                "${SYMLINK_POINT_WD_}" "${POINT_RELOCATIONS}")
-          endif()
-        elseif(POINT_RELOCATIONS_COUNT)
-          # point is relocatable
-          cpack_rpm_symlink_add_for_relocation_script("${PACKAGE_PREFIXES}" "${F}" "${SYMLINK_RELOCATIONS}"
-              "${SYMLINK_POINT_WD_}" "${POINT_RELOCATIONS}")
-        else()
-          # is not relocatable or points to non relocatable path - permanent symlink
-          execute_process(COMMAND "${CMAKE_COMMAND}" -E create_symlink "${SYMLINK_POINT_WD_}" "${WDIR}/${F}")
-        endif()
-      endif()
-    elseif(IS_DIRECTORY "${WDIR}/${F}")
-      set(DIRECTIVE "%dir ")
-    endif()
-
-    string(APPEND INSTALL_FILES "${DIRECTIVE}\"${F}\"\n")
-  endforeach()
-
-  if(REQUIRES_SYMLINK_RELOCATION_SCRIPT)
-    cpack_rpm_symlink_create_relocation_script("${PACKAGE_PREFIXES}")
-  endif()
-
-  set(RPM_SYMLINK_POSTINSTALL "${RPM_SYMLINK_POSTINSTALL}" PARENT_SCOPE)
-  set(CPACK_RPM_INSTALL_FILES "${INSTALL_FILES}" PARENT_SCOPE)
-endfunction()
-
-if(CMAKE_BINARY_DIR)
-  message(FATAL_ERROR "CPackRPM.cmake may only be used by CPack internally.")
-endif()
-
-if(NOT UNIX)
-  message(FATAL_ERROR "CPackRPM.cmake may only be used under UNIX.")
-endif()
-
-# We need to check if the binaries were compiled with debug symbols
-# because without them the package will be useless
-function(cpack_rpm_debugsymbol_check INSTALL_FILES WORKING_DIR)
-  if(NOT CPACK_BUILD_SOURCE_DIRS)
-    message(FATAL_ERROR "CPackRPM: CPACK_BUILD_SOURCE_DIRS variable is not set!"
-      " Required for debuginfo packaging. See documentation of"
-      " CPACK_RPM_DEBUGINFO_PACKAGE variable for details.")
-  endif()
-
-  # With objdump we should check the debug symbols
-  find_program(OBJDUMP_EXECUTABLE objdump)
-  if(NOT OBJDUMP_EXECUTABLE)
-    message(FATAL_ERROR "CPackRPM: objdump binary could not be found!"
-      " Required for debuginfo packaging. See documentation of"
-      " CPACK_RPM_DEBUGINFO_PACKAGE variable for details.")
-  endif()
-
-  # With debugedit we prepare source files list
-  find_program(DEBUGEDIT_EXECUTABLE debugedit "/usr/lib/rpm/")
-  if(NOT DEBUGEDIT_EXECUTABLE)
-    message(FATAL_ERROR "CPackRPM: debugedit binary could not be found!"
-      " Required for debuginfo packaging. See documentation of"
-      " CPACK_RPM_DEBUGINFO_PACKAGE variable for details.")
-  endif()
-
-  unset(mkdir_list_)
-  unset(cp_list_)
-  unset(additional_sources_)
-
-  foreach(F IN LISTS INSTALL_FILES)
-    if(IS_DIRECTORY "${WORKING_DIR}/${F}" OR IS_SYMLINK "${WORKING_DIR}/${F}")
-      continue()
-    endif()
-
-    execute_process(COMMAND "${OBJDUMP_EXECUTABLE}" -h ${WORKING_DIR}/${F}
-                    WORKING_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}"
-                    RESULT_VARIABLE OBJDUMP_EXEC_RESULT
-                    OUTPUT_VARIABLE OBJDUMP_OUT
-                    ERROR_QUIET)
-    # Check if the given file is an executable or not
-    if(NOT OBJDUMP_EXEC_RESULT)
-      string(FIND "${OBJDUMP_OUT}" "debug" FIND_RESULT)
-      if(FIND_RESULT GREATER -1)
-        set(index_ 0)
-        foreach(source_dir_ IN LISTS CPACK_BUILD_SOURCE_DIRS)
-          string(LENGTH "${source_dir_}" source_dir_len_)
-          string(LENGTH "${CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX}/src_${index_}" debuginfo_dir_len)
-          if(source_dir_len_ LESS debuginfo_dir_len)
-            message(FATAL_ERROR "CPackRPM: source dir path '${source_dir_}' is"
-              " shorter than debuginfo sources dir path '${CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX}/src_${index_}'!"
-              " Source dir path must be longer than debuginfo sources dir path."
-              " Set CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX variable to a shorter value"
-              " or make source dir path longer."
-              " Required for debuginfo packaging. See documentation of"
-              " CPACK_RPM_DEBUGINFO_PACKAGE variable for details.")
-          endif()
-
-          file(REMOVE "${CPACK_RPM_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}/debugsources_add.list")
-          execute_process(COMMAND "${DEBUGEDIT_EXECUTABLE}" -b "${source_dir_}" -d "${CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX}/src_${index_}" -i -l "${CPACK_RPM_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}/debugsources_add.list" "${WORKING_DIR}/${F}"
-              RESULT_VARIABLE res_
-              OUTPUT_VARIABLE opt_
-              ERROR_VARIABLE err_
-            )
-
-          file(STRINGS
-            "${CPACK_RPM_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}/debugsources_add.list"
-            sources_)
-          list(REMOVE_DUPLICATES sources_)
-
-          foreach(source_ IN LISTS sources_)
-            if(EXISTS "${source_dir_}/${source_}" AND NOT IS_DIRECTORY "${source_dir_}/${source_}")
-              get_filename_component(path_part_ "${source_}" DIRECTORY)
-              list(APPEND mkdir_list_ "%{buildroot}${CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX}/src_${index_}/${path_part_}")
-              list(APPEND cp_list_ "cp \"${source_dir_}/${source_}\" \"%{buildroot}${CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX}/src_${index_}/${path_part_}\"")
-
-              list(APPEND additional_sources_ "${CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX}/src_${index_}/${source_}")
-            endif()
-          endforeach()
-
-          math(EXPR index_ "${index_} + 1")
-        endforeach()
-      else()
-        message(WARNING "CPackRPM: File: ${F} does not contain debug symbols. They will possibly be missing from debuginfo package!")
-      endif()
-
-      get_file_permissions("${WORKING_DIR}/${F}" permissions_)
-      if(NOT "USER_EXECUTE" IN_LIST permissions_ AND
-         NOT "GROUP_EXECUTE" IN_LIST permissions_ AND
-         NOT "WORLD_EXECUTE" IN_LIST permissions_)
-        if(CPACK_RPM_INSTALL_WITH_EXEC)
-          execute_process(COMMAND chmod a+x ${WORKING_DIR}/${F}
-                  RESULT_VARIABLE res_
-                  ERROR_VARIABLE err_
-                  OUTPUT_QUIET)
-
-          if(res_)
-            message(FATAL_ERROR "CPackRPM: could not apply execute permissions "
-              "requested by CPACK_RPM_INSTALL_WITH_EXEC variable on "
-              "'${WORKING_DIR}/${F}'! Reason: '${err_}'")
-          endif()
-        else()
-          message(AUTHOR_WARNING "CPackRPM: File: ${WORKING_DIR}/${F} does not "
-            "have execute permissions. Debuginfo symbols will not be extracted"
-            "! Missing debuginfo may cause packaging failure. Consider setting "
-            "execute permissions or setting 'CPACK_RPM_INSTALL_WITH_EXEC' "
-            "variable.")
-        endif()
-      endif()
-    endif()
-  endforeach()
-
-  list(LENGTH mkdir_list_ len_)
-  if(len_)
-    list(REMOVE_DUPLICATES mkdir_list_)
-    unset(TMP_RPM_DEBUGINFO_INSTALL)
-    foreach(part_ IN LISTS mkdir_list_)
-      string(APPEND TMP_RPM_DEBUGINFO_INSTALL "mkdir -p \"${part_}\"\n")
-    endforeach()
-  endif()
-
-  list(LENGTH cp_list_ len_)
-  if(len_)
-    list(REMOVE_DUPLICATES cp_list_)
-    foreach(part_ IN LISTS cp_list_)
-      string(APPEND TMP_RPM_DEBUGINFO_INSTALL "${part_}\n")
-    endforeach()
-  endif()
-
-  if(NOT DEFINED CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS)
-    set(CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS /usr /usr/src /usr/src/debug)
-    if(CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS_ADDITION)
-      if(CPACK_RPM_PACKAGE_DEBUG)
-        message("CPackRPM:Debug: Adding ${CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS_ADDITION} to builtin omit list.")
-      endif()
-      list(APPEND CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS "${CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS_ADDITION}")
-    endif()
-  endif()
-  if(CPACK_RPM_PACKAGE_DEBUG)
-    message("CPackRPM:Debug: CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS= ${CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS}")
-  endif()
-
-  list(LENGTH additional_sources_ len_)
-  if(len_)
-    list(REMOVE_DUPLICATES additional_sources_)
-    unset(additional_sources_all_)
-    foreach(source_ IN LISTS additional_sources_)
-      string(REPLACE "/" ";" split_source_ " ${source_}")
-      list(REMOVE_AT split_source_ 0)
-      unset(tmp_path_)
-      # Now generate all segments of the path
-      foreach(segment_ IN LISTS split_source_)
-        string(APPEND tmp_path_ "/${segment_}")
-        list(APPEND additional_sources_all_ "${tmp_path_}")
-      endforeach()
-    endforeach()
-
-    list(REMOVE_DUPLICATES additional_sources_all_)
-    list(REMOVE_ITEM additional_sources_all_
-      ${CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS})
-
-    unset(TMP_DEBUGINFO_ADDITIONAL_SOURCES)
-    foreach(source_ IN LISTS additional_sources_all_)
-      string(APPEND TMP_DEBUGINFO_ADDITIONAL_SOURCES "${source_}\n")
-    endforeach()
-  endif()
-
-  set(TMP_RPM_DEBUGINFO_INSTALL "${TMP_RPM_DEBUGINFO_INSTALL}" PARENT_SCOPE)
-  set(TMP_DEBUGINFO_ADDITIONAL_SOURCES "${TMP_DEBUGINFO_ADDITIONAL_SOURCES}"
-    PARENT_SCOPE)
-endfunction()
-
-function(cpack_rpm_variable_fallback OUTPUT_VAR_NAME)
-  set(FALLBACK_VAR_NAMES ${ARGN})
-
-  foreach(variable_name IN LISTS FALLBACK_VAR_NAMES)
-    if(${variable_name})
-      set(${OUTPUT_VAR_NAME} "${${variable_name}}" PARENT_SCOPE)
-      break()
-    endif()
-  endforeach()
-endfunction()
-
-function(cpack_rpm_generate_package)
-  # rpmbuild is the basic command for building RPM package
-  # it may be a simple (symbolic) link to rpm command.
-  find_program(RPMBUILD_EXECUTABLE rpmbuild)
-
-  # Check version of the rpmbuild tool this would be easier to
-  # track bugs with users and CPackRPM debug mode.
-  # We may use RPM version in order to check for available version dependent features
-  if(RPMBUILD_EXECUTABLE)
-    execute_process(COMMAND ${RPMBUILD_EXECUTABLE} --version
-                    OUTPUT_VARIABLE _TMP_VERSION
-                    ERROR_QUIET
-                    OUTPUT_STRIP_TRAILING_WHITESPACE)
-    string(REGEX REPLACE "^.* " ""
-           RPMBUILD_EXECUTABLE_VERSION
-           ${_TMP_VERSION})
-    if(CPACK_RPM_PACKAGE_DEBUG)
-      message("CPackRPM:Debug: rpmbuild version is <${RPMBUILD_EXECUTABLE_VERSION}>")
-    endif()
-  endif()
-
-  if(NOT RPMBUILD_EXECUTABLE)
-    message(FATAL_ERROR "RPM package requires rpmbuild executable")
-  endif()
-
-  # Display lsb_release output if DEBUG mode enable
-  # This will help to diagnose problem with CPackRPM
-  # because we will know on which kind of Linux we are
-  if(CPACK_RPM_PACKAGE_DEBUG)
-    find_program(LSB_RELEASE_EXECUTABLE lsb_release)
-    if(LSB_RELEASE_EXECUTABLE)
-      execute_process(COMMAND ${LSB_RELEASE_EXECUTABLE} -a
-                      OUTPUT_VARIABLE _TMP_LSB_RELEASE_OUTPUT
-                      ERROR_QUIET
-                      OUTPUT_STRIP_TRAILING_WHITESPACE)
-      string(REGEX REPLACE "\n" ", "
-             LSB_RELEASE_OUTPUT
-             ${_TMP_LSB_RELEASE_OUTPUT})
-    else ()
-      set(LSB_RELEASE_OUTPUT "lsb_release not installed/found!")
-    endif()
-    message("CPackRPM:Debug: LSB_RELEASE  = ${LSB_RELEASE_OUTPUT}")
-  endif()
-
-  # We may use RPM version in the future in order
-  # to shut down warning about space in buildtree
-  # some recent RPM version should support space in different places.
-  # not checked [yet].
-  if(CPACK_TOPLEVEL_DIRECTORY MATCHES ".* .*")
-    message(FATAL_ERROR "${RPMBUILD_EXECUTABLE} can't handle paths with spaces, use a build directory without spaces for building RPMs.")
-  endif()
-
-  # If rpmbuild is found
-  # we try to discover alien since we may be on non RPM distro like Debian.
-  # In this case we may try to to use more advanced features
-  # like generating RPM directly from DEB using alien.
-  # FIXME feature not finished (yet)
-  find_program(ALIEN_EXECUTABLE alien)
-  if(ALIEN_EXECUTABLE)
-    message(STATUS "alien found, we may be on a Debian based distro.")
-  endif()
-
-  # Are we packaging components ?
-  if(CPACK_RPM_PACKAGE_COMPONENT)
-    string(TOUPPER ${CPACK_RPM_PACKAGE_COMPONENT} CPACK_RPM_PACKAGE_COMPONENT_UPPER)
-  endif()
-
-  set(WDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}")
-
-  #
-  # Use user-defined RPM specific variables value
-  # or generate reasonable default value from
-  # CPACK_xxx generic values.
-  # The variables comes from the needed (mandatory or not)
-  # values found in the RPM specification file aka ".spec" file.
-  # The variables which may/should be defined are:
-  #
-
-  # CPACK_RPM_PACKAGE_SUMMARY (mandatory)
-
-  if(CPACK_RPM_PACKAGE_COMPONENT)
-    cpack_rpm_variable_fallback("CPACK_RPM_PACKAGE_SUMMARY"
-      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_SUMMARY"
-      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_PACKAGE_SUMMARY")
-  endif()
-
-  if(NOT CPACK_RPM_PACKAGE_SUMMARY)
-    if(CPACK_PACKAGE_DESCRIPTION_SUMMARY)
-      set(CPACK_RPM_PACKAGE_SUMMARY ${CPACK_PACKAGE_DESCRIPTION_SUMMARY})
-    else()
-      # if neither var is defined lets use the name as summary
-      string(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_RPM_PACKAGE_SUMMARY)
-    endif()
-  endif()
-
-  if(NOT CPACK_RPM_PACKAGE_URL AND CPACK_PACKAGE_HOMEPAGE_URL)
-    set(CPACK_RPM_PACKAGE_URL "${CPACK_PACKAGE_HOMEPAGE_URL}")
-  endif()
-
-  # CPACK_RPM_PACKAGE_NAME (mandatory)
-  if(NOT CPACK_RPM_PACKAGE_NAME)
-    string(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_RPM_PACKAGE_NAME)
-  endif()
-
-  if(CPACK_RPM_PACKAGE_COMPONENT)
-    string(TOUPPER "${CPACK_RPM_MAIN_COMPONENT}"
-      CPACK_RPM_MAIN_COMPONENT_UPPER)
-
-    if(NOT CPACK_RPM_MAIN_COMPONENT_UPPER STREQUAL CPACK_RPM_PACKAGE_COMPONENT_UPPER)
-      string(APPEND CPACK_RPM_PACKAGE_NAME "-${CPACK_RPM_PACKAGE_COMPONENT}")
-
-      cpack_rpm_variable_fallback("CPACK_RPM_PACKAGE_NAME"
-        "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_NAME"
-        "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_PACKAGE_NAME")
-    endif()
-  endif()
-
-  # CPACK_RPM_PACKAGE_VERSION (mandatory)
-  if(NOT CPACK_RPM_PACKAGE_VERSION)
-    if(NOT CPACK_PACKAGE_VERSION)
-      message(FATAL_ERROR "RPM package requires a package version")
-    endif()
-    set(CPACK_RPM_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})
-  endif()
-  # Replace '-' in version with '_'
-  # '-' character is  an Illegal RPM version character
-  # it is illegal because it is used to separate
-  # RPM "Version" from RPM "Release"
-  string(REPLACE "-" "_" CPACK_RPM_PACKAGE_VERSION ${CPACK_RPM_PACKAGE_VERSION})
-
-  # CPACK_RPM_PACKAGE_ARCHITECTURE (mandatory)
-  if(NOT CPACK_RPM_PACKAGE_ARCHITECTURE)
-    execute_process(COMMAND uname "-m"
-                    OUTPUT_VARIABLE CPACK_RPM_PACKAGE_ARCHITECTURE
-                    OUTPUT_STRIP_TRAILING_WHITESPACE)
-  else()
-    if(CPACK_RPM_PACKAGE_DEBUG)
-      message("CPackRPM:Debug: using user-specified build arch = ${CPACK_RPM_PACKAGE_ARCHITECTURE}")
-    endif()
-  endif()
-
-  if(CPACK_RPM_PACKAGE_COMPONENT)
-    cpack_rpm_variable_fallback("CPACK_RPM_PACKAGE_ARCHITECTURE"
-      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_ARCHITECTURE"
-      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_PACKAGE_ARCHITECTURE")
-
-    if(CPACK_RPM_PACKAGE_DEBUG)
-      message("CPackRPM:Debug: using component build arch = ${CPACK_RPM_PACKAGE_ARCHITECTURE}")
-    endif()
-  endif()
-
-  if(${CPACK_RPM_PACKAGE_ARCHITECTURE} STREQUAL "noarch")
-    set(TMP_RPM_BUILDARCH "Buildarch: ${CPACK_RPM_PACKAGE_ARCHITECTURE}")
-  else()
-    set(TMP_RPM_BUILDARCH "")
-  endif()
-
-  # CPACK_RPM_PACKAGE_RELEASE
-  # The RPM release is the numbering of the RPM package ITSELF
-  # this is the version of the PACKAGING and NOT the version
-  # of the CONTENT of the package.
-  # You may well need to generate a new RPM package release
-  # without changing the version of the packaged software.
-  # This is the case when the packaging is buggy (not) the software :=)
-  # If not set, 1 is a good candidate
-  if(NOT CPACK_RPM_PACKAGE_RELEASE)
-    set(CPACK_RPM_PACKAGE_RELEASE "1")
-  endif()
-
-  if(CPACK_RPM_PACKAGE_RELEASE_DIST)
-    string(APPEND CPACK_RPM_PACKAGE_RELEASE "%{?dist}")
-  endif()
-
-  # CPACK_RPM_PACKAGE_LICENSE
-  if(NOT CPACK_RPM_PACKAGE_LICENSE)
-    set(CPACK_RPM_PACKAGE_LICENSE "unknown")
-  endif()
-
-  # CPACK_RPM_PACKAGE_GROUP
-  if(CPACK_RPM_PACKAGE_COMPONENT)
-    cpack_rpm_variable_fallback("CPACK_RPM_PACKAGE_GROUP"
-      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_GROUP"
-      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_PACKAGE_GROUP")
-  endif()
-
-  if(NOT CPACK_RPM_PACKAGE_GROUP)
-    set(CPACK_RPM_PACKAGE_GROUP "unknown")
-  endif()
-
-  # CPACK_RPM_PACKAGE_VENDOR
-  if(NOT CPACK_RPM_PACKAGE_VENDOR)
-    if(CPACK_PACKAGE_VENDOR)
-      set(CPACK_RPM_PACKAGE_VENDOR "${CPACK_PACKAGE_VENDOR}")
-    else()
-      set(CPACK_RPM_PACKAGE_VENDOR "unknown")
-    endif()
-  endif()
-
-  # CPACK_RPM_PACKAGE_SOURCE
-  # The name of the source tarball in case we generate a source RPM
-
-  # CPACK_RPM_PACKAGE_DESCRIPTION
-  # The variable content may be either
-  #   - explicitly given by the user or
-  #   - filled with the content of CPACK_PACKAGE_DESCRIPTION_FILE
-  #     if it is defined
-  #   - set to a default value
-  #
-
-  if(CPACK_RPM_PACKAGE_COMPONENT)
-    cpack_rpm_variable_fallback("CPACK_RPM_PACKAGE_DESCRIPTION"
-      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_DESCRIPTION"
-      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_PACKAGE_DESCRIPTION"
-      "CPACK_COMPONENT_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DESCRIPTION")
-  endif()
-
-  if(NOT CPACK_RPM_PACKAGE_DESCRIPTION)
-    if(CPACK_PACKAGE_DESCRIPTION_FILE)
-      file(READ ${CPACK_PACKAGE_DESCRIPTION_FILE} CPACK_RPM_PACKAGE_DESCRIPTION)
-    else ()
-      set(CPACK_RPM_PACKAGE_DESCRIPTION "no package description available")
-    endif ()
-  endif ()
-
-  # CPACK_RPM_COMPRESSION_TYPE
-  #
-  if (CPACK_RPM_COMPRESSION_TYPE)
-     if(CPACK_RPM_PACKAGE_DEBUG)
-       message("CPackRPM:Debug: User Specified RPM compression type: ${CPACK_RPM_COMPRESSION_TYPE}")
-     endif()
-     if(CPACK_RPM_COMPRESSION_TYPE STREQUAL "lzma")
-       set(CPACK_RPM_COMPRESSION_TYPE_TMP "%define _binary_payload w9.lzdio")
-     endif()
-     if(CPACK_RPM_COMPRESSION_TYPE STREQUAL "xz")
-       set(CPACK_RPM_COMPRESSION_TYPE_TMP "%define _binary_payload w7.xzdio")
-     endif()
-     if(CPACK_RPM_COMPRESSION_TYPE STREQUAL "bzip2")
-       set(CPACK_RPM_COMPRESSION_TYPE_TMP "%define _binary_payload w9.bzdio")
-     endif()
-     if(CPACK_RPM_COMPRESSION_TYPE STREQUAL "gzip")
-       set(CPACK_RPM_COMPRESSION_TYPE_TMP "%define _binary_payload w9.gzdio")
-     endif()
-  else()
-     set(CPACK_RPM_COMPRESSION_TYPE_TMP "")
-  endif()
-
-  if(NOT CPACK_RPM_PACKAGE_SOURCES)
-    if(CPACK_PACKAGE_RELOCATABLE OR CPACK_RPM_PACKAGE_RELOCATABLE)
-      if(CPACK_RPM_PACKAGE_DEBUG)
-        message("CPackRPM:Debug: Trying to build a relocatable package")
-      endif()
-      if(CPACK_SET_DESTDIR AND (NOT CPACK_SET_DESTDIR STREQUAL "I_ON"))
-        message("CPackRPM:Warning: CPACK_SET_DESTDIR is set (=${CPACK_SET_DESTDIR}) while requesting a relocatable package (CPACK_RPM_PACKAGE_RELOCATABLE is set): this is not supported, the package won't be relocatable.")
-        set(CPACK_RPM_PACKAGE_RELOCATABLE FALSE)
-      else()
-        set(CPACK_RPM_PACKAGE_PREFIX ${CPACK_PACKAGING_INSTALL_PREFIX}) # kept for back compatibility (provided external RPM spec files)
-        cpack_rpm_prepare_relocation_paths()
-        set(CPACK_RPM_PACKAGE_RELOCATABLE TRUE)
-      endif()
-    endif()
-  else()
-    if(CPACK_RPM_PACKAGE_COMPONENT)
-      message(FATAL_ERROR "CPACK_RPM_PACKAGE_SOURCES parameter can not be used"
-        " in combination with CPACK_RPM_PACKAGE_COMPONENT parameter!")
-    endif()
-
-    set(CPACK_RPM_PACKAGE_RELOCATABLE FALSE) # disable relocatable option if building source RPM
-  endif()
-
-  execute_process(
-    COMMAND "${RPMBUILD_EXECUTABLE}" --querytags
-    OUTPUT_VARIABLE RPMBUILD_TAG_LIST
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-  string(REPLACE "\n" ";" RPMBUILD_TAG_LIST "${RPMBUILD_TAG_LIST}")
-
-  if(CPACK_RPM_PACKAGE_EPOCH)
-    set(TMP_RPM_EPOCH "Epoch: ${CPACK_RPM_PACKAGE_EPOCH}")
-  endif()
-
-  # Check if additional fields for RPM spec header are given
-  # There may be some COMPONENT specific variables as well
-  # If component specific var is not provided we use the global one
-  # for each component
-  foreach(_RPM_SPEC_HEADER URL REQUIRES SUGGESTS PROVIDES OBSOLETES PREFIX CONFLICTS AUTOPROV AUTOREQ AUTOREQPROV REQUIRES_PRE REQUIRES_POST REQUIRES_PREUN REQUIRES_POSTUN)
-
-    if(CPACK_RPM_PACKAGE_DEBUG)
-      message("CPackRPM:Debug: processing ${_RPM_SPEC_HEADER}")
-    endif()
-
-    if(CPACK_RPM_PACKAGE_COMPONENT)
-      cpack_rpm_variable_fallback("CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}"
-        "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_${_RPM_SPEC_HEADER}"
-        "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_PACKAGE_${_RPM_SPEC_HEADER}")
-    endif()
-
-    if(DEFINED CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER})
-      # Prefix can be replaced by Prefixes but the old version still works so we'll ignore it for now
-      # Requires* is a special case because it gets transformed to Requires(pre/post/preun/postun)
-      # Auto* is a special case because the tags can not be queried by querytags rpmbuild flag
-      set(special_case_tags_ PREFIX REQUIRES_PRE REQUIRES_POST REQUIRES_PREUN REQUIRES_POSTUN AUTOPROV AUTOREQ AUTOREQPROV)
-      if(NOT _RPM_SPEC_HEADER IN_LIST RPMBUILD_TAG_LIST AND NOT _RPM_SPEC_HEADER IN_LIST special_case_tags_)
-        message(AUTHOR_WARNING "CPackRPM:Warning: ${_RPM_SPEC_HEADER} not "
-            "supported in provided rpmbuild. Tag will not be used.")
-        continue()
-      endif()
-
-      if(CPACK_RPM_PACKAGE_DEBUG)
-        message("CPackRPM:Debug: using CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}")
-      endif()
-
-      set(CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}_TMP ${CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}})
-    endif()
-
-    # Treat the RPM Spec keyword iff it has been properly defined
-    if(DEFINED CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}_TMP)
-      # Transform NAME --> Name e.g. PROVIDES --> Provides
-      # The Upper-case first letter and lowercase tail is the
-      # appropriate value required in the final RPM spec file.
-      string(SUBSTRING ${_RPM_SPEC_HEADER} 1 -1 _PACKAGE_HEADER_TAIL)
-      string(TOLOWER "${_PACKAGE_HEADER_TAIL}" _PACKAGE_HEADER_TAIL)
-      string(SUBSTRING ${_RPM_SPEC_HEADER} 0 1 _PACKAGE_HEADER_NAME)
-      string(APPEND _PACKAGE_HEADER_NAME "${_PACKAGE_HEADER_TAIL}")
-      # The following keywords require parentheses around the "pre" or "post" suffix in the final RPM spec file.
-      set(SCRIPTS_REQUIREMENTS_LIST REQUIRES_PRE REQUIRES_POST REQUIRES_PREUN REQUIRES_POSTUN)
-      list(FIND SCRIPTS_REQUIREMENTS_LIST ${_RPM_SPEC_HEADER} IS_SCRIPTS_REQUIREMENT_FOUND)
-      if(NOT ${IS_SCRIPTS_REQUIREMENT_FOUND} EQUAL -1)
-        string(REPLACE "_" "(" _PACKAGE_HEADER_NAME "${_PACKAGE_HEADER_NAME}")
-        string(APPEND _PACKAGE_HEADER_NAME ")")
-      endif()
-      if(CPACK_RPM_PACKAGE_DEBUG)
-        message("CPackRPM:Debug: User defined ${_PACKAGE_HEADER_NAME}:\n ${CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}_TMP}")
-      endif()
-      set(TMP_RPM_${_RPM_SPEC_HEADER} "${_PACKAGE_HEADER_NAME}: ${CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}_TMP}")
-      unset(CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}_TMP)
-    endif()
-  endforeach()
-
-  # CPACK_RPM_SPEC_INSTALL_POST
-  # May be used to define a RPM post intallation script
-  # for example setting it to "/bin/true" may prevent
-  # rpmbuild from stripping binaries.
-  if(CPACK_RPM_SPEC_INSTALL_POST)
-    if(CPACK_RPM_PACKAGE_DEBUG)
-      message("CPackRPM:Debug: User defined CPACK_RPM_SPEC_INSTALL_POST = ${CPACK_RPM_SPEC_INSTALL_POST}")
-    endif()
-    set(TMP_RPM_SPEC_INSTALL_POST "%define __spec_install_post ${CPACK_RPM_SPEC_INSTALL_POST}")
-  endif()
-
-  # CPACK_RPM_POST_INSTALL_SCRIPT_FILE (or CPACK_RPM_<COMPONENT>_POST_INSTALL_SCRIPT_FILE)
-  # CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE (or CPACK_RPM_<COMPONENT>_POST_UNINSTALL_SCRIPT_FILE)
-  # CPACK_RPM_POST_TRANS_SCRIPT_FILE (or CPACK_RPM_<COMPONENT>_POST_TRANS_SCRIPT_FILE)
-  # May be used to embed a post installation/uninstallation/transaction script in the spec file.
-  # The referred script file(s) will be read and directly
-  # put after the %post or %postun or %posttrans section
-  # ----------------------------------------------------------------
-  # CPACK_RPM_PRE_INSTALL_SCRIPT_FILE (or CPACK_RPM_<COMPONENT>_PRE_INSTALL_SCRIPT_FILE)
-  # CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE (or CPACK_RPM_<COMPONENT>_PRE_UNINSTALL_SCRIPT_FILE)
-  # CPACK_RPM_PRE_TRANS_SCRIPT_FILE (or CPACK_RPM_<COMPONENT>_PRE_TRANS_SCRIPT_FILE)
-  # May be used to embed a pre installation/uninstallation/transaction script in the spec file.
-  # The referred script file(s) will be read and directly
-  # put after the %pre or %preun or %pretrans section
-  foreach(RPM_SCRIPT_FILE_TYPE_ "INSTALL" "UNINSTALL" "TRANS")
-    foreach(RPM_SCRIPT_FILE_TIME_ "PRE" "POST")
-      set("CPACK_RPM_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_READ_FILE"
-        "${CPACK_RPM_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_SCRIPT_FILE}")
-
-      if(CPACK_RPM_PACKAGE_COMPONENT)
-        cpack_rpm_variable_fallback("CPACK_RPM_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_READ_FILE"
-          "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_SCRIPT_FILE"
-          "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_SCRIPT_FILE")
-      endif()
-
-      # Handle file if it has been specified
-      if(CPACK_RPM_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_READ_FILE)
-        if(EXISTS ${CPACK_RPM_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_READ_FILE})
-          file(READ ${CPACK_RPM_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_READ_FILE}
-            "CPACK_RPM_SPEC_${RPM_SCRIPT_FILE_TIME_}${RPM_SCRIPT_FILE_TYPE_}")
-        else()
-          message("CPackRPM:Warning: CPACK_RPM_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_SCRIPT_FILE <${CPACK_RPM_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_READ_FILE}> does not exists - ignoring")
-        endif()
-      else()
-        # reset SPEC var value if no file has been specified
-        # (either globally or component-wise)
-        set("CPACK_RPM_SPEC_${RPM_SCRIPT_FILE_TIME_}${RPM_SCRIPT_FILE_TYPE_}" "")
-      endif()
-    endforeach()
-  endforeach()
-
-  # CPACK_RPM_CHANGELOG_FILE
-  # May be used to embed a changelog in the spec file.
-  # The referred file will be read and directly put after the %changelog section
-  if(CPACK_RPM_CHANGELOG_FILE)
-    if(EXISTS ${CPACK_RPM_CHANGELOG_FILE})
-      file(READ ${CPACK_RPM_CHANGELOG_FILE} CPACK_RPM_SPEC_CHANGELOG)
-    else()
-      message(SEND_ERROR "CPackRPM:Warning: CPACK_RPM_CHANGELOG_FILE <${CPACK_RPM_CHANGELOG_FILE}> does not exists - ignoring")
-    endif()
-  else()
-    set(CPACK_RPM_SPEC_CHANGELOG "* Sun Jul 4 2010 Eric Noulard <eric.noulard@gmail.com> - ${CPACK_RPM_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}\n  Generated by CPack RPM (no Changelog file were provided)")
-  endif()
-
-  # CPACK_RPM_SPEC_MORE_DEFINE
-  # This is a generated spec rpm file spaceholder
-  if(CPACK_RPM_SPEC_MORE_DEFINE)
-    if(CPACK_RPM_PACKAGE_DEBUG)
-      message("CPackRPM:Debug: User defined more define spec line specified:\n ${CPACK_RPM_SPEC_MORE_DEFINE}")
-    endif()
-  endif()
-
-  # Now we may create the RPM build tree structure
-  set(CPACK_RPM_ROOTDIR "${CPACK_TOPLEVEL_DIRECTORY}")
-  if(CPACK_RPM_PACKAGE_DEBUG)
-    message("CPackRPM:Debug: Using CPACK_RPM_ROOTDIR=${CPACK_RPM_ROOTDIR}")
-  endif()
-  # Prepare RPM build tree
-  file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR})
-  file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/tmp)
-  file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/BUILD)
-  file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/RPMS)
-  file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/SOURCES)
-  file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/SPECS)
-  file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/SRPMS)
-
-  # it seems rpmbuild can't handle spaces in the path
-  # neither escaping (as below) nor putting quotes around the path seem to help
-  #string(REGEX REPLACE " " "\\\\ " CPACK_RPM_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}")
-  set(CPACK_RPM_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}")
-
-  cpack_rpm_prepare_content_list()
-
-  # In component case, put CPACK_ABSOLUTE_DESTINATION_FILES_<COMPONENT>
-  #                   into CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL
-  #         otherwise, put CPACK_ABSOLUTE_DESTINATION_FILES
-  # This must be done BEFORE the CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL handling
-  if(CPACK_RPM_PACKAGE_COMPONENT)
-    if(CPACK_ABSOLUTE_DESTINATION_FILES)
-      cpack_rpm_variable_fallback("COMPONENT_FILES_TAG"
-        "CPACK_ABSOLUTE_DESTINATION_FILES_${CPACK_RPM_PACKAGE_COMPONENT}"
-        "CPACK_ABSOLUTE_DESTINATION_FILES_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}")
-      set(CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL "${${COMPONENT_FILES_TAG}}")
-      if(CPACK_RPM_PACKAGE_DEBUG)
-        message("CPackRPM:Debug: Handling Absolute Destination Files: <${CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL}>")
-        message("CPackRPM:Debug: in component = ${CPACK_RPM_PACKAGE_COMPONENT}")
-      endif()
-    endif()
-  else()
-    if(CPACK_ABSOLUTE_DESTINATION_FILES)
-      set(CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL "${CPACK_ABSOLUTE_DESTINATION_FILES}")
-    endif()
-  endif()
-
-  # In component case, set CPACK_RPM_USER_FILELIST_INTERNAL with CPACK_RPM_<COMPONENT>_USER_FILELIST.
-  set(CPACK_RPM_USER_FILELIST_INTERNAL "")
-  if(CPACK_RPM_PACKAGE_COMPONENT)
-    cpack_rpm_variable_fallback("CPACK_RPM_USER_FILELIST_INTERNAL"
-      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_USER_FILELIST"
-      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_USER_FILELIST")
-
-    if(CPACK_RPM_PACKAGE_DEBUG AND CPACK_RPM_USER_FILELIST_INTERNAL)
-      message("CPackRPM:Debug: Handling User Filelist: <${CPACK_RPM_USER_FILELIST_INTERNAL}>")
-      message("CPackRPM:Debug: in component = ${CPACK_RPM_PACKAGE_COMPONENT}")
-    endif()
-  elseif(CPACK_RPM_USER_FILELIST)
-    set(CPACK_RPM_USER_FILELIST_INTERNAL "${CPACK_RPM_USER_FILELIST}")
-  endif()
-
-  # Handle user specified file line list in CPACK_RPM_USER_FILELIST_INTERNAL
-  # Remove those files from CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL
-  #                      or CPACK_RPM_INSTALL_FILES,
-  # hence it must be done before these auto-generated lists are processed.
-  if(CPACK_RPM_USER_FILELIST_INTERNAL)
-    if(CPACK_RPM_PACKAGE_DEBUG)
-      message("CPackRPM:Debug: Handling User Filelist: <${CPACK_RPM_USER_FILELIST_INTERNAL}>")
-    endif()
-
-    # Create CMake list from CPACK_RPM_INSTALL_FILES
-    string(STRIP "${CPACK_RPM_INSTALL_FILES}" CPACK_RPM_INSTALL_FILES_LIST)
-    string(REPLACE "\n" ";" CPACK_RPM_INSTALL_FILES_LIST
-                            "${CPACK_RPM_INSTALL_FILES_LIST}")
-    string(REPLACE "\"" "" CPACK_RPM_INSTALL_FILES_LIST
-                            "${CPACK_RPM_INSTALL_FILES_LIST}")
-
-    set(CPACK_RPM_USER_INSTALL_FILES "")
-    foreach(F IN LISTS CPACK_RPM_USER_FILELIST_INTERNAL)
-      string(REGEX REPLACE "%[A-Za-z]+(\\([^()]*\\))? " "" F_PATH ${F})
-      string(REGEX MATCH "(%[A-Za-z]+(\\([^()]*\\))? )*" F_PREFIX ${F})
-      string(STRIP ${F_PREFIX} F_PREFIX)
-
-      if(CPACK_RPM_PACKAGE_DEBUG)
-        message("CPackRPM:Debug: F_PREFIX=<${F_PREFIX}>, F_PATH=<${F_PATH}>")
-      endif()
-      if(F_PREFIX)
-        string(APPEND F_PREFIX " ")
-      endif()
-      # Rebuild the user list file
-      string(APPEND CPACK_RPM_USER_INSTALL_FILES "${F_PREFIX}\"${F_PATH}\"\n")
-
-      # Remove from CPACK_RPM_INSTALL_FILES and CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL
-      list(REMOVE_ITEM CPACK_RPM_INSTALL_FILES_LIST ${F_PATH})
-      # ABSOLUTE destination files list may not exists at all
-      if (CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL)
-        list(REMOVE_ITEM CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL ${F_PATH})
-      endif()
-    endforeach()
-
-    # Rebuild CPACK_RPM_INSTALL_FILES
-    set(CPACK_RPM_INSTALL_FILES "")
-    foreach(F IN LISTS CPACK_RPM_INSTALL_FILES_LIST)
-      string(APPEND CPACK_RPM_INSTALL_FILES "\"${F}\"\n")
-    endforeach()
-  else()
-    set(CPACK_RPM_USER_INSTALL_FILES "")
-  endif()
-
-  if (CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL)
-    if(CPACK_RPM_PACKAGE_DEBUG)
-      message("CPackRPM:Debug: Handling Absolute Destination Files: ${CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL}")
-    endif()
-    # Remove trailing space
-    string(STRIP "${CPACK_RPM_INSTALL_FILES}" CPACK_RPM_INSTALL_FILES_LIST)
-    # Transform endline separated - string into CMake List
-    string(REPLACE "\n" ";" CPACK_RPM_INSTALL_FILES_LIST "${CPACK_RPM_INSTALL_FILES_LIST}")
-    # Remove unnecessary quotes
-    string(REPLACE "\"" "" CPACK_RPM_INSTALL_FILES_LIST "${CPACK_RPM_INSTALL_FILES_LIST}")
-    # Remove ABSOLUTE install file from INSTALL FILE LIST
-    list(REMOVE_ITEM CPACK_RPM_INSTALL_FILES_LIST ${CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL})
-    # Rebuild INSTALL_FILES
-    set(CPACK_RPM_INSTALL_FILES "")
-    foreach(F IN LISTS CPACK_RPM_INSTALL_FILES_LIST)
-      string(APPEND CPACK_RPM_INSTALL_FILES "\"${F}\"\n")
-    endforeach()
-    # Build ABSOLUTE_INSTALL_FILES
-    set(CPACK_RPM_ABSOLUTE_INSTALL_FILES "")
-    foreach(F IN LISTS CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL)
-      string(APPEND CPACK_RPM_ABSOLUTE_INSTALL_FILES "%config \"${F}\"\n")
-    endforeach()
-    if(CPACK_RPM_PACKAGE_DEBUG)
-      message("CPackRPM:Debug: CPACK_RPM_ABSOLUTE_INSTALL_FILES=${CPACK_RPM_ABSOLUTE_INSTALL_FILES}")
-      message("CPackRPM:Debug: CPACK_RPM_INSTALL_FILES=${CPACK_RPM_INSTALL_FILES}")
-    endif()
-  else()
-    # reset vars in order to avoid leakage of value(s) from one component to another
-    set(CPACK_RPM_ABSOLUTE_INSTALL_FILES "")
-  endif()
-
-  cpack_rpm_variable_fallback("CPACK_RPM_DEBUGINFO_PACKAGE"
-    "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_DEBUGINFO_PACKAGE"
-    "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEBUGINFO_PACKAGE"
-    "CPACK_RPM_DEBUGINFO_PACKAGE")
-  if(CPACK_RPM_DEBUGINFO_PACKAGE OR (CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE AND NOT GENERATE_SPEC_PARTS))
-    cpack_rpm_variable_fallback("CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX"
-      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_BUILD_SOURCE_DIRS_PREFIX"
-      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_BUILD_SOURCE_DIRS_PREFIX"
-      "CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX")
-    if(NOT CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX)
-      set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}")
-    endif()
-
-    # handle cases where path contains extra slashes (e.g. /a//b/ instead of
-    # /a/b)
-    get_filename_component(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX
-      "${CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX}" ABSOLUTE)
-
-    if(CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE AND GENERATE_SPEC_PARTS)
-      file(WRITE "${CPACK_RPM_ROOTDIR}/SPECS/${CPACK_RPM_PACKAGE_COMPONENT}.files"
-        "${CPACK_RPM_INSTALL_FILES}")
-    else()
-      if(CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE AND CPACK_RPM_PACKAGE_COMPONENT)
-        # this part is only required by components packaging - with monolithic
-        # packages we can be certain that there are no other components present
-        # so CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE is a noop
-        if(CPACK_RPM_DEBUGINFO_PACKAGE)
-          # only add current package files to debuginfo list if debuginfo
-          # generation is enabled for current package
-          string(STRIP "${CPACK_RPM_INSTALL_FILES}" install_files_)
-          string(REPLACE "\n" ";" install_files_ "${install_files_}")
-          string(REPLACE "\"" "" install_files_ "${install_files_}")
-        else()
-          unset(install_files_)
-        endif()
-
-        file(GLOB files_ "${CPACK_RPM_DIRECTORY}/SPECS/*.files")
-
-        foreach(f_ IN LISTS files_)
-          file(READ "${f_}" tmp_)
-          string(APPEND install_files_ ";${tmp_}")
-        endforeach()
-
-        # if there were other components/groups so we need to move files from them
-        # to current component otherwise those files won't be found
-        file(GLOB components_ LIST_DIRECTORIES true RELATIVE
-          "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}"
-          "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/*")
-        foreach(component_ IN LISTS components_)
-          string(TOUPPER "${component_}" component_dir_upper_)
-          if(component_dir_upper_ STREQUAL CPACK_RPM_PACKAGE_COMPONENT_UPPER)
-            # skip current component
-            continue()
-          endif()
-
-          file(GLOB_RECURSE files_for_move_ LIST_DIRECTORIES false RELATIVE
-            "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/${component_}"
-            "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/${component_}/*")
-
-          foreach(f_ IN LISTS files_for_move_)
-            get_filename_component(dir_path_ "${f_}" DIRECTORY)
-            set(src_file_
-              "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/${component_}/${f_}")
-
-            # check that we are not overriding an existing file that doesn't
-            # match the file that we want to copy
-            if(EXISTS "${src_file_}" AND EXISTS "${WDIR}/${f_}")
-              execute_process(
-                  COMMAND ${CMAKE_COMMAND} -E compare_files "${src_file_}" "${WDIR}/${f_}"
-                  RESULT_VARIABLE res_
-                )
-              if(res_)
-                message(FATAL_ERROR "CPackRPM:Error: File on path '${WDIR}/${f_}'"
-                  " already exists but is a different than the one in component"
-                  " '${component_}'! Packages will not be generated.")
-              endif()
-            endif()
-
-            file(MAKE_DIRECTORY "${WDIR}/${dir_path_}")
-            file(RENAME "${src_file_}"
-              "${WDIR}/${f_}")
-          endforeach()
-        endforeach()
-
-        cpack_rpm_debugsymbol_check("${install_files_}" "${WDIR}")
-      else()
-        string(STRIP "${CPACK_RPM_INSTALL_FILES}" install_files_)
-        string(REPLACE "\n" ";" install_files_ "${install_files_}")
-        string(REPLACE "\"" "" install_files_ "${install_files_}")
-
-        cpack_rpm_debugsymbol_check("${install_files_}" "${WDIR}")
-      endif()
-
-      if(TMP_DEBUGINFO_ADDITIONAL_SOURCES)
-        set(TMP_RPM_DEBUGINFO "
-# Modified version of %%debug_package macro
-# defined in /usr/lib/rpm/macros as that one
-# can't handle injection of extra source files.
-%ifnarch noarch
-%global __debug_package 1
-%package debuginfo
-Summary: Debug information for package %{name}
-Group: Development/Debug
-AutoReqProv: 0
-%description debuginfo
-This package provides debug information for package %{name}.
-Debug information is useful when developing applications that use this
-package or when debugging this package.
-%files debuginfo -f debugfiles.list
-%defattr(-,root,root)
-${TMP_DEBUGINFO_ADDITIONAL_SOURCES}
-%endif
-")
-      elseif(CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE)
-        message(AUTHOR_WARNING "CPackRPM:Warning: debuginfo package was requested"
-          " but will not be generated as no source files were found!")
-      else()
-        message(AUTHOR_WARNING "CPackRPM:Warning: debuginfo package was requested"
-          " but will not be generated as no source files were found! Component: '"
-          "${CPACK_RPM_PACKAGE_COMPONENT}'.")
-      endif()
-    endif()
-  endif()
-
-  # Prepare install files
-  cpack_rpm_prepare_install_files(
-      "${CPACK_RPM_INSTALL_FILES}"
-      "${WDIR}"
-      "${RPM_USED_PACKAGE_PREFIXES}"
-      "${CPACK_RPM_PACKAGE_RELOCATABLE}"
-    )
-
-  # set default user and group
-  foreach(_PERM_TYPE "USER" "GROUP")
-    if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEFAULT_${_PERM_TYPE})
-      set(TMP_DEFAULT_${_PERM_TYPE} "${CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEFAULT_${_PERM_TYPE}}")
-    elseif(CPACK_RPM_DEFAULT_${_PERM_TYPE})
-      set(TMP_DEFAULT_${_PERM_TYPE} "${CPACK_RPM_DEFAULT_${_PERM_TYPE}}")
-    else()
-      set(TMP_DEFAULT_${_PERM_TYPE} "root")
-    endif()
-  endforeach()
-
-  # set default file and dir permissions
-  foreach(_PERM_TYPE "FILE" "DIR")
-    if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEFAULT_${_PERM_TYPE}_PERMISSIONS)
-      get_unix_permissions_octal_notation("CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEFAULT_${_PERM_TYPE}_PERMISSIONS" "TMP_DEFAULT_${_PERM_TYPE}_PERMISSIONS")
-      set(_PERMISSIONS_VAR "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEFAULT_${_PERM_TYPE}_PERMISSIONS")
-    elseif(CPACK_RPM_DEFAULT_${_PERM_TYPE}_PERMISSIONS)
-      get_unix_permissions_octal_notation("CPACK_RPM_DEFAULT_${_PERM_TYPE}_PERMISSIONS" "TMP_DEFAULT_${_PERM_TYPE}_PERMISSIONS")
-      set(_PERMISSIONS_VAR "CPACK_RPM_DEFAULT_${_PERM_TYPE}_PERMISSIONS")
-    else()
-      set(TMP_DEFAULT_${_PERM_TYPE}_PERMISSIONS "-")
-    endif()
-  endforeach()
-
-  # The name of the final spec file to be used by rpmbuild
-  set(CPACK_RPM_BINARY_SPECFILE "${CPACK_RPM_ROOTDIR}/SPECS/${CPACK_RPM_PACKAGE_NAME}.spec")
-
-  # Print out some debug information if we were asked for that
-  if(CPACK_RPM_PACKAGE_DEBUG)
-     message("CPackRPM:Debug: CPACK_TOPLEVEL_DIRECTORY          = ${CPACK_TOPLEVEL_DIRECTORY}")
-     message("CPackRPM:Debug: CPACK_TOPLEVEL_TAG                = ${CPACK_TOPLEVEL_TAG}")
-     message("CPackRPM:Debug: CPACK_TEMPORARY_DIRECTORY         = ${CPACK_TEMPORARY_DIRECTORY}")
-     message("CPackRPM:Debug: CPACK_OUTPUT_FILE_NAME            = ${CPACK_OUTPUT_FILE_NAME}")
-     message("CPackRPM:Debug: CPACK_OUTPUT_FILE_PATH            = ${CPACK_OUTPUT_FILE_PATH}")
-     message("CPackRPM:Debug: CPACK_PACKAGE_FILE_NAME           = ${CPACK_PACKAGE_FILE_NAME}")
-     message("CPackRPM:Debug: CPACK_RPM_BINARY_SPECFILE         = ${CPACK_RPM_BINARY_SPECFILE}")
-     message("CPackRPM:Debug: CPACK_PACKAGE_INSTALL_DIRECTORY   = ${CPACK_PACKAGE_INSTALL_DIRECTORY}")
-     message("CPackRPM:Debug: CPACK_TEMPORARY_PACKAGE_FILE_NAME = ${CPACK_TEMPORARY_PACKAGE_FILE_NAME}")
-  endif()
-
-  #
-  # USER generated/provided spec file handling.
-  #
-
-  # We can have a component specific spec file.
-  if(CPACK_RPM_PACKAGE_COMPONENT)
-    cpack_rpm_variable_fallback("CPACK_RPM_USER_BINARY_SPECFILE"
-      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_USER_BINARY_SPECFILE"
-      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_USER_BINARY_SPECFILE")
-  endif()
-
-  cpack_rpm_variable_fallback("CPACK_RPM_FILE_NAME"
-    "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_FILE_NAME"
-    "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_FILE_NAME"
-    "CPACK_RPM_FILE_NAME")
-  if(NOT CPACK_RPM_FILE_NAME STREQUAL "RPM-DEFAULT")
-    if(CPACK_RPM_FILE_NAME)
-      if(NOT CPACK_RPM_FILE_NAME MATCHES ".*\\.rpm")
-        message(FATAL_ERROR "'${CPACK_RPM_FILE_NAME}' is not a valid RPM package file name as it must end with '.rpm'!")
-      endif()
-    else()
-      # old file name format for back compatibility
-      string(TOUPPER "${CPACK_RPM_MAIN_COMPONENT}"
-        CPACK_RPM_MAIN_COMPONENT_UPPER)
-
-      if(CPACK_RPM_MAIN_COMPONENT_UPPER STREQUAL CPACK_RPM_PACKAGE_COMPONENT_UPPER)
-        # this is the main component so ignore the component filename part
-        set(CPACK_RPM_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.rpm")
-      else()
-        set(CPACK_RPM_FILE_NAME "${CPACK_OUTPUT_FILE_NAME}")
-      endif()
-    endif()
-    # else example:
-    #set(CPACK_RPM_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}-${CPACK_RPM_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}-${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm")
-
-    if(CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE AND GENERATE_SPEC_PARTS)
-      string(TOLOWER "${CPACK_RPM_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}.*\\.rpm" expected_filename_)
-
-      file(WRITE "${CPACK_RPM_ROOTDIR}/SPECS/${CPACK_RPM_PACKAGE_COMPONENT}.rpm_name"
-        "${expected_filename_};${CPACK_RPM_FILE_NAME}")
-    elseif(NOT CPACK_RPM_DEBUGINFO_PACKAGE)
-      set(FILE_NAME_DEFINE "%define _rpmfilename ${CPACK_RPM_FILE_NAME}")
-    endif()
-  endif()
-
-  if(CPACK_RPM_PACKAGE_SOURCES) # source rpm
-    set(archive_name_ "${CPACK_RPM_PACKAGE_NAME}-${CPACK_RPM_PACKAGE_VERSION}")
-
-    execute_process(
-        COMMAND ${CMAKE_COMMAND} -E tar "cfvz" "${CPACK_RPM_DIRECTORY}/SOURCES/${archive_name_}.tar.gz" "${CPACK_PACKAGE_FILE_NAME}"
-        WORKING_DIRECTORY ${CPACK_RPM_DIRECTORY}
-      )
-    set(TMP_RPM_SOURCE "Source: ${archive_name_}.tar.gz")
-
-    if(CPACK_RPM_BUILDREQUIRES)
-      set(TMP_RPM_BUILD_REQUIRES "BuildRequires: ${CPACK_RPM_BUILDREQUIRES}")
-    endif()
-
-    # Disable debuginfo packages - srpm generates invalid packages due to
-    # releasing control to cpack to generate binary packages.
-    # Note however that this doesn't prevent cpack to generate debuginfo
-    # packages when run from srpm with --rebuild.
-    set(TMP_RPM_DISABLE_DEBUGINFO "%define debug_package %{nil}")
-
-    if(NOT CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX)
-      set(CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX "/")
-    endif()
-
-    set(TMP_RPM_BUILD
-      "
-%build
-mkdir cpack_rpm_build_dir
-cd cpack_rpm_build_dir
-'${CMAKE_COMMAND}' ${CPACK_RPM_SOURCE_PKG_BUILD_PARAMS} -DCPACK_PACKAGING_INSTALL_PREFIX=${CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX} ../${CPACK_PACKAGE_FILE_NAME}
-make %{?_smp_mflags}" # %{?_smp_mflags} -> -j option
-      )
-    set(TMP_RPM_INSTALL
-      "
-cd cpack_rpm_build_dir
-cpack -G RPM
-mv *.rpm %_rpmdir"
-      )
-    set(TMP_RPM_PREP "%setup -c")
-
-    set(RPMBUILD_FLAGS "-bs")
-
-     file(WRITE ${CPACK_RPM_BINARY_SPECFILE}.in
-      "# Restore old style debuginfo creation for rpm >= 4.14.
-%undefine _debugsource_packages
-%undefine _debuginfo_subpackages
-
-# -*- rpm-spec -*-
-BuildRoot:      %_topdir/\@CPACK_PACKAGE_FILE_NAME\@
-Summary:        \@CPACK_RPM_PACKAGE_SUMMARY\@
-Name:           \@CPACK_RPM_PACKAGE_NAME\@
-Version:        \@CPACK_RPM_PACKAGE_VERSION\@
-Release:        \@CPACK_RPM_PACKAGE_RELEASE\@
-License:        \@CPACK_RPM_PACKAGE_LICENSE\@
-Group:          \@CPACK_RPM_PACKAGE_GROUP\@
-Vendor:         \@CPACK_RPM_PACKAGE_VENDOR\@
-
-\@TMP_RPM_SOURCE\@
-\@TMP_RPM_BUILD_REQUIRES\@
-\@TMP_RPM_BUILDARCH\@
-\@TMP_RPM_PREFIXES\@
-
-\@TMP_RPM_DISABLE_DEBUGINFO\@
-
-%define _rpmdir %_topdir/RPMS
-%define _srcrpmdir %_topdir/SRPMS
-\@FILE_NAME_DEFINE\@
-%define _unpackaged_files_terminate_build 0
-\@TMP_RPM_SPEC_INSTALL_POST\@
-\@CPACK_RPM_SPEC_MORE_DEFINE\@
-\@CPACK_RPM_COMPRESSION_TYPE_TMP\@
-
-%description
-\@CPACK_RPM_PACKAGE_DESCRIPTION\@
-
-# This is a shortcutted spec file generated by CMake RPM generator
-# we skip _install step because CPack does that for us.
-# We do only save CPack installed tree in _prepr
-# and then restore it in build.
-%prep
-\@TMP_RPM_PREP\@
-
-\@TMP_RPM_BUILD\@
-
-#p build
-
-%install
-\@TMP_RPM_INSTALL\@
-
-%clean
-
-%changelog
-\@CPACK_RPM_SPEC_CHANGELOG\@
-"
-    )
-
-  elseif(GENERATE_SPEC_PARTS) # binary rpm with single debuginfo package
-    file(WRITE ${CPACK_RPM_BINARY_SPECFILE}.in
-        "# -*- rpm-spec -*-
-%package -n \@CPACK_RPM_PACKAGE_NAME\@
-Summary:        \@CPACK_RPM_PACKAGE_SUMMARY\@
-Version:        \@CPACK_RPM_PACKAGE_VERSION\@
-Release:        \@CPACK_RPM_PACKAGE_RELEASE\@
-License:        \@CPACK_RPM_PACKAGE_LICENSE\@
-Group:          \@CPACK_RPM_PACKAGE_GROUP\@
-Vendor:         \@CPACK_RPM_PACKAGE_VENDOR\@
-
-\@TMP_RPM_URL\@
-\@TMP_RPM_REQUIRES\@
-\@TMP_RPM_REQUIRES_PRE\@
-\@TMP_RPM_REQUIRES_POST\@
-\@TMP_RPM_REQUIRES_PREUN\@
-\@TMP_RPM_REQUIRES_POSTUN\@
-\@TMP_RPM_PROVIDES\@
-\@TMP_RPM_OBSOLETES\@
-\@TMP_RPM_CONFLICTS\@
-\@TMP_RPM_SUGGESTS\@
-\@TMP_RPM_AUTOPROV\@
-\@TMP_RPM_AUTOREQ\@
-\@TMP_RPM_AUTOREQPROV\@
-\@TMP_RPM_BUILDARCH\@
-\@TMP_RPM_PREFIXES\@
-\@TMP_RPM_EPOCH\@
-
-%description -n \@CPACK_RPM_PACKAGE_NAME\@
-\@CPACK_RPM_PACKAGE_DESCRIPTION\@
-
-%files -n \@CPACK_RPM_PACKAGE_NAME\@
-%defattr(\@TMP_DEFAULT_FILE_PERMISSIONS\@,\@TMP_DEFAULT_USER\@,\@TMP_DEFAULT_GROUP\@,\@TMP_DEFAULT_DIR_PERMISSIONS\@)
-\@CPACK_RPM_INSTALL_FILES\@
-\@CPACK_RPM_ABSOLUTE_INSTALL_FILES\@
-\@CPACK_RPM_USER_INSTALL_FILES\@
-"
-    )
-
-  else()  # binary rpm
-    if(CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE)
-      # find generated spec file and take its name
-      file(GLOB spec_files_ "${CPACK_RPM_DIRECTORY}/SPECS/*.spec")
-
-      foreach(f_ IN LISTS spec_files_)
-        file(READ "${f_}" tmp_)
-        string(APPEND TMP_OTHER_COMPONENTS "\n${tmp_}\n")
-      endforeach()
-    endif()
-
-    # We should generate a USER spec file template:
-    #  - either because the user asked for it : CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE
-    #  - or the user did not provide one : NOT CPACK_RPM_USER_BINARY_SPECFILE
-    set(RPMBUILD_FLAGS "-bb")
-    if(CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE OR NOT CPACK_RPM_USER_BINARY_SPECFILE)
-
-      file(WRITE ${CPACK_RPM_BINARY_SPECFILE}.in
-        "# Restore old style debuginfo creation for rpm >= 4.14.
-%undefine _debugsource_packages
-%undefine _debuginfo_subpackages
-
-# -*- rpm-spec -*-
-BuildRoot:      %_topdir/\@CPACK_PACKAGE_FILE_NAME\@\@CPACK_RPM_PACKAGE_COMPONENT_PART_PATH\@
-Summary:        \@CPACK_RPM_PACKAGE_SUMMARY\@
-Name:           \@CPACK_RPM_PACKAGE_NAME\@
-Version:        \@CPACK_RPM_PACKAGE_VERSION\@
-Release:        \@CPACK_RPM_PACKAGE_RELEASE\@
-License:        \@CPACK_RPM_PACKAGE_LICENSE\@
-Group:          \@CPACK_RPM_PACKAGE_GROUP\@
-Vendor:         \@CPACK_RPM_PACKAGE_VENDOR\@
-
-\@TMP_RPM_URL\@
-\@TMP_RPM_REQUIRES\@
-\@TMP_RPM_REQUIRES_PRE\@
-\@TMP_RPM_REQUIRES_POST\@
-\@TMP_RPM_REQUIRES_PREUN\@
-\@TMP_RPM_REQUIRES_POSTUN\@
-\@TMP_RPM_PROVIDES\@
-\@TMP_RPM_OBSOLETES\@
-\@TMP_RPM_CONFLICTS\@
-\@TMP_RPM_SUGGESTS\@
-\@TMP_RPM_AUTOPROV\@
-\@TMP_RPM_AUTOREQ\@
-\@TMP_RPM_AUTOREQPROV\@
-\@TMP_RPM_BUILDARCH\@
-\@TMP_RPM_PREFIXES\@
-\@TMP_RPM_EPOCH\@
-
-\@TMP_RPM_DEBUGINFO\@
-
-%define _rpmdir %_topdir/RPMS
-%define _srcrpmdir %_topdir/SRPMS
-\@FILE_NAME_DEFINE\@
-%define _unpackaged_files_terminate_build 0
-\@TMP_RPM_SPEC_INSTALL_POST\@
-\@CPACK_RPM_SPEC_MORE_DEFINE\@
-\@CPACK_RPM_COMPRESSION_TYPE_TMP\@
-
-%description
-\@CPACK_RPM_PACKAGE_DESCRIPTION\@
-
-# This is a shortcutted spec file generated by CMake RPM generator
-# we skip _install step because CPack does that for us.
-# We do only save CPack installed tree in _prepr
-# and then restore it in build.
-%prep
-mv $RPM_BUILD_ROOT %_topdir/tmpBBroot
-
-%install
-if [ -e $RPM_BUILD_ROOT ];
-then
-  rm -rf $RPM_BUILD_ROOT
-fi
-mv %_topdir/tmpBBroot $RPM_BUILD_ROOT
-
-\@TMP_RPM_DEBUGINFO_INSTALL\@
-
-%clean
-
-%post
-\@RPM_SYMLINK_POSTINSTALL\@
-\@CPACK_RPM_SPEC_POSTINSTALL\@
-
-%posttrans
-\@CPACK_RPM_SPEC_POSTTRANS\@
-
-%postun
-\@CPACK_RPM_SPEC_POSTUNINSTALL\@
-
-%pre
-\@CPACK_RPM_SPEC_PREINSTALL\@
-
-%pretrans
-\@CPACK_RPM_SPEC_PRETRANS\@
-
-%preun
-\@CPACK_RPM_SPEC_PREUNINSTALL\@
-
-%files
-%defattr(\@TMP_DEFAULT_FILE_PERMISSIONS\@,\@TMP_DEFAULT_USER\@,\@TMP_DEFAULT_GROUP\@,\@TMP_DEFAULT_DIR_PERMISSIONS\@)
-\@CPACK_RPM_INSTALL_FILES\@
-\@CPACK_RPM_ABSOLUTE_INSTALL_FILES\@
-\@CPACK_RPM_USER_INSTALL_FILES\@
-
-%changelog
-\@CPACK_RPM_SPEC_CHANGELOG\@
-
-\@TMP_OTHER_COMPONENTS\@
-"
-      )
-    endif()
-
-    # Stop here if we were asked to only generate a template USER spec file
-    # The generated file may then be used as a template by user who wants
-    # to customize their own spec file.
-    if(CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE)
-      message(FATAL_ERROR "CPackRPM: STOP here Generated USER binary spec file template is: ${CPACK_RPM_BINARY_SPECFILE}.in")
-    endif()
-  endif()
-
-  # After that we may either use a user provided spec file
-  # or generate one using appropriate variables value.
-  if(CPACK_RPM_USER_BINARY_SPECFILE)
-    # User may have specified SPECFILE just use it
-    message("CPackRPM: Will use USER specified spec file: ${CPACK_RPM_USER_BINARY_SPECFILE}")
-    # The user provided file is processed for @var replacement
-    configure_file(${CPACK_RPM_USER_BINARY_SPECFILE} ${CPACK_RPM_BINARY_SPECFILE} @ONLY)
-  else()
-    # No User specified spec file, will use the generated spec file
-    message("CPackRPM: Will use GENERATED spec file: ${CPACK_RPM_BINARY_SPECFILE}")
-    # Note the just created file is processed for @var replacement
-    configure_file(${CPACK_RPM_BINARY_SPECFILE}.in ${CPACK_RPM_BINARY_SPECFILE} @ONLY)
-  endif()
-
-  if(NOT GENERATE_SPEC_PARTS) # generate package
-    if(RPMBUILD_EXECUTABLE)
-      # Now call rpmbuild using the SPECFILE
-      execute_process(
-        COMMAND "${RPMBUILD_EXECUTABLE}" ${RPMBUILD_FLAGS}
-                --define "_topdir ${CPACK_RPM_DIRECTORY}"
-                --buildroot "%_topdir/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}"
-                --target "${CPACK_RPM_PACKAGE_ARCHITECTURE}"
-                "${CPACK_RPM_BINARY_SPECFILE}"
-        WORKING_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}"
-        RESULT_VARIABLE CPACK_RPMBUILD_EXEC_RESULT
-        ERROR_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.err"
-        OUTPUT_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.out")
-      if(CPACK_RPM_PACKAGE_DEBUG OR CPACK_RPMBUILD_EXEC_RESULT)
-        file(READ ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.err RPMBUILDERR)
-        file(READ ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.out RPMBUILDOUT)
-        message("CPackRPM:Debug: You may consult rpmbuild logs in: ")
-        message("CPackRPM:Debug:    - ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.err")
-        message("CPackRPM:Debug: *** ${RPMBUILDERR} ***")
-        message("CPackRPM:Debug:    - ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.out")
-        message("CPackRPM:Debug: *** ${RPMBUILDOUT} ***")
-      endif()
-    else()
-      if(ALIEN_EXECUTABLE)
-        message(FATAL_ERROR "RPM packaging through alien not done (yet)")
-      endif()
-    endif()
-
-    # find generated rpm files and take their names
-    file(GLOB_RECURSE GENERATED_FILES "${CPACK_RPM_DIRECTORY}/RPMS/*.rpm"
-      "${CPACK_RPM_DIRECTORY}/SRPMS/*.rpm")
-
-    if(NOT GENERATED_FILES)
-      message(FATAL_ERROR "RPM package was not generated! ${CPACK_RPM_DIRECTORY}")
-    endif()
-
-    unset(expected_filenames_)
-    unset(filenames_)
-    if(CPACK_RPM_DEBUGINFO_PACKAGE AND NOT CPACK_RPM_FILE_NAME STREQUAL "RPM-DEFAULT")
-      list(APPEND expected_filenames_
-        "${CPACK_RPM_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}.*\\.rpm")
-      list(APPEND filenames_ "${CPACK_RPM_FILE_NAME}")
-    endif()
-
-    if(CPACK_RPM_DEBUGINFO_PACKAGE)
-      cpack_rpm_variable_fallback("CPACK_RPM_DEBUGINFO_FILE_NAME"
-        "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_DEBUGINFO_FILE_NAME"
-        "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEBUGINFO_FILE_NAME"
-        "CPACK_RPM_DEBUGINFO_FILE_NAME")
-
-      if(CPACK_RPM_DEBUGINFO_FILE_NAME AND
-        NOT CPACK_RPM_DEBUGINFO_FILE_NAME STREQUAL "RPM-DEFAULT")
-        list(APPEND expected_filenames_
-          "${CPACK_RPM_PACKAGE_NAME}-debuginfo-${CPACK_PACKAGE_VERSION}.*\\.rpm")
-        string(REPLACE "@cpack_component@" "${CPACK_RPM_PACKAGE_COMPONENT}"
-          CPACK_RPM_DEBUGINFO_FILE_NAME "${CPACK_RPM_DEBUGINFO_FILE_NAME}")
-        list(APPEND filenames_ "${CPACK_RPM_DEBUGINFO_FILE_NAME}")
-      endif()
-    endif()
-
-    # check if other files have to be renamed
-    file(GLOB rename_files_ "${CPACK_RPM_DIRECTORY}/SPECS/*.rpm_name")
-    if(rename_files_)
-      foreach(f_ IN LISTS rename_files_)
-        file(READ "${f_}" tmp_)
-        list(GET tmp_ 0 efn_)
-        list(APPEND expected_filenames_ "${efn_}")
-        list(GET tmp_ 1 fn_)
-        list(APPEND filenames_ "${fn_}")
-      endforeach()
-    endif()
-
-    if(expected_filenames_)
-      foreach(F IN LISTS GENERATED_FILES)
-        unset(matched_)
-        foreach(expected_ IN LISTS expected_filenames_)
-          if(F MATCHES ".*/${expected_}")
-            list(FIND expected_filenames_ "${expected_}" idx_)
-            list(GET filenames_ ${idx_} filename_)
-            get_filename_component(FILE_PATH "${F}" DIRECTORY)
-            file(RENAME "${F}" "${FILE_PATH}/${filename_}")
-            list(APPEND new_files_list_ "${FILE_PATH}/${filename_}")
-            set(matched_ "YES")
-
-            break()
-          endif()
-        endforeach()
-
-        if(NOT matched_)
-          list(APPEND new_files_list_ "${F}")
-        endif()
-      endforeach()
-
-      set(GENERATED_FILES "${new_files_list_}")
-    endif()
-  endif()
-
-  set(GEN_CPACK_OUTPUT_FILES "${GENERATED_FILES}" PARENT_SCOPE)
-
-  if(CPACK_RPM_PACKAGE_DEBUG)
-     message("CPackRPM:Debug: GEN_CPACK_OUTPUT_FILES = ${GENERATED_FILES}")
-  endif()
-endfunction()
-
-cpack_rpm_generate_package()
-
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/Internal/CPack/NSIS.template.in b/share/cmake-3.18/Modules/Internal/CPack/NSIS.template.in
deleted file mode 100644
index 6009ce0..0000000
--- a/share/cmake-3.18/Modules/Internal/CPack/NSIS.template.in
+++ /dev/null
@@ -1,979 +0,0 @@
-; CPack install script designed for a nmake build
-
-;--------------------------------
-; You must define these values
-
-  !define VERSION "@CPACK_PACKAGE_VERSION@"
-  !define PATCH  "@CPACK_PACKAGE_VERSION_PATCH@"
-  !define INST_DIR "@CPACK_TEMPORARY_DIRECTORY@"
-
-;--------------------------------
-;Variables
-
-  Var MUI_TEMP
-  Var STARTMENU_FOLDER
-  Var SV_ALLUSERS
-  Var START_MENU
-  Var DO_NOT_ADD_TO_PATH
-  Var ADD_TO_PATH_ALL_USERS
-  Var ADD_TO_PATH_CURRENT_USER
-  Var INSTALL_DESKTOP
-  Var IS_DEFAULT_INSTALLDIR
-;--------------------------------
-;Include Modern UI
-
-  !include "MUI.nsh"
-
-  ;Default installation folder
-  InstallDir "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
-
-;--------------------------------
-;General
-
-  ;Name and file
-  Name "@CPACK_NSIS_PACKAGE_NAME@"
-  OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@"
-
-  ;Set compression
-  SetCompressor @CPACK_NSIS_COMPRESSOR@
-
-  ;Require administrator access
-  RequestExecutionLevel admin
-
-@CPACK_NSIS_DEFINES@
-@CPACK_NSIS_MANIFEST_DPI_AWARE_CODE@
-
-  !include Sections.nsh
-
-;--- Component support macros: ---
-; The code for the add/remove functionality is from:
-;   http://nsis.sourceforge.net/Add/Remove_Functionality
-; It has been modified slightly and extended to provide
-; inter-component dependencies.
-Var AR_SecFlags
-Var AR_RegFlags
-@CPACK_NSIS_SECTION_SELECTED_VARS@
-
-; Loads the "selected" flag for the section named SecName into the
-; variable VarName.
-!macro LoadSectionSelectedIntoVar SecName VarName
- SectionGetFlags ${${SecName}} $${VarName}
- IntOp $${VarName} $${VarName} & ${SF_SELECTED}  ;Turn off all other bits
-!macroend
-
-; Loads the value of a variable... can we get around this?
-!macro LoadVar VarName
-  IntOp $R0 0 + $${VarName}
-!macroend
-
-; Sets the value of a variable
-!macro StoreVar VarName IntValue
-  IntOp $${VarName} 0 + ${IntValue}
-!macroend
-
-!macro InitSection SecName
-  ;  This macro reads component installed flag from the registry and
-  ;changes checked state of the section on the components page.
-  ;Input: section index constant name specified in Section command.
-
-  ClearErrors
-  ;Reading component status from registry
-  ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" "Installed"
-  IfErrors "default_${SecName}"
-    ;Status will stay default if registry value not found
-    ;(component was never installed)
-  IntOp $AR_RegFlags $AR_RegFlags & ${SF_SELECTED} ;Turn off all other bits
-  SectionGetFlags ${${SecName}} $AR_SecFlags  ;Reading default section flags
-  IntOp $AR_SecFlags $AR_SecFlags & 0xFFFE  ;Turn lowest (enabled) bit off
-  IntOp $AR_SecFlags $AR_RegFlags | $AR_SecFlags      ;Change lowest bit
-
-  ; Note whether this component was installed before
-  !insertmacro StoreVar ${SecName}_was_installed $AR_RegFlags
-  IntOp $R0 $AR_RegFlags & $AR_RegFlags
-
-  ;Writing modified flags
-  SectionSetFlags ${${SecName}} $AR_SecFlags
-
- "default_${SecName}:"
- !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected
-!macroend
-
-!macro FinishSection SecName
-  ;  This macro reads section flag set by user and removes the section
-  ;if it is not selected.
-  ;Then it writes component installed flag to registry
-  ;Input: section index constant name specified in Section command.
-
-  SectionGetFlags ${${SecName}} $AR_SecFlags  ;Reading section flags
-  ;Checking lowest bit:
-  IntOp $AR_SecFlags $AR_SecFlags & ${SF_SELECTED}
-  IntCmp $AR_SecFlags 1 "leave_${SecName}"
-    ;Section is not selected:
-    ;Calling Section uninstall macro and writing zero installed flag
-    !insertmacro "Remove_${${SecName}}"
-    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \
-  "Installed" 0
-    Goto "exit_${SecName}"
-
- "leave_${SecName}:"
-    ;Section is selected:
-    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \
-  "Installed" 1
-
- "exit_${SecName}:"
-!macroend
-
-!macro RemoveSection_CPack SecName
-  ;  This macro is used to call section's Remove_... macro
-  ;from the uninstaller.
-  ;Input: section index constant name specified in Section command.
-
-  !insertmacro "Remove_${${SecName}}"
-!macroend
-
-; Determine whether the selection of SecName changed
-!macro MaybeSelectionChanged SecName
-  !insertmacro LoadVar ${SecName}_selected
-  SectionGetFlags ${${SecName}} $R1
-  IntOp $R1 $R1 & ${SF_SELECTED} ;Turn off all other bits
-
-  ; See if the status has changed:
-  IntCmp $R0 $R1 "${SecName}_unchanged"
-  !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected
-
-  IntCmp $R1 ${SF_SELECTED} "${SecName}_was_selected"
-  !insertmacro "Deselect_required_by_${SecName}"
-  goto "${SecName}_unchanged"
-
-  "${SecName}_was_selected:"
-  !insertmacro "Select_${SecName}_depends"
-
-  "${SecName}_unchanged:"
-!macroend
-;--- End of Add/Remove macros ---
-
-;--------------------------------
-;Interface Settings
-
-  !define MUI_HEADERIMAGE
-  !define MUI_ABORTWARNING
-
-;----------------------------------------
-; based upon a script of "Written by KiCHiK 2003-01-18 05:57:02"
-;----------------------------------------
-!verbose 3
-!include "WinMessages.NSH"
-!verbose 4
-;====================================================
-; get_NT_environment
-;     Returns: the selected environment
-;     Output : head of the stack
-;====================================================
-!macro select_NT_profile UN
-Function ${UN}select_NT_profile
-   StrCmp $ADD_TO_PATH_ALL_USERS "1" 0 environment_single
-      DetailPrint "Selected environment for all users"
-      Push "all"
-      Return
-   environment_single:
-      DetailPrint "Selected environment for current user only."
-      Push "current"
-      Return
-FunctionEnd
-!macroend
-!insertmacro select_NT_profile ""
-!insertmacro select_NT_profile "un."
-;----------------------------------------------------
-!define NT_current_env 'HKCU "Environment"'
-!define NT_all_env     'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
-
-!ifndef WriteEnvStr_RegKey
-  !ifdef ALL_USERS
-    !define WriteEnvStr_RegKey \
-       'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
-  !else
-    !define WriteEnvStr_RegKey 'HKCU "Environment"'
-  !endif
-!endif
-
-; AddToPath - Adds the given dir to the search path.
-;        Input - head of the stack
-;        Note - Win9x systems requires reboot
-
-Function AddToPath
-  Exch $0
-  Push $1
-  Push $2
-  Push $3
-
-  # don't add if the path doesn't exist
-  IfFileExists "$0\*.*" "" AddToPath_done
-
-  ReadEnvStr $1 PATH
-  ; if the path is too long for a NSIS variable NSIS will return a 0
-  ; length string.  If we find that, then warn and skip any path
-  ; modification as it will trash the existing path.
-  StrLen $2 $1
-  IntCmp $2 0 CheckPathLength_ShowPathWarning CheckPathLength_Done CheckPathLength_Done
-    CheckPathLength_ShowPathWarning:
-    Messagebox MB_OK|MB_ICONEXCLAMATION "Warning! PATH too long installer unable to modify PATH!"
-    Goto AddToPath_done
-  CheckPathLength_Done:
-  Push "$1;"
-  Push "$0;"
-  Call StrStr
-  Pop $2
-  StrCmp $2 "" "" AddToPath_done
-  Push "$1;"
-  Push "$0\;"
-  Call StrStr
-  Pop $2
-  StrCmp $2 "" "" AddToPath_done
-  GetFullPathName /SHORT $3 $0
-  Push "$1;"
-  Push "$3;"
-  Call StrStr
-  Pop $2
-  StrCmp $2 "" "" AddToPath_done
-  Push "$1;"
-  Push "$3\;"
-  Call StrStr
-  Pop $2
-  StrCmp $2 "" "" AddToPath_done
-
-  Call IsNT
-  Pop $1
-  StrCmp $1 1 AddToPath_NT
-    ; Not on NT
-    StrCpy $1 $WINDIR 2
-    FileOpen $1 "$1\autoexec.bat" a
-    FileSeek $1 -1 END
-    FileReadByte $1 $2
-    IntCmp $2 26 0 +2 +2 # DOS EOF
-      FileSeek $1 -1 END # write over EOF
-    FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n"
-    FileClose $1
-    SetRebootFlag true
-    Goto AddToPath_done
-
-  AddToPath_NT:
-    StrCmp $ADD_TO_PATH_ALL_USERS "1" ReadAllKey
-      ReadRegStr $1 ${NT_current_env} "PATH"
-      Goto DoTrim
-    ReadAllKey:
-      ReadRegStr $1 ${NT_all_env} "PATH"
-    DoTrim:
-    StrCmp $1 "" AddToPath_NTdoIt
-      Push $1
-      Call Trim
-      Pop $1
-      StrCpy $0 "$1;$0"
-    AddToPath_NTdoIt:
-      StrCmp $ADD_TO_PATH_ALL_USERS "1" WriteAllKey
-        WriteRegExpandStr ${NT_current_env} "PATH" $0
-        Goto DoSend
-      WriteAllKey:
-        WriteRegExpandStr ${NT_all_env} "PATH" $0
-      DoSend:
-      SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
-
-  AddToPath_done:
-    Pop $3
-    Pop $2
-    Pop $1
-    Pop $0
-FunctionEnd
-
-
-; RemoveFromPath - Remove a given dir from the path
-;     Input: head of the stack
-
-Function un.RemoveFromPath
-  Exch $0
-  Push $1
-  Push $2
-  Push $3
-  Push $4
-  Push $5
-  Push $6
-
-  IntFmt $6 "%c" 26 # DOS EOF
-
-  Call un.IsNT
-  Pop $1
-  StrCmp $1 1 unRemoveFromPath_NT
-    ; Not on NT
-    StrCpy $1 $WINDIR 2
-    FileOpen $1 "$1\autoexec.bat" r
-    GetTempFileName $4
-    FileOpen $2 $4 w
-    GetFullPathName /SHORT $0 $0
-    StrCpy $0 "SET PATH=%PATH%;$0"
-    Goto unRemoveFromPath_dosLoop
-
-    unRemoveFromPath_dosLoop:
-      FileRead $1 $3
-      StrCpy $5 $3 1 -1 # read last char
-      StrCmp $5 $6 0 +2 # if DOS EOF
-        StrCpy $3 $3 -1 # remove DOS EOF so we can compare
-      StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoopRemoveLine
-      StrCmp $3 "$0$\n" unRemoveFromPath_dosLoopRemoveLine
-      StrCmp $3 "$0" unRemoveFromPath_dosLoopRemoveLine
-      StrCmp $3 "" unRemoveFromPath_dosLoopEnd
-      FileWrite $2 $3
-      Goto unRemoveFromPath_dosLoop
-      unRemoveFromPath_dosLoopRemoveLine:
-        SetRebootFlag true
-        Goto unRemoveFromPath_dosLoop
-
-    unRemoveFromPath_dosLoopEnd:
-      FileClose $2
-      FileClose $1
-      StrCpy $1 $WINDIR 2
-      Delete "$1\autoexec.bat"
-      CopyFiles /SILENT $4 "$1\autoexec.bat"
-      Delete $4
-      Goto unRemoveFromPath_done
-
-  unRemoveFromPath_NT:
-    StrCmp $ADD_TO_PATH_ALL_USERS "1" unReadAllKey
-      ReadRegStr $1 ${NT_current_env} "PATH"
-      Goto unDoTrim
-    unReadAllKey:
-      ReadRegStr $1 ${NT_all_env} "PATH"
-    unDoTrim:
-    StrCpy $5 $1 1 -1 # copy last char
-    StrCmp $5 ";" +2 # if last char != ;
-      StrCpy $1 "$1;" # append ;
-    Push $1
-    Push "$0;"
-    Call un.StrStr ; Find `$0;` in $1
-    Pop $2 ; pos of our dir
-    StrCmp $2 "" unRemoveFromPath_done
-      ; else, it is in path
-      # $0 - path to add
-      # $1 - path var
-      StrLen $3 "$0;"
-      StrLen $4 $2
-      StrCpy $5 $1 -$4 # $5 is now the part before the path to remove
-      StrCpy $6 $2 "" $3 # $6 is now the part after the path to remove
-      StrCpy $3 $5$6
-
-      StrCpy $5 $3 1 -1 # copy last char
-      StrCmp $5 ";" 0 +2 # if last char == ;
-        StrCpy $3 $3 -1 # remove last char
-
-      StrCmp $ADD_TO_PATH_ALL_USERS "1" unWriteAllKey
-        WriteRegExpandStr ${NT_current_env} "PATH" $3
-        Goto unDoSend
-      unWriteAllKey:
-        WriteRegExpandStr ${NT_all_env} "PATH" $3
-      unDoSend:
-      SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
-
-  unRemoveFromPath_done:
-    Pop $6
-    Pop $5
-    Pop $4
-    Pop $3
-    Pop $2
-    Pop $1
-    Pop $0
-FunctionEnd
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Uninstall sutff
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-###########################################
-#            Utility Functions            #
-###########################################
-
-;====================================================
-; IsNT - Returns 1 if the current system is NT, 0
-;        otherwise.
-;     Output: head of the stack
-;====================================================
-; IsNT
-; no input
-; output, top of the stack = 1 if NT or 0 if not
-;
-; Usage:
-;   Call IsNT
-;   Pop $R0
-;  ($R0 at this point is 1 or 0)
-
-!macro IsNT un
-Function ${un}IsNT
-  Push $0
-  ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
-  StrCmp $0 "" 0 IsNT_yes
-  ; we are not NT.
-  Pop $0
-  Push 0
-  Return
-
-  IsNT_yes:
-    ; NT!!!
-    Pop $0
-    Push 1
-FunctionEnd
-!macroend
-!insertmacro IsNT ""
-!insertmacro IsNT "un."
-
-; StrStr
-; input, top of stack = string to search for
-;        top of stack-1 = string to search in
-; output, top of stack (replaces with the portion of the string remaining)
-; modifies no other variables.
-;
-; Usage:
-;   Push "this is a long ass string"
-;   Push "ass"
-;   Call StrStr
-;   Pop $R0
-;  ($R0 at this point is "ass string")
-
-!macro StrStr un
-Function ${un}StrStr
-Exch $R1 ; st=haystack,old$R1, $R1=needle
-  Exch    ; st=old$R1,haystack
-  Exch $R2 ; st=old$R1,old$R2, $R2=haystack
-  Push $R3
-  Push $R4
-  Push $R5
-  StrLen $R3 $R1
-  StrCpy $R4 0
-  ; $R1=needle
-  ; $R2=haystack
-  ; $R3=len(needle)
-  ; $R4=cnt
-  ; $R5=tmp
-  loop:
-    StrCpy $R5 $R2 $R3 $R4
-    StrCmp $R5 $R1 done
-    StrCmp $R5 "" done
-    IntOp $R4 $R4 + 1
-    Goto loop
-done:
-  StrCpy $R1 $R2 "" $R4
-  Pop $R5
-  Pop $R4
-  Pop $R3
-  Pop $R2
-  Exch $R1
-FunctionEnd
-!macroend
-!insertmacro StrStr ""
-!insertmacro StrStr "un."
-
-Function Trim ; Added by Pelaca
-	Exch $R1
-	Push $R2
-Loop:
-	StrCpy $R2 "$R1" 1 -1
-	StrCmp "$R2" " " RTrim
-	StrCmp "$R2" "$\n" RTrim
-	StrCmp "$R2" "$\r" RTrim
-	StrCmp "$R2" ";" RTrim
-	GoTo Done
-RTrim:
-	StrCpy $R1 "$R1" -1
-	Goto Loop
-Done:
-	Pop $R2
-	Exch $R1
-FunctionEnd
-
-Function ConditionalAddToRegisty
-  Pop $0
-  Pop $1
-  StrCmp "$0" "" ConditionalAddToRegisty_EmptyString
-    WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" \
-    "$1" "$0"
-    ;MessageBox MB_OK "Set Registry: '$1' to '$0'"
-    DetailPrint "Set install registry entry: '$1' to '$0'"
-  ConditionalAddToRegisty_EmptyString:
-FunctionEnd
-
-;--------------------------------
-
-!ifdef CPACK_USES_DOWNLOAD
-Function DownloadFile
-    IfFileExists $INSTDIR\* +2
-    CreateDirectory $INSTDIR
-    Pop $0
-
-    ; Skip if already downloaded
-    IfFileExists $INSTDIR\$0 0 +2
-    Return
-
-    StrCpy $1 "@CPACK_DOWNLOAD_SITE@"
-
-  try_again:
-    NSISdl::download "$1/$0" "$INSTDIR\$0"
-
-    Pop $1
-    StrCmp $1 "success" success
-    StrCmp $1 "Cancelled" cancel
-    MessageBox MB_OK "Download failed: $1"
-  cancel:
-    Return
-  success:
-FunctionEnd
-!endif
-
-;--------------------------------
-; Define some macro setting for the gui
-@CPACK_NSIS_INSTALLER_MUI_ICON_CODE@
-@CPACK_NSIS_INSTALLER_ICON_CODE@
-@CPACK_NSIS_INSTALLER_MUI_WELCOMEFINISH_CODE@
-@CPACK_NSIS_INSTALLER_MUI_UNWELCOMEFINISH_CODE@
-@CPACK_NSIS_INSTALLER_MUI_COMPONENTS_DESC@
-@CPACK_NSIS_INSTALLER_MUI_FINISHPAGE_RUN_CODE@
-
-;--------------------------------
-;Pages
-  @CPACK_NSIS_INSTALLER_WELCOME_TITLE_CODE@
-  @CPACK_NSIS_INSTALLER_WELCOME_TITLE_3LINES_CODE@
-  !insertmacro MUI_PAGE_WELCOME
-
-  !insertmacro MUI_PAGE_LICENSE "@CPACK_RESOURCE_FILE_LICENSE@"
-  Page custom InstallOptionsPage
-  !insertmacro MUI_PAGE_DIRECTORY
-
-  ;Start Menu Folder Page Configuration
-  !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX"
-  !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
-  !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
-  !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
-
-  @CPACK_NSIS_PAGE_COMPONENTS@
-
-  !insertmacro MUI_PAGE_INSTFILES
-  @CPACK_NSIS_INSTALLER_FINISH_TITLE_CODE@
-  @CPACK_NSIS_INSTALLER_FINISH_TITLE_3LINES_CODE@
-  !insertmacro MUI_PAGE_FINISH
-
-  !insertmacro MUI_UNPAGE_CONFIRM
-  !insertmacro MUI_UNPAGE_INSTFILES
-
-;--------------------------------
-;Languages
-
-  !insertmacro MUI_LANGUAGE "English" ;first language is the default language
-  !insertmacro MUI_LANGUAGE "Albanian"
-  !insertmacro MUI_LANGUAGE "Arabic"
-  !insertmacro MUI_LANGUAGE "Basque"
-  !insertmacro MUI_LANGUAGE "Belarusian"
-  !insertmacro MUI_LANGUAGE "Bosnian"
-  !insertmacro MUI_LANGUAGE "Breton"
-  !insertmacro MUI_LANGUAGE "Bulgarian"
-  !insertmacro MUI_LANGUAGE "Croatian"
-  !insertmacro MUI_LANGUAGE "Czech"
-  !insertmacro MUI_LANGUAGE "Danish"
-  !insertmacro MUI_LANGUAGE "Dutch"
-  !insertmacro MUI_LANGUAGE "Estonian"
-  !insertmacro MUI_LANGUAGE "Farsi"
-  !insertmacro MUI_LANGUAGE "Finnish"
-  !insertmacro MUI_LANGUAGE "French"
-  !insertmacro MUI_LANGUAGE "German"
-  !insertmacro MUI_LANGUAGE "Greek"
-  !insertmacro MUI_LANGUAGE "Hebrew"
-  !insertmacro MUI_LANGUAGE "Hungarian"
-  !insertmacro MUI_LANGUAGE "Icelandic"
-  !insertmacro MUI_LANGUAGE "Indonesian"
-  !insertmacro MUI_LANGUAGE "Irish"
-  !insertmacro MUI_LANGUAGE "Italian"
-  !insertmacro MUI_LANGUAGE "Japanese"
-  !insertmacro MUI_LANGUAGE "Korean"
-  !insertmacro MUI_LANGUAGE "Kurdish"
-  !insertmacro MUI_LANGUAGE "Latvian"
-  !insertmacro MUI_LANGUAGE "Lithuanian"
-  !insertmacro MUI_LANGUAGE "Luxembourgish"
-  !insertmacro MUI_LANGUAGE "Macedonian"
-  !insertmacro MUI_LANGUAGE "Malay"
-  !insertmacro MUI_LANGUAGE "Mongolian"
-  !insertmacro MUI_LANGUAGE "Norwegian"
-  !insertmacro MUI_LANGUAGE "Polish"
-  !insertmacro MUI_LANGUAGE "Portuguese"
-  !insertmacro MUI_LANGUAGE "PortugueseBR"
-  !insertmacro MUI_LANGUAGE "Romanian"
-  !insertmacro MUI_LANGUAGE "Russian"
-  !insertmacro MUI_LANGUAGE "Serbian"
-  !insertmacro MUI_LANGUAGE "SerbianLatin"
-  !insertmacro MUI_LANGUAGE "SimpChinese"
-  !insertmacro MUI_LANGUAGE "Slovak"
-  !insertmacro MUI_LANGUAGE "Slovenian"
-  !insertmacro MUI_LANGUAGE "Spanish"
-  !insertmacro MUI_LANGUAGE "Swedish"
-  !insertmacro MUI_LANGUAGE "Thai"
-  !insertmacro MUI_LANGUAGE "TradChinese"
-  !insertmacro MUI_LANGUAGE "Turkish"
-  !insertmacro MUI_LANGUAGE "Ukrainian"
-  !insertmacro MUI_LANGUAGE "Welsh"
-
-;--------------------------------
-;Reserve Files
-
-  ;These files should be inserted before other files in the data block
-  ;Keep these lines before any File command
-  ;Only for solid compression (by default, solid compression is enabled for BZIP2 and LZMA)
-
-  ReserveFile "NSIS.InstallOptions.ini"
-  !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
-
-  ; for UserInfo::GetName and UserInfo::GetAccountType
-  ReserveFile /plugin 'UserInfo.dll'
-
-;--------------------------------
-; Installation types
-@CPACK_NSIS_INSTALLATION_TYPES@
-
-;--------------------------------
-; Component sections
-@CPACK_NSIS_COMPONENT_SECTIONS@
-
-;--------------------------------
-;Installer Sections
-
-Section "-Core installation"
-  ;Use the entire tree produced by the INSTALL target.  Keep the
-  ;list of directories here in sync with the RMDir commands below.
-  SetOutPath "$INSTDIR"
-  @CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS@
-  @CPACK_NSIS_FULL_INSTALL@
-
-  ;Store installation folder
-  WriteRegStr SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "" $INSTDIR
-
-  ;Create uninstaller
-  WriteUninstaller "$INSTDIR\@CPACK_NSIS_UNINSTALL_NAME@.exe"
-  Push "DisplayName"
-  Push "@CPACK_NSIS_DISPLAY_NAME@"
-  Call ConditionalAddToRegisty
-  Push "DisplayVersion"
-  Push "@CPACK_PACKAGE_VERSION@"
-  Call ConditionalAddToRegisty
-  Push "Publisher"
-  Push "@CPACK_PACKAGE_VENDOR@"
-  Call ConditionalAddToRegisty
-  Push "UninstallString"
-  Push "$INSTDIR\@CPACK_NSIS_UNINSTALL_NAME@.exe"
-  Call ConditionalAddToRegisty
-  Push "NoRepair"
-  Push "1"
-  Call ConditionalAddToRegisty
-
-  !ifdef CPACK_NSIS_ADD_REMOVE
-  ;Create add/remove functionality
-  Push "ModifyPath"
-  Push "$INSTDIR\AddRemove.exe"
-  Call ConditionalAddToRegisty
-  !else
-  Push "NoModify"
-  Push "1"
-  Call ConditionalAddToRegisty
-  !endif
-
-  ; Optional registration
-  Push "DisplayIcon"
-  Push "$INSTDIR\@CPACK_NSIS_INSTALLED_ICON_NAME@"
-  Call ConditionalAddToRegisty
-  Push "HelpLink"
-  Push "@CPACK_NSIS_HELP_LINK@"
-  Call ConditionalAddToRegisty
-  Push "URLInfoAbout"
-  Push "@CPACK_NSIS_URL_INFO_ABOUT@"
-  Call ConditionalAddToRegisty
-  Push "Contact"
-  Push "@CPACK_NSIS_CONTACT@"
-  Call ConditionalAddToRegisty
-  !insertmacro MUI_INSTALLOPTIONS_READ $INSTALL_DESKTOP "NSIS.InstallOptions.ini" "Field 5" "State"
-  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
-
-  ;Create shortcuts
-  CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
-@CPACK_NSIS_CREATE_ICONS@
-@CPACK_NSIS_CREATE_ICONS_EXTRA@
-  CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\@CPACK_NSIS_UNINSTALL_NAME@.exe"
-
-  ;Read a value from an InstallOptions INI file
-  !insertmacro MUI_INSTALLOPTIONS_READ $DO_NOT_ADD_TO_PATH "NSIS.InstallOptions.ini" "Field 2" "State"
-  !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_ALL_USERS "NSIS.InstallOptions.ini" "Field 3" "State"
-  !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_CURRENT_USER "NSIS.InstallOptions.ini" "Field 4" "State"
-
-  ; Write special uninstall registry entries
-  Push "StartMenu"
-  Push "$STARTMENU_FOLDER"
-  Call ConditionalAddToRegisty
-  Push "DoNotAddToPath"
-  Push "$DO_NOT_ADD_TO_PATH"
-  Call ConditionalAddToRegisty
-  Push "AddToPathAllUsers"
-  Push "$ADD_TO_PATH_ALL_USERS"
-  Call ConditionalAddToRegisty
-  Push "AddToPathCurrentUser"
-  Push "$ADD_TO_PATH_CURRENT_USER"
-  Call ConditionalAddToRegisty
-  Push "InstallToDesktop"
-  Push "$INSTALL_DESKTOP"
-  Call ConditionalAddToRegisty
-
-  !insertmacro MUI_STARTMENU_WRITE_END
-
-@CPACK_NSIS_EXTRA_INSTALL_COMMANDS@
-
-SectionEnd
-
-Section "-Add to path"
-  Push $INSTDIR\bin
-  StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 doNotAddToPath
-  StrCmp $DO_NOT_ADD_TO_PATH "1" doNotAddToPath 0
-    Call AddToPath
-  doNotAddToPath:
-SectionEnd
-
-;--------------------------------
-; Create custom pages
-Function InstallOptionsPage
-  !insertmacro MUI_HEADER_TEXT "Install Options" "Choose options for installing @CPACK_NSIS_PACKAGE_NAME@"
-  !insertmacro MUI_INSTALLOPTIONS_DISPLAY "NSIS.InstallOptions.ini"
-
-FunctionEnd
-
-;--------------------------------
-; determine admin versus local install
-Function un.onInit
-
-  ClearErrors
-  UserInfo::GetName
-  IfErrors noLM
-  Pop $0
-  UserInfo::GetAccountType
-  Pop $1
-  StrCmp $1 "Admin" 0 +3
-    SetShellVarContext all
-    ;MessageBox MB_OK 'User "$0" is in the Admin group'
-    Goto done
-  StrCmp $1 "Power" 0 +3
-    SetShellVarContext all
-    ;MessageBox MB_OK 'User "$0" is in the Power Users group'
-    Goto done
-
-  noLM:
-    ;Get installation folder from registry if available
-
-  done:
-
-FunctionEnd
-
-;--- Add/Remove callback functions: ---
-!macro SectionList MacroName
-  ;This macro used to perform operation on multiple sections.
-  ;List all of your components in following manner here.
-@CPACK_NSIS_COMPONENT_SECTION_LIST@
-!macroend
-
-Section -FinishComponents
-  ;Removes unselected components and writes component status to registry
-  !insertmacro SectionList "FinishSection"
-
-!ifdef CPACK_NSIS_ADD_REMOVE
-  ; Get the name of the installer executable
-  System::Call 'kernel32::GetModuleFileNameA(i 0, t .R0, i 1024) i r1'
-  StrCpy $R3 $R0
-
-  ; Strip off the last 13 characters, to see if we have AddRemove.exe
-  StrLen $R1 $R0
-  IntOp $R1 $R0 - 13
-  StrCpy $R2 $R0 13 $R1
-  StrCmp $R2 "AddRemove.exe" addremove_installed
-
-  ; We're not running AddRemove.exe, so install it
-  CopyFiles $R3 $INSTDIR\AddRemove.exe
-
-  addremove_installed:
-!endif
-SectionEnd
-;--- End of Add/Remove callback functions ---
-
-;--------------------------------
-; Component dependencies
-Function .onSelChange
-  !insertmacro SectionList MaybeSelectionChanged
-FunctionEnd
-
-;--------------------------------
-;Uninstaller Section
-
-Section "Uninstall"
-  ReadRegStr $START_MENU SHCTX \
-   "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "StartMenu"
-  ;MessageBox MB_OK "Start menu is in: $START_MENU"
-  ReadRegStr $DO_NOT_ADD_TO_PATH SHCTX \
-    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "DoNotAddToPath"
-  ReadRegStr $ADD_TO_PATH_ALL_USERS SHCTX \
-    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathAllUsers"
-  ReadRegStr $ADD_TO_PATH_CURRENT_USER SHCTX \
-    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathCurrentUser"
-  ;MessageBox MB_OK "Add to path: $DO_NOT_ADD_TO_PATH all users: $ADD_TO_PATH_ALL_USERS"
-  ReadRegStr $INSTALL_DESKTOP SHCTX \
-    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "InstallToDesktop"
-  ;MessageBox MB_OK "Install to desktop: $INSTALL_DESKTOP "
-
-@CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS@
-
-  ;Remove files we installed.
-  ;Keep the list of directories here in sync with the File commands above.
-@CPACK_NSIS_DELETE_FILES@
-@CPACK_NSIS_DELETE_DIRECTORIES@
-
-!ifdef CPACK_NSIS_ADD_REMOVE
-  ;Remove the add/remove program
-  Delete "$INSTDIR\AddRemove.exe"
-!endif
-
-  ;Remove the uninstaller itself.
-  Delete "$INSTDIR\@CPACK_NSIS_UNINSTALL_NAME@.exe"
-  DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
-
-  ;Remove the installation directory if it is empty.
-  RMDir "$INSTDIR"
-
-  ; Remove the registry entries.
-  DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
-
-  ; Removes all optional components
-  !insertmacro SectionList "RemoveSection_CPack"
-
-  !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
-
-  Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
-@CPACK_NSIS_DELETE_ICONS@
-@CPACK_NSIS_DELETE_ICONS_EXTRA@
-
-  ;Delete empty start menu parent directories
-  StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
-
-  startMenuDeleteLoop:
-    ClearErrors
-    RMDir $MUI_TEMP
-    GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
-
-    IfErrors startMenuDeleteLoopDone
-
-    StrCmp "$MUI_TEMP" "$SMPROGRAMS" startMenuDeleteLoopDone startMenuDeleteLoop
-  startMenuDeleteLoopDone:
-
-  ; If the user changed the shortcut, then untinstall may not work. This should
-  ; try to fix it.
-  StrCpy $MUI_TEMP "$START_MENU"
-  Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
-@CPACK_NSIS_DELETE_ICONS_EXTRA@
-
-  ;Delete empty start menu parent directories
-  StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
-
-  secondStartMenuDeleteLoop:
-    ClearErrors
-    RMDir $MUI_TEMP
-    GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
-
-    IfErrors secondStartMenuDeleteLoopDone
-
-    StrCmp "$MUI_TEMP" "$SMPROGRAMS" secondStartMenuDeleteLoopDone secondStartMenuDeleteLoop
-  secondStartMenuDeleteLoopDone:
-
-  DeleteRegKey /ifempty SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
-
-  Push $INSTDIR\bin
-  StrCmp $DO_NOT_ADD_TO_PATH_ "1" doNotRemoveFromPath 0
-    Call un.RemoveFromPath
-  doNotRemoveFromPath:
-SectionEnd
-
-;--------------------------------
-; determine admin versus local install
-; Is install for "AllUsers" or "JustMe"?
-; Default to "JustMe" - set to "AllUsers" if admin or on Win9x
-; This function is used for the very first "custom page" of the installer.
-; This custom page does not show up visibly, but it executes prior to the
-; first visible page and sets up $INSTDIR properly...
-; Choose different default installation folder based on SV_ALLUSERS...
-; "Program Files" for AllUsers, "My Documents" for JustMe...
-
-Function .onInit
-  StrCmp "@CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL@" "ON" 0 inst
-
-  ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "UninstallString"
-  StrCmp $0 "" inst
-
-  MessageBox MB_YESNOCANCEL|MB_ICONEXCLAMATION \
-  "@CPACK_NSIS_PACKAGE_NAME@ is already installed. $\n$\nDo you want to uninstall the old version before installing the new one?" \
-  /SD IDYES IDYES uninst IDNO inst
-  Abort
-
-;Run the uninstaller
-uninst:
-  ClearErrors
-  StrLen $2 "\Uninstall.exe"
-  StrCpy $3 $0 -$2 # remove "\Uninstall.exe" from UninstallString to get path
-  ExecWait '"$0" /S _?=$3' ;Do not copy the uninstaller to a temp file
-
-  IfErrors uninst_failed inst
-uninst_failed:
-  MessageBox MB_OK|MB_ICONSTOP "Uninstall failed."
-  Abort
-
-
-inst:
-  ; Reads components status for registry
-  !insertmacro SectionList "InitSection"
-
-  ; check to see if /D has been used to change
-  ; the install directory by comparing it to the
-  ; install directory that is expected to be the
-  ; default
-  StrCpy $IS_DEFAULT_INSTALLDIR 0
-  StrCmp "$INSTDIR" "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@" 0 +2
-    StrCpy $IS_DEFAULT_INSTALLDIR 1
-
-  StrCpy $SV_ALLUSERS "JustMe"
-  ; if default install dir then change the default
-  ; if it is installed for JustMe
-  StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2
-    StrCpy $INSTDIR "$DOCUMENTS\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
-
-  ClearErrors
-  UserInfo::GetName
-  IfErrors noLM
-  Pop $0
-  UserInfo::GetAccountType
-  Pop $1
-  StrCmp $1 "Admin" 0 +4
-    SetShellVarContext all
-    ;MessageBox MB_OK 'User "$0" is in the Admin group'
-    StrCpy $SV_ALLUSERS "AllUsers"
-    Goto done
-  StrCmp $1 "Power" 0 +4
-    SetShellVarContext all
-    ;MessageBox MB_OK 'User "$0" is in the Power Users group'
-    StrCpy $SV_ALLUSERS "AllUsers"
-    Goto done
-
-  noLM:
-    StrCpy $SV_ALLUSERS "AllUsers"
-    ;Get installation folder from registry if available
-
-  done:
-  StrCmp $SV_ALLUSERS "AllUsers" 0 +3
-    StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2
-      StrCpy $INSTDIR "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
-
-  StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 noOptionsPage
-    !insertmacro MUI_INSTALLOPTIONS_EXTRACT "NSIS.InstallOptions.ini"
-
-  noOptionsPage:
-FunctionEnd
diff --git a/share/cmake-3.18/Modules/Internal/CPack/WIX.template.in b/share/cmake-3.18/Modules/Internal/CPack/WIX.template.in
deleted file mode 100644
index c4fc83a..0000000
--- a/share/cmake-3.18/Modules/Internal/CPack/WIX.template.in
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<?include "cpack_variables.wxi"?>
-
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
-    RequiredVersion="3.6.3303.0">
-
-    <Product Id="$(var.CPACK_WIX_PRODUCT_GUID)"
-        Name="$(var.CPACK_PACKAGE_NAME)"
-        Language="1033"
-        Version="$(var.CPACK_PACKAGE_VERSION)"
-        Manufacturer="$(var.CPACK_PACKAGE_VENDOR)"
-        UpgradeCode="$(var.CPACK_WIX_UPGRADE_GUID)">
-
-        <Package InstallerVersion="301" Compressed="yes"/>
-
-        <Media Id="1" Cabinet="media1.cab" EmbedCab="yes"/>
-
-        <MajorUpgrade
-            Schedule="afterInstallInitialize"
-            AllowSameVersionUpgrades="yes"
-            DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit."/>
-
-        <WixVariable Id="WixUILicenseRtf" Value="$(var.CPACK_WIX_LICENSE_RTF)"/>
-        <Property Id="WIXUI_INSTALLDIR" Value="INSTALL_ROOT"/>
-
-        <?ifdef CPACK_WIX_PRODUCT_ICON?>
-        <Property Id="ARPPRODUCTICON">ProductIcon.ico</Property>
-        <Icon Id="ProductIcon.ico" SourceFile="$(var.CPACK_WIX_PRODUCT_ICON)"/>
-        <?endif?>
-
-        <?ifdef CPACK_WIX_UI_BANNER?>
-        <WixVariable Id="WixUIBannerBmp" Value="$(var.CPACK_WIX_UI_BANNER)"/>
-        <?endif?>
-
-        <?ifdef CPACK_WIX_UI_DIALOG?>
-        <WixVariable Id="WixUIDialogBmp" Value="$(var.CPACK_WIX_UI_DIALOG)"/>
-        <?endif?>
-
-        <FeatureRef Id="ProductFeature"/>
-
-        <UIRef Id="$(var.CPACK_WIX_UI_REF)" />
-
-        <?include "properties.wxi"?>
-        <?include "product_fragment.wxi"?>
-    </Product>
-</Wix>
diff --git a/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake b/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake
deleted file mode 100644
index 72d96b3..0000000
--- a/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake
+++ /dev/null
@@ -1,119 +0,0 @@
-
-macro(_record_compiler_features lang compile_flags feature_list)
-  include("${CMAKE_ROOT}/Modules/Compiler/${CMAKE_${lang}_COMPILER_ID}-${lang}-FeatureTests.cmake" OPTIONAL)
-
-  string(TOLOWER ${lang} lang_lc)
-  file(REMOVE "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.bin")
-  file(WRITE "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.${lang_lc}" "
-  const char features[] = {\"\\n\"\n")
-
-  get_property(known_features GLOBAL PROPERTY CMAKE_${lang}_KNOWN_FEATURES)
-
-  foreach(feature ${known_features})
-    if (_cmake_feature_test_${feature})
-      if (${_cmake_feature_test_${feature}} STREQUAL 1)
-        set(_feature_condition "\"1\" ")
-      else()
-        set(_feature_condition "#if ${_cmake_feature_test_${feature}}\n\"1\"\n#else\n\"0\"\n#endif\n")
-      endif()
-      file(APPEND "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.${lang_lc}" "\"${lang}_FEATURE:\"\n${_feature_condition}\"${feature}\\n\"\n")
-    endif()
-  endforeach()
-  file(APPEND "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.${lang_lc}"
-    "\n};\n\nint main(int argc, char** argv) { (void)argv; return features[argc]; }\n")
-
-  if(CMAKE_${lang}_LINK_WITH_STANDARD_COMPILE_OPTION)
-    # This toolchain requires use of the language standard flag
-    # when linking in order to use the matching standard library.
-    set(compile_flags_for_link "${compile_flags}")
-  else()
-    set(compile_flags_for_link "")
-  endif()
-
-  try_compile(CMAKE_${lang}_FEATURE_TEST
-    ${CMAKE_BINARY_DIR} "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.${lang_lc}"
-    COMPILE_DEFINITIONS "${compile_flags}"
-    LINK_LIBRARIES "${compile_flags_for_link}"
-    OUTPUT_VARIABLE _output
-    COPY_FILE "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.bin"
-    COPY_FILE_ERROR _copy_error
-    )
-  if(CMAKE_${lang}_FEATURE_TEST AND NOT _copy_error)
-    set(_result 0)
-  else()
-    set(_result 255)
-  endif()
-  unset(CMAKE_${lang}_FEATURE_TEST CACHE)
-  unset(compile_flags_for_link)
-
-  if (_result EQUAL 0)
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-      "\n\nDetecting ${lang} [${compile_flags}] compiler features compiled with the following output:\n${_output}\n\n")
-    if(EXISTS "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.bin")
-      file(STRINGS "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.bin"
-        features REGEX "${lang}_FEATURE:.*")
-      foreach(info ${features})
-        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-          "    Feature record: ${info}\n")
-        string(REPLACE "${lang}_FEATURE:" "" info ${info})
-        string(SUBSTRING ${info} 0 1 has_feature)
-        if(has_feature)
-          string(REGEX REPLACE "^1" "" feature ${info})
-          list(APPEND ${feature_list} ${feature})
-        endif()
-      endforeach()
-    endif()
-  else()
-    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-      "Detecting ${lang} [${compile_flags}] compiler features failed to compile with the following output:\n${_output}\n${_copy_error}\n\n")
-  endif()
-endmacro()
-
-macro(_record_compiler_features_c std)
-  list(APPEND CMAKE_C${std}_COMPILE_FEATURES c_std_${std})
-
-  get_property(lang_level_has_features GLOBAL PROPERTY CMAKE_C${std}_KNOWN_FEATURES)
-  if(lang_level_has_features)
-    _record_compiler_features(C "${CMAKE_C${std}_STANDARD_COMPILE_OPTION}" CMAKE_C${std}_COMPILE_FEATURES)
-  endif()
-  unset(lang_level_has_features)
-endmacro()
-
-macro(_record_compiler_features_cxx std)
-  list(APPEND CMAKE_CXX${std}_COMPILE_FEATURES cxx_std_${std})
-
-  get_property(lang_level_has_features GLOBAL PROPERTY CMAKE_CXX${std}_KNOWN_FEATURES)
-  if(lang_level_has_features)
-    _record_compiler_features(CXX "${CMAKE_CXX${std}_STANDARD_COMPILE_OPTION}" CMAKE_CXX${std}_COMPILE_FEATURES)
-  endif()
-  unset(lang_level_has_features)
-endmacro()
-
-macro(_record_compiler_features_cuda std)
-  list(APPEND CMAKE_CUDA${std}_COMPILE_FEATURES cuda_std_${std})
-
-  get_property(lang_level_has_features GLOBAL PROPERTY CMAKE_CUDA${std}_KNOWN_FEATURES)
-  if(lang_level_has_features)
-    _record_compiler_features(CUDA "${CMAKE_CUDA${std}_STANDARD_COMPILE_OPTION}" CMAKE_CUDA${std}_COMPILE_FEATURES)
-  endif()
-  unset(lang_level_has_features)
-endmacro()
-
-macro(_has_compiler_features lang level compile_flags feature_list)
-  # presume all known features are supported
-  get_property(known_features GLOBAL PROPERTY CMAKE_${lang}${level}_KNOWN_FEATURES)
-  list(APPEND ${feature_list} ${known_features})
-endmacro()
-
-macro(_has_compiler_features_c std)
-  list(APPEND CMAKE_C${std}_COMPILE_FEATURES c_std_${std})
-  _has_compiler_features(C ${std} "${CMAKE_C${std}_STANDARD_COMPILE_OPTION}" CMAKE_C${std}_COMPILE_FEATURES)
-endmacro()
-macro(_has_compiler_features_cxx std)
-  list(APPEND CMAKE_CXX${std}_COMPILE_FEATURES cxx_std_${std})
-  _has_compiler_features(CXX ${std} "${CMAKE_CXX${std}_STANDARD_COMPILE_OPTION}" CMAKE_CXX${std}_COMPILE_FEATURES)
-endmacro()
-macro(_has_compiler_features_cuda std)
-  list(APPEND CMAKE_CUDA${std}_COMPILE_FEATURES cuda_std_${std})
-  _has_compiler_features(CUDA ${std} "${CMAKE_CUDA${std}_STANDARD_COMPILE_OPTION}" CMAKE_CUDA${std}_COMPILE_FEATURES)
-endmacro()
diff --git a/share/cmake-3.18/Modules/MacroAddFileDependencies.cmake b/share/cmake-3.18/Modules/MacroAddFileDependencies.cmake
deleted file mode 100644
index ca60b57..0000000
--- a/share/cmake-3.18/Modules/MacroAddFileDependencies.cmake
+++ /dev/null
@@ -1,30 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-MacroAddFileDependencies
-------------------------
-
-MACRO_ADD_FILE_DEPENDENCIES(<_file> depend_files...)
-
-Using the macro MACRO_ADD_FILE_DEPENDENCIES() is discouraged.  There
-are usually better ways to specify the correct dependencies.
-
-MACRO_ADD_FILE_DEPENDENCIES(<_file> depend_files...) is just a
-convenience wrapper around the OBJECT_DEPENDS source file property.
-You can just use set_property(SOURCE <file> APPEND PROPERTY
-OBJECT_DEPENDS depend_files) instead.
-#]=======================================================================]
-
-macro (MACRO_ADD_FILE_DEPENDENCIES _file)
-
-  get_source_file_property(_deps ${_file} OBJECT_DEPENDS)
-  if (_deps)
-    set(_deps ${_deps} ${ARGN})
-  else ()
-    set(_deps ${ARGN})
-  endif ()
-
-  set_source_files_properties(${_file} PROPERTIES OBJECT_DEPENDS "${_deps}")
-
-endmacro ()
diff --git a/share/cmake-3.18/Modules/Platform/ARTOS-GNU-C.cmake b/share/cmake-3.18/Modules/Platform/ARTOS-GNU-C.cmake
deleted file mode 100644
index fe8d782..0000000
--- a/share/cmake-3.18/Modules/Platform/ARTOS-GNU-C.cmake
+++ /dev/null
@@ -1,9 +0,0 @@
-# Define ARTOS to select proper behaviour and tell preprocessor to accept C++ style comments.
-string(APPEND CMAKE_C_FLAGS_INIT " -DARTOS -Xp -+")
-# ac doesn't support -g properly and doesn't support the normal gcc optimization options. Just use the defaults set by ac.
-string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " ")
-string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
-string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG")
-string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -DNDEBUG")
-# Most projects expect the stdio functions to be available.
-set(CMAKE_C_STANDARD_LIBRARIES_INIT "stdio.a")
diff --git a/share/cmake-3.18/Modules/Platform/Android-Clang.cmake b/share/cmake-3.18/Modules/Platform/Android-Clang.cmake
deleted file mode 100644
index 25c4b25..0000000
--- a/share/cmake-3.18/Modules/Platform/Android-Clang.cmake
+++ /dev/null
@@ -1,88 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-# This module is shared by multiple languages; use include blocker.
-if(__ANDROID_COMPILER_CLANG)
-  return()
-endif()
-set(__ANDROID_COMPILER_CLANG 1)
-
-# Include the NDK hook.
-# It can be used by NDK to inject necessary fixes for an earlier cmake.
-if(CMAKE_ANDROID_NDK)
-  include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/pre/Android-Clang.cmake OPTIONAL)
-endif()
-
-# Load flags from NDK. This file may provides the following variables:
-#   _ANDROID_NDK_INIT_CFLAGS
-#   _ANDROID_NDK_INIT_CFLAGS_DEBUG
-#   _ANDROID_NDK_INIT_CFLAGS_RELEASE
-#   _ANDROID_NDK_INIT_LDFLAGS
-#   _ANDROID_NDK_INIT_LDFLAGS_EXE
-if(CMAKE_ANDROID_NDK)
-  include(${CMAKE_ANDROID_NDK}/build/cmake/flags.cmake OPTIONAL
-          RESULT_VARIABLE _INCLUDED_FLAGS)
-endif()
-
-# Support for NVIDIA Nsight Tegra Visual Studio Edition was previously
-# implemented in the CMake VS IDE generators.  Avoid interfering with
-# that functionality for now.  Later we may try to integrate this.
-if(CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android")
-  macro(__android_compiler_clang lang)
-  endmacro()
-  return()
-endif()
-
-# Commonly used Android toolchain files that pre-date CMake upstream support
-# set CMAKE_SYSTEM_VERSION to 1.  Avoid interfering with them.
-if(CMAKE_SYSTEM_VERSION EQUAL 1)
-  macro(__android_compiler_clang lang)
-  endmacro()
-  return()
-endif()
-
-# Natively compiling on an Android host doesn't use the NDK cross-compilation
-# tools.
-if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Android")
-  macro(__android_compiler_clang lang)
-  endmacro()
-  return()
-endif()
-
-include(Platform/Android-Common)
-
-if(_INCLUDED_FLAGS)
-  # NDK provides the flags.
-  set(_ANDROID_ABI_INIT_CFLAGS "${_ANDROID_NDK_INIT_CFLAGS}")
-  set(_ANDROID_ABI_INIT_CFLAGS_DEBUG "${_ANDROID_NDK_INIT_CFLAGS_DEBUG}")
-  set(_ANDROID_ABI_INIT_CFLAGS_RELEASE "${_ANDROID_NDK_INIT_CFLAGS_RELEASE}")
-  set(_ANDROID_ABI_INIT_LDFLAGS "${_ANDROID_NDK_INIT_LDFLAGS}")
-  set(_ANDROID_ABI_INIT_EXE_LDFLAGS "${_ANDROID_NDK_INIT_LDFLAGS_EXE}")
-else()
-  # The NDK toolchain configuration files at:
-  #
-  #   <ndk>/[build/core/]toolchains/*-clang*/setup.mk
-  #
-  # contain logic to set LLVM_TRIPLE for Clang-based toolchains for each target.
-  # We need to produce the same target here to produce compatible binaries.
-  include(Platform/Android/abi-${CMAKE_ANDROID_ARCH_ABI}-Clang)
-endif()
-
-macro(__android_compiler_clang lang)
-  if(NOT "x${lang}" STREQUAL "xASM")
-    __android_compiler_common(${lang})
-  endif()
-  if(NOT CMAKE_${lang}_COMPILER_TARGET)
-    set(CMAKE_${lang}_COMPILER_TARGET "${CMAKE_ANDROID_ARCH_LLVM_TRIPLE}")
-    if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
-      string(APPEND CMAKE_${lang}_COMPILER_TARGET "${CMAKE_SYSTEM_VERSION}")
-    endif()
-    list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "--target=${CMAKE_${lang}_COMPILER_TARGET}")
-  endif()
-endmacro()
-
-# Include the NDK hook.
-# It can be used by NDK to inject necessary fixes for an earlier cmake.
-if(CMAKE_ANDROID_NDK)
-  include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/post/Android-Clang.cmake OPTIONAL)
-endif()
diff --git a/share/cmake-3.18/Modules/Platform/Android-Common.cmake b/share/cmake-3.18/Modules/Platform/Android-Common.cmake
deleted file mode 100644
index 39da933..0000000
--- a/share/cmake-3.18/Modules/Platform/Android-Common.cmake
+++ /dev/null
@@ -1,230 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-# This module is shared by multiple languages; use include blocker.
-if(__ANDROID_COMPILER_COMMON)
-  return()
-endif()
-set(__ANDROID_COMPILER_COMMON 1)
-
-if(CMAKE_ANDROID_NDK)
-  # <ndk>/build/core/definitions.mk
-
-  set(_ANDROID_STL_TYPES
-    none
-    system
-    c++_static
-    c++_shared
-    gabi++_static
-    gabi++_shared
-    gnustl_static
-    gnustl_shared
-    stlport_static
-    stlport_shared
-    )
-
-  if(CMAKE_ANDROID_STL_TYPE)
-    list(FIND _ANDROID_STL_TYPES "${CMAKE_ANDROID_STL_TYPE}" _ANDROID_STL_TYPE_FOUND)
-    if(_ANDROID_STL_TYPE_FOUND EQUAL -1)
-      string(REPLACE ";" "\n  " _msg ";${_ANDROID_STL_TYPES}")
-      message(FATAL_ERROR
-        "The CMAKE_ANDROID_STL_TYPE '${CMAKE_ANDROID_STL_TYPE}' is not one of the allowed values:${_msg}\n"
-        )
-    endif()
-    unset(_ANDROID_STL_TYPE_FOUND)
-  elseif(IS_DIRECTORY ${CMAKE_ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++)
-    set(CMAKE_ANDROID_STL_TYPE "gnustl_static")
-  else()
-    set(CMAKE_ANDROID_STL_TYPE "c++_static")
-  endif()
-
-  unset(_ANDROID_STL_TYPES)
-
-  # Forward Android-specific platform variables to try_compile projects.
-  list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
-    CMAKE_ANDROID_STL_TYPE
-    )
-endif()
-
-if(CMAKE_ANDROID_STL_TYPE)
-  if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
-    if(CMAKE_ANDROID_STL_TYPE STREQUAL "system")
-      set(_ANDROID_STL_EXCEPTIONS 0)
-      set(_ANDROID_STL_RTTI 0)
-      macro(__android_stl lang)
-        string(APPEND CMAKE_${lang}_FLAGS_INIT " -stdlib=libstdc++")
-        if(_ANDROID_STL_EXCEPTIONS OR _ANDROID_STL_RTTI)
-          string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " -lc++abi")
-          if(CMAKE_SYSTEM_VERSION LESS 21)
-            list(APPEND CMAKE_${lang}_STANDARD_LIBRARIES "-landroid_support")
-          endif()
-        endif()
-      endmacro()
-    elseif(CMAKE_ANDROID_STL_TYPE STREQUAL "c++_static")
-      set(_ANDROID_STL_EXCEPTIONS 1)
-      set(_ANDROID_STL_RTTI 1)
-      macro(__android_stl lang)
-        string(APPEND CMAKE_${lang}_FLAGS_INIT " -stdlib=libc++")
-        string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " -static-libstdc++")
-      endmacro()
-    elseif(CMAKE_ANDROID_STL_TYPE STREQUAL "c++_shared")
-      set(_ANDROID_STL_EXCEPTIONS 1)
-      set(_ANDROID_STL_RTTI 1)
-      macro(__android_stl lang)
-        string(APPEND CMAKE_${lang}_FLAGS_INIT " -stdlib=libc++")
-      endmacro()
-    elseif(CMAKE_ANDROID_STL_TYPE STREQUAL "none")
-      set(_ANDROID_STL_RTTI 0)
-      set(_ANDROID_STL_EXCEPTIONS 0)
-      macro(__android_stl lang)
-        # FIXME: Add a way to add project-wide language-specific compile-only flags.
-        set(CMAKE_CXX_COMPILE_OBJECT
-          "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE> -nostdinc++")
-        string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " -nostdlib++")
-      endmacro()
-    else()
-      message(FATAL_ERROR
-        "Android: STL '${CMAKE_ANDROID_STL_TYPE}' not supported by this NDK."
-        )
-    endif()
-    if(DEFINED CMAKE_ANDROID_RTTI)
-      set(_ANDROID_STL_RTTI ${CMAKE_ANDROID_RTTI})
-    endif()
-    if(DEFINED CMAKE_ANDROID_EXCEPTIONS)
-      set(_ANDROID_STL_EXCEPTIONS ${CMAKE_ANDROID_EXCEPTIONS})
-    endif()
-  elseif(CMAKE_ANDROID_NDK)
-
-    macro(__android_stl_inc lang dir req)
-      if(EXISTS "${dir}")
-        list(APPEND CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES "${dir}")
-      elseif(${req})
-        message(FATAL_ERROR
-          "Android: STL '${CMAKE_ANDROID_STL_TYPE}' include directory not found:\n"
-          "  ${dir}"
-          )
-      endif()
-    endmacro()
-
-    macro(__android_stl_lib lang lib req)
-      if(CMAKE_ANDROID_ARCH_ABI MATCHES "^armeabi" AND NOT CMAKE_ANDROID_ARM_MODE)
-        get_filename_component(_ANDROID_STL_LIBDIR "${lib}" DIRECTORY)
-        get_filename_component(_ANDROID_STL_LIBNAME "${lib}" NAME)
-        set(_ANDROID_STL_LIBTHUMB "${_ANDROID_STL_LIBDIR}/thumb/${_ANDROID_STL_LIBNAME}")
-        unset(_ANDROID_STL_LIBDIR)
-        unset(_ANDROID_STL_LIBNAME)
-      else()
-        set(_ANDROID_STL_LIBTHUMB "")
-      endif()
-
-      if(_ANDROID_STL_LIBTHUMB AND EXISTS "${_ANDROID_STL_LIBTHUMB}")
-        string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " \"${_ANDROID_STL_LIBTHUMB}\"")
-      elseif(EXISTS "${lib}")
-        string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " \"${lib}\"")
-      elseif(${req})
-        message(FATAL_ERROR
-          "Android: STL '${CMAKE_ANDROID_STL_TYPE}' library file not found:\n"
-          "  ${lib}"
-          )
-      endif()
-
-      unset(_ANDROID_STL_LIBTHUMB)
-    endmacro()
-
-    include(Platform/Android/ndk-stl-${CMAKE_ANDROID_STL_TYPE})
-  else()
-    macro(__android_stl lang)
-    endmacro()
-  endif()
-else()
-  macro(__android_stl lang)
-  endmacro()
-endif()
-
-# The NDK toolchain configuration files at:
-#
-#   <ndk>/[build/core/]toolchains/*/setup.mk
-#
-# contain logic to set TARGET_CFLAGS and TARGET_LDFLAGS (and debug/release
-# variants) to tell their build system what flags to pass for each ABI.
-# We need to produce the same flags here to produce compatible binaries.
-# We initialize these variables here and set them in the compiler-specific
-# modules that include this one.  Then we use them in the macro below when
-# it is called.
-set(_ANDROID_ABI_INIT_CFLAGS "")
-set(_ANDROID_ABI_INIT_CFLAGS_DEBUG "")
-set(_ANDROID_ABI_INIT_CFLAGS_RELEASE "")
-set(_ANDROID_ABI_INIT_LDFLAGS "")
-set(_ANDROID_ABI_INIT_EXE_LDFLAGS "")
-
-macro(__android_compiler_common lang)
-  if(_ANDROID_ABI_INIT_CFLAGS)
-    string(APPEND CMAKE_${lang}_FLAGS_INIT " ${_ANDROID_ABI_INIT_CFLAGS}")
-  endif()
-  if(_ANDROID_ABI_INIT_CFLAGS_DEBUG)
-    string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " ${_ANDROID_ABI_INIT_CFLAGS_DEBUG}")
-  endif()
-  if(_ANDROID_ABI_INIT_CFLAGS_RELEASE)
-    string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " ${_ANDROID_ABI_INIT_CFLAGS_RELEASE}")
-    string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " ${_ANDROID_ABI_INIT_CFLAGS_RELEASE}")
-    string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " ${_ANDROID_ABI_INIT_CFLAGS_RELEASE}")
-  endif()
-  if(_ANDROID_ABI_INIT_LDFLAGS)
-    foreach(t EXE SHARED MODULE)
-      string(APPEND CMAKE_${t}_LINKER_FLAGS_INIT " ${_ANDROID_ABI_INIT_LDFLAGS}")
-    endforeach()
-  endif()
-  if(_ANDROID_ABI_INIT_EXE_LDFLAGS)
-    string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ${_ANDROID_ABI_INIT_EXE_LDFLAGS}")
-  endif()
-
-  if(DEFINED _ANDROID_STL_EXCEPTIONS)
-    if(_ANDROID_STL_EXCEPTIONS)
-      string(APPEND CMAKE_${lang}_FLAGS_INIT " -fexceptions")
-    else()
-      string(APPEND CMAKE_${lang}_FLAGS_INIT " -fno-exceptions")
-    endif()
-  endif()
-
-  if("x${lang}" STREQUAL "xCXX" AND DEFINED _ANDROID_STL_RTTI)
-    if(_ANDROID_STL_RTTI)
-      string(APPEND CMAKE_${lang}_FLAGS_INIT " -frtti")
-    else()
-      string(APPEND CMAKE_${lang}_FLAGS_INIT " -fno-rtti")
-    endif()
-  endif()
-
-  if("x${lang}" STREQUAL "xCXX")
-    __android_stl(CXX)
-  endif()
-
-  if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
-    string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " -latomic -lm")
-  endif()
-
-  # <ndk>/build/core/definitions.mk appends the sysroot's include directory
-  # explicitly at the end of the command-line include path so that it
-  # precedes the toolchain's builtin include directories.  This is
-  # necessary so that Android API-version-specific headers are preferred
-  # over those in the toolchain's `include-fixed` directory (which cannot
-  # possibly match all versions).
-  #
-  # Do not do this for a standalone toolchain because it is already
-  # tied to a specific API version.
-  if(CMAKE_ANDROID_NDK AND NOT CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
-    if(CMAKE_SYSROOT_COMPILE)
-      set(_cmake_sysroot_compile "${CMAKE_SYSROOT_COMPILE}")
-    else()
-      set(_cmake_sysroot_compile "${CMAKE_SYSROOT}")
-    endif()
-    if(NOT CMAKE_ANDROID_NDK_DEPRECATED_HEADERS)
-      list(APPEND CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES
-        "${_cmake_sysroot_compile}/usr/include"
-        "${_cmake_sysroot_compile}/usr/include/${CMAKE_ANDROID_ARCH_TRIPLE}"
-        )
-    else()
-      list(APPEND CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES "${_cmake_sysroot_compile}/usr/include")
-    endif()
-    unset(_cmake_sysroot_compile)
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/Platform/Android-Determine.cmake b/share/cmake-3.18/Modules/Platform/Android-Determine.cmake
deleted file mode 100644
index 4ba3601..0000000
--- a/share/cmake-3.18/Modules/Platform/Android-Determine.cmake
+++ /dev/null
@@ -1,511 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-# When CMAKE_SYSTEM_NAME is "Android", CMakeDetermineSystem loads this module.
-# This module detects platform-wide information about the Android target
-# in order to store it in "CMakeSystem.cmake".
-
-# Include the NDK hook.
-# It can be used by NDK to inject necessary fixes for an earlier cmake.
-if(CMAKE_ANDROID_NDK)
-  include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/pre/Android-Determine.cmake OPTIONAL)
-endif()
-
-# Support for NVIDIA Nsight Tegra Visual Studio Edition was previously
-# implemented in the CMake VS IDE generators.  Avoid interfering with
-# that functionality for now.  Later we may try to integrate this.
-if(CMAKE_GENERATOR MATCHES "Visual Studio")
-  return()
-endif()
-
-# Commonly used Android toolchain files that pre-date CMake upstream support
-# set CMAKE_SYSTEM_VERSION to 1.  Avoid interfering with them.
-if(CMAKE_SYSTEM_VERSION EQUAL 1)
-  return()
-endif()
-
-# Natively compiling on an Android host doesn't use the NDK cross-compilation
-# tools.
-if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Android")
-  return()
-endif()
-
-cmake_policy(PUSH)
-cmake_policy(SET CMP0057 NEW) # if IN_LIST
-
-# If the user provided CMAKE_SYSROOT for us, extract information from it.
-set(_ANDROID_SYSROOT_NDK "")
-set(_ANDROID_SYSROOT_API "")
-set(_ANDROID_SYSROOT_ARCH "")
-set(_ANDROID_SYSROOT_STANDALONE_TOOLCHAIN "")
-if(CMAKE_SYSROOT)
-  if(NOT IS_DIRECTORY "${CMAKE_SYSROOT}")
-    message(FATAL_ERROR
-      "Android: The specified CMAKE_SYSROOT:\n"
-      "  ${CMAKE_SYSROOT}\n"
-      "is not an existing directory."
-      )
-  endif()
-  if(CMAKE_SYSROOT MATCHES "^([^\\\n]*)/platforms/android-([0-9]+)/arch-([a-z0-9_]+)$")
-    set(_ANDROID_SYSROOT_NDK "${CMAKE_MATCH_1}")
-    set(_ANDROID_SYSROOT_API "${CMAKE_MATCH_2}")
-    set(_ANDROID_SYSROOT_ARCH "${CMAKE_MATCH_3}")
-  elseif(CMAKE_SYSROOT MATCHES "^([^\\\n]*)/sysroot$")
-    set(_ANDROID_SYSROOT_STANDALONE_TOOLCHAIN "${CMAKE_MATCH_1}")
-  else()
-    message(FATAL_ERROR
-      "The value of CMAKE_SYSROOT:\n"
-      "  ${CMAKE_SYSROOT}\n"
-      "does not match any of the forms:\n"
-      "  <ndk>/platforms/android-<api>/arch-<arch>\n"
-      "  <standalone-toolchain>/sysroot\n"
-      "where:\n"
-      "  <ndk>  = Android NDK directory (with forward slashes)\n"
-      "  <api>  = Android API version number (decimal digits)\n"
-      "  <arch> = Android ARCH name (lower case)\n"
-      "  <standalone-toolchain> = Path to standalone toolchain prefix\n"
-      )
-  endif()
-endif()
-
-# Find the Android NDK.
-if(CMAKE_ANDROID_NDK)
-  if(NOT IS_DIRECTORY "${CMAKE_ANDROID_NDK}")
-    message(FATAL_ERROR
-      "Android: The NDK root directory specified by CMAKE_ANDROID_NDK:\n"
-      "  ${CMAKE_ANDROID_NDK}\n"
-      "does not exist."
-      )
-  endif()
-elseif(CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
-  if(NOT IS_DIRECTORY "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}")
-    message(FATAL_ERROR
-      "Android: The standalone toolchain directory specified by CMAKE_ANDROID_STANDALONE_TOOLCHAIN:\n"
-      "  ${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}\n"
-      "does not exist."
-      )
-  endif()
-  if(NOT EXISTS "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot/usr/include/android/api-level.h")
-    message(FATAL_ERROR
-      "Android: The standalone toolchain directory specified by CMAKE_ANDROID_STANDALONE_TOOLCHAIN:\n"
-      "  ${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}\n"
-      "does not contain a sysroot with a known layout.  The file:\n"
-      "  ${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot/usr/include/android/api-level.h\n"
-      "does not exist."
-      )
-  endif()
-else()
-  if(IS_DIRECTORY "${_ANDROID_SYSROOT_NDK}")
-    set(CMAKE_ANDROID_NDK "${_ANDROID_SYSROOT_NDK}")
-  elseif(IS_DIRECTORY "${_ANDROID_SYSROOT_STANDALONE_TOOLCHAIN}")
-    set(CMAKE_ANDROID_STANDALONE_TOOLCHAIN "${_ANDROID_SYSROOT_STANDALONE_TOOLCHAIN}")
-  elseif(IS_DIRECTORY "${ANDROID_NDK}")
-    file(TO_CMAKE_PATH "${ANDROID_NDK}" CMAKE_ANDROID_NDK)
-  elseif(IS_DIRECTORY "${ANDROID_STANDALONE_TOOLCHAIN}")
-    file(TO_CMAKE_PATH "${ANDROID_STANDALONE_TOOLCHAIN}" CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
-  elseif(IS_DIRECTORY "$ENV{ANDROID_NDK_ROOT}")
-    file(TO_CMAKE_PATH "$ENV{ANDROID_NDK_ROOT}" CMAKE_ANDROID_NDK)
-  elseif(IS_DIRECTORY "$ENV{ANDROID_NDK}")
-    file(TO_CMAKE_PATH "$ENV{ANDROID_NDK}" CMAKE_ANDROID_NDK)
-  elseif(IS_DIRECTORY "$ENV{ANDROID_STANDALONE_TOOLCHAIN}")
-    file(TO_CMAKE_PATH "$ENV{ANDROID_STANDALONE_TOOLCHAIN}" CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
-  endif()
-  # TODO: Search harder for the NDK or standalone toolchain.
-endif()
-
-set(_ANDROID_STANDALONE_TOOLCHAIN_API "")
-if(CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
-  # Try to read the API level from the toolchain launcher.
-  if(EXISTS "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/clang")
-    set(_ANDROID_API_LEVEL_CLANG_REGEX "__ANDROID_API__=([0-9]+)")
-    file(STRINGS "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/clang" _ANDROID_STANDALONE_TOOLCHAIN_BIN_CLANG
-      REGEX "${_ANDROID_API_LEVEL_CLANG_REGEX}" LIMIT_COUNT 1 LIMIT_INPUT 65536)
-    if(_ANDROID_STANDALONE_TOOLCHAIN_BIN_CLANG MATCHES "${_ANDROID_API_LEVEL_CLANG_REGEX}")
-      set(_ANDROID_STANDALONE_TOOLCHAIN_API "${CMAKE_MATCH_1}")
-    endif()
-    unset(_ANDROID_STANDALONE_TOOLCHAIN_BIN_CLANG)
-    unset(_ANDROID_API_LEVEL_CLANG_REGEX)
-  endif()
-  if(NOT _ANDROID_STANDALONE_TOOLCHAIN_API)
-    # The compiler launcher does not know __ANDROID_API__.  Assume this
-    # is not unified headers and look for it in the api-level.h header.
-    set(_ANDROID_API_LEVEL_H_REGEX "^[\t ]*#[\t ]*define[\t ]+__ANDROID_API__[\t ]+([0-9]+)")
-    file(STRINGS "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot/usr/include/android/api-level.h"
-      _ANDROID_API_LEVEL_H_CONTENT REGEX "${_ANDROID_API_LEVEL_H_REGEX}")
-    if(_ANDROID_API_LEVEL_H_CONTENT MATCHES "${_ANDROID_API_LEVEL_H_REGEX}")
-      set(_ANDROID_STANDALONE_TOOLCHAIN_API "${CMAKE_MATCH_1}")
-    endif()
-  endif()
-  if(NOT _ANDROID_STANDALONE_TOOLCHAIN_API)
-    message(WARNING
-      "Android: Did not detect API level from\n"
-      "  ${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/clang\n"
-      "or\n"
-      "  ${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot/usr/include/android/api-level.h\n"
-      )
-  endif()
-endif()
-
-if(NOT CMAKE_ANDROID_NDK AND NOT CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
-  message(FATAL_ERROR "Android: Neither the NDK or a standalone toolchain was found.")
-endif()
-
-if(CMAKE_ANDROID_NDK)
-  # NDK >= 18 has platforms.cmake. It provides:
-  #   NDK_MIN_PLATFORM_LEVEL
-  #   NDK_MAX_PLATFORM_LEVEL
-  include("${CMAKE_ANDROID_NDK}/build/cmake/platforms.cmake" OPTIONAL RESULT_VARIABLE _INCLUDED_PLATFORMS)
-  # NDK >= 18 has abis.cmake. It provides:
-  #   NDK_KNOWN_DEVICE_ABI32S
-  #   NDK_KNOWN_DEVICE_ABI64S
-  # NDK >= 23 also provides:
-  #   NDK_KNOWN_DEVICE_ABIS
-  #   NDK_ABI_<abi>_PROC
-  #   NDK_ABI_<abi>_ARCH
-  #   NDK_ABI_<abi>_TRIPLE
-  #   NDK_ABI_<abi>_LLVM_TRIPLE
-  #   NDK_PROC_<processor>_ABI
-  #   NDK_ARCH_<arch>_ABI
-  include("${CMAKE_ANDROID_NDK}/build/cmake/abis.cmake" OPTIONAL RESULT_VARIABLE _INCLUDED_ABIS)
-endif()
-
-if(CMAKE_ANDROID_NDK)
-  # Identify the host platform.
-  if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
-    if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64")
-      set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "darwin-x86_64")
-    else()
-      set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "darwin-x86")
-    endif()
-  elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
-    if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64")
-      set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "linux-x86_64")
-    else()
-      set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "linux-x86")
-    endif()
-  elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
-    if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "AMD64")
-      set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "windows-x86_64")
-    else()
-      set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "windows")
-    endif()
-  else()
-    message(FATAL_ERROR "Android: Builds hosted on '${CMAKE_HOST_SYSTEM_NAME}' not supported.")
-  endif()
-
-  # Look for a unified toolchain/sysroot provided with the NDK.
-  set(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED "${CMAKE_ANDROID_NDK}/toolchains/llvm/prebuilt/${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}")
-  if(NOT IS_DIRECTORY "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/sysroot")
-    set(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED "")
-  endif()
-else()
-  set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "")
-  set(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED "")
-endif()
-
-if(_INCLUDED_ABIS)
-  if(NDK_KNOWN_DEVICE_ABIS)
-    set(_ANDROID_KNOWN_ABIS ${NDK_KNOWN_DEVICE_ABIS})
-  else()
-    set(_ANDROID_KNOWN_ABIS ${NDK_KNOWN_DEVICE_ABI32S} ${NDK_KNOWN_DEVICE_ABI64S})
-  endif()
-endif()
-
-if(NOT DEFINED NDK_KNOWN_DEVICE_ABIS)
-  # The NDK is not new enough to provide ABI information.
-  # https://developer.android.com/ndk/guides/abis.html
-
-  set(NDK_ABI_arm64-v8a_PROC           "aarch64")
-  set(NDK_ABI_arm64-v8a_ARCH           "arm64")
-  set(NDK_ABI_arm64-v8a_TRIPLE         "aarch64-linux-android")
-  set(NDK_ABI_arm64-v8a_LLVM_TRIPLE    "aarch64-none-linux-android")
-  set(NDK_ABI_armeabi-v7a_PROC         "armv7-a")
-  set(NDK_ABI_armeabi-v7a_ARCH         "arm")
-  set(NDK_ABI_armeabi-v7a_TRIPLE       "arm-linux-androideabi")
-  set(NDK_ABI_armeabi-v7a_LLVM_TRIPLE  "armv7-none-linux-androideabi")
-  set(NDK_ABI_armeabi-v6_PROC          "armv6")
-  set(NDK_ABI_armeabi-v6_ARCH          "arm")
-  set(NDK_ABI_armeabi-v6_TRIPLE        "arm-linux-androideabi")
-  set(NDK_ABI_armeabi-v6_LLVM_TRIPLE   "armv6-none-linux-androideabi")
-  set(NDK_ABI_armeabi_PROC             "armv5te")
-  set(NDK_ABI_armeabi_ARCH             "arm")
-  set(NDK_ABI_armeabi_TRIPLE           "arm-linux-androideabi")
-  set(NDK_ABI_armeabi_LLVM_TRIPLE      "armv5te-none-linux-androideabi")
-  set(NDK_ABI_mips_PROC                "mips")
-  set(NDK_ABI_mips_ARCH                "mips")
-  set(NDK_ABI_mips_TRIPLE              "mipsel-linux-android")
-  set(NDK_ABI_mips_LLVM_TRIPLE         "mipsel-none-linux-android")
-  set(NDK_ABI_mips64_PROC              "mips64")
-  set(NDK_ABI_mips64_ARCH              "mips64")
-  set(NDK_ABI_mips64_TRIPLE            "mips64el-linux-android")
-  set(NDK_ABI_mips64_LLVM_TRIPLE       "mips64el-none-linux-android")
-  set(NDK_ABI_x86_PROC                 "i686")
-  set(NDK_ABI_x86_ARCH                 "x86")
-  set(NDK_ABI_x86_TRIPLE               "i686-linux-android")
-  set(NDK_ABI_x86_LLVM_TRIPLE          "i686-none-linux-android")
-  set(NDK_ABI_x86_64_PROC              "x86_64")
-  set(NDK_ABI_x86_64_ARCH              "x86_64")
-  set(NDK_ABI_x86_64_TRIPLE            "x86_64-linux-android")
-  set(NDK_ABI_x86_64_LLVM_TRIPLE       "x86_64-none-linux-android")
-
-  set(NDK_PROC_aarch64_ABI "arm64-v8a")
-  set(NDK_PROC_armv7-a_ABI "armeabi-v7a")
-  set(NDK_PROC_armv6_ABI   "armeabi-v6")
-  set(NDK_PROC_armv5te_ABI "armeabi")
-  set(NDK_PROC_i686_ABI    "x86")
-  set(NDK_PROC_mips_ABI    "mips")
-  set(NDK_PROC_mips64_ABI  "mips64")
-  set(NDK_PROC_x86_64_ABI  "x86_64")
-
-  set(NDK_ARCH_arm64_ABI  "arm64-v8a")
-  set(NDK_ARCH_arm_ABI    "armeabi")
-  set(NDK_ARCH_mips_ABI   "mips")
-  set(NDK_ARCH_mips64_ABI "mips64")
-  set(NDK_ARCH_x86_ABI    "x86")
-  set(NDK_ARCH_x86_64_ABI "x86_64")
-endif()
-
-# Validate inputs.
-if(CMAKE_ANDROID_ARCH_ABI AND NOT DEFINED "NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_PROC")
-  message(FATAL_ERROR "Android: Unknown ABI CMAKE_ANDROID_ARCH_ABI='${CMAKE_ANDROID_ARCH_ABI}'.")
-endif()
-if(CMAKE_SYSTEM_PROCESSOR AND NOT DEFINED "NDK_PROC_${CMAKE_SYSTEM_PROCESSOR}_ABI")
-  message(FATAL_ERROR "Android: Unknown processor CMAKE_SYSTEM_PROCESSOR='${CMAKE_SYSTEM_PROCESSOR}'.")
-endif()
-if(_ANDROID_SYSROOT_ARCH AND NOT DEFINED "NDK_ARCH_${_ANDROID_SYSROOT_ARCH}_ABI")
-  message(FATAL_ERROR
-    "Android: Unknown architecture '${_ANDROID_SYSROOT_ARCH}' specified in CMAKE_SYSROOT:\n"
-    "  ${CMAKE_SYSROOT}"
-    )
-endif()
-
-# Select an ABI.
-if(NOT CMAKE_ANDROID_ARCH_ABI)
-  if(CMAKE_SYSTEM_PROCESSOR)
-    set(CMAKE_ANDROID_ARCH_ABI "${NDK_PROC_${CMAKE_SYSTEM_PROCESSOR}_ABI}")
-  elseif(_ANDROID_SYSROOT_ARCH)
-    set(CMAKE_ANDROID_ARCH_ABI "${NDK_ARCH_${_ANDROID_SYSROOT_ARCH}_ABI}")
-  elseif(_INCLUDED_ABIS)
-    # Default to the oldest ARM ABI.
-    foreach(abi armeabi armeabi-v7a arm64-v8a)
-      if("${abi}" IN_LIST _ANDROID_KNOWN_ABIS)
-        set(CMAKE_ANDROID_ARCH_ABI "${abi}")
-        break()
-      endif()
-    endforeach()
-    if(NOT CMAKE_ANDROID_ARCH_ABI)
-      message(FATAL_ERROR
-        "Android: Can not determine the default ABI. Please set CMAKE_ANDROID_ARCH_ABI."
-      )
-    endif()
-  else()
-    # https://developer.android.com/ndk/guides/application_mk.html
-    # Default is the oldest ARM ABI.
-
-    # Lookup the available ABIs among all toolchains.
-    set(_ANDROID_ABIS "")
-    file(GLOB _ANDROID_CONFIG_MKS
-      "${CMAKE_ANDROID_NDK}/build/core/toolchains/*/config.mk"
-      "${CMAKE_ANDROID_NDK}/toolchains/*/config.mk"
-      )
-    foreach(config_mk IN LISTS _ANDROID_CONFIG_MKS)
-      file(STRINGS "${config_mk}" _ANDROID_TOOL_ABIS REGEX "^TOOLCHAIN_ABIS :=")
-      string(REPLACE "TOOLCHAIN_ABIS :=" "" _ANDROID_TOOL_ABIS "${_ANDROID_TOOL_ABIS}")
-      separate_arguments(_ANDROID_TOOL_ABIS UNIX_COMMAND "${_ANDROID_TOOL_ABIS}")
-      list(APPEND _ANDROID_ABIS ${_ANDROID_TOOL_ABIS})
-      unset(_ANDROID_TOOL_ABIS)
-    endforeach()
-    unset(_ANDROID_CONFIG_MKS)
-
-    # Choose the oldest among the available arm ABIs.
-    if(_ANDROID_ABIS)
-      list(REMOVE_DUPLICATES _ANDROID_ABIS)
-      foreach(abi armeabi armeabi-v7a arm64-v8a)
-        if("${abi}" IN_LIST _ANDROID_ABIS)
-          set(CMAKE_ANDROID_ARCH_ABI "${abi}")
-          break()
-        endif()
-      endforeach()
-    endif()
-    unset(_ANDROID_ABIS)
-
-    if(NOT CMAKE_ANDROID_ARCH_ABI)
-      set(CMAKE_ANDROID_ARCH_ABI "armeabi")
-    endif()
-  endif()
-endif()
-if(_INCLUDED_ABIS AND NOT CMAKE_ANDROID_ARCH_ABI IN_LIST _ANDROID_KNOWN_ABIS)
-  message(FATAL_ERROR
-    "Android: ABI '${CMAKE_ANDROID_ARCH_ABI}' is not supported by the NDK.\n"
-    "Supported ABIS: ${_ANDROID_KNOWN_ABIS}."
-  )
-endif()
-set(CMAKE_ANDROID_ARCH "${NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_ARCH}")
-if(_ANDROID_SYSROOT_ARCH AND NOT "x${_ANDROID_SYSROOT_ARCH}" STREQUAL "x${CMAKE_ANDROID_ARCH}")
-  message(FATAL_ERROR
-    "Android: Architecture '${_ANDROID_SYSROOT_ARCH}' specified in CMAKE_SYSROOT:\n"
-    "  ${CMAKE_SYSROOT}\n"
-    "does not match architecture '${CMAKE_ANDROID_ARCH}' for the ABI '${CMAKE_ANDROID_ARCH_ABI}'."
-    )
-endif()
-set(CMAKE_ANDROID_ARCH_TRIPLE "${NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_TRIPLE}")
-set(CMAKE_ANDROID_ARCH_LLVM_TRIPLE
-    "${NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_LLVM_TRIPLE}")
-
-# Select a processor.
-if(NOT CMAKE_SYSTEM_PROCESSOR)
-  set(CMAKE_SYSTEM_PROCESSOR "${NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_PROC}")
-endif()
-
-# If the user specified both an ABI and a processor then they might not match.
-if(NOT NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_PROC STREQUAL CMAKE_SYSTEM_PROCESSOR)
-  message(FATAL_ERROR "Android: The specified CMAKE_ANDROID_ARCH_ABI='${CMAKE_ANDROID_ARCH_ABI}' and CMAKE_SYSTEM_PROCESSOR='${CMAKE_SYSTEM_PROCESSOR}' is not a valid combination.")
-endif()
-
-# Select an API.
-if(CMAKE_SYSTEM_VERSION)
-  set(_ANDROID_API_VAR CMAKE_SYSTEM_VERSION)
-elseif(CMAKE_ANDROID_API)
-  set(CMAKE_SYSTEM_VERSION "${CMAKE_ANDROID_API}")
-  set(_ANDROID_API_VAR CMAKE_ANDROID_API)
-elseif(_ANDROID_SYSROOT_API)
-  set(CMAKE_SYSTEM_VERSION "${_ANDROID_SYSROOT_API}")
-  set(_ANDROID_API_VAR CMAKE_SYSROOT)
-elseif(_ANDROID_STANDALONE_TOOLCHAIN_API)
-  set(CMAKE_SYSTEM_VERSION "${_ANDROID_STANDALONE_TOOLCHAIN_API}")
-endif()
-if(CMAKE_SYSTEM_VERSION)
-  if(CMAKE_ANDROID_API AND NOT "x${CMAKE_ANDROID_API}" STREQUAL "x${CMAKE_SYSTEM_VERSION}")
-    message(FATAL_ERROR
-      "Android: The API specified by CMAKE_ANDROID_API='${CMAKE_ANDROID_API}' is not consistent with CMAKE_SYSTEM_VERSION='${CMAKE_SYSTEM_VERSION}'."
-      )
-  endif()
-  if(_ANDROID_SYSROOT_API)
-    foreach(v CMAKE_ANDROID_API CMAKE_SYSTEM_VERSION)
-      if(${v} AND NOT "x${_ANDROID_SYSROOT_API}" STREQUAL "x${${v}}")
-        message(FATAL_ERROR
-          "Android: The API specified by ${v}='${${v}}' is not consistent with CMAKE_SYSROOT:\n"
-          "  ${CMAKE_SYSROOT}"
-          )
-      endif()
-    endforeach()
-  endif()
-  if(CMAKE_ANDROID_NDK)
-    if (_INCLUDED_PLATFORMS)
-      if(CMAKE_SYSTEM_VERSION GREATER NDK_MAX_PLATFORM_LEVEL OR
-         CMAKE_SYSTEM_VERSION LESS NDK_MIN_PLATFORM_LEVEL)
-        message(FATAL_ERROR
-          "Android: The API level ${CMAKE_SYSTEM_VERSION} is not supported by the NDK.\n"
-          "Choose one in the range of [${NDK_MIN_PLATFORM_LEVEL}, ${NDK_MAX_PLATFORM_LEVEL}]."
-        )
-      endif()
-    else()
-      if(NOT IS_DIRECTORY "${CMAKE_ANDROID_NDK}/platforms/android-${CMAKE_SYSTEM_VERSION}")
-        message(FATAL_ERROR
-          "Android: The API specified by ${_ANDROID_API_VAR}='${${_ANDROID_API_VAR}}' does not exist in the NDK.  "
-          "The directory:\n"
-          "  ${CMAKE_ANDROID_NDK}/platforms/android-${CMAKE_SYSTEM_VERSION}\n"
-          "does not exist."
-          )
-      endif()
-    endif()
-  endif()
-elseif(CMAKE_ANDROID_NDK)
-  if (_INCLUDED_PLATFORMS)
-    set(CMAKE_SYSTEM_VERSION ${NDK_MIN_PLATFORM_LEVEL})
-    # And for LP64 we need to pull up to 21. No diagnostic is provided here because
-    # minSdkVersion < 21 is valid for the project even though it may not be for this
-    # ABI.
-    if(CMAKE_ANDROID_ARCH_ABI MATCHES "64(-v8a)?$" AND CMAKE_SYSTEM_VERSION LESS 21)
-      set(CMAKE_SYSTEM_VERSION 21)
-    endif()
-  else()
-    file(GLOB _ANDROID_APIS_1 RELATIVE "${CMAKE_ANDROID_NDK}/platforms" "${CMAKE_ANDROID_NDK}/platforms/android-[0-9]")
-    file(GLOB _ANDROID_APIS_2 RELATIVE "${CMAKE_ANDROID_NDK}/platforms" "${CMAKE_ANDROID_NDK}/platforms/android-[0-9][0-9]")
-    list(SORT _ANDROID_APIS_1)
-    list(SORT _ANDROID_APIS_2)
-    set(_ANDROID_APIS ${_ANDROID_APIS_1} ${_ANDROID_APIS_2})
-    unset(_ANDROID_APIS_1)
-    unset(_ANDROID_APIS_2)
-    if(_ANDROID_APIS STREQUAL "")
-      message(FATAL_ERROR
-        "Android: No APIs found in the NDK.  No\n"
-        "  ${CMAKE_ANDROID_NDK}/platforms/android-*\n"
-        "directories exist."
-        )
-    endif()
-    string(REPLACE "android-" "" _ANDROID_APIS "${_ANDROID_APIS}")
-    list(REVERSE _ANDROID_APIS)
-    list(GET _ANDROID_APIS 0 CMAKE_SYSTEM_VERSION)
-    unset(_ANDROID_APIS)
-  endif()
-endif()
-if(NOT CMAKE_SYSTEM_VERSION MATCHES "^[0-9]+$")
-  message(FATAL_ERROR "Android: The API specified by CMAKE_SYSTEM_VERSION='${CMAKE_SYSTEM_VERSION}' is not an integer.")
-endif()
-
-if(CMAKE_ANDROID_NDK AND NOT DEFINED CMAKE_ANDROID_NDK_DEPRECATED_HEADERS)
-  if(IS_DIRECTORY "${CMAKE_ANDROID_NDK}/sysroot/usr/include/${CMAKE_ANDROID_ARCH_TRIPLE}")
-    # Unified headers exist so we use them by default.
-    set(CMAKE_ANDROID_NDK_DEPRECATED_HEADERS 0)
-  else()
-    # Unified headers do not exist so use the deprecated headers.
-    set(CMAKE_ANDROID_NDK_DEPRECATED_HEADERS 1)
-  endif()
-endif()
-
-# Save the Android-specific information in CMakeSystem.cmake.
-set(CMAKE_SYSTEM_CUSTOM_CODE "
-set(CMAKE_ANDROID_NDK \"${CMAKE_ANDROID_NDK}\")
-set(CMAKE_ANDROID_STANDALONE_TOOLCHAIN \"${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}\")
-set(CMAKE_ANDROID_ARCH \"${CMAKE_ANDROID_ARCH}\")
-set(CMAKE_ANDROID_ARCH_ABI \"${CMAKE_ANDROID_ARCH_ABI}\")
-")
-
-if(CMAKE_ANDROID_NDK)
-  string(APPEND CMAKE_SYSTEM_CUSTOM_CODE
-    "set(CMAKE_ANDROID_ARCH_TRIPLE \"${CMAKE_ANDROID_ARCH_TRIPLE}\")\n"
-    "set(CMAKE_ANDROID_ARCH_LLVM_TRIPLE \"${CMAKE_ANDROID_ARCH_LLVM_TRIPLE}\")\n"
-    "set(CMAKE_ANDROID_NDK_DEPRECATED_HEADERS \"${CMAKE_ANDROID_NDK_DEPRECATED_HEADERS}\")\n"
-    "set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG \"${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}\")\n"
-    "set(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED \"${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}\")\n"
-    )
-endif()
-
-# Select an ARM variant.
-if(CMAKE_ANDROID_ARCH_ABI MATCHES "^armeabi")
-  if(CMAKE_ANDROID_ARM_MODE)
-    set(CMAKE_ANDROID_ARM_MODE 1)
-  else()
-    set(CMAKE_ANDROID_ARM_MODE 0)
-  endif()
-  string(APPEND CMAKE_SYSTEM_CUSTOM_CODE
-    "set(CMAKE_ANDROID_ARM_MODE \"${CMAKE_ANDROID_ARM_MODE}\")\n"
-    )
-elseif(DEFINED CMAKE_ANDROID_ARM_MODE)
-  message(FATAL_ERROR "Android: CMAKE_ANDROID_ARM_MODE is set but is valid only for 'armeabi' architectures.")
-endif()
-
-if(CMAKE_ANDROID_ARCH_ABI STREQUAL "armeabi-v7a")
-  if(CMAKE_ANDROID_ARM_NEON)
-    set(CMAKE_ANDROID_ARM_NEON 1)
-  else()
-    set(CMAKE_ANDROID_ARM_NEON 0)
-  endif()
-  string(APPEND CMAKE_SYSTEM_CUSTOM_CODE
-    "set(CMAKE_ANDROID_ARM_NEON \"${CMAKE_ANDROID_ARM_NEON}\")\n"
-    )
-elseif(DEFINED CMAKE_ANDROID_ARM_NEON)
-  message(FATAL_ERROR "Android: CMAKE_ANDROID_ARM_NEON is set but is valid only for 'armeabi-v7a' architecture.")
-endif()
-
-# Report the chosen architecture.
-message(STATUS "Android: Targeting API '${CMAKE_SYSTEM_VERSION}' with architecture '${CMAKE_ANDROID_ARCH}', ABI '${CMAKE_ANDROID_ARCH_ABI}', and processor '${CMAKE_SYSTEM_PROCESSOR}'")
-
-cmake_policy(POP)
-
-# Include the NDK hook.
-# It can be used by NDK to inject necessary fixes for an earlier cmake.
-if(CMAKE_ANDROID_NDK)
-  include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/post/Android-Determine.cmake OPTIONAL)
-endif()
diff --git a/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake b/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake
deleted file mode 100644
index 96228cc..0000000
--- a/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake
+++ /dev/null
@@ -1,67 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-# When CMAKE_SYSTEM_NAME is "Android", CMakeSystemSpecificInitialize loads this
-# module.
-
-# Include the NDK hook.
-# It can be used by NDK to inject necessary fixes for an earlier cmake.
-if(CMAKE_ANDROID_NDK)
-  include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/pre/Android-Initialize.cmake OPTIONAL)
-endif()
-
-# Support for NVIDIA Nsight Tegra Visual Studio Edition was previously
-# implemented in the CMake VS IDE generators.  Avoid interfering with
-# that functionality for now.  Later we may try to integrate this.
-if(CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android")
-  return()
-endif()
-
-# Commonly used Android toolchain files that pre-date CMake upstream support
-# set CMAKE_SYSTEM_VERSION to 1.  Avoid interfering with them.
-if(CMAKE_SYSTEM_VERSION EQUAL 1)
-  return()
-endif()
-
-set(CMAKE_BUILD_TYPE_INIT "RelWithDebInfo")
-
-# Skip sysroot selection if the NDK has a unified toolchain.
-if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
-  return()
-endif()
-
-# Natively compiling on an Android host doesn't use the NDK cross-compilation
-# tools.
-if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Android")
-  return()
-endif()
-
-if(NOT CMAKE_SYSROOT)
-  if(CMAKE_ANDROID_NDK)
-    set(CMAKE_SYSROOT "${CMAKE_ANDROID_NDK}/platforms/android-${CMAKE_SYSTEM_VERSION}/arch-${CMAKE_ANDROID_ARCH}")
-    if(NOT CMAKE_ANDROID_NDK_DEPRECATED_HEADERS)
-      set(CMAKE_SYSROOT_COMPILE "${CMAKE_ANDROID_NDK}/sysroot")
-    endif()
-  elseif(CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
-    set(CMAKE_SYSROOT "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot")
-  endif()
-endif()
-
-if(CMAKE_SYSROOT)
-  if(NOT IS_DIRECTORY "${CMAKE_SYSROOT}")
-    message(FATAL_ERROR
-      "Android: The system root directory needed for the selected Android version and architecture does not exist:\n"
-      "  ${CMAKE_SYSROOT}\n"
-      )
-  endif()
-else()
-  message(FATAL_ERROR
-    "Android: No CMAKE_SYSROOT was selected."
-    )
-endif()
-
-# Include the NDK hook.
-# It can be used by NDK to inject necessary fixes for an earlier cmake.
-if(CMAKE_ANDROID_NDK)
-  include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/post/Android-Initialize.cmake OPTIONAL)
-endif()
diff --git a/share/cmake-3.18/Modules/Platform/Android.cmake b/share/cmake-3.18/Modules/Platform/Android.cmake
deleted file mode 100644
index e4b9a09..0000000
--- a/share/cmake-3.18/Modules/Platform/Android.cmake
+++ /dev/null
@@ -1,92 +0,0 @@
-# Include the NDK hook.
-# It can be used by NDK to inject necessary fixes for an earlier cmake.
-if(CMAKE_ANDROID_NDK)
-  include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/pre/Android.cmake OPTIONAL)
-endif()
-
-include(Platform/Linux)
-
-set(ANDROID 1)
-
-# Natively compiling on an Android host doesn't need these flags to be reset.
-if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Android")
-  return()
-endif()
-
-# Conventionally Android does not use versioned soname
-# But in modern versions it is acceptable
-if(NOT DEFINED CMAKE_PLATFORM_NO_VERSIONED_SONAME)
-  set(CMAKE_PLATFORM_NO_VERSIONED_SONAME 1)
-endif()
-
-# Android reportedly ignores RPATH, and we cannot predict the install
-# location anyway.
-set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "")
-
-# Nsight Tegra Visual Studio Edition takes care of
-# prefixing library names with '-l'.
-if(CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android")
-  set(CMAKE_LINK_LIBRARY_FLAG "")
-endif()
-
-# Commonly used Android toolchain files that pre-date CMake upstream support
-# set CMAKE_SYSTEM_VERSION to 1.  Avoid interfering with them.
-if(CMAKE_SYSTEM_VERSION EQUAL 1)
-  return()
-endif()
-
-if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
-  # Tell CMake not to search host sysroots for headers/libraries.
-
-  # All paths added to CMAKE_SYSTEM_*_PATH below will be rerooted under
-  # CMAKE_FIND_ROOT_PATH. This is set because:
-  # 1. Users may structure their libraries in a way similar to NDK. When they do that,
-  #    they can simply append another path to CMAKE_FIND_ROOT_PATH.
-  # 2. CMAKE_FIND_ROOT_PATH must be non-empty for CMAKE_FIND_ROOT_PATH_MODE_* == ONLY
-  #    to be meaningful. https://github.com/android-ndk/ndk/issues/890
-  list(APPEND CMAKE_FIND_ROOT_PATH "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/sysroot")
-
-  # Allow users to override these values in case they want more strict behaviors.
-  # For example, they may want to prevent the NDK's libz from being picked up so
-  # they can use their own.
-  # https://github.com/android-ndk/ndk/issues/517
-  if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PROGRAM)
-    set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-  endif()
-
-  if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_LIBRARY)
-    set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-  endif()
-
-  if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_INCLUDE)
-    set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-  endif()
-
-  if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PACKAGE)
-    set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
-  endif()
-
-  # Don't search paths in PATH environment variable.
-  if(NOT DEFINED CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH)
-    set(CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH OFF)
-  endif()
-
-  # Allows CMake to find headers in the architecture-specific include directories.
-  set(CMAKE_LIBRARY_ARCHITECTURE "${CMAKE_ANDROID_ARCH_TRIPLE}")
-
-  # Instructs CMake to search the correct API level for libraries.
-  # Besides the paths like <root>/<prefix>/lib/<arch>, cmake also searches <root>/<prefix>.
-  # So we can add the API level specific directory directly.
-  # https://github.com/android/ndk/issues/929
-  list(PREPEND CMAKE_SYSTEM_PREFIX_PATH
-    "/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/${CMAKE_SYSTEM_VERSION}"
-    )
-
-  list(APPEND CMAKE_SYSTEM_PROGRAM_PATH "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin")
-endif()
-
-# Include the NDK hook.
-# It can be used by NDK to inject necessary fixes for an earlier cmake.
-if(CMAKE_ANDROID_NDK)
-  include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/post/Android.cmake OPTIONAL)
-endif()
diff --git a/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler-NDK.cmake b/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler-NDK.cmake
deleted file mode 100644
index f56e1d5..0000000
--- a/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler-NDK.cmake
+++ /dev/null
@@ -1,271 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-# In Android NDK r19 and above there is a single clang toolchain.
-if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
-  if(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION AND NOT CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION STREQUAL "clang")
-    message(FATAL_ERROR
-      "Android: The CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION value '${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION}' "
-      "is not supported by this NDK.  It must be 'clang' or not set at all."
-      )
-  endif()
-  message(STATUS "Android: Selected unified Clang toolchain")
-  set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "clang")
-  set(_ANDROID_TOOL_C_COMPILER "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin/clang${_ANDROID_HOST_EXT}")
-  set(_ANDROID_TOOL_C_TOOLCHAIN_MACHINE "${CMAKE_ANDROID_ARCH_TRIPLE}")
-  set(_ANDROID_TOOL_C_TOOLCHAIN_VERSION "")
-  set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN "")
-  set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin/${CMAKE_ANDROID_ARCH_TRIPLE}-")
-  set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "${_ANDROID_HOST_EXT}")
-  set(_ANDROID_TOOL_CXX_COMPILER "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin/clang++${_ANDROID_HOST_EXT}")
-  set(_ANDROID_TOOL_CXX_TOOLCHAIN_MACHINE "${CMAKE_ANDROID_ARCH_TRIPLE}")
-  set(_ANDROID_TOOL_CXX_TOOLCHAIN_VERSION "")
-  set(_ANDROID_TOOL_CXX_COMPILER_EXTERNAL_TOOLCHAIN "")
-  set(_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin/${CMAKE_ANDROID_ARCH_TRIPLE}-")
-  set(_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX "${_ANDROID_HOST_EXT}")
-  set(_CMAKE_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_ARCH_TRIPLE}-")
-  return()
-endif()
-
-# In Android NDK releases there is build system toolchain selection logic in
-# these files:
-#
-# * <ndk>/build/core/init.mk
-# * <ndk>/build/core/setup-toolchain.mk
-# * <ndk>/[build/core/]toolchains/<toolchain>/{config.mk,setup.mk}
-#
-# We parse information out of the ``config.mk`` and ``setup.mk`` files below.
-#
-# There is also a "toolchains" directory with the prebuilt toolchains themselves:
-#
-# * <triple-or-arch>-<gcc-version>/prebuilt/<host>/bin/<triple>-gcc(.exe)?
-#   The gcc compiler to be invoked.
-#
-# * llvm*/prebuilt/<host>/bin/clang
-#   The clang compiler to be invoked with flags:
-#     -target <triple>
-#     -gcc-toolchain <ndk>/toolchains/<triple-or-arch>-<gcc-version>
-
-# Glob available toolchains in the NDK, restricted by any version request.
-if(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION STREQUAL "clang")
-  set(_ANDROID_TOOL_PATTERNS "*-clang" "*-clang[0-9].[0-9]")
-elseif(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION)
-  if(NOT CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION MATCHES "^(clang)?[0-9]\\.[0-9]$")
-    message(FATAL_ERROR
-      "Android: The CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION value '${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION}' "
-      "is not one of the allowed forms:\n"
-      "  <major>.<minor>       = GCC of specified version\n"
-      "  clang<major>.<minor>  = Clang of specified version\n"
-      "  clang                 = Clang of most recent available version\n"
-      )
-  endif()
-  set(_ANDROID_TOOL_PATTERNS "*-${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION}")
-else()
-  # If we can find any gcc toolchains then use one by default.
-  # Otherwise we look for clang toolchains (e.g. NDK r18+).
-  file(GLOB _ANDROID_CONFIG_MKS_FOR_GCC
-    "${CMAKE_ANDROID_NDK}/build/core/toolchains/*-[0-9].[0-9]/config.mk"
-    "${CMAKE_ANDROID_NDK}/toolchains/*-[0-9].[0-9]/config.mk"
-    )
-  if(_ANDROID_CONFIG_MKS_FOR_GCC)
-    set(_ANDROID_TOOL_PATTERNS "*-[0-9].[0-9]")
-  else()
-    set(_ANDROID_TOOL_PATTERNS "*-clang")
-  endif()
-  unset(_ANDROID_CONFIG_MKS_FOR_GCC)
-endif()
-set(_ANDROID_CONFIG_MK_PATTERNS)
-foreach(base "build/core/toolchains" "toolchains")
-  foreach(pattern IN LISTS _ANDROID_TOOL_PATTERNS)
-    list(APPEND _ANDROID_CONFIG_MK_PATTERNS
-      "${CMAKE_ANDROID_NDK}/${base}/${pattern}/config.mk"
-      )
-  endforeach()
-endforeach()
-unset(_ANDROID_TOOL_PATTERNS)
-file(GLOB _ANDROID_CONFIG_MKS ${_ANDROID_CONFIG_MK_PATTERNS})
-unset(_ANDROID_CONFIG_MK_PATTERNS)
-
-# Find the newest toolchain version matching the ABI.
-set(_ANDROID_TOOL_NAME "")
-set(_ANDROID_TOOL_VERS 0)
-set(_ANDROID_TOOL_VERS_NDK "")
-set(_ANDROID_TOOL_SETUP_MK "")
-foreach(config_mk IN LISTS _ANDROID_CONFIG_MKS)
-  # Check that the toolchain matches the ABI.
-  file(STRINGS "${config_mk}" _ANDROID_TOOL_ABIS REGEX "^TOOLCHAIN_ABIS :=.* ${CMAKE_ANDROID_ARCH_ABI}( |$)")
-  if(NOT _ANDROID_TOOL_ABIS)
-    continue()
-  endif()
-  unset(_ANDROID_TOOL_ABIS)
-
-  # Check the version.
-  if("${config_mk}" MATCHES [[/([^/]+-((clang)?([0-9]\.[0-9]|)))/config.mk$]])
-    set(_ANDROID_CUR_NAME "${CMAKE_MATCH_1}")
-    set(_ANDROID_CUR_VERS "${CMAKE_MATCH_4}")
-    set(_ANDROID_CUR_VERS_NDK "${CMAKE_MATCH_2}")
-    if(_ANDROID_TOOL_VERS STREQUAL "")
-      # already the latest possible
-    elseif(_ANDROID_CUR_VERS STREQUAL "" OR _ANDROID_CUR_VERS VERSION_GREATER _ANDROID_TOOL_VERS)
-      set(_ANDROID_TOOL_NAME "${_ANDROID_CUR_NAME}")
-      set(_ANDROID_TOOL_VERS "${_ANDROID_CUR_VERS}")
-      set(_ANDROID_TOOL_VERS_NDK "${_ANDROID_CUR_VERS_NDK}")
-      string(REPLACE "/config.mk" "/setup.mk" _ANDROID_TOOL_SETUP_MK "${config_mk}")
-    endif()
-    unset(_ANDROID_CUR_TOOL)
-    unset(_ANDROID_CUR_VERS)
-    unset(_ANDROID_CUR_VERS_NDK)
-  endif()
-endforeach()
-
-# Verify that we have a suitable toolchain.
-if(NOT _ANDROID_TOOL_NAME)
-  if(_ANDROID_CONFIG_MKS)
-    string(REPLACE ";" "\n  " _ANDROID_TOOLS_MSG "after considering:;${_ANDROID_CONFIG_MKS}")
-  else()
-    set(_ANDROID_TOOLS_MSG "")
-  endif()
-  if(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION)
-    string(CONCAT _ANDROID_TOOLS_MSG
-      "of the version specified by CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION:\n"
-      "  ${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION}\n"
-      "${_ANDROID_TOOLS_MSG}")
-  endif()
-  message(FATAL_ERROR
-    "Android: No toolchain for ABI '${CMAKE_ANDROID_ARCH_ABI}' found in the NDK:\n"
-    "  ${CMAKE_ANDROID_NDK}\n"
-    "${_ANDROID_TOOLS_MSG}"
-    )
-endif()
-unset(_ANDROID_CONFIG_MKS)
-
-# For clang toolchains we still need to find a gcc toolchain.
-if(_ANDROID_TOOL_NAME MATCHES "-clang")
-  set(_ANDROID_TOOL_CLANG_NAME "${_ANDROID_TOOL_NAME}")
-  set(_ANDROID_TOOL_CLANG_VERS "${_ANDROID_TOOL_VERS}")
-  set(_ANDROID_TOOL_NAME "")
-  set(_ANDROID_TOOL_VERS "")
-else()
-  set(_ANDROID_TOOL_CLANG_NAME "")
-  set(_ANDROID_TOOL_CLANG_VERS "")
-endif()
-
-# Parse the toolchain setup.mk file to extract information we need.
-# Their content is not standardized across toolchains or NDK versions,
-# so we match known cases.  Note that the parsing is stateful across
-# lines because we need to substitute for some Make variable references.
-if(CMAKE_ANDROID_NDK_TOOLCHAIN_DEBUG)
-  message(STATUS "loading: ${_ANDROID_TOOL_SETUP_MK}")
-endif()
-file(STRINGS "${_ANDROID_TOOL_SETUP_MK}" _ANDROID_TOOL_SETUP REGEX "^(LLVM|TOOLCHAIN)_[A-Z_]+ +:= +.*$")
-unset(_ANDROID_TOOL_SETUP_MK)
-set(_ANDROID_TOOL_PREFIX "")
-set(_ANDROID_TOOL_NAME_ONLY "")
-set(_ANDROID_TOOL_LLVM_NAME "llvm")
-set(_ANDROID_TOOL_LLVM_VERS "")
-foreach(line IN LISTS _ANDROID_TOOL_SETUP)
-  if(CMAKE_ANDROID_NDK_TOOLCHAIN_DEBUG)
-    message(STATUS "setup.mk: ${line}")
-  endif()
-
-  if(line MATCHES [[^TOOLCHAIN_PREFIX +:= +.*/bin/([^$/ ]*) *$]])
-    # We just matched the toolchain prefix with no Make variable references.
-    set(_ANDROID_TOOL_PREFIX "${CMAKE_MATCH_1}")
-  elseif(_ANDROID_TOOL_CLANG_NAME)
-    # For clang toolchains we need to find more information.
-    if(line MATCHES [[^TOOLCHAIN_VERSION +:= +([0-9.]+) *$]])
-      # We just matched the gcc toolchain version number.  Save it for later.
-      set(_ANDROID_TOOL_VERS "${CMAKE_MATCH_1}")
-    elseif(line MATCHES [[^TOOLCHAIN_NAME +:= +(.*\$\(TOOLCHAIN_VERSION\)) *$]])
-      # We just matched the gcc toolchain name with a version number placeholder, so substitute it.
-      # The gcc toolchain version number will have already been extracted from a TOOLCHAIN_VERSION line.
-      string(REPLACE "$(TOOLCHAIN_VERSION)" "${_ANDROID_TOOL_VERS}" _ANDROID_TOOL_NAME "${CMAKE_MATCH_1}")
-    elseif(line MATCHES [[^TOOLCHAIN_NAME +:= +([^$/ ]+) *$]])
-      # We just matched the gcc toolchain name without version number.  Save it for later.
-      set(_ANDROID_TOOL_NAME_ONLY "${CMAKE_MATCH_1}")
-    elseif(line MATCHES [[^TOOLCHAIN_PREFIX +:= +.*/bin/(\$\(TOOLCHAIN_NAME\)-) *$]])
-      # We just matched the toolchain prefix with a name placholder, so substitute it.
-      # The gcc toolchain name will have already been extracted without version number from a TOOLCHAIN_NAME line.
-      string(REPLACE "$(TOOLCHAIN_NAME)" "${_ANDROID_TOOL_NAME_ONLY}" _ANDROID_TOOL_PREFIX "${CMAKE_MATCH_1}")
-    elseif(line MATCHES [[^LLVM_VERSION +:= +([0-9.]+)$]])
-      # We just matched the llvm prebuilt binary toolchain version number.  Save it for later.
-      set(_ANDROID_TOOL_LLVM_VERS "${CMAKE_MATCH_1}")
-    elseif(line MATCHES [[^LLVM_NAME +:= +(llvm-\$\(LLVM_VERSION\)) *$]])
-      # We just matched the llvm prebuilt binary toolchain directory name with a version number placeholder,
-      # so substitute it. The llvm prebuilt binary toolchain version number will have already been extracted
-      # from a LLVM_VERSION line.
-      string(REPLACE "$(LLVM_VERSION)" "${_ANDROID_TOOL_LLVM_VERS}" _ANDROID_TOOL_LLVM_NAME "${CMAKE_MATCH_1}")
-    elseif(line MATCHES [[^LLVM_TOOLCHAIN_PREBUILT_ROOT +:= +\$\(call get-toolchain-root.*,([^$ ]+)\) *$]])
-      # We just matched the llvm prebuilt binary toolchain directory name.
-      set(_ANDROID_TOOL_LLVM_NAME "${CMAKE_MATCH_1}")
-    elseif(line MATCHES [[^TOOLCHAIN_ROOT +:= +\$\(call get-toolchain-root.*,(\$\(TOOLCHAIN_NAME\)-[0-9.]+)\) *$]])
-      # We just matched a placeholder for the name followed by a version number.
-      # The gcc toolchain name will have already been extracted without version number from a TOOLCHAIN_NAME line.
-      # Substitute for the placeholder to get the full gcc toolchain name.
-      string(REPLACE "$(TOOLCHAIN_NAME)" "${_ANDROID_TOOL_NAME_ONLY}" _ANDROID_TOOL_NAME "${CMAKE_MATCH_1}")
-    elseif(line MATCHES [[^TOOLCHAIN_ROOT +:= +\$\(call get-toolchain-root.*,([^$ ]+)\) *$]])
-      # We just matched the full gcc toolchain name without placeholder.
-      set(_ANDROID_TOOL_NAME "${CMAKE_MATCH_1}")
-    endif()
-  endif()
-endforeach()
-unset(_ANDROID_TOOL_NAME_ONLY)
-unset(_ANDROID_TOOL_LLVM_VERS)
-unset(_ANDROID_TOOL_SETUP)
-
-# Fall back to parsing the version and prefix from the tool name.
-if(NOT _ANDROID_TOOL_VERS AND "${_ANDROID_TOOL_NAME}" MATCHES "-([0-9.]+)$")
-  set(_ANDROID_TOOL_VERS "${CMAKE_MATCH_1}")
-endif()
-if(NOT _ANDROID_TOOL_PREFIX AND "${_ANDROID_TOOL_NAME}" MATCHES "^(.*-)[0-9.]+$")
-  set(_ANDROID_TOOL_PREFIX "${CMAKE_MATCH_1}")
-endif()
-
-# Help CMakeFindBinUtils locate things.
-set(_CMAKE_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_PREFIX}")
-
-set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "${_ANDROID_TOOL_VERS_NDK}")
-
-# _ANDROID_TOOL_PREFIX should now match `gcc -dumpmachine`.
-string(REGEX REPLACE "-$" "" _ANDROID_TOOL_C_TOOLCHAIN_MACHINE "${_ANDROID_TOOL_PREFIX}")
-
-set(_ANDROID_TOOL_C_TOOLCHAIN_VERSION "${_ANDROID_TOOL_VERS}")
-set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_NAME}/prebuilt/${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}/bin/${_ANDROID_TOOL_PREFIX}")
-set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "${_ANDROID_HOST_EXT}")
-
-set(_ANDROID_TOOL_CXX_TOOLCHAIN_MACHINE "${_ANDROID_TOOL_C_TOOLCHAIN_MACHINE}")
-set(_ANDROID_TOOL_CXX_TOOLCHAIN_VERSION "${_ANDROID_TOOL_C_TOOLCHAIN_VERSION}")
-set(_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_C_TOOLCHAIN_PREFIX}")
-set(_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX "${_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX}")
-
-if(_ANDROID_TOOL_CLANG_NAME)
-  message(STATUS "Android: Selected Clang toolchain '${_ANDROID_TOOL_CLANG_NAME}' with GCC toolchain '${_ANDROID_TOOL_NAME}'")
-  set(_ANDROID_TOOL_C_COMPILER "${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_LLVM_NAME}/prebuilt/${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}/bin/clang${_ANDROID_HOST_EXT}")
-  set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN ${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_NAME}/prebuilt/${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG})
-  set(_ANDROID_TOOL_CXX_COMPILER "${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_LLVM_NAME}/prebuilt/${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}/bin/clang++${_ANDROID_HOST_EXT}")
-  set(_ANDROID_TOOL_CXX_COMPILER_EXTERNAL_TOOLCHAIN "${_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN}")
-else()
-  message(STATUS "Android: Selected GCC toolchain '${_ANDROID_TOOL_NAME}'")
-  set(_ANDROID_TOOL_C_COMPILER "${_ANDROID_TOOL_C_TOOLCHAIN_PREFIX}gcc${_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX}")
-  set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN "")
-  set(_ANDROID_TOOL_CXX_COMPILER "${_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX}g++${_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX}")
-  set(_ANDROID_TOOL_CXX_COMPILER_EXTERNAL_TOOLCHAIN "")
-endif()
-
-if(CMAKE_ANDROID_NDK_TOOLCHAIN_DEBUG)
-  message(STATUS "_ANDROID_TOOL_NAME=${_ANDROID_TOOL_NAME}")
-  message(STATUS "_ANDROID_TOOL_VERS=${_ANDROID_TOOL_VERS}")
-  message(STATUS "_ANDROID_TOOL_VERS_NDK=${_ANDROID_TOOL_VERS_NDK}")
-  message(STATUS "_ANDROID_TOOL_PREFIX=${_ANDROID_TOOL_PREFIX}")
-  message(STATUS "_ANDROID_TOOL_CLANG_NAME=${_ANDROID_TOOL_CLANG_NAME}")
-  message(STATUS "_ANDROID_TOOL_CLANG_VERS=${_ANDROID_TOOL_CLANG_VERS}")
-  message(STATUS "_ANDROID_TOOL_LLVM_NAME=${_ANDROID_TOOL_LLVM_NAME}")
-endif()
-
-unset(_ANDROID_TOOL_NAME)
-unset(_ANDROID_TOOL_VERS)
-unset(_ANDROID_TOOL_VERS_NDK)
-unset(_ANDROID_TOOL_PREFIX)
-unset(_ANDROID_TOOL_CLANG_NAME)
-unset(_ANDROID_TOOL_CLANG_VERS)
-unset(_ANDROID_TOOL_LLVM_NAME)
diff --git a/share/cmake-3.18/Modules/Platform/Apple-NVIDIA-CUDA.cmake b/share/cmake-3.18/Modules/Platform/Apple-NVIDIA-CUDA.cmake
deleted file mode 100644
index bec3948..0000000
--- a/share/cmake-3.18/Modules/Platform/Apple-NVIDIA-CUDA.cmake
+++ /dev/null
@@ -1,19 +0,0 @@
-include(Platform/Darwin)
-
-set(__IMPLICT_LINKS )
-foreach(dir ${CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES})
-  string(APPEND __IMPLICT_LINKS " -L\"${dir}\"")
-endforeach()
-foreach(lib ${CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES})
-  if(${lib} MATCHES "/")
-    string(APPEND __IMPLICT_LINKS " \"${lib}\"")
-  else()
-    string(APPEND __IMPLICT_LINKS " -l${lib}")
-  endif()
-endforeach()
-
-set(CMAKE_SHARED_LIBRARY_CREATE_CUDA_FLAGS "-shared -Wl,-headerpad_max_install_names")
-set(CMAKE_SHARED_MODULE_CREATE_CUDA_FLAGS "-shared -Wl,-headerpad_max_install_names")
-
-set(CMAKE_CUDA_CREATE_SHARED_LIBRARY "<CMAKE_CUDA_HOST_LINK_LAUNCHER> <CMAKE_SHARED_LIBRARY_CUDA_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CUDA_FLAGS> -o <TARGET> <SONAME_FLAG> <TARGET_INSTALLNAME_DIR><TARGET_SONAME> <OBJECTS> <LINK_LIBRARIES>${__IMPLICT_LINKS}")
-set(CMAKE_CUDA_CREATE_SHARED_MODULE "<CMAKE_CUDA_HOST_LINK_LAUNCHER> <CMAKE_SHARED_LIBRARY_CUDA_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CUDA_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>${__IMPLICT_LINKS}")
diff --git a/share/cmake-3.18/Modules/Platform/CYGWIN-GNU.cmake b/share/cmake-3.18/Modules/Platform/CYGWIN-GNU.cmake
deleted file mode 100644
index 4fa14ce..0000000
--- a/share/cmake-3.18/Modules/Platform/CYGWIN-GNU.cmake
+++ /dev/null
@@ -1,54 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This module is shared by multiple languages; use include blocker.
-if(__CYGWIN_COMPILER_GNU)
-  return()
-endif()
-set(__CYGWIN_COMPILER_GNU 1)
-
-# TODO: Is -Wl,--enable-auto-import now always default?
-string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " -Wl,--enable-auto-import")
-set(CMAKE_CREATE_WIN32_EXE  "-mwindows")
-
-set(CMAKE_GNULD_IMAGE_VERSION
-  "-Wl,--major-image-version,<TARGET_VERSION_MAJOR>,--minor-image-version,<TARGET_VERSION_MINOR>")
-set(CMAKE_GENERATOR_RC windres)
-macro(__cygwin_compiler_gnu lang)
-  # Binary link rules.
-  set(CMAKE_${lang}_CREATE_SHARED_MODULE
-    "<CMAKE_${lang}_COMPILER> <LANGUAGE_COMPILE_FLAGS> <CMAKE_SHARED_MODULE_${lang}_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_MODULE_CREATE_${lang}_FLAGS> -o <TARGET> ${CMAKE_GNULD_IMAGE_VERSION} <OBJECTS> <LINK_LIBRARIES>")
-  set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
-    "<CMAKE_${lang}_COMPILER> <LANGUAGE_COMPILE_FLAGS> <CMAKE_SHARED_LIBRARY_${lang}_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS> -o <TARGET> -Wl,--out-implib,<TARGET_IMPLIB> ${CMAKE_GNULD_IMAGE_VERSION} <OBJECTS> <LINK_LIBRARIES>")
-  set(CMAKE_${lang}_LINK_EXECUTABLE
-    "<CMAKE_${lang}_COMPILER> <FLAGS> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> -Wl,--out-implib,<TARGET_IMPLIB> ${CMAKE_GNULD_IMAGE_VERSION} <LINK_LIBRARIES>")
-
-   # No -fPIC on cygwin
-  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "")
-  set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "")
-  set(_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER NO)
-  set(CMAKE_${lang}_LINK_OPTIONS_PIE "")
-  set(CMAKE_${lang}_LINK_OPTIONS_NO_PIE "")
-  set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "")
-
-  # Initialize C link type selection flags.  These flags are used when
-  # building a shared library, shared module, or executable that links
-  # to other libraries to select whether to use the static or shared
-  # versions of the libraries.
-  foreach(type SHARED_LIBRARY SHARED_MODULE EXE)
-    set(CMAKE_${type}_LINK_STATIC_${lang}_FLAGS "-Wl,-Bstatic")
-    set(CMAKE_${type}_LINK_DYNAMIC_${lang}_FLAGS "-Wl,-Bdynamic")
-  endforeach()
-
-  set(CMAKE_EXE_EXPORTS_${lang}_FLAG "-Wl,--export-all-symbols")
-  # TODO: Is -Wl,--enable-auto-import now always default?
-  string(APPEND CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS " -Wl,--enable-auto-import")
-  set(CMAKE_SHARED_MODULE_CREATE_${lang}_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS}")
-
-  if(NOT CMAKE_RC_COMPILER_INIT)
-    set(CMAKE_RC_COMPILER_INIT windres)
-  endif()
-
-  enable_language(RC)
-endmacro()
diff --git a/share/cmake-3.18/Modules/Platform/CYGWIN.cmake b/share/cmake-3.18/Modules/Platform/CYGWIN.cmake
deleted file mode 100644
index 9b897bd..0000000
--- a/share/cmake-3.18/Modules/Platform/CYGWIN.cmake
+++ /dev/null
@@ -1,74 +0,0 @@
-if("${CMAKE_MINIMUM_REQUIRED_VERSION}" VERSION_LESS "2.8.3.20101214")
-  set(__USE_CMAKE_LEGACY_CYGWIN_WIN32 1)
-endif()
-if(NOT DEFINED WIN32)
-  set(WIN32 0)
-  if(DEFINED __USE_CMAKE_LEGACY_CYGWIN_WIN32)
-    if(NOT DEFINED CMAKE_LEGACY_CYGWIN_WIN32
-        AND DEFINED ENV{CMAKE_LEGACY_CYGWIN_WIN32})
-      set(CMAKE_LEGACY_CYGWIN_WIN32 $ENV{CMAKE_LEGACY_CYGWIN_WIN32})
-    endif()
-    if(CMAKE_LEGACY_CYGWIN_WIN32)
-      message(STATUS "Defining WIN32 under Cygwin due to CMAKE_LEGACY_CYGWIN_WIN32")
-      set(WIN32 1)
-    elseif("x${CMAKE_LEGACY_CYGWIN_WIN32}" STREQUAL "x")
-      message(WARNING "CMake no longer defines WIN32 on Cygwin!"
-        "\n"
-        "(1) If you are just trying to build this project, ignore this warning "
-        "or quiet it by setting CMAKE_LEGACY_CYGWIN_WIN32=0 in your environment or "
-        "in the CMake cache.  "
-        "If later configuration or build errors occur then this project may "
-        "have been written under the assumption that Cygwin is WIN32.  "
-        "In that case, set CMAKE_LEGACY_CYGWIN_WIN32=1 instead."
-        "\n"
-        "(2) If you are developing this project, add the line\n"
-        "  set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required\n"
-        "at the top of your top-level CMakeLists.txt file or set the minimum "
-        "required version of CMake to 2.8.4 or higher.  "
-        "Then teach your project to build on Cygwin without WIN32.")
-    endif()
-  elseif(DEFINED CMAKE_LEGACY_CYGWIN_WIN32)
-    message(AUTHOR_WARNING "CMAKE_LEGACY_CYGWIN_WIN32 ignored because\n"
-      "  cmake_minimum_required(VERSION ${CMAKE_MINIMUM_REQUIRED_VERSION})\n"
-      "is at least 2.8.4.")
-  endif()
-endif()
-if(DEFINED __USE_CMAKE_LEGACY_CYGWIN_WIN32)
-  # Pass WIN32 legacy setting to scripts.
-  if(WIN32)
-    set(ENV{CMAKE_LEGACY_CYGWIN_WIN32} 1)
-  else()
-    set(ENV{CMAKE_LEGACY_CYGWIN_WIN32} 0)
-  endif()
-  unset(__USE_CMAKE_LEGACY_CYGWIN_WIN32)
-endif()
-
-set(CYGWIN 1)
-
-set(CMAKE_SHARED_LIBRARY_PREFIX "cyg")
-set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")
-set(CMAKE_SHARED_MODULE_PREFIX "cyg")
-set(CMAKE_SHARED_MODULE_SUFFIX ".dll")
-set(CMAKE_IMPORT_LIBRARY_PREFIX "lib")
-set(CMAKE_IMPORT_LIBRARY_SUFFIX ".dll.a")
-set(CMAKE_EXECUTABLE_SUFFIX ".exe")          # .exe
-# Modules have a different default prefix that shared libs.
-set(CMAKE_MODULE_EXISTS 1)
-
-set(CMAKE_FIND_LIBRARY_PREFIXES "lib")
-set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a")
-
-# Shared libraries on cygwin can be named with their version number.
-set(CMAKE_SHARED_LIBRARY_NAME_WITH_VERSION 1)
-
-include(Platform/UnixPaths)
-
-# Windows API on Cygwin
-list(APPEND CMAKE_SYSTEM_INCLUDE_PATH
-  /usr/include/w32api
-  )
-
-# Windows API on Cygwin
-list(APPEND CMAKE_SYSTEM_LIBRARY_PATH
-  /usr/lib/w32api
-  )
diff --git a/share/cmake-3.18/Modules/Platform/Darwin-Initialize.cmake b/share/cmake-3.18/Modules/Platform/Darwin-Initialize.cmake
deleted file mode 100644
index 80e9a40..0000000
--- a/share/cmake-3.18/Modules/Platform/Darwin-Initialize.cmake
+++ /dev/null
@@ -1,301 +0,0 @@
-# Ask xcode-select where to find /Developer or fall back to ancient location.
-execute_process(COMMAND xcode-select -print-path
-  OUTPUT_VARIABLE _stdout
-  OUTPUT_STRIP_TRAILING_WHITESPACE
-  ERROR_VARIABLE _stderr
-  RESULT_VARIABLE _failed)
-if(NOT _failed AND IS_DIRECTORY ${_stdout})
-  set(OSX_DEVELOPER_ROOT ${_stdout})
-elseif(IS_DIRECTORY "/Developer")
-  set(OSX_DEVELOPER_ROOT "/Developer")
-else()
-  set(OSX_DEVELOPER_ROOT "")
-endif()
-
-execute_process(COMMAND sw_vers -productVersion
-  OUTPUT_VARIABLE CURRENT_OSX_VERSION
-  OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-# Save CMAKE_OSX_ARCHITECTURES from the environment.
-set(CMAKE_OSX_ARCHITECTURES "$ENV{CMAKE_OSX_ARCHITECTURES}" CACHE STRING
-  "Build architectures for OSX")
-
-# macOS, iOS, tvOS, and watchOS should lookup compilers from
-# Platform/Apple-${CMAKE_CXX_COMPILER_ID}-<LANG>
-set(CMAKE_EFFECTIVE_SYSTEM_NAME "Apple")
-
-#----------------------------------------------------------------------------
-# _CURRENT_OSX_VERSION - as a two-component string: 10.5, 10.6, ...
-#
-string(REGEX REPLACE "^([0-9]+\\.[0-9]+).*$" "\\1"
-  _CURRENT_OSX_VERSION "${CURRENT_OSX_VERSION}")
-
-#----------------------------------------------------------------------------
-# CMAKE_OSX_DEPLOYMENT_TARGET
-
-# Set cache variable - end user may change this during ccmake or cmake-gui configure.
-if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND _CURRENT_OSX_VERSION VERSION_GREATER 10.3)
-  set(CMAKE_OSX_DEPLOYMENT_TARGET "$ENV{MACOSX_DEPLOYMENT_TARGET}" CACHE STRING
-    "Minimum OS X version to target for deployment (at runtime); newer APIs weak linked. Set to empty string for default value.")
-endif()
-
-#----------------------------------------------------------------------------
-# CMAKE_OSX_SYSROOT
-
-if(CMAKE_OSX_SYSROOT)
-  # Use the existing value without further computation to choose a default.
-  set(_CMAKE_OSX_SYSROOT_DEFAULT "${CMAKE_OSX_SYSROOT}")
-elseif(NOT "x$ENV{SDKROOT}" STREQUAL "x" AND
-        (NOT "x$ENV{SDKROOT}" MATCHES "/" OR IS_DIRECTORY "$ENV{SDKROOT}"))
-  # Use the value of SDKROOT from the environment.
-  set(_CMAKE_OSX_SYSROOT_DEFAULT "$ENV{SDKROOT}")
-elseif(CMAKE_SYSTEM_NAME STREQUAL iOS)
-  set(_CMAKE_OSX_SYSROOT_DEFAULT "iphoneos")
-elseif(CMAKE_SYSTEM_NAME STREQUAL tvOS)
-  set(_CMAKE_OSX_SYSROOT_DEFAULT "appletvos")
-elseif(CMAKE_SYSTEM_NAME STREQUAL watchOS)
-  set(_CMAKE_OSX_SYSROOT_DEFAULT "watchos")
-elseif("${CMAKE_GENERATOR}" MATCHES Xcode
-       OR CMAKE_OSX_DEPLOYMENT_TARGET
-       OR CMAKE_OSX_ARCHITECTURES MATCHES "[^;]"
-       OR NOT EXISTS "/usr/include/sys/types.h")
-  # Find installed SDKs in either Xcode-4.3+ or pre-4.3 SDKs directory.
-  set(_CMAKE_OSX_SDKS_DIR "")
-  if(OSX_DEVELOPER_ROOT)
-    foreach(d Platforms/MacOSX.platform/Developer/SDKs SDKs)
-      file(GLOB _CMAKE_OSX_SDKS ${OSX_DEVELOPER_ROOT}/${d}/*)
-      if(_CMAKE_OSX_SDKS)
-        set(_CMAKE_OSX_SDKS_DIR ${OSX_DEVELOPER_ROOT}/${d})
-        break()
-      endif()
-    endforeach()
-  endif()
-
-  if(_CMAKE_OSX_SDKS_DIR)
-    # Select SDK for current OSX version accounting for the known
-    # specially named SDKs.
-    set(_CMAKE_OSX_SDKS_VER_SUFFIX_10.4 "u")
-    set(_CMAKE_OSX_SDKS_VER_SUFFIX_10.3 ".9")
-
-    # find the latest SDK
-    set(_CMAKE_OSX_LATEST_SDK_VERSION "0.0")
-    file(GLOB _CMAKE_OSX_SDKS RELATIVE "${_CMAKE_OSX_SDKS_DIR}" "${_CMAKE_OSX_SDKS_DIR}/MacOSX*.sdk")
-    foreach(_SDK ${_CMAKE_OSX_SDKS})
-      if(_SDK MATCHES "MacOSX([0-9]+\\.[0-9]+)[^/]*\\.sdk" AND CMAKE_MATCH_1 VERSION_GREATER ${_CMAKE_OSX_LATEST_SDK_VERSION})
-        set(_CMAKE_OSX_LATEST_SDK_VERSION "${CMAKE_MATCH_1}")
-      endif()
-    endforeach()
-
-    # pick an SDK that works
-    set(_CMAKE_OSX_SYSROOT_DEFAULT)
-    foreach(ver ${CMAKE_OSX_DEPLOYMENT_TARGET}
-                ${_CURRENT_OSX_VERSION}
-                ${_CMAKE_OSX_LATEST_SDK_VERSION})
-      set(_CMAKE_OSX_DEPLOYMENT_TARGET ${ver})
-      set(_CMAKE_OSX_SDKS_VER ${_CMAKE_OSX_DEPLOYMENT_TARGET}${_CMAKE_OSX_SDKS_VER_SUFFIX_${_CMAKE_OSX_DEPLOYMENT_TARGET}})
-      set(_CMAKE_OSX_SYSROOT_CHECK "${_CMAKE_OSX_SDKS_DIR}/MacOSX${_CMAKE_OSX_SDKS_VER}.sdk")
-      if(IS_DIRECTORY "${_CMAKE_OSX_SYSROOT_CHECK}")
-        set(_CMAKE_OSX_SYSROOT_DEFAULT "${_CMAKE_OSX_SYSROOT_CHECK}")
-        break()
-      endif()
-    endforeach()
-
-    if(NOT CMAKE_CROSSCOMPILING AND NOT CMAKE_OSX_DEPLOYMENT_TARGET AND _CURRENT_OSX_VERSION VERSION_LESS _CMAKE_OSX_DEPLOYMENT_TARGET)
-      set(CMAKE_OSX_DEPLOYMENT_TARGET ${_CURRENT_OSX_VERSION} CACHE STRING
-        "Minimum OS X version to target for deployment (at runtime); newer APIs weak linked. Set to empty string for default value." FORCE)
-    endif()
-  else()
-    # Assume developer files are in root (such as Xcode 4.5 command-line tools).
-    set(_CMAKE_OSX_SYSROOT_DEFAULT "")
-  endif()
-endif()
-
-# Set cache variable - end user may change this during ccmake or cmake-gui configure.
-# Choose the type based on the current value.
-set(_CMAKE_OSX_SYSROOT_TYPE STRING)
-foreach(v CMAKE_OSX_SYSROOT _CMAKE_OSX_SYSROOT_DEFAULT)
-  if("x${${v}}" MATCHES "/")
-    set(_CMAKE_OSX_SYSROOT_TYPE PATH)
-    break()
-  endif()
-endforeach()
-set(CMAKE_OSX_SYSROOT "${_CMAKE_OSX_SYSROOT_DEFAULT}" CACHE ${_CMAKE_OSX_SYSROOT_TYPE}
-  "The product will be built against the headers and libraries located inside the indicated SDK.")
-
-# Resolves the SDK name into a path
-function(_apple_resolve_sdk_path sdk_name ret)
-  execute_process(
-    COMMAND xcrun -sdk ${sdk_name} --show-sdk-path
-    OUTPUT_VARIABLE _stdout
-    OUTPUT_STRIP_TRAILING_WHITESPACE
-    ERROR_VARIABLE _stderr
-    RESULT_VARIABLE _failed
-  )
-  set(${ret} "${_stdout}" PARENT_SCOPE)
-endfunction()
-
-function(_apple_resolve_supported_archs_for_sdk_from_system_lib sdk_path ret ret_failed)
-  # Detect the supported SDK architectures by inspecting the main libSystem library.
-  set(common_lib_prefix "${sdk_path}/usr/lib/libSystem")
-  set(system_lib_dylib_path "${common_lib_prefix}.dylib")
-  set(system_lib_tbd_path "${common_lib_prefix}.tbd")
-
-  # Newer SDKs ship text based dylib stub files which contain the architectures supported by the
-  # library in text form.
-  if(EXISTS "${system_lib_tbd_path}")
-    file(STRINGS "${system_lib_tbd_path}" tbd_lines REGEX "^archs: +\\[.+\\]")
-    if(NOT tbd_lines)
-      set(${ret_failed} TRUE PARENT_SCOPE)
-      return()
-    endif()
-
-    # The tbd architectures line looks like the following:
-    # archs:           [ armv7, armv7s, arm64, arm64e ]
-    list(GET tbd_lines 0 first_arch_line)
-    string(REGEX REPLACE
-           "archs: +\\[ (.+) \\]" "\\1" arches_comma_separated "${first_arch_line}")
-    string(STRIP "${arches_comma_separated}" arches_comma_separated)
-    string(REPLACE "," ";" arch_list "${arches_comma_separated}")
-    string(REPLACE " " "" arch_list "${arch_list}")
-    if(NOT arch_list)
-      set(${ret_failed} TRUE PARENT_SCOPE)
-      return()
-    endif()
-    set(${ret} "${arch_list}" PARENT_SCOPE)
-  elseif(EXISTS "${system_lib_dylib_path}")
-    # Old SDKs (Xcode < 7) ship dylib files, use lipo to inspect the supported architectures.
-    # Can't use -archs because the option is not available in older Xcode versions.
-    execute_process(
-      COMMAND lipo -info ${system_lib_dylib_path}
-      OUTPUT_VARIABLE lipo_output
-      OUTPUT_STRIP_TRAILING_WHITESPACE
-      ERROR_VARIABLE _stderr
-      RESULT_VARIABLE _failed
-    )
-    if(_failed OR NOT lipo_output OR NOT lipo_output MATCHES "(Non-fat file:|Architectures in the fat file:)")
-      set(${ret_failed} TRUE PARENT_SCOPE)
-      return()
-    endif()
-
-    # The lipo output looks like the following:
-    # Non-fat file: <path> is architecture: i386
-    # Architectures in the fat file: <path> are: i386 x86_64
-    string(REGEX REPLACE
-           "^(.+)is architecture:(.+)" "\\2" arches_space_separated "${lipo_output}")
-    string(REGEX REPLACE
-            "^(.+)are:(.+)" "\\2" arches_space_separated "${arches_space_separated}")
-
-    # Need to clean up the arches, with Xcode 4.6.3 the output of lipo -info contains some
-    # additional info, e.g.
-    # Architectures in the fat file: <path> are: armv7 (cputype (12) cpusubtype (11))
-    string(REGEX REPLACE
-            "\\(.+\\)" "" arches_space_separated "${arches_space_separated}")
-
-    # The output is space separated.
-    string(STRIP "${arches_space_separated}" arches_space_separated)
-    string(REPLACE " " ";" arch_list "${arches_space_separated}")
-
-    if(NOT arch_list)
-      set(${ret_failed} TRUE PARENT_SCOPE)
-      return()
-    endif()
-    set(${ret} "${arch_list}" PARENT_SCOPE)
-  else()
-    # This shouldn't happen, but keep it for safety.
-    message(WARNING "No way to find architectures for given sdk_path '${sdk_path}'")
-    set(${ret_failed} TRUE PARENT_SCOPE)
-  endif()
-endfunction()
-
-# Handle multi-arch sysroots. Do this before CMAKE_OSX_SYSROOT is
-# transformed into a path, so that we know the sysroot name.
-function(_apple_resolve_multi_arch_sysroots)
-  if(DEFINED CMAKE_APPLE_ARCH_SYSROOTS)
-    return() # Already cached
-  endif()
-
-  list(LENGTH CMAKE_OSX_ARCHITECTURES _num_archs)
-  if(NOT (_num_archs GREATER 1))
-    return() # Only apply to multi-arch
-  endif()
-
-  if(CMAKE_OSX_SYSROOT STREQUAL "macosx")
-    # macOS doesn't have a simulator sdk / sysroot, so there is no need to handle per-sdk arches.
-    return()
-  endif()
-
-  if(IS_DIRECTORY "${CMAKE_OSX_SYSROOT}")
-    if(NOT CMAKE_OSX_SYSROOT STREQUAL _CMAKE_OSX_SYSROOT_DEFAULT)
-      message(WARNING "Can not resolve multi-arch sysroots with CMAKE_OSX_SYSROOT set to path (${CMAKE_OSX_SYSROOT})")
-    endif()
-    return()
-  endif()
-
-  string(REPLACE "os" "simulator" _simulator_sdk ${CMAKE_OSX_SYSROOT})
-  set(_sdks "${CMAKE_OSX_SYSROOT};${_simulator_sdk}")
-  foreach(sdk ${_sdks})
-    _apple_resolve_sdk_path(${sdk} _sdk_path)
-    if(NOT IS_DIRECTORY "${_sdk_path}")
-      message(WARNING "Failed to resolve SDK path for '${sdk}'")
-      continue()
-    endif()
-
-    _apple_resolve_supported_archs_for_sdk_from_system_lib(${_sdk_path} _sdk_archs _failed)
-
-    if(_failed)
-      # Failure to extract supported architectures for an SDK means that the installed SDK is old
-      # and does not provide such information (SDKs that come with Xcode >= 10.x started providing
-      # the information). In such a case, return early, and handle multi-arch builds the old way
-      # (no per-sdk arches).
-      return()
-    endif()
-
-    set(_sdk_archs_${sdk} ${_sdk_archs})
-    set(_sdk_path_${sdk} ${_sdk_path})
-  endforeach()
-
-  foreach(arch ${CMAKE_OSX_ARCHITECTURES})
-    set(_arch_sysroot "")
-    foreach(sdk ${_sdks})
-      list(FIND _sdk_archs_${sdk} ${arch} arch_index)
-      if(NOT arch_index EQUAL -1)
-        set(_arch_sysroot ${_sdk_path_${sdk}})
-        break()
-      endif()
-    endforeach()
-    if(_arch_sysroot)
-      list(APPEND _arch_sysroots ${_arch_sysroot})
-    else()
-      message(WARNING "No SDK found for architecture '${arch}'")
-      list(APPEND _arch_sysroots "${arch}-SDK-NOTFOUND")
-    endif()
-  endforeach()
-
-  set(CMAKE_APPLE_ARCH_SYSROOTS "${_arch_sysroots}" CACHE INTERNAL
-    "Architecture dependent sysroots, one per CMAKE_OSX_ARCHITECTURES")
-endfunction()
-
-_apple_resolve_multi_arch_sysroots()
-
-# Transform CMAKE_OSX_SYSROOT to absolute path
-set(_CMAKE_OSX_SYSROOT_PATH "")
-if(CMAKE_OSX_SYSROOT)
-  if("x${CMAKE_OSX_SYSROOT}" MATCHES "/")
-    # This is a path to the SDK.  Make sure it exists.
-    if(NOT IS_DIRECTORY "${CMAKE_OSX_SYSROOT}")
-      message(WARNING "Ignoring CMAKE_OSX_SYSROOT value:\n ${CMAKE_OSX_SYSROOT}\n"
-        "because the directory does not exist.")
-      set(CMAKE_OSX_SYSROOT "")
-    endif()
-    set(_CMAKE_OSX_SYSROOT_PATH "${CMAKE_OSX_SYSROOT}")
-  else()
-    _apple_resolve_sdk_path(${CMAKE_OSX_SYSROOT} _sdk_path)
-    if(IS_DIRECTORY "${_sdk_path}")
-      set(_CMAKE_OSX_SYSROOT_PATH "${_sdk_path}")
-      # For non-Xcode generators use the path.
-      if(NOT "${CMAKE_GENERATOR}" MATCHES "Xcode")
-        set(CMAKE_OSX_SYSROOT "${_CMAKE_OSX_SYSROOT_PATH}")
-      endif()
-    endif()
-  endif()
-endif()
diff --git a/share/cmake-3.18/Modules/Platform/Darwin.cmake b/share/cmake-3.18/Modules/Platform/Darwin.cmake
deleted file mode 100644
index c6de3b0..0000000
--- a/share/cmake-3.18/Modules/Platform/Darwin.cmake
+++ /dev/null
@@ -1,236 +0,0 @@
-set(APPLE 1)
-
-if(CMAKE_SYSTEM_NAME STREQUAL "iOS" OR CMAKE_SYSTEM_NAME STREQUAL "tvOS" OR CMAKE_SYSTEM_NAME STREQUAL "watchOS")
-  if(NOT DEFINED CMAKE_MACOSX_BUNDLE)
-    set(CMAKE_MACOSX_BUNDLE ON)
-  endif()
-
-  list(APPEND CMAKE_FIND_ROOT_PATH "${_CMAKE_OSX_SYSROOT_PATH}")
-  if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_LIBRARY)
-      set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-  endif()
-  if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_INCLUDE)
-      set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-  endif()
-  if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PACKAGE)
-      set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
-  endif()
-endif()
-
-# Darwin versions:
-#   6.x == Mac OSX 10.2 (Jaguar)
-#   7.x == Mac OSX 10.3 (Panther)
-#   8.x == Mac OSX 10.4 (Tiger)
-#   9.x == Mac OSX 10.5 (Leopard)
-#  10.x == Mac OSX 10.6 (Snow Leopard)
-#  11.x == Mac OSX 10.7 (Lion)
-#  12.x == Mac OSX 10.8 (Mountain Lion)
-string(REGEX REPLACE "^([0-9]+)\\.([0-9]+).*$" "\\1" DARWIN_MAJOR_VERSION "${CMAKE_SYSTEM_VERSION}")
-string(REGEX REPLACE "^([0-9]+)\\.([0-9]+).*$" "\\2" DARWIN_MINOR_VERSION "${CMAKE_SYSTEM_VERSION}")
-
-# Do not use the "-Wl,-search_paths_first" flag with the OSX 10.2 compiler.
-# Done this way because it is too early to do a TRY_COMPILE.
-if(NOT DEFINED HAVE_FLAG_SEARCH_PATHS_FIRST)
-  set(HAVE_FLAG_SEARCH_PATHS_FIRST 0)
-  if("${DARWIN_MAJOR_VERSION}" GREATER 6)
-    set(HAVE_FLAG_SEARCH_PATHS_FIRST 1)
-  endif()
-endif()
-# More desirable, but does not work:
-  #include(CheckCXXCompilerFlag)
-  #CHECK_CXX_COMPILER_FLAG("-Wl,-search_paths_first" HAVE_FLAG_SEARCH_PATHS_FIRST)
-
-set(CMAKE_SHARED_LIBRARY_PREFIX "lib")
-set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib")
-set(CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES ".tbd" ".so")
-set(CMAKE_SHARED_MODULE_PREFIX "lib")
-set(CMAKE_SHARED_MODULE_SUFFIX ".so")
-set(CMAKE_MODULE_EXISTS 1)
-set(CMAKE_DL_LIBS "")
-
-# Enable rpath support for 10.5 and greater where it is known to work.
-if("${DARWIN_MAJOR_VERSION}" GREATER 8)
-  set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
-endif()
-
-foreach(lang C CXX OBJC OBJCXX)
-  set(CMAKE_${lang}_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ")
-  set(CMAKE_${lang}_OSX_CURRENT_VERSION_FLAG "-current_version ")
-  set(CMAKE_${lang}_LINK_FLAGS "-Wl,-headerpad_max_install_names")
-
-  if(HAVE_FLAG_SEARCH_PATHS_FIRST)
-    set(CMAKE_${lang}_LINK_FLAGS "-Wl,-search_paths_first ${CMAKE_${lang}_LINK_FLAGS}")
-  endif()
-
-  set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-dynamiclib -Wl,-headerpad_max_install_names")
-  set(CMAKE_SHARED_MODULE_CREATE_${lang}_FLAGS "-bundle -Wl,-headerpad_max_install_names")
-  set(CMAKE_SHARED_MODULE_LOADER_${lang}_FLAG "-Wl,-bundle_loader,")
-endforeach()
-
-set(CMAKE_PLATFORM_HAS_INSTALLNAME 1)
-set(CMAKE_FIND_LIBRARY_SUFFIXES ".tbd" ".dylib" ".so" ".a")
-
-# hack: if a new cmake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old build tree
-# (where install_name_tool was hardcoded) and where CMAKE_INSTALL_NAME_TOOL isn't in the cache
-# and still cmake didn't fail in CMakeFindBinUtils.cmake (because it isn't rerun)
-# hardcode CMAKE_INSTALL_NAME_TOOL here to install_name_tool, so it behaves as it did before, Alex
-if(NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
-  find_program(CMAKE_INSTALL_NAME_TOOL install_name_tool)
-  mark_as_advanced(CMAKE_INSTALL_NAME_TOOL)
-endif()
-
-# Enable shared library versioning.
-set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-install_name")
-
-if("${_CURRENT_OSX_VERSION}" VERSION_LESS "10.5")
-  # Need to list dependent shared libraries on link line.  When building
-  # with -isysroot (for universal binaries), the linker always looks for
-  # dependent libraries under the sysroot.  Listing them on the link
-  # line works around the problem.
-  set(CMAKE_LINK_DEPENDENT_LIBRARY_FILES 1)
-endif()
-
-foreach(lang C CXX Fortran OBJC OBJCXX)
-  # Xcode does not support -isystem yet.
-  if(XCODE)
-    set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang})
-  endif()
-
-  set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
-    "<CMAKE_${lang}_COMPILER> <LANGUAGE_COMPILE_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS> <LINK_FLAGS> -o <TARGET> <SONAME_FLAG> <TARGET_INSTALLNAME_DIR><TARGET_SONAME> <OBJECTS> <LINK_LIBRARIES>")
-
-  set(CMAKE_${lang}_CREATE_SHARED_MODULE
-      "<CMAKE_${lang}_COMPILER> <LANGUAGE_COMPILE_FLAGS> <CMAKE_SHARED_MODULE_CREATE_${lang}_FLAGS> <LINK_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
-
-  set(CMAKE_${lang}_CREATE_MACOSX_FRAMEWORK
-      "<CMAKE_${lang}_COMPILER> <LANGUAGE_COMPILE_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS> <LINK_FLAGS> -o <TARGET> <SONAME_FLAG> <TARGET_INSTALLNAME_DIR><TARGET_SONAME> <OBJECTS> <LINK_LIBRARIES>")
-
-  # Set default framework search path flag for languages known to use a
-  # preprocessor that may find headers in frameworks.
-  set(CMAKE_${lang}_FRAMEWORK_SEARCH_FLAG -F)
-endforeach()
-
-# default to searching for frameworks first
-if(NOT DEFINED CMAKE_FIND_FRAMEWORK)
-  set(CMAKE_FIND_FRAMEWORK FIRST)
-endif()
-
-# Older OS X linkers do not report their framework search path
-# with -v but "man ld" documents the following locations.
-set(CMAKE_PLATFORM_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
-  ${_CMAKE_OSX_SYSROOT_PATH}/Library/Frameworks
-  ${_CMAKE_OSX_SYSROOT_PATH}/System/Library/Frameworks
-  )
-if(_CMAKE_OSX_SYSROOT_PATH)
-  # Treat some paths as implicit so we do not override the SDK versions.
-  list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
-    /System/Library/Frameworks)
-endif()
-if("${_CURRENT_OSX_VERSION}" VERSION_LESS "10.5")
-  # Older OS X tools had more implicit paths.
-  list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
-    ${_CMAKE_OSX_SYSROOT_PATH}/Network/Library/Frameworks)
-endif()
-
-# set up the default search directories for frameworks
-set(CMAKE_SYSTEM_FRAMEWORK_PATH
-  ~/Library/Frameworks
-  )
-if(_CMAKE_OSX_SYSROOT_PATH)
-  list(APPEND CMAKE_SYSTEM_FRAMEWORK_PATH
-    ${_CMAKE_OSX_SYSROOT_PATH}/Library/Frameworks
-    ${_CMAKE_OSX_SYSROOT_PATH}/Network/Library/Frameworks
-    ${_CMAKE_OSX_SYSROOT_PATH}/System/Library/Frameworks
-    )
-  # add platform developer framework path if exists
-  foreach(_path
-    # Xcode 6
-    ${_CMAKE_OSX_SYSROOT_PATH}/../../Library/Frameworks
-    # Xcode 5 iOS
-    ${_CMAKE_OSX_SYSROOT_PATH}/Developer/Library/Frameworks
-    # Xcode 5 OSX
-    ${_CMAKE_OSX_SYSROOT_PATH}/../../../../../Library/Frameworks
-    )
-    get_filename_component(_abolute_path "${_path}" ABSOLUTE)
-    if(EXISTS "${_abolute_path}")
-      list(APPEND CMAKE_SYSTEM_FRAMEWORK_PATH "${_abolute_path}")
-      break()
-    endif()
-  endforeach()
-
-  if(EXISTS ${_CMAKE_OSX_SYSROOT_PATH}/usr/lib)
-    list(INSERT CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES 0 ${_CMAKE_OSX_SYSROOT_PATH}/usr/lib)
-  endif()
-  if(EXISTS ${_CMAKE_OSX_SYSROOT_PATH}/usr/local/lib)
-    list(INSERT CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES 0 ${_CMAKE_OSX_SYSROOT_PATH}/usr/local/lib)
-  endif()
-endif()
-if (OSX_DEVELOPER_ROOT AND EXISTS "${OSX_DEVELOPER_ROOT}/Library/Frameworks")
-  list(APPEND CMAKE_SYSTEM_FRAMEWORK_PATH
-    ${OSX_DEVELOPER_ROOT}/Library/Frameworks)
-endif()
-list(APPEND CMAKE_SYSTEM_FRAMEWORK_PATH
-  /Library/Frameworks
-  /Network/Library/Frameworks
-  /System/Library/Frameworks)
-
-# Warn about known system mis-configuration case.
-if(CMAKE_OSX_SYSROOT)
-  get_property(_IN_TC GLOBAL PROPERTY IN_TRY_COMPILE)
-  if(NOT _IN_TC AND
-     NOT IS_SYMLINK "${CMAKE_OSX_SYSROOT}/Library/Frameworks"
-     AND IS_SYMLINK "${CMAKE_OSX_SYSROOT}/Library/Frameworks/Frameworks")
-    message(WARNING "The SDK Library/Frameworks path\n"
-      " ${CMAKE_OSX_SYSROOT}/Library/Frameworks\n"
-      "is not set up correctly on this system.  "
-      "This is known to occur when installing Xcode 3.2.6:\n"
-      " http://bugs.python.org/issue14018\n"
-      "The problem may cause build errors that report missing system frameworks.  "
-      "Fix your SDK symlinks to resolve this issue and avoid this warning."
-      )
-  endif()
-endif()
-
-# default to searching for application bundles first
-if(NOT DEFINED CMAKE_FIND_APPBUNDLE)
-  set(CMAKE_FIND_APPBUNDLE FIRST)
-endif()
-# set up the default search directories for application bundles
-set(_apps_paths)
-foreach(_path
-  "~/Applications"
-  "/Applications"
-  "${OSX_DEVELOPER_ROOT}/../Applications" # Xcode 4.3+
-  "${OSX_DEVELOPER_ROOT}/Applications"    # pre-4.3
-  )
-  get_filename_component(_apps "${_path}" ABSOLUTE)
-  if(EXISTS "${_apps}")
-    list(APPEND _apps_paths "${_apps}")
-  endif()
-endforeach()
-if(_apps_paths)
-  list(REMOVE_DUPLICATES _apps_paths)
-endif()
-set(CMAKE_SYSTEM_APPBUNDLE_PATH
-  ${_apps_paths})
-unset(_apps_paths)
-
-include(Platform/UnixPaths)
-if(_CMAKE_OSX_SYSROOT_PATH)
-  if(EXISTS ${_CMAKE_OSX_SYSROOT_PATH}/usr/include)
-    list(INSERT CMAKE_SYSTEM_PREFIX_PATH 0 ${_CMAKE_OSX_SYSROOT_PATH}/usr)
-    foreach(lang C CXX OBJC OBJCXX Swift)
-      list(APPEND _CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT ${_CMAKE_OSX_SYSROOT_PATH}/usr/include)
-    endforeach()
-  endif()
-  if(EXISTS ${_CMAKE_OSX_SYSROOT_PATH}/usr/local/include)
-    list(INSERT CMAKE_SYSTEM_PREFIX_PATH 0 ${_CMAKE_OSX_SYSROOT_PATH}/usr/local)
-    foreach(lang C CXX OBJC OBJCXX Swift)
-      list(APPEND _CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT ${_CMAKE_OSX_SYSROOT_PATH}/usr/local/include)
-    endforeach()
-  endif()
-endif()
-list(APPEND CMAKE_SYSTEM_PREFIX_PATH
-  /sw        # Fink
-  /opt/local # MacPorts
-  )
diff --git a/share/cmake-3.18/Modules/Platform/HP-UX.cmake b/share/cmake-3.18/Modules/Platform/HP-UX.cmake
deleted file mode 100644
index 9572a7e..0000000
--- a/share/cmake-3.18/Modules/Platform/HP-UX.cmake
+++ /dev/null
@@ -1,47 +0,0 @@
-if(NOT DEFINED CMAKE_PLATFORM_REQUIRED_RUNTIME_PATH)
-  set(CMAKE_PLATFORM_REQUIRED_RUNTIME_PATH /usr/lib)
-endif()
-
-if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL "ia64")
-  set(CMAKE_SHARED_LIBRARY_SUFFIX ".sl")          # .so
-  set(CMAKE_FIND_LIBRARY_SUFFIXES ".sl" ".so" ".a")
-  set(CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES ".so")
-endif()
-set(CMAKE_DL_LIBS "dld")
-
-# The HP linker needs to find transitive shared library dependencies
-# in the -L path.  Therefore the runtime path must be added to the
-# link line with -L flags.
-set(CMAKE_SHARED_LIBRARY_LINK_C_WITH_RUNTIME_PATH 1)
-set(CMAKE_LINK_DEPENDENT_LIBRARY_DIRS 1)
-
-# Shared libraries with no builtin soname may not be linked safely by
-# specifying the file path.
-set(CMAKE_PLATFORM_USES_PATH_WHEN_NO_SONAME 1)
-
-# set flags for gcc support
-include(Platform/UnixPaths)
-
-# Look in both 32-bit and 64-bit implict link directories, but tell
-# CMake not to pass the paths to the linker.  The linker will find the
-# library for the proper architecture.  In the future we should detect
-# which path will be used by the linker.  Since the pointer type size
-# CMAKE_SIZEOF_VOID_P is not set until after this file executes, we
-# would need to append to CMAKE_SYSTEM_LIBRARY_PATH at a later point
-# (after CMakeTest(LANG)Compiler.cmake runs for at least one language).
-list(APPEND CMAKE_SYSTEM_LIBRARY_PATH /usr/lib/hpux32)
-list(APPEND CMAKE_SYSTEM_LIBRARY_PATH /usr/lib/hpux64)
-list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
-  /usr/lib/hpux32 /usr/lib/hpux64)
-
-# Initialize C and CXX link type selection flags.  These flags are
-# used when building a shared library, shared module, or executable
-# that links to other libraries to select whether to use the static or
-# shared versions of the libraries.
-foreach(type SHARED_LIBRARY SHARED_MODULE EXE)
-  foreach(lang C CXX)
-    set(CMAKE_${type}_LINK_STATIC_${lang}_FLAGS "-Wl,-a,archive")
-    set(CMAKE_${type}_LINK_DYNAMIC_${lang}_FLAGS "-Wl,-a,default")
-  endforeach()
-endforeach()
-
diff --git a/share/cmake-3.18/Modules/Platform/Haiku.cmake b/share/cmake-3.18/Modules/Platform/Haiku.cmake
deleted file mode 100644
index 7e0af61..0000000
--- a/share/cmake-3.18/Modules/Platform/Haiku.cmake
+++ /dev/null
@@ -1,131 +0,0 @@
-# process only once
-if(HAIKU)
-  return()
-endif()
-
-set(HAIKU 1)
-set(UNIX 1)
-
-set(CMAKE_DL_LIBS "")
-set(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC")
-set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared")
-set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
-set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":")
-set(CMAKE_SHARED_LIBRARY_RPATH_ORIGIN_TOKEN "\$ORIGIN")
-set(CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG "-Wl,-rpath-link,")
-set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,")
-set(CMAKE_EXE_EXPORTS_C_FLAG "-Wl,--export-dynamic")
-
-# Determine, if the C or C++ compiler is configured for a secondary
-# architecture. If so, that will change the search paths we set below. We check
-# whether the compiler's library search paths contain a
-# "/boot/system/develop/lib/<subdir>/", which we assume to be the secondary
-# architecture specific subdirectory and extract the name of the architecture
-# accordingly.
-
-# First of all, find a C or C++ compiler we can run. The "arg1" is necessary
-# here for compilers such as "distcc gcc-x86" or "ccache gcc-x86"
-# TODO See CMakeDetermineCompilerId.cmake for some more things we may want to do.
-if(CMAKE_C_COMPILER)
-  set(__HAIKU_COMPILER ${CMAKE_C_COMPILER})
-  string (STRIP "${CMAKE_C_COMPILER_ARG1}" __HAIKU_COMPILER_FLAGS)
-else()
-  set(__HAIKU_COMPILER ${CMAKE_CXX_COMPILER})
-  string (STRIP "${CMAKE_CXX_COMPILER_ARG1}" __HAIKU_COMPILER_FLAGS)
-endif()
-
-
-execute_process(
-  COMMAND ${__HAIKU_COMPILER} ${__HAIKU_COMPILER_FLAGS} -print-search-dirs
-  OUTPUT_VARIABLE _HAIKU_SEARCH_DIRS
-  RESULT_VARIABLE _HAIKU_SEARCH_DIRS_FOUND
-  OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-string(REGEX MATCH "libraries: =?([^\n]*:)?/boot/system/develop/lib/([^/]*)/?(:?\n+)" _dummy "${_HAIKU_SEARCH_DIRS}\n")
-set(CMAKE_HAIKU_SECONDARY_ARCH "${CMAKE_MATCH_2}")
-
-if(NOT CMAKE_HAIKU_SECONDARY_ARCH)
-  set(CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR "")
-  unset(CMAKE_HAIKU_SECONDARY_ARCH)
-else()
-  set(CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR "/${CMAKE_HAIKU_SECONDARY_ARCH}")
-
-  # Override CMAKE_*LIBRARY_ARCHITECTURE. This will cause FIND_LIBRARY to search
-  # the libraries in the correct subdirectory first. It still isn't completely
-  # correct, since the parent directories shouldn't be searched at all. The
-  # primary architecture library might still be found, if there isn't one
-  # installed for the secondary architecture or it is installed in a less
-  # specific location.
-  set(CMAKE_LIBRARY_ARCHITECTURE ${CMAKE_HAIKU_SECONDARY_ARCH})
-  set(CMAKE_C_LIBRARY_ARCHITECTURE ${CMAKE_HAIKU_SECONDARY_ARCH})
-  set(CMAKE_CXX_LIBRARY_ARCHITECTURE ${CMAKE_HAIKU_SECONDARY_ARCH})
-endif()
-
-list(APPEND CMAKE_SYSTEM_PREFIX_PATH
-  /boot/system/non-packaged
-  /boot/system
-  )
-
-LIST(APPEND CMAKE_HAIKU_COMMON_INCLUDE_DIRECTORIES
-  /boot/system/non-packaged/develop/headers${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
-  /boot/system/develop/headers/os
-  /boot/system/develop/headers/os/app
-  /boot/system/develop/headers/os/device
-  /boot/system/develop/headers/os/drivers
-  /boot/system/develop/headers/os/game
-  /boot/system/develop/headers/os/interface
-  /boot/system/develop/headers/os/kernel
-  /boot/system/develop/headers/os/locale
-  /boot/system/develop/headers/os/mail
-  /boot/system/develop/headers/os/media
-  /boot/system/develop/headers/os/midi
-  /boot/system/develop/headers/os/midi2
-  /boot/system/develop/headers/os/net
-  /boot/system/develop/headers/os/opengl
-  /boot/system/develop/headers/os/storage
-  /boot/system/develop/headers/os/support
-  /boot/system/develop/headers/os/translation
-  /boot/system/develop/headers/os/add-ons/graphics
-  /boot/system/develop/headers/os/add-ons/input_server
-  /boot/system/develop/headers/os/add-ons/screen_saver
-  /boot/system/develop/headers/os/add-ons/tracker
-  /boot/system/develop/headers/os/be_apps/Deskbar
-  /boot/system/develop/headers/os/be_apps/NetPositive
-  /boot/system/develop/headers/os/be_apps/Tracker
-  /boot/system/develop/headers/3rdparty
-  /boot/system/develop/headers/bsd
-  /boot/system/develop/headers/glibc
-  /boot/system/develop/headers/gnu
-  /boot/system/develop/headers/posix
-  /boot/system/develop/headers${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
-  )
-IF (CMAKE_HAIKU_SECONDARY_ARCH)
-  LIST(APPEND CMAKE_HAIKU_COMMON_INCLUDE_DIRECTORIES
-    /boot/system/develop/headers
-    )
-ENDIF (CMAKE_HAIKU_SECONDARY_ARCH)
-
-LIST(APPEND CMAKE_HAIKU_C_INCLUDE_DIRECTORIES
-  ${CMAKE_HAIKU_COMMON_INCLUDE_DIRECTORIES}
-  )
-
-LIST(APPEND CMAKE_HAIKU_CXX_INCLUDE_DIRECTORIES
-  ${CMAKE_HAIKU_COMMON_INCLUDE_DIRECTORIES})
-
-LIST(APPEND CMAKE_SYSTEM_INCLUDE_PATH ${CMAKE_HAIKU_C_INCLUDE_DIRECTORIES})
-
-LIST(APPEND CMAKE_HAIKU_DEVELOP_LIB_DIRECTORIES
-  /boot/system/non-packaged/develop/lib${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
-  /boot/system/develop/lib${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
-  )
-
-LIST(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
-  ${CMAKE_HAIKU_DEVELOP_LIB_DIRECTORIES}
-  )
-
-LIST(APPEND CMAKE_SYSTEM_LIBRARY_PATH ${CMAKE_HAIKU_DEVELOP_LIB_DIRECTORIES})
-
-if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
-  set(CMAKE_INSTALL_PREFIX "/boot/system" CACHE PATH
-    "Install path prefix, prepended onto install directories." FORCE)
-endif()
diff --git a/share/cmake-3.18/Modules/Platform/Linux-Intel-Fortran.cmake b/share/cmake-3.18/Modules/Platform/Linux-Intel-Fortran.cmake
deleted file mode 100644
index d8e94d0..0000000
--- a/share/cmake-3.18/Modules/Platform/Linux-Intel-Fortran.cmake
+++ /dev/null
@@ -1,4 +0,0 @@
-include(Platform/Linux-Intel)
-__linux_compiler_intel(Fortran)
-string(APPEND CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS " -nofor_main")
-set(CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS "")
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Clang-C.cmake b/share/cmake-3.18/Modules/Platform/Windows-Clang-C.cmake
deleted file mode 100644
index d007105..0000000
--- a/share/cmake-3.18/Modules/Platform/Windows-Clang-C.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-include(Platform/Windows-Clang)
-__windows_compiler_clang(C)
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Clang-CXX.cmake b/share/cmake-3.18/Modules/Platform/Windows-Clang-CXX.cmake
deleted file mode 100644
index f1d40f2..0000000
--- a/share/cmake-3.18/Modules/Platform/Windows-Clang-CXX.cmake
+++ /dev/null
@@ -1,3 +0,0 @@
-include(Platform/Windows-Clang)
-set(_COMPILE_CXX_MSVC " -TP")
-__windows_compiler_clang(CXX)
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Clang.cmake b/share/cmake-3.18/Modules/Platform/Windows-Clang.cmake
deleted file mode 100644
index dff8166..0000000
--- a/share/cmake-3.18/Modules/Platform/Windows-Clang.cmake
+++ /dev/null
@@ -1,179 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This module is shared by multiple languages; use include blocker.
-if(__WINDOWS_CLANG)
-  return()
-endif()
-set(__WINDOWS_CLANG 1)
-
-macro(__windows_compiler_clang_gnu lang)
-  set(CMAKE_LIBRARY_PATH_FLAG "-L")
-  set(CMAKE_LINK_LIBRARY_FLAG "-l")
-
-  set(CMAKE_IMPORT_LIBRARY_PREFIX "")
-  set(CMAKE_SHARED_LIBRARY_PREFIX "")
-  set(CMAKE_SHARED_MODULE_PREFIX  "")
-  set(CMAKE_STATIC_LIBRARY_PREFIX "")
-  set(CMAKE_EXECUTABLE_SUFFIX     ".exe")
-  set(CMAKE_IMPORT_LIBRARY_SUFFIX ".lib")
-  set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")
-  set(CMAKE_SHARED_MODULE_SUFFIX  ".dll")
-  set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib")
-  if(NOT "${lang}" STREQUAL "ASM")
-    set(CMAKE_DEPFILE_FLAGS_${lang} "-MD -MT <OBJECT> -MF <DEPFILE>")
-  endif()
-
-  set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
-  set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a" ".lib")
-  set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 1)
-  set (CMAKE_LINK_DEF_FILE_FLAG "-Xlinker /DEF:")
-
-  if("${CMAKE_${lang}_SIMULATE_VERSION}" MATCHES "^([0-9]+)\\.([0-9]+)")
-    math(EXPR MSVC_VERSION "${CMAKE_MATCH_1}*100 + ${CMAKE_MATCH_2}")
-  endif()
-
-  # No -fPIC on Windows
-  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "")
-  set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "")
-  set(_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER NO)
-  set(CMAKE_${lang}_LINK_OPTIONS_PIE "")
-  set(CMAKE_${lang}_LINK_OPTIONS_NO_PIE "")
-  set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "")
-
-  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_OBJECTS 1)
-  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_LIBRARIES 1)
-  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_INCLUDES 1)
-
-  set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto")
-  set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
-  set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
-  set(CMAKE_${lang}_ARCHIVE_CREATE_IPO "<CMAKE_AR> cr <TARGET> <LINK_FLAGS> <OBJECTS>")
-  set(CMAKE_${lang}_ARCHIVE_APPEND_IPO "<CMAKE_AR> r <TARGET> <LINK_FLAGS> <OBJECTS>")
-  set(CMAKE_${lang}_ARCHIVE_FINISH_IPO "<CMAKE_RANLIB> <TARGET>")
-
-  # Create archiving rules to support large object file lists for static libraries.
-  set(CMAKE_${lang}_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
-  set(CMAKE_${lang}_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
-  set(CMAKE_${lang}_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
-  set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
-    "<CMAKE_${lang}_COMPILER> -fuse-ld=lld-link -nostartfiles -nostdlib <CMAKE_SHARED_LIBRARY_${lang}_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS> -o <TARGET> ${CMAKE_GNULD_IMAGE_VERSION} -Xlinker /implib:<TARGET_IMPLIB> -Xlinker /pdb:<TARGET_PDB> -Xlinker /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> <OBJECTS> <LINK_LIBRARIES>")
-  set(CMAKE_${lang}_CREATE_SHARED_MODULE ${CMAKE_${lang}_CREATE_SHARED_LIBRARY})
-  set(CMAKE_${lang}_LINK_EXECUTABLE
-    "<CMAKE_${lang}_COMPILER> -fuse-ld=lld-link -nostartfiles -nostdlib <FLAGS> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> -Xlinker /implib:<TARGET_IMPLIB> -Xlinker /pdb:<TARGET_PDB> -Xlinker /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> ${CMAKE_GNULD_IMAGE_VERSION} <LINK_LIBRARIES>")
-
-  if(NOT "${lang}" STREQUAL "ASM")
-    set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded         -Xclang -flto-visibility-public-std -D_MT -Xclang --dependent-lib=libcmt)
-    set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL      -D_DLL -D_MT -Xclang --dependent-lib=msvcrt)
-    set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug    -D_DEBUG -Xclang -flto-visibility-public-std -D_MT -Xclang --dependent-lib=libcmtd)
-    set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd)
-
-    if(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT)
-      set(__ADDED_FLAGS "")
-      set(__ADDED_FLAGS_DEBUG "")
-    else()
-      set(__ADDED_FLAGS_DEBUG "-D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd")
-      set(__ADDED_FLAGS "-D_DLL -D_MT -Xclang --dependent-lib=msvcrt")
-    endif()
-
-    string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g -Xclang -gcodeview -O0 ${__ADDED_FLAGS_DEBUG}")
-    string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Os -DNDEBUG ${__ADDED_FLAGS}")
-    string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3 -DNDEBUG ${__ADDED_FLAGS}")
-    string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g -DNDEBUG -Xclang -gcodeview ${__ADDED_FLAGS}")
-  endif()
-  set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-isystem ")
-
-  set(CMAKE_PCH_EXTENSION .pch)
-  set(CMAKE_PCH_PROLOGUE "#pragma clang system_header")
-  set(CMAKE_${lang}_COMPILE_OPTIONS_USE_PCH -Xclang -include-pch -Xclang <PCH_FILE> -Xclang -include -Xclang <PCH_HEADER>)
-  set(CMAKE_${lang}_COMPILE_OPTIONS_CREATE_PCH -Xclang -emit-pch -Xclang -include -Xclang <PCH_HEADER>)
-
-  unset(__ADDED_FLAGS)
-  unset(__ADDED_FLAGS_DEBUG)
-  string(TOLOWER "${CMAKE_BUILD_TYPE}" BUILD_TYPE_LOWER)
-  set(CMAKE_${lang}_STANDARD_LIBRARIES_INIT "-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 -loldnames")
-
-  enable_language(RC)
-endmacro()
-
-if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC"
-    OR "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
-
-  if ( DEFINED CMAKE_C_COMPILER_ID AND DEFINED CMAKE_CXX_COMPILER_ID
-       AND NOT "x${CMAKE_C_COMPILER_ID}" STREQUAL "x${CMAKE_CXX_COMPILER_ID}")
-    message(FATAL_ERROR "The current configuration mixes Clang and MSVC or "
-            "some other CL compatible compiler tool. This is not supported. "
-            "Use either clang or MSVC as both C and C++ compilers.")
-  endif()
-
-  if ( DEFINED CMAKE_C_COMPILER_FRONTEND_VARIANT AND DEFINED CMAKE_CXX_COMPILER_FRONTEND_VARIANT
-       AND NOT "x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}")
-    message(FATAL_ERROR "The current configuration uses the Clang compiler "
-            "tool with mixed frontend variants, both the GNU and in MSVC CL "
-            "like variants. This is not supported. Use either clang/clang++ "
-            "or clang-cl as both C and C++ compilers.")
-  endif()
-
-  if(NOT CMAKE_RC_COMPILER_INIT)
-    # Check if rc is already in the path
-    # This may happen in cases where the user is already in a visual studio environment when CMake is invoked
-    find_program(__RC_COMPILER_PATH NAMES rc)
-
-    # Default to rc if it's available, otherwise fall back to llvm-rc
-    if(__RC_COMPILER_PATH)
-      set(CMAKE_RC_COMPILER_INIT rc)
-    else()
-      set(CMAKE_RC_COMPILER_INIT llvm-rc)
-    endif()
-
-    unset(__RC_COMPILER_PATH CACHE)
-  endif()
-
-  if ( "x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC" OR "x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC" )
-    include(Platform/Windows-MSVC)
-
-    # Feed the preprocessed rc file to llvm-rc
-    if(CMAKE_RC_COMPILER_INIT MATCHES "llvm-rc")
-      if(DEFINED CMAKE_C_COMPILER_ID)
-        set(CMAKE_RC_PREPROCESSOR CMAKE_C_COMPILER)
-      elseif(DEFINED CMAKE_CXX_COMPILER_ID)
-        set(CMAKE_RC_PREPROCESSOR CMAKE_CXX_COMPILER)
-      endif()
-      if(DEFINED CMAKE_RC_PREPROCESSOR)
-        set(CMAKE_DEPFILE_FLAGS_RC "-clang:-MD -clang:-MF -clang:<DEPFILE>")
-        set(CMAKE_RC_COMPILE_OBJECT "${CMAKE_COMMAND} -E cmake_llvm_rc <SOURCE> <OBJECT>.pp <${CMAKE_RC_PREPROCESSOR}> <DEFINES> -DRC_INVOKED <INCLUDES> <FLAGS> -E <SOURCE> -- <CMAKE_RC_COMPILER> <DEFINES> -I <SOURCE_DIR> <INCLUDES> /fo <OBJECT> <OBJECT>.pp")
-        if(CMAKE_GENERATOR STREQUAL "Ninja")
-          set(CMAKE_NINJA_CMCLDEPS_RC 0)
-          set(CMAKE_NINJA_DEP_TYPE_RC gcc)
-        endif()
-        unset(CMAKE_RC_PREPROCESSOR)
-      endif()
-    endif()
-
-    macro(__windows_compiler_clang lang)
-      set(_COMPILE_${lang} "${_COMPILE_${lang}_MSVC}")
-      __windows_compiler_msvc(${lang})
-    endmacro()
-  else()
-    cmake_policy(GET CMP0091 __WINDOWS_CLANG_CMP0091)
-    if(__WINDOWS_CLANG_CMP0091 STREQUAL "NEW")
-      set(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
-    else()
-      set(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT "")
-    endif()
-    unset(__WINDOWS_CLANG_CMP0091)
-
-    set(CMAKE_BUILD_TYPE_INIT Debug)
-
-    macro(__windows_compiler_clang lang)
-      __windows_compiler_clang_gnu(${lang})
-    endmacro()
-  endif()
-
-else()
-  include(Platform/Windows-GNU)
-  macro(__windows_compiler_clang lang)
-    __windows_compiler_gnu(${lang})
-  endmacro()
-endif()
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Embarcadero.cmake b/share/cmake-3.18/Modules/Platform/Windows-Embarcadero.cmake
deleted file mode 100644
index 0c24739..0000000
--- a/share/cmake-3.18/Modules/Platform/Windows-Embarcadero.cmake
+++ /dev/null
@@ -1,136 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This module is shared by multiple languages; use include blocker.
-if(__WINDOWS_EMBARCADERO)
-  return()
-endif()
-set(__WINDOWS_EMBARCADERO 1)
-
-set(BORLAND 1)
-
-if("${CMAKE_${_lang}_COMPILER_VERSION}" VERSION_LESS 6.30)
-  # Borland target type flags (bcc32 -h -t):
-  set(_tW "-tW")       # -tW  GUI App         (implies -U__CONSOLE__)
-  set(_tC "-tWC")      # -tWC Console App     (implies -D__CONSOLE__=1)
-  set(_tD "-tWD")      # -tWD Build a DLL     (implies -D__DLL__=1 -D_DLL=1)
-  set(_tM "-tWM")      # -tWM Enable threads  (implies -D__MT__=1 -D_MT=1)
-  set(_tR "-tWR -tW-") # -tWR Use DLL runtime (implies -D_RTLDLL, and '-tW' too!!)
-  # Notes:
-  #  - The flags affect linking so we pass them to the linker.
-  #  - The flags affect preprocessing so we pass them to the compiler.
-  #  - Since '-tWR' implies '-tW' we use '-tWR -tW-' instead.
-  #  - Since '-tW-' disables '-tWD' we use '-tWR -tW- -tWD' for DLLs.
-else()
-  set(EMBARCADERO 1)
-  set(_tC "-tC") # Target is a console application
-  set(_tD "-tD") # Target is a shared library
-  set(_tM "-tM") # Target is multi-threaded
-  set(_tR "-tR") # Target uses the dynamic RTL
-  set(_tW "-tW") # Target is a Windows application
-endif()
-set(_COMPILE_C "-c")
-set(_COMPILE_CXX "-P -c")
-
-set(CMAKE_LIBRARY_PATH_FLAG "-L")
-set(CMAKE_LINK_LIBRARY_FLAG "")
-
-set(CMAKE_FIND_LIBRARY_SUFFIXES "-bcc.lib" ".lib")
-
-# uncomment these out to debug makefiles
-#set(CMAKE_START_TEMP_FILE "")
-#set(CMAKE_END_TEMP_FILE "")
-#set(CMAKE_VERBOSE_MAKEFILE 1)
-
-# Borland cannot handle + in the file name, so mangle object file name
-set (CMAKE_MANGLE_OBJECT_FILE_NAMES "ON")
-
-# extra flags for a win32 exe
-set(CMAKE_CREATE_WIN32_EXE "${_tW}" )
-# extra flags for a console app
-set(CMAKE_CREATE_CONSOLE_EXE "${_tC}" )
-
-set (CMAKE_BUILD_TYPE Debug CACHE STRING
-     "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel.")
-
-foreach(t EXE SHARED MODULE)
-  string(APPEND CMAKE_${t}_LINKER_FLAGS_INIT " ${_tM} -lS:1048576 -lSc:4098 -lH:1048576 -lHc:8192 ")
-  string(APPEND CMAKE_${t}_LINKER_FLAGS_DEBUG_INIT " -v")
-  string(APPEND CMAKE_${t}_LINKER_FLAGS_RELWITHDEBINFO_INIT " -v")
-endforeach()
-
-# The Borland link tool does not support multiple concurrent
-# invocations within a single working directory.
-if(NOT DEFINED CMAKE_JOB_POOL_LINK)
-  set(CMAKE_JOB_POOL_LINK BCC32LinkPool)
-  get_property(_bccjp GLOBAL PROPERTY JOB_POOLS)
-  if(NOT _bccjp MATCHES "BCC32LinkPool=")
-      set_property(GLOBAL APPEND PROPERTY JOB_POOLS BCC32LinkPool=1)
-  endif()
-  unset(_bccjp)
-endif()
-
-macro(__embarcadero_language lang)
-  set(CMAKE_${lang}_COMPILE_OPTIONS_DLL "${_tD}") # Note: This variable is a ';' separated list
-  set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "${_tD}") # ... while this is a space separated string.
-  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_INCLUDES 1)
-
-  set (CMAKE_${lang}_LINKER_WRAPPER_FLAG "-l")
-
-  # compile a source file into an object file
-  # place <DEFINES> outside the response file because Borland refuses
-  # to parse quotes from the response file.
-  set(CMAKE_${lang}_COMPILE_OBJECT
-    "<CMAKE_${lang}_COMPILER> ${_tR} -DWIN32 <DEFINES> <INCLUDES> <FLAGS> -o<OBJECT> ${_COMPILE_${lang}} <SOURCE>"
-    )
-
-  set(CMAKE_${lang}_LINK_EXECUTABLE
-    "<CMAKE_${lang}_COMPILER> ${_tR} -e<TARGET> <LINK_FLAGS> <FLAGS> ${CMAKE_START_TEMP_FILE} <LINK_LIBRARIES> <OBJECTS>${CMAKE_END_TEMP_FILE}"
-    # "implib -c -w <TARGET_IMPLIB> <TARGET>"
-    )
-
-  # place <DEFINES> outside the response file because Borland refuses
-  # to parse quotes from the response file.
-  set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE
-    "cpp32 -DWIN32 <DEFINES> <INCLUDES> <FLAGS> -o<PREPROCESSED_SOURCE> ${_COMPILE_${lang}} <SOURCE>"
-    )
-  # Borland >= 5.6 allows -P option for cpp32, <= 5.5 does not
-
-  # Create a module library.
-  set(CMAKE_${lang}_CREATE_SHARED_MODULE
-    "<CMAKE_${lang}_COMPILER> ${_tR} ${_tD} ${CMAKE_START_TEMP_FILE}-e<TARGET> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS>${CMAKE_END_TEMP_FILE}"
-    )
-
-  # Create an import library for another target.
-  set(CMAKE_${lang}_CREATE_IMPORT_LIBRARY
-    "implib -c -w <TARGET_IMPLIB> <TARGET>"
-    )
-
-  # Create a shared library.
-  # First create a module and then its import library.
-  set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
-    ${CMAKE_${lang}_CREATE_SHARED_MODULE}
-    ${CMAKE_${lang}_CREATE_IMPORT_LIBRARY}
-    )
-
-  # create a static library
-  set(CMAKE_${lang}_CREATE_STATIC_LIBRARY
-    "tlib ${CMAKE_START_TEMP_FILE}/p512 <LINK_FLAGS> /a <TARGET_QUOTED> <OBJECTS>${CMAKE_END_TEMP_FILE}"
-    )
-
-  # Precompile Headers
-  if (EMBARCADERO)
-    set(CMAKE_PCH_EXTENSION .pch)
-    set(CMAKE_${lang}_COMPILE_OPTIONS_USE_PCH -Xclang -include-pch -Xclang <PCH_FILE> -Xclang -include -Xclang <PCH_HEADER>)
-    set(CMAKE_${lang}_COMPILE_OPTIONS_CREATE_PCH -Xclang -emit-pch -Xclang -include -Xclang <PCH_HEADER>)
-  endif()
-
-  # Initial configuration flags.
-  string(APPEND CMAKE_${lang}_FLAGS_INIT " ${_tM}")
-  string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -Od -v")
-  string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -O1 -DNDEBUG")
-  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O2 -DNDEBUG")
-  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -Od")
-  set(CMAKE_${lang}_STANDARD_LIBRARIES_INIT "import32.lib")
-endmacro()
diff --git a/share/cmake-3.18/Modules/Platform/Windows-GNU.cmake b/share/cmake-3.18/Modules/Platform/Windows-GNU.cmake
deleted file mode 100644
index a2e3811..0000000
--- a/share/cmake-3.18/Modules/Platform/Windows-GNU.cmake
+++ /dev/null
@@ -1,206 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This module is shared by multiple languages; use include blocker.
-if(__WINDOWS_GNU)
-  return()
-endif()
-set(__WINDOWS_GNU 1)
-
-set(CMAKE_IMPORT_LIBRARY_PREFIX "lib")
-set(CMAKE_SHARED_LIBRARY_PREFIX "lib")
-set(CMAKE_SHARED_MODULE_PREFIX  "lib")
-set(CMAKE_STATIC_LIBRARY_PREFIX "lib")
-
-set(CMAKE_EXECUTABLE_SUFFIX     ".exe")
-set(CMAKE_IMPORT_LIBRARY_SUFFIX ".dll.a")
-set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")
-set(CMAKE_SHARED_MODULE_SUFFIX  ".dll")
-set(CMAKE_STATIC_LIBRARY_SUFFIX ".a")
-
-if(MSYS OR MINGW)
-  set(CMAKE_EXTRA_LINK_EXTENSIONS ".lib") # MinGW can also link to a MS .lib
-endif()
-
-if(MINGW)
-  set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
-  set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a" ".lib")
-  set(CMAKE_C_STANDARD_LIBRARIES_INIT "-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32")
-  set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
-endif()
-
-set(CMAKE_DL_LIBS "")
-set(CMAKE_LIBRARY_PATH_FLAG "-L")
-set(CMAKE_LINK_LIBRARY_FLAG "-l")
-set(CMAKE_LINK_DEF_FILE_FLAG "") # Empty string: passing the file is enough
-set(CMAKE_LINK_LIBRARY_SUFFIX "")
-set(CMAKE_CREATE_WIN32_EXE  "-mwindows")
-
-set(CMAKE_GNULD_IMAGE_VERSION
-  "-Wl,--major-image-version,<TARGET_VERSION_MAJOR>,--minor-image-version,<TARGET_VERSION_MINOR>")
-
-# Check if GNU ld is too old to support @FILE syntax.
-set(__WINDOWS_GNU_LD_RESPONSE 1)
-execute_process(COMMAND ld -v OUTPUT_VARIABLE _help ERROR_VARIABLE _help)
-if("${_help}" MATCHES "GNU ld .* 2\\.1[1-6]")
-  set(__WINDOWS_GNU_LD_RESPONSE 0)
-endif()
-
-macro(__windows_compiler_gnu lang)
-
-  if(MSYS OR MINGW)
-    # Create archiving rules to support large object file lists for static libraries.
-    set(CMAKE_${lang}_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
-    set(CMAKE_${lang}_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
-    set(CMAKE_${lang}_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
-
-    # Initialize C link type selection flags.  These flags are used when
-    # building a shared library, shared module, or executable that links
-    # to other libraries to select whether to use the static or shared
-    # versions of the libraries.
-    foreach(type SHARED_LIBRARY SHARED_MODULE EXE)
-      set(CMAKE_${type}_LINK_STATIC_${lang}_FLAGS "-Wl,-Bstatic")
-      set(CMAKE_${type}_LINK_DYNAMIC_${lang}_FLAGS "-Wl,-Bdynamic")
-    endforeach()
-  endif()
-
-  # No -fPIC on Windows
-  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "")
-  set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "")
-  set(_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER NO)
-  set(CMAKE_${lang}_LINK_OPTIONS_PIE "")
-  set(CMAKE_${lang}_LINK_OPTIONS_NO_PIE "")
-  set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "")
-
-  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_OBJECTS ${__WINDOWS_GNU_LD_RESPONSE})
-  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_LIBRARIES ${__WINDOWS_GNU_LD_RESPONSE})
-  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_INCLUDES 1)
-
-  # We prefer "@" for response files but it is not supported by gcc 3.
-  execute_process(COMMAND ${CMAKE_${lang}_COMPILER} --version OUTPUT_VARIABLE _ver ERROR_VARIABLE _ver)
-  if("${_ver}" MATCHES "\\(GCC\\) 3\\.")
-    if("${lang}" STREQUAL "Fortran")
-      # The GNU Fortran compiler reports an error:
-      #   no input files; unwilling to write output files
-      # when the response file is passed with "-Wl,@".
-      set(CMAKE_Fortran_USE_RESPONSE_FILE_FOR_OBJECTS 0)
-    else()
-      # Use "-Wl,@" to pass the response file to the linker.
-      set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "-Wl,@")
-    endif()
-    # The GNU 3.x compilers do not support response files (only linkers).
-    set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_INCLUDES 0)
-    # Link libraries are generated only for the front-end.
-    set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_LIBRARIES 0)
-  else()
-    # Use "@" to pass the response file to the front-end.
-    set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "@")
-  endif()
-
-  # Binary link rules.
-  set(CMAKE_${lang}_CREATE_SHARED_MODULE
-    "<CMAKE_${lang}_COMPILER> <CMAKE_SHARED_MODULE_${lang}_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_MODULE_CREATE_${lang}_FLAGS> -o <TARGET> ${CMAKE_GNULD_IMAGE_VERSION} <OBJECTS> <LINK_LIBRARIES>")
-  set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
-    "<CMAKE_${lang}_COMPILER> <CMAKE_SHARED_LIBRARY_${lang}_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS> -o <TARGET> -Wl,--out-implib,<TARGET_IMPLIB> ${CMAKE_GNULD_IMAGE_VERSION} <OBJECTS> <LINK_LIBRARIES>")
-  set(CMAKE_${lang}_LINK_EXECUTABLE
-    "<CMAKE_${lang}_COMPILER> <FLAGS> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> -Wl,--out-implib,<TARGET_IMPLIB> ${CMAKE_GNULD_IMAGE_VERSION} <LINK_LIBRARIES>")
-
-  list(APPEND CMAKE_${lang}_ABI_FILES "Platform/Windows-GNU-${lang}-ABI")
-
-  # Support very long lists of object files.
-  # TODO: check for which gcc versions this is still needed, not needed for gcc >= 4.4.
-  # Ninja generator doesn't support this work around.
-  if("${CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG}" STREQUAL "@" AND NOT CMAKE_GENERATOR MATCHES "Ninja")
-    foreach(rule CREATE_SHARED_MODULE CREATE_SHARED_LIBRARY LINK_EXECUTABLE)
-      # The gcc/collect2/ld toolchain does not use response files
-      # internally so we cannot pass long object lists.  Instead pass
-      # the object file list in a response file to the archiver to put
-      # them in a temporary archive.  Hand the archive to the linker.
-      string(REPLACE "<OBJECTS>" "-Wl,--whole-archive <OBJECT_DIR>/objects.a -Wl,--no-whole-archive"
-        CMAKE_${lang}_${rule} "${CMAKE_${lang}_${rule}}")
-      set(CMAKE_${lang}_${rule}
-        "<CMAKE_COMMAND> -E rm -f <OBJECT_DIR>/objects.a"
-        "<CMAKE_AR> cr <OBJECT_DIR>/objects.a <OBJECTS>"
-        "${CMAKE_${lang}_${rule}}"
-        )
-    endforeach()
-  endif()
-
-  if(NOT CMAKE_RC_COMPILER_INIT AND NOT CMAKE_GENERATOR_RC)
-    set(CMAKE_RC_COMPILER_INIT ${_CMAKE_TOOLCHAIN_PREFIX}windres)
-  endif()
-
-  enable_language(RC)
-endmacro()
-
-macro(__windows_compiler_gnu_abi lang)
-  if(CMAKE_NO_GNUtoMS)
-    set(CMAKE_GNUtoMS 0)
-  else()
-    option(CMAKE_GNUtoMS "Convert GNU import libraries to MS format (requires Visual Studio)" OFF)
-  endif()
-
-  if(CMAKE_GNUtoMS AND NOT CMAKE_GNUtoMS_LIB)
-    # Find MS development environment setup script for this architecture.
-    # We need to use the MS Librarian tool (lib.exe).
-    # Find the most recent version available.
-
-    # Query the VS Installer tool for locations of VS 2017 and above.
-    set(_vs_installer_paths "")
-    foreach(vs RANGE 16 15 -1) # change the first number to the largest supported version
-      cmake_host_system_information(RESULT _vs_dir QUERY VS_${vs}_DIR)
-      if(_vs_dir)
-        list(APPEND _vs_installer_paths "${_vs_dir}/VC/Auxiliary/Build")
-      endif()
-    endforeach(vs)
-
-    if("${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
-      find_program(CMAKE_GNUtoMS_VCVARS NAMES vcvars32.bat
-        DOC "Visual Studio vcvars32.bat"
-        PATHS
-        ${_vs_installer_paths}
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\14.0\\Setup\\VC;ProductDir]/bin"
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\12.0\\Setup\\VC;ProductDir]/bin"
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0\\Setup\\VC;ProductDir]/bin"
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VC;ProductDir]/bin"
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0\\Setup\\VC;ProductDir]/bin"
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC;ProductDir]/bin"
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\7.1\\Setup\\VC;ProductDir]/bin"
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\6.0\\Setup\\Microsoft Visual C++;ProductDir]/bin"
-        )
-      set(CMAKE_GNUtoMS_ARCH x86)
-    elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
-      find_program(CMAKE_GNUtoMS_VCVARS NAMES vcvars64.bat vcvarsamd64.bat
-        DOC "Visual Studio vcvarsamd64.bat"
-        PATHS
-        ${_vs_installer_paths}
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\14.0\\Setup\\VC;ProductDir]/bin/amd64"
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\12.0\\Setup\\VC;ProductDir]/bin/amd64"
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0\\Setup\\VC;ProductDir]/bin/amd64"
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VC;ProductDir]/bin/amd64"
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0\\Setup\\VC;ProductDir]/bin/amd64"
-        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC;ProductDir]/bin/amd64"
-        )
-      set(CMAKE_GNUtoMS_ARCH amd64)
-    endif()
-    unset(_vs_installer_paths)
-    set_property(CACHE CMAKE_GNUtoMS_VCVARS PROPERTY ADVANCED 1)
-    if(CMAKE_GNUtoMS_VCVARS)
-      # Create helper script to run lib.exe from MS environment.
-      string(REPLACE "/" "\\" CMAKE_GNUtoMS_BAT "${CMAKE_GNUtoMS_VCVARS}")
-      set(CMAKE_GNUtoMS_LIB ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeGNUtoMS_lib.bat)
-      configure_file(${CMAKE_ROOT}/Modules/Platform/GNUtoMS_lib.bat.in ${CMAKE_GNUtoMS_LIB})
-    else()
-      message(WARNING "Disabling CMAKE_GNUtoMS option because CMAKE_GNUtoMS_VCVARS is not set.")
-      set(CMAKE_GNUtoMS 0)
-    endif()
-  endif()
-
-  if(CMAKE_GNUtoMS)
-    # Teach CMake how to create a MS import library at link time.
-    set(CMAKE_${lang}_GNUtoMS_RULE " -Wl,--output-def,<TARGET_NAME>.def"
-      "<CMAKE_COMMAND> -Dlib=\"${CMAKE_GNUtoMS_LIB}\" -Ddef=<TARGET_NAME>.def -Ddll=<TARGET> -Dimp=<TARGET_IMPLIB> -P \"${CMAKE_ROOT}/Modules/Platform/GNUtoMS_lib.cmake\""
-      )
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Intel-C.cmake b/share/cmake-3.18/Modules/Platform/Windows-Intel-C.cmake
deleted file mode 100644
index 06d8f50..0000000
--- a/share/cmake-3.18/Modules/Platform/Windows-Intel-C.cmake
+++ /dev/null
@@ -1,4 +0,0 @@
-include(Platform/Windows-Intel)
-__windows_compiler_intel(C)
-set(CMAKE_NINJA_DEPTYPE_C intel) # special value handled by CMake
-set(CMAKE_DEPFILE_FLAGS_C "-QMMD -QMT <OBJECT> -QMF <DEPFILE>")
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Intel-CXX.cmake b/share/cmake-3.18/Modules/Platform/Windows-Intel-CXX.cmake
deleted file mode 100644
index 666de6e..0000000
--- a/share/cmake-3.18/Modules/Platform/Windows-Intel-CXX.cmake
+++ /dev/null
@@ -1,5 +0,0 @@
-include(Platform/Windows-Intel)
-set(_COMPILE_CXX " /TP")
-__windows_compiler_intel(CXX)
-set(CMAKE_NINJA_DEPTYPE_CXX intel) # special value handled by CMake
-set(CMAKE_DEPFILE_FLAGS_CXX "-QMMD -QMT <OBJECT> -QMF <DEPFILE>")
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Intel.cmake b/share/cmake-3.18/Modules/Platform/Windows-Intel.cmake
deleted file mode 100644
index 5d8f7fc..0000000
--- a/share/cmake-3.18/Modules/Platform/Windows-Intel.cmake
+++ /dev/null
@@ -1,18 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This module is shared by multiple languages; use include blocker.
-if(__WINDOWS_INTEL)
-  return()
-endif()
-set(__WINDOWS_INTEL 1)
-
-include(Platform/Windows-MSVC)
-macro(__windows_compiler_intel lang)
-  __windows_compiler_msvc(${lang})
-  string(REPLACE "<CMAKE_AR>" "xilib" CMAKE_${lang}_CREATE_STATIC_LIBRARY "${CMAKE_${lang}_CREATE_STATIC_LIBRARY}")
-  foreach(rule CREATE_SHARED_LIBRARY CREATE_SHARED_MODULE LINK_EXECUTABLE)
-    string(REPLACE "<CMAKE_LINKER>" "xilink" CMAKE_${lang}_${rule} "${CMAKE_${lang}_${rule}}")
-  endforeach()
-endmacro()
diff --git a/share/cmake-3.18/Modules/Platform/Windows-MSVC-C.cmake b/share/cmake-3.18/Modules/Platform/Windows-MSVC-C.cmake
deleted file mode 100644
index cbe1586..0000000
--- a/share/cmake-3.18/Modules/Platform/Windows-MSVC-C.cmake
+++ /dev/null
@@ -1,5 +0,0 @@
-include(Platform/Windows-MSVC)
-if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 18.0)
-  set(_FS_C " /FS")
-endif()
-__windows_compiler_msvc(C)
diff --git a/share/cmake-3.18/Modules/Platform/Windows-MSVC-CXX.cmake b/share/cmake-3.18/Modules/Platform/Windows-MSVC-CXX.cmake
deleted file mode 100644
index 0e85005..0000000
--- a/share/cmake-3.18/Modules/Platform/Windows-MSVC-CXX.cmake
+++ /dev/null
@@ -1,6 +0,0 @@
-include(Platform/Windows-MSVC)
-set(_COMPILE_CXX " /TP")
-if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0)
-  set(_FS_CXX " /FS")
-endif()
-__windows_compiler_msvc(CXX)
diff --git a/share/cmake-3.18/Modules/Platform/Windows-MSVC.cmake b/share/cmake-3.18/Modules/Platform/Windows-MSVC.cmake
deleted file mode 100644
index 2476a33..0000000
--- a/share/cmake-3.18/Modules/Platform/Windows-MSVC.cmake
+++ /dev/null
@@ -1,441 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-# This module is shared by multiple languages; use include blocker.
-if(__WINDOWS_MSVC)
-  return()
-endif()
-set(__WINDOWS_MSVC 1)
-
-set(CMAKE_LIBRARY_PATH_FLAG "-LIBPATH:")
-set(CMAKE_LINK_LIBRARY_FLAG "")
-set(MSVC 1)
-
-# hack: if a new cmake (which uses CMAKE_LINKER) runs on an old build tree
-# (where link was hardcoded) and where CMAKE_LINKER isn't in the cache
-# and still cmake didn't fail in CMakeFindBinUtils.cmake (because it isn't rerun)
-# hardcode CMAKE_LINKER here to link, so it behaves as it did before, Alex
-if(NOT DEFINED CMAKE_LINKER)
-  set(CMAKE_LINKER link)
-endif()
-
-if(CMAKE_VERBOSE_MAKEFILE)
-  set(CMAKE_CL_NOLOGO)
-else()
-  set(CMAKE_CL_NOLOGO "/nologo")
-endif()
-
-if(CMAKE_SYSTEM_NAME STREQUAL "WindowsCE")
-  set(CMAKE_CREATE_WIN32_EXE "/entry:WinMainCRTStartup")
-  set(CMAKE_CREATE_CONSOLE_EXE "/entry:mainACRTStartup")
-  set(_PLATFORM_LINK_FLAGS " /subsystem:windowsce")
-else()
-  set(CMAKE_CREATE_WIN32_EXE "/subsystem:windows")
-  set(CMAKE_CREATE_CONSOLE_EXE "/subsystem:console")
-  set(_PLATFORM_LINK_FLAGS "")
-endif()
-
-set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 1)
-if(NOT CMAKE_NO_BUILD_TYPE AND CMAKE_GENERATOR MATCHES "Visual Studio")
-  set (CMAKE_NO_BUILD_TYPE 1)
-endif()
-
-if("${CMAKE_GENERATOR}" MATCHES "Visual Studio")
-  set(MSVC_IDE 1)
-else()
-  set(MSVC_IDE 0)
-endif()
-
-if(NOT MSVC_VERSION)
-  if("x${CMAKE_C_COMPILER_ID}" STREQUAL "xMSVC")
-    set(_compiler_version ${CMAKE_C_COMPILER_VERSION})
-  elseif("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC")
-    set(_compiler_version ${CMAKE_CXX_COMPILER_VERSION})
-  elseif(CMAKE_C_SIMULATE_VERSION)
-    set(_compiler_version ${CMAKE_C_SIMULATE_VERSION})
-  elseif(CMAKE_CXX_SIMULATE_VERSION)
-    set(_compiler_version ${CMAKE_CXX_SIMULATE_VERSION})
-  elseif(CMAKE_Fortran_SIMULATE_VERSION)
-    set(_compiler_version ${CMAKE_Fortran_SIMULATE_VERSION})
-  elseif(CMAKE_CUDA_SIMULATE_VERSION)
-    set(_compiler_version ${CMAKE_CUDA_SIMULATE_VERSION})
-  elseif(CMAKE_C_COMPILER_VERSION)
-    set(_compiler_version ${CMAKE_C_COMPILER_VERSION})
-  else()
-    set(_compiler_version ${CMAKE_CXX_COMPILER_VERSION})
-  endif()
-  if("${_compiler_version}" MATCHES "^([0-9]+)\\.([0-9]+)")
-    math(EXPR MSVC_VERSION "${CMAKE_MATCH_1}*100 + ${CMAKE_MATCH_2}")
-  else()
-    message(FATAL_ERROR "MSVC compiler version not detected properly: ${_compiler_version}")
-  endif()
-
-  if(MSVC_VERSION GREATER_EQUAL 1920)
-    # VS 2019 or greater
-    set(MSVC_TOOLSET_VERSION 142)
-  elseif(MSVC_VERSION GREATER_EQUAL 1910)
-    # VS 2017 or greater
-    set(MSVC_TOOLSET_VERSION 141)
-  elseif(MSVC_VERSION EQUAL 1900)
-    # VS 2015
-    set(MSVC_TOOLSET_VERSION 140)
-  elseif(MSVC_VERSION EQUAL 1800)
-    # VS 2013
-    set(MSVC_TOOLSET_VERSION 120)
-  elseif(MSVC_VERSION EQUAL 1700)
-    # VS 2012
-    set(MSVC_TOOLSET_VERSION 110)
-  elseif(MSVC_VERSION EQUAL 1600)
-    # VS 2010
-    set(MSVC_TOOLSET_VERSION 100)
-  elseif(MSVC_VERSION EQUAL 1500)
-    # VS 2008
-    set(MSVC_TOOLSET_VERSION 90)
-  elseif(MSVC_VERSION EQUAL 1400)
-    # VS 2005
-    set(MSVC_TOOLSET_VERSION 80)
-  else()
-    # We don't support MSVC_TOOLSET_VERSION for earlier compiler.
-  endif()
-
-  set(MSVC10)
-  set(MSVC11)
-  set(MSVC12)
-  set(MSVC14)
-  set(MSVC60)
-  set(MSVC70)
-  set(MSVC71)
-  set(MSVC80)
-  set(MSVC90)
-  set(CMAKE_COMPILER_2005)
-  set(CMAKE_COMPILER_SUPPORTS_PDBTYPE)
-  if(NOT "${_compiler_version}" VERSION_LESS 20)
-    # We no longer provide per-version variables.  Use MSVC_VERSION instead.
-  elseif(NOT "${_compiler_version}" VERSION_LESS 19)
-    set(MSVC14 1)
-  elseif(NOT "${_compiler_version}" VERSION_LESS 18)
-    set(MSVC12 1)
-  elseif(NOT "${_compiler_version}" VERSION_LESS 17)
-    set(MSVC11 1)
-  elseif(NOT  "${_compiler_version}" VERSION_LESS 16)
-    set(MSVC10 1)
-  elseif(NOT  "${_compiler_version}" VERSION_LESS 15)
-    set(MSVC90 1)
-  elseif(NOT  "${_compiler_version}" VERSION_LESS 14)
-    set(MSVC80 1)
-    set(CMAKE_COMPILER_2005 1)
-  elseif(NOT  "${_compiler_version}" VERSION_LESS 13.10)
-    set(MSVC71 1)
-  elseif(NOT  "${_compiler_version}" VERSION_LESS 13)
-    set(MSVC70 1)
-  else()
-    set(MSVC60 1)
-    set(CMAKE_COMPILER_SUPPORTS_PDBTYPE 1)
-  endif()
-endif()
-
-if(MSVC_C_ARCHITECTURE_ID MATCHES 64 OR MSVC_CXX_ARCHITECTURE_ID MATCHES 64)
-  set(CMAKE_CL_64 1)
-else()
-  set(CMAKE_CL_64 0)
-endif()
-if(CMAKE_FORCE_WIN64 OR CMAKE_FORCE_IA64)
-  set(CMAKE_CL_64 1)
-endif()
-
-if("${MSVC_VERSION}" GREATER 1599)
-  set(MSVC_INCREMENTAL_DEFAULT ON)
-endif()
-
-# default to Debug builds
-set(CMAKE_BUILD_TYPE_INIT Debug)
-
-# Compute an architecture family from the architecture id.
-foreach(lang C CXX)
-  set(_MSVC_${lang}_ARCHITECTURE_FAMILY "${MSVC_${lang}_ARCHITECTURE_ID}")
-  if(_MSVC_${lang}_ARCHITECTURE_FAMILY MATCHES "^ARM64")
-    set(_MSVC_${lang}_ARCHITECTURE_FAMILY "ARM64")
-  elseif(_MSVC_${lang}_ARCHITECTURE_FAMILY MATCHES "^ARM")
-    set(_MSVC_${lang}_ARCHITECTURE_FAMILY "ARM")
-  elseif(_MSVC_${lang}_ARCHITECTURE_FAMILY MATCHES "^SH")
-    set(_MSVC_${lang}_ARCHITECTURE_FAMILY "SHx")
-  endif()
-endforeach()
-
-if(WINCE)
-  foreach(lang C CXX)
-    string(TOUPPER "${_MSVC_${lang}_ARCHITECTURE_FAMILY}" _MSVC_${lang}_ARCHITECTURE_FAMILY_UPPER)
-  endforeach()
-
-  if("${CMAKE_SYSTEM_VERSION}" MATCHES "^([0-9]+)\\.([0-9]+)")
-    math(EXPR _CE_VERSION "${CMAKE_MATCH_1}*100 + ${CMAKE_MATCH_2}")
-  elseif("${CMAKE_SYSTEM_VERSION}" STREQUAL "")
-    set(_CE_VERSION "500")
-  else()
-    message(FATAL_ERROR "Invalid Windows CE version: ${CMAKE_SYSTEM_VERSION}")
-  endif()
-
-  set(_PLATFORM_DEFINES "/D_WIN32_WCE=0x${_CE_VERSION} /DUNDER_CE /DWINCE")
-  set(_PLATFORM_DEFINES_C " /D${_MSVC_C_ARCHITECTURE_FAMILY} /D_${_MSVC_C_ARCHITECTURE_FAMILY_UPPER}_")
-  set(_PLATFORM_DEFINES_CXX " /D${_MSVC_CXX_ARCHITECTURE_FAMILY} /D_${_MSVC_CXX_ARCHITECTURE_FAMILY_UPPER}_")
-
-  set(_RTC1 "")
-  set(_FLAGS_C "")
-  set(_FLAGS_CXX " /GR /EHsc")
-
-  foreach(lang C CXX)
-    if(_MSVC_${lang}_ARCHITECTURE_FAMILY STREQUAL "ARM")
-      string(APPEND _PLATFORM_DEFINES_${lang} " /D${MSVC_${lang}_ARCHITECTURE_ID}")
-      if(MSVC_${lang}_ARCHITECTURE_ID MATCHES "^ARMV([45])I$")
-        string(APPEND _FLAGS_${lang} " /QRarch${CMAKE_MATCH_1}T")
-      endif()
-    endif()
-  endforeach()
-
-  set(CMAKE_C_STANDARD_LIBRARIES_INIT "coredll.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib")
-  foreach(t EXE SHARED MODULE)
-    string(APPEND CMAKE_${t}_LINKER_FLAGS_INIT " /NODEFAULTLIB:libc.lib /NODEFAULTLIB:oldnames.lib")
-  endforeach()
-
-  if (MSVC_VERSION LESS 1600)
-    string(APPEND CMAKE_C_STANDARD_LIBRARIES_INIT " corelibc.lib")
-  endif ()
-elseif(WINDOWS_PHONE OR WINDOWS_STORE)
-  set(_PLATFORM_DEFINES "/DWIN32")
-  set(_FLAGS_C " /DUNICODE /D_UNICODE")
-  set(_FLAGS_CXX " /DUNICODE /D_UNICODE /GR /EHsc")
-  if(WINDOWS_STORE AND MSVC_VERSION GREATER 1899)
-    set(CMAKE_C_STANDARD_LIBRARIES_INIT "WindowsApp.lib")
-  elseif(WINDOWS_PHONE)
-    set(CMAKE_C_STANDARD_LIBRARIES_INIT "WindowsPhoneCore.lib RuntimeObject.lib PhoneAppModelHost.lib")
-  elseif(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM" OR _MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM" OR _MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM64" OR _MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM64")
-    set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib")
-  else()
-    set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib")
-  endif()
-else()
-  set(_PLATFORM_DEFINES "/DWIN32")
-
-  if(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM" OR _MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM")
-    set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib")
-  elseif(MSVC_VERSION GREATER 1310)
-    if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "v[0-9]+_clang_.*")
-      # Clang/C2 in MSVC14 Update 1 seems to not support -fsantinize (yet?)
-      # set(_RTC1 "-fsantinize=memory,safe-stack")
-      set(_FLAGS_CXX " -frtti -fexceptions")
-    else()
-      set(_RTC1 "/RTC1")
-      set(_FLAGS_CXX " /GR /EHsc")
-    endif()
-    set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib")
-  else()
-    set(_RTC1 "/GZ")
-    set(_FLAGS_CXX " /GR /GX")
-    set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib")
-  endif()
-
-  if(MSVC_VERSION LESS 1310)
-    set(_FLAGS_C   " /Zm1000${_FLAGS_C}")
-    set(_FLAGS_CXX " /Zm1000${_FLAGS_CXX}")
-  endif()
-endif()
-
-set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
-
-# executable linker flags
-set (CMAKE_LINK_DEF_FILE_FLAG "/DEF:")
-# set the machine type
-if(MSVC_C_ARCHITECTURE_ID)
-  if(MSVC_C_ARCHITECTURE_ID MATCHES "^ARMV.I")
-    set(_MACHINE_ARCH_FLAG "/machine:THUMB")
-  elseif(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM64")
-    set(_MACHINE_ARCH_FLAG "/machine:ARM64")
-  elseif(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM")
-    set(_MACHINE_ARCH_FLAG "/machine:ARM")
-  else()
-    set(_MACHINE_ARCH_FLAG "/machine:${MSVC_C_ARCHITECTURE_ID}")
-  endif()
-elseif(MSVC_CXX_ARCHITECTURE_ID)
-  if(MSVC_CXX_ARCHITECTURE_ID MATCHES "^ARMV.I")
-    set(_MACHINE_ARCH_FLAG "/machine:THUMB")
-  elseif(_MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM64")
-    set(_MACHINE_ARCH_FLAG "/machine:ARM64")
-  elseif(_MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM")
-    set(_MACHINE_ARCH_FLAG "/machine:ARM")
-  else()
-    set(_MACHINE_ARCH_FLAG "/machine:${MSVC_CXX_ARCHITECTURE_ID}")
-  endif()
-elseif(MSVC_Fortran_ARCHITECTURE_ID)
-  set(_MACHINE_ARCH_FLAG "/machine:${MSVC_Fortran_ARCHITECTURE_ID}")
-endif()
-
-# add /debug and /INCREMENTAL:YES to DEBUG and RELWITHDEBINFO also add pdbtype
-# on versions that support it
-set( MSVC_INCREMENTAL_YES_FLAG "")
-if(NOT WINDOWS_PHONE AND NOT WINDOWS_STORE)
-  if(NOT MSVC_INCREMENTAL_DEFAULT)
-    set( MSVC_INCREMENTAL_YES_FLAG "/INCREMENTAL:YES")
-  else()
-    set(  MSVC_INCREMENTAL_YES_FLAG "/INCREMENTAL" )
-  endif()
-endif()
-
-foreach(t EXE SHARED MODULE)
-  string(APPEND CMAKE_${t}_LINKER_FLAGS_INIT " ${_MACHINE_ARCH_FLAG}")
-  if (CMAKE_COMPILER_SUPPORTS_PDBTYPE)
-    string(APPEND CMAKE_${t}_LINKER_FLAGS_DEBUG_INIT " /debug /pdbtype:sept ${MSVC_INCREMENTAL_YES_FLAG}")
-    string(APPEND CMAKE_${t}_LINKER_FLAGS_RELWITHDEBINFO_INIT " /debug /pdbtype:sept ${MSVC_INCREMENTAL_YES_FLAG}")
-  else ()
-    string(APPEND CMAKE_${t}_LINKER_FLAGS_DEBUG_INIT " /debug ${MSVC_INCREMENTAL_YES_FLAG}")
-    string(APPEND CMAKE_${t}_LINKER_FLAGS_RELWITHDEBINFO_INIT " /debug ${MSVC_INCREMENTAL_YES_FLAG}")
-  endif ()
-  # for release and minsize release default to no incremental linking
-  string(APPEND CMAKE_${t}_LINKER_FLAGS_MINSIZEREL_INIT " /INCREMENTAL:NO")
-  string(APPEND CMAKE_${t}_LINKER_FLAGS_RELEASE_INIT " /INCREMENTAL:NO")
-endforeach()
-
-string(APPEND CMAKE_STATIC_LINKER_FLAGS_INIT " ${_MACHINE_ARCH_FLAG}")
-unset(_MACHINE_ARCH_FLAG)
-
-cmake_policy(GET CMP0091 __WINDOWS_MSVC_CMP0091)
-if(__WINDOWS_MSVC_CMP0091 STREQUAL "NEW")
-  set(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
-else()
-  set(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT "")
-endif()
-unset(__WINDOWS_MSVC_CMP0091)
-
-macro(__windows_compiler_msvc lang)
-  if(NOT MSVC_VERSION LESS 1400)
-    # for 2005 make sure the manifest is put in the dll with mt
-    set(_CMAKE_VS_LINK_DLL "<CMAKE_COMMAND> -E vs_link_dll --intdir=<OBJECT_DIR> --rc=<CMAKE_RC_COMPILER> --mt=<CMAKE_MT> --manifests <MANIFESTS> -- ")
-    set(_CMAKE_VS_LINK_EXE "<CMAKE_COMMAND> -E vs_link_exe --intdir=<OBJECT_DIR> --rc=<CMAKE_RC_COMPILER> --mt=<CMAKE_MT> --manifests <MANIFESTS> -- ")
-  endif()
-  set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
-    "${_CMAKE_VS_LINK_DLL}<CMAKE_LINKER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /dll /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR>${_PLATFORM_LINK_FLAGS} <LINK_FLAGS> <LINK_LIBRARIES> ${CMAKE_END_TEMP_FILE}")
-
-  set(CMAKE_${lang}_CREATE_SHARED_MODULE ${CMAKE_${lang}_CREATE_SHARED_LIBRARY})
-  set(CMAKE_${lang}_CREATE_STATIC_LIBRARY  "<CMAKE_AR> ${CMAKE_CL_NOLOGO} <LINK_FLAGS> /out:<TARGET> <OBJECTS> ")
-
-  set(CMAKE_${lang}_COMPILE_OBJECT
-    "<CMAKE_${lang}_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} <DEFINES> <INCLUDES> <FLAGS> /Fo<OBJECT> /Fd<TARGET_COMPILE_PDB>${_FS_${lang}} -c <SOURCE>${CMAKE_END_TEMP_FILE}")
-  set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE
-    "<CMAKE_${lang}_COMPILER> > <PREPROCESSED_SOURCE> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE>${CMAKE_END_TEMP_FILE}")
-  set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE
-    "<CMAKE_${lang}_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} <DEFINES> <INCLUDES> <FLAGS> /FoNUL /FAs /Fa<ASSEMBLY_SOURCE> /c <SOURCE>${CMAKE_END_TEMP_FILE}")
-
-  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_OBJECTS 1)
-  set(CMAKE_${lang}_LINK_EXECUTABLE
-    "${_CMAKE_VS_LINK_EXE}<CMAKE_LINKER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR>${_PLATFORM_LINK_FLAGS} <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES>${CMAKE_END_TEMP_FILE}")
-
-  set(CMAKE_PCH_EXTENSION .pch)
-  set(CMAKE_LINK_PCH ON)
-  if (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang")
-    set(CMAKE_PCH_PROLOGUE "#pragma clang system_header")
-  elseif(MSVC_VERSION GREATER_EQUAL 1913)
-    # At least MSVC toolet 14.13 from VS 2017 15.6
-    set(CMAKE_PCH_PROLOGUE "#pragma system_header")
-  endif()
-  if (NOT ${CMAKE_${lang}_COMPILER_ID} STREQUAL "Clang")
-    set(CMAKE_PCH_COPY_COMPILE_PDB ON)
-  endif()
-  set(CMAKE_${lang}_COMPILE_OPTIONS_USE_PCH /Yu<PCH_HEADER> /Fp<PCH_FILE> /FI<PCH_HEADER>)
-  set(CMAKE_${lang}_COMPILE_OPTIONS_CREATE_PCH /Yc<PCH_HEADER> /Fp<PCH_FILE> /FI<PCH_HEADER>)
-
-  if("x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xMSVC")
-    set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
-    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
-
-    set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "/GL")
-    set(CMAKE_${lang}_LINK_OPTIONS_IPO "/INCREMENTAL:NO" "/LTCG")
-    string(REPLACE "<LINK_FLAGS> " "/LTCG <LINK_FLAGS> "
-      CMAKE_${lang}_CREATE_STATIC_LIBRARY_IPO "${CMAKE_${lang}_CREATE_STATIC_LIBRARY}")
-  elseif("x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xClang" OR
-         "x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xFlang")
-    set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
-    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
-
-    # '-flto=thin' available since Clang 3.9 and Xcode 8
-    # * http://clang.llvm.org/docs/ThinLTO.html#clang-llvm
-    # * https://trac.macports.org/wiki/XcodeVersionInfo
-    set(_CMAKE_LTO_THIN TRUE)
-    if(CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.9)
-      set(_CMAKE_LTO_THIN FALSE)
-    endif()
-
-    if(_CMAKE_LTO_THIN)
-      set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto=thin")
-    else()
-      set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto")
-    endif()
-  endif()
-
-  if("x${lang}" STREQUAL "xC" OR
-      "x${lang}" STREQUAL "xCXX")
-    if(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT)
-      set(_MDd "")
-      set(_MD "")
-    else()
-      set(_MDd " /MDd")
-      set(_MD " /MD")
-    endif()
-
-    cmake_policy(GET CMP0092 _cmp0092)
-    if(_cmp0092 STREQUAL "NEW")
-      set(_W3 "")
-      set(_Wall "")
-    else()
-      set(_W3 " /W3")
-      set(_Wall " -Wall")
-    endif()
-    unset(_cmp0092)
-
-    if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "v[0-9]+_clang_.*")
-      # note: MSVC 14 2015 Update 1 sets -fno-ms-compatibility by default, but this does not allow one to compile many projects
-      # that include MS's own headers. CMake itself is affected project too.
-      string(APPEND CMAKE_${lang}_FLAGS_INIT " ${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_${lang}} -fms-extensions -fms-compatibility -D_WINDOWS${_Wall}${_FLAGS_${lang}}")
-      string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT "${_MDd} -gline-tables-only -fno-inline -O0 ${_RTC1}")
-      string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT "${_MD} -O2 -DNDEBUG")
-      string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "${_MD} -gline-tables-only -O2 -fno-inline -DNDEBUG")
-      string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "${_MD} -DNDEBUG") # TODO: Add '-Os' once VS generator maps it properly for Clang
-    else()
-      string(APPEND CMAKE_${lang}_FLAGS_INIT " ${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_${lang}} /D_WINDOWS${_W3}${_FLAGS_${lang}}")
-      string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT "${_MDd} /Zi /Ob0 /Od ${_RTC1}")
-      string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT "${_MD} /O2 /Ob2 /DNDEBUG")
-      string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "${_MD} /Zi /O2 /Ob1 /DNDEBUG")
-      string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "${_MD} /O1 /Ob1 /DNDEBUG")
-    endif()
-    unset(_Wall)
-    unset(_W3)
-    unset(_MDd)
-    unset(_MD)
-
-    set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded         -MT)
-    set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL      -MD)
-    set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug    -MTd)
-    set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL -MDd)
-  endif()
-  set(CMAKE_${lang}_LINKER_SUPPORTS_PDB ON)
-  set(CMAKE_NINJA_DEPTYPE_${lang} msvc)
-  __windows_compiler_msvc_enable_rc("${_PLATFORM_DEFINES} ${_PLATFORM_DEFINES_${lang}}")
-endmacro()
-
-macro(__windows_compiler_msvc_enable_rc flags)
-  if(NOT CMAKE_RC_COMPILER_INIT)
-    set(CMAKE_RC_COMPILER_INIT rc)
-  endif()
-  if(NOT CMAKE_RC_FLAGS_INIT)
-    # llvm-rc fails when flags are specified with /D and no space after
-    string(REPLACE " /D" " -D" fixed_flags " ${flags}")
-    string(APPEND CMAKE_RC_FLAGS_INIT " ${fixed_flags}")
-  endif()
-  if(NOT CMAKE_RC_FLAGS_DEBUG_INIT)
-    string(APPEND CMAKE_RC_FLAGS_DEBUG_INIT " -D_DEBUG")
-  endif()
-
-  enable_language(RC)
-  if(NOT DEFINED CMAKE_NINJA_CMCLDEPS_RC)
-    set(CMAKE_NINJA_CMCLDEPS_RC 1)
-  endif()
-endmacro()
diff --git a/share/cmake-3.18/Modules/Platform/Windows-NVIDIA-CUDA.cmake b/share/cmake-3.18/Modules/Platform/Windows-NVIDIA-CUDA.cmake
deleted file mode 100644
index a88f4bc..0000000
--- a/share/cmake-3.18/Modules/Platform/Windows-NVIDIA-CUDA.cmake
+++ /dev/null
@@ -1,96 +0,0 @@
-include(Platform/Windows-MSVC)
-
-set(CMAKE_CUDA_COMPILE_PTX_COMPILATION
-  "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} -ptx <SOURCE> -o <OBJECT> -Xcompiler=-Fd<TARGET_COMPILE_PDB>,-FS")
-set(CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION
-  "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} -dc <SOURCE> -o <OBJECT> -Xcompiler=-Fd<TARGET_COMPILE_PDB>,-FS")
-set(CMAKE_CUDA_COMPILE_WHOLE_COMPILATION
-  "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} -c <SOURCE> -o <OBJECT> -Xcompiler=-Fd<TARGET_COMPILE_PDB>,-FS")
-
-set(__IMPLICT_LINKS )
-foreach(dir ${CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES})
-  string(APPEND __IMPLICT_LINKS " -LIBPATH:\"${dir}\"")
-endforeach()
-foreach(lib ${CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES})
-  string(APPEND __IMPLICT_LINKS " \"${lib}\"")
-endforeach()
-set(CMAKE_CUDA_LINK_EXECUTABLE
-   "<CMAKE_CUDA_HOST_LINK_LAUNCHER> <LINK_FLAGS> <OBJECTS> /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> <LINK_LIBRARIES>${__IMPLICT_LINKS}")
-
-set(_CMAKE_VS_LINK_DLL "<CMAKE_COMMAND> -E vs_link_dll --intdir=<OBJECT_DIR> --rc=<CMAKE_RC_COMPILER> --mt=<CMAKE_MT> --manifests <MANIFESTS> -- ")
-set(_CMAKE_VS_LINK_EXE "<CMAKE_COMMAND> -E vs_link_exe --intdir=<OBJECT_DIR> --rc=<CMAKE_RC_COMPILER> --mt=<CMAKE_MT> --manifests <MANIFESTS> -- ")
-set(CMAKE_CUDA_CREATE_SHARED_LIBRARY
-  "${_CMAKE_VS_LINK_DLL}<CMAKE_LINKER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /dll /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR>${_PLATFORM_LINK_FLAGS} <LINK_FLAGS> <LINK_LIBRARIES>${__IMPLICT_LINKS} ${CMAKE_END_TEMP_FILE}")
-
-set(CMAKE_CUDA_CREATE_SHARED_MODULE ${CMAKE_CUDA_CREATE_SHARED_LIBRARY})
-set(CMAKE_CUDA_CREATE_STATIC_LIBRARY  "<CMAKE_AR> ${CMAKE_CL_NOLOGO} <LINK_FLAGS> /out:<TARGET> <OBJECTS> ")
-set(CMAKE_CUDA_LINKER_SUPPORTS_PDB ON)
-set(CMAKE_CUDA_LINK_EXECUTABLE
-  "${_CMAKE_VS_LINK_EXE}<CMAKE_LINKER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR>${_PLATFORM_LINK_FLAGS} <LINK_FLAGS> <LINK_LIBRARIES>${__IMPLICT_LINKS} ${CMAKE_END_TEMP_FILE}")
-unset(_CMAKE_VS_LINK_EXE)
-unset(_CMAKE_VS_LINK_EXE)
-
-
-# Add implicit host link directories that contain device libraries
-# to the device link line.
-set(__IMPLICT_DLINK_DIRS ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES})
-if(__IMPLICT_DLINK_DIRS)
-  list(REMOVE_ITEM __IMPLICT_DLINK_DIRS ${CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES})
-endif()
-set(__IMPLICT_DLINK_FLAGS )
-foreach(dir ${__IMPLICT_DLINK_DIRS})
-  if(EXISTS "${dir}/curand_static.lib")
-    string(APPEND __IMPLICT_DLINK_FLAGS " -L\"${dir}\"")
-  endif()
-endforeach()
-unset(__IMPLICT_DLINK_DIRS)
-
-set(CMAKE_CUDA_DEVICE_LINK_LIBRARY
-  "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> ${_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS} -shared -dlink <OBJECTS> -o <TARGET> <LINK_LIBRARIES> -Xcompiler=-Fd<TARGET_COMPILE_PDB>,-FS${__IMPLICT_DLINK_FLAGS}")
-set(CMAKE_CUDA_DEVICE_LINK_EXECUTABLE
-  "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> ${_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS} -shared -dlink <OBJECTS> -o <TARGET> <LINK_LIBRARIES> -Xcompiler=-Fd<TARGET_COMPILE_PDB>,-FS${__IMPLICT_DLINK_FLAGS}")
-unset(__IMPLICT_DLINK_FLAGS)
-
-string(REPLACE "/D" "-D" _PLATFORM_DEFINES_CUDA "${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_CXX}")
-
-if(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT)
-  set(_MDd "")
-  set(_MD "")
-else()
-  set(_MDd "-MDd ")
-  set(_MD "-MD ")
-endif()
-
-cmake_policy(GET CMP0092 _cmp0092)
-if(_cmp0092 STREQUAL "NEW")
-  set(_W3 "")
-else()
-  set(_W3 "/W3")
-endif()
-unset(_cmp0092)
-
-set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_STATIC  "cudadevrt;cudart_static")
-set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_SHARED  "cudadevrt;cudart")
-set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_NONE    "")
-
-if(UNIX)
-  list(APPEND CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_STATIC "rt" "pthread" "dl")
-endif()
-
-string(APPEND CMAKE_CUDA_FLAGS_INIT " ${PLATFORM_DEFINES_CUDA} -D_WINDOWS -Xcompiler=\"${_W3}${_FLAGS_CXX}\"")
-string(APPEND CMAKE_CUDA_FLAGS_DEBUG_INIT " -Xcompiler=\"${_MDd}-Zi -Ob0 -Od ${_RTC1}\"")
-string(APPEND CMAKE_CUDA_FLAGS_RELEASE_INIT " -Xcompiler=\"${_MD}-O2 -Ob2\" -DNDEBUG")
-string(APPEND CMAKE_CUDA_FLAGS_RELWITHDEBINFO_INIT " -Xcompiler=\"${_MD}-Zi -O2 -Ob1\" -DNDEBUG")
-string(APPEND CMAKE_CUDA_FLAGS_MINSIZEREL_INIT " -Xcompiler=\"${_MD}-O1 -Ob1\" -DNDEBUG")
-unset(_W3)
-unset(_MDd)
-unset(_MD)
-
-set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded         -Xcompiler=-MT)
-set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL      -Xcompiler=-MD)
-set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug    -Xcompiler=-MTd)
-set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL -Xcompiler=-MDd)
-
-set(CMAKE_CUDA_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
-
-__windows_compiler_msvc_enable_rc("${_PLATFORM_DEFINES} ${_PLATFORM_DEFINES_CXX}")
diff --git a/share/cmake-3.18/Modules/Platform/Windows-OpenWatcom-C.cmake b/share/cmake-3.18/Modules/Platform/Windows-OpenWatcom-C.cmake
deleted file mode 100644
index ce9bc45..0000000
--- a/share/cmake-3.18/Modules/Platform/Windows-OpenWatcom-C.cmake
+++ /dev/null
@@ -1 +0,0 @@
-include(Platform/Windows-OpenWatcom)
diff --git a/share/cmake-3.18/Modules/Platform/Windows-OpenWatcom-CXX.cmake b/share/cmake-3.18/Modules/Platform/Windows-OpenWatcom-CXX.cmake
deleted file mode 100644
index ce9bc45..0000000
--- a/share/cmake-3.18/Modules/Platform/Windows-OpenWatcom-CXX.cmake
+++ /dev/null
@@ -1 +0,0 @@
-include(Platform/Windows-OpenWatcom)
diff --git a/share/cmake-3.18/Modules/Platform/Windows-OpenWatcom.cmake b/share/cmake-3.18/Modules/Platform/Windows-OpenWatcom.cmake
deleted file mode 100644
index 70055da..0000000
--- a/share/cmake-3.18/Modules/Platform/Windows-OpenWatcom.cmake
+++ /dev/null
@@ -1,32 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-# This module is shared by multiple languages; use include blocker.
-include_guard()
-
-set(CMAKE_BUILD_TYPE_INIT Debug)
-
-set(CMAKE_CREATE_WIN32_EXE "system nt_win" )
-set(CMAKE_CREATE_CONSOLE_EXE "system nt" )
-string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " system nt_dll")
-string(APPEND CMAKE_MODULE_LINKER_FLAGS_INIT " system nt_dll")
-
-set(CMAKE_C_COMPILE_OPTIONS_DLL "-bd") # Note: This variable is a ';' separated list
-set(CMAKE_SHARED_LIBRARY_C_FLAGS "-bd") # ... while this is a space separated string.
-
-set(CMAKE_RC_COMPILER "rc" )
-
-# single/multi-threaded                 /-bm
-# static/DLL run-time libraries         /-br
-# default is setup for multi-threaded + DLL run-time libraries
-string(APPEND CMAKE_C_FLAGS_INIT " -bt=nt -dWIN32 -br -bm")
-string(APPEND CMAKE_CXX_FLAGS_INIT " -bt=nt -xs -dWIN32 -br -bm")
-
-if(CMAKE_CROSSCOMPILING)
-  if(NOT CMAKE_C_STANDARD_INCLUDE_DIRECTORIES)
-    set(CMAKE_C_STANDARD_INCLUDE_DIRECTORIES $ENV{WATCOM}/h $ENV{WATCOM}/h/nt)
-  endif()
-  if(NOT CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES)
-    set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES $ENV{WATCOM}/h $ENV{WATCOM}/h/nt)
-  endif()
-endif()
diff --git a/share/cmake-3.18/Modules/Platform/Windows-df.cmake b/share/cmake-3.18/Modules/Platform/Windows-df.cmake
deleted file mode 100644
index 8b824bc..0000000
--- a/share/cmake-3.18/Modules/Platform/Windows-df.cmake
+++ /dev/null
@@ -1,60 +0,0 @@
-# compiler support for fortran CVF compiler on windows
-
-set(CMAKE_WINDOWS_OBJECT_PATH 1)
-set(CMAKE_LIBRARY_PATH_FLAG "-LIBPATH:")
-set(CMAKE_LINK_LIBRARY_FLAG "")
-set(WIN32 1)
-if(CMAKE_VERBOSE_MAKEFILE)
-  set(CMAKE_CL_NOLOGO)
-else()
-  set(CMAKE_CL_NOLOGO "/nologo")
-endif()
-
-set(CMAKE_Fortran_MODDIR_FLAG "-module:")
-
-set(CMAKE_Fortran_CREATE_SHARED_LIBRARY
- "link ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} /out:<TARGET> /dll <LINK_FLAGS> <OBJECTS> <LINK_LIBRARIES> ${CMAKE_END_TEMP_FILE}")
-
-set(CMAKE_Fortran_CREATE_SHARED_MODULE ${CMAKE_Fortran_CREATE_SHARED_LIBRARY})
-
-# create a C++ static library
-set(CMAKE_Fortran_CREATE_STATIC_LIBRARY  "lib ${CMAKE_CL_NOLOGO} <LINK_FLAGS> /out:<TARGET> <OBJECTS> ")
-
-# compile a C++ file into an object file
-set(CMAKE_Fortran_COMPILE_OBJECT
-    "<CMAKE_Fortran_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} /object:<OBJECT> <FLAGS> /compile_only <SOURCE>${CMAKE_END_TEMP_FILE}")
-
-set(CMAKE_Fortran_LINK_EXECUTABLE
-    "<CMAKE_Fortran_COMPILER> ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} <FLAGS> /exe:<TARGET> <OBJECTS> /link <CMAKE_Fortran_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES>${CMAKE_END_TEMP_FILE}")
-
-set(CMAKE_CREATE_WIN32_EXE /winapp)
-set(CMAKE_CREATE_CONSOLE_EXE )
-
-# does the compiler support pdbtype and is it the newer compiler
-
-set(CMAKE_BUILD_TYPE_INIT Debug)
-set (CMAKE_Fortran_FLAGS_INIT "")
-set (CMAKE_Fortran_FLAGS_DEBUG_INIT "/debug:full")
-set (CMAKE_Fortran_FLAGS_MINSIZEREL_INIT "/Optimize:2 /Define:NDEBUG")
-set (CMAKE_Fortran_FLAGS_RELEASE_INIT "/Optimize:1 /Define:NDEBUG")
-set (CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT "/Optimize:1 /debug:full /Define:NDEBUG")
-
-set (CMAKE_Fortran_STANDARD_LIBRARIES_INIT "user32.lib")
-
-# executable linker flags
-set (CMAKE_LINK_DEF_FILE_FLAG "/DEF:")
-set (CMAKE_EXE_LINKER_FLAGS_INIT " /INCREMENTAL:YES")
-if (CMAKE_COMPILER_SUPPORTS_PDBTYPE)
-  set (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "/debug /pdbtype:sept")
-  set (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "/debug /pdbtype:sept")
-else ()
-  set (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "/debug")
-  set (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "/debug")
-endif ()
-
-set (CMAKE_SHARED_LINKER_FLAGS_INIT ${CMAKE_EXE_LINKER_FLAGS_INIT})
-set (CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT})
-set (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT})
-set (CMAKE_MODULE_LINKER_FLAGS_INIT ${CMAKE_SHARED_LINKER_FLAGS_INIT})
-set (CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT ${CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT})
-set (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT})
diff --git a/share/cmake-3.18/Modules/ProcessorCount.cmake b/share/cmake-3.18/Modules/ProcessorCount.cmake
deleted file mode 100644
index 43ec889..0000000
--- a/share/cmake-3.18/Modules/ProcessorCount.cmake
+++ /dev/null
@@ -1,237 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-ProcessorCount
---------------
-
-ProcessorCount(var)
-
-Determine the number of processors/cores and save value in ${var}
-
-Sets the variable named ${var} to the number of physical cores
-available on the machine if the information can be determined.
-Otherwise it is set to 0.  Currently this functionality is implemented
-for AIX, cygwin, FreeBSD, HPUX, Linux, macOS, QNX, Sun and
-Windows.
-
-This function is guaranteed to return a positive integer (>=1) if it
-succeeds.  It returns 0 if there's a problem determining the processor
-count.
-
-Example use, in a ctest -S dashboard script:
-
-::
-
-   include(ProcessorCount)
-   ProcessorCount(N)
-   if(NOT N EQUAL 0)
-     set(CTEST_BUILD_FLAGS -j${N})
-     set(ctest_test_args ${ctest_test_args} PARALLEL_LEVEL ${N})
-   endif()
-
-
-
-This function is intended to offer an approximation of the value of
-the number of compute cores available on the current machine, such
-that you may use that value for parallel building and parallel
-testing.  It is meant to help utilize as much of the machine as seems
-reasonable.  Of course, knowledge of what else might be running on the
-machine simultaneously should be used when deciding whether to request
-a machine's full capacity all for yourself.
-#]=======================================================================]
-
-# A more reliable way might be to compile a small C program that uses the CPUID
-# instruction, but that again requires compiler support or compiling assembler
-# code.
-
-function(ProcessorCount var)
-  # Unknown:
-  set(count 0)
-
-  if(WIN32)
-    # Windows:
-    set(count "$ENV{NUMBER_OF_PROCESSORS}")
-    #message("ProcessorCount: WIN32, trying environment variable")
-  endif()
-
-  if(NOT count)
-    # Mac, FreeBSD, OpenBSD (systems with sysctl):
-    find_program(ProcessorCount_cmd_sysctl sysctl
-      PATHS /usr/sbin /sbin)
-    mark_as_advanced(ProcessorCount_cmd_sysctl)
-    if(ProcessorCount_cmd_sysctl)
-      execute_process(COMMAND ${ProcessorCount_cmd_sysctl} -n hw.ncpu
-        ERROR_QUIET
-        OUTPUT_STRIP_TRAILING_WHITESPACE
-        OUTPUT_VARIABLE count)
-      #message("ProcessorCount: trying sysctl '${ProcessorCount_cmd_sysctl}'")
-    endif()
-  endif()
-
-  if(NOT count)
-    # Linux (systems with nproc):
-    # Prefer nproc to getconf if available as getconf may return the host CPU count in Linux containers
-    find_program(ProcessorCount_cmd_nproc nproc)
-    mark_as_advanced(ProcessorCount_cmd_nproc)
-    if(ProcessorCount_cmd_nproc)
-      execute_process(COMMAND ${ProcessorCount_cmd_nproc}
-        ERROR_QUIET
-        OUTPUT_STRIP_TRAILING_WHITESPACE
-        OUTPUT_VARIABLE count)
-      #message("ProcessorCount: trying nproc '${ProcessorCount_cmd_nproc}'")
-    endif()
-  endif()
-
-  if(NOT count)
-    # Linux (systems with getconf):
-    find_program(ProcessorCount_cmd_getconf getconf)
-    mark_as_advanced(ProcessorCount_cmd_getconf)
-    if(ProcessorCount_cmd_getconf)
-      execute_process(COMMAND ${ProcessorCount_cmd_getconf} _NPROCESSORS_ONLN
-        ERROR_QUIET
-        OUTPUT_STRIP_TRAILING_WHITESPACE
-        OUTPUT_VARIABLE count)
-      #message("ProcessorCount: trying getconf '${ProcessorCount_cmd_getconf}'")
-    endif()
-  endif()
-
-  if(NOT count)
-    # HPUX (systems with machinfo):
-    find_program(ProcessorCount_cmd_machinfo machinfo
-      PATHS /usr/contrib/bin)
-    mark_as_advanced(ProcessorCount_cmd_machinfo)
-    if(ProcessorCount_cmd_machinfo)
-      execute_process(COMMAND ${ProcessorCount_cmd_machinfo}
-        ERROR_QUIET
-        OUTPUT_STRIP_TRAILING_WHITESPACE
-        OUTPUT_VARIABLE machinfo_output)
-      string(REGEX MATCHALL "Number of CPUs = ([0-9]+)" procs "${machinfo_output}")
-      set(count "${CMAKE_MATCH_1}")
-      if(NOT count)
-        string(REGEX MATCHALL "([0-9]+) logical processors" procs "${machinfo_output}")
-        set(count "${CMAKE_MATCH_1}")
-      endif()
-      #message("ProcessorCount: trying machinfo '${ProcessorCount_cmd_machinfo}'")
-    else()
-      find_program(ProcessorCount_cmd_mpsched mpsched)
-      mark_as_advanced(ProcessorCount_cmd_mpsched)
-      if(ProcessorCount_cmd_mpsched)
-        execute_process(COMMAND ${ProcessorCount_cmd_mpsched} -s
-          OUTPUT_QUIET
-          ERROR_STRIP_TRAILING_WHITESPACE
-          ERROR_VARIABLE mpsched_output)
-        string(REGEX MATCHALL "Processor Count *: *([0-9]+)" procs "${mpsched_output}")
-        set(count "${CMAKE_MATCH_1}")
-        #message("ProcessorCount: trying mpsched -s '${ProcessorCount_cmd_mpsched}'")
-      endif()
-    endif()
-  endif()
-
-  if(NOT count)
-    # AIX (systems with lsconf):
-    find_program(ProcessorCount_cmd_lsconf lsconf
-      PATHS /usr/sbin)
-    mark_as_advanced(ProcessorCount_cmd_lsconf)
-    if(ProcessorCount_cmd_lsconf)
-      execute_process(COMMAND ${ProcessorCount_cmd_lsconf}
-        ERROR_QUIET
-        OUTPUT_STRIP_TRAILING_WHITESPACE
-        OUTPUT_VARIABLE lsconf_output)
-      string(REGEX MATCHALL "Number Of Processors: ([0-9]+)" procs "${lsconf_output}")
-      set(count "${CMAKE_MATCH_1}")
-      #message("ProcessorCount: trying lsconf '${ProcessorCount_cmd_lsconf}'")
-    endif()
-  endif()
-
-  if(NOT count)
-    # QNX (systems with pidin):
-    find_program(ProcessorCount_cmd_pidin pidin)
-    mark_as_advanced(ProcessorCount_cmd_pidin)
-    if(ProcessorCount_cmd_pidin)
-      execute_process(COMMAND ${ProcessorCount_cmd_pidin} info
-        ERROR_QUIET
-        OUTPUT_STRIP_TRAILING_WHITESPACE
-        OUTPUT_VARIABLE pidin_output)
-      string(REGEX MATCHALL "Processor[0-9]+: " procs "${pidin_output}")
-      list(LENGTH procs count)
-      #message("ProcessorCount: trying pidin '${ProcessorCount_cmd_pidin}'")
-    endif()
-  endif()
-
-  if(NOT count)
-    # Sun (systems where psrinfo tool is available)
-    find_program(ProcessorCount_cmd_psrinfo psrinfo PATHS /usr/sbin /sbin)
-    mark_as_advanced(ProcessorCount_cmd_psrinfo)
-    if (ProcessorCount_cmd_psrinfo)
-      execute_process(COMMAND ${ProcessorCount_cmd_psrinfo} -p -v
-        ERROR_QUIET
-        OUTPUT_STRIP_TRAILING_WHITESPACE
-        OUTPUT_VARIABLE psrinfo_output)
-      string(REGEX MATCHALL "has [0-9]+ virtual processor" procs "${psrinfo_output}")
-      set(count "")
-      foreach(proc ${procs})
-        string(REGEX MATCH "has ([0-9]+) virtual" res ${proc})
-        math(EXPR count "${count} + ${CMAKE_MATCH_1}")
-      endforeach()
-      #message("ProcessorCount: trying '${ProcessorCount_cmd_psrinfo}' -p -v")
-    else()
-      # Sun (systems where uname -X emits "NumCPU" in its output):
-      find_program(ProcessorCount_cmd_uname uname)
-      mark_as_advanced(ProcessorCount_cmd_uname)
-      if(ProcessorCount_cmd_uname)
-        execute_process(COMMAND ${ProcessorCount_cmd_uname} -X
-          ERROR_QUIET
-          OUTPUT_STRIP_TRAILING_WHITESPACE
-          OUTPUT_VARIABLE uname_X_output)
-        string(REGEX MATCHALL "NumCPU = ([0-9]+)" procs "${uname_X_output}")
-        set(count "${CMAKE_MATCH_1}")
-        #message("ProcessorCount: trying uname -X '${ProcessorCount_cmd_uname}'")
-      endif()
-    endif()
-  endif()
-
-  # Execute this code when all previously attempted methods return empty
-  # output:
-  #
-  if(NOT count)
-    # Systems with /proc/cpuinfo:
-    set(cpuinfo_file /proc/cpuinfo)
-    if(EXISTS "${cpuinfo_file}")
-      file(STRINGS "${cpuinfo_file}" procs REGEX "^processor.: [0-9]+$")
-      list(LENGTH procs count)
-      #message("ProcessorCount: trying cpuinfo '${cpuinfo_file}'")
-    endif()
-  endif()
-
-  if(NOT count)
-    # Haiku
-    find_program(ProcessorCount_cmd_sysinfo sysinfo)
-    if(ProcessorCount_cmd_sysinfo)
-      execute_process(COMMAND ${ProcessorCount_cmd_sysinfo}
-        ERROR_QUIET
-        OUTPUT_STRIP_TRAILING_WHITESPACE
-        OUTPUT_VARIABLE sysinfo_X_output)
-      string(REGEX MATCHALL "\nCPU #[0-9]+:" procs "\n${sysinfo_X_output}")
-      list(LENGTH procs count)
-      #message("ProcessorCount: trying sysinfo '${ProcessorCount_cmd_sysinfo}'")
-    endif()
-  endif()
-
-  # Since cygwin builds of CMake do not define WIN32 anymore, but they still
-  # run on Windows, and will still have this env var defined:
-  #
-  if(NOT count)
-    set(count "$ENV{NUMBER_OF_PROCESSORS}")
-    #message("ProcessorCount: last fallback, trying environment variable")
-  endif()
-
-  # Ensure an integer return (avoid inadvertently returning an empty string
-  # or an error string)... If it's not a decimal integer, return 0:
-  #
-  if(NOT count MATCHES "^[0-9]+$")
-    set(count 0)
-  endif()
-
-  set(${var} ${count} PARENT_SCOPE)
-endfunction()
diff --git a/share/cmake-3.18/Modules/TestBigEndian.cmake b/share/cmake-3.18/Modules/TestBigEndian.cmake
deleted file mode 100644
index 8a769b7..0000000
--- a/share/cmake-3.18/Modules/TestBigEndian.cmake
+++ /dev/null
@@ -1,123 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-TestBigEndian
--------------
-
-Define macro to determine endian type
-
-Check if the system is big endian or little endian
-
-::
-
-  TEST_BIG_ENDIAN(VARIABLE)
-  VARIABLE - variable to store the result to
-#]=======================================================================]
-
-include(CheckTypeSize)
-
-macro(TEST_BIG_ENDIAN VARIABLE)
-  if(NOT DEFINED HAVE_${VARIABLE})
-    message(CHECK_START "Check if the system is big endian")
-    message(CHECK_START "Searching 16 bit integer")
-
-    if(CMAKE_C_COMPILER_LOADED)
-      set(_test_language "C")
-    elseif(CMAKE_CXX_COMPILER_LOADED)
-      set(_test_language "CXX")
-    else()
-      message(FATAL_ERROR "TEST_BIG_ENDIAN needs either C or CXX language enabled")
-    endif()
-
-    CHECK_TYPE_SIZE("unsigned short" CMAKE_SIZEOF_UNSIGNED_SHORT LANGUAGE ${_test_language})
-    if(CMAKE_SIZEOF_UNSIGNED_SHORT EQUAL 2)
-      message(CHECK_PASS "Using unsigned short")
-      set(CMAKE_16BIT_TYPE "unsigned short")
-    else()
-      CHECK_TYPE_SIZE("unsigned int"   CMAKE_SIZEOF_UNSIGNED_INT LANGUAGE ${_test_language})
-      if(CMAKE_SIZEOF_UNSIGNED_INT)
-        message(CHECK_PASS "Using unsigned int")
-        set(CMAKE_16BIT_TYPE "unsigned int")
-
-      else()
-
-        CHECK_TYPE_SIZE("unsigned long"  CMAKE_SIZEOF_UNSIGNED_LONG LANGUAGE ${_test_language})
-        if(CMAKE_SIZEOF_UNSIGNED_LONG)
-          message(CHECK_PASS "Using unsigned long")
-          set(CMAKE_16BIT_TYPE "unsigned long")
-        else()
-          message(FATAL_ERROR "no suitable type found")
-        endif()
-
-      endif()
-
-    endif()
-
-    if(_test_language STREQUAL "CXX")
-      set(_test_file "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/TestEndianess.cpp")
-    else()
-      set(_test_file "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/TestEndianess.c")
-    endif()
-
-    configure_file("${CMAKE_ROOT}/Modules/TestEndianess.c.in"
-                   ${_test_file}
-                   @ONLY)
-
-     file(READ ${_test_file} TEST_ENDIANESS_FILE_CONTENT)
-
-     try_compile(HAVE_${VARIABLE}
-      "${CMAKE_BINARY_DIR}"
-      ${_test_file}
-      OUTPUT_VARIABLE OUTPUT
-      COPY_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestEndianess.bin" )
-
-      if(HAVE_${VARIABLE})
-
-        file(STRINGS "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestEndianess.bin"
-            CMAKE_TEST_ENDIANESS_STRINGS_LE LIMIT_COUNT 1 REGEX "THIS IS LITTLE ENDIAN")
-
-        file(STRINGS "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestEndianess.bin"
-            CMAKE_TEST_ENDIANESS_STRINGS_BE LIMIT_COUNT 1 REGEX "THIS IS BIG ENDIAN")
-
-        # on mac, if there are universal binaries built both will be true
-        # return the result depending on the machine on which cmake runs
-        if(CMAKE_TEST_ENDIANESS_STRINGS_BE  AND  CMAKE_TEST_ENDIANESS_STRINGS_LE)
-          if(CMAKE_SYSTEM_PROCESSOR MATCHES powerpc)
-            set(CMAKE_TEST_ENDIANESS_STRINGS_BE TRUE)
-            set(CMAKE_TEST_ENDIANESS_STRINGS_LE FALSE)
-          else()
-            set(CMAKE_TEST_ENDIANESS_STRINGS_BE FALSE)
-            set(CMAKE_TEST_ENDIANESS_STRINGS_LE TRUE)
-          endif()
-          message(STATUS "TEST_BIG_ENDIAN found different results, consider setting CMAKE_OSX_ARCHITECTURES or CMAKE_TRY_COMPILE_OSX_ARCHITECTURES to one or no architecture !")
-        endif()
-
-        if(CMAKE_TEST_ENDIANESS_STRINGS_LE)
-          set(${VARIABLE} 0 CACHE INTERNAL "Result of TEST_BIG_ENDIAN" FORCE)
-          message(CHECK_PASS "little endian")
-        endif()
-
-        if(CMAKE_TEST_ENDIANESS_STRINGS_BE)
-          set(${VARIABLE} 1 CACHE INTERNAL "Result of TEST_BIG_ENDIAN" FORCE)
-          message(CHECK_PASS "big endian")
-        endif()
-
-        if(NOT CMAKE_TEST_ENDIANESS_STRINGS_BE  AND  NOT CMAKE_TEST_ENDIANESS_STRINGS_LE)
-          message(CHECK_FAIL "TEST_BIG_ENDIAN found no result!")
-          message(SEND_ERROR "TEST_BIG_ENDIAN found no result!")
-        endif()
-
-        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-          "Determining if the system is big endian passed with the following output:\n${OUTPUT}\nTestEndianess.c:\n${TEST_ENDIANESS_FILE_CONTENT}\n\n")
-
-      else()
-        message(CHECK_FAIL "failed")
-        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-          "Determining if the system is big endian failed with the following output:\n${OUTPUT}\nTestEndianess.c:\n${TEST_ENDIANESS_FILE_CONTENT}\n\n")
-        set(${VARIABLE})
-      endif()
-  endif()
-endmacro()
-
-
diff --git a/share/cmake-3.18/Modules/UseJava.cmake b/share/cmake-3.18/Modules/UseJava.cmake
deleted file mode 100644
index db3fb95..0000000
--- a/share/cmake-3.18/Modules/UseJava.cmake
+++ /dev/null
@@ -1,1438 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-UseJava
--------
-
-Use Module for Java
-
-This file provides functions for Java.  It is assumed that
-:module:`FindJava` has already been loaded.  See :module:`FindJava` for
-information on how to load Java into your CMake project.
-
-Creating And Installing JARs
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  add_jar(<target_name>
-          [SOURCES] <source1> [<source2>...] [<resource1>...]
-          [INCLUDE_JARS <jar1> [<jar2>...]]
-          [ENTRY_POINT <entry>]
-          [VERSION <version>]
-          [OUTPUT_NAME <name>]
-          [OUTPUT_DIR <dir>]
-          [GENERATE_NATIVE_HEADERS <target> [DESTINATION <dir>]]
-          )
-
-This command creates a ``<target_name>.jar``.  It compiles the given
-``<source>`` files and adds the given ``<resource>`` files to
-the jar file.  Source files can be java files or listing files
-(prefixed by ``@``).  If only resource files are given then just a jar file
-is created.  The list of ``INCLUDE_JARS`` are added to the classpath when
-compiling the java sources and also to the dependencies of the target.
-``INCLUDE_JARS`` also accepts other target names created by ``add_jar()``.
-For backwards compatibility, jar files listed as sources are ignored (as
-they have been since the first version of this module).
-
-The default ``OUTPUT_DIR`` can also be changed by setting the variable
-``CMAKE_JAVA_TARGET_OUTPUT_DIR``.
-
-Optionally, using option ``GENERATE_NATIVE_HEADERS``, native header files can
-be generated for methods declared as native.  These files provide the
-connective glue that allow your Java and C code to interact.  An INTERFACE
-target will be created for an easy usage of generated files.  Sub-option
-``DESTINATION`` can be used to specify the output directory for generated
-header files.
-
-``GENERATE_NATIVE_HEADERS`` option requires, at least, version 1.8 of the JDK.
-
-The ``add_jar()`` function sets the following target properties on
-``<target_name>``:
-
-``INSTALL_FILES``
-  The files which should be installed.  This is used by ``install_jar()``.
-``JNI_SYMLINK``
-  The JNI symlink which should be installed.  This is used by
-  ``install_jni_symlink()``.
-``JAR_FILE``
-  The location of the jar file so that you can include it.
-``CLASSDIR``
-  The directory where the class files can be found.  For example to use them
-  with ``javah``.
-
-.. code-block:: cmake
-
- install_jar(<target_name> <destination>)
- install_jar(<target_name> DESTINATION <destination> [COMPONENT <component>])
-
-This command installs the ``<target_name>`` files to the given
-``<destination>``.  It should be called in the same scope as ``add_jar()`` or
-it will fail.
-
-The ``install_jar()`` function sets the ``INSTALL_DESTINATION`` target
-property on jars so installed.  This property holds the ``<destination>`` as
-described above, and is used by ``install_jar_exports()``.  You can get this
-information with :command:`get_property` and the ``INSTALL_DESTINATION``
-property key.
-
-.. code-block:: cmake
-
- install_jni_symlink(<target_name> <destination>)
- install_jni_symlink(<target_name> DESTINATION <destination> [COMPONENT <component>])
-
-This command installs the ``<target_name>`` JNI symlinks to the given
-``<destination>``.  It should be called in the same scope as ``add_jar()`` or
-it will fail.
-
-.. code-block:: cmake
-
- install_jar_exports(TARGETS <jars>...
-                     [NAMESPACE <namespace>]
-                     FILE <filename>
-                     DESTINATION <destination> [COMPONENT <component>])
-
-This command installs a target export file ``<filename>`` for the named jar
-targets to the given ``<destination>`` directory.  Its function is similar to
-that of :command:`install(EXPORTS)`.
-
-.. code-block:: cmake
-
- export_jars(TARGETS <jars>...
-             [NAMESPACE <namespace>]
-             FILE <filename>)
-
-This command writes a target export file ``<filename>`` for the named ``<jars>``
-targets.  Its function is similar to that of :command:`export`.
-
-
-Examples
-""""""""
-
-To add compile flags to the target you can set these flags with the following
-variable:
-
-.. code-block:: cmake
-
-  set(CMAKE_JAVA_COMPILE_FLAGS -nowarn)
-
-
-To add a path or a jar file to the class path you can do this with the
-``CMAKE_JAVA_INCLUDE_PATH`` variable.
-
-.. code-block:: cmake
-
-  set(CMAKE_JAVA_INCLUDE_PATH /usr/share/java/shibboleet.jar)
-
-To use a different output name for the target you can set it with:
-
-.. code-block:: cmake
-
-  add_jar(foobar foobar.java OUTPUT_NAME shibboleet.jar)
-
-To use a different output directory than ``CMAKE_CURRENT_BINARY_DIR`` you can
-set it with:
-
-.. code-block:: cmake
-
-  add_jar(foobar foobar.java OUTPUT_DIR ${PROJECT_BINARY_DIR}/bin)
-
-To define an entry point in your jar you can set it with the ``ENTRY_POINT``
-named argument:
-
-.. code-block:: cmake
-
-  add_jar(example ENTRY_POINT com/examples/MyProject/Main)
-
-To define a custom manifest for the jar, you can set it with the ``MANIFEST``
-named argument:
-
-.. code-block:: cmake
-
-  add_jar(example MANIFEST /path/to/manifest)
-
-To add a version to the target output name you can set it using the ``VERSION``
-named argument to ``add_jar()``.  The following example will create a jar file
-with the name ``shibboleet-1.0.0.jar`` and will create a symlink
-``shibboleet.jar`` pointing to the jar with the version information.
-
-.. code-block:: cmake
-
-  add_jar(shibboleet shibbotleet.java VERSION 1.2.0)
-
-If the target is a JNI library, utilize the following commands to
-create a JNI symbolic link:
-
-.. code-block:: cmake
-
-  set(CMAKE_JNI_TARGET TRUE)
-  add_jar(shibboleet shibbotleet.java VERSION 1.2.0)
-  install_jar(shibboleet ${LIB_INSTALL_DIR}/shibboleet)
-  install_jni_symlink(shibboleet ${JAVA_LIB_INSTALL_DIR})
-
-If a single target needs to produce more than one jar from its
-java source code, to prevent the accumulation of duplicate class
-files in subsequent jars, set/reset ``CMAKE_JAR_CLASSES_PREFIX`` prior
-to calling the ``add_jar()`` function:
-
-.. code-block:: cmake
-
-  set(CMAKE_JAR_CLASSES_PREFIX com/redhat/foo)
-  add_jar(foo foo.java)
-
-  set(CMAKE_JAR_CLASSES_PREFIX com/redhat/bar)
-  add_jar(bar bar.java)
-
-For an optimum usage of option ``GENERATE_NATIVE_HEADERS``, it is recommended to
-include module JNI before any call to ``add_jar()``. The produced target for
-native headers can then be used to compile C/C++ sources with the
-:command:`target_link_libraries` command.
-
-.. code-block:: cmake
-
-  find_package(JNI)
-  add_jar(foo foo.java GENERATE_NATIVE_HEADERS foo-native)
-  add_library(bar bar.cpp)
-  target_link_libraries(bar PRIVATE foo-native)
-
-
-Finding JARs
-^^^^^^^^^^^^
-
-.. code-block:: cmake
-
-  find_jar(<VAR>
-           <name> | NAMES <name1> [<name2>...]
-           [PATHS <path1> [<path2>... ENV <var>]]
-           [VERSIONS <version1> [<version2>]]
-           [DOC "cache documentation string"]
-          )
-
-This command is used to find a full path to the named jar.  A cache
-entry named by ``<VAR>`` is created to store the result of this command.
-If the full path to a jar is found the result is stored in the
-variable and the search will not repeated unless the variable is
-cleared.  If nothing is found, the result will be ``<VAR>-NOTFOUND``, and
-the search will be attempted again next time ``find_jar()`` is invoked with
-the same variable.  The name of the full path to a file that is
-searched for is specified by the names listed after ``NAMES`` argument.
-Additional search locations can be specified after the ``PATHS`` argument.
-If you require special a version of a jar file you can specify it with
-the ``VERSIONS`` argument.  The argument after ``DOC`` will be used for the
-documentation string in the cache.
-
-
-Javadoc
-^^^^^^^
-
-The ``create_javadoc()`` command can be used to create java documentation
-based on files or packages.  For more details please read the javadoc manpage.
-
-There are two main signatures for ``create_javadoc()``.  The first signature
-works with package names on a path with source files.
-
-.. code-block:: cmake
-
- create_javadoc(<VAR>
-                PACKAGES <pkg1> [<pkg2>...]
-                [SOURCEPATH <sourcepath>]
-                [CLASSPATH <classpath>]
-                [INSTALLPATH <install path>]
-                [DOCTITLE "the documentation title"]
-                [WINDOWTITLE "the title of the document"]
-                [AUTHOR TRUE|FALSE]
-                [USE TRUE|FALSE]
-                [VERSION TRUE|FALSE]
-                )
-
-For example:
-
-.. code-block:: cmake
-
-  create_javadoc(my_example_doc
-    PACKAGES com.example.foo com.example.bar
-    SOURCEPATH "${CMAKE_CURRENT_SOURCE_DIR}"
-    CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH}
-    WINDOWTITLE "My example"
-    DOCTITLE "<h1>My example</h1>"
-    AUTHOR TRUE
-    USE TRUE
-    VERSION TRUE
-  )
-
-The second signature for ``create_javadoc()`` works on a given list of
-files.
-
-.. code-block:: cmake
-
-  create_javadoc(<VAR>
-                 FILES <file1> [<file2>...]
-                 [CLASSPATH <classpath>]
-                 [INSTALLPATH <install path>]
-                 [DOCTITLE "the documentation title"]
-                 [WINDOWTITLE "the title of the document"]
-                 [AUTHOR TRUE|FALSE]
-                 [USE TRUE|FALSE]
-                 [VERSION TRUE|FALSE]
-                )
-
-For example:
-
-.. code-block:: cmake
-
-  create_javadoc(my_example_doc
-    FILES ${example_SRCS}
-    CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH}
-    WINDOWTITLE "My example"
-    DOCTITLE "<h1>My example</h1>"
-    AUTHOR TRUE
-    USE TRUE
-    VERSION TRUE
-  )
-
-Both signatures share most of the options.  These options are the same
-as what you can find in the javadoc manpage.  Please look at the
-manpage for ``CLASSPATH``, ``DOCTITLE``, ``WINDOWTITLE``, ``AUTHOR``, ``USE``
-and ``VERSION``.
-
-If you don't set the ``INSTALLPATH``, then by default the documentation will
-be installed to :
-
-::
-
-   ${CMAKE_INSTALL_PREFIX}/share/javadoc/<VAR>
-
-
-Header Generation
-^^^^^^^^^^^^^^^^^
-
-.. code-block:: cmake
-
- create_javah(TARGET <target> | GENERATED_FILES <VAR>
-              CLASSES <class>...
-              [CLASSPATH <classpath>...]
-              [DEPENDS <depend>...]
-              [OUTPUT_NAME <path>|OUTPUT_DIR <path>]
-              )
-
-Create C header files from java classes. These files provide the connective glue
-that allow your Java and C code to interact.
-
-.. deprecated:: 3.11
-
-.. note::
-
-  This command will no longer be supported starting with version 10 of the JDK
-  due to the `suppression of javah tool <http://openjdk.java.net/jeps/313>`_.
-  The ``add_jar(GENERATE_NATIVE_HEADERS)`` command should be used instead.
-
-There are two main signatures for ``create_javah()``.  The first signature
-returns generated files through variable specified by the ``GENERATED_FILES``
-option.  For example:
-
-.. code-block:: cmake
-
-  create_javah(GENERATED_FILES files_headers
-    CLASSES org.cmake.HelloWorld
-    CLASSPATH hello.jar
-  )
-
-The second signature for ``create_javah()`` creates a target which encapsulates
-header files generation. E.g.
-
-.. code-block:: cmake
-
-  create_javah(TARGET target_headers
-    CLASSES org.cmake.HelloWorld
-    CLASSPATH hello.jar
-  )
-
-Both signatures share same options.
-
-``CLASSES <class>...``
-  Specifies Java classes used to generate headers.
-
-``CLASSPATH <classpath>...``
-  Specifies various paths to look up classes. Here .class files, jar files or
-  targets created by command add_jar can be used.
-
-``DEPENDS <depend>...``
-  Targets on which the javah target depends.
-
-``OUTPUT_NAME <path>``
-  Concatenates the resulting header files for all the classes listed by option
-  ``CLASSES`` into ``<path>``.  Same behavior as option ``-o`` of javah tool.
-
-``OUTPUT_DIR <path>``
-  Sets the directory where the header files will be generated.  Same behavior
-  as option ``-d`` of javah tool.  If not specified,
-  :variable:`CMAKE_CURRENT_BINARY_DIR` is used as the output directory.
-#]=======================================================================]
-
-function (__java_copy_file src dest comment)
-    add_custom_command(
-        OUTPUT  ${dest}
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different
-        ARGS    ${src}
-                ${dest}
-        DEPENDS ${src}
-        COMMENT ${comment}
-        VERBATIM
-        )
-endfunction ()
-
-function(__java_lcat VAR)
-    foreach(_line IN LISTS ARGN)
-        string(APPEND ${VAR} "${_line}\n")
-    endforeach()
-
-    set(${VAR} "${${VAR}}" PARENT_SCOPE)
-endfunction()
-
-function(__java_export_jar VAR TARGET PATH)
-    get_target_property(_jarpath ${TARGET} JAR_FILE)
-    get_filename_component(_jarname ${_jarpath} NAME)
-    set(_target "${_jar_NAMESPACE}${TARGET}")
-    __java_lcat(${VAR}
-      "# Create imported target ${_target}"
-      "add_library(${_target} IMPORTED STATIC)"
-      "set_target_properties(${_target} PROPERTIES"
-      "  IMPORTED_LOCATION \"${PATH}/${_jarname}\""
-      "  JAR_FILE \"${PATH}/${_jarname}\")"
-      ""
-    )
-    set(${VAR} "${${VAR}}" PARENT_SCOPE)
-endfunction()
-
-# define helper scripts
-set(_JAVA_EXPORT_TARGETS_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/javaTargets.cmake.in)
-set(_JAVA_SYMLINK_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/UseJavaSymlinks.cmake)
-
-if (CMAKE_HOST_WIN32 AND NOT CYGWIN AND CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
-    set(_UseJava_PATH_SEP "$<SEMICOLON>")
-else ()
-    set(_UseJava_PATH_SEP ":")
-endif()
-
-function(add_jar _TARGET_NAME)
-
-    cmake_parse_arguments(_add_jar
-      ""
-      "VERSION;OUTPUT_DIR;OUTPUT_NAME;ENTRY_POINT;MANIFEST"
-      "SOURCES;INCLUDE_JARS;GENERATE_NATIVE_HEADERS"
-      ${ARGN}
-    )
-
-    # In CMake < 2.8.12, add_jar used variables which were set prior to calling
-    # add_jar for customizing the behavior of add_jar. In order to be backwards
-    # compatible, check if any of those variables are set, and use them to
-    # initialize values of the named arguments. (Giving the corresponding named
-    # argument will override the value set here.)
-    #
-    # New features should use named arguments only.
-    if(NOT DEFINED _add_jar_VERSION AND DEFINED CMAKE_JAVA_TARGET_VERSION)
-        set(_add_jar_VERSION "${CMAKE_JAVA_TARGET_VERSION}")
-    endif()
-    if(NOT DEFINED _add_jar_OUTPUT_DIR AND DEFINED CMAKE_JAVA_TARGET_OUTPUT_DIR)
-        set(_add_jar_OUTPUT_DIR "${CMAKE_JAVA_TARGET_OUTPUT_DIR}")
-    endif()
-    if(NOT DEFINED _add_jar_OUTPUT_NAME AND DEFINED CMAKE_JAVA_TARGET_OUTPUT_NAME)
-        set(_add_jar_OUTPUT_NAME "${CMAKE_JAVA_TARGET_OUTPUT_NAME}")
-        # reset
-        set(CMAKE_JAVA_TARGET_OUTPUT_NAME)
-    endif()
-    if(NOT DEFINED _add_jar_ENTRY_POINT AND DEFINED CMAKE_JAVA_JAR_ENTRY_POINT)
-        set(_add_jar_ENTRY_POINT "${CMAKE_JAVA_JAR_ENTRY_POINT}")
-    endif()
-
-    set(_JAVA_SOURCE_FILES ${_add_jar_SOURCES} ${_add_jar_UNPARSED_ARGUMENTS})
-
-    if (NOT DEFINED _add_jar_OUTPUT_DIR)
-        set(_add_jar_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
-    else()
-        get_filename_component(_add_jar_OUTPUT_DIR ${_add_jar_OUTPUT_DIR} ABSOLUTE)
-    endif()
-    # ensure output directory exists
-    file (MAKE_DIRECTORY "${_add_jar_OUTPUT_DIR}")
-
-    if (_add_jar_ENTRY_POINT)
-        set(_ENTRY_POINT_OPTION e)
-        set(_ENTRY_POINT_VALUE ${_add_jar_ENTRY_POINT})
-    endif ()
-
-    if (_add_jar_MANIFEST)
-        set(_MANIFEST_OPTION m)
-        get_filename_component (_MANIFEST_VALUE "${_add_jar_MANIFEST}" ABSOLUTE)
-    endif ()
-
-    unset (_GENERATE_NATIVE_HEADERS)
-    if (_add_jar_GENERATE_NATIVE_HEADERS)
-      # Raise an error if JDK version is less than 1.8 because javac -h is not supported
-      # by earlier versions.
-      if (Java_VERSION VERSION_LESS 1.8)
-        message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS is not supported with this version of Java.")
-      endif()
-      cmake_parse_arguments (_add_jar_GENERATE_NATIVE_HEADERS "" "DESTINATION" "" ${_add_jar_GENERATE_NATIVE_HEADERS})
-      if (NOT _add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS)
-        message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS: missing required argument.")
-      endif()
-      list (LENGTH _add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS length)
-      if (length GREATER 1)
-        list (REMOVE_AT _add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS 0)
-        message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS: ${_add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS}: unexpected argument(s).")
-      endif()
-      if (NOT _add_jar_GENERATE_NATIVE_HEADERS_DESTINATION)
-        set (_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_TARGET_NAME}.dir/native_headers")
-      endif()
-
-      set (_GENERATE_NATIVE_HEADERS_TARGET ${_add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS})
-      set (_GENERATE_NATIVE_HEADERS_OUTPUT_DIR "${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION}")
-      set (_GENERATE_NATIVE_HEADERS -h "${_GENERATE_NATIVE_HEADERS_OUTPUT_DIR}")
-    endif()
-
-    if (LIBRARY_OUTPUT_PATH)
-        set(CMAKE_JAVA_LIBRARY_OUTPUT_PATH ${LIBRARY_OUTPUT_PATH})
-    else ()
-        set(CMAKE_JAVA_LIBRARY_OUTPUT_PATH ${_add_jar_OUTPUT_DIR})
-    endif ()
-
-    set(CMAKE_JAVA_INCLUDE_PATH
-        ${CMAKE_JAVA_INCLUDE_PATH}
-        ${CMAKE_CURRENT_SOURCE_DIR}
-        ${CMAKE_JAVA_OBJECT_OUTPUT_PATH}
-        ${CMAKE_JAVA_LIBRARY_OUTPUT_PATH}
-    )
-
-    foreach (JAVA_INCLUDE_DIR IN LISTS CMAKE_JAVA_INCLUDE_PATH)
-       string(APPEND CMAKE_JAVA_INCLUDE_PATH_FINAL "${_UseJava_PATH_SEP}${JAVA_INCLUDE_DIR}")
-    endforeach()
-
-    set(CMAKE_JAVA_CLASS_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_TARGET_NAME}.dir")
-
-    set(_JAVA_TARGET_OUTPUT_NAME "${_TARGET_NAME}.jar")
-    if (_add_jar_OUTPUT_NAME AND _add_jar_VERSION)
-        set(_JAVA_TARGET_OUTPUT_NAME "${_add_jar_OUTPUT_NAME}-${_add_jar_VERSION}.jar")
-        set(_JAVA_TARGET_OUTPUT_LINK "${_add_jar_OUTPUT_NAME}.jar")
-    elseif (_add_jar_VERSION)
-        set(_JAVA_TARGET_OUTPUT_NAME "${_TARGET_NAME}-${_add_jar_VERSION}.jar")
-        set(_JAVA_TARGET_OUTPUT_LINK "${_TARGET_NAME}.jar")
-    elseif (_add_jar_OUTPUT_NAME)
-        set(_JAVA_TARGET_OUTPUT_NAME "${_add_jar_OUTPUT_NAME}.jar")
-    endif ()
-
-    set(_JAVA_CLASS_FILES)
-    set(_JAVA_COMPILE_FILES)
-    set(_JAVA_COMPILE_FILELISTS)
-    set(_JAVA_DEPENDS)
-    set(_JAVA_COMPILE_DEPENDS)
-    set(_JAVA_RESOURCE_FILES)
-    set(_JAVA_RESOURCE_FILES_RELATIVE)
-    foreach(_JAVA_SOURCE_FILE IN LISTS _JAVA_SOURCE_FILES)
-        get_filename_component(_JAVA_EXT ${_JAVA_SOURCE_FILE} EXT)
-        get_filename_component(_JAVA_FILE ${_JAVA_SOURCE_FILE} NAME_WE)
-        get_filename_component(_JAVA_PATH ${_JAVA_SOURCE_FILE} PATH)
-        get_filename_component(_JAVA_FULL ${_JAVA_SOURCE_FILE} ABSOLUTE)
-
-        if (_JAVA_SOURCE_FILE MATCHES "^@(.+)$")
-            get_filename_component(_JAVA_FULL ${CMAKE_MATCH_1} ABSOLUTE)
-            list(APPEND _JAVA_COMPILE_FILELISTS ${_JAVA_FULL})
-
-        elseif (_JAVA_EXT MATCHES ".java")
-            file(RELATIVE_PATH _JAVA_REL_BINARY_PATH ${CMAKE_CURRENT_BINARY_DIR} ${_JAVA_FULL})
-            file(RELATIVE_PATH _JAVA_REL_SOURCE_PATH ${CMAKE_CURRENT_SOURCE_DIR} ${_JAVA_FULL})
-            string(LENGTH ${_JAVA_REL_BINARY_PATH} _BIN_LEN)
-            string(LENGTH ${_JAVA_REL_SOURCE_PATH} _SRC_LEN)
-            if (_BIN_LEN LESS _SRC_LEN)
-                set(_JAVA_REL_PATH ${_JAVA_REL_BINARY_PATH})
-            else ()
-                set(_JAVA_REL_PATH ${_JAVA_REL_SOURCE_PATH})
-            endif ()
-            get_filename_component(_JAVA_REL_PATH ${_JAVA_REL_PATH} PATH)
-
-            list(APPEND _JAVA_COMPILE_FILES ${_JAVA_SOURCE_FILE})
-            set(_JAVA_CLASS_FILE "${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${_JAVA_REL_PATH}/${_JAVA_FILE}.class")
-            set(_JAVA_CLASS_FILES ${_JAVA_CLASS_FILES} ${_JAVA_CLASS_FILE})
-
-        elseif (_JAVA_EXT MATCHES ".jar"
-                OR _JAVA_EXT MATCHES ".war"
-                OR _JAVA_EXT MATCHES ".ear"
-                OR _JAVA_EXT MATCHES ".sar")
-            # Ignored for backward compatibility
-
-        elseif (_JAVA_EXT STREQUAL "")
-            list(APPEND CMAKE_JAVA_INCLUDE_PATH ${JAVA_JAR_TARGET_${_JAVA_SOURCE_FILE}} ${JAVA_JAR_TARGET_${_JAVA_SOURCE_FILE}_CLASSPATH})
-            list(APPEND _JAVA_DEPENDS ${JAVA_JAR_TARGET_${_JAVA_SOURCE_FILE}})
-
-        else ()
-            __java_copy_file(${CMAKE_CURRENT_SOURCE_DIR}/${_JAVA_SOURCE_FILE}
-                             ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${_JAVA_SOURCE_FILE}
-                             "Copying ${_JAVA_SOURCE_FILE} to the build directory")
-            list(APPEND _JAVA_RESOURCE_FILES ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${_JAVA_SOURCE_FILE})
-            list(APPEND _JAVA_RESOURCE_FILES_RELATIVE ${_JAVA_SOURCE_FILE})
-        endif ()
-    endforeach()
-
-    foreach(_JAVA_INCLUDE_JAR IN LISTS _add_jar_INCLUDE_JARS)
-        if (TARGET ${_JAVA_INCLUDE_JAR})
-            get_target_property(_JAVA_JAR_PATH ${_JAVA_INCLUDE_JAR} JAR_FILE)
-            if (_JAVA_JAR_PATH)
-                string(APPEND CMAKE_JAVA_INCLUDE_PATH_FINAL "${_UseJava_PATH_SEP}${_JAVA_JAR_PATH}")
-                list(APPEND CMAKE_JAVA_INCLUDE_PATH ${_JAVA_JAR_PATH})
-                list(APPEND _JAVA_DEPENDS ${_JAVA_INCLUDE_JAR})
-                list(APPEND _JAVA_COMPILE_DEPENDS ${_JAVA_JAR_PATH})
-            else ()
-                message(SEND_ERROR "add_jar: INCLUDE_JARS target ${_JAVA_INCLUDE_JAR} is not a jar")
-            endif ()
-        else ()
-            string(APPEND CMAKE_JAVA_INCLUDE_PATH_FINAL "${_UseJava_PATH_SEP}${_JAVA_INCLUDE_JAR}")
-            list(APPEND CMAKE_JAVA_INCLUDE_PATH "${_JAVA_INCLUDE_JAR}")
-            list(APPEND _JAVA_DEPENDS "${_JAVA_INCLUDE_JAR}")
-            list(APPEND _JAVA_COMPILE_DEPENDS "${_JAVA_INCLUDE_JAR}")
-        endif ()
-    endforeach()
-
-    if (_JAVA_COMPILE_FILES OR _JAVA_COMPILE_FILELISTS)
-        set (_JAVA_SOURCES_FILELISTS)
-
-        if (_JAVA_COMPILE_FILES)
-            # Create the list of files to compile.
-            set(_JAVA_SOURCES_FILE ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_sources)
-            string(REPLACE ";" "\"\n\"" _JAVA_COMPILE_STRING "\"${_JAVA_COMPILE_FILES}\"")
-            set(CMAKE_CONFIGURABLE_FILE_CONTENT "${_JAVA_COMPILE_STRING}")
-            configure_file("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
-              "${_JAVA_SOURCES_FILE}" @ONLY)
-            unset(CMAKE_CONFIGURABLE_FILE_CONTENT)
-            list (APPEND _JAVA_SOURCES_FILELISTS "@${_JAVA_SOURCES_FILE}")
-        endif()
-        if (_JAVA_COMPILE_FILELISTS)
-            foreach (_JAVA_FILELIST IN LISTS _JAVA_COMPILE_FILELISTS)
-                list (APPEND _JAVA_SOURCES_FILELISTS "@${_JAVA_FILELIST}")
-            endforeach()
-        endif()
-
-        # Compile the java files and create a list of class files
-        add_custom_command(
-            # NOTE: this command generates an artificial dependency file
-            OUTPUT ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME}
-            COMMAND ${CMAKE_COMMAND}
-                -DCMAKE_JAVA_CLASS_OUTPUT_PATH=${CMAKE_JAVA_CLASS_OUTPUT_PATH}
-                -DCMAKE_JAR_CLASSES_PREFIX=${CMAKE_JAR_CLASSES_PREFIX}
-                -P ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/UseJava/ClearClassFiles.cmake
-            COMMAND ${Java_JAVAC_EXECUTABLE}
-                ${CMAKE_JAVA_COMPILE_FLAGS}
-                -classpath "${CMAKE_JAVA_INCLUDE_PATH_FINAL}"
-                -d ${CMAKE_JAVA_CLASS_OUTPUT_PATH}
-                ${_GENERATE_NATIVE_HEADERS}
-                ${_JAVA_SOURCES_FILELISTS}
-            COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME}
-            DEPENDS ${_JAVA_COMPILE_FILES} ${_JAVA_COMPILE_FILELISTS} ${_JAVA_COMPILE_DEPENDS} ${_JAVA_SOURCES_FILE}
-            WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-            COMMENT "Building Java objects for ${_TARGET_NAME}.jar"
-            VERBATIM
-        )
-        add_custom_command(
-            OUTPUT ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist
-            COMMAND ${CMAKE_COMMAND}
-                -DCMAKE_JAVA_CLASS_OUTPUT_PATH=${CMAKE_JAVA_CLASS_OUTPUT_PATH}
-                -DCMAKE_JAR_CLASSES_PREFIX=${CMAKE_JAR_CLASSES_PREFIX}
-                -P ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/UseJavaClassFilelist.cmake
-            DEPENDS ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME}
-            WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-            VERBATIM
-        )
-    else ()
-        # create an empty java_class_filelist
-        if (NOT EXISTS ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist)
-            file(WRITE ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist "")
-        endif()
-    endif ()
-
-    # create the jar file
-    set(_JAVA_JAR_OUTPUT_PATH
-      "${_add_jar_OUTPUT_DIR}/${_JAVA_TARGET_OUTPUT_NAME}")
-    if (CMAKE_JNI_TARGET)
-        add_custom_command(
-            OUTPUT ${_JAVA_JAR_OUTPUT_PATH}
-            COMMAND ${Java_JAR_EXECUTABLE}
-                -cf${_ENTRY_POINT_OPTION}${_MANIFEST_OPTION} ${_JAVA_JAR_OUTPUT_PATH} ${_ENTRY_POINT_VALUE} ${_MANIFEST_VALUE}
-                ${_JAVA_RESOURCE_FILES_RELATIVE} @java_class_filelist
-            COMMAND ${CMAKE_COMMAND}
-                -D_JAVA_TARGET_DIR=${_add_jar_OUTPUT_DIR}
-                -D_JAVA_TARGET_OUTPUT_NAME=${_JAVA_TARGET_OUTPUT_NAME}
-                -D_JAVA_TARGET_OUTPUT_LINK=${_JAVA_TARGET_OUTPUT_LINK}
-                -P ${_JAVA_SYMLINK_SCRIPT}
-            COMMAND ${CMAKE_COMMAND}
-                -D_JAVA_TARGET_DIR=${_add_jar_OUTPUT_DIR}
-                -D_JAVA_TARGET_OUTPUT_NAME=${_JAVA_JAR_OUTPUT_PATH}
-                -D_JAVA_TARGET_OUTPUT_LINK=${_JAVA_TARGET_OUTPUT_LINK}
-                -P ${_JAVA_SYMLINK_SCRIPT}
-            DEPENDS ${_JAVA_RESOURCE_FILES} ${_JAVA_DEPENDS} ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist
-            WORKING_DIRECTORY ${CMAKE_JAVA_CLASS_OUTPUT_PATH}
-            COMMENT "Creating Java archive ${_JAVA_TARGET_OUTPUT_NAME}"
-            VERBATIM
-        )
-    else ()
-        add_custom_command(
-            OUTPUT ${_JAVA_JAR_OUTPUT_PATH}
-            COMMAND ${Java_JAR_EXECUTABLE}
-                -cf${_ENTRY_POINT_OPTION}${_MANIFEST_OPTION} ${_JAVA_JAR_OUTPUT_PATH} ${_ENTRY_POINT_VALUE} ${_MANIFEST_VALUE}
-                ${_JAVA_RESOURCE_FILES_RELATIVE} @java_class_filelist
-            COMMAND ${CMAKE_COMMAND}
-                -D_JAVA_TARGET_DIR=${_add_jar_OUTPUT_DIR}
-                -D_JAVA_TARGET_OUTPUT_NAME=${_JAVA_TARGET_OUTPUT_NAME}
-                -D_JAVA_TARGET_OUTPUT_LINK=${_JAVA_TARGET_OUTPUT_LINK}
-                -P ${_JAVA_SYMLINK_SCRIPT}
-            WORKING_DIRECTORY ${CMAKE_JAVA_CLASS_OUTPUT_PATH}
-            DEPENDS ${_JAVA_RESOURCE_FILES} ${_JAVA_DEPENDS} ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist
-            COMMENT "Creating Java archive ${_JAVA_TARGET_OUTPUT_NAME}"
-            VERBATIM
-        )
-    endif ()
-
-    # Add the target and make sure we have the latest resource files.
-    add_custom_target(${_TARGET_NAME} ALL DEPENDS ${_JAVA_JAR_OUTPUT_PATH})
-
-    set_property(
-        TARGET
-            ${_TARGET_NAME}
-        PROPERTY
-            INSTALL_FILES
-                ${_JAVA_JAR_OUTPUT_PATH}
-    )
-
-    if (_JAVA_TARGET_OUTPUT_LINK)
-        set_property(
-            TARGET
-                ${_TARGET_NAME}
-            PROPERTY
-                INSTALL_FILES
-                    ${_JAVA_JAR_OUTPUT_PATH}
-                    ${_add_jar_OUTPUT_DIR}/${_JAVA_TARGET_OUTPUT_LINK}
-        )
-
-        if (CMAKE_JNI_TARGET)
-            set_property(
-                TARGET
-                    ${_TARGET_NAME}
-                PROPERTY
-                    JNI_SYMLINK
-                        ${_add_jar_OUTPUT_DIR}/${_JAVA_TARGET_OUTPUT_LINK}
-            )
-        endif ()
-    endif ()
-
-    set_property(
-        TARGET
-            ${_TARGET_NAME}
-        PROPERTY
-            JAR_FILE
-                ${_JAVA_JAR_OUTPUT_PATH}
-    )
-
-    set_property(
-        TARGET
-            ${_TARGET_NAME}
-        PROPERTY
-            CLASSDIR
-                ${CMAKE_JAVA_CLASS_OUTPUT_PATH}
-    )
-
-  if (_GENERATE_NATIVE_HEADERS)
-    # create an INTERFACE library encapsulating include directory for generated headers
-    add_library (${_GENERATE_NATIVE_HEADERS_TARGET} INTERFACE)
-    target_include_directories (${_GENERATE_NATIVE_HEADERS_TARGET} INTERFACE
-      "${_GENERATE_NATIVE_HEADERS_OUTPUT_DIR}"
-      ${JNI_INCLUDE_DIRS})
-    # this INTERFACE library depends on jar generation
-    add_dependencies (${_GENERATE_NATIVE_HEADERS_TARGET} ${_TARGET_NAME})
-
-    set_property (DIRECTORY APPEND PROPERTY ADDITIONAL_CLEAN_FILES
-      "${_GENERATE_NATIVE_HEADERS_OUTPUT_DIR}")
-  endif()
-endfunction()
-
-function(INSTALL_JAR _TARGET_NAME)
-    if (ARGC EQUAL 2)
-      set (_DESTINATION ${ARGV1})
-    else()
-      cmake_parse_arguments(_install_jar
-        ""
-        "DESTINATION;COMPONENT"
-        ""
-        ${ARGN})
-      if (_install_jar_DESTINATION)
-        set (_DESTINATION ${_install_jar_DESTINATION})
-      else()
-        message(SEND_ERROR "install_jar: ${_TARGET_NAME}: DESTINATION must be specified.")
-      endif()
-
-      if (_install_jar_COMPONENT)
-        set (_COMPONENT COMPONENT ${_install_jar_COMPONENT})
-      endif()
-    endif()
-
-    get_property(__FILES
-        TARGET
-            ${_TARGET_NAME}
-        PROPERTY
-            INSTALL_FILES
-    )
-    set_property(
-        TARGET
-            ${_TARGET_NAME}
-        PROPERTY
-            INSTALL_DESTINATION
-            ${_DESTINATION}
-    )
-
-    if (__FILES)
-        install(
-            FILES
-                ${__FILES}
-            DESTINATION
-                ${_DESTINATION}
-            ${_COMPONENT}
-        )
-    else ()
-        message(SEND_ERROR "install_jar: The target ${_TARGET_NAME} is not known in this scope.")
-    endif ()
-endfunction()
-
-function(INSTALL_JNI_SYMLINK _TARGET_NAME)
-    if (ARGC EQUAL 2)
-      set (_DESTINATION ${ARGV1})
-    else()
-      cmake_parse_arguments(_install_jni_symlink
-        ""
-        "DESTINATION;COMPONENT"
-        ""
-        ${ARGN})
-      if (_install_jni_symlink_DESTINATION)
-        set (_DESTINATION ${_install_jni_symlink_DESTINATION})
-      else()
-        message(SEND_ERROR "install_jni_symlink: ${_TARGET_NAME}: DESTINATION must be specified.")
-      endif()
-
-      if (_install_jni_symlink_COMPONENT)
-        set (_COMPONENT COMPONENT ${_install_jni_symlink_COMPONENT})
-      endif()
-    endif()
-
-    get_property(__SYMLINK
-        TARGET
-            ${_TARGET_NAME}
-        PROPERTY
-            JNI_SYMLINK
-    )
-
-    if (__SYMLINK)
-        install(
-            FILES
-                ${__SYMLINK}
-            DESTINATION
-                ${_DESTINATION}
-            ${_COMPONENT}
-        )
-    else ()
-        message(SEND_ERROR "install_jni_symlink: The target ${_TARGET_NAME} is not known in this scope.")
-    endif ()
-endfunction()
-
-function (find_jar VARIABLE)
-    set(_jar_names)
-    set(_jar_files)
-    set(_jar_versions)
-    set(_jar_paths
-        /usr/share/java/
-        /usr/local/share/java/
-        ${Java_JAR_PATHS})
-    set(_jar_doc "NOTSET")
-
-    set(_state "name")
-
-    foreach (arg IN LISTS ARGN)
-        if (_state STREQUAL "name")
-            if (arg STREQUAL "VERSIONS")
-                set(_state "versions")
-            elseif (arg STREQUAL "NAMES")
-                set(_state "names")
-            elseif (arg STREQUAL "PATHS")
-                set(_state "paths")
-            elseif (arg STREQUAL "DOC")
-                set(_state "doc")
-            else ()
-                set(_jar_names ${arg})
-                if (_jar_doc STREQUAL "NOTSET")
-                    set(_jar_doc "Finding ${arg} jar")
-                endif ()
-            endif ()
-        elseif (_state STREQUAL "versions")
-            if (arg STREQUAL "NAMES")
-                set(_state "names")
-            elseif (arg STREQUAL "PATHS")
-                set(_state "paths")
-            elseif (arg STREQUAL "DOC")
-                set(_state "doc")
-            else ()
-                set(_jar_versions ${_jar_versions} ${arg})
-            endif ()
-        elseif (_state STREQUAL "names")
-            if (arg STREQUAL "VERSIONS")
-                set(_state "versions")
-            elseif (arg STREQUAL "PATHS")
-                set(_state "paths")
-            elseif (arg STREQUAL "DOC")
-                set(_state "doc")
-            else ()
-                set(_jar_names ${_jar_names} ${arg})
-                if (_jar_doc STREQUAL "NOTSET")
-                    set(_jar_doc "Finding ${arg} jar")
-                endif ()
-            endif ()
-        elseif (_state STREQUAL "paths")
-            if (arg STREQUAL "VERSIONS")
-                set(_state "versions")
-            elseif (arg STREQUAL "NAMES")
-                set(_state "names")
-            elseif (arg STREQUAL "DOC")
-                set(_state "doc")
-            else ()
-                set(_jar_paths ${_jar_paths} ${arg})
-            endif ()
-        elseif (_state STREQUAL "doc")
-            if (arg STREQUAL "VERSIONS")
-                set(_state "versions")
-            elseif (arg STREQUAL "NAMES")
-                set(_state "names")
-            elseif (arg STREQUAL "PATHS")
-                set(_state "paths")
-            else ()
-                set(_jar_doc ${arg})
-            endif ()
-        endif ()
-    endforeach ()
-
-    if (NOT _jar_names)
-        message(FATAL_ERROR "find_jar: No name to search for given")
-    endif ()
-
-    foreach (jar_name IN LISTS _jar_names)
-        foreach (version IN LISTS _jar_versions)
-            set(_jar_files ${_jar_files} ${jar_name}-${version}.jar)
-        endforeach ()
-        set(_jar_files ${_jar_files} ${jar_name}.jar)
-    endforeach ()
-
-    find_file(${VARIABLE}
-        NAMES   ${_jar_files}
-        PATHS   ${_jar_paths}
-        DOC     ${_jar_doc}
-        NO_DEFAULT_PATH)
-endfunction ()
-
-function(create_javadoc _target)
-    set(_javadoc_packages)
-    set(_javadoc_files)
-    set(_javadoc_sourcepath)
-    set(_javadoc_classpath)
-    set(_javadoc_installpath "${CMAKE_INSTALL_PREFIX}/share/javadoc")
-    set(_javadoc_doctitle)
-    set(_javadoc_windowtitle)
-    set(_javadoc_author FALSE)
-    set(_javadoc_version FALSE)
-    set(_javadoc_use FALSE)
-
-    set(_state "package")
-
-    foreach (arg IN LISTS ARGN)
-        if (_state STREQUAL "package")
-            if (arg STREQUAL "PACKAGES")
-                set(_state "packages")
-            elseif (arg STREQUAL "FILES")
-                set(_state "files")
-            elseif (arg STREQUAL "SOURCEPATH")
-                set(_state "sourcepath")
-            elseif (arg STREQUAL "CLASSPATH")
-                set(_state "classpath")
-            elseif (arg STREQUAL "INSTALLPATH")
-                set(_state "installpath")
-            elseif (arg STREQUAL "DOCTITLE")
-                set(_state "doctitle")
-            elseif (arg STREQUAL "WINDOWTITLE")
-                set(_state "windowtitle")
-            elseif (arg STREQUAL "AUTHOR")
-                set(_state "author")
-            elseif (arg STREQUAL "USE")
-                set(_state "use")
-            elseif (arg STREQUAL "VERSION")
-                set(_state "version")
-            else ()
-                set(_javadoc_packages ${arg})
-                set(_state "packages")
-            endif ()
-        elseif (_state STREQUAL "packages")
-            if (arg STREQUAL "FILES")
-                set(_state "files")
-            elseif (arg STREQUAL "SOURCEPATH")
-                set(_state "sourcepath")
-            elseif (arg STREQUAL "CLASSPATH")
-                set(_state "classpath")
-            elseif (arg STREQUAL "INSTALLPATH")
-                set(_state "installpath")
-            elseif (arg STREQUAL "DOCTITLE")
-                set(_state "doctitle")
-            elseif (arg STREQUAL "WINDOWTITLE")
-                set(_state "windowtitle")
-            elseif (arg STREQUAL "AUTHOR")
-                set(_state "author")
-            elseif (arg STREQUAL "USE")
-                set(_state "use")
-            elseif (arg STREQUAL "VERSION")
-                set(_state "version")
-            else ()
-                list(APPEND _javadoc_packages ${arg})
-            endif ()
-        elseif (_state STREQUAL "files")
-            if (arg STREQUAL "PACKAGES")
-                set(_state "packages")
-            elseif (arg STREQUAL "SOURCEPATH")
-                set(_state "sourcepath")
-            elseif (arg STREQUAL "CLASSPATH")
-                set(_state "classpath")
-            elseif (arg STREQUAL "INSTALLPATH")
-                set(_state "installpath")
-            elseif (arg STREQUAL "DOCTITLE")
-                set(_state "doctitle")
-            elseif (arg STREQUAL "WINDOWTITLE")
-                set(_state "windowtitle")
-            elseif (arg STREQUAL "AUTHOR")
-                set(_state "author")
-            elseif (arg STREQUAL "USE")
-                set(_state "use")
-            elseif (arg STREQUAL "VERSION")
-                set(_state "version")
-            else ()
-                list(APPEND _javadoc_files ${arg})
-            endif ()
-        elseif (_state STREQUAL "sourcepath")
-            if (arg STREQUAL "PACKAGES")
-                set(_state "packages")
-            elseif (arg STREQUAL "FILES")
-                set(_state "files")
-            elseif (arg STREQUAL "CLASSPATH")
-                set(_state "classpath")
-            elseif (arg STREQUAL "INSTALLPATH")
-                set(_state "installpath")
-            elseif (arg STREQUAL "DOCTITLE")
-                set(_state "doctitle")
-            elseif (arg STREQUAL "WINDOWTITLE")
-                set(_state "windowtitle")
-            elseif (arg STREQUAL "AUTHOR")
-                set(_state "author")
-            elseif (arg STREQUAL "USE")
-                set(_state "use")
-            elseif (arg STREQUAL "VERSION")
-                set(_state "version")
-            else ()
-                list(APPEND _javadoc_sourcepath ${arg})
-            endif ()
-        elseif (_state STREQUAL "classpath")
-            if (arg STREQUAL "PACKAGES")
-                set(_state "packages")
-            elseif (arg STREQUAL "FILES")
-                set(_state "files")
-            elseif (arg STREQUAL "SOURCEPATH")
-                set(_state "sourcepath")
-            elseif (arg STREQUAL "INSTALLPATH")
-                set(_state "installpath")
-            elseif (arg STREQUAL "DOCTITLE")
-                set(_state "doctitle")
-            elseif (arg STREQUAL "WINDOWTITLE")
-                set(_state "windowtitle")
-            elseif (arg STREQUAL "AUTHOR")
-                set(_state "author")
-            elseif (arg STREQUAL "USE")
-                set(_state "use")
-            elseif (arg STREQUAL "VERSION")
-                set(_state "version")
-            else ()
-                list(APPEND _javadoc_classpath ${arg})
-            endif ()
-        elseif (_state STREQUAL "installpath")
-            if (arg STREQUAL "PACKAGES")
-                set(_state "packages")
-            elseif (arg STREQUAL "FILES")
-                set(_state "files")
-            elseif (arg STREQUAL "SOURCEPATH")
-                set(_state "sourcepath")
-            elseif (arg STREQUAL "DOCTITLE")
-                set(_state "doctitle")
-            elseif (arg STREQUAL "WINDOWTITLE")
-                set(_state "windowtitle")
-            elseif (arg STREQUAL "AUTHOR")
-                set(_state "author")
-            elseif (arg STREQUAL "USE")
-                set(_state "use")
-            elseif (arg STREQUAL "VERSION")
-                set(_state "version")
-            else ()
-                set(_javadoc_installpath ${arg})
-            endif ()
-        elseif (_state STREQUAL "doctitle")
-            if (${arg} STREQUAL "PACKAGES")
-                set(_state "packages")
-            elseif (arg STREQUAL "FILES")
-                set(_state "files")
-            elseif (arg STREQUAL "SOURCEPATH")
-                set(_state "sourcepath")
-            elseif (arg STREQUAL "INSTALLPATH")
-                set(_state "installpath")
-            elseif (arg STREQUAL "CLASSPATH")
-                set(_state "classpath")
-            elseif (arg STREQUAL "WINDOWTITLE")
-                set(_state "windowtitle")
-            elseif (arg STREQUAL "AUTHOR")
-                set(_state "author")
-            elseif (arg STREQUAL "USE")
-                set(_state "use")
-            elseif (arg STREQUAL "VERSION")
-                set(_state "version")
-            else ()
-                set(_javadoc_doctitle ${arg})
-            endif ()
-        elseif (_state STREQUAL "windowtitle")
-            if (${arg} STREQUAL "PACKAGES")
-                set(_state "packages")
-            elseif (arg STREQUAL "FILES")
-                set(_state "files")
-            elseif (arg STREQUAL "SOURCEPATH")
-                set(_state "sourcepath")
-            elseif (arg STREQUAL "CLASSPATH")
-                set(_state "classpath")
-            elseif (arg STREQUAL "INSTALLPATH")
-                set(_state "installpath")
-            elseif (arg STREQUAL "DOCTITLE")
-                set(_state "doctitle")
-            elseif (arg STREQUAL "AUTHOR")
-                set(_state "author")
-            elseif (arg STREQUAL "USE")
-                set(_state "use")
-            elseif (arg STREQUAL "VERSION")
-                set(_state "version")
-            else ()
-                set(_javadoc_windowtitle ${arg})
-            endif ()
-        elseif (_state STREQUAL "author")
-            if (arg STREQUAL "PACKAGES")
-                set(_state "packages")
-            elseif (arg STREQUAL "FILES")
-                set(_state "files")
-            elseif (arg STREQUAL "SOURCEPATH")
-                set(_state "sourcepath")
-            elseif (arg STREQUAL "CLASSPATH")
-                set(_state "classpath")
-            elseif (arg STREQUAL "INSTALLPATH")
-                set(_state "installpath")
-            elseif (arg STREQUAL "DOCTITLE")
-                set(_state "doctitle")
-            elseif (arg STREQUAL "WINDOWTITLE")
-                set(_state "windowtitle")
-            elseif (arg STREQUAL "AUTHOR")
-                set(_state "author")
-            elseif (arg STREQUAL "USE")
-                set(_state "use")
-            elseif (arg STREQUAL "VERSION")
-                set(_state "version")
-            else ()
-                set(_javadoc_author ${arg})
-            endif ()
-        elseif (_state STREQUAL "use")
-            if (arg STREQUAL "PACKAGES")
-                set(_state "packages")
-            elseif (arg STREQUAL "FILES")
-                set(_state "files")
-            elseif (arg STREQUAL "SOURCEPATH")
-                set(_state "sourcepath")
-            elseif (arg STREQUAL "CLASSPATH")
-                set(_state "classpath")
-            elseif (arg STREQUAL "INSTALLPATH")
-                set(_state "installpath")
-            elseif (arg STREQUAL "DOCTITLE")
-                set(_state "doctitle")
-            elseif (arg STREQUAL "WINDOWTITLE")
-                set(_state "windowtitle")
-            elseif (arg STREQUAL "AUTHOR")
-                set(_state "author")
-            elseif (arg STREQUAL "USE")
-                set(_state "use")
-            elseif (arg STREQUAL "VERSION")
-                set(_state "version")
-            else ()
-                set(_javadoc_use ${arg})
-            endif ()
-        elseif (_state STREQUAL "version")
-            if (arg STREQUAL "PACKAGES")
-                set(_state "packages")
-            elseif (arg STREQUAL "FILES")
-                set(_state "files")
-            elseif (arg STREQUAL "SOURCEPATH")
-                set(_state "sourcepath")
-            elseif (arg STREQUAL "CLASSPATH")
-                set(_state "classpath")
-            elseif (arg STREQUAL "INSTALLPATH")
-                set(_state "installpath")
-            elseif (arg STREQUAL "DOCTITLE")
-                set(_state "doctitle")
-            elseif (arg STREQUAL "WINDOWTITLE")
-                set(_state "windowtitle")
-            elseif (arg STREQUAL "AUTHOR")
-                set(_state "author")
-            elseif (arg STREQUAL "USE")
-                set(_state "use")
-            elseif (arg STREQUAL "VERSION")
-                set(_state "version")
-            else ()
-                set(_javadoc_version ${arg})
-            endif ()
-        endif ()
-    endforeach ()
-
-    set(_javadoc_builddir ${CMAKE_CURRENT_BINARY_DIR}/javadoc/${_target})
-    set(_javadoc_options -d ${_javadoc_builddir})
-
-    if (_javadoc_sourcepath)
-        list(JOIN _javadoc_sourcepath "${_UseJava_PATH_SEP}" _javadoc_sourcepath)
-        list(APPEND _javadoc_options -sourcepath "\"${_javadoc_sourcepath}\"")
-    endif ()
-
-    if (_javadoc_classpath)
-        list(JOIN _javadoc_classpath "${_UseJava_PATH_SEP}" _javadoc_classpath)
-        list(APPEND _javadoc_options -classpath "\"${_javadoc_classpath}\"")
-    endif ()
-
-    if (_javadoc_doctitle)
-        list(APPEND _javadoc_options -doctitle '${_javadoc_doctitle}')
-    endif ()
-
-    if (_javadoc_windowtitle)
-        list(APPEND _javadoc_options -windowtitle '${_javadoc_windowtitle}')
-    endif ()
-
-    if (_javadoc_author)
-        list(APPEND _javadoc_options -author)
-    endif ()
-
-    if (_javadoc_use)
-        list(APPEND _javadoc_options -use)
-    endif ()
-
-    if (_javadoc_version)
-        list(APPEND _javadoc_options -version)
-    endif ()
-
-    add_custom_target(${_target}_javadoc ALL
-        COMMAND ${Java_JAVADOC_EXECUTABLE}
-                ${_javadoc_options}
-                ${_javadoc_files}
-                ${_javadoc_packages}
-        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-    )
-
-    install(
-        DIRECTORY ${_javadoc_builddir}
-        DESTINATION ${_javadoc_installpath}
-    )
-endfunction()
-
-function (create_javah)
-  if (Java_VERSION VERSION_GREATER_EQUAL 10)
-    message (FATAL_ERROR "create_javah: not supported with this Java version. Use add_jar(GENERATE_NATIVE_HEADERS) instead.")
-  elseif (Java_VERSION VERSION_GREATER_EQUAL 1.8)
-    message (DEPRECATION "create_javah: this command will no longer be supported starting with version 10 of JDK. Update your project by using command add_jar(GENERATE_NATIVE_HEADERS) instead.")
-  endif()
-
-    cmake_parse_arguments(_create_javah
-      ""
-      "TARGET;GENERATED_FILES;OUTPUT_NAME;OUTPUT_DIR"
-      "CLASSES;CLASSPATH;DEPENDS"
-      ${ARGN})
-
-    # ckeck parameters
-    if (NOT _create_javah_TARGET AND NOT _create_javah_GENERATED_FILES)
-      message (FATAL_ERROR "create_javah: TARGET or GENERATED_FILES must be specified.")
-    endif()
-    if (_create_javah_OUTPUT_NAME AND _create_javah_OUTPUT_DIR)
-      message (FATAL_ERROR "create_javah: OUTPUT_NAME and OUTPUT_DIR are mutually exclusive.")
-    endif()
-
-    if (NOT _create_javah_CLASSES)
-      message (FATAL_ERROR "create_javah: CLASSES is a required parameter.")
-    endif()
-
-    set (_output_files)
-
-    # handle javah options
-    set (_javah_options)
-
-    if (_create_javah_CLASSPATH)
-      # CLASSPATH can specify directories, jar files or targets created with add_jar command
-      set (_classpath)
-      foreach (_path IN LISTS _create_javah_CLASSPATH)
-        if (TARGET ${_path})
-          get_target_property (_jar_path ${_path} JAR_FILE)
-          if (_jar_path)
-            list (APPEND _classpath "${_jar_path}")
-            list (APPEND _create_javah_DEPENDS "${_path}")
-          else()
-            message(SEND_ERROR "create_javah: CLASSPATH target ${_path} is not a jar.")
-          endif()
-        elseif (EXISTS "${_path}")
-          list (APPEND _classpath "${_path}")
-          if (NOT IS_DIRECTORY "${_path}")
-            list (APPEND _create_javah_DEPENDS "${_path}")
-          endif()
-        else()
-          message(SEND_ERROR "create_javah: CLASSPATH entry ${_path} does not exist.")
-        endif()
-      endforeach()
-      string (REPLACE ";" "${_UseJava_PATH_SEP}" _classpath "${_classpath}")
-      list (APPEND _javah_options -classpath "${_classpath}")
-    endif()
-
-    if (_create_javah_OUTPUT_DIR)
-      list (APPEND _javah_options -d "${_create_javah_OUTPUT_DIR}")
-    endif()
-
-    if (_create_javah_OUTPUT_NAME)
-      list (APPEND _javah_options -o "${_create_javah_OUTPUT_NAME}")
-      set (_output_files "${_create_javah_OUTPUT_NAME}")
-
-      get_filename_component (_create_javah_OUTPUT_DIR "${_create_javah_OUTPUT_NAME}" DIRECTORY)
-      get_filename_component (_create_javah_OUTPUT_DIR "${_create_javah_OUTPUT_DIR}" ABSOLUTE)
-    endif()
-
-    if (NOT _create_javah_OUTPUT_DIR)
-      set (_create_javah_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")
-    endif()
-
-    if (NOT _create_javah_OUTPUT_NAME)
-      # compute output names
-      foreach (_class IN LISTS _create_javah_CLASSES)
-        string (REPLACE "." "_" _c_header "${_class}")
-        set (_c_header  "${_create_javah_OUTPUT_DIR}/${_c_header}.h")
-        list (APPEND _output_files "${_c_header}")
-      endforeach()
-    endif()
-
-    # finalize custom command arguments
-    if (_create_javah_DEPENDS)
-      list (INSERT _create_javah_DEPENDS 0 DEPENDS)
-    endif()
-
-    add_custom_command (OUTPUT ${_output_files}
-      COMMAND "${Java_JAVAH_EXECUTABLE}" ${_javah_options} -jni ${_create_javah_CLASSES}
-      ${_create_javah_DEPENDS}
-      WORKING_DIRECTORY ${_create_javah_OUTPUT_DIR}
-      COMMENT "Building C header files from classes...")
-
-    if (_create_javah_TARGET)
-      add_custom_target (${_create_javah_TARGET} ALL DEPENDS ${_output_files})
-    endif()
-    if (_create_javah_GENERATED_FILES)
-      set (${_create_javah_GENERATED_FILES} ${_output_files} PARENT_SCOPE)
-    endif()
-endfunction()
-
-function(export_jars)
-    # Parse and validate arguments
-    cmake_parse_arguments(_export_jars
-      ""
-      "FILE;NAMESPACE"
-      "TARGETS"
-      ${ARGN}
-    )
-    if (NOT _export_jars_FILE)
-      message(SEND_ERROR "export_jars: FILE must be specified.")
-    endif()
-    if (NOT _export_jars_TARGETS)
-      message(SEND_ERROR "export_jars: TARGETS must be specified.")
-    endif()
-    set(_jar_NAMESPACE "${_export_jars_NAMESPACE}")
-
-    # Set content of generated exports file
-    string(REPLACE ";" " " __targets__ "${_export_jars_TARGETS}")
-    set(__targetdefs__ "")
-    foreach(_target IN LISTS _export_jars_TARGETS)
-        get_target_property(_jarpath ${_target} JAR_FILE)
-        get_filename_component(_jarpath ${_jarpath} PATH)
-        __java_export_jar(__targetdefs__ ${_target} "${_jarpath}")
-    endforeach()
-
-    # Generate exports file
-    configure_file(
-      ${_JAVA_EXPORT_TARGETS_SCRIPT}
-      ${_export_jars_FILE}
-      @ONLY
-    )
-endfunction()
-
-function(install_jar_exports)
-    # Parse and validate arguments
-    cmake_parse_arguments(_install_jar_exports
-      ""
-      "FILE;DESTINATION;COMPONENT;NAMESPACE"
-      "TARGETS"
-      ${ARGN}
-    )
-    if (NOT _install_jar_exports_FILE)
-      message(SEND_ERROR "install_jar_exports: FILE must be specified.")
-    endif()
-    if (NOT _install_jar_exports_DESTINATION)
-      message(SEND_ERROR "install_jar_exports: DESTINATION must be specified.")
-    endif()
-    if (NOT _install_jar_exports_TARGETS)
-      message(SEND_ERROR "install_jar_exports: TARGETS must be specified.")
-    endif()
-    set(_jar_NAMESPACE "${_install_jar_exports_NAMESPACE}")
-
-    if (_install_jar_exports_COMPONENT)
-      set (_COMPONENT COMPONENT ${_install_jar_exports_COMPONENT})
-    endif()
-
-    # Determine relative path from installed export file to install prefix
-    if(IS_ABSOLUTE "${_install_jar_exports_DESTINATION}")
-      file(RELATIVE_PATH _relpath
-        ${_install_jar_exports_DESTINATION}
-        ${CMAKE_INSTALL_PREFIX}
-      )
-    else()
-      file(RELATIVE_PATH _relpath
-        ${CMAKE_INSTALL_PREFIX}/${_install_jar_exports_DESTINATION}
-        ${CMAKE_INSTALL_PREFIX}
-      )
-    endif()
-
-    # Set up unique location for generated exports file
-    string(SHA256 _hash "${_install_jar_exports_DESTINATION}")
-    set(_tmpdir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/JavaExports/${_hash})
-
-    # Set content of generated exports file
-    string(REPLACE ";" " " __targets__ "${_install_jar_exports_TARGETS}")
-    set(__targetdefs__ "set(_prefix \${CMAKE_CURRENT_LIST_DIR}/${_relpath})\n\n")
-    foreach(_target IN LISTS _install_jar_exports_TARGETS)
-        get_target_property(_dir ${_target} INSTALL_DESTINATION)
-        __java_export_jar(__targetdefs__ ${_target} "\${_prefix}/${_dir}")
-    endforeach()
-    __java_lcat(__targetdefs__ "\nunset(_prefix)")
-
-    # Generate and install exports file
-    configure_file(
-      ${_JAVA_EXPORT_TARGETS_SCRIPT}
-      ${_tmpdir}/${_install_jar_exports_FILE}
-      @ONLY
-    )
-    install(FILES ${_tmpdir}/${_install_jar_exports_FILE}
-            DESTINATION ${_install_jar_exports_DESTINATION}
-            ${_COMPONENT})
-endfunction()
diff --git a/share/cmake-3.18/Modules/UseJavaClassFilelist.cmake b/share/cmake-3.18/Modules/UseJavaClassFilelist.cmake
deleted file mode 100644
index 1c4baa9..0000000
--- a/share/cmake-3.18/Modules/UseJavaClassFilelist.cmake
+++ /dev/null
@@ -1,49 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-UseJavaClassFilelist
---------------------
-
-
-
-
-
-This script create a list of compiled Java class files to be added to
-a jar file.  This avoids including cmake files which get created in
-the binary directory.
-#]=======================================================================]
-
-if (CMAKE_JAVA_CLASS_OUTPUT_PATH)
-    if (EXISTS "${CMAKE_JAVA_CLASS_OUTPUT_PATH}")
-
-        set(_JAVA_GLOBBED_FILES)
-        if (CMAKE_JAR_CLASSES_PREFIX)
-            foreach(JAR_CLASS_PREFIX ${CMAKE_JAR_CLASSES_PREFIX})
-                message(STATUS "JAR_CLASS_PREFIX: ${JAR_CLASS_PREFIX}")
-
-                file(GLOB_RECURSE _JAVA_GLOBBED_TMP_FILES "${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${JAR_CLASS_PREFIX}/*.class")
-                if (_JAVA_GLOBBED_TMP_FILES)
-                    list(APPEND _JAVA_GLOBBED_FILES ${_JAVA_GLOBBED_TMP_FILES})
-                endif ()
-            endforeach()
-        else()
-            file(GLOB_RECURSE _JAVA_GLOBBED_FILES "${CMAKE_JAVA_CLASS_OUTPUT_PATH}/*.class")
-        endif ()
-
-        set(_JAVA_CLASS_FILES)
-        # file(GLOB_RECURSE foo RELATIVE) is broken so we need this.
-        foreach(_JAVA_GLOBBED_FILE ${_JAVA_GLOBBED_FILES})
-            file(RELATIVE_PATH _JAVA_CLASS_FILE ${CMAKE_JAVA_CLASS_OUTPUT_PATH} ${_JAVA_GLOBBED_FILE})
-            set(_JAVA_CLASS_FILES ${_JAVA_CLASS_FILES}${_JAVA_CLASS_FILE}\n)
-        endforeach()
-
-        # write to file
-        file(WRITE ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist ${_JAVA_CLASS_FILES})
-
-    else ()
-        message(SEND_ERROR "FATAL: Java class output path doesn't exist")
-    endif ()
-else ()
-    message(SEND_ERROR "FATAL: Can't find CMAKE_JAVA_CLASS_OUTPUT_PATH")
-endif ()
diff --git a/share/cmake-3.18/Modules/UseJavaSymlinks.cmake b/share/cmake-3.18/Modules/UseJavaSymlinks.cmake
deleted file mode 100644
index 3969f54..0000000
--- a/share/cmake-3.18/Modules/UseJavaSymlinks.cmake
+++ /dev/null
@@ -1,29 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-UseJavaSymlinks
----------------
-
-
-
-
-
-Helper script for UseJava.cmake
-#]=======================================================================]
-
-if (UNIX AND _JAVA_TARGET_OUTPUT_LINK)
-    if (_JAVA_TARGET_OUTPUT_NAME)
-        find_program(LN_EXECUTABLE
-            NAMES
-                ln
-        )
-
-        execute_process(
-            COMMAND ${LN_EXECUTABLE} -sf "${_JAVA_TARGET_OUTPUT_NAME}" "${_JAVA_TARGET_OUTPUT_LINK}"
-            WORKING_DIRECTORY ${_JAVA_TARGET_DIR}
-        )
-    else ()
-        message(SEND_ERROR "FATAL: Can't find _JAVA_TARGET_OUTPUT_NAME")
-    endif ()
-endif ()
diff --git a/share/cmake-3.18/Modules/UseSWIG.cmake b/share/cmake-3.18/Modules/UseSWIG.cmake
deleted file mode 100644
index a60e05e..0000000
--- a/share/cmake-3.18/Modules/UseSWIG.cmake
+++ /dev/null
@@ -1,865 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-UseSWIG
--------
-
-This file provides support for ``SWIG``. It is assumed that :module:`FindSWIG`
-module has already been loaded.
-
-Defines the following command for use with ``SWIG``:
-
-.. command:: swig_add_library
-
-  Define swig module with given name and specified language::
-
-    swig_add_library(<name>
-                     [TYPE <SHARED|MODULE|STATIC|USE_BUILD_SHARED_LIBS>]
-                     LANGUAGE <language>
-                     [NO_PROXY]
-                     [OUTPUT_DIR <directory>]
-                     [OUTFILE_DIR <directory>]
-                     SOURCES <file>...
-                    )
-
-  Targets created with the ``swig_add_library`` command have the same
-  capabilities as targets created with the :command:`add_library` command, so
-  those targets can be used with any command expecting a target (e.g.
-  :command:`target_link_libraries`).
-
-  .. note::
-
-    This command creates a target with the specified ``<name>`` when
-    policy :policy:`CMP0078` is set to ``NEW``.  Otherwise, the legacy
-    behavior will choose a different target name and store it in the
-    ``SWIG_MODULE_<name>_REAL_NAME`` variable.
-
-  .. note::
-
-    For multi-config generators, this module does not support
-    configuration-specific files generated by ``SWIG``. All build
-    configurations must result in the same generated source file.
-
-  .. note::
-
-    For Make-based generators, ``swig_add_library`` does not track file
-    dependencies, so depending on the ``<name>_swig_compilation`` custom target
-    is required for targets which require the ``swig``-generated files to
-    exist. Other generators may depend on the source files that would be
-    generated by SWIG.
-
-  ``TYPE``
-    ``SHARED``, ``MODULE`` and ``STATIC`` have the same semantic as for the
-    :command:`add_library` command. If ``USE_BUILD_SHARED_LIBS`` is specified,
-    the library type will be ``STATIC`` or ``SHARED`` based on whether the
-    current value of the :variable:`BUILD_SHARED_LIBS` variable is ``ON``. If
-    no type is specified, ``MODULE`` will be used.
-
-  ``LANGUAGE``
-    Specify the target language.
-
-  ``NO_PROXY``
-    Prevent the generation of the wrapper layer (swig ``-noproxy`` option).
-
-  ``OUTPUT_DIR``
-    Specify where to write the language specific files (swig ``-outdir``
-    option). If not given, the ``CMAKE_SWIG_OUTDIR`` variable will be used.
-    If neither is specified, the default depends on the value of the
-    ``UseSWIG_MODULE_VERSION`` variable as follows:
-
-    * If ``UseSWIG_MODULE_VERSION`` is 1 or is undefined, output is written to
-      the :variable:`CMAKE_CURRENT_BINARY_DIR` directory.
-    * If ``UseSWIG_MODULE_VERSION`` is 2, a dedicated directory will be used.
-      The path of this directory can be retrieved from the
-      ``SWIG_SUPPORT_FILES_DIRECTORY`` target property.
-
-  ``OUTFILE_DIR``
-    Specify an output directory name where the generated source file will be
-    placed (swig -o option). If not specified, the ``SWIG_OUTFILE_DIR`` variable
-    will be used. If neither is specified, ``OUTPUT_DIR`` or
-    ``CMAKE_SWIG_OUTDIR`` is used instead.
-
-  ``SOURCES``
-    List of sources for the library. Files with extension ``.i`` will be
-    identified as sources for the ``SWIG`` tool. Other files will be handled in
-    the standard way. This behavior can be overriden by specifying the variable
-    ``SWIG_SOURCE_FILE_EXTENSIONS``.
-
-  .. note::
-
-    If ``UseSWIG_MODULE_VERSION`` is set to 2, it is **strongly** recommended
-    to use a dedicated directory unique to the target when either the
-    ``OUTPUT_DIR`` option or the ``CMAKE_SWIG_OUTDIR`` variable are specified.
-    The output directory contents are erased as part of the target build, so
-    to prevent interference between targets or losing other important files,
-    each target should have its own dedicated output directory.
-
-.. command:: swig_link_libraries
-
-  Link libraries to swig module::
-
-    swig_link_libraries(<name> <item>...)
-
-  This command has same capabilities as :command:`target_link_libraries`
-  command.
-
-  .. note::
-
-    If variable ``UseSWIG_TARGET_NAME_PREFERENCE`` is set to ``STANDARD``, this
-    command is deprecated and :command:`target_link_libraries` command must be
-    used instead.
-
-Source file properties on module files **must** be set before the invocation
-of the ``swig_add_library`` command to specify special behavior of SWIG and
-ensure generated files will receive the required settings.
-
-``CPLUSPLUS``
-  Call SWIG in c++ mode.  For example:
-
-  .. code-block:: cmake
-
-    set_property(SOURCE mymod.i PROPERTY CPLUSPLUS ON)
-    swig_add_library(mymod LANGUAGE python SOURCES mymod.i)
-
-``INCLUDE_DIRECTORIES``, ``COMPILE_DEFINITIONS`` and ``COMPILE_OPTIONS``
-  Add custom flags to SWIG compiler and have same semantic as properties
-  :prop_sf:`INCLUDE_DIRECTORIES`, :prop_sf:`COMPILE_DEFINITIONS` and
-  :prop_sf:`COMPILE_OPTIONS`.
-
-``USE_TARGET_INCLUDE_DIRECTORIES``
-  If set to ``TRUE``, contents of target property
-  :prop_tgt:`INCLUDE_DIRECTORIES` will be forwarded to ``SWIG`` compiler.
-  If set to ``FALSE`` target property :prop_tgt:`INCLUDE_DIRECTORIES` will be
-  ignored. If not set, target property ``SWIG_USE_TARGET_INCLUDE_DIRECTORIES``
-  will be considered.
-
-``GENERATED_INCLUDE_DIRECTORIES``, ``GENERATED_COMPILE_DEFINITIONS`` and ``GENERATED_COMPILE_OPTIONS``
-  Add custom flags to the C/C++ generated source. They will fill, respectively,
-  properties :prop_sf:`INCLUDE_DIRECTORIES`, :prop_sf:`COMPILE_DEFINITIONS` and
-  :prop_sf:`COMPILE_OPTIONS` of generated C/C++ file.
-
-``DEPENDS``
-  Specify additional dependencies to the source file.
-
-``SWIG_MODULE_NAME``
-  Specify the actual import name of the module in the target language.
-  This is required if it cannot be scanned automatically from source
-  or different from the module file basename.  For example:
-
-  .. code-block:: cmake
-
-    set_property(SOURCE mymod.i PROPERTY SWIG_MODULE_NAME mymod_realname)
-
-  .. note::
-
-    If policy :policy:`CMP0086` is set to ``NEW``, ``-module <module_name>``
-    is passed to ``SWIG`` compiler.
-
-Target library properties can be set to apply same configuration to all SWIG
-input files.
-
-``SWIG_INCLUDE_DIRECTORIES``, ``SWIG_COMPILE_DEFINITIONS`` and ``SWIG_COMPILE_OPTIONS``
-  These properties will be applied to all SWIG input files and have same
-  semantic as target properties :prop_tgt:`INCLUDE_DIRECTORIES`,
-  :prop_tgt:`COMPILE_DEFINITIONS` and :prop_tgt:`COMPILE_OPTIONS`.
-
-  .. code-block:: cmake
-
-    set (UseSWIG_TARGET_NAME_PREFERENCE STANDARD)
-    swig_add_library(mymod LANGUAGE python SOURCES mymod.i)
-    set_property(TARGET mymod PROPERTY SWIG_COMPILE_DEFINITIONS MY_DEF1 MY_DEF2)
-    set_property(TARGET mymod PROPERTY SWIG_COMPILE_OPTIONS -bla -blb)
-
-``SWIG_USE_TARGET_INCLUDE_DIRECTORIES``
-  If set to ``TRUE``, contents of target property
-  :prop_tgt:`INCLUDE_DIRECTORIES` will be forwarded to ``SWIG`` compiler.
-  If set to ``FALSE`` or not defined, target property
-  :prop_tgt:`INCLUDE_DIRECTORIES` will be ignored. This behavior can be
-  overridden by specifying source property ``USE_TARGET_INCLUDE_DIRECTORIES``.
-
-``SWIG_GENERATED_INCLUDE_DIRECTORIES``, ``SWIG_GENERATED_COMPILE_DEFINITIONS`` and ``SWIG_GENERATED_COMPILE_OPTIONS``
-  These properties will populate, respectively, properties
-  :prop_sf:`INCLUDE_DIRECTORIES`, :prop_sf:`COMPILE_DEFINITIONS` and
-  :prop_sf:`COMPILE_FLAGS` of all generated C/C++ files.
-
-``SWIG_DEPENDS``
-  Add dependencies to all SWIG input files.
-
-The following target properties are output properties and can be used to get
-information about support files generated by ``SWIG`` interface compilation.
-
-``SWIG_SUPPORT_FILES``
-  This output property list of wrapper files generated during SWIG compilation.
-
-  .. code-block:: cmake
-
-    set (UseSWIG_TARGET_NAME_PREFERENCE STANDARD)
-    swig_add_library(mymod LANGUAGE python SOURCES mymod.i)
-    get_property(support_files TARGET mymod PROPERTY SWIG_SUPPORT_FILES)
-
-  .. note::
-
-    Only most principal support files are listed. In case some advanced
-    features of ``SWIG`` are used (for example ``%template``), associated
-    support files may not be listed. Prefer to use the
-    ``SWIG_SUPPORT_FILES_DIRECTORY`` property to handle support files.
-
-``SWIG_SUPPORT_FILES_DIRECTORY``
-  This output property specifies the directory where support files will be
-  generated.
-
-Some variables can be set to customize the behavior of ``swig_add_library``
-as well as ``SWIG``:
-
-``UseSWIG_MODULE_VERSION``
-  Specify different behaviors for ``UseSWIG`` module.
-
-  * Set to 1 or undefined: Legacy behavior is applied.
-  * Set to 2: A new strategy is applied regarding support files: the output
-    directory of support files is erased before ``SWIG`` interface compilation.
-
-``CMAKE_SWIG_FLAGS``
-  Add flags to all swig calls.
-
-``CMAKE_SWIG_OUTDIR``
-  Specify where to write the language specific files (swig ``-outdir`` option).
-
-``SWIG_OUTFILE_DIR``
-  Specify an output directory name where the generated source file will be
-  placed.  If not specified, ``CMAKE_SWIG_OUTDIR`` is used.
-
-``SWIG_MODULE_<name>_EXTRA_DEPS``
-  Specify extra dependencies for the generated module for ``<name>``.
-
-``SWIG_SOURCE_FILE_EXTENSIONS``
-  Specify a list of source file extensions to override the default
-  behavior of considering only ``.i`` files as sources for the ``SWIG``
-  tool. For example:
-
-  .. code-block:: cmake
-
-    set(SWIG_SOURCE_FILE_EXTENSIONS ".i" ".swg")
-#]=======================================================================]
-
-cmake_policy(GET CMP0078 target_name_policy)
-cmake_policy(GET CMP0086 module_name_policy)
-
-cmake_policy (VERSION 3.12)
-if (target_name_policy)
-  # respect user choice regarding CMP0078 policy
-  cmake_policy(SET CMP0078 ${target_name_policy})
-endif()
-if (module_name_policy)
-  # respect user choice regarding CMP0086 policy
-  cmake_policy(SET CMP0086 ${module_name_policy})
-endif()
-unset(target_name_policy)
-unset(module_name_policy)
-
-set(SWIG_CXX_EXTENSION "cxx")
-set(SWIG_EXTRA_LIBRARIES "")
-
-set(SWIG_PYTHON_EXTRA_FILE_EXTENSIONS ".py")
-set(SWIG_JAVA_EXTRA_FILE_EXTENSIONS ".java" "JNI.java")
-set(SWIG_CSHARP_EXTRA_FILE_EXTENSIONS ".cs" "PINVOKE.cs")
-
-set(SWIG_MANAGE_SUPPORT_FILES_SCRIPT "${CMAKE_CURRENT_LIST_DIR}/UseSWIG/ManageSupportFiles.cmake")
-
-##
-## PRIVATE functions
-##
-function (__SWIG_COMPUTE_TIMESTAMP name language infile workingdir __timestamp)
-  get_filename_component(filename "${infile}" NAME_WE)
-  set(${__timestamp}
-    "${workingdir}/${filename}${language}.stamp" PARENT_SCOPE)
-  # get_filename_component(filename "${infile}" ABSOLUTE)
-  # string(UUID uuid NAMESPACE 9735D882-D2F8-4E1D-88C9-A0A4F1F6ECA4
-  #   NAME ${name}-${language}-${filename} TYPE SHA1)
-  # set(${__timestamp} "${workingdir}/${uuid}.stamp" PARENT_SCOPE)
-endfunction()
-
-#
-# For given swig module initialize variables associated with it
-#
-macro(SWIG_MODULE_INITIALIZE name language)
-  string(TOUPPER "${language}" SWIG_MODULE_${name}_LANGUAGE)
-  string(TOLOWER "${language}" SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG)
-
-  if (NOT DEFINED SWIG_MODULE_${name}_NOPROXY)
-    set (SWIG_MODULE_${name}_NOPROXY FALSE)
-  endif()
-  if ("-noproxy" IN_LIST CMAKE_SWIG_FLAGS)
-    set (SWIG_MODULE_${name}_NOPROXY TRUE)
-  endif ()
-
-  if (SWIG_MODULE_${name}_NOPROXY AND
-      NOT ("-noproxy" IN_LIST CMAKE_SWIG_FLAGS OR "-noproxy" IN_LIST SWIG_MODULE_${name}_EXTRA_FLAGS))
-    list (APPEND SWIG_MODULE_${name}_EXTRA_FLAGS "-noproxy")
-  endif()
-  if(SWIG_MODULE_${name}_LANGUAGE STREQUAL "UNKNOWN")
-    message(FATAL_ERROR "SWIG Error: Language \"${language}\" not found")
-  elseif(SWIG_MODULE_${name}_LANGUAGE STREQUAL "PERL" AND
-         NOT "-shadow" IN_LIST SWIG_MODULE_${name}_EXTRA_FLAGS)
-    list(APPEND SWIG_MODULE_${name}_EXTRA_FLAGS "-shadow")
-  endif()
-endmacro()
-
-#
-# For a given language, input file, and output file, determine extra files that
-# will be generated. This is internal swig macro.
-#
-
-function(SWIG_GET_EXTRA_OUTPUT_FILES language outfiles generatedpath infile)
-  set(files)
-  get_source_file_property(module_basename
-    "${infile}" SWIG_MODULE_NAME)
-  if(NOT module_basename)
-
-    # try to get module name from "%module foo" syntax
-    if ( EXISTS "${infile}" )
-      file ( STRINGS "${infile}" module_basename REGEX "[ ]*%module[ ]*[a-zA-Z0-9_]+.*" )
-    endif ()
-    if ( module_basename )
-      string ( REGEX REPLACE "[ ]*%module[ ]*([a-zA-Z0-9_]+).*" "\\1" module_basename "${module_basename}" )
-
-    else ()
-      # try to get module name from "%module (options=...) foo" syntax
-      if ( EXISTS "${infile}" )
-        file ( STRINGS "${infile}" module_basename REGEX "[ ]*%module[ ]*\\(.*\\)[ ]*[a-zA-Z0-9_]+.*" )
-      endif ()
-      if ( module_basename )
-        string ( REGEX REPLACE "[ ]*%module[ ]*\\(.*\\)[ ]*([a-zA-Z0-9_]+).*" "\\1" module_basename "${module_basename}" )
-
-      else ()
-        # fallback to file basename
-        get_filename_component(module_basename "${infile}" NAME_WE)
-      endif ()
-    endif ()
-
-  endif()
-  foreach(it ${SWIG_${language}_EXTRA_FILE_EXTENSIONS})
-    set(extra_file "${generatedpath}/${module_basename}${it}")
-    if (extra_file MATCHES "\\.cs$" AND CMAKE_CSharp_COMPILER_LOADED)
-      set_source_files_properties(${extra_file} PROPERTIES LANGUAGE "CSharp")
-    else()
-      # Treat extra outputs as plain files regardless of language.
-      set_source_files_properties(${extra_file} PROPERTIES LANGUAGE "")
-    endif()
-    list(APPEND files "${extra_file}")
-  endforeach()
-
-  if (language STREQUAL "FORTRAN" AND CMAKE_Fortran_COMPILER_LOADED)
-    # Process possible user-supplied extension in flags (obtained via parent
-    # scope variable) to determine the source file name.
-    list(FIND SWIG_COMPILATION_FLAGS "-fext" fext_idx)
-    if (fext_idx EQUAL -1)
-      # Default Fortran generated extension
-      set(fext "f90")
-    else()
-      # Get extension from user-provided flag
-      math(EXPR fext_idx "${fext_idx} + 1")
-      list(GET SWIG_COMPILATION_FLAGS "${fext_idx}" fext)
-    endif()
-    set(extra_file "${generatedpath}/${module_basename}.${fext}")
-    set_source_files_properties("${extra_file}" PROPERTIES LANGUAGE "Fortran")
-    list(APPEND files "${extra_file}")
-  endif()
-
-  set (${outfiles} ${files} PARENT_SCOPE)
-endfunction()
-
-#
-# Take swig (*.i) file and add proper custom commands for it
-#
-function(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile)
-  get_filename_component(swig_source_file_name_we "${infile}" NAME_WE)
-  get_source_file_property(swig_source_file_cplusplus "${infile}" CPLUSPLUS)
-
-  # If CMAKE_SWIG_OUTDIR was specified then pass it to -outdir
-  if(CMAKE_SWIG_OUTDIR)
-    set(outdir ${CMAKE_SWIG_OUTDIR})
-  else()
-    set(outdir ${CMAKE_CURRENT_BINARY_DIR})
-  endif()
-
-  if(SWIG_OUTFILE_DIR)
-    set(outfiledir ${SWIG_OUTFILE_DIR})
-  else()
-    set(outfiledir ${outdir})
-  endif()
-
-  if(SWIG_WORKING_DIR)
-    set (workingdir "${SWIG_WORKING_DIR}")
-  else()
-    set(workingdir "${outdir}")
-  endif()
-
-  if(SWIG_TARGET_NAME)
-    set(target_name ${SWIG_TARGET_NAME})
-  else()
-    set(target_name ${name})
-  endif()
-
-  set (swig_source_file_flags ${CMAKE_SWIG_FLAGS})
-  # handle various swig compile flags properties
-  get_source_file_property (include_directories "${infile}" INCLUDE_DIRECTORIES)
-  if (include_directories)
-    list (APPEND swig_source_file_flags "$<$<BOOL:${include_directories}>:-I$<JOIN:${include_directories},$<SEMICOLON>-I>>")
-  endif()
-  set (property "$<TARGET_PROPERTY:${target_name},SWIG_INCLUDE_DIRECTORIES>")
-  list (APPEND swig_source_file_flags "$<$<BOOL:${property}>:-I$<JOIN:$<TARGET_GENEX_EVAL:${target_name},${property}>,$<SEMICOLON>-I>>")
-  set (property "$<TARGET_PROPERTY:${target_name},INCLUDE_DIRECTORIES>")
-  get_source_file_property(use_target_include_dirs "${infile}" USE_TARGET_INCLUDE_DIRECTORIES)
-  if (use_target_include_dirs)
-    list (APPEND swig_source_file_flags "$<$<BOOL:${property}>:-I$<JOIN:${property},$<SEMICOLON>-I>>")
-  elseif(use_target_include_dirs STREQUAL "NOTFOUND")
-    # not defined at source level, rely on target level
-    list (APPEND swig_source_file_flags "$<$<AND:$<BOOL:$<TARGET_PROPERTY:${target_name},SWIG_USE_TARGET_INCLUDE_DIRECTORIES>>,$<BOOL:${property}>>:-I$<JOIN:${property},$<SEMICOLON>-I>>")
-  endif()
-
-  set (property "$<TARGET_PROPERTY:${target_name},SWIG_COMPILE_DEFINITIONS>")
-  list (APPEND swig_source_file_flags "$<$<BOOL:${property}>:-D$<JOIN:$<TARGET_GENEX_EVAL:${target_name},${property}>,$<SEMICOLON>-D>>")
-  get_source_file_property (compile_definitions "${infile}" COMPILE_DEFINITIONS)
-  if (compile_definitions)
-    list (APPEND swig_source_file_flags "$<$<BOOL:${compile_definitions}>:-D$<JOIN:${compile_definitions},$<SEMICOLON>-D>>")
-  endif()
-
-  list (APPEND swig_source_file_flags "$<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_COMPILE_OPTIONS>>")
-  get_source_file_property (compile_options "${infile}" COMPILE_OPTIONS)
-  if (compile_options)
-    list (APPEND swig_source_file_flags ${compile_options})
-  endif()
-
-  # legacy support
-  get_source_file_property (swig_flags "${infile}" SWIG_FLAGS)
-  if (swig_flags)
-    list (APPEND swig_source_file_flags ${swig_flags})
-  endif()
-
-  get_filename_component(swig_source_file_fullname "${infile}" ABSOLUTE)
-
-  if (NOT SWIG_MODULE_${name}_NOPROXY)
-    set(SWIG_COMPILATION_FLAGS ${swig_source_file_flags})
-    SWIG_GET_EXTRA_OUTPUT_FILES(${SWIG_MODULE_${name}_LANGUAGE}
-      swig_extra_generated_files
-      "${outdir}"
-      "${swig_source_file_fullname}")
-  endif()
-  set(swig_generated_file_fullname
-    "${outfiledir}/${swig_source_file_name_we}")
-  # add the language into the name of the file (i.e. TCL_wrap)
-  # this allows for the same .i file to be wrapped into different languages
-  string(APPEND swig_generated_file_fullname
-    "${SWIG_MODULE_${name}_LANGUAGE}_wrap")
-
-  if(swig_source_file_cplusplus)
-    string(APPEND swig_generated_file_fullname
-      ".${SWIG_CXX_EXTENSION}")
-  else()
-    string(APPEND swig_generated_file_fullname
-      ".c")
-  endif()
-
-  get_directory_property (cmake_include_directories INCLUDE_DIRECTORIES)
-  list (REMOVE_DUPLICATES cmake_include_directories)
-  set (swig_include_dirs)
-  if (cmake_include_directories)
-    set (swig_include_dirs "$<$<BOOL:${cmake_include_directories}>:-I$<JOIN:${cmake_include_directories},$<SEMICOLON>-I>>")
-  endif()
-
-  set(swig_special_flags)
-  # default is c, so add c++ flag if it is c++
-  if(swig_source_file_cplusplus)
-    list (APPEND swig_special_flags "-c++")
-  endif()
-
-  cmake_policy(GET CMP0086 module_name_policy)
-  if (module_name_policy STREQUAL "NEW")
-    get_source_file_property(module_name "${infile}" SWIG_MODULE_NAME)
-    if (module_name)
-      list (APPEND swig_special_flags "-module" "${module_name}")
-    endif()
-  else()
-    if (NOT module_name_policy)
-      cmake_policy(GET_WARNING CMP0086 _cmp0086_warning)
-      message(AUTHOR_WARNING "${_cmp0086_warning}\n")
-    endif()
-  endif()
-
-  set (swig_extra_flags)
-  if(SWIG_MODULE_${name}_LANGUAGE STREQUAL "CSHARP")
-    if(NOT ("-dllimport" IN_LIST swig_source_file_flags OR "-dllimport" IN_LIST SWIG_MODULE_${name}_EXTRA_FLAGS))
-      # This makes sure that the name used in the generated DllImport
-      # matches the library name created by CMake
-      list (APPEND SWIG_MODULE_${name}_EXTRA_FLAGS "-dllimport" "$<TARGET_FILE_PREFIX:${target_name}>$<TARGET_FILE_BASE_NAME:${target_name}>")
-    endif()
-  endif()
-  if (SWIG_MODULE_${name}_LANGUAGE STREQUAL "PYTHON" AND NOT SWIG_MODULE_${name}_NOPROXY)
-    if(NOT ("-interface" IN_LIST swig_source_file_flags OR "-interface" IN_LIST SWIG_MODULE_${name}_EXTRA_FLAGS))
-      # This makes sure that the name used in the proxy code
-      # matches the library name created by CMake
-      list (APPEND SWIG_MODULE_${name}_EXTRA_FLAGS "-interface" "$<TARGET_FILE_PREFIX:${target_name}>$<TARGET_FILE_BASE_NAME:${target_name}>")
-    endif()
-  endif()
-  list (APPEND swig_extra_flags ${SWIG_MODULE_${name}_EXTRA_FLAGS})
-
-  # dependencies
-  set (swig_dependencies ${SWIG_MODULE_${name}_EXTRA_DEPS} $<TARGET_PROPERTY:${target_name},SWIG_DEPENDS>)
-  get_source_file_property(file_depends "${infile}" DEPENDS)
-  if (file_depends)
-    list (APPEND swig_dependencies ${file_depends})
-  endif()
-
-  if (UseSWIG_MODULE_VERSION VERSION_GREATER 1)
-    # as part of custom command, start by removing old generated files
-    # to ensure obsolete files do not stay
-    set (swig_file_outdir "${workingdir}/${swig_source_file_name_we}.files")
-    set (swig_cleanup_command COMMAND "${CMAKE_COMMAND}" "-DSUPPORT_FILES_WORKING_DIRECTORY=${swig_file_outdir}" "-DSUPPORT_FILES_OUTPUT_DIRECTORY=${outdir}" -DACTION=CLEAN -P "${SWIG_MANAGE_SUPPORT_FILES_SCRIPT}")
-    set (swig_copy_command COMMAND "${CMAKE_COMMAND}" "-DSUPPORT_FILES_WORKING_DIRECTORY=${swig_file_outdir}" "-DSUPPORT_FILES_OUTPUT_DIRECTORY=${outdir}" -DACTION=COPY -P "${SWIG_MANAGE_SUPPORT_FILES_SCRIPT}")
-  else()
-    set (swig_file_outdir "${outdir}")
-    unset (swig_cleanup_command)
-    unset (swig_copy_command)
-  endif()
-
-  # IMPLICIT_DEPENDS below can not handle situations where a dependent file is
-  # removed. We need an extra step with timestamp and custom target, see #16830
-  # As this is needed only for Makefile generator do it conditionally
-  if(CMAKE_GENERATOR MATCHES "Make")
-    __swig_compute_timestamp(${name} ${SWIG_MODULE_${name}_LANGUAGE}
-      "${infile}" "${workingdir}" swig_generated_timestamp)
-    set(swig_custom_output "${swig_generated_timestamp}")
-    set(swig_custom_products
-      BYPRODUCTS "${swig_generated_file_fullname}" ${swig_extra_generated_files})
-    set(swig_timestamp_command
-      COMMAND ${CMAKE_COMMAND} -E touch "${swig_generated_timestamp}")
-  else()
-    set(swig_custom_output
-      "${swig_generated_file_fullname}" ${swig_extra_generated_files})
-    set(swig_custom_products)
-    set(swig_timestamp_command)
-  endif()
-  add_custom_command(
-    OUTPUT ${swig_custom_output}
-    ${swig_custom_products}
-    ${swig_cleanup_command}
-    # Let's create the ${outdir} at execution time, in case dir contains $(OutDir)
-    COMMAND "${CMAKE_COMMAND}" -E make_directory ${outdir} ${outfiledir}
-    ${swig_timestamp_command}
-    COMMAND "${CMAKE_COMMAND}" -E env "SWIG_LIB=${SWIG_DIR}" "${SWIG_EXECUTABLE}"
-    "-${SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG}"
-    "${swig_source_file_flags}"
-    -outdir "${swig_file_outdir}"
-    ${swig_special_flags}
-    ${swig_extra_flags}
-    "${swig_include_dirs}"
-    -o "${swig_generated_file_fullname}"
-    "${swig_source_file_fullname}"
-    ${swig_copy_command}
-    MAIN_DEPENDENCY "${swig_source_file_fullname}"
-    DEPENDS ${swig_dependencies}
-    IMPLICIT_DEPENDS CXX "${swig_source_file_fullname}"
-    COMMENT "Swig compile ${infile} for ${SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG}"
-    COMMAND_EXPAND_LISTS)
-  set_source_files_properties("${swig_generated_file_fullname}" ${swig_extra_generated_files}
-    PROPERTIES GENERATED 1)
-
-  ## add all properties for generated file to various properties
-  get_property (include_directories SOURCE "${infile}" PROPERTY GENERATED_INCLUDE_DIRECTORIES)
-  set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY INCLUDE_DIRECTORIES ${include_directories} $<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_INCLUDE_DIRECTORIES>>)
-
-  get_property (compile_definitions SOURCE "${infile}" PROPERTY GENERATED_COMPILE_DEFINITIONS)
-  set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY COMPILE_DEFINITIONS $<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_COMPILE_DEFINITIONS>> ${compile_definitions})
-
-  get_property (compile_options SOURCE "${infile}" PROPERTY GENERATED_COMPILE_OPTIONS)
-  set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY COMPILE_OPTIONS $<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_COMPILE_OPTIONS>> ${compile_options})
-
-  if (SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG MATCHES "php")
-    set_property (SOURCE "${swig_generated_file_fullname}" APPEND PROPERTY INCLUDE_DIRECTORIES "${outdir}")
-  endif()
-
-  set(${outfiles} "${swig_generated_file_fullname}" ${swig_extra_generated_files} PARENT_SCOPE)
-
-  # legacy support
-  set (swig_generated_file_fullname "${swig_generated_file_fullname}" PARENT_SCOPE)
-endfunction()
-
-#
-# Create Swig module
-#
-macro(SWIG_ADD_MODULE name language)
-  message(DEPRECATION "SWIG_ADD_MODULE is deprecated. Use SWIG_ADD_LIBRARY instead.")
-  swig_add_library(${name}
-                   LANGUAGE ${language}
-                   TYPE MODULE
-                   SOURCES ${ARGN})
-endmacro()
-
-
-function(SWIG_ADD_LIBRARY name)
-  set(options NO_PROXY)
-  set(oneValueArgs LANGUAGE
-                   TYPE
-                   OUTPUT_DIR
-                   OUTFILE_DIR)
-  set(multiValueArgs SOURCES)
-  cmake_parse_arguments(_SAM "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
-
-  if (_SAM_UNPARSED_ARGUMENTS)
-    message(FATAL_ERROR "SWIG_ADD_LIBRARY: ${_SAM_UNPARSED_ARGUMENTS}: unexpected arguments")
-  endif()
-
-  if(NOT DEFINED _SAM_LANGUAGE)
-    message(FATAL_ERROR "SWIG_ADD_LIBRARY: Missing LANGUAGE argument")
-  endif()
-
-  if(NOT DEFINED _SAM_SOURCES)
-    message(FATAL_ERROR "SWIG_ADD_LIBRARY: Missing SOURCES argument")
-  endif()
-
-  if(NOT DEFINED _SAM_TYPE)
-    set(_SAM_TYPE MODULE)
-  elseif(_SAM_TYPE STREQUAL "USE_BUILD_SHARED_LIBS")
-    unset(_SAM_TYPE)
-  endif()
-
-  cmake_policy(GET CMP0078 target_name_policy)
-  if (target_name_policy STREQUAL "NEW")
-    set (UseSWIG_TARGET_NAME_PREFERENCE STANDARD)
-  else()
-    if (NOT target_name_policy)
-      cmake_policy(GET_WARNING CMP0078 _cmp0078_warning)
-      message(AUTHOR_WARNING "${_cmp0078_warning}\n")
-    endif()
-    if (NOT DEFINED UseSWIG_TARGET_NAME_PREFERENCE)
-      set (UseSWIG_TARGET_NAME_PREFERENCE LEGACY)
-    elseif (NOT UseSWIG_TARGET_NAME_PREFERENCE MATCHES "^(LEGACY|STANDARD)$")
-      message (FATAL_ERROR "UseSWIG_TARGET_NAME_PREFERENCE: ${UseSWIG_TARGET_NAME_PREFERENCE}: invalid value. 'LEGACY' or 'STANDARD' is expected.")
-    endif()
-  endif()
-
-  if (NOT DEFINED UseSWIG_MODULE_VERSION)
-    set (UseSWIG_MODULE_VERSION 1)
-  elseif (NOT UseSWIG_MODULE_VERSION MATCHES "^(1|2)$")
-    message (FATAL_ERROR "UseSWIG_MODULE_VERSION: ${UseSWIG_MODULE_VERSION}: invalid value. 1 or 2 is expected.")
-  endif()
-
-  set (SWIG_MODULE_${name}_NOPROXY ${_SAM_NO_PROXY})
-  swig_module_initialize(${name} ${_SAM_LANGUAGE})
-
-  # compute real target name.
-  if (UseSWIG_TARGET_NAME_PREFERENCE STREQUAL "LEGACY" AND
-      SWIG_MODULE_${name}_LANGUAGE STREQUAL "PYTHON" AND NOT SWIG_MODULE_${name}_NOPROXY)
-    # swig will produce a module.py containing an 'import _modulename' statement,
-    # which implies having a corresponding _modulename.so (*NIX), _modulename.pyd (Win32),
-    # unless the -noproxy flag is used
-    set(target_name "_${name}")
-  else()
-    set(target_name "${name}")
-  endif()
-
-  if (TARGET ${target_name})
-    # a target with same name is already defined.
-    # call NOW add_library command to raise the most useful error message
-    add_library(${target_name})
-    return()
-  endif()
-
-  set (workingdir "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${target_name}.dir")
-  # set special variable to pass extra information to command SWIG_ADD_SOURCE_TO_MODULE
-  # which cannot be changed due to legacy compatibility
-  set (SWIG_WORKING_DIR "${workingdir}")
-  set (SWIG_TARGET_NAME "${target_name}")
-
-  set (outputdir "${_SAM_OUTPUT_DIR}")
-  if (NOT _SAM_OUTPUT_DIR)
-    if (CMAKE_SWIG_OUTDIR)
-      set (outputdir "${CMAKE_SWIG_OUTDIR}")
-    else()
-      if (UseSWIG_MODULE_VERSION VERSION_GREATER 1)
-        set (outputdir "${workingdir}/${_SAM_LANGUAGE}.files")
-      else()
-        set (outputdir "${CMAKE_CURRENT_BINARY_DIR}")
-      endif()
-    endif()
-  endif()
-
-  set (outfiledir "${_SAM_OUTFILE_DIR}")
-  if(NOT _SAM_OUTFILE_DIR)
-    if (SWIG_OUTFILE_DIR)
-      set (outfiledir "${SWIG_OUTFILE_DIR}")
-    else()
-      if (_SAM_OUTPUT_DIR OR CMAKE_SWIG_OUTDIR)
-        set (outfiledir "${outputdir}")
-    else()
-        set (outfiledir "${workingdir}")
-      endif()
-    endif()
-  endif()
-  # set again, locally, predefined variables to ensure compatibility
-  # with command SWIG_ADD_SOURCE_TO_MODULE
-  set(CMAKE_SWIG_OUTDIR "${outputdir}")
-  set(SWIG_OUTFILE_DIR "${outfiledir}")
-
-  # See if the user has specified source extensions for swig files?
-  if (NOT DEFINED SWIG_SOURCE_FILE_EXTENSIONS)
-    # Assume the default (*.i) file extension for Swig source files
-    set(SWIG_SOURCE_FILE_EXTENSIONS ".i")
-  endif()
-
-  # Generate a regex out of file extensions.
-  string(REGEX REPLACE "([$^.*+?|()-])" "\\\\\\1" swig_source_ext_regex "${SWIG_SOURCE_FILE_EXTENSIONS}")
-  list (JOIN swig_source_ext_regex "|" swig_source_ext_regex)
-  string (PREPEND swig_source_ext_regex "(")
-  string (APPEND swig_source_ext_regex ")$")
-
-  set(swig_dot_i_sources ${_SAM_SOURCES})
-  list(FILTER swig_dot_i_sources INCLUDE REGEX ${swig_source_ext_regex})
-  if (NOT swig_dot_i_sources)
-    message(FATAL_ERROR "SWIG_ADD_LIBRARY: no SWIG interface files specified")
-  endif()
-  set(swig_other_sources ${_SAM_SOURCES})
-  list(REMOVE_ITEM swig_other_sources ${swig_dot_i_sources})
-
-  set(swig_generated_sources)
-  set(swig_generated_timestamps)
-  foreach(swig_it IN LISTS swig_dot_i_sources)
-    SWIG_ADD_SOURCE_TO_MODULE(${name} swig_generated_source "${swig_it}")
-    list (APPEND swig_generated_sources "${swig_generated_source}")
-    if(CMAKE_GENERATOR MATCHES "Make")
-      __swig_compute_timestamp(${name} ${SWIG_MODULE_${name}_LANGUAGE} "${swig_it}"
-        "${workingdir}" swig_timestamp)
-      list (APPEND swig_generated_timestamps "${swig_timestamp}")
-    endif()
-  endforeach()
-  set_property (DIRECTORY APPEND PROPERTY
-    ADDITIONAL_CLEAN_FILES ${swig_generated_sources} ${swig_generated_timestamps})
-  if (UseSWIG_MODULE_VERSION VERSION_GREATER 1)
-    set_property (DIRECTORY APPEND PROPERTY ADDITIONAL_CLEAN_FILES "${outputdir}")
-  endif()
-
-  add_library(${target_name}
-    ${_SAM_TYPE}
-    ${swig_generated_sources}
-    ${swig_other_sources})
-  if(CMAKE_GENERATOR MATCHES "Make")
-    # see IMPLICIT_DEPENDS above
-    add_custom_target(${name}_swig_compilation DEPENDS ${swig_generated_timestamps})
-    add_dependencies(${target_name} ${name}_swig_compilation)
-  endif()
-  if(_SAM_TYPE STREQUAL "MODULE")
-    set_target_properties(${target_name} PROPERTIES NO_SONAME ON)
-  endif()
-  string(TOLOWER "${_SAM_LANGUAGE}" swig_lowercase_language)
-  if (swig_lowercase_language STREQUAL "octave")
-    set_target_properties(${target_name} PROPERTIES PREFIX "")
-    set_target_properties(${target_name} PROPERTIES SUFFIX ".oct")
-  elseif (swig_lowercase_language STREQUAL "go")
-    set_target_properties(${target_name} PROPERTIES PREFIX "")
-  elseif (swig_lowercase_language STREQUAL "java")
-    # In java you want:
-    #      System.loadLibrary("LIBRARY");
-    # then JNI will look for a library whose name is platform dependent, namely
-    #   MacOS  : libLIBRARY.jnilib
-    #   Windows: LIBRARY.dll
-    #   Linux  : libLIBRARY.so
-    if (APPLE)
-      set_target_properties (${target_name} PROPERTIES SUFFIX ".jnilib")
-    endif()
-    if ((WIN32 AND MINGW) OR CYGWIN OR CMAKE_SYSTEM_NAME STREQUAL MSYS)
-      set_target_properties(${target_name} PROPERTIES PREFIX "")
-    endif()
-  elseif (swig_lowercase_language STREQUAL "lua")
-    if(_SAM_TYPE STREQUAL "MODULE")
-      set_target_properties(${target_name} PROPERTIES PREFIX "")
-    endif()
-  elseif (swig_lowercase_language STREQUAL "python")
-    if (UseSWIG_TARGET_NAME_PREFERENCE STREQUAL "STANDARD" AND NOT SWIG_MODULE_${name}_NOPROXY)
-      # swig will produce a module.py containing an 'import _modulename' statement,
-      # which implies having a corresponding _modulename.so (*NIX), _modulename.pyd (Win32),
-      # unless the -noproxy flag is used
-      set_target_properties(${target_name} PROPERTIES PREFIX "_")
-    else()
-      set_target_properties(${target_name} PROPERTIES PREFIX "")
-    endif()
-    # Python extension modules on Windows must have the extension ".pyd"
-    # instead of ".dll" as of Python 2.5.  Older python versions do support
-    # this suffix.
-    # http://docs.python.org/whatsnew/ports.html#SECTION0001510000000000000000
-    # <quote>
-    # Windows: .dll is no longer supported as a filename extension for extension modules.
-    # .pyd is now the only filename extension that will be searched for.
-    # </quote>
-    if(WIN32 AND NOT CYGWIN)
-      set_target_properties(${target_name} PROPERTIES SUFFIX ".pyd")
-    endif()
-  elseif (swig_lowercase_language STREQUAL "r")
-    set_target_properties(${target_name} PROPERTIES PREFIX "")
-  elseif (swig_lowercase_language STREQUAL "ruby")
-    # In ruby you want:
-    #      require 'LIBRARY'
-    # then ruby will look for a library whose name is platform dependent, namely
-    #   MacOS  : LIBRARY.bundle
-    #   Windows: LIBRARY.dll
-    #   Linux  : LIBRARY.so
-    set_target_properties (${target_name} PROPERTIES PREFIX "")
-    if (APPLE)
-      set_target_properties (${target_name} PROPERTIES SUFFIX ".bundle")
-    endif ()
-  elseif (swig_lowercase_language STREQUAL "perl")
-    # assume empty prefix because we expect the module to be dynamically loaded
-    set_target_properties (${target_name} PROPERTIES PREFIX "")
-    if (APPLE)
-      set_target_properties (${target_name} PROPERTIES SUFFIX ".dylib")
-    endif ()
-  elseif (swig_lowercase_language STREQUAL "fortran")
-    # Do *not* override the target's library prefix
-  else()
-    # assume empty prefix because we expect the module to be dynamically loaded
-    set_target_properties (${target_name} PROPERTIES PREFIX "")
-  endif ()
-
-  # target property SWIG_SUPPORT_FILES_DIRECTORY specify output directory of support files
-  set_property (TARGET ${target_name} PROPERTY SWIG_SUPPORT_FILES_DIRECTORY "${outputdir}")
-  # target property SWIG_SUPPORT_FILES lists principal proxy support files
-  if (NOT SWIG_MODULE_${name}_NOPROXY)
-    string(TOUPPER "${_SAM_LANGUAGE}" swig_uppercase_language)
-    set(swig_all_support_files)
-    foreach (swig_it IN LISTS SWIG_${swig_uppercase_language}_EXTRA_FILE_EXTENSIONS)
-      set (swig_support_files ${swig_generated_sources})
-      list (FILTER swig_support_files INCLUDE REGEX ".*${swig_it}$")
-      list(APPEND swig_all_support_files ${swig_support_files})
-    endforeach()
-    if (swig_all_support_files)
-      list(REMOVE_DUPLICATES swig_all_support_files)
-    endif()
-    set_property (TARGET ${target_name} PROPERTY SWIG_SUPPORT_FILES ${swig_all_support_files})
-  endif()
-
-  # to ensure legacy behavior, export some variables
-  set (SWIG_MODULE_${name}_LANGUAGE "${SWIG_MODULE_${name}_LANGUAGE}" PARENT_SCOPE)
-  set (SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG "${SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG}" PARENT_SCOPE)
-  set (SWIG_MODULE_${name}_REAL_NAME "${target_name}" PARENT_SCOPE)
-  set (SWIG_MODULE_${name}_NOPROXY "${SWIG_MODULE_${name}_NOPROXY}" PARENT_SCOPE)
-  set (SWIG_MODULE_${name}_EXTRA_FLAGS "${SWIG_MODULE_${name}_EXTRA_FLAGS}" PARENT_SCOPE)
-  # the last one is a bit crazy but it is documented, so...
-  # NOTA: works as expected if only ONE input file is specified
-  set (swig_generated_file_fullname "${swig_generated_file_fullname}" PARENT_SCOPE)
-endfunction()
-
-#
-# Like TARGET_LINK_LIBRARIES but for swig modules
-#
-function(SWIG_LINK_LIBRARIES name)
-  if (UseSWIG_TARGET_NAME_PREFERENCE STREQUAL "STANDARD")
-    message(DEPRECATION "SWIG_LINK_LIBRARIES is deprecated. Use TARGET_LINK_LIBRARIES instead.")
-    target_link_libraries(${name} ${ARGN})
-  else()
-    if(SWIG_MODULE_${name}_REAL_NAME)
-      target_link_libraries(${SWIG_MODULE_${name}_REAL_NAME} ${ARGN})
-    else()
-      message(SEND_ERROR "Cannot find Swig library \"${name}\".")
-    endif()
-  endif()
-endfunction()
diff --git a/share/cmake-3.18/Modules/UseSWIG/ManageSupportFiles.cmake b/share/cmake-3.18/Modules/UseSWIG/ManageSupportFiles.cmake
deleted file mode 100644
index 4a03900..0000000
--- a/share/cmake-3.18/Modules/UseSWIG/ManageSupportFiles.cmake
+++ /dev/null
@@ -1,31 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-if (ACTION STREQUAL "CLEAN")
-  # Collect current list of generated files
-  file (GLOB files LIST_DIRECTORIES FALSE RELATIVE "${SUPPORT_FILES_WORKING_DIRECTORY}" "${SUPPORT_FILES_WORKING_DIRECTORY}/*")
-
-  if (files)
-    # clean-up the output directory
-    ## compute full paths
-    list (TRANSFORM files PREPEND "${SUPPORT_FILES_OUTPUT_DIRECTORY}/")
-    ## remove generated files from the output directory
-    file (REMOVE ${files})
-
-    # clean-up working directory
-    file (REMOVE_RECURSE "${SUPPORT_FILES_WORKING_DIRECTORY}")
-  endif()
-
-  file (MAKE_DIRECTORY "${SUPPORT_FILES_WORKING_DIRECTORY}")
-endif()
-
-if (ACTION STREQUAL "COPY")
-  # Collect current list of generated files
-  file (GLOB files LIST_DIRECTORIES FALSE "${SUPPORT_FILES_WORKING_DIRECTORY}/*")
-
-  if (files)
-    # copy files to the output directory
-    file (COPY ${files} DESTINATION "${SUPPORT_FILES_OUTPUT_DIRECTORY}")
-  endif()
-endif()
diff --git a/share/cmake-3.18/Modules/VTKCompatibility.cmake b/share/cmake-3.18/Modules/VTKCompatibility.cmake
deleted file mode 100644
index 1b0815e..0000000
--- a/share/cmake-3.18/Modules/VTKCompatibility.cmake
+++ /dev/null
@@ -1,42 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-
-if(APPLE)
-  set(CMAKE_CXX_CREATE_SHARED_LIBRARY "${CMAKE_C_CREATE_SHARED_LIBRARY}")
-  set(CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_C_CREATE_SHARED_MODULE}")
-  string( REGEX REPLACE "CMAKE_C_COMPILER"
-    CMAKE_CXX_COMPILER CMAKE_CXX_CREATE_SHARED_MODULE
-    "${CMAKE_CXX_CREATE_SHARED_MODULE}")
-  string( REGEX REPLACE "CMAKE_C_COMPILER"
-    CMAKE_CXX_COMPILER CMAKE_CXX_CREATE_SHARED_LIBRARY
-    "${CMAKE_CXX_CREATE_SHARED_LIBRARY}")
-endif()
-
-set(VTKFTGL_BINARY_DIR "${VTK_BINARY_DIR}/Utilities/ftgl"
-  CACHE INTERNAL "")
-set(VTKFREETYPE_BINARY_DIR "${VTK_BINARY_DIR}/Utilities/freetype"
-  CACHE INTERNAL "")
-set(VTKFTGL_SOURCE_DIR "${VTK_SOURCE_DIR}/Utilities/ftgl"
-  CACHE INTERNAL "")
-set(VTKFREETYPE_SOURCE_DIR "${VTK_SOURCE_DIR}/Utilities/freetype"
-  CACHE INTERNAL "")
-
-set(VTK_GLEXT_FILE "${VTK_SOURCE_DIR}/Utilities/ParseOGLExt/headers/glext.h"
-  CACHE FILEPATH
-  "Location of the OpenGL extensions header file (glext.h).")
-set(VTK_GLXEXT_FILE
-  "${VTK_SOURCE_DIR}/Utilities/ParseOGLExt/headers/glxext.h" CACHE FILEPATH
-  "Location of the GLX extensions header file (glxext.h).")
-set(VTK_WGLEXT_FILE "${VTK_SOURCE_DIR}/Utilities/ParseOGLExt/headers/wglext.h"
-  CACHE FILEPATH
-  "Location of the WGL extensions header file (wglext.h).")
-
-# work around an old bug in VTK
-set(TIFF_RIGHT_VERSION 1)
-
-# for very old VTK (versions prior to 4.2)
-macro(SOURCE_FILES)
-  message (FATAL_ERROR "You are trying to build a very old version of VTK (prior to VTK 4.2). To do this you need to use CMake 2.0 as it was the last version of CMake to support VTK 4.0.")
-endmacro()
-
diff --git a/share/cmake-3.18/Modules/WriteCompilerDetectionHeader.cmake b/share/cmake-3.18/Modules/WriteCompilerDetectionHeader.cmake
deleted file mode 100644
index 23d81b5..0000000
--- a/share/cmake-3.18/Modules/WriteCompilerDetectionHeader.cmake
+++ /dev/null
@@ -1,693 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-WriteCompilerDetectionHeader
-----------------------------
-
-This module provides the function ``write_compiler_detection_header()``.
-
-This function can be used to generate a file suitable for preprocessor
-inclusion which contains macros to be used in source code::
-
-   write_compiler_detection_header(
-             FILE <file>
-             PREFIX <prefix>
-             [OUTPUT_FILES_VAR <output_files_var> OUTPUT_DIR <output_dir>]
-             COMPILERS <compiler> [...]
-             FEATURES <feature> [...]
-             [BARE_FEATURES <feature> [...]]
-             [VERSION <version>]
-             [PROLOG <prolog>]
-             [EPILOG <epilog>]
-             [ALLOW_UNKNOWN_COMPILERS]
-             [ALLOW_UNKNOWN_COMPILER_VERSIONS]
-   )
-
-This generates the file ``<file>`` with macros which all have the prefix
-``<prefix>``.
-
-By default, all content is written directly to the ``<file>``.  The
-``OUTPUT_FILES_VAR`` may be specified to cause the compiler-specific
-content to be written to separate files.  The separate files are then
-available in the ``<output_files_var>`` and may be consumed by the caller
-for installation for example.  The ``OUTPUT_DIR`` specifies a relative
-path from the main ``<file>`` to the compiler-specific files. For example:
-
-.. code-block:: cmake
-
-   write_compiler_detection_header(
-     FILE climbingstats_compiler_detection.h
-     PREFIX ClimbingStats
-     OUTPUT_FILES_VAR support_files
-     OUTPUT_DIR compilers
-     COMPILERS GNU Clang MSVC Intel
-     FEATURES cxx_variadic_templates
-   )
-   install(FILES
-     ${CMAKE_CURRENT_BINARY_DIR}/climbingstats_compiler_detection.h
-     DESTINATION include
-   )
-   install(FILES
-     ${support_files}
-     DESTINATION include/compilers
-   )
-
-
-``VERSION`` may be used to specify the API version to be generated.
-Future versions of CMake may introduce alternative APIs.  A given
-API is selected by any ``<version>`` value greater than or equal
-to the version of CMake that introduced the given API and less
-than the version of CMake that introduced its succeeding API.
-The value of the :variable:`CMAKE_MINIMUM_REQUIRED_VERSION`
-variable is used if no explicit version is specified.
-(As of CMake version |release| there is only one API version.)
-
-``PROLOG`` may be specified as text content to write at the start of the
-header. ``EPILOG`` may be specified as text content to write at the end
-of the header
-
-At least one ``<compiler>`` and one ``<feature>`` must be listed.  Compilers
-which are known to CMake, but not specified are detected and a preprocessor
-``#error`` is generated for them.  A preprocessor macro matching
-``<PREFIX>_COMPILER_IS_<compiler>`` is generated for each compiler
-known to CMake to contain the value ``0`` or ``1``.
-
-Possible compiler identifiers are documented with the
-:variable:`CMAKE_<LANG>_COMPILER_ID` variable.
-Available features in this version of CMake are listed in the
-:prop_gbl:`CMAKE_C_KNOWN_FEATURES` and
-:prop_gbl:`CMAKE_CXX_KNOWN_FEATURES` global properties.
-The ``{c,cxx}_std_*`` meta-features are ignored if requested.
-
-See the :manual:`cmake-compile-features(7)` manual for information on
-compile features.
-
-``BARE_FEATURES`` will define the compatibility macros with the name used in
-newer versions of the language standard, so the code can use the new feature
-name unconditionally.
-
-``ALLOW_UNKNOWN_COMPILERS`` and ``ALLOW_UNKNOWN_COMPILER_VERSIONS`` cause
-the module to generate conditions that treat unknown compilers as simply
-lacking all features.  Without these options the default behavior is to
-generate a ``#error`` for unknown compilers and versions.
-
-Feature Test Macros
-===================
-
-For each compiler, a preprocessor macro is generated matching
-``<PREFIX>_COMPILER_IS_<compiler>`` which has the content either ``0``
-or ``1``, depending on the compiler in use. Preprocessor macros for
-compiler version components are generated matching
-``<PREFIX>_COMPILER_VERSION_MAJOR`` ``<PREFIX>_COMPILER_VERSION_MINOR``
-and ``<PREFIX>_COMPILER_VERSION_PATCH`` containing decimal values
-for the corresponding compiler version components, if defined.
-
-A preprocessor test is generated based on the compiler version
-denoting whether each feature is enabled.  A preprocessor macro
-matching ``<PREFIX>_COMPILER_<FEATURE>``, where ``<FEATURE>`` is the
-upper-case ``<feature>`` name, is generated to contain the value
-``0`` or ``1`` depending on whether the compiler in use supports the
-feature:
-
-.. code-block:: cmake
-
-   write_compiler_detection_header(
-     FILE climbingstats_compiler_detection.h
-     PREFIX ClimbingStats
-     COMPILERS GNU Clang AppleClang MSVC Intel
-     FEATURES cxx_variadic_templates
-   )
-
-.. code-block:: c++
-
-   #if ClimbingStats_COMPILER_CXX_VARIADIC_TEMPLATES
-   template<typename... T>
-   void someInterface(T t...) { /* ... */ }
-   #else
-   // Compatibility versions
-   template<typename T1>
-   void someInterface(T1 t1) { /* ... */ }
-   template<typename T1, typename T2>
-   void someInterface(T1 t1, T2 t2) { /* ... */ }
-   template<typename T1, typename T2, typename T3>
-   void someInterface(T1 t1, T2 t2, T3 t3) { /* ... */ }
-   #endif
-
-Symbol Macros
-=============
-
-Some additional symbol-defines are created for particular features for
-use as symbols which may be conditionally defined empty:
-
-.. code-block:: c++
-
-   class MyClass ClimbingStats_FINAL
-   {
-       ClimbingStats_CONSTEXPR int someInterface() { return 42; }
-   };
-
-The ``ClimbingStats_FINAL`` macro will expand to ``final`` if the
-compiler (and its flags) support the ``cxx_final`` feature, and the
-``ClimbingStats_CONSTEXPR`` macro will expand to ``constexpr``
-if ``cxx_constexpr`` is supported.
-
-If ``BARE_FEATURES cxx_final`` was given as argument the ``final`` keyword
-will be defined for old compilers, too.
-
-The following features generate corresponding symbol defines and if they
-are available as ``BARE_FEATURES``:
-
-========================== =================================== ================= ======
-        Feature                          Define                      Symbol       bare
-========================== =================================== ================= ======
-``c_restrict``              ``<PREFIX>_RESTRICT``               ``restrict``      yes
-``cxx_constexpr``           ``<PREFIX>_CONSTEXPR``              ``constexpr``     yes
-``cxx_deleted_functions``   ``<PREFIX>_DELETED_FUNCTION``       ``= delete``
-``cxx_extern_templates``    ``<PREFIX>_EXTERN_TEMPLATE``        ``extern``
-``cxx_final``               ``<PREFIX>_FINAL``                  ``final``         yes
-``cxx_noexcept``            ``<PREFIX>_NOEXCEPT``               ``noexcept``      yes
-``cxx_noexcept``            ``<PREFIX>_NOEXCEPT_EXPR(X)``       ``noexcept(X)``
-``cxx_override``            ``<PREFIX>_OVERRIDE``               ``override``      yes
-========================== =================================== ================= ======
-
-Compatibility Implementation Macros
-===================================
-
-Some features are suitable for wrapping in a macro with a backward
-compatibility implementation if the compiler does not support the feature.
-
-When the ``cxx_static_assert`` feature is not provided by the compiler,
-a compatibility implementation is available via the
-``<PREFIX>_STATIC_ASSERT(COND)`` and
-``<PREFIX>_STATIC_ASSERT_MSG(COND, MSG)`` function-like macros. The macros
-expand to ``static_assert`` where that compiler feature is available, and
-to a compatibility implementation otherwise. In the first form, the
-condition is stringified in the message field of ``static_assert``.  In
-the second form, the message ``MSG`` is passed to the message field of
-``static_assert``, or ignored if using the backward compatibility
-implementation.
-
-The ``cxx_attribute_deprecated`` feature provides a macro definition
-``<PREFIX>_DEPRECATED``, which expands to either the standard
-``[[deprecated]]`` attribute or a compiler-specific decorator such
-as ``__attribute__((__deprecated__))`` used by GNU compilers.
-
-The ``cxx_alignas`` feature provides a macro definition
-``<PREFIX>_ALIGNAS`` which expands to either the standard ``alignas``
-decorator or a compiler-specific decorator such as
-``__attribute__ ((__aligned__))`` used by GNU compilers.
-
-The ``cxx_alignof`` feature provides a macro definition
-``<PREFIX>_ALIGNOF`` which expands to either the standard ``alignof``
-decorator or a compiler-specific decorator such as ``__alignof__``
-used by GNU compilers.
-
-============================= ================================ ===================== ======
-          Feature                          Define                     Symbol          bare
-============================= ================================ ===================== ======
-``cxx_alignas``                ``<PREFIX>_ALIGNAS``             ``alignas``
-``cxx_alignof``                ``<PREFIX>_ALIGNOF``             ``alignof``
-``cxx_nullptr``                ``<PREFIX>_NULLPTR``             ``nullptr``           yes
-``cxx_static_assert``          ``<PREFIX>_STATIC_ASSERT``       ``static_assert``
-``cxx_static_assert``          ``<PREFIX>_STATIC_ASSERT_MSG``   ``static_assert``
-``cxx_attribute_deprecated``   ``<PREFIX>_DEPRECATED``          ``[[deprecated]]``
-``cxx_attribute_deprecated``   ``<PREFIX>_DEPRECATED_MSG``      ``[[deprecated]]``
-``cxx_thread_local``           ``<PREFIX>_THREAD_LOCAL``        ``thread_local``
-============================= ================================ ===================== ======
-
-A use-case which arises with such deprecation macros is the deprecation
-of an entire library.  In that case, all public API in the library may
-be decorated with the ``<PREFIX>_DEPRECATED`` macro.  This results in
-very noisy build output when building the library itself, so the macro
-may be may be defined to empty in that case when building the deprecated
-library:
-
-.. code-block:: cmake
-
-  add_library(compat_support ${srcs})
-  target_compile_definitions(compat_support
-    PRIVATE
-      CompatSupport_DEPRECATED=
-  )
-#]=======================================================================]
-
-include(${CMAKE_CURRENT_LIST_DIR}/CMakeCompilerIdDetection.cmake)
-
-function(_load_compiler_variables CompilerId lang)
-  include("${CMAKE_ROOT}/Modules/Compiler/${CompilerId}-${lang}-FeatureTests.cmake" OPTIONAL)
-  set(_cmake_oldestSupported_${CompilerId} ${_cmake_oldestSupported} PARENT_SCOPE)
-  foreach(feature ${ARGN})
-    set(_cmake_feature_test_${CompilerId}_${feature} ${_cmake_feature_test_${feature}} PARENT_SCOPE)
-  endforeach()
-  include("${CMAKE_ROOT}/Modules/Compiler/${CompilerId}-${lang}-DetermineCompiler.cmake" OPTIONAL
-      RESULT_VARIABLE determinedCompiler)
-  if (NOT determinedCompiler)
-    include("${CMAKE_ROOT}/Modules/Compiler/${CompilerId}-DetermineCompiler.cmake" OPTIONAL)
-  endif()
-  set(_compiler_id_version_compute_${CompilerId} ${_compiler_id_version_compute} PARENT_SCOPE)
-endfunction()
-
-macro(_simpledefine FEATURE_NAME FEATURE_TESTNAME FEATURE_STRING FEATURE_DEFAULT_STRING)
-  if (feature STREQUAL "${FEATURE_NAME}")
-        set(def_value "${prefix_arg}_${FEATURE_TESTNAME}")
-        string(APPEND file_content "
-#  if defined(${def_name}) && ${def_name}
-#    define ${def_value} ${FEATURE_STRING}
-#  else
-#    define ${def_value} ${FEATURE_DEFAULT_STRING}
-#  endif
-\n")
-  endif()
-endmacro()
-
-macro(_simplebaredefine FEATURE_NAME FEATURE_STRING FEATURE_DEFAULT_STRING)
-  if (feature STREQUAL "${FEATURE_NAME}")
-        string(APPEND file_content "
-#  if !(defined(${def_name}) && ${def_name})
-#    define ${FEATURE_STRING} ${FEATURE_DEFAULT_STRING}
-#  endif
-\n")
-  endif()
-endmacro()
-
-function(_check_feature_lists C_FEATURE_VAR CXX_FEATURE_VAR)
-  foreach(feature ${ARGN})
-    if (feature MATCHES "^c_std_")
-      # ignored
-    elseif (feature MATCHES "^cxx_std_")
-      # ignored
-    elseif (feature MATCHES "^cxx_")
-      list(APPEND _langs CXX)
-      list(APPEND ${CXX_FEATURE_VAR} ${feature})
-    elseif (feature MATCHES "^c_")
-      list(APPEND _langs C)
-      list(APPEND ${C_FEATURE_VAR} ${feature})
-    else()
-      message(FATAL_ERROR "Unsupported feature ${feature}.")
-    endif()
-  endforeach()
-  set(${C_FEATURE_VAR} ${${C_FEATURE_VAR}} PARENT_SCOPE)
-  set(${CXX_FEATURE_VAR} ${${CXX_FEATURE_VAR}} PARENT_SCOPE)
-  set(_langs ${_langs} PARENT_SCOPE)
-endfunction()
-
-function(write_compiler_detection_header
-    file_keyword file_arg
-    prefix_keyword prefix_arg
-    )
-  if (NOT "x${file_keyword}" STREQUAL "xFILE")
-    message(FATAL_ERROR "write_compiler_detection_header: FILE parameter missing.")
-  endif()
-  if (NOT "x${prefix_keyword}" STREQUAL "xPREFIX")
-    message(FATAL_ERROR "write_compiler_detection_header: PREFIX parameter missing.")
-  endif()
-  set(options ALLOW_UNKNOWN_COMPILERS ALLOW_UNKNOWN_COMPILER_VERSIONS)
-  set(oneValueArgs VERSION EPILOG PROLOG OUTPUT_FILES_VAR OUTPUT_DIR)
-  set(multiValueArgs COMPILERS FEATURES BARE_FEATURES)
-  cmake_parse_arguments(_WCD "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
-
-  if (NOT _WCD_COMPILERS)
-    message(FATAL_ERROR "Invalid arguments.  write_compiler_detection_header requires at least one compiler.")
-  endif()
-  if (NOT _WCD_FEATURES AND NOT _WCD_BARE_FEATURES)
-    message(FATAL_ERROR "Invalid arguments.  write_compiler_detection_header requires at least one feature.")
-  endif()
-
-  if(_WCD_UNPARSED_ARGUMENTS)
-    message(FATAL_ERROR "Unparsed arguments: ${_WCD_UNPARSED_ARGUMENTS}")
-  endif()
-
-  if (prefix_arg STREQUAL "")
-    message(FATAL_ERROR "A prefix must be specified")
-  endif()
-  string(MAKE_C_IDENTIFIER ${prefix_arg} cleaned_prefix)
-  if (NOT prefix_arg STREQUAL cleaned_prefix)
-    message(FATAL_ERROR "The prefix must be a valid C identifier.")
-  endif()
-
-  if(NOT _WCD_VERSION)
-    set(_WCD_VERSION ${CMAKE_MINIMUM_REQUIRED_VERSION})
-  endif()
-  set(_min_version 3.1.0) # Version which introduced this function
-  if (_WCD_VERSION VERSION_LESS _min_version)
-    set(err "VERSION compatibility for write_compiler_detection_header is set to ${_WCD_VERSION}, which is too low.")
-    string(APPEND err "  It must be set to at least ${_min_version}.  ")
-    string(APPEND err "  Either set the VERSION parameter to the write_compiler_detection_header function, or update")
-    string(APPEND err " your minimum required CMake version with the cmake_minimum_required command.")
-    message(FATAL_ERROR "${err}")
-  endif()
-
-  if(_WCD_OUTPUT_FILES_VAR)
-    if(NOT _WCD_OUTPUT_DIR)
-      message(FATAL_ERROR "If OUTPUT_FILES_VAR is specified, then OUTPUT_DIR must also be specified.")
-    endif()
-  endif()
-  if(_WCD_OUTPUT_DIR)
-    if(NOT _WCD_OUTPUT_FILES_VAR)
-      message(FATAL_ERROR "If OUTPUT_DIR is specified, then OUTPUT_FILES_VAR must also be specified.")
-    endif()
-    get_filename_component(main_file_dir ${file_arg} DIRECTORY)
-    if (NOT IS_ABSOLUTE ${main_file_dir})
-      set(main_file_dir "${CMAKE_CURRENT_BINARY_DIR}/${main_file_dir}")
-    endif()
-    if (NOT IS_ABSOLUTE ${_WCD_OUTPUT_DIR})
-      set(_WCD_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/${_WCD_OUTPUT_DIR}")
-    endif()
-    get_filename_component(out_file_dir ${_WCD_OUTPUT_DIR} ABSOLUTE)
-    string(FIND ${out_file_dir} ${main_file_dir} idx)
-    if (NOT idx EQUAL 0)
-      message(FATAL_ERROR "The compiler-specific output directory must be within the same directory as the main file.")
-    endif()
-
-    if (main_file_dir STREQUAL out_file_dir)
-      unset(_WCD_OUTPUT_DIR)
-    else()
-      string(REPLACE "${main_file_dir}/" "" _WCD_OUTPUT_DIR "${out_file_dir}/")
-    endif()
-  endif()
-
-  set(compilers
-    GNU
-    Clang
-    AppleClang
-    MSVC
-    SunPro
-    Intel
-  )
-
-  set(_hex_compilers ADSP Borland Embarcadero SunPro)
-
-  foreach(_comp ${_WCD_COMPILERS})
-    list(FIND compilers ${_comp} idx)
-    if (idx EQUAL -1)
-      message(FATAL_ERROR "Unsupported compiler ${_comp}.")
-    endif()
-    if (NOT _need_hex_conversion)
-      list(FIND _hex_compilers ${_comp} idx)
-      if (NOT idx EQUAL -1)
-        set(_need_hex_conversion TRUE)
-      endif()
-    endif()
-  endforeach()
-
-  set(file_content "
-// This is a generated file. Do not edit!
-
-#ifndef ${prefix_arg}_COMPILER_DETECTION_H
-#define ${prefix_arg}_COMPILER_DETECTION_H
-")
-
-  if (_WCD_PROLOG)
-    string(APPEND file_content "\n${_WCD_PROLOG}\n")
-  endif()
-
-  if (_need_hex_conversion)
-    string(APPEND file_content "
-#define ${prefix_arg}_DEC(X) (X)
-#define ${prefix_arg}_HEX(X) ( \\
-    ((X)>>28 & 0xF) * 10000000 + \\
-    ((X)>>24 & 0xF) *  1000000 + \\
-    ((X)>>20 & 0xF) *   100000 + \\
-    ((X)>>16 & 0xF) *    10000 + \\
-    ((X)>>12 & 0xF) *     1000 + \\
-    ((X)>>8  & 0xF) *      100 + \\
-    ((X)>>4  & 0xF) *       10 + \\
-    ((X)     & 0xF) \\
-    )\n")
-  endif()
-
-  _check_feature_lists(C_features CXX_features ${_WCD_FEATURES})
-  _check_feature_lists(C_bare_features CXX_bare_features ${_WCD_BARE_FEATURES})
-  list(REMOVE_DUPLICATES _langs)
-
-  if(_WCD_OUTPUT_FILES_VAR)
-    get_filename_component(main_file_name ${file_arg} NAME)
-    set(compiler_file_content_
-"#ifndef ${prefix_arg}_COMPILER_DETECTION_H
-#  error This file may only be included from ${main_file_name}
-#endif\n")
-  endif()
-
-  foreach(_lang ${_langs})
-    set(target_compilers)
-    foreach(compiler ${_WCD_COMPILERS})
-      _load_compiler_variables(${compiler} ${_lang} ${${_lang}_features})
-      if(_cmake_oldestSupported_${compiler})
-        list(APPEND target_compilers ${compiler})
-      endif()
-    endforeach()
-
-    get_property(known_features GLOBAL PROPERTY CMAKE_${_lang}_KNOWN_FEATURES)
-    foreach(feature ${${_lang}_features})
-      list(FIND known_features ${feature} idx)
-      if (idx EQUAL -1)
-        message(FATAL_ERROR "Unsupported feature ${feature}.")
-      endif()
-    endforeach()
-
-    if(_lang STREQUAL CXX)
-      string(APPEND file_content "\n#ifdef __cplusplus\n")
-    else()
-      string(APPEND file_content "\n#ifndef __cplusplus\n")
-    endif()
-
-    compiler_id_detection(ID_CONTENT ${_lang} PREFIX ${prefix_arg}_
-      ID_DEFINE
-    )
-
-    string(APPEND file_content "${ID_CONTENT}\n")
-
-    set(pp_if "if")
-    foreach(compiler ${target_compilers})
-      string(APPEND file_content "\n#  ${pp_if} ${prefix_arg}_COMPILER_IS_${compiler}\n")
-
-      if(_WCD_OUTPUT_FILES_VAR)
-        set(compile_file_name "${_WCD_OUTPUT_DIR}${prefix_arg}_COMPILER_INFO_${compiler}_${_lang}.h")
-        string(APPEND file_content "\n#    include \"${compile_file_name}\"\n")
-      endif()
-
-      if(_WCD_OUTPUT_FILES_VAR)
-        set(compiler_file_content compiler_file_content_${compiler}_${_lang})
-      else()
-        set(compiler_file_content file_content)
-      endif()
-
-      if(NOT _WCD_ALLOW_UNKNOWN_COMPILER_VERSIONS)
-        string(APPEND ${compiler_file_content} "
-#    if !(${_cmake_oldestSupported_${compiler}})
-#      error Unsupported compiler version
-#    endif\n")
-      endif()
-
-      set(PREFIX ${prefix_arg}_)
-      if (_need_hex_conversion)
-        set(MACRO_DEC ${prefix_arg}_DEC)
-        set(MACRO_HEX ${prefix_arg}_HEX)
-      else()
-        set(MACRO_DEC)
-        set(MACRO_HEX)
-      endif()
-      string(CONFIGURE "${_compiler_id_version_compute_${compiler}}" VERSION_BLOCK @ONLY)
-      string(APPEND ${compiler_file_content} "${VERSION_BLOCK}\n")
-      set(PREFIX)
-      set(MACRO_DEC)
-      set(MACRO_HEX)
-
-      set(pp_if "elif")
-      foreach(feature ${${_lang}_features})
-        string(TOUPPER ${feature} feature_upper)
-        set(feature_PP "COMPILER_${feature_upper}")
-        set(_define_item "\n#    define ${prefix_arg}_${feature_PP} 0\n")
-        if (_cmake_feature_test_${compiler}_${feature} STREQUAL "1")
-          set(_define_item "\n#    define ${prefix_arg}_${feature_PP} 1\n")
-        elseif (_cmake_feature_test_${compiler}_${feature})
-          set(_define_item "\n#      define ${prefix_arg}_${feature_PP} 0\n")
-          set(_define_item "\n#    if ${_cmake_feature_test_${compiler}_${feature}}\n#      define ${prefix_arg}_${feature_PP} 1\n#    else${_define_item}#    endif\n")
-        endif()
-        string(APPEND ${compiler_file_content} "${_define_item}")
-      endforeach()
-    endforeach()
-    if(pp_if STREQUAL "elif")
-      if(_WCD_ALLOW_UNKNOWN_COMPILERS)
-        string(APPEND file_content "
-#  endif\n")
-      else()
-        string(APPEND file_content "
-#  else
-#    error Unsupported compiler
-#  endif\n")
-      endif()
-    endif()
-    foreach(feature ${${_lang}_features})
-      string(TOUPPER ${feature} feature_upper)
-      set(feature_PP "COMPILER_${feature_upper}")
-      set(def_name ${prefix_arg}_${feature_PP})
-      _simpledefine(c_restrict RESTRICT restrict "")
-      _simpledefine(cxx_constexpr CONSTEXPR constexpr "")
-      _simpledefine(cxx_final FINAL final "")
-      _simpledefine(cxx_override OVERRIDE override "")
-      if (feature STREQUAL cxx_static_assert)
-        set(def_value "${prefix_arg}_STATIC_ASSERT(X)")
-        set(def_value_msg "${prefix_arg}_STATIC_ASSERT_MSG(X, MSG)")
-        set(def_fallback "enum { ${prefix_arg}_STATIC_ASSERT_JOIN(${prefix_arg}StaticAssertEnum, __LINE__) = sizeof(${prefix_arg}StaticAssert<X>) }")
-        string(APPEND file_content "#  if defined(${def_name}) && ${def_name}
-#    define ${def_value} static_assert(X, #X)
-#    define ${def_value_msg} static_assert(X, MSG)
-#  else
-#    define ${prefix_arg}_STATIC_ASSERT_JOIN(X, Y) ${prefix_arg}_STATIC_ASSERT_JOIN_IMPL(X, Y)
-#    define ${prefix_arg}_STATIC_ASSERT_JOIN_IMPL(X, Y) X##Y
-template<bool> struct ${prefix_arg}StaticAssert;
-template<> struct ${prefix_arg}StaticAssert<true>{};
-#    define ${def_value} ${def_fallback}
-#    define ${def_value_msg} ${def_fallback}
-#  endif
-\n")
-      endif()
-      if (feature STREQUAL cxx_alignas)
-        set(def_value "${prefix_arg}_ALIGNAS(X)")
-        string(APPEND file_content "
-#  if defined(${def_name}) && ${def_name}
-#    define ${def_value} alignas(X)
-#  elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang || ${prefix_arg}_COMPILER_IS_AppleClang
-#    define ${def_value} __attribute__ ((__aligned__(X)))
-#  elif ${prefix_arg}_COMPILER_IS_MSVC
-#    define ${def_value} __declspec(align(X))
-#  else
-#    define ${def_value}
-#  endif
-\n")
-      endif()
-      if (feature STREQUAL cxx_alignof)
-        set(def_value "${prefix_arg}_ALIGNOF(X)")
-        string(APPEND file_content "
-#  if defined(${def_name}) && ${def_name}
-#    define ${def_value} alignof(X)
-#  elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang || ${prefix_arg}_COMPILER_IS_AppleClang
-#    define ${def_value} __alignof__(X)
-#  elif ${prefix_arg}_COMPILER_IS_MSVC
-#    define ${def_value} __alignof(X)
-#  endif
-\n")
-      endif()
-      _simpledefine(cxx_deleted_functions DELETED_FUNCTION "= delete" "")
-      _simpledefine(cxx_extern_templates EXTERN_TEMPLATE extern "")
-      if (feature STREQUAL cxx_noexcept)
-        set(def_value "${prefix_arg}_NOEXCEPT")
-        string(APPEND file_content "
-#  if defined(${def_name}) && ${def_name}
-#    define ${def_value} noexcept
-#    define ${def_value}_EXPR(X) noexcept(X)
-#  else
-#    define ${def_value}
-#    define ${def_value}_EXPR(X)
-#  endif
-\n")
-      endif()
-      if (feature STREQUAL cxx_nullptr)
-        set(def_value "${prefix_arg}_NULLPTR")
-        string(APPEND file_content "
-#  if defined(${def_name}) && ${def_name}
-#    define ${def_value} nullptr
-#  elif ${prefix_arg}_COMPILER_IS_GNU
-#    define ${def_value} __null
-#  else
-#    define ${def_value} 0
-#  endif
-\n")
-      endif()
-      if (feature STREQUAL cxx_thread_local)
-        set(def_value "${prefix_arg}_THREAD_LOCAL")
-        string(APPEND file_content "
-#  if defined(${def_name}) && ${def_name}
-#    define ${def_value} thread_local
-#  elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang || ${prefix_arg}_COMPILER_IS_AppleClang
-#    define ${def_value} __thread
-#  elif ${prefix_arg}_COMPILER_IS_MSVC
-#    define ${def_value} __declspec(thread)
-#  else
-// ${def_value} not defined for this configuration.
-#  endif
-\n")
-      endif()
-      if (feature STREQUAL cxx_attribute_deprecated)
-        set(def_name ${prefix_arg}_${feature_PP})
-        set(def_value "${prefix_arg}_DEPRECATED")
-        string(APPEND file_content "
-#  ifndef ${def_value}
-#    if defined(${def_name}) && ${def_name}
-#      define ${def_value} [[deprecated]]
-#      define ${def_value}_MSG(MSG) [[deprecated(MSG)]]
-#    elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang
-#      define ${def_value} __attribute__((__deprecated__))
-#      define ${def_value}_MSG(MSG) __attribute__((__deprecated__(MSG)))
-#    elif ${prefix_arg}_COMPILER_IS_MSVC
-#      define ${def_value} __declspec(deprecated)
-#      define ${def_value}_MSG(MSG) __declspec(deprecated(MSG))
-#    else
-#      define ${def_value}
-#      define ${def_value}_MSG(MSG)
-#    endif
-#  endif
-\n")
-      endif()
-    endforeach()
-
-    foreach(feature ${${_lang}_bare_features})
-      string(TOUPPER ${feature} feature_upper)
-      set(feature_PP "COMPILER_${feature_upper}")
-      set(def_name ${prefix_arg}_${feature_PP})
-      _simplebaredefine(c_restrict restrict "")
-      _simplebaredefine(cxx_constexpr constexpr "")
-      _simplebaredefine(cxx_final final "")
-      _simplebaredefine(cxx_override override "")
-      if (feature STREQUAL cxx_nullptr)
-        set(def_value "nullptr")
-        string(APPEND file_content "
-#  if !(defined(${def_name}) && ${def_name})
-#    if ${prefix_arg}_COMPILER_IS_GNU
-#      define ${def_value} __null
-#    else
-#      define ${def_value} 0
-#    endif
-#  endif
-\n")
-      endif()
-      _simplebaredefine(cxx_noexcept noexcept "")
-    endforeach()
-
-    string(APPEND file_content "#endif\n")
-
-  endforeach()
-
-  if(_WCD_OUTPUT_FILES_VAR)
-    foreach(compiler ${_WCD_COMPILERS})
-      foreach(_lang ${_langs})
-        if(compiler_file_content_${compiler}_${_lang})
-          set(CMAKE_CONFIGURABLE_FILE_CONTENT "${compiler_file_content_}")
-          string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT "${compiler_file_content_${compiler}_${_lang}}")
-
-          set(compile_file_name "${_WCD_OUTPUT_DIR}${prefix_arg}_COMPILER_INFO_${compiler}_${_lang}.h")
-          set(full_path "${main_file_dir}/${compile_file_name}")
-          list(APPEND ${_WCD_OUTPUT_FILES_VAR} ${full_path})
-          configure_file("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
-            "${full_path}"
-            @ONLY
-          )
-        endif()
-      endforeach()
-    endforeach()
-    set(${_WCD_OUTPUT_FILES_VAR} ${${_WCD_OUTPUT_FILES_VAR}} PARENT_SCOPE)
-  endif()
-
-  if (_WCD_EPILOG)
-    string(APPEND file_content "\n${_WCD_EPILOG}\n")
-  endif()
-  string(APPEND file_content "\n#endif")
-
-  set(CMAKE_CONFIGURABLE_FILE_CONTENT ${file_content})
-  configure_file("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
-    "${file_arg}"
-    @ONLY
-  )
-endfunction()
diff --git a/share/cmake-3.18/Modules/javaTargets.cmake.in b/share/cmake-3.18/Modules/javaTargets.cmake.in
deleted file mode 100644
index c5f9c78..0000000
--- a/share/cmake-3.18/Modules/javaTargets.cmake.in
+++ /dev/null
@@ -1,39 +0,0 @@
-cmake_minimum_required(VERSION 2.8)
-cmake_policy(PUSH)
-cmake_policy(VERSION 2.8)
-
-#----------------------------------------------------------------
-# Generated CMake Java target import file.
-#----------------------------------------------------------------
-
-# Protect against multiple inclusion, which would fail when already imported targets are added once more.
-set(_targetsDefined)
-set(_targetsNotDefined)
-set(_expectedTargets)
-foreach(_expectedTarget @__targets__@)
-  list(APPEND _expectedTargets ${_expectedTarget})
-  if(TARGET ${_expectedTarget})
-    list(APPEND _targetsDefined ${_expectedTarget})
-  else()
-    list(APPEND _targetsNotDefined ${_expectedTarget})
-  endif()
-endforeach()
-if("%${_targetsDefined}" STREQUAL "%${_expectedTargets}")
-  unset(_targetsDefined)
-  unset(_targetsNotDefined)
-  unset(_expectedTargets)
-  cmake_policy(POP)
-  return()
-endif()
-if(NOT "${_targetsDefined}" STREQUAL "")
-  message(FATAL_ERROR
-    "Some (but not all) targets in this export set were already defined.\n"
-    "Targets Defined: ${_targetsDefined}\n"
-    "Targets not yet defined: ${_targetsNotDefined}\n")
-endif()
-unset(_targetsDefined)
-unset(_targetsNotDefined)
-unset(_expectedTargets)
-
-@__targetdefs__@
-cmake_policy(POP)
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v10_CSharp.json b/share/cmake-3.18/Templates/MSBuild/FlagTables/v10_CSharp.json
deleted file mode 100644
index 5989aea..0000000
--- a/share/cmake-3.18/Templates/MSBuild/FlagTables/v10_CSharp.json
+++ /dev/null
@@ -1,574 +0,0 @@
-[
-  {
-    "name":  "ProjectName",
-    "switch": "out:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:exe",
-    "comment": "",
-    "value": "Exe",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:winexe",
-    "comment": "",
-    "value": "Winexe",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:library",
-    "comment": "",
-    "value": "Library",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:module",
-    "comment": "",
-    "value": "Module",
-    "flags": []
-  },
-  {
-    "name":  "DocumentationFile",
-    "switch": "doc",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:x86",
-    "comment": "",
-    "value": "x86",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:Itanium",
-    "comment": "",
-    "value": "Itanium",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:x64",
-    "comment": "",
-    "value": "x64",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:arm",
-    "comment": "",
-    "value": "arm",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:anycpu32bitpreferred",
-    "comment": "",
-    "value": "anycpu32bitpreferred",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:anycpu",
-    "comment": "",
-    "value": "anycpu",
-    "flags": []
-  },
-  {
-    "name":  "References",
-    "switch": "reference:",
-    "comment": "mit alias",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "References",
-    "switch": "reference:",
-    "comment": "dateiliste",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "AddModules",
-    "switch": "addmodule:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name":  "Win32Resource",
-    "switch": "win32res:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "ApplicationIcon",
-    "switch": "win32icon:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "ApplicationManifest",
-    "switch": "win32manifest:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "NoWin32Manifest",
-    "switch": "nowin32manifest",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DefineDebug",
-    "switch": "debug",
-    "comment": "",
-    "value": "true",
-    "flags": [
-      "Continue"
-    ]
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:none",
-    "comment": "",
-    "value": "none",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:full",
-    "comment": "",
-    "value": "full",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:pdbonly",
-    "comment": "",
-    "value": "pdbonly",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror-",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror+",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:0",
-    "comment": "",
-    "value": "0",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:1",
-    "comment": "",
-    "value": "1",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:2",
-    "comment": "",
-    "value": "2",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:3",
-    "comment": "",
-    "value": "3",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:4",
-    "comment": "",
-    "value": "4",
-    "flags": []
-  },
-  {
-    "name":  "NoWarn",
-    "switch": "nowarn:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired",
-      "CommaAppendable"
-    ]
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DefineConstants",
-    "switch": "define:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "SemicolonAppendable",
-      "UserValue"
-    ]
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:ISO-1",
-    "comment": "",
-    "value": "ISO-1",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:ISO-2",
-    "comment": "",
-    "value": "ISO-2",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:3",
-    "comment": "",
-    "value": "3",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:4",
-    "comment": "",
-    "value": "4",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:5",
-    "comment": "",
-    "value": "5",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:6",
-    "comment": "",
-    "value": "6",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:default",
-    "comment": "",
-    "value": "default",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AssemblyOriginatorKeyFile",
-    "switch": "keyfile",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "KeyContainerName",
-    "switch": "keycontainer",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoLogo",
-    "switch": "nologo",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoConfig",
-    "switch": "noconfig",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "BaseAddress",
-    "switch": "baseaddress:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "CodePage",
-    "switch": "codepage",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "Utf8Output",
-    "switch": "utf8output",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "MainEntryPoint",
-    "switch": "main:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "GenerateFullPaths",
-    "switch": "fullpaths",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "FileAlignment",
-    "switch": "filealign",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "PdbFile",
-    "switch": "pdb:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "SubsystemVersion",
-    "switch": "subsystemversion",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "AdditionalLibPaths",
-    "switch": "lib:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:none",
-    "comment": "Do Not Send Report",
-    "value": "none",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:prompt",
-    "comment": "Prompt Immediately",
-    "value": "prompt",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:queue",
-    "comment": "Queue For Next Login",
-    "value": "queue",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:send",
-    "comment": "Send Automatically",
-    "value": "send",
-    "flags": []
-  }
-]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v10_Link.json b/share/cmake-3.18/Templates/MSBuild/FlagTables/v10_Link.json
deleted file mode 100644
index ac5b8b1..0000000
--- a/share/cmake-3.18/Templates/MSBuild/FlagTables/v10_Link.json
+++ /dev/null
@@ -1,1137 +0,0 @@
-[
-  {
-    "name": "ShowProgress",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE",
-    "comment": "Display all progress messages",
-    "value": "LinkVerbose",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:Lib",
-    "comment": "For Libraries Searched",
-    "value": "LinkVerboseLib",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:ICF",
-    "comment": "About COMDAT folding during optimized linking",
-    "value": "LinkVerboseICF",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:REF",
-    "comment": "About data removed during optimized linking",
-    "value": "LinkVerboseREF",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:SAFESEH",
-    "comment": "About Modules incompatible with SEH",
-    "value": "LinkVerboseSAFESEH",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:CLR",
-    "comment": "About linker activity related to managed code",
-    "value": "LinkVerboseCLR",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE:MULTIPLE",
-    "comment": "Multiply Defined Symbol Only",
-    "value": "MultiplyDefinedSymbolOnly",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE:UNRESOLVED",
-    "comment": "Undefined Symbol Only",
-    "value": "UndefinedSymbolOnly",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:5",
-    "comment": "X86 Image Only",
-    "value": "X86Image",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:6",
-    "comment": "X64 Image Only",
-    "value": "X64Image",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:16",
-    "comment": "Itanium Image Only",
-    "value": "ItaniumImage",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='asInvoker'",
-    "comment": "asInvoker",
-    "value": "AsInvoker",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='highestAvailable'",
-    "comment": "highestAvailable",
-    "value": "HighestAvailable",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='requireAdministrator'",
-    "comment": "requireAdministrator",
-    "value": "RequireAdministrator",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:CONSOLE",
-    "comment": "Console",
-    "value": "Console",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:WINDOWS",
-    "comment": "Windows",
-    "value": "Windows",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:NATIVE",
-    "comment": "Native",
-    "value": "Native",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_APPLICATION",
-    "comment": "EFI Application",
-    "value": "EFI Application",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
-    "comment": "EFI Boot Service Driver",
-    "value": "EFI Boot Service Driver",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_ROM",
-    "comment": "EFI ROM",
-    "value": "EFI ROM",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
-    "comment": "EFI Runtime",
-    "value": "EFI Runtime",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:WINDOWSCE",
-    "comment": "WindowsCE",
-    "value": "WindowsCE",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:POSIX",
-    "comment": "POSIX",
-    "value": "POSIX",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "Driver",
-    "comment": "Driver",
-    "value": "Driver",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "DRIVER:UPONLY",
-    "comment": "UP Only",
-    "value": "UpOnly",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "DRIVER:WDM",
-    "comment": "WDM",
-    "value": "WDM",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "",
-    "comment": "Default",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG",
-    "comment": "Use Link Time Code Generation",
-    "value": "UseLinkTimeCodeGeneration",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGInstrument",
-    "comment": "Profile Guided Optimization - Instrument",
-    "value": "PGInstrument",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGOptimize",
-    "comment": "Profile Guided Optimization - Optimization",
-    "value": "PGOptimization",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGUpdate",
-    "comment": "Profile Guided Optimization - Update",
-    "value": "PGUpdate",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:ARM",
-    "comment": "MachineARM",
-    "value": "MachineARM",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:EBC",
-    "comment": "MachineEBC",
-    "value": "MachineEBC",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:IA64",
-    "comment": "MachineIA64",
-    "value": "MachineIA64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPS",
-    "comment": "MachineMIPS",
-    "value": "MachineMIPS",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPS16",
-    "comment": "MachineMIPS16",
-    "value": "MachineMIPS16",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPSFPU",
-    "comment": "MachineMIPSFPU",
-    "value": "MachineMIPSFPU",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPSFPU16",
-    "comment": "MachineMIPSFPU16",
-    "value": "MachineMIPSFPU16",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:SH4",
-    "comment": "MachineSH4",
-    "value": "MachineSH4",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:THUMB",
-    "comment": "MachineTHUMB",
-    "value": "MachineTHUMB",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:X64",
-    "comment": "MachineX64",
-    "value": "MachineX64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:X86",
-    "comment": "MachineX86",
-    "value": "MachineX86",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:MTA",
-    "comment": "MTA threading attribute",
-    "value": "MTAThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:STA",
-    "comment": "STA threading attribute",
-    "value": "STAThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:NONE",
-    "comment": "Default threading attribute",
-    "value": "DefaultThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:IJW",
-    "comment": "Force IJW image",
-    "value": "ForceIJWImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:PURE",
-    "comment": "Force Pure IL Image",
-    "value": "ForcePureILImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:SAFE",
-    "comment": "Force Safe IL Image",
-    "value": "ForceSafeILImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "",
-    "comment": "Default image type",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:PROMPT",
-    "comment": "PromptImmediately",
-    "value": "PromptImmediately",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:QUEUE",
-    "comment": "Queue For Next Login",
-    "value": "QueueForNextLogin",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:SEND",
-    "comment": "Send Error Report",
-    "value": "SendErrorReport",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:NONE",
-    "comment": "No Error Report",
-    "value": "NoErrorReport",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError:NO",
-    "comment": "Disabled",
-    "value": "Disabled",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError:SYSTEMDLL",
-    "comment": "System Dlls Only",
-    "value": "SystemDlls",
-    "flags": []
-  },
-  {
-    "name": "LinkIncremental",
-    "switch": "INCREMENTAL:NO",
-    "comment": "Enable Incremental Linking",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkIncremental",
-    "switch": "INCREMENTAL",
-    "comment": "Enable Incremental Linking",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SuppressStartupBanner",
-    "switch": "NOLOGO",
-    "comment": "Suppress Startup Banner",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkStatus",
-    "switch": "LTCG:NOSTATUS",
-    "comment": "Link Status",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkStatus",
-    "switch": "LTCG:STATUS",
-    "comment": "Link Status",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "PreventDllBinding",
-    "switch": "ALLOWBIND:NO",
-    "comment": "Prevent Dll Binding",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "PreventDllBinding",
-    "switch": "ALLOWBIND",
-    "comment": "Prevent Dll Binding",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TreatLinkerWarningAsErrors",
-    "switch": "WX:NO",
-    "comment": "Treat Linker Warning As Errors",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TreatLinkerWarningAsErrors",
-    "switch": "WX",
-    "comment": "Treat Linker Warning As Errors",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "IgnoreAllDefaultLibraries",
-    "switch": "NODEFAULTLIB",
-    "comment": "Ignore All Default Libraries",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateManifest",
-    "switch": "MANIFEST:NO",
-    "comment": "Generate Manifest",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "GenerateManifest",
-    "switch": "MANIFEST",
-    "comment": "Generate Manifest",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AllowIsolation",
-    "switch": "ALLOWISOLATION:NO",
-    "comment": "Allow Isolation",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "AllowIsolation",
-    "switch": "ALLOWISOLATION",
-    "comment": "Allow Isolation",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableUAC",
-    "switch": "MANIFESTUAC:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired",
-      "SpaceAppendable"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='false'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "false",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='false'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='true'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateDebugInformation",
-    "switch": "DEBUG",
-    "comment": "Generate Debug Info",
-    "value": "true",
-    "flags": [
-      "CaseInsensitive"
-    ]
-  },
-  {
-    "name": "GenerateMapFile",
-    "switch": "MAP",
-    "comment": "Generate Map File",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
-  },
-  {
-    "name": "MapExports",
-    "switch": "MAPINFO:EXPORTS",
-    "comment": "Map Exports",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AssemblyDebug",
-    "switch": "ASSEMBLYDEBUG:DISABLE",
-    "comment": "Debuggable Assembly",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "AssemblyDebug",
-    "switch": "ASSEMBLYDEBUG",
-    "comment": "Debuggable Assembly",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LargeAddressAware",
-    "switch": "LARGEADDRESSAWARE:NO",
-    "comment": "Enable Large Addresses",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LargeAddressAware",
-    "switch": "LARGEADDRESSAWARE",
-    "comment": "Enable Large Addresses",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TerminalServerAware",
-    "switch": "TSAWARE:NO",
-    "comment": "Terminal Server",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TerminalServerAware",
-    "switch": "TSAWARE",
-    "comment": "Terminal Server",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SwapRunFromCD",
-    "switch": "SWAPRUN:CD",
-    "comment": "Swap Run From CD",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SwapRunFromNET",
-    "switch": "SWAPRUN:NET",
-    "comment": "Swap Run From Network",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "OptimizeReferences",
-    "switch": "OPT:NOREF",
-    "comment": "References",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "OptimizeReferences",
-    "switch": "OPT:REF",
-    "comment": "References",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableCOMDATFolding",
-    "switch": "OPT:NOICF",
-    "comment": "Enable COMDAT Folding",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnableCOMDATFolding",
-    "switch": "OPT:ICF",
-    "comment": "Enable COMDAT Folding",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "IgnoreEmbeddedIDL",
-    "switch": "IGNOREIDL",
-    "comment": "Ignore Embedded IDL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "NoEntryPoint",
-    "switch": "NOENTRY",
-    "comment": "No Entry Point",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SetChecksum",
-    "switch": "RELEASE",
-    "comment": "Set Checksum",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "RandomizedBaseAddress",
-    "switch": "DYNAMICBASE:NO",
-    "comment": "Randomized Base Address",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "RandomizedBaseAddress",
-    "switch": "DYNAMICBASE",
-    "comment": "Randomized Base Address",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "FixedBaseAddress",
-    "switch": "FIXED:NO",
-    "comment": "Fixed Base Address",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "FixedBaseAddress",
-    "switch": "FIXED",
-    "comment": "Fixed Base Address",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "DataExecutionPrevention",
-    "switch": "NXCOMPAT:NO",
-    "comment": "Data Execution Prevention (DEP)",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "DataExecutionPrevention",
-    "switch": "NXCOMPAT",
-    "comment": "Data Execution Prevention (DEP)",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TurnOffAssemblyGeneration",
-    "switch": "NOASSEMBLY",
-    "comment": "Turn Off Assembly Generation",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SupportUnloadOfDelayLoadedDLL",
-    "switch": "DELAY:UNLOAD",
-    "comment": "Unload delay loaded DLL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SupportNobindOfDelayLoadedDLL",
-    "switch": "DELAY:NOBIND",
-    "comment": "Nobind delay loaded DLL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "Profile",
-    "switch": "PROFILE",
-    "comment": "Profile",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkDelaySign",
-    "switch": "DELAYSIGN:NO",
-    "comment": "Delay Sign",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkDelaySign",
-    "switch": "DELAYSIGN",
-    "comment": "Delay Sign",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "CLRUnmanagedCodeCheck",
-    "switch": "CLRUNMANAGEDCODECHECK:NO",
-    "comment": "CLR Unmanaged Code Check",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "CLRUnmanagedCodeCheck",
-    "switch": "CLRUNMANAGEDCODECHECK",
-    "comment": "CLR Unmanaged Code Check",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ImageHasSafeExceptionHandlers",
-    "switch": "SAFESEH:NO",
-    "comment": "Image Has Safe Exception Handlers",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "ImageHasSafeExceptionHandlers",
-    "switch": "SAFESEH",
-    "comment": "Image Has Safe Exception Handlers",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkDLL",
-    "switch": "DLL",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AdditionalLibraryDirectories",
-    "switch": "LIBPATH:",
-    "comment": "Additional Library Directories",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "IgnoreSpecificDefaultLibraries",
-    "switch": "NODEFAULTLIB:",
-    "comment": "Ignore Specific Default Libraries",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AddModuleNamesToAssembly",
-    "switch": "ASSEMBLYMODULE:",
-    "comment": "Add Module to Assembly",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "EmbedManagedResourceFile",
-    "switch": "ASSEMBLYRESOURCE:",
-    "comment": "Embed Managed Resource File",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "ForceSymbolReferences",
-    "switch": "INCLUDE:",
-    "comment": "Force Symbol References",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "DelayLoadDLLs",
-    "switch": "DELAYLOAD:",
-    "comment": "Delay Loaded Dlls",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AssemblyLinkResource",
-    "switch": "ASSEMBLYLINKRESOURCE:",
-    "comment": "Assembly Link Resource",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AdditionalManifestDependencies",
-    "switch": "MANIFESTDEPENDENCY:",
-    "comment": "Additional Manifest Dependencies",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "OutputFile",
-    "switch": "OUT:",
-    "comment": "Output File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "Version",
-    "switch": "VERSION:",
-    "comment": "Version",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "SpecifySectionAttributes",
-    "switch": "SECTION:",
-    "comment": "Specify Section Attributes",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MSDOSStubFileName",
-    "switch": "STUB:",
-    "comment": "MS-DOS Stub File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ModuleDefinitionFile",
-    "switch": "DEF:",
-    "comment": "Module Definition File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ManifestFile",
-    "switch": "ManifestFile:",
-    "comment": "Manifest File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ProgramDatabaseFile",
-    "switch": "PDB:",
-    "comment": "Generate Program Database File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "StripPrivateSymbols",
-    "switch": "PDBSTRIPPED:",
-    "comment": "Strip Private Symbols",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MapFileName",
-    "switch": "MAP:",
-    "comment": "Map File Name",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "HeapReserveSize",
-    "switch": "HEAP:",
-    "comment": "Heap Reserve Size",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "HeapCommitSize",
-    "switch": "HEAP",
-    "comment": "Heap Commit Size",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "StackReserveSize",
-    "switch": "STACK:",
-    "comment": "Stack Reserve Size",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "StackCommitSize",
-    "switch": "STACK",
-    "comment": "Stack Commit Size",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "FunctionOrder",
-    "switch": "ORDER:@",
-    "comment": "Function Order",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ProfileGuidedDatabase",
-    "switch": "PGD:",
-    "comment": "Profile Guided Database",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MidlCommandFile",
-    "switch": "MIDL:@",
-    "comment": "MIDL Commands",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MergedIDLBaseFileName",
-    "switch": "IDLOUT:",
-    "comment": "Merged IDL Base File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "TypeLibraryFile",
-    "switch": "TLBOUT:",
-    "comment": "Type Library",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "EntryPointSymbol",
-    "switch": "ENTRY:",
-    "comment": "Entry Point",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "BaseAddress",
-    "switch": "BASE:",
-    "comment": "Base Address",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ImportLibrary",
-    "switch": "IMPLIB:",
-    "comment": "Import Library",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MergeSections",
-    "switch": "MERGE:",
-    "comment": "Merge Sections",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "LinkKeyFile",
-    "switch": "KEYFILE:",
-    "comment": "Key File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "KeyContainer",
-    "switch": "KEYCONTAINER:",
-    "comment": "Key Container",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "TypeLibraryResourceID",
-    "switch": "TLBID:",
-    "comment": "TypeLib Resource ID",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "SectionAlignment",
-    "switch": "ALIGN:",
-    "comment": "SectionAlignment",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  }
-]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v11_CSharp.json b/share/cmake-3.18/Templates/MSBuild/FlagTables/v11_CSharp.json
deleted file mode 100644
index 5989aea..0000000
--- a/share/cmake-3.18/Templates/MSBuild/FlagTables/v11_CSharp.json
+++ /dev/null
@@ -1,574 +0,0 @@
-[
-  {
-    "name":  "ProjectName",
-    "switch": "out:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:exe",
-    "comment": "",
-    "value": "Exe",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:winexe",
-    "comment": "",
-    "value": "Winexe",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:library",
-    "comment": "",
-    "value": "Library",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:module",
-    "comment": "",
-    "value": "Module",
-    "flags": []
-  },
-  {
-    "name":  "DocumentationFile",
-    "switch": "doc",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:x86",
-    "comment": "",
-    "value": "x86",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:Itanium",
-    "comment": "",
-    "value": "Itanium",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:x64",
-    "comment": "",
-    "value": "x64",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:arm",
-    "comment": "",
-    "value": "arm",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:anycpu32bitpreferred",
-    "comment": "",
-    "value": "anycpu32bitpreferred",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:anycpu",
-    "comment": "",
-    "value": "anycpu",
-    "flags": []
-  },
-  {
-    "name":  "References",
-    "switch": "reference:",
-    "comment": "mit alias",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "References",
-    "switch": "reference:",
-    "comment": "dateiliste",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "AddModules",
-    "switch": "addmodule:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name":  "Win32Resource",
-    "switch": "win32res:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "ApplicationIcon",
-    "switch": "win32icon:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "ApplicationManifest",
-    "switch": "win32manifest:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "NoWin32Manifest",
-    "switch": "nowin32manifest",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DefineDebug",
-    "switch": "debug",
-    "comment": "",
-    "value": "true",
-    "flags": [
-      "Continue"
-    ]
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:none",
-    "comment": "",
-    "value": "none",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:full",
-    "comment": "",
-    "value": "full",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:pdbonly",
-    "comment": "",
-    "value": "pdbonly",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror-",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror+",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:0",
-    "comment": "",
-    "value": "0",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:1",
-    "comment": "",
-    "value": "1",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:2",
-    "comment": "",
-    "value": "2",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:3",
-    "comment": "",
-    "value": "3",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:4",
-    "comment": "",
-    "value": "4",
-    "flags": []
-  },
-  {
-    "name":  "NoWarn",
-    "switch": "nowarn:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired",
-      "CommaAppendable"
-    ]
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DefineConstants",
-    "switch": "define:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "SemicolonAppendable",
-      "UserValue"
-    ]
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:ISO-1",
-    "comment": "",
-    "value": "ISO-1",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:ISO-2",
-    "comment": "",
-    "value": "ISO-2",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:3",
-    "comment": "",
-    "value": "3",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:4",
-    "comment": "",
-    "value": "4",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:5",
-    "comment": "",
-    "value": "5",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:6",
-    "comment": "",
-    "value": "6",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:default",
-    "comment": "",
-    "value": "default",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AssemblyOriginatorKeyFile",
-    "switch": "keyfile",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "KeyContainerName",
-    "switch": "keycontainer",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoLogo",
-    "switch": "nologo",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoConfig",
-    "switch": "noconfig",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "BaseAddress",
-    "switch": "baseaddress:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "CodePage",
-    "switch": "codepage",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "Utf8Output",
-    "switch": "utf8output",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "MainEntryPoint",
-    "switch": "main:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "GenerateFullPaths",
-    "switch": "fullpaths",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "FileAlignment",
-    "switch": "filealign",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "PdbFile",
-    "switch": "pdb:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "SubsystemVersion",
-    "switch": "subsystemversion",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "AdditionalLibPaths",
-    "switch": "lib:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:none",
-    "comment": "Do Not Send Report",
-    "value": "none",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:prompt",
-    "comment": "Prompt Immediately",
-    "value": "prompt",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:queue",
-    "comment": "Queue For Next Login",
-    "value": "queue",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:send",
-    "comment": "Send Automatically",
-    "value": "send",
-    "flags": []
-  }
-]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v11_Link.json b/share/cmake-3.18/Templates/MSBuild/FlagTables/v11_Link.json
deleted file mode 100644
index 5d5c13f..0000000
--- a/share/cmake-3.18/Templates/MSBuild/FlagTables/v11_Link.json
+++ /dev/null
@@ -1,1272 +0,0 @@
-[
-  {
-    "name": "ShowProgress",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE",
-    "comment": "Display all progress messages",
-    "value": "LinkVerbose",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:Lib",
-    "comment": "For Libraries Searched",
-    "value": "LinkVerboseLib",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:ICF",
-    "comment": "About COMDAT folding during optimized linking",
-    "value": "LinkVerboseICF",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:REF",
-    "comment": "About data removed during optimized linking",
-    "value": "LinkVerboseREF",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:SAFESEH",
-    "comment": "About Modules incompatible with SEH",
-    "value": "LinkVerboseSAFESEH",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:CLR",
-    "comment": "About linker activity related to managed code",
-    "value": "LinkVerboseCLR",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE:MULTIPLE",
-    "comment": "Multiply Defined Symbol Only",
-    "value": "MultiplyDefinedSymbolOnly",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE:UNRESOLVED",
-    "comment": "Undefined Symbol Only",
-    "value": "UndefinedSymbolOnly",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:5",
-    "comment": "X86 Image Only",
-    "value": "X86Image",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:6",
-    "comment": "X64 Image Only",
-    "value": "X64Image",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:16",
-    "comment": "Itanium Image Only",
-    "value": "ItaniumImage",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='asInvoker'",
-    "comment": "asInvoker",
-    "value": "AsInvoker",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='highestAvailable'",
-    "comment": "highestAvailable",
-    "value": "HighestAvailable",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='requireAdministrator'",
-    "comment": "requireAdministrator",
-    "value": "RequireAdministrator",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:CONSOLE",
-    "comment": "Console",
-    "value": "Console",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:WINDOWS",
-    "comment": "Windows",
-    "value": "Windows",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:NATIVE",
-    "comment": "Native",
-    "value": "Native",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_APPLICATION",
-    "comment": "EFI Application",
-    "value": "EFI Application",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
-    "comment": "EFI Boot Service Driver",
-    "value": "EFI Boot Service Driver",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_ROM",
-    "comment": "EFI ROM",
-    "value": "EFI ROM",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
-    "comment": "EFI Runtime",
-    "value": "EFI Runtime",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:POSIX",
-    "comment": "POSIX",
-    "value": "POSIX",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "Driver",
-    "comment": "Driver",
-    "value": "Driver",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "DRIVER:UPONLY",
-    "comment": "UP Only",
-    "value": "UpOnly",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "DRIVER:WDM",
-    "comment": "WDM",
-    "value": "WDM",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "",
-    "comment": "Default",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG",
-    "comment": "Use Link Time Code Generation",
-    "value": "UseLinkTimeCodeGeneration",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGInstrument",
-    "comment": "Profile Guided Optimization - Instrument",
-    "value": "PGInstrument",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGOptimize",
-    "comment": "Profile Guided Optimization - Optimization",
-    "value": "PGOptimization",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGUpdate",
-    "comment": "Profile Guided Optimization - Update",
-    "value": "PGUpdate",
-    "flags": []
-  },
-  {
-    "name": "GenerateWindowsMetadata",
-    "switch": "WINMD",
-    "comment": "Yes",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateWindowsMetadata",
-    "switch": "WINMD:NO",
-    "comment": "No",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA1",
-    "comment": "SHA1",
-    "value": "SHA1",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA256",
-    "comment": "SHA256",
-    "value": "SHA256",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA384",
-    "comment": "SHA384",
-    "value": "SHA384",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA512",
-    "comment": "SHA512",
-    "value": "SHA512",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:ARM",
-    "comment": "MachineARM",
-    "value": "MachineARM",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:EBC",
-    "comment": "MachineEBC",
-    "value": "MachineEBC",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:IA64",
-    "comment": "MachineIA64",
-    "value": "MachineIA64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPS",
-    "comment": "MachineMIPS",
-    "value": "MachineMIPS",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPS16",
-    "comment": "MachineMIPS16",
-    "value": "MachineMIPS16",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPSFPU",
-    "comment": "MachineMIPSFPU",
-    "value": "MachineMIPSFPU",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPSFPU16",
-    "comment": "MachineMIPSFPU16",
-    "value": "MachineMIPSFPU16",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:SH4",
-    "comment": "MachineSH4",
-    "value": "MachineSH4",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:THUMB",
-    "comment": "MachineTHUMB",
-    "value": "MachineTHUMB",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:X64",
-    "comment": "MachineX64",
-    "value": "MachineX64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:X86",
-    "comment": "MachineX86",
-    "value": "MachineX86",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:MTA",
-    "comment": "MTA threading attribute",
-    "value": "MTAThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:STA",
-    "comment": "STA threading attribute",
-    "value": "STAThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:NONE",
-    "comment": "Default threading attribute",
-    "value": "DefaultThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:IJW",
-    "comment": "Force IJW image",
-    "value": "ForceIJWImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:PURE",
-    "comment": "Force Pure IL Image",
-    "value": "ForcePureILImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:SAFE",
-    "comment": "Force Safe IL Image",
-    "value": "ForceSafeILImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "",
-    "comment": "Default image type",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA1",
-    "comment": "SHA1",
-    "value": "SHA1",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA256",
-    "comment": "SHA256",
-    "value": "SHA256",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA384",
-    "comment": "SHA384",
-    "value": "SHA384",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA512",
-    "comment": "SHA512",
-    "value": "SHA512",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:PROMPT",
-    "comment": "PromptImmediately",
-    "value": "PromptImmediately",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:QUEUE",
-    "comment": "Queue For Next Login",
-    "value": "QueueForNextLogin",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:SEND",
-    "comment": "Send Error Report",
-    "value": "SendErrorReport",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:NONE",
-    "comment": "No Error Report",
-    "value": "NoErrorReport",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError:NO",
-    "comment": "Disabled",
-    "value": "Disabled",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError:SYSTEMDLL",
-    "comment": "System Dlls Only",
-    "value": "SystemDlls",
-    "flags": []
-  },
-  {
-    "name": "LinkIncremental",
-    "switch": "INCREMENTAL:NO",
-    "comment": "Enable Incremental Linking",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkIncremental",
-    "switch": "INCREMENTAL",
-    "comment": "Enable Incremental Linking",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SuppressStartupBanner",
-    "switch": "NOLOGO",
-    "comment": "Suppress Startup Banner",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkStatus",
-    "switch": "LTCG:NOSTATUS",
-    "comment": "Link Status",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkStatus",
-    "switch": "LTCG:STATUS",
-    "comment": "Link Status",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "PreventDllBinding",
-    "switch": "ALLOWBIND:NO",
-    "comment": "Prevent Dll Binding",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "PreventDllBinding",
-    "switch": "ALLOWBIND",
-    "comment": "Prevent Dll Binding",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TreatLinkerWarningAsErrors",
-    "switch": "WX:NO",
-    "comment": "Treat Linker Warning As Errors",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TreatLinkerWarningAsErrors",
-    "switch": "WX",
-    "comment": "Treat Linker Warning As Errors",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "IgnoreAllDefaultLibraries",
-    "switch": "NODEFAULTLIB",
-    "comment": "Ignore All Default Libraries",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateManifest",
-    "switch": "MANIFEST:NO",
-    "comment": "Generate Manifest",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "GenerateManifest",
-    "switch": "MANIFEST",
-    "comment": "Generate Manifest",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AllowIsolation",
-    "switch": "ALLOWISOLATION:NO",
-    "comment": "Allow Isolation",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "AllowIsolation",
-    "switch": "",
-    "comment": "Allow Isolation",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableUAC",
-    "switch": "MANIFESTUAC:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired",
-      "SpaceAppendable"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='false'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "false",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='false'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='true'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ManifestEmbed",
-    "switch": "manifest:embed",
-    "comment": "Embed Manifest",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateDebugInformation",
-    "switch": "DEBUG",
-    "comment": "Generate Debug Info",
-    "value": "true",
-    "flags": [
-      "CaseInsensitive"
-    ]
-  },
-  {
-    "name": "GenerateMapFile",
-    "switch": "MAP",
-    "comment": "Generate Map File",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
-  },
-  {
-    "name": "MapExports",
-    "switch": "MAPINFO:EXPORTS",
-    "comment": "Map Exports",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AssemblyDebug",
-    "switch": "ASSEMBLYDEBUG:DISABLE",
-    "comment": "Debuggable Assembly",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "AssemblyDebug",
-    "switch": "ASSEMBLYDEBUG",
-    "comment": "Debuggable Assembly",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LargeAddressAware",
-    "switch": "LARGEADDRESSAWARE:NO",
-    "comment": "Enable Large Addresses",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LargeAddressAware",
-    "switch": "LARGEADDRESSAWARE",
-    "comment": "Enable Large Addresses",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TerminalServerAware",
-    "switch": "TSAWARE:NO",
-    "comment": "Terminal Server",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TerminalServerAware",
-    "switch": "TSAWARE",
-    "comment": "Terminal Server",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SwapRunFromCD",
-    "switch": "SWAPRUN:CD",
-    "comment": "Swap Run From CD",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SwapRunFromNET",
-    "switch": "SWAPRUN:NET",
-    "comment": "Swap Run From Network",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "OptimizeReferences",
-    "switch": "OPT:NOREF",
-    "comment": "References",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "OptimizeReferences",
-    "switch": "OPT:REF",
-    "comment": "References",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableCOMDATFolding",
-    "switch": "OPT:NOICF",
-    "comment": "Enable COMDAT Folding",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnableCOMDATFolding",
-    "switch": "OPT:ICF",
-    "comment": "Enable COMDAT Folding",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "IgnoreEmbeddedIDL",
-    "switch": "IGNOREIDL",
-    "comment": "Ignore Embedded IDL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AppContainer",
-    "switch": "APPCONTAINER",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataLinkDelaySign",
-    "switch": "WINMDDELAYSIGN:NO",
-    "comment": "Windows Metadata Delay Sign",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataLinkDelaySign",
-    "switch": "WINMDDELAYSIGN",
-    "comment": "Windows Metadata Delay Sign",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "NoEntryPoint",
-    "switch": "NOENTRY",
-    "comment": "No Entry Point",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SetChecksum",
-    "switch": "RELEASE",
-    "comment": "Set Checksum",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "RandomizedBaseAddress",
-    "switch": "DYNAMICBASE:NO",
-    "comment": "Randomized Base Address",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "RandomizedBaseAddress",
-    "switch": "DYNAMICBASE",
-    "comment": "Randomized Base Address",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "FixedBaseAddress",
-    "switch": "FIXED:NO",
-    "comment": "Fixed Base Address",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "FixedBaseAddress",
-    "switch": "FIXED",
-    "comment": "Fixed Base Address",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "DataExecutionPrevention",
-    "switch": "NXCOMPAT:NO",
-    "comment": "Data Execution Prevention (DEP)",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "DataExecutionPrevention",
-    "switch": "NXCOMPAT",
-    "comment": "Data Execution Prevention (DEP)",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TurnOffAssemblyGeneration",
-    "switch": "NOASSEMBLY",
-    "comment": "Turn Off Assembly Generation",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SupportUnloadOfDelayLoadedDLL",
-    "switch": "DELAY:UNLOAD",
-    "comment": "Unload delay loaded DLL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SupportNobindOfDelayLoadedDLL",
-    "switch": "DELAY:NOBIND",
-    "comment": "Nobind delay loaded DLL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "Profile",
-    "switch": "PROFILE",
-    "comment": "Profile",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkDelaySign",
-    "switch": "DELAYSIGN:NO",
-    "comment": "Delay Sign",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkDelaySign",
-    "switch": "DELAYSIGN",
-    "comment": "Delay Sign",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "CLRUnmanagedCodeCheck",
-    "switch": "CLRUNMANAGEDCODECHECK:NO",
-    "comment": "CLR Unmanaged Code Check",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "CLRUnmanagedCodeCheck",
-    "switch": "CLRUNMANAGEDCODECHECK",
-    "comment": "CLR Unmanaged Code Check",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "DetectOneDefinitionRule",
-    "switch": "ODR",
-    "comment": "Detect One Definition Rule violations",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ImageHasSafeExceptionHandlers",
-    "switch": "SAFESEH:NO",
-    "comment": "Image Has Safe Exception Handlers",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "ImageHasSafeExceptionHandlers",
-    "switch": "SAFESEH",
-    "comment": "Image Has Safe Exception Handlers",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkDLL",
-    "switch": "DLL",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AdditionalLibraryDirectories",
-    "switch": "LIBPATH:",
-    "comment": "Additional Library Directories",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "IgnoreSpecificDefaultLibraries",
-    "switch": "NODEFAULTLIB:",
-    "comment": "Ignore Specific Default Libraries",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AddModuleNamesToAssembly",
-    "switch": "ASSEMBLYMODULE:",
-    "comment": "Add Module to Assembly",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "EmbedManagedResourceFile",
-    "switch": "ASSEMBLYRESOURCE:",
-    "comment": "Embed Managed Resource File",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "ForceSymbolReferences",
-    "switch": "INCLUDE:",
-    "comment": "Force Symbol References",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "DelayLoadDLLs",
-    "switch": "DELAYLOAD:",
-    "comment": "Delay Loaded Dlls",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AssemblyLinkResource",
-    "switch": "ASSEMBLYLINKRESOURCE:",
-    "comment": "Assembly Link Resource",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AdditionalManifestDependencies",
-    "switch": "MANIFESTDEPENDENCY:",
-    "comment": "Additional Manifest Dependencies",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "ManifestInput",
-    "switch": "manifestinput:",
-    "comment": "Manifest Input",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "OutputFile",
-    "switch": "OUT:",
-    "comment": "Output File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "Version",
-    "switch": "VERSION:",
-    "comment": "Version",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "SpecifySectionAttributes",
-    "switch": "SECTION:",
-    "comment": "Specify Section Attributes",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MSDOSStubFileName",
-    "switch": "STUB:",
-    "comment": "MS-DOS Stub File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ModuleDefinitionFile",
-    "switch": "DEF:",
-    "comment": "Module Definition File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ManifestFile",
-    "switch": "ManifestFile:",
-    "comment": "Manifest File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ProgramDatabaseFile",
-    "switch": "PDB:",
-    "comment": "Generate Program Database File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "StripPrivateSymbols",
-    "switch": "PDBSTRIPPED:",
-    "comment": "Strip Private Symbols",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MapFileName",
-    "switch": "MAP:",
-    "comment": "Map File Name",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "HeapReserveSize",
-    "switch": "HEAP:",
-    "comment": "Heap Reserve Size",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "HeapCommitSize",
-    "switch": "HEAP",
-    "comment": "Heap Commit Size",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "StackReserveSize",
-    "switch": "STACK:",
-    "comment": "Stack Reserve Size",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "StackCommitSize",
-    "switch": "STACK",
-    "comment": "Stack Commit Size",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "FunctionOrder",
-    "switch": "ORDER:@",
-    "comment": "Function Order",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ProfileGuidedDatabase",
-    "switch": "PGD:",
-    "comment": "Profile Guided Database",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MidlCommandFile",
-    "switch": "MIDL:@",
-    "comment": "MIDL Commands",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MergedIDLBaseFileName",
-    "switch": "IDLOUT:",
-    "comment": "Merged IDL Base File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "TypeLibraryFile",
-    "switch": "TLBOUT:",
-    "comment": "Type Library",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "WindowsMetadataFile",
-    "switch": "WINMDFILE:",
-    "comment": "Windows Metadata File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "WindowsMetadataLinkKeyFile",
-    "switch": "WINMDKEYFILE:",
-    "comment": "Windows Metadata Key File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "WindowsMetadataKeyContainer",
-    "switch": "WINMDKEYCONTAINER:",
-    "comment": "Windows Metadata Key Container",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "EntryPointSymbol",
-    "switch": "ENTRY:",
-    "comment": "Entry Point",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "BaseAddress",
-    "switch": "BASE:",
-    "comment": "Base Address",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ImportLibrary",
-    "switch": "IMPLIB:",
-    "comment": "Import Library",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MergeSections",
-    "switch": "MERGE:",
-    "comment": "Merge Sections",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "LinkKeyFile",
-    "switch": "KEYFILE:",
-    "comment": "Key File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "KeyContainer",
-    "switch": "KEYCONTAINER:",
-    "comment": "Key Container",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "TypeLibraryResourceID",
-    "switch": "TLBID:",
-    "comment": "TypeLib Resource ID",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "SectionAlignment",
-    "switch": "ALIGN:",
-    "comment": "SectionAlignment",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  }
-]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v12_CSharp.json b/share/cmake-3.18/Templates/MSBuild/FlagTables/v12_CSharp.json
deleted file mode 100644
index 5989aea..0000000
--- a/share/cmake-3.18/Templates/MSBuild/FlagTables/v12_CSharp.json
+++ /dev/null
@@ -1,574 +0,0 @@
-[
-  {
-    "name":  "ProjectName",
-    "switch": "out:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:exe",
-    "comment": "",
-    "value": "Exe",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:winexe",
-    "comment": "",
-    "value": "Winexe",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:library",
-    "comment": "",
-    "value": "Library",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:module",
-    "comment": "",
-    "value": "Module",
-    "flags": []
-  },
-  {
-    "name":  "DocumentationFile",
-    "switch": "doc",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:x86",
-    "comment": "",
-    "value": "x86",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:Itanium",
-    "comment": "",
-    "value": "Itanium",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:x64",
-    "comment": "",
-    "value": "x64",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:arm",
-    "comment": "",
-    "value": "arm",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:anycpu32bitpreferred",
-    "comment": "",
-    "value": "anycpu32bitpreferred",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:anycpu",
-    "comment": "",
-    "value": "anycpu",
-    "flags": []
-  },
-  {
-    "name":  "References",
-    "switch": "reference:",
-    "comment": "mit alias",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "References",
-    "switch": "reference:",
-    "comment": "dateiliste",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "AddModules",
-    "switch": "addmodule:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name":  "Win32Resource",
-    "switch": "win32res:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "ApplicationIcon",
-    "switch": "win32icon:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "ApplicationManifest",
-    "switch": "win32manifest:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "NoWin32Manifest",
-    "switch": "nowin32manifest",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DefineDebug",
-    "switch": "debug",
-    "comment": "",
-    "value": "true",
-    "flags": [
-      "Continue"
-    ]
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:none",
-    "comment": "",
-    "value": "none",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:full",
-    "comment": "",
-    "value": "full",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:pdbonly",
-    "comment": "",
-    "value": "pdbonly",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror-",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror+",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:0",
-    "comment": "",
-    "value": "0",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:1",
-    "comment": "",
-    "value": "1",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:2",
-    "comment": "",
-    "value": "2",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:3",
-    "comment": "",
-    "value": "3",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:4",
-    "comment": "",
-    "value": "4",
-    "flags": []
-  },
-  {
-    "name":  "NoWarn",
-    "switch": "nowarn:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired",
-      "CommaAppendable"
-    ]
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DefineConstants",
-    "switch": "define:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "SemicolonAppendable",
-      "UserValue"
-    ]
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:ISO-1",
-    "comment": "",
-    "value": "ISO-1",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:ISO-2",
-    "comment": "",
-    "value": "ISO-2",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:3",
-    "comment": "",
-    "value": "3",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:4",
-    "comment": "",
-    "value": "4",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:5",
-    "comment": "",
-    "value": "5",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:6",
-    "comment": "",
-    "value": "6",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:default",
-    "comment": "",
-    "value": "default",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AssemblyOriginatorKeyFile",
-    "switch": "keyfile",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "KeyContainerName",
-    "switch": "keycontainer",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoLogo",
-    "switch": "nologo",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoConfig",
-    "switch": "noconfig",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "BaseAddress",
-    "switch": "baseaddress:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "CodePage",
-    "switch": "codepage",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "Utf8Output",
-    "switch": "utf8output",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "MainEntryPoint",
-    "switch": "main:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "GenerateFullPaths",
-    "switch": "fullpaths",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "FileAlignment",
-    "switch": "filealign",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "PdbFile",
-    "switch": "pdb:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "SubsystemVersion",
-    "switch": "subsystemversion",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "AdditionalLibPaths",
-    "switch": "lib:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:none",
-    "comment": "Do Not Send Report",
-    "value": "none",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:prompt",
-    "comment": "Prompt Immediately",
-    "value": "prompt",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:queue",
-    "comment": "Queue For Next Login",
-    "value": "queue",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:send",
-    "comment": "Send Automatically",
-    "value": "send",
-    "flags": []
-  }
-]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v12_Link.json b/share/cmake-3.18/Templates/MSBuild/FlagTables/v12_Link.json
deleted file mode 100644
index 5d5c13f..0000000
--- a/share/cmake-3.18/Templates/MSBuild/FlagTables/v12_Link.json
+++ /dev/null
@@ -1,1272 +0,0 @@
-[
-  {
-    "name": "ShowProgress",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE",
-    "comment": "Display all progress messages",
-    "value": "LinkVerbose",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:Lib",
-    "comment": "For Libraries Searched",
-    "value": "LinkVerboseLib",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:ICF",
-    "comment": "About COMDAT folding during optimized linking",
-    "value": "LinkVerboseICF",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:REF",
-    "comment": "About data removed during optimized linking",
-    "value": "LinkVerboseREF",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:SAFESEH",
-    "comment": "About Modules incompatible with SEH",
-    "value": "LinkVerboseSAFESEH",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:CLR",
-    "comment": "About linker activity related to managed code",
-    "value": "LinkVerboseCLR",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE:MULTIPLE",
-    "comment": "Multiply Defined Symbol Only",
-    "value": "MultiplyDefinedSymbolOnly",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE:UNRESOLVED",
-    "comment": "Undefined Symbol Only",
-    "value": "UndefinedSymbolOnly",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:5",
-    "comment": "X86 Image Only",
-    "value": "X86Image",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:6",
-    "comment": "X64 Image Only",
-    "value": "X64Image",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:16",
-    "comment": "Itanium Image Only",
-    "value": "ItaniumImage",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='asInvoker'",
-    "comment": "asInvoker",
-    "value": "AsInvoker",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='highestAvailable'",
-    "comment": "highestAvailable",
-    "value": "HighestAvailable",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='requireAdministrator'",
-    "comment": "requireAdministrator",
-    "value": "RequireAdministrator",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:CONSOLE",
-    "comment": "Console",
-    "value": "Console",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:WINDOWS",
-    "comment": "Windows",
-    "value": "Windows",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:NATIVE",
-    "comment": "Native",
-    "value": "Native",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_APPLICATION",
-    "comment": "EFI Application",
-    "value": "EFI Application",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
-    "comment": "EFI Boot Service Driver",
-    "value": "EFI Boot Service Driver",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_ROM",
-    "comment": "EFI ROM",
-    "value": "EFI ROM",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
-    "comment": "EFI Runtime",
-    "value": "EFI Runtime",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:POSIX",
-    "comment": "POSIX",
-    "value": "POSIX",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "Driver",
-    "comment": "Driver",
-    "value": "Driver",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "DRIVER:UPONLY",
-    "comment": "UP Only",
-    "value": "UpOnly",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "DRIVER:WDM",
-    "comment": "WDM",
-    "value": "WDM",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "",
-    "comment": "Default",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG",
-    "comment": "Use Link Time Code Generation",
-    "value": "UseLinkTimeCodeGeneration",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGInstrument",
-    "comment": "Profile Guided Optimization - Instrument",
-    "value": "PGInstrument",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGOptimize",
-    "comment": "Profile Guided Optimization - Optimization",
-    "value": "PGOptimization",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGUpdate",
-    "comment": "Profile Guided Optimization - Update",
-    "value": "PGUpdate",
-    "flags": []
-  },
-  {
-    "name": "GenerateWindowsMetadata",
-    "switch": "WINMD",
-    "comment": "Yes",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateWindowsMetadata",
-    "switch": "WINMD:NO",
-    "comment": "No",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA1",
-    "comment": "SHA1",
-    "value": "SHA1",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA256",
-    "comment": "SHA256",
-    "value": "SHA256",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA384",
-    "comment": "SHA384",
-    "value": "SHA384",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA512",
-    "comment": "SHA512",
-    "value": "SHA512",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:ARM",
-    "comment": "MachineARM",
-    "value": "MachineARM",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:EBC",
-    "comment": "MachineEBC",
-    "value": "MachineEBC",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:IA64",
-    "comment": "MachineIA64",
-    "value": "MachineIA64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPS",
-    "comment": "MachineMIPS",
-    "value": "MachineMIPS",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPS16",
-    "comment": "MachineMIPS16",
-    "value": "MachineMIPS16",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPSFPU",
-    "comment": "MachineMIPSFPU",
-    "value": "MachineMIPSFPU",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPSFPU16",
-    "comment": "MachineMIPSFPU16",
-    "value": "MachineMIPSFPU16",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:SH4",
-    "comment": "MachineSH4",
-    "value": "MachineSH4",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:THUMB",
-    "comment": "MachineTHUMB",
-    "value": "MachineTHUMB",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:X64",
-    "comment": "MachineX64",
-    "value": "MachineX64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:X86",
-    "comment": "MachineX86",
-    "value": "MachineX86",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:MTA",
-    "comment": "MTA threading attribute",
-    "value": "MTAThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:STA",
-    "comment": "STA threading attribute",
-    "value": "STAThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:NONE",
-    "comment": "Default threading attribute",
-    "value": "DefaultThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:IJW",
-    "comment": "Force IJW image",
-    "value": "ForceIJWImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:PURE",
-    "comment": "Force Pure IL Image",
-    "value": "ForcePureILImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:SAFE",
-    "comment": "Force Safe IL Image",
-    "value": "ForceSafeILImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "",
-    "comment": "Default image type",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA1",
-    "comment": "SHA1",
-    "value": "SHA1",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA256",
-    "comment": "SHA256",
-    "value": "SHA256",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA384",
-    "comment": "SHA384",
-    "value": "SHA384",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA512",
-    "comment": "SHA512",
-    "value": "SHA512",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:PROMPT",
-    "comment": "PromptImmediately",
-    "value": "PromptImmediately",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:QUEUE",
-    "comment": "Queue For Next Login",
-    "value": "QueueForNextLogin",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:SEND",
-    "comment": "Send Error Report",
-    "value": "SendErrorReport",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:NONE",
-    "comment": "No Error Report",
-    "value": "NoErrorReport",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError:NO",
-    "comment": "Disabled",
-    "value": "Disabled",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError:SYSTEMDLL",
-    "comment": "System Dlls Only",
-    "value": "SystemDlls",
-    "flags": []
-  },
-  {
-    "name": "LinkIncremental",
-    "switch": "INCREMENTAL:NO",
-    "comment": "Enable Incremental Linking",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkIncremental",
-    "switch": "INCREMENTAL",
-    "comment": "Enable Incremental Linking",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SuppressStartupBanner",
-    "switch": "NOLOGO",
-    "comment": "Suppress Startup Banner",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkStatus",
-    "switch": "LTCG:NOSTATUS",
-    "comment": "Link Status",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkStatus",
-    "switch": "LTCG:STATUS",
-    "comment": "Link Status",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "PreventDllBinding",
-    "switch": "ALLOWBIND:NO",
-    "comment": "Prevent Dll Binding",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "PreventDllBinding",
-    "switch": "ALLOWBIND",
-    "comment": "Prevent Dll Binding",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TreatLinkerWarningAsErrors",
-    "switch": "WX:NO",
-    "comment": "Treat Linker Warning As Errors",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TreatLinkerWarningAsErrors",
-    "switch": "WX",
-    "comment": "Treat Linker Warning As Errors",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "IgnoreAllDefaultLibraries",
-    "switch": "NODEFAULTLIB",
-    "comment": "Ignore All Default Libraries",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateManifest",
-    "switch": "MANIFEST:NO",
-    "comment": "Generate Manifest",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "GenerateManifest",
-    "switch": "MANIFEST",
-    "comment": "Generate Manifest",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AllowIsolation",
-    "switch": "ALLOWISOLATION:NO",
-    "comment": "Allow Isolation",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "AllowIsolation",
-    "switch": "",
-    "comment": "Allow Isolation",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableUAC",
-    "switch": "MANIFESTUAC:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired",
-      "SpaceAppendable"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='false'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "false",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='false'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='true'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ManifestEmbed",
-    "switch": "manifest:embed",
-    "comment": "Embed Manifest",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateDebugInformation",
-    "switch": "DEBUG",
-    "comment": "Generate Debug Info",
-    "value": "true",
-    "flags": [
-      "CaseInsensitive"
-    ]
-  },
-  {
-    "name": "GenerateMapFile",
-    "switch": "MAP",
-    "comment": "Generate Map File",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
-  },
-  {
-    "name": "MapExports",
-    "switch": "MAPINFO:EXPORTS",
-    "comment": "Map Exports",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AssemblyDebug",
-    "switch": "ASSEMBLYDEBUG:DISABLE",
-    "comment": "Debuggable Assembly",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "AssemblyDebug",
-    "switch": "ASSEMBLYDEBUG",
-    "comment": "Debuggable Assembly",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LargeAddressAware",
-    "switch": "LARGEADDRESSAWARE:NO",
-    "comment": "Enable Large Addresses",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LargeAddressAware",
-    "switch": "LARGEADDRESSAWARE",
-    "comment": "Enable Large Addresses",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TerminalServerAware",
-    "switch": "TSAWARE:NO",
-    "comment": "Terminal Server",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TerminalServerAware",
-    "switch": "TSAWARE",
-    "comment": "Terminal Server",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SwapRunFromCD",
-    "switch": "SWAPRUN:CD",
-    "comment": "Swap Run From CD",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SwapRunFromNET",
-    "switch": "SWAPRUN:NET",
-    "comment": "Swap Run From Network",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "OptimizeReferences",
-    "switch": "OPT:NOREF",
-    "comment": "References",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "OptimizeReferences",
-    "switch": "OPT:REF",
-    "comment": "References",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableCOMDATFolding",
-    "switch": "OPT:NOICF",
-    "comment": "Enable COMDAT Folding",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnableCOMDATFolding",
-    "switch": "OPT:ICF",
-    "comment": "Enable COMDAT Folding",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "IgnoreEmbeddedIDL",
-    "switch": "IGNOREIDL",
-    "comment": "Ignore Embedded IDL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AppContainer",
-    "switch": "APPCONTAINER",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataLinkDelaySign",
-    "switch": "WINMDDELAYSIGN:NO",
-    "comment": "Windows Metadata Delay Sign",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataLinkDelaySign",
-    "switch": "WINMDDELAYSIGN",
-    "comment": "Windows Metadata Delay Sign",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "NoEntryPoint",
-    "switch": "NOENTRY",
-    "comment": "No Entry Point",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SetChecksum",
-    "switch": "RELEASE",
-    "comment": "Set Checksum",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "RandomizedBaseAddress",
-    "switch": "DYNAMICBASE:NO",
-    "comment": "Randomized Base Address",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "RandomizedBaseAddress",
-    "switch": "DYNAMICBASE",
-    "comment": "Randomized Base Address",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "FixedBaseAddress",
-    "switch": "FIXED:NO",
-    "comment": "Fixed Base Address",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "FixedBaseAddress",
-    "switch": "FIXED",
-    "comment": "Fixed Base Address",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "DataExecutionPrevention",
-    "switch": "NXCOMPAT:NO",
-    "comment": "Data Execution Prevention (DEP)",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "DataExecutionPrevention",
-    "switch": "NXCOMPAT",
-    "comment": "Data Execution Prevention (DEP)",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TurnOffAssemblyGeneration",
-    "switch": "NOASSEMBLY",
-    "comment": "Turn Off Assembly Generation",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SupportUnloadOfDelayLoadedDLL",
-    "switch": "DELAY:UNLOAD",
-    "comment": "Unload delay loaded DLL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SupportNobindOfDelayLoadedDLL",
-    "switch": "DELAY:NOBIND",
-    "comment": "Nobind delay loaded DLL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "Profile",
-    "switch": "PROFILE",
-    "comment": "Profile",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkDelaySign",
-    "switch": "DELAYSIGN:NO",
-    "comment": "Delay Sign",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkDelaySign",
-    "switch": "DELAYSIGN",
-    "comment": "Delay Sign",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "CLRUnmanagedCodeCheck",
-    "switch": "CLRUNMANAGEDCODECHECK:NO",
-    "comment": "CLR Unmanaged Code Check",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "CLRUnmanagedCodeCheck",
-    "switch": "CLRUNMANAGEDCODECHECK",
-    "comment": "CLR Unmanaged Code Check",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "DetectOneDefinitionRule",
-    "switch": "ODR",
-    "comment": "Detect One Definition Rule violations",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ImageHasSafeExceptionHandlers",
-    "switch": "SAFESEH:NO",
-    "comment": "Image Has Safe Exception Handlers",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "ImageHasSafeExceptionHandlers",
-    "switch": "SAFESEH",
-    "comment": "Image Has Safe Exception Handlers",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkDLL",
-    "switch": "DLL",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AdditionalLibraryDirectories",
-    "switch": "LIBPATH:",
-    "comment": "Additional Library Directories",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "IgnoreSpecificDefaultLibraries",
-    "switch": "NODEFAULTLIB:",
-    "comment": "Ignore Specific Default Libraries",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AddModuleNamesToAssembly",
-    "switch": "ASSEMBLYMODULE:",
-    "comment": "Add Module to Assembly",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "EmbedManagedResourceFile",
-    "switch": "ASSEMBLYRESOURCE:",
-    "comment": "Embed Managed Resource File",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "ForceSymbolReferences",
-    "switch": "INCLUDE:",
-    "comment": "Force Symbol References",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "DelayLoadDLLs",
-    "switch": "DELAYLOAD:",
-    "comment": "Delay Loaded Dlls",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AssemblyLinkResource",
-    "switch": "ASSEMBLYLINKRESOURCE:",
-    "comment": "Assembly Link Resource",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AdditionalManifestDependencies",
-    "switch": "MANIFESTDEPENDENCY:",
-    "comment": "Additional Manifest Dependencies",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "ManifestInput",
-    "switch": "manifestinput:",
-    "comment": "Manifest Input",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "OutputFile",
-    "switch": "OUT:",
-    "comment": "Output File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "Version",
-    "switch": "VERSION:",
-    "comment": "Version",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "SpecifySectionAttributes",
-    "switch": "SECTION:",
-    "comment": "Specify Section Attributes",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MSDOSStubFileName",
-    "switch": "STUB:",
-    "comment": "MS-DOS Stub File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ModuleDefinitionFile",
-    "switch": "DEF:",
-    "comment": "Module Definition File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ManifestFile",
-    "switch": "ManifestFile:",
-    "comment": "Manifest File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ProgramDatabaseFile",
-    "switch": "PDB:",
-    "comment": "Generate Program Database File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "StripPrivateSymbols",
-    "switch": "PDBSTRIPPED:",
-    "comment": "Strip Private Symbols",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MapFileName",
-    "switch": "MAP:",
-    "comment": "Map File Name",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "HeapReserveSize",
-    "switch": "HEAP:",
-    "comment": "Heap Reserve Size",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "HeapCommitSize",
-    "switch": "HEAP",
-    "comment": "Heap Commit Size",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "StackReserveSize",
-    "switch": "STACK:",
-    "comment": "Stack Reserve Size",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "StackCommitSize",
-    "switch": "STACK",
-    "comment": "Stack Commit Size",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "FunctionOrder",
-    "switch": "ORDER:@",
-    "comment": "Function Order",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ProfileGuidedDatabase",
-    "switch": "PGD:",
-    "comment": "Profile Guided Database",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MidlCommandFile",
-    "switch": "MIDL:@",
-    "comment": "MIDL Commands",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MergedIDLBaseFileName",
-    "switch": "IDLOUT:",
-    "comment": "Merged IDL Base File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "TypeLibraryFile",
-    "switch": "TLBOUT:",
-    "comment": "Type Library",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "WindowsMetadataFile",
-    "switch": "WINMDFILE:",
-    "comment": "Windows Metadata File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "WindowsMetadataLinkKeyFile",
-    "switch": "WINMDKEYFILE:",
-    "comment": "Windows Metadata Key File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "WindowsMetadataKeyContainer",
-    "switch": "WINMDKEYCONTAINER:",
-    "comment": "Windows Metadata Key Container",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "EntryPointSymbol",
-    "switch": "ENTRY:",
-    "comment": "Entry Point",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "BaseAddress",
-    "switch": "BASE:",
-    "comment": "Base Address",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ImportLibrary",
-    "switch": "IMPLIB:",
-    "comment": "Import Library",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MergeSections",
-    "switch": "MERGE:",
-    "comment": "Merge Sections",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "LinkKeyFile",
-    "switch": "KEYFILE:",
-    "comment": "Key File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "KeyContainer",
-    "switch": "KEYCONTAINER:",
-    "comment": "Key Container",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "TypeLibraryResourceID",
-    "switch": "TLBID:",
-    "comment": "TypeLib Resource ID",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "SectionAlignment",
-    "switch": "ALIGN:",
-    "comment": "SectionAlignment",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  }
-]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v140_CSharp.json b/share/cmake-3.18/Templates/MSBuild/FlagTables/v140_CSharp.json
deleted file mode 100644
index 5989aea..0000000
--- a/share/cmake-3.18/Templates/MSBuild/FlagTables/v140_CSharp.json
+++ /dev/null
@@ -1,574 +0,0 @@
-[
-  {
-    "name":  "ProjectName",
-    "switch": "out:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:exe",
-    "comment": "",
-    "value": "Exe",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:winexe",
-    "comment": "",
-    "value": "Winexe",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:library",
-    "comment": "",
-    "value": "Library",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:module",
-    "comment": "",
-    "value": "Module",
-    "flags": []
-  },
-  {
-    "name":  "DocumentationFile",
-    "switch": "doc",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:x86",
-    "comment": "",
-    "value": "x86",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:Itanium",
-    "comment": "",
-    "value": "Itanium",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:x64",
-    "comment": "",
-    "value": "x64",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:arm",
-    "comment": "",
-    "value": "arm",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:anycpu32bitpreferred",
-    "comment": "",
-    "value": "anycpu32bitpreferred",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:anycpu",
-    "comment": "",
-    "value": "anycpu",
-    "flags": []
-  },
-  {
-    "name":  "References",
-    "switch": "reference:",
-    "comment": "mit alias",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "References",
-    "switch": "reference:",
-    "comment": "dateiliste",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "AddModules",
-    "switch": "addmodule:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name":  "Win32Resource",
-    "switch": "win32res:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "ApplicationIcon",
-    "switch": "win32icon:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "ApplicationManifest",
-    "switch": "win32manifest:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "NoWin32Manifest",
-    "switch": "nowin32manifest",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DefineDebug",
-    "switch": "debug",
-    "comment": "",
-    "value": "true",
-    "flags": [
-      "Continue"
-    ]
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:none",
-    "comment": "",
-    "value": "none",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:full",
-    "comment": "",
-    "value": "full",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:pdbonly",
-    "comment": "",
-    "value": "pdbonly",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror-",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror+",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:0",
-    "comment": "",
-    "value": "0",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:1",
-    "comment": "",
-    "value": "1",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:2",
-    "comment": "",
-    "value": "2",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:3",
-    "comment": "",
-    "value": "3",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:4",
-    "comment": "",
-    "value": "4",
-    "flags": []
-  },
-  {
-    "name":  "NoWarn",
-    "switch": "nowarn:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired",
-      "CommaAppendable"
-    ]
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DefineConstants",
-    "switch": "define:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "SemicolonAppendable",
-      "UserValue"
-    ]
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:ISO-1",
-    "comment": "",
-    "value": "ISO-1",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:ISO-2",
-    "comment": "",
-    "value": "ISO-2",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:3",
-    "comment": "",
-    "value": "3",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:4",
-    "comment": "",
-    "value": "4",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:5",
-    "comment": "",
-    "value": "5",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:6",
-    "comment": "",
-    "value": "6",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:default",
-    "comment": "",
-    "value": "default",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AssemblyOriginatorKeyFile",
-    "switch": "keyfile",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "KeyContainerName",
-    "switch": "keycontainer",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoLogo",
-    "switch": "nologo",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoConfig",
-    "switch": "noconfig",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "BaseAddress",
-    "switch": "baseaddress:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "CodePage",
-    "switch": "codepage",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "Utf8Output",
-    "switch": "utf8output",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "MainEntryPoint",
-    "switch": "main:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "GenerateFullPaths",
-    "switch": "fullpaths",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "FileAlignment",
-    "switch": "filealign",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "PdbFile",
-    "switch": "pdb:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "SubsystemVersion",
-    "switch": "subsystemversion",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "AdditionalLibPaths",
-    "switch": "lib:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:none",
-    "comment": "Do Not Send Report",
-    "value": "none",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:prompt",
-    "comment": "Prompt Immediately",
-    "value": "prompt",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:queue",
-    "comment": "Queue For Next Login",
-    "value": "queue",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:send",
-    "comment": "Send Automatically",
-    "value": "send",
-    "flags": []
-  }
-]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v140_Link.json b/share/cmake-3.18/Templates/MSBuild/FlagTables/v140_Link.json
deleted file mode 100644
index 3fb072c..0000000
--- a/share/cmake-3.18/Templates/MSBuild/FlagTables/v140_Link.json
+++ /dev/null
@@ -1,1316 +0,0 @@
-[
-  {
-    "name": "ShowProgress",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE",
-    "comment": "Display all progress messages",
-    "value": "LinkVerbose",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:Lib",
-    "comment": "For Libraries Searched",
-    "value": "LinkVerboseLib",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:ICF",
-    "comment": "About COMDAT folding during optimized linking",
-    "value": "LinkVerboseICF",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:REF",
-    "comment": "About data removed during optimized linking",
-    "value": "LinkVerboseREF",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:SAFESEH",
-    "comment": "About Modules incompatible with SEH",
-    "value": "LinkVerboseSAFESEH",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:CLR",
-    "comment": "About linker activity related to managed code",
-    "value": "LinkVerboseCLR",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE:MULTIPLE",
-    "comment": "Multiply Defined Symbol Only",
-    "value": "MultiplyDefinedSymbolOnly",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE:UNRESOLVED",
-    "comment": "Undefined Symbol Only",
-    "value": "UndefinedSymbolOnly",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:5",
-    "comment": "X86 Image Only",
-    "value": "X86Image",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:6",
-    "comment": "X64 Image Only",
-    "value": "X64Image",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:16",
-    "comment": "Itanium Image Only",
-    "value": "ItaniumImage",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='asInvoker'",
-    "comment": "asInvoker",
-    "value": "AsInvoker",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='highestAvailable'",
-    "comment": "highestAvailable",
-    "value": "HighestAvailable",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='requireAdministrator'",
-    "comment": "requireAdministrator",
-    "value": "RequireAdministrator",
-    "flags": []
-  },
-  {
-    "name": "GenerateDebugInformation",
-    "switch": "DEBUG",
-    "comment": "Optimize for debugging",
-    "value": "true",
-    "flags": [
-      "CaseInsensitive"
-    ]
-  },
-  {
-    "name": "GenerateDebugInformation",
-    "switch": "DEBUG:FASTLINK",
-    "comment": "Optimize for faster linking",
-    "value": "DebugFastLink",
-    "flags": [
-      "CaseInsensitive"
-    ]
-  },
-  {
-    "name": "GenerateDebugInformation",
-    "switch": "DEBUG:FULL",
-    "comment": "Optimize for debugging",
-    "value": "true",
-    "flags": [
-      "CaseInsensitive"
-    ]
-  },
-  {
-    "name": "GenerateDebugInformation",
-    "switch": "DEBUG:NONE",
-    "comment": "Produces no debugging information",
-    "value": "false",
-    "flags": [
-      "CaseInsensitive"
-    ]
-  },
-  {
-    "name": "SubSystem",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:CONSOLE",
-    "comment": "Console",
-    "value": "Console",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:WINDOWS",
-    "comment": "Windows",
-    "value": "Windows",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:NATIVE",
-    "comment": "Native",
-    "value": "Native",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_APPLICATION",
-    "comment": "EFI Application",
-    "value": "EFI Application",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
-    "comment": "EFI Boot Service Driver",
-    "value": "EFI Boot Service Driver",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_ROM",
-    "comment": "EFI ROM",
-    "value": "EFI ROM",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
-    "comment": "EFI Runtime",
-    "value": "EFI Runtime",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:POSIX",
-    "comment": "POSIX",
-    "value": "POSIX",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "Driver",
-    "comment": "Driver",
-    "value": "Driver",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "DRIVER:UPONLY",
-    "comment": "UP Only",
-    "value": "UpOnly",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "DRIVER:WDM",
-    "comment": "WDM",
-    "value": "WDM",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "",
-    "comment": "Default",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:incremental",
-    "comment": "Use Fast Link Time Code Generation",
-    "value": "UseFastLinkTimeCodeGeneration",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG",
-    "comment": "Use Link Time Code Generation",
-    "value": "UseLinkTimeCodeGeneration",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGInstrument",
-    "comment": "Profile Guided Optimization - Instrument",
-    "value": "PGInstrument",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGOptimize",
-    "comment": "Profile Guided Optimization - Optimization",
-    "value": "PGOptimization",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGUpdate",
-    "comment": "Profile Guided Optimization - Update",
-    "value": "PGUpdate",
-    "flags": []
-  },
-  {
-    "name": "GenerateWindowsMetadata",
-    "switch": "WINMD",
-    "comment": "Yes",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateWindowsMetadata",
-    "switch": "WINMD:NO",
-    "comment": "No",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA1",
-    "comment": "SHA1",
-    "value": "SHA1",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA256",
-    "comment": "SHA256",
-    "value": "SHA256",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA384",
-    "comment": "SHA384",
-    "value": "SHA384",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA512",
-    "comment": "SHA512",
-    "value": "SHA512",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:ARM",
-    "comment": "MachineARM",
-    "value": "MachineARM",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:EBC",
-    "comment": "MachineEBC",
-    "value": "MachineEBC",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:IA64",
-    "comment": "MachineIA64",
-    "value": "MachineIA64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPS",
-    "comment": "MachineMIPS",
-    "value": "MachineMIPS",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPS16",
-    "comment": "MachineMIPS16",
-    "value": "MachineMIPS16",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPSFPU",
-    "comment": "MachineMIPSFPU",
-    "value": "MachineMIPSFPU",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPSFPU16",
-    "comment": "MachineMIPSFPU16",
-    "value": "MachineMIPSFPU16",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:SH4",
-    "comment": "MachineSH4",
-    "value": "MachineSH4",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:THUMB",
-    "comment": "MachineTHUMB",
-    "value": "MachineTHUMB",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:X64",
-    "comment": "MachineX64",
-    "value": "MachineX64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:X86",
-    "comment": "MachineX86",
-    "value": "MachineX86",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:MTA",
-    "comment": "MTA threading attribute",
-    "value": "MTAThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:STA",
-    "comment": "STA threading attribute",
-    "value": "STAThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:NONE",
-    "comment": "Default threading attribute",
-    "value": "DefaultThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:IJW",
-    "comment": "Force IJW image",
-    "value": "ForceIJWImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:PURE",
-    "comment": "Force Pure IL Image",
-    "value": "ForcePureILImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:SAFE",
-    "comment": "Force Safe IL Image",
-    "value": "ForceSafeILImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "",
-    "comment": "Default image type",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA1",
-    "comment": "SHA1",
-    "value": "SHA1",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA256",
-    "comment": "SHA256",
-    "value": "SHA256",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA384",
-    "comment": "SHA384",
-    "value": "SHA384",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA512",
-    "comment": "SHA512",
-    "value": "SHA512",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:PROMPT",
-    "comment": "PromptImmediately",
-    "value": "PromptImmediately",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:QUEUE",
-    "comment": "Queue For Next Login",
-    "value": "QueueForNextLogin",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:SEND",
-    "comment": "Send Error Report",
-    "value": "SendErrorReport",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:NONE",
-    "comment": "No Error Report",
-    "value": "NoErrorReport",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError:NO",
-    "comment": "Disabled",
-    "value": "Disabled",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError:SYSTEMDLL",
-    "comment": "System Dlls Only",
-    "value": "SystemDlls",
-    "flags": []
-  },
-  {
-    "name": "LinkIncremental",
-    "switch": "INCREMENTAL:NO",
-    "comment": "Enable Incremental Linking",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkIncremental",
-    "switch": "INCREMENTAL",
-    "comment": "Enable Incremental Linking",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SuppressStartupBanner",
-    "switch": "NOLOGO",
-    "comment": "Suppress Startup Banner",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkStatus",
-    "switch": "LTCG:NOSTATUS",
-    "comment": "Link Status",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkStatus",
-    "switch": "LTCG:STATUS",
-    "comment": "Link Status",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "PreventDllBinding",
-    "switch": "ALLOWBIND:NO",
-    "comment": "Prevent Dll Binding",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "PreventDllBinding",
-    "switch": "ALLOWBIND",
-    "comment": "Prevent Dll Binding",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TreatLinkerWarningAsErrors",
-    "switch": "WX:NO",
-    "comment": "Treat Linker Warning As Errors",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TreatLinkerWarningAsErrors",
-    "switch": "WX",
-    "comment": "Treat Linker Warning As Errors",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "IgnoreAllDefaultLibraries",
-    "switch": "NODEFAULTLIB",
-    "comment": "Ignore All Default Libraries",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateManifest",
-    "switch": "MANIFEST:NO",
-    "comment": "Generate Manifest",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "GenerateManifest",
-    "switch": "MANIFEST",
-    "comment": "Generate Manifest",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AllowIsolation",
-    "switch": "ALLOWISOLATION:NO",
-    "comment": "Allow Isolation",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "AllowIsolation",
-    "switch": "",
-    "comment": "Allow Isolation",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableUAC",
-    "switch": "MANIFESTUAC:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired",
-      "SpaceAppendable"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='false'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "false",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='false'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='true'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ManifestEmbed",
-    "switch": "manifest:embed",
-    "comment": "Embed Manifest",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateMapFile",
-    "switch": "MAP",
-    "comment": "Generate Map File",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
-  },
-  {
-    "name": "MapExports",
-    "switch": "MAPINFO:EXPORTS",
-    "comment": "Map Exports",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AssemblyDebug",
-    "switch": "ASSEMBLYDEBUG:DISABLE",
-    "comment": "Debuggable Assembly",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "AssemblyDebug",
-    "switch": "ASSEMBLYDEBUG",
-    "comment": "Debuggable Assembly",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LargeAddressAware",
-    "switch": "LARGEADDRESSAWARE:NO",
-    "comment": "Enable Large Addresses",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LargeAddressAware",
-    "switch": "LARGEADDRESSAWARE",
-    "comment": "Enable Large Addresses",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TerminalServerAware",
-    "switch": "TSAWARE:NO",
-    "comment": "Terminal Server",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TerminalServerAware",
-    "switch": "TSAWARE",
-    "comment": "Terminal Server",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SwapRunFromCD",
-    "switch": "SWAPRUN:CD",
-    "comment": "Swap Run From CD",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SwapRunFromNET",
-    "switch": "SWAPRUN:NET",
-    "comment": "Swap Run From Network",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "OptimizeReferences",
-    "switch": "OPT:NOREF",
-    "comment": "References",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "OptimizeReferences",
-    "switch": "OPT:REF",
-    "comment": "References",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableCOMDATFolding",
-    "switch": "OPT:NOICF",
-    "comment": "Enable COMDAT Folding",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnableCOMDATFolding",
-    "switch": "OPT:ICF",
-    "comment": "Enable COMDAT Folding",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "IgnoreEmbeddedIDL",
-    "switch": "IGNOREIDL",
-    "comment": "Ignore Embedded IDL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AppContainer",
-    "switch": "APPCONTAINER",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataLinkDelaySign",
-    "switch": "WINMDDELAYSIGN:NO",
-    "comment": "Windows Metadata Delay Sign",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataLinkDelaySign",
-    "switch": "WINMDDELAYSIGN",
-    "comment": "Windows Metadata Delay Sign",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "NoEntryPoint",
-    "switch": "NOENTRY",
-    "comment": "No Entry Point",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SetChecksum",
-    "switch": "RELEASE",
-    "comment": "Set Checksum",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "RandomizedBaseAddress",
-    "switch": "DYNAMICBASE:NO",
-    "comment": "Randomized Base Address",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "RandomizedBaseAddress",
-    "switch": "DYNAMICBASE",
-    "comment": "Randomized Base Address",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "FixedBaseAddress",
-    "switch": "FIXED:NO",
-    "comment": "Fixed Base Address",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "FixedBaseAddress",
-    "switch": "FIXED",
-    "comment": "Fixed Base Address",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "DataExecutionPrevention",
-    "switch": "NXCOMPAT:NO",
-    "comment": "Data Execution Prevention (DEP)",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "DataExecutionPrevention",
-    "switch": "NXCOMPAT",
-    "comment": "Data Execution Prevention (DEP)",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TurnOffAssemblyGeneration",
-    "switch": "NOASSEMBLY",
-    "comment": "Turn Off Assembly Generation",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SupportUnloadOfDelayLoadedDLL",
-    "switch": "DELAY:UNLOAD",
-    "comment": "Unload delay loaded DLL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SupportNobindOfDelayLoadedDLL",
-    "switch": "DELAY:NOBIND",
-    "comment": "Nobind delay loaded DLL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "Profile",
-    "switch": "PROFILE",
-    "comment": "Profile",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkDelaySign",
-    "switch": "DELAYSIGN:NO",
-    "comment": "Delay Sign",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkDelaySign",
-    "switch": "DELAYSIGN",
-    "comment": "Delay Sign",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "CLRUnmanagedCodeCheck",
-    "switch": "CLRUNMANAGEDCODECHECK:NO",
-    "comment": "CLR Unmanaged Code Check",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "CLRUnmanagedCodeCheck",
-    "switch": "CLRUNMANAGEDCODECHECK",
-    "comment": "CLR Unmanaged Code Check",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "DetectOneDefinitionRule",
-    "switch": "ODR",
-    "comment": "Detect One Definition Rule violations",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ImageHasSafeExceptionHandlers",
-    "switch": "SAFESEH:NO",
-    "comment": "Image Has Safe Exception Handlers",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "ImageHasSafeExceptionHandlers",
-    "switch": "SAFESEH",
-    "comment": "Image Has Safe Exception Handlers",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkDLL",
-    "switch": "DLL",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AdditionalLibraryDirectories",
-    "switch": "LIBPATH:",
-    "comment": "Additional Library Directories",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "Natvis",
-    "switch": "NATVIS:",
-    "comment": "Natvis files",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "IgnoreSpecificDefaultLibraries",
-    "switch": "NODEFAULTLIB:",
-    "comment": "Ignore Specific Default Libraries",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AddModuleNamesToAssembly",
-    "switch": "ASSEMBLYMODULE:",
-    "comment": "Add Module to Assembly",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "EmbedManagedResourceFile",
-    "switch": "ASSEMBLYRESOURCE:",
-    "comment": "Embed Managed Resource File",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "ForceSymbolReferences",
-    "switch": "INCLUDE:",
-    "comment": "Force Symbol References",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "DelayLoadDLLs",
-    "switch": "DELAYLOAD:",
-    "comment": "Delay Loaded Dlls",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AssemblyLinkResource",
-    "switch": "ASSEMBLYLINKRESOURCE:",
-    "comment": "Assembly Link Resource",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AdditionalManifestDependencies",
-    "switch": "MANIFESTDEPENDENCY:",
-    "comment": "Additional Manifest Dependencies",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "ManifestInput",
-    "switch": "manifestinput:",
-    "comment": "Manifest Input",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "OutputFile",
-    "switch": "OUT:",
-    "comment": "Output File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "Version",
-    "switch": "VERSION:",
-    "comment": "Version",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "SpecifySectionAttributes",
-    "switch": "SECTION:",
-    "comment": "Specify Section Attributes",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MSDOSStubFileName",
-    "switch": "STUB:",
-    "comment": "MS-DOS Stub File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ModuleDefinitionFile",
-    "switch": "DEF:",
-    "comment": "Module Definition File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ManifestFile",
-    "switch": "ManifestFile:",
-    "comment": "Manifest File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ProgramDatabaseFile",
-    "switch": "PDB:",
-    "comment": "Generate Program Database File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "StripPrivateSymbols",
-    "switch": "PDBSTRIPPED:",
-    "comment": "Strip Private Symbols",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MapFileName",
-    "switch": "MAP:",
-    "comment": "Map File Name",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "HeapReserveSize",
-    "switch": "HEAP:",
-    "comment": "Heap Reserve Size",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "HeapCommitSize",
-    "switch": "HEAP",
-    "comment": "Heap Commit Size",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "StackReserveSize",
-    "switch": "STACK:",
-    "comment": "Stack Reserve Size",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "StackCommitSize",
-    "switch": "STACK",
-    "comment": "Stack Commit Size",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "FunctionOrder",
-    "switch": "ORDER:@",
-    "comment": "Function Order",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ProfileGuidedDatabase",
-    "switch": "PGD:",
-    "comment": "Profile Guided Database",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MidlCommandFile",
-    "switch": "MIDL:@",
-    "comment": "MIDL Commands",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MergedIDLBaseFileName",
-    "switch": "IDLOUT:",
-    "comment": "Merged IDL Base File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "TypeLibraryFile",
-    "switch": "TLBOUT:",
-    "comment": "Type Library",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "WindowsMetadataFile",
-    "switch": "WINMDFILE:",
-    "comment": "Windows Metadata File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "WindowsMetadataLinkKeyFile",
-    "switch": "WINMDKEYFILE:",
-    "comment": "Windows Metadata Key File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "WindowsMetadataKeyContainer",
-    "switch": "WINMDKEYCONTAINER:",
-    "comment": "Windows Metadata Key Container",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "EntryPointSymbol",
-    "switch": "ENTRY:",
-    "comment": "Entry Point",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "BaseAddress",
-    "switch": "BASE:",
-    "comment": "Base Address",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ImportLibrary",
-    "switch": "IMPLIB:",
-    "comment": "Import Library",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MergeSections",
-    "switch": "MERGE:",
-    "comment": "Merge Sections",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "LinkKeyFile",
-    "switch": "KEYFILE:",
-    "comment": "Key File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "KeyContainer",
-    "switch": "KEYCONTAINER:",
-    "comment": "Key Container",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "TypeLibraryResourceID",
-    "switch": "TLBID:",
-    "comment": "TypeLib Resource ID",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "SectionAlignment",
-    "switch": "ALIGN:",
-    "comment": "SectionAlignment",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  }
-]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v141_CL.json b/share/cmake-3.18/Templates/MSBuild/FlagTables/v141_CL.json
deleted file mode 100644
index 01fafe4..0000000
--- a/share/cmake-3.18/Templates/MSBuild/FlagTables/v141_CL.json
+++ /dev/null
@@ -1,1268 +0,0 @@
-[
-  {
-    "name": "DebugInformationFormat",
-    "switch": "",
-    "comment": "None",
-    "value": "None",
-    "flags": []
-  },
-  {
-    "name": "DebugInformationFormat",
-    "switch": "Z7",
-    "comment": "C7 compatible",
-    "value": "OldStyle",
-    "flags": []
-  },
-  {
-    "name": "DebugInformationFormat",
-    "switch": "Zi",
-    "comment": "Program Database",
-    "value": "ProgramDatabase",
-    "flags": []
-  },
-  {
-    "name": "DebugInformationFormat",
-    "switch": "ZI",
-    "comment": "Program Database for Edit And Continue",
-    "value": "EditAndContinue",
-    "flags": []
-  },
-  {
-    "name": "CompileAsManaged",
-    "switch": "",
-    "comment": "No Common Language RunTime Support",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "CompileAsManaged",
-    "switch": "clr",
-    "comment": "Common Language RunTime Support",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "CompileAsManaged",
-    "switch": "clr:pure",
-    "comment": "Pure MSIL Common Language RunTime Support",
-    "value": "Pure",
-    "flags": []
-  },
-  {
-    "name": "CompileAsManaged",
-    "switch": "clr:safe",
-    "comment": "Safe MSIL Common Language RunTime Support",
-    "value": "Safe",
-    "flags": []
-  },
-  {
-    "name": "WarningLevel",
-    "switch": "W0",
-    "comment": "Turn Off All Warnings",
-    "value": "TurnOffAllWarnings",
-    "flags": []
-  },
-  {
-    "name": "WarningLevel",
-    "switch": "W1",
-    "comment": "Level1",
-    "value": "Level1",
-    "flags": []
-  },
-  {
-    "name": "WarningLevel",
-    "switch": "W2",
-    "comment": "Level2",
-    "value": "Level2",
-    "flags": []
-  },
-  {
-    "name": "WarningLevel",
-    "switch": "W3",
-    "comment": "Level3",
-    "value": "Level3",
-    "flags": []
-  },
-  {
-    "name": "WarningLevel",
-    "switch": "W4",
-    "comment": "Level4",
-    "value": "Level4",
-    "flags": []
-  },
-  {
-    "name": "WarningLevel",
-    "switch": "Wall",
-    "comment": "EnableAllWarnings",
-    "value": "EnableAllWarnings",
-    "flags": []
-  },
-  {
-    "name": "DiagnosticsFormat",
-    "switch": "diagnostics:caret",
-    "comment": "Caret",
-    "value": "Caret",
-    "flags": []
-  },
-  {
-    "name": "DiagnosticsFormat",
-    "switch": "diagnostics:column",
-    "comment": "Column Info",
-    "value": "Column",
-    "flags": []
-  },
-  {
-    "name": "DiagnosticsFormat",
-    "switch": "diagnostics:classic",
-    "comment": "Classic",
-    "value": "Classic",
-    "flags": []
-  },
-  {
-    "name": "Optimization",
-    "switch": "",
-    "comment": "Custom",
-    "value": "Custom",
-    "flags": []
-  },
-  {
-    "name": "Optimization",
-    "switch": "Od",
-    "comment": "Disabled",
-    "value": "Disabled",
-    "flags": []
-  },
-  {
-    "name": "Optimization",
-    "switch": "O1",
-    "comment": "Maximum Optimization (Favor Size)",
-    "value": "MinSpace",
-    "flags": []
-  },
-  {
-    "name": "Optimization",
-    "switch": "O2",
-    "comment": "Maximum Optimization (Favor Speed)",
-    "value": "MaxSpeed",
-    "flags": []
-  },
-  {
-    "name": "Optimization",
-    "switch": "Ox",
-    "comment": "Optimizations (Favor Speed)",
-    "value": "Full",
-    "flags": []
-  },
-  {
-    "name": "InlineFunctionExpansion",
-    "switch": "",
-    "comment": "Default",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "InlineFunctionExpansion",
-    "switch": "Ob0",
-    "comment": "Disabled",
-    "value": "Disabled",
-    "flags": []
-  },
-  {
-    "name": "InlineFunctionExpansion",
-    "switch": "Ob1",
-    "comment": "Only __inline",
-    "value": "OnlyExplicitInline",
-    "flags": []
-  },
-  {
-    "name": "InlineFunctionExpansion",
-    "switch": "Ob2",
-    "comment": "Any Suitable",
-    "value": "AnySuitable",
-    "flags": []
-  },
-  {
-    "name": "FavorSizeOrSpeed",
-    "switch": "Os",
-    "comment": "Favor small code",
-    "value": "Size",
-    "flags": []
-  },
-  {
-    "name": "FavorSizeOrSpeed",
-    "switch": "Ot",
-    "comment": "Favor fast code",
-    "value": "Speed",
-    "flags": []
-  },
-  {
-    "name": "FavorSizeOrSpeed",
-    "switch": "",
-    "comment": "Neither",
-    "value": "Neither",
-    "flags": []
-  },
-  {
-    "name": "ExceptionHandling",
-    "switch": "EHa",
-    "comment": "Yes with SEH Exceptions",
-    "value": "Async",
-    "flags": []
-  },
-  {
-    "name": "ExceptionHandling",
-    "switch": "EHsc",
-    "comment": "Yes",
-    "value": "Sync",
-    "flags": []
-  },
-  {
-    "name": "ExceptionHandling",
-    "switch": "EHs",
-    "comment": "Yes with Extern C functions",
-    "value": "SyncCThrow",
-    "flags": []
-  },
-  {
-    "name": "ExceptionHandling",
-    "switch": "",
-    "comment": "No",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "BasicRuntimeChecks",
-    "switch": "RTCs",
-    "comment": "Stack Frames",
-    "value": "StackFrameRuntimeCheck",
-    "flags": []
-  },
-  {
-    "name": "BasicRuntimeChecks",
-    "switch": "RTCu",
-    "comment": "Uninitialized variables",
-    "value": "UninitializedLocalUsageCheck",
-    "flags": []
-  },
-  {
-    "name": "BasicRuntimeChecks",
-    "switch": "RTC1",
-    "comment": "Both (/RTC1, equiv. to /RTCsu)",
-    "value": "EnableFastChecks",
-    "flags": []
-  },
-  {
-    "name": "BasicRuntimeChecks",
-    "switch": "",
-    "comment": "Default",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "RuntimeLibrary",
-    "switch": "MT",
-    "comment": "Multi-threaded",
-    "value": "MultiThreaded",
-    "flags": []
-  },
-  {
-    "name": "RuntimeLibrary",
-    "switch": "MTd",
-    "comment": "Multi-threaded Debug",
-    "value": "MultiThreadedDebug",
-    "flags": []
-  },
-  {
-    "name": "RuntimeLibrary",
-    "switch": "MD",
-    "comment": "Multi-threaded DLL",
-    "value": "MultiThreadedDLL",
-    "flags": []
-  },
-  {
-    "name": "RuntimeLibrary",
-    "switch": "MDd",
-    "comment": "Multi-threaded Debug DLL",
-    "value": "MultiThreadedDebugDLL",
-    "flags": []
-  },
-  {
-    "name": "StructMemberAlignment",
-    "switch": "Zp1",
-    "comment": "1 Byte",
-    "value": "1Byte",
-    "flags": []
-  },
-  {
-    "name": "StructMemberAlignment",
-    "switch": "Zp2",
-    "comment": "2 Bytes",
-    "value": "2Bytes",
-    "flags": []
-  },
-  {
-    "name": "StructMemberAlignment",
-    "switch": "Zp4",
-    "comment": "4 Byte",
-    "value": "4Bytes",
-    "flags": []
-  },
-  {
-    "name": "StructMemberAlignment",
-    "switch": "Zp8",
-    "comment": "8 Bytes",
-    "value": "8Bytes",
-    "flags": []
-  },
-  {
-    "name": "StructMemberAlignment",
-    "switch": "Zp16",
-    "comment": "16 Bytes",
-    "value": "16Bytes",
-    "flags": []
-  },
-  {
-    "name": "StructMemberAlignment",
-    "switch": "",
-    "comment": "Default",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "BufferSecurityCheck",
-    "switch": "GS-",
-    "comment": "Disable Security Check",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "BufferSecurityCheck",
-    "switch": "GS",
-    "comment": "Enable Security Check",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ControlFlowGuard",
-    "switch": "guard:cf",
-    "comment": "Yes",
-    "value": "Guard",
-    "flags": []
-  },
-  {
-    "name": "ControlFlowGuard",
-    "switch": "",
-    "comment": "No",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnableEnhancedInstructionSet",
-    "switch": "arch:SSE",
-    "comment": "Streaming SIMD Extensions",
-    "value": "StreamingSIMDExtensions",
-    "flags": []
-  },
-  {
-    "name": "EnableEnhancedInstructionSet",
-    "switch": "arch:SSE2",
-    "comment": "Streaming SIMD Extensions 2",
-    "value": "StreamingSIMDExtensions2",
-    "flags": []
-  },
-  {
-    "name": "EnableEnhancedInstructionSet",
-    "switch": "arch:AVX",
-    "comment": "Advanced Vector Extensions",
-    "value": "AdvancedVectorExtensions",
-    "flags": []
-  },
-  {
-    "name": "EnableEnhancedInstructionSet",
-    "switch": "arch:AVX2",
-    "comment": "Advanced Vector Extensions 2",
-    "value": "AdvancedVectorExtensions2",
-    "flags": []
-  },
-  {
-    "name": "EnableEnhancedInstructionSet",
-    "switch": "arch:IA32",
-    "comment": "No Enhanced Instructions",
-    "value": "NoExtensions",
-    "flags": []
-  },
-  {
-    "name": "EnableEnhancedInstructionSet",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "FloatingPointModel",
-    "switch": "fp:precise",
-    "comment": "Precise",
-    "value": "Precise",
-    "flags": []
-  },
-  {
-    "name": "FloatingPointModel",
-    "switch": "fp:strict",
-    "comment": "Strict",
-    "value": "Strict",
-    "flags": []
-  },
-  {
-    "name": "FloatingPointModel",
-    "switch": "fp:fast",
-    "comment": "Fast",
-    "value": "Fast",
-    "flags": []
-  },
-  {
-    "name": "SpectreMitigation",
-    "switch": "Qspectre",
-    "comment": "Spectre mitigations",
-    "value": "Spectre",
-    "flags": []
-  },
-  {
-    "name": "LanguageStandard",
-    "switch": "std:c++14",
-    "comment": "ISO C++14 Standard",
-    "value": "stdcpp14",
-    "flags": []
-  },
-  {
-    "name": "LanguageStandard",
-    "switch": "std:c++17",
-    "comment": "ISO C++17 Standard",
-    "value": "stdcpp17",
-    "flags": []
-  },
-  {
-    "name": "LanguageStandard",
-    "switch": "std:c++latest",
-    "comment": "ISO C++ Latest Draft Standard",
-    "value": "stdcpplatest",
-    "flags": []
-  },
-  {
-    "name": "PrecompiledHeader",
-    "switch": "Yc",
-    "comment": "Create",
-    "value": "Create",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
-  },
-  {
-    "name": "PrecompiledHeader",
-    "switch": "Yu",
-    "comment": "Use",
-    "value": "Use",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
-  },
-  {
-    "name": "PrecompiledHeader",
-    "switch": "Y-",
-    "comment": "Not Using Precompiled Headers",
-    "value": "NotUsing",
-    "flags": []
-  },
-  {
-    "name": "AssemblerOutput",
-    "switch": "",
-    "comment": "No Listing",
-    "value": "NoListing",
-    "flags": []
-  },
-  {
-    "name": "AssemblerOutput",
-    "switch": "FA",
-    "comment": "Assembly-Only Listing",
-    "value": "AssemblyCode",
-    "flags": []
-  },
-  {
-    "name": "AssemblerOutput",
-    "switch": "FAc",
-    "comment": "Assembly With Machine Code",
-    "value": "AssemblyAndMachineCode",
-    "flags": []
-  },
-  {
-    "name": "AssemblerOutput",
-    "switch": "FAs",
-    "comment": "Assembly With Source Code",
-    "value": "AssemblyAndSourceCode",
-    "flags": []
-  },
-  {
-    "name": "AssemblerOutput",
-    "switch": "FAcs",
-    "comment": "Assembly, Machine Code and Source",
-    "value": "All",
-    "flags": []
-  },
-  {
-    "name": "CallingConvention",
-    "switch": "Gd",
-    "comment": "__cdecl",
-    "value": "Cdecl",
-    "flags": []
-  },
-  {
-    "name": "CallingConvention",
-    "switch": "Gr",
-    "comment": "__fastcall",
-    "value": "FastCall",
-    "flags": []
-  },
-  {
-    "name": "CallingConvention",
-    "switch": "Gz",
-    "comment": "__stdcall",
-    "value": "StdCall",
-    "flags": []
-  },
-  {
-    "name": "CallingConvention",
-    "switch": "Gv",
-    "comment": "__vectorcall",
-    "value": "VectorCall",
-    "flags": []
-  },
-  {
-    "name": "CompileAs",
-    "switch": "",
-    "comment": "Default",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "CompileAs",
-    "switch": "TC",
-    "comment": "Compile as C Code",
-    "value": "CompileAsC",
-    "flags": []
-  },
-  {
-    "name": "CompileAs",
-    "switch": "TP",
-    "comment": "Compile as C++ Code",
-    "value": "CompileAsCpp",
-    "flags": []
-  },
-  {
-    "name": "ErrorReporting",
-    "switch": "errorReport:none",
-    "comment": "Do Not Send Report",
-    "value": "None",
-    "flags": []
-  },
-  {
-    "name": "ErrorReporting",
-    "switch": "errorReport:prompt",
-    "comment": "Prompt Immediately",
-    "value": "Prompt",
-    "flags": []
-  },
-  {
-    "name": "ErrorReporting",
-    "switch": "errorReport:queue",
-    "comment": "Queue For Next Login",
-    "value": "Queue",
-    "flags": []
-  },
-  {
-    "name": "ErrorReporting",
-    "switch": "errorReport:send",
-    "comment": "Send Automatically",
-    "value": "Send",
-    "flags": []
-  },
-  {
-    "name": "CompileAsWinRT",
-    "switch": "ZW",
-    "comment": "Consume Windows Runtime Extension",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "WinRTNoStdLib",
-    "switch": "ZW:nostdlib",
-    "comment": "No Standard WinRT Libraries",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SuppressStartupBanner",
-    "switch": "nologo",
-    "comment": "Suppress Startup Banner",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TreatWarningAsError",
-    "switch": "WX-",
-    "comment": "Treat Warnings As Errors",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TreatWarningAsError",
-    "switch": "WX",
-    "comment": "Treat Warnings As Errors",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SDLCheck",
-    "switch": "sdl-",
-    "comment": "SDL checks",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "SDLCheck",
-    "switch": "sdl",
-    "comment": "SDL checks",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "MultiProcessorCompilation",
-    "switch": "MP",
-    "comment": "Multi-processor Compilation",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
-  },
-  {
-    "name": "IntrinsicFunctions",
-    "switch": "Oi",
-    "comment": "Enable Intrinsic Functions",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "OmitFramePointers",
-    "switch": "Oy-",
-    "comment": "Omit Frame Pointers",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "OmitFramePointers",
-    "switch": "Oy",
-    "comment": "Omit Frame Pointers",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableFiberSafeOptimizations",
-    "switch": "GT",
-    "comment": "Enable Fiber-Safe Optimizations",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "WholeProgramOptimization",
-    "switch": "GL",
-    "comment": "Whole Program Optimization",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "UndefineAllPreprocessorDefinitions",
-    "switch": "u",
-    "comment": "Undefine All Preprocessor Definitions",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "IgnoreStandardIncludePath",
-    "switch": "X",
-    "comment": "Ignore Standard Include Paths",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "PreprocessToFile",
-    "switch": "P",
-    "comment": "Preprocess to a File",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "PreprocessSuppressLineNumbers",
-    "switch": "EP",
-    "comment": "Preprocess Suppress Line Numbers",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "PreprocessKeepComments",
-    "switch": "C",
-    "comment": "Keep Comments",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "StringPooling",
-    "switch": "GF-",
-    "comment": "Enable String Pooling",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "StringPooling",
-    "switch": "GF",
-    "comment": "Enable String Pooling",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "MinimalRebuild",
-    "switch": "Gm-",
-    "comment": "Enable Minimal Rebuild",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "MinimalRebuild",
-    "switch": "Gm",
-    "comment": "Enable Minimal Rebuild",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SmallerTypeCheck",
-    "switch": "RTCc",
-    "comment": "Smaller Type Check",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "FunctionLevelLinking",
-    "switch": "Gy-",
-    "comment": "Enable Function-Level Linking",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "FunctionLevelLinking",
-    "switch": "Gy",
-    "comment": "Enable Function-Level Linking",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableParallelCodeGeneration",
-    "switch": "Qpar-",
-    "comment": "Enable Parallel Code Generation",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnableParallelCodeGeneration",
-    "switch": "Qpar",
-    "comment": "Enable Parallel Code Generation",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "FloatingPointExceptions",
-    "switch": "fp:except-",
-    "comment": "Enable Floating Point Exceptions",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "FloatingPointExceptions",
-    "switch": "fp:except",
-    "comment": "Enable Floating Point Exceptions",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "CreateHotpatchableImage",
-    "switch": "hotpatch",
-    "comment": "Create Hotpatchable Image",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "DisableLanguageExtensions",
-    "switch": "Za",
-    "comment": "Disable Language Extensions",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ConformanceMode",
-    "switch": "permissive-",
-    "comment": "Conformance mode enabled",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ConformanceMode",
-    "switch": "permissive",
-    "comment": "Conformance mode disabled",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TreatWChar_tAsBuiltInType",
-    "switch": "Zc:wchar_t-",
-    "comment": "Treat WChar_t As Built in Type",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TreatWChar_tAsBuiltInType",
-    "switch": "Zc:wchar_t",
-    "comment": "Treat WChar_t As Built in Type",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ForceConformanceInForLoopScope",
-    "switch": "Zc:forScope-",
-    "comment": "Force Conformance in For Loop Scope",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "ForceConformanceInForLoopScope",
-    "switch": "Zc:forScope",
-    "comment": "Force Conformance in For Loop Scope",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "RemoveUnreferencedCodeData",
-    "switch": "Zc:inline-",
-    "comment": "Remove unreferenced code and data",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "RemoveUnreferencedCodeData",
-    "switch": "Zc:inline",
-    "comment": "Remove unreferenced code and data",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnforceTypeConversionRules",
-    "switch": "Zc:rvalueCast-",
-    "comment": "Enforce type conversion rules",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnforceTypeConversionRules",
-    "switch": "Zc:rvalueCast",
-    "comment": "Enforce type conversion rules",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "RuntimeTypeInfo",
-    "switch": "GR-",
-    "comment": "Enable Run-Time Type Information",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "RuntimeTypeInfo",
-    "switch": "GR",
-    "comment": "Enable Run-Time Type Information",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "OpenMPSupport",
-    "switch": "openmp-",
-    "comment": "Open MP Support",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "OpenMPSupport",
-    "switch": "openmp",
-    "comment": "Open MP Support",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableModules",
-    "switch": "experimental:module",
-    "comment": "Enable C++ Modules (experimental)",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ExpandAttributedSource",
-    "switch": "Fx",
-    "comment": "Expand Attributed Source",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "UseUnicodeForAssemblerListing",
-    "switch": "FAu",
-    "comment": "Use Unicode For Assembler Listing",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateXMLDocumentationFiles",
-    "switch": "doc",
-    "comment": "Generate XML Documentation Files",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
-  },
-  {
-    "name": "BrowseInformation",
-    "switch": "FR",
-    "comment": "Enable Browse Information",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
-  },
-  {
-    "name": "ShowIncludes",
-    "switch": "showIncludes",
-    "comment": "Show Includes",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnablePREfast",
-    "switch": "analyze-",
-    "comment": "Enable Code Analysis",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnablePREfast",
-    "switch": "analyze",
-    "comment": "Enable Code Analysis",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "UseFullPaths",
-    "switch": "FC",
-    "comment": "Use Full Paths",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "OmitDefaultLibName",
-    "switch": "Zl",
-    "comment": "Omit Default Library Name",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AdditionalIncludeDirectories",
-    "switch": "I",
-    "comment": "Additional Include Directories",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AdditionalUsingDirectories",
-    "switch": "AI",
-    "comment": "Additional #using Directories",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "PreprocessorDefinitions",
-    "switch": "D",
-    "comment": "Preprocessor Definitions",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "UndefinePreprocessorDefinitions",
-    "switch": "U",
-    "comment": "Undefine Preprocessor Definitions",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "DisableSpecificWarnings",
-    "switch": "wd",
-    "comment": "Disable Specific Warnings",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "ForcedIncludeFiles",
-    "switch": "FI",
-    "comment": "Forced Include File",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "ForcedUsingFiles",
-    "switch": "FU",
-    "comment": "Forced #using File",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "PREfastLog",
-    "switch": "analyze:log",
-    "comment": "Code Analysis Log",
-    "value": "",
-    "flags": [
-      "UserFollowing"
-    ]
-  },
-  {
-    "name": "PREfastAdditionalPlugins",
-    "switch": "analyze:plugin",
-    "comment": "Additional Code Analysis Native plugins",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "TreatSpecificWarningsAsErrors",
-    "switch": "we",
-    "comment": "Treat Specific Warnings As Errors",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "WarningVersion",
-    "switch": "Wv:",
-    "comment": "Warning Version",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "PreprocessOutputPath",
-    "switch": "Fi",
-    "comment": "Preprocess Output Path",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "PrecompiledHeaderFile",
-    "switch": "Yu",
-    "comment": "Precompiled Header File",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "PrecompiledHeaderFile",
-    "switch": "Yc",
-    "comment": "Precompiled Header File",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "PrecompiledHeaderOutputFile",
-    "switch": "Fp",
-    "comment": "Precompiled Header Output File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "AssemblerListingLocation",
-    "switch": "Fa",
-    "comment": "ASM List Location",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ObjectFileName",
-    "switch": "Fo",
-    "comment": "Object File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ProgramDataBaseFileName",
-    "switch": "Fd",
-    "comment": "Program Database File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "XMLDocumentationFileName",
-    "switch": "doc",
-    "comment": "XML Documentation File Name",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "BrowseInformationFile",
-    "switch": "FR",
-    "comment": "Browse Information File",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "ProcessorNumber",
-    "switch": "MP",
-    "comment": "Number of processors",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "CppLanguageStandard",
-    "switch": "",
-    "comment": "Default",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "CppLanguageStandard",
-    "switch": "std=c++98",
-    "comment": "C++03",
-    "value": "c++98",
-    "flags": []
-  },
-  {
-    "name": "CppLanguageStandard",
-    "switch": "std=c++11",
-    "comment": "C++11",
-    "value": "c++11",
-    "flags": []
-  },
-  {
-    "name": "CppLanguageStandard",
-    "switch": "std=c++1y",
-    "comment": "C++14",
-    "value": "c++1y",
-    "flags": []
-  },
-  {
-    "name": "CppLanguageStandard",
-    "switch": "std=c++14",
-    "comment": "C++14",
-    "value": "c++1y",
-    "flags": []
-  },
-  {
-    "name": "CppLanguageStandard",
-    "switch": "std=gnu++98",
-    "comment": "C++03 (GNU Dialect)",
-    "value": "gnu++98",
-    "flags": []
-  },
-  {
-    "name": "CppLanguageStandard",
-    "switch": "std=gnu++11",
-    "comment": "C++11 (GNU Dialect)",
-    "value": "gnu++11",
-    "flags": []
-  },
-  {
-    "name": "CppLanguageStandard",
-    "switch": "std=gnu++1y",
-    "comment": "C++14 (GNU Dialect)",
-    "value": "gnu++1y",
-    "flags": []
-  },
-  {
-    "name": "CppLanguageStandard",
-    "switch": "std=gnu++14",
-    "comment": "C++14 (GNU Dialect)",
-    "value": "gnu++1y",
-    "flags": []
-  },
-  {
-    "name": "SupportJustMyCode",
-    "switch": "JMC-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "SupportJustMyCode",
-    "switch": "JMC",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  }
-]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v141_CSharp.json b/share/cmake-3.18/Templates/MSBuild/FlagTables/v141_CSharp.json
deleted file mode 100644
index 5989aea..0000000
--- a/share/cmake-3.18/Templates/MSBuild/FlagTables/v141_CSharp.json
+++ /dev/null
@@ -1,574 +0,0 @@
-[
-  {
-    "name":  "ProjectName",
-    "switch": "out:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:exe",
-    "comment": "",
-    "value": "Exe",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:winexe",
-    "comment": "",
-    "value": "Winexe",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:library",
-    "comment": "",
-    "value": "Library",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:module",
-    "comment": "",
-    "value": "Module",
-    "flags": []
-  },
-  {
-    "name":  "DocumentationFile",
-    "switch": "doc",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:x86",
-    "comment": "",
-    "value": "x86",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:Itanium",
-    "comment": "",
-    "value": "Itanium",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:x64",
-    "comment": "",
-    "value": "x64",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:arm",
-    "comment": "",
-    "value": "arm",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:anycpu32bitpreferred",
-    "comment": "",
-    "value": "anycpu32bitpreferred",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:anycpu",
-    "comment": "",
-    "value": "anycpu",
-    "flags": []
-  },
-  {
-    "name":  "References",
-    "switch": "reference:",
-    "comment": "mit alias",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "References",
-    "switch": "reference:",
-    "comment": "dateiliste",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "AddModules",
-    "switch": "addmodule:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name":  "Win32Resource",
-    "switch": "win32res:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "ApplicationIcon",
-    "switch": "win32icon:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "ApplicationManifest",
-    "switch": "win32manifest:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "NoWin32Manifest",
-    "switch": "nowin32manifest",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DefineDebug",
-    "switch": "debug",
-    "comment": "",
-    "value": "true",
-    "flags": [
-      "Continue"
-    ]
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:none",
-    "comment": "",
-    "value": "none",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:full",
-    "comment": "",
-    "value": "full",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:pdbonly",
-    "comment": "",
-    "value": "pdbonly",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror-",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror+",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:0",
-    "comment": "",
-    "value": "0",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:1",
-    "comment": "",
-    "value": "1",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:2",
-    "comment": "",
-    "value": "2",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:3",
-    "comment": "",
-    "value": "3",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:4",
-    "comment": "",
-    "value": "4",
-    "flags": []
-  },
-  {
-    "name":  "NoWarn",
-    "switch": "nowarn:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired",
-      "CommaAppendable"
-    ]
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DefineConstants",
-    "switch": "define:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "SemicolonAppendable",
-      "UserValue"
-    ]
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:ISO-1",
-    "comment": "",
-    "value": "ISO-1",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:ISO-2",
-    "comment": "",
-    "value": "ISO-2",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:3",
-    "comment": "",
-    "value": "3",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:4",
-    "comment": "",
-    "value": "4",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:5",
-    "comment": "",
-    "value": "5",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:6",
-    "comment": "",
-    "value": "6",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:default",
-    "comment": "",
-    "value": "default",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AssemblyOriginatorKeyFile",
-    "switch": "keyfile",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "KeyContainerName",
-    "switch": "keycontainer",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoLogo",
-    "switch": "nologo",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoConfig",
-    "switch": "noconfig",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "BaseAddress",
-    "switch": "baseaddress:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "CodePage",
-    "switch": "codepage",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "Utf8Output",
-    "switch": "utf8output",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "MainEntryPoint",
-    "switch": "main:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "GenerateFullPaths",
-    "switch": "fullpaths",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "FileAlignment",
-    "switch": "filealign",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "PdbFile",
-    "switch": "pdb:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "SubsystemVersion",
-    "switch": "subsystemversion",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "AdditionalLibPaths",
-    "switch": "lib:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:none",
-    "comment": "Do Not Send Report",
-    "value": "none",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:prompt",
-    "comment": "Prompt Immediately",
-    "value": "prompt",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:queue",
-    "comment": "Queue For Next Login",
-    "value": "queue",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:send",
-    "comment": "Send Automatically",
-    "value": "send",
-    "flags": []
-  }
-]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v141_Link.json b/share/cmake-3.18/Templates/MSBuild/FlagTables/v141_Link.json
deleted file mode 100644
index 66ee76f..0000000
--- a/share/cmake-3.18/Templates/MSBuild/FlagTables/v141_Link.json
+++ /dev/null
@@ -1,1323 +0,0 @@
-[
-  {
-    "name": "ShowProgress",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE",
-    "comment": "Display all progress messages",
-    "value": "LinkVerbose",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:Lib",
-    "comment": "For Libraries Searched",
-    "value": "LinkVerboseLib",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:ICF",
-    "comment": "About COMDAT folding during optimized linking",
-    "value": "LinkVerboseICF",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:REF",
-    "comment": "About data removed during optimized linking",
-    "value": "LinkVerboseREF",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:SAFESEH",
-    "comment": "About Modules incompatible with SEH",
-    "value": "LinkVerboseSAFESEH",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:CLR",
-    "comment": "About linker activity related to managed code",
-    "value": "LinkVerboseCLR",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE:MULTIPLE",
-    "comment": "Multiply Defined Symbol Only",
-    "value": "MultiplyDefinedSymbolOnly",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE:UNRESOLVED",
-    "comment": "Undefined Symbol Only",
-    "value": "UndefinedSymbolOnly",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:5",
-    "comment": "X86 Image Only",
-    "value": "X86Image",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:6",
-    "comment": "X64 Image Only",
-    "value": "X64Image",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:16",
-    "comment": "Itanium Image Only",
-    "value": "ItaniumImage",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='asInvoker'",
-    "comment": "asInvoker",
-    "value": "AsInvoker",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='highestAvailable'",
-    "comment": "highestAvailable",
-    "value": "HighestAvailable",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='requireAdministrator'",
-    "comment": "requireAdministrator",
-    "value": "RequireAdministrator",
-    "flags": []
-  },
-  {
-    "name": "GenerateDebugInformation",
-    "switch": "DEBUG",
-    "comment": "Generate Debug Information",
-    "value": "true",
-    "flags": [
-      "CaseInsensitive"
-    ]
-  },
-  {
-    "name": "GenerateDebugInformation",
-    "switch": "DEBUG:FASTLINK",
-    "comment": "Generate Debug Information optimized for faster links",
-    "value": "DebugFastLink",
-    "flags": [
-      "CaseInsensitive"
-    ]
-  },
-  {
-    "name": "GenerateDebugInformation",
-    "switch": "DEBUG:FULL",
-    "comment": "Generate Debug Information optimized for sharing and publishing",
-    "value": "DebugFull",
-    "flags": [
-      "CaseInsensitive"
-    ]
-  },
-  {
-    "name": "GenerateDebugInformation",
-    "switch": "DEBUG:NONE",
-    "comment": "Produces no debugging information",
-    "value": "false",
-    "flags": [
-      "CaseInsensitive"
-    ]
-  },
-  {
-    "name": "SubSystem",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:CONSOLE",
-    "comment": "Console",
-    "value": "Console",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:WINDOWS",
-    "comment": "Windows",
-    "value": "Windows",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:NATIVE",
-    "comment": "Native",
-    "value": "Native",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_APPLICATION",
-    "comment": "EFI Application",
-    "value": "EFI Application",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
-    "comment": "EFI Boot Service Driver",
-    "value": "EFI Boot Service Driver",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_ROM",
-    "comment": "EFI ROM",
-    "value": "EFI ROM",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
-    "comment": "EFI Runtime",
-    "value": "EFI Runtime",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:POSIX",
-    "comment": "POSIX",
-    "value": "POSIX",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "Driver",
-    "comment": "Driver",
-    "value": "Driver",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "DRIVER:UPONLY",
-    "comment": "UP Only",
-    "value": "UpOnly",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "DRIVER:WDM",
-    "comment": "WDM",
-    "value": "WDM",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "",
-    "comment": "Default",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:incremental",
-    "comment": "Use Fast Link Time Code Generation",
-    "value": "UseFastLinkTimeCodeGeneration",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG",
-    "comment": "Use Link Time Code Generation",
-    "value": "UseLinkTimeCodeGeneration",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGInstrument",
-    "comment": "Profile Guided Optimization - Instrument",
-    "value": "PGInstrument",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGOptimize",
-    "comment": "Profile Guided Optimization - Optimization",
-    "value": "PGOptimization",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGUpdate",
-    "comment": "Profile Guided Optimization - Update",
-    "value": "PGUpdate",
-    "flags": []
-  },
-  {
-    "name": "GenerateWindowsMetadata",
-    "switch": "WINMD",
-    "comment": "Yes",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateWindowsMetadata",
-    "switch": "WINMD:NO",
-    "comment": "No",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA1",
-    "comment": "SHA1",
-    "value": "SHA1",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA256",
-    "comment": "SHA256",
-    "value": "SHA256",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA384",
-    "comment": "SHA384",
-    "value": "SHA384",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA512",
-    "comment": "SHA512",
-    "value": "SHA512",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:ARM",
-    "comment": "MachineARM",
-    "value": "MachineARM",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:ARM64",
-    "comment": "MachineARM64",
-    "value": "MachineARM64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:EBC",
-    "comment": "MachineEBC",
-    "value": "MachineEBC",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:IA64",
-    "comment": "MachineIA64",
-    "value": "MachineIA64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPS",
-    "comment": "MachineMIPS",
-    "value": "MachineMIPS",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPS16",
-    "comment": "MachineMIPS16",
-    "value": "MachineMIPS16",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPSFPU",
-    "comment": "MachineMIPSFPU",
-    "value": "MachineMIPSFPU",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPSFPU16",
-    "comment": "MachineMIPSFPU16",
-    "value": "MachineMIPSFPU16",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:SH4",
-    "comment": "MachineSH4",
-    "value": "MachineSH4",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:THUMB",
-    "comment": "MachineTHUMB",
-    "value": "MachineTHUMB",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:X64",
-    "comment": "MachineX64",
-    "value": "MachineX64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:X86",
-    "comment": "MachineX86",
-    "value": "MachineX86",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:MTA",
-    "comment": "MTA threading attribute",
-    "value": "MTAThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:STA",
-    "comment": "STA threading attribute",
-    "value": "STAThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:NONE",
-    "comment": "Default threading attribute",
-    "value": "DefaultThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:IJW",
-    "comment": "Force IJW image",
-    "value": "ForceIJWImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:PURE",
-    "comment": "Force Pure IL Image",
-    "value": "ForcePureILImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:SAFE",
-    "comment": "Force Safe IL Image",
-    "value": "ForceSafeILImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "",
-    "comment": "Default image type",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA1",
-    "comment": "SHA1",
-    "value": "SHA1",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA256",
-    "comment": "SHA256",
-    "value": "SHA256",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA384",
-    "comment": "SHA384",
-    "value": "SHA384",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA512",
-    "comment": "SHA512",
-    "value": "SHA512",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:PROMPT",
-    "comment": "PromptImmediately",
-    "value": "PromptImmediately",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:QUEUE",
-    "comment": "Queue For Next Login",
-    "value": "QueueForNextLogin",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:SEND",
-    "comment": "Send Error Report",
-    "value": "SendErrorReport",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:NONE",
-    "comment": "No Error Report",
-    "value": "NoErrorReport",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError:NO",
-    "comment": "Disabled",
-    "value": "Disabled",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError:SYSTEMDLL",
-    "comment": "System Dlls Only",
-    "value": "SystemDlls",
-    "flags": []
-  },
-  {
-    "name": "LinkIncremental",
-    "switch": "INCREMENTAL:NO",
-    "comment": "Enable Incremental Linking",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkIncremental",
-    "switch": "INCREMENTAL",
-    "comment": "Enable Incremental Linking",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SuppressStartupBanner",
-    "switch": "NOLOGO",
-    "comment": "Suppress Startup Banner",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkStatus",
-    "switch": "LTCG:NOSTATUS",
-    "comment": "Link Status",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkStatus",
-    "switch": "LTCG:STATUS",
-    "comment": "Link Status",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "PreventDllBinding",
-    "switch": "ALLOWBIND:NO",
-    "comment": "Prevent Dll Binding",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "PreventDllBinding",
-    "switch": "ALLOWBIND",
-    "comment": "Prevent Dll Binding",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TreatLinkerWarningAsErrors",
-    "switch": "WX:NO",
-    "comment": "Treat Linker Warning As Errors",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TreatLinkerWarningAsErrors",
-    "switch": "WX",
-    "comment": "Treat Linker Warning As Errors",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "IgnoreAllDefaultLibraries",
-    "switch": "NODEFAULTLIB",
-    "comment": "Ignore All Default Libraries",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateManifest",
-    "switch": "MANIFEST:NO",
-    "comment": "Generate Manifest",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "GenerateManifest",
-    "switch": "MANIFEST",
-    "comment": "Generate Manifest",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AllowIsolation",
-    "switch": "ALLOWISOLATION:NO",
-    "comment": "Allow Isolation",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "AllowIsolation",
-    "switch": "",
-    "comment": "Allow Isolation",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableUAC",
-    "switch": "MANIFESTUAC:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired",
-      "SpaceAppendable"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='false'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "false",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='false'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='true'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ManifestEmbed",
-    "switch": "manifest:embed",
-    "comment": "Embed Manifest",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateMapFile",
-    "switch": "MAP",
-    "comment": "Generate Map File",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
-  },
-  {
-    "name": "MapExports",
-    "switch": "MAPINFO:EXPORTS",
-    "comment": "Map Exports",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AssemblyDebug",
-    "switch": "ASSEMBLYDEBUG:DISABLE",
-    "comment": "Debuggable Assembly",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "AssemblyDebug",
-    "switch": "ASSEMBLYDEBUG",
-    "comment": "Debuggable Assembly",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LargeAddressAware",
-    "switch": "LARGEADDRESSAWARE:NO",
-    "comment": "Enable Large Addresses",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LargeAddressAware",
-    "switch": "LARGEADDRESSAWARE",
-    "comment": "Enable Large Addresses",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TerminalServerAware",
-    "switch": "TSAWARE:NO",
-    "comment": "Terminal Server",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TerminalServerAware",
-    "switch": "TSAWARE",
-    "comment": "Terminal Server",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SwapRunFromCD",
-    "switch": "SWAPRUN:CD",
-    "comment": "Swap Run From CD",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SwapRunFromNET",
-    "switch": "SWAPRUN:NET",
-    "comment": "Swap Run From Network",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "OptimizeReferences",
-    "switch": "OPT:NOREF",
-    "comment": "References",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "OptimizeReferences",
-    "switch": "OPT:REF",
-    "comment": "References",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableCOMDATFolding",
-    "switch": "OPT:NOICF",
-    "comment": "Enable COMDAT Folding",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnableCOMDATFolding",
-    "switch": "OPT:ICF",
-    "comment": "Enable COMDAT Folding",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "IgnoreEmbeddedIDL",
-    "switch": "IGNOREIDL",
-    "comment": "Ignore Embedded IDL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AppContainer",
-    "switch": "APPCONTAINER",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataLinkDelaySign",
-    "switch": "WINMDDELAYSIGN:NO",
-    "comment": "Windows Metadata Delay Sign",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataLinkDelaySign",
-    "switch": "WINMDDELAYSIGN",
-    "comment": "Windows Metadata Delay Sign",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "NoEntryPoint",
-    "switch": "NOENTRY",
-    "comment": "No Entry Point",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SetChecksum",
-    "switch": "RELEASE",
-    "comment": "Set Checksum",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "RandomizedBaseAddress",
-    "switch": "DYNAMICBASE:NO",
-    "comment": "Randomized Base Address",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "RandomizedBaseAddress",
-    "switch": "DYNAMICBASE",
-    "comment": "Randomized Base Address",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "FixedBaseAddress",
-    "switch": "FIXED:NO",
-    "comment": "Fixed Base Address",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "FixedBaseAddress",
-    "switch": "FIXED",
-    "comment": "Fixed Base Address",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "DataExecutionPrevention",
-    "switch": "NXCOMPAT:NO",
-    "comment": "Data Execution Prevention (DEP)",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "DataExecutionPrevention",
-    "switch": "NXCOMPAT",
-    "comment": "Data Execution Prevention (DEP)",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TurnOffAssemblyGeneration",
-    "switch": "NOASSEMBLY",
-    "comment": "Turn Off Assembly Generation",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SupportUnloadOfDelayLoadedDLL",
-    "switch": "DELAY:UNLOAD",
-    "comment": "Unload delay loaded DLL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SupportNobindOfDelayLoadedDLL",
-    "switch": "DELAY:NOBIND",
-    "comment": "Nobind delay loaded DLL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "Profile",
-    "switch": "PROFILE",
-    "comment": "Profile",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkDelaySign",
-    "switch": "DELAYSIGN:NO",
-    "comment": "Delay Sign",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkDelaySign",
-    "switch": "DELAYSIGN",
-    "comment": "Delay Sign",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "CLRUnmanagedCodeCheck",
-    "switch": "CLRUNMANAGEDCODECHECK:NO",
-    "comment": "CLR Unmanaged Code Check",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "CLRUnmanagedCodeCheck",
-    "switch": "CLRUNMANAGEDCODECHECK",
-    "comment": "CLR Unmanaged Code Check",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "DetectOneDefinitionRule",
-    "switch": "ODR",
-    "comment": "Detect One Definition Rule violations",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ImageHasSafeExceptionHandlers",
-    "switch": "SAFESEH:NO",
-    "comment": "Image Has Safe Exception Handlers",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "ImageHasSafeExceptionHandlers",
-    "switch": "SAFESEH",
-    "comment": "Image Has Safe Exception Handlers",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkDLL",
-    "switch": "DLL",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AdditionalLibraryDirectories",
-    "switch": "LIBPATH:",
-    "comment": "Additional Library Directories",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "Natvis",
-    "switch": "NATVIS:",
-    "comment": "Natvis files",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "IgnoreSpecificDefaultLibraries",
-    "switch": "NODEFAULTLIB:",
-    "comment": "Ignore Specific Default Libraries",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AddModuleNamesToAssembly",
-    "switch": "ASSEMBLYMODULE:",
-    "comment": "Add Module to Assembly",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "EmbedManagedResourceFile",
-    "switch": "ASSEMBLYRESOURCE:",
-    "comment": "Embed Managed Resource File",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "ForceSymbolReferences",
-    "switch": "INCLUDE:",
-    "comment": "Force Symbol References",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "DelayLoadDLLs",
-    "switch": "DELAYLOAD:",
-    "comment": "Delay Loaded Dlls",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AssemblyLinkResource",
-    "switch": "ASSEMBLYLINKRESOURCE:",
-    "comment": "Assembly Link Resource",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AdditionalManifestDependencies",
-    "switch": "MANIFESTDEPENDENCY:",
-    "comment": "Additional Manifest Dependencies",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "ManifestInput",
-    "switch": "manifestinput:",
-    "comment": "Manifest Input",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "OutputFile",
-    "switch": "OUT:",
-    "comment": "Output File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "Version",
-    "switch": "VERSION:",
-    "comment": "Version",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "SpecifySectionAttributes",
-    "switch": "SECTION:",
-    "comment": "Specify Section Attributes",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MSDOSStubFileName",
-    "switch": "STUB:",
-    "comment": "MS-DOS Stub File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ModuleDefinitionFile",
-    "switch": "DEF:",
-    "comment": "Module Definition File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ManifestFile",
-    "switch": "ManifestFile:",
-    "comment": "Manifest File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ProgramDatabaseFile",
-    "switch": "PDB:",
-    "comment": "Generate Program Database File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "StripPrivateSymbols",
-    "switch": "PDBSTRIPPED:",
-    "comment": "Strip Private Symbols",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MapFileName",
-    "switch": "MAP:",
-    "comment": "Map File Name",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "HeapReserveSize",
-    "switch": "HEAP:",
-    "comment": "Heap Reserve Size",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "HeapCommitSize",
-    "switch": "HEAP",
-    "comment": "Heap Commit Size",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "StackReserveSize",
-    "switch": "STACK:",
-    "comment": "Stack Reserve Size",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "StackCommitSize",
-    "switch": "STACK",
-    "comment": "Stack Commit Size",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "FunctionOrder",
-    "switch": "ORDER:@",
-    "comment": "Function Order",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ProfileGuidedDatabase",
-    "switch": "PGD:",
-    "comment": "Profile Guided Database",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MidlCommandFile",
-    "switch": "MIDL:@",
-    "comment": "MIDL Commands",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MergedIDLBaseFileName",
-    "switch": "IDLOUT:",
-    "comment": "Merged IDL Base File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "TypeLibraryFile",
-    "switch": "TLBOUT:",
-    "comment": "Type Library",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "WindowsMetadataFile",
-    "switch": "WINMDFILE:",
-    "comment": "Windows Metadata File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "WindowsMetadataLinkKeyFile",
-    "switch": "WINMDKEYFILE:",
-    "comment": "Windows Metadata Key File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "WindowsMetadataKeyContainer",
-    "switch": "WINMDKEYCONTAINER:",
-    "comment": "Windows Metadata Key Container",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "EntryPointSymbol",
-    "switch": "ENTRY:",
-    "comment": "Entry Point",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "BaseAddress",
-    "switch": "BASE:",
-    "comment": "Base Address",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ImportLibrary",
-    "switch": "IMPLIB:",
-    "comment": "Import Library",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MergeSections",
-    "switch": "MERGE:",
-    "comment": "Merge Sections",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "LinkKeyFile",
-    "switch": "KEYFILE:",
-    "comment": "Key File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "KeyContainer",
-    "switch": "KEYCONTAINER:",
-    "comment": "Key Container",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "TypeLibraryResourceID",
-    "switch": "TLBID:",
-    "comment": "TypeLib Resource ID",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "SectionAlignment",
-    "switch": "ALIGN:",
-    "comment": "SectionAlignment",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  }
-]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v142_CL.json b/share/cmake-3.18/Templates/MSBuild/FlagTables/v142_CL.json
deleted file mode 100644
index 95b9d14..0000000
--- a/share/cmake-3.18/Templates/MSBuild/FlagTables/v142_CL.json
+++ /dev/null
@@ -1,1212 +0,0 @@
-[
-  {
-    "name": "DebugInformationFormat",
-    "switch": "",
-    "comment": "None",
-    "value": "None",
-    "flags": []
-  },
-  {
-    "name": "DebugInformationFormat",
-    "switch": "Z7",
-    "comment": "C7 compatible",
-    "value": "OldStyle",
-    "flags": []
-  },
-  {
-    "name": "DebugInformationFormat",
-    "switch": "Zi",
-    "comment": "Program Database",
-    "value": "ProgramDatabase",
-    "flags": []
-  },
-  {
-    "name": "DebugInformationFormat",
-    "switch": "ZI",
-    "comment": "Program Database for Edit And Continue",
-    "value": "EditAndContinue",
-    "flags": []
-  },
-  {
-    "name": "CompileAsManaged",
-    "switch": "",
-    "comment": "No Common Language RunTime Support",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "CompileAsManaged",
-    "switch": "clr",
-    "comment": "Common Language RunTime Support",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "CompileAsManaged",
-    "switch": "clr:pure",
-    "comment": "Pure MSIL Common Language RunTime Support",
-    "value": "Pure",
-    "flags": []
-  },
-  {
-    "name": "CompileAsManaged",
-    "switch": "clr:safe",
-    "comment": "Safe MSIL Common Language RunTime Support",
-    "value": "Safe",
-    "flags": []
-  },
-  {
-    "name": "WarningLevel",
-    "switch": "W0",
-    "comment": "Turn Off All Warnings",
-    "value": "TurnOffAllWarnings",
-    "flags": []
-  },
-  {
-    "name": "WarningLevel",
-    "switch": "W1",
-    "comment": "Level1",
-    "value": "Level1",
-    "flags": []
-  },
-  {
-    "name": "WarningLevel",
-    "switch": "W2",
-    "comment": "Level2",
-    "value": "Level2",
-    "flags": []
-  },
-  {
-    "name": "WarningLevel",
-    "switch": "W3",
-    "comment": "Level3",
-    "value": "Level3",
-    "flags": []
-  },
-  {
-    "name": "WarningLevel",
-    "switch": "W4",
-    "comment": "Level4",
-    "value": "Level4",
-    "flags": []
-  },
-  {
-    "name": "WarningLevel",
-    "switch": "Wall",
-    "comment": "EnableAllWarnings",
-    "value": "EnableAllWarnings",
-    "flags": []
-  },
-  {
-    "name": "DiagnosticsFormat",
-    "switch": "diagnostics:caret",
-    "comment": "Caret",
-    "value": "Caret",
-    "flags": []
-  },
-  {
-    "name": "DiagnosticsFormat",
-    "switch": "diagnostics:column",
-    "comment": "Column Info",
-    "value": "Column",
-    "flags": []
-  },
-  {
-    "name": "DiagnosticsFormat",
-    "switch": "diagnostics:classic",
-    "comment": "Classic",
-    "value": "Classic",
-    "flags": []
-  },
-  {
-    "name": "Optimization",
-    "switch": "",
-    "comment": "Custom",
-    "value": "Custom",
-    "flags": []
-  },
-  {
-    "name": "Optimization",
-    "switch": "Od",
-    "comment": "Disabled",
-    "value": "Disabled",
-    "flags": []
-  },
-  {
-    "name": "Optimization",
-    "switch": "O1",
-    "comment": "Maximum Optimization (Favor Size)",
-    "value": "MinSpace",
-    "flags": []
-  },
-  {
-    "name": "Optimization",
-    "switch": "O2",
-    "comment": "Maximum Optimization (Favor Speed)",
-    "value": "MaxSpeed",
-    "flags": []
-  },
-  {
-    "name": "Optimization",
-    "switch": "Ox",
-    "comment": "Optimizations (Favor Speed)",
-    "value": "Full",
-    "flags": []
-  },
-  {
-    "name": "InlineFunctionExpansion",
-    "switch": "",
-    "comment": "Default",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "InlineFunctionExpansion",
-    "switch": "Ob0",
-    "comment": "Disabled",
-    "value": "Disabled",
-    "flags": []
-  },
-  {
-    "name": "InlineFunctionExpansion",
-    "switch": "Ob1",
-    "comment": "Only __inline",
-    "value": "OnlyExplicitInline",
-    "flags": []
-  },
-  {
-    "name": "InlineFunctionExpansion",
-    "switch": "Ob2",
-    "comment": "Any Suitable",
-    "value": "AnySuitable",
-    "flags": []
-  },
-  {
-    "name": "FavorSizeOrSpeed",
-    "switch": "Os",
-    "comment": "Favor small code",
-    "value": "Size",
-    "flags": []
-  },
-  {
-    "name": "FavorSizeOrSpeed",
-    "switch": "Ot",
-    "comment": "Favor fast code",
-    "value": "Speed",
-    "flags": []
-  },
-  {
-    "name": "FavorSizeOrSpeed",
-    "switch": "",
-    "comment": "Neither",
-    "value": "Neither",
-    "flags": []
-  },
-  {
-    "name": "ExceptionHandling",
-    "switch": "EHa",
-    "comment": "Yes with SEH Exceptions",
-    "value": "Async",
-    "flags": []
-  },
-  {
-    "name": "ExceptionHandling",
-    "switch": "EHsc",
-    "comment": "Yes",
-    "value": "Sync",
-    "flags": []
-  },
-  {
-    "name": "ExceptionHandling",
-    "switch": "EHs",
-    "comment": "Yes with Extern C functions",
-    "value": "SyncCThrow",
-    "flags": []
-  },
-  {
-    "name": "ExceptionHandling",
-    "switch": "",
-    "comment": "No",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "BasicRuntimeChecks",
-    "switch": "RTCs",
-    "comment": "Stack Frames",
-    "value": "StackFrameRuntimeCheck",
-    "flags": []
-  },
-  {
-    "name": "BasicRuntimeChecks",
-    "switch": "RTCu",
-    "comment": "Uninitialized variables",
-    "value": "UninitializedLocalUsageCheck",
-    "flags": []
-  },
-  {
-    "name": "BasicRuntimeChecks",
-    "switch": "RTC1",
-    "comment": "Both (/RTC1, equiv. to /RTCsu)",
-    "value": "EnableFastChecks",
-    "flags": []
-  },
-  {
-    "name": "BasicRuntimeChecks",
-    "switch": "",
-    "comment": "Default",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "RuntimeLibrary",
-    "switch": "MT",
-    "comment": "Multi-threaded",
-    "value": "MultiThreaded",
-    "flags": []
-  },
-  {
-    "name": "RuntimeLibrary",
-    "switch": "MTd",
-    "comment": "Multi-threaded Debug",
-    "value": "MultiThreadedDebug",
-    "flags": []
-  },
-  {
-    "name": "RuntimeLibrary",
-    "switch": "MD",
-    "comment": "Multi-threaded DLL",
-    "value": "MultiThreadedDLL",
-    "flags": []
-  },
-  {
-    "name": "RuntimeLibrary",
-    "switch": "MDd",
-    "comment": "Multi-threaded Debug DLL",
-    "value": "MultiThreadedDebugDLL",
-    "flags": []
-  },
-  {
-    "name": "StructMemberAlignment",
-    "switch": "Zp1",
-    "comment": "1 Byte",
-    "value": "1Byte",
-    "flags": []
-  },
-  {
-    "name": "StructMemberAlignment",
-    "switch": "Zp2",
-    "comment": "2 Bytes",
-    "value": "2Bytes",
-    "flags": []
-  },
-  {
-    "name": "StructMemberAlignment",
-    "switch": "Zp4",
-    "comment": "4 Byte",
-    "value": "4Bytes",
-    "flags": []
-  },
-  {
-    "name": "StructMemberAlignment",
-    "switch": "Zp8",
-    "comment": "8 Bytes",
-    "value": "8Bytes",
-    "flags": []
-  },
-  {
-    "name": "StructMemberAlignment",
-    "switch": "Zp16",
-    "comment": "16 Bytes",
-    "value": "16Bytes",
-    "flags": []
-  },
-  {
-    "name": "StructMemberAlignment",
-    "switch": "",
-    "comment": "Default",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "BufferSecurityCheck",
-    "switch": "GS-",
-    "comment": "Disable Security Check",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "BufferSecurityCheck",
-    "switch": "GS",
-    "comment": "Enable Security Check",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ControlFlowGuard",
-    "switch": "guard:cf",
-    "comment": "Yes",
-    "value": "Guard",
-    "flags": []
-  },
-  {
-    "name": "ControlFlowGuard",
-    "switch": "",
-    "comment": "No",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnableEnhancedInstructionSet",
-    "switch": "arch:SSE",
-    "comment": "Streaming SIMD Extensions",
-    "value": "StreamingSIMDExtensions",
-    "flags": []
-  },
-  {
-    "name": "EnableEnhancedInstructionSet",
-    "switch": "arch:SSE2",
-    "comment": "Streaming SIMD Extensions 2",
-    "value": "StreamingSIMDExtensions2",
-    "flags": []
-  },
-  {
-    "name": "EnableEnhancedInstructionSet",
-    "switch": "arch:AVX",
-    "comment": "Advanced Vector Extensions",
-    "value": "AdvancedVectorExtensions",
-    "flags": []
-  },
-  {
-    "name": "EnableEnhancedInstructionSet",
-    "switch": "arch:AVX2",
-    "comment": "Advanced Vector Extensions 2",
-    "value": "AdvancedVectorExtensions2",
-    "flags": []
-  },
-  {
-    "name": "EnableEnhancedInstructionSet",
-    "switch": "arch:IA32",
-    "comment": "No Enhanced Instructions",
-    "value": "NoExtensions",
-    "flags": []
-  },
-  {
-    "name": "EnableEnhancedInstructionSet",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "FloatingPointModel",
-    "switch": "fp:precise",
-    "comment": "Precise",
-    "value": "Precise",
-    "flags": []
-  },
-  {
-    "name": "FloatingPointModel",
-    "switch": "fp:strict",
-    "comment": "Strict",
-    "value": "Strict",
-    "flags": []
-  },
-  {
-    "name": "FloatingPointModel",
-    "switch": "fp:fast",
-    "comment": "Fast",
-    "value": "Fast",
-    "flags": []
-  },
-  {
-    "name": "SpectreMitigation",
-    "switch": "Qspectre-",
-    "comment": "Spectre mitigations disabled",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "SpectreMitigation",
-    "switch": "Qspectre",
-    "comment": "Spectre mitigations enabled",
-    "value": "Spectre",
-    "flags": []
-  },
-  {
-    "name": "LanguageStandard",
-    "switch": "std:c++14",
-    "comment": "ISO C++14 Standard",
-    "value": "stdcpp14",
-    "flags": []
-  },
-  {
-    "name": "LanguageStandard",
-    "switch": "std:c++17",
-    "comment": "ISO C++17 Standard",
-    "value": "stdcpp17",
-    "flags": []
-  },
-  {
-    "name": "LanguageStandard",
-    "switch": "std:c++latest",
-    "comment": "Preview - Features from the Latest C++ Working Draft",
-    "value": "stdcpplatest",
-    "flags": []
-  },
-  {
-    "name": "PrecompiledHeader",
-    "switch": "Yc",
-    "comment": "Create",
-    "value": "Create",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
-  },
-  {
-    "name": "PrecompiledHeader",
-    "switch": "Yu",
-    "comment": "Use",
-    "value": "Use",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
-  },
-  {
-    "name": "PrecompiledHeader",
-    "switch": "Y-",
-    "comment": "Not Using Precompiled Headers",
-    "value": "NotUsing",
-    "flags": []
-  },
-  {
-    "name": "AssemblerOutput",
-    "switch": "",
-    "comment": "No Listing",
-    "value": "NoListing",
-    "flags": []
-  },
-  {
-    "name": "AssemblerOutput",
-    "switch": "FA",
-    "comment": "Assembly-Only Listing",
-    "value": "AssemblyCode",
-    "flags": []
-  },
-  {
-    "name": "AssemblerOutput",
-    "switch": "FAc",
-    "comment": "Assembly With Machine Code",
-    "value": "AssemblyAndMachineCode",
-    "flags": []
-  },
-  {
-    "name": "AssemblerOutput",
-    "switch": "FAs",
-    "comment": "Assembly With Source Code",
-    "value": "AssemblyAndSourceCode",
-    "flags": []
-  },
-  {
-    "name": "AssemblerOutput",
-    "switch": "FAcs",
-    "comment": "Assembly, Machine Code and Source",
-    "value": "All",
-    "flags": []
-  },
-  {
-    "name": "CallingConvention",
-    "switch": "Gd",
-    "comment": "__cdecl",
-    "value": "Cdecl",
-    "flags": []
-  },
-  {
-    "name": "CallingConvention",
-    "switch": "Gr",
-    "comment": "__fastcall",
-    "value": "FastCall",
-    "flags": []
-  },
-  {
-    "name": "CallingConvention",
-    "switch": "Gz",
-    "comment": "__stdcall",
-    "value": "StdCall",
-    "flags": []
-  },
-  {
-    "name": "CallingConvention",
-    "switch": "Gv",
-    "comment": "__vectorcall",
-    "value": "VectorCall",
-    "flags": []
-  },
-  {
-    "name": "CompileAs",
-    "switch": "",
-    "comment": "Default",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "CompileAs",
-    "switch": "TC",
-    "comment": "Compile as C Code",
-    "value": "CompileAsC",
-    "flags": []
-  },
-  {
-    "name": "CompileAs",
-    "switch": "TP",
-    "comment": "Compile as C++ Code",
-    "value": "CompileAsCpp",
-    "flags": []
-  },
-  {
-    "name": "ErrorReporting",
-    "switch": "errorReport:none",
-    "comment": "Do Not Send Report",
-    "value": "None",
-    "flags": []
-  },
-  {
-    "name": "ErrorReporting",
-    "switch": "errorReport:prompt",
-    "comment": "Prompt Immediately",
-    "value": "Prompt",
-    "flags": []
-  },
-  {
-    "name": "ErrorReporting",
-    "switch": "errorReport:queue",
-    "comment": "Queue For Next Login",
-    "value": "Queue",
-    "flags": []
-  },
-  {
-    "name": "ErrorReporting",
-    "switch": "errorReport:send",
-    "comment": "Send Automatically",
-    "value": "Send",
-    "flags": []
-  },
-  {
-    "name": "SupportJustMyCode",
-    "switch": "JMC-",
-    "comment": "Support Just My Code Debugging",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "SupportJustMyCode",
-    "switch": "JMC",
-    "comment": "Support Just My Code Debugging",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "CompileAsWinRT",
-    "switch": "ZW",
-    "comment": "Consume Windows Runtime Extension",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "WinRTNoStdLib",
-    "switch": "ZW:nostdlib",
-    "comment": "No Standard WinRT Libraries",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SuppressStartupBanner",
-    "switch": "nologo",
-    "comment": "Suppress Startup Banner",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TreatWarningAsError",
-    "switch": "WX-",
-    "comment": "Treat Warnings As Errors",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TreatWarningAsError",
-    "switch": "WX",
-    "comment": "Treat Warnings As Errors",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SDLCheck",
-    "switch": "sdl-",
-    "comment": "SDL checks",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "SDLCheck",
-    "switch": "sdl",
-    "comment": "SDL checks",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "MultiProcessorCompilation",
-    "switch": "MP",
-    "comment": "Multi-processor Compilation",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
-  },
-  {
-    "name": "IntrinsicFunctions",
-    "switch": "Oi",
-    "comment": "Enable Intrinsic Functions",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "OmitFramePointers",
-    "switch": "Oy-",
-    "comment": "Omit Frame Pointers",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "OmitFramePointers",
-    "switch": "Oy",
-    "comment": "Omit Frame Pointers",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableFiberSafeOptimizations",
-    "switch": "GT",
-    "comment": "Enable Fiber-Safe Optimizations",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "WholeProgramOptimization",
-    "switch": "GL",
-    "comment": "Whole Program Optimization",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "UndefineAllPreprocessorDefinitions",
-    "switch": "u",
-    "comment": "Undefine All Preprocessor Definitions",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "IgnoreStandardIncludePath",
-    "switch": "X",
-    "comment": "Ignore Standard Include Paths",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "PreprocessToFile",
-    "switch": "P",
-    "comment": "Preprocess to a File",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "PreprocessSuppressLineNumbers",
-    "switch": "EP",
-    "comment": "Preprocess Suppress Line Numbers",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "PreprocessKeepComments",
-    "switch": "C",
-    "comment": "Keep Comments",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "StringPooling",
-    "switch": "GF-",
-    "comment": "Enable String Pooling",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "StringPooling",
-    "switch": "GF",
-    "comment": "Enable String Pooling",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "MinimalRebuild",
-    "switch": "Gm-",
-    "comment": "Enable Minimal Rebuild",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "MinimalRebuild",
-    "switch": "Gm",
-    "comment": "Enable Minimal Rebuild",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SmallerTypeCheck",
-    "switch": "RTCc",
-    "comment": "Smaller Type Check",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "FunctionLevelLinking",
-    "switch": "Gy-",
-    "comment": "Enable Function-Level Linking",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "FunctionLevelLinking",
-    "switch": "Gy",
-    "comment": "Enable Function-Level Linking",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableParallelCodeGeneration",
-    "switch": "Qpar-",
-    "comment": "Enable Parallel Code Generation",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnableParallelCodeGeneration",
-    "switch": "Qpar",
-    "comment": "Enable Parallel Code Generation",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "FloatingPointExceptions",
-    "switch": "fp:except-",
-    "comment": "Enable Floating Point Exceptions",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "FloatingPointExceptions",
-    "switch": "fp:except",
-    "comment": "Enable Floating Point Exceptions",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "CreateHotpatchableImage",
-    "switch": "hotpatch",
-    "comment": "Create Hotpatchable Image",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "DisableLanguageExtensions",
-    "switch": "Za",
-    "comment": "Disable Language Extensions",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ConformanceMode",
-    "switch": "permissive-",
-    "comment": "Conformance mode enabled",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ConformanceMode",
-    "switch": "permissive",
-    "comment": "Conformance mode disabled",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TreatWChar_tAsBuiltInType",
-    "switch": "Zc:wchar_t-",
-    "comment": "Treat WChar_t As Built in Type",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TreatWChar_tAsBuiltInType",
-    "switch": "Zc:wchar_t",
-    "comment": "Treat WChar_t As Built in Type",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ForceConformanceInForLoopScope",
-    "switch": "Zc:forScope-",
-    "comment": "Force Conformance in For Loop Scope",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "ForceConformanceInForLoopScope",
-    "switch": "Zc:forScope",
-    "comment": "Force Conformance in For Loop Scope",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "RemoveUnreferencedCodeData",
-    "switch": "Zc:inline-",
-    "comment": "Remove unreferenced code and data",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "RemoveUnreferencedCodeData",
-    "switch": "Zc:inline",
-    "comment": "Remove unreferenced code and data",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnforceTypeConversionRules",
-    "switch": "Zc:rvalueCast-",
-    "comment": "Enforce type conversion rules",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnforceTypeConversionRules",
-    "switch": "Zc:rvalueCast",
-    "comment": "Enforce type conversion rules",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "RuntimeTypeInfo",
-    "switch": "GR-",
-    "comment": "Enable Run-Time Type Information",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "RuntimeTypeInfo",
-    "switch": "GR",
-    "comment": "Enable Run-Time Type Information",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "OpenMPSupport",
-    "switch": "openmp-",
-    "comment": "Open MP Support",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "OpenMPSupport",
-    "switch": "openmp",
-    "comment": "Open MP Support",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableModules",
-    "switch": "experimental:module",
-    "comment": "Enable C++ Modules (experimental)",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ExpandAttributedSource",
-    "switch": "Fx",
-    "comment": "Expand Attributed Source",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "UseUnicodeForAssemblerListing",
-    "switch": "FAu",
-    "comment": "Use Unicode For Assembler Listing",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateXMLDocumentationFiles",
-    "switch": "doc",
-    "comment": "Generate XML Documentation Files",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
-  },
-  {
-    "name": "BrowseInformation",
-    "switch": "FR",
-    "comment": "Enable Browse Information",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
-  },
-  {
-    "name": "ShowIncludes",
-    "switch": "showIncludes",
-    "comment": "Show Includes",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnablePREfast",
-    "switch": "analyze-",
-    "comment": "Enable Code Analysis",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnablePREfast",
-    "switch": "analyze",
-    "comment": "Enable Code Analysis",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "UseFullPaths",
-    "switch": "FC",
-    "comment": "Use Full Paths",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "OmitDefaultLibName",
-    "switch": "Zl",
-    "comment": "Omit Default Library Name",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AdditionalIncludeDirectories",
-    "switch": "I",
-    "comment": "Additional Include Directories",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AdditionalUsingDirectories",
-    "switch": "AI",
-    "comment": "Additional #using Directories",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "PreprocessorDefinitions",
-    "switch": "D",
-    "comment": "Preprocessor Definitions",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "UndefinePreprocessorDefinitions",
-    "switch": "U",
-    "comment": "Undefine Preprocessor Definitions",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "DisableSpecificWarnings",
-    "switch": "wd",
-    "comment": "Disable Specific Warnings",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "ForcedIncludeFiles",
-    "switch": "FI",
-    "comment": "Forced Include File",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "ForcedUsingFiles",
-    "switch": "FU",
-    "comment": "Forced #using File",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "PREfastLog",
-    "switch": "analyze:log",
-    "comment": "Code Analysis Log",
-    "value": "",
-    "flags": [
-      "UserFollowing"
-    ]
-  },
-  {
-    "name": "PREfastAdditionalPlugins",
-    "switch": "analyze:plugin",
-    "comment": "Additional Code Analysis Native plugins",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "TreatSpecificWarningsAsErrors",
-    "switch": "we",
-    "comment": "Treat Specific Warnings As Errors",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "WarningVersion",
-    "switch": "Wv:",
-    "comment": "Warning Version",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "PreprocessOutputPath",
-    "switch": "Fi",
-    "comment": "Preprocess Output Path",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "PrecompiledHeaderFile",
-    "switch": "Yu",
-    "comment": "Precompiled Header File",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "PrecompiledHeaderFile",
-    "switch": "Yc",
-    "comment": "Precompiled Header File",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "PrecompiledHeaderOutputFile",
-    "switch": "Fp",
-    "comment": "Precompiled Header Output File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "AssemblerListingLocation",
-    "switch": "Fa",
-    "comment": "ASM List Location",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ObjectFileName",
-    "switch": "Fo",
-    "comment": "Object File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ProgramDataBaseFileName",
-    "switch": "Fd",
-    "comment": "Program Database File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "XMLDocumentationFileName",
-    "switch": "doc",
-    "comment": "XML Documentation File Name",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "BrowseInformationFile",
-    "switch": "FR",
-    "comment": "Browse Information File",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "ProcessorNumber",
-    "switch": "MP",
-    "comment": "Number of processors",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  }
-]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v142_CSharp.json b/share/cmake-3.18/Templates/MSBuild/FlagTables/v142_CSharp.json
deleted file mode 100644
index 5989aea..0000000
--- a/share/cmake-3.18/Templates/MSBuild/FlagTables/v142_CSharp.json
+++ /dev/null
@@ -1,574 +0,0 @@
-[
-  {
-    "name":  "ProjectName",
-    "switch": "out:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:exe",
-    "comment": "",
-    "value": "Exe",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:winexe",
-    "comment": "",
-    "value": "Winexe",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:library",
-    "comment": "",
-    "value": "Library",
-    "flags": []
-  },
-  {
-    "name":  "OutputType",
-    "switch": "target:module",
-    "comment": "",
-    "value": "Module",
-    "flags": []
-  },
-  {
-    "name":  "DocumentationFile",
-    "switch": "doc",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:x86",
-    "comment": "",
-    "value": "x86",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:Itanium",
-    "comment": "",
-    "value": "Itanium",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:x64",
-    "comment": "",
-    "value": "x64",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:arm",
-    "comment": "",
-    "value": "arm",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:anycpu32bitpreferred",
-    "comment": "",
-    "value": "anycpu32bitpreferred",
-    "flags": []
-  },
-  {
-    "name":  "Platform",
-    "switch": "platform:anycpu",
-    "comment": "",
-    "value": "anycpu",
-    "flags": []
-  },
-  {
-    "name":  "References",
-    "switch": "reference:",
-    "comment": "mit alias",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "References",
-    "switch": "reference:",
-    "comment": "dateiliste",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "AddModules",
-    "switch": "addmodule:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name":  "Win32Resource",
-    "switch": "win32res:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "ApplicationIcon",
-    "switch": "win32icon:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "ApplicationManifest",
-    "switch": "win32manifest:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name":  "NoWin32Manifest",
-    "switch": "nowin32manifest",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DefineDebug",
-    "switch": "debug",
-    "comment": "",
-    "value": "true",
-    "flags": [
-      "Continue"
-    ]
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "DebugSymbols",
-    "switch": "debug+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:none",
-    "comment": "",
-    "value": "none",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:full",
-    "comment": "",
-    "value": "full",
-    "flags": []
-  },
-  {
-    "name":  "DebugType",
-    "switch": "debug:pdbonly",
-    "comment": "",
-    "value": "pdbonly",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "Optimize",
-    "switch": "optimize+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "TreatWarningsAsErrors",
-    "switch": "warnaserror+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror-",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningsAsErrors",
-    "switch": "warnaserror+",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:0",
-    "comment": "",
-    "value": "0",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:1",
-    "comment": "",
-    "value": "1",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:2",
-    "comment": "",
-    "value": "2",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:3",
-    "comment": "",
-    "value": "3",
-    "flags": []
-  },
-  {
-    "name":  "WarningLevel",
-    "switch": "warn:4",
-    "comment": "",
-    "value": "4",
-    "flags": []
-  },
-  {
-    "name":  "NoWarn",
-    "switch": "nowarn:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired",
-      "CommaAppendable"
-    ]
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "CheckForOverflowUnderflow",
-    "switch": "checked+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "AllowUnsafeBlocks",
-    "switch": "unsafe+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DefineConstants",
-    "switch": "define:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "SemicolonAppendable",
-      "UserValue"
-    ]
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:ISO-1",
-    "comment": "",
-    "value": "ISO-1",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:ISO-2",
-    "comment": "",
-    "value": "ISO-2",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:3",
-    "comment": "",
-    "value": "3",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:4",
-    "comment": "",
-    "value": "4",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:5",
-    "comment": "",
-    "value": "5",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:6",
-    "comment": "",
-    "value": "6",
-    "flags": []
-  },
-  {
-    "name":  "LangVersion",
-    "switch": "langversion:default",
-    "comment": "",
-    "value": "default",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "DelaySign",
-    "switch": "delaysign+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "AssemblyOriginatorKeyFile",
-    "switch": "keyfile",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "KeyContainerName",
-    "switch": "keycontainer",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoLogo",
-    "switch": "nologo",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoConfig",
-    "switch": "noconfig",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "BaseAddress",
-    "switch": "baseaddress:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "CodePage",
-    "switch": "codepage",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "Utf8Output",
-    "switch": "utf8output",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "MainEntryPoint",
-    "switch": "main:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "GenerateFullPaths",
-    "switch": "fullpaths",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "FileAlignment",
-    "switch": "filealign",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "PdbFile",
-    "switch": "pdb:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib-",
-    "comment": "",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name":  "NoStandardLib",
-    "switch": "nostdlib+",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name":  "SubsystemVersion",
-    "switch": "subsystemversion",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "AdditionalLibPaths",
-    "switch": "lib:",
-    "comment": "",
-    "value": "",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:none",
-    "comment": "Do Not Send Report",
-    "value": "none",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:prompt",
-    "comment": "Prompt Immediately",
-    "value": "prompt",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:queue",
-    "comment": "Queue For Next Login",
-    "value": "queue",
-    "flags": []
-  },
-  {
-    "name":  "ErrorReport",
-    "switch": "errorreport:send",
-    "comment": "Send Automatically",
-    "value": "send",
-    "flags": []
-  }
-]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v142_Link.json b/share/cmake-3.18/Templates/MSBuild/FlagTables/v142_Link.json
deleted file mode 100644
index 66ee76f..0000000
--- a/share/cmake-3.18/Templates/MSBuild/FlagTables/v142_Link.json
+++ /dev/null
@@ -1,1323 +0,0 @@
-[
-  {
-    "name": "ShowProgress",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE",
-    "comment": "Display all progress messages",
-    "value": "LinkVerbose",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:Lib",
-    "comment": "For Libraries Searched",
-    "value": "LinkVerboseLib",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:ICF",
-    "comment": "About COMDAT folding during optimized linking",
-    "value": "LinkVerboseICF",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:REF",
-    "comment": "About data removed during optimized linking",
-    "value": "LinkVerboseREF",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:SAFESEH",
-    "comment": "About Modules incompatible with SEH",
-    "value": "LinkVerboseSAFESEH",
-    "flags": []
-  },
-  {
-    "name": "ShowProgress",
-    "switch": "VERBOSE:CLR",
-    "comment": "About linker activity related to managed code",
-    "value": "LinkVerboseCLR",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE:MULTIPLE",
-    "comment": "Multiply Defined Symbol Only",
-    "value": "MultiplyDefinedSymbolOnly",
-    "flags": []
-  },
-  {
-    "name": "ForceFileOutput",
-    "switch": "FORCE:UNRESOLVED",
-    "comment": "Undefined Symbol Only",
-    "value": "UndefinedSymbolOnly",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:5",
-    "comment": "X86 Image Only",
-    "value": "X86Image",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:6",
-    "comment": "X64 Image Only",
-    "value": "X64Image",
-    "flags": []
-  },
-  {
-    "name": "CreateHotPatchableImage",
-    "switch": "FUNCTIONPADMIN:16",
-    "comment": "Itanium Image Only",
-    "value": "ItaniumImage",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='asInvoker'",
-    "comment": "asInvoker",
-    "value": "AsInvoker",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='highestAvailable'",
-    "comment": "highestAvailable",
-    "value": "HighestAvailable",
-    "flags": []
-  },
-  {
-    "name": "UACExecutionLevel",
-    "switch": "level='requireAdministrator'",
-    "comment": "requireAdministrator",
-    "value": "RequireAdministrator",
-    "flags": []
-  },
-  {
-    "name": "GenerateDebugInformation",
-    "switch": "DEBUG",
-    "comment": "Generate Debug Information",
-    "value": "true",
-    "flags": [
-      "CaseInsensitive"
-    ]
-  },
-  {
-    "name": "GenerateDebugInformation",
-    "switch": "DEBUG:FASTLINK",
-    "comment": "Generate Debug Information optimized for faster links",
-    "value": "DebugFastLink",
-    "flags": [
-      "CaseInsensitive"
-    ]
-  },
-  {
-    "name": "GenerateDebugInformation",
-    "switch": "DEBUG:FULL",
-    "comment": "Generate Debug Information optimized for sharing and publishing",
-    "value": "DebugFull",
-    "flags": [
-      "CaseInsensitive"
-    ]
-  },
-  {
-    "name": "GenerateDebugInformation",
-    "switch": "DEBUG:NONE",
-    "comment": "Produces no debugging information",
-    "value": "false",
-    "flags": [
-      "CaseInsensitive"
-    ]
-  },
-  {
-    "name": "SubSystem",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:CONSOLE",
-    "comment": "Console",
-    "value": "Console",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:WINDOWS",
-    "comment": "Windows",
-    "value": "Windows",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:NATIVE",
-    "comment": "Native",
-    "value": "Native",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_APPLICATION",
-    "comment": "EFI Application",
-    "value": "EFI Application",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
-    "comment": "EFI Boot Service Driver",
-    "value": "EFI Boot Service Driver",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_ROM",
-    "comment": "EFI ROM",
-    "value": "EFI ROM",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
-    "comment": "EFI Runtime",
-    "value": "EFI Runtime",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:POSIX",
-    "comment": "POSIX",
-    "value": "POSIX",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "Driver",
-    "comment": "Driver",
-    "value": "Driver",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "DRIVER:UPONLY",
-    "comment": "UP Only",
-    "value": "UpOnly",
-    "flags": []
-  },
-  {
-    "name": "Driver",
-    "switch": "DRIVER:WDM",
-    "comment": "WDM",
-    "value": "WDM",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "",
-    "comment": "Default",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:incremental",
-    "comment": "Use Fast Link Time Code Generation",
-    "value": "UseFastLinkTimeCodeGeneration",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG",
-    "comment": "Use Link Time Code Generation",
-    "value": "UseLinkTimeCodeGeneration",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGInstrument",
-    "comment": "Profile Guided Optimization - Instrument",
-    "value": "PGInstrument",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGOptimize",
-    "comment": "Profile Guided Optimization - Optimization",
-    "value": "PGOptimization",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG:PGUpdate",
-    "comment": "Profile Guided Optimization - Update",
-    "value": "PGUpdate",
-    "flags": []
-  },
-  {
-    "name": "GenerateWindowsMetadata",
-    "switch": "WINMD",
-    "comment": "Yes",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateWindowsMetadata",
-    "switch": "WINMD:NO",
-    "comment": "No",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA1",
-    "comment": "SHA1",
-    "value": "SHA1",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA256",
-    "comment": "SHA256",
-    "value": "SHA256",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA384",
-    "comment": "SHA384",
-    "value": "SHA384",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataSignHash",
-    "switch": "WINMDSIGNHASH:SHA512",
-    "comment": "SHA512",
-    "value": "SHA512",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "",
-    "comment": "Not Set",
-    "value": "NotSet",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:ARM",
-    "comment": "MachineARM",
-    "value": "MachineARM",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:ARM64",
-    "comment": "MachineARM64",
-    "value": "MachineARM64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:EBC",
-    "comment": "MachineEBC",
-    "value": "MachineEBC",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:IA64",
-    "comment": "MachineIA64",
-    "value": "MachineIA64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPS",
-    "comment": "MachineMIPS",
-    "value": "MachineMIPS",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPS16",
-    "comment": "MachineMIPS16",
-    "value": "MachineMIPS16",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPSFPU",
-    "comment": "MachineMIPSFPU",
-    "value": "MachineMIPSFPU",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPSFPU16",
-    "comment": "MachineMIPSFPU16",
-    "value": "MachineMIPSFPU16",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:SH4",
-    "comment": "MachineSH4",
-    "value": "MachineSH4",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:THUMB",
-    "comment": "MachineTHUMB",
-    "value": "MachineTHUMB",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:X64",
-    "comment": "MachineX64",
-    "value": "MachineX64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:X86",
-    "comment": "MachineX86",
-    "value": "MachineX86",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:MTA",
-    "comment": "MTA threading attribute",
-    "value": "MTAThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:STA",
-    "comment": "STA threading attribute",
-    "value": "STAThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRThreadAttribute",
-    "switch": "CLRTHREADATTRIBUTE:NONE",
-    "comment": "Default threading attribute",
-    "value": "DefaultThreadingAttribute",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:IJW",
-    "comment": "Force IJW image",
-    "value": "ForceIJWImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:PURE",
-    "comment": "Force Pure IL Image",
-    "value": "ForcePureILImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "CLRIMAGETYPE:SAFE",
-    "comment": "Force Safe IL Image",
-    "value": "ForceSafeILImage",
-    "flags": []
-  },
-  {
-    "name": "CLRImageType",
-    "switch": "",
-    "comment": "Default image type",
-    "value": "Default",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA1",
-    "comment": "SHA1",
-    "value": "SHA1",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA256",
-    "comment": "SHA256",
-    "value": "SHA256",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA384",
-    "comment": "SHA384",
-    "value": "SHA384",
-    "flags": []
-  },
-  {
-    "name": "SignHash",
-    "switch": "CLRSIGNHASH:SHA512",
-    "comment": "SHA512",
-    "value": "SHA512",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:PROMPT",
-    "comment": "PromptImmediately",
-    "value": "PromptImmediately",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:QUEUE",
-    "comment": "Queue For Next Login",
-    "value": "QueueForNextLogin",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:SEND",
-    "comment": "Send Error Report",
-    "value": "SendErrorReport",
-    "flags": []
-  },
-  {
-    "name": "LinkErrorReporting",
-    "switch": "ERRORREPORT:NONE",
-    "comment": "No Error Report",
-    "value": "NoErrorReport",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError",
-    "comment": "Enabled",
-    "value": "Enabled",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError:NO",
-    "comment": "Disabled",
-    "value": "Disabled",
-    "flags": []
-  },
-  {
-    "name": "CLRSupportLastError",
-    "switch": "CLRSupportLastError:SYSTEMDLL",
-    "comment": "System Dlls Only",
-    "value": "SystemDlls",
-    "flags": []
-  },
-  {
-    "name": "LinkIncremental",
-    "switch": "INCREMENTAL:NO",
-    "comment": "Enable Incremental Linking",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkIncremental",
-    "switch": "INCREMENTAL",
-    "comment": "Enable Incremental Linking",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SuppressStartupBanner",
-    "switch": "NOLOGO",
-    "comment": "Suppress Startup Banner",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkStatus",
-    "switch": "LTCG:NOSTATUS",
-    "comment": "Link Status",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkStatus",
-    "switch": "LTCG:STATUS",
-    "comment": "Link Status",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "PreventDllBinding",
-    "switch": "ALLOWBIND:NO",
-    "comment": "Prevent Dll Binding",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "PreventDllBinding",
-    "switch": "ALLOWBIND",
-    "comment": "Prevent Dll Binding",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TreatLinkerWarningAsErrors",
-    "switch": "WX:NO",
-    "comment": "Treat Linker Warning As Errors",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TreatLinkerWarningAsErrors",
-    "switch": "WX",
-    "comment": "Treat Linker Warning As Errors",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "IgnoreAllDefaultLibraries",
-    "switch": "NODEFAULTLIB",
-    "comment": "Ignore All Default Libraries",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateManifest",
-    "switch": "MANIFEST:NO",
-    "comment": "Generate Manifest",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "GenerateManifest",
-    "switch": "MANIFEST",
-    "comment": "Generate Manifest",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AllowIsolation",
-    "switch": "ALLOWISOLATION:NO",
-    "comment": "Allow Isolation",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "AllowIsolation",
-    "switch": "",
-    "comment": "Allow Isolation",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableUAC",
-    "switch": "MANIFESTUAC:",
-    "comment": "",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired",
-      "SpaceAppendable"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='false'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "false",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='false'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "UACUIAccess",
-    "switch": "uiAccess='true'",
-    "comment": "UAC Bypass UI Protection",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ManifestEmbed",
-    "switch": "manifest:embed",
-    "comment": "Embed Manifest",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "GenerateMapFile",
-    "switch": "MAP",
-    "comment": "Generate Map File",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
-  },
-  {
-    "name": "MapExports",
-    "switch": "MAPINFO:EXPORTS",
-    "comment": "Map Exports",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AssemblyDebug",
-    "switch": "ASSEMBLYDEBUG:DISABLE",
-    "comment": "Debuggable Assembly",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "AssemblyDebug",
-    "switch": "ASSEMBLYDEBUG",
-    "comment": "Debuggable Assembly",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LargeAddressAware",
-    "switch": "LARGEADDRESSAWARE:NO",
-    "comment": "Enable Large Addresses",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LargeAddressAware",
-    "switch": "LARGEADDRESSAWARE",
-    "comment": "Enable Large Addresses",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TerminalServerAware",
-    "switch": "TSAWARE:NO",
-    "comment": "Terminal Server",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TerminalServerAware",
-    "switch": "TSAWARE",
-    "comment": "Terminal Server",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SwapRunFromCD",
-    "switch": "SWAPRUN:CD",
-    "comment": "Swap Run From CD",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SwapRunFromNET",
-    "switch": "SWAPRUN:NET",
-    "comment": "Swap Run From Network",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "OptimizeReferences",
-    "switch": "OPT:NOREF",
-    "comment": "References",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "OptimizeReferences",
-    "switch": "OPT:REF",
-    "comment": "References",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "EnableCOMDATFolding",
-    "switch": "OPT:NOICF",
-    "comment": "Enable COMDAT Folding",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnableCOMDATFolding",
-    "switch": "OPT:ICF",
-    "comment": "Enable COMDAT Folding",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "IgnoreEmbeddedIDL",
-    "switch": "IGNOREIDL",
-    "comment": "Ignore Embedded IDL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AppContainer",
-    "switch": "APPCONTAINER",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataLinkDelaySign",
-    "switch": "WINMDDELAYSIGN:NO",
-    "comment": "Windows Metadata Delay Sign",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "WindowsMetadataLinkDelaySign",
-    "switch": "WINMDDELAYSIGN",
-    "comment": "Windows Metadata Delay Sign",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "NoEntryPoint",
-    "switch": "NOENTRY",
-    "comment": "No Entry Point",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SetChecksum",
-    "switch": "RELEASE",
-    "comment": "Set Checksum",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "RandomizedBaseAddress",
-    "switch": "DYNAMICBASE:NO",
-    "comment": "Randomized Base Address",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "RandomizedBaseAddress",
-    "switch": "DYNAMICBASE",
-    "comment": "Randomized Base Address",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "FixedBaseAddress",
-    "switch": "FIXED:NO",
-    "comment": "Fixed Base Address",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "FixedBaseAddress",
-    "switch": "FIXED",
-    "comment": "Fixed Base Address",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "DataExecutionPrevention",
-    "switch": "NXCOMPAT:NO",
-    "comment": "Data Execution Prevention (DEP)",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "DataExecutionPrevention",
-    "switch": "NXCOMPAT",
-    "comment": "Data Execution Prevention (DEP)",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TurnOffAssemblyGeneration",
-    "switch": "NOASSEMBLY",
-    "comment": "Turn Off Assembly Generation",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SupportUnloadOfDelayLoadedDLL",
-    "switch": "DELAY:UNLOAD",
-    "comment": "Unload delay loaded DLL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "SupportNobindOfDelayLoadedDLL",
-    "switch": "DELAY:NOBIND",
-    "comment": "Nobind delay loaded DLL",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "Profile",
-    "switch": "PROFILE",
-    "comment": "Profile",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkDelaySign",
-    "switch": "DELAYSIGN:NO",
-    "comment": "Delay Sign",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "LinkDelaySign",
-    "switch": "DELAYSIGN",
-    "comment": "Delay Sign",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "CLRUnmanagedCodeCheck",
-    "switch": "CLRUNMANAGEDCODECHECK:NO",
-    "comment": "CLR Unmanaged Code Check",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "CLRUnmanagedCodeCheck",
-    "switch": "CLRUNMANAGEDCODECHECK",
-    "comment": "CLR Unmanaged Code Check",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "DetectOneDefinitionRule",
-    "switch": "ODR",
-    "comment": "Detect One Definition Rule violations",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "ImageHasSafeExceptionHandlers",
-    "switch": "SAFESEH:NO",
-    "comment": "Image Has Safe Exception Handlers",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "ImageHasSafeExceptionHandlers",
-    "switch": "SAFESEH",
-    "comment": "Image Has Safe Exception Handlers",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkDLL",
-    "switch": "DLL",
-    "comment": "",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AdditionalLibraryDirectories",
-    "switch": "LIBPATH:",
-    "comment": "Additional Library Directories",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "Natvis",
-    "switch": "NATVIS:",
-    "comment": "Natvis files",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "IgnoreSpecificDefaultLibraries",
-    "switch": "NODEFAULTLIB:",
-    "comment": "Ignore Specific Default Libraries",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AddModuleNamesToAssembly",
-    "switch": "ASSEMBLYMODULE:",
-    "comment": "Add Module to Assembly",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "EmbedManagedResourceFile",
-    "switch": "ASSEMBLYRESOURCE:",
-    "comment": "Embed Managed Resource File",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "ForceSymbolReferences",
-    "switch": "INCLUDE:",
-    "comment": "Force Symbol References",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "DelayLoadDLLs",
-    "switch": "DELAYLOAD:",
-    "comment": "Delay Loaded Dlls",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AssemblyLinkResource",
-    "switch": "ASSEMBLYLINKRESOURCE:",
-    "comment": "Assembly Link Resource",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "AdditionalManifestDependencies",
-    "switch": "MANIFESTDEPENDENCY:",
-    "comment": "Additional Manifest Dependencies",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "ManifestInput",
-    "switch": "manifestinput:",
-    "comment": "Manifest Input",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "OutputFile",
-    "switch": "OUT:",
-    "comment": "Output File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "Version",
-    "switch": "VERSION:",
-    "comment": "Version",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "SpecifySectionAttributes",
-    "switch": "SECTION:",
-    "comment": "Specify Section Attributes",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MSDOSStubFileName",
-    "switch": "STUB:",
-    "comment": "MS-DOS Stub File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ModuleDefinitionFile",
-    "switch": "DEF:",
-    "comment": "Module Definition File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ManifestFile",
-    "switch": "ManifestFile:",
-    "comment": "Manifest File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ProgramDatabaseFile",
-    "switch": "PDB:",
-    "comment": "Generate Program Database File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "StripPrivateSymbols",
-    "switch": "PDBSTRIPPED:",
-    "comment": "Strip Private Symbols",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MapFileName",
-    "switch": "MAP:",
-    "comment": "Map File Name",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "HeapReserveSize",
-    "switch": "HEAP:",
-    "comment": "Heap Reserve Size",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "HeapCommitSize",
-    "switch": "HEAP",
-    "comment": "Heap Commit Size",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "StackReserveSize",
-    "switch": "STACK:",
-    "comment": "Stack Reserve Size",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "StackCommitSize",
-    "switch": "STACK",
-    "comment": "Stack Commit Size",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "FunctionOrder",
-    "switch": "ORDER:@",
-    "comment": "Function Order",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ProfileGuidedDatabase",
-    "switch": "PGD:",
-    "comment": "Profile Guided Database",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MidlCommandFile",
-    "switch": "MIDL:@",
-    "comment": "MIDL Commands",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MergedIDLBaseFileName",
-    "switch": "IDLOUT:",
-    "comment": "Merged IDL Base File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "TypeLibraryFile",
-    "switch": "TLBOUT:",
-    "comment": "Type Library",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "WindowsMetadataFile",
-    "switch": "WINMDFILE:",
-    "comment": "Windows Metadata File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "WindowsMetadataLinkKeyFile",
-    "switch": "WINMDKEYFILE:",
-    "comment": "Windows Metadata Key File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "WindowsMetadataKeyContainer",
-    "switch": "WINMDKEYCONTAINER:",
-    "comment": "Windows Metadata Key Container",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "EntryPointSymbol",
-    "switch": "ENTRY:",
-    "comment": "Entry Point",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "BaseAddress",
-    "switch": "BASE:",
-    "comment": "Base Address",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ImportLibrary",
-    "switch": "IMPLIB:",
-    "comment": "Import Library",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "MergeSections",
-    "switch": "MERGE:",
-    "comment": "Merge Sections",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "LinkKeyFile",
-    "switch": "KEYFILE:",
-    "comment": "Key File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "KeyContainer",
-    "switch": "KEYCONTAINER:",
-    "comment": "Key Container",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "TypeLibraryResourceID",
-    "switch": "TLBID:",
-    "comment": "TypeLib Resource ID",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "SectionAlignment",
-    "switch": "ALIGN:",
-    "comment": "SectionAlignment",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  }
-]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v14_LIB.json b/share/cmake-3.18/Templates/MSBuild/FlagTables/v14_LIB.json
deleted file mode 100644
index 5990ed1..0000000
--- a/share/cmake-3.18/Templates/MSBuild/FlagTables/v14_LIB.json
+++ /dev/null
@@ -1,304 +0,0 @@
-[
-  {
-    "name": "ErrorReporting",
-    "switch": "ERRORREPORT:PROMPT",
-    "comment": "PromptImmediately",
-    "value": "PromptImmediately",
-    "flags": []
-  },
-  {
-    "name": "ErrorReporting",
-    "switch": "ERRORREPORT:QUEUE",
-    "comment": "Queue For Next Login",
-    "value": "QueueForNextLogin",
-    "flags": []
-  },
-  {
-    "name": "ErrorReporting",
-    "switch": "ERRORREPORT:SEND",
-    "comment": "Send Error Report",
-    "value": "SendErrorReport",
-    "flags": []
-  },
-  {
-    "name": "ErrorReporting",
-    "switch": "ERRORREPORT:NONE",
-    "comment": "No Error Report",
-    "value": "NoErrorReport",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:ARM",
-    "comment": "MachineARM",
-    "value": "MachineARM",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:ARM64",
-    "comment": "MachineARM64",
-    "value": "MachineARM64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:EBC",
-    "comment": "MachineEBC",
-    "value": "MachineEBC",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:IA64",
-    "comment": "MachineIA64",
-    "value": "MachineIA64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPS",
-    "comment": "MachineMIPS",
-    "value": "MachineMIPS",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPS16",
-    "comment": "MachineMIPS16",
-    "value": "MachineMIPS16",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPSFPU",
-    "comment": "MachineMIPSFPU",
-    "value": "MachineMIPSFPU",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:MIPSFPU16",
-    "comment": "MachineMIPSFPU16",
-    "value": "MachineMIPSFPU16",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:SH4",
-    "comment": "MachineSH4",
-    "value": "MachineSH4",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:THUMB",
-    "comment": "MachineTHUMB",
-    "value": "MachineTHUMB",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:X64",
-    "comment": "MachineX64",
-    "value": "MachineX64",
-    "flags": []
-  },
-  {
-    "name": "TargetMachine",
-    "switch": "MACHINE:X86",
-    "comment": "MachineX86",
-    "value": "MachineX86",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:CONSOLE",
-    "comment": "Console",
-    "value": "Console",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:WINDOWS",
-    "comment": "Windows",
-    "value": "Windows",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:NATIVE",
-    "comment": "Native",
-    "value": "Native",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_APPLICATION",
-    "comment": "EFI Application",
-    "value": "EFI Application",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
-    "comment": "EFI Boot Service Driver",
-    "value": "EFI Boot Service Driver",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_ROM",
-    "comment": "EFI ROM",
-    "value": "EFI ROM",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
-    "comment": "EFI Runtime",
-    "value": "EFI Runtime",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:WINDOWSCE",
-    "comment": "WindowsCE",
-    "value": "WindowsCE",
-    "flags": []
-  },
-  {
-    "name": "SubSystem",
-    "switch": "SUBSYSTEM:POSIX",
-    "comment": "POSIX",
-    "value": "POSIX",
-    "flags": []
-  },
-  {
-    "name": "SuppressStartupBanner",
-    "switch": "NOLOGO",
-    "comment": "Suppress Startup Banner",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "IgnoreAllDefaultLibraries",
-    "switch": "NODEFAULTLIB",
-    "comment": "Ignore All Default Libraries",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "TreatLibWarningAsErrors",
-    "switch": "WX:NO",
-    "comment": "Treat Lib Warning As Errors",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "TreatLibWarningAsErrors",
-    "switch": "WX",
-    "comment": "Treat Lib Warning As Errors",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "Verbose",
-    "switch": "VERBOSE",
-    "comment": "Verbose",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "LinkTimeCodeGeneration",
-    "switch": "LTCG",
-    "comment": "Link Time Code Generation",
-    "value": "true",
-    "flags": []
-  },
-  {
-    "name": "AdditionalLibraryDirectories",
-    "switch": "LIBPATH:",
-    "comment": "Additional Library Directories",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "IgnoreSpecificDefaultLibraries",
-    "switch": "NODEFAULTLIB:",
-    "comment": "Ignore Specific Default Libraries",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "ExportNamedFunctions",
-    "switch": "EXPORT:",
-    "comment": "Export Named Functions",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "RemoveObjects",
-    "switch": "REMOVE:",
-    "comment": "Remove Objects",
-    "value": "",
-    "flags": [
-      "UserValue",
-      "SemicolonAppendable"
-    ]
-  },
-  {
-    "name": "OutputFile",
-    "switch": "OUT:",
-    "comment": "Output File",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ModuleDefinitionFile",
-    "switch": "DEF:",
-    "comment": "Module Definition File Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "ForceSymbolReferences",
-    "switch": "INCLUDE:",
-    "comment": "Force Symbol References",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "DisplayLibrary",
-    "switch": "LIST:",
-    "comment": "Display Library to standard output",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
-    "name": "Name",
-    "switch": "NAME:",
-    "comment": "Name",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  }
-]
diff --git a/share/cmake-3.18/Templates/TestDriver.cxx.in b/share/cmake-3.18/Templates/TestDriver.cxx.in
deleted file mode 100644
index 053f1ee..0000000
--- a/share/cmake-3.18/Templates/TestDriver.cxx.in
+++ /dev/null
@@ -1,146 +0,0 @@
-#include <ctype.h>  /* NOLINT */
-#include <stdio.h>  /* NOLINT */
-#include <stdlib.h> /* NOLINT */
-#include <string.h> /* NOLINT */
-
-#if defined(_MSC_VER)
-#pragma warning(disable : 4996) /* deprecation */
-#endif
-
-@CMAKE_TESTDRIVER_EXTRA_INCLUDES@
-
-/* Forward declare test functions. */
-@CMAKE_FORWARD_DECLARE_TESTS@
-
-#ifdef __cplusplus
-#  define CM_CAST(TYPE, EXPR) static_cast<TYPE>(EXPR)
-#  if __cplusplus >= 201103L
-#    define CM_NULL nullptr
-#  else
-#    define CM_NULL NULL
-#  endif
-#else
-#  define CM_CAST(TYPE, EXPR) (TYPE)(EXPR)
-#  define CM_NULL NULL
-#endif
-
-/* Create map.  */
-
-typedef int (*MainFuncPointer)(int, char* []); /* NOLINT */
-typedef struct /* NOLINT */
-{
-  const char* name;
-  MainFuncPointer func;
-} functionMapEntry;
-
-static functionMapEntry cmakeGeneratedFunctionMapEntries[] = {
-  @CMAKE_FUNCTION_TABLE_ENTIRES@
-  { CM_NULL, CM_NULL } /* NOLINT */
-};
-
-static const int NumTests = CM_CAST(int,
-  sizeof(cmakeGeneratedFunctionMapEntries) / sizeof(functionMapEntry)) - 1;
-
-/* Allocate and create a lowercased copy of string
-   (note that it has to be free'd manually) */
-static char* lowercase(const char* string)
-{
-  char *new_string;
-  char *p;
-  size_t stringSize;
-
-  stringSize = CM_CAST(size_t, strlen(string) + 1);
-  new_string = CM_CAST(char*, malloc(sizeof(char) * stringSize));
-
-  if (new_string == CM_NULL) { /* NOLINT */
-    return CM_NULL;            /* NOLINT */
-  }
-  strcpy(new_string, string);  /* NOLINT */
-  for (p = new_string; *p != 0; ++p) {
-    *p = CM_CAST(char, tolower(*p));
-  }
-  return new_string;
-}
-
-int main(int ac, char* av[])
-{
-  int i;
-  int testNum = 0;
-  int partial_match;
-  char *arg;
-  int testToRun = -1;
-
-  @CMAKE_TESTDRIVER_ARGVC_FUNCTION@
-
-  /* If no test name was given */
-  /* process command line with user function.  */
-  if (ac < 2) {
-    /* Ask for a test.  */
-    printf("Available tests:\n");
-    for (i = 0; i < NumTests; ++i) {
-      printf("%3d. %s\n", i, cmakeGeneratedFunctionMapEntries[i].name);
-    }
-    printf("To run a test, enter the test number: ");
-    fflush(stdout);
-    if (scanf("%d", &testNum) != 1) {
-      printf("Couldn't parse that input as a number\n");
-      return -1;
-    }
-    if (testNum >= NumTests) {
-      printf("%3d is an invalid test number.\n", testNum);
-      return -1;
-    }
-    testToRun = testNum;
-    ac--;
-    av++;
-  }
-  partial_match = 0;
-  arg = CM_NULL; /* NOLINT */
-  /* If partial match is requested.  */
-  if (testToRun == -1 && ac > 1) {
-    partial_match = (strcmp(av[1], "-R") == 0) ? 1 : 0;
-  }
-  if (partial_match != 0 && ac < 3) {
-    printf("-R needs an additional parameter.\n");
-    return -1;
-  }
-  if (testToRun == -1) {
-    arg = lowercase(av[1 + partial_match]);
-  }
-  for (i = 0; i < NumTests && testToRun == -1; ++i) {
-    char *test_name = lowercase(cmakeGeneratedFunctionMapEntries[i].name);
-    if (partial_match != 0 && strstr(test_name, arg) != CM_NULL) { /* NOLINT */
-      testToRun = i;
-      ac -= 2;
-      av += 2;
-    } else if (partial_match == 0 && strcmp(test_name, arg) == 0) {
-      testToRun = i;
-      ac--;
-      av++;
-    }
-    free(test_name);
-  }
-  free(arg);
-  if (testToRun != -1) {
-    int result;
-@CMAKE_TESTDRIVER_BEFORE_TESTMAIN@
-    if (testToRun < 0 || testToRun >= NumTests) {
-      printf("testToRun was modified by TestDriver code to an invalid value: "
-             "%3d.\n",
-             testNum);
-      return -1;
-    }
-    result = (*cmakeGeneratedFunctionMapEntries[testToRun].func)(ac, av);
-@CMAKE_TESTDRIVER_AFTER_TESTMAIN@
-    return result;
-  }
-
-  /* Nothing was run, display the test names.  */
-  printf("Available tests:\n");
-  for (i = 0; i < NumTests; ++i) {
-    printf("%3d. %s\n", i, cmakeGeneratedFunctionMapEntries[i].name);
-  }
-  printf("Failed: %s is an invalid test name.\n", av[1]);
-
-  return -1;
-}
diff --git a/share/cmake-3.22/Help/command/DEVICE_LINK_OPTIONS.txt b/share/cmake-3.22/Help/command/DEVICE_LINK_OPTIONS.txt
new file mode 100644
index 0000000..3d50208
--- /dev/null
+++ b/share/cmake-3.22/Help/command/DEVICE_LINK_OPTIONS.txt
@@ -0,0 +1,14 @@
+Host And Device Specific Link Options
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.18
+  When a device link step is involved, which is controlled by
+  :prop_tgt:`CUDA_SEPARABLE_COMPILATION` and
+  :prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` properties and policy :policy:`CMP0105`,
+  the raw options will be delivered to the host and device link steps (wrapped in
+  ``-Xcompiler`` or equivalent for device link). Options wrapped with
+  ``$<DEVICE_LINK:...>``
+  :manual:`generator expression <cmake-generator-expressions(7)>` will be used
+  only for the device link step. Options wrapped with ``$<HOST_LINK:...>``
+  :manual:`generator expression <cmake-generator-expressions(7)>` will be used
+  only for the host link step.
diff --git a/share/cmake-3.22/Help/command/FIND_XXX.txt b/share/cmake-3.22/Help/command/FIND_XXX.txt
new file mode 100644
index 0000000..5b63e1c
--- /dev/null
+++ b/share/cmake-3.22/Help/command/FIND_XXX.txt
@@ -0,0 +1,184 @@
+A short-hand signature is:
+
+.. parsed-literal::
+
+   |FIND_XXX| (<VAR> name1 [path1 path2 ...])
+
+The general signature is:
+
+.. parsed-literal::
+
+   |FIND_XXX| (
+             <VAR>
+             name | |NAMES|
+             [HINTS [path | ENV var]... ]
+             [PATHS [path | ENV var]... ]
+             [PATH_SUFFIXES suffix1 [suffix2 ...]]
+             [DOC "cache documentation string"]
+             [NO_CACHE]
+             [REQUIRED]
+             [NO_DEFAULT_PATH]
+             [NO_PACKAGE_ROOT_PATH]
+             [NO_CMAKE_PATH]
+             [NO_CMAKE_ENVIRONMENT_PATH]
+             [NO_SYSTEM_ENVIRONMENT_PATH]
+             [NO_CMAKE_SYSTEM_PATH]
+             [CMAKE_FIND_ROOT_PATH_BOTH |
+              ONLY_CMAKE_FIND_ROOT_PATH |
+              NO_CMAKE_FIND_ROOT_PATH]
+            )
+
+This command is used to find a |SEARCH_XXX_DESC|.
+A cache entry, or a normal variable if ``NO_CACHE`` is specified,
+named by ``<VAR>`` is created to store the result of this command.
+If the |SEARCH_XXX| is found the result is stored in the variable
+and the search will not be repeated unless the variable is cleared.
+If nothing is found, the result will be ``<VAR>-NOTFOUND``.
+
+Options include:
+
+``NAMES``
+  Specify one or more possible names for the |SEARCH_XXX|.
+
+  When using this to specify names with and without a version
+  suffix, we recommend specifying the unversioned name first
+  so that locally-built packages can be found before those
+  provided by distributions.
+
+``HINTS``, ``PATHS``
+  Specify directories to search in addition to the default locations.
+  The ``ENV var`` sub-option reads paths from a system environment
+  variable.
+
+``PATH_SUFFIXES``
+  Specify additional subdirectories to check below each directory
+  location otherwise considered.
+
+``DOC``
+  Specify the documentation string for the ``<VAR>`` cache entry.
+
+``NO_CACHE``
+  .. versionadded:: 3.21
+
+  The result of the search will be stored in a normal variable rather than
+  a cache entry.
+
+  .. note::
+
+    If the variable is already set before the call (as a normal or cache
+    variable) then the search will not occur.
+
+  .. warning::
+
+    This option should be used with caution because it can greatly increase
+    the cost of repeated configure steps.
+
+``REQUIRED``
+  .. versionadded:: 3.18
+
+  Stop processing with an error message if nothing is found, otherwise
+  the search will be attempted again the next time |FIND_XXX| is invoked
+  with the same variable.
+
+If ``NO_DEFAULT_PATH`` is specified, then no additional paths are
+added to the search.
+If ``NO_DEFAULT_PATH`` is not specified, the search process is as follows:
+
+.. |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX_SUBDIR| replace::
+   |prefix_XXX_SUBDIR| for each ``<prefix>`` in the
+   :variable:`<PackageName>_ROOT` CMake variable and the
+   :envvar:`<PackageName>_ROOT` environment variable if
+   called from within a find module loaded by
+   :command:`find_package(<PackageName>)`
+
+.. |CMAKE_PREFIX_PATH_XXX_SUBDIR| replace::
+   |prefix_XXX_SUBDIR| for each ``<prefix>`` in :variable:`CMAKE_PREFIX_PATH`
+
+.. |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR| replace::
+   |prefix_XXX_SUBDIR| for each ``<prefix>/[s]bin`` in ``PATH``, and
+   |entry_XXX_SUBDIR| for other entries in ``PATH``
+
+.. |CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR| replace::
+   |prefix_XXX_SUBDIR| for each ``<prefix>`` in
+   :variable:`CMAKE_SYSTEM_PREFIX_PATH`
+
+1. .. versionadded:: 3.12
+    If called from within a find module or any other script loaded by a call to
+    :command:`find_package(<PackageName>)`, search prefixes unique to the
+    current package being found.  Specifically, look in the
+    :variable:`<PackageName>_ROOT` CMake variable and the
+    :envvar:`<PackageName>_ROOT` environment variable.
+    The package root variables are maintained as a stack, so if called from
+    nested find modules or config packages, root paths from the parent's find
+    module or config package will be searched after paths from the current
+    module or package.  In other words, the search order would be
+    ``<CurrentPackage>_ROOT``, ``ENV{<CurrentPackage>_ROOT}``,
+    ``<ParentPackage>_ROOT``, ``ENV{<ParentPackage>_ROOT}``, etc.
+    This can be skipped if ``NO_PACKAGE_ROOT_PATH`` is passed or by setting
+    the :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` to ``FALSE``.
+    See policy :policy:`CMP0074`.
+
+   * |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX|
+
+2. Search paths specified in cmake-specific cache variables.
+   These are intended to be used on the command line with a ``-DVAR=value``.
+   The values are interpreted as :ref:`semicolon-separated lists <CMake Language Lists>`.
+   This can be skipped if ``NO_CMAKE_PATH`` is passed or by setting the
+   :variable:`CMAKE_FIND_USE_CMAKE_PATH` to ``FALSE``.
+
+   * |CMAKE_PREFIX_PATH_XXX|
+   * |CMAKE_XXX_PATH|
+   * |CMAKE_XXX_MAC_PATH|
+
+3. Search paths specified in cmake-specific environment variables.
+   These are intended to be set in the user's shell configuration,
+   and therefore use the host's native path separator
+   (``;`` on Windows and ``:`` on UNIX).
+   This can be skipped if ``NO_CMAKE_ENVIRONMENT_PATH`` is passed or
+   by setting the :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH` to ``FALSE``.
+
+   * |CMAKE_PREFIX_PATH_XXX|
+   * |CMAKE_XXX_PATH|
+   * |CMAKE_XXX_MAC_PATH|
+
+4. Search the paths specified by the ``HINTS`` option.
+   These should be paths computed by system introspection, such as a
+   hint provided by the location of another item already found.
+   Hard-coded guesses should be specified with the ``PATHS`` option.
+
+5. Search the standard system environment variables.
+   This can be skipped if ``NO_SYSTEM_ENVIRONMENT_PATH`` is passed or by
+   setting the :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH` to ``FALSE``.
+
+   * |SYSTEM_ENVIRONMENT_PATH_XXX|
+   * |SYSTEM_ENVIRONMENT_PATH_WINDOWS_XXX|
+
+6. Search cmake variables defined in the Platform files
+   for the current system.  This can be skipped if ``NO_CMAKE_SYSTEM_PATH``
+   is passed or by setting the :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`
+   to ``FALSE``.
+
+   * |CMAKE_SYSTEM_PREFIX_PATH_XXX|
+   * |CMAKE_SYSTEM_XXX_PATH|
+   * |CMAKE_SYSTEM_XXX_MAC_PATH|
+
+   The platform paths that these variables contain are locations that
+   typically include installed software. An example being ``/usr/local`` for
+   UNIX based platforms.
+
+7. Search the paths specified by the PATHS option
+   or in the short-hand version of the command.
+   These are typically hard-coded guesses.
+
+.. versionadded:: 3.16
+  Added ``CMAKE_FIND_USE_<CATEGORY>_PATH`` variables to globally disable
+  various search locations.
+
+.. |FIND_ARGS_XXX| replace:: <VAR> NAMES name
+
+On macOS the :variable:`CMAKE_FIND_FRAMEWORK` and
+:variable:`CMAKE_FIND_APPBUNDLE` variables determine the order of
+preference between Apple-style and unix-style package components.
+
+.. include:: FIND_XXX_ROOT.txt
+.. include:: FIND_XXX_ORDER.txt
diff --git a/share/cmake-3.18/Help/command/FIND_XXX_ORDER.txt b/share/cmake-3.22/Help/command/FIND_XXX_ORDER.txt
similarity index 100%
rename from share/cmake-3.18/Help/command/FIND_XXX_ORDER.txt
rename to share/cmake-3.22/Help/command/FIND_XXX_ORDER.txt
diff --git a/share/cmake-3.18/Help/command/FIND_XXX_ROOT.txt b/share/cmake-3.22/Help/command/FIND_XXX_ROOT.txt
similarity index 100%
rename from share/cmake-3.18/Help/command/FIND_XXX_ROOT.txt
rename to share/cmake-3.22/Help/command/FIND_XXX_ROOT.txt
diff --git a/share/cmake-3.22/Help/command/LINK_OPTIONS_LINKER.txt b/share/cmake-3.22/Help/command/LINK_OPTIONS_LINKER.txt
new file mode 100644
index 0000000..e71e5ea
--- /dev/null
+++ b/share/cmake-3.22/Help/command/LINK_OPTIONS_LINKER.txt
@@ -0,0 +1,25 @@
+Handling Compiler Driver Differences
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+To pass options to the linker tool, each compiler driver has its own syntax.
+The ``LINKER:`` prefix and ``,`` separator can be used to specify, in a portable
+way, options to pass to the linker tool. ``LINKER:`` is replaced by the
+appropriate driver option and ``,`` by the appropriate driver separator.
+The driver prefix and driver separator are given by the values of the
+:variable:`CMAKE_<LANG>_LINKER_WRAPPER_FLAG` and
+:variable:`CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP` variables.
+
+For example, ``"LINKER:-z,defs"`` becomes ``-Xlinker -z -Xlinker defs`` for
+``Clang`` and ``-Wl,-z,defs`` for ``GNU GCC``.
+
+The ``LINKER:`` prefix can be specified as part of a ``SHELL:`` prefix
+expression.
+
+The ``LINKER:`` prefix supports, as an alternative syntax, specification of
+arguments using the ``SHELL:`` prefix and space as separator. The previous
+example then becomes ``"LINKER:SHELL:-z defs"``.
+
+.. note::
+
+  Specifying the ``SHELL:`` prefix anywhere other than at the beginning of the
+  ``LINKER:`` prefix is not supported.
diff --git a/share/cmake-3.22/Help/command/OPTIONS_SHELL.txt b/share/cmake-3.22/Help/command/OPTIONS_SHELL.txt
new file mode 100644
index 0000000..4171f01
--- /dev/null
+++ b/share/cmake-3.22/Help/command/OPTIONS_SHELL.txt
@@ -0,0 +1,15 @@
+Option De-duplication
+^^^^^^^^^^^^^^^^^^^^^
+
+The final set of options used for a target is constructed by
+accumulating options from the current target and the usage requirements of
+its dependencies.  The set of options is de-duplicated to avoid repetition.
+
+.. versionadded:: 3.12
+  While beneficial for individual options, the de-duplication step can break
+  up option groups.  For example, ``-option A -option B`` becomes
+  ``-option A B``.  One may specify a group of options using shell-like
+  quoting along with a ``SHELL:`` prefix.  The ``SHELL:`` prefix is dropped,
+  and the rest of the option string is parsed using the
+  :command:`separate_arguments` ``UNIX_COMMAND`` mode. For example,
+  ``"SHELL:-option A" "SHELL:-option B"`` becomes ``-option A -option B``.
diff --git a/share/cmake-3.22/Help/command/add_compile_definitions.rst b/share/cmake-3.22/Help/command/add_compile_definitions.rst
new file mode 100644
index 0000000..48e33be
--- /dev/null
+++ b/share/cmake-3.22/Help/command/add_compile_definitions.rst
@@ -0,0 +1,27 @@
+add_compile_definitions
+-----------------------
+
+.. versionadded:: 3.12
+
+Add preprocessor definitions to the compilation of source files.
+
+.. code-block:: cmake
+
+  add_compile_definitions(<definition> ...)
+
+Adds preprocessor definitions to the compiler command line.
+
+The preprocessor definitions are added to the :prop_dir:`COMPILE_DEFINITIONS`
+directory property for the current ``CMakeLists`` file. They are also added to
+the :prop_tgt:`COMPILE_DEFINITIONS` target property for each target in the
+current ``CMakeLists`` file.
+
+Definitions are specified using the syntax ``VAR`` or ``VAR=value``.
+Function-style definitions are not supported. CMake will automatically
+escape the value correctly for the native build system (note that CMake
+language syntax may require escapes to specify some values).
+
+Arguments to ``add_compile_definitions`` may use "generator expressions" with
+the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
+manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
+manual for more on defining buildsystem properties.
diff --git a/share/cmake-3.18/Help/command/add_compile_options.rst b/share/cmake-3.22/Help/command/add_compile_options.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/add_compile_options.rst
rename to share/cmake-3.22/Help/command/add_compile_options.rst
diff --git a/share/cmake-3.22/Help/command/add_custom_command.rst b/share/cmake-3.22/Help/command/add_custom_command.rst
new file mode 100644
index 0000000..b45a079
--- /dev/null
+++ b/share/cmake-3.22/Help/command/add_custom_command.rst
@@ -0,0 +1,447 @@
+add_custom_command
+------------------
+
+Add a custom build rule to the generated build system.
+
+There are two main signatures for ``add_custom_command``.
+
+Generating Files
+^^^^^^^^^^^^^^^^
+
+The first signature is for adding a custom command to produce an output:
+
+.. code-block:: cmake
+
+  add_custom_command(OUTPUT output1 [output2 ...]
+                     COMMAND command1 [ARGS] [args1...]
+                     [COMMAND command2 [ARGS] [args2...] ...]
+                     [MAIN_DEPENDENCY depend]
+                     [DEPENDS [depends...]]
+                     [BYPRODUCTS [files...]]
+                     [IMPLICIT_DEPENDS <lang1> depend1
+                                      [<lang2> depend2] ...]
+                     [WORKING_DIRECTORY dir]
+                     [COMMENT comment]
+                     [DEPFILE depfile]
+                     [JOB_POOL job_pool]
+                     [VERBATIM] [APPEND] [USES_TERMINAL]
+                     [COMMAND_EXPAND_LISTS])
+
+This defines a command to generate specified ``OUTPUT`` file(s).
+A target created in the same directory (``CMakeLists.txt`` file)
+that specifies any output of the custom command as a source file
+is given a rule to generate the file using the command at build time.
+Do not list the output in more than one independent target that
+may build in parallel or the two instances of the rule may conflict
+(instead use the :command:`add_custom_target` command to drive the
+command and make the other targets depend on that one).
+In makefile terms this creates a new target in the following form::
+
+  OUTPUT: MAIN_DEPENDENCY DEPENDS
+          COMMAND
+
+The options are:
+
+``APPEND``
+  Append the ``COMMAND`` and ``DEPENDS`` option values to the custom
+  command for the first output specified.  There must have already
+  been a previous call to this command with the same output.
+
+  If the previous call specified the output via a generator expression,
+  the output specified by the current call must match in at least one
+  configuration after evaluating generator expressions.  In this case,
+  the appended commands and dependencies apply to all configurations.
+
+  The ``COMMENT``, ``MAIN_DEPENDENCY``, and ``WORKING_DIRECTORY``
+  options are currently ignored when APPEND is given, but may be
+  used in the future.
+
+``BYPRODUCTS``
+  .. versionadded:: 3.2
+
+  Specify the files the command is expected to produce but whose
+  modification time may or may not be newer than the dependencies.
+  If a byproduct name is a relative path it will be interpreted
+  relative to the build tree directory corresponding to the
+  current source directory.
+  Each byproduct file will be marked with the :prop_sf:`GENERATED`
+  source file property automatically.
+
+  Explicit specification of byproducts is supported by the
+  :generator:`Ninja` generator to tell the ``ninja`` build tool
+  how to regenerate byproducts when they are missing.  It is
+  also useful when other build rules (e.g. custom commands)
+  depend on the byproducts.  Ninja requires a build rule for any
+  generated file on which another rule depends even if there are
+  order-only dependencies to ensure the byproducts will be
+  available before their dependents build.
+
+  The :ref:`Makefile Generators` will remove ``BYPRODUCTS`` and other
+  :prop_sf:`GENERATED` files during ``make clean``.
+
+  .. versionadded:: 3.20
+    Arguments to ``BYPRODUCTS`` may use a restricted set of
+    :manual:`generator expressions <cmake-generator-expressions(7)>`.
+    :ref:`Target-dependent expressions <Target-Dependent Queries>` are not
+    permitted.
+
+``COMMAND``
+  Specify the command-line(s) to execute at build time.
+  If more than one ``COMMAND`` is specified they will be executed in order,
+  but *not* necessarily composed into a stateful shell or batch script.
+  (To run a full script, use the :command:`configure_file` command or the
+  :command:`file(GENERATE)` command to create it, and then specify
+  a ``COMMAND`` to launch it.)
+  The optional ``ARGS`` argument is for backward compatibility and
+  will be ignored.
+
+  If ``COMMAND`` specifies an executable target name (created by the
+  :command:`add_executable` command), it will automatically be replaced
+  by the location of the executable created at build time if either of
+  the following is true:
+
+  * The target is not being cross-compiled (i.e. the
+    :variable:`CMAKE_CROSSCOMPILING` variable is not set to true).
+  * .. versionadded:: 3.6
+      The target is being cross-compiled and an emulator is provided (i.e.
+      its :prop_tgt:`CROSSCOMPILING_EMULATOR` target property is set).
+      In this case, the contents of :prop_tgt:`CROSSCOMPILING_EMULATOR` will be
+      prepended to the command before the location of the target executable.
+
+  If neither of the above conditions are met, it is assumed that the
+  command name is a program to be found on the ``PATH`` at build time.
+
+  Arguments to ``COMMAND`` may use
+  :manual:`generator expressions <cmake-generator-expressions(7)>`.
+  Use the :genex:`TARGET_FILE` generator expression to refer to the location
+  of a target later in the command line (i.e. as a command argument rather
+  than as the command to execute).
+
+  Whenever one of the following target based generator expressions are used as
+  a command to execute or is mentioned in a command argument, a target-level
+  dependency will be added automatically so that the mentioned target will be
+  built before any target using this custom command
+  (see policy :policy:`CMP0112`).
+
+    * ``TARGET_FILE``
+    * ``TARGET_LINKER_FILE``
+    * ``TARGET_SONAME_FILE``
+    * ``TARGET_PDB_FILE``
+
+  This target-level dependency does NOT add a file-level dependency that would
+  cause the custom command to re-run whenever the executable is recompiled.
+  List target names with the ``DEPENDS`` option to add such file-level
+  dependencies.
+
+
+``COMMENT``
+  Display the given message before the commands are executed at
+  build time.
+
+``DEPENDS``
+  Specify files on which the command depends.  Each argument is converted
+  to a dependency as follows:
+
+  1. If the argument is the name of a target (created by the
+     :command:`add_custom_target`, :command:`add_executable`, or
+     :command:`add_library` command) a target-level dependency is
+     created to make sure the target is built before any target
+     using this custom command.  Additionally, if the target is an
+     executable or library, a file-level dependency is created to
+     cause the custom command to re-run whenever the target is
+     recompiled.
+
+  2. If the argument is an absolute path, a file-level dependency
+     is created on that path.
+
+  3. If the argument is the name of a source file that has been
+     added to a target or on which a source file property has been set,
+     a file-level dependency is created on that source file.
+
+  4. If the argument is a relative path and it exists in the current
+     source directory, a file-level dependency is created on that
+     file in the current source directory.
+
+  5. Otherwise, a file-level dependency is created on that path relative
+     to the current binary directory.
+
+  If any dependency is an ``OUTPUT`` of another custom command in the same
+  directory (``CMakeLists.txt`` file), CMake automatically brings the other
+  custom command into the target in which this command is built.
+
+  .. versionadded:: 3.16
+    A target-level dependency is added if any dependency is listed as
+    ``BYPRODUCTS`` of a target or any of its build events in the same
+    directory to ensure the byproducts will be available.
+
+  If ``DEPENDS`` is not specified, the command will run whenever
+  the ``OUTPUT`` is missing; if the command does not actually
+  create the ``OUTPUT``, the rule will always run.
+
+  .. versionadded:: 3.1
+    Arguments to ``DEPENDS`` may use
+    :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+``COMMAND_EXPAND_LISTS``
+  .. versionadded:: 3.8
+
+  Lists in ``COMMAND`` arguments will be expanded, including those
+  created with
+  :manual:`generator expressions <cmake-generator-expressions(7)>`,
+  allowing ``COMMAND`` arguments such as
+  ``${CC} "-I$<JOIN:$<TARGET_PROPERTY:foo,INCLUDE_DIRECTORIES>,;-I>" foo.cc``
+  to be properly expanded.
+
+``IMPLICIT_DEPENDS``
+  Request scanning of implicit dependencies of an input file.
+  The language given specifies the programming language whose
+  corresponding dependency scanner should be used.
+  Currently only ``C`` and ``CXX`` language scanners are supported.
+  The language has to be specified for every file in the
+  ``IMPLICIT_DEPENDS`` list.  Dependencies discovered from the
+  scanning are added to those of the custom command at build time.
+  Note that the ``IMPLICIT_DEPENDS`` option is currently supported
+  only for Makefile generators and will be ignored by other generators.
+
+  .. note::
+
+    This option cannot be specified at the same time as ``DEPFILE`` option.
+
+``JOB_POOL``
+  .. versionadded:: 3.15
+
+  Specify a :prop_gbl:`pool <JOB_POOLS>` for the :generator:`Ninja`
+  generator. Incompatible with ``USES_TERMINAL``, which implies
+  the ``console`` pool.
+  Using a pool that is not defined by :prop_gbl:`JOB_POOLS` causes
+  an error by ninja at build time.
+
+``MAIN_DEPENDENCY``
+  Specify the primary input source file to the command.  This is
+  treated just like any value given to the ``DEPENDS`` option
+  but also suggests to Visual Studio generators where to hang
+  the custom command. Each source file may have at most one command
+  specifying it as its main dependency. A compile command (i.e. for a
+  library or an executable) counts as an implicit main dependency which
+  gets silently overwritten by a custom command specification.
+
+``OUTPUT``
+  Specify the output files the command is expected to produce.
+  If an output name is a relative path it will be interpreted
+  relative to the build tree directory corresponding to the
+  current source directory.
+  Each output file will be marked with the :prop_sf:`GENERATED`
+  source file property automatically.
+  If the output of the custom command is not actually created
+  as a file on disk it should be marked with the :prop_sf:`SYMBOLIC`
+  source file property.
+
+  .. versionadded:: 3.20
+    Arguments to ``OUTPUT`` may use a restricted set of
+    :manual:`generator expressions <cmake-generator-expressions(7)>`.
+    :ref:`Target-dependent expressions <Target-Dependent Queries>` are not
+    permitted.
+
+``USES_TERMINAL``
+  .. versionadded:: 3.2
+
+  The command will be given direct access to the terminal if possible.
+  With the :generator:`Ninja` generator, this places the command in
+  the ``console`` :prop_gbl:`pool <JOB_POOLS>`.
+
+``VERBATIM``
+  All arguments to the commands will be escaped properly for the
+  build tool so that the invoked command receives each argument
+  unchanged.  Note that one level of escapes is still used by the
+  CMake language processor before add_custom_command even sees the
+  arguments.  Use of ``VERBATIM`` is recommended as it enables
+  correct behavior.  When ``VERBATIM`` is not given the behavior
+  is platform specific because there is no protection of
+  tool-specific special characters.
+
+``WORKING_DIRECTORY``
+  Execute the command with the given current working directory.
+  If it is a relative path it will be interpreted relative to the
+  build tree directory corresponding to the current source directory.
+
+  .. versionadded:: 3.13
+    Arguments to ``WORKING_DIRECTORY`` may use
+    :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+``DEPFILE``
+  .. versionadded:: 3.7
+
+  Specify a ``.d`` depfile which holds dependencies for the custom command.
+  It is usually emitted by the custom command itself.  This keyword may only
+  be used if the generator supports it, as detailed below.
+
+  .. versionadded:: 3.7
+    The :generator:`Ninja` generator supports ``DEPFILE`` since the keyword
+    was first added.
+
+  .. versionadded:: 3.17
+    Added the :generator:`Ninja Multi-Config` generator, which included
+    support for the ``DEPFILE`` keyword.
+
+  .. versionadded:: 3.20
+    Added support for :ref:`Makefile Generators`.
+
+    .. note::
+
+      ``DEPFILE`` cannot be specified at the same time as the
+      ``IMPLICIT_DEPENDS`` option for :ref:`Makefile Generators`.
+
+  .. versionadded:: 3.21
+    Added support for :ref:`Visual Studio Generators` with VS 2012 and above,
+    and for the :generator:`Xcode` generator.  Support for
+    :manual:`generator expressions <cmake-generator-expressions(7)>` was also
+    added.
+
+  Using ``DEPFILE`` with generators other than those listed above is an error.
+
+  If the ``DEPFILE`` argument is relative, it should be relative to
+  :variable:`CMAKE_CURRENT_BINARY_DIR`, and any relative paths inside the
+  ``DEPFILE`` should also be relative to :variable:`CMAKE_CURRENT_BINARY_DIR`.
+  See policy :policy:`CMP0116`, which is always ``NEW`` for
+  :ref:`Makefile Generators`, :ref:`Visual Studio Generators`,
+  and the :generator:`Xcode` generator.
+
+Examples: Generating Files
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Custom commands may be used to generate source files.
+For example, the code:
+
+.. code-block:: cmake
+
+  add_custom_command(
+    OUTPUT out.c
+    COMMAND someTool -i ${CMAKE_CURRENT_SOURCE_DIR}/in.txt
+                     -o out.c
+    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/in.txt
+    VERBATIM)
+  add_library(myLib out.c)
+
+adds a custom command to run ``someTool`` to generate ``out.c`` and then
+compile the generated source as part of a library.  The generation rule
+will re-run whenever ``in.txt`` changes.
+
+.. versionadded:: 3.20
+  One may use generator expressions to specify per-configuration outputs.
+  For example, the code:
+
+  .. code-block:: cmake
+
+    add_custom_command(
+      OUTPUT "out-$<CONFIG>.c"
+      COMMAND someTool -i ${CMAKE_CURRENT_SOURCE_DIR}/in.txt
+                       -o "out-$<CONFIG>.c"
+                       -c "$<CONFIG>"
+      DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/in.txt
+      VERBATIM)
+    add_library(myLib "out-$<CONFIG>.c")
+
+  adds a custom command to run ``someTool`` to generate ``out-<config>.c``,
+  where ``<config>`` is the build configuration, and then compile the generated
+  source as part of a library.
+
+.. _`add_custom_command(TARGET)`:
+
+Build Events
+^^^^^^^^^^^^
+
+The second signature adds a custom command to a target such as a
+library or executable.  This is useful for performing an operation
+before or after building the target.  The command becomes part of the
+target and will only execute when the target itself is built.  If the
+target is already built, the command will not execute.
+
+.. code-block:: cmake
+
+  add_custom_command(TARGET <target>
+                     PRE_BUILD | PRE_LINK | POST_BUILD
+                     COMMAND command1 [ARGS] [args1...]
+                     [COMMAND command2 [ARGS] [args2...] ...]
+                     [BYPRODUCTS [files...]]
+                     [WORKING_DIRECTORY dir]
+                     [COMMENT comment]
+                     [VERBATIM] [USES_TERMINAL]
+                     [COMMAND_EXPAND_LISTS])
+
+This defines a new command that will be associated with building the
+specified ``<target>``.  The ``<target>`` must be defined in the current
+directory; targets defined in other directories may not be specified.
+
+When the command will happen is determined by which
+of the following is specified:
+
+``PRE_BUILD``
+  On :ref:`Visual Studio Generators`, run before any other rules are
+  executed within the target.
+  On other generators, run just before ``PRE_LINK`` commands.
+``PRE_LINK``
+  Run after sources have been compiled but before linking the binary
+  or running the librarian or archiver tool of a static library.
+  This is not defined for targets created by the
+  :command:`add_custom_target` command.
+``POST_BUILD``
+  Run after all other rules within the target have been executed.
+
+.. note::
+  Because generator expressions can be used in custom commands,
+  it is possible to define ``COMMAND`` lines or whole custom commands
+  which evaluate to empty strings for certain configurations.
+  For **Visual Studio 2010 (and newer)** generators these command
+  lines or custom commands will be omitted for the specific
+  configuration and no "empty-string-command" will be added.
+
+  This allows to add individual build events for every configuration.
+
+.. versionadded:: 3.21
+  Support for target-dependent generator expressions.
+
+Examples: Build Events
+^^^^^^^^^^^^^^^^^^^^^^
+
+A ``POST_BUILD`` event may be used to post-process a binary after linking.
+For example, the code:
+
+.. code-block:: cmake
+
+  add_executable(myExe myExe.c)
+  add_custom_command(
+    TARGET myExe POST_BUILD
+    COMMAND someHasher -i "$<TARGET_FILE:myExe>"
+                       -o "$<TARGET_FILE:myExe>.hash"
+    VERBATIM)
+
+will run ``someHasher`` to produce a ``.hash`` file next to the executable
+after linking.
+
+.. versionadded:: 3.20
+  One may use generator expressions to specify per-configuration byproducts.
+  For example, the code:
+
+  .. code-block:: cmake
+
+    add_library(myPlugin MODULE myPlugin.c)
+    add_custom_command(
+      TARGET myPlugin POST_BUILD
+      COMMAND someHasher -i "$<TARGET_FILE:myPlugin>"
+                         --as-code "myPlugin-hash-$<CONFIG>.c"
+      BYPRODUCTS "myPlugin-hash-$<CONFIG>.c"
+      VERBATIM)
+    add_executable(myExe myExe.c "myPlugin-hash-$<CONFIG>.c")
+
+  will run ``someHasher`` after linking ``myPlugin``, e.g. to produce a ``.c``
+  file containing code to check the hash of ``myPlugin`` that the ``myExe``
+  executable can use to verify it before loading.
+
+Ninja Multi-Config
+^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.20
+
+  ``add_custom_command`` supports the :generator:`Ninja Multi-Config`
+  generator's cross-config capabilities. See the generator documentation
+  for more information.
diff --git a/share/cmake-3.22/Help/command/add_custom_target.rst b/share/cmake-3.22/Help/command/add_custom_target.rst
new file mode 100644
index 0000000..def23fa
--- /dev/null
+++ b/share/cmake-3.22/Help/command/add_custom_target.rst
@@ -0,0 +1,181 @@
+add_custom_target
+-----------------
+
+Add a target with no output so it will always be built.
+
+.. code-block:: cmake
+
+  add_custom_target(Name [ALL] [command1 [args1...]]
+                    [COMMAND command2 [args2...] ...]
+                    [DEPENDS depend depend depend ... ]
+                    [BYPRODUCTS [files...]]
+                    [WORKING_DIRECTORY dir]
+                    [COMMENT comment]
+                    [JOB_POOL job_pool]
+                    [VERBATIM] [USES_TERMINAL]
+                    [COMMAND_EXPAND_LISTS]
+                    [SOURCES src1 [src2...]])
+
+Adds a target with the given name that executes the given commands.
+The target has no output file and is *always considered out of date*
+even if the commands try to create a file with the name of the target.
+Use the :command:`add_custom_command` command to generate a file with
+dependencies.  By default nothing depends on the custom target.  Use
+the :command:`add_dependencies` command to add dependencies to or
+from other targets.
+
+The options are:
+
+``ALL``
+  Indicate that this target should be added to the default build
+  target so that it will be run every time (the command cannot be
+  called ``ALL``).
+
+``BYPRODUCTS``
+  .. versionadded:: 3.2
+
+  Specify the files the command is expected to produce but whose
+  modification time may or may not be updated on subsequent builds.
+  If a byproduct name is a relative path it will be interpreted
+  relative to the build tree directory corresponding to the
+  current source directory.
+  Each byproduct file will be marked with the :prop_sf:`GENERATED`
+  source file property automatically.
+
+  Explicit specification of byproducts is supported by the
+  :generator:`Ninja` generator to tell the ``ninja`` build tool
+  how to regenerate byproducts when they are missing.  It is
+  also useful when other build rules (e.g. custom commands)
+  depend on the byproducts.  Ninja requires a build rule for any
+  generated file on which another rule depends even if there are
+  order-only dependencies to ensure the byproducts will be
+  available before their dependents build.
+
+  The :ref:`Makefile Generators` will remove ``BYPRODUCTS`` and other
+  :prop_sf:`GENERATED` files during ``make clean``.
+
+  .. versionadded:: 3.20
+    Arguments to ``BYPRODUCTS`` may use a restricted set of
+    :manual:`generator expressions <cmake-generator-expressions(7)>`.
+    :ref:`Target-dependent expressions <Target-Dependent Queries>` are not
+    permitted.
+
+``COMMAND``
+  Specify the command-line(s) to execute at build time.
+  If more than one ``COMMAND`` is specified they will be executed in order,
+  but *not* necessarily composed into a stateful shell or batch script.
+  (To run a full script, use the :command:`configure_file` command or the
+  :command:`file(GENERATE)` command to create it, and then specify
+  a ``COMMAND`` to launch it.)
+
+  If ``COMMAND`` specifies an executable target name (created by the
+  :command:`add_executable` command), it will automatically be replaced
+  by the location of the executable created at build time if either of
+  the following is true:
+
+  * The target is not being cross-compiled (i.e. the
+    :variable:`CMAKE_CROSSCOMPILING` variable is not set to true).
+  * .. versionadded:: 3.6
+      The target is being cross-compiled and an emulator is provided (i.e.
+      its :prop_tgt:`CROSSCOMPILING_EMULATOR` target property is set).
+      In this case, the contents of :prop_tgt:`CROSSCOMPILING_EMULATOR` will be
+      prepended to the command before the location of the target executable.
+
+  If neither of the above conditions are met, it is assumed that the
+  command name is a program to be found on the ``PATH`` at build time.
+
+  Arguments to ``COMMAND`` may use
+  :manual:`generator expressions <cmake-generator-expressions(7)>`.
+  Use the :genex:`TARGET_FILE` generator expression to refer to the location
+  of a target later in the command line (i.e. as a command argument rather
+  than as the command to execute).
+
+  Whenever one of the following target based generator expressions are used as
+  a command to execute or is mentioned in a command argument, a target-level
+  dependency will be added automatically so that the mentioned target will be
+  built before this custom target (see policy :policy:`CMP0112`).
+
+    * ``TARGET_FILE``
+    * ``TARGET_LINKER_FILE``
+    * ``TARGET_SONAME_FILE``
+    * ``TARGET_PDB_FILE``
+
+  The command and arguments are optional and if not specified an empty
+  target will be created.
+
+``COMMENT``
+  Display the given message before the commands are executed at
+  build time.
+
+``DEPENDS``
+  Reference files and outputs of custom commands created with
+  :command:`add_custom_command` command calls in the same directory
+  (``CMakeLists.txt`` file).  They will be brought up to date when
+  the target is built.
+
+  .. versionchanged:: 3.16
+    A target-level dependency is added if any dependency is a byproduct
+    of a target or any of its build events in the same directory to ensure
+    the byproducts will be available before this target is built.
+
+  Use the :command:`add_dependencies` command to add dependencies
+  on other targets.
+
+``COMMAND_EXPAND_LISTS``
+  .. versionadded:: 3.8
+
+  Lists in ``COMMAND`` arguments will be expanded, including those
+  created with
+  :manual:`generator expressions <cmake-generator-expressions(7)>`,
+  allowing ``COMMAND`` arguments such as
+  ``${CC} "-I$<JOIN:$<TARGET_PROPERTY:foo,INCLUDE_DIRECTORIES>,;-I>" foo.cc``
+  to be properly expanded.
+
+``JOB_POOL``
+  .. versionadded:: 3.15
+
+  Specify a :prop_gbl:`pool <JOB_POOLS>` for the :generator:`Ninja`
+  generator. Incompatible with ``USES_TERMINAL``, which implies
+  the ``console`` pool.
+  Using a pool that is not defined by :prop_gbl:`JOB_POOLS` causes
+  an error by ninja at build time.
+
+``SOURCES``
+  Specify additional source files to be included in the custom target.
+  Specified source files will be added to IDE project files for
+  convenience in editing even if they have no build rules.
+
+``VERBATIM``
+  All arguments to the commands will be escaped properly for the
+  build tool so that the invoked command receives each argument
+  unchanged.  Note that one level of escapes is still used by the
+  CMake language processor before ``add_custom_target`` even sees
+  the arguments.  Use of ``VERBATIM`` is recommended as it enables
+  correct behavior.  When ``VERBATIM`` is not given the behavior
+  is platform specific because there is no protection of
+  tool-specific special characters.
+
+``USES_TERMINAL``
+  .. versionadded:: 3.2
+
+  The command will be given direct access to the terminal if possible.
+  With the :generator:`Ninja` generator, this places the command in
+  the ``console`` :prop_gbl:`pool <JOB_POOLS>`.
+
+``WORKING_DIRECTORY``
+  Execute the command with the given current working directory.
+  If it is a relative path it will be interpreted relative to the
+  build tree directory corresponding to the current source directory.
+
+  .. versionadded:: 3.13
+    Arguments to ``WORKING_DIRECTORY`` may use
+    :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+Ninja Multi-Config
+^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.20
+
+  ``add_custom_target`` supports the :generator:`Ninja Multi-Config`
+  generator's cross-config capabilities. See the generator documentation
+  for more information.
diff --git a/share/cmake-3.18/Help/command/add_definitions.rst b/share/cmake-3.22/Help/command/add_definitions.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/add_definitions.rst
rename to share/cmake-3.22/Help/command/add_definitions.rst
diff --git a/share/cmake-3.22/Help/command/add_dependencies.rst b/share/cmake-3.22/Help/command/add_dependencies.rst
new file mode 100644
index 0000000..14c0183
--- /dev/null
+++ b/share/cmake-3.22/Help/command/add_dependencies.rst
@@ -0,0 +1,26 @@
+add_dependencies
+----------------
+
+Add a dependency between top-level targets.
+
+.. code-block:: cmake
+
+  add_dependencies(<target> [<target-dependency>]...)
+
+Makes a top-level ``<target>`` depend on other top-level targets to
+ensure that they build before ``<target>`` does.  A top-level target
+is one created by one of the :command:`add_executable`,
+:command:`add_library`, or :command:`add_custom_target` commands
+(but not targets generated by CMake like ``install``).
+
+Dependencies added to an :ref:`imported target <Imported Targets>`
+or an :ref:`interface library <Interface Libraries>` are followed
+transitively in its place since the target itself does not build.
+
+.. versionadded:: 3.3
+  Allow adding dependencies to interface libraries.
+
+See the ``DEPENDS`` option of :command:`add_custom_target` and
+:command:`add_custom_command` commands for adding file-level
+dependencies in custom rules.  See the :prop_sf:`OBJECT_DEPENDS`
+source file property to add file-level dependencies to object files.
diff --git a/share/cmake-3.22/Help/command/add_executable.rst b/share/cmake-3.22/Help/command/add_executable.rst
new file mode 100644
index 0000000..dde9429
--- /dev/null
+++ b/share/cmake-3.22/Help/command/add_executable.rst
@@ -0,0 +1,109 @@
+add_executable
+--------------
+
+.. only:: html
+
+  .. contents::
+
+Add an executable to the project using the specified source files.
+
+Normal Executables
+^^^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  add_executable(<name> [WIN32] [MACOSX_BUNDLE]
+                 [EXCLUDE_FROM_ALL]
+                 [source1] [source2 ...])
+
+Adds an executable target called ``<name>`` to be built from the source
+files listed in the command invocation.  The
+``<name>`` corresponds to the logical target name and must be globally
+unique within a project.  The actual file name of the executable built is
+constructed based on conventions of the native platform (such as
+``<name>.exe`` or just ``<name>``).
+
+.. versionadded:: 3.1
+  Source arguments to ``add_executable`` may use "generator expressions" with
+  the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
+  manual for available expressions.
+
+.. versionadded:: 3.11
+  The source files can be omitted if they are added later using
+  :command:`target_sources`.
+
+By default the executable file will be created in the build tree
+directory corresponding to the source tree directory in which the
+command was invoked.  See documentation of the
+:prop_tgt:`RUNTIME_OUTPUT_DIRECTORY` target property to change this
+location.  See documentation of the :prop_tgt:`OUTPUT_NAME` target property
+to change the ``<name>`` part of the final file name.
+
+If ``WIN32`` is given the property :prop_tgt:`WIN32_EXECUTABLE` will be
+set on the target created.  See documentation of that target property for
+details.
+
+If ``MACOSX_BUNDLE`` is given the corresponding property will be set on
+the created target.  See documentation of the :prop_tgt:`MACOSX_BUNDLE`
+target property for details.
+
+If ``EXCLUDE_FROM_ALL`` is given the corresponding property will be set on
+the created target.  See documentation of the :prop_tgt:`EXCLUDE_FROM_ALL`
+target property for details.
+
+See the :manual:`cmake-buildsystem(7)` manual for more on defining
+buildsystem properties.
+
+See also :prop_sf:`HEADER_FILE_ONLY` on what to do if some sources are
+pre-processed, and you want to have the original sources reachable from
+within IDE.
+
+Imported Executables
+^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  add_executable(<name> IMPORTED [GLOBAL])
+
+An :ref:`IMPORTED executable target <Imported Targets>` references an
+executable file located outside the project.  No rules are generated to
+build it, and the :prop_tgt:`IMPORTED` target property is ``True``.  The
+target name has scope in the directory in which it is created and below, but
+the ``GLOBAL`` option extends visibility.  It may be referenced like any
+target built within the project.  ``IMPORTED`` executables are useful
+for convenient reference from commands like :command:`add_custom_command`.
+Details about the imported executable are specified by setting properties
+whose names begin in ``IMPORTED_``.  The most important such property is
+:prop_tgt:`IMPORTED_LOCATION` (and its per-configuration version
+:prop_tgt:`IMPORTED_LOCATION_<CONFIG>`) which specifies the location of
+the main executable file on disk.  See documentation of the ``IMPORTED_*``
+properties for more information.
+
+Alias Executables
+^^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  add_executable(<name> ALIAS <target>)
+
+Creates an :ref:`Alias Target <Alias Targets>`, such that ``<name>`` can
+be used to refer to ``<target>`` in subsequent commands.  The ``<name>``
+does not appear in the generated buildsystem as a make target.  The
+``<target>`` may not be an ``ALIAS``.
+
+.. versionadded:: 3.11
+  An ``ALIAS`` can target a ``GLOBAL`` :ref:`Imported Target <Imported Targets>`
+
+.. versionadded:: 3.18
+  An ``ALIAS`` can target a non-``GLOBAL`` Imported Target. Such alias is
+  scoped to the directory in which it is created and subdirectories.
+  The :prop_tgt:`ALIAS_GLOBAL` target property can be used to check if the
+  alias is global or not.
+
+``ALIAS`` targets can be used as targets to read properties
+from, executables for custom commands and custom targets.  They can also be
+tested for existence with the regular :command:`if(TARGET)` subcommand.
+The ``<name>`` may not be used to modify properties of ``<target>``, that
+is, it may not be used as the operand of :command:`set_property`,
+:command:`set_target_properties`, :command:`target_link_libraries` etc.
+An ``ALIAS`` target may not be installed or exported.
diff --git a/share/cmake-3.22/Help/command/add_library.rst b/share/cmake-3.22/Help/command/add_library.rst
new file mode 100644
index 0000000..1235155
--- /dev/null
+++ b/share/cmake-3.22/Help/command/add_library.rst
@@ -0,0 +1,262 @@
+add_library
+-----------
+
+.. only:: html
+
+   .. contents::
+
+Add a library to the project using the specified source files.
+
+Normal Libraries
+^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  add_library(<name> [STATIC | SHARED | MODULE]
+              [EXCLUDE_FROM_ALL]
+              [<source>...])
+
+Adds a library target called ``<name>`` to be built from the source files
+listed in the command invocation.  The ``<name>``
+corresponds to the logical target name and must be globally unique within
+a project.  The actual file name of the library built is constructed based
+on conventions of the native platform (such as ``lib<name>.a`` or
+``<name>.lib``).
+
+.. versionadded:: 3.1
+  Source arguments to ``add_library`` may use "generator expressions" with
+  the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
+  manual for available expressions.
+
+.. versionadded:: 3.11
+  The source files can be omitted if they are added later using
+  :command:`target_sources`.
+
+``STATIC``, ``SHARED``, or ``MODULE`` may be given to specify the type of
+library to be created.  ``STATIC`` libraries are archives of object files
+for use when linking other targets.  ``SHARED`` libraries are linked
+dynamically and loaded at runtime.  ``MODULE`` libraries are plugins that
+are not linked into other targets but may be loaded dynamically at runtime
+using dlopen-like functionality.  If no type is given explicitly the
+type is ``STATIC`` or ``SHARED`` based on whether the current value of the
+variable :variable:`BUILD_SHARED_LIBS` is ``ON``.  For ``SHARED`` and
+``MODULE`` libraries the :prop_tgt:`POSITION_INDEPENDENT_CODE` target
+property is set to ``ON`` automatically.
+A ``SHARED`` library may be marked with the :prop_tgt:`FRAMEWORK`
+target property to create an macOS Framework.
+
+.. versionadded:: 3.8
+  A ``STATIC`` library may be marked with the :prop_tgt:`FRAMEWORK`
+  target property to create a static Framework.
+
+If a library does not export any symbols, it must not be declared as a
+``SHARED`` library.  For example, a Windows resource DLL or a managed C++/CLI
+DLL that exports no unmanaged symbols would need to be a ``MODULE`` library.
+This is because CMake expects a ``SHARED`` library to always have an
+associated import library on Windows.
+
+By default the library file will be created in the build tree directory
+corresponding to the source tree directory in which the command was
+invoked.  See documentation of the :prop_tgt:`ARCHIVE_OUTPUT_DIRECTORY`,
+:prop_tgt:`LIBRARY_OUTPUT_DIRECTORY`, and
+:prop_tgt:`RUNTIME_OUTPUT_DIRECTORY` target properties to change this
+location.  See documentation of the :prop_tgt:`OUTPUT_NAME` target
+property to change the ``<name>`` part of the final file name.
+
+If ``EXCLUDE_FROM_ALL`` is given the corresponding property will be set on
+the created target.  See documentation of the :prop_tgt:`EXCLUDE_FROM_ALL`
+target property for details.
+
+See the :manual:`cmake-buildsystem(7)` manual for more on defining
+buildsystem properties.
+
+See also :prop_sf:`HEADER_FILE_ONLY` on what to do if some sources are
+pre-processed, and you want to have the original sources reachable from
+within IDE.
+
+Object Libraries
+^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  add_library(<name> OBJECT [<source>...])
+
+Creates an :ref:`Object Library <Object Libraries>`.  An object library
+compiles source files but does not archive or link their object files into a
+library.  Instead other targets created by :command:`add_library` or
+:command:`add_executable` may reference the objects using an expression of the
+form ``$<TARGET_OBJECTS:objlib>`` as a source, where ``objlib`` is the
+object library name.  For example:
+
+.. code-block:: cmake
+
+  add_library(... $<TARGET_OBJECTS:objlib> ...)
+  add_executable(... $<TARGET_OBJECTS:objlib> ...)
+
+will include objlib's object files in a library and an executable
+along with those compiled from their own sources.  Object libraries
+may contain only sources that compile, header files, and other files
+that would not affect linking of a normal library (e.g. ``.txt``).
+They may contain custom commands generating such sources, but not
+``PRE_BUILD``, ``PRE_LINK``, or ``POST_BUILD`` commands.  Some native build
+systems (such as Xcode) may not like targets that have only object files, so
+consider adding at least one real source file to any target that references
+``$<TARGET_OBJECTS:objlib>``.
+
+.. versionadded:: 3.12
+  Object libraries can be linked to with :command:`target_link_libraries`.
+
+Interface Libraries
+^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  add_library(<name> INTERFACE)
+
+Creates an :ref:`Interface Library <Interface Libraries>`.
+An ``INTERFACE`` library target does not compile sources and does
+not produce a library artifact on disk.  However, it may have
+properties set on it and it may be installed and exported.
+Typically, ``INTERFACE_*`` properties are populated on an interface
+target using the commands:
+
+* :command:`set_property`,
+* :command:`target_link_libraries(INTERFACE)`,
+* :command:`target_link_options(INTERFACE)`,
+* :command:`target_include_directories(INTERFACE)`,
+* :command:`target_compile_options(INTERFACE)`,
+* :command:`target_compile_definitions(INTERFACE)`, and
+* :command:`target_sources(INTERFACE)`,
+
+and then it is used as an argument to :command:`target_link_libraries`
+like any other target.
+
+An interface library created with the above signature has no source files
+itself and is not included as a target in the generated buildsystem.
+
+.. versionadded:: 3.15
+  An interface library can have :prop_tgt:`PUBLIC_HEADER` and
+  :prop_tgt:`PRIVATE_HEADER` properties.  The headers specified by those
+  properties can be installed using the :command:`install(TARGETS)` command.
+
+.. versionadded:: 3.19
+  An interface library target may be created with source files:
+
+  .. code-block:: cmake
+
+    add_library(<name> INTERFACE [<source>...] [EXCLUDE_FROM_ALL])
+
+  Source files may be listed directly in the ``add_library`` call or added
+  later by calls to :command:`target_sources` with the ``PRIVATE`` or
+  ``PUBLIC`` keywords.
+
+  If an interface library has source files (i.e. the :prop_tgt:`SOURCES`
+  target property is set), it will appear in the generated buildsystem
+  as a build target much like a target defined by the
+  :command:`add_custom_target` command.  It does not compile any sources,
+  but does contain build rules for custom commands created by the
+  :command:`add_custom_command` command.
+
+.. note::
+  In most command signatures where the ``INTERFACE`` keyword appears,
+  the items listed after it only become part of that target's usage
+  requirements and are not part of the target's own settings.  However,
+  in this signature of ``add_library``, the ``INTERFACE`` keyword refers
+  to the library type only.  Sources listed after it in the ``add_library``
+  call are ``PRIVATE`` to the interface library and do not appear in its
+  :prop_tgt:`INTERFACE_SOURCES` target property.
+
+.. _`add_library imported libraries`:
+
+Imported Libraries
+^^^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  add_library(<name> <type> IMPORTED [GLOBAL])
+
+Creates an :ref:`IMPORTED library target <Imported Targets>` called ``<name>``.
+No rules are generated to build it, and the :prop_tgt:`IMPORTED` target
+property is ``True``.  The target name has scope in the directory in which
+it is created and below, but the ``GLOBAL`` option extends visibility.
+It may be referenced like any target built within the project.
+``IMPORTED`` libraries are useful for convenient reference from commands
+like :command:`target_link_libraries`.  Details about the imported library
+are specified by setting properties whose names begin in ``IMPORTED_`` and
+``INTERFACE_``.
+
+The ``<type>`` must be one of:
+
+``STATIC``, ``SHARED``, ``MODULE``, ``UNKNOWN``
+  References a library file located outside the project.  The
+  :prop_tgt:`IMPORTED_LOCATION` target property (or its per-configuration
+  variant :prop_tgt:`IMPORTED_LOCATION_<CONFIG>`) specifies the
+  location of the main library file on disk:
+
+  * For a ``SHARED`` library on most non-Windows platforms, the main library
+    file is the ``.so`` or ``.dylib`` file used by both linkers and dynamic
+    loaders.  If the referenced library file has a ``SONAME`` (or on macOS,
+    has a ``LC_ID_DYLIB`` starting in ``@rpath/``), the value of that field
+    should be set in the :prop_tgt:`IMPORTED_SONAME` target property.
+    If the referenced library file does not have a ``SONAME``, but the
+    platform supports it, then  the :prop_tgt:`IMPORTED_NO_SONAME` target
+    property should be set.
+
+  * For a ``SHARED`` library on Windows, the :prop_tgt:`IMPORTED_IMPLIB`
+    target property (or its per-configuration variant
+    :prop_tgt:`IMPORTED_IMPLIB_<CONFIG>`) specifies the location of the
+    DLL import library file (``.lib`` or ``.dll.a``) on disk, and the
+    ``IMPORTED_LOCATION`` is the location of the ``.dll`` runtime
+    library (and is optional, but needed by the :genex:`TARGET_RUNTIME_DLLS`
+    generator expression).
+
+  Additional usage requirements may be specified in ``INTERFACE_*`` properties.
+
+  An ``UNKNOWN`` library type is typically only used in the implementation of
+  :ref:`Find Modules`.  It allows the path to an imported library (often found
+  using the :command:`find_library` command) to be used without having to know
+  what type of library it is.  This is especially useful on Windows where a
+  static library and a DLL's import library both have the same file extension.
+
+``OBJECT``
+  References a set of object files located outside the project.
+  The :prop_tgt:`IMPORTED_OBJECTS` target property (or its per-configuration
+  variant :prop_tgt:`IMPORTED_OBJECTS_<CONFIG>`) specifies the locations of
+  object files on disk.
+  Additional usage requirements may be specified in ``INTERFACE_*`` properties.
+
+``INTERFACE``
+  Does not reference any library or object files on disk, but may
+  specify usage requirements in ``INTERFACE_*`` properties.
+
+See documentation of the ``IMPORTED_*`` and ``INTERFACE_*`` properties
+for more information.
+
+Alias Libraries
+^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  add_library(<name> ALIAS <target>)
+
+Creates an :ref:`Alias Target <Alias Targets>`, such that ``<name>`` can be
+used to refer to ``<target>`` in subsequent commands.  The ``<name>`` does
+not appear in the generated buildsystem as a make target.  The ``<target>``
+may not be an ``ALIAS``.
+
+.. versionadded:: 3.11
+  An ``ALIAS`` can target a ``GLOBAL`` :ref:`Imported Target <Imported Targets>`
+
+.. versionadded:: 3.18
+  An ``ALIAS`` can target a non-``GLOBAL`` Imported Target. Such alias is
+  scoped to the directory in which it is created and below.
+  The :prop_tgt:`ALIAS_GLOBAL` target property can be used to check if the
+  alias is global or not.
+
+``ALIAS`` targets can be used as linkable targets and as targets to
+read properties from.  They can also be tested for existence with the
+regular :command:`if(TARGET)` subcommand.  The ``<name>`` may not be used
+to modify properties of ``<target>``, that is, it may not be used as the
+operand of :command:`set_property`, :command:`set_target_properties`,
+:command:`target_link_libraries` etc.  An ``ALIAS`` target may not be
+installed or exported.
diff --git a/share/cmake-3.22/Help/command/add_link_options.rst b/share/cmake-3.22/Help/command/add_link_options.rst
new file mode 100644
index 0000000..f03e7c0
--- /dev/null
+++ b/share/cmake-3.22/Help/command/add_link_options.rst
@@ -0,0 +1,35 @@
+add_link_options
+----------------
+
+.. versionadded:: 3.13
+
+Add options to the link step for executable, shared library or module
+library targets in the current directory and below that are added after
+this command is invoked.
+
+.. code-block:: cmake
+
+  add_link_options(<option> ...)
+
+This command can be used to add any link options, but alternative commands
+exist to add libraries (:command:`target_link_libraries` or
+:command:`link_libraries`).  See documentation of the
+:prop_dir:`directory <LINK_OPTIONS>` and
+:prop_tgt:`target <LINK_OPTIONS>` ``LINK_OPTIONS`` properties.
+
+.. note::
+
+  This command cannot be used to add options for static library targets,
+  since they do not use a linker.  To add archiver or MSVC librarian flags,
+  see the :prop_tgt:`STATIC_LIBRARY_OPTIONS` target property.
+
+Arguments to ``add_link_options`` may use "generator expressions" with
+the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
+manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
+manual for more on defining buildsystem properties.
+
+.. include:: DEVICE_LINK_OPTIONS.txt
+
+.. include:: OPTIONS_SHELL.txt
+
+.. include:: LINK_OPTIONS_LINKER.txt
diff --git a/share/cmake-3.18/Help/command/add_subdirectory.rst b/share/cmake-3.22/Help/command/add_subdirectory.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/add_subdirectory.rst
rename to share/cmake-3.22/Help/command/add_subdirectory.rst
diff --git a/share/cmake-3.22/Help/command/add_test.rst b/share/cmake-3.22/Help/command/add_test.rst
new file mode 100644
index 0000000..95cd037
--- /dev/null
+++ b/share/cmake-3.22/Help/command/add_test.rst
@@ -0,0 +1,82 @@
+add_test
+--------
+
+Add a test to the project to be run by :manual:`ctest(1)`.
+
+.. code-block:: cmake
+
+  add_test(NAME <name> COMMAND <command> [<arg>...]
+           [CONFIGURATIONS <config>...]
+           [WORKING_DIRECTORY <dir>]
+           [COMMAND_EXPAND_LISTS])
+
+Adds a test called ``<name>``.  The test name may contain arbitrary
+characters, expressed as a :ref:`Quoted Argument` or :ref:`Bracket Argument`
+if necessary.  See policy :policy:`CMP0110`.  The options are:
+
+``COMMAND``
+  Specify the test command-line.  If ``<command>`` specifies an
+  executable target (created by :command:`add_executable`) it will
+  automatically be replaced by the location of the executable created
+  at build time.
+
+``CONFIGURATIONS``
+  Restrict execution of the test only to the named configurations.
+
+``WORKING_DIRECTORY``
+  Set the :prop_test:`WORKING_DIRECTORY` test property to
+  specify the working directory in which to execute the test.
+  If not specified the test will be run with the current working
+  directory set to the build directory corresponding to the
+  current source directory.
+
+``COMMAND_EXPAND_LISTS``
+  .. versionadded:: 3.16
+
+  Lists in ``COMMAND`` arguments will be expanded, including those
+  created with
+  :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+The given test command is expected to exit with code ``0`` to pass and
+non-zero to fail, or vice-versa if the :prop_test:`WILL_FAIL` test
+property is set.  Any output written to stdout or stderr will be
+captured by :manual:`ctest(1)` but does not affect the pass/fail status
+unless the :prop_test:`PASS_REGULAR_EXPRESSION`,
+:prop_test:`FAIL_REGULAR_EXPRESSION` or
+:prop_test:`SKIP_REGULAR_EXPRESSION` test property is used.
+
+.. versionadded:: 3.16
+  Added :prop_test:`SKIP_REGULAR_EXPRESSION` property.
+
+The ``COMMAND`` and ``WORKING_DIRECTORY`` options may use "generator
+expressions" with the syntax ``$<...>``.  See the
+:manual:`cmake-generator-expressions(7)` manual for available expressions.
+
+Example usage:
+
+.. code-block:: cmake
+
+  add_test(NAME mytest
+           COMMAND testDriver --config $<CONFIG>
+                              --exe $<TARGET_FILE:myexe>)
+
+This creates a test ``mytest`` whose command runs a ``testDriver`` tool
+passing the configuration name and the full path to the executable
+file produced by target ``myexe``.
+
+.. note::
+
+  CMake will generate tests only if the :command:`enable_testing`
+  command has been invoked.  The :module:`CTest` module invokes the
+  command automatically unless the ``BUILD_TESTING`` option is turned
+  ``OFF``.
+
+---------------------------------------------------------------------
+
+.. code-block:: cmake
+
+  add_test(<name> <command> [<arg>...])
+
+Add a test called ``<name>`` with the given command-line.  Unlike
+the above ``NAME`` signature no transformation is performed on the
+command-line to support target names or generator expressions.
diff --git a/share/cmake-3.18/Help/command/aux_source_directory.rst b/share/cmake-3.22/Help/command/aux_source_directory.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/aux_source_directory.rst
rename to share/cmake-3.22/Help/command/aux_source_directory.rst
diff --git a/share/cmake-3.18/Help/command/break.rst b/share/cmake-3.22/Help/command/break.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/break.rst
rename to share/cmake-3.22/Help/command/break.rst
diff --git a/share/cmake-3.22/Help/command/build_command.rst b/share/cmake-3.22/Help/command/build_command.rst
new file mode 100644
index 0000000..a03979d
--- /dev/null
+++ b/share/cmake-3.22/Help/command/build_command.rst
@@ -0,0 +1,51 @@
+build_command
+-------------
+
+Get a command line to build the current project.
+This is mainly intended for internal use by the :module:`CTest` module.
+
+.. code-block:: cmake
+
+  build_command(<variable>
+                [CONFIGURATION <config>]
+                [PARALLEL_LEVEL <parallel>]
+                [TARGET <target>]
+                [PROJECT_NAME <projname>] # legacy, causes warning
+               )
+
+Sets the given ``<variable>`` to a command-line string of the form::
+
+ <cmake> --build . [--config <config>] [--parallel <parallel>] [--target <target>...] [-- -i]
+
+where ``<cmake>`` is the location of the :manual:`cmake(1)` command-line
+tool, and ``<config>``, ``<parallel>`` and ``<target>`` are the values
+provided to the ``CONFIGURATION``, ``PARALLEL_LEVEL`` and ``TARGET``
+options, if any.  The trailing ``-- -i`` option is added for
+:ref:`Makefile Generators` if policy :policy:`CMP0061` is not set to
+``NEW``.
+
+When invoked, this ``cmake --build`` command line will launch the
+underlying build system tool.
+
+.. versionadded:: 3.21
+  The ``PARALLEL_LEVEL`` argument can be used to set the ``--parallel``
+  flag.
+
+.. code-block:: cmake
+
+  build_command(<cachevariable> <makecommand>)
+
+This second signature is deprecated, but still available for backwards
+compatibility.  Use the first signature instead.
+
+It sets the given ``<cachevariable>`` to a command-line string as
+above but without the ``--target`` option.
+The ``<makecommand>`` is ignored but should be the full path to
+devenv, nmake, make or one of the end user build tools
+for legacy invocations.
+
+.. note::
+ In CMake versions prior to 3.0 this command returned a command
+ line that directly invokes the native build tool for the current
+ generator.  Their implementation of the ``PROJECT_NAME`` option
+ had no useful effects, so CMake now warns on use of the option.
diff --git a/share/cmake-3.18/Help/command/build_name.rst b/share/cmake-3.22/Help/command/build_name.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/build_name.rst
rename to share/cmake-3.22/Help/command/build_name.rst
diff --git a/share/cmake-3.22/Help/command/cmake_host_system_information.rst b/share/cmake-3.22/Help/command/cmake_host_system_information.rst
new file mode 100644
index 0000000..998e146
--- /dev/null
+++ b/share/cmake-3.22/Help/command/cmake_host_system_information.rst
@@ -0,0 +1,248 @@
+cmake_host_system_information
+-----------------------------
+
+Query host system specific information.
+
+.. code-block:: cmake
+
+  cmake_host_system_information(RESULT <variable> QUERY <key> ...)
+
+Queries system information of the host system on which cmake runs.
+One or more ``<key>`` can be provided to select the information to be
+queried.  The list of queried values is stored in ``<variable>``.
+
+``<key>`` can be one of the following values:
+
+``NUMBER_OF_LOGICAL_CORES``
+  Number of logical cores
+
+``NUMBER_OF_PHYSICAL_CORES``
+  Number of physical cores
+
+``HOSTNAME``
+  Hostname
+
+``FQDN``
+  Fully qualified domain name
+
+``TOTAL_VIRTUAL_MEMORY``
+  Total virtual memory in MiB [#mebibytes]_
+
+``AVAILABLE_VIRTUAL_MEMORY``
+  Available virtual memory in MiB [#mebibytes]_
+
+``TOTAL_PHYSICAL_MEMORY``
+  Total physical memory in MiB [#mebibytes]_
+
+``AVAILABLE_PHYSICAL_MEMORY``
+  Available physical memory in MiB [#mebibytes]_
+
+``IS_64BIT``
+  .. versionadded:: 3.10
+
+  One if processor is 64Bit
+
+``HAS_FPU``
+  .. versionadded:: 3.10
+
+  One if processor has floating point unit
+
+``HAS_MMX``
+  .. versionadded:: 3.10
+
+  One if processor supports MMX instructions
+
+``HAS_MMX_PLUS``
+  .. versionadded:: 3.10
+
+  One if processor supports Ext. MMX instructions
+
+``HAS_SSE``
+  .. versionadded:: 3.10
+
+  One if processor supports SSE instructions
+
+``HAS_SSE2``
+  .. versionadded:: 3.10
+
+  One if processor supports SSE2 instructions
+
+``HAS_SSE_FP``
+  .. versionadded:: 3.10
+
+  One if processor supports SSE FP instructions
+
+``HAS_SSE_MMX``
+  .. versionadded:: 3.10
+
+  One if processor supports SSE MMX instructions
+
+``HAS_AMD_3DNOW``
+  .. versionadded:: 3.10
+
+  One if processor supports 3DNow instructions
+
+``HAS_AMD_3DNOW_PLUS``
+  .. versionadded:: 3.10
+
+  One if processor supports 3DNow+ instructions
+
+``HAS_IA64``
+  .. versionadded:: 3.10
+
+  One if IA64 processor emulating x86
+
+``HAS_SERIAL_NUMBER``
+  .. versionadded:: 3.10
+
+  One if processor has serial number
+
+``PROCESSOR_SERIAL_NUMBER``
+  .. versionadded:: 3.10
+
+  Processor serial number
+
+``PROCESSOR_NAME``
+  .. versionadded:: 3.10
+
+  Human readable processor name
+
+``PROCESSOR_DESCRIPTION``
+  .. versionadded:: 3.10
+
+  Human readable full processor description
+
+``OS_NAME``
+  .. versionadded:: 3.10
+
+  See :variable:`CMAKE_HOST_SYSTEM_NAME`
+
+``OS_RELEASE``
+  .. versionadded:: 3.10
+
+  The OS sub-type e.g. on Windows ``Professional``
+
+``OS_VERSION``
+  .. versionadded:: 3.10
+
+  The OS build ID
+
+``OS_PLATFORM``
+  .. versionadded:: 3.10
+
+  See :variable:`CMAKE_HOST_SYSTEM_PROCESSOR`
+
+``DISTRIB_INFO``
+  .. versionadded:: 3.22
+
+  Read :file:`/etc/os-release` file and define the given ``<variable>``
+  into a list of read variables
+
+``DISTRIB_<name>``
+  .. versionadded:: 3.22
+
+  Get the ``<name>`` variable (see `man 5 os-release`_) if it exists in the
+  :file:`/etc/os-release` file
+
+  Example:
+
+  .. code-block:: cmake
+
+      cmake_host_system_information(RESULT PRETTY_NAME QUERY DISTRIB_PRETTY_NAME)
+      message(STATUS "${PRETTY_NAME}")
+
+      cmake_host_system_information(RESULT DISTRO QUERY DISTRIB_INFO)
+
+      foreach(VAR IN LISTS DISTRO)
+        message(STATUS "${VAR}=`${${VAR}}`")
+      endforeach()
+
+
+  Output::
+
+    -- Ubuntu 20.04.2 LTS
+    -- DISTRO_BUG_REPORT_URL=`https://bugs.launchpad.net/ubuntu/`
+    -- DISTRO_HOME_URL=`https://www.ubuntu.com/`
+    -- DISTRO_ID=`ubuntu`
+    -- DISTRO_ID_LIKE=`debian`
+    -- DISTRO_NAME=`Ubuntu`
+    -- DISTRO_PRETTY_NAME=`Ubuntu 20.04.2 LTS`
+    -- DISTRO_PRIVACY_POLICY_URL=`https://www.ubuntu.com/legal/terms-and-policies/privacy-policy`
+    -- DISTRO_SUPPORT_URL=`https://help.ubuntu.com/`
+    -- DISTRO_UBUNTU_CODENAME=`focal`
+    -- DISTRO_VERSION=`20.04.2 LTS (Focal Fossa)`
+    -- DISTRO_VERSION_CODENAME=`focal`
+    -- DISTRO_VERSION_ID=`20.04`
+
+If :file:`/etc/os-release` file is not found, the command tries to gather OS
+identification via fallback scripts.  The fallback script can use `various
+distribution-specific files`_ to collect OS identification data and map it
+into `man 5 os-release`_ variables.
+
+Fallback Interface Variables
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. variable:: CMAKE_GET_OS_RELEASE_FALLBACK_SCRIPTS
+
+  In addition to the scripts shipped with CMake, a user may append full
+  paths to his script(s) to the this list.  The script filename has the
+  following format: ``NNN-<name>.cmake``, where ``NNN`` is three digits
+  used to apply collected scripts in a specific order.
+
+.. variable:: CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_<varname>
+
+  Variables collected by the user provided fallback script
+  ought to be assigned to CMake variables using this naming
+  convention.  Example, the ``ID`` variable from the manual becomes
+  ``CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_ID``.
+
+.. variable:: CMAKE_GET_OS_RELEASE_FALLBACK_RESULT
+
+  The fallback script ought to store names of all assigned
+  ``CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_<varname>`` variables in this list.
+
+Example:
+
+.. code-block:: cmake
+
+  # Try to detect some old distribution
+  # See also
+  # - http://linuxmafia.com/faq/Admin/release-files.html
+  #
+  if(NOT EXISTS "${CMAKE_SYSROOT}/etc/foobar-release")
+    return()
+  endif()
+  # Get the first string only
+  file(
+      STRINGS "${CMAKE_SYSROOT}/etc/foobar-release" CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT
+      LIMIT_COUNT 1
+    )
+  #
+  # Example:
+  #
+  #   Foobar distribution release 1.2.3 (server)
+  #
+  if(CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT MATCHES "Foobar distribution release ([0-9\.]+) .*")
+    set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_NAME Foobar)
+    set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_PRETTY_NAME "${CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT}")
+    set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_ID foobar)
+    set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION ${CMAKE_MATCH_1})
+    set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION_ID ${CMAKE_MATCH_1})
+    list(
+        APPEND CMAKE_GET_OS_RELEASE_FALLBACK_RESULT
+        CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_NAME
+        CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_PRETTY_NAME
+        CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_ID
+        CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION
+        CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION_ID
+      )
+  endif()
+  unset(CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT)
+
+
+.. rubric:: Footnotes
+
+.. [#mebibytes] One MiB (mebibyte) is equal to 1024x1024 bytes.
+
+.. _man 5 os-release: https://www.freedesktop.org/software/systemd/man/os-release.html
+.. _various distribution-specific files: http://linuxmafia.com/faq/Admin/release-files.html
diff --git a/share/cmake-3.22/Help/command/cmake_language.rst b/share/cmake-3.22/Help/command/cmake_language.rst
new file mode 100644
index 0000000..2859f6b
--- /dev/null
+++ b/share/cmake-3.22/Help/command/cmake_language.rst
@@ -0,0 +1,227 @@
+cmake_language
+--------------
+
+.. versionadded:: 3.18
+
+Call meta-operations on CMake commands.
+
+Synopsis
+^^^^^^^^
+
+.. parsed-literal::
+
+  cmake_language(`CALL`_ <command> [<arg>...])
+  cmake_language(`EVAL`_ CODE <code>...)
+  cmake_language(`DEFER`_ <options>... CALL <command> [<arg>...])
+
+Introduction
+^^^^^^^^^^^^
+
+This command will call meta-operations on built-in CMake commands or
+those created via the :command:`macro` or :command:`function` commands.
+
+``cmake_language`` does not introduce a new variable or policy scope.
+
+Calling Commands
+^^^^^^^^^^^^^^^^
+
+.. _CALL:
+
+.. code-block:: cmake
+
+  cmake_language(CALL <command> [<arg>...])
+
+Calls the named ``<command>`` with the given arguments (if any).
+For example, the code:
+
+.. code-block:: cmake
+
+  set(message_command "message")
+  cmake_language(CALL ${message_command} STATUS "Hello World!")
+
+is equivalent to
+
+.. code-block:: cmake
+
+  message(STATUS "Hello World!")
+
+.. note::
+  To ensure consistency of the code, the following commands are not allowed:
+
+  * ``if`` / ``elseif`` / ``else`` / ``endif``
+  * ``while`` / ``endwhile``
+  * ``foreach`` / ``endforeach``
+  * ``function`` / ``endfunction``
+  * ``macro`` / ``endmacro``
+
+Evaluating Code
+^^^^^^^^^^^^^^^
+
+.. _EVAL:
+
+.. code-block:: cmake
+
+  cmake_language(EVAL CODE <code>...)
+
+Evaluates the ``<code>...`` as CMake code.
+
+For example, the code:
+
+.. code-block:: cmake
+
+  set(A TRUE)
+  set(B TRUE)
+  set(C TRUE)
+  set(condition "(A AND B) OR C")
+
+  cmake_language(EVAL CODE "
+    if (${condition})
+      message(STATUS TRUE)
+    else()
+      message(STATUS FALSE)
+    endif()"
+  )
+
+is equivalent to
+
+.. code-block:: cmake
+
+  set(A TRUE)
+  set(B TRUE)
+  set(C TRUE)
+  set(condition "(A AND B) OR C")
+
+  file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/eval.cmake "
+    if (${condition})
+      message(STATUS TRUE)
+    else()
+      message(STATUS FALSE)
+    endif()"
+  )
+
+  include(${CMAKE_CURRENT_BINARY_DIR}/eval.cmake)
+
+Deferring Calls
+^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.19
+
+.. _DEFER:
+
+.. code-block:: cmake
+
+  cmake_language(DEFER <options>... CALL <command> [<arg>...])
+
+Schedules a call to the named ``<command>`` with the given arguments (if any)
+to occur at a later time.  By default, deferred calls are executed as if
+written at the end of the current directory's ``CMakeLists.txt`` file,
+except that they run even after a :command:`return` call.  Variable
+references in arguments are evaluated at the time the deferred call is
+executed.
+
+The options are:
+
+``DIRECTORY <dir>``
+  Schedule the call for the end of the given directory instead of the
+  current directory.  The ``<dir>`` may reference either a source
+  directory or its corresponding binary directory.  Relative paths are
+  treated as relative to the current source directory.
+
+  The given directory must be known to CMake, being either the top-level
+  directory or one added by :command:`add_subdirectory`.  Furthermore,
+  the given directory must not yet be finished processing.  This means
+  it can be the current directory or one of its ancestors.
+
+``ID <id>``
+  Specify an identification for the deferred call.
+  The ``<id>`` may not be empty and may not begin with a capital letter ``A-Z``.
+  The ``<id>`` may begin with an underscore (``_``) only if it was generated
+  automatically by an earlier call that used ``ID_VAR`` to get the id.
+
+``ID_VAR <var>``
+  Specify a variable in which to store the identification for the
+  deferred call.  If ``ID <id>`` is not given, a new identification
+  will be generated and the generated id will start with an underscore (``_``).
+
+The currently scheduled list of deferred calls may be retrieved:
+
+.. code-block:: cmake
+
+  cmake_language(DEFER [DIRECTORY <dir>] GET_CALL_IDS <var>)
+
+This will store in ``<var>`` a :ref:`semicolon-separated list <CMake Language
+Lists>` of deferred call ids.  The ids are for the directory scope in which
+the calls have been deferred to (i.e. where they will be executed), which can
+be different to the scope in which they were created.  The ``DIRECTORY``
+option can be used to specify the scope for which to retrieve the call ids.
+If that option is not given, the call ids for the current directory scope will
+be returned.
+
+Details of a specific call may be retrieved from its id:
+
+.. code-block:: cmake
+
+  cmake_language(DEFER [DIRECTORY <dir>] GET_CALL <id> <var>)
+
+This will store in ``<var>`` a :ref:`semicolon-separated list <CMake Language
+Lists>` in which the first element is the name of the command to be
+called, and the remaining elements are its unevaluated arguments (any
+contained ``;`` characters are included literally and cannot be distinguished
+from multiple arguments).  If multiple calls are scheduled with the same id,
+this retrieves the first one.  If no call is scheduled with the given id in
+the specified ``DIRECTORY`` scope (or the current directory scope if no
+``DIRECTORY`` option is given), this stores an empty string in the variable.
+
+Deferred calls may be canceled by their id:
+
+.. code-block:: cmake
+
+  cmake_language(DEFER [DIRECTORY <dir>] CANCEL_CALL <id>...)
+
+This cancels all deferred calls matching any of the given ids in the specified
+``DIRECTORY`` scope (or the current directory scope if no ``DIRECTORY`` option
+is given).  Unknown ids are silently ignored.
+
+Deferred Call Examples
+""""""""""""""""""""""
+
+For example, the code:
+
+.. code-block:: cmake
+
+  cmake_language(DEFER CALL message "${deferred_message}")
+  cmake_language(DEFER ID_VAR id CALL message "Canceled Message")
+  cmake_language(DEFER CANCEL_CALL ${id})
+  message("Immediate Message")
+  set(deferred_message "Deferred Message")
+
+prints::
+
+  Immediate Message
+  Deferred Message
+
+The ``Cancelled Message`` is never printed because its command is
+canceled.  The ``deferred_message`` variable reference is not evaluated
+until the call site, so it can be set after the deferred call is scheduled.
+
+In order to evaluate variable references immediately when scheduling a
+deferred call, wrap it using ``cmake_language(EVAL)``.  However, note that
+arguments will be re-evaluated in the deferred call, though that can be
+avoided by using bracket arguments.  For example:
+
+.. code-block:: cmake
+
+  set(deferred_message "Deferred Message 1")
+  set(re_evaluated [[${deferred_message}]])
+  cmake_language(EVAL CODE "
+    cmake_language(DEFER CALL message [[${deferred_message}]])
+    cmake_language(DEFER CALL message \"${re_evaluated}\")
+  ")
+  message("Immediate Message")
+  set(deferred_message "Deferred Message 2")
+
+also prints::
+
+  Immediate Message
+  Deferred Message 1
+  Deferred Message 2
diff --git a/share/cmake-3.22/Help/command/cmake_minimum_required.rst b/share/cmake-3.22/Help/command/cmake_minimum_required.rst
new file mode 100644
index 0000000..d159770
--- /dev/null
+++ b/share/cmake-3.22/Help/command/cmake_minimum_required.rst
@@ -0,0 +1,81 @@
+cmake_minimum_required
+----------------------
+
+Require a minimum version of cmake.
+
+.. code-block:: cmake
+
+  cmake_minimum_required(VERSION <min>[...<policy_max>] [FATAL_ERROR])
+
+.. versionadded:: 3.12
+  The optional ``<policy_max>`` version.
+
+Sets the minimum required version of cmake for a project.
+Also updates the policy settings as explained below.
+
+``<min>`` and the optional ``<policy_max>`` are each CMake versions of the
+form ``major.minor[.patch[.tweak]]``, and the ``...`` is literal.
+
+If the running version of CMake is lower than the ``<min>`` required
+version it will stop processing the project and report an error.
+The optional ``<policy_max>`` version, if specified, must be at least the
+``<min>`` version and affects policy settings as described in `Policy Settings`_.
+If the running version of CMake is older than 3.12, the extra ``...``
+dots will be seen as version component separators, resulting in the
+``...<max>`` part being ignored and preserving the pre-3.12 behavior
+of basing policies on ``<min>``.
+
+This command will set the value of the
+:variable:`CMAKE_MINIMUM_REQUIRED_VERSION` variable to ``<min>``.
+
+The ``FATAL_ERROR`` option is accepted but ignored by CMake 2.6 and
+higher.  It should be specified so CMake versions 2.4 and lower fail
+with an error instead of just a warning.
+
+.. note::
+  Call the ``cmake_minimum_required()`` command at the beginning of
+  the top-level ``CMakeLists.txt`` file even before calling the
+  :command:`project` command.  It is important to establish version
+  and policy settings before invoking other commands whose behavior
+  they may affect.  See also policy :policy:`CMP0000`.
+
+  Calling ``cmake_minimum_required()`` inside a :command:`function`
+  limits some effects to the function scope when invoked.  For example,
+  the :variable:`CMAKE_MINIMUM_REQUIRED_VERSION` variable won't be set
+  in the calling scope.  Functions do not introduce their own policy
+  scope though, so policy settings of the caller *will* be affected
+  (see below).  Due to this mix of things that do and do not affect the
+  calling scope, calling ``cmake_minimum_required()`` inside a function
+  is generally discouraged.
+
+.. _`Policy Settings`:
+
+Policy Settings
+^^^^^^^^^^^^^^^
+
+The ``cmake_minimum_required(VERSION)`` command implicitly invokes the
+:command:`cmake_policy(VERSION)` command to specify that the current
+project code is written for the given range of CMake versions.
+All policies known to the running version of CMake and introduced
+in the ``<min>`` (or ``<max>``, if specified) version or earlier will
+be set to use ``NEW`` behavior.  All policies introduced in later
+versions will be unset.  This effectively requests behavior preferred
+as of a given CMake version and tells newer CMake versions to warn
+about their new policies.
+
+When a ``<min>`` version higher than 2.4 is specified the command
+implicitly invokes
+
+.. code-block:: cmake
+
+  cmake_policy(VERSION <min>[...<max>])
+
+which sets CMake policies based on the range of versions specified.
+When a ``<min>`` version 2.4 or lower is given the command implicitly
+invokes
+
+.. code-block:: cmake
+
+  cmake_policy(VERSION 2.4[...<max>])
+
+which enables compatibility features for CMake 2.4 and lower.
diff --git a/share/cmake-3.22/Help/command/cmake_parse_arguments.rst b/share/cmake-3.22/Help/command/cmake_parse_arguments.rst
new file mode 100644
index 0000000..7c85da6
--- /dev/null
+++ b/share/cmake-3.22/Help/command/cmake_parse_arguments.rst
@@ -0,0 +1,115 @@
+cmake_parse_arguments
+---------------------
+
+Parse function or macro arguments.
+
+.. code-block:: cmake
+
+  cmake_parse_arguments(<prefix> <options> <one_value_keywords>
+                        <multi_value_keywords> <args>...)
+
+  cmake_parse_arguments(PARSE_ARGV <N> <prefix> <options>
+                        <one_value_keywords> <multi_value_keywords>)
+
+.. versionadded:: 3.5
+  This command is implemented natively.  Previously, it has been defined in the
+  module :module:`CMakeParseArguments`.
+
+This command is for use in macros or functions.
+It processes the arguments given to that macro or function,
+and defines a set of variables which hold the values of the
+respective options.
+
+The first signature reads processes arguments passed in the ``<args>...``.
+This may be used in either a :command:`macro` or a :command:`function`.
+
+.. versionadded:: 3.7
+  The ``PARSE_ARGV`` signature is only for use in a :command:`function`
+  body.  In this case the arguments that are parsed come from the
+  ``ARGV#`` variables of the calling function.  The parsing starts with
+  the ``<N>``-th argument, where ``<N>`` is an unsigned integer.
+  This allows for the values to have special characters like ``;`` in them.
+
+The ``<options>`` argument contains all options for the respective macro,
+i.e.  keywords which can be used when calling the macro without any value
+following, like e.g.  the ``OPTIONAL`` keyword of the :command:`install`
+command.
+
+The ``<one_value_keywords>`` argument contains all keywords for this macro
+which are followed by one value, like e.g. ``DESTINATION`` keyword of the
+:command:`install` command.
+
+The ``<multi_value_keywords>`` argument contains all keywords for this
+macro which can be followed by more than one value, like e.g. the
+``TARGETS`` or ``FILES`` keywords of the :command:`install` command.
+
+.. versionchanged:: 3.5
+  All keywords shall be unique. I.e. every keyword shall only be specified
+  once in either ``<options>``, ``<one_value_keywords>`` or
+  ``<multi_value_keywords>``. A warning will be emitted if uniqueness is
+  violated.
+
+When done, ``cmake_parse_arguments`` will consider for each of the
+keywords listed in ``<options>``, ``<one_value_keywords>`` and
+``<multi_value_keywords>`` a variable composed of the given ``<prefix>``
+followed by ``"_"`` and the name of the respective keyword.  These
+variables will then hold the respective value from the argument list
+or be undefined if the associated option could not be found.
+For the ``<options>`` keywords, these will always be defined,
+to ``TRUE`` or ``FALSE``, whether the option is in the argument list or not.
+
+All remaining arguments are collected in a variable
+``<prefix>_UNPARSED_ARGUMENTS`` that will be undefined if all arguments
+were recognized. This can be checked afterwards to see
+whether your macro was called with unrecognized parameters.
+
+.. versionadded:: 3.15
+   ``<one_value_keywords>`` and ``<multi_value_keywords>`` that were given no
+   values at all are collected in a variable
+   ``<prefix>_KEYWORDS_MISSING_VALUES`` that will be undefined if all keywords
+   received values. This can be checked to see if there were keywords without
+   any values given.
+
+Consider the following example macro, ``my_install()``, which takes similar
+arguments to the real :command:`install` command:
+
+.. code-block:: cmake
+
+   macro(my_install)
+       set(options OPTIONAL FAST)
+       set(oneValueArgs DESTINATION RENAME)
+       set(multiValueArgs TARGETS CONFIGURATIONS)
+       cmake_parse_arguments(MY_INSTALL "${options}" "${oneValueArgs}"
+                             "${multiValueArgs}" ${ARGN} )
+
+       # ...
+
+Assume ``my_install()`` has been called like this:
+
+.. code-block:: cmake
+
+   my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub CONFIGURATIONS)
+
+After the ``cmake_parse_arguments`` call the macro will have set or undefined
+the following variables::
+
+   MY_INSTALL_OPTIONAL = TRUE
+   MY_INSTALL_FAST = FALSE # was not used in call to my_install
+   MY_INSTALL_DESTINATION = "bin"
+   MY_INSTALL_RENAME <UNDEFINED> # was not used
+   MY_INSTALL_TARGETS = "foo;bar"
+   MY_INSTALL_CONFIGURATIONS <UNDEFINED> # was not used
+   MY_INSTALL_UNPARSED_ARGUMENTS = "blub" # nothing expected after "OPTIONAL"
+   MY_INSTALL_KEYWORDS_MISSING_VALUES = "CONFIGURATIONS"
+            # No value for "CONFIGURATIONS" given
+
+You can then continue and process these variables.
+
+Keywords terminate lists of values, e.g. if directly after a
+``one_value_keyword`` another recognized keyword follows, this is
+interpreted as the beginning of the new option.  E.g.
+``my_install(TARGETS foo DESTINATION OPTIONAL)`` would result in
+``MY_INSTALL_DESTINATION`` set to ``"OPTIONAL"``, but as ``OPTIONAL``
+is a keyword itself ``MY_INSTALL_DESTINATION`` will be empty (but added
+to ``MY_INSTALL_KEYWORDS_MISSING_VALUES``) and ``MY_INSTALL_OPTIONAL`` will
+therefore be set to ``TRUE``.
diff --git a/share/cmake-3.22/Help/command/cmake_path.rst b/share/cmake-3.22/Help/command/cmake_path.rst
new file mode 100644
index 0000000..454c860
--- /dev/null
+++ b/share/cmake-3.22/Help/command/cmake_path.rst
@@ -0,0 +1,786 @@
+cmake_path
+----------
+
+.. versionadded:: 3.20
+
+This command is for the manipulation of paths.  Only syntactic aspects of
+paths are handled, there is no interaction of any kind with any underlying
+file system.  The path may represent a non-existing path or even one that
+is not allowed to exist on the current file system or platform.
+For operations that do interact with the filesystem, see the :command:`file`
+command.
+
+.. note::
+
+  The ``cmake_path`` command handles paths in the format of the build system
+  (i.e. the host platform), not the target system.  When cross-compiling,
+  if the path contains elements that are not representable on the host
+  platform (e.g. a drive letter when the host is not Windows), the results
+  will be unpredictable.
+
+Synopsis
+^^^^^^^^
+
+.. parsed-literal::
+
+  `Conventions`_
+
+  `Path Structure And Terminology`_
+
+  `Normalization`_
+
+  `Decomposition`_
+    cmake_path(`GET`_ <path-var> :ref:`ROOT_NAME <GET_ROOT_NAME>` <out-var>)
+    cmake_path(`GET`_ <path-var> :ref:`ROOT_DIRECTORY <GET_ROOT_DIRECTORY>` <out-var>)
+    cmake_path(`GET`_ <path-var> :ref:`ROOT_PATH <GET_ROOT_PATH>` <out-var>)
+    cmake_path(`GET`_ <path-var> :ref:`FILENAME <GET_FILENAME>` <out-var>)
+    cmake_path(`GET`_ <path-var> :ref:`EXTENSION <GET_EXTENSION>` [LAST_ONLY] <out-var>)
+    cmake_path(`GET`_ <path-var> :ref:`STEM <GET_STEM>` [LAST_ONLY] <out-var>)
+    cmake_path(`GET`_ <path-var> :ref:`RELATIVE_PART <GET_RELATIVE_PART>` <out-var>)
+    cmake_path(`GET`_ <path-var> :ref:`PARENT_PATH <GET_PARENT_PATH>` <out-var>)
+
+  `Query`_
+    cmake_path(`HAS_ROOT_NAME`_ <path-var> <out-var>)
+    cmake_path(`HAS_ROOT_DIRECTORY`_ <path-var> <out-var>)
+    cmake_path(`HAS_ROOT_PATH`_ <path-var> <out-var>)
+    cmake_path(`HAS_FILENAME`_ <path-var> <out-var>)
+    cmake_path(`HAS_EXTENSION`_ <path-var> <out-var>)
+    cmake_path(`HAS_STEM`_ <path-var> <out-var>)
+    cmake_path(`HAS_RELATIVE_PART`_ <path-var> <out-var>)
+    cmake_path(`HAS_PARENT_PATH`_ <path-var> <out-var>)
+    cmake_path(`IS_ABSOLUTE`_ <path-var> <out-var>)
+    cmake_path(`IS_RELATIVE`_ <path-var> <out-var>)
+    cmake_path(`IS_PREFIX`_ <path-var> <input> [NORMALIZE] <out-var>)
+    cmake_path(`COMPARE`_ <input1> <OP> <input2> <out-var>)
+
+  `Modification`_
+    cmake_path(:ref:`SET <cmake_path-SET>` <path-var> [NORMALIZE] <input>)
+    cmake_path(`APPEND`_ <path-var> [<input>...] [OUTPUT_VARIABLE <out-var>])
+    cmake_path(`APPEND_STRING`_ <path-var> [<input>...] [OUTPUT_VARIABLE <out-var>])
+    cmake_path(`REMOVE_FILENAME`_ <path-var> [OUTPUT_VARIABLE <out-var>])
+    cmake_path(`REPLACE_FILENAME`_ <path-var> <input> [OUTPUT_VARIABLE <out-var>])
+    cmake_path(`REMOVE_EXTENSION`_ <path-var> [LAST_ONLY] [OUTPUT_VARIABLE <out-var>])
+    cmake_path(`REPLACE_EXTENSION`_ <path-var> [LAST_ONLY] <input> [OUTPUT_VARIABLE <out-var>])
+
+  `Generation`_
+    cmake_path(`NORMAL_PATH`_ <path-var> [OUTPUT_VARIABLE <out-var>])
+    cmake_path(`RELATIVE_PATH`_ <path-var> [BASE_DIRECTORY <input>] [OUTPUT_VARIABLE <out-var>])
+    cmake_path(`ABSOLUTE_PATH`_ <path-var> [BASE_DIRECTORY <input>] [NORMALIZE] [OUTPUT_VARIABLE <out-var>])
+
+  `Native Conversion`_
+    cmake_path(`NATIVE_PATH`_ <path-var> [NORMALIZE] <out-var>)
+    cmake_path(`CONVERT`_ <input> `TO_CMAKE_PATH_LIST`_ <out-var> [NORMALIZE])
+    cmake_path(`CONVERT`_ <input> `TO_NATIVE_PATH_LIST`_ <out-var> [NORMALIZE])
+
+  `Hashing`_
+    cmake_path(`HASH`_ <path-var> <out-var>)
+
+Conventions
+^^^^^^^^^^^
+
+The following conventions are used in this command's documentation:
+
+``<path-var>``
+  Always the name of a variable.  For commands that expect a ``<path-var>``
+  as input, the variable must exist and it is expected to hold a single path.
+
+``<input>``
+  A string literal which may contain a path, path fragment, or multiple paths
+  with a special separator depending on the command.  See the description of
+  each command to see how this is interpreted.
+
+``<input>...``
+  Zero or more string literal arguments.
+
+``<out-var>``
+  The name of a variable into which the result of a command will be written.
+
+
+Path Structure And Terminology
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A path has the following structure (all components are optional, with some
+constraints):
+
+::
+
+  root-name root-directory-separator (item-name directory-separator)* filename
+
+``root-name``
+  Identifies the root on a filesystem with multiple roots (such as ``"C:"``
+  or ``"//myserver"``). It is optional.
+
+``root-directory-separator``
+  A directory separator that, if present, indicates that this path is
+  absolute.  If it is missing and the first element other than the
+  ``root-name`` is an ``item-name``, then the path is relative.
+
+``item-name``
+  A sequence of characters that aren't directory separators.  This name may
+  identify a file, a hard link, a symbolic link, or a directory.  Two special
+  cases are recognized:
+
+    * The item name consisting of a single dot character ``.`` is a
+      directory name that refers to the current directory.
+
+    * The item name consisting of two dot characters ``..`` is a
+      directory name that refers to the parent directory.
+
+  The ``(...)*`` pattern shown above is to indicate that there can be zero
+  or more item names, with multiple items separated by a
+  ``directory-separator``.  The ``()*`` characters are not part of the path.
+
+``directory-separator``
+  The only recognized directory separator is a forward slash character ``/``.
+  If this character is repeated, it is treated as a single directory
+  separator.  In other words, ``/usr///////lib`` is the same as ``/usr/lib``.
+
+.. _FILENAME_DEF:
+.. _EXTENSION_DEF:
+.. _STEM_DEF:
+
+``filename``
+  A path has a ``filename`` if it does not end with a ``directory-separator``.
+  The ``filename`` is effectively the last ``item-name`` of the path, so it
+  can also be a hard link, symbolic link or a directory.
+
+  A ``filename`` can have an *extension*.  By default, the extension is
+  defined as the sub-string beginning at the left-most period (including
+  the period) and until the end of the ``filename``.  In commands that
+  accept a ``LAST_ONLY`` keyword, ``LAST_ONLY`` changes the interpretation
+  to the sub-string beginning at the right-most period.
+
+  The following exceptions apply to the above interpretation:
+
+    * If the first character in the ``filename`` is a period, that period is
+      ignored (i.e. a ``filename`` like ``".profile"`` is treated as having
+      no extension).
+
+    * If the ``filename`` is either ``.`` or ``..``, it has no extension.
+
+  The *stem* is the part of the ``filename`` before the extension.
+
+Some commands refer to a ``root-path``.  This is the concatenation of
+``root-name`` and ``root-directory-separator``, either or both of which can
+be empty.  A ``relative-part`` refers to the full path with any ``root-path``
+removed.
+
+
+Creating A Path Variable
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+While a path can be created with care using an ordinary :command:`set`
+command, it is recommended to use :ref:`cmake_path(SET) <cmake_path-SET>`
+instead, as it automatically converts the path to the required form where
+required.  The :ref:`cmake_path(APPEND) <APPEND>` subcommand may
+be another suitable alternative where a path needs to be constructed by
+joining fragments.  The following example compares the three methods for
+constructing the same path:
+
+.. code-block:: cmake
+
+  set(path1 "${CMAKE_CURRENT_SOURCE_DIR}/data")
+
+  cmake_path(SET path2 "${CMAKE_CURRENT_SOURCE_DIR}/data")
+
+  cmake_path(APPEND path3 "${CMAKE_CURRENT_SOURCE_DIR}" "data")
+
+`Modification`_ and `Generation`_ sub-commands can either store the result
+in-place, or in a separate variable named after an ``OUTPUT_VARIABLE``
+keyword.  All other sub-commands store the result in a mandatory ``<out-var>``
+variable.
+
+.. _Normalization:
+
+Normalization
+^^^^^^^^^^^^^
+
+Some sub-commands support *normalizing* a path.  The algorithm used to
+normalize a path is as follows:
+
+1. If the path is empty, stop (the normalized form of an empty path is
+   also an empty path).
+2. Replace each ``directory-separator``, which may consist of multiple
+   separators, with a single ``/`` (``/a///b  --> /a/b``).
+3. Remove each solitary period (``.``) and any immediately following
+   ``directory-separator`` (``/a/./b/. --> /a/b``).
+4. Remove each ``item-name`` (other than ``..``) that is immediately
+   followed by a ``directory-separator`` and a ``..``, along with any
+   immediately following ``directory-separator`` (``/a/b/../c --> a/c``).
+5. If there is a ``root-directory``, remove any ``..`` and any
+   ``directory-separators`` immediately following them.  The parent of the
+   root directory is treated as still the root directory (``/../a --> /a``).
+6. If the last ``item-name`` is ``..``, remove any trailing
+   ``directory-separator`` (``../ --> ..``).
+7. If the path is empty by this stage, add a ``dot`` (normal form of ``./``
+   is ``.``).
+
+
+Decomposition
+^^^^^^^^^^^^^
+
+.. _GET:
+.. _GET_ROOT_NAME:
+.. _GET_ROOT_DIRECTORY:
+.. _GET_ROOT_PATH:
+.. _GET_FILENAME:
+.. _GET_EXTENSION:
+.. _GET_STEM:
+.. _GET_RELATIVE_PART:
+.. _GET_PARENT_PATH:
+
+The following forms of the ``GET`` subcommand each retrieve a different
+component or group of components from a path.  See
+`Path Structure And Terminology`_ for the meaning of each path component.
+
+::
+
+  cmake_path(GET <path-var> ROOT_NAME <out-var>)
+  cmake_path(GET <path-var> ROOT_DIRECTORY <out-var>)
+  cmake_path(GET <path-var> ROOT_PATH <out-var>)
+  cmake_path(GET <path-var> FILENAME <out-var>)
+  cmake_path(GET <path-var> EXTENSION [LAST_ONLY] <out-var>)
+  cmake_path(GET <path-var> STEM [LAST_ONLY] <out-var>)
+  cmake_path(GET <path-var> RELATIVE_PART <out-var>)
+  cmake_path(GET <path-var> PARENT_PATH <out-var>)
+
+If a requested component is not present in the path, an empty string will be
+stored in ``<out-var>``.  For example, only Windows systems have the concept
+of a ``root-name``, so when the host machine is non-Windows, the ``ROOT_NAME``
+subcommand will always return an empty string.
+
+For ``PARENT_PATH``, if the `HAS_RELATIVE_PART`_ subcommand returns false,
+the result is a copy of ``<path-var>``.  Note that this implies that a root
+directory is considered to have a parent, with that parent being itself.
+Where `HAS_RELATIVE_PART`_ returns true, the result will essentially be
+``<path-var>`` with one less element.
+
+Root examples
+"""""""""""""
+
+.. code-block:: cmake
+
+  set(path "c:/a")
+
+  cmake_path(GET path ROOT_NAME rootName)
+  cmake_path(GET path ROOT_DIRECTORY rootDir)
+  cmake_path(GET path ROOT_PATH rootPath)
+
+  message("Root name is \"${rootName}\"")
+  message("Root directory is \"${rootDir}\"")
+  message("Root path is \"${rootPath}\"")
+
+::
+
+  Root name is "c:"
+  Root directory is "/"
+  Root path is "c:/"
+
+Filename examples
+"""""""""""""""""
+
+.. code-block:: cmake
+
+  set(path "/a/b")
+  cmake_path(GET path FILENAME filename)
+  message("First filename is \"${filename}\"")
+
+  # Trailing slash means filename is empty
+  set(path "/a/b/")
+  cmake_path(GET path FILENAME filename)
+  message("Second filename is \"${filename}\"")
+
+::
+
+  First filename is "b"
+  Second filename is ""
+
+Extension and stem examples
+"""""""""""""""""""""""""""
+
+.. code-block:: cmake
+
+  set(path "name.ext1.ext2")
+
+  cmake_path(GET path EXTENSION fullExt)
+  cmake_path(GET path STEM fullStem)
+  message("Full extension is \"${fullExt}\"")
+  message("Full stem is \"${fullStem}\"")
+
+  # Effect of LAST_ONLY
+  cmake_path(GET path EXTENSION LAST_ONLY lastExt)
+  cmake_path(GET path STEM LAST_ONLY lastStem)
+  message("Last extension is \"${lastExt}\"")
+  message("Last stem is \"${lastStem}\"")
+
+  # Special cases
+  set(dotPath "/a/.")
+  set(dotDotPath "/a/..")
+  set(someMorePath "/a/.some.more")
+  cmake_path(GET dotPath EXTENSION dotExt)
+  cmake_path(GET dotPath STEM dotStem)
+  cmake_path(GET dotDotPath EXTENSION dotDotExt)
+  cmake_path(GET dotDotPath STEM dotDotStem)
+  cmake_path(GET dotMorePath EXTENSION someMoreExt)
+  cmake_path(GET dotMorePath STEM someMoreStem)
+  message("Dot extension is \"${dotExt}\"")
+  message("Dot stem is \"${dotStem}\"")
+  message("Dot-dot extension is \"${dotDotExt}\"")
+  message("Dot-dot stem is \"${dotDotStem}\"")
+  message(".some.more extension is \"${someMoreExt}\"")
+  message(".some.more stem is \"${someMoreStem}\"")
+
+::
+
+  Full extension is ".ext1.ext2"
+  Full stem is "name"
+  Last extension is ".ext2"
+  Last stem is "name.ext1"
+  Dot extension is ""
+  Dot stem is "."
+  Dot-dot extension is ""
+  Dot-dot stem is ".."
+  .some.more extension is ".more"
+  .some.more stem is ".some"
+
+Relative part examples
+""""""""""""""""""""""
+
+.. code-block:: cmake
+
+  set(path "c:/a/b")
+  cmake_path(GET path RELATIVE_PART result)
+  message("Relative part is \"${result}\"")
+
+  set(path "c/d")
+  cmake_path(GET path RELATIVE_PART result)
+  message("Relative part is \"${result}\"")
+
+  set(path "/")
+  cmake_path(GET path RELATIVE_PART result)
+  message("Relative part is \"${result}\"")
+
+::
+
+  Relative part is "a/b"
+  Relative part is "c/d"
+  Relative part is ""
+
+Path traversal examples
+"""""""""""""""""""""""
+
+.. code-block:: cmake
+
+  set(path "c:/a/b")
+  cmake_path(GET path PARENT_PATH result)
+  message("Parent path is \"${result}\"")
+
+  set(path "c:/")
+  cmake_path(GET path PARENT_PATH result)
+  message("Parent path is \"${result}\"")
+
+::
+
+  Parent path is "c:/a"
+  Parent path is "c:/"
+
+
+Query
+^^^^^
+
+Each of the ``GET`` subcommands has a corresponding ``HAS_...``
+subcommand which can be used to discover whether a particular path
+component is present.  See `Path Structure And Terminology`_ for the
+meaning of each path component.
+
+.. _HAS_ROOT_NAME:
+.. _HAS_ROOT_DIRECTORY:
+.. _HAS_ROOT_PATH:
+.. _HAS_FILENAME:
+.. _HAS_EXTENSION:
+.. _HAS_STEM:
+.. _HAS_RELATIVE_PART:
+.. _HAS_PARENT_PATH:
+
+::
+
+  cmake_path(HAS_ROOT_NAME <path-var> <out-var>)
+  cmake_path(HAS_ROOT_DIRECTORY <path-var> <out-var>)
+  cmake_path(HAS_ROOT_PATH <path-var> <out-var>)
+  cmake_path(HAS_FILENAME <path-var> <out-var>)
+  cmake_path(HAS_EXTENSION <path-var> <out-var>)
+  cmake_path(HAS_STEM <path-var> <out-var>)
+  cmake_path(HAS_RELATIVE_PART <path-var> <out-var>)
+  cmake_path(HAS_PARENT_PATH <path-var> <out-var>)
+
+Each of the above follows the predictable pattern of setting ``<out-var>``
+to true if the path has the associated component, or false otherwise.
+Note the following special cases:
+
+* For ``HAS_ROOT_PATH``, a true result will only be returned if at least one
+  of ``root-name`` or ``root-directory`` is non-empty.
+
+* For ``HAS_PARENT_PATH``, the root directory is also considered to have a
+  parent, which will be itself.  The result is true except if the path
+  consists of just a :ref:`filename <FILENAME_DEF>`.
+
+.. _IS_ABSOLUTE:
+
+::
+
+  cmake_path(IS_ABSOLUTE <path-var> <out-var>)
+
+Sets ``<out-var>`` to true if ``<path-var>`` is absolute.  An absolute path
+is a path that unambiguously identifies the location of a file without
+reference to an additional starting location.  On Windows, this means the
+path must have both a ``root-name`` and a ``root-directory-separator`` to be
+considered absolute.  On other platforms, just a ``root-directory-separator``
+is sufficient.  Note that this means on Windows, ``IS_ABSOLUTE`` can be
+false while ``HAS_ROOT_DIRECTORY`` can be true.
+
+.. _IS_RELATIVE:
+
+::
+
+  cmake_path(IS_RELATIVE <path-var> <out-var>)
+
+This will store the opposite of ``IS_ABSOLUTE`` in ``<out-var>``.
+
+.. _IS_PREFIX:
+
+::
+
+  cmake_path(IS_PREFIX <path-var> <input> [NORMALIZE] <out-var>)
+
+Checks if ``<path-var>`` is the prefix of ``<input>``.
+
+When the ``NORMALIZE`` option is specified, ``<path-var>`` and ``<input>``
+are :ref:`normalized <Normalization>` before the check.
+
+.. code-block:: cmake
+
+  set(path "/a/b/c")
+  cmake_path(IS_PREFIX path "/a/b/c/d" result) # result = true
+  cmake_path(IS_PREFIX path "/a/b" result)     # result = false
+  cmake_path(IS_PREFIX path "/x/y/z" result)   # result = false
+
+  set(path "/a/b")
+  cmake_path(IS_PREFIX path "/a/c/../b" NORMALIZE result)   # result = true
+
+.. _COMPARE:
+
+::
+
+  cmake_path(COMPARE <input1> EQUAL <input2> <out-var>)
+  cmake_path(COMPARE <input1> NOT_EQUAL <input2> <out-var>)
+
+Compares the lexical representations of two paths provided as string literals.
+No normalization is performed on either path.  Equality is determined
+according to the following pseudo-code logic:
+
+::
+
+  if(NOT <input1>.root_name() STREQUAL <input2>.root_name())
+    return FALSE
+
+  if(<input1>.has_root_directory() XOR <input2>.has_root_directory())
+    return FALSE
+
+  Return FALSE if a relative portion of <input1> is not lexicographically
+  equal to the relative portion of <input2>. This comparison is performed path
+  component-wise. If all of the components compare equal, then return TRUE.
+
+.. note::
+  Unlike most other ``cmake_path()`` subcommands, the ``COMPARE`` subcommand
+  takes literal strings as input, not the names of variables.
+
+
+Modification
+^^^^^^^^^^^^
+
+.. _cmake_path-SET:
+
+::
+
+  cmake_path(SET <path-var> [NORMALIZE] <input>)
+
+Assign the ``<input>`` path to ``<path-var>``.  If ``<input>`` is a native
+path, it is converted into a cmake-style path with forward-slashes
+(``/``). On Windows, the long filename marker is taken into account.
+
+When the ``NORMALIZE`` option is specified, the path is :ref:`normalized
+<Normalization>` before the conversion.
+
+For example:
+
+.. code-block:: cmake
+
+  set(native_path "c:\\a\\b/..\\c")
+  cmake_path(SET path "${native_path}")
+  message("CMake path is \"${path}\"")
+
+  cmake_path(SET path NORMALIZE "${native_path}")
+  message("Normalized CMake path is \"${path}\"")
+
+Output::
+
+  CMake path is "c:/a/b/../c"
+  Normalized CMake path is "c:/a/c"
+
+.. _APPEND:
+
+::
+
+  cmake_path(APPEND <path-var> [<input>...] [OUTPUT_VARIABLE <out-var>])
+
+Append all the ``<input>`` arguments to the ``<path-var>`` using ``/`` as
+the ``directory-separator``.  Depending on the ``<input>``, the previous
+contents of ``<path-var>`` may be discarded.  For each ``<input>`` argument,
+the following algorithm (pseudo-code) applies:
+
+::
+
+  # <path> is the contents of <path-var>
+
+  if(<input>.is_absolute() OR
+     (<input>.has_root_name() AND
+      NOT <input>.root_name() STREQUAL <path>.root_name()))
+    replace <path> with <input>
+    return()
+  endif()
+
+  if(<input>.has_root_directory())
+    remove any root-directory and the entire relative path from <path>
+  elseif(<path>.has_filename() OR
+         (NOT <path-var>.has_root_directory() OR <path>.is_absolute()))
+    append directory-separator to <path>
+  endif()
+
+  append <input> omitting any root-name to <path>
+
+.. _APPEND_STRING:
+
+::
+
+  cmake_path(APPEND_STRING <path-var> [<input>...] [OUTPUT_VARIABLE <out-var>])
+
+Append all the ``<input>`` arguments to the ``<path-var>`` without adding any
+``directory-separator``.
+
+.. _REMOVE_FILENAME:
+
+::
+
+  cmake_path(REMOVE_FILENAME <path-var> [OUTPUT_VARIABLE <out-var>])
+
+Removes the :ref:`filename <FILENAME_DEF>` component (as returned by
+:ref:`GET ... FILENAME <GET_FILENAME>`) from ``<path-var>``.  After removal,
+any trailing ``directory-separator`` is left alone, if present.
+
+If ``OUTPUT_VARIABLE`` is not given, then after this function returns,
+`HAS_FILENAME`_ returns false for ``<path-var>``.
+
+For example:
+
+.. code-block:: cmake
+
+  set(path "/a/b")
+  cmake_path(REMOVE_FILENAME path)
+  message("First path is \"${path}\"")
+
+  # filename is now already empty, the following removes nothing
+  cmake_path(REMOVE_FILENAME path)
+  message("Second path is \"${result}\"")
+
+Output::
+
+  First path is "/a/"
+  Second path is "/a/"
+
+.. _REPLACE_FILENAME:
+
+::
+
+  cmake_path(REPLACE_FILENAME <path-var> <input> [OUTPUT_VARIABLE <out-var>])
+
+Replaces the :ref:`filename <FILENAME_DEF>` component from ``<path-var>``
+with ``<input>``.  If ``<path-var>`` has no filename component (i.e.
+`HAS_FILENAME`_ returns false), the path is unchanged.  The operation is
+equivalent to the following:
+
+.. code-block:: cmake
+
+  cmake_path(HAS_FILENAME path has_filename)
+  if(has_filename)
+    cmake_path(REMOVE_FILENAME path)
+    cmake_path(APPEND path input);
+  endif()
+
+.. _REMOVE_EXTENSION:
+
+::
+
+  cmake_path(REMOVE_EXTENSION <path-var> [LAST_ONLY]
+                                         [OUTPUT_VARIABLE <out-var>])
+
+Removes the :ref:`extension <EXTENSION_DEF>`, if any, from ``<path-var>``.
+
+.. _REPLACE_EXTENSION:
+
+::
+
+  cmake_path(REPLACE_EXTENSION <path-var> [LAST_ONLY] <input>
+                               [OUTPUT_VARIABLE <out-var>])
+
+Replaces the :ref:`extension <EXTENSION_DEF>` with ``<input>``.  Its effect
+is equivalent to the following:
+
+.. code-block:: cmake
+
+  cmake_path(REMOVE_EXTENSION path)
+  if(NOT "input" MATCHES "^\\.")
+    cmake_path(APPEND_STRING path ".")
+  endif()
+  cmake_path(APPEND_STRING path "input")
+
+
+Generation
+^^^^^^^^^^
+
+.. _NORMAL_PATH:
+
+::
+
+  cmake_path(NORMAL_PATH <path-var> [OUTPUT_VARIABLE <out-var>])
+
+Normalize ``<path-var>`` according the steps described in :ref:`Normalization`.
+
+.. _cmake_path-RELATIVE_PATH:
+.. _RELATIVE_PATH:
+
+::
+
+  cmake_path(RELATIVE_PATH <path-var> [BASE_DIRECTORY <input>]
+                                      [OUTPUT_VARIABLE <out-var>])
+
+Modifies ``<path-var>`` to make it relative to the ``BASE_DIRECTORY`` argument.
+If ``BASE_DIRECTORY`` is not specified, the default base directory will be
+:variable:`CMAKE_CURRENT_SOURCE_DIR`.
+
+For reference, the algorithm used to compute the relative path is the same
+as that used by C++
+`std::filesystem::path::lexically_relative
+<https://en.cppreference.com/w/cpp/filesystem/path/lexically_normal>`_.
+
+.. _ABSOLUTE_PATH:
+
+::
+
+  cmake_path(ABSOLUTE_PATH <path-var> [BASE_DIRECTORY <input>] [NORMALIZE]
+                                      [OUTPUT_VARIABLE <out-var>])
+
+If ``<path-var>`` is a relative path (`IS_RELATIVE`_ is true), it is evaluated
+relative to the given base directory specified by ``BASE_DIRECTORY`` option.
+If ``BASE_DIRECTORY`` is not specified, the default base directory will be
+:variable:`CMAKE_CURRENT_SOURCE_DIR`.
+
+When the ``NORMALIZE`` option is specified, the path is :ref:`normalized
+<Normalization>` after the path computation.
+
+Because ``cmake_path()`` does not access the filesystem, symbolic links are
+not resolved and any leading tilde is not expanded.  To compute a real path
+with symbolic links resolved and leading tildes expanded, use the
+:command:`file(REAL_PATH)` command instead.
+
+Native Conversion
+^^^^^^^^^^^^^^^^^
+
+For commands in this section, *native* refers to the host platform, not the
+target platform when cross-compiling.
+
+.. _cmake_path-NATIVE_PATH:
+.. _NATIVE_PATH:
+
+::
+
+  cmake_path(NATIVE_PATH <path-var> [NORMALIZE] <out-var>)
+
+Converts a cmake-style ``<path-var>`` into a native path with
+platform-specific slashes (``\`` on Windows hosts and ``/`` elsewhere).
+
+When the ``NORMALIZE`` option is specified, the path is :ref:`normalized
+<Normalization>` before the conversion.
+
+.. _CONVERT:
+.. _cmake_path-TO_CMAKE_PATH_LIST:
+.. _TO_CMAKE_PATH_LIST:
+
+::
+
+  cmake_path(CONVERT <input> TO_CMAKE_PATH_LIST <out-var> [NORMALIZE])
+
+Converts a native ``<input>`` path into a cmake-style path with forward
+slashes (``/``).  On Windows hosts, the long filename marker is taken into
+account.  The input can be a single path or a system search path like
+``$ENV{PATH}``.  A search path will be converted to a cmake-style list
+separated by ``;`` characters (on non-Windows platforms, this essentially
+means ``:`` separators are replaced with ``;``).  The result of the
+conversion is stored in the ``<out-var>`` variable.
+
+When the ``NORMALIZE`` option is specified, the path is :ref:`normalized
+<Normalization>` before the conversion.
+
+.. note::
+  Unlike most other ``cmake_path()`` subcommands, the ``CONVERT`` subcommand
+  takes a literal string as input, not the name of a variable.
+
+.. _cmake_path-TO_NATIVE_PATH_LIST:
+.. _TO_NATIVE_PATH_LIST:
+
+::
+
+  cmake_path(CONVERT <input> TO_NATIVE_PATH_LIST <out-var> [NORMALIZE])
+
+Converts a cmake-style ``<input>`` path into a native path with
+platform-specific slashes (``\`` on Windows hosts and ``/`` elsewhere).
+The input can be a single path or a cmake-style list.  A list will be
+converted into a native search path (``;``-separated on Windows,
+``:``-separated on other platforms).  The result of the conversion is
+stored in the ``<out-var>`` variable.
+
+When the ``NORMALIZE`` option is specified, the path is :ref:`normalized
+<Normalization>` before the conversion.
+
+.. note::
+  Unlike most other ``cmake_path()`` subcommands, the ``CONVERT`` subcommand
+  takes a literal string as input, not the name of a variable.
+
+For example:
+
+.. code-block:: cmake
+
+  set(paths "/a/b/c" "/x/y/z")
+  cmake_path(CONVERT "${paths}" TO_NATIVE_PATH_LIST native_paths)
+  message("Native path list is \"${native_paths}\"")
+
+Output on Windows::
+
+  Native path list is "\a\b\c;\x\y\z"
+
+Output on all other platforms::
+
+  Native path list is "/a/b/c:/x/y/z"
+
+Hashing
+^^^^^^^
+
+.. _HASH:
+
+::
+
+    cmake_path(HASH <path-var> <out-var>)
+
+Compute a hash value of ``<path-var>`` such that for two paths ``p1`` and
+``p2`` that compare equal (:ref:`COMPARE ... EQUAL <COMPARE>`), the hash
+value of ``p1`` is equal to the hash value of ``p2``.  The path is always
+:ref:`normalized <Normalization>` before the hash is computed.
diff --git a/share/cmake-3.22/Help/command/cmake_policy.rst b/share/cmake-3.22/Help/command/cmake_policy.rst
new file mode 100644
index 0000000..94060d9
--- /dev/null
+++ b/share/cmake-3.22/Help/command/cmake_policy.rst
@@ -0,0 +1,111 @@
+cmake_policy
+------------
+
+Manage CMake Policy settings.  See the :manual:`cmake-policies(7)`
+manual for defined policies.
+
+As CMake evolves it is sometimes necessary to change existing behavior
+in order to fix bugs or improve implementations of existing features.
+The CMake Policy mechanism is designed to help keep existing projects
+building as new versions of CMake introduce changes in behavior.  Each
+new policy (behavioral change) is given an identifier of the form
+``CMP<NNNN>`` where ``<NNNN>`` is an integer index.  Documentation
+associated with each policy describes the ``OLD`` and ``NEW`` behavior
+and the reason the policy was introduced.  Projects may set each policy
+to select the desired behavior.  When CMake needs to know which behavior
+to use it checks for a setting specified by the project.  If no
+setting is available the ``OLD`` behavior is assumed and a warning is
+produced requesting that the policy be set.
+
+Setting Policies by CMake Version
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The ``cmake_policy`` command is used to set policies to ``OLD`` or ``NEW``
+behavior.  While setting policies individually is supported, we
+encourage projects to set policies based on CMake versions:
+
+.. code-block:: cmake
+
+  cmake_policy(VERSION <min>[...<max>])
+
+.. versionadded:: 3.12
+  The optional ``<max>`` version.
+
+``<min>`` and the optional ``<max>`` are each CMake versions of the form
+``major.minor[.patch[.tweak]]``, and the ``...`` is literal.  The ``<min>``
+version must be at least ``2.4`` and at most the running version of CMake.
+The ``<max>`` version, if specified, must be at least the ``<min>`` version
+but may exceed the running version of CMake.  If the running version of
+CMake is older than 3.12, the extra ``...`` dots will be seen as version
+component separators, resulting in the ``...<max>`` part being ignored and
+preserving the pre-3.12 behavior of basing policies on ``<min>``.
+
+This specifies that the current CMake code is written for the given
+range of CMake versions.  All policies known to the running version of CMake
+and introduced in the ``<min>`` (or ``<max>``, if specified) version
+or earlier will be set to use ``NEW`` behavior.  All policies
+introduced in later versions will be unset (unless the
+:variable:`CMAKE_POLICY_DEFAULT_CMP<NNNN>` variable sets a default).
+This effectively requests behavior preferred as of a given CMake
+version and tells newer CMake versions to warn about their new policies.
+
+Note that the :command:`cmake_minimum_required(VERSION)`
+command implicitly calls ``cmake_policy(VERSION)`` too.
+
+Setting Policies Explicitly
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  cmake_policy(SET CMP<NNNN> NEW)
+  cmake_policy(SET CMP<NNNN> OLD)
+
+Tell CMake to use the ``OLD`` or ``NEW`` behavior for a given policy.
+Projects depending on the old behavior of a given policy may silence a
+policy warning by setting the policy state to ``OLD``.  Alternatively
+one may fix the project to work with the new behavior and set the
+policy state to ``NEW``.
+
+.. include:: ../policy/DEPRECATED.txt
+
+Checking Policy Settings
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  cmake_policy(GET CMP<NNNN> <variable>)
+
+Check whether a given policy is set to ``OLD`` or ``NEW`` behavior.
+The output ``<variable>`` value will be ``OLD`` or ``NEW`` if the
+policy is set, and empty otherwise.
+
+CMake Policy Stack
+^^^^^^^^^^^^^^^^^^
+
+CMake keeps policy settings on a stack, so changes made by the
+``cmake_policy`` command affect only the top of the stack.  A new entry on
+the policy stack is managed automatically for each subdirectory to
+protect its parents and siblings.  CMake also manages a new entry for
+scripts loaded by :command:`include` and :command:`find_package` commands
+except when invoked with the ``NO_POLICY_SCOPE`` option
+(see also policy :policy:`CMP0011`).
+The ``cmake_policy`` command provides an interface to manage custom
+entries on the policy stack:
+
+.. code-block:: cmake
+
+  cmake_policy(PUSH)
+  cmake_policy(POP)
+
+Each ``PUSH`` must have a matching ``POP`` to erase any changes.
+This is useful to make temporary changes to policy settings.
+Calls to the :command:`cmake_minimum_required(VERSION)`,
+``cmake_policy(VERSION)``, or ``cmake_policy(SET)`` commands
+influence only the current top of the policy stack.
+
+Commands created by the :command:`function` and :command:`macro`
+commands record policy settings when they are created and
+use the pre-record policies when they are invoked.  If the function or
+macro implementation sets policies, the changes automatically
+propagate up through callers until they reach the closest nested
+policy stack entry.
diff --git a/share/cmake-3.22/Help/command/configure_file.rst b/share/cmake-3.22/Help/command/configure_file.rst
new file mode 100644
index 0000000..1d81423
--- /dev/null
+++ b/share/cmake-3.22/Help/command/configure_file.rst
@@ -0,0 +1,184 @@
+configure_file
+--------------
+
+Copy a file to another location and modify its contents.
+
+.. code-block:: cmake
+
+  configure_file(<input> <output>
+                 [NO_SOURCE_PERMISSIONS | USE_SOURCE_PERMISSIONS |
+                  FILE_PERMISSIONS <permissions>...]
+                 [COPYONLY] [ESCAPE_QUOTES] [@ONLY]
+                 [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])
+
+Copies an ``<input>`` file to an ``<output>`` file and substitutes
+variable values referenced as ``@VAR@`` or ``${VAR}`` in the input
+file content.  Each variable reference will be replaced with the
+current value of the variable, or the empty string if the variable
+is not defined.  Furthermore, input lines of the form
+
+.. code-block:: c
+
+  #cmakedefine VAR ...
+
+will be replaced with either
+
+.. code-block:: c
+
+  #define VAR ...
+
+or
+
+.. code-block:: c
+
+  /* #undef VAR */
+
+depending on whether ``VAR`` is set in CMake to any value not considered
+a false constant by the :command:`if` command.  The "..." content on the
+line after the variable name, if any, is processed as above.
+
+Unlike lines of the form ``#cmakedefine VAR ...``, in lines of the form
+``#cmakedefine01 VAR``, ``VAR`` itself will expand to ``VAR 0`` or ``VAR 1``
+rather than being assigned the value ``...``. Therefore, input lines of the form
+
+.. code-block:: c
+
+  #cmakedefine01 VAR
+
+will be replaced with either
+
+.. code-block:: c
+
+  #define VAR 0
+
+or
+
+.. code-block:: c
+
+  #define VAR 1
+
+Input lines of the form ``#cmakedefine01 VAR ...`` will expand
+as ``#cmakedefine01 VAR ... 0`` or ``#cmakedefine01 VAR ... 0``,
+which may lead to undefined behavior.
+
+.. versionadded:: 3.10
+  The result lines (with the exception of the ``#undef`` comments) can be
+  indented using spaces and/or tabs between the ``#`` character
+  and the ``cmakedefine`` or ``cmakedefine01`` words. This whitespace
+  indentation will be preserved in the output lines:
+
+  .. code-block:: c
+
+    #  cmakedefine VAR
+    #  cmakedefine01 VAR
+
+  will be replaced, if ``VAR`` is defined, with
+
+  .. code-block:: c
+
+    #  define VAR
+    #  define VAR 1
+
+If the input file is modified the build system will re-run CMake to
+re-configure the file and generate the build system again.
+The generated file is modified and its timestamp updated on subsequent
+cmake runs only if its content is changed.
+
+The arguments are:
+
+``<input>``
+  Path to the input file.  A relative path is treated with respect to
+  the value of :variable:`CMAKE_CURRENT_SOURCE_DIR`.  The input path
+  must be a file, not a directory.
+
+``<output>``
+  Path to the output file or directory.  A relative path is treated
+  with respect to the value of :variable:`CMAKE_CURRENT_BINARY_DIR`.
+  If the path names an existing directory the output file is placed
+  in that directory with the same file name as the input file.
+  If the path contains non-existent directories, they are created.
+
+``NO_SOURCE_PERMISSIONS``
+  .. versionadded:: 3.19
+
+  Do not transfer the permissions of the input file to the output file.
+  The copied file permissions default to the standard 644 value
+  (-rw-r--r--).
+
+``USE_SOURCE_PERMISSIONS``
+  .. versionadded:: 3.20
+
+  Transfer the permissions of the input file to the output file.
+  This is already the default behavior if none of the three permissions-related
+  keywords are given (``NO_SOURCE_PERMISSIONS``, ``USE_SOURCE_PERMISSIONS``
+  or ``FILE_PERMISSIONS``).  The ``USE_SOURCE_PERMISSIONS`` keyword mostly
+  serves as a way of making the intended behavior clearer at the call site.
+
+``FILE_PERMISSIONS <permissions>...``
+  .. versionadded:: 3.20
+
+  Ignore the input file's permissions and use the specified ``<permissions>``
+  for the output file instead.
+
+``COPYONLY``
+  Copy the file without replacing any variable references or other
+  content.  This option may not be used with ``NEWLINE_STYLE``.
+
+``ESCAPE_QUOTES``
+  Escape any substituted quotes with backslashes (C-style).
+
+``@ONLY``
+  Restrict variable replacement to references of the form ``@VAR@``.
+  This is useful for configuring scripts that use ``${VAR}`` syntax.
+
+``NEWLINE_STYLE <style>``
+  Specify the newline style for the output file.  Specify
+  ``UNIX`` or ``LF`` for ``\n`` newlines, or specify
+  ``DOS``, ``WIN32``, or ``CRLF`` for ``\r\n`` newlines.
+  This option may not be used with ``COPYONLY``.
+
+Example
+^^^^^^^
+
+Consider a source tree containing a ``foo.h.in`` file:
+
+.. code-block:: c
+
+  #cmakedefine FOO_ENABLE
+  #cmakedefine FOO_STRING "@FOO_STRING@"
+
+An adjacent ``CMakeLists.txt`` may use ``configure_file`` to
+configure the header:
+
+.. code-block:: cmake
+
+  option(FOO_ENABLE "Enable Foo" ON)
+  if(FOO_ENABLE)
+    set(FOO_STRING "foo")
+  endif()
+  configure_file(foo.h.in foo.h @ONLY)
+
+This creates a ``foo.h`` in the build directory corresponding to
+this source directory.  If the ``FOO_ENABLE`` option is on, the
+configured file will contain:
+
+.. code-block:: c
+
+  #define FOO_ENABLE
+  #define FOO_STRING "foo"
+
+Otherwise it will contain:
+
+.. code-block:: c
+
+  /* #undef FOO_ENABLE */
+  /* #undef FOO_STRING */
+
+One may then use the :command:`include_directories` command to
+specify the output directory as an include directory:
+
+.. code-block:: cmake
+
+  include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
+so that sources may include the header as ``#include <foo.h>``.
diff --git a/share/cmake-3.22/Help/command/continue.rst b/share/cmake-3.22/Help/command/continue.rst
new file mode 100644
index 0000000..f62802e
--- /dev/null
+++ b/share/cmake-3.22/Help/command/continue.rst
@@ -0,0 +1,16 @@
+continue
+--------
+
+.. versionadded:: 3.2
+
+Continue to the top of enclosing foreach or while loop.
+
+.. code-block:: cmake
+
+  continue()
+
+The ``continue`` command allows a cmake script to abort the rest of a block
+in a :command:`foreach` or :command:`while` loop, and start at the top of
+the next iteration.
+
+See also the :command:`break` command.
diff --git a/share/cmake-3.18/Help/command/create_test_sourcelist.rst b/share/cmake-3.22/Help/command/create_test_sourcelist.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/create_test_sourcelist.rst
rename to share/cmake-3.22/Help/command/create_test_sourcelist.rst
diff --git a/share/cmake-3.22/Help/command/ctest_build.rst b/share/cmake-3.22/Help/command/ctest_build.rst
new file mode 100644
index 0000000..e05df1a
--- /dev/null
+++ b/share/cmake-3.22/Help/command/ctest_build.rst
@@ -0,0 +1,93 @@
+ctest_build
+-----------
+
+Perform the :ref:`CTest Build Step` as a :ref:`Dashboard Client`.
+
+::
+
+  ctest_build([BUILD <build-dir>] [APPEND]
+              [CONFIGURATION <config>]
+              [PARALLEL_LEVEL <parallel>]
+              [FLAGS <flags>]
+              [PROJECT_NAME <project-name>]
+              [TARGET <target-name>]
+              [NUMBER_ERRORS <num-err-var>]
+              [NUMBER_WARNINGS <num-warn-var>]
+              [RETURN_VALUE <result-var>]
+              [CAPTURE_CMAKE_ERROR <result-var>]
+              )
+
+Build the project and store results in ``Build.xml``
+for submission with the :command:`ctest_submit` command.
+
+The :variable:`CTEST_BUILD_COMMAND` variable may be set to explicitly
+specify the build command line.  Otherwise the build command line is
+computed automatically based on the options given.
+
+The options are:
+
+``BUILD <build-dir>``
+  Specify the top-level build directory.  If not given, the
+  :variable:`CTEST_BINARY_DIRECTORY` variable is used.
+
+``APPEND``
+  Mark ``Build.xml`` for append to results previously submitted to a
+  dashboard server since the last :command:`ctest_start` call.
+  Append semantics are defined by the dashboard server in use.
+  This does *not* cause results to be appended to a ``.xml`` file
+  produced by a previous call to this command.
+
+``CONFIGURATION <config>``
+  Specify the build configuration (e.g. ``Debug``).  If not
+  specified the ``CTEST_BUILD_CONFIGURATION`` variable will be checked.
+  Otherwise the ``-C <cfg>`` option given to the :manual:`ctest(1)`
+  command will be used, if any.
+
+``PARALLEL_LEVEL <parallel>``
+  .. versionadded:: 3.21
+
+  Specify the parallel level of the underlying build system.  If not
+  specified, the :envvar:`CMAKE_BUILD_PARALLEL_LEVEL` environment
+  variable will be checked.
+
+``FLAGS <flags>``
+  Pass additional arguments to the underlying build command.
+  If not specified the ``CTEST_BUILD_FLAGS`` variable will be checked.
+  This can, e.g., be used to trigger a parallel build using the
+  ``-j`` option of make. See the :module:`ProcessorCount` module
+  for an example.
+
+``PROJECT_NAME <project-name>``
+  Ignored since CMake 3.0.
+
+  .. versionchanged:: 3.14
+    This value is no longer required.
+
+``TARGET <target-name>``
+  Specify the name of a target to build.  If not specified the
+  ``CTEST_BUILD_TARGET`` variable will be checked.  Otherwise the
+  default target will be built.  This is the "all" target
+  (called ``ALL_BUILD`` in :ref:`Visual Studio Generators`).
+
+``NUMBER_ERRORS <num-err-var>``
+  Store the number of build errors detected in the given variable.
+
+``NUMBER_WARNINGS <num-warn-var>``
+  Store the number of build warnings detected in the given variable.
+
+``RETURN_VALUE <result-var>``
+  Store the return value of the native build tool in the given variable.
+
+``CAPTURE_CMAKE_ERROR <result-var>``
+  .. versionadded:: 3.7
+
+  Store in the ``<result-var>`` variable -1 if there are any errors running
+  the command and prevent ctest from returning non-zero if an error occurs.
+
+``QUIET``
+  .. versionadded:: 3.3
+
+  Suppress any CTest-specific non-error output that would have been
+  printed to the console otherwise.  The summary of warnings / errors,
+  as well as the output from the native build tool is unaffected by
+  this option.
diff --git a/share/cmake-3.22/Help/command/ctest_configure.rst b/share/cmake-3.22/Help/command/ctest_configure.rst
new file mode 100644
index 0000000..95712aa
--- /dev/null
+++ b/share/cmake-3.22/Help/command/ctest_configure.rst
@@ -0,0 +1,50 @@
+ctest_configure
+---------------
+
+Perform the :ref:`CTest Configure Step` as a :ref:`Dashboard Client`.
+
+::
+
+  ctest_configure([BUILD <build-dir>] [SOURCE <source-dir>] [APPEND]
+                  [OPTIONS <options>] [RETURN_VALUE <result-var>] [QUIET]
+                  [CAPTURE_CMAKE_ERROR <result-var>])
+
+Configure the project build tree and record results in ``Configure.xml``
+for submission with the :command:`ctest_submit` command.
+
+The options are:
+
+``BUILD <build-dir>``
+  Specify the top-level build directory.  If not given, the
+  :variable:`CTEST_BINARY_DIRECTORY` variable is used.
+
+``SOURCE <source-dir>``
+  Specify the source directory.  If not given, the
+  :variable:`CTEST_SOURCE_DIRECTORY` variable is used.
+
+``APPEND``
+  Mark ``Configure.xml`` for append to results previously submitted to a
+  dashboard server since the last :command:`ctest_start` call.
+  Append semantics are defined by the dashboard server in use.
+  This does *not* cause results to be appended to a ``.xml`` file
+  produced by a previous call to this command.
+
+``OPTIONS <options>``
+  Specify command-line arguments to pass to the configuration tool.
+
+``RETURN_VALUE <result-var>``
+  Store in the ``<result-var>`` variable the return value of the native
+  configuration tool.
+
+``CAPTURE_CMAKE_ERROR <result-var>``
+  .. versionadded:: 3.7
+
+  Store in the ``<result-var>`` variable -1 if there are any errors running
+  the command and prevent ctest from returning non-zero if an error occurs.
+
+``QUIET``
+  .. versionadded:: 3.3
+
+  Suppress any CTest-specific non-error messages that would have
+  otherwise been printed to the console.  Output from the underlying
+  configure command is not affected.
diff --git a/share/cmake-3.22/Help/command/ctest_coverage.rst b/share/cmake-3.22/Help/command/ctest_coverage.rst
new file mode 100644
index 0000000..a6c643b
--- /dev/null
+++ b/share/cmake-3.22/Help/command/ctest_coverage.rst
@@ -0,0 +1,50 @@
+ctest_coverage
+--------------
+
+Perform the :ref:`CTest Coverage Step` as a :ref:`Dashboard Client`.
+
+::
+
+  ctest_coverage([BUILD <build-dir>] [APPEND]
+                 [LABELS <label>...]
+                 [RETURN_VALUE <result-var>]
+                 [CAPTURE_CMAKE_ERROR <result-var>]
+                 [QUIET]
+                 )
+
+Collect coverage tool results and stores them in ``Coverage.xml``
+for submission with the :command:`ctest_submit` command.
+
+The options are:
+
+``BUILD <build-dir>``
+  Specify the top-level build directory.  If not given, the
+  :variable:`CTEST_BINARY_DIRECTORY` variable is used.
+
+``APPEND``
+  Mark ``Coverage.xml`` for append to results previously submitted to a
+  dashboard server since the last :command:`ctest_start` call.
+  Append semantics are defined by the dashboard server in use.
+  This does *not* cause results to be appended to a ``.xml`` file
+  produced by a previous call to this command.
+
+``LABELS``
+  Filter the coverage report to include only source files labeled
+  with at least one of the labels specified.
+
+``RETURN_VALUE <result-var>``
+  Store in the ``<result-var>`` variable ``0`` if coverage tools
+  ran without error and non-zero otherwise.
+
+``CAPTURE_CMAKE_ERROR <result-var>``
+  .. versionadded:: 3.7
+
+  Store in the ``<result-var>`` variable -1 if there are any errors running
+  the command and prevent ctest from returning non-zero if an error occurs.
+
+``QUIET``
+  .. versionadded:: 3.3
+
+  Suppress any CTest-specific non-error output that would have been
+  printed to the console otherwise.  The summary indicating how many
+  lines of code were covered is unaffected by this option.
diff --git a/share/cmake-3.18/Help/command/ctest_empty_binary_directory.rst b/share/cmake-3.22/Help/command/ctest_empty_binary_directory.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/ctest_empty_binary_directory.rst
rename to share/cmake-3.22/Help/command/ctest_empty_binary_directory.rst
diff --git a/share/cmake-3.22/Help/command/ctest_memcheck.rst b/share/cmake-3.22/Help/command/ctest_memcheck.rst
new file mode 100644
index 0000000..8b79077
--- /dev/null
+++ b/share/cmake-3.22/Help/command/ctest_memcheck.rst
@@ -0,0 +1,45 @@
+ctest_memcheck
+--------------
+
+Perform the :ref:`CTest MemCheck Step` as a :ref:`Dashboard Client`.
+
+::
+
+  ctest_memcheck([BUILD <build-dir>] [APPEND]
+                 [START <start-number>]
+                 [END <end-number>]
+                 [STRIDE <stride-number>]
+                 [EXCLUDE <exclude-regex>]
+                 [INCLUDE <include-regex>]
+                 [EXCLUDE_LABEL <label-exclude-regex>]
+                 [INCLUDE_LABEL <label-include-regex>]
+                 [EXCLUDE_FIXTURE <regex>]
+                 [EXCLUDE_FIXTURE_SETUP <regex>]
+                 [EXCLUDE_FIXTURE_CLEANUP <regex>]
+                 [PARALLEL_LEVEL <level>]
+                 [RESOURCE_SPEC_FILE <file>]
+                 [TEST_LOAD <threshold>]
+                 [SCHEDULE_RANDOM <ON|OFF>]
+                 [STOP_ON_FAILURE]
+                 [STOP_TIME <time-of-day>]
+                 [RETURN_VALUE <result-var>]
+                 [CAPTURE_CMAKE_ERROR <result-var>]
+                 [REPEAT <mode>:<n>]
+                 [OUTPUT_JUNIT <file>]
+                 [DEFECT_COUNT <defect-count-var>]
+                 [QUIET]
+                 )
+
+
+Run tests with a dynamic analysis tool and store results in
+``MemCheck.xml`` for submission with the :command:`ctest_submit`
+command.
+
+Most options are the same as those for the :command:`ctest_test` command.
+
+The options unique to this command are:
+
+``DEFECT_COUNT <defect-count-var>``
+  .. versionadded:: 3.8
+
+  Store in the ``<defect-count-var>`` the number of defects found.
diff --git a/share/cmake-3.18/Help/command/ctest_read_custom_files.rst b/share/cmake-3.22/Help/command/ctest_read_custom_files.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/ctest_read_custom_files.rst
rename to share/cmake-3.22/Help/command/ctest_read_custom_files.rst
diff --git a/share/cmake-3.18/Help/command/ctest_run_script.rst b/share/cmake-3.22/Help/command/ctest_run_script.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/ctest_run_script.rst
rename to share/cmake-3.22/Help/command/ctest_run_script.rst
diff --git a/share/cmake-3.18/Help/command/ctest_sleep.rst b/share/cmake-3.22/Help/command/ctest_sleep.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/ctest_sleep.rst
rename to share/cmake-3.22/Help/command/ctest_sleep.rst
diff --git a/share/cmake-3.22/Help/command/ctest_start.rst b/share/cmake-3.22/Help/command/ctest_start.rst
new file mode 100644
index 0000000..c0f3c6d
--- /dev/null
+++ b/share/cmake-3.22/Help/command/ctest_start.rst
@@ -0,0 +1,88 @@
+ctest_start
+-----------
+
+Starts the testing for a given model
+
+::
+
+  ctest_start(<model> [<source> [<binary>]] [GROUP <group>] [QUIET])
+
+  ctest_start([<model> [<source> [<binary>]]] [GROUP <group>] APPEND [QUIET])
+
+Starts the testing for a given model.  The command should be called
+after the binary directory is initialized.
+
+The parameters are as follows:
+
+``<model>``
+  Set the dashboard model. Must be one of ``Experimental``, ``Continuous``, or
+  ``Nightly``. This parameter is required unless ``APPEND`` is specified.
+
+``<source>``
+  Set the source directory. If not specified, the value of
+  :variable:`CTEST_SOURCE_DIRECTORY` is used instead.
+
+``<binary>``
+  Set the binary directory. If not specified, the value of
+  :variable:`CTEST_BINARY_DIRECTORY` is used instead.
+
+``GROUP <group>``
+  If ``GROUP`` is used, the submissions will go to the specified group on the
+  CDash server. If no ``GROUP`` is specified, the name of the model is used by
+  default.
+
+  .. versionchanged:: 3.16
+    This replaces the deprecated option ``TRACK``. Despite the name
+    change its behavior is unchanged.
+
+``APPEND``
+  If ``APPEND`` is used, the existing ``TAG`` is used rather than creating a new
+  one based on the current time stamp. If you use ``APPEND``, you can omit the
+  ``<model>`` and ``GROUP <group>`` parameters, because they will be read from
+  the generated ``TAG`` file. For example:
+
+  .. code-block:: cmake
+
+    ctest_start(Experimental GROUP GroupExperimental)
+
+  Later, in another ``ctest -S`` script:
+
+  .. code-block:: cmake
+
+    ctest_start(APPEND)
+
+  When the second script runs ``ctest_start(APPEND)``, it will read the
+  ``Experimental`` model and ``GroupExperimental`` group from the ``TAG`` file
+  generated by the first ``ctest_start()`` command. Please note that if you
+  call ``ctest_start(APPEND)`` and specify a different model or group than
+  in the first ``ctest_start()`` command, a warning will be issued, and the
+  new model and group will be used.
+
+``QUIET``
+  .. versionadded:: 3.3
+
+  If ``QUIET`` is used, CTest will suppress any non-error messages that it
+  otherwise would have printed to the console.
+
+The parameters for ``ctest_start()`` can be issued in any order, with the
+exception that ``<model>``, ``<source>``, and ``<binary>`` have to appear
+in that order with respect to each other. The following are all valid and
+equivalent:
+
+.. code-block:: cmake
+
+  ctest_start(Experimental path/to/source path/to/binary GROUP SomeGroup QUIET APPEND)
+
+  ctest_start(GROUP SomeGroup Experimental QUIET path/to/source APPEND path/to/binary)
+
+  ctest_start(APPEND QUIET Experimental path/to/source GROUP SomeGroup path/to/binary)
+
+However, for the sake of readability, it is recommended that you order your
+parameters in the order listed at the top of this page.
+
+If the :variable:`CTEST_CHECKOUT_COMMAND` variable (or the
+:variable:`CTEST_CVS_CHECKOUT` variable) is set, its content is treated as
+command-line.  The command is invoked with the current working directory set
+to the parent of the source directory, even if the source directory already
+exists.  This can be used to create the source tree from a version control
+repository.
diff --git a/share/cmake-3.22/Help/command/ctest_submit.rst b/share/cmake-3.22/Help/command/ctest_submit.rst
new file mode 100644
index 0000000..d661825
--- /dev/null
+++ b/share/cmake-3.22/Help/command/ctest_submit.rst
@@ -0,0 +1,131 @@
+ctest_submit
+------------
+
+Perform the :ref:`CTest Submit Step` as a :ref:`Dashboard Client`.
+
+::
+
+  ctest_submit([PARTS <part>...] [FILES <file>...]
+               [SUBMIT_URL <url>]
+               [BUILD_ID <result-var>]
+               [HTTPHEADER <header>]
+               [RETRY_COUNT <count>]
+               [RETRY_DELAY <delay>]
+               [RETURN_VALUE <result-var>]
+               [CAPTURE_CMAKE_ERROR <result-var>]
+               [QUIET]
+               )
+
+Submit results to a dashboard server.
+By default all available parts are submitted.
+
+The options are:
+
+``PARTS <part>...``
+  Specify a subset of parts to submit.  Valid part names are::
+
+    Start      = nothing
+    Update     = ctest_update results, in Update.xml
+    Configure  = ctest_configure results, in Configure.xml
+    Build      = ctest_build results, in Build.xml
+    Test       = ctest_test results, in Test.xml
+    Coverage   = ctest_coverage results, in Coverage.xml
+    MemCheck   = ctest_memcheck results, in DynamicAnalysis.xml and
+                 DynamicAnalysis-Test.xml
+    Notes      = Files listed by CTEST_NOTES_FILES, in Notes.xml
+    ExtraFiles = Files listed by CTEST_EXTRA_SUBMIT_FILES
+    Upload     = Files prepared for upload by ctest_upload(), in Upload.xml
+    Submit     = nothing
+    Done       = Build is complete, in Done.xml
+
+``FILES <file>...``
+  Specify an explicit list of specific files to be submitted.
+  Each individual file must exist at the time of the call.
+
+``SUBMIT_URL <url>``
+  .. versionadded:: 3.14
+
+  The ``http`` or ``https`` URL of the dashboard server to send the submission
+  to.  If not given, the :variable:`CTEST_SUBMIT_URL` variable is used.
+
+``BUILD_ID <result-var>``
+  .. versionadded:: 3.15
+
+  Store in the ``<result-var>`` variable the ID assigned to this build by
+  CDash.
+
+``HTTPHEADER <HTTP-header>``
+  .. versionadded:: 3.9
+
+  Specify HTTP header to be included in the request to CDash during submission.
+  For example, CDash can be configured to only accept submissions from
+  authenticated clients. In this case, you should provide a bearer token in your
+  header:
+
+  .. code-block:: cmake
+
+    ctest_submit(HTTPHEADER "Authorization: Bearer <auth-token>")
+
+  This suboption can be repeated several times for multiple headers.
+
+``RETRY_COUNT <count>``
+  Specify how many times to retry a timed-out submission.
+
+``RETRY_DELAY <delay>``
+  Specify how long (in seconds) to wait after a timed-out submission
+  before attempting to re-submit.
+
+``RETURN_VALUE <result-var>``
+  Store in the ``<result-var>`` variable ``0`` for success and
+  non-zero on failure.
+
+``CAPTURE_CMAKE_ERROR <result-var>``
+  .. versionadded:: 3.13
+
+  Store in the ``<result-var>`` variable -1 if there are any errors running
+  the command and prevent ctest from returning non-zero if an error occurs.
+
+``QUIET``
+  .. versionadded:: 3.3
+
+  Suppress all non-error messages that would have otherwise been
+  printed to the console.
+
+Submit to CDash Upload API
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.2
+
+::
+
+  ctest_submit(CDASH_UPLOAD <file> [CDASH_UPLOAD_TYPE <type>]
+               [SUBMIT_URL <url>]
+               [BUILD_ID <result-var>]
+               [HTTPHEADER <header>]
+               [RETRY_COUNT <count>]
+               [RETRY_DELAY <delay>]
+               [RETURN_VALUE <result-var>]
+               [QUIET])
+
+This second signature is used to upload files to CDash via the CDash
+file upload API. The API first sends a request to upload to CDash along
+with a content hash of the file. If CDash does not already have the file,
+then it is uploaded. Along with the file, a CDash type string is specified
+to tell CDash which handler to use to process the data.
+
+This signature interprets options in the same way as the first one.
+
+.. versionadded:: 3.8
+  Added the ``RETRY_COUNT``, ``RETRY_DELAY``, ``QUIET`` options.
+
+.. versionadded:: 3.9
+  Added the ``HTTPHEADER`` option.
+
+.. versionadded:: 3.13
+  Added the ``RETURN_VALUE`` option.
+
+.. versionadded:: 3.14
+  Added the ``SUBMIT_URL`` option.
+
+.. versionadded:: 3.15
+  Added the ``BUILD_ID`` option.
diff --git a/share/cmake-3.22/Help/command/ctest_test.rst b/share/cmake-3.22/Help/command/ctest_test.rst
new file mode 100644
index 0000000..6a9a6a0
--- /dev/null
+++ b/share/cmake-3.22/Help/command/ctest_test.rst
@@ -0,0 +1,306 @@
+ctest_test
+----------
+
+Perform the :ref:`CTest Test Step` as a :ref:`Dashboard Client`.
+
+::
+
+  ctest_test([BUILD <build-dir>] [APPEND]
+             [START <start-number>]
+             [END <end-number>]
+             [STRIDE <stride-number>]
+             [EXCLUDE <exclude-regex>]
+             [INCLUDE <include-regex>]
+             [EXCLUDE_LABEL <label-exclude-regex>]
+             [INCLUDE_LABEL <label-include-regex>]
+             [EXCLUDE_FIXTURE <regex>]
+             [EXCLUDE_FIXTURE_SETUP <regex>]
+             [EXCLUDE_FIXTURE_CLEANUP <regex>]
+             [PARALLEL_LEVEL <level>]
+             [RESOURCE_SPEC_FILE <file>]
+             [TEST_LOAD <threshold>]
+             [SCHEDULE_RANDOM <ON|OFF>]
+             [STOP_ON_FAILURE]
+             [STOP_TIME <time-of-day>]
+             [RETURN_VALUE <result-var>]
+             [CAPTURE_CMAKE_ERROR <result-var>]
+             [REPEAT <mode>:<n>]
+             [OUTPUT_JUNIT <file>]
+             [QUIET]
+             )
+
+..
+   _note: If updating the argument list here, please also update the argument
+   list documentation for :command:`ctest_memcheck` as well.
+
+Run tests in the project build tree and store results in
+``Test.xml`` for submission with the :command:`ctest_submit` command.
+
+The options are:
+
+``BUILD <build-dir>``
+  Specify the top-level build directory.  If not given, the
+  :variable:`CTEST_BINARY_DIRECTORY` variable is used.
+
+``APPEND``
+  Mark ``Test.xml`` for append to results previously submitted to a
+  dashboard server since the last :command:`ctest_start` call.
+  Append semantics are defined by the dashboard server in use.
+  This does *not* cause results to be appended to a ``.xml`` file
+  produced by a previous call to this command.
+
+``START <start-number>``
+  Specify the beginning of a range of test numbers.
+
+``END <end-number>``
+  Specify the end of a range of test numbers.
+
+``STRIDE <stride-number>``
+  Specify the stride by which to step across a range of test numbers.
+
+``EXCLUDE <exclude-regex>``
+  Specify a regular expression matching test names to exclude.
+
+``INCLUDE <include-regex>``
+  Specify a regular expression matching test names to include.
+  Tests not matching this expression are excluded.
+
+``EXCLUDE_LABEL <label-exclude-regex>``
+  Specify a regular expression matching test labels to exclude.
+
+``INCLUDE_LABEL <label-include-regex>``
+  Specify a regular expression matching test labels to include.
+  Tests not matching this expression are excluded.
+
+``EXCLUDE_FIXTURE <regex>``
+  .. versionadded:: 3.7
+
+  If a test in the set of tests to be executed requires a particular fixture,
+  that fixture's setup and cleanup tests would normally be added to the test
+  set automatically. This option prevents adding setup or cleanup tests for
+  fixtures matching the ``<regex>``. Note that all other fixture behavior is
+  retained, including test dependencies and skipping tests that have fixture
+  setup tests that fail.
+
+``EXCLUDE_FIXTURE_SETUP <regex>``
+  .. versionadded:: 3.7
+
+  Same as ``EXCLUDE_FIXTURE`` except only matching setup tests are excluded.
+
+``EXCLUDE_FIXTURE_CLEANUP <regex>``
+  .. versionadded:: 3.7
+
+  Same as ``EXCLUDE_FIXTURE`` except only matching cleanup tests are excluded.
+
+``PARALLEL_LEVEL <level>``
+  Specify a positive number representing the number of tests to
+  be run in parallel.
+
+``RESOURCE_SPEC_FILE <file>``
+  .. versionadded:: 3.16
+
+  Specify a
+  :ref:`resource specification file <ctest-resource-specification-file>`. See
+  :ref:`ctest-resource-allocation` for more information.
+
+``TEST_LOAD <threshold>``
+  .. versionadded:: 3.4
+
+  While running tests in parallel, try not to start tests when they
+  may cause the CPU load to pass above a given threshold.  If not
+  specified the :variable:`CTEST_TEST_LOAD` variable will be checked,
+  and then the ``--test-load`` command-line argument to :manual:`ctest(1)`.
+  See also the ``TestLoad`` setting in the :ref:`CTest Test Step`.
+
+``REPEAT <mode>:<n>``
+  .. versionadded:: 3.17
+
+  Run tests repeatedly based on the given ``<mode>`` up to ``<n>`` times.
+  The modes are:
+
+  ``UNTIL_FAIL``
+    Require each test to run ``<n>`` times without failing in order to pass.
+    This is useful in finding sporadic failures in test cases.
+
+  ``UNTIL_PASS``
+    Allow each test to run up to ``<n>`` times in order to pass.
+    Repeats tests if they fail for any reason.
+    This is useful in tolerating sporadic failures in test cases.
+
+  ``AFTER_TIMEOUT``
+    Allow each test to run up to ``<n>`` times in order to pass.
+    Repeats tests only if they timeout.
+    This is useful in tolerating sporadic timeouts in test cases
+    on busy machines.
+
+``SCHEDULE_RANDOM <ON|OFF>``
+  Launch tests in a random order.  This may be useful for detecting
+  implicit test dependencies.
+
+``STOP_ON_FAILURE``
+  .. versionadded:: 3.18
+
+  Stop the execution of the tests once one has failed.
+
+``STOP_TIME <time-of-day>``
+  Specify a time of day at which the tests should all stop running.
+
+``RETURN_VALUE <result-var>``
+  Store in the ``<result-var>`` variable ``0`` if all tests passed.
+  Store non-zero if anything went wrong.
+
+``CAPTURE_CMAKE_ERROR <result-var>``
+  .. versionadded:: 3.7
+
+  Store in the ``<result-var>`` variable -1 if there are any errors running
+  the command and prevent ctest from returning non-zero if an error occurs.
+
+``OUTPUT_JUNIT <file>``
+  .. versionadded:: 3.21
+
+  Write test results to ``<file>`` in JUnit XML format. If ``<file>`` is a
+  relative path, it will be placed in the build directory. If ``<file>``
+  already exists, it will be overwritten. Note that the resulting JUnit XML
+  file is **not** uploaded to CDash because it would be redundant with
+  CTest's ``Test.xml`` file.
+
+``QUIET``
+  .. versionadded:: 3.3
+
+  Suppress any CTest-specific non-error messages that would have otherwise
+  been printed to the console.  Output from the underlying test command is not
+  affected.  Summary info detailing the percentage of passing tests is also
+  unaffected by the ``QUIET`` option.
+
+See also the :variable:`CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE`
+and :variable:`CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE` variables.
+
+.. _`Additional Test Measurements`:
+
+Additional Test Measurements
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+CTest can parse the output of your tests for extra measurements to report
+to CDash.
+
+When run as a :ref:`Dashboard Client`, CTest will include these custom
+measurements in the ``Test.xml`` file that gets uploaded to CDash.
+
+Check the `CDash test measurement documentation
+<https://github.com/Kitware/CDash/blob/master/docs/test_measurements.md>`_
+for more information on the types of test measurements that CDash recognizes.
+
+.. versionadded: 3.22
+  CTest can parse custom measurements from tags named
+  ``<CTestMeasurement>`` or ``<CTestMeasurementFile>``. The older names
+  ``<DartMeasurement>`` and ``<DartMeasurementFile>`` are still supported.
+
+The following example demonstrates how to output a variety of custom test
+measurements.
+
+.. code-block:: c++
+
+   std::cout <<
+     "<CTestMeasurement type=\"numeric/double\" name=\"score\">28.3</CTestMeasurement>"
+     << std::endl;
+
+   std::cout <<
+     "<CTestMeasurement type=\"text/string\" name=\"color\">red</CTestMeasurement>"
+     << std::endl;
+
+   std::cout <<
+     "<CTestMeasurement type=\"text/link\" name=\"CMake URL\">https://cmake.org</CTestMeasurement>"
+     << std::endl;
+
+   std::cout <<
+     "<CTestMeasurement type=\"text/preformatted\" name=\"Console Output\">" <<
+     "line 1.\n" <<
+     "  \033[31;1m line 2. Bold red, and indented!\033[0;0ml\n" <<
+     "line 3. Not bold or indented...\n" <<
+     "</CTestMeasurement>" << std::endl;
+
+Image Measurements
+""""""""""""""""""
+
+The following example demonstrates how to upload test images to CDash.
+
+.. code-block:: c++
+
+   std::cout <<
+     "<CTestMeasurementFile type=\"image/jpg\" name=\"TestImage\">" <<
+     "/dir/to/test_img.jpg</CTestMeasurementFile>" << std::endl;
+
+   std::cout <<
+     "<CTestMeasurementFile type=\"image/gif\" name=\"ValidImage\">" <<
+     "/dir/to/valid_img.gif</CTestMeasurementFile>" << std::endl;
+
+   std::cout <<
+     "<CTestMeasurementFile type=\"image/png\" name=\"AlgoResult\"> <<
+     "/dir/to/img.png</CTestMeasurementFile>"
+     << std::endl;
+
+Images will be displayed together in an interactive comparison mode on CDash
+if they are provided with two or more of the following names.
+
+* ``TestImage``
+* ``ValidImage``
+* ``BaselineImage``
+* ``DifferenceImage2``
+
+By convention, ``TestImage`` is the image generated by your test, and
+``ValidImage`` (or ``BaselineImage``) is basis of comparison used to determine
+if the test passed or failed.
+
+If another image name is used it will be displayed by CDash as a static image
+separate from the interactive comparison UI.
+
+Attached Files
+""""""""""""""
+
+.. versionadded:: 3.21
+
+The following example demonstrates how to upload non-image files to CDash.
+
+.. code-block:: c++
+
+   std::cout <<
+     "<CTestMeasurementFile type=\"file\" name=\"TestInputData1\">" <<
+     "/dir/to/data1.csv</CTestMeasurementFile>\n"                   <<
+     "<CTestMeasurementFile type=\"file\" name=\"TestInputData2\">" <<
+     "/dir/to/data2.csv</CTestMeasurementFile>"                     << std::endl;
+
+If the name of the file to upload is known at configure time, you can use the
+:prop_test:`ATTACHED_FILES` or :prop_test:`ATTACHED_FILES_ON_FAIL` test
+properties instead.
+
+Custom Details
+""""""""""""""
+
+.. versionadded:: 3.21
+
+The following example demonstrates how to specify a custom value for the
+``Test Details`` field displayed on CDash.
+
+.. code-block:: c++
+
+   std::cout <<
+     "<CTestDetails>My Custom Details Value</CTestDetails>" << std::endl;
+
+.. _`Additional Labels`:
+
+Additional Labels
+"""""""""""""""""
+
+.. versionadded:: 3.22
+
+The following example demonstrates how to add additional labels to a test
+at runtime.
+
+.. code-block:: c++
+
+   std::cout <<
+     "<CTestLabel>Custom Label 1</CTestLabel>\n" <<
+     "<CTestLabel>Custom Label 2</CTestLabel>"   << std::endl;
+
+Use the :prop_test:`LABELS` test property instead for labels that can be
+determined at configure time.
diff --git a/share/cmake-3.22/Help/command/ctest_update.rst b/share/cmake-3.22/Help/command/ctest_update.rst
new file mode 100644
index 0000000..63f991b
--- /dev/null
+++ b/share/cmake-3.22/Help/command/ctest_update.rst
@@ -0,0 +1,43 @@
+ctest_update
+------------
+
+Perform the :ref:`CTest Update Step` as a :ref:`Dashboard Client`.
+
+::
+
+  ctest_update([SOURCE <source-dir>]
+               [RETURN_VALUE <result-var>]
+               [CAPTURE_CMAKE_ERROR <result-var>]
+               [QUIET])
+
+Update the source tree from version control and record results in
+``Update.xml`` for submission with the :command:`ctest_submit` command.
+
+The options are:
+
+``SOURCE <source-dir>``
+  Specify the source directory.  If not given, the
+  :variable:`CTEST_SOURCE_DIRECTORY` variable is used.
+
+``RETURN_VALUE <result-var>``
+  Store in the ``<result-var>`` variable the number of files
+  updated or ``-1`` on error.
+
+``CAPTURE_CMAKE_ERROR <result-var>``
+  .. versionadded:: 3.13
+
+  Store in the ``<result-var>`` variable -1 if there are any errors running
+  the command and prevent ctest from returning non-zero if an error occurs.
+
+``QUIET``
+  .. versionadded:: 3.3
+
+  Tell CTest to suppress most non-error messages that it would
+  have otherwise printed to the console.  CTest will still report
+  the new revision of the repository and any conflicting files
+  that were found.
+
+The update always follows the version control branch currently checked
+out in the source directory.  See the :ref:`CTest Update Step`
+documentation for information about variables that change the behavior
+of ``ctest_update()``.
diff --git a/share/cmake-3.22/Help/command/ctest_upload.rst b/share/cmake-3.22/Help/command/ctest_upload.rst
new file mode 100644
index 0000000..ffddd0a
--- /dev/null
+++ b/share/cmake-3.22/Help/command/ctest_upload.rst
@@ -0,0 +1,26 @@
+ctest_upload
+------------
+
+Upload files to a dashboard server as a :ref:`Dashboard Client`.
+
+::
+
+  ctest_upload(FILES <file>... [QUIET] [CAPTURE_CMAKE_ERROR <result-var>])
+
+The options are:
+
+``FILES <file>...``
+  Specify a list of files to be sent along with the build results to the
+  dashboard server.
+
+``QUIET``
+  .. versionadded:: 3.3
+
+  Suppress any CTest-specific non-error output that would have been
+  printed to the console otherwise.
+
+``CAPTURE_CMAKE_ERROR <result-var>``
+  .. versionadded:: 3.7
+
+  Store in the ``<result-var>`` variable -1 if there are any errors running
+  the command and prevent ctest from returning non-zero if an error occurs.
diff --git a/share/cmake-3.18/Help/command/define_property.rst b/share/cmake-3.22/Help/command/define_property.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/define_property.rst
rename to share/cmake-3.22/Help/command/define_property.rst
diff --git a/share/cmake-3.18/Help/command/else.rst b/share/cmake-3.22/Help/command/else.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/else.rst
rename to share/cmake-3.22/Help/command/else.rst
diff --git a/share/cmake-3.18/Help/command/elseif.rst b/share/cmake-3.22/Help/command/elseif.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/elseif.rst
rename to share/cmake-3.22/Help/command/elseif.rst
diff --git a/share/cmake-3.22/Help/command/enable_language.rst b/share/cmake-3.22/Help/command/enable_language.rst
new file mode 100644
index 0000000..d2acbc8
--- /dev/null
+++ b/share/cmake-3.22/Help/command/enable_language.rst
@@ -0,0 +1,38 @@
+enable_language
+---------------
+Enable a language (CXX/C/OBJC/OBJCXX/Fortran/etc)
+
+.. code-block:: cmake
+
+  enable_language(<lang> [OPTIONAL] )
+
+Enables support for the named language in CMake.  This is
+the same as the :command:`project` command but does not create any of the extra
+variables that are created by the project command.  Example languages
+are ``CXX``, ``C``, ``CUDA``, ``OBJC``, ``OBJCXX``, ``Fortran``,
+``HIP``, ``ISPC``, and ``ASM``.
+
+.. versionadded:: 3.8
+  Added ``CUDA`` support.
+
+.. versionadded:: 3.16
+  Added ``OBJC`` and ``OBJCXX`` support.
+
+.. versionadded:: 3.18
+  Added ``ISPC`` support.
+
+.. versionadded:: 3.21
+  Added ``HIP`` support.
+
+If enabling ``ASM``, enable it last so that CMake can check whether
+compilers for other languages like ``C`` work for assembly too.
+
+This command must be called in file scope, not in a function call.
+Furthermore, it must be called in the highest directory common to all
+targets using the named language directly for compiling sources or
+indirectly through link dependencies.  It is simplest to enable all
+needed languages in the top-level directory of a project.
+
+The ``OPTIONAL`` keyword is a placeholder for future implementation and
+does not currently work. Instead you can use the :module:`CheckLanguage`
+module to verify support before enabling.
diff --git a/share/cmake-3.18/Help/command/enable_testing.rst b/share/cmake-3.22/Help/command/enable_testing.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/enable_testing.rst
rename to share/cmake-3.22/Help/command/enable_testing.rst
diff --git a/share/cmake-3.18/Help/command/endforeach.rst b/share/cmake-3.22/Help/command/endforeach.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/endforeach.rst
rename to share/cmake-3.22/Help/command/endforeach.rst
diff --git a/share/cmake-3.18/Help/command/endfunction.rst b/share/cmake-3.22/Help/command/endfunction.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/endfunction.rst
rename to share/cmake-3.22/Help/command/endfunction.rst
diff --git a/share/cmake-3.18/Help/command/endif.rst b/share/cmake-3.22/Help/command/endif.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/endif.rst
rename to share/cmake-3.22/Help/command/endif.rst
diff --git a/share/cmake-3.18/Help/command/endmacro.rst b/share/cmake-3.22/Help/command/endmacro.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/endmacro.rst
rename to share/cmake-3.22/Help/command/endmacro.rst
diff --git a/share/cmake-3.18/Help/command/endwhile.rst b/share/cmake-3.22/Help/command/endwhile.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/endwhile.rst
rename to share/cmake-3.22/Help/command/endwhile.rst
diff --git a/share/cmake-3.18/Help/command/exec_program.rst b/share/cmake-3.22/Help/command/exec_program.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/exec_program.rst
rename to share/cmake-3.22/Help/command/exec_program.rst
diff --git a/share/cmake-3.22/Help/command/execute_process.rst b/share/cmake-3.22/Help/command/execute_process.rst
new file mode 100644
index 0000000..82fcd46
--- /dev/null
+++ b/share/cmake-3.22/Help/command/execute_process.rst
@@ -0,0 +1,158 @@
+execute_process
+---------------
+
+Execute one or more child processes.
+
+.. code-block:: cmake
+
+  execute_process(COMMAND <cmd1> [<arguments>]
+                  [COMMAND <cmd2> [<arguments>]]...
+                  [WORKING_DIRECTORY <directory>]
+                  [TIMEOUT <seconds>]
+                  [RESULT_VARIABLE <variable>]
+                  [RESULTS_VARIABLE <variable>]
+                  [OUTPUT_VARIABLE <variable>]
+                  [ERROR_VARIABLE <variable>]
+                  [INPUT_FILE <file>]
+                  [OUTPUT_FILE <file>]
+                  [ERROR_FILE <file>]
+                  [OUTPUT_QUIET]
+                  [ERROR_QUIET]
+                  [COMMAND_ECHO <where>]
+                  [OUTPUT_STRIP_TRAILING_WHITESPACE]
+                  [ERROR_STRIP_TRAILING_WHITESPACE]
+                  [ENCODING <name>]
+                  [ECHO_OUTPUT_VARIABLE]
+                  [ECHO_ERROR_VARIABLE]
+                  [COMMAND_ERROR_IS_FATAL <ANY|LAST>])
+
+Runs the given sequence of one or more commands.
+
+Commands are executed concurrently as a pipeline, with the standard
+output of each process piped to the standard input of the next.
+A single standard error pipe is used for all processes.
+
+Options:
+
+``COMMAND``
+ A child process command line.
+
+ CMake executes the child process using operating system APIs directly.
+ All arguments are passed VERBATIM to the child process.
+ No intermediate shell is used, so shell operators such as ``>``
+ are treated as normal arguments.
+ (Use the ``INPUT_*``, ``OUTPUT_*``, and ``ERROR_*`` options to
+ redirect stdin, stdout, and stderr.)
+
+ If a sequential execution of multiple commands is required, use multiple
+ :command:`execute_process` calls with a single ``COMMAND`` argument.
+
+``WORKING_DIRECTORY``
+ The named directory will be set as the current working directory of
+ the child processes.
+
+``TIMEOUT``
+ After the specified number of seconds (fractions allowed), all unfinished
+ child processes will be terminated, and the ``RESULT_VARIABLE`` will be
+ set to a string mentioning the "timeout".
+
+``RESULT_VARIABLE``
+ The variable will be set to contain the result of last child process.
+ This will be an integer return code from the last child or a string
+ describing an error condition.
+
+``RESULTS_VARIABLE <variable>``
+ .. versionadded:: 3.10
+
+ The variable will be set to contain the result of all processes as a
+ :ref:`semicolon-separated list <CMake Language Lists>`, in order of the
+ given ``COMMAND`` arguments.  Each entry will be an integer return code
+ from the corresponding child or a string describing an error condition.
+
+``OUTPUT_VARIABLE``, ``ERROR_VARIABLE``
+ The variable named will be set with the contents of the standard output
+ and standard error pipes, respectively.  If the same variable is named
+ for both pipes their output will be merged in the order produced.
+
+``INPUT_FILE, OUTPUT_FILE``, ``ERROR_FILE``
+ The file named will be attached to the standard input of the first
+ process, standard output of the last process, or standard error of
+ all processes, respectively.
+
+ .. versionadded:: 3.3
+  If the same file is named for both output and error then it will be used
+  for both.
+
+``OUTPUT_QUIET``, ``ERROR_QUIET``
+ The standard output or standard error results will be quietly ignored.
+
+``COMMAND_ECHO <where>``
+ .. versionadded:: 3.15
+
+ The command being run will be echo'ed to ``<where>`` with ``<where>``
+ being set to one of ``STDERR``, ``STDOUT`` or ``NONE``.
+ See the :variable:`CMAKE_EXECUTE_PROCESS_COMMAND_ECHO` variable for a way
+ to control the default behavior when this option is not present.
+
+``ENCODING <name>``
+ .. versionadded:: 3.8
+
+ On Windows, the encoding that is used to decode output from the process.
+ Ignored on other platforms.
+ Valid encoding names are:
+
+ ``NONE``
+   Perform no decoding.  This assumes that the process output is encoded
+   in the same way as CMake's internal encoding (UTF-8).
+   This is the default.
+ ``AUTO``
+   Use the current active console's codepage or if that isn't
+   available then use ANSI.
+ ``ANSI``
+   Use the ANSI codepage.
+ ``OEM``
+   Use the original equipment manufacturer (OEM) code page.
+ ``UTF8`` or ``UTF-8``
+   Use the UTF-8 codepage.
+
+   .. versionadded:: 3.11
+     Accept ``UTF-8`` spelling for consistency with the
+     `UTF-8 RFC <https://www.ietf.org/rfc/rfc3629>`_ naming convention.
+
+``ECHO_OUTPUT_VARIABLE``, ``ECHO_ERROR_VARIABLE``
+  .. versionadded:: 3.18
+
+  The standard output or standard error will not be exclusively redirected to
+  the configured variables.
+
+  The output will be duplicated, it will be sent into the configured variables
+  and also on standard output or standard error.
+
+  This is analogous to the ``tee`` Unix command.
+
+``COMMAND_ERROR_IS_FATAL <ANY|LAST>``
+  .. versionadded:: 3.19
+
+  The option following ``COMMAND_ERROR_IS_FATAL`` determines the behavior when
+  an error is encountered:
+
+    ``ANY``
+    If any of the commands in the list of commands fail, the
+    ``execute_process()`` command halts with an error.
+
+    ``LAST``
+    If the last command in the list of commands fails, the
+    ``execute_process()`` command halts with an error.  Commands earlier in the
+    list will not cause a fatal error.
+
+If more than one ``OUTPUT_*`` or ``ERROR_*`` option is given for the
+same pipe the precedence is not specified.
+If no ``OUTPUT_*`` or ``ERROR_*`` options are given the output will
+be shared with the corresponding pipes of the CMake process itself.
+
+The :command:`execute_process` command is a newer more powerful version of
+:command:`exec_program`, but the old command has been kept for compatibility.
+Both commands run while CMake is processing the project prior to build
+system generation.  Use :command:`add_custom_target` and
+:command:`add_custom_command` to create custom commands that run at
+build time.
diff --git a/share/cmake-3.22/Help/command/export.rst b/share/cmake-3.22/Help/command/export.rst
new file mode 100644
index 0000000..e8a1fa7
--- /dev/null
+++ b/share/cmake-3.22/Help/command/export.rst
@@ -0,0 +1,93 @@
+export
+------
+
+Export targets from the build tree for use by outside projects.
+
+.. code-block:: cmake
+
+  export(EXPORT <export-name> [NAMESPACE <namespace>] [FILE <filename>])
+
+Creates a file ``<filename>`` that may be included by outside projects to
+import targets from the current project's build tree.  This is useful
+during cross-compiling to build utility executables that can run on
+the host platform in one project and then import them into another
+project being compiled for the target platform.  If the ``NAMESPACE``
+option is given the ``<namespace>`` string will be prepended to all target
+names written to the file.
+
+Target installations are associated with the export ``<export-name>``
+using the ``EXPORT`` option of the :command:`install(TARGETS)` command.
+
+The file created by this command is specific to the build tree and
+should never be installed.  See the :command:`install(EXPORT)` command to
+export targets from an installation tree.
+
+The properties set on the generated IMPORTED targets will have the
+same values as the final values of the input TARGETS.
+
+.. code-block:: cmake
+
+  export(TARGETS [target1 [target2 [...]]] [NAMESPACE <namespace>]
+         [APPEND] FILE <filename> [EXPORT_LINK_INTERFACE_LIBRARIES])
+
+This signature is similar to the ``EXPORT`` signature, but targets are listed
+explicitly rather than specified as an export-name.  If the APPEND option is
+given the generated code will be appended to the file instead of overwriting it.
+The EXPORT_LINK_INTERFACE_LIBRARIES keyword, if present, causes the
+contents of the properties matching
+``(IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?`` to be exported, when
+policy CMP0022 is NEW.  If a library target is included in the export
+but a target to which it links is not included the behavior is
+unspecified.
+
+.. note::
+
+  :ref:`Object Libraries` under :generator:`Xcode` have special handling if
+  multiple architectures are listed in :variable:`CMAKE_OSX_ARCHITECTURES`.
+  In this case they will be exported as :ref:`Interface Libraries` with
+  no object files available to clients.  This is sufficient to satisfy
+  transitive usage requirements of other targets that link to the
+  object libraries in their implementation.
+
+.. code-block:: cmake
+
+  export(PACKAGE <PackageName>)
+
+Store the current build directory in the CMake user package registry
+for package ``<PackageName>``.  The :command:`find_package` command may consider the
+directory while searching for package ``<PackageName>``.  This helps dependent
+projects find and use a package from the current project's build tree
+without help from the user.  Note that the entry in the package
+registry that this command creates works only in conjunction with a
+package configuration file (``<PackageName>Config.cmake``) that works with the
+build tree. In some cases, for example for packaging and for system
+wide installations, it is not desirable to write the user package
+registry.
+
+.. versionchanged:: 3.1
+  If the :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` variable
+  is enabled, the ``export(PACKAGE)`` command will do nothing.
+
+.. versionchanged:: 3.15
+  By default the ``export(PACKAGE)`` command does nothing (see policy
+  :policy:`CMP0090`) because populating the user package registry has effects
+  outside the source and build trees.  Set the
+  :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY` variable to add build directories
+  to the CMake user package registry.
+
+.. code-block:: cmake
+
+  export(TARGETS [target1 [target2 [...]]]  [ANDROID_MK <filename>])
+
+.. versionadded:: 3.7
+
+This signature exports cmake built targets to the android ndk build system
+by creating an Android.mk file that references the prebuilt targets. The
+Android NDK supports the use of prebuilt libraries, both static and shared.
+This allows cmake to build the libraries of a project and make them available
+to an ndk build system complete with transitive dependencies, include flags
+and defines required to use the libraries. The signature takes a list of
+targets and puts them in the Android.mk file specified by the ``<filename>``
+given. This signature can only be used if policy CMP0022 is NEW for all
+targets given. A error will be issued if that policy is set to OLD for one
+of the targets.
diff --git a/share/cmake-3.18/Help/command/export_library_dependencies.rst b/share/cmake-3.22/Help/command/export_library_dependencies.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/export_library_dependencies.rst
rename to share/cmake-3.22/Help/command/export_library_dependencies.rst
diff --git a/share/cmake-3.22/Help/command/file.rst b/share/cmake-3.22/Help/command/file.rst
new file mode 100644
index 0000000..799b6ff
--- /dev/null
+++ b/share/cmake-3.22/Help/command/file.rst
@@ -0,0 +1,1236 @@
+file
+----
+
+File manipulation command.
+
+This command is dedicated to file and path manipulation requiring access to the
+filesystem.
+
+For other path manipulation, handling only syntactic aspects, have a look at
+:command:`cmake_path` command.
+
+.. note::
+
+  The sub-commands `RELATIVE_PATH`_, `TO_CMAKE_PATH`_ and `TO_NATIVE_PATH`_ has
+  been superseded, respectively, by sub-commands
+  :ref:`RELATIVE_PATH <cmake_path-RELATIVE_PATH>`,
+  :ref:`CONVERT ... TO_CMAKE_PATH_LIST <cmake_path-TO_CMAKE_PATH_LIST>` and
+  :ref:`CONVERT ... TO_NATIVE_PATH_LIST <cmake_path-TO_NATIVE_PATH_LIST>` of
+  :command:`cmake_path` command.
+
+Synopsis
+^^^^^^^^
+
+.. parsed-literal::
+
+  `Reading`_
+    file(`READ`_ <filename> <out-var> [...])
+    file(`STRINGS`_ <filename> <out-var> [...])
+    file(`\<HASH\> <HASH_>`_ <filename> <out-var>)
+    file(`TIMESTAMP`_ <filename> <out-var> [...])
+    file(`GET_RUNTIME_DEPENDENCIES`_ [...])
+
+  `Writing`_
+    file({`WRITE`_ | `APPEND`_} <filename> <content>...)
+    file({`TOUCH`_ | `TOUCH_NOCREATE`_} [<file>...])
+    file(`GENERATE`_ OUTPUT <output-file> [...])
+    file(`CONFIGURE`_ OUTPUT <output-file> CONTENT <content> [...])
+
+  `Filesystem`_
+    file({`GLOB`_ | `GLOB_RECURSE`_} <out-var> [...] [<globbing-expr>...])
+    file(`MAKE_DIRECTORY`_ [<dir>...])
+    file({`REMOVE`_ | `REMOVE_RECURSE`_ } [<files>...])
+    file(`RENAME`_ <oldname> <newname> [...])
+    file(`COPY_FILE`_ <oldname> <newname> [...])
+    file({`COPY`_ | `INSTALL`_} <file>... DESTINATION <dir> [...])
+    file(`SIZE`_ <filename> <out-var>)
+    file(`READ_SYMLINK`_ <linkname> <out-var>)
+    file(`CREATE_LINK`_ <original> <linkname> [...])
+    file(`CHMOD`_ <files>... <directories>... PERMISSIONS <permissions>... [...])
+    file(`CHMOD_RECURSE`_ <files>... <directories>... PERMISSIONS <permissions>... [...])
+
+  `Path Conversion`_
+    file(`REAL_PATH`_ <path> <out-var> [BASE_DIRECTORY <dir>] [EXPAND_TILDE])
+    file(`RELATIVE_PATH`_ <out-var> <directory> <file>)
+    file({`TO_CMAKE_PATH`_ | `TO_NATIVE_PATH`_} <path> <out-var>)
+
+  `Transfer`_
+    file(`DOWNLOAD`_ <url> [<file>] [...])
+    file(`UPLOAD`_ <file> <url> [...])
+
+  `Locking`_
+    file(`LOCK`_ <path> [...])
+
+  `Archiving`_
+    file(`ARCHIVE_CREATE`_ OUTPUT <archive> PATHS <paths>... [...])
+    file(`ARCHIVE_EXTRACT`_ INPUT <archive> [...])
+
+Reading
+^^^^^^^
+
+.. _READ:
+
+.. code-block:: cmake
+
+  file(READ <filename> <variable>
+       [OFFSET <offset>] [LIMIT <max-in>] [HEX])
+
+Read content from a file called ``<filename>`` and store it in a
+``<variable>``.  Optionally start from the given ``<offset>`` and
+read at most ``<max-in>`` bytes.  The ``HEX`` option causes data to
+be converted to a hexadecimal representation (useful for binary data). If the
+``HEX`` option is specified, letters in the output (``a`` through ``f``) are in
+lowercase.
+
+.. _STRINGS:
+
+.. code-block:: cmake
+
+  file(STRINGS <filename> <variable> [<options>...])
+
+Parse a list of ASCII strings from ``<filename>`` and store it in
+``<variable>``.  Binary data in the file are ignored.  Carriage return
+(``\r``, CR) characters are ignored.  The options are:
+
+``LENGTH_MAXIMUM <max-len>``
+ Consider only strings of at most a given length.
+
+``LENGTH_MINIMUM <min-len>``
+ Consider only strings of at least a given length.
+
+``LIMIT_COUNT <max-num>``
+ Limit the number of distinct strings to be extracted.
+
+``LIMIT_INPUT <max-in>``
+ Limit the number of input bytes to read from the file.
+
+``LIMIT_OUTPUT <max-out>``
+ Limit the number of total bytes to store in the ``<variable>``.
+
+``NEWLINE_CONSUME``
+ Treat newline characters (``\n``, LF) as part of string content
+ instead of terminating at them.
+
+``NO_HEX_CONVERSION``
+ Intel Hex and Motorola S-record files are automatically converted to
+ binary while reading unless this option is given.
+
+``REGEX <regex>``
+ Consider only strings that match the given regular expression,
+ as described under :ref:`string(REGEX) <Regex Specification>`.
+
+``ENCODING <encoding-type>``
+ .. versionadded:: 3.1
+
+ Consider strings of a given encoding.  Currently supported encodings are:
+ ``UTF-8``, ``UTF-16LE``, ``UTF-16BE``, ``UTF-32LE``, ``UTF-32BE``.
+ If the ``ENCODING`` option is not provided and the file has a Byte Order Mark,
+ the ``ENCODING`` option will be defaulted to respect the Byte Order Mark.
+
+ .. versionadded:: 3.2
+   Added the ``UTF-16LE``, ``UTF-16BE``, ``UTF-32LE``, ``UTF-32BE`` encodings.
+
+For example, the code
+
+.. code-block:: cmake
+
+  file(STRINGS myfile.txt myfile)
+
+stores a list in the variable ``myfile`` in which each item is a line
+from the input file.
+
+.. _HASH:
+
+.. code-block:: cmake
+
+  file(<HASH> <filename> <variable>)
+
+Compute a cryptographic hash of the content of ``<filename>`` and
+store it in a ``<variable>``.  The supported ``<HASH>`` algorithm names
+are those listed by the :ref:`string(\<HASH\>) <Supported Hash Algorithms>`
+command.
+
+.. _TIMESTAMP:
+
+.. code-block:: cmake
+
+  file(TIMESTAMP <filename> <variable> [<format>] [UTC])
+
+Compute a string representation of the modification time of ``<filename>``
+and store it in ``<variable>``.  Should the command be unable to obtain a
+timestamp variable will be set to the empty string ("").
+
+See the :command:`string(TIMESTAMP)` command for documentation of
+the ``<format>`` and ``UTC`` options.
+
+.. _GET_RUNTIME_DEPENDENCIES:
+
+.. code-block:: cmake
+
+  file(GET_RUNTIME_DEPENDENCIES
+    [RESOLVED_DEPENDENCIES_VAR <deps_var>]
+    [UNRESOLVED_DEPENDENCIES_VAR <unresolved_deps_var>]
+    [CONFLICTING_DEPENDENCIES_PREFIX <conflicting_deps_prefix>]
+    [EXECUTABLES [<executable_files>...]]
+    [LIBRARIES [<library_files>...]]
+    [MODULES [<module_files>...]]
+    [DIRECTORIES [<directories>...]]
+    [BUNDLE_EXECUTABLE <bundle_executable_file>]
+    [PRE_INCLUDE_REGEXES [<regexes>...]]
+    [PRE_EXCLUDE_REGEXES [<regexes>...]]
+    [POST_INCLUDE_REGEXES [<regexes>...]]
+    [POST_EXCLUDE_REGEXES [<regexes>...]]
+    [POST_INCLUDE_FILES [<files>...]]
+    [POST_EXCLUDE_FILES [<files>...]]
+    )
+
+.. versionadded:: 3.16
+
+Recursively get the list of libraries depended on by the given files.
+
+Please note that this sub-command is not intended to be used in project mode.
+It is intended for use at install time, either from code generated by the
+:command:`install(RUNTIME_DEPENDENCY_SET)` command, or from code provided by
+the project via :command:`install(CODE)` or :command:`install(SCRIPT)`.
+For example:
+
+.. code-block:: cmake
+
+  install(CODE [[
+    file(GET_RUNTIME_DEPENDENCIES
+      # ...
+      )
+    ]])
+
+The arguments are as follows:
+
+``RESOLVED_DEPENDENCIES_VAR <deps_var>``
+  Name of the variable in which to store the list of resolved dependencies.
+
+``UNRESOLVED_DEPENDENCIES_VAR <unresolved_deps_var>``
+  Name of the variable in which to store the list of unresolved dependencies.
+  If this variable is not specified, and there are any unresolved dependencies,
+  an error is issued.
+
+``CONFLICTING_DEPENDENCIES_PREFIX <conflicting_deps_prefix>``
+  Variable prefix in which to store conflicting dependency information.
+  Dependencies are conflicting if two files with the same name are found in
+  two different directories. The list of filenames that conflict are stored in
+  ``<conflicting_deps_prefix>_FILENAMES``. For each filename, the list of paths
+  that were found for that filename are stored in
+  ``<conflicting_deps_prefix>_<filename>``.
+
+``EXECUTABLES <executable_files>``
+  List of executable files to read for dependencies. These are executables that
+  are typically created with :command:`add_executable`, but they do not have to
+  be created by CMake. On Apple platforms, the paths to these files determine
+  the value of ``@executable_path`` when recursively resolving the libraries.
+  Specifying any kind of library (``STATIC``, ``MODULE``, or ``SHARED``) here
+  will result in undefined behavior.
+
+``LIBRARIES <library_files>``
+  List of library files to read for dependencies. These are libraries that are
+  typically created with :command:`add_library(SHARED)`, but they do not have
+  to be created by CMake. Specifying ``STATIC`` libraries, ``MODULE``
+  libraries, or executables here will result in undefined behavior.
+
+``MODULES <module_files>``
+  List of loadable module files to read for dependencies. These are modules
+  that are typically created with :command:`add_library(MODULE)`, but they do
+  not have to be created by CMake. They are typically used by calling
+  ``dlopen()`` at runtime rather than linked at link time with ``ld -l``.
+  Specifying ``STATIC`` libraries, ``SHARED`` libraries, or executables here
+  will result in undefined behavior.
+
+``DIRECTORIES <directories>``
+  List of additional directories to search for dependencies. On Linux
+  platforms, these directories are searched if the dependency is not found in
+  any of the other usual paths. If it is found in such a directory, a warning
+  is issued, because it means that the file is incomplete (it does not list all
+  of the directories that contain its dependencies). On Windows platforms,
+  these directories are searched if the dependency is not found in any of the
+  other search paths, but no warning is issued, because searching other paths
+  is a normal part of Windows dependency resolution. On Apple platforms, this
+  argument has no effect.
+
+``BUNDLE_EXECUTABLE <bundle_executable_file>``
+  Executable to treat as the "bundle executable" when resolving libraries. On
+  Apple platforms, this argument determines the value of ``@executable_path``
+  when recursively resolving libraries for ``LIBRARIES`` and ``MODULES`` files.
+  It has no effect on ``EXECUTABLES`` files. On other platforms, it has no
+  effect. This is typically (but not always) one of the executables in the
+  ``EXECUTABLES`` argument which designates the "main" executable of the
+  package.
+
+The following arguments specify filters for including or excluding libraries to
+be resolved. See below for a full description of how they work.
+
+``PRE_INCLUDE_REGEXES <regexes>``
+  List of pre-include regexes through which to filter the names of
+  not-yet-resolved dependencies.
+
+``PRE_EXCLUDE_REGEXES <regexes>``
+  List of pre-exclude regexes through which to filter the names of
+  not-yet-resolved dependencies.
+
+``POST_INCLUDE_REGEXES <regexes>``
+  List of post-include regexes through which to filter the names of resolved
+  dependencies.
+
+``POST_EXCLUDE_REGEXES <regexes>``
+  List of post-exclude regexes through which to filter the names of resolved
+  dependencies.
+
+``POST_INCLUDE_FILES <files>``
+  .. versionadded:: 3.21
+
+  List of post-include filenames through which to filter the names of resolved
+  dependencies. Symlinks are resolved when attempting to match these filenames.
+
+``POST_EXCLUDE_FILES <files>``
+  .. versionadded:: 3.21
+
+  List of post-exclude filenames through which to filter the names of resolved
+  dependencies. Symlinks are resolved when attempting to match these filenames.
+
+These arguments can be used to exclude unwanted system libraries when
+resolving the dependencies, or to include libraries from a specific
+directory. The filtering works as follows:
+
+1. If the not-yet-resolved dependency matches any of the
+   ``PRE_INCLUDE_REGEXES``, steps 2 and 3 are skipped, and the dependency
+   resolution proceeds to step 4.
+2. If the not-yet-resolved dependency matches any of the
+   ``PRE_EXCLUDE_REGEXES``, dependency resolution stops for that dependency.
+3. Otherwise, dependency resolution proceeds.
+4. ``file(GET_RUNTIME_DEPENDENCIES)`` searches for the dependency according to
+   the linking rules of the platform (see below).
+5. If the dependency is found, and its full path matches one of the
+   ``POST_INCLUDE_REGEXES`` or ``POST_INCLUDE_FILES``, the full path is added
+   to the resolved dependencies, and ``file(GET_RUNTIME_DEPENDENCIES)``
+   recursively resolves that library's own dependencies. Otherwise, resolution
+   proceeds to step 6.
+6. If the dependency is found, but its full path matches one of the
+   ``POST_EXCLUDE_REGEXES`` or ``POST_EXCLUDE_FILES``, it is not added to the
+   resolved dependencies, and dependency resolution stops for that dependency.
+7. If the dependency is found, and its full path does not match either
+   ``POST_INCLUDE_REGEXES``, ``POST_INCLUDE_FILES``, ``POST_EXCLUDE_REGEXES``,
+   or ``POST_EXCLUDE_FILES``, the full path is added to the resolved
+   dependencies, and ``file(GET_RUNTIME_DEPENDENCIES)``  recursively resolves
+   that library's own dependencies.
+
+Different platforms have different rules for how dependencies are resolved.
+These specifics are described here.
+
+On Linux platforms, library resolution works as follows:
+
+1. If the depending file does not have any ``RUNPATH`` entries, and the library
+   exists in one of the depending file's ``RPATH`` entries, or its parents', in
+   that order, the dependency is resolved to that file.
+2. Otherwise, if the depending file has any ``RUNPATH`` entries, and the
+   library exists in one of those entries, the dependency is resolved to that
+   file.
+3. Otherwise, if the library exists in one of the directories listed by
+   ``ldconfig``, the dependency is resolved to that file.
+4. Otherwise, if the library exists in one of the ``DIRECTORIES`` entries, the
+   dependency is resolved to that file. In this case, a warning is issued,
+   because finding a file in one of the ``DIRECTORIES`` means that the
+   depending file is not complete (it does not list all the directories from
+   which it pulls dependencies).
+5. Otherwise, the dependency is unresolved.
+
+On Windows platforms, library resolution works as follows:
+
+1. The dependent DLL name is converted to lowercase. Windows DLL names are
+   case-insensitive, and some linkers mangle the case of the DLL dependency
+   names. However, this makes it more difficult for ``PRE_INCLUDE_REGEXES``,
+   ``PRE_EXCLUDE_REGEXES``, ``POST_INCLUDE_REGEXES``, and
+   ``POST_EXCLUDE_REGEXES`` to properly filter DLL names - every regex would
+   have to check for both uppercase and lowercase letters. For example:
+
+   .. code-block:: cmake
+
+     file(GET_RUNTIME_DEPENDENCIES
+       # ...
+       PRE_INCLUDE_REGEXES "^[Mm][Yy][Ll][Ii][Bb][Rr][Aa][Rr][Yy]\\.[Dd][Ll][Ll]$"
+       )
+
+   Converting the DLL name to lowercase allows the regexes to only match
+   lowercase names, thus simplifying the regex. For example:
+
+   .. code-block:: cmake
+
+     file(GET_RUNTIME_DEPENDENCIES
+       # ...
+       PRE_INCLUDE_REGEXES "^mylibrary\\.dll$"
+       )
+
+   This regex will match ``mylibrary.dll`` regardless of how it is cased,
+   either on disk or in the depending file. (For example, it will match
+   ``mylibrary.dll``, ``MyLibrary.dll``, and ``MYLIBRARY.DLL``.)
+
+   Please note that the directory portion of any resolved DLLs retains its
+   casing and is not converted to lowercase. Only the filename portion is
+   converted.
+
+2. (**Not yet implemented**) If the depending file is a Windows Store app, and
+   the dependency is listed as a dependency in the application's package
+   manifest, the dependency is resolved to that file.
+3. Otherwise, if the library exists in the same directory as the depending
+   file, the dependency is resolved to that file.
+4. Otherwise, if the library exists in either the operating system's
+   ``system32`` directory or the ``Windows`` directory, in that order, the
+   dependency is resolved to that file.
+5. Otherwise, if the library exists in one of the directories specified by
+   ``DIRECTORIES``, in the order they are listed, the dependency is resolved to
+   that file. In this case, a warning is not issued, because searching other
+   directories is a normal part of Windows library resolution.
+6. Otherwise, the dependency is unresolved.
+
+On Apple platforms, library resolution works as follows:
+
+1. If the dependency starts with ``@executable_path/``, and an ``EXECUTABLES``
+   argument is in the process of being resolved, and replacing
+   ``@executable_path/`` with the directory of the executable yields an
+   existing file, the dependency is resolved to that file.
+2. Otherwise, if the dependency starts with ``@executable_path/``, and there is
+   a ``BUNDLE_EXECUTABLE`` argument, and replacing ``@executable_path/`` with
+   the directory of the bundle executable yields an existing file, the
+   dependency is resolved to that file.
+3. Otherwise, if the dependency starts with ``@loader_path/``, and replacing
+   ``@loader_path/`` with the directory of the depending file yields an
+   existing file, the dependency is resolved to that file.
+4. Otherwise, if the dependency starts with ``@rpath/``, and replacing
+   ``@rpath/`` with one of the ``RPATH`` entries of the depending file yields
+   an existing file, the dependency is resolved to that file. Note that
+   ``RPATH`` entries that start with ``@executable_path/`` or ``@loader_path/``
+   also have these items replaced with the appropriate path.
+5. Otherwise, if the dependency is an absolute file that exists, the dependency
+   is resolved to that file.
+6. Otherwise, the dependency is unresolved.
+
+This function accepts several variables that determine which tool is used for
+dependency resolution:
+
+.. variable:: CMAKE_GET_RUNTIME_DEPENDENCIES_PLATFORM
+
+  Determines which operating system and executable format the files are built
+  for. This could be one of several values:
+
+  * ``linux+elf``
+  * ``windows+pe``
+  * ``macos+macho``
+
+  If this variable is not specified, it is determined automatically by system
+  introspection.
+
+.. variable:: CMAKE_GET_RUNTIME_DEPENDENCIES_TOOL
+
+  Determines the tool to use for dependency resolution. It could be one of
+  several values, depending on the value of
+  :variable:`CMAKE_GET_RUNTIME_DEPENDENCIES_PLATFORM`:
+
+  ================================================= =============================================
+     ``CMAKE_GET_RUNTIME_DEPENDENCIES_PLATFORM``       ``CMAKE_GET_RUNTIME_DEPENDENCIES_TOOL``
+  ================================================= =============================================
+  ``linux+elf``                                     ``objdump``
+  ``windows+pe``                                    ``dumpbin``
+  ``windows+pe``                                    ``objdump``
+  ``macos+macho``                                   ``otool``
+  ================================================= =============================================
+
+  If this variable is not specified, it is determined automatically by system
+  introspection.
+
+.. variable:: CMAKE_GET_RUNTIME_DEPENDENCIES_COMMAND
+
+  Determines the path to the tool to use for dependency resolution. This is the
+  actual path to ``objdump``, ``dumpbin``, or ``otool``.
+
+  If this variable is not specified, it is determined by the value of
+  ``CMAKE_OBJDUMP`` if set, else by system introspection.
+
+  .. versionadded:: 3.18
+    Use ``CMAKE_OBJDUMP`` if set.
+
+Writing
+^^^^^^^
+
+.. _WRITE:
+.. _APPEND:
+
+.. code-block:: cmake
+
+  file(WRITE <filename> <content>...)
+  file(APPEND <filename> <content>...)
+
+Write ``<content>`` into a file called ``<filename>``.  If the file does
+not exist, it will be created.  If the file already exists, ``WRITE``
+mode will overwrite it and ``APPEND`` mode will append to the end.
+Any directories in the path specified by ``<filename>`` that do not
+exist will be created.
+
+If the file is a build input, use the :command:`configure_file` command
+to update the file only when its content changes.
+
+.. _TOUCH:
+.. _TOUCH_NOCREATE:
+
+.. code-block:: cmake
+
+  file(TOUCH [<files>...])
+  file(TOUCH_NOCREATE [<files>...])
+
+.. versionadded:: 3.12
+
+Create a file with no content if it does not yet exist. If the file already
+exists, its access and/or modification will be updated to the time when the
+function call is executed.
+
+Use TOUCH_NOCREATE to touch a file if it exists but not create it. If a file
+does not exist it will be silently ignored.
+
+With TOUCH and TOUCH_NOCREATE the contents of an existing file will not be
+modified.
+
+.. _GENERATE:
+
+.. code-block:: cmake
+
+  file(GENERATE OUTPUT output-file
+       <INPUT input-file|CONTENT content>
+       [CONDITION expression] [TARGET target]
+       [NO_SOURCE_PERMISSIONS | USE_SOURCE_PERMISSIONS |
+        FILE_PERMISSIONS <permissions>...]
+       [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])
+
+Generate an output file for each build configuration supported by the current
+:manual:`CMake Generator <cmake-generators(7)>`.  Evaluate
+:manual:`generator expressions <cmake-generator-expressions(7)>`
+from the input content to produce the output content.  The options are:
+
+``CONDITION <condition>``
+  Generate the output file for a particular configuration only if
+  the condition is true.  The condition must be either ``0`` or ``1``
+  after evaluating generator expressions.
+
+``CONTENT <content>``
+  Use the content given explicitly as input.
+
+``INPUT <input-file>``
+  Use the content from a given file as input.
+
+  .. versionchanged:: 3.10
+    A relative path is treated with respect to the value of
+    :variable:`CMAKE_CURRENT_SOURCE_DIR`.  See policy :policy:`CMP0070`.
+
+``OUTPUT <output-file>``
+  Specify the output file name to generate.  Use generator expressions
+  such as ``$<CONFIG>`` to specify a configuration-specific output file
+  name.  Multiple configurations may generate the same output file only
+  if the generated content is identical.  Otherwise, the ``<output-file>``
+  must evaluate to an unique name for each configuration.
+
+  .. versionchanged:: 3.10
+    A relative path (after evaluating generator expressions) is treated
+    with respect to the value of :variable:`CMAKE_CURRENT_BINARY_DIR`.
+    See policy :policy:`CMP0070`.
+
+``TARGET <target>``
+  .. versionadded:: 3.19
+
+  Specify which target to use when evaluating generator expressions that
+  require a target for evaluation (e.g. ``$<COMPILE_FEATURES:...>``,
+  ``$<TARGET_PROPERTY:prop>``).
+
+``NO_SOURCE_PERMISSIONS``
+  .. versionadded:: 3.20
+
+  The generated file permissions default to the standard 644 value
+  (-rw-r--r--).
+
+``USE_SOURCE_PERMISSIONS``
+  .. versionadded:: 3.20
+
+  Transfer the file permissions of the ``INPUT`` file to the generated file.
+  This is already the default behavior if none of the three permissions-related
+  keywords are given (``NO_SOURCE_PERMISSIONS``, ``USE_SOURCE_PERMISSIONS``
+  or ``FILE_PERMISSIONS``).  The ``USE_SOURCE_PERMISSIONS`` keyword mostly
+  serves as a way of making the intended behavior clearer at the call site.
+  It is an error to specify this option without ``INPUT``.
+
+``FILE_PERMISSIONS <permissions>...``
+  .. versionadded:: 3.20
+
+  Use the specified permissions for the generated file.
+
+``NEWLINE_STYLE <style>``
+  .. versionadded:: 3.20
+
+  Specify the newline style for the generated file.  Specify
+  ``UNIX`` or ``LF`` for ``\n`` newlines, or specify
+  ``DOS``, ``WIN32``, or ``CRLF`` for ``\r\n`` newlines.
+
+Exactly one ``CONTENT`` or ``INPUT`` option must be given.  A specific
+``OUTPUT`` file may be named by at most one invocation of ``file(GENERATE)``.
+Generated files are modified and their timestamp updated on subsequent cmake
+runs only if their content is changed.
+
+Note also that ``file(GENERATE)`` does not create the output file until the
+generation phase. The output file will not yet have been written when the
+``file(GENERATE)`` command returns, it is written only after processing all
+of a project's ``CMakeLists.txt`` files.
+
+.. _CONFIGURE:
+
+.. code-block:: cmake
+
+  file(CONFIGURE OUTPUT output-file
+       CONTENT content
+       [ESCAPE_QUOTES] [@ONLY]
+       [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])
+
+.. versionadded:: 3.18
+
+Generate an output file using the input given by ``CONTENT`` and substitute
+variable values referenced as ``@VAR@`` or ``${VAR}`` contained therein. The
+substitution rules behave the same as the :command:`configure_file` command.
+In order to match :command:`configure_file`'s behavior, generator expressions
+are not supported for both ``OUTPUT`` and ``CONTENT``.
+
+The arguments are:
+
+``OUTPUT <output-file>``
+  Specify the output file name to generate. A relative path is treated with
+  respect to the value of :variable:`CMAKE_CURRENT_BINARY_DIR`.
+  ``<output-file>`` does not support generator expressions.
+
+``CONTENT <content>``
+  Use the content given explicitly as input.
+  ``<content>`` does not support generator expressions.
+
+``ESCAPE_QUOTES``
+  Escape any substituted quotes with backslashes (C-style).
+
+``@ONLY``
+  Restrict variable replacement to references of the form ``@VAR@``.
+  This is useful for configuring scripts that use ``${VAR}`` syntax.
+
+``NEWLINE_STYLE <style>``
+  Specify the newline style for the output file.  Specify
+  ``UNIX`` or ``LF`` for ``\n`` newlines, or specify
+  ``DOS``, ``WIN32``, or ``CRLF`` for ``\r\n`` newlines.
+
+Filesystem
+^^^^^^^^^^
+
+.. _GLOB:
+.. _GLOB_RECURSE:
+
+.. code-block:: cmake
+
+  file(GLOB <variable>
+       [LIST_DIRECTORIES true|false] [RELATIVE <path>] [CONFIGURE_DEPENDS]
+       [<globbing-expressions>...])
+  file(GLOB_RECURSE <variable> [FOLLOW_SYMLINKS]
+       [LIST_DIRECTORIES true|false] [RELATIVE <path>] [CONFIGURE_DEPENDS]
+       [<globbing-expressions>...])
+
+Generate a list of files that match the ``<globbing-expressions>`` and
+store it into the ``<variable>``.  Globbing expressions are similar to
+regular expressions, but much simpler.  If ``RELATIVE`` flag is
+specified, the results will be returned as relative paths to the given
+path.
+
+.. versionchanged:: 3.6
+  The results will be ordered lexicographically.
+
+On Windows and macOS, globbing is case-insensitive even if the underlying
+filesystem is case-sensitive (both filenames and globbing expressions are
+converted to lowercase before matching).  On other platforms, globbing is
+case-sensitive.
+
+.. versionadded:: 3.3
+  By default ``GLOB`` lists directories - directories are omitted in result if
+  ``LIST_DIRECTORIES`` is set to false.
+
+.. versionadded:: 3.12
+  If the ``CONFIGURE_DEPENDS`` flag is specified, CMake will add logic
+  to the main build system check target to rerun the flagged ``GLOB`` commands
+  at build time. If any of the outputs change, CMake will regenerate the build
+  system.
+
+.. note::
+  We do not recommend using GLOB to collect a list of source files from
+  your source tree.  If no CMakeLists.txt file changes when a source is
+  added or removed then the generated build system cannot know when to
+  ask CMake to regenerate.
+  The ``CONFIGURE_DEPENDS`` flag may not work reliably on all generators, or if
+  a new generator is added in the future that cannot support it, projects using
+  it will be stuck. Even if ``CONFIGURE_DEPENDS`` works reliably, there is
+  still a cost to perform the check on every rebuild.
+
+Examples of globbing expressions include::
+
+  *.cxx      - match all files with extension cxx
+  *.vt?      - match all files with extension vta,...,vtz
+  f[3-5].txt - match files f3.txt, f4.txt, f5.txt
+
+The ``GLOB_RECURSE`` mode will traverse all the subdirectories of the
+matched directory and match the files.  Subdirectories that are symlinks
+are only traversed if ``FOLLOW_SYMLINKS`` is given or policy
+:policy:`CMP0009` is not set to ``NEW``.
+
+.. versionadded:: 3.3
+  By default ``GLOB_RECURSE`` omits directories from result list - setting
+  ``LIST_DIRECTORIES`` to true adds directories to result list.
+  If ``FOLLOW_SYMLINKS`` is given or policy :policy:`CMP0009` is not set to
+  ``NEW`` then ``LIST_DIRECTORIES`` treats symlinks as directories.
+
+Examples of recursive globbing include::
+
+  /dir/*.py  - match all python files in /dir and subdirectories
+
+.. _MAKE_DIRECTORY:
+
+.. code-block:: cmake
+
+  file(MAKE_DIRECTORY [<directories>...])
+
+Create the given directories and their parents as needed.
+
+.. _REMOVE:
+.. _REMOVE_RECURSE:
+
+.. code-block:: cmake
+
+  file(REMOVE [<files>...])
+  file(REMOVE_RECURSE [<files>...])
+
+Remove the given files.  The ``REMOVE_RECURSE`` mode will remove the given
+files and directories, also non-empty directories. No error is emitted if a
+given file does not exist.  Relative input paths are evaluated with respect
+to the current source directory.
+
+.. versionchanged:: 3.15
+  Empty input paths are ignored with a warning.  Previous versions of CMake
+  interpreted empty strings as a relative path with respect to the current
+  directory and removed its contents.
+
+.. _RENAME:
+
+.. code-block:: cmake
+
+  file(RENAME <oldname> <newname>
+       [RESULT <result>]
+       [NO_REPLACE])
+
+Move a file or directory within a filesystem from ``<oldname>`` to
+``<newname>``, replacing the destination atomically.
+
+The options are:
+
+``RESULT <result>``
+  .. versionadded:: 3.21
+
+  Set ``<result>`` variable to ``0`` on success or an error message otherwise.
+  If ``RESULT`` is not specified and the operation fails, an error is emitted.
+
+``NO_REPLACE``
+  .. versionadded:: 3.21
+
+  If the ``<newname>`` path already exists, do not replace it.
+  If ``RESULT <result>`` is used, the result variable will be
+  set to ``NO_REPLACE``.  Otherwise, an error is emitted.
+
+.. _COPY_FILE:
+
+.. code-block:: cmake
+
+  file(COPY_FILE <oldname> <newname>
+       [RESULT <result>]
+       [ONLY_IF_DIFFERENT])
+
+.. versionadded:: 3.21
+
+Copy a file from ``<oldname>`` to ``<newname>``. Directories are not
+supported. Symlinks are ignored and ``<oldfile>``'s content is read and
+written to ``<newname>`` as a new file.
+
+The options are:
+
+``RESULT <result>``
+  Set ``<result>`` variable to ``0`` on success or an error message otherwise.
+  If ``RESULT`` is not specified and the operation fails, an error is emitted.
+
+``ONLY_IF_DIFFERENT``
+  If the ``<newname>`` path already exists, do not replace it if the file's
+  contents are already the same as ``<oldname>`` (this avoids updating
+  ``<newname>``'s timestamp).
+
+This sub-command has some similarities to :command:`configure_file` with the
+``COPYONLY`` option.  An important difference is that :command:`configure_file`
+creates a dependency on the source file, so CMake will be re-run if it changes.
+The ``file(COPY_FILE)`` sub-command does not create such a dependency.
+
+See also the ``file(COPY)`` sub-command just below which provides
+further file-copying capabilities.
+
+.. _COPY:
+.. _INSTALL:
+
+.. code-block:: cmake
+
+  file(<COPY|INSTALL> <files>... DESTINATION <dir>
+       [NO_SOURCE_PERMISSIONS | USE_SOURCE_PERMISSIONS]
+       [FILE_PERMISSIONS <permissions>...]
+       [DIRECTORY_PERMISSIONS <permissions>...]
+       [FOLLOW_SYMLINK_CHAIN]
+       [FILES_MATCHING]
+       [[PATTERN <pattern> | REGEX <regex>]
+        [EXCLUDE] [PERMISSIONS <permissions>...]] [...])
+
+.. note::
+
+  For a simple file copying operation, the ``file(COPY_FILE)`` sub-command
+  just above may be easier to use.
+
+The ``COPY`` signature copies files, directories, and symlinks to a
+destination folder.  Relative input paths are evaluated with respect
+to the current source directory, and a relative destination is
+evaluated with respect to the current build directory.  Copying
+preserves input file timestamps, and optimizes out a file if it exists
+at the destination with the same timestamp.  Copying preserves input
+permissions unless explicit permissions or ``NO_SOURCE_PERMISSIONS``
+are given (default is ``USE_SOURCE_PERMISSIONS``).
+
+.. versionadded:: 3.15
+  If ``FOLLOW_SYMLINK_CHAIN`` is specified, ``COPY`` will recursively resolve
+  the symlinks at the paths given until a real file is found, and install
+  a corresponding symlink in the destination for each symlink encountered. For
+  each symlink that is installed, the resolution is stripped of the directory,
+  leaving only the filename, meaning that the new symlink points to a file in
+  the same directory as the symlink. This feature is useful on some Unix systems,
+  where libraries are installed as a chain of symlinks with version numbers, with
+  less specific versions pointing to more specific versions.
+  ``FOLLOW_SYMLINK_CHAIN`` will install all of these symlinks and the library
+  itself into the destination directory. For example, if you have the following
+  directory structure:
+
+* ``/opt/foo/lib/libfoo.so.1.2.3``
+* ``/opt/foo/lib/libfoo.so.1.2 -> libfoo.so.1.2.3``
+* ``/opt/foo/lib/libfoo.so.1 -> libfoo.so.1.2``
+* ``/opt/foo/lib/libfoo.so -> libfoo.so.1``
+
+and you do:
+
+.. code-block:: cmake
+
+  file(COPY /opt/foo/lib/libfoo.so DESTINATION lib FOLLOW_SYMLINK_CHAIN)
+
+This will install all of the symlinks and ``libfoo.so.1.2.3`` itself into
+``lib``.
+
+See the :command:`install(DIRECTORY)` command for documentation of
+permissions, ``FILES_MATCHING``, ``PATTERN``, ``REGEX``, and
+``EXCLUDE`` options.  Copying directories preserves the structure
+of their content even if options are used to select a subset of
+files.
+
+The ``INSTALL`` signature differs slightly from ``COPY``: it prints
+status messages, and ``NO_SOURCE_PERMISSIONS`` is default.
+
+Installation scripts generated by the :command:`install` command
+use this signature (with some undocumented options for internal use).
+
+.. versionchanged:: 3.22
+
+  The environment variable :envvar:`CMAKE_INSTALL_MODE` can override the
+  default copying behavior of :command:`file(INSTALL)`.
+
+.. _SIZE:
+
+.. code-block:: cmake
+
+  file(SIZE <filename> <variable>)
+
+.. versionadded:: 3.14
+
+Determine the file size of the ``<filename>`` and put the result in
+``<variable>`` variable. Requires that ``<filename>`` is a valid path
+pointing to a file and is readable.
+
+.. _READ_SYMLINK:
+
+.. code-block:: cmake
+
+  file(READ_SYMLINK <linkname> <variable>)
+
+.. versionadded:: 3.14
+
+This subcommand queries the symlink ``<linkname>`` and stores the path it
+points to in the result ``<variable>``.  If ``<linkname>`` does not exist or
+is not a symlink, CMake issues a fatal error.
+
+Note that this command returns the raw symlink path and does not resolve
+a relative path.  The following is an example of how to ensure that an
+absolute path is obtained:
+
+.. code-block:: cmake
+
+  set(linkname "/path/to/foo.sym")
+  file(READ_SYMLINK "${linkname}" result)
+  if(NOT IS_ABSOLUTE "${result}")
+    get_filename_component(dir "${linkname}" DIRECTORY)
+    set(result "${dir}/${result}")
+  endif()
+
+.. _CREATE_LINK:
+
+.. code-block:: cmake
+
+  file(CREATE_LINK <original> <linkname>
+       [RESULT <result>] [COPY_ON_ERROR] [SYMBOLIC])
+
+.. versionadded:: 3.14
+
+Create a link ``<linkname>`` that points to ``<original>``.
+It will be a hard link by default, but providing the ``SYMBOLIC`` option
+results in a symbolic link instead.  Hard links require that ``original``
+exists and is a file, not a directory.  If ``<linkname>`` already exists,
+it will be overwritten.
+
+The ``<result>`` variable, if specified, receives the status of the operation.
+It is set to ``0`` upon success or an error message otherwise.  If ``RESULT``
+is not specified and the operation fails, a fatal error is emitted.
+
+Specifying ``COPY_ON_ERROR`` enables copying the file as a fallback if
+creating the link fails.  It can be useful for handling situations such as
+``<original>`` and ``<linkname>`` being on different drives or mount points,
+which would make them unable to support a hard link.
+
+.. _CHMOD:
+
+.. code-block:: cmake
+
+  file(CHMOD <files>... <directories>...
+      [PERMISSIONS <permissions>...]
+      [FILE_PERMISSIONS <permissions>...]
+      [DIRECTORY_PERMISSIONS <permissions>...])
+
+.. versionadded:: 3.19
+
+Set the permissions for the ``<files>...`` and ``<directories>...`` specified.
+Valid permissions are  ``OWNER_READ``, ``OWNER_WRITE``, ``OWNER_EXECUTE``,
+``GROUP_READ``, ``GROUP_WRITE``, ``GROUP_EXECUTE``, ``WORLD_READ``,
+``WORLD_WRITE``, ``WORLD_EXECUTE``, ``SETUID``, ``SETGID``.
+
+Valid combination of keywords are:
+
+``PERMISSIONS``
+  All items are changed.
+
+``FILE_PERMISSIONS``
+  Only files are changed.
+
+``DIRECTORY_PERMISSIONS``
+  Only directories are changed.
+
+``PERMISSIONS`` and ``FILE_PERMISSIONS``
+  ``FILE_PERMISSIONS`` overrides ``PERMISSIONS`` for files.
+
+``PERMISSIONS`` and ``DIRECTORY_PERMISSIONS``
+  ``DIRECTORY_PERMISSIONS`` overrides ``PERMISSIONS`` for directories.
+
+``FILE_PERMISSIONS`` and ``DIRECTORY_PERMISSIONS``
+  Use ``FILE_PERMISSIONS`` for files and ``DIRECTORY_PERMISSIONS`` for
+  directories.
+
+
+.. _CHMOD_RECURSE:
+
+.. code-block:: cmake
+
+  file(CHMOD_RECURSE <files>... <directories>...
+       [PERMISSIONS <permissions>...]
+       [FILE_PERMISSIONS <permissions>...]
+       [DIRECTORY_PERMISSIONS <permissions>...])
+
+.. versionadded:: 3.19
+
+Same as `CHMOD`_, but change the permissions of files and directories present in
+the ``<directories>...`` recursively.
+
+Path Conversion
+^^^^^^^^^^^^^^^
+
+.. _REAL_PATH:
+
+.. code-block:: cmake
+
+  file(REAL_PATH <path> <out-var> [BASE_DIRECTORY <dir>] [EXPAND_TILDE])
+
+.. versionadded:: 3.19
+
+Compute the absolute path to an existing file or directory with symlinks
+resolved.
+
+``BASE_DIRECTORY <dir>``
+  If the provided ``<path>`` is a relative path, it is evaluated relative to the
+  given base directory ``<dir>``. If no base directory is provided, the default
+  base directory will be :variable:`CMAKE_CURRENT_SOURCE_DIR`.
+
+``EXPAND_TILDE``
+  .. versionadded:: 3.21
+
+  If the ``<path>`` is ``~`` or starts with ``~/``, the ``~`` is replaced by
+  the user's home directory.  The path to the home directory is obtained from
+  environment variables.  On Windows, the ``USERPROFILE`` environment variable
+  is used, falling back to the ``HOME`` environment variable if ``USERPROFILE``
+  is not defined.  On all other platforms, only ``HOME`` is used.
+
+.. _RELATIVE_PATH:
+
+.. code-block:: cmake
+
+  file(RELATIVE_PATH <variable> <directory> <file>)
+
+Compute the relative path from a ``<directory>`` to a ``<file>`` and
+store it in the ``<variable>``.
+
+.. _TO_CMAKE_PATH:
+.. _TO_NATIVE_PATH:
+
+.. code-block:: cmake
+
+  file(TO_CMAKE_PATH "<path>" <variable>)
+  file(TO_NATIVE_PATH "<path>" <variable>)
+
+The ``TO_CMAKE_PATH`` mode converts a native ``<path>`` into a cmake-style
+path with forward-slashes (``/``).  The input can be a single path or a
+system search path like ``$ENV{PATH}``.  A search path will be converted
+to a cmake-style list separated by ``;`` characters.
+
+The ``TO_NATIVE_PATH`` mode converts a cmake-style ``<path>`` into a native
+path with platform-specific slashes (``\`` on Windows hosts and ``/``
+elsewhere).
+
+Always use double quotes around the ``<path>`` to be sure it is treated
+as a single argument to this command.
+
+Transfer
+^^^^^^^^
+
+.. _DOWNLOAD:
+.. _UPLOAD:
+
+.. code-block:: cmake
+
+  file(DOWNLOAD <url> [<file>] [<options>...])
+  file(UPLOAD   <file> <url> [<options>...])
+
+The ``DOWNLOAD`` subcommand downloads the given ``<url>`` to a local ``<file>``.
+The ``UPLOAD`` mode uploads a local ``<file>`` to a given ``<url>``.
+
+.. versionadded:: 3.19
+  If ``<file>`` is not specified for ``file(DOWNLOAD)``, the file is not saved.
+  This can be useful if you want to know if a file can be downloaded (for example,
+  to check that it exists) without actually saving it anywhere.
+
+Options to both ``DOWNLOAD`` and ``UPLOAD`` are:
+
+``INACTIVITY_TIMEOUT <seconds>``
+  Terminate the operation after a period of inactivity.
+
+``LOG <variable>``
+  Store a human-readable log of the operation in a variable.
+
+``SHOW_PROGRESS``
+  Print progress information as status messages until the operation is
+  complete.
+
+``STATUS <variable>``
+  Store the resulting status of the operation in a variable.
+  The status is a ``;`` separated list of length 2.
+  The first element is the numeric return value for the operation,
+  and the second element is a string value for the error.
+  A ``0`` numeric error means no error in the operation.
+
+``TIMEOUT <seconds>``
+  Terminate the operation after a given total time has elapsed.
+
+``USERPWD <username>:<password>``
+  .. versionadded:: 3.7
+
+  Set username and password for operation.
+
+``HTTPHEADER <HTTP-header>``
+  .. versionadded:: 3.7
+
+  HTTP header for operation. Suboption can be repeated several times.
+
+``NETRC <level>``
+  .. versionadded:: 3.11
+
+  Specify whether the .netrc file is to be used for operation.  If this
+  option is not specified, the value of the :variable:`CMAKE_NETRC` variable
+  will be used instead.
+  Valid levels are:
+
+  ``IGNORED``
+    The .netrc file is ignored.
+    This is the default.
+  ``OPTIONAL``
+    The .netrc file is optional, and information in the URL is preferred.
+    The file will be scanned to find which ever information is not specified
+    in the URL.
+  ``REQUIRED``
+    The .netrc file is required, and information in the URL is ignored.
+
+``NETRC_FILE <file>``
+  .. versionadded:: 3.11
+
+  Specify an alternative .netrc file to the one in your home directory,
+  if the ``NETRC`` level is ``OPTIONAL`` or ``REQUIRED``. If this option
+  is not specified, the value of the :variable:`CMAKE_NETRC_FILE` variable will
+  be used instead.
+
+``TLS_VERIFY <ON|OFF>``
+  Specify whether to verify the server certificate for ``https://`` URLs.
+  The default is to *not* verify. If this option is not specified, the value
+  of the :variable:`CMAKE_TLS_VERIFY` variable will be used instead.
+
+  .. versionadded:: 3.18
+    Added support to ``file(UPLOAD)``.
+
+``TLS_CAINFO <file>``
+  Specify a custom Certificate Authority file for ``https://`` URLs. If this
+  option is not specified, the value of the :variable:`CMAKE_TLS_CAINFO`
+  variable will be used instead.
+
+  .. versionadded:: 3.18
+    Added support to ``file(UPLOAD)``.
+
+For ``https://`` URLs CMake must be built with OpenSSL support.  ``TLS/SSL``
+certificates are not checked by default.  Set ``TLS_VERIFY`` to ``ON`` to
+check certificates.
+
+Additional options to ``DOWNLOAD`` are:
+
+``EXPECTED_HASH ALGO=<value>``
+
+  Verify that the downloaded content hash matches the expected value, where
+  ``ALGO`` is one of the algorithms supported by ``file(<HASH>)``.
+  If it does not match, the operation fails with an error. It is an error to
+  specify this if ``DOWNLOAD`` is not given a ``<file>``.
+
+``EXPECTED_MD5 <value>``
+  Historical short-hand for ``EXPECTED_HASH MD5=<value>``. It is an error to
+  specify this if ``DOWNLOAD`` is not given a ``<file>``.
+
+Locking
+^^^^^^^
+
+.. _LOCK:
+
+.. code-block:: cmake
+
+  file(LOCK <path> [DIRECTORY] [RELEASE]
+       [GUARD <FUNCTION|FILE|PROCESS>]
+       [RESULT_VARIABLE <variable>]
+       [TIMEOUT <seconds>])
+
+.. versionadded:: 3.2
+
+Lock a file specified by ``<path>`` if no ``DIRECTORY`` option present and file
+``<path>/cmake.lock`` otherwise. File will be locked for scope defined by
+``GUARD`` option (default value is ``PROCESS``). ``RELEASE`` option can be used
+to unlock file explicitly. If option ``TIMEOUT`` is not specified CMake will
+wait until lock succeed or until fatal error occurs. If ``TIMEOUT`` is set to
+``0`` lock will be tried once and result will be reported immediately. If
+``TIMEOUT`` is not ``0`` CMake will try to lock file for the period specified
+by ``<seconds>`` value. Any errors will be interpreted as fatal if there is no
+``RESULT_VARIABLE`` option. Otherwise result will be stored in ``<variable>``
+and will be ``0`` on success or error message on failure.
+
+Note that lock is advisory - there is no guarantee that other processes will
+respect this lock, i.e. lock synchronize two or more CMake instances sharing
+some modifiable resources. Similar logic applied to ``DIRECTORY`` option -
+locking parent directory doesn't prevent other ``LOCK`` commands to lock any
+child directory or file.
+
+Trying to lock file twice is not allowed.  Any intermediate directories and
+file itself will be created if they not exist.  ``GUARD`` and ``TIMEOUT``
+options ignored on ``RELEASE`` operation.
+
+Archiving
+^^^^^^^^^
+
+.. _ARCHIVE_CREATE:
+
+.. code-block:: cmake
+
+  file(ARCHIVE_CREATE OUTPUT <archive>
+    PATHS <paths>...
+    [FORMAT <format>]
+    [COMPRESSION <compression> [COMPRESSION_LEVEL <compression-level>]]
+    [MTIME <mtime>]
+    [VERBOSE])
+
+.. versionadded:: 3.18
+
+Creates the specified ``<archive>`` file with the files and directories
+listed in ``<paths>``.  Note that ``<paths>`` must list actual files or
+directories, wildcards are not supported.
+
+Use the ``FORMAT`` option to specify the archive format.  Supported values
+for ``<format>`` are ``7zip``, ``gnutar``, ``pax``, ``paxr``, ``raw`` and
+``zip``.  If ``FORMAT`` is not given, the default format is ``paxr``.
+
+Some archive formats allow the type of compression to be specified.
+The ``7zip`` and ``zip`` archive formats already imply a specific type of
+compression.  The other formats use no compression by default, but can be
+directed to do so with the ``COMPRESSION`` option.  Valid values for
+``<compression>`` are ``None``, ``BZip2``, ``GZip``, ``XZ``, and ``Zstd``.
+
+.. versionadded:: 3.19
+  The compression level can be specified with the ``COMPRESSION_LEVEL`` option.
+  The ``<compression-level>`` should be between 0-9, with the default being 0.
+  The ``COMPRESSION`` option must be present when ``COMPRESSION_LEVEL`` is given.
+
+.. note::
+  With ``FORMAT`` set to ``raw`` only one file will be compressed with the
+  compression type specified by ``COMPRESSION``.
+
+The ``VERBOSE`` option enables verbose output for the archive operation.
+
+To specify the modification time recorded in tarball entries, use
+the ``MTIME`` option.
+
+.. _ARCHIVE_EXTRACT:
+
+.. code-block:: cmake
+
+  file(ARCHIVE_EXTRACT INPUT <archive>
+    [DESTINATION <dir>]
+    [PATTERNS <patterns>...]
+    [LIST_ONLY]
+    [VERBOSE])
+
+.. versionadded:: 3.18
+
+Extracts or lists the content of the specified ``<archive>``.
+
+The directory where the content of the archive will be extracted to can
+be specified using the ``DESTINATION`` option.  If the directory does not
+exist, it will be created.  If ``DESTINATION`` is not given, the current
+binary directory will be used.
+
+If required, you may select which files and directories to list or extract
+from the archive using the specified ``<patterns>``.  Wildcards are supported.
+If the ``PATTERNS`` option is not given, the entire archive will be listed or
+extracted.
+
+``LIST_ONLY`` will list the files in the archive rather than extract them.
+
+With ``VERBOSE``, the command will produce verbose output.
diff --git a/share/cmake-3.22/Help/command/find_file.rst b/share/cmake-3.22/Help/command/find_file.rst
new file mode 100644
index 0000000..39dfb85
--- /dev/null
+++ b/share/cmake-3.22/Help/command/find_file.rst
@@ -0,0 +1,37 @@
+find_file
+---------
+
+.. |FIND_XXX| replace:: find_file
+.. |NAMES| replace:: NAMES name1 [name2 ...]
+.. |SEARCH_XXX| replace:: full path to a file
+.. |SEARCH_XXX_DESC| replace:: full path to named file
+.. |prefix_XXX_SUBDIR| replace:: ``<prefix>/include``
+.. |entry_XXX_SUBDIR| replace:: ``<entry>/include``
+
+.. |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX| replace::
+   ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
+   is set, and |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX_SUBDIR|
+.. |CMAKE_PREFIX_PATH_XXX| replace::
+   ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
+   is set, and |CMAKE_PREFIX_PATH_XXX_SUBDIR|
+.. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_INCLUDE_PATH`
+.. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH`
+
+.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: The directories in ``INCLUDE``
+   and ``PATH``.
+.. |SYSTEM_ENVIRONMENT_PATH_WINDOWS_XXX| replace:: On Windows hosts:
+      ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
+      is set, and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|.
+
+.. |CMAKE_SYSTEM_PREFIX_PATH_XXX| replace::
+   ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
+   is set, and |CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR|
+.. |CMAKE_SYSTEM_XXX_PATH| replace::
+   :variable:`CMAKE_SYSTEM_INCLUDE_PATH`
+.. |CMAKE_SYSTEM_XXX_MAC_PATH| replace::
+   :variable:`CMAKE_SYSTEM_FRAMEWORK_PATH`
+
+.. |CMAKE_FIND_ROOT_PATH_MODE_XXX| replace::
+   :variable:`CMAKE_FIND_ROOT_PATH_MODE_INCLUDE`
+
+.. include:: FIND_XXX.txt
diff --git a/share/cmake-3.22/Help/command/find_library.rst b/share/cmake-3.22/Help/command/find_library.rst
new file mode 100644
index 0000000..ab957ce
--- /dev/null
+++ b/share/cmake-3.22/Help/command/find_library.rst
@@ -0,0 +1,82 @@
+find_library
+------------
+
+.. |FIND_XXX| replace:: find_library
+.. |NAMES| replace:: NAMES name1 [name2 ...] [NAMES_PER_DIR]
+.. |SEARCH_XXX| replace:: library
+.. |SEARCH_XXX_DESC| replace:: library
+.. |prefix_XXX_SUBDIR| replace:: ``<prefix>/lib``
+.. |entry_XXX_SUBDIR| replace:: ``<entry>/lib``
+
+.. |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX| replace::
+   ``<prefix>/lib/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set,
+   and |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX_SUBDIR|
+.. |CMAKE_PREFIX_PATH_XXX| replace::
+   ``<prefix>/lib/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set,
+   and |CMAKE_PREFIX_PATH_XXX_SUBDIR|
+.. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_LIBRARY_PATH`
+.. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH`
+
+.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: The directories in ``LIB``
+   and ``PATH``.
+.. |SYSTEM_ENVIRONMENT_PATH_WINDOWS_XXX| replace:: On Windows hosts:
+      ``<prefix>/lib/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
+      is set, and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|.
+
+.. |CMAKE_SYSTEM_PREFIX_PATH_XXX| replace::
+   ``<prefix>/lib/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set,
+   and |CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR|
+.. |CMAKE_SYSTEM_XXX_PATH| replace::
+   :variable:`CMAKE_SYSTEM_LIBRARY_PATH`
+.. |CMAKE_SYSTEM_XXX_MAC_PATH| replace::
+   :variable:`CMAKE_SYSTEM_FRAMEWORK_PATH`
+
+.. |CMAKE_FIND_ROOT_PATH_MODE_XXX| replace::
+   :variable:`CMAKE_FIND_ROOT_PATH_MODE_LIBRARY`
+
+.. include:: FIND_XXX.txt
+
+When more than one value is given to the ``NAMES`` option this command by
+default will consider one name at a time and search every directory
+for it.  The ``NAMES_PER_DIR`` option tells this command to consider one
+directory at a time and search for all names in it.
+
+Each library name given to the ``NAMES`` option is first considered
+as a library file name and then considered with platform-specific
+prefixes (e.g. ``lib``) and suffixes (e.g. ``.so``).  Therefore one
+may specify library file names such as ``libfoo.a`` directly.
+This can be used to locate static libraries on UNIX-like systems.
+
+If the library found is a framework, then ``<VAR>`` will be set to the full
+path to the framework ``<fullPath>/A.framework``.  When a full path to a
+framework is used as a library, CMake will use a ``-framework A``, and a
+``-F<fullPath>`` to link the framework to the target.
+
+If the :variable:`CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX` variable is set all
+search paths will be tested as normal, with the suffix appended, and with
+all matches of ``lib/`` replaced with
+``lib${CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX}/``.  This variable overrides
+the :prop_gbl:`FIND_LIBRARY_USE_LIB32_PATHS`,
+:prop_gbl:`FIND_LIBRARY_USE_LIBX32_PATHS`,
+and :prop_gbl:`FIND_LIBRARY_USE_LIB64_PATHS` global properties.
+
+If the :prop_gbl:`FIND_LIBRARY_USE_LIB32_PATHS` global property is set
+all search paths will be tested as normal, with ``32/`` appended, and
+with all matches of ``lib/`` replaced with ``lib32/``.  This property is
+automatically set for the platforms that are known to need it if at
+least one of the languages supported by the :command:`project` command
+is enabled.
+
+If the :prop_gbl:`FIND_LIBRARY_USE_LIBX32_PATHS` global property is set
+all search paths will be tested as normal, with ``x32/`` appended, and
+with all matches of ``lib/`` replaced with ``libx32/``.  This property is
+automatically set for the platforms that are known to need it if at
+least one of the languages supported by the :command:`project` command
+is enabled.
+
+If the :prop_gbl:`FIND_LIBRARY_USE_LIB64_PATHS` global property is set
+all search paths will be tested as normal, with ``64/`` appended, and
+with all matches of ``lib/`` replaced with ``lib64/``.  This property is
+automatically set for the platforms that are known to need it if at
+least one of the languages supported by the :command:`project` command
+is enabled.
diff --git a/share/cmake-3.22/Help/command/find_package.rst b/share/cmake-3.22/Help/command/find_package.rst
new file mode 100644
index 0000000..1a79a8a
--- /dev/null
+++ b/share/cmake-3.22/Help/command/find_package.rst
@@ -0,0 +1,618 @@
+find_package
+------------
+
+.. only:: html
+
+   .. contents::
+
+Find a package (usually provided by something external to the project),
+and load its package-specific details.
+
+Search Modes
+^^^^^^^^^^^^
+
+The command has two very distinct ways of conducting the search:
+
+**Module mode**
+  In this mode, CMake searches for a file called ``Find<PackageName>.cmake``,
+  looking first in the locations listed in the :variable:`CMAKE_MODULE_PATH`,
+  then among the :ref:`Find Modules` provided by the CMake installation.
+  If the file is found, it is read and processed by CMake.  It is responsible
+  for finding the package, checking the version, and producing any needed
+  messages.  Some Find modules provide limited or no support for versioning;
+  check the Find module's documentation.
+
+  The ``Find<PackageName>.cmake`` file is not typically provided by the
+  package itself.  Rather, it is normally provided by something external to
+  the package, such as the operating system, CMake itself, or even the project
+  from which the ``find_package()`` command was called.  Being externally
+  provided, :ref:`Find Modules` tend to be heuristic in nature and are
+  susceptible to becoming out-of-date.  They typically search for certain
+  libraries, files and other package artifacts.
+
+  Module mode is only supported by the
+  :ref:`basic command signature <Basic Signature>`.
+
+**Config mode**
+  In this mode, CMake searches for a file called
+  ``<lowercasePackageName>-config.cmake`` or ``<PackageName>Config.cmake``.
+  It will also look for ``<lowercasePackageName>-config-version.cmake`` or
+  ``<PackageName>ConfigVersion.cmake`` if version details were specified
+  (see :ref:`version selection` for an explanation of how these separate
+  version files are used).
+
+  In config mode, the command can be given a list of names to search for
+  as package names.  The locations where CMake searches for the config and
+  version files is considerably more complicated than for Module mode
+  (see :ref:`search procedure`).
+
+  The config and version files are typically installed as part of the
+  package, so they tend to be more reliable than Find modules.  They usually
+  contain direct knowledge of the package contents, so no searching or
+  heuristics are needed within the config or version files themselves.
+
+  Config mode is supported by both the :ref:`basic <Basic Signature>` and
+  :ref:`full <Full Signature>` command signatures.
+
+The command arguments determine which of the above modes is used.  When the
+`basic signature`_ is used, the command searches in Module mode first.
+If the package is not found, the search falls back to Config mode.
+A user may set the :variable:`CMAKE_FIND_PACKAGE_PREFER_CONFIG` variable
+to true to reverse the priority and direct CMake to search using Config mode
+first before falling back to Module mode.  The basic signature can also be
+forced to use only Module mode with a ``MODULE`` keyword.  If the
+`full signature`_ is used, the command only searches in Config mode.
+
+Where possible, user code should generally look for packages using the
+`basic signature`_, since that allows the package to be found with either mode.
+Project maintainers wishing to provide a config package should understand
+the bigger picture, as explained in :ref:`Full Signature` and all subsequent
+sections on this page.
+
+.. _`basic signature`:
+
+Basic Signature
+^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  find_package(<PackageName> [version] [EXACT] [QUIET] [MODULE]
+               [REQUIRED] [[COMPONENTS] [components...]]
+               [OPTIONAL_COMPONENTS components...]
+               [NO_POLICY_SCOPE])
+
+The basic signature is supported by both Module and Config modes.
+The ``MODULE`` keyword implies that only Module mode can be used to find
+the package, with no fallback to Config mode.
+
+Regardless of the mode used, a ``<PackageName>_FOUND`` variable will be
+set to indicate whether the package was found.  When the package is found,
+package-specific information may be provided through other variables and
+:ref:`Imported Targets` documented by the package itself.  The
+``QUIET`` option disables informational messages, including those indicating
+that the package cannot be found if it is not ``REQUIRED``.  The ``REQUIRED``
+option stops processing with an error message if the package cannot be found.
+
+A package-specific list of required components may be listed after the
+``COMPONENTS`` keyword.  If any of these components are not able to be
+satisfied, the package overall is considered to be not found.  If the
+``REQUIRED`` option is also present, this is treated as a fatal error,
+otherwise execution still continues.  As a form of shorthand, if the
+``REQUIRED`` option is present, the ``COMPONENTS`` keyword can be omitted
+and the required components can be listed directly after ``REQUIRED``.
+
+Additional optional components may be listed after
+``OPTIONAL_COMPONENTS``.  If these cannot be satisfied, the package overall
+can still be considered found, as long as all required components are
+satisfied.
+
+The set of available components and their meaning are defined by the
+target package.  Formally, it is up to the target package how to
+interpret the component information given to it, but it should follow
+the expectations stated above.  For calls where no components are specified,
+there is no single expected behavior and target packages should clearly
+define what occurs in such cases.  Common arrangements include assuming it
+should find all components, no components or some well-defined subset of the
+available components.
+
+.. _FIND_PACKAGE_VERSION_FORMAT:
+
+The ``[version]`` argument requests a version with which the package found
+should be compatible. There are two possible forms in which it may be
+specified:
+
+  * A single version with the format ``major[.minor[.patch[.tweak]]]``, where
+    each component is a numeric value.
+  * A version range with the format ``versionMin...[<]versionMax`` where
+    ``versionMin`` and ``versionMax`` have the same format and constraints
+    on components being integers as the single version.  By default, both end
+    points are included.  By specifying ``<``, the upper end point will be
+    excluded. Version ranges are only supported with CMake 3.19 or later.
+
+The ``EXACT`` option requests that the version be matched exactly. This option
+is incompatible with the specification of a version range.
+
+If no ``[version]`` and/or component list is given to a recursive invocation
+inside a find-module, the corresponding arguments are forwarded
+automatically from the outer call (including the ``EXACT`` flag for
+``[version]``).  Version support is currently provided only on a
+package-by-package basis (see the `Version Selection`_ section below).
+When a version range is specified but the package is only designed to expect
+a single version, the package will ignore the upper end point of the range and
+only take the single version at the lower end of the range into account.
+
+See the :command:`cmake_policy` command documentation for discussion
+of the ``NO_POLICY_SCOPE`` option.
+
+.. _`full signature`:
+
+Full Signature
+^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  find_package(<PackageName> [version] [EXACT] [QUIET]
+               [REQUIRED] [[COMPONENTS] [components...]]
+               [OPTIONAL_COMPONENTS components...]
+               [CONFIG|NO_MODULE]
+               [NO_POLICY_SCOPE]
+               [NAMES name1 [name2 ...]]
+               [CONFIGS config1 [config2 ...]]
+               [HINTS path1 [path2 ... ]]
+               [PATHS path1 [path2 ... ]]
+               [PATH_SUFFIXES suffix1 [suffix2 ...]]
+               [NO_DEFAULT_PATH]
+               [NO_PACKAGE_ROOT_PATH]
+               [NO_CMAKE_PATH]
+               [NO_CMAKE_ENVIRONMENT_PATH]
+               [NO_SYSTEM_ENVIRONMENT_PATH]
+               [NO_CMAKE_PACKAGE_REGISTRY]
+               [NO_CMAKE_BUILDS_PATH] # Deprecated; does nothing.
+               [NO_CMAKE_SYSTEM_PATH]
+               [NO_CMAKE_SYSTEM_PACKAGE_REGISTRY]
+               [CMAKE_FIND_ROOT_PATH_BOTH |
+                ONLY_CMAKE_FIND_ROOT_PATH |
+                NO_CMAKE_FIND_ROOT_PATH])
+
+The ``CONFIG`` option, the synonymous ``NO_MODULE`` option, or the use
+of options not specified in the `basic signature`_ all enforce pure Config
+mode.  In pure Config mode, the command skips Module mode search and
+proceeds at once with Config mode search.
+
+Config mode search attempts to locate a configuration file provided by the
+package to be found.  A cache entry called ``<PackageName>_DIR`` is created to
+hold the directory containing the file.  By default the command
+searches for a package with the name ``<PackageName>``.  If the ``NAMES`` option
+is given the names following it are used instead of ``<PackageName>``.
+The command searches for a file called ``<PackageName>Config.cmake`` or
+``<lowercasePackageName>-config.cmake`` for each name specified.
+A replacement set of possible configuration file names may be given
+using the ``CONFIGS`` option.  The :ref:`search procedure` is specified below.
+Once found, any :ref:`version constraint <version selection>` is checked,
+and if satisfied, the configuration file is read and processed by CMake.
+Since the file is provided by the package it already knows the
+location of package contents.  The full path to the configuration file
+is stored in the cmake variable ``<PackageName>_CONFIG``.
+
+All configuration files which have been considered by CMake while
+searching for the package with an appropriate version are stored in the
+``<PackageName>_CONSIDERED_CONFIGS`` variable, and the associated versions
+in the ``<PackageName>_CONSIDERED_VERSIONS`` variable.
+
+If the package configuration file cannot be found CMake will generate
+an error describing the problem unless the ``QUIET`` argument is
+specified.  If ``REQUIRED`` is specified and the package is not found a
+fatal error is generated and the configure step stops executing.  If
+``<PackageName>_DIR`` has been set to a directory not containing a
+configuration file CMake will ignore it and search from scratch.
+
+Package maintainers providing CMake package configuration files are
+encouraged to name and install them such that the :ref:`search procedure`
+outlined below will find them without requiring use of additional options.
+
+.. _`search procedure`:
+
+Config Mode Search Procedure
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. note::
+  When Config mode is used, this search procedure is applied regardless of
+  whether the :ref:`full <full signature>` or :ref:`basic <basic signature>`
+  signature was given.
+
+CMake constructs a set of possible installation prefixes for the
+package.  Under each prefix several directories are searched for a
+configuration file.  The tables below show the directories searched.
+Each entry is meant for installation trees following Windows (``W``), UNIX
+(``U``), or Apple (``A``) conventions::
+
+  <prefix>/                                                       (W)
+  <prefix>/(cmake|CMake)/                                         (W)
+  <prefix>/<name>*/                                               (W)
+  <prefix>/<name>*/(cmake|CMake)/                                 (W)
+  <prefix>/(lib/<arch>|lib*|share)/cmake/<name>*/                 (U)
+  <prefix>/(lib/<arch>|lib*|share)/<name>*/                       (U)
+  <prefix>/(lib/<arch>|lib*|share)/<name>*/(cmake|CMake)/         (U)
+  <prefix>/<name>*/(lib/<arch>|lib*|share)/cmake/<name>*/         (W/U)
+  <prefix>/<name>*/(lib/<arch>|lib*|share)/<name>*/               (W/U)
+  <prefix>/<name>*/(lib/<arch>|lib*|share)/<name>*/(cmake|CMake)/ (W/U)
+
+On systems supporting macOS :prop_tgt:`FRAMEWORK` and :prop_tgt:`BUNDLE`, the
+following directories are searched for Frameworks or Application Bundles
+containing a configuration file::
+
+  <prefix>/<name>.framework/Resources/                    (A)
+  <prefix>/<name>.framework/Resources/CMake/              (A)
+  <prefix>/<name>.framework/Versions/*/Resources/         (A)
+  <prefix>/<name>.framework/Versions/*/Resources/CMake/   (A)
+  <prefix>/<name>.app/Contents/Resources/                 (A)
+  <prefix>/<name>.app/Contents/Resources/CMake/           (A)
+
+In all cases the ``<name>`` is treated as case-insensitive and corresponds
+to any of the names specified (``<PackageName>`` or names given by ``NAMES``).
+
+Paths with ``lib/<arch>`` are enabled if the
+:variable:`CMAKE_LIBRARY_ARCHITECTURE` variable is set. ``lib*`` includes one
+or more of the values ``lib64``, ``lib32``, ``libx32`` or ``lib`` (searched in
+that order).
+
+* Paths with ``lib64`` are searched on 64 bit platforms if the
+  :prop_gbl:`FIND_LIBRARY_USE_LIB64_PATHS` property is set to ``TRUE``.
+* Paths with ``lib32`` are searched on 32 bit platforms if the
+  :prop_gbl:`FIND_LIBRARY_USE_LIB32_PATHS` property is set to ``TRUE``.
+* Paths with ``libx32`` are searched on platforms using the x32 ABI
+  if the :prop_gbl:`FIND_LIBRARY_USE_LIBX32_PATHS` property is set to ``TRUE``.
+* The ``lib`` path is always searched.
+
+If ``PATH_SUFFIXES`` is specified, the suffixes are appended to each
+(``W``) or (``U``) directory entry one-by-one.
+
+This set of directories is intended to work in cooperation with
+projects that provide configuration files in their installation trees.
+Directories above marked with (``W``) are intended for installations on
+Windows where the prefix may point at the top of an application's
+installation directory.  Those marked with (``U``) are intended for
+installations on UNIX platforms where the prefix is shared by multiple
+packages.  This is merely a convention, so all (``W``) and (``U``) directories
+are still searched on all platforms.  Directories marked with (``A``) are
+intended for installations on Apple platforms.  The
+:variable:`CMAKE_FIND_FRAMEWORK` and :variable:`CMAKE_FIND_APPBUNDLE`
+variables determine the order of preference.
+
+The set of installation prefixes is constructed using the following
+steps.  If ``NO_DEFAULT_PATH`` is specified all ``NO_*`` options are
+enabled.
+
+1. .. versionadded:: 3.12
+    Search paths specified in the :variable:`<PackageName>_ROOT` CMake
+    variable and the :envvar:`<PackageName>_ROOT` environment variable,
+    where ``<PackageName>`` is the package to be found.
+    The package root variables are maintained as a stack so if
+    called from within a find module, root paths from the parent's find
+    module will also be searched after paths for the current package.
+    This can be skipped if ``NO_PACKAGE_ROOT_PATH`` is passed or by setting
+    the :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` to ``FALSE``.
+    See policy :policy:`CMP0074`.
+
+2. Search paths specified in cmake-specific cache variables.  These
+   are intended to be used on the command line with a ``-DVAR=value``.
+   The values are interpreted as :ref:`semicolon-separated lists <CMake Language Lists>`.
+   This can be skipped if ``NO_CMAKE_PATH`` is passed or by setting the
+   :variable:`CMAKE_FIND_USE_CMAKE_PATH` to ``FALSE``:
+
+   * :variable:`CMAKE_PREFIX_PATH`
+   * :variable:`CMAKE_FRAMEWORK_PATH`
+   * :variable:`CMAKE_APPBUNDLE_PATH`
+
+3. Search paths specified in cmake-specific environment variables.
+   These are intended to be set in the user's shell configuration,
+   and therefore use the host's native path separator
+   (``;`` on Windows and ``:`` on UNIX).
+   This can be skipped if ``NO_CMAKE_ENVIRONMENT_PATH`` is passed or by setting
+   the :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH` to ``FALSE``:
+
+   * ``<PackageName>_DIR``
+   * :envvar:`CMAKE_PREFIX_PATH`
+   * ``CMAKE_FRAMEWORK_PATH``
+   * ``CMAKE_APPBUNDLE_PATH``
+
+4. Search paths specified by the ``HINTS`` option.  These should be paths
+   computed by system introspection, such as a hint provided by the
+   location of another item already found.  Hard-coded guesses should
+   be specified with the ``PATHS`` option.
+
+5. Search the standard system environment variables.  This can be
+   skipped if ``NO_SYSTEM_ENVIRONMENT_PATH`` is passed  or by setting the
+   :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH` to ``FALSE``. Path entries
+   ending in ``/bin`` or ``/sbin`` are automatically converted to their
+   parent directories:
+
+   * ``PATH``
+
+6. Search paths stored in the CMake :ref:`User Package Registry`.
+   This can be skipped if ``NO_CMAKE_PACKAGE_REGISTRY`` is passed or by
+   setting the variable :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`
+   to ``FALSE`` or the deprecated variable
+   :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` to ``TRUE``.
+
+   See the :manual:`cmake-packages(7)` manual for details on the user
+   package registry.
+
+7. Search cmake variables defined in the Platform files for the
+   current system.  This can be skipped if ``NO_CMAKE_SYSTEM_PATH`` is
+   passed or by setting the :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`
+   to ``FALSE``:
+
+   * :variable:`CMAKE_SYSTEM_PREFIX_PATH`
+   * :variable:`CMAKE_SYSTEM_FRAMEWORK_PATH`
+   * :variable:`CMAKE_SYSTEM_APPBUNDLE_PATH`
+
+   The platform paths that these variables contain are locations that
+   typically include installed software. An example being ``/usr/local`` for
+   UNIX based platforms.
+
+8. Search paths stored in the CMake :ref:`System Package Registry`.
+   This can be skipped if ``NO_CMAKE_SYSTEM_PACKAGE_REGISTRY`` is passed
+   or by setting the :variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`
+   variable to ``FALSE`` or the deprecated variable
+   :variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` to ``TRUE``.
+
+   See the :manual:`cmake-packages(7)` manual for details on the system
+   package registry.
+
+9. Search paths specified by the ``PATHS`` option.  These are typically
+   hard-coded guesses.
+
+.. versionadded:: 3.16
+   Added the ``CMAKE_FIND_USE_<CATEGORY>`` variables to globally disable
+   various search locations.
+
+.. |FIND_XXX| replace:: find_package
+.. |FIND_ARGS_XXX| replace:: <PackageName>
+.. |CMAKE_FIND_ROOT_PATH_MODE_XXX| replace::
+   :variable:`CMAKE_FIND_ROOT_PATH_MODE_PACKAGE`
+
+.. include:: FIND_XXX_ROOT.txt
+.. include:: FIND_XXX_ORDER.txt
+
+By default the value stored in the result variable will be the path at
+which the file is found.  The :variable:`CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS`
+variable may be set to ``TRUE`` before calling ``find_package`` in order
+to resolve symbolic links and store the real path to the file.
+
+Every non-REQUIRED ``find_package`` call can be disabled or made REQUIRED:
+
+* Setting the :variable:`CMAKE_DISABLE_FIND_PACKAGE_<PackageName>` variable
+  to ``TRUE`` disables the package.
+
+* Setting the :variable:`CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>` variable
+  to ``TRUE`` makes the package REQUIRED.
+
+Setting both variables to ``TRUE`` simultaneously is an error.
+
+.. _`version selection`:
+
+Config Mode Version Selection
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. note::
+  When Config mode is used, this version selection process is applied
+  regardless of whether the :ref:`full <full signature>` or
+  :ref:`basic <basic signature>` signature was given.
+
+When the ``[version]`` argument is given, Config mode will only find a
+version of the package that claims compatibility with the requested
+version (see :ref:`format specification <FIND_PACKAGE_VERSION_FORMAT>`). If the
+``EXACT`` option is given, only a version of the package claiming an exact match
+of the requested version may be found.  CMake does not establish any
+convention for the meaning of version numbers.  Package version
+numbers are checked by "version" files provided by the packages
+themselves.  For a candidate package configuration file
+``<config-file>.cmake`` the corresponding version file is located next
+to it and named either ``<config-file>-version.cmake`` or
+``<config-file>Version.cmake``.  If no such version file is available
+then the configuration file is assumed to not be compatible with any
+requested version.  A basic version file containing generic version
+matching code can be created using the
+:module:`CMakePackageConfigHelpers` module.  When a version file
+is found it is loaded to check the requested version number.  The
+version file is loaded in a nested scope in which the following
+variables have been defined:
+
+``PACKAGE_FIND_NAME``
+  The ``<PackageName>``
+``PACKAGE_FIND_VERSION``
+  Full requested version string
+``PACKAGE_FIND_VERSION_MAJOR``
+  Major version if requested, else 0
+``PACKAGE_FIND_VERSION_MINOR``
+  Minor version if requested, else 0
+``PACKAGE_FIND_VERSION_PATCH``
+  Patch version if requested, else 0
+``PACKAGE_FIND_VERSION_TWEAK``
+  Tweak version if requested, else 0
+``PACKAGE_FIND_VERSION_COUNT``
+  Number of version components, 0 to 4
+
+When a version range is specified, the above version variables will hold
+values based on the lower end of the version range.  This is to preserve
+compatibility with packages that have not been implemented to expect version
+ranges.  In addition, the version range will be described by the following
+variables:
+
+``PACKAGE_FIND_VERSION_RANGE``
+  Full requested version range string
+``PACKAGE_FIND_VERSION_RANGE_MIN``
+  This specifies whether the lower end point of the version range should be
+  included or excluded.  Currently, the only supported value for this variable
+  is ``INCLUDE``.
+``PACKAGE_FIND_VERSION_RANGE_MAX``
+  This specifies whether the upper end point of the version range should be
+  included or excluded.  The supported values for this variable are
+  ``INCLUDE`` and ``EXCLUDE``.
+
+``PACKAGE_FIND_VERSION_MIN``
+  Full requested version string of the lower end point of the range
+``PACKAGE_FIND_VERSION_MIN_MAJOR``
+  Major version of the lower end point if requested, else 0
+``PACKAGE_FIND_VERSION_MIN_MINOR``
+  Minor version of the lower end point if requested, else 0
+``PACKAGE_FIND_VERSION_MIN_PATCH``
+  Patch version of the lower end point if requested, else 0
+``PACKAGE_FIND_VERSION_MIN_TWEAK``
+  Tweak version of the lower end point if requested, else 0
+``PACKAGE_FIND_VERSION_MIN_COUNT``
+  Number of version components of the lower end point, 0 to 4
+
+``PACKAGE_FIND_VERSION_MAX``
+  Full requested version string of the upper end point of the range
+``PACKAGE_FIND_VERSION_MAX_MAJOR``
+  Major version of the upper end point if requested, else 0
+``PACKAGE_FIND_VERSION_MAX_MINOR``
+  Minor version of the upper end point if requested, else 0
+``PACKAGE_FIND_VERSION_MAX_PATCH``
+  Patch version of the upper end point if requested, else 0
+``PACKAGE_FIND_VERSION_MAX_TWEAK``
+  Tweak version of the upper end point if requested, else 0
+``PACKAGE_FIND_VERSION_MAX_COUNT``
+  Number of version components of the upper end point, 0 to 4
+
+Regardless of whether a single version or a version range is specified, the
+variable ``PACKAGE_FIND_VERSION_COMPLETE`` will be defined and will hold
+the full requested version string as specified.
+
+The version file checks whether it satisfies the requested version and
+sets these variables:
+
+``PACKAGE_VERSION``
+  Full provided version string
+``PACKAGE_VERSION_EXACT``
+  True if version is exact match
+``PACKAGE_VERSION_COMPATIBLE``
+  True if version is compatible
+``PACKAGE_VERSION_UNSUITABLE``
+  True if unsuitable as any version
+
+These variables are checked by the ``find_package`` command to determine
+whether the configuration file provides an acceptable version.  They
+are not available after the ``find_package`` call returns.  If the version
+is acceptable the following variables are set:
+
+``<PackageName>_VERSION``
+  Full provided version string
+``<PackageName>_VERSION_MAJOR``
+  Major version if provided, else 0
+``<PackageName>_VERSION_MINOR``
+  Minor version if provided, else 0
+``<PackageName>_VERSION_PATCH``
+  Patch version if provided, else 0
+``<PackageName>_VERSION_TWEAK``
+  Tweak version if provided, else 0
+``<PackageName>_VERSION_COUNT``
+  Number of version components, 0 to 4
+
+and the corresponding package configuration file is loaded.
+When multiple package configuration files are available whose version files
+claim compatibility with the version requested it is unspecified which
+one is chosen: unless the variable :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER`
+is set no attempt is made to choose a highest or closest version number.
+
+To control the order in which ``find_package`` checks for compatibility use
+the two variables :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER` and
+:variable:`CMAKE_FIND_PACKAGE_SORT_DIRECTION`.
+For instance in order to select the highest version one can set
+
+.. code-block:: cmake
+
+  SET(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL)
+  SET(CMAKE_FIND_PACKAGE_SORT_DIRECTION DEC)
+
+before calling ``find_package``.
+
+Package File Interface Variables
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+When loading a find module or package configuration file ``find_package``
+defines variables to provide information about the call arguments (and
+restores their original state before returning):
+
+``CMAKE_FIND_PACKAGE_NAME``
+  The ``<PackageName>`` which is searched for
+``<PackageName>_FIND_REQUIRED``
+  True if ``REQUIRED`` option was given
+``<PackageName>_FIND_QUIETLY``
+  True if ``QUIET`` option was given
+``<PackageName>_FIND_VERSION``
+  Full requested version string
+``<PackageName>_FIND_VERSION_MAJOR``
+  Major version if requested, else 0
+``<PackageName>_FIND_VERSION_MINOR``
+  Minor version if requested, else 0
+``<PackageName>_FIND_VERSION_PATCH``
+  Patch version if requested, else 0
+``<PackageName>_FIND_VERSION_TWEAK``
+  Tweak version if requested, else 0
+``<PackageName>_FIND_VERSION_COUNT``
+  Number of version components, 0 to 4
+``<PackageName>_FIND_VERSION_EXACT``
+  True if ``EXACT`` option was given
+``<PackageName>_FIND_COMPONENTS``
+  List of specified components (required and optional)
+``<PackageName>_FIND_REQUIRED_<c>``
+  True if component ``<c>`` is required,
+  false if component ``<c>`` is optional
+
+When a version range is specified, the above version variables will hold
+values based on the lower end of the version range.  This is to preserve
+compatibility with packages that have not been implemented to expect version
+ranges.  In addition, the version range will be described by the following
+variables:
+
+``<PackageName>_FIND_VERSION_RANGE``
+  Full requested version range string
+``<PackageName>_FIND_VERSION_RANGE_MIN``
+  This specifies whether the lower end point of the version range is
+  included or excluded.  Currently, ``INCLUDE`` is the only supported value.
+``<PackageName>_FIND_VERSION_RANGE_MAX``
+  This specifies whether the upper end point of the version range is
+  included or excluded.  The possible values for this variable are
+  ``INCLUDE`` or ``EXCLUDE``.
+
+``<PackageName>_FIND_VERSION_MIN``
+  Full requested version string of the lower end point of the range
+``<PackageName>_FIND_VERSION_MIN_MAJOR``
+  Major version of the lower end point if requested, else 0
+``<PackageName>_FIND_VERSION_MIN_MINOR``
+  Minor version of the lower end point if requested, else 0
+``<PackageName>_FIND_VERSION_MIN_PATCH``
+  Patch version of the lower end point if requested, else 0
+``<PackageName>_FIND_VERSION_MIN_TWEAK``
+  Tweak version of the lower end point if requested, else 0
+``<PackageName>_FIND_VERSION_MIN_COUNT``
+  Number of version components of the lower end point, 0 to 4
+
+``<PackageName>_FIND_VERSION_MAX``
+  Full requested version string of the upper end point of the range
+``<PackageName>_FIND_VERSION_MAX_MAJOR``
+  Major version of the upper end point if requested, else 0
+``<PackageName>_FIND_VERSION_MAX_MINOR``
+  Minor version of the upper end point if requested, else 0
+``<PackageName>_FIND_VERSION_MAX_PATCH``
+  Patch version of the upper end point if requested, else 0
+``<PackageName>_FIND_VERSION_MAX_TWEAK``
+  Tweak version of the upper end point if requested, else 0
+``<PackageName>_FIND_VERSION_MAX_COUNT``
+  Number of version components of the upper end point, 0 to 4
+
+Regardless of whether a single version or a version range is specified, the
+variable ``<PackageName>_FIND_VERSION_COMPLETE`` will be defined and will hold
+the full requested version string as specified.
+
+In Module mode the loaded find module is responsible to honor the
+request detailed by these variables; see the find module for details.
+In Config mode ``find_package`` handles ``REQUIRED``, ``QUIET``, and
+``[version]`` options automatically but leaves it to the package
+configuration file to handle components in a way that makes sense
+for the package.  The package configuration file may set
+``<PackageName>_FOUND`` to false to tell ``find_package`` that component
+requirements are not satisfied.
diff --git a/share/cmake-3.22/Help/command/find_path.rst b/share/cmake-3.22/Help/command/find_path.rst
new file mode 100644
index 0000000..ec66771
--- /dev/null
+++ b/share/cmake-3.22/Help/command/find_path.rst
@@ -0,0 +1,42 @@
+find_path
+---------
+
+.. |FIND_XXX| replace:: find_path
+.. |NAMES| replace:: NAMES name1 [name2 ...]
+.. |SEARCH_XXX| replace:: file in a directory
+.. |SEARCH_XXX_DESC| replace:: directory containing the named file
+.. |prefix_XXX_SUBDIR| replace:: ``<prefix>/include``
+.. |entry_XXX_SUBDIR| replace:: ``<entry>/include``
+
+.. |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX| replace::
+   ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
+   is set, and |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX_SUBDIR|
+.. |CMAKE_PREFIX_PATH_XXX| replace::
+   ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
+   is set, and |CMAKE_PREFIX_PATH_XXX_SUBDIR|
+.. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_INCLUDE_PATH`
+.. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_FRAMEWORK_PATH`
+
+.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: The directories in ``INCLUDE``
+   and ``PATH``.
+.. |SYSTEM_ENVIRONMENT_PATH_WINDOWS_XXX| replace:: On Windows hosts:
+      ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
+      is set, and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|.
+
+.. |CMAKE_SYSTEM_PREFIX_PATH_XXX| replace::
+   ``<prefix>/include/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE`
+   is set, and |CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR|
+.. |CMAKE_SYSTEM_XXX_PATH| replace::
+   :variable:`CMAKE_SYSTEM_INCLUDE_PATH`
+.. |CMAKE_SYSTEM_XXX_MAC_PATH| replace::
+   :variable:`CMAKE_SYSTEM_FRAMEWORK_PATH`
+
+.. |CMAKE_FIND_ROOT_PATH_MODE_XXX| replace::
+   :variable:`CMAKE_FIND_ROOT_PATH_MODE_INCLUDE`
+
+.. include:: FIND_XXX.txt
+
+When searching for frameworks, if the file is specified as ``A/b.h``, then
+the framework search will look for ``A.framework/Headers/b.h``.  If that
+is found the path will be set to the path to the framework.  CMake
+will convert this to the correct ``-F`` option to include the file.
diff --git a/share/cmake-3.18/Help/command/find_program.rst b/share/cmake-3.22/Help/command/find_program.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/find_program.rst
rename to share/cmake-3.22/Help/command/find_program.rst
diff --git a/share/cmake-3.18/Help/command/fltk_wrap_ui.rst b/share/cmake-3.22/Help/command/fltk_wrap_ui.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/fltk_wrap_ui.rst
rename to share/cmake-3.22/Help/command/fltk_wrap_ui.rst
diff --git a/share/cmake-3.22/Help/command/foreach.rst b/share/cmake-3.22/Help/command/foreach.rst
new file mode 100644
index 0000000..d9f54ca
--- /dev/null
+++ b/share/cmake-3.22/Help/command/foreach.rst
@@ -0,0 +1,132 @@
+foreach
+-------
+
+Evaluate a group of commands for each value in a list.
+
+.. code-block:: cmake
+
+  foreach(<loop_var> <items>)
+    <commands>
+  endforeach()
+
+where ``<items>`` is a list of items that are separated by
+semicolon or whitespace.
+All commands between ``foreach`` and the matching ``endforeach`` are recorded
+without being invoked.  Once the ``endforeach`` is evaluated, the recorded
+list of commands is invoked once for each item in ``<items>``.
+At the beginning of each iteration the variable ``<loop_var>`` will be set
+to the value of the current item.
+
+The scope of ``<loop_var>`` is restricted to the loop scope. See policy
+:policy:`CMP0124` for details.
+
+The commands :command:`break` and :command:`continue` provide means to
+escape from the normal control flow.
+
+Per legacy, the :command:`endforeach` command admits
+an optional ``<loop_var>`` argument.
+If used, it must be a verbatim
+repeat of the argument of the opening
+``foreach`` command.
+
+.. code-block:: cmake
+
+  foreach(<loop_var> RANGE <stop>)
+
+In this variant, ``foreach`` iterates over the numbers
+0, 1, ... up to (and including) the nonnegative integer ``<stop>``.
+
+.. code-block:: cmake
+
+  foreach(<loop_var> RANGE <start> <stop> [<step>])
+
+In this variant, ``foreach`` iterates over the numbers from
+``<start>`` up to at most ``<stop>`` in steps of ``<step>``.
+If ``<step>`` is not specified, then the step size is 1.
+The three arguments ``<start>`` ``<stop>`` ``<step>`` must
+all be nonnegative integers, and ``<stop>`` must not be
+smaller than ``<start>``; otherwise you enter the danger zone
+of undocumented behavior that may change in future releases.
+
+.. code-block:: cmake
+
+  foreach(<loop_var> IN [LISTS [<lists>]] [ITEMS [<items>]])
+
+In this variant, ``<lists>`` is a whitespace or semicolon
+separated list of list-valued variables. The ``foreach``
+command iterates over each item in each given list.
+The ``<items>`` following the ``ITEMS`` keyword are processed
+as in the first variant of the ``foreach`` command.
+The forms ``LISTS A`` and ``ITEMS ${A}`` are
+equivalent.
+
+The following example shows how the ``LISTS`` option is
+processed:
+
+.. code-block:: cmake
+
+  set(A 0;1)
+  set(B 2 3)
+  set(C "4 5")
+  set(D 6;7 8)
+  set(E "")
+  foreach(X IN LISTS A B C D E)
+      message(STATUS "X=${X}")
+  endforeach()
+
+yields
+::
+
+  -- X=0
+  -- X=1
+  -- X=2
+  -- X=3
+  -- X=4 5
+  -- X=6
+  -- X=7
+  -- X=8
+
+
+.. code-block:: cmake
+
+  foreach(<loop_var>... IN ZIP_LISTS <lists>)
+
+.. versionadded:: 3.17
+
+In this variant, ``<lists>`` is a whitespace or semicolon
+separated list of list-valued variables. The ``foreach``
+command iterates over each list simultaneously setting the
+iteration variables as follows:
+
+- if the only ``loop_var`` given, then it sets a series of
+  ``loop_var_N`` variables to the current item from the
+  corresponding list;
+- if multiple variable names passed, their count should match
+  the lists variables count;
+- if any of the lists are shorter, the corresponding iteration
+  variable is not defined for the current iteration.
+
+.. code-block:: cmake
+
+  list(APPEND English one two three four)
+  list(APPEND Bahasa satu dua tiga)
+
+  foreach(num IN ZIP_LISTS English Bahasa)
+      message(STATUS "num_0=${num_0}, num_1=${num_1}")
+  endforeach()
+
+  foreach(en ba IN ZIP_LISTS English Bahasa)
+      message(STATUS "en=${en}, ba=${ba}")
+  endforeach()
+
+yields
+::
+
+  -- num_0=one, num_1=satu
+  -- num_0=two, num_1=dua
+  -- num_0=three, num_1=tiga
+  -- num_0=four, num_1=
+  -- en=one, ba=satu
+  -- en=two, ba=dua
+  -- en=three, ba=tiga
+  -- en=four, ba=
diff --git a/share/cmake-3.22/Help/command/function.rst b/share/cmake-3.22/Help/command/function.rst
new file mode 100644
index 0000000..3d25aa4
--- /dev/null
+++ b/share/cmake-3.22/Help/command/function.rst
@@ -0,0 +1,75 @@
+function
+--------
+
+Start recording a function for later invocation as a command.
+
+.. code-block:: cmake
+
+  function(<name> [<arg1> ...])
+    <commands>
+  endfunction()
+
+Defines a function named ``<name>`` that takes arguments named
+``<arg1>``, ...  The ``<commands>`` in the function definition
+are recorded; they are not executed until the function is invoked.
+
+Per legacy, the :command:`endfunction` command admits an optional
+``<name>`` argument. If used, it must be a verbatim repeat of the
+argument of the opening ``function`` command.
+
+A function opens a new scope: see :command:`set(var PARENT_SCOPE)` for
+details.
+
+See the :command:`cmake_policy()` command documentation for the behavior
+of policies inside functions.
+
+See the :command:`macro()` command documentation for differences
+between CMake functions and macros.
+
+Invocation
+^^^^^^^^^^
+
+The function invocation is case-insensitive. A function defined as
+
+.. code-block:: cmake
+
+  function(foo)
+    <commands>
+  endfunction()
+
+can be invoked through any of
+
+.. code-block:: cmake
+
+  foo()
+  Foo()
+  FOO()
+  cmake_language(CALL foo)
+
+and so on. However, it is strongly recommended to stay with the
+case chosen in the function definition. Typically functions use
+all-lowercase names.
+
+.. versionadded:: 3.18
+  The :command:`cmake_language(CALL ...)` command can also be used to
+  invoke the function.
+
+Arguments
+^^^^^^^^^
+
+When the function is invoked, the recorded ``<commands>`` are first
+modified by replacing formal parameters (``${arg1}``, ...) with the
+arguments passed, and then invoked as normal commands.
+
+In addition to referencing the formal parameters you can reference the
+``ARGC`` variable which will be set to the number of arguments passed
+into the function as well as ``ARGV0``, ``ARGV1``, ``ARGV2``, ...  which
+will have the actual values of the arguments passed in.  This facilitates
+creating functions with optional arguments.
+
+Furthermore, ``ARGV`` holds the list of all arguments given to the
+function and ``ARGN`` holds the list of arguments past the last expected
+argument.  Referencing to ``ARGV#`` arguments beyond ``ARGC`` have
+undefined behavior.  Checking that ``ARGC`` is greater than ``#`` is
+the only way to ensure that ``ARGV#`` was passed to the function as an
+extra argument.
diff --git a/share/cmake-3.18/Help/command/get_cmake_property.rst b/share/cmake-3.22/Help/command/get_cmake_property.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/get_cmake_property.rst
rename to share/cmake-3.22/Help/command/get_cmake_property.rst
diff --git a/share/cmake-3.22/Help/command/get_directory_property.rst b/share/cmake-3.22/Help/command/get_directory_property.rst
new file mode 100644
index 0000000..0ccbfb0
--- /dev/null
+++ b/share/cmake-3.22/Help/command/get_directory_property.rst
@@ -0,0 +1,36 @@
+get_directory_property
+----------------------
+
+Get a property of ``DIRECTORY`` scope.
+
+.. code-block:: cmake
+
+  get_directory_property(<variable> [DIRECTORY <dir>] <prop-name>)
+
+Stores a property of directory scope in the named ``<variable>``.
+
+The ``DIRECTORY`` argument specifies another directory from which
+to retrieve the property value instead of the current directory.
+Relative paths are treated as relative to the
+current source directory.  CMake must already know about the directory,
+either by having added it through a call to :command:`add_subdirectory`
+or being the top level directory.
+
+.. versionadded:: 3.19
+  ``<dir>`` may reference a binary directory.
+
+If the property is not defined for the nominated directory scope,
+an empty string is returned.  In the case of ``INHERITED`` properties,
+if the property is not found for the nominated directory scope,
+the search will chain to a parent scope as described for the
+:command:`define_property` command.
+
+.. code-block:: cmake
+
+  get_directory_property(<variable> [DIRECTORY <dir>]
+                         DEFINITION <var-name>)
+
+Get a variable definition from a directory.  This form is useful to
+get a variable definition from another directory.
+
+See also the more general :command:`get_property` command.
diff --git a/share/cmake-3.22/Help/command/get_filename_component.rst b/share/cmake-3.22/Help/command/get_filename_component.rst
new file mode 100644
index 0000000..4bdd388
--- /dev/null
+++ b/share/cmake-3.22/Help/command/get_filename_component.rst
@@ -0,0 +1,65 @@
+get_filename_component
+----------------------
+
+Get a specific component of a full filename.
+
+.. versionchanged:: 3.20
+  This command been superseded by :command:`cmake_path` command, except
+  ``REALPATH`` now offered by :ref:`file(REAL_PATH) <REAL_PATH>` command and
+  ``PROGRAM`` now available in :command:`separate_arguments(PROGRAM)` command.
+
+.. code-block:: cmake
+
+  get_filename_component(<var> <FileName> <mode> [CACHE])
+
+Sets ``<var>`` to a component of ``<FileName>``, where ``<mode>`` is one of:
+
+::
+
+ DIRECTORY = Directory without file name
+ NAME      = File name without directory
+ EXT       = File name longest extension (.b.c from d/a.b.c)
+ NAME_WE   = File name with neither the directory nor the longest extension
+ LAST_EXT  = File name last extension (.c from d/a.b.c)
+ NAME_WLE  = File name with neither the directory nor the last extension
+ PATH      = Legacy alias for DIRECTORY (use for CMake <= 2.8.11)
+
+.. versionadded:: 3.14
+  Added the ``LAST_EXT`` and ``NAME_WLE`` modes.
+
+Paths are returned with forward slashes and have no trailing slashes.
+If the optional ``CACHE`` argument is specified, the result variable is
+added to the cache.
+
+.. code-block:: cmake
+
+  get_filename_component(<var> <FileName> <mode> [BASE_DIR <dir>] [CACHE])
+
+.. versionadded:: 3.4
+
+Sets ``<var>`` to the absolute path of ``<FileName>``, where ``<mode>`` is one
+of:
+
+::
+
+ ABSOLUTE  = Full path to file
+ REALPATH  = Full path to existing file with symlinks resolved
+
+If the provided ``<FileName>`` is a relative path, it is evaluated relative
+to the given base directory ``<dir>``.  If no base directory is
+provided, the default base directory will be
+:variable:`CMAKE_CURRENT_SOURCE_DIR`.
+
+Paths are returned with forward slashes and have no trailing slashes.  If the
+optional ``CACHE`` argument is specified, the result variable is added to the
+cache.
+
+.. code-block:: cmake
+
+  get_filename_component(<var> <FileName> PROGRAM [PROGRAM_ARGS <arg_var>] [CACHE])
+
+The program in ``<FileName>`` will be found in the system search path or
+left as a full path.  If ``PROGRAM_ARGS`` is present with ``PROGRAM``, then
+any command-line arguments present in the ``<FileName>`` string are split
+from the program name and stored in ``<arg_var>``.  This is used to
+separate a program name from its arguments in a command line string.
diff --git a/share/cmake-3.22/Help/command/get_property.rst b/share/cmake-3.22/Help/command/get_property.rst
new file mode 100644
index 0000000..46da285
--- /dev/null
+++ b/share/cmake-3.22/Help/command/get_property.rst
@@ -0,0 +1,101 @@
+get_property
+------------
+
+Get a property.
+
+.. code-block:: cmake
+
+  get_property(<variable>
+               <GLOBAL             |
+                DIRECTORY [<dir>]  |
+                TARGET    <target> |
+                SOURCE    <source>
+                          [DIRECTORY <dir> | TARGET_DIRECTORY <target>] |
+                INSTALL   <file>   |
+                TEST      <test>   |
+                CACHE     <entry>  |
+                VARIABLE           >
+               PROPERTY <name>
+               [SET | DEFINED | BRIEF_DOCS | FULL_DOCS])
+
+Gets one property from one object in a scope.
+
+The first argument specifies the variable in which to store the result.
+The second argument determines the scope from which to get the property.
+It must be one of the following:
+
+``GLOBAL``
+  Scope is unique and does not accept a name.
+
+``DIRECTORY``
+  Scope defaults to the current directory but another
+  directory (already processed by CMake) may be named by the
+  full or relative path ``<dir>``.
+  Relative paths are treated as relative to the current source directory.
+  See also the :command:`get_directory_property` command.
+
+  .. versionadded:: 3.19
+    ``<dir>`` may reference a binary directory.
+
+``TARGET``
+  Scope must name one existing target.
+  See also the :command:`get_target_property` command.
+
+``SOURCE``
+  Scope must name one source file.  By default, the source file's property
+  will be read from the current source directory's scope.
+
+  .. versionadded:: 3.18
+    Directory scope can be overridden with one of the following sub-options:
+
+    ``DIRECTORY <dir>``
+      The source file property will be read from the ``<dir>`` directory's
+      scope.  CMake must already know about
+      the directory, either by having added it through a call
+      to :command:`add_subdirectory` or ``<dir>`` being the top level directory.
+      Relative paths are treated as relative to the current source directory.
+
+      .. versionadded:: 3.19
+        ``<dir>`` may reference a binary directory.
+
+    ``TARGET_DIRECTORY <target>``
+      The source file property will be read from the directory scope in which
+      ``<target>`` was created (``<target>`` must therefore already exist).
+
+  See also the :command:`get_source_file_property` command.
+
+``INSTALL``
+  .. versionadded:: 3.1
+
+  Scope must name one installed file path.
+
+``TEST``
+  Scope must name one existing test.
+  See also the :command:`get_test_property` command.
+
+``CACHE``
+  Scope must name one cache entry.
+
+``VARIABLE``
+  Scope is unique and does not accept a name.
+
+The required ``PROPERTY`` option is immediately followed by the name of
+the property to get.  If the property is not set an empty value is
+returned, although some properties support inheriting from a parent scope
+if defined to behave that way (see :command:`define_property`).
+
+If the ``SET`` option is given the variable is set to a boolean
+value indicating whether the property has been set.  If the ``DEFINED``
+option is given the variable is set to a boolean value indicating
+whether the property has been defined such as with the
+:command:`define_property` command.
+
+If ``BRIEF_DOCS`` or ``FULL_DOCS`` is given then the variable is set to a
+string containing documentation for the requested property.  If
+documentation is requested for a property that has not been defined
+``NOTFOUND`` is returned.
+
+.. note::
+
+  The :prop_sf:`GENERATED` source file property may be globally visible.
+  See its documentation for details.
diff --git a/share/cmake-3.22/Help/command/get_source_file_property.rst b/share/cmake-3.22/Help/command/get_source_file_property.rst
new file mode 100644
index 0000000..ae41565
--- /dev/null
+++ b/share/cmake-3.22/Help/command/get_source_file_property.rst
@@ -0,0 +1,47 @@
+get_source_file_property
+------------------------
+
+Get a property for a source file.
+
+.. code-block:: cmake
+
+  get_source_file_property(<variable> <file>
+                           [DIRECTORY <dir> | TARGET_DIRECTORY <target>]
+                           <property>)
+
+Gets a property from a source file.  The value of the property is
+stored in the specified ``<variable>``.  If the source property is not found,
+the behavior depends on whether it has been defined to be an ``INHERITED``
+property or not (see :command:`define_property`).  Non-inherited properties
+will set ``variable`` to ``NOTFOUND``, whereas inherited properties will search
+the relevant parent scope as described for the :command:`define_property`
+command and if still unable to find the property, ``variable`` will be set to
+an empty string.
+
+By default, the source file's property will be read from the current source
+directory's scope.
+
+.. versionadded:: 3.18
+  Directory scope can be overridden with one of the following sub-options:
+
+  ``DIRECTORY <dir>``
+    The source file property will be read from the ``<dir>`` directory's
+    scope.  CMake must already know about that source directory, either by
+    having added it through a call to :command:`add_subdirectory` or ``<dir>``
+    being the top level source directory.  Relative paths are treated as
+    relative to the current source directory.
+
+  ``TARGET_DIRECTORY <target>``
+    The source file property will be read from the directory scope in which
+    ``<target>`` was created (``<target>`` must therefore already exist).
+
+Use :command:`set_source_files_properties` to set property values.  Source
+file properties usually control how the file is built. One property that is
+always there is :prop_sf:`LOCATION`.
+
+See also the more general :command:`get_property` command.
+
+.. note::
+
+  The :prop_sf:`GENERATED` source file property may be globally visible.
+  See its documentation for details.
diff --git a/share/cmake-3.18/Help/command/get_target_property.rst b/share/cmake-3.22/Help/command/get_target_property.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/get_target_property.rst
rename to share/cmake-3.22/Help/command/get_target_property.rst
diff --git a/share/cmake-3.18/Help/command/get_test_property.rst b/share/cmake-3.22/Help/command/get_test_property.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/get_test_property.rst
rename to share/cmake-3.22/Help/command/get_test_property.rst
diff --git a/share/cmake-3.22/Help/command/if.rst b/share/cmake-3.22/Help/command/if.rst
new file mode 100644
index 0000000..5dba13e
--- /dev/null
+++ b/share/cmake-3.22/Help/command/if.rst
@@ -0,0 +1,375 @@
+if
+--
+
+Conditionally execute a group of commands.
+
+Synopsis
+^^^^^^^^
+
+.. code-block:: cmake
+
+  if(<condition>)
+    <commands>
+  elseif(<condition>) # optional block, can be repeated
+    <commands>
+  else()              # optional block
+    <commands>
+  endif()
+
+Evaluates the ``condition`` argument of the ``if`` clause according to the
+`Condition syntax`_ described below. If the result is true, then the
+``commands`` in the ``if`` block are executed.
+Otherwise, optional ``elseif`` blocks are processed in the same way.
+Finally, if no ``condition`` is true, ``commands`` in the optional ``else``
+block are executed.
+
+Per legacy, the :command:`else` and :command:`endif` commands admit
+an optional ``<condition>`` argument.
+If used, it must be a verbatim
+repeat of the argument of the opening
+``if`` command.
+
+.. _`Condition Syntax`:
+
+Condition Syntax
+^^^^^^^^^^^^^^^^
+
+The following syntax applies to the ``condition`` argument of
+the ``if``, ``elseif`` and :command:`while` clauses.
+
+Compound conditions are evaluated in the following order of precedence:
+Innermost parentheses are evaluated first. Next come unary tests such
+as `EXISTS`_, `COMMAND`_, and `DEFINED`_.  Then binary tests such as
+`EQUAL`_, `LESS`_, `LESS_EQUAL`_, `GREATER`_, `GREATER_EQUAL`_,
+`STREQUAL`_, `STRLESS`_, `STRLESS_EQUAL`_, `STRGREATER`_,
+`STRGREATER_EQUAL`_, `VERSION_EQUAL`_, `VERSION_LESS`_,
+`VERSION_LESS_EQUAL`_, `VERSION_GREATER`_, `VERSION_GREATER_EQUAL`_,
+and `MATCHES`_.  Then the boolean operators in the order `NOT`_,  `AND`_,
+and finally `OR`_.
+
+Basic Expressions
+"""""""""""""""""
+
+``if(<constant>)``
+ True if the constant is ``1``, ``ON``, ``YES``, ``TRUE``, ``Y``,
+ or a non-zero number.  False if the constant is ``0``, ``OFF``,
+ ``NO``, ``FALSE``, ``N``, ``IGNORE``, ``NOTFOUND``, the empty string,
+ or ends in the suffix ``-NOTFOUND``.  Named boolean constants are
+ case-insensitive.  If the argument is not one of these specific
+ constants, it is treated as a variable or string (see `Variable Expansion`_
+ further below) and one of the following two forms applies.
+
+``if(<variable>)``
+ True if given a variable that is defined to a value that is not a false
+ constant.  False otherwise, including if the variable is undefined.
+ Note that macro arguments are not variables.
+ Environment variables also cannot be tested this way, e.g.
+ ``if(ENV{some_var})`` will always evaluate to false.
+
+``if(<string>)``
+ A quoted string always evaluates to false unless:
+
+ * The string's value is one of the true constants, or
+ * Policy :policy:`CMP0054` is not set to ``NEW`` and the string's value
+   happens to be a variable name that is affected by :policy:`CMP0054`'s
+   behavior.
+
+Logic Operators
+"""""""""""""""
+
+.. _NOT:
+
+``if(NOT <condition>)``
+ True if the condition is not true.
+
+.. _AND:
+
+``if(<cond1> AND <cond2>)``
+ True if both conditions would be considered true individually.
+
+.. _OR:
+
+``if(<cond1> OR <cond2>)``
+ True if either condition would be considered true individually.
+
+``if((condition) AND (condition OR (condition)))``
+ The conditions inside the parenthesis are evaluated first and then
+ the remaining condition is evaluated as in the other examples.
+ Where there are nested parenthesis the innermost are evaluated as part
+ of evaluating the condition that contains them.
+
+Existence Checks
+""""""""""""""""
+
+.. _COMMAND:
+
+``if(COMMAND command-name)``
+ True if the given name is a command, macro or function that can be
+ invoked.
+
+``if(POLICY policy-id)``
+ True if the given name is an existing policy (of the form ``CMP<NNNN>``).
+
+``if(TARGET target-name)``
+ True if the given name is an existing logical target name created
+ by a call to the :command:`add_executable`, :command:`add_library`,
+ or :command:`add_custom_target` command that has already been invoked
+ (in any directory).
+
+``if(TEST test-name)``
+ .. versionadded:: 3.3
+  True if the given name is an existing test name created by the
+  :command:`add_test` command.
+
+.. _DEFINED:
+
+``if(DEFINED <name>|CACHE{<name>}|ENV{<name>})``
+ True if a variable, cache variable or environment variable
+ with given ``<name>`` is defined. The value of the variable
+ does not matter. Note that macro arguments are not variables.
+
+ .. versionadded:: 3.14
+  Added support for ``CACHE{<name>}`` variables.
+
+``if(<variable|string> IN_LIST <variable>)``
+ .. versionadded:: 3.3
+  True if the given element is contained in the named list variable.
+
+File Operations
+"""""""""""""""
+
+.. _EXISTS:
+
+``if(EXISTS path-to-file-or-directory)``
+ True if the named file or directory exists.  Behavior is well-defined
+ only for explicit full paths (a leading ``~/`` is not expanded as
+ a home directory and is considered a relative path).
+ Resolves symbolic links, i.e. if the named file or directory is a
+ symbolic link, returns true if the target of the symbolic link exists.
+
+``if(file1 IS_NEWER_THAN file2)``
+ True if ``file1`` is newer than ``file2`` or if one of the two files doesn't
+ exist.  Behavior is well-defined only for full paths.  If the file
+ time stamps are exactly the same, an ``IS_NEWER_THAN`` comparison returns
+ true, so that any dependent build operations will occur in the event
+ of a tie.  This includes the case of passing the same file name for
+ both file1 and file2.
+
+``if(IS_DIRECTORY path-to-directory)``
+ True if the given name is a directory.  Behavior is well-defined only
+ for full paths.
+
+``if(IS_SYMLINK file-name)``
+ True if the given name is a symbolic link.  Behavior is well-defined
+ only for full paths.
+
+``if(IS_ABSOLUTE path)``
+ True if the given path is an absolute path.  Note the following special
+ cases:
+
+ * An empty ``path`` evaluates to false.
+ * On Windows hosts, any ``path`` that begins with a drive letter and colon
+   (e.g. ``C:``), a forward slash or a backslash will evaluate to true.
+   This means a path like ``C:no\base\dir`` will evaluate to true, even
+   though the non-drive part of the path is relative.
+ * On non-Windows hosts, any ``path`` that begins with a tilde (``~``)
+   evaluates to true.
+
+Comparisons
+"""""""""""
+
+.. _MATCHES:
+
+``if(<variable|string> MATCHES regex)``
+ True if the given string or variable's value matches the given regular
+ expression.  See :ref:`Regex Specification` for regex format.
+
+ .. versionadded:: 3.9
+  ``()`` groups are captured in :variable:`CMAKE_MATCH_<n>` variables.
+
+.. _LESS:
+
+``if(<variable|string> LESS <variable|string>)``
+ True if the given string or variable's value is a valid number and less
+ than that on the right.
+
+.. _GREATER:
+
+``if(<variable|string> GREATER <variable|string>)``
+ True if the given string or variable's value is a valid number and greater
+ than that on the right.
+
+.. _EQUAL:
+
+``if(<variable|string> EQUAL <variable|string>)``
+ True if the given string or variable's value is a valid number and equal
+ to that on the right.
+
+.. _LESS_EQUAL:
+
+``if(<variable|string> LESS_EQUAL <variable|string>)``
+ .. versionadded:: 3.7
+  True if the given string or variable's value is a valid number and less
+  than or equal to that on the right.
+
+.. _GREATER_EQUAL:
+
+``if(<variable|string> GREATER_EQUAL <variable|string>)``
+ .. versionadded:: 3.7
+  True if the given string or variable's value is a valid number and greater
+  than or equal to that on the right.
+
+.. _STRLESS:
+
+``if(<variable|string> STRLESS <variable|string>)``
+ True if the given string or variable's value is lexicographically less
+ than the string or variable on the right.
+
+.. _STRGREATER:
+
+``if(<variable|string> STRGREATER <variable|string>)``
+ True if the given string or variable's value is lexicographically greater
+ than the string or variable on the right.
+
+.. _STREQUAL:
+
+``if(<variable|string> STREQUAL <variable|string>)``
+ True if the given string or variable's value is lexicographically equal
+ to the string or variable on the right.
+
+.. _STRLESS_EQUAL:
+
+``if(<variable|string> STRLESS_EQUAL <variable|string>)``
+ .. versionadded:: 3.7
+  True if the given string or variable's value is lexicographically less
+  than or equal to the string or variable on the right.
+
+.. _STRGREATER_EQUAL:
+
+``if(<variable|string> STRGREATER_EQUAL <variable|string>)``
+ .. versionadded:: 3.7
+  True if the given string or variable's value is lexicographically greater
+  than or equal to the string or variable on the right.
+
+Version Comparisons
+"""""""""""""""""""
+
+.. _VERSION_LESS:
+
+``if(<variable|string> VERSION_LESS <variable|string>)``
+ Component-wise integer version number comparison (version format is
+ ``major[.minor[.patch[.tweak]]]``, omitted components are treated as zero).
+ Any non-integer version component or non-integer trailing part of a version
+ component effectively truncates the string at that point.
+
+.. _VERSION_GREATER:
+
+``if(<variable|string> VERSION_GREATER <variable|string>)``
+ Component-wise integer version number comparison (version format is
+ ``major[.minor[.patch[.tweak]]]``, omitted components are treated as zero).
+ Any non-integer version component or non-integer trailing part of a version
+ component effectively truncates the string at that point.
+
+.. _VERSION_EQUAL:
+
+``if(<variable|string> VERSION_EQUAL <variable|string>)``
+ Component-wise integer version number comparison (version format is
+ ``major[.minor[.patch[.tweak]]]``, omitted components are treated as zero).
+ Any non-integer version component or non-integer trailing part of a version
+ component effectively truncates the string at that point.
+
+.. _VERSION_LESS_EQUAL:
+
+``if(<variable|string> VERSION_LESS_EQUAL <variable|string>)``
+ .. versionadded:: 3.7
+  Component-wise integer version number comparison (version format is
+  ``major[.minor[.patch[.tweak]]]``, omitted components are treated as zero).
+  Any non-integer version component or non-integer trailing part of a version
+  component effectively truncates the string at that point.
+
+.. _VERSION_GREATER_EQUAL:
+
+``if(<variable|string> VERSION_GREATER_EQUAL <variable|string>)``
+ .. versionadded:: 3.7
+  Component-wise integer version number comparison (version format is
+  ``major[.minor[.patch[.tweak]]]``, omitted components are treated as zero).
+  Any non-integer version component or non-integer trailing part of a version
+  component effectively truncates the string at that point.
+
+Variable Expansion
+^^^^^^^^^^^^^^^^^^
+
+The if command was written very early in CMake's history, predating
+the ``${}`` variable evaluation syntax, and for convenience evaluates
+variables named by its arguments as shown in the above signatures.
+Note that normal variable evaluation with ``${}`` applies before the if
+command even receives the arguments.  Therefore code like
+
+.. code-block:: cmake
+
+ set(var1 OFF)
+ set(var2 "var1")
+ if(${var2})
+
+appears to the if command as
+
+.. code-block:: cmake
+
+  if(var1)
+
+and is evaluated according to the ``if(<variable>)`` case documented
+above.  The result is ``OFF`` which is false.  However, if we remove the
+``${}`` from the example then the command sees
+
+.. code-block:: cmake
+
+  if(var2)
+
+which is true because ``var2`` is defined to ``var1`` which is not a false
+constant.
+
+Automatic evaluation applies in the other cases whenever the
+above-documented condition syntax accepts ``<variable|string>``:
+
+* The left hand argument to ``MATCHES`` is first checked to see if it is
+  a defined variable, if so the variable's value is used, otherwise the
+  original value is used.
+
+* If the left hand argument to ``MATCHES`` is missing it returns false
+  without error
+
+* Both left and right hand arguments to ``LESS``, ``GREATER``, ``EQUAL``,
+  ``LESS_EQUAL``, and ``GREATER_EQUAL``, are independently tested to see if
+  they are defined variables, if so their defined values are used otherwise
+  the original value is used.
+
+* Both left and right hand arguments to ``STRLESS``, ``STRGREATER``,
+  ``STREQUAL``, ``STRLESS_EQUAL``, and ``STRGREATER_EQUAL`` are independently
+  tested to see if they are defined variables, if so their defined values are
+  used otherwise the original value is used.
+
+* Both left and right hand arguments to ``VERSION_LESS``,
+  ``VERSION_GREATER``, ``VERSION_EQUAL``, ``VERSION_LESS_EQUAL``, and
+  ``VERSION_GREATER_EQUAL`` are independently tested to see if they are defined
+  variables, if so their defined values are used otherwise the original value
+  is used.
+
+* The right hand argument to ``NOT`` is tested to see if it is a boolean
+  constant, if so the value is used, otherwise it is assumed to be a
+  variable and it is dereferenced.
+
+* The left and right hand arguments to ``AND`` and ``OR`` are independently
+  tested to see if they are boolean constants, if so they are used as
+  such, otherwise they are assumed to be variables and are dereferenced.
+
+.. versionchanged:: 3.1
+  To prevent ambiguity, potential variable or keyword names can be
+  specified in a :ref:`Quoted Argument` or a :ref:`Bracket Argument`.
+  A quoted or bracketed variable or keyword will be interpreted as a
+  string and not dereferenced or interpreted.
+  See policy :policy:`CMP0054`.
+
+There is no automatic evaluation for environment or cache
+:ref:`Variable References`.  Their values must be referenced as
+``$ENV{<name>}`` or ``$CACHE{<name>}`` wherever the above-documented
+condition syntax accepts ``<variable|string>``.
diff --git a/share/cmake-3.18/Help/command/include.rst b/share/cmake-3.22/Help/command/include.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/include.rst
rename to share/cmake-3.22/Help/command/include.rst
diff --git a/share/cmake-3.18/Help/command/include_directories.rst b/share/cmake-3.22/Help/command/include_directories.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/include_directories.rst
rename to share/cmake-3.22/Help/command/include_directories.rst
diff --git a/share/cmake-3.22/Help/command/include_external_msproject.rst b/share/cmake-3.22/Help/command/include_external_msproject.rst
new file mode 100644
index 0000000..4354654
--- /dev/null
+++ b/share/cmake-3.22/Help/command/include_external_msproject.rst
@@ -0,0 +1,27 @@
+include_external_msproject
+--------------------------
+
+Include an external Microsoft project file in a workspace.
+
+.. code-block:: cmake
+
+  include_external_msproject(projectname location
+                             [TYPE projectTypeGUID]
+                             [GUID projectGUID]
+                             [PLATFORM platformName]
+                             dep1 dep2 ...)
+
+Includes an external Microsoft project in the generated workspace
+file.  Currently does nothing on UNIX.  This will create a target
+named ``[projectname]``.  This can be used in the :command:`add_dependencies`
+command to make things depend on the external project.
+
+``TYPE``, ``GUID`` and ``PLATFORM`` are optional parameters that allow one to
+specify the type of project, id (``GUID``) of the project and the name of
+the target platform.  This is useful for projects requiring values
+other than the default (e.g.  WIX projects).
+
+.. versionadded:: 3.9
+  If the imported project has different configuration names than the
+  current project, set the :prop_tgt:`MAP_IMPORTED_CONFIG_<CONFIG>`
+  target property to specify the mapping.
diff --git a/share/cmake-3.22/Help/command/include_guard.rst b/share/cmake-3.22/Help/command/include_guard.rst
new file mode 100644
index 0000000..dca3b6f
--- /dev/null
+++ b/share/cmake-3.22/Help/command/include_guard.rst
@@ -0,0 +1,48 @@
+include_guard
+-------------
+
+.. versionadded:: 3.10
+
+Provides an include guard for the file currently being processed by CMake.
+
+.. code-block:: cmake
+
+  include_guard([DIRECTORY|GLOBAL])
+
+Sets up an include guard for the current CMake file (see the
+:variable:`CMAKE_CURRENT_LIST_FILE` variable documentation).
+
+CMake will end its processing of the current file at the location of the
+:command:`include_guard` command if the current file has already been
+processed for the applicable scope (see below). This provides functionality
+similar to the include guards commonly used in source headers or to the
+``#pragma once`` directive. If the current file has been processed previously
+for the applicable scope, the effect is as though :command:`return` had been
+called. Do not call this command from inside a function being defined within
+the current file.
+
+An optional argument specifying the scope of the guard may be provided.
+Possible values for the option are:
+
+``DIRECTORY``
+  The include guard applies within the current directory and below. The file
+  will only be included once within this directory scope, but may be included
+  again by other files outside of this directory (i.e. a parent directory or
+  another directory not pulled in by :command:`add_subdirectory` or
+  :command:`include` from the current file or its children).
+
+``GLOBAL``
+  The include guard applies globally to the whole build. The current file
+  will only be included once regardless of the scope.
+
+If no arguments given, ``include_guard`` has the same scope as a variable,
+meaning that the include guard effect is isolated by the most recent
+function scope or current directory if no inner function scopes exist.
+In this case the command behavior is the same as:
+
+.. code-block:: cmake
+
+  if(__CURRENT_FILE_VAR__)
+    return()
+  endif()
+  set(__CURRENT_FILE_VAR__ TRUE)
diff --git a/share/cmake-3.18/Help/command/include_regular_expression.rst b/share/cmake-3.22/Help/command/include_regular_expression.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/include_regular_expression.rst
rename to share/cmake-3.22/Help/command/include_regular_expression.rst
diff --git a/share/cmake-3.22/Help/command/install.rst b/share/cmake-3.22/Help/command/install.rst
new file mode 100644
index 0000000..1236f1d
--- /dev/null
+++ b/share/cmake-3.22/Help/command/install.rst
@@ -0,0 +1,922 @@
+install
+-------
+
+Specify rules to run at install time.
+
+Synopsis
+^^^^^^^^
+
+.. parsed-literal::
+
+  install(`TARGETS`_ <target>... [...])
+  install(`IMPORTED_RUNTIME_ARTIFACTS`_ <target>... [...])
+  install({`FILES`_ | `PROGRAMS`_} <file>... [...])
+  install(`DIRECTORY`_ <dir>... [...])
+  install(`SCRIPT`_ <file> [...])
+  install(`CODE`_ <code> [...])
+  install(`EXPORT`_ <export-name> [...])
+  install(`RUNTIME_DEPENDENCY_SET`_ <set-name> [...])
+
+Introduction
+^^^^^^^^^^^^
+
+This command generates installation rules for a project.  Install rules
+specified by calls to the ``install()`` command within a source directory
+are executed in order during installation.
+
+.. versionchanged:: 3.14
+  Install rules in subdirectories
+  added by calls to the :command:`add_subdirectory` command are interleaved
+  with those in the parent directory to run in the order declared (see
+  policy :policy:`CMP0082`).
+
+.. versionchanged:: 3.22
+  The environment variable :envvar:`CMAKE_INSTALL_MODE` can override the
+  default copying behavior of :command:`install()`.
+
+There are multiple signatures for this command.  Some of them define
+installation options for files and targets.  Options common to
+multiple signatures are covered here but they are valid only for
+signatures that specify them.  The common options are:
+
+``DESTINATION``
+  Specify the directory on disk to which a file will be installed.
+  Arguments can be relative or absolute paths.
+
+  If a relative path is given it is interpreted relative to the value
+  of the :variable:`CMAKE_INSTALL_PREFIX` variable.
+  The prefix can be relocated at install time using the ``DESTDIR``
+  mechanism explained in the :variable:`CMAKE_INSTALL_PREFIX` variable
+  documentation.
+
+  If an absolute path (with a leading slash or drive letter) is given
+  it is used verbatim.
+
+  As absolute paths are not supported by :manual:`cpack <cpack(1)>` installer
+  generators, it is preferable to use relative paths throughout.
+  In particular, there is no need to make paths absolute by prepending
+  :variable:`CMAKE_INSTALL_PREFIX`; this prefix is used by default if
+  the DESTINATION is a relative path.
+
+``PERMISSIONS``
+  Specify permissions for installed files.  Valid permissions are
+  ``OWNER_READ``, ``OWNER_WRITE``, ``OWNER_EXECUTE``, ``GROUP_READ``,
+  ``GROUP_WRITE``, ``GROUP_EXECUTE``, ``WORLD_READ``, ``WORLD_WRITE``,
+  ``WORLD_EXECUTE``, ``SETUID``, and ``SETGID``.  Permissions that do
+  not make sense on certain platforms are ignored on those platforms.
+
+``CONFIGURATIONS``
+  Specify a list of build configurations for which the install rule
+  applies (Debug, Release, etc.). Note that the values specified for
+  this option only apply to options listed AFTER the ``CONFIGURATIONS``
+  option. For example, to set separate install paths for the Debug and
+  Release configurations, do the following:
+
+  .. code-block:: cmake
+
+    install(TARGETS target
+            CONFIGURATIONS Debug
+            RUNTIME DESTINATION Debug/bin)
+    install(TARGETS target
+            CONFIGURATIONS Release
+            RUNTIME DESTINATION Release/bin)
+
+  Note that ``CONFIGURATIONS`` appears BEFORE ``RUNTIME DESTINATION``.
+
+``COMPONENT``
+  Specify an installation component name with which the install rule
+  is associated, such as "runtime" or "development".  During
+  component-specific installation only install rules associated with
+  the given component name will be executed.  During a full installation
+  all components are installed unless marked with ``EXCLUDE_FROM_ALL``.
+  If ``COMPONENT`` is not provided a default component "Unspecified" is
+  created.  The default component name may be controlled with the
+  :variable:`CMAKE_INSTALL_DEFAULT_COMPONENT_NAME` variable.
+
+``EXCLUDE_FROM_ALL``
+  .. versionadded:: 3.6
+
+  Specify that the file is excluded from a full installation and only
+  installed as part of a component-specific installation
+
+``RENAME``
+  Specify a name for an installed file that may be different from the
+  original file.  Renaming is allowed only when a single file is
+  installed by the command.
+
+``OPTIONAL``
+  Specify that it is not an error if the file to be installed does
+  not exist.
+
+.. versionadded:: 3.1
+  Command signatures that install files may print messages during
+  installation.  Use the :variable:`CMAKE_INSTALL_MESSAGE` variable
+  to control which messages are printed.
+
+.. versionadded:: 3.11
+  Many of the ``install()`` variants implicitly create the directories
+  containing the installed files. If
+  :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` is set, these
+  directories will be created with the permissions specified. Otherwise,
+  they will be created according to the uname rules on Unix-like platforms.
+  Windows platforms are unaffected.
+
+Installing Targets
+^^^^^^^^^^^^^^^^^^
+
+.. _`install(TARGETS)`:
+.. _TARGETS:
+
+.. code-block:: cmake
+
+  install(TARGETS targets... [EXPORT <export-name>]
+          [RUNTIME_DEPENDENCIES args...|RUNTIME_DEPENDENCY_SET <set-name>]
+          [[ARCHIVE|LIBRARY|RUNTIME|OBJECTS|FRAMEWORK|BUNDLE|
+            PRIVATE_HEADER|PUBLIC_HEADER|RESOURCE]
+           [DESTINATION <dir>]
+           [PERMISSIONS permissions...]
+           [CONFIGURATIONS [Debug|Release|...]]
+           [COMPONENT <component>]
+           [NAMELINK_COMPONENT <component>]
+           [OPTIONAL] [EXCLUDE_FROM_ALL]
+           [NAMELINK_ONLY|NAMELINK_SKIP]
+          ] [...]
+          [INCLUDES DESTINATION [<dir> ...]]
+          )
+
+The ``TARGETS`` form specifies rules for installing targets from a
+project.  There are several kinds of target :ref:`Output Artifacts`
+that may be installed:
+
+``ARCHIVE``
+  Target artifacts of this kind include:
+
+  * *Static libraries*
+    (except on macOS when marked as ``FRAMEWORK``, see below);
+  * *DLL import libraries*
+    (on all Windows-based systems including Cygwin; they have extension
+    ``.lib``, in contrast to the ``.dll`` libraries that go to ``RUNTIME``);
+  * On AIX, the *linker import file* created for executables with
+    :prop_tgt:`ENABLE_EXPORTS` enabled.
+
+``LIBRARY``
+  Target artifacts of this kind include:
+
+  * *Shared libraries*, except
+
+    - DLLs (these go to ``RUNTIME``, see below),
+    - on macOS when marked as ``FRAMEWORK`` (see below).
+
+``RUNTIME``
+  Target artifacts of this kind include:
+
+  * *Executables*
+    (except on macOS when marked as ``MACOSX_BUNDLE``, see ``BUNDLE`` below);
+  * DLLs (on all Windows-based systems including Cygwin; note that the
+    accompanying import libraries are of kind ``ARCHIVE``).
+
+``OBJECTS``
+  .. versionadded:: 3.9
+
+  Object files associated with *object libraries*.
+
+``FRAMEWORK``
+  Both static and shared libraries marked with the ``FRAMEWORK``
+  property are treated as ``FRAMEWORK`` targets on macOS.
+
+``BUNDLE``
+  Executables marked with the :prop_tgt:`MACOSX_BUNDLE` property are treated as
+  ``BUNDLE`` targets on macOS.
+
+``PUBLIC_HEADER``
+  Any :prop_tgt:`PUBLIC_HEADER` files associated with a library are installed in
+  the destination specified by the ``PUBLIC_HEADER`` argument on non-Apple
+  platforms. Rules defined by this argument are ignored for :prop_tgt:`FRAMEWORK`
+  libraries on Apple platforms because the associated files are installed
+  into the appropriate locations inside the framework folder. See
+  :prop_tgt:`PUBLIC_HEADER` for details.
+
+``PRIVATE_HEADER``
+  Similar to ``PUBLIC_HEADER``, but for ``PRIVATE_HEADER`` files. See
+  :prop_tgt:`PRIVATE_HEADER` for details.
+
+``RESOURCE``
+  Similar to ``PUBLIC_HEADER`` and ``PRIVATE_HEADER``, but for
+  ``RESOURCE`` files. See :prop_tgt:`RESOURCE` for details.
+
+For each of these arguments given, the arguments following them only apply
+to the target or file type specified in the argument. If none is given, the
+installation properties apply to all target types. If only one is given then
+only targets of that type will be installed (which can be used to install
+just a DLL or just an import library.)
+
+For regular executables, static libraries and shared libraries, the
+``DESTINATION`` argument is not required.  For these target types, when
+``DESTINATION`` is omitted, a default destination will be taken from the
+appropriate variable from :module:`GNUInstallDirs`, or set to a built-in
+default value if that variable is not defined.  The same is true for the
+public and private headers associated with the installed targets through the
+:prop_tgt:`PUBLIC_HEADER` and :prop_tgt:`PRIVATE_HEADER` target properties.
+A destination must always be provided for module libraries, Apple bundles and
+frameworks.  A destination can be omitted for interface and object libraries,
+but they are handled differently (see the discussion of this topic toward the
+end of this section).
+
+The following table shows the target types with their associated variables and
+built-in defaults that apply when no destination is given:
+
+================== =============================== ======================
+   Target Type         GNUInstallDirs Variable        Built-In Default
+================== =============================== ======================
+``RUNTIME``        ``${CMAKE_INSTALL_BINDIR}``     ``bin``
+``LIBRARY``        ``${CMAKE_INSTALL_LIBDIR}``     ``lib``
+``ARCHIVE``        ``${CMAKE_INSTALL_LIBDIR}``     ``lib``
+``PRIVATE_HEADER`` ``${CMAKE_INSTALL_INCLUDEDIR}`` ``include``
+``PUBLIC_HEADER``  ``${CMAKE_INSTALL_INCLUDEDIR}`` ``include``
+================== =============================== ======================
+
+Projects wishing to follow the common practice of installing headers into a
+project-specific subdirectory will need to provide a destination rather than
+rely on the above.
+
+To make packages compliant with distribution filesystem layout policies, if
+projects must specify a ``DESTINATION``, it is recommended that they use a
+path that begins with the appropriate :module:`GNUInstallDirs` variable.
+This allows package maintainers to control the install destination by setting
+the appropriate cache variables.  The following example shows a static library
+being installed to the default destination provided by
+:module:`GNUInstallDirs`, but with its headers installed to a project-specific
+subdirectory that follows the above recommendation:
+
+.. code-block:: cmake
+
+  add_library(mylib STATIC ...)
+  set_target_properties(mylib PROPERTIES PUBLIC_HEADER mylib.h)
+  include(GNUInstallDirs)
+  install(TARGETS mylib
+          PUBLIC_HEADER
+            DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/myproj
+  )
+
+In addition to the common options listed above, each target can accept
+the following additional arguments:
+
+``NAMELINK_COMPONENT``
+  .. versionadded:: 3.12
+
+  On some platforms a versioned shared library has a symbolic link such
+  as::
+
+    lib<name>.so -> lib<name>.so.1
+
+  where ``lib<name>.so.1`` is the soname of the library and ``lib<name>.so``
+  is a "namelink" allowing linkers to find the library when given
+  ``-l<name>``. The ``NAMELINK_COMPONENT`` option is similar to the
+  ``COMPONENT`` option, but it changes the installation component of a shared
+  library namelink if one is generated. If not specified, this defaults to the
+  value of ``COMPONENT``. It is an error to use this parameter outside of a
+  ``LIBRARY`` block.
+
+  Consider the following example:
+
+  .. code-block:: cmake
+
+    install(TARGETS mylib
+            LIBRARY
+              COMPONENT Libraries
+              NAMELINK_COMPONENT Development
+            PUBLIC_HEADER
+              COMPONENT Development
+           )
+
+  In this scenario, if you choose to install only the ``Development``
+  component, both the headers and namelink will be installed without the
+  library. (If you don't also install the ``Libraries`` component, the
+  namelink will be a dangling symlink, and projects that link to the library
+  will have build errors.) If you install only the ``Libraries`` component,
+  only the library will be installed, without the headers and namelink.
+
+  This option is typically used for package managers that have separate
+  runtime and development packages. For example, on Debian systems, the
+  library is expected to be in the runtime package, and the headers and
+  namelink are expected to be in the development package.
+
+  See the :prop_tgt:`VERSION` and :prop_tgt:`SOVERSION` target properties for
+  details on creating versioned shared libraries.
+
+``NAMELINK_ONLY``
+  This option causes the installation of only the namelink when a library
+  target is installed. On platforms where versioned shared libraries do not
+  have namelinks or when a library is not versioned, the ``NAMELINK_ONLY``
+  option installs nothing. It is an error to use this parameter outside of a
+  ``LIBRARY`` block.
+
+  When ``NAMELINK_ONLY`` is given, either ``NAMELINK_COMPONENT`` or
+  ``COMPONENT`` may be used to specify the installation component of the
+  namelink, but ``COMPONENT`` should generally be preferred.
+
+``NAMELINK_SKIP``
+  Similar to ``NAMELINK_ONLY``, but it has the opposite effect: it causes the
+  installation of library files other than the namelink when a library target
+  is installed. When neither ``NAMELINK_ONLY`` or ``NAMELINK_SKIP`` are given,
+  both portions are installed. On platforms where versioned shared libraries
+  do not have symlinks or when a library is not versioned, ``NAMELINK_SKIP``
+  installs the library. It is an error to use this parameter outside of a
+  ``LIBRARY`` block.
+
+  If ``NAMELINK_SKIP`` is specified, ``NAMELINK_COMPONENT`` has no effect. It
+  is not recommended to use ``NAMELINK_SKIP`` in conjunction with
+  ``NAMELINK_COMPONENT``.
+
+The `install(TARGETS)`_ command can also accept the following options at the
+top level:
+
+``EXPORT``
+  This option associates the installed target files with an export called
+  ``<export-name>``.  It must appear before any target options.  To actually
+  install the export file itself, call `install(EXPORT)`_, documented below.
+  See documentation of the :prop_tgt:`EXPORT_NAME` target property to change
+  the name of the exported target.
+
+``INCLUDES DESTINATION``
+  This option specifies a list of directories which will be added to the
+  :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` target property of the
+  ``<targets>`` when exported by the `install(EXPORT)`_ command. If a
+  relative path is specified, it is treated as relative to the
+  ``$<INSTALL_PREFIX>``.
+
+``RUNTIME_DEPENDENCY_SET``
+  .. versionadded:: 3.21
+
+  This option causes all runtime dependencies of installed executable, shared
+  library, and module targets to be added to the specified runtime dependency
+  set. This set can then be installed with an
+  `install(RUNTIME_DEPENDENCY_SET)`_ command.
+
+  This keyword and the ``RUNTIME_DEPENDENCIES`` keyword are mutually
+  exclusive.
+
+``RUNTIME_DEPENDENCIES``
+  .. versionadded:: 3.21
+
+  This option causes all runtime dependencies of installed executable, shared
+  library, and module targets to be installed along with the targets
+  themselves. The ``RUNTIME``, ``LIBRARY``, ``FRAMEWORK``, and generic
+  arguments are used to determine the properties (``DESTINATION``,
+  ``COMPONENT``, etc.) of the installation of these dependencies.
+
+  ``RUNTIME_DEPENDENCIES`` is semantically equivalent to the following pair
+  of calls:
+
+  .. code-block:: cmake
+
+    install(TARGETS ... RUNTIME_DEPENDENCY_SET <set-name>)
+    install(RUNTIME_DEPENDENCY_SET <set-name> args...)
+
+  where ``<set-name>`` will be a randomly generated set name.
+  The ``args...`` may include any of the following keywords supported by
+  the `install(RUNTIME_DEPENDENCY_SET)`_ command:
+
+  * ``DIRECTORIES``
+  * ``PRE_INCLUDE_REGEXES``
+  * ``PRE_EXCLUDE_REGEXES``
+  * ``POST_INCLUDE_REGEXES``
+  * ``POST_EXCLUDE_REGEXES``
+  * ``POST_INCLUDE_FILES``
+  * ``POST_EXCLUDE_FILES``
+
+  The ``RUNTIME_DEPENDENCIES`` and ``RUNTIME_DEPENDENCY_SET`` keywords are
+  mutually exclusive.
+
+One or more groups of properties may be specified in a single call to
+the ``TARGETS`` form of this command.  A target may be installed more than
+once to different locations.  Consider hypothetical targets ``myExe``,
+``mySharedLib``, and ``myStaticLib``.  The code:
+
+.. code-block:: cmake
+
+  install(TARGETS myExe mySharedLib myStaticLib
+          RUNTIME DESTINATION bin
+          LIBRARY DESTINATION lib
+          ARCHIVE DESTINATION lib/static)
+  install(TARGETS mySharedLib DESTINATION /some/full/path)
+
+will install ``myExe`` to ``<prefix>/bin`` and ``myStaticLib`` to
+``<prefix>/lib/static``.  On non-DLL platforms ``mySharedLib`` will be
+installed to ``<prefix>/lib`` and ``/some/full/path``.  On DLL platforms
+the ``mySharedLib`` DLL will be installed to ``<prefix>/bin`` and
+``/some/full/path`` and its import library will be installed to
+``<prefix>/lib/static`` and ``/some/full/path``.
+
+:ref:`Interface Libraries` may be listed among the targets to install.
+They install no artifacts but will be included in an associated ``EXPORT``.
+If :ref:`Object Libraries` are listed but given no destination for their
+object files, they will be exported as :ref:`Interface Libraries`.
+This is sufficient to satisfy transitive usage requirements of other
+targets that link to the object libraries in their implementation.
+
+Installing a target with the :prop_tgt:`EXCLUDE_FROM_ALL` target property
+set to ``TRUE`` has undefined behavior.
+
+.. versionadded:: 3.3
+  An install destination given as a ``DESTINATION`` argument may
+  use "generator expressions" with the syntax ``$<...>``.  See the
+  :manual:`cmake-generator-expressions(7)` manual for available expressions.
+
+.. versionadded:: 3.13
+  `install(TARGETS)`_ can install targets that were created in
+  other directories.  When using such cross-directory install rules, running
+  ``make install`` (or similar) from a subdirectory will not guarantee that
+  targets from other directories are up-to-date.  You can use
+  :command:`target_link_libraries` or :command:`add_dependencies`
+  to ensure that such out-of-directory targets are built before the
+  subdirectory-specific install rules are run.
+
+Installing Imported Runtime Artifacts
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. _`install(IMPORTED_RUNTIME_ARTIFACTS)`:
+.. _IMPORTED_RUNTIME_ARTIFACTS:
+
+.. versionadded:: 3.21
+
+.. code-block:: cmake
+
+  install(IMPORTED_RUNTIME_ARTIFACTS targets...
+          [RUNTIME_DEPENDENCY_SET <set-name>]
+          [[LIBRARY|RUNTIME|FRAMEWORK|BUNDLE]
+           [DESTINATION <dir>]
+           [PERMISSIONS permissions...]
+           [CONFIGURATIONS [Debug|Release|...]]
+           [COMPONENT <component>]
+           [OPTIONAL] [EXCLUDE_FROM_ALL]
+          ] [...]
+          )
+
+The ``IMPORTED_RUNTIME_ARTIFACTS`` form specifies rules for installing the
+runtime artifacts of imported targets. Projects may do this if they want to
+bundle outside executables or modules inside their installation. The
+``LIBRARY``, ``RUNTIME``, ``FRAMEWORK``, and ``BUNDLE`` arguments have the
+same semantics that they do in the `TARGETS`_ mode. Only the runtime artifacts
+of imported targets are installed (except in the case of :prop_tgt:`FRAMEWORK`
+libraries, :prop_tgt:`MACOSX_BUNDLE` executables, and :prop_tgt:`BUNDLE`
+CFBundles.) For example, headers and import libraries associated with DLLs are
+not installed. In the case of :prop_tgt:`FRAMEWORK` libraries,
+:prop_tgt:`MACOSX_BUNDLE` executables, and :prop_tgt:`BUNDLE` CFBundles, the
+entire directory is installed.
+
+The ``RUNTIME_DEPENDENCY_SET`` option causes the runtime artifacts of the
+imported executable, shared library, and module library ``targets`` to be
+added to the ``<set-name>`` runtime dependency set. This set can then be
+installed with an `install(RUNTIME_DEPENDENCY_SET)`_ command.
+
+Installing Files
+^^^^^^^^^^^^^^^^
+
+.. _`install(FILES)`:
+.. _`install(PROGRAMS)`:
+.. _FILES:
+.. _PROGRAMS:
+
+.. code-block:: cmake
+
+  install(<FILES|PROGRAMS> files...
+          TYPE <type> | DESTINATION <dir>
+          [PERMISSIONS permissions...]
+          [CONFIGURATIONS [Debug|Release|...]]
+          [COMPONENT <component>]
+          [RENAME <name>] [OPTIONAL] [EXCLUDE_FROM_ALL])
+
+The ``FILES`` form specifies rules for installing files for a project.
+File names given as relative paths are interpreted with respect to the
+current source directory.  Files installed by this form are by default
+given permissions ``OWNER_WRITE``, ``OWNER_READ``, ``GROUP_READ``, and
+``WORLD_READ`` if no ``PERMISSIONS`` argument is given.
+
+The ``PROGRAMS`` form is identical to the ``FILES`` form except that the
+default permissions for the installed file also include ``OWNER_EXECUTE``,
+``GROUP_EXECUTE``, and ``WORLD_EXECUTE``.  This form is intended to install
+programs that are not targets, such as shell scripts.  Use the ``TARGETS``
+form to install targets built within the project.
+
+The list of ``files...`` given to ``FILES`` or ``PROGRAMS`` may use
+"generator expressions" with the syntax ``$<...>``.  See the
+:manual:`cmake-generator-expressions(7)` manual for available expressions.
+However, if any item begins in a generator expression it must evaluate
+to a full path.
+
+Either a ``TYPE`` or a ``DESTINATION`` must be provided, but not both.
+A ``TYPE`` argument specifies the generic file type of the files being
+installed.  A destination will then be set automatically by taking the
+corresponding variable from :module:`GNUInstallDirs`, or by using a
+built-in default if that variable is not defined.  See the table below for
+the supported file types and their corresponding variables and built-in
+defaults.  Projects can provide a ``DESTINATION`` argument instead of a
+file type if they wish to explicitly define the install destination.
+
+======================= ================================== =========================
+   ``TYPE`` Argument         GNUInstallDirs Variable           Built-In Default
+======================= ================================== =========================
+``BIN``                 ``${CMAKE_INSTALL_BINDIR}``        ``bin``
+``SBIN``                ``${CMAKE_INSTALL_SBINDIR}``       ``sbin``
+``LIB``                 ``${CMAKE_INSTALL_LIBDIR}``        ``lib``
+``INCLUDE``             ``${CMAKE_INSTALL_INCLUDEDIR}``    ``include``
+``SYSCONF``             ``${CMAKE_INSTALL_SYSCONFDIR}``    ``etc``
+``SHAREDSTATE``         ``${CMAKE_INSTALL_SHARESTATEDIR}`` ``com``
+``LOCALSTATE``          ``${CMAKE_INSTALL_LOCALSTATEDIR}`` ``var``
+``RUNSTATE``            ``${CMAKE_INSTALL_RUNSTATEDIR}``   ``<LOCALSTATE dir>/run``
+``DATA``                ``${CMAKE_INSTALL_DATADIR}``       ``<DATAROOT dir>``
+``INFO``                ``${CMAKE_INSTALL_INFODIR}``       ``<DATAROOT dir>/info``
+``LOCALE``              ``${CMAKE_INSTALL_LOCALEDIR}``     ``<DATAROOT dir>/locale``
+``MAN``                 ``${CMAKE_INSTALL_MANDIR}``        ``<DATAROOT dir>/man``
+``DOC``                 ``${CMAKE_INSTALL_DOCDIR}``        ``<DATAROOT dir>/doc``
+======================= ================================== =========================
+
+Projects wishing to follow the common practice of installing headers into a
+project-specific subdirectory will need to provide a destination rather than
+rely on the above.
+
+Note that some of the types' built-in defaults use the ``DATAROOT`` directory as
+a prefix. The ``DATAROOT`` prefix is calculated similarly to the types, with
+``CMAKE_INSTALL_DATAROOTDIR`` as the variable and ``share`` as the built-in
+default. You cannot use ``DATAROOT`` as a ``TYPE`` parameter; please use
+``DATA`` instead.
+
+To make packages compliant with distribution filesystem layout policies, if
+projects must specify a ``DESTINATION``, it is recommended that they use a
+path that begins with the appropriate :module:`GNUInstallDirs` variable.
+This allows package maintainers to control the install destination by setting
+the appropriate cache variables.  The following example shows how to follow
+this advice while installing headers to a project-specific subdirectory:
+
+.. code-block:: cmake
+
+  include(GNUInstallDirs)
+  install(FILES mylib.h
+          DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/myproj
+  )
+
+.. versionadded:: 3.4
+  An install destination given as a ``DESTINATION`` argument may
+  use "generator expressions" with the syntax ``$<...>``.  See the
+  :manual:`cmake-generator-expressions(7)` manual for available expressions.
+
+.. versionadded:: 3.20
+  An install rename given as a ``RENAME`` argument may
+  use "generator expressions" with the syntax ``$<...>``.  See the
+  :manual:`cmake-generator-expressions(7)` manual for available expressions.
+
+Installing Directories
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. _`install(DIRECTORY)`:
+.. _DIRECTORY:
+
+.. code-block:: cmake
+
+  install(DIRECTORY dirs...
+          TYPE <type> | DESTINATION <dir>
+          [FILE_PERMISSIONS permissions...]
+          [DIRECTORY_PERMISSIONS permissions...]
+          [USE_SOURCE_PERMISSIONS] [OPTIONAL] [MESSAGE_NEVER]
+          [CONFIGURATIONS [Debug|Release|...]]
+          [COMPONENT <component>] [EXCLUDE_FROM_ALL]
+          [FILES_MATCHING]
+          [[PATTERN <pattern> | REGEX <regex>]
+           [EXCLUDE] [PERMISSIONS permissions...]] [...])
+
+The ``DIRECTORY`` form installs contents of one or more directories to a
+given destination.  The directory structure is copied verbatim to the
+destination.  The last component of each directory name is appended to
+the destination directory but a trailing slash may be used to avoid
+this because it leaves the last component empty.  Directory names
+given as relative paths are interpreted with respect to the current
+source directory.  If no input directory names are given the
+destination directory will be created but nothing will be installed
+into it.  The ``FILE_PERMISSIONS`` and ``DIRECTORY_PERMISSIONS`` options
+specify permissions given to files and directories in the destination.
+If ``USE_SOURCE_PERMISSIONS`` is specified and ``FILE_PERMISSIONS`` is not,
+file permissions will be copied from the source directory structure.
+If no permissions are specified files will be given the default
+permissions specified in the ``FILES`` form of the command, and the
+directories will be given the default permissions specified in the
+``PROGRAMS`` form of the command.
+
+.. versionadded:: 3.1
+  The ``MESSAGE_NEVER`` option disables file installation status output.
+
+Installation of directories may be controlled with fine granularity
+using the ``PATTERN`` or ``REGEX`` options.  These "match" options specify a
+globbing pattern or regular expression to match directories or files
+encountered within input directories.  They may be used to apply
+certain options (see below) to a subset of the files and directories
+encountered.  The full path to each input file or directory (with
+forward slashes) is matched against the expression.  A ``PATTERN`` will
+match only complete file names: the portion of the full path matching
+the pattern must occur at the end of the file name and be preceded by
+a slash.  A ``REGEX`` will match any portion of the full path but it may
+use ``/`` and ``$`` to simulate the ``PATTERN`` behavior.  By default all
+files and directories are installed whether or not they are matched.
+The ``FILES_MATCHING`` option may be given before the first match option
+to disable installation of files (but not directories) not matched by
+any expression.  For example, the code
+
+.. code-block:: cmake
+
+  install(DIRECTORY src/ DESTINATION include/myproj
+          FILES_MATCHING PATTERN "*.h")
+
+will extract and install header files from a source tree.
+
+Some options may follow a ``PATTERN`` or ``REGEX`` expression as described
+under :ref:`string(REGEX) <Regex Specification>` and are applied
+only to files or directories matching them.  The ``EXCLUDE`` option will
+skip the matched file or directory.  The ``PERMISSIONS`` option overrides
+the permissions setting for the matched file or directory.  For
+example the code
+
+.. code-block:: cmake
+
+  install(DIRECTORY icons scripts/ DESTINATION share/myproj
+          PATTERN "CVS" EXCLUDE
+          PATTERN "scripts/*"
+          PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
+                      GROUP_EXECUTE GROUP_READ)
+
+will install the ``icons`` directory to ``share/myproj/icons`` and the
+``scripts`` directory to ``share/myproj``.  The icons will get default
+file permissions, the scripts will be given specific permissions, and any
+``CVS`` directories will be excluded.
+
+Either a ``TYPE`` or a ``DESTINATION`` must be provided, but not both.
+A ``TYPE`` argument specifies the generic file type of the files within the
+listed directories being installed.  A destination will then be set
+automatically by taking the corresponding variable from
+:module:`GNUInstallDirs`, or by using a built-in default if that variable
+is not defined.  See the table below for the supported file types and their
+corresponding variables and built-in defaults.  Projects can provide a
+``DESTINATION`` argument instead of a file type if they wish to explicitly
+define the install destination.
+
+======================= ================================== =========================
+   ``TYPE`` Argument         GNUInstallDirs Variable           Built-In Default
+======================= ================================== =========================
+``BIN``                 ``${CMAKE_INSTALL_BINDIR}``        ``bin``
+``SBIN``                ``${CMAKE_INSTALL_SBINDIR}``       ``sbin``
+``LIB``                 ``${CMAKE_INSTALL_LIBDIR}``        ``lib``
+``INCLUDE``             ``${CMAKE_INSTALL_INCLUDEDIR}``    ``include``
+``SYSCONF``             ``${CMAKE_INSTALL_SYSCONFDIR}``    ``etc``
+``SHAREDSTATE``         ``${CMAKE_INSTALL_SHARESTATEDIR}`` ``com``
+``LOCALSTATE``          ``${CMAKE_INSTALL_LOCALSTATEDIR}`` ``var``
+``RUNSTATE``            ``${CMAKE_INSTALL_RUNSTATEDIR}``   ``<LOCALSTATE dir>/run``
+``DATA``                ``${CMAKE_INSTALL_DATADIR}``       ``<DATAROOT dir>``
+``INFO``                ``${CMAKE_INSTALL_INFODIR}``       ``<DATAROOT dir>/info``
+``LOCALE``              ``${CMAKE_INSTALL_LOCALEDIR}``     ``<DATAROOT dir>/locale``
+``MAN``                 ``${CMAKE_INSTALL_MANDIR}``        ``<DATAROOT dir>/man``
+``DOC``                 ``${CMAKE_INSTALL_DOCDIR}``        ``<DATAROOT dir>/doc``
+======================= ================================== =========================
+
+Note that some of the types' built-in defaults use the ``DATAROOT`` directory as
+a prefix. The ``DATAROOT`` prefix is calculated similarly to the types, with
+``CMAKE_INSTALL_DATAROOTDIR`` as the variable and ``share`` as the built-in
+default. You cannot use ``DATAROOT`` as a ``TYPE`` parameter; please use
+``DATA`` instead.
+
+To make packages compliant with distribution filesystem layout policies, if
+projects must specify a ``DESTINATION``, it is recommended that they use a
+path that begins with the appropriate :module:`GNUInstallDirs` variable.
+This allows package maintainers to control the install destination by setting
+the appropriate cache variables.
+
+.. versionadded:: 3.4
+  An install destination given as a ``DESTINATION`` argument may
+  use "generator expressions" with the syntax ``$<...>``.  See the
+  :manual:`cmake-generator-expressions(7)` manual for available expressions.
+
+.. versionadded:: 3.5
+  The list of ``dirs...`` given to ``DIRECTORY`` may use
+  "generator expressions" too.
+
+Custom Installation Logic
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. _`install(CODE)`:
+.. _`install(SCRIPT)`:
+.. _CODE:
+.. _SCRIPT:
+
+.. code-block:: cmake
+
+  install([[SCRIPT <file>] [CODE <code>]]
+          [ALL_COMPONENTS | COMPONENT <component>]
+          [EXCLUDE_FROM_ALL] [...])
+
+The ``SCRIPT`` form will invoke the given CMake script files during
+installation.  If the script file name is a relative path it will be
+interpreted with respect to the current source directory.  The ``CODE``
+form will invoke the given CMake code during installation.  Code is
+specified as a single argument inside a double-quoted string.  For
+example, the code
+
+.. code-block:: cmake
+
+  install(CODE "MESSAGE(\"Sample install message.\")")
+
+will print a message during installation.
+
+.. versionadded:: 3.21
+  When the ``ALL_COMPONENTS`` option is given, the custom installation
+  script code will be executed for every component of a component-specific
+  installation.  This option is mutually exclusive with the ``COMPONENT``
+  option.
+
+.. versionadded:: 3.14
+  ``<file>`` or ``<code>`` may use "generator expressions" with the syntax
+  ``$<...>`` (in the case of ``<file>``, this refers to their use in the file
+  name, not the file's contents).  See the
+  :manual:`cmake-generator-expressions(7)` manual for available expressions.
+
+Installing Exports
+^^^^^^^^^^^^^^^^^^
+
+.. _`install(EXPORT)`:
+.. _EXPORT:
+
+.. code-block:: cmake
+
+  install(EXPORT <export-name> DESTINATION <dir>
+          [NAMESPACE <namespace>] [[FILE <name>.cmake]|
+          [PERMISSIONS permissions...]
+          [CONFIGURATIONS [Debug|Release|...]]
+          [EXPORT_LINK_INTERFACE_LIBRARIES]
+          [COMPONENT <component>]
+          [EXCLUDE_FROM_ALL])
+  install(EXPORT_ANDROID_MK <export-name> DESTINATION <dir> [...])
+
+The ``EXPORT`` form generates and installs a CMake file containing code to
+import targets from the installation tree into another project.
+Target installations are associated with the export ``<export-name>``
+using the ``EXPORT`` option of the `install(TARGETS)`_ signature
+documented above.  The ``NAMESPACE`` option will prepend ``<namespace>`` to
+the target names as they are written to the import file.  By default
+the generated file will be called ``<export-name>.cmake`` but the ``FILE``
+option may be used to specify a different name.  The value given to
+the ``FILE`` option must be a file name with the ``.cmake`` extension.
+If a ``CONFIGURATIONS`` option is given then the file will only be installed
+when one of the named configurations is installed.  Additionally, the
+generated import file will reference only the matching target
+configurations.  The ``EXPORT_LINK_INTERFACE_LIBRARIES`` keyword, if
+present, causes the contents of the properties matching
+``(IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?`` to be exported, when
+policy :policy:`CMP0022` is ``NEW``.
+
+.. note::
+  The installed ``<export-name>.cmake`` file may come with additional
+  per-configuration ``<export-name>-*.cmake`` files to be loaded by
+  globbing.  Do not use an export name that is the same as the package
+  name in combination with installing a ``<package-name>-config.cmake``
+  file or the latter may be incorrectly matched by the glob and loaded.
+
+When a ``COMPONENT`` option is given, the listed ``<component>`` implicitly
+depends on all components mentioned in the export set. The exported
+``<name>.cmake`` file will require each of the exported components to be
+present in order for dependent projects to build properly. For example, a
+project may define components ``Runtime`` and ``Development``, with shared
+libraries going into the ``Runtime`` component and static libraries and
+headers going into the ``Development`` component. The export set would also
+typically be part of the ``Development`` component, but it would export
+targets from both the ``Runtime`` and ``Development`` components. Therefore,
+the ``Runtime`` component would need to be installed if the ``Development``
+component was installed, but not vice versa. If the ``Development`` component
+was installed without the ``Runtime`` component, dependent projects that try
+to link against it would have build errors. Package managers, such as APT and
+RPM, typically handle this by listing the ``Runtime`` component as a dependency
+of the ``Development`` component in the package metadata, ensuring that the
+library is always installed if the headers and CMake export file are present.
+
+.. versionadded:: 3.7
+  In addition to cmake language files, the ``EXPORT_ANDROID_MK`` mode maybe
+  used to specify an export to the android ndk build system.  This mode
+  accepts the same options as the normal export mode.  The Android
+  NDK supports the use of prebuilt libraries, both static and shared. This
+  allows cmake to build the libraries of a project and make them available
+  to an ndk build system complete with transitive dependencies, include flags
+  and defines required to use the libraries.
+
+The ``EXPORT`` form is useful to help outside projects use targets built
+and installed by the current project.  For example, the code
+
+.. code-block:: cmake
+
+  install(TARGETS myexe EXPORT myproj DESTINATION bin)
+  install(EXPORT myproj NAMESPACE mp_ DESTINATION lib/myproj)
+  install(EXPORT_ANDROID_MK myproj DESTINATION share/ndk-modules)
+
+will install the executable ``myexe`` to ``<prefix>/bin`` and code to import
+it in the file ``<prefix>/lib/myproj/myproj.cmake`` and
+``<prefix>/share/ndk-modules/Android.mk``.  An outside project
+may load this file with the include command and reference the ``myexe``
+executable from the installation tree using the imported target name
+``mp_myexe`` as if the target were built in its own tree.
+
+.. note::
+  This command supersedes the :command:`install_targets` command and
+  the :prop_tgt:`PRE_INSTALL_SCRIPT` and :prop_tgt:`POST_INSTALL_SCRIPT`
+  target properties.  It also replaces the ``FILES`` forms of the
+  :command:`install_files` and :command:`install_programs` commands.
+  The processing order of these install rules relative to
+  those generated by :command:`install_targets`,
+  :command:`install_files`, and :command:`install_programs` commands
+  is not defined.
+
+Installing Runtime Dependencies
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. _`install(RUNTIME_DEPENDENCY_SET)`:
+.. _RUNTIME_DEPENDENCY_SET:
+
+.. versionadded:: 3.21
+
+.. code-block:: cmake
+
+  install(RUNTIME_DEPENDENCY_SET <set-name>
+          [[LIBRARY|RUNTIME|FRAMEWORK]
+           [DESTINATION <dir>]
+           [PERMISSIONS permissions...]
+           [CONFIGURATIONS [Debug|Release|...]]
+           [COMPONENT <component>]
+           [NAMELINK_COMPONENT <component>]
+           [OPTIONAL] [EXCLUDE_FROM_ALL]
+          ] [...]
+          [PRE_INCLUDE_REGEXES regexes...]
+          [PRE_EXCLUDE_REGEXES regexes...]
+          [POST_INCLUDE_REGEXES regexes...]
+          [POST_EXCLUDE_REGEXES regexes...]
+          [POST_INCLUDE_FILES files...]
+          [POST_EXCLUDE_FILES files...]
+          [DIRECTORIES directories...]
+          )
+
+Installs a runtime dependency set previously created by one or more
+`install(TARGETS)`_ or `install(IMPORTED_RUNTIME_ARTIFACTS)`_ commands. The
+dependencies of targets belonging to a runtime dependency set are installed in
+the ``RUNTIME`` destination and component on DLL platforms, and in the
+``LIBRARY`` destination and component on non-DLL platforms. macOS frameworks
+are installed in the ``FRAMEWORK`` destination and component.
+Targets built within the build tree will never be installed as runtime
+dependencies, nor will their own dependencies, unless the targets themselves
+are installed with `install(TARGETS)`_.
+
+The generated install script calls :command:`file(GET_RUNTIME_DEPENDENCIES)`
+on the build-tree files to calculate the runtime dependencies. The build-tree
+executable files are passed as the ``EXECUTABLES`` argument, the build-tree
+shared libraries as the ``LIBRARIES`` argument, and the build-tree modules as
+the ``MODULES`` argument. On macOS, if one of the executables is a
+:prop_tgt:`MACOSX_BUNDLE`, that executable is passed as the
+``BUNDLE_EXECUTABLE`` argument. At most one such bundle executable may be in
+the runtime dependency set on macOS. The :prop_tgt:`MACOSX_BUNDLE` property
+has no effect on other platforms. Note that
+:command:`file(GET_RUNTIME_DEPENDENCIES)` only supports collecting the runtime
+dependencies for Windows, Linux and macOS platforms, so
+``install(RUNTIME_DEPENDENCY_SET)`` has the same limitation.
+
+The following sub-arguments are forwarded through as the corresponding
+arguments to :command:`file(GET_RUNTIME_DEPENDENCIES)` (for those that provide
+a non-empty list of directories, regular expressions or files).  They all
+support :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+* ``DIRECTORIES <directories>``
+* ``PRE_INCLUDE_REGEXES <regexes>``
+* ``PRE_EXCLUDE_REGEXES <regexes>``
+* ``POST_INCLUDE_REGEXES <regexes>``
+* ``POST_EXCLUDE_REGEXES <regexes>``
+* ``POST_INCLUDE_FILES <files>``
+* ``POST_EXCLUDE_FILES <files>``
+
+Generated Installation Script
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. note::
+
+  Use of this feature is not recommended. Please consider using the
+  ``--install`` argument of :manual:`cmake(1)` instead.
+
+The ``install()`` command generates a file, ``cmake_install.cmake``, inside
+the build directory, which is used internally by the generated install target
+and by CPack. You can also invoke this script manually with ``cmake -P``. This
+script accepts several variables:
+
+``COMPONENT``
+  Set this variable to install only a single CPack component as opposed to all
+  of them. For example, if you only want to install the ``Development``
+  component, run ``cmake -DCOMPONENT=Development -P cmake_install.cmake``.
+
+``BUILD_TYPE``
+  Set this variable to change the build type if you are using a multi-config
+  generator. For example, to install with the ``Debug`` configuration, run
+  ``cmake -DBUILD_TYPE=Debug -P cmake_install.cmake``.
+
+``DESTDIR``
+  This is an environment variable rather than a CMake variable. It allows you
+  to change the installation prefix on UNIX systems. See :envvar:`DESTDIR` for
+  details.
diff --git a/share/cmake-3.22/Help/command/install_files.rst b/share/cmake-3.22/Help/command/install_files.rst
new file mode 100644
index 0000000..494f3d0
--- /dev/null
+++ b/share/cmake-3.22/Help/command/install_files.rst
@@ -0,0 +1,41 @@
+install_files
+-------------
+
+.. deprecated:: 3.0
+
+  Use the :command:`install(FILES)` command instead.
+
+This command has been superseded by the :command:`install` command.  It is
+provided for compatibility with older CMake code.  The ``FILES`` form is
+directly replaced by the ``FILES`` form of the :command:`install`
+command.  The regexp form can be expressed more clearly using the ``GLOB``
+form of the :command:`file` command.
+
+::
+
+  install_files(<dir> extension file file ...)
+
+Create rules to install the listed files with the given extension into
+the given directory.  Only files existing in the current source tree
+or its corresponding location in the binary tree may be listed.  If a
+file specified already has an extension, that extension will be
+removed first.  This is useful for providing lists of source files
+such as foo.cxx when you want the corresponding foo.h to be installed.
+A typical extension is ``.h``.
+
+::
+
+  install_files(<dir> regexp)
+
+Any files in the current source directory that match the regular
+expression will be installed.
+
+::
+
+  install_files(<dir> FILES file file ...)
+
+Any files listed after the ``FILES`` keyword will be installed explicitly
+from the names given.  Full paths are allowed in this form.
+
+The directory ``<dir>`` is relative to the installation prefix, which is
+stored in the variable :variable:`CMAKE_INSTALL_PREFIX`.
diff --git a/share/cmake-3.22/Help/command/install_programs.rst b/share/cmake-3.22/Help/command/install_programs.rst
new file mode 100644
index 0000000..eafae89
--- /dev/null
+++ b/share/cmake-3.22/Help/command/install_programs.rst
@@ -0,0 +1,36 @@
+install_programs
+----------------
+
+.. deprecated:: 3.0
+
+  Use the :command:`install(PROGRAMS)` command instead.
+
+This command has been superseded by the :command:`install` command.  It is
+provided for compatibility with older CMake code.  The ``FILES`` form is
+directly replaced by the ``PROGRAMS`` form of the :command:`install`
+command.  The regexp form can be expressed more clearly using the ``GLOB``
+form of the :command:`file` command.
+
+::
+
+  install_programs(<dir> file1 file2 [file3 ...])
+  install_programs(<dir> FILES file1 [file2 ...])
+
+Create rules to install the listed programs into the given directory.
+Use the ``FILES`` argument to guarantee that the file list version of the
+command will be used even when there is only one argument.
+
+::
+
+  install_programs(<dir> regexp)
+
+In the second form any program in the current source directory that
+matches the regular expression will be installed.
+
+This command is intended to install programs that are not built by
+cmake, such as shell scripts.  See the ``TARGETS`` form of the
+:command:`install` command to create installation rules for targets built
+by cmake.
+
+The directory ``<dir>`` is relative to the installation prefix, which is
+stored in the variable :variable:`CMAKE_INSTALL_PREFIX`.
diff --git a/share/cmake-3.22/Help/command/install_targets.rst b/share/cmake-3.22/Help/command/install_targets.rst
new file mode 100644
index 0000000..9355f8d
--- /dev/null
+++ b/share/cmake-3.22/Help/command/install_targets.rst
@@ -0,0 +1,19 @@
+install_targets
+---------------
+
+.. deprecated:: 3.0
+
+  Use the :command:`install(TARGETS)` command instead.
+
+This command has been superseded by the :command:`install` command.  It is
+provided for compatibility with older CMake code.
+
+::
+
+  install_targets(<dir> [RUNTIME_DIRECTORY dir] target target)
+
+Create rules to install the listed targets into the given directory.
+The directory ``<dir>`` is relative to the installation prefix, which is
+stored in the variable :variable:`CMAKE_INSTALL_PREFIX`.  If
+``RUNTIME_DIRECTORY`` is specified, then on systems with special runtime
+files (Windows DLL), the files will be copied to that directory.
diff --git a/share/cmake-3.22/Help/command/link_directories.rst b/share/cmake-3.22/Help/command/link_directories.rst
new file mode 100644
index 0000000..6732402
--- /dev/null
+++ b/share/cmake-3.22/Help/command/link_directories.rst
@@ -0,0 +1,55 @@
+link_directories
+----------------
+
+Add directories in which the linker will look for libraries.
+
+.. code-block:: cmake
+
+  link_directories([AFTER|BEFORE] directory1 [directory2 ...])
+
+Adds the paths in which the linker should search for libraries.
+Relative paths given to this command are interpreted as relative to
+the current source directory, see :policy:`CMP0015`.
+
+The command will apply only to targets created after it is called.
+
+.. versionadded:: 3.13
+  The directories are added to the :prop_dir:`LINK_DIRECTORIES` directory
+  property for the current ``CMakeLists.txt`` file, converting relative
+  paths to absolute as needed.  See the :manual:`cmake-buildsystem(7)`
+  manual for more on defining buildsystem properties.
+
+.. versionadded:: 3.13
+  By default the directories specified are appended onto the current list of
+  directories.  This default behavior can be changed by setting
+  :variable:`CMAKE_LINK_DIRECTORIES_BEFORE` to ``ON``.  By using
+  ``AFTER`` or ``BEFORE`` explicitly, you can select between appending and
+  prepending, independent of the default.
+
+.. versionadded:: 3.13
+  Arguments to ``link_directories`` may use "generator expressions" with
+  the syntax "$<...>".  See the :manual:`cmake-generator-expressions(7)`
+  manual for available expressions.
+
+.. note::
+
+  This command is rarely necessary and should be avoided where there are
+  other choices.  Prefer to pass full absolute paths to libraries where
+  possible, since this ensures the correct library will always be linked.
+  The :command:`find_library` command provides the full path, which can
+  generally be used directly in calls to :command:`target_link_libraries`.
+  Situations where a library search path may be needed include:
+
+  - Project generators like Xcode where the user can switch target
+    architecture at build time, but a full path to a library cannot
+    be used because it only provides one architecture (i.e. it is not
+    a universal binary).
+  - Libraries may themselves have other private library dependencies
+    that expect to be found via ``RPATH`` mechanisms, but some linkers
+    are not able to fully decode those paths (e.g. due to the presence
+    of things like ``$ORIGIN``).
+
+  If a library search path must be provided, prefer to localize the effect
+  where possible by using the :command:`target_link_directories` command
+  rather than ``link_directories()``.  The target-specific command can also
+  control how the search directories propagate to other dependent targets.
diff --git a/share/cmake-3.18/Help/command/link_libraries.rst b/share/cmake-3.22/Help/command/link_libraries.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/link_libraries.rst
rename to share/cmake-3.22/Help/command/link_libraries.rst
diff --git a/share/cmake-3.22/Help/command/list.rst b/share/cmake-3.22/Help/command/list.rst
new file mode 100644
index 0000000..9b49cb4
--- /dev/null
+++ b/share/cmake-3.22/Help/command/list.rst
@@ -0,0 +1,355 @@
+list
+----
+
+List operations.
+
+Synopsis
+^^^^^^^^
+
+.. parsed-literal::
+
+  `Reading`_
+    list(`LENGTH`_ <list> <out-var>)
+    list(`GET`_ <list> <element index> [<index> ...] <out-var>)
+    list(`JOIN`_ <list> <glue> <out-var>)
+    list(`SUBLIST`_ <list> <begin> <length> <out-var>)
+
+  `Search`_
+    list(`FIND`_ <list> <value> <out-var>)
+
+  `Modification`_
+    list(`APPEND`_ <list> [<element>...])
+    list(`FILTER`_ <list> {INCLUDE | EXCLUDE} REGEX <regex>)
+    list(`INSERT`_ <list> <index> [<element>...])
+    list(`POP_BACK`_ <list> [<out-var>...])
+    list(`POP_FRONT`_ <list> [<out-var>...])
+    list(`PREPEND`_ <list> [<element>...])
+    list(`REMOVE_ITEM`_ <list> <value>...)
+    list(`REMOVE_AT`_ <list> <index>...)
+    list(`REMOVE_DUPLICATES`_ <list>)
+    list(`TRANSFORM`_ <list> <ACTION> [...])
+
+  `Ordering`_
+    list(`REVERSE`_ <list>)
+    list(`SORT`_ <list> [...])
+
+Introduction
+^^^^^^^^^^^^
+
+The list subcommands ``APPEND``, ``INSERT``, ``FILTER``, ``PREPEND``,
+``POP_BACK``, ``POP_FRONT``, ``REMOVE_AT``, ``REMOVE_ITEM``,
+``REMOVE_DUPLICATES``, ``REVERSE`` and ``SORT`` may create
+new values for the list within the current CMake variable scope.  Similar to
+the :command:`set` command, the LIST command creates new variable values in
+the current scope, even if the list itself is actually defined in a parent
+scope.  To propagate the results of these operations upwards, use
+:command:`set` with ``PARENT_SCOPE``, :command:`set` with
+``CACHE INTERNAL``, or some other means of value propagation.
+
+.. note::
+
+  A list in cmake is a ``;`` separated group of strings.  To create a
+  list the set command can be used.  For example, ``set(var a b c d e)``
+  creates a list with ``a;b;c;d;e``, and ``set(var "a b c d e")`` creates a
+  string or a list with one item in it.   (Note macro arguments are not
+  variables, and therefore cannot be used in LIST commands.)
+
+.. note::
+
+  When specifying index values, if ``<element index>`` is 0 or greater, it
+  is indexed from the beginning of the list, with 0 representing the
+  first list element.  If ``<element index>`` is -1 or lesser, it is indexed
+  from the end of the list, with -1 representing the last list element.
+  Be careful when counting with negative indices: they do not start from
+  0.  -0 is equivalent to 0, the first list element.
+
+Reading
+^^^^^^^
+
+.. _LENGTH:
+
+.. code-block:: cmake
+
+  list(LENGTH <list> <output variable>)
+
+Returns the list's length.
+
+.. _GET:
+
+.. code-block:: cmake
+
+  list(GET <list> <element index> [<element index> ...] <output variable>)
+
+Returns the list of elements specified by indices from the list.
+
+.. _JOIN:
+
+.. code-block:: cmake
+
+  list(JOIN <list> <glue> <output variable>)
+
+.. versionadded:: 3.12
+
+Returns a string joining all list's elements using the glue string.
+To join multiple strings, which are not part of a list, use ``JOIN`` operator
+from :command:`string` command.
+
+.. _SUBLIST:
+
+.. code-block:: cmake
+
+  list(SUBLIST <list> <begin> <length> <output variable>)
+
+.. versionadded:: 3.12
+
+Returns a sublist of the given list.
+If ``<length>`` is 0, an empty list will be returned.
+If ``<length>`` is -1 or the list is smaller than ``<begin>+<length>`` then
+the remaining elements of the list starting at ``<begin>`` will be returned.
+
+Search
+^^^^^^
+
+.. _FIND:
+
+.. code-block:: cmake
+
+  list(FIND <list> <value> <output variable>)
+
+Returns the index of the element specified in the list or -1
+if it wasn't found.
+
+Modification
+^^^^^^^^^^^^
+
+.. _APPEND:
+
+.. code-block:: cmake
+
+  list(APPEND <list> [<element> ...])
+
+Appends elements to the list.
+
+.. _FILTER:
+
+.. code-block:: cmake
+
+  list(FILTER <list> <INCLUDE|EXCLUDE> REGEX <regular_expression>)
+
+.. versionadded:: 3.6
+
+Includes or removes items from the list that match the mode's pattern.
+In ``REGEX`` mode, items will be matched against the given regular expression.
+
+For more information on regular expressions look under
+:ref:`string(REGEX) <Regex Specification>`.
+
+.. _INSERT:
+
+.. code-block:: cmake
+
+  list(INSERT <list> <element_index> <element> [<element> ...])
+
+Inserts elements to the list to the specified location.
+
+.. _POP_BACK:
+
+.. code-block:: cmake
+
+  list(POP_BACK <list> [<out-var>...])
+
+.. versionadded:: 3.15
+
+If no variable name is given, removes exactly one element. Otherwise,
+with `N` variable names provided, assign the last `N` elements' values
+to the given variables and then remove the last `N` values from
+``<list>``.
+
+.. _POP_FRONT:
+
+.. code-block:: cmake
+
+  list(POP_FRONT <list> [<out-var>...])
+
+.. versionadded:: 3.15
+
+If no variable name is given, removes exactly one element. Otherwise,
+with `N` variable names provided, assign the first `N` elements' values
+to the given variables and then remove the first `N` values from
+``<list>``.
+
+.. _PREPEND:
+
+.. code-block:: cmake
+
+  list(PREPEND <list> [<element> ...])
+
+.. versionadded:: 3.15
+
+Insert elements to the 0th position in the list.
+
+.. _REMOVE_ITEM:
+
+.. code-block:: cmake
+
+  list(REMOVE_ITEM <list> <value> [<value> ...])
+
+Removes all instances of the given items from the list.
+
+.. _REMOVE_AT:
+
+.. code-block:: cmake
+
+  list(REMOVE_AT <list> <index> [<index> ...])
+
+Removes items at given indices from the list.
+
+.. _REMOVE_DUPLICATES:
+
+.. code-block:: cmake
+
+  list(REMOVE_DUPLICATES <list>)
+
+Removes duplicated items in the list. The relative order of items is preserved,
+but if duplicates are encountered, only the first instance is preserved.
+
+.. _TRANSFORM:
+
+.. code-block:: cmake
+
+  list(TRANSFORM <list> <ACTION> [<SELECTOR>]
+                        [OUTPUT_VARIABLE <output variable>])
+
+.. versionadded:: 3.12
+
+Transforms the list by applying an action to all or, by specifying a
+``<SELECTOR>``, to the selected elements of the list, storing the result
+in-place or in the specified output variable.
+
+.. note::
+
+   The ``TRANSFORM`` sub-command does not change the number of elements in the
+   list. If a ``<SELECTOR>`` is specified, only some elements will be changed,
+   the other ones will remain the same as before the transformation.
+
+``<ACTION>`` specifies the action to apply to the elements of the list.
+The actions have exactly the same semantics as sub-commands of the
+:command:`string` command.  ``<ACTION>`` must be one of the following:
+
+``APPEND``, ``PREPEND``: Append, prepend specified value to each element of
+the list.
+
+  .. code-block:: cmake
+
+    list(TRANSFORM <list> <APPEND|PREPEND> <value> ...)
+
+``TOUPPER``, ``TOLOWER``: Convert each element of the list to upper, lower
+characters.
+
+  .. code-block:: cmake
+
+    list(TRANSFORM <list> <TOLOWER|TOUPPER> ...)
+
+``STRIP``: Remove leading and trailing spaces from each element of the
+list.
+
+  .. code-block:: cmake
+
+    list(TRANSFORM <list> STRIP ...)
+
+``GENEX_STRIP``: Strip any
+:manual:`generator expressions <cmake-generator-expressions(7)>` from each
+element of the list.
+
+  .. code-block:: cmake
+
+    list(TRANSFORM <list> GENEX_STRIP ...)
+
+``REPLACE``: Match the regular expression as many times as possible and
+substitute the replacement expression for the match for each element
+of the list
+(Same semantic as ``REGEX REPLACE`` from :command:`string` command).
+
+  .. code-block:: cmake
+
+    list(TRANSFORM <list> REPLACE <regular_expression>
+                                  <replace_expression> ...)
+
+``<SELECTOR>`` determines which elements of the list will be transformed.
+Only one type of selector can be specified at a time.  When given,
+``<SELECTOR>`` must be one of the following:
+
+``AT``: Specify a list of indexes.
+
+  .. code-block:: cmake
+
+    list(TRANSFORM <list> <ACTION> AT <index> [<index> ...] ...)
+
+``FOR``: Specify a range with, optionally, an increment used to iterate over
+the range.
+
+  .. code-block:: cmake
+
+    list(TRANSFORM <list> <ACTION> FOR <start> <stop> [<step>] ...)
+
+``REGEX``: Specify a regular expression. Only elements matching the regular
+expression will be transformed.
+
+  .. code-block:: cmake
+
+    list(TRANSFORM <list> <ACTION> REGEX <regular_expression> ...)
+
+
+Ordering
+^^^^^^^^
+
+.. _REVERSE:
+
+.. code-block:: cmake
+
+  list(REVERSE <list>)
+
+Reverses the contents of the list in-place.
+
+.. _SORT:
+
+.. code-block:: cmake
+
+  list(SORT <list> [COMPARE <compare>] [CASE <case>] [ORDER <order>])
+
+Sorts the list in-place alphabetically.
+
+.. versionadded:: 3.13
+  Added the ``COMPARE``, ``CASE``, and ``ORDER`` options.
+
+.. versionadded:: 3.18
+  Added the ``COMPARE NATURAL`` option.
+
+Use the ``COMPARE`` keyword to select the comparison method for sorting.
+The ``<compare>`` option should be one of:
+
+* ``STRING``: Sorts a list of strings alphabetically.  This is the
+  default behavior if the ``COMPARE`` option is not given.
+* ``FILE_BASENAME``: Sorts a list of pathnames of files by their basenames.
+* ``NATURAL``: Sorts a list of strings using natural order
+  (see ``strverscmp(3)`` manual), i.e. such that contiguous digits
+  are compared as whole numbers.
+  For example: the following list `10.0 1.1 2.1 8.0 2.0 3.1`
+  will be sorted as `1.1 2.0 2.1 3.1 8.0 10.0` if the ``NATURAL``
+  comparison is selected where it will be sorted as
+  `1.1 10.0 2.0 2.1 3.1 8.0` with the ``STRING`` comparison.
+
+Use the ``CASE`` keyword to select a case sensitive or case insensitive
+sort mode.  The ``<case>`` option should be one of:
+
+* ``SENSITIVE``: List items are sorted in a case-sensitive manner.  This is
+  the default behavior if the ``CASE`` option is not given.
+* ``INSENSITIVE``: List items are sorted case insensitively.  The order of
+  items which differ only by upper/lowercase is not specified.
+
+To control the sort order, the ``ORDER`` keyword can be given.
+The ``<order>`` option should be one of:
+
+* ``ASCENDING``: Sorts the list in ascending order.  This is the default
+  behavior when the ``ORDER`` option is not given.
+* ``DESCENDING``: Sorts the list in descending order.
diff --git a/share/cmake-3.18/Help/command/load_cache.rst b/share/cmake-3.22/Help/command/load_cache.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/load_cache.rst
rename to share/cmake-3.22/Help/command/load_cache.rst
diff --git a/share/cmake-3.18/Help/command/load_command.rst b/share/cmake-3.22/Help/command/load_command.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/load_command.rst
rename to share/cmake-3.22/Help/command/load_command.rst
diff --git a/share/cmake-3.22/Help/command/macro.rst b/share/cmake-3.22/Help/command/macro.rst
new file mode 100644
index 0000000..5fe4c00
--- /dev/null
+++ b/share/cmake-3.22/Help/command/macro.rst
@@ -0,0 +1,151 @@
+macro
+-----
+
+Start recording a macro for later invocation as a command
+
+.. code-block:: cmake
+
+  macro(<name> [<arg1> ...])
+    <commands>
+  endmacro()
+
+Defines a macro named ``<name>`` that takes arguments named
+``<arg1>``, ... Commands listed after macro, but before the
+matching :command:`endmacro()`, are not executed until the macro
+is invoked.
+
+Per legacy, the :command:`endmacro` command admits an optional
+``<name>`` argument. If used, it must be a verbatim repeat of the
+argument of the opening ``macro`` command.
+
+See the :command:`cmake_policy()` command documentation for the behavior
+of policies inside macros.
+
+See the :ref:`Macro vs Function` section below for differences
+between CMake macros and :command:`functions <function>`.
+
+Invocation
+^^^^^^^^^^
+
+The macro invocation is case-insensitive. A macro defined as
+
+.. code-block:: cmake
+
+  macro(foo)
+    <commands>
+  endmacro()
+
+can be invoked through any of
+
+.. code-block:: cmake
+
+  foo()
+  Foo()
+  FOO()
+  cmake_language(CALL foo)
+
+and so on. However, it is strongly recommended to stay with the
+case chosen in the macro definition.  Typically macros use
+all-lowercase names.
+
+.. versionadded:: 3.18
+  The :command:`cmake_language(CALL ...)` command can also be used to
+  invoke the macro.
+
+Arguments
+^^^^^^^^^
+
+When a macro is invoked, the commands recorded in the macro are
+first modified by replacing formal parameters (``${arg1}``, ...)
+with the arguments passed, and then invoked as normal commands.
+
+In addition to referencing the formal parameters you can reference the
+values ``${ARGC}`` which will be set to the number of arguments passed
+into the function as well as ``${ARGV0}``, ``${ARGV1}``, ``${ARGV2}``,
+...  which will have the actual values of the arguments passed in.
+This facilitates creating macros with optional arguments.
+
+Furthermore, ``${ARGV}`` holds the list of all arguments given to the
+macro and ``${ARGN}`` holds the list of arguments past the last expected
+argument.
+Referencing to ``${ARGV#}`` arguments beyond ``${ARGC}`` have undefined
+behavior. Checking that ``${ARGC}`` is greater than ``#`` is the only
+way to ensure that ``${ARGV#}`` was passed to the function as an extra
+argument.
+
+.. _`Macro vs Function`:
+
+Macro vs Function
+^^^^^^^^^^^^^^^^^
+
+The ``macro`` command is very similar to the :command:`function` command.
+Nonetheless, there are a few important differences.
+
+In a function, ``ARGN``, ``ARGC``, ``ARGV`` and ``ARGV0``, ``ARGV1``, ...
+are true variables in the usual CMake sense.  In a macro, they are not,
+they are string replacements much like the C preprocessor would do
+with a macro.  This has a number of consequences, as explained in
+the :ref:`Argument Caveats` section below.
+
+Another difference between macros and functions is the control flow.
+A function is executed by transferring control from the calling
+statement to the function body.  A macro is executed as if the macro
+body were pasted in place of the calling statement.  This has the
+consequence that a :command:`return()` in a macro body does not
+just terminate execution of the macro; rather, control is returned
+from the scope of the macro call.  To avoid confusion, it is recommended
+to avoid :command:`return()` in macros altogether.
+
+Unlike a function, the :variable:`CMAKE_CURRENT_FUNCTION`,
+:variable:`CMAKE_CURRENT_FUNCTION_LIST_DIR`,
+:variable:`CMAKE_CURRENT_FUNCTION_LIST_FILE`,
+:variable:`CMAKE_CURRENT_FUNCTION_LIST_LINE` variables are not
+set for a macro.
+
+.. _`Argument Caveats`:
+
+Argument Caveats
+^^^^^^^^^^^^^^^^
+
+Since ``ARGN``, ``ARGC``, ``ARGV``, ``ARGV0`` etc. are not variables,
+you will NOT be able to use commands like
+
+.. code-block:: cmake
+
+ if(ARGV1) # ARGV1 is not a variable
+ if(DEFINED ARGV2) # ARGV2 is not a variable
+ if(ARGC GREATER 2) # ARGC is not a variable
+ foreach(loop_var IN LISTS ARGN) # ARGN is not a variable
+
+In the first case, you can use ``if(${ARGV1})``.  In the second and
+third case, the proper way to check if an optional variable was
+passed to the macro is to use ``if(${ARGC} GREATER 2)``.  In the
+last case, you can use ``foreach(loop_var ${ARGN})`` but this will
+skip empty arguments.  If you need to include them, you can use
+
+.. code-block:: cmake
+
+ set(list_var "${ARGN}")
+ foreach(loop_var IN LISTS list_var)
+
+Note that if you have a variable with the same name in the scope from
+which the macro is called, using unreferenced names will use the
+existing variable instead of the arguments. For example:
+
+.. code-block:: cmake
+
+ macro(bar)
+   foreach(arg IN LISTS ARGN)
+     <commands>
+   endforeach()
+ endmacro()
+
+ function(foo)
+   bar(x y z)
+ endfunction()
+
+ foo(a b c)
+
+Will loop over ``a;b;c`` and not over ``x;y;z`` as one might have expected.
+If you want true CMake variables and/or better CMake scope control you
+should look at the function command.
diff --git a/share/cmake-3.18/Help/command/make_directory.rst b/share/cmake-3.22/Help/command/make_directory.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/make_directory.rst
rename to share/cmake-3.22/Help/command/make_directory.rst
diff --git a/share/cmake-3.22/Help/command/mark_as_advanced.rst b/share/cmake-3.22/Help/command/mark_as_advanced.rst
new file mode 100644
index 0000000..201363f
--- /dev/null
+++ b/share/cmake-3.22/Help/command/mark_as_advanced.rst
@@ -0,0 +1,28 @@
+mark_as_advanced
+----------------
+
+Mark cmake cached variables as advanced.
+
+.. code-block:: cmake
+
+  mark_as_advanced([CLEAR|FORCE] <var1> ...)
+
+Sets the advanced/non-advanced state of the named
+cached variables.
+
+An advanced variable will not be displayed in any
+of the cmake GUIs unless the ``show advanced`` option is on.
+In script mode, the advanced/non-advanced state has no effect.
+
+If the keyword ``CLEAR`` is given
+then advanced variables are changed back to unadvanced.
+If the keyword ``FORCE`` is given
+then the variables are made advanced.
+If neither ``FORCE`` nor ``CLEAR`` is specified,
+new values will be marked as advanced, but if a
+variable already has an advanced/non-advanced state,
+it will not be changed.
+
+.. versionchanged:: 3.17
+  Variables passed to this command which are not already in the cache
+  are ignored. See policy :policy:`CMP0102`.
diff --git a/share/cmake-3.22/Help/command/math.rst b/share/cmake-3.22/Help/command/math.rst
new file mode 100644
index 0000000..8386aab
--- /dev/null
+++ b/share/cmake-3.22/Help/command/math.rst
@@ -0,0 +1,38 @@
+math
+----
+
+Evaluate a mathematical expression.
+
+.. code-block:: cmake
+
+  math(EXPR <variable> "<expression>" [OUTPUT_FORMAT <format>])
+
+Evaluates a mathematical ``<expression>`` and sets ``<variable>`` to the
+resulting value.  The result of the expression must be representable as a
+64-bit signed integer.
+
+The mathematical expression must be given as a string (i.e. enclosed in
+double quotation marks). An example is ``"5 * (10 + 13)"``.
+Supported operators are ``+``, ``-``, ``*``, ``/``, ``%``, ``|``, ``&``,
+``^``, ``~``, ``<<``, ``>>``, and ``(...)``; they have the same meaning
+as in C code.
+
+.. versionadded:: 3.13
+  Hexadecimal numbers are recognized when prefixed with ``0x``, as in C code.
+
+.. versionadded:: 3.13
+  The result is formatted according to the option ``OUTPUT_FORMAT``,
+  where ``<format>`` is one of
+
+  ``HEXADECIMAL``
+    Hexadecimal notation as in C code, i. e. starting with "0x".
+  ``DECIMAL``
+    Decimal notation. Which is also used if no ``OUTPUT_FORMAT`` option
+    is specified.
+
+For example
+
+.. code-block:: cmake
+
+  math(EXPR value "100 * 0xA" OUTPUT_FORMAT DECIMAL)      # value is set to "1000"
+  math(EXPR value "100 * 0xA" OUTPUT_FORMAT HEXADECIMAL)  # value is set to "0x3e8"
diff --git a/share/cmake-3.22/Help/command/message.rst b/share/cmake-3.22/Help/command/message.rst
new file mode 100644
index 0000000..e44803e
--- /dev/null
+++ b/share/cmake-3.22/Help/command/message.rst
@@ -0,0 +1,191 @@
+message
+-------
+
+Log a message.
+
+Synopsis
+^^^^^^^^
+
+.. parsed-literal::
+
+  `General messages`_
+    message([<mode>] "message text" ...)
+
+  `Reporting checks`_
+    message(<checkState> "message text" ...)
+
+
+General messages
+^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  message([<mode>] "message text" ...)
+
+Record the specified message text in the log.  If more than one message
+string is given, they are concatenated into a single message with no
+separator between the strings.
+
+The optional ``<mode>`` keyword determines the type of message, which
+influences the way the message is handled:
+
+``FATAL_ERROR``
+  CMake Error, stop processing and generation.
+
+``SEND_ERROR``
+  CMake Error, continue processing, but skip generation.
+
+``WARNING``
+  CMake Warning, continue processing.
+
+``AUTHOR_WARNING``
+  CMake Warning (dev), continue processing.
+
+``DEPRECATION``
+  CMake Deprecation Error or Warning if variable
+  :variable:`CMAKE_ERROR_DEPRECATED` or :variable:`CMAKE_WARN_DEPRECATED`
+  is enabled, respectively, else no message.
+
+(none) or ``NOTICE``
+  Important message printed to stderr to attract user's attention.
+
+``STATUS``
+  The main interesting messages that project users might be interested in.
+  Ideally these should be concise, no more than a single line, but still
+  informative.
+
+``VERBOSE``
+  Detailed informational messages intended for project users.  These messages
+  should provide additional details that won't be of interest in most cases,
+  but which may be useful to those building the project when they want deeper
+  insight into what's happening.
+
+``DEBUG``
+  Detailed informational messages intended for developers working on the
+  project itself as opposed to users who just want to build it.  These messages
+  will not typically be of interest to other users building the project and
+  will often be closely related to internal implementation details.
+
+``TRACE``
+  Fine-grained messages with very low-level implementation details.  Messages
+  using this log level would normally only be temporary and would expect to be
+  removed before releasing the project, packaging up the files, etc.
+
+.. versionadded:: 3.15
+  Added the ``NOTICE``, ``VERBOSE``, ``DEBUG``, and ``TRACE`` levels.
+
+The CMake command-line tool displays ``STATUS`` to ``TRACE`` messages on stdout
+with the message preceded by two hyphens and a space.  All other message types
+are sent to stderr and are not prefixed with hyphens.  The
+:manual:`CMake GUI <cmake-gui(1)>` displays all messages in its log area.
+The :manual:`curses interface <ccmake(1)>` shows ``STATUS`` to ``TRACE``
+messages one at a time on a status line and other messages in an
+interactive pop-up box.  The ``--log-level`` command-line option to each of
+these tools can be used to control which messages will be shown.
+
+.. versionadded:: 3.17
+  To make a log level persist between CMake runs, the
+  :variable:`CMAKE_MESSAGE_LOG_LEVEL` variable can be set instead.
+  Note that the command line option takes precedence over the cache variable.
+
+.. versionadded:: 3.16
+  Messages of log levels ``NOTICE`` and below will have each line preceded
+  by the content of the :variable:`CMAKE_MESSAGE_INDENT` variable (converted to
+  a single string by concatenating its list items).  For ``STATUS`` to ``TRACE``
+  messages, this indenting content will be inserted after the hyphens.
+
+.. versionadded:: 3.17
+  Messages of log levels ``NOTICE`` and below can also have each line preceded
+  with context of the form ``[some.context.example]``.  The content between the
+  square brackets is obtained by converting the :variable:`CMAKE_MESSAGE_CONTEXT`
+  list variable to a dot-separated string.  The message context will always
+  appear before any indenting content but after any automatically added leading
+  hyphens. By default, message context is not shown, it has to be explicitly
+  enabled by giving the :manual:`cmake <cmake(1)>` ``--log-context``
+  command-line option or by setting the :variable:`CMAKE_MESSAGE_CONTEXT_SHOW`
+  variable to true.  See the :variable:`CMAKE_MESSAGE_CONTEXT` documentation for
+  usage examples.
+
+CMake Warning and Error message text displays using a simple markup
+language.  Non-indented text is formatted in line-wrapped paragraphs
+delimited by newlines.  Indented text is considered pre-formatted.
+
+
+Reporting checks
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.17
+
+A common pattern in CMake output is a message indicating the start of some
+sort of check, followed by another message reporting the result of that check.
+For example:
+
+.. code-block:: cmake
+
+  message(STATUS "Looking for someheader.h")
+  #... do the checks, set checkSuccess with the result
+  if(checkSuccess)
+    message(STATUS "Looking for someheader.h - found")
+  else()
+    message(STATUS "Looking for someheader.h - not found")
+  endif()
+
+This can be more robustly and conveniently expressed using the ``CHECK_...``
+keyword form of the ``message()`` command:
+
+.. code-block:: cmake
+
+  message(<checkState> "message" ...)
+
+where ``<checkState>`` must be one of the following:
+
+  ``CHECK_START``
+    Record a concise message about the check about to be performed.
+
+  ``CHECK_PASS``
+    Record a successful result for a check.
+
+  ``CHECK_FAIL``
+    Record an unsuccessful result for a check.
+
+When recording a check result, the command repeats the message from the most
+recently started check for which no result has yet been reported, then some
+separator characters and then the message text provided after the
+``CHECK_PASS`` or ``CHECK_FAIL`` keyword.  Check messages are always reported
+at ``STATUS`` log level.
+
+Checks may be nested and every ``CHECK_START`` should have exactly one
+matching ``CHECK_PASS`` or ``CHECK_FAIL``.
+The :variable:`CMAKE_MESSAGE_INDENT` variable can also be used to add
+indenting to nested checks if desired.  For example:
+
+.. code-block:: cmake
+
+  message(CHECK_START "Finding my things")
+  list(APPEND CMAKE_MESSAGE_INDENT "  ")
+  unset(missingComponents)
+
+  message(CHECK_START "Finding partA")
+  # ... do check, assume we find A
+  message(CHECK_PASS "found")
+
+  message(CHECK_START "Finding partB")
+  # ... do check, assume we don't find B
+  list(APPEND missingComponents B)
+  message(CHECK_FAIL "not found")
+
+  list(POP_BACK CMAKE_MESSAGE_INDENT)
+  if(missingComponents)
+    message(CHECK_FAIL "missing components: ${missingComponents}")
+  else()
+    message(CHECK_PASS "all components found")
+  endif()
+
+Output from the above would appear something like the following::
+
+  -- Finding my things
+  --   Finding partA
+  --   Finding partA - found
+  --   Finding partB
+  --   Finding partB - not found
+  -- Finding my things - missing components: B
diff --git a/share/cmake-3.18/Help/command/option.rst b/share/cmake-3.22/Help/command/option.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/option.rst
rename to share/cmake-3.22/Help/command/option.rst
diff --git a/share/cmake-3.18/Help/command/output_required_files.rst b/share/cmake-3.22/Help/command/output_required_files.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/output_required_files.rst
rename to share/cmake-3.22/Help/command/output_required_files.rst
diff --git a/share/cmake-3.22/Help/command/project.rst b/share/cmake-3.22/Help/command/project.rst
new file mode 100644
index 0000000..2a9dcfe
--- /dev/null
+++ b/share/cmake-3.22/Help/command/project.rst
@@ -0,0 +1,164 @@
+project
+-------
+
+Set the name of the project.
+
+Synopsis
+^^^^^^^^
+
+.. code-block:: cmake
+
+ project(<PROJECT-NAME> [<language-name>...])
+ project(<PROJECT-NAME>
+         [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
+         [DESCRIPTION <project-description-string>]
+         [HOMEPAGE_URL <url-string>]
+         [LANGUAGES <language-name>...])
+
+Sets the name of the project, and stores it in the variable
+:variable:`PROJECT_NAME`. When called from the top-level
+``CMakeLists.txt`` also stores the project name in the
+variable :variable:`CMAKE_PROJECT_NAME`.
+
+Also sets the variables:
+
+:variable:`PROJECT_SOURCE_DIR`, :variable:`<PROJECT-NAME>_SOURCE_DIR`
+  Absolute path to the source directory for the project.
+
+:variable:`PROJECT_BINARY_DIR`, :variable:`<PROJECT-NAME>_BINARY_DIR`
+  Absolute path to the binary directory for the project.
+
+:variable:`PROJECT_IS_TOP_LEVEL`, :variable:`<PROJECT-NAME>_IS_TOP_LEVEL`
+  .. versionadded:: 3.21
+
+  Boolean value indicating whether the project is top-level.
+
+Further variables are set by the optional arguments described in the following.
+If any of these arguments is not used, then the corresponding variables are
+set to the empty string.
+
+Options
+^^^^^^^
+
+The options are:
+
+``VERSION <version>``
+  Optional; may not be used unless policy :policy:`CMP0048` is
+  set to ``NEW``.
+
+  Takes a ``<version>`` argument composed of non-negative integer components,
+  i.e. ``<major>[.<minor>[.<patch>[.<tweak>]]]``,
+  and sets the variables
+
+  * :variable:`PROJECT_VERSION`,
+    :variable:`<PROJECT-NAME>_VERSION`
+  * :variable:`PROJECT_VERSION_MAJOR`,
+    :variable:`<PROJECT-NAME>_VERSION_MAJOR`
+  * :variable:`PROJECT_VERSION_MINOR`,
+    :variable:`<PROJECT-NAME>_VERSION_MINOR`
+  * :variable:`PROJECT_VERSION_PATCH`,
+    :variable:`<PROJECT-NAME>_VERSION_PATCH`
+  * :variable:`PROJECT_VERSION_TWEAK`,
+    :variable:`<PROJECT-NAME>_VERSION_TWEAK`.
+
+  .. versionadded:: 3.12
+    When the ``project()`` command is called from the top-level
+    ``CMakeLists.txt``, then the version is also stored in the variable
+    :variable:`CMAKE_PROJECT_VERSION`.
+
+``DESCRIPTION <project-description-string>``
+  .. versionadded:: 3.9
+
+  Optional.
+  Sets the variables
+
+  * :variable:`PROJECT_DESCRIPTION`, :variable:`<PROJECT-NAME>_DESCRIPTION`
+
+  to ``<project-description-string>``.
+  It is recommended that this description is a relatively short string,
+  usually no more than a few words.
+
+  When the ``project()`` command is called from the top-level ``CMakeLists.txt``,
+  then the description is also stored in the variable :variable:`CMAKE_PROJECT_DESCRIPTION`.
+
+  .. versionadded:: 3.12
+    Added the ``<PROJECT-NAME>_DESCRIPTION`` variable.
+
+``HOMEPAGE_URL <url-string>``
+  .. versionadded:: 3.12
+
+  Optional.
+  Sets the variables
+
+  * :variable:`PROJECT_HOMEPAGE_URL`, :variable:`<PROJECT-NAME>_HOMEPAGE_URL`
+
+  to ``<url-string>``, which should be the canonical home URL for the project.
+
+  When the ``project()`` command is called from the top-level ``CMakeLists.txt``,
+  then the URL also is stored in the variable :variable:`CMAKE_PROJECT_HOMEPAGE_URL`.
+
+``LANGUAGES <language-name>...``
+  Optional.
+  Can also be specified without ``LANGUAGES`` keyword per the first, short signature.
+
+  Selects which programming languages are needed to build the project.
+  Supported languages include ``C``, ``CXX`` (i.e.  C++), ``CUDA``,
+  ``OBJC`` (i.e. Objective-C), ``OBJCXX``, ``Fortran``, ``HIP``, ``ISPC``, and ``ASM``.
+  By default ``C`` and ``CXX`` are enabled if no language options are given.
+  Specify language ``NONE``, or use the ``LANGUAGES`` keyword and list no languages,
+  to skip enabling any languages.
+
+  .. versionadded:: 3.8
+    Added ``CUDA`` support.
+
+  .. versionadded:: 3.16
+    Added ``OBJC`` and ``OBJCXX`` support.
+
+  .. versionadded:: 3.18
+    Added ``ISPC`` support.
+
+  If enabling ``ASM``, list it last so that CMake can check whether
+  compilers for other languages like ``C`` work for assembly too.
+
+The variables set through the ``VERSION``, ``DESCRIPTION`` and ``HOMEPAGE_URL``
+options are intended for use as default values in package metadata and documentation.
+
+Code Injection
+^^^^^^^^^^^^^^
+
+If the :variable:`CMAKE_PROJECT_INCLUDE_BEFORE` or
+:variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE` variables are set,
+the files they point to will be included as the first step of the
+``project()`` command.
+If both are set, then :variable:`CMAKE_PROJECT_INCLUDE_BEFORE` will be
+included before :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE`.
+
+If the :variable:`CMAKE_PROJECT_INCLUDE` or
+:variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE` variables are set, the files
+they point to will be included as the last step of the ``project()`` command.
+If both are set, then :variable:`CMAKE_PROJECT_INCLUDE` will be included before
+:variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE`.
+
+.. versionadded:: 3.15
+  Added the ``CMAKE_PROJECT_INCLUDE`` and ``CMAKE_PROJECT_INCLUDE_BEFORE``
+  variables.
+
+.. versionadded:: 3.17
+  Added the ``CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE`` variable.
+
+Usage
+^^^^^
+
+The top-level ``CMakeLists.txt`` file for a project must contain a
+literal, direct call to the ``project()`` command; loading one
+through the :command:`include` command is not sufficient.  If no such
+call exists, CMake will issue a warning and pretend there is a
+``project(Project)`` at the top to enable the default languages
+(``C`` and ``CXX``).
+
+.. note::
+  Call the ``project()`` command near the top of the top-level
+  ``CMakeLists.txt``, but *after* calling :command:`cmake_minimum_required`.
+  It is important to establish version and policy settings before invoking
+  other commands whose behavior they may affect.
+  See also policy :policy:`CMP0000`.
diff --git a/share/cmake-3.18/Help/command/qt_wrap_cpp.rst b/share/cmake-3.22/Help/command/qt_wrap_cpp.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/qt_wrap_cpp.rst
rename to share/cmake-3.22/Help/command/qt_wrap_cpp.rst
diff --git a/share/cmake-3.18/Help/command/qt_wrap_ui.rst b/share/cmake-3.22/Help/command/qt_wrap_ui.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/qt_wrap_ui.rst
rename to share/cmake-3.22/Help/command/qt_wrap_ui.rst
diff --git a/share/cmake-3.18/Help/command/remove.rst b/share/cmake-3.22/Help/command/remove.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/remove.rst
rename to share/cmake-3.22/Help/command/remove.rst
diff --git a/share/cmake-3.18/Help/command/remove_definitions.rst b/share/cmake-3.22/Help/command/remove_definitions.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/remove_definitions.rst
rename to share/cmake-3.22/Help/command/remove_definitions.rst
diff --git a/share/cmake-3.22/Help/command/return.rst b/share/cmake-3.22/Help/command/return.rst
new file mode 100644
index 0000000..ec009d8
--- /dev/null
+++ b/share/cmake-3.22/Help/command/return.rst
@@ -0,0 +1,20 @@
+return
+------
+
+Return from a file, directory or function.
+
+.. code-block:: cmake
+
+  return()
+
+Returns from a file, directory or function.  When this command is
+encountered in an included file (via :command:`include` or
+:command:`find_package`), it causes processing of the current file to stop
+and control is returned to the including file.  If it is encountered in a
+file which is not included by another file, e.g.  a ``CMakeLists.txt``,
+deferred calls scheduled by :command:`cmake_language(DEFER)` are invoked and
+control is returned to the parent directory if there is one.  If return is
+called in a function, control is returned to the caller of the function.
+
+Note that a :command:`macro <macro>`, unlike a :command:`function <function>`,
+is expanded in place and therefore cannot handle ``return()``.
diff --git a/share/cmake-3.22/Help/command/separate_arguments.rst b/share/cmake-3.22/Help/command/separate_arguments.rst
new file mode 100644
index 0000000..f66af35
--- /dev/null
+++ b/share/cmake-3.22/Help/command/separate_arguments.rst
@@ -0,0 +1,80 @@
+separate_arguments
+------------------
+
+Parse command-line arguments into a semicolon-separated list.
+
+.. code-block:: cmake
+
+  separate_arguments(<variable> <mode> [PROGRAM [SEPARATE_ARGS]] <args>)
+
+Parses a space-separated string ``<args>`` into a list of items,
+and stores this list in semicolon-separated standard form in ``<variable>``.
+
+This function is intended for parsing command-line arguments.
+The entire command line must be passed as one string in the
+argument ``<args>``.
+
+The exact parsing rules depend on the operating system.
+They are specified by the ``<mode>`` argument which must
+be one of the following keywords:
+
+``UNIX_COMMAND``
+  Arguments are separated by unquoted whitespace.
+  Both single-quote and double-quote pairs are respected.
+  A backslash escapes the next literal character (``\"`` is ``"``);
+  there are no special escapes (``\n`` is just ``n``).
+
+``WINDOWS_COMMAND``
+  A Windows command-line is parsed using the same
+  syntax the runtime library uses to construct argv at startup.  It
+  separates arguments by whitespace that is not double-quoted.
+  Backslashes are literal unless they precede double-quotes.  See the
+  MSDN article `Parsing C Command-Line Arguments`_ for details.
+
+``NATIVE_COMMAND``
+  .. versionadded:: 3.9
+
+  Proceeds as in ``WINDOWS_COMMAND`` mode if the host system is Windows.
+  Otherwise proceeds as in ``UNIX_COMMAND`` mode.
+
+``PROGRAM``
+  .. versionadded:: 3.19
+
+  The first item in ``<args>`` is assumed to be an executable and will be
+  searched in the system search path or left as a full path. If not found,
+  ``<variable>`` will be empty. Otherwise, ``<variable>`` is a list of 2
+  elements:
+
+    0. Absolute path of the program
+    1. Any command-line arguments present in ``<args>`` as a string
+
+  For example:
+
+  .. code-block:: cmake
+
+    separate_arguments (out UNIX_COMMAND PROGRAM "cc -c main.c")
+
+  * First element of the list: ``/path/to/cc``
+  * Second element of the list: ``" -c main.c"``
+
+``SEPARATE_ARGS``
+  When this sub-option of ``PROGRAM`` option is specified, command-line
+  arguments will be split as well and stored in ``<variable>``.
+
+  For example:
+
+  .. code-block:: cmake
+
+    separate_arguments (out UNIX_COMMAND PROGRAM SEPARATE_ARGS "cc -c main.c")
+
+  The contents of ``out`` will be: ``/path/to/cc;-c;main.c``
+
+.. _`Parsing C Command-Line Arguments`: https://msdn.microsoft.com/library/a1y7w461.aspx
+
+.. code-block:: cmake
+
+  separate_arguments(<var>)
+
+Convert the value of ``<var>`` to a semi-colon separated list.  All
+spaces are replaced with ';'.  This helps with generating command
+lines.
diff --git a/share/cmake-3.22/Help/command/set.rst b/share/cmake-3.22/Help/command/set.rst
new file mode 100644
index 0000000..af862e4
--- /dev/null
+++ b/share/cmake-3.22/Help/command/set.rst
@@ -0,0 +1,108 @@
+set
+---
+
+Set a normal, cache, or environment variable to a given value.
+See the :ref:`cmake-language(7) variables <CMake Language Variables>`
+documentation for the scopes and interaction of normal variables
+and cache entries.
+
+Signatures of this command that specify a ``<value>...`` placeholder
+expect zero or more arguments.  Multiple arguments will be joined as
+a :ref:`semicolon-separated list <CMake Language Lists>` to form the actual variable
+value to be set.  Zero arguments will cause normal variables to be
+unset.  See the :command:`unset` command to unset variables explicitly.
+
+Set Normal Variable
+^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  set(<variable> <value>... [PARENT_SCOPE])
+
+Sets the given ``<variable>`` in the current function or directory scope.
+
+If the ``PARENT_SCOPE`` option is given the variable will be set in
+the scope above the current scope.  Each new directory or function
+creates a new scope.  This command will set the value of a variable
+into the parent directory or calling function (whichever is applicable
+to the case at hand). The previous state of the variable's value stays the
+same in the current scope (e.g., if it was undefined before, it is still
+undefined and if it had a value, it is still that value).
+
+Set Cache Entry
+^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  set(<variable> <value>... CACHE <type> <docstring> [FORCE])
+
+Sets the given cache ``<variable>`` (cache entry).  Since cache entries
+are meant to provide user-settable values this does not overwrite
+existing cache entries by default.  Use the ``FORCE`` option to
+overwrite existing entries.
+
+The ``<type>`` must be specified as one of:
+
+``BOOL``
+  Boolean ``ON/OFF`` value.  :manual:`cmake-gui(1)` offers a checkbox.
+
+``FILEPATH``
+  Path to a file on disk.  :manual:`cmake-gui(1)` offers a file dialog.
+
+``PATH``
+  Path to a directory on disk.  :manual:`cmake-gui(1)` offers a file dialog.
+
+``STRING``
+  A line of text.  :manual:`cmake-gui(1)` offers a text field or a
+  drop-down selection if the :prop_cache:`STRINGS` cache entry
+  property is set.
+
+``INTERNAL``
+  A line of text.  :manual:`cmake-gui(1)` does not show internal entries.
+  They may be used to store variables persistently across runs.
+  Use of this type implies ``FORCE``.
+
+The ``<docstring>`` must be specified as a line of text providing
+a quick summary of the option for presentation to :manual:`cmake-gui(1)`
+users.
+
+If the cache entry does not exist prior to the call or the ``FORCE``
+option is given then the cache entry will be set to the given value.
+
+.. note::
+
+  The content of the cache variable will not be directly accessible if a normal
+  variable of the same name already exists (see :ref:`rules of variable
+  evaluation <CMake Language Variables>`). If policy :policy:`CMP0126` is set
+  to ``OLD``, any normal variable binding in the current scope will be removed.
+
+It is possible for the cache entry to exist prior to the call but
+have no type set if it was created on the :manual:`cmake(1)` command
+line by a user through the ``-D<var>=<value>`` option without
+specifying a type.  In this case the ``set`` command will add the
+type.  Furthermore, if the ``<type>`` is ``PATH`` or ``FILEPATH``
+and the ``<value>`` provided on the command line is a relative path,
+then the ``set`` command will treat the path as relative to the
+current working directory and convert it to an absolute path.
+
+Set Environment Variable
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  set(ENV{<variable>} [<value>])
+
+Sets an :manual:`Environment Variable <cmake-env-variables(7)>`
+to the given value.
+Subsequent calls of ``$ENV{<variable>}`` will return this new value.
+
+This command affects only the current CMake process, not the process
+from which CMake was called, nor the system environment at large,
+nor the environment of subsequent build or test processes.
+
+If no argument is given after ``ENV{<variable>}`` or if ``<value>`` is
+an empty string, then this command will clear any existing value of the
+environment variable.
+
+Arguments after ``<value>`` are ignored. If extra arguments are found,
+then an author warning is issued.
diff --git a/share/cmake-3.18/Help/command/set_directory_properties.rst b/share/cmake-3.22/Help/command/set_directory_properties.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/set_directory_properties.rst
rename to share/cmake-3.22/Help/command/set_directory_properties.rst
diff --git a/share/cmake-3.22/Help/command/set_property.rst b/share/cmake-3.22/Help/command/set_property.rst
new file mode 100644
index 0000000..555520d
--- /dev/null
+++ b/share/cmake-3.22/Help/command/set_property.rst
@@ -0,0 +1,112 @@
+set_property
+------------
+
+Set a named property in a given scope.
+
+.. code-block:: cmake
+
+  set_property(<GLOBAL                      |
+                DIRECTORY [<dir>]           |
+                TARGET    [<target1> ...]   |
+                SOURCE    [<src1> ...]
+                          [DIRECTORY <dirs> ...]
+                          [TARGET_DIRECTORY <targets> ...] |
+                INSTALL   [<file1> ...]     |
+                TEST      [<test1> ...]     |
+                CACHE     [<entry1> ...]    >
+               [APPEND] [APPEND_STRING]
+               PROPERTY <name> [<value1> ...])
+
+Sets one property on zero or more objects of a scope.
+
+The first argument determines the scope in which the property is set.
+It must be one of the following:
+
+``GLOBAL``
+  Scope is unique and does not accept a name.
+
+``DIRECTORY``
+  Scope defaults to the current directory but other directories
+  (already processed by CMake) may be named by full or relative path.
+  Relative paths are treated as relative to the current source directory.
+  See also the :command:`set_directory_properties` command.
+
+  .. versionadded:: 3.19
+    ``<dir>`` may reference a binary directory.
+
+``TARGET``
+  Scope may name zero or more existing targets.
+  See also the :command:`set_target_properties` command.
+
+``SOURCE``
+  Scope may name zero or more source files.  By default, source file properties
+  are only visible to targets added in the same directory (``CMakeLists.txt``).
+
+  .. versionadded:: 3.18
+    Visibility can be set in other directory scopes using one or both of the
+    following sub-options:
+
+    ``DIRECTORY <dirs>...``
+      The source file property will be set in each of the ``<dirs>``
+      directories' scopes.  CMake must already know about
+      each of these directories, either by having added them through a call to
+      :command:`add_subdirectory` or it being the top level source directory.
+      Relative paths are treated as relative to the current source directory.
+
+      .. versionadded:: 3.19
+        ``<dirs>`` may reference a binary directory.
+
+    ``TARGET_DIRECTORY <targets>...``
+      The source file property will be set in each of the directory scopes
+      where any of the specified ``<targets>`` were created (the ``<targets>``
+      must therefore already exist).
+
+  See also the :command:`set_source_files_properties` command.
+
+``INSTALL``
+  .. versionadded:: 3.1
+
+  Scope may name zero or more installed file paths.
+  These are made available to CPack to influence deployment.
+
+  Both the property key and value may use generator expressions.
+  Specific properties may apply to installed files and/or directories.
+
+  Path components have to be separated by forward slashes,
+  must be normalized and are case sensitive.
+
+  To reference the installation prefix itself with a relative path use ``.``.
+
+  Currently installed file properties are only defined for
+  the WIX generator where the given paths are relative
+  to the installation prefix.
+
+``TEST``
+  Scope may name zero or more existing tests.
+  See also the :command:`set_tests_properties` command.
+
+``CACHE``
+  Scope must name zero or more cache existing entries.
+
+The required ``PROPERTY`` option is immediately followed by the name of
+the property to set.  Remaining arguments are used to compose the
+property value in the form of a semicolon-separated list.
+
+If the ``APPEND`` option is given the list is appended to any existing
+property value (except that empty values are ignored and not appended).
+If the ``APPEND_STRING`` option is given the string is
+appended to any existing property value as string, i.e. it results in a
+longer string and not a list of strings.  When using ``APPEND`` or
+``APPEND_STRING`` with a property defined to support ``INHERITED``
+behavior (see :command:`define_property`), no inheriting occurs when
+finding the initial value to append to.  If the property is not already
+directly set in the nominated scope, the command will behave as though
+``APPEND`` or ``APPEND_STRING`` had not been given.
+
+See the :manual:`cmake-properties(7)` manual for a list of properties
+in each scope.
+
+.. note::
+
+  The :prop_sf:`GENERATED` source file property may be globally visible.
+  See its documentation for details.
diff --git a/share/cmake-3.22/Help/command/set_source_files_properties.rst b/share/cmake-3.22/Help/command/set_source_files_properties.rst
new file mode 100644
index 0000000..61c69a2
--- /dev/null
+++ b/share/cmake-3.22/Help/command/set_source_files_properties.rst
@@ -0,0 +1,43 @@
+set_source_files_properties
+---------------------------
+
+Source files can have properties that affect how they are built.
+
+.. code-block:: cmake
+
+  set_source_files_properties(<files> ...
+                              [DIRECTORY <dirs> ...]
+                              [TARGET_DIRECTORY <targets> ...]
+                              PROPERTIES <prop1> <value1>
+                              [<prop2> <value2>] ...)
+
+Sets properties associated with source files using a key/value paired
+list.
+
+.. versionadded:: 3.18
+  By default, source file properties are only visible to targets added in the
+  same directory (``CMakeLists.txt``).  Visibility can be set in other directory
+  scopes using one or both of the following options:
+
+``DIRECTORY <dirs>...``
+  The source file properties will be set in each of the ``<dirs>``
+  directories' scopes.  CMake must already know about each of these
+  source directories, either by having added them through a call to
+  :command:`add_subdirectory` or it being the top level source directory.
+  Relative paths are treated as relative to the current source directory.
+
+``TARGET_DIRECTORY <targets>...``
+  The source file properties will be set in each of the directory scopes
+  where any of the specified ``<targets>`` were created (the ``<targets>``
+  must therefore already exist).
+
+Use :command:`get_source_file_property` to get property values.
+See also the :command:`set_property(SOURCE)` command.
+
+See :ref:`Source File Properties` for the list of properties known
+to CMake.
+
+.. note::
+
+  The :prop_sf:`GENERATED` source file property may be globally visible.
+  See its documentation for details.
diff --git a/share/cmake-3.18/Help/command/set_target_properties.rst b/share/cmake-3.22/Help/command/set_target_properties.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/set_target_properties.rst
rename to share/cmake-3.22/Help/command/set_target_properties.rst
diff --git a/share/cmake-3.18/Help/command/set_tests_properties.rst b/share/cmake-3.22/Help/command/set_tests_properties.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/set_tests_properties.rst
rename to share/cmake-3.22/Help/command/set_tests_properties.rst
diff --git a/share/cmake-3.22/Help/command/site_name.rst b/share/cmake-3.22/Help/command/site_name.rst
new file mode 100644
index 0000000..09b5a9f
--- /dev/null
+++ b/share/cmake-3.22/Help/command/site_name.rst
@@ -0,0 +1,12 @@
+site_name
+---------
+
+Set the given variable to the name of the computer.
+
+.. code-block:: cmake
+
+  site_name(variable)
+
+On UNIX-like platforms, if the variable ``HOSTNAME`` is set, its value
+will be executed as a command expected to print out the host name,
+much like the ``hostname`` command-line tool.
diff --git a/share/cmake-3.22/Help/command/source_group.rst b/share/cmake-3.22/Help/command/source_group.rst
new file mode 100644
index 0000000..83ae286
--- /dev/null
+++ b/share/cmake-3.22/Help/command/source_group.rst
@@ -0,0 +1,71 @@
+source_group
+------------
+
+Define a grouping for source files in IDE project generation.
+There are two different signatures to create source groups.
+
+.. code-block:: cmake
+
+  source_group(<name> [FILES <src>...] [REGULAR_EXPRESSION <regex>])
+  source_group(TREE <root> [PREFIX <prefix>] [FILES <src>...])
+
+Defines a group into which sources will be placed in project files.
+This is intended to set up file tabs in Visual Studio.
+The group is scoped in the directory where the command is called,
+and applies to sources in targets created in that directory.
+
+The options are:
+
+``TREE``
+ .. versionadded:: 3.8
+
+ CMake will automatically detect, from ``<src>`` files paths, source groups
+ it needs to create, to keep structure of source groups analogically to the
+ actual files and directories structure in the project. Paths of ``<src>``
+ files will be cut to be relative to ``<root>``. The command fails if the
+ paths within ``src`` do not start with ``root``.
+
+``PREFIX``
+ .. versionadded:: 3.8
+
+ Source group and files located directly in ``<root>`` path, will be placed
+ in ``<prefix>`` source groups.
+
+``FILES``
+ Any source file specified explicitly will be placed in group
+ ``<name>``.  Relative paths are interpreted with respect to the
+ current source directory.
+
+``REGULAR_EXPRESSION``
+ Any source file whose name matches the regular expression will
+ be placed in group ``<name>``.
+
+If a source file matches multiple groups, the *last* group that
+explicitly lists the file with ``FILES`` will be favored, if any.
+If no group explicitly lists the file, the *last* group whose
+regular expression matches the file will be favored.
+
+The ``<name>`` of the group and ``<prefix>`` argument may contain forward
+slashes or backslashes to specify subgroups.  Backslashes need to be escaped
+appropriately:
+
+.. code-block:: cmake
+
+  source_group(base/subdir ...)
+  source_group(outer\\inner ...)
+  source_group(TREE <root> PREFIX sources\\inc ...)
+
+.. versionadded:: 3.18
+  Allow using forward slashes (``/``) to specify subgroups.
+
+For backwards compatibility, the short-hand signature
+
+.. code-block:: cmake
+
+  source_group(<name> <regex>)
+
+is equivalent to
+
+.. code-block:: cmake
+
+  source_group(<name> REGULAR_EXPRESSION <regex>)
diff --git a/share/cmake-3.22/Help/command/string.rst b/share/cmake-3.22/Help/command/string.rst
new file mode 100644
index 0000000..29ad082
--- /dev/null
+++ b/share/cmake-3.22/Help/command/string.rst
@@ -0,0 +1,647 @@
+string
+------
+
+String operations.
+
+Synopsis
+^^^^^^^^
+
+.. parsed-literal::
+
+  `Search and Replace`_
+    string(`FIND`_ <string> <substring> <out-var> [...])
+    string(`REPLACE`_ <match-string> <replace-string> <out-var> <input>...)
+    string(`REGEX MATCH`_ <match-regex> <out-var> <input>...)
+    string(`REGEX MATCHALL`_ <match-regex> <out-var> <input>...)
+    string(`REGEX REPLACE`_ <match-regex> <replace-expr> <out-var> <input>...)
+
+  `Manipulation`_
+    string(`APPEND`_ <string-var> [<input>...])
+    string(`PREPEND`_ <string-var> [<input>...])
+    string(`CONCAT`_ <out-var> [<input>...])
+    string(`JOIN`_ <glue> <out-var> [<input>...])
+    string(`TOLOWER`_ <string> <out-var>)
+    string(`TOUPPER`_ <string> <out-var>)
+    string(`LENGTH`_ <string> <out-var>)
+    string(`SUBSTRING`_ <string> <begin> <length> <out-var>)
+    string(`STRIP`_ <string> <out-var>)
+    string(`GENEX_STRIP`_ <string> <out-var>)
+    string(`REPEAT`_ <string> <count> <out-var>)
+
+  `Comparison`_
+    string(`COMPARE`_ <op> <string1> <string2> <out-var>)
+
+  `Hashing`_
+    string(`\<HASH\> <HASH_>`_ <out-var> <input>)
+
+  `Generation`_
+    string(`ASCII`_ <number>... <out-var>)
+    string(`HEX`_ <string> <out-var>)
+    string(`CONFIGURE`_ <string> <out-var> [...])
+    string(`MAKE_C_IDENTIFIER`_ <string> <out-var>)
+    string(`RANDOM`_ [<option>...] <out-var>)
+    string(`TIMESTAMP`_ <out-var> [<format string>] [UTC])
+    string(`UUID`_ <out-var> ...)
+
+  `JSON`_
+    string(JSON <out-var> [ERROR_VARIABLE <error-var>]
+           {`GET`_ | `TYPE`_ | :ref:`LENGTH <JSONLENGTH>` | `REMOVE`_}
+           <json-string> <member|index> [<member|index> ...])
+    string(JSON <out-var> [ERROR_VARIABLE <error-var>]
+           `MEMBER`_ <json-string>
+           [<member|index> ...] <index>)
+    string(JSON <out-var> [ERROR_VARIABLE <error-var>]
+           `SET`_ <json-string>
+           <member|index> [<member|index> ...] <value>)
+    string(JSON <out-var> [ERROR_VARIABLE <error-var>]
+           `EQUAL`_ <json-string1> <json-string2>)
+
+Search and Replace
+^^^^^^^^^^^^^^^^^^
+
+Search and Replace With Plain Strings
+"""""""""""""""""""""""""""""""""""""
+
+.. _FIND:
+
+.. code-block:: cmake
+
+  string(FIND <string> <substring> <output_variable> [REVERSE])
+
+Return the position where the given ``<substring>`` was found in
+the supplied ``<string>``.  If the ``REVERSE`` flag was used, the command will
+search for the position of the last occurrence of the specified
+``<substring>``.  If the ``<substring>`` is not found, a position of -1 is
+returned.
+
+The ``string(FIND)`` subcommand treats all strings as ASCII-only characters.
+The index stored in ``<output_variable>`` will also be counted in bytes,
+so strings containing multi-byte characters may lead to unexpected results.
+
+.. _REPLACE:
+
+.. code-block:: cmake
+
+  string(REPLACE <match_string>
+         <replace_string> <output_variable>
+         <input> [<input>...])
+
+Replace all occurrences of ``<match_string>`` in the ``<input>``
+with ``<replace_string>`` and store the result in the ``<output_variable>``.
+
+Search and Replace With Regular Expressions
+"""""""""""""""""""""""""""""""""""""""""""
+
+.. _`REGEX MATCH`:
+
+.. code-block:: cmake
+
+  string(REGEX MATCH <regular_expression>
+         <output_variable> <input> [<input>...])
+
+Match the ``<regular_expression>`` once and store the match in the
+``<output_variable>``.
+All ``<input>`` arguments are concatenated before matching.
+Regular expressions are specified in the subsection just below.
+
+.. _`REGEX MATCHALL`:
+
+.. code-block:: cmake
+
+  string(REGEX MATCHALL <regular_expression>
+         <output_variable> <input> [<input>...])
+
+Match the ``<regular_expression>`` as many times as possible and store the
+matches in the ``<output_variable>`` as a list.
+All ``<input>`` arguments are concatenated before matching.
+
+.. _`REGEX REPLACE`:
+
+.. code-block:: cmake
+
+  string(REGEX REPLACE <regular_expression>
+         <replacement_expression> <output_variable>
+         <input> [<input>...])
+
+Match the ``<regular_expression>`` as many times as possible and substitute
+the ``<replacement_expression>`` for the match in the output.
+All ``<input>`` arguments are concatenated before matching.
+
+The ``<replacement_expression>`` may refer to parenthesis-delimited
+subexpressions of the match using ``\1``, ``\2``, ..., ``\9``.  Note that
+two backslashes (``\\1``) are required in CMake code to get a backslash
+through argument parsing.
+
+.. _`Regex Specification`:
+
+Regex Specification
+"""""""""""""""""""
+
+The following characters have special meaning in regular expressions:
+
+``^``
+  Matches at beginning of input
+``$``
+  Matches at end of input
+``.``
+  Matches any single character
+``\<char>``
+  Matches the single character specified by ``<char>``.  Use this to
+  match special regex characters, e.g. ``\.`` for a literal ``.``
+  or ``\\`` for a literal backslash ``\``.  Escaping a non-special
+  character is unnecessary but allowed, e.g. ``\a`` matches ``a``.
+``[ ]``
+  Matches any character(s) inside the brackets
+``[^ ]``
+  Matches any character(s) not inside the brackets
+``-``
+  Inside brackets, specifies an inclusive range between
+  characters on either side e.g. ``[a-f]`` is ``[abcdef]``
+  To match a literal ``-`` using brackets, make it the first
+  or the last character e.g. ``[+*/-]`` matches basic
+  mathematical operators.
+``*``
+  Matches preceding pattern zero or more times
+``+``
+  Matches preceding pattern one or more times
+``?``
+  Matches preceding pattern zero or once only
+``|``
+  Matches a pattern on either side of the ``|``
+``()``
+  Saves a matched subexpression, which can be referenced
+  in the ``REGEX REPLACE`` operation.
+
+  .. versionadded:: 3.9
+    All regular expression-related commands, including e.g.
+    :command:`if(MATCHES)`, save subgroup matches in the variables
+    :variable:`CMAKE_MATCH_<n>` for ``<n>`` 0..9.
+
+``*``, ``+`` and ``?`` have higher precedence than concatenation.  ``|``
+has lower precedence than concatenation.  This means that the regular
+expression ``^ab+d$`` matches ``abbd`` but not ``ababd``, and the regular
+expression ``^(ab|cd)$`` matches ``ab`` but not ``abd``.
+
+CMake language :ref:`Escape Sequences` such as ``\t``, ``\r``, ``\n``,
+and ``\\`` may be used to construct literal tabs, carriage returns,
+newlines, and backslashes (respectively) to pass in a regex.  For example:
+
+* The quoted argument ``"[ \t\r\n]"`` specifies a regex that matches
+  any single whitespace character.
+* The quoted argument ``"[/\\]"`` specifies a regex that matches
+  a single forward slash ``/`` or backslash ``\``.
+* The quoted argument ``"[A-Za-z0-9_]"`` specifies a regex that matches
+  any single "word" character in the C locale.
+* The quoted argument ``"\\(\\a\\+b\\)"`` specifies a regex that matches
+  the exact string ``(a+b)``.  Each ``\\`` is parsed in a quoted argument
+  as just ``\``, so the regex itself is actually ``\(\a\+\b\)``.  This
+  can alternatively be specified in a :ref:`bracket argument` without
+  having to escape the backslashes, e.g. ``[[\(\a\+\b\)]]``.
+
+Manipulation
+^^^^^^^^^^^^
+
+.. _APPEND:
+
+.. code-block:: cmake
+
+  string(APPEND <string_variable> [<input>...])
+
+.. versionadded:: 3.4
+
+Append all the ``<input>`` arguments to the string.
+
+.. _PREPEND:
+
+.. code-block:: cmake
+
+  string(PREPEND <string_variable> [<input>...])
+
+.. versionadded:: 3.10
+
+Prepend all the ``<input>`` arguments to the string.
+
+.. _CONCAT:
+
+.. code-block:: cmake
+
+  string(CONCAT <output_variable> [<input>...])
+
+Concatenate all the ``<input>`` arguments together and store
+the result in the named ``<output_variable>``.
+
+.. _JOIN:
+
+.. code-block:: cmake
+
+  string(JOIN <glue> <output_variable> [<input>...])
+
+.. versionadded:: 3.12
+
+Join all the ``<input>`` arguments together using the ``<glue>``
+string and store the result in the named ``<output_variable>``.
+
+To join a list's elements, prefer to use the ``JOIN`` operator
+from the :command:`list` command.  This allows for the elements to have
+special characters like ``;`` in them.
+
+.. _TOLOWER:
+
+.. code-block:: cmake
+
+  string(TOLOWER <string> <output_variable>)
+
+Convert ``<string>`` to lower characters.
+
+.. _TOUPPER:
+
+.. code-block:: cmake
+
+  string(TOUPPER <string> <output_variable>)
+
+Convert ``<string>`` to upper characters.
+
+.. _LENGTH:
+
+.. code-block:: cmake
+
+  string(LENGTH <string> <output_variable>)
+
+Store in an ``<output_variable>`` a given string's length in bytes.
+Note that this means if ``<string>`` contains multi-byte characters, the
+result stored in ``<output_variable>`` will *not* be the number of characters.
+
+.. _SUBSTRING:
+
+.. code-block:: cmake
+
+  string(SUBSTRING <string> <begin> <length> <output_variable>)
+
+Store in an ``<output_variable>`` a substring of a given ``<string>``.  If
+``<length>`` is ``-1`` the remainder of the string starting at ``<begin>``
+will be returned.
+
+.. versionchanged:: 3.2
+  If ``<string>`` is shorter than ``<length>`` then the end of the string
+  is used instead.  Previous versions of CMake reported an error in this case.
+
+Both ``<begin>`` and ``<length>`` are counted in bytes, so care must
+be exercised if ``<string>`` could contain multi-byte characters.
+
+.. _STRIP:
+
+.. code-block:: cmake
+
+  string(STRIP <string> <output_variable>)
+
+Store in an ``<output_variable>`` a substring of a given ``<string>`` with
+leading and trailing spaces removed.
+
+.. _GENEX_STRIP:
+
+.. code-block:: cmake
+
+  string(GENEX_STRIP <string> <output_variable>)
+
+.. versionadded:: 3.1
+
+Strip any :manual:`generator expressions <cmake-generator-expressions(7)>`
+from the input ``<string>`` and store the result in the ``<output_variable>``.
+
+.. _REPEAT:
+
+.. code-block:: cmake
+
+  string(REPEAT <string> <count> <output_variable>)
+
+.. versionadded:: 3.15
+
+Produce the output string as the input ``<string>`` repeated ``<count>`` times.
+
+Comparison
+^^^^^^^^^^
+
+.. _COMPARE:
+
+.. code-block:: cmake
+
+  string(COMPARE LESS <string1> <string2> <output_variable>)
+  string(COMPARE GREATER <string1> <string2> <output_variable>)
+  string(COMPARE EQUAL <string1> <string2> <output_variable>)
+  string(COMPARE NOTEQUAL <string1> <string2> <output_variable>)
+  string(COMPARE LESS_EQUAL <string1> <string2> <output_variable>)
+  string(COMPARE GREATER_EQUAL <string1> <string2> <output_variable>)
+
+Compare the strings and store true or false in the ``<output_variable>``.
+
+.. versionadded:: 3.7
+  Added the ``LESS_EQUAL`` and ``GREATER_EQUAL`` options.
+
+.. _`Supported Hash Algorithms`:
+
+Hashing
+^^^^^^^
+
+.. _`HASH`:
+
+.. code-block:: cmake
+
+  string(<HASH> <output_variable> <input>)
+
+Compute a cryptographic hash of the ``<input>`` string.
+The supported ``<HASH>`` algorithm names are:
+
+``MD5``
+  Message-Digest Algorithm 5, RFC 1321.
+``SHA1``
+  US Secure Hash Algorithm 1, RFC 3174.
+``SHA224``
+  US Secure Hash Algorithms, RFC 4634.
+``SHA256``
+  US Secure Hash Algorithms, RFC 4634.
+``SHA384``
+  US Secure Hash Algorithms, RFC 4634.
+``SHA512``
+  US Secure Hash Algorithms, RFC 4634.
+``SHA3_224``
+  Keccak SHA-3.
+``SHA3_256``
+  Keccak SHA-3.
+``SHA3_384``
+  Keccak SHA-3.
+``SHA3_512``
+  Keccak SHA-3.
+
+.. versionadded:: 3.8
+  Added the ``SHA3_*`` hash algorithms.
+
+Generation
+^^^^^^^^^^
+
+.. _ASCII:
+
+.. code-block:: cmake
+
+  string(ASCII <number> [<number> ...] <output_variable>)
+
+Convert all numbers into corresponding ASCII characters.
+
+.. _HEX:
+
+.. code-block:: cmake
+
+  string(HEX <string> <output_variable>)
+
+.. versionadded:: 3.18
+
+Convert each byte in the input ``<string>`` to its hexadecimal representation
+and store the concatenated hex digits in the ``<output_variable>``. Letters in
+the output (``a`` through ``f``) are in lowercase.
+
+.. _CONFIGURE:
+
+.. code-block:: cmake
+
+  string(CONFIGURE <string> <output_variable>
+         [@ONLY] [ESCAPE_QUOTES])
+
+Transform a ``<string>`` like :command:`configure_file` transforms a file.
+
+.. _MAKE_C_IDENTIFIER:
+
+.. code-block:: cmake
+
+  string(MAKE_C_IDENTIFIER <string> <output_variable>)
+
+Convert each non-alphanumeric character in the input ``<string>`` to an
+underscore and store the result in the ``<output_variable>``.  If the first
+character of the ``<string>`` is a digit, an underscore will also be prepended
+to the result.
+
+.. _RANDOM:
+
+.. code-block:: cmake
+
+  string(RANDOM [LENGTH <length>] [ALPHABET <alphabet>]
+         [RANDOM_SEED <seed>] <output_variable>)
+
+Return a random string of given ``<length>`` consisting of
+characters from the given ``<alphabet>``.  Default length is 5 characters
+and default alphabet is all numbers and upper and lower case letters.
+If an integer ``RANDOM_SEED`` is given, its value will be used to seed the
+random number generator.
+
+.. _TIMESTAMP:
+
+.. code-block:: cmake
+
+  string(TIMESTAMP <output_variable> [<format_string>] [UTC])
+
+Write a string representation of the current date
+and/or time to the ``<output_variable>``.
+
+If the command is unable to obtain a timestamp, the ``<output_variable>``
+will be set to the empty string ``""``.
+
+The optional ``UTC`` flag requests the current date/time representation to
+be in Coordinated Universal Time (UTC) rather than local time.
+
+The optional ``<format_string>`` may contain the following format
+specifiers:
+
+``%%``
+  .. versionadded:: 3.8
+
+  A literal percent sign (%).
+
+``%d``
+  The day of the current month (01-31).
+
+``%H``
+  The hour on a 24-hour clock (00-23).
+
+``%I``
+  The hour on a 12-hour clock (01-12).
+
+``%j``
+  The day of the current year (001-366).
+
+``%m``
+  The month of the current year (01-12).
+
+``%b``
+  .. versionadded:: 3.7
+
+  Abbreviated month name (e.g. Oct).
+
+``%B``
+  .. versionadded:: 3.10
+
+  Full month name (e.g. October).
+
+``%M``
+  The minute of the current hour (00-59).
+
+``%s``
+  .. versionadded:: 3.6
+
+  Seconds since midnight (UTC) 1-Jan-1970 (UNIX time).
+
+``%S``
+  The second of the current minute.  60 represents a leap second. (00-60)
+
+``%U``
+  The week number of the current year (00-53).
+
+``%V``
+  .. versionadded:: 3.22
+
+  The ISO 8601 week number of the current year (01-53).
+
+``%w``
+  The day of the current week. 0 is Sunday. (0-6)
+
+``%a``
+  .. versionadded:: 3.7
+
+  Abbreviated weekday name (e.g. Fri).
+
+``%A``
+  .. versionadded:: 3.10
+
+  Full weekday name (e.g. Friday).
+
+``%y``
+  The last two digits of the current year (00-99).
+
+``%Y``
+  The current year.
+
+Unknown format specifiers will be ignored and copied to the output
+as-is.
+
+If no explicit ``<format_string>`` is given, it will default to:
+
+::
+
+   %Y-%m-%dT%H:%M:%S    for local time.
+   %Y-%m-%dT%H:%M:%SZ   for UTC.
+
+.. versionadded:: 3.8
+  If the ``SOURCE_DATE_EPOCH`` environment variable is set,
+  its value will be used instead of the current time.
+  See https://reproducible-builds.org/specs/source-date-epoch/ for details.
+
+.. _UUID:
+
+.. code-block:: cmake
+
+  string(UUID <output_variable> NAMESPACE <namespace> NAME <name>
+         TYPE <MD5|SHA1> [UPPER])
+
+.. versionadded:: 3.1
+
+Create a universally unique identifier (aka GUID) as per RFC4122
+based on the hash of the combined values of ``<namespace>``
+(which itself has to be a valid UUID) and ``<name>``.
+The hash algorithm can be either ``MD5`` (Version 3 UUID) or
+``SHA1`` (Version 5 UUID).
+A UUID has the format ``xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx``
+where each ``x`` represents a lower case hexadecimal character.
+Where required, an uppercase representation can be requested
+with the optional ``UPPER`` flag.
+
+.. _JSON:
+
+JSON
+^^^^
+
+.. versionadded:: 3.19
+
+Functionality for querying a JSON string.
+
+.. note::
+  In each of the following JSON-related subcommands, if the optional
+  ``ERROR_VARIABLE`` argument is given, errors will be reported in
+  ``<error-variable>`` and the ``<out-var>`` will be set to
+  ``<member|index>-[<member|index>...]-NOTFOUND`` with the path elements
+  up to the point where the error occurred, or just ``NOTFOUND`` if there
+  is no relevant path.  If an error occurs but the ``ERROR_VARIABLE``
+  option is not present, a fatal error message is generated.  If no error
+  occurs, the ``<error-variable>`` will be set to ``NOTFOUND``.
+
+.. _GET:
+.. code-block:: cmake
+
+  string(JSON <out-var> [ERROR_VARIABLE <error-variable>]
+         GET <json-string> <member|index> [<member|index> ...])
+
+Get an element from ``<json-string>`` at the location given
+by the list of ``<member|index>`` arguments.
+Array and object elements will be returned as a JSON string.
+Boolean elements will be returned as ``ON`` or ``OFF``.
+Null elements will be returned as an empty string.
+Number and string types will be returned as strings.
+
+.. _TYPE:
+.. code-block:: cmake
+
+  string(JSON <out-var> [ERROR_VARIABLE <error-variable>]
+         TYPE <json-string> <member|index> [<member|index> ...])
+
+Get the type of an element in ``<json-string>`` at the location
+given by the list of ``<member|index>`` arguments. The ``<out-var>``
+will be set to one of ``NULL``, ``NUMBER``, ``STRING``, ``BOOLEAN``,
+``ARRAY``, or ``OBJECT``.
+
+.. _MEMBER:
+.. code-block:: cmake
+
+  string(JSON <out-var> [ERROR_VARIABLE <error-var>]
+         MEMBER <json-string>
+         [<member|index> ...] <index>)
+
+Get the name of the ``<index>``-th member in ``<json-string>`` at the location
+given by the list of ``<member|index>`` arguments.
+Requires an element of object type.
+
+.. _JSONLENGTH:
+.. code-block:: cmake
+
+  string(JSON <out-var> [ERROR_VARIABLE <error-variable>]
+         LENGTH <json-string> <member|index> [<member|index> ...])
+
+Get the length of an element in ``<json-string>`` at the location
+given by the list of ``<member|index>`` arguments.
+Requires an element of array or object type.
+
+.. _REMOVE:
+.. code-block:: cmake
+
+  string(JSON <out-var> [ERROR_VARIABLE <error-variable>]
+         REMOVE <json-string> <member|index> [<member|index> ...])
+
+Remove an element from ``<json-string>`` at the location
+given by the list of ``<member|index>`` arguments. The JSON string
+without the removed element will be stored in ``<out-var>``.
+
+.. _SET:
+.. code-block:: cmake
+
+  string(JSON <out-var> [ERROR_VARIABLE <error-variable>]
+         SET <json-string> <member|index> [<member|index> ...] <value>)
+
+Set an element in ``<json-string>`` at the location
+given by the list of ``<member|index>`` arguments to ``<value>``.
+The contents of ``<value>`` should be valid JSON.
+
+.. _EQUAL:
+.. code-block:: cmake
+
+  string(JSON <out-var> [ERROR_VARIABLE <error-var>]
+         EQUAL <json-string1> <json-string2>)
+
+Compare the two JSON objects given by ``<json-string1>`` and ``<json-string2>``
+for equality.  The contents of ``<json-string1>`` and ``<json-string2>``
+should be valid JSON.  The ``<out-var>`` will be set to a true value if the
+JSON objects are considered equal, or a false value otherwise.
diff --git a/share/cmake-3.18/Help/command/subdir_depends.rst b/share/cmake-3.22/Help/command/subdir_depends.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/subdir_depends.rst
rename to share/cmake-3.22/Help/command/subdir_depends.rst
diff --git a/share/cmake-3.18/Help/command/subdirs.rst b/share/cmake-3.22/Help/command/subdirs.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/subdirs.rst
rename to share/cmake-3.22/Help/command/subdirs.rst
diff --git a/share/cmake-3.22/Help/command/target_compile_definitions.rst b/share/cmake-3.22/Help/command/target_compile_definitions.rst
new file mode 100644
index 0000000..3fb113a
--- /dev/null
+++ b/share/cmake-3.22/Help/command/target_compile_definitions.rst
@@ -0,0 +1,50 @@
+target_compile_definitions
+--------------------------
+
+Add compile definitions to a target.
+
+.. code-block:: cmake
+
+  target_compile_definitions(<target>
+    <INTERFACE|PUBLIC|PRIVATE> [items1...]
+    [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
+
+Specifies compile definitions to use when compiling a given ``<target>``.  The
+named ``<target>`` must have been created by a command such as
+:command:`add_executable` or :command:`add_library` and must not be an
+:ref:`ALIAS target <Alias Targets>`.
+
+The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
+specify the scope of the following arguments.  ``PRIVATE`` and ``PUBLIC``
+items will populate the :prop_tgt:`COMPILE_DEFINITIONS` property of
+``<target>``. ``PUBLIC`` and ``INTERFACE`` items will populate the
+:prop_tgt:`INTERFACE_COMPILE_DEFINITIONS` property of ``<target>``.
+The following arguments specify compile definitions.  Repeated calls for the
+same ``<target>`` append items in the order called.
+
+.. versionadded:: 3.11
+  Allow setting ``INTERFACE`` items on :ref:`IMPORTED targets <Imported Targets>`.
+
+Arguments to ``target_compile_definitions`` may use "generator expressions"
+with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
+manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
+manual for more on defining buildsystem properties.
+
+Any leading ``-D`` on an item will be removed.  Empty items are ignored.
+For example, the following are all equivalent:
+
+.. code-block:: cmake
+
+  target_compile_definitions(foo PUBLIC FOO)
+  target_compile_definitions(foo PUBLIC -DFOO)  # -D removed
+  target_compile_definitions(foo PUBLIC "" FOO) # "" ignored
+  target_compile_definitions(foo PUBLIC -D FOO) # -D becomes "", then ignored
+
+Definitions may optionally have values:
+
+.. code-block:: cmake
+
+  target_compile_definitions(foo PUBLIC FOO=1)
+
+Note that many compilers treat ``-DFOO`` as equivalent to ``-DFOO=1``, but
+other tools may not recognize this in all circumstances (e.g. IntelliSense).
diff --git a/share/cmake-3.22/Help/command/target_compile_features.rst b/share/cmake-3.22/Help/command/target_compile_features.rst
new file mode 100644
index 0000000..58502bf
--- /dev/null
+++ b/share/cmake-3.22/Help/command/target_compile_features.rst
@@ -0,0 +1,37 @@
+target_compile_features
+-----------------------
+
+.. versionadded:: 3.1
+
+Add expected compiler features to a target.
+
+.. code-block:: cmake
+
+  target_compile_features(<target> <PRIVATE|PUBLIC|INTERFACE> <feature> [...])
+
+Specifies compiler features required when compiling a given target.  If the
+feature is not listed in the :variable:`CMAKE_C_COMPILE_FEATURES`,
+:variable:`CMAKE_CUDA_COMPILE_FEATURES`, or :variable:`CMAKE_CXX_COMPILE_FEATURES`
+variables, then an error will be reported by CMake.  If the use of the feature requires
+an additional compiler flag, such as ``-std=gnu++11``, the flag will be added
+automatically.
+
+The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
+specify the scope of the features.  ``PRIVATE`` and ``PUBLIC`` items will
+populate the :prop_tgt:`COMPILE_FEATURES` property of ``<target>``.
+``PUBLIC`` and ``INTERFACE`` items will populate the
+:prop_tgt:`INTERFACE_COMPILE_FEATURES` property of ``<target>``.
+Repeated calls for the same ``<target>`` append items.
+
+.. versionadded:: 3.11
+  Allow setting ``INTERFACE`` items on :ref:`IMPORTED targets <Imported Targets>`.
+
+The named ``<target>`` must have been created by a command such as
+:command:`add_executable` or :command:`add_library` and must not be an
+:ref:`ALIAS target <Alias Targets>`.
+
+Arguments to ``target_compile_features`` may use "generator expressions"
+with the syntax ``$<...>``.
+See the :manual:`cmake-generator-expressions(7)` manual for available
+expressions.  See the :manual:`cmake-compile-features(7)` manual for
+information on compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/command/target_compile_options.rst b/share/cmake-3.22/Help/command/target_compile_options.rst
new file mode 100644
index 0000000..e45b209
--- /dev/null
+++ b/share/cmake-3.22/Help/command/target_compile_options.rst
@@ -0,0 +1,52 @@
+target_compile_options
+----------------------
+
+Add compile options to a target.
+
+.. code-block:: cmake
+
+  target_compile_options(<target> [BEFORE]
+    <INTERFACE|PUBLIC|PRIVATE> [items1...]
+    [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
+
+Adds options to the :prop_tgt:`COMPILE_OPTIONS` or
+:prop_tgt:`INTERFACE_COMPILE_OPTIONS` target properties. These options
+are used when compiling the given ``<target>``, which must have been
+created by a command such as :command:`add_executable` or
+:command:`add_library` and must not be an :ref:`ALIAS target <Alias Targets>`.
+
+Arguments
+^^^^^^^^^
+
+If ``BEFORE`` is specified, the content will be prepended to the property
+instead of being appended.
+
+The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
+specify the scope of the following arguments.  ``PRIVATE`` and ``PUBLIC``
+items will populate the :prop_tgt:`COMPILE_OPTIONS` property of
+``<target>``.  ``PUBLIC`` and ``INTERFACE`` items will populate the
+:prop_tgt:`INTERFACE_COMPILE_OPTIONS` property of ``<target>``.
+The following arguments specify compile options.  Repeated calls for the same
+``<target>`` append items in the order called.
+
+.. versionadded:: 3.11
+  Allow setting ``INTERFACE`` items on :ref:`IMPORTED targets <Imported Targets>`.
+
+Arguments to ``target_compile_options`` may use "generator expressions"
+with the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)`
+manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
+manual for more on defining buildsystem properties.
+
+.. include:: OPTIONS_SHELL.txt
+
+See Also
+^^^^^^^^
+
+This command can be used to add any options. However, for adding
+preprocessor definitions and include directories it is recommended
+to use the more specific commands :command:`target_compile_definitions`
+and :command:`target_include_directories`.
+
+For directory-wide settings, there is the command :command:`add_compile_options`.
+
+For file-specific settings, there is the source file property :prop_sf:`COMPILE_OPTIONS`.
diff --git a/share/cmake-3.22/Help/command/target_include_directories.rst b/share/cmake-3.22/Help/command/target_include_directories.rst
new file mode 100644
index 0000000..3e53b2e
--- /dev/null
+++ b/share/cmake-3.22/Help/command/target_include_directories.rst
@@ -0,0 +1,64 @@
+target_include_directories
+--------------------------
+
+Add include directories to a target.
+
+.. code-block:: cmake
+
+  target_include_directories(<target> [SYSTEM] [AFTER|BEFORE]
+    <INTERFACE|PUBLIC|PRIVATE> [items1...]
+    [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
+
+Specifies include directories to use when compiling a given target.
+The named ``<target>`` must have been created by a command such
+as :command:`add_executable` or :command:`add_library` and must not be an
+:ref:`ALIAS target <Alias Targets>`.
+
+By using ``AFTER`` or ``BEFORE`` explicitly, you can select between appending
+and prepending, independent of the default.
+
+The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to specify
+the scope of the following arguments.  ``PRIVATE`` and ``PUBLIC`` items will
+populate the :prop_tgt:`INCLUDE_DIRECTORIES` property of ``<target>``.
+``PUBLIC`` and ``INTERFACE`` items will populate the
+:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` property of ``<target>``.
+The following arguments specify include directories.
+
+.. versionadded:: 3.11
+  Allow setting ``INTERFACE`` items on :ref:`IMPORTED targets <Imported Targets>`.
+
+Specified include directories may be absolute paths or relative paths.
+Repeated calls for the same <target> append items in the order called.  If
+``SYSTEM`` is specified, the compiler will be told the
+directories are meant as system include directories on some platforms
+(signalling this setting might achieve effects such as the compiler
+skipping warnings, or these fixed-install system files not being
+considered in dependency calculations - see compiler docs).  If ``SYSTEM``
+is used together with ``PUBLIC`` or ``INTERFACE``, the
+:prop_tgt:`INTERFACE_SYSTEM_INCLUDE_DIRECTORIES` target property will be
+populated with the specified directories.
+
+Arguments to ``target_include_directories`` may use "generator expressions"
+with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
+manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
+manual for more on defining buildsystem properties.
+
+Include directories usage requirements commonly differ between the build-tree
+and the install-tree.  The ``BUILD_INTERFACE`` and ``INSTALL_INTERFACE``
+generator expressions can be used to describe separate usage requirements
+based on the usage location.  Relative paths are allowed within the
+``INSTALL_INTERFACE`` expression and are interpreted relative to the
+installation prefix.  For example:
+
+.. code-block:: cmake
+
+  target_include_directories(mylib PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/mylib>
+    $<INSTALL_INTERFACE:include/mylib>  # <prefix>/include/mylib
+  )
+
+Creating Relocatable Packages
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. |INTERFACE_PROPERTY_LINK| replace:: :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES`
+.. include:: /include/INTERFACE_INCLUDE_DIRECTORIES_WARNING.txt
diff --git a/share/cmake-3.22/Help/command/target_link_directories.rst b/share/cmake-3.22/Help/command/target_link_directories.rst
new file mode 100644
index 0000000..bb75a3d
--- /dev/null
+++ b/share/cmake-3.22/Help/command/target_link_directories.rst
@@ -0,0 +1,57 @@
+target_link_directories
+-----------------------
+
+.. versionadded:: 3.13
+
+Add link directories to a target.
+
+.. code-block:: cmake
+
+  target_link_directories(<target> [BEFORE]
+    <INTERFACE|PUBLIC|PRIVATE> [items1...]
+    [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
+
+Specifies the paths in which the linker should search for libraries when
+linking a given target.  Each item can be an absolute or relative path,
+with the latter being interpreted as relative to the current source
+directory.  These items will be added to the link command.
+
+The named ``<target>`` must have been created by a command such as
+:command:`add_executable` or :command:`add_library` and must not be an
+:ref:`ALIAS target <Alias Targets>`.
+
+The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
+specify the scope of the items that follow them.  ``PRIVATE`` and
+``PUBLIC`` items will populate the :prop_tgt:`LINK_DIRECTORIES` property
+of ``<target>``.  ``PUBLIC`` and ``INTERFACE`` items will populate the
+:prop_tgt:`INTERFACE_LINK_DIRECTORIES` property of ``<target>``
+(:ref:`IMPORTED targets <Imported Targets>` only support ``INTERFACE`` items).
+Each item specifies a link directory and will be converted to an absolute
+path if necessary before adding it to the relevant property.  Repeated
+calls for the same ``<target>`` append items in the order called.
+
+If ``BEFORE`` is specified, the content will be prepended to the relevant
+property instead of being appended.
+
+Arguments to ``target_link_directories`` may use "generator expressions"
+with the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)`
+manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
+manual for more on defining buildsystem properties.
+
+.. note::
+
+  This command is rarely necessary and should be avoided where there are
+  other choices.  Prefer to pass full absolute paths to libraries where
+  possible, since this ensures the correct library will always be linked.
+  The :command:`find_library` command provides the full path, which can
+  generally be used directly in calls to :command:`target_link_libraries`.
+  Situations where a library search path may be needed include:
+
+  - Project generators like Xcode where the user can switch target
+    architecture at build time, but a full path to a library cannot
+    be used because it only provides one architecture (i.e. it is not
+    a universal binary).
+  - Libraries may themselves have other private library dependencies
+    that expect to be found via ``RPATH`` mechanisms, but some linkers
+    are not able to fully decode those paths (e.g. due to the presence
+    of things like ``$ORIGIN``).
diff --git a/share/cmake-3.22/Help/command/target_link_libraries.rst b/share/cmake-3.22/Help/command/target_link_libraries.rst
new file mode 100644
index 0000000..c85094a
--- /dev/null
+++ b/share/cmake-3.22/Help/command/target_link_libraries.rst
@@ -0,0 +1,407 @@
+target_link_libraries
+---------------------
+
+.. only:: html
+
+   .. contents::
+
+Specify libraries or flags to use when linking a given target and/or
+its dependents.  :ref:`Usage requirements <Target Usage Requirements>`
+from linked library targets will be propagated.  Usage requirements
+of a target's dependencies affect compilation of its own sources.
+
+Overview
+^^^^^^^^
+
+This command has several signatures as detailed in subsections below.
+All of them have the general form
+
+.. code-block:: cmake
+
+  target_link_libraries(<target> ... <item>... ...)
+
+The named ``<target>`` must have been created by a command such as
+:command:`add_executable` or :command:`add_library` and must not be an
+:ref:`ALIAS target <Alias Targets>`.  If policy :policy:`CMP0079` is not
+set to ``NEW`` then the target must have been created in the current
+directory.  Repeated calls for the same ``<target>`` append items in
+the order called.
+
+.. versionadded:: 3.13
+  The ``<target>`` doesn't have to be defined in the same directory as the
+  ``target_link_libraries`` call.
+
+Each ``<item>`` may be:
+
+* **A library target name**: The generated link line will have the
+  full path to the linkable library file associated with the target.
+  The buildsystem will have a dependency to re-link ``<target>`` if
+  the library file changes.
+
+  The named target must be created by :command:`add_library` within
+  the project or as an :ref:`IMPORTED library <Imported Targets>`.
+  If it is created within the project an ordering dependency will
+  automatically be added in the build system to make sure the named
+  library target is up-to-date before the ``<target>`` links.
+
+  If an imported library has the :prop_tgt:`IMPORTED_NO_SONAME`
+  target property set, CMake may ask the linker to search for
+  the library instead of using the full path
+  (e.g. ``/usr/lib/libfoo.so`` becomes ``-lfoo``).
+
+  The full path to the target's artifact will be quoted/escaped for
+  the shell automatically.
+
+* **A full path to a library file**: The generated link line will
+  normally preserve the full path to the file. The buildsystem will
+  have a dependency to re-link ``<target>`` if the library file changes.
+
+  There are some cases where CMake may ask the linker to search for
+  the library (e.g. ``/usr/lib/libfoo.so`` becomes ``-lfoo``), such
+  as when a shared library is detected to have no ``SONAME`` field.
+  See policy :policy:`CMP0060` for discussion of another case.
+
+  If the library file is in a macOS framework, the ``Headers`` directory
+  of the framework will also be processed as a
+  :ref:`usage requirement <Target Usage Requirements>`.  This has the same
+  effect as passing the framework directory as an include directory.
+
+  .. versionadded:: 3.8
+    On :ref:`Visual Studio Generators` for VS 2010 and above, library files
+    ending in ``.targets`` will be treated as MSBuild targets files and
+    imported into generated project files.  This is not supported by other
+    generators.
+
+  The full path to the library file will be quoted/escaped for
+  the shell automatically.
+
+* **A plain library name**: The generated link line will ask the linker
+  to search for the library (e.g. ``foo`` becomes ``-lfoo`` or ``foo.lib``).
+
+  The library name/flag is treated as a command-line string fragment and
+  will be used with no extra quoting or escaping.
+
+* **A link flag**: Item names starting with ``-``, but not ``-l`` or
+  ``-framework``, are treated as linker flags.  Note that such flags will
+  be treated like any other library link item for purposes of transitive
+  dependencies, so they are generally safe to specify only as private link
+  items that will not propagate to dependents.
+
+  Link flags specified here are inserted into the link command in the same
+  place as the link libraries. This might not be correct, depending on
+  the linker. Use the :prop_tgt:`LINK_OPTIONS` target property or
+  :command:`target_link_options` command to add link
+  flags explicitly. The flags will then be placed at the toolchain-defined
+  flag position in the link command.
+
+  .. versionadded:: 3.13
+    :prop_tgt:`LINK_OPTIONS` target property and :command:`target_link_options`
+    command.  For earlier versions of CMake, use :prop_tgt:`LINK_FLAGS`
+    property instead.
+
+  The link flag is treated as a command-line string fragment and
+  will be used with no extra quoting or escaping.
+
+* **A generator expression**: A ``$<...>`` :manual:`generator expression
+  <cmake-generator-expressions(7)>` may evaluate to any of the above
+  items or to a :ref:`semicolon-separated list <CMake Language Lists>` of them.
+  If the ``...`` contains any ``;`` characters, e.g. after evaluation
+  of a ``${list}`` variable, be sure to use an explicitly quoted
+  argument ``"$<...>"`` so that this command receives it as a
+  single ``<item>``.
+
+  Additionally, a generator expression may be used as a fragment of
+  any of the above items, e.g. ``foo$<1:_d>``.
+
+  Note that generator expressions will not be used in OLD handling of
+  policy :policy:`CMP0003` or policy :policy:`CMP0004`.
+
+* A ``debug``, ``optimized``, or ``general`` keyword immediately followed
+  by another ``<item>``.  The item following such a keyword will be used
+  only for the corresponding build configuration.  The ``debug`` keyword
+  corresponds to the ``Debug`` configuration (or to configurations named
+  in the :prop_gbl:`DEBUG_CONFIGURATIONS` global property if it is set).
+  The ``optimized`` keyword corresponds to all other configurations.  The
+  ``general`` keyword corresponds to all configurations, and is purely
+  optional.  Higher granularity may be achieved for per-configuration
+  rules by creating and linking to
+  :ref:`IMPORTED library targets <Imported Targets>`.
+  These keywords are interpreted immediately by this command and therefore
+  have no special meaning when produced by a generator expression.
+
+Items containing ``::``, such as ``Foo::Bar``, are assumed to be
+:ref:`IMPORTED <Imported Targets>` or :ref:`ALIAS <Alias Targets>` library
+target names and will cause an error if no such target exists.
+See policy :policy:`CMP0028`.
+
+See the :manual:`cmake-buildsystem(7)` manual for more on defining
+buildsystem properties.
+
+Libraries for a Target and/or its Dependents
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  target_link_libraries(<target>
+                        <PRIVATE|PUBLIC|INTERFACE> <item>...
+                       [<PRIVATE|PUBLIC|INTERFACE> <item>...]...)
+
+The ``PUBLIC``, ``PRIVATE`` and ``INTERFACE`` keywords can be used to
+specify both the link dependencies and the link interface in one command.
+Libraries and targets following ``PUBLIC`` are linked to, and are made
+part of the link interface.  Libraries and targets following ``PRIVATE``
+are linked to, but are not made part of the link interface.  Libraries
+following ``INTERFACE`` are appended to the link interface and are not
+used for linking ``<target>``.
+
+Libraries for both a Target and its Dependents
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  target_link_libraries(<target> <item>...)
+
+Library dependencies are transitive by default with this signature.
+When this target is linked into another target then the libraries
+linked to this target will appear on the link line for the other
+target too.  This transitive "link interface" is stored in the
+:prop_tgt:`INTERFACE_LINK_LIBRARIES` target property and may be overridden
+by setting the property directly.  When :policy:`CMP0022` is not set to
+``NEW``, transitive linking is built in but may be overridden by the
+:prop_tgt:`LINK_INTERFACE_LIBRARIES` property.  Calls to other signatures
+of this command may set the property making any libraries linked
+exclusively by this signature private.
+
+Libraries for a Target and/or its Dependents (Legacy)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  target_link_libraries(<target>
+                        <LINK_PRIVATE|LINK_PUBLIC> <lib>...
+                       [<LINK_PRIVATE|LINK_PUBLIC> <lib>...]...)
+
+The ``LINK_PUBLIC`` and ``LINK_PRIVATE`` modes can be used to specify both
+the link dependencies and the link interface in one command.
+
+This signature is for compatibility only.  Prefer the ``PUBLIC`` or
+``PRIVATE`` keywords instead.
+
+Libraries and targets following ``LINK_PUBLIC`` are linked to, and are
+made part of the :prop_tgt:`INTERFACE_LINK_LIBRARIES`.  If policy
+:policy:`CMP0022` is not ``NEW``, they are also made part of the
+:prop_tgt:`LINK_INTERFACE_LIBRARIES`.  Libraries and targets following
+``LINK_PRIVATE`` are linked to, but are not made part of the
+:prop_tgt:`INTERFACE_LINK_LIBRARIES` (or :prop_tgt:`LINK_INTERFACE_LIBRARIES`).
+
+Libraries for Dependents Only (Legacy)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  target_link_libraries(<target> LINK_INTERFACE_LIBRARIES <item>...)
+
+The ``LINK_INTERFACE_LIBRARIES`` mode appends the libraries to the
+:prop_tgt:`INTERFACE_LINK_LIBRARIES` target property instead of using them
+for linking.  If policy :policy:`CMP0022` is not ``NEW``, then this mode
+also appends libraries to the :prop_tgt:`LINK_INTERFACE_LIBRARIES` and its
+per-configuration equivalent.
+
+This signature is for compatibility only.  Prefer the ``INTERFACE`` mode
+instead.
+
+Libraries specified as ``debug`` are wrapped in a generator expression to
+correspond to debug builds.  If policy :policy:`CMP0022` is
+not ``NEW``, the libraries are also appended to the
+:prop_tgt:`LINK_INTERFACE_LIBRARIES_DEBUG <LINK_INTERFACE_LIBRARIES_<CONFIG>>`
+property (or to the properties corresponding to configurations listed in
+the :prop_gbl:`DEBUG_CONFIGURATIONS` global property if it is set).
+Libraries specified as ``optimized`` are appended to the
+:prop_tgt:`INTERFACE_LINK_LIBRARIES` property.  If policy :policy:`CMP0022`
+is not ``NEW``, they are also appended to the
+:prop_tgt:`LINK_INTERFACE_LIBRARIES` property.  Libraries specified as
+``general`` (or without any keyword) are treated as if specified for both
+``debug`` and ``optimized``.
+
+Linking Object Libraries
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.12
+
+:ref:`Object Libraries` may be used as the ``<target>`` (first) argument
+of ``target_link_libraries`` to specify dependencies of their sources
+on other libraries.  For example, the code
+
+.. code-block:: cmake
+
+  add_library(A SHARED a.c)
+  target_compile_definitions(A PUBLIC A)
+
+  add_library(obj OBJECT obj.c)
+  target_compile_definitions(obj PUBLIC OBJ)
+  target_link_libraries(obj PUBLIC A)
+
+compiles ``obj.c`` with ``-DA -DOBJ`` and establishes usage requirements
+for ``obj`` that propagate to its dependents.
+
+Normal libraries and executables may link to :ref:`Object Libraries`
+to get their objects and usage requirements.  Continuing the above
+example, the code
+
+.. code-block:: cmake
+
+  add_library(B SHARED b.c)
+  target_link_libraries(B PUBLIC obj)
+
+compiles ``b.c`` with ``-DA -DOBJ``, creates shared library ``B``
+with object files from ``b.c`` and ``obj.c``, and links ``B`` to ``A``.
+Furthermore, the code
+
+.. code-block:: cmake
+
+  add_executable(main main.c)
+  target_link_libraries(main B)
+
+compiles ``main.c`` with ``-DA -DOBJ`` and links executable ``main``
+to ``B`` and ``A``.  The object library's usage requirements are
+propagated transitively through ``B``, but its object files are not.
+
+:ref:`Object Libraries` may "link" to other object libraries to get
+usage requirements, but since they do not have a link step nothing
+is done with their object files.  Continuing from the above example,
+the code:
+
+.. code-block:: cmake
+
+  add_library(obj2 OBJECT obj2.c)
+  target_link_libraries(obj2 PUBLIC obj)
+
+  add_executable(main2 main2.c)
+  target_link_libraries(main2 obj2)
+
+compiles ``obj2.c`` with ``-DA -DOBJ``, creates executable ``main2``
+with object files from ``main2.c`` and ``obj2.c``, and links ``main2``
+to ``A``.
+
+In other words, when :ref:`Object Libraries` appear in a target's
+:prop_tgt:`INTERFACE_LINK_LIBRARIES` property they will be
+treated as :ref:`Interface Libraries`, but when they appear in
+a target's :prop_tgt:`LINK_LIBRARIES` property their object files
+will be included in the link too.
+
+.. _`Linking Object Libraries via $<TARGET_OBJECTS>`:
+
+Linking Object Libraries via $<TARGET_OBJECTS>
+""""""""""""""""""""""""""""""""""""""""""""""
+
+.. versionadded:: 3.21
+
+The object files associated with an object library may be referenced
+by the :genex:`$<TARGET_OBJECTS>` generator expression.  Such object
+files are placed on the link line *before* all libraries, regardless
+of their relative order.  Additionally, an ordering dependency will be
+added to the build system to make sure the object library is up-to-date
+before the dependent target links.  For example, the code
+
+.. code-block:: cmake
+
+  add_library(obj3 OBJECT obj3.c)
+  target_compile_definitions(obj3 PUBLIC OBJ3)
+
+  add_executable(main3 main3.c)
+  target_link_libraries(main3 PRIVATE a3 $<TARGET_OBJECTS:obj3> b3)
+
+links executable ``main3`` with object files from ``main3.c``
+and ``obj3.c`` followed by the ``a3`` and ``b3`` libraries.
+``main3.c`` is *not* compiled with usage requirements from ``obj3``,
+such as ``-DOBJ3``.
+
+This approach can be used to achieve transitive inclusion of object
+files in link lines as usage requirements.  Continuing the above
+example, the code
+
+.. code-block:: cmake
+
+  add_library(iface_obj3 INTERFACE)
+  target_link_libraries(iface_obj3 INTERFACE obj3 $<TARGET_OBJECTS:obj3>)
+
+creates an interface library ``iface_obj3`` that forwards the ``obj3``
+usage requirements and adds the ``obj3`` object files to dependents'
+link lines.  The code
+
+.. code-block:: cmake
+
+  add_executable(use_obj3 use_obj3.c)
+  target_link_libraries(use_obj3 PRIVATE iface_obj3)
+
+compiles ``use_obj3.c`` with ``-DOBJ3`` and links executable ``use_obj3``
+with object files from ``use_obj3.c`` and ``obj3.c``.
+
+This also works transitively through a static library.  Since a static
+library does not link, it does not consume the object files from
+object libraries referenced this way.  Instead, the object files
+become transitive link dependencies of the static library.
+Continuing the above example, the code
+
+.. code-block:: cmake
+
+  add_library(static3 STATIC static3.c)
+  target_link_libraries(static3 PRIVATE iface_obj3)
+
+  add_executable(use_static3 use_static3.c)
+  target_link_libraries(use_static3 PRIVATE static3)
+
+compiles ``static3.c`` with ``-DOBJ3`` and creates ``libstatic3.a``
+using only its own object file.  ``use_static3.c`` is compiled *without*
+``-DOBJ3`` because the usage requirement is not transitive through
+the private dependency of ``static3``.  However, the link dependencies
+of ``static3`` are propagated, including the ``iface_obj3`` reference
+to ``$<TARGET_OBJECTS:obj3>``.  The ``use_static3`` executable is
+created with object files from ``use_static3.c`` and ``obj3.c``, and
+linked to library ``libstatic3.a``.
+
+When using this approach, it is the project's responsibility to avoid
+linking multiple dependent binaries to ``iface_obj3``, because they will
+all get the ``obj3`` object files on their link lines.
+
+.. note::
+
+  Referencing :genex:`$<TARGET_OBJECTS>` in ``target_link_libraries``
+  calls worked in versions of CMake prior to 3.21 for some cases,
+  but was not fully supported:
+
+  * It did not place the object files before libraries on link lines.
+  * It did not add an ordering dependency on the object library.
+  * It did not work in Xcode with multiple architectures.
+
+Cyclic Dependencies of Static Libraries
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The library dependency graph is normally acyclic (a DAG), but in the case
+of mutually-dependent ``STATIC`` libraries CMake allows the graph to
+contain cycles (strongly connected components).  When another target links
+to one of the libraries, CMake repeats the entire connected component.
+For example, the code
+
+.. code-block:: cmake
+
+  add_library(A STATIC a.c)
+  add_library(B STATIC b.c)
+  target_link_libraries(A B)
+  target_link_libraries(B A)
+  add_executable(main main.c)
+  target_link_libraries(main A)
+
+links ``main`` to ``A B A B``.  While one repetition is usually
+sufficient, pathological object file and symbol arrangements can require
+more.  One may handle such cases by using the
+:prop_tgt:`LINK_INTERFACE_MULTIPLICITY` target property or by manually
+repeating the component in the last ``target_link_libraries`` call.
+However, if two archives are really so interdependent they should probably
+be combined into a single archive, perhaps by using :ref:`Object Libraries`.
+
+Creating Relocatable Packages
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. |INTERFACE_PROPERTY_LINK| replace:: :prop_tgt:`INTERFACE_LINK_LIBRARIES`
+.. include:: /include/INTERFACE_LINK_LIBRARIES_WARNING.txt
diff --git a/share/cmake-3.22/Help/command/target_link_options.rst b/share/cmake-3.22/Help/command/target_link_options.rst
new file mode 100644
index 0000000..87dff39
--- /dev/null
+++ b/share/cmake-3.22/Help/command/target_link_options.rst
@@ -0,0 +1,54 @@
+target_link_options
+-------------------
+
+.. versionadded:: 3.13
+
+Add options to the link step for an executable, shared library or module
+library target.
+
+.. code-block:: cmake
+
+  target_link_options(<target> [BEFORE]
+    <INTERFACE|PUBLIC|PRIVATE> [items1...]
+    [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
+
+The named ``<target>`` must have been created by a command such as
+:command:`add_executable` or :command:`add_library` and must not be an
+:ref:`ALIAS target <Alias Targets>`.
+
+This command can be used to add any link options, but alternative commands
+exist to add libraries (:command:`target_link_libraries` or
+:command:`link_libraries`).  See documentation of the
+:prop_dir:`directory <LINK_OPTIONS>` and
+:prop_tgt:`target <LINK_OPTIONS>` ``LINK_OPTIONS`` properties.
+
+.. note::
+
+  This command cannot be used to add options for static library targets,
+  since they do not use a linker.  To add archiver or MSVC librarian flags,
+  see the :prop_tgt:`STATIC_LIBRARY_OPTIONS` target property.
+
+If ``BEFORE`` is specified, the content will be prepended to the property
+instead of being appended.
+
+The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
+specify the scope of the following arguments.  ``PRIVATE`` and ``PUBLIC``
+items will populate the :prop_tgt:`LINK_OPTIONS` property of
+``<target>``.  ``PUBLIC`` and ``INTERFACE`` items will populate the
+:prop_tgt:`INTERFACE_LINK_OPTIONS` property of ``<target>``.
+The following arguments specify link options.  Repeated calls for the same
+``<target>`` append items in the order called.
+
+.. note::
+  :ref:`IMPORTED targets <Imported Targets>` only support ``INTERFACE`` items.
+
+Arguments to ``target_link_options`` may use "generator expressions"
+with the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)`
+manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
+manual for more on defining buildsystem properties.
+
+.. include:: DEVICE_LINK_OPTIONS.txt
+
+.. include:: OPTIONS_SHELL.txt
+
+.. include:: LINK_OPTIONS_LINKER.txt
diff --git a/share/cmake-3.22/Help/command/target_precompile_headers.rst b/share/cmake-3.22/Help/command/target_precompile_headers.rst
new file mode 100644
index 0000000..9f7dabb
--- /dev/null
+++ b/share/cmake-3.22/Help/command/target_precompile_headers.rst
@@ -0,0 +1,125 @@
+target_precompile_headers
+-------------------------
+
+.. versionadded:: 3.16
+
+Add a list of header files to precompile.
+
+Precompiling header files can speed up compilation by creating a partially
+processed version of some header files, and then using that version during
+compilations rather than repeatedly parsing the original headers.
+
+Main Form
+^^^^^^^^^
+
+.. code-block:: cmake
+
+  target_precompile_headers(<target>
+    <INTERFACE|PUBLIC|PRIVATE> [header1...]
+    [<INTERFACE|PUBLIC|PRIVATE> [header2...] ...])
+
+The command adds header files to the :prop_tgt:`PRECOMPILE_HEADERS` and/or
+:prop_tgt:`INTERFACE_PRECOMPILE_HEADERS` target properties of ``<target>``.
+The named ``<target>`` must have been created by a command such as
+:command:`add_executable` or :command:`add_library` and must not be an
+:ref:`ALIAS target <Alias Targets>`.
+
+The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
+specify the scope of the following arguments.  ``PRIVATE`` and ``PUBLIC``
+items will populate the :prop_tgt:`PRECOMPILE_HEADERS` property of
+``<target>``.  ``PUBLIC`` and ``INTERFACE`` items will populate the
+:prop_tgt:`INTERFACE_PRECOMPILE_HEADERS` property of ``<target>``
+(:ref:`IMPORTED targets <Imported Targets>` only support ``INTERFACE`` items).
+Repeated calls for the same ``<target>`` will append items in the order called.
+
+Projects should generally avoid using ``PUBLIC`` or ``INTERFACE`` for targets
+that will be :ref:`exported <install(EXPORT)>`, or they should at least use
+the :genex:`$<BUILD_INTERFACE:...>` generator expression to prevent precompile
+headers from appearing in an installed exported target.  Consumers of a target
+should typically be in control of what precompile headers they use, not have
+precompile headers forced on them by the targets being consumed (since
+precompile headers are not typically usage requirements).  A notable exception
+to this is where an :ref:`interface library <Interface Libraries>` is created
+to define a commonly used set of precompile headers in one place and then other
+targets link to that interface library privately.  In this case, the interface
+library exists specifically to propagate the precompile headers to its
+consumers and the consumer is effectively still in control, since it decides
+whether to link to the interface library or not.
+
+The list of header files is used to generate a header file named
+``cmake_pch.h|xx`` which is used to generate the precompiled header file
+(``.pch``, ``.gch``, ``.pchi``) artifact.  The ``cmake_pch.h|xx`` header
+file will be force included (``-include`` for GCC, ``/FI`` for MSVC) to
+all source files, so sources do not need to have ``#include "pch.h"``.
+
+Header file names specified with angle brackets (e.g. ``<unordered_map>``) or
+explicit double quotes (escaped for the :manual:`cmake-language(7)`,
+e.g. ``[["other_header.h"]]``) will be treated as is, and include directories
+must be available for the compiler to find them.  Other header file names
+(e.g. ``project_header.h``) are interpreted as being relative to the current
+source directory (e.g. :variable:`CMAKE_CURRENT_SOURCE_DIR`) and will be
+included by absolute path.  For example:
+
+.. code-block:: cmake
+
+  target_precompile_headers(myTarget
+    PUBLIC
+      project_header.h
+    PRIVATE
+      [["other_header.h"]]
+      <unordered_map>
+  )
+
+Arguments to ``target_precompile_headers()`` may use "generator expressions"
+with the syntax ``$<...>``.
+See the :manual:`cmake-generator-expressions(7)` manual for available
+expressions.
+The :genex:`$<COMPILE_LANGUAGE:...>` generator expression is particularly
+useful for specifying a language-specific header to precompile for
+only one language (e.g. ``CXX`` and not ``C``).  In this case, header
+file names that are not explicitly in double quotes or angle brackets
+must be specified by absolute path.  Also, when specifying angle brackets
+inside a generator expression, be sure to encode the closing ``>`` as
+``$<ANGLE-R>``.  For example:
+
+.. code-block:: cmake
+
+  target_precompile_headers(mylib PRIVATE
+    "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/cxx_only.h>"
+    "$<$<COMPILE_LANGUAGE:C>:<stddef.h$<ANGLE-R>>"
+    "$<$<COMPILE_LANGUAGE:CXX>:<cstddef$<ANGLE-R>>"
+  )
+
+
+Reusing Precompile Headers
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The command also supports a second signature which can be used to specify that
+one target re-uses a precompiled header file artifact from another target
+instead of generating its own:
+
+.. code-block:: cmake
+
+  target_precompile_headers(<target> REUSE_FROM <other_target>)
+
+This form sets the :prop_tgt:`PRECOMPILE_HEADERS_REUSE_FROM` property to
+``<other_target>`` and adds a dependency such that ``<target>`` will depend
+on ``<other_target>``.  CMake will halt with an error if the
+:prop_tgt:`PRECOMPILE_HEADERS` property of ``<target>`` is already set when
+the ``REUSE_FROM`` form is used.
+
+.. note::
+
+  The ``REUSE_FROM`` form requires the same set of compiler options,
+  compiler flags and compiler definitions for both ``<target>`` and
+  ``<other_target>``.  Some compilers (e.g. GCC) may issue a warning if the
+  precompiled header file cannot be used (``-Winvalid-pch``).
+
+See Also
+^^^^^^^^
+
+To disable precompile headers for specific targets, see the
+:prop_tgt:`DISABLE_PRECOMPILE_HEADERS` target property.
+
+To prevent precompile headers from being used when compiling a specific
+source file, see the :prop_sf:`SKIP_PRECOMPILE_HEADERS` source file property.
diff --git a/share/cmake-3.22/Help/command/target_sources.rst b/share/cmake-3.22/Help/command/target_sources.rst
new file mode 100644
index 0000000..520614a
--- /dev/null
+++ b/share/cmake-3.22/Help/command/target_sources.rst
@@ -0,0 +1,48 @@
+target_sources
+--------------
+
+.. versionadded:: 3.1
+
+Add sources to a target.
+
+.. code-block:: cmake
+
+  target_sources(<target>
+    <INTERFACE|PUBLIC|PRIVATE> [items1...]
+    [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
+
+Specifies sources to use when building a target and/or its dependents.
+The named ``<target>`` must have been created by a command such as
+:command:`add_executable` or :command:`add_library` or
+:command:`add_custom_target` and must not be an
+:ref:`ALIAS target <Alias Targets>`.
+
+.. versionchanged:: 3.13
+  Relative source file paths are interpreted as being relative to the current
+  source directory (i.e. :variable:`CMAKE_CURRENT_SOURCE_DIR`).
+  See policy :policy:`CMP0076`.
+
+.. versionadded:: 3.20
+  ``<target>`` can be a custom target.
+
+The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
+specify the scope of the items following them.  ``PRIVATE`` and ``PUBLIC``
+items will populate the :prop_tgt:`SOURCES` property of
+``<target>``, which are used when building the target itself.
+``PUBLIC`` and ``INTERFACE`` items will populate the
+:prop_tgt:`INTERFACE_SOURCES` property of ``<target>``, which are used
+when building dependents.
+The following arguments specify sources.  Repeated calls for the same
+``<target>`` append items in the order called. The targets created by
+:command:`add_custom_target` can only have ``PRIVATE`` scope.
+
+.. versionadded:: 3.3
+  Allow exporting targets with :prop_tgt:`INTERFACE_SOURCES`.
+
+.. versionadded:: 3.11
+  Allow setting ``INTERFACE`` items on :ref:`IMPORTED targets <Imported Targets>`.
+
+Arguments to ``target_sources`` may use "generator expressions"
+with the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)`
+manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
+manual for more on defining buildsystem properties.
diff --git a/share/cmake-3.22/Help/command/try_compile.rst b/share/cmake-3.22/Help/command/try_compile.rst
new file mode 100644
index 0000000..06da910
--- /dev/null
+++ b/share/cmake-3.22/Help/command/try_compile.rst
@@ -0,0 +1,214 @@
+try_compile
+-----------
+
+.. only:: html
+
+   .. contents::
+
+Try building some code.
+
+Try Compiling Whole Projects
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  try_compile(<resultVar> <bindir> <srcdir>
+              <projectName> [<targetName>] [CMAKE_FLAGS <flags>...]
+              [OUTPUT_VARIABLE <var>])
+
+Try building a project.  The success or failure of the ``try_compile``,
+i.e. ``TRUE`` or ``FALSE`` respectively, is returned in ``<resultVar>``.
+
+.. versionadded:: 3.14
+  The name of the ``<resultVar>`` is defined by the user.  Previously, it had
+  a fixed name ``RESULT_VAR``.
+
+In this form, ``<srcdir>`` should contain a complete CMake project with a
+``CMakeLists.txt`` file and all sources.  The ``<bindir>`` and ``<srcdir>``
+will not be deleted after this command is run.  Specify ``<targetName>`` to
+build a specific target instead of the ``all`` or ``ALL_BUILD`` target.  See
+below for the meaning of other options.
+
+Try Compiling Source Files
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  try_compile(<resultVar> <bindir> <srcfile|SOURCES srcfile...>
+              [CMAKE_FLAGS <flags>...]
+              [COMPILE_DEFINITIONS <defs>...]
+              [LINK_OPTIONS <options>...]
+              [LINK_LIBRARIES <libs>...]
+              [OUTPUT_VARIABLE <var>]
+              [COPY_FILE <fileName> [COPY_FILE_ERROR <var>]]
+              [<LANG>_STANDARD <std>]
+              [<LANG>_STANDARD_REQUIRED <bool>]
+              [<LANG>_EXTENSIONS <bool>]
+              )
+
+Try building an executable or static library from one or more source files
+(which one is determined by the :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE`
+variable).  The success or failure of the ``try_compile``, i.e. ``TRUE`` or
+``FALSE`` respectively, is returned in ``<resultVar>``.
+
+.. versionadded:: 3.14
+  The name of the ``<resultVar>`` is defined by the user.  Previously, it had
+  a fixed name ``RESULT_VAR``.
+
+In this form, one or more source files must be provided.  If
+:variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` is unset or is set to ``EXECUTABLE``,
+the sources must include a definition for ``main`` and CMake will create a
+``CMakeLists.txt`` file to build the source(s) as an executable.
+If :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` is set to ``STATIC_LIBRARY``,
+a static library will be built instead and no definition for ``main`` is
+required.  For an executable, the generated ``CMakeLists.txt`` file would
+contain something like the following:
+
+.. code-block:: cmake
+
+  add_definitions(<expanded COMPILE_DEFINITIONS from caller>)
+  include_directories(${INCLUDE_DIRECTORIES})
+  link_directories(${LINK_DIRECTORIES})
+  add_executable(cmTryCompileExec <srcfile>...)
+  target_link_options(cmTryCompileExec PRIVATE <LINK_OPTIONS from caller>)
+  target_link_libraries(cmTryCompileExec ${LINK_LIBRARIES})
+
+The options are:
+
+``CMAKE_FLAGS <flags>...``
+  Specify flags of the form ``-DVAR:TYPE=VALUE`` to be passed to
+  the ``cmake`` command-line used to drive the test build.
+  The above example shows how values for variables
+  ``INCLUDE_DIRECTORIES``, ``LINK_DIRECTORIES``, and ``LINK_LIBRARIES``
+  are used.
+
+``COMPILE_DEFINITIONS <defs>...``
+  Specify ``-Ddefinition`` arguments to pass to :command:`add_definitions`
+  in the generated test project.
+
+``COPY_FILE <fileName>``
+  Copy the built executable or static library to the given ``<fileName>``.
+
+``COPY_FILE_ERROR <var>``
+  Use after ``COPY_FILE`` to capture into variable ``<var>`` any error
+  message encountered while trying to copy the file.
+
+``LINK_LIBRARIES <libs>...``
+  Specify libraries to be linked in the generated project.
+  The list of libraries may refer to system libraries and to
+  :ref:`Imported Targets <Imported Targets>` from the calling project.
+
+  If this option is specified, any ``-DLINK_LIBRARIES=...`` value
+  given to the ``CMAKE_FLAGS`` option will be ignored.
+
+``LINK_OPTIONS <options>...``
+  .. versionadded:: 3.14
+
+  Specify link step options to pass to :command:`target_link_options` or to
+  set the :prop_tgt:`STATIC_LIBRARY_OPTIONS` target property in the generated
+  project, depending on the :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable.
+
+``OUTPUT_VARIABLE <var>``
+  Store the output from the build process in the given variable.
+
+``<LANG>_STANDARD <std>``
+  .. versionadded:: 3.8
+
+  Specify the :prop_tgt:`C_STANDARD`, :prop_tgt:`CXX_STANDARD`,
+  :prop_tgt:`OBJC_STANDARD`, :prop_tgt:`OBJCXX_STANDARD`,
+  or :prop_tgt:`CUDA_STANDARD` target property of the generated project.
+
+``<LANG>_STANDARD_REQUIRED <bool>``
+  .. versionadded:: 3.8
+
+  Specify the :prop_tgt:`C_STANDARD_REQUIRED`,
+  :prop_tgt:`CXX_STANDARD_REQUIRED`, :prop_tgt:`OBJC_STANDARD_REQUIRED`,
+  :prop_tgt:`OBJCXX_STANDARD_REQUIRED`,or :prop_tgt:`CUDA_STANDARD_REQUIRED`
+  target property of the generated project.
+
+``<LANG>_EXTENSIONS <bool>``
+  .. versionadded:: 3.8
+
+  Specify the :prop_tgt:`C_EXTENSIONS`, :prop_tgt:`CXX_EXTENSIONS`,
+  :prop_tgt:`OBJC_EXTENSIONS`, :prop_tgt:`OBJCXX_EXTENSIONS`,
+  or :prop_tgt:`CUDA_EXTENSIONS` target property of the generated project.
+
+In this version all files in ``<bindir>/CMakeFiles/CMakeTmp`` will be
+cleaned automatically.  For debugging, ``--debug-trycompile`` can be
+passed to ``cmake`` to avoid this clean.  However, multiple sequential
+``try_compile`` operations reuse this single output directory.  If you use
+``--debug-trycompile``, you can only debug one ``try_compile`` call at a time.
+The recommended procedure is to protect all ``try_compile`` calls in your
+project by ``if(NOT DEFINED <resultVar>)`` logic, configure with cmake
+all the way through once, then delete the cache entry associated with
+the try_compile call of interest, and then re-run cmake again with
+``--debug-trycompile``.
+
+Other Behavior Settings
+^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.4
+  If set, the following variables are passed in to the generated
+  try_compile CMakeLists.txt to initialize compile target properties with
+  default values:
+
+  * :variable:`CMAKE_CUDA_RUNTIME_LIBRARY`
+  * :variable:`CMAKE_ENABLE_EXPORTS`
+  * :variable:`CMAKE_LINK_SEARCH_START_STATIC`
+  * :variable:`CMAKE_LINK_SEARCH_END_STATIC`
+  * :variable:`CMAKE_MSVC_RUNTIME_LIBRARY`
+  * :variable:`CMAKE_POSITION_INDEPENDENT_CODE`
+
+  If :policy:`CMP0056` is set to ``NEW``, then
+  :variable:`CMAKE_EXE_LINKER_FLAGS` is passed in as well.
+
+.. versionchanged:: 3.14
+  If :policy:`CMP0083` is set to ``NEW``, then in order to obtain correct
+  behavior at link time, the ``check_pie_supported()`` command from the
+  :module:`CheckPIESupported` module must be called before using the
+  :command:`try_compile` command.
+
+The current settings of :policy:`CMP0065` and :policy:`CMP0083` are propagated
+through to the generated test project.
+
+Set the :variable:`CMAKE_TRY_COMPILE_CONFIGURATION` variable to choose
+a build configuration.
+
+.. versionadded:: 3.6
+  Set the :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable to specify
+  the type of target used for the source file signature.
+
+.. versionadded:: 3.6
+  Set the :variable:`CMAKE_TRY_COMPILE_PLATFORM_VARIABLES` variable to specify
+  variables that must be propagated into the test project.  This variable is
+  meant for use only in toolchain files and is only honored by the
+  ``try_compile()`` command for the source files form, not when given a whole
+  project.
+
+.. versionchanged:: 3.8
+  If :policy:`CMP0067` is set to ``NEW``, or any of the ``<LANG>_STANDARD``,
+  ``<LANG>_STANDARD_REQUIRED``, or ``<LANG>_EXTENSIONS`` options are used,
+  then the language standard variables are honored:
+
+  * :variable:`CMAKE_C_STANDARD`
+  * :variable:`CMAKE_C_STANDARD_REQUIRED`
+  * :variable:`CMAKE_C_EXTENSIONS`
+  * :variable:`CMAKE_CXX_STANDARD`
+  * :variable:`CMAKE_CXX_STANDARD_REQUIRED`
+  * :variable:`CMAKE_CXX_EXTENSIONS`
+  * :variable:`CMAKE_OBJC_STANDARD`
+  * :variable:`CMAKE_OBJC_STANDARD_REQUIRED`
+  * :variable:`CMAKE_OBJC_EXTENSIONS`
+  * :variable:`CMAKE_OBJCXX_STANDARD`
+  * :variable:`CMAKE_OBJCXX_STANDARD_REQUIRED`
+  * :variable:`CMAKE_OBJCXX_EXTENSIONS`
+  * :variable:`CMAKE_CUDA_STANDARD`
+  * :variable:`CMAKE_CUDA_STANDARD_REQUIRED`
+  * :variable:`CMAKE_CUDA_EXTENSIONS`
+
+  Their values are used to set the corresponding target properties in
+  the generated project (unless overridden by an explicit option).
+
+.. versionchanged:: 3.14
+  For the :generator:`Green Hills MULTI` generator the GHS toolset and target
+  system customization cache variables are also propagated into the test project.
diff --git a/share/cmake-3.22/Help/command/try_run.rst b/share/cmake-3.22/Help/command/try_run.rst
new file mode 100644
index 0000000..404de98
--- /dev/null
+++ b/share/cmake-3.22/Help/command/try_run.rst
@@ -0,0 +1,123 @@
+try_run
+-------
+
+.. only:: html
+
+   .. contents::
+
+Try compiling and then running some code.
+
+Try Compiling and Running Source Files
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  try_run(<runResultVar> <compileResultVar>
+          <bindir> <srcfile> [CMAKE_FLAGS <flags>...]
+          [COMPILE_DEFINITIONS <defs>...]
+          [LINK_OPTIONS <options>...]
+          [LINK_LIBRARIES <libs>...]
+          [COMPILE_OUTPUT_VARIABLE <var>]
+          [RUN_OUTPUT_VARIABLE <var>]
+          [OUTPUT_VARIABLE <var>]
+          [WORKING_DIRECTORY <var>]
+          [ARGS <args>...])
+
+Try compiling a ``<srcfile>``.  Returns ``TRUE`` or ``FALSE`` for success
+or failure in ``<compileResultVar>``.  If the compile succeeded, runs the
+executable and returns its exit code in ``<runResultVar>``.  If the
+executable was built, but failed to run, then ``<runResultVar>`` will be
+set to ``FAILED_TO_RUN``.  See the :command:`try_compile` command for
+information on how the test project is constructed to build the source file.
+
+.. versionadded:: 3.14
+  The names of the result variables ``<runResultVar>`` and
+  ``<compileResultVar>`` are defined by the user.  Previously, they had
+  fixed names ``RUN_RESULT_VAR`` and ``COMPILE_RESULT_VAR``.
+
+The options are:
+
+``CMAKE_FLAGS <flags>...``
+  Specify flags of the form ``-DVAR:TYPE=VALUE`` to be passed to
+  the ``cmake`` command-line used to drive the test build.
+  The example in :command:`try_compile` shows how values for variables
+  ``INCLUDE_DIRECTORIES``, ``LINK_DIRECTORIES``, and ``LINK_LIBRARIES``
+  are used.
+
+``COMPILE_DEFINITIONS <defs>...``
+  Specify ``-Ddefinition`` arguments to pass to :command:`add_definitions`
+  in the generated test project.
+
+``COMPILE_OUTPUT_VARIABLE <var>``
+  Report the compile step build output in a given variable.
+
+``LINK_LIBRARIES <libs>...``
+  .. versionadded:: 3.2
+
+  Specify libraries to be linked in the generated project.
+  The list of libraries may refer to system libraries and to
+  :ref:`Imported Targets <Imported Targets>` from the calling project.
+
+  If this option is specified, any ``-DLINK_LIBRARIES=...`` value
+  given to the ``CMAKE_FLAGS`` option will be ignored.
+
+``LINK_OPTIONS <options>...``
+  .. versionadded:: 3.14
+
+  Specify link step options to pass to :command:`target_link_options` in the
+  generated project.
+
+``OUTPUT_VARIABLE <var>``
+  Report the compile build output and the output from running the executable
+  in the given variable.  This option exists for legacy reasons.  Prefer
+  ``COMPILE_OUTPUT_VARIABLE`` and ``RUN_OUTPUT_VARIABLE`` instead.
+
+``RUN_OUTPUT_VARIABLE <var>``
+  Report the output from running the executable in a given variable.
+
+``WORKING_DIRECTORY <var>``
+  .. versionadded:: 3.20
+
+  Run the executable in the given directory. If no ``WORKING_DIRECTORY`` is
+  specified, the executable will run in ``<bindir>``.
+
+Other Behavior Settings
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Set the :variable:`CMAKE_TRY_COMPILE_CONFIGURATION` variable to choose
+a build configuration.
+
+Behavior when Cross Compiling
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.3
+  Use ``CMAKE_CROSSCOMPILING_EMULATOR`` when running cross-compiled
+  binaries.
+
+When cross compiling, the executable compiled in the first step
+usually cannot be run on the build host.  The ``try_run`` command checks
+the :variable:`CMAKE_CROSSCOMPILING` variable to detect whether CMake is in
+cross-compiling mode.  If that is the case, it will still try to compile
+the executable, but it will not try to run the executable unless the
+:variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable is set.  Instead it
+will create cache variables which must be filled by the user or by
+presetting them in some CMake script file to the values the executable
+would have produced if it had been run on its actual target platform.
+These cache entries are:
+
+``<runResultVar>``
+  Exit code if the executable were to be run on the target platform.
+
+``<runResultVar>__TRYRUN_OUTPUT``
+  Output from stdout and stderr if the executable were to be run on
+  the target platform.  This is created only if the
+  ``RUN_OUTPUT_VARIABLE`` or ``OUTPUT_VARIABLE`` option was used.
+
+In order to make cross compiling your project easier, use ``try_run``
+only if really required.  If you use ``try_run``, use the
+``RUN_OUTPUT_VARIABLE`` or ``OUTPUT_VARIABLE`` options only if really
+required.  Using them will require that when cross-compiling, the cache
+variables will have to be set manually to the output of the executable.
+You can also "guard" the calls to ``try_run`` with an :command:`if`
+block checking the :variable:`CMAKE_CROSSCOMPILING` variable and
+provide an easy-to-preset alternative for this case.
diff --git a/share/cmake-3.18/Help/command/unset.rst b/share/cmake-3.22/Help/command/unset.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/unset.rst
rename to share/cmake-3.22/Help/command/unset.rst
diff --git a/share/cmake-3.18/Help/command/use_mangled_mesa.rst b/share/cmake-3.22/Help/command/use_mangled_mesa.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/use_mangled_mesa.rst
rename to share/cmake-3.22/Help/command/use_mangled_mesa.rst
diff --git a/share/cmake-3.18/Help/command/utility_source.rst b/share/cmake-3.22/Help/command/utility_source.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/utility_source.rst
rename to share/cmake-3.22/Help/command/utility_source.rst
diff --git a/share/cmake-3.18/Help/command/variable_requires.rst b/share/cmake-3.22/Help/command/variable_requires.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/variable_requires.rst
rename to share/cmake-3.22/Help/command/variable_requires.rst
diff --git a/share/cmake-3.22/Help/command/variable_watch.rst b/share/cmake-3.22/Help/command/variable_watch.rst
new file mode 100644
index 0000000..8293f5a
--- /dev/null
+++ b/share/cmake-3.22/Help/command/variable_watch.rst
@@ -0,0 +1,48 @@
+variable_watch
+--------------
+
+Watch the CMake variable for change.
+
+.. code-block:: cmake
+
+  variable_watch(<variable> [<command>])
+
+If the specified ``<variable>`` changes and no ``<command>`` is given,
+a message will be printed to inform about the change.
+
+If ``<command>`` is given, this command will be executed instead.
+The command will receive the following arguments:
+``COMMAND(<variable> <access> <value> <current_list_file> <stack>)``
+
+``<variable>``
+ Name of the variable being accessed.
+
+``<access>``
+ One of ``READ_ACCESS``, ``UNKNOWN_READ_ACCESS``, ``MODIFIED_ACCESS``,
+ ``UNKNOWN_MODIFIED_ACCESS``, or ``REMOVED_ACCESS``.  The ``UNKNOWN_``
+ values are only used when the variable has never been set.  Once set,
+ they are never used again during the same CMake run, even if the
+ variable is later unset.
+
+``<value>``
+ The value of the variable.  On a modification, this is the new
+ (modified) value of the variable.  On removal, the value is empty.
+
+``<current_list_file>``
+ Full path to the file doing the access.
+
+``<stack>``
+ List of absolute paths of all files currently on the stack of file
+ inclusion, with the bottom-most file first and the currently
+ processed file (that is, ``current_list_file``) last.
+
+Note that for some accesses such as :command:`list(APPEND)`, the watcher
+is executed twice, first with a read access and then with a write one.
+Also note that an :command:`if(DEFINED)` query on the variable does not
+register as an access and the watcher is not executed.
+
+Only non-cache variables can be watched using this command.  Access to
+cache variables is never watched.  However, the existence of a cache
+variable ``var`` causes accesses to the non-cache variable ``var`` to
+not use the ``UNKNOWN_`` prefix, even if a non-cache variable ``var``
+has never existed.
diff --git a/share/cmake-3.18/Help/command/while.rst b/share/cmake-3.22/Help/command/while.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/while.rst
rename to share/cmake-3.22/Help/command/while.rst
diff --git a/share/cmake-3.18/Help/command/write_file.rst b/share/cmake-3.22/Help/command/write_file.rst
similarity index 100%
rename from share/cmake-3.18/Help/command/write_file.rst
rename to share/cmake-3.22/Help/command/write_file.rst
diff --git a/share/cmake-3.22/Help/cpack_gen/archive.rst b/share/cmake-3.22/Help/cpack_gen/archive.rst
new file mode 100644
index 0000000..47e8e13
--- /dev/null
+++ b/share/cmake-3.22/Help/cpack_gen/archive.rst
@@ -0,0 +1,89 @@
+CPack Archive Generator
+-----------------------
+
+CPack generator for packaging files into an archive, which can have
+any of the following formats:
+
+  - 7Z - 7zip - (.7z)
+  - TBZ2 (.tar.bz2)
+  - TGZ (.tar.gz)
+  - TXZ (.tar.xz)
+  - TZ (.tar.Z)
+  - TZST (.tar.zst)
+  - ZIP (.zip)
+
+.. versionadded:: 3.1
+  ``7Z`` and ``TXZ`` formats support.
+
+.. versionadded:: 3.16
+  ``TZST`` format support.
+
+When this generator is called from ``CPackSourceConfig.cmake`` (or through
+the ``package_source`` target), then the generated archive will contain all
+files in the project directory, except those specified in
+:variable:`CPACK_SOURCE_IGNORE_FILES`.  The following is one example of
+packaging all source files of a project:
+
+.. code-block:: cmake
+
+  set(CPACK_SOURCE_GENERATOR "TGZ")
+  set(CPACK_SOURCE_IGNORE_FILES
+    \\.git/
+    build/
+    ".*~$"
+  )
+  set(CPACK_VERBATIM_VARIABLES YES)
+  include(CPack)
+
+When this generator is called from ``CPackConfig.cmake`` (or through the
+``package`` target), then the generated archive will contain all files
+that have been installed via CMake's :command:`install` command (and the
+deprecated commands :command:`install_files`, :command:`install_programs`,
+and :command:`install_targets`).
+
+Variables specific to CPack Archive generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. variable:: CPACK_ARCHIVE_FILE_NAME
+              CPACK_ARCHIVE_<component>_FILE_NAME
+
+  Package file name without extension. The extension is determined from the
+  archive format (see list above) and automatically appended to the file name.
+  The default is ``<CPACK_PACKAGE_FILE_NAME>[-<component>]``, with spaces
+  replaced by '-'.
+
+  .. versionadded:: 3.9
+    Per-component ``CPACK_ARCHIVE_<component>_FILE_NAME`` variables.
+
+.. variable:: CPACK_ARCHIVE_COMPONENT_INSTALL
+
+  Enable component packaging. If enabled (ON), then the archive generator
+  creates  multiple packages. The default is OFF, which means that a single
+  package containing files of all components is generated.
+
+Variables used by CPack Archive generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+These variables are used by the Archive generator, but are also available to
+CPack generators which are essentially archives at their core. These include:
+
+  - :cpack_gen:`CPack Cygwin Generator`
+  - :cpack_gen:`CPack FreeBSD Generator`
+
+.. variable:: CPACK_ARCHIVE_THREADS
+
+  .. versionadded:: 3.18
+
+  The number of threads to use when performing the compression. If set to
+  ``0``, the number of available cores on the machine will be used instead.
+  The default is ``1`` which limits compression to a single thread. Note that
+  not all compression modes support threading in all environments. Currently,
+  only the XZ compression may support it.
+
+  See also the :variable:`CPACK_THREADS` variable.
+
+  .. versionadded:: 3.21
+
+    Official CMake binaries available on ``cmake.org`` now ship
+    with a ``liblzma`` that supports parallel compression.
+    Older versions did not.
diff --git a/share/cmake-3.22/Help/cpack_gen/bundle.rst b/share/cmake-3.22/Help/cpack_gen/bundle.rst
new file mode 100644
index 0000000..5e335c0
--- /dev/null
+++ b/share/cmake-3.22/Help/cpack_gen/bundle.rst
@@ -0,0 +1,76 @@
+CPack Bundle Generator
+----------------------
+
+CPack Bundle generator (macOS) specific options
+
+Variables specific to CPack Bundle generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Installers built on macOS using the Bundle generator use the
+aforementioned DragNDrop (``CPACK_DMG_xxx``) variables, plus the following
+Bundle-specific parameters (``CPACK_BUNDLE_xxx``).
+
+.. variable:: CPACK_BUNDLE_NAME
+
+ The name of the generated bundle. This appears in the macOS Finder as the
+ bundle name. Required.
+
+.. variable:: CPACK_BUNDLE_PLIST
+
+ Path to an macOS Property List (``.plist``) file that will be used
+ for the generated bundle. This
+ assumes that the caller has generated or specified their own ``Info.plist``
+ file. Required.
+
+.. variable:: CPACK_BUNDLE_ICON
+
+ Path to an macOS icon file that will be used as the icon for the generated
+ bundle. This is the icon that appears in the macOS Finder for the bundle, and
+ in the macOS dock when the bundle is opened. Required.
+
+.. variable:: CPACK_BUNDLE_STARTUP_COMMAND
+
+ Path to a startup script. This is a path to an executable or script that
+ will be run whenever an end-user double-clicks the generated bundle in the
+ macOS Finder. Optional.
+
+.. variable:: CPACK_BUNDLE_APPLE_CERT_APP
+
+ .. versionadded:: 3.2
+
+ The name of your Apple supplied code signing certificate for the application.
+ The name usually takes the form ``Developer ID Application: [Name]`` or
+ ``3rd Party Mac Developer Application: [Name]``. If this variable is not set
+ the application will not be signed.
+
+.. variable:: CPACK_BUNDLE_APPLE_ENTITLEMENTS
+
+ .. versionadded:: 3.2
+
+ The name of the Property List (``.plist``) file that contains your Apple
+ entitlements for sandboxing your application. This file is required
+ for submission to the macOS App Store.
+
+.. variable:: CPACK_BUNDLE_APPLE_CODESIGN_FILES
+
+ .. versionadded:: 3.2
+
+ A list of additional files that you wish to be signed. You do not need to
+ list the main application folder, or the main executable. You should
+ list any frameworks and plugins that are included in your app bundle.
+
+.. variable:: CPACK_BUNDLE_APPLE_CODESIGN_PARAMETER
+
+ .. versionadded:: 3.3
+
+ Additional parameter that will passed to ``codesign``.
+ Default value: ``--deep -f``
+
+.. variable:: CPACK_COMMAND_CODESIGN
+
+ .. versionadded:: 3.2
+
+ Path to the ``codesign(1)`` command used to sign applications with an
+ Apple cert. This variable can be used to override the automatically
+ detected command (or specify its location if the auto-detection fails
+ to find it).
diff --git a/share/cmake-3.22/Help/cpack_gen/cygwin.rst b/share/cmake-3.22/Help/cpack_gen/cygwin.rst
new file mode 100644
index 0000000..c537a79
--- /dev/null
+++ b/share/cmake-3.22/Help/cpack_gen/cygwin.rst
@@ -0,0 +1,30 @@
+CPack Cygwin Generator
+----------------------
+
+Cygwin CPack generator (Cygwin).
+
+Variables affecting the CPack Cygwin generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- .. versionadded:: 3.18
+    :variable:`CPACK_ARCHIVE_THREADS`
+
+
+Variables specific to CPack Cygwin generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The
+following variable is specific to installers build on and/or for
+Cygwin:
+
+.. variable:: CPACK_CYGWIN_PATCH_NUMBER
+
+ The Cygwin patch number.  FIXME: This documentation is incomplete.
+
+.. variable:: CPACK_CYGWIN_PATCH_FILE
+
+ The Cygwin patch file.  FIXME: This documentation is incomplete.
+
+.. variable:: CPACK_CYGWIN_BUILD_SCRIPT
+
+ The Cygwin build script.  FIXME: This documentation is incomplete.
diff --git a/share/cmake-3.22/Help/cpack_gen/deb.rst b/share/cmake-3.22/Help/cpack_gen/deb.rst
new file mode 100644
index 0000000..f96ca32
--- /dev/null
+++ b/share/cmake-3.22/Help/cpack_gen/deb.rst
@@ -0,0 +1,700 @@
+CPack DEB Generator
+-------------------
+
+The built in (binary) CPack DEB generator (Unix only)
+
+Variables specific to CPack Debian (DEB) generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The CPack DEB generator may be used to create DEB package using :module:`CPack`.
+The CPack DEB generator is a :module:`CPack` generator thus it uses the
+``CPACK_XXX`` variables used by :module:`CPack`.
+
+The CPack DEB generator should work on any Linux host but it will produce
+better deb package when Debian specific tools ``dpkg-xxx`` are usable on
+the build system.
+
+The CPack DEB generator has specific features which are controlled by the
+specifics ``CPACK_DEBIAN_XXX`` variables.
+
+``CPACK_DEBIAN_<COMPONENT>_XXXX`` variables may be used in order to have
+**component** specific values.  Note however that ``<COMPONENT>`` refers to
+the **grouping name** written in upper case. It may be either a component name
+or a component GROUP name.
+
+Here are some CPack DEB generator wiki resources that are here for historic
+reasons and are no longer maintained but may still prove useful:
+
+ - https://gitlab.kitware.com/cmake/community/-/wikis/doc/cpack/Configuration
+ - https://gitlab.kitware.com/cmake/community/-/wikis/doc/cpack/PackageGenerators#deb-unix-only
+
+List of CPack DEB generator specific variables:
+
+.. variable:: CPACK_DEB_COMPONENT_INSTALL
+
+ Enable component packaging for CPackDEB
+
+ * Mandatory : NO
+ * Default   : OFF
+
+ If enabled (ON) multiple packages are generated. By default a single package
+ containing files of all components is generated.
+
+.. variable:: CPACK_DEBIAN_PACKAGE_NAME
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_NAME
+
+ Set Package control field (variable is automatically transformed to lower
+ case).
+
+ * Mandatory : YES
+ * Default   :
+
+   - :variable:`CPACK_PACKAGE_NAME` for non-component based
+     installations
+   - :variable:`CPACK_DEBIAN_PACKAGE_NAME` suffixed with -<COMPONENT>
+     for component-based installations.
+
+ .. versionadded:: 3.5
+  Per-component ``CPACK_DEBIAN_<COMPONENT>_PACKAGE_NAME`` variables.
+
+ See https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source
+
+.. variable:: CPACK_DEBIAN_FILE_NAME
+              CPACK_DEBIAN_<COMPONENT>_FILE_NAME
+
+ .. versionadded:: 3.6
+
+ Package file name.
+
+ * Mandatory : YES
+ * Default   : ``<CPACK_PACKAGE_FILE_NAME>[-<component>].deb``
+
+ This may be set to ``DEB-DEFAULT`` to allow the CPack DEB generator to generate
+ package file name by itself in deb format::
+
+   <PackageName>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
+
+ Alternatively provided package file name must end
+ with either ``.deb`` or ``.ipk`` suffix.
+
+ .. versionadded:: 3.10
+  ``.ipk`` suffix used by OPKG packaging system.
+
+ .. note::
+
+   Preferred setting of this variable is ``DEB-DEFAULT`` but for backward
+   compatibility with the CPack DEB generator in CMake prior to version 3.6 this
+   feature is disabled by default.
+
+ .. note::
+
+   By using non default filenames duplicate names may occur. Duplicate files
+   get overwritten and it is up to the packager to set the variables in a
+   manner that will prevent such errors.
+
+.. variable:: CPACK_DEBIAN_PACKAGE_EPOCH
+
+ .. versionadded:: 3.10
+
+ The Debian package epoch
+
+ * Mandatory : No
+ * Default   : -
+
+ Optional number that should be incremented when changing versioning schemas
+ or fixing mistakes in the version numbers of older packages.
+
+.. variable:: CPACK_DEBIAN_PACKAGE_VERSION
+
+ The Debian package version
+
+ * Mandatory : YES
+ * Default   : :variable:`CPACK_PACKAGE_VERSION`
+
+ This variable may contain only alphanumerics (A-Za-z0-9) and the characters
+ . + - ~ (full stop, plus, hyphen, tilde) and should start with a digit. If
+ :variable:`CPACK_DEBIAN_PACKAGE_RELEASE` is not set then hyphens are not
+ allowed.
+
+ .. note::
+
+   For backward compatibility with CMake 3.9 and lower a failed test of this
+   variable's content is not a hard error when both
+   :variable:`CPACK_DEBIAN_PACKAGE_RELEASE` and
+   :variable:`CPACK_DEBIAN_PACKAGE_EPOCH` variables are not set. An author
+   warning is reported instead.
+
+.. variable:: CPACK_DEBIAN_PACKAGE_RELEASE
+
+ .. versionadded:: 3.6
+
+ The Debian package release - Debian revision number.
+
+ * Mandatory : No
+ * Default   : -
+
+ This is the numbering of the DEB package itself, i.e. the version of the
+ packaging and not the version of the content (see
+ :variable:`CPACK_DEBIAN_PACKAGE_VERSION`). One may change the default value
+ if the previous packaging was buggy and/or you want to put here a fancy Linux
+ distro specific numbering.
+
+.. variable:: CPACK_DEBIAN_PACKAGE_ARCHITECTURE
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE
+
+ The Debian package architecture
+
+ * Mandatory : YES
+ * Default   : Output of ``dpkg --print-architecture`` (or ``i386``
+   if ``dpkg`` is not found)
+
+ .. versionadded:: 3.6
+  Per-component ``CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE`` variables.
+
+.. variable:: CPACK_DEBIAN_PACKAGE_DEPENDS
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS
+
+ Sets the Debian dependencies of this package.
+
+ * Mandatory : NO
+ * Default   :
+
+   - An empty string for non-component based installations
+   - :variable:`CPACK_DEBIAN_PACKAGE_DEPENDS` for component-based
+     installations.
+
+
+ .. versionadded:: 3.3
+  Per-component ``CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS`` variables.
+
+ .. note::
+
+   If :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS` or
+   more specifically :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPS`
+   is set for this component, the discovered dependencies will be appended
+   to :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS` instead of
+   :variable:`CPACK_DEBIAN_PACKAGE_DEPENDS`. If
+   :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS` is an empty string,
+   only the automatically discovered dependencies will be set for this
+   component.
+
+ Example::
+
+   set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.3.1-6), libc6 (< 2.4)")
+
+.. variable:: CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS
+
+ .. versionadded:: 3.6
+
+ Sets inter-component dependencies if listed with
+ :variable:`CPACK_COMPONENT_<compName>_DEPENDS` variables.
+
+ * Mandatory : NO
+ * Default   : -
+
+.. variable:: CPACK_DEBIAN_PACKAGE_MAINTAINER
+
+ The Debian package maintainer
+
+ * Mandatory : YES
+ * Default   : ``CPACK_PACKAGE_CONTACT``
+
+.. variable:: CPACK_DEBIAN_PACKAGE_DESCRIPTION
+              CPACK_DEBIAN_<COMPONENT>_DESCRIPTION
+
+ The Debian package description
+
+ * Mandatory : YES
+ * Default   :
+
+   - :variable:`CPACK_DEBIAN_<COMPONENT>_DESCRIPTION` (component
+     based installers only) if set, or :variable:`CPACK_DEBIAN_PACKAGE_DESCRIPTION` if set, or
+   - :variable:`CPACK_COMPONENT_<compName>_DESCRIPTION` (component
+     based installers only) if set, or :variable:`CPACK_PACKAGE_DESCRIPTION` if set, or
+   - content of the file specified in :variable:`CPACK_PACKAGE_DESCRIPTION_FILE` if set
+
+ If after that description is not set, :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY` going to be
+ used if set. Otherwise, :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY` will be added as the first
+ line of description as defined in `Debian Policy Manual`_.
+
+ .. versionadded:: 3.3
+  Per-component ``CPACK_COMPONENT_<compName>_DESCRIPTION`` variables.
+
+ .. versionadded:: 3.16
+  Per-component ``CPACK_DEBIAN_<COMPONENT>_DESCRIPTION`` variables.
+
+ .. versionadded:: 3.16
+  The ``CPACK_PACKAGE_DESCRIPTION_FILE`` variable.
+
+.. _Debian Policy Manual: https://www.debian.org/doc/debian-policy/ch-controlfields.html#description
+
+.. variable:: CPACK_DEBIAN_PACKAGE_SECTION
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_SECTION
+
+ Set Section control field e.g. admin, devel, doc, ...
+
+ * Mandatory : YES
+ * Default   : "devel"
+
+ .. versionadded:: 3.5
+  Per-component ``CPACK_DEBIAN_<COMPONENT>_PACKAGE_SECTION`` variables.
+
+ See https://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections
+
+.. variable:: CPACK_DEBIAN_ARCHIVE_TYPE
+
+ .. versionadded:: 3.7
+
+ .. deprecated:: 3.14
+
+ The archive format used for creating the Debian package.
+
+ * Mandatory : YES
+ * Default   : "gnutar"
+
+ Possible value is:
+
+ - gnutar
+
+ .. note::
+
+   This variable previously defaulted to the ``paxr`` value, but ``dpkg``
+   has never supported that tar format. For backwards compatibility the
+   ``paxr`` value will be mapped to ``gnutar`` and a deprecation message
+   will be emitted.
+
+.. variable:: CPACK_DEBIAN_COMPRESSION_TYPE
+
+ .. versionadded:: 3.1
+
+ The compression used for creating the Debian package.
+
+ * Mandatory : YES
+ * Default   : "gzip"
+
+ Possible values are:
+
+  ``lzma``
+    Lempel–Ziv–Markov chain algorithm
+
+  ``xz``
+    XZ Utils compression
+
+  ``bzip2``
+    bzip2 Burrows–Wheeler algorithm
+
+  ``gzip``
+    GNU Gzip compression
+
+  ``zstd``
+    .. versionadded:: 3.22
+
+    Zstandard compression
+
+
+.. variable:: CPACK_DEBIAN_PACKAGE_PRIORITY
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_PRIORITY
+
+ Set Priority control field e.g. required, important, standard, optional,
+ extra
+
+ * Mandatory : YES
+ * Default   : "optional"
+
+ .. versionadded:: 3.5
+  Per-component ``CPACK_DEBIAN_<COMPONENT>_PACKAGE_PRIORITY`` variables.
+
+ See https://www.debian.org/doc/debian-policy/ch-archive.html#s-priorities
+
+.. variable:: CPACK_DEBIAN_PACKAGE_HOMEPAGE
+
+ The URL of the web site for this package, preferably (when applicable) the
+ site from which the original source can be obtained and any additional
+ upstream documentation or information may be found.
+
+ * Mandatory : NO
+ * Default   : :variable:`CMAKE_PROJECT_HOMEPAGE_URL`
+
+ .. versionadded:: 3.12
+  The ``CMAKE_PROJECT_HOMEPAGE_URL`` variable.
+
+ .. note::
+
+   The content of this field is a simple URL without any surrounding
+   characters such as <>.
+
+.. variable:: CPACK_DEBIAN_PACKAGE_SHLIBDEPS
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPS
+
+ May be set to ON in order to use ``dpkg-shlibdeps`` to generate
+ better package dependency list.
+
+ * Mandatory : NO
+ * Default   :
+
+   - :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS` if set or
+   - OFF
+
+ .. note::
+
+   You may need set :variable:`CMAKE_INSTALL_RPATH` to an appropriate value
+   if you use this feature, because if you don't ``dpkg-shlibdeps``
+   may fail to find your own shared libs.
+   See https://gitlab.kitware.com/cmake/community/-/wikis/doc/cmake/RPATH-handling
+
+ .. note::
+
+   You can also set :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS`
+   to an appropriate value if you use this feature, in order to please
+   ``dpkg-shlibdeps``. However, you should only do this for private
+   shared libraries that could not get resolved otherwise.
+
+ .. versionadded:: 3.3
+  Per-component ``CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPS`` variables.
+
+ .. versionadded:: 3.6
+  Correct handling of ``$ORIGIN`` in :variable:`CMAKE_INSTALL_RPATH`.
+
+.. variable:: CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS
+
+ .. versionadded:: 3.20
+
+ May be set to a list of directories that will be given to ``dpkg-shlibdeps``
+ via its ``-l`` option. These will be searched by ``dpkg-shlibdeps`` in order
+ to find private shared library dependencies.
+
+ * Mandatory : NO
+ * Default   :
+
+ .. note::
+
+   You should prefer to set :variable:`CMAKE_INSTALL_RPATH` to an appropriate
+   value if you use ``dpkg-shlibdeps``. The current option is really only
+   needed for private shared library dependencies.
+
+.. variable:: CPACK_DEBIAN_PACKAGE_DEBUG
+
+ May be set when invoking cpack in order to trace debug information
+ during the CPack DEB generator run.
+
+ * Mandatory : NO
+ * Default   : -
+
+.. variable:: CPACK_DEBIAN_PACKAGE_PREDEPENDS
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_PREDEPENDS
+
+ Sets the `Pre-Depends` field of the Debian package.
+ Like :variable:`Depends <CPACK_DEBIAN_PACKAGE_DEPENDS>`, except that it
+ also forces ``dpkg`` to complete installation of the packages named
+ before even starting the installation of the package which declares the
+ pre-dependency.
+
+ * Mandatory : NO
+ * Default   :
+
+   - An empty string for non-component based installations
+   - :variable:`CPACK_DEBIAN_PACKAGE_PREDEPENDS` for component-based
+     installations.
+
+ .. versionadded:: 3.4
+  Per-component ``CPACK_DEBIAN_<COMPONENT>_PACKAGE_PREDEPENDS`` variables.
+
+ See http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
+
+.. variable:: CPACK_DEBIAN_PACKAGE_ENHANCES
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_ENHANCES
+
+ Sets the `Enhances` field of the Debian package.
+ Similar to :variable:`Suggests <CPACK_DEBIAN_PACKAGE_SUGGESTS>` but works
+ in the opposite direction: declares that a package can enhance the
+ functionality of another package.
+
+ * Mandatory : NO
+ * Default   :
+
+   - An empty string for non-component based installations
+   - :variable:`CPACK_DEBIAN_PACKAGE_ENHANCES` for component-based
+     installations.
+
+ .. versionadded:: 3.4
+  Per-component ``CPACK_DEBIAN_<COMPONENT>_PACKAGE_ENHANCES`` variables.
+
+ See http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
+
+.. variable:: CPACK_DEBIAN_PACKAGE_BREAKS
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_BREAKS
+
+ Sets the `Breaks` field of the Debian package.
+ When a binary package (P) declares that it breaks other packages (B),
+ ``dpkg`` will not allow the package (P) which declares `Breaks` be
+ **unpacked** unless the packages that will be broken (B) are deconfigured
+ first.
+ As long as the package (P) is configured, the previously deconfigured
+ packages (B) cannot be reconfigured again.
+
+ * Mandatory : NO
+ * Default   :
+
+   - An empty string for non-component based installations
+   - :variable:`CPACK_DEBIAN_PACKAGE_BREAKS` for component-based
+     installations.
+
+ .. versionadded:: 3.4
+  Per-component ``CPACK_DEBIAN_<COMPONENT>_PACKAGE_BREAKS`` variables.
+
+ See https://www.debian.org/doc/debian-policy/ch-relationships.html#s-breaks
+
+.. variable:: CPACK_DEBIAN_PACKAGE_CONFLICTS
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONFLICTS
+
+ Sets the `Conflicts` field of the Debian package.
+ When one binary package declares a conflict with another using a `Conflicts`
+ field, ``dpkg`` will not allow them to be unpacked on the system at
+ the same time.
+
+ * Mandatory : NO
+ * Default   :
+
+   - An empty string for non-component based installations
+   - :variable:`CPACK_DEBIAN_PACKAGE_CONFLICTS` for component-based
+     installations.
+
+ .. versionadded:: 3.4
+  Per-component ``CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONFLICTS`` variables.
+
+ See https://www.debian.org/doc/debian-policy/ch-relationships.html#s-conflicts
+
+ .. note::
+
+   This is a stronger restriction than
+   :variable:`Breaks <CPACK_DEBIAN_PACKAGE_BREAKS>`, which prevents the
+   broken package from being configured while the breaking package is in
+   the "Unpacked" state but allows both packages to be unpacked at the same
+   time.
+
+.. variable:: CPACK_DEBIAN_PACKAGE_PROVIDES
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_PROVIDES
+
+ Sets the `Provides` field of the Debian package.
+ A virtual package is one which appears in the `Provides` control field of
+ another package.
+
+ * Mandatory : NO
+ * Default   :
+
+   - An empty string for non-component based installations
+   - :variable:`CPACK_DEBIAN_PACKAGE_PROVIDES` for component-based
+     installations.
+
+ .. versionadded:: 3.4
+  Per-component ``CPACK_DEBIAN_<COMPONENT>_PACKAGE_PROVIDES`` variables.
+
+ See https://www.debian.org/doc/debian-policy/ch-relationships.html#s-virtual
+
+.. variable:: CPACK_DEBIAN_PACKAGE_REPLACES
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_REPLACES
+
+ Sets the `Replaces` field of the Debian package.
+ Packages can declare in their control file that they should overwrite
+ files in certain other packages, or completely replace other packages.
+
+ * Mandatory : NO
+ * Default   :
+
+   - An empty string for non-component based installations
+   - :variable:`CPACK_DEBIAN_PACKAGE_REPLACES` for component-based
+     installations.
+
+ .. versionadded:: 3.4
+  Per-component ``CPACK_DEBIAN_<COMPONENT>_PACKAGE_REPLACES`` variables.
+
+ See http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
+
+.. variable:: CPACK_DEBIAN_PACKAGE_RECOMMENDS
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_RECOMMENDS
+
+ Sets the `Recommends` field of the Debian package.
+ Allows packages to declare a strong, but not absolute, dependency on other
+ packages.
+
+ * Mandatory : NO
+ * Default   :
+
+   - An empty string for non-component based installations
+   - :variable:`CPACK_DEBIAN_PACKAGE_RECOMMENDS` for component-based
+     installations.
+
+ .. versionadded:: 3.4
+  Per-component ``CPACK_DEBIAN_<COMPONENT>_PACKAGE_RECOMMENDS`` variables.
+
+ See http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
+
+.. variable:: CPACK_DEBIAN_PACKAGE_SUGGESTS
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_SUGGESTS
+
+ Sets the `Suggests` field of the Debian package.
+ Allows packages to declare a suggested package install grouping.
+
+ * Mandatory : NO
+ * Default   :
+
+   - An empty string for non-component based installations
+   - :variable:`CPACK_DEBIAN_PACKAGE_SUGGESTS` for component-based
+     installations.
+
+ .. versionadded:: 3.4
+  Per-component ``CPACK_DEBIAN_<COMPONENT>_PACKAGE_SUGGESTS`` variables.
+
+ See http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
+
+.. variable:: CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS
+
+ .. versionadded:: 3.6
+
+ * Mandatory : NO
+ * Default   : OFF
+
+ Allows to generate shlibs control file automatically. Compatibility is defined by
+ :variable:`CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY` variable value.
+
+ .. note::
+
+   Libraries are only considered if they have both library name and version
+   set. This can be done by setting SOVERSION property with
+   :command:`set_target_properties` command.
+
+.. variable:: CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY
+
+ .. versionadded:: 3.6
+
+ Compatibility policy for auto-generated shlibs control file.
+
+ * Mandatory : NO
+ * Default   : "="
+
+ Defines compatibility policy for auto-generated shlibs control file.
+ Possible values: "=", ">="
+
+ See https://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-shlibdeps
+
+.. variable:: CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONTROL_EXTRA
+
+ This variable allow advanced user to add custom script to the
+ control.tar.gz.
+ Typical usage is for conffiles, postinst, postrm, prerm.
+
+ * Mandatory : NO
+ * Default   : -
+
+ Usage::
+
+  set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
+      "${CMAKE_CURRENT_SOURCE_DIR}/prerm;${CMAKE_CURRENT_SOURCE_DIR}/postrm")
+
+ .. versionadded:: 3.4
+  Per-component ``CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONTROL_EXTRA`` variables.
+
+.. variable:: CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONTROL_STRICT_PERMISSION
+
+ .. versionadded:: 3.4
+
+ This variable indicates if the Debian policy on control files should be
+ strictly followed.
+
+ * Mandatory : NO
+ * Default   : FALSE
+
+ Usage::
+
+  set(CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION TRUE)
+
+ This overrides the permissions on the original files, following the rules
+ set by Debian policy
+ https://www.debian.org/doc/debian-policy/ch-files.html#s-permissions-owners
+
+ .. note::
+
+  The original permissions of the files will be used in the final
+  package unless this variable is set to ``TRUE``.
+  In particular, the scripts should have the proper executable
+  flag prior to the generation of the package.
+
+.. variable:: CPACK_DEBIAN_PACKAGE_SOURCE
+              CPACK_DEBIAN_<COMPONENT>_PACKAGE_SOURCE
+
+ .. versionadded:: 3.5
+
+ Sets the ``Source`` field of the binary Debian package.
+ When the binary package name is not the same as the source package name
+ (in particular when several components/binaries are generated from one
+ source) the source from which the binary has been generated should be
+ indicated with the field ``Source``.
+
+ * Mandatory : NO
+ * Default   :
+
+   - An empty string for non-component based installations
+   - :variable:`CPACK_DEBIAN_PACKAGE_SOURCE` for component-based
+     installations.
+
+ See https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source
+
+ .. note::
+
+   This value is not interpreted. It is possible to pass an optional
+   revision number of the referenced source package as well.
+
+Packaging of debug information
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.13
+
+Dbgsym packages contain debug symbols for debugging packaged binaries.
+
+Dbgsym packaging has its own set of variables:
+
+.. variable:: CPACK_DEBIAN_DEBUGINFO_PACKAGE
+              CPACK_DEBIAN_<component>_DEBUGINFO_PACKAGE
+
+ Enable generation of dbgsym .ddeb package(s).
+
+ * Mandatory : NO
+ * Default   : OFF
+
+.. note::
+
+ Setting this also strips the ELF files in the generated non-dbgsym package,
+ which results in debuginfo only being available in the dbgsym package.
+
+.. note::
+
+ Binaries must contain debug symbols before packaging so use either ``Debug``
+ or ``RelWithDebInfo`` for :variable:`CMAKE_BUILD_TYPE` variable value.
+
+ Additionally, if :variable:`CPACK_STRIP_FILES` is set, the files will be stripped before
+ they get to the DEB generator, so will not contain debug symbols and
+ a dbgsym package will not get built. Do not use with :variable:`CPACK_STRIP_FILES`.
+
+Building Debian packages on Windows
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.10
+
+To communicate UNIX file permissions from the install stage
+to the CPack DEB generator the "cmake_mode_t" NTFS
+alternate data stream (ADT) is used.
+
+When a filesystem without ADT support is used only owner read/write
+permissions can be preserved.
+
+Reproducible packages
+^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.13
+
+The environment variable ``SOURCE_DATE_EPOCH`` may be set to a UNIX
+timestamp, defined as the number of seconds, excluding leap seconds,
+since 01 Jan 1970 00:00:00 UTC.  If set, the CPack DEB generator will
+use its value for timestamps in the package.
diff --git a/share/cmake-3.22/Help/cpack_gen/dmg.rst b/share/cmake-3.22/Help/cpack_gen/dmg.rst
new file mode 100644
index 0000000..1f05618
--- /dev/null
+++ b/share/cmake-3.22/Help/cpack_gen/dmg.rst
@@ -0,0 +1,131 @@
+CPack DragNDrop Generator
+-------------------------
+
+The DragNDrop CPack generator (macOS) creates a DMG image.
+
+Variables specific to CPack DragNDrop generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The following variables are specific to the DragNDrop installers built
+on macOS:
+
+.. variable:: CPACK_DMG_VOLUME_NAME
+
+ The volume name of the generated disk image. Defaults to
+ CPACK_PACKAGE_FILE_NAME.
+
+.. variable:: CPACK_DMG_FORMAT
+
+ The disk image format. Common values are ``UDRO`` (UDIF read-only), ``UDZO`` (UDIF
+ zlib-compressed) or ``UDBZ`` (UDIF bzip2-compressed). Refer to ``hdiutil(1)`` for
+ more information on other available formats. Defaults to ``UDZO``.
+
+.. variable:: CPACK_DMG_DS_STORE
+
+ Path to a custom ``.DS_Store`` file. This ``.DS_Store`` file can be used to
+ specify the Finder window position/geometry and layout (such as hidden
+ toolbars, placement of the icons etc.). This file has to be generated by
+ the Finder (either manually or through AppleScript) using a normal folder
+ from which the ``.DS_Store`` file can then be extracted.
+
+.. variable:: CPACK_DMG_DS_STORE_SETUP_SCRIPT
+
+ .. versionadded:: 3.5
+
+ Path to a custom AppleScript file.  This AppleScript is used to generate
+ a ``.DS_Store`` file which specifies the Finder window position/geometry and
+ layout (such as hidden toolbars, placement of the icons etc.).
+ By specifying a custom AppleScript there is no need to use
+ ``CPACK_DMG_DS_STORE``, as the ``.DS_Store`` that is generated by the AppleScript
+ will be packaged.
+
+.. variable:: CPACK_DMG_BACKGROUND_IMAGE
+
+ Path to an image file to be used as the background.  This file will be
+ copied to ``.background``/``background.<ext>``, where ``<ext>`` is the original image file
+ extension.  The background image is installed into the image before
+ ``CPACK_DMG_DS_STORE_SETUP_SCRIPT`` is executed or ``CPACK_DMG_DS_STORE`` is
+ installed.  By default no background image is set.
+
+.. variable:: CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK
+
+ .. versionadded:: 3.6
+
+ Default behavior is to include a symlink to ``/Applications`` in the DMG.
+ Set this option to ``ON`` to avoid adding the symlink.
+
+.. variable:: CPACK_DMG_SLA_DIR
+
+  .. versionadded:: 3.5
+
+  Directory where license and menu files for different languages are stored.
+  Setting this causes CPack to look for a ``<language>.menu.txt`` and
+  ``<language>.license.txt`` or ``<language>.license.rtf`` file for every
+  language defined in ``CPACK_DMG_SLA_LANGUAGES``.  If both this variable and
+  ``CPACK_RESOURCE_FILE_LICENSE`` are set, CPack will only look for the menu
+  files and use the same license file for all languages.  If both
+  ``<language>.license.txt`` and ``<language>.license.rtf`` exist, the ``.txt``
+  file will be used.
+
+  .. versionadded:: 3.17
+    RTF support.
+
+.. variable:: CPACK_DMG_SLA_LANGUAGES
+
+  .. versionadded:: 3.5
+
+  Languages for which a license agreement is provided when mounting the
+  generated DMG. A menu file consists of 9 lines of text. The first line is
+  is the name of the language itself, uppercase, in English (e.g. German).
+  The other lines are translations of the following strings:
+
+  - Agree
+  - Disagree
+  - Print
+  - Save...
+  - You agree to the terms of the License Agreement when you click the
+    "Agree" button.
+  - Software License Agreement
+  - This text cannot be saved. The disk may be full or locked, or the file
+    may be locked.
+  - Unable to print. Make sure you have selected a printer.
+
+  For every language in this list, CPack will try to find files
+  ``<language>.menu.txt`` and ``<language>.license.txt`` in the directory
+  specified by the :variable:`CPACK_DMG_SLA_DIR` variable.
+
+.. variable:: CPACK_DMG_<component>_FILE_NAME
+
+ .. versionadded:: 3.17
+
+ File name when packaging ``<component>`` as its own DMG
+ (``CPACK_COMPONENTS_GROUPING`` set to IGNORE).
+
+ - Default: ``CPACK_PACKAGE_FILE_NAME-<component>``
+
+.. variable:: CPACK_DMG_FILESYSTEM
+
+ .. versionadded:: 3.21
+
+ The filesystem format. Common values are ``APFS`` and ``HFS+``.
+ See ``man hdiutil`` for a full list of supported formats.
+ Defaults to ``HFS+``.
+
+.. variable:: CPACK_COMMAND_HDIUTIL
+
+ Path to the ``hdiutil(1)`` command used to operate on disk image files on
+ macOS. This variable can be used to override the automatically detected
+ command (or specify its location if the auto-detection fails to find it).
+
+.. variable:: CPACK_COMMAND_SETFILE
+
+ Path to the ``SetFile(1)`` command used to set extended attributes on files and
+ directories on macOS. This variable can be used to override the
+ automatically detected command (or specify its location if the
+ auto-detection fails to find it).
+
+.. variable:: CPACK_COMMAND_REZ
+
+ Path to the ``Rez(1)`` command used to compile resources on macOS. This
+ variable can be used to override the automatically detected command (or
+ specify its location if the auto-detection fails to find it).
diff --git a/share/cmake-3.22/Help/cpack_gen/external.rst b/share/cmake-3.22/Help/cpack_gen/external.rst
new file mode 100644
index 0000000..4c083f0
--- /dev/null
+++ b/share/cmake-3.22/Help/cpack_gen/external.rst
@@ -0,0 +1,294 @@
+CPack External Generator
+------------------------
+
+.. versionadded:: 3.13
+
+CPack provides many generators to create packages for a variety of platforms
+and packaging systems. The intention is for CMake/CPack to be a complete
+end-to-end solution for building and packaging a software project. However, it
+may not always be possible to use CPack for the entire packaging process, due
+to either technical limitations or policies that require the use of certain
+tools. For this reason, CPack provides the "External" generator, which allows
+external packaging software to take advantage of some of the functionality
+provided by CPack, such as component installation and the dependency graph.
+
+Integration with External Packaging Tools
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The CPack External generator generates a ``.json`` file containing the
+CPack internal metadata, which gives external software information
+on how to package the software. External packaging software may itself
+invoke CPack, consume the generated metadata,
+install and package files as required.
+
+Alternatively CPack can invoke an external packaging software
+through an optional custom CMake script in
+:variable:`CPACK_EXTERNAL_PACKAGE_SCRIPT` instead.
+
+Staging of installation files may also optionally be
+taken care of by the generator when enabled through the
+:variable:`CPACK_EXTERNAL_ENABLE_STAGING` variable.
+
+JSON Format
+^^^^^^^^^^^
+
+The JSON metadata file contains a list of CPack components and component groups,
+the various options passed to :command:`cpack_add_component` and
+:command:`cpack_add_component_group`, the dependencies between the components
+and component groups, and various other options passed to CPack.
+
+The JSON's root object will always provide two fields:
+``formatVersionMajor`` and ``formatVersionMinor``, which are always integers
+that describe the output format of the generator. Backwards-compatible changes
+to the output format (for example, adding a new field that didn't exist before)
+cause the minor version to be incremented, and backwards-incompatible changes
+(for example, deleting a field or changing its meaning) cause the major version
+to be incremented and the minor version reset to 0. The format version is
+always of the format ``major.minor``. In other words, it always has exactly two
+parts, separated by a period.
+
+You can request one or more specific versions of the output format as described
+below with :variable:`CPACK_EXTERNAL_REQUESTED_VERSIONS`. The output format will
+have a major version that exactly matches the requested major version, and a
+minor version that is greater than or equal to the requested minor version. If
+no version is requested with :variable:`CPACK_EXTERNAL_REQUESTED_VERSIONS`, the
+latest known major version is used by default. Currently, the only supported
+format is 1.0, which is described below.
+
+Version 1.0
+***********
+
+In addition to the standard format fields, format version 1.0 provides the
+following fields in the root:
+
+``components``
+  The ``components`` field is an object with component names as the keys and
+  objects describing the components as the values. The component objects have
+  the following fields:
+
+  ``name``
+    The name of the component. This is always the same as the key in the
+    ``components`` object.
+
+  ``displayName``
+    The value of the ``DISPLAY_NAME`` field passed to
+    :command:`cpack_add_component`.
+
+  ``description``
+    The value of the ``DESCRIPTION`` field passed to
+    :command:`cpack_add_component`.
+
+  ``isHidden``
+    True if ``HIDDEN`` was passed to :command:`cpack_add_component`, false if
+    it was not.
+
+  ``isRequired``
+    True if ``REQUIRED`` was passed to :command:`cpack_add_component`, false if
+    it was not.
+
+  ``isDisabledByDefault``
+    True if ``DISABLED`` was passed to :command:`cpack_add_component`, false if
+    it was not.
+
+  ``group``
+    Only present if ``GROUP`` was passed to :command:`cpack_add_component`. If
+    so, this field is a string value containing the component's group.
+
+  ``dependencies``
+    An array of components the component depends on. This contains the values
+    in the ``DEPENDS`` argument passed to :command:`cpack_add_component`. If no
+    ``DEPENDS`` argument was passed, this is an empty list.
+
+  ``installationTypes``
+    An array of installation types the component is part of. This contains the
+    values in the ``INSTALL_TYPES`` argument passed to
+    :command:`cpack_add_component`. If no ``INSTALL_TYPES`` argument was
+    passed, this is an empty list.
+
+  ``isDownloaded``
+    True if ``DOWNLOADED`` was passed to :command:`cpack_add_component`, false
+    if it was not.
+
+  ``archiveFile``
+    The name of the archive file passed with the ``ARCHIVE_FILE`` argument to
+    :command:`cpack_add_component`. If no ``ARCHIVE_FILE`` argument was passed,
+    this is an empty string.
+
+``componentGroups``
+  The ``componentGroups`` field is an object with component group names as the
+  keys and objects describing the component groups as the values. The component
+  group objects have the following fields:
+
+  ``name``
+    The name of the component group. This is always the same as the key in the
+    ``componentGroups`` object.
+
+  ``displayName``
+    The value of the ``DISPLAY_NAME`` field passed to
+    :command:`cpack_add_component_group`.
+
+  ``description``
+    The value of the ``DESCRIPTION`` field passed to
+    :command:`cpack_add_component_group`.
+
+  ``parentGroup``
+    Only present if ``PARENT_GROUP`` was passed to
+    :command:`cpack_add_component_group`. If so, this field is a string value
+    containing the component group's parent group.
+
+  ``isExpandedByDefault``
+    True if ``EXPANDED`` was passed to :command:`cpack_add_component_group`,
+    false if it was not.
+
+  ``isBold``
+    True if ``BOLD_TITLE`` was passed to :command:`cpack_add_component_group`,
+    false if it was not.
+
+  ``components``
+    An array of names of components that are direct members of the group
+    (components that have this group as their ``GROUP``). Components of
+    subgroups are not included.
+
+  ``subgroups``
+    An array of names of component groups that are subgroups of the group
+    (groups that have this group as their ``PARENT_GROUP``).
+
+``installationTypes``
+  The ``installationTypes`` field is an object with installation type names as
+  the keys and objects describing the installation types as the values. The
+  installation type objects have the following fields:
+
+  ``name``
+    The name of the installation type. This is always the same as the key in
+    the ``installationTypes`` object.
+
+  ``displayName``
+    The value of the ``DISPLAY_NAME`` field passed to
+    :command:`cpack_add_install_type`.
+
+  ``index``
+    The integer index of the installation type in the list.
+
+``projects``
+  The ``projects`` field is an array of objects describing CMake projects which
+  comprise the CPack project. The values in this field are derived from
+  :variable:`CPACK_INSTALL_CMAKE_PROJECTS`. In most cases, this will be only a
+  single project. The project objects have the following fields:
+
+  ``projectName``
+    The project name passed to :variable:`CPACK_INSTALL_CMAKE_PROJECTS`.
+
+  ``component``
+    The name of the component or component set which comprises the project.
+
+  ``directory``
+    The build directory of the CMake project. This is the directory which
+    contains the ``cmake_install.cmake`` script.
+
+  ``subDirectory``
+    The subdirectory to install the project into inside the CPack package.
+
+``packageName``
+  The package name given in :variable:`CPACK_PACKAGE_NAME`. Only present if
+  this option is set.
+
+``packageVersion``
+  The package version given in :variable:`CPACK_PACKAGE_VERSION`. Only present
+  if this option is set.
+
+``packageDescriptionFile``
+  The package description file given in
+  :variable:`CPACK_PACKAGE_DESCRIPTION_FILE`. Only present if this option is
+  set.
+
+``packageDescriptionSummary``
+  The package description summary given in
+  :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY`. Only present if this option is
+  set.
+
+``buildConfig``
+  The build configuration given to CPack with the ``-C`` option. Only present
+  if this option is set.
+
+``defaultDirectoryPermissions``
+  The default directory permissions given in
+  :variable:`CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS`. Only present if this
+  option is set.
+
+``setDestdir``
+  True if :variable:`CPACK_SET_DESTDIR` is true, false if it is not.
+
+``packagingInstallPrefix``
+  The install prefix given in :variable:`CPACK_PACKAGING_INSTALL_PREFIX`. Only
+  present if :variable:`CPACK_SET_DESTDIR` is true.
+
+``stripFiles``
+  True if :variable:`CPACK_STRIP_FILES` is true, false if it is not.
+
+``warnOnAbsoluteInstallDestination``
+  True if :variable:`CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION` is true, false
+  if it is not.
+
+``errorOnAbsoluteInstallDestination``
+  True if :variable:`CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION` is true,
+  false if it is not.
+
+Variables specific to CPack External generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. variable:: CPACK_EXTERNAL_REQUESTED_VERSIONS
+
+  This variable is used to request a specific version of the CPack External
+  generator. It is a list of ``major.minor`` values, separated by semicolons.
+
+  If this variable is set to a non-empty value, the CPack External generator
+  will iterate through each item in the list to search for a version that it
+  knows how to generate. Requested versions should be listed in order of
+  descending preference by the client software, as the first matching version
+  in the list will be generated.
+
+  The generator knows how to generate the version if it has a versioned
+  generator whose major version exactly matches the requested major version,
+  and whose minor version is greater than or equal to the requested minor
+  version. For example, if ``CPACK_EXTERNAL_REQUESTED_VERSIONS`` contains 1.0, and
+  the CPack External generator knows how to generate 1.1, it will generate 1.1.
+  If the generator doesn't know how to generate a version in the list, it skips
+  the version and looks at the next one. If it doesn't know how to generate any
+  of the requested versions, an error is thrown.
+
+  If this variable is not set, or is empty, the CPack External generator will
+  generate the highest major and minor version that it knows how to generate.
+
+  If an invalid version is encountered in ``CPACK_EXTERNAL_REQUESTED_VERSIONS`` (one
+  that doesn't match ``major.minor``, where ``major`` and ``minor`` are
+  integers), it is ignored.
+
+.. variable:: CPACK_EXTERNAL_ENABLE_STAGING
+
+  This variable can be set to true to enable optional installation
+  into a temporary staging area which can then be picked up
+  and packaged by an external packaging tool.
+  The top level directory used by CPack for the current packaging
+  task is contained in ``CPACK_TOPLEVEL_DIRECTORY``.
+  It is automatically cleaned up on each run before packaging is initiated
+  and can be used for custom temporary files required by
+  the external packaging tool.
+  It also contains the staging area ``CPACK_TEMPORARY_DIRECTORY``
+  into which CPack performs the installation when staging is enabled.
+
+.. variable:: CPACK_EXTERNAL_PACKAGE_SCRIPT
+
+  This variable can optionally specify the full path to
+  a CMake script file to be run as part of the CPack invocation.
+  It is invoked after (optional) staging took place and may
+  run an external packaging tool. The script has access to
+  the variables defined by the CPack config file.
+
+.. variable:: CPACK_EXTERNAL_BUILT_PACKAGES
+
+  .. versionadded:: 3.19
+
+  The ``CPACK_EXTERNAL_PACKAGE_SCRIPT`` script may set this list variable to the
+  full paths of generated package files.  CPack will copy these files from the
+  staging directory back to the top build directory and possibly produce
+  checksum files if the :variable:`CPACK_PACKAGE_CHECKSUM` is set.
diff --git a/share/cmake-3.22/Help/cpack_gen/freebsd.rst b/share/cmake-3.22/Help/cpack_gen/freebsd.rst
new file mode 100644
index 0000000..f429bc5
--- /dev/null
+++ b/share/cmake-3.22/Help/cpack_gen/freebsd.rst
@@ -0,0 +1,149 @@
+CPack FreeBSD Generator
+-----------------------
+
+.. versionadded:: 3.10
+
+The built in (binary) CPack FreeBSD (pkg) generator (Unix only)
+
+Variables affecting the CPack FreeBSD (pkg) generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- .. versionadded:: 3.18
+    :variable:`CPACK_ARCHIVE_THREADS`
+
+Variables specific to CPack FreeBSD (pkg) generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The CPack FreeBSD generator may be used to create pkg(8) packages -- these may
+be used on FreeBSD, DragonflyBSD, NetBSD, OpenBSD, but also on Linux or OSX,
+depending on the installed package-management tools -- using :module:`CPack`.
+
+The CPack FreeBSD generator is a :module:`CPack` generator and uses the
+``CPACK_XXX`` variables used by :module:`CPack`. It tries to re-use packaging
+information that may already be specified for Debian packages for the
+:cpack_gen:`CPack DEB Generator`. It also tries to re-use RPM packaging
+information when Debian does not specify.
+
+The CPack FreeBSD generator should work on any host with libpkg installed. The
+packages it produces are specific to the host architecture and ABI.
+
+The CPack FreeBSD generator sets package-metadata through
+``CPACK_FREEBSD_XXX`` variables. The CPack FreeBSD generator, unlike the
+CPack Deb generator, does not specially support componentized packages; a
+single package is created from all the software artifacts created through
+CMake.
+
+All of the variables can be set specifically for FreeBSD packaging in
+the CPackConfig file or in CMakeLists.txt, but most of them have defaults
+that use general settings (e.g. CMAKE_PROJECT_NAME) or Debian-specific
+variables when those make sense (e.g. the homepage of an upstream project
+is usually unchanged by the flavor of packaging). When there is no Debian
+information to fall back on, but the RPM packaging has it, fall back to
+the RPM information (e.g. package license).
+
+.. variable:: CPACK_FREEBSD_PACKAGE_NAME
+
+  Sets the package name (in the package manifest, but also affects the
+  output filename).
+
+  * Mandatory: YES
+  * Default:
+
+    - :variable:`CPACK_PACKAGE_NAME` (this is always set by CPack itself,
+      based on CMAKE_PROJECT_NAME).
+
+.. variable:: CPACK_FREEBSD_PACKAGE_COMMENT
+
+  Sets the package comment. This is the short description displayed by
+  pkg(8) in standard "pkg info" output.
+
+  * Mandatory: YES
+  * Default:
+
+    - :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY` (this is always set
+      by CPack itself, if nothing else sets it explicitly).
+    - :variable:`PROJECT_DESCRIPTION` (this can be set with the DESCRIPTION
+      parameter for :command:`project`).
+
+.. variable:: CPACK_FREEBSD_PACKAGE_DESCRIPTION
+
+  Sets the package description. This is the long description of the package,
+  given by "pkg info" with a specific package as argument.
+
+  * Mandatory: YES
+  * Default:
+
+    - :variable:`CPACK_DEBIAN_PACKAGE_DESCRIPTION` (this may be set already
+      for Debian packaging, so it is used as a fallback).
+
+.. variable:: CPACK_FREEBSD_PACKAGE_WWW
+
+  The URL of the web site for this package, preferably (when applicable) the
+  site from which the original source can be obtained and any additional
+  upstream documentation or information may be found.
+
+  * Mandatory: YES
+  * Default:
+
+   - :variable:`CMAKE_PROJECT_HOMEPAGE_URL`, or if that is not set,
+     :variable:`CPACK_DEBIAN_PACKAGE_HOMEPAGE` (this may be set already
+     for Debian packaging, so it is used as a fallback).
+
+  .. versionadded:: 3.12
+    The ``CMAKE_PROJECT_HOMEPAGE_URL`` variable.
+
+.. variable:: CPACK_FREEBSD_PACKAGE_LICENSE
+
+  The license, or licenses, which apply to this software package. This must
+  be one or more license-identifiers that pkg recognizes as acceptable license
+  identifiers (e.g. "GPLv2").
+
+  * Mandatory: YES
+  * Default:
+
+    - :variable:`CPACK_RPM_PACKAGE_LICENSE`
+
+.. variable:: CPACK_FREEBSD_PACKAGE_LICENSE_LOGIC
+
+  This variable is only of importance if there is more than one license.
+  The default is "single", which is only applicable to a single license.
+  Other acceptable values are determined by pkg -- those are "dual" or "multi" --
+  meaning choice (OR) or simultaneous (AND) application of the licenses.
+
+  * Mandatory: NO
+  * Default: single
+
+.. variable:: CPACK_FREEBSD_PACKAGE_MAINTAINER
+
+  The FreeBSD maintainer (e.g. kde@freebsd.org) of this package.
+
+  * Mandatory: YES
+  * Default: none
+
+.. variable:: CPACK_FREEBSD_PACKAGE_ORIGIN
+
+  The origin (ports label) of this package; for packages built by CPack
+  outside of the ports system this is of less importance. The default
+  puts the package somewhere under misc/, as a stopgap.
+
+  * Mandatory: YES
+  * Default: misc/<package name>
+
+.. variable:: CPACK_FREEBSD_PACKAGE_CATEGORIES
+
+  The ports categories where this package lives (if it were to be built
+  from ports). If none is set a single category is determined based on
+  the package origin.
+
+  * Mandatory: YES
+  * Default: derived from ORIGIN
+
+.. variable:: CPACK_FREEBSD_PACKAGE_DEPS
+
+  A list of package origins that should be added as package dependencies.
+  These are in the form <category>/<packagename>, e.g. x11/libkonq.
+  No version information needs to be provided (this is not included
+  in the manifest).
+
+  * Mandatory: NO
+  * Default: empty
diff --git a/share/cmake-3.22/Help/cpack_gen/ifw.rst b/share/cmake-3.22/Help/cpack_gen/ifw.rst
new file mode 100644
index 0000000..6817eac
--- /dev/null
+++ b/share/cmake-3.22/Help/cpack_gen/ifw.rst
@@ -0,0 +1,407 @@
+CPack IFW Generator
+-------------------
+
+.. versionadded:: 3.1
+
+Configure and run the Qt Installer Framework to generate a Qt installer.
+
+.. only:: html
+
+  .. contents::
+
+Overview
+^^^^^^^^
+
+This :manual:`cpack generator <cpack-generators(7)>` generates
+configuration and meta information for the `Qt Installer Framework
+<http://doc.qt.io/qtinstallerframework/index.html>`_ (QtIFW),
+and runs QtIFW tools to generate a Qt installer.
+
+QtIFW provides tools and utilities to create installers for
+the platforms supported by `Qt <https://www.qt.io>`_: Linux,
+Microsoft Windows, and macOS.
+
+To make use of this generator, QtIFW needs to be installed.
+The :module:`CPackIFW` module looks for the location of the
+QtIFW command-line utilities, and defines several commands to
+control the behavior of this generator.
+
+Variables
+^^^^^^^^^
+
+You can use the following variables to change behavior of CPack ``IFW``
+generator.
+
+Debug
+"""""
+
+.. variable:: CPACK_IFW_VERBOSE
+
+ .. versionadded:: 3.3
+
+ Set to ``ON`` to enable addition debug output.
+ By default is ``OFF``.
+
+Package
+"""""""
+
+.. variable:: CPACK_IFW_PACKAGE_TITLE
+
+ Name of the installer as displayed on the title bar.
+ By default used :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY`.
+
+.. variable:: CPACK_IFW_PACKAGE_PUBLISHER
+
+ Publisher of the software (as shown in the Windows Control Panel).
+ By default used :variable:`CPACK_PACKAGE_VENDOR`.
+
+.. variable:: CPACK_IFW_PRODUCT_URL
+
+ URL to a page that contains product information on your web site.
+
+.. variable:: CPACK_IFW_PACKAGE_ICON
+
+ Filename for a custom installer icon. The actual file is '.icns' (macOS),
+ '.ico' (Windows). No functionality on Unix.
+
+.. variable:: CPACK_IFW_PACKAGE_WINDOW_ICON
+
+ Filename for a custom window icon in PNG format for the Installer
+ application.
+
+.. variable:: CPACK_IFW_PACKAGE_LOGO
+
+ Filename for a logo is used as QWizard::LogoPixmap.
+
+.. variable:: CPACK_IFW_PACKAGE_WATERMARK
+
+ .. versionadded:: 3.8
+
+ Filename for a watermark is used as QWizard::WatermarkPixmap.
+
+.. variable:: CPACK_IFW_PACKAGE_BANNER
+
+ .. versionadded:: 3.8
+
+ Filename for a banner is used as QWizard::BannerPixmap.
+
+.. variable:: CPACK_IFW_PACKAGE_BACKGROUND
+
+ .. versionadded:: 3.8
+
+ Filename for an image used as QWizard::BackgroundPixmap (only used by MacStyle).
+
+.. variable:: CPACK_IFW_PACKAGE_WIZARD_STYLE
+
+ .. versionadded:: 3.8
+
+ Wizard style to be used ("Modern", "Mac", "Aero" or "Classic").
+
+.. variable:: CPACK_IFW_PACKAGE_WIZARD_DEFAULT_WIDTH
+
+ .. versionadded:: 3.8
+
+ Default width of the wizard in pixels. Setting a banner image will override this.
+
+.. variable:: CPACK_IFW_PACKAGE_WIZARD_DEFAULT_HEIGHT
+
+ .. versionadded:: 3.8
+
+ Default height of the wizard in pixels. Setting a watermark image will override this.
+
+.. variable:: CPACK_IFW_PACKAGE_WIZARD_SHOW_PAGE_LIST
+
+ .. versionadded:: 3.20
+
+ Set to ``OFF`` if the widget listing installer pages on the left side of the wizard should not be shown.
+
+ It is ``ON`` by default, but will only have an effect if using QtIFW 4.0 or later.
+
+.. variable:: CPACK_IFW_PACKAGE_TITLE_COLOR
+
+ .. versionadded:: 3.8
+
+ Color of the titles and subtitles (takes an HTML color code, such as "#88FF33").
+
+.. variable:: CPACK_IFW_PACKAGE_STYLE_SHEET
+
+ .. versionadded:: 3.15
+
+ Filename for a stylesheet.
+
+.. variable:: CPACK_IFW_TARGET_DIRECTORY
+
+ Default target directory for installation.
+ By default used
+ "@ApplicationsDir@/:variable:`CPACK_PACKAGE_INSTALL_DIRECTORY`"
+ (variables embedded in '@' are expanded by the
+ `QtIFW scripting engine <https://doc.qt.io/qtinstallerframework/scripting.html>`_).
+
+ You can use predefined variables.
+
+.. variable:: CPACK_IFW_ADMIN_TARGET_DIRECTORY
+
+ Default target directory for installation with administrator rights.
+
+ You can use predefined variables.
+
+.. variable:: CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR
+
+ .. versionadded:: 3.11
+
+ Set to ``OFF`` if the target directory should not be deleted when uninstalling.
+
+ Is ``ON`` by default
+
+.. variable:: CPACK_IFW_PACKAGE_GROUP
+
+ The group, which will be used to configure the root package
+
+.. variable:: CPACK_IFW_PACKAGE_NAME
+
+ The root package name, which will be used if configuration group is not
+ specified
+
+.. variable:: CPACK_IFW_PACKAGE_START_MENU_DIRECTORY
+
+ .. versionadded:: 3.3
+
+ Name of the default program group for the product in the Windows Start menu.
+
+ By default used :variable:`CPACK_IFW_PACKAGE_NAME`.
+
+.. variable:: CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_NAME
+
+ .. versionadded:: 3.3
+
+ Filename of the generated maintenance tool.
+ The platform-specific executable file extension is appended.
+
+ By default used QtIFW defaults (``maintenancetool``).
+
+.. variable:: CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_INI_FILE
+
+ .. versionadded:: 3.3
+
+ Filename for the configuration of the generated maintenance tool.
+
+ By default used QtIFW defaults (``maintenancetool.ini``).
+
+.. variable:: CPACK_IFW_PACKAGE_ALLOW_NON_ASCII_CHARACTERS
+
+ .. versionadded:: 3.3
+
+ Set to ``ON`` if the installation path can contain non-ASCII characters.
+
+ Is ``ON`` for QtIFW less 2.0 tools.
+
+.. variable:: CPACK_IFW_PACKAGE_ALLOW_SPACE_IN_PATH
+
+ .. versionadded:: 3.3
+
+ Set to ``OFF`` if the installation path cannot contain space characters.
+
+ Is ``ON`` for QtIFW less 2.0 tools.
+
+.. variable:: CPACK_IFW_PACKAGE_CONTROL_SCRIPT
+
+ .. versionadded:: 3.3
+
+ Filename for a custom installer control script.
+
+.. variable:: CPACK_IFW_PACKAGE_RESOURCES
+
+ .. versionadded:: 3.7
+
+ List of additional resources ('.qrc' files) to include in the installer
+ binary.
+
+ You can use :command:`cpack_ifw_add_package_resources` command to resolve
+ relative paths.
+
+.. variable:: CPACK_IFW_PACKAGE_FILE_EXTENSION
+
+ .. versionadded:: 3.10
+
+ The target binary extension.
+
+ On Linux, the name of the target binary is automatically extended with
+ '.run', if you do not specify the extension.
+
+ On Windows, the target is created as an application with the extension
+ '.exe', which is automatically added, if not supplied.
+
+ On Mac, the target is created as an DMG disk image with the extension
+ '.dmg', which is automatically added, if not supplied.
+
+.. variable:: CPACK_IFW_REPOSITORIES_ALL
+
+ The list of remote repositories.
+
+ The default value of this variable is computed by CPack and contains
+ all repositories added with command :command:`cpack_ifw_add_repository`
+ or updated with command :command:`cpack_ifw_update_repository`.
+
+.. variable:: CPACK_IFW_DOWNLOAD_ALL
+
+ If this is ``ON`` all components will be downloaded.
+ By default is ``OFF`` or used value
+ from ``CPACK_DOWNLOAD_ALL`` if set
+
+Components
+""""""""""
+
+.. variable:: CPACK_IFW_RESOLVE_DUPLICATE_NAMES
+
+ Resolve duplicate names when installing components with groups.
+
+.. variable:: CPACK_IFW_PACKAGES_DIRECTORIES
+
+ Additional prepared packages dirs that will be used to resolve
+ dependent components.
+
+.. variable:: CPACK_IFW_REPOSITORIES_DIRECTORIES
+
+ .. versionadded:: 3.10
+
+ Additional prepared repository dirs that will be used to resolve and
+ repack dependent components. This feature available only
+ since QtIFW 3.1.
+
+QtIFW Tools
+"""""""""""
+
+.. variable:: CPACK_IFW_FRAMEWORK_VERSION
+
+ .. versionadded:: 3.3
+
+ The version of used QtIFW tools.
+
+The following variables provide the locations of the QtIFW
+command-line tools as discovered by the module :module:`CPackIFW`.
+These variables are cached, and may be configured if needed.
+
+.. variable:: CPACK_IFW_ARCHIVEGEN_EXECUTABLE
+
+ .. versionadded:: 3.19
+
+ The path to ``archivegen``.
+
+.. variable:: CPACK_IFW_BINARYCREATOR_EXECUTABLE
+
+ The path to ``binarycreator``.
+
+.. variable:: CPACK_IFW_REPOGEN_EXECUTABLE
+
+ The path to ``repogen``.
+
+.. variable:: CPACK_IFW_INSTALLERBASE_EXECUTABLE
+
+ The path to ``installerbase``.
+
+.. variable:: CPACK_IFW_DEVTOOL_EXECUTABLE
+
+ The path to ``devtool``.
+
+Hints for Finding QtIFW
+"""""""""""""""""""""""
+
+Generally, the CPack ``IFW`` generator automatically finds QtIFW tools,
+but if you don't use a default path for installation of the QtIFW tools,
+the path may be specified in either a CMake or an environment variable:
+
+.. variable:: CPACK_IFW_ROOT
+
+ .. versionadded:: 3.9
+
+ An CMake variable which specifies the location of the QtIFW tool suite.
+
+ The variable will be cached in the ``CPackConfig.cmake`` file and used at
+ CPack runtime.
+
+.. variable:: QTIFWDIR
+
+ An environment variable which specifies the location of the QtIFW tool
+ suite.
+
+.. note::
+  The specified path should not contain "bin" at the end
+  (for example: "D:\\DevTools\\QtIFW2.0.5").
+
+The :variable:`CPACK_IFW_ROOT` variable has a higher priority and overrides
+the value of the :variable:`QTIFWDIR` variable.
+
+Other Settings
+^^^^^^^^^^^^^^
+
+Online installer
+""""""""""""""""
+
+By default, this generator generates an *offline installer*. This means that
+that all packaged files are fully contained in the installer executable.
+
+In contrast, an *online installer* will download some or all components from
+a remote server.
+
+The ``DOWNLOADED`` option in the :command:`cpack_add_component` command
+specifies that a component is to be downloaded. Alternatively, the ``ALL``
+option in the :command:`cpack_configure_downloads` command specifies that
+`all` components are to be be downloaded.
+
+The :command:`cpack_ifw_add_repository` command and the
+:variable:`CPACK_IFW_DOWNLOAD_ALL` variable allow for more specific
+configuration.
+
+When there are online components, CPack will write them to archive files.
+The help page of the :module:`CPackComponent` module, especially the section
+on the :command:`cpack_configure_downloads` function, explains how to make
+these files accessible from a download URL.
+
+Internationalization
+""""""""""""""""""""
+
+.. versionadded:: 3.9
+
+Some variables and command arguments support internationalization via
+CMake script. This is an optional feature.
+
+Installers created by QtIFW tools have built-in support for
+internationalization and many phrases are localized to many languages,
+but this does not apply to the description of the your components and groups
+that will be distributed.
+
+Localization of the description of your components and groups is useful for
+users of your installers.
+
+A localized variable or argument can contain a single default value, and a
+set of pairs the name of the locale and the localized value.
+
+For example:
+
+.. code-block:: cmake
+
+   set(LOCALIZABLE_VARIABLE "Default value"
+     en "English value"
+     en_US "American value"
+     en_GB "Great Britain value"
+     )
+
+See Also
+^^^^^^^^
+
+Qt Installer Framework Manual:
+
+* Index page:
+  http://doc.qt.io/qtinstallerframework/index.html
+
+* Component Scripting:
+  http://doc.qt.io/qtinstallerframework/scripting.html
+
+* Predefined Variables:
+  http://doc.qt.io/qtinstallerframework/scripting.html#predefined-variables
+
+* Promoting Updates:
+  http://doc.qt.io/qtinstallerframework/ifw-updates.html
+
+Download Qt Installer Framework for your platform from Qt site:
+ http://download.qt.io/official_releases/qt-installer-framework
diff --git a/share/cmake-3.22/Help/cpack_gen/nsis.rst b/share/cmake-3.22/Help/cpack_gen/nsis.rst
new file mode 100644
index 0000000..299cfec
--- /dev/null
+++ b/share/cmake-3.22/Help/cpack_gen/nsis.rst
@@ -0,0 +1,209 @@
+CPack NSIS Generator
+--------------------
+
+CPack Nullsoft Scriptable Install System (NSIS) generator specific options.
+
+.. versionchanged:: 3.22
+ The NSIS generator requires NSIS 3.03 or newer.
+
+Variables specific to CPack NSIS generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The following variables are specific to the graphical installers built
+on Windows Nullsoft Scriptable Install System.
+
+.. variable:: CPACK_NSIS_INSTALL_ROOT
+
+ The default installation directory presented to the end user by the NSIS
+ installer is under this root dir. The full directory presented to the end
+ user is: ``${CPACK_NSIS_INSTALL_ROOT}/${CPACK_PACKAGE_INSTALL_DIRECTORY}``
+
+.. variable:: CPACK_NSIS_MUI_ICON
+
+ An icon filename.  The name of a ``*.ico`` file used as the main icon for the
+ generated install program.
+
+.. variable:: CPACK_NSIS_MUI_UNIICON
+
+ An icon filename.  The name of a ``*.ico`` file used as the main icon for the
+ generated uninstall program.
+
+.. variable:: CPACK_NSIS_INSTALLER_MUI_ICON_CODE
+
+ undocumented.
+
+.. variable:: CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP
+
+ .. versionadded:: 3.5
+
+ The filename of a bitmap to use as the NSIS ``MUI_WELCOMEFINISHPAGE_BITMAP``.
+
+.. variable:: CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP
+
+ .. versionadded:: 3.5
+
+ The filename of a bitmap to use as the NSIS ``MUI_UNWELCOMEFINISHPAGE_BITMAP``.
+
+.. variable:: CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS
+
+ Extra NSIS commands that will be added to the beginning of the install
+ Section, before your install tree is available on the target system.
+
+.. variable:: CPACK_NSIS_EXTRA_INSTALL_COMMANDS
+
+ Extra NSIS commands that will be added to the end of the install Section,
+ after your install tree is available on the target system.
+
+.. variable:: CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS
+
+ Extra NSIS commands that will be added to the uninstall Section, before
+ your install tree is removed from the target system.
+
+.. variable:: CPACK_NSIS_COMPRESSOR
+
+ The arguments that will be passed to the NSIS `SetCompressor` command.
+
+.. variable:: CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL
+
+ Ask about uninstalling previous versions first.  If this is set to ``ON``,
+ then an installer will look for previous installed versions and if one is
+ found, ask the user whether to uninstall it before proceeding with the
+ install.
+
+.. variable:: CPACK_NSIS_MODIFY_PATH
+
+ Modify ``PATH`` toggle.  If this is set to ``ON``, then an extra page will appear
+ in the installer that will allow the user to choose whether the program
+ directory should be added to the system ``PATH`` variable.
+
+.. variable:: CPACK_NSIS_DISPLAY_NAME
+
+ The display name string that appears in the Windows `Apps & features`
+ in `Control Panel`
+
+.. variable:: CPACK_NSIS_PACKAGE_NAME
+
+ The title displayed at the top of the installer.
+
+.. variable:: CPACK_NSIS_INSTALLED_ICON_NAME
+
+ A path to the executable that contains the installer icon.
+
+.. variable:: CPACK_NSIS_HELP_LINK
+
+ URL to a web site providing assistance in installing your application.
+
+.. variable:: CPACK_NSIS_URL_INFO_ABOUT
+
+ URL to a web site providing more information about your application.
+
+.. variable:: CPACK_NSIS_CONTACT
+
+ Contact information for questions and comments about the installation
+ process.
+
+.. variable:: CPACK_NSIS_<compName>_INSTALL_DIRECTORY
+
+ .. versionadded:: 3.7
+
+ Custom install directory for the specified component ``<compName>`` instead
+ of ``$INSTDIR``.
+
+.. variable:: CPACK_NSIS_CREATE_ICONS_EXTRA
+
+ Additional NSIS commands for creating `Start Menu` shortcuts.
+
+.. variable:: CPACK_NSIS_DELETE_ICONS_EXTRA
+
+ Additional NSIS commands to uninstall `Start Menu` shortcuts.
+
+.. variable:: CPACK_NSIS_EXECUTABLES_DIRECTORY
+
+ Creating NSIS `Start Menu` links assumes that they are in ``bin`` unless this
+ variable is set.  For example, you would set this to ``exec`` if your
+ executables are in an exec directory.
+
+.. variable:: CPACK_NSIS_MUI_FINISHPAGE_RUN
+
+ Specify an executable to add an option to run on the finish page of the
+ NSIS installer.
+
+.. variable:: CPACK_NSIS_MENU_LINKS
+
+ Specify links in ``[application]`` menu.  This should contain a list of pair
+ ``link`` ``link name``. The link may be a URL or a path relative to
+ installation prefix.  Like::
+
+  set(CPACK_NSIS_MENU_LINKS
+      "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake.html"
+      "CMake Help" "https://cmake.org" "CMake Web Site")
+
+.. variable:: CPACK_NSIS_UNINSTALL_NAME
+
+ .. versionadded:: 3.17
+
+ Specify the name of the program to uninstall the version.
+ Default is ``Uninstall``.
+
+.. variable:: CPACK_NSIS_WELCOME_TITLE
+
+  .. versionadded:: 3.17
+
+  The title to display on the top of the page for the welcome page.
+
+.. variable:: CPACK_NSIS_WELCOME_TITLE_3LINES
+
+ .. versionadded:: 3.17
+
+ Display the title in the welcome page on 3 lines instead of 2.
+
+.. variable:: CPACK_NSIS_FINISH_TITLE
+
+ .. versionadded:: 3.17
+
+ The title to display on the top of the page for the finish page.
+
+.. variable:: CPACK_NSIS_FINISH_TITLE_3LINES
+
+ .. versionadded:: 3.17
+
+ Display the title in the finish page on 3 lines instead of 2.
+
+.. variable:: CPACK_NSIS_MUI_HEADERIMAGE
+
+ .. versionadded:: 3.17
+
+ The image to display on the header of installers pages.
+
+.. variable:: CPACK_NSIS_MANIFEST_DPI_AWARE
+
+ .. versionadded:: 3.18
+
+ If set, declares that the installer is DPI-aware.
+
+.. variable:: CPACK_NSIS_BRANDING_TEXT
+
+ .. versionadded:: 3.20
+
+ If set, updates the text at the bottom of the install window.
+ To set the string to blank, use a space (" ").
+
+.. variable:: CPACK_NSIS_BRANDING_TEXT_TRIM_POSITION
+
+ .. versionadded:: 3.20
+
+ If set, trim down the size of the control to the size of the branding text string.
+ Allowed values for this variable are ``LEFT``, ``CENTER`` or ``RIGHT``.
+ If not specified, the default behavior is ``LEFT``.
+
+.. variable:: CPACK_NSIS_EXECUTABLE
+
+ .. versionadded:: 3.21
+
+ If set, specify the name of the NSIS executable. Default is ``makensis``.
+
+.. variable:: CPACK_NSIS_IGNORE_LICENSE_PAGE
+
+ .. versionadded:: 3.22
+
+ If set, do not display the page containing the license during installation.
diff --git a/share/cmake-3.22/Help/cpack_gen/nuget.rst b/share/cmake-3.22/Help/cpack_gen/nuget.rst
new file mode 100644
index 0000000..c980dd6
--- /dev/null
+++ b/share/cmake-3.22/Help/cpack_gen/nuget.rst
@@ -0,0 +1,255 @@
+CPack NuGet Generator
+---------------------
+
+.. versionadded:: 3.12
+
+When build a NuGet package there is no direct way to control an output
+filename due a lack of the corresponding CLI option of NuGet, so there
+is no ``CPACK_NUGET_PACKAGE_FILE_NAME`` variable. To form the output filename
+NuGet uses the package name and the version according to its built-in rules.
+
+Also, be aware that including a top level directory
+(``CPACK_INCLUDE_TOPLEVEL_DIRECTORY``) is ignored by this generator.
+
+
+Variables specific to CPack NuGet generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The CPack NuGet generator may be used to create NuGet packages using
+:module:`CPack`. The CPack NuGet generator is a :module:`CPack` generator thus
+it uses the ``CPACK_XXX`` variables used by :module:`CPack`.
+
+The CPack NuGet generator has specific features which are controlled by the
+specifics ``CPACK_NUGET_XXX`` variables. In the "one per group" mode
+(see :variable:`CPACK_COMPONENTS_GROUPING`), ``<compName>`` placeholder
+in the variables below would contain a group name (uppercased and turned into
+a "C" identifier).
+
+List of CPack NuGet generator specific variables:
+
+.. variable:: CPACK_NUGET_COMPONENT_INSTALL
+
+ Enable component packaging for CPack NuGet generator
+
+ * Mandatory : NO
+ * Default   : OFF
+
+.. variable:: CPACK_NUGET_PACKAGE_NAME
+              CPACK_NUGET_<compName>_PACKAGE_NAME
+
+ The NUGET package name. ``CPACK_NUGET_PACKAGE_NAME`` is used as the
+ package ``id`` on nuget.org_
+
+ * Mandatory : YES
+ * Default   : :variable:`CPACK_PACKAGE_NAME`
+
+.. variable:: CPACK_NUGET_PACKAGE_VERSION
+              CPACK_NUGET_<compName>_PACKAGE_VERSION
+
+ The NuGet package version.
+
+ * Mandatory : YES
+ * Default   : :variable:`CPACK_PACKAGE_VERSION`
+
+.. variable:: CPACK_NUGET_PACKAGE_DESCRIPTION
+              CPACK_NUGET_<compName>_PACKAGE_DESCRIPTION
+
+ A long description of the package for UI display.
+
+ * Mandatory : YES
+ * Default   :
+    - :variable:`CPACK_COMPONENT_<compName>_DESCRIPTION`,
+    - ``CPACK_COMPONENT_GROUP_<groupName>_DESCRIPTION``,
+    - :variable:`CPACK_PACKAGE_DESCRIPTION`
+
+.. variable:: CPACK_NUGET_PACKAGE_AUTHORS
+              CPACK_NUGET_<compName>_PACKAGE_AUTHORS
+
+ A comma-separated list of packages authors, matching the profile names
+ on nuget.org_. These are displayed in the NuGet Gallery on
+ nuget.org_ and are used to cross-reference packages by the same
+ authors.
+
+ * Mandatory : YES
+ * Default   : :variable:`CPACK_PACKAGE_VENDOR`
+
+.. variable:: CPACK_NUGET_PACKAGE_TITLE
+              CPACK_NUGET_<compName>_PACKAGE_TITLE
+
+ A human-friendly title of the package, typically used in UI displays
+ as on nuget.org_ and the Package Manager in Visual Studio. If not
+ specified, the package ID is used.
+
+ * Mandatory : NO
+ * Default   :
+    - :variable:`CPACK_COMPONENT_<compName>_DISPLAY_NAME`,
+    - ``CPACK_COMPONENT_GROUP_<groupName>_DISPLAY_NAME``
+
+.. variable:: CPACK_NUGET_PACKAGE_OWNERS
+              CPACK_NUGET_<compName>_PACKAGE_OWNERS
+
+ A comma-separated list of the package creators using profile names
+ on nuget.org_. This is often the same list as in authors,
+ and is ignored when uploading the package to nuget.org_.
+
+ * Mandatory : NO
+ * Default   : -
+
+.. variable:: CPACK_NUGET_PACKAGE_HOMEPAGE_URL
+              CPACK_NUGET_<compName>_PACKAGE_HOMEPAGE_URL
+
+ An URL for the package's home page, often shown in UI displays as well
+ as nuget.org_.
+
+ * Mandatory : NO
+ * Default   : :variable:`CPACK_PACKAGE_HOMEPAGE_URL`
+
+.. variable:: CPACK_NUGET_PACKAGE_LICENSEURL
+              CPACK_NUGET_<compName>_PACKAGE_LICENSEURL
+
+ .. deprecated:: 3.20
+  Use a local license file
+  (:variable:`CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME`)
+  or a `(SPDX) license identifier`_
+  (:variable:`CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION`) instead.
+
+ An URL for the package's license, often shown in UI displays as well
+ as on nuget.org_.
+
+ * Mandatory : NO
+ * Default   : -
+
+.. variable:: CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION
+              CPACK_NUGET_<compName>_PACKAGE_LICENSE_EXPRESSION
+
+ .. versionadded:: 3.20
+
+ A Software Package Data Exchange `(SPDX) license identifier`_ such as
+ ``MIT``, ``BSD-3-Clause``, or ``LGPL-3.0-or-later``. In the case of a
+ choice of licenses or more complex restrictions, compound license
+ expressions may be formed using boolean operators, for example
+ ``MIT OR BSD-3-Clause``.  See the `SPDX specification`_ for guidance
+ on forming complex license expressions.
+
+ If ``CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME`` is specified,
+ ``CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION`` is ignored.
+
+ * Mandatory : NO
+ * Default   : -
+
+.. variable:: CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME
+              CPACK_NUGET_<compName>_PACKAGE_LICENSE_FILE_NAME
+
+ The package's license file in :file:`.txt` or :file:`.md` format.
+
+ If ``CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME`` is specified,
+ ``CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION`` is ignored.
+
+ .. versionadded:: 3.20
+
+ * Mandatory : NO
+ * Default   : -
+
+.. variable:: CPACK_NUGET_PACKAGE_ICONURL
+              CPACK_NUGET_<compName>_PACKAGE_ICONURL
+
+ .. deprecated:: 3.20
+  Use a local icon file (:variable:`CPACK_NUGET_PACKAGE_ICON`) instead.
+
+ An URL for a 64x64 image with transparency background to use as the
+ icon for the package in UI display.
+
+ * Mandatory : NO
+ * Default   : -
+
+.. variable:: CPACK_NUGET_PACKAGE_ICON
+              CPACK_NUGET_<compName>_PACKAGE_ICON
+
+ .. versionadded:: 3.20
+
+ The filename of a 64x64 image with transparency background to use as the
+ icon for the package in UI display.
+
+ * Mandatory : NO
+ * Default   : -
+
+.. variable:: CPACK_NUGET_PACKAGE_DESCRIPTION_SUMMARY
+              CPACK_NUGET_<compName>_PACKAGE_DESCRIPTION_SUMMARY
+
+ A short description of the package for UI display. If omitted, a
+ truncated version of description is used.
+
+ * Mandatory : NO
+ * Default   : :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY`
+
+.. variable:: CPACK_NUGET_PACKAGE_RELEASE_NOTES
+              CPACK_NUGET_<compName>_PACKAGE_RELEASE_NOTES
+
+ A description of the changes made in this release of the package,
+ often used in UI like the Updates tab of the Visual Studio Package
+ Manager in place of the package description.
+
+ * Mandatory : NO
+ * Default   : -
+
+.. variable:: CPACK_NUGET_PACKAGE_COPYRIGHT
+              CPACK_NUGET_<compName>_PACKAGE_COPYRIGHT
+
+ Copyright details for the package.
+
+ * Mandatory : NO
+ * Default   : -
+
+.. variable:: CPACK_NUGET_PACKAGE_LANGUAGE
+              CPACK_NUGET_<compName>_PACKAGE_LANGUAGE
+
+ .. versionadded:: 3.20
+
+ Locale specifier for the package, for example ``en_CA``.
+
+ * Mandatory : NO
+ * Default   : -
+
+.. variable:: CPACK_NUGET_PACKAGE_TAGS
+              CPACK_NUGET_<compName>_PACKAGE_TAGS
+
+ A space-delimited list of tags and keywords that describe the
+ package and aid discoverability of packages through search and
+ filtering.
+
+ * Mandatory : NO
+ * Default   : -
+
+.. variable:: CPACK_NUGET_PACKAGE_DEPENDENCIES
+              CPACK_NUGET_<compName>_PACKAGE_DEPENDENCIES
+
+ A list of package dependencies.
+
+ * Mandatory : NO
+ * Default   : -
+
+.. variable:: CPACK_NUGET_PACKAGE_DEPENDENCIES_<dependency>_VERSION
+              CPACK_NUGET_<compName>_PACKAGE_DEPENDENCIES_<dependency>_VERSION
+
+ A `version specification`_ for the particular dependency, where
+ ``<dependency>`` is an item of the dependency list (see above)
+ transformed with ``MAKE_C_IDENTIFIER`` function of :command:`string`
+ command.
+
+ * Mandatory : NO
+ * Default   : -
+
+.. variable:: CPACK_NUGET_PACKAGE_DEBUG
+
+ Enable debug messages while executing CPack NuGet generator.
+
+ * Mandatory : NO
+ * Default   : OFF
+
+
+.. _nuget.org: http://nuget.org
+.. _version specification: https://docs.microsoft.com/en-us/nuget/reference/package-versioning#version-ranges-and-wildcards
+.. _(SPDX) license identifier: https://spdx.org/licenses/
+.. _SPDX specification: https://spdx.github.io/spdx-spec/appendix-IV-SPDX-license-expressions/
+
+.. NuGet spec docs https://docs.microsoft.com/en-us/nuget/reference/nuspec
diff --git a/share/cmake-3.22/Help/cpack_gen/packagemaker.rst b/share/cmake-3.22/Help/cpack_gen/packagemaker.rst
new file mode 100644
index 0000000..256446d
--- /dev/null
+++ b/share/cmake-3.22/Help/cpack_gen/packagemaker.rst
@@ -0,0 +1,87 @@
+CPack PackageMaker Generator
+----------------------------
+
+PackageMaker CPack generator (macOS).
+
+.. deprecated:: 3.17
+
+  Xcode no longer distributes the PackageMaker tools.
+  This CPack generator will be removed in a future version of CPack.
+
+Variables specific to CPack PackageMaker generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The following variable is specific to installers built on Mac
+macOS using PackageMaker:
+
+.. variable:: CPACK_OSX_PACKAGE_VERSION
+
+ The version of macOS that the resulting PackageMaker archive should be
+ compatible with. Different versions of macOS support different
+ features. For example, CPack can only build component-based installers for
+ macOS 10.4 or newer, and can only build installers that download
+ components on-the-fly for macOS 10.5 or newer. If left blank, this value
+ will be set to the minimum version of macOS that supports the requested
+ features. Set this variable to some value (e.g., 10.4) only if you want to
+ guarantee that your installer will work on that version of macOS, and
+ don't mind missing extra features available in the installer shipping with
+ later versions of macOS.
+
+Background Image
+""""""""""""""""
+
+.. versionadded:: 3.17
+
+This group of variables controls the background image of the generated
+installer.
+
+.. variable:: CPACK_PACKAGEMAKER_BACKGROUND
+
+ Adds a background to Distribution XML if specified. The value contains the
+ path to image in ``Resources`` directory.
+
+.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_ALIGNMENT
+
+ Adds an ``alignment`` attribute to the background in Distribution XML.
+ Refer to Apple documentation for valid values.
+
+.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_SCALING
+
+ Adds a ``scaling`` attribute to the background in Distribution XML.
+ Refer to Apple documentation for valid values.
+
+.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_MIME_TYPE
+
+ Adds a ``mime-type`` attribute to the background in Distribution XML.
+ The option contains MIME type of an image.
+
+.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_UTI
+
+ Adds an ``uti`` attribute to the background in Distribution XML.
+ The option contains UTI type of an image.
+
+.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_DARKAQUA
+
+ Adds a background for the Dark Aqua theme to Distribution XML if
+ specified. The value contains the path to image in ``Resources``
+ directory.
+
+.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_DARKAQUA_ALIGNMENT
+
+ Does the same as :variable:`CPACK_PACKAGEMAKER_BACKGROUND_ALIGNMENT` option,
+ but for the dark theme.
+
+.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_DARKAQUA_SCALING
+
+ Does the same as :variable:`CPACK_PACKAGEMAKER_BACKGROUND_SCALING` option,
+ but for the dark theme.
+
+.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_DARKAQUA_MIME_TYPE
+
+ Does the same as :variable:`CPACK_PACKAGEMAKER_BACKGROUND_MIME_TYPE` option,
+ but for the dark theme.
+
+.. variable:: CPACK_PACKAGEMAKER_BACKGROUND_DARKAQUA_UTI
+
+ Does the same as :variable:`CPACK_PACKAGEMAKER_BACKGROUND_UTI` option,
+ but for the dark theme.
diff --git a/share/cmake-3.22/Help/cpack_gen/productbuild.rst b/share/cmake-3.22/Help/cpack_gen/productbuild.rst
new file mode 100644
index 0000000..cf3041f
--- /dev/null
+++ b/share/cmake-3.22/Help/cpack_gen/productbuild.rst
@@ -0,0 +1,138 @@
+CPack productbuild Generator
+----------------------------
+
+.. versionadded:: 3.7
+
+productbuild CPack generator (macOS).
+
+Variables specific to CPack productbuild generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The following variable is specific to installers built on Mac
+macOS using ProductBuild:
+
+.. variable:: CPACK_COMMAND_PRODUCTBUILD
+
+ Path to the ``productbuild(1)`` command used to generate a product archive for
+ the macOS Installer or Mac App Store.  This variable can be used to override
+ the automatically detected command (or specify its location if the
+ auto-detection fails to find it).
+
+.. variable:: CPACK_PRODUCTBUILD_IDENTITY_NAME
+
+ .. versionadded:: 3.8
+
+ Adds a digital signature to the resulting package.
+
+
+.. variable:: CPACK_PRODUCTBUILD_KEYCHAIN_PATH
+
+ .. versionadded:: 3.8
+
+ Specify a specific keychain to search for the signing identity.
+
+
+.. variable:: CPACK_COMMAND_PKGBUILD
+
+ Path to the ``pkgbuild(1)`` command used to generate an macOS component package
+ on macOS.  This variable can be used to override the automatically detected
+ command (or specify its location if the auto-detection fails to find it).
+
+
+.. variable:: CPACK_PKGBUILD_IDENTITY_NAME
+
+ .. versionadded:: 3.8
+
+ Adds a digital signature to the resulting package.
+
+
+.. variable:: CPACK_PKGBUILD_KEYCHAIN_PATH
+
+ .. versionadded:: 3.8
+
+ Specify a specific keychain to search for the signing identity.
+
+
+.. variable:: CPACK_PREFLIGHT_<COMP>_SCRIPT
+
+ Full path to a file that will be used as the ``preinstall`` script for the
+ named ``<COMP>`` component's package, where ``<COMP>`` is the uppercased
+ component name.  No ``preinstall`` script is added if this variable is not
+ defined for a given component.
+
+
+.. variable:: CPACK_POSTFLIGHT_<COMP>_SCRIPT
+
+ Full path to a file that will be used as the ``postinstall`` script for the
+ named ``<COMP>`` component's package, where ``<COMP>`` is the uppercased
+ component name.  No ``postinstall`` script is added if this variable is not
+ defined for a given component.
+
+.. variable:: CPACK_PRODUCTBUILD_RESOURCES_DIR
+
+ .. versionadded:: 3.9
+
+ If specified the productbuild generator copies files from this directory
+ (including subdirectories) to the ``Resources`` directory. This is done
+ before the :variable:`CPACK_RESOURCE_FILE_WELCOME`,
+ :variable:`CPACK_RESOURCE_FILE_README`, and
+ :variable:`CPACK_RESOURCE_FILE_LICENSE` files are copied.
+
+Background Image
+""""""""""""""""
+
+.. versionadded:: 3.17
+
+This group of variables controls the background image of the generated
+installer.
+
+.. variable:: CPACK_PRODUCTBUILD_BACKGROUND
+
+ Adds a background to Distribution XML if specified. The value contains the
+ path to image in ``Resources`` directory.
+
+.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_ALIGNMENT
+
+ Adds an ``alignment`` attribute to the background in Distribution XML.
+ Refer to Apple documentation for valid values.
+
+.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_SCALING
+
+ Adds a ``scaling`` attribute to the background in Distribution XML.
+ Refer to Apple documentation for valid values.
+
+.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_MIME_TYPE
+
+ Adds a ``mime-type`` attribute to the background in Distribution XML.
+ The option contains MIME type of an image.
+
+.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_UTI
+
+ Adds an ``uti`` attribute to the background in Distribution XML.
+ The option contains UTI type of an image.
+
+.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA
+
+ Adds a background for the Dark Aqua theme to Distribution XML if
+ specified. The value contains the path to image in ``Resources``
+ directory.
+
+.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_ALIGNMENT
+
+ Does the same as :variable:`CPACK_PRODUCTBUILD_BACKGROUND_ALIGNMENT` option,
+ but for the dark theme.
+
+.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_SCALING
+
+ Does the same as :variable:`CPACK_PRODUCTBUILD_BACKGROUND_SCALING` option,
+ but for the dark theme.
+
+.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_MIME_TYPE
+
+ Does the same as :variable:`CPACK_PRODUCTBUILD_BACKGROUND_MIME_TYPE` option,
+ but for the dark theme.
+
+.. variable:: CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_UTI
+
+ Does the same as :variable:`CPACK_PRODUCTBUILD_BACKGROUND_UTI` option,
+ but for the dark theme.
diff --git a/share/cmake-3.22/Help/cpack_gen/rpm.rst b/share/cmake-3.22/Help/cpack_gen/rpm.rst
new file mode 100644
index 0000000..0d287fc
--- /dev/null
+++ b/share/cmake-3.22/Help/cpack_gen/rpm.rst
@@ -0,0 +1,1054 @@
+CPack RPM Generator
+-------------------
+
+The built in (binary) CPack RPM generator (Unix only)
+
+Variables specific to CPack RPM generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The CPack RPM generator may be used to create RPM packages using :module:`CPack`.
+The CPack RPM generator is a :module:`CPack` generator thus it uses the
+``CPACK_XXX`` variables used by :module:`CPack`.
+
+The CPack RPM generator has specific features which are controlled by the specifics
+``CPACK_RPM_XXX`` variables.
+
+``CPACK_RPM_<COMPONENT>_XXXX`` variables may be used in order to have
+**component** specific values.  Note however that ``<COMPONENT>`` refers to the
+**grouping name** written in upper case. It may be either a component name or
+a component GROUP name. Usually those variables correspond to RPM spec file
+entities. One may find information about spec files here
+http://www.rpm.org/wiki/Docs
+
+.. versionchanged:: 3.6
+
+ `<COMPONENT>` part of variables is preferred to be in upper case (e.g. if
+ component is named ``foo`` then use ``CPACK_RPM_FOO_XXXX`` variable name format)
+ as is with other ``CPACK_<COMPONENT>_XXXX`` variables.
+ For the purposes of back compatibility (CMake/CPack version 3.5 and lower)
+ support for same cased component (e.g. ``fOo`` would be used as
+ ``CPACK_RPM_fOo_XXXX``) is still supported for variables defined in older
+ versions of CMake/CPack but is not guaranteed for variables that
+ will be added in the future. For the sake of back compatibility same cased
+ component variables also override upper cased versions where both are
+ present.
+
+Here are some CPack RPM generator wiki resources that are here for historic
+reasons and are no longer maintained but may still prove useful:
+
+ - https://gitlab.kitware.com/cmake/community/-/wikis/doc/cpack/Configuration
+ - https://gitlab.kitware.com/cmake/community/-/wikis/doc/cpack/PackageGenerators#rpm-unix-only
+
+List of CPack RPM generator specific variables:
+
+.. variable:: CPACK_RPM_COMPONENT_INSTALL
+
+ Enable component packaging for CPack RPM generator
+
+ * Mandatory : NO
+ * Default   : OFF
+
+ If enabled (``ON``) multiple packages are generated. By default
+ a single package containing files of all components is generated.
+
+.. variable:: CPACK_RPM_PACKAGE_SUMMARY
+              CPACK_RPM_<component>_PACKAGE_SUMMARY
+
+ The RPM package summary.
+
+ * Mandatory : YES
+ * Default   : :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY`
+
+ .. versionadded:: 3.2
+  Per-component ``CPACK_RPM_<component>_PACKAGE_SUMMARY`` variables.
+
+.. variable:: CPACK_RPM_PACKAGE_NAME
+              CPACK_RPM_<component>_PACKAGE_NAME
+
+ The RPM package name.
+
+ * Mandatory : YES
+ * Default   : :variable:`CPACK_PACKAGE_NAME`
+
+ .. versionadded:: 3.5
+  Per-component ``CPACK_RPM_<component>_PACKAGE_NAME`` variables.
+
+.. variable:: CPACK_RPM_FILE_NAME
+              CPACK_RPM_<component>_FILE_NAME
+
+ .. versionadded:: 3.6
+
+ Package file name.
+
+ * Mandatory : YES
+ * Default   : ``<CPACK_PACKAGE_FILE_NAME>[-<component>].rpm`` with spaces
+               replaced by '-'
+
+ This may be set to ``RPM-DEFAULT`` to allow ``rpmbuild`` tool to generate package
+ file name by itself.
+ Alternatively provided package file name must end with ``.rpm`` suffix.
+
+ .. note::
+
+   By using user provided spec file, rpm macro extensions such as for
+   generating ``debuginfo`` packages or by simply using multiple components more
+   than one rpm file may be generated, either from a single spec file or from
+   multiple spec files (each component execution produces its own spec file).
+   In such cases duplicate file names may occur as a result of this variable
+   setting or spec file content structure. Duplicate files get overwritten
+   and it is up to the packager to set the variables in a manner that will
+   prevent such errors.
+
+.. variable:: CPACK_RPM_MAIN_COMPONENT
+
+ .. versionadded:: 3.8
+
+ Main component that is packaged without component suffix.
+
+ * Mandatory : NO
+ * Default   : -
+
+ This variable can be set to any component or group name so that component or
+ group rpm package is generated without component suffix in filename and
+ package name.
+
+.. variable:: CPACK_RPM_PACKAGE_EPOCH
+
+ .. versionadded:: 3.10
+
+ The RPM package epoch
+
+ * Mandatory : No
+ * Default   : -
+
+ Optional number that should be incremented when changing versioning schemas
+ or fixing mistakes in the version numbers of older packages.
+
+.. variable:: CPACK_RPM_PACKAGE_VERSION
+
+ The RPM package version.
+
+ * Mandatory : YES
+ * Default   : :variable:`CPACK_PACKAGE_VERSION`
+
+.. variable:: CPACK_RPM_PACKAGE_ARCHITECTURE
+              CPACK_RPM_<component>_PACKAGE_ARCHITECTURE
+
+ The RPM package architecture.
+
+ * Mandatory : YES
+ * Default   : Native architecture output by ``uname -m``
+
+ This may be set to ``noarch`` if you know you are building a ``noarch`` package.
+
+ .. versionadded:: 3.3
+  Per-component ``CPACK_RPM_<component>_PACKAGE_ARCHITECTURE`` variables.
+
+.. variable:: CPACK_RPM_PACKAGE_RELEASE
+
+ The RPM package release.
+
+ * Mandatory : YES
+ * Default   : 1
+
+ This is the numbering of the RPM package itself, i.e. the version of the
+ packaging and not the version of the content (see
+ :variable:`CPACK_RPM_PACKAGE_VERSION`). One may change the default value if
+ the previous packaging was buggy and/or you want to put here a fancy Linux
+ distro specific numbering.
+
+.. note::
+
+ This is the string that goes into the RPM ``Release:`` field. Some distros
+ (e.g. Fedora, CentOS) require ``1%{?dist}`` format and not just a number.
+ ``%{?dist}`` part can be added by setting :variable:`CPACK_RPM_PACKAGE_RELEASE_DIST`.
+
+.. variable:: CPACK_RPM_PACKAGE_RELEASE_DIST
+
+ .. versionadded:: 3.6
+
+ The dist tag that is added  RPM ``Release:`` field.
+
+ * Mandatory : NO
+ * Default   : OFF
+
+ This is the reported ``%{dist}`` tag from the current distribution or empty
+ ``%{dist}`` if RPM macro is not set. If this variable is set then RPM
+ ``Release:`` field value is set to ``${CPACK_RPM_PACKAGE_RELEASE}%{?dist}``.
+
+.. variable:: CPACK_RPM_PACKAGE_LICENSE
+
+ The RPM package license policy.
+
+ * Mandatory : YES
+ * Default   : "unknown"
+
+.. variable:: CPACK_RPM_PACKAGE_GROUP
+              CPACK_RPM_<component>_PACKAGE_GROUP
+
+ The RPM package group.
+
+ * Mandatory : YES
+ * Default   : "unknown"
+
+ .. versionadded:: 3.5
+  Per-component ``CPACK_RPM_<component>_PACKAGE_GROUP`` variables.
+
+.. variable:: CPACK_RPM_PACKAGE_VENDOR
+
+ The RPM package vendor.
+
+ * Mandatory : YES
+ * Default   : CPACK_PACKAGE_VENDOR if set or "unknown"
+
+.. variable:: CPACK_RPM_PACKAGE_URL
+              CPACK_RPM_<component>_PACKAGE_URL
+
+ The projects URL.
+
+ * Mandatory : NO
+ * Default   : :variable:`CMAKE_PROJECT_HOMEPAGE_URL`
+
+ .. versionadded:: 3.12
+  The ``CMAKE_PROJECT_HOMEPAGE_URL`` variable.
+
+.. variable:: CPACK_RPM_PACKAGE_DESCRIPTION
+              CPACK_RPM_<component>_PACKAGE_DESCRIPTION
+
+ RPM package description.
+
+ * Mandatory : YES
+ * Default : :variable:`CPACK_COMPONENT_<compName>_DESCRIPTION` (component
+   based installers only) if set, :variable:`CPACK_PACKAGE_DESCRIPTION_FILE`
+   if set or "no package description available"
+
+ .. versionadded:: 3.2
+  Per-component ``CPACK_RPM_<component>_PACKAGE_DESCRIPTION`` variables.
+
+.. variable:: CPACK_RPM_COMPRESSION_TYPE
+
+ RPM compression type.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to override RPM compression type to be used to build the
+ RPM. For example some Linux distribution now default to ``lzma`` or ``xz``
+ compression whereas older cannot use such RPM. Using this one can enforce
+ compression type to be used.
+
+ Possible values are:
+
+ - lzma
+ - xz
+ - bzip2
+ - gzip
+
+.. variable:: CPACK_RPM_PACKAGE_AUTOREQ
+              CPACK_RPM_<component>_PACKAGE_AUTOREQ
+
+ RPM spec autoreq field.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to enable (``1``, ``yes``) or disable (``0``, ``no``) automatic
+ shared libraries dependency detection. Dependencies are added to requires list.
+
+ .. note::
+
+   By default automatic dependency detection is enabled by rpm generator.
+
+.. variable:: CPACK_RPM_PACKAGE_AUTOPROV
+              CPACK_RPM_<component>_PACKAGE_AUTOPROV
+
+ RPM spec autoprov field.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to enable (``1``, ``yes``) or disable (``0``, ``no``)
+ automatic listing of shared libraries that are provided by the package.
+ Shared libraries are added to provides list.
+
+ .. note::
+
+   By default automatic provides detection is enabled by rpm generator.
+
+.. variable:: CPACK_RPM_PACKAGE_AUTOREQPROV
+              CPACK_RPM_<component>_PACKAGE_AUTOREQPROV
+
+ RPM spec autoreqprov field.
+
+ * Mandatory : NO
+ * Default   : -
+
+ Variable enables/disables autoreq and autoprov at the same time.
+ See :variable:`CPACK_RPM_PACKAGE_AUTOREQ` and
+ :variable:`CPACK_RPM_PACKAGE_AUTOPROV` for more details.
+
+ .. note::
+
+   By default automatic detection feature is enabled by rpm.
+
+.. variable:: CPACK_RPM_PACKAGE_REQUIRES
+              CPACK_RPM_<component>_PACKAGE_REQUIRES
+
+ RPM spec requires field.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to set RPM dependencies (requires). Note that you must enclose
+ the complete requires string between quotes, for example::
+
+  set(CPACK_RPM_PACKAGE_REQUIRES "python >= 2.5.0, cmake >= 2.8")
+
+ The required package list of an RPM file could be printed with::
+
+  rpm -qp --requires file.rpm
+
+.. variable:: CPACK_RPM_PACKAGE_CONFLICTS
+              CPACK_RPM_<component>_PACKAGE_CONFLICTS
+
+ RPM spec conflicts field.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to set negative RPM dependencies (conflicts). Note that you must
+ enclose the complete requires string between quotes, for example::
+
+  set(CPACK_RPM_PACKAGE_CONFLICTS "libxml2")
+
+ The conflicting package list of an RPM file could be printed with::
+
+  rpm -qp --conflicts file.rpm
+
+.. variable:: CPACK_RPM_PACKAGE_REQUIRES_PRE
+              CPACK_RPM_<component>_PACKAGE_REQUIRES_PRE
+
+ .. versionadded:: 3.2
+
+ RPM spec requires(pre) field.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to set RPM preinstall dependencies (requires(pre)). Note that
+ you must enclose the complete requires string between quotes, for example::
+
+  set(CPACK_RPM_PACKAGE_REQUIRES_PRE "shadow-utils, initscripts")
+
+.. variable:: CPACK_RPM_PACKAGE_REQUIRES_POST
+              CPACK_RPM_<component>_PACKAGE_REQUIRES_POST
+
+ .. versionadded:: 3.2
+
+ RPM spec requires(post) field.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to set RPM postinstall dependencies (requires(post)). Note that
+ you must enclose the complete requires string between quotes, for example::
+
+  set(CPACK_RPM_PACKAGE_REQUIRES_POST "shadow-utils, initscripts")
+
+.. variable:: CPACK_RPM_PACKAGE_REQUIRES_POSTUN
+              CPACK_RPM_<component>_PACKAGE_REQUIRES_POSTUN
+
+ .. versionadded:: 3.2
+
+ RPM spec requires(postun) field.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to set RPM postuninstall dependencies (requires(postun)). Note
+ that you must enclose the complete requires string between quotes, for
+ example::
+
+  set(CPACK_RPM_PACKAGE_REQUIRES_POSTUN "shadow-utils, initscripts")
+
+.. variable:: CPACK_RPM_PACKAGE_REQUIRES_PREUN
+              CPACK_RPM_<component>_PACKAGE_REQUIRES_PREUN
+
+ .. versionadded:: 3.2
+
+ RPM spec requires(preun) field.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to set RPM preuninstall dependencies (requires(preun)). Note that
+ you must enclose the complete requires string between quotes, for example::
+
+  set(CPACK_RPM_PACKAGE_REQUIRES_PREUN "shadow-utils, initscripts")
+
+.. variable:: CPACK_RPM_PACKAGE_SUGGESTS
+              CPACK_RPM_<component>_PACKAGE_SUGGESTS
+
+ RPM spec suggest field.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to set weak RPM dependencies (suggests). If ``rpmbuild`` doesn't
+ support the ``Suggests`` tag, CPack will emit a warning and ignore this
+ variable. Note that you must enclose the complete requires string between
+ quotes.
+
+.. variable:: CPACK_RPM_PACKAGE_PROVIDES
+              CPACK_RPM_<component>_PACKAGE_PROVIDES
+
+ RPM spec provides field.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to set RPM dependencies (provides). The provided package list
+ of an RPM file could be printed with::
+
+  rpm -qp --provides file.rpm
+
+.. variable:: CPACK_RPM_PACKAGE_OBSOLETES
+              CPACK_RPM_<component>_PACKAGE_OBSOLETES
+
+ RPM spec obsoletes field.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to set RPM packages that are obsoleted by this one.
+
+.. variable:: CPACK_RPM_PACKAGE_RELOCATABLE
+
+ build a relocatable RPM.
+
+ * Mandatory : NO
+ * Default   : CPACK_PACKAGE_RELOCATABLE
+
+ If this variable is set to TRUE or ON, the CPack RPM generator will try
+ to build a relocatable RPM package. A relocatable RPM may
+ be installed using::
+
+  rpm --prefix or --relocate
+
+ in order to install it at an alternate place see rpm(8). Note that
+ currently this may fail if :variable:`CPACK_SET_DESTDIR` is set to ``ON``. If
+ :variable:`CPACK_SET_DESTDIR` is set then you will get a warning message but
+ if there is file installed with absolute path you'll get unexpected behavior.
+
+.. variable:: CPACK_RPM_SPEC_INSTALL_POST
+
+ Deprecated - use :variable:`CPACK_RPM_SPEC_MORE_DEFINE` instead.
+
+ * Mandatory : NO
+ * Default   : -
+ * Deprecated: YES
+
+ May be used to override the ``__spec_install_post`` section within the
+ generated spec file.  This affects the install step during package creation,
+ not during package installation.  For adding operations to be performed
+ during package installation, use
+ :variable:`CPACK_RPM_POST_INSTALL_SCRIPT_FILE` instead.
+
+.. variable:: CPACK_RPM_SPEC_MORE_DEFINE
+
+ RPM extended spec definitions lines.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to add any ``%define`` lines to the generated spec file.  An
+ example of its use is to prevent stripping of executables (but note that
+ this may also disable other default post install processing)::
+
+   set(CPACK_RPM_SPEC_MORE_DEFINE "%define __spec_install_post /bin/true")
+
+.. variable:: CPACK_RPM_PACKAGE_DEBUG
+
+ Toggle CPack RPM generator debug output.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be set when invoking cpack in order to trace debug information
+ during CPack RPM run. For example you may launch CPack like this::
+
+  cpack -D CPACK_RPM_PACKAGE_DEBUG=1 -G RPM
+
+.. variable:: CPACK_RPM_USER_BINARY_SPECFILE
+              CPACK_RPM_<componentName>_USER_BINARY_SPECFILE
+
+ A user provided spec file.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be set by the user in order to specify a USER binary spec file
+ to be used by the CPack RPM generator instead of generating the file.
+ The specified file will be processed by configure_file( @ONLY).
+
+.. variable:: CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE
+
+ Spec file template.
+
+ * Mandatory : NO
+ * Default   : -
+
+ If set CPack will generate a template for USER specified binary
+ spec file and stop with an error. For example launch CPack like this::
+
+  cpack -D CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE=1 -G RPM
+
+ The user may then use this file in order to hand-craft is own
+ binary spec file which may be used with
+ :variable:`CPACK_RPM_USER_BINARY_SPECFILE`.
+
+.. variable:: CPACK_RPM_PRE_INSTALL_SCRIPT_FILE
+              CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE
+              CPACK_RPM_PRE_TRANS_SCRIPT_FILE
+
+ Path to file containing pre install/uninstall/transaction script.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to embed a pre installation/uninstallation/transaction script in the spec file.
+ The referred script file (or both) will be read and directly
+ put after the ``%pre`` or ``%preun`` section
+ If :variable:`CPACK_RPM_COMPONENT_INSTALL` is set to ON the install/uninstall/transaction
+ script for each component can be overridden with
+ ``CPACK_RPM_<COMPONENT>_PRE_INSTALL_SCRIPT_FILE``,
+ ``CPACK_RPM_<COMPONENT>_PRE_UNINSTALL_SCRIPT_FILE``, and
+ ``CPACK_RPM_<COMPONENT>_PRE_TRANS_SCRIPT_FILE``
+ One may verify which scriptlet has been included with::
+
+  rpm -qp --scripts  package.rpm
+
+ .. versionadded:: 3.18
+  The ``CPACK_RPM_PRE_TRANS_SCRIPT_FILE`` variable.
+
+.. variable:: CPACK_RPM_POST_INSTALL_SCRIPT_FILE
+              CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE
+              CPACK_RPM_POST_TRANS_SCRIPT_FILE
+
+ Path to file containing post install/uninstall/transaction script.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to embed a post installation/uninstallation/transaction script in the spec file.
+ The referred script file (or both) will be read and directly
+ put after the ``%post`` or ``%postun`` section.
+ If :variable:`CPACK_RPM_COMPONENT_INSTALL` is set to ON the install/uninstall/transaction
+ script for each component can be overridden with
+ ``CPACK_RPM_<COMPONENT>_POST_INSTALL_SCRIPT_FILE``,
+ ``CPACK_RPM_<COMPONENT>_POST_UNINSTALL_SCRIPT_FILE``, and
+ ``CPACK_RPM_<COMPONENT>_POST_TRANS_SCRIPT_FILE``
+ One may verify which scriptlet has been included with::
+
+  rpm -qp --scripts  package.rpm
+
+ .. versionadded:: 3.18
+  The ``CPACK_RPM_POST_TRANS_SCRIPT_FILE`` variable.
+
+.. variable:: CPACK_RPM_USER_FILELIST
+              CPACK_RPM_<COMPONENT>_USER_FILELIST
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to explicitly specify ``%(<directive>)`` file line
+ in the spec file. Like ``%config(noreplace)`` or any other directive
+ that be found in the ``%files`` section. Since
+ the CPack RPM generator is generating the list of files (and directories) the
+ user specified files of the ``CPACK_RPM_<COMPONENT>_USER_FILELIST`` list will
+ be removed from the generated list. If referring to directories do
+ not add a trailing slash.
+
+ .. versionadded:: 3.8
+  You can have multiple directives per line, as in
+  ``%attr(600,root,root) %config(noreplace)``.
+
+.. variable:: CPACK_RPM_CHANGELOG_FILE
+
+ RPM changelog file.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to embed a changelog in the spec file.
+ The referred file will be read and directly put after the ``%changelog``
+ section.
+
+.. variable:: CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST
+
+ list of path to be excluded.
+
+ * Mandatory : NO
+ * Default   : /etc /etc/init.d /usr /usr/bin /usr/include /usr/lib
+               /usr/libx32 /usr/lib64 /usr/share /usr/share/aclocal
+               /usr/share/doc
+
+ May be used to exclude path (directories or files) from the auto-generated
+ list of paths discovered by CPack RPM. The default value contains a
+ reasonable set of values if the variable is not defined by the user. If the
+ variable is defined by the user then the CPack RPM generator will NOT any of
+ the default path. If you want to add some path to the default list then you
+ can use :variable:`CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION` variable.
+
+ .. versionadded:: 3.10
+  Added ``/usr/share/aclocal`` to the default list of excludes.
+
+.. variable:: CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION
+
+ additional list of path to be excluded.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to add more exclude path (directories or files) from the initial
+ default list of excluded paths. See
+ :variable:`CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST`.
+
+.. variable:: CPACK_RPM_RELOCATION_PATHS
+
+ .. versionadded:: 3.2
+
+ Packages relocation paths list.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to specify more than one relocation path per relocatable RPM.
+ Variable contains a list of relocation paths that if relative are prefixed
+ by the value of :variable:`CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX` or by the
+ value of :variable:`CPACK_PACKAGING_INSTALL_PREFIX` if the component version
+ is not provided.
+ Variable is not component based as its content can be used to set a different
+ path prefix for e.g. binary dir and documentation dir at the same time.
+ Only prefixes that are required by a certain component are added to that
+ component - component must contain at least one file/directory/symbolic link
+ with :variable:`CPACK_RPM_RELOCATION_PATHS` prefix for a certain relocation
+ path to be added. Package will not contain any relocation paths if there are
+ no files/directories/symbolic links on any of the provided prefix locations.
+ Packages that either do not contain any relocation paths or contain
+ files/directories/symbolic links that are outside relocation paths print
+ out an ``AUTHOR_WARNING`` that RPM will be partially relocatable.
+
+.. variable:: CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX
+
+ .. versionadded:: 3.2
+
+ Per component relocation path install prefix.
+
+ * Mandatory : NO
+ * Default   : CPACK_PACKAGING_INSTALL_PREFIX
+
+ May be used to set per component :variable:`CPACK_PACKAGING_INSTALL_PREFIX`
+ for relocatable RPM packages.
+
+.. variable:: CPACK_RPM_NO_INSTALL_PREFIX_RELOCATION
+              CPACK_RPM_NO_<COMPONENT>_INSTALL_PREFIX_RELOCATION
+
+ .. versionadded:: 3.3
+
+ Removal of default install prefix from relocation paths list.
+
+ * Mandatory : NO
+ * Default   : CPACK_PACKAGING_INSTALL_PREFIX or CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX
+               are treated as one of relocation paths
+
+ May be used to remove CPACK_PACKAGING_INSTALL_PREFIX and CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX
+ from relocatable RPM prefix paths.
+
+.. variable:: CPACK_RPM_ADDITIONAL_MAN_DIRS
+
+ .. versionadded:: 3.3
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to set additional man dirs that could potentially be compressed
+ by brp-compress RPM macro. Variable content must be a list of regular
+ expressions that point to directories containing man files or to man files
+ directly. Note that in order to compress man pages a path must also be
+ present in brp-compress RPM script and that brp-compress script must be
+ added to RPM configuration by the operating system.
+
+ Regular expressions that are added by default were taken from brp-compress
+ RPM macro:
+
+ - /usr/man/man.*
+ - /usr/man/.*/man.*
+ - /usr/info.*
+ - /usr/share/man/man.*
+ - /usr/share/man/.*/man.*
+ - /usr/share/info.*
+ - /usr/kerberos/man.*
+ - /usr/X11R6/man/man.*
+ - /usr/lib/perl5/man/man.*
+ - /usr/share/doc/.*/man/man.*
+ - /usr/lib/.*/man/man.*
+
+.. variable:: CPACK_RPM_DEFAULT_USER
+              CPACK_RPM_<compName>_DEFAULT_USER
+
+ .. versionadded:: 3.6
+
+ default user ownership of RPM content
+
+ * Mandatory : NO
+ * Default   : root
+
+ Value should be user name and not UID.
+ Note that <compName> must be in upper-case.
+
+.. variable:: CPACK_RPM_DEFAULT_GROUP
+              CPACK_RPM_<compName>_DEFAULT_GROUP
+
+ .. versionadded:: 3.6
+
+ default group ownership of RPM content
+
+ * Mandatory : NO
+ * Default   : root
+
+ Value should be group name and not GID.
+ Note that <compName> must be in upper-case.
+
+.. variable:: CPACK_RPM_DEFAULT_FILE_PERMISSIONS
+              CPACK_RPM_<compName>_DEFAULT_FILE_PERMISSIONS
+
+ .. versionadded:: 3.6
+
+ default permissions used for packaged files
+
+ * Mandatory : NO
+ * Default   : - (system default)
+
+ Accepted values are lists with ``PERMISSIONS``. Valid permissions
+ are:
+
+ - OWNER_READ
+ - OWNER_WRITE
+ - OWNER_EXECUTE
+ - GROUP_READ
+ - GROUP_WRITE
+ - GROUP_EXECUTE
+ - WORLD_READ
+ - WORLD_WRITE
+ - WORLD_EXECUTE
+
+ Note that <compName> must be in upper-case.
+
+.. variable:: CPACK_RPM_DEFAULT_DIR_PERMISSIONS
+              CPACK_RPM_<compName>_DEFAULT_DIR_PERMISSIONS
+
+ .. versionadded:: 3.6
+
+ default permissions used for packaged directories
+
+ * Mandatory : NO
+ * Default   : - (system default)
+
+ Accepted values are lists with PERMISSIONS. Valid permissions
+ are the same as for :variable:`CPACK_RPM_DEFAULT_FILE_PERMISSIONS`.
+ Note that <compName> must be in upper-case.
+
+.. variable:: CPACK_RPM_INSTALL_WITH_EXEC
+
+ .. versionadded:: 3.11
+
+ force execute permissions on programs and shared libraries
+
+ * Mandatory : NO
+ * Default   : - (system default)
+
+ Force set owner, group and world execute permissions on programs and shared
+ libraries. This can be used for creating valid rpm packages on systems such
+ as Debian where shared libraries do not have execute permissions set.
+
+.. note::
+
+ Programs and shared libraries without execute permissions are ignored during
+ separation of debug symbols from the binary for debuginfo packages.
+
+Packaging of Symbolic Links
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.3
+
+The CPack RPM generator supports packaging of symbolic links::
+
+  execute_process(COMMAND ${CMAKE_COMMAND}
+    -E create_symlink <relative_path_location> <symlink_name>)
+  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/<symlink_name>
+    DESTINATION <symlink_location> COMPONENT libraries)
+
+Symbolic links will be optimized (paths will be shortened if possible)
+before being added to the package or if multiple relocation paths are
+detected, a post install symlink relocation script will be generated.
+
+Symbolic links may point to locations that are not packaged by the same
+package (either a different component or even not packaged at all) but
+those locations will be treated as if they were a part of the package
+while determining if symlink should be either created or present in a
+post install script - depending on relocation paths.
+
+.. versionchanged:: 3.6
+ Symbolic links that point to locations outside packaging path produce a
+ warning and are treated as non relocatable permanent symbolic links.
+ Previous versions of CMake produced an error in this case.
+
+Currently there are a few limitations though:
+
+* For component based packaging component interdependency is not checked
+  when processing symbolic links. Symbolic links pointing to content of
+  a different component are treated the same way as if pointing to location
+  that will not be packaged.
+
+* Symbolic links pointing to a location through one or more intermediate
+  symbolic links will not be handled differently - if the intermediate
+  symbolic link(s) is also on a relocatable path, relocating it during
+  package installation may cause initial symbolic link to point to an
+  invalid location.
+
+Packaging of debug information
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.7
+
+Debuginfo packages contain debug symbols and sources for debugging packaged
+binaries.
+
+Debuginfo RPM packaging has its own set of variables:
+
+.. variable:: CPACK_RPM_DEBUGINFO_PACKAGE
+              CPACK_RPM_<component>_DEBUGINFO_PACKAGE
+
+ Enable generation of debuginfo RPM package(s).
+
+ * Mandatory : NO
+ * Default   : OFF
+
+.. note::
+
+ Binaries must contain debug symbols before packaging so use either ``Debug``
+ or ``RelWithDebInfo`` for :variable:`CMAKE_BUILD_TYPE` variable value.
+
+ Additionally, if :variable:`CPACK_STRIP_FILES` is set, the files will be stripped before
+ they get to the RPM generator, so will not contain debug symbols and
+ a debuginfo package will not get built. Do not use with :variable:`CPACK_STRIP_FILES`.
+
+.. note::
+
+ Packages generated from packages without binary files, with binary files but
+ without execute permissions or without debug symbols will cause packaging
+ termination.
+
+.. variable:: CPACK_BUILD_SOURCE_DIRS
+
+ Provides locations of root directories of source files from which binaries
+ were built.
+
+ * Mandatory : YES if :variable:`CPACK_RPM_DEBUGINFO_PACKAGE` is set
+ * Default   : -
+
+.. note::
+
+ For CMake project :variable:`CPACK_BUILD_SOURCE_DIRS` is set by default to
+ point to :variable:`CMAKE_SOURCE_DIR` and :variable:`CMAKE_BINARY_DIR` paths.
+
+.. note::
+
+ Sources with path prefixes that do not fall under any location provided with
+ :variable:`CPACK_BUILD_SOURCE_DIRS` will not be present in debuginfo package.
+
+.. variable:: CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX
+              CPACK_RPM_<component>_BUILD_SOURCE_DIRS_PREFIX
+
+ Prefix of location where sources will be placed during package installation.
+
+ * Mandatory : YES if :variable:`CPACK_RPM_DEBUGINFO_PACKAGE` is set
+ * Default   : "/usr/src/debug/<CPACK_PACKAGE_FILE_NAME>" and
+               for component packaging "/usr/src/debug/<CPACK_PACKAGE_FILE_NAME>-<component>"
+
+.. note::
+
+ Each source path prefix is additionally suffixed by ``src_<index>`` where
+ index is index of the path used from :variable:`CPACK_BUILD_SOURCE_DIRS`
+ variable. This produces ``<CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX>/src_<index>``
+ replacement path.
+ Limitation is that replaced path part must be shorter or of equal
+ length than the length of its replacement. If that is not the case either
+ :variable:`CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX` variable has to be set to
+ a shorter path or source directories must be placed on a longer path.
+
+.. variable:: CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS
+
+ Directories containing sources that should be excluded from debuginfo packages.
+
+ * Mandatory : NO
+ * Default   : "/usr /usr/src /usr/src/debug"
+
+ Listed paths are owned by other RPM packages and should therefore not be
+ deleted on debuginfo package uninstallation.
+
+.. variable:: CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS_ADDITION
+
+ Paths that should be appended to :variable:`CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS`
+ for exclusion.
+
+ * Mandatory : NO
+ * Default   : -
+
+.. variable:: CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE
+
+ .. versionadded:: 3.8
+
+ Create a single debuginfo package even if components packaging is set.
+
+ * Mandatory : NO
+ * Default   : OFF
+
+ When this variable is enabled it produces a single debuginfo package even if
+ component packaging is enabled.
+
+ When using this feature in combination with components packaging and there is
+ more than one component this variable requires :variable:`CPACK_RPM_MAIN_COMPONENT`
+ to be set.
+
+.. note::
+
+ If none of the :variable:`CPACK_RPM_<component>_DEBUGINFO_PACKAGE` variables
+ is set then :variable:`CPACK_RPM_DEBUGINFO_PACKAGE` is automatically set to
+ ``ON`` when :variable:`CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE` is set.
+
+.. variable:: CPACK_RPM_DEBUGINFO_FILE_NAME
+              CPACK_RPM_<component>_DEBUGINFO_FILE_NAME
+
+ .. versionadded:: 3.9
+
+ Debuginfo package file name.
+
+ * Mandatory : NO
+ * Default   : rpmbuild tool generated package file name
+
+ Alternatively provided debuginfo package file name must end with ``.rpm``
+ suffix and should differ from file names of other generated packages.
+
+ Variable may contain ``@cpack_component@`` placeholder which will be
+ replaced by component name if component packaging is enabled otherwise it
+ deletes the placeholder.
+
+ Setting the variable to ``RPM-DEFAULT`` may be used to explicitly set
+ filename generation to default.
+
+.. note::
+
+ :variable:`CPACK_RPM_FILE_NAME` also supports rpmbuild tool generated package
+ file name - disabled by default but can be enabled by setting the variable to
+ ``RPM-DEFAULT``.
+
+Packaging of sources (SRPM)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.7
+
+SRPM packaging is enabled by setting :variable:`CPACK_RPM_PACKAGE_SOURCES`
+variable while usually using :variable:`CPACK_INSTALLED_DIRECTORIES` variable
+to provide directory containing CMakeLists.txt and source files.
+
+For CMake projects SRPM package would be produced by executing::
+
+  cpack -G RPM --config ./CPackSourceConfig.cmake
+
+.. note::
+
+ Produced SRPM package is expected to be built with :manual:`cmake(1)` executable
+ and packaged with :manual:`cpack(1)` executable so CMakeLists.txt has to be
+ located in root source directory and must be able to generate binary rpm
+ packages by executing ``cpack -G`` command. The two executables as well as
+ rpmbuild must also be present when generating binary rpm packages from the
+ produced SRPM package.
+
+Once the SRPM package is generated it can be used to generate binary packages
+by creating a directory structure for rpm generation and executing rpmbuild
+tool::
+
+  mkdir -p build_dir/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
+  rpmbuild --define "_topdir <path_to_build_dir>" --rebuild <SRPM_file_name>
+
+Generated packages will be located in build_dir/RPMS directory or its sub
+directories.
+
+.. note::
+
+ SRPM package internally uses CPack/RPM generator to generate binary packages
+ so CMakeScripts.txt can decide during the SRPM to binary rpm generation step
+ what content the package(s) should have as well as how they should be packaged
+ (monolithic or components). CMake can decide this for e.g. by reading environment
+ variables set by the package manager before starting the process of generating
+ binary rpm packages. This way a single SRPM package can be used to produce
+ different binary rpm packages on different platforms depending on the platform's
+ packaging rules.
+
+Source RPM packaging has its own set of variables:
+
+.. variable:: CPACK_RPM_PACKAGE_SOURCES
+
+ Should the content be packaged as a source rpm (default is binary rpm).
+
+ * Mandatory : NO
+ * Default   : OFF
+
+.. note::
+
+ For cmake projects :variable:`CPACK_RPM_PACKAGE_SOURCES` variable is set
+ to ``OFF`` in CPackConfig.cmake and ``ON`` in CPackSourceConfig.cmake
+ generated files.
+
+.. variable:: CPACK_RPM_SOURCE_PKG_BUILD_PARAMS
+
+ Additional command-line parameters provided to :manual:`cmake(1)` executable.
+
+ * Mandatory : NO
+ * Default   : -
+
+.. variable:: CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX
+
+ Packaging install prefix that would be provided in :variable:`CPACK_PACKAGING_INSTALL_PREFIX`
+ variable for producing binary RPM packages.
+
+ * Mandatory : YES
+ * Default   : "/"
+
+.. variable:: CPACK_RPM_BUILDREQUIRES
+
+ List of source rpm build dependencies.
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to set source RPM build dependencies (BuildRequires). Note that
+ you must enclose the complete build requirements string between quotes, for
+ example::
+
+  set(CPACK_RPM_BUILDREQUIRES "python >= 2.5.0, cmake >= 2.8")
+
+.. variable:: CPACK_RPM_REQUIRES_EXCLUDE_FROM
+
+ .. versionadded:: 3.22
+
+ * Mandatory : NO
+ * Default   : -
+
+ May be used to keep the dependency generator from scanning specific files
+ or directories for dependencies.  Note that you can use a regular
+ expression that matches all of the directories or files, for example::
+
+  set(CPACK_RPM_REQUIRES_EXCLUDE_FROM "bin/libqsqloci.*\\.so.*")
diff --git a/share/cmake-3.22/Help/cpack_gen/wix.rst b/share/cmake-3.22/Help/cpack_gen/wix.rst
new file mode 100644
index 0000000..79f835e
--- /dev/null
+++ b/share/cmake-3.22/Help/cpack_gen/wix.rst
@@ -0,0 +1,322 @@
+CPack WIX Generator
+-------------------
+
+CPack WIX generator specific options
+
+.. versionadded:: 3.7
+  Support :variable:`CPACK_COMPONENT_<compName>_DISABLED` variable.
+
+Variables specific to CPack WIX generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The following variables are specific to the installers built on
+Windows using WiX.
+
+.. variable:: CPACK_WIX_UPGRADE_GUID
+
+ Upgrade GUID (``Product/@UpgradeCode``)
+
+ Will be automatically generated unless explicitly provided.
+
+ It should be explicitly set to a constant generated globally unique
+ identifier (GUID) to allow your installers to replace existing
+ installations that use the same GUID.
+
+ You may for example explicitly set this variable in your
+ CMakeLists.txt to the value that has been generated per default.  You
+ should not use GUIDs that you did not generate yourself or which may
+ belong to other projects.
+
+ A GUID shall have the following fixed length syntax::
+
+  XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
+
+ (each X represents an uppercase hexadecimal digit)
+
+.. variable:: CPACK_WIX_PRODUCT_GUID
+
+ Product GUID (``Product/@Id``)
+
+ Will be automatically generated unless explicitly provided.
+
+ If explicitly provided this will set the Product Id of your installer.
+
+ The installer will abort if it detects a pre-existing installation that
+ uses the same GUID.
+
+ The GUID shall use the syntax described for CPACK_WIX_UPGRADE_GUID.
+
+.. variable:: CPACK_WIX_LICENSE_RTF
+
+ RTF License File
+
+ If CPACK_RESOURCE_FILE_LICENSE has an .rtf extension it is used as-is.
+
+ If CPACK_RESOURCE_FILE_LICENSE has an .txt extension it is implicitly
+ converted to RTF by the WIX Generator.
+ The expected encoding of the .txt file is UTF-8.
+
+ With CPACK_WIX_LICENSE_RTF you can override the license file used by the
+ WIX Generator in case CPACK_RESOURCE_FILE_LICENSE is in an unsupported
+ format or the .txt -> .rtf conversion does not work as expected.
+
+.. variable:: CPACK_WIX_PRODUCT_ICON
+
+ The Icon shown next to the program name in Add/Remove programs.
+
+ If set, this icon is used in place of the default icon.
+
+.. variable:: CPACK_WIX_UI_REF
+
+ This variable allows you to override the Id of the ``<UIRef>`` element
+ in the WiX template.
+
+ The default is ``WixUI_InstallDir`` in case no CPack components have
+ been defined and ``WixUI_FeatureTree`` otherwise.
+
+.. variable:: CPACK_WIX_UI_BANNER
+
+ The bitmap will appear at the top of all installer pages other than the
+ welcome and completion dialogs.
+
+ If set, this image will replace the default banner image.
+
+ This image must be 493 by 58 pixels.
+
+.. variable:: CPACK_WIX_UI_DIALOG
+
+ Background bitmap used on the welcome and completion dialogs.
+
+ If this variable is set, the installer will replace the default dialog
+ image.
+
+ This image must be 493 by 312 pixels.
+
+.. variable:: CPACK_WIX_PROGRAM_MENU_FOLDER
+
+ Start menu folder name for launcher.
+
+ If this variable is not set, it will be initialized with CPACK_PACKAGE_NAME
+
+ .. versionadded:: 3.16
+  If this variable is set to ``.``, then application shortcuts will be
+  created directly in the start menu and the uninstaller shortcut will be
+  omitted.
+
+.. variable:: CPACK_WIX_CULTURES
+
+ Language(s) of the installer
+
+ Languages are compiled into the WixUI extension library.  To use them,
+ simply provide the name of the culture.  If you specify more than one
+ culture identifier in a comma or semicolon delimited list, the first one
+ that is found will be used.  You can find a list of supported languages at:
+ http://wix.sourceforge.net/manual-wix3/WixUI_localization.htm
+
+.. variable:: CPACK_WIX_TEMPLATE
+
+ Template file for WiX generation
+
+ If this variable is set, the specified template will be used to generate
+ the WiX wxs file.  This should be used if further customization of the
+ output is required.
+
+ If this variable is not set, the default MSI template included with CMake
+ will be used.
+
+.. variable:: CPACK_WIX_PATCH_FILE
+
+ Optional list of XML files with fragments to be inserted into
+ generated WiX sources.
+
+ .. versionadded:: 3.5
+  Support listing multiple patch files.
+
+ This optional variable can be used to specify an XML file that the
+ WIX generator will use to inject fragments into its generated
+ source files.
+
+ Patch files understood by the CPack WIX generator
+ roughly follow this RELAX NG compact schema:
+
+ .. code-block:: none
+
+    start = CPackWiXPatch
+
+    CPackWiXPatch = element CPackWiXPatch { CPackWiXFragment* }
+
+    CPackWiXFragment = element CPackWiXFragment
+    {
+        attribute Id { string },
+        fragmentContent*
+    }
+
+    fragmentContent = element * - CPackWiXFragment
+    {
+        (attribute * { text } | text | fragmentContent)*
+    }
+
+ Currently fragments can be injected into most
+ Component, File, Directory and Feature elements.
+
+ .. versionadded:: 3.3
+  The following additional special Ids can be used:
+
+  * ``#PRODUCT`` for the ``<Product>`` element.
+  * ``#PRODUCTFEATURE`` for the root ``<Feature>`` element.
+
+ .. versionadded:: 3.7
+  Support patching arbitrary ``<Feature>`` elements.
+
+ .. versionadded:: 3.9
+  Allow setting additional attributes.
+
+ The following example illustrates how this works.
+
+ Given that the WIX generator creates the following XML element:
+
+ .. code-block:: xml
+
+    <Component Id="CM_CP_applications.bin.my_libapp.exe" Guid="*"/>
+
+ The following XML patch file may be used to inject an Environment element
+ into it:
+
+ .. code-block:: xml
+
+    <CPackWiXPatch>
+      <CPackWiXFragment Id="CM_CP_applications.bin.my_libapp.exe">
+        <Environment Id="MyEnvironment" Action="set"
+          Name="MyVariableName" Value="MyVariableValue"/>
+      </CPackWiXFragment>
+    </CPackWiXPatch>
+
+.. variable:: CPACK_WIX_EXTRA_SOURCES
+
+ Extra WiX source files
+
+ This variable provides an optional list of extra WiX source files (.wxs)
+ that should be compiled and linked.  The full path to source files is
+ required.
+
+.. variable:: CPACK_WIX_EXTRA_OBJECTS
+
+ Extra WiX object files or libraries
+
+ This variable provides an optional list of extra WiX object (.wixobj)
+ and/or WiX library (.wixlib) files.  The full path to objects and libraries
+ is required.
+
+.. variable:: CPACK_WIX_EXTENSIONS
+
+ This variable provides a list of additional extensions for the WiX
+ tools light and candle.
+
+.. variable:: CPACK_WIX_<TOOL>_EXTENSIONS
+
+ This is the tool specific version of CPACK_WIX_EXTENSIONS.
+ ``<TOOL>`` can be either LIGHT or CANDLE.
+
+.. variable:: CPACK_WIX_<TOOL>_EXTRA_FLAGS
+
+ This list variable allows you to pass additional
+ flags to the WiX tool ``<TOOL>``.
+
+ Use it at your own risk.
+ Future versions of CPack may generate flags which may be in conflict
+ with your own flags.
+
+ ``<TOOL>`` can be either LIGHT or CANDLE.
+
+.. variable:: CPACK_WIX_CMAKE_PACKAGE_REGISTRY
+
+ If this variable is set the generated installer will create
+ an entry in the windows registry key
+ ``HKEY_LOCAL_MACHINE\Software\Kitware\CMake\Packages\<PackageName>``
+ The value for ``<PackageName>`` is provided by this variable.
+
+ Assuming you also install a CMake configuration file this will
+ allow other CMake projects to find your package with
+ the :command:`find_package` command.
+
+.. variable:: CPACK_WIX_PROPERTY_<PROPERTY>
+
+ .. versionadded:: 3.1
+
+ This variable can be used to provide a value for
+ the Windows Installer property ``<PROPERTY>``
+
+ The following list contains some example properties that can be used to
+ customize information under
+ "Programs and Features" (also known as "Add or Remove Programs")
+
+ * ARPCOMMENTS - Comments
+ * ARPHELPLINK - Help and support information URL
+ * ARPURLINFOABOUT - General information URL
+ * ARPURLUPDATEINFO - Update information URL
+ * ARPHELPTELEPHONE - Help and support telephone number
+ * ARPSIZE - Size (in kilobytes) of the application
+
+.. variable:: CPACK_WIX_ROOT_FEATURE_TITLE
+
+ .. versionadded:: 3.7
+
+ Sets the name of the root install feature in the WIX installer. Same as
+ CPACK_COMPONENT_<compName>_DISPLAY_NAME for components.
+
+.. variable:: CPACK_WIX_ROOT_FEATURE_DESCRIPTION
+
+ .. versionadded:: 3.7
+
+ Sets the description of the root install feature in the WIX installer. Same as
+ CPACK_COMPONENT_<compName>_DESCRIPTION for components.
+
+.. variable:: CPACK_WIX_SKIP_PROGRAM_FOLDER
+
+ .. versionadded:: 3.7
+
+ If this variable is set to true, the default install location
+ of the generated package will be CPACK_PACKAGE_INSTALL_DIRECTORY directly.
+ The install location will not be located relatively below
+ ProgramFiles or ProgramFiles64.
+
+  .. note::
+    Installers created with this feature do not take differences
+    between the system on which the installer is created
+    and the system on which the installer might be used into account.
+
+    It is therefore possible that the installer e.g. might try to install
+    onto a drive that is unavailable or unintended or a path that does not
+    follow the localization or convention of the system on which the
+    installation is performed.
+
+.. variable:: CPACK_WIX_ROOT_FOLDER_ID
+
+ .. versionadded:: 3.9
+
+ This variable allows specification of a custom root folder ID.
+ The generator specific ``<64>`` token can be used for
+ folder IDs that come in 32-bit and 64-bit variants.
+ In 32-bit builds the token will expand empty while in 64-bit builds
+ it will expand to ``64``.
+
+ When unset generated installers will default installing to
+ ``ProgramFiles<64>Folder``.
+
+.. variable:: CPACK_WIX_ROOT
+
+ This variable can optionally be set to the root directory
+ of a custom WiX Toolset installation.
+
+ When unspecified CPack will try to locate a WiX Toolset
+ installation via the ``WIX`` environment variable instead.
+
+.. variable:: CPACK_WIX_CUSTOM_XMLNS
+
+ .. versionadded:: 3.19
+
+ This variable provides a list of custom namespace declarations that are necessary
+ for using WiX extensions. Each declaration should be in the form name=url, where
+ name is the plain namespace without the usual xmlns: prefix and url is an unquoted
+ namespace url. A list of commonly known WiX schemata can be found here:
+ https://wixtoolset.org/documentation/manual/v3/xsd/
diff --git a/share/cmake-3.22/Help/envvar/ASM_DIALECT.rst b/share/cmake-3.22/Help/envvar/ASM_DIALECT.rst
new file mode 100644
index 0000000..c89515e
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/ASM_DIALECT.rst
@@ -0,0 +1,22 @@
+ASM<DIALECT>
+------------
+
+.. include:: ENV_VAR.txt
+
+Preferred executable for compiling a specific dialect of assembly language
+files. ``ASM<DIALECT>`` can be ``ASM``, ``ASM_NASM`` (Netwide Assembler),
+``ASM_MASM`` (Microsoft Assembler) or ``ASM-ATT`` (Assembler AT&T).
+Will only be used by CMake on the first configuration to determine
+``ASM<DIALECT>`` compiler, after which the value for ``ASM<DIALECT>`` is stored
+in the cache as
+:variable:`CMAKE_ASM<DIALECT>_COMPILER <CMAKE_<LANG>_COMPILER>`. For subsequent
+configuration runs, the environment variable will be ignored in favor of
+:variable:`CMAKE_ASM<DIALECT>_COMPILER <CMAKE_<LANG>_COMPILER>`.
+
+.. note::
+  Options that are required to make the compiler work correctly can be included;
+  they can not be changed.
+
+.. code-block:: console
+
+  $ export ASM="custom-compiler --arg1 --arg2"
diff --git a/share/cmake-3.18/Help/envvar/ASM_DIALECTFLAGS.rst b/share/cmake-3.22/Help/envvar/ASM_DIALECTFLAGS.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/ASM_DIALECTFLAGS.rst
rename to share/cmake-3.22/Help/envvar/ASM_DIALECTFLAGS.rst
diff --git a/share/cmake-3.22/Help/envvar/CC.rst b/share/cmake-3.22/Help/envvar/CC.rst
new file mode 100644
index 0000000..1bb8d51
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CC.rst
@@ -0,0 +1,19 @@
+CC
+--
+
+.. include:: ENV_VAR.txt
+
+Preferred executable for compiling ``C`` language files. Will only be used by
+CMake on the first configuration to determine ``C`` compiler, after which the
+value for ``CC`` is stored in the cache as
+:variable:`CMAKE_C_COMPILER <CMAKE_<LANG>_COMPILER>`. For any configuration run
+(including the first), the environment variable will be ignored if the
+:variable:`CMAKE_C_COMPILER <CMAKE_<LANG>_COMPILER>` variable is defined.
+
+.. note::
+  Options that are required to make the compiler work correctly can be included;
+  they can not be changed.
+
+.. code-block:: console
+
+  $ export CC="custom-compiler --arg1 --arg2"
diff --git a/share/cmake-3.22/Help/envvar/CCMAKE_COLORS.rst b/share/cmake-3.22/Help/envvar/CCMAKE_COLORS.rst
new file mode 100644
index 0000000..4e76bf8
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CCMAKE_COLORS.rst
@@ -0,0 +1,36 @@
+CCMAKE_COLORS
+-------------
+
+.. versionadded:: 3.18
+
+Determines what colors are used by the CMake curses interface,
+when run on a terminal that supports colors.
+The syntax follows the same conventions as ``LS_COLORS``;
+that is, a list of key/value pairs separated by ``:``.
+
+Keys are a single letter corresponding to a CMake cache variable type:
+
+- ``s``: A ``STRING``.
+- ``p``: A ``FILEPATH``.
+- ``c``: A value which has an associated list of choices.
+- ``y``: A ``BOOL`` which has a true-like value (e.g. ``ON``, ``YES``).
+- ``n``: A ``BOOL`` which has a false-like value (e.g. ``OFF``, ``NO``).
+
+Values are an integer number that specifies what color to use.
+``0`` is black (you probably don't want to use that).
+Others are determined by your terminal's color support.
+Most (color) terminals will support at least 8 or 16 colors.
+Some will support up to 256 colors. The colors will likely match
+`this chart <https://upload.wikimedia.org/wikipedia/commons/1/15/Xterm_256color_chart.svg>`_,
+although the first 16 colors may match the original
+`CGA color palette <https://en.wikipedia.org/wiki/Color_Graphics_Adapter#Color_palette>`_.
+(Many modern terminal emulators also allow their color palette,
+at least for the first 16 colors, to be configured by the user.)
+
+Note that fairly minimal checking is done for bad colors
+(although a value higher than what curses believes your terminal supports
+will be silently ignored) or bad syntax.
+
+For example::
+
+  CCMAKE_COLORS='s=39:p=220:c=207:n=196:y=46'
diff --git a/share/cmake-3.18/Help/envvar/CFLAGS.rst b/share/cmake-3.22/Help/envvar/CFLAGS.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/CFLAGS.rst
rename to share/cmake-3.22/Help/envvar/CFLAGS.rst
diff --git a/share/cmake-3.22/Help/envvar/CMAKE_APPLE_SILICON_PROCESSOR.rst b/share/cmake-3.22/Help/envvar/CMAKE_APPLE_SILICON_PROCESSOR.rst
new file mode 100644
index 0000000..adecb72
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CMAKE_APPLE_SILICON_PROCESSOR.rst
@@ -0,0 +1,13 @@
+CMAKE_APPLE_SILICON_PROCESSOR
+-----------------------------
+
+.. versionadded:: 3.19.2
+
+.. include:: ENV_VAR.txt
+
+On Apple Silicon hosts running macOS, set this environment variable to tell
+CMake what architecture to use for :variable:`CMAKE_HOST_SYSTEM_PROCESSOR`.
+The value must be either ``arm64`` or ``x86_64``.
+
+The :variable:`CMAKE_APPLE_SILICON_PROCESSOR` normal variable, if set,
+overrides this environment variable.
diff --git a/share/cmake-3.22/Help/envvar/CMAKE_BUILD_PARALLEL_LEVEL.rst b/share/cmake-3.22/Help/envvar/CMAKE_BUILD_PARALLEL_LEVEL.rst
new file mode 100644
index 0000000..dbc589a
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CMAKE_BUILD_PARALLEL_LEVEL.rst
@@ -0,0 +1,13 @@
+CMAKE_BUILD_PARALLEL_LEVEL
+--------------------------
+
+.. versionadded:: 3.12
+
+.. include:: ENV_VAR.txt
+
+Specifies the maximum number of concurrent processes to use when building
+using the ``cmake --build`` command line
+:ref:`Build Tool Mode <Build Tool Mode>`.
+
+If this variable is defined empty the native build tool's default number is
+used.
diff --git a/share/cmake-3.22/Help/envvar/CMAKE_BUILD_TYPE.rst b/share/cmake-3.22/Help/envvar/CMAKE_BUILD_TYPE.rst
new file mode 100644
index 0000000..f798aff
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CMAKE_BUILD_TYPE.rst
@@ -0,0 +1,10 @@
+CMAKE_BUILD_TYPE
+----------------
+
+.. versionadded:: 3.22
+
+.. include:: ENV_VAR.txt
+
+The ``CMAKE_BUILD_TYPE`` environment variable specifies a default value
+for the :variable:`CMAKE_BUILD_TYPE` variable when there is no explicit
+configuration given on the first run while creating a new build tree.
diff --git a/share/cmake-3.22/Help/envvar/CMAKE_CONFIGURATION_TYPES.rst b/share/cmake-3.22/Help/envvar/CMAKE_CONFIGURATION_TYPES.rst
new file mode 100644
index 0000000..833aa4a
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CMAKE_CONFIGURATION_TYPES.rst
@@ -0,0 +1,11 @@
+CMAKE_CONFIGURATION_TYPES
+-------------------------
+
+.. versionadded:: 3.22
+
+.. include:: ENV_VAR.txt
+
+The ``CMAKE_CONFIGURATION_TYPES`` environment variable specifies a
+default value for the :variable:`CMAKE_CONFIGURATION_TYPES` variable
+when there is no explicit configuration given on the first run while
+creating a new build tree.
diff --git a/share/cmake-3.18/Help/envvar/CMAKE_CONFIG_TYPE.rst b/share/cmake-3.22/Help/envvar/CMAKE_CONFIG_TYPE.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/CMAKE_CONFIG_TYPE.rst
rename to share/cmake-3.22/Help/envvar/CMAKE_CONFIG_TYPE.rst
diff --git a/share/cmake-3.22/Help/envvar/CMAKE_EXPORT_COMPILE_COMMANDS.rst b/share/cmake-3.22/Help/envvar/CMAKE_EXPORT_COMPILE_COMMANDS.rst
new file mode 100644
index 0000000..9e678be
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CMAKE_EXPORT_COMPILE_COMMANDS.rst
@@ -0,0 +1,11 @@
+CMAKE_EXPORT_COMPILE_COMMANDS
+-----------------------------
+
+.. versionadded:: 3.17
+
+.. include:: ENV_VAR.txt
+
+The default value for :variable:`CMAKE_EXPORT_COMPILE_COMMANDS` when there
+is no explicit configuration given on the first run while creating a new
+build tree.  On later runs in an existing build tree the value persists in
+the cache as :variable:`CMAKE_EXPORT_COMPILE_COMMANDS`.
diff --git a/share/cmake-3.22/Help/envvar/CMAKE_GENERATOR.rst b/share/cmake-3.22/Help/envvar/CMAKE_GENERATOR.rst
new file mode 100644
index 0000000..3488b04
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CMAKE_GENERATOR.rst
@@ -0,0 +1,18 @@
+CMAKE_GENERATOR
+---------------
+
+.. versionadded:: 3.15
+
+.. include:: ENV_VAR.txt
+
+Specifies the CMake default generator to use when no generator is supplied
+with ``-G``. If the provided value doesn't name a generator known by CMake,
+the internal default is used.  Either way the resulting generator selection
+is stored in the :variable:`CMAKE_GENERATOR` variable.
+
+Some generators may be additionally configured using the environment
+variables:
+
+* :envvar:`CMAKE_GENERATOR_PLATFORM`
+* :envvar:`CMAKE_GENERATOR_TOOLSET`
+* :envvar:`CMAKE_GENERATOR_INSTANCE`
diff --git a/share/cmake-3.22/Help/envvar/CMAKE_GENERATOR_INSTANCE.rst b/share/cmake-3.22/Help/envvar/CMAKE_GENERATOR_INSTANCE.rst
new file mode 100644
index 0000000..8ca7d80
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CMAKE_GENERATOR_INSTANCE.rst
@@ -0,0 +1,9 @@
+CMAKE_GENERATOR_INSTANCE
+------------------------
+
+.. versionadded:: 3.15
+
+.. include:: ENV_VAR.txt
+
+Default value for :variable:`CMAKE_GENERATOR_INSTANCE` if no Cache entry is
+present. This value is only applied if :envvar:`CMAKE_GENERATOR` is set.
diff --git a/share/cmake-3.22/Help/envvar/CMAKE_GENERATOR_PLATFORM.rst b/share/cmake-3.22/Help/envvar/CMAKE_GENERATOR_PLATFORM.rst
new file mode 100644
index 0000000..b039845
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CMAKE_GENERATOR_PLATFORM.rst
@@ -0,0 +1,10 @@
+CMAKE_GENERATOR_PLATFORM
+------------------------
+
+.. versionadded:: 3.15
+
+.. include:: ENV_VAR.txt
+
+Default value for :variable:`CMAKE_GENERATOR_PLATFORM` if no Cache entry
+is present and no value is specified by :manual:`cmake(1)` ``-A`` option.
+This value is only applied if :envvar:`CMAKE_GENERATOR` is set.
diff --git a/share/cmake-3.22/Help/envvar/CMAKE_GENERATOR_TOOLSET.rst b/share/cmake-3.22/Help/envvar/CMAKE_GENERATOR_TOOLSET.rst
new file mode 100644
index 0000000..394dd88
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CMAKE_GENERATOR_TOOLSET.rst
@@ -0,0 +1,10 @@
+CMAKE_GENERATOR_TOOLSET
+-----------------------
+
+.. versionadded:: 3.15
+
+.. include:: ENV_VAR.txt
+
+Default value for :variable:`CMAKE_GENERATOR_TOOLSET` if no Cache entry
+is present and no value is specified by :manual:`cmake(1)` ``-T`` option.
+This value is only applied if :envvar:`CMAKE_GENERATOR` is set.
diff --git a/share/cmake-3.22/Help/envvar/CMAKE_INSTALL_MODE.rst b/share/cmake-3.22/Help/envvar/CMAKE_INSTALL_MODE.rst
new file mode 100644
index 0000000..4549ea1
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CMAKE_INSTALL_MODE.rst
@@ -0,0 +1,116 @@
+CMAKE_INSTALL_MODE
+------------------
+
+.. versionadded:: 3.22
+
+.. include:: ENV_VAR.txt
+
+The ``CMAKE_INSTALL_MODE`` environment variable allows users to operate
+CMake in an alternate mode of :command:`file(INSTALL)` and :command:`install()`.
+
+The default behavior for an installation is to copy a source file from a
+source directory into a destination directory. This environment variable
+however allows the user to override this behavior, causing CMake to create
+symbolic links instead.
+
+Usage Scenarios
+^^^^^^^^^^^^^^^
+
+Installing symbolic links rather than copying files can help in the following
+ways:
+
+* Conserving storage space because files do not have to be duplicated on disk.
+* Changes to the source of the symbolic link are seen at the install
+  destination without having to re-run the install step.
+* Editing through the link at the install destination will modify the source
+  of the link. This may be useful when dealing with CMake project hierarchies,
+  i.e. using :module:`ExternalProject` and consistent source navigation and
+  refactoring is desired across projects.
+
+Allowed Values
+^^^^^^^^^^^^^^
+
+The following values are allowed for ``CMAKE_INSTALL_MODE``:
+
+``COPY``, empty or unset
+  Duplicate the file at its destination.  This is the default behavior.
+
+``ABS_SYMLINK``
+  Create an *absolute* symbolic link to the source file at the destination.
+  Halt with an error if the link cannot be created.
+
+``ABS_SYMLINK_OR_COPY``
+  Like ``ABS_SYMLINK`` but fall back to silently copying if the symlink
+  couldn't be created.
+
+``REL_SYMLINK``
+  Create a *relative* symbolic link to the source file at the destination.
+  Halt with an error if the link cannot be created.
+
+``REL_SYMLINK_OR_COPY``
+  Like ``REL_SYMLINK`` but fall back to silently copying if the symlink
+  couldn't be created.
+
+``SYMLINK``
+  Try as if through ``REL_SYMLINK`` and fall back to ``ABS_SYMLINK`` if the
+  referenced file cannot be expressed using a relative path.
+  Halt with an error if the link cannot be created.
+
+``SYMLINK_OR_COPY``
+  Like ``SYMLINK`` but fall back to silently copying if the symlink couldn't
+  be created.
+
+.. note::
+  A symbolic link consists of a reference file path rather than contents of its
+  own, hence there are two ways to express the relation, either by a *relative*
+  or an *absolute* path.
+
+When To Set The Environment Variable
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+For the environment variable to take effect, it must be set during the correct
+build phase(s).
+
+* If the project calls :command:`file(INSTALL)` directly, the environment
+  variable must be set during the configuration phase.
+* In order to apply to :command:`install()`, the environment variable must be
+  set during installation.  This could be during a build if using the
+  ``install`` or ``package`` build targets, or separate from the build when
+  invoking an install or running :manual:`cpack <cpack(1)>` from the command
+  line.
+* When using :module:`ExternalProject`, it might be required during the build
+  phase, since the external project's own configure, build and install steps
+  will execute during the main project's build phase.
+
+Given the above, it is recommended to set the environment variable consistently
+across all phases (configure, build and install).
+
+Caveats
+^^^^^^^
+
+Use this environment variable with caution. The following highlights some
+points to be considered:
+
+* ``CMAKE_INSTALL_MODE`` only affects files, not directories.
+
+* Symbolic links are not available on all platforms.
+
+* The way this environment variable interacts with the install step of
+  :module:`ExternalProject` is more complex. For further details, see that
+  module's documentation.
+
+* A symbolic link ties the destination to the source in a persistent way.
+  Writing to either of the two affects both file system objects.
+  This is in contrast to normal install behavior which only copies files as
+  they were at the time the install was performed, with no enduring
+  relationship between the source and destination of the install.
+
+* Combining ``CMAKE_INSTALL_MODE`` with :prop_tgt:`IOS_INSTALL_COMBINED` is
+  not supported.
+
+* Changing ``CMAKE_INSTALL_MODE`` from what it was on a previous run can lead
+  to unexpected results.  Moving from a non-symlinking mode to a symlinking
+  mode will discard any previous file at the destination, but the reverse is
+  not true.  Once a symlink exists at the destination, even if you switch to a
+  non-symlink mode, the symlink will continue to exist at the destination and
+  will not be replaced by an actual file.
diff --git a/share/cmake-3.22/Help/envvar/CMAKE_LANG_COMPILER_LAUNCHER.rst b/share/cmake-3.22/Help/envvar/CMAKE_LANG_COMPILER_LAUNCHER.rst
new file mode 100644
index 0000000..c384fa1
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CMAKE_LANG_COMPILER_LAUNCHER.rst
@@ -0,0 +1,12 @@
+CMAKE_<LANG>_COMPILER_LAUNCHER
+------------------------------
+
+.. versionadded:: 3.17
+
+.. include:: ENV_VAR.txt
+
+Default compiler launcher to use for the specified language. Will only be used
+by CMake to initialize the variable on the first configuration. Afterwards, it
+is available through the cache setting of the variable of the same name. For
+any configuration run (including the first), the environment variable will be
+ignored if the :variable:`CMAKE_<LANG>_COMPILER_LAUNCHER` variable is defined.
diff --git a/share/cmake-3.22/Help/envvar/CMAKE_LANG_LINKER_LAUNCHER.rst b/share/cmake-3.22/Help/envvar/CMAKE_LANG_LINKER_LAUNCHER.rst
new file mode 100644
index 0000000..6251d9c
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CMAKE_LANG_LINKER_LAUNCHER.rst
@@ -0,0 +1,13 @@
+CMAKE_<LANG>_LINKER_LAUNCHER
+----------------------------
+
+.. versionadded:: 3.21
+
+.. include:: ENV_VAR.txt
+
+Default launcher to use when linking a target of the specified language. Will
+only be used by CMake to initialize the variable on the first configuration.
+Afterwards, it is available through the cache setting of the variable of the
+same name. For any configuration run (including the first), the environment
+variable will be ignored if the :variable:`CMAKE_<LANG>_LINKER_LAUNCHER`
+variable is defined.
diff --git a/share/cmake-3.18/Help/envvar/CMAKE_MSVCIDE_RUN_PATH.rst b/share/cmake-3.22/Help/envvar/CMAKE_MSVCIDE_RUN_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/CMAKE_MSVCIDE_RUN_PATH.rst
rename to share/cmake-3.22/Help/envvar/CMAKE_MSVCIDE_RUN_PATH.rst
diff --git a/share/cmake-3.22/Help/envvar/CMAKE_NO_VERBOSE.rst b/share/cmake-3.22/Help/envvar/CMAKE_NO_VERBOSE.rst
new file mode 100644
index 0000000..fe733f8
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CMAKE_NO_VERBOSE.rst
@@ -0,0 +1,10 @@
+CMAKE_NO_VERBOSE
+----------------
+
+.. versionadded:: 3.14
+
+Disables verbose output from CMake when :envvar:`VERBOSE` environment variable
+is set.
+
+Only your build tool of choice will still print verbose output when you start
+to actually build your project.
diff --git a/share/cmake-3.18/Help/envvar/CMAKE_OSX_ARCHITECTURES.rst b/share/cmake-3.22/Help/envvar/CMAKE_OSX_ARCHITECTURES.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/CMAKE_OSX_ARCHITECTURES.rst
rename to share/cmake-3.22/Help/envvar/CMAKE_OSX_ARCHITECTURES.rst
diff --git a/share/cmake-3.18/Help/envvar/CMAKE_PREFIX_PATH.rst b/share/cmake-3.22/Help/envvar/CMAKE_PREFIX_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/CMAKE_PREFIX_PATH.rst
rename to share/cmake-3.22/Help/envvar/CMAKE_PREFIX_PATH.rst
diff --git a/share/cmake-3.22/Help/envvar/CMAKE_TOOLCHAIN_FILE.rst b/share/cmake-3.22/Help/envvar/CMAKE_TOOLCHAIN_FILE.rst
new file mode 100644
index 0000000..7ea9cea
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CMAKE_TOOLCHAIN_FILE.rst
@@ -0,0 +1,12 @@
+CMAKE_TOOLCHAIN_FILE
+--------------------
+
+.. versionadded:: 3.21
+
+.. include:: ENV_VAR.txt
+
+The ``CMAKE_TOOLCHAIN_FILE`` environment variable specifies a default value
+for the :variable:`CMAKE_TOOLCHAIN_FILE` variable when there is no explicit
+configuration given on the first run while creating a new build tree.
+On later runs in an existing build tree the value persists in the cache
+as :variable:`CMAKE_TOOLCHAIN_FILE`.
diff --git a/share/cmake-3.22/Help/envvar/CSFLAGS.rst b/share/cmake-3.22/Help/envvar/CSFLAGS.rst
new file mode 100644
index 0000000..784328a
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CSFLAGS.rst
@@ -0,0 +1,15 @@
+CSFLAGS
+-------
+
+.. versionadded:: 3.9.2
+
+.. include:: ENV_VAR.txt
+
+Default compilation flags to be used when compiling ``CSharp`` files. Will only be
+used by CMake on the first configuration to determine ``CSharp`` default
+compilation flags, after which the value for ``CSFLAGS`` is stored in the cache
+as :variable:`CMAKE_CSharp_FLAGS <CMAKE_<LANG>_FLAGS>`. For any configuration
+run (including the first), the environment variable will be ignored if the
+:variable:`CMAKE_CSharp_FLAGS <CMAKE_<LANG>_FLAGS>` variable is defined.
+
+See also :variable:`CMAKE_CSharp_FLAGS_INIT <CMAKE_<LANG>_FLAGS_INIT>`.
diff --git a/share/cmake-3.18/Help/envvar/CTEST_INTERACTIVE_DEBUG_MODE.rst b/share/cmake-3.22/Help/envvar/CTEST_INTERACTIVE_DEBUG_MODE.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/CTEST_INTERACTIVE_DEBUG_MODE.rst
rename to share/cmake-3.22/Help/envvar/CTEST_INTERACTIVE_DEBUG_MODE.rst
diff --git a/share/cmake-3.18/Help/envvar/CTEST_OUTPUT_ON_FAILURE.rst b/share/cmake-3.22/Help/envvar/CTEST_OUTPUT_ON_FAILURE.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/CTEST_OUTPUT_ON_FAILURE.rst
rename to share/cmake-3.22/Help/envvar/CTEST_OUTPUT_ON_FAILURE.rst
diff --git a/share/cmake-3.18/Help/envvar/CTEST_PARALLEL_LEVEL.rst b/share/cmake-3.22/Help/envvar/CTEST_PARALLEL_LEVEL.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/CTEST_PARALLEL_LEVEL.rst
rename to share/cmake-3.22/Help/envvar/CTEST_PARALLEL_LEVEL.rst
diff --git a/share/cmake-3.22/Help/envvar/CTEST_PROGRESS_OUTPUT.rst b/share/cmake-3.22/Help/envvar/CTEST_PROGRESS_OUTPUT.rst
new file mode 100644
index 0000000..8c29d7d
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CTEST_PROGRESS_OUTPUT.rst
@@ -0,0 +1,18 @@
+CTEST_PROGRESS_OUTPUT
+---------------------
+
+.. versionadded:: 3.13
+
+.. include:: ENV_VAR.txt
+
+Boolean environment variable that affects how :manual:`ctest <ctest(1)>`
+command output reports overall progress.  When set to ``1``, ``TRUE``, ``ON`` or anything
+else that evaluates to boolean true, progress is reported by repeatedly
+updating the same line.  This greatly reduces the overall verbosity, but is
+only supported when output is sent directly to a terminal.  If the environment
+variable is not set or has a value that evaluates to false, output is reported
+normally with each test having its own start and end lines logged to the
+output.
+
+The ``--progress`` option to :manual:`ctest <ctest(1)>` overrides this
+environment variable if both are given.
diff --git a/share/cmake-3.18/Help/envvar/CTEST_USE_LAUNCHERS_DEFAULT.rst b/share/cmake-3.22/Help/envvar/CTEST_USE_LAUNCHERS_DEFAULT.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/CTEST_USE_LAUNCHERS_DEFAULT.rst
rename to share/cmake-3.22/Help/envvar/CTEST_USE_LAUNCHERS_DEFAULT.rst
diff --git a/share/cmake-3.22/Help/envvar/CUDAARCHS.rst b/share/cmake-3.22/Help/envvar/CUDAARCHS.rst
new file mode 100644
index 0000000..82369cd
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CUDAARCHS.rst
@@ -0,0 +1,13 @@
+CUDAARCHS
+---------
+
+.. versionadded:: 3.20
+
+.. include:: ENV_VAR.txt
+
+Value used to initialize :variable:`CMAKE_CUDA_ARCHITECTURES` on the first
+configuration if it's not already defined. Subsequent runs will use the value
+stored in the cache.
+
+This is a semicolon-separated list of architectures as described in
+:prop_tgt:`CUDA_ARCHITECTURES`.
diff --git a/share/cmake-3.22/Help/envvar/CUDACXX.rst b/share/cmake-3.22/Help/envvar/CUDACXX.rst
new file mode 100644
index 0000000..1722128
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CUDACXX.rst
@@ -0,0 +1,21 @@
+CUDACXX
+-------
+
+.. versionadded:: 3.8
+
+.. include:: ENV_VAR.txt
+
+Preferred executable for compiling ``CUDA`` language files. Will only be used by
+CMake on the first configuration to determine ``CUDA`` compiler, after which the
+value for ``CUDA`` is stored in the cache as
+:variable:`CMAKE_CUDA_COMPILER <CMAKE_<LANG>_COMPILER>`. For any configuration
+run (including the first), the environment variable will be ignored if the
+:variable:`CMAKE_CUDA_COMPILER <CMAKE_<LANG>_COMPILER>` variable is defined.
+
+.. note::
+  Options that are required to make the compiler work correctly can be included;
+  they can not be changed.
+
+.. code-block:: console
+
+  $ export CUDACXX="custom-compiler --arg1 --arg2"
diff --git a/share/cmake-3.22/Help/envvar/CUDAFLAGS.rst b/share/cmake-3.22/Help/envvar/CUDAFLAGS.rst
new file mode 100644
index 0000000..af577a0
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CUDAFLAGS.rst
@@ -0,0 +1,15 @@
+CUDAFLAGS
+---------
+
+.. versionadded:: 3.8
+
+.. include:: ENV_VAR.txt
+
+Default compilation flags to be used when compiling ``CUDA`` files. Will only be
+used by CMake on the first configuration to determine ``CUDA`` default
+compilation flags, after which the value for ``CUDAFLAGS`` is stored in the
+cache as :variable:`CMAKE_CUDA_FLAGS <CMAKE_<LANG>_FLAGS>`. For any configuration
+run (including the first), the environment variable will be ignored if
+the :variable:`CMAKE_CUDA_FLAGS <CMAKE_<LANG>_FLAGS>` variable is defined.
+
+See also :variable:`CMAKE_CUDA_FLAGS_INIT <CMAKE_<LANG>_FLAGS_INIT>`.
diff --git a/share/cmake-3.22/Help/envvar/CUDAHOSTCXX.rst b/share/cmake-3.22/Help/envvar/CUDAHOSTCXX.rst
new file mode 100644
index 0000000..cf65927
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CUDAHOSTCXX.rst
@@ -0,0 +1,24 @@
+CUDAHOSTCXX
+-----------
+
+.. versionadded:: 3.8
+
+.. include:: ENV_VAR.txt
+
+Preferred executable for compiling host code when compiling ``CUDA``
+language files. Will only be used by CMake on the first configuration to
+determine ``CUDA`` host compiler, after which the value for ``CUDAHOSTCXX`` is
+stored in the cache as :variable:`CMAKE_CUDA_HOST_COMPILER`. For any
+configuration run (including the first), the environment variable will be
+ignored if the :variable:`CMAKE_CUDA_HOST_COMPILER` variable is defined.
+
+This environment variable is primarily meant for use with projects that
+enable ``CUDA`` as a first-class language.
+
+.. note::
+
+  Ignored when using :ref:`Visual Studio Generators`.
+
+.. versionadded:: 3.13
+  The :module:`FindCUDA`
+  module will use this variable to initialize its ``CUDA_HOST_COMPILER`` setting.
diff --git a/share/cmake-3.22/Help/envvar/CXX.rst b/share/cmake-3.22/Help/envvar/CXX.rst
new file mode 100644
index 0000000..61ba5b8
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/CXX.rst
@@ -0,0 +1,19 @@
+CXX
+---
+
+.. include:: ENV_VAR.txt
+
+Preferred executable for compiling ``CXX`` language files. Will only be used by
+CMake on the first configuration to determine ``CXX`` compiler, after which the
+value for ``CXX`` is stored in the cache as
+:variable:`CMAKE_CXX_COMPILER <CMAKE_<LANG>_COMPILER>`. For any configuration
+run (including the first), the environment variable will be ignored if the
+:variable:`CMAKE_CXX_COMPILER <CMAKE_<LANG>_COMPILER>` variable is defined.
+
+.. note::
+  Options that are required to make the compiler work correctly can be included;
+  they can not be changed.
+
+.. code-block:: console
+
+  $ export CXX="custom-compiler --arg1 --arg2"
diff --git a/share/cmake-3.18/Help/envvar/CXXFLAGS.rst b/share/cmake-3.22/Help/envvar/CXXFLAGS.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/CXXFLAGS.rst
rename to share/cmake-3.22/Help/envvar/CXXFLAGS.rst
diff --git a/share/cmake-3.18/Help/envvar/DASHBOARD_TEST_FROM_CTEST.rst b/share/cmake-3.22/Help/envvar/DASHBOARD_TEST_FROM_CTEST.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/DASHBOARD_TEST_FROM_CTEST.rst
rename to share/cmake-3.22/Help/envvar/DASHBOARD_TEST_FROM_CTEST.rst
diff --git a/share/cmake-3.18/Help/envvar/DESTDIR.rst b/share/cmake-3.22/Help/envvar/DESTDIR.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/DESTDIR.rst
rename to share/cmake-3.22/Help/envvar/DESTDIR.rst
diff --git a/share/cmake-3.18/Help/envvar/ENV_VAR.txt b/share/cmake-3.22/Help/envvar/ENV_VAR.txt
similarity index 100%
rename from share/cmake-3.18/Help/envvar/ENV_VAR.txt
rename to share/cmake-3.22/Help/envvar/ENV_VAR.txt
diff --git a/share/cmake-3.22/Help/envvar/FC.rst b/share/cmake-3.22/Help/envvar/FC.rst
new file mode 100644
index 0000000..70e1475
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/FC.rst
@@ -0,0 +1,20 @@
+FC
+--
+
+.. include:: ENV_VAR.txt
+
+Preferred executable for compiling ``Fortran`` language files. Will only be used
+by CMake on the first configuration to determine ``Fortran`` compiler, after
+which the value for ``Fortran`` is stored in the cache as
+:variable:`CMAKE_Fortran_COMPILER <CMAKE_<LANG>_COMPILER>`. For any
+configuration run (including the first), the environment variable will be
+ignored if the :variable:`CMAKE_Fortran_COMPILER <CMAKE_<LANG>_COMPILER>`
+variable is defined.
+
+.. note::
+  Options that are required to make the compiler work correctly can be included;
+  they can not be changed.
+
+.. code-block:: console
+
+  $ export FC="custom-compiler --arg1 --arg2"
diff --git a/share/cmake-3.18/Help/envvar/FFLAGS.rst b/share/cmake-3.22/Help/envvar/FFLAGS.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/FFLAGS.rst
rename to share/cmake-3.22/Help/envvar/FFLAGS.rst
diff --git a/share/cmake-3.22/Help/envvar/HIPCXX.rst b/share/cmake-3.22/Help/envvar/HIPCXX.rst
new file mode 100644
index 0000000..23329e9
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/HIPCXX.rst
@@ -0,0 +1,13 @@
+HIPCXX
+------
+
+.. versionadded:: 3.21
+
+.. include:: ENV_VAR.txt
+
+Preferred executable for compiling ``HIP`` language files. Will only be used by
+CMake on the first configuration to determine ``HIP`` compiler, after which the
+value for ``HIP`` is stored in the cache as
+:variable:`CMAKE_HIP_COMPILER <CMAKE_<LANG>_COMPILER>`. For any configuration
+run (including the first), the environment variable will be ignored if the
+:variable:`CMAKE_HIP_COMPILER <CMAKE_<LANG>_COMPILER>` variable is defined.
diff --git a/share/cmake-3.22/Help/envvar/HIPFLAGS.rst b/share/cmake-3.22/Help/envvar/HIPFLAGS.rst
new file mode 100644
index 0000000..0df3416
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/HIPFLAGS.rst
@@ -0,0 +1,15 @@
+HIPFLAGS
+--------
+
+.. versionadded:: 3.21
+
+.. include:: ENV_VAR.txt
+
+Default compilation flags to be used when compiling ``HIP`` files. Will only be
+used by CMake on the first configuration to determine ``HIP`` default
+compilation flags, after which the value for ``HIPFLAGS`` is stored in the
+cache as :variable:`CMAKE_HIP_FLAGS <CMAKE_<LANG>_FLAGS>`. For any configuration
+run (including the first), the environment variable will be ignored if
+the :variable:`CMAKE_HIP_FLAGS <CMAKE_<LANG>_FLAGS>` variable is defined.
+
+See also :variable:`CMAKE_HIP_FLAGS_INIT <CMAKE_<LANG>_FLAGS_INIT>`.
diff --git a/share/cmake-3.22/Help/envvar/ISPC.rst b/share/cmake-3.22/Help/envvar/ISPC.rst
new file mode 100644
index 0000000..bcd6260
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/ISPC.rst
@@ -0,0 +1,13 @@
+ISPC
+-------
+
+.. versionadded:: 3.19
+
+.. include:: ENV_VAR.txt
+
+Preferred executable for compiling ``ISPC`` language files. Will only be used by
+CMake on the first configuration to determine ``ISPC`` compiler, after which the
+value for ``ISPC`` is stored in the cache as
+:variable:`CMAKE_ISPC_COMPILER <CMAKE_<LANG>_COMPILER>`. For any configuration
+run (including the first), the environment variable will be ignored if the
+:variable:`CMAKE_ISPC_COMPILER <CMAKE_<LANG>_COMPILER>` variable is defined.
diff --git a/share/cmake-3.22/Help/envvar/ISPCFLAGS.rst b/share/cmake-3.22/Help/envvar/ISPCFLAGS.rst
new file mode 100644
index 0000000..21df037
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/ISPCFLAGS.rst
@@ -0,0 +1,15 @@
+ISPCFLAGS
+---------
+
+.. versionadded:: 3.19
+
+.. include:: ENV_VAR.txt
+
+Default compilation flags to be used when compiling ``ISPC`` files. Will only be
+used by CMake on the first configuration to determine ``ISPC`` default
+compilation flags, after which the value for ``ISPCFLAGS`` is stored in the
+cache as :variable:`CMAKE_ISPC_FLAGS <CMAKE_<LANG>_FLAGS>`. For any configuration
+run (including the first), the environment variable will be ignored if
+the :variable:`CMAKE_ISPC_FLAGS <CMAKE_<LANG>_FLAGS>` variable is defined.
+
+See also :variable:`CMAKE_ISPC_FLAGS_INIT <CMAKE_<LANG>_FLAGS_INIT>`.
diff --git a/share/cmake-3.18/Help/envvar/LDFLAGS.rst b/share/cmake-3.22/Help/envvar/LDFLAGS.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/LDFLAGS.rst
rename to share/cmake-3.22/Help/envvar/LDFLAGS.rst
diff --git a/share/cmake-3.18/Help/envvar/MACOSX_DEPLOYMENT_TARGET.rst b/share/cmake-3.22/Help/envvar/MACOSX_DEPLOYMENT_TARGET.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/MACOSX_DEPLOYMENT_TARGET.rst
rename to share/cmake-3.22/Help/envvar/MACOSX_DEPLOYMENT_TARGET.rst
diff --git a/share/cmake-3.22/Help/envvar/OBJC.rst b/share/cmake-3.22/Help/envvar/OBJC.rst
new file mode 100644
index 0000000..2d95806
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/OBJC.rst
@@ -0,0 +1,16 @@
+OBJC
+----
+
+.. versionadded:: 3.16.7
+
+.. include:: ENV_VAR.txt
+
+Preferred executable for compiling ``OBJC`` language files. Will only be used
+by CMake on the first configuration to determine ``OBJC`` compiler, after
+which the value for ``OBJC`` is stored in the cache as
+:variable:`CMAKE_OBJC_COMPILER <CMAKE_<LANG>_COMPILER>`. For any configuration
+run (including the first), the environment variable will be ignored if the
+:variable:`CMAKE_OBJC_COMPILER <CMAKE_<LANG>_COMPILER>` variable is defined.
+
+If ``OBJC`` is not defined, the :envvar:`CC` environment variable will
+be checked instead.
diff --git a/share/cmake-3.22/Help/envvar/OBJCXX.rst b/share/cmake-3.22/Help/envvar/OBJCXX.rst
new file mode 100644
index 0000000..71286d9
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/OBJCXX.rst
@@ -0,0 +1,16 @@
+OBJCXX
+------
+
+.. versionadded:: 3.16.7
+
+.. include:: ENV_VAR.txt
+
+Preferred executable for compiling ``OBJCXX`` language files. Will only be used
+by CMake on the first configuration to determine ``OBJCXX`` compiler, after
+which the value for ``OBJCXX`` is stored in the cache as
+:variable:`CMAKE_OBJCXX_COMPILER <CMAKE_<LANG>_COMPILER>`. For any configuration
+run (including the first), the environment variable will be ignored if the
+:variable:`CMAKE_OBJCXX_COMPILER <CMAKE_<LANG>_COMPILER>` variable is defined.
+
+If ``OBJCXX`` is not defined, the :envvar:`CXX` environment variable will
+be checked instead.
diff --git a/share/cmake-3.22/Help/envvar/PackageName_ROOT.rst b/share/cmake-3.22/Help/envvar/PackageName_ROOT.rst
new file mode 100644
index 0000000..0cdd384
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/PackageName_ROOT.rst
@@ -0,0 +1,19 @@
+<PackageName>_ROOT
+------------------
+
+.. versionadded:: 3.12
+
+.. include:: ENV_VAR.txt
+
+Calls to :command:`find_package(<PackageName>)` will search in prefixes
+specified by the ``<PackageName>_ROOT`` environment variable, where
+``<PackageName>`` is the name given to the :command:`find_package` call
+and ``_ROOT`` is literal.  For example, ``find_package(Foo)`` will search
+prefixes specified in the ``Foo_ROOT`` environment variable (if set).
+See policy :policy:`CMP0074`.
+
+This variable may hold a single prefix or a list of prefixes separated
+by ``:`` on UNIX or ``;`` on Windows (the same as the ``PATH`` environment
+variable convention on those platforms).
+
+See also the :variable:`<PackageName>_ROOT` CMake variable.
diff --git a/share/cmake-3.22/Help/envvar/RC.rst b/share/cmake-3.22/Help/envvar/RC.rst
new file mode 100644
index 0000000..8a9324d
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/RC.rst
@@ -0,0 +1,19 @@
+RC
+--
+
+.. include:: ENV_VAR.txt
+
+Preferred executable for compiling ``resource`` files. Will only be used by CMake
+on the first configuration to determine ``resource`` compiler, after which the
+value for ``RC`` is stored in the cache as
+:variable:`CMAKE_RC_COMPILER <CMAKE_<LANG>_COMPILER>`. For any configuration run
+(including the first), the environment variable will be ignored if the
+:variable:`CMAKE_RC_COMPILER <CMAKE_<LANG>_COMPILER>` variable is defined.
+
+.. note::
+  Options that are required to make the compiler work correctly can be included;
+  they can not be changed.
+
+.. code-block:: console
+
+  $ export RC="custom-compiler --arg1 --arg2"
diff --git a/share/cmake-3.18/Help/envvar/RCFLAGS.rst b/share/cmake-3.22/Help/envvar/RCFLAGS.rst
similarity index 100%
rename from share/cmake-3.18/Help/envvar/RCFLAGS.rst
rename to share/cmake-3.22/Help/envvar/RCFLAGS.rst
diff --git a/share/cmake-3.22/Help/envvar/SWIFTC.rst b/share/cmake-3.22/Help/envvar/SWIFTC.rst
new file mode 100644
index 0000000..896e156
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/SWIFTC.rst
@@ -0,0 +1,21 @@
+SWIFTC
+------
+
+.. versionadded:: 3.15
+
+.. include:: ENV_VAR.txt
+
+Preferred executable for compiling ``Swift`` language files. Will only be used by
+CMake on the first configuration to determine ``Swift`` compiler, after which the
+value for ``SWIFTC`` is stored in the cache as
+:variable:`CMAKE_Swift_COMPILER <CMAKE_<LANG>_COMPILER>`. For any configuration run
+(including the first), the environment variable will be ignored if the
+:variable:`CMAKE_Swift_COMPILER <CMAKE_<LANG>_COMPILER>` variable is defined.
+
+.. note::
+  Options that are required to make the compiler work correctly can be included;
+  they can not be changed.
+
+.. code-block:: console
+
+  $ export SWIFTC="custom-compiler --arg1 --arg2"
diff --git a/share/cmake-3.22/Help/envvar/VERBOSE.rst b/share/cmake-3.22/Help/envvar/VERBOSE.rst
new file mode 100644
index 0000000..5911951
--- /dev/null
+++ b/share/cmake-3.22/Help/envvar/VERBOSE.rst
@@ -0,0 +1,12 @@
+VERBOSE
+-------
+
+.. versionadded:: 3.14
+
+Activates verbose output from CMake and your build tools of choice when
+you start to actually build your project.
+
+Note that any given value is ignored. It's just checked for existence.
+
+See also :ref:`Build Tool Mode <Build Tool Mode>` and
+:envvar:`CMAKE_NO_VERBOSE` environment variable
diff --git a/share/cmake-3.18/Help/generator/Borland Makefiles.rst b/share/cmake-3.22/Help/generator/Borland Makefiles.rst
similarity index 100%
rename from share/cmake-3.18/Help/generator/Borland Makefiles.rst
rename to share/cmake-3.22/Help/generator/Borland Makefiles.rst
diff --git a/share/cmake-3.22/Help/generator/CodeBlocks.rst b/share/cmake-3.22/Help/generator/CodeBlocks.rst
new file mode 100644
index 0000000..85da715
--- /dev/null
+++ b/share/cmake-3.22/Help/generator/CodeBlocks.rst
@@ -0,0 +1,35 @@
+CodeBlocks
+----------
+
+Generates CodeBlocks project files.
+
+Project files for CodeBlocks will be created in the top directory and
+in every subdirectory which features a ``CMakeLists.txt`` file containing
+a :command:`project` call.  Additionally a hierarchy of makefiles is generated
+into the build tree.
+The appropriate make program can build the
+project through the default ``all`` target.  An ``install`` target is
+also provided.
+
+.. versionadded:: 3.10
+ The :variable:`CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES` variable may
+ be set to ``ON`` to exclude any files which are located outside of
+ the project root directory.
+
+This "extra" generator may be specified as:
+
+``CodeBlocks - MinGW Makefiles``
+ Generate with :generator:`MinGW Makefiles`.
+
+``CodeBlocks - NMake Makefiles``
+ Generate with :generator:`NMake Makefiles`.
+
+``CodeBlocks - NMake Makefiles JOM``
+ .. versionadded:: 3.8
+  Generate with :generator:`NMake Makefiles JOM`.
+
+``CodeBlocks - Ninja``
+ Generate with :generator:`Ninja`.
+
+``CodeBlocks - Unix Makefiles``
+ Generate with :generator:`Unix Makefiles`.
diff --git a/share/cmake-3.22/Help/generator/CodeLite.rst b/share/cmake-3.22/Help/generator/CodeLite.rst
new file mode 100644
index 0000000..4f276df
--- /dev/null
+++ b/share/cmake-3.22/Help/generator/CodeLite.rst
@@ -0,0 +1,30 @@
+CodeLite
+----------
+
+Generates CodeLite project files.
+
+Project files for CodeLite will be created in the top directory and
+in every subdirectory which features a CMakeLists.txt file containing
+a :command:`project` call.
+The appropriate make program can build the
+project through the default ``all`` target.  An ``install`` target
+is also provided.
+
+.. versionadded:: 3.7
+ The :variable:`CMAKE_CODELITE_USE_TARGETS` variable may be set to ``ON``
+ to change the default behavior from projects to targets as the basis
+ for project files.
+
+This "extra" generator may be specified as:
+
+``CodeLite - MinGW Makefiles``
+ Generate with :generator:`MinGW Makefiles`.
+
+``CodeLite - NMake Makefiles``
+ Generate with :generator:`NMake Makefiles`.
+
+``CodeLite - Ninja``
+ Generate with :generator:`Ninja`.
+
+``CodeLite - Unix Makefiles``
+ Generate with :generator:`Unix Makefiles`.
diff --git a/share/cmake-3.18/Help/generator/Eclipse CDT4.rst b/share/cmake-3.22/Help/generator/Eclipse CDT4.rst
similarity index 100%
rename from share/cmake-3.18/Help/generator/Eclipse CDT4.rst
rename to share/cmake-3.22/Help/generator/Eclipse CDT4.rst
diff --git a/share/cmake-3.22/Help/generator/Green Hills MULTI.rst b/share/cmake-3.22/Help/generator/Green Hills MULTI.rst
new file mode 100644
index 0000000..5d2b1cd
--- /dev/null
+++ b/share/cmake-3.22/Help/generator/Green Hills MULTI.rst
@@ -0,0 +1,88 @@
+Green Hills MULTI
+-----------------
+
+.. versionadded:: 3.3
+
+.. versionadded:: 3.15
+  Linux support.
+
+Generates Green Hills MULTI project files (experimental, work-in-progress).
+
+Customizations are available through the following cache variables:
+
+* ``GHS_CUSTOMIZATION``
+* ``GHS_GPJ_MACROS``
+
+.. versionadded:: 3.14
+  The buildsystem has predetermined build-configuration settings that can be controlled
+  via the :variable:`CMAKE_BUILD_TYPE` variable.
+
+Toolset and Platform Selection
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.13
+
+Customizations that are used to pick toolset and target system:
+
+* The ``-A <arch>`` can be supplied for setting the target architecture.
+  ``<arch>`` usually is one of ``arm``, ``ppc``, ``86``, etcetera.
+  If the target architecture is not specified then
+  the default architecture of ``arm`` will be used.
+
+* The ``-T <toolset>`` option can be used to set the directory location of the toolset.
+  Both absolute and relative paths are valid. Relative paths use ``GHS_TOOLSET_ROOT``
+  as the root. If the toolset is not specified then the latest toolset found in
+  ``GHS_TOOLSET_ROOT`` will be used.
+
+Cache variables that are used for toolset and target system customization:
+
+* ``GHS_TARGET_PLATFORM``
+
+  | Defaults to ``integrity``.
+  | Usual values are ``integrity``, ``threadx``, ``uvelosity``, ``velosity``,
+    ``vxworks``, ``standalone``.
+
+* ``GHS_PRIMARY_TARGET``
+
+  | Sets ``primaryTarget`` entry in project file.
+  | Defaults to ``<arch>_<GHS_TARGET_PLATFORM>.tgt``.
+
+* ``GHS_TOOLSET_ROOT``
+
+  | Root path for ``toolset`` searches.
+  | Defaults to ``C:/ghs`` in Windows or ``/usr/ghs`` in Linux.
+
+* ``GHS_OS_ROOT``
+
+  | Root path for RTOS searches.
+  | Defaults to ``C:/ghs`` in Windows or ``/usr/ghs`` in Linux.
+
+* ``GHS_OS_DIR`` and ``GHS_OS_DIR_OPTION``
+
+  | Sets ``-os_dir`` entry in project file.
+  | Defaults to latest platform OS installation at ``GHS_OS_ROOT``.  Set this value if
+    a specific RTOS is to be used.
+  | ``GHS_OS_DIR_OPTION`` default value is ``-os_dir``.
+
+  .. versionadded:: 3.15
+    The ``GHS_OS_DIR_OPTION`` variable.
+
+* ``GHS_BSP_NAME``
+
+  | Sets ``-bsp`` entry in project file.
+  | Defaults to ``sim<arch>`` for ``integrity`` platforms.
+
+Target Properties
+^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.14
+
+The following properties are available:
+
+* :prop_tgt:`GHS_INTEGRITY_APP`
+* :prop_tgt:`GHS_NO_SOURCE_GROUP_FILE`
+
+.. note::
+  This generator is deemed experimental as of CMake |release|
+  and is still a work in progress.  Future versions of CMake
+  may make breaking changes as the generator matures.
diff --git a/share/cmake-3.18/Help/generator/Kate.rst b/share/cmake-3.22/Help/generator/Kate.rst
similarity index 100%
rename from share/cmake-3.18/Help/generator/Kate.rst
rename to share/cmake-3.22/Help/generator/Kate.rst
diff --git a/share/cmake-3.18/Help/generator/MSYS Makefiles.rst b/share/cmake-3.22/Help/generator/MSYS Makefiles.rst
similarity index 100%
rename from share/cmake-3.18/Help/generator/MSYS Makefiles.rst
rename to share/cmake-3.22/Help/generator/MSYS Makefiles.rst
diff --git a/share/cmake-3.18/Help/generator/MinGW Makefiles.rst b/share/cmake-3.22/Help/generator/MinGW Makefiles.rst
similarity index 100%
rename from share/cmake-3.18/Help/generator/MinGW Makefiles.rst
rename to share/cmake-3.22/Help/generator/MinGW Makefiles.rst
diff --git a/share/cmake-3.22/Help/generator/NMake Makefiles JOM.rst b/share/cmake-3.22/Help/generator/NMake Makefiles JOM.rst
new file mode 100644
index 0000000..e0f4c90
--- /dev/null
+++ b/share/cmake-3.22/Help/generator/NMake Makefiles JOM.rst
@@ -0,0 +1,7 @@
+NMake Makefiles JOM
+-------------------
+
+Generates JOM makefiles.
+
+.. versionadded:: 3.8
+  :generator:`CodeBlocks` generator can be used as an extra generator.
diff --git a/share/cmake-3.18/Help/generator/NMake Makefiles.rst b/share/cmake-3.22/Help/generator/NMake Makefiles.rst
similarity index 100%
rename from share/cmake-3.18/Help/generator/NMake Makefiles.rst
rename to share/cmake-3.22/Help/generator/NMake Makefiles.rst
diff --git a/share/cmake-3.22/Help/generator/Ninja Multi-Config.rst b/share/cmake-3.22/Help/generator/Ninja Multi-Config.rst
new file mode 100644
index 0000000..e5ce4f5
--- /dev/null
+++ b/share/cmake-3.22/Help/generator/Ninja Multi-Config.rst
@@ -0,0 +1,165 @@
+Ninja Multi-Config
+------------------
+
+.. versionadded:: 3.17
+
+Generates multiple ``build-<Config>.ninja`` files.
+
+This generator is very much like the :generator:`Ninja` generator, but with
+some key differences. Only these differences will be discussed in this
+document.
+
+Unlike the :generator:`Ninja` generator, ``Ninja Multi-Config`` generates
+multiple configurations at once with :variable:`CMAKE_CONFIGURATION_TYPES`
+instead of only one configuration with :variable:`CMAKE_BUILD_TYPE`. One
+``build-<Config>.ninja`` file will be generated for each of these
+configurations (with ``<Config>`` being the configuration name.) These files
+are intended to be run with ``ninja -f build-<Config>.ninja``. A
+``build.ninja`` file is also generated, using the configuration from either
+:variable:`CMAKE_DEFAULT_BUILD_TYPE` or the first item from
+:variable:`CMAKE_CONFIGURATION_TYPES`.
+
+``cmake --build . --config <Config>`` will always use ``build-<Config>.ninja``
+to build. If no ``--config`` argument is specified, ``cmake --build .`` will
+use ``build.ninja``.
+
+Each ``build-<Config>.ninja`` file contains ``<target>`` targets as well as
+``<target>:<Config>`` targets, where ``<Config>`` is the same as the
+configuration specified in ``build-<Config>.ninja`` Additionally, if
+cross-config mode is enabled, ``build-<Config>.ninja`` may contain
+``<target>:<OtherConfig>`` targets, where ``<OtherConfig>`` is a cross-config,
+as well as ``<target>:all``, which builds the target in all cross-configs. See
+below for how to enable cross-config mode.
+
+The ``Ninja Multi-Config`` generator recognizes the following variables:
+
+:variable:`CMAKE_CONFIGURATION_TYPES`
+  Specifies the total set of configurations to build. Unlike with other
+  multi-config generators, this variable has a value of
+  ``Debug;Release;RelWithDebInfo`` by default.
+
+:variable:`CMAKE_CROSS_CONFIGS`
+  Specifies a :ref:`semicolon-separated list <CMake Language Lists>` of
+  configurations available from all ``build-<Config>.ninja`` files.
+
+:variable:`CMAKE_DEFAULT_BUILD_TYPE`
+  Specifies the configuration to use by default in a ``build.ninja`` file.
+
+:variable:`CMAKE_DEFAULT_CONFIGS`
+  Specifies a :ref:`semicolon-separated list <CMake Language Lists>` of
+  configurations to build for a target in ``build.ninja``
+  if no ``:<Config>`` suffix is specified.
+
+Consider the following example:
+
+.. code-block:: cmake
+
+  cmake_minimum_required(VERSION 3.16)
+  project(MultiConfigNinja C)
+
+  add_executable(generator generator.c)
+  add_custom_command(OUTPUT generated.c COMMAND generator generated.c)
+  add_library(generated ${CMAKE_BINARY_DIR}/generated.c)
+
+Now assume you configure the project with ``Ninja Multi-Config`` and run one of
+the following commands:
+
+.. code-block:: shell
+
+  ninja -f build-Debug.ninja generated
+  # OR
+  cmake --build . --config Debug --target generated
+
+This would build the ``Debug`` configuration of ``generator``, which would be
+used to generate ``generated.c``, which would be used to build the ``Debug``
+configuration of ``generated``.
+
+But if :variable:`CMAKE_CROSS_CONFIGS` is set to ``all``, and you run the
+following instead:
+
+.. code-block:: shell
+
+  ninja -f build-Release.ninja generated:Debug
+  # OR
+  cmake --build . --config Release --target generated:Debug
+
+This would build the ``Release`` configuration of ``generator``, which would be
+used to generate ``generated.c``, which would be used to build the ``Debug``
+configuration of ``generated``. This is useful for running a release-optimized
+version of a generator utility while still building the debug version of the
+targets built with the generated code.
+
+Custom Commands
+^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.20
+
+The ``Ninja Multi-Config`` generator adds extra capabilities to
+:command:`add_custom_command` and :command:`add_custom_target` through its
+cross-config mode. The ``COMMAND``, ``DEPENDS``, and ``WORKING_DIRECTORY``
+arguments can be evaluated in the context of either the "command config" (the
+"native" configuration of the ``build-<Config>.ninja`` file in use) or the
+"output config" (the configuration used to evaluate the ``OUTPUT`` and
+``BYPRODUCTS``).
+
+If either ``OUTPUT`` or ``BYPRODUCTS`` names a path that is common to
+more than one configuration (e.g. it does not use any generator expressions),
+all arguments are evaluated in the command config by default.
+If all ``OUTPUT`` and ``BYPRODUCTS`` paths are unique to each configuration
+(e.g. by using the ``$<CONFIG>`` generator expression), the first argument of
+``COMMAND`` is still evaluated in the command config by default, while all
+subsequent arguments, as well as the arguments to ``DEPENDS`` and
+``WORKING_DIRECTORY``, are evaluated in the output config. These defaults can
+be overridden with the ``$<OUTPUT_CONFIG:...>`` and ``$<COMMAND_CONFIG:...>``
+generator-expressions. Note that if a target is specified by its name in
+``DEPENDS``, or as the first argument of ``COMMAND``, it is always evaluated
+in the command config, even if it is wrapped in ``$<OUTPUT_CONFIG:...>``
+(because its plain name is not a generator expression).
+
+As an example, consider the following:
+
+.. code-block:: cmake
+
+  add_custom_command(
+    OUTPUT "$<CONFIG>.txt"
+    COMMAND generator "$<CONFIG>.txt" "$<OUTPUT_CONFIG:$<CONFIG>>" "$<COMMAND_CONFIG:$<CONFIG>>"
+    DEPENDS tgt1 "$<TARGET_FILE:tgt2>" "$<OUTPUT_CONFIG:$<TARGET_FILE:tgt3>>" "$<COMMAND_CONFIG:$<TARGET_FILE:tgt4>>"
+    )
+
+Assume that ``generator``, ``tgt1``, ``tgt2``, ``tgt3``, and ``tgt4`` are all
+executable targets, and assume that ``$<CONFIG>.txt`` is built in the ``Debug``
+output config using the ``Release`` command config. The ``Release`` build of
+the ``generator`` target is called with ``Debug.txt Debug Release`` as
+arguments. The command depends on the ``Release`` builds of ``tgt1`` and
+``tgt4``, and the ``Debug`` builds of ``tgt2`` and ``tgt3``.
+
+``PRE_BUILD``, ``PRE_LINK``, and ``POST_BUILD`` custom commands for targets
+only get run in their "native" configuration (the ``Release`` configuration in
+the ``build-Release.ninja`` file) unless they have no ``BYPRODUCTS`` or their
+``BYPRODUCTS`` are unique per config. Consider the following example:
+
+.. code-block:: cmake
+
+  add_executable(exe main.c)
+  add_custom_command(
+    TARGET exe
+    POST_BUILD
+    COMMAND ${CMAKE_COMMAND} -E echo "Running no-byproduct command"
+    )
+  add_custom_command(
+    TARGET exe
+    POST_BUILD
+    COMMAND ${CMAKE_COMMAND} -E echo "Running separate-byproduct command for $<CONFIG>"
+    BYPRODUCTS $<CONFIG>.txt
+    )
+  add_custom_command(
+    TARGET exe
+    POST_BUILD
+    COMMAND ${CMAKE_COMMAND} -E echo "Running common-byproduct command for $<CONFIG>"
+    BYPRODUCTS exe.txt
+    )
+
+In this example, if you build ``exe:Debug`` in ``build-Release.ninja``, the
+first and second custom commands get run, since their byproducts are unique
+per-config, but the last custom command does not. However, if you build
+``exe:Release`` in ``build-Release.ninja``, all three custom commands get run.
diff --git a/share/cmake-3.22/Help/generator/Ninja.rst b/share/cmake-3.22/Help/generator/Ninja.rst
new file mode 100644
index 0000000..f3ba222
--- /dev/null
+++ b/share/cmake-3.22/Help/generator/Ninja.rst
@@ -0,0 +1,67 @@
+Ninja
+-----
+
+Generates ``build.ninja`` files.
+
+A ``build.ninja`` file is generated into the build tree.  Use the ninja
+program to build the project through the ``all`` target and install the
+project through the ``install`` (or ``install/strip``) target.
+
+For each subdirectory ``sub/dir`` of the project, additional targets
+are generated:
+
+``sub/dir/all``
+
+  .. versionadded:: 3.6
+
+    Depends on all targets required by the subdirectory.
+
+``sub/dir/install``
+
+  .. versionadded:: 3.7
+
+    Runs the install step in the subdirectory, if any.
+
+``sub/dir/install/strip``
+
+  .. versionadded:: 3.7
+    Runs the install step in the subdirectory followed by a ``CMAKE_STRIP`` command,
+    if any.
+
+    The ``CMAKE_STRIP`` variable will contain the platform's ``strip`` utility, which
+    removes symbols information from generated binaries.
+
+``sub/dir/test``
+
+  .. versionadded:: 3.7
+
+    Runs the test step in the subdirectory, if any.
+
+``sub/dir/package``
+
+  .. versionadded:: 3.7
+
+    Runs the package step in the subdirectory, if any.
+
+Fortran Support
+^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.7
+
+The ``Ninja`` generator conditionally supports Fortran when the ``ninja``
+tool is at least version 1.10 (which has the required features).
+
+Swift Support
+^^^^^^^^^^^^^
+
+.. versionadded:: 3.15
+
+The Swift support is experimental, not considered stable, and may change
+in future releases of CMake.
+
+See Also
+^^^^^^^^
+
+.. versionadded:: 3.17
+  The :generator:`Ninja Multi-Config` generator is similar to the ``Ninja``
+  generator, but generates multiple configurations at once.
diff --git a/share/cmake-3.18/Help/generator/Sublime Text 2.rst b/share/cmake-3.22/Help/generator/Sublime Text 2.rst
similarity index 100%
rename from share/cmake-3.18/Help/generator/Sublime Text 2.rst
rename to share/cmake-3.22/Help/generator/Sublime Text 2.rst
diff --git a/share/cmake-3.18/Help/generator/Unix Makefiles.rst b/share/cmake-3.22/Help/generator/Unix Makefiles.rst
similarity index 100%
rename from share/cmake-3.18/Help/generator/Unix Makefiles.rst
rename to share/cmake-3.22/Help/generator/Unix Makefiles.rst
diff --git a/share/cmake-3.18/Help/generator/VS_TOOLSET_HOST_ARCH.txt b/share/cmake-3.22/Help/generator/VS_TOOLSET_HOST_ARCH.txt
similarity index 100%
rename from share/cmake-3.18/Help/generator/VS_TOOLSET_HOST_ARCH.txt
rename to share/cmake-3.22/Help/generator/VS_TOOLSET_HOST_ARCH.txt
diff --git a/share/cmake-3.22/Help/generator/VS_TOOLSET_HOST_ARCH_LEGACY.txt b/share/cmake-3.22/Help/generator/VS_TOOLSET_HOST_ARCH_LEGACY.txt
new file mode 100644
index 0000000..069638b
--- /dev/null
+++ b/share/cmake-3.22/Help/generator/VS_TOOLSET_HOST_ARCH_LEGACY.txt
@@ -0,0 +1,11 @@
+.. versionadded:: 3.8
+  For each toolset that comes with this version of Visual Studio, there are
+  variants that are themselves compiled for 32-bit (``x86``) and
+  64-bit (``x64``) hosts (independent of the architecture they target).
+  |VS_TOOLSET_HOST_ARCH_DEFAULT|
+  One may explicitly request use of either the 32-bit or 64-bit host tools
+  by adding either ``host=x86`` or ``host=x64`` to the toolset specification.
+  See the :variable:`CMAKE_GENERATOR_TOOLSET` variable for details.
+
+.. versionadded:: 3.14
+  Added support for ``host=x86`` option.
diff --git a/share/cmake-3.22/Help/generator/Visual Studio 10 2010.rst b/share/cmake-3.22/Help/generator/Visual Studio 10 2010.rst
new file mode 100644
index 0000000..9ec33c3
--- /dev/null
+++ b/share/cmake-3.22/Help/generator/Visual Studio 10 2010.rst
@@ -0,0 +1,52 @@
+Visual Studio 10 2010
+---------------------
+
+Deprecated.  Generates Visual Studio 10 (VS 2010) project files.
+
+.. note::
+  This generator is deprecated and will be removed in a future version
+  of CMake.  It will still be possible to build with VS 10 2010 tools
+  using the :generator:`Visual Studio 11 2012` (or above) generator
+  with :variable:`CMAKE_GENERATOR_TOOLSET` set to ``v100``, or by
+  using the :generator:`NMake Makefiles` generator.
+
+For compatibility with CMake versions prior to 3.0, one may specify this
+generator using the name ``Visual Studio 10`` without the year component.
+
+Project Types
+^^^^^^^^^^^^^
+
+Only Visual C++ and C# projects may be generated (and Fortran with
+Intel compiler integration).  Other types of projects (Database,
+Website, etc.) are not supported.
+
+Platform Selection
+^^^^^^^^^^^^^^^^^^
+
+The default target platform name (architecture) is ``Win32``.
+
+.. versionadded:: 3.1
+  The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
+  via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
+  name (architecture).  For example:
+
+  * ``cmake -G "Visual Studio 10 2010" -A Win32``
+  * ``cmake -G "Visual Studio 10 2010" -A x64``
+  * ``cmake -G "Visual Studio 10 2010" -A Itanium``
+
+For compatibility with CMake versions prior to 3.1, one may specify
+a target platform name optionally at the end of the generator name.
+This is supported only for:
+
+``Visual Studio 10 2010 Win64``
+  Specify target platform ``x64``.
+
+``Visual Studio 10 2010 IA64``
+  Specify target platform ``Itanium``.
+
+Toolset Selection
+^^^^^^^^^^^^^^^^^
+
+The ``v100`` toolset that comes with Visual Studio 10 2010 is selected by
+default.  The :variable:`CMAKE_GENERATOR_TOOLSET` option may be set, perhaps
+via the :manual:`cmake(1)` ``-T`` option, to specify another toolset.
diff --git a/share/cmake-3.22/Help/generator/Visual Studio 11 2012.rst b/share/cmake-3.22/Help/generator/Visual Studio 11 2012.rst
new file mode 100644
index 0000000..3952228
--- /dev/null
+++ b/share/cmake-3.22/Help/generator/Visual Studio 11 2012.rst
@@ -0,0 +1,50 @@
+Visual Studio 11 2012
+---------------------
+
+Generates Visual Studio 11 (VS 2012) project files.
+
+For compatibility with CMake versions prior to 3.0, one may specify this
+generator using the name "Visual Studio 11" without the year component.
+
+Project Types
+^^^^^^^^^^^^^
+
+Only Visual C++ and C# projects may be generated (and Fortran with
+Intel compiler integration).  Other types of projects (JavaScript,
+Database, Website, etc.) are not supported.
+
+Platform Selection
+^^^^^^^^^^^^^^^^^^
+
+The default target platform name (architecture) is ``Win32``.
+
+.. versionadded:: 3.1
+  The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
+  via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
+  name (architecture).  For example:
+
+  * ``cmake -G "Visual Studio 11 2012" -A Win32``
+  * ``cmake -G "Visual Studio 11 2012" -A x64``
+  * ``cmake -G "Visual Studio 11 2012" -A ARM``
+  * ``cmake -G "Visual Studio 11 2012" -A <WinCE-SDK>``
+    (Specify a target platform matching a Windows CE SDK name.)
+
+For compatibility with CMake versions prior to 3.1, one may specify
+a target platform name optionally at the end of the generator name.
+This is supported only for:
+
+``Visual Studio 11 2012 Win64``
+  Specify target platform ``x64``.
+
+``Visual Studio 11 2012 ARM``
+  Specify target platform ``ARM``.
+
+``Visual Studio 11 2012 <WinCE-SDK>``
+  Specify target platform matching a Windows CE SDK name.
+
+Toolset Selection
+^^^^^^^^^^^^^^^^^
+
+The ``v110`` toolset that comes with Visual Studio 11 2012 is selected by
+default.  The :variable:`CMAKE_GENERATOR_TOOLSET` option may be set, perhaps
+via the :manual:`cmake(1)` ``-T`` option, to specify another toolset.
diff --git a/share/cmake-3.22/Help/generator/Visual Studio 12 2013.rst b/share/cmake-3.22/Help/generator/Visual Studio 12 2013.rst
new file mode 100644
index 0000000..54a4d7e
--- /dev/null
+++ b/share/cmake-3.22/Help/generator/Visual Studio 12 2013.rst
@@ -0,0 +1,50 @@
+Visual Studio 12 2013
+---------------------
+
+Generates Visual Studio 12 (VS 2013) project files.
+
+For compatibility with CMake versions prior to 3.0, one may specify this
+generator using the name "Visual Studio 12" without the year component.
+
+Project Types
+^^^^^^^^^^^^^
+
+Only Visual C++ and C# projects may be generated (and Fortran with
+Intel compiler integration).  Other types of projects (JavaScript,
+Powershell, Python, etc.) are not supported.
+
+Platform Selection
+^^^^^^^^^^^^^^^^^^
+
+The default target platform name (architecture) is ``Win32``.
+
+.. versionadded:: 3.1
+  The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
+  via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
+  name (architecture).  For example:
+
+  * ``cmake -G "Visual Studio 12 2013" -A Win32``
+  * ``cmake -G "Visual Studio 12 2013" -A x64``
+  * ``cmake -G "Visual Studio 12 2013" -A ARM``
+
+For compatibility with CMake versions prior to 3.1, one may specify
+a target platform name optionally at the end of the generator name.
+This is supported only for:
+
+``Visual Studio 12 2013 Win64``
+  Specify target platform ``x64``.
+
+``Visual Studio 12 2013 ARM``
+  Specify target platform ``ARM``.
+
+Toolset Selection
+^^^^^^^^^^^^^^^^^
+
+The ``v120`` toolset that comes with Visual Studio 12 2013 is selected by
+default.  The :variable:`CMAKE_GENERATOR_TOOLSET` option may be set, perhaps
+via the :manual:`cmake(1)` ``-T`` option, to specify another toolset.
+
+.. |VS_TOOLSET_HOST_ARCH_DEFAULT| replace::
+   By default this generator uses the 32-bit variant even on a 64-bit host.
+
+.. include:: VS_TOOLSET_HOST_ARCH_LEGACY.txt
diff --git a/share/cmake-3.22/Help/generator/Visual Studio 14 2015.rst b/share/cmake-3.22/Help/generator/Visual Studio 14 2015.rst
new file mode 100644
index 0000000..d704ab2
--- /dev/null
+++ b/share/cmake-3.22/Help/generator/Visual Studio 14 2015.rst
@@ -0,0 +1,66 @@
+Visual Studio 14 2015
+---------------------
+
+.. versionadded:: 3.1
+
+Generates Visual Studio 14 (VS 2015) project files.
+
+Project Types
+^^^^^^^^^^^^^
+
+Only Visual C++ and C# projects may be generated (and Fortran with
+Intel compiler integration).  Other types of projects (JavaScript,
+Powershell, Python, etc.) are not supported.
+
+Platform Selection
+^^^^^^^^^^^^^^^^^^
+
+The default target platform name (architecture) is ``Win32``.
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
+via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
+name (architecture).  For example:
+
+* ``cmake -G "Visual Studio 14 2015" -A Win32``
+* ``cmake -G "Visual Studio 14 2015" -A x64``
+* ``cmake -G "Visual Studio 14 2015" -A ARM``
+
+For compatibility with CMake versions prior to 3.1, one may specify
+a target platform name optionally at the end of the generator name.
+This is supported only for:
+
+``Visual Studio 14 2015 Win64``
+  Specify target platform ``x64``.
+
+``Visual Studio 14 2015 ARM``
+  Specify target platform ``ARM``.
+
+Toolset Selection
+^^^^^^^^^^^^^^^^^
+
+The ``v140`` toolset that comes with Visual Studio 14 2015 is selected by
+default.  The :variable:`CMAKE_GENERATOR_TOOLSET` option may be set, perhaps
+via the :manual:`cmake(1)` ``-T`` option, to specify another toolset.
+
+.. |VS_TOOLSET_HOST_ARCH_DEFAULT| replace::
+   By default this generator uses the 32-bit variant even on a 64-bit host.
+
+.. include:: VS_TOOLSET_HOST_ARCH_LEGACY.txt
+
+.. _`Windows 10 SDK Maximum Version for VS 2015`:
+
+Windows 10 SDK Maximum Version for VS 2015
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.19
+
+Microsoft stated in a "Windows 10 October 2018 Update" blog post that Windows
+10 SDK versions (15063, 16299, 17134, 17763) are not supported by VS 2015 and
+are only supported by VS 2017 and later.  Therefore by default CMake
+automatically ignores Windows 10 SDKs beyond ``10.0.14393.0``.
+
+However, there are other recommendations for certain driver/Win32 builds that
+indicate otherwise.  A user can override this behavior by either setting the
+:variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM` to a false value
+or setting the :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM` to
+the string value of the required maximum (e.g. ``10.0.15063.0``).
diff --git a/share/cmake-3.22/Help/generator/Visual Studio 15 2017.rst b/share/cmake-3.22/Help/generator/Visual Studio 15 2017.rst
new file mode 100644
index 0000000..b4d6f6d
--- /dev/null
+++ b/share/cmake-3.22/Help/generator/Visual Studio 15 2017.rst
@@ -0,0 +1,67 @@
+Visual Studio 15 2017
+---------------------
+
+.. versionadded:: 3.7.1
+
+Generates Visual Studio 15 (VS 2017) project files.
+
+Project Types
+^^^^^^^^^^^^^
+
+Only Visual C++ and C# projects may be generated (and Fortran with
+Intel compiler integration).  Other types of projects (JavaScript,
+Powershell, Python, etc.) are not supported.
+
+Instance Selection
+^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.11
+
+VS 2017 supports multiple installations on the same machine.
+The :variable:`CMAKE_GENERATOR_INSTANCE` variable may be set as a
+cache entry containing the absolute path to a Visual Studio instance.
+If the value is not specified explicitly by the user or a toolchain file,
+CMake queries the Visual Studio Installer to locate VS instances, chooses
+one, and sets the variable as a cache entry to hold the value persistently.
+
+When CMake first chooses an instance, if the ``VS150COMNTOOLS`` environment
+variable is set and points to the ``Common7/Tools`` directory within
+one of the instances, that instance will be used.  Otherwise, if more
+than one instance is installed we do not define which one is chosen
+by default.
+
+Platform Selection
+^^^^^^^^^^^^^^^^^^
+
+The default target platform name (architecture) is ``Win32``.
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
+via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
+name (architecture).  For example:
+
+* ``cmake -G "Visual Studio 15 2017" -A Win32``
+* ``cmake -G "Visual Studio 15 2017" -A x64``
+* ``cmake -G "Visual Studio 15 2017" -A ARM``
+* ``cmake -G "Visual Studio 15 2017" -A ARM64``
+
+For compatibility with CMake versions prior to 3.1, one may specify
+a target platform name optionally at the end of the generator name.
+This is supported only for:
+
+``Visual Studio 15 2017 Win64``
+  Specify target platform ``x64``.
+
+``Visual Studio 15 2017 ARM``
+  Specify target platform ``ARM``.
+
+Toolset Selection
+^^^^^^^^^^^^^^^^^
+
+The ``v141`` toolset that comes with Visual Studio 15 2017 is selected by
+default.  The :variable:`CMAKE_GENERATOR_TOOLSET` option may be set, perhaps
+via the :manual:`cmake(1)` ``-T`` option, to specify another toolset.
+
+.. |VS_TOOLSET_HOST_ARCH_DEFAULT| replace::
+   By default this generator uses the 32-bit variant even on a 64-bit host.
+
+.. include:: VS_TOOLSET_HOST_ARCH_LEGACY.txt
diff --git a/share/cmake-3.22/Help/generator/Visual Studio 16 2019.rst b/share/cmake-3.22/Help/generator/Visual Studio 16 2019.rst
new file mode 100644
index 0000000..72399e0
--- /dev/null
+++ b/share/cmake-3.22/Help/generator/Visual Studio 16 2019.rst
@@ -0,0 +1,57 @@
+Visual Studio 16 2019
+---------------------
+
+.. versionadded:: 3.14
+
+Generates Visual Studio 16 (VS 2019) project files.
+
+Project Types
+^^^^^^^^^^^^^
+
+Only Visual C++ and C# projects may be generated (and Fortran with
+Intel compiler integration).  Other types of projects (JavaScript,
+Powershell, Python, etc.) are not supported.
+
+Instance Selection
+^^^^^^^^^^^^^^^^^^
+
+VS 2019 supports multiple installations on the same machine.
+The :variable:`CMAKE_GENERATOR_INSTANCE` variable may be set as a
+cache entry containing the absolute path to a Visual Studio instance.
+If the value is not specified explicitly by the user or a toolchain file,
+CMake queries the Visual Studio Installer to locate VS instances, chooses
+one, and sets the variable as a cache entry to hold the value persistently.
+
+When CMake first chooses an instance, if the ``VS160COMNTOOLS`` environment
+variable is set and points to the ``Common7/Tools`` directory within
+one of the instances, that instance will be used.  Otherwise, if more
+than one instance is installed we do not define which one is chosen
+by default.
+
+Platform Selection
+^^^^^^^^^^^^^^^^^^
+
+The default target platform name (architecture) is that of the host
+and is provided in the :variable:`CMAKE_VS_PLATFORM_NAME_DEFAULT` variable.
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
+via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
+name (architecture).  For example:
+
+* ``cmake -G "Visual Studio 16 2019" -A Win32``
+* ``cmake -G "Visual Studio 16 2019" -A x64``
+* ``cmake -G "Visual Studio 16 2019" -A ARM``
+* ``cmake -G "Visual Studio 16 2019" -A ARM64``
+
+Toolset Selection
+^^^^^^^^^^^^^^^^^
+
+The ``v142`` toolset that comes with Visual Studio 16 2019 is selected by
+default.  The :variable:`CMAKE_GENERATOR_TOOLSET` option may be set, perhaps
+via the :manual:`cmake(1)` ``-T`` option, to specify another toolset.
+
+.. |VS_TOOLSET_HOST_ARCH_DEFAULT| replace::
+   By default this generator uses the 64-bit variant on x64 hosts and
+   the 32-bit variant otherwise.
+
+.. include:: VS_TOOLSET_HOST_ARCH.txt
diff --git a/share/cmake-3.22/Help/generator/Visual Studio 17 2022.rst b/share/cmake-3.22/Help/generator/Visual Studio 17 2022.rst
new file mode 100644
index 0000000..b3f49f3
--- /dev/null
+++ b/share/cmake-3.22/Help/generator/Visual Studio 17 2022.rst
@@ -0,0 +1,57 @@
+Visual Studio 17 2022
+---------------------
+
+.. versionadded:: 3.21
+
+Generates Visual Studio 17 (VS 2022) project files.
+
+Project Types
+^^^^^^^^^^^^^
+
+Only Visual C++ and C# projects may be generated (and Fortran with
+Intel compiler integration).  Other types of projects (JavaScript,
+Powershell, Python, etc.) are not supported.
+
+Instance Selection
+^^^^^^^^^^^^^^^^^^
+
+VS 2022 supports multiple installations on the same machine.
+The :variable:`CMAKE_GENERATOR_INSTANCE` variable may be set as a
+cache entry containing the absolute path to a Visual Studio instance.
+If the value is not specified explicitly by the user or a toolchain file,
+CMake queries the Visual Studio Installer to locate VS instances, chooses
+one, and sets the variable as a cache entry to hold the value persistently.
+
+When CMake first chooses an instance, if the ``VS170COMNTOOLS`` environment
+variable is set and points to the ``Common7/Tools`` directory within
+one of the instances, that instance will be used.  Otherwise, if more
+than one instance is installed we do not define which one is chosen
+by default.
+
+Platform Selection
+^^^^^^^^^^^^^^^^^^
+
+The default target platform name (architecture) is that of the host
+and is provided in the :variable:`CMAKE_VS_PLATFORM_NAME_DEFAULT` variable.
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
+via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
+name (architecture).  For example:
+
+* ``cmake -G "Visual Studio 17 2022" -A Win32``
+* ``cmake -G "Visual Studio 17 2022" -A x64``
+* ``cmake -G "Visual Studio 17 2022" -A ARM``
+* ``cmake -G "Visual Studio 17 2022" -A ARM64``
+
+Toolset Selection
+^^^^^^^^^^^^^^^^^
+
+The ``v143`` toolset that comes with VS 17 2022 is selected by default.
+The :variable:`CMAKE_GENERATOR_TOOLSET` option may be set, perhaps
+via the :manual:`cmake(1)` ``-T`` option, to specify another toolset.
+
+.. |VS_TOOLSET_HOST_ARCH_DEFAULT| replace::
+   By default this generator uses the 64-bit variant on x64 hosts and
+   the 32-bit variant otherwise.
+
+.. include:: VS_TOOLSET_HOST_ARCH.txt
diff --git a/share/cmake-3.18/Help/generator/Visual Studio 6.rst b/share/cmake-3.22/Help/generator/Visual Studio 6.rst
similarity index 100%
rename from share/cmake-3.18/Help/generator/Visual Studio 6.rst
rename to share/cmake-3.22/Help/generator/Visual Studio 6.rst
diff --git a/share/cmake-3.18/Help/generator/Visual Studio 7 .NET 2003.rst b/share/cmake-3.22/Help/generator/Visual Studio 7 .NET 2003.rst
similarity index 100%
rename from share/cmake-3.18/Help/generator/Visual Studio 7 .NET 2003.rst
rename to share/cmake-3.22/Help/generator/Visual Studio 7 .NET 2003.rst
diff --git a/share/cmake-3.18/Help/generator/Visual Studio 7.rst b/share/cmake-3.22/Help/generator/Visual Studio 7.rst
similarity index 100%
rename from share/cmake-3.18/Help/generator/Visual Studio 7.rst
rename to share/cmake-3.22/Help/generator/Visual Studio 7.rst
diff --git a/share/cmake-3.18/Help/generator/Visual Studio 8 2005.rst b/share/cmake-3.22/Help/generator/Visual Studio 8 2005.rst
similarity index 100%
rename from share/cmake-3.18/Help/generator/Visual Studio 8 2005.rst
rename to share/cmake-3.22/Help/generator/Visual Studio 8 2005.rst
diff --git a/share/cmake-3.22/Help/generator/Visual Studio 9 2008.rst b/share/cmake-3.22/Help/generator/Visual Studio 9 2008.rst
new file mode 100644
index 0000000..644f936
--- /dev/null
+++ b/share/cmake-3.22/Help/generator/Visual Studio 9 2008.rst
@@ -0,0 +1,33 @@
+Visual Studio 9 2008
+--------------------
+
+Generates Visual Studio 9 2008 project files.
+
+Platform Selection
+^^^^^^^^^^^^^^^^^^
+
+The default target platform name (architecture) is ``Win32``.
+
+.. versionadded:: 3.1
+  The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
+  via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
+  name (architecture).  For example:
+
+  * ``cmake -G "Visual Studio 9 2008" -A Win32``
+  * ``cmake -G "Visual Studio 9 2008" -A x64``
+  * ``cmake -G "Visual Studio 9 2008" -A Itanium``
+  * ``cmake -G "Visual Studio 9 2008" -A <WinCE-SDK>``
+    (Specify a target platform matching a Windows CE SDK name.)
+
+For compatibility with CMake versions prior to 3.1, one may specify
+a target platform name optionally at the end of the generator name.
+This is supported only for:
+
+``Visual Studio 9 2008 Win64``
+  Specify target platform ``x64``.
+
+``Visual Studio 9 2008 IA64``
+  Specify target platform ``Itanium``.
+
+``Visual Studio 9 2008 <WinCE-SDK>``
+  Specify target platform matching a Windows CE SDK name.
diff --git a/share/cmake-3.18/Help/generator/Watcom WMake.rst b/share/cmake-3.22/Help/generator/Watcom WMake.rst
similarity index 100%
rename from share/cmake-3.18/Help/generator/Watcom WMake.rst
rename to share/cmake-3.22/Help/generator/Watcom WMake.rst
diff --git a/share/cmake-3.22/Help/generator/Xcode.rst b/share/cmake-3.22/Help/generator/Xcode.rst
new file mode 100644
index 0000000..e4900a1
--- /dev/null
+++ b/share/cmake-3.22/Help/generator/Xcode.rst
@@ -0,0 +1,46 @@
+Xcode
+-----
+
+Generate Xcode project files.
+
+.. versionchanged:: 3.15
+  This generator supports Xcode 5.0 and above.
+
+.. _`Xcode Build System Selection`:
+
+Toolset and Build System Selection
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+By default Xcode is allowed to select its own default toolchain.
+The :variable:`CMAKE_GENERATOR_TOOLSET` option may be set, perhaps
+via the :manual:`cmake(1)` ``-T`` option, to specify another toolset.
+
+.. versionadded:: 3.19
+  This generator supports toolset specification using one of these forms:
+
+* ``toolset``
+* ``toolset[,key=value]*``
+* ``key=value[,key=value]*``
+
+The ``toolset`` specifies the toolset name.  The selected toolset name
+is provided in the :variable:`CMAKE_XCODE_PLATFORM_TOOLSET` variable.
+
+The ``key=value`` pairs form a comma-separated list of options to
+specify generator-specific details of the toolset selection.
+Supported pairs are:
+
+``buildsystem=<variant>``
+  Specify the buildsystem variant to use.
+  See the :variable:`CMAKE_XCODE_BUILD_SYSTEM` variable for allowed values.
+
+  For example, to select the original build system under Xcode 12,
+  run :manual:`cmake(1)` with the option ``-T buildsystem=1``.
+
+Swift Support
+^^^^^^^^^^^^^
+
+.. versionadded:: 3.4
+
+When using the :generator:`Xcode` generator with Xcode 6.1 or higher,
+one may enable the ``Swift`` language with the :command:`enable_language`
+command or the :command:`project`.
diff --git a/share/cmake-3.18/Help/include/COMPILE_DEFINITIONS_DISCLAIMER.txt b/share/cmake-3.22/Help/include/COMPILE_DEFINITIONS_DISCLAIMER.txt
similarity index 100%
rename from share/cmake-3.18/Help/include/COMPILE_DEFINITIONS_DISCLAIMER.txt
rename to share/cmake-3.22/Help/include/COMPILE_DEFINITIONS_DISCLAIMER.txt
diff --git a/share/cmake-3.18/Help/include/INTERFACE_INCLUDE_DIRECTORIES_WARNING.txt b/share/cmake-3.22/Help/include/INTERFACE_INCLUDE_DIRECTORIES_WARNING.txt
similarity index 100%
rename from share/cmake-3.18/Help/include/INTERFACE_INCLUDE_DIRECTORIES_WARNING.txt
rename to share/cmake-3.22/Help/include/INTERFACE_INCLUDE_DIRECTORIES_WARNING.txt
diff --git a/share/cmake-3.18/Help/include/INTERFACE_LINK_LIBRARIES_WARNING.txt b/share/cmake-3.22/Help/include/INTERFACE_LINK_LIBRARIES_WARNING.txt
similarity index 100%
rename from share/cmake-3.18/Help/include/INTERFACE_LINK_LIBRARIES_WARNING.txt
rename to share/cmake-3.22/Help/include/INTERFACE_LINK_LIBRARIES_WARNING.txt
diff --git a/share/cmake-3.22/Help/index.rst b/share/cmake-3.22/Help/index.rst
new file mode 100644
index 0000000..fdbf847
--- /dev/null
+++ b/share/cmake-3.22/Help/index.rst
@@ -0,0 +1,107 @@
+.. title:: CMake Reference Documentation
+
+Introduction
+############
+
+CMake is a tool to manage building of source code.  Originally, CMake was
+designed as a generator for various dialects of ``Makefile``, today
+CMake generates modern buildsystems such as ``Ninja`` as well as project
+files for IDEs such as Visual Studio and Xcode.
+
+CMake is widely used for the C and C++ languages, but it may be used to
+build source code of other languages too.
+
+People encountering CMake for the first time may have different initial
+goals.  To learn how to build a source code package downloaded from the
+internet, start with the :guide:`User Interaction Guide`.
+This will detail the steps needed to run the :manual:`cmake(1)` or
+:manual:`cmake-gui(1)` executable and how to choose a generator, and
+how to complete the build.
+
+The :guide:`Using Dependencies Guide` is aimed at developers
+wishing to get started using a third-party library.
+
+For developers starting a project using CMake, the :guide:`CMake Tutorial`
+is a suitable starting point.  The :manual:`cmake-buildsystem(7)`
+manual is aimed at developers expanding their knowledge of maintaining
+a buildsystem and becoming familiar with the build targets that
+can be represented in CMake.  The :manual:`cmake-packages(7)` manual
+explains how to create packages which can easily be consumed by
+third-party CMake-based buildsystems.
+
+Command-Line Tools
+##################
+
+.. toctree::
+   :maxdepth: 1
+
+   /manual/cmake.1
+   /manual/ctest.1
+   /manual/cpack.1
+
+Interactive Dialogs
+###################
+
+.. toctree::
+   :maxdepth: 1
+
+   /manual/cmake-gui.1
+   /manual/ccmake.1
+
+Reference Manuals
+#################
+
+.. toctree::
+   :maxdepth: 1
+
+   /manual/cmake-buildsystem.7
+   /manual/cmake-commands.7
+   /manual/cmake-compile-features.7
+   /manual/cmake-developer.7
+   /manual/cmake-env-variables.7
+   /manual/cmake-file-api.7
+   /manual/cmake-generator-expressions.7
+   /manual/cmake-generators.7
+   /manual/cmake-language.7
+   /manual/cmake-modules.7
+   /manual/cmake-packages.7
+   /manual/cmake-policies.7
+   /manual/cmake-presets.7
+   /manual/cmake-properties.7
+   /manual/cmake-qt.7
+   /manual/cmake-server.7
+   /manual/cmake-toolchains.7
+   /manual/cmake-variables.7
+   /manual/cpack-generators.7
+
+.. only:: not man
+
+ Guides
+ ######
+
+ .. toctree::
+    :maxdepth: 1
+
+    /guide/tutorial/index
+    /guide/user-interaction/index
+    /guide/using-dependencies/index
+    /guide/importing-exporting/index
+    /guide/ide-integration/index
+
+.. only:: html or text
+
+ Release Notes
+ #############
+
+ .. toctree::
+    :maxdepth: 1
+
+    /release/index
+
+.. only:: html
+
+ Index and Search
+ ################
+
+ * :ref:`genindex`
+ * :ref:`search`
diff --git a/share/cmake-3.18/Help/manual/ID_RESERVE.txt b/share/cmake-3.22/Help/manual/ID_RESERVE.txt
similarity index 100%
rename from share/cmake-3.18/Help/manual/ID_RESERVE.txt
rename to share/cmake-3.22/Help/manual/ID_RESERVE.txt
diff --git a/share/cmake-3.18/Help/manual/LINKS.txt b/share/cmake-3.22/Help/manual/LINKS.txt
similarity index 100%
rename from share/cmake-3.18/Help/manual/LINKS.txt
rename to share/cmake-3.22/Help/manual/LINKS.txt
diff --git a/share/cmake-3.22/Help/manual/OPTIONS_BUILD.txt b/share/cmake-3.22/Help/manual/OPTIONS_BUILD.txt
new file mode 100644
index 0000000..8e23b77
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/OPTIONS_BUILD.txt
@@ -0,0 +1,134 @@
+``-S <path-to-source>``
+ Path to root directory of the CMake project to build.
+
+``-B <path-to-build>``
+ Path to directory which CMake will use as the root of build directory.
+
+ If the directory doesn't already exist CMake will make it.
+
+``-C <initial-cache>``
+ Pre-load a script to populate the cache.
+
+ When CMake is first run in an empty build tree, it creates a
+ ``CMakeCache.txt`` file and populates it with customizable settings for
+ the project.  This option may be used to specify a file from which
+ to load cache entries before the first pass through the project's
+ CMake listfiles.  The loaded entries take priority over the
+ project's default values.  The given file should be a CMake script
+ containing :command:`set` commands that use the ``CACHE`` option, not a
+ cache-format file.
+
+ References to :variable:`CMAKE_SOURCE_DIR` and :variable:`CMAKE_BINARY_DIR`
+ within the script evaluate to the top-level source and build tree.
+
+``-D <var>:<type>=<value>, -D <var>=<value>``
+ Create or update a CMake ``CACHE`` entry.
+
+ When CMake is first run in an empty build tree, it creates a
+ ``CMakeCache.txt`` file and populates it with customizable settings for
+ the project.  This option may be used to specify a setting that
+ takes priority over the project's default value.  The option may be
+ repeated for as many ``CACHE`` entries as desired.
+
+ If the ``:<type>`` portion is given it must be one of the types
+ specified by the :command:`set` command documentation for its
+ ``CACHE`` signature.
+ If the ``:<type>`` portion is omitted the entry will be created
+ with no type if it does not exist with a type already.  If a
+ command in the project sets the type to ``PATH`` or ``FILEPATH``
+ then the ``<value>`` will be converted to an absolute path.
+
+ This option may also be given as a single argument:
+ ``-D<var>:<type>=<value>`` or ``-D<var>=<value>``.
+
+``-U <globbing_expr>``
+ Remove matching entries from CMake ``CACHE``.
+
+ This option may be used to remove one or more variables from the
+ ``CMakeCache.txt`` file, globbing expressions using ``*`` and ``?`` are
+ supported.  The option may be repeated for as many ``CACHE`` entries as
+ desired.
+
+ Use with care, you can make your ``CMakeCache.txt`` non-working.
+
+``-G <generator-name>``
+ Specify a build system generator.
+
+ CMake may support multiple native build systems on certain
+ platforms.  A generator is responsible for generating a particular
+ build system.  Possible generator names are specified in the
+ :manual:`cmake-generators(7)` manual.
+
+ If not specified, CMake checks the :envvar:`CMAKE_GENERATOR` environment
+ variable and otherwise falls back to a builtin default selection.
+
+``-T <toolset-spec>``
+ Toolset specification for the generator, if supported.
+
+ Some CMake generators support a toolset specification to tell
+ the native build system how to choose a compiler.  See the
+ :variable:`CMAKE_GENERATOR_TOOLSET` variable for details.
+
+``-A <platform-name>``
+ Specify platform name if supported by generator.
+
+ Some CMake generators support a platform name to be given to the
+ native build system to choose a compiler or SDK.  See the
+ :variable:`CMAKE_GENERATOR_PLATFORM` variable for details.
+
+``--toolchain <path-to-file>``
+ Specify the cross compiling toolchain file, equivalent to setting
+ :variable:`CMAKE_TOOLCHAIN_FILE` variable.
+
+``--install-prefix <directory>``
+ Specify the installation directory, used by the
+ :variable:`CMAKE_INSTALL_PREFIX` variable. Must be an absolute path.
+
+``-Wno-dev``
+ Suppress developer warnings.
+
+ Suppress warnings that are meant for the author of the
+ ``CMakeLists.txt`` files. By default this will also turn off
+ deprecation warnings.
+
+``-Wdev``
+ Enable developer warnings.
+
+ Enable warnings that are meant for the author of the ``CMakeLists.txt``
+ files. By default this will also turn on deprecation warnings.
+
+``-Werror=dev``
+ Make developer warnings errors.
+
+ Make warnings that are meant for the author of the ``CMakeLists.txt`` files
+ errors. By default this will also turn on deprecated warnings as errors.
+
+``-Wno-error=dev``
+ Make developer warnings not errors.
+
+ Make warnings that are meant for the author of the ``CMakeLists.txt`` files not
+ errors. By default this will also turn off deprecated warnings as errors.
+
+``-Wdeprecated``
+ Enable deprecated functionality warnings.
+
+ Enable warnings for usage of deprecated functionality, that are meant
+ for the author of the ``CMakeLists.txt`` files.
+
+``-Wno-deprecated``
+ Suppress deprecated functionality warnings.
+
+ Suppress warnings for usage of deprecated functionality, that are meant
+ for the author of the ``CMakeLists.txt`` files.
+
+``-Werror=deprecated``
+ Make deprecated macro and function warnings errors.
+
+ Make warnings for usage of deprecated macros and functions, that are meant
+ for the author of the ``CMakeLists.txt`` files, errors.
+
+``-Wno-error=deprecated``
+ Make deprecated macro and function warnings not errors.
+
+ Make warnings for usage of deprecated macros and functions, that are meant
+ for the author of the ``CMakeLists.txt`` files, not errors.
diff --git a/share/cmake-3.18/Help/manual/OPTIONS_HELP.txt b/share/cmake-3.22/Help/manual/OPTIONS_HELP.txt
similarity index 100%
rename from share/cmake-3.18/Help/manual/OPTIONS_HELP.txt
rename to share/cmake-3.22/Help/manual/OPTIONS_HELP.txt
diff --git a/share/cmake-3.18/Help/manual/ccmake.1.rst b/share/cmake-3.22/Help/manual/ccmake.1.rst
similarity index 100%
rename from share/cmake-3.18/Help/manual/ccmake.1.rst
rename to share/cmake-3.22/Help/manual/ccmake.1.rst
diff --git a/share/cmake-3.22/Help/manual/cmake-buildsystem.7.rst b/share/cmake-3.22/Help/manual/cmake-buildsystem.7.rst
new file mode 100644
index 0000000..2f43070
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-buildsystem.7.rst
@@ -0,0 +1,1104 @@
+.. cmake-manual-description: CMake Buildsystem Reference
+
+cmake-buildsystem(7)
+********************
+
+.. only:: html
+
+   .. contents::
+
+Introduction
+============
+
+A CMake-based buildsystem is organized as a set of high-level logical
+targets.  Each target corresponds to an executable or library, or
+is a custom target containing custom commands.  Dependencies between the
+targets are expressed in the buildsystem to determine the build order
+and the rules for regeneration in response to change.
+
+Binary Targets
+==============
+
+Executables and libraries are defined using the :command:`add_executable`
+and :command:`add_library` commands.  The resulting binary files have
+appropriate :prop_tgt:`PREFIX`, :prop_tgt:`SUFFIX` and extensions for the
+platform targeted. Dependencies between binary targets are expressed using
+the :command:`target_link_libraries` command:
+
+.. code-block:: cmake
+
+  add_library(archive archive.cpp zip.cpp lzma.cpp)
+  add_executable(zipapp zipapp.cpp)
+  target_link_libraries(zipapp archive)
+
+``archive`` is defined as a ``STATIC`` library -- an archive containing objects
+compiled from ``archive.cpp``, ``zip.cpp``, and ``lzma.cpp``.  ``zipapp``
+is defined as an executable formed by compiling and linking ``zipapp.cpp``.
+When linking the ``zipapp`` executable, the ``archive`` static library is
+linked in.
+
+Binary Executables
+------------------
+
+The :command:`add_executable` command defines an executable target:
+
+.. code-block:: cmake
+
+  add_executable(mytool mytool.cpp)
+
+Commands such as :command:`add_custom_command`, which generates rules to be
+run at build time can transparently use an :prop_tgt:`EXECUTABLE <TYPE>`
+target as a ``COMMAND`` executable.  The buildsystem rules will ensure that
+the executable is built before attempting to run the command.
+
+Binary Library Types
+--------------------
+
+.. _`Normal Libraries`:
+
+Normal Libraries
+^^^^^^^^^^^^^^^^
+
+By default, the :command:`add_library` command defines a ``STATIC`` library,
+unless a type is specified.  A type may be specified when using the command:
+
+.. code-block:: cmake
+
+  add_library(archive SHARED archive.cpp zip.cpp lzma.cpp)
+
+.. code-block:: cmake
+
+  add_library(archive STATIC archive.cpp zip.cpp lzma.cpp)
+
+The :variable:`BUILD_SHARED_LIBS` variable may be enabled to change the
+behavior of :command:`add_library` to build shared libraries by default.
+
+In the context of the buildsystem definition as a whole, it is largely
+irrelevant whether particular libraries are ``SHARED`` or ``STATIC`` --
+the commands, dependency specifications and other APIs work similarly
+regardless of the library type.  The ``MODULE`` library type is
+dissimilar in that it is generally not linked to -- it is not used in
+the right-hand-side of the :command:`target_link_libraries` command.
+It is a type which is loaded as a plugin using runtime techniques.
+If the library does not export any unmanaged symbols (e.g. Windows
+resource DLL, C++/CLI DLL), it is required that the library not be a
+``SHARED`` library because CMake expects ``SHARED`` libraries to export
+at least one symbol.
+
+.. code-block:: cmake
+
+  add_library(archive MODULE 7z.cpp)
+
+.. _`Apple Frameworks`:
+
+Apple Frameworks
+""""""""""""""""
+
+A ``SHARED`` library may be marked with the :prop_tgt:`FRAMEWORK`
+target property to create an macOS or iOS Framework Bundle.
+A library with the ``FRAMEWORK`` target property should also set the
+:prop_tgt:`FRAMEWORK_VERSION` target property.  This property is typically
+set to the value of "A" by macOS conventions.
+The ``MACOSX_FRAMEWORK_IDENTIFIER`` sets ``CFBundleIdentifier`` key
+and it uniquely identifies the bundle.
+
+.. code-block:: cmake
+
+  add_library(MyFramework SHARED MyFramework.cpp)
+  set_target_properties(MyFramework PROPERTIES
+    FRAMEWORK TRUE
+    FRAMEWORK_VERSION A # Version "A" is macOS convention
+    MACOSX_FRAMEWORK_IDENTIFIER org.cmake.MyFramework
+  )
+
+.. _`Object Libraries`:
+
+Object Libraries
+^^^^^^^^^^^^^^^^
+
+The ``OBJECT`` library type defines a non-archival collection of object files
+resulting from compiling the given source files.  The object files collection
+may be used as source inputs to other targets by using the syntax
+``$<TARGET_OBJECTS:name>``.  This is a
+:manual:`generator expression <cmake-generator-expressions(7)>` that can be
+used to supply the ``OBJECT`` library content to other targets:
+
+.. code-block:: cmake
+
+  add_library(archive OBJECT archive.cpp zip.cpp lzma.cpp)
+
+  add_library(archiveExtras STATIC $<TARGET_OBJECTS:archive> extras.cpp)
+
+  add_executable(test_exe $<TARGET_OBJECTS:archive> test.cpp)
+
+The link (or archiving) step of those other targets will use the object
+files collection in addition to those from their own sources.
+
+Alternatively, object libraries may be linked into other targets:
+
+.. code-block:: cmake
+
+  add_library(archive OBJECT archive.cpp zip.cpp lzma.cpp)
+
+  add_library(archiveExtras STATIC extras.cpp)
+  target_link_libraries(archiveExtras PUBLIC archive)
+
+  add_executable(test_exe test.cpp)
+  target_link_libraries(test_exe archive)
+
+The link (or archiving) step of those other targets will use the object
+files from ``OBJECT`` libraries that are *directly* linked.  Additionally,
+usage requirements of the ``OBJECT`` libraries will be honored when compiling
+sources in those other targets.  Furthermore, those usage requirements
+will propagate transitively to dependents of those other targets.
+
+Object libraries may not be used as the ``TARGET`` in a use of the
+:command:`add_custom_command(TARGET)` command signature.  However,
+the list of objects can be used by :command:`add_custom_command(OUTPUT)`
+or :command:`file(GENERATE)` by using ``$<TARGET_OBJECTS:objlib>``.
+
+Build Specification and Usage Requirements
+==========================================
+
+The :command:`target_include_directories`, :command:`target_compile_definitions`
+and :command:`target_compile_options` commands specify the build specifications
+and the usage requirements of binary targets.  The commands populate the
+:prop_tgt:`INCLUDE_DIRECTORIES`, :prop_tgt:`COMPILE_DEFINITIONS` and
+:prop_tgt:`COMPILE_OPTIONS` target properties respectively, and/or the
+:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES`, :prop_tgt:`INTERFACE_COMPILE_DEFINITIONS`
+and :prop_tgt:`INTERFACE_COMPILE_OPTIONS` target properties.
+
+Each of the commands has a ``PRIVATE``, ``PUBLIC`` and ``INTERFACE`` mode.  The
+``PRIVATE`` mode populates only the non-``INTERFACE_`` variant of the target
+property and the ``INTERFACE`` mode populates only the ``INTERFACE_`` variants.
+The ``PUBLIC`` mode populates both variants of the respective target property.
+Each command may be invoked with multiple uses of each keyword:
+
+.. code-block:: cmake
+
+  target_compile_definitions(archive
+    PRIVATE BUILDING_WITH_LZMA
+    INTERFACE USING_ARCHIVE_LIB
+  )
+
+Note that usage requirements are not designed as a way to make downstreams
+use particular :prop_tgt:`COMPILE_OPTIONS` or
+:prop_tgt:`COMPILE_DEFINITIONS` etc for convenience only.  The contents of
+the properties must be **requirements**, not merely recommendations or
+convenience.
+
+See the :ref:`Creating Relocatable Packages` section of the
+:manual:`cmake-packages(7)` manual for discussion of additional care
+that must be taken when specifying usage requirements while creating
+packages for redistribution.
+
+Target Properties
+-----------------
+
+The contents of the :prop_tgt:`INCLUDE_DIRECTORIES`,
+:prop_tgt:`COMPILE_DEFINITIONS` and :prop_tgt:`COMPILE_OPTIONS` target
+properties are used appropriately when compiling the source files of a
+binary target.
+
+Entries in the :prop_tgt:`INCLUDE_DIRECTORIES` are added to the compile line
+with ``-I`` or ``-isystem`` prefixes and in the order of appearance in the
+property value.
+
+Entries in the :prop_tgt:`COMPILE_DEFINITIONS` are prefixed with ``-D`` or
+``/D`` and added to the compile line in an unspecified order.  The
+:prop_tgt:`DEFINE_SYMBOL` target property is also added as a compile
+definition as a special convenience case for ``SHARED`` and ``MODULE``
+library targets.
+
+Entries in the :prop_tgt:`COMPILE_OPTIONS` are escaped for the shell and added
+in the order of appearance in the property value.  Several compile options have
+special separate handling, such as :prop_tgt:`POSITION_INDEPENDENT_CODE`.
+
+The contents of the :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES`,
+:prop_tgt:`INTERFACE_COMPILE_DEFINITIONS` and
+:prop_tgt:`INTERFACE_COMPILE_OPTIONS` target properties are
+*Usage Requirements* -- they specify content which consumers
+must use to correctly compile and link with the target they appear on.
+For any binary target, the contents of each ``INTERFACE_`` property on
+each target specified in a :command:`target_link_libraries` command is
+consumed:
+
+.. code-block:: cmake
+
+  set(srcs archive.cpp zip.cpp)
+  if (LZMA_FOUND)
+    list(APPEND srcs lzma.cpp)
+  endif()
+  add_library(archive SHARED ${srcs})
+  if (LZMA_FOUND)
+    # The archive library sources are compiled with -DBUILDING_WITH_LZMA
+    target_compile_definitions(archive PRIVATE BUILDING_WITH_LZMA)
+  endif()
+  target_compile_definitions(archive INTERFACE USING_ARCHIVE_LIB)
+
+  add_executable(consumer)
+  # Link consumer to archive and consume its usage requirements. The consumer
+  # executable sources are compiled with -DUSING_ARCHIVE_LIB.
+  target_link_libraries(consumer archive)
+
+Because it is common to require that the source directory and corresponding
+build directory are added to the :prop_tgt:`INCLUDE_DIRECTORIES`, the
+:variable:`CMAKE_INCLUDE_CURRENT_DIR` variable can be enabled to conveniently
+add the corresponding directories to the :prop_tgt:`INCLUDE_DIRECTORIES` of
+all targets.  The variable :variable:`CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE`
+can be enabled to add the corresponding directories to the
+:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of all targets.  This makes use of
+targets in multiple different directories convenient through use of the
+:command:`target_link_libraries` command.
+
+
+.. _`Target Usage Requirements`:
+
+Transitive Usage Requirements
+-----------------------------
+
+The usage requirements of a target can transitively propagate to dependents.
+The :command:`target_link_libraries` command has ``PRIVATE``,
+``INTERFACE`` and ``PUBLIC`` keywords to control the propagation.
+
+.. code-block:: cmake
+
+  add_library(archive archive.cpp)
+  target_compile_definitions(archive INTERFACE USING_ARCHIVE_LIB)
+
+  add_library(serialization serialization.cpp)
+  target_compile_definitions(serialization INTERFACE USING_SERIALIZATION_LIB)
+
+  add_library(archiveExtras extras.cpp)
+  target_link_libraries(archiveExtras PUBLIC archive)
+  target_link_libraries(archiveExtras PRIVATE serialization)
+  # archiveExtras is compiled with -DUSING_ARCHIVE_LIB
+  # and -DUSING_SERIALIZATION_LIB
+
+  add_executable(consumer consumer.cpp)
+  # consumer is compiled with -DUSING_ARCHIVE_LIB
+  target_link_libraries(consumer archiveExtras)
+
+Because ``archive`` is a ``PUBLIC`` dependency of ``archiveExtras``, the
+usage requirements of it are propagated to ``consumer`` too.  Because
+``serialization`` is a ``PRIVATE`` dependency of ``archiveExtras``, the usage
+requirements of it are not propagated to ``consumer``.
+
+Generally, a dependency should be specified in a use of
+:command:`target_link_libraries` with the ``PRIVATE`` keyword if it is used by
+only the implementation of a library, and not in the header files.  If a
+dependency is additionally used in the header files of a library (e.g. for
+class inheritance), then it should be specified as a ``PUBLIC`` dependency.
+A dependency which is not used by the implementation of a library, but only by
+its headers should be specified as an ``INTERFACE`` dependency.  The
+:command:`target_link_libraries` command may be invoked with multiple uses of
+each keyword:
+
+.. code-block:: cmake
+
+  target_link_libraries(archiveExtras
+    PUBLIC archive
+    PRIVATE serialization
+  )
+
+Usage requirements are propagated by reading the ``INTERFACE_`` variants
+of target properties from dependencies and appending the values to the
+non-``INTERFACE_`` variants of the operand.  For example, the
+:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of dependencies is read and
+appended to the :prop_tgt:`INCLUDE_DIRECTORIES` of the operand.  In cases
+where order is relevant and maintained, and the order resulting from the
+:command:`target_link_libraries` calls does not allow correct compilation,
+use of an appropriate command to set the property directly may update the
+order.
+
+For example, if the linked libraries for a target must be specified
+in the order ``lib1`` ``lib2`` ``lib3`` , but the include directories must
+be specified in the order ``lib3`` ``lib1`` ``lib2``:
+
+.. code-block:: cmake
+
+  target_link_libraries(myExe lib1 lib2 lib3)
+  target_include_directories(myExe
+    PRIVATE $<TARGET_PROPERTY:lib3,INTERFACE_INCLUDE_DIRECTORIES>)
+
+Note that care must be taken when specifying usage requirements for targets
+which will be exported for installation using the :command:`install(EXPORT)`
+command.  See :ref:`Creating Packages` for more.
+
+.. _`Compatible Interface Properties`:
+
+Compatible Interface Properties
+-------------------------------
+
+Some target properties are required to be compatible between a target and
+the interface of each dependency.  For example, the
+:prop_tgt:`POSITION_INDEPENDENT_CODE` target property may specify a
+boolean value of whether a target should be compiled as
+position-independent-code, which has platform-specific consequences.
+A target may also specify the usage requirement
+:prop_tgt:`INTERFACE_POSITION_INDEPENDENT_CODE` to communicate that
+consumers must be compiled as position-independent-code.
+
+.. code-block:: cmake
+
+  add_executable(exe1 exe1.cpp)
+  set_property(TARGET exe1 PROPERTY POSITION_INDEPENDENT_CODE ON)
+
+  add_library(lib1 SHARED lib1.cpp)
+  set_property(TARGET lib1 PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE ON)
+
+  add_executable(exe2 exe2.cpp)
+  target_link_libraries(exe2 lib1)
+
+Here, both ``exe1`` and ``exe2`` will be compiled as position-independent-code.
+``lib1`` will also be compiled as position-independent-code because that is the
+default setting for ``SHARED`` libraries.  If dependencies have conflicting,
+non-compatible requirements :manual:`cmake(1)` issues a diagnostic:
+
+.. code-block:: cmake
+
+  add_library(lib1 SHARED lib1.cpp)
+  set_property(TARGET lib1 PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE ON)
+
+  add_library(lib2 SHARED lib2.cpp)
+  set_property(TARGET lib2 PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE OFF)
+
+  add_executable(exe1 exe1.cpp)
+  target_link_libraries(exe1 lib1)
+  set_property(TARGET exe1 PROPERTY POSITION_INDEPENDENT_CODE OFF)
+
+  add_executable(exe2 exe2.cpp)
+  target_link_libraries(exe2 lib1 lib2)
+
+The ``lib1`` requirement ``INTERFACE_POSITION_INDEPENDENT_CODE`` is not
+"compatible" with the :prop_tgt:`POSITION_INDEPENDENT_CODE` property of
+the ``exe1`` target.  The library requires that consumers are built as
+position-independent-code, while the executable specifies to not built as
+position-independent-code, so a diagnostic is issued.
+
+The ``lib1`` and ``lib2`` requirements are not "compatible".  One of them
+requires that consumers are built as position-independent-code, while
+the other requires that consumers are not built as position-independent-code.
+Because ``exe2`` links to both and they are in conflict, a CMake error message
+is issued::
+
+  CMake Error: The INTERFACE_POSITION_INDEPENDENT_CODE property of "lib2" does
+  not agree with the value of POSITION_INDEPENDENT_CODE already determined
+  for "exe2".
+
+To be "compatible", the :prop_tgt:`POSITION_INDEPENDENT_CODE` property,
+if set must be either the same, in a boolean sense, as the
+:prop_tgt:`INTERFACE_POSITION_INDEPENDENT_CODE` property of all transitively
+specified dependencies on which that property is set.
+
+This property of "compatible interface requirement" may be extended to other
+properties by specifying the property in the content of the
+:prop_tgt:`COMPATIBLE_INTERFACE_BOOL` target property.  Each specified property
+must be compatible between the consuming target and the corresponding property
+with an ``INTERFACE_`` prefix from each dependency:
+
+.. code-block:: cmake
+
+  add_library(lib1Version2 SHARED lib1_v2.cpp)
+  set_property(TARGET lib1Version2 PROPERTY INTERFACE_CUSTOM_PROP ON)
+  set_property(TARGET lib1Version2 APPEND PROPERTY
+    COMPATIBLE_INTERFACE_BOOL CUSTOM_PROP
+  )
+
+  add_library(lib1Version3 SHARED lib1_v3.cpp)
+  set_property(TARGET lib1Version3 PROPERTY INTERFACE_CUSTOM_PROP OFF)
+
+  add_executable(exe1 exe1.cpp)
+  target_link_libraries(exe1 lib1Version2) # CUSTOM_PROP will be ON
+
+  add_executable(exe2 exe2.cpp)
+  target_link_libraries(exe2 lib1Version2 lib1Version3) # Diagnostic
+
+Non-boolean properties may also participate in "compatible interface"
+computations.  Properties specified in the
+:prop_tgt:`COMPATIBLE_INTERFACE_STRING`
+property must be either unspecified or compare to the same string among
+all transitively specified dependencies. This can be useful to ensure
+that multiple incompatible versions of a library are not linked together
+through transitive requirements of a target:
+
+.. code-block:: cmake
+
+  add_library(lib1Version2 SHARED lib1_v2.cpp)
+  set_property(TARGET lib1Version2 PROPERTY INTERFACE_LIB_VERSION 2)
+  set_property(TARGET lib1Version2 APPEND PROPERTY
+    COMPATIBLE_INTERFACE_STRING LIB_VERSION
+  )
+
+  add_library(lib1Version3 SHARED lib1_v3.cpp)
+  set_property(TARGET lib1Version3 PROPERTY INTERFACE_LIB_VERSION 3)
+
+  add_executable(exe1 exe1.cpp)
+  target_link_libraries(exe1 lib1Version2) # LIB_VERSION will be "2"
+
+  add_executable(exe2 exe2.cpp)
+  target_link_libraries(exe2 lib1Version2 lib1Version3) # Diagnostic
+
+The :prop_tgt:`COMPATIBLE_INTERFACE_NUMBER_MAX` target property specifies
+that content will be evaluated numerically and the maximum number among all
+specified will be calculated:
+
+.. code-block:: cmake
+
+  add_library(lib1Version2 SHARED lib1_v2.cpp)
+  set_property(TARGET lib1Version2 PROPERTY INTERFACE_CONTAINER_SIZE_REQUIRED 200)
+  set_property(TARGET lib1Version2 APPEND PROPERTY
+    COMPATIBLE_INTERFACE_NUMBER_MAX CONTAINER_SIZE_REQUIRED
+  )
+
+  add_library(lib1Version3 SHARED lib1_v3.cpp)
+  set_property(TARGET lib1Version3 PROPERTY INTERFACE_CONTAINER_SIZE_REQUIRED 1000)
+
+  add_executable(exe1 exe1.cpp)
+  # CONTAINER_SIZE_REQUIRED will be "200"
+  target_link_libraries(exe1 lib1Version2)
+
+  add_executable(exe2 exe2.cpp)
+  # CONTAINER_SIZE_REQUIRED will be "1000"
+  target_link_libraries(exe2 lib1Version2 lib1Version3)
+
+Similarly, the :prop_tgt:`COMPATIBLE_INTERFACE_NUMBER_MIN` may be used to
+calculate the numeric minimum value for a property from dependencies.
+
+Each calculated "compatible" property value may be read in the consumer at
+generate-time using generator expressions.
+
+Note that for each dependee, the set of properties specified in each
+compatible interface property must not intersect with the set specified in
+any of the other properties.
+
+Property Origin Debugging
+-------------------------
+
+Because build specifications can be determined by dependencies, the lack of
+locality of code which creates a target and code which is responsible for
+setting build specifications may make the code more difficult to reason about.
+:manual:`cmake(1)` provides a debugging facility to print the origin of the
+contents of properties which may be determined by dependencies.  The properties
+which can be debugged are listed in the
+:variable:`CMAKE_DEBUG_TARGET_PROPERTIES` variable documentation:
+
+.. code-block:: cmake
+
+  set(CMAKE_DEBUG_TARGET_PROPERTIES
+    INCLUDE_DIRECTORIES
+    COMPILE_DEFINITIONS
+    POSITION_INDEPENDENT_CODE
+    CONTAINER_SIZE_REQUIRED
+    LIB_VERSION
+  )
+  add_executable(exe1 exe1.cpp)
+
+In the case of properties listed in :prop_tgt:`COMPATIBLE_INTERFACE_BOOL` or
+:prop_tgt:`COMPATIBLE_INTERFACE_STRING`, the debug output shows which target
+was responsible for setting the property, and which other dependencies also
+defined the property.  In the case of
+:prop_tgt:`COMPATIBLE_INTERFACE_NUMBER_MAX` and
+:prop_tgt:`COMPATIBLE_INTERFACE_NUMBER_MIN`, the debug output shows the
+value of the property from each dependency, and whether the value determines
+the new extreme.
+
+Build Specification with Generator Expressions
+----------------------------------------------
+
+Build specifications may use
+:manual:`generator expressions <cmake-generator-expressions(7)>` containing
+content which may be conditional or known only at generate-time.  For example,
+the calculated "compatible" value of a property may be read with the
+``TARGET_PROPERTY`` expression:
+
+.. code-block:: cmake
+
+  add_library(lib1Version2 SHARED lib1_v2.cpp)
+  set_property(TARGET lib1Version2 PROPERTY
+    INTERFACE_CONTAINER_SIZE_REQUIRED 200)
+  set_property(TARGET lib1Version2 APPEND PROPERTY
+    COMPATIBLE_INTERFACE_NUMBER_MAX CONTAINER_SIZE_REQUIRED
+  )
+
+  add_executable(exe1 exe1.cpp)
+  target_link_libraries(exe1 lib1Version2)
+  target_compile_definitions(exe1 PRIVATE
+      CONTAINER_SIZE=$<TARGET_PROPERTY:CONTAINER_SIZE_REQUIRED>
+  )
+
+In this case, the ``exe1`` source files will be compiled with
+``-DCONTAINER_SIZE=200``.
+
+The unary ``TARGET_PROPERTY`` generator expression and the ``TARGET_POLICY``
+generator expression are evaluated with the consuming target context.  This
+means that a usage requirement specification may be evaluated differently based
+on the consumer:
+
+.. code-block:: cmake
+
+  add_library(lib1 lib1.cpp)
+  target_compile_definitions(lib1 INTERFACE
+    $<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:LIB1_WITH_EXE>
+    $<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:LIB1_WITH_SHARED_LIB>
+    $<$<TARGET_POLICY:CMP0041>:CONSUMER_CMP0041_NEW>
+  )
+
+  add_executable(exe1 exe1.cpp)
+  target_link_libraries(exe1 lib1)
+
+  cmake_policy(SET CMP0041 NEW)
+
+  add_library(shared_lib shared_lib.cpp)
+  target_link_libraries(shared_lib lib1)
+
+The ``exe1`` executable will be compiled with ``-DLIB1_WITH_EXE``, while the
+``shared_lib`` shared library will be compiled with ``-DLIB1_WITH_SHARED_LIB``
+and ``-DCONSUMER_CMP0041_NEW``, because policy :policy:`CMP0041` is
+``NEW`` at the point where the ``shared_lib`` target is created.
+
+The ``BUILD_INTERFACE`` expression wraps requirements which are only used when
+consumed from a target in the same buildsystem, or when consumed from a target
+exported to the build directory using the :command:`export` command.  The
+``INSTALL_INTERFACE`` expression wraps requirements which are only used when
+consumed from a target which has been installed and exported with the
+:command:`install(EXPORT)` command:
+
+.. code-block:: cmake
+
+  add_library(ClimbingStats climbingstats.cpp)
+  target_compile_definitions(ClimbingStats INTERFACE
+    $<BUILD_INTERFACE:ClimbingStats_FROM_BUILD_LOCATION>
+    $<INSTALL_INTERFACE:ClimbingStats_FROM_INSTALLED_LOCATION>
+  )
+  install(TARGETS ClimbingStats EXPORT libExport ${InstallArgs})
+  install(EXPORT libExport NAMESPACE Upstream::
+          DESTINATION lib/cmake/ClimbingStats)
+  export(EXPORT libExport NAMESPACE Upstream::)
+
+  add_executable(exe1 exe1.cpp)
+  target_link_libraries(exe1 ClimbingStats)
+
+In this case, the ``exe1`` executable will be compiled with
+``-DClimbingStats_FROM_BUILD_LOCATION``.  The exporting commands generate
+:prop_tgt:`IMPORTED` targets with either the ``INSTALL_INTERFACE`` or the
+``BUILD_INTERFACE`` omitted, and the ``*_INTERFACE`` marker stripped away.
+A separate project consuming the ``ClimbingStats`` package would contain:
+
+.. code-block:: cmake
+
+  find_package(ClimbingStats REQUIRED)
+
+  add_executable(Downstream main.cpp)
+  target_link_libraries(Downstream Upstream::ClimbingStats)
+
+Depending on whether the ``ClimbingStats`` package was used from the build
+location or the install location, the ``Downstream`` target would be compiled
+with either ``-DClimbingStats_FROM_BUILD_LOCATION`` or
+``-DClimbingStats_FROM_INSTALL_LOCATION``.  For more about packages and
+exporting see the :manual:`cmake-packages(7)` manual.
+
+.. _`Include Directories and Usage Requirements`:
+
+Include Directories and Usage Requirements
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Include directories require some special consideration when specified as usage
+requirements and when used with generator expressions.  The
+:command:`target_include_directories` command accepts both relative and
+absolute include directories:
+
+.. code-block:: cmake
+
+  add_library(lib1 lib1.cpp)
+  target_include_directories(lib1 PRIVATE
+    /absolute/path
+    relative/path
+  )
+
+Relative paths are interpreted relative to the source directory where the
+command appears.  Relative paths are not allowed in the
+:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of :prop_tgt:`IMPORTED` targets.
+
+In cases where a non-trivial generator expression is used, the
+``INSTALL_PREFIX`` expression may be used within the argument of an
+``INSTALL_INTERFACE`` expression.  It is a replacement marker which
+expands to the installation prefix when imported by a consuming project.
+
+Include directories usage requirements commonly differ between the build-tree
+and the install-tree.  The ``BUILD_INTERFACE`` and ``INSTALL_INTERFACE``
+generator expressions can be used to describe separate usage requirements
+based on the usage location.  Relative paths are allowed within the
+``INSTALL_INTERFACE`` expression and are interpreted relative to the
+installation prefix.  For example:
+
+.. code-block:: cmake
+
+  add_library(ClimbingStats climbingstats.cpp)
+  target_include_directories(ClimbingStats INTERFACE
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/generated>
+    $<INSTALL_INTERFACE:/absolute/path>
+    $<INSTALL_INTERFACE:relative/path>
+    $<INSTALL_INTERFACE:$<INSTALL_PREFIX>/$<CONFIG>/generated>
+  )
+
+Two convenience APIs are provided relating to include directories usage
+requirements.  The :variable:`CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE` variable
+may be enabled, with an equivalent effect to:
+
+.. code-block:: cmake
+
+  set_property(TARGET tgt APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR}>
+  )
+
+for each target affected.  The convenience for installed targets is
+an ``INCLUDES DESTINATION`` component with the :command:`install(TARGETS)`
+command:
+
+.. code-block:: cmake
+
+  install(TARGETS foo bar bat EXPORT tgts ${dest_args}
+    INCLUDES DESTINATION include
+  )
+  install(EXPORT tgts ${other_args})
+  install(FILES ${headers} DESTINATION include)
+
+This is equivalent to appending ``${CMAKE_INSTALL_PREFIX}/include`` to the
+:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of each of the installed
+:prop_tgt:`IMPORTED` targets when generated by :command:`install(EXPORT)`.
+
+When the :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of an
+:ref:`imported target <Imported targets>` is consumed, the entries in the
+property are treated as ``SYSTEM`` include directories, as if they were
+listed in the :prop_tgt:`INTERFACE_SYSTEM_INCLUDE_DIRECTORIES` of the
+dependency. This can result in omission of compiler warnings for headers
+found in those directories.  This behavior for :ref:`imported targets` may
+be controlled by setting the :prop_tgt:`NO_SYSTEM_FROM_IMPORTED` target
+property on the *consumers* of imported targets.
+
+If a binary target is linked transitively to a macOS :prop_tgt:`FRAMEWORK`, the
+``Headers`` directory of the framework is also treated as a usage requirement.
+This has the same effect as passing the framework directory as an include
+directory.
+
+Link Libraries and Generator Expressions
+----------------------------------------
+
+Like build specifications, :prop_tgt:`link libraries <LINK_LIBRARIES>` may be
+specified with generator expression conditions.  However, as consumption of
+usage requirements is based on collection from linked dependencies, there is
+an additional limitation that the link dependencies must form a "directed
+acyclic graph".  That is, if linking to a target is dependent on the value of
+a target property, that target property may not be dependent on the linked
+dependencies:
+
+.. code-block:: cmake
+
+  add_library(lib1 lib1.cpp)
+  add_library(lib2 lib2.cpp)
+  target_link_libraries(lib1 PUBLIC
+    $<$<TARGET_PROPERTY:POSITION_INDEPENDENT_CODE>:lib2>
+  )
+  add_library(lib3 lib3.cpp)
+  set_property(TARGET lib3 PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE ON)
+
+  add_executable(exe1 exe1.cpp)
+  target_link_libraries(exe1 lib1 lib3)
+
+As the value of the :prop_tgt:`POSITION_INDEPENDENT_CODE` property of
+the ``exe1`` target is dependent on the linked libraries (``lib3``), and the
+edge of linking ``exe1`` is determined by the same
+:prop_tgt:`POSITION_INDEPENDENT_CODE` property, the dependency graph above
+contains a cycle.  :manual:`cmake(1)` issues an error message.
+
+.. _`Output Artifacts`:
+
+Output Artifacts
+----------------
+
+The buildsystem targets created by the :command:`add_library` and
+:command:`add_executable` commands create rules to create binary outputs.
+The exact output location of the binaries can only be determined at
+generate-time because it can depend on the build-configuration and the
+link-language of linked dependencies etc.  ``TARGET_FILE``,
+``TARGET_LINKER_FILE`` and related expressions can be used to access the
+name and location of generated binaries.  These expressions do not work
+for ``OBJECT`` libraries however, as there is no single file generated
+by such libraries which is relevant to the expressions.
+
+There are three kinds of output artifacts that may be build by targets
+as detailed in the following sections.  Their classification differs
+between DLL platforms and non-DLL platforms.  All Windows-based
+systems including Cygwin are DLL platforms.
+
+.. _`Runtime Output Artifacts`:
+
+Runtime Output Artifacts
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+A *runtime* output artifact of a buildsystem target may be:
+
+* The executable file (e.g. ``.exe``) of an executable target
+  created by the :command:`add_executable` command.
+
+* On DLL platforms: the executable file (e.g. ``.dll``) of a shared
+  library target created by the :command:`add_library` command
+  with the ``SHARED`` option.
+
+The :prop_tgt:`RUNTIME_OUTPUT_DIRECTORY` and :prop_tgt:`RUNTIME_OUTPUT_NAME`
+target properties may be used to control runtime output artifact locations
+and names in the build tree.
+
+.. _`Library Output Artifacts`:
+
+Library Output Artifacts
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+A *library* output artifact of a buildsystem target may be:
+
+* The loadable module file (e.g. ``.dll`` or ``.so``) of a module
+  library target created by the :command:`add_library` command
+  with the ``MODULE`` option.
+
+* On non-DLL platforms: the shared library file (e.g. ``.so`` or ``.dylib``)
+  of a shared library target created by the :command:`add_library`
+  command with the ``SHARED`` option.
+
+The :prop_tgt:`LIBRARY_OUTPUT_DIRECTORY` and :prop_tgt:`LIBRARY_OUTPUT_NAME`
+target properties may be used to control library output artifact locations
+and names in the build tree.
+
+.. _`Archive Output Artifacts`:
+
+Archive Output Artifacts
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+An *archive* output artifact of a buildsystem target may be:
+
+* The static library file (e.g. ``.lib`` or ``.a``) of a static
+  library target created by the :command:`add_library` command
+  with the ``STATIC`` option.
+
+* On DLL platforms: the import library file (e.g. ``.lib``) of a shared
+  library target created by the :command:`add_library` command
+  with the ``SHARED`` option.  This file is only guaranteed to exist if
+  the library exports at least one unmanaged symbol.
+
+* On DLL platforms: the import library file (e.g. ``.lib``) of an
+  executable target created by the :command:`add_executable` command
+  when its :prop_tgt:`ENABLE_EXPORTS` target property is set.
+
+* On AIX: the linker import file (e.g. ``.imp``) of an executable target
+  created by the :command:`add_executable` command when its
+  :prop_tgt:`ENABLE_EXPORTS` target property is set.
+
+The :prop_tgt:`ARCHIVE_OUTPUT_DIRECTORY` and :prop_tgt:`ARCHIVE_OUTPUT_NAME`
+target properties may be used to control archive output artifact locations
+and names in the build tree.
+
+Directory-Scoped Commands
+-------------------------
+
+The :command:`target_include_directories`,
+:command:`target_compile_definitions` and
+:command:`target_compile_options` commands have an effect on only one
+target at a time.  The commands :command:`add_compile_definitions`,
+:command:`add_compile_options` and :command:`include_directories` have
+a similar function, but operate at directory scope instead of target
+scope for convenience.
+
+.. _`Build Configurations`:
+
+Build Configurations
+====================
+
+Configurations determine specifications for a certain type of build, such
+as ``Release`` or ``Debug``.  The way this is specified depends on the type
+of :manual:`generator <cmake-generators(7)>` being used.  For single
+configuration generators like  :ref:`Makefile Generators` and
+:generator:`Ninja`, the configuration is specified at configure time by the
+:variable:`CMAKE_BUILD_TYPE` variable. For multi-configuration generators
+like :ref:`Visual Studio <Visual Studio Generators>`, :generator:`Xcode`, and
+:generator:`Ninja Multi-Config`, the configuration is chosen by the user at
+build time and :variable:`CMAKE_BUILD_TYPE` is ignored.  In the
+multi-configuration case, the set of *available* configurations is specified
+at configure time by the :variable:`CMAKE_CONFIGURATION_TYPES` variable,
+but the actual configuration used cannot be known until the build stage.
+This difference is often misunderstood, leading to problematic code like the
+following:
+
+.. code-block:: cmake
+
+  # WARNING: This is wrong for multi-config generators because they don't use
+  #          and typically don't even set CMAKE_BUILD_TYPE
+  string(TOLOWER ${CMAKE_BUILD_TYPE} build_type)
+  if (build_type STREQUAL debug)
+    target_compile_definitions(exe1 PRIVATE DEBUG_BUILD)
+  endif()
+
+:manual:`Generator expressions <cmake-generator-expressions(7)>` should be
+used instead to handle configuration-specific logic correctly, regardless of
+the generator used.  For example:
+
+.. code-block:: cmake
+
+  # Works correctly for both single and multi-config generators
+  target_compile_definitions(exe1 PRIVATE
+    $<$<CONFIG:Debug>:DEBUG_BUILD>
+  )
+
+In the presence of :prop_tgt:`IMPORTED` targets, the content of
+:prop_tgt:`MAP_IMPORTED_CONFIG_DEBUG <MAP_IMPORTED_CONFIG_<CONFIG>>` is also
+accounted for by the above ``$<CONFIG:Debug>`` expression.
+
+
+Case Sensitivity
+----------------
+
+:variable:`CMAKE_BUILD_TYPE` and :variable:`CMAKE_CONFIGURATION_TYPES` are
+just like other variables in that any string comparisons made with their
+values will be case-sensitive.  The ``$<CONFIG>`` generator expression also
+preserves the casing of the configuration as set by the user or CMake defaults.
+For example:
+
+.. code-block:: cmake
+
+  # NOTE: Don't use these patterns, they are for illustration purposes only.
+
+  set(CMAKE_BUILD_TYPE Debug)
+  if(CMAKE_BUILD_TYPE STREQUAL DEBUG)
+    # ... will never get here, "Debug" != "DEBUG"
+  endif()
+  add_custom_target(print_config ALL
+    # Prints "Config is Debug" in this single-config case
+    COMMAND ${CMAKE_COMMAND} -E echo "Config is $<CONFIG>"
+    VERBATIM
+  )
+
+  set(CMAKE_CONFIGURATION_TYPES Debug Release)
+  if(DEBUG IN_LIST CMAKE_CONFIGURATION_TYPES)
+    # ... will never get here, "Debug" != "DEBUG"
+  endif()
+
+In contrast, CMake treats the configuration type case-insensitively when
+using it internally in places that modify behavior based on the configuration.
+For example, the ``$<CONFIG:Debug>`` generator expression will evaluate to 1
+for a configuration of not only ``Debug``, but also ``DEBUG``, ``debug`` or
+even ``DeBuG``.  Therefore, you can specify configuration types in
+:variable:`CMAKE_BUILD_TYPE` and :variable:`CMAKE_CONFIGURATION_TYPES` with
+any mixture of upper and lowercase, although there are strong conventions
+(see the next section).  If you must test the value in string comparisons,
+always convert the value to upper or lowercase first and adjust the test
+accordingly.
+
+Default And Custom Configurations
+---------------------------------
+
+By default, CMake defines a number of standard configurations:
+
+* ``Debug``
+* ``Release``
+* ``RelWithDebInfo``
+* ``MinSizeRel``
+
+In multi-config generators, the :variable:`CMAKE_CONFIGURATION_TYPES` variable
+will be populated with (potentially a subset of) the above list by default,
+unless overridden by the project or user.  The actual configuration used is
+selected by the user at build time.
+
+For single-config generators, the configuration is specified with the
+:variable:`CMAKE_BUILD_TYPE` variable at configure time and cannot be changed
+at build time.  The default value will often be none of the above standard
+configurations and will instead be an empty string.  A common misunderstanding
+is that this is the same as ``Debug``, but that is not the case.  Users should
+always explicitly specify the build type instead to avoid this common problem.
+
+The above standard configuration types provide reasonable behavior on most
+platforms, but they can be extended to provide other types.  Each configuration
+defines a set of compiler and linker flag variables for the language in use.
+These variables follow the convention :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>`,
+where ``<CONFIG>`` is always the uppercase configuration name.  When defining
+a custom configuration type, make sure these variables are set appropriately,
+typically as cache variables.
+
+
+Pseudo Targets
+==============
+
+Some target types do not represent outputs of the buildsystem, but only inputs
+such as external dependencies, aliases or other non-build artifacts.  Pseudo
+targets are not represented in the generated buildsystem.
+
+.. _`Imported Targets`:
+
+Imported Targets
+----------------
+
+An :prop_tgt:`IMPORTED` target represents a pre-existing dependency.  Usually
+such targets are defined by an upstream package and should be treated as
+immutable. After declaring an :prop_tgt:`IMPORTED` target one can adjust its
+target properties by using the customary commands such as
+:command:`target_compile_definitions`, :command:`target_include_directories`,
+:command:`target_compile_options` or :command:`target_link_libraries` just like
+with any other regular target.
+
+:prop_tgt:`IMPORTED` targets may have the same usage requirement properties
+populated as binary targets, such as
+:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES`,
+:prop_tgt:`INTERFACE_COMPILE_DEFINITIONS`,
+:prop_tgt:`INTERFACE_COMPILE_OPTIONS`,
+:prop_tgt:`INTERFACE_LINK_LIBRARIES`, and
+:prop_tgt:`INTERFACE_POSITION_INDEPENDENT_CODE`.
+
+The :prop_tgt:`LOCATION` may also be read from an IMPORTED target, though there
+is rarely reason to do so.  Commands such as :command:`add_custom_command` can
+transparently use an :prop_tgt:`IMPORTED` :prop_tgt:`EXECUTABLE <TYPE>` target
+as a ``COMMAND`` executable.
+
+The scope of the definition of an :prop_tgt:`IMPORTED` target is the directory
+where it was defined.  It may be accessed and used from subdirectories, but
+not from parent directories or sibling directories.  The scope is similar to
+the scope of a cmake variable.
+
+It is also possible to define a ``GLOBAL`` :prop_tgt:`IMPORTED` target which is
+accessible globally in the buildsystem.
+
+See the :manual:`cmake-packages(7)` manual for more on creating packages
+with :prop_tgt:`IMPORTED` targets.
+
+.. _`Alias Targets`:
+
+Alias Targets
+-------------
+
+An ``ALIAS`` target is a name which may be used interchangeably with
+a binary target name in read-only contexts.  A primary use-case for ``ALIAS``
+targets is for example or unit test executables accompanying a library, which
+may be part of the same buildsystem or built separately based on user
+configuration.
+
+.. code-block:: cmake
+
+  add_library(lib1 lib1.cpp)
+  install(TARGETS lib1 EXPORT lib1Export ${dest_args})
+  install(EXPORT lib1Export NAMESPACE Upstream:: ${other_args})
+
+  add_library(Upstream::lib1 ALIAS lib1)
+
+In another directory, we can link unconditionally to the ``Upstream::lib1``
+target, which may be an :prop_tgt:`IMPORTED` target from a package, or an
+``ALIAS`` target if built as part of the same buildsystem.
+
+.. code-block:: cmake
+
+  if (NOT TARGET Upstream::lib1)
+    find_package(lib1 REQUIRED)
+  endif()
+  add_executable(exe1 exe1.cpp)
+  target_link_libraries(exe1 Upstream::lib1)
+
+``ALIAS`` targets are not mutable, installable or exportable.  They are
+entirely local to the buildsystem description.  A name can be tested for
+whether it is an ``ALIAS`` name by reading the :prop_tgt:`ALIASED_TARGET`
+property from it:
+
+.. code-block:: cmake
+
+  get_target_property(_aliased Upstream::lib1 ALIASED_TARGET)
+  if(_aliased)
+    message(STATUS "The name Upstream::lib1 is an ALIAS for ${_aliased}.")
+  endif()
+
+.. _`Interface Libraries`:
+
+Interface Libraries
+-------------------
+
+An ``INTERFACE`` library target does not compile sources and does not
+produce a library artifact on disk, so it has no :prop_tgt:`LOCATION`.
+
+It may specify usage requirements such as
+:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES`,
+:prop_tgt:`INTERFACE_COMPILE_DEFINITIONS`,
+:prop_tgt:`INTERFACE_COMPILE_OPTIONS`,
+:prop_tgt:`INTERFACE_LINK_LIBRARIES`,
+:prop_tgt:`INTERFACE_SOURCES`,
+and :prop_tgt:`INTERFACE_POSITION_INDEPENDENT_CODE`.
+Only the ``INTERFACE`` modes of the :command:`target_include_directories`,
+:command:`target_compile_definitions`, :command:`target_compile_options`,
+:command:`target_sources`, and :command:`target_link_libraries` commands
+may be used with ``INTERFACE`` libraries.
+
+Since CMake 3.19, an ``INTERFACE`` library target may optionally contain
+source files.  An interface library that contains source files will be
+included as a build target in the generated buildsystem.  It does not
+compile sources, but may contain custom commands to generate other sources.
+Additionally, IDEs will show the source files as part of the target for
+interactive reading and editing.
+
+A primary use-case for ``INTERFACE`` libraries is header-only libraries.
+
+.. code-block:: cmake
+
+  add_library(Eigen INTERFACE
+    src/eigen.h
+    src/vector.h
+    src/matrix.h
+    )
+  target_include_directories(Eigen INTERFACE
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
+    $<INSTALL_INTERFACE:include/Eigen>
+  )
+
+  add_executable(exe1 exe1.cpp)
+  target_link_libraries(exe1 Eigen)
+
+Here, the usage requirements from the ``Eigen`` target are consumed and used
+when compiling, but it has no effect on linking.
+
+Another use-case is to employ an entirely target-focussed design for usage
+requirements:
+
+.. code-block:: cmake
+
+  add_library(pic_on INTERFACE)
+  set_property(TARGET pic_on PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE ON)
+  add_library(pic_off INTERFACE)
+  set_property(TARGET pic_off PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE OFF)
+
+  add_library(enable_rtti INTERFACE)
+  target_compile_options(enable_rtti INTERFACE
+    $<$<OR:$<COMPILER_ID:GNU>,$<COMPILER_ID:Clang>>:-rtti>
+  )
+
+  add_executable(exe1 exe1.cpp)
+  target_link_libraries(exe1 pic_on enable_rtti)
+
+This way, the build specification of ``exe1`` is expressed entirely as linked
+targets, and the complexity of compiler-specific flags is encapsulated in an
+``INTERFACE`` library target.
+
+``INTERFACE`` libraries may be installed and exported.  Any content they refer
+to must be installed separately:
+
+.. code-block:: cmake
+
+  set(Eigen_headers
+    src/eigen.h
+    src/vector.h
+    src/matrix.h
+    )
+  add_library(Eigen INTERFACE ${Eigen_headers})
+  target_include_directories(Eigen INTERFACE
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
+    $<INSTALL_INTERFACE:include/Eigen>
+  )
+
+  install(TARGETS Eigen EXPORT eigenExport)
+  install(EXPORT eigenExport NAMESPACE Upstream::
+    DESTINATION lib/cmake/Eigen
+  )
+  install(FILES ${Eigen_headers}
+    DESTINATION include/Eigen
+  )
diff --git a/share/cmake-3.22/Help/manual/cmake-commands.7.rst b/share/cmake-3.22/Help/manual/cmake-commands.7.rst
new file mode 100644
index 0000000..036fa8f
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-commands.7.rst
@@ -0,0 +1,174 @@
+.. cmake-manual-description: CMake Language Command Reference
+
+cmake-commands(7)
+*****************
+
+.. only:: html
+
+   .. contents::
+
+Scripting Commands
+==================
+
+These commands are always available.
+
+.. toctree::
+   :maxdepth: 1
+
+   /command/break
+   /command/cmake_host_system_information
+   /command/cmake_language
+   /command/cmake_minimum_required
+   /command/cmake_parse_arguments
+   /command/cmake_path
+   /command/cmake_policy
+   /command/configure_file
+   /command/continue
+   /command/else
+   /command/elseif
+   /command/endforeach
+   /command/endfunction
+   /command/endif
+   /command/endmacro
+   /command/endwhile
+   /command/execute_process
+   /command/file
+   /command/find_file
+   /command/find_library
+   /command/find_package
+   /command/find_path
+   /command/find_program
+   /command/foreach
+   /command/function
+   /command/get_cmake_property
+   /command/get_directory_property
+   /command/get_filename_component
+   /command/get_property
+   /command/if
+   /command/include
+   /command/include_guard
+   /command/list
+   /command/macro
+   /command/mark_as_advanced
+   /command/math
+   /command/message
+   /command/option
+   /command/return
+   /command/separate_arguments
+   /command/set
+   /command/set_directory_properties
+   /command/set_property
+   /command/site_name
+   /command/string
+   /command/unset
+   /command/variable_watch
+   /command/while
+
+Project Commands
+================
+
+These commands are available only in CMake projects.
+
+.. toctree::
+   :maxdepth: 1
+
+   /command/add_compile_definitions
+   /command/add_compile_options
+   /command/add_custom_command
+   /command/add_custom_target
+   /command/add_definitions
+   /command/add_dependencies
+   /command/add_executable
+   /command/add_library
+   /command/add_link_options
+   /command/add_subdirectory
+   /command/add_test
+   /command/aux_source_directory
+   /command/build_command
+   /command/create_test_sourcelist
+   /command/define_property
+   /command/enable_language
+   /command/enable_testing
+   /command/export
+   /command/fltk_wrap_ui
+   /command/get_source_file_property
+   /command/get_target_property
+   /command/get_test_property
+   /command/include_directories
+   /command/include_external_msproject
+   /command/include_regular_expression
+   /command/install
+   /command/link_directories
+   /command/link_libraries
+   /command/load_cache
+   /command/project
+   /command/remove_definitions
+   /command/set_source_files_properties
+   /command/set_target_properties
+   /command/set_tests_properties
+   /command/source_group
+   /command/target_compile_definitions
+   /command/target_compile_features
+   /command/target_compile_options
+   /command/target_include_directories
+   /command/target_link_directories
+   /command/target_link_libraries
+   /command/target_link_options
+   /command/target_precompile_headers
+   /command/target_sources
+   /command/try_compile
+   /command/try_run
+
+.. _`CTest Commands`:
+
+CTest Commands
+==============
+
+These commands are available only in CTest scripts.
+
+.. toctree::
+   :maxdepth: 1
+
+   /command/ctest_build
+   /command/ctest_configure
+   /command/ctest_coverage
+   /command/ctest_empty_binary_directory
+   /command/ctest_memcheck
+   /command/ctest_read_custom_files
+   /command/ctest_run_script
+   /command/ctest_sleep
+   /command/ctest_start
+   /command/ctest_submit
+   /command/ctest_test
+   /command/ctest_update
+   /command/ctest_upload
+
+Deprecated Commands
+===================
+
+These commands are deprecated and are only made available to maintain
+backward compatibility.  The documentation of each command states the
+CMake version in which it was deprecated.  Do not use these commands
+in new code.
+
+.. toctree::
+   :maxdepth: 1
+
+   /command/build_name
+   /command/exec_program
+   /command/export_library_dependencies
+   /command/install_files
+   /command/install_programs
+   /command/install_targets
+   /command/load_command
+   /command/make_directory
+   /command/output_required_files
+   /command/qt_wrap_cpp
+   /command/qt_wrap_ui
+   /command/remove
+   /command/subdir_depends
+   /command/subdirs
+   /command/use_mangled_mesa
+   /command/utility_source
+   /command/variable_requires
+   /command/write_file
diff --git a/share/cmake-3.22/Help/manual/cmake-compile-features.7.rst b/share/cmake-3.22/Help/manual/cmake-compile-features.7.rst
new file mode 100644
index 0000000..67b0f6e
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-compile-features.7.rst
@@ -0,0 +1,282 @@
+.. cmake-manual-description: CMake Compile Features Reference
+
+cmake-compile-features(7)
+*************************
+
+.. only:: html
+
+   .. contents::
+
+Introduction
+============
+
+Project source code may depend on, or be conditional on, the availability
+of certain features of the compiler.  There are three use-cases which arise:
+`Compile Feature Requirements`_, `Optional Compile Features`_
+and `Conditional Compilation Options`_.
+
+While features are typically specified in programming language standards,
+CMake provides a primary user interface based on granular handling of
+the features, not the language standard that introduced the feature.
+
+The :prop_gbl:`CMAKE_C_KNOWN_FEATURES`, :prop_gbl:`CMAKE_CUDA_KNOWN_FEATURES`,
+and :prop_gbl:`CMAKE_CXX_KNOWN_FEATURES` global properties contain all the
+features known to CMake, regardless of compiler support for the feature.
+The :variable:`CMAKE_C_COMPILE_FEATURES`, :variable:`CMAKE_CUDA_COMPILE_FEATURES`
+, and :variable:`CMAKE_CXX_COMPILE_FEATURES` variables contain all features
+CMake knows are known to the compiler, regardless of language standard
+or compile flags needed to use them.
+
+Features known to CMake are named mostly following the same convention
+as the Clang feature test macros.  There are some exceptions, such as
+CMake using ``cxx_final`` and ``cxx_override`` instead of the single
+``cxx_override_control`` used by Clang.
+
+Note that there are no separate compile features properties or variables for
+the ``OBJC`` or ``OBJCXX`` languages.  These are based off ``C`` or ``C++``
+respectively, so the properties and variables for their corresponding base
+language should be used instead.
+
+Compile Feature Requirements
+============================
+
+Compile feature requirements may be specified with the
+:command:`target_compile_features` command.  For example, if a target must
+be compiled with compiler support for the
+:prop_gbl:`cxx_constexpr <CMAKE_CXX_KNOWN_FEATURES>` feature:
+
+.. code-block:: cmake
+
+  add_library(mylib requires_constexpr.cpp)
+  target_compile_features(mylib PRIVATE cxx_constexpr)
+
+In processing the requirement for the ``cxx_constexpr`` feature,
+:manual:`cmake(1)` will ensure that the in-use C++ compiler is capable
+of the feature, and will add any necessary flags such as ``-std=gnu++11``
+to the compile lines of C++ files in the ``mylib`` target.  A
+``FATAL_ERROR`` is issued if the compiler is not capable of the
+feature.
+
+The exact compile flags and language standard are deliberately not part
+of the user interface for this use-case.  CMake will compute the
+appropriate compile flags to use by considering the features specified
+for each target.
+
+Such compile flags are added even if the compiler supports the
+particular feature without the flag. For example, the GNU compiler
+supports variadic templates (with a warning) even if ``-std=gnu++98`` is
+used.  CMake adds the ``-std=gnu++11`` flag if ``cxx_variadic_templates``
+is specified as a requirement.
+
+In the above example, ``mylib`` requires ``cxx_constexpr`` when it
+is built itself, but consumers of ``mylib`` are not required to use a
+compiler which supports ``cxx_constexpr``.  If the interface of
+``mylib`` does require the ``cxx_constexpr`` feature (or any other
+known feature), that may be specified with the ``PUBLIC`` or
+``INTERFACE`` signatures of :command:`target_compile_features`:
+
+.. code-block:: cmake
+
+  add_library(mylib requires_constexpr.cpp)
+  # cxx_constexpr is a usage-requirement
+  target_compile_features(mylib PUBLIC cxx_constexpr)
+
+  # main.cpp will be compiled with -std=gnu++11 on GNU for cxx_constexpr.
+  add_executable(myexe main.cpp)
+  target_link_libraries(myexe mylib)
+
+Feature requirements are evaluated transitively by consuming the link
+implementation.  See :manual:`cmake-buildsystem(7)` for more on
+transitive behavior of build properties and usage requirements.
+
+.. _`Requiring Language Standards`:
+
+Requiring Language Standards
+----------------------------
+
+In projects that use a large number of commonly available features from
+a particular language standard (e.g. C++ 11) one may specify a
+meta-feature (e.g. ``cxx_std_11``) that requires use of a compiler mode
+that is at minimum aware of that standard, but could be greater.
+This is simpler than specifying all the features individually, but does
+not guarantee the existence of any particular feature.
+Diagnosis of use of unsupported features will be delayed until compile time.
+
+For example, if C++ 11 features are used extensively in a project's
+header files, then clients must use a compiler mode that is no less
+than C++ 11.  This can be requested with the code:
+
+.. code-block:: cmake
+
+  target_compile_features(mylib PUBLIC cxx_std_11)
+
+In this example, CMake will ensure the compiler is invoked in a mode
+of at-least C++ 11 (or C++ 14, C++ 17, ...), adding flags such as
+``-std=gnu++11`` if necessary.  This applies to sources within ``mylib``
+as well as any dependents (that may include headers from ``mylib``).
+
+Availability of Compiler Extensions
+-----------------------------------
+
+The :prop_tgt:`<LANG>_EXTENSIONS` target property defaults to the compiler's
+default (see :variable:`CMAKE_<LANG>_EXTENSIONS_DEFAULT`). Note that because
+most compilers enable extensions by default, this may expose portability bugs
+in user code or in the headers of third-party dependencies.
+
+:prop_tgt:`<LANG>_EXTENSIONS` used to default to ``ON``. See :policy:`CMP0128`.
+
+Optional Compile Features
+=========================
+
+Compile features may be preferred if available, without creating a hard
+requirement.   This can be achieved by *not* specifying features with
+:command:`target_compile_features` and instead checking the compiler
+capabilities with preprocessor conditions in project code.
+
+In this use-case, the project may wish to establish a particular language
+standard if available from the compiler, and use preprocessor conditions
+to detect the features actually available.  A language standard may be
+established by `Requiring Language Standards`_ using
+:command:`target_compile_features` with meta-features like ``cxx_std_11``,
+or by setting the :prop_tgt:`CXX_STANDARD` target property or
+:variable:`CMAKE_CXX_STANDARD` variable.
+
+See also policy :policy:`CMP0120` and legacy documentation on
+:ref:`Example Usage <WCDH Example Usage>` of the deprecated
+:module:`WriteCompilerDetectionHeader` module.
+
+Conditional Compilation Options
+===============================
+
+Libraries may provide entirely different header files depending on
+requested compiler features.
+
+For example, a header at ``with_variadics/interface.h`` may contain:
+
+.. code-block:: c++
+
+  template<int I, int... Is>
+  struct Interface;
+
+  template<int I>
+  struct Interface<I>
+  {
+    static int accumulate()
+    {
+      return I;
+    }
+  };
+
+  template<int I, int... Is>
+  struct Interface
+  {
+    static int accumulate()
+    {
+      return I + Interface<Is...>::accumulate();
+    }
+  };
+
+while a header at ``no_variadics/interface.h`` may contain:
+
+.. code-block:: c++
+
+  template<int I1, int I2 = 0, int I3 = 0, int I4 = 0>
+  struct Interface
+  {
+    static int accumulate() { return I1 + I2 + I3 + I4; }
+  };
+
+It may be possible to write an abstraction ``interface.h`` header
+containing something like:
+
+.. code-block:: c++
+
+  #ifdef HAVE_CXX_VARIADIC_TEMPLATES
+  #include "with_variadics/interface.h"
+  #else
+  #include "no_variadics/interface.h"
+  #endif
+
+However this could be unmaintainable if there are many files to
+abstract. What is needed is to use alternative include directories
+depending on the compiler capabilities.
+
+CMake provides a ``COMPILE_FEATURES``
+:manual:`generator expression <cmake-generator-expressions(7)>` to implement
+such conditions.  This may be used with the build-property commands such as
+:command:`target_include_directories` and :command:`target_link_libraries`
+to set the appropriate :manual:`buildsystem <cmake-buildsystem(7)>`
+properties:
+
+.. code-block:: cmake
+
+  add_library(foo INTERFACE)
+  set(with_variadics ${CMAKE_CURRENT_SOURCE_DIR}/with_variadics)
+  set(no_variadics ${CMAKE_CURRENT_SOURCE_DIR}/no_variadics)
+  target_include_directories(foo
+    INTERFACE
+      "$<$<COMPILE_FEATURES:cxx_variadic_templates>:${with_variadics}>"
+      "$<$<NOT:$<COMPILE_FEATURES:cxx_variadic_templates>>:${no_variadics}>"
+    )
+
+Consuming code then simply links to the ``foo`` target as usual and uses
+the feature-appropriate include directory
+
+.. code-block:: cmake
+
+  add_executable(consumer_with consumer_with.cpp)
+  target_link_libraries(consumer_with foo)
+  set_property(TARGET consumer_with CXX_STANDARD 11)
+
+  add_executable(consumer_no consumer_no.cpp)
+  target_link_libraries(consumer_no foo)
+
+Supported Compilers
+===================
+
+CMake is currently aware of the :prop_tgt:`C++ standards <CXX_STANDARD>`
+and :prop_gbl:`compile features <CMAKE_CXX_KNOWN_FEATURES>` available from
+the following :variable:`compiler ids <CMAKE_<LANG>_COMPILER_ID>` as of the
+versions specified for each:
+
+* ``AppleClang``: Apple Clang for Xcode versions 4.4+.
+* ``Clang``: Clang compiler versions 2.9+.
+* ``GNU``: GNU compiler versions 4.4+.
+* ``MSVC``: Microsoft Visual Studio versions 2010+.
+* ``SunPro``: Oracle SolarisStudio versions 12.4+.
+* ``Intel``: Intel compiler versions 12.1+.
+
+CMake is currently aware of the :prop_tgt:`C standards <C_STANDARD>`
+and :prop_gbl:`compile features <CMAKE_C_KNOWN_FEATURES>` available from
+the following :variable:`compiler ids <CMAKE_<LANG>_COMPILER_ID>` as of the
+versions specified for each:
+
+* all compilers and versions listed above for C++.
+* ``GNU``: GNU compiler versions 3.4+
+
+CMake is currently aware of the :prop_tgt:`C++ standards <CXX_STANDARD>` and
+their associated meta-features (e.g. ``cxx_std_11``) available from the
+following :variable:`compiler ids <CMAKE_<LANG>_COMPILER_ID>` as of the
+versions specified for each:
+
+* ``Cray``: Cray Compiler Environment version 8.1+.
+* ``Fujitsu``: Fujitsu HPC compiler 4.0+.
+* ``PGI``: PGI version 12.10+.
+* ``NVHPC``: NVIDIA HPC compilers version 11.0+.
+* ``TI``: Texas Instruments compiler.
+* ``XL``: IBM XL version 10.1+.
+
+CMake is currently aware of the :prop_tgt:`C standards <C_STANDARD>` and
+their associated meta-features (e.g. ``c_std_99``) available from the
+following :variable:`compiler ids <CMAKE_<LANG>_COMPILER_ID>` as of the
+versions specified for each:
+
+* all compilers and versions listed above with only meta-features for C++.
+
+CMake is currently aware of the :prop_tgt:`CUDA standards <CUDA_STANDARD>` and
+their associated meta-features (e.g. ``cuda_std_11``) available from the
+following :variable:`compiler ids <CMAKE_<LANG>_COMPILER_ID>` as of the
+versions specified for each:
+
+* ``Clang``: Clang compiler 5.0+.
+* ``NVIDIA``: NVIDIA nvcc compiler 7.5+.
diff --git a/share/cmake-3.22/Help/manual/cmake-developer.7.rst b/share/cmake-3.22/Help/manual/cmake-developer.7.rst
new file mode 100644
index 0000000..fe146de
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-developer.7.rst
@@ -0,0 +1,501 @@
+.. cmake-manual-description: CMake Developer Reference
+
+cmake-developer(7)
+******************
+
+.. only:: html
+
+   .. contents::
+
+Introduction
+============
+
+This manual is intended for reference by developers working with
+:manual:`cmake-language(7)` code, whether writing their own modules,
+authoring their own build systems, or working on CMake itself.
+
+See https://cmake.org/get-involved/ to get involved in development of
+CMake upstream.  It includes links to contribution instructions, which
+in turn link to developer guides for CMake itself.
+
+.. _`Find Modules`:
+
+Find Modules
+============
+
+A "find module" is a ``Find<PackageName>.cmake`` file to be loaded by the
+:command:`find_package` command when invoked for ``<PackageName>``.
+
+The primary task of a find module is to determine whether a package is
+available, set the ``<PackageName>_FOUND`` variable to reflect this and
+provide any variables, macros and imported targets required to use the
+package.  A find module is useful in cases where an upstream library does
+not provide a :ref:`config file package <Config File Packages>`.
+
+The traditional approach is to use variables for everything, including
+libraries and executables: see the `Standard Variable Names`_ section
+below.  This is what most of the existing find modules provided by CMake
+do.
+
+The more modern approach is to behave as much like
+:ref:`config file packages <Config File Packages>` files as possible, by
+providing :ref:`imported target <Imported targets>`.  This has the advantage
+of propagating :ref:`Target Usage Requirements` to consumers.
+
+In either case (or even when providing both variables and imported
+targets), find modules should provide backwards compatibility with old
+versions that had the same name.
+
+A FindFoo.cmake module will typically be loaded by the command::
+
+  find_package(Foo [major[.minor[.patch[.tweak]]]]
+               [EXACT] [QUIET] [REQUIRED]
+               [[COMPONENTS] [components...]]
+               [OPTIONAL_COMPONENTS components...]
+               [NO_POLICY_SCOPE])
+
+See the :command:`find_package` documentation for details on what
+variables are set for the find module.  Most of these are dealt with by
+using :module:`FindPackageHandleStandardArgs`.
+
+Briefly, the module should only locate versions of the package
+compatible with the requested version, as described by the
+``Foo_FIND_VERSION`` family of variables.  If ``Foo_FIND_QUIETLY`` is
+set to true, it should avoid printing messages, including anything
+complaining about the package not being found.  If ``Foo_FIND_REQUIRED``
+is set to true, the module should issue a ``FATAL_ERROR`` if the package
+cannot be found.  If neither are set to true, it should print a
+non-fatal message if it cannot find the package.
+
+Packages that find multiple semi-independent parts (like bundles of
+libraries) should search for the components listed in
+``Foo_FIND_COMPONENTS`` if it is set , and only set ``Foo_FOUND`` to
+true if for each searched-for component ``<c>`` that was not found,
+``Foo_FIND_REQUIRED_<c>`` is not set to true.  The ``HANDLE_COMPONENTS``
+argument of ``find_package_handle_standard_args()`` can be used to
+implement this.
+
+If ``Foo_FIND_COMPONENTS`` is not set, which modules are searched for
+and required is up to the find module, but should be documented.
+
+For internal implementation, it is a generally accepted convention that
+variables starting with underscore are for temporary use only.
+
+
+.. _`CMake Developer Standard Variable Names`:
+
+Standard Variable Names
+-----------------------
+
+For a ``FindXxx.cmake`` module that takes the approach of setting
+variables (either instead of or in addition to creating imported
+targets), the following variable names should be used to keep things
+consistent between Find modules.  Note that all variables start with
+``Xxx_``, which (unless otherwise noted) must match exactly the name
+of the ``FindXxx.cmake`` file, including upper/lowercase.
+This prefix on the variable names ensures that they do not conflict with
+variables of other Find modules.  The same pattern should also be followed
+for any macros, functions and imported targets defined by the Find module.
+
+``Xxx_INCLUDE_DIRS``
+  The final set of include directories listed in one variable for use by
+  client code. This should not be a cache entry (note that this also means
+  this variable should not be used as the result variable of a
+  :command:`find_path` command - see ``Xxx_INCLUDE_DIR`` below for that).
+
+``Xxx_LIBRARIES``
+  The libraries to use with the module.  These may be CMake targets, full
+  absolute paths to a library binary or the name of a library that the
+  linker must find in its search path.  This should not be a cache entry
+  (note that this also means this variable should not be used as the
+  result variable of a :command:`find_library` command - see
+  ``Xxx_LIBRARY`` below for that).
+
+``Xxx_DEFINITIONS``
+  The compile definitions to use when compiling code that uses the module.
+  This really shouldn't include options such as ``-DHAS_JPEG`` that a client
+  source-code file uses to decide whether to ``#include <jpeg.h>``
+
+``Xxx_EXECUTABLE``
+  The full absolute path to an executable.  In this case, ``Xxx`` might not
+  be the name of the module, it might be the name of the tool (usually
+  converted to all uppercase), assuming that tool has such a well-known name
+  that it is unlikely that another tool with the same name exists.  It would
+  be appropriate to use this as the result variable of a
+  :command:`find_program` command.
+
+``Xxx_YYY_EXECUTABLE``
+  Similar to ``Xxx_EXECUTABLE`` except here the ``Xxx`` is always the module
+  name and ``YYY`` is the tool name (again, usually fully uppercase).
+  Prefer this form if the tool name is not very widely known or has the
+  potential  to clash with another tool.  For greater consistency, also
+  prefer this form if the module provides more than one executable.
+
+``Xxx_LIBRARY_DIRS``
+  Optionally, the final set of library directories listed in one
+  variable for use by client code. This should not be a cache entry.
+
+``Xxx_ROOT_DIR``
+  Where to find the base directory of the module.
+
+``Xxx_VERSION_VV``
+  Variables of this form specify whether the ``Xxx`` module being provided
+  is version ``VV`` of the module.  There should not be more than one
+  variable of this form set to true for a given module.  For example, a
+  module ``Barry`` might have evolved over many years and gone through a
+  number of different major versions.  Version 3 of the ``Barry`` module
+  might set the variable ``Barry_VERSION_3`` to true, whereas an older
+  version of the module might set ``Barry_VERSION_2`` to true instead.
+  It would be an error for both ``Barry_VERSION_3`` and ``Barry_VERSION_2``
+  to both be set to true.
+
+``Xxx_WRAP_YY``
+  When a variable of this form is set to false, it indicates that the
+  relevant wrapping command should not be used.  The wrapping command
+  depends on the module, it may be implied by the module name or it might
+  be specified by the ``YY`` part of the variable.
+
+``Xxx_Yy_FOUND``
+  For variables of this form, ``Yy`` is the name of a component for the
+  module.  It should match exactly one of the valid component names that
+  may be passed to the :command:`find_package` command for the module.
+  If a variable of this form is set to false, it means that the ``Yy``
+  component of module ``Xxx`` was not found or is not available.
+  Variables of this form would typically be used for optional components
+  so that the caller can check whether an optional component is available.
+
+``Xxx_FOUND``
+  When the :command:`find_package` command returns to the caller, this
+  variable will be set to true if the module was deemed to have been found
+  successfully.
+
+``Xxx_NOT_FOUND_MESSAGE``
+  Should be set by config-files in the case that it has set
+  ``Xxx_FOUND`` to FALSE.  The contained message will be printed by the
+  :command:`find_package` command and by
+  :command:`find_package_handle_standard_args` to inform the user about the
+  problem.  Use this instead of calling :command:`message` directly to
+  report a reason for failing to find the module or package.
+
+``Xxx_RUNTIME_LIBRARY_DIRS``
+  Optionally, the runtime library search path for use when running an
+  executable linked to shared libraries.  The list should be used by
+  user code to create the ``PATH`` on windows or ``LD_LIBRARY_PATH`` on
+  UNIX.  This should not be a cache entry.
+
+``Xxx_VERSION``
+  The full version string of the package found, if any.  Note that many
+  existing modules provide ``Xxx_VERSION_STRING`` instead.
+
+``Xxx_VERSION_MAJOR``
+  The major version of the package found, if any.
+
+``Xxx_VERSION_MINOR``
+  The minor version of the package found, if any.
+
+``Xxx_VERSION_PATCH``
+  The patch version of the package found, if any.
+
+The following names should not usually be used in ``CMakeLists.txt`` files.
+They are intended for use by Find modules to specify and cache the locations
+of specific files or directories.  Users are typically able to set and edit
+these variables to control the behavior of Find modules (like entering the
+path to a library manually):
+
+``Xxx_LIBRARY``
+  The path of the library.  Use this form only when the module provides a
+  single library.  It is appropriate to use this as the result variable
+  in a :command:`find_library` command.
+
+``Xxx_Yy_LIBRARY``
+  The path of library ``Yy`` provided by the module ``Xxx``.  Use this form
+  when the module provides more than one library or where other modules may
+  also provide a library of the same name. It is also appropriate to use
+  this form as the result variable in a :command:`find_library` command.
+
+``Xxx_INCLUDE_DIR``
+  When the module provides only a single library, this variable can be used
+  to specify where to find headers for using the library (or more accurately,
+  the path that consumers of the library should add to their header search
+  path).  It would be appropriate to use this as the result variable in a
+  :command:`find_path` command.
+
+``Xxx_Yy_INCLUDE_DIR``
+  If the module provides more than one library or where other modules may
+  also provide a library of the same name, this form is recommended for
+  specifying where to find headers for using library ``Yy`` provided by
+  the module.  Again, it would be appropriate to use this as the result
+  variable in a :command:`find_path` command.
+
+To prevent users being overwhelmed with settings to configure, try to
+keep as many options as possible out of the cache, leaving at least one
+option which can be used to disable use of the module, or locate a
+not-found library (e.g. ``Xxx_ROOT_DIR``).  For the same reason, mark
+most cache options as advanced.  For packages which provide both debug
+and release binaries, it is common to create cache variables with a
+``_LIBRARY_<CONFIG>`` suffix, such as ``Foo_LIBRARY_RELEASE`` and
+``Foo_LIBRARY_DEBUG``.  The :module:`SelectLibraryConfigurations` module
+can be helpful for such cases.
+
+While these are the standard variable names, you should provide
+backwards compatibility for any old names that were actually in use.
+Make sure you comment them as deprecated, so that no-one starts using
+them.
+
+
+A Sample Find Module
+--------------------
+
+We will describe how to create a simple find module for a library ``Foo``.
+
+The top of the module should begin with a license notice, followed by
+a blank line, and then followed by a :ref:`Bracket Comment`.  The comment
+should begin with ``.rst:`` to indicate that the rest of its content is
+reStructuredText-format documentation.  For example:
+
+::
+
+  # Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+  # file Copyright.txt or https://cmake.org/licensing for details.
+
+  #[=======================================================================[.rst:
+  FindFoo
+  -------
+
+  Finds the Foo library.
+
+  Imported Targets
+  ^^^^^^^^^^^^^^^^
+
+  This module provides the following imported targets, if found:
+
+  ``Foo::Foo``
+    The Foo library
+
+  Result Variables
+  ^^^^^^^^^^^^^^^^
+
+  This will define the following variables:
+
+  ``Foo_FOUND``
+    True if the system has the Foo library.
+  ``Foo_VERSION``
+    The version of the Foo library which was found.
+  ``Foo_INCLUDE_DIRS``
+    Include directories needed to use Foo.
+  ``Foo_LIBRARIES``
+    Libraries needed to link to Foo.
+
+  Cache Variables
+  ^^^^^^^^^^^^^^^
+
+  The following cache variables may also be set:
+
+  ``Foo_INCLUDE_DIR``
+    The directory containing ``foo.h``.
+  ``Foo_LIBRARY``
+    The path to the Foo library.
+
+  #]=======================================================================]
+
+The module documentation consists of:
+
+* An underlined heading specifying the module name.
+
+* A simple description of what the module finds.
+  More description may be required for some packages.  If there are
+  caveats or other details users of the module should be aware of,
+  specify them here.
+
+* A section listing imported targets provided by the module, if any.
+
+* A section listing result variables provided by the module.
+
+* Optionally a section listing cache variables used by the module, if any.
+
+If the package provides any macros or functions, they should be listed in
+an additional section, but can be documented by additional ``.rst:``
+comment blocks immediately above where those macros or functions are defined.
+
+The find module implementation may begin below the documentation block.
+Now the actual libraries and so on have to be found.  The code here will
+obviously vary from module to module (dealing with that, after all, is the
+point of find modules), but there tends to be a common pattern for libraries.
+
+First, we try to use ``pkg-config`` to find the library.  Note that we
+cannot rely on this, as it may not be available, but it provides a good
+starting point.
+
+.. code-block:: cmake
+
+  find_package(PkgConfig)
+  pkg_check_modules(PC_Foo QUIET Foo)
+
+This should define some variables starting ``PC_Foo_`` that contain the
+information from the ``Foo.pc`` file.
+
+Now we need to find the libraries and include files; we use the
+information from ``pkg-config`` to provide hints to CMake about where to
+look.
+
+.. code-block:: cmake
+
+  find_path(Foo_INCLUDE_DIR
+    NAMES foo.h
+    PATHS ${PC_Foo_INCLUDE_DIRS}
+    PATH_SUFFIXES Foo
+  )
+  find_library(Foo_LIBRARY
+    NAMES foo
+    PATHS ${PC_Foo_LIBRARY_DIRS}
+  )
+
+Alternatively, if the library is available with multiple configurations, you can
+use :module:`SelectLibraryConfigurations` to automatically set the
+``Foo_LIBRARY`` variable instead:
+
+.. code-block:: cmake
+
+  find_library(Foo_LIBRARY_RELEASE
+    NAMES foo
+    PATHS ${PC_Foo_LIBRARY_DIRS}/Release
+  )
+  find_library(Foo_LIBRARY_DEBUG
+    NAMES foo
+    PATHS ${PC_Foo_LIBRARY_DIRS}/Debug
+  )
+
+  include(SelectLibraryConfigurations)
+  select_library_configurations(Foo)
+
+If you have a good way of getting the version (from a header file, for
+example), you can use that information to set ``Foo_VERSION`` (although
+note that find modules have traditionally used ``Foo_VERSION_STRING``,
+so you may want to set both).  Otherwise, attempt to use the information
+from ``pkg-config``
+
+.. code-block:: cmake
+
+  set(Foo_VERSION ${PC_Foo_VERSION})
+
+Now we can use :module:`FindPackageHandleStandardArgs` to do most of the
+rest of the work for us
+
+.. code-block:: cmake
+
+  include(FindPackageHandleStandardArgs)
+  find_package_handle_standard_args(Foo
+    FOUND_VAR Foo_FOUND
+    REQUIRED_VARS
+      Foo_LIBRARY
+      Foo_INCLUDE_DIR
+    VERSION_VAR Foo_VERSION
+  )
+
+This will check that the ``REQUIRED_VARS`` contain values (that do not
+end in ``-NOTFOUND``) and set ``Foo_FOUND`` appropriately.  It will also
+cache those values.  If ``Foo_VERSION`` is set, and a required version
+was passed to :command:`find_package`, it will check the requested version
+against the one in ``Foo_VERSION``.  It will also print messages as
+appropriate; note that if the package was found, it will print the
+contents of the first required variable to indicate where it was found.
+
+At this point, we have to provide a way for users of the find module to
+link to the library or libraries that were found.  There are two
+approaches, as discussed in the `Find Modules`_ section above.  The
+traditional variable approach looks like
+
+.. code-block:: cmake
+
+  if(Foo_FOUND)
+    set(Foo_LIBRARIES ${Foo_LIBRARY})
+    set(Foo_INCLUDE_DIRS ${Foo_INCLUDE_DIR})
+    set(Foo_DEFINITIONS ${PC_Foo_CFLAGS_OTHER})
+  endif()
+
+If more than one library was found, all of them should be included in
+these variables (see the `Standard Variable Names`_ section for more
+information).
+
+When providing imported targets, these should be namespaced (hence the
+``Foo::`` prefix); CMake will recognize that values passed to
+:command:`target_link_libraries` that contain ``::`` in their name are
+supposed to be imported targets (rather than just library names), and
+will produce appropriate diagnostic messages if that target does not
+exist (see policy :policy:`CMP0028`).
+
+.. code-block:: cmake
+
+  if(Foo_FOUND AND NOT TARGET Foo::Foo)
+    add_library(Foo::Foo UNKNOWN IMPORTED)
+    set_target_properties(Foo::Foo PROPERTIES
+      IMPORTED_LOCATION "${Foo_LIBRARY}"
+      INTERFACE_COMPILE_OPTIONS "${PC_Foo_CFLAGS_OTHER}"
+      INTERFACE_INCLUDE_DIRECTORIES "${Foo_INCLUDE_DIR}"
+    )
+  endif()
+
+One thing to note about this is that the ``INTERFACE_INCLUDE_DIRECTORIES`` and
+similar properties should only contain information about the target itself, and
+not any of its dependencies.  Instead, those dependencies should also be
+targets, and CMake should be told that they are dependencies of this target.
+CMake will then combine all the necessary information automatically.
+
+The type of the :prop_tgt:`IMPORTED` target created in the
+:command:`add_library` command can always be specified as ``UNKNOWN``
+type.  This simplifies the code in cases where static or shared variants may
+be found, and CMake will determine the type by inspecting the files.
+
+If the library is available with multiple configurations, the
+:prop_tgt:`IMPORTED_CONFIGURATIONS` target property should also be
+populated:
+
+.. code-block:: cmake
+
+  if(Foo_FOUND)
+    if (NOT TARGET Foo::Foo)
+      add_library(Foo::Foo UNKNOWN IMPORTED)
+    endif()
+    if (Foo_LIBRARY_RELEASE)
+      set_property(TARGET Foo::Foo APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS RELEASE
+      )
+      set_target_properties(Foo::Foo PROPERTIES
+        IMPORTED_LOCATION_RELEASE "${Foo_LIBRARY_RELEASE}"
+      )
+    endif()
+    if (Foo_LIBRARY_DEBUG)
+      set_property(TARGET Foo::Foo APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS DEBUG
+      )
+      set_target_properties(Foo::Foo PROPERTIES
+        IMPORTED_LOCATION_DEBUG "${Foo_LIBRARY_DEBUG}"
+      )
+    endif()
+    set_target_properties(Foo::Foo PROPERTIES
+      INTERFACE_COMPILE_OPTIONS "${PC_Foo_CFLAGS_OTHER}"
+      INTERFACE_INCLUDE_DIRECTORIES "${Foo_INCLUDE_DIR}"
+    )
+  endif()
+
+The ``RELEASE`` variant should be listed first in the property
+so that the variant is chosen if the user uses a configuration which is
+not an exact match for any listed ``IMPORTED_CONFIGURATIONS``.
+
+Most of the cache variables should be hidden in the ``ccmake`` interface unless
+the user explicitly asks to edit them.
+
+.. code-block:: cmake
+
+  mark_as_advanced(
+    Foo_INCLUDE_DIR
+    Foo_LIBRARY
+  )
+
+If this module replaces an older version, you should set compatibility variables
+to cause the least disruption possible.
+
+.. code-block:: cmake
+
+  # compatibility variables
+  set(Foo_VERSION_STRING ${Foo_VERSION})
diff --git a/share/cmake-3.22/Help/manual/cmake-env-variables.7.rst b/share/cmake-3.22/Help/manual/cmake-env-variables.7.rst
new file mode 100644
index 0000000..0799fdd
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-env-variables.7.rst
@@ -0,0 +1,103 @@
+.. cmake-manual-description: CMake Environment Variables Reference
+
+cmake-env-variables(7)
+**********************
+
+.. only:: html
+
+   .. contents::
+
+This page lists environment variables that have special
+meaning to CMake.
+
+For general information on environment variables, see the
+:ref:`Environment Variables <CMake Language Environment Variables>`
+section in the cmake-language manual.
+
+Environment Variables that Change Behavior
+==========================================
+
+.. toctree::
+   :maxdepth: 1
+
+   /envvar/CMAKE_PREFIX_PATH
+
+Environment Variables that Control the Build
+============================================
+
+.. toctree::
+   :maxdepth: 1
+
+   /envvar/CMAKE_APPLE_SILICON_PROCESSOR
+   /envvar/CMAKE_BUILD_PARALLEL_LEVEL
+   /envvar/CMAKE_BUILD_TYPE
+   /envvar/CMAKE_CONFIGURATION_TYPES
+   /envvar/CMAKE_CONFIG_TYPE
+   /envvar/CMAKE_EXPORT_COMPILE_COMMANDS
+   /envvar/CMAKE_GENERATOR
+   /envvar/CMAKE_GENERATOR_INSTANCE
+   /envvar/CMAKE_GENERATOR_PLATFORM
+   /envvar/CMAKE_GENERATOR_TOOLSET
+   /envvar/CMAKE_INSTALL_MODE
+   /envvar/CMAKE_LANG_COMPILER_LAUNCHER
+   /envvar/CMAKE_LANG_LINKER_LAUNCHER
+   /envvar/CMAKE_MSVCIDE_RUN_PATH
+   /envvar/CMAKE_NO_VERBOSE
+   /envvar/CMAKE_OSX_ARCHITECTURES
+   /envvar/CMAKE_TOOLCHAIN_FILE
+   /envvar/DESTDIR
+   /envvar/LDFLAGS
+   /envvar/MACOSX_DEPLOYMENT_TARGET
+   /envvar/PackageName_ROOT
+   /envvar/VERBOSE
+
+Environment Variables for Languages
+===================================
+
+.. toctree::
+   :maxdepth: 1
+
+   /envvar/ASM_DIALECT
+   /envvar/ASM_DIALECTFLAGS
+   /envvar/CC
+   /envvar/CFLAGS
+   /envvar/CSFLAGS
+   /envvar/CUDAARCHS
+   /envvar/CUDACXX
+   /envvar/CUDAFLAGS
+   /envvar/CUDAHOSTCXX
+   /envvar/CXX
+   /envvar/CXXFLAGS
+   /envvar/FC
+   /envvar/FFLAGS
+   /envvar/HIPCXX
+   /envvar/HIPFLAGS
+   /envvar/ISPC
+   /envvar/ISPCFLAGS
+   /envvar/OBJC
+   /envvar/OBJCXX
+   /envvar/RC
+   /envvar/RCFLAGS
+   /envvar/SWIFTC
+
+Environment Variables for CTest
+===============================
+
+.. toctree::
+   :maxdepth: 1
+
+   /envvar/CMAKE_CONFIG_TYPE
+   /envvar/CTEST_INTERACTIVE_DEBUG_MODE
+   /envvar/CTEST_OUTPUT_ON_FAILURE
+   /envvar/CTEST_PARALLEL_LEVEL
+   /envvar/CTEST_PROGRESS_OUTPUT
+   /envvar/CTEST_USE_LAUNCHERS_DEFAULT
+   /envvar/DASHBOARD_TEST_FROM_CTEST
+
+Environment Variables for the CMake curses interface
+====================================================
+
+.. toctree::
+   :maxdepth: 1
+
+   /envvar/CCMAKE_COLORS
diff --git a/share/cmake-3.22/Help/manual/cmake-file-api.7.rst b/share/cmake-3.22/Help/manual/cmake-file-api.7.rst
new file mode 100644
index 0000000..5e22ea9
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-file-api.7.rst
@@ -0,0 +1,1540 @@
+.. cmake-manual-description: CMake File-Based API
+
+cmake-file-api(7)
+*****************
+
+.. only:: html
+
+   .. contents::
+
+Introduction
+============
+
+CMake provides a file-based API that clients may use to get semantic
+information about the buildsystems CMake generates.  Clients may use
+the API by writing query files to a specific location in a build tree
+to request zero or more `Object Kinds`_.  When CMake generates the
+buildsystem in that build tree it will read the query files and write
+reply files for the client to read.
+
+The file-based API uses a ``<build>/.cmake/api/`` directory at the top
+of a build tree.  The API is versioned to support changes to the layout
+of files within the API directory.  API file layout versioning is
+orthogonal to the versioning of `Object Kinds`_ used in replies.
+This version of CMake supports only one API version, `API v1`_.
+
+API v1
+======
+
+API v1 is housed in the ``<build>/.cmake/api/v1/`` directory.
+It has the following subdirectories:
+
+``query/``
+  Holds query files written by clients.
+  These may be `v1 Shared Stateless Query Files`_,
+  `v1 Client Stateless Query Files`_, or `v1 Client Stateful Query Files`_.
+
+``reply/``
+  Holds reply files written by CMake whenever it runs to generate a build
+  system.  These are indexed by a `v1 Reply Index File`_ file that may
+  reference additional `v1 Reply Files`_.  CMake owns all reply files.
+  Clients must never remove them.
+
+  Clients may look for and read a reply index file at any time.
+  Clients may optionally create the ``reply/`` directory at any time
+  and monitor it for the appearance of a new reply index file.
+
+v1 Shared Stateless Query Files
+-------------------------------
+
+Shared stateless query files allow clients to share requests for
+major versions of the `Object Kinds`_ and get all requested versions
+recognized by the CMake that runs.
+
+Clients may create shared requests by creating empty files in the
+``v1/query/`` directory.  The form is::
+
+  <build>/.cmake/api/v1/query/<kind>-v<major>
+
+where ``<kind>`` is one of the `Object Kinds`_, ``-v`` is literal,
+and ``<major>`` is the major version number.
+
+Files of this form are stateless shared queries not owned by any specific
+client.  Once created they should not be removed without external client
+coordination or human intervention.
+
+v1 Client Stateless Query Files
+-------------------------------
+
+Client stateless query files allow clients to create owned requests for
+major versions of the `Object Kinds`_ and get all requested versions
+recognized by the CMake that runs.
+
+Clients may create owned requests by creating empty files in
+client-specific query subdirectories.  The form is::
+
+  <build>/.cmake/api/v1/query/client-<client>/<kind>-v<major>
+
+where ``client-`` is literal, ``<client>`` is a string uniquely
+identifying the client, ``<kind>`` is one of the `Object Kinds`_,
+``-v`` is literal, and ``<major>`` is the major version number.
+Each client must choose a unique ``<client>`` identifier via its
+own means.
+
+Files of this form are stateless queries owned by the client ``<client>``.
+The owning client may remove them at any time.
+
+v1 Client Stateful Query Files
+------------------------------
+
+Stateful query files allow clients to request a list of versions of
+each of the `Object Kinds`_ and get only the most recent version
+recognized by the CMake that runs.
+
+Clients may create owned stateful queries by creating ``query.json``
+files in client-specific query subdirectories.  The form is::
+
+  <build>/.cmake/api/v1/query/client-<client>/query.json
+
+where ``client-`` is literal, ``<client>`` is a string uniquely
+identifying the client, and ``query.json`` is literal.  Each client
+must choose a unique ``<client>`` identifier via its own means.
+
+``query.json`` files are stateful queries owned by the client ``<client>``.
+The owning client may update or remove them at any time.  When a
+given client installation is updated it may then update the stateful
+query it writes to build trees to request newer object versions.
+This can be used to avoid asking CMake to generate multiple object
+versions unnecessarily.
+
+A ``query.json`` file must contain a JSON object:
+
+.. code-block:: json
+
+  {
+    "requests": [
+      { "kind": "<kind>" , "version": 1 },
+      { "kind": "<kind>" , "version": { "major": 1, "minor": 2 } },
+      { "kind": "<kind>" , "version": [2, 1] },
+      { "kind": "<kind>" , "version": [2, { "major": 1, "minor": 2 }] },
+      { "kind": "<kind>" , "version": 1, "client": {} },
+      { "kind": "..." }
+    ],
+    "client": {}
+  }
+
+The members are:
+
+``requests``
+  A JSON array containing zero or more requests.  Each request is
+  a JSON object with members:
+
+  ``kind``
+    Specifies one of the `Object Kinds`_ to be included in the reply.
+
+  ``version``
+    Indicates the version(s) of the object kind that the client
+    understands.  Versions have major and minor components following
+    semantic version conventions.  The value must be
+
+    * a JSON integer specifying a (non-negative) major version number, or
+    * a JSON object containing ``major`` and (optionally) ``minor``
+      members specifying non-negative integer version components, or
+    * a JSON array whose elements are each one of the above.
+
+  ``client``
+    Optional member reserved for use by the client.  This value is
+    preserved in the reply written for the client in the
+    `v1 Reply Index File`_ but is otherwise ignored.  Clients may use
+    this to pass custom information with a request through to its reply.
+
+  For each requested object kind CMake will choose the *first* version
+  that it recognizes for that kind among those listed in the request.
+  The response will use the selected *major* version with the highest
+  *minor* version known to the running CMake for that major version.
+  Therefore clients should list all supported major versions in
+  preferred order along with the minimal minor version required
+  for each major version.
+
+``client``
+  Optional member reserved for use by the client.  This value is
+  preserved in the reply written for the client in the
+  `v1 Reply Index File`_ but is otherwise ignored.  Clients may use
+  this to pass custom information with a query through to its reply.
+
+Other ``query.json`` top-level members are reserved for future use.
+If present they are ignored for forward compatibility.
+
+v1 Reply Index File
+-------------------
+
+CMake writes an ``index-*.json`` file to the ``v1/reply/`` directory
+whenever it runs to generate a build system.  Clients must read the
+reply index file first and may read other `v1 Reply Files`_ only by
+following references.  The form of the reply index file name is::
+
+  <build>/.cmake/api/v1/reply/index-<unspecified>.json
+
+where ``index-`` is literal and ``<unspecified>`` is an unspecified
+name selected by CMake.  Whenever a new index file is generated it
+is given a new name and any old one is deleted.  During the short
+time between these steps there may be multiple index files present;
+the one with the largest name in lexicographic order is the current
+index file.
+
+The reply index file contains a JSON object:
+
+.. code-block:: json
+
+  {
+    "cmake": {
+      "version": {
+        "major": 3, "minor": 14, "patch": 0, "suffix": "",
+        "string": "3.14.0", "isDirty": false
+      },
+      "paths": {
+        "cmake": "/prefix/bin/cmake",
+        "ctest": "/prefix/bin/ctest",
+        "cpack": "/prefix/bin/cpack",
+        "root": "/prefix/share/cmake-3.14"
+      },
+      "generator": {
+        "multiConfig": false,
+        "name": "Unix Makefiles"
+      }
+    },
+    "objects": [
+      { "kind": "<kind>",
+        "version": { "major": 1, "minor": 0 },
+        "jsonFile": "<file>" },
+      { "...": "..." }
+    ],
+    "reply": {
+      "<kind>-v<major>": { "kind": "<kind>",
+                           "version": { "major": 1, "minor": 0 },
+                           "jsonFile": "<file>" },
+      "<unknown>": { "error": "unknown query file" },
+      "...": {},
+      "client-<client>": {
+        "<kind>-v<major>": { "kind": "<kind>",
+                             "version": { "major": 1, "minor": 0 },
+                             "jsonFile": "<file>" },
+        "<unknown>": { "error": "unknown query file" },
+        "...": {},
+        "query.json": {
+          "requests": [ {}, {}, {} ],
+          "responses": [
+            { "kind": "<kind>",
+              "version": { "major": 1, "minor": 0 },
+              "jsonFile": "<file>" },
+            { "error": "unknown query file" },
+            { "...": {} }
+          ],
+          "client": {}
+        }
+      }
+    }
+  }
+
+The members are:
+
+``cmake``
+  A JSON object containing information about the instance of CMake that
+  generated the reply.  It contains members:
+
+  ``version``
+    A JSON object specifying the version of CMake with members:
+
+    ``major``, ``minor``, ``patch``
+      Integer values specifying the major, minor, and patch version components.
+    ``suffix``
+      A string specifying the version suffix, if any, e.g. ``g0abc3``.
+    ``string``
+      A string specifying the full version in the format
+      ``<major>.<minor>.<patch>[-<suffix>]``.
+    ``isDirty``
+      A boolean indicating whether the version was built from a version
+      controlled source tree with local modifications.
+
+  ``paths``
+    A JSON object specifying paths to things that come with CMake.
+    It has members for ``cmake``, ``ctest``, and ``cpack`` whose values
+    are JSON strings specifying the absolute path to each tool,
+    represented with forward slashes.  It also has a ``root`` member for
+    the absolute path to the directory containing CMake resources like the
+    ``Modules/`` directory (see :variable:`CMAKE_ROOT`).
+
+  ``generator``
+    A JSON object describing the CMake generator used for the build.
+    It has members:
+
+    ``multiConfig``
+      A boolean specifying whether the generator supports multiple output
+      configurations.
+    ``name``
+      A string specifying the name of the generator.
+    ``platform``
+      If the generator supports :variable:`CMAKE_GENERATOR_PLATFORM`,
+      this is a string specifying the generator platform name.
+
+``objects``
+  A JSON array listing all versions of all `Object Kinds`_ generated
+  as part of the reply.  Each array entry is a
+  `v1 Reply File Reference`_.
+
+``reply``
+  A JSON object mirroring the content of the ``query/`` directory
+  that CMake loaded to produce the reply.  The members are of the form
+
+  ``<kind>-v<major>``
+    A member of this form appears for each of the
+    `v1 Shared Stateless Query Files`_ that CMake recognized as a
+    request for object kind ``<kind>`` with major version ``<major>``.
+    The value is a `v1 Reply File Reference`_ to the corresponding
+    reply file for that object kind and version.
+
+  ``<unknown>``
+    A member of this form appears for each of the
+    `v1 Shared Stateless Query Files`_ that CMake did not recognize.
+    The value is a JSON object with a single ``error`` member
+    containing a string with an error message indicating that the
+    query file is unknown.
+
+  ``client-<client>``
+    A member of this form appears for each client-owned directory
+    holding `v1 Client Stateless Query Files`_.
+    The value is a JSON object mirroring the content of the
+    ``query/client-<client>/`` directory.  The members are of the form:
+
+    ``<kind>-v<major>``
+      A member of this form appears for each of the
+      `v1 Client Stateless Query Files`_ that CMake recognized as a
+      request for object kind ``<kind>`` with major version ``<major>``.
+      The value is a `v1 Reply File Reference`_ to the corresponding
+      reply file for that object kind and version.
+
+    ``<unknown>``
+      A member of this form appears for each of the
+      `v1 Client Stateless Query Files`_ that CMake did not recognize.
+      The value is a JSON object with a single ``error`` member
+      containing a string with an error message indicating that the
+      query file is unknown.
+
+    ``query.json``
+      This member appears for clients using
+      `v1 Client Stateful Query Files`_.
+      If the ``query.json`` file failed to read or parse as a JSON object,
+      this member is a JSON object with a single ``error`` member
+      containing a string with an error message.  Otherwise, this member
+      is a JSON object mirroring the content of the ``query.json`` file.
+      The members are:
+
+      ``client``
+        A copy of the ``query.json`` file ``client`` member, if it exists.
+
+      ``requests``
+        A copy of the ``query.json`` file ``requests`` member, if it exists.
+
+      ``responses``
+        If the ``query.json`` file ``requests`` member is missing or invalid,
+        this member is a JSON object with a single ``error`` member
+        containing a string with an error message.  Otherwise, this member
+        contains a JSON array with a response for each entry of the
+        ``requests`` array, in the same order.  Each response is
+
+        * a JSON object with a single ``error`` member containing a string
+          with an error message, or
+        * a `v1 Reply File Reference`_ to the corresponding reply file for
+          the requested object kind and selected version.
+
+After reading the reply index file, clients may read the other
+`v1 Reply Files`_ it references.
+
+v1 Reply File Reference
+^^^^^^^^^^^^^^^^^^^^^^^
+
+The reply index file represents each reference to another reply file
+using a JSON object with members:
+
+``kind``
+  A string specifying one of the `Object Kinds`_.
+``version``
+  A JSON object with members ``major`` and ``minor`` specifying
+  integer version components of the object kind.
+``jsonFile``
+  A JSON string specifying a path relative to the reply index file
+  to another JSON file containing the object.
+
+v1 Reply Files
+--------------
+
+Reply files containing specific `Object Kinds`_ are written by CMake.
+The names of these files are unspecified and must not be interpreted
+by clients.  Clients must first read the `v1 Reply Index File`_ and
+and follow references to the names of the desired response objects.
+
+Reply files (including the index file) will never be replaced by
+files of the same name but different content.  This allows a client
+to read the files concurrently with a running CMake that may generate
+a new reply.  However, after generating a new reply CMake will attempt
+to remove reply files from previous runs that it did not just write.
+If a client attempts to read a reply file referenced by the index but
+finds the file missing, that means a concurrent CMake has generated
+a new reply.  The client may simply start again by reading the new
+reply index file.
+
+.. _`file-api object kinds`:
+
+Object Kinds
+============
+
+The CMake file-based API reports semantic information about the build
+system using the following kinds of JSON objects.  Each kind of object
+is versioned independently using semantic versioning with major and
+minor components.  Every kind of object has the form:
+
+.. code-block:: json
+
+  {
+    "kind": "<kind>",
+    "version": { "major": 1, "minor": 0 },
+    "...": {}
+  }
+
+The ``kind`` member is a string specifying the object kind name.
+The ``version`` member is a JSON object with ``major`` and ``minor``
+members specifying integer components of the object kind's version.
+Additional top-level members are specific to each object kind.
+
+Object Kind "codemodel"
+-----------------------
+
+The ``codemodel`` object kind describes the build system structure as
+modeled by CMake.
+
+There is only one ``codemodel`` object major version, version 2.
+Version 1 does not exist to avoid confusion with that from
+:manual:`cmake-server(7)` mode.
+
+"codemodel" version 2
+^^^^^^^^^^^^^^^^^^^^^
+
+``codemodel`` object version 2 is a JSON object:
+
+.. code-block:: json
+
+  {
+    "kind": "codemodel",
+    "version": { "major": 2, "minor": 2 },
+    "paths": {
+      "source": "/path/to/top-level-source-dir",
+      "build": "/path/to/top-level-build-dir"
+    },
+    "configurations": [
+      {
+        "name": "Debug",
+        "directories": [
+          {
+            "source": ".",
+            "build": ".",
+            "childIndexes": [ 1 ],
+            "projectIndex": 0,
+            "targetIndexes": [ 0 ],
+            "hasInstallRule": true,
+            "minimumCMakeVersion": {
+              "string": "3.14"
+            },
+            "jsonFile": "<file>"
+          },
+          {
+            "source": "sub",
+            "build": "sub",
+            "parentIndex": 0,
+            "projectIndex": 0,
+            "targetIndexes": [ 1 ],
+            "minimumCMakeVersion": {
+              "string": "3.14"
+            },
+            "jsonFile": "<file>"
+          }
+        ],
+        "projects": [
+          {
+            "name": "MyProject",
+            "directoryIndexes": [ 0, 1 ],
+            "targetIndexes": [ 0, 1 ]
+          }
+        ],
+        "targets": [
+          {
+            "name": "MyExecutable",
+            "directoryIndex": 0,
+            "projectIndex": 0,
+            "jsonFile": "<file>"
+          },
+          {
+            "name": "MyLibrary",
+            "directoryIndex": 1,
+            "projectIndex": 0,
+            "jsonFile": "<file>"
+          }
+        ]
+      }
+    ]
+  }
+
+The members specific to ``codemodel`` objects are:
+
+``paths``
+  A JSON object containing members:
+
+  ``source``
+    A string specifying the absolute path to the top-level source directory,
+    represented with forward slashes.
+
+  ``build``
+    A string specifying the absolute path to the top-level build directory,
+    represented with forward slashes.
+
+``configurations``
+  A JSON array of entries corresponding to available build configurations.
+  On single-configuration generators there is one entry for the value
+  of the :variable:`CMAKE_BUILD_TYPE` variable.  For multi-configuration
+  generators there is an entry for each configuration listed in the
+  :variable:`CMAKE_CONFIGURATION_TYPES` variable.
+  Each entry is a JSON object containing members:
+
+  ``name``
+    A string specifying the name of the configuration, e.g. ``Debug``.
+
+  ``directories``
+    A JSON array of entries each corresponding to a build system directory
+    whose source directory contains a ``CMakeLists.txt`` file.  The first
+    entry corresponds to the top-level directory.  Each entry is a
+    JSON object containing members:
+
+    ``source``
+      A string specifying the path to the source directory, represented
+      with forward slashes.  If the directory is inside the top-level
+      source directory then the path is specified relative to that
+      directory (with ``.`` for the top-level source directory itself).
+      Otherwise the path is absolute.
+
+    ``build``
+      A string specifying the path to the build directory, represented
+      with forward slashes.  If the directory is inside the top-level
+      build directory then the path is specified relative to that
+      directory (with ``.`` for the top-level build directory itself).
+      Otherwise the path is absolute.
+
+    ``parentIndex``
+      Optional member that is present when the directory is not top-level.
+      The value is an unsigned integer 0-based index of another entry in
+      the main ``directories`` array that corresponds to the parent
+      directory that added this directory as a subdirectory.
+
+    ``childIndexes``
+      Optional member that is present when the directory has subdirectories.
+      The value is a JSON array of entries corresponding to child directories
+      created by the :command:`add_subdirectory` or :command:`subdirs`
+      command.  Each entry is an unsigned integer 0-based index of another
+      entry in the main ``directories`` array.
+
+    ``projectIndex``
+      An unsigned integer 0-based index into the main ``projects`` array
+      indicating the build system project to which the this directory belongs.
+
+    ``targetIndexes``
+      Optional member that is present when the directory itself has targets,
+      excluding those belonging to subdirectories.  The value is a JSON
+      array of entries corresponding to the targets.  Each entry is an
+      unsigned integer 0-based index into the main ``targets`` array.
+
+    ``minimumCMakeVersion``
+      Optional member present when a minimum required version of CMake is
+      known for the directory.  This is the ``<min>`` version given to the
+      most local call to the :command:`cmake_minimum_required(VERSION)`
+      command in the directory itself or one of its ancestors.
+      The value is a JSON object with one member:
+
+      ``string``
+        A string specifying the minimum required version in the format::
+
+          <major>.<minor>[.<patch>[.<tweak>]][<suffix>]
+
+        Each component is an unsigned integer and the suffix may be an
+        arbitrary string.
+
+    ``hasInstallRule``
+      Optional member that is present with boolean value ``true`` when
+      the directory or one of its subdirectories contains any
+      :command:`install` rules, i.e. whether a ``make install``
+      or equivalent rule is available.
+
+    ``jsonFile``
+      A JSON string specifying a path relative to the codemodel file
+      to another JSON file containing a
+      `"codemodel" version 2 "directory" object`_.
+
+      This field was added in codemodel version 2.3.
+
+  ``projects``
+    A JSON array of entries corresponding to the top-level project
+    and sub-projects defined in the build system.  Each (sub-)project
+    corresponds to a source directory whose ``CMakeLists.txt`` file
+    calls the :command:`project` command with a project name different
+    from its parent directory.  The first entry corresponds to the
+    top-level project.
+
+    Each entry is a JSON object containing members:
+
+    ``name``
+      A string specifying the name given to the :command:`project` command.
+
+    ``parentIndex``
+      Optional member that is present when the project is not top-level.
+      The value is an unsigned integer 0-based index of another entry in
+      the main ``projects`` array that corresponds to the parent project
+      that added this project as a sub-project.
+
+    ``childIndexes``
+      Optional member that is present when the project has sub-projects.
+      The value is a JSON array of entries corresponding to the sub-projects.
+      Each entry is an unsigned integer 0-based index of another
+      entry in the main ``projects`` array.
+
+    ``directoryIndexes``
+      A JSON array of entries corresponding to build system directories
+      that are part of the project.  The first entry corresponds to the
+      top-level directory of the project.  Each entry is an unsigned
+      integer 0-based index into the main ``directories`` array.
+
+    ``targetIndexes``
+      Optional member that is present when the project itself has targets,
+      excluding those belonging to sub-projects.  The value is a JSON
+      array of entries corresponding to the targets.  Each entry is an
+      unsigned integer 0-based index into the main ``targets`` array.
+
+  ``targets``
+    A JSON array of entries corresponding to the build system targets.
+    Such targets are created by calls to :command:`add_executable`,
+    :command:`add_library`, and :command:`add_custom_target`, excluding
+    imported targets and interface libraries (which do not generate any
+    build rules).  Each entry is a JSON object containing members:
+
+    ``name``
+      A string specifying the target name.
+
+    ``id``
+      A string uniquely identifying the target.  This matches the ``id``
+      field in the file referenced by ``jsonFile``.
+
+    ``directoryIndex``
+      An unsigned integer 0-based index into the main ``directories`` array
+      indicating the build system directory in which the target is defined.
+
+    ``projectIndex``
+      An unsigned integer 0-based index into the main ``projects`` array
+      indicating the build system project in which the target is defined.
+
+    ``jsonFile``
+      A JSON string specifying a path relative to the codemodel file
+      to another JSON file containing a
+      `"codemodel" version 2 "target" object`_.
+
+"codemodel" version 2 "directory" object
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A codemodel "directory" object is referenced by a `"codemodel" version 2`_
+object's ``directories`` array.  Each "directory" object is a JSON object
+with members:
+
+``paths``
+  A JSON object containing members:
+
+  ``source``
+    A string specifying the path to the source directory, represented
+    with forward slashes.  If the directory is inside the top-level
+    source directory then the path is specified relative to that
+    directory (with ``.`` for the top-level source directory itself).
+    Otherwise the path is absolute.
+
+  ``build``
+    A string specifying the path to the build directory, represented
+    with forward slashes.  If the directory is inside the top-level
+    build directory then the path is specified relative to that
+    directory (with ``.`` for the top-level build directory itself).
+    Otherwise the path is absolute.
+
+``installers``
+  A JSON array of entries corresponding to :command:`install` rules.
+  Each entry is a JSON object containing members:
+
+  ``component``
+    A string specifying the component selected by the corresponding
+    :command:`install` command invocation.
+
+  ``destination``
+    Optional member that is present for specific ``type`` values below.
+    The value is a string specifying the install destination path.
+    The path may be absolute or relative to the install prefix.
+
+  ``paths``
+    Optional member that is present for specific ``type`` values below.
+    The value is a JSON array of entries corresponding to the paths
+    (files or directories) to be installed.  Each entry is one of:
+
+    * A string specifying the path from which a file or directory
+      is to be installed.  The portion of the path not preceded by
+      a ``/`` also specifies the path (name) to which the file
+      or directory is to be installed under the destination.
+
+    * A JSON object with members:
+
+      ``from``
+        A string specifying the path from which a file or directory
+        is to be installed.
+
+      ``to``
+        A string specifying the path to which the file or directory
+        is to be installed under the destination.
+
+    In both cases the paths are represented with forward slashes.  If
+    the "from" path is inside the top-level directory documented by the
+    corresponding ``type`` value, then the path is specified relative
+    to that directory.  Otherwise the path is absolute.
+
+  ``type``
+    A string specifying the type of installation rule.  The value is one
+    of the following, with some variants providing additional members:
+
+    ``file``
+      An :command:`install(FILES)` or :command:`install(PROGRAMS)` call.
+      The ``destination`` and ``paths`` members are populated, with paths
+      under the top-level *source* directory expressed relative to it.
+      The ``isOptional`` member may exist.
+      This type has no additional members.
+
+    ``directory``
+      An :command:`install(DIRECTORY)` call.
+      The ``destination`` and ``paths`` members are populated, with paths
+      under the top-level *source* directory expressed relative to it.
+      The ``isOptional`` member may exist.
+      This type has no additional members.
+
+    ``target``
+      An :command:`install(TARGETS)` call.
+      The ``destination`` and ``paths`` members are populated, with paths
+      under the top-level *build* directory expressed relative to it.
+      The ``isOptional`` member may exist.
+      This type has additional members ``targetId``, ``targetIndex``,
+      ``targetIsImportLibrary``, and ``targetInstallNamelink``.
+
+    ``export``
+      An :command:`install(EXPORT)` call.
+      The ``destination`` and ``paths`` members are populated, with paths
+      under the top-level *build* directory expressed relative to it.
+      The ``paths`` entries refer to files generated automatically by
+      CMake for installation, and their actual values are considered
+      private implementation details.
+      This type has additional members ``exportName`` and ``exportTargets``.
+
+    ``script``
+      An :command:`install(SCRIPT)` call.
+      This type has additional member ``scriptFile``.
+
+    ``code``
+      An :command:`install(CODE)` call.
+      This type has no additional members.
+
+    ``importedRuntimeArtifacts``
+      An :command:`install(IMPORTED_RUNTIME_ARTIFACTS)` call.
+      The ``destination`` member is populated. The ``isOptional`` member may
+      exist. This type has no additional members.
+
+    ``runtimeDependencySet``
+      An :command:`install(RUNTIME_DEPENDENCY_SET)` call or an
+      :command:`install(TARGETS)` call with ``RUNTIME_DEPENDENCIES``. The
+      ``destination`` member is populated. This type has additional members
+      ``runtimeDependencySetName`` and ``runtimeDependencySetType``.
+
+  ``isExcludeFromAll``
+    Optional member that is present with boolean value ``true`` when
+    :command:`install` is called with the ``EXCLUDE_FROM_ALL`` option.
+
+  ``isForAllComponents``
+    Optional member that is present with boolean value ``true`` when
+    :command:`install(SCRIPT|CODE)` is called with the
+    ``ALL_COMPONENTS`` option.
+
+  ``isOptional``
+    Optional member that is present with boolean value ``true`` when
+    :command:`install` is called with the ``OPTIONAL`` option.
+    This is allowed when ``type`` is ``file``, ``directory``, or ``target``.
+
+  ``targetId``
+    Optional member that is present when ``type`` is ``target``.
+    The value is a string uniquely identifying the target to be installed.
+    This matches the ``id`` member of the target in the main
+    "codemodel" object's ``targets`` array.
+
+  ``targetIndex``
+    Optional member that is present when ``type`` is ``target``.
+    The value is an unsigned integer 0-based index into the main "codemodel"
+    object's ``targets`` array for the target to be installed.
+
+  ``targetIsImportLibrary``
+    Optional member that is present when ``type`` is ``target`` and
+    the installer is for a Windows DLL import library file or for an
+    AIX linker import file.  If present, it has boolean value ``true``.
+
+  ``targetInstallNamelink``
+    Optional member that is present when ``type`` is ``target`` and
+    the installer corresponds to a target that may use symbolic links
+    to implement the :prop_tgt:`VERSION` and :prop_tgt:`SOVERSION`
+    target properties.
+    The value is a string indicating how the installer is supposed to
+    handle the symlinks: ``skip`` means the installer should skip the
+    symlinks and install only the real file, and ``only`` means the
+    installer should install only the symlinks and not the real file.
+    In all cases the ``paths`` member lists what it actually installs.
+
+  ``exportName``
+    Optional member that is present when ``type`` is ``export``.
+    The value is a string specifying the name of the export.
+
+  ``exportTargets``
+    Optional member that is present when ``type`` is ``export``.
+    The value is a JSON array of entries corresponding to the targets
+    included in the export.  Each entry is a JSON object with members:
+
+    ``id``
+      A string uniquely identifying the target.  This matches
+      the ``id`` member of the target in the main "codemodel"
+      object's ``targets`` array.
+
+    ``index``
+      An unsigned integer 0-based index into the main "codemodel"
+      object's ``targets`` array for the target.
+
+  ``runtimeDependencySetName``
+    Optional member that is present when ``type`` is ``runtimeDependencySet``
+    and the installer was created by an
+    :command:`install(RUNTIME_DEPENDENCY_SET)` call. The value is a string
+    specifying the name of the runtime dependency set that was installed.
+
+  ``runtimeDependencySetType``
+    Optional member that is present when ``type`` is ``runtimeDependencySet``.
+    The value is a string with one of the following values:
+
+    ``library``
+      Indicates that this installer installs dependencies that are not macOS
+      frameworks.
+
+    ``framework``
+      Indicates that this installer installs dependencies that are macOS
+      frameworks.
+
+  ``scriptFile``
+    Optional member that is present when ``type`` is ``script``.
+    The value is a string specifying the path to the script file on disk,
+    represented with forward slashes.  If the file is inside the top-level
+    source directory then the path is specified relative to that directory.
+    Otherwise the path is absolute.
+
+  ``backtrace``
+    Optional member that is present when a CMake language backtrace to
+    the :command:`install` or other command invocation that added this
+    installer is available.  The value is an unsigned integer 0-based
+    index into the ``backtraceGraph`` member's ``nodes`` array.
+
+``backtraceGraph``
+  A `"codemodel" version 2 "backtrace graph"`_ whose nodes are referenced
+  from ``backtrace`` members elsewhere in this "directory" object.
+
+"codemodel" version 2 "target" object
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A codemodel "target" object is referenced by a `"codemodel" version 2`_
+object's ``targets`` array.  Each "target" object is a JSON object
+with members:
+
+``name``
+  A string specifying the logical name of the target.
+
+``id``
+  A string uniquely identifying the target.  The format is unspecified
+  and should not be interpreted by clients.
+
+``type``
+  A string specifying the type of the target.  The value is one of
+  ``EXECUTABLE``, ``STATIC_LIBRARY``, ``SHARED_LIBRARY``,
+  ``MODULE_LIBRARY``, ``OBJECT_LIBRARY``, ``INTERFACE_LIBRARY``,
+  or ``UTILITY``.
+
+``backtrace``
+  Optional member that is present when a CMake language backtrace to
+  the command in the source code that created the target is available.
+  The value is an unsigned integer 0-based index into the
+  ``backtraceGraph`` member's ``nodes`` array.
+
+``folder``
+  Optional member that is present when the :prop_tgt:`FOLDER` target
+  property is set.  The value is a JSON object with one member:
+
+  ``name``
+    A string specifying the name of the target folder.
+
+``paths``
+  A JSON object containing members:
+
+  ``source``
+    A string specifying the path to the target's source directory,
+    represented with forward slashes.  If the directory is inside the
+    top-level source directory then the path is specified relative to
+    that directory (with ``.`` for the top-level source directory itself).
+    Otherwise the path is absolute.
+
+  ``build``
+    A string specifying the path to the target's build directory,
+    represented with forward slashes.  If the directory is inside the
+    top-level build directory then the path is specified relative to
+    that directory (with ``.`` for the top-level build directory itself).
+    Otherwise the path is absolute.
+
+``nameOnDisk``
+  Optional member that is present for executable and library targets
+  that are linked or archived into a single primary artifact.
+  The value is a string specifying the file name of that artifact on disk.
+
+``artifacts``
+  Optional member that is present for executable and library targets
+  that produce artifacts on disk meant for consumption by dependents.
+  The value is a JSON array of entries corresponding to the artifacts.
+  Each entry is a JSON object containing one member:
+
+  ``path``
+    A string specifying the path to the file on disk, represented with
+    forward slashes.  If the file is inside the top-level build directory
+    then the path is specified relative to that directory.
+    Otherwise the path is absolute.
+
+``isGeneratorProvided``
+  Optional member that is present with boolean value ``true`` if the
+  target is provided by CMake's build system generator rather than by
+  a command in the source code.
+
+``install``
+  Optional member that is present when the target has an :command:`install`
+  rule.  The value is a JSON object with members:
+
+  ``prefix``
+    A JSON object specifying the installation prefix.  It has one member:
+
+    ``path``
+      A string specifying the value of :variable:`CMAKE_INSTALL_PREFIX`.
+
+  ``destinations``
+    A JSON array of entries specifying an install destination path.
+    Each entry is a JSON object with members:
+
+    ``path``
+      A string specifying the install destination path.  The path may
+      be absolute or relative to the install prefix.
+
+    ``backtrace``
+      Optional member that is present when a CMake language backtrace to
+      the :command:`install` command invocation that specified this
+      destination is available.  The value is an unsigned integer 0-based
+      index into the ``backtraceGraph`` member's ``nodes`` array.
+
+``link``
+  Optional member that is present for executables and shared library
+  targets that link into a runtime binary.  The value is a JSON object
+  with members describing the link step:
+
+  ``language``
+    A string specifying the language (e.g. ``C``, ``CXX``, ``Fortran``)
+    of the toolchain is used to invoke the linker.
+
+  ``commandFragments``
+    Optional member that is present when fragments of the link command
+    line invocation are available.  The value is a JSON array of entries
+    specifying ordered fragments.  Each entry is a JSON object with members:
+
+    ``fragment``
+      A string specifying a fragment of the link command line invocation.
+      The value is encoded in the build system's native shell format.
+
+    ``role``
+      A string specifying the role of the fragment's content:
+
+      * ``flags``: link flags.
+      * ``libraries``: link library file paths or flags.
+      * ``libraryPath``: library search path flags.
+      * ``frameworkPath``: macOS framework search path flags.
+
+  ``lto``
+    Optional member that is present with boolean value ``true``
+    when link-time optimization (a.k.a. interprocedural optimization
+    or link-time code generation) is enabled.
+
+  ``sysroot``
+    Optional member that is present when the :variable:`CMAKE_SYSROOT_LINK`
+    or :variable:`CMAKE_SYSROOT` variable is defined.  The value is a
+    JSON object with one member:
+
+    ``path``
+      A string specifying the absolute path to the sysroot, represented
+      with forward slashes.
+
+``archive``
+  Optional member that is present for static library targets.  The value
+  is a JSON object with members describing the archive step:
+
+  ``commandFragments``
+    Optional member that is present when fragments of the archiver command
+    line invocation are available.  The value is a JSON array of entries
+    specifying the fragments.  Each entry is a JSON object with members:
+
+    ``fragment``
+      A string specifying a fragment of the archiver command line invocation.
+      The value is encoded in the build system's native shell format.
+
+    ``role``
+      A string specifying the role of the fragment's content:
+
+      * ``flags``: archiver flags.
+
+  ``lto``
+    Optional member that is present with boolean value ``true``
+    when link-time optimization (a.k.a. interprocedural optimization
+    or link-time code generation) is enabled.
+
+``dependencies``
+  Optional member that is present when the target depends on other targets.
+  The value is a JSON array of entries corresponding to the dependencies.
+  Each entry is a JSON object with members:
+
+  ``id``
+    A string uniquely identifying the target on which this target depends.
+    This matches the main ``id`` member of the other target.
+
+  ``backtrace``
+    Optional member that is present when a CMake language backtrace to
+    the :command:`add_dependencies`, :command:`target_link_libraries`,
+    or other command invocation that created this dependency is
+    available.  The value is an unsigned integer 0-based index into
+    the ``backtraceGraph`` member's ``nodes`` array.
+
+``sources``
+  A JSON array of entries corresponding to the target's source files.
+  Each entry is a JSON object with members:
+
+  ``path``
+    A string specifying the path to the source file on disk, represented
+    with forward slashes.  If the file is inside the top-level source
+    directory then the path is specified relative to that directory.
+    Otherwise the path is absolute.
+
+  ``compileGroupIndex``
+    Optional member that is present when the source is compiled.
+    The value is an unsigned integer 0-based index into the
+    ``compileGroups`` array.
+
+  ``sourceGroupIndex``
+    Optional member that is present when the source is part of a source
+    group either via the :command:`source_group` command or by default.
+    The value is an unsigned integer 0-based index into the
+    ``sourceGroups`` array.
+
+  ``isGenerated``
+    Optional member that is present with boolean value ``true`` if
+    the source is :prop_sf:`GENERATED`.
+
+  ``backtrace``
+    Optional member that is present when a CMake language backtrace to
+    the :command:`target_sources`, :command:`add_executable`,
+    :command:`add_library`, :command:`add_custom_target`, or other
+    command invocation that added this source to the target is
+    available.  The value is an unsigned integer 0-based index into
+    the ``backtraceGraph`` member's ``nodes`` array.
+
+``sourceGroups``
+  Optional member that is present when sources are grouped together by
+  the :command:`source_group` command or by default.  The value is a
+  JSON array of entries corresponding to the groups.  Each entry is
+  a JSON object with members:
+
+  ``name``
+    A string specifying the name of the source group.
+
+  ``sourceIndexes``
+    A JSON array listing the sources belonging to the group.
+    Each entry is an unsigned integer 0-based index into the
+    main ``sources`` array for the target.
+
+``compileGroups``
+  Optional member that is present when the target has sources that compile.
+  The value is a JSON array of entries corresponding to groups of sources
+  that all compile with the same settings.  Each entry is a JSON object
+  with members:
+
+  ``sourceIndexes``
+    A JSON array listing the sources belonging to the group.
+    Each entry is an unsigned integer 0-based index into the
+    main ``sources`` array for the target.
+
+  ``language``
+    A string specifying the language (e.g. ``C``, ``CXX``, ``Fortran``)
+    of the toolchain is used to compile the source file.
+
+  ``languageStandard``
+    Optional member that is present when the language standard is set
+    explicitly (e.g. via :prop_tgt:`CXX_STANDARD`) or implicitly by
+    compile features.  Each entry is a JSON object with two members:
+
+    ``backtraces``
+      Optional member that is present when a CMake language backtrace to
+      the ``<LANG>_STANDARD`` setting is available.  If the language
+      standard was set implicitly by compile features those are used as
+      the backtrace(s).  It's possible for multiple compile features to
+      require the same language standard so there could be multiple
+      backtraces. The value is a JSON array with each entry being an
+      unsigned integer 0-based index into the ``backtraceGraph``
+      member's ``nodes`` array.
+
+    ``standard``
+      String representing the language standard.
+
+    This field was added in codemodel version 2.2.
+
+  ``compileCommandFragments``
+    Optional member that is present when fragments of the compiler command
+    line invocation are available.  The value is a JSON array of entries
+    specifying ordered fragments.  Each entry is a JSON object with
+    one member:
+
+    ``fragment``
+      A string specifying a fragment of the compile command line invocation.
+      The value is encoded in the build system's native shell format.
+
+  ``includes``
+    Optional member that is present when there are include directories.
+    The value is a JSON array with an entry for each directory.  Each
+    entry is a JSON object with members:
+
+    ``path``
+      A string specifying the path to the include directory,
+      represented with forward slashes.
+
+    ``isSystem``
+      Optional member that is present with boolean value ``true`` if
+      the include directory is marked as a system include directory.
+
+    ``backtrace``
+      Optional member that is present when a CMake language backtrace to
+      the :command:`target_include_directories` or other command invocation
+      that added this include directory is available.  The value is
+      an unsigned integer 0-based index into the ``backtraceGraph``
+      member's ``nodes`` array.
+
+  ``precompileHeaders``
+    Optional member that is present when :command:`target_precompile_headers`
+    or other command invocations set :prop_tgt:`PRECOMPILE_HEADERS` on the
+    target.  The value is a JSON array with an entry for each header.  Each
+    entry is a JSON object with members:
+
+    ``header``
+      Full path to the precompile header file.
+
+    ``backtrace``
+      Optional member that is present when a CMake language backtrace to
+      the :command:`target_precompile_headers` or other command invocation
+      that added this precompiled header is available.  The value is an
+      unsigned integer 0-based index into the ``backtraceGraph`` member's
+      ``nodes`` array.
+
+    This field was added in codemodel version 2.1.
+
+  ``defines``
+    Optional member that is present when there are preprocessor definitions.
+    The value is a JSON array with an entry for each definition.  Each
+    entry is a JSON object with members:
+
+    ``define``
+      A string specifying the preprocessor definition in the format
+      ``<name>[=<value>]``, e.g. ``DEF`` or ``DEF=1``.
+
+    ``backtrace``
+      Optional member that is present when a CMake language backtrace to
+      the :command:`target_compile_definitions` or other command invocation
+      that added this preprocessor definition is available.  The value is
+      an unsigned integer 0-based index into the ``backtraceGraph``
+      member's ``nodes`` array.
+
+  ``sysroot``
+    Optional member that is present when the
+    :variable:`CMAKE_SYSROOT_COMPILE` or :variable:`CMAKE_SYSROOT`
+    variable is defined.  The value is a JSON object with one member:
+
+    ``path``
+      A string specifying the absolute path to the sysroot, represented
+      with forward slashes.
+
+``backtraceGraph``
+  A `"codemodel" version 2 "backtrace graph"`_ whose nodes are referenced
+  from ``backtrace`` members elsewhere in this "target" object.
+
+"codemodel" version 2 "backtrace graph"
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The ``backtraceGraph`` member of a `"codemodel" version 2 "directory" object`_,
+or `"codemodel" version 2 "target" object`_ is a JSON object describing a
+graph of backtraces.  Its nodes are referenced from ``backtrace`` members
+elsewhere in the containing object.  The backtrace graph object members are:
+
+``nodes``
+  A JSON array listing nodes in the backtrace graph.  Each entry
+  is a JSON object with members:
+
+  ``file``
+    An unsigned integer 0-based index into the backtrace ``files`` array.
+
+  ``line``
+    An optional member present when the node represents a line within
+    the file.  The value is an unsigned integer 1-based line number.
+
+  ``command``
+    An optional member present when the node represents a command
+    invocation within the file.  The value is an unsigned integer
+    0-based index into the backtrace ``commands`` array.
+
+  ``parent``
+    An optional member present when the node is not the bottom of
+    the call stack.  The value is an unsigned integer 0-based index
+    of another entry in the backtrace ``nodes`` array.
+
+``commands``
+  A JSON array listing command names referenced by backtrace nodes.
+  Each entry is a string specifying a command name.
+
+``files``
+  A JSON array listing CMake language files referenced by backtrace nodes.
+  Each entry is a string specifying the path to a file, represented
+  with forward slashes.  If the file is inside the top-level source
+  directory then the path is specified relative to that directory.
+  Otherwise the path is absolute.
+
+Object Kind "cache"
+-------------------
+
+The ``cache`` object kind lists cache entries.  These are the
+:ref:`CMake Language Variables` stored in the persistent cache
+(``CMakeCache.txt``) for the build tree.
+
+There is only one ``cache`` object major version, version 2.
+Version 1 does not exist to avoid confusion with that from
+:manual:`cmake-server(7)` mode.
+
+"cache" version 2
+^^^^^^^^^^^^^^^^^
+
+``cache`` object version 2 is a JSON object:
+
+.. code-block:: json
+
+  {
+    "kind": "cache",
+    "version": { "major": 2, "minor": 0 },
+    "entries": [
+      {
+        "name": "BUILD_SHARED_LIBS",
+        "value": "ON",
+        "type": "BOOL",
+        "properties": [
+          {
+            "name": "HELPSTRING",
+            "value": "Build shared libraries"
+          }
+        ]
+      },
+      {
+        "name": "CMAKE_GENERATOR",
+        "value": "Unix Makefiles",
+        "type": "INTERNAL",
+        "properties": [
+          {
+            "name": "HELPSTRING",
+            "value": "Name of generator."
+          }
+        ]
+      }
+    ]
+  }
+
+The members specific to ``cache`` objects are:
+
+``entries``
+  A JSON array whose entries are each a JSON object specifying a
+  cache entry.  The members of each entry are:
+
+  ``name``
+    A string specifying the name of the entry.
+
+  ``value``
+    A string specifying the value of the entry.
+
+  ``type``
+    A string specifying the type of the entry used by
+    :manual:`cmake-gui(1)` to choose a widget for editing.
+
+  ``properties``
+    A JSON array of entries specifying associated
+    :ref:`cache entry properties <Cache Entry Properties>`.
+    Each entry is a JSON object containing members:
+
+    ``name``
+      A string specifying the name of the cache entry property.
+
+    ``value``
+      A string specifying the value of the cache entry property.
+
+Object Kind "cmakeFiles"
+------------------------
+
+The ``cmakeFiles`` object kind lists files used by CMake while
+configuring and generating the build system.  These include the
+``CMakeLists.txt`` files as well as included ``.cmake`` files.
+
+There is only one ``cmakeFiles`` object major version, version 1.
+
+"cmakeFiles" version 1
+^^^^^^^^^^^^^^^^^^^^^^
+
+``cmakeFiles`` object version 1 is a JSON object:
+
+.. code-block:: json
+
+  {
+    "kind": "cmakeFiles",
+    "version": { "major": 1, "minor": 0 },
+    "paths": {
+      "build": "/path/to/top-level-build-dir",
+      "source": "/path/to/top-level-source-dir"
+    },
+    "inputs": [
+      {
+        "path": "CMakeLists.txt"
+      },
+      {
+        "isGenerated": true,
+        "path": "/path/to/top-level-build-dir/.../CMakeSystem.cmake"
+      },
+      {
+        "isExternal": true,
+        "path": "/path/to/external/third-party/module.cmake"
+      },
+      {
+        "isCMake": true,
+        "isExternal": true,
+        "path": "/path/to/cmake/Modules/CMakeGenericSystem.cmake"
+      }
+    ]
+  }
+
+The members specific to ``cmakeFiles`` objects are:
+
+``paths``
+  A JSON object containing members:
+
+  ``source``
+    A string specifying the absolute path to the top-level source directory,
+    represented with forward slashes.
+
+  ``build``
+    A string specifying the absolute path to the top-level build directory,
+    represented with forward slashes.
+
+``inputs``
+  A JSON array whose entries are each a JSON object specifying an input
+  file used by CMake when configuring and generating the build system.
+  The members of each entry are:
+
+  ``path``
+    A string specifying the path to an input file to CMake, represented
+    with forward slashes.  If the file is inside the top-level source
+    directory then the path is specified relative to that directory.
+    Otherwise the path is absolute.
+
+  ``isGenerated``
+    Optional member that is present with boolean value ``true``
+    if the path specifies a file that is under the top-level
+    build directory and the build is out-of-source.
+    This member is not available on in-source builds.
+
+  ``isExternal``
+    Optional member that is present with boolean value ``true``
+    if the path specifies a file that is not under the top-level
+    source or build directories.
+
+  ``isCMake``
+    Optional member that is present with boolean value ``true``
+    if the path specifies a file in the CMake installation.
+
+Object Kind "toolchains"
+------------------------
+
+The ``toolchains`` object kind lists properties of the toolchains used during
+the build.  These include the language, compiler path, ID, and version.
+
+There is only one ``toolchains`` object major version, version 1.
+
+"toolchains" version 1
+^^^^^^^^^^^^^^^^^^^^^^
+
+``toolchains`` object version 1 is a JSON object:
+
+.. code-block:: json
+
+  {
+    "kind": "toolchains",
+    "version": { "major": 1, "minor": 0 },
+    "toolchains": [
+      {
+        "language": "C",
+        "compiler": {
+          "path": "/usr/bin/cc",
+          "id": "GNU",
+          "version": "9.3.0",
+          "implicit": {
+            "includeDirectories": [
+              "/usr/lib/gcc/x86_64-linux-gnu/9/include",
+              "/usr/local/include",
+              "/usr/include/x86_64-linux-gnu",
+              "/usr/include"
+            ],
+            "linkDirectories": [
+              "/usr/lib/gcc/x86_64-linux-gnu/9",
+              "/usr/lib/x86_64-linux-gnu",
+              "/usr/lib",
+              "/lib/x86_64-linux-gnu",
+              "/lib"
+            ],
+            "linkFrameworkDirectories": [],
+            "linkLibraries": [ "gcc", "gcc_s", "c", "gcc", "gcc_s" ]
+          }
+        },
+        "sourceFileExtensions": [ "c", "m" ]
+      },
+      {
+        "language": "CXX",
+        "compiler": {
+          "path": "/usr/bin/c++",
+          "id": "GNU",
+          "version": "9.3.0",
+          "implicit": {
+            "includeDirectories": [
+              "/usr/include/c++/9",
+              "/usr/include/x86_64-linux-gnu/c++/9",
+              "/usr/include/c++/9/backward",
+              "/usr/lib/gcc/x86_64-linux-gnu/9/include",
+              "/usr/local/include",
+              "/usr/include/x86_64-linux-gnu",
+              "/usr/include"
+            ],
+            "linkDirectories": [
+              "/usr/lib/gcc/x86_64-linux-gnu/9",
+              "/usr/lib/x86_64-linux-gnu",
+              "/usr/lib",
+              "/lib/x86_64-linux-gnu",
+              "/lib"
+            ],
+            "linkFrameworkDirectories": [],
+            "linkLibraries": [
+              "stdc++", "m", "gcc_s", "gcc", "c", "gcc_s", "gcc"
+            ]
+          }
+        },
+        "sourceFileExtensions": [
+          "C", "M", "c++", "cc", "cpp", "cxx", "mm", "CPP"
+        ]
+      }
+    ]
+  }
+
+The members specific to ``toolchains`` objects are:
+
+``toolchains``
+  A JSON array whose entries are each a JSON object specifying a toolchain
+  associated with a particular language. The members of each entry are:
+
+  ``language``
+    A JSON string specifying the toolchain language, like C or CXX. Language
+    names are the same as language names that can be passed to the
+    :command:`project` command. Because CMake only supports a single toolchain
+    per language, this field can be used as a key.
+
+  ``compiler``
+    A JSON object containing members:
+
+    ``path``
+      Optional member that is present when the
+      :variable:`CMAKE_<LANG>_COMPILER` variable is defined for the current
+      language. Its value is a JSON string holding the path to the compiler.
+
+    ``id``
+      Optional member that is present when the
+      :variable:`CMAKE_<LANG>_COMPILER_ID` variable is defined for the current
+      language. Its value is a JSON string holding the ID (GNU, MSVC, etc.) of
+      the compiler.
+
+    ``version``
+      Optional member that is present when the
+      :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable is defined for the
+      current language. Its value is a JSON string holding the version of the
+      compiler.
+
+    ``target``
+      Optional member that is present when the
+      :variable:`CMAKE_<LANG>_COMPILER_TARGET` variable is defined for the
+      current language. Its value is a JSON string holding the cross-compiling
+      target of the compiler.
+
+    ``implicit``
+      A JSON object containing members:
+
+      ``includeDirectories``
+        Optional member that is present when the
+        :variable:`CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES` variable is
+        defined for the current language. Its value is a JSON array of JSON
+        strings where each string holds a path to an implicit include
+        directory for the compiler.
+
+      ``linkDirectories``
+        Optional member that is present when the
+        :variable:`CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES` variable is
+        defined for the current language. Its value is a JSON array of JSON
+        strings where each string holds a path to an implicit link directory
+        for the compiler.
+
+      ``linkFrameworkDirectories``
+        Optional member that is present when the
+        :variable:`CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES` variable
+        is defined for the current language. Its value is a JSON array of JSON
+        strings where each string holds a path to an implicit link framework
+        directory for the compiler.
+
+      ``linkLibraries``
+        Optional member that is present when the
+        :variable:`CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES` variable is defined
+        for the current language. Its value is a JSON array of JSON strings
+        where each string holds a path to an implicit link library for the
+        compiler.
+
+  ``sourceFileExtensions``
+    Optional member that is present when the
+    :variable:`CMAKE_<LANG>_SOURCE_FILE_EXTENSIONS` variable is defined for
+    the current language. Its value is a JSON array of JSON strings where each
+    each string holds a file extension (without the leading dot) for the
+    language.
diff --git a/share/cmake-3.22/Help/manual/cmake-generator-expressions.7.rst b/share/cmake-3.22/Help/manual/cmake-generator-expressions.7.rst
new file mode 100644
index 0000000..df13dd0
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-generator-expressions.7.rst
@@ -0,0 +1,1193 @@
+.. cmake-manual-description: CMake Generator Expressions
+
+cmake-generator-expressions(7)
+******************************
+
+.. only:: html
+
+   .. contents::
+
+Introduction
+============
+
+Generator expressions are evaluated during build system generation to produce
+information specific to each build configuration.
+
+Generator expressions are allowed in the context of many target properties,
+such as :prop_tgt:`LINK_LIBRARIES`, :prop_tgt:`INCLUDE_DIRECTORIES`,
+:prop_tgt:`COMPILE_DEFINITIONS` and others.  They may also be used when using
+commands to populate those properties, such as :command:`target_link_libraries`,
+:command:`target_include_directories`, :command:`target_compile_definitions`
+and others.
+
+They enable conditional linking, conditional definitions used when compiling,
+conditional include directories, and more.  The conditions may be based on
+the build configuration, target properties, platform information or any other
+queryable information.
+
+Generator expressions have the form ``$<...>``.  To avoid confusion, this page
+deviates from most of the CMake documentation in that it omits angular brackets
+``<...>`` around placeholders like ``condition``, ``string``, ``target``,
+among others.
+
+Generator expressions can be nested, as shown in most of the examples below.
+
+.. _`Boolean Generator Expressions`:
+
+Boolean Generator Expressions
+=============================
+
+Boolean expressions evaluate to either ``0`` or ``1``.
+They are typically used to construct the condition in a :ref:`conditional
+generator expression<Conditional Generator Expressions>`.
+
+Available boolean expressions are:
+
+Logical Operators
+-----------------
+
+.. genex:: $<BOOL:string>
+
+  Converts ``string`` to ``0`` or ``1``. Evaluates to ``0`` if any of the
+  following is true:
+
+  * ``string`` is empty,
+  * ``string`` is a case-insensitive equal of
+    ``0``, ``FALSE``, ``OFF``, ``N``, ``NO``, ``IGNORE``, or ``NOTFOUND``, or
+  * ``string`` ends in the suffix ``-NOTFOUND`` (case-sensitive).
+
+  Otherwise evaluates to ``1``.
+
+.. genex:: $<AND:conditions>
+
+  where ``conditions`` is a comma-separated list of boolean expressions.
+  Evaluates to ``1`` if all conditions are ``1``.
+  Otherwise evaluates to ``0``.
+
+.. genex:: $<OR:conditions>
+
+  where ``conditions`` is a comma-separated list of boolean expressions.
+  Evaluates to ``1`` if at least one of the conditions is ``1``.
+  Otherwise evaluates to ``0``.
+
+.. genex:: $<NOT:condition>
+
+  ``0`` if ``condition`` is ``1``, else ``1``.
+
+String Comparisons
+------------------
+
+.. genex:: $<STREQUAL:string1,string2>
+
+  ``1`` if ``string1`` and ``string2`` are equal, else ``0``.
+  The comparison is case-sensitive.  For a case-insensitive comparison,
+  combine with a :ref:`string transforming generator expression
+  <String Transforming Generator Expressions>`,
+
+  .. code-block:: cmake
+
+    $<STREQUAL:$<UPPER_CASE:${foo}>,"BAR"> # "1" if ${foo} is any of "BAR", "Bar", "bar", ...
+
+.. genex:: $<EQUAL:value1,value2>
+
+  ``1`` if ``value1`` and ``value2`` are numerically equal, else ``0``.
+
+.. genex:: $<IN_LIST:string,list>
+
+  .. versionadded:: 3.12
+
+  ``1`` if ``string`` is member of the semicolon-separated ``list``, else ``0``.
+  Uses case-sensitive comparisons.
+
+.. genex:: $<VERSION_LESS:v1,v2>
+
+  ``1`` if ``v1`` is a version less than ``v2``, else ``0``.
+
+.. genex:: $<VERSION_GREATER:v1,v2>
+
+  ``1`` if ``v1`` is a version greater than ``v2``, else ``0``.
+
+.. genex:: $<VERSION_EQUAL:v1,v2>
+
+  ``1`` if ``v1`` is the same version as ``v2``, else ``0``.
+
+.. genex:: $<VERSION_LESS_EQUAL:v1,v2>
+
+  .. versionadded:: 3.7
+
+  ``1`` if ``v1`` is a version less than or equal to ``v2``, else ``0``.
+
+.. genex:: $<VERSION_GREATER_EQUAL:v1,v2>
+
+  .. versionadded:: 3.7
+
+  ``1`` if ``v1`` is a version greater than or equal to ``v2``, else ``0``.
+
+Variable Queries
+----------------
+
+.. genex:: $<TARGET_EXISTS:target>
+
+  .. versionadded:: 3.12
+
+  ``1`` if ``target`` exists, else ``0``.
+
+.. genex:: $<CONFIG:cfgs>
+
+  ``1`` if config is any one of the entries in comma-separated list
+  ``cfgs``, else ``0``. This is a case-insensitive comparison. The mapping in
+  :prop_tgt:`MAP_IMPORTED_CONFIG_<CONFIG>` is also considered by this
+  expression when it is evaluated on a property on an :prop_tgt:`IMPORTED`
+  target.
+
+.. genex:: $<PLATFORM_ID:platform_ids>
+
+  where ``platform_ids`` is a comma-separated list.
+  ``1`` if the CMake's platform id matches any one of the entries in
+  ``platform_ids``, otherwise ``0``.
+  See also the :variable:`CMAKE_SYSTEM_NAME` variable.
+
+.. genex:: $<C_COMPILER_ID:compiler_ids>
+
+  where ``compiler_ids`` is a comma-separated list.
+  ``1`` if the CMake's compiler id of the C compiler matches any one
+  of the entries in ``compiler_ids``, otherwise ``0``.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+
+.. genex:: $<CXX_COMPILER_ID:compiler_ids>
+
+  where ``compiler_ids`` is a comma-separated list.
+  ``1`` if the CMake's compiler id of the CXX compiler matches any one
+  of the entries in ``compiler_ids``, otherwise ``0``.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+
+.. genex:: $<CUDA_COMPILER_ID:compiler_ids>
+
+  .. versionadded:: 3.15
+
+  where ``compiler_ids`` is a comma-separated list.
+  ``1`` if the CMake's compiler id of the CUDA compiler matches any one
+  of the entries in ``compiler_ids``, otherwise ``0``.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+
+.. genex:: $<OBJC_COMPILER_ID:compiler_ids>
+
+  .. versionadded:: 3.16
+
+  where ``compiler_ids`` is a comma-separated list.
+  ``1`` if the CMake's compiler id of the Objective-C compiler matches any one
+  of the entries in ``compiler_ids``, otherwise ``0``.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+
+.. genex:: $<OBJCXX_COMPILER_ID:compiler_ids>
+
+  .. versionadded:: 3.16
+
+  where ``compiler_ids`` is a comma-separated list.
+  ``1`` if the CMake's compiler id of the Objective-C++ compiler matches any one
+  of the entries in ``compiler_ids``, otherwise ``0``.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+
+.. genex:: $<Fortran_COMPILER_ID:compiler_ids>
+
+  where ``compiler_ids`` is a comma-separated list.
+  ``1`` if the CMake's compiler id of the Fortran compiler matches any one
+  of the entries in ``compiler_ids``, otherwise ``0``.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+
+.. genex:: $<HIP_COMPILER_ID:compiler_ids>
+
+  where ``compiler_ids`` is a comma-separated list.
+  ``1`` if the CMake's compiler id of the HIP compiler matches any one
+  of the entries in ``compiler_ids``, otherwise ``0``.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+
+.. genex:: $<ISPC_COMPILER_ID:compiler_ids>
+
+  .. versionadded:: 3.19
+
+  where ``compiler_ids`` is a comma-separated list.
+  ``1`` if the CMake's compiler id of the ISPC compiler matches any one
+  of the entries in ``compiler_ids``, otherwise ``0``.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+
+.. genex:: $<C_COMPILER_VERSION:version>
+
+  ``1`` if the version of the C compiler matches ``version``, otherwise ``0``.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
+
+.. genex:: $<CXX_COMPILER_VERSION:version>
+
+  ``1`` if the version of the CXX compiler matches ``version``, otherwise ``0``.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
+
+.. genex:: $<CUDA_COMPILER_VERSION:version>
+
+  .. versionadded:: 3.15
+
+  ``1`` if the version of the CXX compiler matches ``version``, otherwise ``0``.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
+
+.. genex:: $<OBJC_COMPILER_VERSION:version>
+
+  .. versionadded:: 3.16
+
+  ``1`` if the version of the OBJC compiler matches ``version``, otherwise ``0``.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
+
+.. genex:: $<OBJCXX_COMPILER_VERSION:version>
+
+  .. versionadded:: 3.16
+
+  ``1`` if the version of the OBJCXX compiler matches ``version``, otherwise ``0``.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
+
+.. genex:: $<Fortran_COMPILER_VERSION:version>
+
+  ``1`` if the version of the Fortran compiler matches ``version``, otherwise ``0``.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
+
+.. genex:: $<HIP_COMPILER_VERSION:version>
+
+  ``1`` if the version of the HIP compiler matches ``version``, otherwise ``0``.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
+
+.. genex:: $<ISPC_COMPILER_VERSION:version>
+
+  .. versionadded:: 3.19
+
+  ``1`` if the version of the ISPC compiler matches ``version``, otherwise ``0``.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
+
+.. genex:: $<TARGET_POLICY:policy>
+
+  ``1`` if the ``policy`` was NEW when the 'head' target was created,
+  else ``0``.  If the ``policy`` was not set, the warning message for the policy
+  will be emitted. This generator expression only works for a subset of
+  policies.
+
+.. genex:: $<COMPILE_FEATURES:features>
+
+  .. versionadded:: 3.1
+
+  where ``features`` is a comma-spearated list.
+  Evaluates to ``1`` if all of the ``features`` are available for the 'head'
+  target, and ``0`` otherwise. If this expression is used while evaluating
+  the link implementation of a target and if any dependency transitively
+  increases the required :prop_tgt:`C_STANDARD` or :prop_tgt:`CXX_STANDARD`
+  for the 'head' target, an error is reported.  See the
+  :manual:`cmake-compile-features(7)` manual for information on
+  compile features and a list of supported compilers.
+
+.. _`Boolean COMPILE_LANGUAGE Generator Expression`:
+
+.. genex:: $<COMPILE_LANG_AND_ID:language,compiler_ids>
+
+  .. versionadded:: 3.15
+
+  ``1`` when the language used for compilation unit matches ``language`` and
+  the CMake's compiler id of the language compiler matches any one of the
+  entries in ``compiler_ids``, otherwise ``0``. This expression is a short form
+  for the combination of ``$<COMPILE_LANGUAGE:language>`` and
+  ``$<LANG_COMPILER_ID:compiler_ids>``. This expression may be used to specify
+  compile options, compile definitions, and include directories for source files of a
+  particular language and compiler combination in a target. For example:
+
+  .. code-block:: cmake
+
+    add_executable(myapp main.cpp foo.c bar.cpp zot.cu)
+    target_compile_definitions(myapp
+      PRIVATE $<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:COMPILING_CXX_WITH_CLANG>
+              $<$<COMPILE_LANG_AND_ID:CXX,Intel>:COMPILING_CXX_WITH_INTEL>
+              $<$<COMPILE_LANG_AND_ID:C,Clang>:COMPILING_C_WITH_CLANG>
+    )
+
+  This specifies the use of different compile definitions based on both
+  the compiler id and compilation language. This example will have a
+  ``COMPILING_CXX_WITH_CLANG`` compile definition when Clang is the CXX
+  compiler, and ``COMPILING_CXX_WITH_INTEL`` when Intel is the CXX compiler.
+  Likewise when the C compiler is Clang it will only see the  ``COMPILING_C_WITH_CLANG``
+  definition.
+
+  Without the ``COMPILE_LANG_AND_ID`` generator expression the same logic
+  would be expressed as:
+
+  .. code-block:: cmake
+
+    target_compile_definitions(myapp
+      PRIVATE $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CXX_COMPILER_ID:AppleClang,Clang>>:COMPILING_CXX_WITH_CLANG>
+              $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CXX_COMPILER_ID:Intel>>:COMPILING_CXX_WITH_INTEL>
+              $<$<AND:$<COMPILE_LANGUAGE:C>,$<C_COMPILER_ID:Clang>>:COMPILING_C_WITH_CLANG>
+    )
+
+.. genex:: $<COMPILE_LANGUAGE:languages>
+
+  .. versionadded:: 3.3
+
+  ``1`` when the language used for compilation unit matches any of the entries
+  in ``languages``, otherwise ``0``.  This expression may be used to specify
+  compile options, compile definitions, and include directories for source files of a
+  particular language in a target. For example:
+
+  .. code-block:: cmake
+
+    add_executable(myapp main.cpp foo.c bar.cpp zot.cu)
+    target_compile_options(myapp
+      PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-fno-exceptions>
+    )
+    target_compile_definitions(myapp
+      PRIVATE $<$<COMPILE_LANGUAGE:CXX>:COMPILING_CXX>
+              $<$<COMPILE_LANGUAGE:CUDA>:COMPILING_CUDA>
+    )
+    target_include_directories(myapp
+      PRIVATE $<$<COMPILE_LANGUAGE:CXX,CUDA>:/opt/foo/headers>
+    )
+
+  This specifies the use of the ``-fno-exceptions`` compile option,
+  ``COMPILING_CXX`` compile definition, and ``cxx_headers`` include
+  directory for C++ only (compiler id checks elided).  It also specifies
+  a ``COMPILING_CUDA`` compile definition for CUDA.
+
+  Note that with :ref:`Visual Studio Generators` and :generator:`Xcode` there
+  is no way to represent target-wide compile definitions or include directories
+  separately for ``C`` and ``CXX`` languages.
+  Also, with :ref:`Visual Studio Generators` there is no way to represent
+  target-wide flags separately for ``C`` and ``CXX`` languages.  Under these
+  generators, expressions for both C and C++ sources will be evaluated
+  using ``CXX`` if there are any C++ sources and otherwise using ``C``.
+  A workaround is to create separate libraries for each source file language
+  instead:
+
+  .. code-block:: cmake
+
+    add_library(myapp_c foo.c)
+    add_library(myapp_cxx bar.cpp)
+    target_compile_options(myapp_cxx PUBLIC -fno-exceptions)
+    add_executable(myapp main.cpp)
+    target_link_libraries(myapp myapp_c myapp_cxx)
+
+.. _`Boolean LINK_LANGUAGE Generator Expression`:
+
+.. genex:: $<LINK_LANG_AND_ID:language,compiler_ids>
+
+  .. versionadded:: 3.18
+
+  ``1`` when the language used for link step matches ``language`` and the
+  CMake's compiler id of the language linker matches any one of the entries
+  in ``compiler_ids``, otherwise ``0``. This expression is a short form for the
+  combination of ``$<LINK_LANGUAGE:language>`` and
+  ``$<LANG_COMPILER_ID:compiler_ids>``. This expression may be used to specify
+  link libraries, link options, link directories and link dependencies of a
+  particular language and linker combination in a target. For example:
+
+  .. code-block:: cmake
+
+    add_library(libC_Clang ...)
+    add_library(libCXX_Clang ...)
+    add_library(libC_Intel ...)
+    add_library(libCXX_Intel ...)
+
+    add_executable(myapp main.c)
+    if (CXX_CONFIG)
+      target_sources(myapp PRIVATE file.cxx)
+    endif()
+    target_link_libraries(myapp
+      PRIVATE $<$<LINK_LANG_AND_ID:CXX,Clang,AppleClang>:libCXX_Clang>
+              $<$<LINK_LANG_AND_ID:C,Clang,AppleClang>:libC_Clang>
+              $<$<LINK_LANG_AND_ID:CXX,Intel>:libCXX_Intel>
+              $<$<LINK_LANG_AND_ID:C,Intel>:libC_Intel>)
+
+  This specifies the use of different link libraries based on both the
+  compiler id and link language. This example will have target ``libCXX_Clang``
+  as link dependency when ``Clang`` or ``AppleClang`` is the ``CXX``
+  linker, and ``libCXX_Intel`` when ``Intel`` is the ``CXX`` linker.
+  Likewise when the ``C`` linker is ``Clang`` or ``AppleClang``, target
+  ``libC_Clang`` will be added as link dependency and ``libC_Intel`` when
+  ``Intel`` is the ``C`` linker.
+
+  See :ref:`the note related to
+  <Constraints LINK_LANGUAGE Generator Expression>`
+  ``$<LINK_LANGUAGE:language>`` for constraints about the usage of this
+  generator expression.
+
+.. genex:: $<LINK_LANGUAGE:languages>
+
+  .. versionadded:: 3.18
+
+  ``1`` when the language used for link step matches any of the entries
+  in ``languages``, otherwise ``0``.  This expression may be used to specify
+  link libraries, link options, link directories and link dependencies of a
+  particular language in a target. For example:
+
+  .. code-block:: cmake
+
+    add_library(api_C ...)
+    add_library(api_CXX ...)
+    add_library(api INTERFACE)
+    target_link_options(api INTERFACE $<$<LINK_LANGUAGE:C>:-opt_c>
+                                        $<$<LINK_LANGUAGE:CXX>:-opt_cxx>)
+    target_link_libraries(api INTERFACE $<$<LINK_LANGUAGE:C>:api_C>
+                                        $<$<LINK_LANGUAGE:CXX>:api_CXX>)
+
+    add_executable(myapp1 main.c)
+    target_link_options(myapp1 PRIVATE api)
+
+    add_executable(myapp2 main.cpp)
+    target_link_options(myapp2 PRIVATE api)
+
+  This specifies to use the ``api`` target for linking targets ``myapp1`` and
+  ``myapp2``. In practice, ``myapp1`` will link with target ``api_C`` and
+  option ``-opt_c`` because it will use ``C`` as link language. And ``myapp2``
+  will link with ``api_CXX`` and option ``-opt_cxx`` because ``CXX`` will be
+  the link language.
+
+  .. _`Constraints LINK_LANGUAGE Generator Expression`:
+
+  .. note::
+
+    To determine the link language of a target, it is required to collect,
+    transitively, all the targets which will be linked to it. So, for link
+    libraries properties, a double evaluation will be done. During the first
+    evaluation, ``$<LINK_LANGUAGE:..>`` expressions will always return ``0``.
+    The link language computed after this first pass will be used to do the
+    second pass. To avoid inconsistency, it is required that the second pass
+    do not change the link language. Moreover, to avoid unexpected
+    side-effects, it is required to specify complete entities as part of the
+    ``$<LINK_LANGUAGE:..>`` expression. For example:
+
+    .. code-block:: cmake
+
+      add_library(lib STATIC file.cxx)
+      add_library(libother STATIC file.c)
+
+      # bad usage
+      add_executable(myapp1 main.c)
+      target_link_libraries(myapp1 PRIVATE lib$<$<LINK_LANGUAGE:C>:other>)
+
+      # correct usage
+      add_executable(myapp2 main.c)
+      target_link_libraries(myapp2 PRIVATE $<$<LINK_LANGUAGE:C>:libother>)
+
+    In this example, for ``myapp1``, the first pass will, unexpectedly,
+    determine that the link language is ``CXX`` because the evaluation of the
+    generator expression will be an empty string so ``myapp1`` will depends on
+    target ``lib`` which is ``C++``. On the contrary, for ``myapp2``, the first
+    evaluation will give ``C`` as link language, so the second pass will
+    correctly add target ``libother`` as link dependency.
+
+.. genex:: $<DEVICE_LINK:list>
+
+  .. versionadded:: 3.18
+
+  Returns the list if it is the device link step, an empty list otherwise.
+  The device link step is controlled by :prop_tgt:`CUDA_SEPARABLE_COMPILATION`
+  and :prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` properties and
+  policy :policy:`CMP0105`. This expression can only be used to specify link
+  options.
+
+.. genex:: $<HOST_LINK:list>
+
+  .. versionadded:: 3.18
+
+  Returns the list if it is the normal link step, an empty list otherwise.
+  This expression is mainly useful when a device link step is also involved
+  (see ``$<DEVICE_LINK:list>`` generator expression). This expression can only
+  be used to specify link options.
+
+String-Valued Generator Expressions
+===================================
+
+These expressions expand to some string.
+For example,
+
+.. code-block:: cmake
+
+  include_directories(/usr/include/$<CXX_COMPILER_ID>/)
+
+expands to ``/usr/include/GNU/`` or ``/usr/include/Clang/`` etc, depending on
+the compiler identifier.
+
+String-valued expressions may also be combined with other expressions.
+Here an example for a string-valued expression within a boolean expressions
+within a conditional expression:
+
+.. code-block:: cmake
+
+  $<$<VERSION_LESS:$<CXX_COMPILER_VERSION>,4.2.0>:OLD_COMPILER>
+
+expands to ``OLD_COMPILER`` if the
+:variable:`CMAKE_CXX_COMPILER_VERSION <CMAKE_<LANG>_COMPILER_VERSION>` is less
+than 4.2.0.
+
+And here two nested string-valued expressions:
+
+.. code-block:: cmake
+
+  -I$<JOIN:$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>, -I>
+
+generates a string of the entries in the :prop_tgt:`INCLUDE_DIRECTORIES` target
+property with each entry preceded by ``-I``.
+
+Expanding on the previous example, if one first wants to check if the
+``INCLUDE_DIRECTORIES`` property is non-empty, then it is advisable to
+introduce a helper variable to keep the code readable:
+
+.. code-block:: cmake
+
+  set(prop "$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>") # helper variable
+  $<$<BOOL:${prop}>:-I$<JOIN:${prop}, -I>>
+
+The following string-valued generator expressions are available:
+
+Escaped Characters
+------------------
+
+String literals to escape the special meaning a character would otherwise have:
+
+.. genex:: $<ANGLE-R>
+
+  A literal ``>``. Used for example to compare strings that contain a ``>``.
+
+.. genex:: $<COMMA>
+
+  A literal ``,``. Used for example to compare strings which contain a ``,``.
+
+.. genex:: $<SEMICOLON>
+
+  A literal ``;``. Used to prevent list expansion on an argument with ``;``.
+
+.. _`Conditional Generator Expressions`:
+
+Conditional Expressions
+-----------------------
+
+Conditional generator expressions depend on a boolean condition
+that must be ``0`` or ``1``.
+
+.. genex:: $<condition:true_string>
+
+  Evaluates to ``true_string`` if ``condition`` is ``1``.
+  Otherwise evaluates to the empty string.
+
+.. genex:: $<IF:condition,true_string,false_string>
+
+  .. versionadded:: 3.8
+
+  Evaluates to ``true_string`` if ``condition`` is ``1``.
+  Otherwise evaluates to ``false_string``.
+
+Typically, the ``condition`` is a :ref:`boolean generator expression
+<Boolean Generator Expressions>`.  For instance,
+
+.. code-block:: cmake
+
+  $<$<CONFIG:Debug>:DEBUG_MODE>
+
+expands to ``DEBUG_MODE`` when the ``Debug`` configuration is used, and
+otherwise expands to the empty string.
+
+.. _`String Transforming Generator Expressions`:
+
+String Transformations
+----------------------
+
+.. genex:: $<JOIN:list,string>
+
+  Joins the list with the content of ``string``.
+
+.. genex:: $<REMOVE_DUPLICATES:list>
+
+  .. versionadded:: 3.15
+
+  Removes duplicated items in the given ``list``.
+
+.. genex:: $<FILTER:list,INCLUDE|EXCLUDE,regex>
+
+  .. versionadded:: 3.15
+
+  Includes or removes items from ``list`` that match the regular expression ``regex``.
+
+.. genex:: $<LOWER_CASE:string>
+
+  Content of ``string`` converted to lower case.
+
+.. genex:: $<UPPER_CASE:string>
+
+  Content of ``string`` converted to upper case.
+
+.. genex:: $<GENEX_EVAL:expr>
+
+  .. versionadded:: 3.12
+
+  Content of ``expr`` evaluated as a generator expression in the current
+  context. This enables consumption of generator expressions whose
+  evaluation results itself in generator expressions.
+
+.. genex:: $<TARGET_GENEX_EVAL:tgt,expr>
+
+  .. versionadded:: 3.12
+
+  Content of ``expr`` evaluated as a generator expression in the context of
+  ``tgt`` target. This enables consumption of custom target properties that
+  themselves contain generator expressions.
+
+  Having the capability to evaluate generator expressions is very useful when
+  you want to manage custom properties supporting generator expressions.
+  For example:
+
+  .. code-block:: cmake
+
+    add_library(foo ...)
+
+    set_property(TARGET foo PROPERTY
+      CUSTOM_KEYS $<$<CONFIG:DEBUG>:FOO_EXTRA_THINGS>
+    )
+
+    add_custom_target(printFooKeys
+      COMMAND ${CMAKE_COMMAND} -E echo $<TARGET_PROPERTY:foo,CUSTOM_KEYS>
+    )
+
+  This naive implementation of the ``printFooKeys`` custom command is wrong
+  because ``CUSTOM_KEYS`` target property is not evaluated and the content
+  is passed as is (i.e. ``$<$<CONFIG:DEBUG>:FOO_EXTRA_THINGS>``).
+
+  To have the expected result (i.e. ``FOO_EXTRA_THINGS`` if config is
+  ``Debug``), it is required to evaluate the output of
+  ``$<TARGET_PROPERTY:foo,CUSTOM_KEYS>``:
+
+  .. code-block:: cmake
+
+    add_custom_target(printFooKeys
+      COMMAND ${CMAKE_COMMAND} -E
+        echo $<TARGET_GENEX_EVAL:foo,$<TARGET_PROPERTY:foo,CUSTOM_KEYS>>
+    )
+
+Variable Queries
+----------------
+
+.. genex:: $<CONFIG>
+
+  Configuration name.
+
+.. genex:: $<CONFIGURATION>
+
+  Configuration name. Deprecated since CMake 3.0. Use ``CONFIG`` instead.
+
+.. genex:: $<PLATFORM_ID>
+
+  The current system's CMake platform id.
+  See also the :variable:`CMAKE_SYSTEM_NAME` variable.
+
+.. genex:: $<C_COMPILER_ID>
+
+  The CMake's compiler id of the C compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+
+.. genex:: $<CXX_COMPILER_ID>
+
+  The CMake's compiler id of the CXX compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+
+.. genex:: $<CUDA_COMPILER_ID>
+
+  The CMake's compiler id of the CUDA compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+
+.. genex:: $<OBJC_COMPILER_ID>
+
+  .. versionadded:: 3.16
+
+  The CMake's compiler id of the OBJC compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+
+.. genex:: $<OBJCXX_COMPILER_ID>
+
+  .. versionadded:: 3.16
+
+  The CMake's compiler id of the OBJCXX compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+
+.. genex:: $<Fortran_COMPILER_ID>
+
+  The CMake's compiler id of the Fortran compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+
+.. genex:: $<HIP_COMPILER_ID>
+
+  The CMake's compiler id of the HIP compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+
+.. genex:: $<ISPC_COMPILER_ID>
+
+  .. versionadded:: 3.19
+
+  The CMake's compiler id of the ISPC compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+
+.. genex:: $<C_COMPILER_VERSION>
+
+  The version of the C compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
+
+.. genex:: $<CXX_COMPILER_VERSION>
+
+  The version of the CXX compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
+
+.. genex:: $<CUDA_COMPILER_VERSION>
+
+  The version of the CUDA compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
+
+.. genex:: $<OBJC_COMPILER_VERSION>
+
+  .. versionadded:: 3.16
+
+  The version of the OBJC compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
+
+.. genex:: $<OBJCXX_COMPILER_VERSION>
+
+  .. versionadded:: 3.16
+
+  The version of the OBJCXX compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
+
+.. genex:: $<Fortran_COMPILER_VERSION>
+
+  The version of the Fortran compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
+
+.. genex:: $<HIP_COMPILER_VERSION>
+
+  The version of the HIP compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
+
+.. genex:: $<ISPC_COMPILER_VERSION>
+
+  .. versionadded:: 3.19
+
+  The version of the ISPC compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
+
+.. genex:: $<COMPILE_LANGUAGE>
+
+  .. versionadded:: 3.3
+
+  The compile language of source files when evaluating compile options.
+  See :ref:`the related boolean expression
+  <Boolean COMPILE_LANGUAGE Generator Expression>`
+  ``$<COMPILE_LANGUAGE:language>``
+  for notes about the portability of this generator expression.
+
+.. genex:: $<LINK_LANGUAGE>
+
+  .. versionadded:: 3.18
+
+  The link language of target when evaluating link options.
+  See :ref:`the related boolean expression
+  <Boolean LINK_LANGUAGE Generator Expression>` ``$<LINK_LANGUAGE:language>``
+  for notes about the portability of this generator expression.
+
+  .. note::
+
+    This generator expression is not supported by the link libraries
+    properties to avoid side-effects due to the double evaluation of
+    these properties.
+
+.. _`Target-Dependent Queries`:
+
+Target-Dependent Queries
+------------------------
+
+These queries refer to a target ``tgt``. This can be any runtime artifact,
+namely:
+
+* an executable target created by :command:`add_executable`
+* a shared library target (``.so``, ``.dll`` but not their ``.lib`` import library)
+  created by :command:`add_library`
+* a static library target created by :command:`add_library`
+
+In the following, "the ``tgt`` filename" means the name of the ``tgt``
+binary file. This has to be distinguished from "the target name",
+which is just the string ``tgt``.
+
+.. genex:: $<TARGET_NAME_IF_EXISTS:tgt>
+
+  .. versionadded:: 3.12
+
+  The target name ``tgt`` if the target exists, an empty string otherwise.
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on.
+
+.. genex:: $<TARGET_FILE:tgt>
+
+  Full path to the ``tgt`` binary file.
+
+.. genex:: $<TARGET_FILE_BASE_NAME:tgt>
+
+  .. versionadded:: 3.15
+
+  Base name of ``tgt``, i.e. ``$<TARGET_FILE_NAME:tgt>`` without prefix and
+  suffix.
+  For example, if the ``tgt`` filename is ``libbase.so``, the base name is ``base``.
+
+  See also the :prop_tgt:`OUTPUT_NAME`, :prop_tgt:`ARCHIVE_OUTPUT_NAME`,
+  :prop_tgt:`LIBRARY_OUTPUT_NAME` and :prop_tgt:`RUNTIME_OUTPUT_NAME`
+  target properties and their configuration specific variants
+  :prop_tgt:`OUTPUT_NAME_<CONFIG>`, :prop_tgt:`ARCHIVE_OUTPUT_NAME_<CONFIG>`,
+  :prop_tgt:`LIBRARY_OUTPUT_NAME_<CONFIG>` and
+  :prop_tgt:`RUNTIME_OUTPUT_NAME_<CONFIG>`.
+
+  The :prop_tgt:`<CONFIG>_POSTFIX` and :prop_tgt:`DEBUG_POSTFIX` target
+  properties can also be considered.
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on.
+
+.. genex:: $<TARGET_FILE_PREFIX:tgt>
+
+  .. versionadded:: 3.15
+
+  Prefix of the ``tgt`` filename (such as ``lib``).
+
+  See also the :prop_tgt:`PREFIX` target property.
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on.
+
+.. genex:: $<TARGET_FILE_SUFFIX:tgt>
+
+  .. versionadded:: 3.15
+
+  Suffix of the ``tgt`` filename (extension such as ``.so`` or ``.exe``).
+
+  See also the :prop_tgt:`SUFFIX` target property.
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on.
+
+.. genex:: $<TARGET_FILE_NAME:tgt>
+
+  The ``tgt`` filename.
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on (see policy :policy:`CMP0112`).
+
+.. genex:: $<TARGET_FILE_DIR:tgt>
+
+  Directory of the ``tgt`` binary file.
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on (see policy :policy:`CMP0112`).
+
+.. genex:: $<TARGET_LINKER_FILE:tgt>
+
+  File used when linking to the ``tgt`` target.  This will usually
+  be the library that ``tgt`` represents (``.a``, ``.lib``, ``.so``),
+  but for a shared library on DLL platforms, it would be the ``.lib``
+  import library associated with the DLL.
+
+.. genex:: $<TARGET_LINKER_FILE_BASE_NAME:tgt>
+
+  .. versionadded:: 3.15
+
+  Base name of file used to link the target ``tgt``, i.e.
+  ``$<TARGET_LINKER_FILE_NAME:tgt>`` without prefix and suffix. For example,
+  if target file name is ``libbase.a``, the base name is ``base``.
+
+  See also the :prop_tgt:`OUTPUT_NAME`, :prop_tgt:`ARCHIVE_OUTPUT_NAME`,
+  and :prop_tgt:`LIBRARY_OUTPUT_NAME` target properties and their configuration
+  specific variants :prop_tgt:`OUTPUT_NAME_<CONFIG>`,
+  :prop_tgt:`ARCHIVE_OUTPUT_NAME_<CONFIG>` and
+  :prop_tgt:`LIBRARY_OUTPUT_NAME_<CONFIG>`.
+
+  The :prop_tgt:`<CONFIG>_POSTFIX` and :prop_tgt:`DEBUG_POSTFIX` target
+  properties can also be considered.
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on.
+
+.. genex:: $<TARGET_LINKER_FILE_PREFIX:tgt>
+
+  .. versionadded:: 3.15
+
+  Prefix of file used to link target ``tgt``.
+
+  See also the :prop_tgt:`PREFIX` and :prop_tgt:`IMPORT_PREFIX` target
+  properties.
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on.
+
+.. genex:: $<TARGET_LINKER_FILE_SUFFIX:tgt>
+
+  .. versionadded:: 3.15
+
+  Suffix of file used to link where ``tgt`` is the name of a target.
+
+  The suffix corresponds to the file extension (such as ".so" or ".lib").
+
+  See also the :prop_tgt:`SUFFIX` and :prop_tgt:`IMPORT_SUFFIX` target
+  properties.
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on.
+
+.. genex:: $<TARGET_LINKER_FILE_NAME:tgt>
+
+  Name of file used to link target ``tgt``.
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on (see policy :policy:`CMP0112`).
+
+.. genex:: $<TARGET_LINKER_FILE_DIR:tgt>
+
+  Directory of file used to link target ``tgt``.
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on (see policy :policy:`CMP0112`).
+
+.. genex:: $<TARGET_SONAME_FILE:tgt>
+
+  File with soname (``.so.3``) where ``tgt`` is the name of a target.
+.. genex:: $<TARGET_SONAME_FILE_NAME:tgt>
+
+  Name of file with soname (``.so.3``).
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on (see policy :policy:`CMP0112`).
+
+.. genex:: $<TARGET_SONAME_FILE_DIR:tgt>
+
+  Directory of with soname (``.so.3``).
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on (see policy :policy:`CMP0112`).
+
+.. genex:: $<TARGET_PDB_FILE:tgt>
+
+  .. versionadded:: 3.1
+
+  Full path to the linker generated program database file (.pdb)
+  where ``tgt`` is the name of a target.
+
+  See also the :prop_tgt:`PDB_NAME` and :prop_tgt:`PDB_OUTPUT_DIRECTORY`
+  target properties and their configuration specific variants
+  :prop_tgt:`PDB_NAME_<CONFIG>` and :prop_tgt:`PDB_OUTPUT_DIRECTORY_<CONFIG>`.
+
+.. genex:: $<TARGET_PDB_FILE_BASE_NAME:tgt>
+
+  .. versionadded:: 3.15
+
+  Base name of the linker generated program database file (.pdb)
+  where ``tgt`` is the name of a target.
+
+  The base name corresponds to the target PDB file name (see
+  ``$<TARGET_PDB_FILE_NAME:tgt>``) without prefix and suffix. For example,
+  if target file name is ``base.pdb``, the base name is ``base``.
+
+  See also the :prop_tgt:`PDB_NAME` target property and its configuration
+  specific variant :prop_tgt:`PDB_NAME_<CONFIG>`.
+
+  The :prop_tgt:`<CONFIG>_POSTFIX` and :prop_tgt:`DEBUG_POSTFIX` target
+  properties can also be considered.
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on.
+
+.. genex:: $<TARGET_PDB_FILE_NAME:tgt>
+
+  .. versionadded:: 3.1
+
+  Name of the linker generated program database file (.pdb).
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on (see policy :policy:`CMP0112`).
+
+.. genex:: $<TARGET_PDB_FILE_DIR:tgt>
+
+  .. versionadded:: 3.1
+
+  Directory of the linker generated program database file (.pdb).
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on (see policy :policy:`CMP0112`).
+
+.. genex:: $<TARGET_BUNDLE_DIR:tgt>
+
+  .. versionadded:: 3.9
+
+  Full path to the bundle directory (``my.app``, ``my.framework``, or
+  ``my.bundle``) where ``tgt`` is the name of a target.
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on (see policy :policy:`CMP0112`).
+
+.. genex:: $<TARGET_BUNDLE_CONTENT_DIR:tgt>
+
+  .. versionadded:: 3.9
+
+  Full path to the bundle content directory where ``tgt`` is the name of a
+  target. For the macOS SDK it leads to ``my.app/Contents``, ``my.framework``,
+  or ``my.bundle/Contents``. For all other SDKs (e.g. iOS) it leads to
+  ``my.app``, ``my.framework``, or ``my.bundle`` due to the flat bundle
+  structure.
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on (see policy :policy:`CMP0112`).
+
+.. genex:: $<TARGET_PROPERTY:tgt,prop>
+
+  Value of the property ``prop`` on the target ``tgt``.
+
+  Note that ``tgt`` is not added as a dependency of the target this
+  expression is evaluated on.
+
+.. genex:: $<TARGET_PROPERTY:prop>
+
+  Value of the property ``prop`` on the target for which the expression
+  is being evaluated. Note that for generator expressions in
+  :ref:`Target Usage Requirements` this is the consuming target rather
+  than the target specifying the requirement.
+
+.. genex:: $<TARGET_RUNTIME_DLLS:tgt>
+
+  .. versionadded:: 3.21
+
+  List of DLLs that the target depends on at runtime. This is determined by
+  the locations of all the ``SHARED`` and ``MODULE`` targets in the target's
+  transitive dependencies. Using this generator expression on targets other
+  than executables, ``SHARED`` libraries, and ``MODULE`` libraries is an error.
+  On non-DLL platforms, it evaluates to an empty string.
+
+  This generator expression can be used to copy all of the DLLs that a target
+  depends on into its output directory in a ``POST_BUILD`` custom command. For
+  example:
+
+  .. code-block:: cmake
+
+    find_package(foo CONFIG REQUIRED) # package generated by install(EXPORT)
+
+    add_executable(exe main.c)
+    target_link_libraries(exe PRIVATE foo::foo foo::bar)
+    add_custom_command(TARGET exe POST_BUILD
+      COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_RUNTIME_DLLS:exe> $<TARGET_FILE_DIR:exe>
+      COMMAND_EXPAND_LISTS
+      )
+
+  .. note::
+
+    :ref:`Imported Targets` are supported only if they know the location
+    of their ``.dll`` files.  An imported ``SHARED`` or ``MODULE`` library
+    must have :prop_tgt:`IMPORTED_LOCATION` set to its ``.dll`` file.  See
+    the :ref:`add_library imported libraries <add_library imported libraries>`
+    section for details.  Many :ref:`Find Modules` produce imported targets
+    with the ``UNKNOWN`` type and therefore will be ignored.
+
+.. genex:: $<INSTALL_PREFIX>
+
+  Content of the install prefix when the target is exported via
+  :command:`install(EXPORT)`, or when evaluated in the
+  :prop_tgt:`INSTALL_NAME_DIR` property or the ``INSTALL_NAME_DIR`` argument of
+  :command:`install(RUNTIME_DEPENDENCY_SET)`, and empty otherwise.
+
+Output-Related Expressions
+--------------------------
+
+.. genex:: $<TARGET_NAME:...>
+
+  Marks ``...`` as being the name of a target.  This is required if exporting
+  targets to multiple dependent export sets.  The ``...`` must be a literal
+  name of a target- it may not contain generator expressions.
+
+.. genex:: $<LINK_ONLY:...>
+
+  .. versionadded:: 3.1
+
+  Content of ``...`` except when evaluated in a link interface while
+  propagating :ref:`Target Usage Requirements`, in which case it is the
+  empty string.
+  Intended for use only in an :prop_tgt:`INTERFACE_LINK_LIBRARIES` target
+  property, perhaps via the :command:`target_link_libraries` command,
+  to specify private link dependencies without other usage requirements.
+
+.. genex:: $<INSTALL_INTERFACE:...>
+
+  Content of ``...`` when the property is exported using :command:`install(EXPORT)`,
+  and empty otherwise.
+
+.. genex:: $<BUILD_INTERFACE:...>
+
+  Content of ``...`` when the property is exported using :command:`export`, or
+  when the target is used by another target in the same buildsystem. Expands to
+  the empty string otherwise.
+
+.. genex:: $<MAKE_C_IDENTIFIER:...>
+
+  Content of ``...`` converted to a C identifier.  The conversion follows the
+  same behavior as :command:`string(MAKE_C_IDENTIFIER)`.
+
+.. genex:: $<TARGET_OBJECTS:objLib>
+
+  .. versionadded:: 3.1
+
+  List of objects resulting from build of ``objLib``.
+
+.. genex:: $<SHELL_PATH:...>
+
+  .. versionadded:: 3.4
+
+  Content of ``...`` converted to shell path style. For example, slashes are
+  converted to backslashes in Windows shells and drive letters are converted
+  to posix paths in MSYS shells. The ``...`` must be an absolute path.
+
+  .. versionadded:: 3.14
+    The ``...`` may be a :ref:`semicolon-separated list <CMake Language Lists>`
+    of paths, in which case each path is converted individually and a result
+    list is generated using the shell path separator (``:`` on POSIX and
+    ``;`` on Windows).  Be sure to enclose the argument containing this genex
+    in double quotes in CMake source code so that ``;`` does not split arguments.
+
+.. genex:: $<OUTPUT_CONFIG:...>
+
+  .. versionadded:: 3.20
+
+  Only valid in :command:`add_custom_command` and :command:`add_custom_target`
+  as the outer-most generator expression in an argument.
+  With the :generator:`Ninja Multi-Config` generator, generator expressions
+  in ``...`` are evaluated using the custom command's "output config".
+  With other generators, the content of ``...`` is evaluated normally.
+
+.. genex:: $<COMMAND_CONFIG:...>
+
+  .. versionadded:: 3.20
+
+  Only valid in :command:`add_custom_command` and :command:`add_custom_target`
+  as the outer-most generator expression in an argument.
+  With the :generator:`Ninja Multi-Config` generator, generator expressions
+  in ``...`` are evaluated using the custom command's "command config".
+  With other generators, the content of ``...`` is evaluated normally.
+
+Debugging
+=========
+
+Since generator expressions are evaluated during generation of the buildsystem,
+and not during processing of ``CMakeLists.txt`` files, it is not possible to
+inspect their result with the :command:`message()` command.
+
+One possible way to generate debug messages is to add a custom target,
+
+.. code-block:: cmake
+
+  add_custom_target(genexdebug COMMAND ${CMAKE_COMMAND} -E echo "$<...>")
+
+The shell command ``make genexdebug`` (invoked after execution of ``cmake``)
+would then print the result of ``$<...>``.
+
+Another way is to write debug messages to a file:
+
+.. code-block:: cmake
+
+  file(GENERATE OUTPUT filename CONTENT "$<...>")
diff --git a/share/cmake-3.22/Help/manual/cmake-generators.7.rst b/share/cmake-3.22/Help/manual/cmake-generators.7.rst
new file mode 100644
index 0000000..663b18d
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-generators.7.rst
@@ -0,0 +1,121 @@
+.. cmake-manual-description: CMake Generators Reference
+
+cmake-generators(7)
+*******************
+
+.. only:: html
+
+   .. contents::
+
+Introduction
+============
+
+A *CMake Generator* is responsible for writing the input files for
+a native build system.  Exactly one of the `CMake Generators`_ must be
+selected for a build tree to determine what native build system is to
+be used.  Optionally one of the `Extra Generators`_ may be selected
+as a variant of some of the `Command-Line Build Tool Generators`_ to
+produce project files for an auxiliary IDE.
+
+CMake Generators are platform-specific so each may be available only
+on certain platforms.  The :manual:`cmake(1)` command-line tool ``--help``
+output lists available generators on the current platform.  Use its ``-G``
+option to specify the generator for a new build tree.
+The :manual:`cmake-gui(1)` offers interactive selection of a generator
+when creating a new build tree.
+
+CMake Generators
+================
+
+.. _`Command-Line Build Tool Generators`:
+
+Command-Line Build Tool Generators
+----------------------------------
+
+These generators support command-line build tools.  In order to use them,
+one must launch CMake from a command-line prompt whose environment is
+already configured for the chosen compiler and build tool.
+
+.. _`Makefile Generators`:
+
+Makefile Generators
+^^^^^^^^^^^^^^^^^^^
+
+.. toctree::
+   :maxdepth: 1
+
+   /generator/Borland Makefiles
+   /generator/MSYS Makefiles
+   /generator/MinGW Makefiles
+   /generator/NMake Makefiles
+   /generator/NMake Makefiles JOM
+   /generator/Unix Makefiles
+   /generator/Watcom WMake
+
+.. _`Ninja Generators`:
+
+Ninja Generators
+^^^^^^^^^^^^^^^^
+
+.. toctree::
+   :maxdepth: 1
+
+   /generator/Ninja
+   /generator/Ninja Multi-Config
+
+.. _`IDE Build Tool Generators`:
+
+IDE Build Tool Generators
+-------------------------
+
+These generators support Integrated Development Environment (IDE)
+project files.  Since the IDEs configure their own environment
+one may launch CMake from any environment.
+
+.. _`Visual Studio Generators`:
+
+Visual Studio Generators
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. toctree::
+   :maxdepth: 1
+
+   /generator/Visual Studio 6
+   /generator/Visual Studio 7
+   /generator/Visual Studio 7 .NET 2003
+   /generator/Visual Studio 8 2005
+   /generator/Visual Studio 9 2008
+   /generator/Visual Studio 10 2010
+   /generator/Visual Studio 11 2012
+   /generator/Visual Studio 12 2013
+   /generator/Visual Studio 14 2015
+   /generator/Visual Studio 15 2017
+   /generator/Visual Studio 16 2019
+   /generator/Visual Studio 17 2022
+
+Other Generators
+^^^^^^^^^^^^^^^^
+
+.. toctree::
+   :maxdepth: 1
+
+   /generator/Green Hills MULTI
+   /generator/Xcode
+
+Extra Generators
+================
+
+Some of the `CMake Generators`_ listed in the :manual:`cmake(1)`
+command-line tool ``--help`` output may have variants that specify
+an extra generator for an auxiliary IDE tool.  Such generator
+names have the form ``<extra-generator> - <main-generator>``.
+The following extra generators are known to CMake.
+
+.. toctree::
+   :maxdepth: 1
+
+   /generator/CodeBlocks
+   /generator/CodeLite
+   /generator/Eclipse CDT4
+   /generator/Kate
+   /generator/Sublime Text 2
diff --git a/share/cmake-3.22/Help/manual/cmake-gui.1.rst b/share/cmake-3.22/Help/manual/cmake-gui.1.rst
new file mode 100644
index 0000000..281986f
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-gui.1.rst
@@ -0,0 +1,52 @@
+.. cmake-manual-description: CMake GUI Command-Line Reference
+
+cmake-gui(1)
+************
+
+Synopsis
+========
+
+.. parsed-literal::
+
+ cmake-gui [<options>]
+ cmake-gui [<options>] {<path-to-source> | <path-to-existing-build>}
+ cmake-gui [<options>] -S <path-to-source> -B <path-to-build>
+ cmake-gui [<options>] --browse-manual
+
+Description
+===========
+
+The **cmake-gui** executable is the CMake GUI.  Project configuration
+settings may be specified interactively.  Brief instructions are
+provided at the bottom of the window when the program is running.
+
+CMake is a cross-platform build system generator.  Projects specify
+their build process with platform-independent CMake listfiles included
+in each directory of a source tree with the name ``CMakeLists.txt``.
+Users build a project by using CMake to generate a build system for a
+native tool on their platform.
+
+Options
+=======
+
+``-S <path-to-source>``
+ Path to root directory of the CMake project to build.
+
+``-B <path-to-build>``
+ Path to directory which CMake will use as the root of build directory.
+
+ If the directory doesn't already exist CMake will make it.
+
+``--preset=<preset-name>``
+ Name of the preset to use from the project's
+ :manual:`presets <cmake-presets(7)>` files, if it has them.
+
+``--browse-manual``
+ Open the CMake reference manual in a browser and immediately exit.
+
+.. include:: OPTIONS_HELP.txt
+
+See Also
+========
+
+.. include:: LINKS.txt
diff --git a/share/cmake-3.18/Help/manual/cmake-language.7.rst b/share/cmake-3.22/Help/manual/cmake-language.7.rst
similarity index 100%
rename from share/cmake-3.18/Help/manual/cmake-language.7.rst
rename to share/cmake-3.22/Help/manual/cmake-language.7.rst
diff --git a/share/cmake-3.22/Help/manual/cmake-modules.7.rst b/share/cmake-3.22/Help/manual/cmake-modules.7.rst
new file mode 100644
index 0000000..141eeaa
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-modules.7.rst
@@ -0,0 +1,323 @@
+.. cmake-manual-description: CMake Modules Reference
+
+cmake-modules(7)
+****************
+
+The modules listed here are part of the CMake distribution.
+Projects may provide further modules; their location(s)
+can be specified in the :variable:`CMAKE_MODULE_PATH` variable.
+
+Utility Modules
+^^^^^^^^^^^^^^^
+
+These modules are loaded using the :command:`include` command.
+
+.. toctree::
+   :maxdepth: 1
+
+   /module/AndroidTestUtilities
+   /module/BundleUtilities
+   /module/CheckCCompilerFlag
+   /module/CheckCompilerFlag
+   /module/CheckCSourceCompiles
+   /module/CheckCSourceRuns
+   /module/CheckCXXCompilerFlag
+   /module/CheckCXXSourceCompiles
+   /module/CheckCXXSourceRuns
+   /module/CheckCXXSymbolExists
+   /module/CheckFortranCompilerFlag
+   /module/CheckFortranFunctionExists
+   /module/CheckFortranSourceCompiles
+   /module/CheckFortranSourceRuns
+   /module/CheckFunctionExists
+   /module/CheckIncludeFileCXX
+   /module/CheckIncludeFile
+   /module/CheckIncludeFiles
+   /module/CheckIPOSupported
+   /module/CheckLanguage
+   /module/CheckLibraryExists
+   /module/CheckLinkerFlag
+   /module/CheckOBJCCompilerFlag
+   /module/CheckOBJCSourceCompiles
+   /module/CheckOBJCSourceRuns
+   /module/CheckOBJCXXCompilerFlag
+   /module/CheckOBJCXXSourceCompiles
+   /module/CheckOBJCXXSourceRuns
+   /module/CheckPIESupported
+   /module/CheckPrototypeDefinition
+   /module/CheckSourceCompiles
+   /module/CheckSourceRuns
+   /module/CheckStructHasMember
+   /module/CheckSymbolExists
+   /module/CheckTypeSize
+   /module/CheckVariableExists
+   /module/CMakeAddFortranSubdirectory
+   /module/CMakeBackwardCompatibilityCXX
+   /module/CMakeDependentOption
+   /module/CMakeFindDependencyMacro
+   /module/CMakeFindFrameworks
+   /module/CMakeFindPackageMode
+   /module/CMakeGraphVizOptions
+   /module/CMakePackageConfigHelpers
+   /module/CMakePrintHelpers
+   /module/CMakePrintSystemInformation
+   /module/CMakePushCheckState
+   /module/CMakeVerifyManifest
+   /module/CPack
+   /module/CPackComponent
+   /module/CPackIFW
+   /module/CPackIFWConfigureFile
+   /module/CSharpUtilities
+   /module/CTest
+   /module/CTestCoverageCollectGCOV
+   /module/CTestScriptMode
+   /module/CTestUseLaunchers
+   /module/Dart
+   /module/DeployQt4
+   /module/ExternalData
+   /module/ExternalProject
+   /module/FeatureSummary
+   /module/FetchContent
+   /module/FindPackageHandleStandardArgs
+   /module/FindPackageMessage
+   /module/FortranCInterface
+   /module/GenerateExportHeader
+   /module/GetPrerequisites
+   /module/GNUInstallDirs
+   /module/GoogleTest
+   /module/InstallRequiredSystemLibraries
+   /module/ProcessorCount
+   /module/SelectLibraryConfigurations
+   /module/SquishTestScript
+   /module/TestBigEndian
+   /module/TestForANSIForScope
+   /module/TestForANSIStreamHeaders
+   /module/TestForSSTREAM
+   /module/TestForSTDNamespace
+   /module/UseEcos
+   /module/UseJava
+   /module/UseSWIG
+   /module/UsewxWidgets
+
+Find Modules
+^^^^^^^^^^^^
+
+These modules search for third-party software.
+They are normally called through the :command:`find_package` command.
+
+.. toctree::
+   :maxdepth: 1
+
+   /module/FindALSA
+   /module/FindArmadillo
+   /module/FindASPELL
+   /module/FindAVIFile
+   /module/FindBacktrace
+   /module/FindBISON
+   /module/FindBLAS
+   /module/FindBoost
+   /module/FindBullet
+   /module/FindBZip2
+   /module/FindCABLE
+   /module/FindCoin3D
+   /module/FindCUDAToolkit
+   /module/FindCups
+   /module/FindCURL
+   /module/FindCurses
+   /module/FindCVS
+   /module/FindCxxTest
+   /module/FindCygwin
+   /module/FindDart
+   /module/FindDCMTK
+   /module/FindDevIL
+   /module/FindDoxygen
+   /module/FindEnvModules
+   /module/FindEXPAT
+   /module/FindFLEX
+   /module/FindFLTK
+   /module/FindFLTK2
+   /module/FindFontconfig
+   /module/FindFreetype
+   /module/FindGCCXML
+   /module/FindGDAL
+   /module/FindGettext
+   /module/FindGIF
+   /module/FindGit
+   /module/FindGLEW
+   /module/FindGLUT
+   /module/FindGnuplot
+   /module/FindGnuTLS
+   /module/FindGSL
+   /module/FindGTest
+   /module/FindGTK
+   /module/FindGTK2
+   /module/FindHDF5
+   /module/FindHg
+   /module/FindHSPELL
+   /module/FindHTMLHelp
+   /module/FindIce
+   /module/FindIconv
+   /module/FindIcotool
+   /module/FindICU
+   /module/FindImageMagick
+   /module/FindIntl
+   /module/FindITK
+   /module/FindJasper
+   /module/FindJava
+   /module/FindJNI
+   /module/FindJPEG
+   /module/FindKDE3
+   /module/FindKDE4
+   /module/FindLAPACK
+   /module/FindLATEX
+   /module/FindLibArchive
+   /module/FindLibinput
+   /module/FindLibLZMA
+   /module/FindLibXml2
+   /module/FindLibXslt
+   /module/FindLTTngUST
+   /module/FindLua
+   /module/FindLua50
+   /module/FindLua51
+   /module/FindMatlab
+   /module/FindMFC
+   /module/FindMotif
+   /module/FindMPEG
+   /module/FindMPEG2
+   /module/FindMPI
+   /module/FindMsys
+   /module/FindODBC
+   /module/FindOpenACC
+   /module/FindOpenAL
+   /module/FindOpenCL
+   /module/FindOpenGL
+   /module/FindOpenMP
+   /module/FindOpenSceneGraph
+   /module/FindOpenSSL
+   /module/FindOpenThreads
+   /module/Findosg
+   /module/Findosg_functions
+   /module/FindosgAnimation
+   /module/FindosgDB
+   /module/FindosgFX
+   /module/FindosgGA
+   /module/FindosgIntrospection
+   /module/FindosgManipulator
+   /module/FindosgParticle
+   /module/FindosgPresentation
+   /module/FindosgProducer
+   /module/FindosgQt
+   /module/FindosgShadow
+   /module/FindosgSim
+   /module/FindosgTerrain
+   /module/FindosgText
+   /module/FindosgUtil
+   /module/FindosgViewer
+   /module/FindosgVolume
+   /module/FindosgWidget
+   /module/FindPatch
+   /module/FindPerl
+   /module/FindPerlLibs
+   /module/FindPHP4
+   /module/FindPhysFS
+   /module/FindPike
+   /module/FindPkgConfig
+   /module/FindPNG
+   /module/FindPostgreSQL
+   /module/FindProducer
+   /module/FindProtobuf
+   /module/FindPython
+   /module/FindPython2
+   /module/FindPython3
+   /module/FindQt3
+   /module/FindQt4
+   /module/FindQuickTime
+   /module/FindRTI
+   /module/FindRuby
+   /module/FindSDL
+   /module/FindSDL_image
+   /module/FindSDL_mixer
+   /module/FindSDL_net
+   /module/FindSDL_sound
+   /module/FindSDL_ttf
+   /module/FindSelfPackers
+   /module/FindSquish
+   /module/FindSQLite3
+   /module/FindSubversion
+   /module/FindSWIG
+   /module/FindTCL
+   /module/FindTclsh
+   /module/FindTclStub
+   /module/FindThreads
+   /module/FindTIFF
+   /module/FindUnixCommands
+   /module/FindVTK
+   /module/FindVulkan
+   /module/FindWget
+   /module/FindWish
+   /module/FindwxWidgets
+   /module/FindX11
+   /module/FindXalanC
+   /module/FindXCTest
+   /module/FindXercesC
+   /module/FindXMLRPC
+   /module/FindZLIB
+
+Deprecated Modules
+^^^^^^^^^^^^^^^^^^^
+
+Deprecated Utility Modules
+==========================
+
+.. toctree::
+   :maxdepth: 1
+
+   /module/AddFileDependencies
+   /module/CMakeDetermineVSServicePack
+   /module/CMakeExpandImportedTargets
+   /module/CMakeForceCompiler
+   /module/CMakeParseArguments
+   /module/Documentation
+   /module/MacroAddFileDependencies
+   /module/TestCXXAcceptsFlag
+   /module/UseJavaClassFilelist
+   /module/UseJavaSymlinks
+   /module/UsePkgConfig
+   /module/Use_wxWindows
+   /module/WriteBasicConfigVersionFile
+   /module/WriteCompilerDetectionHeader
+
+Deprecated Find Modules
+=======================
+
+.. toctree::
+   :maxdepth: 1
+
+   /module/FindCUDA
+   /module/FindPythonInterp
+   /module/FindPythonLibs
+   /module/FindQt
+   /module/FindwxWindows
+
+Legacy CPack Modules
+====================
+
+These modules used to be mistakenly exposed to the user, and have been moved
+out of user visibility. They are for CPack internal use, and should never be
+used directly.
+
+.. toctree::
+   :maxdepth: 1
+
+   /module/CPackArchive
+   /module/CPackBundle
+   /module/CPackCygwin
+   /module/CPackDeb
+   /module/CPackDMG
+   /module/CPackFreeBSD
+   /module/CPackNSIS
+   /module/CPackNuGet
+   /module/CPackPackageMaker
+   /module/CPackProductBuild
+   /module/CPackRPM
+   /module/CPackWIX
diff --git a/share/cmake-3.22/Help/manual/cmake-packages.7.rst b/share/cmake-3.22/Help/manual/cmake-packages.7.rst
new file mode 100644
index 0000000..5c109ff
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-packages.7.rst
@@ -0,0 +1,721 @@
+.. cmake-manual-description: CMake Packages Reference
+
+cmake-packages(7)
+*****************
+
+.. only:: html
+
+   .. contents::
+
+Introduction
+============
+
+Packages provide dependency information to CMake based buildsystems.  Packages
+are found with the :command:`find_package` command.  The result of
+using :command:`find_package` is either a set of :prop_tgt:`IMPORTED` targets, or
+a set of variables corresponding to build-relevant information.
+
+Using Packages
+==============
+
+CMake provides direct support for two forms of packages,
+`Config-file Packages`_ and `Find-module Packages`_.
+Indirect support for ``pkg-config`` packages is also provided via
+the :module:`FindPkgConfig` module.  In all cases, the basic form
+of :command:`find_package` calls is the same:
+
+.. code-block:: cmake
+
+  find_package(Qt4 4.7.0 REQUIRED) # CMake provides a Qt4 find-module
+  find_package(Qt5Core 5.1.0 REQUIRED) # Qt provides a Qt5 package config file.
+  find_package(LibXml2 REQUIRED) # Use pkg-config via the LibXml2 find-module
+
+In cases where it is known that a package configuration file is provided by
+upstream, and only that should be used, the ``CONFIG`` keyword may be passed
+to :command:`find_package`:
+
+.. code-block:: cmake
+
+  find_package(Qt5Core 5.1.0 CONFIG REQUIRED)
+  find_package(Qt5Gui 5.1.0 CONFIG)
+
+Similarly, the ``MODULE`` keyword says to use only a find-module:
+
+.. code-block:: cmake
+
+  find_package(Qt4 4.7.0 MODULE REQUIRED)
+
+Specifying the type of package explicitly improves the error message shown to
+the user if it is not found.
+
+Both types of packages also support specifying components of a package,
+either after the ``REQUIRED`` keyword:
+
+.. code-block:: cmake
+
+  find_package(Qt5 5.1.0 CONFIG REQUIRED Widgets Xml Sql)
+
+or as a separate ``COMPONENTS`` list:
+
+.. code-block:: cmake
+
+  find_package(Qt5 5.1.0 COMPONENTS Widgets Xml Sql)
+
+or as a separate ``OPTIONAL_COMPONENTS`` list:
+
+.. code-block:: cmake
+
+  find_package(Qt5 5.1.0 COMPONENTS Widgets
+                         OPTIONAL_COMPONENTS Xml Sql
+  )
+
+Handling of ``COMPONENTS`` and ``OPTIONAL_COMPONENTS`` is defined by the
+package.
+
+By setting the :variable:`CMAKE_DISABLE_FIND_PACKAGE_<PackageName>` variable to
+``TRUE``, the ``<PackageName>`` package will not be searched, and will always
+be ``NOTFOUND``. Likewise, setting the
+:variable:`CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>` to ``TRUE`` will make the
+package REQUIRED.
+
+.. _`Config File Packages`:
+
+Config-file Packages
+--------------------
+
+A config-file package is a set of files provided by upstreams for downstreams
+to use. CMake searches in a number of locations for package configuration files, as
+described in the :command:`find_package` documentation.  The most simple way for
+a CMake user to tell :manual:`cmake(1)` to search in a non-standard prefix for
+a package is to set the ``CMAKE_PREFIX_PATH`` cache variable.
+
+Config-file packages are provided by upstream vendors as part of development
+packages, that is, they belong with the header files and any other files
+provided to assist downstreams in using the package.
+
+A set of variables which provide package status information are also set
+automatically when using a config-file package.  The ``<PackageName>_FOUND``
+variable is set to true or false, depending on whether the package was
+found.  The ``<PackageName>_DIR`` cache variable is set to the location of the
+package configuration file.
+
+Find-module Packages
+--------------------
+
+A find module is a file with a set of rules for finding the required pieces of
+a dependency, primarily header files and libraries.  Typically, a find module
+is needed when the upstream is not built with CMake, or is not CMake-aware
+enough to otherwise provide a package configuration file.  Unlike a package configuration
+file, it is not shipped with upstream, but is used by downstream to find the
+files by guessing locations of files with platform-specific hints.
+
+Unlike the case of an upstream-provided package configuration file, no single point
+of reference identifies the package as being found, so the ``<PackageName>_FOUND``
+variable is not automatically set by the :command:`find_package` command.  It
+can still be expected to be set by convention however and should be set by
+the author of the Find-module.  Similarly there is no ``<PackageName>_DIR`` variable,
+but each of the artifacts such as library locations and header file locations
+provide a separate cache variable.
+
+See the :manual:`cmake-developer(7)` manual for more information about creating
+Find-module files.
+
+Package Layout
+==============
+
+A config-file package consists of a `Package Configuration File`_ and
+optionally a `Package Version File`_ provided with the project distribution.
+
+Package Configuration File
+--------------------------
+
+Consider a project ``Foo`` that installs the following files::
+
+  <prefix>/include/foo-1.2/foo.h
+  <prefix>/lib/foo-1.2/libfoo.a
+
+It may also provide a CMake package configuration file::
+
+  <prefix>/lib/cmake/foo-1.2/FooConfig.cmake
+
+with content defining :prop_tgt:`IMPORTED` targets, or defining variables, such
+as:
+
+.. code-block:: cmake
+
+  # ...
+  # (compute PREFIX relative to file location)
+  # ...
+  set(Foo_INCLUDE_DIRS ${PREFIX}/include/foo-1.2)
+  set(Foo_LIBRARIES ${PREFIX}/lib/foo-1.2/libfoo.a)
+
+If another project wishes to use ``Foo`` it need only to locate the ``FooConfig.cmake``
+file and load it to get all the information it needs about package content
+locations.  Since the package configuration file is provided by the package
+installation it already knows all the file locations.
+
+The :command:`find_package` command may be used to search for the package
+configuration file.  This command constructs a set of installation prefixes
+and searches under each prefix in several locations.  Given the name ``Foo``,
+it looks for a file called ``FooConfig.cmake`` or ``foo-config.cmake``.
+The full set of locations is specified in the :command:`find_package` command
+documentation. One place it looks is::
+
+ <prefix>/lib/cmake/Foo*/
+
+where ``Foo*`` is a case-insensitive globbing expression.  In our example the
+globbing expression will match ``<prefix>/lib/cmake/foo-1.2`` and the package
+configuration file will be found.
+
+Once found, a package configuration file is immediately loaded.  It, together
+with a package version file, contains all the information the project needs to
+use the package.
+
+Package Version File
+--------------------
+
+When the :command:`find_package` command finds a candidate package configuration
+file it looks next to it for a version file. The version file is loaded to test
+whether the package version is an acceptable match for the version requested.
+If the version file claims compatibility the configuration file is accepted.
+Otherwise it is ignored.
+
+The name of the package version file must match that of the package configuration
+file but has either ``-version`` or ``Version`` appended to the name before
+the ``.cmake`` extension.  For example, the files::
+
+ <prefix>/lib/cmake/foo-1.3/foo-config.cmake
+ <prefix>/lib/cmake/foo-1.3/foo-config-version.cmake
+
+and::
+
+ <prefix>/lib/cmake/bar-4.2/BarConfig.cmake
+ <prefix>/lib/cmake/bar-4.2/BarConfigVersion.cmake
+
+are each pairs of package configuration files and corresponding package version
+files.
+
+When the :command:`find_package` command loads a version file it first sets the
+following variables:
+
+``PACKAGE_FIND_NAME``
+ The ``<PackageName>``
+
+``PACKAGE_FIND_VERSION``
+ Full requested version string
+
+``PACKAGE_FIND_VERSION_MAJOR``
+ Major version if requested, else 0
+
+``PACKAGE_FIND_VERSION_MINOR``
+ Minor version if requested, else 0
+
+``PACKAGE_FIND_VERSION_PATCH``
+ Patch version if requested, else 0
+
+``PACKAGE_FIND_VERSION_TWEAK``
+ Tweak version if requested, else 0
+
+``PACKAGE_FIND_VERSION_COUNT``
+ Number of version components, 0 to 4
+
+The version file must use these variables to check whether it is compatible or
+an exact match for the requested version and set the following variables with
+results:
+
+``PACKAGE_VERSION``
+ Full provided version string
+
+``PACKAGE_VERSION_EXACT``
+ True if version is exact match
+
+``PACKAGE_VERSION_COMPATIBLE``
+ True if version is compatible
+
+``PACKAGE_VERSION_UNSUITABLE``
+ True if unsuitable as any version
+
+Version files are loaded in a nested scope so they are free to set any variables
+they wish as part of their computation. The find_package command wipes out the
+scope when the version file has completed and it has checked the output
+variables. When the version file claims to be an acceptable match for the
+requested version the find_package command sets the following variables for
+use by the project:
+
+``<PackageName>_VERSION``
+ Full provided version string
+
+``<PackageName>_VERSION_MAJOR``
+ Major version if provided, else 0
+
+``<PackageName>_VERSION_MINOR``
+ Minor version if provided, else 0
+
+``<PackageName>_VERSION_PATCH``
+ Patch version if provided, else 0
+
+``<PackageName>_VERSION_TWEAK``
+ Tweak version if provided, else 0
+
+``<PackageName>_VERSION_COUNT``
+ Number of version components, 0 to 4
+
+The variables report the version of the package that was actually found.
+The ``<PackageName>`` part of their name matches the argument given to the
+:command:`find_package` command.
+
+.. _`Creating Packages`:
+
+Creating Packages
+=================
+
+Usually, the upstream depends on CMake itself and can use some CMake facilities
+for creating the package files. Consider an upstream which provides a single
+shared library:
+
+.. code-block:: cmake
+
+  project(UpstreamLib)
+
+  set(CMAKE_INCLUDE_CURRENT_DIR ON)
+  set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)
+
+  set(Upstream_VERSION 3.4.1)
+
+  include(GenerateExportHeader)
+
+  add_library(ClimbingStats SHARED climbingstats.cpp)
+  generate_export_header(ClimbingStats)
+  set_property(TARGET ClimbingStats PROPERTY VERSION ${Upstream_VERSION})
+  set_property(TARGET ClimbingStats PROPERTY SOVERSION 3)
+  set_property(TARGET ClimbingStats PROPERTY
+    INTERFACE_ClimbingStats_MAJOR_VERSION 3)
+  set_property(TARGET ClimbingStats APPEND PROPERTY
+    COMPATIBLE_INTERFACE_STRING ClimbingStats_MAJOR_VERSION
+  )
+
+  install(TARGETS ClimbingStats EXPORT ClimbingStatsTargets
+    LIBRARY DESTINATION lib
+    ARCHIVE DESTINATION lib
+    RUNTIME DESTINATION bin
+    INCLUDES DESTINATION include
+  )
+  install(
+    FILES
+      climbingstats.h
+      "${CMAKE_CURRENT_BINARY_DIR}/climbingstats_export.h"
+    DESTINATION
+      include
+    COMPONENT
+      Devel
+  )
+
+  include(CMakePackageConfigHelpers)
+  write_basic_package_version_file(
+    "${CMAKE_CURRENT_BINARY_DIR}/ClimbingStats/ClimbingStatsConfigVersion.cmake"
+    VERSION ${Upstream_VERSION}
+    COMPATIBILITY AnyNewerVersion
+  )
+
+  export(EXPORT ClimbingStatsTargets
+    FILE "${CMAKE_CURRENT_BINARY_DIR}/ClimbingStats/ClimbingStatsTargets.cmake"
+    NAMESPACE Upstream::
+  )
+  configure_file(cmake/ClimbingStatsConfig.cmake
+    "${CMAKE_CURRENT_BINARY_DIR}/ClimbingStats/ClimbingStatsConfig.cmake"
+    COPYONLY
+  )
+
+  set(ConfigPackageLocation lib/cmake/ClimbingStats)
+  install(EXPORT ClimbingStatsTargets
+    FILE
+      ClimbingStatsTargets.cmake
+    NAMESPACE
+      Upstream::
+    DESTINATION
+      ${ConfigPackageLocation}
+  )
+  install(
+    FILES
+      cmake/ClimbingStatsConfig.cmake
+      "${CMAKE_CURRENT_BINARY_DIR}/ClimbingStats/ClimbingStatsConfigVersion.cmake"
+    DESTINATION
+      ${ConfigPackageLocation}
+    COMPONENT
+      Devel
+  )
+
+The :module:`CMakePackageConfigHelpers` module provides a macro for creating
+a simple ``ConfigVersion.cmake`` file.  This file sets the version of the
+package.  It is read by CMake when :command:`find_package` is called to
+determine the compatibility with the requested version, and to set some
+version-specific variables ``<PackageName>_VERSION``, ``<PackageName>_VERSION_MAJOR``,
+``<PackageName>_VERSION_MINOR`` etc.  The :command:`install(EXPORT)` command is
+used to export the targets in the ``ClimbingStatsTargets`` export-set, defined
+previously by the :command:`install(TARGETS)` command. This command generates
+the ``ClimbingStatsTargets.cmake`` file to contain :prop_tgt:`IMPORTED`
+targets, suitable for use by downstreams and arranges to install it to
+``lib/cmake/ClimbingStats``.  The generated ``ClimbingStatsConfigVersion.cmake``
+and a ``cmake/ClimbingStatsConfig.cmake`` are installed to the same location,
+completing the package.
+
+The generated :prop_tgt:`IMPORTED` targets have appropriate properties set
+to define their :ref:`usage requirements <Target Usage Requirements>`, such as
+:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES`,
+:prop_tgt:`INTERFACE_COMPILE_DEFINITIONS` and other relevant built-in
+``INTERFACE_`` properties.  The ``INTERFACE`` variant of user-defined
+properties listed in :prop_tgt:`COMPATIBLE_INTERFACE_STRING` and
+other :ref:`Compatible Interface Properties` are also propagated to the
+generated :prop_tgt:`IMPORTED` targets.  In the above case,
+``ClimbingStats_MAJOR_VERSION`` is defined as a string which must be
+compatible among the dependencies of any depender.  By setting this custom
+defined user property in this version and in the next version of
+``ClimbingStats``, :manual:`cmake(1)` will issue a diagnostic if there is an
+attempt to use version 3 together with version 4.  Packages can choose to
+employ such a pattern if different major versions of the package are designed
+to be incompatible.
+
+A ``NAMESPACE`` with double-colons is specified when exporting the targets
+for installation.  This convention of double-colons gives CMake a hint that
+the name is an :prop_tgt:`IMPORTED` target when it is used by downstreams
+with the :command:`target_link_libraries` command.  This way, CMake can
+issue a diagnostic if the package providing it has not yet been found.
+
+In this case, when using :command:`install(TARGETS)` the ``INCLUDES DESTINATION``
+was specified.  This causes the ``IMPORTED`` targets to have their
+:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` populated with the ``include``
+directory in the :variable:`CMAKE_INSTALL_PREFIX`.  When the ``IMPORTED``
+target is used by downstream, it automatically consumes the entries from
+that property.
+
+Creating a Package Configuration File
+-------------------------------------
+
+In this case, the ``ClimbingStatsConfig.cmake`` file could be as simple as:
+
+.. code-block:: cmake
+
+  include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake")
+
+As this allows downstreams to use the ``IMPORTED`` targets.  If any macros
+should be provided by the ``ClimbingStats`` package, they should
+be in a separate file which is installed to the same location as the
+``ClimbingStatsConfig.cmake`` file, and included from there.
+
+This can also be extended to cover dependencies:
+
+.. code-block:: cmake
+
+  # ...
+  add_library(ClimbingStats SHARED climbingstats.cpp)
+  generate_export_header(ClimbingStats)
+
+  find_package(Stats 2.6.4 REQUIRED)
+  target_link_libraries(ClimbingStats PUBLIC Stats::Types)
+
+As the ``Stats::Types`` target is a ``PUBLIC`` dependency of ``ClimbingStats``,
+downstreams must also find the ``Stats`` package and link to the ``Stats::Types``
+library.  The ``Stats`` package should be found in the ``ClimbingStatsConfig.cmake``
+file to ensure this.  The ``find_dependency`` macro from the
+:module:`CMakeFindDependencyMacro` helps with this by propagating
+whether the package is ``REQUIRED``, or ``QUIET`` etc.  All ``REQUIRED``
+dependencies of a package should be found in the ``Config.cmake`` file:
+
+.. code-block:: cmake
+
+  include(CMakeFindDependencyMacro)
+  find_dependency(Stats 2.6.4)
+
+  include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake")
+  include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsMacros.cmake")
+
+The ``find_dependency`` macro also sets ``ClimbingStats_FOUND`` to ``False`` if
+the dependency is not found, along with a diagnostic that the ``ClimbingStats``
+package can not be used without the ``Stats`` package.
+
+If ``COMPONENTS`` are specified when the downstream uses :command:`find_package`,
+they are listed in the ``<PackageName>_FIND_COMPONENTS`` variable. If a particular
+component is non-optional, then the ``<PackageName>_FIND_REQUIRED_<comp>`` will
+be true. This can be tested with logic in the package configuration file:
+
+.. code-block:: cmake
+
+  include(CMakeFindDependencyMacro)
+  find_dependency(Stats 2.6.4)
+
+  include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake")
+  include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsMacros.cmake")
+
+  set(_supported_components Plot Table)
+
+  foreach(_comp ${ClimbingStats_FIND_COMPONENTS})
+    if (NOT ";${_supported_components};" MATCHES ";${_comp};")
+      set(ClimbingStats_FOUND False)
+      set(ClimbingStats_NOT_FOUND_MESSAGE "Unsupported component: ${_comp}")
+    endif()
+    include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStats${_comp}Targets.cmake")
+  endforeach()
+
+Here, the ``ClimbingStats_NOT_FOUND_MESSAGE`` is set to a diagnosis that the package
+could not be found because an invalid component was specified.  This message
+variable can be set for any case where the ``_FOUND`` variable is set to ``False``,
+and will be displayed to the user.
+
+Creating a Package Configuration File for the Build Tree
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The :command:`export(EXPORT)` command creates an :prop_tgt:`IMPORTED` targets
+definition file which is specific to the build-tree, and is not relocatable.
+This can similarly be used with a suitable package configuration file and
+package version file to define a package for the build tree which may be used
+without installation.  Consumers of the build tree can simply ensure that the
+:variable:`CMAKE_PREFIX_PATH` contains the build directory, or set the
+``ClimbingStats_DIR`` to ``<build_dir>/ClimbingStats`` in the cache.
+
+.. _`Creating Relocatable Packages`:
+
+Creating Relocatable Packages
+-----------------------------
+
+A relocatable package must not reference absolute paths of files on
+the machine where the package is built that will not exist on the
+machines where the package may be installed.
+
+Packages created by :command:`install(EXPORT)` are designed to be relocatable,
+using paths relative to the location of the package itself.  When defining
+the interface of a target for ``EXPORT``, keep in mind that the include
+directories should be specified as relative paths which are relative to the
+:variable:`CMAKE_INSTALL_PREFIX`:
+
+.. code-block:: cmake
+
+  target_include_directories(tgt INTERFACE
+    # Wrong, not relocatable:
+    $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include/TgtName>
+  )
+
+  target_include_directories(tgt INTERFACE
+    # Ok, relocatable:
+    $<INSTALL_INTERFACE:include/TgtName>
+  )
+
+The ``$<INSTALL_PREFIX>``
+:manual:`generator expression <cmake-generator-expressions(7)>` may be used as
+a placeholder for the install prefix without resulting in a non-relocatable
+package.  This is necessary if complex generator expressions are used:
+
+.. code-block:: cmake
+
+  target_include_directories(tgt INTERFACE
+    # Ok, relocatable:
+    $<INSTALL_INTERFACE:$<$<CONFIG:Debug>:$<INSTALL_PREFIX>/include/TgtName>>
+  )
+
+This also applies to paths referencing external dependencies.
+It is not advisable to populate any properties which may contain
+paths, such as :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` and
+:prop_tgt:`INTERFACE_LINK_LIBRARIES`, with paths relevant to dependencies.
+For example, this code may not work well for a relocatable package:
+
+.. code-block:: cmake
+
+  target_link_libraries(ClimbingStats INTERFACE
+    ${Foo_LIBRARIES} ${Bar_LIBRARIES}
+    )
+  target_include_directories(ClimbingStats INTERFACE
+    "$<INSTALL_INTERFACE:${Foo_INCLUDE_DIRS};${Bar_INCLUDE_DIRS}>"
+    )
+
+The referenced variables may contain the absolute paths to libraries
+and include directories **as found on the machine the package was made on**.
+This would create a package with hard-coded paths to dependencies and not
+suitable for relocation.
+
+Ideally such dependencies should be used through their own
+:ref:`IMPORTED targets <Imported Targets>` that have their own
+:prop_tgt:`IMPORTED_LOCATION` and usage requirement properties
+such as :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` populated
+appropriately.  Those imported targets may then be used with
+the :command:`target_link_libraries` command for ``ClimbingStats``:
+
+.. code-block:: cmake
+
+  target_link_libraries(ClimbingStats INTERFACE Foo::Foo Bar::Bar)
+
+With this approach the package references its external dependencies
+only through the names of :ref:`IMPORTED targets <Imported Targets>`.
+When a consumer uses the installed package, the consumer will run the
+appropriate :command:`find_package` commands (via the ``find_dependency``
+macro described above) to find the dependencies and populate the
+imported targets with appropriate paths on their own machine.
+
+Unfortunately many :manual:`modules <cmake-modules(7)>` shipped with
+CMake do not yet provide :ref:`IMPORTED targets <Imported Targets>`
+because their development pre-dated this approach.  This may improve
+incrementally over time.  Workarounds to create relocatable packages
+using such modules include:
+
+* When building the package, specify each ``Foo_LIBRARY`` cache
+  entry as just a library name, e.g. ``-DFoo_LIBRARY=foo``.  This
+  tells the corresponding find module to populate the ``Foo_LIBRARIES``
+  with just ``foo`` to ask the linker to search for the library
+  instead of hard-coding a path.
+
+* Or, after installing the package content but before creating the
+  package installation binary for redistribution, manually replace
+  the absolute paths with placeholders for substitution by the
+  installation tool when the package is installed.
+
+.. _`Package Registry`:
+
+Package Registry
+================
+
+CMake provides two central locations to register packages that have
+been built or installed anywhere on a system:
+
+* `User Package Registry`_
+* `System Package Registry`_
+
+The registries are especially useful to help projects find packages in
+non-standard install locations or directly in their own build trees.
+A project may populate either the user or system registry (using its own
+means, see below) to refer to its location.
+In either case the package should store at the registered location a
+`Package Configuration File`_ (``<PackageName>Config.cmake``) and optionally a
+`Package Version File`_ (``<PackageName>ConfigVersion.cmake``).
+
+The :command:`find_package` command searches the two package registries
+as two of the search steps specified in its documentation.  If it has
+sufficient permissions it also removes stale package registry entries
+that refer to directories that do not exist or do not contain a matching
+package configuration file.
+
+.. _`User Package Registry`:
+
+User Package Registry
+---------------------
+
+The User Package Registry is stored in a per-user location.
+The :command:`export(PACKAGE)` command may be used to register a project
+build tree in the user package registry.  CMake currently provides no
+interface to add install trees to the user package registry.  Installers
+must be manually taught to register their packages if desired.
+
+On Windows the user package registry is stored in the Windows registry
+under a key in ``HKEY_CURRENT_USER``.
+
+A ``<PackageName>`` may appear under registry key::
+
+  HKEY_CURRENT_USER\Software\Kitware\CMake\Packages\<PackageName>
+
+as a ``REG_SZ`` value, with arbitrary name, that specifies the directory
+containing the package configuration file.
+
+On UNIX platforms the user package registry is stored in the user home
+directory under ``~/.cmake/packages``.  A ``<PackageName>`` may appear under
+the directory::
+
+  ~/.cmake/packages/<PackageName>
+
+as a file, with arbitrary name, whose content specifies the directory
+containing the package configuration file.
+
+.. _`System Package Registry`:
+
+System Package Registry
+-----------------------
+
+The System Package Registry is stored in a system-wide location.
+CMake currently provides no interface to add to the system package registry.
+Installers must be manually taught to register their packages if desired.
+
+On Windows the system package registry is stored in the Windows registry
+under a key in ``HKEY_LOCAL_MACHINE``.  A ``<PackageName>`` may appear under
+registry key::
+
+  HKEY_LOCAL_MACHINE\Software\Kitware\CMake\Packages\<PackageName>
+
+as a ``REG_SZ`` value, with arbitrary name, that specifies the directory
+containing the package configuration file.
+
+There is no system package registry on non-Windows platforms.
+
+.. _`Disabling the Package Registry`:
+
+Disabling the Package Registry
+------------------------------
+
+In some cases using the Package Registries is not desirable. CMake
+allows one to disable them using the following variables:
+
+* The :command:`export(PACKAGE)` command does not populate the user
+  package registry when :policy:`CMP0090` is set to ``NEW`` unless the
+  :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY` variable explicitly enables it.
+  When :policy:`CMP0090` is *not* set to ``NEW`` then
+  :command:`export(PACKAGE)` populates the user package registry unless
+  the :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` variable explicitly
+  disables it.
+* :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` disables the
+  User Package Registry in all the :command:`find_package` calls when
+  set to ``FALSE``.
+* Deprecated :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` disables the
+  User Package Registry in all the :command:`find_package` calls when set
+  to ``TRUE``. This variable is ignored when
+  :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` has been set.
+* :variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` disables
+  the System Package Registry in all the :command:`find_package` calls.
+
+Package Registry Example
+------------------------
+
+A simple convention for naming package registry entries is to use content
+hashes.  They are deterministic and unlikely to collide
+(:command:`export(PACKAGE)` uses this approach).
+The name of an entry referencing a specific directory is simply the content
+hash of the directory path itself.
+
+If a project arranges for package registry entries to exist, such as::
+
+ > reg query HKCU\Software\Kitware\CMake\Packages\MyPackage
+ HKEY_CURRENT_USER\Software\Kitware\CMake\Packages\MyPackage
+  45e7d55f13b87179bb12f907c8de6fc4 REG_SZ c:/Users/Me/Work/lib/cmake/MyPackage
+  7b4a9844f681c80ce93190d4e3185db9 REG_SZ c:/Users/Me/Work/MyPackage-build
+
+or::
+
+ $ cat ~/.cmake/packages/MyPackage/7d1fb77e07ce59a81bed093bbee945bd
+ /home/me/work/lib/cmake/MyPackage
+ $ cat ~/.cmake/packages/MyPackage/f92c1db873a1937f3100706657c63e07
+ /home/me/work/MyPackage-build
+
+then the ``CMakeLists.txt`` code:
+
+.. code-block:: cmake
+
+  find_package(MyPackage)
+
+will search the registered locations for package configuration files
+(``MyPackageConfig.cmake``).  The search order among package registry
+entries for a single package is unspecified and the entry names
+(hashes in this example) have no meaning.  Registered locations may
+contain package version files (``MyPackageConfigVersion.cmake``) to
+tell :command:`find_package` whether a specific location is suitable
+for the version requested.
+
+Package Registry Ownership
+--------------------------
+
+Package registry entries are individually owned by the project installations
+that they reference.  A package installer is responsible for adding its own
+entry and the corresponding uninstaller is responsible for removing it.
+
+The :command:`export(PACKAGE)` command populates the user package registry
+with the location of a project build tree.  Build trees tend to be deleted by
+developers and have no "uninstall" event that could trigger removal of their
+entries.  In order to keep the registries clean the :command:`find_package`
+command automatically removes stale entries it encounters if it has sufficient
+permissions.  CMake provides no interface to remove an entry referencing an
+existing build tree once :command:`export(PACKAGE)` has been invoked.
+However, if the project removes its package configuration file from the build
+tree then the entry referencing the location will be considered stale.
diff --git a/share/cmake-3.22/Help/manual/cmake-policies.7.rst b/share/cmake-3.22/Help/manual/cmake-policies.7.rst
new file mode 100644
index 0000000..3df4f9f
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-policies.7.rst
@@ -0,0 +1,343 @@
+.. cmake-manual-description: CMake Policies Reference
+
+cmake-policies(7)
+*****************
+
+.. only:: html
+
+   .. contents::
+
+Introduction
+============
+
+Policies in CMake are used to preserve backward compatible behavior
+across multiple releases.  When a new policy is introduced, newer CMake
+versions will begin to warn about the backward compatible behavior.  It
+is possible to disable the warning by explicitly requesting the OLD, or
+backward compatible behavior using the :command:`cmake_policy` command.
+It is also possible to request ``NEW``, or non-backward compatible behavior
+for a policy, also avoiding the warning.  Each policy can also be set to
+either ``NEW`` or ``OLD`` behavior explicitly on the command line with the
+:variable:`CMAKE_POLICY_DEFAULT_CMP<NNNN>` variable.
+
+A policy is a deprecation mechanism and not a reliable feature toggle.
+A policy should almost never be set to ``OLD``, except to silence warnings
+in an otherwise frozen or stable codebase, or temporarily as part of a
+larger migration path. The ``OLD`` behavior of each policy is undesirable
+and will be replaced with an error condition in a future release.
+
+The :command:`cmake_minimum_required` command does more than report an
+error if a too-old version of CMake is used to build a project.  It
+also sets all policies introduced in that CMake version or earlier to
+``NEW`` behavior.  To manage policies without increasing the minimum required
+CMake version, the :command:`if(POLICY)` command may be used:
+
+.. code-block:: cmake
+
+  if(POLICY CMP0990)
+    cmake_policy(SET CMP0990 NEW)
+  endif()
+
+This has the effect of using the ``NEW`` behavior with newer CMake releases which
+users may be using and not issuing a compatibility warning.
+
+The setting of a policy is confined in some cases to not propagate to the
+parent scope.  For example, if the files read by the :command:`include` command
+or the :command:`find_package` command contain a use of :command:`cmake_policy`,
+that policy setting will not affect the caller by default.  Both commands accept
+an optional ``NO_POLICY_SCOPE`` keyword to control this behavior.
+
+The :variable:`CMAKE_MINIMUM_REQUIRED_VERSION` variable may also be used
+to determine whether to report an error on use of deprecated macros or
+functions.
+
+Policies Introduced by CMake 3.22
+=================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0128: Selection of language standard and extension flags improved. </policy/CMP0128>
+   CMP0127: cmake_dependent_option() supports full Condition Syntax. </policy/CMP0127>
+
+Policies Introduced by CMake 3.21
+=================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0126: set(CACHE) does not remove a normal variable of the same name. </policy/CMP0126>
+   CMP0125: find_(path|file|library|program) have consistent behavior for cache variables. </policy/CMP0125>
+   CMP0124: foreach() loop variables are only available in the loop scope. </policy/CMP0124>
+   CMP0123: ARMClang cpu/arch compile and link flags must be set explicitly. </policy/CMP0123>
+   CMP0122: UseSWIG use standard library name conventions for csharp language. </policy/CMP0122>
+   CMP0121: The list command detects invalid indices. </policy/CMP0121>
+
+Policies Introduced by CMake 3.20
+=================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0120: The WriteCompilerDetectionHeader module is removed. </policy/CMP0120>
+   CMP0119: LANGUAGE source file property explicitly compiles as language. </policy/CMP0119>
+   CMP0118: The GENERATED source file property is now visible in all directories. </policy/CMP0118>
+   CMP0117: MSVC RTTI flag /GR is not added to CMAKE_CXX_FLAGS by default. </policy/CMP0117>
+   CMP0116: Ninja generators transform DEPFILEs from add_custom_command(). </policy/CMP0116>
+   CMP0115: Source file extensions must be explicit. </policy/CMP0115>
+
+Policies Introduced by CMake 3.19
+=================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0114: ExternalProject step targets fully adopt their steps. </policy/CMP0114>
+   CMP0113: Makefile generators do not repeat custom commands from target dependencies. </policy/CMP0113>
+   CMP0112: Target file component generator expressions do not add target dependencies. </policy/CMP0112>
+   CMP0111: An imported target missing its location property fails during generation. </policy/CMP0111>
+   CMP0110: add_test() supports arbitrary characters in test names. </policy/CMP0110>
+   CMP0109: find_program() requires permission to execute but not to read. </policy/CMP0109>
+
+Policies Introduced by CMake 3.18
+=================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0108: A target cannot link to itself through an alias. </policy/CMP0108>
+   CMP0107: An ALIAS target cannot overwrite another target. </policy/CMP0107>
+   CMP0106: The Documentation module is removed. </policy/CMP0106>
+   CMP0105: Device link step uses the link options. </policy/CMP0105>
+   CMP0104: CMAKE_CUDA_ARCHITECTURES now detected for NVCC, empty CUDA_ARCHITECTURES not allowed. </policy/CMP0104>
+   CMP0103: Multiple export() with same FILE without APPEND is not allowed. </policy/CMP0103>
+
+Policies Introduced by CMake 3.17
+=================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0102: mark_as_advanced() does nothing if a cache entry does not exist. </policy/CMP0102>
+   CMP0101: target_compile_options honors BEFORE keyword in all scopes. </policy/CMP0101>
+   CMP0100: Let AUTOMOC and AUTOUIC process .hh header files. </policy/CMP0100>
+   CMP0099: Link properties are transitive over private dependency on static libraries. </policy/CMP0099>
+   CMP0098: FindFLEX runs flex in CMAKE_CURRENT_BINARY_DIR when executing. </policy/CMP0098>
+
+Policies Introduced by CMake 3.16
+=================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0097: ExternalProject_Add with GIT_SUBMODULES "" initializes no submodules. </policy/CMP0097>
+   CMP0096: project() preserves leading zeros in version components. </policy/CMP0096>
+   CMP0095: RPATH entries are properly escaped in the intermediary CMake install script. </policy/CMP0095>
+
+Policies Introduced by CMake 3.15
+=================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0094: FindPython3, FindPython2 and FindPython use LOCATION for lookup strategy. </policy/CMP0094>
+   CMP0093: FindBoost reports Boost_VERSION in x.y.z format. </policy/CMP0093>
+   CMP0092: MSVC warning flags are not in CMAKE_{C,CXX}_FLAGS by default. </policy/CMP0092>
+   CMP0091: MSVC runtime library flags are selected by an abstraction. </policy/CMP0091>
+   CMP0090: export(PACKAGE) does not populate package registry by default. </policy/CMP0090>
+   CMP0089: Compiler id for IBM Clang-based XL compilers is now XLClang. </policy/CMP0089>
+
+Policies Introduced by CMake 3.14
+=================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0088: FindBISON runs bison in CMAKE_CURRENT_BINARY_DIR when executing. </policy/CMP0088>
+   CMP0087: install(SCRIPT | CODE) supports generator expressions. </policy/CMP0087>
+   CMP0086: UseSWIG honors SWIG_MODULE_NAME via -module flag. </policy/CMP0086>
+   CMP0085: IN_LIST generator expression handles empty list items. </policy/CMP0085>
+   CMP0084: The FindQt module does not exist for find_package(). </policy/CMP0084>
+   CMP0083: Add PIE options when linking executable. </policy/CMP0083>
+   CMP0082: Install rules from add_subdirectory() are interleaved with those in caller. </policy/CMP0082>
+
+
+Policies Introduced by CMake 3.13
+=================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0081: Relative paths not allowed in LINK_DIRECTORIES target property. </policy/CMP0081>
+   CMP0080: BundleUtilities cannot be included at configure time. </policy/CMP0080>
+   CMP0079: target_link_libraries allows use with targets in other directories. </policy/CMP0079>
+   CMP0078: UseSWIG generates standard target names. </policy/CMP0078>
+   CMP0077: option() honors normal variables. </policy/CMP0077>
+   CMP0076: target_sources() command converts relative paths to absolute. </policy/CMP0076>
+
+Policies Introduced by CMake 3.12
+=================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0075: Include file check macros honor CMAKE_REQUIRED_LIBRARIES. </policy/CMP0075>
+   CMP0074: find_package uses PackageName_ROOT variables. </policy/CMP0074>
+   CMP0073: Do not produce legacy _LIB_DEPENDS cache entries. </policy/CMP0073>
+
+Policies Introduced by CMake 3.11
+=================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0072: FindOpenGL prefers GLVND by default when available. </policy/CMP0072>
+
+Policies Introduced by CMake 3.10
+=================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0071: Let AUTOMOC and AUTOUIC process GENERATED files. </policy/CMP0071>
+   CMP0070: Define file(GENERATE) behavior for relative paths. </policy/CMP0070>
+
+Policies Introduced by CMake 3.9
+================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0069: INTERPROCEDURAL_OPTIMIZATION is enforced when enabled. </policy/CMP0069>
+   CMP0068: RPATH settings on macOS do not affect install_name. </policy/CMP0068>
+
+Policies Introduced by CMake 3.8
+================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0067: Honor language standard in try_compile() source-file signature. </policy/CMP0067>
+
+Policies Introduced by CMake 3.7
+================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0066: Honor per-config flags in try_compile() source-file signature. </policy/CMP0066>
+
+Policies Introduced by CMake 3.4
+================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0065: Do not add flags to export symbols from executables without the ENABLE_EXPORTS target property. </policy/CMP0065>
+   CMP0064: Support new TEST if() operator. </policy/CMP0064>
+
+Policies Introduced by CMake 3.3
+================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0063: Honor visibility properties for all target types. </policy/CMP0063>
+   CMP0062: Disallow install() of export() result. </policy/CMP0062>
+   CMP0061: CTest does not by default tell make to ignore errors (-i). </policy/CMP0061>
+   CMP0060: Link libraries by full path even in implicit directories. </policy/CMP0060>
+   CMP0059: Do not treat DEFINITIONS as a built-in directory property. </policy/CMP0059>
+   CMP0058: Ninja requires custom command byproducts to be explicit. </policy/CMP0058>
+   CMP0057: Support new IN_LIST if() operator. </policy/CMP0057>
+
+Policies Introduced by CMake 3.2
+================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0056: Honor link flags in try_compile() source-file signature. </policy/CMP0056>
+   CMP0055: Strict checking for break() command. </policy/CMP0055>
+
+Policies Introduced by CMake 3.1
+================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0054: Only interpret if() arguments as variables or keywords when unquoted. </policy/CMP0054>
+   CMP0053: Simplify variable reference and escape sequence evaluation. </policy/CMP0053>
+   CMP0052: Reject source and build dirs in installed INTERFACE_INCLUDE_DIRECTORIES. </policy/CMP0052>
+   CMP0051: List TARGET_OBJECTS in SOURCES target property. </policy/CMP0051>
+
+Policies Introduced by CMake 3.0
+================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0050: Disallow add_custom_command SOURCE signatures. </policy/CMP0050>
+   CMP0049: Do not expand variables in target source entries. </policy/CMP0049>
+   CMP0048: project() command manages VERSION variables. </policy/CMP0048>
+   CMP0047: Use QCC compiler id for the qcc drivers on QNX. </policy/CMP0047>
+   CMP0046: Error on non-existent dependency in add_dependencies. </policy/CMP0046>
+   CMP0045: Error on non-existent target in get_target_property. </policy/CMP0045>
+   CMP0044: Case sensitive Lang_COMPILER_ID generator expressions. </policy/CMP0044>
+   CMP0043: Ignore COMPILE_DEFINITIONS_Config properties. </policy/CMP0043>
+   CMP0042: MACOSX_RPATH is enabled by default. </policy/CMP0042>
+   CMP0041: Error on relative include with generator expression. </policy/CMP0041>
+   CMP0040: The target in the TARGET signature of add_custom_command() must exist. </policy/CMP0040>
+   CMP0039: Utility targets may not have link dependencies. </policy/CMP0039>
+   CMP0038: Targets may not link directly to themselves. </policy/CMP0038>
+   CMP0037: Target names should not be reserved and should match a validity pattern. </policy/CMP0037>
+   CMP0036: The build_name command should not be called. </policy/CMP0036>
+   CMP0035: The variable_requires command should not be called. </policy/CMP0035>
+   CMP0034: The utility_source command should not be called. </policy/CMP0034>
+   CMP0033: The export_library_dependencies command should not be called. </policy/CMP0033>
+   CMP0032: The output_required_files command should not be called. </policy/CMP0032>
+   CMP0031: The load_command command should not be called. </policy/CMP0031>
+   CMP0030: The use_mangled_mesa command should not be called. </policy/CMP0030>
+   CMP0029: The subdir_depends command should not be called. </policy/CMP0029>
+   CMP0028: Double colon in target name means ALIAS or IMPORTED target. </policy/CMP0028>
+   CMP0027: Conditionally linked imported targets with missing include directories. </policy/CMP0027>
+   CMP0026: Disallow use of the LOCATION target property. </policy/CMP0026>
+   CMP0025: Compiler id for Apple Clang is now AppleClang. </policy/CMP0025>
+   CMP0024: Disallow include export result. </policy/CMP0024>
+
+Policies Introduced by CMake 2.8
+================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0023: Plain and keyword target_link_libraries signatures cannot be mixed. </policy/CMP0023>
+   CMP0022: INTERFACE_LINK_LIBRARIES defines the link interface. </policy/CMP0022>
+   CMP0021: Fatal error on relative paths in INCLUDE_DIRECTORIES target property. </policy/CMP0021>
+   CMP0020: Automatically link Qt executables to qtmain target on Windows. </policy/CMP0020>
+   CMP0019: Do not re-expand variables in include and link information. </policy/CMP0019>
+   CMP0018: Ignore CMAKE_SHARED_LIBRARY_Lang_FLAGS variable. </policy/CMP0018>
+   CMP0017: Prefer files from the CMake module directory when including from there. </policy/CMP0017>
+   CMP0016: target_link_libraries() reports error if its only argument is not a target. </policy/CMP0016>
+   CMP0015: link_directories() treats paths relative to the source dir. </policy/CMP0015>
+   CMP0014: Input directories must have CMakeLists.txt. </policy/CMP0014>
+   CMP0013: Duplicate binary directories are not allowed. </policy/CMP0013>
+   CMP0012: if() recognizes numbers and boolean constants. </policy/CMP0012>
+
+Policies Introduced by CMake 2.6
+================================
+
+.. toctree::
+   :maxdepth: 1
+
+   CMP0011: Included scripts do automatic cmake_policy PUSH and POP. </policy/CMP0011>
+   CMP0010: Bad variable reference syntax is an error. </policy/CMP0010>
+   CMP0009: FILE GLOB_RECURSE calls should not follow symlinks by default. </policy/CMP0009>
+   CMP0008: Libraries linked by full-path must have a valid library file name. </policy/CMP0008>
+   CMP0007: list command no longer ignores empty elements. </policy/CMP0007>
+   CMP0006: Installing MACOSX_BUNDLE targets requires a BUNDLE DESTINATION. </policy/CMP0006>
+   CMP0005: Preprocessor definition values are now escaped automatically. </policy/CMP0005>
+   CMP0004: Libraries linked may not have leading or trailing whitespace. </policy/CMP0004>
+   CMP0003: Libraries linked via full path no longer produce linker search paths. </policy/CMP0003>
+   CMP0002: Logical target names must be globally unique. </policy/CMP0002>
+   CMP0001: CMAKE_BACKWARDS_COMPATIBILITY should no longer be used. </policy/CMP0001>
+   CMP0000: A minimum required CMake version must be specified. </policy/CMP0000>
diff --git a/share/cmake-3.22/Help/manual/cmake-presets.7.rst b/share/cmake-3.22/Help/manual/cmake-presets.7.rst
new file mode 100644
index 0000000..74e9fae
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-presets.7.rst
@@ -0,0 +1,1021 @@
+.. cmake-manual-description: CMakePresets.json
+
+cmake-presets(7)
+****************
+
+.. only:: html
+
+   .. contents::
+
+Introduction
+============
+
+One problem that CMake users often face is sharing settings with other people
+for common ways to configure a project. This may be done to support CI builds,
+or for users who frequently use the same build. CMake supports two files,
+``CMakePresets.json`` and ``CMakeUserPresets.json``, that allow users to
+specify common configure options and share them with others.
+
+``CMakePresets.json`` and ``CMakeUserPresets.json`` live in the project's root
+directory. They both have exactly the same format, and both are optional
+(though at least one must be present if ``--preset`` is specified.)
+``CMakePresets.json`` is meant to save project-wide builds, while
+``CMakeUserPresets.json`` is meant for developers to save their own local
+builds. ``CMakePresets.json`` may be checked into a version control system, and
+``CMakeUserPresets.json`` should NOT be checked in. For example, if a project
+is using Git, ``CMakePresets.json`` may be tracked, and
+``CMakeUserPresets.json`` should be added to the ``.gitignore``.
+
+Format
+======
+
+The files are a JSON document with an object as the root:
+
+.. literalinclude:: presets/example.json
+  :language: json
+
+The root object recognizes the following fields:
+
+``version``
+
+  A required integer representing the version of the JSON schema.
+  The supported versions are ``1``, ``2``, and ``3``.
+
+``cmakeMinimumRequired``
+
+  An optional object representing the minimum version of CMake needed to
+  build this project. This object consists of the following fields:
+
+  ``major``
+
+    An optional integer representing the major version.
+
+  ``minor``
+
+    An optional integer representing the minor version.
+
+  ``patch``
+
+    An optional integer representing the patch version.
+
+``vendor``
+
+  An optional map containing vendor-specific information. CMake does not
+  interpret the contents of this field except to verify that it is a map if
+  it does exist. However, the keys should be a vendor-specific domain name
+  followed by a ``/``-separated path. For example, the Example IDE 1.0 could
+  use ``example.com/ExampleIDE/1.0``. The value of each field can be anything
+  desired by the vendor, though will typically be a map.
+
+``configurePresets``
+
+  An optional array of `Configure Preset`_ objects.
+  This is allowed in preset files specifying version ``1`` or above.
+
+``buildPresets``
+
+  An optional array of `Build Preset`_ objects.
+  This is allowed in preset files specifying version ``2`` or above.
+
+``testPresets``
+
+  An optional array of `Test Preset`_ objects.
+  This is allowed in preset files specifying version ``2`` or above.
+
+Configure Preset
+^^^^^^^^^^^^^^^^
+
+Each entry of the ``configurePresets`` array is a JSON object
+that may contain the following fields:
+
+``name``
+
+  A required string representing the machine-friendly name of the preset.
+  This identifier is used in the :ref:`cmake --preset <CMake Options>` option.
+  There must not be two configure presets in the union of ``CMakePresets.json``
+  and ``CMakeUserPresets.json`` in the same directory with the same name.
+  However, a configure preset may have the same name as a build or test preset.
+
+``hidden``
+
+  An optional boolean specifying whether or not a preset should be hidden.
+  If a preset is hidden, it cannot be used in the ``--preset=`` argument,
+  will not show up in the :manual:`CMake GUI <cmake-gui(1)>`, and does not
+  have to have a valid ``generator`` or ``binaryDir``, even from
+  inheritance. ``hidden`` presets are intended to be used as a base for
+  other presets to inherit via the ``inherits`` field.
+
+``inherits``
+
+  An optional array of strings representing the names of presets to inherit
+  from. The preset will inherit all of the fields from the ``inherits``
+  presets by default (except ``name``, ``hidden``, ``inherits``,
+  ``description``, and ``displayName``), but can override them as
+  desired. If multiple ``inherits`` presets provide conflicting values for
+  the same field, the earlier preset in the ``inherits`` list will be
+  preferred. Presets in ``CMakePresets.json`` may not inherit from presets
+  in ``CMakeUserPresets.json``.
+
+  This field can also be a string, which is equivalent to an array
+  containing one string.
+
+``condition``
+
+  An optional `Condition`_ object. This is allowed in preset files specifying
+  version ``3`` or above.
+
+``vendor``
+
+  An optional map containing vendor-specific information. CMake does not
+  interpret the contents of this field except to verify that it is a map
+  if it does exist. However, it should follow the same conventions as the
+  root-level ``vendor`` field. If vendors use their own per-preset
+  ``vendor`` field, they should implement inheritance in a sensible manner
+  when appropriate.
+
+``displayName``
+
+  An optional string with a human-friendly name of the preset.
+
+``description``
+
+  An optional string with a human-friendly description of the preset.
+
+``generator``
+
+  An optional string representing the generator to use for the preset. If
+  ``generator`` is not specified, it must be inherited from the
+  ``inherits`` preset (unless this preset is ``hidden``). In version ``3``
+  or above, this field may be omitted to fall back to regular generator
+  discovery procedure.
+
+  Note that for Visual Studio generators, unlike in the command line ``-G``
+  argument, you cannot include the platform name in the generator name. Use
+  the ``architecture`` field instead.
+
+``architecture``, ``toolset``
+
+  Optional fields representing the platform and toolset, respectively, for
+  generators that support them. Each may be either a string or an object
+  with the following fields:
+
+  ``value``
+
+    An optional string representing the value.
+
+  ``strategy``
+
+    An optional string telling CMake how to handle the ``architecture`` or
+    ``toolset`` field. Valid values are:
+
+    ``"set"``
+
+      Set the respective value. This will result in an error for generators
+      that do not support the respective field.
+
+    ``"external"``
+
+      Do not set the value, even if the generator supports it. This is
+      useful if, for example, a preset uses the Ninja generator, and an IDE
+      knows how to set up the Visual C++ environment from the
+      ``architecture`` and ``toolset`` fields. In that case, CMake will
+      ignore the field, but the IDE can use them to set up the environment
+      before invoking CMake.
+
+``toolchainFile``
+
+  An optional string representing the path to the toolchain file.
+  This field supports `macro expansion`_. If a relative path is specified,
+  it is calculated relative to the build directory, and if not found,
+  relative to the source directory. This field takes precedence over any
+  :variable:`CMAKE_TOOLCHAIN_FILE` value. It is allowed in preset files
+  specifying version ``3`` or above.
+
+``binaryDir``
+
+  An optional string representing the path to the output binary directory.
+  This field supports `macro expansion`_. If a relative path is specified,
+  it is calculated relative to the source directory. If ``binaryDir`` is not
+  specified, it must be inherited from the ``inherits`` preset (unless this
+  preset is ``hidden``). In version ``3`` or above, this field may be
+  omitted.
+
+``installDir``
+
+  An optional string representing the path to the installation directory.
+  This field supports `macro expansion`_. If a relative path is specified,
+  it is calculated relative to the source directory. This is allowed in
+  preset files specifying version ``3`` or above.
+
+``cmakeExecutable``
+
+  An optional string representing the path to the CMake executable to use
+  for this preset. This is reserved for use by IDEs, and is not used by
+  CMake itself. IDEs that use this field should expand any macros in it.
+
+``cacheVariables``
+
+  An optional map of cache variables. The key is the variable name (which
+  may not be an empty string), and the value is either ``null``, a boolean
+  (which is equivalent to a value of ``"TRUE"`` or ``"FALSE"`` and a type
+  of ``BOOL``), a string representing the value of the variable (which
+  supports `macro expansion`_), or an object with the following fields:
+
+  ``type``
+
+    An optional string representing the type of the variable.
+
+  ``value``
+
+    A required string or boolean representing the value of the variable.
+    A boolean is equivalent to ``"TRUE"`` or ``"FALSE"``. This field
+    supports `macro expansion`_.
+
+  Cache variables are inherited through the ``inherits`` field, and the
+  preset's variables will be the union of its own ``cacheVariables`` and
+  the ``cacheVariables`` from all its parents. If multiple presets in this
+  union define the same variable, the standard rules of ``inherits`` are
+  applied. Setting a variable to ``null`` causes it to not be set, even if
+  a value was inherited from another preset.
+
+``environment``
+
+  An optional map of environment variables. The key is the variable name
+  (which may not be an empty string), and the value is either ``null`` or
+  a string representing the value of the variable. Each variable is set
+  regardless of whether or not a value was given to it by the process's
+  environment. This field supports `macro expansion`_, and environment
+  variables in this map may reference each other, and may be listed in any
+  order, as long as such references do not cause a cycle (for example,
+  if ``ENV_1`` is ``$env{ENV_2}``, ``ENV_2`` may not be ``$env{ENV_1}``.)
+
+  Environment variables are inherited through the ``inherits`` field, and
+  the preset's environment will be the union of its own ``environment`` and
+  the ``environment`` from all its parents. If multiple presets in this
+  union define the same variable, the standard rules of ``inherits`` are
+  applied. Setting a variable to ``null`` causes it to not be set, even if
+  a value was inherited from another preset.
+
+``warnings``
+
+  An optional object specifying the warnings to enable. The object may
+  contain the following fields:
+
+  ``dev``
+
+    An optional boolean. Equivalent to passing ``-Wdev`` or ``-Wno-dev``
+    on the command line. This may not be set to ``false`` if ``errors.dev``
+    is set to ``true``.
+
+  ``deprecated``
+
+    An optional boolean. Equivalent to passing ``-Wdeprecated`` or
+    ``-Wno-deprecated`` on the command line. This may not be set to
+    ``false`` if ``errors.deprecated`` is set to ``true``.
+
+  ``uninitialized``
+
+    An optional boolean. Setting this to ``true`` is equivalent to passing
+    ``--warn-uninitialized`` on the command line.
+
+  ``unusedCli``
+
+    An optional boolean. Setting this to ``false`` is equivalent to passing
+    ``--no-warn-unused-cli`` on the command line.
+
+  ``systemVars``
+
+    An optional boolean. Setting this to ``true`` is equivalent to passing
+    ``--check-system-vars`` on the command line.
+
+``errors``
+
+  An optional object specifying the errors to enable. The object may
+  contain the following fields:
+
+  ``dev``
+
+    An optional boolean. Equivalent to passing ``-Werror=dev`` or
+    ``-Wno-error=dev`` on the command line. This may not be set to ``true``
+    if ``warnings.dev`` is set to ``false``.
+
+  ``deprecated``
+
+    An optional boolean. Equivalent to passing ``-Werror=deprecated`` or
+    ``-Wno-error=deprecated`` on the command line. This may not be set to
+    ``true`` if ``warnings.deprecated`` is set to ``false``.
+
+``debug``
+
+  An optional object specifying debug options. The object may contain the
+  following fields:
+
+  ``output``
+
+    An optional boolean. Setting this to ``true`` is equivalent to passing
+    ``--debug-output`` on the command line.
+
+  ``tryCompile``
+
+    An optional boolean. Setting this to ``true`` is equivalent to passing
+    ``--debug-trycompile`` on the command line.
+
+  ``find``
+
+    An optional boolean. Setting this to ``true`` is equivalent to passing
+    ``--debug-find`` on the command line.
+
+Build Preset
+^^^^^^^^^^^^
+
+Each entry of the ``buildPresets`` array is a JSON object
+that may contain the following fields:
+
+``name``
+
+  A required string representing the machine-friendly name of the preset.
+  This identifier is used in the
+  :ref:`cmake --build --preset <Build Tool Mode>` option.
+  There must not be two build presets in the union of ``CMakePresets.json``
+  and ``CMakeUserPresets.json`` in the same directory with the same name.
+  However, a build preset may have the same name as a configure or test preset.
+
+``hidden``
+
+  An optional boolean specifying whether or not a preset should be hidden.
+  If a preset is hidden, it cannot be used in the ``--preset`` argument
+  and does not have to have a valid ``configurePreset``, even from
+  inheritance. ``hidden`` presets are intended to be used as a base for
+  other presets to inherit via the ``inherits`` field.
+
+``inherits``
+
+  An optional array of strings representing the names of presets to
+  inherit from. The preset will inherit all of the fields from the
+  ``inherits`` presets by default (except ``name``, ``hidden``,
+  ``inherits``, ``description``, and ``displayName``), but can override
+  them as desired. If multiple ``inherits`` presets provide conflicting
+  values for the same field, the earlier preset in the ``inherits`` list
+  will be preferred. Presets in ``CMakePresets.json`` may not inherit from
+  presets in ``CMakeUserPresets.json``.
+
+  This field can also be a string, which is equivalent to an array
+  containing one string.
+
+``condition``
+
+  An optional `Condition`_ object. This is allowed in preset files specifying
+  version ``3`` or above.
+
+``vendor``
+
+  An optional map containing vendor-specific information. CMake does not
+  interpret the contents of this field except to verify that it is a map
+  if it does exist. However, it should follow the same conventions as the
+  root-level ``vendor`` field. If vendors use their own per-preset
+  ``vendor`` field, they should implement inheritance in a sensible manner
+  when appropriate.
+
+``displayName``
+
+  An optional string with a human-friendly name of the preset.
+
+``description``
+
+  An optional string with a human-friendly description of the preset.
+
+``environment``
+
+  An optional map of environment variables. The key is the variable name
+  (which may not be an empty string), and the value is either ``null`` or
+  a string representing the value of the variable. Each variable is set
+  regardless of whether or not a value was given to it by the process's
+  environment. This field supports macro expansion, and environment
+  variables in this map may reference each other, and may be listed in any
+  order, as long as such references do not cause a cycle (for example, if
+  ``ENV_1`` is ``$env{ENV_2}``, ``ENV_2`` may not be ``$env{ENV_1}``.)
+
+  Environment variables are inherited through the ``inherits`` field, and
+  the preset's environment will be the union of its own ``environment``
+  and the ``environment`` from all its parents. If multiple presets in
+  this union define the same variable, the standard rules of ``inherits``
+  are applied. Setting a variable to ``null`` causes it to not be set,
+  even if a value was inherited from another preset.
+
+  .. note::
+
+    For a CMake project using ExternalProject with a configuration preset
+    having environment variables needed in the ExternalProject, use a build
+    preset that inherits that configuration preset or the ExternalProject
+    will not have the environment variables set in the configuration preset.
+    Example: suppose the host defaults to one compiler (say Clang)
+    and the user wishes to use another compiler (say GCC). Set configuration
+    preset environment variables ``CC`` and ``CXX`` and use a build preset
+    that inherits that configuration preset. Otherwise the ExternalProject
+    may use a different (system default) compiler than the top-level CMake
+    project.
+
+``configurePreset``
+
+  An optional string specifying the name of a configure preset to
+  associate with this build preset. If ``configurePreset`` is not
+  specified, it must be inherited from the inherits preset (unless this
+  preset is hidden). The build directory is inferred from the configure
+  preset, so the build will take place in the same ``binaryDir`` that the
+  configuration did.
+
+``inheritConfigureEnvironment``
+
+  An optional boolean that defaults to true. If true, the environment
+  variables from the associated configure preset are inherited after all
+  inherited build preset environments, but before environment variables
+  explicitly specified in this build preset.
+
+``jobs``
+
+  An optional integer. Equivalent to passing ``--parallel`` or ``-j`` on
+  the command line.
+
+``targets``
+
+  An optional string or array of strings. Equivalent to passing
+  ``--target`` or ``-t`` on the command line. Vendors may ignore the
+  targets property or hide build presets that explicitly specify targets.
+  This field supports macro expansion.
+
+``configuration``
+
+  An optional string. Equivalent to passing ``--config`` on the command
+  line.
+
+``cleanFirst``
+
+  An optional bool. If true, equivalent to passing ``--clean-first`` on
+  the command line.
+
+``verbose``
+
+  An optional bool. If true, equivalent to passing ``--verbose`` on the
+  command line.
+
+``nativeToolOptions``
+
+  An optional array of strings. Equivalent to passing options after ``--``
+  on the command line. The array values support macro expansion.
+
+Test Preset
+^^^^^^^^^^^
+
+Each entry of the ``testPresets`` array is a JSON object
+that may contain the following fields:
+
+``name``
+
+  A required string representing the machine-friendly name of the preset.
+  This identifier is used in the :ref:`ctest --preset <CTest Options>` option.
+  There must not be two test presets in the union of ``CMakePresets.json``
+  and ``CMakeUserPresets.json`` in the same directory with the same name.
+  However, a test preset may have the same name as a configure or build preset.
+
+``hidden``
+
+  An optional boolean specifying whether or not a preset should be hidden.
+  If a preset is hidden, it cannot be used in the ``--preset`` argument
+  and does not have to have a valid ``configurePreset``, even from
+  inheritance. ``hidden`` presets are intended to be used as a base for
+  other presets to inherit via the ``inherits`` field.
+
+``inherits``
+
+  An optional array of strings representing the names of presets to
+  inherit from. The preset will inherit all of the fields from the
+  ``inherits`` presets by default (except ``name``, ``hidden``,
+  ``inherits``, ``description``, and ``displayName``), but can override
+  them as desired. If multiple ``inherits`` presets provide conflicting
+  values for the same field, the earlier preset in the ``inherits`` list
+  will be preferred. Presets in ``CMakePresets.json`` may not inherit from
+  presets in ``CMakeUserPresets.json``.
+
+  This field can also be a string, which is equivalent to an array
+  containing one string.
+
+``condition``
+
+  An optional `Condition`_ object. This is allowed in preset files specifying
+  version ``3`` or above.
+
+``vendor``
+
+  An optional map containing vendor-specific information. CMake does not
+  interpret the contents of this field except to verify that it is a map
+  if it does exist. However, it should follow the same conventions as the
+  root-level ``vendor`` field. If vendors use their own per-preset
+  ``vendor`` field, they should implement inheritance in a sensible manner
+  when appropriate.
+
+``displayName``
+
+  An optional string with a human-friendly name of the preset.
+
+``description``
+
+  An optional string with a human-friendly description of the preset.
+
+``environment``
+
+  An optional map of environment variables. The key is the variable name
+  (which may not be an empty string), and the value is either ``null`` or
+  a string representing the value of the variable. Each variable is set
+  regardless of whether or not a value was given to it by the process's
+  environment. This field supports macro expansion, and environment
+  variables in this map may reference each other, and may be listed in any
+  order, as long as such references do not cause a cycle (for example, if
+  ``ENV_1`` is ``$env{ENV_2}``, ``ENV_2`` may not be ``$env{ENV_1}``.)
+
+  Environment variables are inherited through the ``inherits`` field, and
+  the preset's environment will be the union of its own ``environment``
+  and the ``environment`` from all its parents. If multiple presets in
+  this union define the same variable, the standard rules of ``inherits``
+  are applied. Setting a variable to ``null`` causes it to not be set,
+  even if a value was inherited from another preset.
+
+``configurePreset``
+
+  An optional string specifying the name of a configure preset to
+  associate with this test preset. If ``configurePreset`` is not
+  specified, it must be inherited from the inherits preset (unless this
+  preset is hidden). The build directory is inferred from the configure
+  preset, so tests will run in the same ``binaryDir`` that the
+  configuration did and build did.
+
+``inheritConfigureEnvironment``
+
+  An optional boolean that defaults to true. If true, the environment
+  variables from the associated configure preset are inherited after all
+  inherited test preset environments, but before environment variables
+  explicitly specified in this test preset.
+
+``configuration``
+
+  An optional string. Equivalent to passing ``--build-config`` on the
+  command line.
+
+``overwriteConfigurationFile``
+
+  An optional array of configuration options to overwrite options
+  specified in the CTest configuration file. Equivalent to passing
+  ``--overwrite`` for each value in the array. The array values
+  support macro expansion.
+
+``output``
+
+  An optional object specifying output options. The object may contain the
+  following fields.
+
+  ``shortProgress``
+
+    An optional bool. If true, equivalent to passing ``--progress`` on the
+    command line.
+
+  ``verbosity``
+
+    An optional string specifying verbosity level. Must be one of the
+    following:
+
+    ``default``
+
+      Equivalent to passing no verbosity flags on the command line.
+
+    ``verbose``
+
+      Equivalent to passing ``--verbose`` on the command line.
+
+    ``extra``
+
+      Equivalent to passing ``--extra-verbose`` on the command line.
+
+  ``debug``
+
+    An optional bool. If true, equivalent to passing ``--debug`` on the
+    command line.
+
+  ``outputOnFailure``
+
+    An optional bool. If true, equivalent to passing
+    ``--output-on-failure`` on the command line.
+
+  ``quiet``
+
+    An optional bool. If true, equivalent to passing ``--quiet`` on the
+    command line.
+
+  ``outputLogFile``
+
+    An optional string specifying a path to a log file. Equivalent to
+    passing ``--output-log`` on the command line. This field supports
+    macro expansion.
+
+  ``labelSummary``
+
+    An optional bool. If false, equivalent to passing
+    ``--no-label-summary`` on the command line.
+
+  ``subprojectSummary``
+
+    An optional bool. If false, equivalent to passing
+    ``--no-subproject-summary`` on the command line.
+
+  ``maxPassedTestOutputSize``
+
+    An optional integer specifying the maximum output for passed tests in
+    bytes. Equivalent to passing ``--test-output-size-passed`` on the
+    command line.
+
+  ``maxFailedTestOutputSize``
+
+    An optional integer specifying the maximum output for failed tests in
+    bytes. Equivalent to passing ``--test-output-size-failed`` on the
+    command line.
+
+  ``maxTestNameWidth``
+
+    An optional integer specifying the maximum width of a test name to
+    output. Equivalent to passing ``--max-width`` on the command line.
+
+``filter``
+
+  An optional object specifying how to filter the tests to run. The object
+  may contain the following fields.
+
+  ``include``
+
+    An optional object specifying which tests to include. The object may
+    contain the following fields.
+
+    ``name``
+
+      An optional string specifying a regex for test names. Equivalent to
+      passing ``--tests-regex`` on the command line. This field supports
+      macro expansion. CMake regex syntax is described under
+      :ref:`string(REGEX) <Regex Specification>`.
+
+
+    ``label``
+
+      An optional string specifying a regex for test labels. Equivalent to
+      passing ``--label-regex`` on the command line. This field supports
+      macro expansion.
+
+    ``useUnion``
+
+      An optional bool. Equivalent to passing ``--union`` on the command
+      line.
+
+    ``index``
+
+      An optional object specifying tests to include by test index. The
+      object may contain the following fields. Can also be an optional
+      string specifying a file with the command line syntax for
+      ``--tests-information``. If specified as a string, this field
+      supports macro expansion.
+
+      ``start``
+
+        An optional integer specifying a test index to start testing at.
+
+      ``end``
+
+        An optional integer specifying a test index to stop testing at.
+
+      ``stride``
+
+        An optional integer specifying the increment.
+
+      ``specificTests``
+
+        An optional array of integers specifying specific test indices to
+        run.
+
+  ``exclude``
+
+    An optional object specifying which tests to exclude. The object may
+    contain the following fields.
+
+    ``name``
+
+      An optional string specifying a regex for test names. Equivalent to
+      passing ``--exclude-regex`` on the command line. This field supports
+      macro expansion.
+
+    ``label``
+
+      An optional string specifying a regex for test labels. Equivalent to
+      passing ``--label-exclude`` on the command line. This field supports
+      macro expansion.
+
+    ``fixtures``
+
+      An optional object specifying which fixtures to exclude from adding
+      tests. The object may contain the following fields.
+
+      ``any``
+
+        An optional string specifying a regex for text fixtures to exclude
+        from adding any tests. Equivalent to ``--fixture-exclude-any`` on
+        the command line. This field supports macro expansion.
+
+      ``setup``
+
+        An optional string specifying a regex for text fixtures to exclude
+        from adding setup tests. Equivalent to ``--fixture-exclude-setup``
+        on the command line. This field supports macro expansion.
+
+      ``cleanup``
+
+        An optional string specifying a regex for text fixtures to exclude
+        from adding cleanup tests. Equivalent to
+        ``--fixture-exclude-cleanup`` on the command line. This field
+        supports macro expansion.
+
+``execution``
+
+  An optional object specifying options for test execution. The object may
+  contain the following fields.
+
+  ``stopOnFailure``
+
+    An optional bool. If true, equivalent to passing ``--stop-on-failure``
+    on the command line.
+
+  ``enableFailover``
+
+    An optional bool. If true, equivalent to passing ``-F`` on the command
+    line.
+
+  ``jobs``
+
+    An optional integer. Equivalent to passing ``--parallel`` on the
+    command line.
+
+  ``resourceSpecFile``
+
+    An optional string. Equivalent to passing ``--resource-spec-file`` on
+    the command line. This field supports macro expansion.
+
+  ``testLoad``
+
+    An optional integer. Equivalent to passing ``--test-load`` on the
+    command line.
+
+  ``showOnly``
+
+    An optional string. Equivalent to passing ``--show-only`` on the
+    command line. The string must be one of the following values:
+
+    ``human``
+
+    ``json-v1``
+
+  ``repeat``
+
+    An optional object specifying how to repeat tests. Equivalent to
+    passing ``--repeat`` on the command line. The object must have the
+    following fields.
+
+    ``mode``
+
+      A required string. Must be one of the following values:
+
+      ``until-fail``
+
+      ``until-pass``
+
+      ``after-timeout``
+
+    ``count``
+
+      A required integer.
+
+  ``interactiveDebugging``
+
+    An optional bool. If true, equivalent to passing
+    ``--interactive-debug-mode 1`` on the command line. If false,
+    equivalent to passing ``--interactive-debug-mode 0`` on the command
+    line.
+
+  ``scheduleRandom``
+
+    An optional bool. If true, equivalent to passing ``--schedule-random``
+    on the command line.
+
+  ``timeout``
+
+    An optional integer. Equivalent to passing ``--timeout`` on the
+    command line.
+
+  ``noTestsAction``
+
+    An optional string specifying the behavior if no tests are found. Must
+    be one of the following values:
+
+    ``default``
+
+      Equivalent to not passing any value on the command line.
+
+    ``error``
+
+      Equivalent to passing ``--no-tests=error`` on the command line.
+
+    ``ignore``
+
+      Equivalent to passing ``--no-tests=ignore`` on the command line.
+
+Condition
+^^^^^^^^^
+
+The ``condition`` field of a preset, allowed in preset files specifying version
+``3`` or above, is used to determine whether or not the preset is enabled. For
+example, this can be used to disable a preset on platforms other than Windows.
+``condition`` may be either a boolean, ``null``, or an object. If it is a
+boolean, the boolean indicates whether the preset is enabled or disabled. If it
+is ``null``, the preset is enabled, but the ``null`` condition is not inherited
+by any presets that may inherit from the preset. Sub-conditions (for example in
+a ``not``, ``anyOf``, or ``allOf`` condition) may not be ``null``. If it is an
+object, it has the following fields:
+
+``type``
+
+  A required string with one of the following values:
+
+  ``"const"``
+
+    Indicates that the condition is constant. This is equivalent to using a
+    boolean in place of the object. The condition object will have the
+    following additional fields:
+
+    ``value``
+
+      A required boolean which provides a constant value for the condition's
+      evaluation.
+
+  ``"equals"``
+
+  ``"notEquals"``
+
+    Indicates that the condition compares two strings to see if they are equal
+    (or not equal). The condition object will have the following additional
+    fields:
+
+    ``lhs``
+
+      First string to compare. This field supports macro expansion.
+
+    ``rhs``
+
+      Second string to compare. This field supports macro expansion.
+
+  ``"inList"``
+
+  ``"notInList"``
+
+    Indicates that the condition searches for a string in a list of strings.
+    The condition object will have the following additional fields:
+
+    ``string``
+
+      A required string to search for. This field supports macro expansion.
+
+    ``list``
+
+      A required list of strings to search. This field supports macro
+      expansion, and uses short-circuit evaluation.
+
+  ``"matches"``
+
+  ``"notMatches"``
+
+    Indicates that the condition searches for a regular expression in a string.
+    The condition object will have the following additional fields:
+
+    ``string``
+
+      A required string to search. This field supports macro expansion.
+
+    ``regex``
+
+      A required regular expression to search for. This field supports macro
+      expansion.
+
+  ``"anyOf"``
+
+  ``"allOf"``
+
+    Indicates that the condition is an aggregation of zero or more nested
+    conditions. The condition object will have the following additional fields:
+
+    ``conditions``
+
+      A required array of condition objects. These conditions use short-circuit
+      evaluation.
+
+  ``"not"``
+
+    Indicates that the condition is an inversion of another condition. The
+    condition object will have the following additional fields:
+
+    ``condition``
+
+      A required condition object.
+
+Macro Expansion
+^^^^^^^^^^^^^^^
+
+As mentioned above, some fields support macro expansion. Macros are
+recognized in the form ``$<macro-namespace>{<macro-name>}``. All macros are
+evaluated in the context of the preset being used, even if the macro is in a
+field that was inherited from another preset. For example, if the ``Base``
+preset sets variable ``PRESET_NAME`` to ``${presetName}``, and the
+``Derived`` preset inherits from ``Base``, ``PRESET_NAME`` will be set to
+``Derived``.
+
+It is an error to not put a closing brace at the end of a macro name. For
+example, ``${sourceDir`` is invalid. A dollar sign (``$``) followed by
+anything other than a left curly brace (``{``) with a possible namespace is
+interpreted as a literal dollar sign.
+
+Recognized macros include:
+
+``${sourceDir}``
+
+  Path to the project source directory.
+
+``${sourceParentDir}``
+
+  Path to the project source directory's parent directory.
+
+``${sourceDirName}``
+
+  The last filename component of ``${sourceDir}``. For example, if
+  ``${sourceDir}`` is ``/path/to/source``, this would be ``source``.
+
+``${presetName}``
+
+  Name specified in the preset's ``name`` field.
+
+``${generator}``
+
+  Generator specified in the preset's ``generator`` field. For build and
+  test presets, this will evaluate to the generator specified by
+  ``configurePreset``.
+
+``${hostSystemName}``
+
+  The name of the host operating system. Contains the same value as
+  :variable:`CMAKE_HOST_SYSTEM_NAME`. This is allowed in preset files
+  specifying version ``3`` or above.
+
+``${dollar}``
+
+  A literal dollar sign (``$``).
+
+``$env{<variable-name>}``
+
+  Environment variable with name ``<variable-name>``. The variable name may
+  not be an empty string. If the variable is defined in the ``environment``
+  field, that value is used instead of the value from the parent environment.
+  If the environment variable is not defined, this evaluates as an empty
+  string.
+
+  Note that while Windows environment variable names are case-insensitive,
+  variable names within a preset are still case-sensitive. This may lead to
+  unexpected results when using inconsistent casing. For best results, keep
+  the casing of environment variable names consistent.
+
+``$penv{<variable-name>}``
+
+  Similar to ``$env{<variable-name>}``, except that the value only comes from
+  the parent environment, and never from the ``environment`` field. This
+  allows you to prepend or append values to existing environment variables.
+  For example, setting ``PATH`` to ``/path/to/ninja/bin:$penv{PATH}`` will
+  prepend ``/path/to/ninja/bin`` to the ``PATH`` environment variable. This
+  is needed because ``$env{<variable-name>}`` does not allow circular
+  references.
+
+``$vendor{<macro-name>}``
+
+  An extension point for vendors to insert their own macros. CMake will not
+  be able to use presets which have a ``$vendor{<macro-name>}`` macro, and
+  effectively ignores such presets. However, it will still be able to use
+  other presets from the same file.
+
+  CMake does not make any attempt to interpret ``$vendor{<macro-name>}``
+  macros. However, to avoid name collisions, IDE vendors should prefix
+  ``<macro-name>`` with a very short (preferably <= 4 characters) vendor
+  identifier prefix, followed by a ``.``, followed by the macro name. For
+  example, the Example IDE could have ``$vendor{xide.ideInstallDir}``.
+
+Schema
+======
+
+:download:`This file </manual/presets/schema.json>` provides a machine-readable
+JSON schema for the ``CMakePresets.json`` format.
diff --git a/share/cmake-3.22/Help/manual/cmake-properties.7.rst b/share/cmake-3.22/Help/manual/cmake-properties.7.rst
new file mode 100644
index 0000000..bb5dba3
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-properties.7.rst
@@ -0,0 +1,600 @@
+.. cmake-manual-description: CMake Properties Reference
+
+cmake-properties(7)
+*******************
+
+.. only:: html
+
+   .. contents::
+
+.. _`Global Properties`:
+
+Properties of Global Scope
+==========================
+
+.. toctree::
+   :maxdepth: 1
+
+   /prop_gbl/ALLOW_DUPLICATE_CUSTOM_TARGETS
+   /prop_gbl/AUTOGEN_SOURCE_GROUP
+   /prop_gbl/AUTOGEN_TARGETS_FOLDER
+   /prop_gbl/AUTOMOC_SOURCE_GROUP
+   /prop_gbl/AUTOMOC_TARGETS_FOLDER
+   /prop_gbl/AUTORCC_SOURCE_GROUP
+   /prop_gbl/AUTOUIC_SOURCE_GROUP
+   /prop_gbl/CMAKE_C_KNOWN_FEATURES
+   /prop_gbl/CMAKE_CUDA_KNOWN_FEATURES
+   /prop_gbl/CMAKE_CXX_KNOWN_FEATURES
+   /prop_gbl/CMAKE_ROLE
+   /prop_gbl/DEBUG_CONFIGURATIONS
+   /prop_gbl/DISABLED_FEATURES
+   /prop_gbl/ECLIPSE_EXTRA_CPROJECT_CONTENTS
+   /prop_gbl/ECLIPSE_EXTRA_NATURES
+   /prop_gbl/ENABLED_FEATURES
+   /prop_gbl/ENABLED_LANGUAGES
+   /prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS
+   /prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS
+   /prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS
+   /prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING
+   /prop_gbl/GENERATOR_IS_MULTI_CONFIG
+   /prop_gbl/GLOBAL_DEPENDS_DEBUG_MODE
+   /prop_gbl/GLOBAL_DEPENDS_NO_CYCLES
+   /prop_gbl/IN_TRY_COMPILE
+   /prop_gbl/JOB_POOLS
+   /prop_gbl/PACKAGES_FOUND
+   /prop_gbl/PACKAGES_NOT_FOUND
+   /prop_gbl/PREDEFINED_TARGETS_FOLDER
+   /prop_gbl/REPORT_UNDEFINED_PROPERTIES
+   /prop_gbl/RULE_LAUNCH_COMPILE
+   /prop_gbl/RULE_LAUNCH_CUSTOM
+   /prop_gbl/RULE_LAUNCH_LINK
+   /prop_gbl/RULE_MESSAGES
+   /prop_gbl/TARGET_ARCHIVES_MAY_BE_SHARED_LIBS
+   /prop_gbl/TARGET_MESSAGES
+   /prop_gbl/TARGET_SUPPORTS_SHARED_LIBS
+   /prop_gbl/USE_FOLDERS
+   /prop_gbl/XCODE_EMIT_EFFECTIVE_PLATFORM_NAME
+
+.. _`Directory Properties`:
+
+Properties on Directories
+=========================
+
+.. toctree::
+   :maxdepth: 1
+
+   /prop_dir/ADDITIONAL_CLEAN_FILES
+   /prop_dir/BINARY_DIR
+   /prop_dir/BUILDSYSTEM_TARGETS
+   /prop_dir/CACHE_VARIABLES
+   /prop_dir/CLEAN_NO_CUSTOM
+   /prop_dir/CMAKE_CONFIGURE_DEPENDS
+   /prop_dir/COMPILE_DEFINITIONS
+   /prop_dir/COMPILE_OPTIONS
+   /prop_dir/DEFINITIONS
+   /prop_dir/EXCLUDE_FROM_ALL
+   /prop_dir/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
+   /prop_dir/IMPORTED_TARGETS
+   /prop_dir/INCLUDE_DIRECTORIES
+   /prop_dir/INCLUDE_REGULAR_EXPRESSION
+   /prop_dir/INTERPROCEDURAL_OPTIMIZATION
+   /prop_dir/INTERPROCEDURAL_OPTIMIZATION_CONFIG
+   /prop_dir/LABELS
+   /prop_dir/LINK_DIRECTORIES
+   /prop_dir/LINK_OPTIONS
+   /prop_dir/LISTFILE_STACK
+   /prop_dir/MACROS
+   /prop_dir/PARENT_DIRECTORY
+   /prop_dir/RULE_LAUNCH_COMPILE
+   /prop_dir/RULE_LAUNCH_CUSTOM
+   /prop_dir/RULE_LAUNCH_LINK
+   /prop_dir/SOURCE_DIR
+   /prop_dir/SUBDIRECTORIES
+   /prop_dir/TESTS
+   /prop_dir/TEST_INCLUDE_FILES
+   /prop_dir/VARIABLES
+   /prop_dir/VS_GLOBAL_SECTION_POST_section
+   /prop_dir/VS_GLOBAL_SECTION_PRE_section
+   /prop_dir/VS_STARTUP_PROJECT
+
+.. _`Target Properties`:
+
+Properties on Targets
+=====================
+
+.. toctree::
+   :maxdepth: 1
+
+   /prop_tgt/ADDITIONAL_CLEAN_FILES
+   /prop_tgt/AIX_EXPORT_ALL_SYMBOLS
+   /prop_tgt/ALIAS_GLOBAL
+   /prop_tgt/ALIASED_TARGET
+   /prop_tgt/ANDROID_ANT_ADDITIONAL_OPTIONS
+   /prop_tgt/ANDROID_API
+   /prop_tgt/ANDROID_API_MIN
+   /prop_tgt/ANDROID_ARCH
+   /prop_tgt/ANDROID_ASSETS_DIRECTORIES
+   /prop_tgt/ANDROID_GUI
+   /prop_tgt/ANDROID_JAR_DEPENDENCIES
+   /prop_tgt/ANDROID_JAR_DIRECTORIES
+   /prop_tgt/ANDROID_JAVA_SOURCE_DIR
+   /prop_tgt/ANDROID_NATIVE_LIB_DEPENDENCIES
+   /prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES
+   /prop_tgt/ANDROID_PROCESS_MAX
+   /prop_tgt/ANDROID_PROGUARD
+   /prop_tgt/ANDROID_PROGUARD_CONFIG_PATH
+   /prop_tgt/ANDROID_SECURE_PROPS_PATH
+   /prop_tgt/ANDROID_SKIP_ANT_STEP
+   /prop_tgt/ANDROID_STL_TYPE
+   /prop_tgt/ARCHIVE_OUTPUT_DIRECTORY
+   /prop_tgt/ARCHIVE_OUTPUT_DIRECTORY_CONFIG
+   /prop_tgt/ARCHIVE_OUTPUT_NAME
+   /prop_tgt/ARCHIVE_OUTPUT_NAME_CONFIG
+   /prop_tgt/AUTOGEN_BUILD_DIR
+   /prop_tgt/AUTOGEN_ORIGIN_DEPENDS
+   /prop_tgt/AUTOGEN_PARALLEL
+   /prop_tgt/AUTOGEN_TARGET_DEPENDS
+   /prop_tgt/AUTOMOC
+   /prop_tgt/AUTOMOC_COMPILER_PREDEFINES
+   /prop_tgt/AUTOMOC_DEPEND_FILTERS
+   /prop_tgt/AUTOMOC_EXECUTABLE
+   /prop_tgt/AUTOMOC_MACRO_NAMES
+   /prop_tgt/AUTOMOC_MOC_OPTIONS
+   /prop_tgt/AUTOMOC_PATH_PREFIX
+   /prop_tgt/AUTORCC
+   /prop_tgt/AUTORCC_EXECUTABLE
+   /prop_tgt/AUTORCC_OPTIONS
+   /prop_tgt/AUTOUIC
+   /prop_tgt/AUTOUIC_EXECUTABLE
+   /prop_tgt/AUTOUIC_OPTIONS
+   /prop_tgt/AUTOUIC_SEARCH_PATHS
+   /prop_tgt/BINARY_DIR
+   /prop_tgt/BUILD_RPATH
+   /prop_tgt/BUILD_RPATH_USE_ORIGIN
+   /prop_tgt/BUILD_WITH_INSTALL_NAME_DIR
+   /prop_tgt/BUILD_WITH_INSTALL_RPATH
+   /prop_tgt/BUNDLE
+   /prop_tgt/BUNDLE_EXTENSION
+   /prop_tgt/C_EXTENSIONS
+   /prop_tgt/C_STANDARD
+   /prop_tgt/C_STANDARD_REQUIRED
+   /prop_tgt/COMMON_LANGUAGE_RUNTIME
+   /prop_tgt/COMPATIBLE_INTERFACE_BOOL
+   /prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MAX
+   /prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MIN
+   /prop_tgt/COMPATIBLE_INTERFACE_STRING
+   /prop_tgt/COMPILE_DEFINITIONS
+   /prop_tgt/COMPILE_FEATURES
+   /prop_tgt/COMPILE_FLAGS
+   /prop_tgt/COMPILE_OPTIONS
+   /prop_tgt/COMPILE_PDB_NAME
+   /prop_tgt/COMPILE_PDB_NAME_CONFIG
+   /prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY
+   /prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG
+   /prop_tgt/CONFIG_OUTPUT_NAME
+   /prop_tgt/CONFIG_POSTFIX
+   /prop_tgt/CROSSCOMPILING_EMULATOR
+   /prop_tgt/CUDA_ARCHITECTURES
+   /prop_tgt/CUDA_EXTENSIONS
+   /prop_tgt/CUDA_PTX_COMPILATION
+   /prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS
+   /prop_tgt/CUDA_RUNTIME_LIBRARY
+   /prop_tgt/CUDA_SEPARABLE_COMPILATION
+   /prop_tgt/CUDA_STANDARD
+   /prop_tgt/CUDA_STANDARD_REQUIRED
+   /prop_tgt/CXX_EXTENSIONS
+   /prop_tgt/CXX_STANDARD
+   /prop_tgt/CXX_STANDARD_REQUIRED
+   /prop_tgt/DEBUG_POSTFIX
+   /prop_tgt/DEFINE_SYMBOL
+   /prop_tgt/DEPLOYMENT_ADDITIONAL_FILES
+   /prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY
+   /prop_tgt/DEPRECATION
+   /prop_tgt/DISABLE_PRECOMPILE_HEADERS
+   /prop_tgt/DOTNET_TARGET_FRAMEWORK
+   /prop_tgt/DOTNET_TARGET_FRAMEWORK_VERSION
+   /prop_tgt/EchoString
+   /prop_tgt/ENABLE_EXPORTS
+   /prop_tgt/EXCLUDE_FROM_ALL
+   /prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD
+   /prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD_CONFIG
+   /prop_tgt/EXPORT_COMPILE_COMMANDS
+   /prop_tgt/EXPORT_NAME
+   /prop_tgt/EXPORT_PROPERTIES
+   /prop_tgt/FOLDER
+   /prop_tgt/Fortran_BUILDING_INSTRINSIC_MODULES
+   /prop_tgt/Fortran_FORMAT
+   /prop_tgt/Fortran_MODULE_DIRECTORY
+   /prop_tgt/Fortran_PREPROCESS
+   /prop_tgt/FRAMEWORK
+   /prop_tgt/FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG
+   /prop_tgt/FRAMEWORK_VERSION
+   /prop_tgt/GENERATOR_FILE_NAME
+   /prop_tgt/GHS_INTEGRITY_APP
+   /prop_tgt/GHS_NO_SOURCE_GROUP_FILE
+   /prop_tgt/GNUtoMS
+   /prop_tgt/HAS_CXX
+   /prop_tgt/HIP_ARCHITECTURES
+   /prop_tgt/HIP_EXTENSIONS
+   /prop_tgt/HIP_STANDARD
+   /prop_tgt/HIP_STANDARD_REQUIRED
+   /prop_tgt/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
+   /prop_tgt/IMPORTED
+   /prop_tgt/IMPORTED_COMMON_LANGUAGE_RUNTIME
+   /prop_tgt/IMPORTED_CONFIGURATIONS
+   /prop_tgt/IMPORTED_GLOBAL
+   /prop_tgt/IMPORTED_IMPLIB
+   /prop_tgt/IMPORTED_IMPLIB_CONFIG
+   /prop_tgt/IMPORTED_LIBNAME
+   /prop_tgt/IMPORTED_LIBNAME_CONFIG
+   /prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES
+   /prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES_CONFIG
+   /prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES
+   /prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES_CONFIG
+   /prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES
+   /prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES_CONFIG
+   /prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY
+   /prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY_CONFIG
+   /prop_tgt/IMPORTED_LOCATION
+   /prop_tgt/IMPORTED_LOCATION_CONFIG
+   /prop_tgt/IMPORTED_NO_SONAME
+   /prop_tgt/IMPORTED_NO_SONAME_CONFIG
+   /prop_tgt/IMPORTED_OBJECTS
+   /prop_tgt/IMPORTED_OBJECTS_CONFIG
+   /prop_tgt/IMPORTED_SONAME
+   /prop_tgt/IMPORTED_SONAME_CONFIG
+   /prop_tgt/IMPORT_PREFIX
+   /prop_tgt/IMPORT_SUFFIX
+   /prop_tgt/INCLUDE_DIRECTORIES
+   /prop_tgt/INSTALL_NAME_DIR
+   /prop_tgt/INSTALL_REMOVE_ENVIRONMENT_RPATH
+   /prop_tgt/INSTALL_RPATH
+   /prop_tgt/INSTALL_RPATH_USE_LINK_PATH
+   /prop_tgt/INTERFACE_AUTOUIC_OPTIONS
+   /prop_tgt/INTERFACE_COMPILE_DEFINITIONS
+   /prop_tgt/INTERFACE_COMPILE_FEATURES
+   /prop_tgt/INTERFACE_COMPILE_OPTIONS
+   /prop_tgt/INTERFACE_INCLUDE_DIRECTORIES
+   /prop_tgt/INTERFACE_LINK_DEPENDS
+   /prop_tgt/INTERFACE_LINK_DIRECTORIES
+   /prop_tgt/INTERFACE_LINK_LIBRARIES
+   /prop_tgt/INTERFACE_LINK_OPTIONS
+   /prop_tgt/INTERFACE_POSITION_INDEPENDENT_CODE
+   /prop_tgt/INTERFACE_PRECOMPILE_HEADERS
+   /prop_tgt/INTERFACE_SOURCES
+   /prop_tgt/INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
+   /prop_tgt/INTERPROCEDURAL_OPTIMIZATION
+   /prop_tgt/INTERPROCEDURAL_OPTIMIZATION_CONFIG
+   /prop_tgt/IOS_INSTALL_COMBINED
+   /prop_tgt/ISPC_HEADER_DIRECTORY
+   /prop_tgt/ISPC_HEADER_SUFFIX
+   /prop_tgt/ISPC_INSTRUCTION_SETS
+   /prop_tgt/JOB_POOL_COMPILE
+   /prop_tgt/JOB_POOL_LINK
+   /prop_tgt/JOB_POOL_PRECOMPILE_HEADER
+   /prop_tgt/LABELS
+   /prop_tgt/LANG_CLANG_TIDY
+   /prop_tgt/LANG_COMPILER_LAUNCHER
+   /prop_tgt/LANG_CPPCHECK
+   /prop_tgt/LANG_CPPLINT
+   /prop_tgt/LANG_EXTENSIONS
+   /prop_tgt/LANG_INCLUDE_WHAT_YOU_USE
+   /prop_tgt/LANG_LINKER_LAUNCHER
+   /prop_tgt/LANG_STANDARD
+   /prop_tgt/LANG_STANDARD_REQUIRED
+   /prop_tgt/LANG_VISIBILITY_PRESET
+   /prop_tgt/LIBRARY_OUTPUT_DIRECTORY
+   /prop_tgt/LIBRARY_OUTPUT_DIRECTORY_CONFIG
+   /prop_tgt/LIBRARY_OUTPUT_NAME
+   /prop_tgt/LIBRARY_OUTPUT_NAME_CONFIG
+   /prop_tgt/LINK_DEPENDS
+   /prop_tgt/LINK_DEPENDS_NO_SHARED
+   /prop_tgt/LINK_DIRECTORIES
+   /prop_tgt/LINK_FLAGS
+   /prop_tgt/LINK_FLAGS_CONFIG
+   /prop_tgt/LINK_INTERFACE_LIBRARIES
+   /prop_tgt/LINK_INTERFACE_LIBRARIES_CONFIG
+   /prop_tgt/LINK_INTERFACE_MULTIPLICITY
+   /prop_tgt/LINK_INTERFACE_MULTIPLICITY_CONFIG
+   /prop_tgt/LINK_LIBRARIES
+   /prop_tgt/LINK_OPTIONS
+   /prop_tgt/LINK_SEARCH_END_STATIC
+   /prop_tgt/LINK_SEARCH_START_STATIC
+   /prop_tgt/LINK_WHAT_YOU_USE
+   /prop_tgt/LINKER_LANGUAGE
+   /prop_tgt/LOCATION
+   /prop_tgt/LOCATION_CONFIG
+   /prop_tgt/MACHO_COMPATIBILITY_VERSION
+   /prop_tgt/MACHO_CURRENT_VERSION
+   /prop_tgt/MACOSX_BUNDLE
+   /prop_tgt/MACOSX_BUNDLE_INFO_PLIST
+   /prop_tgt/MACOSX_FRAMEWORK_INFO_PLIST
+   /prop_tgt/MACOSX_RPATH
+   /prop_tgt/MANUALLY_ADDED_DEPENDENCIES
+   /prop_tgt/MAP_IMPORTED_CONFIG_CONFIG
+   /prop_tgt/MSVC_RUNTIME_LIBRARY
+   /prop_tgt/NAME
+   /prop_tgt/NO_SONAME
+   /prop_tgt/NO_SYSTEM_FROM_IMPORTED
+   /prop_tgt/OBJC_EXTENSIONS
+   /prop_tgt/OBJC_STANDARD
+   /prop_tgt/OBJC_STANDARD_REQUIRED
+   /prop_tgt/OBJCXX_EXTENSIONS
+   /prop_tgt/OBJCXX_STANDARD
+   /prop_tgt/OBJCXX_STANDARD_REQUIRED
+   /prop_tgt/OPTIMIZE_DEPENDENCIES
+   /prop_tgt/OSX_ARCHITECTURES
+   /prop_tgt/OSX_ARCHITECTURES_CONFIG
+   /prop_tgt/OUTPUT_NAME
+   /prop_tgt/OUTPUT_NAME_CONFIG
+   /prop_tgt/PCH_WARN_INVALID
+   /prop_tgt/PCH_INSTANTIATE_TEMPLATES
+   /prop_tgt/PDB_NAME
+   /prop_tgt/PDB_NAME_CONFIG
+   /prop_tgt/PDB_OUTPUT_DIRECTORY
+   /prop_tgt/PDB_OUTPUT_DIRECTORY_CONFIG
+   /prop_tgt/POSITION_INDEPENDENT_CODE
+   /prop_tgt/PRECOMPILE_HEADERS
+   /prop_tgt/PRECOMPILE_HEADERS_REUSE_FROM
+   /prop_tgt/PREFIX
+   /prop_tgt/PRIVATE_HEADER
+   /prop_tgt/PROJECT_LABEL
+   /prop_tgt/PUBLIC_HEADER
+   /prop_tgt/RESOURCE
+   /prop_tgt/RULE_LAUNCH_COMPILE
+   /prop_tgt/RULE_LAUNCH_CUSTOM
+   /prop_tgt/RULE_LAUNCH_LINK
+   /prop_tgt/RUNTIME_OUTPUT_DIRECTORY
+   /prop_tgt/RUNTIME_OUTPUT_DIRECTORY_CONFIG
+   /prop_tgt/RUNTIME_OUTPUT_NAME
+   /prop_tgt/RUNTIME_OUTPUT_NAME_CONFIG
+   /prop_tgt/SKIP_BUILD_RPATH
+   /prop_tgt/SOURCE_DIR
+   /prop_tgt/SOURCES
+   /prop_tgt/SOVERSION
+   /prop_tgt/STATIC_LIBRARY_FLAGS
+   /prop_tgt/STATIC_LIBRARY_FLAGS_CONFIG
+   /prop_tgt/STATIC_LIBRARY_OPTIONS
+   /prop_tgt/SUFFIX
+   /prop_tgt/Swift_DEPENDENCIES_FILE
+   /prop_tgt/Swift_LANGUAGE_VERSION
+   /prop_tgt/Swift_MODULE_DIRECTORY
+   /prop_tgt/Swift_MODULE_NAME
+   /prop_tgt/TYPE
+   /prop_tgt/UNITY_BUILD
+   /prop_tgt/UNITY_BUILD_BATCH_SIZE
+   /prop_tgt/UNITY_BUILD_CODE_AFTER_INCLUDE
+   /prop_tgt/UNITY_BUILD_CODE_BEFORE_INCLUDE
+   /prop_tgt/UNITY_BUILD_MODE
+   /prop_tgt/UNITY_BUILD_UNIQUE_ID
+   /prop_tgt/VERSION
+   /prop_tgt/VISIBILITY_INLINES_HIDDEN
+   /prop_tgt/VS_CONFIGURATION_TYPE
+   /prop_tgt/VS_DEBUGGER_COMMAND
+   /prop_tgt/VS_DEBUGGER_COMMAND_ARGUMENTS
+   /prop_tgt/VS_DEBUGGER_ENVIRONMENT
+   /prop_tgt/VS_DEBUGGER_WORKING_DIRECTORY
+   /prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION
+   /prop_tgt/VS_DOTNET_DOCUMENTATION_FILE
+   /prop_tgt/VS_DOTNET_REFERENCE_refname
+   /prop_tgt/VS_DOTNET_REFERENCEPROP_refname_TAG_tagname
+   /prop_tgt/VS_DOTNET_REFERENCES
+   /prop_tgt/VS_DOTNET_REFERENCES_COPY_LOCAL
+   /prop_tgt/VS_DOTNET_TARGET_FRAMEWORK_VERSION
+   /prop_tgt/VS_DPI_AWARE
+   /prop_tgt/VS_GLOBAL_KEYWORD
+   /prop_tgt/VS_GLOBAL_PROJECT_TYPES
+   /prop_tgt/VS_GLOBAL_ROOTNAMESPACE
+   /prop_tgt/VS_GLOBAL_variable
+   /prop_tgt/VS_IOT_EXTENSIONS_VERSION
+   /prop_tgt/VS_IOT_STARTUP_TASK
+   /prop_tgt/VS_JUST_MY_CODE_DEBUGGING
+   /prop_tgt/VS_KEYWORD
+   /prop_tgt/VS_MOBILE_EXTENSIONS_VERSION
+   /prop_tgt/VS_NO_SOLUTION_DEPLOY
+   /prop_tgt/VS_PACKAGE_REFERENCES
+   /prop_tgt/VS_PLATFORM_TOOLSET
+   /prop_tgt/VS_PROJECT_IMPORT
+   /prop_tgt/VS_SCC_AUXPATH
+   /prop_tgt/VS_SCC_LOCALPATH
+   /prop_tgt/VS_SCC_PROJECTNAME
+   /prop_tgt/VS_SCC_PROVIDER
+   /prop_tgt/VS_SDK_REFERENCES
+   /prop_tgt/VS_SOLUTION_DEPLOY
+   /prop_tgt/VS_SOURCE_SETTINGS_tool
+   /prop_tgt/VS_USER_PROPS
+   /prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION
+   /prop_tgt/VS_WINRT_COMPONENT
+   /prop_tgt/VS_WINRT_EXTENSIONS
+   /prop_tgt/VS_WINRT_REFERENCES
+   /prop_tgt/WIN32_EXECUTABLE
+   /prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS
+   /prop_tgt/XCODE_ATTRIBUTE_an-attribute
+   /prop_tgt/XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY
+   /prop_tgt/XCODE_EMBED_FRAMEWORKS_REMOVE_HEADERS_ON_COPY
+   /prop_tgt/XCODE_EMBED_type
+   /prop_tgt/XCODE_EMBED_type_CODE_SIGN_ON_COPY
+   /prop_tgt/XCODE_EMBED_type_PATH
+   /prop_tgt/XCODE_EMBED_type_REMOVE_HEADERS_ON_COPY
+   /prop_tgt/XCODE_EXPLICIT_FILE_TYPE
+   /prop_tgt/XCODE_GENERATE_SCHEME
+   /prop_tgt/XCODE_LINK_BUILD_PHASE_MODE
+   /prop_tgt/XCODE_PRODUCT_TYPE
+   /prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER
+   /prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
+   /prop_tgt/XCODE_SCHEME_ARGUMENTS
+   /prop_tgt/XCODE_SCHEME_DEBUG_AS_ROOT
+   /prop_tgt/XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
+   /prop_tgt/XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
+   /prop_tgt/XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
+   /prop_tgt/XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
+   /prop_tgt/XCODE_SCHEME_ENVIRONMENT
+   /prop_tgt/XCODE_SCHEME_EXECUTABLE
+   /prop_tgt/XCODE_SCHEME_GUARD_MALLOC
+   /prop_tgt/XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
+   /prop_tgt/XCODE_SCHEME_MALLOC_GUARD_EDGES
+   /prop_tgt/XCODE_SCHEME_MALLOC_SCRIBBLE
+   /prop_tgt/XCODE_SCHEME_MALLOC_STACK
+   /prop_tgt/XCODE_SCHEME_THREAD_SANITIZER
+   /prop_tgt/XCODE_SCHEME_THREAD_SANITIZER_STOP
+   /prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
+   /prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
+   /prop_tgt/XCODE_SCHEME_WORKING_DIRECTORY
+   /prop_tgt/XCODE_SCHEME_ZOMBIE_OBJECTS
+   /prop_tgt/XCTEST
+
+.. _`Test Properties`:
+
+Properties on Tests
+===================
+
+.. toctree::
+   :maxdepth: 1
+
+   /prop_test/ATTACHED_FILES
+   /prop_test/ATTACHED_FILES_ON_FAIL
+   /prop_test/COST
+   /prop_test/DEPENDS
+   /prop_test/DISABLED
+   /prop_test/ENVIRONMENT
+   /prop_test/ENVIRONMENT_MODIFICATION
+   /prop_test/FAIL_REGULAR_EXPRESSION
+   /prop_test/FIXTURES_CLEANUP
+   /prop_test/FIXTURES_REQUIRED
+   /prop_test/FIXTURES_SETUP
+   /prop_test/LABELS
+   /prop_test/MEASUREMENT
+   /prop_test/PASS_REGULAR_EXPRESSION
+   /prop_test/PROCESSOR_AFFINITY
+   /prop_test/PROCESSORS
+   /prop_test/REQUIRED_FILES
+   /prop_test/RESOURCE_GROUPS
+   /prop_test/RESOURCE_LOCK
+   /prop_test/RUN_SERIAL
+   /prop_test/SKIP_REGULAR_EXPRESSION
+   /prop_test/SKIP_RETURN_CODE
+   /prop_test/TIMEOUT
+   /prop_test/TIMEOUT_AFTER_MATCH
+   /prop_test/WILL_FAIL
+   /prop_test/WORKING_DIRECTORY
+
+.. _`Source File Properties`:
+
+Properties on Source Files
+==========================
+
+.. toctree::
+   :maxdepth: 1
+
+   /prop_sf/ABSTRACT
+   /prop_sf/AUTORCC_OPTIONS
+   /prop_sf/AUTOUIC_OPTIONS
+   /prop_sf/COMPILE_DEFINITIONS
+   /prop_sf/COMPILE_FLAGS
+   /prop_sf/COMPILE_OPTIONS
+   /prop_sf/EXTERNAL_OBJECT
+   /prop_sf/Fortran_FORMAT
+   /prop_sf/Fortran_PREPROCESS
+   /prop_sf/GENERATED
+   /prop_sf/HEADER_FILE_ONLY
+   /prop_sf/INCLUDE_DIRECTORIES
+   /prop_sf/KEEP_EXTENSION
+   /prop_sf/LABELS
+   /prop_sf/LANGUAGE
+   /prop_sf/LOCATION
+   /prop_sf/MACOSX_PACKAGE_LOCATION
+   /prop_sf/OBJECT_DEPENDS
+   /prop_sf/OBJECT_OUTPUTS
+   /prop_sf/SKIP_AUTOGEN
+   /prop_sf/SKIP_AUTOMOC
+   /prop_sf/SKIP_AUTORCC
+   /prop_sf/SKIP_AUTOUIC
+   /prop_sf/SKIP_PRECOMPILE_HEADERS
+   /prop_sf/SKIP_UNITY_BUILD_INCLUSION
+   /prop_sf/Swift_DEPENDENCIES_FILE
+   /prop_sf/Swift_DIAGNOSTICS_FILE
+   /prop_sf/SYMBOLIC
+   /prop_sf/UNITY_GROUP
+   /prop_sf/VS_COPY_TO_OUT_DIR
+   /prop_sf/VS_CSHARP_tagname
+   /prop_sf/VS_DEPLOYMENT_CONTENT
+   /prop_sf/VS_DEPLOYMENT_LOCATION
+   /prop_sf/VS_INCLUDE_IN_VSIX
+   /prop_sf/VS_RESOURCE_GENERATOR
+   /prop_sf/VS_SETTINGS
+   /prop_sf/VS_SHADER_DISABLE_OPTIMIZATIONS
+   /prop_sf/VS_SHADER_ENABLE_DEBUG
+   /prop_sf/VS_SHADER_ENTRYPOINT
+   /prop_sf/VS_SHADER_FLAGS
+   /prop_sf/VS_SHADER_MODEL
+   /prop_sf/VS_SHADER_OBJECT_FILE_NAME
+   /prop_sf/VS_SHADER_OUTPUT_HEADER_FILE
+   /prop_sf/VS_SHADER_TYPE
+   /prop_sf/VS_SHADER_VARIABLE_NAME
+   /prop_sf/VS_TOOL_OVERRIDE.rst
+   /prop_sf/VS_XAML_TYPE
+   /prop_sf/WRAP_EXCLUDE
+   /prop_sf/XCODE_EXPLICIT_FILE_TYPE
+   /prop_sf/XCODE_FILE_ATTRIBUTES
+   /prop_sf/XCODE_LAST_KNOWN_FILE_TYPE
+
+.. _`Cache Entry Properties`:
+
+Properties on Cache Entries
+===========================
+
+.. toctree::
+   :maxdepth: 1
+
+   /prop_cache/ADVANCED
+   /prop_cache/HELPSTRING
+   /prop_cache/MODIFIED
+   /prop_cache/STRINGS
+   /prop_cache/TYPE
+   /prop_cache/VALUE
+
+.. _`Installed File Properties`:
+
+Properties on Installed Files
+=============================
+
+.. toctree::
+   :maxdepth: 1
+
+   /prop_inst/CPACK_DESKTOP_SHORTCUTS.rst
+   /prop_inst/CPACK_NEVER_OVERWRITE.rst
+   /prop_inst/CPACK_PERMANENT.rst
+   /prop_inst/CPACK_START_MENU_SHORTCUTS.rst
+   /prop_inst/CPACK_STARTUP_SHORTCUTS.rst
+   /prop_inst/CPACK_WIX_ACL.rst
+
+
+Deprecated Properties on Directories
+====================================
+
+.. toctree::
+   :maxdepth: 1
+
+   /prop_dir/ADDITIONAL_MAKE_CLEAN_FILES
+   /prop_dir/COMPILE_DEFINITIONS_CONFIG
+   /prop_dir/TEST_INCLUDE_FILE
+
+
+Deprecated Properties on Targets
+================================
+
+.. toctree::
+   :maxdepth: 1
+
+   /prop_tgt/COMPILE_DEFINITIONS_CONFIG
+   /prop_tgt/POST_INSTALL_SCRIPT
+   /prop_tgt/PRE_INSTALL_SCRIPT
+
+
+Deprecated Properties on Source Files
+=====================================
+
+.. toctree::
+   :maxdepth: 1
+
+   /prop_sf/COMPILE_DEFINITIONS_CONFIG
diff --git a/share/cmake-3.22/Help/manual/cmake-qt.7.rst b/share/cmake-3.22/Help/manual/cmake-qt.7.rst
new file mode 100644
index 0000000..f156f95
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-qt.7.rst
@@ -0,0 +1,262 @@
+.. cmake-manual-description: CMake Qt Features Reference
+
+cmake-qt(7)
+***********
+
+.. only:: html
+
+   .. contents::
+
+Introduction
+============
+
+CMake can find and use Qt 4 and Qt 5 libraries.  The Qt 4 libraries are found
+by the :module:`FindQt4` find-module shipped with CMake, whereas the
+Qt 5 libraries are found using "Config-file Packages" shipped with Qt 5. See
+:manual:`cmake-packages(7)` for more information about CMake packages, and
+see `the Qt cmake manual <http://qt-project.org/doc/qt-5/cmake-manual.html>`_
+for your Qt version.
+
+Qt 4 and Qt 5 may be used together in the same
+:manual:`CMake buildsystem <cmake-buildsystem(7)>`:
+
+.. code-block:: cmake
+
+  cmake_minimum_required(VERSION 3.8.0 FATAL_ERROR)
+
+  project(Qt4And5)
+
+  set(CMAKE_AUTOMOC ON)
+
+  find_package(Qt5 COMPONENTS Widgets DBus REQUIRED)
+  add_executable(publisher publisher.cpp)
+  target_link_libraries(publisher Qt5::Widgets Qt5::DBus)
+
+  find_package(Qt4 REQUIRED)
+  add_executable(subscriber subscriber.cpp)
+  target_link_libraries(subscriber Qt4::QtGui Qt4::QtDBus)
+
+A CMake target may not link to both Qt 4 and Qt 5.  A diagnostic is issued if
+this is attempted or results from transitive target dependency evaluation.
+
+Qt Build Tools
+==============
+
+Qt relies on some bundled tools for code generation, such as ``moc`` for
+meta-object code generation, ``uic`` for widget layout and population,
+and ``rcc`` for virtual file system content generation.  These tools may be
+automatically invoked by :manual:`cmake(1)` if the appropriate conditions
+are met.  The automatic tool invocation may be used with both Qt 4 and Qt 5.
+
+.. _`Qt AUTOMOC`:
+
+AUTOMOC
+^^^^^^^
+
+The :prop_tgt:`AUTOMOC` target property controls whether :manual:`cmake(1)`
+inspects the C++ files in the target to determine if they require ``moc`` to
+be run, and to create rules to execute ``moc`` at the appropriate time.
+
+If a macro from :prop_tgt:`AUTOMOC_MACRO_NAMES` is found in a header file,
+``moc`` will be run on the file.  The result will be put into a file named
+according to ``moc_<basename>.cpp``.
+If the macro is found in a C++ implementation
+file, the moc output will be put into a file named according to
+``<basename>.moc``, following the Qt conventions.  The ``<basename>.moc`` must
+be included by the user in the C++ implementation file with a preprocessor
+``#include``.
+
+Included ``moc_*.cpp`` and ``*.moc`` files will be generated in the
+``<AUTOGEN_BUILD_DIR>/include`` directory which is
+automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`.
+
+* This differs from CMake 3.7 and below; see their documentation for details.
+
+* For :prop_gbl:`multi configuration generators <GENERATOR_IS_MULTI_CONFIG>`,
+  the include directory is ``<AUTOGEN_BUILD_DIR>/include_<CONFIG>``.
+
+* See :prop_tgt:`AUTOGEN_BUILD_DIR`.
+
+Not included ``moc_<basename>.cpp`` files will be generated in custom
+folders to avoid name collisions and included in a separate
+file which is compiled into the target, named either
+``<AUTOGEN_BUILD_DIR>/mocs_compilation.cpp`` or
+``<AUTOGEN_BUILD_DIR>/mocs_compilation_$<CONFIG>.cpp``.
+
+* See :prop_tgt:`AUTOGEN_BUILD_DIR`.
+
+The ``moc`` command line will consume the :prop_tgt:`COMPILE_DEFINITIONS` and
+:prop_tgt:`INCLUDE_DIRECTORIES` target properties from the target it is being
+invoked for, and for the appropriate build configuration.
+
+The :prop_tgt:`AUTOMOC` target property may be pre-set for all
+following targets by setting the :variable:`CMAKE_AUTOMOC` variable.  The
+:prop_tgt:`AUTOMOC_MOC_OPTIONS` target property may be populated to set
+options to pass to ``moc``. The :variable:`CMAKE_AUTOMOC_MOC_OPTIONS`
+variable may be populated to pre-set the options for all following targets.
+
+Additional macro names to search for can be added to
+:prop_tgt:`AUTOMOC_MACRO_NAMES`.
+
+Additional ``moc`` dependency file names can be extracted from source code
+by using :prop_tgt:`AUTOMOC_DEPEND_FILTERS`.
+
+Source C++ files can be excluded from :prop_tgt:`AUTOMOC` processing by
+enabling :prop_sf:`SKIP_AUTOMOC` or the broader :prop_sf:`SKIP_AUTOGEN`.
+
+.. _`Qt AUTOUIC`:
+
+AUTOUIC
+^^^^^^^
+
+The :prop_tgt:`AUTOUIC` target property controls whether :manual:`cmake(1)`
+inspects the C++ files in the target to determine if they require ``uic`` to
+be run, and to create rules to execute ``uic`` at the appropriate time.
+
+If a preprocessor ``#include`` directive is found which matches
+``<path>ui_<basename>.h``, and a ``<basename>.ui`` file exists,
+then ``uic`` will be executed to generate the appropriate file.
+The ``<basename>.ui`` file is searched for in the following places
+
+1. ``<source_dir>/<basename>.ui``
+2. ``<source_dir>/<path><basename>.ui``
+3. ``<AUTOUIC_SEARCH_PATHS>/<basename>.ui``
+4. ``<AUTOUIC_SEARCH_PATHS>/<path><basename>.ui``
+
+where ``<source_dir>`` is the directory of the C++ file and
+:prop_tgt:`AUTOUIC_SEARCH_PATHS` is a list of additional search paths.
+
+The generated generated ``ui_*.h`` files are placed in the
+``<AUTOGEN_BUILD_DIR>/include`` directory which is
+automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`.
+
+* This differs from CMake 3.7 and below; see their documentation for details.
+
+* For :prop_gbl:`multi configuration generators <GENERATOR_IS_MULTI_CONFIG>`,
+  the include directory is ``<AUTOGEN_BUILD_DIR>/include_<CONFIG>``.
+
+* See :prop_tgt:`AUTOGEN_BUILD_DIR`.
+
+The :prop_tgt:`AUTOUIC` target property may be pre-set for all following
+targets by setting the :variable:`CMAKE_AUTOUIC` variable.  The
+:prop_tgt:`AUTOUIC_OPTIONS` target property may be populated to set options
+to pass to ``uic``.  The :variable:`CMAKE_AUTOUIC_OPTIONS` variable may be
+populated to pre-set the options for all following targets.  The
+:prop_sf:`AUTOUIC_OPTIONS` source file property may be set on the
+``<basename>.ui`` file to set particular options for the file.  This
+overrides options from the :prop_tgt:`AUTOUIC_OPTIONS` target property.
+
+A target may populate the :prop_tgt:`INTERFACE_AUTOUIC_OPTIONS` target
+property with options that should be used when invoking ``uic``.  This must be
+consistent with the :prop_tgt:`AUTOUIC_OPTIONS` target property content of the
+depender target.  The :variable:`CMAKE_DEBUG_TARGET_PROPERTIES` variable may
+be used to track the origin target of such
+:prop_tgt:`INTERFACE_AUTOUIC_OPTIONS`.  This means that a library which
+provides an alternative translation system for Qt may specify options which
+should be used when running ``uic``:
+
+.. code-block:: cmake
+
+  add_library(KI18n klocalizedstring.cpp)
+  target_link_libraries(KI18n Qt5::Core)
+
+  # KI18n uses the tr2i18n() function instead of tr().  That function is
+  # declared in the klocalizedstring.h header.
+  set(autouic_options
+    -tr tr2i18n
+    -include klocalizedstring.h
+  )
+
+  set_property(TARGET KI18n APPEND PROPERTY
+    INTERFACE_AUTOUIC_OPTIONS ${autouic_options}
+  )
+
+A consuming project linking to the target exported from upstream automatically
+uses appropriate options when ``uic`` is run by :prop_tgt:`AUTOUIC`, as a
+result of linking with the :prop_tgt:`IMPORTED` target:
+
+.. code-block:: cmake
+
+  set(CMAKE_AUTOUIC ON)
+  # Uses a libwidget.ui file:
+  add_library(LibWidget libwidget.cpp)
+  target_link_libraries(LibWidget
+    KF5::KI18n
+    Qt5::Widgets
+  )
+
+Source files can be excluded from :prop_tgt:`AUTOUIC` processing by
+enabling :prop_sf:`SKIP_AUTOUIC` or the broader :prop_sf:`SKIP_AUTOGEN`.
+
+.. _`Qt AUTORCC`:
+
+AUTORCC
+^^^^^^^
+
+The :prop_tgt:`AUTORCC` target property controls whether :manual:`cmake(1)`
+creates rules to execute ``rcc`` at the appropriate time on source files
+which have the suffix ``.qrc``.
+
+.. code-block:: cmake
+
+  add_executable(myexe main.cpp resource_file.qrc)
+
+The :prop_tgt:`AUTORCC` target property may be pre-set for all following targets
+by setting the :variable:`CMAKE_AUTORCC` variable.  The
+:prop_tgt:`AUTORCC_OPTIONS` target property may be populated to set options
+to pass to ``rcc``.  The :variable:`CMAKE_AUTORCC_OPTIONS` variable may be
+populated to pre-set the options for all following targets.  The
+:prop_sf:`AUTORCC_OPTIONS` source file property may be set on the
+``<name>.qrc`` file to set particular options for the file.  This
+overrides options from the :prop_tgt:`AUTORCC_OPTIONS` target property.
+
+Source files can be excluded from :prop_tgt:`AUTORCC` processing by
+enabling :prop_sf:`SKIP_AUTORCC` or the broader :prop_sf:`SKIP_AUTOGEN`.
+
+The ``<ORIGIN>_autogen`` target
+===============================
+
+The ``moc`` and ``uic`` tools are executed as part of a synthesized
+``<ORIGIN>_autogen`` :command:`custom target <add_custom_target>` generated by
+CMake.  By default that ``<ORIGIN>_autogen`` target inherits the dependencies
+of the ``<ORIGIN>`` target (see :prop_tgt:`AUTOGEN_ORIGIN_DEPENDS`).
+Target dependencies may be added to the ``<ORIGIN>_autogen`` target by adding
+them to the :prop_tgt:`AUTOGEN_TARGET_DEPENDS` target property.
+
+Visual Studio Generators
+========================
+
+When using the :manual:`Visual Studio generators <cmake-generators(7)>`, CMake
+generates a ``PRE_BUILD`` :command:`custom command <add_custom_command>`
+instead of the ``<ORIGIN>_autogen`` :command:`custom target <add_custom_target>`
+(for :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`).
+This isn't always possible though and
+an ``<ORIGIN>_autogen`` :command:`custom target <add_custom_target>` is used,
+when either
+
+- the ``<ORIGIN>`` target depends on :prop_sf:`GENERATED` files which aren't
+  excluded from :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` by
+  :prop_sf:`SKIP_AUTOMOC`, :prop_sf:`SKIP_AUTOUIC`, :prop_sf:`SKIP_AUTOGEN`
+  or :policy:`CMP0071`
+- :prop_tgt:`AUTOGEN_TARGET_DEPENDS` lists a source file
+- :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET` is enabled
+
+qtmain.lib on Windows
+=====================
+
+The Qt 4 and 5 :prop_tgt:`IMPORTED` targets for the QtGui libraries specify
+that the qtmain.lib static library shipped with Qt will be linked by all
+dependent executables which have the :prop_tgt:`WIN32_EXECUTABLE` enabled.
+
+To disable this behavior, enable the ``Qt5_NO_LINK_QTMAIN`` target property for
+Qt 5 based targets or ``QT4_NO_LINK_QTMAIN`` target property for Qt 4 based
+targets.
+
+.. code-block:: cmake
+
+  add_executable(myexe WIN32 main.cpp)
+  target_link_libraries(myexe Qt4::QtGui)
+
+  add_executable(myexe_no_qtmain WIN32 main_no_qtmain.cpp)
+  set_property(TARGET main_no_qtmain PROPERTY QT4_NO_LINK_QTMAIN ON)
+  target_link_libraries(main_no_qtmain Qt4::QtGui)
diff --git a/share/cmake-3.22/Help/manual/cmake-server.7.rst b/share/cmake-3.22/Help/manual/cmake-server.7.rst
new file mode 100644
index 0000000..6c8d0f4
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-server.7.rst
@@ -0,0 +1,7 @@
+.. cmake-manual-description: CMake Server
+
+cmake-server(7)
+***************
+
+The :manual:`cmake(1)` server mode has been removed since CMake 3.20.
+Clients should use the :manual:`cmake-file-api(7)` instead.
diff --git a/share/cmake-3.22/Help/manual/cmake-toolchains.7.rst b/share/cmake-3.22/Help/manual/cmake-toolchains.7.rst
new file mode 100644
index 0000000..a941310
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-toolchains.7.rst
@@ -0,0 +1,672 @@
+.. cmake-manual-description: CMake Toolchains Reference
+
+cmake-toolchains(7)
+*******************
+
+.. only:: html
+
+   .. contents::
+
+Introduction
+============
+
+CMake uses a toolchain of utilities to compile, link libraries and create
+archives, and other tasks to drive the build. The toolchain utilities available
+are determined by the languages enabled. In normal builds, CMake automatically
+determines the toolchain for host builds based on system introspection and
+defaults. In cross-compiling scenarios, a toolchain file may be specified
+with information about compiler and utility paths.
+
+Languages
+=========
+
+Languages are enabled by the :command:`project` command.  Language-specific
+built-in variables, such as
+:variable:`CMAKE_CXX_COMPILER <CMAKE_<LANG>_COMPILER>`,
+:variable:`CMAKE_CXX_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` etc are set by
+invoking the :command:`project` command.  If no project command
+is in the top-level CMakeLists file, one will be implicitly generated. By default
+the enabled languages are ``C`` and ``CXX``:
+
+.. code-block:: cmake
+
+  project(C_Only C)
+
+A special value of ``NONE`` can also be used with the :command:`project` command
+to enable no languages:
+
+.. code-block:: cmake
+
+  project(MyProject NONE)
+
+The :command:`enable_language` command can be used to enable languages after the
+:command:`project` command:
+
+.. code-block:: cmake
+
+  enable_language(CXX)
+
+When a language is enabled, CMake finds a compiler for that language, and
+determines some information, such as the vendor and version of the compiler,
+the target architecture and bitwidth, the location of corresponding utilities
+etc.
+
+The :prop_gbl:`ENABLED_LANGUAGES` global property contains the languages which
+are currently enabled.
+
+Variables and Properties
+========================
+
+Several variables relate to the language components of a toolchain which are
+enabled. :variable:`CMAKE_<LANG>_COMPILER` is the full path to the compiler used
+for ``<LANG>``. :variable:`CMAKE_<LANG>_COMPILER_ID` is the identifier used
+by CMake for the compiler and :variable:`CMAKE_<LANG>_COMPILER_VERSION` is the
+version of the compiler.
+
+The :variable:`CMAKE_<LANG>_FLAGS` variables and the configuration-specific
+equivalents contain flags that will be added to the compile command when
+compiling a file of a particular language.
+
+As the linker is invoked by the compiler driver, CMake needs a way to determine
+which compiler to use to invoke the linker. This is calculated by the
+:prop_sf:`LANGUAGE` of source files in the target, and in the case of static
+libraries, the language of the dependent libraries. The choice CMake makes may
+be overridden with the :prop_tgt:`LINKER_LANGUAGE` target property.
+
+Toolchain Features
+==================
+
+CMake provides the :command:`try_compile` command and wrapper macros such as
+:module:`CheckCXXSourceCompiles`, :module:`CheckCXXSymbolExists` and
+:module:`CheckIncludeFile` to test capability and availability of various
+toolchain features. These APIs test the toolchain in some way and cache the
+result so that the test does not have to be performed again the next time
+CMake runs.
+
+Some toolchain features have built-in handling in CMake, and do not require
+compile-tests. For example, :prop_tgt:`POSITION_INDEPENDENT_CODE` allows
+specifying that a target should be built as position-independent code, if
+the compiler supports that feature. The :prop_tgt:`<LANG>_VISIBILITY_PRESET`
+and :prop_tgt:`VISIBILITY_INLINES_HIDDEN` target properties add flags for
+hidden visibility, if supported by the compiler.
+
+.. _`Cross Compiling Toolchain`:
+
+Cross Compiling
+===============
+
+If :manual:`cmake(1)` is invoked with the command line parameter
+``--toolchain path/to/file`` or ``-DCMAKE_TOOLCHAIN_FILE=path/to/file``, the
+file will be loaded early to set values for the compilers.
+The :variable:`CMAKE_CROSSCOMPILING` variable is set to true when CMake is
+cross-compiling.
+
+Note that using the :variable:`CMAKE_SOURCE_DIR` or :variable:`CMAKE_BINARY_DIR`
+variables inside a toolchain file is typically undesirable.  The toolchain
+file is used in contexts where these variables have different values when used
+in different places (e.g. as part of a call to :command:`try_compile`).  In most
+cases, where there is a need to evaluate paths inside a toolchain file, the more
+appropriate variable to use would be :variable:`CMAKE_CURRENT_LIST_DIR`, since
+it always has an unambiguous, predictable value.
+
+Cross Compiling for Linux
+-------------------------
+
+A typical cross-compiling toolchain for Linux has content such
+as:
+
+.. code-block:: cmake
+
+  set(CMAKE_SYSTEM_NAME Linux)
+  set(CMAKE_SYSTEM_PROCESSOR arm)
+
+  set(CMAKE_SYSROOT /home/devel/rasp-pi-rootfs)
+  set(CMAKE_STAGING_PREFIX /home/devel/stage)
+
+  set(tools /home/devel/gcc-4.7-linaro-rpi-gnueabihf)
+  set(CMAKE_C_COMPILER ${tools}/bin/arm-linux-gnueabihf-gcc)
+  set(CMAKE_CXX_COMPILER ${tools}/bin/arm-linux-gnueabihf-g++)
+
+  set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+  set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+  set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+  set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
+
+The :variable:`CMAKE_SYSTEM_NAME` is the CMake-identifier of the target platform
+to build for.
+
+The :variable:`CMAKE_SYSTEM_PROCESSOR` is the CMake-identifier of the target architecture
+to build for.
+
+The :variable:`CMAKE_SYSROOT` is optional, and may be specified if a sysroot
+is available.
+
+The :variable:`CMAKE_STAGING_PREFIX` is also optional. It may be used to specify
+a path on the host to install to. The :variable:`CMAKE_INSTALL_PREFIX` is always
+the runtime installation location, even when cross-compiling.
+
+The :variable:`CMAKE_<LANG>_COMPILER` variables may be set to full paths, or to
+names of compilers to search for in standard locations.   For toolchains that
+do not support linking binaries without custom flags or scripts one may set
+the :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable to ``STATIC_LIBRARY``
+to tell CMake not to try to link executables during its checks.
+
+CMake ``find_*`` commands will look in the sysroot, and the :variable:`CMAKE_FIND_ROOT_PATH`
+entries by default in all cases, as well as looking in the host system root prefix.
+Although this can be controlled on a case-by-case basis, when cross-compiling, it
+can be useful to exclude looking in either the host or the target for particular
+artifacts. Generally, includes, libraries and packages should be found in the
+target system prefixes, whereas executables which must be run as part of the build
+should be found only on the host and not on the target. This is the purpose of
+the ``CMAKE_FIND_ROOT_PATH_MODE_*`` variables.
+
+.. _`Cray Cross-Compile`:
+
+Cross Compiling for the Cray Linux Environment
+----------------------------------------------
+
+Cross compiling for compute nodes in the Cray Linux Environment can be done
+without needing a separate toolchain file.  Specifying
+``-DCMAKE_SYSTEM_NAME=CrayLinuxEnvironment`` on the CMake command line will
+ensure that the appropriate build settings and search paths are configured.
+The platform will pull its configuration from the current environment
+variables and will configure a project to use the compiler wrappers from the
+Cray Programming Environment's ``PrgEnv-*`` modules if present and loaded.
+
+The default configuration of the Cray Programming Environment is to only
+support static libraries.  This can be overridden and shared libraries
+enabled by setting the ``CRAYPE_LINK_TYPE`` environment variable to
+``dynamic``.
+
+Running CMake without specifying :variable:`CMAKE_SYSTEM_NAME` will
+run the configure step in host mode assuming a standard Linux environment.
+If not overridden, the ``PrgEnv-*`` compiler wrappers will end up getting used,
+which if targeting the either the login node or compute node, is likely not the
+desired behavior.  The exception to this would be if you are building directly
+on a NID instead of cross-compiling from a login node. If trying to build
+software for a login node, you will need to either first unload the
+currently loaded ``PrgEnv-*`` module or explicitly tell CMake to use the
+system compilers in ``/usr/bin`` instead of the Cray wrappers.  If instead
+targeting a compute node is desired, just specify the
+:variable:`CMAKE_SYSTEM_NAME` as mentioned above.
+
+Cross Compiling using Clang
+---------------------------
+
+Some compilers such as Clang are inherently cross compilers.
+The :variable:`CMAKE_<LANG>_COMPILER_TARGET` can be set to pass a
+value to those supported compilers when compiling:
+
+.. code-block:: cmake
+
+  set(CMAKE_SYSTEM_NAME Linux)
+  set(CMAKE_SYSTEM_PROCESSOR arm)
+
+  set(triple arm-linux-gnueabihf)
+
+  set(CMAKE_C_COMPILER clang)
+  set(CMAKE_C_COMPILER_TARGET ${triple})
+  set(CMAKE_CXX_COMPILER clang++)
+  set(CMAKE_CXX_COMPILER_TARGET ${triple})
+
+Similarly, some compilers do not ship their own supplementary utilities
+such as linkers, but provide a way to specify the location of the external
+toolchain which will be used by the compiler driver. The
+:variable:`CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN` variable can be set in a
+toolchain file to pass the path to the compiler driver.
+
+Cross Compiling for QNX
+-----------------------
+
+As the Clang compiler the QNX QCC compile is inherently a cross compiler.
+And the :variable:`CMAKE_<LANG>_COMPILER_TARGET` can be set to pass a
+value to those supported compilers when compiling:
+
+.. code-block:: cmake
+
+  set(CMAKE_SYSTEM_NAME QNX)
+
+  set(arch gcc_ntoarmv7le)
+
+  set(CMAKE_C_COMPILER qcc)
+  set(CMAKE_C_COMPILER_TARGET ${arch})
+  set(CMAKE_CXX_COMPILER QCC)
+  set(CMAKE_CXX_COMPILER_TARGET ${arch})
+
+  set(CMAKE_SYSROOT $ENV{QNX_TARGET})
+
+
+Cross Compiling for Windows CE
+------------------------------
+
+Cross compiling for Windows CE requires the corresponding SDK being
+installed on your system.  These SDKs are usually installed under
+``C:/Program Files (x86)/Windows CE Tools/SDKs``.
+
+A toolchain file to configure a Visual Studio generator for
+Windows CE may look like this:
+
+.. code-block:: cmake
+
+  set(CMAKE_SYSTEM_NAME WindowsCE)
+
+  set(CMAKE_SYSTEM_VERSION 8.0)
+  set(CMAKE_SYSTEM_PROCESSOR arm)
+
+  set(CMAKE_GENERATOR_TOOLSET CE800) # Can be omitted for 8.0
+  set(CMAKE_GENERATOR_PLATFORM SDK_AM335X_SK_WEC2013_V310)
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` tells the generator which SDK to use.
+Further :variable:`CMAKE_SYSTEM_VERSION` tells the generator what version of
+Windows CE to use.  Currently version 8.0 (Windows Embedded Compact 2013) is
+supported out of the box.  Other versions may require one to set
+:variable:`CMAKE_GENERATOR_TOOLSET` to the correct value.
+
+Cross Compiling for Windows 10 Universal Applications
+-----------------------------------------------------
+
+A toolchain file to configure a Visual Studio generator for a
+Windows 10 Universal Application may look like this:
+
+.. code-block:: cmake
+
+  set(CMAKE_SYSTEM_NAME WindowsStore)
+  set(CMAKE_SYSTEM_VERSION 10.0)
+
+A Windows 10 Universal Application targets both Windows Store and
+Windows Phone.  Specify the :variable:`CMAKE_SYSTEM_VERSION` variable
+to be ``10.0`` to build with the latest available Windows 10 SDK.
+Specify a more specific version (e.g. ``10.0.10240.0`` for RTM)
+to build with the corresponding SDK.
+
+Cross Compiling for Windows Phone
+---------------------------------
+
+A toolchain file to configure a Visual Studio generator for
+Windows Phone may look like this:
+
+.. code-block:: cmake
+
+  set(CMAKE_SYSTEM_NAME WindowsPhone)
+  set(CMAKE_SYSTEM_VERSION 8.1)
+
+Cross Compiling for Windows Store
+---------------------------------
+
+A toolchain file to configure a Visual Studio generator for
+Windows Store may look like this:
+
+.. code-block:: cmake
+
+  set(CMAKE_SYSTEM_NAME WindowsStore)
+  set(CMAKE_SYSTEM_VERSION 8.1)
+
+.. _`Cross Compiling for Android`:
+
+Cross Compiling for Android
+---------------------------
+
+A toolchain file may configure cross-compiling for Android by setting the
+:variable:`CMAKE_SYSTEM_NAME` variable to ``Android``.  Further configuration
+is specific to the Android development environment to be used.
+
+For :ref:`Visual Studio Generators`, CMake expects :ref:`NVIDIA Nsight Tegra
+Visual Studio Edition <Cross Compiling for Android with NVIDIA Nsight Tegra
+Visual Studio Edition>` or the :ref:`Visual Studio tools for Android
+<Cross Compiling for Android with the NDK>` to be installed. See those sections
+for further configuration details.
+
+For :ref:`Makefile Generators` and the :generator:`Ninja` generator,
+CMake expects one of these environments:
+
+* :ref:`NDK <Cross Compiling for Android with the NDK>`
+* :ref:`Standalone Toolchain <Cross Compiling for Android with a Standalone Toolchain>`
+
+CMake uses the following steps to select one of the environments:
+
+* If the :variable:`CMAKE_ANDROID_NDK` variable is set, the NDK at the
+  specified location will be used.
+
+* Else, if the :variable:`CMAKE_ANDROID_STANDALONE_TOOLCHAIN` variable
+  is set, the Standalone Toolchain at the specified location will be used.
+
+* Else, if the :variable:`CMAKE_SYSROOT` variable is set to a directory
+  of the form ``<ndk>/platforms/android-<api>/arch-<arch>``, the ``<ndk>``
+  part will be used as the value of :variable:`CMAKE_ANDROID_NDK` and the
+  NDK will be used.
+
+* Else, if the :variable:`CMAKE_SYSROOT` variable is set to a directory of the
+  form ``<standalone-toolchain>/sysroot``, the ``<standalone-toolchain>`` part
+  will be used as the value of :variable:`CMAKE_ANDROID_STANDALONE_TOOLCHAIN`
+  and the Standalone Toolchain will be used.
+
+* Else, if a cmake variable ``ANDROID_NDK`` is set it will be used
+  as the value of :variable:`CMAKE_ANDROID_NDK`, and the NDK will be used.
+
+* Else, if a cmake variable ``ANDROID_STANDALONE_TOOLCHAIN`` is set, it will be
+  used as the value of :variable:`CMAKE_ANDROID_STANDALONE_TOOLCHAIN`, and the
+  Standalone Toolchain will be used.
+
+* Else, if an environment variable ``ANDROID_NDK_ROOT`` or
+  ``ANDROID_NDK`` is set, it will be used as the value of
+  :variable:`CMAKE_ANDROID_NDK`, and the NDK will be used.
+
+* Else, if an environment variable ``ANDROID_STANDALONE_TOOLCHAIN`` is
+  set then it will be used as the value of
+  :variable:`CMAKE_ANDROID_STANDALONE_TOOLCHAIN`, and the Standalone
+  Toolchain will be used.
+
+* Else, an error diagnostic will be issued that neither the NDK or
+  Standalone Toolchain can be found.
+
+.. versionadded:: 3.20
+  If an Android NDK is selected, its version number is reported
+  in the :variable:`CMAKE_ANDROID_NDK_VERSION` variable.
+
+.. _`Cross Compiling for Android with the NDK`:
+
+Cross Compiling for Android with the NDK
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A toolchain file may configure :ref:`Makefile Generators`,
+:ref:`Ninja Generators`, or :ref:`Visual Studio Generators` to target
+Android for cross-compiling.
+
+Configure use of an Android NDK with the following variables:
+
+:variable:`CMAKE_SYSTEM_NAME`
+  Set to ``Android``.  Must be specified to enable cross compiling
+  for Android.
+
+:variable:`CMAKE_SYSTEM_VERSION`
+  Set to the Android API level.  If not specified, the value is
+  determined as follows:
+
+  * If the :variable:`CMAKE_ANDROID_API` variable is set, its value
+    is used as the API level.
+  * If the :variable:`CMAKE_SYSROOT` variable is set, the API level is
+    detected from the NDK directory structure containing the sysroot.
+  * Otherwise, the latest API level available in the NDK is used.
+
+:variable:`CMAKE_ANDROID_ARCH_ABI`
+  Set to the Android ABI (architecture).  If not specified, this
+  variable will default to the first supported ABI in the list of
+  ``armeabi``, ``armeabi-v7a`` and ``arm64-v8a``.
+  The :variable:`CMAKE_ANDROID_ARCH` variable will be computed
+  from ``CMAKE_ANDROID_ARCH_ABI`` automatically.
+  Also see the :variable:`CMAKE_ANDROID_ARM_MODE` and
+  :variable:`CMAKE_ANDROID_ARM_NEON` variables.
+
+:variable:`CMAKE_ANDROID_NDK`
+  Set to the absolute path to the Android NDK root directory.
+  If not specified, a default for this variable will be chosen
+  as specified :ref:`above <Cross Compiling for Android>`.
+
+:variable:`CMAKE_ANDROID_NDK_DEPRECATED_HEADERS`
+  Set to a true value to use the deprecated per-api-level headers
+  instead of the unified headers.  If not specified, the default will
+  be false unless using a NDK that does not provide unified headers.
+
+:variable:`CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION`
+  On NDK r19 or above, this variable must be unset or set to ``clang``.
+  On NDK r18 or below, set this to the version of the NDK toolchain to
+  be selected as the compiler.  If not specified, the default will be
+  the latest available GCC toolchain.
+
+:variable:`CMAKE_ANDROID_STL_TYPE`
+  Set to specify which C++ standard library to use.  If not specified,
+  a default will be selected as described in the variable documentation.
+
+The following variables will be computed and provided automatically:
+
+:variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`
+  The absolute path prefix to the binutils in the NDK toolchain.
+
+:variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`
+  The host platform suffix of the binutils in the NDK toolchain.
+
+
+For example, a toolchain file might contain:
+
+.. code-block:: cmake
+
+  set(CMAKE_SYSTEM_NAME Android)
+  set(CMAKE_SYSTEM_VERSION 21) # API level
+  set(CMAKE_ANDROID_ARCH_ABI arm64-v8a)
+  set(CMAKE_ANDROID_NDK /path/to/android-ndk)
+  set(CMAKE_ANDROID_STL_TYPE gnustl_static)
+
+Alternatively one may specify the values without a toolchain file:
+
+.. code-block:: console
+
+  $ cmake ../src \
+    -DCMAKE_SYSTEM_NAME=Android \
+    -DCMAKE_SYSTEM_VERSION=21 \
+    -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
+    -DCMAKE_ANDROID_NDK=/path/to/android-ndk \
+    -DCMAKE_ANDROID_STL_TYPE=gnustl_static
+
+.. _`Cross Compiling for Android with a Standalone Toolchain`:
+
+Cross Compiling for Android with a Standalone Toolchain
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A toolchain file may configure :ref:`Makefile Generators` or the
+:generator:`Ninja` generator to target Android for cross-compiling
+using a standalone toolchain.
+
+Configure use of an Android standalone toolchain with the following variables:
+
+:variable:`CMAKE_SYSTEM_NAME`
+  Set to ``Android``.  Must be specified to enable cross compiling
+  for Android.
+
+:variable:`CMAKE_ANDROID_STANDALONE_TOOLCHAIN`
+  Set to the absolute path to the standalone toolchain root directory.
+  A ``${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot`` directory
+  must exist.
+  If not specified, a default for this variable will be chosen
+  as specified :ref:`above <Cross Compiling for Android>`.
+
+:variable:`CMAKE_ANDROID_ARM_MODE`
+  When the standalone toolchain targets ARM, optionally set this to ``ON``
+  to target 32-bit ARM instead of 16-bit Thumb.
+  See variable documentation for details.
+
+:variable:`CMAKE_ANDROID_ARM_NEON`
+  When the standalone toolchain targets ARM v7, optionally set thisto ``ON``
+  to target ARM NEON devices.  See variable documentation for details.
+
+The following variables will be computed and provided automatically:
+
+:variable:`CMAKE_SYSTEM_VERSION`
+  The Android API level detected from the standalone toolchain.
+
+:variable:`CMAKE_ANDROID_ARCH_ABI`
+  The Android ABI detected from the standalone toolchain.
+
+:variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`
+  The absolute path prefix to the ``binutils`` in the standalone toolchain.
+
+:variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`
+  The host platform suffix of the ``binutils`` in the standalone toolchain.
+
+For example, a toolchain file might contain:
+
+.. code-block:: cmake
+
+  set(CMAKE_SYSTEM_NAME Android)
+  set(CMAKE_ANDROID_STANDALONE_TOOLCHAIN /path/to/android-toolchain)
+
+Alternatively one may specify the values without a toolchain file:
+
+.. code-block:: console
+
+  $ cmake ../src \
+    -DCMAKE_SYSTEM_NAME=Android \
+    -DCMAKE_ANDROID_STANDALONE_TOOLCHAIN=/path/to/android-toolchain
+
+.. _`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio Edition`:
+
+Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio Edition
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A toolchain file to configure one of the :ref:`Visual Studio Generators`
+to build using NVIDIA Nsight Tegra targeting Android may look like this:
+
+.. code-block:: cmake
+
+  set(CMAKE_SYSTEM_NAME Android)
+
+The :variable:`CMAKE_GENERATOR_TOOLSET` may be set to select
+the Nsight Tegra "Toolchain Version" value.
+
+See also target properties:
+
+* :prop_tgt:`ANDROID_ANT_ADDITIONAL_OPTIONS`
+* :prop_tgt:`ANDROID_API_MIN`
+* :prop_tgt:`ANDROID_API`
+* :prop_tgt:`ANDROID_ARCH`
+* :prop_tgt:`ANDROID_ASSETS_DIRECTORIES`
+* :prop_tgt:`ANDROID_GUI`
+* :prop_tgt:`ANDROID_JAR_DEPENDENCIES`
+* :prop_tgt:`ANDROID_JAR_DIRECTORIES`
+* :prop_tgt:`ANDROID_JAVA_SOURCE_DIR`
+* :prop_tgt:`ANDROID_NATIVE_LIB_DEPENDENCIES`
+* :prop_tgt:`ANDROID_NATIVE_LIB_DIRECTORIES`
+* :prop_tgt:`ANDROID_PROCESS_MAX`
+* :prop_tgt:`ANDROID_PROGUARD_CONFIG_PATH`
+* :prop_tgt:`ANDROID_PROGUARD`
+* :prop_tgt:`ANDROID_SECURE_PROPS_PATH`
+* :prop_tgt:`ANDROID_SKIP_ANT_STEP`
+* :prop_tgt:`ANDROID_STL_TYPE`
+
+.. _`Cross Compiling for iOS, tvOS, or watchOS`:
+
+Cross Compiling for iOS, tvOS, or watchOS
+-----------------------------------------
+
+For cross-compiling to iOS, tvOS, or watchOS, the :generator:`Xcode`
+generator is recommended.  The :generator:`Unix Makefiles` or
+:generator:`Ninja` generators can also be used, but they require the
+project to handle more areas like target CPU selection and code signing.
+
+Any of the three systems can be targeted by setting the
+:variable:`CMAKE_SYSTEM_NAME` variable to a value from the table below.
+By default, the latest Device SDK is chosen.  As for all Apple platforms,
+a different SDK (e.g. a simulator) can be selected by setting the
+:variable:`CMAKE_OSX_SYSROOT` variable, although this should rarely be
+necessary (see :ref:`Switching Between Device and Simulator` below).
+A list of available SDKs can be obtained by running ``xcodebuild -showsdks``.
+
+=======  ================= ==================== ================
+OS       CMAKE_SYSTEM_NAME Device SDK (default) Simulator SDK
+=======  ================= ==================== ================
+iOS      iOS               iphoneos             iphonesimulator
+tvOS     tvOS              appletvos            appletvsimulator
+watchOS  watchOS           watchos              watchsimulator
+=======  ================= ==================== ================
+
+For example, to create a CMake configuration for iOS, the following
+command is sufficient:
+
+.. code-block:: console
+
+  cmake .. -GXcode -DCMAKE_SYSTEM_NAME=iOS
+
+Variable :variable:`CMAKE_OSX_ARCHITECTURES` can be used to set architectures
+for both device and simulator. Variable :variable:`CMAKE_OSX_DEPLOYMENT_TARGET`
+can be used to set an iOS/tvOS/watchOS deployment target.
+
+Next configuration will install fat 5 architectures iOS library
+and add the ``-miphoneos-version-min=9.3``/``-mios-simulator-version-min=9.3``
+flags to the compiler:
+
+.. code-block:: console
+
+  $ cmake -S. -B_builds -GXcode \
+      -DCMAKE_SYSTEM_NAME=iOS \
+      "-DCMAKE_OSX_ARCHITECTURES=armv7;armv7s;arm64;i386;x86_64" \
+      -DCMAKE_OSX_DEPLOYMENT_TARGET=9.3 \
+      -DCMAKE_INSTALL_PREFIX=`pwd`/_install \
+      -DCMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH=NO \
+      -DCMAKE_IOS_INSTALL_COMBINED=YES
+
+Example:
+
+.. code-block:: cmake
+
+  # CMakeLists.txt
+  cmake_minimum_required(VERSION 3.14)
+  project(foo)
+  add_library(foo foo.cpp)
+  install(TARGETS foo DESTINATION lib)
+
+Install:
+
+.. code-block:: console
+
+    $ cmake --build _builds --config Release --target install
+
+Check library:
+
+.. code-block:: console
+
+    $ lipo -info _install/lib/libfoo.a
+    Architectures in the fat file: _install/lib/libfoo.a are: i386 armv7 armv7s x86_64 arm64
+
+.. code-block:: console
+
+    $ otool -l _install/lib/libfoo.a | grep -A2 LC_VERSION_MIN_IPHONEOS
+          cmd LC_VERSION_MIN_IPHONEOS
+      cmdsize 16
+      version 9.3
+
+Code Signing
+^^^^^^^^^^^^
+
+Some build artifacts for the embedded Apple platforms require mandatory
+code signing.  If the :generator:`Xcode` generator is being used and
+code signing is required or desired, the development team ID can be
+specified via the ``CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM`` CMake variable.
+This team ID will then be included in the generated Xcode project.
+By default, CMake avoids the need for code signing during the internal
+configuration phase (i.e compiler ID and feature detection).
+
+.. _`Switching Between Device and Simulator`:
+
+Switching Between Device and Simulator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+When configuring for any of the embedded platforms, one can target either
+real devices or the simulator.  Both have their own separate SDK, but CMake
+only supports specifying a single SDK for the configuration phase.  This
+means the developer must select one or the other at configuration time.
+When using the :generator:`Xcode` generator, this is less of a limitation
+because Xcode still allows you to build for either a device or a simulator,
+even though configuration was only performed for one of the two.  From
+within the Xcode IDE, builds are performed for the selected "destination"
+platform.  When building from the command line, the desired sdk can be
+specified directly by passing a ``-sdk`` option to the underlying build
+tool (``xcodebuild``).  For example:
+
+.. code-block:: console
+
+  $ cmake --build ... -- -sdk iphonesimulator
+
+Please note that checks made during configuration were performed against
+the configure-time SDK and might not hold true for other SDKs.  Commands
+like :command:`find_package`, :command:`find_library`, etc. store and use
+details only for the configured SDK/platform, so they can be problematic
+if wanting to switch between device and simulator builds. You can follow
+the next rules to make device + simulator configuration work:
+
+- Use explicit ``-l`` linker flag,
+  e.g. ``target_link_libraries(foo PUBLIC "-lz")``
+
+- Use explicit ``-framework`` linker flag,
+  e.g. ``target_link_libraries(foo PUBLIC "-framework CoreFoundation")``
+
+- Use :command:`find_package` only for libraries installed with
+  :variable:`CMAKE_IOS_INSTALL_COMBINED` feature
diff --git a/share/cmake-3.22/Help/manual/cmake-variables.7.rst b/share/cmake-3.22/Help/manual/cmake-variables.7.rst
new file mode 100644
index 0000000..4ed0b2e
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake-variables.7.rst
@@ -0,0 +1,728 @@
+.. cmake-manual-description: CMake Variables Reference
+
+cmake-variables(7)
+******************
+
+.. only:: html
+
+   .. contents::
+
+This page documents variables that are provided by CMake
+or have meaning to CMake when set by project code.
+
+For general information on variables, see the
+:ref:`Variables <CMake Language Variables>`
+section in the cmake-language manual.
+
+.. include:: ID_RESERVE.txt
+
+Variables that Provide Information
+==================================
+
+.. toctree::
+   :maxdepth: 1
+
+   /variable/CMAKE_AR
+   /variable/CMAKE_ARGC
+   /variable/CMAKE_ARGV0
+   /variable/CMAKE_BINARY_DIR
+   /variable/CMAKE_BUILD_TOOL
+   /variable/CMAKE_CACHE_MAJOR_VERSION
+   /variable/CMAKE_CACHE_MINOR_VERSION
+   /variable/CMAKE_CACHE_PATCH_VERSION
+   /variable/CMAKE_CACHEFILE_DIR
+   /variable/CMAKE_CFG_INTDIR
+   /variable/CMAKE_COMMAND
+   /variable/CMAKE_CPACK_COMMAND
+   /variable/CMAKE_CROSSCOMPILING
+   /variable/CMAKE_CROSSCOMPILING_EMULATOR
+   /variable/CMAKE_CTEST_COMMAND
+   /variable/CMAKE_CURRENT_BINARY_DIR
+   /variable/CMAKE_CURRENT_FUNCTION
+   /variable/CMAKE_CURRENT_FUNCTION_LIST_DIR
+   /variable/CMAKE_CURRENT_FUNCTION_LIST_FILE
+   /variable/CMAKE_CURRENT_FUNCTION_LIST_LINE
+   /variable/CMAKE_CURRENT_LIST_DIR
+   /variable/CMAKE_CURRENT_LIST_FILE
+   /variable/CMAKE_CURRENT_LIST_LINE
+   /variable/CMAKE_CURRENT_SOURCE_DIR
+   /variable/CMAKE_DEBUG_TARGET_PROPERTIES
+   /variable/CMAKE_DIRECTORY_LABELS
+   /variable/CMAKE_DL_LIBS
+   /variable/CMAKE_DOTNET_TARGET_FRAMEWORK
+   /variable/CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION
+   /variable/CMAKE_EDIT_COMMAND
+   /variable/CMAKE_EXECUTABLE_SUFFIX
+   /variable/CMAKE_EXECUTABLE_SUFFIX_LANG
+   /variable/CMAKE_EXTRA_GENERATOR
+   /variable/CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES
+   /variable/CMAKE_FIND_DEBUG_MODE
+   /variable/CMAKE_FIND_PACKAGE_NAME
+   /variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION
+   /variable/CMAKE_FIND_PACKAGE_SORT_ORDER
+   /variable/CMAKE_GENERATOR
+   /variable/CMAKE_GENERATOR_INSTANCE
+   /variable/CMAKE_GENERATOR_PLATFORM
+   /variable/CMAKE_GENERATOR_TOOLSET
+   /variable/CMAKE_IMPORT_LIBRARY_PREFIX
+   /variable/CMAKE_IMPORT_LIBRARY_SUFFIX
+   /variable/CMAKE_JOB_POOL_COMPILE
+   /variable/CMAKE_JOB_POOL_LINK
+   /variable/CMAKE_JOB_POOL_PRECOMPILE_HEADER
+   /variable/CMAKE_JOB_POOLS
+   /variable/CMAKE_LANG_COMPILER_AR
+   /variable/CMAKE_LANG_COMPILER_FRONTEND_VARIANT
+   /variable/CMAKE_LANG_COMPILER_RANLIB
+   /variable/CMAKE_LANG_LINK_LIBRARY_SUFFIX
+   /variable/CMAKE_LINK_LIBRARY_SUFFIX
+   /variable/CMAKE_LINK_SEARCH_END_STATIC
+   /variable/CMAKE_LINK_SEARCH_START_STATIC
+   /variable/CMAKE_MAJOR_VERSION
+   /variable/CMAKE_MAKE_PROGRAM
+   /variable/CMAKE_MATCH_COUNT
+   /variable/CMAKE_MATCH_n
+   /variable/CMAKE_MINIMUM_REQUIRED_VERSION
+   /variable/CMAKE_MINOR_VERSION
+   /variable/CMAKE_NETRC
+   /variable/CMAKE_NETRC_FILE
+   /variable/CMAKE_PARENT_LIST_FILE
+   /variable/CMAKE_PATCH_VERSION
+   /variable/CMAKE_PROJECT_DESCRIPTION
+   /variable/CMAKE_PROJECT_HOMEPAGE_URL
+   /variable/CMAKE_PROJECT_NAME
+   /variable/CMAKE_PROJECT_VERSION
+   /variable/CMAKE_PROJECT_VERSION_MAJOR
+   /variable/CMAKE_PROJECT_VERSION_MINOR
+   /variable/CMAKE_PROJECT_VERSION_PATCH
+   /variable/CMAKE_PROJECT_VERSION_TWEAK
+   /variable/CMAKE_RANLIB
+   /variable/CMAKE_ROOT
+   /variable/CMAKE_RULE_MESSAGES
+   /variable/CMAKE_SCRIPT_MODE_FILE
+   /variable/CMAKE_SHARED_LIBRARY_PREFIX
+   /variable/CMAKE_SHARED_LIBRARY_SUFFIX
+   /variable/CMAKE_SHARED_MODULE_PREFIX
+   /variable/CMAKE_SHARED_MODULE_SUFFIX
+   /variable/CMAKE_SIZEOF_VOID_P
+   /variable/CMAKE_SKIP_INSTALL_RULES
+   /variable/CMAKE_SKIP_RPATH
+   /variable/CMAKE_SOURCE_DIR
+   /variable/CMAKE_STATIC_LIBRARY_PREFIX
+   /variable/CMAKE_STATIC_LIBRARY_SUFFIX
+   /variable/CMAKE_Swift_MODULE_DIRECTORY
+   /variable/CMAKE_Swift_NUM_THREADS
+   /variable/CMAKE_TOOLCHAIN_FILE
+   /variable/CMAKE_TWEAK_VERSION
+   /variable/CMAKE_VERBOSE_MAKEFILE
+   /variable/CMAKE_VERSION
+   /variable/CMAKE_VS_DEVENV_COMMAND
+   /variable/CMAKE_VS_MSBUILD_COMMAND
+   /variable/CMAKE_VS_NsightTegra_VERSION
+   /variable/CMAKE_VS_PLATFORM_NAME
+   /variable/CMAKE_VS_PLATFORM_NAME_DEFAULT
+   /variable/CMAKE_VS_PLATFORM_TOOLSET
+   /variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA
+   /variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR
+   /variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE
+   /variable/CMAKE_VS_PLATFORM_TOOLSET_VERSION
+   /variable/CMAKE_VS_TARGET_FRAMEWORK_VERSION
+   /variable/CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER
+   /variable/CMAKE_VS_TARGET_FRAMEWORK_TARGETS_VERSION
+   /variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION
+   /variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM
+   /variable/CMAKE_XCODE_BUILD_SYSTEM
+   /variable/CMAKE_XCODE_PLATFORM_TOOLSET
+   /variable/PROJECT-NAME_BINARY_DIR
+   /variable/PROJECT-NAME_DESCRIPTION
+   /variable/PROJECT-NAME_HOMEPAGE_URL
+   /variable/PROJECT-NAME_IS_TOP_LEVEL
+   /variable/PROJECT-NAME_SOURCE_DIR
+   /variable/PROJECT-NAME_VERSION
+   /variable/PROJECT-NAME_VERSION_MAJOR
+   /variable/PROJECT-NAME_VERSION_MINOR
+   /variable/PROJECT-NAME_VERSION_PATCH
+   /variable/PROJECT-NAME_VERSION_TWEAK
+   /variable/PROJECT_BINARY_DIR
+   /variable/PROJECT_DESCRIPTION
+   /variable/PROJECT_HOMEPAGE_URL
+   /variable/PROJECT_IS_TOP_LEVEL
+   /variable/PROJECT_NAME
+   /variable/PROJECT_SOURCE_DIR
+   /variable/PROJECT_VERSION
+   /variable/PROJECT_VERSION_MAJOR
+   /variable/PROJECT_VERSION_MINOR
+   /variable/PROJECT_VERSION_PATCH
+   /variable/PROJECT_VERSION_TWEAK
+
+Variables that Change Behavior
+==============================
+
+.. toctree::
+   :maxdepth: 1
+
+   /variable/BUILD_SHARED_LIBS
+   /variable/CMAKE_ABSOLUTE_DESTINATION_FILES
+   /variable/CMAKE_APPBUNDLE_PATH
+   /variable/CMAKE_AUTOMOC_RELAXED_MODE
+   /variable/CMAKE_BACKWARDS_COMPATIBILITY
+   /variable/CMAKE_BUILD_TYPE
+   /variable/CMAKE_CLANG_VFS_OVERLAY
+   /variable/CMAKE_CODEBLOCKS_COMPILER_ID
+   /variable/CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES
+   /variable/CMAKE_CODELITE_USE_TARGETS
+   /variable/CMAKE_COLOR_MAKEFILE
+   /variable/CMAKE_CONFIGURATION_TYPES
+   /variable/CMAKE_DEPENDS_IN_PROJECT_ONLY
+   /variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName
+   /variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES
+   /variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT
+   /variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS
+   /variable/CMAKE_ECLIPSE_RESOURCE_ENCODING
+   /variable/CMAKE_ECLIPSE_VERSION
+   /variable/CMAKE_ERROR_DEPRECATED
+   /variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
+   /variable/CMAKE_EXECUTE_PROCESS_COMMAND_ECHO
+   /variable/CMAKE_EXPORT_COMPILE_COMMANDS
+   /variable/CMAKE_EXPORT_PACKAGE_REGISTRY
+   /variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY
+   /variable/CMAKE_FIND_APPBUNDLE
+   /variable/CMAKE_FIND_FRAMEWORK
+   /variable/CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX
+   /variable/CMAKE_FIND_LIBRARY_PREFIXES
+   /variable/CMAKE_FIND_LIBRARY_SUFFIXES
+   /variable/CMAKE_FIND_NO_INSTALL_PREFIX
+   /variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY
+   /variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY
+   /variable/CMAKE_FIND_PACKAGE_PREFER_CONFIG
+   /variable/CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS
+   /variable/CMAKE_FIND_PACKAGE_WARN_NO_MODULE
+   /variable/CMAKE_FIND_ROOT_PATH
+   /variable/CMAKE_FIND_ROOT_PATH_MODE_INCLUDE
+   /variable/CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
+   /variable/CMAKE_FIND_ROOT_PATH_MODE_PACKAGE
+   /variable/CMAKE_FIND_ROOT_PATH_MODE_PROGRAM
+   /variable/CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH
+   /variable/CMAKE_FIND_USE_CMAKE_PATH
+   /variable/CMAKE_FIND_USE_CMAKE_SYSTEM_PATH
+   /variable/CMAKE_FIND_USE_PACKAGE_REGISTRY
+   /variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH
+   /variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH
+   /variable/CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY
+   /variable/CMAKE_FRAMEWORK_PATH
+   /variable/CMAKE_IGNORE_PATH
+   /variable/CMAKE_INCLUDE_DIRECTORIES_BEFORE
+   /variable/CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE
+   /variable/CMAKE_INCLUDE_PATH
+   /variable/CMAKE_INSTALL_DEFAULT_COMPONENT_NAME
+   /variable/CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
+   /variable/CMAKE_INSTALL_MESSAGE
+   /variable/CMAKE_INSTALL_PREFIX
+   /variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT
+   /variable/CMAKE_LIBRARY_PATH
+   /variable/CMAKE_LINK_DIRECTORIES_BEFORE
+   /variable/CMAKE_MFC_FLAG
+   /variable/CMAKE_MAXIMUM_RECURSION_DEPTH
+   /variable/CMAKE_MESSAGE_CONTEXT
+   /variable/CMAKE_MESSAGE_CONTEXT_SHOW
+   /variable/CMAKE_MESSAGE_INDENT
+   /variable/CMAKE_MESSAGE_LOG_LEVEL
+   /variable/CMAKE_MODULE_PATH
+   /variable/CMAKE_POLICY_DEFAULT_CMPNNNN
+   /variable/CMAKE_POLICY_WARNING_CMPNNNN
+   /variable/CMAKE_PREFIX_PATH
+   /variable/CMAKE_PROGRAM_PATH
+   /variable/CMAKE_PROJECT_INCLUDE
+   /variable/CMAKE_PROJECT_INCLUDE_BEFORE
+   /variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE
+   /variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE_BEFORE
+   /variable/CMAKE_REQUIRE_FIND_PACKAGE_PackageName
+   /variable/CMAKE_SKIP_INSTALL_ALL_DEPENDENCY
+   /variable/CMAKE_STAGING_PREFIX
+   /variable/CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
+   /variable/CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE
+   /variable/CMAKE_SUPPRESS_REGENERATION
+   /variable/CMAKE_SYSROOT
+   /variable/CMAKE_SYSROOT_COMPILE
+   /variable/CMAKE_SYSROOT_LINK
+   /variable/CMAKE_SYSTEM_APPBUNDLE_PATH
+   /variable/CMAKE_SYSTEM_FRAMEWORK_PATH
+   /variable/CMAKE_SYSTEM_IGNORE_PATH
+   /variable/CMAKE_SYSTEM_INCLUDE_PATH
+   /variable/CMAKE_SYSTEM_LIBRARY_PATH
+   /variable/CMAKE_SYSTEM_PREFIX_PATH
+   /variable/CMAKE_SYSTEM_PROGRAM_PATH
+   /variable/CMAKE_TLS_CAINFO
+   /variable/CMAKE_TLS_VERIFY
+   /variable/CMAKE_USER_MAKE_RULES_OVERRIDE
+   /variable/CMAKE_WARN_DEPRECATED
+   /variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
+   /variable/CMAKE_XCODE_GENERATE_SCHEME
+   /variable/CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY
+   /variable/CMAKE_XCODE_LINK_BUILD_PHASE_MODE
+   /variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER
+   /variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
+   /variable/CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
+   /variable/CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
+   /variable/CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
+   /variable/CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
+   /variable/CMAKE_XCODE_SCHEME_ENVIRONMENT
+   /variable/CMAKE_XCODE_SCHEME_GUARD_MALLOC
+   /variable/CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
+   /variable/CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES
+   /variable/CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE
+   /variable/CMAKE_XCODE_SCHEME_MALLOC_STACK
+   /variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER
+   /variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP
+   /variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
+   /variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
+   /variable/CMAKE_XCODE_SCHEME_WORKING_DIRECTORY
+   /variable/CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS
+   /variable/PackageName_ROOT
+
+Variables that Describe the System
+==================================
+
+.. toctree::
+   :maxdepth: 1
+
+   /variable/ANDROID
+   /variable/APPLE
+   /variable/BORLAND
+   /variable/CMAKE_ANDROID_NDK_VERSION
+   /variable/CMAKE_CL_64
+   /variable/CMAKE_COMPILER_2005
+   /variable/CMAKE_HOST_APPLE
+   /variable/CMAKE_HOST_SOLARIS
+   /variable/CMAKE_HOST_SYSTEM
+   /variable/CMAKE_HOST_SYSTEM_NAME
+   /variable/CMAKE_HOST_SYSTEM_PROCESSOR
+   /variable/CMAKE_HOST_SYSTEM_VERSION
+   /variable/CMAKE_HOST_UNIX
+   /variable/CMAKE_HOST_WIN32
+   /variable/CMAKE_LIBRARY_ARCHITECTURE
+   /variable/CMAKE_LIBRARY_ARCHITECTURE_REGEX
+   /variable/CMAKE_OBJECT_PATH_MAX
+   /variable/CMAKE_SYSTEM
+   /variable/CMAKE_SYSTEM_NAME
+   /variable/CMAKE_SYSTEM_PROCESSOR
+   /variable/CMAKE_SYSTEM_VERSION
+   /variable/CYGWIN
+   /variable/GHS-MULTI
+   /variable/IOS
+   /variable/MINGW
+   /variable/MSVC
+   /variable/MSVC10
+   /variable/MSVC11
+   /variable/MSVC12
+   /variable/MSVC14
+   /variable/MSVC60
+   /variable/MSVC70
+   /variable/MSVC71
+   /variable/MSVC80
+   /variable/MSVC90
+   /variable/MSVC_IDE
+   /variable/MSVC_TOOLSET_VERSION
+   /variable/MSVC_VERSION
+   /variable/MSYS
+   /variable/UNIX
+   /variable/WIN32
+   /variable/WINCE
+   /variable/WINDOWS_PHONE
+   /variable/WINDOWS_STORE
+   /variable/XCODE
+   /variable/XCODE_VERSION
+
+Variables that Control the Build
+================================
+
+.. toctree::
+   :maxdepth: 1
+
+   /variable/CMAKE_AIX_EXPORT_ALL_SYMBOLS
+   /variable/CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS
+   /variable/CMAKE_ANDROID_API
+   /variable/CMAKE_ANDROID_API_MIN
+   /variable/CMAKE_ANDROID_ARCH
+   /variable/CMAKE_ANDROID_ARCH_ABI
+   /variable/CMAKE_ANDROID_ARM_MODE
+   /variable/CMAKE_ANDROID_ARM_NEON
+   /variable/CMAKE_ANDROID_ASSETS_DIRECTORIES
+   /variable/CMAKE_ANDROID_EXCEPTIONS
+   /variable/CMAKE_ANDROID_GUI
+   /variable/CMAKE_ANDROID_JAR_DEPENDENCIES
+   /variable/CMAKE_ANDROID_JAR_DIRECTORIES
+   /variable/CMAKE_ANDROID_JAVA_SOURCE_DIR
+   /variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES
+   /variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES
+   /variable/CMAKE_ANDROID_NDK
+   /variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS
+   /variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG
+   /variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
+   /variable/CMAKE_ANDROID_PROCESS_MAX
+   /variable/CMAKE_ANDROID_PROGUARD
+   /variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH
+   /variable/CMAKE_ANDROID_RTTI
+   /variable/CMAKE_ANDROID_SECURE_PROPS_PATH
+   /variable/CMAKE_ANDROID_SKIP_ANT_STEP
+   /variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN
+   /variable/CMAKE_ANDROID_STL_TYPE
+   /variable/CMAKE_APPLE_SILICON_PROCESSOR
+   /variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY
+   /variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG
+   /variable/CMAKE_AUTOGEN_ORIGIN_DEPENDS
+   /variable/CMAKE_AUTOGEN_PARALLEL
+   /variable/CMAKE_AUTOGEN_VERBOSE
+   /variable/CMAKE_AUTOMOC
+   /variable/CMAKE_AUTOMOC_COMPILER_PREDEFINES
+   /variable/CMAKE_AUTOMOC_DEPEND_FILTERS
+   /variable/CMAKE_AUTOMOC_MACRO_NAMES
+   /variable/CMAKE_AUTOMOC_MOC_OPTIONS
+   /variable/CMAKE_AUTOMOC_PATH_PREFIX
+   /variable/CMAKE_AUTORCC
+   /variable/CMAKE_AUTORCC_OPTIONS
+   /variable/CMAKE_AUTOUIC
+   /variable/CMAKE_AUTOUIC_OPTIONS
+   /variable/CMAKE_AUTOUIC_SEARCH_PATHS
+   /variable/CMAKE_BUILD_RPATH
+   /variable/CMAKE_BUILD_RPATH_USE_ORIGIN
+   /variable/CMAKE_BUILD_WITH_INSTALL_NAME_DIR
+   /variable/CMAKE_BUILD_WITH_INSTALL_RPATH
+   /variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY
+   /variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG
+   /variable/CMAKE_CONFIG_POSTFIX
+   /variable/CMAKE_CROSS_CONFIGS
+   /variable/CMAKE_CTEST_ARGUMENTS
+   /variable/CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS
+   /variable/CMAKE_CUDA_RUNTIME_LIBRARY
+   /variable/CMAKE_CUDA_SEPARABLE_COMPILATION
+   /variable/CMAKE_DEBUG_POSTFIX
+   /variable/CMAKE_DEFAULT_BUILD_TYPE
+   /variable/CMAKE_DEFAULT_CONFIGS
+   /variable/CMAKE_DISABLE_PRECOMPILE_HEADERS
+   /variable/CMAKE_DEPENDS_USE_COMPILER
+   /variable/CMAKE_ENABLE_EXPORTS
+   /variable/CMAKE_EXE_LINKER_FLAGS
+   /variable/CMAKE_EXE_LINKER_FLAGS_CONFIG
+   /variable/CMAKE_EXE_LINKER_FLAGS_CONFIG_INIT
+   /variable/CMAKE_EXE_LINKER_FLAGS_INIT
+   /variable/CMAKE_FOLDER
+   /variable/CMAKE_FRAMEWORK
+   /variable/CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG
+   /variable/CMAKE_Fortran_FORMAT
+   /variable/CMAKE_Fortran_MODULE_DIRECTORY
+   /variable/CMAKE_Fortran_PREPROCESS
+   /variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE
+   /variable/CMAKE_GLOBAL_AUTOGEN_TARGET
+   /variable/CMAKE_GLOBAL_AUTOGEN_TARGET_NAME
+   /variable/CMAKE_GLOBAL_AUTORCC_TARGET
+   /variable/CMAKE_GLOBAL_AUTORCC_TARGET_NAME
+   /variable/CMAKE_GNUtoMS
+   /variable/CMAKE_INCLUDE_CURRENT_DIR
+   /variable/CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE
+   /variable/CMAKE_INSTALL_NAME_DIR
+   /variable/CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH
+   /variable/CMAKE_INSTALL_RPATH
+   /variable/CMAKE_INSTALL_RPATH_USE_LINK_PATH
+   /variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION
+   /variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION_CONFIG
+   /variable/CMAKE_IOS_INSTALL_COMBINED
+   /variable/CMAKE_LANG_CLANG_TIDY
+   /variable/CMAKE_LANG_COMPILER_LAUNCHER
+   /variable/CMAKE_LANG_CPPCHECK
+   /variable/CMAKE_LANG_CPPLINT
+   /variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE
+   /variable/CMAKE_LANG_LINKER_LAUNCHER
+   /variable/CMAKE_LANG_LINK_LIBRARY_FILE_FLAG
+   /variable/CMAKE_LANG_LINK_LIBRARY_FLAG
+   /variable/CMAKE_LANG_LINK_WHAT_YOU_USE_FLAG
+   /variable/CMAKE_LANG_VISIBILITY_PRESET
+   /variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY
+   /variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG
+   /variable/CMAKE_LIBRARY_PATH_FLAG
+   /variable/CMAKE_LINK_DEF_FILE_FLAG
+   /variable/CMAKE_LINK_DEPENDS_NO_SHARED
+   /variable/CMAKE_LINK_INTERFACE_LIBRARIES
+   /variable/CMAKE_LINK_LIBRARY_FILE_FLAG
+   /variable/CMAKE_LINK_LIBRARY_FLAG
+   /variable/CMAKE_LINK_WHAT_YOU_USE
+   /variable/CMAKE_LINK_WHAT_YOU_USE_CHECK
+   /variable/CMAKE_MACOSX_BUNDLE
+   /variable/CMAKE_MACOSX_RPATH
+   /variable/CMAKE_MAP_IMPORTED_CONFIG_CONFIG
+   /variable/CMAKE_MODULE_LINKER_FLAGS
+   /variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG
+   /variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG_INIT
+   /variable/CMAKE_MODULE_LINKER_FLAGS_INIT
+   /variable/CMAKE_MSVCIDE_RUN_PATH
+   /variable/CMAKE_MSVC_RUNTIME_LIBRARY
+   /variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX
+   /variable/CMAKE_NO_BUILTIN_CHRPATH
+   /variable/CMAKE_NO_SYSTEM_FROM_IMPORTED
+   /variable/CMAKE_OPTIMIZE_DEPENDENCIES
+   /variable/CMAKE_OSX_ARCHITECTURES
+   /variable/CMAKE_OSX_DEPLOYMENT_TARGET
+   /variable/CMAKE_OSX_SYSROOT
+   /variable/CMAKE_PCH_WARN_INVALID
+   /variable/CMAKE_PCH_INSTANTIATE_TEMPLATES
+   /variable/CMAKE_PDB_OUTPUT_DIRECTORY
+   /variable/CMAKE_PDB_OUTPUT_DIRECTORY_CONFIG
+   /variable/CMAKE_POSITION_INDEPENDENT_CODE
+   /variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY
+   /variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG
+   /variable/CMAKE_SHARED_LINKER_FLAGS
+   /variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG
+   /variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG_INIT
+   /variable/CMAKE_SHARED_LINKER_FLAGS_INIT
+   /variable/CMAKE_SKIP_BUILD_RPATH
+   /variable/CMAKE_SKIP_INSTALL_RPATH
+   /variable/CMAKE_STATIC_LINKER_FLAGS
+   /variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG
+   /variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG_INIT
+   /variable/CMAKE_STATIC_LINKER_FLAGS_INIT
+   /variable/CMAKE_TRY_COMPILE_CONFIGURATION
+   /variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
+   /variable/CMAKE_TRY_COMPILE_TARGET_TYPE
+   /variable/CMAKE_UNITY_BUILD
+   /variable/CMAKE_UNITY_BUILD_BATCH_SIZE
+   /variable/CMAKE_UNITY_BUILD_UNIQUE_ID
+   /variable/CMAKE_USE_RELATIVE_PATHS
+   /variable/CMAKE_VISIBILITY_INLINES_HIDDEN
+   /variable/CMAKE_VS_GLOBALS
+   /variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD
+   /variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD
+   /variable/CMAKE_VS_JUST_MY_CODE_DEBUGGING
+   /variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES
+   /variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES
+   /variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES
+   /variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES
+   /variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES
+   /variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES
+   /variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES
+   /variable/CMAKE_VS_WINRT_BY_DEFAULT
+   /variable/CMAKE_WIN32_EXECUTABLE
+   /variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
+   /variable/CMAKE_XCODE_ATTRIBUTE_an-attribute
+   /variable/EXECUTABLE_OUTPUT_PATH
+   /variable/LIBRARY_OUTPUT_PATH
+
+Variables for Languages
+=======================
+
+.. toctree::
+   :maxdepth: 1
+
+   /variable/CMAKE_COMPILER_IS_GNUCC
+   /variable/CMAKE_COMPILER_IS_GNUCXX
+   /variable/CMAKE_COMPILER_IS_GNUG77
+   /variable/CMAKE_CUDA_ARCHITECTURES
+   /variable/CMAKE_CUDA_COMPILE_FEATURES
+   /variable/CMAKE_CUDA_EXTENSIONS
+   /variable/CMAKE_CUDA_HOST_COMPILER
+   /variable/CMAKE_CUDA_STANDARD
+   /variable/CMAKE_CUDA_STANDARD_REQUIRED
+   /variable/CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES
+   /variable/CMAKE_CXX_COMPILE_FEATURES
+   /variable/CMAKE_CXX_EXTENSIONS
+   /variable/CMAKE_CXX_STANDARD
+   /variable/CMAKE_CXX_STANDARD_REQUIRED
+   /variable/CMAKE_C_COMPILE_FEATURES
+   /variable/CMAKE_C_EXTENSIONS
+   /variable/CMAKE_C_STANDARD
+   /variable/CMAKE_C_STANDARD_REQUIRED
+   /variable/CMAKE_Fortran_MODDIR_DEFAULT
+   /variable/CMAKE_Fortran_MODDIR_FLAG
+   /variable/CMAKE_Fortran_MODOUT_FLAG
+   /variable/CMAKE_HIP_ARCHITECTURES
+   /variable/CMAKE_HIP_EXTENSIONS
+   /variable/CMAKE_HIP_STANDARD
+   /variable/CMAKE_HIP_STANDARD_REQUIRED
+   /variable/CMAKE_ISPC_HEADER_DIRECTORY
+   /variable/CMAKE_ISPC_HEADER_SUFFIX
+   /variable/CMAKE_ISPC_INSTRUCTION_SETS
+   /variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE
+   /variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX
+   /variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX
+   /variable/CMAKE_LANG_ARCHIVE_APPEND
+   /variable/CMAKE_LANG_ARCHIVE_CREATE
+   /variable/CMAKE_LANG_ARCHIVE_FINISH
+   /variable/CMAKE_LANG_BYTE_ORDER
+   /variable/CMAKE_LANG_COMPILER
+   /variable/CMAKE_LANG_COMPILER_EXTERNAL_TOOLCHAIN
+   /variable/CMAKE_LANG_COMPILER_ID
+   /variable/CMAKE_LANG_COMPILER_LOADED
+   /variable/CMAKE_LANG_COMPILER_PREDEFINES_COMMAND
+   /variable/CMAKE_LANG_COMPILER_TARGET
+   /variable/CMAKE_LANG_COMPILER_VERSION
+   /variable/CMAKE_LANG_COMPILE_OBJECT
+   /variable/CMAKE_LANG_CREATE_SHARED_LIBRARY
+   /variable/CMAKE_LANG_CREATE_SHARED_MODULE
+   /variable/CMAKE_LANG_CREATE_STATIC_LIBRARY
+   /variable/CMAKE_LANG_EXTENSIONS
+   /variable/CMAKE_LANG_EXTENSIONS_DEFAULT
+   /variable/CMAKE_LANG_FLAGS
+   /variable/CMAKE_LANG_FLAGS_CONFIG
+   /variable/CMAKE_LANG_FLAGS_CONFIG_INIT
+   /variable/CMAKE_LANG_FLAGS_DEBUG
+   /variable/CMAKE_LANG_FLAGS_DEBUG_INIT
+   /variable/CMAKE_LANG_FLAGS_INIT
+   /variable/CMAKE_LANG_FLAGS_MINSIZEREL
+   /variable/CMAKE_LANG_FLAGS_MINSIZEREL_INIT
+   /variable/CMAKE_LANG_FLAGS_RELEASE
+   /variable/CMAKE_LANG_FLAGS_RELEASE_INIT
+   /variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO
+   /variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT
+   /variable/CMAKE_LANG_IGNORE_EXTENSIONS
+   /variable/CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES
+   /variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES
+   /variable/CMAKE_LANG_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
+   /variable/CMAKE_LANG_IMPLICIT_LINK_LIBRARIES
+   /variable/CMAKE_LANG_LIBRARY_ARCHITECTURE
+   /variable/CMAKE_LANG_LINK_EXECUTABLE
+   /variable/CMAKE_LANG_LINKER_PREFERENCE
+   /variable/CMAKE_LANG_LINKER_PREFERENCE_PROPAGATES
+   /variable/CMAKE_LANG_LINKER_WRAPPER_FLAG
+   /variable/CMAKE_LANG_LINKER_WRAPPER_FLAG_SEP
+   /variable/CMAKE_LANG_OUTPUT_EXTENSION
+   /variable/CMAKE_LANG_SIMULATE_ID
+   /variable/CMAKE_LANG_SIMULATE_VERSION
+   /variable/CMAKE_LANG_SIZEOF_DATA_PTR
+   /variable/CMAKE_LANG_SOURCE_FILE_EXTENSIONS
+   /variable/CMAKE_LANG_STANDARD
+   /variable/CMAKE_LANG_STANDARD_DEFAULT
+   /variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES
+   /variable/CMAKE_LANG_STANDARD_LIBRARIES
+   /variable/CMAKE_LANG_STANDARD_REQUIRED
+   /variable/CMAKE_OBJC_EXTENSIONS
+   /variable/CMAKE_OBJC_STANDARD
+   /variable/CMAKE_OBJC_STANDARD_REQUIRED
+   /variable/CMAKE_OBJCXX_EXTENSIONS
+   /variable/CMAKE_OBJCXX_STANDARD
+   /variable/CMAKE_OBJCXX_STANDARD_REQUIRED
+   /variable/CMAKE_Swift_LANGUAGE_VERSION
+   /variable/CMAKE_USER_MAKE_RULES_OVERRIDE_LANG
+
+Variables for CTest
+===================
+
+.. toctree::
+   :maxdepth: 1
+
+   /variable/CTEST_BINARY_DIRECTORY
+   /variable/CTEST_BUILD_COMMAND
+   /variable/CTEST_BUILD_NAME
+   /variable/CTEST_BZR_COMMAND
+   /variable/CTEST_BZR_UPDATE_OPTIONS
+   /variable/CTEST_CHANGE_ID
+   /variable/CTEST_CHECKOUT_COMMAND
+   /variable/CTEST_CONFIGURATION_TYPE
+   /variable/CTEST_CONFIGURE_COMMAND
+   /variable/CTEST_COVERAGE_COMMAND
+   /variable/CTEST_COVERAGE_EXTRA_FLAGS
+   /variable/CTEST_CURL_OPTIONS
+   /variable/CTEST_CUSTOM_COVERAGE_EXCLUDE
+   /variable/CTEST_CUSTOM_ERROR_EXCEPTION
+   /variable/CTEST_CUSTOM_ERROR_MATCH
+   /variable/CTEST_CUSTOM_ERROR_POST_CONTEXT
+   /variable/CTEST_CUSTOM_ERROR_PRE_CONTEXT
+   /variable/CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE
+   /variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS
+   /variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS
+   /variable/CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE
+   /variable/CTEST_CUSTOM_MEMCHECK_IGNORE
+   /variable/CTEST_CUSTOM_POST_MEMCHECK
+   /variable/CTEST_CUSTOM_POST_TEST
+   /variable/CTEST_CUSTOM_PRE_MEMCHECK
+   /variable/CTEST_CUSTOM_PRE_TEST
+   /variable/CTEST_CUSTOM_TESTS_IGNORE
+   /variable/CTEST_CUSTOM_WARNING_EXCEPTION
+   /variable/CTEST_CUSTOM_WARNING_MATCH
+   /variable/CTEST_CVS_CHECKOUT
+   /variable/CTEST_CVS_COMMAND
+   /variable/CTEST_CVS_UPDATE_OPTIONS
+   /variable/CTEST_DROP_LOCATION
+   /variable/CTEST_DROP_METHOD
+   /variable/CTEST_DROP_SITE
+   /variable/CTEST_DROP_SITE_CDASH
+   /variable/CTEST_DROP_SITE_PASSWORD
+   /variable/CTEST_DROP_SITE_USER
+   /variable/CTEST_EXTRA_COVERAGE_GLOB
+   /variable/CTEST_GIT_COMMAND
+   /variable/CTEST_GIT_INIT_SUBMODULES
+   /variable/CTEST_GIT_UPDATE_CUSTOM
+   /variable/CTEST_GIT_UPDATE_OPTIONS
+   /variable/CTEST_HG_COMMAND
+   /variable/CTEST_HG_UPDATE_OPTIONS
+   /variable/CTEST_LABELS_FOR_SUBPROJECTS
+   /variable/CTEST_MEMORYCHECK_COMMAND
+   /variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS
+   /variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS
+   /variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE
+   /variable/CTEST_MEMORYCHECK_TYPE
+   /variable/CTEST_NIGHTLY_START_TIME
+   /variable/CTEST_P4_CLIENT
+   /variable/CTEST_P4_COMMAND
+   /variable/CTEST_P4_OPTIONS
+   /variable/CTEST_P4_UPDATE_OPTIONS
+   /variable/CTEST_RESOURCE_SPEC_FILE
+   /variable/CTEST_RUN_CURRENT_SCRIPT
+   /variable/CTEST_SCP_COMMAND
+   /variable/CTEST_SCRIPT_DIRECTORY
+   /variable/CTEST_SITE
+   /variable/CTEST_SUBMIT_URL
+   /variable/CTEST_SOURCE_DIRECTORY
+   /variable/CTEST_SVN_COMMAND
+   /variable/CTEST_SVN_OPTIONS
+   /variable/CTEST_SVN_UPDATE_OPTIONS
+   /variable/CTEST_TEST_LOAD
+   /variable/CTEST_TEST_TIMEOUT
+   /variable/CTEST_TRIGGER_SITE
+   /variable/CTEST_UPDATE_COMMAND
+   /variable/CTEST_UPDATE_OPTIONS
+   /variable/CTEST_UPDATE_VERSION_ONLY
+   /variable/CTEST_UPDATE_VERSION_OVERRIDE
+   /variable/CTEST_USE_LAUNCHERS
+
+Variables for CPack
+===================
+
+.. toctree::
+   :maxdepth: 1
+
+   /variable/CPACK_ABSOLUTE_DESTINATION_FILES
+   /variable/CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY
+   /variable/CPACK_CUSTOM_INSTALL_VARIABLES
+   /variable/CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
+   /variable/CPACK_INCLUDE_TOPLEVEL_DIRECTORY
+   /variable/CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
+   /variable/CPACK_PACKAGING_INSTALL_PREFIX
+   /variable/CPACK_SET_DESTDIR
+   /variable/CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
+
+Variable Expansion Operators
+============================
+
+.. toctree::
+   :maxdepth: 1
+
+   /variable/CACHE
+   /variable/ENV
+
+Internal Variables
+==================
+
+CMake has many internal variables.  Most of them are undocumented.
+Some of them, however, were at some point described as normal
+variables, and therefore may be encountered in legacy code. They
+are subject to change, and not recommended for use in project code.
+
+.. toctree::
+   :maxdepth: 1
+
+   /variable/CMAKE_HOME_DIRECTORY
+   /variable/CMAKE_INTERNAL_PLATFORM_ABI
+   /variable/CMAKE_LANG_COMPILER_ABI
+   /variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID
+   /variable/CMAKE_LANG_COMPILER_VERSION_INTERNAL
+   /variable/CMAKE_LANG_PLATFORM_ID
+   /variable/CMAKE_NOT_USING_CONFIG_FLAGS
+   /variable/CMAKE_VS_INTEL_Fortran_PROJECT_VERSION
diff --git a/share/cmake-3.22/Help/manual/cmake.1.rst b/share/cmake-3.22/Help/manual/cmake.1.rst
new file mode 100644
index 0000000..e23ddd8
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/cmake.1.rst
@@ -0,0 +1,865 @@
+.. cmake-manual-description: CMake Command-Line Reference
+
+cmake(1)
+********
+
+Synopsis
+========
+
+.. parsed-literal::
+
+ `Generate a Project Buildsystem`_
+  cmake [<options>] <path-to-source>
+  cmake [<options>] <path-to-existing-build>
+  cmake [<options>] -S <path-to-source> -B <path-to-build>
+
+ `Build a Project`_
+  cmake --build <dir> [<options>] [-- <build-tool-options>]
+
+ `Install a Project`_
+  cmake --install <dir> [<options>]
+
+ `Open a Project`_
+  cmake --open <dir>
+
+ `Run a Script`_
+  cmake [{-D <var>=<value>}...] -P <cmake-script-file>
+
+ `Run a Command-Line Tool`_
+  cmake -E <command> [<options>]
+
+ `Run the Find-Package Tool`_
+  cmake --find-package [<options>]
+
+ `View Help`_
+  cmake --help[-<topic>]
+
+Description
+===========
+
+The **cmake** executable is the command-line interface of the cross-platform
+buildsystem generator CMake.  The above `Synopsis`_ lists various actions
+the tool can perform as described in sections below.
+
+To build a software project with CMake, `Generate a Project Buildsystem`_.
+Optionally use **cmake** to `Build a Project`_, `Install a Project`_ or just
+run the corresponding build tool (e.g. ``make``) directly.  **cmake** can also
+be used to `View Help`_.
+
+The other actions are meant for use by software developers writing
+scripts in the :manual:`CMake language <cmake-language(7)>` to support
+their builds.
+
+For graphical user interfaces that may be used in place of **cmake**,
+see :manual:`ccmake <ccmake(1)>` and :manual:`cmake-gui <cmake-gui(1)>`.
+For command-line interfaces to the CMake testing and packaging facilities,
+see :manual:`ctest <ctest(1)>` and :manual:`cpack <cpack(1)>`.
+
+For more information on CMake at large, `see also`_ the links at the end
+of this manual.
+
+
+Introduction to CMake Buildsystems
+==================================
+
+A *buildsystem* describes how to build a project's executables and libraries
+from its source code using a *build tool* to automate the process.  For
+example, a buildsystem may be a ``Makefile`` for use with a command-line
+``make`` tool or a project file for an Integrated Development Environment
+(IDE).  In order to avoid maintaining multiple such buildsystems, a project
+may specify its buildsystem abstractly using files written in the
+:manual:`CMake language <cmake-language(7)>`.  From these files CMake
+generates a preferred buildsystem locally for each user through a backend
+called a *generator*.
+
+To generate a buildsystem with CMake, the following must be selected:
+
+Source Tree
+  The top-level directory containing source files provided by the project.
+  The project specifies its buildsystem using files as described in the
+  :manual:`cmake-language(7)` manual, starting with a top-level file named
+  ``CMakeLists.txt``.  These files specify build targets and their
+  dependencies as described in the :manual:`cmake-buildsystem(7)` manual.
+
+Build Tree
+  The top-level directory in which buildsystem files and build output
+  artifacts (e.g. executables and libraries) are to be stored.
+  CMake will write a ``CMakeCache.txt`` file to identify the directory
+  as a build tree and store persistent information such as buildsystem
+  configuration options.
+
+  To maintain a pristine source tree, perform an *out-of-source* build
+  by using a separate dedicated build tree.  An *in-source* build in
+  which the build tree is placed in the same directory as the source
+  tree is also supported, but discouraged.
+
+Generator
+  This chooses the kind of buildsystem to generate.  See the
+  :manual:`cmake-generators(7)` manual for documentation of all generators.
+  Run ``cmake --help`` to see a list of generators available locally.
+  Optionally use the ``-G`` option below to specify a generator, or simply
+  accept the default CMake chooses for the current platform.
+
+  When using one of the :ref:`Command-Line Build Tool Generators`
+  CMake expects that the environment needed by the compiler toolchain
+  is already configured in the shell.  When using one of the
+  :ref:`IDE Build Tool Generators`, no particular environment is needed.
+
+.. _`Generate a Project Buildsystem`:
+
+Generate a Project Buildsystem
+==============================
+
+Run CMake with one of the following command signatures to specify the
+source and build trees and generate a buildsystem:
+
+``cmake [<options>] <path-to-source>``
+  Uses the current working directory as the build tree, and
+  ``<path-to-source>`` as the source tree.  The specified path may
+  be absolute or relative to the current working directory.
+  The source tree must contain a ``CMakeLists.txt`` file and must
+  *not* contain a ``CMakeCache.txt`` file because the latter
+  identifies an existing build tree.  For example:
+
+  .. code-block:: console
+
+    $ mkdir build ; cd build
+    $ cmake ../src
+
+``cmake [<options>] <path-to-existing-build>``
+  Uses ``<path-to-existing-build>`` as the build tree, and loads the
+  path to the source tree from its ``CMakeCache.txt`` file, which must
+  have already been generated by a previous run of CMake.  The specified
+  path may be absolute or relative to the current working directory.
+  For example:
+
+  .. code-block:: console
+
+    $ cd build
+    $ cmake .
+
+``cmake [<options>] -S <path-to-source> -B <path-to-build>``
+  Uses ``<path-to-build>`` as the build tree and ``<path-to-source>``
+  as the source tree.  The specified paths may be absolute or relative
+  to the current working directory.  The source tree must contain a
+  ``CMakeLists.txt`` file.  The build tree will be created automatically
+  if it does not already exist.  For example:
+
+  .. code-block:: console
+
+    $ cmake -S src -B build
+
+In all cases the ``<options>`` may be zero or more of the `Options`_ below.
+
+After generating a buildsystem one may use the corresponding native
+build tool to build the project.  For example, after using the
+:generator:`Unix Makefiles` generator one may run ``make`` directly:
+
+  .. code-block:: console
+
+    $ make
+    $ make install
+
+Alternatively, one may use **cmake** to `Build a Project`_ by
+automatically choosing and invoking the appropriate native build tool.
+
+.. _`CMake Options`:
+
+Options
+-------
+
+.. include:: OPTIONS_BUILD.txt
+
+``-L[A][H]``
+ List non-advanced cached variables.
+
+ List ``CACHE`` variables will run CMake and list all the variables from
+ the CMake ``CACHE`` that are not marked as ``INTERNAL`` or :prop_cache:`ADVANCED`.
+ This will effectively display current CMake settings, which can then be
+ changed with ``-D`` option.  Changing some of the variables may result
+ in more variables being created.  If ``A`` is specified, then it will
+ display also advanced variables.  If ``H`` is specified, it will also
+ display help for each variable.
+
+``-N``
+ View mode only.
+
+ Only load the cache.  Do not actually run configure and generate
+ steps.
+
+``--graphviz=[file]``
+ Generate graphviz of dependencies, see :module:`CMakeGraphVizOptions` for more.
+
+ Generate a graphviz input file that will contain all the library and
+ executable dependencies in the project.  See the documentation for
+ :module:`CMakeGraphVizOptions` for more details.
+
+``--system-information [file]``
+ Dump information about this system.
+
+ Dump a wide range of information about the current system.  If run
+ from the top of a binary tree for a CMake project it will dump
+ additional information such as the cache, log files etc.
+
+``--log-level=<ERROR|WARNING|NOTICE|STATUS|VERBOSE|DEBUG|TRACE>``
+ Set the log level.
+
+ The :command:`message` command will only output messages of the specified
+ log level or higher.  The default log level is ``STATUS``.
+
+ To make a log level persist between CMake runs, set
+ :variable:`CMAKE_MESSAGE_LOG_LEVEL` as a cache variable instead.
+ If both the command line option and the variable are given, the command line
+ option takes precedence.
+
+ For backward compatibility reasons, ``--loglevel`` is also accepted as a
+ synonym for this option.
+
+``--log-context``
+ Enable the :command:`message` command outputting context attached to each
+ message.
+
+ This option turns on showing context for the current CMake run only.
+ To make showing the context persistent for all subsequent CMake runs, set
+ :variable:`CMAKE_MESSAGE_CONTEXT_SHOW` as a cache variable instead.
+ When this command line option is given, :variable:`CMAKE_MESSAGE_CONTEXT_SHOW`
+ is ignored.
+
+``--debug-trycompile``
+ Do not delete the :command:`try_compile` build tree.
+ Only useful on one :command:`try_compile` at a time.
+
+ Do not delete the files and directories created for :command:`try_compile`
+ calls.  This is useful in debugging failed try_compiles.  It may
+ however change the results of the try-compiles as old junk from a
+ previous try-compile may cause a different test to either pass or
+ fail incorrectly.  This option is best used for one try-compile at a
+ time, and only when debugging.
+
+``--debug-output``
+ Put cmake in a debug mode.
+
+ Print extra information during the cmake run like stack traces with
+ :command:`message(SEND_ERROR)` calls.
+
+``--debug-find``
+ Put cmake find commands in a debug mode.
+
+ Print extra find call information during the cmake run to standard
+ error. Output is designed for human consumption and not for parsing.
+ See also the :variable:`CMAKE_FIND_DEBUG_MODE` variable for debugging
+ a more local part of the project.
+
+``--trace``
+ Put cmake in trace mode.
+
+ Print a trace of all calls made and from where.
+
+``--trace-expand``
+ Put cmake in trace mode.
+
+ Like ``--trace``, but with variables expanded.
+
+``--trace-format=<format>``
+ Put cmake in trace mode and sets the trace output format.
+
+ ``<format>`` can be one of the following values.
+
+   ``human``
+     Prints each trace line in a human-readable format. This is the
+     default format.
+
+   ``json-v1``
+     Prints each line as a separate JSON document. Each document is
+     separated by a newline ( ``\n`` ). It is guaranteed that no
+     newline characters will be present inside a JSON document.
+
+     JSON trace format:
+
+     .. code-block:: json
+
+       {
+         "file": "/full/path/to/the/CMake/file.txt",
+         "line": 0,
+         "cmd": "add_executable",
+         "args": ["foo", "bar"],
+         "time": 1579512535.9687231,
+         "frame": 2
+       }
+
+     The members are:
+
+     ``file``
+       The full path to the CMake source file where the function
+       was called.
+
+     ``line``
+       The line in ``file`` of the function call.
+
+     ``defer``
+       Optional member that is present when the function call was deferred
+       by :command:`cmake_language(DEFER)`.  If present, its value is a
+       string containing the deferred call ``<id>``.
+
+     ``cmd``
+       The name of the function that was called.
+
+     ``args``
+       A string list of all function parameters.
+
+     ``time``
+       Timestamp (seconds since epoch) of the function call.
+
+     ``frame``
+       Stack frame depth of the function that was called.
+
+     Additionally, the first JSON document outputted contains the
+     ``version`` key for the current major and minor version of the
+
+     JSON trace format:
+
+     .. code-block:: json
+
+       {
+         "version": {
+           "major": 1,
+           "minor": 1
+         }
+       }
+
+     The members are:
+
+     ``version``
+       Indicates the version of the JSON format. The version has a
+       major and minor components following semantic version conventions.
+
+``--trace-source=<file>``
+ Put cmake in trace mode, but output only lines of a specified file.
+
+ Multiple options are allowed.
+
+``--trace-redirect=<file>``
+ Put cmake in trace mode and redirect trace output to a file instead of stderr.
+
+``--warn-uninitialized``
+ Warn about uninitialized values.
+
+ Print a warning when an uninitialized variable is used.
+
+``--warn-unused-vars``
+ Does nothing.  In CMake versions 3.2 and below this enabled warnings about
+ unused variables.  In CMake versions 3.3 through 3.18 the option was broken.
+ In CMake 3.19 and above the option has been removed.
+
+``--no-warn-unused-cli``
+ Don't warn about command line options.
+
+ Don't find variables that are declared on the command line, but not
+ used.
+
+``--check-system-vars``
+ Find problems with variable usage in system files.
+
+ Normally, unused and uninitialized variables are searched for only
+ in :variable:`CMAKE_SOURCE_DIR` and :variable:`CMAKE_BINARY_DIR`.
+ This flag tells CMake to warn about other files as well.
+
+``--profiling-output=<path>``
+ Used in conjunction with ``--profiling-format`` to output to a given path.
+
+``--profiling-format=<file>``
+ Enable the output of profiling data of CMake script in the given format.
+
+ This can aid performance analysis of CMake scripts executed. Third party
+ applications should be used to process the output into human readable format.
+
+ Currently supported values are:
+ ``google-trace`` Outputs in Google Trace Format, which can be parsed by the
+ about:tracing tab of Google Chrome or using a plugin for a tool like Trace
+ Compass.
+
+``--preset <preset>``, ``--preset=<preset>``
+ Reads a :manual:`preset <cmake-presets(7)>` from
+ ``<path-to-source>/CMakePresets.json`` and
+ ``<path-to-source>/CMakeUserPresets.json``. The preset may specify the
+ generator and the build directory, and a list of variables and other
+ arguments to pass to CMake. The current working directory must contain
+ CMake preset files. The :manual:`CMake GUI <cmake-gui(1)>` can
+ also recognize ``CMakePresets.json`` and ``CMakeUserPresets.json`` files. For
+ full details on these files, see :manual:`cmake-presets(7)`.
+
+ The presets are read before all other command line options. The options
+ specified by the preset (variables, generator, etc.) can all be overridden by
+ manually specifying them on the command line. For example, if the preset sets
+ a variable called ``MYVAR`` to ``1``, but the user sets it to ``2`` with a
+ ``-D`` argument, the value ``2`` is preferred.
+
+``--list-presets, --list-presets=<[configure | build | test | all]>``
+ Lists the available presets. If no option is specified only configure presets
+ will be listed. The current working directory must contain CMake preset files.
+
+.. _`Build Tool Mode`:
+
+Build a Project
+===============
+
+CMake provides a command-line signature to build an already-generated
+project binary tree:
+
+.. code-block:: shell
+
+  cmake --build <dir>             [<options>] [-- <build-tool-options>]
+  cmake --build --preset <preset> [<options>] [-- <build-tool-options>]
+
+This abstracts a native build tool's command-line interface with the
+following options:
+
+``--build <dir>``
+  Project binary directory to be built.  This is required (unless a preset
+  is specified) and must be first.
+
+``--preset <preset>``, ``--preset=<preset>``
+  Use a build preset to specify build options. The project binary directory
+  is inferred from the ``configurePreset`` key. The current working directory
+  must contain CMake preset files.
+  See :manual:`preset <cmake-presets(7)>` for more details.
+
+``--list-presets``
+  Lists the available build presets. The current working directory must
+  contain CMake preset files.
+
+``--parallel [<jobs>], -j [<jobs>]``
+  The maximum number of concurrent processes to use when building.
+  If ``<jobs>`` is omitted the native build tool's default number is used.
+
+  The :envvar:`CMAKE_BUILD_PARALLEL_LEVEL` environment variable, if set,
+  specifies a default parallel level when this option is not given.
+
+  Some native build tools always build in parallel.  The use of ``<jobs>``
+  value of ``1`` can be used to limit to a single job.
+
+``--target <tgt>..., -t <tgt>...``
+  Build ``<tgt>`` instead of the default target.  Multiple targets may be
+  given, separated by spaces.
+
+``--config <cfg>``
+  For multi-configuration tools, choose configuration ``<cfg>``.
+
+``--clean-first``
+  Build target ``clean`` first, then build.
+  (To clean only, use ``--target clean``.)
+
+``--use-stderr``
+  Ignored.  Behavior is default in CMake >= 3.0.
+
+``--verbose, -v``
+  Enable verbose output - if supported - including the build commands to be
+  executed.
+
+  This option can be omitted if :envvar:`VERBOSE` environment variable or
+  :variable:`CMAKE_VERBOSE_MAKEFILE` cached variable is set.
+
+
+``--``
+  Pass remaining options to the native tool.
+
+Run ``cmake --build`` with no options for quick help.
+
+Install a Project
+=================
+
+CMake provides a command-line signature to install an already-generated
+project binary tree:
+
+.. code-block:: shell
+
+  cmake --install <dir> [<options>]
+
+This may be used after building a project to run installation without
+using the generated build system or the native build tool.
+The options are:
+
+``--install <dir>``
+  Project binary directory to install. This is required and must be first.
+
+``--config <cfg>``
+  For multi-configuration generators, choose configuration ``<cfg>``.
+
+``--component <comp>``
+  Component-based install. Only install component ``<comp>``.
+
+``--default-directory-permissions <permissions>``
+  Default directory install permissions. Permissions in format ``<u=rwx,g=rx,o=rx>``.
+
+``--prefix <prefix>``
+  Override the installation prefix, :variable:`CMAKE_INSTALL_PREFIX`.
+
+``--strip``
+  Strip before installing.
+
+``-v, --verbose``
+  Enable verbose output.
+
+  This option can be omitted if :envvar:`VERBOSE` environment variable is set.
+
+Run ``cmake --install`` with no options for quick help.
+
+Open a Project
+==============
+
+.. code-block:: shell
+
+  cmake --open <dir>
+
+Open the generated project in the associated application.  This is only
+supported by some generators.
+
+
+.. _`Script Processing Mode`:
+
+Run a Script
+============
+
+.. code-block:: shell
+
+  cmake [{-D <var>=<value>}...] -P <cmake-script-file> [-- <unparsed-options>...]
+
+Process the given cmake file as a script written in the CMake
+language.  No configure or generate step is performed and the cache
+is not modified.  If variables are defined using ``-D``, this must be
+done before the ``-P`` argument.
+
+Any options after ``--`` are not parsed by CMake, but they are still included
+in the set of :variable:`CMAKE_ARGV<n> <CMAKE_ARGV0>` variables passed to the
+script (including the ``--`` itself).
+
+
+Run a Command-Line Tool
+=======================
+
+CMake provides builtin command-line tools through the signature
+
+.. code-block:: shell
+
+  cmake -E <command> [<options>]
+
+Run ``cmake -E`` or ``cmake -E help`` for a summary of commands.
+Available commands are:
+
+``capabilities``
+  Report cmake capabilities in JSON format. The output is a JSON object
+  with the following keys:
+
+  ``version``
+    A JSON object with version information. Keys are:
+
+    ``string``
+      The full version string as displayed by cmake ``--version``.
+    ``major``
+      The major version number in integer form.
+    ``minor``
+      The minor version number in integer form.
+    ``patch``
+      The patch level in integer form.
+    ``suffix``
+      The cmake version suffix string.
+    ``isDirty``
+      A bool that is set if the cmake build is from a dirty tree.
+
+  ``generators``
+    A list available generators. Each generator is a JSON object with the
+    following keys:
+
+    ``name``
+      A string containing the name of the generator.
+    ``toolsetSupport``
+      ``true`` if the generator supports toolsets and ``false`` otherwise.
+    ``platformSupport``
+      ``true`` if the generator supports platforms and ``false`` otherwise.
+    ``supportedPlatforms``
+      .. versionadded:: 3.21
+
+      Optional member that may be present when the generator supports
+      platform specification via :variable:`CMAKE_GENERATOR_PLATFORM`
+      (``-A ...``).  The value is a list of platforms known to be supported.
+    ``extraGenerators``
+      A list of strings with all the extra generators compatible with
+      the generator.
+
+  ``fileApi``
+    Optional member that is present when the :manual:`cmake-file-api(7)`
+    is available.  The value is a JSON object with one member:
+
+    ``requests``
+      A JSON array containing zero or more supported file-api requests.
+      Each request is a JSON object with members:
+
+      ``kind``
+        Specifies one of the supported :ref:`file-api object kinds`.
+
+      ``version``
+        A JSON array whose elements are each a JSON object containing
+        ``major`` and ``minor`` members specifying non-negative integer
+        version components.
+
+  ``serverMode``
+    ``true`` if cmake supports server-mode and ``false`` otherwise.
+    Always false since CMake 3.20.
+
+``cat <files>...``
+  Concatenate files and print on the standard output.
+
+``chdir <dir> <cmd> [<arg>...]``
+  Change the current working directory and run a command.
+
+``compare_files [--ignore-eol] <file1> <file2>``
+  Check if ``<file1>`` is same as ``<file2>``. If files are the same,
+  then returns ``0``, if not it returns ``1``.  In case of invalid
+  arguments, it returns 2. The ``--ignore-eol`` option
+  implies line-wise comparison and ignores LF/CRLF differences.
+
+``copy <file>... <destination>``
+  Copy files to ``<destination>`` (either file or directory).
+  If multiple files are specified, the ``<destination>`` must be
+  directory and it must exist. Wildcards are not supported.
+  ``copy`` does follow symlinks. That means it does not copy symlinks,
+  but the files or directories it point to.
+
+``copy_directory <dir>... <destination>``
+  Copy content of ``<dir>...`` directories to ``<destination>`` directory.
+  If ``<destination>`` directory does not exist it will be created.
+  ``copy_directory`` does follow symlinks.
+
+``copy_if_different <file>... <destination>``
+  Copy files to ``<destination>`` (either file or directory) if
+  they have changed.
+  If multiple files are specified, the ``<destination>`` must be
+  directory and it must exist.
+  ``copy_if_different`` does follow symlinks.
+
+``create_symlink <old> <new>``
+  Create a symbolic link ``<new>`` naming ``<old>``.
+
+  .. note::
+    Path to where ``<new>`` symbolic link will be created has to exist beforehand.
+
+``create_hardlink <old> <new>``
+  Create a hard link ``<new>`` naming ``<old>``.
+
+  .. note::
+    Path to where ``<new>`` hard link will be created has to exist beforehand.
+    ``<old>`` has to exist beforehand.
+
+``echo [<string>...]``
+  Displays arguments as text.
+
+``echo_append [<string>...]``
+  Displays arguments as text but no new line.
+
+``env [--unset=NAME]... [NAME=VALUE]... COMMAND [ARG]...``
+  Run command in a modified environment.
+
+``environment``
+  Display the current environment variables.
+
+``false``
+  Do nothing, with an exit code of 1.
+
+``make_directory <dir>...``
+  Create ``<dir>`` directories.  If necessary, create parent
+  directories too.  If a directory already exists it will be
+  silently ignored.
+
+``md5sum <file>...``
+  Create MD5 checksum of files in ``md5sum`` compatible format::
+
+     351abe79cd3800b38cdfb25d45015a15  file1.txt
+     052f86c15bbde68af55c7f7b340ab639  file2.txt
+
+``sha1sum <file>...``
+  Create SHA1 checksum of files in ``sha1sum`` compatible format::
+
+     4bb7932a29e6f73c97bb9272f2bdc393122f86e0  file1.txt
+     1df4c8f318665f9a5f2ed38f55adadb7ef9f559c  file2.txt
+
+``sha224sum <file>...``
+  Create SHA224 checksum of files in ``sha224sum`` compatible format::
+
+     b9b9346bc8437bbda630b0b7ddfc5ea9ca157546dbbf4c613192f930  file1.txt
+     6dfbe55f4d2edc5fe5c9197bca51ceaaf824e48eba0cc453088aee24  file2.txt
+
+``sha256sum <file>...``
+  Create SHA256 checksum of files in ``sha256sum`` compatible format::
+
+     76713b23615d31680afeb0e9efe94d47d3d4229191198bb46d7485f9cb191acc  file1.txt
+     15b682ead6c12dedb1baf91231e1e89cfc7974b3787c1e2e01b986bffadae0ea  file2.txt
+
+``sha384sum <file>...``
+  Create SHA384 checksum of files in ``sha384sum`` compatible format::
+
+     acc049fedc091a22f5f2ce39a43b9057fd93c910e9afd76a6411a28a8f2b8a12c73d7129e292f94fc0329c309df49434  file1.txt
+     668ddeb108710d271ee21c0f3acbd6a7517e2b78f9181c6a2ff3b8943af92b0195dcb7cce48aa3e17893173c0a39e23d  file2.txt
+
+``sha512sum <file>...``
+  Create SHA512 checksum of files in ``sha512sum`` compatible format::
+
+     2a78d7a6c5328cfb1467c63beac8ff21794213901eaadafd48e7800289afbc08e5fb3e86aa31116c945ee3d7bf2a6194489ec6101051083d1108defc8e1dba89  file1.txt
+     7a0b54896fe5e70cca6dd643ad6f672614b189bf26f8153061c4d219474b05dad08c4e729af9f4b009f1a1a280cb625454bf587c690f4617c27e3aebdf3b7a2d  file2.txt
+
+``remove [-f] <file>...``
+  .. deprecated:: 3.17
+
+  Remove the file(s). The planned behavior was that if any of the
+  listed files already do not exist, the command returns a non-zero exit code,
+  but no message is logged. The ``-f`` option changes the behavior to return a
+  zero exit code (i.e. success) in such situations instead.
+  ``remove`` does not follow symlinks. That means it remove only symlinks
+  and not files it point to.
+
+  The implementation was buggy and always returned 0. It cannot be fixed without
+  breaking backwards compatibility. Use ``rm`` instead.
+
+``remove_directory <dir>...``
+  .. deprecated:: 3.17
+
+  Remove ``<dir>`` directories and their contents. If a directory does
+  not exist it will be silently ignored.  If ``<dir>`` is a symlink to
+  a directory, just the symlink will be removed.
+  Use ``rm`` instead.
+
+``rename <oldname> <newname>``
+  Rename a file or directory (on one volume). If file with the ``<newname>`` name
+  already exists, then it will be silently replaced.
+
+``rm [-rRf] <file> <dir>...``
+  Remove the files ``<file>`` or directories ``dir``.
+  Use ``-r`` or ``-R`` to remove directories and their contents recursively.
+  If any of the listed files/directories do not exist, the command returns a
+  non-zero exit code, but no message is logged. The ``-f`` option changes
+  the behavior to return a zero exit code (i.e. success) in such
+  situations instead.
+
+``server``
+  Launch :manual:`cmake-server(7)` mode.
+
+``sleep <number>...``
+  Sleep for given number of seconds.
+
+``tar [cxt][vf][zjJ] file.tar [<options>] [--] [<pathname>...]``
+  Create or extract a tar or zip archive.  Options are:
+
+  ``c``
+    Create a new archive containing the specified files.
+    If used, the ``<pathname>...`` argument is mandatory.
+  ``x``
+    Extract to disk from the archive.
+    The ``<pathname>...`` argument could be used to extract only selected files
+    or directories.
+    When extracting selected files or directories, you must provide their exact
+    names including the path, as printed by list (``-t``).
+  ``t``
+    List archive contents.
+    The ``<pathname>...`` argument could be used to list only selected files
+    or directories.
+  ``v``
+    Produce verbose output.
+  ``z``
+    Compress the resulting archive with gzip.
+  ``j``
+    Compress the resulting archive with bzip2.
+  ``J``
+    Compress the resulting archive with XZ.
+  ``--zstd``
+    Compress the resulting archive with Zstandard.
+  ``--files-from=<file>``
+    Read file names from the given file, one per line.
+    Blank lines are ignored.  Lines may not start in ``-``
+    except for ``--add-file=<name>`` to add files whose
+    names start in ``-``.
+  ``--format=<format>``
+    Specify the format of the archive to be created.
+    Supported formats are: ``7zip``, ``gnutar``, ``pax``,
+    ``paxr`` (restricted pax, default), and ``zip``.
+  ``--mtime=<date>``
+    Specify modification time recorded in tarball entries.
+  ``--``
+    Stop interpreting options and treat all remaining arguments
+    as file names, even if they start with ``-``.
+
+
+``time <command> [<args>...]``
+  Run command and display elapsed time.
+
+``touch <file>...``
+  Creates ``<file>`` if file do not exist.
+  If ``<file>`` exists, it is changing ``<file>`` access and modification times.
+
+``touch_nocreate <file>...``
+  Touch a file if it exists but do not create it.  If a file does
+  not exist it will be silently ignored.
+
+``true``
+  Do nothing, with an exit code of 0.
+
+Windows-specific Command-Line Tools
+-----------------------------------
+
+The following ``cmake -E`` commands are available only on Windows:
+
+``delete_regv <key>``
+  Delete Windows registry value.
+
+``env_vs8_wince <sdkname>``
+  Displays a batch file which sets the environment for the provided
+  Windows CE SDK installed in VS2005.
+
+``env_vs9_wince <sdkname>``
+  Displays a batch file which sets the environment for the provided
+  Windows CE SDK installed in VS2008.
+
+``write_regv <key> <value>``
+  Write Windows registry value.
+
+
+Run the Find-Package Tool
+=========================
+
+CMake provides a pkg-config like helper for Makefile-based projects:
+
+.. code-block:: shell
+
+  cmake --find-package [<options>]
+
+It searches a package using :command:`find_package()` and prints the
+resulting flags to stdout.  This can be used instead of pkg-config
+to find installed libraries in plain Makefile-based projects or in
+autoconf-based projects (via ``share/aclocal/cmake.m4``).
+
+.. note::
+  This mode is not well-supported due to some technical limitations.
+  It is kept for compatibility but should not be used in new projects.
+
+
+View Help
+=========
+
+To print selected pages from the CMake documentation, use
+
+.. code-block:: shell
+
+  cmake --help[-<topic>]
+
+with one of the following options:
+
+.. include:: OPTIONS_HELP.txt
+
+To view the presets available for a project, use
+
+.. code-block:: shell
+
+  cmake <source-dir> --list-presets
+
+See Also
+========
+
+.. include:: LINKS.txt
diff --git a/share/cmake-3.18/Help/manual/cpack-generators.7.rst b/share/cmake-3.22/Help/manual/cpack-generators.7.rst
similarity index 100%
rename from share/cmake-3.18/Help/manual/cpack-generators.7.rst
rename to share/cmake-3.22/Help/manual/cpack-generators.7.rst
diff --git a/share/cmake-3.18/Help/manual/cpack.1.rst b/share/cmake-3.22/Help/manual/cpack.1.rst
similarity index 100%
rename from share/cmake-3.18/Help/manual/cpack.1.rst
rename to share/cmake-3.22/Help/manual/cpack.1.rst
diff --git a/share/cmake-3.22/Help/manual/ctest.1.rst b/share/cmake-3.22/Help/manual/ctest.1.rst
new file mode 100644
index 0000000..d66c5a9
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/ctest.1.rst
@@ -0,0 +1,1685 @@
+.. cmake-manual-description: CTest Command-Line Reference
+
+ctest(1)
+********
+
+.. contents::
+
+Synopsis
+========
+
+.. parsed-literal::
+
+ ctest [<options>]
+ ctest --build-and-test <path-to-source> <path-to-build>
+       --build-generator <generator> [<options>...]
+       [--build-options <opts>...] [--test-command <command> [<args>...]]
+ ctest {-D <dashboard> | -M <model> -T <action> | -S <script> | -SP <script>}
+       [-- <dashboard-options>...]
+
+Description
+===========
+
+The **ctest** executable is the CMake test driver program.
+CMake-generated build trees created for projects that use the
+:command:`enable_testing` and :command:`add_test` commands have testing support.
+This program will run the tests and report results.
+
+.. _`CTest Options`:
+
+Options
+=======
+
+``--preset <preset>``, ``--preset=<preset>``
+ Use a test preset to specify test options. The project binary directory
+ is inferred from the ``configurePreset`` key. The current working directory
+ must contain CMake preset files.
+ See :manual:`preset <cmake-presets(7)>` for more details.
+
+``--list-presets``
+ Lists the available test presets. The current working directory must contain
+ CMake preset files.
+
+``-C <cfg>, --build-config <cfg>``
+ Choose configuration to test.
+
+ Some CMake-generated build trees can have multiple build
+ configurations in the same tree.  This option can be used to specify
+ which one should be tested.  Example configurations are ``Debug`` and
+ ``Release``.
+
+``--progress``
+ Enable short progress output from tests.
+
+ When the output of **ctest** is being sent directly to a terminal, the
+ progress through the set of tests is reported by updating the same line
+ rather than printing start and end messages for each test on new lines.
+ This can significantly reduce the verbosity of the test output.
+ Test completion messages are still output on their own line for failed
+ tests and the final test summary will also still be logged.
+
+ This option can also be enabled by setting the environment variable
+ :envvar:`CTEST_PROGRESS_OUTPUT`.
+
+``-V,--verbose``
+ Enable verbose output from tests.
+
+ Test output is normally suppressed and only summary information is
+ displayed.  This option will show all test output.
+
+``-VV,--extra-verbose``
+ Enable more verbose output from tests.
+
+ Test output is normally suppressed and only summary information is
+ displayed.  This option will show even more test output.
+
+``--debug``
+ Displaying more verbose internals of CTest.
+
+ This feature will result in a large number of output that is mostly
+ useful for debugging dashboard problems.
+
+``--output-on-failure``
+ Output anything outputted by the test program if the test should fail.
+ This option can also be enabled by setting the
+ :envvar:`CTEST_OUTPUT_ON_FAILURE` environment variable
+
+``--stop-on-failure``
+ Stop running the tests when the first failure happens.
+
+``-F``
+ Enable failover.
+
+ This option allows CTest to resume a test set execution that was
+ previously interrupted.  If no interruption occurred, the ``-F`` option
+ will have no effect.
+
+``-j <jobs>, --parallel <jobs>``
+ Run the tests in parallel using the given number of jobs.
+
+ This option tells CTest to run the tests in parallel using given
+ number of jobs. This option can also be set by setting the
+ :envvar:`CTEST_PARALLEL_LEVEL` environment variable.
+
+ This option can be used with the :prop_test:`PROCESSORS` test property.
+
+ See `Label and Subproject Summary`_.
+
+``--resource-spec-file <file>``
+ Run CTest with :ref:`resource allocation <ctest-resource-allocation>` enabled,
+ using the
+ :ref:`resource specification file <ctest-resource-specification-file>`
+ specified in ``<file>``.
+
+ When ``ctest`` is run as a `Dashboard Client`_ this sets the
+ ``ResourceSpecFile`` option of the `CTest Test Step`_.
+
+``--test-load <level>``
+ While running tests in parallel (e.g. with ``-j``), try not to start
+ tests when they may cause the CPU load to pass above a given threshold.
+
+ When ``ctest`` is run as a `Dashboard Client`_ this sets the
+ ``TestLoad`` option of the `CTest Test Step`_.
+
+``-Q,--quiet``
+ Make CTest quiet.
+
+ This option will suppress all the output.  The output log file will
+ still be generated if the ``--output-log`` is specified.  Options such
+ as ``--verbose``, ``--extra-verbose``, and ``--debug`` are ignored
+ if ``--quiet`` is specified.
+
+``-O <file>, --output-log <file>``
+ Output to log file.
+
+ This option tells CTest to write all its output to a ``<file>`` log file.
+
+``--output-junit <file>``
+ Write test results in JUnit format.
+
+ This option tells CTest to write test results to ``<file>`` in JUnit XML
+ format. If ``<file>`` already exists, it will be overwritten. If using the
+ ``-S`` option to run a dashboard script, use the ``OUTPUT_JUNIT`` keyword
+ with the :command:`ctest_test` command instead.
+
+``-N,--show-only[=<format>]``
+ Disable actual execution of tests.
+
+ This option tells CTest to list the tests that would be run but not
+ actually run them.  Useful in conjunction with the ``-R`` and ``-E``
+ options.
+
+ ``<format>`` can be one of the following values.
+
+   ``human``
+     Human-friendly output.  This is not guaranteed to be stable.
+     This is the default.
+
+   ``json-v1``
+     Dump the test information in JSON format.
+     See `Show as JSON Object Model`_.
+
+``-L <regex>, --label-regex <regex>``
+ Run tests with labels matching regular expression as described under
+ :ref:`string(REGEX) <Regex Specification>`.
+
+ This option tells CTest to run only the tests whose labels match the
+ given regular expression.  When more than one ``-L`` option is given,
+ a test will only be run if each regular expression matches at least one
+ of the test's labels (i.e. the multiple ``-L`` labels form an ``AND``
+ relationship).  See `Label Matching`_.
+
+``-R <regex>, --tests-regex <regex>``
+ Run tests matching regular expression.
+
+ This option tells CTest to run only the tests whose names match the
+ given regular expression.
+
+``-E <regex>, --exclude-regex <regex>``
+ Exclude tests matching regular expression.
+
+ This option tells CTest to NOT run the tests whose names match the
+ given regular expression.
+
+``-LE <regex>, --label-exclude <regex>``
+ Exclude tests with labels matching regular expression.
+
+ This option tells CTest to NOT run the tests whose labels match the
+ given regular expression.  When more than one ``-LE`` option is given,
+ a test will only be excluded if each regular expression matches at least one
+ of the test's labels (i.e. the multiple ``-LE`` labels form an ``AND``
+ relationship).  See `Label Matching`_.
+
+``-FA <regex>, --fixture-exclude-any <regex>``
+ Exclude fixtures matching ``<regex>`` from automatically adding any tests to
+ the test set.
+
+ If a test in the set of tests to be executed requires a particular fixture,
+ that fixture's setup and cleanup tests would normally be added to the test set
+ automatically. This option prevents adding setup or cleanup tests for fixtures
+ matching the ``<regex>``. Note that all other fixture behavior is retained,
+ including test dependencies and skipping tests that have fixture setup tests
+ that fail.
+
+``-FS <regex>, --fixture-exclude-setup <regex>``
+ Same as ``-FA`` except only matching setup tests are excluded.
+
+``-FC <regex>, --fixture-exclude-cleanup <regex>``
+ Same as ``-FA`` except only matching cleanup tests are excluded.
+
+``-D <dashboard>, --dashboard <dashboard>``
+ Execute dashboard test.
+
+ This option tells CTest to act as a CDash client and perform a
+ dashboard test.  All tests are ``<Mode><Test>``, where ``<Mode>`` can be
+ ``Experimental``, ``Nightly``, and ``Continuous``, and ``<Test>`` can be
+ ``Start``, ``Update``, ``Configure``, ``Build``, ``Test``,
+ ``Coverage``, and ``Submit``.
+
+ See `Dashboard Client`_.
+
+``-D <var>:<type>=<value>``
+ Define a variable for script mode.
+
+ Pass in variable values on the command line.  Use in conjunction
+ with ``-S`` to pass variable values to a dashboard script.  Parsing ``-D``
+ arguments as variable values is only attempted if the value
+ following ``-D`` does not match any of the known dashboard types.
+
+``-M <model>, --test-model <model>``
+ Sets the model for a dashboard.
+
+ This option tells CTest to act as a CDash client where the ``<model>``
+ can be ``Experimental``, ``Nightly``, and ``Continuous``.
+ Combining ``-M`` and ``-T`` is similar to ``-D``.
+
+ See `Dashboard Client`_.
+
+``-T <action>, --test-action <action>``
+ Sets the dashboard action to perform.
+
+ This option tells CTest to act as a CDash client and perform some
+ action such as ``start``, ``build``, ``test`` etc. See
+ `Dashboard Client Steps`_ for the full list of actions.
+ Combining ``-M`` and ``-T`` is similar to ``-D``.
+
+ See `Dashboard Client`_.
+
+``-S <script>, --script <script>``
+ Execute a dashboard for a configuration.
+
+ This option tells CTest to load in a configuration script which sets
+ a number of parameters such as the binary and source directories.
+ Then CTest will do what is required to create and run a dashboard.
+ This option basically sets up a dashboard and then runs ``ctest -D``
+ with the appropriate options.
+
+ See `Dashboard Client`_.
+
+``-SP <script>, --script-new-process <script>``
+ Execute a dashboard for a configuration.
+
+ This option does the same operations as ``-S`` but it will do them in a
+ separate process.  This is primarily useful in cases where the
+ script may modify the environment and you do not want the modified
+ environment to impact other ``-S`` scripts.
+
+ See `Dashboard Client`_.
+
+``-I [Start,End,Stride,test#,test#|Test file], --tests-information``
+ Run a specific number of tests by number.
+
+ This option causes CTest to run tests starting at number ``Start``,
+ ending at number ``End``, and incrementing by ``Stride``.  Any additional
+ numbers after ``Stride`` are considered individual test numbers.  ``Start``,
+ ``End``, or ``Stride`` can be empty.  Optionally a file can be given that
+ contains the same syntax as the command line.
+
+``-U, --union``
+ Take the Union of ``-I`` and ``-R``.
+
+ When both ``-R`` and ``-I`` are specified by default the intersection of
+ tests are run.  By specifying ``-U`` the union of tests is run instead.
+
+``--rerun-failed``
+ Run only the tests that failed previously.
+
+ This option tells CTest to perform only the tests that failed during
+ its previous run.  When this option is specified, CTest ignores all
+ other options intended to modify the list of tests to run (``-L``, ``-R``,
+ ``-E``, ``-LE``, ``-I``, etc).  In the event that CTest runs and no tests
+ fail, subsequent calls to CTest with the ``--rerun-failed`` option will run
+ the set of tests that most recently failed (if any).
+
+``--repeat <mode>:<n>``
+  Run tests repeatedly based on the given ``<mode>`` up to ``<n>`` times.
+  The modes are:
+
+  ``until-fail``
+    Require each test to run ``<n>`` times without failing in order to pass.
+    This is useful in finding sporadic failures in test cases.
+
+  ``until-pass``
+    Allow each test to run up to ``<n>`` times in order to pass.
+    Repeats tests if they fail for any reason.
+    This is useful in tolerating sporadic failures in test cases.
+
+  ``after-timeout``
+    Allow each test to run up to ``<n>`` times in order to pass.
+    Repeats tests only if they timeout.
+    This is useful in tolerating sporadic timeouts in test cases
+    on busy machines.
+
+``--repeat-until-fail <n>``
+ Equivalent to ``--repeat until-fail:<n>``.
+
+``--max-width <width>``
+ Set the max width for a test name to output.
+
+ Set the maximum width for each test name to show in the output.
+ This allows the user to widen the output to avoid clipping the test
+ name which can be very annoying.
+
+``--interactive-debug-mode [0|1]``
+ Set the interactive mode to ``0`` or ``1``.
+
+ This option causes CTest to run tests in either an interactive mode
+ or a non-interactive mode.  In dashboard mode (``Experimental``, ``Nightly``,
+ ``Continuous``), the default is non-interactive.  In non-interactive mode,
+ the environment variable :envvar:`DASHBOARD_TEST_FROM_CTEST` is set.
+
+ Prior to CMake 3.11, interactive mode on Windows allowed system debug
+ popup windows to appear.  Now, due to CTest's use of ``libuv`` to launch
+ test processes, all system debug popup windows are always blocked.
+
+``--no-label-summary``
+ Disable timing summary information for labels.
+
+ This option tells CTest not to print summary information for each
+ label associated with the tests run.  If there are no labels on the
+ tests, nothing extra is printed.
+
+ See `Label and Subproject Summary`_.
+
+``--no-subproject-summary``
+ Disable timing summary information for subprojects.
+
+ This option tells CTest not to print summary information for each
+ subproject associated with the tests run.  If there are no subprojects on the
+ tests, nothing extra is printed.
+
+ See `Label and Subproject Summary`_.
+
+``--build-and-test``
+See `Build and Test Mode`_.
+
+``--test-dir <dir>``
+Specify the directory in which to look for tests.
+
+``--test-output-size-passed <size>``
+ Limit the output for passed tests to ``<size>`` bytes.
+
+``--test-output-size-failed <size>``
+ Limit the output for failed tests to ``<size>`` bytes.
+
+``--overwrite``
+ Overwrite CTest configuration option.
+
+ By default CTest uses configuration options from configuration file.
+ This option will overwrite the configuration option.
+
+``--force-new-ctest-process``
+ Run child CTest instances as new processes.
+
+ By default CTest will run child CTest instances within the same
+ process.  If this behavior is not desired, this argument will
+ enforce new processes for child CTest processes.
+
+``--schedule-random``
+ Use a random order for scheduling tests.
+
+ This option will run the tests in a random order.  It is commonly
+ used to detect implicit dependencies in a test suite.
+
+``--submit-index``
+ Legacy option for old Dart2 dashboard server feature.
+ Do not use.
+
+``--timeout <seconds>``
+ Set the default test timeout.
+
+ This option effectively sets a timeout on all tests that do not
+ already have a timeout set on them via the :prop_test:`TIMEOUT`
+ property.
+
+``--stop-time <time>``
+ Set a time at which all tests should stop running.
+
+ Set a real time of day at which all tests should timeout.  Example:
+ ``7:00:00 -0400``.  Any time format understood by the curl date parser
+ is accepted.  Local time is assumed if no timezone is specified.
+
+``--print-labels``
+ Print all available test labels.
+
+ This option will not run any tests, it will simply print the list of
+ all labels associated with the test set.
+
+``--no-tests=<[error|ignore]>``
+ Regard no tests found either as error or ignore it.
+
+ If no tests were found, the default behavior of CTest is to always log an
+ error message but to return an error code in script mode only.  This option
+ unifies the behavior of CTest by either returning an error code if no tests
+ were found or by ignoring it.
+
+.. include:: OPTIONS_HELP.txt
+
+.. _`Label Matching`:
+
+Label Matching
+==============
+
+Tests may have labels attached to them. Tests may be included
+or excluded from a test run by filtering on the labels.
+Each individual filter is a regular expression applied to
+the labels attached to a test.
+
+When ``-L`` is used, in order for a test to be included in a
+test run, each regular expression must match at least one
+label.  Using more than one ``-L`` option means "match **all**
+of these".
+
+The ``-LE`` option works just like ``-L``, but excludes tests
+rather than including them. A test is excluded if each regular
+expression matches at least one label.
+
+If a test has no labels attached to it, then ``-L`` will never
+include that test, and ``-LE`` will never exclude that test.
+As an example of tests with labels, consider five tests,
+with the following labels:
+
+* *test1* has labels *tuesday* and *production*
+* *test2* has labels *tuesday* and *test*
+* *test3* has labels *wednesday* and *production*
+* *test4* has label *wednesday*
+* *test5* has labels *friday* and *test*
+
+Running ``ctest`` with ``-L tuesday -L test`` will select *test2*, which has
+both labels. Running CTest with ``-L test`` will select *test2* and
+*test5*, because both of them have a label that matches that regular
+expression.
+
+Because the matching works with regular expressions, take note that
+running CTest with ``-L es`` will match all five tests.
+To select the *tuesday* and *wednesday* tests together, use a single
+regular expression that matches either of them, like ``-L "tue|wed"``.
+
+.. _`Label and Subproject Summary`:
+
+Label and Subproject Summary
+============================
+
+CTest prints timing summary information for each ``LABEL`` and subproject
+associated with the tests run. The label time summary will not include labels
+that are mapped to subprojects.
+
+.. versionadded:: 3.22
+  Labels added dynamically during test execution are also reported in the
+  timing summary.  See :ref:`Additional Labels`.
+
+When the :prop_test:`PROCESSORS` test property is set, CTest will display a
+weighted test timing result in label and subproject summaries. The time is
+reported with `sec*proc` instead of just `sec`.
+
+The weighted time summary reported for each label or subproject ``j``
+is computed as::
+
+  Weighted Time Summary for Label/Subproject j =
+      sum(raw_test_time[j,i] * num_processors[j,i], i=1...num_tests[j])
+
+  for labels/subprojects j=1...total
+
+where:
+
+* ``raw_test_time[j,i]``: Wall-clock time for the ``i`` test
+  for the ``j`` label or subproject
+* ``num_processors[j,i]``: Value of the CTest :prop_test:`PROCESSORS` property
+  for the ``i`` test for the ``j`` label or subproject
+* ``num_tests[j]``: Number of tests associated with the ``j`` label or subproject
+* ``total``: Total number of labels or subprojects that have at least one test run
+
+Therefore, the weighted time summary for each label or subproject represents
+the amount of time that CTest gave to run the tests for each label or
+subproject and gives a good representation of the total expense of the tests
+for each label or subproject when compared to other labels or subprojects.
+
+For example, if ``SubprojectA`` showed ``100 sec*proc`` and ``SubprojectB`` showed
+``10 sec*proc``, then CTest allocated approximately 10 times the CPU/core time
+to run the tests for ``SubprojectA`` than for ``SubprojectB`` (e.g. so if effort
+is going to be expended to reduce the cost of the test suite for the whole
+project, then reducing the cost of the test suite for ``SubprojectA`` would
+likely have a larger impact than effort to reduce the cost of the test suite
+for ``SubprojectB``).
+
+.. _`Build and Test Mode`:
+
+Build and Test Mode
+===================
+
+CTest provides a command-line signature to configure (i.e. run cmake on),
+build, and/or execute a test::
+
+  ctest --build-and-test <path-to-source> <path-to-build>
+        --build-generator <generator>
+        [<options>...]
+        [--build-options <opts>...]
+        [--test-command <command> [<args>...]]
+
+The configure and test steps are optional. The arguments to this command line
+are the source and binary directories.  The ``--build-generator`` option *must*
+be provided to use ``--build-and-test``.  If ``--test-command`` is specified
+then that will be run after the build is complete.  Other options that affect
+this mode include:
+
+``--build-target``
+ Specify a specific target to build.
+
+ If left out the ``all`` target is built.
+
+``--build-nocmake``
+ Run the build without running cmake first.
+
+ Skip the cmake step.
+
+``--build-run-dir``
+ Specify directory to run programs from.
+
+ Directory where programs will be after it has been compiled.
+
+``--build-two-config``
+ Run CMake twice.
+
+``--build-exe-dir``
+ Specify the directory for the executable.
+
+``--build-generator``
+ Specify the generator to use. See the :manual:`cmake-generators(7)` manual.
+
+``--build-generator-platform``
+ Specify the generator-specific platform.
+
+``--build-generator-toolset``
+ Specify the generator-specific toolset.
+
+``--build-project``
+ Specify the name of the project to build.
+
+``--build-makeprogram``
+ Specify the explicit make program to be used by CMake when configuring and
+ building the project. Only applicable for Make and Ninja based generators.
+
+``--build-noclean``
+ Skip the make clean step.
+
+``--build-config-sample``
+ A sample executable to use to determine the configuration that
+ should be used.  e.g.  ``Debug``, ``Release`` etc.
+
+``--build-options``
+ Additional options for configuring the build (i.e. for CMake, not for
+ the build tool).  Note that if this is specified, the ``--build-options``
+ keyword and its arguments must be the last option given on the command
+ line, with the possible exception of ``--test-command``.
+
+``--test-command``
+ The command to run as the test step with the ``--build-and-test`` option.
+ All arguments following this keyword will be assumed to be part of the
+ test command line, so it must be the last option given.
+
+``--test-timeout``
+ The time limit in seconds
+
+.. _`Dashboard Client`:
+
+Dashboard Client
+================
+
+CTest can operate as a client for the `CDash`_ software quality dashboard
+application.  As a dashboard client, CTest performs a sequence of steps
+to configure, build, and test software, and then submits the results to
+a `CDash`_ server. The command-line signature used to submit to `CDash`_ is::
+
+  ctest (-D <dashboard> | -M <model> -T <action> | -S <script> | -SP <script>)
+        [-- <dashboard-options>...]
+
+Options for Dashboard Client include:
+
+``--group <group>``
+ Specify what group you'd like to submit results to
+
+ Submit dashboard to specified group instead of default one.  By
+ default, the dashboard is submitted to Nightly, Experimental, or
+ Continuous group, but by specifying this option, the group can be
+ arbitrary.
+
+ This replaces the deprecated option ``--track``.
+ Despite the name change its behavior is unchanged.
+
+``-A <file>, --add-notes <file>``
+ Add a notes file with submission.
+
+ This option tells CTest to include a notes file when submitting
+ dashboard.
+
+``--tomorrow-tag``
+ ``Nightly`` or ``Experimental`` starts with next day tag.
+
+ This is useful if the build will not finish in one day.
+
+``--extra-submit <file>[;<file>]``
+ Submit extra files to the dashboard.
+
+ This option will submit extra files to the dashboard.
+
+``--http1.0``
+ Submit using `HTTP 1.0`.
+
+ This option will force CTest to use `HTTP 1.0` to submit files to the
+ dashboard, instead of `HTTP 1.1`.
+
+``--no-compress-output``
+ Do not compress test output when submitting.
+
+ This flag will turn off automatic compression of test output.  Use
+ this to maintain compatibility with an older version of CDash which
+ doesn't support compressed test output.
+
+Dashboard Client Steps
+----------------------
+
+CTest defines an ordered list of testing steps of which some or all may
+be run as a dashboard client:
+
+``Start``
+  Start a new dashboard submission to be composed of results recorded
+  by the following steps.
+  See the `CTest Start Step`_ section below.
+
+``Update``
+  Update the source tree from its version control repository.
+  Record the old and new versions and the list of updated source files.
+  See the `CTest Update Step`_ section below.
+
+``Configure``
+  Configure the software by running a command in the build tree.
+  Record the configuration output log.
+  See the `CTest Configure Step`_ section below.
+
+``Build``
+  Build the software by running a command in the build tree.
+  Record the build output log and detect warnings and errors.
+  See the `CTest Build Step`_ section below.
+
+``Test``
+  Test the software by loading a ``CTestTestfile.cmake``
+  from the build tree and executing the defined tests.
+  Record the output and result of each test.
+  See the `CTest Test Step`_ section below.
+
+``Coverage``
+  Compute coverage of the source code by running a coverage
+  analysis tool and recording its output.
+  See the `CTest Coverage Step`_ section below.
+
+``MemCheck``
+  Run the software test suite through a memory check tool.
+  Record the test output, results, and issues reported by the tool.
+  See the `CTest MemCheck Step`_ section below.
+
+``Submit``
+  Submit results recorded from other testing steps to the
+  software quality dashboard server.
+  See the `CTest Submit Step`_ section below.
+
+Dashboard Client Modes
+----------------------
+
+CTest defines three modes of operation as a dashboard client:
+
+``Nightly``
+  This mode is intended to be invoked once per day, typically at night.
+  It enables the ``Start``, ``Update``, ``Configure``, ``Build``, ``Test``,
+  ``Coverage``, and ``Submit`` steps by default.  Selected steps run even
+  if the ``Update`` step reports no changes to the source tree.
+
+``Continuous``
+  This mode is intended to be invoked repeatedly throughout the day.
+  It enables the ``Start``, ``Update``, ``Configure``, ``Build``, ``Test``,
+  ``Coverage``, and ``Submit`` steps by default, but exits after the
+  ``Update`` step if it reports no changes to the source tree.
+
+``Experimental``
+  This mode is intended to be invoked by a developer to test local changes.
+  It enables the ``Start``, ``Configure``, ``Build``, ``Test``, ``Coverage``,
+  and ``Submit`` steps by default.
+
+Dashboard Client via CTest Command-Line
+---------------------------------------
+
+CTest can perform testing on an already-generated build tree.
+Run the ``ctest`` command with the current working directory set
+to the build tree and use one of these signatures::
+
+  ctest -D <mode>[<step>]
+  ctest -M <mode> [ -T <step> ]...
+
+The ``<mode>`` must be one of the above `Dashboard Client Modes`_,
+and each ``<step>`` must be one of the above `Dashboard Client Steps`_.
+
+CTest reads the `Dashboard Client Configuration`_ settings from
+a file in the build tree called either ``CTestConfiguration.ini``
+or ``DartConfiguration.tcl`` (the names are historical).  The format
+of the file is::
+
+  # Lines starting in '#' are comments.
+  # Other non-blank lines are key-value pairs.
+  <setting>: <value>
+
+where ``<setting>`` is the setting name and ``<value>`` is the
+setting value.
+
+In build trees generated by CMake, this configuration file is
+generated by the :module:`CTest` module if included by the project.
+The module uses variables to obtain a value for each setting
+as documented with the settings below.
+
+.. _`CTest Script`:
+
+Dashboard Client via CTest Script
+---------------------------------
+
+CTest can perform testing driven by a :manual:`cmake-language(7)`
+script that creates and maintains the source and build tree as
+well as performing the testing steps.  Run the ``ctest`` command
+with the current working directory set outside of any build tree
+and use one of these signatures::
+
+  ctest -S <script>
+  ctest -SP <script>
+
+The ``<script>`` file must call :ref:`CTest Commands` commands
+to run testing steps explicitly as documented below.  The commands
+obtain `Dashboard Client Configuration`_ settings from their
+arguments or from variables set in the script.
+
+Dashboard Client Configuration
+==============================
+
+The `Dashboard Client Steps`_ may be configured by named
+settings as documented in the following sections.
+
+.. _`CTest Start Step`:
+
+CTest Start Step
+----------------
+
+Start a new dashboard submission to be composed of results recorded
+by the following steps.
+
+In a `CTest Script`_, the :command:`ctest_start` command runs this step.
+Arguments to the command may specify some of the step settings.
+The command first runs the command-line specified by the
+``CTEST_CHECKOUT_COMMAND`` variable, if set, to initialize the source
+directory.
+
+Configuration settings include:
+
+``BuildDirectory``
+  The full path to the project build tree.
+
+  * `CTest Script`_ variable: :variable:`CTEST_BINARY_DIRECTORY`
+  * :module:`CTest` module variable: :variable:`PROJECT_BINARY_DIR`
+
+``SourceDirectory``
+  The full path to the project source tree.
+
+  * `CTest Script`_ variable: :variable:`CTEST_SOURCE_DIRECTORY`
+  * :module:`CTest` module variable: :variable:`PROJECT_SOURCE_DIR`
+
+.. _`CTest Update Step`:
+
+CTest Update Step
+-----------------
+
+In a `CTest Script`_, the :command:`ctest_update` command runs this step.
+Arguments to the command may specify some of the step settings.
+
+Configuration settings to specify the version control tool include:
+
+``BZRCommand``
+  ``bzr`` command-line tool to use if source tree is managed by Bazaar.
+
+  * `CTest Script`_ variable: :variable:`CTEST_BZR_COMMAND`
+  * :module:`CTest` module variable: none
+
+``BZRUpdateOptions``
+  Command-line options to the ``BZRCommand`` when updating the source.
+
+  * `CTest Script`_ variable: :variable:`CTEST_BZR_UPDATE_OPTIONS`
+  * :module:`CTest` module variable: none
+
+``CVSCommand``
+  ``cvs`` command-line tool to use if source tree is managed by CVS.
+
+  * `CTest Script`_ variable: :variable:`CTEST_CVS_COMMAND`
+  * :module:`CTest` module variable: ``CVSCOMMAND``
+
+``CVSUpdateOptions``
+  Command-line options to the ``CVSCommand`` when updating the source.
+
+  * `CTest Script`_ variable: :variable:`CTEST_CVS_UPDATE_OPTIONS`
+  * :module:`CTest` module variable: ``CVS_UPDATE_OPTIONS``
+
+``GITCommand``
+  ``git`` command-line tool to use if source tree is managed by Git.
+
+  * `CTest Script`_ variable: :variable:`CTEST_GIT_COMMAND`
+  * :module:`CTest` module variable: ``GITCOMMAND``
+
+  The source tree is updated by ``git fetch`` followed by
+  ``git reset --hard`` to the ``FETCH_HEAD``.  The result is the same
+  as ``git pull`` except that any local modifications are overwritten.
+  Use ``GITUpdateCustom`` to specify a different approach.
+
+``GITInitSubmodules``
+  If set, CTest will update the repository's submodules before updating.
+
+  * `CTest Script`_ variable: :variable:`CTEST_GIT_INIT_SUBMODULES`
+  * :module:`CTest` module variable: ``CTEST_GIT_INIT_SUBMODULES``
+
+``GITUpdateCustom``
+  Specify a custom command line (as a semicolon-separated list) to run
+  in the source tree (Git work tree) to update it instead of running
+  the ``GITCommand``.
+
+  * `CTest Script`_ variable: :variable:`CTEST_GIT_UPDATE_CUSTOM`
+  * :module:`CTest` module variable: ``CTEST_GIT_UPDATE_CUSTOM``
+
+``GITUpdateOptions``
+  Command-line options to the ``GITCommand`` when updating the source.
+
+  * `CTest Script`_ variable: :variable:`CTEST_GIT_UPDATE_OPTIONS`
+  * :module:`CTest` module variable: ``GIT_UPDATE_OPTIONS``
+
+``HGCommand``
+  ``hg`` command-line tool to use if source tree is managed by Mercurial.
+
+  * `CTest Script`_ variable: :variable:`CTEST_HG_COMMAND`
+  * :module:`CTest` module variable: none
+
+``HGUpdateOptions``
+  Command-line options to the ``HGCommand`` when updating the source.
+
+  * `CTest Script`_ variable: :variable:`CTEST_HG_UPDATE_OPTIONS`
+  * :module:`CTest` module variable: none
+
+``P4Client``
+  Value of the ``-c`` option to the ``P4Command``.
+
+  * `CTest Script`_ variable: :variable:`CTEST_P4_CLIENT`
+  * :module:`CTest` module variable: ``CTEST_P4_CLIENT``
+
+``P4Command``
+  ``p4`` command-line tool to use if source tree is managed by Perforce.
+
+  * `CTest Script`_ variable: :variable:`CTEST_P4_COMMAND`
+  * :module:`CTest` module variable: ``P4COMMAND``
+
+``P4Options``
+  Command-line options to the ``P4Command`` for all invocations.
+
+  * `CTest Script`_ variable: :variable:`CTEST_P4_OPTIONS`
+  * :module:`CTest` module variable: ``CTEST_P4_OPTIONS``
+
+``P4UpdateCustom``
+  Specify a custom command line (as a semicolon-separated list) to run
+  in the source tree (Perforce tree) to update it instead of running
+  the ``P4Command``.
+
+  * `CTest Script`_ variable: none
+  * :module:`CTest` module variable: ``CTEST_P4_UPDATE_CUSTOM``
+
+``P4UpdateOptions``
+  Command-line options to the ``P4Command`` when updating the source.
+
+  * `CTest Script`_ variable: :variable:`CTEST_P4_UPDATE_OPTIONS`
+  * :module:`CTest` module variable: ``CTEST_P4_UPDATE_OPTIONS``
+
+``SVNCommand``
+  ``svn`` command-line tool to use if source tree is managed by Subversion.
+
+  * `CTest Script`_ variable: :variable:`CTEST_SVN_COMMAND`
+  * :module:`CTest` module variable: ``SVNCOMMAND``
+
+``SVNOptions``
+  Command-line options to the ``SVNCommand`` for all invocations.
+
+  * `CTest Script`_ variable: :variable:`CTEST_SVN_OPTIONS`
+  * :module:`CTest` module variable: ``CTEST_SVN_OPTIONS``
+
+``SVNUpdateOptions``
+  Command-line options to the ``SVNCommand`` when updating the source.
+
+  * `CTest Script`_ variable: :variable:`CTEST_SVN_UPDATE_OPTIONS`
+  * :module:`CTest` module variable: ``SVN_UPDATE_OPTIONS``
+
+``UpdateCommand``
+  Specify the version-control command-line tool to use without
+  detecting the VCS that manages the source tree.
+
+  * `CTest Script`_ variable: :variable:`CTEST_UPDATE_COMMAND`
+  * :module:`CTest` module variable: ``<VCS>COMMAND``
+    when ``UPDATE_TYPE`` is ``<vcs>``, else ``UPDATE_COMMAND``
+
+``UpdateOptions``
+  Command-line options to the ``UpdateCommand``.
+
+  * `CTest Script`_ variable: :variable:`CTEST_UPDATE_OPTIONS`
+  * :module:`CTest` module variable: ``<VCS>_UPDATE_OPTIONS``
+    when ``UPDATE_TYPE`` is ``<vcs>``, else ``UPDATE_OPTIONS``
+
+``UpdateType``
+  Specify the version-control system that manages the source
+  tree if it cannot be detected automatically.
+  The value may be ``bzr``, ``cvs``, ``git``, ``hg``,
+  ``p4``, or ``svn``.
+
+  * `CTest Script`_ variable: none, detected from source tree
+  * :module:`CTest` module variable: ``UPDATE_TYPE`` if set,
+    else ``CTEST_UPDATE_TYPE``
+
+.. _`UpdateVersionOnly`:
+
+``UpdateVersionOnly``
+  Specify that you want the version control update command to only
+  discover the current version that is checked out, and not to update
+  to a different version.
+
+  * `CTest Script`_ variable: :variable:`CTEST_UPDATE_VERSION_ONLY`
+
+.. _`UpdateVersionOverride`:
+
+``UpdateVersionOverride``
+  Specify the current version of your source tree.
+
+  When this variable is set to a non-empty string, CTest will report the value
+  you specified rather than using the update command to discover the current
+  version that is checked out. Use of this variable supersedes
+  ``UpdateVersionOnly``. Like ``UpdateVersionOnly``, using this variable tells
+  CTest not to update the source tree to a different version.
+
+  * `CTest Script`_ variable: :variable:`CTEST_UPDATE_VERSION_OVERRIDE`
+
+Additional configuration settings include:
+
+``NightlyStartTime``
+  In the ``Nightly`` dashboard mode, specify the "nightly start time".
+  With centralized version control systems (``cvs`` and ``svn``),
+  the ``Update`` step checks out the version of the software as of
+  this time so that multiple clients choose a common version to test.
+  This is not well-defined in distributed version-control systems so
+  the setting is ignored.
+
+  * `CTest Script`_ variable: :variable:`CTEST_NIGHTLY_START_TIME`
+  * :module:`CTest` module variable: ``NIGHTLY_START_TIME`` if set,
+    else ``CTEST_NIGHTLY_START_TIME``
+
+.. _`CTest Configure Step`:
+
+CTest Configure Step
+--------------------
+
+In a `CTest Script`_, the :command:`ctest_configure` command runs this step.
+Arguments to the command may specify some of the step settings.
+
+Configuration settings include:
+
+``ConfigureCommand``
+  Command-line to launch the software configuration process.
+  It will be executed in the location specified by the
+  ``BuildDirectory`` setting.
+
+  * `CTest Script`_ variable: :variable:`CTEST_CONFIGURE_COMMAND`
+  * :module:`CTest` module variable: :variable:`CMAKE_COMMAND`
+    followed by :variable:`PROJECT_SOURCE_DIR`
+
+``LabelsForSubprojects``
+  Specify a semicolon-separated list of labels that will be treated as
+  subprojects. This mapping will be passed on to CDash when configure, test or
+  build results are submitted.
+
+  * `CTest Script`_ variable: :variable:`CTEST_LABELS_FOR_SUBPROJECTS`
+  * :module:`CTest` module variable: ``CTEST_LABELS_FOR_SUBPROJECTS``
+
+  See `Label and Subproject Summary`_.
+
+.. _`CTest Build Step`:
+
+CTest Build Step
+----------------
+
+In a `CTest Script`_, the :command:`ctest_build` command runs this step.
+Arguments to the command may specify some of the step settings.
+
+Configuration settings include:
+
+``DefaultCTestConfigurationType``
+  When the build system to be launched allows build-time selection
+  of the configuration (e.g. ``Debug``, ``Release``), this specifies
+  the default configuration to be built when no ``-C`` option is
+  given to the ``ctest`` command.  The value will be substituted into
+  the value of ``MakeCommand`` to replace the literal string
+  ``${CTEST_CONFIGURATION_TYPE}`` if it appears.
+
+  * `CTest Script`_ variable: :variable:`CTEST_CONFIGURATION_TYPE`
+  * :module:`CTest` module variable: ``DEFAULT_CTEST_CONFIGURATION_TYPE``,
+    initialized by the :envvar:`CMAKE_CONFIG_TYPE` environment variable
+
+``LabelsForSubprojects``
+  Specify a semicolon-separated list of labels that will be treated as
+  subprojects. This mapping will be passed on to CDash when configure, test or
+  build results are submitted.
+
+  * `CTest Script`_ variable: :variable:`CTEST_LABELS_FOR_SUBPROJECTS`
+  * :module:`CTest` module variable: ``CTEST_LABELS_FOR_SUBPROJECTS``
+
+  See `Label and Subproject Summary`_.
+
+``MakeCommand``
+  Command-line to launch the software build process.
+  It will be executed in the location specified by the
+  ``BuildDirectory`` setting.
+
+  * `CTest Script`_ variable: :variable:`CTEST_BUILD_COMMAND`
+  * :module:`CTest` module variable: ``MAKECOMMAND``,
+    initialized by the :command:`build_command` command
+
+``UseLaunchers``
+  For build trees generated by CMake using one of the
+  :ref:`Makefile Generators` or the :generator:`Ninja`
+  generator, specify whether the
+  ``CTEST_USE_LAUNCHERS`` feature is enabled by the
+  :module:`CTestUseLaunchers` module (also included by the
+  :module:`CTest` module).  When enabled, the generated build
+  system wraps each invocation of the compiler, linker, or
+  custom command line with a "launcher" that communicates
+  with CTest via environment variables and files to report
+  granular build warning and error information.  Otherwise,
+  CTest must "scrape" the build output log for diagnostics.
+
+  * `CTest Script`_ variable: :variable:`CTEST_USE_LAUNCHERS`
+  * :module:`CTest` module variable: ``CTEST_USE_LAUNCHERS``
+
+.. _`CTest Test Step`:
+
+CTest Test Step
+---------------
+
+In a `CTest Script`_, the :command:`ctest_test` command runs this step.
+Arguments to the command may specify some of the step settings.
+
+Configuration settings include:
+
+``ResourceSpecFile``
+  Specify a
+  :ref:`resource specification file <ctest-resource-specification-file>`.
+
+  * `CTest Script`_ variable: :variable:`CTEST_RESOURCE_SPEC_FILE`
+  * :module:`CTest` module variable: ``CTEST_RESOURCE_SPEC_FILE``
+
+  See :ref:`ctest-resource-allocation` for more information.
+
+``LabelsForSubprojects``
+  Specify a semicolon-separated list of labels that will be treated as
+  subprojects. This mapping will be passed on to CDash when configure, test or
+  build results are submitted.
+
+  * `CTest Script`_ variable: :variable:`CTEST_LABELS_FOR_SUBPROJECTS`
+  * :module:`CTest` module variable: ``CTEST_LABELS_FOR_SUBPROJECTS``
+
+  See `Label and Subproject Summary`_.
+
+``TestLoad``
+  While running tests in parallel (e.g. with ``-j``), try not to start
+  tests when they may cause the CPU load to pass above a given threshold.
+
+  * `CTest Script`_ variable: :variable:`CTEST_TEST_LOAD`
+  * :module:`CTest` module variable: ``CTEST_TEST_LOAD``
+
+``TimeOut``
+  The default timeout for each test if not specified by the
+  :prop_test:`TIMEOUT` test property.
+
+  * `CTest Script`_ variable: :variable:`CTEST_TEST_TIMEOUT`
+  * :module:`CTest` module variable: ``DART_TESTING_TIMEOUT``
+
+To report extra test values to CDash, see :ref:`Additional Test Measurements`.
+
+.. _`CTest Coverage Step`:
+
+CTest Coverage Step
+-------------------
+
+In a `CTest Script`_, the :command:`ctest_coverage` command runs this step.
+Arguments to the command may specify some of the step settings.
+
+Configuration settings include:
+
+``CoverageCommand``
+  Command-line tool to perform software coverage analysis.
+  It will be executed in the location specified by the
+  ``BuildDirectory`` setting.
+
+  * `CTest Script`_ variable: :variable:`CTEST_COVERAGE_COMMAND`
+  * :module:`CTest` module variable: ``COVERAGE_COMMAND``
+
+``CoverageExtraFlags``
+  Specify command-line options to the ``CoverageCommand`` tool.
+
+  * `CTest Script`_ variable: :variable:`CTEST_COVERAGE_EXTRA_FLAGS`
+  * :module:`CTest` module variable: ``COVERAGE_EXTRA_FLAGS``
+
+  These options are the first arguments passed to ``CoverageCommand``.
+
+.. _`CTest MemCheck Step`:
+
+CTest MemCheck Step
+-------------------
+
+In a `CTest Script`_, the :command:`ctest_memcheck` command runs this step.
+Arguments to the command may specify some of the step settings.
+
+Configuration settings include:
+
+``MemoryCheckCommand``
+  Command-line tool to perform dynamic analysis.  Test command lines
+  will be launched through this tool.
+
+  * `CTest Script`_ variable: :variable:`CTEST_MEMORYCHECK_COMMAND`
+  * :module:`CTest` module variable: ``MEMORYCHECK_COMMAND``
+
+``MemoryCheckCommandOptions``
+  Specify command-line options to the ``MemoryCheckCommand`` tool.
+  They will be placed prior to the test command line.
+
+  * `CTest Script`_ variable: :variable:`CTEST_MEMORYCHECK_COMMAND_OPTIONS`
+  * :module:`CTest` module variable: ``MEMORYCHECK_COMMAND_OPTIONS``
+
+``MemoryCheckType``
+  Specify the type of memory checking to perform.
+
+  * `CTest Script`_ variable: :variable:`CTEST_MEMORYCHECK_TYPE`
+  * :module:`CTest` module variable: ``MEMORYCHECK_TYPE``
+
+``MemoryCheckSanitizerOptions``
+  Specify options to sanitizers when running with a sanitize-enabled build.
+
+  * `CTest Script`_ variable: :variable:`CTEST_MEMORYCHECK_SANITIZER_OPTIONS`
+  * :module:`CTest` module variable: ``MEMORYCHECK_SANITIZER_OPTIONS``
+
+``MemoryCheckSuppressionFile``
+  Specify a file containing suppression rules for the
+  ``MemoryCheckCommand`` tool.  It will be passed with options
+  appropriate to the tool.
+
+  * `CTest Script`_ variable: :variable:`CTEST_MEMORYCHECK_SUPPRESSIONS_FILE`
+  * :module:`CTest` module variable: ``MEMORYCHECK_SUPPRESSIONS_FILE``
+
+Additional configuration settings include:
+
+``BoundsCheckerCommand``
+  Specify a ``MemoryCheckCommand`` that is known to be command-line
+  compatible with Bounds Checker.
+
+  * `CTest Script`_ variable: none
+  * :module:`CTest` module variable: none
+
+``PurifyCommand``
+  Specify a ``MemoryCheckCommand`` that is known to be command-line
+  compatible with Purify.
+
+  * `CTest Script`_ variable: none
+  * :module:`CTest` module variable: ``PURIFYCOMMAND``
+
+``ValgrindCommand``
+  Specify a ``MemoryCheckCommand`` that is known to be command-line
+  compatible with Valgrind.
+
+  * `CTest Script`_ variable: none
+  * :module:`CTest` module variable: ``VALGRIND_COMMAND``
+
+``ValgrindCommandOptions``
+  Specify command-line options to the ``ValgrindCommand`` tool.
+  They will be placed prior to the test command line.
+
+  * `CTest Script`_ variable: none
+  * :module:`CTest` module variable: ``VALGRIND_COMMAND_OPTIONS``
+
+``DrMemoryCommand``
+  Specify a ``MemoryCheckCommand`` that is known to be a command-line
+  compatible with DrMemory.
+
+  * `CTest Script`_ variable: none
+  * :module:`CTest` module variable: ``DRMEMORY_COMMAND``
+
+``DrMemoryCommandOptions``
+  Specify command-line options to the ``DrMemoryCommand`` tool.
+  They will be placed prior to the test command line.
+
+  * `CTest Script`_ variable: none
+  * :module:`CTest` module variable: ``DRMEMORY_COMMAND_OPTIONS``
+
+``CudaSanitizerCommand``
+  Specify a ``MemoryCheckCommand`` that is known to be a command-line
+  compatible with cuda-memcheck or compute-sanitizer.
+
+  * `CTest Script`_ variable: none
+  * :module:`CTest` module variable: ``CUDA_SANITIZER_COMMAND``
+
+``CudaSanitizerCommandOptions``
+  Specify command-line options to the ``CudaSanitizerCommand`` tool.
+  They will be placed prior to the test command line.
+
+  * `CTest Script`_ variable: none
+  * :module:`CTest` module variable: ``CUDA_SANITIZER_COMMAND_OPTIONS``
+
+.. _`CTest Submit Step`:
+
+CTest Submit Step
+-----------------
+
+In a `CTest Script`_, the :command:`ctest_submit` command runs this step.
+Arguments to the command may specify some of the step settings.
+
+Configuration settings include:
+
+``BuildName``
+  Describe the dashboard client platform with a short string.
+  (Operating system, compiler, etc.)
+
+  * `CTest Script`_ variable: :variable:`CTEST_BUILD_NAME`
+  * :module:`CTest` module variable: ``BUILDNAME``
+
+``CDashVersion``
+  Legacy option.  Not used.
+
+  * `CTest Script`_ variable: none, detected from server
+  * :module:`CTest` module variable: ``CTEST_CDASH_VERSION``
+
+``CTestSubmitRetryCount``
+  Specify a number of attempts to retry submission on network failure.
+
+  * `CTest Script`_ variable: none,
+    use the :command:`ctest_submit` ``RETRY_COUNT`` option.
+  * :module:`CTest` module variable: ``CTEST_SUBMIT_RETRY_COUNT``
+
+``CTestSubmitRetryDelay``
+  Specify a delay before retrying submission on network failure.
+
+  * `CTest Script`_ variable: none,
+    use the :command:`ctest_submit` ``RETRY_DELAY`` option.
+  * :module:`CTest` module variable: ``CTEST_SUBMIT_RETRY_DELAY``
+
+``CurlOptions``
+  Specify a semicolon-separated list of options to control the
+  Curl library that CTest uses internally to connect to the
+  server.  Possible options are ``CURLOPT_SSL_VERIFYPEER_OFF``
+  and ``CURLOPT_SSL_VERIFYHOST_OFF``.
+
+  * `CTest Script`_ variable: :variable:`CTEST_CURL_OPTIONS`
+  * :module:`CTest` module variable: ``CTEST_CURL_OPTIONS``
+
+``DropLocation``
+  Legacy option.  When ``SubmitURL`` is not set, it is constructed from
+  ``DropMethod``, ``DropSiteUser``, ``DropSitePassword``, ``DropSite``, and
+  ``DropLocation``.
+
+  * `CTest Script`_ variable: :variable:`CTEST_DROP_LOCATION`
+  * :module:`CTest` module variable: ``DROP_LOCATION`` if set,
+    else ``CTEST_DROP_LOCATION``
+
+``DropMethod``
+  Legacy option.  When ``SubmitURL`` is not set, it is constructed from
+  ``DropMethod``, ``DropSiteUser``, ``DropSitePassword``, ``DropSite``, and
+  ``DropLocation``.
+
+  * `CTest Script`_ variable: :variable:`CTEST_DROP_METHOD`
+  * :module:`CTest` module variable: ``DROP_METHOD`` if set,
+    else ``CTEST_DROP_METHOD``
+
+``DropSite``
+  Legacy option.  When ``SubmitURL`` is not set, it is constructed from
+  ``DropMethod``, ``DropSiteUser``, ``DropSitePassword``, ``DropSite``, and
+  ``DropLocation``.
+
+  * `CTest Script`_ variable: :variable:`CTEST_DROP_SITE`
+  * :module:`CTest` module variable: ``DROP_SITE`` if set,
+    else ``CTEST_DROP_SITE``
+
+``DropSitePassword``
+  Legacy option.  When ``SubmitURL`` is not set, it is constructed from
+  ``DropMethod``, ``DropSiteUser``, ``DropSitePassword``, ``DropSite``, and
+  ``DropLocation``.
+
+  * `CTest Script`_ variable: :variable:`CTEST_DROP_SITE_PASSWORD`
+  * :module:`CTest` module variable: ``DROP_SITE_PASSWORD`` if set,
+    else ``CTEST_DROP_SITE_PASWORD``
+
+``DropSiteUser``
+  Legacy option.  When ``SubmitURL`` is not set, it is constructed from
+  ``DropMethod``, ``DropSiteUser``, ``DropSitePassword``, ``DropSite``, and
+  ``DropLocation``.
+
+  * `CTest Script`_ variable: :variable:`CTEST_DROP_SITE_USER`
+  * :module:`CTest` module variable: ``DROP_SITE_USER`` if set,
+    else ``CTEST_DROP_SITE_USER``
+
+``IsCDash``
+  Legacy option.  Not used.
+
+  * `CTest Script`_ variable: :variable:`CTEST_DROP_SITE_CDASH`
+  * :module:`CTest` module variable: ``CTEST_DROP_SITE_CDASH``
+
+``ScpCommand``
+  Legacy option.  Not used.
+
+  * `CTest Script`_ variable: :variable:`CTEST_SCP_COMMAND`
+  * :module:`CTest` module variable: ``SCPCOMMAND``
+
+``Site``
+  Describe the dashboard client host site with a short string.
+  (Hostname, domain, etc.)
+
+  * `CTest Script`_ variable: :variable:`CTEST_SITE`
+  * :module:`CTest` module variable: ``SITE``,
+    initialized by the :command:`site_name` command
+
+``SubmitURL``
+  The ``http`` or ``https`` URL of the dashboard server to send the submission
+  to.
+
+  * `CTest Script`_ variable: :variable:`CTEST_SUBMIT_URL`
+  * :module:`CTest` module variable: ``SUBMIT_URL`` if set,
+    else ``CTEST_SUBMIT_URL``
+
+``TriggerSite``
+  Legacy option.  Not used.
+
+  * `CTest Script`_ variable: :variable:`CTEST_TRIGGER_SITE`
+  * :module:`CTest` module variable: ``TRIGGER_SITE`` if set,
+    else ``CTEST_TRIGGER_SITE``
+
+.. _`Show as JSON Object Model`:
+
+Show as JSON Object Model
+=========================
+
+When the ``--show-only=json-v1`` command line option is given, the test
+information is output in JSON format.  Version 1.0 of the JSON object
+model is defined as follows:
+
+``kind``
+  The string "ctestInfo".
+
+``version``
+  A JSON object specifying the version components.  Its members are
+
+  ``major``
+    A non-negative integer specifying the major version component.
+  ``minor``
+    A non-negative integer specifying the minor version component.
+
+``backtraceGraph``
+    JSON object representing backtrace information with the
+    following members:
+
+    ``commands``
+      List of command names.
+    ``files``
+      List of file names.
+    ``nodes``
+      List of node JSON objects with members:
+
+      ``command``
+        Index into the ``commands`` member of the ``backtraceGraph``.
+      ``file``
+        Index into the ``files`` member of the ``backtraceGraph``.
+      ``line``
+        Line number in the file where the backtrace was added.
+      ``parent``
+        Index into the ``nodes`` member of the ``backtraceGraph``
+        representing the parent in the graph.
+
+``tests``
+  A JSON array listing information about each test.  Each entry
+  is a JSON object with members:
+
+  ``name``
+    Test name.
+  ``config``
+    Configuration that the test can run on.
+    Empty string means any config.
+  ``command``
+    List where the first element is the test command and the
+    remaining elements are the command arguments.
+  ``backtrace``
+    Index into the ``nodes`` member of the ``backtraceGraph``.
+  ``properties``
+    Test properties.
+    Can contain keys for each of the supported test properties.
+
+.. _`ctest-resource-allocation`:
+
+Resource Allocation
+===================
+
+CTest provides a mechanism for tests to specify the resources that they need
+in a fine-grained way, and for users to specify the resources available on
+the running machine. This allows CTest to internally keep track of which
+resources are in use and which are free, scheduling tests in a way that
+prevents them from trying to claim resources that are not available.
+
+When the resource allocation feature is used, CTest will not oversubscribe
+resources. For example, if a resource has 8 slots, CTest will not run tests
+that collectively use more than 8 slots at a time. This has the effect of
+limiting how many tests can run at any given time, even if a high ``-j``
+argument is used, if those tests all use some slots from the same resource.
+In addition, it means that a single test that uses more of a resource than is
+available on a machine will not run at all (and will be reported as
+``Not Run``).
+
+A common use case for this feature is for tests that require the use of a GPU.
+Multiple tests can simultaneously allocate memory from a GPU, but if too many
+tests try to do this at once, some of them will fail to allocate, resulting in
+a failed test, even though the test would have succeeded if it had the memory
+it needed. By using the resource allocation feature, each test can specify how
+much memory it requires from a GPU, allowing CTest to schedule tests in a way
+that running several of these tests at once does not exhaust the GPU's memory
+pool.
+
+Please note that CTest has no concept of what a GPU is or how much memory it
+has, nor does it have any way of communicating with a GPU to retrieve this
+information or perform any memory management. CTest simply keeps track of a
+list of abstract resource types, each of which has a certain number of slots
+available for tests to use. Each test specifies the number of slots that it
+requires from a certain resource, and CTest then schedules them in a way that
+prevents the total number of slots in use from exceeding the listed capacity.
+When a test is executed, and slots from a resource are allocated to that test,
+tests may assume that they have exclusive use of those slots for the duration
+of the test's process.
+
+The CTest resource allocation feature consists of two inputs:
+
+* The :ref:`resource specification file <ctest-resource-specification-file>`,
+  described below, which describes the resources available on the system.
+* The :prop_test:`RESOURCE_GROUPS` property of tests, which describes the
+  resources required by the test.
+
+When CTest runs a test, the resources allocated to that test are passed in the
+form of a set of
+:ref:`environment variables <ctest-resource-environment-variables>` as
+described below. Using this information to decide which resource to connect to
+is left to the test writer.
+
+The ``RESOURCE_GROUPS`` property tells CTest what resources a test expects
+to use grouped in a way meaningful to the test.  The test itself must read
+the :ref:`environment variables <ctest-resource-environment-variables>` to
+determine which resources have been allocated to each group.  For example,
+each group may correspond to a process the test will spawn when executed.
+
+Note that even if a test specifies a ``RESOURCE_GROUPS`` property, it is still
+possible for that to test to run without any resource allocation (and without
+the corresponding
+:ref:`environment variables <ctest-resource-environment-variables>`)
+if the user does not pass a resource specification file. Passing this file,
+either through the ``--resource-spec-file`` command-line argument or the
+``RESOURCE_SPEC_FILE`` argument to :command:`ctest_test`, is what activates the
+resource allocation feature. Tests should check the
+``CTEST_RESOURCE_GROUP_COUNT`` environment variable to find out whether or not
+resource allocation is activated. This variable will always (and only) be
+defined if resource allocation is activated. If resource allocation is not
+activated, then the ``CTEST_RESOURCE_GROUP_COUNT`` variable will not exist,
+even if it exists for the parent ``ctest`` process. If a test absolutely must
+have resource allocation, then it can return a failing exit code or use the
+:prop_test:`SKIP_RETURN_CODE` or :prop_test:`SKIP_REGULAR_EXPRESSION`
+properties to indicate a skipped test.
+
+.. _`ctest-resource-specification-file`:
+
+Resource Specification File
+---------------------------
+
+The resource specification file is a JSON file which is passed to CTest, either
+on the :manual:`ctest(1)` command line as ``--resource-spec-file``, or as the
+``RESOURCE_SPEC_FILE`` argument of :command:`ctest_test`. If a dashboard script
+is used and ``RESOURCE_SPEC_FILE`` is not specified, the value of
+:variable:`CTEST_RESOURCE_SPEC_FILE` in the dashboard script is used instead.
+If ``--resource-spec-file``, ``RESOURCE_SPEC_FILE``, and
+:variable:`CTEST_RESOURCE_SPEC_FILE` in the dashboard script are not specified,
+the value of :variable:`CTEST_RESOURCE_SPEC_FILE` in the CMake build is used
+instead. If none of these are specified, no resource spec file is used.
+
+The resource specification file must be a JSON object. All examples in this
+document assume the following resource specification file:
+
+.. code-block:: json
+
+  {
+    "version": {
+      "major": 1,
+      "minor": 0
+    },
+    "local": [
+      {
+        "gpus": [
+          {
+            "id": "0",
+            "slots": 2
+          },
+          {
+            "id": "1",
+            "slots": 4
+          },
+          {
+            "id": "2",
+            "slots": 2
+          },
+          {
+            "id": "3"
+          }
+        ],
+        "crypto_chips": [
+          {
+            "id": "card0",
+            "slots": 4
+          }
+        ]
+      }
+    ]
+  }
+
+The members are:
+
+``version``
+  An object containing a ``major`` integer field and a ``minor`` integer field.
+  Currently, the only supported version is major ``1``, minor ``0``. Any other
+  value is an error.
+
+``local``
+  A JSON array of resource sets present on the system.  Currently, this array
+  is restricted to being of size 1.
+
+  Each array element is a JSON object with members whose names are equal to the
+  desired resource types, such as ``gpus``. These names must start with a
+  lowercase letter or an underscore, and subsequent characters can be a
+  lowercase letter, a digit, or an underscore. Uppercase letters are not
+  allowed, because certain platforms have case-insensitive environment
+  variables. See the `Environment Variables`_ section below for
+  more information. It is recommended that the resource type name be the plural
+  of a noun, such as ``gpus`` or ``crypto_chips`` (and not ``gpu`` or
+  ``crypto_chip``.)
+
+  Please note that the names ``gpus`` and ``crypto_chips`` are just examples,
+  and CTest does not interpret them in any way. You are free to make up any
+  resource type you want to meet your own requirements.
+
+  The value for each resource type is a JSON array consisting of JSON objects,
+  each of which describe a specific instance of the specified resource. These
+  objects have the following members:
+
+  ``id``
+    A string consisting of an identifier for the resource. Each character in
+    the identifier can be a lowercase letter, a digit, or an underscore.
+    Uppercase letters are not allowed.
+
+    Identifiers must be unique within a resource type. However, they do not
+    have to be unique across resource types. For example, it is valid to have a
+    ``gpus`` resource named ``0`` and a ``crypto_chips`` resource named ``0``,
+    but not two ``gpus`` resources both named ``0``.
+
+    Please note that the IDs ``0``, ``1``, ``2``, ``3``, and ``card0`` are just
+    examples, and CTest does not interpret them in any way. You are free to
+    make up any IDs you want to meet your own requirements.
+
+  ``slots``
+    An optional unsigned number specifying the number of slots available on the
+    resource. For example, this could be megabytes of RAM on a GPU, or
+    cryptography units available on a cryptography chip. If ``slots`` is not
+    specified, a default value of ``1`` is assumed.
+
+In the example file above, there are four GPUs with ID's 0 through 3. GPU 0 has
+2 slots, GPU 1 has 4, GPU 2 has 2, and GPU 3 has a default of 1 slot. There is
+also one cryptography chip with 4 slots.
+
+``RESOURCE_GROUPS`` Property
+----------------------------
+
+See :prop_test:`RESOURCE_GROUPS` for a description of this property.
+
+.. _`ctest-resource-environment-variables`:
+
+Environment Variables
+---------------------
+
+Once CTest has decided which resources to allocate to a test, it passes this
+information to the test executable as a series of environment variables. For
+each example below, we will assume that the test in question has a
+:prop_test:`RESOURCE_GROUPS` property of
+``2,gpus:2;gpus:4,gpus:1,crypto_chips:2``.
+
+The following variables are passed to the test process:
+
+.. envvar:: CTEST_RESOURCE_GROUP_COUNT
+
+  The total number of groups specified by the :prop_test:`RESOURCE_GROUPS`
+  property. For example:
+
+  * ``CTEST_RESOURCE_GROUP_COUNT=3``
+
+  This variable will only be defined if :manual:`ctest(1)` has been given a
+  ``--resource-spec-file``, or if :command:`ctest_test` has been given a
+  ``RESOURCE_SPEC_FILE``. If no resource specification file has been given,
+  this variable will not be defined.
+
+.. envvar:: CTEST_RESOURCE_GROUP_<num>
+
+  The list of resource types allocated to each group, with each item
+  separated by a comma. ``<num>`` is a number from zero to
+  ``CTEST_RESOURCE_GROUP_COUNT`` minus one. ``CTEST_RESOURCE_GROUP_<num>``
+  is defined for each ``<num>`` in this range. For example:
+
+  * ``CTEST_RESOURCE_GROUP_0=gpus``
+  * ``CTEST_RESOURCE_GROUP_1=gpus``
+  * ``CTEST_RESOURCE_GROUP_2=crypto_chips,gpus``
+
+.. envvar:: CTEST_RESOURCE_GROUP_<num>_<resource-type>
+
+  The list of resource IDs and number of slots from each ID allocated to each
+  group for a given resource type. This variable consists of a series of
+  pairs, each pair separated by a semicolon, and with the two items in the pair
+  separated by a comma. The first item in each pair is ``id:`` followed by the
+  ID of a resource of type ``<resource-type>``, and the second item is
+  ``slots:`` followed by the number of slots from that resource allocated to
+  the given group. For example:
+
+  * ``CTEST_RESOURCE_GROUP_0_GPUS=id:0,slots:2``
+  * ``CTEST_RESOURCE_GROUP_1_GPUS=id:2,slots:2``
+  * ``CTEST_RESOURCE_GROUP_2_GPUS=id:1,slots:4;id:3,slots:1``
+  * ``CTEST_RESOURCE_GROUP_2_CRYPTO_CHIPS=id:card0,slots:2``
+
+  In this example, group 0 gets 2 slots from GPU ``0``, group 1 gets 2 slots
+  from GPU ``2``, and group 2 gets 4 slots from GPU ``1``, 1 slot from GPU
+  ``3``, and 2 slots from cryptography chip ``card0``.
+
+  ``<num>`` is a number from zero to ``CTEST_RESOURCE_GROUP_COUNT`` minus one.
+  ``<resource-type>`` is the name of a resource type, converted to uppercase.
+  ``CTEST_RESOURCE_GROUP_<num>_<resource-type>`` is defined for the product
+  of each ``<num>`` in the range listed above and each resource type listed in
+  ``CTEST_RESOURCE_GROUP_<num>``.
+
+  Because some platforms have case-insensitive names for environment variables,
+  the names of resource types may not clash in a case-insensitive environment.
+  Because of this, for the sake of simplicity, all resource types must be
+  listed in all lowercase in the
+  :ref:`resource specification file <ctest-resource-specification-file>` and
+  in the :prop_test:`RESOURCE_GROUPS` property, and they are converted to all
+  uppercase in the ``CTEST_RESOURCE_GROUP_<num>_<resource-type>`` environment
+  variable.
+
+See Also
+========
+
+.. include:: LINKS.txt
+
+_`CDash`: https://cdash.org
diff --git a/share/cmake-3.22/Help/manual/presets/example.json b/share/cmake-3.22/Help/manual/presets/example.json
new file mode 100644
index 0000000..b08445a
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/presets/example.json
@@ -0,0 +1,70 @@
+{
+  "version": 3,
+  "cmakeMinimumRequired": {
+    "major": 3,
+    "minor": 21,
+    "patch": 0
+  },
+  "configurePresets": [
+    {
+      "name": "default",
+      "displayName": "Default Config",
+      "description": "Default build using Ninja generator",
+      "generator": "Ninja",
+      "binaryDir": "${sourceDir}/build/default",
+      "cacheVariables": {
+        "FIRST_CACHE_VARIABLE": {
+          "type": "BOOL",
+          "value": "OFF"
+        },
+        "SECOND_CACHE_VARIABLE": "ON"
+      },
+      "environment": {
+        "MY_ENVIRONMENT_VARIABLE": "Test",
+        "PATH": "$env{HOME}/ninja/bin:$penv{PATH}"
+      },
+      "vendor": {
+        "example.com/ExampleIDE/1.0": {
+          "autoFormat": true
+        }
+      }
+    },
+    {
+      "name": "ninja-multi",
+      "inherits": "default",
+      "displayName": "Ninja Multi-Config",
+      "description": "Default build using Ninja Multi-Config generator",
+      "generator": "Ninja Multi-Config"
+    },
+    {
+      "name": "windows-only",
+      "inherits": "default",
+      "displayName": "Windows-only configuration",
+      "description": "This build is only available on Windows",
+      "condition": {
+        "type": "equals",
+        "lhs": "${hostSystemName}",
+        "rhs": "Windows"
+      }
+    }
+  ],
+  "buildPresets": [
+    {
+      "name": "default",
+      "configurePreset": "default"
+    }
+  ],
+  "testPresets": [
+    {
+      "name": "default",
+      "configurePreset": "default",
+      "output": {"outputOnFailure": true},
+      "execution": {"noTestsAction": "error", "stopOnFailure": true}
+    }
+  ],
+  "vendor": {
+    "example.com/ExampleIDE/1.0": {
+      "autoFormat": false
+    }
+  }
+}
diff --git a/share/cmake-3.22/Help/manual/presets/schema.json b/share/cmake-3.22/Help/manual/presets/schema.json
new file mode 100644
index 0000000..7852550
--- /dev/null
+++ b/share/cmake-3.22/Help/manual/presets/schema.json
@@ -0,0 +1,1240 @@
+{
+  "$schema": "http://json-schema.org/draft-07/schema#",
+  "type": "object",
+  "description": "The presets specify the generator and the build directory, and optionally a list of variables and other arguments to pass to CMake.",
+  "oneOf": [
+    {
+      "properties": {
+        "version": {
+          "const": 1,
+          "description": "A required integer representing the version of the JSON schema."
+        },
+        "cmakeMinimumRequired": { "$ref": "#/definitions/cmakeMinimumRequired"},
+        "vendor": { "$ref": "#/definitions/vendor" },
+        "configurePresets": { "$ref": "#/definitions/configurePresetsV1"}
+      },
+      "additionalProperties": false
+    },
+    {
+      "properties": {
+        "version": {
+          "const": 2,
+          "description": "A required integer representing the version of the JSON schema."
+        },
+        "cmakeMinimumRequired": { "$ref": "#/definitions/cmakeMinimumRequired"},
+        "vendor": { "$ref": "#/definitions/vendor" },
+        "configurePresets": { "$ref": "#/definitions/configurePresetsV1"},
+        "buildPresets": { "$ref": "#/definitions/buildPresetsV2"},
+        "testPresets": { "$ref": "#/definitions/testPresetsV2"}
+      },
+      "additionalProperties": false
+    },
+    {
+      "properties": {
+        "version": {
+          "const": 3,
+          "description": "A required integer representing the version of the JSON schema."
+        },
+        "cmakeMinimumRequired": { "$ref": "#/definitions/cmakeMinimumRequired"},
+        "vendor": { "$ref": "#/definitions/vendor" },
+        "configurePresets": { "$ref": "#/definitions/configurePresetsV3"},
+        "buildPresets": { "$ref": "#/definitions/buildPresetsV3"},
+        "testPresets": { "$ref": "#/definitions/testPresetsV3"}
+      },
+      "additionalProperties": false
+    }
+  ],
+  "required": [
+    "version"
+  ],
+  "definitions": {
+    "cmakeMinimumRequired": {
+      "type": "object",
+      "description": "An optional object representing the minimum version of CMake needed to build this project.",
+      "properties": {
+        "major": {
+          "type": "integer",
+          "description": "An optional integer representing the major version."
+        },
+        "minor": {
+          "type": "integer",
+          "description": "An optional integer representing the minor version."
+        },
+        "patch": {
+          "type": "integer",
+          "description": "An optional integer representing the patch version."
+        }
+      },
+      "additionalProperties": false
+    },
+    "vendor": {
+      "type": "object",
+      "description": "An optional map containing vendor-specific information. CMake does not interpret the contents of this field except to verify that it is a map if it does exist. However, the keys should be a vendor-specific domain name followed by a /-separated path. For example, the Example IDE 1.0 could use example.com/ExampleIDE/1.0. The value of each field can be anything desired by the vendor, though will typically be a map.",
+      "properties": {}
+    },
+    "configurePresetsItemsV3": {
+      "type": "array",
+      "description": "A configure preset object.",
+      "items": {
+        "type": "object",
+        "description": "A configure preset object.",
+        "properties": {
+          "binaryDir": {
+            "type": "string",
+            "description": "An optional string representing the path to the output binary directory. This field supports macro expansion. If a relative path is specified, it is calculated relative to the source directory. If binaryDir is not specified, the path is calculated using regular methods."
+          },
+          "generator": {
+            "type": "string",
+            "description": "An optional string representing the generator to use for the preset. If generator is not specified, the normal generator discovery procedure is used. Note that for Visual Studio generators, unlike in the command line -G argument, you cannot include the platform name in the generator name. Use the architecture field instead."
+          },
+          "toolchainFile": {
+            "type": "string",
+            "description": "An optional string representing the path to the toolchain file. This field supports macro expansion. If a relative path is specified, it is calculated relative to the build directory, and if not found, relative to the source directory."
+          },
+          "installDir": {
+            "type": "string",
+            "description": "An optional string representing the path to the installation directory. This field supports macro expansion. If a relative path is specified, it is calculated relative to the source directory."
+          },
+          "condition": { "$ref": "#/definitions/topCondition" }
+        }
+      }
+    },
+    "configurePresetsItemsV1": {
+      "type": "array",
+      "description": "An optional array of configure preset objects.",
+      "items": {
+        "type": "object",
+        "description": "A configure preset object.",
+        "properties": {
+          "name": {
+            "type": "string",
+            "description": "A required string representing the machine-friendly name of the preset. This identifier is used in the --preset argument. There must not be two presets in the union of CMakePresets.json and CMakeUserPresets.json in the same directory with the same name.",
+            "minLength": 1
+          },
+          "hidden": {
+            "type": "boolean",
+            "description": "An optional boolean specifying whether or not a preset should be hidden. If a preset is hidden, it cannot be used in the --preset= argument, will not show up in the CMake GUI, and does not have to have a valid generator or binaryDir, even from inheritance. Hidden presets are intended to be used as a base for other presets to inherit via the inherits field."
+          },
+          "inherits": {
+            "anyOf": [
+              {
+                "type": "string",
+                "description": "An optional string representing the name of the preset to inherit from.",
+                "minLength": 1
+              },
+              {
+                "type": "array",
+                "description": "An optional array of strings representing the names of presets to inherit from. The preset will inherit all of the fields from the inherits presets by default (except name, hidden, inherits, description, and displayName), but can override them as desired. If multiple inherits presets provide conflicting values for the same field, the earlier preset in the inherits list will be preferred. Presets in CMakePresets.json must not inherit from presets in CMakeUserPresets.json.",
+                "items": {
+                  "type": "string",
+                  "description": "An optional string representing the name of the preset to inherit from.",
+                  "minLength": 1
+                }
+              }
+            ]
+          },
+          "vendor": {
+            "type": "object",
+            "description": "An optional map containing vendor-specific information. CMake does not interpret the contents of this field except to verify that it is a map if it does exist. However, it should follow the same conventions as the root-level vendor field. If vendors use their own per-preset vendor field, they should implement inheritance in a sensible manner when appropriate.",
+            "properties": {}
+          },
+          "displayName": {
+            "type": "string",
+            "description": "An optional string with a human-friendly name of the preset."
+          },
+          "description": {
+            "type": "string",
+            "description": "An optional string with a human-friendly description of the preset."
+          },
+          "generator": {
+            "type": "string",
+            "description": "An optional string representing the generator to use for the preset. If generator is not specified, it must be inherited from the inherits preset (unless this preset is hidden). Note that for Visual Studio generators, unlike in the command line -G argument, you cannot include the platform name in the generator name. Use the architecture field instead."
+          },
+          "architecture": {
+            "anyOf": [
+              {
+                "type": "string",
+                "description": "An optional string representing the platform for generators that support it."
+              },
+              {
+                "type": "object",
+                "description": "An optional object representing the platform for generators that support it.",
+                "properties": {
+                  "value": {
+                    "type": "string",
+                    "description": "An optional string representing the value."
+                  },
+                  "strategy": {
+                    "type": "string",
+                    "description": "An optional string telling CMake how to handle the field. Valid values are: \"set\" Set the respective value. This will result in an error for generators that do not support the respective field. \"external\" Do not set the value, even if the generator supports it. This is useful if, for example, a preset uses the Ninja generator, and an IDE knows how to set up the Visual C++ environment from the architecture and toolset fields. In that case, CMake will ignore the field, but the IDE can use them to set up the environment before invoking CMake.",
+                    "enum": [
+                      "set",
+                      "external"
+                    ]
+                  }
+                },
+                "additionalProperties": false
+              }
+            ]
+          },
+          "toolset": {
+            "anyOf": [
+              {
+                "type": "string",
+                "description": "An optional string representing the toolset for generators that support it."
+              },
+              {
+                "type": "object",
+                "description": "An optional object representing the toolset for generators that support it.",
+                "properties": {
+                  "value": {
+                    "type": "string",
+                    "description": "An optional string representing the value."
+                  },
+                  "strategy": {
+                    "type": "string",
+                    "description": "An optional string telling CMake how to handle the field. Valid values are: \"set\" Set the respective value. This will result in an error for generators that do not support the respective field. \"external\" Do not set the value, even if the generator supports it. This is useful if, for example, a preset uses the Ninja generator, and an IDE knows how to set up the Visual C++ environment from the architecture and toolset fields. In that case, CMake will ignore the field, but the IDE can use them to set up the environment before invoking CMake.",
+                    "enum": [
+                      "set",
+                      "external"
+                    ]
+                  }
+                },
+                "additionalProperties": false
+              }
+            ]
+          },
+          "binaryDir": {
+            "type": "string",
+            "description": "An optional string representing the path to the output binary directory. This field supports macro expansion. If a relative path is specified, it is calculated relative to the source directory. If binaryDir is not specified, it must be inherited from the inherits preset (unless this preset is hidden)."
+          },
+          "cmakeExecutable": {
+            "type": "string",
+            "description": "An optional string representing the path to the CMake executable to use for this preset. This is reserved for use by IDEs, and is not used by CMake itself. IDEs that use this field should expand any macros in it."
+          },
+          "cacheVariables": {
+            "type": "object",
+            "description": "An optional map of cache variables. The key is the variable name (which must not be an empty string). Cache variables are inherited through the inherits field, and the preset's variables will be the union of its own cacheVariables and the cacheVariables from all its parents. If multiple presets in this union define the same variable, the standard rules of inherits are applied.",
+            "properties": {},
+            "additionalProperties": {
+              "anyOf": [
+                {
+                  "type": "null",
+                  "description": "Setting a variable to null causes it to not be set, even if a value was inherited from another preset."
+                },
+                {
+                  "type": "boolean",
+                  "description": "A boolean representing the value of the variable. Equivalent to \"TRUE\" or \"FALSE\"."
+                },
+                {
+                  "type": "string",
+                  "description": "A string representing the value of the variable (which supports macro expansion)."
+                },
+                {
+                  "type": "object",
+                  "description": "An object representing the type and value of the variable.",
+                  "properties": {
+                    "type": {
+                      "type": "string",
+                      "description": "An optional string representing the type of the variable. It should be BOOL, FILEPATH, PATH, STRING, or INTERNAL."
+                    },
+                    "value": {
+                      "anyOf": [
+                        {
+                          "type": "boolean",
+                          "description": "A required boolean representing the value of the variable. Equivalent to \"TRUE\" or \"FALSE\"."
+                        },
+                        {
+                          "type": "string",
+                          "description": "A required string representing the value of the variable. This field supports macro expansion."
+                        }
+                      ]
+                    }
+                  },
+                  "required": [
+                    "value"
+                  ],
+                  "additionalProperties": false
+                }
+              ]
+            },
+            "propertyNames": {
+              "pattern": "^.+$"
+            }
+          },
+          "environment": {
+            "type": "object",
+            "description": "An optional map of environment variables. The key is the variable name (which must not be an empty string). Each variable is set regardless of whether or not a value was given to it by the process's environment. This field supports macro expansion, and environment variables in this map may reference each other, and may be listed in any order, as long as such references do not cause a cycle (for example,if ENV_1 is $env{ENV_2}, ENV_2 may not be $env{ENV_1}.) Environment variables are inherited through the inherits field, and the preset's environment will be the union of its own environment and the environment from all its parents. If multiple presets in this union define the same variable, the standard rules of inherits are applied. Setting a variable to null causes it to not be set, even if a value was inherited from another preset.",
+            "properties": {},
+            "additionalProperties": {
+              "anyOf": [
+                {
+                  "type": "null",
+                  "description": "Setting a variable to null causes it to not be set, even if a value was inherited from another preset."
+                },
+                {
+                  "type": "string",
+                  "description": "A string representing the value of the variable."
+                }
+              ]
+            },
+            "propertyNames": {
+              "pattern": "^.+$"
+            }
+          },
+          "warnings": {
+            "type": "object",
+            "description": "An optional object specifying warnings.",
+            "properties": {
+              "dev": {
+                "type": "boolean",
+                "description": "An optional boolean. Equivalent to passing -Wdev or -Wno-dev on the command line. This may not be set to false if errors.dev is set to true."
+              },
+              "deprecated": {
+                "type": "boolean",
+                "description": "An optional boolean. Equivalent to passing -Wdeprecated or -Wno-deprecated on the command line. This may not be set to false if errors.deprecated is set to true."
+              },
+              "uninitialized": {
+                "type": "boolean",
+                "description": "An optional boolean. Setting this to true is equivalent to passing --warn-uninitialized on the command line."
+              },
+              "unusedCli": {
+                "type": "boolean",
+                "description": "An optional boolean. Setting this to false is equivalent to passing --no-warn-unused-cli on the command line."
+              },
+              "systemVars": {
+                "type": "boolean",
+                "description": "An optional boolean. Setting this to true is equivalent to passing --check-system-vars on the command line."
+              }
+            },
+            "additionalProperties": false
+          },
+          "errors": {
+            "type": "object",
+            "description": "An optional object specifying errors.",
+            "properties": {
+              "dev": {
+                "type": "boolean",
+                "description": "An optional boolean. Equivalent to passing -Werror=dev or -Wno-error=dev on the command line. This may not be set to true if warnings.dev is set to false."
+              },
+              "deprecated": {
+                "type": "boolean",
+                "description": "An optional boolean. Equivalent to passing -Werror=deprecated or -Wno-error=deprecated on the command line. This may not be set to true if warnings.deprecated is set to false."
+              }
+            },
+            "additionalProperties": false
+          },
+          "debug": {
+            "type": "object",
+            "description": "An optional object specifying debug options.",
+            "properties": {
+              "output": {
+                "type": "boolean",
+                "description": "An optional boolean. Setting this to true is equivalent to passing --debug-output on the command line."
+              },
+              "tryCompile": {
+                "type": "boolean",
+                "description": "An optional boolean. Setting this to true is equivalent to passing --debug-trycompile on the command line."
+              },
+              "find": {
+                "type": "boolean",
+                "description": "An optional boolean. Setting this to true is equivalent to passing --debug-find on the command line."
+              }
+            },
+            "additionalProperties": false
+          }
+        }
+      }
+    },
+    "configurePresetsV3": {
+      "type": "array",
+      "description": "An optional array of configure preset objects.",
+      "allOf": [
+        { "$ref": "#/definitions/configurePresetsItemsV1" },
+        { "$ref": "#/definitions/configurePresetsItemsV3" }
+      ],
+      "items": {
+        "properties": {
+          "name": {},
+          "hidden": {},
+          "inherits": {},
+          "vendor": {},
+          "displayName": {},
+          "description": {},
+          "generator": {},
+          "architecture": {},
+          "toolset": {},
+          "toolchainFile": {},
+          "binaryDir": {},
+          "installDir": {},
+          "cmakeExecutable": {},
+          "cacheVariables": {},
+          "environment": {},
+          "warnings": {},
+          "errors": {},
+          "debug": {},
+          "condition": {}
+        },
+        "required": [
+          "name"
+        ],
+        "additionalProperties": false
+      }
+    },
+    "configurePresetsV1": {
+      "type": "array",
+      "description": "An optional array of configure preset objects.",
+      "allOf": [
+        { "$ref": "#/definitions/configurePresetsItemsV1" }
+      ],
+      "items": {
+        "properties": {
+          "name": {},
+          "hidden": {},
+          "inherits": {},
+          "vendor": {},
+          "displayName": {},
+          "description": {},
+          "generator": {},
+          "architecture": {},
+          "toolset": {},
+          "binaryDir": {},
+          "cmakeExecutable": {},
+          "cacheVariables": {},
+          "environment": {},
+          "warnings": {},
+          "errors": {},
+          "debug": {}
+        },
+        "required": [
+          "name"
+        ],
+        "additionalProperties": false
+      }
+    },
+    "buildPresetsItemsV3": {
+      "type": "array",
+      "description": "An optional array of build preset objects. Used to specify arguments to cmake --build. Available in version 2 and higher.",
+      "items": {
+        "type": "object",
+        "properties": {
+          "condition": { "$ref": "#/definitions/topCondition" }
+        }
+      }
+    },
+    "buildPresetsItemsV2": {
+      "type": "array",
+      "description": "An optional array of build preset objects. Used to specify arguments to cmake --build. Available in version 2 and higher.",
+      "items": {
+        "type": "object",
+        "properties": {
+          "name": {
+            "type": "string",
+            "description": "A required string representing the machine-friendly name of the preset. This identifier is used in the --preset argument. There must not be two presets (configure, build, or test) in the union of CMakePresets.json and CMakeUserPresets.json in the same directory with the same name.",
+            "minLength": 1
+          },
+          "hidden": {
+            "type": "boolean",
+            "description": "An optional boolean specifying whether or not a preset should be hidden. If a preset is hidden, it cannot be used in the --preset argument, will not show up in the CMake GUI, and does not have to have a valid configurePreset, even from inheritance. Hidden presets are intended to be used as a base for other presets to inherit via the inherits field."
+          },
+          "inherits": {
+            "anyOf": [
+              {
+                "type": "string",
+                "description": "An optional string representing the name of the build preset to inherit from.",
+                "minLength": 1
+              },
+              {
+                "type": "array",
+                "description": "An optional array of strings representing the names of build presets to inherit from. The preset will inherit all of the fields from the inherits presets by default (except name, hidden, inherits, description, and displayName), but can override them as desired. If multiple inherits presets provide conflicting values for the same field, the earlier preset in the inherits list will be preferred. Presets in CMakePresets.json must not inherit from presets in CMakeUserPresets.json.",
+                "items": {
+                  "type": "string",
+                  "description": "An optional string representing the name of the preset to inherit from.",
+                  "minLength": 1
+                }
+              }
+            ]
+          },
+          "configurePreset": {
+            "type": "string",
+            "description": "An optional string specifying the name of a configure preset to associate with this build preset. If configurePreset is not specified, it must be inherited from the inherits preset (unless this preset is hidden). The build tree directory is inferred from the configure preset.",
+            "minLength": 1
+          },
+          "vendor": {
+            "type": "object",
+            "description": "An optional map containing vendor-specific information. CMake does not interpret the contents of this field except to verify that it is a map if it does exist. However, it should follow the same conventions as the root-level vendor field. If vendors use their own per-preset vendor field, they should implement inheritance in a sensible manner when appropriate.",
+            "properties": {}
+          },
+          "displayName": {
+            "type": "string",
+            "description": "An optional string with a human-friendly name of the preset."
+          },
+          "description": {
+            "type": "string",
+            "description": "An optional string with a human-friendly description of the preset."
+          },
+          "inheritConfigureEnvironment": {
+            "type": "boolean",
+            "description": "An optional boolean that defaults to true. If true, the environment variables from the associated configure preset are inherited after all inherited build preset environments, but before environment variables explicitly specified in this build preset."
+          },
+          "environment": {
+            "type": "object",
+            "description": "An optional map of environment variables. The key is the variable name (which must not be an empty string). Each variable is set regardless of whether or not a value was given to it by the process's environment. This field supports macro expansion, and environment variables in this map may reference each other, and may be listed in any order, as long as such references do not cause a cycle (for example,if ENV_1 is $env{ENV_2}, ENV_2 may not be $env{ENV_1}.) Environment variables are inherited through the inherits field, and the preset's environment will be the union of its own environment and the environment from all its parents. If multiple presets in this union define the same variable, the standard rules of inherits are applied. Setting a variable to null causes it to not be set, even if a value was inherited from another preset.",
+            "properties": {},
+            "additionalProperties": {
+              "anyOf": [
+                {
+                  "type": "null",
+                  "description": "Setting a variable to null causes it to not be set, even if a value was inherited from another preset."
+                },
+                {
+                  "type": "string",
+                  "description": "A string representing the value of the variable."
+                }
+              ]
+            },
+            "propertyNames": {
+              "pattern": "^.+$"
+            }
+          },
+          "jobs": {
+            "type": "integer",
+            "description": "An optional integer. Equivalent to passing --parallel or -j on the command line."
+          },
+          "targets": {
+            "anyOf": [
+              {
+                "type": "string",
+                "description": "An optional string. Equivalent to passing --target or -t on the command line. Vendors may ignore the targets property or hide build presets that explicitly specify targets."
+              },
+              {
+                "type": "array",
+                "description": "An optional array of strings. Equivalent to passing --target or -t on the command line. Vendors may ignore the targets property or hide build presets that explicitly specify targets.",
+                "items": {
+                  "type": "string",
+                  "description": "An optional string. Equivalent to passing --target or -t on the command line. Vendors may ignore the targets property or hide build presets that explicitly specify targets."
+                }
+              }
+            ]
+          },
+          "configuration": {
+            "type": "string",
+            "description": "An optional string. Equivalent to passing --config on the command line."
+          },
+          "cleanFirst": {
+            "type": "boolean",
+            "description": "An optional boolean. If true, equivalent to passing --clean-first on the command line."
+          },
+          "verbose": {
+            "type": "boolean",
+            "description": "An optional boolean. If true, equivalent to passing --verbose on the command line."
+          },
+          "nativeToolOptions": {
+            "type": "array",
+            "description": "An optional array of strings. Equivalent to passing options after -- on the command line.",
+            "items": {
+              "type": "string",
+              "description": "An optional string representing an option to pass after -- on the command line."
+            }
+          }
+        },
+        "required": [
+          "name"
+        ]
+      }
+    },
+    "buildPresetsV3": {
+      "type": "array",
+      "description": "An optional array of build preset objects. Used to specify arguments to cmake --build. Available in version 2 and higher.",
+      "allOf": [
+        { "$ref": "#/definitions/buildPresetsItemsV3" },
+        { "$ref": "#/definitions/buildPresetsItemsV2" }
+      ],
+      "items": {
+        "type": "object",
+        "properties": {
+          "name": {},
+          "hidden": {},
+          "inherits": {},
+          "configurePreset": {},
+          "vendor": {},
+          "displayName": {},
+          "description": {},
+          "inheritConfigureEnvironment": {},
+          "environment": {},
+          "jobs": {},
+          "targets": {},
+          "configuration": {},
+          "cleanFirst": {},
+          "verbose": {},
+          "nativeToolOptions": {},
+          "condition": {}
+        },
+        "required": [
+          "name"
+        ],
+        "additionalProperties": false
+      }
+    },
+    "buildPresetsV2": {
+      "type": "array",
+      "description": "An optional array of build preset objects. Used to specify arguments to cmake --build. Available in version 2 and higher.",
+      "allOf": [
+        { "$ref": "#/definitions/buildPresetsItemsV2" }
+      ],
+      "items": {
+        "type": "object",
+        "properties": {
+          "name": {},
+          "hidden": {},
+          "inherits": {},
+          "configurePreset": {},
+          "vendor": {},
+          "displayName": {},
+          "description": {},
+          "inheritConfigureEnvironment": {},
+          "environment": {},
+          "jobs": {},
+          "targets": {},
+          "configuration": {},
+          "cleanFirst": {},
+          "verbose": {},
+          "nativeToolOptions": {}
+        },
+        "required": [
+          "name"
+        ],
+        "additionalProperties": false
+      }
+    },
+    "testPresetsItemsV3": {
+      "type": "array",
+      "description": "An optional array of test preset objects. Used to specify arguments to ctest. Available in version 2 and higher.",
+      "items": {
+        "type": "object",
+        "properties": {
+          "condition": { "$ref": "#/definitions/topCondition" }
+        }
+      }
+    },
+    "testPresetsItemsV2": {
+      "type": "array",
+      "description": "An optional array of test preset objects. Used to specify arguments to ctest. Available in version 2 and higher.",
+      "items": {
+        "type": "object",
+        "properties": {
+          "name": {
+            "type": "string",
+            "description": "A required string representing the machine-friendly name of the preset. This identifier is used in the --preset argument. There must not be two presets (configure, build, or test) in the union of CMakePresets.json and CMakeUserPresets.json in the same directory with the same name.",
+            "minLength": 1
+          },
+          "hidden": {
+            "type": "boolean",
+            "description": "An optional boolean specifying whether or not a preset should be hidden. If a preset is hidden, it cannot be used in the --preset argument, will not show up in the CMake GUI, and does not have to have a valid configurePreset, even from inheritance. Hidden presets are intended to be used as a base for other presets to inherit via the inherits field."
+          },
+          "inherits": {
+            "anyOf": [
+              {
+                "type": "string",
+                "description": "An optional string representing the name of the test preset to inherit from.",
+                "minLength": 1
+              },
+              {
+                "type": "array",
+                "description": "An optional array of strings representing the names of test presets to inherit from. The preset will inherit all of the fields from the inherits presets by default (except name, hidden, inherits, description, and displayName), but can override them as desired. If multiple inherits presets provide conflicting values for the same field, the earlier preset in the inherits list will be preferred. Presets in CMakePresets.json must not inherit from presets in CMakeUserPresets.json.",
+                "items": {
+                  "type": "string",
+                  "description": "An optional string representing the name of the preset to inherit from.",
+                  "minLength": 1
+                }
+              }
+            ]
+          },
+          "configurePreset": {
+            "type": "string",
+            "description": "An optional string specifying the name of a configure preset to associate with this test preset. If configurePreset is not specified, it must be inherited from the inherits preset (unless this preset is hidden). The build tree directory is inferred from the configure preset.",
+            "minLength": 1
+          },
+          "vendor": {
+            "type": "object",
+            "description": "An optional map containing vendor-specific information. CMake does not interpret the contents of this field except to verify that it is a map if it does exist. However, it should follow the same conventions as the root-level vendor field. If vendors use their own per-preset vendor field, they should implement inheritance in a sensible manner when appropriate.",
+            "properties": {}
+          },
+          "displayName": {
+            "type": "string",
+            "description": "An optional string with a human-friendly name of the preset."
+          },
+          "description": {
+            "type": "string",
+            "description": "An optional string with a human-friendly description of the preset."
+          },
+          "inheritConfigureEnvironment": {
+            "type": "boolean",
+            "description": "An optional boolean that defaults to true. If true, the environment variables from the associated configure preset are inherited after all inherited test preset environments, but before environment variables explicitly specified in this test preset."
+          },
+          "environment": {
+            "type": "object",
+            "description": "An optional map of environment variables. The key is the variable name (which must not be an empty string). Each variable is set regardless of whether or not a value was given to it by the process's environment. This field supports macro expansion, and environment variables in this map may reference each other, and may be listed in any order, as long as such references do not cause a cycle (for example,if ENV_1 is $env{ENV_2}, ENV_2 may not be $env{ENV_1}.) Environment variables are inherited through the inherits field, and the preset's environment will be the union of its own environment and the environment from all its parents. If multiple presets in this union define the same variable, the standard rules of inherits are applied. Setting a variable to null causes it to not be set, even if a value was inherited from another preset.",
+            "properties": {},
+            "additionalProperties": {
+              "anyOf": [
+                {
+                  "type": "null",
+                  "description": "Setting a variable to null causes it to not be set, even if a value was inherited from another preset."
+                },
+                {
+                  "type": "string",
+                  "description": "A string representing the value of the variable."
+                }
+              ]
+            },
+            "propertyNames": {
+              "pattern": "^.+$"
+            }
+          },
+          "configuration": {
+            "type": "string",
+            "description": "An optional string. Equivalent to passing --build-config on the command line."
+          },
+          "overwriteConfigurationFile": {
+            "type": "array",
+            "description": "An optional array of configuration options to overwrite options specified in the CTest configuration file. Equivalent to passing ``--overwrite`` for each value in the array.",
+            "items": {
+              "type": "string",
+              "description": "An option written as a key-value pair in the form \"key=value\"."
+            }
+          },
+          "output": {
+            "type": "object",
+            "description": "An optional object specifying output options.",
+            "properties": {
+              "shortProgress": {
+                "type": "boolean",
+                "description": "An optional boolean. If true, equivalent to passing --progress on the command line."
+              },
+              "verbosity": {
+                "type": "string",
+                "description": "An optional string specifying verbosity level. Valid values are \"default\" (equivalent to passing no verbosity flags on the command line), \"verbose\" (equivalent to passing --verbose on the command line), and \"extra\" (equivalent to passing --extra-verbose on the command line).",
+                "enum": [
+                  "default", "verbose", "extra"
+                ]
+              },
+              "debug": {
+                "type": "boolean",
+                "description": "An optional boolean. If true, equivalent to passing --debug on the command line."
+              },
+              "outputOnFailure": {
+                "type": "boolean",
+                "description": "An optional boolean. If true, equivalent to passing --output-on-failure on the command line."
+              },
+              "quiet": {
+                "type": "boolean",
+                "description": "An optional boolean. If true, equivalent to passing --quiet on the command line."
+              },
+              "outputLogFile": {
+                "type": "string",
+                "description": "An optional string specifying a path to a log file. Equivalent to passing --output-log on the command line."
+              },
+              "labelSummary": {
+                "type": "boolean",
+                "description": "An optional boolean. If false, equivalent to passing --no-label-summary on the command line."
+              },
+              "subprojectSummary": {
+                "type": "boolean",
+                "description": "An optional boolean. If false, equivalent to passing --no-subproject-summary on the command line."
+              },
+              "maxPassedTestOutputSize": {
+                "type": "integer",
+                "description": "An optional integer specifying the maximum output for passed tests in bytes. Equivalent to passing --test-output-size-passed on the command line."
+              },
+              "maxFailedTestOutputSize": {
+                "type": "integer",
+                "description": "An optional integer specifying the maximum output for failed tests in bytes. Equivalent to passing --test-output-size-failed on the command line."
+              },
+              "maxTestNameWidth": {
+                "type": "integer",
+                "description": "An optional integer specifying the maximum width of a test name to output. Equivalent to passing --max-width on the command line."
+              }
+            },
+            "additionalProperties": false
+          },
+          "filter": {
+            "type": "object",
+            "description": "An optional object specifying how to filter the tests to run.",
+            "properties": {
+              "include": {
+                "type": "object",
+                "description": "An optional object specifying which tests to include.",
+                "properties": {
+                  "name": {
+                    "type": "string",
+                    "description": "An optional string specifying a regex for test names. Equivalent to passing --tests-regex on the command line."
+                  },
+                  "label": {
+                    "type": "string",
+                    "description": "An optional string specifying a regex for test labels. Equivalent to passing --label-regex on the command line."
+                  },
+                  "index": {
+                    "anyOf": [
+                      {
+                        "type": "object",
+                        "description": "An optional object specifying tests to include by test index.",
+                        "properties": {
+                          "start": {
+                            "type": "integer",
+                            "description": "An optional integer specifying a test index to start testing at."
+                          },
+                          "end": {
+                            "type": "integer",
+                            "description": "An optional integer specifying a test index to stop testing at."
+                          },
+                          "stride": {
+                            "type": "integer",
+                            "description": "An optional integer specifying the increment."
+                          },
+                          "specificTests": {
+                            "type": "array",
+                            "description": "An optional array of integers specifying specific test indices to run.",
+                            "items": {
+                              "type": "integer",
+                              "description": "An integer specifying the test to run by index."
+                            }
+                          }
+                        },
+                        "additionalProperties": false
+                      },
+                      {
+                        "type": "string",
+                        "description": "An optional string specifying a file with the command line syntax for --tests-information."
+                      }
+                    ]
+                  },
+                  "useUnion": {
+                    "type": "boolean",
+                    "description": "An optional boolean. Equivalent to passing --union on the command line."
+                  }
+                },
+                "additionalProperties": false
+              },
+              "exclude": {
+                "type": "object",
+                "description": "An optional object specifying which tests to exclude.",
+                "properties": {
+                  "name": {
+                    "type": "string",
+                    "description": "An optional string specifying a regex for test names. Equivalent to passing --exclude-regex on the command line."
+                  },
+                  "label": {
+                    "type": "string",
+                    "description": "An optional string specifying a regex for test labels. Equivalent to passing --label-exclude on the command line."
+                  },
+                  "fixtures": {
+                    "type": "object",
+                    "description": "An optional object specifying which fixtures to exclude from adding tests.",
+                    "properties": {
+                      "any": {
+                        "type": "string",
+                        "description": "An optional string specifying a regex for text fixtures to exclude from adding any tests. Equivalent to --fixture-exclude-any on the command line."
+                      },
+                      "setup": {
+                        "type": "string",
+                        "description": "An optional string specifying a regex for text fixtures to exclude from adding setup tests. Equivalent to --fixture-exclude-setup on the command line."
+                      },
+                      "cleanup": {
+                        "type": "string",
+                        "description": "An optional string specifying a regex for text fixtures to exclude from adding cleanup tests. Equivalent to --fixture-exclude-cleanup on the command line."
+                      }
+                    },
+                    "additionalProperties": false
+                  }
+                }
+              }
+            },
+            "additionalProperties": false
+          },
+          "execution": {
+            "type": "object",
+            "description": "An optional object specifying options for test execution.",
+            "properties": {
+              "stopOnFailure": {
+                "type": "boolean",
+                "description": "An optional boolean. If true, equivalent to passing --stop-on-failure on the command line."
+              },
+              "enableFailover": {
+                "type": "boolean",
+                "description": "An optional boolean. If true, equivalent to passing -F on the command line."
+              },
+              "jobs": {
+                "type": "integer",
+                "description": "An optional integer. Equivalent to passing --parallel on the command line."
+              },
+              "resourceSpecFile": {
+                "type": "string",
+                "description": "An optional string. Equivalent to passing --resource-spec-file on the command line."
+              },
+              "testLoad": {
+                "type": "integer",
+                "description": "An optional integer. Equivalent to passing --test-load on the command line."
+              },
+              "showOnly": {
+                "type": "string",
+                "description": "An optional string. Equivalent to passing --show-only on the command line. Value must be \"human\" or \"json-v1\".",
+                "enum": [
+                  "human", "json-v1"
+                ]
+              },
+              "repeat": {
+                "type": "object",
+                "description": "An optional object specifying how to repeat tests. Equivalent to passing --repeat on the command line.",
+                "properties": {
+                  "mode": {
+                    "type": "string",
+                    "description": "A required string. Must be one of the following values: \"until-fail\", \"until-pass\", or \"after-timeout\".",
+                    "enum": [
+                      "until-fail", "until-pass", "after-timeout"
+                    ]
+                  },
+                  "count": {
+                    "type": "integer",
+                    "description": "A required integer."
+                  }
+                },
+                "required": [
+                  "mode", "count"
+                ],
+                "additionalProperties": false
+              },
+              "interactiveDebugging": {
+                "type": "boolean",
+                "description": "An optional boolean. If true, equivalent to passing --interactive-debug-mode 1 on the command line. If false, equivalent to passing --interactive-debug-mode 0 on the command line."
+              },
+              "scheduleRandom": {
+                "type": "boolean",
+                "description": "An optional boolean. If true, equivalent to passing --schedule-random on the command line."
+              },
+              "timeout": {
+                "type": "integer",
+                "description": "An optional integer. Equivalent to passing --timeout on the command line."
+              },
+              "noTestsAction": {
+                "type": "string",
+                "description": "An optional string specifying the behavior if no tests are found. Must be one of the following values: \"default\" (equivalent to not passing any value on the command line), \"error\" (equivalent to passing --no-tests=error on the command line), or \"ignore\" (equivalent to passing --no-tests-ignore on the command line).",
+                "enum": [
+                  "default", "error", "ignore"
+                ]
+              }
+            },
+            "additionalProperties": false
+          }
+        },
+        "required": [
+          "name"
+        ]
+      }
+    },
+    "testPresetsV3": {
+      "type": "array",
+      "description": "An optional array of test preset objects. Used to specify arguments to ctest. Available in version 2 and higher.",
+      "allOf": [
+        { "$ref": "#/definitions/testPresetsItemsV2" },
+        { "$ref": "#/definitions/testPresetsItemsV3" }
+      ],
+      "items": {
+        "type": "object",
+        "properties": {
+          "name": {},
+          "hidden": {},
+          "inherits": {},
+          "configurePreset": {},
+          "vendor": {},
+          "displayName": {},
+          "description": {},
+          "inheritConfigureEnvironment": {},
+          "environment": {},
+          "configuration": {},
+          "overwriteConfigurationFile": {},
+          "output": {},
+          "filter": {},
+          "execution": {},
+          "condition": {}
+        },
+        "required": [
+          "name"
+        ],
+        "additionalProperties": false
+      }
+    },
+    "testPresetsV2": {
+      "type": "array",
+      "description": "An optional array of test preset objects. Used to specify arguments to ctest. Available in version 2 and higher.",
+      "allOf": [
+        { "$ref": "#/definitions/testPresetsItemsV2" }
+      ],
+      "items": {
+        "type": "object",
+        "properties": {
+          "name": {},
+          "hidden": {},
+          "inherits": {},
+          "configurePreset": {},
+          "vendor": {},
+          "displayName": {},
+          "description": {},
+          "inheritConfigureEnvironment": {},
+          "environment": {},
+          "configuration": {},
+          "overwriteConfigurationFile": {},
+          "output": {},
+          "filter": {},
+          "execution": {}
+        },
+        "required": [
+          "name"
+        ],
+        "additionalProperties": false
+      }
+    },
+    "condition": {
+      "anyOf": [
+        {
+          "type": "boolean",
+          "description": "A boolean which provides a constant value for the condition's evaluation."
+        },
+        {
+          "type": "object",
+          "properties": {
+            "type": {
+              "type": "string",
+              "description": "A required string specifying the type of the condition.",
+              "const": "const"
+            },
+            "value": {
+              "type": "boolean",
+              "description": "A required boolean which provides a constant value for the condition's evaluation."
+            }
+          },
+          "required": [
+            "type",
+            "value"
+          ],
+          "additionalProperties": false
+        },
+        {
+          "type": "object",
+          "properties": {
+            "type": {
+              "type": "string",
+              "description": "A required string specifying the type of the condition.",
+              "const": "equals"
+            },
+            "lhs": {
+              "type": "string",
+              "description": "First string to compare. This field supports macro expansion."
+            },
+            "rhs": {
+              "type": "string",
+              "description": "Second string to compare. This field supports macro expansion."
+            }
+          },
+          "required": [
+            "type",
+            "lhs",
+            "rhs"
+          ],
+          "additionalProperties": false
+        },
+        {
+          "type": "object",
+          "properties": {
+            "type": {
+              "type": "string",
+              "description": "A required string specifying the type of the condition.",
+              "const": "notEquals"
+            },
+            "lhs": {
+              "type": "string",
+              "description": "First string to compare. This field supports macro expansion."
+            },
+            "rhs": {
+              "type": "string",
+              "description": "Second string to compare. This field supports macro expansion."
+            }
+          },
+          "required": [
+            "type",
+            "lhs",
+            "rhs"
+          ],
+          "additionalProperties": false
+        },
+        {
+          "type": "object",
+          "properties": {
+            "type": {
+              "type": "string",
+              "description": "A required string specifying the type of the condition.",
+              "const": "inList"
+            },
+            "string": {
+              "type": "string",
+              "description": "A required string to search for. This field supports macro expansion."
+            },
+            "list": {
+              "type": "array",
+              "description": "A required list of strings to search. This field supports macro expansion, and uses short-circuit evaluation.",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "required": [
+            "type",
+            "string",
+            "list"
+          ],
+          "additionalProperties": false
+        },
+        {
+          "type": "object",
+          "properties": {
+            "type": {
+              "type": "string",
+              "description": "A required string specifying the type of the condition.",
+              "const": "notInList"
+            },
+            "string": {
+              "type": "string",
+              "description": "A required string to search for. This field supports macro expansion."
+            },
+            "list": {
+              "type": "array",
+              "description": "A required list of strings to search. This field supports macro expansion, and uses short-circuit evaluation.",
+              "items": {
+                "type": "string"
+              }
+            }
+          },
+          "required": [
+            "type",
+            "string",
+            "list"
+          ],
+          "additionalProperties": false
+        },
+        {
+          "type": "object",
+          "properties": {
+            "type": {
+              "type": "string",
+              "description": "A required string specifying the type of the condition.",
+              "const": "matches"
+            },
+            "string": {
+              "type": "string",
+              "description": "A required string to search. This field supports macro expansion."
+            },
+            "regex": {
+              "type": "string",
+              "description": "A required regular expression to search for. This field supports macro expansion."
+            }
+          },
+          "required": [
+            "type",
+            "string",
+            "regex"
+          ],
+          "additionalProperties": false
+        },
+        {
+          "type": "object",
+          "properties": {
+            "type": {
+              "type": "string",
+              "description": "A required string specifying the type of the condition.",
+              "const": "notMatches"
+            },
+            "string": {
+              "type": "string",
+              "description": "A required string to search. This field supports macro expansion."
+            },
+            "regex": {
+              "type": "string",
+              "description": "A required regular expression to search for. This field supports macro expansion."
+            }
+          },
+          "required": [
+            "type",
+            "string",
+            "regex"
+          ],
+          "additionalProperties": false
+        },
+        {
+          "type": "object",
+          "properties": {
+            "type": {
+              "type": "string",
+              "description": "A required string specifying the type of the condition.",
+              "const": "anyOf"
+            },
+            "conditions": {
+              "type": "array",
+              "description": "A required array of condition objects. These conditions use short-circuit evaluation.",
+              "items": { "$ref": "#/definitions/condition" }
+            }
+          },
+          "required": [
+            "type",
+            "conditions"
+          ],
+          "additionalProperties": false
+        },
+        {
+          "type": "object",
+          "properties": {
+            "type": {
+              "type": "string",
+              "description": "A required string specifying the type of the condition.",
+              "const": "allOf"
+            },
+            "conditions": {
+              "type": "array",
+              "description": "A required array of condition objects. These conditions use short-circuit evaluation.",
+              "items": { "$ref": "#/definitions/condition" }
+            }
+          },
+          "required": [
+            "type",
+            "conditions"
+          ],
+          "additionalProperties": false
+        },
+        {
+          "type": "object",
+          "properties": {
+            "type": {
+              "type": "string",
+              "description": "A required string specifying the type of the condition.",
+              "const": "not"
+            },
+            "condition": { "$ref": "#/definitions/condition" }
+          },
+          "required": [
+            "type",
+            "condition"
+          ],
+          "additionalProperties": false
+        }
+      ]
+    },
+    "topCondition": {
+      "anyOf": [
+        { "$ref": "#/definitions/condition" },
+        {
+          "type": "null",
+          "description": "Null indicates that the condition always evaluates to true and is not inherited."
+        }
+      ]
+    }
+  }
+}
diff --git a/share/cmake-3.18/Help/module/AddFileDependencies.rst b/share/cmake-3.22/Help/module/AddFileDependencies.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/AddFileDependencies.rst
rename to share/cmake-3.22/Help/module/AddFileDependencies.rst
diff --git a/share/cmake-3.18/Help/module/AndroidTestUtilities.rst b/share/cmake-3.22/Help/module/AndroidTestUtilities.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/AndroidTestUtilities.rst
rename to share/cmake-3.22/Help/module/AndroidTestUtilities.rst
diff --git a/share/cmake-3.18/Help/module/BundleUtilities.rst b/share/cmake-3.22/Help/module/BundleUtilities.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/BundleUtilities.rst
rename to share/cmake-3.22/Help/module/BundleUtilities.rst
diff --git a/share/cmake-3.18/Help/module/CMakeAddFortranSubdirectory.rst b/share/cmake-3.22/Help/module/CMakeAddFortranSubdirectory.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CMakeAddFortranSubdirectory.rst
rename to share/cmake-3.22/Help/module/CMakeAddFortranSubdirectory.rst
diff --git a/share/cmake-3.18/Help/module/CMakeBackwardCompatibilityCXX.rst b/share/cmake-3.22/Help/module/CMakeBackwardCompatibilityCXX.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CMakeBackwardCompatibilityCXX.rst
rename to share/cmake-3.22/Help/module/CMakeBackwardCompatibilityCXX.rst
diff --git a/share/cmake-3.18/Help/module/CMakeDependentOption.rst b/share/cmake-3.22/Help/module/CMakeDependentOption.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CMakeDependentOption.rst
rename to share/cmake-3.22/Help/module/CMakeDependentOption.rst
diff --git a/share/cmake-3.18/Help/module/CMakeDetermineVSServicePack.rst b/share/cmake-3.22/Help/module/CMakeDetermineVSServicePack.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CMakeDetermineVSServicePack.rst
rename to share/cmake-3.22/Help/module/CMakeDetermineVSServicePack.rst
diff --git a/share/cmake-3.18/Help/module/CMakeExpandImportedTargets.rst b/share/cmake-3.22/Help/module/CMakeExpandImportedTargets.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CMakeExpandImportedTargets.rst
rename to share/cmake-3.22/Help/module/CMakeExpandImportedTargets.rst
diff --git a/share/cmake-3.18/Help/module/CMakeFindDependencyMacro.rst b/share/cmake-3.22/Help/module/CMakeFindDependencyMacro.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CMakeFindDependencyMacro.rst
rename to share/cmake-3.22/Help/module/CMakeFindDependencyMacro.rst
diff --git a/share/cmake-3.18/Help/module/CMakeFindFrameworks.rst b/share/cmake-3.22/Help/module/CMakeFindFrameworks.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CMakeFindFrameworks.rst
rename to share/cmake-3.22/Help/module/CMakeFindFrameworks.rst
diff --git a/share/cmake-3.18/Help/module/CMakeFindPackageMode.rst b/share/cmake-3.22/Help/module/CMakeFindPackageMode.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CMakeFindPackageMode.rst
rename to share/cmake-3.22/Help/module/CMakeFindPackageMode.rst
diff --git a/share/cmake-3.18/Help/module/CMakeForceCompiler.rst b/share/cmake-3.22/Help/module/CMakeForceCompiler.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CMakeForceCompiler.rst
rename to share/cmake-3.22/Help/module/CMakeForceCompiler.rst
diff --git a/share/cmake-3.18/Help/module/CMakeGraphVizOptions.rst b/share/cmake-3.22/Help/module/CMakeGraphVizOptions.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CMakeGraphVizOptions.rst
rename to share/cmake-3.22/Help/module/CMakeGraphVizOptions.rst
diff --git a/share/cmake-3.18/Help/module/CMakePackageConfigHelpers.rst b/share/cmake-3.22/Help/module/CMakePackageConfigHelpers.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CMakePackageConfigHelpers.rst
rename to share/cmake-3.22/Help/module/CMakePackageConfigHelpers.rst
diff --git a/share/cmake-3.18/Help/module/CMakeParseArguments.rst b/share/cmake-3.22/Help/module/CMakeParseArguments.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CMakeParseArguments.rst
rename to share/cmake-3.22/Help/module/CMakeParseArguments.rst
diff --git a/share/cmake-3.18/Help/module/CMakePrintHelpers.rst b/share/cmake-3.22/Help/module/CMakePrintHelpers.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CMakePrintHelpers.rst
rename to share/cmake-3.22/Help/module/CMakePrintHelpers.rst
diff --git a/share/cmake-3.18/Help/module/CMakePrintSystemInformation.rst b/share/cmake-3.22/Help/module/CMakePrintSystemInformation.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CMakePrintSystemInformation.rst
rename to share/cmake-3.22/Help/module/CMakePrintSystemInformation.rst
diff --git a/share/cmake-3.18/Help/module/CMakePushCheckState.rst b/share/cmake-3.22/Help/module/CMakePushCheckState.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CMakePushCheckState.rst
rename to share/cmake-3.22/Help/module/CMakePushCheckState.rst
diff --git a/share/cmake-3.18/Help/module/CMakeVerifyManifest.rst b/share/cmake-3.22/Help/module/CMakeVerifyManifest.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CMakeVerifyManifest.rst
rename to share/cmake-3.22/Help/module/CMakeVerifyManifest.rst
diff --git a/share/cmake-3.18/Help/module/CPack.rst b/share/cmake-3.22/Help/module/CPack.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CPack.rst
rename to share/cmake-3.22/Help/module/CPack.rst
diff --git a/share/cmake-3.22/Help/module/CPackArchive.rst b/share/cmake-3.22/Help/module/CPackArchive.rst
new file mode 100644
index 0000000..f5d6da4
--- /dev/null
+++ b/share/cmake-3.22/Help/module/CPackArchive.rst
@@ -0,0 +1,6 @@
+CPackArchive
+------------
+
+.. versionadded:: 3.9
+
+The documentation for the CPack Archive generator has moved here: :cpack_gen:`CPack Archive Generator`
diff --git a/share/cmake-3.18/Help/module/CPackBundle.rst b/share/cmake-3.22/Help/module/CPackBundle.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CPackBundle.rst
rename to share/cmake-3.22/Help/module/CPackBundle.rst
diff --git a/share/cmake-3.18/Help/module/CPackComponent.rst b/share/cmake-3.22/Help/module/CPackComponent.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CPackComponent.rst
rename to share/cmake-3.22/Help/module/CPackComponent.rst
diff --git a/share/cmake-3.18/Help/module/CPackCygwin.rst b/share/cmake-3.22/Help/module/CPackCygwin.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CPackCygwin.rst
rename to share/cmake-3.22/Help/module/CPackCygwin.rst
diff --git a/share/cmake-3.18/Help/module/CPackDMG.rst b/share/cmake-3.22/Help/module/CPackDMG.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CPackDMG.rst
rename to share/cmake-3.22/Help/module/CPackDMG.rst
diff --git a/share/cmake-3.18/Help/module/CPackDeb.rst b/share/cmake-3.22/Help/module/CPackDeb.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CPackDeb.rst
rename to share/cmake-3.22/Help/module/CPackDeb.rst
diff --git a/share/cmake-3.22/Help/module/CPackFreeBSD.rst b/share/cmake-3.22/Help/module/CPackFreeBSD.rst
new file mode 100644
index 0000000..7ae6164
--- /dev/null
+++ b/share/cmake-3.22/Help/module/CPackFreeBSD.rst
@@ -0,0 +1,6 @@
+CPackFreeBSD
+------------
+
+.. versionadded:: 3.10
+
+The documentation for the CPack FreeBSD generator has moved here: :cpack_gen:`CPack FreeBSD Generator`
diff --git a/share/cmake-3.18/Help/module/CPackIFW.rst b/share/cmake-3.22/Help/module/CPackIFW.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CPackIFW.rst
rename to share/cmake-3.22/Help/module/CPackIFW.rst
diff --git a/share/cmake-3.18/Help/module/CPackIFWConfigureFile.rst b/share/cmake-3.22/Help/module/CPackIFWConfigureFile.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CPackIFWConfigureFile.rst
rename to share/cmake-3.22/Help/module/CPackIFWConfigureFile.rst
diff --git a/share/cmake-3.18/Help/module/CPackNSIS.rst b/share/cmake-3.22/Help/module/CPackNSIS.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CPackNSIS.rst
rename to share/cmake-3.22/Help/module/CPackNSIS.rst
diff --git a/share/cmake-3.22/Help/module/CPackNuGet.rst b/share/cmake-3.22/Help/module/CPackNuGet.rst
new file mode 100644
index 0000000..bbed7f9
--- /dev/null
+++ b/share/cmake-3.22/Help/module/CPackNuGet.rst
@@ -0,0 +1,6 @@
+CPackNuGet
+----------
+
+.. versionadded:: 3.12
+
+The documentation for the CPack NuGet generator has moved here: :cpack_gen:`CPack NuGet Generator`
diff --git a/share/cmake-3.18/Help/module/CPackPackageMaker.rst b/share/cmake-3.22/Help/module/CPackPackageMaker.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CPackPackageMaker.rst
rename to share/cmake-3.22/Help/module/CPackPackageMaker.rst
diff --git a/share/cmake-3.22/Help/module/CPackProductBuild.rst b/share/cmake-3.22/Help/module/CPackProductBuild.rst
new file mode 100644
index 0000000..e12cd32
--- /dev/null
+++ b/share/cmake-3.22/Help/module/CPackProductBuild.rst
@@ -0,0 +1,6 @@
+CPackProductBuild
+-----------------
+
+.. versionadded:: 3.7
+
+The documentation for the CPack productbuild generator has moved here: :cpack_gen:`CPack productbuild Generator`
diff --git a/share/cmake-3.18/Help/module/CPackRPM.rst b/share/cmake-3.22/Help/module/CPackRPM.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CPackRPM.rst
rename to share/cmake-3.22/Help/module/CPackRPM.rst
diff --git a/share/cmake-3.18/Help/module/CPackWIX.rst b/share/cmake-3.22/Help/module/CPackWIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CPackWIX.rst
rename to share/cmake-3.22/Help/module/CPackWIX.rst
diff --git a/share/cmake-3.18/Help/module/CSharpUtilities.rst b/share/cmake-3.22/Help/module/CSharpUtilities.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CSharpUtilities.rst
rename to share/cmake-3.22/Help/module/CSharpUtilities.rst
diff --git a/share/cmake-3.18/Help/module/CTest.rst b/share/cmake-3.22/Help/module/CTest.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CTest.rst
rename to share/cmake-3.22/Help/module/CTest.rst
diff --git a/share/cmake-3.18/Help/module/CTestCoverageCollectGCOV.rst b/share/cmake-3.22/Help/module/CTestCoverageCollectGCOV.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CTestCoverageCollectGCOV.rst
rename to share/cmake-3.22/Help/module/CTestCoverageCollectGCOV.rst
diff --git a/share/cmake-3.18/Help/module/CTestScriptMode.rst b/share/cmake-3.22/Help/module/CTestScriptMode.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CTestScriptMode.rst
rename to share/cmake-3.22/Help/module/CTestScriptMode.rst
diff --git a/share/cmake-3.18/Help/module/CTestUseLaunchers.rst b/share/cmake-3.22/Help/module/CTestUseLaunchers.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CTestUseLaunchers.rst
rename to share/cmake-3.22/Help/module/CTestUseLaunchers.rst
diff --git a/share/cmake-3.18/Help/module/CheckCCompilerFlag.rst b/share/cmake-3.22/Help/module/CheckCCompilerFlag.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckCCompilerFlag.rst
rename to share/cmake-3.22/Help/module/CheckCCompilerFlag.rst
diff --git a/share/cmake-3.18/Help/module/CheckCSourceCompiles.rst b/share/cmake-3.22/Help/module/CheckCSourceCompiles.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckCSourceCompiles.rst
rename to share/cmake-3.22/Help/module/CheckCSourceCompiles.rst
diff --git a/share/cmake-3.18/Help/module/CheckCSourceRuns.rst b/share/cmake-3.22/Help/module/CheckCSourceRuns.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckCSourceRuns.rst
rename to share/cmake-3.22/Help/module/CheckCSourceRuns.rst
diff --git a/share/cmake-3.18/Help/module/CheckCXXCompilerFlag.rst b/share/cmake-3.22/Help/module/CheckCXXCompilerFlag.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckCXXCompilerFlag.rst
rename to share/cmake-3.22/Help/module/CheckCXXCompilerFlag.rst
diff --git a/share/cmake-3.18/Help/module/CheckCXXSourceCompiles.rst b/share/cmake-3.22/Help/module/CheckCXXSourceCompiles.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckCXXSourceCompiles.rst
rename to share/cmake-3.22/Help/module/CheckCXXSourceCompiles.rst
diff --git a/share/cmake-3.18/Help/module/CheckCXXSourceRuns.rst b/share/cmake-3.22/Help/module/CheckCXXSourceRuns.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckCXXSourceRuns.rst
rename to share/cmake-3.22/Help/module/CheckCXXSourceRuns.rst
diff --git a/share/cmake-3.18/Help/module/CheckCXXSymbolExists.rst b/share/cmake-3.22/Help/module/CheckCXXSymbolExists.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckCXXSymbolExists.rst
rename to share/cmake-3.22/Help/module/CheckCXXSymbolExists.rst
diff --git a/share/cmake-3.22/Help/module/CheckCompilerFlag.rst b/share/cmake-3.22/Help/module/CheckCompilerFlag.rst
new file mode 100644
index 0000000..bcf19a8
--- /dev/null
+++ b/share/cmake-3.22/Help/module/CheckCompilerFlag.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/CheckCompilerFlag.cmake
diff --git a/share/cmake-3.18/Help/module/CheckFortranCompilerFlag.rst b/share/cmake-3.22/Help/module/CheckFortranCompilerFlag.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckFortranCompilerFlag.rst
rename to share/cmake-3.22/Help/module/CheckFortranCompilerFlag.rst
diff --git a/share/cmake-3.18/Help/module/CheckFortranFunctionExists.rst b/share/cmake-3.22/Help/module/CheckFortranFunctionExists.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckFortranFunctionExists.rst
rename to share/cmake-3.22/Help/module/CheckFortranFunctionExists.rst
diff --git a/share/cmake-3.18/Help/module/CheckFortranSourceCompiles.rst b/share/cmake-3.22/Help/module/CheckFortranSourceCompiles.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckFortranSourceCompiles.rst
rename to share/cmake-3.22/Help/module/CheckFortranSourceCompiles.rst
diff --git a/share/cmake-3.18/Help/module/CheckFortranSourceRuns.rst b/share/cmake-3.22/Help/module/CheckFortranSourceRuns.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckFortranSourceRuns.rst
rename to share/cmake-3.22/Help/module/CheckFortranSourceRuns.rst
diff --git a/share/cmake-3.18/Help/module/CheckFunctionExists.rst b/share/cmake-3.22/Help/module/CheckFunctionExists.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckFunctionExists.rst
rename to share/cmake-3.22/Help/module/CheckFunctionExists.rst
diff --git a/share/cmake-3.18/Help/module/CheckIPOSupported.rst b/share/cmake-3.22/Help/module/CheckIPOSupported.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckIPOSupported.rst
rename to share/cmake-3.22/Help/module/CheckIPOSupported.rst
diff --git a/share/cmake-3.18/Help/module/CheckIncludeFile.rst b/share/cmake-3.22/Help/module/CheckIncludeFile.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckIncludeFile.rst
rename to share/cmake-3.22/Help/module/CheckIncludeFile.rst
diff --git a/share/cmake-3.18/Help/module/CheckIncludeFileCXX.rst b/share/cmake-3.22/Help/module/CheckIncludeFileCXX.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckIncludeFileCXX.rst
rename to share/cmake-3.22/Help/module/CheckIncludeFileCXX.rst
diff --git a/share/cmake-3.18/Help/module/CheckIncludeFiles.rst b/share/cmake-3.22/Help/module/CheckIncludeFiles.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckIncludeFiles.rst
rename to share/cmake-3.22/Help/module/CheckIncludeFiles.rst
diff --git a/share/cmake-3.18/Help/module/CheckLanguage.rst b/share/cmake-3.22/Help/module/CheckLanguage.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckLanguage.rst
rename to share/cmake-3.22/Help/module/CheckLanguage.rst
diff --git a/share/cmake-3.18/Help/module/CheckLibraryExists.rst b/share/cmake-3.22/Help/module/CheckLibraryExists.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckLibraryExists.rst
rename to share/cmake-3.22/Help/module/CheckLibraryExists.rst
diff --git a/share/cmake-3.18/Help/module/CheckLinkerFlag.rst b/share/cmake-3.22/Help/module/CheckLinkerFlag.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckLinkerFlag.rst
rename to share/cmake-3.22/Help/module/CheckLinkerFlag.rst
diff --git a/share/cmake-3.18/Help/module/CheckOBJCCompilerFlag.rst b/share/cmake-3.22/Help/module/CheckOBJCCompilerFlag.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckOBJCCompilerFlag.rst
rename to share/cmake-3.22/Help/module/CheckOBJCCompilerFlag.rst
diff --git a/share/cmake-3.18/Help/module/CheckOBJCSourceCompiles.rst b/share/cmake-3.22/Help/module/CheckOBJCSourceCompiles.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckOBJCSourceCompiles.rst
rename to share/cmake-3.22/Help/module/CheckOBJCSourceCompiles.rst
diff --git a/share/cmake-3.18/Help/module/CheckOBJCSourceRuns.rst b/share/cmake-3.22/Help/module/CheckOBJCSourceRuns.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckOBJCSourceRuns.rst
rename to share/cmake-3.22/Help/module/CheckOBJCSourceRuns.rst
diff --git a/share/cmake-3.18/Help/module/CheckOBJCXXCompilerFlag.rst b/share/cmake-3.22/Help/module/CheckOBJCXXCompilerFlag.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckOBJCXXCompilerFlag.rst
rename to share/cmake-3.22/Help/module/CheckOBJCXXCompilerFlag.rst
diff --git a/share/cmake-3.18/Help/module/CheckOBJCXXSourceCompiles.rst b/share/cmake-3.22/Help/module/CheckOBJCXXSourceCompiles.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckOBJCXXSourceCompiles.rst
rename to share/cmake-3.22/Help/module/CheckOBJCXXSourceCompiles.rst
diff --git a/share/cmake-3.18/Help/module/CheckOBJCXXSourceRuns.rst b/share/cmake-3.22/Help/module/CheckOBJCXXSourceRuns.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckOBJCXXSourceRuns.rst
rename to share/cmake-3.22/Help/module/CheckOBJCXXSourceRuns.rst
diff --git a/share/cmake-3.18/Help/module/CheckPIESupported.rst b/share/cmake-3.22/Help/module/CheckPIESupported.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckPIESupported.rst
rename to share/cmake-3.22/Help/module/CheckPIESupported.rst
diff --git a/share/cmake-3.18/Help/module/CheckPrototypeDefinition.rst b/share/cmake-3.22/Help/module/CheckPrototypeDefinition.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckPrototypeDefinition.rst
rename to share/cmake-3.22/Help/module/CheckPrototypeDefinition.rst
diff --git a/share/cmake-3.22/Help/module/CheckSourceCompiles.rst b/share/cmake-3.22/Help/module/CheckSourceCompiles.rst
new file mode 100644
index 0000000..906db0a
--- /dev/null
+++ b/share/cmake-3.22/Help/module/CheckSourceCompiles.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/CheckSourceCompiles.cmake
diff --git a/share/cmake-3.22/Help/module/CheckSourceRuns.rst b/share/cmake-3.22/Help/module/CheckSourceRuns.rst
new file mode 100644
index 0000000..d469244
--- /dev/null
+++ b/share/cmake-3.22/Help/module/CheckSourceRuns.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/CheckSourceRuns.cmake
diff --git a/share/cmake-3.18/Help/module/CheckStructHasMember.rst b/share/cmake-3.22/Help/module/CheckStructHasMember.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckStructHasMember.rst
rename to share/cmake-3.22/Help/module/CheckStructHasMember.rst
diff --git a/share/cmake-3.18/Help/module/CheckSymbolExists.rst b/share/cmake-3.22/Help/module/CheckSymbolExists.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckSymbolExists.rst
rename to share/cmake-3.22/Help/module/CheckSymbolExists.rst
diff --git a/share/cmake-3.18/Help/module/CheckTypeSize.rst b/share/cmake-3.22/Help/module/CheckTypeSize.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckTypeSize.rst
rename to share/cmake-3.22/Help/module/CheckTypeSize.rst
diff --git a/share/cmake-3.18/Help/module/CheckVariableExists.rst b/share/cmake-3.22/Help/module/CheckVariableExists.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/CheckVariableExists.rst
rename to share/cmake-3.22/Help/module/CheckVariableExists.rst
diff --git a/share/cmake-3.18/Help/module/Dart.rst b/share/cmake-3.22/Help/module/Dart.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/Dart.rst
rename to share/cmake-3.22/Help/module/Dart.rst
diff --git a/share/cmake-3.18/Help/module/DeployQt4.rst b/share/cmake-3.22/Help/module/DeployQt4.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/DeployQt4.rst
rename to share/cmake-3.22/Help/module/DeployQt4.rst
diff --git a/share/cmake-3.18/Help/module/Documentation.rst b/share/cmake-3.22/Help/module/Documentation.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/Documentation.rst
rename to share/cmake-3.22/Help/module/Documentation.rst
diff --git a/share/cmake-3.18/Help/module/ExternalData.rst b/share/cmake-3.22/Help/module/ExternalData.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/ExternalData.rst
rename to share/cmake-3.22/Help/module/ExternalData.rst
diff --git a/share/cmake-3.18/Help/module/ExternalProject.rst b/share/cmake-3.22/Help/module/ExternalProject.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/ExternalProject.rst
rename to share/cmake-3.22/Help/module/ExternalProject.rst
diff --git a/share/cmake-3.18/Help/module/FeatureSummary.rst b/share/cmake-3.22/Help/module/FeatureSummary.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FeatureSummary.rst
rename to share/cmake-3.22/Help/module/FeatureSummary.rst
diff --git a/share/cmake-3.18/Help/module/FetchContent.rst b/share/cmake-3.22/Help/module/FetchContent.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FetchContent.rst
rename to share/cmake-3.22/Help/module/FetchContent.rst
diff --git a/share/cmake-3.18/Help/module/FindALSA.rst b/share/cmake-3.22/Help/module/FindALSA.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindALSA.rst
rename to share/cmake-3.22/Help/module/FindALSA.rst
diff --git a/share/cmake-3.18/Help/module/FindASPELL.rst b/share/cmake-3.22/Help/module/FindASPELL.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindASPELL.rst
rename to share/cmake-3.22/Help/module/FindASPELL.rst
diff --git a/share/cmake-3.18/Help/module/FindAVIFile.rst b/share/cmake-3.22/Help/module/FindAVIFile.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindAVIFile.rst
rename to share/cmake-3.22/Help/module/FindAVIFile.rst
diff --git a/share/cmake-3.18/Help/module/FindArmadillo.rst b/share/cmake-3.22/Help/module/FindArmadillo.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindArmadillo.rst
rename to share/cmake-3.22/Help/module/FindArmadillo.rst
diff --git a/share/cmake-3.18/Help/module/FindBISON.rst b/share/cmake-3.22/Help/module/FindBISON.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindBISON.rst
rename to share/cmake-3.22/Help/module/FindBISON.rst
diff --git a/share/cmake-3.18/Help/module/FindBLAS.rst b/share/cmake-3.22/Help/module/FindBLAS.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindBLAS.rst
rename to share/cmake-3.22/Help/module/FindBLAS.rst
diff --git a/share/cmake-3.18/Help/module/FindBZip2.rst b/share/cmake-3.22/Help/module/FindBZip2.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindBZip2.rst
rename to share/cmake-3.22/Help/module/FindBZip2.rst
diff --git a/share/cmake-3.18/Help/module/FindBacktrace.rst b/share/cmake-3.22/Help/module/FindBacktrace.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindBacktrace.rst
rename to share/cmake-3.22/Help/module/FindBacktrace.rst
diff --git a/share/cmake-3.18/Help/module/FindBoost.rst b/share/cmake-3.22/Help/module/FindBoost.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindBoost.rst
rename to share/cmake-3.22/Help/module/FindBoost.rst
diff --git a/share/cmake-3.18/Help/module/FindBullet.rst b/share/cmake-3.22/Help/module/FindBullet.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindBullet.rst
rename to share/cmake-3.22/Help/module/FindBullet.rst
diff --git a/share/cmake-3.18/Help/module/FindCABLE.rst b/share/cmake-3.22/Help/module/FindCABLE.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindCABLE.rst
rename to share/cmake-3.22/Help/module/FindCABLE.rst
diff --git a/share/cmake-3.18/Help/module/FindCUDA.rst b/share/cmake-3.22/Help/module/FindCUDA.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindCUDA.rst
rename to share/cmake-3.22/Help/module/FindCUDA.rst
diff --git a/share/cmake-3.18/Help/module/FindCUDAToolkit.rst b/share/cmake-3.22/Help/module/FindCUDAToolkit.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindCUDAToolkit.rst
rename to share/cmake-3.22/Help/module/FindCUDAToolkit.rst
diff --git a/share/cmake-3.18/Help/module/FindCURL.rst b/share/cmake-3.22/Help/module/FindCURL.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindCURL.rst
rename to share/cmake-3.22/Help/module/FindCURL.rst
diff --git a/share/cmake-3.18/Help/module/FindCVS.rst b/share/cmake-3.22/Help/module/FindCVS.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindCVS.rst
rename to share/cmake-3.22/Help/module/FindCVS.rst
diff --git a/share/cmake-3.18/Help/module/FindCoin3D.rst b/share/cmake-3.22/Help/module/FindCoin3D.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindCoin3D.rst
rename to share/cmake-3.22/Help/module/FindCoin3D.rst
diff --git a/share/cmake-3.18/Help/module/FindCups.rst b/share/cmake-3.22/Help/module/FindCups.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindCups.rst
rename to share/cmake-3.22/Help/module/FindCups.rst
diff --git a/share/cmake-3.18/Help/module/FindCurses.rst b/share/cmake-3.22/Help/module/FindCurses.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindCurses.rst
rename to share/cmake-3.22/Help/module/FindCurses.rst
diff --git a/share/cmake-3.18/Help/module/FindCxxTest.rst b/share/cmake-3.22/Help/module/FindCxxTest.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindCxxTest.rst
rename to share/cmake-3.22/Help/module/FindCxxTest.rst
diff --git a/share/cmake-3.18/Help/module/FindCygwin.rst b/share/cmake-3.22/Help/module/FindCygwin.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindCygwin.rst
rename to share/cmake-3.22/Help/module/FindCygwin.rst
diff --git a/share/cmake-3.18/Help/module/FindDCMTK.rst b/share/cmake-3.22/Help/module/FindDCMTK.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindDCMTK.rst
rename to share/cmake-3.22/Help/module/FindDCMTK.rst
diff --git a/share/cmake-3.18/Help/module/FindDart.rst b/share/cmake-3.22/Help/module/FindDart.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindDart.rst
rename to share/cmake-3.22/Help/module/FindDart.rst
diff --git a/share/cmake-3.18/Help/module/FindDevIL.rst b/share/cmake-3.22/Help/module/FindDevIL.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindDevIL.rst
rename to share/cmake-3.22/Help/module/FindDevIL.rst
diff --git a/share/cmake-3.18/Help/module/FindDoxygen.rst b/share/cmake-3.22/Help/module/FindDoxygen.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindDoxygen.rst
rename to share/cmake-3.22/Help/module/FindDoxygen.rst
diff --git a/share/cmake-3.18/Help/module/FindEXPAT.rst b/share/cmake-3.22/Help/module/FindEXPAT.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindEXPAT.rst
rename to share/cmake-3.22/Help/module/FindEXPAT.rst
diff --git a/share/cmake-3.18/Help/module/FindEnvModules.rst b/share/cmake-3.22/Help/module/FindEnvModules.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindEnvModules.rst
rename to share/cmake-3.22/Help/module/FindEnvModules.rst
diff --git a/share/cmake-3.18/Help/module/FindFLEX.rst b/share/cmake-3.22/Help/module/FindFLEX.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindFLEX.rst
rename to share/cmake-3.22/Help/module/FindFLEX.rst
diff --git a/share/cmake-3.18/Help/module/FindFLTK.rst b/share/cmake-3.22/Help/module/FindFLTK.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindFLTK.rst
rename to share/cmake-3.22/Help/module/FindFLTK.rst
diff --git a/share/cmake-3.18/Help/module/FindFLTK2.rst b/share/cmake-3.22/Help/module/FindFLTK2.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindFLTK2.rst
rename to share/cmake-3.22/Help/module/FindFLTK2.rst
diff --git a/share/cmake-3.18/Help/module/FindFontconfig.rst b/share/cmake-3.22/Help/module/FindFontconfig.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindFontconfig.rst
rename to share/cmake-3.22/Help/module/FindFontconfig.rst
diff --git a/share/cmake-3.18/Help/module/FindFreetype.rst b/share/cmake-3.22/Help/module/FindFreetype.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindFreetype.rst
rename to share/cmake-3.22/Help/module/FindFreetype.rst
diff --git a/share/cmake-3.18/Help/module/FindGCCXML.rst b/share/cmake-3.22/Help/module/FindGCCXML.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindGCCXML.rst
rename to share/cmake-3.22/Help/module/FindGCCXML.rst
diff --git a/share/cmake-3.18/Help/module/FindGDAL.rst b/share/cmake-3.22/Help/module/FindGDAL.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindGDAL.rst
rename to share/cmake-3.22/Help/module/FindGDAL.rst
diff --git a/share/cmake-3.18/Help/module/FindGIF.rst b/share/cmake-3.22/Help/module/FindGIF.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindGIF.rst
rename to share/cmake-3.22/Help/module/FindGIF.rst
diff --git a/share/cmake-3.18/Help/module/FindGLEW.rst b/share/cmake-3.22/Help/module/FindGLEW.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindGLEW.rst
rename to share/cmake-3.22/Help/module/FindGLEW.rst
diff --git a/share/cmake-3.18/Help/module/FindGLUT.rst b/share/cmake-3.22/Help/module/FindGLUT.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindGLUT.rst
rename to share/cmake-3.22/Help/module/FindGLUT.rst
diff --git a/share/cmake-3.18/Help/module/FindGSL.rst b/share/cmake-3.22/Help/module/FindGSL.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindGSL.rst
rename to share/cmake-3.22/Help/module/FindGSL.rst
diff --git a/share/cmake-3.18/Help/module/FindGTK.rst b/share/cmake-3.22/Help/module/FindGTK.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindGTK.rst
rename to share/cmake-3.22/Help/module/FindGTK.rst
diff --git a/share/cmake-3.18/Help/module/FindGTK2.rst b/share/cmake-3.22/Help/module/FindGTK2.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindGTK2.rst
rename to share/cmake-3.22/Help/module/FindGTK2.rst
diff --git a/share/cmake-3.18/Help/module/FindGTest.rst b/share/cmake-3.22/Help/module/FindGTest.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindGTest.rst
rename to share/cmake-3.22/Help/module/FindGTest.rst
diff --git a/share/cmake-3.18/Help/module/FindGettext.rst b/share/cmake-3.22/Help/module/FindGettext.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindGettext.rst
rename to share/cmake-3.22/Help/module/FindGettext.rst
diff --git a/share/cmake-3.18/Help/module/FindGit.rst b/share/cmake-3.22/Help/module/FindGit.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindGit.rst
rename to share/cmake-3.22/Help/module/FindGit.rst
diff --git a/share/cmake-3.18/Help/module/FindGnuTLS.rst b/share/cmake-3.22/Help/module/FindGnuTLS.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindGnuTLS.rst
rename to share/cmake-3.22/Help/module/FindGnuTLS.rst
diff --git a/share/cmake-3.18/Help/module/FindGnuplot.rst b/share/cmake-3.22/Help/module/FindGnuplot.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindGnuplot.rst
rename to share/cmake-3.22/Help/module/FindGnuplot.rst
diff --git a/share/cmake-3.18/Help/module/FindHDF5.rst b/share/cmake-3.22/Help/module/FindHDF5.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindHDF5.rst
rename to share/cmake-3.22/Help/module/FindHDF5.rst
diff --git a/share/cmake-3.18/Help/module/FindHSPELL.rst b/share/cmake-3.22/Help/module/FindHSPELL.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindHSPELL.rst
rename to share/cmake-3.22/Help/module/FindHSPELL.rst
diff --git a/share/cmake-3.18/Help/module/FindHTMLHelp.rst b/share/cmake-3.22/Help/module/FindHTMLHelp.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindHTMLHelp.rst
rename to share/cmake-3.22/Help/module/FindHTMLHelp.rst
diff --git a/share/cmake-3.18/Help/module/FindHg.rst b/share/cmake-3.22/Help/module/FindHg.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindHg.rst
rename to share/cmake-3.22/Help/module/FindHg.rst
diff --git a/share/cmake-3.18/Help/module/FindICU.rst b/share/cmake-3.22/Help/module/FindICU.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindICU.rst
rename to share/cmake-3.22/Help/module/FindICU.rst
diff --git a/share/cmake-3.18/Help/module/FindITK.rst b/share/cmake-3.22/Help/module/FindITK.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindITK.rst
rename to share/cmake-3.22/Help/module/FindITK.rst
diff --git a/share/cmake-3.18/Help/module/FindIce.rst b/share/cmake-3.22/Help/module/FindIce.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindIce.rst
rename to share/cmake-3.22/Help/module/FindIce.rst
diff --git a/share/cmake-3.18/Help/module/FindIconv.rst b/share/cmake-3.22/Help/module/FindIconv.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindIconv.rst
rename to share/cmake-3.22/Help/module/FindIconv.rst
diff --git a/share/cmake-3.18/Help/module/FindIcotool.rst b/share/cmake-3.22/Help/module/FindIcotool.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindIcotool.rst
rename to share/cmake-3.22/Help/module/FindIcotool.rst
diff --git a/share/cmake-3.18/Help/module/FindImageMagick.rst b/share/cmake-3.22/Help/module/FindImageMagick.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindImageMagick.rst
rename to share/cmake-3.22/Help/module/FindImageMagick.rst
diff --git a/share/cmake-3.18/Help/module/FindIntl.rst b/share/cmake-3.22/Help/module/FindIntl.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindIntl.rst
rename to share/cmake-3.22/Help/module/FindIntl.rst
diff --git a/share/cmake-3.18/Help/module/FindJNI.rst b/share/cmake-3.22/Help/module/FindJNI.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindJNI.rst
rename to share/cmake-3.22/Help/module/FindJNI.rst
diff --git a/share/cmake-3.18/Help/module/FindJPEG.rst b/share/cmake-3.22/Help/module/FindJPEG.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindJPEG.rst
rename to share/cmake-3.22/Help/module/FindJPEG.rst
diff --git a/share/cmake-3.18/Help/module/FindJasper.rst b/share/cmake-3.22/Help/module/FindJasper.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindJasper.rst
rename to share/cmake-3.22/Help/module/FindJasper.rst
diff --git a/share/cmake-3.18/Help/module/FindJava.rst b/share/cmake-3.22/Help/module/FindJava.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindJava.rst
rename to share/cmake-3.22/Help/module/FindJava.rst
diff --git a/share/cmake-3.18/Help/module/FindKDE3.rst b/share/cmake-3.22/Help/module/FindKDE3.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindKDE3.rst
rename to share/cmake-3.22/Help/module/FindKDE3.rst
diff --git a/share/cmake-3.18/Help/module/FindKDE4.rst b/share/cmake-3.22/Help/module/FindKDE4.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindKDE4.rst
rename to share/cmake-3.22/Help/module/FindKDE4.rst
diff --git a/share/cmake-3.18/Help/module/FindLAPACK.rst b/share/cmake-3.22/Help/module/FindLAPACK.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindLAPACK.rst
rename to share/cmake-3.22/Help/module/FindLAPACK.rst
diff --git a/share/cmake-3.18/Help/module/FindLATEX.rst b/share/cmake-3.22/Help/module/FindLATEX.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindLATEX.rst
rename to share/cmake-3.22/Help/module/FindLATEX.rst
diff --git a/share/cmake-3.18/Help/module/FindLTTngUST.rst b/share/cmake-3.22/Help/module/FindLTTngUST.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindLTTngUST.rst
rename to share/cmake-3.22/Help/module/FindLTTngUST.rst
diff --git a/share/cmake-3.18/Help/module/FindLibArchive.rst b/share/cmake-3.22/Help/module/FindLibArchive.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindLibArchive.rst
rename to share/cmake-3.22/Help/module/FindLibArchive.rst
diff --git a/share/cmake-3.18/Help/module/FindLibLZMA.rst b/share/cmake-3.22/Help/module/FindLibLZMA.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindLibLZMA.rst
rename to share/cmake-3.22/Help/module/FindLibLZMA.rst
diff --git a/share/cmake-3.18/Help/module/FindLibXml2.rst b/share/cmake-3.22/Help/module/FindLibXml2.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindLibXml2.rst
rename to share/cmake-3.22/Help/module/FindLibXml2.rst
diff --git a/share/cmake-3.18/Help/module/FindLibXslt.rst b/share/cmake-3.22/Help/module/FindLibXslt.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindLibXslt.rst
rename to share/cmake-3.22/Help/module/FindLibXslt.rst
diff --git a/share/cmake-3.18/Help/module/FindLibinput.rst b/share/cmake-3.22/Help/module/FindLibinput.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindLibinput.rst
rename to share/cmake-3.22/Help/module/FindLibinput.rst
diff --git a/share/cmake-3.18/Help/module/FindLua.rst b/share/cmake-3.22/Help/module/FindLua.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindLua.rst
rename to share/cmake-3.22/Help/module/FindLua.rst
diff --git a/share/cmake-3.18/Help/module/FindLua50.rst b/share/cmake-3.22/Help/module/FindLua50.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindLua50.rst
rename to share/cmake-3.22/Help/module/FindLua50.rst
diff --git a/share/cmake-3.18/Help/module/FindLua51.rst b/share/cmake-3.22/Help/module/FindLua51.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindLua51.rst
rename to share/cmake-3.22/Help/module/FindLua51.rst
diff --git a/share/cmake-3.18/Help/module/FindMFC.rst b/share/cmake-3.22/Help/module/FindMFC.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindMFC.rst
rename to share/cmake-3.22/Help/module/FindMFC.rst
diff --git a/share/cmake-3.18/Help/module/FindMPEG.rst b/share/cmake-3.22/Help/module/FindMPEG.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindMPEG.rst
rename to share/cmake-3.22/Help/module/FindMPEG.rst
diff --git a/share/cmake-3.18/Help/module/FindMPEG2.rst b/share/cmake-3.22/Help/module/FindMPEG2.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindMPEG2.rst
rename to share/cmake-3.22/Help/module/FindMPEG2.rst
diff --git a/share/cmake-3.18/Help/module/FindMPI.rst b/share/cmake-3.22/Help/module/FindMPI.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindMPI.rst
rename to share/cmake-3.22/Help/module/FindMPI.rst
diff --git a/share/cmake-3.18/Help/module/FindMatlab.rst b/share/cmake-3.22/Help/module/FindMatlab.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindMatlab.rst
rename to share/cmake-3.22/Help/module/FindMatlab.rst
diff --git a/share/cmake-3.18/Help/module/FindMotif.rst b/share/cmake-3.22/Help/module/FindMotif.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindMotif.rst
rename to share/cmake-3.22/Help/module/FindMotif.rst
diff --git a/share/cmake-3.22/Help/module/FindMsys.rst b/share/cmake-3.22/Help/module/FindMsys.rst
new file mode 100644
index 0000000..fc5495c
--- /dev/null
+++ b/share/cmake-3.22/Help/module/FindMsys.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/FindMsys.cmake
diff --git a/share/cmake-3.18/Help/module/FindODBC.rst b/share/cmake-3.22/Help/module/FindODBC.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindODBC.rst
rename to share/cmake-3.22/Help/module/FindODBC.rst
diff --git a/share/cmake-3.18/Help/module/FindOpenACC.rst b/share/cmake-3.22/Help/module/FindOpenACC.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindOpenACC.rst
rename to share/cmake-3.22/Help/module/FindOpenACC.rst
diff --git a/share/cmake-3.18/Help/module/FindOpenAL.rst b/share/cmake-3.22/Help/module/FindOpenAL.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindOpenAL.rst
rename to share/cmake-3.22/Help/module/FindOpenAL.rst
diff --git a/share/cmake-3.18/Help/module/FindOpenCL.rst b/share/cmake-3.22/Help/module/FindOpenCL.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindOpenCL.rst
rename to share/cmake-3.22/Help/module/FindOpenCL.rst
diff --git a/share/cmake-3.18/Help/module/FindOpenGL.rst b/share/cmake-3.22/Help/module/FindOpenGL.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindOpenGL.rst
rename to share/cmake-3.22/Help/module/FindOpenGL.rst
diff --git a/share/cmake-3.18/Help/module/FindOpenMP.rst b/share/cmake-3.22/Help/module/FindOpenMP.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindOpenMP.rst
rename to share/cmake-3.22/Help/module/FindOpenMP.rst
diff --git a/share/cmake-3.18/Help/module/FindOpenSSL.rst b/share/cmake-3.22/Help/module/FindOpenSSL.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindOpenSSL.rst
rename to share/cmake-3.22/Help/module/FindOpenSSL.rst
diff --git a/share/cmake-3.18/Help/module/FindOpenSceneGraph.rst b/share/cmake-3.22/Help/module/FindOpenSceneGraph.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindOpenSceneGraph.rst
rename to share/cmake-3.22/Help/module/FindOpenSceneGraph.rst
diff --git a/share/cmake-3.18/Help/module/FindOpenThreads.rst b/share/cmake-3.22/Help/module/FindOpenThreads.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindOpenThreads.rst
rename to share/cmake-3.22/Help/module/FindOpenThreads.rst
diff --git a/share/cmake-3.18/Help/module/FindPHP4.rst b/share/cmake-3.22/Help/module/FindPHP4.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindPHP4.rst
rename to share/cmake-3.22/Help/module/FindPHP4.rst
diff --git a/share/cmake-3.18/Help/module/FindPNG.rst b/share/cmake-3.22/Help/module/FindPNG.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindPNG.rst
rename to share/cmake-3.22/Help/module/FindPNG.rst
diff --git a/share/cmake-3.18/Help/module/FindPackageHandleStandardArgs.rst b/share/cmake-3.22/Help/module/FindPackageHandleStandardArgs.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindPackageHandleStandardArgs.rst
rename to share/cmake-3.22/Help/module/FindPackageHandleStandardArgs.rst
diff --git a/share/cmake-3.18/Help/module/FindPackageMessage.rst b/share/cmake-3.22/Help/module/FindPackageMessage.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindPackageMessage.rst
rename to share/cmake-3.22/Help/module/FindPackageMessage.rst
diff --git a/share/cmake-3.18/Help/module/FindPatch.rst b/share/cmake-3.22/Help/module/FindPatch.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindPatch.rst
rename to share/cmake-3.22/Help/module/FindPatch.rst
diff --git a/share/cmake-3.18/Help/module/FindPerl.rst b/share/cmake-3.22/Help/module/FindPerl.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindPerl.rst
rename to share/cmake-3.22/Help/module/FindPerl.rst
diff --git a/share/cmake-3.18/Help/module/FindPerlLibs.rst b/share/cmake-3.22/Help/module/FindPerlLibs.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindPerlLibs.rst
rename to share/cmake-3.22/Help/module/FindPerlLibs.rst
diff --git a/share/cmake-3.18/Help/module/FindPhysFS.rst b/share/cmake-3.22/Help/module/FindPhysFS.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindPhysFS.rst
rename to share/cmake-3.22/Help/module/FindPhysFS.rst
diff --git a/share/cmake-3.18/Help/module/FindPike.rst b/share/cmake-3.22/Help/module/FindPike.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindPike.rst
rename to share/cmake-3.22/Help/module/FindPike.rst
diff --git a/share/cmake-3.18/Help/module/FindPkgConfig.rst b/share/cmake-3.22/Help/module/FindPkgConfig.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindPkgConfig.rst
rename to share/cmake-3.22/Help/module/FindPkgConfig.rst
diff --git a/share/cmake-3.18/Help/module/FindPostgreSQL.rst b/share/cmake-3.22/Help/module/FindPostgreSQL.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindPostgreSQL.rst
rename to share/cmake-3.22/Help/module/FindPostgreSQL.rst
diff --git a/share/cmake-3.18/Help/module/FindProducer.rst b/share/cmake-3.22/Help/module/FindProducer.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindProducer.rst
rename to share/cmake-3.22/Help/module/FindProducer.rst
diff --git a/share/cmake-3.18/Help/module/FindProtobuf.rst b/share/cmake-3.22/Help/module/FindProtobuf.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindProtobuf.rst
rename to share/cmake-3.22/Help/module/FindProtobuf.rst
diff --git a/share/cmake-3.18/Help/module/FindPython.rst b/share/cmake-3.22/Help/module/FindPython.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindPython.rst
rename to share/cmake-3.22/Help/module/FindPython.rst
diff --git a/share/cmake-3.18/Help/module/FindPython2.rst b/share/cmake-3.22/Help/module/FindPython2.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindPython2.rst
rename to share/cmake-3.22/Help/module/FindPython2.rst
diff --git a/share/cmake-3.18/Help/module/FindPython3.rst b/share/cmake-3.22/Help/module/FindPython3.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindPython3.rst
rename to share/cmake-3.22/Help/module/FindPython3.rst
diff --git a/share/cmake-3.18/Help/module/FindPythonInterp.rst b/share/cmake-3.22/Help/module/FindPythonInterp.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindPythonInterp.rst
rename to share/cmake-3.22/Help/module/FindPythonInterp.rst
diff --git a/share/cmake-3.18/Help/module/FindPythonLibs.rst b/share/cmake-3.22/Help/module/FindPythonLibs.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindPythonLibs.rst
rename to share/cmake-3.22/Help/module/FindPythonLibs.rst
diff --git a/share/cmake-3.18/Help/module/FindQt.rst b/share/cmake-3.22/Help/module/FindQt.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindQt.rst
rename to share/cmake-3.22/Help/module/FindQt.rst
diff --git a/share/cmake-3.18/Help/module/FindQt3.rst b/share/cmake-3.22/Help/module/FindQt3.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindQt3.rst
rename to share/cmake-3.22/Help/module/FindQt3.rst
diff --git a/share/cmake-3.18/Help/module/FindQt4.rst b/share/cmake-3.22/Help/module/FindQt4.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindQt4.rst
rename to share/cmake-3.22/Help/module/FindQt4.rst
diff --git a/share/cmake-3.18/Help/module/FindQuickTime.rst b/share/cmake-3.22/Help/module/FindQuickTime.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindQuickTime.rst
rename to share/cmake-3.22/Help/module/FindQuickTime.rst
diff --git a/share/cmake-3.18/Help/module/FindRTI.rst b/share/cmake-3.22/Help/module/FindRTI.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindRTI.rst
rename to share/cmake-3.22/Help/module/FindRTI.rst
diff --git a/share/cmake-3.18/Help/module/FindRuby.rst b/share/cmake-3.22/Help/module/FindRuby.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindRuby.rst
rename to share/cmake-3.22/Help/module/FindRuby.rst
diff --git a/share/cmake-3.18/Help/module/FindSDL.rst b/share/cmake-3.22/Help/module/FindSDL.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindSDL.rst
rename to share/cmake-3.22/Help/module/FindSDL.rst
diff --git a/share/cmake-3.18/Help/module/FindSDL_image.rst b/share/cmake-3.22/Help/module/FindSDL_image.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindSDL_image.rst
rename to share/cmake-3.22/Help/module/FindSDL_image.rst
diff --git a/share/cmake-3.18/Help/module/FindSDL_mixer.rst b/share/cmake-3.22/Help/module/FindSDL_mixer.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindSDL_mixer.rst
rename to share/cmake-3.22/Help/module/FindSDL_mixer.rst
diff --git a/share/cmake-3.18/Help/module/FindSDL_net.rst b/share/cmake-3.22/Help/module/FindSDL_net.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindSDL_net.rst
rename to share/cmake-3.22/Help/module/FindSDL_net.rst
diff --git a/share/cmake-3.18/Help/module/FindSDL_sound.rst b/share/cmake-3.22/Help/module/FindSDL_sound.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindSDL_sound.rst
rename to share/cmake-3.22/Help/module/FindSDL_sound.rst
diff --git a/share/cmake-3.18/Help/module/FindSDL_ttf.rst b/share/cmake-3.22/Help/module/FindSDL_ttf.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindSDL_ttf.rst
rename to share/cmake-3.22/Help/module/FindSDL_ttf.rst
diff --git a/share/cmake-3.18/Help/module/FindSQLite3.rst b/share/cmake-3.22/Help/module/FindSQLite3.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindSQLite3.rst
rename to share/cmake-3.22/Help/module/FindSQLite3.rst
diff --git a/share/cmake-3.18/Help/module/FindSWIG.rst b/share/cmake-3.22/Help/module/FindSWIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindSWIG.rst
rename to share/cmake-3.22/Help/module/FindSWIG.rst
diff --git a/share/cmake-3.18/Help/module/FindSelfPackers.rst b/share/cmake-3.22/Help/module/FindSelfPackers.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindSelfPackers.rst
rename to share/cmake-3.22/Help/module/FindSelfPackers.rst
diff --git a/share/cmake-3.18/Help/module/FindSquish.rst b/share/cmake-3.22/Help/module/FindSquish.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindSquish.rst
rename to share/cmake-3.22/Help/module/FindSquish.rst
diff --git a/share/cmake-3.18/Help/module/FindSubversion.rst b/share/cmake-3.22/Help/module/FindSubversion.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindSubversion.rst
rename to share/cmake-3.22/Help/module/FindSubversion.rst
diff --git a/share/cmake-3.18/Help/module/FindTCL.rst b/share/cmake-3.22/Help/module/FindTCL.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindTCL.rst
rename to share/cmake-3.22/Help/module/FindTCL.rst
diff --git a/share/cmake-3.18/Help/module/FindTIFF.rst b/share/cmake-3.22/Help/module/FindTIFF.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindTIFF.rst
rename to share/cmake-3.22/Help/module/FindTIFF.rst
diff --git a/share/cmake-3.18/Help/module/FindTclStub.rst b/share/cmake-3.22/Help/module/FindTclStub.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindTclStub.rst
rename to share/cmake-3.22/Help/module/FindTclStub.rst
diff --git a/share/cmake-3.18/Help/module/FindTclsh.rst b/share/cmake-3.22/Help/module/FindTclsh.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindTclsh.rst
rename to share/cmake-3.22/Help/module/FindTclsh.rst
diff --git a/share/cmake-3.18/Help/module/FindThreads.rst b/share/cmake-3.22/Help/module/FindThreads.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindThreads.rst
rename to share/cmake-3.22/Help/module/FindThreads.rst
diff --git a/share/cmake-3.18/Help/module/FindUnixCommands.rst b/share/cmake-3.22/Help/module/FindUnixCommands.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindUnixCommands.rst
rename to share/cmake-3.22/Help/module/FindUnixCommands.rst
diff --git a/share/cmake-3.18/Help/module/FindVTK.rst b/share/cmake-3.22/Help/module/FindVTK.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindVTK.rst
rename to share/cmake-3.22/Help/module/FindVTK.rst
diff --git a/share/cmake-3.18/Help/module/FindVulkan.rst b/share/cmake-3.22/Help/module/FindVulkan.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindVulkan.rst
rename to share/cmake-3.22/Help/module/FindVulkan.rst
diff --git a/share/cmake-3.18/Help/module/FindWget.rst b/share/cmake-3.22/Help/module/FindWget.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindWget.rst
rename to share/cmake-3.22/Help/module/FindWget.rst
diff --git a/share/cmake-3.18/Help/module/FindWish.rst b/share/cmake-3.22/Help/module/FindWish.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindWish.rst
rename to share/cmake-3.22/Help/module/FindWish.rst
diff --git a/share/cmake-3.18/Help/module/FindX11.rst b/share/cmake-3.22/Help/module/FindX11.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindX11.rst
rename to share/cmake-3.22/Help/module/FindX11.rst
diff --git a/share/cmake-3.18/Help/module/FindXCTest.rst b/share/cmake-3.22/Help/module/FindXCTest.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindXCTest.rst
rename to share/cmake-3.22/Help/module/FindXCTest.rst
diff --git a/share/cmake-3.18/Help/module/FindXMLRPC.rst b/share/cmake-3.22/Help/module/FindXMLRPC.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindXMLRPC.rst
rename to share/cmake-3.22/Help/module/FindXMLRPC.rst
diff --git a/share/cmake-3.18/Help/module/FindXalanC.rst b/share/cmake-3.22/Help/module/FindXalanC.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindXalanC.rst
rename to share/cmake-3.22/Help/module/FindXalanC.rst
diff --git a/share/cmake-3.18/Help/module/FindXercesC.rst b/share/cmake-3.22/Help/module/FindXercesC.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindXercesC.rst
rename to share/cmake-3.22/Help/module/FindXercesC.rst
diff --git a/share/cmake-3.18/Help/module/FindZLIB.rst b/share/cmake-3.22/Help/module/FindZLIB.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindZLIB.rst
rename to share/cmake-3.22/Help/module/FindZLIB.rst
diff --git a/share/cmake-3.18/Help/module/Findosg.rst b/share/cmake-3.22/Help/module/Findosg.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/Findosg.rst
rename to share/cmake-3.22/Help/module/Findosg.rst
diff --git a/share/cmake-3.18/Help/module/FindosgAnimation.rst b/share/cmake-3.22/Help/module/FindosgAnimation.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgAnimation.rst
rename to share/cmake-3.22/Help/module/FindosgAnimation.rst
diff --git a/share/cmake-3.18/Help/module/FindosgDB.rst b/share/cmake-3.22/Help/module/FindosgDB.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgDB.rst
rename to share/cmake-3.22/Help/module/FindosgDB.rst
diff --git a/share/cmake-3.18/Help/module/FindosgFX.rst b/share/cmake-3.22/Help/module/FindosgFX.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgFX.rst
rename to share/cmake-3.22/Help/module/FindosgFX.rst
diff --git a/share/cmake-3.18/Help/module/FindosgGA.rst b/share/cmake-3.22/Help/module/FindosgGA.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgGA.rst
rename to share/cmake-3.22/Help/module/FindosgGA.rst
diff --git a/share/cmake-3.18/Help/module/FindosgIntrospection.rst b/share/cmake-3.22/Help/module/FindosgIntrospection.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgIntrospection.rst
rename to share/cmake-3.22/Help/module/FindosgIntrospection.rst
diff --git a/share/cmake-3.18/Help/module/FindosgManipulator.rst b/share/cmake-3.22/Help/module/FindosgManipulator.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgManipulator.rst
rename to share/cmake-3.22/Help/module/FindosgManipulator.rst
diff --git a/share/cmake-3.18/Help/module/FindosgParticle.rst b/share/cmake-3.22/Help/module/FindosgParticle.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgParticle.rst
rename to share/cmake-3.22/Help/module/FindosgParticle.rst
diff --git a/share/cmake-3.18/Help/module/FindosgPresentation.rst b/share/cmake-3.22/Help/module/FindosgPresentation.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgPresentation.rst
rename to share/cmake-3.22/Help/module/FindosgPresentation.rst
diff --git a/share/cmake-3.18/Help/module/FindosgProducer.rst b/share/cmake-3.22/Help/module/FindosgProducer.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgProducer.rst
rename to share/cmake-3.22/Help/module/FindosgProducer.rst
diff --git a/share/cmake-3.18/Help/module/FindosgQt.rst b/share/cmake-3.22/Help/module/FindosgQt.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgQt.rst
rename to share/cmake-3.22/Help/module/FindosgQt.rst
diff --git a/share/cmake-3.18/Help/module/FindosgShadow.rst b/share/cmake-3.22/Help/module/FindosgShadow.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgShadow.rst
rename to share/cmake-3.22/Help/module/FindosgShadow.rst
diff --git a/share/cmake-3.18/Help/module/FindosgSim.rst b/share/cmake-3.22/Help/module/FindosgSim.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgSim.rst
rename to share/cmake-3.22/Help/module/FindosgSim.rst
diff --git a/share/cmake-3.18/Help/module/FindosgTerrain.rst b/share/cmake-3.22/Help/module/FindosgTerrain.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgTerrain.rst
rename to share/cmake-3.22/Help/module/FindosgTerrain.rst
diff --git a/share/cmake-3.18/Help/module/FindosgText.rst b/share/cmake-3.22/Help/module/FindosgText.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgText.rst
rename to share/cmake-3.22/Help/module/FindosgText.rst
diff --git a/share/cmake-3.18/Help/module/FindosgUtil.rst b/share/cmake-3.22/Help/module/FindosgUtil.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgUtil.rst
rename to share/cmake-3.22/Help/module/FindosgUtil.rst
diff --git a/share/cmake-3.18/Help/module/FindosgViewer.rst b/share/cmake-3.22/Help/module/FindosgViewer.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgViewer.rst
rename to share/cmake-3.22/Help/module/FindosgViewer.rst
diff --git a/share/cmake-3.18/Help/module/FindosgVolume.rst b/share/cmake-3.22/Help/module/FindosgVolume.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgVolume.rst
rename to share/cmake-3.22/Help/module/FindosgVolume.rst
diff --git a/share/cmake-3.18/Help/module/FindosgWidget.rst b/share/cmake-3.22/Help/module/FindosgWidget.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindosgWidget.rst
rename to share/cmake-3.22/Help/module/FindosgWidget.rst
diff --git a/share/cmake-3.18/Help/module/Findosg_functions.rst b/share/cmake-3.22/Help/module/Findosg_functions.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/Findosg_functions.rst
rename to share/cmake-3.22/Help/module/Findosg_functions.rst
diff --git a/share/cmake-3.18/Help/module/FindwxWidgets.rst b/share/cmake-3.22/Help/module/FindwxWidgets.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindwxWidgets.rst
rename to share/cmake-3.22/Help/module/FindwxWidgets.rst
diff --git a/share/cmake-3.18/Help/module/FindwxWindows.rst b/share/cmake-3.22/Help/module/FindwxWindows.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FindwxWindows.rst
rename to share/cmake-3.22/Help/module/FindwxWindows.rst
diff --git a/share/cmake-3.18/Help/module/FortranCInterface.rst b/share/cmake-3.22/Help/module/FortranCInterface.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/FortranCInterface.rst
rename to share/cmake-3.22/Help/module/FortranCInterface.rst
diff --git a/share/cmake-3.18/Help/module/GNUInstallDirs.rst b/share/cmake-3.22/Help/module/GNUInstallDirs.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/GNUInstallDirs.rst
rename to share/cmake-3.22/Help/module/GNUInstallDirs.rst
diff --git a/share/cmake-3.18/Help/module/GenerateExportHeader.rst b/share/cmake-3.22/Help/module/GenerateExportHeader.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/GenerateExportHeader.rst
rename to share/cmake-3.22/Help/module/GenerateExportHeader.rst
diff --git a/share/cmake-3.18/Help/module/GetPrerequisites.rst b/share/cmake-3.22/Help/module/GetPrerequisites.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/GetPrerequisites.rst
rename to share/cmake-3.22/Help/module/GetPrerequisites.rst
diff --git a/share/cmake-3.18/Help/module/GoogleTest.rst b/share/cmake-3.22/Help/module/GoogleTest.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/GoogleTest.rst
rename to share/cmake-3.22/Help/module/GoogleTest.rst
diff --git a/share/cmake-3.18/Help/module/InstallRequiredSystemLibraries.rst b/share/cmake-3.22/Help/module/InstallRequiredSystemLibraries.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/InstallRequiredSystemLibraries.rst
rename to share/cmake-3.22/Help/module/InstallRequiredSystemLibraries.rst
diff --git a/share/cmake-3.18/Help/module/MacroAddFileDependencies.rst b/share/cmake-3.22/Help/module/MacroAddFileDependencies.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/MacroAddFileDependencies.rst
rename to share/cmake-3.22/Help/module/MacroAddFileDependencies.rst
diff --git a/share/cmake-3.18/Help/module/ProcessorCount.rst b/share/cmake-3.22/Help/module/ProcessorCount.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/ProcessorCount.rst
rename to share/cmake-3.22/Help/module/ProcessorCount.rst
diff --git a/share/cmake-3.18/Help/module/SelectLibraryConfigurations.rst b/share/cmake-3.22/Help/module/SelectLibraryConfigurations.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/SelectLibraryConfigurations.rst
rename to share/cmake-3.22/Help/module/SelectLibraryConfigurations.rst
diff --git a/share/cmake-3.18/Help/module/SquishTestScript.rst b/share/cmake-3.22/Help/module/SquishTestScript.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/SquishTestScript.rst
rename to share/cmake-3.22/Help/module/SquishTestScript.rst
diff --git a/share/cmake-3.18/Help/module/TestBigEndian.rst b/share/cmake-3.22/Help/module/TestBigEndian.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/TestBigEndian.rst
rename to share/cmake-3.22/Help/module/TestBigEndian.rst
diff --git a/share/cmake-3.18/Help/module/TestCXXAcceptsFlag.rst b/share/cmake-3.22/Help/module/TestCXXAcceptsFlag.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/TestCXXAcceptsFlag.rst
rename to share/cmake-3.22/Help/module/TestCXXAcceptsFlag.rst
diff --git a/share/cmake-3.18/Help/module/TestForANSIForScope.rst b/share/cmake-3.22/Help/module/TestForANSIForScope.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/TestForANSIForScope.rst
rename to share/cmake-3.22/Help/module/TestForANSIForScope.rst
diff --git a/share/cmake-3.18/Help/module/TestForANSIStreamHeaders.rst b/share/cmake-3.22/Help/module/TestForANSIStreamHeaders.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/TestForANSIStreamHeaders.rst
rename to share/cmake-3.22/Help/module/TestForANSIStreamHeaders.rst
diff --git a/share/cmake-3.18/Help/module/TestForSSTREAM.rst b/share/cmake-3.22/Help/module/TestForSSTREAM.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/TestForSSTREAM.rst
rename to share/cmake-3.22/Help/module/TestForSSTREAM.rst
diff --git a/share/cmake-3.18/Help/module/TestForSTDNamespace.rst b/share/cmake-3.22/Help/module/TestForSTDNamespace.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/TestForSTDNamespace.rst
rename to share/cmake-3.22/Help/module/TestForSTDNamespace.rst
diff --git a/share/cmake-3.18/Help/module/UseEcos.rst b/share/cmake-3.22/Help/module/UseEcos.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/UseEcos.rst
rename to share/cmake-3.22/Help/module/UseEcos.rst
diff --git a/share/cmake-3.18/Help/module/UseJava.rst b/share/cmake-3.22/Help/module/UseJava.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/UseJava.rst
rename to share/cmake-3.22/Help/module/UseJava.rst
diff --git a/share/cmake-3.22/Help/module/UseJavaClassFilelist.rst b/share/cmake-3.22/Help/module/UseJavaClassFilelist.rst
new file mode 100644
index 0000000..29949be
--- /dev/null
+++ b/share/cmake-3.22/Help/module/UseJavaClassFilelist.rst
@@ -0,0 +1,6 @@
+UseJavaClassFilelist
+--------------------
+
+.. versionchanged:: 3.20
+  This module was previously documented by mistake and was never meant for
+  direct inclusion by project code.  See the :module:`UseJava` module.
diff --git a/share/cmake-3.22/Help/module/UseJavaSymlinks.rst b/share/cmake-3.22/Help/module/UseJavaSymlinks.rst
new file mode 100644
index 0000000..1058a68
--- /dev/null
+++ b/share/cmake-3.22/Help/module/UseJavaSymlinks.rst
@@ -0,0 +1,6 @@
+UseJavaSymlinks
+---------------
+
+.. versionchanged:: 3.20
+  This module was previously documented by mistake and was never meant for
+  direct inclusion by project code.  See the :module:`UseJava` module.
diff --git a/share/cmake-3.18/Help/module/UsePkgConfig.rst b/share/cmake-3.22/Help/module/UsePkgConfig.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/UsePkgConfig.rst
rename to share/cmake-3.22/Help/module/UsePkgConfig.rst
diff --git a/share/cmake-3.18/Help/module/UseSWIG.rst b/share/cmake-3.22/Help/module/UseSWIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/UseSWIG.rst
rename to share/cmake-3.22/Help/module/UseSWIG.rst
diff --git a/share/cmake-3.18/Help/module/Use_wxWindows.rst b/share/cmake-3.22/Help/module/Use_wxWindows.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/Use_wxWindows.rst
rename to share/cmake-3.22/Help/module/Use_wxWindows.rst
diff --git a/share/cmake-3.18/Help/module/UsewxWidgets.rst b/share/cmake-3.22/Help/module/UsewxWidgets.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/UsewxWidgets.rst
rename to share/cmake-3.22/Help/module/UsewxWidgets.rst
diff --git a/share/cmake-3.18/Help/module/WriteBasicConfigVersionFile.rst b/share/cmake-3.22/Help/module/WriteBasicConfigVersionFile.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/WriteBasicConfigVersionFile.rst
rename to share/cmake-3.22/Help/module/WriteBasicConfigVersionFile.rst
diff --git a/share/cmake-3.18/Help/module/WriteCompilerDetectionHeader.rst b/share/cmake-3.22/Help/module/WriteCompilerDetectionHeader.rst
similarity index 100%
rename from share/cmake-3.18/Help/module/WriteCompilerDetectionHeader.rst
rename to share/cmake-3.22/Help/module/WriteCompilerDetectionHeader.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0000.rst b/share/cmake-3.22/Help/policy/CMP0000.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0000.rst
rename to share/cmake-3.22/Help/policy/CMP0000.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0001.rst b/share/cmake-3.22/Help/policy/CMP0001.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0001.rst
rename to share/cmake-3.22/Help/policy/CMP0001.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0002.rst b/share/cmake-3.22/Help/policy/CMP0002.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0002.rst
rename to share/cmake-3.22/Help/policy/CMP0002.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0003.rst b/share/cmake-3.22/Help/policy/CMP0003.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0003.rst
rename to share/cmake-3.22/Help/policy/CMP0003.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0004.rst b/share/cmake-3.22/Help/policy/CMP0004.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0004.rst
rename to share/cmake-3.22/Help/policy/CMP0004.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0005.rst b/share/cmake-3.22/Help/policy/CMP0005.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0005.rst
rename to share/cmake-3.22/Help/policy/CMP0005.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0006.rst b/share/cmake-3.22/Help/policy/CMP0006.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0006.rst
rename to share/cmake-3.22/Help/policy/CMP0006.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0007.rst b/share/cmake-3.22/Help/policy/CMP0007.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0007.rst
rename to share/cmake-3.22/Help/policy/CMP0007.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0008.rst b/share/cmake-3.22/Help/policy/CMP0008.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0008.rst
rename to share/cmake-3.22/Help/policy/CMP0008.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0009.rst b/share/cmake-3.22/Help/policy/CMP0009.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0009.rst
rename to share/cmake-3.22/Help/policy/CMP0009.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0010.rst b/share/cmake-3.22/Help/policy/CMP0010.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0010.rst
rename to share/cmake-3.22/Help/policy/CMP0010.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0011.rst b/share/cmake-3.22/Help/policy/CMP0011.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0011.rst
rename to share/cmake-3.22/Help/policy/CMP0011.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0012.rst b/share/cmake-3.22/Help/policy/CMP0012.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0012.rst
rename to share/cmake-3.22/Help/policy/CMP0012.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0013.rst b/share/cmake-3.22/Help/policy/CMP0013.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0013.rst
rename to share/cmake-3.22/Help/policy/CMP0013.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0014.rst b/share/cmake-3.22/Help/policy/CMP0014.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0014.rst
rename to share/cmake-3.22/Help/policy/CMP0014.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0015.rst b/share/cmake-3.22/Help/policy/CMP0015.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0015.rst
rename to share/cmake-3.22/Help/policy/CMP0015.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0016.rst b/share/cmake-3.22/Help/policy/CMP0016.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0016.rst
rename to share/cmake-3.22/Help/policy/CMP0016.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0017.rst b/share/cmake-3.22/Help/policy/CMP0017.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0017.rst
rename to share/cmake-3.22/Help/policy/CMP0017.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0018.rst b/share/cmake-3.22/Help/policy/CMP0018.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0018.rst
rename to share/cmake-3.22/Help/policy/CMP0018.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0019.rst b/share/cmake-3.22/Help/policy/CMP0019.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0019.rst
rename to share/cmake-3.22/Help/policy/CMP0019.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0020.rst b/share/cmake-3.22/Help/policy/CMP0020.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0020.rst
rename to share/cmake-3.22/Help/policy/CMP0020.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0021.rst b/share/cmake-3.22/Help/policy/CMP0021.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0021.rst
rename to share/cmake-3.22/Help/policy/CMP0021.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0022.rst b/share/cmake-3.22/Help/policy/CMP0022.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0022.rst
rename to share/cmake-3.22/Help/policy/CMP0022.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0023.rst b/share/cmake-3.22/Help/policy/CMP0023.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0023.rst
rename to share/cmake-3.22/Help/policy/CMP0023.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0024.rst b/share/cmake-3.22/Help/policy/CMP0024.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0024.rst
rename to share/cmake-3.22/Help/policy/CMP0024.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0025.rst b/share/cmake-3.22/Help/policy/CMP0025.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0025.rst
rename to share/cmake-3.22/Help/policy/CMP0025.rst
diff --git a/share/cmake-3.22/Help/policy/CMP0026.rst b/share/cmake-3.22/Help/policy/CMP0026.rst
new file mode 100644
index 0000000..e08fd54
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0026.rst
@@ -0,0 +1,29 @@
+CMP0026
+-------
+
+Disallow use of the LOCATION property for build targets.
+
+CMake 2.8.12 and lower allowed reading the :prop_tgt:`LOCATION` target
+property (and configuration-specific variants) to
+determine the eventual location of build targets.  This relies on the
+assumption that all necessary information is available at
+configure-time to determine the final location and filename of the
+target.  However, this property is not fully determined until later at
+generate-time.  At generate time, the :genex:`$<TARGET_FILE>` generator
+expression can be used to determine the eventual :prop_tgt:`LOCATION` of a target
+output.
+
+Code which reads the :prop_tgt:`LOCATION` target property can be ported to
+use the :genex:`$<TARGET_FILE>` generator expression together with the
+:command:`file(GENERATE)` subcommand to generate a file containing
+the target location.
+
+The ``OLD`` behavior for this policy is to allow reading the :prop_tgt:`LOCATION`
+properties from build-targets.  The ``NEW`` behavior for this policy is to
+not to allow reading the :prop_tgt:`LOCATION` properties from build-targets.
+
+This policy was introduced in CMake version 3.0.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.  Use
+the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/CMP0027.rst b/share/cmake-3.22/Help/policy/CMP0027.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0027.rst
rename to share/cmake-3.22/Help/policy/CMP0027.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0028.rst b/share/cmake-3.22/Help/policy/CMP0028.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0028.rst
rename to share/cmake-3.22/Help/policy/CMP0028.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0029.rst b/share/cmake-3.22/Help/policy/CMP0029.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0029.rst
rename to share/cmake-3.22/Help/policy/CMP0029.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0030.rst b/share/cmake-3.22/Help/policy/CMP0030.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0030.rst
rename to share/cmake-3.22/Help/policy/CMP0030.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0031.rst b/share/cmake-3.22/Help/policy/CMP0031.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0031.rst
rename to share/cmake-3.22/Help/policy/CMP0031.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0032.rst b/share/cmake-3.22/Help/policy/CMP0032.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0032.rst
rename to share/cmake-3.22/Help/policy/CMP0032.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0033.rst b/share/cmake-3.22/Help/policy/CMP0033.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0033.rst
rename to share/cmake-3.22/Help/policy/CMP0033.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0034.rst b/share/cmake-3.22/Help/policy/CMP0034.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0034.rst
rename to share/cmake-3.22/Help/policy/CMP0034.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0035.rst b/share/cmake-3.22/Help/policy/CMP0035.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0035.rst
rename to share/cmake-3.22/Help/policy/CMP0035.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0036.rst b/share/cmake-3.22/Help/policy/CMP0036.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0036.rst
rename to share/cmake-3.22/Help/policy/CMP0036.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0037.rst b/share/cmake-3.22/Help/policy/CMP0037.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0037.rst
rename to share/cmake-3.22/Help/policy/CMP0037.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0038.rst b/share/cmake-3.22/Help/policy/CMP0038.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0038.rst
rename to share/cmake-3.22/Help/policy/CMP0038.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0039.rst b/share/cmake-3.22/Help/policy/CMP0039.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0039.rst
rename to share/cmake-3.22/Help/policy/CMP0039.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0040.rst b/share/cmake-3.22/Help/policy/CMP0040.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0040.rst
rename to share/cmake-3.22/Help/policy/CMP0040.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0041.rst b/share/cmake-3.22/Help/policy/CMP0041.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0041.rst
rename to share/cmake-3.22/Help/policy/CMP0041.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0042.rst b/share/cmake-3.22/Help/policy/CMP0042.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0042.rst
rename to share/cmake-3.22/Help/policy/CMP0042.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0043.rst b/share/cmake-3.22/Help/policy/CMP0043.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0043.rst
rename to share/cmake-3.22/Help/policy/CMP0043.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0044.rst b/share/cmake-3.22/Help/policy/CMP0044.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0044.rst
rename to share/cmake-3.22/Help/policy/CMP0044.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0045.rst b/share/cmake-3.22/Help/policy/CMP0045.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0045.rst
rename to share/cmake-3.22/Help/policy/CMP0045.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0046.rst b/share/cmake-3.22/Help/policy/CMP0046.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0046.rst
rename to share/cmake-3.22/Help/policy/CMP0046.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0047.rst b/share/cmake-3.22/Help/policy/CMP0047.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0047.rst
rename to share/cmake-3.22/Help/policy/CMP0047.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0048.rst b/share/cmake-3.22/Help/policy/CMP0048.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0048.rst
rename to share/cmake-3.22/Help/policy/CMP0048.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0049.rst b/share/cmake-3.22/Help/policy/CMP0049.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0049.rst
rename to share/cmake-3.22/Help/policy/CMP0049.rst
diff --git a/share/cmake-3.18/Help/policy/CMP0050.rst b/share/cmake-3.22/Help/policy/CMP0050.rst
similarity index 100%
rename from share/cmake-3.18/Help/policy/CMP0050.rst
rename to share/cmake-3.22/Help/policy/CMP0050.rst
diff --git a/share/cmake-3.22/Help/policy/CMP0051.rst b/share/cmake-3.22/Help/policy/CMP0051.rst
new file mode 100644
index 0000000..3558909
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0051.rst
@@ -0,0 +1,28 @@
+CMP0051
+-------
+
+.. versionadded:: 3.1
+
+List :genex:`TARGET_OBJECTS` in SOURCES target property.
+
+CMake 3.0 and lower did not include the ``TARGET_OBJECTS``
+:manual:`generator expression <cmake-generator-expressions(7)>` when
+returning the :prop_tgt:`SOURCES` target property.
+
+Configure-time CMake code is not able to handle generator expressions.  If
+using the :prop_tgt:`SOURCES` target property at configure time, it may be
+necessary to first remove generator expressions using the
+:command:`string(GENEX_STRIP)` command.  Generate-time CMake code such as
+:command:`file(GENERATE)` can handle the content without stripping.
+
+The ``OLD`` behavior for this policy is to omit ``TARGET_OBJECTS``
+expressions from the :prop_tgt:`SOURCES` target property.  The ``NEW``
+behavior for this policy is to include ``TARGET_OBJECTS`` expressions
+in the output.
+
+This policy was introduced in CMake version 3.1.
+CMake version |release| warns when the policy is not set and uses
+``OLD`` behavior.  Use the :command:`cmake_policy` command to set it
+to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0052.rst b/share/cmake-3.22/Help/policy/CMP0052.rst
new file mode 100644
index 0000000..c75f9ab
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0052.rst
@@ -0,0 +1,29 @@
+CMP0052
+-------
+
+.. versionadded:: 3.1
+
+Reject source and build dirs in installed
+:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES`.
+
+CMake 3.0 and lower allowed subdirectories of the source directory or build
+directory to be in the :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of
+installed and exported targets, if the directory was also a subdirectory of
+the installation prefix.  This makes the installation depend on the
+existence of the source dir or binary dir, and the installation will be
+broken if either are removed after installation.
+
+See :ref:`Include Directories and Usage Requirements` for more on
+specifying include directories for targets.
+
+The ``OLD`` behavior for this policy is to export the content of the
+:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` with the source or binary
+directory.  The ``NEW`` behavior for this
+policy is to issue an error if such a directory is used.
+
+This policy was introduced in CMake version 3.1.
+CMake version |release| warns when the policy is not set and uses
+``OLD`` behavior.  Use the :command:`cmake_policy` command to set it
+to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0053.rst b/share/cmake-3.22/Help/policy/CMP0053.rst
new file mode 100644
index 0000000..9b18b2d
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0053.rst
@@ -0,0 +1,52 @@
+CMP0053
+-------
+
+.. versionadded:: 3.1
+
+Simplify variable reference and escape sequence evaluation.
+
+CMake 3.1 introduced a much faster implementation of evaluation of the
+:ref:`Variable References` and :ref:`Escape Sequences` documented in the
+:manual:`cmake-language(7)` manual.  While the behavior is identical
+to the legacy implementation in most cases, some corner cases were
+cleaned up to simplify the behavior.  Specifically:
+
+* Expansion of ``@VAR@`` reference syntax defined by the
+  :command:`configure_file` and :command:`string(CONFIGURE)`
+  commands is no longer performed in other contexts.
+
+* Literal ``${VAR}`` reference syntax may contain only
+  alphanumeric characters (``A-Z``, ``a-z``, ``0-9``) and
+  the characters ``_``, ``.``, ``/``, ``-``, and ``+``.
+  Note that ``$`` is technically allowed in the ``NEW`` behavior, but is
+  invalid for ``OLD`` behavior.  This is due to an oversight during the
+  implementation of :policy:`CMP0053` and its use as a literal variable
+  reference is discouraged for this reason.
+  Variables with other characters in their name may still
+  be referenced indirectly, e.g.
+
+  .. code-block:: cmake
+
+    set(varname "otherwise & disallowed $ characters")
+    message("${${varname}}")
+
+* The setting of policy :policy:`CMP0010` is not considered,
+  so improper variable reference syntax is always an error.
+
+* More characters are allowed to be escaped in variable names.
+  Previously, only ``()#" \@^`` were valid characters to
+  escape. Now any non-alphanumeric, non-semicolon, non-NUL
+  character may be escaped following the ``escape_identity``
+  production in the :ref:`Escape Sequences` section of the
+  :manual:`cmake-language(7)` manual.
+
+The ``OLD`` behavior for this policy is to honor the legacy behavior for
+variable references and escape sequences.  The ``NEW`` behavior is to
+use the simpler variable expansion and escape sequence evaluation rules.
+
+This policy was introduced in CMake version 3.1.
+CMake version |release| warns when the policy is not set and uses
+``OLD`` behavior.  Use the :command:`cmake_policy` command to set
+it to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0054.rst b/share/cmake-3.22/Help/policy/CMP0054.rst
new file mode 100644
index 0000000..c7ae019
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0054.rst
@@ -0,0 +1,54 @@
+CMP0054
+-------
+
+.. versionadded:: 3.1
+
+Only interpret :command:`if` arguments as variables or keywords when unquoted.
+
+CMake 3.1 and above no longer implicitly dereference variables or
+interpret keywords in an :command:`if` command argument when
+it is a :ref:`Quoted Argument` or a :ref:`Bracket Argument`.
+
+The ``OLD`` behavior for this policy is to dereference variables and
+interpret keywords even if they are quoted or bracketed.
+The ``NEW`` behavior is to not dereference variables or interpret keywords
+that have been quoted or bracketed.
+
+Given the following partial example:
+
+::
+
+  set(A E)
+  set(E "")
+
+  if("${A}" STREQUAL "")
+    message("Result is TRUE before CMake 3.1 or when CMP0054 is OLD")
+  else()
+    message("Result is FALSE in CMake 3.1 and above if CMP0054 is NEW")
+  endif()
+
+After explicit expansion of variables this gives:
+
+::
+
+  if("E" STREQUAL "")
+
+With the policy set to ``OLD`` implicit expansion reduces this semantically to:
+
+::
+
+  if("" STREQUAL "")
+
+With the policy set to ``NEW`` the quoted arguments will not be
+further dereferenced:
+
+::
+
+  if("E" STREQUAL "")
+
+This policy was introduced in CMake version 3.1.
+CMake version |release| warns when the policy is not set and uses
+``OLD`` behavior.  Use the :command:`cmake_policy` command to set
+it to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0055.rst b/share/cmake-3.22/Help/policy/CMP0055.rst
new file mode 100644
index 0000000..47cac8e
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0055.rst
@@ -0,0 +1,21 @@
+CMP0055
+-------
+
+.. versionadded:: 3.2
+
+Strict checking for the :command:`break` command.
+
+CMake 3.1 and lower allowed calls to the :command:`break` command
+outside of a loop context and also ignored any given arguments.
+This was undefined behavior.
+
+The ``OLD`` behavior for this policy is to allow :command:`break` to be placed
+outside of loop contexts and ignores any arguments.  The ``NEW`` behavior for this
+policy is to issue an error if a misplaced break or any arguments are found.
+
+This policy was introduced in CMake version 3.2.
+CMake version |release| warns when the policy is not set and uses
+``OLD`` behavior.  Use the :command:`cmake_policy` command to set it to ``OLD`` or
+``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0056.rst b/share/cmake-3.22/Help/policy/CMP0056.rst
new file mode 100644
index 0000000..628a6a1
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0056.rst
@@ -0,0 +1,36 @@
+CMP0056
+-------
+
+.. versionadded:: 3.2
+
+Honor link flags in :command:`try_compile` source-file signature.
+
+The :command:`try_compile` command source-file signature generates a
+``CMakeLists.txt`` file to build the source file into an executable.
+In order to compile the source the same way as it might be compiled
+by the calling project, the generated project sets the value of the
+:variable:`CMAKE_<LANG>_FLAGS` variable to that in the calling project.
+The value of the :variable:`CMAKE_EXE_LINKER_FLAGS` variable may be
+needed in some cases too, but CMake 3.1 and lower did not set it in
+the generated project.  CMake 3.2 and above prefer to set it so that
+linker flags are honored as well as compiler flags.  This policy
+provides compatibility with the pre-3.2 behavior.
+
+The ``OLD`` behavior for this policy is to not set the value of the
+:variable:`CMAKE_EXE_LINKER_FLAGS` variable in the generated test
+project.  The ``NEW`` behavior for this policy is to set the value of
+the :variable:`CMAKE_EXE_LINKER_FLAGS` variable in the test project
+to the same as it is in the calling project.
+
+If the project code does not set the policy explicitly, users may
+set it on the command line by defining the
+:variable:`CMAKE_POLICY_DEFAULT_CMP0056 <CMAKE_POLICY_DEFAULT_CMP<NNNN>>`
+variable in the cache.
+
+This policy was introduced in CMake version 3.2.  Unlike most policies,
+CMake version |release| does *not* warn by default when this policy
+is not set and simply uses ``OLD`` behavior.  See documentation of the
+:variable:`CMAKE_POLICY_WARNING_CMP0056 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
+variable to control the warning.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0057.rst b/share/cmake-3.22/Help/policy/CMP0057.rst
new file mode 100644
index 0000000..76aebfb
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0057.rst
@@ -0,0 +1,18 @@
+CMP0057
+-------
+
+.. versionadded:: 3.3
+
+Support new :command:`if` IN_LIST operator.
+
+CMake 3.3 adds support for the new IN_LIST operator.
+
+The ``OLD`` behavior for this policy is to ignore the IN_LIST operator.
+The ``NEW`` behavior is to interpret the IN_LIST operator.
+
+This policy was introduced in CMake version 3.3.
+CMake version |release| warns when the policy is not set and uses
+``OLD`` behavior.  Use the :command:`cmake_policy` command to set
+it to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0058.rst b/share/cmake-3.22/Help/policy/CMP0058.rst
new file mode 100644
index 0000000..06cc74b
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0058.rst
@@ -0,0 +1,112 @@
+CMP0058
+-------
+
+.. versionadded:: 3.3
+
+Ninja requires custom command byproducts to be explicit.
+
+When an intermediate file generated during the build is consumed
+by an expensive operation or a large tree of dependents, one may
+reduce the work needed for an incremental rebuild by updating the
+file timestamp only when its content changes.  With this approach
+the generation rule must have a separate output file that is always
+updated with a new timestamp that is newer than any dependencies of
+the rule so that the build tool re-runs the rule only when the input
+changes.  We refer to the separate output file as a rule's *witness*
+and the generated file as a rule's *byproduct*.
+
+Byproducts may not be listed as outputs because their timestamps are
+allowed to be older than the inputs.  No build tools (like ``make``)
+that existed when CMake was designed have a way to express byproducts.
+Therefore CMake versions prior to 3.2 had no way to specify them.
+Projects typically left byproducts undeclared in the rules that
+generate them.  For example:
+
+.. code-block:: cmake
+
+  add_custom_command(
+    OUTPUT witness.txt
+    COMMAND ${CMAKE_COMMAND} -E copy_if_different
+            ${CMAKE_CURRENT_SOURCE_DIR}/input.txt
+            byproduct.txt # timestamp may not change
+    COMMAND ${CMAKE_COMMAND} -E touch witness.txt
+    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/input.txt
+    )
+  add_custom_target(Provider DEPENDS witness.txt)
+  add_custom_command(
+    OUTPUT generated.c
+    COMMAND expensive-task -i byproduct.txt -o generated.c
+    DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/byproduct.txt
+    )
+  add_library(Consumer generated.c)
+  add_dependencies(Consumer Provider)
+
+This works well for all generators except :generator:`Ninja`.
+The Ninja build tool sees a rule listing ``byproduct.txt``
+as a dependency and no rule listing it as an output.  Ninja then
+complains that there is no way to satisfy the dependency and
+stops building even though there are order-only dependencies
+that ensure ``byproduct.txt`` will exist before its consumers
+need it.  See discussion of this problem in `Ninja Issue 760`_
+for further details on why Ninja works this way.
+
+.. _`Ninja Issue 760`: https://github.com/martine/ninja/issues/760
+
+Instead of leaving byproducts undeclared in the rules that generate
+them, Ninja expects byproducts to be listed along with other outputs.
+Such rules may be marked with a ``restat`` option that tells Ninja
+to check the timestamps of outputs after the rules run.  This
+prevents byproducts whose timestamps do not change from causing
+their dependents to re-build unnecessarily.
+
+Since the above approach does not tell CMake what custom command
+generates ``byproduct.txt``, the Ninja generator does not have
+enough information to add the byproduct as an output of any rule.
+CMake 2.8.12 and above work around this problem and allow projects
+using the above approach to build by generating ``phony`` build
+rules to tell Ninja to tolerate such missing files.  However, this
+workaround prevents Ninja from diagnosing a dependency that is
+really missing.  It also works poorly in in-source builds where
+every custom command dependency, even on source files, needs to
+be treated this way because CMake does not have enough information
+to know which files are generated as byproducts of custom commands.
+
+CMake 3.2 introduced the ``BYPRODUCTS`` option to the
+:command:`add_custom_command` and :command:`add_custom_target`
+commands.  This option allows byproducts to be specified explicitly:
+
+.. code-block:: cmake
+
+  add_custom_command(
+    OUTPUT witness.txt
+    BYPRODUCTS byproduct.txt # explicit byproduct specification
+    COMMAND ${CMAKE_COMMAND} -E copy_if_different
+            ${CMAKE_CURRENT_SOURCE_DIR}/input.txt
+            byproduct.txt # timestamp may not change
+  ...
+
+The ``BYPRODUCTS`` option is used by the :generator:`Ninja` generator
+to list byproducts among the outputs of the custom commands that
+generate them, and is ignored by other generators.
+
+CMake 3.3 and above prefer to require projects to specify custom
+command byproducts explicitly so that it can avoid using the
+``phony`` rule workaround altogether.  Policy ``CMP0058`` was
+introduced to provide compatibility with existing projects that
+still need the workaround.
+
+This policy has no effect on generators other than :generator:`Ninja`.
+The ``OLD`` behavior for this policy is to generate Ninja ``phony``
+rules for unknown dependencies in the build tree.  The ``NEW``
+behavior for this policy is to not generate these and instead
+require projects to specify custom command ``BYPRODUCTS`` explicitly.
+
+This policy was introduced in CMake version 3.3.
+CMake version |release| warns when it sees unknown dependencies in
+out-of-source build trees if the policy is not set and then uses
+``OLD`` behavior.  Use the :command:`cmake_policy` command to set
+the policy to ``OLD`` or ``NEW`` explicitly.  The policy setting
+must be in scope at the end of the top-level ``CMakeLists.txt``
+file of the project and has global effect.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0059.rst b/share/cmake-3.22/Help/policy/CMP0059.rst
new file mode 100644
index 0000000..6317d05
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0059.rst
@@ -0,0 +1,21 @@
+CMP0059
+-------
+
+.. versionadded:: 3.3
+
+Do not treat ``DEFINITIONS`` as a built-in directory property.
+
+CMake 3.3 and above no longer make a list of definitions available through
+the :prop_dir:`DEFINITIONS` directory property.  The
+:prop_dir:`COMPILE_DEFINITIONS` directory property may be used instead.
+
+The ``OLD`` behavior for this policy is to provide the list of flags given
+so far to the :command:`add_definitions` command.  The ``NEW`` behavior is
+to behave as a normal user-defined directory property.
+
+This policy was introduced in CMake version 3.3.
+CMake version |release| warns when the policy is not set and uses
+``OLD`` behavior.  Use the :command:`cmake_policy` command to set
+it to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0060.rst b/share/cmake-3.22/Help/policy/CMP0060.rst
new file mode 100644
index 0000000..09257d1
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0060.rst
@@ -0,0 +1,67 @@
+CMP0060
+-------
+
+.. versionadded:: 3.3
+
+Link libraries by full path even in implicit directories.
+
+Policy :policy:`CMP0003` was introduced with the intention of always
+linking library files by full path when a full path is given to the
+:command:`target_link_libraries` command.  However, on some platforms
+(e.g. HP-UX) the compiler front-end adds alternative library search paths
+for the current architecture (e.g. ``/usr/lib/<arch>`` has alternatives
+to libraries in ``/usr/lib`` for the current architecture).
+On such platforms the :command:`find_library` may find a library such as
+``/usr/lib/libfoo.so`` that does not belong to the current architecture.
+
+Prior to policy :policy:`CMP0003` projects would still build in such
+cases because the incorrect library path would be converted to ``-lfoo``
+on the link line and the linker would find the proper library in the
+arch-specific search path provided by the compiler front-end implicitly.
+At the time we chose to remain compatible with such projects by always
+converting library files found in implicit link directories to ``-lfoo``
+flags to ask the linker to search for them.  This approach allowed existing
+projects to continue to build while still linking to libraries outside
+implicit link directories via full path (such as those in the build tree).
+
+CMake does allow projects to override this behavior by using an
+:ref:`IMPORTED library target <Imported Targets>` with its
+:prop_tgt:`IMPORTED_LOCATION` property set to the desired full path to
+a library file.  In fact, many :ref:`Find Modules` are learning to provide
+:ref:`Imported Targets` instead of just the traditional ``Foo_LIBRARIES``
+variable listing library files.  However, this makes the link line
+generated for a library found by a Find Module depend on whether it
+is linked through an imported target or not, which is inconsistent.
+Furthermore, this behavior has been a source of confusion because the
+generated link line for a library file depends on its location.  It is
+also problematic for projects trying to link statically because flags
+like ``-Wl,-Bstatic -lfoo -Wl,-Bdynamic`` may be used to help the linker
+select ``libfoo.a`` instead of ``libfoo.so`` but then leak dynamic linking
+to following libraries.  (See the :prop_tgt:`LINK_SEARCH_END_STATIC`
+target property for a solution typically used for that problem.)
+
+When the special case for libraries in implicit link directories was first
+introduced the list of implicit link directories was simply hard-coded
+(e.g. ``/lib``, ``/usr/lib``, and a few others).  Since that time, CMake
+has learned to detect the implicit link directories used by the compiler
+front-end.  If necessary, the :command:`find_library` command could be
+taught to use this information to help find libraries of the proper
+architecture.
+
+For these reasons, CMake 3.3 and above prefer to drop the special case
+and link libraries by full path even when they are in implicit link
+directories.  Policy ``CMP0060`` provides compatibility for existing
+projects.
+
+The ``OLD`` behavior for this policy is to ask the linker to search for
+libraries whose full paths are known to be in implicit link directories.
+The ``NEW`` behavior for this policy is to link libraries by full path even
+if they are in implicit link directories.
+
+This policy was introduced in CMake version 3.3.  Unlike most policies,
+CMake version |release| does *not* warn by default when this policy
+is not set and simply uses ``OLD`` behavior.  See documentation of the
+:variable:`CMAKE_POLICY_WARNING_CMP0060 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
+variable to control the warning.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0061.rst b/share/cmake-3.22/Help/policy/CMP0061.rst
new file mode 100644
index 0000000..aca551d
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0061.rst
@@ -0,0 +1,28 @@
+CMP0061
+-------
+
+.. versionadded:: 3.3
+
+CTest does not by default tell ``make`` to ignore errors (``-i``).
+
+The :command:`ctest_build` and :command:`build_command` commands no
+longer generate build commands for :ref:`Makefile Generators` with
+the ``-i`` option.  Previously this was done to help build as much
+of tested projects as possible.  However, this behavior is not
+consistent with other generators and also causes the return code
+of the ``make`` tool to be meaningless.
+
+Of course users may still add this option manually by setting
+:variable:`CTEST_BUILD_COMMAND` or the ``MAKECOMMAND`` cache entry.
+See the :ref:`CTest Build Step` ``MakeCommand`` setting documentation
+for their effects.
+
+The ``OLD`` behavior for this policy is to add ``-i`` to ``make``
+calls in CTest.  The ``NEW`` behavior for this policy is to not
+add ``-i``.
+
+This policy was introduced in CMake version 3.3.  Unlike most policies,
+CMake version |release| does *not* warn when this policy is not set and
+simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0062.rst b/share/cmake-3.22/Help/policy/CMP0062.rst
new file mode 100644
index 0000000..01e93f0
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0062.rst
@@ -0,0 +1,31 @@
+CMP0062
+-------
+
+.. versionadded:: 3.3
+
+Disallow :command:`install` of :command:`export` result.
+
+The :command:`export()` command generates a file containing
+:ref:`Imported Targets`, which is suitable for use from the build
+directory.  It is not suitable for installation because it contains absolute
+paths to buildsystem locations, and is particular to a single build
+configuration.
+
+The :command:`install(EXPORT)` generates and installs files which contain
+:ref:`Imported Targets`.  These files are generated with relative paths
+(unless the user specifies absolute paths), and are designed for
+multi-configuration use.  See :ref:`Creating Packages` for more.
+
+CMake 3.3 no longer allows the use of the :command:`install(FILES)` command
+with the result of the :command:`export()` command.
+
+The ``OLD`` behavior for this policy is to allow installing the result of
+an :command:`export()` command.  The ``NEW`` behavior for this policy is
+not to allow installing the result of an :command:`export()` command.
+
+This policy was introduced in CMake version 3.3.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.  Use
+the :command:`cmake_policy()` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0063.rst b/share/cmake-3.22/Help/policy/CMP0063.rst
new file mode 100644
index 0000000..fec3ad8
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0063.rst
@@ -0,0 +1,30 @@
+CMP0063
+-------
+
+.. versionadded:: 3.3
+
+Honor visibility properties for all target types.
+
+The :prop_tgt:`<LANG>_VISIBILITY_PRESET` and
+:prop_tgt:`VISIBILITY_INLINES_HIDDEN` target properties affect visibility
+of symbols during dynamic linking.  When first introduced these properties
+affected compilation of sources only in shared libraries, module libraries,
+and executables with the :prop_tgt:`ENABLE_EXPORTS` property set.  This
+was sufficient for the basic use cases of shared libraries and executables
+with plugins.  However, some sources may be compiled as part of static
+libraries or object libraries and then linked into a shared library later.
+CMake 3.3 and above prefer to honor these properties for sources compiled
+in all target types.  This policy preserves compatibility for projects
+expecting the properties to work only for some target types.
+
+The ``OLD`` behavior for this policy is to ignore the visibility properties
+for static libraries, object libraries, and executables without exports.
+The ``NEW`` behavior for this policy is to honor the visibility properties
+for all target types.
+
+This policy was introduced in CMake version 3.3.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.  Use
+the :command:`cmake_policy()` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0064.rst b/share/cmake-3.22/Help/policy/CMP0064.rst
new file mode 100644
index 0000000..0c20c13
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0064.rst
@@ -0,0 +1,19 @@
+CMP0064
+-------
+
+.. versionadded:: 3.4
+
+Recognize ``TEST`` as a operator for the :command:`if` command.
+
+The ``TEST`` operator was added to the :command:`if` command to determine if a
+given test name was created by the :command:`add_test` command.
+
+The ``OLD`` behavior for this policy is to ignore the ``TEST`` operator.
+The ``NEW`` behavior is to interpret the ``TEST`` operator.
+
+This policy was introduced in CMake version 3.4.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.  Use
+the :command:`cmake_policy()` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0065.rst b/share/cmake-3.22/Help/policy/CMP0065.rst
new file mode 100644
index 0000000..8968b91
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0065.rst
@@ -0,0 +1,29 @@
+CMP0065
+-------
+
+.. versionadded:: 3.4
+
+Do not add flags to export symbols from executables without
+the :prop_tgt:`ENABLE_EXPORTS` target property.
+
+CMake 3.3 and below, for historical reasons, always linked executables
+on some platforms with flags like ``-rdynamic`` to export symbols from
+the executables for use by any plugins they may load via ``dlopen``.
+CMake 3.4 and above prefer to do this only for executables that are
+explicitly marked with the :prop_tgt:`ENABLE_EXPORTS` target property.
+
+The ``OLD`` behavior of this policy is to always use the additional link
+flags when linking executables regardless of the value of the
+:prop_tgt:`ENABLE_EXPORTS` target property.
+
+The ``NEW`` behavior of this policy is to only use the additional link
+flags when linking executables if the :prop_tgt:`ENABLE_EXPORTS` target
+property is set to ``True``.
+
+This policy was introduced in CMake version 3.4.  Unlike most policies,
+CMake version |release| does *not* warn by default when this policy
+is not set and simply uses ``OLD`` behavior.  See documentation of the
+:variable:`CMAKE_POLICY_WARNING_CMP0065 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
+variable to control the warning.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0066.rst b/share/cmake-3.22/Help/policy/CMP0066.rst
new file mode 100644
index 0000000..b08430f
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0066.rst
@@ -0,0 +1,29 @@
+CMP0066
+-------
+
+.. versionadded:: 3.7
+
+Honor per-config flags in :command:`try_compile` source-file signature.
+
+The source file signature of the :command:`try_compile` command uses the value
+of the :variable:`CMAKE_<LANG>_FLAGS` variable in the test project so that the
+test compilation works as it would in the main project.  However, CMake 3.6 and
+below do not also honor config-specific compiler flags such as those in the
+:variable:`CMAKE_<LANG>_FLAGS_DEBUG` variable.  CMake 3.7 and above prefer to
+honor config-specific compiler flags too.  This policy provides compatibility
+for projects that do not expect config-specific compiler flags to be used.
+
+The ``OLD`` behavior of this policy is to ignore config-specific flag
+variables like :variable:`CMAKE_<LANG>_FLAGS_DEBUG` and only use CMake's
+built-in defaults for the current compiler and platform.
+
+The ``NEW`` behavior of this policy is to honor config-specific flag
+variabldes like :variable:`CMAKE_<LANG>_FLAGS_DEBUG`.
+
+This policy was introduced in CMake version 3.7.  Unlike most policies,
+CMake version |release| does *not* warn by default when this policy
+is not set and simply uses ``OLD`` behavior.  See documentation of the
+:variable:`CMAKE_POLICY_WARNING_CMP0066 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
+variable to control the warning.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0067.rst b/share/cmake-3.22/Help/policy/CMP0067.rst
new file mode 100644
index 0000000..8358bb2
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0067.rst
@@ -0,0 +1,39 @@
+CMP0067
+-------
+
+.. versionadded:: 3.8
+
+Honor language standard in :command:`try_compile` source-file signature.
+
+The :command:`try_compile` source file signature is intended to allow
+callers to check whether they will be able to compile a given source file
+with the current toolchain.  In order to match compiler behavior, any
+language standard mode should match.  However, CMake 3.7 and below did not
+do this.  CMake 3.8 and above prefer to honor the language standard settings
+for ``C``, ``CXX`` (C++), and ``CUDA`` using the values of the variables:
+
+* :variable:`CMAKE_C_STANDARD`
+* :variable:`CMAKE_C_STANDARD_REQUIRED`
+* :variable:`CMAKE_C_EXTENSIONS`
+* :variable:`CMAKE_CXX_STANDARD`
+* :variable:`CMAKE_CXX_STANDARD_REQUIRED`
+* :variable:`CMAKE_CXX_EXTENSIONS`
+* :variable:`CMAKE_CUDA_STANDARD`
+* :variable:`CMAKE_CUDA_STANDARD_REQUIRED`
+* :variable:`CMAKE_CUDA_EXTENSIONS`
+
+This policy provides compatibility for projects that do not expect
+the language standard settings to be used automatically.
+
+The ``OLD`` behavior of this policy is to ignore language standard
+setting variables when generating the ``try_compile`` test project.
+The ``NEW`` behavior of this policy is to honor language standard
+setting variables.
+
+This policy was introduced in CMake version 3.8.  Unlike most policies,
+CMake version |release| does *not* warn by default when this policy
+is not set and simply uses ``OLD`` behavior.  See documentation of the
+:variable:`CMAKE_POLICY_WARNING_CMP0067 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
+variable to control the warning.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0068.rst b/share/cmake-3.22/Help/policy/CMP0068.rst
new file mode 100644
index 0000000..5d2a4b1
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0068.rst
@@ -0,0 +1,37 @@
+CMP0068
+-------
+
+.. versionadded:: 3.9
+
+``RPATH`` settings on macOS do not affect ``install_name``.
+
+CMake 3.9 and newer remove any effect the following settings may have on the
+``install_name`` of a target on macOS:
+
+* :prop_tgt:`BUILD_WITH_INSTALL_RPATH` target property
+* :prop_tgt:`SKIP_BUILD_RPATH` target property
+* :variable:`CMAKE_SKIP_RPATH` variable
+* :variable:`CMAKE_SKIP_INSTALL_RPATH` variable
+
+Previously, setting :prop_tgt:`BUILD_WITH_INSTALL_RPATH` had the effect of
+setting both the ``install_name`` of a target to :prop_tgt:`INSTALL_NAME_DIR`
+and the ``RPATH`` to :prop_tgt:`INSTALL_RPATH`.  In CMake 3.9, it only affects
+setting of ``RPATH``.  However, if one wants :prop_tgt:`INSTALL_NAME_DIR` to
+apply to the target in the build tree, one may set
+:prop_tgt:`BUILD_WITH_INSTALL_NAME_DIR`.
+
+If :prop_tgt:`SKIP_BUILD_RPATH`, :variable:`CMAKE_SKIP_RPATH` or
+:variable:`CMAKE_SKIP_INSTALL_RPATH` were used to strip the directory portion
+of the ``install_name`` of a target, one may set ``INSTALL_NAME_DIR=""``
+instead.
+
+The ``OLD`` behavior of this policy is to use the ``RPATH`` settings for
+``install_name`` on macOS.  The ``NEW`` behavior of this policy is to ignore
+the ``RPATH`` settings for ``install_name`` on macOS.
+
+This policy was introduced in CMake version 3.9.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0069.rst b/share/cmake-3.22/Help/policy/CMP0069.rst
new file mode 100644
index 0000000..eafac45
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0069.rst
@@ -0,0 +1,94 @@
+CMP0069
+-------
+
+.. versionadded:: 3.9
+
+:prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` is enforced when enabled.
+
+CMake 3.9 and newer prefer to add IPO flags whenever the
+:prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property is enabled and
+produce an error if flags are not known to CMake for the current compiler.
+Since a given compiler may not support IPO flags in all environments in which
+it is used, it is now the project's responsibility to use the
+:module:`CheckIPOSupported` module to check for support before enabling the
+:prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property.  This approach
+allows a project to conditionally activate IPO when supported.  It also
+allows an end user to set the :variable:`CMAKE_INTERPROCEDURAL_OPTIMIZATION`
+variable in an environment known to support IPO even if the project does
+not enable the property.
+
+Since CMake 3.8 and lower only honored :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION`
+for the Intel compiler on Linux, some projects may unconditionally enable the
+target property.  Policy ``CMP0069`` provides compatibility with such projects.
+
+This policy takes effect whenever the IPO property is enabled.  The ``OLD``
+behavior for this policy is to add IPO flags only for Intel compiler on Linux.
+The ``NEW`` behavior for this policy is to add IPO flags for the current
+compiler or produce an error if CMake does not know the flags.
+
+This policy was introduced in CMake version 3.9.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
+
+Examples
+^^^^^^^^
+
+Behave like CMake 3.8 and do not apply any IPO flags except for Intel compiler
+on Linux:
+
+.. code-block:: cmake
+
+  cmake_minimum_required(VERSION 3.8)
+  project(foo)
+
+  # ...
+
+  set_property(TARGET ... PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
+
+Use the :module:`CheckIPOSupported` module to detect whether IPO is
+supported by the current compiler, environment, and CMake version.
+Produce a fatal error if support is not available:
+
+.. code-block:: cmake
+
+  cmake_minimum_required(VERSION 3.9) # CMP0069 NEW
+  project(foo)
+
+  include(CheckIPOSupported)
+  check_ipo_supported()
+
+  # ...
+
+  set_property(TARGET ... PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
+
+Apply IPO flags only if compiler supports it:
+
+.. code-block:: cmake
+
+  cmake_minimum_required(VERSION 3.9) # CMP0069 NEW
+  project(foo)
+
+  include(CheckIPOSupported)
+
+  # ...
+
+  check_ipo_supported(RESULT result)
+  if(result)
+    set_property(TARGET ... PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
+  endif()
+
+Apply IPO flags without any checks.  This may lead to build errors if IPO
+is not supported by the compiler in the current environment.  Produce an
+error if CMake does not know IPO flags for the current compiler:
+
+.. code-block:: cmake
+
+  cmake_minimum_required(VERSION 3.9) # CMP0069 NEW
+  project(foo)
+
+  # ...
+
+  set_property(TARGET ... PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
diff --git a/share/cmake-3.22/Help/policy/CMP0070.rst b/share/cmake-3.22/Help/policy/CMP0070.rst
new file mode 100644
index 0000000..c880d1f
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0070.rst
@@ -0,0 +1,27 @@
+CMP0070
+-------
+
+.. versionadded:: 3.10
+
+Define :command:`file(GENERATE)` behavior for relative paths.
+
+CMake 3.10 and newer define that relative paths given to ``INPUT`` and
+``OUTPUT`` arguments of ``file(GENERATE)`` are interpreted relative to the
+current source and binary directories, respectively.  CMake 3.9 and lower did
+not define any behavior for relative paths but did not diagnose them either
+and accidentally treated them relative to the process working directory.
+Policy ``CMP0070`` provides compatibility with projects that used the old
+undefined behavior.
+
+This policy affects behavior of relative paths given to ``file(GENERATE)``.
+The ``OLD`` behavior for this policy is to treat the paths relative to the
+working directory of CMake.  The ``NEW`` behavior for this policy is to
+interpret relative paths with respect to the current source or binary
+directory of the caller.
+
+This policy was introduced in CMake version 3.10.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0071.rst b/share/cmake-3.22/Help/policy/CMP0071.rst
new file mode 100644
index 0000000..700d3b0
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0071.rst
@@ -0,0 +1,44 @@
+CMP0071
+-------
+
+.. versionadded:: 3.10
+
+Let :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` process
+:prop_sf:`GENERATED` files.
+
+Since version 3.10, CMake processes **regular** and :prop_sf:`GENERATED`
+source files in :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
+In earlier CMake versions, only **regular** source files were processed.
+:prop_sf:`GENERATED` source files were ignored silently.
+
+This policy affects how source files that are :prop_sf:`GENERATED`
+get treated in :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
+
+The ``OLD`` behavior for this policy is to ignore :prop_sf:`GENERATED`
+source files in :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
+
+The ``NEW`` behavior for this policy is to process :prop_sf:`GENERATED`
+source files in :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` just like regular
+source files.
+
+.. note::
+
+  To silence the ``CMP0071`` warning source files can be excluded from
+  :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` processing by setting the
+  source file properties :prop_sf:`SKIP_AUTOMOC`, :prop_sf:`SKIP_AUTOUIC` or
+  :prop_sf:`SKIP_AUTOGEN`.
+
+Source skip example::
+
+  # ...
+  set_property(SOURCE /path/to/file1.h PROPERTY SKIP_AUTOMOC ON)
+  set_property(SOURCE /path/to/file2.h PROPERTY SKIP_AUTOUIC ON)
+  set_property(SOURCE /path/to/file3.h PROPERTY SKIP_AUTOGEN ON)
+  # ...
+
+This policy was introduced in CMake version 3.10.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0072.rst b/share/cmake-3.22/Help/policy/CMP0072.rst
new file mode 100644
index 0000000..1dcdfef
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0072.rst
@@ -0,0 +1,28 @@
+CMP0072
+-------
+
+.. versionadded:: 3.11
+
+:module:`FindOpenGL` prefers GLVND by default when available.
+
+The :module:`FindOpenGL` module provides an ``OpenGL::GL`` target and an
+``OPENGL_LIBRARIES`` variable for projects to use for legacy GL interfaces.
+When both a legacy GL library (e.g. ``libGL.so``) and GLVND libraries
+for OpenGL and GLX (e.g. ``libOpenGL.so`` and ``libGLX.so``) are available,
+the module must choose between them.  It documents an ``OpenGL_GL_PREFERENCE``
+variable that can be used to specify an explicit preference.  When no such
+preference is set, the module must choose a default preference.
+
+CMake 3.11 and above prefer to choose GLVND libraries.  This policy provides
+compatibility with projects that expect the legacy GL library to be used.
+
+The ``OLD`` behavior for this policy is to set ``OpenGL_GL_PREFERENCE`` to
+``LEGACY``.  The ``NEW`` behavior for this policy is to set
+``OpenGL_GL_PREFERENCE`` to ``GLVND``.
+
+This policy was introduced in CMake version 3.11.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0073.rst b/share/cmake-3.22/Help/policy/CMP0073.rst
new file mode 100644
index 0000000..8f0345c
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0073.rst
@@ -0,0 +1,27 @@
+CMP0073
+-------
+
+.. versionadded:: 3.12
+
+Do not produce legacy ``_LIB_DEPENDS`` cache entries.
+
+Ancient CMake versions once used ``<tgt>_LIB_DEPENDS`` cache entries to
+propagate library link dependencies.  This has long been done by other
+means, leaving the :command:`export_library_dependencies` command as the
+only user of these values.  That command has long been disallowed by
+policy :policy:`CMP0033`, but the ``<tgt>_LIB_DEPENDS`` cache entries
+were left for compatibility with possible non-standard uses by projects.
+
+CMake 3.12 and above now prefer to not produce these cache entries
+at all.  This policy provides compatibility with projects that have
+not been updated to avoid using them.
+
+The ``OLD`` behavior for this policy is to set ``<tgt>_LIB_DEPENDS`` cache
+entries.  The ``NEW`` behavior for this policy is to not set them.
+
+This policy was introduced in CMake version 3.12.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike most policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0074.rst b/share/cmake-3.22/Help/policy/CMP0074.rst
new file mode 100644
index 0000000..863bbb2
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0074.rst
@@ -0,0 +1,25 @@
+CMP0074
+-------
+
+.. versionadded:: 3.12
+
+:command:`find_package` uses ``<PackageName>_ROOT`` variables.
+
+In CMake 3.12 and above the :command:`find_package(<PackageName>)` command now
+searches prefixes specified by the :variable:`<PackageName>_ROOT` CMake
+variable and the :envvar:`<PackageName>_ROOT` environment variable.
+Package roots are maintained as a stack so nested calls to all ``find_*``
+commands inside find modules and config packages also search the roots as
+prefixes.  This policy provides compatibility with projects that have not been
+updated to avoid using ``<PackageName>_ROOT`` variables for other purposes.
+
+The ``OLD`` behavior for this policy is to ignore ``<PackageName>_ROOT``
+variables.  The ``NEW`` behavior for this policy is to use
+``<PackageName>_ROOT`` variables.
+
+This policy was introduced in CMake version 3.12.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0075.rst b/share/cmake-3.22/Help/policy/CMP0075.rst
new file mode 100644
index 0000000..4213782
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0075.rst
@@ -0,0 +1,28 @@
+CMP0075
+-------
+
+.. versionadded:: 3.12
+
+Include file check macros honor ``CMAKE_REQUIRED_LIBRARIES``.
+
+In CMake 3.12 and above, the
+
+* ``check_include_file`` macro in the :module:`CheckIncludeFile` module, the
+* ``check_include_file_cxx`` macro in the
+  :module:`CheckIncludeFileCXX` module, and the
+* ``check_include_files`` macro in the :module:`CheckIncludeFiles` module
+
+now prefer to link the check executable to the libraries listed in the
+``CMAKE_REQUIRED_LIBRARIES`` variable.  This policy provides compatibility
+with projects that have not been updated to expect this behavior.
+
+The ``OLD`` behavior for this policy is to ignore ``CMAKE_REQUIRED_LIBRARIES``
+in the include file check macros.  The ``NEW`` behavior of this policy is to
+honor ``CMAKE_REQUIRED_LIBRARIES`` in the include file check macros.
+
+This policy was introduced in CMake version 3.12.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0076.rst b/share/cmake-3.22/Help/policy/CMP0076.rst
new file mode 100644
index 0000000..edca742
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0076.rst
@@ -0,0 +1,28 @@
+CMP0076
+-------
+
+.. versionadded:: 3.13
+
+The :command:`target_sources` command converts relative paths to absolute.
+
+In CMake 3.13 and above, the :command:`target_sources` command now converts
+relative source file paths to absolute paths in the following cases:
+
+* Source files are added to the target's :prop_tgt:`INTERFACE_SOURCES`
+  property.
+* The target's :prop_tgt:`SOURCE_DIR` property differs from
+  :variable:`CMAKE_CURRENT_SOURCE_DIR`.
+
+A path that begins with a generator expression is always left unmodified.
+
+This policy provides compatibility with projects that have not been updated
+to expect this behavior.  The ``OLD`` behavior for this policy is to leave
+all relative source file paths unmodified.  The ``NEW`` behavior of this
+policy is to convert relative paths to absolute according to above rules.
+
+This policy was introduced in CMake version 3.13.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0077.rst b/share/cmake-3.22/Help/policy/CMP0077.rst
new file mode 100644
index 0000000..482125a
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0077.rst
@@ -0,0 +1,60 @@
+CMP0077
+-------
+
+.. versionadded:: 3.13
+
+:command:`option` honors normal variables.
+
+The :command:`option` command is typically used to create a cache entry
+to allow users to set the option.  However, there are cases in which a
+normal (non-cached) variable of the same name as the option may be
+defined by the project prior to calling the :command:`option` command.
+For example, a project that embeds another project as a subdirectory
+may want to hard-code options of the subproject to build the way it needs.
+
+For historical reasons in CMake 3.12 and below the :command:`option`
+command *removes* a normal (non-cached) variable of the same name when:
+
+* a cache entry of the specified name does not exist at all, or
+* a cache entry of the specified name exists but has not been given
+  a type (e.g. via ``-D<name>=ON`` on the command line).
+
+In both of these cases (typically on the first run in a new build tree),
+the :command:`option` command gives the cache entry type ``BOOL`` and
+removes any normal (non-cached) variable of the same name.  In the
+remaining case that the cache entry of the specified name already
+exists and has a type (typically on later runs in a build tree), the
+:command:`option` command changes nothing and any normal variable of
+the same name remains set.
+
+In CMake 3.13 and above the :command:`option` command prefers to
+do nothing when a normal variable of the given name already exists.
+It does not create or update a cache entry or remove the normal variable.
+The new behavior is consistent between the first and later runs in a
+build tree.  This policy provides compatibility with projects that have
+not been updated to expect the new behavior.
+
+When the :command:`option` command sees a normal variable of the given
+name:
+
+* The ``OLD`` behavior for this policy is to proceed even when a normal
+  variable of the same name exists.  If the cache entry does not already
+  exist and have a type then it is created and/or given a type and the
+  normal variable is removed.
+
+* The ``NEW`` behavior for this policy is to do nothing when a normal
+  variable of the same name exists.  The normal variable is not removed.
+  The cache entry is not created or updated and is ignored if it exists.
+
+See :policy:`CMP0126` for a similar policy for the :command:`set(CACHE)`
+command, but note that there are some differences in ``NEW`` behavior
+between the two policies.
+
+This policy was introduced in CMake version 3.13.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly within a project.  Use the :variable:`CMAKE_POLICY_DEFAULT_CMP0077
+<CMAKE_POLICY_DEFAULT_CMP\<NNNN\>>` variable to set the policy for
+a third-party project in a subdirectory without modifying it.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0078.rst b/share/cmake-3.22/Help/policy/CMP0078.rst
new file mode 100644
index 0000000..89fdb0b
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0078.rst
@@ -0,0 +1,26 @@
+CMP0078
+-------
+
+.. versionadded:: 3.13
+
+:module:`UseSWIG` generates standard target names.
+
+Starting with CMake 3.13, :module:`UseSWIG` generates now standard target
+names. This policy provides compatibility with projects that expect the legacy
+behavior.
+
+The ``OLD`` behavior for this policy relies on
+``UseSWIG_TARGET_NAME_PREFERENCE`` variable that can be used to specify an
+explicit preference.  The value may be one of:
+
+* ``LEGACY``: legacy strategy is applied. Variable
+  ``SWIG_MODULE_<name>_REAL_NAME`` must be used to get real target name.
+  This is the default if not specified.
+* ``STANDARD``: target name matches specified name.
+
+This policy was introduced in CMake version 3.13.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0079.rst b/share/cmake-3.22/Help/policy/CMP0079.rst
new file mode 100644
index 0000000..01aa08d
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0079.rst
@@ -0,0 +1,42 @@
+CMP0079
+-------
+
+.. versionadded:: 3.13
+
+:command:`target_link_libraries` allows use with targets in other directories.
+
+Prior to CMake 3.13 the :command:`target_link_libraries` command did not
+accept targets not created in the calling directory as its first argument
+for calls that update the :prop_tgt:`LINK_LIBRARIES` of the target itself.
+It did accidentally accept targets from other directories on calls that
+only update the :prop_tgt:`INTERFACE_LINK_LIBRARIES`, but would simply
+add entries to the property as if the call were made in the original
+directory.  Thus link interface libraries specified this way were always
+looked up by generators in the scope of the original target rather than
+in the scope that called :command:`target_link_libraries`.
+
+CMake 3.13 now allows the :command:`target_link_libraries` command to
+be called from any directory to add link dependencies and link interface
+libraries to targets created in other directories.  The entries are added
+to :prop_tgt:`LINK_LIBRARIES` and :prop_tgt:`INTERFACE_LINK_LIBRARIES`
+using a special (internal) suffix to tell the generators to look up the
+names in the calling scope rather than the scope that created the target.
+
+This policy provides compatibility with projects that already use
+:command:`target_link_libraries` with the ``INTERFACE`` keyword
+on a target in another directory to add :prop_tgt:`INTERFACE_LINK_LIBRARIES`
+entries to be looked up in the target's directory.  Such projects should
+be updated to be aware of the new scoping rules in that case.
+
+The ``OLD`` behavior of this policy is to disallow
+:command:`target_link_libraries` calls naming targets from another directory
+except in the previously accidentally allowed case of using the ``INTERFACE``
+keyword only.  The ``NEW`` behavior of this policy is to allow all such
+calls but use the new scoping rules.
+
+This policy was introduced in CMake version 3.13.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0080.rst b/share/cmake-3.22/Help/policy/CMP0080.rst
new file mode 100644
index 0000000..789efea
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0080.rst
@@ -0,0 +1,27 @@
+CMP0080
+-------
+
+.. versionadded:: 3.13
+
+:module:`BundleUtilities` cannot be included at configure time.
+
+The macros provided by :module:`BundleUtilities` are intended to be invoked
+at install time rather than at configure time, because they depend on the
+listed targets already existing at the time they are invoked. If they are
+invoked at configure time, the targets haven't been built yet, and the
+commands will fail.
+
+This policy restricts the inclusion of :module:`BundleUtilities` to
+``cmake -P`` style scripts and install rules. Specifically, it looks for the
+presence of :variable:`CMAKE_GENERATOR` and throws a fatal error if it exists.
+
+The ``OLD`` behavior of this policy is to allow :module:`BundleUtilities` to
+be included at configure time. The ``NEW`` behavior of this policy is to
+disallow such inclusion.
+
+This policy was introduced in CMake version 3.13.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0081.rst b/share/cmake-3.22/Help/policy/CMP0081.rst
new file mode 100644
index 0000000..d1573dd
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0081.rst
@@ -0,0 +1,24 @@
+CMP0081
+-------
+
+.. versionadded:: 3.13
+
+Relative paths not allowed in :prop_tgt:`LINK_DIRECTORIES` target property.
+
+CMake 3.12 and lower allowed the :prop_dir:`LINK_DIRECTORIES` directory
+property to contain relative paths.  The base path for such relative
+entries is not well defined.  CMake 3.13 and later will issue a
+``FATAL_ERROR`` if the :prop_tgt:`LINK_DIRECTORIES` target property
+(which is initialized by the :prop_dir:`LINK_DIRECTORIES` directory property)
+contains a relative path.
+
+The ``OLD`` behavior for this policy is not to warn about relative paths
+in the :prop_tgt:`LINK_DIRECTORIES` target property.  The ``NEW`` behavior for
+this policy is to issue a ``FATAL_ERROR`` if :prop_tgt:`LINK_DIRECTORIES`
+contains a relative path.
+
+This policy was introduced in CMake version 3.13.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.  Use
+the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0082.rst b/share/cmake-3.22/Help/policy/CMP0082.rst
new file mode 100644
index 0000000..25c9580
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0082.rst
@@ -0,0 +1,28 @@
+CMP0082
+-------
+
+.. versionadded:: 3.14
+
+Install rules from :command:`add_subdirectory` calls are interleaved with
+those in caller.
+
+CMake 3.13 and lower ran the install rules from :command:`add_subdirectory`
+after all other install rules, even if :command:`add_subdirectory` was called
+before the other install rules.  CMake 3.14 and above prefer to interleave
+these :command:`add_subdirectory` install rules with the others so that
+they are run in the order they are declared.  This policy provides
+compatibility for projects that have not been updated to expect the
+new behavior.
+
+The ``OLD`` behavior for this policy is to run the install rules from
+:command:`add_subdirectory` after the other install rules.  The ``NEW``
+behavior for this policy is to run all install rules in the order they are
+declared.
+
+This policy was introduced in CMake version 3.14.  Unlike most policies,
+CMake version |release| does *not* warn by default when this policy
+is not set and simply uses ``OLD`` behavior.  See documentation of the
+:variable:`CMAKE_POLICY_WARNING_CMP0082 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
+variable to control the warning.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0083.rst b/share/cmake-3.22/Help/policy/CMP0083.rst
new file mode 100644
index 0000000..7518ee3
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0083.rst
@@ -0,0 +1,71 @@
+CMP0083
+-------
+
+.. versionadded:: 3.14
+
+To control generation of Position Independent Executable (``PIE``) or not, some
+flags are required at link time.
+
+CMake 3.13 and lower did not add these link flags when
+:prop_tgt:`POSITION_INDEPENDENT_CODE` is set.
+
+The ``OLD`` behavior for this policy is to not manage ``PIE`` link flags. The
+``NEW`` behavior is to add link flags if :prop_tgt:`POSITION_INDEPENDENT_CODE`
+is set:
+
+* Set to ``TRUE``: flags to produce a position independent executable are
+  passed to the linker step. For example ``-pie`` for ``GCC``.
+* Set to ``FALSE``: flags not to produce a position independent executable are
+  passed to the linker step. For example ``-no-pie`` for ``GCC``.
+* Not set: no flags are passed to the linker step.
+
+Since a given linker may not support ``PIE`` flags in all environments in
+which it is used, it is the project's responsibility to use the
+:module:`CheckPIESupported` module to check for support to ensure that the
+:prop_tgt:`POSITION_INDEPENDENT_CODE` target property for executables will be
+honored at link time.
+
+This policy was introduced in CMake version 3.14. Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike most policies, CMake version |release| does not warn when this policy is
+not set and simply uses ``OLD`` behavior.
+
+.. Note::
+
+   Android platform has a special handling of ``PIE`` so it is not required
+   to use the :module:`CheckPIESupported` module to ensure flags are passed to
+   the linker.
+
+.. include:: DEPRECATED.txt
+
+Examples
+^^^^^^^^
+
+Behave like CMake 3.13 and do not apply any ``PIE`` flags at link stage.
+
+.. code-block:: cmake
+
+  cmake_minimum_required(VERSION 3.13)
+  project(foo)
+
+  # ...
+
+  add_executable(foo ...)
+  set_property(TARGET foo PROPERTY POSITION_INDEPENDENT_CODE TRUE)
+
+Use the :module:`CheckPIESupported` module to detect whether ``PIE`` is
+supported by the current linker and environment.  Apply ``PIE`` flags only
+if the linker supports them.
+
+.. code-block:: cmake
+
+  cmake_minimum_required(VERSION 3.14) # CMP0083 NEW
+  project(foo)
+
+  include(CheckPIESupported)
+  check_pie_supported()
+
+  # ...
+
+  add_executable(foo ...)
+  set_property(TARGET foo PROPERTY POSITION_INDEPENDENT_CODE TRUE)
diff --git a/share/cmake-3.22/Help/policy/CMP0084.rst b/share/cmake-3.22/Help/policy/CMP0084.rst
new file mode 100644
index 0000000..9547701
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0084.rst
@@ -0,0 +1,28 @@
+CMP0084
+-------
+
+.. versionadded:: 3.14
+
+The :module:`FindQt` module does not exist for :command:`find_package`.
+
+The existence of :module:`FindQt` means that for Qt upstream to provide
+package config files that can be found by ``find_package(Qt)``, the consuming
+project has to explicitly specify ``find_package(Qt CONFIG)``. Removing this
+module gives Qt a path forward for exporting its own config files which can
+easily be found by consuming projects.
+
+This policy pretends that CMake's internal :module:`FindQt` module does not
+exist for :command:`find_package`. If a project really wants to use Qt 3 or 4,
+it can call ``find_package(Qt[34])``, ``include(FindQt)``, or add
+:module:`FindQt` to their :variable:`CMAKE_MODULE_PATH`.
+
+The ``OLD`` behavior of this policy is for :module:`FindQt` to exist for
+:command:`find_package`. The ``NEW`` behavior is to pretend that it doesn't
+exist for :command:`find_package`.
+
+This policy was introduced in CMake version 3.14.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0085.rst b/share/cmake-3.22/Help/policy/CMP0085.rst
new file mode 100644
index 0000000..d90c72f
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0085.rst
@@ -0,0 +1,23 @@
+CMP0085
+-------
+
+.. versionadded:: 3.14
+
+``$<IN_LIST:...>`` handles empty list items.
+
+In CMake 3.13 and lower, the ``$<IN_LIST:...>`` generator expression always
+returned ``0`` if the first argument was empty, even if the list contained an
+empty item. This behavior is inconsistent with the ``IN_LIST`` behavior of
+:command:`if`, which this generator expression is meant to emulate. CMake 3.14
+and later handles this case correctly.
+
+The ``OLD`` behavior of this policy is for ``$<IN_LIST:...>`` to always return
+``0`` if the first argument is empty. The ``NEW`` behavior is to return ``1``
+if the first argument is empty and the list contains an empty item.
+
+This policy was introduced in CMake version 3.14.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0086.rst b/share/cmake-3.22/Help/policy/CMP0086.rst
new file mode 100644
index 0000000..725b502
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0086.rst
@@ -0,0 +1,22 @@
+CMP0086
+-------
+
+.. versionadded:: 3.14
+
+:module:`UseSWIG` honors ``SWIG_MODULE_NAME`` via ``-module`` flag.
+
+Starting with CMake 3.14, :module:`UseSWIG` passes option
+``-module <module_name>`` to ``SWIG`` compiler if the file property
+``SWIG_MODULE_NAME`` is specified. This policy provides compatibility with
+projects that expect the legacy behavior.
+
+The ``OLD`` behavior for this policy is to never pass ``-module`` option.
+The ``NEW`` behavior is to pass ``-module`` option to ``SWIG`` compiler if
+``SWIG_MODULE_NAME`` is specified.
+
+This policy was introduced in CMake version 3.14.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0087.rst b/share/cmake-3.22/Help/policy/CMP0087.rst
new file mode 100644
index 0000000..4a65506
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0087.rst
@@ -0,0 +1,31 @@
+CMP0087
+-------
+
+.. versionadded:: 3.14
+
+:command:`install(CODE)` and :command:`install(SCRIPT)` support generator
+expressions.
+
+In CMake 3.13 and earlier, :command:`install(CODE)` and
+:command:`install(SCRIPT)` did not evaluate generator expressions.  CMake 3.14
+and later will evaluate generator expressions for :command:`install(CODE)` and
+:command:`install(SCRIPT)`.
+
+The ``OLD`` behavior of this policy is for :command:`install(CODE)` and
+:command:`install(SCRIPT)` to not evaluate generator expressions.  The ``NEW``
+behavior is to evaluate generator expressions for :command:`install(CODE)` and
+:command:`install(SCRIPT)`.
+
+Note that it is the value of this policy setting at the end of the directory
+scope that is important, not its setting at the time of the call to
+:command:`install(CODE)` or :command:`install(SCRIPT)`.  This has implications
+for calling these commands from places that have their own policy scope but not
+their own directory scope (e.g. from files brought in via :command:`include()`
+rather than :command:`add_subdirectory()`).
+
+This policy was introduced in CMake version 3.14.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0088.rst b/share/cmake-3.22/Help/policy/CMP0088.rst
new file mode 100644
index 0000000..1840a58
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0088.rst
@@ -0,0 +1,31 @@
+CMP0088
+-------
+
+.. versionadded:: 3.14
+
+:module:`FindBISON` runs bison in :variable:`CMAKE_CURRENT_BINARY_DIR`
+when executing.
+
+The module provides a ``BISON_TARGET`` macro which generates BISON output.
+In CMake 3.13 and below the macro would generate a custom command that runs
+``bison`` in the source directory.  CMake 3.14 and later prefer to run it
+in the build directory and use :variable:`CMAKE_CURRENT_BINARY_DIR` as the
+``WORKING_DIRECTORY`` of its :command:`add_custom_command` invocation.
+This ensures that any implicitly generated file is written to the build
+tree rather than the source.
+
+This policy provides compatibility for projects that have not been updated
+to expect the new behavior.
+
+The ``OLD`` behavior for this policy is for ``BISON_TARGET`` to use
+the current source directory for the ``WORKING_DIRECTORY`` and where
+to generate implicit files. The ``NEW`` behavior of this policy is to
+use the current binary directory for the ``WORKING_DIRECTORY`` and where
+to generate implicit files.
+
+This policy was introduced in CMake version 3.14.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike most policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0089.rst b/share/cmake-3.22/Help/policy/CMP0089.rst
new file mode 100644
index 0000000..e3fc77a
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0089.rst
@@ -0,0 +1,32 @@
+CMP0089
+-------
+
+.. versionadded:: 3.15
+
+Compiler id for IBM Clang-based XL compilers is now ``XLClang``.
+
+CMake 3.15 and above recognize that IBM's Clang-based XL compilers
+that define ``__ibmxl__`` are a new front-end distinct from ``xlc``
+with a different command line and set of capabilities.
+CMake now prefers to present this to projects by setting the
+:variable:`CMAKE_<LANG>_COMPILER_ID` variable to ``XLClang`` instead
+of ``XL``.  However, existing projects may assume the compiler id for
+Clang-based XL is just ``XL`` as it was in CMake versions prior to 3.15.
+Therefore this policy determines for Clang-based XL compilers which
+compiler id to report in the :variable:`CMAKE_<LANG>_COMPILER_ID`
+variable after language ``<LANG>`` is enabled by the :command:`project`
+or :command:`enable_language` command.  The policy must be set prior
+to the invocation of either command.
+
+The ``OLD`` behavior for this policy is to use compiler id ``XL``.  The
+``NEW`` behavior for this policy is to use compiler id ``XLClang``.
+
+This policy was introduced in CMake version 3.15.  Use the
+:command:`cmake_policy` command to set this policy to ``OLD`` or ``NEW`` explicitly.
+Unlike most policies, CMake version |release| does *not* warn
+by default when this policy is not set and simply uses ``OLD`` behavior.
+See documentation of the
+:variable:`CMAKE_POLICY_WARNING_CMP0089 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
+variable to control the warning.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0090.rst b/share/cmake-3.22/Help/policy/CMP0090.rst
new file mode 100644
index 0000000..58dd999
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0090.rst
@@ -0,0 +1,29 @@
+CMP0090
+-------
+
+.. versionadded:: 3.15
+
+:command:`export(PACKAGE)` does not populate package registry by default.
+
+In CMake 3.14 and below the :command:`export(PACKAGE)` command populated the
+user package registry by default and users needed to set the
+:variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` to disable it, e.g. in automated
+build and packaging environments.  Since the user package registry is stored
+outside the build tree, this side effect should not be enabled by default.
+Therefore CMake 3.15 and above prefer that :command:`export(PACKAGE)` does
+nothing unless an explicit :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY` variable
+is set to enable it.  This policy provides compatibility with projects that
+have not been updated.
+
+The ``OLD`` behavior for this policy is for :command:`export(PACKAGE)` command
+to populate the user package registry unless
+:variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` is enabled.
+The ``NEW`` behavior is for :command:`export(PACKAGE)` command to do nothing
+unless the :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY` is enabled.
+
+This policy was introduced in CMake version 3.15.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike most policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0091.rst b/share/cmake-3.22/Help/policy/CMP0091.rst
new file mode 100644
index 0000000..ffc0ade
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0091.rst
@@ -0,0 +1,51 @@
+CMP0091
+-------
+
+.. versionadded:: 3.15
+
+MSVC runtime library flags are selected by an abstraction.
+
+Compilers targeting the MSVC ABI have flags to select the MSVC runtime library.
+Runtime library selection typically varies with build configuration because
+there is a separate runtime library for Debug builds.
+
+In CMake 3.14 and below, MSVC runtime library selection flags are added to
+the default :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>` cache entries by CMake
+automatically.  This allows users to edit their cache entries to adjust the
+flags.  However, the presence of such default flags is problematic for
+projects that want to choose a different runtime library programmatically.
+In particular, it requires string editing of the
+:variable:`CMAKE_<LANG>_FLAGS_<CONFIG>` variables with knowledge of the
+CMake builtin defaults so they can be replaced.
+
+CMake 3.15 and above prefer to leave the MSVC runtime library selection flags
+out of the default :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>` values and instead
+offer a first-class abstraction.  The :variable:`CMAKE_MSVC_RUNTIME_LIBRARY`
+variable and :prop_tgt:`MSVC_RUNTIME_LIBRARY` target property may be set to
+select the MSVC runtime library.  If they are not set then CMake uses the
+default value ``MultiThreaded$<$<CONFIG:Debug>:Debug>DLL`` which is
+equivalent to the original flags.
+
+This policy provides compatibility with projects that have not been updated
+to be aware of the abstraction.  The policy setting takes effect as of the
+first :command:`project` or :command:`enable_language` command that enables
+a language whose compiler targets the MSVC ABI.
+
+.. note::
+
+  Once the policy has taken effect at the top of a project, that choice
+  must be used throughout the tree.  In projects that have nested projects
+  in subdirectories, be sure to convert everything together.
+
+The ``OLD`` behavior for this policy is to place MSVC runtime library
+flags in the default :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>` cache
+entries and ignore the :variable:`CMAKE_MSVC_RUNTIME_LIBRARY` abstraction.
+The ``NEW`` behavior for this policy is to *not* place MSVC runtime
+library flags in the default cache entries and use the abstraction instead.
+
+This policy was introduced in CMake version 3.15.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0092.rst b/share/cmake-3.22/Help/policy/CMP0092.rst
new file mode 100644
index 0000000..2f39830
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0092.rst
@@ -0,0 +1,40 @@
+CMP0092
+-------
+
+.. versionadded:: 3.15
+
+MSVC warning flags are not in :variable:`CMAKE_<LANG>_FLAGS` by default.
+
+When using MSVC-like compilers in CMake 3.14 and below, warning flags
+like ``/W3`` are added to :variable:`CMAKE_<LANG>_FLAGS` by default.
+This is problematic for projects that want to choose a different warning
+level programmatically.  In particular, it requires string editing of the
+:variable:`CMAKE_<LANG>_FLAGS` variables with knowledge of the
+CMake builtin defaults so they can be replaced.
+
+CMake 3.15 and above prefer to leave out warning flags from the value of
+:variable:`CMAKE_<LANG>_FLAGS` by default.
+
+This policy provides compatibility with projects that have not been updated
+to expect the lack of warning flags.  The policy setting takes effect as of
+the first :command:`project` or :command:`enable_language` command that
+initializes :variable:`CMAKE_<LANG>_FLAGS` for a given language ``<LANG>``.
+
+.. note::
+
+  Once the policy has taken effect at the top of a project for a given
+  language, that choice must be used throughout the tree for that language.
+  In projects that have nested projects in subdirectories, be sure to
+  convert everything together.
+
+The ``OLD`` behavior for this policy is to place MSVC warning flags in the
+default :variable:`CMAKE_<LANG>_FLAGS` cache entries.  The ``NEW`` behavior
+for this policy is to *not* place MSVC warning flags in the default cache
+entries.
+
+This policy was introduced in CMake version 3.15.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0093.rst b/share/cmake-3.22/Help/policy/CMP0093.rst
new file mode 100644
index 0000000..4a9955f
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0093.rst
@@ -0,0 +1,26 @@
+CMP0093
+-------
+
+.. versionadded:: 3.15
+
+:module:`FindBoost` reports ``Boost_VERSION`` in ``x.y.z`` format.
+
+In CMake 3.14 and below the module would report the Boost version
+number as specified in the preprocessor definition ``BOOST_VERSION`` in
+the ``boost/version.hpp`` file. In CMake 3.15 and later it is preferred
+that the reported version number matches the ``x.y.z`` format reported
+by the CMake package shipped with Boost ``1.70.0`` and later. The macro
+value is still reported in the ``Boost_VERSION_MACRO`` variable.
+
+The ``OLD`` behavior for this policy is for :module:`FindBoost` to report
+``Boost_VERSION`` as specified in the preprocessor definition
+``BOOST_VERSION`` in ``boost/version.hpp``. The ``NEW`` behavior for this
+policy is for :module:`FindBoost` to report ``Boost_VERSION`` in
+``x.y.z`` format.
+
+This policy was introduced in CMake version 3.15.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses the ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0094.rst b/share/cmake-3.22/Help/policy/CMP0094.rst
new file mode 100644
index 0000000..1b57658
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0094.rst
@@ -0,0 +1,24 @@
+CMP0094
+-------
+
+.. versionadded:: 3.15
+
+Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
+use ``LOCATION`` for lookup strategy.
+
+Starting with CMake 3.15, Modules :module:`FindPython3`, :module:`FindPython2`
+and :module:`FindPython` set value ``LOCATION`` for, respectively, variables
+``Python3_FIND_STRATEGY``, ``Python2_FIND_STRATEGY`` and
+``Python_FIND_STRATEGY``. This policy provides compatibility with projects that
+expect the legacy behavior.
+
+The ``OLD`` behavior for this policy set value ``VERSION`` for variables
+``Python3_FIND_STRATEGY``, ``Python2_FIND_STRATEGY`` and
+``Python_FIND_STRATEGY``.
+
+This policy was introduced in CMake version 3.15.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses the ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0095.rst b/share/cmake-3.22/Help/policy/CMP0095.rst
new file mode 100644
index 0000000..ebdbab6
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0095.rst
@@ -0,0 +1,32 @@
+CMP0095
+-------
+
+.. versionadded:: 3.16
+
+``RPATH`` entries are properly escaped in the intermediary CMake install script.
+
+In CMake 3.15 and earlier, ``RPATH`` entries set via
+:variable:`CMAKE_INSTALL_RPATH` or via :prop_tgt:`INSTALL_RPATH` have not been
+escaped before being inserted into the ``cmake_install.cmake`` script. Dynamic
+linkers on ELF-based systems (e.g. Linux and FreeBSD) allow certain keywords in
+``RPATH`` entries, such as ``${ORIGIN}`` (More details are available in the
+``ld.so`` man pages on those systems). The syntax of these keywords can match
+CMake's variable syntax. In order to not be substituted (usually to an empty
+string) already by the intermediary ``cmake_install.cmake`` script, the user had
+to double-escape such ``RPATH`` keywords, e.g.
+``set(CMAKE_INSTALL_RPATH "\\\${ORIGIN}/../lib")``. Since the intermediary
+``cmake_install.cmake`` script is an implementation detail of CMake, CMake 3.16
+and later will make sure ``RPATH`` entries are inserted literally by escaping
+any coincidental CMake syntax.
+
+The ``OLD`` behavior of this policy is to not escape ``RPATH`` entries in the
+intermediary ``cmake_install.cmake`` script. The ``NEW`` behavior is to properly
+escape coincidental CMake syntax in ``RPATH`` entries when generating the
+intermediary ``cmake_install.cmake`` script.
+
+This policy was introduced in CMake version 3.16. CMake version |release| warns
+when the policy is not set and detected usage of CMake-like syntax and uses
+``OLD`` behavior. Use the :command:`cmake_policy` command to set it to ``OLD``
+or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0096.rst b/share/cmake-3.22/Help/policy/CMP0096.rst
new file mode 100644
index 0000000..8fd6f72
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0096.rst
@@ -0,0 +1,27 @@
+CMP0096
+-------
+
+.. versionadded:: 3.16
+
+The :command:`project` command preserves leading zeros in version components.
+
+When a ``VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]`` argument is given
+to the :command:`project` command, it stores the version string in the
+``PROJECT_VERSION`` variable and stores individual integer version components
+in ``PROJECT_VERSION_{MAJOR,MINOR,PATCH,TWEAK}`` variables (see policy
+:policy:`CMP0048`).  CMake 3.15 and below dropped leading zeros from each
+component.  CMake 3.16 and higher prefer to preserve leading zeros.  This
+policy provides compatibility for projects that have not been updated to
+expect the new behavior.
+
+The ``OLD`` behavior of this policy drops leading zeros in all components,
+e.g.  such that version ``1.07.06`` becomes ``1.7.6``.  The ``NEW`` behavior
+of this policy preserves the leading zeros in all components, such that
+version ``1.07.06`` remains unchanged.
+
+This policy was introduced in CMake version 3.16.  Unlike many policies, CMake
+version |release| does *not* warn when this policy is not set and simply uses
+the ``OLD`` behavior.  Use the :command:`cmake_policy` command to set it to
+``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0097.rst b/share/cmake-3.22/Help/policy/CMP0097.rst
new file mode 100644
index 0000000..2240874
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0097.rst
@@ -0,0 +1,25 @@
+CMP0097
+-------
+
+.. versionadded:: 3.16
+
+:command:`ExternalProject_Add` with ``GIT_SUBMODULES ""`` initializes no
+submodules.
+
+The module provides a ``GIT_SUBMODULES`` option which controls what submodules
+to initialize and update. Starting with CMake 3.16, explicitly setting
+``GIT_SUBMODULES`` to an empty string means no submodules will be initialized
+or updated.
+
+This policy provides compatibility for projects that have not been updated
+to expect the new behavior.
+
+The ``OLD`` behavior for this policy is for ``GIT_SUBMODULES`` when set to
+an empty string to initialize and update all git submodules.
+The ``NEW`` behavior for this policy is for ``GIT_SUBMODULES`` when set to
+an empty string to initialize and update no git submodules.
+
+This policy was introduced in CMake version 3.16.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike most policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.
diff --git a/share/cmake-3.22/Help/policy/CMP0098.rst b/share/cmake-3.22/Help/policy/CMP0098.rst
new file mode 100644
index 0000000..e793380
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0098.rst
@@ -0,0 +1,32 @@
+CMP0098
+-------
+
+.. versionadded:: 3.17
+
+:module:`FindFLEX` runs ``flex`` in directory
+:variable:`CMAKE_CURRENT_BINARY_DIR` when executing.
+
+The module provides a ``FLEX_TARGET`` macro which generates FLEX output.
+In CMake 3.16 and below the macro would generate a custom command that runs
+``flex`` in the current source directory.  CMake 3.17 and later prefer to
+run it in the build directory and use :variable:`CMAKE_CURRENT_BINARY_DIR`
+as the ``WORKING_DIRECTORY`` of its :command:`add_custom_command` invocation.
+This ensures that any implicitly generated file is written relative to the
+build tree rather than the source tree, unless the generated file is
+provided as absolute path.
+
+This policy provides compatibility for projects that have not been updated
+to expect the new behavior.
+
+The ``OLD`` behavior for this policy is for ``FLEX_TARGET`` to use
+the current source directory for the ``WORKING_DIRECTORY`` and where
+to generate implicit files. The ``NEW`` behavior of this policy is to
+use the current binary directory for the ``WORKING_DIRECTORY`` relative to
+which implicit files are generated unless provided as absolute path.
+
+This policy was introduced in CMake version 3.17.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0099.rst b/share/cmake-3.22/Help/policy/CMP0099.rst
new file mode 100644
index 0000000..0c64949
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0099.rst
@@ -0,0 +1,26 @@
+CMP0099
+-------
+
+.. versionadded:: 3.17
+
+Target link properties :prop_tgt:`INTERFACE_LINK_OPTIONS`,
+:prop_tgt:`INTERFACE_LINK_DIRECTORIES` and :prop_tgt:`INTERFACE_LINK_DEPENDS`
+are now transitive over private dependencies of static libraries.
+
+In CMake 3.16 and below the interface link properties attached to libraries
+are not propagated for private dependencies of static libraries.
+Only the libraries themselves are propagated to link the dependent binary.
+CMake 3.17 and later prefer to propagate all interface link properties.
+This policy provides compatibility for projects that have not been updated
+to expect the new behavior.
+
+The ``OLD`` behavior for this policy is to not propagate interface link
+properties. The ``NEW`` behavior of this policy is to propagate interface link
+properties.
+
+This policy was introduced in CMake version 3.17.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0100.rst b/share/cmake-3.22/Help/policy/CMP0100.rst
new file mode 100644
index 0000000..730fa82
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0100.rst
@@ -0,0 +1,42 @@
+CMP0100
+-------
+
+.. versionadded:: 3.17
+
+Let :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` process
+header files that end with a ``.hh`` extension.
+
+Since version 3.17, CMake processes header files that end with a
+``.hh`` extension in :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
+In earlier CMake versions, these header files were ignored by
+:prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
+
+This policy affects how header files that end with a ``.hh`` extension
+get treated in :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
+
+The ``OLD`` behavior for this policy is to ignore ``.hh`` header files
+in :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
+
+The ``NEW`` behavior for this policy is to process ``.hh`` header files
+in :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` just like other header files.
+
+.. note::
+
+  To silence the ``CMP0100`` warning source files can be excluded from
+  :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` processing by setting the
+  source file properties :prop_sf:`SKIP_AUTOMOC`, :prop_sf:`SKIP_AUTOUIC` or
+  :prop_sf:`SKIP_AUTOGEN`.
+
+  .. code-block:: cmake
+
+    # Source skip example:
+    set_property(SOURCE /path/to/file1.hh PROPERTY SKIP_AUTOMOC ON)
+    set_property(SOURCE /path/to/file2.hh PROPERTY SKIP_AUTOUIC ON)
+    set_property(SOURCE /path/to/file3.hh PROPERTY SKIP_AUTOGEN ON)
+
+This policy was introduced in CMake version 3.17.0.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0101.rst b/share/cmake-3.22/Help/policy/CMP0101.rst
new file mode 100644
index 0000000..f02bccc
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0101.rst
@@ -0,0 +1,22 @@
+CMP0101
+-------
+
+.. versionadded:: 3.17
+
+:command:`target_compile_options` now honors ``BEFORE`` keyword in all scopes.
+
+In CMake 3.16 and below the :command:`target_compile_options` ignores the
+``BEFORE`` keyword in private scope. CMake 3.17 and later honors
+``BEFORE`` keyword in all scopes. This policy provides compatibility for
+projects that have not been updated to expect the new behavior.
+
+The ``OLD`` behavior for this policy is to not honor ``BEFORE`` keyword in
+private scope. The ``NEW`` behavior of this policy is to honor
+``BEFORE`` keyword in all scopes.
+
+This policy was introduced in CMake version 3.17.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0102.rst b/share/cmake-3.22/Help/policy/CMP0102.rst
new file mode 100644
index 0000000..08024bf
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0102.rst
@@ -0,0 +1,29 @@
+CMP0102
+-------
+
+.. versionadded:: 3.17
+
+The :command:`mark_as_advanced` command no longer creates a cache entry if one
+does not already exist.
+
+In CMake 3.16 and below, if a variable was not defined at all or just defined
+locally, the :command:`mark_as_advanced` command would create a new cache
+entry with an ``UNINITIALIZED`` type and no value. When a :command:`find_path`
+(or other similar ``find_`` command) would next run, it would find this
+undefined cache entry and set it up with an empty string value. This process
+would end up deleting the local variable in the process (due to the way the
+cache works), effectively clearing any stored ``find_`` results that were only
+available in the local scope.
+
+The ``OLD`` behavior for this policy is to create the empty cache definition.
+The ``NEW`` behavior of this policy is to ignore variables which do not
+already exist in the cache.
+
+This policy was introduced in CMake version 3.17.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.  See
+documentation of the :variable:`CMAKE_POLICY_WARNING_CMP0102
+<CMAKE_POLICY_WARNING_CMP<NNNN>>` variable to control the warning.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0103.rst b/share/cmake-3.22/Help/policy/CMP0103.rst
new file mode 100644
index 0000000..b5f44d1
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0103.rst
@@ -0,0 +1,24 @@
+CMP0103
+-------
+
+.. versionadded:: 3.18
+
+Multiple calls to :command:`export` command with same ``FILE`` without
+``APPEND`` is no longer allowed.
+
+In CMake 3.17 and below, multiple calls to :command:`export` command with the
+same ``FILE`` without ``APPEND`` are accepted silently but only the last
+occurrence is taken into account during the generation.
+
+The ``OLD`` behavior for this policy is to ignore the multiple occurrences of
+ :command:`export` command except the last one.
+
+The ``NEW`` behavior of this policy is to raise an error on second call to
+:command:`export` command with same ``FILE`` without ``APPEND``.
+
+This policy was introduced in CMake version 3.18.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0104.rst b/share/cmake-3.22/Help/policy/CMP0104.rst
new file mode 100644
index 0000000..b125729
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0104.rst
@@ -0,0 +1,58 @@
+CMP0104
+-------
+
+.. versionadded:: 3.18
+
+Initialize :variable:`CMAKE_CUDA_ARCHITECTURES` when
+:variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is ``NVIDIA``.
+Raise an error if :prop_tgt:`CUDA_ARCHITECTURES` is empty.
+
+:variable:`CMAKE_CUDA_ARCHITECTURES` introduced in CMake 3.18 is used to
+initialize :prop_tgt:`CUDA_ARCHITECTURES`, which passes correct code generation
+flags to the CUDA compiler.
+
+Previous to this users had to manually specify the code generation flags. This
+policy is for backwards compatibility with manually specifying code generation
+flags.
+
+The ``OLD`` behavior for this policy is to not initialize
+:variable:`CMAKE_CUDA_ARCHITECTURES` when
+:variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is ``NVIDIA``.
+Empty :prop_tgt:`CUDA_ARCHITECTURES` is allowed.
+
+The ``NEW`` behavior of this policy is to initialize
+:variable:`CMAKE_CUDA_ARCHITECTURES` when
+:variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is ``NVIDIA``
+and raise an error if :prop_tgt:`CUDA_ARCHITECTURES` is empty during generation.
+
+If :prop_tgt:`CUDA_ARCHITECTURES` is set to a false value no architectures
+flags are passed to the compiler. This is intended to support packagers and
+the rare cases where full control over the passed flags is required.
+
+This policy was introduced in CMake version 3.18.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
+
+Examples
+^^^^^^^^
+
+.. code-block:: cmake
+
+  set_target_properties(tgt PROPERTIES CUDA_ARCHITECTURES "35;50;72")
+
+Generates code for real and virtual architectures ``30``, ``50`` and ``72``.
+
+.. code-block:: cmake
+
+  set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 70-real 72-virtual)
+
+Generates code for real architecture ``70`` and virtual architecture ``72``.
+
+.. code-block:: cmake
+
+  set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES OFF)
+
+CMake will not pass any architecture flags to the compiler.
diff --git a/share/cmake-3.22/Help/policy/CMP0105.rst b/share/cmake-3.22/Help/policy/CMP0105.rst
new file mode 100644
index 0000000..097a59a
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0105.rst
@@ -0,0 +1,21 @@
+CMP0105
+-------
+
+.. versionadded:: 3.18
+
+:prop_tgt:`LINK_OPTIONS` and :prop_tgt:`INTERFACE_LINK_OPTIONS` target
+properties are now used for the device link step.
+
+In CMake 3.17 and below, link options are not used by the device link step.
+
+The ``OLD`` behavior for this policy is to ignore the link options.
+
+The ``NEW`` behavior of this policy is to use the link options during the
+device link step.
+
+This policy was introduced in CMake version 3.17.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0106.rst b/share/cmake-3.22/Help/policy/CMP0106.rst
new file mode 100644
index 0000000..18a6635
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0106.rst
@@ -0,0 +1,21 @@
+CMP0106
+-------
+
+.. versionadded:: 3.18
+
+The :module:`Documentation` module is removed.
+
+The :module:`Documentation` was added as a support mechanism for the VTK
+project and was tuned for that project. Instead of CMake providing this module
+with (now old) VTK patterns for cache variables and required packages, the
+module is now deprecated by CMake itself.
+
+The ``OLD`` behavior of this policy is for :module:`Documentation` to add
+cache variables and find VTK documentation dependent packages. The ``NEW``
+behavior is to act as an empty module.
+
+This policy was introduced in CMake version 3.18.  CMake version |release|
+warns when the policy is not set and uses ``OLD`` behavior. Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0107.rst b/share/cmake-3.22/Help/policy/CMP0107.rst
new file mode 100644
index 0000000..da5ae06
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0107.rst
@@ -0,0 +1,21 @@
+CMP0107
+-------
+
+.. versionadded:: 3.18
+
+It is not allowed to create an ``ALIAS`` target with the same name as an
+another target.
+
+In CMake 3.17 and below, an ``ALIAS`` target can overwrite silently an existing
+target with the same name.
+
+The ``OLD`` behavior for this policy is to allow target overwrite.
+
+The ``NEW`` behavior of this policy is to prevent target overwriting.
+
+This policy was introduced in CMake version 3.17.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0108.rst b/share/cmake-3.22/Help/policy/CMP0108.rst
new file mode 100644
index 0000000..4d1091d
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0108.rst
@@ -0,0 +1,21 @@
+CMP0108
+-------
+
+.. versionadded:: 3.18
+
+A target is not allowed to link to itself even through an ``ALIAS`` target.
+
+In CMake 3.17 and below, a target can link to a target aliased to itself.
+
+The ``OLD`` behavior for this policy is to allow a target to link to a target
+aliased to itself.
+
+The ``NEW`` behavior of this policy is to prevent a target to link to itself
+through an ``ALIAS`` target.
+
+This policy was introduced in CMake version 3.17.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0109.rst b/share/cmake-3.22/Help/policy/CMP0109.rst
new file mode 100644
index 0000000..f86287f
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0109.rst
@@ -0,0 +1,24 @@
+CMP0109
+-------
+
+.. versionadded:: 3.19
+
+:command:`find_program` requires permission to execute but not to read.
+
+In CMake 3.18 and below, the :command:`find_program` command on UNIX
+would find files that are readable without requiring execute permission,
+and would not find files that are executable without read permission.
+In CMake 3.19 and above, ``find_program`` now prefers to require execute
+permission but not read permission.  This policy provides compatibility
+with projects that have not been updated to expect the new behavior.
+
+The ``OLD`` behavior for this policy is for ``find_program`` to require
+read permission but not execute permission.
+The ``NEW`` behavior for this policy is for ``find_program`` to require
+execute permission but not read permission.
+
+This policy was introduced in CMake version 3.19.  CMake version |release|
+warns when the policy is not set and uses ``OLD`` behavior.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0110.rst b/share/cmake-3.22/Help/policy/CMP0110.rst
new file mode 100644
index 0000000..6977d41
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0110.rst
@@ -0,0 +1,26 @@
+CMP0110
+-------
+
+.. versionadded:: 3.19
+
+:command:`add_test` supports arbitrary characters in test names.
+
+:command:`add_test` can now (officially) create tests with whitespace and
+other special characters in its name.  Before CMake version 3.19 that was not
+allowed, however, it was possible to work around this limitation by explicitly
+putting escaped quotes around the test's name in the ``add_test`` command.
+
+Although never officially supported several projects in the wild found and
+implemented this workaround.  However, the new change which officially allows
+the ``add_test`` command to support whitespace and other special characters in
+test names now breaks that workaround.  In order for these projects to work
+smoothly with newer CMake versions, this policy was introduced.
+
+The ``OLD`` behavior of this policy is to still prevent ``add_test`` from
+handling whitespace and special characters properly (if not using the
+mentioned workaround).  The ``NEW`` behavior on the other hand allows names
+with whitespace and special characters for tests created by ``add_test``.
+
+This policy was introduced in CMake version 3.19.  CMake version |release|
+warns when the policy is not set and uses ``OLD`` behavior. Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
diff --git a/share/cmake-3.22/Help/policy/CMP0111.rst b/share/cmake-3.22/Help/policy/CMP0111.rst
new file mode 100644
index 0000000..e327583
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0111.rst
@@ -0,0 +1,27 @@
+CMP0111
+-------
+
+.. versionadded:: 3.19
+
+An imported target missing its location property fails during generation.
+
+:ref:`Imported Targets` for library files and executables require that
+their location on disk is specified in a target property such as
+:prop_tgt:`IMPORTED_LOCATION`, :prop_tgt:`IMPORTED_IMPLIB`, or a
+per-configuration equivalent.  If a needed location property is not set,
+CMake 3.18 and below generate the string ``<TARGET_NAME>-NOTFOUND`` in
+its place, which results in failures of the corresponding rules at build
+time.  CMake 3.19 and above prefer instead to raise an error during
+generation.  This policy provides compatibility for projects that have
+not been updated to expect the new behavior.
+
+The ``OLD`` behavior of this policy is to generate the location of an imported
+unknown, static or shared library target as ``<TARGET_NAME>-NOTFOUND`` if not
+set.
+The ``NEW`` behavior is to raise an error.
+
+This policy was introduced in CMake version 3.19.  CMake version |release|
+warns when the policy is not set and uses ``OLD`` behavior. Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0112.rst b/share/cmake-3.22/Help/policy/CMP0112.rst
new file mode 100644
index 0000000..313a51e
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0112.rst
@@ -0,0 +1,40 @@
+CMP0112
+-------
+
+.. versionadded:: 3.19
+
+Target file component generator expressions do not add target dependencies.
+
+The following target-based generator expressions that query for directory or
+file name components no longer add a dependency on the evaluated target.
+
+    - ``TARGET_FILE_NAME``
+    - ``TARGET_FILE_DIR``
+    - ``TARGET_LINKER_FILE_BASE_NAME``
+    - ``TARGET_LINKER_FILE_NAME``
+    - ``TARGET_LINKER_FILE_DIR``
+    - ``TARGET_SONAME_FILE_NAME``
+    - ``TARGET_SONAME_FILE_DIR``
+    - ``TARGET_PDB_FILE_NAME``
+    - ``TARGET_PDB_FILE_DIR``
+    - ``TARGET_BUNDLE_DIR``
+    - ``TARGET_BUNDLE_CONTENT_DIR``
+
+
+In CMake 3.18 and lower a dependency on the evaluated target of the above
+generator expressions would always be added.  CMake 3.19 and above prefer
+to not add this dependency.  This policy provides compatibility for projects
+that have not been updated to expect the new behavior.
+
+The ``OLD`` behavior for this policy is to add a dependency on the evaluated
+target for the above generator expressions.  The ``NEW`` behavior of
+this policy is to not add a dependency on the evaluated target for the
+above generator expressions.
+
+This policy was introduced in CMake version 3.19.  Unlike many policies,
+CMake version |release| does *not* warn by default when this policy
+is not set and simply uses ``OLD`` behavior.  See documentation of the
+:variable:`CMAKE_POLICY_WARNING_CMP0112 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
+variable to control the warning.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0113.rst b/share/cmake-3.22/Help/policy/CMP0113.rst
new file mode 100644
index 0000000..6f56902
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0113.rst
@@ -0,0 +1,43 @@
+CMP0113
+-------
+
+.. versionadded:: 3.19
+
+:ref:`Makefile Generators` do not repeat custom commands from target
+dependencies.
+
+Consider a chain of custom commands split across two dependent targets:
+
+.. code-block:: cmake
+
+  add_custom_command(OUTPUT output-not-created
+    COMMAND ... DEPENDS ...)
+  set_property(SOURCE output-not-created PROPERTY SYMBOLIC 1)
+  add_custom_command(OUTPUT output-created
+    COMMAND ... DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/output-not-created)
+  add_custom_target(first DEPENDS output-not-created)
+  add_custom_target(second DEPENDS output-created)
+  add_dependencies(second first)
+
+In CMake 3.18 and lower, the Makefile generators put a copy of both custom
+commands in the Makefile for target ``second`` even though its dependency on
+target ``first`` ensures that the first custom command runs before the second.
+Running ``make second`` would cause the first custom command to run once in
+the ``first`` target and then again in the ``second`` target.
+
+CMake 3.19 and above prefer to not duplicate custom commands in a target that
+are already generated in other targets on which the target depends (directly or
+indirectly).  This policy provides compatibility for projects that have not
+been updated to expect the new behavior.  In particular, projects that relied
+on the duplicate execution or that did not properly set the :prop_sf:`SYMBOLIC`
+source file property may be affected.
+
+The ``OLD`` behavior for this policy is to duplicate custom commands in
+dependent targets.  The ``NEW`` behavior of this policy is to not duplicate
+custom commands in dependent targets.
+
+This policy was introduced in CMake version 3.19.  Unlike many policies,
+CMake version |release| does *not* warn when this policy is not set and
+simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0114.rst b/share/cmake-3.22/Help/policy/CMP0114.rst
new file mode 100644
index 0000000..ae48478
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0114.rst
@@ -0,0 +1,85 @@
+CMP0114
+-------
+
+.. versionadded:: 3.19
+
+:module:`ExternalProject` step targets fully adopt their steps.
+
+The :command:`ExternalProject_Add` ``STEP_TARGETS`` option, and the
+:command:`ExternalProject_Add_StepTargets` function, can be used to
+create build targets for individual steps of an external project.
+
+In CMake 3.18 and below, step targets have some limitations:
+
+* Step targets always depend on targets named by the
+  :command:`ExternalProject_Add` ``DEPENDS`` option even though
+  not all steps need them.  In order to allow step targets to be created
+  without those dependencies, the :command:`ExternalProject_Add`
+  ``INDEPENDENT_STEP_TARGETS`` option or the
+  :command:`ExternalProject_Add_StepTargets` ``NO_DEPENDS`` option may
+  be used.  However, adding such "independent" step targets makes sense
+  only for specific steps such as ``download``, ``update``, and ``patch``
+  because they do not need any of the external project's build dependencies.
+  Furthermore, it does not make sense to create independent step targets
+  for steps that depend on non-independent steps.  Such rules are not
+  enforced, and projects that do not follow them can generate build systems
+  with confusing and generator-specific behavior.
+
+* Step targets hold copies of the custom commands implementing their
+  steps that are separate from the copies in the primary target created
+  by :command:`ExternalProject_Add`, and the primary target does not
+  depend on the step targets.  In parallel builds that drive the primary
+  target and step targets concurrently, multiple copies of the steps'
+  commands may run concurrently and race each other.
+
+  Also, prior to policy :policy:`CMP0113`, the step targets generated
+  by :ref:`Makefile Generators` also contain all the custom commands
+  on which their step depends.  This can lead to repeated execution of
+  those steps even in serial builds.
+
+In CMake 3.19 and above, the :module:`ExternalProject` module prefers
+a revised design to address these problems:
+
+* Each step is classified as "independent" if it does not depend
+  on other targets named by the :command:`ExternalProject_Add` ``DEPENDS``.
+  The predefined steps are automatically classified by default:
+
+  * The ``download``, ``update``, and ``patch`` steps are independent.
+  * The ``configure``, ``build``, ``test``, and ``install`` steps are not.
+
+  For custom steps, the :command:`ExternalProject_Add_Step` command provides
+  an ``INDEPENDENT`` option to mark them as independent.  It is an error to
+  mark a step as independent if it depends on other steps that are not.  Note
+  that this use of the term "independent" refers only to independence from
+  external targets and is orthogonal to a step's dependencies on other steps.
+
+* Step targets created by the :command:`ExternalProject_Add` ``STEP_TARGETS``
+  option or the :command:`ExternalProject_Add_Step` function are now
+  independent if and only if their steps are marked as independent.
+  The :command:`ExternalProject_Add` ``INDEPENDENT_STEP_TARGETS`` option
+  and :command:`ExternalProject_Add_StepTargets` ``NO_DEPENDS`` option
+  are no longer allowed.
+
+* Step targets, when created, are fully responsible for holding the
+  custom commands implementing their steps.  The primary target created
+  by :command:`ExternalProject_Add` depends on the step targets, and the
+  step targets depend on each other.  The target-level dependencies match
+  the file-level dependencies used by the custom commands for each step.
+
+  When the :command:`ExternalProject_Add` ``UPDATE_DISCONNECTED`` or
+  ``TEST_EXCLUDE_FROM_MAIN`` option is used, or the
+  :command:`ExternalProject_Add_Step` ``EXCLUDE_FROM_MAIN`` option is used
+  for a custom step, some step targets may be created automatically.
+  These are needed to hold the steps commonly depended upon by the primary
+  target and the disconnected step targets.
+
+Policy ``CMP0114`` provides compatibility for projects that have not been
+updated to expect the new behavior.  The ``OLD`` behavior for this policy
+is to use the above-documented behavior from 3.18 and below.  The ``NEW``
+behavior for this policy is to use the above-documented behavior preferred
+by 3.19 and above.
+
+This policy was introduced in CMake version 3.19.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
diff --git a/share/cmake-3.22/Help/policy/CMP0115.rst b/share/cmake-3.22/Help/policy/CMP0115.rst
new file mode 100644
index 0000000..7f82c43
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0115.rst
@@ -0,0 +1,34 @@
+CMP0115
+-------
+
+.. versionadded:: 3.20
+
+Source file extensions must be explicit.
+
+In CMake 3.19 and below, if a source file could not be found by the name
+specified, it would append a list of known extensions to the name to see if
+the file with the extension could be found. For example, this would allow the
+user to run:
+
+.. code-block:: cmake
+
+  add_executable(exe main)
+
+and put ``main.c`` in the executable without specifying the extension.
+
+Starting in CMake 3.20, CMake prefers all source files to have their extensions
+explicitly listed:
+
+.. code-block:: cmake
+
+  add_executable(exe main.c)
+
+The ``OLD`` behavior for this policy is to implicitly append known extensions
+to source files if they can't be found. The ``NEW`` behavior of this policy is
+to not append known extensions and require them to be explicit.
+
+This policy was introduced in CMake version 3.20.  CMake version |release|
+warns when the policy is not set and uses ``OLD`` behavior. Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0116.rst b/share/cmake-3.22/Help/policy/CMP0116.rst
new file mode 100644
index 0000000..18e5a96
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0116.rst
@@ -0,0 +1,41 @@
+CMP0116
+-------
+
+.. versionadded:: 3.20
+
+Ninja generators transform ``DEPFILE`` s from :command:`add_custom_command`.
+
+In CMake 3.19 and below, files given to the ``DEPFILE`` argument of
+:command:`add_custom_command` were passed directly to Ninja's ``depfile``
+variable without any path resolution. This meant that if
+:command:`add_custom_command` was called from a subdirectory (created by
+:command:`add_subdirectory`), the ``DEPFILE`` argument would have to be either
+an absolute path or a path relative to :variable:`CMAKE_BINARY_DIR`, rather
+than :variable:`CMAKE_CURRENT_BINARY_DIR`. In addition, no transformation was
+done on the file listed in ``DEPFILE``, which meant that the paths within the
+``DEPFILE`` had the same restrictions.
+
+Starting with CMake 3.20, the ``DEPFILE`` argument is relative to
+:variable:`CMAKE_CURRENT_BINARY_DIR` (unless it is absolute), and the paths in
+the ``DEPFILE`` are also relative to :variable:`CMAKE_CURRENT_BINARY_DIR`.
+CMake automatically transforms the paths in the ``DEPFILE`` (unless they are
+absolute) after the custom command is run. The file listed in ``DEPFILE`` is
+not modified in any way. Instead, CMake writes the transformation to its own
+internal file, and passes this internal file to Ninja's ``depfile`` variable.
+This transformation happens regardless of whether or not ``DEPFILE`` is
+relative, and regardless of whether or not :command:`add_custom_command` is
+called from a subdirectory.
+
+The ``OLD`` behavior for this policy is to pass the ``DEPFILE`` to Ninja
+unaltered. The ``NEW`` behavior for this policy is to transform the ``DEPFILE``
+after running the custom command. The status of ``CMP0116`` is recorded at the
+time of the custom command's creation, and you can have custom commands in the
+same directory with different values for ``CMP0116`` by setting the policy
+before each custom command.
+
+This policy was introduced in CMake version 3.20.  Unlike most policies,
+CMake version |release| does *not* warn by default when this policy is not set
+(unless ``DEPFILE`` is used in a subdirectory) and simply uses ``OLD``
+behavior.  See documentation of the
+:variable:`CMAKE_POLICY_WARNING_CMP0116 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
+variable to control the warning.
diff --git a/share/cmake-3.22/Help/policy/CMP0117.rst b/share/cmake-3.22/Help/policy/CMP0117.rst
new file mode 100644
index 0000000..0c4dd30
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0117.rst
@@ -0,0 +1,43 @@
+CMP0117
+-------
+
+.. versionadded:: 3.20
+
+MSVC RTTI flag ``/GR`` is not added to
+:variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>` by default.
+
+When using MSVC-like compilers in CMake 3.19 and below, the RTTI flag
+``/GR`` is added to :variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>` by
+default.  This behavior is left from support for MSVC versions from Visual
+Studio 2003 and below that did not enable RTTI by default.  It is no longer
+necessary.  Furthermore, it is problematic for projects that want to change
+to ``/GR-`` programmatically.  In particular, it requires string editing of
+the :variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>` variable with knowledge
+of the CMake builtin default so it can be replaced.
+
+CMake 3.20 and above prefer to leave out ``/GR`` from the value of
+:variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>` by default.
+
+This policy provides compatibility with projects that have not been updated
+to expect the lack of the ``/GR`` flag.  The policy setting takes effect as
+of the first :command:`project` or :command:`enable_language` command that
+initializes :variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>`.
+
+.. note::
+
+  Once the policy has taken effect at the top of a project for a given
+  language, that choice must be used throughout the tree for that language.
+  In projects that have nested projects in subdirectories, be sure to
+  convert everything together.
+
+The ``OLD`` behavior for this policy is to place the MSVC ``/GR`` flag in the
+default :variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>` cache entry.  The
+``NEW`` behavior for this policy is to *not* place the MSVC ``/GR`` flag in
+the default cache entry.
+
+This policy was introduced in CMake version 3.20.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0118.rst b/share/cmake-3.22/Help/policy/CMP0118.rst
new file mode 100644
index 0000000..aa7e0f7
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0118.rst
@@ -0,0 +1,25 @@
+CMP0118
+-------
+
+.. versionadded:: 3.20
+
+The :prop_sf:`GENERATED` source file property is now visible in all directories.
+
+Whether or not a source file is generated is an all-or-nothing global
+property of the source.  Consequently, the associated ``GENERATED``
+property is now visible from any directory scope, not only from the scope
+for which it was set.
+
+Additionally, the ``GENERATED`` property may now be set only to boolean
+values, and may not be turned off once turned on.
+
+The ``OLD`` behavior of this policy is to only allow ``GENERATED`` to be
+visible from the directory scope for which it was set.  The ``NEW``
+behavior on the other hand allows it to be visible from any scope.
+
+This policy was introduced in CMake version 3.20.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior with regard
+to visibility of the ``GENERATED`` property.  However, CMake does warn
+about setting the ``GENERATED`` property to a non-boolean value.
diff --git a/share/cmake-3.22/Help/policy/CMP0119.rst b/share/cmake-3.22/Help/policy/CMP0119.rst
new file mode 100644
index 0000000..61c8bdc
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0119.rst
@@ -0,0 +1,36 @@
+CMP0119
+-------
+
+.. versionadded:: 3.20
+
+:prop_sf:`LANGUAGE` source file property explicitly compiles as specified
+language.
+
+The :prop_sf:`LANGUAGE` source file property is documented to mean that the
+source file is written in the specified language.  In CMake 3.19 and below,
+setting this property causes CMake to compile the source file using the
+compiler for the specified language.  However, it only passes an explicit
+flag to tell the compiler to treat the source as the specified language
+for MSVC-like, XL, and Embarcadero compilers for the ``CXX`` language.
+CMake 3.20 and above prefer to also explicitly tell the compiler to use
+the specified language using a flag such as ``-x c`` on all compilers
+for which such flags are known.
+
+This policy provides compatibility for projects that have not been updated
+to expect this behavior.  For example, some projects were setting the
+``LANGUAGE`` property to ``C`` on assembly-language ``.S`` source files
+in order to compile them using the C compiler.  Such projects should be
+updated to use ``enable_language(ASM)``, for which CMake will often choose
+the C compiler as the assembler on relevant platforms anyway.
+
+The ``OLD`` behavior for this policy is to interpret the ``LANGUAGE <LANG>``
+property using its undocumented meaning to "use the ``<LANG>`` compiler".
+The ``NEW`` behavior for this policy is to interpret the ``LANGUAGE <LANG>``
+property using its documented meaning to "compile as a ``<LANG>`` source".
+
+This policy was introduced in CMake version 3.20.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0120.rst b/share/cmake-3.22/Help/policy/CMP0120.rst
new file mode 100644
index 0000000..9d2f6c9
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0120.rst
@@ -0,0 +1,47 @@
+CMP0120
+-------
+
+.. versionadded:: 3.20
+
+The :module:`WriteCompilerDetectionHeader` module is removed.
+
+CMake versions 3.1 through 3.19 provide this module to generate a
+C++ compatibility layer by re-using information from CMake's table of
+preprocessor checks for :manual:`cmake-compile-features(7)`.  However:
+
+* Those granular features have been superseded by meta-features for
+  :ref:`Requiring Language Standards` such as ``cxx_std_11``.  Therefore
+  no new granular feature checks will be added and projects will need to
+  use other means to conditionally use new C++ features.
+
+* The module exposes some of CMake's implementation details directly
+  to C++ translation units.
+
+* The module's approach effectively provides a header file with CMake,
+  thus tying the version of the header to the version of CMake.
+  Many projects found that the :module:`WriteCompilerDetectionHeader` was
+  best used by manually generating its header locally with a recent version
+  of CMake and then bundling it with the project source so that it could
+  be used with older CMake versions.
+
+For reasons including the above, CMake 3.20 and above prefer to not
+provide the :module:`WriteCompilerDetectionHeader` module.  This policy
+provides compatibility for projects that have not been ported away from
+it.  Projects using the module should be updated to stop using it.
+Alternatives include:
+
+* Bundle a copy of the generated header in the project's source.
+* Use a third-party alternative, such as the CC0-licensed `Hedley`_.
+* Drop support for compilers too old to provide the features natively.
+
+The ``OLD`` behavior of this policy is for inclusion of the deprecated
+:module:`WriteCompilerDetectionHeader` module to work.  The ``NEW``
+behavior is for inclusion of the module to fail as if it does not exist.
+
+This policy was introduced in CMake version 3.20.  CMake version |release|
+warns when the policy is not set and uses ``OLD`` behavior. Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
+
+.. _`Hedley`: https://nemequ.github.io/hedley/
diff --git a/share/cmake-3.22/Help/policy/CMP0121.rst b/share/cmake-3.22/Help/policy/CMP0121.rst
new file mode 100644
index 0000000..326e7d5
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0121.rst
@@ -0,0 +1,21 @@
+CMP0121
+-------
+
+.. versionadded:: 3.21
+
+The :command:`list` command now detects invalid indices.
+
+Prior to CMake version 3.21, the :command:`list` command's ``GET``,
+``INSERT``, ``SUBLIST``, and ``REMOVE_AT`` subcommands did not detect invalid
+index arguments.
+
+The ``OLD`` behavior of this policy is for invalid indices to be treated as
+their integer value (if any) at the start of the string. For example,
+``2good4you`` is a ``2`` and ``not_an_integer`` is a ``0``. The ``NEW``
+behavior is for invalid indices to trigger an error.
+
+This policy was introduced in CMake version 3.21.  CMake version |release|
+warns when the policy is not set and uses ``OLD`` behavior. Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0122.rst b/share/cmake-3.22/Help/policy/CMP0122.rst
new file mode 100644
index 0000000..1ff8c48
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0122.rst
@@ -0,0 +1,17 @@
+CMP0122
+-------
+
+.. versionadded:: 3.21
+
+:module:`UseSWIG` use library name conventions for ``CSharp`` language.
+
+Starting with CMake 3.21, :module:`UseSWIG` generates now a library using
+default naming conventions. This policy provides compatibility with projects
+that expect the legacy behavior.
+
+This policy was introduced in CMake version 3.21.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0123.rst b/share/cmake-3.22/Help/policy/CMP0123.rst
new file mode 100644
index 0000000..e09b5ec
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0123.rst
@@ -0,0 +1,32 @@
+CMP0123
+-------
+
+.. versionadded:: 3.21
+
+``ARMClang`` cpu/arch compile and link flags must be set explicitly.
+
+CMake 3.20 and lower automatically maps the :variable:`CMAKE_SYSTEM_PROCESSOR`
+variable and an undocumented ``CMAKE_SYSTEM_ARCH`` to compile and link options
+for ``ARMClang``.  For example, the ``-mcpu=cortex-m33`` flag is added when
+:variable:`CMAKE_SYSTEM_PROCESSOR` equals ``cortex-m33``.  CMake requires
+projects to set either variable or it raises a fatal error.  However, the
+project may need to additionally specify CPU features using e.g.
+``-mcpu=cortex-m33+nodsp``, conflicting with the ``-mcpu=cortex-m33`` added
+by CMake.  This results in either link errors or unusable binaries.
+
+CMake 3.21 and above prefer instead to not add any cpu/arch compile and link
+flags automatically.  Instead, projects must specify them explicitly.
+This policy provides compatibility for projects that have not been updated.
+
+The ``OLD`` behavior of this policy requires projects that use ``ARMClang``
+to set either :variable:`CMAKE_SYSTEM_PROCESSOR` or ``CMAKE_SYSTEM_ARCH``
+and it automatically adds a compile option ``-mcpu=`` or ``-march=`` and
+a link option ``--cpu=`` based on those variables.  The ``NEW`` behavior
+does not add compile or link options, and projects are responsible for
+setting correct options.
+
+This policy was introduced in CMake version 3.21.  CMake version |release|
+warns when the policy is not set and uses ``OLD`` behavior.  Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0124.rst b/share/cmake-3.22/Help/policy/CMP0124.rst
new file mode 100644
index 0000000..3935166
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0124.rst
@@ -0,0 +1,18 @@
+CMP0124
+-------
+
+.. versionadded:: 3.21
+
+When this policy is set to ``NEW``, the scope of loop variables defined by the
+:command:`foreach` command is restricted to the loop only.  They will be unset
+at the end of the loop.
+
+The ``OLD`` behavior for this policy still clears the loop variables at the end
+of the loop, but does not unset them.  This leaves them as defined, but empty.
+
+This policy was introduced in CMake version 3.21. Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn when the policy
+is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0125.rst b/share/cmake-3.22/Help/policy/CMP0125.rst
new file mode 100644
index 0000000..0b1704e
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0125.rst
@@ -0,0 +1,42 @@
+CMP0125
+-------
+
+.. versionadded:: 3.21
+
+The :command:`find_file`, :command:`find_path`, :command:`find_library` and
+:command:`find_program` commands cache their result in the variable specified
+by their first argument.  Prior to CMake 3.21, if a cache variable of that
+name already existed before the call but the cache variable had no type, any
+non-cache variable of the same name would be discarded and the cache variable
+was always used (see also :policy:`CMP0126` for a different but similar
+behavior).  This contradicts the convention that a non-cache variable should
+take precedence over a cache variable of the same name.  Such a situation can
+arise if a user sets a cache variable on the command line without specifying
+a type, such as ``cmake -DMYVAR=blah ...`` instead of
+``cmake -DMYVAR:FILEPATH=blah``.
+
+Related to the above, if a cache variable of the specified name already exists
+and it *does* have a type, the various ``find_...()`` commands would return
+that value unchanged.  In particular, if it contained a relative path, it
+would not be converted to an absolute path in this situation.
+
+When policy ``CMP0125`` is set to ``OLD`` or is unset, the behavior is as
+described above.  When it is set to ``NEW``, the behavior is as follows:
+
+* If a non-cache variable of the specified name exists when the ``find_...()``
+  command is called, its value will be used regardless of whether a cache
+  variable of the same name already exists or not.  A cache variable will not
+  be created in this case if no such cache variable existed before.
+  If a cache variable of the specified name did already exist, the cache will
+  be updated to match the non-cache variable.
+
+* The various ``find...()`` commands will always provide an absolute path in
+  the result variable, except where a relative path provided by a cache or
+  non-cache variable cannot be resolved to an existing path.
+
+This policy was introduced in CMake version 3.21. Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn when the policy
+is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0126.rst b/share/cmake-3.22/Help/policy/CMP0126.rst
new file mode 100644
index 0000000..1b69957
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0126.rst
@@ -0,0 +1,34 @@
+CMP0126
+-------
+
+.. versionadded:: 3.21
+
+When this policy is set to ``NEW``, the :command:`set(CACHE)` command does not
+remove any normal variable of the same name from the current scope.
+The ``OLD`` behavior removes any normal variable of the same name from the
+current scope in the following situations:
+
+* No cache variable of that name existed previously.
+
+* A cache variable of that name existed previously, but it had no type.
+  This can occur when the variable was set on the command line using a form
+  like ``cmake -DMYVAR=blah`` instead of ``cmake -DMYVAR:STRING=blah``.
+
+Note that the ``NEW`` behavior has an important difference to the similar
+``NEW`` behavior of policy :policy:`CMP0077`.  The :command:`set(CACHE)`
+command always sets the cache variable if it did not exist previously,
+regardless of the ``CMP0126`` policy setting.  The :command:`option` command
+will *not* set the cache variable if a non-cache variable of the same name
+already exists and :policy:`CMP0077` is set to ``NEW``.
+
+Policy ``CMP0126`` was introduced in CMake version 3.21. Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly
+within a project.  Use the :variable:`CMAKE_POLICY_DEFAULT_CMP0126
+<CMAKE_POLICY_DEFAULT_CMP\<NNNN\>>` variable to set the policy for
+a third-party project in a subdirectory without modifying it.
+Unlike many policies, CMake version |release| does *not* warn when the policy
+is not set and simply uses ``OLD`` behavior.  See documentation of the
+:variable:`CMAKE_POLICY_WARNING_CMP0126 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
+variable to control the warning.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0127.rst b/share/cmake-3.22/Help/policy/CMP0127.rst
new file mode 100644
index 0000000..2106110
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0127.rst
@@ -0,0 +1,34 @@
+CMP0127
+-------
+
+.. versionadded:: 3.22
+
+:command:`cmake_dependent_option` supports full :ref:`Condition Syntax`.
+
+The ``<depends>`` parameter accepts a :ref:`semicolon-separated list <CMake
+Language Lists>` of conditions.  CMake 3.21 and lower evaluates each
+``condition`` as ``if(${condition})``, which does not properly handle
+conditions with nested paren groups.  CMake 3.22 and above instead prefer
+to evaluate each ``condition`` as ``if(<condition>)``, where ``<condition>``
+is re-parsed as if literally written in a call to :command:`if`.  This
+allows expressions like::
+
+  "A AND (B OR C)"
+
+but requires expressions like::
+
+  "FOO MATCHES (UPPER|lower)"
+
+to be re-written as::
+
+  "FOO MATCHES \"(UPPER|lower)\""
+
+Policy ``CMP0127`` provides compatibility for projects that have not
+been updated to expect the new behavior.
+
+This policy was introduced in CMake version 3.22.  CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.22/Help/policy/CMP0128.rst b/share/cmake-3.22/Help/policy/CMP0128.rst
new file mode 100644
index 0000000..604a146
--- /dev/null
+++ b/share/cmake-3.22/Help/policy/CMP0128.rst
@@ -0,0 +1,71 @@
+CMP0128
+-------
+
+.. versionadded:: 3.22
+
+When this policy is set to ``NEW``:
+
+* :prop_tgt:`<LANG>_EXTENSIONS` is initialized to
+  :variable:`CMAKE_<LANG>_EXTENSIONS` if set, otherwise falling back to
+  :variable:`CMAKE_<LANG>_EXTENSIONS_DEFAULT`.
+
+* Extensions are correctly enabled/disabled if :prop_tgt:`<LANG>_STANDARD` is
+  unset or satisfied by the default.
+
+* Standard mode-affecting flags aren't added unless necessary to achieve the
+  specified mode.
+
+The ``OLD`` behavior:
+
+* Initializes :prop_tgt:`<LANG>_EXTENSIONS` to
+  :variable:`CMAKE_<LANG>_EXTENSIONS` if set, otherwise falling back to ``ON``.
+
+* Always adds a flag if :prop_tgt:`<LANG>_STANDARD` is set and
+  :prop_tgt:`<LANG>_STANDARD_REQUIRED` is ``OFF``.
+
+* If :prop_tgt:`<LANG>_STANDARD` is unset:
+
+  * Doesn't disable extensions even if :prop_tgt:`<LANG>_EXTENSIONS` is
+    ``OFF``.
+
+  * Fails to enable extensions if :prop_tgt:`<LANG>_EXTENSIONS` is ``ON``
+    except for the ``IAR`` compiler.
+
+Code may need to be updated for the ``NEW`` behavior in the following cases:
+
+* If a standard mode flag previously overridden by CMake's and not used during
+  compiler detection now takes effect due to CMake no longer adding one as the
+  default detected is appropriate.
+
+  Such code should be converted to either:
+
+  * Use :prop_tgt:`<LANG>_STANDARD` and :prop_tgt:`<LANG>_EXTENSIONS` instead
+    of manually adding flags.
+
+  * Or ensure the manually-specified flags are used during compiler detection.
+
+* If extensions were disabled without :prop_tgt:`<LANG>_STANDARD` being set
+  CMake previously wouldn't actually disable extensions.
+
+  Such code should be updated to not disable extensions if they are required.
+
+* If extensions were enabled/disabled when :prop_tgt:`<LANG>_STANDARD` was
+  satisfied by the compiler's default CMake previously wouldn't actually
+  enable/disable extensions.
+
+  Such code should be updated to set the correct extensions mode.
+
+If compiler flags affecting the standard mode are used during compiler
+detection (for example in :manual:`a toolchain file <cmake-toolchains(7)>`
+using :variable:`CMAKE_<LANG>_FLAGS_INIT`) then they will affect the detected
+default :variable:`standard <CMAKE_<LANG>_STANDARD_DEFAULT>` and
+:variable:`extensions <CMAKE_<LANG>_EXTENSIONS_DEFAULT>`.
+
+Unlike many policies, CMake version |release| does *not* warn when the policy
+is not set and simply uses the ``OLD`` behavior. Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+See documentation of the
+:variable:`CMAKE_POLICY_WARNING_CMP0128 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
+variable to control the warning.
+
+.. include:: DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/DEPRECATED.txt b/share/cmake-3.22/Help/policy/DEPRECATED.txt
similarity index 100%
rename from share/cmake-3.18/Help/policy/DEPRECATED.txt
rename to share/cmake-3.22/Help/policy/DEPRECATED.txt
diff --git a/share/cmake-3.18/Help/policy/DISALLOWED_COMMAND.txt b/share/cmake-3.22/Help/policy/DISALLOWED_COMMAND.txt
similarity index 100%
rename from share/cmake-3.18/Help/policy/DISALLOWED_COMMAND.txt
rename to share/cmake-3.22/Help/policy/DISALLOWED_COMMAND.txt
diff --git a/share/cmake-3.18/Help/prop_cache/ADVANCED.rst b/share/cmake-3.22/Help/prop_cache/ADVANCED.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_cache/ADVANCED.rst
rename to share/cmake-3.22/Help/prop_cache/ADVANCED.rst
diff --git a/share/cmake-3.18/Help/prop_cache/HELPSTRING.rst b/share/cmake-3.22/Help/prop_cache/HELPSTRING.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_cache/HELPSTRING.rst
rename to share/cmake-3.22/Help/prop_cache/HELPSTRING.rst
diff --git a/share/cmake-3.18/Help/prop_cache/MODIFIED.rst b/share/cmake-3.22/Help/prop_cache/MODIFIED.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_cache/MODIFIED.rst
rename to share/cmake-3.22/Help/prop_cache/MODIFIED.rst
diff --git a/share/cmake-3.18/Help/prop_cache/STRINGS.rst b/share/cmake-3.22/Help/prop_cache/STRINGS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_cache/STRINGS.rst
rename to share/cmake-3.22/Help/prop_cache/STRINGS.rst
diff --git a/share/cmake-3.18/Help/prop_cache/TYPE.rst b/share/cmake-3.22/Help/prop_cache/TYPE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_cache/TYPE.rst
rename to share/cmake-3.22/Help/prop_cache/TYPE.rst
diff --git a/share/cmake-3.18/Help/prop_cache/VALUE.rst b/share/cmake-3.22/Help/prop_cache/VALUE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_cache/VALUE.rst
rename to share/cmake-3.22/Help/prop_cache/VALUE.rst
diff --git a/share/cmake-3.22/Help/prop_dir/ADDITIONAL_CLEAN_FILES.rst b/share/cmake-3.22/Help/prop_dir/ADDITIONAL_CLEAN_FILES.rst
new file mode 100644
index 0000000..6097d14
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_dir/ADDITIONAL_CLEAN_FILES.rst
@@ -0,0 +1,23 @@
+ADDITIONAL_CLEAN_FILES
+----------------------
+
+.. versionadded:: 3.15
+
+A :ref:`;-list <CMake Language Lists>` of files or directories that will be
+removed as a part of the global ``clean`` target.  It is useful for
+specifying generated files or directories that are used by multiple targets
+or by CMake itself, or that are generated in ways which cannot be captured as
+outputs or byproducts of custom commands.
+
+If an additional clean file is specific to a single target only, then the
+:prop_tgt:`ADDITIONAL_CLEAN_FILES` target property would usually be a better
+choice than this directory property.
+
+Relative paths are allowed and are interpreted relative to the
+current binary directory.
+
+Contents of ``ADDITIONAL_CLEAN_FILES`` may use
+:manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+This property only works for the :generator:`Ninja` and the Makefile
+generators.  It is ignored by other generators.
diff --git a/share/cmake-3.18/Help/prop_dir/ADDITIONAL_MAKE_CLEAN_FILES.rst b/share/cmake-3.22/Help/prop_dir/ADDITIONAL_MAKE_CLEAN_FILES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/ADDITIONAL_MAKE_CLEAN_FILES.rst
rename to share/cmake-3.22/Help/prop_dir/ADDITIONAL_MAKE_CLEAN_FILES.rst
diff --git a/share/cmake-3.22/Help/prop_dir/BINARY_DIR.rst b/share/cmake-3.22/Help/prop_dir/BINARY_DIR.rst
new file mode 100644
index 0000000..fcf9d17
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_dir/BINARY_DIR.rst
@@ -0,0 +1,7 @@
+BINARY_DIR
+----------
+
+.. versionadded:: 3.7
+
+This read-only directory property reports absolute path to the binary
+directory corresponding to the source on which it is read.
diff --git a/share/cmake-3.22/Help/prop_dir/BUILDSYSTEM_TARGETS.rst b/share/cmake-3.22/Help/prop_dir/BUILDSYSTEM_TARGETS.rst
new file mode 100644
index 0000000..c998488
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_dir/BUILDSYSTEM_TARGETS.rst
@@ -0,0 +1,15 @@
+BUILDSYSTEM_TARGETS
+-------------------
+
+.. versionadded:: 3.7
+
+This read-only directory property contains a
+:ref:`semicolon-separated list <CMake Language Lists>` of buildsystem targets added in the
+directory by calls to the :command:`add_library`, :command:`add_executable`,
+and :command:`add_custom_target` commands.  The list does not include any
+:ref:`Imported Targets` or :ref:`Alias Targets`, but does include
+:ref:`Interface Libraries`.  Each entry in the list is the logical name
+of a target, suitable to pass to the :command:`get_property` command
+``TARGET`` option.
+
+See also the :prop_dir:`IMPORTED_TARGETS` directory property.
diff --git a/share/cmake-3.18/Help/prop_dir/CACHE_VARIABLES.rst b/share/cmake-3.22/Help/prop_dir/CACHE_VARIABLES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/CACHE_VARIABLES.rst
rename to share/cmake-3.22/Help/prop_dir/CACHE_VARIABLES.rst
diff --git a/share/cmake-3.18/Help/prop_dir/CLEAN_NO_CUSTOM.rst b/share/cmake-3.22/Help/prop_dir/CLEAN_NO_CUSTOM.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/CLEAN_NO_CUSTOM.rst
rename to share/cmake-3.22/Help/prop_dir/CLEAN_NO_CUSTOM.rst
diff --git a/share/cmake-3.18/Help/prop_dir/CMAKE_CONFIGURE_DEPENDS.rst b/share/cmake-3.22/Help/prop_dir/CMAKE_CONFIGURE_DEPENDS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/CMAKE_CONFIGURE_DEPENDS.rst
rename to share/cmake-3.22/Help/prop_dir/CMAKE_CONFIGURE_DEPENDS.rst
diff --git a/share/cmake-3.18/Help/prop_dir/COMPILE_DEFINITIONS.rst b/share/cmake-3.22/Help/prop_dir/COMPILE_DEFINITIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/COMPILE_DEFINITIONS.rst
rename to share/cmake-3.22/Help/prop_dir/COMPILE_DEFINITIONS.rst
diff --git a/share/cmake-3.18/Help/prop_dir/COMPILE_DEFINITIONS_CONFIG.rst b/share/cmake-3.22/Help/prop_dir/COMPILE_DEFINITIONS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/COMPILE_DEFINITIONS_CONFIG.rst
rename to share/cmake-3.22/Help/prop_dir/COMPILE_DEFINITIONS_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_dir/COMPILE_OPTIONS.rst b/share/cmake-3.22/Help/prop_dir/COMPILE_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/COMPILE_OPTIONS.rst
rename to share/cmake-3.22/Help/prop_dir/COMPILE_OPTIONS.rst
diff --git a/share/cmake-3.18/Help/prop_dir/DEFINITIONS.rst b/share/cmake-3.22/Help/prop_dir/DEFINITIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/DEFINITIONS.rst
rename to share/cmake-3.22/Help/prop_dir/DEFINITIONS.rst
diff --git a/share/cmake-3.18/Help/prop_dir/EXCLUDE_FROM_ALL.rst b/share/cmake-3.22/Help/prop_dir/EXCLUDE_FROM_ALL.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/EXCLUDE_FROM_ALL.rst
rename to share/cmake-3.22/Help/prop_dir/EXCLUDE_FROM_ALL.rst
diff --git a/share/cmake-3.18/Help/prop_dir/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst b/share/cmake-3.22/Help/prop_dir/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst
rename to share/cmake-3.22/Help/prop_dir/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst
diff --git a/share/cmake-3.22/Help/prop_dir/IMPORTED_TARGETS.rst b/share/cmake-3.22/Help/prop_dir/IMPORTED_TARGETS.rst
new file mode 100644
index 0000000..fea8a93
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_dir/IMPORTED_TARGETS.rst
@@ -0,0 +1,14 @@
+IMPORTED_TARGETS
+----------------
+
+.. versionadded:: 3.21
+
+This read-only directory property contains a
+:ref:`semicolon-separated list <CMake Language Lists>` of
+:ref:`Imported Targets` added in the directory by calls to the
+:command:`add_library` and :command:`add_executable` commands.
+Each entry in the list is the logical name of a target, suitable
+to pass to the :command:`get_property` command ``TARGET`` option
+when called in the same directory.
+
+See also the :prop_dir:`BUILDSYSTEM_TARGETS` directory property.
diff --git a/share/cmake-3.18/Help/prop_dir/INCLUDE_DIRECTORIES.rst b/share/cmake-3.22/Help/prop_dir/INCLUDE_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/INCLUDE_DIRECTORIES.rst
rename to share/cmake-3.22/Help/prop_dir/INCLUDE_DIRECTORIES.rst
diff --git a/share/cmake-3.18/Help/prop_dir/INCLUDE_REGULAR_EXPRESSION.rst b/share/cmake-3.22/Help/prop_dir/INCLUDE_REGULAR_EXPRESSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/INCLUDE_REGULAR_EXPRESSION.rst
rename to share/cmake-3.22/Help/prop_dir/INCLUDE_REGULAR_EXPRESSION.rst
diff --git a/share/cmake-3.18/Help/prop_dir/INTERPROCEDURAL_OPTIMIZATION.rst b/share/cmake-3.22/Help/prop_dir/INTERPROCEDURAL_OPTIMIZATION.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/INTERPROCEDURAL_OPTIMIZATION.rst
rename to share/cmake-3.22/Help/prop_dir/INTERPROCEDURAL_OPTIMIZATION.rst
diff --git a/share/cmake-3.18/Help/prop_dir/INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst b/share/cmake-3.22/Help/prop_dir/INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
rename to share/cmake-3.22/Help/prop_dir/INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
diff --git a/share/cmake-3.22/Help/prop_dir/LABELS.rst b/share/cmake-3.22/Help/prop_dir/LABELS.rst
new file mode 100644
index 0000000..bf14368
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_dir/LABELS.rst
@@ -0,0 +1,15 @@
+LABELS
+------
+
+.. versionadded:: 3.10
+
+Specify a list of text labels associated with a directory and all of its
+subdirectories. This is equivalent to setting the :prop_tgt:`LABELS` target
+property and the :prop_test:`LABELS` test property on all targets and tests in
+the current directory and subdirectories. Note: Launchers must enabled to
+propagate labels to targets.
+
+The :variable:`CMAKE_DIRECTORY_LABELS` variable can be used to initialize this
+property.
+
+The list is reported in dashboard submissions.
diff --git a/share/cmake-3.18/Help/prop_dir/LINK_DIRECTORIES.rst b/share/cmake-3.22/Help/prop_dir/LINK_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/LINK_DIRECTORIES.rst
rename to share/cmake-3.22/Help/prop_dir/LINK_DIRECTORIES.rst
diff --git a/share/cmake-3.22/Help/prop_dir/LINK_OPTIONS.rst b/share/cmake-3.22/Help/prop_dir/LINK_OPTIONS.rst
new file mode 100644
index 0000000..3a5c72f
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_dir/LINK_OPTIONS.rst
@@ -0,0 +1,19 @@
+LINK_OPTIONS
+------------
+
+.. versionadded:: 3.13
+
+List of options to use for the link step of shared library, module
+and executable targets as well as the device link step.
+
+This property holds a :ref:`semicolon-separated list <CMake Language Lists>` of options
+given so far to the :command:`add_link_options` command.
+
+This property is used to initialize the :prop_tgt:`LINK_OPTIONS` target
+property when a target is created, which is used by the generators to set
+the options for the compiler.
+
+Contents of ``LINK_OPTIONS`` may use "generator expressions" with the
+syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual
+for available expressions.  See the :manual:`cmake-buildsystem(7)` manual
+for more on defining buildsystem properties.
diff --git a/share/cmake-3.18/Help/prop_dir/LISTFILE_STACK.rst b/share/cmake-3.22/Help/prop_dir/LISTFILE_STACK.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/LISTFILE_STACK.rst
rename to share/cmake-3.22/Help/prop_dir/LISTFILE_STACK.rst
diff --git a/share/cmake-3.18/Help/prop_dir/MACROS.rst b/share/cmake-3.22/Help/prop_dir/MACROS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/MACROS.rst
rename to share/cmake-3.22/Help/prop_dir/MACROS.rst
diff --git a/share/cmake-3.18/Help/prop_dir/PARENT_DIRECTORY.rst b/share/cmake-3.22/Help/prop_dir/PARENT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/PARENT_DIRECTORY.rst
rename to share/cmake-3.22/Help/prop_dir/PARENT_DIRECTORY.rst
diff --git a/share/cmake-3.18/Help/prop_dir/RULE_LAUNCH_COMPILE.rst b/share/cmake-3.22/Help/prop_dir/RULE_LAUNCH_COMPILE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/RULE_LAUNCH_COMPILE.rst
rename to share/cmake-3.22/Help/prop_dir/RULE_LAUNCH_COMPILE.rst
diff --git a/share/cmake-3.18/Help/prop_dir/RULE_LAUNCH_CUSTOM.rst b/share/cmake-3.22/Help/prop_dir/RULE_LAUNCH_CUSTOM.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/RULE_LAUNCH_CUSTOM.rst
rename to share/cmake-3.22/Help/prop_dir/RULE_LAUNCH_CUSTOM.rst
diff --git a/share/cmake-3.18/Help/prop_dir/RULE_LAUNCH_LINK.rst b/share/cmake-3.22/Help/prop_dir/RULE_LAUNCH_LINK.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/RULE_LAUNCH_LINK.rst
rename to share/cmake-3.22/Help/prop_dir/RULE_LAUNCH_LINK.rst
diff --git a/share/cmake-3.22/Help/prop_dir/SOURCE_DIR.rst b/share/cmake-3.22/Help/prop_dir/SOURCE_DIR.rst
new file mode 100644
index 0000000..d73707d
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_dir/SOURCE_DIR.rst
@@ -0,0 +1,7 @@
+SOURCE_DIR
+----------
+
+.. versionadded:: 3.7
+
+This read-only directory property reports absolute path to the source
+directory on which it is read.
diff --git a/share/cmake-3.22/Help/prop_dir/SUBDIRECTORIES.rst b/share/cmake-3.22/Help/prop_dir/SUBDIRECTORIES.rst
new file mode 100644
index 0000000..71ea496
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_dir/SUBDIRECTORIES.rst
@@ -0,0 +1,17 @@
+SUBDIRECTORIES
+--------------
+
+.. versionadded:: 3.7
+
+This read-only directory property contains a
+:ref:`semicolon-separated list <CMake Language Lists>` of subdirectories processed so far by
+the :command:`add_subdirectory` or :command:`subdirs` commands.  Each entry is
+the absolute path to the source directory (containing the ``CMakeLists.txt``
+file).  This is suitable to pass to the :command:`get_property` command
+``DIRECTORY`` option.
+
+.. note::
+
+  The :command:`subdirs` command does not process its arguments until
+  after the calling directory is fully processed.  Therefore looking
+  up this property in the current directory will not see them.
diff --git a/share/cmake-3.22/Help/prop_dir/TESTS.rst b/share/cmake-3.22/Help/prop_dir/TESTS.rst
new file mode 100644
index 0000000..294be17
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_dir/TESTS.rst
@@ -0,0 +1,10 @@
+TESTS
+-----
+
+.. versionadded:: 3.12
+
+List of tests.
+
+This read-only property holds a
+:ref:`semicolon-separated list <CMake Language Lists>` of tests
+defined so far, in the current directory, by the :command:`add_test` command.
diff --git a/share/cmake-3.18/Help/prop_dir/TEST_INCLUDE_FILE.rst b/share/cmake-3.22/Help/prop_dir/TEST_INCLUDE_FILE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/TEST_INCLUDE_FILE.rst
rename to share/cmake-3.22/Help/prop_dir/TEST_INCLUDE_FILE.rst
diff --git a/share/cmake-3.22/Help/prop_dir/TEST_INCLUDE_FILES.rst b/share/cmake-3.22/Help/prop_dir/TEST_INCLUDE_FILES.rst
new file mode 100644
index 0000000..f9a66f4
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_dir/TEST_INCLUDE_FILES.rst
@@ -0,0 +1,9 @@
+TEST_INCLUDE_FILES
+------------------
+
+.. versionadded:: 3.10
+
+A list of cmake files that will be included when ctest is run.
+
+If you specify ``TEST_INCLUDE_FILES``, those files will be included and
+processed when ctest is run on the directory.
diff --git a/share/cmake-3.18/Help/prop_dir/VARIABLES.rst b/share/cmake-3.22/Help/prop_dir/VARIABLES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/VARIABLES.rst
rename to share/cmake-3.22/Help/prop_dir/VARIABLES.rst
diff --git a/share/cmake-3.18/Help/prop_dir/VS_GLOBAL_SECTION_POST_section.rst b/share/cmake-3.22/Help/prop_dir/VS_GLOBAL_SECTION_POST_section.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/VS_GLOBAL_SECTION_POST_section.rst
rename to share/cmake-3.22/Help/prop_dir/VS_GLOBAL_SECTION_POST_section.rst
diff --git a/share/cmake-3.18/Help/prop_dir/VS_GLOBAL_SECTION_PRE_section.rst b/share/cmake-3.22/Help/prop_dir/VS_GLOBAL_SECTION_PRE_section.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_dir/VS_GLOBAL_SECTION_PRE_section.rst
rename to share/cmake-3.22/Help/prop_dir/VS_GLOBAL_SECTION_PRE_section.rst
diff --git a/share/cmake-3.22/Help/prop_dir/VS_STARTUP_PROJECT.rst b/share/cmake-3.22/Help/prop_dir/VS_STARTUP_PROJECT.rst
new file mode 100644
index 0000000..8a0c3c8
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_dir/VS_STARTUP_PROJECT.rst
@@ -0,0 +1,20 @@
+VS_STARTUP_PROJECT
+------------------
+
+.. versionadded:: 3.6
+
+Specify the default startup project in a Visual Studio solution.
+
+The :ref:`Visual Studio Generators` create a ``.sln`` file for each directory
+whose ``CMakeLists.txt`` file calls the :command:`project` command.  Set this
+property in the same directory as a :command:`project` command call (e.g. in
+the top-level ``CMakeLists.txt`` file) to specify the default startup project
+for the corresponding solution file.
+
+The property must be set to the name of an existing target.  This
+will cause that project to be listed first in the generated solution
+file causing Visual Studio to make it the startup project if the
+solution has never been opened before.
+
+If this property is not specified, then the ``ALL_BUILD`` project
+will be the default.
diff --git a/share/cmake-3.18/Help/prop_gbl/ALLOW_DUPLICATE_CUSTOM_TARGETS.rst b/share/cmake-3.22/Help/prop_gbl/ALLOW_DUPLICATE_CUSTOM_TARGETS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/ALLOW_DUPLICATE_CUSTOM_TARGETS.rst
rename to share/cmake-3.22/Help/prop_gbl/ALLOW_DUPLICATE_CUSTOM_TARGETS.rst
diff --git a/share/cmake-3.22/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst b/share/cmake-3.22/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst
new file mode 100644
index 0000000..07c732b
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst
@@ -0,0 +1,18 @@
+AUTOGEN_SOURCE_GROUP
+--------------------
+
+.. versionadded:: 3.9
+
+Name of the  :command:`source_group` for :prop_tgt:`AUTOMOC`,
+:prop_tgt:`AUTORCC` and :prop_tgt:`AUTOUIC` generated files.
+
+Files generated by :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTORCC` and
+:prop_tgt:`AUTOUIC` are not always known at configure time and therefore can't
+be passed to :command:`source_group`.
+:prop_gbl:`AUTOGEN_SOURCE_GROUP` can be used instead to generate or select
+a source group for :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTORCC` and
+:prop_tgt:`AUTOUIC` generated files.
+
+For :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTORCC` and :prop_tgt:`AUTOUIC` specific
+overrides see :prop_gbl:`AUTOMOC_SOURCE_GROUP`, :prop_gbl:`AUTORCC_SOURCE_GROUP`
+and :prop_gbl:`AUTOUIC_SOURCE_GROUP` respectively.
diff --git a/share/cmake-3.18/Help/prop_gbl/AUTOGEN_TARGETS_FOLDER.rst b/share/cmake-3.22/Help/prop_gbl/AUTOGEN_TARGETS_FOLDER.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/AUTOGEN_TARGETS_FOLDER.rst
rename to share/cmake-3.22/Help/prop_gbl/AUTOGEN_TARGETS_FOLDER.rst
diff --git a/share/cmake-3.22/Help/prop_gbl/AUTOMOC_SOURCE_GROUP.rst b/share/cmake-3.22/Help/prop_gbl/AUTOMOC_SOURCE_GROUP.rst
new file mode 100644
index 0000000..a266fde
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_gbl/AUTOMOC_SOURCE_GROUP.rst
@@ -0,0 +1,9 @@
+AUTOMOC_SOURCE_GROUP
+--------------------
+
+.. versionadded:: 3.9
+
+Name of the  :command:`source_group` for :prop_tgt:`AUTOMOC` generated files.
+
+When set this is used instead of :prop_gbl:`AUTOGEN_SOURCE_GROUP` for
+files generated by :prop_tgt:`AUTOMOC`.
diff --git a/share/cmake-3.18/Help/prop_gbl/AUTOMOC_TARGETS_FOLDER.rst b/share/cmake-3.22/Help/prop_gbl/AUTOMOC_TARGETS_FOLDER.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/AUTOMOC_TARGETS_FOLDER.rst
rename to share/cmake-3.22/Help/prop_gbl/AUTOMOC_TARGETS_FOLDER.rst
diff --git a/share/cmake-3.22/Help/prop_gbl/AUTORCC_SOURCE_GROUP.rst b/share/cmake-3.22/Help/prop_gbl/AUTORCC_SOURCE_GROUP.rst
new file mode 100644
index 0000000..54ebabb
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_gbl/AUTORCC_SOURCE_GROUP.rst
@@ -0,0 +1,9 @@
+AUTORCC_SOURCE_GROUP
+--------------------
+
+.. versionadded:: 3.9
+
+Name of the  :command:`source_group` for :prop_tgt:`AUTORCC` generated files.
+
+When set this is used instead of :prop_gbl:`AUTOGEN_SOURCE_GROUP` for
+files generated by :prop_tgt:`AUTORCC`.
diff --git a/share/cmake-3.22/Help/prop_gbl/AUTOUIC_SOURCE_GROUP.rst b/share/cmake-3.22/Help/prop_gbl/AUTOUIC_SOURCE_GROUP.rst
new file mode 100644
index 0000000..79ebfe0
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_gbl/AUTOUIC_SOURCE_GROUP.rst
@@ -0,0 +1,9 @@
+AUTOUIC_SOURCE_GROUP
+--------------------
+
+.. versionadded:: 3.21
+
+Name of the  :command:`source_group` for :prop_tgt:`AUTOUIC` generated files.
+
+When set this is used instead of :prop_gbl:`AUTOGEN_SOURCE_GROUP` for
+files generated by :prop_tgt:`AUTOUIC`.
diff --git a/share/cmake-3.22/Help/prop_gbl/CMAKE_CUDA_KNOWN_FEATURES.rst b/share/cmake-3.22/Help/prop_gbl/CMAKE_CUDA_KNOWN_FEATURES.rst
new file mode 100644
index 0000000..3a17973
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_gbl/CMAKE_CUDA_KNOWN_FEATURES.rst
@@ -0,0 +1,37 @@
+CMAKE_CUDA_KNOWN_FEATURES
+-------------------------
+
+.. versionadded:: 3.17
+
+List of CUDA features known to this version of CMake.
+
+The features listed in this global property may be known to be available to the
+CUDA compiler.  If the feature is available with the C++ compiler, it will
+be listed in the :variable:`CMAKE_CUDA_COMPILE_FEATURES` variable.
+
+The features listed here may be used with the :command:`target_compile_features`
+command.  See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+
+The features known to this version of CMake are:
+
+``cuda_std_03``
+  Compiler mode is at least CUDA/C++ 03.
+
+``cuda_std_11``
+  Compiler mode is at least CUDA/C++ 11.
+
+``cuda_std_14``
+  Compiler mode is at least CUDA/C++ 14.
+
+``cuda_std_17``
+  Compiler mode is at least CUDA/C++ 17.
+
+``cuda_std_20``
+  Compiler mode is at least CUDA/C++ 20.
+
+``cuda_std_23``
+  .. versionadded:: 3.20
+
+  Compiler mode is at least CUDA/C++ 23.
diff --git a/share/cmake-3.22/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst b/share/cmake-3.22/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst
new file mode 100644
index 0000000..1a913fb
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -0,0 +1,360 @@
+CMAKE_CXX_KNOWN_FEATURES
+------------------------
+
+.. versionadded:: 3.1
+
+List of C++ features known to this version of CMake.
+
+The features listed in this global property may be known to be available to the
+C++ compiler.  If the feature is available with the C++ compiler, it will
+be listed in the :variable:`CMAKE_CXX_COMPILE_FEATURES` variable.
+
+The features listed here may be used with the :command:`target_compile_features`
+command.  See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+The features known to this version of CMake are listed below.
+
+High level meta features indicating C++ standard support
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.8
+
+The following meta features indicate general support for the associated
+language standard.  It reflects the language support claimed by the compiler,
+but it does not necessarily imply complete conformance to that standard.
+
+``cxx_std_98``
+  Compiler mode is at least C++ 98.
+
+``cxx_std_11``
+  Compiler mode is at least C++ 11.
+
+``cxx_std_14``
+  Compiler mode is at least C++ 14.
+
+``cxx_std_17``
+  Compiler mode is at least C++ 17.
+
+``cxx_std_20``
+  .. versionadded:: 3.12
+
+  Compiler mode is at least C++ 20.
+
+``cxx_std_23``
+  .. versionadded:: 3.20
+
+  Compiler mode is at least C++ 23.
+
+Low level individual compile features
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+For C++ 11 and C++ 14, compilers were sometimes slow to implement certain
+language features.  CMake provided some individual compile features to help
+projects determine whether specific features were available.  These individual
+features are now less relevant and projects should generally prefer to use the
+high level meta features instead.  Individual compile features are not provided
+for C++ 17 or later.
+
+See the :manual:`cmake-compile-features(7)` manual for further discussion of
+the use of individual compile features.
+
+Individual features from C++ 98
+"""""""""""""""""""""""""""""""
+
+``cxx_template_template_parameters``
+  Template template parameters, as defined in ``ISO/IEC 14882:1998``.
+
+
+Individual features from C++ 11
+"""""""""""""""""""""""""""""""
+
+``cxx_alias_templates``
+  Template aliases, as defined in N2258_.
+
+  .. _N2258: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
+
+``cxx_alignas``
+  Alignment control ``alignas``, as defined in N2341_.
+
+  .. _N2341: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
+
+``cxx_alignof``
+  Alignment control ``alignof``, as defined in N2341_.
+
+  .. _N2341: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
+
+``cxx_attributes``
+  Generic attributes, as defined in N2761_.
+
+  .. _N2761: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf
+
+``cxx_auto_type``
+  Automatic type deduction, as defined in N1984_.
+
+  .. _N1984: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf
+
+``cxx_constexpr``
+  Constant expressions, as defined in N2235_.
+
+  .. _N2235: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
+
+
+``cxx_decltype_incomplete_return_types``
+  Decltype on incomplete return types, as defined in N3276_.
+
+  .. _N3276 : http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf
+
+``cxx_decltype``
+  Decltype, as defined in N2343_.
+
+  .. _N2343: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf
+
+``cxx_default_function_template_args``
+  Default template arguments for function templates, as defined in DR226_
+
+  .. _DR226: http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226
+
+``cxx_defaulted_functions``
+  Defaulted functions, as defined in N2346_.
+
+  .. _N2346: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
+
+``cxx_defaulted_move_initializers``
+  Defaulted move initializers, as defined in N3053_.
+
+  .. _N3053: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html
+
+``cxx_delegating_constructors``
+  Delegating constructors, as defined in N1986_.
+
+  .. _N1986: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
+
+``cxx_deleted_functions``
+  Deleted functions, as defined in N2346_.
+
+  .. _N2346: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
+
+``cxx_enum_forward_declarations``
+  Enum forward declarations, as defined in N2764_.
+
+  .. _N2764: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf
+
+``cxx_explicit_conversions``
+  Explicit conversion operators, as defined in N2437_.
+
+  .. _N2437: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
+
+``cxx_extended_friend_declarations``
+  Extended friend declarations, as defined in N1791_.
+
+  .. _N1791: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf
+
+``cxx_extern_templates``
+  Extern templates, as defined in N1987_.
+
+  .. _N1987: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm
+
+``cxx_final``
+  Override control ``final`` keyword, as defined in N2928_, N3206_ and N3272_.
+
+  .. _N2928: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
+  .. _N3206: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm
+  .. _N3272: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm
+
+``cxx_func_identifier``
+  Predefined ``__func__`` identifier, as defined in N2340_.
+
+  .. _N2340: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm
+
+``cxx_generalized_initializers``
+  Initializer lists, as defined in N2672_.
+
+  .. _N2672: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
+
+``cxx_inheriting_constructors``
+  Inheriting constructors, as defined in N2540_.
+
+  .. _N2540: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm
+
+``cxx_inline_namespaces``
+  Inline namespaces, as defined in N2535_.
+
+  .. _N2535: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm
+
+``cxx_lambdas``
+  Lambda functions, as defined in N2927_.
+
+  .. _N2927: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2927.pdf
+
+``cxx_local_type_template_args``
+  Local and unnamed types as template arguments, as defined in N2657_.
+
+  .. _N2657: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm
+
+``cxx_long_long_type``
+  ``long long`` type, as defined in N1811_.
+
+  .. _N1811: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf
+
+``cxx_noexcept``
+  Exception specifications, as defined in N3050_.
+
+  .. _N3050: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html
+
+``cxx_nonstatic_member_init``
+  Non-static data member initialization, as defined in N2756_.
+
+  .. _N2756: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2756.htm
+
+``cxx_nullptr``
+  Null pointer, as defined in N2431_.
+
+  .. _N2431: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf
+
+``cxx_override``
+  Override control ``override`` keyword, as defined in N2928_, N3206_
+  and N3272_.
+
+  .. _N2928: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
+  .. _N3206: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm
+  .. _N3272: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm
+
+``cxx_range_for``
+  Range-based for, as defined in N2930_.
+
+  .. _N2930: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html
+
+``cxx_raw_string_literals``
+  Raw string literals, as defined in N2442_.
+
+  .. _N2442: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
+
+``cxx_reference_qualified_functions``
+  Reference qualified functions, as defined in N2439_.
+
+  .. _N2439: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm
+
+``cxx_right_angle_brackets``
+  Right angle bracket parsing, as defined in N1757_.
+
+  .. _N1757: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html
+
+``cxx_rvalue_references``
+  R-value references, as defined in N2118_.
+
+  .. _N2118: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html
+
+``cxx_sizeof_member``
+  Size of non-static data members, as defined in N2253_.
+
+  .. _N2253: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html
+
+``cxx_static_assert``
+  Static assert, as defined in N1720_.
+
+  .. _N1720: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html
+
+``cxx_strong_enums``
+  Strongly typed enums, as defined in N2347_.
+
+  .. _N2347: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf
+
+``cxx_thread_local``
+  Thread-local variables, as defined in N2659_.
+
+  .. _N2659: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm
+
+``cxx_trailing_return_types``
+  Automatic function return type, as defined in N2541_.
+
+  .. _N2541: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm
+
+``cxx_unicode_literals``
+  Unicode string literals, as defined in N2442_.
+
+  .. _N2442: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
+
+``cxx_uniform_initialization``
+  Uniform initialization, as defined in N2640_.
+
+  .. _N2640: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf
+
+``cxx_unrestricted_unions``
+  Unrestricted unions, as defined in N2544_.
+
+  .. _N2544: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf
+
+``cxx_user_literals``
+  User-defined literals, as defined in N2765_.
+
+  .. _N2765: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf
+
+``cxx_variadic_macros``
+  Variadic macros, as defined in N1653_.
+
+  .. _N1653: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm
+
+``cxx_variadic_templates``
+  Variadic templates, as defined in N2242_.
+
+  .. _N2242: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf
+
+
+Individual features from C++ 14
+"""""""""""""""""""""""""""""""
+
+``cxx_aggregate_default_initializers``
+  Aggregate default initializers, as defined in N3605_.
+
+  .. _N3605: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3605.html
+
+``cxx_attribute_deprecated``
+  ``[[deprecated]]`` attribute, as defined in N3760_.
+
+  .. _N3760: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3760.html
+
+``cxx_binary_literals``
+  Binary literals, as defined in N3472_.
+
+  .. _N3472: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3472.pdf
+
+``cxx_contextual_conversions``
+  Contextual conversions, as defined in N3323_.
+
+  .. _N3323: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3323.pdf
+
+``cxx_decltype_auto``
+  ``decltype(auto)`` semantics, as defined in N3638_.
+
+  .. _N3638: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3638.html
+
+``cxx_digit_separators``
+  Digit separators, as defined in N3781_.
+
+  .. _N3781: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3781.pdf
+
+``cxx_generic_lambdas``
+  Generic lambdas, as defined in N3649_.
+
+  .. _N3649: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3649.html
+
+``cxx_lambda_init_captures``
+  Initialized lambda captures, as defined in N3648_.
+
+  .. _N3648: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3648.html
+
+``cxx_relaxed_constexpr``
+  Relaxed constexpr, as defined in N3652_.
+
+  .. _N3652: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3652.html
+
+``cxx_return_type_deduction``
+  Return type deduction on normal functions, as defined in N3386_.
+
+  .. _N3386: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3386.html
+
+``cxx_variable_templates``
+  Variable templates, as defined in N3651_.
+
+  .. _N3651: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3651.pdf
diff --git a/share/cmake-3.22/Help/prop_gbl/CMAKE_C_KNOWN_FEATURES.rst b/share/cmake-3.22/Help/prop_gbl/CMAKE_C_KNOWN_FEATURES.rst
new file mode 100644
index 0000000..97da697
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_gbl/CMAKE_C_KNOWN_FEATURES.rst
@@ -0,0 +1,55 @@
+CMAKE_C_KNOWN_FEATURES
+----------------------
+
+.. versionadded:: 3.1
+
+List of C features known to this version of CMake.
+
+The features listed in this global property may be known to be available to the
+C compiler.  If the feature is available with the C compiler, it will
+be listed in the :variable:`CMAKE_C_COMPILE_FEATURES` variable.
+
+The features listed here may be used with the :command:`target_compile_features`
+command.  See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+The features known to this version of CMake are listed below.
+
+High level meta features indicating C standard support
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.8
+
+``c_std_90``
+  Compiler mode is at least C 90.
+
+``c_std_99``
+  Compiler mode is at least C 99.
+
+``c_std_11``
+  Compiler mode is at least C 11.
+
+``c_std_17``
+  .. versionadded:: 3.21
+
+  Compiler mode is at least C 17.
+
+``c_std_23``
+  .. versionadded:: 3.21
+
+  Compiler mode is at least C 23.
+
+Low level individual compile features
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+``c_function_prototypes``
+  Function prototypes, as defined in ``ISO/IEC 9899:1990``.
+
+``c_restrict``
+  ``restrict`` keyword, as defined in ``ISO/IEC 9899:1999``.
+
+``c_static_assert``
+  Static assert, as defined in ``ISO/IEC 9899:2011``.
+
+``c_variadic_macros``
+  Variadic macros, as defined in ``ISO/IEC 9899:1999``.
diff --git a/share/cmake-3.22/Help/prop_gbl/CMAKE_ROLE.rst b/share/cmake-3.22/Help/prop_gbl/CMAKE_ROLE.rst
new file mode 100644
index 0000000..3f4492f
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_gbl/CMAKE_ROLE.rst
@@ -0,0 +1,22 @@
+CMAKE_ROLE
+----------
+
+.. versionadded:: 3.14
+
+Tells what mode the current running script is in. Could be one of several
+values:
+
+``PROJECT``
+  Running in project mode (processing a ``CMakeLists.txt`` file).
+
+``SCRIPT``
+  Running in ``-P`` script mode.
+
+``FIND_PACKAGE``
+  Running in ``--find-package`` mode.
+
+``CTEST``
+  Running in CTest script mode.
+
+``CPACK``
+  Running in CPack.
diff --git a/share/cmake-3.18/Help/prop_gbl/DEBUG_CONFIGURATIONS.rst b/share/cmake-3.22/Help/prop_gbl/DEBUG_CONFIGURATIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/DEBUG_CONFIGURATIONS.rst
rename to share/cmake-3.22/Help/prop_gbl/DEBUG_CONFIGURATIONS.rst
diff --git a/share/cmake-3.18/Help/prop_gbl/DISABLED_FEATURES.rst b/share/cmake-3.22/Help/prop_gbl/DISABLED_FEATURES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/DISABLED_FEATURES.rst
rename to share/cmake-3.22/Help/prop_gbl/DISABLED_FEATURES.rst
diff --git a/share/cmake-3.22/Help/prop_gbl/ECLIPSE_EXTRA_CPROJECT_CONTENTS.rst b/share/cmake-3.22/Help/prop_gbl/ECLIPSE_EXTRA_CPROJECT_CONTENTS.rst
new file mode 100644
index 0000000..2f110a7
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_gbl/ECLIPSE_EXTRA_CPROJECT_CONTENTS.rst
@@ -0,0 +1,14 @@
+ECLIPSE_EXTRA_CPROJECT_CONTENTS
+-------------------------------
+
+.. versionadded:: 3.12
+
+Additional contents to be inserted into the generated Eclipse cproject file.
+
+The cproject file defines the CDT specific information. Some third party IDE's
+are based on Eclipse with the addition of other information specific to that IDE.
+Through this property, it is possible to add this additional contents to
+the generated project.
+It is expected to contain valid XML.
+
+Also see the :prop_gbl:`ECLIPSE_EXTRA_NATURES` property.
diff --git a/share/cmake-3.18/Help/prop_gbl/ECLIPSE_EXTRA_NATURES.rst b/share/cmake-3.22/Help/prop_gbl/ECLIPSE_EXTRA_NATURES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/ECLIPSE_EXTRA_NATURES.rst
rename to share/cmake-3.22/Help/prop_gbl/ECLIPSE_EXTRA_NATURES.rst
diff --git a/share/cmake-3.18/Help/prop_gbl/ENABLED_FEATURES.rst b/share/cmake-3.22/Help/prop_gbl/ENABLED_FEATURES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/ENABLED_FEATURES.rst
rename to share/cmake-3.22/Help/prop_gbl/ENABLED_FEATURES.rst
diff --git a/share/cmake-3.18/Help/prop_gbl/ENABLED_LANGUAGES.rst b/share/cmake-3.22/Help/prop_gbl/ENABLED_LANGUAGES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/ENABLED_LANGUAGES.rst
rename to share/cmake-3.22/Help/prop_gbl/ENABLED_LANGUAGES.rst
diff --git a/share/cmake-3.22/Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst b/share/cmake-3.22/Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst
new file mode 100644
index 0000000..f6cad66
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst
@@ -0,0 +1,14 @@
+FIND_LIBRARY_USE_LIB32_PATHS
+----------------------------
+
+.. versionadded:: 3.7
+
+Whether the :command:`find_library` command should automatically search
+``lib32`` directories.
+
+``FIND_LIBRARY_USE_LIB32_PATHS`` is a boolean specifying whether the
+:command:`find_library` command should automatically search the ``lib32``
+variant of directories called ``lib`` in the search path when building 32-bit
+binaries.
+
+See also the :variable:`CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX` variable.
diff --git a/share/cmake-3.18/Help/prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS.rst b/share/cmake-3.22/Help/prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS.rst
rename to share/cmake-3.22/Help/prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS.rst
diff --git a/share/cmake-3.22/Help/prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS.rst b/share/cmake-3.22/Help/prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS.rst
new file mode 100644
index 0000000..851f859
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS.rst
@@ -0,0 +1,14 @@
+FIND_LIBRARY_USE_LIBX32_PATHS
+-----------------------------
+
+.. versionadded:: 3.9
+
+Whether the :command:`find_library` command should automatically search
+``libx32`` directories.
+
+``FIND_LIBRARY_USE_LIBX32_PATHS`` is a boolean specifying whether the
+:command:`find_library` command should automatically search the ``libx32``
+variant of directories called ``lib`` in the search path when building
+x32-abi binaries.
+
+See also the :variable:`CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX` variable.
diff --git a/share/cmake-3.18/Help/prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING.rst b/share/cmake-3.22/Help/prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING.rst
rename to share/cmake-3.22/Help/prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING.rst
diff --git a/share/cmake-3.22/Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst b/share/cmake-3.22/Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst
new file mode 100644
index 0000000..761a1dd
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst
@@ -0,0 +1,15 @@
+GENERATOR_IS_MULTI_CONFIG
+-------------------------
+
+.. versionadded:: 3.9
+
+Read-only property that is true on multi-configuration generators.
+
+True when using a multi-configuration generator such as:
+
+* :generator:`Ninja Multi-Config`
+* :ref:`Visual Studio Generators`
+* :generator:`Xcode`
+
+Multi-config generators use :variable:`CMAKE_CONFIGURATION_TYPES`
+as the set of configurations and ignore :variable:`CMAKE_BUILD_TYPE`.
diff --git a/share/cmake-3.18/Help/prop_gbl/GLOBAL_DEPENDS_DEBUG_MODE.rst b/share/cmake-3.22/Help/prop_gbl/GLOBAL_DEPENDS_DEBUG_MODE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/GLOBAL_DEPENDS_DEBUG_MODE.rst
rename to share/cmake-3.22/Help/prop_gbl/GLOBAL_DEPENDS_DEBUG_MODE.rst
diff --git a/share/cmake-3.18/Help/prop_gbl/GLOBAL_DEPENDS_NO_CYCLES.rst b/share/cmake-3.22/Help/prop_gbl/GLOBAL_DEPENDS_NO_CYCLES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/GLOBAL_DEPENDS_NO_CYCLES.rst
rename to share/cmake-3.22/Help/prop_gbl/GLOBAL_DEPENDS_NO_CYCLES.rst
diff --git a/share/cmake-3.18/Help/prop_gbl/IN_TRY_COMPILE.rst b/share/cmake-3.22/Help/prop_gbl/IN_TRY_COMPILE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/IN_TRY_COMPILE.rst
rename to share/cmake-3.22/Help/prop_gbl/IN_TRY_COMPILE.rst
diff --git a/share/cmake-3.18/Help/prop_gbl/JOB_POOLS.rst b/share/cmake-3.22/Help/prop_gbl/JOB_POOLS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/JOB_POOLS.rst
rename to share/cmake-3.22/Help/prop_gbl/JOB_POOLS.rst
diff --git a/share/cmake-3.18/Help/prop_gbl/PACKAGES_FOUND.rst b/share/cmake-3.22/Help/prop_gbl/PACKAGES_FOUND.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/PACKAGES_FOUND.rst
rename to share/cmake-3.22/Help/prop_gbl/PACKAGES_FOUND.rst
diff --git a/share/cmake-3.18/Help/prop_gbl/PACKAGES_NOT_FOUND.rst b/share/cmake-3.22/Help/prop_gbl/PACKAGES_NOT_FOUND.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/PACKAGES_NOT_FOUND.rst
rename to share/cmake-3.22/Help/prop_gbl/PACKAGES_NOT_FOUND.rst
diff --git a/share/cmake-3.18/Help/prop_gbl/PREDEFINED_TARGETS_FOLDER.rst b/share/cmake-3.22/Help/prop_gbl/PREDEFINED_TARGETS_FOLDER.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/PREDEFINED_TARGETS_FOLDER.rst
rename to share/cmake-3.22/Help/prop_gbl/PREDEFINED_TARGETS_FOLDER.rst
diff --git a/share/cmake-3.18/Help/prop_gbl/REPORT_UNDEFINED_PROPERTIES.rst b/share/cmake-3.22/Help/prop_gbl/REPORT_UNDEFINED_PROPERTIES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/REPORT_UNDEFINED_PROPERTIES.rst
rename to share/cmake-3.22/Help/prop_gbl/REPORT_UNDEFINED_PROPERTIES.rst
diff --git a/share/cmake-3.18/Help/prop_gbl/RULE_LAUNCH_COMPILE.rst b/share/cmake-3.22/Help/prop_gbl/RULE_LAUNCH_COMPILE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/RULE_LAUNCH_COMPILE.rst
rename to share/cmake-3.22/Help/prop_gbl/RULE_LAUNCH_COMPILE.rst
diff --git a/share/cmake-3.18/Help/prop_gbl/RULE_LAUNCH_CUSTOM.rst b/share/cmake-3.22/Help/prop_gbl/RULE_LAUNCH_CUSTOM.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/RULE_LAUNCH_CUSTOM.rst
rename to share/cmake-3.22/Help/prop_gbl/RULE_LAUNCH_CUSTOM.rst
diff --git a/share/cmake-3.18/Help/prop_gbl/RULE_LAUNCH_LINK.rst b/share/cmake-3.22/Help/prop_gbl/RULE_LAUNCH_LINK.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/RULE_LAUNCH_LINK.rst
rename to share/cmake-3.22/Help/prop_gbl/RULE_LAUNCH_LINK.rst
diff --git a/share/cmake-3.18/Help/prop_gbl/RULE_MESSAGES.rst b/share/cmake-3.22/Help/prop_gbl/RULE_MESSAGES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/RULE_MESSAGES.rst
rename to share/cmake-3.22/Help/prop_gbl/RULE_MESSAGES.rst
diff --git a/share/cmake-3.18/Help/prop_gbl/TARGET_ARCHIVES_MAY_BE_SHARED_LIBS.rst b/share/cmake-3.22/Help/prop_gbl/TARGET_ARCHIVES_MAY_BE_SHARED_LIBS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/TARGET_ARCHIVES_MAY_BE_SHARED_LIBS.rst
rename to share/cmake-3.22/Help/prop_gbl/TARGET_ARCHIVES_MAY_BE_SHARED_LIBS.rst
diff --git a/share/cmake-3.22/Help/prop_gbl/TARGET_MESSAGES.rst b/share/cmake-3.22/Help/prop_gbl/TARGET_MESSAGES.rst
new file mode 100644
index 0000000..bb91772
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_gbl/TARGET_MESSAGES.rst
@@ -0,0 +1,22 @@
+TARGET_MESSAGES
+---------------
+
+.. versionadded:: 3.4
+
+Specify whether to report the completion of each target.
+
+This property specifies whether :ref:`Makefile Generators` should
+add a progress message describing that each target has been completed.
+If the property is not set the default is ``ON``.  Set the property
+to ``OFF`` to disable target completion messages.
+
+This option is intended to reduce build output when little or no
+work needs to be done to bring the build tree up to date.
+
+If a ``CMAKE_TARGET_MESSAGES`` cache entry exists its value
+initializes the value of this property.
+
+Non-Makefile generators currently ignore this property.
+
+See the counterpart property :prop_gbl:`RULE_MESSAGES` to disable
+everything except for target completion messages.
diff --git a/share/cmake-3.18/Help/prop_gbl/TARGET_SUPPORTS_SHARED_LIBS.rst b/share/cmake-3.22/Help/prop_gbl/TARGET_SUPPORTS_SHARED_LIBS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/TARGET_SUPPORTS_SHARED_LIBS.rst
rename to share/cmake-3.22/Help/prop_gbl/TARGET_SUPPORTS_SHARED_LIBS.rst
diff --git a/share/cmake-3.18/Help/prop_gbl/USE_FOLDERS.rst b/share/cmake-3.22/Help/prop_gbl/USE_FOLDERS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_gbl/USE_FOLDERS.rst
rename to share/cmake-3.22/Help/prop_gbl/USE_FOLDERS.rst
diff --git a/share/cmake-3.22/Help/prop_gbl/XCODE_EMIT_EFFECTIVE_PLATFORM_NAME.rst b/share/cmake-3.22/Help/prop_gbl/XCODE_EMIT_EFFECTIVE_PLATFORM_NAME.rst
new file mode 100644
index 0000000..392b704
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_gbl/XCODE_EMIT_EFFECTIVE_PLATFORM_NAME.rst
@@ -0,0 +1,27 @@
+XCODE_EMIT_EFFECTIVE_PLATFORM_NAME
+----------------------------------
+
+.. versionadded:: 3.8
+
+Control emission of ``EFFECTIVE_PLATFORM_NAME`` by the :generator:`Xcode`
+generator.
+
+It is required for building the same target with multiple SDKs. A
+common use case is the parallel use of ``iphoneos`` and
+``iphonesimulator`` SDKs.
+
+Three different states possible that control when the :generator:`Xcode`
+generator emits the ``EFFECTIVE_PLATFORM_NAME`` variable:
+
+- If set to ``ON`` it will always be emitted
+- If set to ``OFF`` it will never be emitted
+- If unset (the default) it will only be emitted when the project was
+  configured for an embedded Xcode SDK like iOS, tvOS, watchOS or any
+  of the simulators.
+
+.. note::
+
+  When this behavior is enable for generated Xcode projects, the
+  ``EFFECTIVE_PLATFORM_NAME`` variable will leak into
+  :manual:`Generator expressions <cmake-generator-expressions(7)>`
+  like ``TARGET_FILE`` and will render those mostly unusable.
diff --git a/share/cmake-3.22/Help/prop_inst/CPACK_DESKTOP_SHORTCUTS.rst b/share/cmake-3.22/Help/prop_inst/CPACK_DESKTOP_SHORTCUTS.rst
new file mode 100644
index 0000000..55e9a20
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_inst/CPACK_DESKTOP_SHORTCUTS.rst
@@ -0,0 +1,9 @@
+CPACK_DESKTOP_SHORTCUTS
+-----------------------
+
+.. versionadded:: 3.3
+
+Species a list of shortcut names that should be created on the `Desktop`
+for this file.
+
+The property is currently only supported by the :cpack_gen:`CPack WIX Generator`.
diff --git a/share/cmake-3.22/Help/prop_inst/CPACK_NEVER_OVERWRITE.rst b/share/cmake-3.22/Help/prop_inst/CPACK_NEVER_OVERWRITE.rst
new file mode 100644
index 0000000..12eef9e
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_inst/CPACK_NEVER_OVERWRITE.rst
@@ -0,0 +1,8 @@
+CPACK_NEVER_OVERWRITE
+---------------------
+
+.. versionadded:: 3.1
+
+Request that this file not be overwritten on install or reinstall.
+
+The property is currently only supported by the :cpack_gen:`CPack WIX Generator`.
diff --git a/share/cmake-3.22/Help/prop_inst/CPACK_PERMANENT.rst b/share/cmake-3.22/Help/prop_inst/CPACK_PERMANENT.rst
new file mode 100644
index 0000000..e89c552
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_inst/CPACK_PERMANENT.rst
@@ -0,0 +1,8 @@
+CPACK_PERMANENT
+---------------
+
+.. versionadded:: 3.1
+
+Request that this file not be removed on uninstall.
+
+The property is currently only supported by the :cpack_gen:`CPack WIX Generator`.
diff --git a/share/cmake-3.22/Help/prop_inst/CPACK_STARTUP_SHORTCUTS.rst b/share/cmake-3.22/Help/prop_inst/CPACK_STARTUP_SHORTCUTS.rst
new file mode 100644
index 0000000..e896acd
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_inst/CPACK_STARTUP_SHORTCUTS.rst
@@ -0,0 +1,9 @@
+CPACK_STARTUP_SHORTCUTS
+-----------------------
+
+.. versionadded:: 3.3
+
+Species a list of shortcut names that should be created in the `Startup` folder
+for this file.
+
+The property is currently only supported by the :cpack_gen:`CPack WIX Generator`.
diff --git a/share/cmake-3.22/Help/prop_inst/CPACK_START_MENU_SHORTCUTS.rst b/share/cmake-3.22/Help/prop_inst/CPACK_START_MENU_SHORTCUTS.rst
new file mode 100644
index 0000000..fb8807f
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_inst/CPACK_START_MENU_SHORTCUTS.rst
@@ -0,0 +1,9 @@
+CPACK_START_MENU_SHORTCUTS
+--------------------------
+
+.. versionadded:: 3.3
+
+Species a list of shortcut names that should be created in the `Start Menu`
+for this file.
+
+The property is currently only supported by the :cpack_gen:`CPack WIX Generator`.
diff --git a/share/cmake-3.22/Help/prop_inst/CPACK_WIX_ACL.rst b/share/cmake-3.22/Help/prop_inst/CPACK_WIX_ACL.rst
new file mode 100644
index 0000000..8b4fb5c
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_inst/CPACK_WIX_ACL.rst
@@ -0,0 +1,23 @@
+CPACK_WIX_ACL
+-------------
+
+.. versionadded:: 3.1
+
+Specifies access permissions for files or directories
+installed by a WiX installer.
+
+The property can contain multiple list entries,
+each of which has to match the following format.
+
+::
+
+  <user>[@<domain>]=<permission>[,<permission>]
+
+``<user>`` and ``<domain>`` specify the windows user and domain for which the
+``<Permission>`` element should be generated.
+
+``<permission>`` is any of the YesNoType attributes listed here::
+
+ http://wixtoolset.org/documentation/manual/v3/xsd/wix/permission.html
+
+The property is currently only supported by the :cpack_gen:`CPack WIX Generator`.
diff --git a/share/cmake-3.18/Help/prop_sf/ABSTRACT.rst b/share/cmake-3.22/Help/prop_sf/ABSTRACT.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_sf/ABSTRACT.rst
rename to share/cmake-3.22/Help/prop_sf/ABSTRACT.rst
diff --git a/share/cmake-3.18/Help/prop_sf/AUTORCC_OPTIONS.rst b/share/cmake-3.22/Help/prop_sf/AUTORCC_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_sf/AUTORCC_OPTIONS.rst
rename to share/cmake-3.22/Help/prop_sf/AUTORCC_OPTIONS.rst
diff --git a/share/cmake-3.18/Help/prop_sf/AUTOUIC_OPTIONS.rst b/share/cmake-3.22/Help/prop_sf/AUTOUIC_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_sf/AUTOUIC_OPTIONS.rst
rename to share/cmake-3.22/Help/prop_sf/AUTOUIC_OPTIONS.rst
diff --git a/share/cmake-3.18/Help/prop_sf/COMPILE_DEFINITIONS.rst b/share/cmake-3.22/Help/prop_sf/COMPILE_DEFINITIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_sf/COMPILE_DEFINITIONS.rst
rename to share/cmake-3.22/Help/prop_sf/COMPILE_DEFINITIONS.rst
diff --git a/share/cmake-3.18/Help/prop_sf/COMPILE_DEFINITIONS_CONFIG.rst b/share/cmake-3.22/Help/prop_sf/COMPILE_DEFINITIONS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_sf/COMPILE_DEFINITIONS_CONFIG.rst
rename to share/cmake-3.22/Help/prop_sf/COMPILE_DEFINITIONS_CONFIG.rst
diff --git a/share/cmake-3.22/Help/prop_sf/COMPILE_FLAGS.rst b/share/cmake-3.22/Help/prop_sf/COMPILE_FLAGS.rst
new file mode 100644
index 0000000..eefe7bf
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/COMPILE_FLAGS.rst
@@ -0,0 +1,22 @@
+COMPILE_FLAGS
+-------------
+
+Additional flags to be added when compiling this source file.
+
+The ``COMPILE_FLAGS`` property, managed as a string, sets additional compiler
+flags used that will be added to the list of compile flags when this source
+file builds.  The flags will be added after target-wide flags (except in
+some cases not supported by the :generator:`Visual Studio 9 2008` generator).
+
+Use :prop_sf:`COMPILE_DEFINITIONS` to pass additional preprocessor definitions.
+
+Contents of ``COMPILE_FLAGS`` may use "generator expressions"
+with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
+manual for available expressions.  However, :generator:`Xcode`
+does not support per-config per-source settings, so expressions
+that depend on the build configuration are not allowed with that
+generator.
+
+.. note::
+
+  This property has been superseded by the :prop_sf:`COMPILE_OPTIONS` property.
diff --git a/share/cmake-3.22/Help/prop_sf/COMPILE_OPTIONS.rst b/share/cmake-3.22/Help/prop_sf/COMPILE_OPTIONS.rst
new file mode 100644
index 0000000..84c543a
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/COMPILE_OPTIONS.rst
@@ -0,0 +1,35 @@
+COMPILE_OPTIONS
+---------------
+
+.. versionadded:: 3.11
+
+List of additional options to pass to the compiler.
+
+This property holds a :ref:`semicolon-separated list <CMake Language Lists>`
+of options and will be added to the list of compile flags when this source
+file builds.  The options will be added after target-wide options (except in
+some cases not supported by the :generator:`Visual Studio 9 2008` generator).
+
+Contents of ``COMPILE_OPTIONS`` may use "generator expressions" with the
+syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual
+for available expressions.  However, :generator:`Xcode`
+does not support per-config per-source settings, so expressions
+that depend on the build configuration are not allowed with that
+generator.
+
+Usage example:
+
+.. code-block:: cmake
+
+  set_source_files_properties(foo.cpp PROPERTIES COMPILE_OPTIONS "-Wno-unused-parameter;-Wno-missing-field-initializer")
+
+Related properties:
+
+* Prefer this property over :prop_sf:`COMPILE_FLAGS`.
+* Use :prop_sf:`COMPILE_DEFINITIONS` to pass additional preprocessor definitions.
+* Use :prop_sf:`INCLUDE_DIRECTORIES` to pass additional include directories.
+
+Related commands:
+
+* :command:`add_compile_options` for directory-wide settings
+* :command:`target_compile_options` for target-specific settings
diff --git a/share/cmake-3.18/Help/prop_sf/EXTERNAL_OBJECT.rst b/share/cmake-3.22/Help/prop_sf/EXTERNAL_OBJECT.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_sf/EXTERNAL_OBJECT.rst
rename to share/cmake-3.22/Help/prop_sf/EXTERNAL_OBJECT.rst
diff --git a/share/cmake-3.18/Help/prop_sf/Fortran_FORMAT.rst b/share/cmake-3.22/Help/prop_sf/Fortran_FORMAT.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_sf/Fortran_FORMAT.rst
rename to share/cmake-3.22/Help/prop_sf/Fortran_FORMAT.rst
diff --git a/share/cmake-3.22/Help/prop_sf/Fortran_PREPROCESS.rst b/share/cmake-3.22/Help/prop_sf/Fortran_PREPROCESS.rst
new file mode 100644
index 0000000..548a97b
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/Fortran_PREPROCESS.rst
@@ -0,0 +1,19 @@
+Fortran_PREPROCESS
+------------------
+
+.. versionadded:: 3.18
+
+Control whether the Fortran source file should be unconditionally preprocessed.
+
+If unset or empty, rely on the compiler to determine whether the file
+should be preprocessed. If explicitly set to ``OFF`` then the file
+does not need to be preprocessed. If explicitly set to ``ON``, then
+the file does need to be preprocessed as part of the compilation step.
+
+When using the :generator:`Ninja` generator, all source files are
+first preprocessed in order to generate module dependency
+information. Setting this property to ``OFF`` will make ``Ninja``
+skip this step.
+
+Consider using the target-wide :prop_tgt:`Fortran_PREPROCESS` property
+if all source files in a target need to be preprocessed.
diff --git a/share/cmake-3.22/Help/prop_sf/GENERATED.rst b/share/cmake-3.22/Help/prop_sf/GENERATED.rst
new file mode 100644
index 0000000..216dfe8
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/GENERATED.rst
@@ -0,0 +1,48 @@
+GENERATED
+---------
+
+Is this source file generated as part of the build or CMake process.
+
+.. versionchanged:: 3.20
+  The GENERATED source file property is now visible in all directories.
+
+Tells the internal CMake engine that a source file is generated by an outside
+process such as another build step, or the execution of CMake itself.
+This information is then used to exempt the file from any existence or
+validity checks.
+
+Any file that is
+
+- created by the execution of commands such as
+  :command:`add_custom_command` and :command:`file(GENERATE)`
+- listed as one of the ``BYPRODUCTS`` of an :command:`add_custom_command`
+  or :command:`add_custom_target` command, or
+- created by a CMake ``AUTOGEN`` operation such as :prop_tgt:`AUTOMOC`,
+  :prop_tgt:`AUTORCC`, or :prop_tgt:`AUTOUIC`
+
+will be marked with the ``GENERATED`` property.
+
+When a generated file created as the ``OUTPUT`` of an
+:command:`add_custom_command` command is explicitly listed as a source file
+for any target in the same directory scope (which usually means the same
+``CMakeLists.txt`` file), CMake will automatically create a dependency to
+make sure the file is generated before building that target.
+
+The :ref:`Makefile Generators` will remove ``GENERATED`` files during
+``make clean``.
+
+Generated sources may be hidden in some IDE tools, while in others they might
+be shown. For the special case of sources generated by CMake's :prop_tgt:`AUTOMOC`,
+:prop_tgt:`AUTORCC` or :prop_tgt:`AUTOUIC` functionality, the
+:prop_gbl:`AUTOGEN_SOURCE_GROUP`, :prop_gbl:`AUTOMOC_SOURCE_GROUP`,
+:prop_gbl:`AUTORCC_SOURCE_GROUP` and :prop_gbl:`AUTOUIC_SOURCE_GROUP` target
+properties may influence where the generated sources are grouped in the project's
+file lists.
+
+.. note::
+
+  Starting with CMake 3.20 the ``GENERATED`` source file property can be set
+  and retrieved from any directory scope. It is an all-or-nothing property.
+  It also can no longer be removed or unset if it was set to ``TRUE``. Policy
+  :policy:`CMP0118` was introduced to allow supporting the ``OLD`` behavior
+  for some time.
diff --git a/share/cmake-3.18/Help/prop_sf/HEADER_FILE_ONLY.rst b/share/cmake-3.22/Help/prop_sf/HEADER_FILE_ONLY.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_sf/HEADER_FILE_ONLY.rst
rename to share/cmake-3.22/Help/prop_sf/HEADER_FILE_ONLY.rst
diff --git a/share/cmake-3.22/Help/prop_sf/INCLUDE_DIRECTORIES.rst b/share/cmake-3.22/Help/prop_sf/INCLUDE_DIRECTORIES.rst
new file mode 100644
index 0000000..89ffd15
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/INCLUDE_DIRECTORIES.rst
@@ -0,0 +1,20 @@
+INCLUDE_DIRECTORIES
+-------------------
+
+.. versionadded:: 3.11
+
+List of preprocessor include file search directories.
+
+This property holds a :ref:`semicolon-separated list <CMake Language Lists>` of paths
+and will be added to the list of include directories when this
+source file builds. These directories will take precedence over directories
+defined at target level except for :generator:`Xcode` generator due to technical
+limitations.
+
+Relative paths should not be added to this property directly.
+
+Contents of ``INCLUDE_DIRECTORIES`` may use "generator expressions" with
+the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual
+for available expressions.  However, :generator:`Xcode` does not support
+per-config per-source settings, so expressions that depend on the build
+configuration are not allowed with that generator.
diff --git a/share/cmake-3.18/Help/prop_sf/KEEP_EXTENSION.rst b/share/cmake-3.22/Help/prop_sf/KEEP_EXTENSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_sf/KEEP_EXTENSION.rst
rename to share/cmake-3.22/Help/prop_sf/KEEP_EXTENSION.rst
diff --git a/share/cmake-3.18/Help/prop_sf/LABELS.rst b/share/cmake-3.22/Help/prop_sf/LABELS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_sf/LABELS.rst
rename to share/cmake-3.22/Help/prop_sf/LABELS.rst
diff --git a/share/cmake-3.22/Help/prop_sf/LANGUAGE.rst b/share/cmake-3.22/Help/prop_sf/LANGUAGE.rst
new file mode 100644
index 0000000..a9b5638
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/LANGUAGE.rst
@@ -0,0 +1,17 @@
+LANGUAGE
+--------
+
+Specify the programming language in which a source file is written.
+
+A property that can be set to indicate what programming language the
+source file is.  If it is not set the language is determined based on
+the file extension.  Typical values are ``CXX`` (i.e.  C++), ``C``,
+``CSharp``, ``CUDA``, ``Fortran``, ``HIP``, ``ISPC``, and ``ASM``.  Setting
+this property for a file means this file will be compiled.  Do not set this
+for headers or files that should not be compiled.
+
+.. versionchanged:: 3.20
+  Setting this property causes the source file to be compiled as the
+  specified language, using explicit flags if possible.  Previously it
+  only caused the specified language's compiler to be used.
+  See policy :policy:`CMP0119`.
diff --git a/share/cmake-3.18/Help/prop_sf/LOCATION.rst b/share/cmake-3.22/Help/prop_sf/LOCATION.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_sf/LOCATION.rst
rename to share/cmake-3.22/Help/prop_sf/LOCATION.rst
diff --git a/share/cmake-3.18/Help/prop_sf/MACOSX_PACKAGE_LOCATION.rst b/share/cmake-3.22/Help/prop_sf/MACOSX_PACKAGE_LOCATION.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_sf/MACOSX_PACKAGE_LOCATION.rst
rename to share/cmake-3.22/Help/prop_sf/MACOSX_PACKAGE_LOCATION.rst
diff --git a/share/cmake-3.18/Help/prop_sf/OBJECT_DEPENDS.rst b/share/cmake-3.22/Help/prop_sf/OBJECT_DEPENDS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_sf/OBJECT_DEPENDS.rst
rename to share/cmake-3.22/Help/prop_sf/OBJECT_DEPENDS.rst
diff --git a/share/cmake-3.18/Help/prop_sf/OBJECT_OUTPUTS.rst b/share/cmake-3.22/Help/prop_sf/OBJECT_OUTPUTS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_sf/OBJECT_OUTPUTS.rst
rename to share/cmake-3.22/Help/prop_sf/OBJECT_OUTPUTS.rst
diff --git a/share/cmake-3.22/Help/prop_sf/SKIP_AUTOGEN.rst b/share/cmake-3.22/Help/prop_sf/SKIP_AUTOGEN.rst
new file mode 100644
index 0000000..2173f59
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/SKIP_AUTOGEN.rst
@@ -0,0 +1,19 @@
+SKIP_AUTOGEN
+------------
+
+.. versionadded:: 3.8
+
+Exclude the source file from :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTOUIC` and
+:prop_tgt:`AUTORCC` processing (for Qt projects).
+
+For finer exclusion control see :prop_sf:`SKIP_AUTOMOC`,
+:prop_sf:`SKIP_AUTOUIC` and :prop_sf:`SKIP_AUTORCC`.
+
+EXAMPLE
+^^^^^^^
+
+.. code-block:: cmake
+
+  # ...
+  set_property(SOURCE file.h PROPERTY SKIP_AUTOGEN ON)
+  # ...
diff --git a/share/cmake-3.22/Help/prop_sf/SKIP_AUTOMOC.rst b/share/cmake-3.22/Help/prop_sf/SKIP_AUTOMOC.rst
new file mode 100644
index 0000000..e92cfe0
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/SKIP_AUTOMOC.rst
@@ -0,0 +1,17 @@
+SKIP_AUTOMOC
+------------
+
+.. versionadded:: 3.8
+
+Exclude the source file from :prop_tgt:`AUTOMOC` processing (for Qt projects).
+
+For broader exclusion control see :prop_sf:`SKIP_AUTOGEN`.
+
+EXAMPLE
+^^^^^^^
+
+.. code-block:: cmake
+
+  # ...
+  set_property(SOURCE file.h PROPERTY SKIP_AUTOMOC ON)
+  # ...
diff --git a/share/cmake-3.22/Help/prop_sf/SKIP_AUTORCC.rst b/share/cmake-3.22/Help/prop_sf/SKIP_AUTORCC.rst
new file mode 100644
index 0000000..2829c25
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/SKIP_AUTORCC.rst
@@ -0,0 +1,17 @@
+SKIP_AUTORCC
+------------
+
+.. versionadded:: 3.8
+
+Exclude the source file from :prop_tgt:`AUTORCC` processing (for Qt projects).
+
+For broader exclusion control see :prop_sf:`SKIP_AUTOGEN`.
+
+EXAMPLE
+^^^^^^^
+
+.. code-block:: cmake
+
+  # ...
+  set_property(SOURCE file.qrc PROPERTY SKIP_AUTORCC ON)
+  # ...
diff --git a/share/cmake-3.22/Help/prop_sf/SKIP_AUTOUIC.rst b/share/cmake-3.22/Help/prop_sf/SKIP_AUTOUIC.rst
new file mode 100644
index 0000000..ae9725a
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/SKIP_AUTOUIC.rst
@@ -0,0 +1,22 @@
+SKIP_AUTOUIC
+------------
+
+.. versionadded:: 3.8
+
+Exclude the source file from :prop_tgt:`AUTOUIC` processing (for Qt projects).
+
+:prop_sf:`SKIP_AUTOUIC` can be set on C++ header and source files and on
+``.ui`` files.
+
+For broader exclusion control see :prop_sf:`SKIP_AUTOGEN`.
+
+EXAMPLE
+^^^^^^^
+
+.. code-block:: cmake
+
+  # ...
+  set_property(SOURCE file.h PROPERTY SKIP_AUTOUIC ON)
+  set_property(SOURCE file.cpp PROPERTY SKIP_AUTOUIC ON)
+  set_property(SOURCE widget.ui PROPERTY SKIP_AUTOUIC ON)
+  # ...
diff --git a/share/cmake-3.22/Help/prop_sf/SKIP_PRECOMPILE_HEADERS.rst b/share/cmake-3.22/Help/prop_sf/SKIP_PRECOMPILE_HEADERS.rst
new file mode 100644
index 0000000..660de3f
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/SKIP_PRECOMPILE_HEADERS.rst
@@ -0,0 +1,15 @@
+SKIP_PRECOMPILE_HEADERS
+-----------------------
+
+.. versionadded:: 3.16
+
+Is this source file skipped by :prop_tgt:`PRECOMPILE_HEADERS` feature.
+
+This property helps with build problems that one would run into
+when using the :prop_tgt:`PRECOMPILE_HEADERS` feature.
+
+One example would be the usage of Objective-C (``*.m``) files, and
+Objective-C++ (``*.mm``) files, which lead to compilation failure
+because they are treated (in case of Ninja / Makefile generator)
+as C, and CXX respectively. The precompile headers are not
+compatible between languages.
diff --git a/share/cmake-3.22/Help/prop_sf/SKIP_UNITY_BUILD_INCLUSION.rst b/share/cmake-3.22/Help/prop_sf/SKIP_UNITY_BUILD_INCLUSION.rst
new file mode 100644
index 0000000..ae526ac
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/SKIP_UNITY_BUILD_INCLUSION.rst
@@ -0,0 +1,13 @@
+SKIP_UNITY_BUILD_INCLUSION
+--------------------------
+
+.. versionadded:: 3.16
+
+Setting this property to true ensures the source file will be skipped by
+unity builds when its associated target has its :prop_tgt:`UNITY_BUILD`
+property set to true.  The source file will instead be compiled on its own
+in the same way as it would with unity builds disabled.
+
+This property helps with "ODR (One definition rule)" problems where combining
+a particular source file with others might lead to build errors or other
+unintended side effects.
diff --git a/share/cmake-3.18/Help/prop_sf/SYMBOLIC.rst b/share/cmake-3.22/Help/prop_sf/SYMBOLIC.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_sf/SYMBOLIC.rst
rename to share/cmake-3.22/Help/prop_sf/SYMBOLIC.rst
diff --git a/share/cmake-3.22/Help/prop_sf/Swift_DEPENDENCIES_FILE.rst b/share/cmake-3.22/Help/prop_sf/Swift_DEPENDENCIES_FILE.rst
new file mode 100644
index 0000000..a90c7eb
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/Swift_DEPENDENCIES_FILE.rst
@@ -0,0 +1,7 @@
+Swift_DEPENDENCIES_FILE
+-----------------------
+
+.. versionadded:: 3.15
+
+This property sets the path for the Swift dependency file (swiftdeps) for the
+source.  If one is not specified, it will default to ``<OBJECT>.swiftdeps``.
diff --git a/share/cmake-3.22/Help/prop_sf/Swift_DIAGNOSTICS_FILE.rst b/share/cmake-3.22/Help/prop_sf/Swift_DIAGNOSTICS_FILE.rst
new file mode 100644
index 0000000..47d5ac3
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/Swift_DIAGNOSTICS_FILE.rst
@@ -0,0 +1,6 @@
+Swift_DIAGNOSTICS_FILE
+----------------------
+
+.. versionadded:: 3.15
+
+This property controls where the Swift diagnostics are serialized.
diff --git a/share/cmake-3.22/Help/prop_sf/UNITY_GROUP.rst b/share/cmake-3.22/Help/prop_sf/UNITY_GROUP.rst
new file mode 100644
index 0000000..9c18b70
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/UNITY_GROUP.rst
@@ -0,0 +1,7 @@
+UNITY_GROUP
+-----------
+
+.. versionadded:: 3.18
+
+This property controls which *bucket* the source will be part of when
+the :prop_tgt:`UNITY_BUILD_MODE` is set to ``GROUP``.
diff --git a/share/cmake-3.22/Help/prop_sf/VS_COPY_TO_OUT_DIR.rst b/share/cmake-3.22/Help/prop_sf/VS_COPY_TO_OUT_DIR.rst
new file mode 100644
index 0000000..ebc3061
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_COPY_TO_OUT_DIR.rst
@@ -0,0 +1,8 @@
+VS_COPY_TO_OUT_DIR
+------------------
+
+.. versionadded:: 3.8
+
+Sets the ``<CopyToOutputDirectory>`` tag for a source file in a
+Visual Studio project file. Valid values are ``Never``, ``Always``
+and ``PreserveNewest``.
diff --git a/share/cmake-3.22/Help/prop_sf/VS_CSHARP_tagname.rst b/share/cmake-3.22/Help/prop_sf/VS_CSHARP_tagname.rst
new file mode 100644
index 0000000..75720f8
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_CSHARP_tagname.rst
@@ -0,0 +1,22 @@
+VS_CSHARP_<tagname>
+-------------------
+
+.. versionadded:: 3.8
+
+Visual Studio and CSharp source-file-specific configuration.
+
+Tell the :manual:`Visual Studio generators <cmake-generators(7)>`
+to set the source file tag ``<tagname>``
+to a given value in the generated Visual Studio CSharp
+project. Ignored on other generators and languages. This property
+can be used to define dependencies between source files or set any
+other Visual Studio specific parameters.
+
+Example usage:
+
+.. code-block:: cmake
+
+  set_source_files_property(<filename>
+           PROPERTIES
+           VS_CSHARP_DependentUpon <other file>
+           VS_CSHARP_SubType "Form")
diff --git a/share/cmake-3.22/Help/prop_sf/VS_DEPLOYMENT_CONTENT.rst b/share/cmake-3.22/Help/prop_sf/VS_DEPLOYMENT_CONTENT.rst
new file mode 100644
index 0000000..ee49b27
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_DEPLOYMENT_CONTENT.rst
@@ -0,0 +1,14 @@
+VS_DEPLOYMENT_CONTENT
+---------------------
+
+.. versionadded:: 3.1
+
+Mark a source file as content for deployment with a Windows Phone or
+Windows Store application when built with a
+:manual:`Visual Studio generators <cmake-generators(7)>`.
+The value must evaluate to either ``1`` or ``0`` and may use
+:manual:`generator expressions <cmake-generator-expressions(7)>`
+to make the choice based on the build configuration.
+The ``.vcxproj`` file entry for the source file will be
+marked either ``DeploymentContent`` or ``ExcludedFromBuild``
+for values ``1`` and ``0``, respectively.
diff --git a/share/cmake-3.22/Help/prop_sf/VS_DEPLOYMENT_LOCATION.rst b/share/cmake-3.22/Help/prop_sf/VS_DEPLOYMENT_LOCATION.rst
new file mode 100644
index 0000000..b170544
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_DEPLOYMENT_LOCATION.rst
@@ -0,0 +1,11 @@
+VS_DEPLOYMENT_LOCATION
+----------------------
+
+.. versionadded:: 3.1
+
+Specifies the deployment location for a content source file with a Windows
+Phone or Windows Store application when built
+with a :manual:`Visual Studio generators <cmake-generators(7)>`.
+This property is only applicable when using :prop_sf:`VS_DEPLOYMENT_CONTENT`.
+The value represent the path relative to the app package and applies to all
+configurations.
diff --git a/share/cmake-3.22/Help/prop_sf/VS_INCLUDE_IN_VSIX.rst b/share/cmake-3.22/Help/prop_sf/VS_INCLUDE_IN_VSIX.rst
new file mode 100644
index 0000000..16c56bf
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_INCLUDE_IN_VSIX.rst
@@ -0,0 +1,8 @@
+VS_INCLUDE_IN_VSIX
+------------------
+
+.. versionadded:: 3.8
+
+Boolean property to specify if the file should be included within a
+VSIX (Visual Studio Integration Extension) extension package.
+This is needed for development of Visual Studio extensions.
diff --git a/share/cmake-3.22/Help/prop_sf/VS_RESOURCE_GENERATOR.rst b/share/cmake-3.22/Help/prop_sf/VS_RESOURCE_GENERATOR.rst
new file mode 100644
index 0000000..c5bb4f6
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_RESOURCE_GENERATOR.rst
@@ -0,0 +1,10 @@
+VS_RESOURCE_GENERATOR
+---------------------
+
+.. versionadded:: 3.8
+
+This property allows to specify the resource generator to be used
+on this file. It defaults to ``PublicResXFileCodeGenerator`` if
+not set.
+
+This property only applies to C# projects.
diff --git a/share/cmake-3.22/Help/prop_sf/VS_SETTINGS.rst b/share/cmake-3.22/Help/prop_sf/VS_SETTINGS.rst
new file mode 100644
index 0000000..871e36e
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_SETTINGS.rst
@@ -0,0 +1,25 @@
+VS_SETTINGS
+-----------
+
+.. versionadded:: 3.18
+
+Set any item metadata on a file.
+
+.. versionadded:: 3.22
+
+  This property is honored for all source file types.
+  Previously it worked only for non-built files.
+
+Takes a list of ``Key=Value`` pairs. Tells the Visual Studio generator to set
+``Key`` to ``Value`` as item metadata on the file.
+
+For example:
+
+.. code-block:: cmake
+
+  set_property(SOURCE file.hlsl PROPERTY VS_SETTINGS "Key=Value" "Key2=Value2")
+
+will set ``Key`` to ``Value`` and ``Key2`` to ``Value2`` on the
+``file.hlsl`` item as metadata.
+
+:manual:`Generator expressions <cmake-generator-expressions(7)>` are supported.
diff --git a/share/cmake-3.22/Help/prop_sf/VS_SHADER_DISABLE_OPTIMIZATIONS.rst b/share/cmake-3.22/Help/prop_sf/VS_SHADER_DISABLE_OPTIMIZATIONS.rst
new file mode 100644
index 0000000..6fb6778
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_SHADER_DISABLE_OPTIMIZATIONS.rst
@@ -0,0 +1,8 @@
+VS_SHADER_DISABLE_OPTIMIZATIONS
+-------------------------------
+
+.. versionadded:: 3.11
+
+Disable compiler optimizations for an ``.hlsl`` source file.  This adds the
+``-Od`` flag to the command line for the FxCompiler tool.  Specify the value
+``true`` for this property to disable compiler optimizations.
diff --git a/share/cmake-3.22/Help/prop_sf/VS_SHADER_ENABLE_DEBUG.rst b/share/cmake-3.22/Help/prop_sf/VS_SHADER_ENABLE_DEBUG.rst
new file mode 100644
index 0000000..9c8f9d7
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_SHADER_ENABLE_DEBUG.rst
@@ -0,0 +1,8 @@
+VS_SHADER_ENABLE_DEBUG
+----------------------
+
+.. versionadded:: 3.11
+
+Enable debugging information for an ``.hlsl`` source file.  This adds the
+``-Zi`` flag to the command line for the FxCompiler tool.  Specify the value
+``true`` to generate debugging information for the compiled shader.
diff --git a/share/cmake-3.22/Help/prop_sf/VS_SHADER_ENTRYPOINT.rst b/share/cmake-3.22/Help/prop_sf/VS_SHADER_ENTRYPOINT.rst
new file mode 100644
index 0000000..4b311ba
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_SHADER_ENTRYPOINT.rst
@@ -0,0 +1,7 @@
+VS_SHADER_ENTRYPOINT
+--------------------
+
+.. versionadded:: 3.1
+
+Specifies the name of the entry point for the shader of a ``.hlsl`` source
+file.
diff --git a/share/cmake-3.22/Help/prop_sf/VS_SHADER_FLAGS.rst b/share/cmake-3.22/Help/prop_sf/VS_SHADER_FLAGS.rst
new file mode 100644
index 0000000..07f8497
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_SHADER_FLAGS.rst
@@ -0,0 +1,6 @@
+VS_SHADER_FLAGS
+---------------
+
+.. versionadded:: 3.2
+
+Set additional Visual Studio shader flags of a ``.hlsl`` source file.
diff --git a/share/cmake-3.22/Help/prop_sf/VS_SHADER_MODEL.rst b/share/cmake-3.22/Help/prop_sf/VS_SHADER_MODEL.rst
new file mode 100644
index 0000000..072df89
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_SHADER_MODEL.rst
@@ -0,0 +1,7 @@
+VS_SHADER_MODEL
+---------------
+
+.. versionadded:: 3.1
+
+Specifies the shader model of a ``.hlsl`` source file. Some shader types can
+only be used with recent shader models
diff --git a/share/cmake-3.22/Help/prop_sf/VS_SHADER_OBJECT_FILE_NAME.rst b/share/cmake-3.22/Help/prop_sf/VS_SHADER_OBJECT_FILE_NAME.rst
new file mode 100644
index 0000000..3647a5e
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_SHADER_OBJECT_FILE_NAME.rst
@@ -0,0 +1,8 @@
+VS_SHADER_OBJECT_FILE_NAME
+--------------------------
+
+.. versionadded:: 3.12
+
+Specifies a file name for the compiled shader object file for an ``.hlsl``
+source file.  This adds the ``-Fo`` flag to the command line for the FxCompiler
+tool.
diff --git a/share/cmake-3.22/Help/prop_sf/VS_SHADER_OUTPUT_HEADER_FILE.rst b/share/cmake-3.22/Help/prop_sf/VS_SHADER_OUTPUT_HEADER_FILE.rst
new file mode 100644
index 0000000..4113a16
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_SHADER_OUTPUT_HEADER_FILE.rst
@@ -0,0 +1,7 @@
+VS_SHADER_OUTPUT_HEADER_FILE
+----------------------------
+
+.. versionadded:: 3.10
+
+Set filename for output header file containing object code of a ``.hlsl``
+source file.
diff --git a/share/cmake-3.22/Help/prop_sf/VS_SHADER_TYPE.rst b/share/cmake-3.22/Help/prop_sf/VS_SHADER_TYPE.rst
new file mode 100644
index 0000000..3fb7e60
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_SHADER_TYPE.rst
@@ -0,0 +1,6 @@
+VS_SHADER_TYPE
+--------------
+
+.. versionadded:: 3.1
+
+Set the Visual Studio shader type of a ``.hlsl`` source file.
diff --git a/share/cmake-3.22/Help/prop_sf/VS_SHADER_VARIABLE_NAME.rst b/share/cmake-3.22/Help/prop_sf/VS_SHADER_VARIABLE_NAME.rst
new file mode 100644
index 0000000..3361b40
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_SHADER_VARIABLE_NAME.rst
@@ -0,0 +1,7 @@
+VS_SHADER_VARIABLE_NAME
+-----------------------
+
+.. versionadded:: 3.10
+
+Set name of variable in header file containing object code of a ``.hlsl``
+source file.
diff --git a/share/cmake-3.22/Help/prop_sf/VS_TOOL_OVERRIDE.rst b/share/cmake-3.22/Help/prop_sf/VS_TOOL_OVERRIDE.rst
new file mode 100644
index 0000000..b2f4112
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_TOOL_OVERRIDE.rst
@@ -0,0 +1,7 @@
+VS_TOOL_OVERRIDE
+----------------
+
+.. versionadded:: 3.7
+
+Override the default Visual Studio tool that will be applied to the source file
+with a new tool not based on the extension of the file.
diff --git a/share/cmake-3.22/Help/prop_sf/VS_XAML_TYPE.rst b/share/cmake-3.22/Help/prop_sf/VS_XAML_TYPE.rst
new file mode 100644
index 0000000..612b07b
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/VS_XAML_TYPE.rst
@@ -0,0 +1,9 @@
+VS_XAML_TYPE
+------------
+
+.. versionadded:: 3.3
+
+Mark a Extensible Application Markup Language (XAML) source file
+as a different type than the default ``Page``.
+The most common usage would be to set the default ``App.xaml`` file as
+``ApplicationDefinition``.
diff --git a/share/cmake-3.18/Help/prop_sf/WRAP_EXCLUDE.rst b/share/cmake-3.22/Help/prop_sf/WRAP_EXCLUDE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_sf/WRAP_EXCLUDE.rst
rename to share/cmake-3.22/Help/prop_sf/WRAP_EXCLUDE.rst
diff --git a/share/cmake-3.22/Help/prop_sf/XCODE_EXPLICIT_FILE_TYPE.rst b/share/cmake-3.22/Help/prop_sf/XCODE_EXPLICIT_FILE_TYPE.rst
new file mode 100644
index 0000000..5a50d7d
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/XCODE_EXPLICIT_FILE_TYPE.rst
@@ -0,0 +1,10 @@
+XCODE_EXPLICIT_FILE_TYPE
+------------------------
+
+.. versionadded:: 3.1
+
+Set the :generator:`Xcode` ``explicitFileType`` attribute on its reference to a
+source file.  CMake computes a default based on file extension but
+can be told explicitly with this property.
+
+See also :prop_sf:`XCODE_LAST_KNOWN_FILE_TYPE`.
diff --git a/share/cmake-3.22/Help/prop_sf/XCODE_FILE_ATTRIBUTES.rst b/share/cmake-3.22/Help/prop_sf/XCODE_FILE_ATTRIBUTES.rst
new file mode 100644
index 0000000..ba51e00
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/XCODE_FILE_ATTRIBUTES.rst
@@ -0,0 +1,13 @@
+XCODE_FILE_ATTRIBUTES
+---------------------
+
+.. versionadded:: 3.7
+
+Add values to the :generator:`Xcode` ``ATTRIBUTES`` setting on its reference to a
+source file.  Among other things, this can be used to set the role on
+a ``.mig`` file::
+
+  set_source_files_properties(defs.mig
+      PROPERTIES
+          XCODE_FILE_ATTRIBUTES "Client;Server"
+  )
diff --git a/share/cmake-3.22/Help/prop_sf/XCODE_LAST_KNOWN_FILE_TYPE.rst b/share/cmake-3.22/Help/prop_sf/XCODE_LAST_KNOWN_FILE_TYPE.rst
new file mode 100644
index 0000000..0b84e31
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_sf/XCODE_LAST_KNOWN_FILE_TYPE.rst
@@ -0,0 +1,11 @@
+XCODE_LAST_KNOWN_FILE_TYPE
+--------------------------
+
+.. versionadded:: 3.1
+
+Set the :generator:`Xcode` ``lastKnownFileType`` attribute on its reference to
+a source file.  CMake computes a default based on file extension but
+can be told explicitly with this property.
+
+See also :prop_sf:`XCODE_EXPLICIT_FILE_TYPE`, which is preferred
+over this property if set.
diff --git a/share/cmake-3.18/Help/prop_test/ATTACHED_FILES.rst b/share/cmake-3.22/Help/prop_test/ATTACHED_FILES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_test/ATTACHED_FILES.rst
rename to share/cmake-3.22/Help/prop_test/ATTACHED_FILES.rst
diff --git a/share/cmake-3.18/Help/prop_test/ATTACHED_FILES_ON_FAIL.rst b/share/cmake-3.22/Help/prop_test/ATTACHED_FILES_ON_FAIL.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_test/ATTACHED_FILES_ON_FAIL.rst
rename to share/cmake-3.22/Help/prop_test/ATTACHED_FILES_ON_FAIL.rst
diff --git a/share/cmake-3.18/Help/prop_test/COST.rst b/share/cmake-3.22/Help/prop_test/COST.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_test/COST.rst
rename to share/cmake-3.22/Help/prop_test/COST.rst
diff --git a/share/cmake-3.18/Help/prop_test/DEPENDS.rst b/share/cmake-3.22/Help/prop_test/DEPENDS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_test/DEPENDS.rst
rename to share/cmake-3.22/Help/prop_test/DEPENDS.rst
diff --git a/share/cmake-3.22/Help/prop_test/DISABLED.rst b/share/cmake-3.22/Help/prop_test/DISABLED.rst
new file mode 100644
index 0000000..cbf07a5
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_test/DISABLED.rst
@@ -0,0 +1,17 @@
+DISABLED
+--------
+
+.. versionadded:: 3.9
+
+If set to ``True``, the test will be skipped and its status will be 'Not Run'. A
+``DISABLED`` test will not be counted in the total number of tests and its
+completion status will be reported to CDash as ``Disabled``.
+
+A ``DISABLED`` test does not participate in test fixture dependency resolution.
+If a ``DISABLED`` test has fixture requirements defined in its
+:prop_test:`FIXTURES_REQUIRED` property, it will not cause setup or cleanup
+tests for those fixtures to be added to the test set.
+
+If a test with the :prop_test:`FIXTURES_SETUP` property set is ``DISABLED``,
+the fixture behavior will be as though that setup test was passing and any test
+case requiring that fixture will still run.
diff --git a/share/cmake-3.22/Help/prop_test/ENVIRONMENT.rst b/share/cmake-3.22/Help/prop_test/ENVIRONMENT.rst
new file mode 100644
index 0000000..43bcdbe
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_test/ENVIRONMENT.rst
@@ -0,0 +1,9 @@
+ENVIRONMENT
+-----------
+
+Specify environment variables that should be defined for running a test.
+
+If set to a list of environment variables and values of the form
+``MYVAR=value`` those environment variables will be defined while running
+the test.  The environment changes from this property do not affect other
+tests.
diff --git a/share/cmake-3.22/Help/prop_test/ENVIRONMENT_MODIFICATION.rst b/share/cmake-3.22/Help/prop_test/ENVIRONMENT_MODIFICATION.rst
new file mode 100644
index 0000000..1e17329
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_test/ENVIRONMENT_MODIFICATION.rst
@@ -0,0 +1,38 @@
+ENVIRONMENT_MODIFICATION
+------------------------
+
+.. versionadded:: 3.22
+
+Specify environment variables that should be modified for running a test. Note
+that the operations performed by this property are performed after the
+:prop_test:`ENVIRONMENT` property is already applied.
+
+If set to a list of environment variables and values of the form
+``MYVAR=OP:VALUE``, where ``MYVAR`` is the case-sensitive name of an
+environment variable to be modified. Entries are considered in the
+order specified in the property's value. The ``OP`` may be one of:
+
+  - ``reset``: Reset to the unmodified value, ignoring all modifications to
+    ``MYVAR`` prior to this entry. Note that this will reset the variable to
+    the value set by :prop_test:`ENVIRONMENT`, if it was set, and otherwise
+    to its state from the rest of the CTest execution.
+  - ``set``: Replaces the current value of ``MYVAR`` with ``VALUE``.
+  - ``unset``: Unsets the current value of ``MYVAR``.
+  - ``string_append``: Appends ``VALUE`` to the current value of ``MYVAR``.
+  - ``string_prepend``: Prepends ``VALUE`` to the current value of ``MYVAR``.
+  - ``path_list_append``: Appends ``VALUE`` to the current value of ``MYVAR``
+    using the host platform's path list separator (``;`` on Windows and ``:``
+    elsewhere).
+  - ``path_list_prepend``: Prepends ``VALUE`` to the current value of
+    ``MYVAR`` using the host platform's path list separator (``;`` on Windows
+    and ``:`` elsewhere).
+  - ``cmake_list_append``: Appends ``VALUE`` to the current value of ``MYVAR``
+    using ``;`` as the separator.
+  - ``cmake_list_prepend``: Prepends ``VALUE`` to the current value of
+    ``MYVAR`` using ``;`` as the separator.
+
+Unrecognized ``OP`` values will result in the test failing before it is
+executed. This is so that future operations may be added without changing
+valid behavior of existing tests.
+
+The environment changes from this property do not affect other tests.
diff --git a/share/cmake-3.22/Help/prop_test/FAIL_REGULAR_EXPRESSION.rst b/share/cmake-3.22/Help/prop_test/FAIL_REGULAR_EXPRESSION.rst
new file mode 100644
index 0000000..1ec4517
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_test/FAIL_REGULAR_EXPRESSION.rst
@@ -0,0 +1,19 @@
+FAIL_REGULAR_EXPRESSION
+-----------------------
+
+If the output matches this regular expression the test will fail,
+regardless of the process exit code.
+
+If set, if the output matches one of specified regular expressions,
+the test will fail.  Example:
+
+.. code-block:: cmake
+
+  set_tests_properties(mytest PROPERTIES
+    FAIL_REGULAR_EXPRESSION "[^a-z]Error;ERROR;Failed"
+  )
+
+``FAIL_REGULAR_EXPRESSION`` expects a list of regular expressions.
+
+See also the :prop_test:`PASS_REGULAR_EXPRESSION` and
+:prop_test:`SKIP_REGULAR_EXPRESSION` test properties.
diff --git a/share/cmake-3.22/Help/prop_test/FIXTURES_CLEANUP.rst b/share/cmake-3.22/Help/prop_test/FIXTURES_CLEANUP.rst
new file mode 100644
index 0000000..aa043da
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_test/FIXTURES_CLEANUP.rst
@@ -0,0 +1,49 @@
+FIXTURES_CLEANUP
+----------------
+
+.. versionadded:: 3.7
+
+Specifies a list of fixtures for which the test is to be treated as a cleanup
+test. These fixture names are distinct from test case names and are not
+required to have any similarity to the names of tests associated with them.
+
+Fixture cleanup tests are ordinary tests with all of the usual test
+functionality. Setting the ``FIXTURES_CLEANUP`` property for a test has two
+primary effects:
+
+- CTest will ensure the test executes after all other tests which list any of
+  the fixtures in its :prop_test:`FIXTURES_REQUIRED` property.
+
+- If CTest is asked to run only a subset of tests (e.g. using regular
+  expressions or the ``--rerun-failed`` option) and the cleanup test is not in
+  the set of tests to run, it will automatically be added if any tests in the
+  set require any fixture listed in ``FIXTURES_CLEANUP``.
+
+A cleanup test can have multiple fixtures listed in its ``FIXTURES_CLEANUP``
+property. It will execute only once for the whole CTest run, not once for each
+fixture. A fixture can also have more than one cleanup test defined. If there
+are multiple cleanup tests for a fixture, projects can control their order with
+the usual :prop_test:`DEPENDS` test property if necessary.
+
+A cleanup test is allowed to require other fixtures, but not any fixture listed
+in its ``FIXTURES_CLEANUP`` property. For example:
+
+.. code-block:: cmake
+
+  # Ok: Dependent fixture is different to cleanup
+  set_tests_properties(cleanupFoo PROPERTIES
+    FIXTURES_CLEANUP  Foo
+    FIXTURES_REQUIRED Bar
+  )
+
+  # Error: cannot require same fixture as cleanup
+  set_tests_properties(cleanupFoo PROPERTIES
+    FIXTURES_CLEANUP  Foo
+    FIXTURES_REQUIRED Foo
+  )
+
+Cleanup tests will execute even if setup or regular tests for that fixture fail
+or are skipped.
+
+See :prop_test:`FIXTURES_REQUIRED` for a more complete discussion of how to use
+test fixtures.
diff --git a/share/cmake-3.22/Help/prop_test/FIXTURES_REQUIRED.rst b/share/cmake-3.22/Help/prop_test/FIXTURES_REQUIRED.rst
new file mode 100644
index 0000000..f850830
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_test/FIXTURES_REQUIRED.rst
@@ -0,0 +1,98 @@
+FIXTURES_REQUIRED
+-----------------
+
+.. versionadded:: 3.7
+
+Specifies a list of fixtures the test requires. Fixture names are case
+sensitive and they are not required to have any similarity to test names.
+
+Fixtures are a way to attach setup and cleanup tasks to a set of tests. If a
+test requires a given fixture, then all tests marked as setup tasks for that
+fixture will be executed first (once for the whole set of tests, not once per
+test requiring the fixture). After all tests requiring a particular fixture
+have completed, CTest will ensure all tests marked as cleanup tasks for that
+fixture are then executed. Tests are marked as setup tasks with the
+:prop_test:`FIXTURES_SETUP` property and as cleanup tasks with the
+:prop_test:`FIXTURES_CLEANUP` property. If any of a fixture's setup tests fail,
+all tests listing that fixture in their ``FIXTURES_REQUIRED`` property will not
+be executed. The cleanup tests for the fixture will always be executed, even if
+some setup tests fail.
+
+When CTest is asked to execute only a subset of tests (e.g. by the use of
+regular expressions or when run with the ``--rerun-failed`` command line
+option), it will automatically add any setup or cleanup tests for fixtures
+required by any of the tests that are in the execution set. This behavior can
+be overridden with the ``-FS``, ``-FC`` and ``-FA`` command line options to
+:manual:`ctest(1)` if desired.
+
+Since setup and cleanup tasks are also tests, they can have an ordering
+specified by the :prop_test:`DEPENDS` test property just like any other tests.
+This can be exploited to implement setup or cleanup using multiple tests for a
+single fixture to modularise setup or cleanup logic.
+
+The concept of a fixture is different to that of a resource specified by
+:prop_test:`RESOURCE_LOCK`, but they may be used together. A fixture defines a
+set of tests which share setup and cleanup requirements, whereas a resource
+lock has the effect of ensuring a particular set of tests do not run in
+parallel. Some situations may need both, such as setting up a database,
+serializing test access to that database and deleting the database again at the
+end. For such cases, tests would populate both ``FIXTURES_REQUIRED`` and
+:prop_test:`RESOURCE_LOCK` to combine the two behaviors. Names used for
+:prop_test:`RESOURCE_LOCK` have no relationship with names of fixtures, so note
+that a resource lock does not imply a fixture and vice versa.
+
+Consider the following example which represents a database test scenario
+similar to that mentioned above:
+
+.. code-block:: cmake
+
+  add_test(NAME testsDone   COMMAND emailResults)
+  add_test(NAME fooOnly     COMMAND testFoo)
+  add_test(NAME dbOnly      COMMAND testDb)
+  add_test(NAME dbWithFoo   COMMAND testDbWithFoo)
+  add_test(NAME createDB    COMMAND initDB)
+  add_test(NAME setupUsers  COMMAND userCreation)
+  add_test(NAME cleanupDB   COMMAND deleteDB)
+  add_test(NAME cleanupFoo  COMMAND removeFoos)
+
+  set_tests_properties(setupUsers PROPERTIES DEPENDS createDB)
+
+  set_tests_properties(createDB   PROPERTIES FIXTURES_SETUP    DB)
+  set_tests_properties(setupUsers PROPERTIES FIXTURES_SETUP    DB)
+  set_tests_properties(cleanupDB  PROPERTIES FIXTURES_CLEANUP  DB)
+  set_tests_properties(cleanupFoo PROPERTIES FIXTURES_CLEANUP  Foo)
+  set_tests_properties(testsDone  PROPERTIES FIXTURES_CLEANUP  "DB;Foo")
+
+  set_tests_properties(fooOnly    PROPERTIES FIXTURES_REQUIRED Foo)
+  set_tests_properties(dbOnly     PROPERTIES FIXTURES_REQUIRED DB)
+  set_tests_properties(dbWithFoo  PROPERTIES FIXTURES_REQUIRED "DB;Foo")
+
+  set_tests_properties(dbOnly dbWithFoo createDB setupUsers cleanupDB
+                       PROPERTIES RESOURCE_LOCK DbAccess)
+
+Key points from this example:
+
+- Two fixtures are defined: ``DB`` and ``Foo``. Tests can require a single
+  fixture as ``fooOnly`` and ``dbOnly`` do, or they can depend on multiple
+  fixtures like ``dbWithFoo`` does.
+
+- A ``DEPENDS`` relationship is set up to ensure ``setupUsers`` happens after
+  ``createDB``, both of which are setup tests for the ``DB`` fixture and will
+  therefore be executed before the ``dbOnly`` and ``dbWithFoo`` tests
+  automatically.
+
+- No explicit ``DEPENDS`` relationships were needed to make the setup tests run
+  before or the cleanup tests run after the regular tests.
+
+- The ``Foo`` fixture has no setup tests defined, only a single cleanup test.
+
+- ``testsDone`` is a cleanup test for both the ``DB`` and ``Foo`` fixtures.
+  Therefore, it will only execute once regular tests for both fixtures have
+  finished (i.e. after ``fooOnly``, ``dbOnly`` and ``dbWithFoo``). No
+  ``DEPENDS`` relationship was specified for ``testsDone``, so it is free to
+  run before, after or concurrently with other cleanup tests for either
+  fixture.
+
+- The setup and cleanup tests never list the fixtures they are for in their own
+  ``FIXTURES_REQUIRED`` property, as that would result in a dependency on
+  themselves and be considered an error.
diff --git a/share/cmake-3.22/Help/prop_test/FIXTURES_SETUP.rst b/share/cmake-3.22/Help/prop_test/FIXTURES_SETUP.rst
new file mode 100644
index 0000000..04a09d8
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_test/FIXTURES_SETUP.rst
@@ -0,0 +1,50 @@
+FIXTURES_SETUP
+--------------
+
+.. versionadded:: 3.7
+
+Specifies a list of fixtures for which the test is to be treated as a setup
+test. These fixture names are distinct from test case names and are not
+required to have any similarity to the names of tests associated with them.
+
+Fixture setup tests are ordinary tests with all of the usual test
+functionality. Setting the ``FIXTURES_SETUP`` property for a test has two
+primary effects:
+
+- CTest will ensure the test executes before any other test which lists the
+  fixture name(s) in its :prop_test:`FIXTURES_REQUIRED` property.
+
+- If CTest is asked to run only a subset of tests (e.g. using regular
+  expressions or the ``--rerun-failed`` option) and the setup test is not in
+  the set of tests to run, it will automatically be added if any tests in the
+  set require any fixture listed in ``FIXTURES_SETUP``.
+
+A setup test can have multiple fixtures listed in its ``FIXTURES_SETUP``
+property. It will execute only once for the whole CTest run, not once for each
+fixture. A fixture can also have more than one setup test defined. If there are
+multiple setup tests for a fixture, projects can control their order with the
+usual :prop_test:`DEPENDS` test property if necessary.
+
+A setup test is allowed to require other fixtures, but not any fixture listed
+in its ``FIXTURES_SETUP`` property. For example:
+
+.. code-block:: cmake
+
+  # Ok: dependent fixture is different to setup
+  set_tests_properties(setupFoo PROPERTIES
+    FIXTURES_SETUP    Foo
+    FIXTURES_REQUIRED Bar
+  )
+
+  # Error: cannot require same fixture as setup
+  set_tests_properties(setupFoo PROPERTIES
+    FIXTURES_SETUP    Foo
+    FIXTURES_REQUIRED Foo
+  )
+
+If any of a fixture's setup tests fail, none of the tests listing that fixture
+in its :prop_test:`FIXTURES_REQUIRED` property will be run. Cleanup tests will,
+however, still be executed.
+
+See :prop_test:`FIXTURES_REQUIRED` for a more complete discussion of how to use
+test fixtures.
diff --git a/share/cmake-3.22/Help/prop_test/LABELS.rst b/share/cmake-3.22/Help/prop_test/LABELS.rst
new file mode 100644
index 0000000..a06f152
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_test/LABELS.rst
@@ -0,0 +1,10 @@
+LABELS
+------
+
+Specify a list of text labels associated with a test.  The labels are
+reported in both the ``ctest`` output summary and in dashboard submissions.
+They can also be used to filter the set of tests to be executed (see the
+``ctest -L`` and ``ctest -LE`` :ref:`CTest Options`).
+
+See :ref:`Additional Labels` for adding labels to a test dynamically during
+test execution.
diff --git a/share/cmake-3.18/Help/prop_test/MEASUREMENT.rst b/share/cmake-3.22/Help/prop_test/MEASUREMENT.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_test/MEASUREMENT.rst
rename to share/cmake-3.22/Help/prop_test/MEASUREMENT.rst
diff --git a/share/cmake-3.22/Help/prop_test/PASS_REGULAR_EXPRESSION.rst b/share/cmake-3.22/Help/prop_test/PASS_REGULAR_EXPRESSION.rst
new file mode 100644
index 0000000..96468c0
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_test/PASS_REGULAR_EXPRESSION.rst
@@ -0,0 +1,20 @@
+PASS_REGULAR_EXPRESSION
+-----------------------
+
+The output must match this regular expression for the test to pass.
+The process exit code is ignored.
+
+If set, the test output will be checked against the specified regular
+expressions and at least one of the regular expressions has to match,
+otherwise the test will fail.  Example:
+
+.. code-block:: cmake
+
+  set_tests_properties(mytest PROPERTIES
+    PASS_REGULAR_EXPRESSION "TestPassed;All ok"
+  )
+
+``PASS_REGULAR_EXPRESSION`` expects a list of regular expressions.
+
+See also the :prop_test:`FAIL_REGULAR_EXPRESSION` and
+:prop_test:`SKIP_REGULAR_EXPRESSION` test properties.
diff --git a/share/cmake-3.18/Help/prop_test/PROCESSORS.rst b/share/cmake-3.22/Help/prop_test/PROCESSORS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_test/PROCESSORS.rst
rename to share/cmake-3.22/Help/prop_test/PROCESSORS.rst
diff --git a/share/cmake-3.22/Help/prop_test/PROCESSOR_AFFINITY.rst b/share/cmake-3.22/Help/prop_test/PROCESSOR_AFFINITY.rst
new file mode 100644
index 0000000..f48a69c
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_test/PROCESSOR_AFFINITY.rst
@@ -0,0 +1,13 @@
+PROCESSOR_AFFINITY
+------------------
+
+.. versionadded:: 3.12
+
+Set to a true value to ask CTest to launch the test process with CPU affinity
+for a fixed set of processors.  If enabled and supported for the current
+platform, CTest will choose a set of processors to place in the CPU affinity
+mask when launching the test process.  The number of processors in the set is
+determined by the :prop_test:`PROCESSORS` test property or the number of
+processors available to CTest, whichever is smaller.  The set of processors
+chosen will be disjoint from the processors assigned to other concurrently
+running tests that also have the ``PROCESSOR_AFFINITY`` property enabled.
diff --git a/share/cmake-3.18/Help/prop_test/REQUIRED_FILES.rst b/share/cmake-3.22/Help/prop_test/REQUIRED_FILES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_test/REQUIRED_FILES.rst
rename to share/cmake-3.22/Help/prop_test/REQUIRED_FILES.rst
diff --git a/share/cmake-3.22/Help/prop_test/RESOURCE_GROUPS.rst b/share/cmake-3.22/Help/prop_test/RESOURCE_GROUPS.rst
new file mode 100644
index 0000000..26c8fa2
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_test/RESOURCE_GROUPS.rst
@@ -0,0 +1,72 @@
+RESOURCE_GROUPS
+---------------
+
+.. versionadded:: 3.16
+
+Specify resources required by a test, grouped in a way that is meaningful to
+the test.  See :ref:`resource allocation <ctest-resource-allocation>`
+for more information on how this property integrates into the CTest resource
+allocation feature.
+
+The ``RESOURCE_GROUPS`` property is a :ref:`semicolon-separated list <CMake
+Language Lists>` of group descriptions. Each entry consists of an optional
+number of groups using the description followed by a series of resource
+requirements for those groups. These requirements (and the number of groups)
+are separated by commas. The resource requirements consist of the name of a
+resource type, followed by a colon, followed by an unsigned integer
+specifying the number of slots required on one resource of the given type.
+
+The ``RESOURCE_GROUPS`` property tells CTest what resources a test expects
+to use grouped in a way meaningful to the test.  The test itself must read
+the :ref:`environment variables <ctest-resource-environment-variables>` to
+determine which resources have been allocated to each group.  For example,
+each group may correspond to a process the test will spawn when executed.
+
+Consider the following example:
+
+.. code-block:: cmake
+
+  add_test(NAME MyTest COMMAND MyExe)
+  set_property(TEST MyTest PROPERTY RESOURCE_GROUPS
+    "2,gpus:2"
+    "gpus:4,crypto_chips:2")
+
+In this example, there are two group descriptions (implicitly separated by a
+semicolon.) The content of the first description is ``2,gpus:2``. This
+description specifies 2 groups, each of which requires 2 slots from a single
+GPU. The content of the second description is ``gpus:4,crypto_chips:2``. This
+description does not specify a group count, so a default of 1 is assumed.
+This single group requires 4 slots from a single GPU and 2 slots from a
+single cryptography chip. In total, 3 resource groups are specified for this
+test, each with its own unique requirements.
+
+Note that the number of slots following the resource type specifies slots from
+a *single* instance of the resource. If the resource group can tolerate
+receiving slots from different instances of the same resource, it can indicate
+this by splitting the specification into multiple requirements of one slot. For
+example:
+
+.. code-block:: cmake
+
+  add_test(NAME MyTest COMMAND MyExe)
+  set_property(TEST MyTest PROPERTY RESOURCE_GROUPS
+    "gpus:1,gpus:1,gpus:1,gpus:1")
+
+In this case, the single resource group indicates that it needs four GPU slots,
+all of which may come from separate GPUs (though they don't have to; CTest may
+still assign slots from the same GPU.)
+
+When CTest sets the :ref:`environment variables
+<ctest-resource-environment-variables>` for a test, it assigns a group number
+based on the group description, starting at 0 on the left and the number of
+groups minus 1 on the right. For example, in the example above, the two
+groups in the first description would have IDs of 0 and 1, and the single
+group in the second description would have an ID of 2.
+
+Both the ``RESOURCE_GROUPS`` and :prop_test:`RESOURCE_LOCK` properties serve
+similar purposes, but they are distinct and orthogonal. Resources specified by
+``RESOURCE_GROUPS`` do not affect :prop_test:`RESOURCE_LOCK`, and vice versa.
+Whereas :prop_test:`RESOURCE_LOCK` is a simpler property that is used for
+locking one global resource, ``RESOURCE_GROUPS`` is a more advanced property
+that allows multiple tests to simultaneously use multiple resources of the
+same type, specifying their requirements in a fine-grained manner.
diff --git a/share/cmake-3.18/Help/prop_test/RESOURCE_LOCK.rst b/share/cmake-3.22/Help/prop_test/RESOURCE_LOCK.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_test/RESOURCE_LOCK.rst
rename to share/cmake-3.22/Help/prop_test/RESOURCE_LOCK.rst
diff --git a/share/cmake-3.18/Help/prop_test/RUN_SERIAL.rst b/share/cmake-3.22/Help/prop_test/RUN_SERIAL.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_test/RUN_SERIAL.rst
rename to share/cmake-3.22/Help/prop_test/RUN_SERIAL.rst
diff --git a/share/cmake-3.22/Help/prop_test/SKIP_REGULAR_EXPRESSION.rst b/share/cmake-3.22/Help/prop_test/SKIP_REGULAR_EXPRESSION.rst
new file mode 100644
index 0000000..60038e4
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_test/SKIP_REGULAR_EXPRESSION.rst
@@ -0,0 +1,21 @@
+SKIP_REGULAR_EXPRESSION
+-----------------------
+
+.. versionadded:: 3.16
+
+If the output matches this regular expression the test will be marked as skipped.
+
+If set, if the output matches one of specified regular expressions,
+the test will be marked as skipped.  Example:
+
+.. code-block:: cmake
+
+  set_property(TEST mytest PROPERTY
+    SKIP_REGULAR_EXPRESSION "[^a-z]Skip" "SKIP" "Skipped"
+  )
+
+``SKIP_REGULAR_EXPRESSION`` expects a list of regular expressions.
+
+See also the :prop_test:`SKIP_RETURN_CODE`,
+:prop_test:`PASS_REGULAR_EXPRESSION`, and :prop_test:`FAIL_REGULAR_EXPRESSION`
+test properties.
diff --git a/share/cmake-3.18/Help/prop_test/SKIP_RETURN_CODE.rst b/share/cmake-3.22/Help/prop_test/SKIP_RETURN_CODE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_test/SKIP_RETURN_CODE.rst
rename to share/cmake-3.22/Help/prop_test/SKIP_RETURN_CODE.rst
diff --git a/share/cmake-3.18/Help/prop_test/TIMEOUT.rst b/share/cmake-3.22/Help/prop_test/TIMEOUT.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_test/TIMEOUT.rst
rename to share/cmake-3.22/Help/prop_test/TIMEOUT.rst
diff --git a/share/cmake-3.22/Help/prop_test/TIMEOUT_AFTER_MATCH.rst b/share/cmake-3.22/Help/prop_test/TIMEOUT_AFTER_MATCH.rst
new file mode 100644
index 0000000..726dcab
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_test/TIMEOUT_AFTER_MATCH.rst
@@ -0,0 +1,41 @@
+TIMEOUT_AFTER_MATCH
+-------------------
+
+.. versionadded:: 3.6
+
+Change a test's timeout duration after a matching line is encountered
+in its output.
+
+Usage
+^^^^^
+
+.. code-block:: cmake
+
+ add_test(mytest ...)
+ set_property(TEST mytest PROPERTY TIMEOUT_AFTER_MATCH "${seconds}" "${regex}")
+
+Description
+^^^^^^^^^^^
+
+Allow a test ``seconds`` to complete after ``regex`` is encountered in
+its output.
+
+When the test outputs a line that matches ``regex`` its start time is
+reset to the current time and its timeout duration is changed to
+``seconds``.  Prior to this, the timeout duration is determined by the
+:prop_test:`TIMEOUT` property or the :variable:`CTEST_TEST_TIMEOUT`
+variable if either of these are set.  Because the test's start time is
+reset, its execution time will not include any time that was spent
+waiting for the matching output.
+
+:prop_test:`TIMEOUT_AFTER_MATCH` is useful for avoiding spurious
+timeouts when your test must wait for some system resource to become
+available before it can execute.  Set :prop_test:`TIMEOUT` to a longer
+duration that accounts for resource acquisition and use
+:prop_test:`TIMEOUT_AFTER_MATCH` to control how long the actual test
+is allowed to run.
+
+If the required resource can be controlled by CTest you should use
+:prop_test:`RESOURCE_LOCK` instead of :prop_test:`TIMEOUT_AFTER_MATCH`.
+This property should be used when only the test itself can determine
+when its required resources are available.
diff --git a/share/cmake-3.18/Help/prop_test/WILL_FAIL.rst b/share/cmake-3.22/Help/prop_test/WILL_FAIL.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_test/WILL_FAIL.rst
rename to share/cmake-3.22/Help/prop_test/WILL_FAIL.rst
diff --git a/share/cmake-3.18/Help/prop_test/WORKING_DIRECTORY.rst b/share/cmake-3.22/Help/prop_test/WORKING_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_test/WORKING_DIRECTORY.rst
rename to share/cmake-3.22/Help/prop_test/WORKING_DIRECTORY.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/ADDITIONAL_CLEAN_FILES.rst b/share/cmake-3.22/Help/prop_tgt/ADDITIONAL_CLEAN_FILES.rst
new file mode 100644
index 0000000..dc87d23
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ADDITIONAL_CLEAN_FILES.rst
@@ -0,0 +1,25 @@
+ADDITIONAL_CLEAN_FILES
+----------------------
+
+.. versionadded:: 3.15
+
+A :ref:`;-list <CMake Language Lists>` of files or directories that will be
+removed as a part of the global ``clean`` target.  It can be used to specify
+files and directories that are generated as part of building the target or
+that are directly associated with the target in some way (e.g. created as a
+result of running the target).
+
+For custom targets, if such files can be captured as outputs or byproducts
+instead, then that should be preferred over adding them to this property.
+If an additional clean file is used by multiple targets or isn't
+target-specific, then the :prop_dir:`ADDITIONAL_CLEAN_FILES` directory
+property may be the more appropriate property to use.
+
+Relative paths are allowed and are interpreted relative to the
+current binary directory.
+
+Contents of ``ADDITIONAL_CLEAN_FILES`` may use
+:manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+This property only works for the :generator:`Ninja` and the Makefile
+generators.  It is ignored by other generators.
diff --git a/share/cmake-3.22/Help/prop_tgt/AIX_EXPORT_ALL_SYMBOLS.rst b/share/cmake-3.22/Help/prop_tgt/AIX_EXPORT_ALL_SYMBOLS.rst
new file mode 100644
index 0000000..de98fdf
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/AIX_EXPORT_ALL_SYMBOLS.rst
@@ -0,0 +1,14 @@
+AIX_EXPORT_ALL_SYMBOLS
+----------------------
+
+.. versionadded:: 3.17
+
+On AIX, CMake automatically exports all symbols from shared libraries, and
+from executables with the :prop_tgt:`ENABLE_EXPORTS` target property set.
+Explicitly disable this boolean property to suppress the behavior and
+export no symbols by default.  In this case it is expected that the project
+will use other means to export some symbols.
+
+This property is initialized by the value of
+the :variable:`CMAKE_AIX_EXPORT_ALL_SYMBOLS` variable if it is set
+when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/ALIASED_TARGET.rst b/share/cmake-3.22/Help/prop_tgt/ALIASED_TARGET.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/ALIASED_TARGET.rst
rename to share/cmake-3.22/Help/prop_tgt/ALIASED_TARGET.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/ALIAS_GLOBAL.rst b/share/cmake-3.22/Help/prop_tgt/ALIAS_GLOBAL.rst
new file mode 100644
index 0000000..a8859c6
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ALIAS_GLOBAL.rst
@@ -0,0 +1,19 @@
+ALIAS_GLOBAL
+------------
+
+.. versionadded:: 3.18
+
+Read-only property indicating of whether an :ref:`ALIAS target <Alias Targets>`
+is globally visible.
+
+The boolean value of this property is ``TRUE`` for aliases to
+:ref:`IMPORTED targets <Imported Targets>` created
+with the ``GLOBAL`` options to :command:`add_executable()` or
+:command:`add_library()`, ``FALSE`` otherwise. It is undefined for
+targets built within the project.
+
+.. note::
+
+  Promoting an :ref:`IMPORTED target <Imported Targets>` from ``LOCAL``
+  to ``GLOBAL`` scope by changing the value or :prop_tgt:`IMPORTED_GLOBAL`
+  target property do not change the scope of local aliases.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_ANT_ADDITIONAL_OPTIONS.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_ANT_ADDITIONAL_OPTIONS.rst
new file mode 100644
index 0000000..eceb17d
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_ANT_ADDITIONAL_OPTIONS.rst
@@ -0,0 +1,10 @@
+ANDROID_ANT_ADDITIONAL_OPTIONS
+------------------------------
+
+.. versionadded:: 3.4
+
+Set the additional options for Android Ant build system. This is
+a string value containing all command line options for the Ant build.
+This property is initialized by the value of the
+:variable:`CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS` variable if it is
+set when a target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_API.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_API.rst
new file mode 100644
index 0000000..7664f18
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_API.rst
@@ -0,0 +1,10 @@
+ANDROID_API
+-----------
+
+.. versionadded:: 3.1
+
+When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
+Edition`, this property sets the Android target API version (e.g. ``15``).
+The version number must be a positive decimal integer.  This property is
+initialized by the value of the :variable:`CMAKE_ANDROID_API` variable if
+it is set when a target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_API_MIN.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_API_MIN.rst
new file mode 100644
index 0000000..7ca2455
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_API_MIN.rst
@@ -0,0 +1,9 @@
+ANDROID_API_MIN
+---------------
+
+.. versionadded:: 3.2
+
+Set the Android MIN API version (e.g. ``9``).  The version number
+must be a positive decimal integer.  This property is initialized by
+the value of the :variable:`CMAKE_ANDROID_API_MIN` variable if it is set
+when a target is created.  Native code builds using this API version.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_ARCH.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_ARCH.rst
new file mode 100644
index 0000000..94b76dd
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_ARCH.rst
@@ -0,0 +1,20 @@
+ANDROID_ARCH
+------------
+
+.. versionadded:: 3.4
+
+When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
+Edition`, this property sets the Android target architecture.
+
+This is a string property that could be set to the one of
+the following values:
+
+* ``armv7-a``: "ARMv7-A (armv7-a)"
+* ``armv7-a-hard``: "ARMv7-A, hard-float ABI (armv7-a)"
+* ``arm64-v8a``: "ARMv8-A, 64bit (arm64-v8a)"
+* ``x86``: "x86 (x86)"
+* ``x86_64``: "x86_64 (x86_64)"
+
+This property is initialized by the value of the
+:variable:`CMAKE_ANDROID_ARCH` variable if it is set
+when a target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_ASSETS_DIRECTORIES.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_ASSETS_DIRECTORIES.rst
new file mode 100644
index 0000000..b09a8b7
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_ASSETS_DIRECTORIES.rst
@@ -0,0 +1,11 @@
+ANDROID_ASSETS_DIRECTORIES
+--------------------------
+
+.. versionadded:: 3.4
+
+Set the Android assets directories to copy into the main assets
+folder before build. This a string property that contains the
+directory paths separated by semicolon.
+This property is initialized by the value of the
+:variable:`CMAKE_ANDROID_ASSETS_DIRECTORIES` variable if it is set when
+a target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_GUI.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_GUI.rst
new file mode 100644
index 0000000..cc022db
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_GUI.rst
@@ -0,0 +1,17 @@
+ANDROID_GUI
+-----------
+
+.. versionadded:: 3.1
+
+When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
+Edition`, this property specifies whether to build an executable as an
+application package on Android.
+
+When this property is set to true the executable when built for Android
+will be created as an application package.  This property is initialized
+by the value of the :variable:`CMAKE_ANDROID_GUI` variable if it is set
+when a target is created.
+
+Add the ``AndroidManifest.xml`` source file explicitly to the
+target :command:`add_executable` command invocation to specify the
+root directory of the application package source.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_JAR_DEPENDENCIES.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_JAR_DEPENDENCIES.rst
new file mode 100644
index 0000000..9880daf
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_JAR_DEPENDENCIES.rst
@@ -0,0 +1,9 @@
+ANDROID_JAR_DEPENDENCIES
+------------------------
+
+.. versionadded:: 3.4
+
+Set the Android property that specifies JAR dependencies.
+This is a string value property. This property is initialized
+by the value of the :variable:`CMAKE_ANDROID_JAR_DEPENDENCIES`
+variable if it is set when a target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_JAR_DIRECTORIES.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_JAR_DIRECTORIES.rst
new file mode 100644
index 0000000..6fef50b
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_JAR_DIRECTORIES.rst
@@ -0,0 +1,16 @@
+ANDROID_JAR_DIRECTORIES
+-----------------------
+
+.. versionadded:: 3.4
+
+Set the Android property that specifies directories to search for
+the JAR libraries.
+
+This a string property that contains the directory paths separated by
+semicolons. This property is initialized by the value of the
+:variable:`CMAKE_ANDROID_JAR_DIRECTORIES` variable if it is set when
+a target is created.
+
+Contents of ``ANDROID_JAR_DIRECTORIES`` may use "generator expressions"
+with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
+manual for available expressions.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_JAVA_SOURCE_DIR.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_JAVA_SOURCE_DIR.rst
new file mode 100644
index 0000000..9ea9884
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_JAVA_SOURCE_DIR.rst
@@ -0,0 +1,10 @@
+ANDROID_JAVA_SOURCE_DIR
+-----------------------
+
+.. versionadded:: 3.4
+
+Set the Android property that defines the Java source code root directories.
+This a string property that contains the directory paths separated by semicolon.
+This property is initialized by the value of the
+:variable:`CMAKE_ANDROID_JAVA_SOURCE_DIR` variable if it is set
+when a target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_NATIVE_LIB_DEPENDENCIES.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_NATIVE_LIB_DEPENDENCIES.rst
new file mode 100644
index 0000000..3aa741f
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_NATIVE_LIB_DEPENDENCIES.rst
@@ -0,0 +1,16 @@
+ANDROID_NATIVE_LIB_DEPENDENCIES
+-------------------------------
+
+.. versionadded:: 3.4
+
+Set the Android property that specifies the .so dependencies.
+This is a string property.
+
+This property is initialized by the value of the
+:variable:`CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES` variable if it is set
+when a target is created.
+
+Contents of ``ANDROID_NATIVE_LIB_DEPENDENCIES`` may use
+"generator expressions" with the syntax ``$<...>``. See the
+:manual:`cmake-generator-expressions(7)` manual for
+available expressions.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES.rst
new file mode 100644
index 0000000..98200d9
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES.rst
@@ -0,0 +1,18 @@
+ANDROID_NATIVE_LIB_DIRECTORIES
+------------------------------
+
+.. versionadded:: 3.4
+
+Set the Android property that specifies directories to search for the ``.so``
+libraries.
+
+This a string property that contains the directory paths separated
+by semicolons.
+
+This property is initialized by the value of the
+:variable:`CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES` variable if it is set when a
+target is created.
+
+Contents of ``ANDROID_NATIVE_LIB_DIRECTORIES`` may use "generator expressions"
+with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
+manual for available expressions.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_PROCESS_MAX.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_PROCESS_MAX.rst
new file mode 100644
index 0000000..0b6aba7
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_PROCESS_MAX.rst
@@ -0,0 +1,10 @@
+ANDROID_PROCESS_MAX
+-------------------
+
+.. versionadded:: 3.4
+
+Set the Android property that defines the maximum number of a
+parallel Android NDK compiler processes (e.g. ``4``).
+This property is initialized by the value of the
+:variable:`CMAKE_ANDROID_PROCESS_MAX` variable if it is set
+when a target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_PROGUARD.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_PROGUARD.rst
new file mode 100644
index 0000000..b5ce166
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_PROGUARD.rst
@@ -0,0 +1,11 @@
+ANDROID_PROGUARD
+----------------
+
+.. versionadded:: 3.4
+
+When this property is set to true that enables the ProGuard tool to shrink,
+optimize, and obfuscate the code by removing unused code and renaming
+classes, fields, and methods with semantically obscure names.
+This property is initialized by the value of the
+:variable:`CMAKE_ANDROID_PROGUARD` variable if it is set
+when a target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_PROGUARD_CONFIG_PATH.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_PROGUARD_CONFIG_PATH.rst
new file mode 100644
index 0000000..6ac59d8
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_PROGUARD_CONFIG_PATH.rst
@@ -0,0 +1,11 @@
+ANDROID_PROGUARD_CONFIG_PATH
+----------------------------
+
+.. versionadded:: 3.4
+
+Set the Android property that specifies the location of the ProGuard
+config file. Leave empty to use the default one.
+This a string property that contains the path to ProGuard config file.
+This property is initialized by the value of the
+:variable:`CMAKE_ANDROID_PROGUARD_CONFIG_PATH` variable if it is set
+when a target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_SECURE_PROPS_PATH.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_SECURE_PROPS_PATH.rst
new file mode 100644
index 0000000..f2ffa2e
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_SECURE_PROPS_PATH.rst
@@ -0,0 +1,10 @@
+ANDROID_SECURE_PROPS_PATH
+-------------------------
+
+.. versionadded:: 3.4
+
+Set the Android property that states the location of the secure properties file.
+This is a string property that contains the file path.
+This property is initialized by the value of the
+:variable:`CMAKE_ANDROID_SECURE_PROPS_PATH` variable
+if it is set when a target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_SKIP_ANT_STEP.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_SKIP_ANT_STEP.rst
new file mode 100644
index 0000000..1a54bce
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_SKIP_ANT_STEP.rst
@@ -0,0 +1,8 @@
+ANDROID_SKIP_ANT_STEP
+---------------------
+
+.. versionadded:: 3.4
+
+Set the Android property that defines whether or not to skip the Ant build step.
+This is a boolean property initialized by the value of the
+:variable:`CMAKE_ANDROID_SKIP_ANT_STEP` variable if it is set when a target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/ANDROID_STL_TYPE.rst b/share/cmake-3.22/Help/prop_tgt/ANDROID_STL_TYPE.rst
new file mode 100644
index 0000000..c83712b
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ANDROID_STL_TYPE.rst
@@ -0,0 +1,29 @@
+ANDROID_STL_TYPE
+----------------
+
+.. versionadded:: 3.4
+
+When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
+Edition`, this property specifies the type of STL support for the project.
+This is a string property that could set to the one of the following values:
+
+``none``
+  No C++ Support
+``system``
+  Minimal C++ without STL
+``gabi++_static``
+  GAbi++ Static
+``gabi++_shared``
+  GAbi++ Shared
+``gnustl_static``
+  GNU libstdc++ Static
+``gnustl_shared``
+  GNU libstdc++ Shared
+``stlport_static``
+  STLport Static
+``stlport_shared``
+  STLport Shared
+
+This property is initialized by the value of the
+:variable:`CMAKE_ANDROID_STL_TYPE` variable if it is set when a target is
+created.
diff --git a/share/cmake-3.22/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY.rst b/share/cmake-3.22/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY.rst
new file mode 100644
index 0000000..677e06d
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY.rst
@@ -0,0 +1,9 @@
+ARCHIVE_OUTPUT_DIRECTORY
+------------------------
+
+.. |XXX| replace:: :ref:`ARCHIVE <Archive Output Artifacts>`
+.. |xxx| replace:: archive
+.. |CMAKE_XXX_OUTPUT_DIRECTORY| replace:: :variable:`CMAKE_ARCHIVE_OUTPUT_DIRECTORY`
+.. include:: XXX_OUTPUT_DIRECTORY.txt
+
+See also the :prop_tgt:`ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>` target property.
diff --git a/share/cmake-3.18/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/ARCHIVE_OUTPUT_NAME.rst b/share/cmake-3.22/Help/prop_tgt/ARCHIVE_OUTPUT_NAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/ARCHIVE_OUTPUT_NAME.rst
rename to share/cmake-3.22/Help/prop_tgt/ARCHIVE_OUTPUT_NAME.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/ARCHIVE_OUTPUT_NAME_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/ARCHIVE_OUTPUT_NAME_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/ARCHIVE_OUTPUT_NAME_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/ARCHIVE_OUTPUT_NAME_CONFIG.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/AUTOGEN_BUILD_DIR.rst b/share/cmake-3.22/Help/prop_tgt/AUTOGEN_BUILD_DIR.rst
new file mode 100644
index 0000000..ff42ae8
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/AUTOGEN_BUILD_DIR.rst
@@ -0,0 +1,19 @@
+AUTOGEN_BUILD_DIR
+-----------------
+
+.. versionadded:: 3.9
+
+Directory where :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC`
+generate files for the target.
+
+The directory is created on demand and automatically added to the
+:prop_tgt:`ADDITIONAL_CLEAN_FILES` target property.
+
+When unset or empty the directory ``<dir>/<target-name>_autogen`` is used where
+``<dir>`` is :variable:`CMAKE_CURRENT_BINARY_DIR` and ``<target-name>``
+is :prop_tgt:`NAME`.
+
+By default :prop_tgt:`AUTOGEN_BUILD_DIR` is unset.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.22/Help/prop_tgt/AUTOGEN_ORIGIN_DEPENDS.rst b/share/cmake-3.22/Help/prop_tgt/AUTOGEN_ORIGIN_DEPENDS.rst
new file mode 100644
index 0000000..563190a
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/AUTOGEN_ORIGIN_DEPENDS.rst
@@ -0,0 +1,40 @@
+AUTOGEN_ORIGIN_DEPENDS
+----------------------
+
+.. versionadded:: 3.14
+
+Switch for forwarding origin target dependencies to the corresponding
+``_autogen`` target.
+
+Targets which have their :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC` property
+``ON`` have a corresponding ``_autogen`` target which generates
+``moc`` and ``uic`` files.  As this ``_autogen`` target is created at
+generate-time, it is not possible to define dependencies of it using
+e.g.  :command:`add_dependencies`.  Instead the
+:prop_tgt:`AUTOGEN_ORIGIN_DEPENDS` target property decides whether the origin
+target dependencies should be forwarded to the ``_autogen`` target or not.
+
+By default :prop_tgt:`AUTOGEN_ORIGIN_DEPENDS` is initialized from
+:variable:`CMAKE_AUTOGEN_ORIGIN_DEPENDS` which is ``ON`` by default.
+
+In total the dependencies of the ``_autogen`` target are composed from
+
+- forwarded origin target dependencies
+  (enabled by default via :prop_tgt:`AUTOGEN_ORIGIN_DEPENDS`)
+- additional user defined dependencies from :prop_tgt:`AUTOGEN_TARGET_DEPENDS`
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
+
+Note
+^^^^
+
+Disabling :prop_tgt:`AUTOGEN_ORIGIN_DEPENDS` is useful to avoid building of
+origin target dependencies when building the ``_autogen`` target only.
+This is especially interesting when a
+:variable:`global autogen target <CMAKE_GLOBAL_AUTOGEN_TARGET>` is enabled.
+
+When the ``_autogen`` target doesn't require all the origin target's
+dependencies, and :prop_tgt:`AUTOGEN_ORIGIN_DEPENDS` is disabled, it might be
+necessary to extend :prop_tgt:`AUTOGEN_TARGET_DEPENDS` to add missing
+dependencies.
diff --git a/share/cmake-3.22/Help/prop_tgt/AUTOGEN_PARALLEL.rst b/share/cmake-3.22/Help/prop_tgt/AUTOGEN_PARALLEL.rst
new file mode 100644
index 0000000..663b54e
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/AUTOGEN_PARALLEL.rst
@@ -0,0 +1,23 @@
+AUTOGEN_PARALLEL
+----------------
+
+.. versionadded:: 3.11
+
+Number of parallel ``moc`` or ``uic`` processes to start when using
+:prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
+
+The custom ``<origin>_autogen`` target starts a number of threads of which
+each one parses a source file and on demand starts a ``moc`` or ``uic``
+process.  ``AUTOGEN_PARALLEL`` controls how many parallel threads
+(and therefore ``moc`` or ``uic`` processes) are started.
+
+- An empty (or unset) value or the string ``AUTO`` sets the number of
+  threads/processes to the number of physical CPUs on the host system.
+- A positive non zero integer value sets the exact thread/process count.
+- Otherwise a single thread/process is started.
+
+By default ``AUTOGEN_PARALLEL`` is initialized from
+:variable:`CMAKE_AUTOGEN_PARALLEL`.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTOGEN_TARGET_DEPENDS.rst b/share/cmake-3.22/Help/prop_tgt/AUTOGEN_TARGET_DEPENDS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/AUTOGEN_TARGET_DEPENDS.rst
rename to share/cmake-3.22/Help/prop_tgt/AUTOGEN_TARGET_DEPENDS.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/AUTOMOC.rst b/share/cmake-3.22/Help/prop_tgt/AUTOMOC.rst
new file mode 100644
index 0000000..ed8b262
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/AUTOMOC.rst
@@ -0,0 +1,251 @@
+AUTOMOC
+-------
+
+Should the target be processed with auto-moc (for Qt projects).
+
+:prop_tgt:`AUTOMOC` is a boolean specifying whether CMake will handle the Qt
+``moc`` preprocessor automatically, i.e.  without having to use commands like
+:module:`QT4_WRAP_CPP() <FindQt4>`, ``QT5_WRAP_CPP()``, etc.
+Currently, Qt versions 4 to 6 are supported.
+
+This property is initialized by the value of the :variable:`CMAKE_AUTOMOC`
+variable if it is set when a target is created.
+
+When this property is set ``ON``, CMake will scan the header and
+source files at build time and invoke ``moc`` accordingly.
+
+
+Header file processing
+^^^^^^^^^^^^^^^^^^^^^^
+
+At configuration time, a list of header files that should be scanned by
+:prop_tgt:`AUTOMOC` is computed from the target's sources.
+
+- All header files in the target's sources are added to the scan list.
+- For all C++ source files ``<source_base>.<source_extension>`` in the
+  target's sources, CMake searches for
+
+  - a regular header with the same base name
+    (``<source_base>.<header_extention>``) and
+  - a private header with the same base name and a ``_p`` suffix
+    (``<source_base>_p.<header_extention>``)
+
+  and adds these to the scan list.
+
+At build time, CMake scans each unknown or modified header file from the
+list and searches for
+
+- a Qt macro from :prop_tgt:`AUTOMOC_MACRO_NAMES`,
+- additional file dependencies from the ``FILE`` argument of a
+  ``Q_PLUGIN_METADATA`` macro and
+- additional file dependencies detected by filters defined in
+  :prop_tgt:`AUTOMOC_DEPEND_FILTERS`.
+
+If a Qt macro is found, then the header will be compiled by the ``moc`` to the
+output file ``moc_<base_name>.cpp``.  The complete output file path is
+described in the section `Output file location`_.
+
+The header will be ``moc`` compiled again if a file from the additional file
+dependencies changes.
+
+Header ``moc`` output files ``moc_<base_name>.cpp`` can be included in source
+files.  In the section `Including header moc files in sources`_ there is more
+information on that topic.
+
+
+Source file processing
+^^^^^^^^^^^^^^^^^^^^^^
+
+At build time, CMake scans each unknown or modified C++ source file from the
+target's sources for
+
+- a Qt macro from :prop_tgt:`AUTOMOC_MACRO_NAMES`,
+- includes of header ``moc`` files
+  (see `Including header moc files in sources`_),
+- additional file dependencies from the ``FILE`` argument of a
+  ``Q_PLUGIN_METADATA`` macro and
+- additional file dependencies detected by filters defined in
+  :prop_tgt:`AUTOMOC_DEPEND_FILTERS`.
+
+If a Qt macro is found, then the C++ source file
+``<base>.<source_extension>`` is expected to as well contain an include
+statement
+
+.. code-block:: c++
+
+  #include <<base>.moc> // or
+  #include "<base>.moc"
+
+The source file then will be compiled by the ``moc`` to the output file
+``<base>.moc``.  A description of the complete output file path is in section
+`Output file location`_.
+
+The source will be ``moc`` compiled again if a file from the additional file
+dependencies changes.
+
+Including header moc files in sources
+"""""""""""""""""""""""""""""""""""""
+
+A source file can include the ``moc`` output file of a header
+``<header_base>.<header_extension>`` by using an include statement of
+the form
+
+.. code-block:: c++
+
+  #include <moc_<header_base>.cpp> // or
+  #include "moc_<header_base>.cpp"
+
+If the ``moc`` output file of a header is included by a source, it will
+be generated in a different location than if it was not included.  This is
+described in the section `Output file location`_.
+
+
+Output file location
+^^^^^^^^^^^^^^^^^^^^
+
+Included moc output files
+"""""""""""""""""""""""""
+
+``moc`` output files that are included by a source file will be generated in
+
+- ``<AUTOGEN_BUILD_DIR>/include``
+  for single configuration generators or in
+- ``<AUTOGEN_BUILD_DIR>/include_<CONFIG>``
+  for :prop_gbl:`multi configuration <GENERATOR_IS_MULTI_CONFIG>` generators.
+
+Where ``<AUTOGEN_BUILD_DIR>`` is the value of the target property
+:prop_tgt:`AUTOGEN_BUILD_DIR`.
+
+The include directory is automatically added to the target's
+:prop_tgt:`INCLUDE_DIRECTORIES`.
+
+Not included moc output files
+"""""""""""""""""""""""""""""
+
+``moc`` output files that are not included in a source file will be generated
+in
+
+- ``<AUTOGEN_BUILD_DIR>/<SOURCE_DIR_CHECKSUM>``
+  for single configuration generators or in,
+- ``<AUTOGEN_BUILD_DIR>/include_<CONFIG>/<SOURCE_DIR_CHECKSUM>``
+  for :prop_gbl:`multi configuration <GENERATOR_IS_MULTI_CONFIG>` generators.
+
+Where ``<SOURCE_DIR_CHECKSUM>`` is a checksum computed from the relative
+parent directory path of the ``moc`` input file.  This scheme allows to have
+``moc`` input files with the same name in different directories.
+
+All not included ``moc`` output files will be included automatically by the
+CMake generated file
+
+- ``<AUTOGEN_BUILD_DIR>/mocs_compilation.cpp``, or
+- ``<AUTOGEN_BUILD_DIR>/mocs_compilation_$<CONFIG>.cpp``,
+
+which is added to the target's sources.
+
+
+Qt version detection
+^^^^^^^^^^^^^^^^^^^^
+
+:prop_tgt:`AUTOMOC` enabled targets need to know the Qt major and minor
+version they're working with.  The major version usually is provided by the
+``INTERFACE_QT_MAJOR_VERSION`` property of the ``Qt[456]Core`` library,
+that the target links to.  To find the minor version, CMake builds a list of
+available Qt versions from
+
+- ``Qt6Core_VERSION_MAJOR`` and ``Qt6Core_VERSION_MINOR`` variables
+  (usually set by ``find_package(Qt6...)``)
+- ``Qt6Core_VERSION_MAJOR`` and ``Qt6Core_VERSION_MINOR`` directory properties
+- ``Qt5Core_VERSION_MAJOR`` and ``Qt5Core_VERSION_MINOR`` variables
+  (usually set by ``find_package(Qt5...)``)
+- ``Qt5Core_VERSION_MAJOR`` and ``Qt5Core_VERSION_MINOR`` directory properties
+- ``QT_VERSION_MAJOR`` and ``QT_VERSION_MINOR``  variables
+  (usually set by ``find_package(Qt4...)``)
+- ``QT_VERSION_MAJOR`` and ``QT_VERSION_MINOR``  directory properties
+
+in the context of the :command:`add_executable` or :command:`add_library` call.
+
+Assumed  ``INTERFACE_QT_MAJOR_VERSION`` is a valid number, the first
+entry in the list with a matching major version is taken.  If no matching major
+version was found, an error is generated.
+If  ``INTERFACE_QT_MAJOR_VERSION`` is not a valid number, the first
+entry in the list is taken.
+
+A ``find_package(Qt[456]...)`` call sets the ``QT/Qt[56]Core_VERSION_MAJOR/MINOR``
+variables.  If the call is in a different context than the
+:command:`add_executable` or :command:`add_library` call, e.g. in a function,
+then the version variables might not be available to the :prop_tgt:`AUTOMOC`
+enabled target.
+In that case the version variables can be forwarded from the
+``find_package(Qt[456]...)`` calling context to the :command:`add_executable`
+or :command:`add_library` calling context as directory properties.
+The following Qt5 example demonstrates the procedure.
+
+.. code-block:: cmake
+
+  function (add_qt5_client)
+    find_package(Qt5 REQUIRED QUIET COMPONENTS Core Widgets)
+    ...
+    set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+      PROPERTY Qt5Core_VERSION_MAJOR "${Qt5Core_VERSION_MAJOR}")
+    set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+      PROPERTY Qt5Core_VERSION_MINOR "${Qt5Core_VERSION_MAJOR}")
+    ...
+  endfunction ()
+  ...
+  add_qt5_client()
+  add_executable(myTarget main.cpp)
+  target_link_libraries(myTarget Qt5::QtWidgets)
+  set_property(TARGET myTarget PROPERTY AUTOMOC ON)
+
+
+Modifiers
+^^^^^^^^^
+
+:prop_tgt:`AUTOMOC_EXECUTABLE`:
+The ``moc`` executable will be detected automatically, but can be forced to
+a certain binary using this target property.
+
+:prop_tgt:`AUTOMOC_MOC_OPTIONS`:
+Additional command line options for ``moc`` can be set in this target property.
+
+:prop_tgt:`AUTOMOC_MACRO_NAMES`:
+This list of Qt macro names can be extended to search for additional macros in
+headers and sources.
+
+:prop_tgt:`AUTOMOC_DEPEND_FILTERS`:
+``moc`` dependency file names can be extracted from headers or sources by
+defining file name filters in this target property.
+
+:prop_tgt:`AUTOMOC_COMPILER_PREDEFINES`:
+Compiler pre definitions for ``moc`` are written to the ``moc_predefs.h`` file.
+The generation of this file can be enabled or disabled in this target property.
+
+:prop_sf:`SKIP_AUTOMOC`:
+Sources and headers can be excluded from :prop_tgt:`AUTOMOC` processing by
+setting this source file property.
+
+:prop_sf:`SKIP_AUTOGEN`:
+Source files can be excluded from :prop_tgt:`AUTOMOC`,
+:prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC` processing by
+setting this source file property.
+
+:prop_gbl:`AUTOGEN_SOURCE_GROUP`:
+This global property can be used to group files generated by
+:prop_tgt:`AUTOMOC` or :prop_tgt:`AUTORCC` together in an IDE, e.g.  in MSVS.
+
+:prop_gbl:`AUTOGEN_TARGETS_FOLDER`:
+This global property can be used to group :prop_tgt:`AUTOMOC`,
+:prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC` targets together in an IDE,
+e.g.  in MSVS.
+
+:variable:`CMAKE_GLOBAL_AUTOGEN_TARGET`:
+A global ``autogen`` target, that depends on all :prop_tgt:`AUTOMOC` or
+:prop_tgt:`AUTOUIC` generated ``<ORIGIN>_autogen`` targets in the project,
+will be generated when this variable is ``ON``.
+
+:prop_tgt:`AUTOGEN_PARALLEL`:
+This target property controls the number of ``moc`` or ``uic`` processes to
+start in parallel during builds.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.22/Help/prop_tgt/AUTOMOC_COMPILER_PREDEFINES.rst b/share/cmake-3.22/Help/prop_tgt/AUTOMOC_COMPILER_PREDEFINES.rst
new file mode 100644
index 0000000..8998284
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/AUTOMOC_COMPILER_PREDEFINES.rst
@@ -0,0 +1,26 @@
+AUTOMOC_COMPILER_PREDEFINES
+---------------------------
+
+.. versionadded:: 3.10
+
+Boolean value used by :prop_tgt:`AUTOMOC` to determine if the
+compiler pre definitions file ``moc_predefs.h`` should be generated.
+
+CMake generates a ``moc_predefs.h`` file with compiler pre definitions
+from the output of the command defined in
+:variable:`CMAKE_CXX_COMPILER_PREDEFINES_COMMAND <CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND>`
+when
+
+- :prop_tgt:`AUTOMOC` is enabled,
+- :prop_tgt:`AUTOMOC_COMPILER_PREDEFINES` is enabled,
+- :variable:`CMAKE_CXX_COMPILER_PREDEFINES_COMMAND <CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND>` isn't empty and
+- the Qt version is greater or equal 5.8.
+
+The ``moc_predefs.h`` file, which is generated in :prop_tgt:`AUTOGEN_BUILD_DIR`,
+is passed to ``moc`` as the argument to the ``--include`` option.
+
+By default :prop_tgt:`AUTOMOC_COMPILER_PREDEFINES` is initialized from
+:variable:`CMAKE_AUTOMOC_COMPILER_PREDEFINES`, which is ON by default.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.22/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst b/share/cmake-3.22/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst
new file mode 100644
index 0000000..1f31700
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst
@@ -0,0 +1,109 @@
+AUTOMOC_DEPEND_FILTERS
+----------------------
+
+.. versionadded:: 3.9
+
+Filter definitions used by :prop_tgt:`AUTOMOC` to extract file names from a
+source file that are registered as additional dependencies for the
+``moc`` file of the source file.
+
+Filters are defined as ``KEYWORD;REGULAR_EXPRESSION`` pairs. First the file
+content is searched for ``KEYWORD``. If it is found at least once, then file
+names are extracted by successively searching for ``REGULAR_EXPRESSION`` and
+taking the first match group.
+
+The file name found in the first match group is searched for
+
+- first in the vicinity of the source file
+- and afterwards in the target's :prop_tgt:`INCLUDE_DIRECTORIES`.
+
+If any of the extracted files changes, then the ``moc`` file for the source
+file gets rebuilt even when the source file itself doesn't change.
+
+If any of the extracted files is :prop_sf:`GENERATED` or if it is not in the
+target's sources, then it might be necessary to add it to the
+``_autogen`` target  dependencies.
+See :prop_tgt:`AUTOGEN_TARGET_DEPENDS` for reference.
+
+By default :prop_tgt:`AUTOMOC_DEPEND_FILTERS` is initialized from
+:variable:`CMAKE_AUTOMOC_DEPEND_FILTERS`, which is empty by default.
+
+From Qt 5.15.0 on this variable is ignored as moc is able to output the correct
+dependencies.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
+
+
+Example 1
+^^^^^^^^^
+
+A header file ``my_class.hpp`` uses a custom macro ``JSON_FILE_MACRO`` which
+is defined in an other header ``macros.hpp``.
+We want the ``moc`` file of ``my_class.hpp`` to depend on the file name
+argument of ``JSON_FILE_MACRO``::
+
+  // my_class.hpp
+  class My_Class : public QObject
+  {
+    Q_OBJECT
+    JSON_FILE_MACRO ( "info.json" )
+  ...
+  };
+
+In ``CMakeLists.txt`` we add a filter to
+:variable:`CMAKE_AUTOMOC_DEPEND_FILTERS` like this::
+
+  list( APPEND CMAKE_AUTOMOC_DEPEND_FILTERS
+    "JSON_FILE_MACRO"
+    "[\n][ \t]*JSON_FILE_MACRO[ \t]*\\([ \t]*\"([^\"]+)\""
+  )
+
+We assume ``info.json`` is a plain (not :prop_sf:`GENERATED`) file that is
+listed in the target's source.  Therefore we do not need to add it to
+:prop_tgt:`AUTOGEN_TARGET_DEPENDS`.
+
+Example 2
+^^^^^^^^^
+
+In the target ``my_target`` a header file ``complex_class.hpp`` uses a
+custom macro ``JSON_BASED_CLASS`` which is defined in an other header
+``macros.hpp``::
+
+  // macros.hpp
+  ...
+  #define JSON_BASED_CLASS(name, json) \
+  class name : public QObject \
+  { \
+    Q_OBJECT \
+    Q_PLUGIN_METADATA(IID "demo" FILE json) \
+    name() {} \
+  };
+  ...
+
+::
+
+  // complex_class.hpp
+  #pragma once
+  JSON_BASED_CLASS(Complex_Class, "meta.json")
+  // end of file
+
+Since ``complex_class.hpp`` doesn't contain a ``Q_OBJECT`` macro it would be
+ignored by :prop_tgt:`AUTOMOC`.  We change this by adding ``JSON_BASED_CLASS``
+to :variable:`CMAKE_AUTOMOC_MACRO_NAMES`::
+
+  list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "JSON_BASED_CLASS")
+
+We want the ``moc`` file of ``complex_class.hpp`` to depend on
+``meta.json``.  So we add a filter to
+:variable:`CMAKE_AUTOMOC_DEPEND_FILTERS`::
+
+  list(APPEND CMAKE_AUTOMOC_DEPEND_FILTERS
+    "JSON_BASED_CLASS"
+    "[\n^][ \t]*JSON_BASED_CLASS[ \t]*\\([^,]*,[ \t]*\"([^\"]+)\""
+  )
+
+Additionally we assume ``meta.json`` is :prop_sf:`GENERATED` which is
+why we have to add it to :prop_tgt:`AUTOGEN_TARGET_DEPENDS`::
+
+  set_property(TARGET my_target APPEND PROPERTY AUTOGEN_TARGET_DEPENDS "meta.json")
diff --git a/share/cmake-3.22/Help/prop_tgt/AUTOMOC_EXECUTABLE.rst b/share/cmake-3.22/Help/prop_tgt/AUTOMOC_EXECUTABLE.rst
new file mode 100644
index 0000000..f4b8396
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/AUTOMOC_EXECUTABLE.rst
@@ -0,0 +1,17 @@
+AUTOMOC_EXECUTABLE
+------------------
+
+.. versionadded:: 3.14
+
+:prop_tgt:`AUTOMOC_EXECUTABLE` is file path pointing to the ``moc``
+executable to use for :prop_tgt:`AUTOMOC` enabled files. Setting
+this property will make CMake skip the automatic detection of the
+``moc`` binary as well as the sanity-tests normally run to ensure
+that the binary is available and working as expected.
+
+Usually this property does not need to be set. Only consider this
+property if auto-detection of ``moc`` can not work -- e.g. because
+you are building the ``moc`` binary as part of your project.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.22/Help/prop_tgt/AUTOMOC_MACRO_NAMES.rst b/share/cmake-3.22/Help/prop_tgt/AUTOMOC_MACRO_NAMES.rst
new file mode 100644
index 0000000..a53810d
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/AUTOMOC_MACRO_NAMES.rst
@@ -0,0 +1,34 @@
+AUTOMOC_MACRO_NAMES
+-------------------
+
+.. versionadded:: 3.10
+
+A :ref:`semicolon-separated list <CMake Language Lists>` list of macro names used by
+:prop_tgt:`AUTOMOC` to determine if a C++ file needs to be processed by ``moc``.
+
+This property is only used if the :prop_tgt:`AUTOMOC` property is ``ON``
+for this target.
+
+When running :prop_tgt:`AUTOMOC`, CMake searches for the strings listed in
+:prop_tgt:`AUTOMOC_MACRO_NAMES` in C++ source and header files.
+If any of the strings is found
+
+- as the first non space string on a new line or
+- as the first non space string after a ``{`` on a new line,
+
+then the file will be processed by ``moc``.
+
+By default :prop_tgt:`AUTOMOC_MACRO_NAMES` is initialized from
+:variable:`CMAKE_AUTOMOC_MACRO_NAMES`.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
+
+Example
+^^^^^^^
+
+In this case the ``Q_OBJECT`` macro is hidden inside another macro
+called ``CUSTOM_MACRO``.  To let CMake know that source files that contain
+``CUSTOM_MACRO`` need to be ``moc`` processed, we call::
+
+  set_property(TARGET tgt APPEND PROPERTY AUTOMOC_MACRO_NAMES "CUSTOM_MACRO")
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTOMOC_MOC_OPTIONS.rst b/share/cmake-3.22/Help/prop_tgt/AUTOMOC_MOC_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/AUTOMOC_MOC_OPTIONS.rst
rename to share/cmake-3.22/Help/prop_tgt/AUTOMOC_MOC_OPTIONS.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/AUTOMOC_PATH_PREFIX.rst b/share/cmake-3.22/Help/prop_tgt/AUTOMOC_PATH_PREFIX.rst
new file mode 100644
index 0000000..836d953
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/AUTOMOC_PATH_PREFIX.rst
@@ -0,0 +1,33 @@
+AUTOMOC_PATH_PREFIX
+-------------------
+
+.. versionadded:: 3.16
+
+When this property is ``ON``, CMake will generate the ``-p`` path prefix
+option for ``moc`` on :prop_tgt:`AUTOMOC` enabled Qt targets.
+
+To generate the path prefix, CMake tests if the header compiled by ``moc``
+is in any of the target
+:command:`include directories <target_include_directories>`.  If so, CMake will
+compute the relative path accordingly.  If the header is not in the
+:command:`include directories <target_include_directories>`, CMake will omit
+the ``-p`` path prefix option.  ``moc`` usually generates a
+relative include path in that case.
+
+:prop_tgt:`AUTOMOC_PATH_PREFIX` is initialized from the variable
+:variable:`CMAKE_AUTOMOC_PATH_PREFIX`, which is ``OFF`` by default.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
+
+Reproducible builds
+^^^^^^^^^^^^^^^^^^^
+
+For reproducible builds it is recommended to keep headers that are ``moc``
+compiled in one of the target
+:command:`include directories <target_include_directories>` and set
+:prop_tgt:`AUTOMOC_PATH_PREFIX` to ``ON``.  This ensures that:
+
+- ``moc`` output files are identical on different build setups,
+- ``moc`` output files will compile correctly when the source and/or
+  build directory is a symbolic link.
diff --git a/share/cmake-3.22/Help/prop_tgt/AUTORCC.rst b/share/cmake-3.22/Help/prop_tgt/AUTORCC.rst
new file mode 100644
index 0000000..0a0c2a1
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/AUTORCC.rst
@@ -0,0 +1,62 @@
+AUTORCC
+-------
+
+Should the target be processed with auto-rcc (for Qt projects).
+
+:prop_tgt:`AUTORCC` is a boolean specifying whether CMake will handle
+the Qt ``rcc`` code generator automatically, i.e. without having to use
+commands like :module:`QT4_ADD_RESOURCES() <FindQt4>`, ``QT5_ADD_RESOURCES()``,
+etc.  Currently, Qt versions 4 to 6 are supported.
+
+When this property is ``ON``, CMake will handle ``.qrc`` files added
+as target sources at build time and invoke ``rcc`` accordingly.
+This property is initialized by the value of the :variable:`CMAKE_AUTORCC`
+variable if it is set when a target is created.
+
+By default :prop_tgt:`AUTORCC` is processed by a
+:command:`custom command <add_custom_command>`.
+If the ``.qrc`` file is :prop_sf:`GENERATED`, a
+:command:`custom target <add_custom_target>` is used instead.
+
+When there are multiple ``.qrc`` files with the same name, CMake will
+generate unspecified unique output file names for ``rcc``.  Therefore, if
+``Q_INIT_RESOURCE()`` or ``Q_CLEANUP_RESOURCE()`` need to be used, the
+``.qrc`` file name must be unique.
+
+
+Modifiers
+^^^^^^^^^
+
+:prop_tgt:`AUTORCC_EXECUTABLE`:
+The ``rcc`` executable will be detected automatically, but can be forced to
+a certain binary by setting this target property.
+
+:prop_tgt:`AUTORCC_OPTIONS`:
+Additional command line options for ``rcc`` can be set via this target
+property.  The corresponding :prop_sf:`AUTORCC_OPTIONS` source file property
+can be used to specify options to be applied only to a specific ``.qrc`` file.
+
+:prop_sf:`SKIP_AUTORCC`:
+``.qrc`` files can be excluded from :prop_tgt:`AUTORCC` processing by
+setting this source file property.
+
+:prop_sf:`SKIP_AUTOGEN`:
+Source files can be excluded from :prop_tgt:`AUTOMOC`,
+:prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC` processing by
+setting this source file property.
+
+:prop_gbl:`AUTOGEN_SOURCE_GROUP`:
+This global property can be used to group files generated by
+:prop_tgt:`AUTOMOC` or :prop_tgt:`AUTORCC` together in an IDE, e.g.  in MSVS.
+
+:prop_gbl:`AUTOGEN_TARGETS_FOLDER`:
+This global property can be used to group :prop_tgt:`AUTOMOC`,
+:prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC` targets together in an IDE,
+e.g.  in MSVS.
+
+:variable:`CMAKE_GLOBAL_AUTORCC_TARGET`:
+A global ``autorcc`` target that depends on all :prop_tgt:`AUTORCC` targets
+in the project will be generated when this variable is ``ON``.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.22/Help/prop_tgt/AUTORCC_EXECUTABLE.rst b/share/cmake-3.22/Help/prop_tgt/AUTORCC_EXECUTABLE.rst
new file mode 100644
index 0000000..4f85fba
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/AUTORCC_EXECUTABLE.rst
@@ -0,0 +1,17 @@
+AUTORCC_EXECUTABLE
+------------------
+
+.. versionadded:: 3.14
+
+:prop_tgt:`AUTORCC_EXECUTABLE` is file path pointing to the ``rcc``
+executable to use for :prop_tgt:`AUTORCC` enabled files. Setting
+this property will make CMake skip the automatic detection of the
+``rcc`` binary as well as the sanity-tests normally run to ensure
+that the binary is available and working as expected.
+
+Usually this property does not need to be set. Only consider this
+property if auto-detection of ``rcc`` can not work -- e.g. because
+you are building the ``rcc`` binary as part of your project.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTORCC_OPTIONS.rst b/share/cmake-3.22/Help/prop_tgt/AUTORCC_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/AUTORCC_OPTIONS.rst
rename to share/cmake-3.22/Help/prop_tgt/AUTORCC_OPTIONS.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/AUTOUIC.rst b/share/cmake-3.22/Help/prop_tgt/AUTOUIC.rst
new file mode 100644
index 0000000..e0cea97
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/AUTOUIC.rst
@@ -0,0 +1,85 @@
+AUTOUIC
+-------
+
+Should the target be processed with auto-uic (for Qt projects).
+
+:prop_tgt:`AUTOUIC` is a boolean specifying whether CMake will handle
+the Qt ``uic`` code generator automatically, i.e. without having to use
+commands like :module:`QT4_WRAP_UI() <FindQt4>`, ``QT5_WRAP_UI()``, etc.
+Currently, Qt versions 4 to 6 are supported.
+
+This property is initialized by the value of the :variable:`CMAKE_AUTOUIC`
+variable if it is set when a target is created.
+
+When this property is ``ON``, CMake will scan the header and source files at
+build time and invoke ``uic`` accordingly.
+
+
+Header and source file processing
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+At build time, CMake scans each header and source file from the
+target's sources for include statements of the form
+
+.. code-block:: c++
+
+  #include "ui_<ui_base>.h"
+
+Once such an include statement is found in a file, CMake searches for the
+``uic`` input file ``<ui_base>.ui``
+
+- in the vicinity of the file and
+- in the :prop_tgt:`AUTOUIC_SEARCH_PATHS` of the target.
+
+If the ``<ui_base>.ui`` file was found, ``uic`` is called on it to generate
+``ui_<ui_base>.h`` in the directory
+
+- ``<AUTOGEN_BUILD_DIR>/include`` for single configuration generators or in
+- ``<AUTOGEN_BUILD_DIR>/include_<CONFIG>`` for
+  :prop_gbl:`multi configuration <GENERATOR_IS_MULTI_CONFIG>` generators.
+
+Where ``<AUTOGEN_BUILD_DIR>`` is the value of the target property
+:prop_tgt:`AUTOGEN_BUILD_DIR`.
+
+The include directory is automatically added to the target's
+:prop_tgt:`INCLUDE_DIRECTORIES`.
+
+
+Modifiers
+^^^^^^^^^
+
+:prop_tgt:`AUTOUIC_EXECUTABLE`:
+The ``uic`` executable will be detected automatically, but can be forced to
+a certain binary using this target property.
+
+:prop_tgt:`AUTOUIC_OPTIONS`:
+Additional command line options for ``uic`` can be set via this target
+property.  The corresponding :prop_sf:`AUTOUIC_OPTIONS` source file property
+can be used to specify options to be applied only to a specific
+``<base_name>.ui`` file.
+
+:prop_sf:`SKIP_AUTOUIC`:
+Source files can be excluded from :prop_tgt:`AUTOUIC` processing by setting
+this source file property.
+
+:prop_sf:`SKIP_AUTOGEN`:
+Source files can be excluded from :prop_tgt:`AUTOMOC`,
+:prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC` processing by
+setting this source file property.
+
+:prop_gbl:`AUTOGEN_TARGETS_FOLDER`:
+This global property can be used to group :prop_tgt:`AUTOMOC`,
+:prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC` targets together in an IDE,
+e.g.  in MSVS.
+
+:variable:`CMAKE_GLOBAL_AUTOGEN_TARGET`:
+A global ``autogen`` target, that depends on all :prop_tgt:`AUTOMOC` or
+:prop_tgt:`AUTOUIC` generated ``<ORIGIN>_autogen`` targets in the project,
+will be generated when this variable is ``ON``.
+
+:prop_tgt:`AUTOGEN_PARALLEL`:
+This target property controls the number of ``moc`` or ``uic`` processes to
+start in parallel during builds.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.22/Help/prop_tgt/AUTOUIC_EXECUTABLE.rst b/share/cmake-3.22/Help/prop_tgt/AUTOUIC_EXECUTABLE.rst
new file mode 100644
index 0000000..5966326
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/AUTOUIC_EXECUTABLE.rst
@@ -0,0 +1,17 @@
+AUTOUIC_EXECUTABLE
+------------------
+
+.. versionadded:: 3.14
+
+:prop_tgt:`AUTOUIC_EXECUTABLE` is file path pointing to the ``uic``
+executable to use for :prop_tgt:`AUTOUIC` enabled files. Setting
+this property will make CMake skip the automatic detection of the
+``uic`` binary as well as the sanity-tests normally run to ensure
+that the binary is available and working as expected.
+
+Usually this property does not need to be set. Only consider this
+property if auto-detection of ``uic`` can not work -- e.g. because
+you are building the ``uic`` binary as part of your project.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.18/Help/prop_tgt/AUTOUIC_OPTIONS.rst b/share/cmake-3.22/Help/prop_tgt/AUTOUIC_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/AUTOUIC_OPTIONS.rst
rename to share/cmake-3.22/Help/prop_tgt/AUTOUIC_OPTIONS.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/AUTOUIC_SEARCH_PATHS.rst b/share/cmake-3.22/Help/prop_tgt/AUTOUIC_SEARCH_PATHS.rst
new file mode 100644
index 0000000..87fea48
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/AUTOUIC_SEARCH_PATHS.rst
@@ -0,0 +1,14 @@
+AUTOUIC_SEARCH_PATHS
+--------------------
+
+.. versionadded:: 3.9
+
+Search path list used by :prop_tgt:`AUTOUIC` to find included
+``.ui`` files.
+
+This property is initialized by the value of the
+:variable:`CMAKE_AUTOUIC_SEARCH_PATHS` variable if it is set
+when a target is created. Otherwise it is empty.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.22/Help/prop_tgt/BINARY_DIR.rst b/share/cmake-3.22/Help/prop_tgt/BINARY_DIR.rst
new file mode 100644
index 0000000..beab12c
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/BINARY_DIR.rst
@@ -0,0 +1,8 @@
+BINARY_DIR
+----------
+
+.. versionadded:: 3.4
+
+This read-only property reports the value of the
+:variable:`CMAKE_CURRENT_BINARY_DIR` variable in the directory in which
+the target was defined.
diff --git a/share/cmake-3.22/Help/prop_tgt/BUILD_RPATH.rst b/share/cmake-3.22/Help/prop_tgt/BUILD_RPATH.rst
new file mode 100644
index 0000000..1f917a5
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/BUILD_RPATH.rst
@@ -0,0 +1,15 @@
+BUILD_RPATH
+-----------
+
+.. versionadded:: 3.8
+
+A :ref:`semicolon-separated list <CMake Language Lists>` specifying runtime path (``RPATH``)
+entries to add to binaries linked in the build tree (for platforms that
+support it).  The entries will *not* be used for binaries in the install
+tree.  See also the :prop_tgt:`INSTALL_RPATH` target property.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_BUILD_RPATH` if it is set when a target is created.
+
+This property supports
+:manual:`generator expressions <cmake-generator-expressions(7)>`.
diff --git a/share/cmake-3.22/Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst b/share/cmake-3.22/Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst
new file mode 100644
index 0000000..2cdfa0d
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst
@@ -0,0 +1,26 @@
+BUILD_RPATH_USE_ORIGIN
+----------------------
+
+.. versionadded:: 3.14
+
+Whether to use relative paths for the build ``RPATH``.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_BUILD_RPATH_USE_ORIGIN`.
+
+On platforms that support runtime paths (``RPATH``) with the
+``$ORIGIN`` token, setting this property to ``TRUE`` enables relative
+paths in the build ``RPATH`` for executables and shared libraries that
+point to shared libraries in the same build tree.
+
+Normally the build ``RPATH`` of a binary contains absolute paths
+to the directory of each shared library it links to.  The ``RPATH``
+entries for directories contained within the build tree can be made
+relative to enable relocatable builds and to help achieve reproducible
+builds by omitting the build directory from the build environment.
+
+This property has no effect on platforms that do not support the
+``$ORIGIN`` token in ``RPATH``, or when the :variable:`CMAKE_SKIP_RPATH`
+variable is set. The runtime path set through the
+:prop_tgt:`BUILD_RPATH` target property is also unaffected by this
+property.
diff --git a/share/cmake-3.22/Help/prop_tgt/BUILD_WITH_INSTALL_NAME_DIR.rst b/share/cmake-3.22/Help/prop_tgt/BUILD_WITH_INSTALL_NAME_DIR.rst
new file mode 100644
index 0000000..073dce5
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/BUILD_WITH_INSTALL_NAME_DIR.rst
@@ -0,0 +1,15 @@
+BUILD_WITH_INSTALL_NAME_DIR
+---------------------------
+
+.. versionadded:: 3.9
+
+``BUILD_WITH_INSTALL_NAME_DIR`` is a boolean specifying whether the macOS
+``install_name`` of a target in the build tree uses the directory given by
+:prop_tgt:`INSTALL_NAME_DIR`.  This setting only applies to targets on macOS.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_BUILD_WITH_INSTALL_NAME_DIR` if it is set when a target is
+created.
+
+If this property is not set and policy :policy:`CMP0068` is not ``NEW``, the
+value of :prop_tgt:`BUILD_WITH_INSTALL_RPATH` is used in its place.
diff --git a/share/cmake-3.18/Help/prop_tgt/BUILD_WITH_INSTALL_RPATH.rst b/share/cmake-3.22/Help/prop_tgt/BUILD_WITH_INSTALL_RPATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/BUILD_WITH_INSTALL_RPATH.rst
rename to share/cmake-3.22/Help/prop_tgt/BUILD_WITH_INSTALL_RPATH.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/BUNDLE.rst b/share/cmake-3.22/Help/prop_tgt/BUNDLE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/BUNDLE.rst
rename to share/cmake-3.22/Help/prop_tgt/BUNDLE.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/BUNDLE_EXTENSION.rst b/share/cmake-3.22/Help/prop_tgt/BUNDLE_EXTENSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/BUNDLE_EXTENSION.rst
rename to share/cmake-3.22/Help/prop_tgt/BUNDLE_EXTENSION.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/COMMON_LANGUAGE_RUNTIME.rst b/share/cmake-3.22/Help/prop_tgt/COMMON_LANGUAGE_RUNTIME.rst
new file mode 100644
index 0000000..adfa6f7
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/COMMON_LANGUAGE_RUNTIME.rst
@@ -0,0 +1,24 @@
+COMMON_LANGUAGE_RUNTIME
+-----------------------
+
+.. versionadded:: 3.12
+
+By setting this target property, the target is configured to build with
+``C++/CLI`` support.
+
+The Visual Studio generator defines the ``clr`` parameter depending on
+the value of ``COMMON_LANGUAGE_RUNTIME``:
+
+* property not set: native C++ (i.e. default)
+* property set but empty: mixed unmanaged/managed C++
+* property set to any non empty value: managed C++
+
+Supported values: ``""``, ``"pure"``, ``"safe"``
+
+This property is only evaluated :ref:`Visual Studio Generators` for
+VS 2010 and above.
+
+To be able to build managed C++ targets with VS 2017 and above the component
+``C++/CLI support`` must be installed, which may not be done by default.
+
+See also :prop_tgt:`IMPORTED_COMMON_LANGUAGE_RUNTIME`
diff --git a/share/cmake-3.18/Help/prop_tgt/COMPATIBLE_INTERFACE_BOOL.rst b/share/cmake-3.22/Help/prop_tgt/COMPATIBLE_INTERFACE_BOOL.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/COMPATIBLE_INTERFACE_BOOL.rst
rename to share/cmake-3.22/Help/prop_tgt/COMPATIBLE_INTERFACE_BOOL.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MAX.rst b/share/cmake-3.22/Help/prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MAX.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MAX.rst
rename to share/cmake-3.22/Help/prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MAX.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MIN.rst b/share/cmake-3.22/Help/prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MIN.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MIN.rst
rename to share/cmake-3.22/Help/prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MIN.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/COMPATIBLE_INTERFACE_STRING.rst b/share/cmake-3.22/Help/prop_tgt/COMPATIBLE_INTERFACE_STRING.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/COMPATIBLE_INTERFACE_STRING.rst
rename to share/cmake-3.22/Help/prop_tgt/COMPATIBLE_INTERFACE_STRING.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/COMPILE_DEFINITIONS.rst b/share/cmake-3.22/Help/prop_tgt/COMPILE_DEFINITIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/COMPILE_DEFINITIONS.rst
rename to share/cmake-3.22/Help/prop_tgt/COMPILE_DEFINITIONS.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/COMPILE_DEFINITIONS_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/COMPILE_DEFINITIONS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/COMPILE_DEFINITIONS_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/COMPILE_DEFINITIONS_CONFIG.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/COMPILE_FEATURES.rst b/share/cmake-3.22/Help/prop_tgt/COMPILE_FEATURES.rst
new file mode 100644
index 0000000..9b937ed
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/COMPILE_FEATURES.rst
@@ -0,0 +1,15 @@
+COMPILE_FEATURES
+----------------
+
+.. versionadded:: 3.1
+
+Compiler features enabled for this target.
+
+The list of features in this property are a subset of the features listed
+in the :variable:`CMAKE_C_COMPILE_FEATURES`, :variable:`CMAKE_CUDA_COMPILE_FEATURES`, and
+:variable:`CMAKE_CXX_COMPILE_FEATURES` variables.
+
+Contents of ``COMPILE_FEATURES`` may use "generator expressions" with the
+syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual for
+available expressions.  See the :manual:`cmake-compile-features(7)` manual
+for information on compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/prop_tgt/COMPILE_FLAGS.rst b/share/cmake-3.22/Help/prop_tgt/COMPILE_FLAGS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/COMPILE_FLAGS.rst
rename to share/cmake-3.22/Help/prop_tgt/COMPILE_FLAGS.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/COMPILE_OPTIONS.rst b/share/cmake-3.22/Help/prop_tgt/COMPILE_OPTIONS.rst
new file mode 100644
index 0000000..0fd6aac
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/COMPILE_OPTIONS.rst
@@ -0,0 +1,23 @@
+COMPILE_OPTIONS
+---------------
+
+List of options to pass to the compiler.
+
+This property holds a :ref:`semicolon-separated list <CMake Language Lists>`
+of options specified so far for its target.  Use the
+:command:`target_compile_options` command to append more options.
+The options will be added after after flags in the
+:variable:`CMAKE_<LANG>_FLAGS` and :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>`
+variables, but before those propagated from dependencies by the
+:prop_tgt:`INTERFACE_COMPILE_OPTIONS` property.
+
+This property is initialized by the :prop_dir:`COMPILE_OPTIONS` directory
+property when a target is created, and is used by the generators to set
+the options for the compiler.
+
+Contents of ``COMPILE_OPTIONS`` may use "generator expressions" with the
+syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual
+for available expressions.  See the :manual:`cmake-buildsystem(7)` manual
+for more on defining buildsystem properties.
+
+.. include:: ../command/OPTIONS_SHELL.txt
diff --git a/share/cmake-3.22/Help/prop_tgt/COMPILE_PDB_NAME.rst b/share/cmake-3.22/Help/prop_tgt/COMPILE_PDB_NAME.rst
new file mode 100644
index 0000000..b76afeb
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/COMPILE_PDB_NAME.rst
@@ -0,0 +1,13 @@
+COMPILE_PDB_NAME
+----------------
+
+.. versionadded:: 3.1
+
+Output name for the MS debug symbol ``.pdb`` file generated by the
+compiler while building source files.
+
+This property specifies the base name for the debug symbols file.
+If not set, the default is unspecified.
+
+.. |PDB_XXX| replace:: :prop_tgt:`PDB_NAME`
+.. include:: COMPILE_PDB_NOTE.txt
diff --git a/share/cmake-3.22/Help/prop_tgt/COMPILE_PDB_NAME_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/COMPILE_PDB_NAME_CONFIG.rst
new file mode 100644
index 0000000..4c9825d
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/COMPILE_PDB_NAME_CONFIG.rst
@@ -0,0 +1,12 @@
+COMPILE_PDB_NAME_<CONFIG>
+-------------------------
+
+.. versionadded:: 3.1
+
+Per-configuration output name for the MS debug symbol ``.pdb`` file
+generated by the compiler while building source files.
+
+This is the configuration-specific version of :prop_tgt:`COMPILE_PDB_NAME`.
+
+.. |PDB_XXX| replace:: :prop_tgt:`PDB_NAME_<CONFIG>`
+.. include:: COMPILE_PDB_NOTE.txt
diff --git a/share/cmake-3.18/Help/prop_tgt/COMPILE_PDB_NOTE.txt b/share/cmake-3.22/Help/prop_tgt/COMPILE_PDB_NOTE.txt
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/COMPILE_PDB_NOTE.txt
rename to share/cmake-3.22/Help/prop_tgt/COMPILE_PDB_NOTE.txt
diff --git a/share/cmake-3.22/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY.rst b/share/cmake-3.22/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY.rst
new file mode 100644
index 0000000..3f3df66
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY.rst
@@ -0,0 +1,15 @@
+COMPILE_PDB_OUTPUT_DIRECTORY
+----------------------------
+
+.. versionadded:: 3.1
+
+Output directory for the MS debug symbol ``.pdb`` file
+generated by the compiler while building source files.
+
+This property specifies the directory into which the MS debug symbols
+will be placed by the compiler.  This property is initialized by the
+value of the :variable:`CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY` variable
+if it is set when a target is created.
+
+.. |PDB_XXX| replace:: :prop_tgt:`PDB_OUTPUT_DIRECTORY`
+.. include:: COMPILE_PDB_NOTE.txt
diff --git a/share/cmake-3.22/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
new file mode 100644
index 0000000..c25c2fc
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
@@ -0,0 +1,18 @@
+COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>
+-------------------------------------
+
+.. versionadded:: 3.1
+
+Per-configuration output directory for the MS debug symbol ``.pdb`` file
+generated by the compiler while building source files.
+
+This is a per-configuration version of
+:prop_tgt:`COMPILE_PDB_OUTPUT_DIRECTORY`,
+but multi-configuration generators (Visual Studio, Xcode) do NOT append a
+per-configuration subdirectory to the specified directory.  This
+property is initialized by the value of the
+:variable:`CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>` variable
+if it is set when a target is created.
+
+.. |PDB_XXX| replace:: :prop_tgt:`PDB_OUTPUT_DIRECTORY_<CONFIG>`
+.. include:: COMPILE_PDB_NOTE.txt
diff --git a/share/cmake-3.18/Help/prop_tgt/CONFIG_OUTPUT_NAME.rst b/share/cmake-3.22/Help/prop_tgt/CONFIG_OUTPUT_NAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/CONFIG_OUTPUT_NAME.rst
rename to share/cmake-3.22/Help/prop_tgt/CONFIG_OUTPUT_NAME.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/CONFIG_POSTFIX.rst b/share/cmake-3.22/Help/prop_tgt/CONFIG_POSTFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/CONFIG_POSTFIX.rst
rename to share/cmake-3.22/Help/prop_tgt/CONFIG_POSTFIX.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst b/share/cmake-3.22/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst
new file mode 100644
index 0000000..d7fb9b1
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst
@@ -0,0 +1,17 @@
+CROSSCOMPILING_EMULATOR
+-----------------------
+
+.. versionadded:: 3.3
+
+Use the given emulator to run executables created when crosscompiling.
+This command will be added as a prefix to :command:`add_test`,
+:command:`add_custom_command`, and :command:`add_custom_target` commands
+for built target system executables.
+
+If this property contains a :ref:`semicolon-separated list <CMake Language
+Lists>`, then the first value is the command and remaining values are its
+arguments.
+
+This property is initialized by the value of the
+:variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable if it is set when a target
+is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/CUDA_ARCHITECTURES.rst b/share/cmake-3.22/Help/prop_tgt/CUDA_ARCHITECTURES.rst
new file mode 100644
index 0000000..a3191e8
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/CUDA_ARCHITECTURES.rst
@@ -0,0 +1,42 @@
+CUDA_ARCHITECTURES
+------------------
+
+.. versionadded:: 3.18
+
+List of architectures to generate device code for.
+
+An architecture can be suffixed by either ``-real`` or ``-virtual`` to specify
+the kind of architecture to generate code for.
+If no suffix is given then code is generated for both real and virtual
+architectures.
+
+A non-empty false value (e.g. ``OFF``) disables adding architectures.
+This is intended to support packagers and rare cases where full control
+over the passed flags is required.
+
+This property is initialized by the value of the :variable:`CMAKE_CUDA_ARCHITECTURES`
+variable if it is set when a target is created.
+
+The ``CUDA_ARCHITECTURES`` target property must be set to a non-empty value on targets
+that compile CUDA sources, or it is an error.  See policy :policy:`CMP0104`.
+
+Examples
+^^^^^^^^
+
+.. code-block:: cmake
+
+  set_target_properties(tgt PROPERTIES CUDA_ARCHITECTURES "35;50;72")
+
+Generates code for real and virtual architectures ``30``, ``50`` and ``72``.
+
+.. code-block:: cmake
+
+  set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 70-real 72-virtual)
+
+Generates code for real architecture ``70`` and virtual architecture ``72``.
+
+.. code-block:: cmake
+
+  set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES OFF)
+
+CMake will not pass any architecture flags to the compiler.
diff --git a/share/cmake-3.22/Help/prop_tgt/CUDA_EXTENSIONS.rst b/share/cmake-3.22/Help/prop_tgt/CUDA_EXTENSIONS.rst
new file mode 100644
index 0000000..ab467ac
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/CUDA_EXTENSIONS.rst
@@ -0,0 +1,21 @@
+CUDA_EXTENSIONS
+---------------
+
+.. versionadded:: 3.8
+
+Boolean specifying whether compiler specific extensions are requested.
+
+This property specifies whether compiler specific extensions should be
+used.  For some compilers, this results in adding a flag such
+as ``-std=gnu++11`` instead of ``-std=c++11`` to the compile line.  This
+property is ``ON`` by default. The basic CUDA/C++ standard level is
+controlled by the :prop_tgt:`CUDA_STANDARD` target property.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_CUDA_EXTENSIONS` variable if set when a target is created
+and otherwise by the value of
+:variable:`CMAKE_CUDA_EXTENSIONS_DEFAULT <CMAKE_<LANG>_EXTENSIONS_DEFAULT>`
+(see :policy:`CMP0128`).
diff --git a/share/cmake-3.22/Help/prop_tgt/CUDA_PTX_COMPILATION.rst b/share/cmake-3.22/Help/prop_tgt/CUDA_PTX_COMPILATION.rst
new file mode 100644
index 0000000..4e90afe
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/CUDA_PTX_COMPILATION.rst
@@ -0,0 +1,14 @@
+CUDA_PTX_COMPILATION
+--------------------
+
+.. versionadded:: 3.9
+
+Compile CUDA sources to ``.ptx`` files instead of ``.obj`` files
+within :ref:`Object Libraries`.
+
+For example:
+
+.. code-block:: cmake
+
+  add_library(myptx OBJECT a.cu b.cu)
+  set_property(TARGET myptx PROPERTY CUDA_PTX_COMPILATION ON)
diff --git a/share/cmake-3.22/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst b/share/cmake-3.22/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst
new file mode 100644
index 0000000..819ce3e
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst
@@ -0,0 +1,27 @@
+CUDA_RESOLVE_DEVICE_SYMBOLS
+---------------------------
+
+.. versionadded:: 3.9
+
+CUDA only: Enables device linking for the specific library target where
+required.
+
+If set, this will tell the required compilers to enable device linking
+on the library target. Device linking is an additional link step
+required by some CUDA compilers when :prop_tgt:`CUDA_SEPARABLE_COMPILATION` is
+enabled. Normally device linking is deferred until a shared library or
+executable is generated, allowing for multiple static libraries to resolve
+device symbols at the same time when they are used by a shared library or
+executable.
+
+By default static library targets have this property is disabled,
+while shared, module, and executable targets have this property enabled.
+
+Note that device linking is not supported for :ref:`Object Libraries`.
+
+
+For instance:
+
+.. code-block:: cmake
+
+  set_property(TARGET mystaticlib PROPERTY CUDA_RESOLVE_DEVICE_SYMBOLS ON)
diff --git a/share/cmake-3.18/Help/prop_tgt/CUDA_RUNTIME_LIBRARY-VALUES.txt b/share/cmake-3.22/Help/prop_tgt/CUDA_RUNTIME_LIBRARY-VALUES.txt
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/CUDA_RUNTIME_LIBRARY-VALUES.txt
rename to share/cmake-3.22/Help/prop_tgt/CUDA_RUNTIME_LIBRARY-VALUES.txt
diff --git a/share/cmake-3.22/Help/prop_tgt/CUDA_RUNTIME_LIBRARY.rst b/share/cmake-3.22/Help/prop_tgt/CUDA_RUNTIME_LIBRARY.rst
new file mode 100644
index 0000000..e937fc6
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/CUDA_RUNTIME_LIBRARY.rst
@@ -0,0 +1,23 @@
+CUDA_RUNTIME_LIBRARY
+--------------------
+
+.. versionadded:: 3.17
+
+Select the CUDA runtime library for use by compilers targeting the CUDA language.
+
+The allowed case insensitive values are:
+
+.. include:: CUDA_RUNTIME_LIBRARY-VALUES.txt
+
+Contents of ``CUDA_RUNTIME_LIBRARY`` may use
+:manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+If that property is not set then CMake uses an appropriate default
+value based on the compiler to select the CUDA runtime library.
+
+.. note::
+
+  This property has effect only when the ``CUDA`` language is enabled. To
+  control the CUDA runtime linking when only using the CUDA SDK with the
+  ``C`` or ``C++`` language we recommend using the :module:`FindCUDAToolkit`
+  module.
diff --git a/share/cmake-3.22/Help/prop_tgt/CUDA_SEPARABLE_COMPILATION.rst b/share/cmake-3.22/Help/prop_tgt/CUDA_SEPARABLE_COMPILATION.rst
new file mode 100644
index 0000000..32222f9
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/CUDA_SEPARABLE_COMPILATION.rst
@@ -0,0 +1,19 @@
+CUDA_SEPARABLE_COMPILATION
+--------------------------
+
+.. versionadded:: 3.8
+
+CUDA only: Enables separate compilation of device code
+
+If set this will enable separable compilation for all CUDA files for
+the given target.
+
+For instance:
+
+.. code-block:: cmake
+
+  set_property(TARGET myexe PROPERTY CUDA_SEPARABLE_COMPILATION ON)
+
+This property is initialized by the value of the
+:variable:`CMAKE_CUDA_SEPARABLE_COMPILATION` variable if it is set when a
+target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/CUDA_STANDARD.rst b/share/cmake-3.22/Help/prop_tgt/CUDA_STANDARD.rst
new file mode 100644
index 0000000..950ba12
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/CUDA_STANDARD.rst
@@ -0,0 +1,62 @@
+CUDA_STANDARD
+-------------
+
+.. versionadded:: 3.8
+
+The CUDA/C++ standard whose features are requested to build this target.
+
+This property specifies the CUDA/C++ standard whose features are requested
+to build this target.  For some compilers, this results in adding a
+flag such as ``-std=gnu++11`` to the compile line.
+
+Supported values are:
+
+``98``
+  CUDA C++98. Note that this maps to the same as ``03`` internally.
+
+``03``
+  CUDA C++03
+
+``11``
+  CUDA C++11
+
+``14``
+  CUDA C++14. While CMake 3.8 and later *recognize* ``14`` as a valid value,
+  CMake 3.9 was the first version to include support for any compiler.
+
+``17``
+  CUDA C++17. While CMake 3.8 and later *recognize* ``17`` as a valid value,
+  CMake 3.18 was the first version to include support for any compiler.
+
+``20``
+  .. versionadded:: 3.12
+
+  CUDA C++20. While CMake 3.12 and later *recognize* ``20`` as a valid value,
+  CMake 3.18 was the first version to include support for any compiler.
+
+``23``
+  .. versionadded:: 3.20
+
+  CUDA C++23
+
+If the value requested does not result in a compile flag being added for
+the compiler in use, a previous standard flag will be added instead.  This
+means that using:
+
+.. code-block:: cmake
+
+  set_property(TARGET tgt PROPERTY CUDA_STANDARD 11)
+
+with a compiler which does not support ``-std=gnu++11`` or an equivalent
+flag will not result in an error or warning, but will instead add the
+``-std=gnu++03`` flag if supported.  This "decay" behavior may be controlled
+with the :prop_tgt:`CUDA_STANDARD_REQUIRED` target property.
+Additionally, the :prop_tgt:`CUDA_EXTENSIONS` target property may be used to
+control whether compiler-specific extensions are enabled on a per-target basis.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_CUDA_STANDARD` variable if it is set when a target
+is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/CUDA_STANDARD_REQUIRED.rst b/share/cmake-3.22/Help/prop_tgt/CUDA_STANDARD_REQUIRED.rst
new file mode 100644
index 0000000..c9301b5
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/CUDA_STANDARD_REQUIRED.rst
@@ -0,0 +1,20 @@
+CUDA_STANDARD_REQUIRED
+----------------------
+
+.. versionadded:: 3.8
+
+Boolean describing whether the value of :prop_tgt:`CUDA_STANDARD` is a requirement.
+
+If this property is set to ``ON``, then the value of the
+:prop_tgt:`CUDA_STANDARD` target property is treated as a requirement.  If this
+property is ``OFF`` or unset, the :prop_tgt:`CUDA_STANDARD` target property is
+treated as optional and may "decay" to a previous standard if the requested is
+not available.  For compilers that have no notion of a standard level, such as
+MSVC 1800 (Visual Studio 2013) and lower, this has no effect.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_CUDA_STANDARD_REQUIRED` variable if it is set when a
+target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/CXX_EXTENSIONS.rst b/share/cmake-3.22/Help/prop_tgt/CXX_EXTENSIONS.rst
new file mode 100644
index 0000000..9b52504
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/CXX_EXTENSIONS.rst
@@ -0,0 +1,21 @@
+CXX_EXTENSIONS
+--------------
+
+.. versionadded:: 3.1
+
+Boolean specifying whether compiler specific extensions are requested.
+
+This property specifies whether compiler specific extensions should be
+used.  For some compilers, this results in adding a flag such
+as ``-std=gnu++11`` instead of ``-std=c++11`` to the compile line.  This
+property is ``ON`` by default. The basic C++ standard level is
+controlled by the :prop_tgt:`CXX_STANDARD` target property.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_CXX_EXTENSIONS` variable if set when a target is created
+and otherwise by the value of
+:variable:`CMAKE_CXX_EXTENSIONS_DEFAULT <CMAKE_<LANG>_EXTENSIONS_DEFAULT>` (see
+:policy:`CMP0128`).
diff --git a/share/cmake-3.22/Help/prop_tgt/CXX_STANDARD.rst b/share/cmake-3.22/Help/prop_tgt/CXX_STANDARD.rst
new file mode 100644
index 0000000..b10d201
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/CXX_STANDARD.rst
@@ -0,0 +1,60 @@
+CXX_STANDARD
+------------
+
+.. versionadded:: 3.1
+
+The C++ standard whose features are requested to build this target.
+
+This property specifies the C++ standard whose features are requested
+to build this target.  For some compilers, this results in adding a
+flag such as ``-std=gnu++11`` to the compile line.  For compilers that
+have no notion of a standard level, such as Microsoft Visual C++ before
+2015 Update 3, this has no effect.
+
+Supported values are:
+
+``98``
+  C++98
+
+``11``
+  C++11
+
+``14``
+  C++14
+
+``17``
+  .. versionadded:: 3.8
+
+  C++17
+
+``20``
+  .. versionadded:: 3.12
+
+  C++20
+
+``23``
+  .. versionadded:: 3.20
+
+  C++23
+
+If the value requested does not result in a compile flag being added for
+the compiler in use, a previous standard flag will be added instead.  This
+means that using:
+
+.. code-block:: cmake
+
+  set_property(TARGET tgt PROPERTY CXX_STANDARD 11)
+
+with a compiler which does not support ``-std=gnu++11`` or an equivalent
+flag will not result in an error or warning, but will instead add the
+``-std=gnu++98`` flag if supported.  This "decay" behavior may be controlled
+with the :prop_tgt:`CXX_STANDARD_REQUIRED` target property.
+Additionally, the :prop_tgt:`CXX_EXTENSIONS` target property may be used to
+control whether compiler-specific extensions are enabled on a per-target basis.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_CXX_STANDARD` variable if it is set when a target
+is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/CXX_STANDARD_REQUIRED.rst b/share/cmake-3.22/Help/prop_tgt/CXX_STANDARD_REQUIRED.rst
new file mode 100644
index 0000000..8b17490
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/CXX_STANDARD_REQUIRED.rst
@@ -0,0 +1,20 @@
+CXX_STANDARD_REQUIRED
+---------------------
+
+.. versionadded:: 3.1
+
+Boolean describing whether the value of :prop_tgt:`CXX_STANDARD` is a requirement.
+
+If this property is set to ``ON``, then the value of the
+:prop_tgt:`CXX_STANDARD` target property is treated as a requirement.  If this
+property is ``OFF`` or unset, the :prop_tgt:`CXX_STANDARD` target property is
+treated as optional and may "decay" to a previous standard if the requested is
+not available.  For compilers that have no notion of a standard level, such as
+MSVC 1800 (Visual Studio 2013) and lower, this has no effect.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_CXX_STANDARD_REQUIRED` variable if it is set when a
+target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/C_EXTENSIONS.rst b/share/cmake-3.22/Help/prop_tgt/C_EXTENSIONS.rst
new file mode 100644
index 0000000..a53090c
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/C_EXTENSIONS.rst
@@ -0,0 +1,21 @@
+C_EXTENSIONS
+------------
+
+.. versionadded:: 3.1
+
+Boolean specifying whether compiler specific extensions are requested.
+
+This property specifies whether compiler specific extensions should be
+used.  For some compilers, this results in adding a flag such
+as ``-std=gnu11`` instead of ``-std=c11`` to the compile line.  This
+property is ``ON`` by default. The basic C standard level is
+controlled by the :prop_tgt:`C_STANDARD` target property.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_C_EXTENSIONS` variable if set when a target is created and
+otherwise by the value of
+:variable:`CMAKE_C_EXTENSIONS_DEFAULT <CMAKE_<LANG>_EXTENSIONS_DEFAULT>` (see
+:policy:`CMP0128`).
diff --git a/share/cmake-3.22/Help/prop_tgt/C_STANDARD.rst b/share/cmake-3.22/Help/prop_tgt/C_STANDARD.rst
new file mode 100644
index 0000000..ecba2a8
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/C_STANDARD.rst
@@ -0,0 +1,55 @@
+C_STANDARD
+----------
+
+.. versionadded:: 3.1
+
+The C standard whose features are requested to build this target.
+
+This property specifies the C standard whose features are requested
+to build this target.  For some compilers, this results in adding a
+flag such as ``-std=gnu11`` to the compile line.  For compilers that
+have no notion of a C standard level, such as Microsoft Visual C++ before
+VS 16.7, this property has no effect.
+
+Supported values are:
+
+``90``
+  C89/C90
+
+``99``
+  C99
+
+``11``
+  C11
+
+``17``
+  .. versionadded:: 3.21
+
+  C17
+
+``23``
+  .. versionadded:: 3.21
+
+  C23
+
+If the value requested does not result in a compile flag being added for
+the compiler in use, a previous standard flag will be added instead.  This
+means that using:
+
+.. code-block:: cmake
+
+  set_property(TARGET tgt PROPERTY C_STANDARD 11)
+
+with a compiler which does not support ``-std=gnu11`` or an equivalent
+flag will not result in an error or warning, but will instead add the
+``-std=gnu99`` or ``-std=gnu90`` flag if supported.  This "decay" behavior may
+be controlled with the :prop_tgt:`C_STANDARD_REQUIRED` target property.
+Additionally, the :prop_tgt:`C_EXTENSIONS` target property may be used to
+control whether compiler-specific extensions are enabled on a per-target basis.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_C_STANDARD` variable if it is set when a target
+is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/C_STANDARD_REQUIRED.rst b/share/cmake-3.22/Help/prop_tgt/C_STANDARD_REQUIRED.rst
new file mode 100644
index 0000000..8059e3a
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/C_STANDARD_REQUIRED.rst
@@ -0,0 +1,20 @@
+C_STANDARD_REQUIRED
+-------------------
+
+.. versionadded:: 3.1
+
+Boolean describing whether the value of :prop_tgt:`C_STANDARD` is a requirement.
+
+If this property is set to ``ON``, then the value of the
+:prop_tgt:`C_STANDARD` target property is treated as a requirement.  If this
+property is ``OFF`` or unset, the :prop_tgt:`C_STANDARD` target property is
+treated as optional and may "decay" to a previous standard if the requested is
+not available.  For compilers that have no notion of a C standard level, such
+as Microsoft Visual C++ before VS 16.7, this property has no effect.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_C_STANDARD_REQUIRED` variable if it is set when a
+target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/DEBUG_POSTFIX.rst b/share/cmake-3.22/Help/prop_tgt/DEBUG_POSTFIX.rst
new file mode 100644
index 0000000..eca7cb0
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/DEBUG_POSTFIX.rst
@@ -0,0 +1,7 @@
+DEBUG_POSTFIX
+-------------
+
+See target property :prop_tgt:`<CONFIG>_POSTFIX`.
+
+This property is a special case of the more-general :prop_tgt:`<CONFIG>_POSTFIX`
+property for the ``DEBUG`` configuration.
diff --git a/share/cmake-3.18/Help/prop_tgt/DEFINE_SYMBOL.rst b/share/cmake-3.22/Help/prop_tgt/DEFINE_SYMBOL.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/DEFINE_SYMBOL.rst
rename to share/cmake-3.22/Help/prop_tgt/DEFINE_SYMBOL.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/DEPLOYMENT_ADDITIONAL_FILES.rst b/share/cmake-3.22/Help/prop_tgt/DEPLOYMENT_ADDITIONAL_FILES.rst
new file mode 100644
index 0000000..f11fe7c
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/DEPLOYMENT_ADDITIONAL_FILES.rst
@@ -0,0 +1,20 @@
+DEPLOYMENT_ADDITIONAL_FILES
+---------------------------
+
+.. versionadded:: 3.13
+
+Set the WinCE project ``AdditionalFiles`` in ``DeploymentTool`` in ``.vcproj``
+files generated by the :generator:`Visual Studio 9 2008` generator.
+This is useful when you want to debug on remote WinCE device.
+Specify additional files that will be copied to the device.
+For example:
+
+.. code-block:: cmake
+
+  set_property(TARGET ${TARGET} PROPERTY
+    DEPLOYMENT_ADDITIONAL_FILES "english.lng|local_folder|remote_folder|0"
+    "german.lng|local_folder|remote_folder|0")
+
+produces::
+
+  <DeploymentTool AdditionalFiles="english.lng|local_folder|remote_folder|0;german.lng|local_folder|remote_folder|0" ... />
diff --git a/share/cmake-3.22/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst b/share/cmake-3.22/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst
new file mode 100644
index 0000000..0680238
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst
@@ -0,0 +1,20 @@
+DEPLOYMENT_REMOTE_DIRECTORY
+---------------------------
+
+.. versionadded:: 3.6
+
+Set the WinCE project ``RemoteDirectory`` in ``DeploymentTool`` and
+``RemoteExecutable`` in ``DebuggerTool`` in ``.vcproj`` files generated
+by the :generator:`Visual Studio 9 2008` generator.
+This is useful when you want to debug on remote WinCE device.
+For example:
+
+.. code-block:: cmake
+
+  set_property(TARGET ${TARGET} PROPERTY
+    DEPLOYMENT_REMOTE_DIRECTORY "\\FlashStorage")
+
+produces::
+
+  <DeploymentTool RemoteDirectory="\FlashStorage" ... />
+  <DebuggerTool RemoteExecutable="\FlashStorage\target_file" ... />
diff --git a/share/cmake-3.22/Help/prop_tgt/DEPRECATION.rst b/share/cmake-3.22/Help/prop_tgt/DEPRECATION.rst
new file mode 100644
index 0000000..45ca848
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/DEPRECATION.rst
@@ -0,0 +1,9 @@
+DEPRECATION
+-----------
+
+.. versionadded:: 3.17
+
+Deprecation message from imported target's developer.
+
+``DEPRECATION`` is the message regarding a deprecation status to be displayed
+to downstream users of a target.
diff --git a/share/cmake-3.22/Help/prop_tgt/DISABLE_PRECOMPILE_HEADERS.rst b/share/cmake-3.22/Help/prop_tgt/DISABLE_PRECOMPILE_HEADERS.rst
new file mode 100644
index 0000000..7b3826b
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/DISABLE_PRECOMPILE_HEADERS.rst
@@ -0,0 +1,10 @@
+DISABLE_PRECOMPILE_HEADERS
+--------------------------
+
+.. versionadded:: 3.16
+
+Disables the precompilation of header files specified by
+:prop_tgt:`PRECOMPILE_HEADERS` property.
+
+If the property is not set, CMake will use the value provided
+by :variable:`CMAKE_DISABLE_PRECOMPILE_HEADERS`.
diff --git a/share/cmake-3.22/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK.rst b/share/cmake-3.22/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK.rst
new file mode 100644
index 0000000..3ba4e25
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK.rst
@@ -0,0 +1,15 @@
+DOTNET_TARGET_FRAMEWORK
+-----------------------
+
+.. versionadded:: 3.17
+
+Specify the .NET target framework.
+
+Used to specify the .NET target framework for C++/CLI and C#.  For
+example: ``netcoreapp2.1``.
+
+This property is only evaluated for :ref:`Visual Studio Generators`
+VS 2010 and above.
+
+Can be initialized for all targets using the variable
+:variable:`CMAKE_DOTNET_TARGET_FRAMEWORK`.
diff --git a/share/cmake-3.22/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK_VERSION.rst b/share/cmake-3.22/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK_VERSION.rst
new file mode 100644
index 0000000..fbd1aab
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK_VERSION.rst
@@ -0,0 +1,17 @@
+DOTNET_TARGET_FRAMEWORK_VERSION
+-------------------------------
+
+.. versionadded:: 3.12
+
+Specify the .NET target framework version.
+
+Used to specify the .NET target framework version for C++/CLI and C#.
+For example: ``v4.5``.
+
+This property is only evaluated for :ref:`Visual Studio Generators`
+VS 2010 and above.
+
+To initialize this variable for all targets set
+:variable:`CMAKE_DOTNET_TARGET_FRAMEWORK` or
+:variable:`CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION`. If both are set,
+the latter is ignored.
diff --git a/share/cmake-3.18/Help/prop_tgt/ENABLE_EXPORTS.rst b/share/cmake-3.22/Help/prop_tgt/ENABLE_EXPORTS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/ENABLE_EXPORTS.rst
rename to share/cmake-3.22/Help/prop_tgt/ENABLE_EXPORTS.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/EXCLUDE_FROM_ALL.rst b/share/cmake-3.22/Help/prop_tgt/EXCLUDE_FROM_ALL.rst
new file mode 100644
index 0000000..f0200f3
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/EXCLUDE_FROM_ALL.rst
@@ -0,0 +1,28 @@
+EXCLUDE_FROM_ALL
+----------------
+
+Set this target property to a true (or false) value to exclude (or include)
+the target from the "all" target of the containing directory and its
+ancestors.  If excluded, running e.g. ``make`` in the containing directory
+or its ancestors will not build the target by default.
+
+If this target property is not set then the target will be included in
+the "all" target of the containing directory.  Furthermore, it will be
+included in the "all" target of its ancestor directories unless the
+:prop_dir:`EXCLUDE_FROM_ALL` directory property is set.
+
+With ``EXCLUDE_FROM_ALL`` set to false or not set at all, the target
+will be brought up to date as part of doing a ``make install`` or its
+equivalent for the CMake generator being used.
+
+If a target has ``EXCLUDE_FROM_ALL`` set to true, it may still be listed
+in an :command:`install(TARGETS)` command, but the user is responsible for
+ensuring that the target's build artifacts are not missing or outdated when
+an install is performed.
+
+This property may use "generator expressions" with the syntax ``$<...>``. See
+the :manual:`cmake-generator-expressions(7)` manual for available expressions.
+
+Only the "Ninja Multi-Config" generator supports a property value that varies by
+configuration.  For all other generators the value of this property must be the
+same for all configurations.
diff --git a/share/cmake-3.18/Help/prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD.rst b/share/cmake-3.22/Help/prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD.rst
rename to share/cmake-3.22/Help/prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD_CONFIG.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/EXPORT_COMPILE_COMMANDS.rst b/share/cmake-3.22/Help/prop_tgt/EXPORT_COMPILE_COMMANDS.rst
new file mode 100644
index 0000000..0b1145c
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/EXPORT_COMPILE_COMMANDS.rst
@@ -0,0 +1,9 @@
+EXPORT_COMPILE_COMMANDS
+-----------------------
+
+.. versionadded:: 3.20
+
+Enable/Disable output of compile commands during generation for a target.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_EXPORT_COMPILE_COMMANDS` if it is set when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/EXPORT_NAME.rst b/share/cmake-3.22/Help/prop_tgt/EXPORT_NAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/EXPORT_NAME.rst
rename to share/cmake-3.22/Help/prop_tgt/EXPORT_NAME.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/EXPORT_PROPERTIES.rst b/share/cmake-3.22/Help/prop_tgt/EXPORT_PROPERTIES.rst
new file mode 100644
index 0000000..2d54f8b
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/EXPORT_PROPERTIES.rst
@@ -0,0 +1,24 @@
+EXPORT_PROPERTIES
+-----------------
+
+.. versionadded:: 3.12
+
+List additional properties to export for a target.
+
+This property contains a list of property names that should be exported by
+the :command:`install(EXPORT)` and :command:`export` commands.  By default
+only a limited number of properties are exported. This property can be used
+to additionally export other properties as well.
+
+Properties starting with ``INTERFACE_`` or ``IMPORTED_`` are not allowed as
+they are reserved for internal CMake use.
+
+Properties containing generator expressions are also not allowed.
+
+.. note::
+
+  Since CMake 3.19, :ref:`Interface Libraries` may have arbitrary
+  target properties.  If a project exports an interface library
+  with custom properties, the resulting package may not work with
+  dependents configured by older versions of CMake that reject the
+  custom properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/EchoString.rst b/share/cmake-3.22/Help/prop_tgt/EchoString.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/EchoString.rst
rename to share/cmake-3.22/Help/prop_tgt/EchoString.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/FOLDER.rst b/share/cmake-3.22/Help/prop_tgt/FOLDER.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/FOLDER.rst
rename to share/cmake-3.22/Help/prop_tgt/FOLDER.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/FRAMEWORK.rst b/share/cmake-3.22/Help/prop_tgt/FRAMEWORK.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/FRAMEWORK.rst
rename to share/cmake-3.22/Help/prop_tgt/FRAMEWORK.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst
new file mode 100644
index 0000000..84d0c1e
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst
@@ -0,0 +1,28 @@
+FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>
+---------------------------------------
+
+.. versionadded:: 3.18
+
+Postfix to append to the framework file name for configuration ``<CONFIG>``,
+when using a multi-config generator (like Xcode and Ninja Multi-Config).
+
+When building with configuration ``<CONFIG>`` the value of this property
+is appended to the framework file name built on disk.
+
+For example, given a framework called ``my_fw``, a value of ``_debug``
+for the ``FRAMEWORK_MULTI_CONFIG_POSTFIX_DEBUG`` property, and
+``Debug;Release`` in :variable:`CMAKE_CONFIGURATION_TYPES`, the following
+relevant files would be created for the ``Debug`` and ``Release``
+configurations:
+
+- ``Release/my_fw.framework/my_fw``
+- ``Release/my_fw.framework/Versions/A/my_fw``
+- ``Debug/my_fw.framework/my_fw_debug``
+- ``Debug/my_fw.framework/Versions/A/my_fw_debug``
+
+For framework targets, this property is initialized by the value of the
+:variable:`CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>` variable if it
+is set when a target is created.
+
+This property is ignored for non-framework targets, and when using single
+config generators.
diff --git a/share/cmake-3.22/Help/prop_tgt/FRAMEWORK_VERSION.rst b/share/cmake-3.22/Help/prop_tgt/FRAMEWORK_VERSION.rst
new file mode 100644
index 0000000..38b8137
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/FRAMEWORK_VERSION.rst
@@ -0,0 +1,10 @@
+FRAMEWORK_VERSION
+-----------------
+
+.. versionadded:: 3.4
+
+Version of a framework created using the :prop_tgt:`FRAMEWORK` target
+property (e.g. ``A``).
+
+This property only affects macOS, as iOS doesn't have versioned
+directory structure.
diff --git a/share/cmake-3.22/Help/prop_tgt/Fortran_BUILDING_INSTRINSIC_MODULES.rst b/share/cmake-3.22/Help/prop_tgt/Fortran_BUILDING_INSTRINSIC_MODULES.rst
new file mode 100644
index 0000000..3533ef9
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/Fortran_BUILDING_INSTRINSIC_MODULES.rst
@@ -0,0 +1,16 @@
+Fortran_BUILDING_INSTRINSIC_MODULES
+-----------------------------------
+
+.. versionadded:: 3.22
+
+Instructs the CMake Fortran preprocessor that the target is building
+Fortran intrinsics for building a Fortran compiler.
+
+This property is off by default and should be turned only on projects
+that build a Fortran compiler. It should not be turned on for projects
+that use a Fortran compiler.
+
+Turning this property on will correctly add dependencies for building
+Fortran intrinsic modules whereas turning the property off will ignore
+Fortran intrinsic modules in the dependency graph as they are supplied
+by the compiler itself.
diff --git a/share/cmake-3.18/Help/prop_tgt/Fortran_FORMAT.rst b/share/cmake-3.22/Help/prop_tgt/Fortran_FORMAT.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/Fortran_FORMAT.rst
rename to share/cmake-3.22/Help/prop_tgt/Fortran_FORMAT.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/Fortran_MODULE_DIRECTORY.rst b/share/cmake-3.22/Help/prop_tgt/Fortran_MODULE_DIRECTORY.rst
new file mode 100644
index 0000000..84029e4
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/Fortran_MODULE_DIRECTORY.rst
@@ -0,0 +1,25 @@
+Fortran_MODULE_DIRECTORY
+------------------------
+
+Specify output directory for Fortran modules provided by the target.
+
+If the target contains Fortran source files that provide modules and
+the compiler supports a module output directory this specifies the
+directory in which the modules will be placed.  When this property is
+not set the modules will be placed in the build directory
+corresponding to the target's source directory.  If the variable
+:variable:`CMAKE_Fortran_MODULE_DIRECTORY` is set when a target is created its
+value is used to initialize this property.
+
+When using one of the :ref:`Visual Studio Generators` with the Intel Fortran
+plugin installed in Visual Studio, a subdirectory named after the
+configuration will be appended to the path where modules are created.
+For example, if ``Fortran_MODULE_DIRECTORY`` is set to ``C:/some/path``,
+modules will end up in ``C:/some/path/Debug`` (or
+``C:/some/path/Release`` etc.) when an Intel Fortran ``.vfproj`` file is
+generated, and in ``C:/some/path`` when any other generator is used.
+
+Note that some compilers will automatically search the module output
+directory for modules USEd during compilation but others will not.  If
+your sources USE modules their location must be specified by
+:prop_tgt:`INCLUDE_DIRECTORIES` regardless of this property.
diff --git a/share/cmake-3.22/Help/prop_tgt/Fortran_PREPROCESS.rst b/share/cmake-3.22/Help/prop_tgt/Fortran_PREPROCESS.rst
new file mode 100644
index 0000000..e7e2fba
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/Fortran_PREPROCESS.rst
@@ -0,0 +1,25 @@
+Fortran_PREPROCESS
+------------------
+
+.. versionadded:: 3.18
+
+Control whether the Fortran source file should be unconditionally
+preprocessed.
+
+If unset or empty, rely on the compiler to determine whether the file
+should be preprocessed. If explicitly set to ``OFF`` then the file does not
+need to be preprocessed. If explicitly set to ``ON``, then the file does
+need to be preprocessed as part of the compilation step.
+
+When using the :generator:`Ninja` generator, all source files are
+first preprocessed in order to generate module dependency
+information. Setting this property to ``OFF`` will make ``Ninja``
+skip this step.
+
+Use the source-specific :prop_sf:`Fortran_PREPROCESS` property if a single
+file needs to be preprocessed. If the variable
+:variable:`CMAKE_Fortran_PREPROCESS` is set when a target is created its
+value is used to initialize this property.
+
+.. note:: For some compilers, ``NAG``, ``PGI`` and ``Solaris Studio``,
+          setting this to ``OFF`` will have no effect.
diff --git a/share/cmake-3.18/Help/prop_tgt/GENERATOR_FILE_NAME.rst b/share/cmake-3.22/Help/prop_tgt/GENERATOR_FILE_NAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/GENERATOR_FILE_NAME.rst
rename to share/cmake-3.22/Help/prop_tgt/GENERATOR_FILE_NAME.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/GHS_INTEGRITY_APP.rst b/share/cmake-3.22/Help/prop_tgt/GHS_INTEGRITY_APP.rst
new file mode 100644
index 0000000..cccd087
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/GHS_INTEGRITY_APP.rst
@@ -0,0 +1,12 @@
+GHS_INTEGRITY_APP
+-----------------
+
+.. versionadded:: 3.14
+
+``ON`` / ``OFF`` boolean to determine if an executable target should
+be treated as an `Integrity Application`.
+
+If no value is set and if a ``.int`` file is added as a source file to the
+executable target it will be treated as an `Integrity Application`.
+
+Supported on :generator:`Green Hills MULTI`.
diff --git a/share/cmake-3.22/Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst b/share/cmake-3.22/Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst
new file mode 100644
index 0000000..fe6b8e6
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst
@@ -0,0 +1,15 @@
+GHS_NO_SOURCE_GROUP_FILE
+------------------------
+
+.. versionadded:: 3.14
+
+``ON`` / ``OFF`` boolean to control if the project file for a target should
+be one single file or multiple files.
+
+The default behavior or when the property is ``OFF`` is to generate a project
+file for the target and then a sub-project file for each source group.
+
+When this property is ``ON`` or if :variable:`CMAKE_GHS_NO_SOURCE_GROUP_FILE`
+is ``ON`` then only a single project file is generated for the target.
+
+Supported on :generator:`Green Hills MULTI`.
diff --git a/share/cmake-3.18/Help/prop_tgt/GNUtoMS.rst b/share/cmake-3.22/Help/prop_tgt/GNUtoMS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/GNUtoMS.rst
rename to share/cmake-3.22/Help/prop_tgt/GNUtoMS.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/HAS_CXX.rst b/share/cmake-3.22/Help/prop_tgt/HAS_CXX.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/HAS_CXX.rst
rename to share/cmake-3.22/Help/prop_tgt/HAS_CXX.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/HIP_ARCHITECTURES.rst b/share/cmake-3.22/Help/prop_tgt/HIP_ARCHITECTURES.rst
new file mode 100644
index 0000000..06f956b
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/HIP_ARCHITECTURES.rst
@@ -0,0 +1,27 @@
+HIP_ARCHITECTURES
+-----------------
+
+.. versionadded:: 3.21
+
+List of AMD GPU architectures to generate device code for.
+
+A non-empty false value (e.g. ``OFF``) disables adding architectures.
+This is intended to support packagers and rare cases where full control
+over the passed flags is required.
+
+This property is initialized by the value of the :variable:`CMAKE_HIP_ARCHITECTURES`
+variable if it is set when a target is created.
+
+The HIP compilation model has two modes: whole and separable. Whole compilation
+generates device code at compile time. Separable compilation generates device
+code at link time. Therefore the ``HIP_ARCHITECTURES`` target property should
+be set on targets that compile or link with any HIP sources.
+
+Examples
+^^^^^^^^
+
+.. code-block:: cmake
+
+  set_property(TARGET tgt PROPERTY HIP_ARCHITECTURES gfx801 gfx900)
+
+Generates code for both ``gfx801`` and ``gfx900``.
diff --git a/share/cmake-3.22/Help/prop_tgt/HIP_EXTENSIONS.rst b/share/cmake-3.22/Help/prop_tgt/HIP_EXTENSIONS.rst
new file mode 100644
index 0000000..d1475c9
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/HIP_EXTENSIONS.rst
@@ -0,0 +1,21 @@
+HIP_EXTENSIONS
+--------------
+
+.. versionadded:: 3.21
+
+Boolean specifying whether compiler specific extensions are requested.
+
+This property specifies whether compiler specific extensions should be
+used.  For some compilers, this results in adding a flag such
+as ``-std=gnu++11`` instead of ``-std=c++11`` to the compile line.  This
+property is ``ON`` by default. The basic HIP/C++ standard level is
+controlled by the :prop_tgt:`HIP_STANDARD` target property.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_HIP_EXTENSIONS` variable if set when a target is created
+and otherwise by the value of
+:variable:`CMAKE_HIP_EXTENSIONS_DEFAULT <CMAKE_<LANG>_EXTENSIONS_DEFAULT>` (see
+:policy:`CMP0128`).
diff --git a/share/cmake-3.22/Help/prop_tgt/HIP_STANDARD.rst b/share/cmake-3.22/Help/prop_tgt/HIP_STANDARD.rst
new file mode 100644
index 0000000..0c767c6
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/HIP_STANDARD.rst
@@ -0,0 +1,48 @@
+HIP_STANDARD
+------------
+
+.. versionadded:: 3.21
+
+The HIP/C++ standard requested to build this target.
+
+Supported values are:
+
+``98``
+  HIP C++98
+
+``11``
+  HIP C++11
+
+``14``
+  HIP C++14
+
+``17``
+  HIP C++17
+
+``20``
+  HIP C++20
+
+``23``
+  HIP C++23
+
+If the value requested does not result in a compile flag being added for
+the compiler in use, a previous standard flag will be added instead.  This
+means that using:
+
+.. code-block:: cmake
+
+  set_property(TARGET tgt PROPERTY HIP_STANDARD 11)
+
+with a compiler which does not support ``-std=gnu++11`` or an equivalent
+flag will not result in an error or warning, but will instead add the
+``-std=gnu++98`` flag if supported.  This "decay" behavior may be controlled
+with the :prop_tgt:`HIP_STANDARD_REQUIRED` target property.
+Additionally, the :prop_tgt:`HIP_EXTENSIONS` target property may be used to
+control whether compiler-specific extensions are enabled on a per-target basis.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_HIP_STANDARD` variable if it is set when a target
+is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/HIP_STANDARD_REQUIRED.rst b/share/cmake-3.22/Help/prop_tgt/HIP_STANDARD_REQUIRED.rst
new file mode 100644
index 0000000..e56209a
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/HIP_STANDARD_REQUIRED.rst
@@ -0,0 +1,19 @@
+HIP_STANDARD_REQUIRED
+---------------------
+
+.. versionadded:: 3.21
+
+Boolean describing whether the value of :prop_tgt:`HIP_STANDARD` is a requirement.
+
+If this property is set to ``ON``, then the value of the
+:prop_tgt:`HIP_STANDARD` target property is treated as a requirement.  If this
+property is ``OFF`` or unset, the :prop_tgt:`HIP_STANDARD` target property is
+treated as optional and may "decay" to a previous standard if the requested is
+not available.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_HIP_STANDARD_REQUIRED` variable if it is set when a
+target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst b/share/cmake-3.22/Help/prop_tgt/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst
new file mode 100644
index 0000000..f7e366a
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst
@@ -0,0 +1,32 @@
+IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
+----------------------------------
+
+Specify ``#include`` line transforms for dependencies in a target.
+
+This property specifies rules to transform macro-like ``#include`` lines
+during implicit dependency scanning of C and C++ source files.  The
+list of rules must be semicolon-separated with each entry of the form
+``A_MACRO(%)=value-with-%`` (the ``%`` must be literal).  During dependency
+scanning occurrences of ``A_MACRO(...)`` on ``#include`` lines will be
+replaced by the value given with the macro argument substituted for
+``%``.  For example, the entry
+
+::
+
+  MYDIR(%)=<mydir/%>
+
+will convert lines of the form
+
+::
+
+  #include MYDIR(myheader.h)
+
+to
+
+::
+
+  #include <mydir/myheader.h>
+
+allowing the dependency to be followed.
+
+This property applies to sources in the target on which it is set.
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/IMPORTED_COMMON_LANGUAGE_RUNTIME.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_COMMON_LANGUAGE_RUNTIME.rst
new file mode 100644
index 0000000..8c20e07
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/IMPORTED_COMMON_LANGUAGE_RUNTIME.rst
@@ -0,0 +1,10 @@
+IMPORTED_COMMON_LANGUAGE_RUNTIME
+--------------------------------
+
+.. versionadded:: 3.12
+
+Property to define if the target uses ``C++/CLI``.
+
+Ignored for non-imported targets.
+
+See also the :prop_tgt:`COMMON_LANGUAGE_RUNTIME` target property.
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_CONFIGURATIONS.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_CONFIGURATIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED_CONFIGURATIONS.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED_CONFIGURATIONS.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/IMPORTED_GLOBAL.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_GLOBAL.rst
new file mode 100644
index 0000000..176127f
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/IMPORTED_GLOBAL.rst
@@ -0,0 +1,32 @@
+IMPORTED_GLOBAL
+---------------
+
+.. versionadded:: 3.11
+
+Indication of whether an :ref:`IMPORTED target <Imported Targets>` is
+globally visible.
+
+The boolean value of this property is True for targets created with the
+``IMPORTED`` ``GLOBAL`` options to :command:`add_executable()` or
+:command:`add_library()`. It is always False for targets built within the
+project.
+
+For targets created with the ``IMPORTED`` option to
+:command:`add_executable()` or :command:`add_library()` but without the
+additional option ``GLOBAL`` this is False, too. However, setting this
+property for such a locally ``IMPORTED`` target to True promotes that
+target to global scope. This promotion can only be done in the same
+directory where that ``IMPORTED`` target was created in the first place.
+
+.. note::
+
+  Once an imported target has been made global, it cannot be changed back to
+  non-global. Therefore, if a project sets this property, it may only
+  provide a value of True. CMake will issue an error if the project tries to
+  set the property to a non-True value, even if the value was already False.
+
+.. note::
+
+  Local :ref:`ALIAS targets <Alias Targets>` created before promoting an
+  :ref:`IMPORTED target <Imported Targets>` from ``LOCAL`` to ``GLOBAL``, keep
+  their initial scope (see :prop_tgt:`ALIAS_GLOBAL` target property).
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_IMPLIB.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_IMPLIB.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED_IMPLIB.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED_IMPLIB.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_IMPLIB_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_IMPLIB_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED_IMPLIB_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED_IMPLIB_CONFIG.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/IMPORTED_LIBNAME.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_LIBNAME.rst
new file mode 100644
index 0000000..7a83906
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/IMPORTED_LIBNAME.rst
@@ -0,0 +1,25 @@
+IMPORTED_LIBNAME
+----------------
+
+.. versionadded:: 3.8
+
+Specify the link library name for an :ref:`imported <Imported Targets>`
+:ref:`Interface Library <Interface Libraries>`.
+
+An interface library builds no library file itself but does specify
+usage requirements for its consumers.  The ``IMPORTED_LIBNAME``
+property may be set to specify a single library name to be placed
+on the link line in place of the interface library target name as
+a requirement for using the interface.
+
+This property is intended for use in naming libraries provided by
+a platform SDK for which the full path to a library file may not
+be known.  The value may be a plain library name such as ``foo``
+but may *not* be a path (e.g. ``/usr/lib/libfoo.so``) or a flag
+(e.g. ``-Wl,...``).  The name is never treated as a library target
+name even if it happens to name one.
+
+The ``IMPORTED_LIBNAME`` property is allowed only on
+:ref:`imported <Imported Targets>` :ref:`Interface Libraries`
+and is rejected on targets of other types (for which
+the :prop_tgt:`IMPORTED_LOCATION` target property may be used).
diff --git a/share/cmake-3.22/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst
new file mode 100644
index 0000000..df64769
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst
@@ -0,0 +1,9 @@
+IMPORTED_LIBNAME_<CONFIG>
+-------------------------
+
+.. versionadded:: 3.8
+
+<CONFIG>-specific version of :prop_tgt:`IMPORTED_LIBNAME` property.
+
+Configuration names correspond to those provided by the project from
+which the target is imported.
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY_CONFIG.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/IMPORTED_LOCATION.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_LOCATION.rst
new file mode 100644
index 0000000..ddd910a
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/IMPORTED_LOCATION.rst
@@ -0,0 +1,31 @@
+IMPORTED_LOCATION
+-----------------
+
+Full path to the main file on disk for an ``IMPORTED`` target.
+
+Set this to the location of an ``IMPORTED`` target file on disk.  For
+executables this is the location of the executable file.  For ``STATIC``
+libraries and modules this is the location of the library or module.
+For ``SHARED`` libraries on non-DLL platforms this is the location of the
+shared library.  For application bundles on macOS this is the location of
+the executable file inside ``Contents/MacOS`` within the bundle folder.
+For frameworks on macOS this is the location of the
+library file symlink just inside the framework folder.  For DLLs this
+is the location of the ``.dll`` part of the library.  For ``UNKNOWN``
+libraries this is the location of the file to be linked.  Ignored for
+non-imported targets.
+
+The ``IMPORTED_LOCATION`` target property may be overridden for a
+given configuration ``<CONFIG>`` by the configuration-specific
+:prop_tgt:`IMPORTED_LOCATION_<CONFIG>` target property.  Furthermore,
+the :prop_tgt:`MAP_IMPORTED_CONFIG_<CONFIG>` target property may be
+used to map between a project's configurations and those of an imported
+target.  If none of these is set then the name of any other configuration
+listed in the :prop_tgt:`IMPORTED_CONFIGURATIONS` target property may be
+selected and its :prop_tgt:`IMPORTED_LOCATION_<CONFIG>` value used.
+
+To get the location of an imported target read one of the :prop_tgt:`LOCATION`
+or ``LOCATION_<CONFIG>`` properties.
+
+For platforms with import libraries (e.g. Windows) see also
+:prop_tgt:`IMPORTED_IMPLIB`.
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_LOCATION_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_LOCATION_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED_LOCATION_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED_LOCATION_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_NO_SONAME.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_NO_SONAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED_NO_SONAME.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED_NO_SONAME.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_NO_SONAME_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_NO_SONAME_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED_NO_SONAME_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED_NO_SONAME_CONFIG.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/IMPORTED_OBJECTS.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_OBJECTS.rst
new file mode 100644
index 0000000..d71c219
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/IMPORTED_OBJECTS.rst
@@ -0,0 +1,91 @@
+IMPORTED_OBJECTS
+----------------
+
+.. versionadded:: 3.9
+
+A :ref:`semicolon-separated list <CMake Language Lists>` of absolute paths
+to the object files on disk for an :ref:`imported <Imported targets>`
+:ref:`object library <object libraries>`.
+
+Ignored for non-imported targets.
+
+Projects may skip ``IMPORTED_OBJECTS`` if the configuration-specific
+property :prop_tgt:`IMPORTED_OBJECTS_<CONFIG>` is set instead, except in
+situations as noted in the section below.
+
+
+Xcode Generator Considerations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.20
+
+For Apple platforms, a project may be built for more than one architecture.
+This is controlled by the :variable:`CMAKE_OSX_ARCHITECTURES` variable.
+For all but the :generator:`Xcode` generator, CMake invokes compilers once
+per source file and passes multiple ``-arch`` flags, leading to a single
+object file which will be a universal binary.  Such object files work well
+when listed in the ``IMPORTED_OBJECTS`` of a separate CMake build, even for
+the :generator:`Xcode` generator.  But producing such object files with the
+:generator:`Xcode` generator is more difficult, since it invokes the compiler
+once per architecture for each source file.  Unlike the other generators,
+it does not generate universal object file binaries.
+
+A further complication with the :generator:`Xcode` generator is that when
+targeting device platforms (iOS, tvOS or watchOS), the :generator:`Xcode`
+generator has the ability to use either the device or simulator SDK without
+needing CMake to be re-run.  The SDK can be selected at build time.
+But since some architectures can be supported by both the device and the
+simulator SDKs (e.g. ``arm64`` with Xcode 12 or later), not all combinations
+can be represented in a single universal binary.  The only solution in this
+case is to have multiple object files.
+
+``IMPORTED_OBJECTS`` doesn't support generator expressions, so every file
+it lists needs to be valid for every architecture and SDK.  If incorporating
+object files that are not universal binaries, the path and/or file name of
+each object file has to somehow encapsulate the different architectures and
+SDKs.  With the :generator:`Xcode` generator, Xcode variables of the form
+``$(...)`` can be used to represent these aspects and Xcode will substitute
+the appropriate values at build time.  CMake doesn't interpret these
+variables and embeds them unchanged in the Xcode project file.
+``$(CURRENT_ARCH)`` can be used to represent the architecture, while
+``$(EFFECTIVE_PLATFORM_NAME)`` can be used to differentiate between SDKs.
+
+The following shows one example of how these two variables can be used to
+refer to an object file whose location depends on both the SDK and the
+architecture:
+
+.. code-block:: cmake
+
+  add_library(someObjs OBJECT IMPORTED)
+
+  set_property(TARGET someObjs PROPERTY IMPORTED_OBJECTS
+    # Quotes are required because of the ()
+    "/path/to/somewhere/objects$(EFFECTIVE_PLATFORM_NAME)/$(CURRENT_ARCH)/func.o"
+  )
+
+  # Example paths:
+  #   /path/to/somewhere/objects-iphoneos/arm64/func.o
+  #   /path/to/somewhere/objects-iphonesimulator/x86_64/func.o
+
+In some cases, you may want to have configuration-specific object files
+as well.  The ``$(CONFIGURATION)`` Xcode variable is often used for this and
+can be used in conjunction with the others mentioned above:
+
+.. code-block:: cmake
+
+  add_library(someObjs OBJECT IMPORTED)
+  set_property(TARGET someObjs PROPERTY IMPORTED_OBJECTS
+    "/path/to/somewhere/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/$(CURRENT_ARCH)/func.o"
+  )
+
+  # Example paths:
+  #   /path/to/somewhere/Release-iphoneos/arm64/func.o
+  #   /path/to/somewhere/Debug-iphonesimulator/x86_64/func.o
+
+When any Xcode variable is used, CMake is not able to fully evaluate the
+path(s) at configure time.  One consequence of this is that the
+configuration-specific :prop_tgt:`IMPORTED_OBJECTS_<CONFIG>` properties cannot
+be used, since CMake cannot determine whether an object file exists at a
+particular ``<CONFIG>`` location.  The ``IMPORTED_OBJECTS`` property must be
+used for these situations and the configuration-specific aspects of the path
+should be handled by the ``$(CONFIGURATION)`` Xcode variable.
diff --git a/share/cmake-3.22/Help/prop_tgt/IMPORTED_OBJECTS_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_OBJECTS_CONFIG.rst
new file mode 100644
index 0000000..238395a
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/IMPORTED_OBJECTS_CONFIG.rst
@@ -0,0 +1,20 @@
+IMPORTED_OBJECTS_<CONFIG>
+-------------------------
+
+.. versionadded:: 3.9
+
+``<CONFIG>``-specific version of :prop_tgt:`IMPORTED_OBJECTS` property.
+
+Configuration names correspond to those provided by the project from
+which the target is imported.
+
+
+Xcode Generator Considerations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Do not use this ``<CONFIG>``-specific property if you need to use Xcode
+variables like ``$(CURRENT_ARCH)`` or ``$(EFFECTIVE_PLATFORM_NAME)`` in
+the value.  The ``<CONFIG>``-specific properties will be ignored in such
+cases because CMake cannot determine whether a file exists at the
+configuration-specific path at configuration time.  For such cases, use
+:prop_tgt:`IMPORTED_OBJECTS` instead.
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_SONAME.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_SONAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED_SONAME.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED_SONAME.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORTED_SONAME_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/IMPORTED_SONAME_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORTED_SONAME_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORTED_SONAME_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORT_PREFIX.rst b/share/cmake-3.22/Help/prop_tgt/IMPORT_PREFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORT_PREFIX.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORT_PREFIX.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/IMPORT_SUFFIX.rst b/share/cmake-3.22/Help/prop_tgt/IMPORT_SUFFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/IMPORT_SUFFIX.rst
rename to share/cmake-3.22/Help/prop_tgt/IMPORT_SUFFIX.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/INCLUDE_DIRECTORIES.rst b/share/cmake-3.22/Help/prop_tgt/INCLUDE_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/INCLUDE_DIRECTORIES.rst
rename to share/cmake-3.22/Help/prop_tgt/INCLUDE_DIRECTORIES.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/INSTALL_NAME_DIR.rst b/share/cmake-3.22/Help/prop_tgt/INSTALL_NAME_DIR.rst
new file mode 100644
index 0000000..47a0037
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/INSTALL_NAME_DIR.rst
@@ -0,0 +1,18 @@
+INSTALL_NAME_DIR
+----------------
+
+Directory name for installed targets on Apple platforms.
+
+``INSTALL_NAME_DIR`` is a string specifying the directory portion of the
+"install_name" field of shared libraries on Apple platforms for
+installed targets.  When not set, the default directory used is determined
+by :prop_tgt:`MACOSX_RPATH`.  Policies :policy:`CMP0068` and :policy:`CMP0042`
+are also relevant.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_INSTALL_NAME_DIR` if it is set when a target is
+created.
+
+This property supports :manual:`generator expressions <cmake-generator-expressions(7)>`.
+In particular, the :genex:`$<INSTALL_PREFIX>` generator expression can be
+used to set the directory relative to the install-time prefix.
diff --git a/share/cmake-3.22/Help/prop_tgt/INSTALL_REMOVE_ENVIRONMENT_RPATH.rst b/share/cmake-3.22/Help/prop_tgt/INSTALL_REMOVE_ENVIRONMENT_RPATH.rst
new file mode 100644
index 0000000..f41e41c
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/INSTALL_REMOVE_ENVIRONMENT_RPATH.rst
@@ -0,0 +1,18 @@
+INSTALL_REMOVE_ENVIRONMENT_RPATH
+--------------------------------
+
+.. versionadded:: 3.16
+
+Controls whether toolchain-defined rpaths should be removed during installation.
+
+When a target is being installed, CMake may need to rewrite its rpath
+information.  This occurs when the install rpath (as specified by the
+:prop_tgt:`INSTALL_RPATH` target property) has different contents to the rpath
+that the target was built with.  Some toolchains insert their own rpath
+contents into the binary as part of the build.  By default, CMake will
+preserve those extra inserted contents in the install rpath.  For those
+scenarios where such toolchain-inserted entries need to be discarded during
+install, set the ``INSTALL_REMOVE_ENVIRONMENT_RPATH`` target property to true.
+
+This property is initialized by the value of
+:variable:`CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH` when the target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/INSTALL_RPATH.rst b/share/cmake-3.22/Help/prop_tgt/INSTALL_RPATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/INSTALL_RPATH.rst
rename to share/cmake-3.22/Help/prop_tgt/INSTALL_RPATH.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/INSTALL_RPATH_USE_LINK_PATH.rst b/share/cmake-3.22/Help/prop_tgt/INSTALL_RPATH_USE_LINK_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/INSTALL_RPATH_USE_LINK_PATH.rst
rename to share/cmake-3.22/Help/prop_tgt/INSTALL_RPATH_USE_LINK_PATH.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/INTERFACE_AUTOUIC_OPTIONS.rst b/share/cmake-3.22/Help/prop_tgt/INTERFACE_AUTOUIC_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/INTERFACE_AUTOUIC_OPTIONS.rst
rename to share/cmake-3.22/Help/prop_tgt/INTERFACE_AUTOUIC_OPTIONS.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/INTERFACE_BUILD_PROPERTY.txt b/share/cmake-3.22/Help/prop_tgt/INTERFACE_BUILD_PROPERTY.txt
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/INTERFACE_BUILD_PROPERTY.txt
rename to share/cmake-3.22/Help/prop_tgt/INTERFACE_BUILD_PROPERTY.txt
diff --git a/share/cmake-3.18/Help/prop_tgt/INTERFACE_COMPILE_DEFINITIONS.rst b/share/cmake-3.22/Help/prop_tgt/INTERFACE_COMPILE_DEFINITIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/INTERFACE_COMPILE_DEFINITIONS.rst
rename to share/cmake-3.22/Help/prop_tgt/INTERFACE_COMPILE_DEFINITIONS.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst b/share/cmake-3.22/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst
new file mode 100644
index 0000000..0db3b0c
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst
@@ -0,0 +1,14 @@
+INTERFACE_COMPILE_FEATURES
+--------------------------
+
+.. versionadded:: 3.1
+
+.. |property_name| replace:: compile features
+.. |command_name| replace:: :command:`target_compile_features`
+.. |PROPERTY_INTERFACE_NAME| replace:: ``INTERFACE_COMPILE_FEATURES``
+.. |PROPERTY_LINK| replace:: :prop_tgt:`COMPILE_FEATURES`
+.. |PROPERTY_GENEX| replace:: ``$<TARGET_PROPERTY:foo,INTERFACE_COMPILE_FEATURES>``
+.. include:: INTERFACE_BUILD_PROPERTY.txt
+
+See the :manual:`cmake-compile-features(7)` manual for information on compile
+features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/prop_tgt/INTERFACE_COMPILE_OPTIONS.rst b/share/cmake-3.22/Help/prop_tgt/INTERFACE_COMPILE_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/INTERFACE_COMPILE_OPTIONS.rst
rename to share/cmake-3.22/Help/prop_tgt/INTERFACE_COMPILE_OPTIONS.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/INTERFACE_INCLUDE_DIRECTORIES.rst b/share/cmake-3.22/Help/prop_tgt/INTERFACE_INCLUDE_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/INTERFACE_INCLUDE_DIRECTORIES.rst
rename to share/cmake-3.22/Help/prop_tgt/INTERFACE_INCLUDE_DIRECTORIES.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/INTERFACE_LINK_DEPENDS.rst b/share/cmake-3.22/Help/prop_tgt/INTERFACE_LINK_DEPENDS.rst
new file mode 100644
index 0000000..9c8275d
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/INTERFACE_LINK_DEPENDS.rst
@@ -0,0 +1,34 @@
+INTERFACE_LINK_DEPENDS
+----------------------
+
+.. versionadded:: 3.13
+
+Additional public interface files on which a target binary depends for linking.
+
+This property is supported only by :generator:`Ninja` and
+:ref:`Makefile Generators`.
+It is intended to specify dependencies on "linker scripts" for
+custom Makefile link rules.
+
+When target dependencies are specified using :command:`target_link_libraries`,
+CMake will read this property from all target dependencies to determine the
+build properties of the consumer.
+
+Contents of ``INTERFACE_LINK_DEPENDS`` may use "generator expressions"
+with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
+manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
+-manual for more on defining buildsystem properties.
+
+Link dependency files usage requirements commonly differ between the build-tree
+and the install-tree.  The ``BUILD_INTERFACE`` and ``INSTALL_INTERFACE``
+generator expressions can be used to describe separate usage requirements
+based on the usage location.  Relative paths are allowed within the
+``INSTALL_INTERFACE`` expression and are interpreted relative to the
+installation prefix.  For example:
+
+.. code-block:: cmake
+
+  set_property(TARGET mylib PROPERTY INTERFACE_LINK_DEPENDS
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/mylinkscript>
+    $<INSTALL_INTERFACE:mylinkscript>  # <prefix>/mylinkscript
+  )
diff --git a/share/cmake-3.22/Help/prop_tgt/INTERFACE_LINK_DIRECTORIES.rst b/share/cmake-3.22/Help/prop_tgt/INTERFACE_LINK_DIRECTORIES.rst
new file mode 100644
index 0000000..de1dabb
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/INTERFACE_LINK_DIRECTORIES.rst
@@ -0,0 +1,11 @@
+INTERFACE_LINK_DIRECTORIES
+--------------------------
+
+.. versionadded:: 3.13
+
+.. |property_name| replace:: link directories
+.. |command_name| replace:: :command:`target_link_directories`
+.. |PROPERTY_INTERFACE_NAME| replace:: ``INTERFACE_LINK_DIRECTORIES``
+.. |PROPERTY_LINK| replace:: :prop_tgt:`LINK_DIRECTORIES`
+.. |PROPERTY_GENEX| replace:: ``$<TARGET_PROPERTY:foo,INTERFACE_LINK_DIRECTORIES>``
+.. include:: INTERFACE_BUILD_PROPERTY.txt
diff --git a/share/cmake-3.18/Help/prop_tgt/INTERFACE_LINK_LIBRARIES.rst b/share/cmake-3.22/Help/prop_tgt/INTERFACE_LINK_LIBRARIES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/INTERFACE_LINK_LIBRARIES.rst
rename to share/cmake-3.22/Help/prop_tgt/INTERFACE_LINK_LIBRARIES.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/INTERFACE_LINK_OPTIONS.rst b/share/cmake-3.22/Help/prop_tgt/INTERFACE_LINK_OPTIONS.rst
new file mode 100644
index 0000000..4245fe9
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/INTERFACE_LINK_OPTIONS.rst
@@ -0,0 +1,11 @@
+INTERFACE_LINK_OPTIONS
+----------------------
+
+.. versionadded:: 3.13
+
+.. |property_name| replace:: link options
+.. |command_name| replace:: :command:`target_link_options`
+.. |PROPERTY_INTERFACE_NAME| replace:: ``INTERFACE_LINK_OPTIONS``
+.. |PROPERTY_LINK| replace:: :prop_tgt:`LINK_OPTIONS`
+.. |PROPERTY_GENEX| replace:: ``$<TARGET_PROPERTY:foo,INTERFACE_LINK_OPTIONS>``
+.. include:: INTERFACE_BUILD_PROPERTY.txt
diff --git a/share/cmake-3.18/Help/prop_tgt/INTERFACE_POSITION_INDEPENDENT_CODE.rst b/share/cmake-3.22/Help/prop_tgt/INTERFACE_POSITION_INDEPENDENT_CODE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/INTERFACE_POSITION_INDEPENDENT_CODE.rst
rename to share/cmake-3.22/Help/prop_tgt/INTERFACE_POSITION_INDEPENDENT_CODE.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/INTERFACE_PRECOMPILE_HEADERS.rst b/share/cmake-3.22/Help/prop_tgt/INTERFACE_PRECOMPILE_HEADERS.rst
new file mode 100644
index 0000000..2299264
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/INTERFACE_PRECOMPILE_HEADERS.rst
@@ -0,0 +1,18 @@
+INTERFACE_PRECOMPILE_HEADERS
+----------------------------
+
+.. versionadded:: 3.16
+
+List of interface header files to precompile into consuming targets.
+
+Targets may populate this property to publish the header files
+for consuming targets to precompile.  The :command:`target_precompile_headers`
+command populates this property with values given to the ``PUBLIC`` and
+``INTERFACE`` keywords.  Projects may also get and set the property directly.
+See the discussion in :command:`target_precompile_headers` for guidance on
+appropriate use of this property for installed or exported targets.
+
+Contents of ``INTERFACE_PRECOMPILE_HEADERS`` may use "generator expressions"
+with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
+manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
+manual for more on defining buildsystem properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/INTERFACE_SOURCES.rst b/share/cmake-3.22/Help/prop_tgt/INTERFACE_SOURCES.rst
new file mode 100644
index 0000000..759c482
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/INTERFACE_SOURCES.rst
@@ -0,0 +1,20 @@
+INTERFACE_SOURCES
+-----------------
+
+.. versionadded:: 3.1
+
+List of interface sources to compile into consuming targets.
+
+Targets may populate this property to publish the sources
+for consuming targets to compile.  The :command:`target_sources` command
+populates this property with values given to the ``PUBLIC`` and
+``INTERFACE`` keywords.  Projects may also get and set the property directly.
+
+When target dependencies are specified using :command:`target_link_libraries`,
+CMake will read this property from all target dependencies to determine the
+sources of the consumer.
+
+Contents of ``INTERFACE_SOURCES`` may use "generator expressions"
+with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
+manual for available expressions.  See the :manual:`cmake-buildsystem(7)`
+manual for more on defining buildsystem properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/INTERFACE_SYSTEM_INCLUDE_DIRECTORIES.rst b/share/cmake-3.22/Help/prop_tgt/INTERFACE_SYSTEM_INCLUDE_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/INTERFACE_SYSTEM_INCLUDE_DIRECTORIES.rst
rename to share/cmake-3.22/Help/prop_tgt/INTERFACE_SYSTEM_INCLUDE_DIRECTORIES.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/INTERPROCEDURAL_OPTIMIZATION.rst b/share/cmake-3.22/Help/prop_tgt/INTERPROCEDURAL_OPTIMIZATION.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/INTERPROCEDURAL_OPTIMIZATION.rst
rename to share/cmake-3.22/Help/prop_tgt/INTERPROCEDURAL_OPTIMIZATION.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/IOS_INSTALL_COMBINED.rst b/share/cmake-3.22/Help/prop_tgt/IOS_INSTALL_COMBINED.rst
new file mode 100644
index 0000000..92d60dc
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/IOS_INSTALL_COMBINED.rst
@@ -0,0 +1,19 @@
+IOS_INSTALL_COMBINED
+--------------------
+
+.. versionadded:: 3.5
+
+Build a combined (device and simulator) target when installing.
+
+When this property is set to set to false (which is the default) then it will
+either be built with the device SDK or the simulator SDK depending on the SDK
+set. But if this property is set to true then the target will at install time
+also be built for the corresponding SDK and combined into one library.
+
+.. note::
+
+  If a selected architecture is available for both: device SDK and simulator
+  SDK it will be built for the SDK selected by :variable:`CMAKE_OSX_SYSROOT`
+  and removed from the corresponding SDK.
+
+This feature requires at least Xcode version 6.
diff --git a/share/cmake-3.22/Help/prop_tgt/ISPC_HEADER_DIRECTORY.rst b/share/cmake-3.22/Help/prop_tgt/ISPC_HEADER_DIRECTORY.rst
new file mode 100644
index 0000000..2a3a8bc
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ISPC_HEADER_DIRECTORY.rst
@@ -0,0 +1,13 @@
+ISPC_HEADER_DIRECTORY
+---------------------
+
+.. versionadded:: 3.19
+
+Specify relative output directory for ISPC headers provided by the target.
+
+If the target contains ISPC source files, this specifies the directory in which
+the generated headers will be placed. Relative paths are treated with respect to
+the value of :variable:`CMAKE_CURRENT_BINARY_DIR`. When this property is not set, the
+headers will be placed a generator defined build directory. If the variable
+:variable:`CMAKE_ISPC_HEADER_DIRECTORY` is set when a target is created
+its value is used to initialize this property.
diff --git a/share/cmake-3.22/Help/prop_tgt/ISPC_HEADER_SUFFIX.rst b/share/cmake-3.22/Help/prop_tgt/ISPC_HEADER_SUFFIX.rst
new file mode 100644
index 0000000..6397e55
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ISPC_HEADER_SUFFIX.rst
@@ -0,0 +1,14 @@
+ISPC_HEADER_SUFFIX
+------------------
+
+.. versionadded:: 3.19.2
+
+Specify output suffix to be used for ISPC generated headers provided by the target.
+
+This property is initialized by the value of the :variable:`CMAKE_ISPC_HEADER_SUFFIX`
+variable if it is set when a target  is created.
+
+If the target contains ISPC source files, this specifies the header suffix to
+be used for the generated headers.
+
+The default value is ``_ispc.h``.
diff --git a/share/cmake-3.22/Help/prop_tgt/ISPC_INSTRUCTION_SETS.rst b/share/cmake-3.22/Help/prop_tgt/ISPC_INSTRUCTION_SETS.rst
new file mode 100644
index 0000000..cad116f
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/ISPC_INSTRUCTION_SETS.rst
@@ -0,0 +1,21 @@
+ISPC_INSTRUCTION_SETS
+---------------------
+
+.. versionadded:: 3.19
+
+List of instruction set architectures to generate code for.
+
+This property is initialized by the value of the :variable:`CMAKE_ISPC_INSTRUCTION_SETS`
+variable if it is set when a target is created.
+
+The ``ISPC_INSTRUCTION_SETS`` target property must be used when generating for multiple
+instruction sets so that CMake can track what object files will be generated.
+
+Examples
+^^^^^^^^
+
+.. code-block:: cmake
+
+  set_property(TARGET tgt PROPERTY ISPC_INSTRUCTION_SETS avx2-i32x4 avx512skx-i32x835)
+
+Generates code for avx2 and avx512skx target architectures.
diff --git a/share/cmake-3.18/Help/prop_tgt/JOB_POOL_COMPILE.rst b/share/cmake-3.22/Help/prop_tgt/JOB_POOL_COMPILE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/JOB_POOL_COMPILE.rst
rename to share/cmake-3.22/Help/prop_tgt/JOB_POOL_COMPILE.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/JOB_POOL_LINK.rst b/share/cmake-3.22/Help/prop_tgt/JOB_POOL_LINK.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/JOB_POOL_LINK.rst
rename to share/cmake-3.22/Help/prop_tgt/JOB_POOL_LINK.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/JOB_POOL_PRECOMPILE_HEADER.rst b/share/cmake-3.22/Help/prop_tgt/JOB_POOL_PRECOMPILE_HEADER.rst
new file mode 100644
index 0000000..42cace0
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/JOB_POOL_PRECOMPILE_HEADER.rst
@@ -0,0 +1,23 @@
+JOB_POOL_PRECOMPILE_HEADER
+--------------------------
+
+.. versionadded:: 3.17
+
+Ninja only: Pool used for generating pre-compiled headers.
+
+The number of parallel compile processes could be limited by defining
+pools with the global :prop_gbl:`JOB_POOLS`
+property and then specifying here the pool name.
+
+For instance:
+
+.. code-block:: cmake
+
+  set_property(TARGET myexe PROPERTY JOB_POOL_PRECOMPILE_HEADER two_jobs)
+
+This property is initialized by the value of
+:variable:`CMAKE_JOB_POOL_PRECOMPILE_HEADER`.
+
+If neither :prop_tgt:`JOB_POOL_PRECOMPILE_HEADER` nor
+:variable:`CMAKE_JOB_POOL_PRECOMPILE_HEADER` are set then
+:prop_tgt:`JOB_POOL_COMPILE` will be used for this task.
diff --git a/share/cmake-3.18/Help/prop_tgt/LABELS.rst b/share/cmake-3.22/Help/prop_tgt/LABELS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LABELS.rst
rename to share/cmake-3.22/Help/prop_tgt/LABELS.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/LANG_CLANG_TIDY.rst b/share/cmake-3.22/Help/prop_tgt/LANG_CLANG_TIDY.rst
new file mode 100644
index 0000000..af16d3c
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/LANG_CLANG_TIDY.rst
@@ -0,0 +1,15 @@
+<LANG>_CLANG_TIDY
+-----------------
+
+.. versionadded:: 3.6
+
+This property is implemented only when ``<LANG>`` is ``C``, ``CXX``, ``OBJC`` or ``OBJCXX``.
+
+Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a command
+line for the ``clang-tidy`` tool.  The :ref:`Makefile Generators`
+and the :generator:`Ninja` generator will run this tool along with the
+compiler and report a warning if the tool reports any problems.
+
+This property is initialized by the value of
+the :variable:`CMAKE_<LANG>_CLANG_TIDY` variable if it is set
+when a target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst b/share/cmake-3.22/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst
new file mode 100644
index 0000000..cba8ac9
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst
@@ -0,0 +1,16 @@
+<LANG>_COMPILER_LAUNCHER
+------------------------
+
+.. versionadded:: 3.4
+
+This property is implemented only when ``<LANG>`` is ``C``, ``CXX``,
+``Fortran``, ``HIP``, ``ISPC``, ``OBJC``, ``OBJCXX``, or ``CUDA``.
+
+Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a command line
+for a compiler launching tool. The :ref:`Makefile Generators` and the
+:generator:`Ninja` generator will run this tool and pass the compiler and
+its arguments to the tool. Some example tools are distcc and ccache.
+
+This property is initialized by the value of
+the :variable:`CMAKE_<LANG>_COMPILER_LAUNCHER` variable if it is set
+when a target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/LANG_CPPCHECK.rst b/share/cmake-3.22/Help/prop_tgt/LANG_CPPCHECK.rst
new file mode 100644
index 0000000..80acbc0
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/LANG_CPPCHECK.rst
@@ -0,0 +1,17 @@
+<LANG>_CPPCHECK
+---------------
+
+.. versionadded:: 3.10
+
+This property is supported only when ``<LANG>`` is ``C`` or ``CXX``.
+
+Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a command line
+for the ``cppcheck`` static analysis tool.  The :ref:`Makefile Generators`
+and the :generator:`Ninja` generator will run ``cppcheck`` along with the
+compiler and report any problems.  If the command-line specifies the
+exit code options to ``cppcheck`` then the build  will fail if the
+tool returns non-zero.
+
+This property is initialized by the value of the
+:variable:`CMAKE_<LANG>_CPPCHECK` variable if it is set when a target is
+created.
diff --git a/share/cmake-3.22/Help/prop_tgt/LANG_CPPLINT.rst b/share/cmake-3.22/Help/prop_tgt/LANG_CPPLINT.rst
new file mode 100644
index 0000000..be6db46
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/LANG_CPPLINT.rst
@@ -0,0 +1,15 @@
+<LANG>_CPPLINT
+--------------
+
+.. versionadded:: 3.8
+
+This property is supported only when ``<LANG>`` is ``C`` or ``CXX``.
+
+Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a command line
+for the ``cpplint`` style checker.  The :ref:`Makefile Generators` and the
+:generator:`Ninja` generator will run ``cpplint`` along with the compiler
+and report any problems.
+
+This property is initialized by the value of the
+:variable:`CMAKE_<LANG>_CPPLINT` variable if it is set when a target is
+created.
diff --git a/share/cmake-3.22/Help/prop_tgt/LANG_EXTENSIONS.rst b/share/cmake-3.22/Help/prop_tgt/LANG_EXTENSIONS.rst
new file mode 100644
index 0000000..afc2ad3
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/LANG_EXTENSIONS.rst
@@ -0,0 +1,24 @@
+<LANG>_EXTENSIONS
+-----------------
+
+The variations are:
+
+* :prop_tgt:`C_EXTENSIONS`
+* :prop_tgt:`CXX_EXTENSIONS`
+* :prop_tgt:`CUDA_EXTENSIONS`
+* :prop_tgt:`HIP_EXTENSIONS`
+* :prop_tgt:`OBJC_EXTENSIONS`
+* :prop_tgt:`OBJCXX_EXTENSIONS`
+
+These properties specify whether compiler-specific extensions are requested.
+
+These properties are initialized by the value of the
+:variable:`CMAKE_<LANG>_EXTENSIONS` variable if it is set when a target is
+created and otherwise by the value of
+:variable:`CMAKE_<LANG>_EXTENSIONS_DEFAULT` (see :policy:`CMP0128`).
+
+For supported CMake versions see the respective pages.
+To control language standard versions see :prop_tgt:`<LANG>_STANDARD`.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst b/share/cmake-3.22/Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst
new file mode 100644
index 0000000..eebef56
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst
@@ -0,0 +1,15 @@
+<LANG>_INCLUDE_WHAT_YOU_USE
+---------------------------
+
+.. versionadded:: 3.3
+
+This property is implemented only when ``<LANG>`` is ``C`` or ``CXX``.
+
+Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a command
+line for the ``include-what-you-use`` tool.  The :ref:`Makefile Generators`
+and the :generator:`Ninja` generator will run this tool along with the
+compiler and report a warning if the tool reports any problems.
+
+This property is initialized by the value of
+the :variable:`CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE` variable if it is set
+when a target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/LANG_LINKER_LAUNCHER.rst b/share/cmake-3.22/Help/prop_tgt/LANG_LINKER_LAUNCHER.rst
new file mode 100644
index 0000000..f6ca5ad
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/LANG_LINKER_LAUNCHER.rst
@@ -0,0 +1,16 @@
+<LANG>_LINKER_LAUNCHER
+----------------------
+
+.. versionadded:: 3.21
+
+This property is implemented only when ``<LANG>`` is ``C``, ``CXX``,
+``OBJC``, or ``OBJCXX``
+
+Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a
+command line for a linker launching tool. The :ref:`Makefile Generators` and the
+:generator:`Ninja` generator will run this tool and pass the linker and its
+arguments to the tool. This is useful for tools such as static analyzers.
+
+This property is initialized by the value of the
+:variable:`CMAKE_<LANG>_LINKER_LAUNCHER` variable if it is set when a target is
+created.
diff --git a/share/cmake-3.22/Help/prop_tgt/LANG_STANDARD.rst b/share/cmake-3.22/Help/prop_tgt/LANG_STANDARD.rst
new file mode 100644
index 0000000..bd377ec
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/LANG_STANDARD.rst
@@ -0,0 +1,26 @@
+<LANG>_STANDARD
+---------------
+
+The variations are:
+
+* :prop_tgt:`C_STANDARD`
+* :prop_tgt:`CXX_STANDARD`
+* :prop_tgt:`CUDA_STANDARD`
+* :prop_tgt:`HIP_STANDARD`
+* :prop_tgt:`OBJC_STANDARD`
+* :prop_tgt:`OBJCXX_STANDARD`
+
+These properties specify language standard versions which are requested. When a
+newer standard is specified than is supported by the compiler, then it will
+fallback to the latest supported standard. This "decay" behavior may be
+controlled with the :prop_tgt:`<LANG>_STANDARD_REQUIRED` target property.
+
+These properties are initialized by the value of the
+:variable:`CMAKE_<LANG>_STANDARD` variable if it is set when a target is
+created.
+
+For supported values and CMake versions see the respective pages.
+To control compiler-specific extensions see :prop_tgt:`<LANG>_EXTENSIONS`.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/prop_tgt/LANG_STANDARD_REQUIRED.rst b/share/cmake-3.22/Help/prop_tgt/LANG_STANDARD_REQUIRED.rst
new file mode 100644
index 0000000..56ecef8
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/LANG_STANDARD_REQUIRED.rst
@@ -0,0 +1,26 @@
+<LANG>_STANDARD_REQUIRED
+------------------------
+
+The variations are:
+
+* :prop_tgt:`C_STANDARD_REQUIRED`
+* :prop_tgt:`CXX_STANDARD_REQUIRED`
+* :prop_tgt:`CUDA_STANDARD_REQUIRED`
+* :prop_tgt:`HIP_STANDARD_REQUIRED`
+* :prop_tgt:`OBJC_STANDARD_REQUIRED`
+* :prop_tgt:`OBJCXX_STANDARD_REQUIRED`
+
+These properties specify whether the value of :prop_tgt:`<LANG>_STANDARD` is a
+requirement. When ``OFF`` or unset, the :prop_tgt:`<LANG>_STANDARD` target
+property is treated as optional and may "decay" to a previous standard if the
+requested is not available.
+
+These properties are initialized by the value of the
+:variable:`CMAKE_<LANG>_STANDARD_REQUIRED` variable if it is set when a target
+is created.
+
+For supported CMake versions see the respective pages.
+To control language standard versions see :prop_tgt:`<LANG>_STANDARD`.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/prop_tgt/LANG_VISIBILITY_PRESET.rst b/share/cmake-3.22/Help/prop_tgt/LANG_VISIBILITY_PRESET.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LANG_VISIBILITY_PRESET.rst
rename to share/cmake-3.22/Help/prop_tgt/LANG_VISIBILITY_PRESET.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY.rst b/share/cmake-3.22/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY.rst
new file mode 100644
index 0000000..9fbe904
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY.rst
@@ -0,0 +1,9 @@
+LIBRARY_OUTPUT_DIRECTORY
+------------------------
+
+.. |XXX| replace:: :ref:`LIBRARY <Library Output Artifacts>`
+.. |xxx| replace:: library
+.. |CMAKE_XXX_OUTPUT_DIRECTORY| replace:: :variable:`CMAKE_LIBRARY_OUTPUT_DIRECTORY`
+.. include:: XXX_OUTPUT_DIRECTORY.txt
+
+See also the :prop_tgt:`LIBRARY_OUTPUT_DIRECTORY_<CONFIG>` target property.
diff --git a/share/cmake-3.18/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/LIBRARY_OUTPUT_NAME.rst b/share/cmake-3.22/Help/prop_tgt/LIBRARY_OUTPUT_NAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LIBRARY_OUTPUT_NAME.rst
rename to share/cmake-3.22/Help/prop_tgt/LIBRARY_OUTPUT_NAME.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/LIBRARY_OUTPUT_NAME_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/LIBRARY_OUTPUT_NAME_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LIBRARY_OUTPUT_NAME_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/LIBRARY_OUTPUT_NAME_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/LINKER_LANGUAGE.rst b/share/cmake-3.22/Help/prop_tgt/LINKER_LANGUAGE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LINKER_LANGUAGE.rst
rename to share/cmake-3.22/Help/prop_tgt/LINKER_LANGUAGE.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/LINK_DEPENDS.rst b/share/cmake-3.22/Help/prop_tgt/LINK_DEPENDS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LINK_DEPENDS.rst
rename to share/cmake-3.22/Help/prop_tgt/LINK_DEPENDS.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/LINK_DEPENDS_NO_SHARED.rst b/share/cmake-3.22/Help/prop_tgt/LINK_DEPENDS_NO_SHARED.rst
new file mode 100644
index 0000000..dc2dc9e
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/LINK_DEPENDS_NO_SHARED.rst
@@ -0,0 +1,15 @@
+LINK_DEPENDS_NO_SHARED
+----------------------
+
+Do not depend on linked shared library files.
+
+Set this property to true to tell CMake generators not to add
+file-level dependencies on the shared library files linked by this
+target.  Modification to the shared libraries will not be sufficient
+to re-link this target.  Logical target-level dependencies will not be
+affected so the linked shared libraries will still be brought up to
+date before this target is built.
+
+This property is initialized by the value of the
+:variable:`CMAKE_LINK_DEPENDS_NO_SHARED` variable if it is set when a
+target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/LINK_DIRECTORIES.rst b/share/cmake-3.22/Help/prop_tgt/LINK_DIRECTORIES.rst
new file mode 100644
index 0000000..67be494
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/LINK_DIRECTORIES.rst
@@ -0,0 +1,20 @@
+LINK_DIRECTORIES
+----------------
+
+.. versionadded:: 3.13
+
+List of directories to use for the link step of shared library, module
+and executable targets.
+
+This property holds a :ref:`semicolon-separated list <CMake Language Lists>` of directories
+specified so far for its target.  Use the :command:`target_link_directories`
+command to append more search directories.
+
+This property is initialized by the :prop_dir:`LINK_DIRECTORIES` directory
+property when a target is created, and is used by the generators to set
+the search directories for the linker.
+
+Contents of ``LINK_DIRECTORIES`` may use "generator expressions" with the
+syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual
+for available expressions.  See the :manual:`cmake-buildsystem(7)` manual
+for more on defining buildsystem properties.
diff --git a/share/cmake-3.18/Help/prop_tgt/LINK_FLAGS.rst b/share/cmake-3.22/Help/prop_tgt/LINK_FLAGS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LINK_FLAGS.rst
rename to share/cmake-3.22/Help/prop_tgt/LINK_FLAGS.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/LINK_FLAGS_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/LINK_FLAGS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LINK_FLAGS_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/LINK_FLAGS_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/LINK_INTERFACE_LIBRARIES.rst b/share/cmake-3.22/Help/prop_tgt/LINK_INTERFACE_LIBRARIES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LINK_INTERFACE_LIBRARIES.rst
rename to share/cmake-3.22/Help/prop_tgt/LINK_INTERFACE_LIBRARIES.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/LINK_INTERFACE_LIBRARIES_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/LINK_INTERFACE_LIBRARIES_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LINK_INTERFACE_LIBRARIES_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/LINK_INTERFACE_LIBRARIES_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/LINK_INTERFACE_MULTIPLICITY.rst b/share/cmake-3.22/Help/prop_tgt/LINK_INTERFACE_MULTIPLICITY.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LINK_INTERFACE_MULTIPLICITY.rst
rename to share/cmake-3.22/Help/prop_tgt/LINK_INTERFACE_MULTIPLICITY.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/LINK_INTERFACE_MULTIPLICITY_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/LINK_INTERFACE_MULTIPLICITY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LINK_INTERFACE_MULTIPLICITY_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/LINK_INTERFACE_MULTIPLICITY_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/LINK_LIBRARIES.rst b/share/cmake-3.22/Help/prop_tgt/LINK_LIBRARIES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LINK_LIBRARIES.rst
rename to share/cmake-3.22/Help/prop_tgt/LINK_LIBRARIES.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/LINK_LIBRARIES_INDIRECTION.txt b/share/cmake-3.22/Help/prop_tgt/LINK_LIBRARIES_INDIRECTION.txt
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LINK_LIBRARIES_INDIRECTION.txt
rename to share/cmake-3.22/Help/prop_tgt/LINK_LIBRARIES_INDIRECTION.txt
diff --git a/share/cmake-3.22/Help/prop_tgt/LINK_OPTIONS.rst b/share/cmake-3.22/Help/prop_tgt/LINK_OPTIONS.rst
new file mode 100644
index 0000000..27eadf9
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/LINK_OPTIONS.rst
@@ -0,0 +1,36 @@
+LINK_OPTIONS
+------------
+
+.. versionadded:: 3.13
+
+List of options to use for the link step of shared library, module
+and executable targets as well as the device link step. Targets that are static
+libraries need to use the :prop_tgt:`STATIC_LIBRARY_OPTIONS` target property.
+
+These options are used for both normal linking and device linking
+(see policy :policy:`CMP0105`). To control link options for normal and device
+link steps, ``$<HOST_LINK>`` and ``$<DEVICE_LINK>``
+:manual:`generator expressions <cmake-generator-expressions(7)>` can be used.
+
+This property holds a :ref:`semicolon-separated list <CMake Language Lists>` of
+options specified so far for its target.  Use the :command:`target_link_options`
+command to append more options.
+
+This property is initialized by the :prop_dir:`LINK_OPTIONS` directory
+property when a target is created, and is used by the generators to set
+the options for the compiler.
+
+Contents of ``LINK_OPTIONS`` may use "generator expressions" with the
+syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual
+for available expressions.  See the :manual:`cmake-buildsystem(7)` manual
+for more on defining buildsystem properties.
+
+.. note::
+
+  This property must be used in preference to :prop_tgt:`LINK_FLAGS` property.
+
+.. include:: ../command/DEVICE_LINK_OPTIONS.txt
+
+.. include:: ../command/OPTIONS_SHELL.txt
+
+.. include:: ../command/LINK_OPTIONS_LINKER.txt
diff --git a/share/cmake-3.18/Help/prop_tgt/LINK_SEARCH_END_STATIC.rst b/share/cmake-3.22/Help/prop_tgt/LINK_SEARCH_END_STATIC.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LINK_SEARCH_END_STATIC.rst
rename to share/cmake-3.22/Help/prop_tgt/LINK_SEARCH_END_STATIC.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/LINK_SEARCH_START_STATIC.rst b/share/cmake-3.22/Help/prop_tgt/LINK_SEARCH_START_STATIC.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LINK_SEARCH_START_STATIC.rst
rename to share/cmake-3.22/Help/prop_tgt/LINK_SEARCH_START_STATIC.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/LINK_WHAT_YOU_USE.rst b/share/cmake-3.22/Help/prop_tgt/LINK_WHAT_YOU_USE.rst
new file mode 100644
index 0000000..d6de0d4
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/LINK_WHAT_YOU_USE.rst
@@ -0,0 +1,23 @@
+LINK_WHAT_YOU_USE
+-----------------
+
+.. versionadded:: 3.7
+
+This is a boolean option that, when set to ``TRUE``, will automatically run
+contents of variable :variable:`CMAKE_LINK_WHAT_YOU_USE_CHECK` on the target
+after it is linked. In addition, the linker flag specified by variable
+:variable:`CMAKE_<LANG>_LINK_WHAT_YOU_USE_FLAG`  will be passed to the target
+with the link command so that all libraries specified on the command line will
+be linked into the target. This will result in the link producing a list of
+libraries that provide no symbols used by this target but are being linked to
+it.
+
+.. note::
+
+  For now, it is only supported for ``ELF`` platforms and is only applicable to
+  executable and shared or module library targets. This property will be
+  ignored for any other targets and configurations.
+
+This property is initialized by the value of
+the :variable:`CMAKE_LINK_WHAT_YOU_USE` variable if it is set
+when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/LOCATION.rst b/share/cmake-3.22/Help/prop_tgt/LOCATION.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LOCATION.rst
rename to share/cmake-3.22/Help/prop_tgt/LOCATION.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/LOCATION_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/LOCATION_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/LOCATION_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/LOCATION_CONFIG.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/MACHO_COMPATIBILITY_VERSION.rst b/share/cmake-3.22/Help/prop_tgt/MACHO_COMPATIBILITY_VERSION.rst
new file mode 100644
index 0000000..a24b255
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/MACHO_COMPATIBILITY_VERSION.rst
@@ -0,0 +1,27 @@
+MACHO_COMPATIBILITY_VERSION
+---------------------------
+
+.. versionadded:: 3.17
+
+What compatibility version number is this target for Mach-O binaries.
+
+For shared libraries on Mach-O systems (e.g. macOS, iOS)
+the ``MACHO_COMPATIBILITY_VERSION`` property corresponds to the
+*compatibility version* and :prop_tgt:`MACHO_CURRENT_VERSION` corresponds to
+the *current version*.  These are both embedded in the shared library binary
+and can be checked with the ``otool -L <binary>`` command.
+
+It should be noted that the :prop_tgt:`MACHO_CURRENT_VERSION` and
+``MACHO_COMPATIBILITY_VERSION`` properties do not affect the file
+names or version-related symlinks that CMake generates for the library.
+The :prop_tgt:`VERSION` and :prop_tgt:`SOVERSION` target properties still
+control the file and symlink names.  The ``install_name`` is also still
+controlled by :prop_tgt:`SOVERSION`.
+
+When :prop_tgt:`MACHO_CURRENT_VERSION` and ``MACHO_COMPATIBILITY_VERSION``
+are not given, :prop_tgt:`VERSION` and :prop_tgt:`SOVERSION` are used for
+the version details to be embedded in the binaries respectively.
+The :prop_tgt:`MACHO_CURRENT_VERSION` and ``MACHO_COMPATIBILITY_VERSION``
+properties only need to be given if the project needs to decouple the file
+and symlink naming from the version details embedded in the binaries
+(e.g. to match libtool conventions).
diff --git a/share/cmake-3.22/Help/prop_tgt/MACHO_CURRENT_VERSION.rst b/share/cmake-3.22/Help/prop_tgt/MACHO_CURRENT_VERSION.rst
new file mode 100644
index 0000000..530f79b
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/MACHO_CURRENT_VERSION.rst
@@ -0,0 +1,27 @@
+MACHO_CURRENT_VERSION
+---------------------
+
+.. versionadded:: 3.17
+
+What current version number is this target for Mach-O binaries.
+
+For shared libraries on Mach-O systems (e.g. macOS, iOS)
+the :prop_tgt:`MACHO_COMPATIBILITY_VERSION` property corresponds to the
+*compatibility version* and ``MACHO_CURRENT_VERSION`` corresponds to the
+*current version*.  These are both embedded in the shared library binary
+and can be checked with the ``otool -L <binary>`` command.
+
+It should be noted that the ``MACHO_CURRENT_VERSION`` and
+:prop_tgt:`MACHO_COMPATIBILITY_VERSION` properties do not affect the file
+names or version-related symlinks that CMake generates for the library.
+The :prop_tgt:`VERSION` and :prop_tgt:`SOVERSION` target properties still
+control the file and symlink names.  The ``install_name`` is also still
+controlled by :prop_tgt:`SOVERSION`.
+
+When ``MACHO_CURRENT_VERSION`` and :prop_tgt:`MACHO_COMPATIBILITY_VERSION`
+are not given, :prop_tgt:`VERSION` and :prop_tgt:`SOVERSION` are used for
+the version details to be embedded in the binaries respectively.
+The ``MACHO_CURRENT_VERSION`` and :prop_tgt:`MACHO_COMPATIBILITY_VERSION`
+properties only need to be given if the project needs to decouple the file
+and symlink naming from the version details embedded in the binaries
+(e.g. to match libtool conventions).
diff --git a/share/cmake-3.18/Help/prop_tgt/MACOSX_BUNDLE.rst b/share/cmake-3.22/Help/prop_tgt/MACOSX_BUNDLE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/MACOSX_BUNDLE.rst
rename to share/cmake-3.22/Help/prop_tgt/MACOSX_BUNDLE.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/MACOSX_BUNDLE_INFO_PLIST.rst b/share/cmake-3.22/Help/prop_tgt/MACOSX_BUNDLE_INFO_PLIST.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/MACOSX_BUNDLE_INFO_PLIST.rst
rename to share/cmake-3.22/Help/prop_tgt/MACOSX_BUNDLE_INFO_PLIST.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/MACOSX_FRAMEWORK_INFO_PLIST.rst b/share/cmake-3.22/Help/prop_tgt/MACOSX_FRAMEWORK_INFO_PLIST.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/MACOSX_FRAMEWORK_INFO_PLIST.rst
rename to share/cmake-3.22/Help/prop_tgt/MACOSX_FRAMEWORK_INFO_PLIST.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/MACOSX_RPATH.rst b/share/cmake-3.22/Help/prop_tgt/MACOSX_RPATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/MACOSX_RPATH.rst
rename to share/cmake-3.22/Help/prop_tgt/MACOSX_RPATH.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/MANUALLY_ADDED_DEPENDENCIES.rst b/share/cmake-3.22/Help/prop_tgt/MANUALLY_ADDED_DEPENDENCIES.rst
new file mode 100644
index 0000000..72871b3
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/MANUALLY_ADDED_DEPENDENCIES.rst
@@ -0,0 +1,10 @@
+MANUALLY_ADDED_DEPENDENCIES
+---------------------------
+
+.. versionadded:: 3.8
+
+Get manually added dependencies to other top-level targets.
+
+This read-only property can be used to query all dependencies that
+were added for this target with the :command:`add_dependencies`
+command.
diff --git a/share/cmake-3.18/Help/prop_tgt/MAP_IMPORTED_CONFIG_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/MAP_IMPORTED_CONFIG_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/MAP_IMPORTED_CONFIG_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/MAP_IMPORTED_CONFIG_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/MSVC_RUNTIME_LIBRARY-VALUES.txt b/share/cmake-3.22/Help/prop_tgt/MSVC_RUNTIME_LIBRARY-VALUES.txt
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/MSVC_RUNTIME_LIBRARY-VALUES.txt
rename to share/cmake-3.22/Help/prop_tgt/MSVC_RUNTIME_LIBRARY-VALUES.txt
diff --git a/share/cmake-3.22/Help/prop_tgt/MSVC_RUNTIME_LIBRARY.rst b/share/cmake-3.22/Help/prop_tgt/MSVC_RUNTIME_LIBRARY.rst
new file mode 100644
index 0000000..9b978b2
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/MSVC_RUNTIME_LIBRARY.rst
@@ -0,0 +1,31 @@
+MSVC_RUNTIME_LIBRARY
+--------------------
+
+.. versionadded:: 3.15
+
+Select the MSVC runtime library for use by compilers targeting the MSVC ABI.
+
+The allowed values are:
+
+.. include:: MSVC_RUNTIME_LIBRARY-VALUES.txt
+
+Use :manual:`generator expressions <cmake-generator-expressions(7)>` to
+support per-configuration specification.  For example, the code:
+
+.. code-block:: cmake
+
+  add_executable(foo foo.c)
+  set_property(TARGET foo PROPERTY
+    MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
+
+selects for the target ``foo`` a multi-threaded statically-linked runtime
+library with or without debug information depending on the configuration.
+
+If this property is not set then CMake uses the default value
+``MultiThreaded$<$<CONFIG:Debug>:Debug>DLL`` to select a MSVC runtime library.
+
+.. note::
+
+  This property has effect only when policy :policy:`CMP0091` is set to ``NEW``
+  prior to the first :command:`project` or :command:`enable_language` command
+  that enables a language using a compiler targeting the MSVC ABI.
diff --git a/share/cmake-3.18/Help/prop_tgt/NAME.rst b/share/cmake-3.22/Help/prop_tgt/NAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/NAME.rst
rename to share/cmake-3.22/Help/prop_tgt/NAME.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/NO_SONAME.rst b/share/cmake-3.22/Help/prop_tgt/NO_SONAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/NO_SONAME.rst
rename to share/cmake-3.22/Help/prop_tgt/NO_SONAME.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/NO_SYSTEM_FROM_IMPORTED.rst b/share/cmake-3.22/Help/prop_tgt/NO_SYSTEM_FROM_IMPORTED.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/NO_SYSTEM_FROM_IMPORTED.rst
rename to share/cmake-3.22/Help/prop_tgt/NO_SYSTEM_FROM_IMPORTED.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/OBJCXX_EXTENSIONS.rst b/share/cmake-3.22/Help/prop_tgt/OBJCXX_EXTENSIONS.rst
new file mode 100644
index 0000000..2a15dec
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/OBJCXX_EXTENSIONS.rst
@@ -0,0 +1,24 @@
+OBJCXX_EXTENSIONS
+-----------------
+
+.. versionadded:: 3.16
+
+Boolean specifying whether compiler specific extensions are requested.
+
+This property specifies whether compiler specific extensions should be
+used.  For some compilers, this results in adding a flag such
+as ``-std=gnu++11`` instead of ``-std=c++11`` to the compile line.  This
+property is ``ON`` by default. The basic ObjC++ standard level is
+controlled by the :prop_tgt:`OBJCXX_STANDARD` target property.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+If the property is not set, and the project has set the :prop_tgt:`CXX_EXTENSIONS`,
+the value of :prop_tgt:`CXX_EXTENSIONS` is set for :prop_tgt:`OBJCXX_EXTENSIONS`.
+
+This property is initialized by the value of
+the :variable:`CMAKE_OBJCXX_EXTENSIONS` variable if set when a target is
+created and otherwise by the value of
+:variable:`CMAKE_OBJCXX_EXTENSIONS_DEFAULT <CMAKE_<LANG>_EXTENSIONS_DEFAULT>`
+(see :policy:`CMP0128`).
diff --git a/share/cmake-3.22/Help/prop_tgt/OBJCXX_STANDARD.rst b/share/cmake-3.22/Help/prop_tgt/OBJCXX_STANDARD.rst
new file mode 100644
index 0000000..654e687
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/OBJCXX_STANDARD.rst
@@ -0,0 +1,57 @@
+OBJCXX_STANDARD
+---------------
+
+.. versionadded:: 3.16
+
+The ObjC++ standard whose features are requested to build this target.
+
+This property specifies the ObjC++ standard whose features are requested
+to build this target.  For some compilers, this results in adding a
+flag such as ``-std=gnu++11`` to the compile line.
+
+Supported values are:
+
+``98``
+  Objective C++98
+
+``11``
+  Objective C++11
+
+``14``
+  Objective C++14
+
+``17``
+  Objective C++17
+
+``20``
+  Objective C++20
+
+``23``
+  .. versionadded:: 3.20
+
+  Objective C++23
+
+If the value requested does not result in a compile flag being added for
+the compiler in use, a previous standard flag will be added instead.  This
+means that using:
+
+.. code-block:: cmake
+
+  set_property(TARGET tgt PROPERTY OBJCXX_STANDARD 11)
+
+with a compiler which does not support ``-std=gnu++11`` or an equivalent
+flag will not result in an error or warning, but will instead add the
+``-std=gnu++98`` flag if supported.  This "decay" behavior may be controlled
+with the :prop_tgt:`OBJCXX_STANDARD_REQUIRED` target property.
+Additionally, the :prop_tgt:`OBJCXX_EXTENSIONS` target property may be used to
+control whether compiler-specific extensions are enabled on a per-target basis.
+
+If the property is not set, and the project has set the :prop_tgt:`CXX_STANDARD`,
+the value of :prop_tgt:`CXX_STANDARD` is set for :prop_tgt:`OBJCXX_STANDARD`.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_OBJCXX_STANDARD` variable if it is set when a target
+is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/OBJCXX_STANDARD_REQUIRED.rst b/share/cmake-3.22/Help/prop_tgt/OBJCXX_STANDARD_REQUIRED.rst
new file mode 100644
index 0000000..3cee740
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/OBJCXX_STANDARD_REQUIRED.rst
@@ -0,0 +1,22 @@
+OBJCXX_STANDARD_REQUIRED
+------------------------
+
+.. versionadded:: 3.16
+
+Boolean describing whether the value of :prop_tgt:`OBJCXX_STANDARD` is a requirement.
+
+If this property is set to ``ON``, then the value of the
+:prop_tgt:`OBJCXX_STANDARD` target property is treated as a requirement.  If this
+property is ``OFF`` or unset, the :prop_tgt:`OBJCXX_STANDARD` target property is
+treated as optional and may "decay" to a previous standard if the requested is
+not available.
+
+If the property is not set, and the project has set the :prop_tgt:`CXX_STANDARD_REQUIRED`,
+the value of :prop_tgt:`CXX_STANDARD_REQUIRED` is set for :prop_tgt:`OBJCXX_STANDARD_REQUIRED`.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_OBJCXX_STANDARD_REQUIRED` variable if it is set when a
+target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/OBJC_EXTENSIONS.rst b/share/cmake-3.22/Help/prop_tgt/OBJC_EXTENSIONS.rst
new file mode 100644
index 0000000..cd72e5f
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/OBJC_EXTENSIONS.rst
@@ -0,0 +1,24 @@
+OBJC_EXTENSIONS
+---------------
+
+.. versionadded:: 3.16
+
+Boolean specifying whether compiler specific extensions are requested.
+
+This property specifies whether compiler specific extensions should be
+used.  For some compilers, this results in adding a flag such
+as ``-std=gnu11`` instead of ``-std=c11`` to the compile line.  This
+property is ``ON`` by default. The basic OBJC standard level is
+controlled by the :prop_tgt:`OBJC_STANDARD` target property.
+
+If the property is not set, and the project has set the :prop_tgt:`C_EXTENSIONS`,
+the value of :prop_tgt:`C_EXTENSIONS` is set for :prop_tgt:`OBJC_EXTENSIONS`.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_OBJC_EXTENSIONS` variable if set when a target is created
+and otherwise by the value of
+:variable:`CMAKE_OBJC_EXTENSIONS_DEFAULT <CMAKE_<LANG>_EXTENSIONS_DEFAULT>`
+(see :policy:`CMP0128`).
diff --git a/share/cmake-3.22/Help/prop_tgt/OBJC_STANDARD.rst b/share/cmake-3.22/Help/prop_tgt/OBJC_STANDARD.rst
new file mode 100644
index 0000000..2d27bcf
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/OBJC_STANDARD.rst
@@ -0,0 +1,46 @@
+OBJC_STANDARD
+-------------
+
+.. versionadded:: 3.16
+
+The OBJC standard whose features are requested to build this target.
+
+This property specifies the OBJC standard whose features are requested
+to build this target.  For some compilers, this results in adding a
+flag such as ``-std=gnu11`` to the compile line.
+
+Supported values are:
+
+``90``
+  Objective C89/C90
+
+``99``
+  Objective C99
+
+``11``
+  Objective C11
+
+If the value requested does not result in a compile flag being added for
+the compiler in use, a previous standard flag will be added instead.  This
+means that using:
+
+.. code-block:: cmake
+
+  set_property(TARGET tgt PROPERTY OBJC_STANDARD 11)
+
+with a compiler which does not support ``-std=gnu11`` or an equivalent
+flag will not result in an error or warning, but will instead add the
+``-std=gnu99`` or ``-std=gnu90`` flag if supported.  This "decay" behavior may
+be controlled with the :prop_tgt:`OBJC_STANDARD_REQUIRED` target property.
+Additionally, the :prop_tgt:`OBJC_EXTENSIONS` target property may be used to
+control whether compiler-specific extensions are enabled on a per-target basis.
+
+If the property is not set, and the project has set the :prop_tgt:`C_STANDARD`,
+the value of :prop_tgt:`C_STANDARD` is set for :prop_tgt:`OBJC_STANDARD`.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_OBJC_STANDARD` variable if it is set when a target
+is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/OBJC_STANDARD_REQUIRED.rst b/share/cmake-3.22/Help/prop_tgt/OBJC_STANDARD_REQUIRED.rst
new file mode 100644
index 0000000..11547c8
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/OBJC_STANDARD_REQUIRED.rst
@@ -0,0 +1,22 @@
+OBJC_STANDARD_REQUIRED
+----------------------
+
+.. versionadded:: 3.16
+
+Boolean describing whether the value of :prop_tgt:`OBJC_STANDARD` is a requirement.
+
+If this property is set to ``ON``, then the value of the
+:prop_tgt:`OBJC_STANDARD` target property is treated as a requirement.  If this
+property is ``OFF`` or unset, the :prop_tgt:`OBJC_STANDARD` target property is
+treated as optional and may "decay" to a previous standard if the requested is
+not available.
+
+If the property is not set, and the project has set the :prop_tgt:`C_STANDARD_REQUIRED`,
+the value of :prop_tgt:`C_STANDARD_REQUIRED` is set for :prop_tgt:`OBJC_STANDARD_REQUIRED`.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
+
+This property is initialized by the value of
+the :variable:`CMAKE_OBJC_STANDARD_REQUIRED` variable if it is set when a
+target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/OPTIMIZE_DEPENDENCIES.rst b/share/cmake-3.22/Help/prop_tgt/OPTIMIZE_DEPENDENCIES.rst
new file mode 100644
index 0000000..d17251f
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/OPTIMIZE_DEPENDENCIES.rst
@@ -0,0 +1,43 @@
+OPTIMIZE_DEPENDENCIES
+---------------------
+
+.. versionadded:: 3.19
+
+Activates dependency optimization of static and object libraries.
+
+When this property is set to true, some dependencies for a static or object
+library may be removed at generation time if they are not necessary to build
+the library, since static and object libraries don't actually link against
+anything.
+
+If a static or object library has dependency optimization enabled, it first
+discards all dependencies. Then, it looks through all of the direct and
+indirect dependencies that it initially had, and adds them back if they meet
+any of the following criteria:
+
+* The dependency was added to the library by :command:`add_dependencies`.
+* The dependency was added to the library through a source file in the library
+  generated by a custom command that uses the dependency.
+* The dependency has any ``PRE_BUILD``, ``PRE_LINK``, or ``POST_BUILD`` custom
+  commands associated with it.
+* The dependency contains any source files that were generated by a custom
+  command.
+* The dependency contains any languages which produce side effects that are
+  relevant to the library. Currently, all languages except C, C++, Objective-C,
+  Objective-C++, assembly, and CUDA are assumed to produce side effects.
+  However, side effects from one language are assumed not to be relevant to
+  another (for example, a Fortran library is assumed to not have any side
+  effects that are relevant for a Swift library.)
+
+As an example, assume you have a static Fortran library which depends on a
+static C library, which in turn depends on a static Fortran library. The
+top-level Fortran library has optimization enabled, but the middle C library
+does not. If you build the top Fortran library, the bottom Fortran library will
+also build, but not the middle C library, since the C library does not have any
+side effects that are relevant for the Fortran library. However, if you build
+the middle C library, the bottom Fortran library will also build, even though
+it does not have any side effects that are relevant to the C library, since the
+C library does not have optimization enabled.
+
+This property is initialized by the value of the
+:variable:`CMAKE_OPTIMIZE_DEPENDENCIES` variable when the target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/OSX_ARCHITECTURES.rst b/share/cmake-3.22/Help/prop_tgt/OSX_ARCHITECTURES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/OSX_ARCHITECTURES.rst
rename to share/cmake-3.22/Help/prop_tgt/OSX_ARCHITECTURES.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/OSX_ARCHITECTURES_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/OSX_ARCHITECTURES_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/OSX_ARCHITECTURES_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/OSX_ARCHITECTURES_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/OUTPUT_NAME.rst b/share/cmake-3.22/Help/prop_tgt/OUTPUT_NAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/OUTPUT_NAME.rst
rename to share/cmake-3.22/Help/prop_tgt/OUTPUT_NAME.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/OUTPUT_NAME_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/OUTPUT_NAME_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/OUTPUT_NAME_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/OUTPUT_NAME_CONFIG.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/PCH_INSTANTIATE_TEMPLATES.rst b/share/cmake-3.22/Help/prop_tgt/PCH_INSTANTIATE_TEMPLATES.rst
new file mode 100644
index 0000000..7c1af2a
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/PCH_INSTANTIATE_TEMPLATES.rst
@@ -0,0 +1,13 @@
+PCH_INSTANTIATE_TEMPLATES
+-------------------------
+
+.. versionadded:: 3.19
+
+When this property is set to true, the precompiled header compiler options
+will contain a flag to instantiate templates during the generation of the PCH
+if supported. This can significantly improve compile times. Supported in Clang
+since version 11.
+
+This property is initialized by the value of the
+:variable:`CMAKE_PCH_INSTANTIATE_TEMPLATES` variable if it is set when a target
+is created.  If that variable is not set, the property defaults to ``ON``.
diff --git a/share/cmake-3.22/Help/prop_tgt/PCH_WARN_INVALID.rst b/share/cmake-3.22/Help/prop_tgt/PCH_WARN_INVALID.rst
new file mode 100644
index 0000000..2d5ec55
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/PCH_WARN_INVALID.rst
@@ -0,0 +1,12 @@
+PCH_WARN_INVALID
+----------------
+
+.. versionadded:: 3.18
+
+When this property is set to true, the precompile header compiler options
+will contain a compiler flag which should warn about invalid precompiled
+headers e.g. ``-Winvalid-pch`` for GNU compiler.
+
+This property is initialized by the value of the
+:variable:`CMAKE_PCH_WARN_INVALID` variable if it is set when a target is
+created.  If that variable is not set, the property defaults to ``ON``.
diff --git a/share/cmake-3.18/Help/prop_tgt/PDB_NAME.rst b/share/cmake-3.22/Help/prop_tgt/PDB_NAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/PDB_NAME.rst
rename to share/cmake-3.22/Help/prop_tgt/PDB_NAME.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/PDB_NAME_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/PDB_NAME_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/PDB_NAME_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/PDB_NAME_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/PDB_NOTE.txt b/share/cmake-3.22/Help/prop_tgt/PDB_NOTE.txt
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/PDB_NOTE.txt
rename to share/cmake-3.22/Help/prop_tgt/PDB_NOTE.txt
diff --git a/share/cmake-3.18/Help/prop_tgt/PDB_OUTPUT_DIRECTORY.rst b/share/cmake-3.22/Help/prop_tgt/PDB_OUTPUT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/PDB_OUTPUT_DIRECTORY.rst
rename to share/cmake-3.22/Help/prop_tgt/PDB_OUTPUT_DIRECTORY.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/PDB_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/PDB_OUTPUT_DIRECTORY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/PDB_OUTPUT_DIRECTORY_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/PDB_OUTPUT_DIRECTORY_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/POSITION_INDEPENDENT_CODE.rst b/share/cmake-3.22/Help/prop_tgt/POSITION_INDEPENDENT_CODE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/POSITION_INDEPENDENT_CODE.rst
rename to share/cmake-3.22/Help/prop_tgt/POSITION_INDEPENDENT_CODE.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/POST_INSTALL_SCRIPT.rst b/share/cmake-3.22/Help/prop_tgt/POST_INSTALL_SCRIPT.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/POST_INSTALL_SCRIPT.rst
rename to share/cmake-3.22/Help/prop_tgt/POST_INSTALL_SCRIPT.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/PRECOMPILE_HEADERS.rst b/share/cmake-3.22/Help/prop_tgt/PRECOMPILE_HEADERS.rst
new file mode 100644
index 0000000..af27947
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/PRECOMPILE_HEADERS.rst
@@ -0,0 +1,14 @@
+PRECOMPILE_HEADERS
+------------------
+
+.. versionadded:: 3.16
+
+List of header files to precompile.
+
+This property holds a :ref:`semicolon-separated list <CMake Language Lists>`
+of header files to precompile specified so far for its target.
+Use the :command:`target_precompile_headers` command to append more header
+files.
+
+This property supports
+:manual:`generator expressions <cmake-generator-expressions(7)>`.
diff --git a/share/cmake-3.22/Help/prop_tgt/PRECOMPILE_HEADERS_REUSE_FROM.rst b/share/cmake-3.22/Help/prop_tgt/PRECOMPILE_HEADERS_REUSE_FROM.rst
new file mode 100644
index 0000000..6f5635b
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/PRECOMPILE_HEADERS_REUSE_FROM.rst
@@ -0,0 +1,9 @@
+PRECOMPILE_HEADERS_REUSE_FROM
+-----------------------------
+
+.. versionadded:: 3.16
+
+Target from which to reuse the precompiled headers build artifact.
+
+See the second signature of :command:`target_precompile_headers` command
+for more detailed information.
diff --git a/share/cmake-3.18/Help/prop_tgt/PREFIX.rst b/share/cmake-3.22/Help/prop_tgt/PREFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/PREFIX.rst
rename to share/cmake-3.22/Help/prop_tgt/PREFIX.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/PRE_INSTALL_SCRIPT.rst b/share/cmake-3.22/Help/prop_tgt/PRE_INSTALL_SCRIPT.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/PRE_INSTALL_SCRIPT.rst
rename to share/cmake-3.22/Help/prop_tgt/PRE_INSTALL_SCRIPT.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/PRIVATE_HEADER.rst b/share/cmake-3.22/Help/prop_tgt/PRIVATE_HEADER.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/PRIVATE_HEADER.rst
rename to share/cmake-3.22/Help/prop_tgt/PRIVATE_HEADER.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/PROJECT_LABEL.rst b/share/cmake-3.22/Help/prop_tgt/PROJECT_LABEL.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/PROJECT_LABEL.rst
rename to share/cmake-3.22/Help/prop_tgt/PROJECT_LABEL.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/PUBLIC_HEADER.rst b/share/cmake-3.22/Help/prop_tgt/PUBLIC_HEADER.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/PUBLIC_HEADER.rst
rename to share/cmake-3.22/Help/prop_tgt/PUBLIC_HEADER.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/RESOURCE.rst b/share/cmake-3.22/Help/prop_tgt/RESOURCE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/RESOURCE.rst
rename to share/cmake-3.22/Help/prop_tgt/RESOURCE.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/RULE_LAUNCH_COMPILE.rst b/share/cmake-3.22/Help/prop_tgt/RULE_LAUNCH_COMPILE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/RULE_LAUNCH_COMPILE.rst
rename to share/cmake-3.22/Help/prop_tgt/RULE_LAUNCH_COMPILE.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/RULE_LAUNCH_CUSTOM.rst b/share/cmake-3.22/Help/prop_tgt/RULE_LAUNCH_CUSTOM.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/RULE_LAUNCH_CUSTOM.rst
rename to share/cmake-3.22/Help/prop_tgt/RULE_LAUNCH_CUSTOM.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/RULE_LAUNCH_LINK.rst b/share/cmake-3.22/Help/prop_tgt/RULE_LAUNCH_LINK.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/RULE_LAUNCH_LINK.rst
rename to share/cmake-3.22/Help/prop_tgt/RULE_LAUNCH_LINK.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY.rst b/share/cmake-3.22/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY.rst
new file mode 100644
index 0000000..3c37546
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY.rst
@@ -0,0 +1,9 @@
+RUNTIME_OUTPUT_DIRECTORY
+------------------------
+
+.. |XXX| replace:: :ref:`RUNTIME <Runtime Output Artifacts>`
+.. |xxx| replace:: runtime
+.. |CMAKE_XXX_OUTPUT_DIRECTORY| replace:: :variable:`CMAKE_RUNTIME_OUTPUT_DIRECTORY`
+.. include:: XXX_OUTPUT_DIRECTORY.txt
+
+See also the :prop_tgt:`RUNTIME_OUTPUT_DIRECTORY_<CONFIG>` target property.
diff --git a/share/cmake-3.18/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/RUNTIME_OUTPUT_NAME.rst b/share/cmake-3.22/Help/prop_tgt/RUNTIME_OUTPUT_NAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/RUNTIME_OUTPUT_NAME.rst
rename to share/cmake-3.22/Help/prop_tgt/RUNTIME_OUTPUT_NAME.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/RUNTIME_OUTPUT_NAME_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/RUNTIME_OUTPUT_NAME_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/RUNTIME_OUTPUT_NAME_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/RUNTIME_OUTPUT_NAME_CONFIG.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/SKIP_BUILD_RPATH.rst b/share/cmake-3.22/Help/prop_tgt/SKIP_BUILD_RPATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/SKIP_BUILD_RPATH.rst
rename to share/cmake-3.22/Help/prop_tgt/SKIP_BUILD_RPATH.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/SOURCES.rst b/share/cmake-3.22/Help/prop_tgt/SOURCES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/SOURCES.rst
rename to share/cmake-3.22/Help/prop_tgt/SOURCES.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/SOURCE_DIR.rst b/share/cmake-3.22/Help/prop_tgt/SOURCE_DIR.rst
new file mode 100644
index 0000000..78ce220
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/SOURCE_DIR.rst
@@ -0,0 +1,8 @@
+SOURCE_DIR
+----------
+
+.. versionadded:: 3.4
+
+This read-only property reports the value of the
+:variable:`CMAKE_CURRENT_SOURCE_DIR` variable in the directory in which
+the target was defined.
diff --git a/share/cmake-3.18/Help/prop_tgt/SOVERSION.rst b/share/cmake-3.22/Help/prop_tgt/SOVERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/SOVERSION.rst
rename to share/cmake-3.22/Help/prop_tgt/SOVERSION.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/STATIC_LIBRARY_FLAGS.rst b/share/cmake-3.22/Help/prop_tgt/STATIC_LIBRARY_FLAGS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/STATIC_LIBRARY_FLAGS.rst
rename to share/cmake-3.22/Help/prop_tgt/STATIC_LIBRARY_FLAGS.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/STATIC_LIBRARY_FLAGS_CONFIG.rst b/share/cmake-3.22/Help/prop_tgt/STATIC_LIBRARY_FLAGS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/STATIC_LIBRARY_FLAGS_CONFIG.rst
rename to share/cmake-3.22/Help/prop_tgt/STATIC_LIBRARY_FLAGS_CONFIG.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/STATIC_LIBRARY_OPTIONS.rst b/share/cmake-3.22/Help/prop_tgt/STATIC_LIBRARY_OPTIONS.rst
new file mode 100644
index 0000000..f5d9437
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/STATIC_LIBRARY_OPTIONS.rst
@@ -0,0 +1,24 @@
+STATIC_LIBRARY_OPTIONS
+----------------------
+
+.. versionadded:: 3.13
+
+Archiver (or MSVC librarian) flags for a static library target.
+Targets that are shared libraries, modules, or executables need to use
+the :prop_tgt:`LINK_OPTIONS` target property.
+
+This property holds a :ref:`semicolon-separated list <CMake Language Lists>` of options
+specified so far for its target.  Use :command:`set_target_properties` or
+:command:`set_property` commands to set its content.
+
+Contents of ``STATIC_LIBRARY_OPTIONS`` may use "generator expressions" with the
+syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)` manual
+for available expressions.  See the :manual:`cmake-buildsystem(7)` manual
+for more on defining buildsystem properties.
+
+.. note::
+
+  This property must be used in preference to :prop_tgt:`STATIC_LIBRARY_FLAGS`
+  property.
+
+.. include:: ../command/OPTIONS_SHELL.txt
diff --git a/share/cmake-3.18/Help/prop_tgt/SUFFIX.rst b/share/cmake-3.22/Help/prop_tgt/SUFFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/SUFFIX.rst
rename to share/cmake-3.22/Help/prop_tgt/SUFFIX.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/Swift_DEPENDENCIES_FILE.rst b/share/cmake-3.22/Help/prop_tgt/Swift_DEPENDENCIES_FILE.rst
new file mode 100644
index 0000000..0f944b6
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/Swift_DEPENDENCIES_FILE.rst
@@ -0,0 +1,7 @@
+Swift_DEPENDENCIES_FILE
+-----------------------
+
+.. versionadded:: 3.15
+
+This property sets the path for the Swift dependency file (swiftdep) for the
+target.  If one is not specified, it will default to ``<TARGET>.swiftdeps``.
diff --git a/share/cmake-3.22/Help/prop_tgt/Swift_LANGUAGE_VERSION.rst b/share/cmake-3.22/Help/prop_tgt/Swift_LANGUAGE_VERSION.rst
new file mode 100644
index 0000000..afc6b31
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/Swift_LANGUAGE_VERSION.rst
@@ -0,0 +1,8 @@
+Swift_LANGUAGE_VERSION
+----------------------
+
+.. versionadded:: 3.16
+
+This property sets the language version for the Swift sources in the target.  If
+one is not specified, it will default to ``<CMAKE_Swift_LANGUAGE_VERSION>`` if
+specified, otherwise it is the latest version supported by the compiler.
diff --git a/share/cmake-3.22/Help/prop_tgt/Swift_MODULE_DIRECTORY.rst b/share/cmake-3.22/Help/prop_tgt/Swift_MODULE_DIRECTORY.rst
new file mode 100644
index 0000000..619377a
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/Swift_MODULE_DIRECTORY.rst
@@ -0,0 +1,12 @@
+Swift_MODULE_DIRECTORY
+----------------------
+
+.. versionadded:: 3.15
+
+Specify output directory for Swift modules provided by the target.
+
+If the target contains Swift source files, this specifies the directory in which
+the modules will be placed.  When this property is not set, the modules will be
+placed in the build directory corresponding to the target's source directory.
+If the variable :variable:`CMAKE_Swift_MODULE_DIRECTORY` is set when a target is
+created its value is used to initialize this property.
diff --git a/share/cmake-3.22/Help/prop_tgt/Swift_MODULE_NAME.rst b/share/cmake-3.22/Help/prop_tgt/Swift_MODULE_NAME.rst
new file mode 100644
index 0000000..d941b54
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/Swift_MODULE_NAME.rst
@@ -0,0 +1,7 @@
+Swift_MODULE_NAME
+-----------------
+
+.. versionadded:: 3.15
+
+This property specifies the name of the Swift module.  It is defaulted to the
+name of the target.
diff --git a/share/cmake-3.18/Help/prop_tgt/TYPE.rst b/share/cmake-3.22/Help/prop_tgt/TYPE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/TYPE.rst
rename to share/cmake-3.22/Help/prop_tgt/TYPE.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD.rst b/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD.rst
new file mode 100644
index 0000000..f827a20
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD.rst
@@ -0,0 +1,87 @@
+UNITY_BUILD
+-----------
+
+.. versionadded:: 3.16
+
+When this property is set to true, the target source files will be combined
+into batches for faster compilation.  This is done by creating a (set of)
+unity sources which ``#include`` the original sources, then compiling these
+unity sources instead of the originals.  This is known as a *Unity* or *Jumbo*
+build.
+
+CMake provides different algorithms for selecting which sources are grouped
+together into a *bucket*. Algorithm selection is decided by the
+:prop_tgt:`UNITY_BUILD_MODE` target property, which has the following acceptable
+values:
+
+* ``BATCH``
+  When in this mode CMake determines which files are grouped together.
+  The :prop_tgt:`UNITY_BUILD_BATCH_SIZE` property controls the upper limit on
+  how many sources can be combined per unity source file.
+
+* ``GROUP``
+  When in this mode each target explicitly specifies how to group
+  source files. Each source file that has the same
+  :prop_sf:`UNITY_GROUP` value will be grouped together. Any sources
+  that don't have this property will be compiled individually. The
+  :prop_tgt:`UNITY_BUILD_BATCH_SIZE` property is ignored when using
+  this mode.
+
+If no explicit :prop_tgt:`UNITY_BUILD_MODE` has been specified, CMake will
+default to ``BATCH``.
+
+Unity builds are not currently supported for all languages.  CMake version
+|release| supports combining ``C`` and ``CXX`` source files.  For targets that
+mix source files from more than one language, CMake will separate the languages
+such that each generated unity source file only contains sources for a single
+language.
+
+This property is initialized by the value of the :variable:`CMAKE_UNITY_BUILD`
+variable when a target is created.
+
+.. note::
+
+  Projects should not directly set the ``UNITY_BUILD`` property or its
+  associated :variable:`CMAKE_UNITY_BUILD` variable to true.  Depending
+  on the capabilities of the build machine and compiler used, it might or
+  might not be appropriate to enable unity builds.  Therefore, this feature
+  should be under developer control, which would normally be through the
+  developer choosing whether or not to set the :variable:`CMAKE_UNITY_BUILD`
+  variable on the :manual:`cmake(1)` command line or some other equivalent
+  method.  However, it IS recommended to set the ``UNITY_BUILD`` target
+  property to false if it is known that enabling unity builds for the
+  target can lead to problems.
+
+ODR (One definition rule) errors
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+When multiple source files are included into one source file, as is done
+for unity builds, it can potentially lead to ODR errors.  CMake provides
+a number of measures to help address such problems:
+
+* Any source file that has a non-empty :prop_sf:`COMPILE_OPTIONS`,
+  :prop_sf:`COMPILE_DEFINITIONS`, :prop_sf:`COMPILE_FLAGS`, or
+  :prop_sf:`INCLUDE_DIRECTORIES` source property will not be combined
+  into a unity source.
+
+* Projects can prevent an individual source file from being combined into
+  a unity source by setting its :prop_sf:`SKIP_UNITY_BUILD_INCLUSION`
+  source property to true.  This can be a more effective way to prevent
+  problems with specific files than disabling unity builds for an entire
+  target.
+
+* Projects can set :prop_tgt:`UNITY_BUILD_UNIQUE_ID` to cause a valid
+  C-identifier to be generated which is unique per file in a unity
+  build.  This can be used to avoid problems with anonymous namespaces
+  in unity builds.
+
+* The :prop_tgt:`UNITY_BUILD_CODE_BEFORE_INCLUDE` and
+  :prop_tgt:`UNITY_BUILD_CODE_AFTER_INCLUDE` target properties can be used
+  to inject code into the unity source files before and after every
+  ``#include`` statement.
+
+* The order of source files added to the target via commands like
+  :command:`add_library`, :command:`add_executable` or
+  :command:`target_sources` will be preserved in the generated unity source
+  files.  This can be used to manually enforce a specific grouping based on
+  the :prop_tgt:`UNITY_BUILD_BATCH_SIZE` target property.
diff --git a/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD_BATCH_SIZE.rst b/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD_BATCH_SIZE.rst
new file mode 100644
index 0000000..3886ec9
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD_BATCH_SIZE.rst
@@ -0,0 +1,25 @@
+UNITY_BUILD_BATCH_SIZE
+----------------------
+
+.. versionadded:: 3.16
+
+Specifies the maximum number of source files that can be combined into any one
+unity source file when unity builds are enabled by the :prop_tgt:`UNITY_BUILD`
+target property.  The original source files will be distributed across as many
+unity source files as necessary to honor this limit.
+
+The initial value for this property is taken from the
+:variable:`CMAKE_UNITY_BUILD_BATCH_SIZE` variable when the target is created.
+If that variable has not been set, the initial value will be 8.
+
+The batch size needs to be selected carefully.  If set too high, the size of
+the combined source files could result in the compiler using excessive memory
+or hitting other similar limits.  In extreme cases, this can even result in
+build failure.  On the other hand, if the batch size is too low, there will be
+little gain in build performance.
+
+Although strongly discouraged, the batch size may be set to a value of 0 to
+combine all the sources for the target into a single unity file, regardless of
+how many sources are involved.  This runs the risk of creating an excessively
+large unity source file and negatively impacting the build performance, so
+a value of 0 is not generally recommended.
diff --git a/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD_CODE_AFTER_INCLUDE.rst b/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD_CODE_AFTER_INCLUDE.rst
new file mode 100644
index 0000000..ac2b19c
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD_CODE_AFTER_INCLUDE.rst
@@ -0,0 +1,21 @@
+UNITY_BUILD_CODE_AFTER_INCLUDE
+------------------------------
+
+.. versionadded:: 3.16
+
+Code snippet which is included verbatim by the :prop_tgt:`UNITY_BUILD`
+feature just after every ``#include`` statement in the generated unity
+source files.  For example:
+
+.. code-block:: cmake
+
+  set(after [[
+  #if defined(NOMINMAX)
+  #undef NOMINMAX
+  #endif
+  ]])
+  set_target_properties(myTarget PROPERTIES
+    UNITY_BUILD_CODE_AFTER_INCLUDE "${after}"
+  )
+
+See also :prop_tgt:`UNITY_BUILD_CODE_BEFORE_INCLUDE`.
diff --git a/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD_CODE_BEFORE_INCLUDE.rst b/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD_CODE_BEFORE_INCLUDE.rst
new file mode 100644
index 0000000..6f0d56b
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD_CODE_BEFORE_INCLUDE.rst
@@ -0,0 +1,21 @@
+UNITY_BUILD_CODE_BEFORE_INCLUDE
+-------------------------------
+
+.. versionadded:: 3.16
+
+Code snippet which is included verbatim by the :prop_tgt:`UNITY_BUILD`
+feature just before every ``#include`` statement in the generated unity
+source files.  For example:
+
+.. code-block:: cmake
+
+  set(before [[
+  #if !defined(NOMINMAX)
+  #define NOMINMAX
+  #endif
+  ]])
+  set_target_properties(myTarget PROPERTIES
+    UNITY_BUILD_CODE_BEFORE_INCLUDE "${before}"
+  )
+
+See also :prop_tgt:`UNITY_BUILD_CODE_AFTER_INCLUDE`.
diff --git a/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD_MODE.rst b/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD_MODE.rst
new file mode 100644
index 0000000..003451e
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD_MODE.rst
@@ -0,0 +1,60 @@
+UNITY_BUILD_MODE
+----------------
+
+.. versionadded:: 3.18
+
+CMake provides different algorithms for selecting which sources are grouped
+together into a *bucket*. Selection is decided by this property,
+which has the following acceptable values:
+
+``BATCH``
+  When in this mode CMake determines which files are grouped together.
+  The :prop_tgt:`UNITY_BUILD_BATCH_SIZE` property controls the upper limit on
+  how many sources can be combined per unity source file.
+
+  Example usage:
+
+  .. code-block:: cmake
+
+    add_library(example_library
+                source1.cxx
+                source2.cxx
+                source3.cxx
+                source4.cxx)
+
+    set_target_properties(example_library PROPERTIES
+                          UNITY_BUILD_MODE BATCH
+                          UNITY_BUILD_BATCH_SIZE 2
+                          )
+
+``GROUP``
+  When in this mode each target explicitly specifies how to group
+  source files. Each source file that has the same
+  :prop_sf:`UNITY_GROUP` value will be grouped together. Any sources
+  that don't have this property will be compiled individually. The
+  :prop_tgt:`UNITY_BUILD_BATCH_SIZE` property is ignored when using
+  this mode.
+
+  Example usage:
+
+  .. code-block:: cmake
+
+    add_library(example_library
+                source1.cxx
+                source2.cxx
+                source3.cxx
+                source4.cxx)
+
+    set_target_properties(example_library PROPERTIES
+                          UNITY_BUILD_MODE GROUP
+                          )
+
+    set_source_files_properties(source1.cxx source2.cxx source3.cxx
+                                PROPERTIES UNITY_GROUP "bucket1"
+                                )
+    set_source_files_properties(source4.cxx
+                                PROPERTIES UNITY_GROUP "bucket2"
+                                )
+
+If no explicit :prop_tgt:`UNITY_BUILD_MODE` has been specified, CMake will
+default to ``BATCH``.
diff --git a/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD_UNIQUE_ID.rst b/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD_UNIQUE_ID.rst
new file mode 100644
index 0000000..d288dd3
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/UNITY_BUILD_UNIQUE_ID.rst
@@ -0,0 +1,55 @@
+UNITY_BUILD_UNIQUE_ID
+---------------------
+
+.. versionadded:: 3.20
+
+The name of a valid C-identifier which is set to a unique per-file
+value during unity builds.
+
+When this property is populated and when :prop_tgt:`UNITY_BUILD`
+is true, the property value is used to define a compiler definition
+of the specified name. The value of the defined symbol is unspecified,
+but it is unique per file path.
+
+Given:
+
+.. code-block:: cmake
+
+  set_target_properties(myTarget PROPERTIES
+    UNITY_BUILD "ON"
+    UNITY_BUILD_UNIQUE_ID "MY_UNITY_ID"
+  )
+
+the ``MY_UNITY_ID`` symbol is defined to a unique per-file value.
+
+One known use case for this identifier is to disambiguate the
+variables in an anonymous namespace in a limited scope.
+Anonymous namespaces present a problem for unity builds because
+they are used to ensure that certain variables and declarations
+are scoped to a translation unit which is approximated by a
+single source file.  When source files are combined in a unity
+build file, those variables in different files are combined in
+a single translation unit and the names clash.  This property can
+be used to avoid that with code like the following:
+
+.. code-block:: cpp
+
+  // Needed for when unity builds are disabled
+  #ifndef MY_UNITY_ID
+  #define MY_UNITY_ID
+  #endif
+
+  namespace { namespace MY_UNITY_ID {
+    // The name 'i' clashes (or could clash) with other
+    // variables in other anonymous namespaces
+    int i = 42;
+  }}
+
+  int use_var()
+  {
+    return MY_UNITY_ID::i;
+  }
+
+The pseudonymous namespace is used within a truly anonymous namespace.
+On many platforms, this maintains the invariant that the symbols within
+do not get external linkage when performing a unity build.
diff --git a/share/cmake-3.18/Help/prop_tgt/VERSION.rst b/share/cmake-3.22/Help/prop_tgt/VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/VERSION.rst
rename to share/cmake-3.22/Help/prop_tgt/VERSION.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/VISIBILITY_INLINES_HIDDEN.rst b/share/cmake-3.22/Help/prop_tgt/VISIBILITY_INLINES_HIDDEN.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/VISIBILITY_INLINES_HIDDEN.rst
rename to share/cmake-3.22/Help/prop_tgt/VISIBILITY_INLINES_HIDDEN.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_CONFIGURATION_TYPE.rst b/share/cmake-3.22/Help/prop_tgt/VS_CONFIGURATION_TYPE.rst
new file mode 100644
index 0000000..4adffd4
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_CONFIGURATION_TYPE.rst
@@ -0,0 +1,14 @@
+VS_CONFIGURATION_TYPE
+---------------------
+
+.. versionadded:: 3.6
+
+Visual Studio project configuration type.
+
+Sets the ``ConfigurationType`` attribute for a generated Visual Studio project.
+The property value may use
+:manual:`generator expressions <cmake-generator-expressions(7)>`.
+If this property is set, it overrides the default setting that is based on the
+target type (e.g. ``StaticLibrary``, ``Application``, ...).
+
+Supported on :ref:`Visual Studio Generators` for VS 2010 and higher.
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_DEBUGGER_COMMAND.rst b/share/cmake-3.22/Help/prop_tgt/VS_DEBUGGER_COMMAND.rst
new file mode 100644
index 0000000..58476d6
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_DEBUGGER_COMMAND.rst
@@ -0,0 +1,13 @@
+VS_DEBUGGER_COMMAND
+-------------------
+
+.. versionadded:: 3.12
+
+Sets the local debugger command for Visual Studio C++ targets.
+The property value may use
+:manual:`generator expressions <cmake-generator-expressions(7)>`.
+This is defined in ``<LocalDebuggerCommand>`` in the Visual Studio
+project file.
+
+This property only works for Visual Studio 2010 and above;
+it is ignored on other generators.
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_DEBUGGER_COMMAND_ARGUMENTS.rst b/share/cmake-3.22/Help/prop_tgt/VS_DEBUGGER_COMMAND_ARGUMENTS.rst
new file mode 100644
index 0000000..6c26601
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_DEBUGGER_COMMAND_ARGUMENTS.rst
@@ -0,0 +1,13 @@
+VS_DEBUGGER_COMMAND_ARGUMENTS
+-----------------------------
+
+.. versionadded:: 3.13
+
+Sets the local debugger command line arguments for Visual Studio C++ targets.
+The property value may use
+:manual:`generator expressions <cmake-generator-expressions(7)>`.
+This is defined in ``<LocalDebuggerCommandArguments>`` in the Visual Studio
+project file.
+
+This property only works for Visual Studio 2010 and above;
+it is ignored on other generators.
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_DEBUGGER_ENVIRONMENT.rst b/share/cmake-3.22/Help/prop_tgt/VS_DEBUGGER_ENVIRONMENT.rst
new file mode 100644
index 0000000..2f59a82
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_DEBUGGER_ENVIRONMENT.rst
@@ -0,0 +1,13 @@
+VS_DEBUGGER_ENVIRONMENT
+-----------------------
+
+.. versionadded:: 3.13
+
+Sets the local debugger environment for Visual Studio C++ targets.
+The property value may use
+:manual:`generator expressions <cmake-generator-expressions(7)>`.
+This is defined in ``<LocalDebuggerEnvironment>`` in the Visual Studio
+project file.
+
+This property only works for Visual Studio 2010 and above;
+it is ignored on other generators.
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_DEBUGGER_WORKING_DIRECTORY.rst b/share/cmake-3.22/Help/prop_tgt/VS_DEBUGGER_WORKING_DIRECTORY.rst
new file mode 100644
index 0000000..c163abf
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_DEBUGGER_WORKING_DIRECTORY.rst
@@ -0,0 +1,13 @@
+VS_DEBUGGER_WORKING_DIRECTORY
+-----------------------------
+
+.. versionadded:: 3.8
+
+Sets the local debugger working directory for Visual Studio C++ targets.
+The property value may use
+:manual:`generator expressions <cmake-generator-expressions(7)>`.
+This is defined in ``<LocalDebuggerWorkingDirectory>`` in the Visual Studio
+project file.
+
+This property only works for Visual Studio 2010 and above;
+it is ignored on other generators.
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION.rst b/share/cmake-3.22/Help/prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION.rst
new file mode 100644
index 0000000..5fd23e1
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION.rst
@@ -0,0 +1,12 @@
+VS_DESKTOP_EXTENSIONS_VERSION
+-----------------------------
+
+.. versionadded:: 3.4
+
+Visual Studio Windows 10 Desktop Extensions Version
+
+Specifies the version of the Desktop Extensions that should be included in the
+target. For example ``10.0.10240.0``. If the value is not specified, the Desktop
+Extensions will not be included. To use the same version of the extensions as
+the Windows 10 SDK that is being used, you can use the
+:variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION` variable.
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_DOTNET_DOCUMENTATION_FILE.rst b/share/cmake-3.22/Help/prop_tgt/VS_DOTNET_DOCUMENTATION_FILE.rst
new file mode 100644
index 0000000..a388256
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_DOTNET_DOCUMENTATION_FILE.rst
@@ -0,0 +1,8 @@
+VS_DOTNET_DOCUMENTATION_FILE
+----------------------------
+
+.. versionadded:: 3.17
+
+Visual Studio managed project .NET documentation output
+
+Sets the target XML documentation file output.
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_DOTNET_REFERENCEPROP_refname_TAG_tagname.rst b/share/cmake-3.22/Help/prop_tgt/VS_DOTNET_REFERENCEPROP_refname_TAG_tagname.rst
new file mode 100644
index 0000000..5b9caee
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_DOTNET_REFERENCEPROP_refname_TAG_tagname.rst
@@ -0,0 +1,16 @@
+VS_DOTNET_REFERENCEPROP_<refname>_TAG_<tagname>
+-----------------------------------------------
+
+.. versionadded:: 3.10
+
+Defines an XML property ``<tagname>`` for a .NET reference
+``<refname>``.
+
+Reference properties can be set for .NET references which are
+defined by the target properties :prop_tgt:`VS_DOTNET_REFERENCES`,
+:prop_tgt:`VS_DOTNET_REFERENCE_<refname>`
+and also for project references to other C# targets which are
+established by :command:`target_link_libraries()`.
+
+This property is only applicable to C# targets and Visual Studio
+generators 2010 and later.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_DOTNET_REFERENCES.rst b/share/cmake-3.22/Help/prop_tgt/VS_DOTNET_REFERENCES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/VS_DOTNET_REFERENCES.rst
rename to share/cmake-3.22/Help/prop_tgt/VS_DOTNET_REFERENCES.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_DOTNET_REFERENCES_COPY_LOCAL.rst b/share/cmake-3.22/Help/prop_tgt/VS_DOTNET_REFERENCES_COPY_LOCAL.rst
new file mode 100644
index 0000000..556fa8a
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_DOTNET_REFERENCES_COPY_LOCAL.rst
@@ -0,0 +1,9 @@
+VS_DOTNET_REFERENCES_COPY_LOCAL
+-------------------------------
+
+.. versionadded:: 3.8
+
+Sets the **Copy Local** property for all .NET hint references in the target
+
+Boolean property to enable/disable copying of .NET hint references to
+output directory. The default is ``ON``.
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_DOTNET_REFERENCE_refname.rst b/share/cmake-3.22/Help/prop_tgt/VS_DOTNET_REFERENCE_refname.rst
new file mode 100644
index 0000000..9c4d34a
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_DOTNET_REFERENCE_refname.rst
@@ -0,0 +1,14 @@
+VS_DOTNET_REFERENCE_<refname>
+-----------------------------
+
+.. versionadded:: 3.8
+
+Visual Studio managed project .NET reference with name ``<refname>``
+and hint path.
+
+Adds one .NET reference to generated Visual Studio project. The
+reference will have the name ``<refname>`` and will point to the
+assembly given as value of the property.
+
+See also :prop_tgt:`VS_DOTNET_REFERENCES` and
+:prop_tgt:`VS_DOTNET_REFERENCES_COPY_LOCAL`
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_DOTNET_TARGET_FRAMEWORK_VERSION.rst b/share/cmake-3.22/Help/prop_tgt/VS_DOTNET_TARGET_FRAMEWORK_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/VS_DOTNET_TARGET_FRAMEWORK_VERSION.rst
rename to share/cmake-3.22/Help/prop_tgt/VS_DOTNET_TARGET_FRAMEWORK_VERSION.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_DPI_AWARE.rst b/share/cmake-3.22/Help/prop_tgt/VS_DPI_AWARE.rst
new file mode 100644
index 0000000..47ce1ce
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_DPI_AWARE.rst
@@ -0,0 +1,16 @@
+VS_DPI_AWARE
+------------
+
+.. versionadded:: 3.16
+
+Set the Manifest Tool -> Input and Output -> DPI Awareness in the Visual Studio
+target project properties.
+
+Valid values are ``PerMonitor``, ``ON``, or ``OFF``.
+
+For example:
+
+.. code-block:: cmake
+
+  add_executable(myproject myproject.cpp)
+  set_property(TARGET myproject PROPERTY VS_DPI_AWARE "PerMonitor")
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_GLOBAL_KEYWORD.rst b/share/cmake-3.22/Help/prop_tgt/VS_GLOBAL_KEYWORD.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/VS_GLOBAL_KEYWORD.rst
rename to share/cmake-3.22/Help/prop_tgt/VS_GLOBAL_KEYWORD.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_GLOBAL_PROJECT_TYPES.rst b/share/cmake-3.22/Help/prop_tgt/VS_GLOBAL_PROJECT_TYPES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/VS_GLOBAL_PROJECT_TYPES.rst
rename to share/cmake-3.22/Help/prop_tgt/VS_GLOBAL_PROJECT_TYPES.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_GLOBAL_ROOTNAMESPACE.rst b/share/cmake-3.22/Help/prop_tgt/VS_GLOBAL_ROOTNAMESPACE.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/VS_GLOBAL_ROOTNAMESPACE.rst
rename to share/cmake-3.22/Help/prop_tgt/VS_GLOBAL_ROOTNAMESPACE.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_GLOBAL_variable.rst b/share/cmake-3.22/Help/prop_tgt/VS_GLOBAL_variable.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/VS_GLOBAL_variable.rst
rename to share/cmake-3.22/Help/prop_tgt/VS_GLOBAL_variable.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_IOT_EXTENSIONS_VERSION.rst b/share/cmake-3.22/Help/prop_tgt/VS_IOT_EXTENSIONS_VERSION.rst
new file mode 100644
index 0000000..ca6a3ca
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_IOT_EXTENSIONS_VERSION.rst
@@ -0,0 +1,12 @@
+VS_IOT_EXTENSIONS_VERSION
+-------------------------
+
+.. versionadded:: 3.4
+
+Visual Studio Windows 10 IoT Extensions Version
+
+Specifies the version of the IoT Extensions that should be included in the
+target. For example ``10.0.10240.0``. If the value is not specified, the IoT
+Extensions will not be included. To use the same version of the extensions as
+the Windows 10 SDK that is being used, you can use the
+:variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION` variable.
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_IOT_STARTUP_TASK.rst b/share/cmake-3.22/Help/prop_tgt/VS_IOT_STARTUP_TASK.rst
new file mode 100644
index 0000000..259055d
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_IOT_STARTUP_TASK.rst
@@ -0,0 +1,8 @@
+VS_IOT_STARTUP_TASK
+-------------------
+
+.. versionadded:: 3.4
+
+Visual Studio Windows 10 IoT Continuous Background Task
+
+Specifies that the target should be compiled as a Continuous Background Task library.
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_JUST_MY_CODE_DEBUGGING.rst b/share/cmake-3.22/Help/prop_tgt/VS_JUST_MY_CODE_DEBUGGING.rst
new file mode 100644
index 0000000..724bd2f
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_JUST_MY_CODE_DEBUGGING.rst
@@ -0,0 +1,12 @@
+VS_JUST_MY_CODE_DEBUGGING
+-------------------------
+
+.. versionadded:: 3.15
+
+Enable Just My Code with Visual Studio debugger.
+
+Supported on :ref:`Visual Studio Generators` for VS 2010 and higher,
+:ref:`Makefile Generators` and the :generator:`Ninja` generators.
+
+This property is initialized by the :variable:`CMAKE_VS_JUST_MY_CODE_DEBUGGING`
+variable if it is set when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_KEYWORD.rst b/share/cmake-3.22/Help/prop_tgt/VS_KEYWORD.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/VS_KEYWORD.rst
rename to share/cmake-3.22/Help/prop_tgt/VS_KEYWORD.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_MOBILE_EXTENSIONS_VERSION.rst b/share/cmake-3.22/Help/prop_tgt/VS_MOBILE_EXTENSIONS_VERSION.rst
new file mode 100644
index 0000000..b307e84
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_MOBILE_EXTENSIONS_VERSION.rst
@@ -0,0 +1,12 @@
+VS_MOBILE_EXTENSIONS_VERSION
+----------------------------
+
+.. versionadded:: 3.4
+
+Visual Studio Windows 10 Mobile Extensions Version
+
+Specifies the version of the Mobile Extensions that should be included in the
+target. For example ``10.0.10240.0``. If the value is not specified, the Mobile
+Extensions will not be included. To use the same version of the extensions as
+the Windows 10 SDK that is being used, you can use the
+:variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION` variable.
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_NO_SOLUTION_DEPLOY.rst b/share/cmake-3.22/Help/prop_tgt/VS_NO_SOLUTION_DEPLOY.rst
new file mode 100644
index 0000000..bf6ac10
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_NO_SOLUTION_DEPLOY.rst
@@ -0,0 +1,48 @@
+VS_NO_SOLUTION_DEPLOY
+---------------------
+
+.. versionadded:: 3.15
+
+Specify that the target should not be marked for deployment to a Windows CE
+or Windows Phone device in the generated Visual Studio solution.
+
+Be default, all EXE and shared library (DLL) targets are marked to deploy to
+the target device in the generated Visual Studio solution.
+
+Generator expressions are supported.
+
+There are reasons one might want to exclude a target / generated project from
+deployment:
+
+- The library or executable may not be necessary in the primary deploy/debug
+  scenario, and excluding from deployment saves time in the
+  develop/download/debug cycle.
+- There may be insufficient space on the target device to accommodate all of
+  the build products.
+- Visual Studio 2013 requires a target device IP address be entered for each
+  target marked for deployment.  For large numbers of targets, this can be
+  tedious.
+  NOTE: Visual Studio *will* deploy all project dependencies of a project
+  tagged for deployment to the IP address configured for that project even
+  if those dependencies are not tagged for deployment.
+
+
+Example 1
+^^^^^^^^^
+
+This shows setting the variable for the target foo.
+
+.. code-block:: cmake
+
+  add_library(foo SHARED foo.cpp)
+  set_property(TARGET foo PROPERTY VS_NO_SOLUTION_DEPLOY ON)
+
+Example 2
+^^^^^^^^^
+
+This shows setting the variable for the Release configuration only.
+
+.. code-block:: cmake
+
+  add_library(foo SHARED foo.cpp)
+  set_property(TARGET foo PROPERTY VS_NO_SOLUTION_DEPLOY "$<CONFIG:Release>")
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_PACKAGE_REFERENCES.rst b/share/cmake-3.22/Help/prop_tgt/VS_PACKAGE_REFERENCES.rst
new file mode 100644
index 0000000..ec17567
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_PACKAGE_REFERENCES.rst
@@ -0,0 +1,15 @@
+VS_PACKAGE_REFERENCES
+---------------------
+
+.. versionadded:: 3.15
+
+Visual Studio package references for nuget.
+
+Adds one or more semicolon-delimited package references to a generated
+Visual Studio project. The version of the package will be
+underscore delimited. For example, ``boost_1.7.0;nunit_3.12.*``.
+
+.. code-block:: cmake
+
+  set_property(TARGET ${TARGET_NAME} PROPERTY
+    VS_PACKAGE_REFERENCES "boost_1.7.0")
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_PLATFORM_TOOLSET.rst b/share/cmake-3.22/Help/prop_tgt/VS_PLATFORM_TOOLSET.rst
new file mode 100644
index 0000000..27a92d6
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_PLATFORM_TOOLSET.rst
@@ -0,0 +1,12 @@
+VS_PLATFORM_TOOLSET
+-------------------
+
+.. versionadded:: 3.18
+
+Overrides the platform toolset used to build a target.
+
+Only supported when the compiler used by the given toolset is the
+same as the compiler used to build the whole source tree.
+
+This is especially useful to create driver projects with the toolsets
+"WindowsUserModeDriver10.0" or "WindowsKernelModeDriver10.0".
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_PROJECT_IMPORT.rst b/share/cmake-3.22/Help/prop_tgt/VS_PROJECT_IMPORT.rst
new file mode 100644
index 0000000..f5e9698
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_PROJECT_IMPORT.rst
@@ -0,0 +1,10 @@
+VS_PROJECT_IMPORT
+-----------------
+
+.. versionadded:: 3.15
+
+Visual Studio managed project imports
+
+Adds to a generated Visual Studio project one or more semicolon-delimited paths
+to .props files needed when building projects from some NuGet packages.
+For example, ``my_packages_path/MyPackage.1.0.0/build/MyPackage.props``.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_SCC_AUXPATH.rst b/share/cmake-3.22/Help/prop_tgt/VS_SCC_AUXPATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/VS_SCC_AUXPATH.rst
rename to share/cmake-3.22/Help/prop_tgt/VS_SCC_AUXPATH.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_SCC_LOCALPATH.rst b/share/cmake-3.22/Help/prop_tgt/VS_SCC_LOCALPATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/VS_SCC_LOCALPATH.rst
rename to share/cmake-3.22/Help/prop_tgt/VS_SCC_LOCALPATH.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_SCC_PROJECTNAME.rst b/share/cmake-3.22/Help/prop_tgt/VS_SCC_PROJECTNAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/VS_SCC_PROJECTNAME.rst
rename to share/cmake-3.22/Help/prop_tgt/VS_SCC_PROJECTNAME.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_SCC_PROVIDER.rst b/share/cmake-3.22/Help/prop_tgt/VS_SCC_PROVIDER.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/VS_SCC_PROVIDER.rst
rename to share/cmake-3.22/Help/prop_tgt/VS_SCC_PROVIDER.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_SDK_REFERENCES.rst b/share/cmake-3.22/Help/prop_tgt/VS_SDK_REFERENCES.rst
new file mode 100644
index 0000000..9a082e7
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_SDK_REFERENCES.rst
@@ -0,0 +1,9 @@
+VS_SDK_REFERENCES
+-----------------
+
+.. versionadded:: 3.7
+
+Visual Studio project SDK references.
+Specify a :ref:`semicolon-separated list <CMake Language Lists>` of SDK references
+to be added to a generated Visual Studio project, e.g.
+``Microsoft.AdMediatorWindows81, Version=1.0``.
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_SOLUTION_DEPLOY.rst b/share/cmake-3.22/Help/prop_tgt/VS_SOLUTION_DEPLOY.rst
new file mode 100644
index 0000000..e56f411
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_SOLUTION_DEPLOY.rst
@@ -0,0 +1,29 @@
+VS_SOLUTION_DEPLOY
+------------------
+
+.. versionadded:: 3.18
+
+Specify that the target should be marked for deployment when not targeting
+Windows CE, Windows Phone or a Windows Store application.
+
+If the target platform doesn't support deployment, this property won't have
+any effect.
+
+:manual:`Generator expressions <cmake-generator-expressions(7)>` are supported.
+
+Examples
+^^^^^^^^
+
+Always deploy target ``foo``:
+
+.. code-block:: cmake
+
+  add_executable(foo SHARED foo.cpp)
+  set_property(TARGET foo PROPERTY VS_SOLUTION_DEPLOY ON)
+
+Deploy target ``foo`` for all configurations except ``Release``:
+
+.. code-block:: cmake
+
+  add_executable(foo SHARED foo.cpp)
+  set_property(TARGET foo PROPERTY VS_SOLUTION_DEPLOY "$<NOT:$<CONFIG:Release>>")
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_SOURCE_SETTINGS_tool.rst b/share/cmake-3.22/Help/prop_tgt/VS_SOURCE_SETTINGS_tool.rst
new file mode 100644
index 0000000..b5a76fc
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_SOURCE_SETTINGS_tool.rst
@@ -0,0 +1,21 @@
+VS_SOURCE_SETTINGS_<tool>
+-------------------------
+
+.. versionadded:: 3.18
+
+Set any item metadata on all non-built files that use <tool>.
+
+Takes a list of ``Key=Value`` pairs. Tells the Visual Studio generator
+to set ``Key`` to ``Value`` as item metadata on all non-built files
+that use ``<tool>``.
+
+For example:
+
+.. code-block:: cmake
+
+  set_property(TARGET main PROPERTY VS_SOURCE_SETTINGS_FXCompile "Key=Value" "Key2=Value2")
+
+will set ``Key`` to ``Value`` and ``Key2`` to ``Value2`` for all
+non-built files that use ``FXCompile``.
+
+:manual:`Generator expressions <cmake-generator-expressions(7)>` are supported.
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_USER_PROPS.rst b/share/cmake-3.22/Help/prop_tgt/VS_USER_PROPS.rst
new file mode 100644
index 0000000..8f2a105
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_USER_PROPS.rst
@@ -0,0 +1,14 @@
+VS_USER_PROPS
+-------------
+
+.. versionadded:: 3.8
+
+Sets the user props file to be included in the visual studio
+C++ project file. The standard path is
+``$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props``, which is
+in most cases the same as
+``%LOCALAPPDATA%\\Microsoft\\MSBuild\\v4.0\\Microsoft.Cpp.Win32.user.props``
+or ``%LOCALAPPDATA%\\Microsoft\\MSBuild\\v4.0\\Microsoft.Cpp.x64.user.props``.
+
+The ``*.user.props`` files can be used for Visual Studio wide
+configuration which is independent from cmake.
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst b/share/cmake-3.22/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst
new file mode 100644
index 0000000..50cf203
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst
@@ -0,0 +1,12 @@
+VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION
+--------------------------------------
+
+.. versionadded:: 3.4
+
+Visual Studio Windows Target Platform Minimum Version
+
+For Windows 10. Specifies the minimum version of the OS that is being
+targeted. For example ``10.0.10240.0``. If the value is not specified, the
+value of :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION` will be used on
+WindowsStore projects otherwise the target platform minimum version will not
+be specified for the project.
diff --git a/share/cmake-3.22/Help/prop_tgt/VS_WINRT_COMPONENT.rst b/share/cmake-3.22/Help/prop_tgt/VS_WINRT_COMPONENT.rst
new file mode 100644
index 0000000..8b4aaf7
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/VS_WINRT_COMPONENT.rst
@@ -0,0 +1,13 @@
+VS_WINRT_COMPONENT
+------------------
+
+.. versionadded:: 3.1
+
+Mark a target as a Windows Runtime component for the Visual Studio generator.
+Compile the target with ``C++/CX`` language extensions for Windows Runtime.
+For ``SHARED`` and ``MODULE`` libraries, this also defines the
+``_WINRT_DLL`` preprocessor macro.
+
+.. note::
+  Currently this is implemented only by Visual Studio generators.
+  Support may be added to other generators in the future.
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_WINRT_EXTENSIONS.rst b/share/cmake-3.22/Help/prop_tgt/VS_WINRT_EXTENSIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/VS_WINRT_EXTENSIONS.rst
rename to share/cmake-3.22/Help/prop_tgt/VS_WINRT_EXTENSIONS.rst
diff --git a/share/cmake-3.18/Help/prop_tgt/VS_WINRT_REFERENCES.rst b/share/cmake-3.22/Help/prop_tgt/VS_WINRT_REFERENCES.rst
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/VS_WINRT_REFERENCES.rst
rename to share/cmake-3.22/Help/prop_tgt/VS_WINRT_REFERENCES.rst
diff --git a/share/cmake-3.22/Help/prop_tgt/WIN32_EXECUTABLE.rst b/share/cmake-3.22/Help/prop_tgt/WIN32_EXECUTABLE.rst
new file mode 100644
index 0000000..eac28ae
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/WIN32_EXECUTABLE.rst
@@ -0,0 +1,17 @@
+WIN32_EXECUTABLE
+----------------
+
+Build an executable with a WinMain entry point on windows.
+
+When this property is set to true the executable when linked on
+Windows will be created with a WinMain() entry point instead of just
+main().  This makes it a GUI executable instead of a console application.
+See the :variable:`CMAKE_MFC_FLAG` variable documentation to
+configure use of the Microsoft Foundation Classes (MFC) for WinMain
+executables.  This property is initialized by the value of the
+:variable:`CMAKE_WIN32_EXECUTABLE` variable if it is set when
+a target is created.
+
+This property supports
+:manual:`generator expressions <cmake-generator-expressions(7)>`, except if the
+target is managed (contains C# code.)
diff --git a/share/cmake-3.22/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst b/share/cmake-3.22/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst
new file mode 100644
index 0000000..00f32f6
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst
@@ -0,0 +1,28 @@
+WINDOWS_EXPORT_ALL_SYMBOLS
+--------------------------
+
+.. versionadded:: 3.4
+
+This property is implemented only for MS-compatible tools on Windows.
+
+Enable this boolean property to automatically create a module definition
+(``.def``) file with all global symbols found in the input ``.obj`` files
+for a ``SHARED`` library (or executable with :prop_tgt:`ENABLE_EXPORTS`)
+on Windows.  The module definition file will be passed to the linker
+causing all symbols to be exported from the ``.dll``.
+For global *data* symbols, ``__declspec(dllimport)`` must still be used when
+compiling against the code in the ``.dll``.  All other function symbols will
+be automatically exported and imported by callers.  This simplifies porting
+projects to Windows by reducing the need for explicit ``dllexport`` markup,
+even in ``C++`` classes.
+
+When this property is enabled, zero or more ``.def`` files may also be
+specified as source files of the target.  The exports named by these files
+will be merged with those detected from the object files to generate a
+single module definition file to be passed to the linker.  This can be
+used to export symbols from a ``.dll`` that are not in any of its object
+files but are added by the linker from dependencies (e.g. ``msvcrt.lib``).
+
+This property is initialized by the value of
+the :variable:`CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS` variable if it is set
+when a target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_ATTRIBUTE_an-attribute.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_ATTRIBUTE_an-attribute.rst
new file mode 100644
index 0000000..fbe7608
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_ATTRIBUTE_an-attribute.rst
@@ -0,0 +1,22 @@
+XCODE_ATTRIBUTE_<an-attribute>
+------------------------------
+
+Set Xcode target attributes directly.
+
+Tell the :generator:`Xcode` generator to set ``<an-attribute>`` to a given
+value in the generated Xcode project.  Ignored on other generators.
+
+This offers low-level control over the generated Xcode project file.
+It is meant as a last resort for specifying settings that CMake does
+not otherwise have a way to control.  Although this can override a
+setting CMake normally produces on its own, doing so bypasses CMake's
+model of the project and can break things.
+
+See the :variable:`CMAKE_XCODE_ATTRIBUTE_<an-attribute>` variable
+to set attributes on all targets in a directory tree.
+
+Contents of ``XCODE_ATTRIBUTE_<an-attribute>`` may use
+"generator expressions" with the syntax ``$<...>``.  See the
+:manual:`cmake-generator-expressions(7)` manual for available
+expressions.  See the :manual:`cmake-buildsystem(7)` manual
+for more on defining buildsystem properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY.rst
new file mode 100644
index 0000000..2a4d666
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY.rst
@@ -0,0 +1,13 @@
+XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY
+----------------------------------------
+
+.. versionadded:: 3.20
+
+Tell the :generator:`Xcode` generator to perform code signing for all the
+frameworks and libraries that are embedded using the
+:prop_tgt:`XCODE_EMBED_FRAMEWORKS <XCODE_EMBED_<type>>` property.
+
+.. versionadded:: 3.21
+
+This property was generalized to other types of embedded items.  See
+:prop_tgt:`XCODE_EMBED_<type>_CODE_SIGN_ON_COPY` for the more general form.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_FRAMEWORKS_REMOVE_HEADERS_ON_COPY.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_FRAMEWORKS_REMOVE_HEADERS_ON_COPY.rst
new file mode 100644
index 0000000..04daa85
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_FRAMEWORKS_REMOVE_HEADERS_ON_COPY.rst
@@ -0,0 +1,14 @@
+XCODE_EMBED_FRAMEWORKS_REMOVE_HEADERS_ON_COPY
+---------------------------------------------
+
+.. versionadded:: 3.20
+
+Tell the :generator:`Xcode` generator to remove headers from all the
+frameworks that are embedded using the
+:prop_tgt:`XCODE_EMBED_FRAMEWORKS <XCODE_EMBED_<type>>` property.
+
+.. versionadded:: 3.21
+
+This property was generalized to other types of embedded items.  See
+:prop_tgt:`XCODE_EMBED_<type>_REMOVE_HEADERS_ON_COPY` for the more
+general form.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_type.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_type.rst
new file mode 100644
index 0000000..a1af56f
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_type.rst
@@ -0,0 +1,24 @@
+XCODE_EMBED_<type>
+------------------
+
+.. versionadded:: 3.20
+
+Tell the :generator:`Xcode` generator to embed the specified list of items into
+the target bundle.  ``<type>`` specifies the embed build phase to use.
+See the Xcode documentation for the base location of each ``<type>``.
+
+The supported values for ``<type>`` are:
+
+``FRAMEWORKS``
+  The specified items will be added to the ``Embed Frameworks`` build phase.
+  The items can be CMake target names or paths to frameworks or libraries.
+
+``APP_EXTENSIONS``
+  .. versionadded:: 3.21
+
+  The specified items will be added to the ``Embed App Extensions`` build phase.
+  They must be CMake target names.
+
+See also :prop_tgt:`XCODE_EMBED_<type>_PATH`,
+:prop_tgt:`XCODE_EMBED_<type>_REMOVE_HEADERS_ON_COPY` and
+:prop_tgt:`XCODE_EMBED_<type>_CODE_SIGN_ON_COPY`.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_type_CODE_SIGN_ON_COPY.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_type_CODE_SIGN_ON_COPY.rst
new file mode 100644
index 0000000..7ec0385
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_type_CODE_SIGN_ON_COPY.rst
@@ -0,0 +1,18 @@
+XCODE_EMBED_<type>_CODE_SIGN_ON_COPY
+------------------------------------
+
+.. versionadded:: 3.20
+
+Boolean property used only by the :generator:`Xcode` generator.  It specifies
+whether to perform code signing for the items that are embedded using the
+:prop_tgt:`XCODE_EMBED_<type>` property.
+
+The supported values for ``<type>`` are:
+
+``FRAMEWORKS``
+
+``APP_EXTENSIONS``
+  .. versionadded:: 3.21
+
+If a ``XCODE_EMBED_<type>_CODE_SIGN_ON_COPY`` property is not defined on the
+target, no code signing on copy will be performed for that ``<type>``.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_type_PATH.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_type_PATH.rst
new file mode 100644
index 0000000..a6f980d
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_type_PATH.rst
@@ -0,0 +1,18 @@
+XCODE_EMBED_<type>_PATH
+-----------------------
+
+.. versionadded:: 3.20
+
+This property is used only by the :generator:`Xcode` generator.  When defined,
+it specifies the relative path to use when embedding the items specified by
+:prop_tgt:`XCODE_EMBED_<type>`.  The path is relative
+to the base location of the ``Embed XXX`` build phase associated with
+``<type>``.  See the Xcode documentation for the base location of each
+``<type>``.
+
+The supported values for ``<type>`` are:
+
+``FRAMEWORKS``
+
+``APP_EXTENSIONS``
+  .. versionadded:: 3.21
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_type_REMOVE_HEADERS_ON_COPY.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_type_REMOVE_HEADERS_ON_COPY.rst
new file mode 100644
index 0000000..75c8eae
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_EMBED_type_REMOVE_HEADERS_ON_COPY.rst
@@ -0,0 +1,20 @@
+XCODE_EMBED_<type>_REMOVE_HEADERS_ON_COPY
+-----------------------------------------
+
+.. versionadded:: 3.20
+
+Boolean property used only by the :generator:`Xcode` generator.  It specifies
+whether to remove headers from all the frameworks that are embedded using the
+:prop_tgt:`XCODE_EMBED_<type>` property.
+
+The supported values for ``<type>`` are:
+
+``FRAMEWORKS``
+  If the ``XCODE_EMBED_FRAMEWORKS_REMOVE_HEADERS_ON_COPY`` property is not
+  defined, headers will not be removed on copy by default.
+
+``APP_EXTENSIONS``
+  .. versionadded:: 3.21
+
+  If the ``XCODE_EMBED_APP_EXTENSIONS_REMOVE_HEADERS_ON_COPY`` property is not
+  defined, headers WILL be removed on copy by default.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_EXPLICIT_FILE_TYPE.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_EXPLICIT_FILE_TYPE.rst
new file mode 100644
index 0000000..e01a034
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_EXPLICIT_FILE_TYPE.rst
@@ -0,0 +1,10 @@
+XCODE_EXPLICIT_FILE_TYPE
+------------------------
+
+.. versionadded:: 3.8
+
+Set the Xcode ``explicitFileType`` attribute on its reference to a
+target.  CMake computes a default based on target type but
+can be told explicitly with this property.
+
+See also :prop_tgt:`XCODE_PRODUCT_TYPE`.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_GENERATE_SCHEME.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_GENERATE_SCHEME.rst
new file mode 100644
index 0000000..06a3cf9
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_GENERATE_SCHEME.rst
@@ -0,0 +1,43 @@
+XCODE_GENERATE_SCHEME
+---------------------
+
+.. versionadded:: 3.15
+
+If enabled, the :generator:`Xcode` generator will generate schema files.  These
+are useful to invoke analyze, archive, build-for-testing and test
+actions from the command line.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_GENERATE_SCHEME` if it is set when a target
+is created.
+
+The following target properties overwrite the default of the
+corresponding settings on the "Diagnostic" tab for each schema file.
+Each of those is initialized by the respective ``CMAKE_`` variable
+at target creation time.
+
+- :prop_tgt:`XCODE_SCHEME_ADDRESS_SANITIZER`
+- :prop_tgt:`XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN`
+- :prop_tgt:`XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER`
+- :prop_tgt:`XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS`
+- :prop_tgt:`XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE`
+- :prop_tgt:`XCODE_SCHEME_GUARD_MALLOC`
+- :prop_tgt:`XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP`
+- :prop_tgt:`XCODE_SCHEME_MALLOC_GUARD_EDGES`
+- :prop_tgt:`XCODE_SCHEME_MALLOC_SCRIBBLE`
+- :prop_tgt:`XCODE_SCHEME_MALLOC_STACK`
+- :prop_tgt:`XCODE_SCHEME_THREAD_SANITIZER`
+- :prop_tgt:`XCODE_SCHEME_THREAD_SANITIZER_STOP`
+- :prop_tgt:`XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER`
+- :prop_tgt:`XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP`
+- :prop_tgt:`XCODE_SCHEME_ZOMBIE_OBJECTS`
+
+The following target properties will be applied on the
+"Info", "Arguments", and "Options" tab:
+
+- :prop_tgt:`XCODE_SCHEME_ARGUMENTS`
+- :prop_tgt:`XCODE_SCHEME_DEBUG_AS_ROOT`
+- :prop_tgt:`XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING`
+- :prop_tgt:`XCODE_SCHEME_ENVIRONMENT`
+- :prop_tgt:`XCODE_SCHEME_EXECUTABLE`
+- :prop_tgt:`XCODE_SCHEME_WORKING_DIRECTORY`
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_LINK_BUILD_PHASE_MODE.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_LINK_BUILD_PHASE_MODE.rst
new file mode 100644
index 0000000..836cc6b
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_LINK_BUILD_PHASE_MODE.rst
@@ -0,0 +1,55 @@
+XCODE_LINK_BUILD_PHASE_MODE
+---------------------------
+
+.. versionadded:: 3.19
+
+When using the :generator:`Xcode` generator, libraries to be linked will be
+specified in the Xcode project file using either the "Link Binary With
+Libraries" build phase or directly as linker flags.  The former allows Xcode
+to manage build paths, which may be necessary when creating Xcode archives
+because it may use different build paths to a regular build.
+
+This property controls usage of "Link Binary With Libraries" build phase for
+a target that is an app bundle, executable, shared library, shared framework
+or a module library.
+
+Possible values are:
+
+* ``NONE``
+  The libraries will be linked by specifying the linker flags directly.
+
+* ``BUILT_ONLY``
+  The "Link Binary With Libraries" build phase will be used to link to another
+  target under the following conditions:
+
+  - The target to be linked to is a regular non-imported, non-interface library
+    target.
+  - The output directory of the target being built has not been changed from
+    its default (see :prop_tgt:`RUNTIME_OUTPUT_DIRECTORY` and
+    :prop_tgt:`LIBRARY_OUTPUT_DIRECTORY`).
+
+* ``KNOWN_LOCATION``
+  The "Link Binary With Libraries" build phase will be used to link to another
+  target under the same conditions as with ``BUILT_ONLY`` and also:
+
+  - Imported library targets except those of type ``UNKNOWN``.
+  - Any non-target library specified directly with a path.
+
+For all other cases, the libraries will be linked by specifying the linker
+flags directly.
+
+.. warning::
+  Libraries linked using "Link Binary With Libraries" are linked after the
+  ones linked through regular linker flags.  This order should be taken into
+  account when different static libraries contain symbols with the same name,
+  as the former ones will take precedence over the latter.
+
+.. warning::
+  If two or more directories contain libraries with identical file names and
+  some libraries are linked from those directories, the library search path
+  lookup will end up linking libraries from the first directory.  This is a
+  known limitation of Xcode.
+
+This property is initialized by the value of the
+:variable:`CMAKE_XCODE_LINK_BUILD_PHASE_MODE` variable if it is set when a
+target is created.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_PRODUCT_TYPE.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_PRODUCT_TYPE.rst
new file mode 100644
index 0000000..17a9c3f
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_PRODUCT_TYPE.rst
@@ -0,0 +1,10 @@
+XCODE_PRODUCT_TYPE
+------------------
+
+.. versionadded:: 3.8
+
+Set the Xcode ``productType`` attribute on its reference to a
+target.  CMake computes a default based on target type but
+can be told explicitly with this property.
+
+See also :prop_tgt:`XCODE_EXPLICIT_FILE_TYPE`.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER.rst
new file mode 100644
index 0000000..c72ec06
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER.rst
@@ -0,0 +1,14 @@
+XCODE_SCHEME_ADDRESS_SANITIZER
+------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Address Sanitizer`` in the Diagnostics
+section of the generated Xcode scheme.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER` if it is set
+when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst
new file mode 100644
index 0000000..293b5d4
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst
@@ -0,0 +1,14 @@
+XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
+-----------------------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Detect use of stack after return``
+in the Diagnostics section of the generated Xcode scheme.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN`
+if it is set when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_ARGUMENTS.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_ARGUMENTS.rst
new file mode 100644
index 0000000..2bfcb41
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_ARGUMENTS.rst
@@ -0,0 +1,12 @@
+XCODE_SCHEME_ARGUMENTS
+----------------------
+
+.. versionadded:: 3.13
+
+Specify command line arguments that should be added to the Arguments
+section of the generated Xcode scheme.
+
+If set to a list of arguments those will be added to the scheme.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_DEBUG_AS_ROOT.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_DEBUG_AS_ROOT.rst
new file mode 100644
index 0000000..2523deb
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_DEBUG_AS_ROOT.rst
@@ -0,0 +1,9 @@
+XCODE_SCHEME_DEBUG_AS_ROOT
+--------------------------
+
+.. versionadded:: 3.15
+
+Whether to debug the target as 'root'.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst
new file mode 100644
index 0000000..bbcae35
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst
@@ -0,0 +1,15 @@
+XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
+--------------------------------------
+
+.. versionadded:: 3.16
+
+Whether to enable
+``Allow debugging when using document Versions Browser``
+in the Options section of the generated Xcode scheme.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING`
+if it is set when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst
new file mode 100644
index 0000000..3d315a2
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst
@@ -0,0 +1,14 @@
+XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
+----------------------------------------
+
+.. versionadded:: 3.13
+
+Whether to disable the ``Main Thread Checker``
+in the Diagnostics section of the generated Xcode scheme.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER`
+if it is set when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst
new file mode 100644
index 0000000..2ca20f7
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst
@@ -0,0 +1,14 @@
+XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
+----------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Dynamic Library Loads``
+in the Diagnostics section of the generated Xcode scheme.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS` if it is set
+when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst
new file mode 100644
index 0000000..278c9ef
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst
@@ -0,0 +1,14 @@
+XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
+-------------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Dynamic Linker API usage``
+in the Diagnostics section of the generated Xcode scheme.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE` if it is set
+when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_ENVIRONMENT.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_ENVIRONMENT.rst
new file mode 100644
index 0000000..16542f8
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_ENVIRONMENT.rst
@@ -0,0 +1,14 @@
+XCODE_SCHEME_ENVIRONMENT
+------------------------
+
+.. versionadded:: 3.13
+
+Specify environment variables that should be added to the Arguments
+section of the generated Xcode scheme.
+
+If set to a list of environment variables and values of the form
+``MYVAR=value`` those environment variables will be added to the
+scheme.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_EXECUTABLE.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_EXECUTABLE.rst
new file mode 100644
index 0000000..b453f10
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_EXECUTABLE.rst
@@ -0,0 +1,11 @@
+XCODE_SCHEME_EXECUTABLE
+-----------------------
+
+.. versionadded:: 3.13
+
+Specify path to executable in the Info section of the generated
+Xcode scheme. If not set the schema generator will select the
+current target if it is actually executable.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_GUARD_MALLOC.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_GUARD_MALLOC.rst
new file mode 100644
index 0000000..4b242a2
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_GUARD_MALLOC.rst
@@ -0,0 +1,14 @@
+XCODE_SCHEME_GUARD_MALLOC
+------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Guard Malloc``
+in the Diagnostics section of the generated Xcode scheme.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_GUARD_MALLOC` if it is set
+when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst
new file mode 100644
index 0000000..2a813aa
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst
@@ -0,0 +1,15 @@
+XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
+-------------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable the ``Main Thread Checker`` option
+``Pause on issues``
+in the Diagnostics section of the generated Xcode scheme.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP` if it is set
+when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_MALLOC_GUARD_EDGES.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_MALLOC_GUARD_EDGES.rst
new file mode 100644
index 0000000..750da74
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_MALLOC_GUARD_EDGES.rst
@@ -0,0 +1,14 @@
+XCODE_SCHEME_MALLOC_GUARD_EDGES
+-------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Malloc Guard Edges``
+in the Diagnostics section of the generated Xcode scheme.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES` if it is set
+when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_MALLOC_SCRIBBLE.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_MALLOC_SCRIBBLE.rst
new file mode 100644
index 0000000..4ebd21b
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_MALLOC_SCRIBBLE.rst
@@ -0,0 +1,14 @@
+XCODE_SCHEME_MALLOC_SCRIBBLE
+------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Malloc Scribble``
+in the Diagnostics section of the generated Xcode scheme.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE` if it is set
+when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_MALLOC_STACK.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_MALLOC_STACK.rst
new file mode 100644
index 0000000..5afe34e
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_MALLOC_STACK.rst
@@ -0,0 +1,14 @@
+XCODE_SCHEME_MALLOC_STACK
+-------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Malloc Stack`` in the Diagnostics
+section of the generated Xcode scheme.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_MALLOC_STACK` if it is set
+when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER.rst
new file mode 100644
index 0000000..cc774c4
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER.rst
@@ -0,0 +1,14 @@
+XCODE_SCHEME_THREAD_SANITIZER
+-----------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Thread Sanitizer`` in the Diagnostics
+section of the generated Xcode scheme.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_THREAD_SANITIZER` if it is set
+when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER_STOP.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER_STOP.rst
new file mode 100644
index 0000000..3bb2596
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER_STOP.rst
@@ -0,0 +1,14 @@
+XCODE_SCHEME_THREAD_SANITIZER_STOP
+----------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Thread Sanitizer - Pause on issues``
+in the Diagnostics section of the generated Xcode scheme.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP` if it is set
+when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst
new file mode 100644
index 0000000..1146130
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst
@@ -0,0 +1,14 @@
+XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
+------------------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Undefined Behavior Sanitizer``
+in the Diagnostics section of the generated Xcode scheme.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER`
+if it is set when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst
new file mode 100644
index 0000000..358f298
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst
@@ -0,0 +1,15 @@
+XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
+-----------------------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Undefined Behavior Sanitizer`` option
+``Pause on issues``
+in the Diagnostics section of the generated Xcode scheme.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP`
+if it is set when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_WORKING_DIRECTORY.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_WORKING_DIRECTORY.rst
new file mode 100644
index 0000000..d8d56fc
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_WORKING_DIRECTORY.rst
@@ -0,0 +1,15 @@
+XCODE_SCHEME_WORKING_DIRECTORY
+------------------------------
+
+.. versionadded:: 3.17
+
+Specify the ``Working Directory`` of the *Run* and *Profile*
+actions in the generated Xcode scheme. In case the value contains
+generator expressions those are evaluated.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_WORKING_DIRECTORY` if it is set
+when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_ZOMBIE_OBJECTS.rst b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_ZOMBIE_OBJECTS.rst
new file mode 100644
index 0000000..6030109
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCODE_SCHEME_ZOMBIE_OBJECTS.rst
@@ -0,0 +1,14 @@
+XCODE_SCHEME_ZOMBIE_OBJECTS
+------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Zombie Objects``
+in the Diagnostics section of the generated Xcode scheme.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS` if it is set
+when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/prop_tgt/XCTEST.rst b/share/cmake-3.22/Help/prop_tgt/XCTEST.rst
new file mode 100644
index 0000000..67e9a70
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XCTEST.rst
@@ -0,0 +1,15 @@
+XCTEST
+------
+
+.. versionadded:: 3.3
+
+This target is a XCTest CFBundle on the Mac.
+
+This property will usually get set via the :command:`xctest_add_bundle`
+macro in :module:`FindXCTest` module.
+
+If a module library target has this property set to true it will be
+built as a CFBundle when built on the Mac.  It will have the directory
+structure required for a CFBundle.
+
+This property depends on :prop_tgt:`BUNDLE` to be effective.
diff --git a/share/cmake-3.22/Help/prop_tgt/XXX_OUTPUT_DIRECTORY.txt b/share/cmake-3.22/Help/prop_tgt/XXX_OUTPUT_DIRECTORY.txt
new file mode 100644
index 0000000..d38a96e
--- /dev/null
+++ b/share/cmake-3.22/Help/prop_tgt/XXX_OUTPUT_DIRECTORY.txt
@@ -0,0 +1,12 @@
+Output directory in which to build |XXX| target files.
+
+This property specifies the directory into which |xxx| target files
+should be built.  The property value may use
+:manual:`generator expressions <cmake-generator-expressions(7)>`.
+Multi-configuration generators (:ref:`Visual Studio <Visual Studio Generators>`,
+:generator:`Xcode`, :generator:`Ninja Multi-Config`) append a
+per-configuration subdirectory to the specified directory unless a generator
+expression is used.
+
+This property is initialized by the value of the
+|CMAKE_XXX_OUTPUT_DIRECTORY| variable if it is set when a target is created.
diff --git a/share/cmake-3.18/Help/prop_tgt/XXX_OUTPUT_NAME.txt b/share/cmake-3.22/Help/prop_tgt/XXX_OUTPUT_NAME.txt
similarity index 100%
rename from share/cmake-3.18/Help/prop_tgt/XXX_OUTPUT_NAME.txt
rename to share/cmake-3.22/Help/prop_tgt/XXX_OUTPUT_NAME.txt
diff --git a/share/cmake-3.18/Help/release/3.0.rst b/share/cmake-3.22/Help/release/3.0.rst
similarity index 100%
rename from share/cmake-3.18/Help/release/3.0.rst
rename to share/cmake-3.22/Help/release/3.0.rst
diff --git a/share/cmake-3.22/Help/release/3.1.rst b/share/cmake-3.22/Help/release/3.1.rst
new file mode 100644
index 0000000..3f4712b
--- /dev/null
+++ b/share/cmake-3.22/Help/release/3.1.rst
@@ -0,0 +1,425 @@
+CMake 3.1 Release Notes
+***********************
+
+.. only:: html
+
+  .. contents::
+
+Changes made since CMake 3.0 include the following.
+
+Documentation Changes
+=====================
+
+* A new :manual:`cmake-compile-features(7)` manual was added.
+
+New Features
+============
+
+Generators
+----------
+
+* The :generator:`Visual Studio 14 2015` generator was added.
+
+Windows Phone and Windows Store
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+* Generators for Visual Studio 11 (2012) and above learned to generate
+  projects for Windows Phone and Windows Store.  One may set the
+  :variable:`CMAKE_SYSTEM_NAME` variable to ``WindowsPhone``
+  or ``WindowsStore`` on the :manual:`cmake(1)` command-line
+  or in a :variable:`CMAKE_TOOLCHAIN_FILE` to activate these platforms.
+  Also set :variable:`CMAKE_SYSTEM_VERSION` to ``8.0`` or ``8.1`` to
+  specify the version of Windows to be targeted.
+
+NVIDIA Nsight Tegra
+^^^^^^^^^^^^^^^^^^^
+
+* Generators for Visual Studio 10 (2010) and above learned to generate
+  projects for NVIDIA Nsight Tegra Visual Studio Edition.  One may set
+  the :variable:`CMAKE_SYSTEM_NAME` variable to ``Android`` on the
+  :manual:`cmake(1)` command-line or in a :variable:`CMAKE_TOOLCHAIN_FILE`
+  to activate this platform.
+
+Syntax
+------
+
+* The :manual:`cmake-language(7)` syntax for :ref:`Variable References` and
+  :ref:`Escape Sequences` was simplified in order to allow a much faster
+  implementation.  See policy :policy:`CMP0053`.
+
+* The :command:`if` command no longer automatically dereferences
+  variables named in quoted or bracket arguments.  See policy
+  :policy:`CMP0054`.
+
+Commands
+--------
+
+* The :command:`add_custom_command` command learned to interpret
+  :manual:`cmake-generator-expressions(7)` in arguments to ``DEPENDS``.
+
+* The :command:`export(PACKAGE)` command learned to check the
+  :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` variable to skip
+  exporting the package.
+
+* The :command:`file(STRINGS)` command gained a new ``ENCODING``
+  option to enable extraction of ``UTF-8`` strings.
+
+* The :command:`find_package` command learned to check the
+  :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` and
+  :variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY`
+  variables to skip searching the package registries.
+
+* The :command:`get_property` command learned a new ``INSTALL`` scope
+  for properties.
+
+* The :command:`install` command learned a ``MESSAGE_NEVER`` option
+  to avoid output during installation.
+
+* The :command:`set_property` command learned a new ``INSTALL`` scope
+  for properties.
+
+* The :command:`string` command learned a new ``GENEX_STRIP`` subcommand
+  which removes
+  :manual:`generator expression <cmake-generator-expressions(7)>`.
+
+* The :command:`string` command learned a new ``UUID`` subcommand
+  to generate a universally unique identifier.
+
+* New :command:`target_compile_features` command allows populating the
+  :prop_tgt:`COMPILE_FEATURES` target property, just like any other
+  build variable.
+
+* The :command:`target_sources` command was added to add to the
+  :prop_tgt:`SOURCES` target property.
+
+Variables
+---------
+
+* The Visual Studio generators for versions 8 (2005) and above
+  learned to read the target platform name from a new
+  :variable:`CMAKE_GENERATOR_PLATFORM` variable when it is
+  not specified as part of the generator name.  The platform
+  name may be specified on the :manual:`cmake(1)` command line
+  with the ``-A`` option, e.g. ``-G "Visual Studio 12 2013" -A x64``.
+
+* The :variable:`CMAKE_GENERATOR_TOOLSET` variable may now be
+  initialized in a toolchain file specified by the
+  :variable:`CMAKE_TOOLCHAIN_FILE` variable.  This is useful
+  when cross-compiling with the Xcode or Visual Studio
+  generators.
+
+* The :variable:`CMAKE_INSTALL_MESSAGE` variable was introduced to
+  optionally reduce output installation.
+
+Properties
+----------
+
+* New :prop_tgt:`CXX_STANDARD` and :prop_tgt:`CXX_EXTENSIONS` target
+  properties may specify values which CMake uses to compute required
+  compile options such as ``-std=c++11`` or ``-std=gnu++11``. The
+  :variable:`CMAKE_CXX_STANDARD` and :variable:`CMAKE_CXX_EXTENSIONS`
+  variables may be set to initialize the target properties.
+
+* New :prop_tgt:`C_STANDARD` and :prop_tgt:`C_EXTENSIONS` target
+  properties may specify values which CMake uses to compute required
+  compile options such as ``-std=c11`` or ``-std=gnu11``. The
+  :variable:`CMAKE_C_STANDARD` and :variable:`CMAKE_C_EXTENSIONS`
+  variables may be set to initialize the target properties.
+
+* New :prop_tgt:`COMPILE_FEATURES` target property may contain a list
+  of features required to compile a target.  CMake uses this
+  information to ensure that the compiler in use is capable of building
+  the target, and to add any necessary compile flags to support language
+  features.
+
+* New :prop_tgt:`COMPILE_PDB_NAME` and
+  :prop_tgt:`COMPILE_PDB_OUTPUT_DIRECTORY` target properties
+  were introduced to specify the MSVC compiler program database
+  file location (``cl /Fd``).  This complements the existing
+  :prop_tgt:`PDB_NAME` and :prop_tgt:`PDB_OUTPUT_DIRECTORY`
+  target properties that specify the linker program database
+  file location (``link /pdb``).
+
+* The :prop_tgt:`INTERFACE_LINK_LIBRARIES` target property now supports
+  a ``$<LINK_ONLY:...>``
+  :manual:`generator expression <cmake-generator-expressions(7)>`.
+
+* A new :prop_tgt:`INTERFACE_SOURCES` target property was introduced. This is
+  consumed by dependent targets, which compile and link the listed sources.
+
+* The :prop_tgt:`SOURCES` target property now contains
+  :manual:`generator expression <cmake-generator-expressions(7)>`
+  such as ``TARGET_OBJECTS`` when read at configure time, if
+  policy :policy:`CMP0051` is ``NEW``.
+
+* The :prop_tgt:`SOURCES` target property now generally supports
+  :manual:`generator expression <cmake-generator-expressions(7)>`.  The
+  generator expressions may be used in the :command:`add_library` and
+  :command:`add_executable` commands.
+
+* It is now possible to write and append to the :prop_tgt:`SOURCES` target
+  property.  The :variable:`CMAKE_DEBUG_TARGET_PROPERTIES` variable may be
+  used to trace the origin of sources.
+
+* A :prop_sf:`VS_DEPLOYMENT_CONTENT` source file property was added
+  to tell the Visual Studio generators to mark content for deployment
+  in Windows Phone and Windows Store projects.
+
+* A :prop_sf:`VS_DEPLOYMENT_LOCATION` source file property was added
+  to tell the Visual Studio generators the relative location of content
+  marked for deployment in Windows Phone and Windows Store projects.
+
+* The :prop_tgt:`VS_WINRT_COMPONENT` target property was created to
+  tell Visual Studio generators to compile a shared library as a
+  Windows Runtime (WinRT) component.
+
+* The :generator:`Xcode` generator learned to check source
+  file properties  :prop_sf:`XCODE_EXPLICIT_FILE_TYPE` and
+  :prop_sf:`XCODE_LAST_KNOWN_FILE_TYPE` for a custom Xcode
+  file reference type.
+
+Modules
+-------
+
+* The :module:`BundleUtilities` module learned to resolve and replace
+  ``@rpath`` placeholders on OS X to correctly bundle applications
+  using them.
+
+* The :module:`CMakePackageConfigHelpers` module
+  :command:`configure_package_config_file` command learned a new
+  ``INSTALL_PREFIX`` option to generate package configuration files
+  meant for a prefix other than :variable:`CMAKE_INSTALL_PREFIX`.
+
+* The :module:`CheckFortranSourceCompiles` module was added to
+  provide a ``CHECK_Fortran_SOURCE_COMPILES`` macro.
+
+* The :module:`ExternalData` module learned to tolerate a ``DATA{}``
+  reference to a missing source file with a warning instead of
+  rejecting it with an error.  This helps developers write new
+  ``DATA{}`` references to test reference outputs that have not
+  yet been created.
+
+* The :module:`ExternalProject` module learned to support lzma-compressed
+  source tarballs with ``.7z``, ``.tar.xz``, and ``.txz`` extensions.
+
+* The :module:`ExternalProject` module ``ExternalProject_Add`` command
+  learned a new ``BUILD_ALWAYS`` option to cause the external project
+  build step to run every time the host project is built.
+
+* The :module:`ExternalProject` module ``ExternalProject_Add`` command
+  learned a new ``EXCLUDE_FROM_ALL`` option to cause the external
+  project target to have the :prop_tgt:`EXCLUDE_FROM_ALL` target
+  property set.
+
+* The :module:`ExternalProject` module ``ExternalProject_Add_Step`` command
+  learned a new ``EXCLUDE_FROM_MAIN`` option to cause the step to not be
+  a direct dependency of the main external project target.
+
+* The :module:`ExternalProject` module ``ExternalProject_Add`` command
+  learned a new ``DOWNLOAD_NO_PROGRESS`` option to disable progress
+  output while downloading the source tarball.
+
+* The :module:`FeatureSummary` module ``feature_summary`` API
+  learned to accept multiple values for the ``WHAT`` option and
+  combine them appropriately.
+
+* The :module:`FindCUDA` module learned to support ``fatbin`` and ``cubin``
+  modules.
+
+* The :module:`FindGTest` module ``gtest_add_tests`` macro learned
+  a new ``AUTO`` option to automatically read the :prop_tgt:`SOURCES`
+  target property of the test executable and scan the source files
+  for tests to be added.
+
+* The :module:`FindGLEW` module now provides imported targets.
+
+* The :module:`FindGLUT` module now provides imported targets.
+
+* The :module:`FindHg` module gained a new ``Hg_WC_INFO`` macro to
+  help run ``hg`` to extract information about a Mercurial work copy.
+
+* The :module:`FindOpenCL` module was introduced.
+
+* The :module:`FindOpenMP` module learned to support Fortran.
+
+* The :module:`FindPkgConfig` module learned to use the ``PKG_CONFIG``
+  environment variable value as the ``pkg-config`` executable, if set.
+
+* The :module:`FindXercesC` module was introduced.
+
+* The :module:`FindZLIB` module now provides imported targets.
+
+* The :module:`GenerateExportHeader` module ``generate_export_header``
+  function learned to allow use with :ref:`Object Libraries`.
+
+* The :module:`InstallRequiredSystemLibraries` module gained a new
+  ``CMAKE_INSTALL_OPENMP_LIBRARIES`` option to install MSVC OpenMP
+  runtime libraries.
+
+* The :module:`UseSWIG` module learned to detect the module name
+  from ``.i`` source files if possible to avoid the need to set
+  the ``SWIG_MODULE_NAME`` source file property explicitly.
+
+* The :module:`WriteCompilerDetectionHeader` module was added to allow
+  creation of a portable header file for compiler optional feature detection.
+
+Generator Expressions
+---------------------
+
+* New ``COMPILE_FEATURES``
+  :manual:`generator expression <cmake-generator-expressions(7)>` allows
+  setting build properties based on available compiler features.
+
+CTest
+-----
+
+* The :command:`ctest_coverage` command learned to read variable
+  ``CTEST_COVERAGE_EXTRA_FLAGS`` to set ``CoverageExtraFlags``.
+
+* The :command:`ctest_coverage` command learned to support
+  Intel coverage files with the ``codecov`` tool.
+
+* The :command:`ctest_memcheck` command learned to support sanitizer
+  modes, including ``AddressSanitizer``, ``MemorySanitizer``,
+  ``ThreadSanitizer``, and ``UndefinedBehaviorSanitizer``.
+  Options may be set using the new
+  :variable:`CTEST_MEMORYCHECK_SANITIZER_OPTIONS` variable.
+
+CPack
+-----
+
+* :manual:`cpack(1)` gained an ``IFW`` generator to package using
+  Qt Framework Installer tools.  See the :cpack_gen:`CPack IFW Generator`.
+
+* :manual:`cpack(1)` gained ``7Z`` and ``TXZ`` generators supporting
+  lzma-compressed archives.
+
+* The :cpack_gen:`CPack DEB Generator` learned a new
+  :variable:`CPACK_DEBIAN_COMPRESSION_TYPE` variable to set the
+  tarball compression type.
+
+* The :cpack_gen:`CPack WIX Generator` learned to support
+  a :prop_inst:`CPACK_WIX_ACL` installed file property to
+  specify an Access Control List.
+
+Other
+-----
+
+* The :manual:`cmake(1)` ``-E`` option learned a new ``env`` command.
+
+* The :manual:`cmake(1)` ``-E tar`` command learned to support
+  lzma-compressed files.
+
+* :ref:`Object Libraries` may now have extra sources that do not
+  compile to object files so long as they would not affect linking
+  of a normal library (e.g. ``.dat`` is okay but not ``.def``).
+
+* Visual Studio generators for VS 8 and later learned to support
+  the ``ASM_MASM`` language.
+
+* The Visual Studio generators learned to treat ``.hlsl`` source
+  files as High Level Shading Language sources (using ``FXCompile``
+  in ``.vcxproj`` files).  Source file properties
+  :prop_sf:`VS_SHADER_TYPE`, :prop_sf:`VS_SHADER_MODEL`, and
+  :prop_sf:`VS_SHADER_ENTRYPOINT` were added added to specify the
+  shader type, model, and entry point name.
+
+New Diagnostics
+===============
+
+* Policy :policy:`CMP0052` introduced to control directories in the
+  :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` of exported targets.
+
+Deprecated and Removed Features
+===============================
+
+* In CMake 3.0 the :command:`target_link_libraries` command
+  accidentally began allowing unquoted arguments to use
+  :manual:`generator expressions <cmake-generator-expressions(7)>`
+  containing a (``;`` separated) list within them.  For example::
+
+    set(libs B C)
+    target_link_libraries(A PUBLIC $<BUILD_INTERFACE:${libs}>)
+
+  This is equivalent to writing::
+
+    target_link_libraries(A PUBLIC $<BUILD_INTERFACE:B C>)
+
+  and was never intended to work.  It did not work in CMake 2.8.12.
+  Such generator expressions should be in quoted arguments::
+
+    set(libs B C)
+    target_link_libraries(A PUBLIC "$<BUILD_INTERFACE:${libs}>")
+
+  CMake 3.1 again requires the quotes for this to work correctly.
+
+* Prior to CMake 3.1 the Makefile generators did not escape ``#``
+  correctly inside make variable assignments used in generated
+  makefiles, causing them to be treated as comments.  This made
+  code like::
+
+    add_compile_options(-Wno-#pragma-messages)
+
+  not work in Makefile generators, but work in other generators.
+  Now it is escaped correctly, making the behavior consistent
+  across generators.  However, some projects may have tried to
+  workaround the original bug with code like::
+
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-\\#pragma-messages")
+
+  This added the needed escape for Makefile generators but also
+  caused other generators to pass ``-Wno-\#pragma-messages`` to
+  the shell, which would work only in POSIX shells.
+  Unfortunately the escaping fix could not be made in a compatible
+  way so this platform- and generator-specific workaround no
+  longer works.  Project code may test the :variable:`CMAKE_VERSION`
+  variable value to make the workaround version-specific too.
+
+* Callbacks established by the :command:`variable_watch` command will no
+  longer receive the ``ALLOWED_UNKNOWN_READ_ACCESS`` access type when
+  the undocumented ``CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS`` variable is
+  set.  Uninitialized variable accesses will always be reported as
+  ``UNKNOWN_READ_ACCESS``.
+
+* The :module:`CMakeDetermineVSServicePack` module now warns that
+  it is deprecated and should not longer be used.  Use the
+  :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable instead.
+
+* The :module:`FindITK` module has been removed altogether.
+  It was a thin-wrapper around ``find_package(ITK ... NO_MODULE)``.
+  This produces much clearer error messages when ITK is not found.
+
+* The :module:`FindVTK` module has been removed altogether.
+  It was a thin-wrapper around ``find_package(VTK ... NO_MODULE)``.
+  This produces much clearer error messages when VTK is not found.
+
+  The module also provided compatibility support for finding VTK 4.0.
+  This capability has been dropped.
+
+Other Changes
+=============
+
+* The :manual:`cmake-gui(1)` learned to capture output from child
+  processes started by the :command:`execute_process` command
+  and display it in the output window.
+
+* The :manual:`cmake-language(7)` internal implementation of generator
+  expression and list expansion parsers have been optimized and shows
+  non-trivial speedup on large projects.
+
+* The Makefile generators learned to use response files with GNU tools
+  on Windows to pass library directories and names to the linker.
+
+* When generating linker command-lines, CMake now avoids repeating
+  items corresponding to SHARED library targets.
+
+* Support for the Open Watcom compiler has been overhauled.
+  The :variable:`CMAKE_<LANG>_COMPILER_ID` is now ``OpenWatcom``,
+  and the :variable:`CMAKE_<LANG>_COMPILER_VERSION` now uses
+  the Open Watcom external version numbering.  The external
+  version numbers are lower than the internal version number
+  by 11.
+
+* The ``cmake-mode.el`` major Emacs editing mode no longer
+  treats ``_`` as part of words, making it more consistent
+  with other major modes.
diff --git a/share/cmake-3.18/Help/release/3.10.rst b/share/cmake-3.22/Help/release/3.10.rst
similarity index 100%
rename from share/cmake-3.18/Help/release/3.10.rst
rename to share/cmake-3.22/Help/release/3.10.rst
diff --git a/share/cmake-3.18/Help/release/3.11.rst b/share/cmake-3.22/Help/release/3.11.rst
similarity index 100%
rename from share/cmake-3.18/Help/release/3.11.rst
rename to share/cmake-3.22/Help/release/3.11.rst
diff --git a/share/cmake-3.18/Help/release/3.12.rst b/share/cmake-3.22/Help/release/3.12.rst
similarity index 100%
rename from share/cmake-3.18/Help/release/3.12.rst
rename to share/cmake-3.22/Help/release/3.12.rst
diff --git a/share/cmake-3.18/Help/release/3.13.rst b/share/cmake-3.22/Help/release/3.13.rst
similarity index 100%
rename from share/cmake-3.18/Help/release/3.13.rst
rename to share/cmake-3.22/Help/release/3.13.rst
diff --git a/share/cmake-3.18/Help/release/3.14.rst b/share/cmake-3.22/Help/release/3.14.rst
similarity index 100%
rename from share/cmake-3.18/Help/release/3.14.rst
rename to share/cmake-3.22/Help/release/3.14.rst
diff --git a/share/cmake-3.22/Help/release/3.15.rst b/share/cmake-3.22/Help/release/3.15.rst
new file mode 100644
index 0000000..6b1a800
--- /dev/null
+++ b/share/cmake-3.22/Help/release/3.15.rst
@@ -0,0 +1,396 @@
+CMake 3.15 Release Notes
+************************
+
+.. only:: html
+
+  .. contents::
+
+Changes made since CMake 3.14 include the following.
+
+New Features
+============
+
+Generators
+----------
+
+* The :generator:`Xcode` generator now supports per-target schemes.
+  See the :variable:`CMAKE_XCODE_GENERATE_SCHEME` variable and
+  :prop_tgt:`XCODE_GENERATE_SCHEME` target property.
+
+* The :generator:`Green Hills MULTI` generator has been updated:
+
+  * It now supports the :command:`add_custom_command` and
+    :command:`add_custom_target` commands.
+
+  * It is now available on Linux.
+
+Languages
+---------
+
+* Preliminary support for the ``Swift`` language was added to the
+  :generator:`Ninja` generator:
+
+  * Use the :envvar:`SWIFTC` environment variable to specify a compiler.
+
+  * The :prop_tgt:`Swift_DEPENDENCIES_FILE` target property and
+    :prop_sf:`Swift_DEPENDENCIES_FILE` source file property were added
+    to customize dependency files.
+
+  * The :prop_tgt:`Swift_MODULE_NAME` target property was added to
+    customize the Swift module name.
+
+  * The :prop_sf:`Swift_DIAGNOSTICS_FILE` source property was added to
+    indicate where to write the serialized Swift diagnostics.
+
+  The Swift support is experimental, not considered stable, and may change
+  in future releases of CMake.
+
+Compilers
+---------
+
+* The ``Clang`` compiler variant on Windows that targets the MSVC ABI
+  but has a GNU-like command line is now supported.
+
+* Support for the Clang-based ARM compiler was added with compiler id
+  ``ARMClang``.
+
+* Support was added for the IAR compiler architectures Renesas RX,
+  RL78, RH850 and Texas Instruments MSP430.
+
+* Support was added for the IAR compilers built for Linux (IAR BuildLx).
+
+Command-Line
+------------
+
+* The :envvar:`CMAKE_GENERATOR` environment variable was added
+  to specify a default generator to use when :manual:`cmake(1)` is
+  run without a ``-G`` option.  Additionally, environment variables
+  :envvar:`CMAKE_GENERATOR_PLATFORM`, :envvar:`CMAKE_GENERATOR_TOOLSET`,
+  and :envvar:`CMAKE_GENERATOR_INSTANCE` were created to configure
+  the generator.
+
+* The :manual:`cmake(1)` ``--build`` tool ``--target`` parameter gained support
+  for multiple targets, e.g. ``cmake --build . --target Library1 Library2``.
+  It now also has a short form ``-t`` alias, e.g.
+  ``cmake --build . -t Library1 Library2``.
+
+* The :manual:`cmake(1)` command gained a new ``--install`` option.
+  This may be used after building a project to run installation without
+  using the generated build system or the native build tool.
+
+* The :manual:`cmake(1)` command learned a new CLI option ``--loglevel``.
+
+* The :manual:`cmake(1)` ``-E remove_directory`` command-line tool learned
+  to support removing multiple directories.
+
+* The :manual:`cmake(1)` ``-E tar`` tool has been improved:
+
+  * It now continues adding files to an archive even if some of the files
+    are not readable.  This behavior is more consistent with the
+    classic ``tar`` tool.
+
+  * It now parses all flags, and if an invalid flag was provided, a
+    warning is issued.
+
+  * It now displays an error if no action flag was specified, along with a
+    list of possible actions: ``t`` (list), ``c`` (create) or ``x`` (extract).
+
+  * It now supports extracting (``-x``) or listing (``-t``) only specific
+    files or directories.
+
+  * It now supports Zstandard compression with a ``--zstd`` option.
+    Zstandard was designed to give a compression ratio comparable to that
+    of the DEFLATE (zip) algorithm, but faster, especially for decompression.
+
+Commands
+--------
+
+* The :command:`add_custom_command` and :command:`add_custom_target` commands
+  gained a new ``JOB_POOL`` option that works with the :generator:`Ninja`
+  generator to set the pool variable on the build statement.
+
+* The :command:`add_library` command ``ALIAS`` option learned to support
+  import libraries of the ``UNKNOWN`` type.
+
+* The :command:`cmake_parse_arguments` command gained an additional
+  ``<prefix>_KEYWORDS_MISSING_VALUES`` output variable to report
+  keyword arguments that were given by the caller with no values.
+
+* The :command:`execute_process` command gained a ``COMMAND_ECHO`` option
+  and supporting :variable:`CMAKE_EXECUTE_PROCESS_COMMAND_ECHO` variable
+  to enable echoing of the command-line string before execution.
+
+* The :command:`file(INSTALL)` command learned a new argument,
+  ``FOLLOW_SYMLINK_CHAIN``, which can be used to recursively resolve and
+  install symlinks.
+
+* :command:`list` learned new sub-commands:
+  ``PREPEND``, ``POP_FRONT`` and ``POP_BACK``.
+
+* The :command:`message` command learned new types:
+  ``NOTICE``, ``VERBOSE``, ``DEBUG`` and ``TRACE``.
+
+* The :command:`string` learned a new sub-command ``REPEAT``.
+
+Variables
+---------
+
+* The :variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable and corresponding
+  :prop_tgt:`CROSSCOMPILING_EMULATOR` target property learned to support
+  arguments to the emulator.
+
+* The :variable:`CMAKE_FIND_PACKAGE_PREFER_CONFIG` variable was added to tell
+  :command:`find_package` calls to look for a package configuration
+  file first even if a find module is available.
+
+* The :variable:`CMAKE_FRAMEWORK` variable was added to initialize the
+  :prop_tgt:`FRAMEWORK` property on all targets.
+
+* The :variable:`CMAKE_VS_JUST_MY_CODE_DEBUGGING` variable and
+  :prop_tgt:`VS_JUST_MY_CODE_DEBUGGING` target property were added to
+  enable the Just My Code feature of the Visual Studio Debugger when
+  compiling with MSVC cl 19.05 and higher.
+
+* The :variable:`CMAKE_MSVC_RUNTIME_LIBRARY` variable and
+  :prop_tgt:`MSVC_RUNTIME_LIBRARY` target property were introduced to
+  select the runtime library used by compilers targeting the MSVC ABI.
+  See policy :policy:`CMP0091`.
+
+* The :variable:`CMAKE_PROJECT_INCLUDE` and
+  :variable:`CMAKE_PROJECT_INCLUDE_BEFORE` variables were added to allow
+  injection of custom code at the sites of :command:`project` calls
+  without knowing the project name a priori.
+
+Properties
+----------
+
+* The :prop_tgt:`ADDITIONAL_CLEAN_FILES` target property and
+  :prop_dir:`ADDITIONAL_CLEAN_FILES` directory property were added.
+  They allow to register additional files that should be removed during
+  the clean stage.
+
+* The :prop_tgt:`PUBLIC_HEADER` and :prop_tgt:`PRIVATE_HEADER` properties
+  may now be set on :ref:`Interface Libraries`. The headers specified by those
+  properties can be installed using the :command:`install(TARGETS)` command by
+  passing the ``PUBLIC_HEADER`` and ``PRIVATE_HEADER`` arguments respectively.
+
+* The :prop_tgt:`VS_PACKAGE_REFERENCES` target property was added to
+  tell :ref:`Visual Studio Generators` to add references to ``nuget``
+  packages.
+
+* The :prop_tgt:`VS_PROJECT_IMPORT` target property was added to allow
+  managed Visual Studio project files to import external ``.props`` files.
+
+* The :prop_tgt:`VS_NO_SOLUTION_DEPLOY` target property was added to
+  tell :ref:`Visual Studio Generators` whether to deploy an artifact
+  to the WinCE or Windows Phone target device.
+
+Modules
+-------
+
+* The :module:`FindBoost` module was reworked to expose a more consistent
+  user experience between its "Config" and "Module" modes and with other
+  find modules in general.
+
+  * A new imported target ``Boost::headers`` is now defined (same
+    as ``Boost::boost``).
+
+  * New output variables ``Boost_VERSION_MACRO``,
+    ``Boost_VERSION_MAJOR``, ``Boost_VERSION_MINOR``,
+    ``Boost_VERSION_PATCH``, and ``Boost_VERSION_COUNT``
+    were added.
+
+  * The ``QUIET`` argument passed to :command:`find_package` is no
+    longer ignored in config mode.  Note that the CMake package shipped with
+    Boost ``1.70.0`` ignores the ``QUIET`` argument passed to
+    :command:`find_package`.  This is fixed in the next Boost release.
+
+  * The input switch ``Boost_DETAILED_FAILURE_MSG`` was removed.
+
+  * ``Boost_VERSION`` now reports the version in ``x.y.z``
+    format in module mode.  See policy :policy:`CMP0093`.
+
+* The :module:`FindCups` module now provides imported targets.
+
+* The :module:`FindEnvModules` module was added to use Lua- and TCL-based
+  environment modules in :ref:`CTest Scripts <CTest Script>`.
+
+* The :module:`FindGLEW` module now provides an interface more consistent
+  with what upstream GLEW provides in its own CMake package files.
+
+* The :module:`FindPkgConfig` now populates :prop_tgt:`INTERFACE_LINK_OPTIONS`
+  property of imported targets with other (non-library) linker flags.
+
+* The :module:`FindPostgreSQL` module learned to find debug and release
+  variants separately.
+
+* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
+  gained additional lookup strategies and controls, and a new default.
+  See policy :policy:`CMP0094`.
+
+* Modules :module:`FindPython`, :module:`FindPython2` and :module:`FindPython3`
+  gain a new target (respectively ``Python::Module``, ``Python2::Module``
+  and ``Python3::Module``) which can be used to develop Python modules.
+
+* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
+  gain capability to control how virtual environments are handled.
+
+* The :module:`UseSWIG` module learned to manage alternate library names
+  by passing ``-interface <library_name>`` for ``python`` language or
+  ``-dllimport <library_name>`` for ``CSharp`` language to the ``SWIG``
+  compiler.
+
+Generator Expressions
+---------------------
+
+* The :manual:`generator expressions <cmake-generator-expressions(7)>`
+  ``C_COMPILER_ID``, ``CXX_COMPILER_ID``, ``CUDA_COMPILER_ID``,
+  ``Fortran_COMPILER_ID``, ``COMPILE_LANGUAGE``, ``COMPILE_LANG_AND_ID``, and
+  ``PLATFORM_ID`` learned to support matching one value from a comma-separated
+  list.
+
+* The ``$<CUDA_COMPILER_ID:...>`` and ``$<CUDA_COMPILER_VERSION:...>``
+  :manual:`generator expressions <cmake-generator-expressions(7)>` were added.
+
+* The ``$<COMPILE_LANG_AND_ID:...>`` generator expression was introduced to
+  allow specification of compile options for target files based on the
+  :variable:`CMAKE_<LANG>_COMPILER_ID` and :prop_sf:`LANGUAGE` of
+  each source file.
+
+* A ``$<FILTER:list,INCLUDE|EXCLUDE,regex>``
+  :manual:`generator expression <cmake-generator-expressions(7)>`
+  has been added.
+
+* A ``$<REMOVE_DUPLICATES:list>``
+  :manual:`generator expression <cmake-generator-expressions(7)>`
+  has been added.
+
+* The ``$<SHELL_PATH:...>`` :manual:`generator expression
+  <cmake-generator-expressions(7)>` gained support for a list of paths.
+
+* New ``$<TARGET_FILE*>`` :manual:`generator expressions
+  <cmake-generator-expressions(7)>` were added to retrieve the prefix, base
+  name, and suffix of the file names of various artifacts:
+
+  * ``$<TARGET_FILE_PREFIX:...>``
+  * ``$<TARGET_FILE_BASE_NAME:...>``
+  * ``$<TARGET_FILE_SUFFIX:...>``
+  * ``$<TARGET_LINKER_FILE_PREFIX:...>``
+  * ``$<TARGET_LINKER_FILE_BASE_NAME:...>``
+  * ``$<TARGET_LINKER_FILE_SUFFIX:...>``
+  * ``$<TARGET_PDB_FILE_BASE_NAME:...>``
+
+* The ``$<TARGET_OBJECTS:...>`` :manual:`generator expression
+  <cmake-generator-expressions(7)>` is now supported on ``SHARED``,
+  ``STATIC``, ``MODULE`` libraries and executables.
+
+CTest
+-----
+
+* The :command:`ctest_submit` command learned a new option: ``BUILD_ID``.
+  This can be used to store the ID assigned to this build by CDash to a
+  variable.
+
+* The :command:`ctest_update` command learned to honor a new variable:
+  :variable:`CTEST_UPDATE_VERSION_OVERRIDE`. This can be used to specify
+  the current version of your source tree rather than using the update
+  command to discover the current version that is checked out.
+
+CPack
+-----
+
+* The :cpack_gen:`CPack IFW Generator` gained a new
+  :variable:`CPACK_IFW_PACKAGE_STYLE_SHEET` variable to customize the
+  installer stylesheet.
+
+Deprecated and Removed Features
+===============================
+
+* The :manual:`cmake-server(7)` mode has been deprecated and will be
+  removed from a future version of CMake.  Please port clients to use
+  the :manual:`cmake-file-api(7)` instead.
+
+* The :prop_dir:`ADDITIONAL_MAKE_CLEAN_FILES` directory property is now
+  deprecated.  Use the :prop_dir:`ADDITIONAL_CLEAN_FILES` directory property
+  instead.
+
+* The variable :variable:`CMAKE_AUTOMOC_RELAXED_MODE` is considered
+  deprecated.  Support still exists but will be removed in future versions.
+
+* The :command:`export(PACKAGE)` command now does nothing unless
+  enabled via :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY`.
+  See policy :policy:`CMP0090`.
+
+* The :generator:`Xcode` generator now requires at least Xcode 5.
+
+* An explicit deprecation diagnostic was added for policy ``CMP0066``
+  (``CMP0065`` and below were already deprecated).
+  The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
+  of all policies are deprecated and that projects should port to the
+  NEW behaviors.
+
+Other Changes
+=============
+
+* If a feature specified by :command:`target_compile_features` is available
+  in the compiler's default standard level, CMake 3.14 and below incorrectly
+  added unnecessary ``-std=`` flags that could lower the standard level.
+  This bug has been fixed in CMake 3.15.  This behavior change may expose
+  bugs in existing projects that were relying on undocumented implementation
+  details.  Specifying compile features only ensures that the compiler runs
+  in a mode that has those features, not that any specific standard level is
+  used or explicit ``-std=`` flag passed.
+
+* CMake learned how to compile C++14 with the IBM AIX XL compiler
+  and the SunPro compiler and to compile C++20 with the AppleClang compiler.
+
+* With MSVC-like compilers the value of :variable:`CMAKE_<LANG>_FLAGS`
+  no longer contains warning flags like ``/W3`` by default.
+  See policy :policy:`CMP0092`.
+
+* IBM Clang-based XL compilers that define ``__ibmxl__`` now use the
+  compiler id ``XLClang`` instead of ``XL``.  See policy :policy:`CMP0089`.
+
+* The :command:`file(REMOVE)` and :command:`file(REMOVE_RECURSE)` commands
+  were changed to ignore empty arguments with a warning instead of treating
+  them as a relative path and removing the contents of the current directory.
+
+Updates
+=======
+
+Changes made since CMake 3.15.0 include the following.
+
+3.15.1
+------
+
+* In CMake 3.15.0 support for the GNU-like ``Clang`` compiler targeting the
+  MSVC ABI implemented :variable:`CMAKE_CXX_STANDARD` values 98 and 11 using
+  the corresponding ``-std=`` flags.  However, these modes do not work with
+  the MSVC standard library.  Therefore CMake 3.15.1 passes C++14 standard
+  flags even for C++98 and C++11.  This is consistent with MSVC itself which
+  always runs in a mode aware of C++14.
+
+* Preliminary Swift support added in 3.15.0 has been updated.
+
+3.15.2
+------
+
+* In CMake 3.15.0 and 3.15.1 the :variable:`CMAKE_FIND_PACKAGE_PREFER_CONFIG`
+  variable caused the :command:`find_package` command to fail on a missing
+  package even without the ``REQUIRED`` option.  This has been fixed.
+
+3.15.3
+------
+
+* ``CrayPrgEnv`` compiler wrapper support has been updated for the 19.06
+  release of the Cray Programming Environment for which the default linking
+  mode on XC Cray systems is now dynamic instead of static.
+
+3.15.4
+------
+
+* In CMake 3.15.0 through 3.15.3, the :prop_dir:`EXCLUDE_FROM_ALL`
+  directory property was regressed from pre-3.14 behavior and caused
+  targets within the directory to be excluded even from its own "all".
+  This has been fixed.
+  The bug also existed in 3.14.0 through 3.14.6 and is fixed in 3.14.7.
diff --git a/share/cmake-3.22/Help/release/3.16.rst b/share/cmake-3.22/Help/release/3.16.rst
new file mode 100644
index 0000000..28273a7
--- /dev/null
+++ b/share/cmake-3.22/Help/release/3.16.rst
@@ -0,0 +1,324 @@
+CMake 3.16 Release Notes
+************************
+
+.. only:: html
+
+  .. contents::
+
+Changes made since CMake 3.15 include the following.
+
+New Features
+============
+
+Languages
+---------
+
+* CMake learned to support the Objective C (``OBJC``) and Objective C++
+  (``OBJCXX``) languages.  They may be enabled via the :command:`project`
+  and :command:`enable_language` commands.  When ``OBJC`` or ``OBJCXX``
+  is enabled, source files with the ``.m`` or ``.mm``, respectively,
+  will be compiled as Objective C or C++.  Otherwise they will be treated
+  as plain C++ sources as they were before.
+
+Compilers
+---------
+
+* The ``Clang`` compiler is now supported on ``Solaris``.
+
+Platforms
+---------
+
+* On AIX, executables using the :prop_tgt:`ENABLE_EXPORTS` target property
+  now produce a linker import file with a ``.imp`` extension in addition
+  to the executable file.  Plugins (created via :command:`add_library` with
+  the ``MODULE`` option) that use :command:`target_link_libraries` to link
+  to the executable for its symbols are now linked using the import file.
+  The :command:`install(TARGETS)` command now installs the import file as
+  an ``ARCHIVE`` artifact.
+
+* On AIX, runtime linking is no longer enabled by default.  CMake provides
+  the linker enough information to resolve all symbols up front.
+  One may manually enable runtime linking for shared libraries and/or
+  loadable modules by adding ``-Wl,-G`` to their link flags
+  (e.g. in the :variable:`CMAKE_SHARED_LINKER_FLAGS` or
+  :variable:`CMAKE_MODULE_LINKER_FLAGS` variable).
+  One may manually enable runtime linking for executables by adding
+  ``-Wl,-brtl`` to their link flags (e.g. in the
+  :variable:`CMAKE_EXE_LINKER_FLAGS` variable).
+
+Command-Line
+------------
+
+* :manual:`cmake(1)` ``-E`` now supports ``true`` and ``false`` commands,
+  which do nothing while returning exit codes of 0 and 1, respectively.
+
+* :manual:`cmake(1)` gained a ``--trace-redirect=<file>`` command line
+  option that can be used to redirect ``--trace`` output to a file instead
+  of ``stderr``.
+
+* The :manual:`cmake(1)` ``--loglevel`` command line option has been
+  renamed to ``--log-level`` to make it consistent with the naming of other
+  command line options.  The ``--loglevel`` option is still supported to
+  preserve backward compatibility.
+
+Commands
+--------
+
+* The :command:`add_test` command learned the option ``COMMAND_EXPAND_LISTS``
+  which causes lists in the ``COMMAND`` argument to be expanded, including
+  lists created by generator expressions.
+
+* The :command:`file` command learned a new sub-command,
+  ``GET_RUNTIME_DEPENDENCIES``, which allows you to recursively get the list of
+  libraries linked by an executable or library. This sub-command is intended as
+  a replacement for :module:`GetPrerequisites`.
+
+* The :command:`find_file`, :command:`find_library`, :command:`find_path`,
+  :command:`find_package`, and :command:`find_program` commands have learned to
+  check the following variables to control the default behavior for groups of
+  search locations:
+
+  * :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` - Controls the default
+    behavior of searching the :variable:`<PackageName>_ROOT` variables.
+
+  * :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH` - Controls the default
+    behavior of searching the CMake-specific environment variables.
+
+  * :variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH` - Controls the default
+    behavior of searching the standard system environment variables.
+
+  * :variable:`CMAKE_FIND_USE_CMAKE_PATH` - Controls the default behavior of
+    searching the CMake-specific cache variables.
+
+  * :variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH` - Controls the default
+    behavior of searching the platform-specific CMake variables.
+
+* The :command:`find_package` command has learned to check the
+  :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variable to control the default
+  behavior of searching the CMake user package registry and to check the
+  :variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY` variable to control
+  the default behavior of searching the CMake system package registry.
+
+* The :command:`message` command learned indentation control with the new
+  :variable:`CMAKE_MESSAGE_INDENT` variable.
+
+* The :command:`target_precompile_headers` command was added to specify
+  a list of headers to precompile for faster compilation times.
+
+Variables
+---------
+
+* The :variable:`CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS` variable has been
+  introduced to optionally initialize the
+  :prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` target property.
+
+* The :variable:`CMAKE_ECLIPSE_RESOURCE_ENCODING` variable was added to
+  specify the resource encoding for the the :generator:`Eclipse CDT4` extra
+  generator.
+
+* The :variable:`CMAKE_UNITY_BUILD` variable was added to initialize the
+  :prop_tgt:`UNITY_BUILD` target property to tell generators to batch
+  include source files for faster compilation times.
+
+Properties
+----------
+
+* The :prop_tgt:`BUILD_RPATH` and :prop_tgt:`INSTALL_RPATH` target properties
+  now support :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+* The :prop_tgt:`INSTALL_REMOVE_ENVIRONMENT_RPATH` target property was
+  added to remove compiler-defined ``RPATH`` entries from a target.
+  This property is initialized by the
+  :variable:`CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH` variable.
+
+* The :prop_tgt:`PRECOMPILE_HEADERS` target property was added to specify
+  a list of headers to precompile for faster compilation times.
+  Set it using the :command:`target_precompile_headers` command.
+
+* The :prop_tgt:`UNITY_BUILD` target property was added to tell
+  generators to batch include source files for faster compilation
+  times.
+
+* The :prop_tgt:`VS_CONFIGURATION_TYPE` target property now supports
+  :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+* The :prop_tgt:`VS_DPI_AWARE` target property was added to tell
+  :ref:`Visual Studio Generators` to set the ``EnableDpiAwareness``
+  property in ``.vcxproj`` files.
+
+* The :prop_tgt:`XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING` target property was
+  added to tell the :generator:`Xcode` generator to set the value of the
+  ``Allow debugging when using document Versions Browser`` schema option.
+
+Modules
+-------
+
+* The :module:`FindDoxygen` module :command:`doxygen_add_docs` command
+  gained a new ``USE_STAMP_FILE`` option.  When this option present,
+  the custom target created by the command will only re-run Doxygen if
+  any of the source files have changed since the last successful run.
+
+* The :module:`FindGnuTLS` module now provides an imported target.
+
+* The :module:`FindPackageHandleStandardArgs` module
+  :command:`find_package_handle_standard_args` command gained
+  a new ``REASON_FAILURE_MESSAGE`` option to specify a message
+  giving the reason for the failure.
+
+* The :module:`FindPkgConfig` module :command:`pkg_search_module` macro
+  now defines a ``<prefix>_MODULE_NAME`` result variable containing the
+  first matching module name.
+
+* The :module:`FindPython3` and :module:`FindPython` modules gained
+  options to control which ``ABIs`` will be searched.
+
+* The :module:`FindPython3`, :module:`FindPython2`, and :module:`FindPython`
+  modules now support direct specification of artifacts via cache entries.
+
+Autogen
+-------
+
+* When using :prop_tgt:`AUTOMOC`, the new :variable:`CMAKE_AUTOMOC_PATH_PREFIX`
+  variable or :prop_tgt:`AUTOMOC_PATH_PREFIX` target property may be enabled
+  to generate the ``-p`` path prefix
+  option for ``moc``.  This ensures that ``moc`` output files are identical
+  on different build setups (given, that the headers compiled by ``moc`` are
+  in an :command:`include directory <target_include_directories>`).
+  Also it ensures that ``moc`` output files will compile correctly when the
+  source and/or build directory is a symbolic link.
+
+CTest
+-----
+
+* :manual:`ctest(1)` now has the ability to schedule tests based on resource
+  requirements for each test. See :ref:`ctest-resource-allocation` for
+  details.
+
+* A new test property, :prop_test:`SKIP_REGULAR_EXPRESSION`, has been added.
+  This property is similar to :prop_test:`FAIL_REGULAR_EXPRESSION` and
+  :prop_test:`PASS_REGULAR_EXPRESSION`, but with the same meaning as
+  :prop_test:`SKIP_RETURN_CODE`. This is useful, for example, in cases where
+  the user has no control over the return code of the test. For example, in
+  Catch2, the return value is the number of assertion failed, therefore it is
+  impossible to use it for :prop_test:`SKIP_RETURN_CODE`.
+
+CPack
+-----
+
+* :manual:`cpack(1)` learned support for multiple configurations for ``-C``
+  option.
+
+* The :cpack_gen:`CPack DEB Generator` is now able to format generic text
+  (usually used as the description for multiple CPack generators) according
+  to the `Debian Policy Manual`_.  See the
+  :variable:`CPACK_PACKAGE_DESCRIPTION_FILE` and
+  :variable:`CPACK_DEBIAN_<COMPONENT>_DESCRIPTION` variables.
+
+* The :cpack_gen:`CPack Archive Generator` learned to generate ``.tar.zst``
+  packages with Zstandard compression.
+
+.. _`Debian Policy Manual`: https://www.debian.org/doc/debian-policy/ch-controlfields.html#description
+
+Deprecated and Removed Features
+===============================
+
+* An explicit deprecation diagnostic was added for policy ``CMP0067``
+  (``CMP0066`` and below were already deprecated).
+  The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
+  of all policies are deprecated and that projects should port to the
+  NEW behaviors.
+
+* The :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` variable has been
+  deprecated.  Use the :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variable
+  instead.
+
+* The :module:`GetPrerequisites` module has been deprecated, as it has been
+  superseded by :command:`file(GET_RUNTIME_DEPENDENCIES)`.
+
+* The ``CPACK_INSTALL_SCRIPT`` variable has been deprecated in favor of the
+  new, more accurately named :variable:`CPACK_INSTALL_SCRIPTS` variable.
+
+Other Changes
+=============
+
+* The :manual:`cmake(1)` ``-C <initial-cache>`` option now evaluates the
+  initial cache script with :variable:`CMAKE_SOURCE_DIR` and
+  :variable:`CMAKE_BINARY_DIR` set to the top-level source and build trees.
+
+* The :manual:`cmake(1)` ``-E remove_directory`` command-line tool,
+  when given the path to a symlink to a directory, now removes just
+  the symlink.  It no longer removes content of the linked directory.
+
+* The :manual:`ctest(1)`  ``--build-makeprogram`` command-line option now
+  specifies the make program used when configuring a project with the
+  :generator:`Ninja` generator or the :ref:`Makefile Generators`.
+
+* The :module:`ExternalProject` module :command:`ExternalProject_Add` command
+  has been updated so that ``GIT_SUBMODULES ""`` initializes no submodules.
+  See policy :policy:`CMP0097`.
+
+* The :module:`FindGTest` module has been updated to recognize
+  MSVC build trees generated by GTest 1.8.1.
+
+* The :command:`project` command no longer strips leading zeros in version
+  components.  See policy :policy:`CMP0096`.
+
+* The Qt Compressed Help file is now named ``CMake.qch``, which no longer
+  contains the release version in the file name.  When CMake is upgraded
+  in-place, the name and location of this file will remain constant.
+  Tools such as IDEs, help viewers, etc. should now be able to refer to this
+  file at a fixed location that remains valid across CMake upgrades.
+
+* ``RPATH`` entries are properly escaped in the generated CMake scripts
+  used for installation.  See policy :policy:`CMP0095`.
+
+* When using :variable:`CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS` on Windows the
+  auto-generated exports are now updated only when the object files
+  providing the symbols are updated.
+
+Updates
+=======
+
+Changes made since CMake 3.16.0 include the following.
+
+3.16.2
+------
+
+* CMake 3.16.0 and 3.16.1 processed ``.hh`` files with :prop_tgt:`AUTOMOC`.
+  This was a behavior change from CMake 3.15 and below that can break
+  existing projects, so it has been reverted as of 3.16.2.
+
+3.16.5
+------
+
+* The :module:`FindPython`, :module:`FindPython2`, and :module:`FindPython3`
+  modules no longer create cache entries for ``Python{,2,3}_LIBRARY_RELEASE``
+  and ``Python{,2,3}_LIBRARY_DEBUG``.  Those values are always computed from
+  other results and so should not be cached.  The entries were created by
+  CMake 3.16.0 through 3.16.4 but were always ``FORCE``-set and could not
+  be meaningfully edited by users.
+
+  Additionally, the modules no longer expose their internal ``_Python*``
+  cache entries publicly.  CMake 3.16.0 through 3.16.4 accidentally
+  made them visible as advanced cache entries.
+
+3.16.7
+------
+
+* Selection of the Objective C or C++ compiler now considers the
+  :envvar:`CC` or :envvar:`CXX` environment variable if the
+  :envvar:`OBJC` or :envvar:`OBJCXX` environment variable is not set.
+
+* The :module:`FindPkgConfig` module now extracts include directories
+  prefixed with ``-isystem`` into the ``*_INCLUDE_DIRS`` variables and
+  :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` target properties.
+  Previously they would be places in ``*_CFLAGS_OTHER`` variables and
+  :prop_tgt:`INTERFACE_COMPILE_OPTIONS` target properties.
+
+3.16.9
+------
+
+* The default value of :variable:`CMAKE_AUTOMOC_PATH_PREFIX` was changed to
+  ``OFF`` because this feature can break existing projects that have
+  identically named header files in different include directories.
+  This restores compatibility with behavior of CMake 3.15 and below.
diff --git a/share/cmake-3.22/Help/release/3.17.rst b/share/cmake-3.22/Help/release/3.17.rst
new file mode 100644
index 0000000..abd7463
--- /dev/null
+++ b/share/cmake-3.22/Help/release/3.17.rst
@@ -0,0 +1,357 @@
+CMake 3.17 Release Notes
+************************
+
+.. only:: html
+
+  .. contents::
+
+Changes made since CMake 3.16 include the following.
+
+New Features
+============
+
+Generators
+----------
+
+* :manual:`cmake(1)` gained a :generator:`Ninja Multi-Config` generator,
+  which is similar to the :generator:`Ninja` generator but can be used to build
+  multiple configurations at once.
+
+* :ref:`Visual Studio Generators` learned to support per-config sources.
+  Previously only :ref:`Command-Line Build Tool Generators` supported them.
+
+* :ref:`Visual Studio Generators` for VS 2010 and above now support
+  specifying the ``VCTargetsPath`` value for project files in
+  :variable:`CMAKE_GENERATOR_TOOLSET` setting.
+
+* :ref:`Visual Studio Generators` for VS 2010 and above learned to
+  support .NET Standard and .NET Core.  See the
+  :prop_tgt:`DOTNET_TARGET_FRAMEWORK` target property and
+  associated :variable:`CMAKE_DOTNET_TARGET_FRAMEWORK` variable.
+
+Languages
+---------
+
+* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
+  now offers meta-features for the CUDA language standard levels
+  (e.g. ``cuda_std_03``, ``cuda_std_14``).  See
+  :prop_gbl:`CMAKE_CUDA_KNOWN_FEATURES`.
+
+Compilers
+---------
+
+* The IBM XL Fortran compiler is now supported by the :generator:`Ninja`
+  generator.
+
+Command-Line
+------------
+
+* :manual:`cmake(1)` gained a ``--debug-find`` command-line option to
+  enable additional human-readable output on where ``find_*`` commands search.
+
+* :manual:`cmake(1)` gained a ``--trace-format`` command-line option that
+  can be used to set the ``--trace`` output format. Currently, the old
+  human readable and the new JSON format are supported. The new JSON format
+  is easier to parse automatically than the existing format.
+
+* :manual:`cmake(1)` gained a ``-E rm`` command-line tool that can be
+  used to remove directories and files.  This supersedes the existing
+  ``-E remove`` and ``-E remove_directory`` tools and has better semantics.
+
+Commands
+--------
+
+* The :command:`add_custom_command` command learned to interpret paths in
+  ``DEPENDS`` arguments that are specified relative to the current
+  binary directory.
+
+* The :command:`foreach` command learned a new ``ZIP_LISTS`` option to iterate
+  over multiple lists simultaneously.
+
+* The :command:`load_cache(READ_WITH_PREFIX)` command mode is now allowed
+  when using ``cmake -P`` to :ref:`Run a Script <Script Processing Mode>`.
+
+* The :command:`message` command learned to output context provided in
+  the :variable:`CMAKE_MESSAGE_CONTEXT` variable for log levels
+  ``NOTICE`` and below.  Enable this output with the new ``--log-context``
+  command-line option or :variable:`CMAKE_MESSAGE_CONTEXT_SHOW` variable.
+
+* The :command:`message` command gained new keywords ``CHECK_START``,
+  ``CHECK_PASS`` and ``CHECK_FAIL``.
+
+* The :command:`target_compile_options` command now honors the ``BEFORE``
+  keyword more consistently.  See policy :policy:`CMP0101`.
+
+Variables
+---------
+
+* A :variable:`CMAKE_CTEST_ARGUMENTS` variable was added to specify a list
+  of command-line arguments passed to CTest when running through the
+  ``test`` (or ``RUN_TESTS``) target of the generated build system.
+
+* The following variables are now defined inside a :command:`function`:
+
+  - :variable:`CMAKE_CURRENT_FUNCTION`
+  - :variable:`CMAKE_CURRENT_FUNCTION_LIST_DIR`
+  - :variable:`CMAKE_CURRENT_FUNCTION_LIST_FILE`
+  - :variable:`CMAKE_CURRENT_FUNCTION_LIST_LINE`
+
+* The :variable:`CMAKE_CUDA_RUNTIME_LIBRARY` variable and
+  :prop_tgt:`CUDA_RUNTIME_LIBRARY` target property were introduced to
+  select the CUDA runtime library used when linking targets that
+  use CUDA.
+
+* The :variable:`CMAKE_FIND_DEBUG_MODE` variable was introduced to
+  print extra ``find_*`` call information during the cmake run to standard
+  error. Output is designed for human consumption and not for parsing.
+
+* The :variable:`CMAKE_EXPORT_COMPILE_COMMANDS` variable now takes its
+  initial value from the :envvar:`CMAKE_EXPORT_COMPILE_COMMANDS` environment
+  variable if no explicit configuration is given.
+
+* The :variable:`CMAKE_<LANG>_COMPILER_LAUNCHER` variable, if not set
+  explicitly, now takes its initial value from the
+  :envvar:`CMAKE_<LANG>_COMPILER_LAUNCHER` environment variable.
+
+* The :variable:`CMAKE_MESSAGE_LOG_LEVEL` variable can now be used
+  to persist a log level between CMake runs, unlike the ``--log-level``
+  command line option which only applies to that particular run.
+
+* The :variable:`CMAKE_XCODE_SCHEME_ENVIRONMENT` variable was added
+  to initialize the :prop_tgt:`XCODE_SCHEME_ENVIRONMENT` target property.
+
+* The :variable:`CMAKE_XCODE_SCHEME_WORKING_DIRECTORY` variable and
+  associated :prop_tgt:`XCODE_SCHEME_WORKING_DIRECTORY` target property
+  were added to tell the :generator:`Xcode` generator to set the value of
+  the ``Custom Working Directory`` schema option.
+
+Properties
+----------
+
+* The :prop_tgt:`AIX_EXPORT_ALL_SYMBOLS` target property and associated
+  :variable:`CMAKE_AIX_EXPORT_ALL_SYMBOLS` variable were created to
+  optionally explicitly disable automatic export of symbols from shared
+  libraries on AIX.
+
+* The :prop_tgt:`DEPRECATION` target property was added to mark
+  a target as deprecated.  If a linked target is marked as
+  deprecated, a warning with the deprecation message is issued
+  at generate time.
+
+* The :prop_tgt:`INSTALL_NAME_DIR` target property now supports
+  :manual:`generator expressions <cmake-generator-expressions(7)>`.
+  In particular, the ``$<INSTALL_PREFIX>`` generator expression can
+  be used to set the directory relative to the install-time prefix.
+
+* Target properties :prop_tgt:`MACHO_COMPATIBILITY_VERSION` and
+  :prop_tgt:`MACHO_CURRENT_VERSION` were added to set the
+  ``compatibility_version`` and ``curent_version``, respectively,
+  for Mach-O binaries.  For backwards compatibility, if these properties
+  are not set, :prop_tgt:`SOVERSION` and :prop_tgt:`VERSION`
+  are used respectively as fallbacks.
+
+* The :prop_tgt:`VS_DOTNET_DOCUMENTATION_FILE` target property was added
+  to tell :ref:`Visual Studio Generators` to generate a ``DocumentationFile``
+  reference in ``.csproj`` files.
+
+Modules
+-------
+
+* The :module:`ExternalProject` module :command:`ExternalProject_Add`
+  command gained a ``GIT_SUBMODULES_RECURSE`` option to specify whether
+  Git submodules should be updated recursively.  The default is on to
+  preserve existing behavior.
+
+* The :module:`FindCUDAToolkit` module was added to find the
+  CUDA Toolkit without enabling CUDA as a language.
+
+* The :module:`FindCURL` module learned to find CURL using
+  the ``CURLConfig.cmake`` package configuration file generated by
+  CURL's cmake buildsystem.  It also gained a new ``CURL_NO_CURL_CMAKE``
+  option to disable this behavior.
+
+* The :module:`FindFLEX` module's ``FLEX_TARGET`` command now runs ``flex``
+  with :variable:`CMAKE_CURRENT_BINARY_DIR` as the working directory.
+  See policy :policy:`CMP0098`.
+
+* The :module:`FindLibArchive` module now provides an imported target
+  for libarchive.
+
+* The :module:`FindPython` module has learned to find Python components
+  in active virtual environments managed by ``conda``.
+
+* The :module:`FindPython3` and :module:`FindPython` modules gained,
+  respectively, variable ``Python3_SOABI`` and ``Python_SOABI`` giving
+  the standard extension suffix for modules. Moreover, commands
+  ``Python3_add_library()`` and ``Python_add_library()`` gained the option
+  ``WITH_SOABI`` to prefix the library suffix with the value of ``SOABI``.
+
+* The :module:`FindLibXml2` module now provides an imported target for the
+  ``xmllint`` executable.
+
+Autogen
+-------
+
+* :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` learned to process headers
+  with a ``.hh`` extension.  See policy :policy:`CMP0100`.
+
+CTest
+-----
+
+* The :variable:`CTEST_CONFIGURATION_TYPE` variable is now set from the
+  command line when :manual:`ctest(1)` is invoked with ``-C <cfg>``.
+
+* The :manual:`ctest(1)` tool gained support for Dr. Memory to run
+  memcheck runs.
+
+* The :manual:`ctest(1)` tool gained a ``--no-tests=<[error|ignore]>`` option
+  to explicitly set and unify the behavior between direct invocation and
+  script mode if no tests were found.
+
+* The :manual:`ctest(1)` tool gained a ``--repeat <mode>:<n>`` option
+  to specify conditions in which to repeat tests.  This generalizes
+  the existing ``--repeat-until-fail <n>`` option to add modes for
+  ``until-pass`` and ``after-timeout``.
+
+* The :command:`ctest_test` command gained a ``REPEAT <mode>:<n>`` option
+  to specify conditions in which to repeat tests.
+
+CPack
+-----
+
+* The :cpack_gen:`CPack DragNDrop Generator` learned to use
+  the :variable:`CPACK_DMG_<component>_FILE_NAME` variable
+  to set a custom filename when packaging components into
+  their own DMGs.
+
+* The :cpack_gen:`CPack DragNDrop Generator` learned to handle
+  RTF formatted license files.  When :variable:`CPACK_DMG_SLA_DIR`
+  variable is set, ``<language>.license.rtf`` is considered, but
+  only as a fallback when the plaintext (``.txt``) file is not found
+  in order to maintain backwards compatibility.
+
+* The :cpack_gen:`CPack NSIS Generator` gained a new variable
+  :variable:`CPACK_NSIS_MUI_HEADERIMAGE` to set the header image.
+  To not break existing setups, it still defaults to
+  :variable:`CPACK_PACKAGE_ICON` if the new variable is not set.
+
+* The :cpack_gen:`CPack NSIS Generator` now supports
+  :variable:`CPACK_NSIS_UNINSTALL_NAME`.
+  This can be used to specify the name of the Uninstall program.
+
+* The :cpack_gen:`CPack NSIS Generator` now supports
+  :variable:`CPACK_NSIS_WELCOME_TITLE` and
+  :variable:`CPACK_NSIS_WELCOME_TITLE_3LINES`.
+  These can be used to specify the welcome page title and display it in 3 lines.
+
+* The :cpack_gen:`CPack NSIS Generator` now supports
+  :variable:`CPACK_NSIS_FINISH_TITLE` and
+  :variable:`CPACK_NSIS_FINISH_TITLE_3LINES`.
+  These can be used to specify the finish page title and display it in 3 lines.
+
+* The :cpack_gen:`CPack productbuild Generator` gained support for a
+  :variable:`CPACK_PRODUCTBUILD_BACKGROUND` variable to specify a background
+  image for the macOS installer.
+
+Other
+-----
+
+* :manual:`ccmake(1)` now displays cache values using colors
+  based on the entry type if the terminal supports color.
+
+* :manual:`ccmake(1)` now displays messages and a progress bar during
+  configure and generate.  It will keep the output displayed if any
+  errors or warnings occurred.
+
+Deprecated and Removed Features
+===============================
+
+* An explicit deprecation diagnostic was added for policy ``CMP0068``
+  and policy ``CMP0069`` (``CMP0067`` and below were already deprecated).
+  The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
+  of all policies are deprecated and that projects should port to the
+  NEW behaviors.
+
+* The :cpack_gen:`CPack PackageMaker Generator` generator has been
+  deprecated because Xcode no longer distributes the PackageMaker tools.
+  The undocumented ``OSXX11`` generator has also been deprecated.
+
+* The :manual:`cmake(1)` command-line ``-E remove`` and ``-E remove_directory``
+  tools are deprecated in favor of the new ``-E rm`` tool.  The older tools
+  always returned 0 if a named path did not exist even without the force
+  option and cannot be fixed without breaking compatibility, and so have
+  been superseded.
+
+* The :cpack_gen:`CPack NSIS Generator` now requires NSIS 3.0 or later.
+
+Other Changes
+=============
+
+* The :manual:`file API <cmake-file-api(7)>` index file now emits a
+  ``multiConfig`` flag specifying whether or not the generator supports
+  multiple output configurations.
+
+* Target link properties :prop_tgt:`INTERFACE_LINK_OPTIONS`,
+  :prop_tgt:`INTERFACE_LINK_DIRECTORIES` and
+  :prop_tgt:`INTERFACE_LINK_DEPENDS` are now transitive over private
+  dependencies on static libraries.
+  See policy :policy:`CMP0099`.
+
+* When using MinGW tools, the :command:`find_library` command no longer
+  finds ``.dll`` files by default.  Instead, it expects ``.dll.a`` import
+  libraries to be available.
+
+* The :generator:`MinGW Makefiles` generator no longer issues an error if
+  ``sh.exe`` is present in the environment's ``PATH``.
+
+* The :generator:`Ninja` generator now prefers the first ninja build
+  tool to appear in the ``PATH`` no matter whether it is called
+  ``ninja-build``, ``ninja``, or ``samu``.  Previously the first
+  of those names to appear anywhere in the ``PATH`` would be preferred.
+
+* With SDCC the ``sdar`` tool is now preferred over ``sdcclib`` as librarian.
+  The latter was deprecated by SDCC 3.2.0 and removed in SDCC 3.8.6.
+
+* With SDCC the default flags no longer include any target-specific flags.
+  Previously the default flags were hard-coded for 8051.
+
+* The :variable:`CMAKE_VS_GLOBALS` variable value now applies during
+  compiler identification and in targets created by the
+  :command:`add_custom_target` command.
+
+* The :generator:`Xcode` generator no longer hard-codes ``-Wmost``,
+  ``-Wno-four-char-constants``, and ``-Wno-unknown-pragmas`` warning flags.
+
+Updates
+=======
+
+Changes made since CMake 3.17.0 include the following.
+
+3.17.1
+------
+
+* CMake 3.17.0 updated the :cpack_gen:`CPack NSIS Generator` with changes
+  that require NSIS 3.0 or later.  CMake 3.17.1 now enforces the use
+  of a sufficiently new version.
+
+3.17.3
+------
+
+* Selection of the Objective C or C++ compiler now considers the
+  :envvar:`CC` or :envvar:`CXX` environment variable if the
+  :envvar:`OBJC` or :envvar:`OBJCXX` environment variable is not set.
+
+* The :module:`FindPkgConfig` module now extracts include directories
+  prefixed with ``-isystem`` into the ``*_INCLUDE_DIRS`` variables and
+  :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` target properties.
+  Previously they would be places in ``*_CFLAGS_OTHER`` variables and
+  :prop_tgt:`INTERFACE_COMPILE_OPTIONS` target properties.
+
+3.17.5
+------
+
+* The default value of :variable:`CMAKE_AUTOMOC_PATH_PREFIX` was changed to
+  ``OFF`` because this feature can break existing projects that have
+  identically named header files in different include directories.
+  This restores compatibility with behavior of CMake 3.15 and below.
+  The default was also changed to ``OFF`` in 3.16.9.
diff --git a/share/cmake-3.22/Help/release/3.18.rst b/share/cmake-3.22/Help/release/3.18.rst
new file mode 100644
index 0000000..f97e4df
--- /dev/null
+++ b/share/cmake-3.22/Help/release/3.18.rst
@@ -0,0 +1,364 @@
+CMake 3.18 Release Notes
+************************
+
+.. only:: html
+
+  .. contents::
+
+Changes made since CMake 3.17 include the following.
+
+New Features
+============
+
+Languages
+---------
+
+* The ``CUDA`` language can now be compiled using Clang on non-Windows
+  platforms. Separable compilation is not yet supported on any platform.
+
+Command-Line
+------------
+
+* :manual:`cmake(1)` gained support for profiling of CMake scripts through
+  the parameters ``--profiling-output`` and ``--profiling-format``.
+
+* :manual:`cmake(1)` gained a ``cat`` command line
+  option that can be used to concatenate files and print them
+  on standard output.
+
+Commands
+--------
+
+* The :command:`add_library` and :command:`add_executable` commands
+  learned to create :ref:`Alias Targets` referencing non-``GLOBAL``
+  :ref:`Imported Targets`.
+
+* The :command:`cmake_language()` command was added for meta-operations on
+  scripted or built-in commands, starting with a mode to ``CALL`` other
+  commands, and ``EVAL CODE`` to inplace evaluate a CMake script.
+
+* The :command:`execute_process` command gained the ``ECHO_OUTPUT_VARIABLE``
+  and ``ECHO_ERROR_VARIABLE`` options.
+
+* The :command:`export` command now raise an error if used multiple times with
+  same ``FILE`` without ``APPEND``. See policy :policy:`CMP0103`.
+
+* The :command:`file` command gained the ``ARCHIVE_CREATE`` and
+  ``ARCHIVE_EXTRACT`` subcommands to expose the :manual:`cmake(1)` ``-E tar``
+  functionality to CMake scripting code.
+
+* The :command:`file(CONFIGURE)` subcommand was created in order to replicate
+  the :command:`configure_file` functionality without resorting to a
+  pre-existing file on disk as input. The content is instead passed as a
+  string.
+
+* The :command:`file(UPLOAD)` command gained ``TLS_VERIFY`` and ``TLS_CAINFO``
+  options to control server certificate verification.
+
+* The :command:`find_program`, :command:`find_library`, :command:`find_path`
+  and :command:`find_file` commands gained a new ``REQUIRED`` option that will
+  stop processing with an error message if nothing is found.
+
+* The :command:`get_property` command with ``SOURCE`` scope gained the
+  ``DIRECTORY`` and ``TARGET_DIRECTORY`` options to get a property
+  from the provided directory scope.
+
+* The :command:`get_source_file_property` command gained the ``DIRECTORY``
+  and ``TARGET_DIRECTORY`` options to get a property from the
+  provided directory scope.
+
+* The :command:`list` operation ``SORT`` gained the ``NATURAL`` sort
+  option to sort using natural order (see ``strverscmp(3)`` manual).
+
+* The :command:`set_property` command with the ``SOURCE`` scope gained the
+  ``DIRECTORY`` and ``TARGET_DIRECTORY`` options to set properties
+  in the provided directory scopes.
+
+* The :command:`set_source_files_properties` command gained the ``DIRECTORY``
+  and ``TARGET_DIRECTORY`` options to set properties in the provided
+  directory scopes.
+
+* The :command:`string` command learned a new ``HEX`` sub-command, which
+  converts strings into their hexadecimal representation.
+
+Variables
+---------
+
+* A :variable:`CMAKE_CUDA_ARCHITECTURES` variable was added to specify
+  CUDA output architectures.  Users are encouraged to use this instead of
+  specifying options manually, as this approach is compiler-agnostic.
+  The variable is initialized automatically when
+  :variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is ``NVIDIA``.
+  The variable is used to initialize the new :prop_tgt:`CUDA_ARCHITECTURES`
+  target property.  See policy :policy:`CMP0104`.
+
+* The :variable:`CMAKE_PCH_WARN_INVALID` variable was added to initialize the
+  :prop_tgt:`PCH_WARN_INVALID` target property to allow the removal of the
+  precompiled header invalid warning.
+
+Properties
+----------
+
+* The :prop_tgt:`CUDA_ARCHITECTURES` target property was added to specify
+  CUDA output architectures. Users are encouraged to use this instead of
+  specifying options manually, as this approach is compiler-agnostic.
+  The property is initialized by the new :variable:`CMAKE_CUDA_ARCHITECTURES`
+  variable.  See policy :policy:`CMP0104`.
+
+* The :prop_tgt:`Fortran_PREPROCESS` target property and
+  :prop_sf:`Fortran_PREPROCESS` source-file property were added to
+  control preprocessing of Fortran source files.
+
+* The :prop_tgt:`FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>` target property
+  and associated :variable:`CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>`
+  variable were created to allow adding a postfix to the name of a
+  framework file name when using a multi-config generator.
+
+* The :prop_sf:`OBJECT_OUTPUTS` source file property now supports
+  :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+* The :prop_tgt:`PCH_WARN_INVALID` target property was added to allow the
+  removal of the precompiled header invalid warning.
+
+* The :prop_tgt:`UNITY_BUILD_MODE` target property was added to tell
+  generators which algorithm to use for grouping included source
+  files.
+
+* The :prop_tgt:`VS_SOURCE_SETTINGS_<tool>` target property was added
+  to tell :ref:`Visual Studio Generators` for VS 2010 and above to add
+  metadata to non-built source files using ``<tool>``.
+
+* The :prop_sf:`VS_SETTINGS` source file property was added to tell
+  :ref:`Visual Studio Generators` for VS 2010 and above to add
+  metadata to a non-built source file.
+
+* The :prop_tgt:`VS_PLATFORM_TOOLSET` target property was added to tell
+  :ref:`Visual Studio Generators` for VS 2010 and above to override
+  the platform toolset.
+
+* The :prop_tgt:`VS_SOLUTION_DEPLOY` target property was added to tell
+  :ref:`Visual Studio Generators` for VS 2010 and above to mark a
+  target for deployment even when not building for Windows Phone/Store/CE.
+
+Modules
+-------
+
+* The :module:`CheckLinkerFlag` module has been added to provide a
+  facility to check validity of link flags.
+
+* The :module:`ExternalProject` module :command:`ExternalProject_Add` command
+  gained a new ``GIT_REMOTE_UPDATE_STRATEGY`` keyword.  This can be used to
+  specify how failed rebase operations during a git update should be handled.
+  The ``CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY`` variable was also added as a
+  global default and is honored by both the :module:`ExternalProject` and
+  :module:`FetchContent` modules.
+
+* The :module:`FetchContent` module :command:`FetchContent_Declare` command
+  now supports a ``SOURCE_SUBDIR`` option.  It can be used to direct
+  :command:`FetchContent_MakeAvailable` to look in a different location
+  for the ``CMakeLists.txt`` file.
+
+* The :module:`FindBLAS` module now provides an imported target.
+
+* The :module:`FindCUDAToolkit` module:
+
+  * gained the variable
+    ``CUDAToolkit_LIBRARY_ROOT``, which is the directory containing the
+    ``nvvm`` directory and ``version.txt``.
+
+  * uses toolkit and library root found during ``CUDA`` compiler detection.
+
+* The :module:`FindLAPACK` module now provides an imported target.
+
+* The :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
+  modules:
+
+  * gained the possibility to create per-artifact cache variables for
+    interactive editing in :manual:`cmake-gui(1)` and :manual:`ccmake(1)`.
+
+  * gained sub-components ``Development.Module`` and
+    ``Development.Embed`` under the ``Development`` component.
+
+  * gained the capability to specify which Python implementations to find,
+    including ``IronPython`` and ``PyPy``.
+
+* The :module:`FindRuby` module input and output variables were all renamed
+  from ``RUBY_`` to ``Ruby_`` for consistency with other find modules.
+  Input variables of the old case will be honored if provided, and output
+  variables of the old case are always provided.
+
+* The :module:`FindSWIG` module now accepts target languages as  ``COMPONENTS``
+  and ``OPTIONAL_COMPONENTS`` arguments to ``find_package``.
+
+* The :module:`GoogleTest` module :command:`gtest_discover_tests` command:
+
+  * gained a new ``DISCOVERY_MODE`` option to control when the test
+    discovery step is run.  It offers a new ``PRE_TEST`` setting to
+    run the discovery at test time instead of build time.  A new
+    ``CMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE`` variable can be used
+    to change the default globally.
+
+  * gained a new optional parameter ``XML_OUTPUT_DIR``. When set the
+    JUnit XML test results are stored in that directory.
+
+* The :module:`FindLibXslt` module now provides imported targets.
+
+* The :module:`UseSWIG` module now supports Fortran as a target language if
+  the ``SWIG_EXECUTABLE`` is SWIG-Fortran_.
+
+.. _`SWIG-Fortran`: https://github.com/swig-fortran/swig
+
+Generator Expressions
+---------------------
+
+* The ``$<DEVICE_LINK:...>`` and ``$<HOST_LINK:...>``
+  :manual:`generator expressions <cmake-generator-expressions(7)>` were added
+  to manage device and host link steps.
+
+* The ``$<LINK_LANGUAGE:...>`` and ``$<LINK_LANG_AND_ID:...>``
+  :manual:`generator expressions <cmake-generator-expressions(7)>` were added.
+
+CTest
+-----
+
+* :manual:`ctest(1)` gained a new :variable:`CTEST_RESOURCE_SPEC_FILE`
+  variable, which can be used to specify a
+  :ref:`resource specification file <ctest-resource-specification-file>`.
+
+* :manual:`ctest(1)` gained a ``--stop-on-failure`` option,
+  which can be used to stop running the tests once one has failed.
+
+* The :command:`ctest_test` command gained a ``STOP_ON_FAILURE`` option
+  which can be used to stop running the tests once one has failed.
+
+* The :module:`CTestCoverageCollectGCOV` module
+  :command:`ctest_coverage_collect_gcov` command gained a
+  ``TARBALL_COMPRESSION`` option to control compression of the
+  tarball of collected results.
+
+CPack
+-----
+
+* The :cpack_gen:`CPack Archive Generator`'s ``TXZ`` format learned the
+  :variable:`CPACK_ARCHIVE_THREADS` variable to enable parallel compression.
+  Requires support in the ``liblzma`` used by CMake.
+
+* The :cpack_gen:`CPack NSIS Generator` gained a new variable
+  :variable:`CPACK_NSIS_MANIFEST_DPI_AWARE` to declare that the
+  installer is DPI-aware.
+
+* The :cpack_gen:`CPack RPM Generator` gained
+  :variable:`CPACK_RPM_PRE_TRANS_SCRIPT_FILE` and
+  :variable:`CPACK_RPM_POST_TRANS_SCRIPT_FILE`
+  variables to specify pre- and post-transaction scripts.
+
+Other
+-----
+
+* :manual:`cmake-gui(1)` now populates its generator selection
+  widget default value from the :envvar:`CMAKE_GENERATOR` environment
+  variable.  Additionally, environment variables
+  :envvar:`CMAKE_GENERATOR_PLATFORM` and :envvar:`CMAKE_GENERATOR_TOOLSET`
+  are used to populate their respective widget defaults.
+
+* :manual:`ccmake(1)` learned to read a :envvar:`CCMAKE_COLORS`
+  environment variable to customize colors.
+
+* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
+  is now aware of the availability of C11 features in MSVC 19.27 and 19.28,
+  including support for the ``c_restrict``, ``c_static_assert`` features and
+  the ``-std:c11`` flag.
+
+Deprecated and Removed Features
+===============================
+
+* The :module:`Documentation` module has been deprecated via
+  :policy:`CMP0106`. This module was essentially VTK code that CMake should
+  not be shipping anymore.
+
+* An explicit deprecation diagnostic was added for policy ``CMP0070``
+  and policy ``CMP0071`` (``CMP0069`` and below were already deprecated).
+  The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
+  of all policies are deprecated and that projects should port to the
+  NEW behaviors.
+
+Other Changes
+=============
+
+* On Windows, the :generator:`Ninja` and :generator:`Ninja Multi-Config`
+  generators, when a compiler is not explicitly specified, now select
+  the first compiler (of any name) found in directories listed by the
+  ``PATH`` environment variable.
+
+* The :prop_tgt:`LINK_OPTIONS` and :prop_tgt:`INTERFACE_LINK_OPTIONS` target
+  properties are now used for the device link step.
+  See policy :policy:`CMP0105`.
+
+* Creation of an ``ALIAS`` target overwriting an existing target now raises an
+  error. See policy :policy:`CMP0107`.
+
+* Linking a target to itself through an alias now raises an error.
+  See policy :policy:`CMP0108`.
+
+* The :module:`FindPackageHandleStandardArgs` module option ``REQUIRED_VARS``
+  is now optional if ``HANDLE_COMPONENTS`` is specified.
+
+* The :command:`source_group` command now also recognizes forward slashes
+  as subgroup delimiters, not just backslashes.
+
+* :manual:`ctest(1)` now logs environment variables that it sets for each test,
+  either due to the :prop_test:`ENVIRONMENT` property or the
+  :ref:`resource allocation <ctest-resource-allocation>` feature, and submits
+  this log to CDash. It does not log environment variables that were set
+  outside of CTest.
+
+* When building CMake itself from source and not using a system-provided
+  libcurl, HTTP/2 support is now enabled for commands supporting
+  network communication via ``http(s)``, such as :command:`file(DOWNLOAD)`,
+  :command:`file(UPLOAD)`, and :command:`ctest_submit`.
+  The precompiled binaries provided on ``cmake.org`` now support HTTP/2.
+
+* The :manual:`cmake-file-api(7)` "codemodel" version 2 ``version`` field has
+  been updated to 2.1.
+
+* The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" object gained
+  a new ``precompileHeaders`` field in the ``compileGroups`` objects.
+
+Updates
+=======
+
+Changes made since CMake 3.18.0 include the following.
+
+3.18.1
+------
+
+* The :generator:`Xcode` generator, when :variable:`CMAKE_OSX_ARCHITECTURES`
+  is not defined, now selects ``$(NATIVE_ARCH_ACTUAL)`` as the default
+  architecture (the Xcode ``ARCHS`` setting).  This is needed for Xcode 12
+  to select the host's architecture, which older versions of Xcode did
+  by default.
+
+* In CMake 3.18.0 the :command:`add_test` command learned to support
+  special characters in test names.  This was accidentally left out of
+  its release notes.  Unfortunately the fix breaks existing projects
+  that were using manual quoting or escaping to work around the prior
+  limitation.  This fix has been reverted in 3.18.1, but may be
+  re-introduced in future versions of CMake with a policy for compatibility.
+
+3.18.2
+------
+
+* The default value of :variable:`CMAKE_AUTOMOC_PATH_PREFIX` was changed to
+  ``OFF`` because this feature can break existing projects that have
+  identically named header files in different include directories.
+  This restores compatibility with behavior of CMake 3.15 and below.
+  The default was also changed to ``OFF`` in 3.16.9 and 3.17.5.
+
+* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
+  was updated for MSVC 19.27 as mentioned above (``c_restrict``).
+
+3.18.3
+------
+
+* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
+  was updated for MSVC 19.28 as mentioned above (``c_static_assert``).
diff --git a/share/cmake-3.22/Help/release/3.19.rst b/share/cmake-3.22/Help/release/3.19.rst
new file mode 100644
index 0000000..49c6793
--- /dev/null
+++ b/share/cmake-3.22/Help/release/3.19.rst
@@ -0,0 +1,442 @@
+CMake 3.19 Release Notes
+************************
+
+.. only:: html
+
+  .. contents::
+
+Changes made since CMake 3.18 include the following.
+
+New Features
+============
+
+Presets
+-------
+
+* :manual:`cmake(1)` and :manual:`cmake-gui(1)` now recognize
+  ``CMakePresets.json`` and ``CMakeUserPresets.json`` files (see
+  :manual:`cmake-presets(7)`).
+
+Generators
+----------
+
+* The :generator:`Xcode` generator now uses the Xcode "new build system"
+  when generating for Xcode 12.0 or higher.
+  See the :variable:`CMAKE_XCODE_BUILD_SYSTEM` variable.
+  One may use ``-T buildsystem=1`` to switch to the legacy build system.
+
+* The :generator:`Xcode` generator gained support for linking libraries and
+  frameworks via the *Link Binaries With Libraries* build phase instead of
+  always by embedding linker flags directly.  This behavior is controlled by
+  a new :prop_tgt:`XCODE_LINK_BUILD_PHASE_MODE` target property, which is
+  initialized by a new :variable:`CMAKE_XCODE_LINK_BUILD_PHASE_MODE`
+  variable.
+
+* The :ref:`Visual Studio Generators` for VS 2015 and above gained support
+  for the Visual Studio Tools for Android.  One may now set
+  :variable:`CMAKE_SYSTEM_NAME` to ``Android`` to generate ``.vcxproj`` files
+  for the Android tools.
+
+Languages
+---------
+
+* CMake learned to support ``ISPC`` as a first-class language that can be
+  enabled via the :command:`project` and :command:`enable_language` commands.
+  ``ISPC`` is currently supported by the :ref:`Makefile Generators`
+  and the :generator:`Ninja` generator on Linux, macOS, and Windows
+  using the Intel ISPC compiler.
+
+* ``CUDA`` language support for Clang now includes:
+
+  - separable compilation (:prop_tgt:`CUDA_SEPARABLE_COMPILATION`), and
+  - finding scattered toolkit installations when cross-compiling.
+
+* ``CUDA`` language support now works on QNX.
+
+Platforms
+---------
+
+* Apple Silicon is now supported (since CMake 3.19.2):
+
+  * The :variable:`CMAKE_HOST_SYSTEM_PROCESSOR` is selected using ``uname -m``.
+    Since this may vary based on CMake's own architecture and that of
+    the invoking process tree, the :variable:`CMAKE_APPLE_SILICON_PROCESSOR`
+    variable or :envvar:`CMAKE_APPLE_SILICON_PROCESSOR` environment
+    variable may be set to specify a host architecture explicitly.
+
+  * If :variable:`CMAKE_OSX_ARCHITECTURES` is not set, CMake adds explicit
+    flags to tell the compiler to build for the
+    :variable:`CMAKE_HOST_SYSTEM_PROCESSOR` so the toolchain does not
+    have to guess based on the process tree's architecture.
+
+File-Based API
+--------------
+
+* The :manual:`cmake-file-api(7)` "codemodel" version 2 ``version`` field has
+  been updated to 2.2.
+
+* The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" object
+  gained a new ``languageStandard`` field in the ``compileGroups`` objects.
+
+Command-Line
+------------
+
+* The :manual:`cmake(1)` command-line tool's ``--install`` mode gained a
+  ``--default-directory-permissions`` option.
+
+* :manual:`cmake(1)` gained a ``-E create_hardlink`` command-line tool
+  that can be used to create hardlinks between files.
+
+GUI
+---
+
+* The :manual:`CMake GUI <cmake-gui(1)>` now has an environment variable
+  editor.
+
+Commands
+--------
+
+* The :command:`add_test` command now (officially) supports whitespace and
+  other special characters in the name for the test it creates.
+  See policy :policy:`CMP0110`.
+
+* The :command:`cmake_language` command gained a ``DEFER`` mode to
+  schedule command calls to occur at the end of processing a directory.
+
+* The :command:`configure_file` command gained a ``NO_SOURCE_PERMISSIONS``
+  option to suppress copying the input file's permissions to the output file.
+
+* The :command:`execute_process` command gained a ``COMMAND_ERROR_IS_FATAL``
+  option to specify a fatal error.
+
+* The :command:`file(ARCHIVE_CREATE)` command gained a ``COMPRESSION_LEVEL``
+  option to specify the compression level.
+
+* The :command:`file(CHMOD)` and :command:`file(CHMOD_RECURSE)` subcommands
+  were added to set permissions of files and directories.
+
+* The :command:`file(DOWNLOAD)` command ``<file>`` argument is now
+  optional.  If it is not specified, the file is not saved.
+
+* The :command:`file(GENERATE)` command gained a new ``TARGET`` keyword to
+  support resolving target-dependent generator expressions.
+
+* The :command:`file` command gained a new ``REAL_PATH`` sub-command to
+  compute a path with symlinks resolved.
+
+* The :command:`find_package` command learned to handle a version range.
+
+* The :command:`separate_arguments` command gained a new ``PROGRAM`` option.
+  It allows the arguments to be treated as a program invocation and will
+  resolve the executable to a full path if it can be found.
+
+* The ``DIRECTORY`` option of the :command:`set_property`,
+  :command:`get_property`, and :command:`get_directory_property` commands
+  now accepts references to binary directory paths, such as the value of
+  :variable:`CMAKE_CURRENT_BINARY_DIR`.
+
+* The :command:`string` command gained a set of new ``JSON`` sub commands
+  that provide JSON parsing capabilities.
+
+Variables
+---------
+
+* The :variable:`CMAKE_CLANG_VFS_OVERLAY` variable was added to tell
+  Clang to use a VFS overlay to support the Windows SDK when
+  cross-compiling from hosts with case-sensitive filesystems.
+
+* The :variable:`CMAKE_MFC_FLAG` variable now supports generator expressions.
+
+* The :variable:`CMAKE_OPTIMIZE_DEPENDENCIES` variable was added to
+  initialize the new :prop_tgt:`OPTIMIZE_DEPENDENCIES` target property and
+  avoid unnecessarily building dependencies for a static library.
+
+* The :variable:`CMAKE_PCH_INSTANTIATE_TEMPLATES` variable was added to
+  initialize the new :prop_tgt:`PCH_INSTANTIATE_TEMPLATES` target property.
+
+* The :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM` variable
+  was added to tell the :ref:`Visual Studio Generators` what maximum
+  version of the Windows SDK to choose.
+
+Properties
+----------
+
+* The :prop_tgt:`EXCLUDE_FROM_ALL` target property now supports
+  :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+* The :prop_tgt:`OPTIMIZE_DEPENDENCIES` target property was added to
+  avoid unnecessarily building dependencies for a static library.
+
+* The :prop_tgt:`PCH_INSTANTIATE_TEMPLATES` target property was added to enable
+  template instantiation in the precompiled header. This is enabled by default
+  and may significantly improve compile times. Currently only supported for
+  Clang (version 11 or later).
+
+* The :prop_tgt:`WIN32_EXECUTABLE` target property now supports
+  :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+Modules
+-------
+
+* The :module:`CheckCompilerFlag` module has been added to
+  generalize :module:`CheckCCompilerFlag` and
+  :module:`CheckCXXCompilerFlag` to more languages.
+  It also supports the ``CUDA`` and ``ISPC`` languages.
+
+* The :module:`CheckLinkerFlag` module now supports the ``CUDA`` language.
+
+* The :module:`CheckSourceCompiles` module has been added to
+  generalize :module:`CheckCSourceCompiles` and
+  :module:`CheckCXXSourceCompiles` to more languages.
+  It also supports the ``CUDA`` and ``ISPC`` languages.
+
+* The :module:`CheckSourceRuns` module has been added to
+  generalize :module:`CheckCSourceRuns` and
+  :module:`CheckCXXSourceRuns` to more languages.
+  It also supports the ``CUDA`` language.
+
+* The :module:`CMakePackageConfigHelpers` module gained support for version
+  ranges.
+
+* The :module:`FindCUDAToolkit` module gained support for finding CUDA
+  toolkits that do not contain ``nvcc``, as well as for finding scattered
+  toolkit installations when cross-compiling.
+
+* The :module:`FindPackageHandleStandardArgs` module learned to handle
+  version ranges. It also gained the ``find_package_check_version()`` command
+  to check the validity of a version against version-related arguments of
+  :command:`find_package` command.
+
+* The :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
+  modules gained the ability to handle a version range.
+
+* The :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
+  modules provide, respectively, the variable ``Python3_LINK_OPTIONS``,
+  ``Python2_LINK_OPTIONS`` and ``Python_LINK_OPTIONS`` for link options.
+
+* The :module:`FindSDL` module now provides:
+
+  * An imported target ``SDL::SDL``.
+
+  * Result variables ``SDL_LIBRARIES`` and ``SDL_INCLUDE_DIRS``.
+
+  * Version variables ``SDL_VERSION``, ``SDL_VERSION_MAJOR``,
+    ``SDL_VERSION_MINOR``, and ``SDL_VERSION_PATCH``.
+
+* The :module:`FindSWIG` module gained the ability to handle a version range.
+
+* The :module:`FindTIFF` module gained a ``CXX`` component to
+  find the ``tiffxx`` library containing C++ bindings.
+
+* The :module:`FindVulkan` module now provides a ``Vulkan::glslc`` imported
+  target and associated ``Vulkan_GLSLC_EXECUTABLE`` variable which contain
+  the path to the GLSL SPIR-V compiler.
+
+* The :module:`UseSWIG` module gained support for new source file properties
+  ``OUTPUT_DIR`` and ``OUTFILE_DIR`` to manage output directories on a
+  per-source basis.
+
+CTest
+-----
+
+* :manual:`ctest(1)` now supports the CUDA ``compute-sanitizer`` checker
+  (previously known as ``cuda-memcheck``) as the ``CTEST_MEMORYCHECK_COMMAND``.
+  The different tools (``memcheck``, ``racecheck``, ``synccheck`` and
+  ``initcheck``) supported by ``compute-sanitizer`` can be selected by
+  adding appropriate flags to the ``CTEST_MEMORYCHECK_COMMAND_OPTIONS``
+  variable.  The default flags are ``--tool memcheck --leak-check full``.
+
+CPack
+-----
+
+* CPack gained the :variable:`CPACK_PRE_BUILD_SCRIPTS`,
+  :variable:`CPACK_POST_BUILD_SCRIPTS`, and :variable:`CPACK_PACKAGE_FILES`
+  variables.
+
+* The :cpack_gen:`CPack External Generator` gained the
+  :variable:`CPACK_EXTERNAL_BUILT_PACKAGES` variable.
+
+* The :cpack_gen:`CPack WIX Generator` gained a
+  :variable:`CPACK_WIX_CUSTOM_XMLNS` option to specify custom XML namespaces.
+
+Other
+-----
+
+* :ref:`Interface Libraries` may now have source files added via
+  :command:`add_library` or :command:`target_sources`.  Those
+  with sources will be generated as part of the build system.
+
+Deprecated and Removed Features
+===============================
+
+* Compatibility with versions of CMake older than 2.8.12 is now deprecated
+  and will be removed from a future version.  Calls to
+  :command:`cmake_minimum_required` or :command:`cmake_policy` that set
+  the policy version to an older value now issue a deprecation diagnostic.
+
+* An explicit deprecation diagnostic was added for policy ``CMP0071``
+  (``CMP0071`` and below were already deprecated).
+  The :manual:`cmake-policies(7)` manual explains that the OLD behaviors
+  of all policies are deprecated and that projects should port to the
+  NEW behaviors.
+
+* macOS SDKs older than 10.5 are no longer supported.
+
+* :manual:`cmake-gui(1)` now requires Qt5.
+  Support for compiling with Qt4 has been removed.
+
+* The :manual:`cmake(1)` command-line option ``--warn-unused-vars`` has
+  been removed and is now silently ignored.  The option has not worked
+  correctly since CMake 3.3.
+
+Documentation
+=============
+
+The following guides have been added:
+
+* :guide:`IDE Integration Guide`
+* :guide:`Importing and Exporting Guide`
+
+Other Changes
+=============
+
+* Building for macOS will now use the latest SDK available on the system,
+  unless the user has explicitly chosen a SDK using
+  :variable:`CMAKE_OSX_SYSROOT`.  The deployment target or system macOS
+  version will not affect the choice of SDK.
+
+* The :variable:`CMAKE_<LANG>_COMPILER` variable may now be used to
+  store "mandatory" compiler flags like the :envvar:`CC` and other environment
+  variables.
+
+* The :variable:`CMAKE_<LANG>_FLAGS_INIT` variable will now be considered
+  during the compiler identification check if other sources like
+  :variable:`CMAKE_<LANG>_FLAGS` or :envvar:`CFLAGS` are not set.
+
+* The :command:`find_program` command now requires permission to execute
+  but not to read the file found.  See policy :policy:`CMP0109`.
+
+* An imported target missing its location property fails during generation
+  if the location is used.  See policy :policy:`CMP0111`.
+
+* The following target-based generator expressions that query for directory or
+  file name components no longer add a dependency on the evaluated target.
+  See policy :policy:`CMP0112`.
+
+  - ``TARGET_FILE_DIR``
+  - ``TARGET_LINKER_FILE_BASE_NAME``
+  - ``TARGET_LINKER_FILE_NAME``
+  - ``TARGET_LINKER_FILE_DIR``
+  - ``TARGET_SONAME_FILE_NAME``
+  - ``TARGET_SONAME_FILE_DIR``
+  - ``TARGET_PDB_FILE_NAME``
+  - ``TARGET_PDB_FILE_DIR``
+  - ``TARGET_BUNDLE_DIR``
+  - ``TARGET_BUNDLE_CONTENT_DIR``
+
+* :ref:`Makefile Generators` no longer repeat custom commands from target
+  dependencies.  See policy :policy:`CMP0113`.
+
+* The :module:`ExternalProject` module handling of step target dependencies
+  has been revised.  See policy :policy:`CMP0114`.
+
+* The :prop_tgt:`OSX_ARCHITECTURES` target property is now respected
+  for the ``ASM`` language.
+
+* If ``CUDA`` compiler detection fails with user-specified
+  :variable:`CMAKE_CUDA_ARCHITECTURES` or
+  :variable:`CMAKE_CUDA_HOST_COMPILER`, an error is raised.
+
+Updates
+=======
+
+Changes made since CMake 3.19.0 include the following.
+
+3.19.1
+------
+
+* CMake 3.19.0 compiles source files with the :prop_sf:`LANGUAGE`
+  property by passing an explicit language flag such as ``-x c``.
+  This is consistent with the property's documented meaning that
+  the source file is written in the specified language.  However,
+  it can break projects that were using the property only to
+  cause the specified language's compiler to be used.  This has
+  been reverted to restore behavior from CMake 3.18 and below.
+
+* CUDA 11.1 support for Clang.
+
+3.19.2
+------
+
+* The precompiled macOS binary provided on ``cmake.org`` is now a
+  universal binary with ``x86_64`` and ``arm64`` architectures.
+  It requires macOS 10.10 or newer.
+  The package file naming pattern has been changed from
+  ``cmake-$ver-Darwin-x86_64`` to ``cmake-$ver-macos-universal``.
+
+* Apple Silicon host architecture selection support was updated.
+  CMake 3.19.0 and 3.19.1 always chose ``arm64`` as the host architecture.
+  CMake 3.19.2 returns to using ``uname -m`` as CMake 3.18 and below did.
+  Since this may vary based on CMake's own architecture and that of
+  the invoking process tree, the :variable:`CMAKE_APPLE_SILICON_PROCESSOR`
+  variable or :envvar:`CMAKE_APPLE_SILICON_PROCESSOR` environment
+  variable may be set to specify a host architecture explicitly.
+
+* The :variable:`CMAKE_ISPC_HEADER_SUFFIX` variable and corresponding
+  :prop_tgt:`ISPC_HEADER_SUFFIX` target property were added to control
+  the header suffix used by ``ISPC`` compiler generated headers.
+
+3.19.3
+------
+
+* A precompiled Linux ``aarch64`` binary is now provided on ``cmake.org``.
+
+* Two precompiled macOS binaries are now provided on ``cmake.org``:
+
+  * The naming pattern ``cmake-$ver-macos-universal`` is a universal
+    binary with ``x86_64`` and ``arm64`` architectures.  It requires
+    macOS 10.13 or newer.
+
+  * The naming pattern ``cmake-$ver-macos10.10-universal`` is a universal
+    binary with ``x86_64`` and ``arm64`` architectures.  It requires
+    macOS 10.10 or newer.
+
+3.19.4
+------
+
+* The :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM`
+  variable introduced in 3.19.0 previously worked only with the
+  :generator:`Visual Studio 14 2015` generator.  It has now been fixed to
+  work with :ref:`Visual Studio Generators` for later VS versions too.
+
+3.19.5
+------
+
+* When :prop_tgt:`IOS_INSTALL_COMBINED` is enabled and the :generator:`Xcode`
+  generator is used, it is now possible to initiate an install or package
+  creation by running ``cmake --install`` or ``cpack`` from the command line.
+  When using the Xcode new build system, these are the only supported methods
+  due to a limitation of Xcode.  Initiating these operations by building the
+  ``install`` or ``package`` targets in Xcode is only supported when using
+  the legacy build system.
+
+* The framework handling introduced in 3.19.0 as part of supporting Xcode's
+  *Link Binaries With Libraries* build phase broke the ability to switch
+  between device and simulator builds without reconfiguring.  That capability
+  has now been restored.
+
+3.19.6
+------
+
+* The :manual:`cmake-presets(7)` feature no longer allows comments in
+  ``CMakePresets.json`` or ``CMakeUserPresets.json`` files.
+  This was mistakenly allowed by the implementation in CMake 3.19.0 through
+  CMake 3.19.5, and was not documented.
+
+3.19.7
+------
+
+* With :ref:`Visual Studio Generators` for VS 2017 and higher, the
+  :variable:`CMAKE_GENERATOR_TOOLSET` field ``version=`` now accepts
+  three-component MSVC toolset versions such as ``14.28.29910``.
+  See the :variable:`CMAKE_VS_PLATFORM_TOOLSET_VERSION` variable.
diff --git a/share/cmake-3.18/Help/release/3.2.rst b/share/cmake-3.22/Help/release/3.2.rst
similarity index 100%
rename from share/cmake-3.18/Help/release/3.2.rst
rename to share/cmake-3.22/Help/release/3.2.rst
diff --git a/share/cmake-3.22/Help/release/3.20.rst b/share/cmake-3.22/Help/release/3.20.rst
new file mode 100644
index 0000000..42e95be
--- /dev/null
+++ b/share/cmake-3.22/Help/release/3.20.rst
@@ -0,0 +1,371 @@
+CMake 3.20 Release Notes
+************************
+
+.. only:: html
+
+  .. contents::
+
+Changes made since CMake 3.19 include the following.
+
+New Features
+============
+
+Presets
+-------
+
+* :manual:`cmake-presets(7)` gained support for build and test presets.
+
+Generators
+----------
+
+* :ref:`Makefile Generators`, for some toolchains, now use the compiler
+  to extract implicit dependencies while compiling source files.
+
+Languages
+---------
+
+* C++23 compiler modes may now be specified via the :prop_tgt:`CXX_STANDARD`,
+  :prop_tgt:`CUDA_STANDARD`, or :prop_tgt:`OBJCXX_STANDARD` target properties,
+  or via the :manual:`Compile Features <cmake-compile-features(7)>`
+  functionality's ``cxx_std_23`` meta-feature.
+
+* ``CUDA`` language support now works when ``nvcc`` is a symbolic link,
+  for example due to a ``ccache`` or ``colornvcc`` wrapper script.
+
+* The :envvar:`CUDAARCHS` environment variable was added for initializing
+  :variable:`CMAKE_CUDA_ARCHITECTURES`. Useful in cases where the compiler
+  default is unsuitable for the machine's GPU.
+
+Compilers
+---------
+
+* The NVIDIA HPC SDK compilers are now supported with compiler id ``NVHPC``.
+
+* The Intel oneAPI NextGen LLVM compilers are now supported with
+  compiler id ``IntelLLVM``:
+
+  * The ``icx``/``icpx`` C/C++ compilers on Linux, and the ``icx``
+    C/C++ compiler on Windows, are fully supported as of oneAPI 2021.1.
+
+  * The ``ifx`` Fortran compiler on Linux is supported as of oneAPI 2021.1.
+
+  * The ``ifx`` Fortran compiler on Windows is not yet supported.
+
+  The Intel oneAPI Classic compilers (``icc``, ``icpc``, and ``ifort``)
+  continue to be supported with compiler id ``Intel``.
+
+* Support was added for the IAR STM8 compiler.
+
+Platforms
+---------
+
+* CMake's support for :ref:`Cross Compiling for Android`
+  is now merged with the Android NDK's toolchain file.
+  They now have similar behavior, though some variable names differ.
+  User-facing changes include:
+
+  - ``find_*`` functions will search NDK ABI / API specific paths by default.
+
+  - The default :variable:`CMAKE_BUILD_TYPE` for Android is
+    now ``RelWithDebInfo``.
+
+  - The :variable:`CMAKE_ANDROID_NDK_VERSION` variable was added to
+    report the version of the NDK.
+
+File-Based API
+--------------
+
+* The :manual:`cmake-file-api(7)` gained a new "toolchains" object
+  kind that describes the compiler used for each enabled language.
+
+Commands
+--------
+
+* :command:`add_custom_command` and :command:`add_custom_target` now
+  support :manual:`generator expressions <cmake-generator-expressions(7)>`
+  in their ``OUTPUT`` and ``BYPRODUCTS`` options.
+
+  Their ``COMMAND``, ``WORKING_DIRECTORY``, and ``DEPENDS`` options gained
+  support for new generator expressions ``$<COMMAND_CONFIG:...>`` and
+  ``$<OUTPUT_CONFIG:...>`` that control cross-config handling when using
+  the :generator:`Ninja Multi-Config` generator.
+
+* The :command:`add_custom_command` command gained ``DEPFILE`` support on
+  :ref:`Makefile Generators`.
+
+* The :command:`add_library` command previously prohibited imported object
+  libraries when using potentially multi-architecture configurations.
+  This mostly affected the :generator:`Xcode` generator, e.g. when targeting
+  iOS or one of the other device platforms.  This restriction has now been
+  removed.
+
+* The :command:`cmake_path` command was added for operations on
+  filesystem paths.
+
+* The :command:`configure_file` command gained ``USE_SOURCE_PERMISSIONS``
+  and ``FILE_PERMISSIONS`` options to support copying of permissions of the
+  source file and using specified permissions respectively.
+
+* The :command:`file(GENERATE)` command gained a ``NEWLINE_STYLE`` option to
+  specify how newlines are handled for the generated file.
+
+* The :command:`file(GENERATE)` command gained ``NO_SOURCE_PERMISSIONS``,
+  ``USE_SOURCE_PERMISSIONS``, and ``FILE_PERMISSIONS`` options for controlling
+  the permissions of the generated file.
+
+* The :command:`install(FILES)` command ``RENAME`` option learned to
+  support :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+* The :command:`target_include_directories` command gained a new option
+  ``AFTER``.
+
+* The :command:`target_sources` command now supports targets created
+  by the :command:`add_custom_target` command.
+
+* The :command:`try_run` command gained a ``WORKING_DIRECTORY`` option to
+  set the working directory in which to run the compiled check executable.
+
+Variables
+---------
+
+* The :variable:`CMAKE_<LANG>_BYTE_ORDER` variable was added to provide the
+  target architecture byte order detected from the toolchain.
+
+* The :variable:`CMAKE_RUNTIME_OUTPUT_DIRECTORY`,
+  :variable:`CMAKE_LIBRARY_OUTPUT_DIRECTORY`, and
+  :variable:`CMAKE_ARCHIVE_OUTPUT_DIRECTORY` variables now support
+  target-dependent generator expressions.
+
+Properties
+----------
+
+* The :prop_tgt:`<LANG>_CLANG_TIDY` target property and the associated
+  :variable:`CMAKE_<LANG>_CLANG_TIDY` variable learned to support
+  the ``OBJC`` and ``OBJCXX`` languages.
+
+* The :prop_tgt:`EXPORT_COMPILE_COMMANDS` target property was added
+  for the associated :variable:`CMAKE_EXPORT_COMPILE_COMMANDS` variable
+  to allow for configuration of exporting compile commands per target.
+
+* The :prop_sf:`GENERATED` source-file property is now visible
+  from any directory scope, regardless of the scope in which it is set.
+  See policy :policy:`CMP0118`.
+
+* The :prop_tgt:`UNITY_BUILD_UNIQUE_ID` target property
+  was added to support generation of an identifier that is
+  unique per source file in unity builds.  It can help to
+  resolve duplicate symbol problems with anonymous namespaces.
+
+* The :prop_tgt:`WIN32_EXECUTABLE` target property now works with Clang
+  on Windows.
+
+* The :prop_tgt:`XCODE_EMBED_FRAMEWORKS <XCODE_EMBED_<type>>` target property
+  was added to tell the :generator:`Xcode` generator to embed frameworks.
+  Aspects of the embedding can be customized with the
+  :prop_tgt:`XCODE_EMBED_FRAMEWORKS_PATH <XCODE_EMBED_<type>>`,
+  :prop_tgt:`XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY`, and
+  :prop_tgt:`XCODE_EMBED_FRAMEWORKS_REMOVE_HEADERS_ON_COPY` target properties.
+
+Modules
+-------
+
+* The :module:`ExternalData` module :command:`ExternalData_Add_Target`
+  function gained a ``SHOW_PROGRESS <bool>`` option for controlling whether
+  or not to show progress output during the build.
+
+* The :module:`ExternalProject` module :command:`ExternalProject_Add` function
+  gained a ``CONFIGURE_HANDLED_BY_BUILD`` option.  This can be used to make
+  subsequent runs of the configure step be triggered by the build step when
+  an external project dependency rebuilds instead of always re-running the
+  configure step in such cases.
+
+* The :module:`FindBoost` module gained a ``Boost_NO_WARN_NEW_VERSIONS``
+  option to silence the warning about unknown dependencies for new
+  Boost versions.
+
+* The :module:`FindCUDAToolkit` module gained support for finding CUDA
+  toolkits when ``nvcc`` is a symbolic link,
+  for example due to a ``ccache`` or ``colornvcc`` wrapper script.
+
+* The :module:`FindGDAL` module has been improved to document and mark as
+  advanced its cache variables. There is a new ``FindGDAL_SKIP_GDAL_CONFIG``
+  variable which may be used to skip over the ``gdal-config``-based search.
+  Users may also set ``GDAL_ADDITIONAL_LIBRARY_VERSIONS`` to add additional
+  versions to the library name search strategy.
+
+* The :module:`FindIntl` module now provides an imported target.
+
+* The :module:`FindOpenSSL` module learned to support a version range.
+
+* The :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
+  modules gained options controlling how unversioned interpreter names are
+  searched.
+
+* The :module:`UseJava` module ``add_jar()`` command's
+  ``GENERATE_NATIVE_HEADERS`` feature gained options to export the
+  generated target.
+
+* The :module:`UseSWIG` module gained the capability, for
+  :ref:`Makefile <Makefile Generators>` and :ref:`Ninja <Ninja Generators>`
+  generators, to use the ``swig`` tool to generate implicit dependencies.
+
+Autogen
+-------
+
+* The :ref:`Qt AUTOMOC` feature now works with per-config sources.
+
+CTest
+-----
+
+* :manual:`ctest(1)` gained a ``--test-dir`` option to specify the directory
+  in which to look for tests.
+
+CPack
+-----
+
+* :module:`CPack` gained the :variable:`CPACK_THREADS` variable to
+  control the number of threads used for parallelized operations,
+  such as compressing the installer package.
+
+* The :cpack_gen:`CPack DEB Generator` learned a new
+  :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS`
+  variable to specify additional search directories for
+  resolving private library dependencies when using
+  ``dpkg-shlibdeps``.
+
+* The :cpack_gen:`CPack IFW Generator` gained a new
+  :variable:`CPACK_IFW_PACKAGE_WIZARD_SHOW_PAGE_LIST` variable to
+  control visibility of the widget listing installer pages on the left side
+  of the wizard. This feature available only since QtIFW 4.0.
+
+* The :cpack_gen:`CPack NSIS Generator` gained new
+  :variable:`CPACK_NSIS_BRANDING_TEXT` and
+  :variable:`CPACK_NSIS_BRANDING_TEXT_TRIM_POSITION` variables to change
+  the text at the bottom of the install window and change its trim position
+
+* The :cpack_gen:`CPack NSIS Generator` now correctly handles Unicode
+  characters.  If you want to have a :variable:`CPACK_RESOURCE_FILE_LICENSE`
+  with UTF-8 characters, it needs to be encoded in UTF-8 BOM.
+
+* The :cpack_gen:`CPack NuGet Generator` gained options:
+
+  - :variable:`CPACK_NUGET_PACKAGE_ICON` and
+    :variable:`CPACK_NUGET_<compName>_PACKAGE_ICON`
+    allow package icons to be specified by local files.
+  - :variable:`CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION` and
+    :variable:`CPACK_NUGET_<compName>_PACKAGE_LICENSE_EXPRESSION` add
+    support for specifying licenses recognized by the
+    `Software Package Data Exchange`_ (SPDX).
+  - :variable:`CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME` and
+    :variable:`CPACK_NUGET_<compName>_PACKAGE_LICENSE_FILE_NAME` allow
+    licenses to be specified by local files.
+  - :variable:`CPACK_NUGET_PACKAGE_LANGUAGE` and
+    :variable:`CPACK_NUGET_<compName>_PACKAGE_LANGUAGE` allow the locale
+    for a package to be specified, for example ``en_CA``.
+
+.. _Software Package Data Exchange: https://spdx.org/
+
+Deprecated and Removed Features
+===============================
+
+* The :manual:`cmake-server(7)` mode has been removed.
+  Clients should use the :manual:`cmake-file-api(7)` instead.
+
+* The :module:`WriteCompilerDetectionHeader` module has been deprecated
+  via policy :policy:`CMP0120`.  Projects should be ported away from it.
+
+* The :module:`TestBigEndian` module has been deprecated in favor
+  of the :variable:`CMAKE_<LANG>_BYTE_ORDER` variable.
+
+* The :module:`AddFileDependencies` module is deprecated.
+  Port projects to use :command:`set_property` directly.
+
+* The :cpack_gen:`CPack NuGet Generator` deprecated some variables to reflect
+  changes in the NuGet specification:
+
+  - :variable:`CPACK_NUGET_PACKAGE_ICONURL` and
+    :variable:`CPACK_NUGET_<compName>_PACKAGE_ICONURL` have been deprecated;
+    replace with a reference to a local icon file.
+  - :variable:`CPACK_NUGET_PACKAGE_LICENSEURL` and
+    :variable:`CPACK_NUGET_<compName>_PACKAGE_LICENSEURL` have been deprecated;
+    replace with a reference to the project's license file or SPDX
+    license expression.
+
+Other Changes
+=============
+
+* When running :manual:`cmake(1)` to :ref:`Generate a Project Buildsystem`,
+  unknown command-line arguments starting with a hyphen (``-``) are now
+  rejected with an error.  Previously they were silently ignored.
+
+* Source file extensions must now be explicit.
+  See policy :policy:`CMP0115` for details.
+
+* The :prop_sf:`LANGUAGE` source file property now forces compilation
+  as the specified language.  See policy :policy:`CMP0119`.
+
+* On AIX, installation of XCOFF executables and shared libraries
+  no longer requires relinking to change the runtime search path
+  from the build-tree RPATH to the install-tree RPATH.  CMake now
+  edits the XCOFF binaries directly during installation, as has
+  long been done on ELF platforms.
+
+* With MSVC-like compilers the value of
+  :variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>` no longer contains
+  the ``/GR`` flag for runtime type information by default.
+  See policy :policy:`CMP0117`.
+
+* Ninja generators now transform the ``DEPFILE`` generated by an
+  :command:`add_custom_command`. See policy :policy:`CMP0116` for details.
+
+* The precompiled Linux binaries provided on
+  `cmake.org <https://cmake.org/download/>`_ have changed their naming pattern
+  to ``cmake-$ver-linux-$arch``, where ``$arch`` is either ``x86_64`` or
+  ``aarch64``.
+
+* The precompiled Windows binaries provided on
+  `cmake.org <https://cmake.org/download/>`_ have changed their naming pattern
+  to ``cmake-$ver-windows-$arch``, where ``$arch`` is either ``x86_64`` or
+  ``i386``.
+
+Updates
+=======
+
+Changes made since CMake 3.20.0 include the following.
+
+3.20.1
+------
+
+* The :module:`FindIntl` module in CMake 3.20.0 added checks
+  ``Intl_HAVE_GETTEXT_BUILTIN``, ``Intl_HAVE_DCGETTEXT_BUILTIN``,
+  and ``Intl_IS_BUILTIN``, but they were not implemented correctly.
+  These have been removed and replaced with a single ``Intl_IS_BUILT_IN``
+  check, whose name is consistent with the :module:`FindIconv` module.
+
+* The ``-rpath`` linker flag is now specified as supported on all Apple
+  platforms, not just macOS.  The ``install_name_dir`` used for
+  iOS, tvOS and watchOS should now default to ``@rpath`` instead of using
+  a full absolute path and failing at runtime when the library or framework
+  is embedded in an application bundle (see :prop_tgt:`XCODE_EMBED_<type>`).
+
+3.20.2
+------
+
+* The Intel Classic 2021 compiler version numbers are now detected correctly
+  as having major version 2021.  CMake 3.20.1 and below were not aware of a
+  change to the identification macro version scheme made by Intel starting
+  in version 2021, and detected the version as 20.2.
+
+* The Intel oneAPI Fortran compiler is now identified as ``IntelLLVM``.
+  The oneAPI 2021.1 Fortran compiler is missing an identification macro,
+  so CMake 3.20.1 and below identified it as ``Intel``.  CMake now has
+  a special case to recognize oneAPI 2021.1 Fortran as ``IntelLLVM``.
+  The oneAPI 2021.2 Fortran compiler defines the proper identification
+  macro and so is identified as ``IntelLLVM`` by all CMake 3.20 versions.
+
+3.20.3, 3.20.4, 3.20.5, 3.20.6
+------------------------------
+
+These versions made no changes to documented features or interfaces.
+Some implementation updates were made to support ecosystem changes
+and/or fix regressions.
diff --git a/share/cmake-3.22/Help/release/3.21.rst b/share/cmake-3.22/Help/release/3.21.rst
new file mode 100644
index 0000000..e1c6172
--- /dev/null
+++ b/share/cmake-3.22/Help/release/3.21.rst
@@ -0,0 +1,336 @@
+CMake 3.21 Release Notes
+************************
+
+.. only:: html
+
+  .. contents::
+
+Changes made since CMake 3.20 include the following.
+
+New Features
+============
+
+Presets
+-------
+
+* :manual:`cmake-presets(7)` gained support for specifying the install prefix
+  in a configure preset.
+
+* :manual:`cmake-presets(7)` gained support for conditional enabling of presets.
+
+* :manual:`cmake-presets(7)` gained support for a ``${hostSystemName}`` macro.
+
+* :manual:`cmake-presets(7)` gained support for omitting the ``generator`` and
+  ``binaryDir`` fields.
+
+Generators
+----------
+
+* The :generator:`Visual Studio 17 2022` generator was added.
+
+* The :ref:`Makefile Generators` and the :generator:`Ninja` generator
+  learned to add linker launcher tools along with the linker for ``C``,
+  ``CXX``, ``OBJC``, and ``OBJCXX`` languages.
+  See the :variable:`CMAKE_<LANG>_LINKER_LAUNCHER` variable
+  and :prop_tgt:`<LANG>_LINKER_LAUNCHER` target property for details.
+
+Languages
+---------
+
+* CMake learned to support ``HIP`` as a first-class language that can be
+  enabled via the :command:`project` and :command:`enable_language` commands.
+
+* :prop_tgt:`C_STANDARD`, :prop_tgt:`OBJC_STANDARD`, and the
+  :manual:`Compile Features <cmake-compile-features(7)>` functionality gained
+  support for C17 and C23.
+
+* Source file extensions ``.ixx`` and ``.cppm`` are now treated as C++.
+
+Command-Line
+------------
+
+* :manual:`cmake(1)` gained the ``--install-prefix <dir>``
+  command-line option to specify the location of the install prefix.
+
+* :manual:`cmake(1)` gained the ``--toolchain <path/to/file>``
+  command-line option to specify a toolchain file.
+
+* :manual:`cmake(1)` ``-E capabilities`` output, for some generators,
+  may now contain a ``supportedPlatforms`` field listing platforms
+  known to be supported in :variable:`CMAKE_GENERATOR_PLATFORM`.
+
+* Messages printed to a terminal now may be colored by message type.
+
+Compilers
+---------
+
+* The Fujitsu compiler is now supported using compiler id ``Fujitsu``
+  in traditional (``Trad``) mode, and compiler id ``FujitsuClang``
+  in ``Clang`` mode.
+
+Platforms
+---------
+
+* CMake now supports the MSYS runtime environment, much like CYGWIN.
+
+File-Based API
+--------------
+
+* The :manual:`cmake-file-api(7)` "codemodel" version 2 ``version`` field
+  has been updated to 2.3.
+
+* The :manual:`cmake-file-api(7)` "codemodel" version 2 gained a
+  new "directory" object containing directory-level information.
+  This includes a list of installers generated by the :command:`install`
+  command.
+
+Commands
+--------
+
+* The :command:`add_custom_command` command ``DEPFILE`` option:
+
+  * may now use
+    :manual:`generator expressions <cmake-generator-expressions(7)>`,
+
+  * is now supported by :ref:`Visual Studio Generators` for VS 2012
+    and above, and
+
+  * is now supported by the :generator:`Xcode` generator.
+
+* The :command:`add_custom_command(TARGET)` command
+  (for :ref:`Build Events <add_custom_command(TARGET)>`)
+  gained support for resolving target-dependent generator expressions.
+
+* The :command:`build_command` command gained a ``PARALLEL_LEVEL`` option.
+
+* The :command:`file(COPY_FILE)` command was added to copy a single file.
+
+* The :command:`file(GET_RUNTIME_DEPENDENCIES)` command gained new
+  ``POST_INCLUDE_FILES`` and ``POST_EXCLUDE_FILES`` arguments.
+
+* The :command:`file(REAL_PATH)` command gained the option ``EXPAND_TILDE`` to
+  replace any leading tilde with the path to the user's home directory.
+
+* The :command:`file(RENAME)` command learned to optionally capture
+  failure in a result variable.  It also gained a ``NO_REPLACE``
+  option to fail if the destination exists.
+
+* The :command:`install` command gained a new ``IMPORTED_RUNTIME_ARTIFACTS``
+  mode, which can be used to install the runtime artifacts of imported targets.
+
+* The :command:`install` command gained a new ``RUNTIME_DEPENDENCY_SET`` mode,
+  which can be used to install runtime dependencies using
+  :command:`file(GET_RUNTIME_DEPENDENCIES)`.
+
+* The :command:`install(TARGETS)` command gained new ``RUNTIME_DEPENDENCIES``
+  and ``RUNTIME_DEPENDENCY_SET`` arguments, which can be used to install
+  runtime dependencies using :command:`file(GET_RUNTIME_DEPENDENCIES)`.
+
+* The :command:`install(SCRIPT|CODE)` command
+  supports a new option ``ALL_COMPONENTS`` which allows
+  the corresponding code to run for every component of
+  a per component installation.
+
+* The :command:`project` command now sets variables
+  :variable:`PROJECT_IS_TOP_LEVEL` and :variable:`<PROJECT-NAME>_IS_TOP_LEVEL`
+  to indicate whether it was called in a top-level ``CMakeLists.txt`` file.
+
+Variables
+---------
+
+* The :envvar:`CMAKE_TOOLCHAIN_FILE` environment variable was added to
+  provide a default value for the :variable:`CMAKE_TOOLCHAIN_FILE` variable.
+
+Properties
+----------
+
+* The :prop_dir:`IMPORTED_TARGETS` directory property was added to
+  get a list of :ref:`Imported Targets` created in the current
+  directory.
+
+* The :prop_tgt:`XCODE_EMBED_APP_EXTENSIONS <XCODE_EMBED_<type>>` target property
+  was added to tell the :generator:`Xcode` generator to embed app extensions
+  such as iMessage sticker packs.
+  Aspects of the embedding can be customized with the
+  :prop_tgt:`XCODE_EMBED_APP_EXTENSIONS_PATH <XCODE_EMBED_<type>>`,
+  :prop_tgt:`XCODE_EMBED_APP_EXTENSIONS_CODE_SIGN_ON_COPY <XCODE_EMBED_<type>_CODE_SIGN_ON_COPY>` and
+  :prop_tgt:`XCODE_EMBED_APP_EXTENSIONS_REMOVE_HEADERS_ON_COPY <XCODE_EMBED_<type>_REMOVE_HEADERS_ON_COPY>`
+  properties.
+
+Modules
+-------
+
+* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to support
+  the serial ``Fujitsu_SSL2`` and parallel ``Fujitsu_SSL2BLAMP`` libraries.
+
+* The :module:`FindDevIL` module now provides imported targets.
+
+* The :module:`FindIconv` module now has version support.
+
+* The :module:`FindIntl` module now has version support.
+
+* The :module:`FindMPI` module learned to support ``Fujitsu`` and
+  ``FujitsuClang`` in both host and cross compiling modes.
+
+* The :module:`FindMsys` module was added to find MSYS installations.
+  Like :module:`FindCygwin`, it is used automatically by some other
+  find modules to locate UNIX-style tools on Windows.
+
+* The :module:`FindOpenMP` module learned to support ``Fujitsu`` and
+  ``FujitsuClang``.
+
+* The :module:`FindVulkan` module gained imported targets
+  ``Vulkan::Headers`` and ``Vulkan::glslangValidator``.
+
+* The :module:`UseJava` module command ``add_jar`` gained a ``RESOURCES``
+  option to allow explicit naming of resources with non-optional namespace.
+
+* The :module:`UseSWIG` module use now standard library naming conventions
+  for the ``CSharp`` language. See policy :policy:`CMP0122`.
+
+* The :module:`UseSWIG` module now supports using the ``swig`` tool to
+  generate implicit dependencies with the :generator:`Xcode` generator.
+
+Generator Expressions
+---------------------
+
+* A new :genex:`TARGET_RUNTIME_DLLS` generator expression was added.
+
+CTest
+-----
+
+* :manual:`ctest(1)` gained documentation for its ability to capture
+  :ref:`Additional Test Measurements`.
+
+* :manual:`ctest(1)` learned to recognize files attached to a test at run time.
+  Previously it was only possible to attach files to tests at configure time
+  by using the :prop_test:`ATTACHED_FILES` or
+  :prop_test:`ATTACHED_FILES_ON_FAIL` test properties.
+  See :ref:`Additional Test Measurements` for more information.
+
+* :manual:`ctest(1)` gained a ``--output-junit`` option to write test results
+  to a JUnit XML file.
+
+* The :command:`ctest_build` command gained a ``PARALLEL_LEVEL`` option.
+
+CPack
+-----
+
+* The :cpack_gen:`CPack DragNDrop Generator` gained option
+  :variable:`CPACK_DMG_FILESYSTEM` to control the ``.dmg`` filesystem.
+
+* The :cpack_gen:`CPack IFW Generator` now supports hyphens in names
+  given to :command:`cpack_ifw_configure_component` or
+  :command:`cpack_ifw_configure_component_group` as ``DEPENDS`` or
+  ``DEPENDENCIES`` arguments.  This requires QtIFW 3.1 or later.
+
+* The :cpack_gen:`CPack NSIS Generator` gained a new
+  :variable:`CPACK_NSIS_EXECUTABLE` variable to specify the ``makensis``
+  executable to use instead of the default one.
+
+* The :variable:`CPACK_CUSTOM_INSTALL_VARIABLES` variable was added to set
+  variables in ``cmake_install.cmake`` script invocations made by CPack.
+
+Deprecated and Removed Features
+===============================
+
+* Undocumented :variable:`CMAKE_SYSTEM_NAME` version-stripping behavior has
+  been removed entirely. If it is set by a ``-D`` flag or by a
+  :manual:`toolchain file <cmake-toolchains(7)>`, it is left unaltered,
+  even if it still contains a version number.
+  Similar :variable:`CMAKE_HOST_SYSTEM_NAME` version-stripping behavior,
+  also undocumented, has been moved earlier, before :command:`project` or
+  :command:`enable_language` is called.
+
+* ``ARMClang`` cpu/arch compile and link flags are no longer added
+  automatically based on the :variable:`CMAKE_SYSTEM_PROCESSOR`
+  variable or the undocumented ``CMAKE_SYSTEM_ARCH`` variable.
+  They must be specified explicitly.  See policy :policy:`CMP0123`.
+
+Other Changes
+=============
+
+* The :command:`find_file`, :command:`find_path`, :command:`find_program`,
+  and :command:`find_library` commands handle cache variables in the same way
+  regardless how they are defined. See policy :policy:`CMP0125` for details.
+
+* The :command:`find_file`, :command:`find_path`, :command:`find_program`,
+  and :command:`find_library` commands gained the option ``NO_CACHE`` to store
+  find result in normal variable.
+
+* The :command:`foreach` command now isolates loop variables in the loop scope.
+  See policy :policy:`CMP0124` for details.
+
+* The :command:`list` command's ``GET``, ``INSERT``, ``SUBLIST``, and
+  ``REMOVE_AT`` subcommands now error with invalid (i.e., non-integer) values
+  are given as any of their index arguments based on the setting of policy
+  :policy:`CMP0121`.
+
+* The :command:`set(CACHE)` command no longer removes a normal variable
+  of the same name, if any. See policy :policy:`CMP0126`.
+
+* :command:`target_link_libraries` calls referencing object libraries
+  via the :genex:`TARGET_OBJECTS` generator expression now place the
+  object files before all libraries on the link line, regardless of
+  their specified order.  See documentation on
+  :ref:`Linking Object Libraries via \$\<TARGET_OBJECTS\>` for details.
+
+* The :ref:`Ninja Generators` now pass source files and include directories
+  to the compiler using absolute paths.  This makes diagnostic messages and
+  debug symbols more consistent, and matches the :ref:`Makefile Generators`.
+
+* The :generator:`NMake Makefiles` generator now encodes the generated
+  makefiles as UTF-8 with a BOM when using ``nmake`` from VS 9 or above.
+
+* The :ref:`Visual Studio Generators` for VS 2010 and above now place
+  per-source preprocessor definitions after target-wide preprocssor
+  definitions.  This makes VS consistent with the :ref:`Ninja Generators`
+  and the :ref:`Makefile Generators`.
+
+* The precompiled binaries provided on
+  `cmake.org <https://cmake.org/download/>`_ now support
+  ``liblzma`` multi-threading.  See the :variable:`CPACK_THREADS` and
+  :variable:`CPACK_ARCHIVE_THREADS` variables.
+
+Updates
+=======
+
+Changes made since CMake 3.21.0 include the following.
+
+3.21.1
+------
+
+* The :generator:`Visual Studio 17 2022` generator is now based on
+  "Visual Studio 2022 Preview 2".  Previously it was based on "Preview 1.1".
+
+3.21.2
+------
+
+* ``CUDA`` targets with :prop_tgt:`CUDA_SEPARABLE_COMPILATION` enabled are now
+  correctly generated in non-root directories.
+
+* The :generator:`Visual Studio 17 2022` generator is now based on
+  "Visual Studio 2022 Preview 3.1".  Previously it was based on "Preview 2".
+
+3.21.3
+------
+
+* The :generator:`Visual Studio 17 2022` generator is now based on
+  "Visual Studio 2022 Preview 4".  Previously it was based on "Preview 3.1".
+
+* The AMD ROCm Platform ``hipcc`` compiler was identifed by CMake 3.21.0
+  through 3.21.2 as a distinct compiler with id ``ROCMClang``.  This has
+  been removed because it caused regressions.  Instead:
+
+  * ``hipcc`` may no longer be used as a ``HIP`` compiler because it
+    interferes with flags CMake needs to pass to Clang.  Use Clang directly.
+
+  * ``hipcc`` may once again be used as a ``CXX`` compiler, and is treated as
+    whatever compiler it selects underneath, as CMake 3.20 and below did.
+
+3.21.4
+------
+
+* The :generator:`Visual Studio 17 2022` generator is now based on the
+  "Visual Studio 2022" release candidates.  Previously it was based on
+  preview versions.
diff --git a/share/cmake-3.22/Help/release/3.22.rst b/share/cmake-3.22/Help/release/3.22.rst
new file mode 100644
index 0000000..fcb655d
--- /dev/null
+++ b/share/cmake-3.22/Help/release/3.22.rst
@@ -0,0 +1,144 @@
+CMake 3.22 Release Notes
+************************
+
+.. only:: html
+
+  .. contents::
+
+Changes made since CMake 3.21 include the following.
+
+New Features
+============
+
+Commands
+--------
+
+* The :command:`cmake_host_system_information` command can now query
+  `OS identification variables`_ from the :file:`/etc/os-release` file.
+
+* The :command:`string(TIMESTAMP)` command now supports the ``%V``
+  specifier for ISO 8601 week numbers.
+
+.. _`OS identification variables`: https://www.freedesktop.org/software/systemd/man/os-release.html
+
+Variables
+---------
+
+* The :envvar:`CMAKE_BUILD_TYPE` environment variable was added to
+  provide a default value for the :variable:`CMAKE_BUILD_TYPE` variable.
+
+* The :envvar:`CMAKE_CONFIGURATION_TYPES` environment variable was added to
+  provide a default value for the :variable:`CMAKE_CONFIGURATION_TYPES`
+  variable.
+
+* The :envvar:`CMAKE_INSTALL_MODE` environment variable was added to
+  tell :command:`install` rules (implemented by :command:`file(INSTALL)`)
+  to install symbolic links instead of copying of files.
+
+* The :variable:`CMAKE_<LANG>_LINK_WHAT_YOU_USE_FLAG` and
+  :variable:`CMAKE_LINK_WHAT_YOU_USE_CHECK` variables were added to
+  control the linker flag and check used by the
+  :prop_tgt:`LINK_WHAT_YOU_USE` target property.
+
+* The :variable:`CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>` variable
+  was added to turn a non-REQUIRED :command:`find_package` call into
+  a REQUIRED one.
+
+Properties
+----------
+
+* The :prop_tgt:`<LANG>_EXTENSIONS` target property is now initialized to
+  :variable:`CMAKE_<LANG>_EXTENSIONS_DEFAULT`, detected from the compiler.
+  See :policy:`CMP0128`.
+
+* The :prop_sf:`VS_SETTINGS` source file property is now supported for
+  all source file types.  Previously it worked only for non-built sources.
+
+Modules
+-------
+
+* The :module:`CMakeDependentOption` module :command:`cmake_dependent_option`
+  macro now supports full :ref:`Condition Syntax`.
+  See policy :policy:`CMP0127`.
+
+* The :module:`FetchContent` module now passes through the
+  :variable:`CMAKE_TLS_VERIFY`, :variable:`CMAKE_TLS_CAINFO`,
+  :variable:`CMAKE_NETRC` and :variable:`CMAKE_NETRC_FILE` variables (when
+  defined) to the underlying :module:`ExternalProject` sub-build.
+  Previously, those variables were silently ignored by :module:`FetchContent`.
+
+* The :module:`FindBLAS` and :module:`FindLAPACK` modules gained
+  a ``BLA_SIZEOF_INTEGER`` option to find a BLAS/LAPACK whose ABI
+  uses a specific integer size.
+
+* The :module:`FindJasper` module now provides an imported target.
+
+* The :module:`FindMatlab` module now provides imported targets.
+
+* The :module:`FindPkgConfig` module gained a :variable:`PKG_CONFIG_ARGN`
+  variable to specify arguments to ``pkg-config`` calls.
+
+* The :module:`GoogleTest` module :command:`gtest_discover_tests`
+  function gained a ``TEST_FILTER`` option to filter tests using
+  ``--gtest_filter`` during test discovery.
+
+* The :module:`UseSWIG` module, for :ref:`Visual Studio Generators`,
+  can now use the ``swig`` tool to generate implicit dependencies.
+
+CTest
+-----
+
+* :manual:`ctest(1)` learned to recognize labels attached to a test at run time.
+  Previously it was only possible to attach labels to tests at configure time
+  by using the :prop_test:`LABELS` test property.
+  See :ref:`Additional Test Measurements` for more information.
+
+* :manual:`ctest(1)` learned to be able to modify the environment for a test
+  through the :prop_test:`ENVIRONMENT_MODIFICATION` property. This is allows
+  for updates to environment variables based on the environment present at
+  test time.
+
+* The :command:`ctest_memcheck` command now also generates a
+  :file:`DynamicAnalysis-Test.xml` file which may be used to submit test
+  results to CDash.
+
+CPack
+-----
+
+* The :cpack_gen:`CPack DEB Generator` gained the
+  option to set :variable:`CPACK_DEBIAN_COMPRESSION_TYPE` to ``zstd``,
+  which enables Zstandard compression for deb packages.
+
+* The :cpack_gen:`CPack NSIS Generator` gained a new
+  :variable:`CPACK_NSIS_IGNORE_LICENSE_PAGE` variable to suppress
+  the license page in the installer.
+
+* The :cpack_gen:`CPack RPM Generator` gained the
+  :variable:`CPACK_RPM_REQUIRES_EXCLUDE_FROM` option to avoid scanning
+  specific paths for dependencies.
+
+Deprecated and Removed Features
+===============================
+
+* The :generator:`Visual Studio 10 2010` generator is now deprecated
+  and will be removed in a future version of CMake.
+
+Other Changes
+=============
+
+* The :manual:`Compile Features <cmake-compile-features(7)>` functionality now
+  correctly disables or enables compiler extensions when no standard level is
+  specified and avoids unnecessarily adding language standard flags if the
+  requested settings match the compiler's defaults. See :policy:`CMP0128`.
+
+* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
+  now ignores features for languages that are not enabled.
+
+* The :ref:`Ninja Generators` now implement the ``edit_cache`` target
+  using :manual:`ccmake(1)` if available.
+
+* The :generator:`Ninja` and :generator:`NMake Makefiles` generators
+  now use the MSVC ``-external:I`` flag for system includes.
+  This became available as of VS 16.10 (toolchain version 14.29.30037).
+
+* The :cpack_gen:`CPack NSIS Generator` now requires NSIS 3.03 or later.
diff --git a/share/cmake-3.22/Help/release/3.3.rst b/share/cmake-3.22/Help/release/3.3.rst
new file mode 100644
index 0000000..44f4e19
--- /dev/null
+++ b/share/cmake-3.22/Help/release/3.3.rst
@@ -0,0 +1,287 @@
+CMake 3.3 Release Notes
+***********************
+
+.. only:: html
+
+  .. contents::
+
+Changes made since CMake 3.2 include the following.
+
+New Features
+============
+
+Generators
+----------
+
+* The :ref:`Makefile Generators` now add ``.DELETE_ON_ERROR`` to the
+  makefiles that contain the actual build rules for files on disk.
+  This tells GNU make to remove rule outputs when their recipe
+  modifies an output but fails.
+
+* The :ref:`Visual Studio Generators` learned to support ``.xaml``
+  source files and automatically associate them with corresponding
+  ``.h`` and ``.cpp`` sources.
+
+* A new experimental :generator:`Green Hills MULTI` generator was
+  added on Windows.  `Green Hills MULTI`_ is an IDE for embedded
+  real-time systems.
+
+.. _`Green Hills MULTI`: http://www.ghs.com/products/MULTI_IDE.html
+
+Commands
+--------
+
+* The :command:`add_dependencies` command learned to allow dependencies
+  to be added to :ref:`interface libraries <Interface Libraries>`.
+  Dependencies added to an interface library are followed transitively
+  in its place since the target itself does not build.
+
+* The :command:`execute_process` command learned to support specifying
+  the same file for ``OUTPUT_FILE`` and ``ERROR_FILE``.
+
+* The :command:`file(GLOB)` and :command:`file(GLOB_RECURSE)` commands
+  learned a new ``LIST_DIRECTORIES <bool>`` option to specify whether
+  the glob result should include directories.
+
+* The :command:`find_library`, :command:`find_path`, and :command:`find_file`
+  commands now search in installation prefixes derived from the ``PATH``
+  environment variable.
+
+* The :command:`if` command learned a new ``IN_LIST`` operator that
+  evaluates to true if a given element is contained in a named list.
+
+* The :command:`install(EXPORT)` and :command:`export()` commands
+  learned to export targets that populate the :prop_tgt:`INTERFACE_SOURCES`
+  target property.
+
+* The :command:`install(TARGETS)` command learned to support
+  generator expressions in the ``DESTINATION`` value.
+
+Variables
+---------
+
+* The version of some Fortran compilers is now detected and stored in the
+  :variable:`CMAKE_Fortran_COMPILER_VERSION <CMAKE_<LANG>_COMPILER_VERSION>`
+  variable.
+
+* The :ref:`Visual Studio Generators` learned a new
+  :variable:`CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD` option
+  to put the ``INSTALL`` target in the default build of a
+  solution (``.sln``) file.
+
+Properties
+----------
+
+* A :prop_tgt:`CROSSCOMPILING_EMULATOR` target property and supporting
+  :variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable were introduced
+  to allow target platform binaries to run on the host during cross
+  compiling.
+
+* A :prop_tgt:`<LANG>_INCLUDE_WHAT_YOU_USE` target property and supporting
+  :variable:`CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE` variable were introduced
+  to tell the :ref:`Makefile Generators` and the :generator:`Ninja` generator
+  to run ``include-what-you-use`` along with the compiler for ``C`` and
+  ``CXX`` languages.
+
+* The :prop_tgt:`<LANG>_VISIBILITY_PRESET` and
+  :prop_tgt:`VISIBILITY_INLINES_HIDDEN` target properties now
+  affect compilation in sources of all target types.  See
+  policy :policy:`CMP0063`.
+
+* The :prop_tgt:`XCODE_ATTRIBUTE_<an-attribute>` target property learned
+  to support generator expressions.
+
+Modules
+-------
+
+* The :module:`CheckFortranCompilerFlag` module was introduced
+  to check ``Fortran`` compiler flags, much like the
+  :module:`CheckCCompilerFlag` module already does for ``C``.
+
+* The :module:`ExternalData` module learned a new
+  :variable:`ExternalData_NO_SYMLINKS` option to disable use of
+  symbolic links to populate the real data files and use copies
+  instead.
+
+* The :module:`ExternalData` module learned a new ``RECURSE:``
+  option in ``DATA{}`` references specifying directories.
+  This allows an entire directory tree of associated files
+  to be matched.
+
+* The :module:`ExternalData` module learned a new URL template
+  placeholder ``%(algo:<key>)`` to allow custom mapping from
+  algorithm name to URL component through configuration of new
+  :variable:`ExternalData_URL_ALGO_<algo>_<key>` variables.
+  This allows more flexibility in remote URLs.
+
+* The :module:`ExternalProject` module learned to replace tokens
+  like ``<BINARY_DIR>`` in the ``BYPRODUCTS`` of each step.
+
+* The :module:`ExternalProject` module APIs learned to support
+  :manual:`generator expressions <cmake-generator-expressions(7)>`
+  when using ``LOG_*`` options and in CMake initial cache options.
+
+* The :module:`FindBoost` module now tracks the directories containing
+  libraries separately for RELEASE and DEBUG configurations.
+
+* The :module:`FindCUDA` module now defaults to using the static
+  CUDA runtime library if it is available.  A new
+  ``CUDA_USE_STATIC_CUDA_RUNTIME`` option is offered to control
+  this behavior.
+
+* The :module:`FindMatlab` module was completely rewritten.  It learned
+  about versions and components and to find Matlab in a more precise and
+  multiplatform way.  The module now offers APIs to create mex extensions,
+  documentation, and unit tests.
+
+* The :module:`FindPackageHandleStandardArgs` module
+  ``FIND_PACKAGE_HANDLE_STANDARD_ARGS`` function now
+  always populates both the ``<PackageName>_FOUND``
+  and ``<UPPERCASE_NAME>_FOUND`` variables (the latter
+  for backwards compatibility).  The ``FOUND_VAR``
+  option is now ignored except to enforce its allowed
+  values.
+
+* The :module:`InstallRequiredSystemLibraries` module learned a new
+  ``CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT`` option to specify the
+  installation component.
+
+Generator Expressions
+---------------------
+
+* A new ``COMPILE_LANGUAGE`` generator expression was introduced to
+  allow specification of compile options for target files based on the
+  :prop_sf:`LANGUAGE` of each source file.  Due to limitations of the
+  underlying native build tools, this feature has varying support across
+  generators.  See the :manual:`cmake-generator-expressions(7)` manual
+  for details.
+
+CTest
+-----
+
+* The :manual:`ctest(1)` tool learned a new ``--repeat-until-fail <n>``
+  option to help find sporadic test failures.
+
+* The :module:`CTestCoverageCollectGCOV` module learned to support
+  the same ``CTEST_CUSTOM_COVERAGE_EXCLUDE`` option as the
+  :command:`ctest_coverage` command.
+
+CPack
+-----
+
+* The :cpack_gen:`CPack IFW Generator` learned to support
+  Qt Framework Installer 2.0 tools.
+
+* The :cpack_gen:`CPack DEB Generator` learned a new
+  :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_SHLIBDEPS`
+  variable to specify per-component use of ``dpkg-shlibdeps``.
+
+* The :cpack_gen:`CPack DEB Generator` learned a new
+  :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_DEPENDS`
+  option to specify per-component dependencies.
+
+* The :cpack_gen:`CPack RPM Generator` learned to package symbolic links
+  more cleanly and now supports directory symlinks with recent
+  ``rpmbuild`` versions.
+
+* The :cpack_gen:`CPack RPM Generator` learned a new
+  :variable:`CPACK_RPM_ADDITIONAL_MAN_DIRS` variable to specify
+  directories containing man pages for the brp-compress RPM macro.
+
+* The :cpack_gen:`CPack RPM Generator` learned a new
+  :variable:`CPACK_RPM_<component>_PACKAGE_ARCHITECTURE` variable
+  to specify a component-specific package architecture.
+
+* The CPack WIX generator learned the new
+  :prop_inst:`CPACK_START_MENU_SHORTCUTS`,
+  :prop_inst:`CPACK_DESKTOP_SHORTCUTS` and
+  :prop_inst:`CPACK_STARTUP_SHORTCUTS` installed file properties which can
+  be used to install shortcuts in the Start Menu, on the Desktop and
+  in the Startup Folder respectively.
+
+Other
+-----
+
+* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
+  is now aware of features supported by GNU compilers on Windows, versions
+  4.4 through 5.0.
+
+* The :manual:`cmake(1)` ``-E tar`` command learned a new
+  ``--format<format>`` option to specify the archive format to
+  be written.
+
+* On OS X, CMake learned to create XCTest bundles to test Frameworks
+  and App Bundles within Xcode.  The :module:`FindXCTest` module
+  provides convenience functions to handle :prop_tgt:`XCTEST` bundles.
+
+Deprecated and Removed Features
+===============================
+
+* On OS X the :manual:`cmake-gui(1)` no longer has the
+  ``Install For Command Line Use`` menu item.  Instead there
+  is a ``How to Install For Command Line Use`` menu item
+  that shows an informational dialog box explaining how to
+  make the command line tools available.  For example::
+
+    /Applications/CMake.app/Contents/bin/cmake-gui --install
+
+* The :command:`ctest_build` and :command:`build_command` commands
+  no longer tell ``make`` tools to ignore errors with the ``-i`` option.
+  Previously this was done for :ref:`Makefile Generators` but not others.
+  See policy :policy:`CMP0061`.
+
+* The :generator:`Visual Studio 10 2010` generator no longer checks
+  for running VS IDEs with the project open or asks them to reload.
+  This was originally done for VS 10 because it had been done for
+  VS 7 through 9 to avoid prompting for every project in a solution.
+  Since VS >= 10 allow the whole solution to reload at once they
+  do not need CMake to help them.
+
+* The :generator:`Visual Studio 7` generator (.NET 2002) is now
+  deprecated and will be removed in a future version of CMake.
+
+* The :generator:`Visual Studio 6` generator is now deprecated
+  and will be removed in a future version of CMake.
+
+* The :command:`find_package` command no longer considers project
+  build trees recently configured in a :manual:`cmake-gui(1)`.
+  This was previously done only on Windows and is now never done.
+  The ``NO_CMAKE_BUILDS_PATH`` option is now ignored if given
+  and effectively always on.
+  Projects may populate the :ref:`User Package Registry` to aid
+  users building multiple dependent projects one after another.
+
+* The :command:`add_definitions()` command no longer causes a
+  :prop_dir:`DEFINITIONS` directory property to be populated. See policy
+  :policy:`CMP0059`.
+
+* With Visual Studio 7, 8, and 9 generators the value of the ``$(OutDir)``
+  placeholder no longer evaluates to the configuration name.  Projects
+  should use ``$(ConfigurationName)`` for that instead.
+
+* Using the output of :command:`export()` with the :command:`install(FILES)`
+  command is no longer allowed.  See policy :policy:`CMP0062` for details.
+
+Other Changes
+=============
+
+* The :generator:`Ninja` generator now requires that calls to the
+  :command:`add_custom_command` and :command:`add_custom_target`
+  commands use the ``BYPRODUCTS`` option to explicitly specify any
+  files generated by the custom commands that are not listed as
+  outputs (perhaps because their timestamps are allowed to be older
+  than the inputs).  See policy :policy:`CMP0058`.
+
+* Build-time progress output of :ref:`Makefile Generators` has been improved.
+  It no longer mixes progress and build rule messages during parallel builds.
+  The link rule messages now have progress and are displayed as bold green
+  instead of bold red (since red is often associated with an error message).
+
+* The :variable:`CMAKE_CFG_INTDIR` variable value for Visual Studio
+  7, 8, and 9 is now ``$(ConfigurationName)`` instead of ``$(OutDir)``.
+  This should have no effect on the intended use cases of the variable.
+
+* Linking to library files by a full path in an implicit linker search
+  directory (e.g. ``/usr/lib/libfoo.a``) no longer asks the linker to
+  search for the library (e.g. ``-lfoo``) and now links by full path.
+  See policy :policy:`CMP0060`.
diff --git a/share/cmake-3.18/Help/release/3.4.rst b/share/cmake-3.22/Help/release/3.4.rst
similarity index 100%
rename from share/cmake-3.18/Help/release/3.4.rst
rename to share/cmake-3.22/Help/release/3.4.rst
diff --git a/share/cmake-3.18/Help/release/3.5.rst b/share/cmake-3.22/Help/release/3.5.rst
similarity index 100%
rename from share/cmake-3.18/Help/release/3.5.rst
rename to share/cmake-3.22/Help/release/3.5.rst
diff --git a/share/cmake-3.22/Help/release/3.6.rst b/share/cmake-3.22/Help/release/3.6.rst
new file mode 100644
index 0000000..b798f0d
--- /dev/null
+++ b/share/cmake-3.22/Help/release/3.6.rst
@@ -0,0 +1,318 @@
+CMake 3.6 Release Notes
+***********************
+
+.. only:: html
+
+  .. contents::
+
+Changes made since CMake 3.5 include the following.
+
+New Features
+============
+
+Generators
+----------
+
+* The :generator:`Ninja` generator learned to produce phony targets
+  of the form ``sub/dir/all`` to drive the build of a subdirectory.
+  This is equivalent to ``cd sub/dir; make all`` with
+  :ref:`Makefile Generators`.
+
+* The :generator:`Ninja` generator now includes system header files in build
+  dependencies to ensure correct re-builds when system packages are updated.
+
+* The :generator:`Visual Studio 14 2015` generator learned to support the
+  Clang/C2 toolsets, e.g. with the ``-T v140_clang_3_7`` option.
+  This feature is experimental.
+
+Commands
+--------
+
+* The :command:`add_custom_command` and :command:`add_custom_target` commands
+  learned how to use the :prop_tgt:`CROSSCOMPILING_EMULATOR` executable
+  target property.
+
+* The :command:`install` command learned a new ``EXCLUDE_FROM_ALL`` option
+  to leave installation rules out of the default installation.
+
+* The :command:`list` command gained a ``FILTER`` sub-command to filter
+  list elements by regular expression.
+
+* The :command:`string(TIMESTAMP)` and :command:`file(TIMESTAMP)`
+  commands gained support for the ``%s`` placeholder.  This is
+  the number of seconds since the UNIX Epoch.
+
+Variables
+---------
+
+* A :variable:`CMAKE_DEPENDS_IN_PROJECT_ONLY` variable was introduced
+  to tell :ref:`Makefile Generators` to limit dependency scanning only
+  to files in the project source and build trees.
+
+* A new :variable:`CMAKE_HOST_SOLARIS` variable was introduced to
+  indicate when CMake is running on an Oracle Solaris host.
+
+* A :variable:`CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES` variable was
+  added for use by toolchain files to specify system include directories
+  to be appended to all compiler command lines.
+
+* The :variable:`CMAKE_<LANG>_STANDARD_LIBRARIES` variable is now documented.
+  It is intended for use by toolchain files to specify system libraries to be
+  added to all linker command lines.
+
+* A :variable:`CMAKE_NINJA_OUTPUT_PATH_PREFIX` variable was introduced
+  to tell the :generator:`Ninja` generator to configure the generated
+  ``build.ninja`` file for use as a ``subninja``.
+
+* A :variable:`CMAKE_TRY_COMPILE_PLATFORM_VARIABLES` variable was
+  added for use by toolchain files to specify platform-specific
+  variables that must be propagated by the :command:`try_compile`
+  command into test projects.
+
+* A :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable was added
+  to optionally tell the :command:`try_compile` command to build
+  a static library instead of an executable.  This is useful for
+  cross-compiling toolchains that cannot link binaries without
+  custom flags or scripts.
+
+Properties
+----------
+
+* A :prop_tgt:`DEPLOYMENT_REMOTE_DIRECTORY` target property was introduced
+  to tell the :generator:`Visual Studio 9 2008` and
+  :generator:`Visual Studio 8 2005` generators to generate the "remote
+  directory" for WinCE project deployment and debugger settings.
+
+* A :prop_tgt:`<LANG>_CLANG_TIDY` target property and supporting
+  :variable:`CMAKE_<LANG>_CLANG_TIDY` variable were introduced to tell the
+  :ref:`Makefile Generators` and the :generator:`Ninja` generator to run
+  ``clang-tidy`` along with the compiler for ``C`` and ``CXX`` languages.
+
+* A :prop_test:`TIMEOUT_AFTER_MATCH` test property was introduced to
+  optionally tell CTest to enforce a secondary timeout after matching
+  certain output from a test.
+
+* A :prop_tgt:`VS_CONFIGURATION_TYPE` target property was introduced
+  to specify a custom project file type for :ref:`Visual Studio Generators`
+  supporting VS 2010 and above.
+
+* A :prop_dir:`VS_STARTUP_PROJECT` directory property was introduced
+  to specify for :ref:`Visual Studio Generators` the default startup
+  project for generated solutions (``.sln`` files).
+
+Modules
+-------
+
+* The :module:`CMakePushCheckState` module now pushes/pops/resets the variable
+  ``CMAKE_EXTRA_INCLUDE_FILE`` used in :module:`CheckTypeSize`.
+
+* The :module:`ExternalProject` module leared the ``GIT_SHALLOW 1``
+  option to perform a shallow clone of a Git repository.
+
+* The :module:`ExternalProject` module learned to initialize Git submodules
+  recursively and also to initialize new submodules on updates.  Use the
+  ``GIT_SUBMODULES`` option to restrict which submodules are initialized and
+  updated.
+
+* The :module:`ExternalProject` module leared the ``DOWNLOAD_NO_EXTRACT 1``
+  argument to skip extracting the file that is downloaded (e.g., for
+  self-extracting shell installers or ``.msi`` files).
+
+* The :module:`ExternalProject` module now uses ``TLS_VERIFY`` when fetching
+  from git repositories.
+
+* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to
+  support `OpenBLAS <http://www.openblas.net>`__.
+
+* The :module:`FindCUDA` module learned to find the ``cublas_device`` library.
+
+* The :module:`FindGTest` module ``gtest_add_tests`` function now causes
+  CMake to automatically re-run when test sources change so that they
+  can be re-scanned.
+
+* The :module:`FindLTTngUST` module was introduced to find the LTTng-UST
+  library.
+
+* The :module:`FindPkgConfig` module learned to optionally create imported
+  targets for the libraries it has found.
+
+* The :module:`FindProtobuf` module learned to provide a ``Protobuf_VERSION``
+  variable and check the version number requested in a :command:`find_package`
+  call.
+
+* The :module:`InstallRequiredSystemLibraries` module learned a new
+  ``CMAKE_INSTALL_UCRT_LIBRARIES`` option to enable app-local deployment
+  of the Windows Universal CRT libraries with Visual Studio 2015.
+
+Platforms
+---------
+
+* The Clang compiler is now supported on CYGWIN.
+
+* Support was added for the Bruce C Compiler with compiler id ``Bruce``.
+
+CTest
+-----
+
+* The :command:`ctest_update` command now looks at the
+  :variable:`CTEST_GIT_INIT_SUBMODULES` variable to determine whether
+  submodules should be updated or not before updating.
+
+* The :command:`ctest_update` command will now synchronize submodules on an
+  update. Updates which add submodules or change a submodule's URL will now be
+  pulled properly.
+
+CPack
+-----
+
+* The :cpack_gen:`CPack DEB Generator` learned how to handle ``$ORIGIN``
+  in ``CMAKE_INSTALL_RPATH`` when :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS`
+  is used for dependency auto detection.
+
+* The :cpack_gen:`CPack DEB Generator` learned how to generate
+  ``DEBIAN/shlibs`` control file when package contains shared libraries.
+
+* The :cpack_gen:`CPack DEB Generator` learned how to generate
+  ``DEBIAN/postinst`` and ``DEBIAN/postrm`` files if the package installs
+  libraries in ldconfig-controlled locations (e.g. ``/lib/``, ``/usr/lib/``).
+
+* The :cpack_gen:`CPack DEB Generator` learned how to generate dependencies
+  between Debian packages if multi-component setup is used and
+  :variable:`CPACK_COMPONENT_<compName>_DEPENDS` variables are set.
+  For backward compatibility this feature is disabled by default.
+  See :variable:`CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS`.
+
+* The :cpack_gen:`CPack DEB Generator` learned how to set custom package
+  file names including how to generate properly-named Debian packages::
+
+    <PackageName>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
+
+  For backward compatibility this feature is disabled by default. See
+  :variable:`CPACK_DEBIAN_FILE_NAME` and
+  :variable:`CPACK_DEBIAN_<COMPONENT>_FILE_NAME`.
+
+* The :cpack_gen:`CPack DEB Generator` learned how to set the package
+  release number (``DebianRevisionNumber`` in package file name when
+  used in combination with ``DEB-DEFAULT`` value set by
+  :variable:`CPACK_DEBIAN_FILE_NAME`).
+  See :variable:`CPACK_DEBIAN_PACKAGE_RELEASE`.
+
+* The :cpack_gen:`CPack DEB Generator` learned how to set the package
+  architecture per-component.
+  See :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE`.
+
+* The :cpack_gen:`CPack DragNDrop Generator` learned a new option to skip the
+  ``/Applications`` symlink.
+  See the :variable:`CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK` variable.
+
+* The :module:`CPackIFW` module gained a new
+  :command:`cpack_ifw_update_repository` command to update a QtIFW-specific
+  repository from a remote repository.
+
+* The :cpack_gen:`CPack RPM Generator` learned how to set RPM ``dist`` tag
+  as part of RPM ``Release:`` tag when enabled (mandatory on some Linux
+  distributions for e.g. on Fedora).
+  See :variable:`CPACK_RPM_PACKAGE_RELEASE_DIST`.
+
+* The :cpack_gen:`CPack RPM Generator` learned how to set default values
+  for owning user/group and file/directory permissions of package content.
+  See :variable:`CPACK_RPM_DEFAULT_USER`, :variable:`CPACK_RPM_DEFAULT_GROUP`,
+  :variable:`CPACK_RPM_DEFAULT_FILE_PERMISSIONS`,
+  :variable:`CPACK_RPM_DEFAULT_DIR_PERMISSIONS` and their per component
+  counterparts.
+
+* The :cpack_gen:`CPack RPM Generator` learned how to set user defined
+  package file names, how to specify that rpmbuild should decide on file
+  name format as well as handling of multiple rpm packages generated by a
+  single user defined spec file.
+  See :variable:`CPACK_RPM_PACKAGE_NAME` and
+  :variable:`CPACK_RPM_<component>_PACKAGE_NAME`.
+
+* The :cpack_gen:`CPack RPM Generator` learned how to correctly handle symlinks
+  that are pointing outside generated packages.
+
+Other
+-----
+
+* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
+  is now aware of features supported by Intel C++ compilers versions 12.1
+  through 16.0 on UNIX platforms.
+
+Deprecated and Removed Features
+===============================
+
+* The :module:`CMakeForceCompiler` module and its macros are now deprecated.
+  See module documentation for an explanation.
+
+* The :command:`find_library`, :command:`find_path`, and :command:`find_file`
+  commands no longer search in installation prefixes derived from the ``PATH``
+  environment variable on non-Windows platforms.  This behavior was added in
+  CMake 3.3 to support Windows hosts but has proven problematic on UNIX hosts.
+  Users that keep some ``<prefix>/bin`` directories in the ``PATH`` just for
+  their tools do not necessarily want any supporting ``<prefix>/lib``
+  directories searched.  One may set the ``CMAKE_PREFIX_PATH`` environment
+  variable with a :ref:`semicolon-separated list <CMake Language Lists>` of prefixes that are
+  to be searched.
+
+* The :generator:`Visual Studio 7 .NET 2003` generator is now
+  deprecated and will be removed in a future version of CMake.
+
+* The :generator:`Visual Studio 7` generator (for VS .NET 2002) has been
+  removed.  It had been deprecated since CMake 3.3.
+
+* The :generator:`Visual Studio 6` generator has been removed.
+  It had been deprecated since CMake 3.3.
+
+Other Changes
+=============
+
+* The precompiled OS X binary provided on ``cmake.org`` now requires
+  OS X 10.7 or newer.
+
+* On Linux and FreeBSD platforms, when building CMake itself from source and
+  not using a system-provided libcurl, OpenSSL is now used by default if it is
+  found on the system.  This enables SSL/TLS support for commands supporting
+  network communication via ``https``, such as :command:`file(DOWNLOAD)`,
+  :command:`file(UPLOAD)`, and :command:`ctest_submit`.
+
+* The :manual:`cmake(1)` ``--build`` command-line tool now rejects multiple
+  ``--target`` options with an error instead of silently ignoring all but the
+  last one.
+
+* :prop_tgt:`AUTOMOC` now diagnoses name collisions when multiple source
+  files in different directories use ``#include <moc_foo.cpp>`` with the
+  same name (because the generated ``moc_foo.cpp`` files would collide).
+
+* The :module:`FindBISON` module ``BISON_TARGET`` macro now supports
+  special characters by passing the ``VERBATIM`` option to internal
+  :command:`add_custom_command` calls.  This may break clients that
+  added escaping manually to work around the bug.
+
+* The :module:`FindFLEX` module ``FLEX_TARGET`` macro now supports
+  special characters by passing the ``VERBATIM`` option to internal
+  :command:`add_custom_command` calls.  This may break clients that
+  added escaping manually to work around the bug.
+
+* The :module:`FindProtobuf` module input and output variables were all renamed
+  from ``PROTOBUF_`` to ``Protobuf_`` for consistency with other find modules.
+  Input variables of the old case will be honored if provided, and output
+  variables of the old case are always provided.
+
+* The :cpack_gen:`CPack RPM Generator` now supports upper cased component
+  names in per component CPackRPM specific variables.
+  E.g. component named ``foo`` now expects component specific
+  variable to be ``CPACK_RPM_FOO_PACKAGE_NAME`` while before
+  it expected ``CPACK_RPM_foo_PACKAGE_NAME``.
+  Upper cased component name part in variables is compatible
+  with convention used for other CPack variables.
+  For back compatibility old format of variables is still valid
+  and preferred if both versions of variable are set, but the
+  preferred future use is upper cased component names in variables.
+  New variables that will be added to CPackRPM in later versions
+  will only support upper cased component variable format.
+
+* The CPack NSIS generator's configuration file template was fixed to
+  quote the path to the uninstaller tool used by the
+  :variable:`CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL` option.
+  This avoids depending on an insecure Windows feature to run an
+  uninstaller tool with a space in the path.
diff --git a/share/cmake-3.18/Help/release/3.7.rst b/share/cmake-3.22/Help/release/3.7.rst
similarity index 100%
rename from share/cmake-3.18/Help/release/3.7.rst
rename to share/cmake-3.22/Help/release/3.7.rst
diff --git a/share/cmake-3.18/Help/release/3.8.rst b/share/cmake-3.22/Help/release/3.8.rst
similarity index 100%
rename from share/cmake-3.18/Help/release/3.8.rst
rename to share/cmake-3.22/Help/release/3.8.rst
diff --git a/share/cmake-3.18/Help/release/3.9.rst b/share/cmake-3.22/Help/release/3.9.rst
similarity index 100%
rename from share/cmake-3.18/Help/release/3.9.rst
rename to share/cmake-3.22/Help/release/3.9.rst
diff --git a/share/cmake-3.18/Help/release/dev.txt b/share/cmake-3.22/Help/release/dev.txt
similarity index 100%
rename from share/cmake-3.18/Help/release/dev.txt
rename to share/cmake-3.22/Help/release/dev.txt
diff --git a/share/cmake-3.22/Help/release/index.rst b/share/cmake-3.22/Help/release/index.rst
new file mode 100644
index 0000000..3d2ed43
--- /dev/null
+++ b/share/cmake-3.22/Help/release/index.rst
@@ -0,0 +1,38 @@
+:orphan:
+
+CMake Release Notes
+*******************
+
+..
+  This file should include the adjacent "dev.txt" file
+  in development versions but not in release versions.
+
+Releases
+========
+
+.. toctree::
+   :maxdepth: 1
+
+   3.22 <3.22>
+   3.21 <3.21>
+   3.20 <3.20>
+   3.19 <3.19>
+   3.18 <3.18>
+   3.17 <3.17>
+   3.16 <3.16>
+   3.15 <3.15>
+   3.14 <3.14>
+   3.13 <3.13>
+   3.12 <3.12>
+   3.11 <3.11>
+   3.10 <3.10>
+   3.9 <3.9>
+   3.8 <3.8>
+   3.7 <3.7>
+   3.6 <3.6>
+   3.5 <3.5>
+   3.4 <3.4>
+   3.3 <3.3>
+   3.2 <3.2>
+   3.1 <3.1>
+   3.0 <3.0>
diff --git a/share/cmake-3.22/Help/variable/ANDROID.rst b/share/cmake-3.22/Help/variable/ANDROID.rst
new file mode 100644
index 0000000..68dccf2
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/ANDROID.rst
@@ -0,0 +1,7 @@
+ANDROID
+-------
+
+.. versionadded:: 3.7
+
+Set to ``1`` when the target system (:variable:`CMAKE_SYSTEM_NAME`) is
+``Android``.
diff --git a/share/cmake-3.18/Help/variable/APPLE.rst b/share/cmake-3.22/Help/variable/APPLE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/APPLE.rst
rename to share/cmake-3.22/Help/variable/APPLE.rst
diff --git a/share/cmake-3.18/Help/variable/BORLAND.rst b/share/cmake-3.22/Help/variable/BORLAND.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/BORLAND.rst
rename to share/cmake-3.22/Help/variable/BORLAND.rst
diff --git a/share/cmake-3.18/Help/variable/BUILD_SHARED_LIBS.rst b/share/cmake-3.22/Help/variable/BUILD_SHARED_LIBS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/BUILD_SHARED_LIBS.rst
rename to share/cmake-3.22/Help/variable/BUILD_SHARED_LIBS.rst
diff --git a/share/cmake-3.22/Help/variable/CACHE.rst b/share/cmake-3.22/Help/variable/CACHE.rst
new file mode 100644
index 0000000..d5489c8
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CACHE.rst
@@ -0,0 +1,20 @@
+CACHE
+-----
+
+.. versionadded:: 3.13
+
+Operator to read cache variables.
+
+Use the syntax ``$CACHE{VAR}`` to read cache entry ``VAR``.
+See the :ref:`cmake-language(7) variables <CMake Language Variables>`
+documentation for more complete documentation of the interaction of
+normal variables and cache entries.
+
+When evaluating :ref:`Variable References` of the form ``${VAR}``,
+CMake first searches for a normal variable with that name, and if not
+found CMake will search for a cache entry with that name.
+The ``$CACHE{VAR}`` syntax can be used to do direct cache lookup and
+ignore any existing normal variable.
+
+See the :command:`set` and :command:`unset` commands to see how to
+write or remove cache variables.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ABSOLUTE_DESTINATION_FILES.rst b/share/cmake-3.22/Help/variable/CMAKE_ABSOLUTE_DESTINATION_FILES.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_ABSOLUTE_DESTINATION_FILES.rst
rename to share/cmake-3.22/Help/variable/CMAKE_ABSOLUTE_DESTINATION_FILES.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_AIX_EXPORT_ALL_SYMBOLS.rst b/share/cmake-3.22/Help/variable/CMAKE_AIX_EXPORT_ALL_SYMBOLS.rst
new file mode 100644
index 0000000..699fe0f
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_AIX_EXPORT_ALL_SYMBOLS.rst
@@ -0,0 +1,8 @@
+CMAKE_AIX_EXPORT_ALL_SYMBOLS
+----------------------------
+
+.. versionadded:: 3.17
+
+Default value for :prop_tgt:`AIX_EXPORT_ALL_SYMBOLS` target property.
+This variable is used to initialize the property on each target as it is
+created.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS.rst
new file mode 100644
index 0000000..2d6b4b9
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS.rst
@@ -0,0 +1,7 @@
+CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS
+------------------------------------
+
+.. versionadded:: 3.4
+
+Default value for the :prop_tgt:`ANDROID_ANT_ADDITIONAL_OPTIONS` target property.
+See that target property for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_API.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_API.rst
new file mode 100644
index 0000000..4388bf2
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_API.rst
@@ -0,0 +1,13 @@
+CMAKE_ANDROID_API
+-----------------
+
+.. versionadded:: 3.1
+
+When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
+Edition`, this variable may be set to specify the default value for the
+:prop_tgt:`ANDROID_API` target property.  See that target property for
+additional information.
+
+Otherwise, when :ref:`Cross Compiling for Android`, this variable provides
+the Android API version number targeted.  This will be the same value as
+the :variable:`CMAKE_SYSTEM_VERSION` variable for ``Android`` platforms.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_API_MIN.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_API_MIN.rst
new file mode 100644
index 0000000..a0d2ab4
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_API_MIN.rst
@@ -0,0 +1,7 @@
+CMAKE_ANDROID_API_MIN
+---------------------
+
+.. versionadded:: 3.2
+
+Default value for the :prop_tgt:`ANDROID_API_MIN` target property.
+See that target property for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ARCH.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ARCH.rst
new file mode 100644
index 0000000..9f12742
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ARCH.rst
@@ -0,0 +1,21 @@
+CMAKE_ANDROID_ARCH
+------------------
+
+.. versionadded:: 3.4
+
+When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
+Edition`, this variable may be set to specify the default value for the
+:prop_tgt:`ANDROID_ARCH` target property.  See that target property for
+additional information.
+
+Otherwise, when :ref:`Cross Compiling for Android`, this variable provides
+the name of the Android architecture corresponding to the value of the
+:variable:`CMAKE_ANDROID_ARCH_ABI` variable.  The architecture name
+may be one of:
+
+* ``arm``
+* ``arm64``
+* ``mips``
+* ``mips64``
+* ``x86``
+* ``x86_64``
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ARCH_ABI.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ARCH_ABI.rst
new file mode 100644
index 0000000..5a2e3ec
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ARCH_ABI.rst
@@ -0,0 +1,19 @@
+CMAKE_ANDROID_ARCH_ABI
+----------------------
+
+.. versionadded:: 3.7
+
+When :ref:`Cross Compiling for Android`, this variable specifies the
+target architecture and ABI to be used.  Valid values are:
+
+* ``arm64-v8a``
+* ``armeabi-v7a``
+* ``armeabi-v6``
+* ``armeabi``
+* ``mips``
+* ``mips64``
+* ``x86``
+* ``x86_64``
+
+See also the :variable:`CMAKE_ANDROID_ARM_MODE` and
+:variable:`CMAKE_ANDROID_ARM_NEON` variables.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ARM_MODE.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ARM_MODE.rst
new file mode 100644
index 0000000..973ff7e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ARM_MODE.rst
@@ -0,0 +1,9 @@
+CMAKE_ANDROID_ARM_MODE
+----------------------
+
+.. versionadded:: 3.7
+
+When :ref:`Cross Compiling for Android` and :variable:`CMAKE_ANDROID_ARCH_ABI`
+is set to one of the ``armeabi`` architectures, set ``CMAKE_ANDROID_ARM_MODE``
+to ``ON`` to target 32-bit ARM processors (``-marm``).  Otherwise, the
+default is to target the 16-bit Thumb processors (``-mthumb``).
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ARM_NEON.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ARM_NEON.rst
new file mode 100644
index 0000000..6b9cf08
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ARM_NEON.rst
@@ -0,0 +1,8 @@
+CMAKE_ANDROID_ARM_NEON
+----------------------
+
+.. versionadded:: 3.7
+
+When :ref:`Cross Compiling for Android` and :variable:`CMAKE_ANDROID_ARCH_ABI`
+is set to ``armeabi-v7a`` set ``CMAKE_ANDROID_ARM_NEON`` to ``ON`` to target
+ARM NEON devices.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ASSETS_DIRECTORIES.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ASSETS_DIRECTORIES.rst
new file mode 100644
index 0000000..3de2be4
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_ASSETS_DIRECTORIES.rst
@@ -0,0 +1,7 @@
+CMAKE_ANDROID_ASSETS_DIRECTORIES
+--------------------------------
+
+.. versionadded:: 3.4
+
+Default value for the :prop_tgt:`ANDROID_ASSETS_DIRECTORIES` target property.
+See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_EXCEPTIONS.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_EXCEPTIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_ANDROID_EXCEPTIONS.rst
rename to share/cmake-3.22/Help/variable/CMAKE_ANDROID_EXCEPTIONS.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_GUI.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_GUI.rst
new file mode 100644
index 0000000..821bbee
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_GUI.rst
@@ -0,0 +1,7 @@
+CMAKE_ANDROID_GUI
+-----------------
+
+.. versionadded:: 3.1
+
+Default value for the :prop_tgt:`ANDROID_GUI` target property of
+executables.  See that target property for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_JAR_DEPENDENCIES.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_JAR_DEPENDENCIES.rst
new file mode 100644
index 0000000..80ab842
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_JAR_DEPENDENCIES.rst
@@ -0,0 +1,7 @@
+CMAKE_ANDROID_JAR_DEPENDENCIES
+------------------------------
+
+.. versionadded:: 3.4
+
+Default value for the :prop_tgt:`ANDROID_JAR_DEPENDENCIES` target property.
+See that target property for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_JAR_DIRECTORIES.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_JAR_DIRECTORIES.rst
new file mode 100644
index 0000000..4d148d8
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_JAR_DIRECTORIES.rst
@@ -0,0 +1,7 @@
+CMAKE_ANDROID_JAR_DIRECTORIES
+-----------------------------
+
+.. versionadded:: 3.4
+
+Default value for the :prop_tgt:`ANDROID_JAR_DIRECTORIES` target property.
+See that target property for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_JAVA_SOURCE_DIR.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_JAVA_SOURCE_DIR.rst
new file mode 100644
index 0000000..021baa0
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_JAVA_SOURCE_DIR.rst
@@ -0,0 +1,7 @@
+CMAKE_ANDROID_JAVA_SOURCE_DIR
+-----------------------------
+
+.. versionadded:: 3.4
+
+Default value for the :prop_tgt:`ANDROID_JAVA_SOURCE_DIR` target property.
+See that target property for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES.rst
new file mode 100644
index 0000000..41d4cc3
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES.rst
@@ -0,0 +1,7 @@
+CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES
+-------------------------------------
+
+.. versionadded:: 3.4
+
+Default value for the :prop_tgt:`ANDROID_NATIVE_LIB_DEPENDENCIES` target
+property.  See that target property for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES.rst
new file mode 100644
index 0000000..e87547d
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES.rst
@@ -0,0 +1,7 @@
+CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES
+------------------------------------
+
+.. versionadded:: 3.4
+
+Default value for the :prop_tgt:`ANDROID_NATIVE_LIB_DIRECTORIES` target
+property.  See that target property for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NDK.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NDK.rst
new file mode 100644
index 0000000..72ac99e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NDK.rst
@@ -0,0 +1,9 @@
+CMAKE_ANDROID_NDK
+-----------------
+
+.. versionadded:: 3.7
+
+When :ref:`Cross Compiling for Android with the NDK`, this variable holds
+the absolute path to the root directory of the NDK.  The directory must
+contain a ``platforms`` subdirectory holding the ``android-<api>``
+directories.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS.rst
new file mode 100644
index 0000000..40a5c1a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS.rst
@@ -0,0 +1,11 @@
+CMAKE_ANDROID_NDK_DEPRECATED_HEADERS
+------------------------------------
+
+.. versionadded:: 3.9
+
+When :ref:`Cross Compiling for Android with the NDK`, this variable
+may be set to specify whether to use the deprecated per-api-level
+headers instead of the unified headers.
+
+If not specified, the default will be *false* if using a NDK version
+that provides the unified headers and *true* otherwise.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG.rst
new file mode 100644
index 0000000..9d61fa4
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG.rst
@@ -0,0 +1,8 @@
+CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG
+------------------------------------
+
+.. versionadded:: 3.7.1
+
+When :ref:`Cross Compiling for Android with the NDK`, this variable
+provides the NDK's "host tag" used to construct the path to prebuilt
+toolchains that run on the host.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst
new file mode 100644
index 0000000..15fe18f
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst
@@ -0,0 +1,22 @@
+CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
+-----------------------------------
+
+.. versionadded:: 3.7
+
+When :ref:`Cross Compiling for Android with the NDK`, this variable
+may be set to specify the version of the toolchain to be used
+as the compiler.
+
+On NDK r19 or above, this variable must be unset or set to ``clang``.
+
+On NDK r18 or below, this variable must be set to one of these forms:
+
+* ``<major>.<minor>``: GCC of specified version
+* ``clang<major>.<minor>``: Clang of specified version
+* ``clang``: Clang of most recent available version
+
+A toolchain of the requested version will be selected automatically to
+match the ABI named in the :variable:`CMAKE_ANDROID_ARCH_ABI` variable.
+
+If not specified, the default will be a value that selects the latest
+available GCC toolchain.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NDK_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NDK_VERSION.rst
new file mode 100644
index 0000000..5428d52
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_NDK_VERSION.rst
@@ -0,0 +1,8 @@
+CMAKE_ANDROID_NDK_VERSION
+-------------------------
+
+.. versionadded:: 3.20
+
+When :ref:`Cross Compiling for Android with the NDK` and using an
+Android NDK version 11 or higher, this variable is provided by
+CMake to report the NDK version number.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_PROCESS_MAX.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_PROCESS_MAX.rst
new file mode 100644
index 0000000..be241c2
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_PROCESS_MAX.rst
@@ -0,0 +1,7 @@
+CMAKE_ANDROID_PROCESS_MAX
+-------------------------
+
+.. versionadded:: 3.4
+
+Default value for the :prop_tgt:`ANDROID_PROCESS_MAX` target property.
+See that target property for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_PROGUARD.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_PROGUARD.rst
new file mode 100644
index 0000000..bb001d3
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_PROGUARD.rst
@@ -0,0 +1,7 @@
+CMAKE_ANDROID_PROGUARD
+----------------------
+
+.. versionadded:: 3.4
+
+Default value for the :prop_tgt:`ANDROID_PROGUARD` target property.
+See that target property for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH.rst
new file mode 100644
index 0000000..6fd4067
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH.rst
@@ -0,0 +1,7 @@
+CMAKE_ANDROID_PROGUARD_CONFIG_PATH
+----------------------------------
+
+.. versionadded:: 3.4
+
+Default value for the :prop_tgt:`ANDROID_PROGUARD_CONFIG_PATH` target property.
+See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ANDROID_RTTI.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_RTTI.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_ANDROID_RTTI.rst
rename to share/cmake-3.22/Help/variable/CMAKE_ANDROID_RTTI.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_SECURE_PROPS_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_SECURE_PROPS_PATH.rst
new file mode 100644
index 0000000..9f5743e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_SECURE_PROPS_PATH.rst
@@ -0,0 +1,7 @@
+CMAKE_ANDROID_SECURE_PROPS_PATH
+-------------------------------
+
+.. versionadded:: 3.4
+
+Default value for the :prop_tgt:`ANDROID_SECURE_PROPS_PATH` target property.
+See that target property for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_SKIP_ANT_STEP.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_SKIP_ANT_STEP.rst
new file mode 100644
index 0000000..588769b
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_SKIP_ANT_STEP.rst
@@ -0,0 +1,7 @@
+CMAKE_ANDROID_SKIP_ANT_STEP
+---------------------------
+
+.. versionadded:: 3.4
+
+Default value for the :prop_tgt:`ANDROID_SKIP_ANT_STEP` target property.
+See that target property for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst
new file mode 100644
index 0000000..3ca89f5
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst
@@ -0,0 +1,8 @@
+CMAKE_ANDROID_STANDALONE_TOOLCHAIN
+----------------------------------
+
+.. versionadded:: 3.7
+
+When :ref:`Cross Compiling for Android with a Standalone Toolchain`, this
+variable holds the absolute path to the root directory of the toolchain.
+The specified directory must contain a ``sysroot`` subdirectory.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ANDROID_STL_TYPE.rst b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_STL_TYPE.rst
new file mode 100644
index 0000000..3778181
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ANDROID_STL_TYPE.rst
@@ -0,0 +1,39 @@
+CMAKE_ANDROID_STL_TYPE
+----------------------
+
+.. versionadded:: 3.4
+
+When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
+Edition`, this variable may be set to specify the default value for the
+:prop_tgt:`ANDROID_STL_TYPE` target property.  See that target property
+for additional information.
+
+When :ref:`Cross Compiling for Android with the NDK`, this variable may be
+set to specify the STL variant to be used.  The value may be one of:
+
+``none``
+  No C++ Support
+``system``
+  Minimal C++ without STL
+``gabi++_static``
+  GAbi++ Static
+``gabi++_shared``
+  GAbi++ Shared
+``gnustl_static``
+  GNU libstdc++ Static
+``gnustl_shared``
+  GNU libstdc++ Shared
+``c++_static``
+  LLVM libc++ Static
+``c++_shared``
+  LLVM libc++ Shared
+``stlport_static``
+  STLport Static
+``stlport_shared``
+  STLport Shared
+
+The default value is ``gnustl_static`` on NDK versions that provide it
+and otherwise ``c++_static``.  Note that this default differs from
+the native NDK build system because CMake may be used to build projects for
+Android that are not natively implemented for it and use the C++ standard
+library.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_APPBUNDLE_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_APPBUNDLE_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_APPBUNDLE_PATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_APPBUNDLE_PATH.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_APPLE_SILICON_PROCESSOR.rst b/share/cmake-3.22/Help/variable/CMAKE_APPLE_SILICON_PROCESSOR.rst
new file mode 100644
index 0000000..0d5ccd1
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_APPLE_SILICON_PROCESSOR.rst
@@ -0,0 +1,14 @@
+CMAKE_APPLE_SILICON_PROCESSOR
+-----------------------------
+
+.. versionadded:: 3.19.2
+
+On Apple Silicon hosts running macOS, set this variable to tell
+CMake what architecture to use for :variable:`CMAKE_HOST_SYSTEM_PROCESSOR`.
+The value must be either ``arm64`` or ``x86_64``.
+
+The value of this variable should never be modified by project code.
+It is meant to be set as a cache entry provided by the user,
+e.g. via ``-DCMAKE_APPLE_SILICON_PROCESSOR=...``.
+
+See also the :envvar:`CMAKE_APPLE_SILICON_PROCESSOR` environment variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AR.rst b/share/cmake-3.22/Help/variable/CMAKE_AR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_AR.rst
rename to share/cmake-3.22/Help/variable/CMAKE_AR.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY.rst b/share/cmake-3.22/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY.rst
rename to share/cmake-3.22/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.22/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst
new file mode 100644
index 0000000..d8bd82c
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst
@@ -0,0 +1,11 @@
+CMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
+---------------------------------------
+
+.. versionadded:: 3.3
+
+Where to put all the :ref:`ARCHIVE <Archive Output Artifacts>`
+target files when built for a specific configuration.
+
+This variable is used to initialize the
+:prop_tgt:`ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>` property on all the targets.
+See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ARGC.rst b/share/cmake-3.22/Help/variable/CMAKE_ARGC.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_ARGC.rst
rename to share/cmake-3.22/Help/variable/CMAKE_ARGC.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ARGV0.rst b/share/cmake-3.22/Help/variable/CMAKE_ARGV0.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_ARGV0.rst
rename to share/cmake-3.22/Help/variable/CMAKE_ARGV0.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_AUTOGEN_ORIGIN_DEPENDS.rst b/share/cmake-3.22/Help/variable/CMAKE_AUTOGEN_ORIGIN_DEPENDS.rst
new file mode 100644
index 0000000..c24e462
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_AUTOGEN_ORIGIN_DEPENDS.rst
@@ -0,0 +1,13 @@
+CMAKE_AUTOGEN_ORIGIN_DEPENDS
+----------------------------
+
+.. versionadded:: 3.14
+
+Switch for forwarding origin target dependencies to the corresponding
+``_autogen`` targets.
+
+This variable is used to initialize the :prop_tgt:`AUTOGEN_ORIGIN_DEPENDS`
+property on all the targets.  See that target property for additional
+information.
+
+By default :variable:`CMAKE_AUTOGEN_ORIGIN_DEPENDS` is ``ON``.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_AUTOGEN_PARALLEL.rst b/share/cmake-3.22/Help/variable/CMAKE_AUTOGEN_PARALLEL.rst
new file mode 100644
index 0000000..2ada012
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_AUTOGEN_PARALLEL.rst
@@ -0,0 +1,12 @@
+CMAKE_AUTOGEN_PARALLEL
+----------------------
+
+.. versionadded:: 3.11
+
+Number of parallel ``moc`` or ``uic`` processes to start when using
+:prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`.
+
+This variable is used to initialize the :prop_tgt:`AUTOGEN_PARALLEL` property
+on all the targets.  See that target property for additional information.
+
+By default :variable:`CMAKE_AUTOGEN_PARALLEL` is unset.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_AUTOGEN_VERBOSE.rst b/share/cmake-3.22/Help/variable/CMAKE_AUTOGEN_VERBOSE.rst
new file mode 100644
index 0000000..f77ed6a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_AUTOGEN_VERBOSE.rst
@@ -0,0 +1,15 @@
+CMAKE_AUTOGEN_VERBOSE
+---------------------
+
+.. versionadded:: 3.13
+
+Sets the verbosity of :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTOUIC` and
+:prop_tgt:`AUTORCC`.  A positive integer value or a true boolean value
+lets the ``AUTO*`` generators output additional processing information.
+
+Setting :variable:`CMAKE_AUTOGEN_VERBOSE` has the same effect
+as setting the ``VERBOSE`` environment variable during
+generation (e.g. by calling ``make VERBOSE=1``).
+The extra verbosity is limited to the ``AUTO*`` generators though.
+
+By default :variable:`CMAKE_AUTOGEN_VERBOSE` is unset.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC.rst b/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_AUTOMOC.rst
rename to share/cmake-3.22/Help/variable/CMAKE_AUTOMOC.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_COMPILER_PREDEFINES.rst b/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_COMPILER_PREDEFINES.rst
new file mode 100644
index 0000000..f1b03a0
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_COMPILER_PREDEFINES.rst
@@ -0,0 +1,10 @@
+CMAKE_AUTOMOC_COMPILER_PREDEFINES
+---------------------------------
+
+.. versionadded:: 3.10
+
+This variable is used to initialize the :prop_tgt:`AUTOMOC_COMPILER_PREDEFINES`
+property on all the targets. See that target property for additional
+information.
+
+By default it is ON.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_DEPEND_FILTERS.rst b/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_DEPEND_FILTERS.rst
new file mode 100644
index 0000000..2c1551a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_DEPEND_FILTERS.rst
@@ -0,0 +1,14 @@
+CMAKE_AUTOMOC_DEPEND_FILTERS
+----------------------------
+
+.. versionadded:: 3.9
+
+Filter definitions used by :variable:`CMAKE_AUTOMOC`
+to extract file names from source code as additional dependencies
+for the ``moc`` file.
+
+This variable is used to initialize the :prop_tgt:`AUTOMOC_DEPEND_FILTERS`
+property on all the targets. See that target property for additional
+information.
+
+By default it is empty.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_MACRO_NAMES.rst b/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_MACRO_NAMES.rst
new file mode 100644
index 0000000..1153cb2
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_MACRO_NAMES.rst
@@ -0,0 +1,22 @@
+CMAKE_AUTOMOC_MACRO_NAMES
+----------------------------
+
+.. versionadded:: 3.10
+
+:ref:`Semicolon-separated list <CMake Language Lists>` list of macro names used by
+:variable:`CMAKE_AUTOMOC` to determine if a C++ file needs to be
+processed by ``moc``.
+
+This variable is used to initialize the :prop_tgt:`AUTOMOC_MACRO_NAMES`
+property on all the targets. See that target property for additional
+information.
+
+The default value is ``Q_OBJECT;Q_GADGET;Q_NAMESPACE;Q_NAMESPACE_EXPORT``.
+
+Example
+^^^^^^^
+Let CMake know that source files that contain ``CUSTOM_MACRO`` must be ``moc``
+processed as well::
+
+  set(CMAKE_AUTOMOC ON)
+  list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "CUSTOM_MACRO")
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_MOC_OPTIONS.rst b/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_MOC_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_AUTOMOC_MOC_OPTIONS.rst
rename to share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_MOC_OPTIONS.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_PATH_PREFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_PATH_PREFIX.rst
new file mode 100644
index 0000000..42f48b4
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_PATH_PREFIX.rst
@@ -0,0 +1,13 @@
+CMAKE_AUTOMOC_PATH_PREFIX
+-------------------------
+
+.. versionadded:: 3.16
+
+Whether to generate the ``-p`` path prefix option for ``moc`` on
+:prop_tgt:`AUTOMOC` enabled Qt targets.
+
+This variable is used to initialize the :prop_tgt:`AUTOMOC_PATH_PREFIX`
+property on all the targets.  See that target property for additional
+information.
+
+The default value is ``OFF``.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_RELAXED_MODE.rst b/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_RELAXED_MODE.rst
new file mode 100644
index 0000000..0b0b114
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_AUTOMOC_RELAXED_MODE.rst
@@ -0,0 +1,15 @@
+CMAKE_AUTOMOC_RELAXED_MODE
+--------------------------
+
+.. deprecated:: 3.15
+
+Switch between strict and relaxed automoc mode.
+
+By default, :prop_tgt:`AUTOMOC` behaves exactly as described in the
+documentation of the :prop_tgt:`AUTOMOC` target property.  When set to
+``TRUE``, it accepts more input and tries to find the correct input file for
+``moc`` even if it differs from the documented behavior.  In this mode it
+e.g.  also checks whether a header file is intended to be processed by moc
+when a ``"foo.moc"`` file has been included.
+
+Relaxed mode has to be enabled for KDE4 compatibility.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AUTORCC.rst b/share/cmake-3.22/Help/variable/CMAKE_AUTORCC.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_AUTORCC.rst
rename to share/cmake-3.22/Help/variable/CMAKE_AUTORCC.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AUTORCC_OPTIONS.rst b/share/cmake-3.22/Help/variable/CMAKE_AUTORCC_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_AUTORCC_OPTIONS.rst
rename to share/cmake-3.22/Help/variable/CMAKE_AUTORCC_OPTIONS.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AUTOUIC.rst b/share/cmake-3.22/Help/variable/CMAKE_AUTOUIC.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_AUTOUIC.rst
rename to share/cmake-3.22/Help/variable/CMAKE_AUTOUIC.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_AUTOUIC_OPTIONS.rst b/share/cmake-3.22/Help/variable/CMAKE_AUTOUIC_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_AUTOUIC_OPTIONS.rst
rename to share/cmake-3.22/Help/variable/CMAKE_AUTOUIC_OPTIONS.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_AUTOUIC_SEARCH_PATHS.rst b/share/cmake-3.22/Help/variable/CMAKE_AUTOUIC_SEARCH_PATHS.rst
new file mode 100644
index 0000000..0262368
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_AUTOUIC_SEARCH_PATHS.rst
@@ -0,0 +1,13 @@
+CMAKE_AUTOUIC_SEARCH_PATHS
+--------------------------
+
+.. versionadded:: 3.9
+
+Search path list used by :variable:`CMAKE_AUTOUIC` to find included
+``.ui`` files.
+
+This variable is used to initialize the :prop_tgt:`AUTOUIC_SEARCH_PATHS`
+property on all the targets. See that target property for additional
+information.
+
+By default it is empty.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_BACKWARDS_COMPATIBILITY.rst b/share/cmake-3.22/Help/variable/CMAKE_BACKWARDS_COMPATIBILITY.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_BACKWARDS_COMPATIBILITY.rst
rename to share/cmake-3.22/Help/variable/CMAKE_BACKWARDS_COMPATIBILITY.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_BINARY_DIR.rst b/share/cmake-3.22/Help/variable/CMAKE_BINARY_DIR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_BINARY_DIR.rst
rename to share/cmake-3.22/Help/variable/CMAKE_BINARY_DIR.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_BUILD_RPATH.rst b/share/cmake-3.22/Help/variable/CMAKE_BUILD_RPATH.rst
new file mode 100644
index 0000000..7a8ace7
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_BUILD_RPATH.rst
@@ -0,0 +1,12 @@
+CMAKE_BUILD_RPATH
+-----------------
+
+.. versionadded:: 3.8
+
+:ref:`Semicolon-separated list <CMake Language Lists>` specifying runtime path (``RPATH``)
+entries to add to binaries linked in the build tree (for platforms that
+support it).  The entries will *not* be used for binaries in the install
+tree.  See also the :variable:`CMAKE_INSTALL_RPATH` variable.
+
+This is used to initialize the :prop_tgt:`BUILD_RPATH` target property
+for all targets.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_BUILD_RPATH_USE_ORIGIN.rst b/share/cmake-3.22/Help/variable/CMAKE_BUILD_RPATH_USE_ORIGIN.rst
new file mode 100644
index 0000000..ecd9278
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_BUILD_RPATH_USE_ORIGIN.rst
@@ -0,0 +1,9 @@
+CMAKE_BUILD_RPATH_USE_ORIGIN
+----------------------------
+
+.. versionadded:: 3.14
+
+Whether to use relative paths for the build ``RPATH``.
+
+This is used to initialize the :prop_tgt:`BUILD_RPATH_USE_ORIGIN` target
+property for all targets, see that property for more details.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_BUILD_TOOL.rst b/share/cmake-3.22/Help/variable/CMAKE_BUILD_TOOL.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_BUILD_TOOL.rst
rename to share/cmake-3.22/Help/variable/CMAKE_BUILD_TOOL.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_BUILD_TYPE.rst b/share/cmake-3.22/Help/variable/CMAKE_BUILD_TYPE.rst
new file mode 100644
index 0000000..bb95436
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_BUILD_TYPE.rst
@@ -0,0 +1,21 @@
+CMAKE_BUILD_TYPE
+----------------
+
+Specifies the build type on single-configuration generators (e.g.
+:ref:`Makefile Generators` or :generator:`Ninja`).  Typical values include
+``Debug``, ``Release``, ``RelWithDebInfo`` and ``MinSizeRel``, but custom
+build types can also be defined.
+
+This variable is initialized by the first :command:`project` or
+:command:`enable_language` command called in a project when a new build
+tree is first created.  If the :envvar:`CMAKE_BUILD_TYPE` environment
+variable is set, its value is used.  Otherwise, a toolchain-specific
+default is chosen when a language is enabled.  The default value is often
+an empty string, but this is usually not desirable and one of the other
+standard build types is usually more appropriate.
+
+Depending on the situation, the value of this variable may be treated
+case-sensitively or case-insensitively.  See :ref:`Build Configurations`
+for discussion of this and other related topics.
+
+For multi-config generators, see :variable:`CMAKE_CONFIGURATION_TYPES`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_BUILD_WITH_INSTALL_NAME_DIR.rst b/share/cmake-3.22/Help/variable/CMAKE_BUILD_WITH_INSTALL_NAME_DIR.rst
new file mode 100644
index 0000000..5ba775c
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_BUILD_WITH_INSTALL_NAME_DIR.rst
@@ -0,0 +1,9 @@
+CMAKE_BUILD_WITH_INSTALL_NAME_DIR
+---------------------------------
+
+.. versionadded:: 3.9
+
+Whether to use :prop_tgt:`INSTALL_NAME_DIR` on targets in the build tree.
+
+This variable is used to initialize the :prop_tgt:`BUILD_WITH_INSTALL_NAME_DIR`
+property on all targets.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_BUILD_WITH_INSTALL_RPATH.rst b/share/cmake-3.22/Help/variable/CMAKE_BUILD_WITH_INSTALL_RPATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_BUILD_WITH_INSTALL_RPATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_BUILD_WITH_INSTALL_RPATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CACHEFILE_DIR.rst b/share/cmake-3.22/Help/variable/CMAKE_CACHEFILE_DIR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_CACHEFILE_DIR.rst
rename to share/cmake-3.22/Help/variable/CMAKE_CACHEFILE_DIR.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CACHE_MAJOR_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_CACHE_MAJOR_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_CACHE_MAJOR_VERSION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_CACHE_MAJOR_VERSION.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CACHE_MINOR_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_CACHE_MINOR_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_CACHE_MINOR_VERSION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_CACHE_MINOR_VERSION.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CACHE_PATCH_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_CACHE_PATCH_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_CACHE_PATCH_VERSION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_CACHE_PATCH_VERSION.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CFG_INTDIR.rst b/share/cmake-3.22/Help/variable/CMAKE_CFG_INTDIR.rst
new file mode 100644
index 0000000..43668ea
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CFG_INTDIR.rst
@@ -0,0 +1,53 @@
+CMAKE_CFG_INTDIR
+----------------
+
+.. deprecated:: 3.21
+
+  This variable has poor support on :generator:`Ninja Multi-Config`, and
+  predates the existence of the :genex:`$<CONFIG>` generator expression. Use
+  ``$<CONFIG>`` instead.
+
+Build-time reference to per-configuration output subdirectory.
+
+For native build systems supporting multiple configurations in the
+build tree (such as :ref:`Visual Studio Generators` and :generator:`Xcode`),
+the value is a reference to a build-time variable specifying the name
+of the per-configuration output subdirectory.  On :ref:`Makefile Generators`
+this evaluates to `.` because there is only one configuration in a build tree.
+Example values:
+
+::
+
+  $(ConfigurationName) = Visual Studio 9
+  $(Configuration)     = Visual Studio 10
+  $(CONFIGURATION)     = Xcode
+  .                    = Make-based tools
+  .                    = Ninja
+  ${CONFIGURATION}     = Ninja Multi-Config
+
+Since these values are evaluated by the native build system, this
+variable is suitable only for use in command lines that will be
+evaluated at build time.  Example of intended usage:
+
+::
+
+  add_executable(mytool mytool.c)
+  add_custom_command(
+    OUTPUT out.txt
+    COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mytool
+            ${CMAKE_CURRENT_SOURCE_DIR}/in.txt out.txt
+    DEPENDS mytool in.txt
+    )
+  add_custom_target(drive ALL DEPENDS out.txt)
+
+Note that ``CMAKE_CFG_INTDIR`` is no longer necessary for this purpose but
+has been left for compatibility with existing projects.  Instead
+:command:`add_custom_command` recognizes executable target names in its
+``COMMAND`` option, so
+``${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mytool`` can be replaced
+by just ``mytool``.
+
+This variable is read-only.  Setting it is undefined behavior.  In
+multi-configuration build systems the value of this variable is passed
+as the value of preprocessor symbol ``CMAKE_INTDIR`` to the compilation
+of all source files.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CLANG_VFS_OVERLAY.rst b/share/cmake-3.22/Help/variable/CMAKE_CLANG_VFS_OVERLAY.rst
new file mode 100644
index 0000000..56ac328
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CLANG_VFS_OVERLAY.rst
@@ -0,0 +1,9 @@
+CMAKE_CLANG_VFS_OVERLAY
+-----------------------
+
+.. versionadded:: 3.19
+
+When cross compiling for windows with clang-cl, this variable can be an
+absolute path pointing to a clang virtual file system yaml file, which
+will enable clang-cl to resolve windows header names on a case sensitive
+file system.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CL_64.rst b/share/cmake-3.22/Help/variable/CMAKE_CL_64.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_CL_64.rst
rename to share/cmake-3.22/Help/variable/CMAKE_CL_64.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst b/share/cmake-3.22/Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst
new file mode 100644
index 0000000..0b2b0a0
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst
@@ -0,0 +1,15 @@
+CMAKE_CODEBLOCKS_COMPILER_ID
+----------------------------
+
+.. versionadded:: 3.11
+
+Change the compiler id in the generated CodeBlocks project files.
+
+CodeBlocks uses its own compiler id string which differs from
+:variable:`CMAKE_<LANG>_COMPILER_ID`.  If this variable is left empty,
+CMake tries to recognize the CodeBlocks compiler id automatically.
+Otherwise the specified string is used in the CodeBlocks project file.
+See the CodeBlocks documentation for valid compiler id strings.
+
+Other IDEs like QtCreator that also use the CodeBlocks generator may ignore
+this setting.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES.rst b/share/cmake-3.22/Help/variable/CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES.rst
new file mode 100644
index 0000000..dbb8606
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES.rst
@@ -0,0 +1,9 @@
+CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES
+---------------------------------------
+
+.. versionadded:: 3.10
+
+Change the way the CodeBlocks generator creates project files.
+
+If this variable evaluates to ``ON`` the generator excludes from
+the project file any files that are located outside the project root.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CODELITE_USE_TARGETS.rst b/share/cmake-3.22/Help/variable/CMAKE_CODELITE_USE_TARGETS.rst
new file mode 100644
index 0000000..21af5f7
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CODELITE_USE_TARGETS.rst
@@ -0,0 +1,10 @@
+CMAKE_CODELITE_USE_TARGETS
+--------------------------
+
+.. versionadded:: 3.7
+
+Change the way the CodeLite generator creates projectfiles.
+
+If this variable evaluates to ``ON`` at the end of the top-level
+``CMakeLists.txt`` file, the generator creates projectfiles based on targets
+rather than projects.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_COLOR_MAKEFILE.rst b/share/cmake-3.22/Help/variable/CMAKE_COLOR_MAKEFILE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_COLOR_MAKEFILE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_COLOR_MAKEFILE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_COMMAND.rst b/share/cmake-3.22/Help/variable/CMAKE_COMMAND.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_COMMAND.rst
rename to share/cmake-3.22/Help/variable/CMAKE_COMMAND.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_COMPILER_2005.rst b/share/cmake-3.22/Help/variable/CMAKE_COMPILER_2005.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_COMPILER_2005.rst
rename to share/cmake-3.22/Help/variable/CMAKE_COMPILER_2005.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_COMPILER_IS_GNUCC.rst b/share/cmake-3.22/Help/variable/CMAKE_COMPILER_IS_GNUCC.rst
new file mode 100644
index 0000000..91cf848
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_COMPILER_IS_GNUCC.rst
@@ -0,0 +1,7 @@
+CMAKE_COMPILER_IS_GNUCC
+-----------------------
+
+.. versionadded:: 3.7
+
+True if the ``C`` compiler is GNU.
+Use :variable:`CMAKE_C_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` instead.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_COMPILER_IS_GNUCXX.rst b/share/cmake-3.22/Help/variable/CMAKE_COMPILER_IS_GNUCXX.rst
new file mode 100644
index 0000000..e67718a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_COMPILER_IS_GNUCXX.rst
@@ -0,0 +1,7 @@
+CMAKE_COMPILER_IS_GNUCXX
+------------------------
+
+.. versionadded:: 3.7
+
+True if the C++ (``CXX``) compiler is GNU.
+Use :variable:`CMAKE_CXX_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` instead.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_COMPILER_IS_GNUG77.rst b/share/cmake-3.22/Help/variable/CMAKE_COMPILER_IS_GNUG77.rst
new file mode 100644
index 0000000..f69c01a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_COMPILER_IS_GNUG77.rst
@@ -0,0 +1,7 @@
+CMAKE_COMPILER_IS_GNUG77
+------------------------
+
+.. versionadded:: 3.7
+
+True if the ``Fortran`` compiler is GNU.
+Use :variable:`CMAKE_Fortran_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` instead.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY.rst b/share/cmake-3.22/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY.rst
new file mode 100644
index 0000000..11f52c7
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY.rst
@@ -0,0 +1,10 @@
+CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY
+----------------------------------
+
+.. versionadded:: 3.1
+
+Output directory for MS debug symbol ``.pdb`` files
+generated by the compiler while building source files.
+
+This variable is used to initialize the
+:prop_tgt:`COMPILE_PDB_OUTPUT_DIRECTORY` property on all the targets.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.22/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
new file mode 100644
index 0000000..99d0bdc
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
@@ -0,0 +1,13 @@
+CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>
+-------------------------------------------
+
+.. versionadded:: 3.1
+
+Per-configuration output directory for MS debug symbol ``.pdb`` files
+generated by the compiler while building source files.
+
+This is a per-configuration version of
+:variable:`CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY`.
+This variable is used to initialize the
+:prop_tgt:`COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>`
+property on all the targets.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CONFIGURATION_TYPES.rst b/share/cmake-3.22/Help/variable/CMAKE_CONFIGURATION_TYPES.rst
new file mode 100644
index 0000000..75ff8a1
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CONFIGURATION_TYPES.rst
@@ -0,0 +1,20 @@
+CMAKE_CONFIGURATION_TYPES
+-------------------------
+
+Specifies the available build types (configurations) on multi-config
+generators (e.g. :ref:`Visual Studio <Visual Studio Generators>`,
+:generator:`Xcode`, or :generator:`Ninja Multi-Config`).  Typical values
+include ``Debug``, ``Release``, ``RelWithDebInfo`` and ``MinSizeRel``,
+but custom build types can also be defined.
+
+This variable is initialized by the first :command:`project` or
+:command:`enable_language` command called in a project when a new build
+tree is first created.  If the :envvar:`CMAKE_CONFIGURATION_TYPES`
+environment variable is set, its value is used.  Otherwise, the default
+value is generator-specific.
+
+Depending on the situation, the values in this variable may be treated
+case-sensitively or case-insensitively.  See :ref:`Build Configurations`
+for discussion of this and other related topics.
+
+For single-config generators, see :variable:`CMAKE_BUILD_TYPE`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CONFIG_POSTFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_CONFIG_POSTFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_CONFIG_POSTFIX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_CONFIG_POSTFIX.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CPACK_COMMAND.rst b/share/cmake-3.22/Help/variable/CMAKE_CPACK_COMMAND.rst
new file mode 100644
index 0000000..3a81d68
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CPACK_COMMAND.rst
@@ -0,0 +1,10 @@
+CMAKE_CPACK_COMMAND
+-------------------
+
+.. versionadded:: 3.13
+
+Full path to :manual:`cpack(1)` command installed with CMake.
+
+This is the full path to the CPack executable :manual:`cpack(1)` which is
+useful from custom commands that want to use the :manual:`cmake(1)` ``-E``
+option for portable system commands.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CROSSCOMPILING.rst b/share/cmake-3.22/Help/variable/CMAKE_CROSSCOMPILING.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_CROSSCOMPILING.rst
rename to share/cmake-3.22/Help/variable/CMAKE_CROSSCOMPILING.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CROSSCOMPILING_EMULATOR.rst b/share/cmake-3.22/Help/variable/CMAKE_CROSSCOMPILING_EMULATOR.rst
new file mode 100644
index 0000000..815da00
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CROSSCOMPILING_EMULATOR.rst
@@ -0,0 +1,18 @@
+CMAKE_CROSSCOMPILING_EMULATOR
+-----------------------------
+
+.. versionadded:: 3.3
+
+This variable is only used when :variable:`CMAKE_CROSSCOMPILING` is on. It
+should point to a command on the host system that can run executable built
+for the target system.
+
+If this variable contains a :ref:`semicolon-separated list <CMake Language
+Lists>`, then the first value is the command and remaining values are its
+arguments.
+
+The command will be used to run :command:`try_run` generated executables,
+which avoids manual population of the ``TryRunResults.cmake`` file.
+
+It is also used as the default value for the
+:prop_tgt:`CROSSCOMPILING_EMULATOR` target property of executables.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CROSS_CONFIGS.rst b/share/cmake-3.22/Help/variable/CMAKE_CROSS_CONFIGS.rst
new file mode 100644
index 0000000..be921d6
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CROSS_CONFIGS.rst
@@ -0,0 +1,17 @@
+CMAKE_CROSS_CONFIGS
+-------------------
+
+.. versionadded:: 3.17
+
+Specifies a :ref:`semicolon-separated list <CMake Language Lists>` of
+configurations available from all ``build-<Config>.ninja`` files in the
+:generator:`Ninja Multi-Config` generator.  This variable activates
+cross-config mode. Targets from each config specified in this variable can be
+built from any ``build-<Config>.ninja`` file. Custom commands will use the
+configuration native to ``build-<Config>.ninja``. If it is set to ``all``, all
+configurations from :variable:`CMAKE_CONFIGURATION_TYPES` are cross-configs. If
+it is not specified, or empty, each ``build-<Config>.ninja`` file will only
+contain build rules for its own configuration.
+
+The value of this variable must be a subset of
+:variable:`CMAKE_CONFIGURATION_TYPES`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CTEST_ARGUMENTS.rst b/share/cmake-3.22/Help/variable/CMAKE_CTEST_ARGUMENTS.rst
new file mode 100644
index 0000000..4dfc8fe
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CTEST_ARGUMENTS.rst
@@ -0,0 +1,8 @@
+CMAKE_CTEST_ARGUMENTS
+---------------------
+
+.. versionadded:: 3.17
+
+Set this to a :ref:`semicolon-separated list <CMake Language Lists>` of
+command-line arguments to pass to :manual:`ctest(1)` when running tests
+through the ``test`` (or ``RUN_TESTS``) target of the generated build system.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CTEST_COMMAND.rst b/share/cmake-3.22/Help/variable/CMAKE_CTEST_COMMAND.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_CTEST_COMMAND.rst
rename to share/cmake-3.22/Help/variable/CMAKE_CTEST_COMMAND.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CUDA_ARCHITECTURES.rst b/share/cmake-3.22/Help/variable/CMAKE_CUDA_ARCHITECTURES.rst
new file mode 100644
index 0000000..d885516
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CUDA_ARCHITECTURES.rst
@@ -0,0 +1,35 @@
+CMAKE_CUDA_ARCHITECTURES
+------------------------
+
+.. versionadded:: 3.18
+
+Default value for :prop_tgt:`CUDA_ARCHITECTURES` property of targets.
+
+Initialized by the :envvar:`CUDAARCHS` environment variable if set.
+Otherwise as follows depending on :variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>`:
+
+- For ``Clang``: the oldest architecture that works.
+
+- For ``NVIDIA``: the default architecture chosen by the compiler.
+  See policy :policy:`CMP0104`.
+
+Users are encouraged to override this, as the default varies across compilers
+and compiler versions.
+
+This variable is used to initialize the :prop_tgt:`CUDA_ARCHITECTURES` property
+on all targets. See the target property for additional information.
+
+Examples
+^^^^^^^^
+
+.. code-block:: cmake
+
+  cmake_minimum_required(VERSION)
+
+  if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
+    set(CMAKE_CUDA_ARCHITECTURES 75)
+  endif()
+
+  project(example LANGUAGES CUDA)
+
+``CMAKE_CUDA_ARCHITECTURES`` will default to ``75`` unless overridden by the user.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CUDA_COMPILE_FEATURES.rst b/share/cmake-3.22/Help/variable/CMAKE_CUDA_COMPILE_FEATURES.rst
new file mode 100644
index 0000000..c1c270c
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CUDA_COMPILE_FEATURES.rst
@@ -0,0 +1,13 @@
+CMAKE_CUDA_COMPILE_FEATURES
+---------------------------
+
+.. versionadded:: 3.17
+
+List of features known to the CUDA compiler
+
+These features are known to be available for use with the CUDA compiler. This
+list is a subset of the features listed in the
+:prop_gbl:`CMAKE_CUDA_KNOWN_FEATURES` global property.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CUDA_EXTENSIONS.rst b/share/cmake-3.22/Help/variable/CMAKE_CUDA_EXTENSIONS.rst
new file mode 100644
index 0000000..12749ce
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CUDA_EXTENSIONS.rst
@@ -0,0 +1,10 @@
+CMAKE_CUDA_EXTENSIONS
+---------------------
+
+.. versionadded:: 3.8
+
+Default value for :prop_tgt:`CUDA_EXTENSIONS` target property if set when a
+target is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst b/share/cmake-3.22/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst
new file mode 100644
index 0000000..9817b1a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst
@@ -0,0 +1,29 @@
+CMAKE_CUDA_HOST_COMPILER
+------------------------
+
+.. versionadded:: 3.10
+
+When :variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is
+``NVIDIA``, ``CMAKE_CUDA_HOST_COMPILER`` selects the compiler executable to use
+when compiling host code for ``CUDA`` language files.
+This maps to the ``nvcc -ccbin`` option.
+
+The ``CMAKE_CUDA_HOST_COMPILER`` variable may be set explicitly before CUDA is
+first enabled by a :command:`project` or :command:`enable_language` command.
+This can be done via ``-DCMAKE_CUDA_HOST_COMPILER=...`` on the command line
+or in a :ref:`toolchain file <Cross Compiling Toolchain>`.  Or, one may set
+the :envvar:`CUDAHOSTCXX` environment variable to provide a default value.
+
+Once the CUDA language is enabled, the ``CMAKE_CUDA_HOST_COMPILER`` variable
+is read-only and changes to it are undefined behavior.
+
+.. note::
+
+  Since ``CMAKE_CUDA_HOST_COMPILER`` is meaningful only when the
+  :variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is ``NVIDIA``,
+  it does not make sense to set ``CMAKE_CUDA_HOST_COMPILER`` without also
+  setting ``CMAKE_CUDA_COMPILER`` to NVCC.
+
+.. note::
+
+  Ignored when using :ref:`Visual Studio Generators`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS.rst b/share/cmake-3.22/Help/variable/CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS.rst
new file mode 100644
index 0000000..474baee
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS.rst
@@ -0,0 +1,8 @@
+CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS
+---------------------------------
+
+.. versionadded:: 3.16
+
+Default value for :prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` target
+property. This variable is used to initialize the property on each target as
+it is created.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CUDA_RUNTIME_LIBRARY.rst b/share/cmake-3.22/Help/variable/CMAKE_CUDA_RUNTIME_LIBRARY.rst
new file mode 100644
index 0000000..69b9d93
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CUDA_RUNTIME_LIBRARY.rst
@@ -0,0 +1,27 @@
+CMAKE_CUDA_RUNTIME_LIBRARY
+--------------------------
+
+.. versionadded:: 3.17
+
+Select the CUDA runtime library for use when compiling and linking CUDA.
+This variable is used to initialize the :prop_tgt:`CUDA_RUNTIME_LIBRARY`
+property on all targets as they are created.
+
+The allowed case insensitive values are:
+
+.. include:: ../prop_tgt/CUDA_RUNTIME_LIBRARY-VALUES.txt
+
+Contents of ``CMAKE_CUDA_RUNTIME_LIBRARY`` may use
+:manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+If this variable is not set then the :prop_tgt:`CUDA_RUNTIME_LIBRARY` target
+property will not be set automatically.  If that property is not set then
+CMake uses an appropriate default value based on the compiler to select the
+CUDA runtime library.
+
+.. note::
+
+  This property has effect only when the ``CUDA`` language is enabled. To
+  control the CUDA runtime linking when only using the CUDA SDK with the
+  ``C`` or ``C++`` language we recommend using the :module:`FindCUDAToolkit`
+  module.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CUDA_SEPARABLE_COMPILATION.rst b/share/cmake-3.22/Help/variable/CMAKE_CUDA_SEPARABLE_COMPILATION.rst
new file mode 100644
index 0000000..3dbaef9
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CUDA_SEPARABLE_COMPILATION.rst
@@ -0,0 +1,8 @@
+CMAKE_CUDA_SEPARABLE_COMPILATION
+--------------------------------
+
+.. versionadded:: 3.11
+
+Default value for :prop_tgt:`CUDA_SEPARABLE_COMPILATION` target property.
+This variable is used to initialize the property on each target as it is
+created.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CUDA_STANDARD.rst b/share/cmake-3.22/Help/variable/CMAKE_CUDA_STANDARD.rst
new file mode 100644
index 0000000..ee9395a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CUDA_STANDARD.rst
@@ -0,0 +1,10 @@
+CMAKE_CUDA_STANDARD
+-------------------
+
+.. versionadded:: 3.8
+
+Default value for :prop_tgt:`CUDA_STANDARD` target property if set when a
+target is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CUDA_STANDARD_REQUIRED.rst b/share/cmake-3.22/Help/variable/CMAKE_CUDA_STANDARD_REQUIRED.rst
new file mode 100644
index 0000000..0c85a04
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CUDA_STANDARD_REQUIRED.rst
@@ -0,0 +1,10 @@
+CMAKE_CUDA_STANDARD_REQUIRED
+----------------------------
+
+.. versionadded:: 3.8
+
+Default value for :prop_tgt:`CUDA_STANDARD_REQUIRED` target property if set
+when a target is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES.rst b/share/cmake-3.22/Help/variable/CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES.rst
new file mode 100644
index 0000000..e586dab
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES.rst
@@ -0,0 +1,9 @@
+CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES
+--------------------------------------
+
+.. versionadded:: 3.8
+
+When the ``CUDA`` language has been enabled, this provides a
+:ref:`semicolon-separated list <CMake Language Lists>` of include directories provided
+by the CUDA Toolkit.  The value may be useful for C++ source files
+to include CUDA headers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CURRENT_BINARY_DIR.rst b/share/cmake-3.22/Help/variable/CMAKE_CURRENT_BINARY_DIR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_CURRENT_BINARY_DIR.rst
rename to share/cmake-3.22/Help/variable/CMAKE_CURRENT_BINARY_DIR.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CURRENT_FUNCTION.rst b/share/cmake-3.22/Help/variable/CMAKE_CURRENT_FUNCTION.rst
new file mode 100644
index 0000000..5d1a4e9
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CURRENT_FUNCTION.rst
@@ -0,0 +1,12 @@
+CMAKE_CURRENT_FUNCTION
+----------------------
+
+.. versionadded:: 3.17
+
+When executing code inside a :command:`function`, this variable
+contains the name of the current function.  It can be useful for
+diagnostic or debug messages.
+
+See also :variable:`CMAKE_CURRENT_FUNCTION_LIST_DIR`,
+:variable:`CMAKE_CURRENT_FUNCTION_LIST_FILE` and
+:variable:`CMAKE_CURRENT_FUNCTION_LIST_LINE`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_DIR.rst b/share/cmake-3.22/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_DIR.rst
new file mode 100644
index 0000000..f8f553d
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_DIR.rst
@@ -0,0 +1,43 @@
+CMAKE_CURRENT_FUNCTION_LIST_DIR
+-------------------------------
+
+.. versionadded:: 3.17
+
+When executing code inside a :command:`function`, this variable
+contains the full directory of the listfile that defined the current function.
+
+It is quite common practice in CMake for modules to use some additional files,
+such as templates to be copied in after substituting CMake variables.
+In such cases, a function needs to know where to locate those files in a way
+that doesn't depend on where the function is called.  Without
+``CMAKE_CURRENT_FUNCTION_LIST_DIR``, the code to do that would typically use
+the following pattern:
+
+.. code-block:: cmake
+
+  set(_THIS_MODULE_BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
+
+  function(foo)
+    configure_file(
+      "${_THIS_MODULE_BASE_DIR}/some.template.in"
+      some.output
+    )
+  endfunction()
+
+Using ``CMAKE_CURRENT_FUNCTION_LIST_DIR`` inside the function instead
+eliminates the need for the extra variable which would otherwise be visible
+outside the function's scope.
+The above example can be written in the more concise and more robust form:
+
+.. code-block:: cmake
+
+  function(foo)
+    configure_file(
+      "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/some.template.in"
+      some.output
+    )
+  endfunction()
+
+See also :variable:`CMAKE_CURRENT_FUNCTION`,
+:variable:`CMAKE_CURRENT_FUNCTION_LIST_FILE` and
+:variable:`CMAKE_CURRENT_FUNCTION_LIST_LINE`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_FILE.rst b/share/cmake-3.22/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_FILE.rst
new file mode 100644
index 0000000..437dfec
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_FILE.rst
@@ -0,0 +1,11 @@
+CMAKE_CURRENT_FUNCTION_LIST_FILE
+--------------------------------
+
+.. versionadded:: 3.17
+
+When executing code inside a :command:`function`, this variable
+contains the full path to the listfile that defined the current function.
+
+See also :variable:`CMAKE_CURRENT_FUNCTION`,
+:variable:`CMAKE_CURRENT_FUNCTION_LIST_DIR` and
+:variable:`CMAKE_CURRENT_FUNCTION_LIST_LINE`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_LINE.rst b/share/cmake-3.22/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_LINE.rst
new file mode 100644
index 0000000..2fc7012
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_LINE.rst
@@ -0,0 +1,12 @@
+CMAKE_CURRENT_FUNCTION_LIST_LINE
+--------------------------------
+
+.. versionadded:: 3.17
+
+When executing code inside a :command:`function`, this variable
+contains the line number in the listfile where the current function
+was defined.
+
+See also :variable:`CMAKE_CURRENT_FUNCTION`,
+:variable:`CMAKE_CURRENT_FUNCTION_LIST_DIR` and
+:variable:`CMAKE_CURRENT_FUNCTION_LIST_FILE`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CURRENT_LIST_DIR.rst b/share/cmake-3.22/Help/variable/CMAKE_CURRENT_LIST_DIR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_CURRENT_LIST_DIR.rst
rename to share/cmake-3.22/Help/variable/CMAKE_CURRENT_LIST_DIR.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CURRENT_LIST_FILE.rst b/share/cmake-3.22/Help/variable/CMAKE_CURRENT_LIST_FILE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_CURRENT_LIST_FILE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_CURRENT_LIST_FILE.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CURRENT_LIST_LINE.rst b/share/cmake-3.22/Help/variable/CMAKE_CURRENT_LIST_LINE.rst
new file mode 100644
index 0000000..7f839c2
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CURRENT_LIST_LINE.rst
@@ -0,0 +1,11 @@
+CMAKE_CURRENT_LIST_LINE
+-----------------------
+
+The line number of the current file being processed.
+
+This is the line number of the file currently being processed by
+cmake.
+
+If CMake is currently processing deferred calls scheduled by
+the :command:`cmake_language(DEFER)` command, this variable
+evaluates to ``DEFERRED`` instead of a specific line number.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_CURRENT_SOURCE_DIR.rst b/share/cmake-3.22/Help/variable/CMAKE_CURRENT_SOURCE_DIR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_CURRENT_SOURCE_DIR.rst
rename to share/cmake-3.22/Help/variable/CMAKE_CURRENT_SOURCE_DIR.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst b/share/cmake-3.22/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst
new file mode 100644
index 0000000..8fcfbae
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst
@@ -0,0 +1,13 @@
+CMAKE_CXX_COMPILE_FEATURES
+--------------------------
+
+.. versionadded:: 3.1
+
+List of features known to the C++ compiler
+
+These features are known to be available for use with the C++ compiler. This
+list is a subset of the features listed in the
+:prop_gbl:`CMAKE_CXX_KNOWN_FEATURES` global property.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CXX_EXTENSIONS.rst b/share/cmake-3.22/Help/variable/CMAKE_CXX_EXTENSIONS.rst
new file mode 100644
index 0000000..017f503
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CXX_EXTENSIONS.rst
@@ -0,0 +1,10 @@
+CMAKE_CXX_EXTENSIONS
+--------------------
+
+.. versionadded:: 3.1
+
+Default value for :prop_tgt:`CXX_EXTENSIONS` target property if set when a
+target is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CXX_STANDARD.rst b/share/cmake-3.22/Help/variable/CMAKE_CXX_STANDARD.rst
new file mode 100644
index 0000000..33eb89e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CXX_STANDARD.rst
@@ -0,0 +1,10 @@
+CMAKE_CXX_STANDARD
+------------------
+
+.. versionadded:: 3.1
+
+Default value for :prop_tgt:`CXX_STANDARD` target property if set when a target
+is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_CXX_STANDARD_REQUIRED.rst b/share/cmake-3.22/Help/variable/CMAKE_CXX_STANDARD_REQUIRED.rst
new file mode 100644
index 0000000..1c6c0cc
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_CXX_STANDARD_REQUIRED.rst
@@ -0,0 +1,10 @@
+CMAKE_CXX_STANDARD_REQUIRED
+---------------------------
+
+.. versionadded:: 3.1
+
+Default value for :prop_tgt:`CXX_STANDARD_REQUIRED` target property if set when
+a target is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_C_COMPILE_FEATURES.rst b/share/cmake-3.22/Help/variable/CMAKE_C_COMPILE_FEATURES.rst
new file mode 100644
index 0000000..2b306a3
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_C_COMPILE_FEATURES.rst
@@ -0,0 +1,13 @@
+CMAKE_C_COMPILE_FEATURES
+------------------------
+
+.. versionadded:: 3.1
+
+List of features known to the C compiler
+
+These features are known to be available for use with the C compiler. This
+list is a subset of the features listed in the
+:prop_gbl:`CMAKE_C_KNOWN_FEATURES` global property.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_C_EXTENSIONS.rst b/share/cmake-3.22/Help/variable/CMAKE_C_EXTENSIONS.rst
new file mode 100644
index 0000000..6680521
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_C_EXTENSIONS.rst
@@ -0,0 +1,10 @@
+CMAKE_C_EXTENSIONS
+------------------
+
+.. versionadded:: 3.1
+
+Default value for :prop_tgt:`C_EXTENSIONS` target property if set when a target
+is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_C_STANDARD.rst b/share/cmake-3.22/Help/variable/CMAKE_C_STANDARD.rst
new file mode 100644
index 0000000..ec1e513
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_C_STANDARD.rst
@@ -0,0 +1,10 @@
+CMAKE_C_STANDARD
+----------------
+
+.. versionadded:: 3.1
+
+Default value for :prop_tgt:`C_STANDARD` target property if set when a target
+is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_C_STANDARD_REQUIRED.rst b/share/cmake-3.22/Help/variable/CMAKE_C_STANDARD_REQUIRED.rst
new file mode 100644
index 0000000..2bd9d51
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_C_STANDARD_REQUIRED.rst
@@ -0,0 +1,10 @@
+CMAKE_C_STANDARD_REQUIRED
+-------------------------
+
+.. versionadded:: 3.1
+
+Default value for :prop_tgt:`C_STANDARD_REQUIRED` target property if set when
+a target is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_DEBUG_POSTFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_DEBUG_POSTFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_DEBUG_POSTFIX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_DEBUG_POSTFIX.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_DEBUG_TARGET_PROPERTIES.rst b/share/cmake-3.22/Help/variable/CMAKE_DEBUG_TARGET_PROPERTIES.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_DEBUG_TARGET_PROPERTIES.rst
rename to share/cmake-3.22/Help/variable/CMAKE_DEBUG_TARGET_PROPERTIES.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_DEFAULT_BUILD_TYPE.rst b/share/cmake-3.22/Help/variable/CMAKE_DEFAULT_BUILD_TYPE.rst
new file mode 100644
index 0000000..cadbf3a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_DEFAULT_BUILD_TYPE.rst
@@ -0,0 +1,14 @@
+CMAKE_DEFAULT_BUILD_TYPE
+------------------------
+
+.. versionadded:: 3.17
+
+Specifies the configuration to use by default in a ``build.ninja`` file in the
+:generator:`Ninja Multi-Config` generator. If this variable is specified,
+``build.ninja`` uses build rules from ``build-<Config>.ninja`` by default. All
+custom commands are executed with this configuration. If the variable is not
+specified, the first item from :variable:`CMAKE_CONFIGURATION_TYPES` is used
+instead.
+
+The value of this variable must be one of the items from
+:variable:`CMAKE_CONFIGURATION_TYPES`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_DEFAULT_CONFIGS.rst b/share/cmake-3.22/Help/variable/CMAKE_DEFAULT_CONFIGS.rst
new file mode 100644
index 0000000..65a5f0d
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_DEFAULT_CONFIGS.rst
@@ -0,0 +1,21 @@
+CMAKE_DEFAULT_CONFIGS
+---------------------
+
+.. versionadded:: 3.17
+
+Specifies a :ref:`semicolon-separated list <CMake Language Lists>` of configurations
+to build for a target in ``build.ninja`` if no ``:<Config>`` suffix is specified in
+the :generator:`Ninja Multi-Config` generator. If it is set to ``all``, all
+configurations from :variable:`CMAKE_CROSS_CONFIGS` are used. If it is not
+specified, it defaults to :variable:`CMAKE_DEFAULT_BUILD_TYPE`.
+
+For example, if you set :variable:`CMAKE_DEFAULT_BUILD_TYPE` to ``Release``,
+but set :variable:`CMAKE_DEFAULT_CONFIGS` to ``Debug`` or ``all``, all
+``<target>`` aliases in ``build.ninja`` will resolve to ``<target>:Debug`` or
+``<target>:all``, but custom commands will still use the ``Release``
+configuration.
+
+The value of this variable must be a subset of :variable:`CMAKE_CROSS_CONFIGS`
+or be the same as :variable:`CMAKE_DEFAULT_BUILD_TYPE`. It must not be
+specified if :variable:`CMAKE_DEFAULT_BUILD_TYPE` or
+:variable:`CMAKE_CROSS_CONFIGS` is not used.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_DEPENDS_IN_PROJECT_ONLY.rst b/share/cmake-3.22/Help/variable/CMAKE_DEPENDS_IN_PROJECT_ONLY.rst
new file mode 100644
index 0000000..bfe9402
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_DEPENDS_IN_PROJECT_ONLY.rst
@@ -0,0 +1,12 @@
+CMAKE_DEPENDS_IN_PROJECT_ONLY
+-----------------------------
+
+.. versionadded:: 3.6
+
+When set to ``TRUE`` in a directory, the build system produced by the
+:ref:`Makefile Generators` is set up to only consider dependencies on source
+files that appear either in the source or in the binary directories.  Changes
+to source files outside of these directories will not cause rebuilds.
+
+This should be used carefully in cases where some source files are picked up
+through external headers during the build.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_DEPENDS_USE_COMPILER.rst b/share/cmake-3.22/Help/variable/CMAKE_DEPENDS_USE_COMPILER.rst
new file mode 100644
index 0000000..bdad59e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_DEPENDS_USE_COMPILER.rst
@@ -0,0 +1,9 @@
+CMAKE_DEPENDS_USE_COMPILER
+--------------------------
+
+.. versionadded:: 3.20
+
+For the :ref:`Makefile Generators`, source dependencies are now, for a
+selection of compilers, generated by the compiler itself. By defining this
+variable with value ``FALSE``, you can restore the legacy behavior (i.e. using
+``CMake`` for dependencies discovery).
diff --git a/share/cmake-3.22/Help/variable/CMAKE_DIRECTORY_LABELS.rst b/share/cmake-3.22/Help/variable/CMAKE_DIRECTORY_LABELS.rst
new file mode 100644
index 0000000..81d6dd1
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_DIRECTORY_LABELS.rst
@@ -0,0 +1,8 @@
+CMAKE_DIRECTORY_LABELS
+-----------------------
+
+.. versionadded:: 3.10
+
+Specify labels for the current directory.
+
+This is used to initialize the :prop_dir:`LABELS` directory property.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.rst b/share/cmake-3.22/Help/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.rst
new file mode 100644
index 0000000..f77e939
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.rst
@@ -0,0 +1,18 @@
+CMAKE_DISABLE_FIND_PACKAGE_<PackageName>
+----------------------------------------
+
+Variable for disabling :command:`find_package` calls.
+
+Every non-``REQUIRED`` :command:`find_package` call in a project can be
+disabled by setting the variable
+``CMAKE_DISABLE_FIND_PACKAGE_<PackageName>`` to ``TRUE``.
+This can be used to build a project without an optional package,
+although that package is installed.
+
+This switch should be used during the initial CMake run.  Otherwise if
+the package has already been found in a previous CMake run, the
+variables which have been stored in the cache will still be there.  In
+that case it is recommended to remove the cache variables for this
+package from the cache using the cache editor or :manual:`cmake(1)` ``-U``
+
+See also the :variable:`CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>` variable.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_DISABLE_PRECOMPILE_HEADERS.rst b/share/cmake-3.22/Help/variable/CMAKE_DISABLE_PRECOMPILE_HEADERS.rst
new file mode 100644
index 0000000..cf52776
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_DISABLE_PRECOMPILE_HEADERS.rst
@@ -0,0 +1,8 @@
+CMAKE_DISABLE_PRECOMPILE_HEADERS
+--------------------------------
+
+.. versionadded:: 3.16
+
+Default value for :prop_tgt:`DISABLE_PRECOMPILE_HEADERS` of targets.
+
+By default ``CMAKE_DISABLE_PRECOMPILE_HEADERS`` is ``OFF``.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_DL_LIBS.rst b/share/cmake-3.22/Help/variable/CMAKE_DL_LIBS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_DL_LIBS.rst
rename to share/cmake-3.22/Help/variable/CMAKE_DL_LIBS.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK.rst b/share/cmake-3.22/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK.rst
new file mode 100644
index 0000000..29249d6
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK.rst
@@ -0,0 +1,18 @@
+CMAKE_DOTNET_TARGET_FRAMEWORK
+-----------------------------
+
+.. versionadded:: 3.17
+
+Default value for :prop_tgt:`DOTNET_TARGET_FRAMEWORK` property	of
+targets.
+
+This variable is used to initialize the
+:prop_tgt:`DOTNET_TARGET_FRAMEWORK` property on all targets. See that
+target property for additional information.
+
+Setting ``CMAKE_DOTNET_TARGET_FRAMEWORK`` may be necessary
+when working with ``C#`` and newer .NET framework versions to
+avoid referencing errors with the ``ALL_BUILD`` CMake target.
+
+This variable is only evaluated for :ref:`Visual Studio Generators`
+VS 2010 and above.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION.rst
new file mode 100644
index 0000000..fc3c360
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION.rst
@@ -0,0 +1,22 @@
+CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION
+-------------------------------------
+
+.. versionadded:: 3.12
+
+Default value for :prop_tgt:`DOTNET_TARGET_FRAMEWORK_VERSION`
+property of targets.
+
+This variable is used to initialize the
+:prop_tgt:`DOTNET_TARGET_FRAMEWORK_VERSION` property on all
+targets. See that target property for additional information. When set,
+:variable:`CMAKE_DOTNET_TARGET_FRAMEWORK` takes precednece over this
+variable. See that variable or the associated target property
+:prop_tgt:`DOTNET_TARGET_FRAMEWORK` for additional information.
+
+
+Setting ``CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION`` may be necessary
+when working with ``C#`` and newer .NET framework versions to
+avoid referencing errors with the ``ALL_BUILD`` CMake target.
+
+This variable is only evaluated for :ref:`Visual Studio Generators`
+VS 2010 and above.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst b/share/cmake-3.22/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst
new file mode 100644
index 0000000..548c563
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst
@@ -0,0 +1,12 @@
+CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES
+---------------------------------------
+
+.. versionadded:: 3.6
+
+This cache variable is used by the Eclipse project generator.  See
+:manual:`cmake-generators(7)`.
+
+The Eclipse project generator generates so-called linked resources
+e.g. to the subproject root dirs in the source tree or to the source files
+of targets.
+This can be disabled by setting this variable to FALSE.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst b/share/cmake-3.22/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst
new file mode 100644
index 0000000..fc28ebb
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst
@@ -0,0 +1,13 @@
+CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT
+-------------------------------------
+
+.. versionadded:: 3.6
+
+This cache variable is used by the Eclipse project generator.  See
+:manual:`cmake-generators(7)`.
+
+If this variable is set to TRUE, the Eclipse project generator will generate
+an Eclipse project in :variable:`CMAKE_SOURCE_DIR` . This project can then
+be used in Eclipse e.g. for the version control functionality.
+:variable:`CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT` defaults to FALSE; so
+nothing is written into the source directory.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst b/share/cmake-3.22/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst
new file mode 100644
index 0000000..90e36f5
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst
@@ -0,0 +1,11 @@
+CMAKE_ECLIPSE_MAKE_ARGUMENTS
+----------------------------
+
+.. versionadded:: 3.6
+
+This cache variable is used by the Eclipse project generator.  See
+:manual:`cmake-generators(7)`.
+
+This variable holds arguments which are used when Eclipse invokes the make
+tool. By default it is initialized to hold flags to enable parallel builds
+(using -j typically).
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ECLIPSE_RESOURCE_ENCODING.rst b/share/cmake-3.22/Help/variable/CMAKE_ECLIPSE_RESOURCE_ENCODING.rst
new file mode 100644
index 0000000..492acd8
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ECLIPSE_RESOURCE_ENCODING.rst
@@ -0,0 +1,8 @@
+CMAKE_ECLIPSE_RESOURCE_ENCODING
+-------------------------------
+
+.. versionadded:: 3.16
+
+This cache variable tells the :generator:`Eclipse CDT4` project generator
+to set the resource encoding to the given value in generated project files.
+If no value is given, no encoding will be set.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ECLIPSE_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_ECLIPSE_VERSION.rst
new file mode 100644
index 0000000..db65d89
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ECLIPSE_VERSION.rst
@@ -0,0 +1,12 @@
+CMAKE_ECLIPSE_VERSION
+---------------------
+
+.. versionadded:: 3.6
+
+This cache variable is used by the Eclipse project generator.  See
+:manual:`cmake-generators(7)`.
+
+When using the Eclipse project generator, CMake tries to find the Eclipse
+executable and detect the version of it. Depending on the version it finds,
+some features are enabled or disabled. If CMake doesn't find
+Eclipse, it assumes the oldest supported version, Eclipse Callisto (3.2).
diff --git a/share/cmake-3.18/Help/variable/CMAKE_EDIT_COMMAND.rst b/share/cmake-3.22/Help/variable/CMAKE_EDIT_COMMAND.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_EDIT_COMMAND.rst
rename to share/cmake-3.22/Help/variable/CMAKE_EDIT_COMMAND.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ENABLE_EXPORTS.rst b/share/cmake-3.22/Help/variable/CMAKE_ENABLE_EXPORTS.rst
new file mode 100644
index 0000000..9f43de3
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ENABLE_EXPORTS.rst
@@ -0,0 +1,10 @@
+CMAKE_ENABLE_EXPORTS
+--------------------
+
+.. versionadded:: 3.4
+
+Specify whether executables export symbols for loadable modules.
+
+This variable is used to initialize the :prop_tgt:`ENABLE_EXPORTS` target
+property for executable targets when they are created by calls to the
+:command:`add_executable` command.  See the property documentation for details.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ERROR_DEPRECATED.rst b/share/cmake-3.22/Help/variable/CMAKE_ERROR_DEPRECATED.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_ERROR_DEPRECATED.rst
rename to share/cmake-3.22/Help/variable/CMAKE_ERROR_DEPRECATED.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst b/share/cmake-3.22/Help/variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_EXECUTABLE_SUFFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_EXECUTABLE_SUFFIX.rst
new file mode 100644
index 0000000..bc4b9df
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_EXECUTABLE_SUFFIX.rst
@@ -0,0 +1,10 @@
+CMAKE_EXECUTABLE_SUFFIX
+-----------------------
+
+The suffix for executables on this platform.
+
+The suffix to use for the end of an executable filename if any, ``.exe``
+on Windows.
+
+:variable:`CMAKE_EXECUTABLE_SUFFIX_<LANG>` overrides this for
+language ``<LANG>``.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_EXECUTABLE_SUFFIX_LANG.rst b/share/cmake-3.22/Help/variable/CMAKE_EXECUTABLE_SUFFIX_LANG.rst
new file mode 100644
index 0000000..a68150e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_EXECUTABLE_SUFFIX_LANG.rst
@@ -0,0 +1,7 @@
+CMAKE_EXECUTABLE_SUFFIX_<LANG>
+------------------------------
+
+The suffix to use for the end of an executable filename of ``<LANG>``
+compiler target architecture, if any.
+
+It overrides :variable:`CMAKE_EXECUTABLE_SUFFIX` for language ``<LANG>``.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_EXECUTE_PROCESS_COMMAND_ECHO.rst b/share/cmake-3.22/Help/variable/CMAKE_EXECUTE_PROCESS_COMMAND_ECHO.rst
new file mode 100644
index 0000000..90a16c3
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_EXECUTE_PROCESS_COMMAND_ECHO.rst
@@ -0,0 +1,8 @@
+CMAKE_EXECUTE_PROCESS_COMMAND_ECHO
+----------------------------------
+
+.. versionadded:: 3.15
+
+If this variable is set to ``STDERR``, ``STDOUT`` or ``NONE`` then commands
+in :command:`execute_process` calls will be printed to either stderr or
+stdout or not at all.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_EXE_LINKER_FLAGS.rst b/share/cmake-3.22/Help/variable/CMAKE_EXE_LINKER_FLAGS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_EXE_LINKER_FLAGS.rst
rename to share/cmake-3.22/Help/variable/CMAKE_EXE_LINKER_FLAGS.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG.rst b/share/cmake-3.22/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG.rst
rename to share/cmake-3.22/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG_INIT.rst b/share/cmake-3.22/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG_INIT.rst
new file mode 100644
index 0000000..4d2718a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG_INIT.rst
@@ -0,0 +1,12 @@
+CMAKE_EXE_LINKER_FLAGS_<CONFIG>_INIT
+------------------------------------
+
+.. versionadded:: 3.7
+
+Value used to initialize the :variable:`CMAKE_EXE_LINKER_FLAGS_<CONFIG>`
+cache entry the first time a build tree is configured.
+This variable is meant to be set by a :variable:`toolchain file
+<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
+the value based on the environment and target platform.
+
+See also :variable:`CMAKE_EXE_LINKER_FLAGS_INIT`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_EXE_LINKER_FLAGS_INIT.rst b/share/cmake-3.22/Help/variable/CMAKE_EXE_LINKER_FLAGS_INIT.rst
new file mode 100644
index 0000000..6e3927c
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_EXE_LINKER_FLAGS_INIT.rst
@@ -0,0 +1,13 @@
+CMAKE_EXE_LINKER_FLAGS_INIT
+---------------------------
+
+.. versionadded:: 3.7
+
+Value used to initialize the :variable:`CMAKE_EXE_LINKER_FLAGS`
+cache entry the first time a build tree is configured.
+This variable is meant to be set by a :variable:`toolchain file
+<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
+the value based on the environment and target platform.
+
+See also the configuration-specific variable
+:variable:`CMAKE_EXE_LINKER_FLAGS_<CONFIG>_INIT`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_EXPORT_COMPILE_COMMANDS.rst b/share/cmake-3.22/Help/variable/CMAKE_EXPORT_COMPILE_COMMANDS.rst
new file mode 100644
index 0000000..53a19dc
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_EXPORT_COMPILE_COMMANDS.rst
@@ -0,0 +1,40 @@
+CMAKE_EXPORT_COMPILE_COMMANDS
+-----------------------------
+
+.. versionadded:: 3.5
+
+Enable/Disable output of compile commands during generation.
+
+If enabled, generates a ``compile_commands.json`` file containing the exact
+compiler calls for all translation units of the project in machine-readable
+form.  The format of the JSON file looks like:
+
+.. code-block:: javascript
+
+  [
+    {
+      "directory": "/home/user/development/project",
+      "command": "/usr/bin/c++ ... -c ../foo/foo.cc",
+      "file": "../foo/foo.cc"
+    },
+
+    ...
+
+    {
+      "directory": "/home/user/development/project",
+      "command": "/usr/bin/c++ ... -c ../foo/bar.cc",
+      "file": "../foo/bar.cc"
+    }
+  ]
+
+This is initialized by the :envvar:`CMAKE_EXPORT_COMPILE_COMMANDS` environment
+variable, and initializes the :prop_tgt:`EXPORT_COMPILE_COMMANDS` target
+property for all targets.
+
+.. note::
+  This option is implemented only by :ref:`Makefile Generators`
+  and the :generator:`Ninja`.  It is ignored on other generators.
+
+  This option currently does not work well in combination with
+  the :prop_tgt:`UNITY_BUILD` target property or the
+  :variable:`CMAKE_UNITY_BUILD` variable.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst b/share/cmake-3.22/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst
new file mode 100644
index 0000000..5772490
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst
@@ -0,0 +1,18 @@
+CMAKE_EXPORT_NO_PACKAGE_REGISTRY
+--------------------------------
+
+.. versionadded:: 3.1
+
+Disable the :command:`export(PACKAGE)` command when :policy:`CMP0090`
+is not set to ``NEW``.
+
+In some cases, for example for packaging and for system wide
+installations, it is not desirable to write the user package registry.
+If the ``CMAKE_EXPORT_NO_PACKAGE_REGISTRY`` variable is enabled,
+the :command:`export(PACKAGE)` command will do nothing.
+
+If :policy:`CMP0090` is set to ``NEW`` this variable does nothing, and the
+:variable:`CMAKE_EXPORT_PACKAGE_REGISTRY` variable controls the behavior
+instead.
+
+See also :ref:`Disabling the Package Registry`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_EXPORT_PACKAGE_REGISTRY.rst b/share/cmake-3.22/Help/variable/CMAKE_EXPORT_PACKAGE_REGISTRY.rst
new file mode 100644
index 0000000..663639b
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_EXPORT_PACKAGE_REGISTRY.rst
@@ -0,0 +1,17 @@
+CMAKE_EXPORT_PACKAGE_REGISTRY
+-----------------------------
+
+.. versionadded:: 3.15
+
+Enables the :command:`export(PACKAGE)` command when :policy:`CMP0090`
+is set to ``NEW``.
+
+The :command:`export(PACKAGE)` command does nothing by default.  In some cases
+it is desirable to write to the user package registry, so the
+``CMAKE_EXPORT_PACKAGE_REGISTRY`` variable may be set to enable it.
+
+If :policy:`CMP0090` is *not* set to ``NEW`` this variable does nothing, and
+the :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` variable controls the behavior
+instead.
+
+See also :ref:`Disabling the Package Registry`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_EXTRA_GENERATOR.rst b/share/cmake-3.22/Help/variable/CMAKE_EXTRA_GENERATOR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_EXTRA_GENERATOR.rst
rename to share/cmake-3.22/Help/variable/CMAKE_EXTRA_GENERATOR.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES.rst b/share/cmake-3.22/Help/variable/CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES.rst
rename to share/cmake-3.22/Help/variable/CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_APPBUNDLE.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_APPBUNDLE.rst
new file mode 100644
index 0000000..17563f3
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_APPBUNDLE.rst
@@ -0,0 +1,24 @@
+CMAKE_FIND_APPBUNDLE
+--------------------
+
+.. versionadded:: 3.4
+
+This variable affects how ``find_*`` commands choose between
+macOS Application Bundles and unix-style package components.
+
+On Darwin or systems supporting macOS Application Bundles, the
+``CMAKE_FIND_APPBUNDLE`` variable can be set to empty or
+one of the following:
+
+``FIRST``
+  Try to find application bundles before standard programs.
+  This is the default on Darwin.
+
+``LAST``
+  Try to find application bundles after standard programs.
+
+``ONLY``
+  Only try to find application bundles.
+
+``NEVER``
+  Never try to find application bundles.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_DEBUG_MODE.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_DEBUG_MODE.rst
new file mode 100644
index 0000000..8f2a82f
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_DEBUG_MODE.rst
@@ -0,0 +1,25 @@
+CMAKE_FIND_DEBUG_MODE
+---------------------
+
+.. versionadded:: 3.17
+
+Print extra find call information for the following commands to standard
+error:
+
+* :command:`find_program`
+* :command:`find_library`
+* :command:`find_file`
+* :command:`find_path`
+* :command:`find_package`
+
+Output is designed for human consumption and not for parsing.
+Enabling this variable is equivalent to using :manual:`cmake <cmake(1)>` ``--debug-find``
+with the added ability to enable debugging for a subset of find calls.
+
+.. code-block:: cmake
+
+  set(CMAKE_FIND_DEBUG_MODE TRUE)
+  find_program(...)
+  set(CMAKE_FIND_DEBUG_MODE FALSE)
+
+Default is unset.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_FRAMEWORK.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_FRAMEWORK.rst
new file mode 100644
index 0000000..3b62cda
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_FRAMEWORK.rst
@@ -0,0 +1,24 @@
+CMAKE_FIND_FRAMEWORK
+--------------------
+
+.. versionadded:: 3.4
+
+This variable affects how ``find_*`` commands choose between
+macOS Frameworks and unix-style package components.
+
+On Darwin or systems supporting macOS Frameworks, the
+``CMAKE_FIND_FRAMEWORK`` variable can be set to empty or
+one of the following:
+
+``FIRST``
+  Try to find frameworks before standard libraries or headers.
+  This is the default on Darwin.
+
+``LAST``
+  Try to find frameworks after standard libraries or headers.
+
+``ONLY``
+  Only try to find frameworks.
+
+``NEVER``
+  Never try to find frameworks.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX.rst
new file mode 100644
index 0000000..ca2ad7f
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX.rst
@@ -0,0 +1,14 @@
+CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX
+------------------------------------
+
+.. versionadded:: 3.9
+
+Specify a ``<suffix>`` to tell the :command:`find_library` command to
+search in a ``lib<suffix>`` directory before each ``lib`` directory that
+would normally be searched.
+
+This overrides the behavior of related global properties:
+
+* :prop_gbl:`FIND_LIBRARY_USE_LIB32_PATHS`
+* :prop_gbl:`FIND_LIBRARY_USE_LIB64_PATHS`
+* :prop_gbl:`FIND_LIBRARY_USE_LIBX32_PATHS`
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_LIBRARY_PREFIXES.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_LIBRARY_PREFIXES.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_FIND_LIBRARY_PREFIXES.rst
rename to share/cmake-3.22/Help/variable/CMAKE_FIND_LIBRARY_PREFIXES.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_LIBRARY_SUFFIXES.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_LIBRARY_SUFFIXES.rst
new file mode 100644
index 0000000..c2c2609
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_LIBRARY_SUFFIXES.rst
@@ -0,0 +1,12 @@
+CMAKE_FIND_LIBRARY_SUFFIXES
+---------------------------
+
+Suffixes to append when looking for libraries.
+
+This specifies what suffixes to add to library names when the
+:command:`find_library` command looks for libraries.  On Windows systems this
+is typically ``.lib`` and, depending on the compiler, ``.dll.a``, ``.a``
+(e.g. GCC and Clang), so when it tries to find the ``foo`` library, it will
+look for ``[<prefix>]foo.lib`` and/or ``[<prefix>]foo[.dll].a``, depending on
+the compiler used and the ``<prefix>`` specified in the
+:variable:`CMAKE_FIND_LIBRARY_PREFIXES`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_NO_INSTALL_PREFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_NO_INSTALL_PREFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_FIND_NO_INSTALL_PREFIX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_FIND_NO_INSTALL_PREFIX.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_NAME.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_NAME.rst
new file mode 100644
index 0000000..fc1fd43
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_NAME.rst
@@ -0,0 +1,8 @@
+CMAKE_FIND_PACKAGE_NAME
+-----------------------
+
+.. versionadded:: 3.1.1
+
+Defined by the :command:`find_package` command while loading
+a find module to record the caller-specified package name.
+See command documentation for details.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst
new file mode 100644
index 0000000..8d86a94
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst
@@ -0,0 +1,26 @@
+CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY
+--------------------------------------
+
+.. versionadded:: 3.1
+
+.. deprecated:: 3.16
+
+  Use the :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variable instead.
+
+By default this variable is not set. If neither
+:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` nor
+``CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`` is set, then
+:command:`find_package()` will use the :ref:`User Package Registry`
+unless the ``NO_CMAKE_PACKAGE_REGISTRY`` option is provided.
+
+``CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`` is ignored if
+:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` is set.
+
+In some cases, for example to locate only system wide installations, it
+is not desirable to use the :ref:`User Package Registry` when searching
+for packages. If the :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`
+variable is ``TRUE``, all the :command:`find_package` commands will skip
+the :ref:`User Package Registry` as if they were called with the
+``NO_CMAKE_PACKAGE_REGISTRY`` argument.
+
+See also :ref:`Disabling the Package Registry`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst
new file mode 100644
index 0000000..cc67f08
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst
@@ -0,0 +1,26 @@
+CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY
+---------------------------------------------
+
+.. versionadded:: 3.1
+
+.. deprecated:: 3.16
+
+  Use the :variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY` variable instead.
+
+By default this variable is not set. If neither
+:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY` nor
+``CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY`` is set, then
+:command:`find_package()` will use the :ref:`System Package Registry`
+unless the ``NO_CMAKE_SYSTEM_PACKAGE_REGISTRY`` option is provided.
+
+``CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY`` is ignored if
+:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY` is set.
+
+In some cases, it is not desirable to use the
+:ref:`System Package Registry` when searching for packages. If the
+:variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` variable is
+``TRUE``, all the :command:`find_package` commands will skip
+the :ref:`System Package Registry` as if they were called with the
+``NO_CMAKE_SYSTEM_PACKAGE_REGISTRY`` argument.
+
+See also :ref:`Disabling the Package Registry`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_PREFER_CONFIG.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_PREFER_CONFIG.rst
new file mode 100644
index 0000000..ba81529
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_PREFER_CONFIG.rst
@@ -0,0 +1,29 @@
+CMAKE_FIND_PACKAGE_PREFER_CONFIG
+---------------------------------
+
+.. versionadded:: 3.15
+
+Tell :command:`find_package` to try "Config" mode before "Module" mode if no
+mode was specified.
+
+The command :command:`find_package` operates without an explicit mode when
+the reduced signature is used without the ``MODULE`` option. In this case,
+by default, CMake first tries Module mode by searching for a
+``Find<pkg>.cmake`` module.  If it fails, CMake then searches for the package
+using Config mode.
+
+Set ``CMAKE_FIND_PACKAGE_PREFER_CONFIG`` to ``TRUE`` to tell
+:command:`find_package` to first search using Config mode before falling back
+to Module mode.
+
+This variable may be useful when a developer has compiled a custom version of
+a common library and wishes to link it to a dependent project.  If this
+variable is set to ``TRUE``, it would prevent a dependent project's call
+to :command:`find_package` from selecting the default library located by the
+system's ``Find<pkg>.cmake`` module before finding the developer's custom
+built library.
+
+Once this variable is set, it is the responsibility of the exported
+``<pkg>Config.cmake`` files to provide the same result variables as the
+``Find<pkg>.cmake`` modules so that dependent projects can use them
+interchangeably.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS.rst
new file mode 100644
index 0000000..86d75e7
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS.rst
@@ -0,0 +1,12 @@
+CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS
+-----------------------------------
+
+.. versionadded:: 3.14
+
+Set to ``TRUE`` to tell :command:`find_package` calls to resolve symbolic
+links in the value of ``<PackageName>_DIR``.
+
+This is helpful in use cases where the package search path points at a
+proxy directory in which symlinks to the real package locations appear.
+This is not enabled by default because there are also common use cases
+in which the symlinks should be preserved.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst
new file mode 100644
index 0000000..98c2a8f
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst
@@ -0,0 +1,18 @@
+CMAKE_FIND_PACKAGE_SORT_DIRECTION
+---------------------------------
+
+.. versionadded:: 3.7
+
+The sorting direction used by :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER`.
+It can assume one of the following values:
+
+``DEC``
+  Default.  Ordering is done in descending mode.
+  The highest folder found will be tested first.
+
+``ASC``
+  Ordering is done in ascending mode.
+  The lowest folder found will be tested first.
+
+If :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER` is not set or is set to ``NONE``
+this variable has no effect.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_SORT_ORDER.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_SORT_ORDER.rst
new file mode 100644
index 0000000..1725ba1
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_SORT_ORDER.rst
@@ -0,0 +1,38 @@
+CMAKE_FIND_PACKAGE_SORT_ORDER
+-----------------------------
+
+.. versionadded:: 3.7
+
+The default order for sorting packages found using :command:`find_package`.
+It can assume one of the following values:
+
+``NONE``
+  Default.  No attempt is done to sort packages.
+  The first valid package found will be selected.
+
+``NAME``
+  Sort packages lexicographically before selecting one.
+
+``NATURAL``
+  Sort packages using natural order (see ``strverscmp(3)`` manual),
+  i.e. such that contiguous digits are compared as whole numbers.
+
+Natural sorting can be employed to return the highest version when multiple
+versions of the same library are found by :command:`find_package`.  For
+example suppose that the following libraries have been found:
+
+* libX-1.1.0
+* libX-1.2.9
+* libX-1.2.10
+
+By setting ``NATURAL`` order we can select the one with the highest
+version number ``libX-1.2.10``.
+
+.. code-block:: cmake
+
+  set(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL)
+  find_package(libX CONFIG)
+
+The sort direction can be controlled using the
+:variable:`CMAKE_FIND_PACKAGE_SORT_DIRECTION` variable
+(by default decrescent, e.g. lib-B will be tested before lib-A).
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_WARN_NO_MODULE.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_WARN_NO_MODULE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_FIND_PACKAGE_WARN_NO_MODULE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_FIND_PACKAGE_WARN_NO_MODULE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_ROOT_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_ROOT_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_FIND_ROOT_PATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_FIND_ROOT_PATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_INCLUDE.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_INCLUDE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_INCLUDE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_INCLUDE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_LIBRARY.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_LIBRARY.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_LIBRARY.rst
rename to share/cmake-3.22/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_LIBRARY.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_PACKAGE.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_PACKAGE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_PACKAGE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_PACKAGE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_PROGRAM.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_PROGRAM.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_PROGRAM.rst
rename to share/cmake-3.22/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_PROGRAM.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_XXX.txt b/share/cmake-3.22/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_XXX.txt
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_XXX.txt
rename to share/cmake-3.22/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_XXX.txt
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH.rst
new file mode 100644
index 0000000..de1bad7
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH.rst
@@ -0,0 +1,26 @@
+CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH
+-------------------------------------
+
+.. versionadded:: 3.16
+
+Controls the default behavior of the following commands for whether or not to
+search paths provided by cmake-specific environment variables:
+
+* :command:`find_program`
+* :command:`find_library`
+* :command:`find_file`
+* :command:`find_path`
+* :command:`find_package`
+
+This is useful in cross-compiling environments.
+
+By default this variable is not set, which is equivalent to it having
+a value of ``TRUE``.  Explicit options given to the above commands
+take precedence over this variable.
+
+See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
+:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
+:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`,
+:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
+and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_CMAKE_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_CMAKE_PATH.rst
new file mode 100644
index 0000000..47ce3a3
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_CMAKE_PATH.rst
@@ -0,0 +1,26 @@
+CMAKE_FIND_USE_CMAKE_PATH
+-------------------------
+
+.. versionadded:: 3.16
+
+Controls the default behavior of the following commands for whether or not to
+search paths provided by cmake-specific cache variables:
+
+* :command:`find_program`
+* :command:`find_library`
+* :command:`find_file`
+* :command:`find_path`
+* :command:`find_package`
+
+This is useful in cross-compiling environments.
+
+By default this variable is not set, which is equivalent to it having
+a value of ``TRUE``.  Explicit options given to the above commands
+take precedence over this variable.
+
+See also the :variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
+:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`,
+:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
+and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_CMAKE_SYSTEM_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_CMAKE_SYSTEM_PATH.rst
new file mode 100644
index 0000000..2fd00df
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_CMAKE_SYSTEM_PATH.rst
@@ -0,0 +1,26 @@
+CMAKE_FIND_USE_CMAKE_SYSTEM_PATH
+--------------------------------
+
+.. versionadded:: 3.16
+
+Controls the default behavior of the following commands for whether or not to
+search paths provided by platform-specific cmake variables:
+
+* :command:`find_program`
+* :command:`find_library`
+* :command:`find_file`
+* :command:`find_path`
+* :command:`find_package`
+
+This is useful in cross-compiling environments.
+
+By default this variable is not set, which is equivalent to it having
+a value of ``TRUE``.  Explicit options given to the above commands
+take precedence over this variable.
+
+See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
+:variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`,
+:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
+and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_PACKAGE_REGISTRY.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_PACKAGE_REGISTRY.rst
new file mode 100644
index 0000000..3127206
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_PACKAGE_REGISTRY.rst
@@ -0,0 +1,32 @@
+CMAKE_FIND_USE_PACKAGE_REGISTRY
+-------------------------------
+
+.. versionadded:: 3.16
+
+Controls the default behavior of the :command:`find_package` command for
+whether or not to search paths provided by the :ref:`User Package Registry`.
+
+By default this variable is not set and the behavior will fall back
+to that determined by the deprecated
+:variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` variable.  If that is
+also not set, then :command:`find_package` will use the
+:ref:`User Package Registry` unless the ``NO_CMAKE_PACKAGE_REGISTRY`` option
+is provided.
+
+This variable takes precedence over
+:variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` when both are set.
+
+In some cases, for example to locate only system wide installations, it
+is not desirable to use the :ref:`User Package Registry` when searching
+for packages.  If the :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`
+variable is ``FALSE``, all the :command:`find_package` commands will skip
+the :ref:`User Package Registry` as if they were called with the
+``NO_CMAKE_PACKAGE_REGISTRY`` argument.
+
+See also :ref:`Disabling the Package Registry` and the
+:variable:`CMAKE_FIND_USE_CMAKE_PATH`,
+:variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
+:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`,
+and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH.rst
new file mode 100644
index 0000000..64e5c6d
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH.rst
@@ -0,0 +1,24 @@
+CMAKE_FIND_USE_PACKAGE_ROOT_PATH
+--------------------------------
+
+.. versionadded:: 3.16
+
+Controls the default behavior of the following commands for whether or not to
+search paths provided by :variable:`<PackageName>_ROOT` variables:
+
+* :command:`find_program`
+* :command:`find_library`
+* :command:`find_file`
+* :command:`find_path`
+* :command:`find_package`
+
+By default this variable is not set, which is equivalent to it having
+a value of ``TRUE``.  Explicit options given to the above commands
+take precedence over this variable.
+
+See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
+:variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
+:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY`,
+and :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variables.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH.rst
new file mode 100644
index 0000000..a0a86e4
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH.rst
@@ -0,0 +1,26 @@
+CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH
+--------------------------------------
+
+.. versionadded:: 3.16
+
+Controls the default behavior of the following commands for whether or not to
+search paths provided by standard system environment variables:
+
+* :command:`find_program`
+* :command:`find_library`
+* :command:`find_file`
+* :command:`find_path`
+* :command:`find_package`
+
+This is useful in cross-compiling environments.
+
+By default this variable is not set, which is equivalent to it having
+a value of ``TRUE``.  Explicit options given to the above commands
+take precedence over this variable.
+
+See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
+:variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
+:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
+:variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH`,
+and :variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY` variables.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY.rst b/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY.rst
new file mode 100644
index 0000000..504b7e8
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY.rst
@@ -0,0 +1,33 @@
+CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY
+--------------------------------------
+
+.. versionadded:: 3.16
+
+Controls searching the :ref:`System Package Registry` by the
+:command:`find_package` command.
+
+By default this variable is not set and the behavior will fall back
+to that determined by the deprecated
+:variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` variable.
+If that is also not set, then :command:`find_package()` will use the
+:ref:`System Package Registry` unless the ``NO_CMAKE_SYSTEM_PACKAGE_REGISTRY``
+option is provided.
+
+This variable takes precedence over
+:variable:`CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` when both are set.
+
+In some cases, for example to locate only user specific installations, it
+is not desirable to use the :ref:`System Package Registry` when searching
+for packages. If the ``CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY``
+variable is ``FALSE``, all the :command:`find_package` commands will skip
+the :ref:`System Package Registry` as if they were called with the
+``NO_CMAKE_SYSTEM_PACKAGE_REGISTRY`` argument.
+
+See also :ref:`Disabling the Package Registry`.
+
+See also the :variable:`CMAKE_FIND_USE_CMAKE_PATH`,
+:variable:`CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_CMAKE_SYSTEM_PATH`,
+:variable:`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`,
+:variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY`,
+and :variable:`CMAKE_FIND_USE_PACKAGE_ROOT_PATH` variables.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FOLDER.rst b/share/cmake-3.22/Help/variable/CMAKE_FOLDER.rst
new file mode 100644
index 0000000..37f137c
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FOLDER.rst
@@ -0,0 +1,9 @@
+CMAKE_FOLDER
+------------
+
+.. versionadded:: 3.12
+
+Set the folder name. Use to organize targets in an IDE.
+
+This variable is used to initialize the :prop_tgt:`FOLDER` property on all the
+targets.  See that target property for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FRAMEWORK.rst b/share/cmake-3.22/Help/variable/CMAKE_FRAMEWORK.rst
new file mode 100644
index 0000000..37385bf
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FRAMEWORK.rst
@@ -0,0 +1,9 @@
+CMAKE_FRAMEWORK
+---------------
+
+.. versionadded:: 3.15
+
+Default value for :prop_tgt:`FRAMEWORK` of targets.
+
+This variable is used to initialize the :prop_tgt:`FRAMEWORK` property on
+all the targets.  See that target property for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst b/share/cmake-3.22/Help/variable/CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst
new file mode 100644
index 0000000..47fb66e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst
@@ -0,0 +1,10 @@
+CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>
+---------------------------------------------
+
+.. versionadded:: 3.18
+
+Default framework filename postfix under configuration ``<CONFIG>`` when
+using a multi-config generator.
+
+When a framework target is created its :prop_tgt:`FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>`
+target property is initialized with the value of this variable if it is set.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_FRAMEWORK_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_FRAMEWORK_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_FRAMEWORK_PATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_FRAMEWORK_PATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_Fortran_FORMAT.rst b/share/cmake-3.22/Help/variable/CMAKE_Fortran_FORMAT.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_Fortran_FORMAT.rst
rename to share/cmake-3.22/Help/variable/CMAKE_Fortran_FORMAT.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_Fortran_MODDIR_DEFAULT.rst b/share/cmake-3.22/Help/variable/CMAKE_Fortran_MODDIR_DEFAULT.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_Fortran_MODDIR_DEFAULT.rst
rename to share/cmake-3.22/Help/variable/CMAKE_Fortran_MODDIR_DEFAULT.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_Fortran_MODDIR_FLAG.rst b/share/cmake-3.22/Help/variable/CMAKE_Fortran_MODDIR_FLAG.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_Fortran_MODDIR_FLAG.rst
rename to share/cmake-3.22/Help/variable/CMAKE_Fortran_MODDIR_FLAG.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_Fortran_MODOUT_FLAG.rst b/share/cmake-3.22/Help/variable/CMAKE_Fortran_MODOUT_FLAG.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_Fortran_MODOUT_FLAG.rst
rename to share/cmake-3.22/Help/variable/CMAKE_Fortran_MODOUT_FLAG.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_Fortran_MODULE_DIRECTORY.rst b/share/cmake-3.22/Help/variable/CMAKE_Fortran_MODULE_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_Fortran_MODULE_DIRECTORY.rst
rename to share/cmake-3.22/Help/variable/CMAKE_Fortran_MODULE_DIRECTORY.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_Fortran_PREPROCESS.rst b/share/cmake-3.22/Help/variable/CMAKE_Fortran_PREPROCESS.rst
new file mode 100644
index 0000000..7d405f3
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_Fortran_PREPROCESS.rst
@@ -0,0 +1,10 @@
+CMAKE_Fortran_PREPROCESS
+------------------------
+
+.. versionadded:: 3.18
+
+Default value for :prop_tgt:`Fortran_PREPROCESS` of targets.
+
+This variable is used to initialize the :prop_tgt:`Fortran_PREPROCESS`
+property on all the targets.  See that target property for additional
+information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_GENERATOR.rst b/share/cmake-3.22/Help/variable/CMAKE_GENERATOR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_GENERATOR.rst
rename to share/cmake-3.22/Help/variable/CMAKE_GENERATOR.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_GENERATOR_INSTANCE.rst b/share/cmake-3.22/Help/variable/CMAKE_GENERATOR_INSTANCE.rst
new file mode 100644
index 0000000..5858d7a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_GENERATOR_INSTANCE.rst
@@ -0,0 +1,27 @@
+CMAKE_GENERATOR_INSTANCE
+------------------------
+
+.. versionadded:: 3.11
+
+Generator-specific instance specification provided by user.
+
+Some CMake generators support selection of an instance of the native build
+system when multiple instances are available.  If the user specifies an
+instance (e.g. by setting this cache entry or via the
+:envvar:`CMAKE_GENERATOR_INSTANCE` environment variable), or after a default
+instance is chosen when a build tree is first configured, the value will be
+available in this variable.
+
+The value of this variable should never be modified by project code.
+A toolchain file specified by the :variable:`CMAKE_TOOLCHAIN_FILE`
+variable may initialize ``CMAKE_GENERATOR_INSTANCE`` as a cache entry.
+Once a given build tree has been initialized with a particular value
+for this variable, changing the value has undefined behavior.
+
+Instance specification is supported only on specific generators:
+
+* For the :generator:`Visual Studio 15 2017` generator (and above)
+  this specifies the absolute path to the VS installation directory
+  of the selected VS instance.
+
+See native build system documentation for allowed instance values.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_GENERATOR_PLATFORM.rst b/share/cmake-3.22/Help/variable/CMAKE_GENERATOR_PLATFORM.rst
new file mode 100644
index 0000000..b17d83a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_GENERATOR_PLATFORM.rst
@@ -0,0 +1,33 @@
+CMAKE_GENERATOR_PLATFORM
+------------------------
+
+.. versionadded:: 3.1
+
+Generator-specific target platform specification provided by user.
+
+Some CMake generators support a target platform name to be given
+to the native build system to choose a compiler toolchain.
+If the user specifies a platform name (e.g. via the :manual:`cmake(1)` ``-A``
+option or via the :envvar:`CMAKE_GENERATOR_PLATFORM` environment variable)
+the value will be available in this variable.
+
+The value of this variable should never be modified by project code.
+A toolchain file specified by the :variable:`CMAKE_TOOLCHAIN_FILE`
+variable may initialize ``CMAKE_GENERATOR_PLATFORM``.  Once a given
+build tree has been initialized with a particular value for this
+variable, changing the value has undefined behavior.
+
+Platform specification is supported only on specific generators:
+
+* For :ref:`Visual Studio Generators` with VS 2005 and above this
+  specifies the target architecture.
+
+* For :generator:`Green Hills MULTI` this specifies the target architecture.
+
+See native build system documentation for allowed platform names.
+
+Visual Studio Platform Selection
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+On :ref:`Visual Studio Generators` the selected platform name
+is provided in the :variable:`CMAKE_VS_PLATFORM_NAME` variable.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_GENERATOR_TOOLSET.rst b/share/cmake-3.22/Help/variable/CMAKE_GENERATOR_TOOLSET.rst
new file mode 100644
index 0000000..45f2d32
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_GENERATOR_TOOLSET.rst
@@ -0,0 +1,89 @@
+CMAKE_GENERATOR_TOOLSET
+-----------------------
+
+Native build system toolset specification provided by user.
+
+Some CMake generators support a toolset specification to tell the
+native build system how to choose a compiler.  If the user specifies
+a toolset (e.g. via the :manual:`cmake(1)` ``-T`` option or via
+the :envvar:`CMAKE_GENERATOR_TOOLSET` environment variable) the value
+will be available in this variable.
+
+The value of this variable should never be modified by project code.
+A toolchain file specified by the :variable:`CMAKE_TOOLCHAIN_FILE`
+variable may initialize ``CMAKE_GENERATOR_TOOLSET``.  Once a given
+build tree has been initialized with a particular value for this
+variable, changing the value has undefined behavior.
+
+Toolset specification is supported only on specific generators:
+
+* :ref:`Visual Studio Generators` for VS 2010 and above
+* The :generator:`Xcode` generator for Xcode 3.0 and above
+* The :generator:`Green Hills MULTI` generator
+
+See native build system documentation for allowed toolset names.
+
+Visual Studio Toolset Selection
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The :ref:`Visual Studio Generators` support toolset specification
+using one of these forms:
+
+* ``toolset``
+* ``toolset[,key=value]*``
+* ``key=value[,key=value]*``
+
+The ``toolset`` specifies the toolset name.  The selected toolset name
+is provided in the :variable:`CMAKE_VS_PLATFORM_TOOLSET` variable.
+
+The ``key=value`` pairs form a comma-separated list of options to
+specify generator-specific details of the toolset selection.
+Supported pairs are:
+
+``cuda=<version>|<path>``
+  Specify the CUDA toolkit version to use or the path to a
+  standalone CUDA toolkit directory.  Supported by VS 2010
+  and above. The version can only be used with the CUDA
+  toolkit VS integration globally installed.
+  See the :variable:`CMAKE_VS_PLATFORM_TOOLSET_CUDA` and
+  :variable:`CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR` variables.
+
+``host=<arch>``
+  Specify the host tools architecture as ``x64`` or ``x86``.
+  Supported by VS 2013 and above.
+  See the :variable:`CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE`
+  variable.
+
+``version=<version>``
+  Specify the toolset version to use.  Supported by VS 2017
+  and above with the specified toolset installed.
+  See the :variable:`CMAKE_VS_PLATFORM_TOOLSET_VERSION` variable.
+
+``VCTargetsPath=<path>``
+  Specify an alternative ``VCTargetsPath`` value for Visual Studio
+  project files.  This allows use of VS platform extension configuration
+  files (``.props`` and ``.targets``) that are not installed with VS.
+
+Visual Studio Toolset Customization
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+**These are unstable interfaces with no compatibility guarantees**
+because they hook into undocumented internal CMake implementation details.
+Institutions may use these to internally maintain support for non-public
+Visual Studio platforms and toolsets, but must accept responsibility to
+make updates as changes are made to CMake.
+
+Additional ``key=value`` pairs are available:
+
+``customFlagTableDir=<path>``
+  .. versionadded:: 3.21
+
+  Specify the absolute path to a directory from which to load custom
+  flag tables stored as JSON documents with file names of the form
+  ``<platform>_<toolset>_<tool>.json`` or ``<platform>_<tool>.json``,
+  where ``<platform>`` is the :variable:`CMAKE_VS_PLATFORM_NAME`,
+  ``<toolset>`` is the :variable:`CMAKE_VS_PLATFORM_TOOLSET`,
+  and ``<tool>`` is the tool for which the flag table is meant.
+  **This naming pattern is an internal CMake implementation detail.**
+  The ``<tool>`` names are undocumented.  The format of the ``.json``
+  flag table files is undocumented.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst b/share/cmake-3.22/Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst
new file mode 100644
index 0000000..0e8ae5e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst
@@ -0,0 +1,8 @@
+CMAKE_GHS_NO_SOURCE_GROUP_FILE
+------------------------------
+
+.. versionadded:: 3.14
+
+``ON`` / ``OFF`` boolean to control if the project file for a target should
+be one single file or multiple files.  Refer to
+:prop_tgt:`GHS_NO_SOURCE_GROUP_FILE` for further details.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET.rst b/share/cmake-3.22/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET.rst
new file mode 100644
index 0000000..96e9907
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET.rst
@@ -0,0 +1,28 @@
+CMAKE_GLOBAL_AUTOGEN_TARGET
+---------------------------
+
+.. versionadded:: 3.14
+
+Switch to enable generation of a global ``autogen`` target.
+
+When :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET` is enabled, a custom target
+``autogen`` is generated.  This target depends on all :prop_tgt:`AUTOMOC` and
+:prop_tgt:`AUTOUIC` generated ``<ORIGIN>_autogen`` targets in the project.
+By building the global ``autogen`` target, all :prop_tgt:`AUTOMOC` and
+:prop_tgt:`AUTOUIC` files in the project will be generated.
+
+The name of the global ``autogen`` target can be changed by setting
+:variable:`CMAKE_GLOBAL_AUTOGEN_TARGET_NAME`.
+
+By default :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET` is unset.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
+
+Note
+^^^^
+
+``<ORIGIN>_autogen`` targets by default inherit their origin target's
+dependencies.  This might result in unintended dependency target
+builds when only ``<ORIGIN>_autogen`` targets are built.  A solution is to
+disable :prop_tgt:`AUTOGEN_ORIGIN_DEPENDS` on the respective origin targets.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET_NAME.rst b/share/cmake-3.22/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET_NAME.rst
new file mode 100644
index 0000000..4af4bc3
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET_NAME.rst
@@ -0,0 +1,15 @@
+CMAKE_GLOBAL_AUTOGEN_TARGET_NAME
+--------------------------------
+
+.. versionadded:: 3.14
+
+Change the name of the global ``autogen`` target.
+
+When :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET` is enabled, a global custom target
+named ``autogen`` is created.  :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET_NAME`
+allows to set a different name for that target.
+
+By default :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET_NAME` is unset.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET.rst b/share/cmake-3.22/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET.rst
new file mode 100644
index 0000000..efea5be
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET.rst
@@ -0,0 +1,20 @@
+CMAKE_GLOBAL_AUTORCC_TARGET
+---------------------------
+
+.. versionadded:: 3.14
+
+Switch to enable generation of a global ``autorcc`` target.
+
+When :variable:`CMAKE_GLOBAL_AUTORCC_TARGET` is enabled, a custom target
+``autorcc`` is generated. This target depends on all :prop_tgt:`AUTORCC`
+generated ``<ORIGIN>_arcc_<QRC>`` targets in the project.
+By building the global ``autorcc`` target, all :prop_tgt:`AUTORCC`
+files in the project will be generated.
+
+The name of the global ``autorcc`` target can be changed by setting
+:variable:`CMAKE_GLOBAL_AUTORCC_TARGET_NAME`.
+
+By default :variable:`CMAKE_GLOBAL_AUTORCC_TARGET` is unset.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET_NAME.rst b/share/cmake-3.22/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET_NAME.rst
new file mode 100644
index 0000000..4d2e313
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET_NAME.rst
@@ -0,0 +1,15 @@
+CMAKE_GLOBAL_AUTORCC_TARGET_NAME
+--------------------------------
+
+.. versionadded:: 3.14
+
+Change the name of the global ``autorcc`` target.
+
+When :variable:`CMAKE_GLOBAL_AUTORCC_TARGET` is enabled, a global custom target
+named ``autorcc`` is created.  :variable:`CMAKE_GLOBAL_AUTORCC_TARGET_NAME`
+allows to set a different name for that target.
+
+By default :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET_NAME` is unset.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_GNUtoMS.rst b/share/cmake-3.22/Help/variable/CMAKE_GNUtoMS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_GNUtoMS.rst
rename to share/cmake-3.22/Help/variable/CMAKE_GNUtoMS.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_HIP_ARCHITECTURES.rst b/share/cmake-3.22/Help/variable/CMAKE_HIP_ARCHITECTURES.rst
new file mode 100644
index 0000000..bcc6b35
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_HIP_ARCHITECTURES.rst
@@ -0,0 +1,12 @@
+CMAKE_HIP_ARCHITECTURES
+-----------------------
+
+.. versionadded:: 3.21
+
+Default value for :prop_tgt:`HIP_ARCHITECTURES` property of targets.
+
+This is initialized to the architectures reported by ``rocm_agent_enumerator``,
+if available, and otherwise to the default chosen by the compiler.
+
+This variable is used to initialize the :prop_tgt:`HIP_ARCHITECTURES` property
+on all targets. See the target property for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_HIP_EXTENSIONS.rst b/share/cmake-3.22/Help/variable/CMAKE_HIP_EXTENSIONS.rst
new file mode 100644
index 0000000..13987dc
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_HIP_EXTENSIONS.rst
@@ -0,0 +1,10 @@
+CMAKE_HIP_EXTENSIONS
+--------------------
+
+.. versionadded:: 3.21
+
+Default value for :prop_tgt:`HIP_EXTENSIONS` target property if set when a
+target is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_HIP_STANDARD.rst b/share/cmake-3.22/Help/variable/CMAKE_HIP_STANDARD.rst
new file mode 100644
index 0000000..5f15145
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_HIP_STANDARD.rst
@@ -0,0 +1,10 @@
+CMAKE_HIP_STANDARD
+------------------
+
+.. versionadded:: 3.21
+
+Default value for :prop_tgt:`HIP_STANDARD` target property if set when a target
+is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_HIP_STANDARD_REQUIRED.rst b/share/cmake-3.22/Help/variable/CMAKE_HIP_STANDARD_REQUIRED.rst
new file mode 100644
index 0000000..5d35e4e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_HIP_STANDARD_REQUIRED.rst
@@ -0,0 +1,10 @@
+CMAKE_HIP_STANDARD_REQUIRED
+---------------------------
+
+.. versionadded:: 3.21
+
+Default value for :prop_tgt:`HIP_STANDARD_REQUIRED` target property if set when
+a target is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_HOME_DIRECTORY.rst b/share/cmake-3.22/Help/variable/CMAKE_HOME_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_HOME_DIRECTORY.rst
rename to share/cmake-3.22/Help/variable/CMAKE_HOME_DIRECTORY.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_HOST_APPLE.rst b/share/cmake-3.22/Help/variable/CMAKE_HOST_APPLE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_HOST_APPLE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_HOST_APPLE.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_HOST_SOLARIS.rst b/share/cmake-3.22/Help/variable/CMAKE_HOST_SOLARIS.rst
new file mode 100644
index 0000000..7054acd
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_HOST_SOLARIS.rst
@@ -0,0 +1,8 @@
+CMAKE_HOST_SOLARIS
+------------------
+
+.. versionadded:: 3.6
+
+``True`` for Oracle Solaris operating systems.
+
+Set to ``true`` when the host system is Oracle Solaris.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_HOST_SYSTEM.rst b/share/cmake-3.22/Help/variable/CMAKE_HOST_SYSTEM.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_HOST_SYSTEM.rst
rename to share/cmake-3.22/Help/variable/CMAKE_HOST_SYSTEM.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_HOST_SYSTEM_NAME.rst b/share/cmake-3.22/Help/variable/CMAKE_HOST_SYSTEM_NAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_HOST_SYSTEM_NAME.rst
rename to share/cmake-3.22/Help/variable/CMAKE_HOST_SYSTEM_NAME.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_HOST_SYSTEM_PROCESSOR.rst b/share/cmake-3.22/Help/variable/CMAKE_HOST_SYSTEM_PROCESSOR.rst
new file mode 100644
index 0000000..c305779
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_HOST_SYSTEM_PROCESSOR.rst
@@ -0,0 +1,42 @@
+CMAKE_HOST_SYSTEM_PROCESSOR
+---------------------------
+
+The name of the CPU CMake is running on.
+
+Windows Platforms
+^^^^^^^^^^^^^^^^^
+
+On Windows, this variable is set to the value of the environment variable
+``PROCESSOR_ARCHITECTURE``.
+
+Unix Platforms
+^^^^^^^^^^^^^^
+
+On systems that support ``uname``, this variable is set to the output of:
+
+- ``uname -m`` on GNU, Linux, Cygwin, Android, or
+- ``arch`` on OpenBSD, or
+- on other systems,
+
+  * ``uname -p`` if its exit code is nonzero, or
+  * ``uname -m`` otherwise.
+
+macOS Platforms
+^^^^^^^^^^^^^^^
+
+The value of ``uname -m`` is used by default.
+
+On Apple Silicon hosts, the architecture printed by ``uname -m`` may vary
+based on CMake's own architecture and that of the invoking process tree.
+
+.. versionadded:: 3.19.2
+
+  On Apple Silicon hosts:
+
+  * The :variable:`CMAKE_APPLE_SILICON_PROCESSOR` variable or
+    the :envvar:`CMAKE_APPLE_SILICON_PROCESSOR` environment variable
+    may be set to specify the host architecture explicitly.
+
+  * If :variable:`CMAKE_OSX_ARCHITECTURES` is not set, CMake adds explicit
+    flags to tell the compiler to build for the host architecture so the
+    toolchain does not have to guess based on the process tree's architecture.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_HOST_SYSTEM_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_HOST_SYSTEM_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_HOST_SYSTEM_VERSION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_HOST_SYSTEM_VERSION.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_HOST_UNIX.rst b/share/cmake-3.22/Help/variable/CMAKE_HOST_UNIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_HOST_UNIX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_HOST_UNIX.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_HOST_WIN32.rst b/share/cmake-3.22/Help/variable/CMAKE_HOST_WIN32.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_HOST_WIN32.rst
rename to share/cmake-3.22/Help/variable/CMAKE_HOST_WIN32.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_IGNORE_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_IGNORE_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_IGNORE_PATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_IGNORE_PATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_IMPORT_LIBRARY_PREFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_IMPORT_LIBRARY_PREFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_IMPORT_LIBRARY_PREFIX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_IMPORT_LIBRARY_PREFIX.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_IMPORT_LIBRARY_SUFFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_IMPORT_LIBRARY_SUFFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_IMPORT_LIBRARY_SUFFIX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_IMPORT_LIBRARY_SUFFIX.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INCLUDE_CURRENT_DIR.rst b/share/cmake-3.22/Help/variable/CMAKE_INCLUDE_CURRENT_DIR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_INCLUDE_CURRENT_DIR.rst
rename to share/cmake-3.22/Help/variable/CMAKE_INCLUDE_CURRENT_DIR.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE.rst b/share/cmake-3.22/Help/variable/CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INCLUDE_DIRECTORIES_BEFORE.rst b/share/cmake-3.22/Help/variable/CMAKE_INCLUDE_DIRECTORIES_BEFORE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_INCLUDE_DIRECTORIES_BEFORE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_INCLUDE_DIRECTORIES_BEFORE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE.rst b/share/cmake-3.22/Help/variable/CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INCLUDE_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_INCLUDE_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_INCLUDE_PATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_INCLUDE_PATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INSTALL_DEFAULT_COMPONENT_NAME.rst b/share/cmake-3.22/Help/variable/CMAKE_INSTALL_DEFAULT_COMPONENT_NAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_INSTALL_DEFAULT_COMPONENT_NAME.rst
rename to share/cmake-3.22/Help/variable/CMAKE_INSTALL_DEFAULT_COMPONENT_NAME.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst b/share/cmake-3.22/Help/variable/CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst
new file mode 100644
index 0000000..aad99e4
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst
@@ -0,0 +1,31 @@
+CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
+-------------------------------------------
+
+.. versionadded:: 3.11
+
+Default permissions for directories created implicitly during installation
+of files by :command:`install` and :command:`file(INSTALL)`.
+
+If ``make install`` is invoked and directories are implicitly created they
+get permissions set by :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS`
+variable or platform specific default permissions if the variable is not set.
+
+Implicitly created directories are created if they are not explicitly installed
+by :command:`install` command but are needed to install a file on a certain
+path. Example of such locations are directories created due to the setting of
+:variable:`CMAKE_INSTALL_PREFIX`.
+
+Expected content of the :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS`
+variable is a list of permissions that can be used by :command:`install` command
+`PERMISSIONS` section.
+
+Example usage:
+
+::
+
+ set(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
+      OWNER_READ
+      OWNER_WRITE
+      OWNER_EXECUTE
+      GROUP_READ
+    )
diff --git a/share/cmake-3.22/Help/variable/CMAKE_INSTALL_MESSAGE.rst b/share/cmake-3.22/Help/variable/CMAKE_INSTALL_MESSAGE.rst
new file mode 100644
index 0000000..4f39cfe
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_INSTALL_MESSAGE.rst
@@ -0,0 +1,32 @@
+CMAKE_INSTALL_MESSAGE
+---------------------
+
+.. versionadded:: 3.1
+
+Specify verbosity of installation script code generated by the
+:command:`install` command (using the :command:`file(INSTALL)` command).
+For paths that are newly installed or updated, installation
+may print lines like::
+
+  -- Installing: /some/destination/path
+
+For paths that are already up to date, installation may print
+lines like::
+
+  -- Up-to-date: /some/destination/path
+
+The ``CMAKE_INSTALL_MESSAGE`` variable may be set to control
+which messages are printed:
+
+``ALWAYS``
+  Print both ``Installing`` and ``Up-to-date`` messages.
+
+``LAZY``
+  Print ``Installing`` but not ``Up-to-date`` messages.
+
+``NEVER``
+  Print neither ``Installing`` nor ``Up-to-date`` messages.
+
+Other values have undefined behavior and may not be diagnosed.
+
+If this variable is not set, the default behavior is ``ALWAYS``.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_INSTALL_NAME_DIR.rst b/share/cmake-3.22/Help/variable/CMAKE_INSTALL_NAME_DIR.rst
new file mode 100644
index 0000000..b07d44f
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_INSTALL_NAME_DIR.rst
@@ -0,0 +1,8 @@
+CMAKE_INSTALL_NAME_DIR
+----------------------
+
+Directory name for installed targets on Apple platforms.
+
+``CMAKE_INSTALL_NAME_DIR`` is used to initialize the
+:prop_tgt:`INSTALL_NAME_DIR` property on all targets.  See that target
+property for more information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INSTALL_PREFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_INSTALL_PREFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_INSTALL_PREFIX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_INSTALL_PREFIX.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.rst b/share/cmake-3.22/Help/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.rst
new file mode 100644
index 0000000..93cc319
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.rst
@@ -0,0 +1,16 @@
+CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT
+-------------------------------------------
+
+.. versionadded:: 3.7.1
+
+CMake sets this variable to a ``TRUE`` value when the
+:variable:`CMAKE_INSTALL_PREFIX` has just been initialized to
+its default value, typically on the first run of CMake within
+a new build tree.  This can be used by project code to change
+the default without overriding a user-provided value:
+
+.. code-block:: cmake
+
+  if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+    set(CMAKE_INSTALL_PREFIX "/my/default" CACHE PATH "..." FORCE)
+  endif()
diff --git a/share/cmake-3.22/Help/variable/CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH.rst b/share/cmake-3.22/Help/variable/CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH.rst
new file mode 100644
index 0000000..c86e433
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH.rst
@@ -0,0 +1,11 @@
+CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH
+--------------------------------------
+
+.. versionadded:: 3.16
+
+Sets the default for whether toolchain-defined rpaths should be removed during
+installation.
+
+``CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH`` is a boolean that provides the
+default value for the :prop_tgt:`INSTALL_REMOVE_ENVIRONMENT_RPATH` property
+of all subsequently created targets.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INSTALL_RPATH.rst b/share/cmake-3.22/Help/variable/CMAKE_INSTALL_RPATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_INSTALL_RPATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_INSTALL_RPATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INSTALL_RPATH_USE_LINK_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_INSTALL_RPATH_USE_LINK_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_INSTALL_RPATH_USE_LINK_PATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_INSTALL_RPATH_USE_LINK_PATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_INTERNAL_PLATFORM_ABI.rst b/share/cmake-3.22/Help/variable/CMAKE_INTERNAL_PLATFORM_ABI.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_INTERNAL_PLATFORM_ABI.rst
rename to share/cmake-3.22/Help/variable/CMAKE_INTERNAL_PLATFORM_ABI.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION.rst b/share/cmake-3.22/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION.rst
new file mode 100644
index 0000000..cf7da76
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION.rst
@@ -0,0 +1,10 @@
+CMAKE_INTERPROCEDURAL_OPTIMIZATION
+----------------------------------
+
+.. versionadded:: 3.9
+
+Default value for :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` of targets.
+
+This variable is used to initialize the :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION`
+property on all the targets.  See that target property for additional
+information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst b/share/cmake-3.22/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
new file mode 100644
index 0000000..5b3ee77
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
@@ -0,0 +1,10 @@
+CMAKE_INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
+-------------------------------------------
+
+.. versionadded:: 3.9
+
+Default value for :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION_<CONFIG>` of targets.
+
+This variable is used to initialize the :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION_<CONFIG>`
+property on all the targets.  See that target property for additional
+information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_IOS_INSTALL_COMBINED.rst b/share/cmake-3.22/Help/variable/CMAKE_IOS_INSTALL_COMBINED.rst
new file mode 100644
index 0000000..cd7fd8d
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_IOS_INSTALL_COMBINED.rst
@@ -0,0 +1,10 @@
+CMAKE_IOS_INSTALL_COMBINED
+--------------------------
+
+.. versionadded:: 3.5
+
+Default value for :prop_tgt:`IOS_INSTALL_COMBINED` of targets.
+
+This variable is used to initialize the :prop_tgt:`IOS_INSTALL_COMBINED`
+property on all the targets.  See that target property for additional
+information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ISPC_HEADER_DIRECTORY.rst b/share/cmake-3.22/Help/variable/CMAKE_ISPC_HEADER_DIRECTORY.rst
new file mode 100644
index 0000000..a7c9cf6
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ISPC_HEADER_DIRECTORY.rst
@@ -0,0 +1,10 @@
+CMAKE_ISPC_HEADER_DIRECTORY
+----------------------------
+
+.. versionadded:: 3.19
+
+ISPC generated header output directory.
+
+This variable is used to initialize the :prop_tgt:`ISPC_HEADER_DIRECTORY`
+property on all the targets.  See the target property for additional
+information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ISPC_HEADER_SUFFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_ISPC_HEADER_SUFFIX.rst
new file mode 100644
index 0000000..c9fb709
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ISPC_HEADER_SUFFIX.rst
@@ -0,0 +1,10 @@
+CMAKE_ISPC_HEADER_SUFFIX
+------------------------
+
+.. versionadded:: 3.19.2
+
+Output suffix to be used for ISPC generated headers.
+
+This variable is used to initialize the :prop_tgt:`ISPC_HEADER_SUFFIX`
+property on all the targets.  See the target property for additional
+information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_ISPC_INSTRUCTION_SETS.rst b/share/cmake-3.22/Help/variable/CMAKE_ISPC_INSTRUCTION_SETS.rst
new file mode 100644
index 0000000..8a6005e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_ISPC_INSTRUCTION_SETS.rst
@@ -0,0 +1,9 @@
+CMAKE_ISPC_INSTRUCTION_SETS
+---------------------------
+
+.. versionadded:: 3.19
+
+Default value for :prop_tgt:`ISPC_INSTRUCTION_SETS` property of targets.
+
+This variable is used to initialize the :prop_tgt:`ISPC_INSTRUCTION_SETS` property
+on all targets. See the target property for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_JOB_POOLS.rst b/share/cmake-3.22/Help/variable/CMAKE_JOB_POOLS.rst
new file mode 100644
index 0000000..43d3c84
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_JOB_POOLS.rst
@@ -0,0 +1,8 @@
+CMAKE_JOB_POOLS
+---------------
+
+.. versionadded:: 3.11
+
+If the :prop_gbl:`JOB_POOLS` global property is not set, the value
+of this variable is used in its place.  See :prop_gbl:`JOB_POOLS`
+for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_JOB_POOL_COMPILE.rst b/share/cmake-3.22/Help/variable/CMAKE_JOB_POOL_COMPILE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_JOB_POOL_COMPILE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_JOB_POOL_COMPILE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_JOB_POOL_LINK.rst b/share/cmake-3.22/Help/variable/CMAKE_JOB_POOL_LINK.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_JOB_POOL_LINK.rst
rename to share/cmake-3.22/Help/variable/CMAKE_JOB_POOL_LINK.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_JOB_POOL_PRECOMPILE_HEADER.rst b/share/cmake-3.22/Help/variable/CMAKE_JOB_POOL_PRECOMPILE_HEADER.rst
new file mode 100644
index 0000000..1a6f66a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_JOB_POOL_PRECOMPILE_HEADER.rst
@@ -0,0 +1,8 @@
+CMAKE_JOB_POOL_PRECOMPILE_HEADER
+--------------------------------
+
+.. versionadded:: 3.17
+
+This variable is used to initialize the :prop_tgt:`JOB_POOL_PRECOMPILE_HEADER`
+property on all the targets. See :prop_tgt:`JOB_POOL_PRECOMPILE_HEADER`
+for additional information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE.rst
new file mode 100644
index 0000000..f539277
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE.rst
@@ -0,0 +1,11 @@
+CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE
+--------------------------------------
+
+.. versionadded:: 3.7.1
+
+When :ref:`Cross Compiling for Android` this variable contains the
+toolchain binutils machine name (e.g. ``gcc -dumpmachine``).  The
+binutils typically have a ``<machine>-`` prefix on their name.
+
+See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`
+and :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst
new file mode 100644
index 0000000..ff072ca
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst
@@ -0,0 +1,14 @@
+CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX
+-------------------------------------
+
+.. versionadded:: 3.7
+
+When :ref:`Cross Compiling for Android` this variable contains the absolute
+path prefixing the toolchain GNU compiler and its binutils.
+
+See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`
+and :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE`.
+
+For example, the path to the linker is::
+
+  ${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}ld${CMAKE_CXX_ANDROID_TOOLCHAIN_SUFFIX}
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst
new file mode 100644
index 0000000..d595280
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst
@@ -0,0 +1,10 @@
+CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX
+-------------------------------------
+
+.. versionadded:: 3.7
+
+When :ref:`Cross Compiling for Android` this variable contains the
+host platform suffix of the toolchain GNU compiler and its binutils.
+
+See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`
+and :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_ARCHIVE_APPEND.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_ARCHIVE_APPEND.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_ARCHIVE_APPEND.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_ARCHIVE_APPEND.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_ARCHIVE_CREATE.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_ARCHIVE_CREATE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_ARCHIVE_CREATE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_ARCHIVE_CREATE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_ARCHIVE_FINISH.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_ARCHIVE_FINISH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_ARCHIVE_FINISH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_ARCHIVE_FINISH.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_BYTE_ORDER.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_BYTE_ORDER.rst
new file mode 100644
index 0000000..78f0ae6
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_BYTE_ORDER.rst
@@ -0,0 +1,20 @@
+CMAKE_<LANG>_BYTE_ORDER
+-----------------------
+
+.. versionadded:: 3.20
+
+Byte order of ``<LANG>`` compiler target architecture, if known.
+If defined and not empty, the value is one of:
+
+``BIG_ENDIAN``
+  The target architecture is Big Endian.
+
+``LITTLE_ENDIAN``
+  The target architecture is Little Endian.
+
+This is defined for languages ``C``, ``CXX``, ``OBJC``, ``OBJCXX``,
+and ``CUDA``.
+
+If :variable:`CMAKE_OSX_ARCHITECTURES` specifies multiple architectures, the
+value of ``CMAKE_<LANG>_BYTE_ORDER`` is non-empty only if all architectures
+share the same byte order.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_CLANG_TIDY.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_CLANG_TIDY.rst
new file mode 100644
index 0000000..32e27b0
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_CLANG_TIDY.rst
@@ -0,0 +1,15 @@
+CMAKE_<LANG>_CLANG_TIDY
+-----------------------
+
+.. versionadded:: 3.6
+
+Default value for :prop_tgt:`<LANG>_CLANG_TIDY` target property
+when ``<LANG>`` is ``C``, ``CXX``, ``OBJC`` or ``OBJCXX``.
+
+This variable is used to initialize the property on each target as it is
+created.  For example:
+
+.. code-block:: cmake
+
+  set(CMAKE_CXX_CLANG_TIDY clang-tidy -checks=-*,readability-*)
+  add_executable(foo foo.cxx)
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER.rst
new file mode 100644
index 0000000..e694b33
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER.rst
@@ -0,0 +1,32 @@
+CMAKE_<LANG>_COMPILER
+---------------------
+
+The full path to the compiler for ``LANG``.
+
+This is the command that will be used as the ``<LANG>`` compiler.  Once
+set, you can not change this variable.
+
+Usage
+^^^^^
+
+This variable can be set by the user during the first time a build tree is configured.
+
+If a non-full path value is supplied then CMake will resolve the full path of
+the compiler.
+
+The variable could be set in a user supplied toolchain file or via `-D` on the command line.
+
+.. note::
+  Options that are required to make the compiler work correctly can be included
+  as items in a list; they can not be changed.
+
+.. code-block:: cmake
+
+  #set within user supplied toolchain file
+  set(CMAKE_C_COMPILER /full/path/to/qcc --arg1 --arg2)
+
+or
+
+.. code-block:: console
+
+  $ cmake ... -DCMAKE_C_COMPILER='qcc;--arg1;--arg2'
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_ABI.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_ABI.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_ABI.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_ABI.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_AR.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_AR.rst
new file mode 100644
index 0000000..74f2758
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_AR.rst
@@ -0,0 +1,9 @@
+CMAKE_<LANG>_COMPILER_AR
+------------------------
+
+.. versionadded:: 3.9
+
+A wrapper around ``ar`` adding the appropriate ``--plugin`` option for the
+compiler.
+
+See also :variable:`CMAKE_AR`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst
new file mode 100644
index 0000000..8057566
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst
@@ -0,0 +1,10 @@
+CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID
+-------------------------------------
+
+.. versionadded:: 3.10
+
+An internal variable subject to change.
+
+This is used to identify the variant of a compiler based on its target
+architecture.  For some compilers this is needed to determine the correct
+usage.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_EXTERNAL_TOOLCHAIN.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_EXTERNAL_TOOLCHAIN.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_EXTERNAL_TOOLCHAIN.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_EXTERNAL_TOOLCHAIN.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_FRONTEND_VARIANT.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_FRONTEND_VARIANT.rst
new file mode 100644
index 0000000..128b1fb
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_FRONTEND_VARIANT.rst
@@ -0,0 +1,18 @@
+CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT
+--------------------------------------
+
+.. versionadded:: 3.14
+
+Identification string of the compiler frontend variant.
+
+Some compilers have multiple, different frontends for accepting command
+line options.  (For example ``Clang`` originally only had a frontend
+compatible with the ``GNU`` compiler but since its port to Windows
+(``Clang-Cl``) it now also supports a frontend compatible with ``MSVC``.)
+When CMake detects such a compiler it sets this
+variable to what would have been the :variable:`CMAKE_<LANG>_COMPILER_ID` for
+the compiler whose frontend it resembles.
+
+.. note::
+  In other words, this variable describes what command line options
+  and language extensions the compiler frontend expects.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_ID.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_ID.rst
new file mode 100644
index 0000000..0abedde
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_ID.rst
@@ -0,0 +1,45 @@
+CMAKE_<LANG>_COMPILER_ID
+------------------------
+
+Compiler identification string.
+
+A short string unique to the compiler vendor.  Possible values
+include:
+
+::
+
+  Absoft = Absoft Fortran (absoft.com)
+  ADSP = Analog VisualDSP++ (analog.com)
+  AppleClang = Apple Clang (apple.com)
+  ARMCC = ARM Compiler (arm.com)
+  ARMClang = ARM Compiler based on Clang (arm.com)
+  Bruce = Bruce C Compiler
+  CCur = Concurrent Fortran (ccur.com)
+  Clang = LLVM Clang (clang.llvm.org)
+  Cray = Cray Compiler (cray.com)
+  Embarcadero, Borland = Embarcadero (embarcadero.com)
+  Flang = Flang LLVM Fortran Compiler
+  Fujitsu = Fujitsu HPC compiler (Trad mode)
+  FujitsuClang = Fujitsu HPC compiler (Clang mode)
+  G95 = G95 Fortran (g95.org)
+  GNU = GNU Compiler Collection (gcc.gnu.org)
+  GHS = Green Hills Software (www.ghs.com)
+  HP = Hewlett-Packard Compiler (hp.com)
+  IAR = IAR Systems (iar.com)
+  Intel = Intel Compiler (intel.com)
+  IntelLLVM = Intel LLVM-Based Compiler (intel.com)
+  MSVC = Microsoft Visual Studio (microsoft.com)
+  NVHPC = NVIDIA HPC SDK Compiler (nvidia.com)
+  NVIDIA = NVIDIA CUDA Compiler (nvidia.com)
+  OpenWatcom = Open Watcom (openwatcom.org)
+  PGI = The Portland Group (pgroup.com)
+  PathScale = PathScale (pathscale.com)
+  SDCC = Small Device C Compiler (sdcc.sourceforge.net)
+  SunPro = Oracle Solaris Studio (oracle.com)
+  TI = Texas Instruments (ti.com)
+  TinyCC = Tiny C Compiler (tinycc.org)
+  XL, VisualAge, zOS = IBM XL (ibm.com)
+  XLClang = IBM Clang-based XL (ibm.com)
+
+This variable is not guaranteed to be defined for all compilers or
+languages.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst
new file mode 100644
index 0000000..f16e594
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst
@@ -0,0 +1,12 @@
+CMAKE_<LANG>_COMPILER_LAUNCHER
+------------------------------
+
+.. versionadded:: 3.4
+
+Default value for :prop_tgt:`<LANG>_COMPILER_LAUNCHER` target property.
+This variable is used to initialize the property on each target as it is
+created.  This is done only when ``<LANG>`` is ``C``, ``CXX``, ``Fortran``,
+``HIP``, ``ISPC``, ``OBJC``, ``OBJCXX``, or ``CUDA``.
+
+This variable is initialized to the :envvar:`CMAKE_<LANG>_COMPILER_LAUNCHER`
+environment variable if it is set.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_LOADED.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_LOADED.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_LOADED.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_LOADED.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_PREDEFINES_COMMAND.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_PREDEFINES_COMMAND.rst
new file mode 100644
index 0000000..935329a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_PREDEFINES_COMMAND.rst
@@ -0,0 +1,10 @@
+CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND
+----------------------------------------
+
+.. versionadded:: 3.10
+
+Command that outputs the compiler pre definitions.
+
+See :prop_tgt:`AUTOMOC` which uses
+:variable:`CMAKE_CXX_COMPILER_PREDEFINES_COMMAND <CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND>`
+to generate the :prop_tgt:`AUTOMOC_COMPILER_PREDEFINES`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_RANLIB.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_RANLIB.rst
new file mode 100644
index 0000000..1d10b55
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_RANLIB.rst
@@ -0,0 +1,9 @@
+CMAKE_<LANG>_COMPILER_RANLIB
+----------------------------
+
+.. versionadded:: 3.9
+
+A wrapper around ``ranlib`` adding the appropriate ``--plugin`` option for the
+compiler.
+
+See also :variable:`CMAKE_RANLIB`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_TARGET.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_TARGET.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_TARGET.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_TARGET.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILER_VERSION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_VERSION.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_VERSION_INTERNAL.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_VERSION_INTERNAL.rst
new file mode 100644
index 0000000..596a989
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILER_VERSION_INTERNAL.rst
@@ -0,0 +1,10 @@
+CMAKE_<LANG>_COMPILER_VERSION_INTERNAL
+--------------------------------------
+
+.. versionadded:: 3.10
+
+An internal variable subject to change.
+
+This is used to identify the variant of a compiler based on an internal
+version number.  For some compilers this is needed to determine the
+correct usage.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILE_OBJECT.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILE_OBJECT.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_COMPILE_OBJECT.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_COMPILE_OBJECT.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_CPPCHECK.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_CPPCHECK.rst
new file mode 100644
index 0000000..5ae5faf
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_CPPCHECK.rst
@@ -0,0 +1,8 @@
+CMAKE_<LANG>_CPPCHECK
+---------------------
+
+.. versionadded:: 3.10
+
+Default value for :prop_tgt:`<LANG>_CPPCHECK` target property. This variable
+is used to initialize the property on each target as it is created.  This
+is done only when ``<LANG>`` is ``C`` or ``CXX``.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_CPPLINT.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_CPPLINT.rst
new file mode 100644
index 0000000..ab7b0fc
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_CPPLINT.rst
@@ -0,0 +1,8 @@
+CMAKE_<LANG>_CPPLINT
+--------------------
+
+.. versionadded:: 3.8
+
+Default value for :prop_tgt:`<LANG>_CPPLINT` target property. This variable
+is used to initialize the property on each target as it is created.  This
+is done only when ``<LANG>`` is ``C`` or ``CXX``.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_CREATE_SHARED_LIBRARY.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_CREATE_SHARED_LIBRARY.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_CREATE_SHARED_LIBRARY.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_CREATE_SHARED_LIBRARY.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_CREATE_SHARED_MODULE.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_CREATE_SHARED_MODULE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_CREATE_SHARED_MODULE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_CREATE_SHARED_MODULE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_CREATE_STATIC_LIBRARY.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_CREATE_STATIC_LIBRARY.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_CREATE_STATIC_LIBRARY.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_CREATE_STATIC_LIBRARY.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_EXTENSIONS.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_EXTENSIONS.rst
new file mode 100644
index 0000000..3a32002
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_EXTENSIONS.rst
@@ -0,0 +1,20 @@
+CMAKE_<LANG>_EXTENSIONS
+-----------------------
+
+The variations are:
+
+* :variable:`CMAKE_C_EXTENSIONS`
+* :variable:`CMAKE_CXX_EXTENSIONS`
+* :variable:`CMAKE_CUDA_EXTENSIONS`
+* :variable:`CMAKE_HIP_EXTENSIONS`
+* :variable:`CMAKE_OBJC_EXTENSIONS`
+* :variable:`CMAKE_OBJCXX_EXTENSIONS`
+
+Default values for :prop_tgt:`<LANG>_EXTENSIONS` target properties if set when
+a target is created.  For the compiler's default setting see
+:variable:`CMAKE_<LANG>_EXTENSIONS_DEFAULT`.
+
+For supported CMake versions see the respective pages.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_EXTENSIONS_DEFAULT.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_EXTENSIONS_DEFAULT.rst
new file mode 100644
index 0000000..a66453a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_EXTENSIONS_DEFAULT.rst
@@ -0,0 +1,10 @@
+CMAKE_<LANG>_EXTENSIONS_DEFAULT
+-------------------------------
+
+.. versionadded:: 3.22
+
+Compiler's default extensions mode. Used as the default for the
+:prop_tgt:`<LANG>_EXTENSIONS` target property when
+:variable:`CMAKE_<LANG>_EXTENSIONS` is not set (see :policy:`CMP0128`).
+
+This variable is read-only.  Modifying it is undefined behavior.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS.rst
new file mode 100644
index 0000000..2784397
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS.rst
@@ -0,0 +1,25 @@
+CMAKE_<LANG>_FLAGS
+------------------
+
+Flags for all build types.
+
+``<LANG>`` flags used regardless of the value of :variable:`CMAKE_BUILD_TYPE`.
+
+This is initialized for each language from environment variables:
+
+* ``CMAKE_C_FLAGS``:
+  Initialized by the :envvar:`CFLAGS` environment variable.
+* ``CMAKE_CXX_FLAGS``:
+  Initialized by the :envvar:`CXXFLAGS` environment variable.
+* ``CMAKE_CUDA_FLAGS``:
+  Initialized by the :envvar:`CUDAFLAGS` environment variable.
+* ``CMAKE_Fortran_FLAGS``:
+  Initialized by the :envvar:`FFLAGS` environment variable.
+
+This value is a command-line string fragment. Therefore, multiple options
+should be separated by spaces, and options with spaces should be quoted.
+
+The flags in this variable will be passed to the compiler before those
+in the per-configuration :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>` variant,
+and before flags added by the :command:`add_compile_options` or
+:command:`target_compile_options` commands.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_CONFIG.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_CONFIG.rst
new file mode 100644
index 0000000..f0900fd
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_CONFIG.rst
@@ -0,0 +1,9 @@
+CMAKE_<LANG>_FLAGS_<CONFIG>
+---------------------------
+
+Flags for language ``<LANG>`` when building for the ``<CONFIG>`` configuration.
+
+The flags in this variable will be passed to the compiler after those
+in the :variable:`CMAKE_<LANG>_FLAGS` variable, but before flags added
+by the :command:`add_compile_options` or :command:`target_compile_options`
+commands.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_CONFIG_INIT.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_CONFIG_INIT.rst
new file mode 100644
index 0000000..17669a2
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_CONFIG_INIT.rst
@@ -0,0 +1,12 @@
+CMAKE_<LANG>_FLAGS_<CONFIG>_INIT
+--------------------------------
+
+.. versionadded:: 3.11
+
+Value used to initialize the :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>` cache
+entry the first time a build tree is configured for language ``<LANG>``.
+This variable is meant to be set by a :variable:`toolchain file
+<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
+the value based on the environment and target platform.
+
+See also :variable:`CMAKE_<LANG>_FLAGS_INIT`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_DEBUG.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_DEBUG.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_DEBUG.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_DEBUG.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_DEBUG_INIT.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_DEBUG_INIT.rst
new file mode 100644
index 0000000..49c9e99
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_DEBUG_INIT.rst
@@ -0,0 +1,7 @@
+CMAKE_<LANG>_FLAGS_DEBUG_INIT
+-----------------------------
+
+.. versionadded:: 3.7
+
+This variable is the ``Debug`` variant of the
+:variable:`CMAKE_<LANG>_FLAGS_<CONFIG>_INIT` variable.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_INIT.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_INIT.rst
new file mode 100644
index 0000000..ca13a29
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_INIT.rst
@@ -0,0 +1,19 @@
+CMAKE_<LANG>_FLAGS_INIT
+-----------------------
+
+.. versionadded:: 3.7
+
+Value used to initialize the :variable:`CMAKE_<LANG>_FLAGS` cache entry
+the first time a build tree is configured for language ``<LANG>``.
+This variable is meant to be set by a :variable:`toolchain file
+<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
+the value based on the environment and target platform.  For example,
+the contents of a ``xxxFLAGS`` environment variable will be prepended,
+where ``xxx`` will be language-specific but not necessarily the same as
+``<LANG>`` (e.g. :envvar:`CXXFLAGS` for ``CXX``, :envvar:`FFLAGS` for
+``Fortran``, and so on).
+This value is a command-line string fragment. Therefore, multiple options
+should be separated by spaces, and options with spaces should be quoted.
+
+See also the configuration-specific
+:variable:`CMAKE_<LANG>_FLAGS_<CONFIG>_INIT` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL_INIT.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL_INIT.rst
new file mode 100644
index 0000000..3600909
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL_INIT.rst
@@ -0,0 +1,7 @@
+CMAKE_<LANG>_FLAGS_MINSIZEREL_INIT
+----------------------------------
+
+.. versionadded:: 3.7
+
+This variable is the ``MinSizeRel`` variant of the
+:variable:`CMAKE_<LANG>_FLAGS_<CONFIG>_INIT` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_RELEASE.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_RELEASE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_RELEASE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_RELEASE.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_RELEASE_INIT.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_RELEASE_INIT.rst
new file mode 100644
index 0000000..e889852
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_RELEASE_INIT.rst
@@ -0,0 +1,7 @@
+CMAKE_<LANG>_FLAGS_RELEASE_INIT
+-------------------------------
+
+.. versionadded:: 3.7
+
+This variable is the ``Release`` variant of the
+:variable:`CMAKE_<LANG>_FLAGS_<CONFIG>_INIT` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT.rst
new file mode 100644
index 0000000..b42caee
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT.rst
@@ -0,0 +1,7 @@
+CMAKE_<LANG>_FLAGS_RELWITHDEBINFO_INIT
+--------------------------------------
+
+.. versionadded:: 3.7
+
+This variable is the ``RelWithDebInfo`` variant of the
+:variable:`CMAKE_<LANG>_FLAGS_<CONFIG>_INIT` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_IGNORE_EXTENSIONS.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_IGNORE_EXTENSIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_IGNORE_EXTENSIONS.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_IGNORE_EXTENSIONS.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst
new file mode 100644
index 0000000..081c4da
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst
@@ -0,0 +1,34 @@
+CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES
+--------------------------------------
+
+Implicit linker search path detected for language ``<LANG>``.
+
+Compilers typically pass directories containing language runtime
+libraries and default library search paths when they invoke a linker.
+These paths are implicit linker search directories for the compiler's
+language.  For each language enabled by the :command:`project` or
+:command:`enable_language` command, CMake automatically detects these
+directories and reports the results in this variable.
+
+When linking to a static library, CMake adds the implicit link directories
+from this variable for each language used in the static library (except
+the language whose compiler is used to drive linking).  In the case of an
+imported static library, the :prop_tgt:`IMPORTED_LINK_INTERFACE_LANGUAGES`
+target property lists the languages whose implicit link information is
+needed.  If any of the languages is not enabled, its value for the
+``CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES`` variable may instead be provided
+by the project.  Or, a :variable:`toolchain file <CMAKE_TOOLCHAIN_FILE>`
+may set the variable to a value known for the specified toolchain.  It will
+either be overridden when the language is enabled, or used as a fallback.
+
+Some toolchains read implicit directories from an environment variable such as
+``LIBRARY_PATH``.  If using such an environment variable, keep its value
+consistent when operating in a given build tree because CMake saves the value
+detected when first creating a build tree.
+
+If policy :policy:`CMP0060` is not set to ``NEW``, then when a library in one
+of these directories is given by full path to :command:`target_link_libraries`
+CMake will generate the ``-l<name>`` form on link lines for historical
+purposes.
+
+See also the :variable:`CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_IMPLICIT_LINK_LIBRARIES.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_IMPLICIT_LINK_LIBRARIES.rst
new file mode 100644
index 0000000..0c25489
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_IMPLICIT_LINK_LIBRARIES.rst
@@ -0,0 +1,24 @@
+CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES
+------------------------------------
+
+Implicit link libraries and flags detected for language ``<LANG>``.
+
+Compilers typically pass language runtime library names and other
+flags when they invoke a linker.  These flags are implicit link
+options for the compiler's language.  For each language enabled
+by the :command:`project` or :command:`enable_language` command,
+CMake automatically detects these libraries and flags and reports
+the results in this variable.
+
+When linking to a static library, CMake adds the implicit link libraries and
+flags from this variable for each language used in the static library (except
+the language whose compiler is used to drive linking).  In the case of an
+imported static library, the :prop_tgt:`IMPORTED_LINK_INTERFACE_LANGUAGES`
+target property lists the languages whose implicit link information is
+needed.  If any of the languages is not enabled, its value for the
+``CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES`` variable may instead be provided
+by the project.  Or, a :variable:`toolchain file <CMAKE_TOOLCHAIN_FILE>`
+may set the variable to a value known for the specified toolchain.  It will
+either be overridden when the language is enabled, or used as a fallback.
+
+See also the :variable:`CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES` variable.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst
new file mode 100644
index 0000000..be6c210
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst
@@ -0,0 +1,8 @@
+CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE
+---------------------------------
+
+.. versionadded:: 3.3
+
+Default value for :prop_tgt:`<LANG>_INCLUDE_WHAT_YOU_USE` target property.
+This variable is used to initialize the property on each target as it is
+created.  This is done only when ``<LANG>`` is ``C`` or ``CXX``.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_LIBRARY_ARCHITECTURE.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_LIBRARY_ARCHITECTURE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_LIBRARY_ARCHITECTURE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_LIBRARY_ARCHITECTURE.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_LINKER_LAUNCHER.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINKER_LAUNCHER.rst
new file mode 100644
index 0000000..b76b939
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINKER_LAUNCHER.rst
@@ -0,0 +1,11 @@
+CMAKE_<LANG>_LINKER_LAUNCHER
+----------------------------
+
+.. versionadded:: 3.21
+
+Default value for :prop_tgt:`<LANG>_LINKER_LAUNCHER` target property. This
+variable is used to initialize the property on each target as it is created.
+This is done only when ``<LANG>`` is ``C``, ``CXX``, ``OBJC``, or ``OBJCXX``.
+
+This variable is initialized to the :envvar:`CMAKE_<LANG>_LINKER_LAUNCHER`
+environment variable if it is set.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_LINKER_PREFERENCE.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINKER_PREFERENCE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_LINKER_PREFERENCE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_LINKER_PREFERENCE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_LINKER_PREFERENCE_PROPAGATES.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINKER_PREFERENCE_PROPAGATES.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_LINKER_PREFERENCE_PROPAGATES.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_LINKER_PREFERENCE_PROPAGATES.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG.rst
new file mode 100644
index 0000000..471c351
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG.rst
@@ -0,0 +1,41 @@
+CMAKE_<LANG>_LINKER_WRAPPER_FLAG
+--------------------------------
+
+.. versionadded:: 3.13
+
+Defines the syntax of compiler driver option to pass options to the linker
+tool. It will be used to translate the ``LINKER:`` prefix in the link options
+(see :command:`add_link_options` and :command:`target_link_options`).
+
+This variable holds a :ref:`semicolon-separated list <CMake Language Lists>` of tokens.
+If a space (i.e. " ") is specified as last token, flag and ``LINKER:``
+arguments will be specified as separate arguments to the compiler driver.
+The :variable:`CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP` variable can be specified
+to manage concatenation of arguments.
+
+For example, for ``Clang`` we have:
+
+.. code-block:: cmake
+
+  set (CMAKE_C_LINKER_WRAPPER_FLAG "-Xlinker" " ")
+
+Specifying ``"LINKER:-z,defs"`` will be transformed in
+``-Xlinker -z -Xlinker defs``.
+
+For ``GNU GCC``:
+
+.. code-block:: cmake
+
+  set (CMAKE_C_LINKER_WRAPPER_FLAG "-Wl,")
+  set (CMAKE_C_LINKER_WRAPPER_FLAG_SEP ",")
+
+Specifying ``"LINKER:-z,defs"`` will be transformed in ``-Wl,-z,defs``.
+
+And for ``SunPro``:
+
+.. code-block:: cmake
+
+  set (CMAKE_C_LINKER_WRAPPER_FLAG "-Qoption" "ld" " ")
+  set (CMAKE_C_LINKER_WRAPPER_FLAG_SEP ",")
+
+Specifying ``"LINKER:-z,defs"`` will be transformed in ``-Qoption ld -z,defs``.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG_SEP.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG_SEP.rst
new file mode 100644
index 0000000..a3895af
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG_SEP.rst
@@ -0,0 +1,11 @@
+CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP
+------------------------------------
+
+.. versionadded:: 3.13
+
+This variable is used with :variable:`CMAKE_<LANG>_LINKER_WRAPPER_FLAG`
+variable to format ``LINKER:`` prefix in the link options
+(see :command:`add_link_options` and :command:`target_link_options`).
+
+When specified, arguments of the ``LINKER:`` prefix will be concatenated using
+this value as separator.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_LINK_EXECUTABLE.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINK_EXECUTABLE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_LINK_EXECUTABLE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_LINK_EXECUTABLE.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_LINK_LIBRARY_FILE_FLAG.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINK_LIBRARY_FILE_FLAG.rst
new file mode 100644
index 0000000..23ece88
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINK_LIBRARY_FILE_FLAG.rst
@@ -0,0 +1,10 @@
+CMAKE_<LANG>_LINK_LIBRARY_FILE_FLAG
+-----------------------------------
+
+.. versionadded:: 3.16
+
+Language-specific flag to be used to link a library specified by
+a path to its file.
+
+The flag will be used before a library file path is given to the
+linker.  This is needed only on very few platforms.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_LINK_LIBRARY_FLAG.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINK_LIBRARY_FLAG.rst
new file mode 100644
index 0000000..0f528db
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINK_LIBRARY_FLAG.rst
@@ -0,0 +1,9 @@
+CMAKE_<LANG>_LINK_LIBRARY_FLAG
+------------------------------
+
+.. versionadded:: 3.16
+
+Flag to be used to link a library into a shared library or executable.
+
+This flag will be used to specify a library to link to a shared library or an
+executable for the specific language.  On most compilers this is ``-l``.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_LINK_LIBRARY_SUFFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINK_LIBRARY_SUFFIX.rst
new file mode 100644
index 0000000..359e29f
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINK_LIBRARY_SUFFIX.rst
@@ -0,0 +1,8 @@
+CMAKE_<LANG>_LINK_LIBRARY_SUFFIX
+--------------------------------
+
+.. versionadded:: 3.16
+
+Language-specific suffix for libraries that you link to.
+
+The suffix to use for the end of a library filename, ``.lib`` on Windows.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_LINK_WHAT_YOU_USE_FLAG.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINK_WHAT_YOU_USE_FLAG.rst
new file mode 100644
index 0000000..5004530
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_LINK_WHAT_YOU_USE_FLAG.rst
@@ -0,0 +1,9 @@
+CMAKE_<LANG>_LINK_WHAT_YOU_USE_FLAG
+-----------------------------------
+
+.. versionadded:: 3.22
+
+Linker flag to be used to configure linker so that all specified libraries on
+the command line will be linked into the target.
+
+See also variable :variable:`CMAKE_LINK_WHAT_YOU_USE_CHECK`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_OUTPUT_EXTENSION.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_OUTPUT_EXTENSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_OUTPUT_EXTENSION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_OUTPUT_EXTENSION.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_PLATFORM_ID.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_PLATFORM_ID.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_PLATFORM_ID.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_PLATFORM_ID.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_SIMULATE_ID.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_SIMULATE_ID.rst
new file mode 100644
index 0000000..3226352
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_SIMULATE_ID.rst
@@ -0,0 +1,13 @@
+CMAKE_<LANG>_SIMULATE_ID
+------------------------
+
+Identification string of the "simulated" compiler.
+
+Some compilers simulate other compilers to serve as drop-in
+replacements.  When CMake detects such a compiler it sets this
+variable to what would have been the :variable:`CMAKE_<LANG>_COMPILER_ID` for
+the simulated compiler.
+
+.. note::
+  In other words, this variable describes the ABI compatibility
+  of the generated code.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_SIMULATE_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_SIMULATE_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_SIMULATE_VERSION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_SIMULATE_VERSION.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_SIZEOF_DATA_PTR.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_SIZEOF_DATA_PTR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_SIZEOF_DATA_PTR.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_SIZEOF_DATA_PTR.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_SOURCE_FILE_EXTENSIONS.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_SOURCE_FILE_EXTENSIONS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_SOURCE_FILE_EXTENSIONS.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_SOURCE_FILE_EXTENSIONS.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_STANDARD.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_STANDARD.rst
new file mode 100644
index 0000000..0c41e19
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_STANDARD.rst
@@ -0,0 +1,19 @@
+CMAKE_<LANG>_STANDARD
+---------------------
+
+The variations are:
+
+* :variable:`CMAKE_C_STANDARD`
+* :variable:`CMAKE_CXX_STANDARD`
+* :variable:`CMAKE_CUDA_STANDARD`
+* :variable:`CMAKE_HIP_STANDARD`
+* :variable:`CMAKE_OBJC_STANDARD`
+* :variable:`CMAKE_OBJCXX_STANDARD`
+
+Default values for :prop_tgt:`<LANG>_STANDARD` target properties if set when a
+target is created.
+
+For supported CMake versions see the respective pages.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_STANDARD_DEFAULT.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_STANDARD_DEFAULT.rst
new file mode 100644
index 0000000..eb63d20
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_STANDARD_DEFAULT.rst
@@ -0,0 +1,7 @@
+CMAKE_<LANG>_STANDARD_DEFAULT
+-----------------------------
+
+.. versionadded:: 3.9
+
+The compiler's default standard for the language ``<LANG>``. Empty if the
+compiler has no conception of standard levels.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES.rst
new file mode 100644
index 0000000..24aca8b
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES.rst
@@ -0,0 +1,16 @@
+CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES
+-----------------------------------------
+
+.. versionadded:: 3.6
+
+Include directories to be used for every source file compiled with
+the ``<LANG>`` compiler.  This is meant for specification of system
+include directories needed by the language for the current platform.
+The directories always appear at the end of the include path passed
+to the compiler.
+
+This variable should not be set by project code.  It is meant to be set by
+CMake's platform information modules for the current toolchain, or by a
+toolchain file when used with :variable:`CMAKE_TOOLCHAIN_FILE`.
+
+See also :variable:`CMAKE_<LANG>_STANDARD_LIBRARIES`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_STANDARD_LIBRARIES.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_STANDARD_LIBRARIES.rst
new file mode 100644
index 0000000..d5f3351
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_STANDARD_LIBRARIES.rst
@@ -0,0 +1,14 @@
+CMAKE_<LANG>_STANDARD_LIBRARIES
+-------------------------------
+
+.. versionadded:: 3.6
+
+Libraries linked into every executable and shared library linked
+for language ``<LANG>``.  This is meant for specification of system
+libraries needed by the language for the current platform.
+
+This variable should not be set by project code.  It is meant to be set by
+CMake's platform information modules for the current toolchain, or by a
+toolchain file when used with :variable:`CMAKE_TOOLCHAIN_FILE`.
+
+See also :variable:`CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LANG_STANDARD_REQUIRED.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_STANDARD_REQUIRED.rst
new file mode 100644
index 0000000..d7fa9b6
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LANG_STANDARD_REQUIRED.rst
@@ -0,0 +1,19 @@
+CMAKE_<LANG>_STANDARD_REQUIRED
+------------------------------
+
+The variations are:
+
+* :variable:`CMAKE_C_STANDARD_REQUIRED`
+* :variable:`CMAKE_CXX_STANDARD_REQUIRED`
+* :variable:`CMAKE_CUDA_STANDARD_REQUIRED`
+* :variable:`CMAKE_HIP_STANDARD_REQUIRED`
+* :variable:`CMAKE_OBJC_STANDARD_REQUIRED`
+* :variable:`CMAKE_OBJCXX_STANDARD_REQUIRED`
+
+Default values for :prop_tgt:`<LANG>_STANDARD_REQUIRED` target properties if
+set when a target is created.
+
+For supported CMake versions see the respective pages.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LANG_VISIBILITY_PRESET.rst b/share/cmake-3.22/Help/variable/CMAKE_LANG_VISIBILITY_PRESET.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LANG_VISIBILITY_PRESET.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LANG_VISIBILITY_PRESET.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LIBRARY_ARCHITECTURE.rst b/share/cmake-3.22/Help/variable/CMAKE_LIBRARY_ARCHITECTURE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LIBRARY_ARCHITECTURE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LIBRARY_ARCHITECTURE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LIBRARY_ARCHITECTURE_REGEX.rst b/share/cmake-3.22/Help/variable/CMAKE_LIBRARY_ARCHITECTURE_REGEX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LIBRARY_ARCHITECTURE_REGEX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LIBRARY_ARCHITECTURE_REGEX.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY.rst b/share/cmake-3.22/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.22/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst
new file mode 100644
index 0000000..08f95c4
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst
@@ -0,0 +1,11 @@
+CMAKE_LIBRARY_OUTPUT_DIRECTORY_<CONFIG>
+---------------------------------------
+
+.. versionadded:: 3.3
+
+Where to put all the :ref:`LIBRARY <Library Output Artifacts>`
+target files when built for a specific configuration.
+
+This variable is used to initialize the
+:prop_tgt:`LIBRARY_OUTPUT_DIRECTORY_<CONFIG>` property on all the targets.
+See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LIBRARY_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_LIBRARY_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LIBRARY_PATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LIBRARY_PATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LIBRARY_PATH_FLAG.rst b/share/cmake-3.22/Help/variable/CMAKE_LIBRARY_PATH_FLAG.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LIBRARY_PATH_FLAG.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LIBRARY_PATH_FLAG.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LINK_DEF_FILE_FLAG.rst b/share/cmake-3.22/Help/variable/CMAKE_LINK_DEF_FILE_FLAG.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LINK_DEF_FILE_FLAG.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LINK_DEF_FILE_FLAG.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LINK_DEPENDS_NO_SHARED.rst b/share/cmake-3.22/Help/variable/CMAKE_LINK_DEPENDS_NO_SHARED.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LINK_DEPENDS_NO_SHARED.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LINK_DEPENDS_NO_SHARED.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LINK_DIRECTORIES_BEFORE.rst b/share/cmake-3.22/Help/variable/CMAKE_LINK_DIRECTORIES_BEFORE.rst
new file mode 100644
index 0000000..f120866
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LINK_DIRECTORIES_BEFORE.rst
@@ -0,0 +1,11 @@
+CMAKE_LINK_DIRECTORIES_BEFORE
+-----------------------------
+
+.. versionadded:: 3.13
+
+Whether to append or prepend directories by default in
+:command:`link_directories`.
+
+This variable affects the default behavior of the :command:`link_directories`
+command.  Setting this variable to ``ON`` is equivalent to using the ``BEFORE``
+option in all uses of that command.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LINK_INTERFACE_LIBRARIES.rst b/share/cmake-3.22/Help/variable/CMAKE_LINK_INTERFACE_LIBRARIES.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LINK_INTERFACE_LIBRARIES.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LINK_INTERFACE_LIBRARIES.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LINK_LIBRARY_FILE_FLAG.rst b/share/cmake-3.22/Help/variable/CMAKE_LINK_LIBRARY_FILE_FLAG.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LINK_LIBRARY_FILE_FLAG.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LINK_LIBRARY_FILE_FLAG.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LINK_LIBRARY_FLAG.rst b/share/cmake-3.22/Help/variable/CMAKE_LINK_LIBRARY_FLAG.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LINK_LIBRARY_FLAG.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LINK_LIBRARY_FLAG.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_LINK_LIBRARY_SUFFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_LINK_LIBRARY_SUFFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_LINK_LIBRARY_SUFFIX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_LINK_LIBRARY_SUFFIX.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LINK_SEARCH_END_STATIC.rst b/share/cmake-3.22/Help/variable/CMAKE_LINK_SEARCH_END_STATIC.rst
new file mode 100644
index 0000000..e86f639
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LINK_SEARCH_END_STATIC.rst
@@ -0,0 +1,21 @@
+CMAKE_LINK_SEARCH_END_STATIC
+----------------------------
+
+.. versionadded:: 3.4
+
+End a link line such that static system libraries are used.
+
+Some linkers support switches such as ``-Bstatic`` and ``-Bdynamic`` to
+determine whether to use static or shared libraries for ``-lXXX`` options.
+CMake uses these options to set the link type for libraries whose full
+paths are not known or (in some cases) are in implicit link
+directories for the platform.  By default CMake adds an option at the
+end of the library list (if necessary) to set the linker search type
+back to its starting type.  This property switches the final linker
+search type to ``-Bstatic`` regardless of how it started.
+
+This variable is used to initialize the target property
+:prop_tgt:`LINK_SEARCH_END_STATIC` for all targets. If set, its
+value is also used by the :command:`try_compile` command.
+
+See also :variable:`CMAKE_LINK_SEARCH_START_STATIC`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LINK_SEARCH_START_STATIC.rst b/share/cmake-3.22/Help/variable/CMAKE_LINK_SEARCH_START_STATIC.rst
new file mode 100644
index 0000000..ab1837c
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LINK_SEARCH_START_STATIC.rst
@@ -0,0 +1,22 @@
+CMAKE_LINK_SEARCH_START_STATIC
+------------------------------
+
+.. versionadded:: 3.4
+
+Assume the linker looks for static libraries by default.
+
+Some linkers support switches such as ``-Bstatic`` and ``-Bdynamic`` to
+determine whether to use static or shared libraries for ``-lXXX`` options.
+CMake uses these options to set the link type for libraries whose full
+paths are not known or (in some cases) are in implicit link
+directories for the platform.  By default the linker search type is
+assumed to be ``-Bdynamic`` at the beginning of the library list.  This
+property switches the assumption to ``-Bstatic``.  It is intended for use
+when linking an executable statically (e.g.  with the GNU ``-static``
+option).
+
+This variable is used to initialize the target property
+:prop_tgt:`LINK_SEARCH_START_STATIC` for all targets.  If set, its
+value is also used by the :command:`try_compile` command.
+
+See also :variable:`CMAKE_LINK_SEARCH_END_STATIC`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LINK_WHAT_YOU_USE.rst b/share/cmake-3.22/Help/variable/CMAKE_LINK_WHAT_YOU_USE.rst
new file mode 100644
index 0000000..bca4519
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LINK_WHAT_YOU_USE.rst
@@ -0,0 +1,8 @@
+CMAKE_LINK_WHAT_YOU_USE
+-----------------------
+
+.. versionadded:: 3.7
+
+Default value for :prop_tgt:`LINK_WHAT_YOU_USE` target property.
+This variable is used to initialize the property on each target as it is
+created.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_LINK_WHAT_YOU_USE_CHECK.rst b/share/cmake-3.22/Help/variable/CMAKE_LINK_WHAT_YOU_USE_CHECK.rst
new file mode 100644
index 0000000..e626641
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_LINK_WHAT_YOU_USE_CHECK.rst
@@ -0,0 +1,10 @@
+CMAKE_LINK_WHAT_YOU_USE_CHECK
+-----------------------------
+
+.. versionadded:: 3.22
+
+Defines the command executed after the link step to check libraries usage.
+This check is currently only defined on ``ELF`` platforms with value
+``ldd -u -r``.
+
+See also :variable:`CMAKE_<LANG>_LINK_WHAT_YOU_USE_FLAG` variables.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MACOSX_BUNDLE.rst b/share/cmake-3.22/Help/variable/CMAKE_MACOSX_BUNDLE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_MACOSX_BUNDLE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_MACOSX_BUNDLE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MACOSX_RPATH.rst b/share/cmake-3.22/Help/variable/CMAKE_MACOSX_RPATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_MACOSX_RPATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_MACOSX_RPATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MAJOR_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_MAJOR_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_MAJOR_VERSION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_MAJOR_VERSION.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MAKE_PROGRAM.rst b/share/cmake-3.22/Help/variable/CMAKE_MAKE_PROGRAM.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_MAKE_PROGRAM.rst
rename to share/cmake-3.22/Help/variable/CMAKE_MAKE_PROGRAM.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MAP_IMPORTED_CONFIG_CONFIG.rst b/share/cmake-3.22/Help/variable/CMAKE_MAP_IMPORTED_CONFIG_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_MAP_IMPORTED_CONFIG_CONFIG.rst
rename to share/cmake-3.22/Help/variable/CMAKE_MAP_IMPORTED_CONFIG_CONFIG.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_MATCH_COUNT.rst b/share/cmake-3.22/Help/variable/CMAKE_MATCH_COUNT.rst
new file mode 100644
index 0000000..deeec8b
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_MATCH_COUNT.rst
@@ -0,0 +1,11 @@
+CMAKE_MATCH_COUNT
+-----------------
+
+.. versionadded:: 3.2
+
+The number of matches with the last regular expression.
+
+When a regular expression match is used, CMake fills in
+:variable:`CMAKE_MATCH_<n>` variables with the match contents.
+The ``CMAKE_MATCH_COUNT`` variable holds the number of match
+expressions when these are filled.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_MATCH_n.rst b/share/cmake-3.22/Help/variable/CMAKE_MATCH_n.rst
new file mode 100644
index 0000000..a92788e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_MATCH_n.rst
@@ -0,0 +1,12 @@
+CMAKE_MATCH_<n>
+---------------
+
+.. versionadded:: 3.9
+
+Capture group ``<n>`` matched by the last regular expression, for groups
+0 through 9.  Group 0 is the entire match.  Groups 1 through 9 are the
+subexpressions captured by ``()`` syntax.
+
+When a regular expression match is used, CMake fills in ``CMAKE_MATCH_<n>``
+variables with the match contents.  The :variable:`CMAKE_MATCH_COUNT`
+variable holds the number of match expressions when these are filled.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_MAXIMUM_RECURSION_DEPTH.rst b/share/cmake-3.22/Help/variable/CMAKE_MAXIMUM_RECURSION_DEPTH.rst
new file mode 100644
index 0000000..59c60d3
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_MAXIMUM_RECURSION_DEPTH.rst
@@ -0,0 +1,35 @@
+CMAKE_MAXIMUM_RECURSION_DEPTH
+-----------------------------
+
+.. versionadded:: 3.14
+
+Maximum recursion depth for CMake scripts. It is intended to be set on the
+command line with ``-DCMAKE_MAXIMUM_RECURSION_DEPTH=<x>``, or within
+``CMakeLists.txt`` by projects that require a large recursion depth. Projects
+that set this variable should provide the user with a way to override it. For
+example:
+
+.. code-block:: cmake
+
+  # About to perform deeply recursive actions
+  if(NOT CMAKE_MAXIMUM_RECURSION_DEPTH)
+    set(CMAKE_MAXIMUM_RECURSION_DEPTH 2000)
+  endif()
+
+If it is not set, or is set to a non-integer value, a sensible default limit is
+used. If the recursion limit is reached, the script terminates immediately with
+a fatal error.
+
+Calling any of the following commands increases the recursion depth:
+
+* :command:`include`
+* :command:`find_package`
+* :command:`add_subdirectory`
+* :command:`try_compile`
+* :command:`ctest_read_custom_files`
+* :command:`ctest_run_script` (unless ``NEW_PROCESS`` is specified)
+* User-defined :command:`function`'s and :command:`macro`'s (note that
+  :command:`function` and :command:`macro` themselves don't increase recursion
+  depth)
+* Reading or writing variables that are being watched by a
+  :command:`variable_watch`
diff --git a/share/cmake-3.22/Help/variable/CMAKE_MESSAGE_CONTEXT.rst b/share/cmake-3.22/Help/variable/CMAKE_MESSAGE_CONTEXT.rst
new file mode 100644
index 0000000..41ace43
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_MESSAGE_CONTEXT.rst
@@ -0,0 +1,64 @@
+CMAKE_MESSAGE_CONTEXT
+---------------------
+
+.. versionadded:: 3.17
+
+When enabled by the :manual:`cmake <cmake(1)>` ``--log-context`` command line
+option or the :variable:`CMAKE_MESSAGE_CONTEXT_SHOW` variable, the
+:command:`message` command converts the ``CMAKE_MESSAGE_CONTEXT`` list into a
+dot-separated string surrounded by square brackets and prepends it to each line
+for messages of log levels ``NOTICE`` and below.
+
+For logging contexts to work effectively, projects should generally
+``APPEND`` and ``POP_BACK`` an item to the current value of
+``CMAKE_MESSAGE_CONTEXT`` rather than replace it.
+Projects should not assume the message context at the top of the source tree
+is empty, as there are scenarios where the context might have already been set
+(e.g. hierarchical projects).
+
+.. warning::
+
+  Valid context names are restricted to anything that could be used
+  as a CMake variable name.  All names that begin with an underscore
+  or the string ``cmake_`` are also reserved for use by CMake and
+  should not be used by projects.
+
+Example:
+
+.. code-block:: cmake
+
+  function(bar)
+    list(APPEND CMAKE_MESSAGE_CONTEXT "bar")
+    message(VERBOSE "bar VERBOSE message")
+  endfunction()
+
+  function(baz)
+    list(APPEND CMAKE_MESSAGE_CONTEXT "baz")
+    message(DEBUG "baz DEBUG message")
+  endfunction()
+
+  function(foo)
+    list(APPEND CMAKE_MESSAGE_CONTEXT "foo")
+    bar()
+    message(TRACE "foo TRACE message")
+    baz()
+  endfunction()
+
+  list(APPEND CMAKE_MESSAGE_CONTEXT "top")
+
+  message(VERBOSE "Before `foo`")
+  foo()
+  message(VERBOSE "After `foo`")
+
+  list(POP_BACK CMAKE_MESSAGE_CONTEXT)
+
+
+Which results in the following output:
+
+.. code-block:: none
+
+  -- [top] Before `foo`
+  -- [top.foo.bar] bar VERBOSE message
+  -- [top.foo] foo TRACE message
+  -- [top.foo.baz] baz DEBUG message
+  -- [top] After `foo`
diff --git a/share/cmake-3.22/Help/variable/CMAKE_MESSAGE_CONTEXT_SHOW.rst b/share/cmake-3.22/Help/variable/CMAKE_MESSAGE_CONTEXT_SHOW.rst
new file mode 100644
index 0000000..382e9ff
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_MESSAGE_CONTEXT_SHOW.rst
@@ -0,0 +1,17 @@
+CMAKE_MESSAGE_CONTEXT_SHOW
+--------------------------
+
+.. versionadded:: 3.17
+
+Setting this variable to true enables showing a context with each line
+logged by the :command:`message` command (see :variable:`CMAKE_MESSAGE_CONTEXT`
+for how the context itself is specified).
+
+This variable is an alternative to providing the ``--log-context`` option
+on the :manual:`cmake <cmake(1)>` command line.  Whereas the command line
+option will apply only to that one CMake run, setting
+``CMAKE_MESSAGE_CONTEXT_SHOW`` to true as a cache variable will ensure that
+subsequent CMake runs will continue to show the message context.
+
+Projects should not set ``CMAKE_MESSAGE_CONTEXT_SHOW``.  It is intended for
+users so that they may control whether or not to include context with messages.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_MESSAGE_INDENT.rst b/share/cmake-3.22/Help/variable/CMAKE_MESSAGE_INDENT.rst
new file mode 100644
index 0000000..c6263d2
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_MESSAGE_INDENT.rst
@@ -0,0 +1,34 @@
+CMAKE_MESSAGE_INDENT
+--------------------
+
+.. versionadded:: 3.16
+
+The :command:`message` command joins the strings from this list and for
+log levels of ``NOTICE`` and below, it prepends the resultant string to
+each line of the message.
+
+Example:
+
+.. code-block:: cmake
+
+  list(APPEND listVar one two three)
+
+  message(VERBOSE [[Collected items in the "listVar":]])
+  list(APPEND CMAKE_MESSAGE_INDENT "  ")
+
+  foreach(item IN LISTS listVar)
+    message(VERBOSE ${item})
+  endforeach()
+
+  list(POP_BACK CMAKE_MESSAGE_INDENT)
+  message(VERBOSE "No more indent")
+
+Which results in the following output:
+
+.. code-block:: none
+
+  -- Collected items in the "listVar":
+  --   one
+  --   two
+  --   three
+  -- No more indent
diff --git a/share/cmake-3.22/Help/variable/CMAKE_MESSAGE_LOG_LEVEL.rst b/share/cmake-3.22/Help/variable/CMAKE_MESSAGE_LOG_LEVEL.rst
new file mode 100644
index 0000000..3b45d1d
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_MESSAGE_LOG_LEVEL.rst
@@ -0,0 +1,17 @@
+CMAKE_MESSAGE_LOG_LEVEL
+-----------------------
+
+.. versionadded:: 3.17
+
+When set, this variable specifies the logging level used by the
+:command:`message` command.  Valid values are the same as those for the
+``--log-level`` command line option of the :manual:`cmake(1)` program.
+If this variable is set and the ``--log-level`` command line option is
+given, the command line option takes precedence.
+
+The main advantage to using this variable is to make a log level persist
+between CMake runs.  Setting it as a cache variable will ensure that
+subsequent CMake runs will continue to use the chosen log level.
+
+Projects should not set this variable, it is intended for users so that
+they may control the log level according to their own needs.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_MFC_FLAG.rst b/share/cmake-3.22/Help/variable/CMAKE_MFC_FLAG.rst
new file mode 100644
index 0000000..118e9c6
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_MFC_FLAG.rst
@@ -0,0 +1,20 @@
+CMAKE_MFC_FLAG
+--------------
+
+Use the MFC library for an executable or dll.
+
+Enables the use of the Microsoft Foundation Classes (MFC).
+It should be set to ``1`` for the static MFC library, and
+``2`` for the shared MFC library.  This is used in Visual Studio
+project files.
+
+Usage example:
+
+.. code-block:: cmake
+
+  add_definitions(-D_AFXDLL)
+  set(CMAKE_MFC_FLAG 2)
+  add_executable(CMakeSetup WIN32 ${SRCS})
+
+Contents of ``CMAKE_MFC_FLAG`` may use
+:manual:`generator expressions <cmake-generator-expressions(7)>`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_MINIMUM_REQUIRED_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_MINIMUM_REQUIRED_VERSION.rst
new file mode 100644
index 0000000..8d6b533
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_MINIMUM_REQUIRED_VERSION.rst
@@ -0,0 +1,6 @@
+CMAKE_MINIMUM_REQUIRED_VERSION
+------------------------------
+
+The ``<min>`` version of CMake given to the most recent call to the
+:command:`cmake_minimum_required(VERSION)` command in the current
+variable scope or any parent variable scope.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MINOR_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_MINOR_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_MINOR_VERSION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_MINOR_VERSION.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MODULE_LINKER_FLAGS.rst b/share/cmake-3.22/Help/variable/CMAKE_MODULE_LINKER_FLAGS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_MODULE_LINKER_FLAGS.rst
rename to share/cmake-3.22/Help/variable/CMAKE_MODULE_LINKER_FLAGS.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG.rst b/share/cmake-3.22/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG.rst
rename to share/cmake-3.22/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG_INIT.rst b/share/cmake-3.22/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG_INIT.rst
new file mode 100644
index 0000000..e8a6401
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG_INIT.rst
@@ -0,0 +1,12 @@
+CMAKE_MODULE_LINKER_FLAGS_<CONFIG>_INIT
+---------------------------------------
+
+.. versionadded:: 3.7
+
+Value used to initialize the :variable:`CMAKE_MODULE_LINKER_FLAGS_<CONFIG>`
+cache entry the first time a build tree is configured.
+This variable is meant to be set by a :variable:`toolchain file
+<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
+the value based on the environment and target platform.
+
+See also :variable:`CMAKE_MODULE_LINKER_FLAGS_INIT`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_MODULE_LINKER_FLAGS_INIT.rst b/share/cmake-3.22/Help/variable/CMAKE_MODULE_LINKER_FLAGS_INIT.rst
new file mode 100644
index 0000000..d59e9bf
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_MODULE_LINKER_FLAGS_INIT.rst
@@ -0,0 +1,13 @@
+CMAKE_MODULE_LINKER_FLAGS_INIT
+------------------------------
+
+.. versionadded:: 3.7
+
+Value used to initialize the :variable:`CMAKE_MODULE_LINKER_FLAGS`
+cache entry the first time a build tree is configured.
+This variable is meant to be set by a :variable:`toolchain file
+<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
+the value based on the environment and target platform.
+
+See also the configuration-specific variable
+:variable:`CMAKE_MODULE_LINKER_FLAGS_<CONFIG>_INIT`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_MODULE_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_MODULE_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_MODULE_PATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_MODULE_PATH.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_MSVCIDE_RUN_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_MSVCIDE_RUN_PATH.rst
new file mode 100644
index 0000000..721ceaa
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_MSVCIDE_RUN_PATH.rst
@@ -0,0 +1,12 @@
+CMAKE_MSVCIDE_RUN_PATH
+----------------------
+
+.. versionadded:: 3.10
+
+Extra PATH locations that should be used when executing
+:command:`add_custom_command` or :command:`add_custom_target` when using the
+:generator:`Visual Studio 9 2008` (or above) generator. This allows
+for running commands and using dll's that the IDE environment is not aware of.
+
+If not set explicitly the value is initialized by the ``CMAKE_MSVCIDE_RUN_PATH``
+environment variable, if set, and otherwise left empty.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_MSVC_RUNTIME_LIBRARY.rst b/share/cmake-3.22/Help/variable/CMAKE_MSVC_RUNTIME_LIBRARY.rst
new file mode 100644
index 0000000..14806e6
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_MSVC_RUNTIME_LIBRARY.rst
@@ -0,0 +1,34 @@
+CMAKE_MSVC_RUNTIME_LIBRARY
+--------------------------
+
+.. versionadded:: 3.15
+
+Select the MSVC runtime library for use by compilers targeting the MSVC ABI.
+This variable is used to initialize the :prop_tgt:`MSVC_RUNTIME_LIBRARY`
+property on all targets as they are created.  It is also propagated by
+calls to the :command:`try_compile` command into the test project.
+
+The allowed values are:
+
+.. include:: ../prop_tgt/MSVC_RUNTIME_LIBRARY-VALUES.txt
+
+Use :manual:`generator expressions <cmake-generator-expressions(7)>` to
+support per-configuration specification.  For example, the code:
+
+.. code-block:: cmake
+
+  set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
+
+selects for all following targets a multi-threaded statically-linked runtime
+library with or without debug information depending on the configuration.
+
+If this variable is not set then the :prop_tgt:`MSVC_RUNTIME_LIBRARY` target
+property will not be set automatically.  If that property is not set then
+CMake uses the default value ``MultiThreaded$<$<CONFIG:Debug>:Debug>DLL``
+to select a MSVC runtime library.
+
+.. note::
+
+  This variable has effect only when policy :policy:`CMP0091` is set to ``NEW``
+  prior to the first :command:`project` or :command:`enable_language` command
+  that enables a language using a compiler targeting the MSVC ABI.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_NETRC.rst b/share/cmake-3.22/Help/variable/CMAKE_NETRC.rst
new file mode 100644
index 0000000..bddfca5
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_NETRC.rst
@@ -0,0 +1,13 @@
+CMAKE_NETRC
+-----------
+
+.. versionadded:: 3.11
+
+This variable is used to initialize the ``NETRC`` option for the
+:command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands.
+See those commands for additional information.
+
+This variable is also used by the :module:`ExternalProject` and
+:module:`FetchContent` modules for internal calls to :command:`file(DOWNLOAD)`.
+
+The local option takes precedence over this variable.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_NETRC_FILE.rst b/share/cmake-3.22/Help/variable/CMAKE_NETRC_FILE.rst
new file mode 100644
index 0000000..af98170
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_NETRC_FILE.rst
@@ -0,0 +1,13 @@
+CMAKE_NETRC_FILE
+----------------
+
+.. versionadded:: 3.11
+
+This variable is used to initialize the ``NETRC_FILE`` option for the
+:command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands.
+See those commands for additional information.
+
+This variable is also used by the :module:`ExternalProject` and
+:module:`FetchContent` modules for internal calls to :command:`file(DOWNLOAD)`.
+
+The local option takes precedence over this variable.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX.rst
new file mode 100644
index 0000000..a8c4035
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX.rst
@@ -0,0 +1,29 @@
+CMAKE_NINJA_OUTPUT_PATH_PREFIX
+------------------------------
+
+.. versionadded:: 3.6
+
+Set output files path prefix for the :generator:`Ninja` generator.
+
+Every output files listed in the generated ``build.ninja`` will be
+prefixed by the contents of this variable (a trailing slash is
+appended if missing).  This is useful when the generated ninja file is
+meant to be embedded as a ``subninja`` file into a *super* ninja
+project.  For example, a ninja build file generated with a command
+like::
+
+  cd top-build-dir/sub &&
+  cmake -G Ninja -DCMAKE_NINJA_OUTPUT_PATH_PREFIX=sub/ path/to/source
+
+can be embedded in ``top-build-dir/build.ninja`` with a directive like
+this::
+
+  subninja sub/build.ninja
+
+The ``auto-regeneration`` rule in ``top-build-dir/build.ninja`` must have an
+order-only dependency on ``sub/build.ninja``.
+
+.. note::
+  When ``CMAKE_NINJA_OUTPUT_PATH_PREFIX`` is set, the project generated
+  by CMake cannot be used as a standalone project.  No default targets
+  are specified.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_NOT_USING_CONFIG_FLAGS.rst b/share/cmake-3.22/Help/variable/CMAKE_NOT_USING_CONFIG_FLAGS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_NOT_USING_CONFIG_FLAGS.rst
rename to share/cmake-3.22/Help/variable/CMAKE_NOT_USING_CONFIG_FLAGS.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_NO_BUILTIN_CHRPATH.rst b/share/cmake-3.22/Help/variable/CMAKE_NO_BUILTIN_CHRPATH.rst
new file mode 100644
index 0000000..b9b045e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_NO_BUILTIN_CHRPATH.rst
@@ -0,0 +1,17 @@
+CMAKE_NO_BUILTIN_CHRPATH
+------------------------
+
+Do not use the builtin binary editor to fix runtime library search
+paths on installation.
+
+When an ELF or XCOFF binary needs to have a different runtime library
+search path after installation than it does in the build tree, CMake uses
+a builtin editor to change the runtime search path in the installed copy.
+If this variable is set to true then CMake will relink the binary before
+installation instead of using its builtin editor.
+
+.. versionadded:: 3.20
+
+  This variable also applies to XCOFF binaries' LIBPATH.  Prior to the
+  addition of the XCOFF editor in CMake 3.20, this variable applied only
+  to ELF binaries' RPATH/RUNPATH.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_NO_SYSTEM_FROM_IMPORTED.rst b/share/cmake-3.22/Help/variable/CMAKE_NO_SYSTEM_FROM_IMPORTED.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_NO_SYSTEM_FROM_IMPORTED.rst
rename to share/cmake-3.22/Help/variable/CMAKE_NO_SYSTEM_FROM_IMPORTED.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_OBJCXX_EXTENSIONS.rst b/share/cmake-3.22/Help/variable/CMAKE_OBJCXX_EXTENSIONS.rst
new file mode 100644
index 0000000..46736aa
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_OBJCXX_EXTENSIONS.rst
@@ -0,0 +1,10 @@
+CMAKE_OBJCXX_EXTENSIONS
+-----------------------
+
+.. versionadded:: 3.16
+
+Default value for :prop_tgt:`OBJCXX_EXTENSIONS` target property if set when a
+target is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_OBJCXX_STANDARD.rst b/share/cmake-3.22/Help/variable/CMAKE_OBJCXX_STANDARD.rst
new file mode 100644
index 0000000..0913382
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_OBJCXX_STANDARD.rst
@@ -0,0 +1,10 @@
+CMAKE_OBJCXX_STANDARD
+---------------------
+
+.. versionadded:: 3.16
+
+Default value for :prop_tgt:`OBJCXX_STANDARD` target property if set when a
+target is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_OBJCXX_STANDARD_REQUIRED.rst b/share/cmake-3.22/Help/variable/CMAKE_OBJCXX_STANDARD_REQUIRED.rst
new file mode 100644
index 0000000..9afc4ea
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_OBJCXX_STANDARD_REQUIRED.rst
@@ -0,0 +1,10 @@
+CMAKE_OBJCXX_STANDARD_REQUIRED
+------------------------------
+
+.. versionadded:: 3.16
+
+Default value for :prop_tgt:`OBJCXX_STANDARD_REQUIRED` target property if set
+when a target is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_OBJC_EXTENSIONS.rst b/share/cmake-3.22/Help/variable/CMAKE_OBJC_EXTENSIONS.rst
new file mode 100644
index 0000000..9df11f1
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_OBJC_EXTENSIONS.rst
@@ -0,0 +1,10 @@
+CMAKE_OBJC_EXTENSIONS
+---------------------
+
+.. versionadded:: 3.16
+
+Default value for :prop_tgt:`OBJC_EXTENSIONS` target property if set when a
+target is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_OBJC_STANDARD.rst b/share/cmake-3.22/Help/variable/CMAKE_OBJC_STANDARD.rst
new file mode 100644
index 0000000..0b9b63f
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_OBJC_STANDARD.rst
@@ -0,0 +1,10 @@
+CMAKE_OBJC_STANDARD
+-------------------
+
+.. versionadded:: 3.16
+
+Default value for :prop_tgt:`OBJC_STANDARD` target property if set when a
+target is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_OBJC_STANDARD_REQUIRED.rst b/share/cmake-3.22/Help/variable/CMAKE_OBJC_STANDARD_REQUIRED.rst
new file mode 100644
index 0000000..c74db55
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_OBJC_STANDARD_REQUIRED.rst
@@ -0,0 +1,10 @@
+CMAKE_OBJC_STANDARD_REQUIRED
+----------------------------
+
+.. versionadded:: 3.16
+
+Default value for :prop_tgt:`OBJC_STANDARD_REQUIRED` target property if set
+when a target is created.
+
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features and a list of supported compilers.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_OBJECT_PATH_MAX.rst b/share/cmake-3.22/Help/variable/CMAKE_OBJECT_PATH_MAX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_OBJECT_PATH_MAX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_OBJECT_PATH_MAX.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_OPTIMIZE_DEPENDENCIES.rst b/share/cmake-3.22/Help/variable/CMAKE_OPTIMIZE_DEPENDENCIES.rst
new file mode 100644
index 0000000..0ffb902
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_OPTIMIZE_DEPENDENCIES.rst
@@ -0,0 +1,6 @@
+CMAKE_OPTIMIZE_DEPENDENCIES
+---------------------------
+
+.. versionadded:: 3.19
+
+Initializes the :prop_tgt:`OPTIMIZE_DEPENDENCIES` target property.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_OSX_ARCHITECTURES.rst b/share/cmake-3.22/Help/variable/CMAKE_OSX_ARCHITECTURES.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_OSX_ARCHITECTURES.rst
rename to share/cmake-3.22/Help/variable/CMAKE_OSX_ARCHITECTURES.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_OSX_DEPLOYMENT_TARGET.rst b/share/cmake-3.22/Help/variable/CMAKE_OSX_DEPLOYMENT_TARGET.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_OSX_DEPLOYMENT_TARGET.rst
rename to share/cmake-3.22/Help/variable/CMAKE_OSX_DEPLOYMENT_TARGET.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_OSX_SYSROOT.rst b/share/cmake-3.22/Help/variable/CMAKE_OSX_SYSROOT.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_OSX_SYSROOT.rst
rename to share/cmake-3.22/Help/variable/CMAKE_OSX_SYSROOT.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_OSX_VARIABLE.txt b/share/cmake-3.22/Help/variable/CMAKE_OSX_VARIABLE.txt
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_OSX_VARIABLE.txt
rename to share/cmake-3.22/Help/variable/CMAKE_OSX_VARIABLE.txt
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PARENT_LIST_FILE.rst b/share/cmake-3.22/Help/variable/CMAKE_PARENT_LIST_FILE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_PARENT_LIST_FILE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_PARENT_LIST_FILE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PATCH_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_PATCH_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_PATCH_VERSION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_PATCH_VERSION.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_PCH_INSTANTIATE_TEMPLATES.rst b/share/cmake-3.22/Help/variable/CMAKE_PCH_INSTANTIATE_TEMPLATES.rst
new file mode 100644
index 0000000..9867f17
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_PCH_INSTANTIATE_TEMPLATES.rst
@@ -0,0 +1,7 @@
+CMAKE_PCH_INSTANTIATE_TEMPLATES
+-------------------------------
+
+.. versionadded:: 3.19
+
+This variable is used to initialize the :prop_tgt:`PCH_INSTANTIATE_TEMPLATES`
+property of targets when they are created.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_PCH_WARN_INVALID.rst b/share/cmake-3.22/Help/variable/CMAKE_PCH_WARN_INVALID.rst
new file mode 100644
index 0000000..457a428
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_PCH_WARN_INVALID.rst
@@ -0,0 +1,7 @@
+CMAKE_PCH_WARN_INVALID
+----------------------
+
+.. versionadded:: 3.18
+
+This variable is used to initialize the :prop_tgt:`PCH_WARN_INVALID`
+property of targets when they are created.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PDB_OUTPUT_DIRECTORY.rst b/share/cmake-3.22/Help/variable/CMAKE_PDB_OUTPUT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_PDB_OUTPUT_DIRECTORY.rst
rename to share/cmake-3.22/Help/variable/CMAKE_PDB_OUTPUT_DIRECTORY.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PDB_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.22/Help/variable/CMAKE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
rename to share/cmake-3.22/Help/variable/CMAKE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_POLICY_DEFAULT_CMPNNNN.rst b/share/cmake-3.22/Help/variable/CMAKE_POLICY_DEFAULT_CMPNNNN.rst
new file mode 100644
index 0000000..d643fb8
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_POLICY_DEFAULT_CMPNNNN.rst
@@ -0,0 +1,24 @@
+CMAKE_POLICY_DEFAULT_CMP<NNNN>
+------------------------------
+
+Default for CMake Policy ``CMP<NNNN>`` when it is otherwise left unset.
+
+Commands :command:`cmake_minimum_required(VERSION)` and
+:command:`cmake_policy(VERSION)` by default leave policies introduced after
+the given version unset.  Set ``CMAKE_POLICY_DEFAULT_CMP<NNNN>`` to ``OLD``
+or ``NEW`` to specify the default for policy ``CMP<NNNN>``, where ``<NNNN>``
+is the policy number.
+
+This variable should not be set by a project in CMake code as a way to
+set its own policies; use :command:`cmake_policy(SET)` instead.  This
+variable is meant to externally set policies for which a project has
+not itself been updated:
+
+* Users running CMake may set this variable in the cache
+  (e.g. ``-DCMAKE_POLICY_DEFAULT_CMP<NNNN>=<OLD|NEW>``).  Set it to ``OLD``
+  to quiet a policy warning while using old behavior or to ``NEW`` to
+  try building the project with new behavior.
+
+* Projects may set this variable before a call to :command:`add_subdirectory`
+  that adds a third-party project in order to set its policies without
+  modifying third-party code.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst b/share/cmake-3.22/Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst
new file mode 100644
index 0000000..0231668
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst
@@ -0,0 +1,42 @@
+CMAKE_POLICY_WARNING_CMP<NNNN>
+------------------------------
+
+Explicitly enable or disable the warning when CMake Policy ``CMP<NNNN>``
+has not been set explicitly by :command:`cmake_policy` or implicitly
+by :command:`cmake_minimum_required`. This is meaningful
+only for the policies that do not warn by default:
+
+* ``CMAKE_POLICY_WARNING_CMP0025`` controls the warning for
+  policy :policy:`CMP0025`.
+* ``CMAKE_POLICY_WARNING_CMP0047`` controls the warning for
+  policy :policy:`CMP0047`.
+* ``CMAKE_POLICY_WARNING_CMP0056`` controls the warning for
+  policy :policy:`CMP0056`.
+* ``CMAKE_POLICY_WARNING_CMP0060`` controls the warning for
+  policy :policy:`CMP0060`.
+* ``CMAKE_POLICY_WARNING_CMP0065`` controls the warning for
+  policy :policy:`CMP0065`.
+* ``CMAKE_POLICY_WARNING_CMP0066`` controls the warning for
+  policy :policy:`CMP0066`.
+* ``CMAKE_POLICY_WARNING_CMP0067`` controls the warning for
+  policy :policy:`CMP0067`.
+* ``CMAKE_POLICY_WARNING_CMP0082`` controls the warning for
+  policy :policy:`CMP0082`.
+* ``CMAKE_POLICY_WARNING_CMP0089`` controls the warning for
+  policy :policy:`CMP0089`.
+* ``CMAKE_POLICY_WARNING_CMP0102`` controls the warning for
+  policy :policy:`CMP0102`.
+* ``CMAKE_POLICY_WARNING_CMP0112`` controls the warning for
+  policy :policy:`CMP0112`.
+* ``CMAKE_POLICY_WARNING_CMP0116`` controls the warning for
+  policy :policy:`CMP0116`.
+* ``CMAKE_POLICY_WARNING_CMP0126`` controls the warning for
+  policy :policy:`CMP0126`.
+* ``CMAKE_POLICY_WARNING_CMP0128`` controls the warning for
+  policy :policy:`CMP0128`.
+
+This variable should not be set by a project in CMake code.  Project
+developers running CMake may set this variable in their cache to
+enable the warning (e.g. ``-DCMAKE_POLICY_WARNING_CMP<NNNN>=ON``).
+Alternatively, running :manual:`cmake(1)` with the ``--debug-output``,
+``--trace``, or ``--trace-expand`` option will also enable the warning.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_POSITION_INDEPENDENT_CODE.rst b/share/cmake-3.22/Help/variable/CMAKE_POSITION_INDEPENDENT_CODE.rst
new file mode 100644
index 0000000..b010317
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_POSITION_INDEPENDENT_CODE.rst
@@ -0,0 +1,9 @@
+CMAKE_POSITION_INDEPENDENT_CODE
+-------------------------------
+
+Default value for :prop_tgt:`POSITION_INDEPENDENT_CODE` of targets.
+
+This variable is used to initialize the
+:prop_tgt:`POSITION_INDEPENDENT_CODE` property on all the targets.
+See that target property for additional information.  If set, its
+value is also used by the :command:`try_compile` command.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PREFIX_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_PREFIX_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_PREFIX_PATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_PREFIX_PATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PROGRAM_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_PROGRAM_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_PROGRAM_PATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_PROGRAM_PATH.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_PROJECT_DESCRIPTION.rst b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_DESCRIPTION.rst
new file mode 100644
index 0000000..95cbe40
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_DESCRIPTION.rst
@@ -0,0 +1,37 @@
+CMAKE_PROJECT_DESCRIPTION
+-------------------------
+
+.. versionadded:: 3.9
+
+The description of the top level project.
+
+This variable holds the description of the project as specified in the top
+level CMakeLists.txt file by a :command:`project` command.  In the event that
+the top level CMakeLists.txt contains multiple :command:`project` calls,
+the most recently called one from that top level CMakeLists.txt will determine
+the value that ``CMAKE_PROJECT_DESCRIPTION`` contains.  For example, consider
+the following top level CMakeLists.txt:
+
+.. code-block:: cmake
+
+  cmake_minimum_required(VERSION 3.0)
+  project(First DESCRIPTION "I am First")
+  project(Second DESCRIPTION "I am Second")
+  add_subdirectory(sub)
+  project(Third DESCRIPTION "I am Third")
+
+And ``sub/CMakeLists.txt`` with the following contents:
+
+.. code-block:: cmake
+
+  project(SubProj DESCRIPTION "I am SubProj")
+  message("CMAKE_PROJECT_DESCRIPTION = ${CMAKE_PROJECT_DESCRIPTION}")
+
+The most recently seen :command:`project` command from the top level
+CMakeLists.txt would be ``project(Second ...)``, so this will print::
+
+  CMAKE_PROJECT_DESCRIPTION = I am Second
+
+To obtain the description from the most recent call to :command:`project` in
+the current directory scope or above, see the :variable:`PROJECT_DESCRIPTION`
+variable.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_PROJECT_HOMEPAGE_URL.rst b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_HOMEPAGE_URL.rst
new file mode 100644
index 0000000..4c5debe
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_HOMEPAGE_URL.rst
@@ -0,0 +1,37 @@
+CMAKE_PROJECT_HOMEPAGE_URL
+--------------------------
+
+.. versionadded:: 3.12
+
+The homepage URL of the top level project.
+
+This variable holds the homepage URL of the project as specified in the top
+level CMakeLists.txt file by a :command:`project` command.  In the event that
+the top level CMakeLists.txt contains multiple :command:`project` calls,
+the most recently called one from that top level CMakeLists.txt will determine
+the value that ``CMAKE_PROJECT_HOMEPAGE_URL`` contains.  For example, consider
+the following top level CMakeLists.txt:
+
+.. code-block:: cmake
+
+  cmake_minimum_required(VERSION 3.0)
+  project(First HOMEPAGE_URL "http://first.example.com")
+  project(Second HOMEPAGE_URL "http://second.example.com")
+  add_subdirectory(sub)
+  project(Third HOMEPAGE_URL "http://third.example.com")
+
+And ``sub/CMakeLists.txt`` with the following contents:
+
+.. code-block:: cmake
+
+  project(SubProj HOMEPAGE_URL "http://subproj.example.com")
+  message("CMAKE_PROJECT_HOMEPAGE_URL = ${CMAKE_PROJECT_HOMEPAGE_URL}")
+
+The most recently seen :command:`project` command from the top level
+CMakeLists.txt would be ``project(Second ...)``, so this will print::
+
+  CMAKE_PROJECT_HOMEPAGE_URL = http://second.example.com
+
+To obtain the homepage URL from the most recent call to :command:`project` in
+the current directory scope or above, see the :variable:`PROJECT_HOMEPAGE_URL`
+variable.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_PROJECT_INCLUDE.rst b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_INCLUDE.rst
new file mode 100644
index 0000000..41d9e5d
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_INCLUDE.rst
@@ -0,0 +1,12 @@
+CMAKE_PROJECT_INCLUDE
+---------------------
+
+.. versionadded:: 3.15
+
+A CMake language file or module to be included as the last step of all
+:command:`project` command calls.  This is intended for injecting custom code
+into project builds without modifying their source.
+
+See also the :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE`,
+:variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE` and
+:variable:`CMAKE_PROJECT_INCLUDE_BEFORE` variables.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_PROJECT_INCLUDE_BEFORE.rst b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_INCLUDE_BEFORE.rst
new file mode 100644
index 0000000..c2fd0f8
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_INCLUDE_BEFORE.rst
@@ -0,0 +1,12 @@
+CMAKE_PROJECT_INCLUDE_BEFORE
+----------------------------
+
+.. versionadded:: 3.15
+
+A CMake language file or module to be included as the first step of all
+:command:`project` command calls.  This is intended for injecting custom code
+into project builds without modifying their source.
+
+See also the :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE`,
+:variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE` and
+:variable:`CMAKE_PROJECT_INCLUDE` variables.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_NAME.rst b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_NAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_PROJECT_NAME.rst
rename to share/cmake-3.22/Help/variable/CMAKE_PROJECT_NAME.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE.rst b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE_BEFORE.rst b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE_BEFORE.rst
new file mode 100644
index 0000000..39abb12
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE_BEFORE.rst
@@ -0,0 +1,13 @@
+CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE
+-------------------------------------------
+
+.. versionadded:: 3.17
+
+A CMake language file or module to be included as the first step of any
+:command:`project` command calls that specify ``<PROJECT-NAME>`` as the project
+name.  This is intended for injecting custom code into project builds without
+modifying their source.
+
+See also the :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE`,
+:variable:`CMAKE_PROJECT_INCLUDE` and
+:variable:`CMAKE_PROJECT_INCLUDE_BEFORE` variables.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_PROJECT_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_VERSION.rst
new file mode 100644
index 0000000..450c136
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_VERSION.rst
@@ -0,0 +1,37 @@
+CMAKE_PROJECT_VERSION
+---------------------
+
+.. versionadded:: 3.12
+
+The version of the top level project.
+
+This variable holds the version of the project as specified in the top
+level CMakeLists.txt file by a :command:`project` command.  In the event that
+the top level CMakeLists.txt contains multiple :command:`project` calls,
+the most recently called one from that top level CMakeLists.txt will determine
+the value that ``CMAKE_PROJECT_VERSION`` contains.  For example, consider
+the following top level CMakeLists.txt:
+
+.. code-block:: cmake
+
+  cmake_minimum_required(VERSION 3.0)
+  project(First VERSION 1.2.3)
+  project(Second VERSION 3.4.5)
+  add_subdirectory(sub)
+  project(Third VERSION 6.7.8)
+
+And ``sub/CMakeLists.txt`` with the following contents:
+
+.. code-block:: cmake
+
+  project(SubProj VERSION 1)
+  message("CMAKE_PROJECT_VERSION = ${CMAKE_PROJECT_VERSION}")
+
+The most recently seen :command:`project` command from the top level
+CMakeLists.txt would be ``project(Second ...)``, so this will print::
+
+  CMAKE_PROJECT_VERSION = 3.4.5
+
+To obtain the version from the most recent call to :command:`project` in
+the current directory scope or above, see the :variable:`PROJECT_VERSION`
+variable.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_PROJECT_VERSION_MAJOR.rst b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_VERSION_MAJOR.rst
new file mode 100644
index 0000000..c7511e7
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_VERSION_MAJOR.rst
@@ -0,0 +1,11 @@
+CMAKE_PROJECT_VERSION_MAJOR
+---------------------------
+
+.. versionadded:: 3.12
+
+The major version of the top level project.
+
+This variable holds the major version of the project as specified in the top
+level CMakeLists.txt file by a :command:`project` command. Please see
+:variable:`CMAKE_PROJECT_VERSION` documentation for the behavior when
+multiple :command:`project` commands are used in the sources.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_PROJECT_VERSION_MINOR.rst b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_VERSION_MINOR.rst
new file mode 100644
index 0000000..dd91dcf
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_VERSION_MINOR.rst
@@ -0,0 +1,11 @@
+CMAKE_PROJECT_VERSION_MINOR
+---------------------------
+
+.. versionadded:: 3.12
+
+The minor version of the top level project.
+
+This variable holds the minor version of the project as specified in the top
+level CMakeLists.txt file by a :command:`project` command. Please see
+:variable:`CMAKE_PROJECT_VERSION` documentation for the behavior when
+multiple :command:`project` commands are used in the sources.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_PROJECT_VERSION_PATCH.rst b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_VERSION_PATCH.rst
new file mode 100644
index 0000000..61fd1f3
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_VERSION_PATCH.rst
@@ -0,0 +1,11 @@
+CMAKE_PROJECT_VERSION_PATCH
+---------------------------
+
+.. versionadded:: 3.12
+
+The patch version of the top level project.
+
+This variable holds the patch version of the project as specified in the top
+level CMakeLists.txt file by a :command:`project` command. Please see
+:variable:`CMAKE_PROJECT_VERSION` documentation for the behavior when
+multiple :command:`project` commands are used in the sources.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_PROJECT_VERSION_TWEAK.rst b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_VERSION_TWEAK.rst
new file mode 100644
index 0000000..0deae8b
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_PROJECT_VERSION_TWEAK.rst
@@ -0,0 +1,11 @@
+CMAKE_PROJECT_VERSION_TWEAK
+---------------------------
+
+.. versionadded:: 3.12
+
+The tweak version of the top level project.
+
+This variable holds the tweak version of the project as specified in the top
+level CMakeLists.txt file by a :command:`project` command. Please see
+:variable:`CMAKE_PROJECT_VERSION` documentation for the behavior when
+multiple :command:`project` commands are used in the sources.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_RANLIB.rst b/share/cmake-3.22/Help/variable/CMAKE_RANLIB.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_RANLIB.rst
rename to share/cmake-3.22/Help/variable/CMAKE_RANLIB.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_REQUIRE_FIND_PACKAGE_PackageName.rst b/share/cmake-3.22/Help/variable/CMAKE_REQUIRE_FIND_PACKAGE_PackageName.rst
new file mode 100644
index 0000000..893f1ae
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_REQUIRE_FIND_PACKAGE_PackageName.rst
@@ -0,0 +1,14 @@
+CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>
+----------------------------------------
+
+.. versionadded:: 3.22
+
+Variable for making :command:`find_package` call ``REQUIRED``.
+
+Every non-``REQUIRED`` :command:`find_package` call in a project can be
+turned into ``REQUIRED`` by setting the variable
+``CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>`` to ``TRUE``.
+This can be used to assert assumptions about build environment and to
+ensure the build will fail early if they do not hold.
+
+See also the :variable:`CMAKE_DISABLE_FIND_PACKAGE_<PackageName>` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_ROOT.rst b/share/cmake-3.22/Help/variable/CMAKE_ROOT.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_ROOT.rst
rename to share/cmake-3.22/Help/variable/CMAKE_ROOT.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_RULE_MESSAGES.rst b/share/cmake-3.22/Help/variable/CMAKE_RULE_MESSAGES.rst
new file mode 100644
index 0000000..39be2e9
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_RULE_MESSAGES.rst
@@ -0,0 +1,10 @@
+CMAKE_RULE_MESSAGES
+-------------------
+
+.. versionadded:: 3.13
+
+Specify whether to report a message for each make rule.
+
+If set in the cache it is used to initialize the value of the :prop_gbl:`RULE_MESSAGES` property.
+Users may disable the option in their local build tree to disable granular messages
+and report only as each target completes in Makefile builds.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY.rst b/share/cmake-3.22/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY.rst
rename to share/cmake-3.22/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.22/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst
new file mode 100644
index 0000000..c9c55c5
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst
@@ -0,0 +1,11 @@
+CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
+---------------------------------------
+
+.. versionadded:: 3.3
+
+Where to put all the :ref:`RUNTIME <Runtime Output Artifacts>`
+target files when built for a specific configuration.
+
+This variable is used to initialize the
+:prop_tgt:`RUNTIME_OUTPUT_DIRECTORY_<CONFIG>` property on all the targets.
+See that target property for additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SCRIPT_MODE_FILE.rst b/share/cmake-3.22/Help/variable/CMAKE_SCRIPT_MODE_FILE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SCRIPT_MODE_FILE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SCRIPT_MODE_FILE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SHARED_LIBRARY_PREFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_SHARED_LIBRARY_PREFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SHARED_LIBRARY_PREFIX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SHARED_LIBRARY_PREFIX.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SHARED_LIBRARY_SUFFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_SHARED_LIBRARY_SUFFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SHARED_LIBRARY_SUFFIX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SHARED_LIBRARY_SUFFIX.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SHARED_LINKER_FLAGS.rst b/share/cmake-3.22/Help/variable/CMAKE_SHARED_LINKER_FLAGS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SHARED_LINKER_FLAGS.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SHARED_LINKER_FLAGS.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG.rst b/share/cmake-3.22/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG_INIT.rst b/share/cmake-3.22/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG_INIT.rst
new file mode 100644
index 0000000..7f3dec7
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG_INIT.rst
@@ -0,0 +1,12 @@
+CMAKE_SHARED_LINKER_FLAGS_<CONFIG>_INIT
+---------------------------------------
+
+.. versionadded:: 3.7
+
+Value used to initialize the :variable:`CMAKE_SHARED_LINKER_FLAGS_<CONFIG>`
+cache entry the first time a build tree is configured.
+This variable is meant to be set by a :variable:`toolchain file
+<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
+the value based on the environment and target platform.
+
+See also :variable:`CMAKE_SHARED_LINKER_FLAGS_INIT`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_SHARED_LINKER_FLAGS_INIT.rst b/share/cmake-3.22/Help/variable/CMAKE_SHARED_LINKER_FLAGS_INIT.rst
new file mode 100644
index 0000000..6d51afe
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_SHARED_LINKER_FLAGS_INIT.rst
@@ -0,0 +1,13 @@
+CMAKE_SHARED_LINKER_FLAGS_INIT
+------------------------------
+
+.. versionadded:: 3.7
+
+Value used to initialize the :variable:`CMAKE_SHARED_LINKER_FLAGS`
+cache entry the first time a build tree is configured.
+This variable is meant to be set by a :variable:`toolchain file
+<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
+the value based on the environment and target platform.
+
+See also the configuration-specific variable
+:variable:`CMAKE_SHARED_LINKER_FLAGS_<CONFIG>_INIT`.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SHARED_MODULE_PREFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_SHARED_MODULE_PREFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SHARED_MODULE_PREFIX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SHARED_MODULE_PREFIX.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SHARED_MODULE_SUFFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_SHARED_MODULE_SUFFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SHARED_MODULE_SUFFIX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SHARED_MODULE_SUFFIX.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SIZEOF_VOID_P.rst b/share/cmake-3.22/Help/variable/CMAKE_SIZEOF_VOID_P.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SIZEOF_VOID_P.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SIZEOF_VOID_P.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SKIP_BUILD_RPATH.rst b/share/cmake-3.22/Help/variable/CMAKE_SKIP_BUILD_RPATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SKIP_BUILD_RPATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SKIP_BUILD_RPATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SKIP_INSTALL_ALL_DEPENDENCY.rst b/share/cmake-3.22/Help/variable/CMAKE_SKIP_INSTALL_ALL_DEPENDENCY.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SKIP_INSTALL_ALL_DEPENDENCY.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SKIP_INSTALL_ALL_DEPENDENCY.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SKIP_INSTALL_RPATH.rst b/share/cmake-3.22/Help/variable/CMAKE_SKIP_INSTALL_RPATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SKIP_INSTALL_RPATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SKIP_INSTALL_RPATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SKIP_INSTALL_RULES.rst b/share/cmake-3.22/Help/variable/CMAKE_SKIP_INSTALL_RULES.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SKIP_INSTALL_RULES.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SKIP_INSTALL_RULES.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SKIP_RPATH.rst b/share/cmake-3.22/Help/variable/CMAKE_SKIP_RPATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SKIP_RPATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SKIP_RPATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SOURCE_DIR.rst b/share/cmake-3.22/Help/variable/CMAKE_SOURCE_DIR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SOURCE_DIR.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SOURCE_DIR.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_STAGING_PREFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_STAGING_PREFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_STAGING_PREFIX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_STAGING_PREFIX.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_STATIC_LIBRARY_PREFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_STATIC_LIBRARY_PREFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_STATIC_LIBRARY_PREFIX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_STATIC_LIBRARY_PREFIX.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_STATIC_LIBRARY_SUFFIX.rst b/share/cmake-3.22/Help/variable/CMAKE_STATIC_LIBRARY_SUFFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_STATIC_LIBRARY_SUFFIX.rst
rename to share/cmake-3.22/Help/variable/CMAKE_STATIC_LIBRARY_SUFFIX.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_STATIC_LINKER_FLAGS.rst b/share/cmake-3.22/Help/variable/CMAKE_STATIC_LINKER_FLAGS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_STATIC_LINKER_FLAGS.rst
rename to share/cmake-3.22/Help/variable/CMAKE_STATIC_LINKER_FLAGS.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG.rst b/share/cmake-3.22/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG.rst
rename to share/cmake-3.22/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG_INIT.rst b/share/cmake-3.22/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG_INIT.rst
new file mode 100644
index 0000000..5e65ef2
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG_INIT.rst
@@ -0,0 +1,12 @@
+CMAKE_STATIC_LINKER_FLAGS_<CONFIG>_INIT
+---------------------------------------
+
+.. versionadded:: 3.7
+
+Value used to initialize the :variable:`CMAKE_STATIC_LINKER_FLAGS_<CONFIG>`
+cache entry the first time a build tree is configured.
+This variable is meant to be set by a :variable:`toolchain file
+<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
+the value based on the environment and target platform.
+
+See also :variable:`CMAKE_STATIC_LINKER_FLAGS_INIT`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_STATIC_LINKER_FLAGS_INIT.rst b/share/cmake-3.22/Help/variable/CMAKE_STATIC_LINKER_FLAGS_INIT.rst
new file mode 100644
index 0000000..cbf681c
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_STATIC_LINKER_FLAGS_INIT.rst
@@ -0,0 +1,13 @@
+CMAKE_STATIC_LINKER_FLAGS_INIT
+------------------------------
+
+.. versionadded:: 3.7
+
+Value used to initialize the :variable:`CMAKE_STATIC_LINKER_FLAGS`
+cache entry the first time a build tree is configured.
+This variable is meant to be set by a :variable:`toolchain file
+<CMAKE_TOOLCHAIN_FILE>`.  CMake may prepend or append content to
+the value based on the environment and target platform.
+
+See also the configuration-specific variable
+:variable:`CMAKE_STATIC_LINKER_FLAGS_<CONFIG>_INIT`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS.rst b/share/cmake-3.22/Help/variable/CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS.rst
new file mode 100644
index 0000000..5c1c8d1
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS.rst
@@ -0,0 +1,27 @@
+CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
+---------------------------------
+
+.. versionadded:: 3.8
+
+This variable contains a list of env vars as a list of tokens with the
+syntax ``var=value``.
+
+Example:
+
+.. code-block:: cmake
+
+  set(CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
+     "FOO=FOO1\;FOO2\;FOON"
+     "BAR=BAR1\;BAR2\;BARN"
+     "BAZ=BAZ1\;BAZ2\;BAZN"
+     "FOOBAR=FOOBAR1\;FOOBAR2\;FOOBARN"
+     "VALID="
+     )
+
+In case of malformed variables CMake will fail:
+
+.. code-block:: cmake
+
+  set(CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS
+      "THIS_IS_NOT_VALID"
+      )
diff --git a/share/cmake-3.22/Help/variable/CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE.rst b/share/cmake-3.22/Help/variable/CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE.rst
new file mode 100644
index 0000000..28b0dbd
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE.rst
@@ -0,0 +1,9 @@
+CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE
+---------------------------------------
+
+.. versionadded:: 3.8
+
+If this variable evaluates to ``ON`` at the end of the top-level
+``CMakeLists.txt`` file, the :generator:`Sublime Text 2` extra generator
+excludes the build tree from the ``.sublime-project`` if it is inside the
+source tree.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_SUPPRESS_REGENERATION.rst b/share/cmake-3.22/Help/variable/CMAKE_SUPPRESS_REGENERATION.rst
new file mode 100644
index 0000000..48490ff
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_SUPPRESS_REGENERATION.rst
@@ -0,0 +1,13 @@
+CMAKE_SUPPRESS_REGENERATION
+---------------------------
+
+.. versionadded:: 3.12
+
+If ``CMAKE_SUPPRESS_REGENERATION`` is ``OFF``, which is default, then CMake
+adds a special target on which all other targets depend that checks the build
+system and optionally re-runs CMake to regenerate the build system when
+the target specification source changes.
+
+If this variable evaluates to ``ON`` at the end of the top-level
+``CMakeLists.txt`` file, CMake will not add the regeneration target to the
+build system or perform any build system checks.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SYSROOT.rst b/share/cmake-3.22/Help/variable/CMAKE_SYSROOT.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SYSROOT.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SYSROOT.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_SYSROOT_COMPILE.rst b/share/cmake-3.22/Help/variable/CMAKE_SYSROOT_COMPILE.rst
new file mode 100644
index 0000000..4aea48e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_SYSROOT_COMPILE.rst
@@ -0,0 +1,11 @@
+CMAKE_SYSROOT_COMPILE
+---------------------
+
+.. versionadded:: 3.9
+
+Path to pass to the compiler in the ``--sysroot`` flag when compiling source
+files.  This is the same as :variable:`CMAKE_SYSROOT` but is used only for
+compiling sources and not linking.
+
+This variable may only be set in a toolchain file specified by
+the :variable:`CMAKE_TOOLCHAIN_FILE` variable.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_SYSROOT_LINK.rst b/share/cmake-3.22/Help/variable/CMAKE_SYSROOT_LINK.rst
new file mode 100644
index 0000000..9749b7b
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_SYSROOT_LINK.rst
@@ -0,0 +1,11 @@
+CMAKE_SYSROOT_LINK
+------------------
+
+.. versionadded:: 3.9
+
+Path to pass to the compiler in the ``--sysroot`` flag when linking.  This is
+the same as :variable:`CMAKE_SYSROOT` but is used only for linking and not
+compiling sources.
+
+This variable may only be set in a toolchain file specified by
+the :variable:`CMAKE_TOOLCHAIN_FILE` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SYSTEM.rst b/share/cmake-3.22/Help/variable/CMAKE_SYSTEM.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SYSTEM.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SYSTEM.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst
new file mode 100644
index 0000000..06a99a8
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst
@@ -0,0 +1,9 @@
+CMAKE_SYSTEM_APPBUNDLE_PATH
+---------------------------
+
+.. versionadded:: 3.4
+
+Search path for macOS application bundles used by the :command:`find_program`,
+and :command:`find_package` commands.  By default it contains the standard
+directories for the current system.  It is *not* intended to be modified by
+the project, use :variable:`CMAKE_APPBUNDLE_PATH` for this.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst
new file mode 100644
index 0000000..1a402c1
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst
@@ -0,0 +1,10 @@
+CMAKE_SYSTEM_FRAMEWORK_PATH
+---------------------------
+
+.. versionadded:: 3.4
+
+Search path for macOS frameworks used by the :command:`find_library`,
+:command:`find_package`, :command:`find_path`, and :command:`find_file`
+commands.  By default it contains the standard directories for the
+current system.  It is *not* intended to be modified by the project,
+use :variable:`CMAKE_FRAMEWORK_PATH` for this.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SYSTEM_IGNORE_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_SYSTEM_IGNORE_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SYSTEM_IGNORE_PATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SYSTEM_IGNORE_PATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SYSTEM_INCLUDE_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_SYSTEM_INCLUDE_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SYSTEM_INCLUDE_PATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SYSTEM_INCLUDE_PATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SYSTEM_LIBRARY_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_SYSTEM_LIBRARY_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SYSTEM_LIBRARY_PATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SYSTEM_LIBRARY_PATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SYSTEM_NAME.rst b/share/cmake-3.22/Help/variable/CMAKE_SYSTEM_NAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SYSTEM_NAME.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SYSTEM_NAME.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_SYSTEM_PROCESSOR.rst b/share/cmake-3.22/Help/variable/CMAKE_SYSTEM_PROCESSOR.rst
new file mode 100644
index 0000000..ce16215
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_SYSTEM_PROCESSOR.rst
@@ -0,0 +1,13 @@
+CMAKE_SYSTEM_PROCESSOR
+----------------------
+
+When not cross-compiling, this variable has the same value as the
+:variable:`CMAKE_HOST_SYSTEM_PROCESSOR` variable.  In many cases,
+this will correspond to the target architecture for the build, but
+this is not guaranteed.  (E.g. on Windows, the host may be ``AMD64``
+even when using a MSVC ``cl`` compiler with a 32-bit target.)
+
+When cross-compiling, a :variable:`CMAKE_TOOLCHAIN_FILE` should set
+the ``CMAKE_SYSTEM_PROCESSOR`` variable to match target architecture
+that it specifies (via :variable:`CMAKE_<LANG>_COMPILER` and perhaps
+:variable:`CMAKE_<LANG>_COMPILER_TARGET`).
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SYSTEM_PROGRAM_PATH.rst b/share/cmake-3.22/Help/variable/CMAKE_SYSTEM_PROGRAM_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SYSTEM_PROGRAM_PATH.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SYSTEM_PROGRAM_PATH.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_SYSTEM_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_SYSTEM_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_SYSTEM_VERSION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_SYSTEM_VERSION.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst
new file mode 100644
index 0000000..fce6fa7
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst
@@ -0,0 +1,11 @@
+CMAKE_Swift_LANGUAGE_VERSION
+----------------------------
+
+.. versionadded:: 3.7
+
+Set to the Swift language version number.  If not set, the oldest legacy
+version known to be available in the host Xcode version is assumed:
+
+* Swift ``4.0`` for Xcode 10.2 and above.
+* Swift ``3.0`` for Xcode 8.3 and above.
+* Swift ``2.3`` for Xcode 8.2 and below.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_Swift_MODULE_DIRECTORY.rst b/share/cmake-3.22/Help/variable/CMAKE_Swift_MODULE_DIRECTORY.rst
new file mode 100644
index 0000000..6036c04
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_Swift_MODULE_DIRECTORY.rst
@@ -0,0 +1,10 @@
+CMAKE_Swift_MODULE_DIRECTORY
+----------------------------
+
+.. versionadded:: 3.15
+
+Swift module output directory.
+
+This variable is used to initialize the :prop_tgt:`Swift_MODULE_DIRECTORY`
+property on all the targets.  See the target property for additional
+information.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_Swift_NUM_THREADS.rst b/share/cmake-3.22/Help/variable/CMAKE_Swift_NUM_THREADS.rst
new file mode 100644
index 0000000..e1dafb0
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_Swift_NUM_THREADS.rst
@@ -0,0 +1,10 @@
+CMAKE_Swift_NUM_THREADS
+-----------------------
+
+.. versionadded:: 3.15.1
+
+Number of threads for parallel compilation for Swift targets.
+
+This variable controls the number of parallel jobs that the swift driver creates
+for building targets.  If not specified, it will default to the number of
+logical CPUs on the host.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_TLS_CAINFO.rst b/share/cmake-3.22/Help/variable/CMAKE_TLS_CAINFO.rst
new file mode 100644
index 0000000..07f6366
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_TLS_CAINFO.rst
@@ -0,0 +1,9 @@
+CMAKE_TLS_CAINFO
+----------------
+
+Specify the default value for the :command:`file(DOWNLOAD)` and
+:command:`file(UPLOAD)` commands' ``TLS_CAINFO`` options.
+It is unset by default.
+
+This variable is also used by the :module:`ExternalProject` and
+:module:`FetchContent` modules for internal calls to :command:`file(DOWNLOAD)`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_TLS_VERIFY.rst b/share/cmake-3.22/Help/variable/CMAKE_TLS_VERIFY.rst
new file mode 100644
index 0000000..b22f1ce
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_TLS_VERIFY.rst
@@ -0,0 +1,17 @@
+CMAKE_TLS_VERIFY
+----------------
+
+Specify the default value for the :command:`file(DOWNLOAD)` and
+:command:`file(UPLOAD)` commands' ``TLS_VERIFY`` options.
+If not set, the default is *off*.
+
+This variable is also used by the :module:`ExternalProject` and
+:module:`FetchContent` modules for internal calls to :command:`file(DOWNLOAD)`.
+
+TLS verification can help provide confidence that one is connecting
+to the desired server.  When downloading known content, one should
+also use file hashes to verify it.
+
+.. code-block:: cmake
+
+  set(CMAKE_TLS_VERIFY TRUE)
diff --git a/share/cmake-3.22/Help/variable/CMAKE_TOOLCHAIN_FILE.rst b/share/cmake-3.22/Help/variable/CMAKE_TOOLCHAIN_FILE.rst
new file mode 100644
index 0000000..ff8d59a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_TOOLCHAIN_FILE.rst
@@ -0,0 +1,15 @@
+CMAKE_TOOLCHAIN_FILE
+--------------------
+
+Path to toolchain file supplied to :manual:`cmake(1)`.
+
+This variable is specified on the command line when cross-compiling with CMake.
+It is the path to a file which is read early in the CMake run and which
+specifies locations for compilers and toolchain utilities, and other target
+platform and compiler related information.
+
+Relative paths are allowed and are interpreted first as relative to the
+build directory, and if not found, relative to the source directory.
+
+This is initialized by the :envvar:`CMAKE_TOOLCHAIN_FILE` environment
+variable if it is set when a new build tree is first created.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_TRY_COMPILE_CONFIGURATION.rst b/share/cmake-3.22/Help/variable/CMAKE_TRY_COMPILE_CONFIGURATION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_TRY_COMPILE_CONFIGURATION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_TRY_COMPILE_CONFIGURATION.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES.rst b/share/cmake-3.22/Help/variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES.rst
new file mode 100644
index 0000000..d178513
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES.rst
@@ -0,0 +1,28 @@
+CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
+------------------------------------
+
+.. versionadded:: 3.6
+
+List of variables that the :command:`try_compile` command source file signature
+must propagate into the test project in order to target the same platform as
+the host project.
+
+This variable should not be set by project code.  It is meant to be set by
+CMake's platform information modules for the current toolchain, or by a
+toolchain file when used with :variable:`CMAKE_TOOLCHAIN_FILE`.
+
+Variables meaningful to CMake, such as :variable:`CMAKE_<LANG>_FLAGS`, are
+propagated automatically.  The ``CMAKE_TRY_COMPILE_PLATFORM_VARIABLES``
+variable may be set to pass custom variables meaningful to a toolchain file.
+For example, a toolchain file may contain:
+
+.. code-block:: cmake
+
+  set(CMAKE_SYSTEM_NAME ...)
+  set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES MY_CUSTOM_VARIABLE)
+  # ... use MY_CUSTOM_VARIABLE ...
+
+If a user passes ``-DMY_CUSTOM_VARIABLE=SomeValue`` to CMake then this
+setting will be made visible to the toolchain file both for the main
+project and for test projects generated by the :command:`try_compile`
+command source file signature.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_TRY_COMPILE_TARGET_TYPE.rst b/share/cmake-3.22/Help/variable/CMAKE_TRY_COMPILE_TARGET_TYPE.rst
new file mode 100644
index 0000000..b60539f
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_TRY_COMPILE_TARGET_TYPE.rst
@@ -0,0 +1,17 @@
+CMAKE_TRY_COMPILE_TARGET_TYPE
+-----------------------------
+
+.. versionadded:: 3.6
+
+Type of target generated for :command:`try_compile` calls using the
+source file signature.  Valid values are:
+
+``EXECUTABLE``
+  Use :command:`add_executable` to name the source file in the
+  generated project.  This is the default if no value is given.
+
+``STATIC_LIBRARY``
+  Use :command:`add_library` with the ``STATIC`` option to name the
+  source file in the generated project.  This avoids running the
+  linker and is intended for use with cross-compiling toolchains
+  that cannot link without custom flags or linker scripts.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_TWEAK_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_TWEAK_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_TWEAK_VERSION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_TWEAK_VERSION.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_UNITY_BUILD.rst b/share/cmake-3.22/Help/variable/CMAKE_UNITY_BUILD.rst
new file mode 100644
index 0000000..54a781a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_UNITY_BUILD.rst
@@ -0,0 +1,22 @@
+CMAKE_UNITY_BUILD
+-----------------
+
+.. versionadded:: 3.16
+
+This variable is used to initialize the :prop_tgt:`UNITY_BUILD`
+property of targets when they are created.  Setting it to true
+enables batch compilation of multiple sources within each target.
+This feature is known as a *Unity* or *Jumbo* build.
+
+Projects should not set this variable, it is intended as a developer
+control to be set on the :manual:`cmake(1)` command line or other
+equivalent methods.  The developer must have the ability to enable or
+disable unity builds according to the capabilities of their own machine
+and compiler.
+
+By default, this variable is not set, which will result in unity builds
+being disabled.
+
+.. note::
+  This option currently does not work well in combination with
+  the :variable:`CMAKE_EXPORT_COMPILE_COMMANDS` variable.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_UNITY_BUILD_BATCH_SIZE.rst b/share/cmake-3.22/Help/variable/CMAKE_UNITY_BUILD_BATCH_SIZE.rst
new file mode 100644
index 0000000..7733fe8
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_UNITY_BUILD_BATCH_SIZE.rst
@@ -0,0 +1,9 @@
+CMAKE_UNITY_BUILD_BATCH_SIZE
+----------------------------
+
+.. versionadded:: 3.16
+
+This variable is used to initialize the :prop_tgt:`UNITY_BUILD_BATCH_SIZE`
+property of targets when they are created.  It specifies the default upper
+limit on the number of source files that may be combined in any one unity
+source file when unity builds are enabled for a target.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_UNITY_BUILD_UNIQUE_ID.rst b/share/cmake-3.22/Help/variable/CMAKE_UNITY_BUILD_UNIQUE_ID.rst
new file mode 100644
index 0000000..64ef18a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_UNITY_BUILD_UNIQUE_ID.rst
@@ -0,0 +1,8 @@
+CMAKE_UNITY_BUILD_UNIQUE_ID
+---------------------------
+
+.. versionadded:: 3.20
+
+This variable is used to initialize the :prop_tgt:`UNITY_BUILD_UNIQUE_ID`
+property of targets when they are created.  It specifies the name of the
+unique identifier generated per file in a unity build.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_USER_MAKE_RULES_OVERRIDE.rst b/share/cmake-3.22/Help/variable/CMAKE_USER_MAKE_RULES_OVERRIDE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_USER_MAKE_RULES_OVERRIDE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_USER_MAKE_RULES_OVERRIDE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_USER_MAKE_RULES_OVERRIDE_LANG.rst b/share/cmake-3.22/Help/variable/CMAKE_USER_MAKE_RULES_OVERRIDE_LANG.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_USER_MAKE_RULES_OVERRIDE_LANG.rst
rename to share/cmake-3.22/Help/variable/CMAKE_USER_MAKE_RULES_OVERRIDE_LANG.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_USE_RELATIVE_PATHS.rst b/share/cmake-3.22/Help/variable/CMAKE_USE_RELATIVE_PATHS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_USE_RELATIVE_PATHS.rst
rename to share/cmake-3.22/Help/variable/CMAKE_USE_RELATIVE_PATHS.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VERBOSE_MAKEFILE.rst b/share/cmake-3.22/Help/variable/CMAKE_VERBOSE_MAKEFILE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_VERBOSE_MAKEFILE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_VERBOSE_MAKEFILE.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_VERSION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_VERSION.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VISIBILITY_INLINES_HIDDEN.rst b/share/cmake-3.22/Help/variable/CMAKE_VISIBILITY_INLINES_HIDDEN.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_VISIBILITY_INLINES_HIDDEN.rst
rename to share/cmake-3.22/Help/variable/CMAKE_VISIBILITY_INLINES_HIDDEN.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_DEVENV_COMMAND.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_DEVENV_COMMAND.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_VS_DEVENV_COMMAND.rst
rename to share/cmake-3.22/Help/variable/CMAKE_VS_DEVENV_COMMAND.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_GLOBALS.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_GLOBALS.rst
new file mode 100644
index 0000000..d4514fe
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_GLOBALS.rst
@@ -0,0 +1,23 @@
+CMAKE_VS_GLOBALS
+----------------
+
+.. versionadded:: 3.13
+
+List of ``Key=Value`` records to be set per target as target properties
+:prop_tgt:`VS_GLOBAL_<variable>` with ``variable=Key`` and value ``Value``.
+
+For example:
+
+.. code-block:: cmake
+
+  set(CMAKE_VS_GLOBALS
+    "DefaultLanguage=en-US"
+    "MinimumVisualStudioVersion=14.0"
+    )
+
+will set properties ``VS_GLOBAL_DefaultLanguage`` to ``en-US`` and
+``VS_GLOBAL_MinimumVisualStudioVersion`` to ``14.0`` for all targets
+(except for ``INTERFACE`` libraries).
+
+This variable is meant to be set by a
+:variable:`toolchain file <CMAKE_TOOLCHAIN_FILE>`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD.rst
new file mode 100644
index 0000000..ace94e4
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD.rst
@@ -0,0 +1,10 @@
+CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD
+-----------------------------------------
+
+.. versionadded:: 3.3
+
+Include ``INSTALL`` target to default build.
+
+In Visual Studio solution, by default the ``INSTALL`` target will not be part
+of the default build. Setting this variable will enable the ``INSTALL`` target
+to be part of the default build.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD.rst
new file mode 100644
index 0000000..ab4d0fa
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD.rst
@@ -0,0 +1,10 @@
+CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD
+-----------------------------------------
+
+.. versionadded:: 3.8
+
+Include ``PACKAGE`` target to default build.
+
+In Visual Studio solution, by default the ``PACKAGE`` target will not be part
+of the default build. Setting this variable will enable the ``PACKAGE`` target
+to be part of the default build.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_INTEL_Fortran_PROJECT_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_INTEL_Fortran_PROJECT_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_VS_INTEL_Fortran_PROJECT_VERSION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_VS_INTEL_Fortran_PROJECT_VERSION.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_JUST_MY_CODE_DEBUGGING.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_JUST_MY_CODE_DEBUGGING.rst
new file mode 100644
index 0000000..0a02a32
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_JUST_MY_CODE_DEBUGGING.rst
@@ -0,0 +1,10 @@
+CMAKE_VS_JUST_MY_CODE_DEBUGGING
+-------------------------------
+
+.. versionadded:: 3.15
+
+Enable Just My Code with Visual Studio debugger.
+
+This variable is used to initialize the :prop_tgt:`VS_JUST_MY_CODE_DEBUGGING`
+property on all targets when they are created.  See that target property for
+additional information.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_MSBUILD_COMMAND.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_MSBUILD_COMMAND.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_VS_MSBUILD_COMMAND.rst
rename to share/cmake-3.22/Help/variable/CMAKE_VS_MSBUILD_COMMAND.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_NsightTegra_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_NsightTegra_VERSION.rst
new file mode 100644
index 0000000..2982b39
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_NsightTegra_VERSION.rst
@@ -0,0 +1,9 @@
+CMAKE_VS_NsightTegra_VERSION
+----------------------------
+
+.. versionadded:: 3.1
+
+When using a Visual Studio generator with the
+:variable:`CMAKE_SYSTEM_NAME` variable set to ``Android``,
+this variable contains the version number of the
+installed NVIDIA Nsight Tegra Visual Studio Edition.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_NAME.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_NAME.rst
new file mode 100644
index 0000000..7d08add
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_NAME.rst
@@ -0,0 +1,12 @@
+CMAKE_VS_PLATFORM_NAME
+----------------------
+
+.. versionadded:: 3.1
+
+Visual Studio target platform name used by the current generator.
+
+VS 8 and above allow project files to specify a target platform.
+CMake provides the name of the chosen platform in this variable.
+See the :variable:`CMAKE_GENERATOR_PLATFORM` variable for details.
+
+See also the :variable:`CMAKE_VS_PLATFORM_NAME_DEFAULT` variable.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_NAME_DEFAULT.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_NAME_DEFAULT.rst
new file mode 100644
index 0000000..6440174
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_NAME_DEFAULT.rst
@@ -0,0 +1,11 @@
+CMAKE_VS_PLATFORM_NAME_DEFAULT
+------------------------------
+
+.. versionadded:: 3.14.3
+
+Default for the Visual Studio target platform name for the current generator
+without considering the value of the :variable:`CMAKE_GENERATOR_PLATFORM`
+variable.  For :ref:`Visual Studio Generators` for VS 2017 and below this is
+always ``Win32``.  For VS 2019 and above this is based on the host platform.
+
+See also the :variable:`CMAKE_VS_PLATFORM_NAME` variable.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_TOOLSET.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_TOOLSET.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_VS_PLATFORM_TOOLSET.rst
rename to share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_TOOLSET.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA.rst
new file mode 100644
index 0000000..e66378d
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA.rst
@@ -0,0 +1,16 @@
+CMAKE_VS_PLATFORM_TOOLSET_CUDA
+------------------------------
+
+.. versionadded:: 3.9
+
+NVIDIA CUDA Toolkit version whose Visual Studio toolset to use.
+
+The :ref:`Visual Studio Generators` for VS 2010 and above support using
+a CUDA toolset provided by a CUDA Toolkit.  The toolset version number
+may be specified by a field in :variable:`CMAKE_GENERATOR_TOOLSET` of
+the form ``cuda=8.0``. Or it is automatically detected if a path to
+a standalone CUDA directory is specified in the form ``cuda=C:\path\to\cuda``.
+If none is specified CMake will choose a default version.
+CMake provides the selected CUDA toolset version in this variable.
+The value may be empty if no CUDA Toolkit with Visual Studio integration
+is installed.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR.rst
new file mode 100644
index 0000000..a19e7e1
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR.rst
@@ -0,0 +1,17 @@
+CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR
+-----------------------------------------
+
+.. versionadded:: 3.16
+
+Path to standalone NVIDIA CUDA Toolkit (eg. extracted from installer).
+
+The :ref:`Visual Studio Generators` for VS 2010 and above support using
+a standalone (non-installed) NVIDIA CUDA toolkit.  The path
+may be specified by a field in :variable:`CMAKE_GENERATOR_TOOLSET` of
+the form ``cuda=C:\path\to\cuda``.  The given directory must at least
+contain the nvcc compiler in path ``.\bin`` and must provide Visual Studio
+integration files in path ``.\extras\visual_studio_integration\
+MSBuildExtensions\``. One can create a standalone CUDA toolkit directory by
+either opening a installer with 7zip or copying the files that are extracted
+by the running installer. The value may be empty if no path to a standalone
+CUDA Toolkit was specified.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE.rst
new file mode 100644
index 0000000..84d7212
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE.rst
@@ -0,0 +1,12 @@
+CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE
+-------------------------------------------
+
+.. versionadded:: 3.8
+
+Visual Studio preferred tool architecture.
+
+The :ref:`Visual Studio Generators` for VS 2013 and above support using
+either the 32-bit or 64-bit host toolchains by specifying a ``host=x86``
+or ``host=x64`` value in the :variable:`CMAKE_GENERATOR_TOOLSET` option.
+CMake provides the selected toolchain architecture preference in this
+variable (``x86``, ``x64``, or empty).
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_VERSION.rst
new file mode 100644
index 0000000..c4369ee
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_VERSION.rst
@@ -0,0 +1,33 @@
+CMAKE_VS_PLATFORM_TOOLSET_VERSION
+---------------------------------
+
+.. versionadded:: 3.12
+
+Visual Studio Platform Toolset version.
+
+The :ref:`Visual Studio Generators` for VS 2017 and above allow to
+select minor versions of the same toolset. The toolset version number
+may be specified by a field in :variable:`CMAKE_GENERATOR_TOOLSET` of
+the form ``version=14.11``. If none is specified CMake will choose a default
+toolset. The value may be empty if no minor version was selected and the
+default is used.
+
+If the value is not empty, it is the version number that MSBuild uses in
+its ``Microsoft.VCToolsVersion.*.props`` file names.
+
+.. versionadded:: 3.19.7
+
+   VS 16.9's toolset may also be specified as ``14.28.16.9`` because
+   VS 16.10 uses the file name ``Microsoft.VCToolsVersion.14.28.16.9.props``.
+
+Three-Component MSVC Toolset Versions
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.19.7
+
+The ``version=`` field may be given a three-component toolset version
+such as ``14.28.29910``, and CMake will convert it to the name used by
+MSBuild ``Microsoft.VCToolsVersion.*.props`` files.  This is useful
+to distinguish between VS 16.8's ``14.28.29333`` toolset and VS 16.9's
+``14.28.29910`` toolset.  It also matches ``vcvarsall``'s ``-vcvars_ver=``
+behavior.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES.rst
new file mode 100644
index 0000000..969f328
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES.rst
@@ -0,0 +1,6 @@
+CMAKE_VS_SDK_EXCLUDE_DIRECTORIES
+--------------------------------
+
+.. versionadded:: 3.12
+
+This variable allows to override Visual Studio default Exclude Directories.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES.rst
new file mode 100644
index 0000000..7455e10
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES.rst
@@ -0,0 +1,6 @@
+CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES
+-----------------------------------
+
+.. versionadded:: 3.12
+
+This variable allows to override Visual Studio default Executable Directories.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES.rst
new file mode 100644
index 0000000..3f27aea
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES.rst
@@ -0,0 +1,6 @@
+CMAKE_VS_SDK_INCLUDE_DIRECTORIES
+--------------------------------
+
+.. versionadded:: 3.12
+
+This variable allows to override Visual Studio default Include Directories.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES.rst
new file mode 100644
index 0000000..35e45a3
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES.rst
@@ -0,0 +1,6 @@
+CMAKE_VS_SDK_LIBRARY_DIRECTORIES
+--------------------------------
+
+.. versionadded:: 3.12
+
+This variable allows to override Visual Studio default Library Directories.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES.rst
new file mode 100644
index 0000000..24b90b6
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES.rst
@@ -0,0 +1,7 @@
+CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES
+--------------------------------------
+
+.. versionadded:: 3.12
+
+This variable allows to override Visual Studio default Library WinRT
+Directories.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES.rst
new file mode 100644
index 0000000..00382fe
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES.rst
@@ -0,0 +1,6 @@
+CMAKE_VS_SDK_REFERENCE_DIRECTORIES
+----------------------------------
+
+.. versionadded:: 3.12
+
+This variable allows to override Visual Studio default Reference Directories.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES.rst
new file mode 100644
index 0000000..b98c999
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES.rst
@@ -0,0 +1,6 @@
+CMAKE_VS_SDK_SOURCE_DIRECTORIES
+-------------------------------
+
+.. versionadded:: 3.12
+
+This variable allows to override Visual Studio default Source Directories.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER.rst
new file mode 100644
index 0000000..5ad5897
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER.rst
@@ -0,0 +1,13 @@
+CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER
+------------------------------------
+
+.. versionadded:: 3.22
+
+Visual Studio target framework identifier.
+
+In some cases, the :ref:`Visual Studio Generators` may use an explicit value
+for the MSBuild ``TargetFrameworkIdentifier`` setting in ``.csproj`` files.
+CMake provides the chosen value in this variable.
+
+See also :variable:`CMAKE_VS_TARGET_FRAMEWORK_VERSION` and
+:variable:`CMAKE_VS_TARGET_FRAMEWORK_TARGETS_VERSION`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_TARGET_FRAMEWORK_TARGETS_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_TARGET_FRAMEWORK_TARGETS_VERSION.rst
new file mode 100644
index 0000000..8dcb3a7
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_TARGET_FRAMEWORK_TARGETS_VERSION.rst
@@ -0,0 +1,13 @@
+CMAKE_VS_TARGET_FRAMEWORK_TARGETS_VERSION
+-----------------------------------------
+
+.. versionadded:: 3.22
+
+Visual Studio target framework targets version.
+
+In some cases, the :ref:`Visual Studio Generators` may use an explicit value
+for the MSBuild ``TargetFrameworkTargetsVersion`` setting in ``.csproj`` files.
+CMake provides the chosen value in this variable.
+
+See also :variable:`CMAKE_VS_TARGET_FRAMEWORK_VERSION` and
+:variable:`CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_TARGET_FRAMEWORK_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_TARGET_FRAMEWORK_VERSION.rst
new file mode 100644
index 0000000..5489f79
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_TARGET_FRAMEWORK_VERSION.rst
@@ -0,0 +1,17 @@
+CMAKE_VS_TARGET_FRAMEWORK_VERSION
+---------------------------------
+
+.. versionadded:: 3.22
+
+Visual Studio target framework version.
+
+In some cases, the :ref:`Visual Studio Generators` may use an explicit value
+for the MSBuild ``TargetFrameworkVersion`` setting in ``.csproj`` files.
+CMake provides the chosen value in this variable.
+
+See the :variable:`CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION` variable
+and :prop_tgt:`DOTNET_TARGET_FRAMEWORK_VERSION` target property to
+specify custom ``TargetFrameworkVersion`` values for project targets.
+
+See also :variable:`CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER` and
+:variable:`CMAKE_VS_TARGET_FRAMEWORK_TARGETS_VERSION`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.rst
new file mode 100644
index 0000000..eb71049
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.rst
@@ -0,0 +1,21 @@
+CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION
+----------------------------------------
+
+.. versionadded:: 3.4
+
+Visual Studio Windows Target Platform Version.
+
+When targeting Windows 10 and above Visual Studio 2015 and above support
+specification of a target Windows version to select a corresponding SDK.
+The :variable:`CMAKE_SYSTEM_VERSION` variable may be set to specify a
+version.  Otherwise CMake computes a default version based on the Windows
+SDK versions available.  The chosen Windows target version number is provided
+in ``CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION``.  If no Windows 10 SDK
+is available this value will be empty.
+
+One may set a ``CMAKE_WINDOWS_KITS_10_DIR`` *environment variable*
+to an absolute path to tell CMake to look for Windows 10 SDKs in
+a custom location.  The specified directory is expected to contain
+``Include/10.0.*`` directories.
+
+See also :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM.rst
new file mode 100644
index 0000000..d9f136c
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM.rst
@@ -0,0 +1,14 @@
+CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM
+------------------------------------------------
+
+.. versionadded:: 3.19
+
+Override the :ref:`Windows 10 SDK Maximum Version for VS 2015` and beyond.
+
+The :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM` variable may
+be set to a false value (e.g. ``OFF``, ``FALSE``, or ``0``) or the SDK version
+to use as the maximum (e.g. ``10.0.14393.0``).  If unset, the default depends
+on which version of Visual Studio is targeted by the current generator.
+
+This can be used in conjunction with :variable:`CMAKE_SYSTEM_VERSION`, which
+CMake uses to select :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION`.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_VS_WINRT_BY_DEFAULT.rst b/share/cmake-3.22/Help/variable/CMAKE_VS_WINRT_BY_DEFAULT.rst
new file mode 100644
index 0000000..9ded85f
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_VS_WINRT_BY_DEFAULT.rst
@@ -0,0 +1,20 @@
+CMAKE_VS_WINRT_BY_DEFAULT
+-------------------------
+
+.. versionadded:: 3.13
+
+Inform :ref:`Visual Studio Generators` for VS 2010 and above that the
+target platform enables WinRT compilation by default and it needs to
+be explicitly disabled if ``/ZW`` or :prop_tgt:`VS_WINRT_COMPONENT` is
+omitted (as opposed to enabling it when either of those options is
+present)
+
+This makes cmake configuration consistent in terms of WinRT among
+platforms - if you did not enable the WinRT compilation explicitly, it
+will be disabled (by either not enabling it or explicitly disabling it)
+
+Note: WinRT compilation is always explicitly disabled for C language
+source files, even if it is expliclty enabled for a project
+
+This variable is meant to be set by a
+:variable:`toolchain file <CMAKE_TOOLCHAIN_FILE>` for such platforms.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_WARN_DEPRECATED.rst b/share/cmake-3.22/Help/variable/CMAKE_WARN_DEPRECATED.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_WARN_DEPRECATED.rst
rename to share/cmake-3.22/Help/variable/CMAKE_WARN_DEPRECATED.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst b/share/cmake-3.22/Help/variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst
rename to share/cmake-3.22/Help/variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst
diff --git a/share/cmake-3.18/Help/variable/CMAKE_WIN32_EXECUTABLE.rst b/share/cmake-3.22/Help/variable/CMAKE_WIN32_EXECUTABLE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_WIN32_EXECUTABLE.rst
rename to share/cmake-3.22/Help/variable/CMAKE_WIN32_EXECUTABLE.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst b/share/cmake-3.22/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst
new file mode 100644
index 0000000..7b01185
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst
@@ -0,0 +1,8 @@
+CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
+--------------------------------
+
+.. versionadded:: 3.4
+
+Default value for :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property.
+This variable is used to initialize the property on each target as it is
+created.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_ATTRIBUTE_an-attribute.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_ATTRIBUTE_an-attribute.rst
new file mode 100644
index 0000000..ffa0a4c
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_ATTRIBUTE_an-attribute.rst
@@ -0,0 +1,24 @@
+CMAKE_XCODE_ATTRIBUTE_<an-attribute>
+------------------------------------
+
+.. versionadded:: 3.1
+
+Set Xcode target attributes directly.
+
+Tell the :generator:`Xcode` generator to set ``<an-attribute>`` to a given
+value in the generated Xcode project.  Ignored on other generators.
+
+This offers low-level control over the generated Xcode project file.
+It is meant as a last resort for specifying settings that CMake does
+not otherwise have a way to control.  Although this can override a
+setting CMake normally produces on its own, doing so bypasses CMake's
+model of the project and can break things.
+
+See the :prop_tgt:`XCODE_ATTRIBUTE_<an-attribute>` target property
+to set attributes on a specific target.
+
+Contents of ``CMAKE_XCODE_ATTRIBUTE_<an-attribute>`` may use
+"generator expressions" with the syntax ``$<...>``.  See the
+:manual:`cmake-generator-expressions(7)` manual for available
+expressions.  See the :manual:`cmake-buildsystem(7)` manual
+for more on defining buildsystem properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_BUILD_SYSTEM.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_BUILD_SYSTEM.rst
new file mode 100644
index 0000000..d153061
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_BUILD_SYSTEM.rst
@@ -0,0 +1,24 @@
+CMAKE_XCODE_BUILD_SYSTEM
+------------------------
+
+.. versionadded:: 3.19
+
+Xcode build system selection.
+
+The :generator:`Xcode` generator defines this variable to indicate which
+variant of the Xcode build system will be used.  The value is the
+version of Xcode in which the corresponding build system first became
+mature enough for use by CMake.  The possible values are:
+
+``1``
+  The original Xcode build system.
+  This is the default when using Xcode 11.x or below.
+
+``12``
+  The Xcode "new build system" introduced by Xcode 10.
+  It became mature enough for use by CMake in Xcode 12.
+  This is the default when using Xcode 12.x or above.
+
+The ``CMAKE_XCODE_BUILD_SYSTEM`` variable is informational and should not
+be modified by project code.  See the :ref:`Xcode Build System Selection`
+documentation section to select the Xcode build system.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_GENERATE_SCHEME.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_GENERATE_SCHEME.rst
new file mode 100644
index 0000000..40070e1
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_GENERATE_SCHEME.rst
@@ -0,0 +1,12 @@
+CMAKE_XCODE_GENERATE_SCHEME
+---------------------------
+
+.. versionadded:: 3.9
+
+If enabled, the :generator:`Xcode` generator will generate schema files.  These
+are useful to invoke analyze, archive, build-for-testing and test
+actions from the command line.
+
+This variable initializes the
+:prop_tgt:`XCODE_GENERATE_SCHEME`
+target property on all targets.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY.rst
new file mode 100644
index 0000000..38d043c
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY.rst
@@ -0,0 +1,11 @@
+CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY
+-------------------------------------------
+
+.. versionadded:: 3.11
+
+If enabled, the :generator:`Xcode` generator will generate only a
+single Xcode project file for the topmost :command:`project()` command
+instead of generating one for every ``project()`` command.
+
+This could be useful to speed up the CMake generation step for
+large projects and to work-around a bug in the ``ZERO_CHECK`` logic.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_LINK_BUILD_PHASE_MODE.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_LINK_BUILD_PHASE_MODE.rst
new file mode 100644
index 0000000..17189c0
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_LINK_BUILD_PHASE_MODE.rst
@@ -0,0 +1,9 @@
+CMAKE_XCODE_LINK_BUILD_PHASE_MODE
+---------------------------------
+
+.. versionadded:: 3.19
+
+This variable is used to initialize the
+:prop_tgt:`XCODE_LINK_BUILD_PHASE_MODE` property on targets.
+It affects the methods that the :generator:`Xcode` generator uses to link
+different kinds of libraries.  Its default value is ``NONE``.
diff --git a/share/cmake-3.18/Help/variable/CMAKE_XCODE_PLATFORM_TOOLSET.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_PLATFORM_TOOLSET.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CMAKE_XCODE_PLATFORM_TOOLSET.rst
rename to share/cmake-3.22/Help/variable/CMAKE_XCODE_PLATFORM_TOOLSET.rst
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER.rst
new file mode 100644
index 0000000..b3fa93b
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER.rst
@@ -0,0 +1,14 @@
+CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER
+------------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Address Sanitizer`` in the Diagnostics
+section of the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_ADDRESS_SANITIZER`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst
new file mode 100644
index 0000000..1a0a17a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst
@@ -0,0 +1,14 @@
+CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
+-----------------------------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Detect use of stack after return``
+in the Diagnostics section of the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst
new file mode 100644
index 0000000..917fc7f
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst
@@ -0,0 +1,15 @@
+CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
+--------------------------------------------
+
+.. versionadded:: 3.16
+
+Whether to enable
+``Allow debugging when using document Versions Browser``
+in the Options section of the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst
new file mode 100644
index 0000000..b604598
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst
@@ -0,0 +1,14 @@
+CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
+----------------------------------------------
+
+.. versionadded:: 3.13
+
+Whether to disable the ``Main Thread Checker``
+in the Diagnostics section of the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst
new file mode 100644
index 0000000..070ddfc
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst
@@ -0,0 +1,14 @@
+CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
+----------------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Dynamic Library Loads``
+in the Diagnostics section of the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst
new file mode 100644
index 0000000..4291816
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst
@@ -0,0 +1,14 @@
+CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
+-------------------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Dynamic Linker API usage``
+in the Diagnostics section of the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_ENVIRONMENT.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_ENVIRONMENT.rst
new file mode 100644
index 0000000..62b698d
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_ENVIRONMENT.rst
@@ -0,0 +1,17 @@
+CMAKE_XCODE_SCHEME_ENVIRONMENT
+------------------------------
+
+.. versionadded:: 3.17
+
+Specify environment variables that should be added to the Arguments
+section of the generated Xcode scheme.
+
+If set to a list of environment variables and values of the form
+``MYVAR=value`` those environment variables will be added to the
+scheme.
+
+This variable initializes the :prop_tgt:`XCODE_SCHEME_ENVIRONMENT`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_GUARD_MALLOC.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_GUARD_MALLOC.rst
new file mode 100644
index 0000000..48b481e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_GUARD_MALLOC.rst
@@ -0,0 +1,14 @@
+CMAKE_XCODE_SCHEME_GUARD_MALLOC
+-------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Guard Malloc``
+in the Diagnostics section of the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_GUARD_MALLOC`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst
new file mode 100644
index 0000000..ef8ed9b
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst
@@ -0,0 +1,15 @@
+CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
+-------------------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable the ``Main Thread Checker`` option
+``Pause on issues``
+in the Diagnostics section of the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES.rst
new file mode 100644
index 0000000..d4ae9eb
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES.rst
@@ -0,0 +1,14 @@
+CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES
+-------------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Malloc Guard Edges``
+in the Diagnostics section of the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_MALLOC_GUARD_EDGES`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE.rst
new file mode 100644
index 0000000..e28f6a1
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE.rst
@@ -0,0 +1,14 @@
+CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE
+----------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Malloc Scribble``
+in the Diagnostics section of the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_MALLOC_SCRIBBLE`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_STACK.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_STACK.rst
new file mode 100644
index 0000000..59fcfd3
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_STACK.rst
@@ -0,0 +1,14 @@
+CMAKE_XCODE_SCHEME_MALLOC_STACK
+-------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Malloc Stack`` in the Diagnostics
+section of the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_MALLOC_STACK`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER.rst
new file mode 100644
index 0000000..511eb04
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER.rst
@@ -0,0 +1,14 @@
+CMAKE_XCODE_SCHEME_THREAD_SANITIZER
+-----------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Thread Sanitizer`` in the Diagnostics
+section of the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_THREAD_SANITIZER`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP.rst
new file mode 100644
index 0000000..6f3b8ce
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP.rst
@@ -0,0 +1,14 @@
+CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP
+----------------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Thread Sanitizer - Pause on issues``
+in the Diagnostics section of the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_THREAD_SANITIZER_STOP`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst
new file mode 100644
index 0000000..46d3ccf
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst
@@ -0,0 +1,14 @@
+CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
+------------------------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Undefined Behavior Sanitizer``
+in the Diagnostics section of the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst
new file mode 100644
index 0000000..8fa5ece
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst
@@ -0,0 +1,15 @@
+CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
+-----------------------------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Undefined Behavior Sanitizer`` option
+``Pause on issues``
+in the Diagnostics section of the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_WORKING_DIRECTORY.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_WORKING_DIRECTORY.rst
new file mode 100644
index 0000000..4221e48
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_WORKING_DIRECTORY.rst
@@ -0,0 +1,14 @@
+CMAKE_XCODE_SCHEME_WORKING_DIRECTORY
+------------------------------------
+
+.. versionadded:: 3.17
+
+Specify the ``Working Directory`` of the *Run* and *Profile*
+actions in the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_WORKING_DIRECTORY`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS.rst b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS.rst
new file mode 100644
index 0000000..fd9488e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS.rst
@@ -0,0 +1,14 @@
+CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS
+---------------------------------
+
+.. versionadded:: 3.13
+
+Whether to enable ``Zombie Objects``
+in the Diagnostics section of the generated Xcode scheme.
+
+This variable initializes the
+:prop_tgt:`XCODE_SCHEME_ZOMBIE_OBJECTS`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.
diff --git a/share/cmake-3.18/Help/variable/CPACK_ABSOLUTE_DESTINATION_FILES.rst b/share/cmake-3.22/Help/variable/CPACK_ABSOLUTE_DESTINATION_FILES.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CPACK_ABSOLUTE_DESTINATION_FILES.rst
rename to share/cmake-3.22/Help/variable/CPACK_ABSOLUTE_DESTINATION_FILES.rst
diff --git a/share/cmake-3.18/Help/variable/CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY.rst b/share/cmake-3.22/Help/variable/CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY.rst
rename to share/cmake-3.22/Help/variable/CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY.rst
diff --git a/share/cmake-3.22/Help/variable/CPACK_CUSTOM_INSTALL_VARIABLES.rst b/share/cmake-3.22/Help/variable/CPACK_CUSTOM_INSTALL_VARIABLES.rst
new file mode 100644
index 0000000..1c070b8
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CPACK_CUSTOM_INSTALL_VARIABLES.rst
@@ -0,0 +1,44 @@
+CPACK_CUSTOM_INSTALL_VARIABLES
+------------------------------
+
+.. versionadded:: 3.21
+
+CPack variables (set via e.g. ``cpack -D``, ``CPackConfig.cmake`` or
+:variable:`CPACK_PROJECT_CONFIG_FILE` scripts) are not directly visible in
+installation scripts.  Instead, one can pass a list of ``varName=value``
+pairs in the ``CPACK_CUSTOM_INSTALL_VARIABLES`` variable.  At install time,
+each list item will result in a variable of the specified name (``varName``)
+being set to the given ``value``.  The ``=`` can be omitted for an empty
+``value``.
+
+``CPACK_CUSTOM_INSTALL_VARIABLES`` allows the packaging installation to be
+influenced by the user or driving script at CPack runtime without having to
+regenerate the install scripts.
+
+Example
+"""""""
+
+.. code-block:: cmake
+
+  install(FILES large.txt DESTINATION data)
+
+  install(CODE [[
+    if(ENABLE_COMPRESSION)
+      # "run-compressor" is a fictional tool that produces
+      # large.txt.xz from large.txt and then removes the input file
+      execute_process(COMMAND run-compressor $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/large.txt)
+    endif()
+  ]])
+
+With the above example snippet, :manual:`cpack <cpack(1)>` will by default
+run the installation script with ``ENABLE_COMPRESSION`` unset, resulting in
+a package containing the uncompressed ``large.txt``.  This can be overridden
+when invoking :manual:`cpack <cpack(1)>` like so:
+
+.. code-block:: shell
+
+  cpack -D "CPACK_CUSTOM_INSTALL_VARIABLES=ENABLE_COMPRESSION=TRUE"
+
+The installation script will then run with ``ENABLE_COMPRESSION`` set to
+``TRUE``, resulting in a package containing the compressed ``large.txt.xz``
+instead.
diff --git a/share/cmake-3.18/Help/variable/CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst b/share/cmake-3.22/Help/variable/CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst
rename to share/cmake-3.22/Help/variable/CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst
diff --git a/share/cmake-3.18/Help/variable/CPACK_INCLUDE_TOPLEVEL_DIRECTORY.rst b/share/cmake-3.22/Help/variable/CPACK_INCLUDE_TOPLEVEL_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CPACK_INCLUDE_TOPLEVEL_DIRECTORY.rst
rename to share/cmake-3.22/Help/variable/CPACK_INCLUDE_TOPLEVEL_DIRECTORY.rst
diff --git a/share/cmake-3.22/Help/variable/CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst b/share/cmake-3.22/Help/variable/CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst
new file mode 100644
index 0000000..01fb189
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst
@@ -0,0 +1,13 @@
+CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
+-------------------------------------------
+
+.. versionadded:: 3.11
+
+Default permissions for implicitly created directories during packaging.
+
+This variable serves the same purpose during packaging as the
+:variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS` variable
+serves during installation (e.g. ``make install``).
+
+If `include(CPack)` is used then by default this variable is set to the content
+of :variable:`CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS`.
diff --git a/share/cmake-3.18/Help/variable/CPACK_PACKAGING_INSTALL_PREFIX.rst b/share/cmake-3.22/Help/variable/CPACK_PACKAGING_INSTALL_PREFIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CPACK_PACKAGING_INSTALL_PREFIX.rst
rename to share/cmake-3.22/Help/variable/CPACK_PACKAGING_INSTALL_PREFIX.rst
diff --git a/share/cmake-3.18/Help/variable/CPACK_SET_DESTDIR.rst b/share/cmake-3.22/Help/variable/CPACK_SET_DESTDIR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CPACK_SET_DESTDIR.rst
rename to share/cmake-3.22/Help/variable/CPACK_SET_DESTDIR.rst
diff --git a/share/cmake-3.18/Help/variable/CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst b/share/cmake-3.22/Help/variable/CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst
rename to share/cmake-3.22/Help/variable/CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst
diff --git a/share/cmake-3.22/Help/variable/CTEST_BINARY_DIRECTORY.rst b/share/cmake-3.22/Help/variable/CTEST_BINARY_DIRECTORY.rst
new file mode 100644
index 0000000..8413e37
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_BINARY_DIRECTORY.rst
@@ -0,0 +1,7 @@
+CTEST_BINARY_DIRECTORY
+----------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``BuildDirectory`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_BUILD_COMMAND.rst b/share/cmake-3.22/Help/variable/CTEST_BUILD_COMMAND.rst
new file mode 100644
index 0000000..31c44e2
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_BUILD_COMMAND.rst
@@ -0,0 +1,7 @@
+CTEST_BUILD_COMMAND
+-------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``MakeCommand`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_BUILD_NAME.rst b/share/cmake-3.22/Help/variable/CTEST_BUILD_NAME.rst
new file mode 100644
index 0000000..3d08397
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_BUILD_NAME.rst
@@ -0,0 +1,7 @@
+CTEST_BUILD_NAME
+----------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``BuildName`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_BZR_COMMAND.rst b/share/cmake-3.22/Help/variable/CTEST_BZR_COMMAND.rst
new file mode 100644
index 0000000..0c05d1a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_BZR_COMMAND.rst
@@ -0,0 +1,7 @@
+CTEST_BZR_COMMAND
+-----------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``BZRCommand`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_BZR_UPDATE_OPTIONS.rst b/share/cmake-3.22/Help/variable/CTEST_BZR_UPDATE_OPTIONS.rst
new file mode 100644
index 0000000..4dd5e5b
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_BZR_UPDATE_OPTIONS.rst
@@ -0,0 +1,7 @@
+CTEST_BZR_UPDATE_OPTIONS
+------------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``BZRUpdateOptions`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_CHANGE_ID.rst b/share/cmake-3.22/Help/variable/CTEST_CHANGE_ID.rst
new file mode 100644
index 0000000..a6d15f7
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_CHANGE_ID.rst
@@ -0,0 +1,11 @@
+CTEST_CHANGE_ID
+---------------
+
+.. versionadded:: 3.4
+
+Specify the CTest ``ChangeId`` setting
+in a :manual:`ctest(1)` dashboard client script.
+
+This setting allows CTest to pass arbitrary information about this
+build up to CDash.  One use of this feature is to allow CDash to
+post comments on your pull request if anything goes wrong with your build.
diff --git a/share/cmake-3.22/Help/variable/CTEST_CHECKOUT_COMMAND.rst b/share/cmake-3.22/Help/variable/CTEST_CHECKOUT_COMMAND.rst
new file mode 100644
index 0000000..852c28e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_CHECKOUT_COMMAND.rst
@@ -0,0 +1,7 @@
+CTEST_CHECKOUT_COMMAND
+----------------------
+
+.. versionadded:: 3.1
+
+Tell the :command:`ctest_start` command how to checkout or initialize
+the source directory in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_CONFIGURATION_TYPE.rst b/share/cmake-3.22/Help/variable/CTEST_CONFIGURATION_TYPE.rst
new file mode 100644
index 0000000..392845e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_CONFIGURATION_TYPE.rst
@@ -0,0 +1,10 @@
+CTEST_CONFIGURATION_TYPE
+------------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``DefaultCTestConfigurationType`` setting
+in a :manual:`ctest(1)` dashboard client script.
+
+If the configuration type is set via ``-C <cfg>`` from the command line
+then this variable is populated accordingly.
diff --git a/share/cmake-3.22/Help/variable/CTEST_CONFIGURE_COMMAND.rst b/share/cmake-3.22/Help/variable/CTEST_CONFIGURE_COMMAND.rst
new file mode 100644
index 0000000..992ef47
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_CONFIGURE_COMMAND.rst
@@ -0,0 +1,7 @@
+CTEST_CONFIGURE_COMMAND
+-----------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``ConfigureCommand`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_COVERAGE_COMMAND.rst b/share/cmake-3.22/Help/variable/CTEST_COVERAGE_COMMAND.rst
new file mode 100644
index 0000000..f5425cb
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_COVERAGE_COMMAND.rst
@@ -0,0 +1,62 @@
+CTEST_COVERAGE_COMMAND
+----------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``CoverageCommand`` setting
+in a :manual:`ctest(1)` dashboard client script.
+
+Cobertura
+'''''''''
+
+Using `Cobertura`_ as the coverage generation within your multi-module
+Java project can generate a series of XML files.
+
+The Cobertura Coverage parser expects to read the coverage data from a
+single XML file which contains the coverage data for all modules.
+Cobertura has a program with the ability to merge given ``cobertura.ser`` files
+and then another program to generate a combined XML file from the previous
+merged file.  For command line testing, this can be done by hand prior to
+CTest looking for the coverage files. For script builds,
+set the ``CTEST_COVERAGE_COMMAND`` variable to point to a file which will
+perform these same steps, such as a ``.sh`` or ``.bat`` file.
+
+.. code-block:: cmake
+
+  set(CTEST_COVERAGE_COMMAND .../run-coverage-and-consolidate.sh)
+
+where the ``run-coverage-and-consolidate.sh`` script is perhaps created by
+the :command:`configure_file` command and might contain the following code:
+
+.. code-block:: bash
+
+  #!/usr/bin/env bash
+  CoberturaFiles="$(find "/path/to/source" -name "cobertura.ser")"
+  SourceDirs="$(find "/path/to/source" -name "java" -type d)"
+  cobertura-merge --datafile coberturamerge.ser $CoberturaFiles
+  cobertura-report --datafile coberturamerge.ser --destination . \
+                   --format xml $SourceDirs
+
+The script uses ``find`` to capture the paths to all of the ``cobertura.ser``
+files found below the project's source directory.  It keeps the list of files
+and supplies it as an argument to the ``cobertura-merge`` program. The
+``--datafile`` argument signifies where the result of the merge will be kept.
+
+The combined ``coberturamerge.ser`` file is then used to generate the XML report
+using the ``cobertura-report`` program.  The call to the cobertura-report
+program requires some named arguments.
+
+``--datafila``
+  path to the merged ``.ser`` file
+
+``--destination``
+  path to put the output files(s)
+
+``--format``
+  file format to write output in: xml or html
+
+The rest of the supplied arguments consist of the full paths to the
+``/src/main/java`` directories of each module within the source tree. These
+directories are needed and should not be forgotten.
+
+.. _`Cobertura`: http://cobertura.github.io/cobertura/
diff --git a/share/cmake-3.22/Help/variable/CTEST_COVERAGE_EXTRA_FLAGS.rst b/share/cmake-3.22/Help/variable/CTEST_COVERAGE_EXTRA_FLAGS.rst
new file mode 100644
index 0000000..39d9b5d
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_COVERAGE_EXTRA_FLAGS.rst
@@ -0,0 +1,7 @@
+CTEST_COVERAGE_EXTRA_FLAGS
+--------------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``CoverageExtraFlags`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_CURL_OPTIONS.rst b/share/cmake-3.22/Help/variable/CTEST_CURL_OPTIONS.rst
new file mode 100644
index 0000000..14af4e4
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_CURL_OPTIONS.rst
@@ -0,0 +1,7 @@
+CTEST_CURL_OPTIONS
+------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``CurlOptions`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_COVERAGE_EXCLUDE.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_COVERAGE_EXCLUDE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CTEST_CUSTOM_COVERAGE_EXCLUDE.rst
rename to share/cmake-3.22/Help/variable/CTEST_CUSTOM_COVERAGE_EXCLUDE.rst
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_ERROR_EXCEPTION.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_ERROR_EXCEPTION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CTEST_CUSTOM_ERROR_EXCEPTION.rst
rename to share/cmake-3.22/Help/variable/CTEST_CUSTOM_ERROR_EXCEPTION.rst
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_ERROR_MATCH.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_ERROR_MATCH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CTEST_CUSTOM_ERROR_MATCH.rst
rename to share/cmake-3.22/Help/variable/CTEST_CUSTOM_ERROR_MATCH.rst
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_ERROR_POST_CONTEXT.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_ERROR_POST_CONTEXT.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CTEST_CUSTOM_ERROR_POST_CONTEXT.rst
rename to share/cmake-3.22/Help/variable/CTEST_CUSTOM_ERROR_POST_CONTEXT.rst
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_ERROR_PRE_CONTEXT.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_ERROR_PRE_CONTEXT.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CTEST_CUSTOM_ERROR_PRE_CONTEXT.rst
rename to share/cmake-3.22/Help/variable/CTEST_CUSTOM_ERROR_PRE_CONTEXT.rst
diff --git a/share/cmake-3.22/Help/variable/CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.rst
new file mode 100644
index 0000000..7e7d431
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.rst
@@ -0,0 +1,14 @@
+CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE
+--------------------------------------------
+
+When saving a failing test's output, this is the maximum size, in bytes, that
+will be collected by the :command:`ctest_test` command. Defaults to 307200
+(300 KiB).
+
+If a test's output contains the literal string "CTEST_FULL_OUTPUT",
+the output will not be truncated and may exceed the maximum size.
+
+.. include:: CTEST_CUSTOM_XXX.txt
+
+For controlling the output collection of passing tests, see
+:variable:`CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE`.
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS.rst
rename to share/cmake-3.22/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS.rst
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS.rst
rename to share/cmake-3.22/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS.rst
diff --git a/share/cmake-3.22/Help/variable/CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.rst
new file mode 100644
index 0000000..64367f9
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.rst
@@ -0,0 +1,14 @@
+CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE
+--------------------------------------------
+
+When saving a passing test's output, this is the maximum size, in bytes, that
+will be collected by the :command:`ctest_test` command. Defaults to 1024
+(1 KiB).
+
+If a test's output contains the literal string "CTEST_FULL_OUTPUT",
+the output will not be truncated and may exceed the maximum size.
+
+.. include:: CTEST_CUSTOM_XXX.txt
+
+For controlling the output collection of failing tests, see
+:variable:`CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE`.
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_MEMCHECK_IGNORE.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_MEMCHECK_IGNORE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CTEST_CUSTOM_MEMCHECK_IGNORE.rst
rename to share/cmake-3.22/Help/variable/CTEST_CUSTOM_MEMCHECK_IGNORE.rst
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_POST_MEMCHECK.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_POST_MEMCHECK.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CTEST_CUSTOM_POST_MEMCHECK.rst
rename to share/cmake-3.22/Help/variable/CTEST_CUSTOM_POST_MEMCHECK.rst
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_POST_TEST.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_POST_TEST.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CTEST_CUSTOM_POST_TEST.rst
rename to share/cmake-3.22/Help/variable/CTEST_CUSTOM_POST_TEST.rst
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_PRE_MEMCHECK.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_PRE_MEMCHECK.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CTEST_CUSTOM_PRE_MEMCHECK.rst
rename to share/cmake-3.22/Help/variable/CTEST_CUSTOM_PRE_MEMCHECK.rst
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_PRE_TEST.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_PRE_TEST.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CTEST_CUSTOM_PRE_TEST.rst
rename to share/cmake-3.22/Help/variable/CTEST_CUSTOM_PRE_TEST.rst
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_TESTS_IGNORE.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_TESTS_IGNORE.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CTEST_CUSTOM_TESTS_IGNORE.rst
rename to share/cmake-3.22/Help/variable/CTEST_CUSTOM_TESTS_IGNORE.rst
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_WARNING_EXCEPTION.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_WARNING_EXCEPTION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CTEST_CUSTOM_WARNING_EXCEPTION.rst
rename to share/cmake-3.22/Help/variable/CTEST_CUSTOM_WARNING_EXCEPTION.rst
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_WARNING_MATCH.rst b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_WARNING_MATCH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CTEST_CUSTOM_WARNING_MATCH.rst
rename to share/cmake-3.22/Help/variable/CTEST_CUSTOM_WARNING_MATCH.rst
diff --git a/share/cmake-3.18/Help/variable/CTEST_CUSTOM_XXX.txt b/share/cmake-3.22/Help/variable/CTEST_CUSTOM_XXX.txt
similarity index 100%
rename from share/cmake-3.18/Help/variable/CTEST_CUSTOM_XXX.txt
rename to share/cmake-3.22/Help/variable/CTEST_CUSTOM_XXX.txt
diff --git a/share/cmake-3.22/Help/variable/CTEST_CVS_CHECKOUT.rst b/share/cmake-3.22/Help/variable/CTEST_CVS_CHECKOUT.rst
new file mode 100644
index 0000000..32cf9eb
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_CVS_CHECKOUT.rst
@@ -0,0 +1,6 @@
+CTEST_CVS_CHECKOUT
+------------------
+
+.. versionadded:: 3.1
+
+Deprecated.  Use :variable:`CTEST_CHECKOUT_COMMAND` instead.
diff --git a/share/cmake-3.22/Help/variable/CTEST_CVS_COMMAND.rst b/share/cmake-3.22/Help/variable/CTEST_CVS_COMMAND.rst
new file mode 100644
index 0000000..7932070
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_CVS_COMMAND.rst
@@ -0,0 +1,7 @@
+CTEST_CVS_COMMAND
+-----------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``CVSCommand`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_CVS_UPDATE_OPTIONS.rst b/share/cmake-3.22/Help/variable/CTEST_CVS_UPDATE_OPTIONS.rst
new file mode 100644
index 0000000..359e708
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_CVS_UPDATE_OPTIONS.rst
@@ -0,0 +1,7 @@
+CTEST_CVS_UPDATE_OPTIONS
+------------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``CVSUpdateOptions`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_DROP_LOCATION.rst b/share/cmake-3.22/Help/variable/CTEST_DROP_LOCATION.rst
new file mode 100644
index 0000000..f66793b
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_DROP_LOCATION.rst
@@ -0,0 +1,7 @@
+CTEST_DROP_LOCATION
+-------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``DropLocation`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_DROP_METHOD.rst b/share/cmake-3.22/Help/variable/CTEST_DROP_METHOD.rst
new file mode 100644
index 0000000..3a84658
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_DROP_METHOD.rst
@@ -0,0 +1,7 @@
+CTEST_DROP_METHOD
+-----------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``DropMethod`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_DROP_SITE.rst b/share/cmake-3.22/Help/variable/CTEST_DROP_SITE.rst
new file mode 100644
index 0000000..9c871e3
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_DROP_SITE.rst
@@ -0,0 +1,7 @@
+CTEST_DROP_SITE
+---------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``DropSite`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_DROP_SITE_CDASH.rst b/share/cmake-3.22/Help/variable/CTEST_DROP_SITE_CDASH.rst
new file mode 100644
index 0000000..dcdb286
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_DROP_SITE_CDASH.rst
@@ -0,0 +1,7 @@
+CTEST_DROP_SITE_CDASH
+---------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``IsCDash`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_DROP_SITE_PASSWORD.rst b/share/cmake-3.22/Help/variable/CTEST_DROP_SITE_PASSWORD.rst
new file mode 100644
index 0000000..8259651
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_DROP_SITE_PASSWORD.rst
@@ -0,0 +1,7 @@
+CTEST_DROP_SITE_PASSWORD
+------------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``DropSitePassword`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_DROP_SITE_USER.rst b/share/cmake-3.22/Help/variable/CTEST_DROP_SITE_USER.rst
new file mode 100644
index 0000000..8d2e3a3
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_DROP_SITE_USER.rst
@@ -0,0 +1,7 @@
+CTEST_DROP_SITE_USER
+--------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``DropSiteUser`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_EXTRA_COVERAGE_GLOB.rst b/share/cmake-3.22/Help/variable/CTEST_EXTRA_COVERAGE_GLOB.rst
new file mode 100644
index 0000000..1d7e8d4
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_EXTRA_COVERAGE_GLOB.rst
@@ -0,0 +1,9 @@
+CTEST_EXTRA_COVERAGE_GLOB
+-------------------------
+
+.. versionadded:: 3.4
+
+A list of regular expressions which will be used to find files which should be
+covered by the :command:`ctest_coverage` command.
+
+.. include:: CTEST_CUSTOM_XXX.txt
diff --git a/share/cmake-3.22/Help/variable/CTEST_GIT_COMMAND.rst b/share/cmake-3.22/Help/variable/CTEST_GIT_COMMAND.rst
new file mode 100644
index 0000000..eb9b440
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_GIT_COMMAND.rst
@@ -0,0 +1,7 @@
+CTEST_GIT_COMMAND
+-----------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``GITCommand`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst b/share/cmake-3.22/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst
new file mode 100644
index 0000000..529bfc7
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst
@@ -0,0 +1,7 @@
+CTEST_GIT_INIT_SUBMODULES
+-------------------------
+
+.. versionadded:: 3.6
+
+Specify the CTest ``GITInitSubmodules`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_GIT_UPDATE_CUSTOM.rst b/share/cmake-3.22/Help/variable/CTEST_GIT_UPDATE_CUSTOM.rst
new file mode 100644
index 0000000..82a8a6a
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_GIT_UPDATE_CUSTOM.rst
@@ -0,0 +1,7 @@
+CTEST_GIT_UPDATE_CUSTOM
+-----------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``GITUpdateCustom`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_GIT_UPDATE_OPTIONS.rst b/share/cmake-3.22/Help/variable/CTEST_GIT_UPDATE_OPTIONS.rst
new file mode 100644
index 0000000..1568239
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_GIT_UPDATE_OPTIONS.rst
@@ -0,0 +1,7 @@
+CTEST_GIT_UPDATE_OPTIONS
+------------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``GITUpdateOptions`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_HG_COMMAND.rst b/share/cmake-3.22/Help/variable/CTEST_HG_COMMAND.rst
new file mode 100644
index 0000000..3372fe4
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_HG_COMMAND.rst
@@ -0,0 +1,7 @@
+CTEST_HG_COMMAND
+----------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``HGCommand`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_HG_UPDATE_OPTIONS.rst b/share/cmake-3.22/Help/variable/CTEST_HG_UPDATE_OPTIONS.rst
new file mode 100644
index 0000000..85c6b03
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_HG_UPDATE_OPTIONS.rst
@@ -0,0 +1,7 @@
+CTEST_HG_UPDATE_OPTIONS
+-----------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``HGUpdateOptions`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_LABELS_FOR_SUBPROJECTS.rst b/share/cmake-3.22/Help/variable/CTEST_LABELS_FOR_SUBPROJECTS.rst
new file mode 100644
index 0000000..dd6d125
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_LABELS_FOR_SUBPROJECTS.rst
@@ -0,0 +1,7 @@
+CTEST_LABELS_FOR_SUBPROJECTS
+----------------------------
+
+.. versionadded:: 3.10
+
+Specify the CTest ``LabelsForSubprojects`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_MEMORYCHECK_COMMAND.rst b/share/cmake-3.22/Help/variable/CTEST_MEMORYCHECK_COMMAND.rst
new file mode 100644
index 0000000..25f1bd9
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_MEMORYCHECK_COMMAND.rst
@@ -0,0 +1,7 @@
+CTEST_MEMORYCHECK_COMMAND
+-------------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``MemoryCheckCommand`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS.rst b/share/cmake-3.22/Help/variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS.rst
new file mode 100644
index 0000000..51830d5
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS.rst
@@ -0,0 +1,7 @@
+CTEST_MEMORYCHECK_COMMAND_OPTIONS
+---------------------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``MemoryCheckCommandOptions`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS.rst b/share/cmake-3.22/Help/variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS.rst
new file mode 100644
index 0000000..b6fee2e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS.rst
@@ -0,0 +1,12 @@
+CTEST_MEMORYCHECK_SANITIZER_OPTIONS
+-----------------------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``MemoryCheckSanitizerOptions`` setting
+in a :manual:`ctest(1)` dashboard client script.
+
+CTest prepends correct sanitizer options ``*_OPTIONS``
+environment variable to executed command. CTests adds
+its own ``log_path`` to sanitizer options, don't provide your
+own ``log_path``.
diff --git a/share/cmake-3.22/Help/variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE.rst b/share/cmake-3.22/Help/variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE.rst
new file mode 100644
index 0000000..a61a3ef
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE.rst
@@ -0,0 +1,7 @@
+CTEST_MEMORYCHECK_SUPPRESSIONS_FILE
+-----------------------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``MemoryCheckSuppressionFile`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_MEMORYCHECK_TYPE.rst b/share/cmake-3.22/Help/variable/CTEST_MEMORYCHECK_TYPE.rst
new file mode 100644
index 0000000..80353a4
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_MEMORYCHECK_TYPE.rst
@@ -0,0 +1,10 @@
+CTEST_MEMORYCHECK_TYPE
+----------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``MemoryCheckType`` setting
+in a :manual:`ctest(1)` dashboard client script.
+Valid values are ``Valgrind``, ``Purify``, ``BoundsChecker``, ``DrMemory``,
+``CudaSanitizer``, ``ThreadSanitizer``, ``AddressSanitizer``, ``LeakSanitizer``,
+``MemorySanitizer`` and ``UndefinedBehaviorSanitizer``.
diff --git a/share/cmake-3.22/Help/variable/CTEST_NIGHTLY_START_TIME.rst b/share/cmake-3.22/Help/variable/CTEST_NIGHTLY_START_TIME.rst
new file mode 100644
index 0000000..2d707d5
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_NIGHTLY_START_TIME.rst
@@ -0,0 +1,11 @@
+CTEST_NIGHTLY_START_TIME
+------------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``NightlyStartTime`` setting in a :manual:`ctest(1)`
+dashboard client script.
+
+Note that this variable must always be set for a nightly build in a
+dashboard script. It is needed so that nightly builds can be properly grouped
+together in CDash.
diff --git a/share/cmake-3.22/Help/variable/CTEST_P4_CLIENT.rst b/share/cmake-3.22/Help/variable/CTEST_P4_CLIENT.rst
new file mode 100644
index 0000000..0778c5b
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_P4_CLIENT.rst
@@ -0,0 +1,7 @@
+CTEST_P4_CLIENT
+---------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``P4Client`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_P4_COMMAND.rst b/share/cmake-3.22/Help/variable/CTEST_P4_COMMAND.rst
new file mode 100644
index 0000000..5cc2a81
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_P4_COMMAND.rst
@@ -0,0 +1,7 @@
+CTEST_P4_COMMAND
+----------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``P4Command`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_P4_OPTIONS.rst b/share/cmake-3.22/Help/variable/CTEST_P4_OPTIONS.rst
new file mode 100644
index 0000000..01b6534
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_P4_OPTIONS.rst
@@ -0,0 +1,7 @@
+CTEST_P4_OPTIONS
+----------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``P4Options`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_P4_UPDATE_OPTIONS.rst b/share/cmake-3.22/Help/variable/CTEST_P4_UPDATE_OPTIONS.rst
new file mode 100644
index 0000000..365aa3f
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_P4_UPDATE_OPTIONS.rst
@@ -0,0 +1,7 @@
+CTEST_P4_UPDATE_OPTIONS
+-----------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``P4UpdateOptions`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_RESOURCE_SPEC_FILE.rst b/share/cmake-3.22/Help/variable/CTEST_RESOURCE_SPEC_FILE.rst
new file mode 100644
index 0000000..8e9bf01
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_RESOURCE_SPEC_FILE.rst
@@ -0,0 +1,12 @@
+CTEST_RESOURCE_SPEC_FILE
+------------------------
+
+.. versionadded:: 3.18
+
+Specify the CTest ``ResourceSpecFile`` setting in a :manual:`ctest(1)`
+dashboard client script.
+
+This can also be used to specify the resource spec file from a CMake build. If
+no ``RESOURCE_SPEC_FILE`` is passed to :command:`ctest_test`, and
+``CTEST_RESOURCE_SPEC_FILE`` is not specified in the dashboard script, the
+value of this variable from the build is used.
diff --git a/share/cmake-3.22/Help/variable/CTEST_RUN_CURRENT_SCRIPT.rst b/share/cmake-3.22/Help/variable/CTEST_RUN_CURRENT_SCRIPT.rst
new file mode 100644
index 0000000..32c85ad
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_RUN_CURRENT_SCRIPT.rst
@@ -0,0 +1,7 @@
+CTEST_RUN_CURRENT_SCRIPT
+------------------------
+
+.. versionadded:: 3.11
+
+Setting this to 0 prevents :manual:`ctest(1)` from being run again when it
+reaches the end of a script run by calling ``ctest -S``.
diff --git a/share/cmake-3.22/Help/variable/CTEST_SCP_COMMAND.rst b/share/cmake-3.22/Help/variable/CTEST_SCP_COMMAND.rst
new file mode 100644
index 0000000..155b058
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_SCP_COMMAND.rst
@@ -0,0 +1,6 @@
+CTEST_SCP_COMMAND
+-----------------
+
+.. versionadded:: 3.1
+
+Legacy option.  Not used.
diff --git a/share/cmake-3.22/Help/variable/CTEST_SCRIPT_DIRECTORY.rst b/share/cmake-3.22/Help/variable/CTEST_SCRIPT_DIRECTORY.rst
new file mode 100644
index 0000000..77d4e58
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_SCRIPT_DIRECTORY.rst
@@ -0,0 +1,5 @@
+CTEST_SCRIPT_DIRECTORY
+----------------------
+
+The directory containing the top-level CTest script.
+The concept is similar to :variable:`CMAKE_SOURCE_DIR`.
diff --git a/share/cmake-3.22/Help/variable/CTEST_SITE.rst b/share/cmake-3.22/Help/variable/CTEST_SITE.rst
new file mode 100644
index 0000000..526e6ed
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_SITE.rst
@@ -0,0 +1,7 @@
+CTEST_SITE
+----------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``Site`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_SOURCE_DIRECTORY.rst b/share/cmake-3.22/Help/variable/CTEST_SOURCE_DIRECTORY.rst
new file mode 100644
index 0000000..4c6ac54
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_SOURCE_DIRECTORY.rst
@@ -0,0 +1,7 @@
+CTEST_SOURCE_DIRECTORY
+----------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``SourceDirectory`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_SUBMIT_URL.rst b/share/cmake-3.22/Help/variable/CTEST_SUBMIT_URL.rst
new file mode 100644
index 0000000..b6e7f68
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_SUBMIT_URL.rst
@@ -0,0 +1,7 @@
+CTEST_SUBMIT_URL
+----------------
+
+.. versionadded:: 3.14
+
+Specify the CTest ``SubmitURL`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_SVN_COMMAND.rst b/share/cmake-3.22/Help/variable/CTEST_SVN_COMMAND.rst
new file mode 100644
index 0000000..e97acd0
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_SVN_COMMAND.rst
@@ -0,0 +1,7 @@
+CTEST_SVN_COMMAND
+-----------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``SVNCommand`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_SVN_OPTIONS.rst b/share/cmake-3.22/Help/variable/CTEST_SVN_OPTIONS.rst
new file mode 100644
index 0000000..5326e20
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_SVN_OPTIONS.rst
@@ -0,0 +1,7 @@
+CTEST_SVN_OPTIONS
+-----------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``SVNOptions`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_SVN_UPDATE_OPTIONS.rst b/share/cmake-3.22/Help/variable/CTEST_SVN_UPDATE_OPTIONS.rst
new file mode 100644
index 0000000..24e0bbf
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_SVN_UPDATE_OPTIONS.rst
@@ -0,0 +1,7 @@
+CTEST_SVN_UPDATE_OPTIONS
+------------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``SVNUpdateOptions`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_TEST_LOAD.rst b/share/cmake-3.22/Help/variable/CTEST_TEST_LOAD.rst
new file mode 100644
index 0000000..b6a9d62
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_TEST_LOAD.rst
@@ -0,0 +1,9 @@
+CTEST_TEST_LOAD
+---------------
+
+.. versionadded:: 3.4
+
+Specify the ``TestLoad`` setting in the :ref:`CTest Test Step`
+of a :manual:`ctest(1)` dashboard client script.  This sets the
+default value for the ``TEST_LOAD`` option of the :command:`ctest_test`
+command.
diff --git a/share/cmake-3.22/Help/variable/CTEST_TEST_TIMEOUT.rst b/share/cmake-3.22/Help/variable/CTEST_TEST_TIMEOUT.rst
new file mode 100644
index 0000000..61d9191
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_TEST_TIMEOUT.rst
@@ -0,0 +1,7 @@
+CTEST_TEST_TIMEOUT
+------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``TimeOut`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_TRIGGER_SITE.rst b/share/cmake-3.22/Help/variable/CTEST_TRIGGER_SITE.rst
new file mode 100644
index 0000000..6abb852
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_TRIGGER_SITE.rst
@@ -0,0 +1,6 @@
+CTEST_TRIGGER_SITE
+------------------
+
+.. versionadded:: 3.1
+
+Legacy option.  Not used.
diff --git a/share/cmake-3.22/Help/variable/CTEST_UPDATE_COMMAND.rst b/share/cmake-3.22/Help/variable/CTEST_UPDATE_COMMAND.rst
new file mode 100644
index 0000000..c4ed645
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_UPDATE_COMMAND.rst
@@ -0,0 +1,7 @@
+CTEST_UPDATE_COMMAND
+--------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``UpdateCommand`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_UPDATE_OPTIONS.rst b/share/cmake-3.22/Help/variable/CTEST_UPDATE_OPTIONS.rst
new file mode 100644
index 0000000..96c4b6c
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_UPDATE_OPTIONS.rst
@@ -0,0 +1,7 @@
+CTEST_UPDATE_OPTIONS
+--------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``UpdateOptions`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst b/share/cmake-3.22/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst
new file mode 100644
index 0000000..f7c863c
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst
@@ -0,0 +1,7 @@
+CTEST_UPDATE_VERSION_ONLY
+-------------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest :ref:`UpdateVersionOnly <UpdateVersionOnly>` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_UPDATE_VERSION_OVERRIDE.rst b/share/cmake-3.22/Help/variable/CTEST_UPDATE_VERSION_OVERRIDE.rst
new file mode 100644
index 0000000..87918cb
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_UPDATE_VERSION_OVERRIDE.rst
@@ -0,0 +1,7 @@
+CTEST_UPDATE_VERSION_OVERRIDE
+-----------------------------
+
+.. versionadded:: 3.15
+
+Specify the CTest :ref:`UpdateVersionOverride <UpdateVersionOverride>` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.22/Help/variable/CTEST_USE_LAUNCHERS.rst b/share/cmake-3.22/Help/variable/CTEST_USE_LAUNCHERS.rst
new file mode 100644
index 0000000..728cdc5
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/CTEST_USE_LAUNCHERS.rst
@@ -0,0 +1,7 @@
+CTEST_USE_LAUNCHERS
+-------------------
+
+.. versionadded:: 3.1
+
+Specify the CTest ``UseLaunchers`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.18/Help/variable/CYGWIN.rst b/share/cmake-3.22/Help/variable/CYGWIN.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/CYGWIN.rst
rename to share/cmake-3.22/Help/variable/CYGWIN.rst
diff --git a/share/cmake-3.18/Help/variable/ENV.rst b/share/cmake-3.22/Help/variable/ENV.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/ENV.rst
rename to share/cmake-3.22/Help/variable/ENV.rst
diff --git a/share/cmake-3.22/Help/variable/EXECUTABLE_OUTPUT_PATH.rst b/share/cmake-3.22/Help/variable/EXECUTABLE_OUTPUT_PATH.rst
new file mode 100644
index 0000000..245b9eb
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/EXECUTABLE_OUTPUT_PATH.rst
@@ -0,0 +1,8 @@
+EXECUTABLE_OUTPUT_PATH
+----------------------
+
+Old executable location variable.
+
+The target property :prop_tgt:`RUNTIME_OUTPUT_DIRECTORY` supersedes this
+variable for a target if it is set.  Executable targets are otherwise placed in
+this directory.
diff --git a/share/cmake-3.22/Help/variable/GHS-MULTI.rst b/share/cmake-3.22/Help/variable/GHS-MULTI.rst
new file mode 100644
index 0000000..bb139af
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/GHS-MULTI.rst
@@ -0,0 +1,6 @@
+GHS-MULTI
+---------
+
+.. versionadded:: 3.3
+
+``True`` when using :generator:`Green Hills MULTI` generator.
diff --git a/share/cmake-3.22/Help/variable/IOS.rst b/share/cmake-3.22/Help/variable/IOS.rst
new file mode 100644
index 0000000..b27be55
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/IOS.rst
@@ -0,0 +1,6 @@
+IOS
+---
+
+.. versionadded:: 3.14
+
+Set to ``1`` when the target system (:variable:`CMAKE_SYSTEM_NAME`) is ``iOS``.
diff --git a/share/cmake-3.18/Help/variable/LIBRARY_OUTPUT_PATH.rst b/share/cmake-3.22/Help/variable/LIBRARY_OUTPUT_PATH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/LIBRARY_OUTPUT_PATH.rst
rename to share/cmake-3.22/Help/variable/LIBRARY_OUTPUT_PATH.rst
diff --git a/share/cmake-3.22/Help/variable/MINGW.rst b/share/cmake-3.22/Help/variable/MINGW.rst
new file mode 100644
index 0000000..27c56ea
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/MINGW.rst
@@ -0,0 +1,8 @@
+MINGW
+-----
+
+.. versionadded:: 3.2
+
+``True`` when using MinGW
+
+Set to ``true`` when the compiler is some version of MinGW.
diff --git a/share/cmake-3.22/Help/variable/MSVC.rst b/share/cmake-3.22/Help/variable/MSVC.rst
new file mode 100644
index 0000000..a2dbc2e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/MSVC.rst
@@ -0,0 +1,7 @@
+MSVC
+----
+
+Set to ``true`` when the compiler is some version of Microsoft Visual C++
+or another compiler simulating the Visual C++ ``cl`` command-line syntax.
+
+See also the :variable:`MSVC_VERSION` variable.
diff --git a/share/cmake-3.18/Help/variable/MSVC10.rst b/share/cmake-3.22/Help/variable/MSVC10.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/MSVC10.rst
rename to share/cmake-3.22/Help/variable/MSVC10.rst
diff --git a/share/cmake-3.18/Help/variable/MSVC11.rst b/share/cmake-3.22/Help/variable/MSVC11.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/MSVC11.rst
rename to share/cmake-3.22/Help/variable/MSVC11.rst
diff --git a/share/cmake-3.18/Help/variable/MSVC12.rst b/share/cmake-3.22/Help/variable/MSVC12.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/MSVC12.rst
rename to share/cmake-3.22/Help/variable/MSVC12.rst
diff --git a/share/cmake-3.22/Help/variable/MSVC14.rst b/share/cmake-3.22/Help/variable/MSVC14.rst
new file mode 100644
index 0000000..1eb5183
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/MSVC14.rst
@@ -0,0 +1,9 @@
+MSVC14
+------
+
+.. versionadded:: 3.1
+
+Discouraged.  Use the :variable:`MSVC_VERSION` variable instead.
+
+``True`` when using the Microsoft Visual Studio ``v140`` or ``v141``
+toolset (``cl`` version 19) or another compiler that simulates it.
diff --git a/share/cmake-3.18/Help/variable/MSVC60.rst b/share/cmake-3.22/Help/variable/MSVC60.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/MSVC60.rst
rename to share/cmake-3.22/Help/variable/MSVC60.rst
diff --git a/share/cmake-3.18/Help/variable/MSVC70.rst b/share/cmake-3.22/Help/variable/MSVC70.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/MSVC70.rst
rename to share/cmake-3.22/Help/variable/MSVC70.rst
diff --git a/share/cmake-3.18/Help/variable/MSVC71.rst b/share/cmake-3.22/Help/variable/MSVC71.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/MSVC71.rst
rename to share/cmake-3.22/Help/variable/MSVC71.rst
diff --git a/share/cmake-3.18/Help/variable/MSVC80.rst b/share/cmake-3.22/Help/variable/MSVC80.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/MSVC80.rst
rename to share/cmake-3.22/Help/variable/MSVC80.rst
diff --git a/share/cmake-3.18/Help/variable/MSVC90.rst b/share/cmake-3.22/Help/variable/MSVC90.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/MSVC90.rst
rename to share/cmake-3.22/Help/variable/MSVC90.rst
diff --git a/share/cmake-3.22/Help/variable/MSVC_IDE.rst b/share/cmake-3.22/Help/variable/MSVC_IDE.rst
new file mode 100644
index 0000000..18e9983
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/MSVC_IDE.rst
@@ -0,0 +1,14 @@
+MSVC_IDE
+--------
+
+``True`` when using the Microsoft Visual C++ IDE.
+
+Set to ``true`` when the target platform is the Microsoft Visual C++ IDE, as
+opposed to the command line compiler.
+
+.. note::
+
+  This variable is only available after compiler detection has been performed,
+  so it is not available to toolchain files or before the first
+  :command:`project` or :command:`enable_language` call which uses an
+  MSVC-like compiler.
diff --git a/share/cmake-3.22/Help/variable/MSVC_TOOLSET_VERSION.rst b/share/cmake-3.22/Help/variable/MSVC_TOOLSET_VERSION.rst
new file mode 100644
index 0000000..c642a9f
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/MSVC_TOOLSET_VERSION.rst
@@ -0,0 +1,24 @@
+MSVC_TOOLSET_VERSION
+--------------------
+
+.. versionadded:: 3.12
+
+The toolset version of Microsoft Visual C/C++ being used if any.
+If MSVC-like is being used, this variable is set based on the version
+of the compiler as given by the :variable:`MSVC_VERSION` variable.
+
+Known toolset version numbers are::
+
+  80        = VS 2005 (8.0)
+  90        = VS 2008 (9.0)
+  100       = VS 2010 (10.0)
+  110       = VS 2012 (11.0)
+  120       = VS 2013 (12.0)
+  140       = VS 2015 (14.0)
+  141       = VS 2017 (15.0)
+  142       = VS 2019 (16.0)
+
+Compiler versions newer than those known to CMake will be reported
+as the latest known toolset version.
+
+See also the :variable:`MSVC_VERSION` variable.
diff --git a/share/cmake-3.22/Help/variable/MSVC_VERSION.rst b/share/cmake-3.22/Help/variable/MSVC_VERSION.rst
new file mode 100644
index 0000000..cbb3a3c
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/MSVC_VERSION.rst
@@ -0,0 +1,25 @@
+MSVC_VERSION
+------------
+
+The version of Microsoft Visual C/C++ being used if any.
+If a compiler simulating Visual C++ is being used, this variable is set
+to the toolset version simulated as given by the ``_MSC_VER``
+preprocessor definition.
+
+Known version numbers are::
+
+  1200      = VS  6.0
+  1300      = VS  7.0
+  1310      = VS  7.1
+  1400      = VS  8.0 (v80 toolset)
+  1500      = VS  9.0 (v90 toolset)
+  1600      = VS 10.0 (v100 toolset)
+  1700      = VS 11.0 (v110 toolset)
+  1800      = VS 12.0 (v120 toolset)
+  1900      = VS 14.0 (v140 toolset)
+  1910-1919 = VS 15.0 (v141 toolset)
+  1920-1929 = VS 16.0 (v142 toolset)
+  1930-1939 = VS 17.0 (v143 toolset)
+
+See also the  :variable:`CMAKE_<LANG>_COMPILER_VERSION` and
+:variable:`MSVC_TOOLSET_VERSION` variable.
diff --git a/share/cmake-3.22/Help/variable/MSYS.rst b/share/cmake-3.22/Help/variable/MSYS.rst
new file mode 100644
index 0000000..6be7681
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/MSYS.rst
@@ -0,0 +1,6 @@
+MSYS
+----
+
+.. versionadded:: 3.14
+
+``True`` when using the :generator:`MSYS Makefiles` generator.
diff --git a/share/cmake-3.18/Help/variable/PROJECT-NAME_BINARY_DIR.rst b/share/cmake-3.22/Help/variable/PROJECT-NAME_BINARY_DIR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/PROJECT-NAME_BINARY_DIR.rst
rename to share/cmake-3.22/Help/variable/PROJECT-NAME_BINARY_DIR.rst
diff --git a/share/cmake-3.22/Help/variable/PROJECT-NAME_DESCRIPTION.rst b/share/cmake-3.22/Help/variable/PROJECT-NAME_DESCRIPTION.rst
new file mode 100644
index 0000000..f372f5c
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/PROJECT-NAME_DESCRIPTION.rst
@@ -0,0 +1,7 @@
+<PROJECT-NAME>_DESCRIPTION
+--------------------------
+
+.. versionadded:: 3.12
+
+Value given to the ``DESCRIPTION`` option of the most recent call to the
+:command:`project` command with project name ``<PROJECT-NAME>``, if any.
diff --git a/share/cmake-3.22/Help/variable/PROJECT-NAME_HOMEPAGE_URL.rst b/share/cmake-3.22/Help/variable/PROJECT-NAME_HOMEPAGE_URL.rst
new file mode 100644
index 0000000..4800b13
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/PROJECT-NAME_HOMEPAGE_URL.rst
@@ -0,0 +1,7 @@
+<PROJECT-NAME>_HOMEPAGE_URL
+---------------------------
+
+.. versionadded:: 3.12
+
+Value given to the ``HOMEPAGE_URL`` option of the most recent call to the
+:command:`project` command with project name ``<PROJECT-NAME>``, if any.
diff --git a/share/cmake-3.22/Help/variable/PROJECT-NAME_IS_TOP_LEVEL.rst b/share/cmake-3.22/Help/variable/PROJECT-NAME_IS_TOP_LEVEL.rst
new file mode 100644
index 0000000..6718ecf
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/PROJECT-NAME_IS_TOP_LEVEL.rst
@@ -0,0 +1,21 @@
+<PROJECT-NAME>_IS_TOP_LEVEL
+---------------------------
+
+.. versionadded:: 3.21
+
+A boolean variable indicating whether the named project was called in a top
+level ``CMakeLists.txt`` file.
+
+To obtain the value from the most recent call to :command:`project` in
+the current directory scope or above, see the
+:variable:`PROJECT_IS_TOP_LEVEL` variable.
+
+The variable value will be true in:
+
+* the top-level directory of the project
+* the top-level directory of an external project added by :module:`ExternalProject`
+
+The variable value will be false in:
+
+* a directory added by :command:`add_subdirectory`
+* a directory added by :module:`FetchContent`
diff --git a/share/cmake-3.18/Help/variable/PROJECT-NAME_SOURCE_DIR.rst b/share/cmake-3.22/Help/variable/PROJECT-NAME_SOURCE_DIR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/PROJECT-NAME_SOURCE_DIR.rst
rename to share/cmake-3.22/Help/variable/PROJECT-NAME_SOURCE_DIR.rst
diff --git a/share/cmake-3.18/Help/variable/PROJECT-NAME_VERSION.rst b/share/cmake-3.22/Help/variable/PROJECT-NAME_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/PROJECT-NAME_VERSION.rst
rename to share/cmake-3.22/Help/variable/PROJECT-NAME_VERSION.rst
diff --git a/share/cmake-3.18/Help/variable/PROJECT-NAME_VERSION_MAJOR.rst b/share/cmake-3.22/Help/variable/PROJECT-NAME_VERSION_MAJOR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/PROJECT-NAME_VERSION_MAJOR.rst
rename to share/cmake-3.22/Help/variable/PROJECT-NAME_VERSION_MAJOR.rst
diff --git a/share/cmake-3.18/Help/variable/PROJECT-NAME_VERSION_MINOR.rst b/share/cmake-3.22/Help/variable/PROJECT-NAME_VERSION_MINOR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/PROJECT-NAME_VERSION_MINOR.rst
rename to share/cmake-3.22/Help/variable/PROJECT-NAME_VERSION_MINOR.rst
diff --git a/share/cmake-3.18/Help/variable/PROJECT-NAME_VERSION_PATCH.rst b/share/cmake-3.22/Help/variable/PROJECT-NAME_VERSION_PATCH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/PROJECT-NAME_VERSION_PATCH.rst
rename to share/cmake-3.22/Help/variable/PROJECT-NAME_VERSION_PATCH.rst
diff --git a/share/cmake-3.18/Help/variable/PROJECT-NAME_VERSION_TWEAK.rst b/share/cmake-3.22/Help/variable/PROJECT-NAME_VERSION_TWEAK.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/PROJECT-NAME_VERSION_TWEAK.rst
rename to share/cmake-3.22/Help/variable/PROJECT-NAME_VERSION_TWEAK.rst
diff --git a/share/cmake-3.18/Help/variable/PROJECT_BINARY_DIR.rst b/share/cmake-3.22/Help/variable/PROJECT_BINARY_DIR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/PROJECT_BINARY_DIR.rst
rename to share/cmake-3.22/Help/variable/PROJECT_BINARY_DIR.rst
diff --git a/share/cmake-3.22/Help/variable/PROJECT_DESCRIPTION.rst b/share/cmake-3.22/Help/variable/PROJECT_DESCRIPTION.rst
new file mode 100644
index 0000000..1fefcdc
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/PROJECT_DESCRIPTION.rst
@@ -0,0 +1,11 @@
+PROJECT_DESCRIPTION
+-------------------
+
+.. versionadded:: 3.9
+
+Short project description given to the project command.
+
+This is the description given to the most recently called :command:`project`
+command in the current directory scope or above.  To obtain the description
+of the top level project, see the :variable:`CMAKE_PROJECT_DESCRIPTION`
+variable.
diff --git a/share/cmake-3.22/Help/variable/PROJECT_HOMEPAGE_URL.rst b/share/cmake-3.22/Help/variable/PROJECT_HOMEPAGE_URL.rst
new file mode 100644
index 0000000..0d2c937
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/PROJECT_HOMEPAGE_URL.rst
@@ -0,0 +1,11 @@
+PROJECT_HOMEPAGE_URL
+--------------------
+
+.. versionadded:: 3.12
+
+The homepage URL of the project.
+
+This is the homepage URL given to the most recently called :command:`project`
+command in the current directory scope or above.  To obtain the homepage URL
+of the top level project, see the :variable:`CMAKE_PROJECT_HOMEPAGE_URL`
+variable.
diff --git a/share/cmake-3.22/Help/variable/PROJECT_IS_TOP_LEVEL.rst b/share/cmake-3.22/Help/variable/PROJECT_IS_TOP_LEVEL.rst
new file mode 100644
index 0000000..7e40704
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/PROJECT_IS_TOP_LEVEL.rst
@@ -0,0 +1,32 @@
+PROJECT_IS_TOP_LEVEL
+--------------------
+
+.. versionadded:: 3.21
+
+A boolean variable indicating whether the most recently called
+:command:`project` command in the current scope or above was in the top
+level ``CMakeLists.txt`` file.
+
+Some modules should only be included as part of the top level
+``CMakeLists.txt`` file to not cause unintended side effects in the build
+tree, and this variable can be used to conditionally execute such code. For
+example, consider the :module:`CTest` module, which creates targets and
+options:
+
+.. code-block:: cmake
+
+  project(MyProject)
+  ...
+  if(PROJECT_IS_TOP_LEVEL)
+    include(CTest)
+  endif()
+
+The variable value will be true in:
+
+* the top-level directory of the project
+* the top-level directory of an external project added by :module:`ExternalProject`
+
+The variable value will be false in:
+
+* a directory added by :command:`add_subdirectory`
+* a directory added by :module:`FetchContent`
diff --git a/share/cmake-3.18/Help/variable/PROJECT_NAME.rst b/share/cmake-3.22/Help/variable/PROJECT_NAME.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/PROJECT_NAME.rst
rename to share/cmake-3.22/Help/variable/PROJECT_NAME.rst
diff --git a/share/cmake-3.18/Help/variable/PROJECT_SOURCE_DIR.rst b/share/cmake-3.22/Help/variable/PROJECT_SOURCE_DIR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/PROJECT_SOURCE_DIR.rst
rename to share/cmake-3.22/Help/variable/PROJECT_SOURCE_DIR.rst
diff --git a/share/cmake-3.18/Help/variable/PROJECT_VERSION.rst b/share/cmake-3.22/Help/variable/PROJECT_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/PROJECT_VERSION.rst
rename to share/cmake-3.22/Help/variable/PROJECT_VERSION.rst
diff --git a/share/cmake-3.18/Help/variable/PROJECT_VERSION_MAJOR.rst b/share/cmake-3.22/Help/variable/PROJECT_VERSION_MAJOR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/PROJECT_VERSION_MAJOR.rst
rename to share/cmake-3.22/Help/variable/PROJECT_VERSION_MAJOR.rst
diff --git a/share/cmake-3.18/Help/variable/PROJECT_VERSION_MINOR.rst b/share/cmake-3.22/Help/variable/PROJECT_VERSION_MINOR.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/PROJECT_VERSION_MINOR.rst
rename to share/cmake-3.22/Help/variable/PROJECT_VERSION_MINOR.rst
diff --git a/share/cmake-3.18/Help/variable/PROJECT_VERSION_PATCH.rst b/share/cmake-3.22/Help/variable/PROJECT_VERSION_PATCH.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/PROJECT_VERSION_PATCH.rst
rename to share/cmake-3.22/Help/variable/PROJECT_VERSION_PATCH.rst
diff --git a/share/cmake-3.18/Help/variable/PROJECT_VERSION_TWEAK.rst b/share/cmake-3.22/Help/variable/PROJECT_VERSION_TWEAK.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/PROJECT_VERSION_TWEAK.rst
rename to share/cmake-3.22/Help/variable/PROJECT_VERSION_TWEAK.rst
diff --git a/share/cmake-3.22/Help/variable/PackageName_ROOT.rst b/share/cmake-3.22/Help/variable/PackageName_ROOT.rst
new file mode 100644
index 0000000..98ba20e
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/PackageName_ROOT.rst
@@ -0,0 +1,16 @@
+<PackageName>_ROOT
+------------------
+
+.. versionadded:: 3.12
+
+Calls to :command:`find_package(<PackageName>)` will search in prefixes
+specified by the ``<PackageName>_ROOT`` CMake variable, where
+``<PackageName>`` is the name given to the :command:`find_package` call
+and ``_ROOT`` is literal.  For example, ``find_package(Foo)`` will search
+prefixes specified in the ``Foo_ROOT`` CMake variable (if set).
+See policy :policy:`CMP0074`.
+
+This variable may hold a single prefix or a
+:ref:`semicolon-separated list <CMake Language Lists>` of multiple prefixes.
+
+See also the :envvar:`<PackageName>_ROOT` environment variable.
diff --git a/share/cmake-3.18/Help/variable/UNIX.rst b/share/cmake-3.22/Help/variable/UNIX.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/UNIX.rst
rename to share/cmake-3.22/Help/variable/UNIX.rst
diff --git a/share/cmake-3.18/Help/variable/WIN32.rst b/share/cmake-3.22/Help/variable/WIN32.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/WIN32.rst
rename to share/cmake-3.22/Help/variable/WIN32.rst
diff --git a/share/cmake-3.22/Help/variable/WINCE.rst b/share/cmake-3.22/Help/variable/WINCE.rst
new file mode 100644
index 0000000..4dca297
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/WINCE.rst
@@ -0,0 +1,7 @@
+WINCE
+-----
+
+.. versionadded:: 3.1
+
+True when the :variable:`CMAKE_SYSTEM_NAME` variable is set
+to ``WindowsCE``.
diff --git a/share/cmake-3.22/Help/variable/WINDOWS_PHONE.rst b/share/cmake-3.22/Help/variable/WINDOWS_PHONE.rst
new file mode 100644
index 0000000..bf7099d
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/WINDOWS_PHONE.rst
@@ -0,0 +1,7 @@
+WINDOWS_PHONE
+-------------
+
+.. versionadded:: 3.1
+
+True when the :variable:`CMAKE_SYSTEM_NAME` variable is set
+to ``WindowsPhone``.
diff --git a/share/cmake-3.22/Help/variable/WINDOWS_STORE.rst b/share/cmake-3.22/Help/variable/WINDOWS_STORE.rst
new file mode 100644
index 0000000..13831c2
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/WINDOWS_STORE.rst
@@ -0,0 +1,7 @@
+WINDOWS_STORE
+-------------
+
+.. versionadded:: 3.1
+
+True when the :variable:`CMAKE_SYSTEM_NAME` variable is set
+to ``WindowsStore``.
diff --git a/share/cmake-3.22/Help/variable/XCODE.rst b/share/cmake-3.22/Help/variable/XCODE.rst
new file mode 100644
index 0000000..167ca86
--- /dev/null
+++ b/share/cmake-3.22/Help/variable/XCODE.rst
@@ -0,0 +1,6 @@
+XCODE
+-----
+
+.. versionadded:: 3.7
+
+``True`` when using :generator:`Xcode` generator.
diff --git a/share/cmake-3.18/Help/variable/XCODE_VERSION.rst b/share/cmake-3.22/Help/variable/XCODE_VERSION.rst
similarity index 100%
rename from share/cmake-3.18/Help/variable/XCODE_VERSION.rst
rename to share/cmake-3.22/Help/variable/XCODE_VERSION.rst
diff --git a/share/cmake-3.22/Modules/AddFileDependencies.cmake b/share/cmake-3.22/Modules/AddFileDependencies.cmake
new file mode 100644
index 0000000..13b2600
--- /dev/null
+++ b/share/cmake-3.22/Modules/AddFileDependencies.cmake
@@ -0,0 +1,33 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+AddFileDependencies
+-------------------
+
+.. deprecated:: 3.20
+
+Add dependencies to a source file.
+
+.. code-block:: cmake
+
+  add_file_dependencies(<source> <files>...)
+
+Adds the given ``<files>`` to the dependencies of file ``<source>``.
+
+Do not use this command in new code.  It is just a wrapper around:
+
+.. code-block:: cmake
+
+  set_property(SOURCE <source> APPEND PROPERTY OBJECT_DEPENDS <files>...)
+
+Instead use the :command:`set_property` command to append to the
+:prop_sf:`OBJECT_DEPENDS` source file property directly.
+
+#]=======================================================================]
+
+function(add_file_dependencies _file)
+
+  set_property(SOURCE "${_file}" APPEND PROPERTY OBJECT_DEPENDS "${ARGN}")
+
+endfunction()
diff --git a/share/cmake-3.22/Modules/AndroidTestUtilities.cmake b/share/cmake-3.22/Modules/AndroidTestUtilities.cmake
new file mode 100644
index 0000000..ddccf58
--- /dev/null
+++ b/share/cmake-3.22/Modules/AndroidTestUtilities.cmake
@@ -0,0 +1,164 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[======================================================================[.rst:
+AndroidTestUtilities
+------------------------
+
+.. versionadded:: 3.7
+
+Create a test that automatically loads specified data onto an Android device.
+
+Introduction
+^^^^^^^^^^^^
+
+Use this module to push data needed for testing an Android device behavior
+onto a connected Android device. The module will accept files and libraries as
+well as separate destinations for each. It will create a test that loads the
+files into a device object store and link to them from the specified
+destination. The files are only uploaded if they are not already in the object
+store.
+
+For example:
+
+.. code-block:: cmake
+
+  include(AndroidTestUtilities)
+  android_add_test_data(
+    example_setup_test
+    FILES <files>...
+    LIBS <libs>...
+    DEVICE_TEST_DIR "/data/local/tests/example"
+    DEVICE_OBJECT_STORE "/sdcard/.ExternalData/SHA"
+    )
+
+
+At build time a test named "example_setup_test" will be created.  Run this test
+on the command line with :manual:`ctest(1)` to load the data onto the Android
+device.
+
+Module Functions
+^^^^^^^^^^^^^^^^
+
+.. command:: android_add_test_data
+
+  .. code-block:: cmake
+
+    android_add_test_data(<test-name>
+      [FILES <files>...] [FILES_DEST <device-dir>]
+      [LIBS <libs>...]   [LIBS_DEST <device-dir>]
+      [DEVICE_OBJECT_STORE <device-dir>]
+      [DEVICE_TEST_DIR <device-dir>]
+      [NO_LINK_REGEX <strings>...]
+      )
+
+  The ``android_add_test_data`` function is used to copy files and libraries
+  needed to run project-specific tests. On the host operating system, this is
+  done at build time. For on-device testing, the files are loaded onto the
+  device by the manufactured test at run time.
+
+  This function accepts the following named parameters:
+
+  ``FILES <files>...``
+    zero or more files needed for testing
+  ``LIBS <libs>...``
+    zero or more libraries needed for testing
+  ``FILES_DEST <device-dir>``
+    absolute path where the data files are expected to be
+  ``LIBS_DEST <device-dir>``
+    absolute path where the libraries are expected to be
+  ``DEVICE_OBJECT_STORE <device-dir>``
+    absolute path to the location where the data is stored on-device
+  ``DEVICE_TEST_DIR <device-dir>``
+    absolute path to the root directory of the on-device test location
+  ``NO_LINK_REGEX <strings>...``
+    list of regex strings matching the names of files that should be
+    copied from the object store to the testing directory
+#]======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/ExternalData.cmake)
+
+# The parameters to this function should be set to the list of directories,
+# files, and libraries that need to be installed prior to testing.
+function(android_add_test_data test_name)
+  # As the names suggest, oneValueArgs lists the arguments that specify a
+  # single value, while multiValueArgs can contain one or more values.
+  set(keywordArgs)
+  set(oneValueArgs FILES_DEST LIBS_DEST DEVICE_OBJECT_STORE DEVICE_TEST_DIR)
+  set(multiValueArgs FILES LIBS NO_LINK_REGEX)
+
+  # For example, if you called this function with FILES </path/to/file>
+  # then this path would be stored in the variable AST_FILES.
+  # The AST prefix stands for the name of this function (android_add_test_data).
+  cmake_parse_arguments(AST "${keywordArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+  if(NOT AST_DEVICE_TEST_DIR)
+    message(FATAL_ERROR "-- You must specify the location of the on device test directory.")
+  endif()
+  if(NOT AST_DEVICE_OBJECT_STORE)
+    message(FATAL_ERROR "-- You must specify the location of the on device object store.")
+  endif()
+  if(${AST_DEVICE_TEST_DIR} STREQUAL "/")
+    message(FATAL_ERROR "-- The device test directory cannot be '/'")
+  endif()
+
+  # Copy all test data files into the binary directory, where tests are run.
+  # ExternalData will handle fetching DATA{...} references.
+  string(REPLACE "|" ";" hash_algs "${_ExternalData_REGEX_EXT}")
+  # Convert ExternalData placeholder file names to DATA{} syntax.
+  foreach(alg ${hash_algs})
+    string(REGEX REPLACE "([^ ;]+)\\.${alg}" "DATA{\\1}" AST_FILES "${AST_FILES}")
+  endforeach()
+
+  set(DATA_TARGET_NAME "${test_name}")
+  string(FIND "${AST_FILES}" "DATA{" data_files_found)
+  if(${data_files_found} GREATER "-1")
+    # Use ExternalData if any DATA{} files were found.
+    ExternalData_Expand_Arguments(
+      ${DATA_TARGET_NAME}
+      extern_data_output
+      ${AST_FILES})
+    ExternalData_Add_Target(${DATA_TARGET_NAME})
+  else()
+    add_custom_target(${DATA_TARGET_NAME} ALL)
+    set(extern_data_output ${AST_FILES})
+  endif()
+
+  # For regular files on Linux, just copy them directly.
+  foreach(path ${AST_FILES})
+    foreach(output ${extern_data_output})
+      if(${output} STREQUAL ${path})
+        # Check if a destination was specified.  If not, we copy by default
+        # into this project's binary directory, preserving its relative path.
+        if(AST_${VAR}_DEST)
+          set(DEST ${CMAKE_BINARY_DIR}/${parent_dir}/${AST_${VAR}_DEST})
+        else()
+          get_filename_component(parent_dir ${path} DIRECTORY)
+          set(DEST "${CMAKE_BINARY_DIR}/${parent_dir}")
+        endif()
+        get_filename_component(extern_data_source ${output} REALPATH)
+        get_filename_component(extern_data_basename ${output} NAME)
+        add_custom_command(
+          TARGET ${DATA_TARGET_NAME} POST_BUILD
+          DEPENDS ${extern_data_source}
+          COMMAND ${CMAKE_COMMAND} -E copy_if_different ${extern_data_source} ${DEST}/${extern_data_basename}
+        )
+      endif()
+    endforeach()
+  endforeach()
+
+  if(ANDROID)
+    string(REGEX REPLACE "DATA{([^ ;]+)}" "\\1"  processed_FILES "${AST_FILES}")
+    add_test(
+      NAME ${test_name}
+      COMMAND ${CMAKE_COMMAND}
+      "-Darg_files_dest=${AST_FILES_DEST}"
+      "-Darg_libs_dest=${AST_LIBS_DEST}"
+      "-Darg_dev_test_dir=${AST_DEVICE_TEST_DIR}"
+      "-Darg_dev_obj_store=${AST_DEVICE_OBJECT_STORE}"
+      "-Darg_no_link_regex=${AST_NO_LINK_REGEX}"
+      "-Darg_files=${processed_FILES}"
+      "-Darg_libs=${AST_LIBS}"
+      "-Darg_src_dir=${CMAKE_CURRENT_SOURCE_DIR}"
+      -P ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/AndroidTestUtilities/PushToAndroidDevice.cmake)
+  endif()
+endfunction()
diff --git a/share/cmake-3.18/Modules/AndroidTestUtilities/PushToAndroidDevice.cmake b/share/cmake-3.22/Modules/AndroidTestUtilities/PushToAndroidDevice.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/AndroidTestUtilities/PushToAndroidDevice.cmake
rename to share/cmake-3.22/Modules/AndroidTestUtilities/PushToAndroidDevice.cmake
diff --git a/share/cmake-3.22/Modules/BasicConfigVersion-AnyNewerVersion.cmake.in b/share/cmake-3.22/Modules/BasicConfigVersion-AnyNewerVersion.cmake.in
new file mode 100644
index 0000000..46b8b2a
--- /dev/null
+++ b/share/cmake-3.22/Modules/BasicConfigVersion-AnyNewerVersion.cmake.in
@@ -0,0 +1,48 @@
+# This is a basic version file for the Config-mode of find_package().
+# It is used by write_basic_package_version_file() as input file for configure_file()
+# to create a version-file which can be installed along a config.cmake file.
+#
+# The created file sets PACKAGE_VERSION_EXACT if the current version string and
+# the requested version string are exactly the same and it sets
+# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version.
+# The variable CVF_VERSION must be set before calling configure_file().
+
+set(PACKAGE_VERSION "@CVF_VERSION@")
+
+if (PACKAGE_FIND_VERSION_RANGE)
+  # Package version must be in the requested version range
+  if ((PACKAGE_FIND_VERSION_RANGE_MIN STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MIN)
+      OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_GREATER PACKAGE_FIND_VERSION_MAX)
+        OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_GREATER_EQUAL PACKAGE_FIND_VERSION_MAX)))
+    set(PACKAGE_VERSION_COMPATIBLE FALSE)
+  else()
+    set(PACKAGE_VERSION_COMPATIBLE TRUE)
+  endif()
+else()
+  if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
+    set(PACKAGE_VERSION_COMPATIBLE FALSE)
+  else()
+    set(PACKAGE_VERSION_COMPATIBLE TRUE)
+    if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
+      set(PACKAGE_VERSION_EXACT TRUE)
+    endif()
+  endif()
+endif()
+
+
+# if the installed project requested no architecture check, don't perform the check
+if("@CVF_ARCH_INDEPENDENT@")
+  return()
+endif()
+
+# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
+if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "")
+  return()
+endif()
+
+# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
+if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "@CMAKE_SIZEOF_VOID_P@")
+  math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8")
+  set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
+  set(PACKAGE_VERSION_UNSUITABLE TRUE)
+endif()
diff --git a/share/cmake-3.22/Modules/BasicConfigVersion-ExactVersion.cmake.in b/share/cmake-3.22/Modules/BasicConfigVersion-ExactVersion.cmake.in
new file mode 100644
index 0000000..c8d2695
--- /dev/null
+++ b/share/cmake-3.22/Modules/BasicConfigVersion-ExactVersion.cmake.in
@@ -0,0 +1,88 @@
+# This is a basic version file for the Config-mode of find_package().
+# It is used by write_basic_package_version_file() as input file for configure_file()
+# to create a version-file which can be installed along a config.cmake file.
+#
+# The created file sets PACKAGE_VERSION_EXACT if the current version string and
+# the requested version string are exactly the same and it sets
+# PACKAGE_VERSION_COMPATIBLE if the current version is equal to the requested version.
+# The tweak version component is ignored.
+# The variable CVF_VERSION must be set before calling configure_file().
+
+
+if (PACKAGE_FIND_VERSION_RANGE)
+  message(AUTHOR_WARNING
+    "`find_package()` specify a version range but the version strategy "
+    "(ExactVersion) of the module `${PACKAGE_FIND_NAME}` is incompatible "
+    "with this request. Only the lower endpoint of the range will be used.")
+endif()
+
+set(PACKAGE_VERSION "@CVF_VERSION@")
+
+if("@CVF_VERSION@" MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)") # strip the tweak version
+  set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
+  set(CVF_VERSION_MINOR "${CMAKE_MATCH_2}")
+  set(CVF_VERSION_PATCH "${CMAKE_MATCH_3}")
+
+  if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
+    string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
+  endif()
+  if(NOT CVF_VERSION_MINOR VERSION_EQUAL 0)
+    string(REGEX REPLACE "^0+" "" CVF_VERSION_MINOR "${CVF_VERSION_MINOR}")
+  endif()
+  if(NOT CVF_VERSION_PATCH VERSION_EQUAL 0)
+    string(REGEX REPLACE "^0+" "" CVF_VERSION_PATCH "${CVF_VERSION_PATCH}")
+  endif()
+
+  set(CVF_VERSION_NO_TWEAK "${CVF_VERSION_MAJOR}.${CVF_VERSION_MINOR}.${CVF_VERSION_PATCH}")
+else()
+  set(CVF_VERSION_NO_TWEAK "@CVF_VERSION@")
+endif()
+
+if(PACKAGE_FIND_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)") # strip the tweak version
+  set(REQUESTED_VERSION_MAJOR "${CMAKE_MATCH_1}")
+  set(REQUESTED_VERSION_MINOR "${CMAKE_MATCH_2}")
+  set(REQUESTED_VERSION_PATCH "${CMAKE_MATCH_3}")
+
+  if(NOT REQUESTED_VERSION_MAJOR VERSION_EQUAL 0)
+    string(REGEX REPLACE "^0+" "" REQUESTED_VERSION_MAJOR "${REQUESTED_VERSION_MAJOR}")
+  endif()
+  if(NOT REQUESTED_VERSION_MINOR VERSION_EQUAL 0)
+    string(REGEX REPLACE "^0+" "" REQUESTED_VERSION_MINOR "${REQUESTED_VERSION_MINOR}")
+  endif()
+  if(NOT REQUESTED_VERSION_PATCH VERSION_EQUAL 0)
+    string(REGEX REPLACE "^0+" "" REQUESTED_VERSION_PATCH "${REQUESTED_VERSION_PATCH}")
+  endif()
+
+  set(REQUESTED_VERSION_NO_TWEAK
+      "${REQUESTED_VERSION_MAJOR}.${REQUESTED_VERSION_MINOR}.${REQUESTED_VERSION_PATCH}")
+else()
+  set(REQUESTED_VERSION_NO_TWEAK "${PACKAGE_FIND_VERSION}")
+endif()
+
+if(REQUESTED_VERSION_NO_TWEAK STREQUAL CVF_VERSION_NO_TWEAK)
+  set(PACKAGE_VERSION_COMPATIBLE TRUE)
+else()
+  set(PACKAGE_VERSION_COMPATIBLE FALSE)
+endif()
+
+if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
+  set(PACKAGE_VERSION_EXACT TRUE)
+endif()
+
+
+# if the installed project requested no architecture check, don't perform the check
+if("@CVF_ARCH_INDEPENDENT@")
+  return()
+endif()
+
+# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
+if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "")
+  return()
+endif()
+
+# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
+if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "@CMAKE_SIZEOF_VOID_P@")
+  math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8")
+  set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
+  set(PACKAGE_VERSION_UNSUITABLE TRUE)
+endif()
diff --git a/share/cmake-3.22/Modules/BasicConfigVersion-SameMajorVersion.cmake.in b/share/cmake-3.22/Modules/BasicConfigVersion-SameMajorVersion.cmake.in
new file mode 100644
index 0000000..cf73f60
--- /dev/null
+++ b/share/cmake-3.22/Modules/BasicConfigVersion-SameMajorVersion.cmake.in
@@ -0,0 +1,70 @@
+# This is a basic version file for the Config-mode of find_package().
+# It is used by write_basic_package_version_file() as input file for configure_file()
+# to create a version-file which can be installed along a config.cmake file.
+#
+# The created file sets PACKAGE_VERSION_EXACT if the current version string and
+# the requested version string are exactly the same and it sets
+# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version,
+# but only if the requested major version is the same as the current one.
+# The variable CVF_VERSION must be set before calling configure_file().
+
+
+set(PACKAGE_VERSION "@CVF_VERSION@")
+
+if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
+  set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else()
+
+  if("@CVF_VERSION@" MATCHES "^([0-9]+)\\.")
+    set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
+    if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
+      string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
+    endif()
+  else()
+    set(CVF_VERSION_MAJOR "@CVF_VERSION@")
+  endif()
+
+  if(PACKAGE_FIND_VERSION_RANGE)
+    # both endpoints of the range must have the expected major version
+    math (EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1")
+    if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
+        OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR)
+          OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT)))
+      set(PACKAGE_VERSION_COMPATIBLE FALSE)
+    elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
+        AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX)
+        OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX)))
+      set(PACKAGE_VERSION_COMPATIBLE TRUE)
+    else()
+      set(PACKAGE_VERSION_COMPATIBLE FALSE)
+    endif()
+  else()
+    if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR)
+      set(PACKAGE_VERSION_COMPATIBLE TRUE)
+    else()
+      set(PACKAGE_VERSION_COMPATIBLE FALSE)
+    endif()
+
+    if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
+      set(PACKAGE_VERSION_EXACT TRUE)
+    endif()
+  endif()
+endif()
+
+
+# if the installed project requested no architecture check, don't perform the check
+if("@CVF_ARCH_INDEPENDENT@")
+  return()
+endif()
+
+# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
+if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "")
+  return()
+endif()
+
+# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
+if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "@CMAKE_SIZEOF_VOID_P@")
+  math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8")
+  set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
+  set(PACKAGE_VERSION_UNSUITABLE TRUE)
+endif()
diff --git a/share/cmake-3.22/Modules/BasicConfigVersion-SameMinorVersion.cmake.in b/share/cmake-3.22/Modules/BasicConfigVersion-SameMinorVersion.cmake.in
new file mode 100644
index 0000000..ef21df6
--- /dev/null
+++ b/share/cmake-3.22/Modules/BasicConfigVersion-SameMinorVersion.cmake.in
@@ -0,0 +1,90 @@
+# This is a basic version file for the Config-mode of find_package().
+# It is used by write_basic_package_version_file() as input file for configure_file()
+# to create a version-file which can be installed along a config.cmake file.
+#
+# The created file sets PACKAGE_VERSION_EXACT if the current version string and
+# the requested version string are exactly the same and it sets
+# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version,
+# but only if the requested major and minor versions are the same as the current
+# one.
+# The variable CVF_VERSION must be set before calling configure_file().
+
+
+set(PACKAGE_VERSION "@CVF_VERSION@")
+
+if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
+  set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else()
+
+  if("@CVF_VERSION@" MATCHES "^([0-9]+)\\.([0-9]+)")
+    set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
+    set(CVF_VERSION_MINOR "${CMAKE_MATCH_2}")
+
+    if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
+      string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
+    endif()
+    if(NOT CVF_VERSION_MINOR VERSION_EQUAL 0)
+      string(REGEX REPLACE "^0+" "" CVF_VERSION_MINOR "${CVF_VERSION_MINOR}")
+    endif()
+  else()
+    set(CVF_VERSION_MAJOR "@CVF_VERSION@")
+    set(CVF_VERSION_MINOR "")
+  endif()
+
+  if(PACKAGE_FIND_VERSION_RANGE)
+    # both endpoints of the range must have the expected major and minor versions
+    math (EXPR CVF_VERSION_MINOR_NEXT "${CVF_VERSION_MINOR} + 1")
+    if (NOT (PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
+          AND PACKAGE_FIND_VERSION_MIN_MINOR STREQUAL CVF_VERSION_MINOR)
+        OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE"
+            AND NOT (PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR
+              AND PACKAGE_FIND_VERSION_MAX_MINOR STREQUAL CVF_VERSION_MINOR))
+          OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE"
+            AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL ${CVF_VERSION_MAJOR}.${CVF_VERSION_MINOR_NEXT})))
+      set(PACKAGE_VERSION_COMPATIBLE FALSE)
+    elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
+        AND PACKAGE_FIND_VERSION_MIN_MINOR STREQUAL CVF_VERSION_MINOR
+        AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX)
+        OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX)))
+      set(PACKAGE_VERSION_COMPATIBLE TRUE)
+    else()
+      set(PACKAGE_VERSION_COMPATIBLE FALSE)
+    endif()
+  else()
+    if(NOT PACKAGE_FIND_VERSION_MAJOR VERSION_EQUAL 0)
+      string(REGEX REPLACE "^0+" "" PACKAGE_FIND_VERSION_MAJOR "${PACKAGE_FIND_VERSION_MAJOR}")
+    endif()
+    if(NOT PACKAGE_FIND_VERSION_MINOR VERSION_EQUAL 0)
+      string(REGEX REPLACE "^0+" "" PACKAGE_FIND_VERSION_MINOR "${PACKAGE_FIND_VERSION_MINOR}")
+    endif()
+
+    if((PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) AND
+        (PACKAGE_FIND_VERSION_MINOR STREQUAL CVF_VERSION_MINOR))
+      set(PACKAGE_VERSION_COMPATIBLE TRUE)
+    else()
+      set(PACKAGE_VERSION_COMPATIBLE FALSE)
+    endif()
+
+    if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
+      set(PACKAGE_VERSION_EXACT TRUE)
+    endif()
+  endif()
+endif()
+
+
+# if the installed project requested no architecture check, don't perform the check
+if("@CVF_ARCH_INDEPENDENT@")
+  return()
+endif()
+
+# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
+if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "")
+  return()
+endif()
+
+# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
+if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "@CMAKE_SIZEOF_VOID_P@")
+  math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8")
+  set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
+  set(PACKAGE_VERSION_UNSUITABLE TRUE)
+endif()
diff --git a/share/cmake-3.22/Modules/BundleUtilities.cmake b/share/cmake-3.22/Modules/BundleUtilities.cmake
new file mode 100644
index 0000000..0beff04
--- /dev/null
+++ b/share/cmake-3.22/Modules/BundleUtilities.cmake
@@ -0,0 +1,1132 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+BundleUtilities
+---------------
+
+Functions to help assemble a standalone bundle application.
+
+A collection of CMake utility functions useful for dealing with ``.app``
+bundles on the Mac and bundle-like directories on any OS.
+
+The following functions are provided by this module:
+
+.. code-block:: cmake
+
+   fixup_bundle
+   copy_and_fixup_bundle
+   verify_app
+   get_bundle_main_executable
+   get_dotapp_dir
+   get_bundle_and_executable
+   get_bundle_all_executables
+   get_item_key
+   get_item_rpaths
+   clear_bundle_keys
+   set_bundle_key_values
+   get_bundle_keys
+   copy_resolved_item_into_bundle
+   copy_resolved_framework_into_bundle
+   fixup_bundle_item
+   verify_bundle_prerequisites
+   verify_bundle_symlinks
+
+Requires CMake 2.6 or greater because it uses function, break and
+``PARENT_SCOPE``.  Also depends on ``GetPrerequisites.cmake``.
+
+DO NOT USE THESE FUNCTIONS AT CONFIGURE TIME (from ``CMakeLists.txt``)!
+Instead, invoke them from an :command:`install(CODE)` or
+:command:`install(SCRIPT)` rule.
+
+.. code-block:: cmake
+
+  fixup_bundle(<app> <libs> <dirs>)
+
+Fix up ``<app>`` bundle in-place and make it standalone, such that it can be
+drag-n-drop copied to another machine and run on that machine as long
+as all of the system libraries are compatible.
+
+If you pass plugins to ``fixup_bundle`` as the libs parameter, you should
+install them or copy them into the bundle before calling ``fixup_bundle``.
+The ``<libs>`` parameter is a list of libraries that must be fixed up, but
+that cannot be determined by ``otool`` output analysis  (i.e. ``plugins``).
+
+Gather all the keys for all the executables and libraries in a bundle,
+and then, for each key, copy each prerequisite into the bundle.  Then
+fix each one up according to its own list of prerequisites.
+
+Then clear all the keys and call ``verify_app`` on the final bundle to
+ensure that it is truly standalone.
+
+.. versionadded:: 3.6
+  As an optional parameter (``IGNORE_ITEM``) a list of file names can be passed,
+  which are then ignored
+  (e.g. ``IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe"``).
+
+.. code-block:: cmake
+
+  copy_and_fixup_bundle(<src> <dst> <libs> <dirs>)
+
+Makes a copy of the bundle ``<src>`` at location ``<dst>`` and then fixes up
+the new copied bundle in-place at ``<dst>``.
+
+.. code-block:: cmake
+
+  verify_app(<app>)
+
+Verifies that an application ``<app>`` appears valid based on running
+analysis tools on it.  Calls :command:`message(FATAL_ERROR)` if the application
+is not verified.
+
+.. versionadded:: 3.6
+  As an optional parameter (``IGNORE_ITEM``) a list of file names can be passed,
+  which are then ignored
+  (e.g. ``IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe"``)
+
+.. code-block:: cmake
+
+  get_bundle_main_executable(<bundle> <result_var>)
+
+The result will be the full path name of the bundle's main executable
+file or an ``error:`` prefixed string if it could not be determined.
+
+.. code-block:: cmake
+
+  get_dotapp_dir(<exe> <dotapp_dir_var>)
+
+Returns the nearest parent dir whose name ends with ``.app`` given the
+full path to an executable.  If there is no such parent dir, then
+simply return the dir containing the executable.
+
+The returned directory may or may not exist.
+
+.. code-block:: cmake
+
+  get_bundle_and_executable(<app> <bundle_var> <executable_var> <valid_var>)
+
+Takes either a ``.app`` directory name or the name of an executable
+nested inside a ``.app`` directory and returns the path to the ``.app``
+directory in ``<bundle_var>`` and the path to its main executable in
+``<executable_var>``.
+
+.. code-block:: cmake
+
+  get_bundle_all_executables(<bundle> <exes_var>)
+
+Scans ``<bundle>`` bundle recursively for all ``<exes_var>`` executable
+files and accumulates them into a variable.
+
+.. code-block:: cmake
+
+  get_item_key(<item> <key_var>)
+
+Given ``<item>`` file name, generate ``<key_var>`` key that should be unique
+considering the set of libraries that need copying or fixing up to
+make a bundle standalone.  This is essentially the file name including
+extension with ``.`` replaced by ``_``
+
+This key is used as a prefix for CMake variables so that we can
+associate a set of variables with a given item based on its key.
+
+.. code-block:: cmake
+
+  clear_bundle_keys(<keys_var>)
+
+Loop over the ``<keys_var>`` list of keys, clearing all the variables
+associated with each key.  After the loop, clear the list of keys itself.
+
+Caller of ``get_bundle_keys`` should call ``clear_bundle_keys`` when done with
+list of keys.
+
+.. code-block:: cmake
+
+  set_bundle_key_values(<keys_var> <context> <item> <exepath> <dirs>
+                        <copyflag> [<rpaths>])
+
+Add ``<keys_var>`` key to the list (if necessary) for the given item.
+If added, also set all the variables associated with that key.
+
+.. code-block:: cmake
+
+  get_bundle_keys(<app> <libs> <dirs> <keys_var>)
+
+Loop over all the executable and library files within ``<app>`` bundle (and
+given as extra ``<libs>``) and accumulate a list of keys representing
+them.  Set values associated with each key such that we can loop over
+all of them and copy prerequisite libs into the bundle and then do
+appropriate ``install_name_tool`` fixups.
+
+.. versionadded:: 3.6
+  As an optional parameter (``IGNORE_ITEM``) a list of file names can be passed,
+  which are then ignored
+  (e.g. ``IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe"``)
+
+.. code-block:: cmake
+
+  copy_resolved_item_into_bundle(<resolved_item> <resolved_embedded_item>)
+
+Copy a resolved item into the bundle if necessary.
+Copy is not necessary, if the ``<resolved_item>`` is "the same as" the
+``<resolved_embedded_item>``.
+
+.. code-block:: cmake
+
+  copy_resolved_framework_into_bundle(<resolved_item> <resolved_embedded_item>)
+
+Copy a resolved framework into the bundle if necessary.
+Copy is not necessary, if the ``<resolved_item>`` is "the same as" the
+``<resolved_embedded_item>``.
+
+By default, ``BU_COPY_FULL_FRAMEWORK_CONTENTS`` is not set.  If you want
+full frameworks embedded in your bundles, set
+``BU_COPY_FULL_FRAMEWORK_CONTENTS`` to ``ON`` before calling fixup_bundle.  By
+default, ``COPY_RESOLVED_FRAMEWORK_INTO_BUNDLE`` copies the framework
+dylib itself plus the framework ``Resources`` directory.
+
+.. code-block:: cmake
+
+  fixup_bundle_item(<resolved_embedded_item> <exepath> <dirs>)
+
+Get the direct/non-system prerequisites of the ``<resolved_embedded_item>``.
+For each prerequisite, change the way it is referenced to the value of
+the ``_EMBEDDED_ITEM`` keyed variable for that prerequisite.  (Most likely
+changing to an ``@executable_path`` style reference.)
+
+This function requires that the ``<resolved_embedded_item>`` be ``inside``
+the bundle already.  In other words, if you pass plugins to ``fixup_bundle``
+as the libs parameter, you should install them or copy them into the
+bundle before calling ``fixup_bundle``.  The ``libs`` parameter is a list of
+libraries that must be fixed up, but that cannot be determined by
+otool output analysis.  (i.e., ``plugins``)
+
+Also, change the id of the item being fixed up to its own
+``_EMBEDDED_ITEM`` value.
+
+Accumulate changes in a local variable and make *one* call to
+``install_name_tool`` at the end of the function with all the changes at
+once.
+
+If the ``BU_CHMOD_BUNDLE_ITEMS`` variable is set then bundle items will be
+marked writable before ``install_name_tool`` tries to change them.
+
+.. code-block:: cmake
+
+  verify_bundle_prerequisites(<bundle> <result_var> <info_var>)
+
+Verifies that the sum of all prerequisites of all files inside the
+bundle are contained within the bundle or are ``system`` libraries,
+presumed to exist everywhere.
+
+.. versionadded:: 3.6
+  As an optional parameter (``IGNORE_ITEM``) a list of file names can be passed,
+  which are then ignored
+  (e.g. ``IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe"``)
+
+.. code-block:: cmake
+
+  verify_bundle_symlinks(<bundle> <result_var> <info_var>)
+
+Verifies that any symlinks found in the ``<bundle>`` bundle point to other files
+that are already also in the bundle...  Anything that points to an
+external file causes this function to fail the verification.
+#]=======================================================================]
+
+function(_warn_cmp0080)
+  cmake_policy(GET_WARNING CMP0080 _cmp0080_warning)
+  message(AUTHOR_WARNING "${_cmp0080_warning}\n")
+endfunction()
+
+# Do not include this module at configure time!
+if(DEFINED CMAKE_GENERATOR)
+  cmake_policy(GET CMP0080 _BundleUtilities_CMP0080)
+  if(_BundleUtilities_CMP0080 STREQUAL "NEW")
+    message(FATAL_ERROR "BundleUtilities cannot be included at configure time!")
+  elseif(NOT _BundleUtilities_CMP0080 STREQUAL "OLD" AND NOT _CMP0080_SUPPRESS_WARNING)
+    _warn_cmp0080()
+  endif()
+endif()
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+# The functions defined in this file depend on the get_prerequisites function
+# (and possibly others) found in:
+#
+include("${CMAKE_CURRENT_LIST_DIR}/GetPrerequisites.cmake")
+
+
+function(get_bundle_main_executable bundle result_var)
+  set(result "error: '${bundle}/Contents/Info.plist' file does not exist")
+
+  if(EXISTS "${bundle}/Contents/Info.plist")
+    set(result "error: no CFBundleExecutable in '${bundle}/Contents/Info.plist' file")
+    set(line_is_main_executable 0)
+    set(bundle_executable "")
+
+    # Read Info.plist as a list of lines:
+    #
+    set(eol_char "E")
+    file(READ "${bundle}/Contents/Info.plist" info_plist)
+    string(REPLACE ";" "\\;" info_plist "${info_plist}")
+    string(REPLACE "\n" "${eol_char};" info_plist "${info_plist}")
+    string(REPLACE "\r" "${eol_char};" info_plist "${info_plist}")
+
+    # Scan the lines for "<key>CFBundleExecutable</key>" - the line after that
+    # is the name of the main executable.
+    #
+    foreach(line ${info_plist})
+      if(line_is_main_executable)
+        string(REGEX REPLACE "^.*<string>(.*)</string>.*$" "\\1" bundle_executable "${line}")
+        break()
+      endif()
+
+      if(line MATCHES "<key>CFBundleExecutable</key>")
+        set(line_is_main_executable 1)
+      endif()
+    endforeach()
+
+    if(NOT bundle_executable STREQUAL "")
+      if(EXISTS "${bundle}/Contents/MacOS/${bundle_executable}")
+        set(result "${bundle}/Contents/MacOS/${bundle_executable}")
+      else()
+
+        # Ultimate goal:
+        # If not in "Contents/MacOS" then scan the bundle for matching files. If
+        # there is only one executable file that matches, then use it, otherwise
+        # it's an error...
+        #
+        #file(GLOB_RECURSE file_list "${bundle}/${bundle_executable}")
+
+        # But for now, pragmatically, it's an error. Expect the main executable
+        # for the bundle to be in Contents/MacOS, it's an error if it's not:
+        #
+        set(result "error: '${bundle}/Contents/MacOS/${bundle_executable}' does not exist")
+      endif()
+    endif()
+  else()
+    #
+    # More inclusive technique... (This one would work on Windows and Linux
+    # too, if a developer followed the typical Mac bundle naming convention...)
+    #
+    # If there is no Info.plist file, try to find an executable with the same
+    # base name as the .app directory:
+    #
+  endif()
+
+  set(${result_var} "${result}" PARENT_SCOPE)
+endfunction()
+
+
+function(get_dotapp_dir exe dotapp_dir_var)
+  set(s "${exe}")
+
+  if(s MATCHES "/.*\\.app/")
+    # If there is a ".app" parent directory,
+    # ascend until we hit it:
+    #   (typical of a Mac bundle executable)
+    #
+    set(done 0)
+    while(NOT ${done})
+      get_filename_component(snamewe "${s}" NAME_WE)
+      get_filename_component(sname "${s}" NAME)
+      get_filename_component(sdir "${s}" PATH)
+      set(s "${sdir}")
+      if(sname MATCHES "\\.app$")
+        set(done 1)
+        set(dotapp_dir "${sdir}/${sname}")
+      endif()
+    endwhile()
+  else()
+    # Otherwise use a directory containing the exe
+    #   (typical of a non-bundle executable on Mac, Windows or Linux)
+    #
+    is_file_executable("${s}" is_executable)
+    if(is_executable)
+      get_filename_component(sdir "${s}" PATH)
+      set(dotapp_dir "${sdir}")
+    else()
+      set(dotapp_dir "${s}")
+    endif()
+  endif()
+
+
+  set(${dotapp_dir_var} "${dotapp_dir}" PARENT_SCOPE)
+endfunction()
+
+
+function(get_bundle_and_executable app bundle_var executable_var valid_var)
+  set(valid 0)
+
+  if(EXISTS "${app}")
+    # Is it a directory ending in .app?
+    if(IS_DIRECTORY "${app}")
+      if(app MATCHES "\\.app$")
+        get_bundle_main_executable("${app}" executable)
+        if(EXISTS "${app}" AND EXISTS "${executable}")
+          set(${bundle_var} "${app}" PARENT_SCOPE)
+          set(${executable_var} "${executable}" PARENT_SCOPE)
+          set(valid 1)
+          #message(STATUS "info: handled .app directory case...")
+        else()
+          message(STATUS "warning: *NOT* handled - .app directory case...")
+        endif()
+      else()
+        message(STATUS "warning: *NOT* handled - directory but not .app case...")
+      endif()
+    else()
+      # Is it an executable file?
+      is_file_executable("${app}" is_executable)
+      if(is_executable)
+        get_dotapp_dir("${app}" dotapp_dir)
+        if(EXISTS "${dotapp_dir}")
+          set(${bundle_var} "${dotapp_dir}" PARENT_SCOPE)
+          set(${executable_var} "${app}" PARENT_SCOPE)
+          set(valid 1)
+          #message(STATUS "info: handled executable file in .app dir case...")
+        else()
+          get_filename_component(app_dir "${app}" PATH)
+          set(${bundle_var} "${app_dir}" PARENT_SCOPE)
+          set(${executable_var} "${app}" PARENT_SCOPE)
+          set(valid 1)
+          #message(STATUS "info: handled executable file in any dir case...")
+        endif()
+      else()
+        message(STATUS "warning: *NOT* handled - not .app dir, not executable file...")
+      endif()
+    endif()
+  else()
+    message(STATUS "warning: *NOT* handled - directory/file does not exist...")
+  endif()
+
+  if(NOT valid)
+    set(${bundle_var} "error: not a bundle" PARENT_SCOPE)
+    set(${executable_var} "error: not a bundle" PARENT_SCOPE)
+  endif()
+
+  set(${valid_var} ${valid} PARENT_SCOPE)
+endfunction()
+
+
+function(get_bundle_all_executables bundle exes_var)
+  set(exes "")
+
+  if(UNIX)
+    find_program(find_cmd "find")
+    mark_as_advanced(find_cmd)
+  endif()
+
+  # find command is much quicker than checking every file one by one on Unix
+  # which can take long time for large bundles, and since anyway we expect
+  # executable to have execute flag set we can narrow the list much quicker.
+  if(find_cmd)
+    execute_process(COMMAND "${find_cmd}" "${bundle}"
+      -type f \( -perm -0100 -o -perm -0010 -o -perm -0001 \)
+      OUTPUT_VARIABLE file_list
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+      )
+    string(REPLACE "\n" ";" file_list "${file_list}")
+  else()
+    file(GLOB_RECURSE file_list "${bundle}/*")
+  endif()
+
+  foreach(f ${file_list})
+    is_file_executable("${f}" is_executable)
+    if(is_executable)
+      set(exes ${exes} "${f}")
+    endif()
+  endforeach()
+
+  set(${exes_var} "${exes}" PARENT_SCOPE)
+endfunction()
+
+
+function(get_item_rpaths item rpaths_var)
+  if(APPLE)
+    find_program(otool_cmd "otool")
+    mark_as_advanced(otool_cmd)
+  endif()
+
+  if(otool_cmd)
+    execute_process(
+      COMMAND "${otool_cmd}" -l "${item}"
+      OUTPUT_VARIABLE load_cmds_ov
+      RESULT_VARIABLE otool_rv
+      ERROR_VARIABLE otool_ev
+      )
+    if(NOT otool_rv STREQUAL "0")
+      message(FATAL_ERROR "otool -l failed: ${otool_rv}\n${otool_ev}")
+    endif()
+    string(REGEX REPLACE "[^\n]+cmd LC_RPATH\n[^\n]+\n[^\n]+path ([^\n]+) \\(offset[^\n]+\n" "rpath \\1\n" load_cmds_ov "${load_cmds_ov}")
+    string(REGEX MATCHALL "rpath [^\n]+" load_cmds_ov "${load_cmds_ov}")
+    string(REGEX REPLACE "rpath " "" load_cmds_ov "${load_cmds_ov}")
+    if(load_cmds_ov)
+      foreach(rpath ${load_cmds_ov})
+        gp_append_unique(${rpaths_var} "${rpath}")
+      endforeach()
+    endif()
+  endif()
+
+  if(UNIX AND NOT APPLE)
+    file(READ_ELF ${item} RPATH rpath_var RUNPATH runpath_var CAPTURE_ERROR error_var)
+    get_filename_component(item_dir ${item} DIRECTORY)
+    foreach(rpath ${rpath_var} ${runpath_var})
+      # Substitute $ORIGIN with the exepath and add to the found rpaths
+      string(REPLACE "$ORIGIN" "${item_dir}" rpath "${rpath}")
+      gp_append_unique(${rpaths_var} "${rpath}")
+    endforeach()
+  endif()
+
+  set(${rpaths_var} ${${rpaths_var}} PARENT_SCOPE)
+endfunction()
+
+
+function(get_item_key item key_var)
+  get_filename_component(item_name "${item}" NAME)
+  if(WIN32)
+    string(TOLOWER "${item_name}" item_name)
+  endif()
+  string(REPLACE "." "_" ${key_var} "${item_name}")
+  set(${key_var} ${${key_var}} PARENT_SCOPE)
+endfunction()
+
+
+function(clear_bundle_keys keys_var)
+  foreach(key ${${keys_var}})
+    set(${key}_ITEM PARENT_SCOPE)
+    set(${key}_RESOLVED_ITEM PARENT_SCOPE)
+    set(${key}_DEFAULT_EMBEDDED_PATH PARENT_SCOPE)
+    set(${key}_EMBEDDED_ITEM PARENT_SCOPE)
+    set(${key}_RESOLVED_EMBEDDED_ITEM PARENT_SCOPE)
+    set(${key}_COPYFLAG PARENT_SCOPE)
+    set(${key}_RPATHS PARENT_SCOPE)
+  endforeach()
+  set(${keys_var} PARENT_SCOPE)
+endfunction()
+
+
+function(set_bundle_key_values keys_var context item exepath dirs copyflag)
+  if(ARGC GREATER 6)
+    set(rpaths "${ARGV6}")
+  else()
+    set(rpaths "")
+  endif()
+  get_filename_component(item_name "${item}" NAME)
+
+  get_item_key("${item}" key)
+
+  list(LENGTH ${keys_var} length_before)
+  gp_append_unique(${keys_var} "${key}")
+  list(LENGTH ${keys_var} length_after)
+
+  if(NOT length_before EQUAL length_after)
+    gp_resolve_item("${context}" "${item}" "${exepath}" "${dirs}" resolved_item "${rpaths}")
+
+    gp_item_default_embedded_path("${item}" default_embedded_path)
+
+    get_item_rpaths("${resolved_item}" item_rpaths)
+
+    if((NOT item MATCHES "\\.dylib$") AND (item MATCHES "[^/]+\\.framework/"))
+      # For frameworks, construct the name under the embedded path from the
+      # opening "${item_name}.framework/" to the closing "/${item_name}":
+      #
+      string(REGEX REPLACE "^.*(${item_name}.framework/.*/?${item_name}).*$" "${default_embedded_path}/\\1" embedded_item "${item}")
+    else()
+      # For other items, just use the same name as the original, but in the
+      # embedded path:
+      #
+      set(embedded_item "${default_embedded_path}/${item_name}")
+    endif()
+
+    # Replace @executable_path and resolve ".." references:
+    #
+    string(REPLACE "@executable_path" "${exepath}" resolved_embedded_item "${embedded_item}")
+    get_filename_component(resolved_embedded_item "${resolved_embedded_item}" ABSOLUTE)
+
+    # *But* -- if we are not copying, then force resolved_embedded_item to be
+    # the same as resolved_item. In the case of multiple executables in the
+    # original bundle, using the default_embedded_path results in looking for
+    # the resolved executable next to the main bundle executable. This is here
+    # so that exes in the other sibling directories (like "bin") get fixed up
+    # properly...
+    #
+    if(NOT copyflag)
+      set(resolved_embedded_item "${resolved_item}")
+    endif()
+
+    set(${keys_var} ${${keys_var}} PARENT_SCOPE)
+    set(${key}_ITEM "${item}" PARENT_SCOPE)
+    set(${key}_RESOLVED_ITEM "${resolved_item}" PARENT_SCOPE)
+    set(${key}_DEFAULT_EMBEDDED_PATH "${default_embedded_path}" PARENT_SCOPE)
+    set(${key}_EMBEDDED_ITEM "${embedded_item}" PARENT_SCOPE)
+    set(${key}_RESOLVED_EMBEDDED_ITEM "${resolved_embedded_item}" PARENT_SCOPE)
+    set(${key}_COPYFLAG "${copyflag}" PARENT_SCOPE)
+    set(${key}_RPATHS "${item_rpaths}" PARENT_SCOPE)
+    set(${key}_RDEP_RPATHS "${rpaths}" PARENT_SCOPE)
+  else()
+    #message("warning: item key '${key}' already in the list, subsequent references assumed identical to first")
+  endif()
+endfunction()
+
+
+function(get_bundle_keys app libs dirs keys_var)
+  set(${keys_var} PARENT_SCOPE)
+
+  set(options)
+  set(oneValueArgs)
+  set(multiValueArgs IGNORE_ITEM)
+  cmake_parse_arguments(CFG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
+
+  get_bundle_and_executable("${app}" bundle executable valid)
+  if(valid)
+    # Always use the exepath of the main bundle executable for @executable_path
+    # replacements:
+    #
+    get_filename_component(exepath "${executable}" PATH)
+
+    # But do fixups on all executables in the bundle:
+    #
+    get_bundle_all_executables("${bundle}" exes)
+
+    # Set keys for main executable first:
+    #
+    set_bundle_key_values(${keys_var} "${executable}" "${executable}" "${exepath}" "${dirs}" 0)
+
+    # Get rpaths specified by main executable:
+    #
+    get_item_key("${executable}" executable_key)
+    set(main_rpaths "${${executable_key}_RPATHS}")
+
+    # For each extra lib, accumulate a key as well and then also accumulate
+    # any of its prerequisites. (Extra libs are typically dynamically loaded
+    # plugins: libraries that are prerequisites for full runtime functionality
+    # but that do not show up in otool -L output...)
+    #
+    foreach(lib ${libs})
+      set_bundle_key_values(${keys_var} "${lib}" "${lib}" "${exepath}" "${dirs}" 0 "${main_rpaths}")
+
+      set(prereqs "")
+      get_filename_component(prereq_filename ${lib} NAME)
+
+      if(NOT prereq_filename IN_LIST CFG_IGNORE_ITEM)
+        get_prerequisites("${lib}" prereqs 1 1 "${exepath}" "${dirs}" "${main_rpaths}")
+        foreach(pr ${prereqs})
+          set_bundle_key_values(${keys_var} "${lib}" "${pr}" "${exepath}" "${dirs}" 1 "${main_rpaths}")
+        endforeach()
+      else()
+        message(STATUS "Ignoring file: ${prereq_filename}")
+      endif()
+    endforeach()
+
+    # For each executable found in the bundle, accumulate keys as we go.
+    # The list of keys should be complete when all prerequisites of all
+    # binaries in the bundle have been analyzed.
+    #
+    foreach(exe ${exes})
+      # Main executable is scanned first above:
+      #
+      if(NOT exe STREQUAL executable)
+        # Add the exe itself to the keys:
+        #
+        set_bundle_key_values(${keys_var} "${exe}" "${exe}" "${exepath}" "${dirs}" 0 "${main_rpaths}")
+
+        # Get rpaths specified by executable:
+        #
+        get_item_key("${exe}" exe_key)
+        set(exe_rpaths "${main_rpaths}" "${${exe_key}_RPATHS}")
+      else()
+        set(exe_rpaths "${main_rpaths}")
+      endif()
+
+      # Add each prerequisite to the keys:
+      #
+      set(prereqs "")
+      get_filename_component(prereq_filename ${exe} NAME)
+
+      if(NOT prereq_filename IN_LIST CFG_IGNORE_ITEM)
+        get_prerequisites("${exe}" prereqs 1 1 "${exepath}" "${dirs}" "${exe_rpaths}")
+        foreach(pr ${prereqs})
+          set_bundle_key_values(${keys_var} "${exe}" "${pr}" "${exepath}" "${dirs}" 1 "${exe_rpaths}")
+        endforeach()
+      else()
+        message(STATUS "Ignoring file: ${prereq_filename}")
+      endif()
+    endforeach()
+
+    # preserve library symlink structure
+    foreach(key ${${keys_var}})
+      if("${${key}_COPYFLAG}" STREQUAL "1")
+        if(IS_SYMLINK "${${key}_RESOLVED_ITEM}")
+          get_filename_component(target "${${key}_RESOLVED_ITEM}" REALPATH)
+          set_bundle_key_values(${keys_var} "${exe}" "${target}" "${exepath}" "${dirs}" 1 "${exe_rpaths}")
+          get_item_key("${target}" targetkey)
+
+          if(WIN32)
+            # ignore case on Windows
+            string(TOLOWER "${${key}_RESOLVED_ITEM}" resolved_item_compare)
+            string(TOLOWER "${${targetkey}_RESOLVED_EMBEDDED_ITEM}" resolved_embedded_item_compare)
+          else()
+            set(resolved_item_compare "${${key}_RESOLVED_ITEM}")
+            set(resolved_embedded_item_compare "${${targetkey}_RESOLVED_EMBEDDED_ITEM}")
+          endif()
+          get_filename_component(resolved_item_compare "${resolved_item_compare}" NAME)
+          get_filename_component(resolved_embedded_item_compare "${resolved_embedded_item_compare}" NAME)
+
+          if(NOT resolved_item_compare STREQUAL resolved_embedded_item_compare)
+            set(${key}_COPYFLAG "2")
+            set(${key}_RESOLVED_ITEM "${${targetkey}_RESOLVED_EMBEDDED_ITEM}")
+          endif()
+
+        endif()
+      endif()
+    endforeach()
+    # Propagate values to caller's scope:
+    #
+    set(${keys_var} ${${keys_var}} PARENT_SCOPE)
+    foreach(key ${${keys_var}})
+      set(${key}_ITEM "${${key}_ITEM}" PARENT_SCOPE)
+      set(${key}_RESOLVED_ITEM "${${key}_RESOLVED_ITEM}" PARENT_SCOPE)
+      set(${key}_DEFAULT_EMBEDDED_PATH "${${key}_DEFAULT_EMBEDDED_PATH}" PARENT_SCOPE)
+      set(${key}_EMBEDDED_ITEM "${${key}_EMBEDDED_ITEM}" PARENT_SCOPE)
+      set(${key}_RESOLVED_EMBEDDED_ITEM "${${key}_RESOLVED_EMBEDDED_ITEM}" PARENT_SCOPE)
+      set(${key}_COPYFLAG "${${key}_COPYFLAG}" PARENT_SCOPE)
+      set(${key}_RPATHS "${${key}_RPATHS}" PARENT_SCOPE)
+      set(${key}_RDEP_RPATHS "${${key}_RDEP_RPATHS}" PARENT_SCOPE)
+    endforeach()
+  endif()
+endfunction()
+
+function(link_resolved_item_into_bundle resolved_item resolved_embedded_item)
+  if(WIN32)
+    # ignore case on Windows
+    string(TOLOWER "${resolved_item}" resolved_item_compare)
+    string(TOLOWER "${resolved_embedded_item}" resolved_embedded_item_compare)
+  else()
+    set(resolved_item_compare "${resolved_item}")
+    set(resolved_embedded_item_compare "${resolved_embedded_item}")
+  endif()
+
+  if(resolved_item_compare STREQUAL resolved_embedded_item_compare)
+    message(STATUS "warning: resolved_item == resolved_embedded_item - not linking...")
+  else()
+    get_filename_component(target_dir "${resolved_embedded_item}" DIRECTORY)
+    file(RELATIVE_PATH symlink_target "${target_dir}" "${resolved_item}")
+    if (NOT EXISTS "${target_dir}")
+      file(MAKE_DIRECTORY "${target_dir}")
+    endif()
+    execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${symlink_target}" "${resolved_embedded_item}")
+  endif()
+endfunction()
+
+function(copy_resolved_item_into_bundle resolved_item resolved_embedded_item)
+  if(WIN32)
+    # ignore case on Windows
+    string(TOLOWER "${resolved_item}" resolved_item_compare)
+    string(TOLOWER "${resolved_embedded_item}" resolved_embedded_item_compare)
+  else()
+    set(resolved_item_compare "${resolved_item}")
+    set(resolved_embedded_item_compare "${resolved_embedded_item}")
+  endif()
+
+  if(resolved_item_compare STREQUAL resolved_embedded_item_compare)
+    message(STATUS "warning: resolved_item == resolved_embedded_item - not copying...")
+  else()
+    #message(STATUS "copying COMMAND ${CMAKE_COMMAND} -E copy ${resolved_item} ${resolved_embedded_item}")
+    execute_process(COMMAND ${CMAKE_COMMAND} -E copy "${resolved_item}" "${resolved_embedded_item}")
+    if(UNIX AND NOT APPLE)
+      file(RPATH_REMOVE FILE "${resolved_embedded_item}")
+    endif()
+  endif()
+
+endfunction()
+
+
+function(copy_resolved_framework_into_bundle resolved_item resolved_embedded_item)
+  if(WIN32)
+    # ignore case on Windows
+    string(TOLOWER "${resolved_item}" resolved_item_compare)
+    string(TOLOWER "${resolved_embedded_item}" resolved_embedded_item_compare)
+  else()
+    set(resolved_item_compare "${resolved_item}")
+    set(resolved_embedded_item_compare "${resolved_embedded_item}")
+  endif()
+
+  if(resolved_item_compare STREQUAL resolved_embedded_item_compare)
+    message(STATUS "warning: resolved_item == resolved_embedded_item - not copying...")
+  else()
+    if(BU_COPY_FULL_FRAMEWORK_CONTENTS)
+      # Full Framework (everything):
+      get_filename_component(resolved_dir "${resolved_item}" PATH)
+      get_filename_component(resolved_dir "${resolved_dir}/../.." ABSOLUTE)
+      get_filename_component(resolved_embedded_dir "${resolved_embedded_item}" PATH)
+      get_filename_component(resolved_embedded_dir "${resolved_embedded_dir}/../.." ABSOLUTE)
+      #message(STATUS "copying COMMAND ${CMAKE_COMMAND} -E copy_directory '${resolved_dir}' '${resolved_embedded_dir}'")
+      execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${resolved_dir}" "${resolved_embedded_dir}")
+    else()
+      # Framework lib itself:
+      #message(STATUS "copying COMMAND ${CMAKE_COMMAND} -E copy ${resolved_item} ${resolved_embedded_item}")
+      execute_process(COMMAND ${CMAKE_COMMAND} -E copy "${resolved_item}" "${resolved_embedded_item}")
+
+      # Plus Resources, if they exist:
+      string(REGEX REPLACE "^(.*)/[^/]+$" "\\1/Resources" resolved_resources "${resolved_item}")
+      string(REGEX REPLACE "^(.*)/[^/]+$" "\\1/Resources" resolved_embedded_resources "${resolved_embedded_item}")
+      if(EXISTS "${resolved_resources}")
+        #message(STATUS "copying COMMAND ${CMAKE_COMMAND} -E copy_directory '${resolved_resources}' '${resolved_embedded_resources}'")
+        execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${resolved_resources}" "${resolved_embedded_resources}")
+      endif()
+
+      # Some frameworks e.g. Qt put Info.plist in wrong place, so when it is
+      # missing in resources, copy it from other well known incorrect locations:
+      if(NOT EXISTS "${resolved_resources}/Info.plist")
+        # Check for Contents/Info.plist in framework root (older Qt SDK):
+        string(REGEX REPLACE "^(.*)/[^/]+/[^/]+/[^/]+$" "\\1/Contents/Info.plist" resolved_info_plist "${resolved_item}")
+        string(REGEX REPLACE "^(.*)/[^/]+$" "\\1/Resources/Info.plist" resolved_embedded_info_plist "${resolved_embedded_item}")
+        if(EXISTS "${resolved_info_plist}")
+          #message(STATUS "copying COMMAND ${CMAKE_COMMAND} -E copy_directory '${resolved_info_plist}' '${resolved_embedded_info_plist}'")
+          execute_process(COMMAND ${CMAKE_COMMAND} -E copy "${resolved_info_plist}" "${resolved_embedded_info_plist}")
+        endif()
+      endif()
+
+      # Check if framework is versioned and fix it layout
+      string(REGEX REPLACE "^.*/([^/]+)/[^/]+$" "\\1" resolved_embedded_version "${resolved_embedded_item}")
+      string(REGEX REPLACE "^(.*)/[^/]+/[^/]+$" "\\1" resolved_embedded_versions "${resolved_embedded_item}")
+      string(REGEX REPLACE "^.*/([^/]+)/[^/]+/[^/]+$" "\\1" resolved_embedded_versions_basename "${resolved_embedded_item}")
+      if(resolved_embedded_versions_basename STREQUAL "Versions")
+        # Ensure Current symlink points to the framework version
+        if(NOT EXISTS "${resolved_embedded_versions}/Current")
+          execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${resolved_embedded_version}" "${resolved_embedded_versions}/Current")
+        endif()
+        # Restore symlinks in framework root pointing to current framework
+        # binary and resources:
+        string(REGEX REPLACE "^(.*)/[^/]+/[^/]+/[^/]+$" "\\1" resolved_embedded_root "${resolved_embedded_item}")
+        string(REGEX REPLACE "^.*/([^/]+)$" "\\1" resolved_embedded_item_basename "${resolved_embedded_item}")
+        if(NOT EXISTS "${resolved_embedded_root}/${resolved_embedded_item_basename}")
+          execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "Versions/Current/${resolved_embedded_item_basename}" "${resolved_embedded_root}/${resolved_embedded_item_basename}")
+        endif()
+        if(NOT EXISTS "${resolved_embedded_root}/Resources")
+          execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "Versions/Current/Resources" "${resolved_embedded_root}/Resources")
+        endif()
+      endif()
+    endif()
+    if(UNIX AND NOT APPLE)
+      file(RPATH_REMOVE FILE "${resolved_embedded_item}")
+    endif()
+  endif()
+
+endfunction()
+
+
+function(fixup_bundle_item resolved_embedded_item exepath dirs)
+  # This item's key is "ikey":
+  #
+  get_item_key("${resolved_embedded_item}" ikey)
+
+  # Ensure the item is "inside the .app bundle" -- it should not be fixed up if
+  # it is not in the .app bundle... Otherwise, we'll modify files in the build
+  # tree, or in other varied locations around the file system, with our call to
+  # install_name_tool. Make sure that doesn't happen here:
+  #
+  get_dotapp_dir("${exepath}" exe_dotapp_dir)
+  string(LENGTH "${exe_dotapp_dir}/" exe_dotapp_dir_length)
+  string(LENGTH "${resolved_embedded_item}" resolved_embedded_item_length)
+  set(path_too_short 0)
+  set(is_embedded 0)
+  if(resolved_embedded_item_length LESS exe_dotapp_dir_length)
+    set(path_too_short 1)
+  endif()
+  if(NOT path_too_short)
+    string(SUBSTRING "${resolved_embedded_item}" 0 ${exe_dotapp_dir_length} item_substring)
+    if("${exe_dotapp_dir}/" STREQUAL item_substring)
+      set(is_embedded 1)
+    endif()
+  endif()
+  if(NOT is_embedded)
+    message("  exe_dotapp_dir/='${exe_dotapp_dir}/'")
+    message("  item_substring='${item_substring}'")
+    message("  resolved_embedded_item='${resolved_embedded_item}'")
+    message("")
+    message("Install or copy the item into the bundle before calling fixup_bundle.")
+    message("Or maybe there's a typo or incorrect path in one of the args to fixup_bundle?")
+    message("")
+    message(FATAL_ERROR "cannot fixup an item that is not in the bundle...")
+  endif()
+
+  set(rpaths "${${ikey}_RPATHS}" "${${ikey}_RDEP_RPATHS}")
+
+  set(prereqs "")
+  get_prerequisites("${resolved_embedded_item}" prereqs 1 0 "${exepath}" "${dirs}" "${rpaths}")
+
+  set(changes "")
+
+  foreach(pr ${prereqs})
+    # Each referenced item's key is "rkey" in the loop:
+    #
+    get_item_key("${pr}" rkey)
+
+    if(NOT "${${rkey}_EMBEDDED_ITEM}" STREQUAL "")
+      set(changes ${changes} "-change" "${pr}" "${${rkey}_EMBEDDED_ITEM}")
+    else()
+      message("warning: unexpected reference to '${pr}'")
+    endif()
+  endforeach()
+
+  if(BU_CHMOD_BUNDLE_ITEMS)
+    execute_process(COMMAND chmod u+w "${resolved_embedded_item}")
+  endif()
+
+  # CMAKE_INSTALL_NAME_TOOL may not be set if executed in script mode
+  # Duplicated from CMakeFindBinUtils.cmake
+  find_program(CMAKE_INSTALL_NAME_TOOL NAMES install_name_tool HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
+
+  # Only if install_name_tool supports -delete_rpath:
+  #
+  execute_process(COMMAND ${CMAKE_INSTALL_NAME_TOOL}
+    OUTPUT_VARIABLE install_name_tool_usage
+    ERROR_VARIABLE  install_name_tool_usage
+    )
+  if(install_name_tool_usage MATCHES ".*-delete_rpath.*")
+    foreach(rpath ${${ikey}_RPATHS})
+      set(changes ${changes} -delete_rpath "${rpath}")
+    endforeach()
+  endif()
+
+  if(${ikey}_EMBEDDED_ITEM)
+    set(changes ${changes} -id "${${ikey}_EMBEDDED_ITEM}")
+  endif()
+
+  # Change this item's id and all of its references in one call
+  # to install_name_tool:
+  #
+  if(changes)
+    # Check for a script by extension (.bat,.sh,...) or if the file starts with "#!" (shebang)
+    file(READ ${resolved_embedded_item} file_contents LIMIT 5)
+    if(NOT "${resolved_embedded_item}" MATCHES "\\.(bat|c?sh|bash|ksh|cmd)$" AND
+       NOT file_contents MATCHES "^#!")
+      set(cmd ${CMAKE_INSTALL_NAME_TOOL} ${changes} "${resolved_embedded_item}")
+      execute_process(COMMAND ${cmd} RESULT_VARIABLE install_name_tool_result)
+      if(NOT install_name_tool_result EQUAL 0)
+        string(REPLACE ";" "' '" msg "'${cmd}'")
+        message(FATAL_ERROR "Command failed:\n ${msg}")
+      endif()
+    endif()
+  endif()
+endfunction()
+
+
+function(fixup_bundle app libs dirs)
+  message(STATUS "fixup_bundle")
+  message(STATUS "  app='${app}'")
+  message(STATUS "  libs='${libs}'")
+  message(STATUS "  dirs='${dirs}'")
+
+  set(options)
+  set(oneValueArgs)
+  set(multiValueArgs IGNORE_ITEM)
+  cmake_parse_arguments(CFG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
+
+  message(STATUS "  ignoreItems='${CFG_IGNORE_ITEM}'")
+
+  get_bundle_and_executable("${app}" bundle executable valid)
+  if(valid)
+    get_filename_component(exepath "${executable}" PATH)
+
+    message(STATUS "fixup_bundle: preparing...")
+    get_bundle_keys("${app}" "${libs}" "${dirs}" keys IGNORE_ITEM "${CFG_IGNORE_ITEM}")
+
+    message(STATUS "fixup_bundle: copying...")
+    list(LENGTH keys n)
+    math(EXPR n ${n}*2)
+
+    set(i 0)
+    foreach(key ${keys})
+      math(EXPR i ${i}+1)
+      if("${${key}_COPYFLAG}" STREQUAL "2")
+        message(STATUS "${i}/${n}: linking '${${key}_RESOLVED_ITEM}' -> '${${key}_RESOLVED_EMBEDDED_ITEM}'")
+      elseif(${${key}_COPYFLAG})
+        message(STATUS "${i}/${n}: copying '${${key}_RESOLVED_ITEM}'")
+      else()
+        message(STATUS "${i}/${n}: *NOT* copying '${${key}_RESOLVED_ITEM}'")
+      endif()
+
+      set(show_status 0)
+      if(show_status)
+        message(STATUS "key='${key}'")
+        message(STATUS "item='${${key}_ITEM}'")
+        message(STATUS "resolved_item='${${key}_RESOLVED_ITEM}'")
+        message(STATUS "default_embedded_path='${${key}_DEFAULT_EMBEDDED_PATH}'")
+        message(STATUS "embedded_item='${${key}_EMBEDDED_ITEM}'")
+        message(STATUS "resolved_embedded_item='${${key}_RESOLVED_EMBEDDED_ITEM}'")
+        message(STATUS "copyflag='${${key}_COPYFLAG}'")
+        message(STATUS "")
+      endif()
+
+      if("${${key}_COPYFLAG}" STREQUAL "2")
+        link_resolved_item_into_bundle("${${key}_RESOLVED_ITEM}"
+          "${${key}_RESOLVED_EMBEDDED_ITEM}")
+      elseif(${${key}_COPYFLAG})
+        set(item "${${key}_ITEM}")
+        if(item MATCHES "[^/]+\\.framework/")
+          copy_resolved_framework_into_bundle("${${key}_RESOLVED_ITEM}"
+            "${${key}_RESOLVED_EMBEDDED_ITEM}")
+        else()
+          copy_resolved_item_into_bundle("${${key}_RESOLVED_ITEM}"
+            "${${key}_RESOLVED_EMBEDDED_ITEM}")
+        endif()
+      endif()
+    endforeach()
+
+    message(STATUS "fixup_bundle: fixing...")
+    foreach(key ${keys})
+      math(EXPR i ${i}+1)
+      if(APPLE)
+        message(STATUS "${i}/${n}: fixing up '${${key}_RESOLVED_EMBEDDED_ITEM}'")
+        if(NOT "${${key}_COPYFLAG}" STREQUAL "2")
+          fixup_bundle_item("${${key}_RESOLVED_EMBEDDED_ITEM}" "${exepath}" "${dirs}")
+        endif()
+      else()
+        message(STATUS "${i}/${n}: fix-up not required on this platform '${${key}_RESOLVED_EMBEDDED_ITEM}'")
+      endif()
+    endforeach()
+
+    message(STATUS "fixup_bundle: cleaning up...")
+    clear_bundle_keys(keys)
+
+    message(STATUS "fixup_bundle: verifying...")
+    verify_app("${app}" IGNORE_ITEM "${CFG_IGNORE_ITEM}")
+  else()
+    message(SEND_ERROR "error: fixup_bundle: not a valid bundle")
+  endif()
+
+  message(STATUS "fixup_bundle: done")
+endfunction()
+
+
+function(copy_and_fixup_bundle src dst libs dirs)
+  execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${src}" "${dst}")
+  fixup_bundle("${dst}" "${libs}" "${dirs}")
+endfunction()
+
+
+function(verify_bundle_prerequisites bundle result_var info_var)
+  set(result 1)
+  set(info "")
+  set(count 0)
+
+  set(options)
+  set(oneValueArgs)
+  set(multiValueArgs IGNORE_ITEM)
+  cmake_parse_arguments(CFG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
+
+  get_bundle_main_executable("${bundle}" main_bundle_exe)
+
+  get_bundle_all_executables("${bundle}" file_list)
+  foreach(f ${file_list})
+      get_filename_component(exepath "${f}" PATH)
+      math(EXPR count "${count} + 1")
+
+      message(STATUS "executable file ${count}: ${f}")
+
+      set(prereqs "")
+      get_filename_component(prereq_filename ${f} NAME)
+
+      if(NOT prereq_filename IN_LIST CFG_IGNORE_ITEM)
+        get_item_rpaths(${f} _main_exe_rpaths)
+        get_prerequisites("${f}" prereqs 1 1 "${exepath}" "${_main_exe_rpaths}")
+
+        # On the Mac,
+        # "embedded" and "system" prerequisites are fine... anything else means
+        # the bundle's prerequisites are not verified (i.e., the bundle is not
+        # really "standalone")
+        #
+        # On Windows (and others? Linux/Unix/...?)
+        # "local" and "system" prereqs are fine...
+        #
+
+        set(external_prereqs "")
+
+        foreach(p ${prereqs})
+          set(p_type "")
+          gp_file_type("${f}" "${p}" p_type)
+
+          if(APPLE)
+            if(NOT p_type STREQUAL "embedded" AND NOT p_type STREQUAL "system")
+              set(external_prereqs ${external_prereqs} "${p}")
+            endif()
+          else()
+            if(NOT p_type STREQUAL "local" AND NOT p_type STREQUAL "system")
+              set(external_prereqs ${external_prereqs} "${p}")
+            endif()
+          endif()
+        endforeach()
+
+        if(external_prereqs)
+          # Found non-system/somehow-unacceptable prerequisites:
+          set(result 0)
+          set(info ${info} "external prerequisites found:\nf='${f}'\nexternal_prereqs='${external_prereqs}'\n")
+        endif()
+      else()
+        message(STATUS "Ignoring file: ${prereq_filename}")
+      endif()
+  endforeach()
+
+  if(result)
+    set(info "Verified ${count} executable files in '${bundle}'")
+  endif()
+
+  set(${result_var} "${result}" PARENT_SCOPE)
+  set(${info_var} "${info}" PARENT_SCOPE)
+endfunction()
+
+
+function(verify_bundle_symlinks bundle result_var info_var)
+  set(result 1)
+  set(info "")
+  set(count 0)
+
+  # TODO: implement this function for real...
+  # Right now, it is just a stub that verifies unconditionally...
+
+  set(${result_var} "${result}" PARENT_SCOPE)
+  set(${info_var} "${info}" PARENT_SCOPE)
+endfunction()
+
+
+function(verify_app app)
+  set(verified 0)
+  set(info "")
+
+  set(options)
+  set(oneValueArgs)
+  set(multiValueArgs IGNORE_ITEM)
+  cmake_parse_arguments(CFG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
+
+  get_bundle_and_executable("${app}" bundle executable valid)
+
+  message(STATUS "===========================================================================")
+  message(STATUS "Analyzing app='${app}'")
+  message(STATUS "bundle='${bundle}'")
+  message(STATUS "executable='${executable}'")
+  message(STATUS "valid='${valid}'")
+
+  # Verify that the bundle does not have any "external" prerequisites:
+  #
+  verify_bundle_prerequisites("${bundle}" verified info IGNORE_ITEM "${CFG_IGNORE_ITEM}")
+  message(STATUS "verified='${verified}'")
+  message(STATUS "info='${info}'")
+  message(STATUS "")
+
+  if(verified)
+    # Verify that the bundle does not have any symlinks to external files:
+    #
+    verify_bundle_symlinks("${bundle}" verified info)
+    message(STATUS "verified='${verified}'")
+    message(STATUS "info='${info}'")
+    message(STATUS "")
+  endif()
+
+  if(NOT verified)
+    message(FATAL_ERROR "error: verify_app failed")
+  endif()
+endfunction()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/CMake.cmake b/share/cmake-3.22/Modules/CMake.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMake.cmake
rename to share/cmake-3.22/Modules/CMake.cmake
diff --git a/share/cmake-3.18/Modules/CMakeASM-ATTInformation.cmake b/share/cmake-3.22/Modules/CMakeASM-ATTInformation.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeASM-ATTInformation.cmake
rename to share/cmake-3.22/Modules/CMakeASM-ATTInformation.cmake
diff --git a/share/cmake-3.18/Modules/CMakeASMCompiler.cmake.in b/share/cmake-3.22/Modules/CMakeASMCompiler.cmake.in
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeASMCompiler.cmake.in
rename to share/cmake-3.22/Modules/CMakeASMCompiler.cmake.in
diff --git a/share/cmake-3.22/Modules/CMakeASMInformation.cmake b/share/cmake-3.22/Modules/CMakeASMInformation.cmake
new file mode 100644
index 0000000..2dc1585
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeASMInformation.cmake
@@ -0,0 +1,100 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+if(UNIX)
+  set(CMAKE_ASM${ASM_DIALECT}_OUTPUT_EXTENSION .o)
+else()
+  set(CMAKE_ASM${ASM_DIALECT}_OUTPUT_EXTENSION .obj)
+endif()
+
+set(CMAKE_INCLUDE_FLAG_ASM${ASM_DIALECT} "-I")       # -I
+set(CMAKE_BASE_NAME)
+get_filename_component(CMAKE_BASE_NAME "${CMAKE_ASM${ASM_DIALECT}_COMPILER}" NAME_WE)
+
+if("${CMAKE_BASE_NAME}" STREQUAL "as")
+  set(CMAKE_BASE_NAME gas)
+endif()
+
+# Load compiler-specific information.
+set(_INCLUDED_FILE "")
+if(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID)
+  include(Compiler/${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}-ASM${ASM_DIALECT} OPTIONAL  RESULT_VARIABLE _INCLUDED_FILE)
+endif()
+if(NOT _INCLUDED_FILE)
+  if("ASM${ASM_DIALECT}" STREQUAL "ASM")
+    message(STATUS "Warning: Did not find file Compiler/${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}-ASM${ASM_DIALECT}")
+  endif()
+  include(Platform/${CMAKE_BASE_NAME} OPTIONAL)
+endif()
+
+if(CMAKE_SYSTEM_PROCESSOR)
+  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}-ASM${ASM_DIALECT}-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL  RESULT_VARIABLE _INCLUDED_FILE)
+  if(NOT _INCLUDED_FILE)
+    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME}-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
+  endif()
+endif()
+
+include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}-ASM${ASM_DIALECT} OPTIONAL  RESULT_VARIABLE _INCLUDED_FILE)
+if(NOT _INCLUDED_FILE)
+  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL)
+endif()
+
+# This should be included before the _INIT variables are
+# used to initialize the cache.  Since the rule variables
+# have if blocks on them, users can still define them here.
+# But, it should still be after the platform file so changes can
+# be made to those values.
+
+if(CMAKE_USER_MAKE_RULES_OVERRIDE)
+  # Save the full path of the file so try_compile can use it.
+  include(${CMAKE_USER_MAKE_RULES_OVERRIDE} RESULT_VARIABLE _override)
+  set(CMAKE_USER_MAKE_RULES_OVERRIDE "${_override}")
+endif()
+
+if(CMAKE_USER_MAKE_RULES_OVERRIDE_ASM)
+  # Save the full path of the file so try_compile can use it.
+  include(${CMAKE_USER_MAKE_RULES_OVERRIDE_ASM} RESULT_VARIABLE _override)
+  set(CMAKE_USER_MAKE_RULES_OVERRIDE_ASM "${_override}")
+endif()
+
+# Set default assembler file extensions:
+if(NOT CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS)
+  set(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS s;S;asm)
+endif()
+
+
+# Support for CMAKE_ASM${ASM_DIALECT}_FLAGS_INIT and friends:
+set(CMAKE_ASM${ASM_DIALECT}_FLAGS_INIT "$ENV{ASM${ASM_DIALECT}FLAGS} ${CMAKE_ASM${ASM_DIALECT}_FLAGS_INIT}")
+
+cmake_initialize_per_config_variable(CMAKE_ASM${ASM_DIALECT}_FLAGS "Flags used by the ASM${ASM_DIALECT} compiler")
+
+if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT)
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT "<CMAKE_ASM${ASM_DIALECT}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
+endif()
+
+if(NOT CMAKE_ASM${ASM_DIALECT}_CREATE_STATIC_LIBRARY)
+  set(CMAKE_ASM${ASM_DIALECT}_CREATE_STATIC_LIBRARY
+      "<CMAKE_AR> cr <TARGET> <LINK_FLAGS> <OBJECTS> "
+      "<CMAKE_RANLIB> <TARGET>")
+endif()
+
+if(NOT CMAKE_ASM${ASM_DIALECT}_LINK_EXECUTABLE)
+  set(CMAKE_ASM${ASM_DIALECT}_LINK_EXECUTABLE
+    "<CMAKE_ASM${ASM_DIALECT}_COMPILER> <FLAGS> <CMAKE_ASM${ASM_DIALECT}_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RUNTIME_ASM${ASM_DIALECT}_FLAG)
+  set(CMAKE_EXECUTABLE_RUNTIME_ASM${ASM_DIALECT}_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_ASM${ASM_DIALECT}_FLAG})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RUNTIME_ASM${ASM_DIALECT}_FLAG_SEP)
+  set(CMAKE_EXECUTABLE_RUNTIME_ASM${ASM_DIALECT}_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_ASM${ASM_DIALECT}_FLAG_SEP})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RPATH_LINK_ASM${ASM_DIALECT}_FLAG)
+  set(CMAKE_EXECUTABLE_RPATH_LINK_ASM${ASM_DIALECT}_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_ASM${ASM_DIALECT}_FLAG})
+endif()
+
+
+set(CMAKE_ASM${ASM_DIALECT}_INFOMATION_LOADED 1)
diff --git a/share/cmake-3.22/Modules/CMakeASM_MASMInformation.cmake b/share/cmake-3.22/Modules/CMakeASM_MASMInformation.cmake
new file mode 100644
index 0000000..656b75e
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeASM_MASMInformation.cmake
@@ -0,0 +1,20 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# support for the MS assembler, masm and masm64
+
+set(ASM_DIALECT "_MASM")
+
+set(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS asm)
+
+set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT "<CMAKE_ASM${ASM_DIALECT}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -c -Fo <OBJECT> <SOURCE>")
+
+# The ASM_MASM compiler id for this compiler is "MSVC", so fill out the runtime library table.
+set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded         "")
+set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL      "")
+set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug    "")
+set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL "")
+
+include(CMakeASMInformation)
+set(ASM_DIALECT)
diff --git a/share/cmake-3.22/Modules/CMakeASM_NASMInformation.cmake b/share/cmake-3.22/Modules/CMakeASM_NASMInformation.cmake
new file mode 100644
index 0000000..a72575b
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeASM_NASMInformation.cmake
@@ -0,0 +1,55 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# support for the nasm assembler
+
+set(CMAKE_ASM_NASM_SOURCE_FILE_EXTENSIONS nasm asm)
+
+if(NOT CMAKE_ASM_NASM_OBJECT_FORMAT)
+  if(WIN32)
+    if(DEFINED CMAKE_C_SIZEOF_DATA_PTR AND CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
+      set(CMAKE_ASM_NASM_OBJECT_FORMAT win64)
+    elseif(DEFINED CMAKE_CXX_SIZEOF_DATA_PTR AND CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 8)
+      set(CMAKE_ASM_NASM_OBJECT_FORMAT win64)
+    else()
+      set(CMAKE_ASM_NASM_OBJECT_FORMAT win32)
+    endif()
+  elseif(APPLE)
+    if(DEFINED CMAKE_C_SIZEOF_DATA_PTR AND CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
+      set(CMAKE_ASM_NASM_OBJECT_FORMAT macho64)
+    elseif(DEFINED CMAKE_CXX_SIZEOF_DATA_PTR AND CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 8)
+      set(CMAKE_ASM_NASM_OBJECT_FORMAT macho64)
+    else()
+      set(CMAKE_ASM_NASM_OBJECT_FORMAT macho)
+    endif()
+  else()
+    if(DEFINED CMAKE_C_SIZEOF_DATA_PTR AND CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
+      set(CMAKE_ASM_NASM_OBJECT_FORMAT elf64)
+    elseif(DEFINED CMAKE_CXX_SIZEOF_DATA_PTR AND CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 8)
+      set(CMAKE_ASM_NASM_OBJECT_FORMAT elf64)
+    else()
+      set(CMAKE_ASM_NASM_OBJECT_FORMAT elf)
+    endif()
+  endif()
+endif()
+
+if(NOT CMAKE_ASM_NASM_COMPILE_OBJECT)
+  set(CMAKE_ASM_NASM_COMPILE_OBJECT "<CMAKE_ASM_NASM_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -f ${CMAKE_ASM_NASM_OBJECT_FORMAT} -o <OBJECT> <SOURCE>")
+endif()
+
+if(CMAKE_ASM_NASM_COMPILER_ID STREQUAL "NASM")
+  set(CMAKE_DEPFILE_FLAGS_ASM_NASM "-MD <DEP_FILE> -MT <DEP_TARGET>")
+
+  if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+      AND CMAKE_GENERATOR MATCHES "Makefiles|WMake")
+    # dependencies are computed by the compiler itself
+    set(CMAKE_ASM_NASM_DEPFILE_FORMAT gcc)
+    set(CMAKE_ASM_NASM_DEPENDS_USE_COMPILER TRUE)
+  endif()
+endif()
+
+# Load the generic ASMInformation file:
+set(ASM_DIALECT "_NASM")
+include(CMakeASMInformation)
+set(ASM_DIALECT)
diff --git a/share/cmake-3.18/Modules/CMakeAddFortranSubdirectory.cmake b/share/cmake-3.22/Modules/CMakeAddFortranSubdirectory.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeAddFortranSubdirectory.cmake
rename to share/cmake-3.22/Modules/CMakeAddFortranSubdirectory.cmake
diff --git a/share/cmake-3.18/Modules/CMakeAddFortranSubdirectory/build_mingw.cmake.in b/share/cmake-3.22/Modules/CMakeAddFortranSubdirectory/build_mingw.cmake.in
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeAddFortranSubdirectory/build_mingw.cmake.in
rename to share/cmake-3.22/Modules/CMakeAddFortranSubdirectory/build_mingw.cmake.in
diff --git a/share/cmake-3.18/Modules/CMakeAddFortranSubdirectory/config_mingw.cmake.in b/share/cmake-3.22/Modules/CMakeAddFortranSubdirectory/config_mingw.cmake.in
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeAddFortranSubdirectory/config_mingw.cmake.in
rename to share/cmake-3.22/Modules/CMakeAddFortranSubdirectory/config_mingw.cmake.in
diff --git a/share/cmake-3.18/Modules/CMakeAddNewLanguage.txt b/share/cmake-3.22/Modules/CMakeAddNewLanguage.txt
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeAddNewLanguage.txt
rename to share/cmake-3.22/Modules/CMakeAddNewLanguage.txt
diff --git a/share/cmake-3.18/Modules/CMakeBackwardCompatibilityC.cmake b/share/cmake-3.22/Modules/CMakeBackwardCompatibilityC.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeBackwardCompatibilityC.cmake
rename to share/cmake-3.22/Modules/CMakeBackwardCompatibilityC.cmake
diff --git a/share/cmake-3.18/Modules/CMakeBackwardCompatibilityCXX.cmake b/share/cmake-3.22/Modules/CMakeBackwardCompatibilityCXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeBackwardCompatibilityCXX.cmake
rename to share/cmake-3.22/Modules/CMakeBackwardCompatibilityCXX.cmake
diff --git a/share/cmake-3.18/Modules/CMakeBorlandFindMake.cmake b/share/cmake-3.22/Modules/CMakeBorlandFindMake.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeBorlandFindMake.cmake
rename to share/cmake-3.22/Modules/CMakeBorlandFindMake.cmake
diff --git a/share/cmake-3.18/Modules/CMakeBuildSettings.cmake.in b/share/cmake-3.22/Modules/CMakeBuildSettings.cmake.in
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeBuildSettings.cmake.in
rename to share/cmake-3.22/Modules/CMakeBuildSettings.cmake.in
diff --git a/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in b/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in
new file mode 100644
index 0000000..2b24ff2
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeCCompiler.cmake.in
@@ -0,0 +1,72 @@
+set(CMAKE_C_COMPILER "@CMAKE_C_COMPILER@")
+set(CMAKE_C_COMPILER_ARG1 "@CMAKE_C_COMPILER_ARG1@")
+set(CMAKE_C_COMPILER_ID "@CMAKE_C_COMPILER_ID@")
+set(CMAKE_C_COMPILER_VERSION "@CMAKE_C_COMPILER_VERSION@")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "@CMAKE_C_COMPILER_VERSION_INTERNAL@")
+set(CMAKE_C_COMPILER_WRAPPER "@CMAKE_C_COMPILER_WRAPPER@")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "@CMAKE_C_STANDARD_COMPUTED_DEFAULT@")
+set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "@CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT@")
+set(CMAKE_C_COMPILE_FEATURES "@CMAKE_C_COMPILE_FEATURES@")
+set(CMAKE_C90_COMPILE_FEATURES "@CMAKE_C90_COMPILE_FEATURES@")
+set(CMAKE_C99_COMPILE_FEATURES "@CMAKE_C99_COMPILE_FEATURES@")
+set(CMAKE_C11_COMPILE_FEATURES "@CMAKE_C11_COMPILE_FEATURES@")
+set(CMAKE_C17_COMPILE_FEATURES "@CMAKE_C17_COMPILE_FEATURES@")
+set(CMAKE_C23_COMPILE_FEATURES "@CMAKE_C23_COMPILE_FEATURES@")
+
+set(CMAKE_C_PLATFORM_ID "@CMAKE_C_PLATFORM_ID@")
+set(CMAKE_C_SIMULATE_ID "@CMAKE_C_SIMULATE_ID@")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "@CMAKE_C_COMPILER_FRONTEND_VARIANT@")
+set(CMAKE_C_SIMULATE_VERSION "@CMAKE_C_SIMULATE_VERSION@")
+@_SET_CMAKE_C_COMPILER_ARCHITECTURE_ID@
+@_SET_CMAKE_C_COMPILER_SYSROOT@
+@SET_MSVC_C_ARCHITECTURE_ID@
+@SET_CMAKE_XCODE_ARCHS@
+set(CMAKE_AR "@CMAKE_AR@")
+set(CMAKE_C_COMPILER_AR "@CMAKE_C_COMPILER_AR@")
+set(CMAKE_RANLIB "@CMAKE_RANLIB@")
+set(CMAKE_C_COMPILER_RANLIB "@CMAKE_C_COMPILER_RANLIB@")
+set(CMAKE_LINKER "@CMAKE_LINKER@")
+set(CMAKE_MT "@CMAKE_MT@")
+set(CMAKE_COMPILER_IS_GNUCC @CMAKE_COMPILER_IS_GNUCC@)
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS @CMAKE_C_COMPILER_WORKS@)
+set(CMAKE_C_ABI_COMPILED @CMAKE_C_ABI_COMPILED@)
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "@CMAKE_C_SIZEOF_DATA_PTR@")
+set(CMAKE_C_COMPILER_ABI "@CMAKE_C_COMPILER_ABI@")
+set(CMAKE_C_BYTE_ORDER "@CMAKE_C_BYTE_ORDER@")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "@CMAKE_C_LIBRARY_ARCHITECTURE@")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "@CMAKE_C_LIBRARY_ARCHITECTURE@")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "@CMAKE_C_CL_SHOWINCLUDES_PREFIX@")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+  set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+@CMAKE_C_COMPILER_CUSTOM_CODE@
+@CMAKE_C_SYSROOT_FLAG_CODE@
+@CMAKE_C_OSX_DEPLOYMENT_TARGET_FLAG_CODE@
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "@CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES@")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "@CMAKE_C_IMPLICIT_LINK_LIBRARIES@")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "@CMAKE_C_IMPLICIT_LINK_DIRECTORIES@")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
diff --git a/share/cmake-3.22/Modules/CMakeCCompilerABI.c b/share/cmake-3.22/Modules/CMakeCCompilerABI.c
new file mode 100644
index 0000000..f0ee21a
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeCCompilerABI.c
@@ -0,0 +1,27 @@
+#ifdef __cplusplus
+#  error "A C++ compiler has been selected for C."
+#endif
+
+#ifdef __CLASSIC_C__
+#  define const
+#endif
+
+#include "CMakeCompilerABI.h"
+
+#ifdef __CLASSIC_C__
+int main(argc, argv) int argc;
+char* argv[];
+#else
+int main(int argc, char* argv[])
+#endif
+{
+  int require = 0;
+  require += info_sizeof_dptr[argc];
+  require += info_byte_order_big_endian[argc];
+  require += info_byte_order_little_endian[argc];
+#if defined(ABI_ID)
+  require += info_abi[argc];
+#endif
+  (void)argv;
+  return require;
+}
diff --git a/share/cmake-3.22/Modules/CMakeCCompilerId.c.in b/share/cmake-3.22/Modules/CMakeCCompilerId.c.in
new file mode 100644
index 0000000..30ad982
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeCCompilerId.c.in
@@ -0,0 +1,108 @@
+#ifdef __cplusplus
+# error "A C++ compiler has been selected for C."
+#endif
+
+#if defined(__18CXX)
+# define ID_VOID_MAIN
+#endif
+#if defined(__CLASSIC_C__)
+/* cv-qualifiers did not exist in K&R C */
+# define const
+# define volatile
+#endif
+
+#if !defined(__has_include)
+/* If the compiler does not have __has_include, pretend the answer is
+   always no.  */
+#  define __has_include(x) 0
+#endif
+
+@CMAKE_C_COMPILER_ID_CONTENT@
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+#ifdef SIMULATE_ID
+char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
+#endif
+
+#ifdef __QNXNTO__
+char const* qnxnto = "INFO" ":" "qnxnto[]";
+#endif
+
+#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
+char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
+#endif
+
+@CMAKE_C_COMPILER_ID_PLATFORM_CONTENT@
+@CMAKE_C_COMPILER_ID_ERROR_FOR_TEST@
+
+#if !defined(__STDC__) && !defined(__clang__)
+# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__)
+#  define C_VERSION "90"
+# else
+#  define C_VERSION
+# endif
+#elif __STDC_VERSION__ > 201710L
+# define C_VERSION "23"
+#elif __STDC_VERSION__ >= 201710L
+# define C_VERSION "17"
+#elif __STDC_VERSION__ >= 201000L
+# define C_VERSION "11"
+#elif __STDC_VERSION__ >= 199901L
+# define C_VERSION "99"
+#else
+# define C_VERSION "90"
+#endif
+const char* info_language_standard_default =
+  "INFO" ":" "standard_default[" C_VERSION "]";
+
+const char* info_language_extensions_default = "INFO" ":" "extensions_default["
+/* !defined(_MSC_VER) to exclude Clang's MSVC compatibility mode. */
+#if (defined(__clang__) || defined(__GNUC__) ||                               \
+     defined(__TI_COMPILER_VERSION__)) &&                                     \
+  !defined(__STRICT_ANSI__) && !defined(_MSC_VER)
+  "ON"
+#else
+  "OFF"
+#endif
+"]";
+
+/*--------------------------------------------------------------------------*/
+
+#ifdef ID_VOID_MAIN
+void main() {}
+#else
+# if defined(__CLASSIC_C__)
+int main(argc, argv) int argc; char *argv[];
+# else
+int main(int argc, char* argv[])
+# endif
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+  require += info_arch[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+#ifdef COMPILER_VERSION_INTERNAL
+  require += info_version_internal[argc];
+#endif
+#ifdef SIMULATE_ID
+  require += info_simulate[argc];
+#endif
+#ifdef SIMULATE_VERSION_MAJOR
+  require += info_simulate_version[argc];
+#endif
+#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
+  require += info_cray[argc];
+#endif
+  require += info_language_standard_default[argc];
+  require += info_language_extensions_default[argc];
+  (void)argv;
+  return require;
+}
+#endif
diff --git a/share/cmake-3.22/Modules/CMakeCInformation.cmake b/share/cmake-3.22/Modules/CMakeCInformation.cmake
new file mode 100644
index 0000000..665f309
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeCInformation.cmake
@@ -0,0 +1,206 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This file sets the basic flags for the C language in CMake.
+# It also loads the available platform file for the system-compiler
+# if it exists.
+# It also loads a system - compiler - processor (or target hardware)
+# specific file, which is mainly useful for crosscompiling and embedded systems.
+
+include(CMakeLanguageInformation)
+
+# some compilers use different extensions (e.g. sdcc uses .rel)
+# so set the extension here first so it can be overridden by the compiler specific file
+if(UNIX)
+  set(CMAKE_C_OUTPUT_EXTENSION .o)
+else()
+  set(CMAKE_C_OUTPUT_EXTENSION .obj)
+endif()
+
+set(_INCLUDED_FILE 0)
+
+# Load compiler-specific information.
+if(CMAKE_C_COMPILER_ID)
+  include(Compiler/${CMAKE_C_COMPILER_ID}-C OPTIONAL)
+endif()
+
+set(CMAKE_BASE_NAME)
+get_filename_component(CMAKE_BASE_NAME "${CMAKE_C_COMPILER}" NAME_WE)
+if(CMAKE_COMPILER_IS_GNUCC)
+  set(CMAKE_BASE_NAME gcc)
+endif()
+
+
+# load a hardware specific file, mostly useful for embedded compilers
+if(CMAKE_SYSTEM_PROCESSOR)
+  if(CMAKE_C_COMPILER_ID)
+    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_C_COMPILER_ID}-C-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
+  endif()
+  if (NOT _INCLUDED_FILE)
+    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME}-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
+  endif ()
+endif()
+
+
+# load the system- and compiler specific files
+if(CMAKE_C_COMPILER_ID)
+  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_C_COMPILER_ID}-C
+    OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
+endif()
+if (NOT _INCLUDED_FILE)
+  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME}
+    OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
+endif ()
+
+# load any compiler-wrapper specific information
+if (CMAKE_C_COMPILER_WRAPPER)
+  __cmake_include_compiler_wrapper(C)
+endif ()
+
+# We specify the compiler information in the system file for some
+# platforms, but this language may not have been enabled when the file
+# was first included.  Include it again to get the language info.
+# Remove this when all compiler info is removed from system files.
+if (NOT _INCLUDED_FILE)
+  include(Platform/${CMAKE_SYSTEM_NAME} OPTIONAL)
+endif ()
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+  foreach(f ${CMAKE_C_ABI_FILES})
+    include(${f})
+  endforeach()
+  unset(CMAKE_C_ABI_FILES)
+endif()
+
+# This should be included before the _INIT variables are
+# used to initialize the cache.  Since the rule variables
+# have if blocks on them, users can still define them here.
+# But, it should still be after the platform file so changes can
+# be made to those values.
+
+if(CMAKE_USER_MAKE_RULES_OVERRIDE)
+  # Save the full path of the file so try_compile can use it.
+  include(${CMAKE_USER_MAKE_RULES_OVERRIDE} RESULT_VARIABLE _override)
+  set(CMAKE_USER_MAKE_RULES_OVERRIDE "${_override}")
+endif()
+
+if(CMAKE_USER_MAKE_RULES_OVERRIDE_C)
+  # Save the full path of the file so try_compile can use it.
+  include(${CMAKE_USER_MAKE_RULES_OVERRIDE_C} RESULT_VARIABLE _override)
+  set(CMAKE_USER_MAKE_RULES_OVERRIDE_C "${_override}")
+endif()
+
+if(CMAKE_EXECUTABLE_FORMAT STREQUAL "ELF")
+  if(NOT DEFINED CMAKE_C_LINK_WHAT_YOU_USE_FLAG)
+    set(CMAKE_C_LINK_WHAT_YOU_USE_FLAG "LINKER:--no-as-needed")
+  endif()
+  if(NOT DEFINED CMAKE_LINK_WHAT_YOU_USE_CHECK)
+    set(CMAKE_LINK_WHAT_YOU_USE_CHECK ldd -u -r)
+  endif()
+endif()
+
+# for most systems a module is the same as a shared library
+# so unless the variable CMAKE_MODULE_EXISTS is set just
+# copy the values from the LIBRARY variables
+if(NOT CMAKE_MODULE_EXISTS)
+  set(CMAKE_SHARED_MODULE_C_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
+  set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS})
+endif()
+
+set(CMAKE_C_FLAGS_INIT "$ENV{CFLAGS} ${CMAKE_C_FLAGS_INIT}")
+
+cmake_initialize_per_config_variable(CMAKE_C_FLAGS "Flags used by the C compiler")
+
+if(CMAKE_C_STANDARD_LIBRARIES_INIT)
+  set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES_INIT}"
+    CACHE STRING "Libraries linked by default with all C applications.")
+  mark_as_advanced(CMAKE_C_STANDARD_LIBRARIES)
+endif()
+
+if(NOT CMAKE_C_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_C_COMPILER_LAUNCHER})
+  set(CMAKE_C_COMPILER_LAUNCHER "$ENV{CMAKE_C_COMPILER_LAUNCHER}"
+    CACHE STRING "Compiler launcher for C.")
+endif()
+
+if(NOT CMAKE_C_LINKER_LAUNCHER AND DEFINED ENV{CMAKE_C_LINKER_LAUNCHER})
+  set(CMAKE_C_LINKER_LAUNCHER "$ENV{CMAKE_C_LINKER_LAUNCHER}"
+    CACHE STRING "Linker launcher for C.")
+endif()
+
+include(CMakeCommonLanguageInclude)
+
+# now define the following rule variables
+
+# CMAKE_C_CREATE_SHARED_LIBRARY
+# CMAKE_C_CREATE_SHARED_MODULE
+# CMAKE_C_COMPILE_OBJECT
+# CMAKE_C_LINK_EXECUTABLE
+
+# variables supplied by the generator at use time
+# <TARGET>
+# <TARGET_BASE> the target without the suffix
+# <OBJECTS>
+# <OBJECT>
+# <LINK_LIBRARIES>
+# <FLAGS>
+# <LINK_FLAGS>
+
+# C compiler information
+# <CMAKE_C_COMPILER>
+# <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS>
+# <CMAKE_SHARED_MODULE_CREATE_C_FLAGS>
+# <CMAKE_C_LINK_FLAGS>
+
+# Static library tools
+# <CMAKE_AR>
+# <CMAKE_RANLIB>
+
+
+# create a C shared library
+if(NOT CMAKE_C_CREATE_SHARED_LIBRARY)
+  set(CMAKE_C_CREATE_SHARED_LIBRARY
+      "<CMAKE_C_COMPILER> <CMAKE_SHARED_LIBRARY_C_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
+endif()
+
+# create a C shared module just copy the shared library rule
+if(NOT CMAKE_C_CREATE_SHARED_MODULE)
+  set(CMAKE_C_CREATE_SHARED_MODULE ${CMAKE_C_CREATE_SHARED_LIBRARY})
+endif()
+
+# Create a static archive incrementally for large object file counts.
+# If CMAKE_C_CREATE_STATIC_LIBRARY is set it will override these.
+if(NOT DEFINED CMAKE_C_ARCHIVE_CREATE)
+  set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
+endif()
+if(NOT DEFINED CMAKE_C_ARCHIVE_APPEND)
+  set(CMAKE_C_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
+endif()
+if(NOT DEFINED CMAKE_C_ARCHIVE_FINISH)
+  set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
+endif()
+
+# compile a C file into an object file
+if(NOT CMAKE_C_COMPILE_OBJECT)
+  set(CMAKE_C_COMPILE_OBJECT
+    "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
+endif()
+
+if(NOT CMAKE_C_LINK_EXECUTABLE)
+  set(CMAKE_C_LINK_EXECUTABLE
+    "<CMAKE_C_COMPILER> <FLAGS> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RUNTIME_C_FLAG)
+  set(CMAKE_EXECUTABLE_RUNTIME_C_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RUNTIME_C_FLAG_SEP)
+  set(CMAKE_EXECUTABLE_RUNTIME_C_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RPATH_LINK_C_FLAG)
+  set(CMAKE_EXECUTABLE_RPATH_LINK_C_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG})
+endif()
+
+set(CMAKE_C_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.18/Modules/CMakeCSharpCompiler.cmake.in b/share/cmake-3.22/Modules/CMakeCSharpCompiler.cmake.in
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeCSharpCompiler.cmake.in
rename to share/cmake-3.22/Modules/CMakeCSharpCompiler.cmake.in
diff --git a/share/cmake-3.22/Modules/CMakeCSharpCompilerId.cs.in b/share/cmake-3.22/Modules/CMakeCSharpCompilerId.cs.in
new file mode 100644
index 0000000..b43ec04
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeCSharpCompilerId.cs.in
@@ -0,0 +1,71 @@
+using System;
+
+namespace CSharp
+{
+    public class CSharpApp
+    {
+        const string InfoCompiler = "INFO:compiler[Microsoft "
+#if PlatformToolsetv100
+        + "Visual Studio"
+#elif PlatformToolsetv110
+        + "Visual Studio"
+#elif PlatformToolsetv120
+        + "Visual Studio"
+#elif PlatformToolsetv140
+        + "Visual Studio"
+#elif PlatformToolsetv141
+        + "Visual Studio"
+#elif PlatformToolsetv142
+        + "Visual Studio"
+#elif PlatformToolsetv143
+        + "Visual Studio"
+#else
+        + "unknown"
+#endif
+        + "]";
+
+        const string InfoPlatform = "INFO:platform[Windows]";
+
+        const string InfoArchitecture = "INFO:arch["
+#if Platformx64
+        + "x64"
+#elif Platformx86
+        + "x86"
+#elif PlatformxWin32
+        + "Win32]"
+#else
+        + "unknown"
+#endif
+        + "]";
+
+        const string InfoCompilerVersion = "INFO:compiler_version["
+#if PlatformToolsetv100
+        + "2010"
+#elif PlatformToolsetv110
+        + "2012"
+#elif PlatformToolsetv120
+        + "2013"
+#elif PlatformToolsetv140
+        + "2015"
+#elif PlatformToolsetv141
+        + "2017"
+#elif PlatformToolsetv142
+        + "2019"
+#elif PlatformToolsetv143
+        + "2022"
+#else
+        + "9999"
+#endif
+        + "]";
+
+        static void Main(string[] args)
+        {
+            // we have to print the lines to make sure
+            // the compiler does not optimize them away ...
+            System.Console.WriteLine(InfoCompiler);
+            System.Console.WriteLine(InfoPlatform);
+            System.Console.WriteLine(InfoArchitecture);
+            System.Console.WriteLine(InfoCompilerVersion);
+        }
+    }
+}
diff --git a/share/cmake-3.18/Modules/CMakeCSharpInformation.cmake b/share/cmake-3.22/Modules/CMakeCSharpInformation.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeCSharpInformation.cmake
rename to share/cmake-3.22/Modules/CMakeCSharpInformation.cmake
diff --git a/share/cmake-3.22/Modules/CMakeCUDACompiler.cmake.in b/share/cmake-3.22/Modules/CMakeCUDACompiler.cmake.in
new file mode 100644
index 0000000..2f3e9a8
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeCUDACompiler.cmake.in
@@ -0,0 +1,70 @@
+set(CMAKE_CUDA_COMPILER "@CMAKE_CUDA_COMPILER@")
+set(CMAKE_CUDA_HOST_COMPILER "@CMAKE_CUDA_HOST_COMPILER@")
+set(CMAKE_CUDA_HOST_LINK_LAUNCHER "@CMAKE_CUDA_HOST_LINK_LAUNCHER@")
+set(CMAKE_CUDA_COMPILER_ID "@CMAKE_CUDA_COMPILER_ID@")
+set(CMAKE_CUDA_COMPILER_VERSION "@CMAKE_CUDA_COMPILER_VERSION@")
+set(CMAKE_CUDA_DEVICE_LINKER "@CMAKE_CUDA_DEVICE_LINKER@")
+set(CMAKE_CUDA_FATBINARY "@CMAKE_CUDA_FATBINARY@")
+set(CMAKE_CUDA_STANDARD_COMPUTED_DEFAULT "@CMAKE_CUDA_STANDARD_COMPUTED_DEFAULT@")
+set(CMAKE_CUDA_EXTENSIONS_COMPUTED_DEFAULT "@CMAKE_CUDA_EXTENSIONS_COMPUTED_DEFAULT@")
+set(CMAKE_CUDA_COMPILE_FEATURES "@CMAKE_CUDA_COMPILE_FEATURES@")
+set(CMAKE_CUDA03_COMPILE_FEATURES "@CMAKE_CUDA03_COMPILE_FEATURES@")
+set(CMAKE_CUDA11_COMPILE_FEATURES "@CMAKE_CUDA11_COMPILE_FEATURES@")
+set(CMAKE_CUDA14_COMPILE_FEATURES "@CMAKE_CUDA14_COMPILE_FEATURES@")
+set(CMAKE_CUDA17_COMPILE_FEATURES "@CMAKE_CUDA17_COMPILE_FEATURES@")
+set(CMAKE_CUDA20_COMPILE_FEATURES "@CMAKE_CUDA20_COMPILE_FEATURES@")
+set(CMAKE_CUDA23_COMPILE_FEATURES "@CMAKE_CUDA23_COMPILE_FEATURES@")
+
+set(CMAKE_CUDA_PLATFORM_ID "@CMAKE_CUDA_PLATFORM_ID@")
+set(CMAKE_CUDA_SIMULATE_ID "@CMAKE_CUDA_SIMULATE_ID@")
+set(CMAKE_CUDA_COMPILER_FRONTEND_VARIANT "@CMAKE_CUDA_COMPILER_FRONTEND_VARIANT@")
+set(CMAKE_CUDA_SIMULATE_VERSION "@CMAKE_CUDA_SIMULATE_VERSION@")
+@SET_MSVC_CUDA_ARCHITECTURE_ID@
+@_SET_CMAKE_CUDA_COMPILER_SYSROOT@
+
+set(CMAKE_CUDA_COMPILER_ENV_VAR "CUDACXX")
+set(CMAKE_CUDA_HOST_COMPILER_ENV_VAR "CUDAHOSTCXX")
+
+set(CMAKE_CUDA_COMPILER_LOADED 1)
+set(CMAKE_CUDA_COMPILER_ID_RUN 1)
+set(CMAKE_CUDA_SOURCE_FILE_EXTENSIONS cu)
+set(CMAKE_CUDA_LINKER_PREFERENCE 15)
+set(CMAKE_CUDA_LINKER_PREFERENCE_PROPAGATES 1)
+
+set(CMAKE_CUDA_SIZEOF_DATA_PTR "@CMAKE_CUDA_SIZEOF_DATA_PTR@")
+set(CMAKE_CUDA_COMPILER_ABI "@CMAKE_CUDA_COMPILER_ABI@")
+set(CMAKE_CUDA_BYTE_ORDER "@CMAKE_CUDA_BYTE_ORDER@")
+set(CMAKE_CUDA_LIBRARY_ARCHITECTURE "@CMAKE_CUDA_LIBRARY_ARCHITECTURE@")
+
+if(CMAKE_CUDA_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_CUDA_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_CUDA_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CUDA_COMPILER_ABI}")
+endif()
+
+if(CMAKE_CUDA_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "@CMAKE_CUDA_LIBRARY_ARCHITECTURE@")
+endif()
+
+set(CMAKE_CUDA_COMPILER_TOOLKIT_ROOT "@CMAKE_CUDA_COMPILER_TOOLKIT_ROOT@")
+set(CMAKE_CUDA_COMPILER_TOOLKIT_LIBRARY_ROOT "@CMAKE_CUDA_COMPILER_TOOLKIT_LIBRARY_ROOT@")
+set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT "@CMAKE_CUDA_COMPILER_LIBRARY_ROOT@")
+
+set(CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES "@CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES@")
+
+set(CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES "@CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES@")
+set(CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES "@CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES@")
+set(CMAKE_CUDA_HOST_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_CUDA_HOST_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
+
+set(CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES "@CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES@")
+set(CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES "@CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES@")
+set(CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES "@CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES@")
+set(CMAKE_CUDA_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_CUDA_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
+
+@_SET_CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT@
+
+set(CMAKE_LINKER "@CMAKE_LINKER@")
+set(CMAKE_AR "@CMAKE_AR@")
+set(CMAKE_MT "@CMAKE_MT@")
diff --git a/share/cmake-3.22/Modules/CMakeCUDACompilerABI.cu b/share/cmake-3.22/Modules/CMakeCUDACompilerABI.cu
new file mode 100644
index 0000000..449a079
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeCUDACompilerABI.cu
@@ -0,0 +1,18 @@
+#ifndef __CUDACC__
+#  error "A C or C++ compiler has been selected for CUDA"
+#endif
+
+#include "CMakeCompilerABI.h"
+
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_sizeof_dptr[argc];
+  require += info_byte_order_big_endian[argc];
+  require += info_byte_order_little_endian[argc];
+#if defined(ABI_ID)
+  require += info_abi[argc];
+#endif
+  (void)argv;
+  return require;
+}
diff --git a/share/cmake-3.22/Modules/CMakeCUDACompilerId.cu.in b/share/cmake-3.22/Modules/CMakeCUDACompilerId.cu.in
new file mode 100644
index 0000000..becb9b4
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeCUDACompilerId.cu.in
@@ -0,0 +1,65 @@
+#ifndef __CUDACC__
+# error "A C or C++ compiler has been selected for CUDA"
+#endif
+
+@CMAKE_CUDA_COMPILER_ID_CONTENT@
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+#ifdef SIMULATE_ID
+char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
+#endif
+
+@CMAKE_CUDA_COMPILER_ID_PLATFORM_CONTENT@
+@CMAKE_CUDA_COMPILER_ID_ERROR_FOR_TEST@
+
+const char* info_language_standard_default = "INFO" ":" "standard_default["
+#if __cplusplus > 202002L
+  "23"
+#elif __cplusplus > 201703L
+  "20"
+#elif __cplusplus >= 201703L
+  "17"
+#elif __cplusplus >= 201402L
+  "14"
+#elif __cplusplus >= 201103L
+  "11"
+#else
+  "03"
+#endif
+"]";
+
+const char* info_language_extensions_default = "INFO" ":" "extensions_default["
+/* !defined(_MSC_VER) to exclude Clang's MSVC compatibility mode. */
+#if (defined(__clang__) || defined(__GNUC__)) && !defined(__STRICT_ANSI__) && \
+  !defined(_MSC_VER)
+  "ON"
+#else
+  "OFF"
+#endif
+"]";
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+#ifdef SIMULATE_ID
+  require += info_simulate[argc];
+#endif
+#ifdef SIMULATE_VERSION_MAJOR
+  require += info_simulate_version[argc];
+#endif
+  require += info_language_standard_default[argc];
+  require += info_language_extensions_default[argc];
+  (void)argv;
+  return require;
+}
diff --git a/share/cmake-3.22/Modules/CMakeCUDAInformation.cmake b/share/cmake-3.22/Modules/CMakeCUDAInformation.cmake
new file mode 100644
index 0000000..e9cfed6
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeCUDAInformation.cmake
@@ -0,0 +1,219 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+if(UNIX)
+  set(CMAKE_CUDA_OUTPUT_EXTENSION .o)
+else()
+  set(CMAKE_CUDA_OUTPUT_EXTENSION .obj)
+endif()
+set(CMAKE_INCLUDE_FLAG_CUDA "-I")
+
+# Set implicit links early so compiler-specific modules can use them.
+set(__IMPLICIT_LINKS)
+foreach(dir ${CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES})
+  string(APPEND __IMPLICIT_LINKS " -L\"${dir}\"")
+endforeach()
+foreach(lib ${CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES})
+  if(${lib} MATCHES "/")
+    string(APPEND __IMPLICIT_LINKS " \"${lib}\"")
+  else()
+    string(APPEND __IMPLICIT_LINKS " -l${lib}")
+  endif()
+endforeach()
+
+# Load compiler-specific information.
+if(CMAKE_CUDA_COMPILER_ID)
+  include(Compiler/${CMAKE_CUDA_COMPILER_ID}-CUDA OPTIONAL)
+endif()
+
+# load the system- and compiler specific files
+if(CMAKE_CUDA_COMPILER_ID)
+  # load a hardware specific file, mostly useful for embedded compilers
+  if(CMAKE_SYSTEM_PROCESSOR)
+    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_CUDA_COMPILER_ID}-CUDA-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
+  endif()
+  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_CUDA_COMPILER_ID}-CUDA OPTIONAL)
+endif()
+
+
+# This should be included before the _INIT variables are
+# used to initialize the cache.  Since the rule variables
+# have if blocks on them, users can still define them here.
+# But, it should still be after the platform file so changes can
+# be made to those values.
+
+if(CMAKE_USER_MAKE_RULES_OVERRIDE)
+  # Save the full path of the file so try_compile can use it.
+  include(${CMAKE_USER_MAKE_RULES_OVERRIDE} RESULT_VARIABLE _override)
+  set(CMAKE_USER_MAKE_RULES_OVERRIDE "${_override}")
+endif()
+
+if(CMAKE_USER_MAKE_RULES_OVERRIDE_CUDA)
+  # Save the full path of the file so try_compile can use it.
+  include(${CMAKE_USER_MAKE_RULES_OVERRIDE_CUDA} RESULT_VARIABLE _override)
+  set(CMAKE_USER_MAKE_RULES_OVERRIDE_CUDA "${_override}")
+endif()
+
+
+if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_CUDA_FLAG)
+  set(CMAKE_SHARED_LIBRARY_RUNTIME_CUDA_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG})
+endif()
+
+if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_CUDA_FLAG_SEP)
+  set(CMAKE_SHARED_LIBRARY_RUNTIME_CUDA_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP})
+endif()
+
+if(NOT CMAKE_SHARED_LIBRARY_RPATH_LINK_CUDA_FLAG)
+  set(CMAKE_SHARED_LIBRARY_RPATH_LINK_CUDA_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_EXE_EXPORTS_CUDA_FLAG)
+  set(CMAKE_EXE_EXPORTS_CUDA_FLAG ${CMAKE_EXE_EXPORTS_C_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_SONAME_CUDA_FLAG)
+  set(CMAKE_SHARED_LIBRARY_SONAME_CUDA_FLAG ${CMAKE_SHARED_LIBRARY_SONAME_C_FLAG})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RUNTIME_CUDA_FLAG)
+  set(CMAKE_EXECUTABLE_RUNTIME_CUDA_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_CUDA_FLAG})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RUNTIME_CUDA_FLAG_SEP)
+  set(CMAKE_EXECUTABLE_RUNTIME_CUDA_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_CUDA_FLAG_SEP})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RPATH_LINK_CUDA_FLAG)
+  set(CMAKE_EXECUTABLE_RPATH_LINK_CUDA_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_CUDA_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_LINK_CUDA_WITH_RUNTIME_PATH)
+  set(CMAKE_SHARED_LIBRARY_LINK_CUDA_WITH_RUNTIME_PATH ${CMAKE_SHARED_LIBRARY_LINK_C_WITH_RUNTIME_PATH})
+endif()
+
+
+# for most systems a module is the same as a shared library
+# so unless the variable CMAKE_MODULE_EXISTS is set just
+# copy the values from the LIBRARY variables
+if(NOT CMAKE_MODULE_EXISTS)
+  set(CMAKE_SHARED_MODULE_CUDA_FLAGS ${CMAKE_SHARED_LIBRARY_CUDA_FLAGS})
+  set(CMAKE_SHARED_MODULE_CREATE_CUDA_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_CUDA_FLAGS})
+endif()
+
+if(CMAKE_EXECUTABLE_FORMAT STREQUAL "ELF")
+  if(NOT DEFINED CMAKE_CUDA_LINK_WHAT_YOU_USE_FLAG)
+    set(CMAKE_CUDA_LINK_WHAT_YOU_USE_FLAG "LINKER:--no-as-needed")
+  endif()
+  if(NOT DEFINED CMAKE_LINK_WHAT_YOU_USE_CHECK)
+    set(CMAKE_LINK_WHAT_YOU_USE_CHECK ldd -u -r)
+  endif()
+endif()
+
+# add the flags to the cache based
+# on the initial values computed in the platform/*.cmake files
+# use _INIT variables so that this only happens the first time
+# and you can set these flags in the cmake cache
+set(CMAKE_CUDA_FLAGS_INIT "$ENV{CUDAFLAGS} ${CMAKE_CUDA_FLAGS_INIT}")
+
+cmake_initialize_per_config_variable(CMAKE_CUDA_FLAGS "Flags used by the CUDA compiler")
+
+if(CMAKE_CUDA_STANDARD_LIBRARIES_INIT)
+  set(CMAKE_CUDA_STANDARD_LIBRARIES "${CMAKE_CUDA_STANDARD_LIBRARIES_INIT}"
+    CACHE STRING "Libraries linked by default with all CUDA applications.")
+  mark_as_advanced(CMAKE_CUDA_STANDARD_LIBRARIES)
+endif()
+
+if(NOT CMAKE_CUDA_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_CUDA_COMPILER_LAUNCHER})
+  set(CMAKE_CUDA_COMPILER_LAUNCHER "$ENV{CMAKE_CUDA_COMPILER_LAUNCHER}"
+    CACHE STRING "Compiler launcher for CUDA.")
+endif()
+
+include(CMakeCommonLanguageInclude)
+
+# now define the following rules:
+# CMAKE_CUDA_CREATE_SHARED_LIBRARY
+# CMAKE_CUDA_CREATE_SHARED_MODULE
+# CMAKE_CUDA_COMPILE_WHOLE_COMPILATION
+# CMAKE_CUDA_COMPILE_PTX_COMPILATION
+# CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION
+# CMAKE_CUDA_LINK_EXECUTABLE
+
+# create a shared library
+if(NOT CMAKE_CUDA_CREATE_SHARED_LIBRARY)
+  set(CMAKE_CUDA_CREATE_SHARED_LIBRARY
+      "<CMAKE_CUDA_HOST_LINK_LAUNCHER> <CMAKE_SHARED_LIBRARY_CUDA_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CUDA_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>${__IMPLICIT_LINKS}")
+endif()
+
+# create a shared module copy the shared library rule by default
+if(NOT CMAKE_CUDA_CREATE_SHARED_MODULE)
+  set(CMAKE_CUDA_CREATE_SHARED_MODULE ${CMAKE_CUDA_CREATE_SHARED_LIBRARY})
+endif()
+
+# Create a static archive incrementally for large object file counts.
+if(NOT DEFINED CMAKE_CUDA_ARCHIVE_CREATE)
+  set(CMAKE_CUDA_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
+endif()
+if(NOT DEFINED CMAKE_CUDA_ARCHIVE_APPEND)
+  set(CMAKE_CUDA_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
+endif()
+if(NOT DEFINED CMAKE_CUDA_ARCHIVE_FINISH)
+  set(CMAKE_CUDA_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
+endif()
+
+#Specify how to compile when ptx has been requested
+if(NOT CMAKE_CUDA_COMPILE_PTX_COMPILATION)
+  set(CMAKE_CUDA_COMPILE_PTX_COMPILATION
+    "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} ${_CMAKE_CUDA_PTX_FLAG} <SOURCE> -o <OBJECT>")
+endif()
+
+#Specify how to compile when separable compilation has been requested
+if(NOT CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION)
+  set(CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION
+    "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} ${_CMAKE_CUDA_DEVICE_CODE} <SOURCE> -o <OBJECT>")
+endif()
+
+#Specify how to compile when whole compilation has been requested
+if(NOT CMAKE_CUDA_COMPILE_WHOLE_COMPILATION)
+  set(CMAKE_CUDA_COMPILE_WHOLE_COMPILATION
+    "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} -c <SOURCE> -o <OBJECT>")
+endif()
+
+# compile a cu file into an executable
+if(NOT CMAKE_CUDA_LINK_EXECUTABLE)
+  set(CMAKE_CUDA_LINK_EXECUTABLE
+    "<CMAKE_CUDA_HOST_LINK_LAUNCHER> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>${__IMPLICIT_LINKS}")
+endif()
+
+# Add implicit host link directories that contain device libraries
+# to the device link line.
+set(__IMPLICIT_DLINK_DIRS ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES})
+if(__IMPLICIT_DLINK_DIRS)
+  list(REMOVE_ITEM __IMPLICIT_DLINK_DIRS ${CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES})
+endif()
+set(__IMPLICIT_DLINK_FLAGS)
+foreach(dir ${__IMPLICIT_DLINK_DIRS})
+  if(EXISTS "${dir}/libcurand_static.a")
+    string(APPEND __IMPLICIT_DLINK_FLAGS " -L\"${dir}\"")
+  endif()
+endforeach()
+unset(__IMPLICIT_DLINK_DIRS)
+
+
+#These are used when linking relocatable (dc) cuda code
+if(NOT CMAKE_CUDA_DEVICE_LINK_LIBRARY)
+  set(CMAKE_CUDA_DEVICE_LINK_LIBRARY
+    "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> ${CMAKE_CUDA_COMPILE_OPTIONS_PIC} ${_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS} -shared -dlink <OBJECTS> -o <TARGET> <LINK_LIBRARIES>${__IMPLICIT_DLINK_FLAGS}")
+endif()
+if(NOT CMAKE_CUDA_DEVICE_LINK_EXECUTABLE)
+  set(CMAKE_CUDA_DEVICE_LINK_EXECUTABLE
+    "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> ${CMAKE_CUDA_COMPILE_OPTIONS_PIC} ${_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS} -shared -dlink <OBJECTS> -o <TARGET> <LINK_LIBRARIES>${__IMPLICIT_DLINK_FLAGS}")
+endif()
+
+# Used when device linking is handled by CMake.
+if(NOT CMAKE_CUDA_DEVICE_LINK_COMPILE)
+  set(CMAKE_CUDA_DEVICE_LINK_COMPILE "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <FLAGS> -D__CUDA_INCLUDE_COMPILER_INTERNAL_HEADERS__ -D__NV_EXTRA_INITIALIZATION=\"\" -D__NV_EXTRA_FINALIZATION=\"\" -DREGISTERLINKBINARYFILE=\\\"<REGISTER_FILE>\\\" -DFATBINFILE=\\\"<FATBINARY>\\\" ${_CMAKE_COMPILE_AS_CUDA_FLAG} -c \"${CMAKE_CUDA_COMPILER_TOOLKIT_LIBRARY_ROOT}/bin/crt/link.stub\" -o <OBJECT>")
+endif()
+
+unset(__IMPLICIT_DLINK_FLAGS)
+
+set(CMAKE_CUDA_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in b/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in
new file mode 100644
index 0000000..534e960
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeCXXCompiler.cmake.in
@@ -0,0 +1,83 @@
+set(CMAKE_CXX_COMPILER "@CMAKE_CXX_COMPILER@")
+set(CMAKE_CXX_COMPILER_ARG1 "@CMAKE_CXX_COMPILER_ARG1@")
+set(CMAKE_CXX_COMPILER_ID "@CMAKE_CXX_COMPILER_ID@")
+set(CMAKE_CXX_COMPILER_VERSION "@CMAKE_CXX_COMPILER_VERSION@")
+set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "@CMAKE_CXX_COMPILER_VERSION_INTERNAL@")
+set(CMAKE_CXX_COMPILER_WRAPPER "@CMAKE_CXX_COMPILER_WRAPPER@")
+set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "@CMAKE_CXX_STANDARD_COMPUTED_DEFAULT@")
+set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "@CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT@")
+set(CMAKE_CXX_COMPILE_FEATURES "@CMAKE_CXX_COMPILE_FEATURES@")
+set(CMAKE_CXX98_COMPILE_FEATURES "@CMAKE_CXX98_COMPILE_FEATURES@")
+set(CMAKE_CXX11_COMPILE_FEATURES "@CMAKE_CXX11_COMPILE_FEATURES@")
+set(CMAKE_CXX14_COMPILE_FEATURES "@CMAKE_CXX14_COMPILE_FEATURES@")
+set(CMAKE_CXX17_COMPILE_FEATURES "@CMAKE_CXX17_COMPILE_FEATURES@")
+set(CMAKE_CXX20_COMPILE_FEATURES "@CMAKE_CXX20_COMPILE_FEATURES@")
+set(CMAKE_CXX23_COMPILE_FEATURES "@CMAKE_CXX23_COMPILE_FEATURES@")
+
+set(CMAKE_CXX_PLATFORM_ID "@CMAKE_CXX_PLATFORM_ID@")
+set(CMAKE_CXX_SIMULATE_ID "@CMAKE_CXX_SIMULATE_ID@")
+set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "@CMAKE_CXX_COMPILER_FRONTEND_VARIANT@")
+set(CMAKE_CXX_SIMULATE_VERSION "@CMAKE_CXX_SIMULATE_VERSION@")
+@_SET_CMAKE_CXX_COMPILER_ARCHITECTURE_ID@
+@_SET_CMAKE_CXX_COMPILER_SYSROOT@
+@SET_MSVC_CXX_ARCHITECTURE_ID@
+@SET_CMAKE_XCODE_ARCHS@
+set(CMAKE_AR "@CMAKE_AR@")
+set(CMAKE_CXX_COMPILER_AR "@CMAKE_CXX_COMPILER_AR@")
+set(CMAKE_RANLIB "@CMAKE_RANLIB@")
+set(CMAKE_CXX_COMPILER_RANLIB "@CMAKE_CXX_COMPILER_RANLIB@")
+set(CMAKE_LINKER "@CMAKE_LINKER@")
+set(CMAKE_MT "@CMAKE_MT@")
+set(CMAKE_COMPILER_IS_GNUCXX @CMAKE_COMPILER_IS_GNUCXX@)
+set(CMAKE_CXX_COMPILER_LOADED 1)
+set(CMAKE_CXX_COMPILER_WORKS @CMAKE_CXX_COMPILER_WORKS@)
+set(CMAKE_CXX_ABI_COMPILED @CMAKE_CXX_ABI_COMPILED@)
+
+set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
+
+set(CMAKE_CXX_COMPILER_ID_RUN 1)
+set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm)
+set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
+
+foreach (lang C OBJC OBJCXX)
+  if (CMAKE_${lang}_COMPILER_ID_RUN)
+    foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS)
+      list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension})
+    endforeach()
+  endif()
+endforeach()
+
+set(CMAKE_CXX_LINKER_PREFERENCE 30)
+set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
+
+# Save compiler ABI information.
+set(CMAKE_CXX_SIZEOF_DATA_PTR "@CMAKE_CXX_SIZEOF_DATA_PTR@")
+set(CMAKE_CXX_COMPILER_ABI "@CMAKE_CXX_COMPILER_ABI@")
+set(CMAKE_CXX_BYTE_ORDER "@CMAKE_CXX_BYTE_ORDER@")
+set(CMAKE_CXX_LIBRARY_ARCHITECTURE "@CMAKE_CXX_LIBRARY_ARCHITECTURE@")
+
+if(CMAKE_CXX_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_CXX_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
+endif()
+
+if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "@CMAKE_CXX_LIBRARY_ARCHITECTURE@")
+endif()
+
+set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "@CMAKE_CXX_CL_SHOWINCLUDES_PREFIX@")
+if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
+  set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+@CMAKE_CXX_COMPILER_CUSTOM_CODE@
+@CMAKE_CXX_SYSROOT_FLAG_CODE@
+@CMAKE_CXX_OSX_DEPLOYMENT_TARGET_FLAG_CODE@
+
+set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "@CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES@")
+set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "@CMAKE_CXX_IMPLICIT_LINK_LIBRARIES@")
+set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "@CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES@")
+set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
diff --git a/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp b/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp
new file mode 100644
index 0000000..036b96e
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp
@@ -0,0 +1,18 @@
+#ifndef __cplusplus
+#  error "A C compiler has been selected for C++."
+#endif
+
+#include "CMakeCompilerABI.h"
+
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_sizeof_dptr[argc];
+  require += info_byte_order_big_endian[argc];
+  require += info_byte_order_little_endian[argc];
+#if defined(ABI_ID)
+  require += info_abi[argc];
+#endif
+  (void)argv;
+  return require;
+}
diff --git a/share/cmake-3.22/Modules/CMakeCXXCompilerId.cpp.in b/share/cmake-3.22/Modules/CMakeCXXCompilerId.cpp.in
new file mode 100644
index 0000000..e7a5487
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeCXXCompilerId.cpp.in
@@ -0,0 +1,105 @@
+/* This source file must have a .cpp extension so that all C++ compilers
+   recognize the extension without flags.  Borland does not know .cxx for
+   example.  */
+#ifndef __cplusplus
+# error "A C compiler has been selected for C++."
+#endif
+
+#if !defined(__has_include)
+/* If the compiler does not have __has_include, pretend the answer is
+   always no.  */
+#  define __has_include(x) 0
+#endif
+
+@CMAKE_CXX_COMPILER_ID_CONTENT@
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+#ifdef SIMULATE_ID
+char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
+#endif
+
+#ifdef __QNXNTO__
+char const* qnxnto = "INFO" ":" "qnxnto[]";
+#endif
+
+#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
+char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
+#endif
+
+@CMAKE_CXX_COMPILER_ID_PLATFORM_CONTENT@
+@CMAKE_CXX_COMPILER_ID_ERROR_FOR_TEST@
+
+#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L
+#  if defined(__INTEL_CXX11_MODE__)
+#    if defined(__cpp_aggregate_nsdmi)
+#      define CXX_STD 201402L
+#    else
+#      define CXX_STD 201103L
+#    endif
+#  else
+#    define CXX_STD 199711L
+#  endif
+#elif defined(_MSC_VER) && defined(_MSVC_LANG)
+#  define CXX_STD _MSVC_LANG
+#else
+#  define CXX_STD __cplusplus
+#endif
+
+const char* info_language_standard_default = "INFO" ":" "standard_default["
+#if CXX_STD > 202002L
+  "23"
+#elif CXX_STD > 201703L
+  "20"
+#elif CXX_STD >= 201703L
+  "17"
+#elif CXX_STD >= 201402L
+  "14"
+#elif CXX_STD >= 201103L
+  "11"
+#else
+  "98"
+#endif
+"]";
+
+const char* info_language_extensions_default = "INFO" ":" "extensions_default["
+/* !defined(_MSC_VER) to exclude Clang's MSVC compatibility mode. */
+#if (defined(__clang__) || defined(__GNUC__) ||                               \
+     defined(__TI_COMPILER_VERSION__)) &&                                     \
+  !defined(__STRICT_ANSI__) && !defined(_MSC_VER)
+  "ON"
+#else
+  "OFF"
+#endif
+"]";
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+#ifdef COMPILER_VERSION_INTERNAL
+  require += info_version_internal[argc];
+#endif
+#ifdef SIMULATE_ID
+  require += info_simulate[argc];
+#endif
+#ifdef SIMULATE_VERSION_MAJOR
+  require += info_simulate_version[argc];
+#endif
+#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
+  require += info_cray[argc];
+#endif
+  require += info_language_standard_default[argc];
+  require += info_language_extensions_default[argc];
+  (void)argv;
+  return require;
+}
diff --git a/share/cmake-3.22/Modules/CMakeCXXInformation.cmake b/share/cmake-3.22/Modules/CMakeCXXInformation.cmake
new file mode 100644
index 0000000..53abf37
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeCXXInformation.cmake
@@ -0,0 +1,296 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This file sets the basic flags for the C++ language in CMake.
+# It also loads the available platform file for the system-compiler
+# if it exists.
+# It also loads a system - compiler - processor (or target hardware)
+# specific file, which is mainly useful for crosscompiling and embedded systems.
+
+include(CMakeLanguageInformation)
+
+# some compilers use different extensions (e.g. sdcc uses .rel)
+# so set the extension here first so it can be overridden by the compiler specific file
+if(UNIX)
+  set(CMAKE_CXX_OUTPUT_EXTENSION .o)
+else()
+  set(CMAKE_CXX_OUTPUT_EXTENSION .obj)
+endif()
+
+set(_INCLUDED_FILE 0)
+
+# Load compiler-specific information.
+if(CMAKE_CXX_COMPILER_ID)
+  include(Compiler/${CMAKE_CXX_COMPILER_ID}-CXX OPTIONAL)
+endif()
+
+set(CMAKE_BASE_NAME)
+get_filename_component(CMAKE_BASE_NAME "${CMAKE_CXX_COMPILER}" NAME_WE)
+# since the gnu compiler has several names force g++
+if(CMAKE_COMPILER_IS_GNUCXX)
+  set(CMAKE_BASE_NAME g++)
+endif()
+
+
+# load a hardware specific file, mostly useful for embedded compilers
+if(CMAKE_SYSTEM_PROCESSOR)
+  if(CMAKE_CXX_COMPILER_ID)
+    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_CXX_COMPILER_ID}-CXX-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
+  endif()
+  if (NOT _INCLUDED_FILE)
+    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME}-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
+  endif ()
+endif()
+
+# load the system- and compiler specific files
+if(CMAKE_CXX_COMPILER_ID)
+  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_CXX_COMPILER_ID}-CXX OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
+endif()
+if (NOT _INCLUDED_FILE)
+  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL
+          RESULT_VARIABLE _INCLUDED_FILE)
+endif ()
+
+# load any compiler-wrapper specific information
+if (CMAKE_CXX_COMPILER_WRAPPER)
+  __cmake_include_compiler_wrapper(CXX)
+endif ()
+
+# We specify the compiler information in the system file for some
+# platforms, but this language may not have been enabled when the file
+# was first included.  Include it again to get the language info.
+# Remove this when all compiler info is removed from system files.
+if (NOT _INCLUDED_FILE)
+  include(Platform/${CMAKE_SYSTEM_NAME} OPTIONAL)
+endif ()
+
+if(CMAKE_CXX_SIZEOF_DATA_PTR)
+  foreach(f ${CMAKE_CXX_ABI_FILES})
+    include(${f})
+  endforeach()
+  unset(CMAKE_CXX_ABI_FILES)
+endif()
+
+# This should be included before the _INIT variables are
+# used to initialize the cache.  Since the rule variables
+# have if blocks on them, users can still define them here.
+# But, it should still be after the platform file so changes can
+# be made to those values.
+
+if(CMAKE_USER_MAKE_RULES_OVERRIDE)
+  # Save the full path of the file so try_compile can use it.
+  include(${CMAKE_USER_MAKE_RULES_OVERRIDE} RESULT_VARIABLE _override)
+  set(CMAKE_USER_MAKE_RULES_OVERRIDE "${_override}")
+endif()
+
+if(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX)
+  # Save the full path of the file so try_compile can use it.
+  include(${CMAKE_USER_MAKE_RULES_OVERRIDE_CXX} RESULT_VARIABLE _override)
+  set(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX "${_override}")
+endif()
+
+
+# Create a set of shared library variable specific to C++
+# For 90% of the systems, these are the same flags as the C versions
+# so if these are not set just copy the flags from the c version
+if(NOT CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS)
+  set(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS})
+endif()
+
+if(NOT CMAKE_CXX_COMPILE_OPTIONS_PIC)
+  set(CMAKE_CXX_COMPILE_OPTIONS_PIC ${CMAKE_C_COMPILE_OPTIONS_PIC})
+endif()
+
+if(NOT CMAKE_CXX_COMPILE_OPTIONS_PIE)
+  set(CMAKE_CXX_COMPILE_OPTIONS_PIE ${CMAKE_C_COMPILE_OPTIONS_PIE})
+endif()
+if(NOT CMAKE_CXX_LINK_OPTIONS_PIE)
+  set(CMAKE_CXX_LINK_OPTIONS_PIE ${CMAKE_C_LINK_OPTIONS_PIE})
+endif()
+if(NOT CMAKE_CXX_LINK_OPTIONS_NO_PIE)
+  set(CMAKE_CXX_LINK_OPTIONS_NO_PIE ${CMAKE_C_LINK_OPTIONS_NO_PIE})
+endif()
+
+if(NOT CMAKE_CXX_COMPILE_OPTIONS_DLL)
+  set(CMAKE_CXX_COMPILE_OPTIONS_DLL ${CMAKE_C_COMPILE_OPTIONS_DLL})
+endif()
+
+if(NOT CMAKE_SHARED_LIBRARY_CXX_FLAGS)
+  set(CMAKE_SHARED_LIBRARY_CXX_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS)
+  set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS})
+endif()
+
+if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG)
+  set(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG})
+endif()
+
+if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG_SEP)
+  set(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP})
+endif()
+
+if(NOT CMAKE_SHARED_LIBRARY_RPATH_LINK_CXX_FLAG)
+  set(CMAKE_SHARED_LIBRARY_RPATH_LINK_CXX_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_EXE_EXPORTS_CXX_FLAG)
+  set(CMAKE_EXE_EXPORTS_CXX_FLAG ${CMAKE_EXE_EXPORTS_C_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG)
+  set(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG ${CMAKE_SHARED_LIBRARY_SONAME_C_FLAG})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RUNTIME_CXX_FLAG)
+  set(CMAKE_EXECUTABLE_RUNTIME_CXX_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RUNTIME_CXX_FLAG_SEP)
+  set(CMAKE_EXECUTABLE_RUNTIME_CXX_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG_SEP})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RPATH_LINK_CXX_FLAG)
+  set(CMAKE_EXECUTABLE_RPATH_LINK_CXX_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_CXX_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_LINK_CXX_WITH_RUNTIME_PATH)
+  set(CMAKE_SHARED_LIBRARY_LINK_CXX_WITH_RUNTIME_PATH ${CMAKE_SHARED_LIBRARY_LINK_C_WITH_RUNTIME_PATH})
+endif()
+
+if(NOT CMAKE_INCLUDE_FLAG_CXX)
+  set(CMAKE_INCLUDE_FLAG_CXX ${CMAKE_INCLUDE_FLAG_C})
+endif()
+
+# for most systems a module is the same as a shared library
+# so unless the variable CMAKE_MODULE_EXISTS is set just
+# copy the values from the LIBRARY variables
+if(NOT CMAKE_MODULE_EXISTS)
+  set(CMAKE_SHARED_MODULE_CXX_FLAGS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS})
+  set(CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS})
+endif()
+
+# repeat for modules
+if(NOT CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS)
+  set(CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS ${CMAKE_SHARED_MODULE_CREATE_C_FLAGS})
+endif()
+
+if(NOT CMAKE_SHARED_MODULE_CXX_FLAGS)
+  set(CMAKE_SHARED_MODULE_CXX_FLAGS ${CMAKE_SHARED_MODULE_C_FLAGS})
+endif()
+
+# Initialize CXX link type selection flags from C versions.
+foreach(type SHARED_LIBRARY SHARED_MODULE EXE)
+  if(NOT CMAKE_${type}_LINK_STATIC_CXX_FLAGS)
+    set(CMAKE_${type}_LINK_STATIC_CXX_FLAGS
+      ${CMAKE_${type}_LINK_STATIC_C_FLAGS})
+  endif()
+  if(NOT CMAKE_${type}_LINK_DYNAMIC_CXX_FLAGS)
+    set(CMAKE_${type}_LINK_DYNAMIC_CXX_FLAGS
+      ${CMAKE_${type}_LINK_DYNAMIC_C_FLAGS})
+  endif()
+endforeach()
+
+if(CMAKE_EXECUTABLE_FORMAT STREQUAL "ELF")
+  if(NOT DEFINED CMAKE_CXX_LINK_WHAT_YOU_USE_FLAG)
+    set(CMAKE_CXX_LINK_WHAT_YOU_USE_FLAG "LINKER:--no-as-needed")
+  endif()
+  if(NOT DEFINED CMAKE_LINK_WHAT_YOU_USE_CHECK)
+    set(CMAKE_LINK_WHAT_YOU_USE_CHECK ldd -u -r)
+  endif()
+endif()
+
+# add the flags to the cache based
+# on the initial values computed in the platform/*.cmake files
+# use _INIT variables so that this only happens the first time
+# and you can set these flags in the cmake cache
+set(CMAKE_CXX_FLAGS_INIT "$ENV{CXXFLAGS} ${CMAKE_CXX_FLAGS_INIT}")
+
+cmake_initialize_per_config_variable(CMAKE_CXX_FLAGS "Flags used by the CXX compiler")
+
+if(CMAKE_CXX_STANDARD_LIBRARIES_INIT)
+  set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES_INIT}"
+    CACHE STRING "Libraries linked by default with all C++ applications.")
+  mark_as_advanced(CMAKE_CXX_STANDARD_LIBRARIES)
+endif()
+
+if(NOT CMAKE_CXX_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_CXX_COMPILER_LAUNCHER})
+  set(CMAKE_CXX_COMPILER_LAUNCHER "$ENV{CMAKE_CXX_COMPILER_LAUNCHER}"
+    CACHE STRING "Compiler launcher for CXX.")
+endif()
+
+if(NOT CMAKE_CXX_LINKER_LAUNCHER AND DEFINED ENV{CMAKE_CXX_LINKER_LAUNCHER})
+  set(CMAKE_CXX_LINKER_LAUNCHER "$ENV{CMAKE_CXX_LINKER_LAUNCHER}"
+    CACHE STRING "Linker launcher for CXX.")
+endif()
+
+include(CMakeCommonLanguageInclude)
+
+# now define the following rules:
+# CMAKE_CXX_CREATE_SHARED_LIBRARY
+# CMAKE_CXX_CREATE_SHARED_MODULE
+# CMAKE_CXX_COMPILE_OBJECT
+# CMAKE_CXX_LINK_EXECUTABLE
+
+# variables supplied by the generator at use time
+# <TARGET>
+# <TARGET_BASE> the target without the suffix
+# <OBJECTS>
+# <OBJECT>
+# <LINK_LIBRARIES>
+# <FLAGS>
+# <LINK_FLAGS>
+
+# CXX compiler information
+# <CMAKE_CXX_COMPILER>
+# <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS>
+# <CMAKE_CXX_SHARED_MODULE_CREATE_FLAGS>
+# <CMAKE_CXX_LINK_FLAGS>
+
+# Static library tools
+# <CMAKE_AR>
+# <CMAKE_RANLIB>
+
+
+# create a shared C++ library
+if(NOT CMAKE_CXX_CREATE_SHARED_LIBRARY)
+  set(CMAKE_CXX_CREATE_SHARED_LIBRARY
+      "<CMAKE_CXX_COMPILER> <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
+endif()
+
+# create a c++ shared module copy the shared library rule by default
+if(NOT CMAKE_CXX_CREATE_SHARED_MODULE)
+  set(CMAKE_CXX_CREATE_SHARED_MODULE ${CMAKE_CXX_CREATE_SHARED_LIBRARY})
+endif()
+
+
+# Create a static archive incrementally for large object file counts.
+# If CMAKE_CXX_CREATE_STATIC_LIBRARY is set it will override these.
+if(NOT DEFINED CMAKE_CXX_ARCHIVE_CREATE)
+  set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
+endif()
+if(NOT DEFINED CMAKE_CXX_ARCHIVE_APPEND)
+  set(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
+endif()
+if(NOT DEFINED CMAKE_CXX_ARCHIVE_FINISH)
+  set(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
+endif()
+
+# compile a C++ file into an object file
+if(NOT CMAKE_CXX_COMPILE_OBJECT)
+  set(CMAKE_CXX_COMPILE_OBJECT
+    "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
+endif()
+
+if(NOT CMAKE_CXX_LINK_EXECUTABLE)
+  set(CMAKE_CXX_LINK_EXECUTABLE
+    "<CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
+endif()
+
+mark_as_advanced(
+CMAKE_VERBOSE_MAKEFILE
+)
+
+set(CMAKE_CXX_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.22/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake b/share/cmake-3.22/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake
new file mode 100644
index 0000000..bda1d71
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake
@@ -0,0 +1,37 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# Do NOT include this module directly into any of your code. It is meant as
+# a library for Check*CompilerFlag.cmake modules. It's content may change in
+# any way between releases.
+
+macro (CHECK_COMPILER_FLAG_COMMON_PATTERNS _VAR)
+  set(${_VAR}
+    FAIL_REGEX "[Uu]nrecogni[sz]ed .*option"               # GNU, NAG, Fujitsu
+    FAIL_REGEX "switch .* is no longer supported"          # GNU
+    FAIL_REGEX "unknown .*option"                          # Clang
+    FAIL_REGEX "optimization flag .* not supported"        # Clang
+    FAIL_REGEX "unknown argument ignored"                  # Clang (cl)
+    FAIL_REGEX "ignoring unknown option"                   # MSVC, Intel
+    FAIL_REGEX "warning D9002"                             # MSVC, any lang
+    FAIL_REGEX "option.*not supported"                     # Intel
+    FAIL_REGEX "invalid argument .*option"                 # Intel
+    FAIL_REGEX "ignoring option .*argument required"       # Intel
+    FAIL_REGEX "ignoring option .*argument is of wrong type" # Intel
+    FAIL_REGEX "[Uu]nknown option"                         # HP
+    FAIL_REGEX "[Ww]arning: [Oo]ption"                     # SunPro
+    FAIL_REGEX "command option .* is not recognized"       # XL
+    FAIL_REGEX "command option .* contains an incorrect subargument" # XL
+    FAIL_REGEX "Option .* is not recognized.  Option will be ignored." # XL
+    FAIL_REGEX "not supported in this configuration. ignored"       # AIX
+    FAIL_REGEX "File with unknown suffix passed to linker" # PGI
+    FAIL_REGEX "[Uu]nknown switch"                         # PGI
+    FAIL_REGEX "WARNING: unknown flag:"                    # Open64
+    FAIL_REGEX "Incorrect command line option:"            # Borland
+    FAIL_REGEX "Warning: illegal option"                   # SunStudio 12
+    FAIL_REGEX "[Ww]arning: Invalid suboption"             # Fujitsu
+    FAIL_REGEX "An invalid option .* appears on the command line" # Cray
+    FAIL_REGEX "WARNING: invalid compiler option"          # TI armcl
+  )
+endmacro ()
diff --git a/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake b/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake
rename to share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake
diff --git a/share/cmake-3.22/Modules/CMakeCompilerABI.h b/share/cmake-3.22/Modules/CMakeCompilerABI.h
new file mode 100644
index 0000000..c5ce4dd
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeCompilerABI.h
@@ -0,0 +1,45 @@
+
+/* Size of a pointer-to-data in bytes.  */
+#define SIZEOF_DPTR (sizeof(void*))
+const char info_sizeof_dptr[] = {
+  /* clang-format off */
+  'I', 'N', 'F', 'O', ':', 's', 'i', 'z', 'e', 'o', 'f', '_', 'd', 'p', 't',
+  'r', '[', ('0' + ((SIZEOF_DPTR / 10) % 10)), ('0' + (SIZEOF_DPTR % 10)), ']',
+  '\0'
+  /* clang-format on */
+};
+
+/* Byte order.  Only one of these will have bytes in the right order.  */
+static unsigned short const info_byte_order_big_endian[] = {
+  /* INFO:byte_order string for BIG_ENDIAN */
+  0x494E, 0x464F, 0x3A62, 0x7974, 0x655F, 0x6F72, 0x6465, 0x725B,
+  0x4249, 0x475F, 0x454E, 0x4449, 0x414E, 0x5D00, 0x0000
+};
+static unsigned short const info_byte_order_little_endian[] = {
+  /* INFO:byte_order string for LITTLE_ENDIAN */
+  0x4E49, 0x4F46, 0x623A, 0x7479, 0x5F65, 0x726F, 0x6564, 0x5B72,
+  0x494C, 0x5454, 0x454C, 0x455F, 0x444E, 0x4149, 0x5D4E, 0x0000
+};
+
+/* Application Binary Interface.  */
+
+/* Check for (some) ARM ABIs.
+ * See e.g. http://wiki.debian.org/ArmEabiPort for some information on this. */
+#if defined(__GNU__) && defined(__ELF__) && defined(__ARM_EABI__)
+#  define ABI_ID "ELF ARMEABI"
+#elif defined(__GNU__) && defined(__ELF__) && defined(__ARMEB__)
+#  define ABI_ID "ELF ARM"
+#elif defined(__GNU__) && defined(__ELF__) && defined(__ARMEL__)
+#  define ABI_ID "ELF ARM"
+
+#elif defined(__linux__) && defined(__ELF__) && defined(__amd64__) &&         \
+  defined(__ILP32__)
+#  define ABI_ID "ELF X32"
+
+#elif defined(__ELF__)
+#  define ABI_ID "ELF"
+#endif
+
+#if defined(ABI_ID)
+static char const info_abi[] = "INFO:abi[" ABI_ID "]";
+#endif
diff --git a/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake b/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake
new file mode 100644
index 0000000..e6b3ee3
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeCompilerIdDetection.cmake
@@ -0,0 +1,157 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+function(_readFile file)
+  include(${file})
+  get_filename_component(name ${file} NAME_WE)
+  string(REGEX REPLACE "-.*" "" CompilerId ${name})
+  set(_compiler_id_version_compute_${CompilerId} ${_compiler_id_version_compute} PARENT_SCOPE)
+  set(_compiler_id_simulate_${CompilerId} ${_compiler_id_simulate} PARENT_SCOPE)
+  set(_compiler_id_pp_test_${CompilerId} ${_compiler_id_pp_test} PARENT_SCOPE)
+endfunction()
+
+function(compiler_id_detection outvar lang)
+
+  if (NOT "x${lang}" STREQUAL "xFortran" AND NOT "x${lang}" STREQUAL "xCSharp"
+      AND NOT "x${lang}" STREQUAL "xISPC")
+    file(GLOB lang_files
+      "${CMAKE_ROOT}/Modules/Compiler/*-DetermineCompiler.cmake")
+    set(nonlang CXX)
+    if ("x${lang}" STREQUAL "xCXX")
+      set(nonlang C)
+    endif()
+
+    file(GLOB nonlang_files
+      "${CMAKE_ROOT}/Modules/Compiler/*-${nonlang}-DetermineCompiler.cmake")
+    list(REMOVE_ITEM lang_files ${nonlang_files})
+  endif()
+
+  set(files ${lang_files})
+  if (files)
+    foreach(file ${files})
+      _readFile(${file})
+    endforeach()
+
+    set(options ID_STRING VERSION_STRINGS ID_DEFINE PLATFORM_DEFAULT_COMPILER)
+    set(oneValueArgs PREFIX)
+    cmake_parse_arguments(CID "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${ARGN})
+    if (CID_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unrecognized arguments: \"${CID_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    # Order is relevant here. For example, compilers which pretend to be
+    # GCC must appear before the actual GCC.
+    if ("x${lang}" STREQUAL "xCXX")
+      list(APPEND ordered_compilers
+        Comeau
+      )
+    endif()
+    list(APPEND ordered_compilers
+      Intel
+      IntelLLVM
+      PathScale
+      Embarcadero
+      Borland
+      Watcom
+      OpenWatcom
+      SunPro
+      HP
+      Compaq
+      zOS
+      XLClang
+      XL
+      VisualAge
+      NVHPC
+      PGI
+      Cray
+      TI
+      FujitsuClang
+      Fujitsu
+      GHS
+    )
+    if ("x${lang}" STREQUAL "xC")
+      list(APPEND ordered_compilers
+        TinyCC
+        Bruce
+      )
+    endif()
+    list(APPEND ordered_compilers
+      SCO
+      ARMCC
+      AppleClang
+      ARMClang
+    )
+    list(APPEND ordered_compilers
+      Clang
+      GNU
+      MSVC
+      ADSP
+      IAR
+    )
+    if ("x${lang}" STREQUAL "xC")
+      list(APPEND ordered_compilers
+        SDCC
+      )
+    endif()
+
+    if("x${lang}" STREQUAL "xCUDA")
+      set(ordered_compilers NVIDIA Clang)
+    endif()
+
+    if(CID_ID_DEFINE)
+      foreach(Id ${ordered_compilers})
+        string(APPEND CMAKE_${lang}_COMPILER_ID_CONTENT "# define ${CID_PREFIX}COMPILER_IS_${Id} 0\n")
+      endforeach()
+      # Hard-code definitions for compilers that are no longer supported.
+      string(APPEND CMAKE_${lang}_COMPILER_ID_CONTENT "# define ${CID_PREFIX}COMPILER_IS_MIPSpro 0\n")
+    endif()
+
+    set(pp_if "#if")
+    if (CID_VERSION_STRINGS)
+      string(APPEND CMAKE_${lang}_COMPILER_ID_CONTENT "\n/* Version number components: V=Version, R=Revision, P=Patch
+   Version date components:   YYYY=Year, MM=Month,   DD=Day  */\n")
+    endif()
+
+    foreach(Id ${ordered_compilers})
+      if (NOT _compiler_id_pp_test_${Id})
+        message(FATAL_ERROR "No preprocessor test for \"${Id}\"")
+      endif()
+      set(id_content "${pp_if} ${_compiler_id_pp_test_${Id}}\n")
+      if (CID_ID_STRING)
+        set(PREFIX ${CID_PREFIX})
+        string(CONFIGURE "${_compiler_id_simulate_${Id}}" SIMULATE_BLOCK @ONLY)
+        string(APPEND id_content "# define ${CID_PREFIX}COMPILER_ID \"${Id}\"${SIMULATE_BLOCK}")
+      endif()
+      if (CID_ID_DEFINE)
+        string(APPEND id_content "# undef ${CID_PREFIX}COMPILER_IS_${Id}\n")
+        string(APPEND id_content "# define ${CID_PREFIX}COMPILER_IS_${Id} 1\n")
+      endif()
+      if (CID_VERSION_STRINGS)
+        set(PREFIX ${CID_PREFIX})
+        set(MACRO_DEC DEC)
+        set(MACRO_HEX HEX)
+        string(CONFIGURE "${_compiler_id_version_compute_${Id}}" VERSION_BLOCK @ONLY)
+        string(APPEND id_content "${VERSION_BLOCK}\n")
+      endif()
+      string(APPEND CMAKE_${lang}_COMPILER_ID_CONTENT "\n${id_content}")
+      set(pp_if "#elif")
+    endforeach()
+
+    if (CID_PLATFORM_DEFAULT_COMPILER)
+      set(platform_compiler_detection "
+/* These compilers are either not known or too old to define an
+  identification macro.  Try to identify the platform and guess that
+  it is the native compiler.  */
+#elif defined(__hpux) || defined(__hpua)
+# define ${CID_PREFIX}COMPILER_ID \"HP\"
+
+#else /* unknown compiler */
+# define ${CID_PREFIX}COMPILER_ID \"\"")
+    endif()
+
+    string(APPEND CMAKE_${lang}_COMPILER_ID_CONTENT "\n${platform_compiler_detection}\n#endif")
+  endif()
+
+  set(${outvar} ${CMAKE_${lang}_COMPILER_ID_CONTENT} PARENT_SCOPE)
+endfunction()
diff --git a/share/cmake-3.18/Modules/CMakeConfigurableFile.in b/share/cmake-3.22/Modules/CMakeConfigurableFile.in
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeConfigurableFile.in
rename to share/cmake-3.22/Modules/CMakeConfigurableFile.in
diff --git a/share/cmake-3.22/Modules/CMakeDependentOption.cmake b/share/cmake-3.22/Modules/CMakeDependentOption.cmake
new file mode 100644
index 0000000..b7c478f
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDependentOption.cmake
@@ -0,0 +1,87 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CMakeDependentOption
+--------------------
+
+Macro to provide an option dependent on other options.
+
+This macro presents an option to the user only if a set of other
+conditions are true.
+
+.. command:: cmake_dependent_option
+
+  .. code-block:: cmake
+
+    cmake_dependent_option(<option> "<help_text>" <value> <depends> <force>)
+
+  Makes ``<option>`` available to the user if ``<depends>`` is true. When
+  ``<option>`` is available, the given ``<help_text>`` and initial ``<value>``
+  are used. If the ``<depends>`` condition is not true, ``<option>`` will not be
+  presented and will always have the value given by ``<force>``. Any value set by
+  the user is preserved for when the option is presented again. In case ``<depends>``
+  is a :ref:`semicolon-separated list <CMake Language Lists>`, all elements must
+  be true in order to initialize ``<option>`` with ``<value>``.
+
+Example invocation:
+
+.. code-block:: cmake
+
+  cmake_dependent_option(USE_FOO "Use Foo" ON "USE_BAR;NOT USE_ZOT" OFF)
+
+If ``USE_BAR`` is true and ``USE_ZOT`` is false, this provides an option called
+``USE_FOO`` that defaults to ON. Otherwise, it sets ``USE_FOO`` to OFF and
+hides the option from the user. If the status of ``USE_BAR`` or ``USE_ZOT``
+ever changes, any value for the ``USE_FOO`` option is saved so that when the
+option is re-enabled it retains its old value.
+
+.. versionadded:: 3.22
+
+  Full :ref:`Condition Syntax` is now supported.  See policy :policy:`CMP0127`.
+
+#]=======================================================================]
+
+macro(CMAKE_DEPENDENT_OPTION option doc default depends force)
+  cmake_policy(GET CMP0127 _CDO_CMP0127
+    PARENT_SCOPE # undocumented, do not use outside of CMake
+    )
+  if(${option}_ISSET MATCHES "^${option}_ISSET$")
+    set(${option}_AVAILABLE 1)
+    if("x${_CDO_CMP0127}x" STREQUAL "xNEWx")
+      foreach(d ${depends})
+        cmake_language(EVAL CODE "
+          if (${d})
+          else()
+            set(${option}_AVAILABLE 0)
+          endif()"
+        )
+      endforeach()
+    else()
+      foreach(d ${depends})
+        string(REGEX REPLACE " +" ";" CMAKE_DEPENDENT_OPTION_DEP "${d}")
+        if(${CMAKE_DEPENDENT_OPTION_DEP})
+        else()
+          set(${option}_AVAILABLE 0)
+        endif()
+      endforeach()
+    endif()
+    if(${option}_AVAILABLE)
+      option(${option} "${doc}" "${default}")
+      set(${option} "${${option}}" CACHE BOOL "${doc}" FORCE)
+    else()
+      if(${option} MATCHES "^${option}$")
+      else()
+        set(${option} "${${option}}" CACHE INTERNAL "${doc}")
+      endif()
+      set(${option} ${force})
+    endif()
+  else()
+    set(${option} "${${option}_ISSET}")
+  endif()
+  if("x${_CDO_CMP0127}x" STREQUAL "xx" AND "x${depends}x" MATCHES "[^A-Za-z0-9_; ]")
+    cmake_policy(GET_WARNING CMP0127 _CDO_CMP0127_WARNING)
+    message(AUTHOR_WARNING "${_CDO_CMP0127_WARNING}")
+  endif()
+  unset(_CDO_CMP0127)
+endmacro()
diff --git a/share/cmake-3.18/Modules/CMakeDetermineASM-ATTCompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineASM-ATTCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeDetermineASM-ATTCompiler.cmake
rename to share/cmake-3.22/Modules/CMakeDetermineASM-ATTCompiler.cmake
diff --git a/share/cmake-3.22/Modules/CMakeDetermineASMCompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineASMCompiler.cmake
new file mode 100644
index 0000000..a1814b7
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineASMCompiler.cmake
@@ -0,0 +1,274 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# determine the compiler to use for ASM programs
+
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
+
+if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER)
+  # prefer the environment variable ASM
+  if(NOT $ENV{ASM${ASM_DIALECT}} STREQUAL "")
+    get_filename_component(CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT $ENV{ASM${ASM_DIALECT}} PROGRAM PROGRAM_ARGS CMAKE_ASM${ASM_DIALECT}_FLAGS_ENV_INIT)
+    if(CMAKE_ASM${ASM_DIALECT}_FLAGS_ENV_INIT)
+      set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARG1 "${CMAKE_ASM${ASM_DIALECT}_FLAGS_ENV_INIT}" CACHE STRING "Arguments to ASM${ASM_DIALECT} compiler")
+    endif()
+    if(NOT EXISTS ${CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT})
+      message(FATAL_ERROR "Could not find compiler set in environment variable ASM${ASM_DIALECT}:\n$ENV{ASM${ASM_DIALECT}}.")
+    endif()
+  endif()
+
+  # finally list compilers to try
+  if("ASM${ASM_DIALECT}" STREQUAL "ASM") # the generic assembler support
+    if(NOT CMAKE_ASM_COMPILER_INIT)
+      if(CMAKE_C_COMPILER)
+        set(CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST ${CMAKE_C_COMPILER})
+      elseif(CMAKE_CXX_COMPILER)
+        set(CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST ${CMAKE_CXX_COMPILER})
+      else()
+        # List all default C and CXX compilers
+        set(CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST
+             ${_CMAKE_TOOLCHAIN_PREFIX}cc  ${_CMAKE_TOOLCHAIN_PREFIX}gcc cl bcc xlc
+          CC ${_CMAKE_TOOLCHAIN_PREFIX}c++ ${_CMAKE_TOOLCHAIN_PREFIX}g++ aCC cl bcc xlC)
+      endif()
+    endif()
+  else() # some specific assembler "dialect"
+    if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT  AND NOT CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST)
+      message(FATAL_ERROR "CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT or CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST must be preset !")
+    endif()
+  endif()
+
+  # Find the compiler.
+  _cmake_find_compiler(ASM${ASM_DIALECT})
+
+else()
+  _cmake_find_compiler_path(ASM${ASM_DIALECT})
+endif()
+mark_as_advanced(CMAKE_ASM${ASM_DIALECT}_COMPILER)
+
+if (NOT _CMAKE_TOOLCHAIN_LOCATION)
+  get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_ASM${ASM_DIALECT}_COMPILER}" PATH)
+endif ()
+
+
+if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER_ID)
+
+  # Table of per-vendor compiler id flags with expected output.
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS GNU )
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_GNU "--version")
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_GNU "(GNU assembler)|(GCC)|(Free Software Foundation)")
+
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS Clang )
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_Clang "--version")
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_Clang "(clang version)")
+
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS AppleClang )
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_AppleClang "--version")
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_AppleClang "(Apple LLVM version)")
+
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS ARMClang )
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_ARMClang "--version")
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_ARMClang "armclang")
+
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS HP )
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_HP "-V")
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_HP "HP C")
+
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS Intel )
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_Intel "--version")
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_Intel "(ICC)")
+
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS IntelLLVM )
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_IntelLLVM "--version")
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_IntelLLVM "(Intel[^\n]+oneAPI)")
+
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS SunPro )
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_SunPro "-V")
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_SunPro "Sun C")
+
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS XL )
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_XL "-qversion")
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_XL "XL C")
+
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS MSVC )
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_MSVC "-?")
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_MSVC "Microsoft")
+
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS TI )
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_TI "-h")
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_TI "Texas Instruments")
+
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS IAR)
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_IAR )
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_IAR "IAR Assembler")
+
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS ARMCC)
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_ARMCC )
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_ARMCC "(ARM Compiler)|(ARM Assembler)")
+
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS NASM)
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_NASM "-v")
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_NASM "(NASM version)")
+
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS YASM)
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_YASM "--version")
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_YASM "(yasm)")
+
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS ADSP)
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_ADSP "-version")
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_ADSP "Analog Devices")
+
+  list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS QCC)
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_QCC "-V")
+  set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_QCC "gcc_nto")
+
+  include(CMakeDetermineCompilerId)
+  set(userflags)
+  CMAKE_DETERMINE_COMPILER_ID_VENDOR(ASM${ASM_DIALECT} "${userflags}")
+  set(_variant "")
+  if("x${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}" STREQUAL "xIAR")
+    # primary necessary to detect architecture, so the right archiver and linker can be picked
+    # eg. "IAR Assembler V8.10.1.12857/W32 for ARM" or "IAR Assembler V4.11.1.4666 for Renesas RX"
+    # Cut out identification first, newline handling is a pain
+    string(REGEX MATCH "IAR Assembler[^\r\n]*" _compileid "${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_OUTPUT}")
+    if("${_compileid}" MATCHES "V([0-9]+\\.[0-9]+\\.[0-9]+)")
+      set(CMAKE_ASM${ASM_DIALECT}_COMPILER_VERSION ${CMAKE_MATCH_1})
+    endif()
+    string(REGEX MATCHALL "([A-Za-z0-9-]+)" _all_compileid_matches "${_compileid}")
+    if(_all_compileid_matches)
+      list(GET _all_compileid_matches "-1" CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID)
+    endif()
+  elseif("x${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}" STREQUAL "xClang")
+    # Test whether an MSVC-like command-line option works.
+    execute_process(COMMAND ${CMAKE_ASM${ASM_DIALECT}_COMPILER} -?
+      OUTPUT_VARIABLE _clang_output
+      ERROR_VARIABLE _clang_output
+      RESULT_VARIABLE _clang_result)
+      if(_clang_result EQUAL 0)
+        set(CMAKE_ASM${ASM_DIALECT}_COMPILER_FRONTEND_VARIANT "MSVC")
+        set(CMAKE_ASM${ASM_DIALECT}_SIMULATE_ID MSVC)
+      else()
+        set(CMAKE_ASM${ASM_DIALECT}_COMPILER_FRONTEND_VARIANT "GNU")
+      endif()
+      set(_variant " with ${CMAKE_ASM${ASM_DIALECT}_COMPILER_FRONTEND_VARIANT}-like command-line")
+  endif()
+
+  _cmake_find_compiler_sysroot(ASM${ASM_DIALECT})
+
+  unset(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_OUTPUT)
+  unset(_all_compileid_matches)
+  unset(_compileid)
+  unset(_clang_result)
+  unset(_clang_output)
+endif()
+
+if(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID)
+  if(CMAKE_ASM${ASM_DIALECT}_COMPILER_VERSION)
+    set(_version " ${CMAKE_ASM${ASM_DIALECT}_COMPILER_VERSION}")
+  else()
+    set(_version "")
+  endif()
+  if(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID AND "x${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}" STREQUAL "xIAR")
+    set(_archid " ${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}")
+  else()
+    set(_archid "")
+  endif()
+  message(STATUS "The ASM${ASM_DIALECT} compiler identification is ${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}${_archid}${_version}${_variant}")
+  unset(_archid)
+  unset(_version)
+  unset(_variant)
+else()
+  message(STATUS "The ASM${ASM_DIALECT} compiler identification is unknown")
+endif()
+
+# If we have a gas/as cross compiler, they have usually some prefix, like
+# e.g. powerpc-linux-gas, arm-elf-gas or i586-mingw32msvc-gas , optionally
+# with a 3-component version number at the end
+# The other tools of the toolchain usually have the same prefix
+# NAME_WE cannot be used since then this test will fail for names like
+# "arm-unknown-nto-qnx6.3.0-gas.exe", where BASENAME would be
+# "arm-unknown-nto-qnx6" instead of the correct "arm-unknown-nto-qnx6.3.0-"
+if (NOT _CMAKE_TOOLCHAIN_PREFIX)
+  get_filename_component(COMPILER_BASENAME "${CMAKE_ASM${ASM_DIALECT}_COMPILER}" NAME)
+  if (COMPILER_BASENAME MATCHES "^(.+-)g?as(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
+    set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
+  endif ()
+endif ()
+
+# Now try the C compiler regexp:
+if (NOT _CMAKE_TOOLCHAIN_PREFIX)
+  if (COMPILER_BASENAME MATCHES "^(.+-)g?cc(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
+    set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
+  endif ()
+endif ()
+
+# Finally try the CXX compiler regexp:
+if (NOT _CMAKE_TOOLCHAIN_PREFIX)
+  if (COMPILER_BASENAME MATCHES "^(.+-)[gc]\\+\\+(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
+    set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
+  endif ()
+endif ()
+
+
+set(_CMAKE_PROCESSING_LANGUAGE "ASM")
+include(CMakeFindBinUtils)
+include(Compiler/${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}-FindBinUtils OPTIONAL)
+unset(_CMAKE_PROCESSING_LANGUAGE)
+
+set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ENV_VAR "ASM${ASM_DIALECT}")
+
+if(CMAKE_ASM${ASM_DIALECT}_COMPILER)
+  message(STATUS "Found assembler: ${CMAKE_ASM${ASM_DIALECT}_COMPILER}")
+else()
+  message(STATUS "Didn't find assembler")
+endif()
+
+foreach(_var
+    COMPILER
+    COMPILER_ID
+    COMPILER_ARG1
+    COMPILER_ENV_VAR
+    COMPILER_AR
+    COMPILER_RANLIB
+    COMPILER_VERSION
+    )
+  set(_CMAKE_ASM_${_var} "${CMAKE_ASM${ASM_DIALECT}_${_var}}")
+endforeach()
+
+if(CMAKE_ASM${ASM_DIALECT}_COMPILER_SYSROOT)
+  string(CONCAT _SET_CMAKE_ASM_COMPILER_SYSROOT
+    "set(CMAKE_ASM${ASM_DIALECT}_COMPILER_SYSROOT \"${CMAKE_ASM${ASM_DIALECT}_COMPILER_SYSROOT}\")\n"
+    "set(CMAKE_COMPILER_SYSROOT \"${CMAKE_ASM${ASM_DIALECT}_COMPILER_SYSROOT}\")")
+else()
+  set(_SET_CMAKE_ASM_COMPILER_SYSROOT "")
+endif()
+
+if(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_MATCH)
+  set(_SET_CMAKE_ASM_COMPILER_ID_VENDOR_MATCH
+    "set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_MATCH [==[${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_MATCH}]==])")
+else()
+  set(_SET_CMAKE_ASM_COMPILER_ID_VENDOR_MATCH "")
+endif()
+
+if(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID)
+  set(_SET_CMAKE_ASM_COMPILER_ARCHITECTURE_ID
+    "set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID ${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID})")
+else()
+  set(_SET_CMAKE_ASM_COMPILER_ARCHITECTURE_ID "")
+endif()
+
+# configure variables set in this file for fast reload later on
+configure_file(${CMAKE_ROOT}/Modules/CMakeASMCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeASM${ASM_DIALECT}Compiler.cmake @ONLY)
+
+foreach(_var
+    COMPILER
+    COMPILER_ID
+    COMPILER_ARG1
+    COMPILER_ENV_VAR
+    COMPILER_AR
+    COMPILER_RANLIB
+    COMPILER_VERSION
+    )
+  unset(_CMAKE_ASM_${_var})
+endforeach()
diff --git a/share/cmake-3.18/Modules/CMakeDetermineASM_MASMCompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineASM_MASMCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeDetermineASM_MASMCompiler.cmake
rename to share/cmake-3.22/Modules/CMakeDetermineASM_MASMCompiler.cmake
diff --git a/share/cmake-3.18/Modules/CMakeDetermineASM_NASMCompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineASM_NASMCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeDetermineASM_NASMCompiler.cmake
rename to share/cmake-3.22/Modules/CMakeDetermineASM_NASMCompiler.cmake
diff --git a/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake
new file mode 100644
index 0000000..15eab0f
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineCCompiler.cmake
@@ -0,0 +1,230 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# determine the compiler to use for C programs
+# NOTE, a generator may set CMAKE_C_COMPILER before
+# loading this file to force a compiler.
+# use environment variable CC first if defined by user, next use
+# the cmake variable CMAKE_GENERATOR_CC which can be defined by a generator
+# as a default compiler
+# If the internal cmake variable _CMAKE_TOOLCHAIN_PREFIX is set, this is used
+# as prefix for the tools (e.g. arm-elf-gcc, arm-elf-ar etc.). This works
+# currently with the GNU crosscompilers.
+#
+# Sets the following variables:
+#   CMAKE_C_COMPILER
+#   CMAKE_AR
+#   CMAKE_RANLIB
+#   CMAKE_COMPILER_IS_GNUCC
+#
+# If not already set before, it also sets
+#   _CMAKE_TOOLCHAIN_PREFIX
+
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
+
+# Load system-specific compiler preferences for this language.
+include(Platform/${CMAKE_SYSTEM_NAME}-Determine-C OPTIONAL)
+include(Platform/${CMAKE_SYSTEM_NAME}-C OPTIONAL)
+if(NOT CMAKE_C_COMPILER_NAMES)
+  set(CMAKE_C_COMPILER_NAMES cc)
+endif()
+
+if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
+elseif("${CMAKE_GENERATOR}" MATCHES "Green Hills MULTI")
+elseif("${CMAKE_GENERATOR}" MATCHES "Xcode")
+  set(CMAKE_C_COMPILER_XCODE_TYPE sourcecode.c.c)
+  _cmake_find_compiler_path(C)
+else()
+  if(NOT CMAKE_C_COMPILER)
+    set(CMAKE_C_COMPILER_INIT NOTFOUND)
+
+    # prefer the environment variable CC
+    if(NOT $ENV{CC} STREQUAL "")
+      get_filename_component(CMAKE_C_COMPILER_INIT $ENV{CC} PROGRAM PROGRAM_ARGS CMAKE_C_FLAGS_ENV_INIT)
+      if(CMAKE_C_FLAGS_ENV_INIT)
+        set(CMAKE_C_COMPILER_ARG1 "${CMAKE_C_FLAGS_ENV_INIT}" CACHE STRING "Arguments to C compiler")
+      endif()
+      if(NOT EXISTS ${CMAKE_C_COMPILER_INIT})
+        message(FATAL_ERROR "Could not find compiler set in environment variable CC:\n$ENV{CC}.")
+      endif()
+    endif()
+
+    # next try prefer the compiler specified by the generator
+    if(CMAKE_GENERATOR_CC)
+      if(NOT CMAKE_C_COMPILER_INIT)
+        set(CMAKE_C_COMPILER_INIT ${CMAKE_GENERATOR_CC})
+      endif()
+    endif()
+
+    # finally list compilers to try
+    if(NOT CMAKE_C_COMPILER_INIT)
+      set(CMAKE_C_COMPILER_LIST ${_CMAKE_TOOLCHAIN_PREFIX}cc ${_CMAKE_TOOLCHAIN_PREFIX}gcc cl bcc xlc icx clang)
+    endif()
+
+    _cmake_find_compiler(C)
+
+  else()
+    _cmake_find_compiler_path(C)
+  endif()
+  mark_as_advanced(CMAKE_C_COMPILER)
+
+  # Each entry in this list is a set of extra flags to try
+  # adding to the compile line to see if it helps produce
+  # a valid identification file.
+  set(CMAKE_C_COMPILER_ID_TEST_FLAGS_FIRST)
+  set(CMAKE_C_COMPILER_ID_TEST_FLAGS
+    # Try compiling to an object file only.
+    "-c"
+
+    # Try enabling ANSI mode on HP.
+    "-Aa"
+
+    # Try compiling K&R-compatible code (needed by Bruce C Compiler).
+    "-D__CLASSIC_C__"
+
+    # ARMClang need target options
+    "--target=arm-arm-none-eabi -mcpu=cortex-m3"
+
+    # MSVC needs at least one include directory for __has_include to function,
+    # but custom toolchains may run MSVC with no INCLUDE env var and no -I flags.
+    # Also avoid linking so this works with no LIB env var.
+    "-c -I__does_not_exist__"
+    )
+endif()
+if(CMAKE_C_COMPILER_TARGET)
+  set(CMAKE_C_COMPILER_ID_TEST_FLAGS_FIRST "-c --target=${CMAKE_C_COMPILER_TARGET}")
+endif()
+# Build a small source file to identify the compiler.
+if(NOT CMAKE_C_COMPILER_ID_RUN)
+  set(CMAKE_C_COMPILER_ID_RUN 1)
+
+  # Try to identify the compiler.
+  set(CMAKE_C_COMPILER_ID)
+  set(CMAKE_C_PLATFORM_ID)
+  file(READ ${CMAKE_ROOT}/Modules/CMakePlatformId.h.in
+    CMAKE_C_COMPILER_ID_PLATFORM_CONTENT)
+
+  # The IAR compiler produces weird output.
+  # See https://gitlab.kitware.com/cmake/cmake/-/issues/10176#note_153591
+  list(APPEND CMAKE_C_COMPILER_ID_VENDORS IAR)
+  set(CMAKE_C_COMPILER_ID_VENDOR_FLAGS_IAR )
+  set(CMAKE_C_COMPILER_ID_VENDOR_REGEX_IAR "IAR .+ Compiler")
+
+  # Match the link line from xcodebuild output of the form
+  #  Ld ...
+  #      ...
+  #      /path/to/cc ...CompilerIdC/...
+  # to extract the compiler front-end for the language.
+  set(CMAKE_C_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdC/(\\./)?(CompilerIdC.(framework|xctest|build/[^ \t\r\n]+)/)?CompilerIdC[ \t\n\\\"]")
+  set(CMAKE_C_COMPILER_ID_TOOL_MATCH_INDEX 2)
+
+  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
+  CMAKE_DETERMINE_COMPILER_ID(C CFLAGS CMakeCCompilerId.c)
+
+  _cmake_find_compiler_sysroot(C)
+
+  # Set old compiler and platform id variables.
+  if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
+    set(CMAKE_COMPILER_IS_GNUCC 1)
+  endif()
+else()
+  if(NOT DEFINED CMAKE_C_COMPILER_FRONTEND_VARIANT)
+    # Some toolchain files set our internal CMAKE_C_COMPILER_ID_RUN
+    # variable but are not aware of CMAKE_C_COMPILER_FRONTEND_VARIANT.
+    # They pre-date our support for the GNU-like variant targeting the
+    # MSVC ABI so we do not consider that here.
+    if(CMAKE_C_COMPILER_ID STREQUAL "Clang"
+      OR "x${CMAKE_C_COMPILER_ID}" STREQUAL "xIntelLLVM")
+      if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
+        set(CMAKE_C_COMPILER_FRONTEND_VARIANT "MSVC")
+      else()
+        set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+      endif()
+    else()
+      set(CMAKE_C_COMPILER_FRONTEND_VARIANT "")
+    endif()
+  endif()
+endif()
+
+if (NOT _CMAKE_TOOLCHAIN_LOCATION)
+  get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_C_COMPILER}" PATH)
+endif ()
+
+# If we have a gcc cross compiler, they have usually some prefix, like
+# e.g. powerpc-linux-gcc, arm-elf-gcc or i586-mingw32msvc-gcc, optionally
+# with a 3-component version number at the end (e.g. arm-eabi-gcc-4.5.2).
+# The other tools of the toolchain usually have the same prefix
+# NAME_WE cannot be used since then this test will fail for names like
+# "arm-unknown-nto-qnx6.3.0-gcc.exe", where BASENAME would be
+# "arm-unknown-nto-qnx6" instead of the correct "arm-unknown-nto-qnx6.3.0-"
+if (NOT _CMAKE_TOOLCHAIN_PREFIX)
+
+  if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang|QCC")
+    get_filename_component(COMPILER_BASENAME "${CMAKE_C_COMPILER}" NAME)
+    if (COMPILER_BASENAME MATCHES "^(.+-)?(clang|g?cc)(-cl)?(-[0-9]+(\\.[0-9]+)*)?(-[^.]+)?(\\.exe)?$")
+      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
+      set(_CMAKE_TOOLCHAIN_SUFFIX ${CMAKE_MATCH_4})
+      set(_CMAKE_COMPILER_SUFFIX ${CMAKE_MATCH_6})
+    elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
+      if(CMAKE_C_COMPILER_TARGET)
+        set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_C_COMPILER_TARGET}-)
+      endif()
+    elseif(COMPILER_BASENAME MATCHES "qcc(\\.exe)?$")
+      if(CMAKE_C_COMPILER_TARGET MATCHES "gcc_nto([a-z0-9]+_[0-9]+|[^_le]+)(le)?")
+        set(_CMAKE_TOOLCHAIN_PREFIX nto${CMAKE_MATCH_1}-)
+      endif()
+    endif ()
+
+    # if "llvm-" is part of the prefix, remove it, since llvm doesn't have its own binutils
+    # but uses the regular ar, objcopy, etc. (instead of llvm-objcopy etc.)
+    if ("${_CMAKE_TOOLCHAIN_PREFIX}" MATCHES "(.+-)?llvm-$")
+      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
+    endif ()
+  elseif(CMAKE_C_COMPILER_ID MATCHES "TI")
+    # TI compilers are named e.g. cl6x, cl470 or armcl.exe
+    get_filename_component(COMPILER_BASENAME "${CMAKE_C_COMPILER}" NAME)
+    if (COMPILER_BASENAME MATCHES "^(.+)?cl([^.]+)?(\\.exe)?$")
+      set(_CMAKE_TOOLCHAIN_PREFIX "${CMAKE_MATCH_1}")
+      set(_CMAKE_TOOLCHAIN_SUFFIX "${CMAKE_MATCH_2}")
+    endif ()
+  endif()
+
+endif ()
+
+set(_CMAKE_PROCESSING_LANGUAGE "C")
+include(CMakeFindBinUtils)
+include(Compiler/${CMAKE_C_COMPILER_ID}-FindBinUtils OPTIONAL)
+unset(_CMAKE_PROCESSING_LANGUAGE)
+
+if(CMAKE_C_COMPILER_SYSROOT)
+  string(CONCAT _SET_CMAKE_C_COMPILER_SYSROOT
+    "set(CMAKE_C_COMPILER_SYSROOT \"${CMAKE_C_COMPILER_SYSROOT}\")\n"
+    "set(CMAKE_COMPILER_SYSROOT \"${CMAKE_C_COMPILER_SYSROOT}\")")
+else()
+  set(_SET_CMAKE_C_COMPILER_SYSROOT "")
+endif()
+
+if(CMAKE_C_COMPILER_ARCHITECTURE_ID)
+  set(_SET_CMAKE_C_COMPILER_ARCHITECTURE_ID
+    "set(CMAKE_C_COMPILER_ARCHITECTURE_ID ${CMAKE_C_COMPILER_ARCHITECTURE_ID})")
+else()
+  set(_SET_CMAKE_C_COMPILER_ARCHITECTURE_ID "")
+endif()
+
+if(MSVC_C_ARCHITECTURE_ID)
+  set(SET_MSVC_C_ARCHITECTURE_ID
+    "set(MSVC_C_ARCHITECTURE_ID ${MSVC_C_ARCHITECTURE_ID})")
+endif()
+
+if(CMAKE_C_XCODE_ARCHS)
+  set(SET_CMAKE_XCODE_ARCHS
+    "set(CMAKE_XCODE_ARCHS \"${CMAKE_C_XCODE_ARCHS}\")")
+endif()
+
+# configure variables set in this file for fast reload later on
+configure_file(${CMAKE_ROOT}/Modules/CMakeCCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeCCompiler.cmake
+  @ONLY
+  )
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
diff --git a/share/cmake-3.18/Modules/CMakeDetermineCSharpCompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineCSharpCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeDetermineCSharpCompiler.cmake
rename to share/cmake-3.22/Modules/CMakeDetermineCSharpCompiler.cmake
diff --git a/share/cmake-3.22/Modules/CMakeDetermineCUDACompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineCUDACompiler.cmake
new file mode 100644
index 0000000..d06315e
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineCUDACompiler.cmake
@@ -0,0 +1,634 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
+include(${CMAKE_ROOT}/Modules/CMakeParseImplicitLinkInfo.cmake)
+
+if( NOT ( ("${CMAKE_GENERATOR}" MATCHES "Make") OR
+          ("${CMAKE_GENERATOR}" MATCHES "Ninja") OR
+          ("${CMAKE_GENERATOR}" MATCHES "Visual Studio (1|[9][0-9])") ) )
+  message(FATAL_ERROR "CUDA language not currently supported by \"${CMAKE_GENERATOR}\" generator")
+endif()
+
+if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
+  if(DEFINED ENV{CUDAHOSTCXX} OR DEFINED CMAKE_CUDA_HOST_COMPILER)
+    message(WARNING "Visual Studio does not support specifying CUDAHOSTCXX or CMAKE_CUDA_HOST_COMPILER. Using the C++ compiler provided by Visual Studio.")
+  endif()
+else()
+  if(NOT CMAKE_CUDA_COMPILER)
+    set(CMAKE_CUDA_COMPILER_INIT NOTFOUND)
+
+      # prefer the environment variable CUDACXX
+      if(NOT $ENV{CUDACXX} STREQUAL "")
+        get_filename_component(CMAKE_CUDA_COMPILER_INIT $ENV{CUDACXX} PROGRAM PROGRAM_ARGS CMAKE_CUDA_FLAGS_ENV_INIT)
+        if(CMAKE_CUDA_FLAGS_ENV_INIT)
+          set(CMAKE_CUDA_COMPILER_ARG1 "${CMAKE_CUDA_FLAGS_ENV_INIT}" CACHE STRING "Arguments to CXX compiler")
+        endif()
+        if(NOT EXISTS ${CMAKE_CUDA_COMPILER_INIT})
+          message(FATAL_ERROR "Could not find compiler set in environment variable CUDACXX:\n$ENV{CUDACXX}.\n${CMAKE_CUDA_COMPILER_INIT}")
+        endif()
+      endif()
+
+    # finally list compilers to try
+    if(NOT CMAKE_CUDA_COMPILER_INIT)
+      set(CMAKE_CUDA_COMPILER_LIST nvcc)
+    endif()
+
+    set(_CMAKE_CUDA_COMPILER_PATHS "$ENV{CUDA_PATH}/bin")
+    _cmake_find_compiler(CUDA)
+    unset(_CMAKE_CUDA_COMPILER_PATHS)
+  else()
+    _cmake_find_compiler_path(CUDA)
+  endif()
+
+  mark_as_advanced(CMAKE_CUDA_COMPILER)
+
+  #Allow the user to specify a host compiler except for Visual Studio
+  if(NOT $ENV{CUDAHOSTCXX} STREQUAL "")
+    get_filename_component(CMAKE_CUDA_HOST_COMPILER $ENV{CUDAHOSTCXX} PROGRAM)
+    if(NOT EXISTS ${CMAKE_CUDA_HOST_COMPILER})
+      message(FATAL_ERROR "Could not find compiler set in environment variable CUDAHOSTCXX:\n$ENV{CUDAHOSTCXX}.\n${CMAKE_CUDA_HOST_COMPILER}")
+    endif()
+  endif()
+endif()
+
+if(NOT "$ENV{CUDAARCHS}" STREQUAL "")
+  set(CMAKE_CUDA_ARCHITECTURES "$ENV{CUDAARCHS}" CACHE STRING "CUDA architectures")
+endif()
+
+# Build a small source file to identify the compiler.
+if(NOT CMAKE_CUDA_COMPILER_ID_RUN)
+  set(CMAKE_CUDA_COMPILER_ID_RUN 1)
+
+  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
+
+  if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
+    # We will not know CMAKE_CUDA_COMPILER until the main compiler id step
+    # below extracts it, but we do know that the compiler id will be NVIDIA.
+    set(CMAKE_CUDA_COMPILER_ID "NVIDIA")
+  else()
+    # We determine the vendor to help with find the toolkit and use the right flags for detection right away.
+    # The main compiler identification is still needed below to extract other information.
+    list(APPEND CMAKE_CUDA_COMPILER_ID_VENDORS NVIDIA Clang)
+    set(CMAKE_CUDA_COMPILER_ID_VENDOR_REGEX_NVIDIA "nvcc: NVIDIA \\(R\\) Cuda compiler driver")
+    set(CMAKE_CUDA_COMPILER_ID_VENDOR_REGEX_Clang "(clang version)")
+    CMAKE_DETERMINE_COMPILER_ID_VENDOR(CUDA "--version")
+
+    if(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang" AND WIN32)
+      message(FATAL_ERROR "Clang with CUDA is not yet supported on Windows. See CMake issue #20776.")
+    endif()
+
+    # Find the CUDA toolkit. We store the CMAKE_CUDA_COMPILER_TOOLKIT_ROOT and CMAKE_CUDA_COMPILER_LIBRARY_ROOT
+    # in CMakeCUDACompiler.cmake, so FindCUDAToolkit can avoid searching on future runs and the toolkit stays the same.
+    # This is very similar to FindCUDAToolkit, but somewhat simplified since we can issue fatal errors
+    # if we fail to find things we need and we don't need to account for searching the libraries.
+
+    # For NVCC we can easily deduce the SDK binary directory from the compiler path.
+    if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
+      set(_CUDA_NVCC_EXECUTABLE "${CMAKE_CUDA_COMPILER}")
+    else()
+      # Search using CUDAToolkit_ROOT and then CUDA_PATH for equivalence with FindCUDAToolkit.
+      # In FindCUDAToolkit CUDAToolkit_ROOT is searched automatically due to being in a find_package().
+      # First we search candidate non-default paths to give them priority.
+      find_program(_CUDA_NVCC_EXECUTABLE
+        NAMES nvcc nvcc.exe
+        PATHS ${CUDAToolkit_ROOT}
+        ENV CUDAToolkit_ROOT
+        ENV CUDA_PATH
+        PATH_SUFFIXES bin
+        NO_DEFAULT_PATH
+      )
+
+      # If we didn't find NVCC, then try the default paths.
+      find_program(_CUDA_NVCC_EXECUTABLE
+        NAMES nvcc nvcc.exe
+        PATH_SUFFIXES bin
+      )
+
+      # If the user specified CUDAToolkit_ROOT but nvcc could not be found, this is an error.
+      if(NOT _CUDA_NVCC_EXECUTABLE AND (DEFINED CUDAToolkit_ROOT OR DEFINED ENV{CUDAToolkit_ROOT}))
+        set(fail_base "Could not find nvcc executable in path specified by")
+
+        if(DEFINED CUDAToolkit_ROOT)
+          message(FATAL_ERROR "${fail_base} CUDAToolkit_ROOT=${CUDAToolkit_ROOT}")
+        elseif(DEFINED ENV{CUDAToolkit_ROOT})
+          message(FATAL_ERROR "${fail_base} environment variable CUDAToolkit_ROOT=$ENV{CUDAToolkit_ROOT}")
+        endif()
+      endif()
+
+      # CUDAToolkit_ROOT cmake/env variable not specified, try platform defaults.
+      #
+      # - Linux: /usr/local/cuda-X.Y
+      # - macOS: /Developer/NVIDIA/CUDA-X.Y
+      # - Windows: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y
+      #
+      # We will also search the default symlink location /usr/local/cuda first since
+      # if CUDAToolkit_ROOT is not specified, it is assumed that the symlinked
+      # directory is the desired location.
+      if(NOT _CUDA_NVCC_EXECUTABLE)
+        if(UNIX)
+          if(NOT APPLE)
+            set(platform_base "/usr/local/cuda-")
+          else()
+            set(platform_base "/Developer/NVIDIA/CUDA-")
+          endif()
+        else()
+          set(platform_base "C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v")
+        endif()
+
+        # Build out a descending list of possible cuda installations, e.g.
+        file(GLOB possible_paths "${platform_base}*")
+        # Iterate the glob results and create a descending list.
+        set(versions)
+        foreach(p ${possible_paths})
+          # Extract version number from end of string
+          string(REGEX MATCH "[0-9][0-9]?\\.[0-9]$" p_version ${p})
+          if(IS_DIRECTORY ${p} AND p_version)
+            list(APPEND versions ${p_version})
+          endif()
+        endforeach()
+
+        # Sort numerically in descending order, so we try the newest versions first.
+        list(SORT versions COMPARE NATURAL ORDER DESCENDING)
+
+        # With a descending list of versions, populate possible paths to search.
+        set(search_paths)
+        foreach(v ${versions})
+          list(APPEND search_paths "${platform_base}${v}")
+        endforeach()
+
+        # Force the global default /usr/local/cuda to the front on Unix.
+        if(UNIX)
+          list(INSERT search_paths 0 "/usr/local/cuda")
+        endif()
+
+        # Now search for nvcc again using the platform default search paths.
+        find_program(_CUDA_NVCC_EXECUTABLE
+          NAMES nvcc nvcc.exe
+          PATHS ${search_paths}
+          PATH_SUFFIXES bin
+        )
+
+        # We are done with these variables now, cleanup.
+        unset(platform_base)
+        unset(possible_paths)
+        unset(versions)
+        unset(search_paths)
+
+        if(NOT _CUDA_NVCC_EXECUTABLE)
+          message(FATAL_ERROR "Failed to find nvcc.\nCompiler ${CMAKE_CUDA_COMPILER_ID} requires the CUDA toolkit. Please set the CUDAToolkit_ROOT variable.")
+        endif()
+      endif()
+    endif()
+
+    # Given that NVCC can be provided by multiple different sources (NVIDIA HPC SDK, CUDA Toolkit, distro)
+    # each of which has a different layout, we need to extract the CUDA toolkit root from the compiler
+    # itself, allowing us to support numerous different scattered toolkit layouts
+    execute_process(COMMAND ${_CUDA_NVCC_EXECUTABLE} "-v" "__cmake_determine_cuda"
+      OUTPUT_VARIABLE _CUDA_NVCC_OUT ERROR_VARIABLE _CUDA_NVCC_OUT)
+    if(_CUDA_NVCC_OUT MATCHES "\\#\\$ TOP=([^\r\n]*)")
+      get_filename_component(CMAKE_CUDA_COMPILER_TOOLKIT_ROOT "${CMAKE_MATCH_1}" ABSOLUTE)
+    else()
+      get_filename_component(CMAKE_CUDA_COMPILER_TOOLKIT_ROOT "${_CUDA_NVCC_EXECUTABLE}" DIRECTORY)
+      get_filename_component(CMAKE_CUDA_COMPILER_TOOLKIT_ROOT "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}" DIRECTORY)
+    endif()
+
+    if(_CUDA_NVCC_OUT MATCHES "\\#\\$ NVVMIR_LIBRARY_DIR=([^\r\n]*)")
+      get_filename_component(_CUDA_NVVMIR_LIBRARY_DIR "${CMAKE_MATCH_1}" ABSOLUTE)
+
+      #We require the path to end in `/nvvm/libdevice'
+      if(_CUDA_NVVMIR_LIBRARY_DIR MATCHES "nvvm/libdevice$")
+        get_filename_component(_CUDA_NVVMIR_LIBRARY_DIR "${_CUDA_NVVMIR_LIBRARY_DIR}/../.." ABSOLUTE)
+        set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT_FROM_NVVMIR_LIBRARY_DIR "${_CUDA_NVVMIR_LIBRARY_DIR}")
+      endif()
+
+      unset(_CUDA_NVVMIR_LIBRARY_DIR)
+      unset(_cuda_nvvmir_dir_name)
+    endif()
+    unset(_CUDA_NVCC_OUT)
+
+    set(CMAKE_CUDA_DEVICE_LINKER "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}/bin/nvlink${CMAKE_EXECUTABLE_SUFFIX}")
+    set(CMAKE_CUDA_FATBINARY "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}/bin/fatbinary${CMAKE_EXECUTABLE_SUFFIX}")
+
+    # In a non-scattered installation the following are equivalent to CMAKE_CUDA_COMPILER_TOOLKIT_ROOT.
+    # We first check for a non-scattered installation to prefer it over a scattered installation.
+
+    # CMAKE_CUDA_COMPILER_LIBRARY_ROOT contains the device library.
+    if(DEFINED CMAKE_CUDA_COMPILER_LIBRARY_ROOT_FROM_NVVMIR_LIBRARY_DIR)
+      set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT "${CMAKE_CUDA_COMPILER_LIBRARY_ROOT_FROM_NVVMIR_LIBRARY_DIR}")
+    elseif(EXISTS "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}/nvvm/libdevice")
+      set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}")
+    elseif(CMAKE_SYSROOT_LINK AND EXISTS "${CMAKE_SYSROOT_LINK}/usr/lib/cuda/nvvm/libdevice")
+      set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT "${CMAKE_SYSROOT_LINK}/usr/lib/cuda")
+    elseif(EXISTS "${CMAKE_SYSROOT}/usr/lib/cuda/nvvm/libdevice")
+      set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT "${CMAKE_SYSROOT}/usr/lib/cuda")
+    else()
+      message(FATAL_ERROR "Couldn't find CUDA library root.")
+    endif()
+    unset(CMAKE_CUDA_COMPILER_LIBRARY_ROOT_FROM_NVVMIR_LIBRARY_DIR)
+
+    # CMAKE_CUDA_COMPILER_TOOLKIT_LIBRARY_ROOT contains the linking stubs necessary for device linking and other low-level library files.
+    if(CMAKE_SYSROOT_LINK AND EXISTS "${CMAKE_SYSROOT_LINK}/usr/lib/nvidia-cuda-toolkit/bin/crt/link.stub")
+      set(CMAKE_CUDA_COMPILER_TOOLKIT_LIBRARY_ROOT "${CMAKE_SYSROOT_LINK}/usr/lib/nvidia-cuda-toolkit")
+    elseif(EXISTS "${CMAKE_SYSROOT}/usr/lib/nvidia-cuda-toolkit/bin/crt/link.stub")
+      set(CMAKE_CUDA_COMPILER_TOOLKIT_LIBRARY_ROOT "${CMAKE_SYSROOT}/usr/lib/nvidia-cuda-toolkit")
+    else()
+      set(CMAKE_CUDA_COMPILER_TOOLKIT_LIBRARY_ROOT "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}")
+    endif()
+  endif()
+
+  set(CMAKE_CUDA_COMPILER_ID_FLAGS_ALWAYS "-v")
+
+  if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
+    set(nvcc_test_flags "--keep --keep-dir tmp")
+    if(CMAKE_CUDA_HOST_COMPILER)
+      string(APPEND nvcc_test_flags " -ccbin=\"${CMAKE_CUDA_HOST_COMPILER}\"")
+
+      # If the user has specified a host compiler we should fail instead of trying without.
+      # Succeeding detection without may result in confusing errors later on, see #21076.
+      set(CMAKE_CUDA_COMPILER_ID_REQUIRE_SUCCESS ON)
+    endif()
+  elseif(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang")
+    set(clang_test_flags "--cuda-path=\"${CMAKE_CUDA_COMPILER_LIBRARY_ROOT}\"")
+    if(CMAKE_CROSSCOMPILING)
+      # Need to pass the host target and include directories if we're crosscompiling.
+      string(APPEND clang_test_flags " --sysroot=\"${CMAKE_SYSROOT}\" --target=${CMAKE_CUDA_COMPILER_TARGET}")
+    endif()
+  endif()
+
+  # Append user-specified architectures.
+  if(CMAKE_CUDA_ARCHITECTURES)
+    foreach(arch ${CMAKE_CUDA_ARCHITECTURES})
+      # Strip specifiers as PTX vs binary doesn't matter.
+      string(REGEX MATCH "[0-9]+" arch_name "${arch}")
+      string(APPEND clang_test_flags " --cuda-gpu-arch=sm_${arch_name}")
+      string(APPEND nvcc_test_flags " -gencode=arch=compute_${arch_name},code=sm_${arch_name}")
+      list(APPEND tested_architectures "${arch_name}")
+    endforeach()
+
+    # If the user has specified architectures we'll want to fail during compiler detection if they don't work.
+    set(CMAKE_CUDA_COMPILER_ID_REQUIRE_SUCCESS ON)
+  endif()
+
+  if(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang")
+    if(NOT CMAKE_CUDA_ARCHITECTURES)
+      # Clang doesn't automatically select an architecture supported by the SDK.
+      # Try in reverse order of deprecation with the most recent at front (i.e. the most likely to work for new setups).
+      foreach(arch "20" "30" "52")
+        list(APPEND CMAKE_CUDA_COMPILER_ID_TEST_FLAGS_FIRST "${clang_test_flags} --cuda-gpu-arch=sm_${arch}")
+      endforeach()
+    endif()
+
+    # If the user specified CMAKE_CUDA_ARCHITECTURES this will include all the architecture flags.
+    # Otherwise this won't include any architecture flags and we'll fallback to Clang's defaults.
+    list(APPEND CMAKE_CUDA_COMPILER_ID_TEST_FLAGS_FIRST "${clang_test_flags}")
+  elseif(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
+    list(APPEND CMAKE_CUDA_COMPILER_ID_TEST_FLAGS_FIRST "${nvcc_test_flags}")
+  endif()
+
+  # We perform compiler identification for a second time to extract implicit linking info and host compiler for NVCC.
+  # We also use it to verify that CMAKE_CUDA_ARCHITECTURES and additionally on Clang that CUDA toolkit path works.
+  # The latter could be done during compiler testing in the future to avoid doing this for Clang.
+  # We need to unset the compiler ID otherwise CMAKE_DETERMINE_COMPILER_ID() doesn't work.
+  set(CMAKE_CUDA_COMPILER_ID)
+  set(CMAKE_CUDA_PLATFORM_ID)
+  file(READ ${CMAKE_ROOT}/Modules/CMakePlatformId.h.in
+    CMAKE_CUDA_COMPILER_ID_PLATFORM_CONTENT)
+
+  CMAKE_DETERMINE_COMPILER_ID(CUDA CUDAFLAGS CMakeCUDACompilerId.cu)
+
+  if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
+    # Now that we have the path to nvcc, we can compute the toolkit root.
+    get_filename_component(CMAKE_CUDA_COMPILER_TOOLKIT_ROOT "${CMAKE_CUDA_COMPILER}" DIRECTORY)
+    get_filename_component(CMAKE_CUDA_COMPILER_TOOLKIT_ROOT "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}" DIRECTORY)
+    set(CMAKE_CUDA_COMPILER_LIBRARY_ROOT "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}")
+  endif()
+
+  _cmake_find_compiler_sysroot(CUDA)
+endif()
+
+set(_CMAKE_PROCESSING_LANGUAGE "CUDA")
+include(CMakeFindBinUtils)
+include(Compiler/${CMAKE_CUDA_COMPILER_ID}-FindBinUtils OPTIONAL)
+unset(_CMAKE_PROCESSING_LANGUAGE)
+
+if(MSVC_CUDA_ARCHITECTURE_ID)
+  set(SET_MSVC_CUDA_ARCHITECTURE_ID
+    "set(MSVC_CUDA_ARCHITECTURE_ID ${MSVC_CUDA_ARCHITECTURE_ID})")
+endif()
+
+if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
+  set(CMAKE_CUDA_HOST_LINK_LAUNCHER "${CMAKE_LINKER}")
+  set(CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES "")
+  set(CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES "")
+  set(CMAKE_CUDA_HOST_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
+
+  # We do not currently detect CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES but we
+  # do need to detect CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT from the compiler by
+  # looking at which cudart library exists in the implicit link libraries passed
+  # to the host linker.
+  if(CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT MATCHES "link\\.exe [^\n]*cudart_static\\.lib")
+    set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "STATIC")
+  elseif(CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT MATCHES "link\\.exe [^\n]*cudart\\.lib")
+    set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "SHARED")
+  else()
+    set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "NONE")
+  endif()
+  set(_SET_CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT
+    "set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT \"${CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT}\")")
+elseif(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang")
+  if(NOT CMAKE_CUDA_ARCHITECTURES)
+    # Find the architecture that we successfully compiled using and set it as the default.
+    string(REGEX MATCH "-target-cpu sm_([0-9]+)" dont_care "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
+    set(detected_architecture "${CMAKE_MATCH_1}")
+  else()
+    string(REGEX MATCHALL "-target-cpu sm_([0-9]+)" target_cpus "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
+
+    foreach(cpu ${target_cpus})
+      string(REGEX MATCH "-target-cpu sm_([0-9]+)" dont_care "${cpu}")
+      list(APPEND architectures "${CMAKE_MATCH_1}")
+    endforeach()
+  endif()
+
+  # Find target directory when crosscompiling.
+  if(CMAKE_CROSSCOMPILING)
+    if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a")
+      # Support for NVPACK
+      set(_CUDA_TARGET_NAME "armv7-linux-androideabi")
+    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
+      set(_CUDA_TARGET_NAME "armv7-linux-gnueabihf")
+    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
+      if(ANDROID_ARCH_NAME STREQUAL "arm64")
+        set(_CUDA_TARGET_NAME "aarch64-linux-androideabi")
+      else()
+        set(_CUDA_TARGET_NAME "aarch64-linux")
+      endif()
+    elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
+      set(_CUDA_TARGET_NAME "x86_64-linux")
+    endif()
+
+    if(EXISTS "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}/targets/${_CUDA_TARGET_NAME}")
+      set(_CUDA_TARGET_DIR "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}/targets/${_CUDA_TARGET_NAME}")
+    endif()
+  endif()
+
+  # If not already set we can simply use the toolkit root or it's a scattered installation.
+  if(NOT _CUDA_TARGET_DIR)
+    set(_CUDA_TARGET_DIR "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}")
+  endif()
+
+  # We can't use find_library() yet at this point, so try a few guesses.
+  if(EXISTS "${_CUDA_TARGET_DIR}/lib64")
+    set(_CUDA_LIBRARY_DIR "${_CUDA_TARGET_DIR}/lib64")
+  elseif(EXISTS "${_CUDA_TARGET_DIR}/lib/x64")
+    set(_CUDA_LIBRARY_DIR "${_CUDA_TARGET_DIR}/lib/x64")
+  elseif(EXISTS "${_CUDA_TARGET_DIR}/lib")
+    set(_CUDA_LIBRARY_DIR "${_CUDA_TARGET_DIR}/lib")
+  else()
+    message(FATAL_ERROR "Unable to find _CUDA_LIBRARY_DIR based on _CUDA_TARGET_DIR=${_CUDA_TARGET_DIR}")
+  endif()
+
+  # _CUDA_TARGET_DIR always points to the directory containing the include directory.
+  # On a scattered installation /usr, on a non-scattered something like /usr/local/cuda or /usr/local/cuda-10.2/targets/aarch64-linux.
+  if(EXISTS "${_CUDA_TARGET_DIR}/include/cuda_runtime.h")
+    set(_CUDA_INCLUDE_DIR "${_CUDA_TARGET_DIR}/include")
+  else()
+    message(FATAL_ERROR "Unable to find cuda_runtime.h in \"${_CUDA_TARGET_DIR}/include\" for _CUDA_INCLUDE_DIR.")
+  endif()
+
+  # Clang does not add any CUDA SDK libraries or directories when invoking the host linker.
+  # Add the CUDA toolkit library directory ourselves so that linking works.
+  # The CUDA runtime libraries are handled elsewhere by CMAKE_CUDA_RUNTIME_LIBRARY.
+  set(CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES "${_CUDA_INCLUDE_DIR}")
+  set(CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES "${_CUDA_LIBRARY_DIR}")
+  set(CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES "")
+  set(CMAKE_CUDA_HOST_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
+elseif(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
+  set(_nvcc_log "")
+  string(REPLACE "\r" "" _nvcc_output_orig "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
+  if(_nvcc_output_orig MATCHES "#\\\$ +PATH= *([^\n]*)\n")
+    set(_nvcc_path "${CMAKE_MATCH_1}")
+    string(APPEND _nvcc_log "  found 'PATH=' string: [${_nvcc_path}]\n")
+    string(REPLACE ":" ";" _nvcc_path "${_nvcc_path}")
+  else()
+    set(_nvcc_path "")
+    string(REPLACE "\n" "\n    " _nvcc_output_log "\n${_nvcc_output_orig}")
+    string(APPEND _nvcc_log "  no 'PATH=' string found in nvcc output:${_nvcc_output_log}\n")
+  endif()
+  if(_nvcc_output_orig MATCHES "#\\\$ +LIBRARIES= *([^\n]*)\n")
+    set(_nvcc_libraries "${CMAKE_MATCH_1}")
+    string(APPEND _nvcc_log "  found 'LIBRARIES=' string: [${_nvcc_libraries}]\n")
+  else()
+    set(_nvcc_libraries "")
+    string(REPLACE "\n" "\n    " _nvcc_output_log "\n${_nvcc_output_orig}")
+    string(APPEND _nvcc_log "  no 'LIBRARIES=' string found in nvcc output:${_nvcc_output_log}\n")
+  endif()
+
+  set(_nvcc_link_line "")
+  if(_nvcc_libraries)
+    # Remove variable assignments.
+    string(REGEX REPLACE "#\\\$ *[^= ]+=[^\n]*\n" "" _nvcc_output "${_nvcc_output_orig}")
+    # Encode [] characters that break list expansion.
+    string(REPLACE "[" "{==={" _nvcc_output "${_nvcc_output}")
+    string(REPLACE "]" "}===}" _nvcc_output "${_nvcc_output}")
+    # Split lines.
+    string(REGEX REPLACE "\n+(#\\\$ )?" ";" _nvcc_output "${_nvcc_output}")
+    foreach(line IN LISTS _nvcc_output)
+      set(_nvcc_output_line "${line}")
+      string(REPLACE "{==={" "[" _nvcc_output_line "${_nvcc_output_line}")
+      string(REPLACE "}===}" "]" _nvcc_output_line "${_nvcc_output_line}")
+      string(APPEND _nvcc_log "  considering line: [${_nvcc_output_line}]\n")
+      if("${_nvcc_output_line}" MATCHES "^ *nvlink")
+        string(APPEND _nvcc_log "    ignoring nvlink line\n")
+      elseif(_nvcc_libraries)
+        if("${_nvcc_output_line}" MATCHES "(@\"?((tmp/)?a\\.exe\\.res)\"?)")
+          set(_nvcc_link_res_arg "${CMAKE_MATCH_1}")
+          set(_nvcc_link_res_file "${CMAKE_MATCH_2}")
+          set(_nvcc_link_res "${CMAKE_PLATFORM_INFO_DIR}/CompilerIdCUDA/${_nvcc_link_res_file}")
+          if(EXISTS "${_nvcc_link_res}")
+            file(READ "${_nvcc_link_res}" _nvcc_link_res_content)
+            string(REPLACE "${_nvcc_link_res_arg}" "${_nvcc_link_res_content}" _nvcc_output_line "${_nvcc_output_line}")
+          endif()
+        endif()
+        string(FIND "${_nvcc_output_line}" "${_nvcc_libraries}" _nvcc_libraries_pos)
+        if(NOT _nvcc_libraries_pos EQUAL -1)
+          set(_nvcc_link_line "${_nvcc_output_line}")
+          string(APPEND _nvcc_log "    extracted link line: [${_nvcc_link_line}]\n")
+        endif()
+      endif()
+    endforeach()
+  endif()
+
+  if(_nvcc_link_line)
+    if("x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC")
+      set(CMAKE_CUDA_HOST_LINK_LAUNCHER "${CMAKE_LINKER}")
+    else()
+      #extract the compiler that is being used for linking
+      separate_arguments(_nvcc_link_line_args UNIX_COMMAND "${_nvcc_link_line}")
+      list(GET _nvcc_link_line_args 0 _nvcc_host_link_launcher)
+      if(IS_ABSOLUTE "${_nvcc_host_link_launcher}")
+        string(APPEND _nvcc_log "  extracted link launcher absolute path: [${_nvcc_host_link_launcher}]\n")
+        set(CMAKE_CUDA_HOST_LINK_LAUNCHER "${_nvcc_host_link_launcher}")
+      else()
+        string(APPEND _nvcc_log "  extracted link launcher name: [${_nvcc_host_link_launcher}]\n")
+        find_program(_nvcc_find_host_link_launcher
+          NAMES ${_nvcc_host_link_launcher}
+          PATHS ${_nvcc_path} NO_DEFAULT_PATH)
+        find_program(_nvcc_find_host_link_launcher
+          NAMES ${_nvcc_host_link_launcher})
+        if(_nvcc_find_host_link_launcher)
+          string(APPEND _nvcc_log "  found link launcher absolute path: [${_nvcc_find_host_link_launcher}]\n")
+          set(CMAKE_CUDA_HOST_LINK_LAUNCHER "${_nvcc_find_host_link_launcher}")
+        else()
+          string(APPEND _nvcc_log "  could not find link launcher absolute path\n")
+          set(CMAKE_CUDA_HOST_LINK_LAUNCHER "${_nvcc_host_link_launcher}")
+        endif()
+        unset(_nvcc_find_host_link_launcher CACHE)
+      endif()
+    endif()
+
+    #prefix the line with cuda-fake-ld so that implicit link info believes it is
+    #a link line
+    set(_nvcc_link_line "cuda-fake-ld ${_nvcc_link_line}")
+    CMAKE_PARSE_IMPLICIT_LINK_INFO("${_nvcc_link_line}"
+                                   CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES
+                                   CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES
+                                   CMAKE_CUDA_HOST_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
+                                   log
+                                   "${CMAKE_CUDA_IMPLICIT_OBJECT_REGEX}")
+
+    # Detect CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT from the compiler by looking at which
+    # cudart library exists in the implicit link libraries passed to the host linker.
+    # This is required when a project sets the cuda runtime library as part of the
+    # initial flags.
+    if(";${CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES};" MATCHES [[;cudart_static(\.lib)?;]])
+      set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "STATIC")
+    elseif(";${CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES};" MATCHES [[;cudart(\.lib)?;]])
+      set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "SHARED")
+    else()
+      set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "NONE")
+    endif()
+    set(_SET_CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT
+      "set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT \"${CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT}\")")
+
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+      "Parsed CUDA nvcc implicit link information from above output:\n${_nvcc_log}\n${log}\n\n")
+  else()
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+      "Failed to parse CUDA nvcc implicit link information:\n${_nvcc_log}\n\n")
+    message(FATAL_ERROR "Failed to extract nvcc implicit link line.")
+  endif()
+endif()
+
+# CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES is detected above as the list of
+# libraries that the CUDA compiler implicitly passes to the host linker.
+# CMake invokes the host linker directly and so needs to pass these libraries.
+# We filter out those that should not be passed unconditionally both here
+# and from CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES in CMakeTestCUDACompiler.
+set(CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES_EXCLUDE
+  # The CUDA runtime libraries are controlled by CMAKE_CUDA_RUNTIME_LIBRARY.
+  cudart        cudart.lib
+  cudart_static cudart_static.lib
+  cudadevrt     cudadevrt.lib
+
+  # Dependencies of the CUDA static runtime library on Linux hosts.
+  rt
+  pthread
+  dl
+  )
+list(REMOVE_ITEM CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES ${CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES_EXCLUDE})
+
+if(CMAKE_CUDA_COMPILER_SYSROOT)
+  string(CONCAT _SET_CMAKE_CUDA_COMPILER_SYSROOT
+    "set(CMAKE_CUDA_COMPILER_SYSROOT \"${CMAKE_CUDA_COMPILER_SYSROOT}\")\n"
+    "set(CMAKE_COMPILER_SYSROOT \"${CMAKE_CUDA_COMPILER_SYSROOT}\")")
+else()
+  set(_SET_CMAKE_CUDA_COMPILER_SYSROOT "")
+endif()
+
+# Determine CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES
+if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
+  set(CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES)
+  string(REPLACE "\r" "" _nvcc_output_orig "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
+  if(_nvcc_output_orig MATCHES "#\\\$ +INCLUDES= *([^\n]*)\n")
+    set(_nvcc_includes "${CMAKE_MATCH_1}")
+    string(APPEND _nvcc_log "  found 'INCLUDES=' string: [${_nvcc_includes}]\n")
+  else()
+    set(_nvcc_includes "")
+    string(REPLACE "\n" "\n    " _nvcc_output_log "\n${_nvcc_output_orig}")
+    string(APPEND _nvcc_log "  no 'INCLUDES=' string found in nvcc output:${_nvcc_output_log}\n")
+  endif()
+  if(_nvcc_includes)
+    # across all operating system each include directory is prefixed with -I
+    separate_arguments(_nvcc_output NATIVE_COMMAND "${_nvcc_includes}")
+    foreach(line IN LISTS _nvcc_output)
+      string(REGEX REPLACE "^-I" "" line "${line}")
+      get_filename_component(line "${line}" ABSOLUTE)
+      list(APPEND CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES "${line}")
+    endforeach()
+
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+      "Parsed CUDA nvcc include information from above output:\n${_nvcc_log}\n${log}\n\n")
+  else()
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+      "Failed to detect CUDA nvcc include information:\n${_nvcc_log}\n\n")
+  endif()
+
+  # Parse default CUDA architecture.
+  cmake_policy(GET CMP0104 _CUDA_CMP0104)
+  if(NOT CMAKE_CUDA_ARCHITECTURES AND _CUDA_CMP0104 STREQUAL "NEW")
+    string(REGEX MATCH "arch[ =]compute_([0-9]+)" dont_care "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
+    set(detected_architecture "${CMAKE_MATCH_1}")
+  elseif(CMAKE_CUDA_ARCHITECTURES)
+    string(REGEX MATCHALL "-arch compute_([0-9]+)" target_cpus "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
+
+    foreach(cpu ${target_cpus})
+      string(REGEX MATCH "-arch compute_([0-9]+)" dont_care "${cpu}")
+      list(APPEND architectures "${CMAKE_MATCH_1}")
+    endforeach()
+  endif()
+endif()
+
+# If the user didn't set the architectures, then set them to a default.
+# If the user did, then make sure those architectures worked.
+if(DEFINED detected_architecture AND "${CMAKE_CUDA_ARCHITECTURES}" STREQUAL "")
+  set(CMAKE_CUDA_ARCHITECTURES "${detected_architecture}" CACHE STRING "CUDA architectures")
+
+  if(NOT CMAKE_CUDA_ARCHITECTURES)
+    message(FATAL_ERROR "Failed to find a working CUDA architecture.")
+  endif()
+elseif(architectures)
+  # Sort since order mustn't matter.
+  list(SORT architectures)
+  list(SORT tested_architectures)
+
+  # We don't distinguish real/virtual architectures during testing.
+  # For "70-real;70-virtual" we detect "70" as working and tested_architectures is "70;70".
+  # Thus we need to remove duplicates before checking if they're equal.
+  list(REMOVE_DUPLICATES tested_architectures)
+
+  if(NOT "${architectures}" STREQUAL "${tested_architectures}")
+    message(FATAL_ERROR
+      "The CMAKE_CUDA_ARCHITECTURES:\n"
+      "  ${CMAKE_CUDA_ARCHITECTURES}\n"
+      "do not all work with this compiler.  Try:\n"
+      "  ${architectures}\n"
+      "instead.")
+  endif()
+endif()
+
+# configure all variables set in this file
+configure_file(${CMAKE_ROOT}/Modules/CMakeCUDACompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeCUDACompiler.cmake
+  @ONLY
+)
+
+# Don't leak variables unnecessarily to user code.
+unset(_CUDA_INCLUDE_DIR CACHE)
+unset(_CUDA_NVCC_EXECUTABLE CACHE)
+unset(_CUDA_LIBRARY_DIR)
+unset(_CUDA_TARGET_DIR)
+unset(_CUDA_TARGET_NAME)
+
+set(CMAKE_CUDA_COMPILER_ENV_VAR "CUDACXX")
+set(CMAKE_CUDA_HOST_COMPILER_ENV_VAR "CUDAHOSTCXX")
diff --git a/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake
new file mode 100644
index 0000000..72dc8d3
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineCXXCompiler.cmake
@@ -0,0 +1,231 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# determine the compiler to use for C++ programs
+# NOTE, a generator may set CMAKE_CXX_COMPILER before
+# loading this file to force a compiler.
+# use environment variable CXX first if defined by user, next use
+# the cmake variable CMAKE_GENERATOR_CXX which can be defined by a generator
+# as a default compiler
+# If the internal cmake variable _CMAKE_TOOLCHAIN_PREFIX is set, this is used
+# as prefix for the tools (e.g. arm-elf-g++, arm-elf-ar etc.)
+#
+# Sets the following variables:
+#   CMAKE_CXX_COMPILER
+#   CMAKE_COMPILER_IS_GNUCXX
+#   CMAKE_AR
+#   CMAKE_RANLIB
+#
+# If not already set before, it also sets
+#   _CMAKE_TOOLCHAIN_PREFIX
+
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
+
+# Load system-specific compiler preferences for this language.
+include(Platform/${CMAKE_SYSTEM_NAME}-Determine-CXX OPTIONAL)
+include(Platform/${CMAKE_SYSTEM_NAME}-CXX OPTIONAL)
+if(NOT CMAKE_CXX_COMPILER_NAMES)
+  set(CMAKE_CXX_COMPILER_NAMES CC)
+endif()
+
+if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
+elseif("${CMAKE_GENERATOR}" MATCHES "Green Hills MULTI")
+elseif("${CMAKE_GENERATOR}" MATCHES "Xcode")
+  set(CMAKE_CXX_COMPILER_XCODE_TYPE sourcecode.cpp.cpp)
+  _cmake_find_compiler_path(CXX)
+else()
+  if(NOT CMAKE_CXX_COMPILER)
+    set(CMAKE_CXX_COMPILER_INIT NOTFOUND)
+
+    # prefer the environment variable CXX
+    if(NOT $ENV{CXX} STREQUAL "")
+      get_filename_component(CMAKE_CXX_COMPILER_INIT $ENV{CXX} PROGRAM PROGRAM_ARGS CMAKE_CXX_FLAGS_ENV_INIT)
+      if(CMAKE_CXX_FLAGS_ENV_INIT)
+        set(CMAKE_CXX_COMPILER_ARG1 "${CMAKE_CXX_FLAGS_ENV_INIT}" CACHE STRING "Arguments to CXX compiler")
+      endif()
+      if(NOT EXISTS ${CMAKE_CXX_COMPILER_INIT})
+        message(FATAL_ERROR "Could not find compiler set in environment variable CXX:\n$ENV{CXX}.\n${CMAKE_CXX_COMPILER_INIT}")
+      endif()
+    endif()
+
+    # next prefer the generator specified compiler
+    if(CMAKE_GENERATOR_CXX)
+      if(NOT CMAKE_CXX_COMPILER_INIT)
+        set(CMAKE_CXX_COMPILER_INIT ${CMAKE_GENERATOR_CXX})
+      endif()
+    endif()
+
+    # finally list compilers to try
+    if(NOT CMAKE_CXX_COMPILER_INIT)
+      set(CMAKE_CXX_COMPILER_LIST CC ${_CMAKE_TOOLCHAIN_PREFIX}c++ ${_CMAKE_TOOLCHAIN_PREFIX}g++ aCC cl bcc xlC icpx icx clang++)
+    endif()
+
+    _cmake_find_compiler(CXX)
+  else()
+    _cmake_find_compiler_path(CXX)
+  endif()
+  mark_as_advanced(CMAKE_CXX_COMPILER)
+
+  # Each entry in this list is a set of extra flags to try
+  # adding to the compile line to see if it helps produce
+  # a valid identification file.
+  set(CMAKE_CXX_COMPILER_ID_TEST_FLAGS_FIRST)
+  set(CMAKE_CXX_COMPILER_ID_TEST_FLAGS
+    # Try compiling to an object file only.
+    "-c"
+    # IAR does not detect language automatically
+    "--c++"
+    "--ec++"
+
+    # ARMClang need target options
+    "--target=arm-arm-none-eabi -mcpu=cortex-m3"
+
+    # MSVC needs at least one include directory for __has_include to function,
+    # but custom toolchains may run MSVC with no INCLUDE env var and no -I flags.
+    # Also avoid linking so this works with no LIB env var.
+    "-c -I__does_not_exist__"
+    )
+endif()
+
+if(CMAKE_CXX_COMPILER_TARGET)
+  set(CMAKE_CXX_COMPILER_ID_TEST_FLAGS_FIRST "-c --target=${CMAKE_CXX_COMPILER_TARGET}")
+endif()
+
+# Build a small source file to identify the compiler.
+if(NOT CMAKE_CXX_COMPILER_ID_RUN)
+  set(CMAKE_CXX_COMPILER_ID_RUN 1)
+
+  # Try to identify the compiler.
+  set(CMAKE_CXX_COMPILER_ID)
+  set(CMAKE_CXX_PLATFORM_ID)
+  file(READ ${CMAKE_ROOT}/Modules/CMakePlatformId.h.in
+    CMAKE_CXX_COMPILER_ID_PLATFORM_CONTENT)
+
+  # The IAR compiler produces weird output.
+  # See https://gitlab.kitware.com/cmake/cmake/-/issues/10176#note_153591
+  list(APPEND CMAKE_CXX_COMPILER_ID_VENDORS IAR)
+  set(CMAKE_CXX_COMPILER_ID_VENDOR_FLAGS_IAR )
+  set(CMAKE_CXX_COMPILER_ID_VENDOR_REGEX_IAR "IAR .+ Compiler")
+
+  # Match the link line from xcodebuild output of the form
+  #  Ld ...
+  #      ...
+  #      /path/to/cc ...CompilerIdCXX/...
+  # to extract the compiler front-end for the language.
+  set(CMAKE_CXX_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdCXX/(\\./)?(CompilerIdCXX.(framework|xctest|build/[^ \t\r\n]+)/)?CompilerIdCXX[ \t\n\\\"]")
+  set(CMAKE_CXX_COMPILER_ID_TOOL_MATCH_INDEX 2)
+
+  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
+  CMAKE_DETERMINE_COMPILER_ID(CXX CXXFLAGS CMakeCXXCompilerId.cpp)
+
+  _cmake_find_compiler_sysroot(CXX)
+
+  # Set old compiler and platform id variables.
+  if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+    set(CMAKE_COMPILER_IS_GNUCXX 1)
+  endif()
+else()
+  if(NOT DEFINED CMAKE_CXX_COMPILER_FRONTEND_VARIANT)
+    # Some toolchain files set our internal CMAKE_CXX_COMPILER_ID_RUN
+    # variable but are not aware of CMAKE_CXX_COMPILER_FRONTEND_VARIANT.
+    # They pre-date our support for the GNU-like variant targeting the
+    # MSVC ABI so we do not consider that here.
+    if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
+      OR "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xIntelLLVM")
+      if("x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
+        set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "MSVC")
+      else()
+        set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU")
+      endif()
+    else()
+      set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "")
+    endif()
+  endif()
+endif()
+
+if (NOT _CMAKE_TOOLCHAIN_LOCATION)
+  get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_CXX_COMPILER}" PATH)
+endif ()
+
+# if we have a g++ cross compiler, they have usually some prefix, like
+# e.g. powerpc-linux-g++, arm-elf-g++ or i586-mingw32msvc-g++ , optionally
+# with a 3-component version number at the end (e.g. arm-eabi-gcc-4.5.2).
+# The other tools of the toolchain usually have the same prefix
+# NAME_WE cannot be used since then this test will fail for names like
+# "arm-unknown-nto-qnx6.3.0-gcc.exe", where BASENAME would be
+# "arm-unknown-nto-qnx6" instead of the correct "arm-unknown-nto-qnx6.3.0-"
+
+
+if (NOT _CMAKE_TOOLCHAIN_PREFIX)
+
+  if("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|QCC")
+    get_filename_component(COMPILER_BASENAME "${CMAKE_CXX_COMPILER}" NAME)
+    if (COMPILER_BASENAME MATCHES "^(.+-)?(clang\\+\\+|[gc]\\+\\+|clang-cl)(-[0-9]+(\\.[0-9]+)*)?(-[^.]+)?(\\.exe)?$")
+      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
+      set(_CMAKE_TOOLCHAIN_SUFFIX ${CMAKE_MATCH_3})
+      set(_CMAKE_COMPILER_SUFFIX ${CMAKE_MATCH_5})
+    elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
+      if(CMAKE_CXX_COMPILER_TARGET)
+        set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_CXX_COMPILER_TARGET}-)
+      endif()
+    elseif(COMPILER_BASENAME MATCHES "QCC(\\.exe)?$")
+      if(CMAKE_CXX_COMPILER_TARGET MATCHES "gcc_nto([a-z0-9]+_[0-9]+|[^_le]+)(le)")
+        set(_CMAKE_TOOLCHAIN_PREFIX nto${CMAKE_MATCH_1}-)
+      endif()
+    endif ()
+
+    # if "llvm-" is part of the prefix, remove it, since llvm doesn't have its own binutils
+    # but uses the regular ar, objcopy, etc. (instead of llvm-objcopy etc.)
+    if ("${_CMAKE_TOOLCHAIN_PREFIX}" MATCHES "(.+-)?llvm-$")
+      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
+    endif ()
+  elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "TI")
+    # TI compilers are named e.g. cl6x, cl470 or armcl.exe
+    get_filename_component(COMPILER_BASENAME "${CMAKE_CXX_COMPILER}" NAME)
+    if (COMPILER_BASENAME MATCHES "^(.+)?cl([^.]+)?(\\.exe)?$")
+      set(_CMAKE_TOOLCHAIN_PREFIX "${CMAKE_MATCH_1}")
+      set(_CMAKE_TOOLCHAIN_SUFFIX "${CMAKE_MATCH_2}")
+    endif ()
+
+  endif()
+
+endif ()
+
+set(_CMAKE_PROCESSING_LANGUAGE "CXX")
+include(CMakeFindBinUtils)
+include(Compiler/${CMAKE_CXX_COMPILER_ID}-FindBinUtils OPTIONAL)
+unset(_CMAKE_PROCESSING_LANGUAGE)
+
+if(CMAKE_CXX_COMPILER_SYSROOT)
+  string(CONCAT _SET_CMAKE_CXX_COMPILER_SYSROOT
+    "set(CMAKE_CXX_COMPILER_SYSROOT \"${CMAKE_CXX_COMPILER_SYSROOT}\")\n"
+    "set(CMAKE_COMPILER_SYSROOT \"${CMAKE_CXX_COMPILER_SYSROOT}\")")
+else()
+  set(_SET_CMAKE_CXX_COMPILER_SYSROOT "")
+endif()
+
+if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID)
+  set(_SET_CMAKE_CXX_COMPILER_ARCHITECTURE_ID
+    "set(CMAKE_CXX_COMPILER_ARCHITECTURE_ID ${CMAKE_CXX_COMPILER_ARCHITECTURE_ID})")
+else()
+  set(_SET_CMAKE_CXX_COMPILER_ARCHITECTURE_ID "")
+endif()
+
+if(MSVC_CXX_ARCHITECTURE_ID)
+  set(SET_MSVC_CXX_ARCHITECTURE_ID
+    "set(MSVC_CXX_ARCHITECTURE_ID ${MSVC_CXX_ARCHITECTURE_ID})")
+endif()
+
+if(CMAKE_CXX_XCODE_ARCHS)
+  set(SET_CMAKE_XCODE_ARCHS
+    "set(CMAKE_XCODE_ARCHS \"${CMAKE_CXX_XCODE_ARCHS}\")")
+endif()
+
+# configure all variables set in this file
+configure_file(${CMAKE_ROOT}/Modules/CMakeCXXCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeCXXCompiler.cmake
+  @ONLY
+  )
+
+set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
diff --git a/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake b/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake
new file mode 100644
index 0000000..a08e597
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineCompileFeatures.cmake
@@ -0,0 +1,227 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+function(cmake_determine_compile_features lang)
+
+  if("x${lang}" STREQUAL "xC" AND COMMAND cmake_record_c_compile_features)
+    message(CHECK_START "Detecting ${lang} compile features")
+
+    set(CMAKE_C90_COMPILE_FEATURES)
+    set(CMAKE_C99_COMPILE_FEATURES)
+    set(CMAKE_C11_COMPILE_FEATURES)
+    set(CMAKE_C17_COMPILE_FEATURES)
+    set(CMAKE_C23_COMPILE_FEATURES)
+
+    include("${CMAKE_ROOT}/Modules/Internal/FeatureTesting.cmake")
+
+    cmake_record_c_compile_features()
+
+    if(NOT _result EQUAL 0)
+      message(CHECK_FAIL "failed")
+      return()
+    endif()
+
+    if (CMAKE_C17_COMPILE_FEATURES AND CMAKE_C23_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_C23_COMPILE_FEATURES ${CMAKE_C17_COMPILE_FEATURES})
+    endif()
+    if (CMAKE_C11_COMPILE_FEATURES AND CMAKE_C17_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_C17_COMPILE_FEATURES ${CMAKE_C11_COMPILE_FEATURES})
+    endif()
+    if (CMAKE_C99_COMPILE_FEATURES AND CMAKE_C11_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_C11_COMPILE_FEATURES ${CMAKE_C99_COMPILE_FEATURES})
+    endif()
+    if (CMAKE_C90_COMPILE_FEATURES AND CMAKE_C99_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_C99_COMPILE_FEATURES ${CMAKE_C90_COMPILE_FEATURES})
+    endif()
+
+    if(NOT CMAKE_C_COMPILE_FEATURES)
+      set(CMAKE_C_COMPILE_FEATURES
+        ${CMAKE_C90_COMPILE_FEATURES}
+        ${CMAKE_C99_COMPILE_FEATURES}
+        ${CMAKE_C11_COMPILE_FEATURES}
+        ${CMAKE_C17_COMPILE_FEATURES}
+        ${CMAKE_C23_COMPILE_FEATURES}
+      )
+    endif()
+
+    set(CMAKE_C_COMPILE_FEATURES ${CMAKE_C_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_C90_COMPILE_FEATURES ${CMAKE_C90_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_C99_COMPILE_FEATURES ${CMAKE_C99_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_C11_COMPILE_FEATURES ${CMAKE_C11_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_C17_COMPILE_FEATURES ${CMAKE_C17_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_C23_COMPILE_FEATURES ${CMAKE_C23_COMPILE_FEATURES} PARENT_SCOPE)
+
+    message(CHECK_PASS "done")
+
+  elseif("x${lang}" STREQUAL "xCXX" AND COMMAND cmake_record_cxx_compile_features)
+    message(CHECK_START "Detecting ${lang} compile features")
+
+    set(CMAKE_CXX98_COMPILE_FEATURES)
+    set(CMAKE_CXX11_COMPILE_FEATURES)
+    set(CMAKE_CXX14_COMPILE_FEATURES)
+    set(CMAKE_CXX17_COMPILE_FEATURES)
+    set(CMAKE_CXX20_COMPILE_FEATURES)
+    set(CMAKE_CXX23_COMPILE_FEATURES)
+
+    include("${CMAKE_ROOT}/Modules/Internal/FeatureTesting.cmake")
+
+    cmake_record_cxx_compile_features()
+
+    if(NOT _result EQUAL 0)
+      message(CHECK_FAIL "failed")
+      return()
+    endif()
+
+    if (CMAKE_CXX20_COMPILE_FEATURES AND CMAKE_CXX23_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_CXX23_COMPILE_FEATURES ${CMAKE_CXX20_COMPILE_FEATURES})
+    endif()
+    if (CMAKE_CXX17_COMPILE_FEATURES AND CMAKE_CXX20_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_CXX20_COMPILE_FEATURES ${CMAKE_CXX17_COMPILE_FEATURES})
+    endif()
+    if (CMAKE_CXX14_COMPILE_FEATURES AND CMAKE_CXX17_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_CXX17_COMPILE_FEATURES ${CMAKE_CXX14_COMPILE_FEATURES})
+    endif()
+    if (CMAKE_CXX11_COMPILE_FEATURES AND CMAKE_CXX14_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_CXX14_COMPILE_FEATURES ${CMAKE_CXX11_COMPILE_FEATURES})
+    endif()
+    if (CMAKE_CXX98_COMPILE_FEATURES AND CMAKE_CXX11_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_CXX11_COMPILE_FEATURES ${CMAKE_CXX98_COMPILE_FEATURES})
+    endif()
+
+    if(NOT CMAKE_CXX_COMPILE_FEATURES)
+      set(CMAKE_CXX_COMPILE_FEATURES
+        ${CMAKE_CXX98_COMPILE_FEATURES}
+        ${CMAKE_CXX11_COMPILE_FEATURES}
+        ${CMAKE_CXX14_COMPILE_FEATURES}
+        ${CMAKE_CXX17_COMPILE_FEATURES}
+        ${CMAKE_CXX20_COMPILE_FEATURES}
+        ${CMAKE_CXX23_COMPILE_FEATURES}
+      )
+    endif()
+
+    set(CMAKE_CXX_COMPILE_FEATURES ${CMAKE_CXX_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_CXX98_COMPILE_FEATURES ${CMAKE_CXX98_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_CXX11_COMPILE_FEATURES ${CMAKE_CXX11_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_CXX14_COMPILE_FEATURES ${CMAKE_CXX14_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_CXX17_COMPILE_FEATURES ${CMAKE_CXX17_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_CXX20_COMPILE_FEATURES ${CMAKE_CXX20_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_CXX23_COMPILE_FEATURES ${CMAKE_CXX23_COMPILE_FEATURES} PARENT_SCOPE)
+
+    message(CHECK_PASS "done")
+
+  elseif("x${lang}" STREQUAL "xCUDA" AND COMMAND cmake_record_cuda_compile_features)
+    message(CHECK_START "Detecting ${lang} compile features")
+
+    set(CMAKE_CUDA03_COMPILE_FEATURES)
+    set(CMAKE_CUDA11_COMPILE_FEATURES)
+    set(CMAKE_CUDA14_COMPILE_FEATURES)
+    set(CMAKE_CUDA17_COMPILE_FEATURES)
+    set(CMAKE_CUDA20_COMPILE_FEATURES)
+    set(CMAKE_CUDA23_COMPILE_FEATURES)
+
+    include("${CMAKE_ROOT}/Modules/Internal/FeatureTesting.cmake")
+
+    cmake_record_cuda_compile_features()
+
+    if(NOT _result EQUAL 0)
+      message(CHECK_FAIL "failed")
+      return()
+    endif()
+
+    if (CMAKE_CUDA20_COMPILE_FEATURES AND CMAKE_CUDA23_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_CUDA23_COMPILE_FEATURES ${CMAKE_CUDA20_COMPILE_FEATURES})
+    endif()
+    if (CMAKE_CUDA17_COMPILE_FEATURES AND CMAKE_CUDA20_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_CUDA20_COMPILE_FEATURES ${CMAKE_CUDA17_COMPILE_FEATURES})
+    endif()
+    if (CMAKE_CUDA14_COMPILE_FEATURES AND CMAKE_CUDA17_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_CUDA17_COMPILE_FEATURES ${CMAKE_CUDA14_COMPILE_FEATURES})
+    endif()
+    if (CMAKE_CUDA11_COMPILE_FEATURES AND CMAKE_CUDA14_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_CUDA14_COMPILE_FEATURES ${CMAKE_CUDA11_COMPILE_FEATURES})
+    endif()
+    if (CMAKE_CUDA03_COMPILE_FEATURES AND CMAKE_CUDA11_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_CUDA11_COMPILE_FEATURES ${CMAKE_CUDA03_COMPILE_FEATURES})
+    endif()
+
+    if(NOT CMAKE_CUDA_COMPILE_FEATURES)
+      set(CMAKE_CUDA_COMPILE_FEATURES
+        ${CMAKE_CUDA03_COMPILE_FEATURES}
+        ${CMAKE_CUDA11_COMPILE_FEATURES}
+        ${CMAKE_CUDA14_COMPILE_FEATURES}
+        ${CMAKE_CUDA17_COMPILE_FEATURES}
+        ${CMAKE_CUDA20_COMPILE_FEATURES}
+        ${CMAKE_CUDA23_COMPILE_FEATURES}
+      )
+    endif()
+
+    set(CMAKE_CUDA_COMPILE_FEATURES ${CMAKE_CUDA_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_CUDA03_COMPILE_FEATURES ${CMAKE_CUDA03_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_CUDA11_COMPILE_FEATURES ${CMAKE_CUDA11_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_CUDA14_COMPILE_FEATURES ${CMAKE_CUDA14_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_CUDA17_COMPILE_FEATURES ${CMAKE_CUDA17_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_CUDA20_COMPILE_FEATURES ${CMAKE_CUDA20_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_CUDA23_COMPILE_FEATURES ${CMAKE_CUDA23_COMPILE_FEATURES} PARENT_SCOPE)
+
+    message(CHECK_PASS "done")
+
+  elseif(lang STREQUAL HIP AND COMMAND cmake_record_hip_compile_features)
+    message(CHECK_START "Detecting ${lang} compile features")
+
+    set(CMAKE_HIP98_COMPILE_FEATURES)
+    set(CMAKE_HIP11_COMPILE_FEATURES)
+    set(CMAKE_HIP14_COMPILE_FEATURES)
+    set(CMAKE_HIP17_COMPILE_FEATURES)
+    set(CMAKE_HIP20_COMPILE_FEATURES)
+    set(CMAKE_HIP23_COMPILE_FEATURES)
+
+    include("${CMAKE_ROOT}/Modules/Internal/FeatureTesting.cmake")
+
+    cmake_record_hip_compile_features()
+
+    if(NOT _result EQUAL 0)
+      message(CHECK_FAIL "failed")
+      return()
+    endif()
+
+    if (CMAKE_HIP20_COMPILE_FEATURES AND CMAKE_HIP23_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_HIP23_COMPILE_FEATURES ${CMAKE_HIP20_COMPILE_FEATURES})
+    endif()
+    if (CMAKE_HIP17_COMPILE_FEATURES AND CMAKE_HIP20_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_HIP20_COMPILE_FEATURES ${CMAKE_HIP17_COMPILE_FEATURES})
+    endif()
+    if (CMAKE_HIP14_COMPILE_FEATURES AND CMAKE_HIP17_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_HIP17_COMPILE_FEATURES ${CMAKE_HIP14_COMPILE_FEATURES})
+    endif()
+    if (CMAKE_HIP11_COMPILE_FEATURES AND CMAKE_HIP14_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_HIP14_COMPILE_FEATURES ${CMAKE_HIP11_COMPILE_FEATURES})
+    endif()
+    if (CMAKE_HIP98_COMPILE_FEATURES AND CMAKE_HIP11_COMPILE_FEATURES)
+      list(REMOVE_ITEM CMAKE_HIP11_COMPILE_FEATURES ${CMAKE_HIP98_COMPILE_FEATURES})
+    endif()
+
+    if(NOT CMAKE_HIP_COMPILE_FEATURES)
+      set(CMAKE_HIP_COMPILE_FEATURES
+        ${CMAKE_HIP98_COMPILE_FEATURES}
+        ${CMAKE_HIP11_COMPILE_FEATURES}
+        ${CMAKE_HIP14_COMPILE_FEATURES}
+        ${CMAKE_HIP17_COMPILE_FEATURES}
+        ${CMAKE_HIP20_COMPILE_FEATURES}
+        ${CMAKE_HIP23_COMPILE_FEATURES}
+      )
+    endif()
+
+    set(CMAKE_HIP_COMPILE_FEATURES ${CMAKE_HIP_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_HIP98_COMPILE_FEATURES ${CMAKE_HIP98_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_HIP11_COMPILE_FEATURES ${CMAKE_HIP11_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_HIP14_COMPILE_FEATURES ${CMAKE_HIP14_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_HIP17_COMPILE_FEATURES ${CMAKE_HIP17_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_HIP20_COMPILE_FEATURES ${CMAKE_HIP20_COMPILE_FEATURES} PARENT_SCOPE)
+    set(CMAKE_HIP23_COMPILE_FEATURES ${CMAKE_HIP23_COMPILE_FEATURES} PARENT_SCOPE)
+
+    message(CHECK_PASS "done")
+
+  endif()
+
+endfunction()
diff --git a/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake
new file mode 100644
index 0000000..c967ab7
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineCompiler.cmake
@@ -0,0 +1,166 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+macro(_cmake_find_compiler lang)
+  # Use already-enabled languages for reference.
+  get_property(_languages GLOBAL PROPERTY ENABLED_LANGUAGES)
+  list(REMOVE_ITEM _languages "${lang}")
+
+  if(CMAKE_${lang}_COMPILER_INIT)
+    # Search only for the specified compiler.
+    set(CMAKE_${lang}_COMPILER_LIST "${CMAKE_${lang}_COMPILER_INIT}")
+  else()
+    # Re-order the compiler list with preferred vendors first.
+    set(_${lang}_COMPILER_LIST "${CMAKE_${lang}_COMPILER_LIST}")
+    set(CMAKE_${lang}_COMPILER_LIST "")
+    # Prefer vendors of compilers from reference languages.
+    foreach(l ${_languages})
+      list(APPEND CMAKE_${lang}_COMPILER_LIST
+        ${_${lang}_COMPILER_NAMES_${CMAKE_${l}_COMPILER_ID}})
+    endforeach()
+    # Prefer vendors based on the platform.
+    list(APPEND CMAKE_${lang}_COMPILER_LIST ${CMAKE_${lang}_COMPILER_NAMES})
+    # Append the rest of the list and remove duplicates.
+    list(APPEND CMAKE_${lang}_COMPILER_LIST ${_${lang}_COMPILER_LIST})
+    unset(_${lang}_COMPILER_LIST)
+    list(REMOVE_DUPLICATES CMAKE_${lang}_COMPILER_LIST)
+    if(CMAKE_${lang}_COMPILER_EXCLUDE)
+      list(REMOVE_ITEM CMAKE_${lang}_COMPILER_LIST
+        ${CMAKE_${lang}_COMPILER_EXCLUDE})
+    endif()
+  endif()
+
+  # Look for directories containing compilers of reference languages.
+  set(_${lang}_COMPILER_HINTS "${CMAKE_${lang}_COMPILER_HINTS}")
+  foreach(l ${_languages})
+    if(CMAKE_${l}_COMPILER AND IS_ABSOLUTE "${CMAKE_${l}_COMPILER}")
+      get_filename_component(_hint "${CMAKE_${l}_COMPILER}" PATH)
+      if(IS_DIRECTORY "${_hint}")
+        list(APPEND _${lang}_COMPILER_HINTS "${_hint}")
+      endif()
+      unset(_hint)
+    endif()
+  endforeach()
+
+  # Find the compiler.
+  if(_${lang}_COMPILER_HINTS)
+    # Prefer directories containing compilers of reference languages.
+    list(REMOVE_DUPLICATES _${lang}_COMPILER_HINTS)
+    find_program(CMAKE_${lang}_COMPILER
+      NAMES ${CMAKE_${lang}_COMPILER_LIST}
+      PATHS ${_${lang}_COMPILER_HINTS}
+      NO_DEFAULT_PATH
+      DOC "${lang} compiler")
+  endif()
+  if(CMAKE_HOST_WIN32 AND CMAKE_GENERATOR MATCHES "Ninja")
+    # On Windows command-line builds, the Makefile generators each imply
+    # a preferred compiler tool.  The Ninja generator does not imply a
+    # compiler tool, so use the compiler that occurs first in PATH.
+    find_program(CMAKE_${lang}_COMPILER
+      NAMES ${CMAKE_${lang}_COMPILER_LIST}
+      NAMES_PER_DIR
+      DOC "${lang} compiler"
+      NO_PACKAGE_ROOT_PATH
+      NO_CMAKE_PATH
+      NO_CMAKE_ENVIRONMENT_PATH
+      NO_CMAKE_SYSTEM_PATH
+      )
+  endif()
+  find_program(CMAKE_${lang}_COMPILER NAMES ${CMAKE_${lang}_COMPILER_LIST} DOC "${lang} compiler")
+  if(_CMAKE_${lang}_COMPILER_PATHS)
+    # As a last fall-back, search in language-specific paths
+    find_program(CMAKE_${lang}_COMPILER
+      NAMES ${CMAKE_${lang}_COMPILER_LIST}
+      NAMES_PER_DIR
+      PATHS ${_CMAKE_${lang}_COMPILER_PATHS}
+      DOC "${lang} compiler"
+      NO_DEFAULT_PATH
+      )
+  endif()
+  if(CMAKE_${lang}_COMPILER_INIT AND NOT CMAKE_${lang}_COMPILER)
+    set_property(CACHE CMAKE_${lang}_COMPILER PROPERTY VALUE "${CMAKE_${lang}_COMPILER_INIT}")
+  endif()
+  unset(_${lang}_COMPILER_HINTS)
+  unset(_languages)
+
+  # Look for a make tool provided by Xcode
+  if(CMAKE_HOST_APPLE)
+    macro(_query_xcrun compiler_name result_var_keyword result_var)
+      if(NOT "x${result_var_keyword}" STREQUAL "xRESULT_VAR")
+        message(FATAL_ERROR "Bad arguments to macro")
+      endif()
+      execute_process(COMMAND xcrun --find ${compiler_name}
+        OUTPUT_VARIABLE _xcrun_out OUTPUT_STRIP_TRAILING_WHITESPACE
+        ERROR_VARIABLE _xcrun_err)
+      set("${result_var}" "${_xcrun_out}")
+    endmacro()
+
+    set(xcrun_result)
+    if (CMAKE_${lang}_COMPILER MATCHES "^/usr/bin/(.+)$")
+      _query_xcrun("${CMAKE_MATCH_1}" RESULT_VAR xcrun_result)
+    elseif (CMAKE_${lang}_COMPILER STREQUAL "CMAKE_${lang}_COMPILER-NOTFOUND")
+      foreach(comp ${CMAKE_${lang}_COMPILER_LIST})
+        _query_xcrun("${comp}" RESULT_VAR xcrun_result)
+        if(xcrun_result)
+          break()
+        endif()
+      endforeach()
+    endif()
+    if (xcrun_result)
+      set_property(CACHE CMAKE_${lang}_COMPILER PROPERTY VALUE "${xcrun_result}")
+    endif()
+  endif()
+endmacro()
+
+macro(_cmake_find_compiler_path lang)
+  if(CMAKE_${lang}_COMPILER)
+    # we only get here if CMAKE_${lang}_COMPILER was specified using -D or a pre-made CMakeCache.txt
+    # (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE
+    # if CMAKE_${lang}_COMPILER is a list, use the first item as
+    # CMAKE_${lang}_COMPILER and the rest as CMAKE_${lang}_COMPILER_ARG1
+    set(CMAKE_${lang}_COMPILER_ARG1 "${CMAKE_${lang}_COMPILER}")
+    list(POP_FRONT CMAKE_${lang}_COMPILER_ARG1 CMAKE_${lang}_COMPILER)
+    list(JOIN CMAKE_${lang}_COMPILER_ARG1 " " CMAKE_${lang}_COMPILER_ARG1)
+
+    # find the compiler in the PATH if necessary
+    # if compiler (and arguments) comes from cache then synchronize cache with updated CMAKE_<LANG>_COMPILER
+    get_filename_component(_CMAKE_USER_${lang}_COMPILER_PATH "${CMAKE_${lang}_COMPILER}" PATH)
+    if(NOT _CMAKE_USER_${lang}_COMPILER_PATH)
+      find_program(CMAKE_${lang}_COMPILER_WITH_PATH NAMES ${CMAKE_${lang}_COMPILER})
+      if(CMAKE_${lang}_COMPILER_WITH_PATH)
+        set(CMAKE_${lang}_COMPILER ${CMAKE_${lang}_COMPILER_WITH_PATH})
+        get_property(_CMAKE_${lang}_COMPILER_CACHED CACHE CMAKE_${lang}_COMPILER PROPERTY TYPE)
+        if(_CMAKE_${lang}_COMPILER_CACHED)
+          set(CMAKE_${lang}_COMPILER "${CMAKE_${lang}_COMPILER}" CACHE STRING "${lang} compiler" FORCE)
+        endif()
+        unset(_CMAKE_${lang}_COMPILER_CACHED)
+      endif()
+      unset(CMAKE_${lang}_COMPILER_WITH_PATH CACHE)
+    elseif (EXISTS ${CMAKE_${lang}_COMPILER})
+      get_property(_CMAKE_${lang}_COMPILER_CACHED CACHE CMAKE_${lang}_COMPILER PROPERTY TYPE)
+      if(_CMAKE_${lang}_COMPILER_CACHED)
+        set(CMAKE_${lang}_COMPILER "${CMAKE_${lang}_COMPILER}" CACHE STRING "${lang} compiler" FORCE)
+      endif()
+      unset(_CMAKE_${lang}_COMPILER_CACHED)
+    endif()
+  endif()
+endmacro()
+
+function(_cmake_find_compiler_sysroot lang)
+  if(CMAKE_${lang}_COMPILER_ID STREQUAL "GNU")
+    execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" -print-sysroot
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+      OUTPUT_VARIABLE _cmake_sysroot_run_out
+      ERROR_VARIABLE _cmake_sysroot_run_err)
+
+    if(_cmake_sysroot_run_out AND NOT _cmake_sysroot_run_err
+        AND NOT _cmake_sysroot_run_out STREQUAL "/"
+        AND IS_DIRECTORY "${_cmake_sysroot_run_out}/usr")
+      file(TO_CMAKE_PATH "${_cmake_sysroot_run_out}/usr" _cmake_sysroot_run_out_usr)
+      set(CMAKE_${lang}_COMPILER_SYSROOT "${_cmake_sysroot_run_out_usr}" PARENT_SCOPE)
+    else()
+      set(CMAKE_${lang}_COMPILER_SYSROOT "" PARENT_SCOPE)
+    endif()
+  endif()
+endfunction()
diff --git a/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake b/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake
new file mode 100644
index 0000000..8191d81
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineCompilerABI.cmake
@@ -0,0 +1,192 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# Function to compile a source file to identify the compiler ABI.
+# This is used internally by CMake and should not be included by user
+# code.
+
+include(${CMAKE_ROOT}/Modules/CMakeParseImplicitIncludeInfo.cmake)
+include(${CMAKE_ROOT}/Modules/CMakeParseImplicitLinkInfo.cmake)
+include(${CMAKE_ROOT}/Modules/CMakeParseLibraryArchitecture.cmake)
+include(CMakeTestCompilerCommon)
+
+function(CMAKE_DETERMINE_COMPILER_ABI lang src)
+  if(NOT DEFINED CMAKE_${lang}_ABI_COMPILED)
+    message(CHECK_START "Detecting ${lang} compiler ABI info")
+
+    # Compile the ABI identification source.
+    set(BIN "${CMAKE_PLATFORM_INFO_DIR}/CMakeDetermineCompilerABI_${lang}.bin")
+    set(CMAKE_FLAGS )
+    set(COMPILE_DEFINITIONS )
+    if(DEFINED CMAKE_${lang}_VERBOSE_FLAG)
+      set(CMAKE_FLAGS "-DEXE_LINKER_FLAGS=${CMAKE_${lang}_VERBOSE_FLAG}")
+      set(COMPILE_DEFINITIONS "${CMAKE_${lang}_VERBOSE_FLAG}")
+    endif()
+    if(DEFINED CMAKE_${lang}_VERBOSE_COMPILE_FLAG)
+      set(COMPILE_DEFINITIONS "${CMAKE_${lang}_VERBOSE_COMPILE_FLAG}")
+    endif()
+    if(NOT "x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xMSVC")
+      # Avoid adding our own platform standard libraries for compilers
+      # from which we might detect implicit link libraries.
+      list(APPEND CMAKE_FLAGS "-DCMAKE_${lang}_STANDARD_LIBRARIES=")
+    endif()
+    __TestCompiler_setTryCompileTargetType()
+
+    # Avoid failing ABI detection on warnings.
+    string(REGEX REPLACE "(^| )-Werror([= ][^ ]*)?( |$)" " " CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS}")
+
+    # Save the current LC_ALL, LC_MESSAGES, and LANG environment variables
+    # and set them to "C" that way GCC's "search starts here" text is in
+    # English and we can grok it.
+    set(_orig_lc_all      $ENV{LC_ALL})
+    set(_orig_lc_messages $ENV{LC_MESSAGES})
+    set(_orig_lang        $ENV{LANG})
+    set(ENV{LC_ALL}      C)
+    set(ENV{LC_MESSAGES} C)
+    set(ENV{LANG}        C)
+
+    try_compile(CMAKE_${lang}_ABI_COMPILED
+      ${CMAKE_BINARY_DIR} ${src}
+      CMAKE_FLAGS ${CMAKE_FLAGS}
+                  # Ignore unused flags when we are just determining the ABI.
+                  "--no-warn-unused-cli"
+      COMPILE_DEFINITIONS ${COMPILE_DEFINITIONS}
+      OUTPUT_VARIABLE OUTPUT
+      COPY_FILE "${BIN}"
+      COPY_FILE_ERROR _copy_error
+      __CMAKE_INTERNAL ABI
+      )
+
+    # Restore original LC_ALL, LC_MESSAGES, and LANG
+    set(ENV{LC_ALL}      ${_orig_lc_all})
+    set(ENV{LC_MESSAGES} ${_orig_lc_messages})
+    set(ENV{LANG}        ${_orig_lang})
+
+    # Move result from cache to normal variable.
+    set(CMAKE_${lang}_ABI_COMPILED ${CMAKE_${lang}_ABI_COMPILED})
+    unset(CMAKE_${lang}_ABI_COMPILED CACHE)
+    if(CMAKE_${lang}_ABI_COMPILED AND _copy_error)
+      set(CMAKE_${lang}_ABI_COMPILED 0)
+    endif()
+    set(CMAKE_${lang}_ABI_COMPILED ${CMAKE_${lang}_ABI_COMPILED} PARENT_SCOPE)
+
+    # Load the resulting information strings.
+    if(CMAKE_${lang}_ABI_COMPILED)
+      message(CHECK_PASS "done")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Detecting ${lang} compiler ABI info compiled with the following output:\n${OUTPUT}\n\n")
+      file(STRINGS "${BIN}" ABI_STRINGS LIMIT_COUNT 32 REGEX "INFO:[A-Za-z0-9_]+\\[[^]]*\\]")
+      set(ABI_SIZEOF_DPTR "NOTFOUND")
+      set(ABI_BYTE_ORDER "NOTFOUND")
+      set(ABI_NAME "NOTFOUND")
+      foreach(info ${ABI_STRINGS})
+        if("${info}" MATCHES "INFO:sizeof_dptr\\[0*([^]]*)\\]" AND NOT ABI_SIZEOF_DPTR)
+          set(ABI_SIZEOF_DPTR "${CMAKE_MATCH_1}")
+        endif()
+        if("${info}" MATCHES "INFO:byte_order\\[(BIG_ENDIAN|LITTLE_ENDIAN)\\]")
+          set(byte_order "${CMAKE_MATCH_1}")
+          if(ABI_BYTE_ORDER STREQUAL "NOTFOUND")
+            # Tentatively use the value because this is the first occurrence.
+            set(ABI_BYTE_ORDER "${byte_order}")
+          elseif(NOT ABI_BYTE_ORDER STREQUAL "${byte_order}")
+            # Drop value because multiple occurrences do not match.
+            set(ABI_BYTE_ORDER "")
+          endif()
+        endif()
+        if("${info}" MATCHES "INFO:abi\\[([^]]*)\\]" AND NOT ABI_NAME)
+          set(ABI_NAME "${CMAKE_MATCH_1}")
+        endif()
+      endforeach()
+
+      if(ABI_SIZEOF_DPTR)
+        set(CMAKE_${lang}_SIZEOF_DATA_PTR "${ABI_SIZEOF_DPTR}" PARENT_SCOPE)
+      elseif(CMAKE_${lang}_SIZEOF_DATA_PTR_DEFAULT)
+        set(CMAKE_${lang}_SIZEOF_DATA_PTR "${CMAKE_${lang}_SIZEOF_DATA_PTR_DEFAULT}" PARENT_SCOPE)
+      endif()
+
+      if(ABI_BYTE_ORDER)
+        set(CMAKE_${lang}_BYTE_ORDER "${ABI_BYTE_ORDER}" PARENT_SCOPE)
+      endif()
+
+      if(ABI_NAME)
+        set(CMAKE_${lang}_COMPILER_ABI "${ABI_NAME}" PARENT_SCOPE)
+      endif()
+
+      # Parse implicit include directory for this language, if available.
+      if(CMAKE_${lang}_VERBOSE_FLAG)
+        set (implicit_incdirs "")
+        cmake_parse_implicit_include_info("${OUTPUT}" "${lang}"
+          implicit_incdirs log rv)
+        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+          "Parsed ${lang} implicit include dir info from above output: rv=${rv}\n${log}\n\n")
+        if("${rv}" STREQUAL "done")
+          # Entries that we have been told to explicitly pass as standard include
+          # directories will not be implicitly added by the compiler.
+          if(CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES)
+            list(REMOVE_ITEM implicit_incdirs ${CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES})
+          endif()
+
+          # We parsed implicit include directories, so override the default initializer.
+          set(_CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT "${implicit_incdirs}")
+        endif()
+      endif()
+      set(CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES "${_CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT}" PARENT_SCOPE)
+
+      # Parse implicit linker information for this language, if available.
+      set(implicit_dirs "")
+      set(implicit_objs "")
+      set(implicit_libs "")
+      set(implicit_fwks "")
+      if(CMAKE_${lang}_VERBOSE_FLAG)
+        CMAKE_PARSE_IMPLICIT_LINK_INFO("${OUTPUT}" implicit_libs implicit_dirs implicit_fwks log
+          "${CMAKE_${lang}_IMPLICIT_OBJECT_REGEX}"
+          COMPUTE_IMPLICIT_OBJECTS implicit_objs)
+        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+          "Parsed ${lang} implicit link information from above output:\n${log}\n\n")
+      endif()
+      # for VS IDE Intel Fortran we have to figure out the
+      # implicit link path for the fortran run time using
+      # a try-compile
+      if("${lang}" MATCHES "Fortran"
+          AND "${CMAKE_GENERATOR}" MATCHES "Visual Studio")
+        message(CHECK_START "Determine Intel Fortran Compiler Implicit Link Path")
+        # Build a sample project which reports symbols.
+        try_compile(IFORT_LIB_PATH_COMPILED
+          ${CMAKE_BINARY_DIR}/CMakeFiles/IntelVSImplicitPath
+          ${CMAKE_ROOT}/Modules/IntelVSImplicitPath
+          IntelFortranImplicit
+          CMAKE_FLAGS
+          "-DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS}"
+          OUTPUT_VARIABLE _output)
+        file(WRITE
+          "${CMAKE_BINARY_DIR}/CMakeFiles/IntelVSImplicitPath/output.txt"
+          "${_output}")
+        include(${CMAKE_BINARY_DIR}/CMakeFiles/IntelVSImplicitPath/output.cmake OPTIONAL)
+        message(CHECK_PASS "done")
+      endif()
+
+      # Implicit link libraries cannot be used explicitly for multiple
+      # OS X architectures, so we skip it.
+      if(DEFINED CMAKE_OSX_ARCHITECTURES)
+        if("${CMAKE_OSX_ARCHITECTURES}" MATCHES ";")
+          set(implicit_libs "")
+        endif()
+      endif()
+
+      set(CMAKE_${lang}_IMPLICIT_LINK_LIBRARIES "${implicit_libs}" PARENT_SCOPE)
+      set(CMAKE_${lang}_IMPLICIT_LINK_DIRECTORIES "${implicit_dirs}" PARENT_SCOPE)
+      set(CMAKE_${lang}_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "${implicit_fwks}" PARENT_SCOPE)
+
+      cmake_parse_library_architecture(${lang} "${implicit_dirs}" "${implicit_objs}" architecture_flag)
+      if(architecture_flag)
+        set(CMAKE_${lang}_LIBRARY_ARCHITECTURE "${architecture_flag}" PARENT_SCOPE)
+      endif()
+
+    else()
+      message(CHECK_FAIL "failed")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Detecting ${lang} compiler ABI info failed to compile with the following output:\n${OUTPUT}\n${_copy_error}\n\n")
+    endif()
+  endif()
+endfunction()
diff --git a/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake b/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake
new file mode 100644
index 0000000..c62cb7d
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake
@@ -0,0 +1,1111 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+macro(__determine_compiler_id_test testflags_var userflags_var)
+  separate_arguments(testflags UNIX_COMMAND "${${testflags_var}}")
+  CMAKE_DETERMINE_COMPILER_ID_BUILD("${lang}" "${testflags}" "${${userflags_var}}" "${src}")
+  CMAKE_DETERMINE_COMPILER_ID_MATCH_VENDOR("${lang}" "${COMPILER_${lang}_PRODUCED_OUTPUT}")
+
+  if(NOT CMAKE_${lang}_COMPILER_ID)
+    foreach(file ${COMPILER_${lang}_PRODUCED_FILES})
+      CMAKE_DETERMINE_COMPILER_ID_CHECK("${lang}" "${CMAKE_${lang}_COMPILER_ID_DIR}/${file}" "${src}")
+    endforeach()
+  endif()
+endmacro()
+
+# Function to compile a source file to identify the compiler.  This is
+# used internally by CMake and should not be included by user code.
+# If successful, sets CMAKE_<lang>_COMPILER_ID and CMAKE_<lang>_PLATFORM_ID
+
+function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src)
+  # Make sure the compiler arguments are clean.
+  string(STRIP "${CMAKE_${lang}_COMPILER_ARG1}" CMAKE_${lang}_COMPILER_ID_ARG1)
+  string(REGEX REPLACE " +" ";" CMAKE_${lang}_COMPILER_ID_ARG1 "${CMAKE_${lang}_COMPILER_ID_ARG1}")
+
+  # Make sure user-specified compiler flags are used.
+  if(CMAKE_${lang}_FLAGS)
+    set(CMAKE_${lang}_COMPILER_ID_FLAGS ${CMAKE_${lang}_FLAGS})
+  elseif(DEFINED ENV{${flagvar}})
+    set(CMAKE_${lang}_COMPILER_ID_FLAGS $ENV{${flagvar}})
+  else(CMAKE_${lang}_FLAGS_INIT)
+    set(CMAKE_${lang}_COMPILER_ID_FLAGS ${CMAKE_${lang}_FLAGS_INIT})
+  endif()
+  string(REPLACE " " ";" CMAKE_${lang}_COMPILER_ID_FLAGS_LIST "${CMAKE_${lang}_COMPILER_ID_FLAGS}")
+
+  # Compute the directory in which to run the test.
+  set(CMAKE_${lang}_COMPILER_ID_DIR ${CMAKE_PLATFORM_INFO_DIR}/CompilerId${lang})
+
+  # If we REQUIRE_SUCCESS, i.e. TEST_FLAGS_FIRST has the correct flags, we still need to
+  # try two combinations: with COMPILER_ID_FLAGS (from user) and without (see issue #21869).
+  if(CMAKE_${lang}_COMPILER_ID_REQUIRE_SUCCESS)
+    # If there COMPILER_ID_FLAGS is empty we can error for the first invocation.
+    if("${CMAKE_${lang}_COMPILER_ID_FLAGS_LIST}" STREQUAL "")
+      set(__compiler_id_require_success TRUE)
+    endif()
+
+    foreach(userflags "${CMAKE_${lang}_COMPILER_ID_FLAGS_LIST}" "")
+      set(testflags "${CMAKE_${lang}_COMPILER_ID_TEST_FLAGS_FIRST}")
+      __determine_compiler_id_test(testflags userflags)
+      if(CMAKE_${lang}_COMPILER_ID)
+        break()
+      endif()
+      set(__compiler_id_require_success TRUE)
+    endforeach()
+  else()
+    # Try building with no extra flags and then try each set
+    # of helper flags.  Stop when the compiler is identified.
+    foreach(userflags "${CMAKE_${lang}_COMPILER_ID_FLAGS_LIST}" "")
+      foreach(testflags ${CMAKE_${lang}_COMPILER_ID_TEST_FLAGS_FIRST} "" ${CMAKE_${lang}_COMPILER_ID_TEST_FLAGS})
+        __determine_compiler_id_test(testflags userflags)
+        if(CMAKE_${lang}_COMPILER_ID)
+          break()
+        endif()
+      endforeach()
+      if(CMAKE_${lang}_COMPILER_ID)
+        break()
+      endif()
+    endforeach()
+  endif()
+
+  # Check if compiler id detection gave us the compiler tool.
+  if(CMAKE_${lang}_COMPILER_ID_TOOL)
+    set(CMAKE_${lang}_COMPILER "${CMAKE_${lang}_COMPILER_ID_TOOL}")
+    set(CMAKE_${lang}_COMPILER "${CMAKE_${lang}_COMPILER_ID_TOOL}" PARENT_SCOPE)
+  elseif(NOT CMAKE_${lang}_COMPILER)
+    set(CMAKE_${lang}_COMPILER "CMAKE_${lang}_COMPILER-NOTFOUND" PARENT_SCOPE)
+  endif()
+
+  # If the compiler is still unknown, try to query its vendor.
+  if(CMAKE_${lang}_COMPILER AND NOT CMAKE_${lang}_COMPILER_ID)
+    foreach(userflags "${CMAKE_${lang}_COMPILER_ID_FLAGS_LIST}" "")
+      CMAKE_DETERMINE_COMPILER_ID_VENDOR(${lang} "${userflags}")
+    endforeach()
+  endif()
+
+  # If the compiler is still unknown, fallback to GHS
+  if(NOT CMAKE_${lang}_COMPILER_ID  AND "${CMAKE_GENERATOR}" MATCHES "Green Hills MULTI")
+    set(CMAKE_${lang}_COMPILER_ID GHS)
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "The ${lang} compiler identification is falling back to GHS.\n\n")
+  endif()
+
+  # CUDA < 7.5 is missing version macros
+  if(lang STREQUAL "CUDA"
+     AND CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
+     AND NOT CMAKE_${lang}_COMPILER_VERSION)
+    execute_process(
+      COMMAND "${CMAKE_${lang}_COMPILER}"
+      --version
+      OUTPUT_VARIABLE output ERROR_VARIABLE output
+      RESULT_VARIABLE result
+      TIMEOUT 10
+    )
+    if(output MATCHES [=[ V([0-9]+)\.([0-9]+)\.([0-9]+)]=])
+      set(CMAKE_${lang}_COMPILER_VERSION "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}")
+    endif()
+  endif()
+
+  # For Swift we need to explicitly query the version.
+  if(lang STREQUAL "Swift"
+     AND CMAKE_${lang}_COMPILER
+     AND NOT CMAKE_${lang}_COMPILER_VERSION)
+    execute_process(
+      COMMAND "${CMAKE_${lang}_COMPILER}"
+      -version
+      OUTPUT_VARIABLE output ERROR_VARIABLE output
+      RESULT_VARIABLE result
+      TIMEOUT 10
+    )
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+      "Running the ${lang} compiler: \"${CMAKE_${lang}_COMPILER}\" -version\n"
+      "${output}\n"
+      )
+
+    if(output MATCHES [[Swift version ([0-9]+\.[0-9]+(\.[0-9]+)?)]])
+      set(CMAKE_${lang}_COMPILER_VERSION "${CMAKE_MATCH_1}")
+      if(NOT CMAKE_${lang}_COMPILER_ID)
+        set(CMAKE_Swift_COMPILER_ID "Apple")
+      endif()
+    endif()
+  endif()
+
+  # For ISPC we need to explicitly query the version.
+  if(lang STREQUAL "ISPC"
+     AND CMAKE_${lang}_COMPILER
+     AND NOT CMAKE_${lang}_COMPILER_VERSION)
+    execute_process(
+      COMMAND "${CMAKE_${lang}_COMPILER}"
+      --version
+      OUTPUT_VARIABLE output ERROR_VARIABLE output
+      RESULT_VARIABLE result
+      TIMEOUT 10
+    )
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+      "Running the ${lang} compiler: \"${CMAKE_${lang}_COMPILER}\" -version\n"
+      "${output}\n"
+      )
+
+    if(output MATCHES [[ISPC\), ([0-9]+\.[0-9]+(\.[0-9]+)?)]])
+      set(CMAKE_${lang}_COMPILER_VERSION "${CMAKE_MATCH_1}")
+    endif()
+  endif()
+
+  if (COMPILER_QNXNTO AND CMAKE_${lang}_COMPILER_ID STREQUAL "GNU")
+    execute_process(
+      COMMAND "${CMAKE_${lang}_COMPILER}"
+      -V
+      OUTPUT_VARIABLE output ERROR_VARIABLE output
+      RESULT_VARIABLE result
+      TIMEOUT 10
+      )
+    if (output MATCHES "targets available")
+      set(CMAKE_${lang}_COMPILER_ID QCC)
+      # http://community.qnx.com/sf/discussion/do/listPosts/projects.community/discussion.qnx_momentics_community_support.topc3555?_pagenum=2
+      # The qcc driver does not itself have a version.
+    endif()
+  endif()
+
+  # The Fujitsu compiler does not always convey version information through
+  # preprocessor symbols so we extract through command line info
+  if (CMAKE_${lang}_COMPILER_ID STREQUAL "Fujitsu")
+    if(NOT CMAKE_${lang}_COMPILER_VERSION)
+      execute_process(
+        COMMAND "${CMAKE_${lang}_COMPILER}" -V
+        OUTPUT_VARIABLE output
+        ERROR_VARIABLE output
+        RESULT_VARIABLE result
+        TIMEOUT 10
+      )
+      if (result EQUAL 0)
+        if (output MATCHES [[Fujitsu [^ ]* Compiler ([0-9]+\.[0-9]+\.[0-9]+)]])
+          set(CMAKE_${lang}_COMPILER_VERSION "${CMAKE_MATCH_1}")
+        endif()
+      endif()
+    endif()
+  endif()
+
+  # if the format is unknown after all files have been checked, put "Unknown" in the cache
+  if(NOT CMAKE_EXECUTABLE_FORMAT)
+    set(CMAKE_EXECUTABLE_FORMAT "Unknown" CACHE INTERNAL "Executable file format")
+  endif()
+
+  if((CMAKE_GENERATOR MATCHES "^Ninja"
+        OR ((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+          AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"))
+      AND MSVC_${lang}_ARCHITECTURE_ID)
+    foreach(userflags "${CMAKE_${lang}_COMPILER_ID_FLAGS_LIST}" "")
+      CMAKE_DETERMINE_MSVC_SHOWINCLUDES_PREFIX(${lang} "${userflags}")
+    endforeach()
+  else()
+    set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "")
+  endif()
+
+  set(_variant "")
+  if("x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xClang"
+    OR "x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xIntelLLVM")
+    if("x${CMAKE_${lang}_SIMULATE_ID}" STREQUAL "xMSVC")
+      if(CMAKE_GENERATOR MATCHES "Visual Studio")
+        set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "MSVC")
+      else()
+        # Test whether an MSVC-like command-line option works.
+        execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" -?
+          RESULT_VARIABLE _clang_result
+          OUTPUT_VARIABLE _clang_stdout
+          ERROR_VARIABLE _clang_stderr)
+        if(_clang_result EQUAL 0)
+          set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "MSVC")
+        else()
+          set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "GNU")
+        endif()
+      endif()
+      set(_variant " with ${CMAKE_${lang}_COMPILER_FRONTEND_VARIANT}-like command-line")
+    else()
+      set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "GNU")
+    endif()
+  elseif("x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xFujitsuClang")
+    set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "GNU")
+  else()
+    set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "")
+  endif()
+
+  # Display the final identification result.
+  if(CMAKE_${lang}_COMPILER_ID)
+    if(CMAKE_${lang}_COMPILER_VERSION)
+      set(_version " ${CMAKE_${lang}_COMPILER_VERSION}")
+    else()
+      set(_version "")
+    endif()
+    if(CMAKE_${lang}_COMPILER_ARCHITECTURE_ID AND "x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xIAR")
+      set(_archid " ${CMAKE_${lang}_COMPILER_ARCHITECTURE_ID}")
+    else()
+      set(_archid "")
+    endif()
+    message(STATUS "The ${lang} compiler identification is "
+      "${CMAKE_${lang}_COMPILER_ID}${_archid}${_version}${_variant}")
+    unset(_archid)
+    unset(_version)
+    unset(_variant)
+  else()
+    message(STATUS "The ${lang} compiler identification is unknown")
+  endif()
+
+  if(lang STREQUAL "Fortran" AND CMAKE_${lang}_COMPILER_ID STREQUAL "XL")
+    set(CMAKE_${lang}_XL_CPP "${CMAKE_${lang}_COMPILER_ID_CPP}" PARENT_SCOPE)
+  endif()
+
+  set(CMAKE_${lang}_COMPILER_ID "${CMAKE_${lang}_COMPILER_ID}" PARENT_SCOPE)
+  set(CMAKE_${lang}_PLATFORM_ID "${CMAKE_${lang}_PLATFORM_ID}" PARENT_SCOPE)
+  set(CMAKE_${lang}_COMPILER_ARCHITECTURE_ID "${CMAKE_${lang}_COMPILER_ARCHITECTURE_ID}" PARENT_SCOPE)
+  set(MSVC_${lang}_ARCHITECTURE_ID "${MSVC_${lang}_ARCHITECTURE_ID}"
+    PARENT_SCOPE)
+  set(CMAKE_${lang}_XCODE_ARCHS "${CMAKE_${lang}_XCODE_ARCHS}" PARENT_SCOPE)
+  set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "${CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX}" PARENT_SCOPE)
+  set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "${CMAKE_${lang}_COMPILER_FRONTEND_VARIANT}" PARENT_SCOPE)
+  set(CMAKE_${lang}_COMPILER_VERSION "${CMAKE_${lang}_COMPILER_VERSION}" PARENT_SCOPE)
+  set(CMAKE_${lang}_COMPILER_VERSION_INTERNAL "${CMAKE_${lang}_COMPILER_VERSION_INTERNAL}" PARENT_SCOPE)
+  set(CMAKE_${lang}_COMPILER_WRAPPER "${CMAKE_${lang}_COMPILER_WRAPPER}" PARENT_SCOPE)
+  set(CMAKE_${lang}_SIMULATE_ID "${CMAKE_${lang}_SIMULATE_ID}" PARENT_SCOPE)
+  set(CMAKE_${lang}_SIMULATE_VERSION "${CMAKE_${lang}_SIMULATE_VERSION}" PARENT_SCOPE)
+  set(CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT "${CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT}" PARENT_SCOPE)
+  set(CMAKE_${lang}_EXTENSIONS_COMPUTED_DEFAULT "${CMAKE_${lang}_EXTENSIONS_COMPUTED_DEFAULT}" PARENT_SCOPE)
+  set(CMAKE_${lang}_COMPILER_PRODUCED_OUTPUT "${COMPILER_${lang}_PRODUCED_OUTPUT}" PARENT_SCOPE)
+  set(CMAKE_${lang}_COMPILER_PRODUCED_FILES "${COMPILER_${lang}_PRODUCED_FILES}" PARENT_SCOPE)
+endfunction()
+
+include(CMakeCompilerIdDetection)
+
+#-----------------------------------------------------------------------------
+# Function to write the compiler id source file.
+function(CMAKE_DETERMINE_COMPILER_ID_WRITE lang src)
+  find_file(src_in ${src}.in PATHS ${CMAKE_ROOT}/Modules ${CMAKE_MODULE_PATH} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+  file(READ ${src_in} ID_CONTENT_IN)
+
+  compiler_id_detection(CMAKE_${lang}_COMPILER_ID_CONTENT ${lang}
+    ID_STRING
+    VERSION_STRINGS
+    PLATFORM_DEFAULT_COMPILER
+  )
+
+  unset(src_in CACHE)
+  string(CONFIGURE "${ID_CONTENT_IN}" ID_CONTENT_OUT @ONLY)
+  file(WRITE ${CMAKE_${lang}_COMPILER_ID_DIR}/${src} "${ID_CONTENT_OUT}")
+endfunction()
+
+#-----------------------------------------------------------------------------
+# Function to build the compiler id source file and look for output
+# files.
+function(CMAKE_DETERMINE_COMPILER_ID_BUILD lang testflags userflags src)
+  # Create a clean working directory.
+  file(REMOVE_RECURSE ${CMAKE_${lang}_COMPILER_ID_DIR})
+  file(MAKE_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR})
+  file(MAKE_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR}/tmp)
+  CMAKE_DETERMINE_COMPILER_ID_WRITE("${lang}" "${src}")
+
+  # Construct a description of this test case.
+  set(COMPILER_DESCRIPTION
+    "Compiler: ${CMAKE_${lang}_COMPILER} ${CMAKE_${lang}_COMPILER_ID_ARG1}
+Build flags: ${userflags}
+Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS}
+")
+
+  # Compile the compiler identification source.
+  if("${CMAKE_GENERATOR}" MATCHES "Visual Studio ([0-9]+)")
+    set(vs_version ${CMAKE_MATCH_1})
+    set(id_platform ${CMAKE_VS_PLATFORM_NAME})
+    set(id_lang "${lang}")
+    set(id_PostBuildEvent_Command "")
+    if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "^[Ll][Ll][Vv][Mm](_v[0-9]+(_xp)?)?$")
+      set(id_cl_var "ClangClExecutable")
+    elseif(CMAKE_VS_PLATFORM_TOOLSET MATCHES "^[Cc][Ll][Aa][Nn][Gg]([Cc][Ll]$|_[0-9])")
+      set(id_cl "$(CLToolExe)")
+    elseif(CMAKE_VS_PLATFORM_TOOLSET MATCHES "v[0-9]+_clang_.*")
+      set(id_cl clang.exe)
+    # Executable names have been chosen according documentation
+    # URL: (https://software.intel.com/content/www/us/en/develop/documentation/get-started-with-dpcpp-compiler/top.html#top_GUID-A9B4C91D-97AC-450D-9742-9D895BC8AEE1)
+    elseif(CMAKE_VS_PLATFORM_TOOLSET MATCHES "Intel")
+      if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "DPC\\+\\+ Compiler")
+        set(id_cl dpcpp.exe)
+      elseif(CMAKE_VS_PLATFORM_TOOLSET MATCHES "C\\+\\+ Compiler 2021")
+        set(id_cl icx.exe)
+      elseif(CMAKE_VS_PLATFORM_TOOLSET MATCHES "C\\+\\+ Compiler")
+        set(id_cl icl.exe)
+      endif()
+    else()
+      set(id_cl cl.exe)
+    endif()
+    if(CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android")
+      set(v NsightTegra)
+      set(ext vcxproj)
+      if(lang STREQUAL CXX)
+        set(id_gcc g++)
+        set(id_clang clang++)
+      else()
+        set(id_gcc gcc)
+        set(id_clang clang)
+      endif()
+    elseif(lang STREQUAL Fortran)
+      set(v Intel)
+      set(ext vfproj)
+      set(id_cl ifort.exe)
+    elseif(lang STREQUAL CSharp)
+      set(v 10)
+      set(ext csproj)
+      set(id_cl csc.exe)
+    elseif(NOT "${vs_version}" VERSION_LESS 10)
+      set(v 10)
+      set(ext vcxproj)
+    else()
+      set(id_version ${vs_version}.00)
+      set(v 7)
+      set(ext vcproj)
+    endif()
+    if(CMAKE_VS_PLATFORM_TOOLSET)
+      if(CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android")
+        set(id_toolset "<NdkToolchainVersion>${CMAKE_VS_PLATFORM_TOOLSET}</NdkToolchainVersion>")
+      else()
+        set(id_toolset "<PlatformToolset>${CMAKE_VS_PLATFORM_TOOLSET}</PlatformToolset>")
+        if(CMAKE_VS_PLATFORM_TOOLSET_VERSION)
+          set(id_sep "\\")
+          if(CMAKE_VS_PLATFORM_TOOLSET_VERSION VERSION_GREATER_EQUAL "14.20")
+            if(EXISTS "${CMAKE_GENERATOR_INSTANCE}/VC/Auxiliary/Build.${CMAKE_VS_PLATFORM_TOOLSET_VERSION}/Microsoft.VCToolsVersion.${CMAKE_VS_PLATFORM_TOOLSET_VERSION}.props")
+              set(id_sep ".")
+            endif()
+          endif()
+          set(id_toolset_version_props "<Import Project=\"${CMAKE_GENERATOR_INSTANCE}\\VC\\Auxiliary\\Build${id_sep}${CMAKE_VS_PLATFORM_TOOLSET_VERSION}\\Microsoft.VCToolsVersion.${CMAKE_VS_PLATFORM_TOOLSET_VERSION}.props\" />")
+          unset(id_sep)
+        endif()
+      endif()
+    else()
+      set(id_toolset "")
+      set(id_toolset_version_props "")
+    endif()
+    if(CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE)
+      set(id_PreferredToolArchitecture "<PreferredToolArchitecture>${CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE}</PreferredToolArchitecture>")
+    else()
+      set(id_PreferredToolArchitecture "")
+    endif()
+    if(CMAKE_SYSTEM_NAME STREQUAL "WindowsPhone")
+      set(id_keyword "Win32Proj")
+      set(id_system "<ApplicationType>Windows Phone</ApplicationType>")
+    elseif(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+      set(id_keyword "Win32Proj")
+      set(id_system "<ApplicationType>Windows Store</ApplicationType>")
+    elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
+      set(id_keyword "Android")
+      set(id_system "<ApplicationType>Android</ApplicationType>")
+    else()
+      set(id_keyword "Win32Proj")
+      set(id_system "")
+    endif()
+    if(id_keyword STREQUAL "Android")
+      if(CMAKE_GENERATOR MATCHES "Visual Studio 14")
+        set(id_system_version "<ApplicationTypeRevision>2.0</ApplicationTypeRevision>")
+      elseif(CMAKE_GENERATOR MATCHES "Visual Studio 1[56]")
+        set(id_system_version "<ApplicationTypeRevision>3.0</ApplicationTypeRevision>")
+      else()
+        set(id_system_version "")
+      endif()
+    elseif(id_system AND CMAKE_SYSTEM_VERSION MATCHES "^([0-9]+\\.[0-9]+)")
+      set(id_system_version "<ApplicationTypeRevision>${CMAKE_MATCH_1}</ApplicationTypeRevision>")
+    else()
+      set(id_system_version "")
+    endif()
+    if(id_keyword STREQUAL "Android")
+      set(id_config_type "DynamicLibrary")
+    else()
+      set(id_config_type "Application")
+    endif()
+    if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION)
+      set(id_WindowsTargetPlatformVersion "<WindowsTargetPlatformVersion>${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}</WindowsTargetPlatformVersion>")
+    endif()
+    if(CMAKE_VS_PLATFORM_TOOLSET_VCTARGETS_CUSTOM_DIR)
+      set(id_ToolsetVCTargetsDir "<VCTargetsPath>${CMAKE_VS_PLATFORM_TOOLSET_VCTARGETS_CUSTOM_DIR}</VCTargetsPath>")
+    endif()
+    if(CMAKE_VS_TARGET_FRAMEWORK_VERSION)
+      set(id_TargetFrameworkVersion "<TargetFrameworkVersion>${CMAKE_VS_TARGET_FRAMEWORK_VERSION}</TargetFrameworkVersion>")
+    endif()
+    if(CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER)
+      set(id_TargetFrameworkIdentifier "<TargetFrameworkIdentifier>${CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER}</TargetFrameworkIdentifier>")
+    endif()
+    if(CMAKE_VS_TARGET_FRAMEWORK_TARGETS_VERSION)
+      set(id_TargetFrameworkTargetsVersion "<TargetFrameworkTargetsVersion>${CMAKE_VS_TARGET_FRAMEWORK_TARGETS_VERSION}</TargetFrameworkTargetsVersion>")
+    endif()
+    set(id_CustomGlobals "")
+    foreach(pair IN LISTS CMAKE_VS_GLOBALS)
+      if("${pair}" MATCHES "([^=]+)=(.*)$")
+        string(APPEND id_CustomGlobals "<${CMAKE_MATCH_1}>${CMAKE_MATCH_2}</${CMAKE_MATCH_1}>\n    ")
+      endif()
+    endforeach()
+    if(id_keyword STREQUAL "Android")
+      set(id_WindowsSDKDesktopARMSupport "")
+    elseif(id_platform STREQUAL "ARM64")
+      set(id_WindowsSDKDesktopARMSupport "<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>")
+    elseif(id_platform STREQUAL "ARM")
+      set(id_WindowsSDKDesktopARMSupport "<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>")
+    else()
+      set(id_WindowsSDKDesktopARMSupport "")
+    endif()
+    if(CMAKE_VS_WINCE_VERSION)
+      set(id_entrypoint "mainACRTStartup")
+      if("${vs_version}" VERSION_LESS 9)
+        set(id_subsystem 9)
+      else()
+        set(id_subsystem 8)
+      endif()
+    else()
+      set(id_subsystem 1)
+    endif()
+    set(id_dir ${CMAKE_${lang}_COMPILER_ID_DIR})
+    set(id_src "${src}")
+    set(id_compile "ClCompile")
+    if(id_cl_var)
+      set(id_PostBuildEvent_Command "echo CMAKE_${lang}_COMPILER=$(${id_cl_var})")
+    else()
+      set(id_PostBuildEvent_Command "for %%i in (${id_cl}) do %40echo CMAKE_${lang}_COMPILER=%%~$PATH:i")
+    endif()
+    set(id_Import_props "")
+    set(id_Import_targets "")
+    set(id_ItemDefinitionGroup_entry "")
+    set(id_Link_AdditionalDependencies "")
+    if(lang STREQUAL CUDA)
+      if(NOT CMAKE_VS_PLATFORM_TOOLSET_CUDA)
+        message(FATAL_ERROR "No CUDA toolset found.")
+      endif()
+      set(cuda_tools "CUDA ${CMAKE_VS_PLATFORM_TOOLSET_CUDA}")
+      set(id_compile "CudaCompile")
+      if(CMAKE_VS_PLATFORM_NAME STREQUAL x64)
+        set(cuda_target "<TargetMachinePlatform>64</TargetMachinePlatform>")
+      endif()
+      foreach(arch ${CMAKE_CUDA_ARCHITECTURES})
+        string(REGEX MATCH "[0-9]+" arch_name "${arch}")
+        string(APPEND cuda_codegen "compute_${arch_name},sm_${arch_name};")
+      endforeach()
+      set(id_ItemDefinitionGroup_entry "<CudaCompile>${cuda_target}<AdditionalOptions>%(AdditionalOptions)-v</AdditionalOptions><CodeGeneration>${cuda_codegen}</CodeGeneration></CudaCompile>")
+      set(id_PostBuildEvent_Command [[echo CMAKE_CUDA_COMPILER=$(CudaToolkitBinDir)\nvcc.exe]])
+      if(CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR)
+        # check for legacy cuda custom toolkit folder structure
+        if(EXISTS ${CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR}nvcc)
+            set(id_CudaToolkitCustomDir "<CudaToolkitCustomDir>${CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR}nvcc</CudaToolkitCustomDir>")
+        else()
+            set(id_CudaToolkitCustomDir "<CudaToolkitCustomDir>${CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR}</CudaToolkitCustomDir>")
+        endif()
+        if(EXISTS ${CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR}CUDAVisualStudioIntegration)
+            string(CONCAT id_Import_props "<Import Project=\"${CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR}CUDAVisualStudioIntegration\\extras\\visual_studio_integration\\MSBuildExtensions\\${cuda_tools}.props\" />")
+            string(CONCAT id_Import_targets "<Import Project=\"${CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR}CUDAVisualStudioIntegration\\extras\\visual_studio_integration\\MSBuildExtensions\\${cuda_tools}.targets\" />")
+        else()
+            string(CONCAT id_Import_props "<Import Project=\"${CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR}\\extras\\visual_studio_integration\\MSBuildExtensions\\${cuda_tools}.props\" />")
+            string(CONCAT id_Import_targets "<Import Project=\"${CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR}\\extras\\visual_studio_integration\\MSBuildExtensions\\${cuda_tools}.targets\" />")
+        endif()
+      else()
+        string(CONCAT id_Import_props [[<Import Project="$(VCTargetsPath)\BuildCustomizations\]] "${cuda_tools}" [[.props" />]])
+        string(CONCAT id_Import_targets [[<Import Project="$(VCTargetsPath)\BuildCustomizations\]] "${cuda_tools}" [[.targets" />]])
+      endif()
+      if(CMAKE_CUDA_FLAGS MATCHES "(^| )-cudart +shared( |$)")
+        set(id_Link_AdditionalDependencies "<AdditionalDependencies>cudart.lib</AdditionalDependencies>")
+      else()
+        set(id_Link_AdditionalDependencies "<AdditionalDependencies>cudart_static.lib</AdditionalDependencies>")
+      endif()
+    endif()
+    configure_file(${CMAKE_ROOT}/Modules/CompilerId/VS-${v}.${ext}.in
+      ${id_dir}/CompilerId${lang}.${ext} @ONLY)
+    if(CMAKE_VS_MSBUILD_COMMAND AND NOT lang STREQUAL "Fortran")
+      set(command "${CMAKE_VS_MSBUILD_COMMAND}" "CompilerId${lang}.${ext}"
+        "/p:Configuration=Debug" "/p:Platform=${id_platform}" "/p:VisualStudioVersion=${vs_version}.0"
+        )
+    elseif(CMAKE_VS_DEVENV_COMMAND)
+      set(command "${CMAKE_VS_DEVENV_COMMAND}" "CompilerId${lang}.${ext}" "/build" "Debug")
+    else()
+      set(command "")
+    endif()
+    if(command)
+      execute_process(
+        COMMAND ${command}
+        WORKING_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR}
+        OUTPUT_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
+        ERROR_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
+        RESULT_VARIABLE CMAKE_${lang}_COMPILER_ID_RESULT
+        )
+    else()
+      set(CMAKE_${lang}_COMPILER_ID_RESULT 1)
+      set(CMAKE_${lang}_COMPILER_ID_OUTPUT "VS environment not known to support ${lang}")
+    endif()
+    # Match the compiler location line printed out.
+    if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "CMAKE_${lang}_COMPILER=([^%\r\n]+)[\r\n]")
+      # Strip VS diagnostic output from the end of the line.
+      string(REGEX REPLACE " \\(TaskId:[0-9]*\\)$" "" _comp "${CMAKE_MATCH_1}")
+      if(EXISTS "${_comp}")
+        file(TO_CMAKE_PATH "${_comp}" _comp)
+        set(CMAKE_${lang}_COMPILER_ID_TOOL "${_comp}" PARENT_SCOPE)
+      endif()
+    endif()
+  elseif("${CMAKE_GENERATOR}" MATCHES "Xcode")
+    set(id_lang "${lang}")
+    set(id_type ${CMAKE_${lang}_COMPILER_XCODE_TYPE})
+    set(id_dir ${CMAKE_${lang}_COMPILER_ID_DIR})
+    set(id_src "${src}")
+    if(CMAKE_XCODE_PLATFORM_TOOLSET)
+      set(id_toolset "GCC_VERSION = ${CMAKE_XCODE_PLATFORM_TOOLSET};")
+    else()
+      set(id_toolset "")
+    endif()
+    set(id_lang_version "")
+    if("x${lang}" STREQUAL "xSwift")
+      if(CMAKE_Swift_LANGUAGE_VERSION)
+        set(id_lang_version "SWIFT_VERSION = ${CMAKE_Swift_LANGUAGE_VERSION};")
+      elseif(XCODE_VERSION VERSION_GREATER_EQUAL 10.2)
+        set(id_lang_version "SWIFT_VERSION = 4.0;")
+      elseif(XCODE_VERSION VERSION_GREATER_EQUAL 8.3)
+        set(id_lang_version "SWIFT_VERSION = 3.0;")
+      else()
+        set(id_lang_version "SWIFT_VERSION = 2.3;")
+      endif()
+    elseif("x${lang}" STREQUAL "xC" OR "x${lang}" STREQUAL "xOBJC")
+      if(CMAKE_${lang}_COMPILER_ID_FLAGS MATCHES "(^| )(-std=[^ ]+)( |$)")
+        set(id_lang_version "OTHER_CFLAGS = \"${CMAKE_MATCH_2}\";")
+      endif()
+    elseif("x${lang}" STREQUAL "xCXX" OR "x${lang}" STREQUAL "xOBJCXX")
+      if(CMAKE_${lang}_COMPILER_ID_FLAGS MATCHES "(^| )(-std=[^ ]+)( |$)")
+        set(id_lang_version "OTHER_CPLUSPLUSFLAGS = \"${CMAKE_MATCH_2}\";")
+      endif()
+    endif()
+    if(CMAKE_OSX_DEPLOYMENT_TARGET)
+      set(id_deployment_target
+        "MACOSX_DEPLOYMENT_TARGET = \"${CMAKE_OSX_DEPLOYMENT_TARGET}\";")
+    else()
+      set(id_deployment_target "")
+    endif()
+    set(id_product_type "com.apple.product-type.tool")
+    if(CMAKE_OSX_SYSROOT)
+      set(id_sdkroot "SDKROOT = \"${CMAKE_OSX_SYSROOT}\";")
+      if(CMAKE_OSX_SYSROOT MATCHES "(^|/)[Ii][Pp][Hh][Oo][Nn][Ee]" OR
+        CMAKE_OSX_SYSROOT MATCHES "(^|/)[Aa][Pp][Pp][Ll][Ee][Tt][Vv]")
+        set(id_product_type "com.apple.product-type.bundle.unit-test")
+      elseif(CMAKE_OSX_SYSROOT MATCHES "(^|/)[Ww][Aa][Tt][Cc][Hh]")
+        set(id_product_type "com.apple.product-type.framework")
+      endif()
+    else()
+      set(id_sdkroot "")
+    endif()
+    set(id_clang_cxx_library "")
+    set(stdlib_regex "(^| )(-stdlib=)([^ ]+)( |$)")
+    string(REGEX MATCHALL "${stdlib_regex}" all_stdlib_matches "${CMAKE_CXX_FLAGS}")
+    if(all_stdlib_matches)
+      list(GET all_stdlib_matches "-1" last_stdlib_match)
+      if(last_stdlib_match MATCHES "${stdlib_regex}")
+        set(id_clang_cxx_library "CLANG_CXX_LIBRARY = \"${CMAKE_MATCH_3}\";")
+      endif()
+    endif()
+    if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_OSX_SYSROOT MATCHES "^$|[Mm][Aa][Cc][Oo][Ss]")
+      # When targeting macOS, use only the host architecture.
+      if (_CMAKE_APPLE_ARCHS_DEFAULT)
+        set(id_archs "ARCHS = \"${_CMAKE_APPLE_ARCHS_DEFAULT}\";")
+        set(id_arch_active "ONLY_ACTIVE_ARCH = NO;")
+      else()
+        set(id_archs [[ARCHS = "$(NATIVE_ARCH_ACTUAL)";]])
+        set(id_arch_active "ONLY_ACTIVE_ARCH = YES;")
+      endif()
+    else()
+      set(id_archs "")
+      set(id_arch_active "ONLY_ACTIVE_ARCH = YES;")
+    endif()
+    configure_file(${CMAKE_ROOT}/Modules/CompilerId/Xcode-3.pbxproj.in
+      ${id_dir}/CompilerId${lang}.xcodeproj/project.pbxproj @ONLY)
+    unset(_ENV_MACOSX_DEPLOYMENT_TARGET)
+    if(DEFINED ENV{MACOSX_DEPLOYMENT_TARGET})
+      set(_ENV_MACOSX_DEPLOYMENT_TARGET "$ENV{MACOSX_DEPLOYMENT_TARGET}")
+      set(ENV{MACOSX_DEPLOYMENT_TARGET} "")
+    endif()
+    execute_process(COMMAND xcodebuild
+      WORKING_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR}
+      OUTPUT_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
+      ERROR_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
+      RESULT_VARIABLE CMAKE_${lang}_COMPILER_ID_RESULT
+      )
+    if(DEFINED _ENV_MACOSX_DEPLOYMENT_TARGET)
+      set(ENV{MACOSX_DEPLOYMENT_TARGET} "${_ENV_MACOSX_DEPLOYMENT_TARGET}")
+    endif()
+
+    if(DEFINED CMAKE_${lang}_COMPILER_ID_TOOL_MATCH_REGEX)
+      if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "${CMAKE_${lang}_COMPILER_ID_TOOL_MATCH_REGEX}")
+        set(_comp "${CMAKE_MATCH_${CMAKE_${lang}_COMPILER_ID_TOOL_MATCH_INDEX}}")
+        if(EXISTS "${_comp}")
+          set(CMAKE_${lang}_COMPILER_ID_TOOL "${_comp}" PARENT_SCOPE)
+        endif()
+      endif()
+    endif()
+    if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "ARCHS=([^%\r\n]+)[\r\n]")
+      set(CMAKE_${lang}_XCODE_ARCHS "${CMAKE_MATCH_1}")
+      separate_arguments(CMAKE_${lang}_XCODE_ARCHS)
+      set(CMAKE_${lang}_XCODE_ARCHS "${CMAKE_${lang}_XCODE_ARCHS}" PARENT_SCOPE)
+    endif()
+  elseif("${CMAKE_GENERATOR}" MATCHES "Green Hills MULTI")
+    set(id_dir ${CMAKE_${lang}_COMPILER_ID_DIR})
+    set(id_src "${src}")
+    if (GHS_PRIMARY_TARGET)
+      set(ghs_primary_target "${GHS_PRIMARY_TARGET}")
+    else()
+      set(ghs_primary_target "${CMAKE_GENERATOR_PLATFORM}_${GHS_TARGET_PLATFORM}.tgt")
+    endif()
+    if ("${GHS_TARGET_PLATFORM}" MATCHES "integrity")
+        set(bsp_name "macro GHS_BSP=${GHS_BSP_NAME}")
+        set(os_dir "macro GHS_OS=${GHS_OS_DIR}")
+    endif()
+    set(command "${CMAKE_MAKE_PROGRAM}" "-commands" "-top" "GHS_default.gpj")
+    configure_file(${CMAKE_ROOT}/Modules/CompilerId/GHS_default.gpj.in
+      ${id_dir}/GHS_default.gpj @ONLY)
+    configure_file(${CMAKE_ROOT}/Modules/CompilerId/GHS_lib.gpj.in
+      ${id_dir}/GHS_lib.gpj @ONLY)
+    execute_process(COMMAND ${command}
+      WORKING_DIRECTORY ${id_dir}
+      OUTPUT_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
+      ERROR_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
+      RESULT_VARIABLE CMAKE_${lang}_COMPILER_ID_RESULT
+      )
+    # Match the compiler location line printed out.
+    set(ghs_toolpath "${CMAKE_MAKE_PROGRAM}")
+    if(CMAKE_HOST_UNIX)
+      string(REPLACE "/gbuild" "/" ghs_toolpath ${ghs_toolpath})
+    else()
+      string(REPLACE "/gbuild.exe" "/" ghs_toolpath ${ghs_toolpath})
+      string(REPLACE / "\\\\" ghs_toolpath ${ghs_toolpath})
+    endif()
+    if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "(${ghs_toolpath}[^ ]*)")
+      if(CMAKE_HOST_UNIX)
+        set(_comp "${CMAKE_MATCH_1}")
+      else()
+        set(_comp "${CMAKE_MATCH_1}.exe")
+      endif()
+      if(EXISTS "${_comp}")
+        file(TO_CMAKE_PATH "${_comp}" _comp)
+        set(CMAKE_${lang}_COMPILER_ID_TOOL "${_comp}" PARENT_SCOPE)
+      endif()
+    endif()
+  else()
+    execute_process(
+      COMMAND "${CMAKE_${lang}_COMPILER}"
+              ${CMAKE_${lang}_COMPILER_ID_ARG1}
+              ${userflags}
+              ${testflags}
+              ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS}
+              "${src}"
+      WORKING_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR}
+      OUTPUT_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
+      ERROR_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
+      RESULT_VARIABLE CMAKE_${lang}_COMPILER_ID_RESULT
+      )
+    if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "exec: [^\n]*\\((/[^,\n]*/cpp),CMakeFortranCompilerId.F")
+      set(_cpp "${CMAKE_MATCH_1}")
+      if(EXISTS "${_cpp}")
+        set(CMAKE_${lang}_COMPILER_ID_CPP "${_cpp}" PARENT_SCOPE)
+      endif()
+    endif()
+  endif()
+
+  # Check the result of compilation.
+  if(CMAKE_${lang}_COMPILER_ID_RESULT
+     # Intel Fortran warns and ignores preprocessor lines without /fpp
+     OR CMAKE_${lang}_COMPILER_ID_OUTPUT MATCHES "warning #5117: Bad # preprocessor line"
+     )
+    # Compilation failed.
+    set(MSG
+      "Compiling the ${lang} compiler identification source file \"${src}\" failed.
+${COMPILER_DESCRIPTION}
+The output was:
+${CMAKE_${lang}_COMPILER_ID_RESULT}
+${CMAKE_${lang}_COMPILER_ID_OUTPUT}
+
+")
+    # Log the output unless we recognize it as a known-bad case.
+    if(NOT CMAKE_${lang}_COMPILER_ID_OUTPUT MATCHES "warning #5117: Bad # preprocessor line")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "${MSG}")
+    endif()
+
+    # Some languages may know the correct/desired set of flags and want to fail right away if they don't work.
+    # This is currently only used by CUDA.
+    if(__compiler_id_require_success)
+      message(FATAL_ERROR "${MSG}")
+    endif()
+
+    # No output files should be inspected.
+    set(COMPILER_${lang}_PRODUCED_FILES)
+    set(COMPILER_${lang}_PRODUCED_OUTPUT)
+  else()
+    # Compilation succeeded.
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+      "Compiling the ${lang} compiler identification source file \"${src}\" succeeded.
+${COMPILER_DESCRIPTION}
+The output was:
+${CMAKE_${lang}_COMPILER_ID_RESULT}
+${CMAKE_${lang}_COMPILER_ID_OUTPUT}
+
+")
+
+    # Find the executable produced by the compiler, try all files in the
+    # binary dir.
+    string(REGEX REPLACE "([][])" "[\\1]" _glob_id_dir "${CMAKE_${lang}_COMPILER_ID_DIR}")
+    file(GLOB files
+      RELATIVE ${CMAKE_${lang}_COMPILER_ID_DIR}
+
+      # normal case
+      ${_glob_id_dir}/*
+
+      # com.apple.package-type.bundle.unit-test
+      ${_glob_id_dir}/*.xctest/*
+
+      # com.apple.product-type.framework
+      ${_glob_id_dir}/*.framework/*
+      )
+    list(REMOVE_ITEM files "${src}")
+    set(COMPILER_${lang}_PRODUCED_FILES "")
+    foreach(file ${files})
+      if(NOT IS_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR}/${file})
+        list(APPEND COMPILER_${lang}_PRODUCED_FILES ${file})
+        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+          "Compilation of the ${lang} compiler identification source \""
+          "${src}\" produced \"${file}\"\n\n")
+      endif()
+    endforeach()
+
+    if(NOT COMPILER_${lang}_PRODUCED_FILES)
+      # No executable was found.
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Compilation of the ${lang} compiler identification source \""
+        "${src}\" did not produce an executable in \""
+        "${CMAKE_${lang}_COMPILER_ID_DIR}\".\n\n")
+    endif()
+
+    set(COMPILER_${lang}_PRODUCED_OUTPUT "${CMAKE_${lang}_COMPILER_ID_OUTPUT}")
+  endif()
+
+  # Return the files produced by the compilation.
+  set(COMPILER_${lang}_PRODUCED_FILES "${COMPILER_${lang}_PRODUCED_FILES}" PARENT_SCOPE)
+  set(COMPILER_${lang}_PRODUCED_OUTPUT "${COMPILER_${lang}_PRODUCED_OUTPUT}" PARENT_SCOPE)
+
+endfunction()
+
+#-----------------------------------------------------------------------------
+# Function to extract the compiler id from compiler output.
+function(CMAKE_DETERMINE_COMPILER_ID_MATCH_VENDOR lang output)
+  foreach(vendor ${CMAKE_${lang}_COMPILER_ID_MATCH_VENDORS})
+    if(output MATCHES "${CMAKE_${lang}_COMPILER_ID_MATCH_VENDOR_REGEX_${vendor}}")
+      set(CMAKE_${lang}_COMPILER_ID "${vendor}")
+    endif()
+  endforeach()
+  set(CMAKE_${lang}_COMPILER_ID "${CMAKE_${lang}_COMPILER_ID}" PARENT_SCOPE)
+endfunction()
+
+#-----------------------------------------------------------------------------
+# Function to extract the compiler id from an executable.
+function(CMAKE_DETERMINE_COMPILER_ID_CHECK lang file)
+  # Look for a compiler id if not yet known.
+  if(NOT CMAKE_${lang}_COMPILER_ID)
+    # Read the compiler identification string from the executable file.
+    set(COMPILER_ID)
+    set(COMPILER_VERSION)
+    set(COMPILER_VERSION_MAJOR 0)
+    set(COMPILER_VERSION_MINOR 0)
+    set(COMPILER_VERSION_PATCH 0)
+    set(COMPILER_VERSION_TWEAK 0)
+    set(COMPILER_VERSION_INTERNAL "")
+    set(HAVE_COMPILER_VERSION_MAJOR 0)
+    set(HAVE_COMPILER_VERSION_MINOR 0)
+    set(HAVE_COMPILER_VERSION_PATCH 0)
+    set(HAVE_COMPILER_VERSION_TWEAK 0)
+    set(COMPILER_WRAPPER)
+    set(DIGIT_VALUE_1 1)
+    set(DIGIT_VALUE_2 10)
+    set(DIGIT_VALUE_3 100)
+    set(DIGIT_VALUE_4 1000)
+    set(DIGIT_VALUE_5 10000)
+    set(DIGIT_VALUE_6 100000)
+    set(DIGIT_VALUE_7 1000000)
+    set(DIGIT_VALUE_8 10000000)
+    set(PLATFORM_ID)
+    set(ARCHITECTURE_ID)
+    set(SIMULATE_ID)
+    set(SIMULATE_VERSION)
+    foreach(encoding "" "ENCODING;UTF-16LE" "ENCODING;UTF-16BE")
+      file(STRINGS "${file}" CMAKE_${lang}_COMPILER_ID_STRINGS
+        LIMIT_COUNT 38 ${encoding}
+        REGEX ".?I.?N.?F.?O.?:.?[A-Za-z0-9_]+\\[[^]]*\\]")
+      if(NOT CMAKE_${lang}_COMPILER_ID_STRINGS STREQUAL "")
+        break()
+      endif()
+    endforeach()
+
+    # With the IAR Compiler, some strings are found twice, first time as incomplete
+    # list like "?<Constant "INFO:compiler[IAR]">".  Remove the incomplete copies.
+    list(FILTER CMAKE_${lang}_COMPILER_ID_STRINGS EXCLUDE REGEX "\\?<Constant \\\"")
+
+    # The IAR-AVR compiler uses a binary format that places a '6'
+    # character (0x34) before each character in the string.  Strip
+    # out these characters without removing any legitimate characters.
+    if(CMAKE_${lang}_COMPILER_ID_STRINGS MATCHES "(.)I.N.F.O.:.")
+      string(REGEX REPLACE "${CMAKE_MATCH_1}([^;])" "\\1"
+        CMAKE_${lang}_COMPILER_ID_STRINGS "${CMAKE_${lang}_COMPILER_ID_STRINGS}")
+    endif()
+
+    # Remove arbitrary text that may appear before or after each INFO string.
+    string(REGEX MATCHALL "INFO:[A-Za-z0-9_]+\\[([^]\"]*)\\]"
+      CMAKE_${lang}_COMPILER_ID_STRINGS "${CMAKE_${lang}_COMPILER_ID_STRINGS}")
+
+    # In C# binaries, some strings are found more than once.
+    list(REMOVE_DUPLICATES CMAKE_${lang}_COMPILER_ID_STRINGS)
+
+    set(COMPILER_ID_TWICE)
+    foreach(info ${CMAKE_${lang}_COMPILER_ID_STRINGS})
+      if("${info}" MATCHES "INFO:compiler\\[([^]\"]*)\\]")
+        if(COMPILER_ID)
+          set(COMPILER_ID_TWICE 1)
+        endif()
+        set(COMPILER_ID "${CMAKE_MATCH_1}")
+      endif()
+      if("${info}" MATCHES "INFO:platform\\[([^]\"]*)\\]")
+        set(PLATFORM_ID "${CMAKE_MATCH_1}")
+      endif()
+      if("${info}" MATCHES "INFO:arch\\[([^]\"]*)\\]")
+        set(ARCHITECTURE_ID "${CMAKE_MATCH_1}")
+      endif()
+      if("${info}" MATCHES "INFO:compiler_version\\[([^]\"]*)\\]")
+        string(REGEX REPLACE "^0+([0-9]+)" "\\1" COMPILER_VERSION "${CMAKE_MATCH_1}")
+        string(REGEX REPLACE "\\.0+([0-9])" ".\\1" COMPILER_VERSION "${COMPILER_VERSION}")
+      endif()
+      if("${info}" MATCHES "INFO:compiler_version_internal\\[([^]\"]*)\\]")
+        set(COMPILER_VERSION_INTERNAL "${CMAKE_MATCH_1}")
+        string(REGEX REPLACE "^0+([0-9]+)" "\\1" COMPILER_VERSION_INTERNAL "${COMPILER_VERSION_INTERNAL}")
+        string(REGEX REPLACE "\\.0+([0-9]+)" ".\\1" COMPILER_VERSION_INTERNAL "${COMPILER_VERSION_INTERNAL}")
+        string(STRIP "${COMPILER_VERSION_INTERNAL}" COMPILER_VERSION_INTERNAL)
+      endif()
+      foreach(comp MAJOR MINOR PATCH TWEAK)
+        foreach(digit 1 2 3 4 5 6 7 8 9)
+          if("${info}" MATCHES "INFO:compiler_version_${comp}_digit_${digit}\\[([0-9])\\]")
+            set(value ${CMAKE_MATCH_1})
+            math(EXPR COMPILER_VERSION_${comp} "${COMPILER_VERSION_${comp}} + ${value} * ${DIGIT_VALUE_${digit}}")
+            set(HAVE_COMPILER_VERSION_${comp} 1)
+          endif()
+        endforeach()
+      endforeach()
+      if("${info}" MATCHES "INFO:compiler_wrapper\\[([^]\"]*)\\]")
+        set(COMPILER_WRAPPER "${CMAKE_MATCH_1}")
+      endif()
+      if("${info}" MATCHES "INFO:simulate\\[([^]\"]*)\\]")
+        set(SIMULATE_ID "${CMAKE_MATCH_1}")
+      endif()
+      if("${info}" MATCHES "INFO:simulate_version\\[([^]\"]*)\\]")
+        string(REGEX REPLACE "^0+([0-9])" "\\1" SIMULATE_VERSION "${CMAKE_MATCH_1}")
+        string(REGEX REPLACE "\\.0+([0-9])" ".\\1" SIMULATE_VERSION "${SIMULATE_VERSION}")
+      endif()
+      if("${info}" MATCHES "INFO:qnxnto\\[\\]")
+        set(COMPILER_QNXNTO 1)
+      endif()
+      if("${info}" MATCHES "INFO:standard_default\\[([^]\"]*)\\]")
+        set(CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT "${CMAKE_MATCH_1}")
+      endif()
+      if("${info}" MATCHES "INFO:extensions_default\\[([^]\"]*)\\]")
+        set(CMAKE_${lang}_EXTENSIONS_COMPUTED_DEFAULT "${CMAKE_MATCH_1}")
+      endif()
+    endforeach()
+
+    # Construct compiler version from components if needed.
+    if(NOT DEFINED COMPILER_VERSION AND HAVE_COMPILER_VERSION_MAJOR)
+      set(COMPILER_VERSION "${COMPILER_VERSION_MAJOR}")
+      if(HAVE_COMPILER_VERSION_MINOR)
+        string(APPEND COMPILER_VERSION ".${COMPILER_VERSION_MINOR}")
+        if(HAVE_COMPILER_VERSION_PATCH)
+          string(APPEND COMPILER_VERSION ".${COMPILER_VERSION_PATCH}")
+          if(HAVE_COMPILER_VERSION_TWEAK)
+            string(APPEND COMPILER_VERSION ".${COMPILER_VERSION_TWEAK}")
+          endif()
+        endif()
+      endif()
+    endif()
+
+    # Detect the exact architecture from the PE header.
+    if(WIN32)
+      # The offset to the PE signature is stored at 0x3c.
+      file(READ ${file} peoffsethex LIMIT 1 OFFSET 60 HEX)
+      if(NOT peoffsethex STREQUAL "")
+        string(SUBSTRING "${peoffsethex}" 0 1 peoffsethex1)
+        string(SUBSTRING "${peoffsethex}" 1 1 peoffsethex2)
+        set(peoffsetexpression "${peoffsethex1} * 16 + ${peoffsethex2}")
+        string(REPLACE "a" "10" peoffsetexpression "${peoffsetexpression}")
+        string(REPLACE "b" "11" peoffsetexpression "${peoffsetexpression}")
+        string(REPLACE "c" "12" peoffsetexpression "${peoffsetexpression}")
+        string(REPLACE "d" "13" peoffsetexpression "${peoffsetexpression}")
+        string(REPLACE "e" "14" peoffsetexpression "${peoffsetexpression}")
+        string(REPLACE "f" "15" peoffsetexpression "${peoffsetexpression}")
+        math(EXPR peoffset "${peoffsetexpression}")
+
+        file(READ ${file} peheader LIMIT 6 OFFSET ${peoffset} HEX)
+        if(peheader STREQUAL "50450000a201")
+          set(ARCHITECTURE_ID "SH3")
+        elseif(peheader STREQUAL "50450000a301")
+          set(ARCHITECTURE_ID "SH3DSP")
+        elseif(peheader STREQUAL "50450000a601")
+          set(ARCHITECTURE_ID "SH4")
+        elseif(peheader STREQUAL "50450000a801")
+          set(ARCHITECTURE_ID "SH5")
+        endif()
+      endif()
+    endif()
+
+    # Check if a valid compiler and platform were found.
+    if(COMPILER_ID AND NOT COMPILER_ID_TWICE)
+      set(CMAKE_${lang}_COMPILER_ID "${COMPILER_ID}")
+      set(CMAKE_${lang}_PLATFORM_ID "${PLATFORM_ID}")
+      set(CMAKE_${lang}_COMPILER_ARCHITECTURE_ID "${ARCHITECTURE_ID}")
+      set(MSVC_${lang}_ARCHITECTURE_ID "${ARCHITECTURE_ID}")
+      set(CMAKE_${lang}_COMPILER_VERSION "${COMPILER_VERSION}")
+      set(CMAKE_${lang}_COMPILER_VERSION_INTERNAL "${COMPILER_VERSION_INTERNAL}")
+      set(CMAKE_${lang}_SIMULATE_ID "${SIMULATE_ID}")
+      set(CMAKE_${lang}_SIMULATE_VERSION "${SIMULATE_VERSION}")
+    endif()
+
+    # Check the compiler identification string.
+    if(CMAKE_${lang}_COMPILER_ID)
+      # The compiler identification was found.
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "The ${lang} compiler identification is ${CMAKE_${lang}_COMPILER_ID}, found in \""
+        "${file}\"\n\n")
+    else()
+      # The compiler identification could not be found.
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "The ${lang} compiler identification could not be found in \""
+        "${file}\"\n\n")
+    endif()
+  endif()
+
+  # try to figure out the executable format: ELF, COFF, Mach-O
+  if(NOT CMAKE_EXECUTABLE_FORMAT)
+    file(READ ${file} CMAKE_EXECUTABLE_MAGIC LIMIT 4 HEX)
+
+    # ELF files start with 0x7f"ELF"
+    if("${CMAKE_EXECUTABLE_MAGIC}" STREQUAL "7f454c46")
+      set(CMAKE_EXECUTABLE_FORMAT "ELF" CACHE INTERNAL "Executable file format")
+    endif()
+
+#    # COFF (.exe) files start with "MZ"
+#    if("${CMAKE_EXECUTABLE_MAGIC}" MATCHES "4d5a....")
+#      set(CMAKE_EXECUTABLE_FORMAT "COFF" CACHE INTERNAL "Executable file format")
+#    endif()
+#
+    # Mach-O files start with MH_MAGIC or MH_CIGAM
+    if("${CMAKE_EXECUTABLE_MAGIC}" MATCHES "feedface|cefaedfe|feedfacf|cffaedfe")
+      set(CMAKE_EXECUTABLE_FORMAT "MACHO" CACHE INTERNAL "Executable file format")
+    endif()
+
+    # XCOFF files start with 0x01 followed by 0xDF (32-bit) or 0xF7 (64-bit).
+    if("${CMAKE_EXECUTABLE_MAGIC}" MATCHES "^01(df|f7)")
+      set(CMAKE_EXECUTABLE_FORMAT "XCOFF" CACHE INTERNAL "Executable file format")
+    endif()
+
+  endif()
+  # Return the information extracted.
+  set(CMAKE_${lang}_COMPILER_ID "${CMAKE_${lang}_COMPILER_ID}" PARENT_SCOPE)
+  set(CMAKE_${lang}_PLATFORM_ID "${CMAKE_${lang}_PLATFORM_ID}" PARENT_SCOPE)
+  set(CMAKE_${lang}_COMPILER_ARCHITECTURE_ID "${CMAKE_${lang}_COMPILER_ARCHITECTURE_ID}" PARENT_SCOPE)
+  set(MSVC_${lang}_ARCHITECTURE_ID "${MSVC_${lang}_ARCHITECTURE_ID}"
+    PARENT_SCOPE)
+  set(CMAKE_${lang}_COMPILER_VERSION "${CMAKE_${lang}_COMPILER_VERSION}" PARENT_SCOPE)
+  set(CMAKE_${lang}_COMPILER_VERSION_INTERNAL "${CMAKE_${lang}_COMPILER_VERSION_INTERNAL}" PARENT_SCOPE)
+  set(CMAKE_${lang}_COMPILER_WRAPPER "${COMPILER_WRAPPER}" PARENT_SCOPE)
+  set(CMAKE_${lang}_SIMULATE_ID "${CMAKE_${lang}_SIMULATE_ID}" PARENT_SCOPE)
+  set(CMAKE_${lang}_SIMULATE_VERSION "${CMAKE_${lang}_SIMULATE_VERSION}" PARENT_SCOPE)
+  set(COMPILER_QNXNTO "${COMPILER_QNXNTO}" PARENT_SCOPE)
+  set(CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT "${CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT}" PARENT_SCOPE)
+  set(CMAKE_${lang}_EXTENSIONS_COMPUTED_DEFAULT "${CMAKE_${lang}_EXTENSIONS_COMPUTED_DEFAULT}" PARENT_SCOPE)
+endfunction()
+
+#-----------------------------------------------------------------------------
+# Function to query the compiler vendor.
+# This uses a table with entries of the form
+#   list(APPEND CMAKE_${lang}_COMPILER_ID_VENDORS ${vendor})
+#   set(CMAKE_${lang}_COMPILER_ID_VENDOR_FLAGS_${vendor} -some-vendor-flag)
+#   set(CMAKE_${lang}_COMPILER_ID_VENDOR_REGEX_${vendor} "Some Vendor Output")
+# We try running the compiler with the flag for each vendor and
+# matching its regular expression in the output.
+function(CMAKE_DETERMINE_COMPILER_ID_VENDOR lang userflags)
+
+  if(NOT CMAKE_${lang}_COMPILER_ID_DIR)
+    # We get here when this function is called not from within CMAKE_DETERMINE_COMPILER_ID()
+    # This is done e.g. for detecting the compiler ID for assemblers.
+    # Compute the directory in which to run the test and Create a clean working directory.
+    set(CMAKE_${lang}_COMPILER_ID_DIR ${CMAKE_PLATFORM_INFO_DIR}/CompilerId${lang})
+    file(REMOVE_RECURSE ${CMAKE_${lang}_COMPILER_ID_DIR})
+    file(MAKE_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR})
+  endif()
+
+  # Save the current LC_ALL, LC_MESSAGES, and LANG environment variables
+  # and set them to "C" so we get the expected output to match.
+  set(_orig_lc_all      $ENV{LC_ALL})
+  set(_orig_lc_messages $ENV{LC_MESSAGES})
+  set(_orig_lang        $ENV{LANG})
+  set(ENV{LC_ALL}      C)
+  set(ENV{LC_MESSAGES} C)
+  set(ENV{LANG}        C)
+
+  foreach(vendor ${CMAKE_${lang}_COMPILER_ID_VENDORS})
+    set(flags ${CMAKE_${lang}_COMPILER_ID_VENDOR_FLAGS_${vendor}})
+    set(regex ${CMAKE_${lang}_COMPILER_ID_VENDOR_REGEX_${vendor}})
+    execute_process(
+      COMMAND "${CMAKE_${lang}_COMPILER}"
+      ${CMAKE_${lang}_COMPILER_ID_ARG1}
+      ${userflags}
+      ${flags}
+      WORKING_DIRECTORY ${CMAKE_${lang}_COMPILER_ID_DIR}
+      OUTPUT_VARIABLE output ERROR_VARIABLE output
+      RESULT_VARIABLE result
+      TIMEOUT 10
+      )
+
+    if("${output}" MATCHES "${regex}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Checking whether the ${lang} compiler is ${vendor} using \"${flags}\" "
+        "matched \"${regex}\":\n${output}")
+      set(CMAKE_${lang}_COMPILER_ID "${vendor}" PARENT_SCOPE)
+      set(CMAKE_${lang}_COMPILER_ID_OUTPUT "${output}" PARENT_SCOPE)
+      set(CMAKE_${lang}_COMPILER_ID_VENDOR_MATCH "${CMAKE_MATCH_1}" PARENT_SCOPE)
+      break()
+    else()
+      if("${result}" MATCHES  "timeout")
+        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+          "Checking whether the ${lang} compiler is ${vendor} using \"${flags}\" "
+          "terminated after 10 s due to timeout.")
+      else()
+        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+          "Checking whether the ${lang} compiler is ${vendor} using \"${flags}\" "
+          "did not match \"${regex}\":\n${output}")
+       endif()
+    endif()
+  endforeach()
+
+  # Restore original LC_ALL, LC_MESSAGES, and LANG
+  set(ENV{LC_ALL}      ${_orig_lc_all})
+  set(ENV{LC_MESSAGES} ${_orig_lc_messages})
+  set(ENV{LANG}        ${_orig_lang})
+endfunction()
+
+function(CMAKE_DETERMINE_MSVC_SHOWINCLUDES_PREFIX lang userflags)
+  # Run this MSVC-compatible compiler to detect what the /showIncludes
+  # option displays.  We can use a C source even with the C++ compiler
+  # because MSVC-compatible compilers handle both and show the same output.
+  set(showdir ${CMAKE_BINARY_DIR}/CMakeFiles/ShowIncludes)
+  file(WRITE ${showdir}/foo.h "\n")
+  file(WRITE ${showdir}/main.c "#include \"foo.h\" \nint main(){}\n")
+  execute_process(
+    COMMAND "${CMAKE_${lang}_COMPILER}"
+            ${CMAKE_${lang}_COMPILER_ID_ARG1}
+            ${userflags}
+            /nologo /showIncludes /c main.c
+    WORKING_DIRECTORY ${showdir}
+    OUTPUT_VARIABLE out
+    ERROR_VARIABLE err
+    RESULT_VARIABLE res
+    ENCODING AUTO # cl prints in current code page
+    )
+  if(res EQUAL 0 AND "${out}" MATCHES "(^|\n)([^:\n]*:[^:\n]*:[ \t]*)")
+    set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "${CMAKE_MATCH_2}" PARENT_SCOPE)
+  else()
+    set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "" PARENT_SCOPE)
+  endif()
+endfunction()
diff --git a/share/cmake-3.22/Modules/CMakeDetermineFortranCompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineFortranCompiler.cmake
new file mode 100644
index 0000000..6a8984b
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineFortranCompiler.cmake
@@ -0,0 +1,302 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# determine the compiler to use for Fortran programs
+# NOTE, a generator may set CMAKE_Fortran_COMPILER before
+# loading this file to force a compiler.
+# use environment variable FC first if defined by user, next use
+# the cmake variable CMAKE_GENERATOR_FC which can be defined by a generator
+# as a default compiler
+
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
+include(Platform/${CMAKE_SYSTEM_NAME}-Determine-Fortran OPTIONAL)
+include(Platform/${CMAKE_SYSTEM_NAME}-Fortran OPTIONAL)
+if(NOT CMAKE_Fortran_COMPILER_NAMES)
+  set(CMAKE_Fortran_COMPILER_NAMES f95)
+endif()
+
+if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
+elseif("${CMAKE_GENERATOR}" MATCHES "Xcode")
+  set(CMAKE_Fortran_COMPILER_XCODE_TYPE sourcecode.fortran.f90)
+  _cmake_find_compiler_path(Fortran)
+else()
+  if(NOT CMAKE_Fortran_COMPILER)
+    # prefer the environment variable CC
+    if(NOT $ENV{FC} STREQUAL "")
+      get_filename_component(CMAKE_Fortran_COMPILER_INIT $ENV{FC} PROGRAM PROGRAM_ARGS CMAKE_Fortran_FLAGS_ENV_INIT)
+      if(CMAKE_Fortran_FLAGS_ENV_INIT)
+        set(CMAKE_Fortran_COMPILER_ARG1 "${CMAKE_Fortran_FLAGS_ENV_INIT}" CACHE STRING "Arguments to Fortran compiler")
+      endif()
+      if(EXISTS ${CMAKE_Fortran_COMPILER_INIT})
+      else()
+        message(FATAL_ERROR "Could not find compiler set in environment variable FC:\n$ENV{FC}.")
+      endif()
+    endif()
+
+    # next try prefer the compiler specified by the generator
+    if(CMAKE_GENERATOR_FC)
+      if(NOT CMAKE_Fortran_COMPILER_INIT)
+        set(CMAKE_Fortran_COMPILER_INIT ${CMAKE_GENERATOR_FC})
+      endif()
+    endif()
+
+    # finally list compilers to try
+    if(NOT CMAKE_Fortran_COMPILER_INIT)
+      # Known compilers:
+      #  f77/f90/f95: generic compiler names
+      #  ftn: Cray fortran compiler wrapper
+      #  g77: GNU Fortran 77 compiler
+      #  gfortran: putative GNU Fortran 95+ compiler (in progress)
+      #  fort77: native F77 compiler under HP-UX (and some older Crays)
+      #  frt: Fujitsu F77 compiler
+      #  pathf90/pathf95/pathf2003: PathScale Fortran compiler
+      #  pgf77/pgf90/pgf95/pgfortran: Portland Group F77/F90/F95 compilers
+      #  flang: Flang Fortran compiler
+      #  xlf/xlf90/xlf95: IBM (AIX) F77/F90/F95 compilers
+      #  lf95: Lahey-Fujitsu F95 compiler
+      #  fl32: Microsoft Fortran 77 "PowerStation" compiler
+      #  af77: Apogee F77 compiler for Intergraph hardware running CLIX
+      #  epcf90: "Edinburgh Portable Compiler" F90
+      #  fort: Compaq (now HP) Fortran 90/95 compiler for Tru64 and Linux/Alpha
+      #  ifx: Intel Fortran LLVM-based compiler
+      #  ifort: Intel Classic Fortran compiler
+      #  ifc: Intel Fortran 95 compiler for Linux/x86
+      #  efc: Intel Fortran 95 compiler for IA64
+      #  nagfor: NAG Fortran compiler
+      #
+      #  The order is 95 or newer compilers first, then 90,
+      #  then 77 or older compilers, gnu is always last in the group,
+      #  so if you paid for a compiler it is picked by default.
+      if(CMAKE_HOST_WIN32)
+        set(CMAKE_Fortran_COMPILER_LIST
+          ifort ifx pgf95 pgfortran lf95 fort
+          flang gfortran gfortran-4 g95 f90 pgf90
+          pgf77 g77 f77 nag
+          )
+      else()
+        set(CMAKE_Fortran_COMPILER_LIST
+          ftn
+          ifort ifc ifx efc pgf95 pgfortran lf95 xlf95 fort
+          flang gfortran gfortran-4 g95 f90 pgf90
+          frt pgf77 xlf g77 f77 nag
+          )
+      endif()
+
+      # Vendor-specific compiler names.
+      set(_Fortran_COMPILER_NAMES_GNU       gfortran gfortran-4 g95 g77)
+      set(_Fortran_COMPILER_NAMES_Intel     ifort ifc efc ifx)
+      set(_Fortran_COMPILER_NAMES_Absoft    af95 af90 af77)
+      set(_Fortran_COMPILER_NAMES_PGI       pgf95 pgfortran pgf90 pgf77)
+      set(_Fortran_COMPILER_NAMES_Flang     flang)
+      set(_Fortran_COMPILER_NAMES_PathScale pathf2003 pathf95 pathf90)
+      set(_Fortran_COMPILER_NAMES_XL        xlf)
+      set(_Fortran_COMPILER_NAMES_VisualAge xlf95 xlf90 xlf)
+      set(_Fortran_COMPILER_NAMES_NAG       nagfor)
+    endif()
+
+    _cmake_find_compiler(Fortran)
+
+  else()
+    _cmake_find_compiler_path(Fortran)
+  endif()
+  mark_as_advanced(CMAKE_Fortran_COMPILER)
+
+  # Each entry in this list is a set of extra flags to try
+  # adding to the compile line to see if it helps produce
+  # a valid identification executable.
+  set(CMAKE_Fortran_COMPILER_ID_TEST_FLAGS_FIRST
+    # Get verbose output to help distinguish compilers.
+    "-v"
+    )
+  set(CMAKE_Fortran_COMPILER_ID_TEST_FLAGS
+    # Try compiling to an object file only.
+    "-c"
+
+    # Intel on windows does not preprocess by default.
+    "-fpp"
+    )
+endif()
+
+# Build a small source file to identify the compiler.
+if(NOT CMAKE_Fortran_COMPILER_ID_RUN)
+  set(CMAKE_Fortran_COMPILER_ID_RUN 1)
+
+  # Table of per-vendor compiler output regular expressions.
+  list(APPEND CMAKE_Fortran_COMPILER_ID_MATCH_VENDORS CCur)
+  set(CMAKE_Fortran_COMPILER_ID_MATCH_VENDOR_REGEX_CCur "Concurrent Fortran [0-9]+ Compiler")
+
+  # Table of per-vendor compiler id flags with expected output.
+  list(APPEND CMAKE_Fortran_COMPILER_ID_VENDORS Compaq)
+  set(CMAKE_Fortran_COMPILER_ID_VENDOR_FLAGS_Compaq "-what")
+  set(CMAKE_Fortran_COMPILER_ID_VENDOR_REGEX_Compaq "Compaq Visual Fortran")
+  list(APPEND CMAKE_Fortran_COMPILER_ID_VENDORS NAG) # Numerical Algorithms Group
+  set(CMAKE_Fortran_COMPILER_ID_VENDOR_FLAGS_NAG "-V")
+  set(CMAKE_Fortran_COMPILER_ID_VENDOR_REGEX_NAG "NAG Fortran Compiler")
+
+  # Match the link line from xcodebuild output of the form
+  #  Ld ...
+  #      ...
+  #      /path/to/cc ...CompilerIdFortran/...
+  # to extract the compiler front-end for the language.
+  set(CMAKE_Fortran_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdFortran/(\\./)?(CompilerIdFortran.xctest/)?CompilerIdFortran[ \t\n\\\"]")
+  set(CMAKE_Fortran_COMPILER_ID_TOOL_MATCH_INDEX 2)
+
+  set(_version_info "")
+  foreach(m MAJOR MINOR PATCH TWEAK)
+    set(_COMP "_${m}")
+    string(APPEND _version_info "
+#if defined(COMPILER_VERSION${_COMP})")
+    foreach(d 1 2 3 4 5 6 7 8)
+      string(APPEND _version_info "
+# undef DEC
+# undef HEX
+# define DEC(n) DEC_${d}(n)
+# define HEX(n) HEX_${d}(n)
+# if COMPILER_VERSION${_COMP} == 0
+        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[0]'
+# elif COMPILER_VERSION${_COMP} == 1
+        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[1]'
+# elif COMPILER_VERSION${_COMP} == 2
+        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[2]'
+# elif COMPILER_VERSION${_COMP} == 3
+        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[3]'
+# elif COMPILER_VERSION${_COMP} == 4
+        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[4]'
+# elif COMPILER_VERSION${_COMP} == 5
+        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[5]'
+# elif COMPILER_VERSION${_COMP} == 6
+        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[6]'
+# elif COMPILER_VERSION${_COMP} == 7
+        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[7]'
+# elif COMPILER_VERSION${_COMP} == 8
+        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[8]'
+# elif COMPILER_VERSION${_COMP} == 9
+        PRINT *, 'INFO:compiler_version${_COMP}_digit_${d}[9]'
+# endif
+")
+    endforeach()
+    string(APPEND _version_info "
+#endif")
+  endforeach()
+  set(CMAKE_Fortran_COMPILER_ID_VERSION_INFO "${_version_info}")
+  unset(_version_info)
+  unset(_COMP)
+
+  # Try to identify the compiler.
+  set(CMAKE_Fortran_COMPILER_ID)
+  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
+  CMAKE_DETERMINE_COMPILER_ID(Fortran FFLAGS CMakeFortranCompilerId.F)
+
+  _cmake_find_compiler_sysroot(Fortran)
+
+  # Fall back to old is-GNU test.
+  if(NOT CMAKE_Fortran_COMPILER_ID)
+    execute_process(COMMAND ${CMAKE_Fortran_COMPILER} ${CMAKE_Fortran_COMPILER_ID_FLAGS_LIST} -E "${CMAKE_ROOT}/Modules/CMakeTestGNU.c"
+      OUTPUT_VARIABLE CMAKE_COMPILER_OUTPUT RESULT_VARIABLE CMAKE_COMPILER_RETURN)
+    if(NOT CMAKE_COMPILER_RETURN)
+      if(CMAKE_COMPILER_OUTPUT MATCHES "THIS_IS_GNU")
+        set(CMAKE_Fortran_COMPILER_ID "GNU")
+        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+          "Determining if the Fortran compiler is GNU succeeded with "
+          "the following output:\n${CMAKE_COMPILER_OUTPUT}\n\n")
+      else()
+        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+          "Determining if the Fortran compiler is GNU failed with "
+          "the following output:\n${CMAKE_COMPILER_OUTPUT}\n\n")
+      endif()
+      if(NOT CMAKE_Fortran_PLATFORM_ID)
+        if(CMAKE_COMPILER_OUTPUT MATCHES "THIS_IS_MINGW")
+          set(CMAKE_Fortran_PLATFORM_ID "MinGW")
+        endif()
+        if(CMAKE_COMPILER_OUTPUT MATCHES "THIS_IS_CYGWIN")
+          set(CMAKE_Fortran_PLATFORM_ID "Cygwin")
+        endif()
+      endif()
+    endif()
+  endif()
+
+  # Fall back for GNU MINGW, which is not always detected correctly
+  # (__MINGW32__ is defined for the C language, but perhaps not for Fortran!)
+  if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU" AND NOT CMAKE_Fortran_PLATFORM_ID)
+    execute_process(COMMAND ${CMAKE_Fortran_COMPILER} ${CMAKE_Fortran_COMPILER_ID_FLAGS_LIST} -E "${CMAKE_ROOT}/Modules/CMakeTestGNU.c"
+      OUTPUT_VARIABLE CMAKE_COMPILER_OUTPUT RESULT_VARIABLE CMAKE_COMPILER_RETURN)
+    if(NOT CMAKE_COMPILER_RETURN)
+      if(CMAKE_COMPILER_OUTPUT MATCHES "THIS_IS_MINGW")
+        set(CMAKE_Fortran_PLATFORM_ID "MinGW")
+      endif()
+      if(CMAKE_COMPILER_OUTPUT MATCHES "THIS_IS_CYGWIN")
+        set(CMAKE_Fortran_PLATFORM_ID "Cygwin")
+      endif()
+    endif()
+  endif()
+
+  # Set old compiler and platform id variables.
+  if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
+    set(CMAKE_COMPILER_IS_GNUG77 1)
+  endif()
+endif()
+
+if (NOT _CMAKE_TOOLCHAIN_LOCATION)
+  get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_Fortran_COMPILER}" PATH)
+endif ()
+
+# if we have a fortran cross compiler, they have usually some prefix, like
+# e.g. powerpc-linux-gfortran, arm-elf-gfortran or i586-mingw32msvc-gfortran , optionally
+# with a 3-component version number at the end (e.g. arm-eabi-gcc-4.5.2).
+# The other tools of the toolchain usually have the same prefix
+# NAME_WE cannot be used since then this test will fail for names like
+# "arm-unknown-nto-qnx6.3.0-gcc.exe", where BASENAME would be
+# "arm-unknown-nto-qnx6" instead of the correct "arm-unknown-nto-qnx6.3.0-"
+if (NOT _CMAKE_TOOLCHAIN_PREFIX)
+
+  if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
+    get_filename_component(COMPILER_BASENAME "${CMAKE_Fortran_COMPILER}" NAME)
+    if (COMPILER_BASENAME MATCHES "^(.+-)g?fortran(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
+      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
+    endif ()
+
+    # if "llvm-" is part of the prefix, remove it, since llvm doesn't have its own binutils
+    # but uses the regular ar, objcopy, etc. (instead of llvm-objcopy etc.)
+    if ("${_CMAKE_TOOLCHAIN_PREFIX}" MATCHES "(.+-)?llvm-$")
+      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
+    endif ()
+  endif()
+
+endif ()
+
+set(_CMAKE_PROCESSING_LANGUAGE "Fortran")
+include(CMakeFindBinUtils)
+include(Compiler/${CMAKE_Fortran_COMPILER_ID}-FindBinUtils OPTIONAL)
+unset(_CMAKE_PROCESSING_LANGUAGE)
+
+if(CMAKE_Fortran_XL_CPP)
+  set(_SET_CMAKE_Fortran_XL_CPP
+    "set(CMAKE_Fortran_XL_CPP \"${CMAKE_Fortran_XL_CPP}\")")
+endif()
+
+if(CMAKE_Fortran_COMPILER_SYSROOT)
+  string(CONCAT _SET_CMAKE_Fortran_COMPILER_SYSROOT
+    "set(CMAKE_Fortran_COMPILER_SYSROOT \"${CMAKE_Fortran_COMPILER_SYSROOT}\")\n"
+    "set(CMAKE_COMPILER_SYSROOT \"${CMAKE_Fortran_COMPILER_SYSROOT}\")")
+else()
+  set(_SET_CMAKE_Fortran_COMPILER_SYSROOT "")
+endif()
+
+if(CMAKE_Fortran_COMPILER_ARCHITECTURE_ID)
+  set(_SET_CMAKE_Fortran_COMPILER_ARCHITECTURE_ID
+    "set(CMAKE_Fortran_COMPILER_ARCHITECTURE_ID ${CMAKE_Fortran_COMPILER_ARCHITECTURE_ID})")
+else()
+  set(_SET_CMAKE_Fortran_COMPILER_ARCHITECTURE_ID "")
+endif()
+
+if(MSVC_Fortran_ARCHITECTURE_ID)
+  set(SET_MSVC_Fortran_ARCHITECTURE_ID
+    "set(MSVC_Fortran_ARCHITECTURE_ID ${MSVC_Fortran_ARCHITECTURE_ID})")
+endif()
+# configure variables set in this file for fast reload later on
+configure_file(${CMAKE_ROOT}/Modules/CMakeFortranCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeFortranCompiler.cmake
+  @ONLY
+  )
+set(CMAKE_Fortran_COMPILER_ENV_VAR "FC")
diff --git a/share/cmake-3.22/Modules/CMakeDetermineHIPCompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineHIPCompiler.cmake
new file mode 100644
index 0000000..7b7d7a3
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineHIPCompiler.cmake
@@ -0,0 +1,188 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
+include(${CMAKE_ROOT}/Modules/CMakeParseImplicitLinkInfo.cmake)
+
+if( NOT ( ("${CMAKE_GENERATOR}" MATCHES "Make") OR
+          ("${CMAKE_GENERATOR}" MATCHES "Ninja") ) )
+  message(FATAL_ERROR "HIP language not currently supported by \"${CMAKE_GENERATOR}\" generator")
+endif()
+
+
+if(NOT CMAKE_HIP_COMPILER)
+  set(CMAKE_HIP_COMPILER_INIT NOTFOUND)
+
+  # prefer the environment variable HIPCXX
+  if(NOT $ENV{HIPCXX} STREQUAL "")
+    if("$ENV{HIPCXX}" MATCHES "hipcc")
+      message(FATAL_ERROR
+        "The HIPCXX environment variable is set to the hipcc wrapper:\n"
+        " $ENV{HIPCXX}\n"
+        "This is not supported.  Use Clang directly, or let CMake pick a default."
+        )
+    endif()
+    get_filename_component(CMAKE_HIP_COMPILER_INIT $ENV{HIPCXX} PROGRAM PROGRAM_ARGS CMAKE_HIP_FLAGS_ENV_INIT)
+    if(CMAKE_HIP_FLAGS_ENV_INIT)
+      set(CMAKE_HIP_COMPILER_ARG1 "${CMAKE_HIP_FLAGS_ENV_INIT}" CACHE STRING "Arguments to CXX compiler")
+    endif()
+    if(NOT EXISTS ${CMAKE_HIP_COMPILER_INIT})
+      message(FATAL_ERROR "Could not find compiler set in environment variable HIPCXX:\n$ENV{HIPCXX}.\n${CMAKE_HIP_COMPILER_INIT}")
+    endif()
+  endif()
+
+  # finally list compilers to try
+  if(NOT CMAKE_HIP_COMPILER_INIT)
+    set(CMAKE_HIP_COMPILER_LIST clang++)
+
+    # Look for the Clang coming with ROCm to support HIP.
+    execute_process(COMMAND hipconfig --hipclangpath
+      OUTPUT_VARIABLE _CMAKE_HIPCONFIG_CLANGPATH
+      RESULT_VARIABLE _CMAKE_HIPCONFIG_RESULT
+    )
+    if(_CMAKE_HIPCONFIG_RESULT EQUAL 0 AND EXISTS "${_CMAKE_HIPCONFIG_CLANGPATH}")
+      set(CMAKE_HIP_COMPILER_HINTS "${_CMAKE_HIPCONFIG_CLANGPATH}")
+    endif()
+  endif()
+
+  _cmake_find_compiler(HIP)
+elseif(CMAKE_HIP_COMPILER MATCHES "hipcc")
+  message(FATAL_ERROR
+    "CMAKE_HIP_COMPILER is set to the hipcc wrapper:\n"
+    " ${CMAKE_HIP_COMPILER}\n"
+    "This is not supported.  Use Clang directly, or let CMake pick a default."
+    )
+else()
+  _cmake_find_compiler_path(HIP)
+endif()
+
+mark_as_advanced(CMAKE_HIP_COMPILER)
+
+# Build a small source file to identify the compiler.
+if(NOT CMAKE_HIP_COMPILER_ID_RUN)
+  set(CMAKE_HIP_COMPILER_ID_RUN 1)
+
+  # Try to identify the compiler.
+  set(CMAKE_HIP_COMPILER_ID)
+  set(CMAKE_HIP_PLATFORM_ID)
+  file(READ ${CMAKE_ROOT}/Modules/CMakePlatformId.h.in
+    CMAKE_HIP_COMPILER_ID_PLATFORM_CONTENT)
+
+  list(APPEND CMAKE_HIP_COMPILER_ID_TEST_FLAGS_FIRST "-v")
+
+  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
+  CMAKE_DETERMINE_COMPILER_ID(HIP HIPFLAGS CMakeHIPCompilerId.hip)
+
+  _cmake_find_compiler_sysroot(HIP)
+endif()
+
+if(NOT CMAKE_HIP_COMPILER_ROCM_ROOT AND CMAKE_HIP_COMPILER_ID STREQUAL "Clang")
+   execute_process(COMMAND "${CMAKE_HIP_COMPILER}" -v -print-targets
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+    RESULT_VARIABLE _CMAKE_HIP_COMPILER_RESULT
+    OUTPUT_VARIABLE _CMAKE_HIP_COMPILER_STDOUT
+    ERROR_VARIABLE _CMAKE_HIP_COMPILER_STDERR
+    )
+
+  if(_CMAKE_HIP_COMPILER_RESULT EQUAL 0 AND _CMAKE_HIP_COMPILER_STDERR MATCHES "Found HIP installation: *([^,]*)[,\n]")
+    set(CMAKE_HIP_COMPILER_ROCM_ROOT "${CMAKE_MATCH_1}")
+  endif()
+endif()
+if(NOT CMAKE_HIP_COMPILER_ROCM_ROOT)
+  execute_process(
+    COMMAND hipconfig --rocmpath
+    OUTPUT_VARIABLE _CMAKE_HIPCONFIG_ROCMPATH
+    RESULT_VARIABLE _CMAKE_HIPCONFIG_RESULT
+    )
+  if(_CMAKE_HIPCONFIG_RESULT EQUAL 0 AND EXISTS "${_CMAKE_HIPCONFIG_ROCMPATH}")
+    set(CMAKE_HIP_COMPILER_ROCM_ROOT "${_CMAKE_HIPCONFIG_ROCMPATH}")
+  endif()
+endif()
+if(NOT CMAKE_HIP_COMPILER_ROCM_ROOT)
+  message(FATAL_ERROR "Failed to find ROCm root directory.")
+endif()
+if(NOT EXISTS "${CMAKE_HIP_COMPILER_ROCM_ROOT}/lib/cmake/hip-lang/hip-lang-config.cmake")
+  message(FATAL_ERROR
+    "The ROCm root directory:\n"
+    " ${CMAKE_HIP_COMPILER_ROCM_ROOT}\n"
+    "does not contain the HIP runtime CMake package, expected at:\n"
+    " ${CMAKE_HIP_COMPILER_ROCM_ROOT}/lib/cmake/hip-lang/hip-lang-config.cmake\n"
+    )
+endif()
+
+if (NOT _CMAKE_TOOLCHAIN_LOCATION)
+  get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_HIP_COMPILER}" PATH)
+endif ()
+
+set(_CMAKE_PROCESSING_LANGUAGE "HIP")
+include(CMakeFindBinUtils)
+include(Compiler/${CMAKE_HIP_COMPILER_ID}-FindBinUtils OPTIONAL)
+unset(_CMAKE_PROCESSING_LANGUAGE)
+
+if(CMAKE_HIP_COMPILER_SYSROOT)
+  string(CONCAT _SET_CMAKE_HIP_COMPILER_SYSROOT
+    "set(CMAKE_HIP_COMPILER_SYSROOT \"${CMAKE_HIP_COMPILER_SYSROOT}\")\n"
+    "set(CMAKE_COMPILER_SYSROOT \"${CMAKE_HIP_COMPILER_SYSROOT}\")")
+else()
+  set(_SET_CMAKE_HIP_COMPILER_SYSROOT "")
+endif()
+
+if(CMAKE_HIP_COMPILER_ARCHITECTURE_ID)
+  set(_SET_CMAKE_HIP_COMPILER_ARCHITECTURE_ID
+    "set(CMAKE_HIP_COMPILER_ARCHITECTURE_ID ${CMAKE_HIP_COMPILER_ARCHITECTURE_ID})")
+else()
+  set(_SET_CMAKE_HIP_COMPILER_ARCHITECTURE_ID "")
+endif()
+
+if(MSVC_HIP_ARCHITECTURE_ID)
+  set(SET_MSVC_HIP_ARCHITECTURE_ID
+    "set(MSVC_HIP_ARCHITECTURE_ID ${MSVC_HIP_ARCHITECTURE_ID})")
+endif()
+
+if(NOT DEFINED CMAKE_HIP_ARCHITECTURES)
+  # Use 'rocm_agent_enumerator' to get the current GPU architecture.
+  set(_CMAKE_HIP_ARCHITECTURES)
+  find_program(_CMAKE_HIP_ROCM_AGENT_ENUMERATOR
+    NAMES rocm_agent_enumerator
+    HINTS "${CMAKE_HIP_COMPILER_ROCM_ROOT}/bin"
+    NO_CACHE)
+  if(_CMAKE_HIP_ROCM_AGENT_ENUMERATOR)
+    execute_process(COMMAND "${_CMAKE_HIP_ROCM_AGENT_ENUMERATOR}" -t GPU
+      RESULT_VARIABLE _CMAKE_ROCM_AGENT_ENUMERATOR_RESULT
+      OUTPUT_VARIABLE _CMAKE_ROCM_AGENT_ENUMERATOR_STDOUT
+      ERROR_VARIABLE  _CMAKE_ROCM_AGENT_ENUMERATOR_STDERR
+    )
+    if(_CMAKE_ROCM_AGENT_ENUMERATOR_RESULT EQUAL 0)
+      separate_arguments(_hip_archs NATIVE_COMMAND "${_CMAKE_ROCM_AGENT_ENUMERATOR_STDOUT}")
+      foreach(_hip_arch ${_hip_archs})
+        if(_hip_arch STREQUAL "gfx000")
+          continue()
+        endif()
+        string(FIND ${_hip_arch} ":" pos)
+        if(NOT pos STREQUAL "-1")
+          string(SUBSTRING ${_hip_arch} 0 ${pos} _hip_arch)
+        endif()
+        list(APPEND _CMAKE_HIP_ARCHITECTURES "${_hip_arch}")
+      endforeach()
+    endif()
+    unset(_CMAKE_ROCM_AGENT_ENUMERATOR_RESULT)
+    unset(_CMAKE_ROCM_AGENT_ENUMERATOR_STDOUT)
+    unset(_CMAKE_ROCM_AGENT_ENUMERATOR_STDERR)
+  endif()
+  unset(_CMAKE_HIP_ROCM_AGENT_ENUMERATOR)
+  if(_CMAKE_HIP_ARCHITECTURES)
+    set(CMAKE_HIP_ARCHITECTURES "${_CMAKE_HIP_ARCHITECTURES}" CACHE STRING "HIP architectures")
+  elseif(CMAKE_HIP_COMPILER_PRODUCED_OUTPUT MATCHES " -target-cpu ([a-z0-9]+) ")
+    set(CMAKE_HIP_ARCHITECTURES "${CMAKE_MATCH_1}" CACHE STRING "HIP architectures")
+  else()
+    message(FATAL_ERROR "Failed to find a default HIP architecture.")
+  endif()
+  unset(_CMAKE_HIP_ARCHITECTURES)
+endif()
+
+# configure variables set in this file for fast reload later on
+configure_file(${CMAKE_ROOT}/Modules/CMakeHIPCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeHIPCompiler.cmake
+  @ONLY
+  )
+set(CMAKE_HIP_COMPILER_ENV_VAR "HIPCXX")
diff --git a/share/cmake-3.22/Modules/CMakeDetermineISPCCompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineISPCCompiler.cmake
new file mode 100644
index 0000000..ff2bf20
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineISPCCompiler.cmake
@@ -0,0 +1,96 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# determine the compiler to use for ISPC programs
+
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
+
+if( NOT (("${CMAKE_GENERATOR}" MATCHES "Make") OR ("${CMAKE_GENERATOR}" MATCHES "Ninja")) )
+  message(FATAL_ERROR "ISPC language not currently supported by \"${CMAKE_GENERATOR}\" generator")
+endif()
+
+# Load system-specific compiler preferences for this language.
+include(Platform/${CMAKE_SYSTEM_NAME}-Determine-ISPC OPTIONAL)
+include(Platform/${CMAKE_SYSTEM_NAME}-ISPC OPTIONAL)
+if(NOT CMAKE_ISPC_COMPILER_NAMES)
+  set(CMAKE_ISPC_COMPILER_NAMES ispc)
+endif()
+
+
+if(NOT CMAKE_ISPC_COMPILER)
+
+  set(CMAKE_ISPC_COMPILER_INIT NOTFOUND)
+
+  # prefer the environment variable CC
+  if(NOT $ENV{ISPC} STREQUAL "")
+    get_filename_component(CMAKE_ISPC_COMPILER_INIT $ENV{ISPC} PROGRAM PROGRAM_ARGS CMAKE_ISPC_FLAGS_ENV_INIT)
+    if(CMAKE_ISPC_FLAGS_ENV_INIT)
+      set(CMAKE_ISPC_COMPILER_ARG1 "${CMAKE_ISPC_FLAGS_ENV_INIT}" CACHE STRING "First argument to ISPC compiler")
+    endif()
+    if(NOT EXISTS ${CMAKE_ISPC_COMPILER_INIT})
+      message(FATAL_ERROR "Could not find compiler set in environment variable ISPC:\n$ENV{ISPC}.")
+    endif()
+  endif()
+
+  # next try prefer the compiler specified by the generator
+  if(CMAKE_GENERATOR_ISPC)
+    if(NOT CMAKE_ISPC_COMPILER_INIT)
+      set(CMAKE_ISPC_COMPILER_INIT ${CMAKE_GENERATOR_ISPC})
+    endif()
+  endif()
+
+  # finally list compilers to try
+  if(NOT CMAKE_ISPC_COMPILER_INIT)
+    set(CMAKE_ISPC_COMPILER_LIST ${_CMAKE_TOOLCHAIN_PREFIX}ispc ispc)
+  endif()
+
+  # Find the compiler.
+  _cmake_find_compiler(ISPC)
+
+else()
+  _cmake_find_compiler_path(ISPC)
+endif()
+mark_as_advanced(CMAKE_ISPC_COMPILER)
+
+if(NOT CMAKE_ISPC_COMPILER_ID_RUN)
+set(CMAKE_ISPC_COMPILER_ID_RUN 1)
+
+  # Try to identify the compiler.
+  set(CMAKE_ISPC_COMPILER_ID)
+  set(CMAKE_ISPC_PLATFORM_ID)
+
+
+  set(CMAKE_ISPC_COMPILER_ID_TEST_FLAGS_FIRST
+  # setup logic to make sure ISPC outputs a file
+  "-o cmake_ispc_output"
+  )
+
+  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
+  CMAKE_DETERMINE_COMPILER_ID(ISPC ISPCFLAGS CMakeISPCCompilerId.ispc)
+
+  _cmake_find_compiler_sysroot(ISPC)
+endif()
+
+if (NOT _CMAKE_TOOLCHAIN_LOCATION)
+  get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_ISPC_COMPILER}" PATH)
+endif ()
+
+set(_CMAKE_PROCESSING_LANGUAGE "ISPC")
+include(CMakeFindBinUtils)
+include(Compiler/${CMAKE_ISPC_COMPILER_ID}-FindBinUtils OPTIONAL)
+unset(_CMAKE_PROCESSING_LANGUAGE)
+
+if(CMAKE_ISPC_COMPILER_ID_VENDOR_MATCH)
+  set(_SET_CMAKE_ISPC_COMPILER_ID_VENDOR_MATCH
+    "set(CMAKE_ISPC_COMPILER_ID_VENDOR_MATCH [==[${CMAKE_ISPC_COMPILER_ID_VENDOR_MATCH}]==])")
+else()
+  set(_SET_CMAKE_ISPC_COMPILER_ID_VENDOR_MATCH "")
+endif()
+
+
+# configure variables set in this file for fast reload later on
+configure_file(${CMAKE_ROOT}/Modules/CMakeISPCCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeISPCCompiler.cmake @ONLY)
+
+set(CMAKE_ISPC_COMPILER_ENV_VAR "ISPC")
diff --git a/share/cmake-3.22/Modules/CMakeDetermineJavaCompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineJavaCompiler.cmake
new file mode 100644
index 0000000..db456c0
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineJavaCompiler.cmake
@@ -0,0 +1,94 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# determine the compiler to use for Java programs
+# NOTE, a generator may set CMAKE_Java_COMPILER before
+# loading this file to force a compiler.
+
+if(NOT CMAKE_Java_COMPILER)
+  # prefer the environment variable CC
+  if(NOT $ENV{JAVA_COMPILER} STREQUAL "")
+    get_filename_component(CMAKE_Java_COMPILER_INIT $ENV{JAVA_COMPILER} PROGRAM PROGRAM_ARGS CMAKE_Java_FLAGS_ENV_INIT)
+    if(CMAKE_Java_FLAGS_ENV_INIT)
+      set(CMAKE_Java_COMPILER_ARG1 "${CMAKE_Java_FLAGS_ENV_INIT}" CACHE STRING "Arguments to Java compiler")
+    endif()
+    if(NOT EXISTS ${CMAKE_Java_COMPILER_INIT})
+      message(SEND_ERROR "Could not find compiler set in environment variable JAVA_COMPILER:\n$ENV{JAVA_COMPILER}.")
+    endif()
+  endif()
+
+  if(NOT $ENV{JAVA_RUNTIME} STREQUAL "")
+    get_filename_component(CMAKE_Java_RUNTIME_INIT $ENV{JAVA_RUNTIME} PROGRAM PROGRAM_ARGS CMAKE_Java_FLAGS_ENV_INIT)
+    if(NOT EXISTS ${CMAKE_Java_RUNTIME_INIT})
+      message(SEND_ERROR "Could not find compiler set in environment variable JAVA_RUNTIME:\n$ENV{JAVA_RUNTIME}.")
+    endif()
+  endif()
+
+  if(NOT $ENV{JAVA_ARCHIVE} STREQUAL "")
+    get_filename_component(CMAKE_Java_ARCHIVE_INIT $ENV{JAVA_ARCHIVE} PROGRAM PROGRAM_ARGS CMAKE_Java_FLAGS_ENV_INIT)
+    if(NOT EXISTS ${CMAKE_Java_ARCHIVE_INIT})
+      message(SEND_ERROR "Could not find compiler set in environment variable JAVA_ARCHIVE:\n$ENV{JAVA_ARCHIVE}.")
+    endif()
+  endif()
+
+  set(Java_BIN_PATH
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\2.0;JavaHome]/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.8;JavaHome]/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.7;JavaHome]/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.6;JavaHome]/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5;JavaHome]/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/bin"
+    $ENV{JAVA_HOME}/bin
+    /usr/bin
+    /usr/lib/java/bin
+    /usr/share/java/bin
+    /usr/local/bin
+    /usr/local/java/bin
+    /usr/local/java/share/bin
+    /usr/java/j2sdk1.4.2_04
+    /usr/lib/j2sdk1.4-sun/bin
+    /usr/java/j2sdk1.4.2_09/bin
+    /usr/lib/j2sdk1.5-sun/bin
+    /opt/sun-jdk-1.5.0.04/bin
+    /usr/local/jdk-1.7.0/bin
+    /usr/local/jdk-1.6.0/bin
+    )
+  # if no compiler has been specified yet, then look for one
+  if(CMAKE_Java_COMPILER_INIT)
+    set(CMAKE_Java_COMPILER ${CMAKE_Java_COMPILER_INIT} CACHE PATH "Java Compiler")
+  else()
+    find_program(CMAKE_Java_COMPILER
+      NAMES javac
+      PATHS ${Java_BIN_PATH}
+    )
+  endif()
+
+  # if no runtime has been specified yet, then look for one
+  if(CMAKE_Java_RUNTIME_INIT)
+    set(CMAKE_Java_RUNTIME ${CMAKE_Java_RUNTIME_INIT} CACHE PATH "Java Compiler")
+  else()
+    find_program(CMAKE_Java_RUNTIME
+      NAMES java
+      PATHS ${Java_BIN_PATH}
+    )
+  endif()
+
+  # if no archive has been specified yet, then look for one
+  if(CMAKE_Java_ARCHIVE_INIT)
+    set(CMAKE_Java_ARCHIVE ${CMAKE_Java_ARCHIVE_INIT} CACHE PATH "Java Compiler")
+  else()
+    find_program(CMAKE_Java_ARCHIVE
+      NAMES jar
+      PATHS ${Java_BIN_PATH}
+    )
+  endif()
+endif()
+mark_as_advanced(CMAKE_Java_COMPILER)
+
+# configure variables set in this file for fast reload later on
+configure_file(${CMAKE_ROOT}/Modules/CMakeJavaCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeJavaCompiler.cmake @ONLY)
+set(CMAKE_Java_COMPILER_ENV_VAR "JAVA_COMPILER")
diff --git a/share/cmake-3.22/Modules/CMakeDetermineOBJCCompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineOBJCCompiler.cmake
new file mode 100644
index 0000000..4b84c8a
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineOBJCCompiler.cmake
@@ -0,0 +1,189 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# determine the compiler to use for Objective-C programs
+# NOTE, a generator may set CMAKE_OBJC_COMPILER before
+# loading this file to force a compiler.
+# use environment variable OBJC first if defined by user, next use
+# the cmake variable CMAKE_GENERATOR_OBJC which can be defined by a generator
+# as a default compiler
+#
+# Sets the following variables:
+#   CMAKE_OBJC_COMPILER
+#   CMAKE_AR
+#   CMAKE_RANLIB
+#   CMAKE_COMPILER_IS_GNUOBJC
+#   CMAKE_COMPILER_IS_CLANGOBJC
+#
+# If not already set before, it also sets
+#   _CMAKE_TOOLCHAIN_PREFIX
+
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
+
+# Load system-specific compiler preferences for this language.
+include(Platform/${CMAKE_SYSTEM_NAME}-Determine-OBJC OPTIONAL)
+include(Platform/${CMAKE_SYSTEM_NAME}-OBJC OPTIONAL)
+if(NOT CMAKE_OBJC_COMPILER_NAMES)
+  set(CMAKE_OBJC_COMPILER_NAMES clang)
+endif()
+
+if("${CMAKE_GENERATOR}" MATCHES "Xcode")
+  set(CMAKE_OBJC_COMPILER_XCODE_TYPE sourcecode.c.objc)
+else()
+  if(NOT CMAKE_OBJC_COMPILER)
+    set(CMAKE_OBJC_COMPILER_INIT NOTFOUND)
+
+    # prefer the environment variable OBJC or CC
+    foreach(var OBJC CC)
+      if($ENV{${var}} MATCHES ".+")
+        get_filename_component(CMAKE_OBJC_COMPILER_INIT $ENV{${var}} PROGRAM PROGRAM_ARGS CMAKE_OBJC_FLAGS_ENV_INIT)
+        if(CMAKE_OBJC_FLAGS_ENV_INIT)
+          set(CMAKE_OBJC_COMPILER_ARG1 "${CMAKE_OBJC_FLAGS_ENV_INIT}" CACHE STRING "Arguments to Objective-C compiler")
+        endif()
+        if(NOT EXISTS ${CMAKE_OBJC_COMPILER_INIT})
+          message(FATAL_ERROR "Could not find compiler set in environment variable ${var}:\n  $ENV{${var}}")
+        endif()
+        break()
+      endif()
+    endforeach()
+
+    # next try prefer the compiler specified by the generator
+    if(CMAKE_GENERATOR_OBJC)
+      if(NOT CMAKE_OBJC_COMPILER_INIT)
+        set(CMAKE_OBJC_COMPILER_INIT ${CMAKE_GENERATOR_OBJC})
+      endif()
+    endif()
+
+    # finally list compilers to try
+    if(NOT CMAKE_OBJC_COMPILER_INIT)
+      set(CMAKE_OBJC_COMPILER_LIST ${_CMAKE_TOOLCHAIN_PREFIX}cc ${_CMAKE_TOOLCHAIN_PREFIX}gcc clang)
+    endif()
+
+    _cmake_find_compiler(OBJC)
+
+  else()
+    # we only get here if CMAKE_OBJC_COMPILER was specified using -D or a pre-made CMakeCache.txt
+    # (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE
+    # if CMAKE_OBJC_COMPILER is a list, use the first item as
+    # CMAKE_OBJC_COMPILER and the rest as CMAKE_OBJC_COMPILER_ARG1
+    set(CMAKE_OBJC_COMPILER_ARG1 "${CMAKE_OBJC_COMPILER}")
+    list(POP_FRONT CMAKE_OBJC_COMPILER_ARG1 CMAKE_OBJC_COMPILER)
+    list(JOIN CMAKE_OBJC_COMPILER_ARG1 " " CMAKE_OBJC_COMPILER_ARG1)
+
+    # if a compiler was specified by the user but without path,
+    # now try to find it with the full path
+    # if it is found, force it into the cache,
+    # if not, don't overwrite the setting (which was given by the user) with "NOTFOUND"
+    # if the C compiler already had a path, reuse it for searching the CXX compiler
+    get_filename_component(_CMAKE_USER_OBJC_COMPILER_PATH "${CMAKE_OBJC_COMPILER}" PATH)
+    if(NOT _CMAKE_USER_OBJC_COMPILER_PATH)
+      find_program(CMAKE_OBJC_COMPILER_WITH_PATH NAMES ${CMAKE_OBJC_COMPILER})
+      if(CMAKE_OBJC_COMPILER_WITH_PATH)
+        set(CMAKE_OBJC_COMPILER ${CMAKE_OBJC_COMPILER_WITH_PATH} CACHE STRING "Objective-C compiler" FORCE)
+      endif()
+      unset(CMAKE_OBJC_COMPILER_WITH_PATH CACHE)
+    endif()
+  endif()
+  mark_as_advanced(CMAKE_OBJC_COMPILER)
+
+  # Each entry in this list is a set of extra flags to try
+  # adding to the compile line to see if it helps produce
+  # a valid identification file.
+  set(CMAKE_OBJC_COMPILER_ID_TEST_FLAGS_FIRST)
+  set(CMAKE_OBJC_COMPILER_ID_TEST_FLAGS
+    # Try compiling to an object file only.
+    "-c"
+
+    )
+endif()
+
+# Build a small source file to identify the compiler.
+if(NOT CMAKE_OBJC_COMPILER_ID_RUN)
+  set(CMAKE_OBJC_COMPILER_ID_RUN 1)
+
+  # Try to identify the compiler.
+  set(CMAKE_OBJC_COMPILER_ID)
+  file(READ ${CMAKE_ROOT}/Modules/CMakePlatformId.h.in
+    CMAKE_OBJC_COMPILER_ID_PLATFORM_CONTENT)
+
+  # Match the link line from xcodebuild output of the form
+  #  Ld ...
+  #      ...
+  #      /path/to/cc ...CompilerIdOBJC/...
+  # to extract the compiler front-end for the language.
+  set(CMAKE_OBJC_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdOBJC/(\\./)?(CompilerIdOBJC.(framework|xctest|build/[^ \t\r\n]+)/)?CompilerIdOBJC[ \t\n\\\"]")
+  set(CMAKE_OBJC_COMPILER_ID_TOOL_MATCH_INDEX 2)
+
+  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
+  CMAKE_DETERMINE_COMPILER_ID(OBJC OBJCCFLAGS CMakeOBJCCompilerId.m)
+
+  # Set old compiler and platform id variables.
+  if(CMAKE_OBJC_COMPILER_ID STREQUAL "GNU")
+    set(CMAKE_COMPILER_IS_GNUOBJC 1)
+  endif()
+  if(CMAKE_OBJC_COMPILER_ID STREQUAL "Clang")
+    set(CMAKE_COMPILER_IS_CLANGOBJC 1)
+  endif()
+endif()
+
+if (NOT _CMAKE_TOOLCHAIN_LOCATION)
+  get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_OBJC_COMPILER}" PATH)
+endif ()
+
+# If we have a gcc cross compiler, they have usually some prefix, like
+# e.g. powerpc-linux-gcc, arm-elf-gcc or i586-mingw32msvc-gcc, optionally
+# with a 3-component version number at the end (e.g. arm-eabi-gcc-4.5.2).
+# The other tools of the toolchain usually have the same prefix
+# NAME_WE cannot be used since then this test will fail for names like
+# "arm-unknown-nto-qnx6.3.0-gcc.exe", where BASENAME would be
+# "arm-unknown-nto-qnx6" instead of the correct "arm-unknown-nto-qnx6.3.0-"
+if (CMAKE_CROSSCOMPILING  AND NOT _CMAKE_TOOLCHAIN_PREFIX)
+
+  if(CMAKE_OBJC_COMPILER_ID MATCHES "GNU|Clang|QCC")
+    get_filename_component(COMPILER_BASENAME "${CMAKE_OBJC_COMPILER}" NAME)
+    if (COMPILER_BASENAME MATCHES "^(.+-)(clang|g?cc)(-[0-9]+(\\.[0-9]+)*)?(-[^.]+)?(\\.exe)?$")
+      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
+      set(_CMAKE_COMPILER_SUFFIX ${CMAKE_MATCH_5})
+    elseif(CMAKE_OBJC_COMPILER_ID MATCHES "Clang")
+      if(CMAKE_OBJC_COMPILER_TARGET)
+        set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_OBJC_COMPILER_TARGET}-)
+      endif()
+    elseif(COMPILER_BASENAME MATCHES "qcc(\\.exe)?$")
+      if(CMAKE_OBJC_COMPILER_TARGET MATCHES "gcc_nto([a-z0-9]+_[0-9]+|[^_le]+)(le)?")
+        set(_CMAKE_TOOLCHAIN_PREFIX nto${CMAKE_MATCH_1}-)
+      endif()
+    endif ()
+
+    # if "llvm-" is part of the prefix, remove it, since llvm doesn't have its own binutils
+    # but uses the regular ar, objcopy, etc. (instead of llvm-objcopy etc.)
+    if ("${_CMAKE_TOOLCHAIN_PREFIX}" MATCHES "(.+-)?llvm-$")
+      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
+    endif ()
+  endif()
+
+endif ()
+
+set(_CMAKE_PROCESSING_LANGUAGE "OBJC")
+include(CMakeFindBinUtils)
+include(Compiler/${CMAKE_OBJC_COMPILER_ID}-FindBinUtils OPTIONAL)
+unset(_CMAKE_PROCESSING_LANGUAGE)
+
+if(CMAKE_OBJC_COMPILER_ARCHITECTURE_ID)
+  set(_SET_CMAKE_OBJC_COMPILER_ARCHITECTURE_ID
+    "set(CMAKE_OBJC_COMPILER_ARCHITECTURE_ID ${CMAKE_OBJC_COMPILER_ARCHITECTURE_ID})")
+else()
+  set(_SET_CMAKE_OBJC_COMPILER_ARCHITECTURE_ID "")
+endif()
+
+if(CMAKE_OBJC_XCODE_ARCHS)
+  set(SET_CMAKE_XCODE_ARCHS
+    "set(CMAKE_XCODE_ARCHS \"${CMAKE_OBJC_XCODE_ARCHS}\")")
+endif()
+
+# configure variables set in this file for fast reload later on
+configure_file(${CMAKE_ROOT}/Modules/CMakeOBJCCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeOBJCCompiler.cmake
+  @ONLY
+  )
+set(CMAKE_OBJC_COMPILER_ENV_VAR "OBJC")
diff --git a/share/cmake-3.22/Modules/CMakeDetermineOBJCXXCompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineOBJCXXCompiler.cmake
new file mode 100644
index 0000000..7403847
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineOBJCXXCompiler.cmake
@@ -0,0 +1,197 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# determine the compiler to use for Objective-C++ programs
+# NOTE, a generator may set CMAKE_OBJCXX_COMPILER before
+# loading this file to force a compiler.
+# use environment variable OBJCXX first if defined by user, next use
+# the cmake variable CMAKE_GENERATOR_OBJCXX which can be defined by a generator
+# as a default compiler
+# If the internal cmake variable _CMAKE_TOOLCHAIN_PREFIX is set, this is used
+# as prefix for the tools (e.g. arm-elf-g++, arm-elf-ar etc.)
+#
+# Sets the following variables:
+#   CMAKE_OBJCXX_COMPILER
+#   CMAKE_COMPILER_IS_GNUOBJCXX
+#   CMAKE_COMPILER_IS_CLANGOBJCXX
+#   CMAKE_AR
+#   CMAKE_RANLIB
+#
+# If not already set before, it also sets
+#   _CMAKE_TOOLCHAIN_PREFIX
+
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
+
+# Load system-specific compiler preferences for this language.
+include(Platform/${CMAKE_SYSTEM_NAME}-Determine-OBJCXX OPTIONAL)
+include(Platform/${CMAKE_SYSTEM_NAME}-OBJCXX OPTIONAL)
+if(NOT CMAKE_OBJCXX_COMPILER_NAMES)
+  set(CMAKE_OBJCXX_COMPILER_NAMES clang++)
+endif()
+
+if("${CMAKE_GENERATOR}" MATCHES "Xcode")
+  set(CMAKE_OBJCXX_COMPILER_XCODE_TYPE sourcecode.cpp.objcpp)
+else()
+  if(NOT CMAKE_OBJCXX_COMPILER)
+    set(CMAKE_OBJCXX_COMPILER_INIT NOTFOUND)
+
+    # prefer the environment variable OBJCXX or CXX
+    foreach(var OBJCXX CXX)
+      if($ENV{${var}} MATCHES ".+")
+        get_filename_component(CMAKE_OBJCXX_COMPILER_INIT $ENV{${var}} PROGRAM PROGRAM_ARGS CMAKE_OBJCXX_FLAGS_ENV_INIT)
+        if(CMAKE_OBJCXX_FLAGS_ENV_INIT)
+          set(CMAKE_OBJCXX_COMPILER_ARG1 "${CMAKE_OBJCXX_FLAGS_ENV_INIT}" CACHE STRING "Arguments to Objective-C++ compiler")
+        endif()
+        if(NOT EXISTS ${CMAKE_OBJCXX_COMPILER_INIT})
+          message(FATAL_ERROR "Could not find compiler set in environment variable ${var}:\n  $ENV{${var}}")
+        endif()
+        break()
+      endif()
+    endforeach()
+
+    # next prefer the generator specified compiler
+    if(CMAKE_GENERATOR_OBJCXX)
+      if(NOT CMAKE_OBJCXX_COMPILER_INIT)
+        set(CMAKE_OBJCXX_COMPILER_INIT ${CMAKE_GENERATOR_OBJCXX})
+      endif()
+    endif()
+
+    # finally list compilers to try
+    if(NOT CMAKE_OBJCXX_COMPILER_INIT)
+      set(CMAKE_OBJCXX_COMPILER_LIST ${_CMAKE_TOOLCHAIN_PREFIX}c++ ${_CMAKE_TOOLCHAIN_PREFIX}g++ clang++)
+    endif()
+
+    _cmake_find_compiler(OBJCXX)
+
+  else()
+    # we only get here if CMAKE_OBJCXX_COMPILER was specified using -D or a pre-made CMakeCache.txt
+    # (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE
+    # if CMAKE_OBJCXX_COMPILER is a list, use the first item as
+    # CMAKE_OBJCXX_COMPILER and the rest as CMAKE_OBJCXX_COMPILER_ARG1
+    set(CMAKE_OBJCXX_COMPILER_ARG1 "${CMAKE_OBJCXX_COMPILER}")
+    list(POP_FRONT CMAKE_OBJCXX_COMPILER_ARG1 CMAKE_OBJCXX_COMPILER)
+    list(JOIN CMAKE_OBJCXX_COMPILER_ARG1 " " CMAKE_OBJCXX_COMPILER_ARG1)
+
+    # if a compiler was specified by the user but without path,
+    # now try to find it with the full path
+    # if it is found, force it into the cache,
+    # if not, don't overwrite the setting (which was given by the user) with "NOTFOUND"
+    # if the C compiler already had a path, reuse it for searching the CXX compiler
+    get_filename_component(_CMAKE_USER_OBJCXX_COMPILER_PATH "${CMAKE_OBJCXX_COMPILER}" PATH)
+    if(NOT _CMAKE_USER_OBJCXX_COMPILER_PATH)
+      find_program(CMAKE_OBJCXX_COMPILER_WITH_PATH NAMES ${CMAKE_OBJCXX_COMPILER})
+      if(CMAKE_OBJCXX_COMPILER_WITH_PATH)
+        set(CMAKE_OBJCXX_COMPILER ${CMAKE_OBJCXX_COMPILER_WITH_PATH} CACHE STRING "Objective-C++ compiler" FORCE)
+      endif()
+      unset(CMAKE_OBJCXX_COMPILER_WITH_PATH CACHE)
+    endif()
+
+  endif()
+  mark_as_advanced(CMAKE_OBJCXX_COMPILER)
+
+  # Each entry in this list is a set of extra flags to try
+  # adding to the compile line to see if it helps produce
+  # a valid identification file.
+  set(CMAKE_OBJCXX_COMPILER_ID_TEST_FLAGS_FIRST)
+  set(CMAKE_OBJCXX_COMPILER_ID_TEST_FLAGS
+    # Try compiling to an object file only.
+    "-c"
+
+    # ARMClang need target options
+    "--target=arm-arm-none-eabi -mcpu=cortex-m3"
+    )
+endif()
+
+# Build a small source file to identify the compiler.
+if(NOT CMAKE_OBJCXX_COMPILER_ID_RUN)
+  set(CMAKE_OBJCXX_COMPILER_ID_RUN 1)
+
+  # Try to identify the compiler.
+  set(CMAKE_OBJCXX_COMPILER_ID)
+  file(READ ${CMAKE_ROOT}/Modules/CMakePlatformId.h.in
+    CMAKE_OBJCXX_COMPILER_ID_PLATFORM_CONTENT)
+
+  # Match the link line from xcodebuild output of the form
+  #  Ld ...
+  #      ...
+  #      /path/to/cc ...CompilerIdOBJCXX/...
+  # to extract the compiler front-end for the language.
+  set(CMAKE_OBJCXX_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdOBJCXX/(\\./)?(CompilerIdOBJCXX.(framework|xctest|build/[^ \t\r\n]+)/)?CompilerIdOBJCXX[ \t\n\\\"]")
+  set(CMAKE_OBJCXX_COMPILER_ID_TOOL_MATCH_INDEX 2)
+
+  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
+  CMAKE_DETERMINE_COMPILER_ID(OBJCXX OBJCXXFLAGS CMakeOBJCXXCompilerId.mm)
+
+  # Set old compiler and platform id variables.
+  if(CMAKE_OBJCXX_COMPILER_ID MATCHES "GNU")
+    set(CMAKE_COMPILER_IS_GNUOBJCXX 1)
+  endif()
+  if(CMAKE_OBJCXX_COMPILER_ID MATCHES "Clang")
+    set(CMAKE_COMPILER_IS_CLANGOBJCXX 1)
+  endif()
+endif()
+
+if (NOT _CMAKE_TOOLCHAIN_LOCATION)
+  get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_OBJCXX_COMPILER}" PATH)
+endif ()
+
+# if we have a g++ cross compiler, they have usually some prefix, like
+# e.g. powerpc-linux-g++, arm-elf-g++ or i586-mingw32msvc-g++ , optionally
+# with a 3-component version number at the end (e.g. arm-eabi-gcc-4.5.2).
+# The other tools of the toolchain usually have the same prefix
+# NAME_WE cannot be used since then this test will fail for names like
+# "arm-unknown-nto-qnx6.3.0-gcc.exe", where BASENAME would be
+# "arm-unknown-nto-qnx6" instead of the correct "arm-unknown-nto-qnx6.3.0-"
+
+
+if (NOT _CMAKE_TOOLCHAIN_PREFIX)
+
+  if("${CMAKE_OBJCXX_COMPILER_ID}" MATCHES "GNU|Clang|QCC")
+    get_filename_component(COMPILER_BASENAME "${CMAKE_OBJCXX_COMPILER}" NAME)
+    if (COMPILER_BASENAME MATCHES "^(.+-)(clan)?[gc]\\+\\+(-[0-9]+(\\.[0-9]+)*)?(-[^.]+)?(\\.exe)?$")
+      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
+      set(_CMAKE_COMPILER_SUFFIX ${CMAKE_MATCH_5})
+    elseif("${CMAKE_OBJCXX_COMPILER_ID}" MATCHES "Clang")
+      if(CMAKE_OBJCXX_COMPILER_TARGET)
+        set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_OBJCXX_COMPILER_TARGET}-)
+      endif()
+    elseif(COMPILER_BASENAME MATCHES "QCC(\\.exe)?$")
+      if(CMAKE_OBJCXX_COMPILER_TARGET MATCHES "gcc_nto([a-z0-9]+_[0-9]+|[^_le]+)(le)")
+        set(_CMAKE_TOOLCHAIN_PREFIX nto${CMAKE_MATCH_1}-)
+      endif()
+    endif ()
+
+    # if "llvm-" is part of the prefix, remove it, since llvm doesn't have its own binutils
+    # but uses the regular ar, objcopy, etc. (instead of llvm-objcopy etc.)
+    if ("${_CMAKE_TOOLCHAIN_PREFIX}" MATCHES "(.+-)?llvm-$")
+      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
+    endif ()
+  endif()
+
+endif ()
+
+set(_CMAKE_PROCESSING_LANGUAGE "OBJCXX")
+include(CMakeFindBinUtils)
+include(Compiler/${CMAKE_OBJCXX_COMPILER_ID}-FindBinUtils OPTIONAL)
+unset(_CMAKE_PROCESSING_LANGUAGE)
+
+if(CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID)
+  set(_SET_CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID
+    "set(CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID ${CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID})")
+else()
+  set(_SET_CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID "")
+endif()
+
+if(CMAKE_OBJCXX_XCODE_ARCHS)
+  set(SET_CMAKE_XCODE_ARCHS
+    "set(CMAKE_XCODE_ARCHS \"${CMAKE_OBJCXX_XCODE_ARCHS}\")")
+endif()
+
+# configure all variables set in this file
+configure_file(${CMAKE_ROOT}/Modules/CMakeOBJCXXCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeOBJCXXCompiler.cmake
+  @ONLY
+  )
+
+set(CMAKE_OBJCXX_COMPILER_ENV_VAR "OBJCXX")
diff --git a/share/cmake-3.22/Modules/CMakeDetermineRCCompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineRCCompiler.cmake
new file mode 100644
index 0000000..f8d55a5
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineRCCompiler.cmake
@@ -0,0 +1,57 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# determine the compiler to use for RC programs
+# NOTE, a generator may set CMAKE_RC_COMPILER before
+# loading this file to force a compiler.
+# use environment variable RC first if defined by user, next use
+# the cmake variable CMAKE_GENERATOR_RC which can be defined by a generator
+# as a default compiler
+if(NOT CMAKE_RC_COMPILER)
+  # prefer the environment variable RC
+  if(NOT $ENV{RC} STREQUAL "")
+    get_filename_component(CMAKE_RC_COMPILER_INIT $ENV{RC} PROGRAM PROGRAM_ARGS CMAKE_RC_FLAGS_ENV_INIT)
+    if(CMAKE_RC_FLAGS_ENV_INIT)
+      set(CMAKE_RC_COMPILER_ARG1 "${CMAKE_RC_FLAGS_ENV_INIT}" CACHE STRING "Arguments to RC compiler")
+    endif()
+    if(EXISTS ${CMAKE_RC_COMPILER_INIT})
+    else()
+      message(FATAL_ERROR "Could not find compiler set in environment variable RC:\n$ENV{RC}.")
+    endif()
+  endif()
+
+  # next try prefer the compiler specified by the generator
+  if(CMAKE_GENERATOR_RC)
+    if(NOT CMAKE_RC_COMPILER_INIT)
+      set(CMAKE_RC_COMPILER_INIT ${CMAKE_GENERATOR_RC})
+    endif()
+  endif()
+
+  # finally list compilers to try
+  if(CMAKE_RC_COMPILER_INIT)
+    set(CMAKE_RC_COMPILER_LIST ${CMAKE_RC_COMPILER_INIT})
+  else()
+    set(CMAKE_RC_COMPILER_LIST rc)
+  endif()
+
+  # Find the compiler.
+  find_program(CMAKE_RC_COMPILER NAMES ${CMAKE_RC_COMPILER_LIST} DOC "RC compiler")
+  if(CMAKE_RC_COMPILER_INIT AND NOT CMAKE_RC_COMPILER)
+    set(CMAKE_RC_COMPILER "${CMAKE_RC_COMPILER_INIT}" CACHE FILEPATH "RC compiler" FORCE)
+  endif()
+endif()
+
+mark_as_advanced(CMAKE_RC_COMPILER)
+
+get_filename_component(_CMAKE_RC_COMPILER_NAME_WE ${CMAKE_RC_COMPILER} NAME_WE)
+if(_CMAKE_RC_COMPILER_NAME_WE STREQUAL "windres")
+  set(CMAKE_RC_OUTPUT_EXTENSION .obj)
+else()
+  set(CMAKE_RC_OUTPUT_EXTENSION .res)
+endif()
+
+# configure variables set in this file for fast reload later on
+configure_file(${CMAKE_ROOT}/Modules/CMakeRCCompiler.cmake.in
+               ${CMAKE_PLATFORM_INFO_DIR}/CMakeRCCompiler.cmake)
+set(CMAKE_RC_COMPILER_ENV_VAR "RC")
diff --git a/share/cmake-3.22/Modules/CMakeDetermineSwiftCompiler.cmake b/share/cmake-3.22/Modules/CMakeDetermineSwiftCompiler.cmake
new file mode 100644
index 0000000..aaad560
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineSwiftCompiler.cmake
@@ -0,0 +1,78 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
+
+# Local system-specific compiler preferences for this language.
+include(Platform/${CMAKE_SYSTEM_NAME}-Determine-Swift OPTIONAL)
+include(Platform/${CMAKE_SYSTEM_NAME}-Swift OPTIONAL)
+if(NOT CMAKE_Swift_COMPILER_NAMES)
+  set(CMAKE_Swift_COMPILER_NAMES swiftc)
+endif()
+
+if("${CMAKE_GENERATOR}" STREQUAL "Xcode")
+  if(XCODE_VERSION VERSION_LESS 6.1)
+    message(FATAL_ERROR "Swift language not supported by Xcode ${XCODE_VERSION}")
+  endif()
+  set(CMAKE_Swift_COMPILER_XCODE_TYPE sourcecode.swift)
+  _cmake_find_compiler_path(Swift)
+elseif("${CMAKE_GENERATOR}" MATCHES "^Ninja")
+  if(CMAKE_Swift_COMPILER)
+    _cmake_find_compiler_path(Swift)
+  else()
+    set(CMAKE_Swift_COMPILER_INIT NOTFOUND)
+
+    if(NOT $ENV{SWIFTC} STREQUAL "")
+      get_filename_component(CMAKE_Swift_COMPILER_INIT $ENV{SWIFTC} PROGRAM
+        PROGRAM_ARGS CMAKE_Swift_FLAGS_ENV_INIT)
+      if(CMAKE_Swift_FLAGS_ENV_INIT)
+        set(CMAKE_Swift_COMPILER_ARG1 "${CMAKE_Swift_FLAGS_ENV_INIT}" CACHE
+          STRING "Arguments to the Swift compiler")
+      endif()
+      if(NOT EXISTS ${CMAKE_Swift_COMPILER_INIT})
+        message(FATAL_ERROR "Could not find compiler set in environment variable SWIFTC\n$ENV{SWIFTC}.\n${CMAKE_Swift_COMPILER_INIT}")
+      endif()
+    endif()
+
+    if(NOT CMAKE_Swift_COMPILER_INIT)
+      set(CMAKE_Swift_COMPILER_LIST swiftc ${_CMAKE_TOOLCHAIN_PREFIX}swiftc)
+    endif()
+
+    _cmake_find_compiler(Swift)
+  endif()
+  mark_as_advanced(CMAKE_Swift_COMPILER)
+else()
+  message(FATAL_ERROR "Swift language not supported by \"${CMAKE_GENERATOR}\" generator")
+endif()
+
+# Build a small source file to identify the compiler.
+if(NOT CMAKE_Swift_COMPILER_ID_RUN)
+  set(CMAKE_Swift_COMPILER_ID_RUN 1)
+
+  if("${CMAKE_GENERATOR}" STREQUAL "Xcode")
+    list(APPEND CMAKE_Swift_COMPILER_ID_MATCH_VENDORS Apple)
+    set(CMAKE_Swift_COMPILER_ID_MATCH_VENDOR_REGEX_Apple "com.apple.xcode.tools.swift.compiler")
+
+    set(CMAKE_Swift_COMPILER_ID_TOOL_MATCH_REGEX "\nCompileSwift[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]* -c[^\r\n]*CompilerIdSwift/CompilerId/main.swift")
+    set(CMAKE_Swift_COMPILER_ID_TOOL_MATCH_INDEX 2)
+  endif()
+
+  # Try to identify the compiler.
+  set(CMAKE_Swift_COMPILER_ID)
+  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
+  CMAKE_DETERMINE_COMPILER_ID(Swift "" CompilerId/main.swift)
+endif()
+
+if (NOT _CMAKE_TOOLCHAIN_LOCATION)
+  get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_Swift_COMPILER}" PATH)
+endif ()
+
+set(_CMAKE_PROCESSING_LANGUAGE "Swift")
+include(CMakeFindBinUtils)
+unset(_CMAKE_PROCESSING_LANGUAGE)
+
+# configure variables set in this file for fast reload later on
+configure_file(${CMAKE_ROOT}/Modules/CMakeSwiftCompiler.cmake.in
+               ${CMAKE_PLATFORM_INFO_DIR}/CMakeSwiftCompiler.cmake @ONLY)
+
+set(CMAKE_Swift_COMPILER_ENV_VAR "SWIFTC")
diff --git a/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake b/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake
new file mode 100644
index 0000000..8c7af06
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeDetermineSystem.cmake
@@ -0,0 +1,197 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is used by the Makefile generator to determine the following variables:
+# CMAKE_SYSTEM_NAME - on unix this is uname -s, for windows it is Windows
+# CMAKE_SYSTEM_VERSION - on unix this is uname -r, for windows it is empty
+# CMAKE_SYSTEM - ${CMAKE_SYSTEM}-${CMAKE_SYSTEM_VERSION}, for windows: ${CMAKE_SYSTEM}
+#
+#  Expected uname -s output:
+#
+# AIX                           AIX
+# BSD/OS                        BSD/OS
+# FreeBSD                       FreeBSD
+# HP-UX                         HP-UX
+# Linux                         Linux
+# GNU/kFreeBSD                  GNU/kFreeBSD
+# NetBSD                        NetBSD
+# OpenBSD                       OpenBSD
+# OFS/1 (Digital Unix)          OSF1
+# SCO OpenServer 5              SCO_SV
+# SCO UnixWare 7                UnixWare
+# SCO UnixWare (pre release 7)  UNIX_SV
+# SCO XENIX                     Xenix
+# Solaris                       SunOS
+# SunOS                         SunOS
+# Tru64                         Tru64
+# Ultrix                        ULTRIX
+# cygwin                        CYGWIN_NT-5.1
+# MSYS                          MSYS_NT-6.1
+# MacOSX                        Darwin
+
+
+# find out on which system cmake runs
+if(CMAKE_HOST_UNIX)
+  find_program(CMAKE_UNAME uname /bin /usr/bin /usr/local/bin )
+  if(CMAKE_UNAME)
+    if(CMAKE_HOST_SYSTEM_NAME STREQUAL "AIX")
+      exec_program(${CMAKE_UNAME} ARGS -v OUTPUT_VARIABLE _CMAKE_HOST_SYSTEM_MAJOR_VERSION)
+      exec_program(${CMAKE_UNAME} ARGS -r OUTPUT_VARIABLE _CMAKE_HOST_SYSTEM_MINOR_VERSION)
+      set(CMAKE_HOST_SYSTEM_VERSION "${_CMAKE_HOST_SYSTEM_MAJOR_VERSION}.${_CMAKE_HOST_SYSTEM_MINOR_VERSION}")
+      unset(_CMAKE_HOST_SYSTEM_MAJOR_VERSION)
+      unset(_CMAKE_HOST_SYSTEM_MINOR_VERSION)
+    else()
+      exec_program(${CMAKE_UNAME} ARGS -r OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION)
+    endif()
+    if(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux|CYGWIN.*|MSYS.*|^GNU$|Android")
+      exec_program(${CMAKE_UNAME} ARGS -m OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_PROCESSOR
+        RETURN_VALUE val)
+    elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin")
+      # If we are running on Apple Silicon, honor CMAKE_APPLE_SILICON_PROCESSOR.
+      if(DEFINED CMAKE_APPLE_SILICON_PROCESSOR)
+        set(_CMAKE_APPLE_SILICON_PROCESSOR "${CMAKE_APPLE_SILICON_PROCESSOR}")
+      elseif(DEFINED ENV{CMAKE_APPLE_SILICON_PROCESSOR})
+        set(_CMAKE_APPLE_SILICON_PROCESSOR "$ENV{CMAKE_APPLE_SILICON_PROCESSOR}")
+      else()
+        set(_CMAKE_APPLE_SILICON_PROCESSOR "")
+      endif()
+      if(_CMAKE_APPLE_SILICON_PROCESSOR)
+        if(";${_CMAKE_APPLE_SILICON_PROCESSOR};" MATCHES "^;(arm64|x86_64);$")
+          execute_process(COMMAND sysctl -q hw.optional.arm64
+            OUTPUT_VARIABLE _sysctl_stdout
+            ERROR_VARIABLE _sysctl_stderr
+            RESULT_VARIABLE _sysctl_result
+            )
+          if(NOT _sysctl_result EQUAL 0 OR NOT _sysctl_stdout MATCHES "hw.optional.arm64: 1")
+            set(_CMAKE_APPLE_SILICON_PROCESSOR "")
+          endif()
+          unset(_sysctl_result)
+          unset(_sysctl_stderr)
+          unset(_sysctl_stdout)
+        endif()
+      endif()
+      if(_CMAKE_APPLE_SILICON_PROCESSOR)
+        set(CMAKE_HOST_SYSTEM_PROCESSOR "${_CMAKE_APPLE_SILICON_PROCESSOR}")
+      else()
+        exec_program(${CMAKE_UNAME} ARGS -m OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_PROCESSOR
+          RETURN_VALUE val)
+      endif()
+      unset(_CMAKE_APPLE_SILICON_PROCESSOR)
+      if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "Power Macintosh")
+        # OS X ppc 'uname -m' may report 'Power Macintosh' instead of 'powerpc'
+        set(CMAKE_HOST_SYSTEM_PROCESSOR "powerpc")
+      endif()
+    elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "OpenBSD")
+      exec_program(arch ARGS -s OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_PROCESSOR
+        RETURN_VALUE val)
+    else()
+      exec_program(${CMAKE_UNAME} ARGS -p OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_PROCESSOR
+        RETURN_VALUE val)
+      if("${val}" GREATER 0)
+        exec_program(${CMAKE_UNAME} ARGS -m OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_PROCESSOR
+          RETURN_VALUE val)
+      endif()
+    endif()
+    # check the return of the last uname -m or -p
+    if("${val}" GREATER 0)
+        set(CMAKE_HOST_SYSTEM_PROCESSOR "unknown")
+    endif()
+    set(CMAKE_UNAME ${CMAKE_UNAME} CACHE INTERNAL "uname command")
+    # processor may have double quote in the name, and that needs to be removed
+    string(REPLACE "\"" "" CMAKE_HOST_SYSTEM_PROCESSOR "${CMAKE_HOST_SYSTEM_PROCESSOR}")
+    string(REPLACE "/" "_" CMAKE_HOST_SYSTEM_PROCESSOR "${CMAKE_HOST_SYSTEM_PROCESSOR}")
+  endif()
+else()
+  if(CMAKE_HOST_WIN32)
+    if (DEFINED ENV{PROCESSOR_ARCHITEW6432})
+      set (CMAKE_HOST_SYSTEM_PROCESSOR "$ENV{PROCESSOR_ARCHITEW6432}")
+    else()
+      set (CMAKE_HOST_SYSTEM_PROCESSOR "$ENV{PROCESSOR_ARCHITECTURE}")
+    endif()
+  endif()
+endif()
+
+# if a toolchain file is used, the user wants to cross compile.
+# in this case read the toolchain file and keep the CMAKE_HOST_SYSTEM_*
+# variables around so they can be used in CMakeLists.txt.
+# In all other cases, the host and target platform are the same.
+if(CMAKE_TOOLCHAIN_FILE)
+  # at first try to load it as path relative to the directory from which cmake has been run
+  include("${CMAKE_BINARY_DIR}/${CMAKE_TOOLCHAIN_FILE}" OPTIONAL RESULT_VARIABLE _INCLUDED_TOOLCHAIN_FILE)
+  if(NOT _INCLUDED_TOOLCHAIN_FILE)
+     # if the file isn't found there, check the default locations
+     include("${CMAKE_TOOLCHAIN_FILE}" OPTIONAL RESULT_VARIABLE _INCLUDED_TOOLCHAIN_FILE)
+  endif()
+
+  if(_INCLUDED_TOOLCHAIN_FILE)
+    set(CMAKE_TOOLCHAIN_FILE "${_INCLUDED_TOOLCHAIN_FILE}" CACHE FILEPATH "The CMake toolchain file" FORCE)
+  else()
+    message(FATAL_ERROR "Could not find toolchain file: ${CMAKE_TOOLCHAIN_FILE}")
+    set(CMAKE_TOOLCHAIN_FILE "NOTFOUND" CACHE FILEPATH "The CMake toolchain file" FORCE)
+  endif()
+endif()
+
+
+# if CMAKE_SYSTEM_NAME is here already set, either it comes from a toolchain file
+# or it was set via -DCMAKE_SYSTEM_NAME=...
+# if that's the case, assume we are crosscompiling
+if(CMAKE_SYSTEM_NAME)
+  if(NOT DEFINED CMAKE_CROSSCOMPILING)
+    set(CMAKE_CROSSCOMPILING TRUE)
+  endif()
+  set(PRESET_CMAKE_SYSTEM_NAME TRUE)
+elseif(CMAKE_VS_WINCE_VERSION)
+  set(CMAKE_SYSTEM_NAME      "WindowsCE")
+  set(CMAKE_SYSTEM_VERSION   "${CMAKE_VS_WINCE_VERSION}")
+  set(CMAKE_SYSTEM_PROCESSOR "${MSVC_C_ARCHITECTURE_ID}")
+  set(CMAKE_CROSSCOMPILING TRUE)
+  set(PRESET_CMAKE_SYSTEM_NAME TRUE)
+else()
+  set(CMAKE_SYSTEM_NAME      "${CMAKE_HOST_SYSTEM_NAME}")
+  if(NOT DEFINED CMAKE_SYSTEM_VERSION)
+    set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}")
+  endif()
+  set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_HOST_SYSTEM_PROCESSOR}")
+  set(CMAKE_CROSSCOMPILING FALSE)
+  set(PRESET_CMAKE_SYSTEM_NAME FALSE)
+endif()
+
+include(Platform/${CMAKE_SYSTEM_NAME}-Determine OPTIONAL)
+
+set(CMAKE_SYSTEM ${CMAKE_SYSTEM_NAME})
+if(CMAKE_SYSTEM_VERSION)
+  string(APPEND CMAKE_SYSTEM -${CMAKE_SYSTEM_VERSION})
+endif()
+set(CMAKE_HOST_SYSTEM ${CMAKE_HOST_SYSTEM_NAME})
+if(CMAKE_HOST_SYSTEM_VERSION)
+  string(APPEND CMAKE_HOST_SYSTEM -${CMAKE_HOST_SYSTEM_VERSION})
+endif()
+
+# this file is also executed from cpack, then we don't need to generate these files
+# in this case there is no CMAKE_BINARY_DIR
+if(CMAKE_BINARY_DIR)
+  # write entry to the log file
+  if(PRESET_CMAKE_SYSTEM_NAME)
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+                "The target system is: ${CMAKE_SYSTEM_NAME} - ${CMAKE_SYSTEM_VERSION} - ${CMAKE_SYSTEM_PROCESSOR}\n")
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+                "The host system is: ${CMAKE_HOST_SYSTEM_NAME} - ${CMAKE_HOST_SYSTEM_VERSION} - ${CMAKE_HOST_SYSTEM_PROCESSOR}\n")
+  else()
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+                "The system is: ${CMAKE_SYSTEM_NAME} - ${CMAKE_SYSTEM_VERSION} - ${CMAKE_SYSTEM_PROCESSOR}\n")
+  endif()
+
+  # if a toolchain file is used, it needs to be included in the configured file,
+  # so settings done there are also available if they don't go in the cache and in try_compile()
+  set(INCLUDE_CMAKE_TOOLCHAIN_FILE_IF_REQUIRED)
+  if(CMAKE_TOOLCHAIN_FILE)
+    set(INCLUDE_CMAKE_TOOLCHAIN_FILE_IF_REQUIRED "include(\"${CMAKE_TOOLCHAIN_FILE}\")")
+  endif()
+
+  # configure variables set in this file for fast reload, the template file is defined at the top of this file
+  configure_file(${CMAKE_ROOT}/Modules/CMakeSystem.cmake.in
+                ${CMAKE_PLATFORM_INFO_DIR}/CMakeSystem.cmake
+                @ONLY)
+
+endif()
diff --git a/share/cmake-3.18/Modules/CMakeDetermineVSServicePack.cmake b/share/cmake-3.22/Modules/CMakeDetermineVSServicePack.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeDetermineVSServicePack.cmake
rename to share/cmake-3.22/Modules/CMakeDetermineVSServicePack.cmake
diff --git a/share/cmake-3.18/Modules/CMakeExpandImportedTargets.cmake b/share/cmake-3.22/Modules/CMakeExpandImportedTargets.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeExpandImportedTargets.cmake
rename to share/cmake-3.22/Modules/CMakeExpandImportedTargets.cmake
diff --git a/share/cmake-3.18/Modules/CMakeExportBuildSettings.cmake b/share/cmake-3.22/Modules/CMakeExportBuildSettings.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeExportBuildSettings.cmake
rename to share/cmake-3.22/Modules/CMakeExportBuildSettings.cmake
diff --git a/share/cmake-3.22/Modules/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake b/share/cmake-3.22/Modules/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake
new file mode 100644
index 0000000..f90301b
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake
@@ -0,0 +1,114 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This file is included by CMakeFindEclipseCDT4.cmake and CMakeFindCodeBlocks.cmake
+
+# The Eclipse and the CodeBlocks generators need to know the standard include path
+# so that they can find the headers at runtime and parsing etc. works better
+# This is done here by actually running gcc with the options so it prints its
+# system include directories, which are parsed then and stored in the cache.
+macro(_DETERMINE_GCC_SYSTEM_INCLUDE_DIRS _lang _resultIncludeDirs _resultDefines)
+  set(${_resultIncludeDirs})
+  set(_gccOutput)
+  file(WRITE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy" "\n" )
+
+  if (${_lang} STREQUAL "c++")
+    set(_compilerExecutable "${CMAKE_CXX_COMPILER}")
+    set(_arg1 "${CMAKE_CXX_COMPILER_ARG1}")
+
+    if (CMAKE_CXX_FLAGS MATCHES "(-stdlib=[^ ]+)")
+      set(_stdlib "${CMAKE_MATCH_1}")
+    endif ()
+    if (CMAKE_CXX_FLAGS MATCHES "(-std=[^ ]+)")
+      set(_stdver "${CMAKE_MATCH_1}")
+    endif ()
+  else ()
+    set(_compilerExecutable "${CMAKE_C_COMPILER}")
+    set(_arg1 "${CMAKE_C_COMPILER_ARG1}")
+  endif ()
+  separate_arguments(_arg1 NATIVE_COMMAND "${_arg1}")
+  execute_process(COMMAND ${_compilerExecutable} ${_arg1} ${_stdver} ${_stdlib} -v -E -x ${_lang} -dD dummy
+                  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles
+                  ERROR_VARIABLE _gccOutput
+                  OUTPUT_VARIABLE _gccStdout )
+  file(REMOVE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy")
+
+  # First find the system include dirs:
+  if( "${_gccOutput}" MATCHES "> search starts here[^\n]+\n *(.+ *\n) *End of (search) list" )
+
+    # split the output into lines and then remove leading and trailing spaces from each of them:
+    string(REGEX MATCHALL "[^\n]+\n" _includeLines "${CMAKE_MATCH_1}")
+    foreach(nextLine ${_includeLines})
+      # on OSX, gcc says things like this:  "/System/Library/Frameworks (framework directory)", strip the last part
+      string(REGEX REPLACE "\\(framework directory\\)" "" nextLineNoFramework "${nextLine}")
+      # strip spaces at the beginning and the end
+      string(STRIP "${nextLineNoFramework}" _includePath)
+      list(APPEND ${_resultIncludeDirs} "${_includePath}")
+    endforeach()
+
+  endif()
+
+
+  # now find the builtin macros:
+  string(REGEX MATCHALL "#define[^\n]+\n" _defineLines "${_gccStdout}")
+# A few example lines which the regexp below has to match properly:
+#  #define   MAX(a,b) ((a) > (b) ? (a) : (b))
+#  #define __fastcall __attribute__((__fastcall__))
+#  #define   FOO (23)
+#  #define __UINTMAX_TYPE__ long long unsigned int
+#  #define __UINTMAX_TYPE__ long long unsigned int
+#  #define __i386__  1
+
+  foreach(nextLine ${_defineLines})
+    string(REGEX MATCH "^#define +([A-Za-z_][A-Za-z0-9_]*)(\\([^\\)]+\\))? +(.+) *$" _dummy "${nextLine}")
+    set(_name "${CMAKE_MATCH_1}${CMAKE_MATCH_2}")
+    string(STRIP "${CMAKE_MATCH_3}" _value)
+    #message(STATUS "m1: -${CMAKE_MATCH_1}- m2: -${CMAKE_MATCH_2}- m3: -${CMAKE_MATCH_3}-")
+
+    list(APPEND ${_resultDefines} "${_name}")
+    if ("${_value}" STREQUAL "")
+      list(APPEND ${_resultDefines} " ")
+    else()
+      list(APPEND ${_resultDefines} "${_value}")
+    endif()
+  endforeach()
+
+endmacro()
+
+# Save the current LC_ALL, LC_MESSAGES, and LANG environment variables and set them
+# to "C" that way GCC's "search starts here" text is in English and we can grok it.
+set(_orig_lc_all      $ENV{LC_ALL})
+set(_orig_lc_messages $ENV{LC_MESSAGES})
+set(_orig_lang        $ENV{LANG})
+
+set(ENV{LC_ALL}      C)
+set(ENV{LC_MESSAGES} C)
+set(ENV{LANG}        C)
+
+# Now check for C, works for gcc and Intel compiler at least
+if (NOT CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS)
+  if (CMAKE_C_COMPILER_ID MATCHES GNU  OR  CMAKE_C_COMPILER_ID MATCHES "Intel"  OR  CMAKE_C_COMPILER_ID MATCHES Clang)
+    _DETERMINE_GCC_SYSTEM_INCLUDE_DIRS(c _dirs _defines)
+    set(CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS "${_dirs}" CACHE INTERNAL "C compiler system include directories")
+    set(CMAKE_EXTRA_GENERATOR_C_SYSTEM_DEFINED_MACROS "${_defines}" CACHE INTERNAL "C compiler system defined macros")
+  elseif ("${CMAKE_C_COMPILER_ID}" MATCHES MSVC)
+    set(CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS "$ENV{INCLUDE}" CACHE INTERNAL "C compiler system include directories")
+  endif ()
+endif ()
+
+# And now the same for C++
+if (NOT CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS)
+  if ("${CMAKE_CXX_COMPILER_ID}" MATCHES GNU  OR  "${CMAKE_CXX_COMPILER_ID}" MATCHES "Intel"  OR  "${CMAKE_CXX_COMPILER_ID}" MATCHES Clang)
+    _DETERMINE_GCC_SYSTEM_INCLUDE_DIRS(c++ _dirs _defines)
+    set(CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS "${_dirs}" CACHE INTERNAL "CXX compiler system include directories")
+    set(CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_DEFINED_MACROS "${_defines}" CACHE INTERNAL "CXX compiler system defined macros")
+  elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES MSVC)
+    set(CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS "$ENV{INCLUDE}" CACHE INTERNAL "CXX compiler system include directories")
+  endif ()
+endif ()
+
+# Restore original LC_ALL, LC_MESSAGES, and LANG
+set(ENV{LC_ALL}      ${_orig_lc_all})
+set(ENV{LC_MESSAGES} ${_orig_lc_messages})
+set(ENV{LANG}        ${_orig_lang})
diff --git a/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake b/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake
new file mode 100644
index 0000000..6c81754
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeFindBinUtils.cmake
@@ -0,0 +1,250 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# search for additional tools required for C/C++ (and other languages ?)
+#
+# If the internal cmake variable _CMAKE_TOOLCHAIN_PREFIX is set, this is used
+# as prefix for the tools (e.g. arm-elf-gcc etc.)
+# If the cmake variable _CMAKE_TOOLCHAIN_LOCATION is set, the compiler is
+# searched only there. The other tools are at first searched there, then
+# also in the default locations.
+#
+# Sets the following variables:
+#   CMAKE_AR
+#   CMAKE_RANLIB
+#   CMAKE_LINKER
+#   CMAKE_MT
+#   CMAKE_STRIP
+#   CMAKE_INSTALL_NAME_TOOL
+
+# on UNIX, cygwin and mingw
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+# Resolve full path of CMAKE_TOOL from user-defined name and SEARCH_PATH.
+function(__resolve_tool_path CMAKE_TOOL SEARCH_PATH DOCSTRING)
+
+  if(${CMAKE_TOOL})
+    # We only get here if CMAKE_TOOL was
+    # specified using -D or a pre-made CMakeCache.txt (e.g. via ctest)
+    # or set in CMAKE_TOOLCHAIN_FILE.
+
+    get_filename_component(_CMAKE_USER_TOOL_PATH "${${CMAKE_TOOL}}" DIRECTORY)
+    # Is CMAKE_TOOL a user-defined name instead of a full path?
+    if(NOT _CMAKE_USER_TOOL_PATH)
+
+      # Find CMAKE_TOOL in the SEARCH_PATH directory by user-defined name.
+      find_program(_CMAKE_TOOL_WITH_PATH NAMES ${${CMAKE_TOOL}} HINTS ${SEARCH_PATH} NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH)
+      if(_CMAKE_TOOL_WITH_PATH)
+
+        # Overwrite CMAKE_TOOL with full path found in SEARCH_PATH.
+        set(${CMAKE_TOOL} ${_CMAKE_TOOL_WITH_PATH} PARENT_SCOPE)
+
+        get_property(_CMAKE_TOOL_CACHED CACHE ${CMAKE_TOOL} PROPERTY TYPE)
+        # If CMAKE_TOOL is present in the CMake Cache, then overwrit it as well.
+        if(_CMAKE_TOOL_CACHED)
+          set(${CMAKE_TOOL} "${_CMAKE_TOOL_WITH_PATH}" CACHE STRING ${DOCSTRING} FORCE)
+        endif()
+
+      endif()
+      unset(_CMAKE_TOOL_WITH_PATH CACHE)
+
+    endif()
+
+  endif()
+
+endfunction()
+
+__resolve_tool_path(CMAKE_LINKER "${_CMAKE_TOOLCHAIN_LOCATION}" "Default Linker")
+__resolve_tool_path(CMAKE_MT     "${_CMAKE_TOOLCHAIN_LOCATION}" "Default Manifest Tool")
+
+set(_CMAKE_TOOL_VARS "")
+
+# if it's the MS C/CXX compiler, search for link
+if(("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_SIMULATE_ID}" STREQUAL "xMSVC" AND
+   ("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC"
+    OR NOT "x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xClang"))
+   OR "x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xMSVC"
+   OR (CMAKE_HOST_WIN32 AND "x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xPGI")
+   OR (CMAKE_HOST_WIN32 AND "x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xNVIDIA")
+   OR (CMAKE_HOST_WIN32 AND "x${_CMAKE_PROCESSING_LANGUAGE}" STREQUAL "xISPC")
+   OR (CMAKE_GENERATOR MATCHES "Visual Studio"
+       AND NOT CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android"))
+
+  # Start with the canonical names.
+  set(_CMAKE_LINKER_NAMES "link")
+  set(_CMAKE_AR_NAMES "lib")
+  set(_CMAKE_MT_NAMES "mt")
+
+  # Prepend toolchain-specific names.
+  if("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xClang")
+    set(_CMAKE_NM_NAMES "llvm-nm" "nm")
+    list(PREPEND _CMAKE_AR_NAMES "llvm-lib")
+    list(PREPEND _CMAKE_MT_NAMES "llvm-mt")
+    list(PREPEND _CMAKE_LINKER_NAMES "lld-link")
+    list(APPEND _CMAKE_TOOL_VARS NM)
+  elseif("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xIntel")
+    list(PREPEND _CMAKE_AR_NAMES "xilib")
+    list(PREPEND _CMAKE_LINKER_NAMES "xilink")
+  endif()
+
+  list(APPEND _CMAKE_TOOL_VARS LINKER MT AR)
+
+elseif("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" MATCHES "^x(Open)?Watcom$")
+  set(_CMAKE_LINKER_NAMES "wlink")
+  set(_CMAKE_AR_NAMES "wlib")
+  list(APPEND _CMAKE_TOOL_VARS LINKER AR)
+
+elseif("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" MATCHES "^xIAR$")
+  # Small helper declaring an IAR tool (e.g. linker) to avoid repeating the same idiom every time
+  macro(__append_IAR_tool TOOL_VAR NAME)
+    set(_CMAKE_${TOOL_VAR}_NAMES "${NAME}" "${NAME}.exe")
+    list(APPEND _CMAKE_TOOL_VARS ${TOOL_VAR})
+  endmacro()
+
+  # Resolve hint path from an IAR compiler
+  function(__resolve_IAR_hints COMPILER RESULT)
+    get_filename_component(_CMAKE_IAR_HINT "${COMPILER}" REALPATH)
+    get_filename_component(_CMAKE_IAR_HINT "${_CMAKE_IAR_HINT}" DIRECTORY)
+    list(APPEND _IAR_HINTS "${_CMAKE_IAR_HINT}")
+
+    get_filename_component(_CMAKE_IAR_HINT "${COMPILER}" DIRECTORY)
+    list(APPEND _IAR_HINTS "${_CMAKE_IAR_HINT}")
+
+    set(${RESULT} "${_IAR_HINTS}" PARENT_SCOPE)
+  endfunction()
+
+  __resolve_IAR_hints("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" _CMAKE_TOOLCHAIN_LOCATION)
+  set(_CMAKE_IAR_ITOOLS "ARM" "RX" "RH850" "RL78" "RISCV" "RISC-V" "STM8")
+  set(_CMAKE_IAR_XTOOLS "AVR" "MSP430" "V850" "8051")
+
+  if("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" IN_LIST _CMAKE_IAR_ITOOLS)
+    string(TOLOWER "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" _CMAKE_IAR_LOWER_ARCHITECTURE_ID)
+
+    __append_IAR_tool(AR "iarchive")
+    __append_IAR_tool(LINKER "ilink${_CMAKE_IAR_LOWER_ARCHITECTURE_ID}")
+
+    __append_IAR_tool(IAR_ELFDUMP "ielfdump${_CMAKE_IAR_LOWER_ARCHITECTURE_ID}")
+    __append_IAR_tool(IAR_ELFTOOL "ielftool")
+    __append_IAR_tool(IAR_OBJMANIP "iobjmanip")
+    __append_IAR_tool(IAR_SYMEXPORT "isymexport")
+
+    unset(_CMAKE_IAR_LOWER_ARCHITECTURE_ID)
+
+  elseif("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" IN_LIST _CMAKE_IAR_XTOOLS)
+    __append_IAR_tool(AR "xar")
+    __append_IAR_tool(LINKER "xlink")
+
+  else()
+    message(FATAL_ERROR "Failed to find linker and librarian for ${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID} on ${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}.")
+  endif()
+
+  unset(_CMAKE_IAR_ITOOLS)
+  unset(_CMAKE_IAR_XTOOLS)
+
+# in all other cases search for ar, ranlib, etc.
+else()
+  if(CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN)
+    set(_CMAKE_TOOLCHAIN_LOCATION ${_CMAKE_TOOLCHAIN_LOCATION} ${CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN}/bin)
+  endif()
+  if(CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN)
+    set(_CMAKE_TOOLCHAIN_LOCATION ${_CMAKE_TOOLCHAIN_LOCATION} ${CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN}/bin)
+  endif()
+
+  # Start with the canonical names.
+  set(_CMAKE_AR_NAMES "ar")
+  set(_CMAKE_RANLIB_NAMES "ranlib")
+  set(_CMAKE_STRIP_NAMES "strip")
+  set(_CMAKE_LINKER_NAMES "ld")
+  set(_CMAKE_NM_NAMES "nm")
+  set(_CMAKE_OBJDUMP_NAMES "objdump")
+  set(_CMAKE_OBJCOPY_NAMES "objcopy")
+  set(_CMAKE_READELF_NAMES "readelf")
+  set(_CMAKE_DLLTOOL_NAMES "dlltool")
+  set(_CMAKE_ADDR2LINE_NAMES "addr2line")
+
+  # Prepend toolchain-specific names.
+  if("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL Clang)
+    if("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_SIMULATE_ID}" STREQUAL "xMSVC")
+      list(PREPEND _CMAKE_LINKER_NAMES "lld-link")
+    else()
+      list(PREPEND _CMAKE_LINKER_NAMES "ld.lld")
+    endif()
+    list(PREPEND _CMAKE_AR_NAMES "llvm-ar")
+    list(PREPEND _CMAKE_RANLIB_NAMES "llvm-ranlib")
+    if("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION}" VERSION_GREATER_EQUAL 11)
+      # llvm-strip versions prior to 11 require additional flags we do not yet add.
+      list(PREPEND _CMAKE_STRIP_NAMES "llvm-strip")
+    endif()
+    list(PREPEND _CMAKE_NM_NAMES "llvm-nm")
+    if("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION}" VERSION_GREATER_EQUAL 9)
+      # llvm-objdump versions prior to 9 did not support everything we need.
+      list(PREPEND _CMAKE_OBJDUMP_NAMES "llvm-objdump")
+    endif()
+    list(PREPEND _CMAKE_OBJCOPY_NAMES "llvm-objcopy")
+    list(PREPEND _CMAKE_READELF_NAMES "llvm-readelf")
+    list(PREPEND _CMAKE_DLLTOOL_NAMES "llvm-dlltool")
+    list(PREPEND _CMAKE_ADDR2LINE_NAMES "llvm-addr2line")
+  elseif("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL ARMClang)
+    list(PREPEND _CMAKE_AR_NAMES "armar")
+    list(PREPEND _CMAKE_LINKER_NAMES "armlink")
+  endif()
+
+  list(APPEND _CMAKE_TOOL_VARS AR RANLIB STRIP LINKER NM OBJDUMP OBJCOPY READELF DLLTOOL ADDR2LINE)
+endif()
+
+foreach(_CMAKE_TOOL IN LISTS _CMAKE_TOOL_VARS)
+  # Build the final list of prefixed/suffixed names.
+  set(_CMAKE_${_CMAKE_TOOL}_FIND_NAMES "")
+  foreach(_CMAKE_TOOL_NAME IN LISTS _CMAKE_${_CMAKE_TOOL}_NAMES)
+    list(APPEND _CMAKE_${_CMAKE_TOOL}_FIND_NAMES
+      ${_CMAKE_TOOLCHAIN_PREFIX}${_CMAKE_TOOL_NAME}${_CMAKE_TOOLCHAIN_SUFFIX}
+      ${_CMAKE_TOOLCHAIN_PREFIX}${_CMAKE_TOOL_NAME}
+      ${_CMAKE_TOOL_NAME}${_CMAKE_TOOLCHAIN_SUFFIX}
+      ${_CMAKE_TOOL_NAME}
+      )
+  endforeach()
+  list(REMOVE_DUPLICATES _CMAKE_${_CMAKE_TOOL}_FIND_NAMES)
+
+  find_program(CMAKE_${_CMAKE_TOOL} NAMES ${_CMAKE_${_CMAKE_TOOL}_FIND_NAMES} HINTS ${_CMAKE_TOOLCHAIN_LOCATION} NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH)
+  unset(_CMAKE_${_CMAKE_TOOL}_FIND_NAMES)
+endforeach()
+
+if(NOT CMAKE_RANLIB)
+    set(CMAKE_RANLIB : CACHE INTERNAL "noop for ranlib")
+endif()
+
+
+if(CMAKE_PLATFORM_HAS_INSTALLNAME)
+  find_program(CMAKE_INSTALL_NAME_TOOL NAMES ${_CMAKE_TOOLCHAIN_PREFIX}install_name_tool HINTS ${_CMAKE_TOOLCHAIN_LOCATION} NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH)
+
+  if(NOT CMAKE_INSTALL_NAME_TOOL)
+    message(FATAL_ERROR "Could not find install_name_tool, please check your installation.")
+  endif()
+
+  list(APPEND _CMAKE_TOOL_VARS INSTALL_NAME_TOOL)
+endif()
+
+# Mark any tool cache entries as advanced.
+foreach(_CMAKE_TOOL IN LISTS _CMAKE_TOOL_VARS)
+  get_property(_CMAKE_TOOL_CACHED CACHE CMAKE_${_CMAKE_TOOL} PROPERTY TYPE)
+  if(_CMAKE_TOOL_CACHED)
+    mark_as_advanced(CMAKE_${_CMAKE_TOOL})
+  endif()
+  unset(_CMAKE_${_CMAKE_TOOL}_NAMES)
+endforeach()
+unset(_CMAKE_TOOL_VARS)
+unset(_CMAKE_TOOL_CACHED)
+unset(_CMAKE_TOOL_NAME)
+unset(_CMAKE_TOOL)
+
+if("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" MATCHES "^xIAR$")
+  # Set for backwards compatibility
+  set(CMAKE_IAR_ARCHIVE "${CMAKE_AR}" CACHE FILEPATH "The IAR archiver")
+  set(CMAKE_IAR_LINKER "${CMAKE_LINKER}" CACHE FILEPATH "The IAR ILINK linker")
+  mark_as_advanced(CMAKE_IAR_LINKER CMAKE_IAR_AR)
+endif()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/CMakeFindCodeBlocks.cmake b/share/cmake-3.22/Modules/CMakeFindCodeBlocks.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeFindCodeBlocks.cmake
rename to share/cmake-3.22/Modules/CMakeFindCodeBlocks.cmake
diff --git a/share/cmake-3.18/Modules/CMakeFindDependencyMacro.cmake b/share/cmake-3.22/Modules/CMakeFindDependencyMacro.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeFindDependencyMacro.cmake
rename to share/cmake-3.22/Modules/CMakeFindDependencyMacro.cmake
diff --git a/share/cmake-3.18/Modules/CMakeFindEclipseCDT4.cmake b/share/cmake-3.22/Modules/CMakeFindEclipseCDT4.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeFindEclipseCDT4.cmake
rename to share/cmake-3.22/Modules/CMakeFindEclipseCDT4.cmake
diff --git a/share/cmake-3.18/Modules/CMakeFindFrameworks.cmake b/share/cmake-3.22/Modules/CMakeFindFrameworks.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeFindFrameworks.cmake
rename to share/cmake-3.22/Modules/CMakeFindFrameworks.cmake
diff --git a/share/cmake-3.18/Modules/CMakeFindJavaCommon.cmake b/share/cmake-3.22/Modules/CMakeFindJavaCommon.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeFindJavaCommon.cmake
rename to share/cmake-3.22/Modules/CMakeFindJavaCommon.cmake
diff --git a/share/cmake-3.18/Modules/CMakeFindKate.cmake b/share/cmake-3.22/Modules/CMakeFindKate.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeFindKate.cmake
rename to share/cmake-3.22/Modules/CMakeFindKate.cmake
diff --git a/share/cmake-3.22/Modules/CMakeFindPackageMode.cmake b/share/cmake-3.22/Modules/CMakeFindPackageMode.cmake
new file mode 100644
index 0000000..726e2a2
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeFindPackageMode.cmake
@@ -0,0 +1,204 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CMakeFindPackageMode
+--------------------
+
+
+
+This file is executed by cmake when invoked with --find-package.  It
+expects that the following variables are set using -D:
+
+``NAME``
+  name of the package
+``COMPILER_ID``
+  the CMake compiler ID for which the result is,
+  i.e. GNU/Intel/Clang/MSVC, etc.
+``LANGUAGE``
+  language for which the result will be used,
+  i.e. C/CXX/Fortran/ASM
+``MODE``
+  ``EXIST``
+    only check for existence of the given package
+  ``COMPILE``
+    print the flags needed for compiling an object file which uses
+    the given package
+  ``LINK``
+    print the flags needed for linking when using the given package
+``QUIET``
+  if TRUE, don't print anything
+#]=======================================================================]
+
+if(NOT NAME)
+  message(FATAL_ERROR "Name of the package to be searched not specified. Set the CMake variable NAME, e.g. -DNAME=JPEG .")
+endif()
+
+if(NOT COMPILER_ID)
+  message(FATAL_ERROR "COMPILER_ID argument not specified. In doubt, use GNU.")
+endif()
+
+if(NOT LANGUAGE)
+  message(FATAL_ERROR "LANGUAGE argument not specified. Use C, CXX or Fortran.")
+endif()
+
+if(NOT MODE)
+  message(FATAL_ERROR "MODE argument not specified. Use either EXIST, COMPILE or LINK.")
+endif()
+
+# require the current version. If we don't do this, Platforms/CYGWIN.cmake complains because
+# it doesn't know whether it should set WIN32 or not:
+cmake_minimum_required(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION} )
+
+macro(ENABLE_LANGUAGE)
+  # disable the enable_language() command, otherwise --find-package breaks on Windows.
+  # On Windows, enable_language(RC) is called in the platform files unconditionally.
+  # But in --find-package mode, we don't want (and can't) enable any language.
+endmacro()
+
+set(CMAKE_PLATFORM_INFO_DIR ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY})
+
+include(CMakeDetermineSystem)
+
+# short-cut some tests on Darwin, see Darwin-GNU.cmake:
+if("${CMAKE_SYSTEM_NAME}" MATCHES Darwin  AND  "${COMPILER_ID}" MATCHES GNU)
+  set(CMAKE_${LANGUAGE}_SYSROOT_FLAG "")
+  set(CMAKE_${LANGUAGE}_OSX_DEPLOYMENT_TARGET_FLAG "")
+endif()
+
+include(CMakeSystemSpecificInitialize)
+
+# Also load the system specific file, which sets up e.g. the search paths.
+# This makes the FIND_XXX() calls work much better
+include(CMakeSystemSpecificInformation)
+
+if(UNIX)
+
+  # try to guess whether we have a 64bit system, if it has not been set
+  # from the outside
+  if(NOT CMAKE_SIZEOF_VOID_P)
+    set(CMAKE_SIZEOF_VOID_P 4)
+    if(EXISTS ${CMAKE_SYSROOT}/usr/lib64)
+      set(CMAKE_SIZEOF_VOID_P 8)
+    else()
+      # use the file utility to check whether itself is 64 bit:
+      find_program(FILE_EXECUTABLE file)
+      if(FILE_EXECUTABLE)
+        get_filename_component(FILE_ABSPATH "${FILE_EXECUTABLE}" ABSOLUTE)
+        execute_process(COMMAND "${FILE_ABSPATH}" "${FILE_ABSPATH}" OUTPUT_VARIABLE fileOutput ERROR_QUIET)
+        if("${fileOutput}" MATCHES "64-bit")
+          set(CMAKE_SIZEOF_VOID_P 8)
+        endif()
+      endif()
+    endif()
+  endif()
+
+  # guess Debian multiarch if it has not been set:
+  if(EXISTS /etc/debian_version)
+    if(NOT CMAKE_${LANGUAGE}_LIBRARY_ARCHITECTURE )
+      file(GLOB filesInLib RELATIVE /lib /lib/*-linux-gnu* )
+      foreach(file ${filesInLib})
+        if("${file}" MATCHES "${CMAKE_LIBRARY_ARCHITECTURE_REGEX}")
+          set(CMAKE_${LANGUAGE}_LIBRARY_ARCHITECTURE ${file})
+          break()
+        endif()
+      endforeach()
+    endif()
+    if(NOT CMAKE_LIBRARY_ARCHITECTURE)
+      set(CMAKE_LIBRARY_ARCHITECTURE ${CMAKE_${LANGUAGE}_LIBRARY_ARCHITECTURE})
+    endif()
+  endif()
+
+endif()
+
+set(CMAKE_${LANGUAGE}_COMPILER "dummy")
+set(CMAKE_${LANGUAGE}_COMPILER_ID "${COMPILER_ID}")
+include(CMake${LANGUAGE}Information)
+
+
+function(set_compile_flags_var _packageName)
+  string(TOUPPER "${_packageName}" PACKAGE_NAME)
+  # Check the following variables:
+  # FOO_INCLUDE_DIRS
+  # Foo_INCLUDE_DIRS
+  # FOO_INCLUDES
+  # Foo_INCLUDES
+  # FOO_INCLUDE_DIR
+  # Foo_INCLUDE_DIR
+  set(includes)
+  if(DEFINED ${_packageName}_INCLUDE_DIRS)
+    set(includes ${_packageName}_INCLUDE_DIRS)
+  elseif(DEFINED ${PACKAGE_NAME}_INCLUDE_DIRS)
+    set(includes ${PACKAGE_NAME}_INCLUDE_DIRS)
+  elseif(DEFINED ${_packageName}_INCLUDES)
+    set(includes ${_packageName}_INCLUDES)
+  elseif(DEFINED ${PACKAGE_NAME}_INCLUDES)
+    set(includes ${PACKAGE_NAME}_INCLUDES)
+  elseif(DEFINED ${_packageName}_INCLUDE_DIR)
+    set(includes ${_packageName}_INCLUDE_DIR)
+  elseif(DEFINED ${PACKAGE_NAME}_INCLUDE_DIR)
+    set(includes ${PACKAGE_NAME}_INCLUDE_DIR)
+  endif()
+
+  set(PACKAGE_INCLUDE_DIRS "${${includes}}" PARENT_SCOPE)
+
+  # Check the following variables:
+  # FOO_DEFINITIONS
+  # Foo_DEFINITIONS
+  set(definitions)
+  if(DEFINED ${_packageName}_DEFINITIONS)
+    set(definitions ${_packageName}_DEFINITIONS)
+  elseif(DEFINED ${PACKAGE_NAME}_DEFINITIONS)
+    set(definitions ${PACKAGE_NAME}_DEFINITIONS)
+  endif()
+
+  set(PACKAGE_DEFINITIONS  "${${definitions}}" )
+
+endfunction()
+
+
+function(set_link_flags_var _packageName)
+  string(TOUPPER "${_packageName}" PACKAGE_NAME)
+  # Check the following variables:
+  # FOO_LIBRARIES
+  # Foo_LIBRARIES
+  # FOO_LIBS
+  # Foo_LIBS
+  set(libs)
+  if(DEFINED ${_packageName}_LIBRARIES)
+    set(libs ${_packageName}_LIBRARIES)
+  elseif(DEFINED ${PACKAGE_NAME}_LIBRARIES)
+    set(libs ${PACKAGE_NAME}_LIBRARIES)
+  elseif(DEFINED ${_packageName}_LIBS)
+    set(libs ${_packageName}_LIBS)
+  elseif(DEFINED ${PACKAGE_NAME}_LIBS)
+    set(libs ${PACKAGE_NAME}_LIBS)
+  endif()
+
+  set(PACKAGE_LIBRARIES "${${libs}}" PARENT_SCOPE )
+
+endfunction()
+
+
+find_package("${NAME}" QUIET)
+
+set(PACKAGE_FOUND FALSE)
+
+string(TOUPPER "${NAME}" UPPERCASE_NAME)
+
+if(${NAME}_FOUND  OR  ${UPPERCASE_NAME}_FOUND)
+  set(PACKAGE_FOUND TRUE)
+
+  if("${MODE}" STREQUAL "EXIST")
+    # do nothing
+  elseif("${MODE}" STREQUAL "COMPILE")
+    set_compile_flags_var(${NAME})
+  elseif("${MODE}" STREQUAL "LINK")
+    set_link_flags_var(${NAME})
+  else()
+    message(FATAL_ERROR "Invalid mode argument ${MODE} given.")
+  endif()
+
+endif()
+
+set(PACKAGE_QUIET ${SILENT} )
diff --git a/share/cmake-3.18/Modules/CMakeFindSublimeText2.cmake b/share/cmake-3.22/Modules/CMakeFindSublimeText2.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeFindSublimeText2.cmake
rename to share/cmake-3.22/Modules/CMakeFindSublimeText2.cmake
diff --git a/share/cmake-3.18/Modules/CMakeFindWMake.cmake b/share/cmake-3.22/Modules/CMakeFindWMake.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeFindWMake.cmake
rename to share/cmake-3.22/Modules/CMakeFindWMake.cmake
diff --git a/share/cmake-3.18/Modules/CMakeFindXCode.cmake b/share/cmake-3.22/Modules/CMakeFindXCode.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeFindXCode.cmake
rename to share/cmake-3.22/Modules/CMakeFindXCode.cmake
diff --git a/share/cmake-3.18/Modules/CMakeForceCompiler.cmake b/share/cmake-3.22/Modules/CMakeForceCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeForceCompiler.cmake
rename to share/cmake-3.22/Modules/CMakeForceCompiler.cmake
diff --git a/share/cmake-3.22/Modules/CMakeFortranCompiler.cmake.in b/share/cmake-3.22/Modules/CMakeFortranCompiler.cmake.in
new file mode 100644
index 0000000..97f891e
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeFortranCompiler.cmake.in
@@ -0,0 +1,61 @@
+set(CMAKE_Fortran_COMPILER "@CMAKE_Fortran_COMPILER@")
+set(CMAKE_Fortran_COMPILER_ARG1 "@CMAKE_Fortran_COMPILER_ARG1@")
+set(CMAKE_Fortran_COMPILER_ID "@CMAKE_Fortran_COMPILER_ID@")
+set(CMAKE_Fortran_COMPILER_VERSION "@CMAKE_Fortran_COMPILER_VERSION@")
+set(CMAKE_Fortran_COMPILER_WRAPPER "@CMAKE_Fortran_COMPILER_WRAPPER@")
+set(CMAKE_Fortran_PLATFORM_ID "@CMAKE_Fortran_PLATFORM_ID@")
+set(CMAKE_Fortran_SIMULATE_ID "@CMAKE_Fortran_SIMULATE_ID@")
+set(CMAKE_Fortran_COMPILER_FRONTEND_VARIANT "@CMAKE_Fortran_COMPILER_FRONTEND_VARIANT@")
+set(CMAKE_Fortran_SIMULATE_VERSION "@CMAKE_Fortran_SIMULATE_VERSION@")
+@_SET_CMAKE_Fortran_XL_CPP@
+@_SET_CMAKE_Fortran_COMPILER_ARCHITECTURE_ID@
+@_SET_CMAKE_Fortran_COMPILER_SYSROOT@
+@SET_MSVC_Fortran_ARCHITECTURE_ID@
+set(CMAKE_AR "@CMAKE_AR@")
+set(CMAKE_Fortran_COMPILER_AR "@CMAKE_Fortran_COMPILER_AR@")
+set(CMAKE_RANLIB "@CMAKE_RANLIB@")
+set(CMAKE_Fortran_COMPILER_RANLIB "@CMAKE_Fortran_COMPILER_RANLIB@")
+set(CMAKE_COMPILER_IS_GNUG77 @CMAKE_COMPILER_IS_GNUG77@)
+set(CMAKE_Fortran_COMPILER_LOADED 1)
+set(CMAKE_Fortran_COMPILER_WORKS @CMAKE_Fortran_COMPILER_WORKS@)
+set(CMAKE_Fortran_ABI_COMPILED @CMAKE_Fortran_ABI_COMPILED@)
+
+set(CMAKE_Fortran_COMPILER_ENV_VAR "FC")
+
+set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 @CMAKE_Fortran_COMPILER_SUPPORTS_F90@)
+
+set(CMAKE_Fortran_COMPILER_ID_RUN 1)
+set(CMAKE_Fortran_SOURCE_FILE_EXTENSIONS f;F;fpp;FPP;f77;F77;f90;F90;for;For;FOR;f95;F95)
+set(CMAKE_Fortran_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_Fortran_LINKER_PREFERENCE 20)
+if(UNIX)
+  set(CMAKE_Fortran_OUTPUT_EXTENSION .o)
+else()
+  set(CMAKE_Fortran_OUTPUT_EXTENSION .obj)
+endif()
+
+# Save compiler ABI information.
+set(CMAKE_Fortran_SIZEOF_DATA_PTR "@CMAKE_Fortran_SIZEOF_DATA_PTR@")
+set(CMAKE_Fortran_COMPILER_ABI "@CMAKE_Fortran_COMPILER_ABI@")
+set(CMAKE_Fortran_LIBRARY_ARCHITECTURE "@CMAKE_Fortran_LIBRARY_ARCHITECTURE@")
+
+if(CMAKE_Fortran_SIZEOF_DATA_PTR AND NOT CMAKE_SIZEOF_VOID_P)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_Fortran_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_Fortran_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_Fortran_COMPILER_ABI}")
+endif()
+
+if(CMAKE_Fortran_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "@CMAKE_Fortran_LIBRARY_ARCHITECTURE@")
+endif()
+
+@CMAKE_Fortran_COMPILER_CUSTOM_CODE@
+@CMAKE_Fortran_SYSROOT_FLAG_CODE@
+@CMAKE_Fortran_OSX_DEPLOYMENT_TARGET_FLAG_CODE@
+
+set(CMAKE_Fortran_IMPLICIT_INCLUDE_DIRECTORIES "@CMAKE_Fortran_IMPLICIT_INCLUDE_DIRECTORIES@")
+set(CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES "@CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES@")
+set(CMAKE_Fortran_IMPLICIT_LINK_DIRECTORIES "@CMAKE_Fortran_IMPLICIT_LINK_DIRECTORIES@")
+set(CMAKE_Fortran_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_Fortran_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
diff --git a/share/cmake-3.18/Modules/CMakeFortranCompilerABI.F b/share/cmake-3.22/Modules/CMakeFortranCompilerABI.F
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeFortranCompilerABI.F
rename to share/cmake-3.22/Modules/CMakeFortranCompilerABI.F
diff --git a/share/cmake-3.22/Modules/CMakeFortranCompilerABI.F90 b/share/cmake-3.22/Modules/CMakeFortranCompilerABI.F90
new file mode 100644
index 0000000..4a17153
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeFortranCompilerABI.F90
@@ -0,0 +1,48 @@
+program CMakeFortranCompilerABI
+
+implicit none
+
+integer :: i(1) = 0
+where (i==0) i=1
+if (any(i/=1)) stop 1
+! showing Fortran 90 syntax is OK
+
+#if 0
+! Address Size
+#endif
+#if defined(_LP64)
+PRINT *, 'INFO:sizeof_dptr[8]'
+#elif defined(_M_IA64)
+PRINT *, 'INFO:sizeof_dptr[8]'
+#elif defined(_M_X64)
+PRINT *, 'INFO:sizeof_dptr[8]'
+#elif defined(_M_AMD64)
+PRINT *, 'INFO:sizeof_dptr[8]'
+#elif defined(__x86_64__)
+PRINT *, 'INFO:sizeof_dptr[8]'
+
+#elif defined(_ILP32)
+PRINT *, 'INFO:sizeof_dptr[4]'
+#elif defined(_M_IX86)
+PRINT *, 'INFO:sizeof_dptr[4]'
+#elif defined(__i386__)
+PRINT *, 'INFO:sizeof_dptr[4]'
+
+#elif defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ == 8
+PRINT *, 'INFO:sizeof_dptr[8]'
+#elif defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ == 4
+PRINT *, 'INFO:sizeof_dptr[4]'
+#elif defined(__SIZEOF_SIZE_T__) && __SIZEOF_SIZE_T__ == 8
+PRINT *, 'INFO:sizeof_dptr[8]'
+#elif defined(__SIZEOF_SIZE_T__) && __SIZEOF_SIZE_T__ == 4
+PRINT *, 'INFO:sizeof_dptr[4]'
+#endif
+
+#if 0
+! Application Binary Interface
+#endif
+#if defined(__ELF__)
+PRINT *, 'INFO:abi[ELF]'
+#endif
+PRINT *, 'ABI Detection'
+end program
diff --git a/share/cmake-3.22/Modules/CMakeFortranCompilerId.F.in b/share/cmake-3.22/Modules/CMakeFortranCompilerId.F.in
new file mode 100644
index 0000000..d0e0e46
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeFortranCompilerId.F.in
@@ -0,0 +1,260 @@
+      PROGRAM CMakeFortranCompilerId
+#if 0
+! Identify the compiler
+#endif
+#if defined(_MSC_VER)
+       PRINT *, 'INFO:simulate[MSVC]'
+# if _MSC_VER >= 1900
+       PRINT *, 'INFO:simulate_version[019.00]'
+# elif _MSC_VER >= 1800
+       PRINT *, 'INFO:simulate_version[018.00]'
+# elif _MSC_VER >= 1700
+       PRINT *, 'INFO:simulate_version[017.00]'
+# elif _MSC_VER >= 1600
+       PRINT *, 'INFO:simulate_version[016.00]'
+# elif _MSC_VER >= 1500
+       PRINT *, 'INFO:simulate_version[015.00]'
+# elif _MSC_VER >= 1400
+       PRINT *, 'INFO:simulate_version[014.00]'
+# elif _MSC_VER >= 1310
+       PRINT *, 'INFO:simulate_version[013.01]'
+# else
+       PRINT *, 'INFO:simulate_version[013.00]'
+# endif
+#endif
+#if defined(__INTEL_LLVM_COMPILER)
+        PRINT *, 'INFO:compiler[IntelLLVM]'
+! __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and
+! later.  Look for 6 digit vs. 8 digit version number to decide encoding.
+! VVVV is no smaller than the current year when a version is released.
+# if __INTEL_LLVM_COMPILER < 1000000
+#  define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100)
+#  define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER    % 10)
+# else
+#  define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000)
+#  define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100)
+#  define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER     % 100)
+# endif
+#elif defined(__INTEL_COMPILER) && __INTEL_COMPILER == 201900
+        PRINT *, 'INFO:compiler[IntelLLVM]'
+! ifx 2021.1 forgot to define __INTEL_LLVM_COMPILER.
+! Instead it defines __INTEL_COMPILER == 201900.
+# define COMPILER_VERSION_MAJOR DEC(2021)
+# define COMPILER_VERSION_MINOR DEC(1)
+# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
+# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+#elif defined(__INTEL_COMPILER) || defined(__ICC)
+        PRINT *, 'INFO:compiler[Intel]'
+! __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later.
+# if __INTEL_COMPILER < 2021
+#  define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
+#  define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
+#  if defined(__INTEL_COMPILER_UPDATE)
+#   define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
+#  else
+#   define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER   % 10)
+#  endif
+# else
+#  define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER)
+#  define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE)
+!  The third version component from --version is an update index,
+!  but no macro is provided for it.
+#  define COMPILER_VERSION_PATCH DEC(0)
+# endif
+# if defined(__INTEL_COMPILER_BUILD_DATE)
+#  define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+# endif
+#elif defined(__SUNPRO_F95)
+        PRINT *, 'INFO:compiler[SunPro]'
+# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_F95>>8)
+# define COMPILER_VERSION_MINOR HEX(__SUNPRO_F95>>4 & 0xF)
+# define COMPILER_VERSION_PATCH HEX(__SUNPRO_F95    & 0xF)
+#elif defined(__SUNPRO_F90)
+        PRINT *, 'INFO:compiler[SunPro]'
+# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_F90>>8)
+# define COMPILER_VERSION_MINOR HEX(__SUNPRO_F90>>4 & 0xF)
+# define COMPILER_VERSION_PATCH HEX(__SUNPRO_F90    & 0xF)
+#elif defined(_CRAYFTN)
+        PRINT *, 'INFO:compiler[Cray]'
+# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
+# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
+# if defined(_RELEASE_PATCHLEVEL)
+#  define COMPILER_VERSION_PATCH DEC(_RELEASE_PATCHLEVEL)
+# endif
+#elif defined(__G95__)
+        PRINT *, 'INFO:compiler[G95]'
+# define COMPILER_VERSION_MAJOR DEC(__G95__)
+# define COMPILER_VERSION_MINOR DEC(__G95_MINOR__)
+#elif defined(__PATHSCALE__)
+        PRINT *, 'INFO:compiler[PathScale]'
+# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
+# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
+# if defined(__PATHCC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
+# endif
+#elif defined(__ABSOFT__)
+        PRINT *, 'INFO:compiler[Absoft]'
+#elif defined(__GNUC__)
+        PRINT *, 'INFO:compiler[GNU]'
+# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
+# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
+# if defined(__GNUC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+#elif defined(__IBMC__)
+# if defined(__COMPILER_VER__)
+        PRINT *, 'INFO:compiler[zOS]'
+# elif __IBMC__ >= 800
+        PRINT *, 'INFO:compiler[XL]'
+#  define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+#  define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(__IBMC__    % 10)
+# else
+        PRINT *, 'INFO:compiler[VisualAge]'
+#  define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+#  define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(__IBMC__    % 10)
+# endif
+#elif defined(__NVCOMPILER) || defined(__NVCOMPILER_LLVM__)
+        PRINT *, 'INFO:compiler[NVHPC]'
+# if defined(__NVCOMPILER_MAJOR__)
+#  define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__)
+# else
+#  define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+# endif
+# if defined(__NVCOMPILER_MINOR__)
+#  define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__)
+# else
+#  define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+# endif
+# if defined(__NVCOMPILER_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__)
+# elif defined(__PGIC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+# endif
+#elif defined(__PGI)
+        PRINT *, 'INFO:compiler[PGI]'
+# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+# if defined(__PGIC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+# endif
+#elif defined(__FLANG)
+        PRINT *, 'INFO:compiler[Flang]'
+# define COMPILER_VERSION_MAJOR DEC(__FLANG_MAJOR__)
+# define COMPILER_VERSION_MINOR DEC(__FLANG_MINOR__)
+# if defined(__FLANG_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__FLANG_PATCHLEVEL__)
+# endif
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+        PRINT *, 'INFO:compiler[VisualAge]'
+#elif defined(__hpux) || defined(__hpux__)
+        PRINT *, 'INFO:compiler[HP]'
+#elif defined(NAGFOR)
+        PRINT *, 'INFO:compiler[NAG]'
+#define COMPILER_VERSION_MAJOR DEC(__NAG_COMPILER_RELEASE/10)
+#define COMPILER_VERSION_MINOR DEC(__NAG_COMPILER_RELEASE % 10)
+#define COMPILER_VERSION_PATCH DEC(__NAG_COMPILER_BUILD)
+#elif defined(__FUJITSU)
+        PRINT *, 'INFO:compiler[Fujitsu]'
+# if defined(__FRT_major__)
+#   define COMPILER_VERSION_MAJOR DEC(__FRT_major__)
+#   define COMPILER_VERSION_MINOR DEC(__FRT_minor__)
+#   define COMPILER_VERSION_PATCH DEC(__FRT_patchlevel__)
+# elif defined(__FRT_version__)
+        PRINT *, 'INFO:compiler_version['//__FRT_version__//']'
+# endif
+#else
+        PRINT *, 'INFO:compiler[]'
+#endif
+#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
+        PRINT *, 'INFO:compiler_wrapper[CrayPrgEnv]'
+#endif
+
+#if 0
+! Identify the platform
+#endif
+#if defined(__linux) || defined(__linux__) || defined(linux)
+        PRINT *, 'INFO:platform[Linux]'
+#elif defined(__CYGWIN__)
+        PRINT *, 'INFO:platform[Cygwin]'
+#elif defined(__MINGW32__)
+        PRINT *, 'INFO:platform[MinGW]'
+#elif defined(__APPLE__)
+        PRINT *, 'INFO:platform[Darwin]'
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+        PRINT *, 'INFO:platform[Windows]'
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+        PRINT *, 'INFO:platform[FreeBSD]'
+#elif defined(__NetBSD__) || defined(__NetBSD)
+        PRINT *, 'INFO:platform[NetBSD]'
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+        PRINT *, 'INFO:platform[OpenBSD]'
+#elif defined(__sun) || defined(sun)
+        PRINT *, 'INFO:platform[SunOS]'
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+        PRINT *, 'INFO:platform[AIX]'
+#elif defined(__hpux) || defined(__hpux__)
+        PRINT *, 'INFO:platform[HP-UX]'
+#elif defined(__HAIKU__)
+        PRINT *, 'INFO:platform[Haiku]'
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+        PRINT *, 'INFO:platform[BeOS]'
+#elif defined(__QNX__) || defined(__QNXNTO__)
+        PRINT *, 'INFO:platform[QNX]'
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+        PRINT *, 'INFO:platform[Tru64]'
+#elif defined(__riscos) || defined(__riscos__)
+        PRINT *, 'INFO:platform[RISCos]'
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+        PRINT *, 'INFO:platform[SINIX]'
+#elif defined(__UNIX_SV__)
+        PRINT *, 'INFO:platform[UNIX_SV]'
+#elif defined(__bsdos__)
+        PRINT *, 'INFO:platform[BSDOS]'
+#elif defined(_MPRAS) || defined(MPRAS)
+        PRINT *, 'INFO:platform[MP-RAS]'
+#elif defined(__osf) || defined(__osf__)
+        PRINT *, 'INFO:platform[OSF1]'
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+        PRINT *, 'INFO:platform[SCO_SV]'
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+        PRINT *, 'INFO:platform[ULTRIX]'
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+        PRINT *, 'INFO:platform[Xenix]'
+#else
+        PRINT *, 'INFO:platform[]'
+#endif
+#if defined(_WIN32) && (defined(__INTEL_COMPILER) || defined(__ICC))
+# if defined(_M_IA64)
+        PRINT *, 'INFO:arch[IA64]'
+# elif defined(_M_X64) || defined(_M_AMD64)
+        PRINT *, 'INFO:arch[x64]'
+# elif defined(_M_IX86)
+        PRINT *, 'INFO:arch[X86]'
+# endif
+#endif
+
+#if 0
+! Encode compiler version digits
+#endif
+#define DEC_8(n) (((n) / 10000000) % 10)
+#define DEC_7(n) (((n) / 1000000)  % 10)
+#define DEC_6(n) (((n) / 100000)   % 10)
+#define DEC_5(n) (((n) / 10000)    % 10)
+#define DEC_4(n) (((n) / 1000)     % 10)
+#define DEC_3(n) (((n) / 100)      % 10)
+#define DEC_2(n) (((n) / 10)       % 10)
+#define DEC_1(n) (((n)    )        % 10)
+#define HEX_8(n) ((n)>>28 & 0xF)
+#define HEX_7(n) ((n)>>24 & 0xF)
+#define HEX_6(n) ((n)>>20 & 0xF)
+#define HEX_5(n) ((n)>>16 & 0xF)
+#define HEX_4(n) ((n)>>12 & 0xF)
+#define HEX_3(n) ((n)>>8  & 0xF)
+#define HEX_2(n) ((n)>>4  & 0xF)
+#define HEX_1(n) ((n)     & 0xF)
+@CMAKE_Fortran_COMPILER_ID_VERSION_INFO@
+
+      END
diff --git a/share/cmake-3.22/Modules/CMakeFortranInformation.cmake b/share/cmake-3.22/Modules/CMakeFortranInformation.cmake
new file mode 100644
index 0000000..0f71c6f
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeFortranInformation.cmake
@@ -0,0 +1,231 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+include(CMakeLanguageInformation)
+
+# This file sets the basic flags for the Fortran language in CMake.
+# It also loads the available platform file for the system-compiler
+# if it exists.
+
+set(_INCLUDED_FILE 0)
+
+# Load compiler-specific information.
+if(CMAKE_Fortran_COMPILER_ID)
+  include(Compiler/${CMAKE_Fortran_COMPILER_ID}-Fortran OPTIONAL)
+endif()
+
+set(CMAKE_BASE_NAME)
+get_filename_component(CMAKE_BASE_NAME "${CMAKE_Fortran_COMPILER}" NAME_WE)
+# since the gnu compiler has several names force g++
+if(CMAKE_COMPILER_IS_GNUG77)
+  set(CMAKE_BASE_NAME g77)
+endif()
+if(CMAKE_Fortran_COMPILER_ID)
+  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_Fortran_COMPILER_ID}-Fortran OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
+endif()
+if (NOT _INCLUDED_FILE)
+  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL
+          RESULT_VARIABLE _INCLUDED_FILE)
+endif ()
+
+# load any compiler-wrapper specific information
+if (CMAKE_Fortran_COMPILER_WRAPPER)
+  __cmake_include_compiler_wrapper(Fortran)
+endif ()
+
+# We specify the compiler information in the system file for some
+# platforms, but this language may not have been enabled when the file
+# was first included.  Include it again to get the language info.
+# Remove this when all compiler info is removed from system files.
+if (NOT _INCLUDED_FILE)
+  include(Platform/${CMAKE_SYSTEM_NAME} OPTIONAL)
+endif ()
+
+if(CMAKE_Fortran_SIZEOF_DATA_PTR)
+  foreach(f ${CMAKE_Fortran_ABI_FILES})
+    include(${f})
+  endforeach()
+  unset(CMAKE_Fortran_ABI_FILES)
+endif()
+
+# This should be included before the _INIT variables are
+# used to initialize the cache.  Since the rule variables
+# have if blocks on them, users can still define them here.
+# But, it should still be after the platform file so changes can
+# be made to those values.
+
+if(CMAKE_USER_MAKE_RULES_OVERRIDE)
+  # Save the full path of the file so try_compile can use it.
+  include(${CMAKE_USER_MAKE_RULES_OVERRIDE} RESULT_VARIABLE _override)
+  set(CMAKE_USER_MAKE_RULES_OVERRIDE "${_override}")
+endif()
+
+if(CMAKE_USER_MAKE_RULES_OVERRIDE_Fortran)
+  # Save the full path of the file so try_compile can use it.
+  include(${CMAKE_USER_MAKE_RULES_OVERRIDE_Fortran} RESULT_VARIABLE _override)
+  set(CMAKE_USER_MAKE_RULES_OVERRIDE_Fortran "${_override}")
+endif()
+
+if(NOT CMAKE_Fortran_COMPILE_OPTIONS_PIC)
+  set(CMAKE_Fortran_COMPILE_OPTIONS_PIC ${CMAKE_C_COMPILE_OPTIONS_PIC})
+endif()
+
+if(NOT CMAKE_Fortran_COMPILE_OPTIONS_PIE)
+  set(CMAKE_Fortran_COMPILE_OPTIONS_PIE ${CMAKE_C_COMPILE_OPTIONS_PIE})
+endif()
+if(NOT CMAKE_Fortran_LINK_OPTIONS_PIE)
+  set(CMAKE_Fortran_LINK_OPTIONS_PIE ${CMAKE_C_LINK_OPTIONS_PIE})
+endif()
+if(NOT CMAKE_Fortran_LINK_OPTIONS_NO_PIE)
+  set(CMAKE_Fortran_LINK_OPTIONS_NO_PIE ${CMAKE_C_LINK_OPTIONS_NO_PIE})
+endif()
+
+if(NOT CMAKE_Fortran_COMPILE_OPTIONS_DLL)
+  set(CMAKE_Fortran_COMPILE_OPTIONS_DLL ${CMAKE_C_COMPILE_OPTIONS_DLL})
+endif()
+
+# Create a set of shared library variable specific to Fortran
+# For 90% of the systems, these are the same flags as the C versions
+# so if these are not set just copy the flags from the c version
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS)
+  set(CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_Fortran_FLAGS)
+  set(CMAKE_SHARED_LIBRARY_Fortran_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS)
+  set(CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG)
+  set(CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG_SEP)
+  set(CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_RPATH_LINK_Fortran_FLAG)
+  set(CMAKE_SHARED_LIBRARY_RPATH_LINK_Fortran_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_EXE_EXPORTS_Fortran_FLAG)
+  set(CMAKE_EXE_EXPORTS_Fortran_FLAG ${CMAKE_EXE_EXPORTS_C_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_SONAME_Fortran_FLAG)
+  set(CMAKE_SHARED_LIBRARY_SONAME_Fortran_FLAG ${CMAKE_SHARED_LIBRARY_SONAME_C_FLAG})
+endif()
+
+# for most systems a module is the same as a shared library
+# so unless the variable CMAKE_MODULE_EXISTS is set just
+# copy the values from the LIBRARY variables
+if(NOT CMAKE_MODULE_EXISTS)
+  set(CMAKE_SHARED_MODULE_Fortran_FLAGS ${CMAKE_SHARED_LIBRARY_Fortran_FLAGS})
+  set(CMAKE_SHARED_MODULE_CREATE_Fortran_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS})
+endif()
+
+# repeat for modules
+if(NOT DEFINED CMAKE_SHARED_MODULE_CREATE_Fortran_FLAGS)
+  set(CMAKE_SHARED_MODULE_CREATE_Fortran_FLAGS ${CMAKE_SHARED_MODULE_CREATE_C_FLAGS})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_MODULE_Fortran_FLAGS)
+  set(CMAKE_SHARED_MODULE_Fortran_FLAGS ${CMAKE_SHARED_MODULE_C_FLAGS})
+endif()
+
+if(NOT DEFINED CMAKE_EXECUTABLE_RUNTIME_Fortran_FLAG)
+  set(CMAKE_EXECUTABLE_RUNTIME_Fortran_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_EXECUTABLE_RUNTIME_Fortran_FLAG_SEP)
+  set(CMAKE_EXECUTABLE_RUNTIME_Fortran_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG_SEP})
+endif()
+
+if(NOT DEFINED CMAKE_EXECUTABLE_RPATH_LINK_Fortran_FLAG)
+  set(CMAKE_EXECUTABLE_RPATH_LINK_Fortran_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_Fortran_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_LINK_Fortran_WITH_RUNTIME_PATH)
+  set(CMAKE_SHARED_LIBRARY_LINK_Fortran_WITH_RUNTIME_PATH ${CMAKE_SHARED_LIBRARY_LINK_C_WITH_RUNTIME_PATH})
+endif()
+
+if(NOT CMAKE_INCLUDE_FLAG_Fortran)
+  set(CMAKE_INCLUDE_FLAG_Fortran ${CMAKE_INCLUDE_FLAG_C})
+endif()
+
+if(CMAKE_EXECUTABLE_FORMAT STREQUAL "ELF")
+  if(NOT DEFINED CMAKE_Fortran_LINK_WHAT_YOU_USE_FLAG)
+    set(CMAKE_Fortran_LINK_WHAT_YOU_USE_FLAG "LINKER:--no-as-needed")
+  endif()
+  if(NOT DEFINED CMAKE_LINK_WHAT_YOU_USE_CHECK)
+    set(CMAKE_LINK_WHAT_YOU_USE_CHECK ldd -u -r)
+  endif()
+endif()
+
+set(CMAKE_VERBOSE_MAKEFILE FALSE CACHE BOOL "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make.  This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo.")
+
+set(CMAKE_Fortran_FLAGS_INIT "$ENV{FFLAGS} ${CMAKE_Fortran_FLAGS_INIT}")
+
+cmake_initialize_per_config_variable(CMAKE_Fortran_FLAGS "Flags used by the Fortran compiler")
+
+if(NOT CMAKE_Fortran_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_Fortran_COMPILER_LAUNCHER})
+  set(CMAKE_Fortran_COMPILER_LAUNCHER "$ENV{CMAKE_Fortran_COMPILER_LAUNCHER}"
+    CACHE STRING "Compiler launcher for Fortran.")
+endif()
+
+include(CMakeCommonLanguageInclude)
+
+# now define the following rule variables
+# CMAKE_Fortran_CREATE_SHARED_LIBRARY
+# CMAKE_Fortran_CREATE_SHARED_MODULE
+# CMAKE_Fortran_COMPILE_OBJECT
+# CMAKE_Fortran_LINK_EXECUTABLE
+
+# create a Fortran shared library
+if(NOT CMAKE_Fortran_CREATE_SHARED_LIBRARY)
+  set(CMAKE_Fortran_CREATE_SHARED_LIBRARY
+      "<CMAKE_Fortran_COMPILER> <CMAKE_SHARED_LIBRARY_Fortran_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
+endif()
+
+# create a Fortran shared module just copy the shared library rule
+if(NOT CMAKE_Fortran_CREATE_SHARED_MODULE)
+  set(CMAKE_Fortran_CREATE_SHARED_MODULE ${CMAKE_Fortran_CREATE_SHARED_LIBRARY})
+endif()
+
+# Create a static archive incrementally for large object file counts.
+# If CMAKE_Fortran_CREATE_STATIC_LIBRARY is set it will override these.
+if(NOT DEFINED CMAKE_Fortran_ARCHIVE_CREATE)
+  set(CMAKE_Fortran_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
+endif()
+if(NOT DEFINED CMAKE_Fortran_ARCHIVE_APPEND)
+  set(CMAKE_Fortran_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
+endif()
+if(NOT DEFINED CMAKE_Fortran_ARCHIVE_FINISH)
+  set(CMAKE_Fortran_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
+endif()
+
+# compile a Fortran file into an object file
+# (put -o after -c to workaround bug in at least one mpif77 wrapper)
+if(NOT CMAKE_Fortran_COMPILE_OBJECT)
+  set(CMAKE_Fortran_COMPILE_OBJECT
+    "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -c <SOURCE> -o <OBJECT>")
+endif()
+
+# link a fortran program
+if(NOT CMAKE_Fortran_LINK_EXECUTABLE)
+  set(CMAKE_Fortran_LINK_EXECUTABLE
+    "<CMAKE_Fortran_COMPILER> <CMAKE_Fortran_LINK_FLAGS> <LINK_FLAGS> <FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
+endif()
+
+if(CMAKE_Fortran_STANDARD_LIBRARIES_INIT)
+  set(CMAKE_Fortran_STANDARD_LIBRARIES "${CMAKE_Fortran_STANDARD_LIBRARIES_INIT}"
+    CACHE STRING "Libraries linked by default with all Fortran applications.")
+  mark_as_advanced(CMAKE_Fortran_STANDARD_LIBRARIES)
+endif()
+
+# set this variable so we can avoid loading this more than once.
+set(CMAKE_Fortran_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.22/Modules/CMakeGenericSystem.cmake b/share/cmake-3.22/Modules/CMakeGenericSystem.cmake
new file mode 100644
index 0000000..649b6f7
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeGenericSystem.cmake
@@ -0,0 +1,187 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+include(CMakeInitializeConfigs)
+
+set(CMAKE_SHARED_LIBRARY_C_FLAGS "")            # -pic
+set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared")       # -shared
+set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")         # +s, flag for exe link to use shared lib
+set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "")       # -rpath
+set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP "")   # : or empty
+set(CMAKE_INCLUDE_FLAG_C "-I")       # -I
+set(CMAKE_LIBRARY_PATH_FLAG "-L")
+set(CMAKE_LIBRARY_PATH_TERMINATOR "")  # for the Digital Mars D compiler the link paths have to be terminated with a "/"
+set(CMAKE_LINK_LIBRARY_FLAG "-l")
+
+set(CMAKE_LINK_LIBRARY_SUFFIX "")
+set(CMAKE_STATIC_LIBRARY_PREFIX "lib")
+set(CMAKE_STATIC_LIBRARY_SUFFIX ".a")
+set(CMAKE_SHARED_LIBRARY_PREFIX "lib")          # lib
+set(CMAKE_SHARED_LIBRARY_SUFFIX ".so")          # .so
+set(CMAKE_EXECUTABLE_SUFFIX "")          # .exe
+set(CMAKE_DL_LIBS "dl")
+
+set(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+set(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a")
+
+set(CMAKE_AUTOGEN_ORIGIN_DEPENDS ON)
+set(CMAKE_AUTOMOC_COMPILER_PREDEFINES ON)
+if(NOT DEFINED CMAKE_AUTOMOC_PATH_PREFIX)
+  set(CMAKE_AUTOMOC_PATH_PREFIX OFF)
+endif()
+set(CMAKE_AUTOMOC_MACRO_NAMES "Q_OBJECT" "Q_GADGET" "Q_NAMESPACE" "Q_NAMESPACE_EXPORT")
+
+# basically all general purpose OSs support shared libs
+set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE)
+
+set (CMAKE_SKIP_RPATH "NO" CACHE BOOL
+     "If set, runtime paths are not added when using shared libraries.")
+set (CMAKE_SKIP_INSTALL_RPATH "NO" CACHE BOOL
+     "If set, runtime paths are not added when installing shared libraries, but are added when building.")
+
+set(CMAKE_VERBOSE_MAKEFILE FALSE CACHE BOOL "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make.  This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo.")
+
+if(CMAKE_GENERATOR MATCHES "Make")
+  set(CMAKE_COLOR_MAKEFILE ON CACHE BOOL
+    "Enable/Disable color output during build."
+    )
+  mark_as_advanced(CMAKE_COLOR_MAKEFILE)
+  if(DEFINED CMAKE_RULE_MESSAGES)
+    set_property(GLOBAL PROPERTY RULE_MESSAGES ${CMAKE_RULE_MESSAGES})
+  endif()
+  if(DEFINED CMAKE_TARGET_MESSAGES)
+    set_property(GLOBAL PROPERTY TARGET_MESSAGES ${CMAKE_TARGET_MESSAGES})
+  endif()
+endif()
+
+if(NOT DEFINED CMAKE_EXPORT_COMPILE_COMMANDS AND CMAKE_GENERATOR MATCHES "Ninja|Unix Makefiles")
+  set(CMAKE_EXPORT_COMPILE_COMMANDS "$ENV{CMAKE_EXPORT_COMPILE_COMMANDS}"
+    CACHE BOOL "Enable/Disable output of compile commands during generation."
+    )
+  mark_as_advanced(CMAKE_EXPORT_COMPILE_COMMANDS)
+endif()
+
+# GetDefaultWindowsPrefixBase
+#
+# Compute the base directory for CMAKE_INSTALL_PREFIX based on:
+#  - is this 32-bit or 64-bit Windows
+#  - is this 32-bit or 64-bit CMake running
+#  - what architecture targets will be built
+#
+function(GetDefaultWindowsPrefixBase var)
+
+  # Try to guess what architecture targets will end up being built as,
+  # even if CMAKE_SIZEOF_VOID_P is not computed yet... We need to know
+  # the architecture of the targets being built to choose the right
+  # default value for CMAKE_INSTALL_PREFIX.
+  #
+  if("${CMAKE_GENERATOR}" MATCHES "(Win64|IA64)")
+    set(arch_hint "x64")
+  elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "x64")
+    set(arch_hint "x64")
+  elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "ARM64")
+    set(arch_hint "ARM64")
+  elseif("${CMAKE_GENERATOR}" MATCHES "ARM")
+    set(arch_hint "ARM")
+  elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "ARM")
+    set(arch_hint "ARM")
+  elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
+    set(arch_hint "x64")
+  elseif("$ENV{LIB}" MATCHES "(amd64|ia64)")
+    set(arch_hint "x64")
+  endif()
+
+  if(NOT arch_hint)
+    set(arch_hint "x86")
+  endif()
+
+  # default env in a 64-bit app on Win64:
+  # ProgramFiles=C:\Program Files
+  # ProgramFiles(x86)=C:\Program Files (x86)
+  # ProgramW6432=C:\Program Files
+  #
+  # default env in a 32-bit app on Win64:
+  # ProgramFiles=C:\Program Files (x86)
+  # ProgramFiles(x86)=C:\Program Files (x86)
+  # ProgramW6432=C:\Program Files
+  #
+  # default env in a 32-bit app on Win32:
+  # ProgramFiles=C:\Program Files
+  # ProgramFiles(x86) NOT DEFINED
+  # ProgramW6432 NOT DEFINED
+
+  # By default, use the ProgramFiles env var as the base value of
+  # CMAKE_INSTALL_PREFIX:
+  #
+  set(_PREFIX_ENV_VAR "ProgramFiles")
+
+  if ("$ENV{ProgramW6432}" STREQUAL "")
+    # running on 32-bit Windows
+    # must be a 32-bit CMake, too...
+    #message("guess: this is a 32-bit CMake running on 32-bit Windows")
+  else()
+    # running on 64-bit Windows
+    if ("$ENV{ProgramW6432}" STREQUAL "$ENV{ProgramFiles}")
+      # 64-bit CMake
+      #message("guess: this is a 64-bit CMake running on 64-bit Windows")
+      if(NOT "${arch_hint}" STREQUAL "x64")
+      # building 32-bit targets
+        set(_PREFIX_ENV_VAR "ProgramFiles(x86)")
+      endif()
+    else()
+      # 32-bit CMake
+      #message("guess: this is a 32-bit CMake running on 64-bit Windows")
+      if("${arch_hint}" STREQUAL "x64")
+      # building 64-bit targets
+        set(_PREFIX_ENV_VAR "ProgramW6432")
+      endif()
+    endif()
+  endif()
+
+  #if("${arch_hint}" STREQUAL "x64")
+  #  message("guess: you are building a 64-bit app")
+  #else()
+  #  message("guess: you are building a 32-bit app")
+  #endif()
+
+  if(NOT "$ENV{${_PREFIX_ENV_VAR}}" STREQUAL "")
+    file(TO_CMAKE_PATH "$ENV{${_PREFIX_ENV_VAR}}" _base)
+  elseif(NOT "$ENV{SystemDrive}" STREQUAL "")
+    set(_base "$ENV{SystemDrive}/Program Files")
+  else()
+    set(_base "C:/Program Files")
+  endif()
+
+  set(${var} "${_base}" PARENT_SCOPE)
+endfunction()
+
+
+# Set a variable to indicate whether the value of CMAKE_INSTALL_PREFIX
+# was initialized by the block below.  This is useful for user
+# projects to change the default prefix while still allowing the
+# command line to override it.
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+  set(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT 1)
+endif()
+
+# Choose a default install prefix for this platform.
+if(CMAKE_HOST_UNIX)
+  set(CMAKE_INSTALL_PREFIX "/usr/local"
+    CACHE PATH "Install path prefix, prepended onto install directories.")
+else()
+  GetDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES)
+  set(CMAKE_INSTALL_PREFIX
+    "${CMAKE_GENERIC_PROGRAM_FILES}/${PROJECT_NAME}"
+    CACHE PATH "Install path prefix, prepended onto install directories.")
+  set(CMAKE_GENERIC_PROGRAM_FILES)
+endif()
+
+# Set a variable which will be used as component name in install() commands
+# where no COMPONENT has been given:
+set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "Unspecified")
+
+mark_as_advanced(
+  CMAKE_SKIP_RPATH
+  CMAKE_SKIP_INSTALL_RPATH
+  CMAKE_VERBOSE_MAKEFILE
+)
diff --git a/share/cmake-3.22/Modules/CMakeGraphVizOptions.cmake b/share/cmake-3.22/Modules/CMakeGraphVizOptions.cmake
new file mode 100644
index 0000000..7086722
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeGraphVizOptions.cmake
@@ -0,0 +1,150 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CMakeGraphVizOptions
+--------------------
+
+The builtin Graphviz support of CMake.
+
+Generating Graphviz files
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+CMake can generate `Graphviz <https://www.graphviz.org/>`_ files showing the
+dependencies between the targets in a project, as well as external libraries
+which are linked against.
+
+When running CMake with the ``--graphviz=foo.dot`` option, it produces:
+
+* a ``foo.dot`` file, showing all dependencies in the project
+* a ``foo.dot.<target>`` file for each target, showing on which other targets
+  it depends
+* a ``foo.dot.<target>.dependers`` file for each target, showing which other
+  targets depend on it
+
+Those .dot files can be converted to images using the *dot* command from the
+Graphviz package:
+
+.. code-block:: shell
+
+  dot -Tpng -o foo.png foo.dot
+
+.. versionadded:: 3.10
+  The different dependency types ``PUBLIC``, ``INTERFACE`` and ``PRIVATE``
+  are represented as solid, dashed and dotted edges.
+
+Variables specific to the Graphviz support
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The resulting graphs can be huge.  The look and content of the generated graphs
+can be controlled using the file ``CMakeGraphVizOptions.cmake``.  This file is
+first searched in :variable:`CMAKE_BINARY_DIR`, and then in
+:variable:`CMAKE_SOURCE_DIR`.  If found, the variables set in it are used to
+adjust options for the generated Graphviz files.
+
+.. variable:: GRAPHVIZ_GRAPH_NAME
+
+ The graph name.
+
+ * Mandatory: NO
+ * Default: value of :variable:`CMAKE_PROJECT_NAME`
+
+.. variable:: GRAPHVIZ_GRAPH_HEADER
+
+ The header written at the top of the Graphviz files.
+
+ * Mandatory: NO
+ * Default: "node [ fontsize = "12" ];"
+
+.. variable:: GRAPHVIZ_NODE_PREFIX
+
+ The prefix for each node in the Graphviz files.
+
+ * Mandatory: NO
+ * Default: "node"
+
+.. variable:: GRAPHVIZ_EXECUTABLES
+
+ Set to FALSE to exclude executables from the generated graphs.
+
+ * Mandatory: NO
+ * Default: TRUE
+
+.. variable:: GRAPHVIZ_STATIC_LIBS
+
+ Set to FALSE to exclude static libraries from the generated graphs.
+
+ * Mandatory: NO
+ * Default: TRUE
+
+.. variable:: GRAPHVIZ_SHARED_LIBS
+
+ Set to FALSE to exclude shared libraries from the generated graphs.
+
+ * Mandatory: NO
+ * Default: TRUE
+
+.. variable:: GRAPHVIZ_MODULE_LIBS
+
+ Set to FALSE to exclude module libraries from the generated graphs.
+
+ * Mandatory: NO
+ * Default: TRUE
+
+.. variable:: GRAPHVIZ_INTERFACE_LIBS
+
+ Set to FALSE to exclude interface libraries from the generated graphs.
+
+ * Mandatory: NO
+ * Default: TRUE
+
+.. variable:: GRAPHVIZ_OBJECT_LIBS
+
+ Set to FALSE to exclude object libraries from the generated graphs.
+
+ * Mandatory: NO
+ * Default: TRUE
+
+.. variable:: GRAPHVIZ_UNKNOWN_LIBS
+
+ Set to FALSE to exclude unknown libraries from the generated graphs.
+
+ * Mandatory: NO
+ * Default: TRUE
+
+.. variable:: GRAPHVIZ_EXTERNAL_LIBS
+
+ Set to FALSE to exclude external libraries from the generated graphs.
+
+ * Mandatory: NO
+ * Default: TRUE
+
+.. variable:: GRAPHVIZ_CUSTOM_TARGETS
+
+ Set to TRUE to include custom targets in the generated graphs.
+
+ * Mandatory: NO
+ * Default: FALSE
+
+.. variable:: GRAPHVIZ_IGNORE_TARGETS
+
+ A list of regular expressions for names of targets to exclude from the
+ generated graphs.
+
+ * Mandatory: NO
+ * Default: empty
+
+.. variable:: GRAPHVIZ_GENERATE_PER_TARGET
+
+ Set to FALSE to not generate per-target graphs ``foo.dot.<target>``.
+
+ * Mandatory: NO
+ * Default: TRUE
+
+.. variable:: GRAPHVIZ_GENERATE_DEPENDERS
+
+ Set to FALSE to not generate depender graphs ``foo.dot.<target>.dependers``.
+
+ * Mandatory: NO
+ * Default: TRUE
+#]=======================================================================]
diff --git a/share/cmake-3.22/Modules/CMakeHIPCompiler.cmake.in b/share/cmake-3.22/Modules/CMakeHIPCompiler.cmake.in
new file mode 100644
index 0000000..ce4e2cf
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeHIPCompiler.cmake.in
@@ -0,0 +1,60 @@
+set(CMAKE_HIP_COMPILER "@CMAKE_HIP_COMPILER@")
+set(CMAKE_HIP_COMPILER_ID "@CMAKE_HIP_COMPILER_ID@")
+set(CMAKE_HIP_COMPILER_VERSION "@CMAKE_HIP_COMPILER_VERSION@")
+set(CMAKE_HIP_STANDARD_COMPUTED_DEFAULT "@CMAKE_HIP_STANDARD_COMPUTED_DEFAULT@")
+set(CMAKE_HIP_EXTENSIONS_COMPUTED_DEFAULT "@CMAKE_HIP_EXTENSIONS_COMPUTED_DEFAULT@")
+set(CMAKE_HIP_COMPILE_FEATURES "@CMAKE_HIP_COMPILE_FEATURES@")
+set(CMAKE_HIP98_COMPILE_FEATURES "@CMAKE_HIP03_COMPILE_FEATURES@")
+set(CMAKE_HIP11_COMPILE_FEATURES "@CMAKE_HIP11_COMPILE_FEATURES@")
+set(CMAKE_HIP14_COMPILE_FEATURES "@CMAKE_HIP14_COMPILE_FEATURES@")
+set(CMAKE_HIP17_COMPILE_FEATURES "@CMAKE_HIP17_COMPILE_FEATURES@")
+set(CMAKE_HIP20_COMPILE_FEATURES "@CMAKE_HIP20_COMPILE_FEATURES@")
+set(CMAKE_HIP23_COMPILE_FEATURES "@CMAKE_HIP23_COMPILE_FEATURES@")
+
+set(CMAKE_HIP_PLATFORM_ID "@CMAKE_HIP_PLATFORM_ID@")
+set(CMAKE_HIP_SIMULATE_ID "@CMAKE_HIP_SIMULATE_ID@")
+set(CMAKE_HIP_COMPILER_FRONTEND_VARIANT "@CMAKE_HIP_COMPILER_FRONTEND_VARIANT@")
+set(CMAKE_HIP_SIMULATE_VERSION "@CMAKE_HIP_SIMULATE_VERSION@")
+@SET_MSVC_HIP_ARCHITECTURE_ID@
+@_SET_CMAKE_HIP_COMPILER_SYSROOT@
+set(CMAKE_HIP_COMPILER_ROCM_ROOT "@CMAKE_HIP_COMPILER_ROCM_ROOT@")
+
+set(CMAKE_HIP_COMPILER_ENV_VAR "HIPCXX")
+
+set(CMAKE_HIP_COMPILER_LOADED 1)
+set(CMAKE_HIP_COMPILER_ID_RUN 1)
+set(CMAKE_HIP_SOURCE_FILE_EXTENSIONS hip)
+set(CMAKE_HIP_LINKER_PREFERENCE 90)
+set(CMAKE_HIP_LINKER_PREFERENCE_PROPAGATES 1)
+
+set(CMAKE_HIP_SIZEOF_DATA_PTR "@CMAKE_HIP_SIZEOF_DATA_PTR@")
+set(CMAKE_HIP_COMPILER_ABI "@CMAKE_HIP_COMPILER_ABI@")
+set(CMAKE_HIP_LIBRARY_ARCHITECTURE "@CMAKE_HIP_LIBRARY_ARCHITECTURE@")
+
+if(CMAKE_HIP_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_HIP_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_HIP_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_HIP_COMPILER_ABI}")
+endif()
+
+if(CMAKE_HIP_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "@CMAKE_HIP_LIBRARY_ARCHITECTURE@")
+endif()
+
+set(CMAKE_HIP_TOOLKIT_INCLUDE_DIRECTORIES "@CMAKE_HIP_TOOLKIT_INCLUDE_DIRECTORIES@")
+
+set(CMAKE_HIP_IMPLICIT_INCLUDE_DIRECTORIES "@CMAKE_HIP_IMPLICIT_INCLUDE_DIRECTORIES@")
+set(CMAKE_HIP_IMPLICIT_LINK_LIBRARIES "@CMAKE_HIP_IMPLICIT_LINK_LIBRARIES@")
+set(CMAKE_HIP_IMPLICIT_LINK_DIRECTORIES "@CMAKE_HIP_IMPLICIT_LINK_DIRECTORIES@")
+set(CMAKE_HIP_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_HIP_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
+
+set(CMAKE_HIP_RUNTIME_LIBRARY_DEFAULT "SHARED")
+
+set(CMAKE_AR "@CMAKE_AR@")
+set(CMAKE_HIP_COMPILER_AR "@CMAKE_HIP_COMPILER_AR@")
+set(CMAKE_RANLIB "@CMAKE_RANLIB@")
+set(CMAKE_HIP_COMPILER_RANLIB "@CMAKE_HIP_COMPILER_RANLIB@")
+set(CMAKE_LINKER "@CMAKE_LINKER@")
+set(CMAKE_MT "@CMAKE_MT@")
diff --git a/share/cmake-3.22/Modules/CMakeHIPCompilerABI.hip b/share/cmake-3.22/Modules/CMakeHIPCompilerABI.hip
new file mode 100644
index 0000000..6c912bd
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeHIPCompilerABI.hip
@@ -0,0 +1,16 @@
+#ifndef __HIP__
+#  error "A C or C++ compiler has been selected for HIP"
+#endif
+
+#include "CMakeCompilerABI.h"
+
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_sizeof_dptr[argc];
+#if defined(ABI_ID)
+  require += info_abi[argc];
+#endif
+  (void)argv;
+  return require;
+}
diff --git a/share/cmake-3.22/Modules/CMakeHIPCompilerId.hip.in b/share/cmake-3.22/Modules/CMakeHIPCompilerId.hip.in
new file mode 100644
index 0000000..3c4a1d4
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeHIPCompilerId.hip.in
@@ -0,0 +1,63 @@
+#ifndef __HIP__
+# error "A C or C++ compiler has been selected for HIP"
+#endif
+
+@CMAKE_HIP_COMPILER_ID_CONTENT@
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+#ifdef SIMULATE_ID
+char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
+#endif
+
+@CMAKE_HIP_COMPILER_ID_PLATFORM_CONTENT@
+@CMAKE_HIP_COMPILER_ID_ERROR_FOR_TEST@
+
+const char* info_language_standard_default = "INFO" ":" "standard_default["
+#if __cplusplus > 202002L
+  "23"
+#elif __cplusplus > 201703L
+  "20"
+#elif __cplusplus >= 201703L
+  "17"
+#elif __cplusplus >= 201402L
+  "14"
+#elif __cplusplus >= 201103L
+  "11"
+#else
+  "98"
+#endif
+"]";
+
+const char* info_language_extensions_default = "INFO" ":" "extensions_default["
+#if (defined(__clang__) || defined(__GNUC__)) && !defined(__STRICT_ANSI__)
+  "ON"
+#else
+  "OFF"
+#endif
+"]";
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+#ifdef SIMULATE_ID
+  require += info_simulate[argc];
+#endif
+#ifdef SIMULATE_VERSION_MAJOR
+  require += info_simulate_version[argc];
+#endif
+  require += info_language_standard_default[argc];
+  require += info_language_extensions_default[argc];
+  (void)argv;
+  return require;
+}
diff --git a/share/cmake-3.22/Modules/CMakeHIPInformation.cmake b/share/cmake-3.22/Modules/CMakeHIPInformation.cmake
new file mode 100644
index 0000000..4c57677
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeHIPInformation.cmake
@@ -0,0 +1,151 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+if(UNIX)
+  set(CMAKE_HIP_OUTPUT_EXTENSION .o)
+else()
+  set(CMAKE_HIP_OUTPUT_EXTENSION .obj)
+endif()
+set(CMAKE_INCLUDE_FLAG_HIP "-I")
+
+# Load compiler-specific information.
+if(CMAKE_HIP_COMPILER_ID)
+  include(Compiler/${CMAKE_HIP_COMPILER_ID}-HIP OPTIONAL)
+endif()
+
+# load the system- and compiler specific files
+if(CMAKE_HIP_COMPILER_ID)
+  # load a hardware specific file, mostly useful for embedded compilers
+  if(CMAKE_SYSTEM_PROCESSOR)
+    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_HIP_COMPILER_ID}-HIP-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
+  endif()
+  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_HIP_COMPILER_ID}-HIP OPTIONAL)
+endif()
+
+
+if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_HIP_FLAG)
+  set(CMAKE_SHARED_LIBRARY_RUNTIME_HIP_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG})
+endif()
+
+if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_HIP_FLAG_SEP)
+  set(CMAKE_SHARED_LIBRARY_RUNTIME_HIP_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP})
+endif()
+
+if(NOT CMAKE_SHARED_LIBRARY_RPATH_LINK_HIP_FLAG)
+  set(CMAKE_SHARED_LIBRARY_RPATH_LINK_HIP_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_EXE_EXPORTS_HIP_FLAG)
+  set(CMAKE_EXE_EXPORTS_HIP_FLAG ${CMAKE_EXE_EXPORTS_C_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_SONAME_HIP_FLAG)
+  set(CMAKE_SHARED_LIBRARY_SONAME_HIP_FLAG ${CMAKE_SHARED_LIBRARY_SONAME_C_FLAG})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RUNTIME_HIP_FLAG)
+  set(CMAKE_EXECUTABLE_RUNTIME_HIP_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_HIP_FLAG})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RUNTIME_HIP_FLAG_SEP)
+  set(CMAKE_EXECUTABLE_RUNTIME_HIP_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_HIP_FLAG_SEP})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RPATH_LINK_HIP_FLAG)
+  set(CMAKE_EXECUTABLE_RPATH_LINK_HIP_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_HIP_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_LINK_HIP_WITH_RUNTIME_PATH)
+  set(CMAKE_SHARED_LIBRARY_LINK_HIP_WITH_RUNTIME_PATH ${CMAKE_SHARED_LIBRARY_LINK_C_WITH_RUNTIME_PATH})
+endif()
+
+
+# for most systems a module is the same as a shared library
+# so unless the variable CMAKE_MODULE_EXISTS is set just
+# copy the values from the LIBRARY variables
+if(NOT CMAKE_MODULE_EXISTS)
+  set(CMAKE_SHARED_MODULE_HIP_FLAGS ${CMAKE_SHARED_LIBRARY_HIP_FLAGS})
+  set(CMAKE_SHARED_MODULE_CREATE_HIP_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_HIP_FLAGS})
+endif()
+
+if(CMAKE_EXECUTABLE_FORMAT STREQUAL "ELF")
+  if(NOT DEFINED CMAKE_HIP_LINK_WHAT_YOU_USE_FLAG)
+    set(CMAKE_HIP_LINK_WHAT_YOU_USE_FLAG "LINKER:--no-as-needed")
+  endif()
+  if(NOT DEFINED CMAKE_LINK_WHAT_YOU_USE_CHECK)
+    set(CMAKE_LINK_WHAT_YOU_USE_CHECK ldd -u -r)
+  endif()
+endif()
+
+# add the flags to the cache based
+# on the initial values computed in the platform/*.cmake files
+# use _INIT variables so that this only happens the first time
+# and you can set these flags in the cmake cache
+set(CMAKE_HIP_FLAGS_INIT "$ENV{HIPFLAGS} ${CMAKE_HIP_FLAGS_INIT}")
+
+cmake_initialize_per_config_variable(CMAKE_HIP_FLAGS "Flags used by the HIP compiler")
+
+if(CMAKE_HIP_STANDARD_LIBRARIES_INIT)
+  set(CMAKE_HIP_STANDARD_LIBRARIES "${CMAKE_HIP_STANDARD_LIBRARIES_INIT}"
+    CACHE STRING "Libraries linked by default with all HIP applications.")
+  mark_as_advanced(CMAKE_HIP_STANDARD_LIBRARIES)
+endif()
+
+if(NOT CMAKE_HIP_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_HIP_COMPILER_LAUNCHER})
+  set(CMAKE_HIP_COMPILER_LAUNCHER "$ENV{CMAKE_HIP_COMPILER_LAUNCHER}"
+    CACHE STRING "Compiler launcher for HIP.")
+endif()
+
+include(CMakeCommonLanguageInclude)
+
+# now define the following rules:
+# CMAKE_HIP_CREATE_SHARED_LIBRARY
+# CMAKE_HIP_CREATE_SHARED_MODULE
+# CMAKE_HIP_COMPILE_OBJECT
+# CMAKE_HIP_LINK_EXECUTABLE
+
+# create a shared library
+if(NOT CMAKE_HIP_CREATE_SHARED_LIBRARY)
+  set(CMAKE_HIP_CREATE_SHARED_LIBRARY
+      "<CMAKE_HIP_COMPILER> <CMAKE_SHARED_LIBRARY_HIP_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_HIP_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
+endif()
+
+# create a shared module copy the shared library rule by default
+if(NOT CMAKE_HIP_CREATE_SHARED_MODULE)
+  set(CMAKE_HIP_CREATE_SHARED_MODULE ${CMAKE_HIP_CREATE_SHARED_LIBRARY})
+endif()
+
+# Create a static archive incrementally for large object file counts.
+if(NOT DEFINED CMAKE_HIP_ARCHIVE_CREATE)
+  set(CMAKE_HIP_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
+endif()
+if(NOT DEFINED CMAKE_HIP_ARCHIVE_APPEND)
+  set(CMAKE_HIP_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
+endif()
+if(NOT DEFINED CMAKE_HIP_ARCHIVE_FINISH)
+  set(CMAKE_HIP_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
+endif()
+
+# compile a HIP file into an object file
+if(NOT CMAKE_HIP_COMPILE_OBJECT)
+  set(CMAKE_HIP_COMPILE_OBJECT
+    "<CMAKE_HIP_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> ${_CMAKE_COMPILE_AS_HIP_FLAG} -c <SOURCE>")
+endif()
+
+# compile a cu file into an executable
+if(NOT CMAKE_HIP_LINK_EXECUTABLE)
+  set(CMAKE_HIP_LINK_EXECUTABLE
+    "<CMAKE_HIP_COMPILER> <FLAGS> <CMAKE_HIP_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
+endif()
+
+set(CMAKE_HIP_INFORMATION_LOADED 1)
+
+# Load the file and find the relevant HIP runtime.
+if(NOT DEFINED _CMAKE_HIP_DEVICE_RUNTIME_TARGET)
+  set(hip-lang_DIR "${CMAKE_HIP_COMPILER_ROCM_ROOT}/lib/cmake/hip-lang")
+  find_package(hip-lang CONFIG QUIET NO_DEFAULT_PATH)
+endif()
+if(DEFINED _CMAKE_HIP_DEVICE_RUNTIME_TARGET)
+  list(APPEND CMAKE_HIP_RUNTIME_LIBRARIES_STATIC ${_CMAKE_HIP_DEVICE_RUNTIME_TARGET})
+  list(APPEND CMAKE_HIP_RUNTIME_LIBRARIES_SHARED ${_CMAKE_HIP_DEVICE_RUNTIME_TARGET})
+endif()
diff --git a/share/cmake-3.22/Modules/CMakeIOSInstallCombined.cmake b/share/cmake-3.22/Modules/CMakeIOSInstallCombined.cmake
new file mode 100644
index 0000000..b022217
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeIOSInstallCombined.cmake
@@ -0,0 +1,329 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+cmake_policy(SET CMP0054 NEW)
+
+# Function to print messages of this module
+function(_ios_install_combined_message)
+  message(STATUS "[iOS combined] " ${ARGN})
+endfunction()
+
+# Get build settings for the current target/config/SDK by running
+# `xcodebuild -sdk ... -showBuildSettings` and parsing it's output
+function(_ios_install_combined_get_build_setting sdk variable resultvar)
+  if("${sdk}" STREQUAL "")
+    message(FATAL_ERROR "`sdk` is empty")
+  endif()
+
+  if("${variable}" STREQUAL "")
+    message(FATAL_ERROR "`variable` is empty")
+  endif()
+
+  if("${resultvar}" STREQUAL "")
+    message(FATAL_ERROR "`resultvar` is empty")
+  endif()
+
+  set(
+      cmd
+      xcodebuild -showBuildSettings
+      -sdk "${sdk}"
+      -target "${CURRENT_TARGET}"
+      -config "${CURRENT_CONFIG}"
+  )
+
+  execute_process(
+      COMMAND ${cmd}
+      WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
+      RESULT_VARIABLE result
+      OUTPUT_VARIABLE output
+  )
+
+  if(NOT result EQUAL 0)
+    message(FATAL_ERROR "Command failed (${result}): ${cmd}")
+  endif()
+
+  if(NOT output MATCHES " ${variable} = ([^\n]*)")
+    if("${variable}" STREQUAL "VALID_ARCHS")
+      # VALID_ARCHS may be unset by user for given SDK
+      # (e.g. for build without simulator).
+      set("${resultvar}" "" PARENT_SCOPE)
+      return()
+    else()
+      message(FATAL_ERROR "${variable} not found.")
+    endif()
+  endif()
+
+  set("${resultvar}" "${CMAKE_MATCH_1}" PARENT_SCOPE)
+endfunction()
+
+# Get architectures of given SDK (iphonesimulator/iphoneos)
+function(_ios_install_combined_get_valid_archs sdk resultvar)
+  cmake_policy(PUSH)
+  cmake_policy(SET CMP0007 NEW)
+
+  if("${resultvar}" STREQUAL "")
+    message(FATAL_ERROR "`resultvar` is empty")
+  endif()
+
+  _ios_install_combined_get_build_setting("${sdk}" "VALID_ARCHS" valid_archs)
+
+  separate_arguments(valid_archs)
+  list(REMOVE_ITEM valid_archs "") # remove empty elements
+  list(REMOVE_DUPLICATES valid_archs)
+
+  string(REPLACE ";" " " printable "${valid_archs}")
+  _ios_install_combined_message("Architectures (${sdk}): ${printable}")
+
+  set("${resultvar}" "${valid_archs}" PARENT_SCOPE)
+
+  cmake_policy(POP)
+endfunction()
+
+# Make both arch lists a disjoint set by preferring the current SDK
+# (starting with Xcode 12 arm64 is available as device and simulator arch on iOS)
+function(_ios_install_combined_prune_common_archs corr_sdk corr_archs_var this_archs_var)
+  list(REMOVE_ITEM ${corr_archs_var} ${${this_archs_var}})
+
+  string(REPLACE ";" " " printable "${${corr_archs_var}}")
+  _ios_install_combined_message("Architectures (${corr_sdk}) after pruning: ${printable}")
+
+  set("${corr_archs_var}" "${${corr_archs_var}}" PARENT_SCOPE)
+endfunction()
+
+# Final target can contain more architectures that specified by SDK. This
+# function will run 'lipo -info' and parse output. Result will be returned
+# as a CMake list.
+function(_ios_install_combined_get_real_archs filename resultvar)
+  set(cmd "${_lipo_path}" -info "${filename}")
+  execute_process(
+      COMMAND ${cmd}
+      RESULT_VARIABLE result
+      OUTPUT_VARIABLE output
+      ERROR_VARIABLE output
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+      ERROR_STRIP_TRAILING_WHITESPACE
+  )
+  if(NOT result EQUAL 0)
+    message(
+        FATAL_ERROR "Command failed (${result}): ${cmd}\n\nOutput:\n${output}"
+    )
+  endif()
+
+  if(NOT output MATCHES "(Architectures in the fat file: [^\n]+ are|Non-fat file: [^\n]+ is architecture): ([^\n]*)")
+    message(FATAL_ERROR "Could not detect architecture from: ${output}")
+  endif()
+
+  separate_arguments(CMAKE_MATCH_2)
+  set(${resultvar} ${CMAKE_MATCH_2} PARENT_SCOPE)
+endfunction()
+
+# Run build command for the given SDK
+function(_ios_install_combined_build sdk)
+  if("${sdk}" STREQUAL "")
+    message(FATAL_ERROR "`sdk` is empty")
+  endif()
+
+  _ios_install_combined_message("Build `${CURRENT_TARGET}` for `${sdk}`")
+
+  execute_process(
+      COMMAND
+      "${CMAKE_COMMAND}"
+      --build
+      .
+      --target "${CURRENT_TARGET}"
+      --config ${CURRENT_CONFIG}
+      --
+      -sdk "${sdk}"
+      WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
+      RESULT_VARIABLE result
+  )
+
+  if(NOT result EQUAL 0)
+    message(FATAL_ERROR "Build failed")
+  endif()
+endfunction()
+
+# Remove given architecture from file. This step needed only in rare cases
+# when target was built in "unusual" way. Emit warning message.
+function(_ios_install_combined_remove_arch lib arch)
+  _ios_install_combined_message(
+    "Warning! Unexpected architecture `${arch}` detected and will be removed "
+    "from file `${lib}`")
+  set(cmd "${_lipo_path}" -remove ${arch} -output ${lib} ${lib})
+  execute_process(
+      COMMAND ${cmd}
+      RESULT_VARIABLE result
+      OUTPUT_VARIABLE output
+      ERROR_VARIABLE output
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+      ERROR_STRIP_TRAILING_WHITESPACE
+  )
+  if(NOT result EQUAL 0)
+    message(
+        FATAL_ERROR "Command failed (${result}): ${cmd}\n\nOutput:\n${output}"
+    )
+  endif()
+endfunction()
+
+# Check that 'lib' contains only 'archs' architectures (remove others).
+function(_ios_install_combined_keep_archs lib archs)
+  _ios_install_combined_get_real_archs("${lib}" real_archs)
+  set(archs_to_remove ${real_archs})
+  list(REMOVE_ITEM archs_to_remove ${archs})
+  foreach(x ${archs_to_remove})
+    _ios_install_combined_remove_arch("${lib}" "${x}")
+  endforeach()
+endfunction()
+
+function(_ios_install_combined_detect_associated_sdk corr_sdk_var)
+  if("${PLATFORM_NAME}" STREQUAL "")
+    message(FATAL_ERROR "PLATFORM_NAME should not be empty")
+  endif()
+
+  set(all_platforms "$ENV{SUPPORTED_PLATFORMS}")
+  if("${SUPPORTED_PLATFORMS}" STREQUAL "")
+    _ios_install_combined_get_build_setting(
+      ${PLATFORM_NAME} SUPPORTED_PLATFORMS all_platforms)
+    if("${all_platforms}" STREQUAL "")
+      message(FATAL_ERROR
+        "SUPPORTED_PLATFORMS not set as an environment variable nor "
+        "able to be determined from project")
+    endif()
+  endif()
+
+  separate_arguments(all_platforms)
+  if(NOT PLATFORM_NAME IN_LIST all_platforms)
+    message(FATAL_ERROR "`${PLATFORM_NAME}` not found in `${all_platforms}`")
+  endif()
+
+  list(REMOVE_ITEM all_platforms "" "${PLATFORM_NAME}")
+  list(LENGTH all_platforms all_platforms_length)
+  if(NOT all_platforms_length EQUAL 1)
+    message(FATAL_ERROR "Expected one element: ${all_platforms}")
+  endif()
+
+  set(${corr_sdk_var} "${all_platforms}" PARENT_SCOPE)
+endfunction()
+
+# Create combined binary for the given target.
+#
+# Preconditions:
+#  * Target already installed at ${destination}
+#    for the ${PLATFORM_NAME} platform
+#
+# This function will:
+#  * Run build for the lacking platform, i.e. opposite to the ${PLATFORM_NAME}
+#  * Fuse both libraries by running lipo
+function(ios_install_combined target destination)
+  if("${target}" STREQUAL "")
+    message(FATAL_ERROR "`target` is empty")
+  endif()
+
+  if("${destination}" STREQUAL "")
+    message(FATAL_ERROR "`destination` is empty")
+  endif()
+
+  if(NOT IS_ABSOLUTE "${destination}")
+    message(FATAL_ERROR "`destination` is not absolute: ${destination}")
+  endif()
+
+  if(IS_DIRECTORY "${destination}" OR IS_SYMLINK "${destination}")
+    message(FATAL_ERROR "`destination` is no regular file: ${destination}")
+  endif()
+
+  if("${CMAKE_BINARY_DIR}" STREQUAL "")
+    message(FATAL_ERROR "`CMAKE_BINARY_DIR` is empty")
+  endif()
+
+  if(NOT IS_DIRECTORY "${CMAKE_BINARY_DIR}")
+    message(FATAL_ERROR "Is not a directory: ${CMAKE_BINARY_DIR}")
+  endif()
+
+  if("${CMAKE_INSTALL_CONFIG_NAME}" STREQUAL "")
+    message(FATAL_ERROR "CMAKE_INSTALL_CONFIG_NAME is empty")
+  endif()
+
+  set(cmd xcrun -f lipo)
+
+  # Do not merge OUTPUT_VARIABLE and ERROR_VARIABLE since latter may contain
+  # some diagnostic information even for the successful run.
+  execute_process(
+      COMMAND ${cmd}
+      RESULT_VARIABLE result
+      OUTPUT_VARIABLE output
+      ERROR_VARIABLE error_output
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+      ERROR_STRIP_TRAILING_WHITESPACE
+  )
+  if(NOT result EQUAL 0)
+    message(
+        FATAL_ERROR "Command failed (${result}): ${cmd}\n\nOutput:\n${output}\nOutput(error):\n${error_output}"
+    )
+  endif()
+  set(_lipo_path ${output})
+  list(LENGTH _lipo_path len)
+  if(NOT len EQUAL 1)
+    message(FATAL_ERROR "Unexpected xcrun output: ${_lipo_path}")
+  endif()
+  if(NOT EXISTS "${_lipo_path}")
+    message(FATAL_ERROR "File not found: ${_lipo_path}")
+  endif()
+
+  set(CURRENT_CONFIG "${CMAKE_INSTALL_CONFIG_NAME}")
+  set(CURRENT_TARGET "${target}")
+
+  _ios_install_combined_message("Target: ${CURRENT_TARGET}")
+  _ios_install_combined_message("Config: ${CURRENT_CONFIG}")
+  _ios_install_combined_message("Destination: ${destination}")
+
+  # Get SDKs
+  _ios_install_combined_detect_associated_sdk(corr_sdk)
+
+  # Get architectures of the target
+  _ios_install_combined_get_valid_archs("${PLATFORM_NAME}" this_valid_archs)
+  _ios_install_combined_get_valid_archs("${corr_sdk}" corr_valid_archs)
+  _ios_install_combined_prune_common_archs("${corr_sdk}" corr_valid_archs this_valid_archs)
+
+  # Return if there are no valid architectures for the SDK.
+  # (note that library already installed)
+  if("${corr_valid_archs}" STREQUAL "")
+    _ios_install_combined_message(
+        "No architectures detected for `${corr_sdk}` (skip)"
+    )
+    return()
+  endif()
+
+  # Trigger build of corresponding target
+  _ios_install_combined_build("${corr_sdk}")
+
+  # Get location of the library in build directory
+  _ios_install_combined_get_build_setting(
+    "${corr_sdk}" "CONFIGURATION_BUILD_DIR" corr_build_dir)
+  _ios_install_combined_get_build_setting(
+    "${corr_sdk}" "EXECUTABLE_PATH" corr_executable_path)
+  set(corr "${corr_build_dir}/${corr_executable_path}")
+
+  _ios_install_combined_keep_archs("${corr}" "${corr_valid_archs}")
+  _ios_install_combined_keep_archs("${destination}" "${this_valid_archs}")
+
+  _ios_install_combined_message("Current: ${destination}")
+  _ios_install_combined_message("Corresponding: ${corr}")
+
+  set(cmd "${_lipo_path}" -create ${corr} ${destination} -output ${destination})
+
+  execute_process(
+      COMMAND ${cmd}
+      WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+      RESULT_VARIABLE result
+  )
+
+  if(NOT result EQUAL 0)
+    message(FATAL_ERROR "Command failed: ${cmd}")
+  endif()
+
+  _ios_install_combined_message("Install done: ${destination}")
+endfunction()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/CMakeISPCCompiler.cmake.in b/share/cmake-3.22/Modules/CMakeISPCCompiler.cmake.in
new file mode 100644
index 0000000..28c31cc
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeISPCCompiler.cmake.in
@@ -0,0 +1,30 @@
+set(CMAKE_ISPC_COMPILER "@CMAKE_ISPC_COMPILER@")
+set(CMAKE_ISPC_COMPILER_ARG1 "@CMAKE_ISPC_COMPILER_ARG1@")
+set(CMAKE_ISPC_COMPILER_ID "@CMAKE_ISPC_COMPILER_ID@")
+set(CMAKE_ISPC_COMPILER_VERSION "@CMAKE_ISPC_COMPILER_VERSION@")
+set(CMAKE_ISPC_COMPILER_VERSION_INTERNAL "@CMAKE_ISPC_COMPILER_VERSION_INTERNAL@")
+
+set(CMAKE_ISPC_PLATFORM_ID "@CMAKE_ISPC_PLATFORM_ID@")
+set(CMAKE_ISPC_SIMULATE_ID "@CMAKE_ISPC_SIMULATE_ID@")
+set(CMAKE_ISPC_COMPILER_FRONTEND_VARIANT "@CMAKE_ISPC_COMPILER_FRONTEND_VARIANT@")
+set(CMAKE_ISPC_SIMULATE_VERSION "@CMAKE_ISPC_SIMULATE_VERSION@")
+
+set(CMAKE_AR "@CMAKE_AR@")
+set(CMAKE_ISPC_COMPILER_AR "@CMAKE_ISPC_COMPILER_AR@")
+set(CMAKE_RANLIB "@CMAKE_RANLIB@")
+set(CMAKE_ISPC_COMPILER_RANLIB "@CMAKE_ISPC_COMPILER_RANLIB@")
+
+set(CMAKE_ISPC_COMPILER_LOADED 1)
+set(CMAKE_ISPC_COMPILER_WORKS @CMAKE_ISPC_COMPILER_WORKS@)
+set(CMAKE_ISPC_ABI_COMPILED @CMAKE_ISPC_ABI_COMPILED@)
+
+set(CMAKE_ISPC_COMPILER_ENV_VAR "ISPC")
+
+set(CMAKE_ISPC_COMPILER_ID_RUN 1)
+set(CMAKE_ISPC_SOURCE_FILE_EXTENSIONS ispc)
+set(CMAKE_ISPC_IGNORE_EXTENSIONS o;O)
+
+set(CMAKE_ISPC_LINKER_PREFERENCE 0)
+set(CMAKE_ISPC_LINKER_PREFERENCE_PROPAGATES 0)
+
+@CMAKE_ISPC_COMPILER_CUSTOM_CODE@
diff --git a/share/cmake-3.22/Modules/CMakeISPCCompilerABI.ispc b/share/cmake-3.22/Modules/CMakeISPCCompilerABI.ispc
new file mode 100644
index 0000000..e23abce
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeISPCCompilerABI.ispc
@@ -0,0 +1,20 @@
+
+export void ispcCompilerABI() {
+
+#if defined(__GNU__) && defined(__ELF__) && defined(__ARM_EABI__)
+  print("INFO:abi[ELF ARMEABI]");
+  static char const info_abi[] =
+#elif defined(__GNU__) && defined(__ELF__) && defined(__ARMEB__)
+  print("INFO:abi[ELF ARM]");
+#elif defined(__GNU__) && defined(__ELF__) && defined(__ARMEL__)
+  print("INFO:abi[ELF ARM]");
+
+#elif defined(__linux__) && defined(__ELF__) && defined(__amd64__) &&         \
+  defined(__ILP32__)
+print("INFO:abi[ELF X32]");
+
+#elif defined(__ELF__)
+print("INFO:abi[ELF]");
+#endif
+
+}
diff --git a/share/cmake-3.22/Modules/CMakeISPCCompilerId.ispc.in b/share/cmake-3.22/Modules/CMakeISPCCompilerId.ispc.in
new file mode 100644
index 0000000..03380f3
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeISPCCompilerId.ispc.in
@@ -0,0 +1,62 @@
+
+export void ispcCompilerId() {
+
+// Identify the compiler
+#if defined(ISPC)
+  print("INFO:compiler[Intel]");
+#endif
+
+// Identify the platform
+#if defined(__linux) || defined(__linux__) || defined(linux)
+  print("INFO:platform[Linux]");
+#elif defined(__CYGWIN__)
+  print("INFO:platform[Cygwin]");
+#elif defined(__MINGW32__)
+  print("INFO:platform[MinGW]");
+#elif defined(__APPLE__)
+  print("INFO:platform[Darwin]");
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+  print("INFO:platform[Windows]");
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+  print("INFO:platform[FreeBSD]");
+#elif defined(__NetBSD__) || defined(__NetBSD)
+  print("INFO:platform[NetBSD]");
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+  print("INFO:platform[OpenBSD]");
+#elif defined(__sun) || defined(sun)
+  print("INFO:platform[SunOS]");
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+  print("INFO:platform[AIX]");
+#elif defined(__hpux) || defined(__hpux__)
+  print("INFO:platform[HP-UX]");
+#elif defined(__HAIKU__)
+  print("INFO:platform[Haiku]");
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+  print("INFO:platform[BeOS]");
+#elif defined(__QNX__) || defined(__QNXNTO__)
+  print("INFO:platform[QNX]");
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+  print("INFO:platform[Tru64]");
+#elif defined(__riscos) || defined(__riscos__)
+  print("INFO:platform[RISCos]");
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+  print("INFO:platform[SINIX]");
+#elif defined(__UNIX_SV__)
+  print("INFO:platform[UNIX_SV]");
+#elif defined(__bsdos__)
+  print("INFO:platform[BSDOS]");
+#elif defined(_MPRAS) || defined(MPRAS)
+  print("INFO:platform[MP-RAS]");
+#elif defined(__osf) || defined(__osf__)
+  print("INFO:platform[OSF1]");
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+  print("INFO:platform[SCO_SV]");
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+  print("INFO:platform[ULTRIX]");
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+  print("INFO:platform[Xenix]");
+#else
+  print("INFO:platform[]");
+#endif
+
+}
diff --git a/share/cmake-3.22/Modules/CMakeISPCInformation.cmake b/share/cmake-3.22/Modules/CMakeISPCInformation.cmake
new file mode 100644
index 0000000..5acb682
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeISPCInformation.cmake
@@ -0,0 +1,65 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+if(UNIX)
+  set(CMAKE_ISPC_OUTPUT_EXTENSION .o)
+else()
+  set(CMAKE_ISPC_OUTPUT_EXTENSION .obj)
+endif()
+set(CMAKE_INCLUDE_FLAG_ISPC "-I")
+
+# Load compiler-specific information.
+if(CMAKE_ISPC_COMPILER_ID)
+  include(Compiler/${CMAKE_ISPC_COMPILER_ID}-ISPC OPTIONAL)
+endif()
+
+# load the system- and compiler specific files
+if(CMAKE_ISPC_COMPILER_ID)
+  # load a hardware specific file, mostly useful for embedded compilers
+  if(CMAKE_SYSTEM_PROCESSOR)
+    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_ISPC_COMPILER_ID}-ISPC-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
+  endif()
+  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_ISPC_COMPILER_ID}-ISPC OPTIONAL)
+endif()
+
+# add the flags to the cache based
+# on the initial values computed in the platform/*.cmake files
+# use _INIT variables so that this only happens the first time
+# and you can set these flags in the cmake cache
+set(CMAKE_ISPC_FLAGS_INIT "$ENV{ISPCFLAGS} ${CMAKE_ISPC_FLAGS_INIT}")
+
+cmake_initialize_per_config_variable(CMAKE_ISPC_FLAGS "Flags used by the ISPC compiler")
+
+if(CMAKE_ISPC_STANDARD_LIBRARIES_INIT)
+  set(CMAKE_ISPC_STANDARD_LIBRARIES "${CMAKE_ISPC_STANDARD_LIBRARIES_INIT}"
+    CACHE STRING "Libraries linked by default with all ISPC applications.")
+  mark_as_advanced(CMAKE_ISPC_STANDARD_LIBRARIES)
+endif()
+
+if(NOT CMAKE_ISPC_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_ISPC_COMPILER_LAUNCHER})
+  set(CMAKE_ISPC_COMPILER_LAUNCHER "$ENV{CMAKE_ISPC_COMPILER_LAUNCHER}"
+    CACHE STRING "Compiler launcher for ISPC.")
+endif()
+
+include(CMakeCommonLanguageInclude)
+
+# now define the following rules:
+# CMAKE_ISPC_COMPILE_OBJECT
+
+# Create a static archive incrementally for large object file counts.
+if(NOT DEFINED CMAKE_ISPC_ARCHIVE_CREATE)
+  set(CMAKE_ISPC_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
+endif()
+if(NOT DEFINED CMAKE_ISPC_ARCHIVE_APPEND)
+  set(CMAKE_ISPC_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
+endif()
+if(NOT DEFINED CMAKE_ISPC_ARCHIVE_FINISH)
+  set(CMAKE_ISPC_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
+endif()
+
+if(NOT CMAKE_ISPC_COMPILE_OBJECT)
+  set(CMAKE_ISPC_COMPILE_OBJECT
+    "<CMAKE_ISPC_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> --emit-obj <SOURCE> -h <ISPC_HEADER>")
+endif()
+
+set(CMAKE_ISPC_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.18/Modules/CMakeImportBuildSettings.cmake b/share/cmake-3.22/Modules/CMakeImportBuildSettings.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeImportBuildSettings.cmake
rename to share/cmake-3.22/Modules/CMakeImportBuildSettings.cmake
diff --git a/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake b/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake
rename to share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake
diff --git a/share/cmake-3.18/Modules/CMakeJOMFindMake.cmake b/share/cmake-3.22/Modules/CMakeJOMFindMake.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeJOMFindMake.cmake
rename to share/cmake-3.22/Modules/CMakeJOMFindMake.cmake
diff --git a/share/cmake-3.18/Modules/CMakeJavaCompiler.cmake.in b/share/cmake-3.22/Modules/CMakeJavaCompiler.cmake.in
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeJavaCompiler.cmake.in
rename to share/cmake-3.22/Modules/CMakeJavaCompiler.cmake.in
diff --git a/share/cmake-3.18/Modules/CMakeJavaInformation.cmake b/share/cmake-3.22/Modules/CMakeJavaInformation.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeJavaInformation.cmake
rename to share/cmake-3.22/Modules/CMakeJavaInformation.cmake
diff --git a/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake b/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeLanguageInformation.cmake
rename to share/cmake-3.22/Modules/CMakeLanguageInformation.cmake
diff --git a/share/cmake-3.18/Modules/CMakeMSYSFindMake.cmake b/share/cmake-3.22/Modules/CMakeMSYSFindMake.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeMSYSFindMake.cmake
rename to share/cmake-3.22/Modules/CMakeMSYSFindMake.cmake
diff --git a/share/cmake-3.18/Modules/CMakeMinGWFindMake.cmake b/share/cmake-3.22/Modules/CMakeMinGWFindMake.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeMinGWFindMake.cmake
rename to share/cmake-3.22/Modules/CMakeMinGWFindMake.cmake
diff --git a/share/cmake-3.18/Modules/CMakeNMakeFindMake.cmake b/share/cmake-3.22/Modules/CMakeNMakeFindMake.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeNMakeFindMake.cmake
rename to share/cmake-3.22/Modules/CMakeNMakeFindMake.cmake
diff --git a/share/cmake-3.18/Modules/CMakeNinjaFindMake.cmake b/share/cmake-3.22/Modules/CMakeNinjaFindMake.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeNinjaFindMake.cmake
rename to share/cmake-3.22/Modules/CMakeNinjaFindMake.cmake
diff --git a/share/cmake-3.22/Modules/CMakeOBJCCompiler.cmake.in b/share/cmake-3.22/Modules/CMakeOBJCCompiler.cmake.in
new file mode 100644
index 0000000..36f6ec1
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeOBJCCompiler.cmake.in
@@ -0,0 +1,73 @@
+set(CMAKE_OBJC_COMPILER "@CMAKE_OBJC_COMPILER@")
+set(CMAKE_OBJC_COMPILER_ARG1 "@CMAKE_OBJC_COMPILER_ARG1@")
+set(CMAKE_OBJC_COMPILER_ID "@CMAKE_OBJC_COMPILER_ID@")
+set(CMAKE_OBJC_COMPILER_VERSION "@CMAKE_OBJC_COMPILER_VERSION@")
+set(CMAKE_OBJC_COMPILER_VERSION_INTERNAL "@CMAKE_OBJC_COMPILER_VERSION_INTERNAL@")
+set(CMAKE_OBJC_COMPILER_WRAPPER "@CMAKE_OBJC_COMPILER_WRAPPER@")
+set(CMAKE_OBJC_STANDARD_COMPUTED_DEFAULT "@CMAKE_OBJC_STANDARD_COMPUTED_DEFAULT@")
+set(CMAKE_OBJC_EXTENSIONS_COMPUTED_DEFAULT "@CMAKE_OBJC_EXTENSIONS_COMPUTED_DEFAULT@")
+set(CMAKE_OBJC_COMPILE_FEATURES "@CMAKE_OBJC_COMPILE_FEATURES@")
+set(CMAKE_OBJC90_COMPILE_FEATURES "@CMAKE_OBJC90_COMPILE_FEATURES@")
+set(CMAKE_OBJC99_COMPILE_FEATURES "@CMAKE_OBJC99_COMPILE_FEATURES@")
+set(CMAKE_OBJC11_COMPILE_FEATURES "@CMAKE_OBJC11_COMPILE_FEATURES@")
+set(CMAKE_OBJC17_COMPILE_FEATURES "@CMAKE_OBJC17_COMPILE_FEATURES@")
+set(CMAKE_OBJC23_COMPILE_FEATURES "@CMAKE_OBJC23_COMPILE_FEATURES@")
+
+set(CMAKE_OBJC_PLATFORM_ID "@CMAKE_OBJC_PLATFORM_ID@")
+set(CMAKE_OBJC_SIMULATE_ID "@CMAKE_OBJC_SIMULATE_ID@")
+set(CMAKE_OBJC_COMPILER_FRONTEND_VARIANT "@CMAKE_OBJC_COMPILER_FRONTEND_VARIANT@")
+set(CMAKE_OBJC_SIMULATE_VERSION "@CMAKE_OBJC_SIMULATE_VERSION@")
+@_SET_CMAKE_OBJC_COMPILER_ARCHITECTURE_ID@
+@SET_CMAKE_XCODE_ARCHS@
+set(CMAKE_AR "@CMAKE_AR@")
+set(CMAKE_OBJC_COMPILER_AR "@CMAKE_OBJC_COMPILER_AR@")
+set(CMAKE_RANLIB "@CMAKE_RANLIB@")
+set(CMAKE_OBJC_COMPILER_RANLIB "@CMAKE_OBJC_COMPILER_RANLIB@")
+set(CMAKE_LINKER "@CMAKE_LINKER@")
+set(CMAKE_MT "@CMAKE_MT@")
+set(CMAKE_COMPILER_IS_GNUOBJC @CMAKE_COMPILER_IS_GNUOBJC@)
+set(CMAKE_OBJC_COMPILER_LOADED 1)
+set(CMAKE_OBJC_COMPILER_WORKS @CMAKE_OBJC_COMPILER_WORKS@)
+set(CMAKE_OBJC_ABI_COMPILED @CMAKE_OBJC_ABI_COMPILED@)
+
+set(CMAKE_OBJC_COMPILER_ENV_VAR "OBJC")
+
+set(CMAKE_OBJC_COMPILER_ID_RUN 1)
+set(CMAKE_OBJC_SOURCE_FILE_EXTENSIONS m)
+set(CMAKE_OBJC_IGNORE_EXTENSIONS h;H;o;O)
+set(CMAKE_OBJC_LINKER_PREFERENCE 5)
+
+foreach (lang C CXX OBJCXX)
+  foreach(extension IN LISTS CMAKE_OBJC_SOURCE_FILE_EXTENSIONS)
+    if (CMAKE_${lang}_COMPILER_ID_RUN)
+      list(REMOVE_ITEM CMAKE_${lang}_SOURCE_FILE_EXTENSIONS ${extension})
+    endif()
+  endforeach()
+endforeach()
+
+# Save compiler ABI information.
+set(CMAKE_OBJC_SIZEOF_DATA_PTR "@CMAKE_OBJC_SIZEOF_DATA_PTR@")
+set(CMAKE_OBJC_COMPILER_ABI "@CMAKE_OBJC_COMPILER_ABI@")
+set(CMAKE_OBJC_BYTE_ORDER "@CMAKE_OBJC_BYTE_ORDER@")
+set(CMAKE_OBJC_LIBRARY_ARCHITECTURE "@CMAKE_OBJC_LIBRARY_ARCHITECTURE@")
+
+if(CMAKE_OBJC_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_OBJC_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_OBJC_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_OBJC_COMPILER_ABI}")
+endif()
+
+if(CMAKE_OBJC_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "@CMAKE_OBJC_LIBRARY_ARCHITECTURE@")
+endif()
+
+@CMAKE_OBJC_COMPILER_CUSTOM_CODE@
+@CMAKE_OBJC_SYSROOT_FLAG_CODE@
+@CMAKE_OBJC_OSX_DEPLOYMENT_TARGET_FLAG_CODE@
+
+set(CMAKE_OBJC_IMPLICIT_INCLUDE_DIRECTORIES "@CMAKE_OBJC_IMPLICIT_INCLUDE_DIRECTORIES@")
+set(CMAKE_OBJC_IMPLICIT_LINK_LIBRARIES "@CMAKE_OBJC_IMPLICIT_LINK_LIBRARIES@")
+set(CMAKE_OBJC_IMPLICIT_LINK_DIRECTORIES "@CMAKE_OBJC_IMPLICIT_LINK_DIRECTORIES@")
+set(CMAKE_OBJC_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_OBJC_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
diff --git a/share/cmake-3.22/Modules/CMakeOBJCCompilerABI.m b/share/cmake-3.22/Modules/CMakeOBJCCompilerABI.m
new file mode 100644
index 0000000..0726cd3
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeOBJCCompilerABI.m
@@ -0,0 +1,22 @@
+#ifdef __cplusplus
+# error "A C++ compiler has been selected for Objective-C."
+#endif
+
+/*--------------------------------------------------------------------------*/
+
+#include "CMakeCompilerABI.h"
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char *argv[])
+{
+  int require = 0;
+  require += info_sizeof_dptr[argc];
+  require += info_byte_order_big_endian[argc];
+  require += info_byte_order_little_endian[argc];
+#if defined(ABI_ID)
+  require += info_abi[argc];
+#endif
+  (void)argv;
+  return require;
+}
diff --git a/share/cmake-3.22/Modules/CMakeOBJCCompilerId.m.in b/share/cmake-3.22/Modules/CMakeOBJCCompilerId.m.in
new file mode 100644
index 0000000..89bfe02
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeOBJCCompilerId.m.in
@@ -0,0 +1,76 @@
+#ifdef __cplusplus
+# error "An Objective-C++ compiler has been selected for Objective-C."
+#endif
+
+@CMAKE_OBJC_COMPILER_ID_CONTENT@
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+#ifdef SIMULATE_ID
+char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
+#endif
+
+#ifdef __QNXNTO__
+char const* qnxnto = "INFO" ":" "qnxnto[]";
+#endif
+
+@CMAKE_OBJC_COMPILER_ID_PLATFORM_CONTENT@
+@CMAKE_OBJC_COMPILER_ID_ERROR_FOR_TEST@
+
+#if !defined(__STDC__)
+# if (defined(_MSC_VER) && !defined(__clang__)) \
+  || (defined(__ibmxl__) || defined(__IBMC__))
+#  define C_VERSION "90"
+# else
+#  define C_VERSION
+# endif
+#elif __STDC_VERSION__ > 201710L
+# define C_VERSION "23"
+#elif __STDC_VERSION__ >= 201710L
+# define C_VERSION "17"
+#elif __STDC_VERSION__ >= 201000L
+# define C_VERSION "11"
+#elif __STDC_VERSION__ >= 199901L
+# define C_VERSION "99"
+#else
+# define C_VERSION "90"
+#endif
+const char* info_language_standard_default =
+  "INFO" ":" "standard_default[" C_VERSION "]";
+
+const char* info_language_extensions_default = "INFO" ":" "extensions_default["
+#if (defined(__clang__) || defined(__GNUC__)) && !defined(__STRICT_ANSI__)
+  "ON"
+#else
+  "OFF"
+#endif
+"]";
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+  require += info_arch[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+#ifdef COMPILER_VERSION_INTERNAL
+  require += info_version_internal[argc];
+#endif
+#ifdef SIMULATE_ID
+  require += info_simulate[argc];
+#endif
+#ifdef SIMULATE_VERSION_MAJOR
+  require += info_simulate_version[argc];
+#endif
+  require += info_language_standard_default[argc];
+  require += info_language_extensions_default[argc];
+  (void)argv;
+  return require;
+}
diff --git a/share/cmake-3.22/Modules/CMakeOBJCInformation.cmake b/share/cmake-3.22/Modules/CMakeOBJCInformation.cmake
new file mode 100644
index 0000000..4c697da
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeOBJCInformation.cmake
@@ -0,0 +1,207 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This file sets the basic flags for the Objective-C language in CMake.
+# It also loads the available platform file for the system-compiler
+# if it exists.
+# It also loads a system - compiler - processor (or target hardware)
+# specific file, which is mainly useful for crosscompiling and embedded systems.
+
+include(CMakeLanguageInformation)
+
+# some compilers use different extensions (e.g. sdcc uses .rel)
+# so set the extension here first so it can be overridden by the compiler specific file
+set(CMAKE_OBJC_OUTPUT_EXTENSION .o)
+
+if(NOT CMAKE_INCLUDE_FLAG_OBJC)
+  set(CMAKE_INCLUDE_FLAG_OBJC ${CMAKE_INCLUDE_FLAG_C})
+endif()
+
+set(_INCLUDED_FILE 0)
+
+# Load compiler-specific information.
+if(CMAKE_OBJC_COMPILER_ID)
+  include(Compiler/${CMAKE_OBJC_COMPILER_ID}-OBJC OPTIONAL)
+endif()
+
+set(CMAKE_BASE_NAME)
+get_filename_component(CMAKE_BASE_NAME "${CMAKE_OBJC_COMPILER}" NAME_WE)
+if(CMAKE_COMPILER_IS_GNUOBJC)
+  set(CMAKE_BASE_NAME gcc)
+endif()
+
+
+# load a hardware specific file, mostly useful for embedded compilers
+if(CMAKE_SYSTEM_PROCESSOR)
+  if(CMAKE_OBJC_COMPILER_ID)
+    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_OBJC_COMPILER_ID}-OBJC-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
+  endif()
+  if (NOT _INCLUDED_FILE)
+    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME}-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
+  endif ()
+endif()
+
+
+# load the system- and compiler specific files
+if(CMAKE_OBJC_COMPILER_ID)
+  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_OBJC_COMPILER_ID}-OBJC
+    OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
+endif()
+if (NOT _INCLUDED_FILE)
+  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME}
+    OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
+endif ()
+
+# load any compiler-wrapper specific information
+if (CMAKE_OBJC_COMPILER_WRAPPER)
+  __cmake_include_compiler_wrapper(OBJC)
+endif ()
+
+# We specify the compiler information in the system file for some
+# platforms, but this language may not have been enabled when the file
+# was first included.  Include it again to get the language info.
+# Remove this when all compiler info is removed from system files.
+if (NOT _INCLUDED_FILE)
+  include(Platform/${CMAKE_SYSTEM_NAME} OPTIONAL)
+endif ()
+
+if(CMAKE_OBJC_SIZEOF_DATA_PTR)
+  foreach(f ${CMAKE_OBJC_ABI_FILES})
+    include(${f})
+  endforeach()
+  unset(CMAKE_OBJC_ABI_FILES)
+endif()
+
+# This should be included before the _INIT variables are
+# used to initialize the cache.  Since the rule variables
+# have if blocks on them, users can still define them here.
+# But, it should still be after the platform file so changes can
+# be made to those values.
+
+if(CMAKE_USER_MAKE_RULES_OVERRIDE)
+  # Save the full path of the file so try_compile can use it.
+  include(${CMAKE_USER_MAKE_RULES_OVERRIDE} RESULT_VARIABLE _override)
+  set(CMAKE_USER_MAKE_RULES_OVERRIDE "${_override}")
+endif()
+
+if(CMAKE_USER_MAKE_RULES_OVERRIDE_OBJC)
+  # Save the full path of the file so try_compile can use it.
+  include(${CMAKE_USER_MAKE_RULES_OVERRIDE_OBJC} RESULT_VARIABLE _override)
+  set(CMAKE_USER_MAKE_RULES_OVERRIDE_OBJC "${_override}")
+endif()
+
+if(CMAKE_EXECUTABLE_FORMAT STREQUAL "ELF")
+  if(NOT DEFINED CMAKE_OBJC_LINK_WHAT_YOU_USE_FLAG)
+    set(CMAKE_OBJC_LINK_WHAT_YOU_USE_FLAG "LINKER:--no-as-needed")
+  endif()
+  if(NOT DEFINED CMAKE_LINK_WHAT_YOU_USE_CHECK)
+    set(CMAKE_LINK_WHAT_YOU_USE_CHECK ldd -u -r)
+  endif()
+endif()
+
+
+# for most systems a module is the same as a shared library
+# so unless the variable CMAKE_MODULE_EXISTS is set just
+# copy the values from the LIBRARY variables
+if(NOT CMAKE_MODULE_EXISTS)
+  set(CMAKE_SHARED_MODULE_OBJC_FLAGS ${CMAKE_SHARED_LIBRARY_OBJC_FLAGS})
+  set(CMAKE_SHARED_MODULE_CREATE_OBJC_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_OBJC_FLAGS})
+endif()
+
+set(CMAKE_OBJC_FLAGS_INIT "$ENV{OBJCFLAGS} ${CMAKE_OBJC_FLAGS_INIT}")
+
+cmake_initialize_per_config_variable(CMAKE_OBJC_FLAGS "Flags used by the Objective-C compiler")
+
+if(CMAKE_OBJC_STANDARD_LIBRARIES_INIT)
+  set(CMAKE_OBJC_STANDARD_LIBRARIES "${CMAKE_OBJC_STANDARD_LIBRARIES_INIT}"
+    CACHE STRING "Libraries linked by default with all Objective-C applications.")
+  mark_as_advanced(CMAKE_OBJC_STANDARD_LIBRARIES)
+endif()
+
+if(NOT CMAKE_OBJC_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_OBJC_COMPILER_LAUNCHER})
+  set(CMAKE_OBJC_COMPILER_LAUNCHER "$ENV{CMAKE_OBJC_COMPILER_LAUNCHER}"
+    CACHE STRING "Compiler launcher for OBJC.")
+endif()
+
+if(NOT CMAKE_OBJC_LINKER_LAUNCHER AND DEFINED ENV{CMAKE_OBJC_LINKER_LAUNCHER})
+  set(CMAKE_OBJC_LINKER_LAUNCHER "$ENV{CMAKE_OBJC_LINKER_LAUNCHER}"
+    CACHE STRING "Linker launcher for OBJC.")
+endif()
+
+include(CMakeCommonLanguageInclude)
+
+# now define the following rule variables
+
+# CMAKE_OBJC_CREATE_SHARED_LIBRARY
+# CMAKE_OBJC_CREATE_SHARED_MODULE
+# CMAKE_OBJC_COMPILE_OBJECT
+# CMAKE_OBJC_LINK_EXECUTABLE
+
+# variables supplied by the generator at use time
+# <TARGET>
+# <TARGET_BASE> the target without the suffix
+# <OBJECTS>
+# <OBJECT>
+# <LINK_LIBRARIES>
+# <FLAGS>
+# <LINK_FLAGS>
+
+# Objective-C compiler information
+# <CMAKE_OBJC_COMPILER>
+# <CMAKE_SHARED_LIBRARY_CREATE_OBJC_FLAGS>
+# <CMAKE_SHARED_MODULE_CREATE_OBJC_FLAGS>
+# <CMAKE_OBJC_LINK_FLAGS>
+
+# Static library tools
+# <CMAKE_AR>
+# <CMAKE_RANLIB>
+
+
+# create an Objective-C shared library
+if(NOT CMAKE_OBJC_CREATE_SHARED_LIBRARY)
+  set(CMAKE_OBJC_CREATE_SHARED_LIBRARY
+      "<CMAKE_OBJC_COMPILER> <CMAKE_SHARED_LIBRARY_OBJC_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_OBJC_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
+endif()
+
+# create an Objective-C shared module just copy the shared library rule
+if(NOT CMAKE_OBJC_CREATE_SHARED_MODULE)
+  set(CMAKE_OBJC_CREATE_SHARED_MODULE ${CMAKE_OBJC_CREATE_SHARED_LIBRARY})
+endif()
+
+# Create an static archive incrementally for large object file counts.
+# If CMAKE_OBJC_CREATE_STATIC_LIBRARY is set it will override these.
+if(NOT DEFINED CMAKE_OBJC_ARCHIVE_CREATE)
+  set(CMAKE_OBJC_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
+endif()
+if(NOT DEFINED CMAKE_OBJC_ARCHIVE_APPEND)
+  set(CMAKE_OBJC_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
+endif()
+if(NOT DEFINED CMAKE_OBJC_ARCHIVE_FINISH)
+  set(CMAKE_OBJC_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
+endif()
+
+# compile an Objective-C file into an object file
+if(NOT CMAKE_OBJC_COMPILE_OBJECT)
+  set(CMAKE_OBJC_COMPILE_OBJECT
+    "<CMAKE_OBJC_COMPILER> <DEFINES> <INCLUDES> -x objective-c <FLAGS> -o <OBJECT> -c <SOURCE>")
+endif()
+
+if(NOT CMAKE_OBJC_LINK_EXECUTABLE)
+  set(CMAKE_OBJC_LINK_EXECUTABLE
+    "<CMAKE_OBJC_COMPILER> <FLAGS> <CMAKE_OBJC_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RUNTIME_OBJC_FLAG)
+  set(CMAKE_EXECUTABLE_RUNTIME_OBJC_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_OBJC_FLAG})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RUNTIME_OBJC_FLAG_SEP)
+  set(CMAKE_EXECUTABLE_RUNTIME_OBJC_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_OBJC_FLAG_SEP})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RPATH_LINK_OBJC_FLAG)
+  set(CMAKE_EXECUTABLE_RPATH_LINK_OBJC_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_OBJC_FLAG})
+endif()
+
+set(CMAKE_OBJC_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.22/Modules/CMakeOBJCXXCompiler.cmake.in b/share/cmake-3.22/Modules/CMakeOBJCXXCompiler.cmake.in
new file mode 100644
index 0000000..4f27100
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeOBJCXXCompiler.cmake.in
@@ -0,0 +1,82 @@
+set(CMAKE_OBJCXX_COMPILER "@CMAKE_OBJCXX_COMPILER@")
+set(CMAKE_OBJCXX_COMPILER_ARG1 "@CMAKE_OBJCXX_COMPILER_ARG1@")
+set(CMAKE_OBJCXX_COMPILER_ID "@CMAKE_OBJCXX_COMPILER_ID@")
+set(CMAKE_OBJCXX_COMPILER_VERSION "@CMAKE_OBJCXX_COMPILER_VERSION@")
+set(CMAKE_OBJCXX_COMPILER_VERSION_INTERNAL "@CMAKE_OBJCXX_COMPILER_VERSION_INTERNAL@")
+set(CMAKE_OBJCXX_COMPILER_WRAPPER "@CMAKE_OBJCXX_COMPILER_WRAPPER@")
+set(CMAKE_OBJCXX_STANDARD_COMPUTED_DEFAULT "@CMAKE_OBJCXX_STANDARD_COMPUTED_DEFAULT@")
+set(CMAKE_OBJCXX_EXTENSIONS_COMPUTED_DEFAULT "@CMAKE_OBJCXX_EXTENSIONS_COMPUTED_DEFAULT@")
+set(CMAKE_OBJCXX_COMPILE_FEATURES "@CMAKE_OBJCXX_COMPILE_FEATURES@")
+set(CMAKE_OBJCXX98_COMPILE_FEATURES "@CMAKE_OBJCXX98_COMPILE_FEATURES@")
+set(CMAKE_OBJCXX11_COMPILE_FEATURES "@CMAKE_OBJCXX11_COMPILE_FEATURES@")
+set(CMAKE_OBJCXX14_COMPILE_FEATURES "@CMAKE_OBJCXX14_COMPILE_FEATURES@")
+set(CMAKE_OBJCXX17_COMPILE_FEATURES "@CMAKE_OBJCXX17_COMPILE_FEATURES@")
+set(CMAKE_OBJCXX20_COMPILE_FEATURES "@CMAKE_OBJCXX20_COMPILE_FEATURES@")
+set(CMAKE_OBJCXX23_COMPILE_FEATURES "@CMAKE_OBJCXX23_COMPILE_FEATURES@")
+
+set(CMAKE_OBJCXX_PLATFORM_ID "@CMAKE_OBJCXX_PLATFORM_ID@")
+set(CMAKE_OBJCXX_SIMULATE_ID "@CMAKE_OBJCXX_SIMULATE_ID@")
+set(CMAKE_OBJCXX_COMPILER_FRONTEND_VARIANT "@CMAKE_OBJCXX_COMPILER_FRONTEND_VARIANT@")
+set(CMAKE_OBJCXX_SIMULATE_VERSION "@CMAKE_OBJCXX_SIMULATE_VERSION@")
+@_SET_CMAKE_OBJCXX_COMPILER_ARCHITECTURE_ID@
+@SET_CMAKE_XCODE_ARCHS@
+set(CMAKE_AR "@CMAKE_AR@")
+set(CMAKE_OBJCXX_COMPILER_AR "@CMAKE_OBJCXX_COMPILER_AR@")
+set(CMAKE_RANLIB "@CMAKE_RANLIB@")
+set(CMAKE_OBJCXX_COMPILER_RANLIB "@CMAKE_OBJCXX_COMPILER_RANLIB@")
+set(CMAKE_LINKER "@CMAKE_LINKER@")
+set(CMAKE_MT "@CMAKE_MT@")
+set(CMAKE_COMPILER_IS_GNUOBJCXX @CMAKE_COMPILER_IS_GNUOBJCXX@)
+set(CMAKE_OBJCXX_COMPILER_LOADED 1)
+set(CMAKE_OBJCXX_COMPILER_WORKS @CMAKE_OBJCXX_COMPILER_WORKS@)
+set(CMAKE_OBJCXX_ABI_COMPILED @CMAKE_OBJCXX_ABI_COMPILED@)
+
+set(CMAKE_OBJCXX_COMPILER_ENV_VAR "OBJCXX")
+
+set(CMAKE_OBJCXX_COMPILER_ID_RUN 1)
+set(CMAKE_OBJCXX_SOURCE_FILE_EXTENSIONS M;m;mm)
+set(CMAKE_OBJCXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O)
+
+if (CMAKE_OBJC_COMPILER_ID_RUN)
+  foreach(extension IN LISTS CMAKE_OBJC_SOURCE_FILE_EXTENSIONS)
+    list(REMOVE_ITEM CMAKE_OBJCXX_SOURCE_FILE_EXTENSIONS ${extension})
+  endforeach()
+endif()
+
+foreach (lang C CXX OBJC)
+  foreach(extension IN LISTS CMAKE_OBJCXX_SOURCE_FILE_EXTENSIONS)
+    if (CMAKE_${lang}_COMPILER_ID_RUN)
+      list(REMOVE_ITEM CMAKE_${lang}_SOURCE_FILE_EXTENSIONS ${extension})
+    endif()
+  endforeach()
+endforeach()
+
+set(CMAKE_OBJCXX_LINKER_PREFERENCE 25)
+set(CMAKE_OBJCXX_LINKER_PREFERENCE_PROPAGATES 1)
+
+# Save compiler ABI information.
+set(CMAKE_OBJCXX_SIZEOF_DATA_PTR "@CMAKE_OBJCXX_SIZEOF_DATA_PTR@")
+set(CMAKE_OBJCXX_COMPILER_ABI "@CMAKE_OBJCXX_COMPILER_ABI@")
+set(CMAKE_OBJCXX_BYTE_ORDER "@CMAKE_OBJCXX_BYTE_ORDER@")
+set(CMAKE_OBJCXX_LIBRARY_ARCHITECTURE "@CMAKE_OBJCXX_LIBRARY_ARCHITECTURE@")
+
+if(CMAKE_OBJCXX_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_OBJCXX_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_OBJCXX_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_OBJCXX_COMPILER_ABI}")
+endif()
+
+if(CMAKE_OBJCXX_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "@CMAKE_OBJCXX_LIBRARY_ARCHITECTURE@")
+endif()
+
+@CMAKE_OBJCXX_COMPILER_CUSTOM_CODE@
+@CMAKE_OBJCXX_SYSROOT_FLAG_CODE@
+@CMAKE_OBJCXX_OSX_DEPLOYMENT_TARGET_FLAG_CODE@
+
+set(CMAKE_OBJCXX_IMPLICIT_INCLUDE_DIRECTORIES "@CMAKE_OBJCXX_IMPLICIT_INCLUDE_DIRECTORIES@")
+set(CMAKE_OBJCXX_IMPLICIT_LINK_LIBRARIES "@CMAKE_OBJCXX_IMPLICIT_LINK_LIBRARIES@")
+set(CMAKE_OBJCXX_IMPLICIT_LINK_DIRECTORIES "@CMAKE_OBJCXX_IMPLICIT_LINK_DIRECTORIES@")
+set(CMAKE_OBJCXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "@CMAKE_OBJCXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES@")
diff --git a/share/cmake-3.22/Modules/CMakeOBJCXXCompilerABI.mm b/share/cmake-3.22/Modules/CMakeOBJCXXCompilerABI.mm
new file mode 100644
index 0000000..7b9fefc
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeOBJCXXCompilerABI.mm
@@ -0,0 +1,22 @@
+#ifndef __cplusplus
+# error "A C compiler has been selected for Objective-C++."
+#endif
+
+/*--------------------------------------------------------------------------*/
+
+#include "CMakeCompilerABI.h"
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char *argv[])
+{
+  int require = 0;
+  require += info_sizeof_dptr[argc];
+  require += info_byte_order_big_endian[argc];
+  require += info_byte_order_little_endian[argc];
+#if defined(ABI_ID)
+  require += info_abi[argc];
+#endif
+  (void)argv;
+  return require;
+}
diff --git a/share/cmake-3.22/Modules/CMakeOBJCXXCompilerId.mm.in b/share/cmake-3.22/Modules/CMakeOBJCXXCompilerId.mm.in
new file mode 100644
index 0000000..2145b40
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeOBJCXXCompilerId.mm.in
@@ -0,0 +1,79 @@
+/* This source file must have a .cpp extension so that all C++ compilers
+   recognize the extension without flags.  Borland does not know .cxx for
+   example.  */
+#ifndef __cplusplus
+# error "An Objective-C compiler has been selected for Objective-C++."
+#endif
+
+@CMAKE_OBJCXX_COMPILER_ID_CONTENT@
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+#ifdef SIMULATE_ID
+char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
+#endif
+
+#ifdef __QNXNTO__
+char const* qnxnto = "INFO" ":" "qnxnto[]";
+#endif
+
+@CMAKE_OBJCXX_COMPILER_ID_PLATFORM_CONTENT@
+@CMAKE_OBJCXX_COMPILER_ID_ERROR_FOR_TEST@
+
+#if defined(_MSC_VER) && defined(_MSVC_LANG)
+#define CXX_STD _MSVC_LANG
+#else
+#define CXX_STD __cplusplus
+#endif
+
+const char* info_language_standard_default = "INFO" ":" "standard_default["
+#if CXX_STD > 202002L
+  "23"
+#elfif CXX_STD > 201703L
+  "20"
+#elif CXX_STD >= 201703L
+  "17"
+#elif CXX_STD >= 201402L
+  "14"
+#elif CXX_STD >= 201103L
+  "11"
+#else
+  "98"
+#endif
+"]";
+
+const char* info_language_extensions_default = "INFO" ":" "extensions_default["
+#if (defined(__clang__) || defined(__GNUC__)) && !defined(__STRICT_ANSI__)
+  "ON"
+#else
+  "OFF"
+#endif
+"]";
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+#ifdef COMPILER_VERSION_INTERNAL
+  require += info_version_internal[argc];
+#endif
+#ifdef SIMULATE_ID
+  require += info_simulate[argc];
+#endif
+#ifdef SIMULATE_VERSION_MAJOR
+  require += info_simulate_version[argc];
+#endif
+  require += info_language_standard_default[argc];
+  require += info_language_extensions_default[argc];
+  (void)argv;
+  return require;
+}
diff --git a/share/cmake-3.22/Modules/CMakeOBJCXXInformation.cmake b/share/cmake-3.22/Modules/CMakeOBJCXXInformation.cmake
new file mode 100644
index 0000000..a6d824f
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeOBJCXXInformation.cmake
@@ -0,0 +1,292 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This file sets the basic flags for the Objective-C++ language in CMake.
+# It also loads the available platform file for the system-compiler
+# if it exists.
+# It also loads a system - compiler - processor (or target hardware)
+# specific file, which is mainly useful for crosscompiling and embedded systems.
+
+include(CMakeLanguageInformation)
+
+# some compilers use different extensions (e.g. sdcc uses .rel)
+# so set the extension here first so it can be overridden by the compiler specific file
+set(CMAKE_OBJCXX_OUTPUT_EXTENSION .o)
+
+set(_INCLUDED_FILE 0)
+
+# Load compiler-specific information.
+if(CMAKE_OBJCXX_COMPILER_ID)
+  include(Compiler/${CMAKE_OBJCXX_COMPILER_ID}-OBJCXX OPTIONAL)
+endif()
+
+set(CMAKE_BASE_NAME)
+get_filename_component(CMAKE_BASE_NAME "${CMAKE_OBJCXX_COMPILER}" NAME_WE)
+# since the gnu compiler has several names force g++
+if(CMAKE_COMPILER_IS_GNUOBJCXX)
+  set(CMAKE_BASE_NAME g++)
+endif()
+
+
+# load a hardware specific file, mostly useful for embedded compilers
+if(CMAKE_SYSTEM_PROCESSOR)
+  if(CMAKE_OBJCXX_COMPILER_ID)
+    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_OBJCXX_COMPILER_ID}-OBJCXX-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
+  endif()
+  if (NOT _INCLUDED_FILE)
+    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME}-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
+  endif ()
+endif()
+
+# load the system- and compiler specific files
+if(CMAKE_OBJCXX_COMPILER_ID)
+  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_OBJCXX_COMPILER_ID}-OBJCXX OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
+endif()
+if (NOT _INCLUDED_FILE)
+  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL
+          RESULT_VARIABLE _INCLUDED_FILE)
+endif ()
+
+# load any compiler-wrapper specific information
+if (CMAKE_OBJCXX_COMPILER_WRAPPER)
+  __cmake_include_compiler_wrapper(OBJCXX)
+endif ()
+
+# We specify the compiler information in the system file for some
+# platforms, but this language may not have been enabled when the file
+# was first included.  Include it again to get the language info.
+# Remove this when all compiler info is removed from system files.
+if (NOT _INCLUDED_FILE)
+  include(Platform/${CMAKE_SYSTEM_NAME} OPTIONAL)
+endif ()
+
+if(CMAKE_OBJCXX_SIZEOF_DATA_PTR)
+  foreach(f ${CMAKE_OBJCXX_ABI_FILES})
+    include(${f})
+  endforeach()
+  unset(CMAKE_OBJCXX_ABI_FILES)
+endif()
+
+# This should be included before the _INIT variables are
+# used to initialize the cache.  Since the rule variables
+# have if blocks on them, users can still define them here.
+# But, it should still be after the platform file so changes can
+# be made to those values.
+
+if(CMAKE_USER_MAKE_RULES_OVERRIDE)
+  # Save the full path of the file so try_compile can use it.
+  include(${CMAKE_USER_MAKE_RULES_OVERRIDE} RESULT_VARIABLE _override)
+  set(CMAKE_USER_MAKE_RULES_OVERRIDE "${_override}")
+endif()
+
+if(CMAKE_USER_MAKE_RULES_OVERRIDE_OBJCXX)
+  # Save the full path of the file so try_compile can use it.
+  include(${CMAKE_USER_MAKE_RULES_OVERRIDE_OBJCXX} RESULT_VARIABLE _override)
+  set(CMAKE_USER_MAKE_RULES_OVERRIDE_OBJCXX "${_override}")
+endif()
+
+
+# Create a set of shared library variable specific to Objective-C++
+# For 90% of the systems, these are the same flags as the Objective-C versions
+# so if these are not set just copy the flags from the Objective-C version
+if(NOT CMAKE_SHARED_LIBRARY_CREATE_OBJCXX_FLAGS)
+  set(CMAKE_SHARED_LIBRARY_CREATE_OBJCXX_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_OBJC_FLAGS})
+endif()
+
+if(NOT CMAKE_OBJCXX_COMPILE_OPTIONS_PIC)
+  set(CMAKE_OBJCXX_COMPILE_OPTIONS_PIC ${CMAKE_OBJC_COMPILE_OPTIONS_PIC})
+endif()
+
+if(NOT CMAKE_OBJCXX_COMPILE_OPTIONS_PIE)
+  set(CMAKE_OBJCXX_COMPILE_OPTIONS_PIE ${CMAKE_OBJC_COMPILE_OPTIONS_PIE})
+endif()
+if(NOT CMAKE_OBJCXX_LINK_OPTIONS_PIE)
+  set(CMAKE_OBJCXX_LINK_OPTIONS_PIE ${CMAKE_OBJC_LINK_OPTIONS_PIE})
+endif()
+if(NOT CMAKE_OBJCXX_LINK_OPTIONS_NO_PIE)
+  set(CMAKE_OBJCXX_LINK_OPTIONS_NO_PIE ${CMAKE_OBJC_LINK_OPTIONS_NO_PIE})
+endif()
+
+if(NOT CMAKE_OBJCXX_COMPILE_OPTIONS_DLL)
+  set(CMAKE_OBJCXX_COMPILE_OPTIONS_DLL ${CMAKE_OBJC_COMPILE_OPTIONS_DLL})
+endif()
+
+if(NOT CMAKE_SHARED_LIBRARY_OBJCXX_FLAGS)
+  set(CMAKE_SHARED_LIBRARY_OBJCXX_FLAGS ${CMAKE_SHARED_LIBRARY_OBJC_FLAGS})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_LINK_OBJCXX_FLAGS)
+  set(CMAKE_SHARED_LIBRARY_LINK_OBJCXX_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_OBJC_FLAGS})
+endif()
+
+if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_OBJCXX_FLAG)
+  set(CMAKE_SHARED_LIBRARY_RUNTIME_OBJCXX_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_OBJC_FLAG})
+endif()
+
+if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_OBJCXX_FLAG_SEP)
+  set(CMAKE_SHARED_LIBRARY_RUNTIME_OBJCXX_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_OBJC_FLAG_SEP})
+endif()
+
+if(NOT CMAKE_SHARED_LIBRARY_RPATH_LINK_OBJCXX_FLAG)
+  set(CMAKE_SHARED_LIBRARY_RPATH_LINK_OBJCXX_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_OBJC_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_EXE_EXPORTS_OBJCXX_FLAG)
+  set(CMAKE_EXE_EXPORTS_OBJCXX_FLAG ${CMAKE_EXE_EXPORTS_OBJC_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_SONAME_OBJCXX_FLAG)
+  set(CMAKE_SHARED_LIBRARY_SONAME_OBJCXX_FLAG ${CMAKE_SHARED_LIBRARY_SONAME_OBJC_FLAG})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RUNTIME_OBJCXX_FLAG)
+  set(CMAKE_EXECUTABLE_RUNTIME_OBJCXX_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_OBJCXX_FLAG})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RUNTIME_OBJCXX_FLAG_SEP)
+  set(CMAKE_EXECUTABLE_RUNTIME_OBJCXX_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_OBJCXX_FLAG_SEP})
+endif()
+
+if(NOT CMAKE_EXECUTABLE_RPATH_LINK_OBJCXX_FLAG)
+  set(CMAKE_EXECUTABLE_RPATH_LINK_OBJCXX_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_OBJCXX_FLAG})
+endif()
+
+if(NOT DEFINED CMAKE_SHARED_LIBRARY_LINK_OBJCXX_WITH_RUNTIME_PATH)
+  set(CMAKE_SHARED_LIBRARY_LINK_OBJCXX_WITH_RUNTIME_PATH ${CMAKE_SHARED_LIBRARY_LINK_OBJC_WITH_RUNTIME_PATH})
+endif()
+
+if(NOT CMAKE_INCLUDE_FLAG_OBJCXX)
+  set(CMAKE_INCLUDE_FLAG_OBJCXX ${CMAKE_INCLUDE_FLAG_C})
+endif()
+
+# for most systems a module is the same as a shared library
+# so unless the variable CMAKE_MODULE_EXISTS is set just
+# copy the values from the LIBRARY variables
+if(NOT CMAKE_MODULE_EXISTS)
+  set(CMAKE_SHARED_MODULE_OBJCXX_FLAGS ${CMAKE_SHARED_LIBRARY_OBJCXX_FLAGS})
+  set(CMAKE_SHARED_MODULE_CREATE_OBJCXX_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_OBJCXX_FLAGS})
+endif()
+
+# repeat for modules
+if(NOT CMAKE_SHARED_MODULE_CREATE_OBJCXX_FLAGS)
+  set(CMAKE_SHARED_MODULE_CREATE_OBJCXX_FLAGS ${CMAKE_SHARED_MODULE_CREATE_OBJC_FLAGS})
+endif()
+
+if(NOT CMAKE_SHARED_MODULE_OBJCXX_FLAGS)
+  set(CMAKE_SHARED_MODULE_OBJCXX_FLAGS ${CMAKE_SHARED_MODULE_OBJC_FLAGS})
+endif()
+
+# Initialize OBJCXX link type selection flags from OBJC versions.
+foreach(type SHARED_LIBRARY SHARED_MODULE EXE)
+  if(NOT CMAKE_${type}_LINK_STATIC_OBJCXX_FLAGS)
+    set(CMAKE_${type}_LINK_STATIC_OBJCXX_FLAGS
+      ${CMAKE_${type}_LINK_STATIC_OBJC_FLAGS})
+  endif()
+  if(NOT CMAKE_${type}_LINK_DYNAMIC_OBJCXX_FLAGS)
+    set(CMAKE_${type}_LINK_DYNAMIC_OBJCXX_FLAGS
+      ${CMAKE_${type}_LINK_DYNAMIC_OBJC_FLAGS})
+  endif()
+endforeach()
+
+if(CMAKE_EXECUTABLE_FORMAT STREQUAL "ELF")
+  if(NOT DEFINED CMAKE_OBJCXX_LINK_WHAT_YOU_USE_FLAG)
+    set(CMAKE_OBJCXX_LINK_WHAT_YOU_USE_FLAG "LINKER:--no-as-needed")
+  endif()
+  if(NOT DEFINED CMAKE_LINK_WHAT_YOU_USE_CHECK)
+    set(CMAKE_LINK_WHAT_YOU_USE_CHECK ldd -u -r)
+  endif()
+endif()
+
+# add the flags to the cache based
+# on the initial values computed in the platform/*.cmake files
+# use _INIT variables so that this only happens the first time
+# and you can set these flags in the cmake cache
+set(CMAKE_OBJCXX_FLAGS_INIT "$ENV{OBJCXXFLAGS} ${CMAKE_OBJCXX_FLAGS_INIT}")
+
+cmake_initialize_per_config_variable(CMAKE_OBJCXX_FLAGS "Flags used by the Objective-C++ compiler")
+
+if(CMAKE_OBJCXX_STANDARD_LIBRARIES_INIT)
+  set(CMAKE_OBJCXX_STANDARD_LIBRARIES "${CMAKE_OBJCXX_STANDARD_LIBRARIES_INIT}"
+    CACHE STRING "Libraries linked by default with all Objective-C++ applications.")
+  mark_as_advanced(CMAKE_OBJCXX_STANDARD_LIBRARIES)
+endif()
+
+if(NOT CMAKE_OBJCXX_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_OBJCXX_COMPILER_LAUNCHER})
+  set(CMAKE_OBJCXX_COMPILER_LAUNCHER "$ENV{CMAKE_OBJCXX_COMPILER_LAUNCHER}"
+    CACHE STRING "Compiler launcher for OBJCXX.")
+endif()
+
+if(NOT CMAKE_OBJCXX_LINKER_LAUNCHER AND DEFINED ENV{CMAKE_OBJCXX_LINKER_LAUNCHER})
+  set(CMAKE_OBJCXX_LINKER_LAUNCHER "$ENV{CMAKE_OBJCXX_LINKER_LAUNCHER}"
+    CACHE STRING "Linker launcher for OBJCXX.")
+endif()
+
+include(CMakeCommonLanguageInclude)
+
+# now define the following rules:
+# CMAKE_OBJCXX_CREATE_SHARED_LIBRARY
+# CMAKE_OBJCXX_CREATE_SHARED_MODULE
+# CMAKE_OBJCXX_COMPILE_OBJECT
+# CMAKE_OBJCXX_LINK_EXECUTABLE
+
+# variables supplied by the generator at use time
+# <TARGET>
+# <TARGET_BASE> the target without the suffix
+# <OBJECTS>
+# <OBJECT>
+# <LINK_LIBRARIES>
+# <FLAGS>
+# <LINK_FLAGS>
+
+# Objective-C++ compiler information
+# <CMAKE_OBJCXX_COMPILER>
+# <CMAKE_SHARED_LIBRARY_CREATE_OBJCXX_FLAGS>
+# <CMAKE_OBJCXX_SHARED_MODULE_CREATE_FLAGS>
+# <CMAKE_OBJCXX_LINK_FLAGS>
+
+# Static library tools
+# <CMAKE_AR>
+# <CMAKE_RANLIB>
+
+
+# create a shared Objective-C++ library
+if(NOT CMAKE_OBJCXX_CREATE_SHARED_LIBRARY)
+  set(CMAKE_OBJCXX_CREATE_SHARED_LIBRARY
+      "<CMAKE_OBJCXX_COMPILER> <CMAKE_SHARED_LIBRARY_OBJCXX_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_OBJCXX_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
+endif()
+
+# create an Objective-C++ shared module copy the shared library rule by default
+if(NOT CMAKE_OBJCXX_CREATE_SHARED_MODULE)
+  set(CMAKE_OBJCXX_CREATE_SHARED_MODULE ${CMAKE_OBJCXX_CREATE_SHARED_LIBRARY})
+endif()
+
+
+# Create a static archive incrementally for large object file counts.
+# If CMAKE_OBJCXX_CREATE_STATIC_LIBRARY is set it will override these.
+if(NOT DEFINED CMAKE_OBJCXX_ARCHIVE_CREATE)
+  set(CMAKE_OBJCXX_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
+endif()
+if(NOT DEFINED CMAKE_OBJCXX_ARCHIVE_APPEND)
+  set(CMAKE_OBJCXX_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
+endif()
+if(NOT DEFINED CMAKE_OBJCXX_ARCHIVE_FINISH)
+  set(CMAKE_OBJCXX_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
+endif()
+
+# compile an Objective-C++ file into an object file
+if(NOT CMAKE_OBJCXX_COMPILE_OBJECT)
+  set(CMAKE_OBJCXX_COMPILE_OBJECT
+    "<CMAKE_OBJCXX_COMPILER> <DEFINES> <INCLUDES> -x objective-c++ <FLAGS> -o <OBJECT> -c <SOURCE>")
+endif()
+
+if(NOT CMAKE_OBJCXX_LINK_EXECUTABLE)
+  set(CMAKE_OBJCXX_LINK_EXECUTABLE
+    "<CMAKE_OBJCXX_COMPILER> <FLAGS> <CMAKE_OBJCXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
+endif()
+
+mark_as_advanced(
+CMAKE_VERBOSE_MAKEFILE
+)
+
+set(CMAKE_OBJCXX_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.22/Modules/CMakePackageConfigHelpers.cmake b/share/cmake-3.22/Modules/CMakePackageConfigHelpers.cmake
new file mode 100644
index 0000000..5813956
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakePackageConfigHelpers.cmake
@@ -0,0 +1,344 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CMakePackageConfigHelpers
+-------------------------
+
+Helpers functions for creating config files that can be included by other
+projects to find and use a package.
+
+Adds the :command:`configure_package_config_file()` and
+:command:`write_basic_package_version_file()` commands.
+
+Generating a Package Configuration File
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. command:: configure_package_config_file
+
+ Create a config file for a project::
+
+   configure_package_config_file(<input> <output>
+     INSTALL_DESTINATION <path>
+     [PATH_VARS <var1> <var2> ... <varN>]
+     [NO_SET_AND_CHECK_MACRO]
+     [NO_CHECK_REQUIRED_COMPONENTS_MACRO]
+     [INSTALL_PREFIX <path>]
+     )
+
+``configure_package_config_file()`` should be used instead of the plain
+:command:`configure_file()` command when creating the ``<PackageName>Config.cmake``
+or ``<PackageName>-config.cmake`` file for installing a project or library.
+It helps making the resulting package relocatable by avoiding hardcoded paths
+in the installed ``Config.cmake`` file.
+
+In a ``FooConfig.cmake`` file there may be code like this to make the install
+destinations know to the using project:
+
+.. code-block:: cmake
+
+   set(FOO_INCLUDE_DIR   "@CMAKE_INSTALL_FULL_INCLUDEDIR@" )
+   set(FOO_DATA_DIR   "@CMAKE_INSTALL_PREFIX@/@RELATIVE_DATA_INSTALL_DIR@" )
+   set(FOO_ICONS_DIR   "@CMAKE_INSTALL_PREFIX@/share/icons" )
+   #...logic to determine installedPrefix from the own location...
+   set(FOO_CONFIG_DIR  "${installedPrefix}/@CONFIG_INSTALL_DIR@" )
+
+All 4 options shown above are not sufficient, since the first 3 hardcode the
+absolute directory locations, and the 4th case works only if the logic to
+determine the ``installedPrefix`` is correct, and if ``CONFIG_INSTALL_DIR``
+contains a relative path, which in general cannot be guaranteed.  This has the
+effect that the resulting ``FooConfig.cmake`` file would work poorly under
+Windows and OSX, where users are used to choose the install location of a
+binary package at install time, independent from how
+:variable:`CMAKE_INSTALL_PREFIX` was set at build/cmake time.
+
+Using ``configure_package_config_file`` helps.  If used correctly, it makes
+the resulting ``FooConfig.cmake`` file relocatable.  Usage:
+
+1. write a ``FooConfig.cmake.in`` file as you are used to
+2. insert a line containing only the string ``@PACKAGE_INIT@``
+3. instead of ``set(FOO_DIR "@SOME_INSTALL_DIR@")``, use
+   ``set(FOO_DIR "@PACKAGE_SOME_INSTALL_DIR@")`` (this must be after the
+   ``@PACKAGE_INIT@`` line)
+4. instead of using the normal :command:`configure_file()`, use
+   ``configure_package_config_file()``
+
+
+
+The ``<input>`` and ``<output>`` arguments are the input and output file, the
+same way as in :command:`configure_file()`.
+
+The ``<path>`` given to ``INSTALL_DESTINATION`` must be the destination where
+the ``FooConfig.cmake`` file will be installed to.  This path can either be
+absolute, or relative to the ``INSTALL_PREFIX`` path.
+
+The variables ``<var1>`` to ``<varN>`` given as ``PATH_VARS`` are the
+variables which contain install destinations.  For each of them the macro will
+create a helper variable ``PACKAGE_<var...>``.  These helper variables must be
+used in the ``FooConfig.cmake.in`` file for setting the installed location.
+They are calculated by ``configure_package_config_file`` so that they are
+always relative to the installed location of the package.  This works both for
+relative and also for absolute locations.  For absolute locations it works
+only if the absolute location is a subdirectory of ``INSTALL_PREFIX``.
+
+.. versionadded:: 3.1
+  If the ``INSTALL_PREFIX`` argument is passed, this is used as base path to
+  calculate all the relative paths.  The ``<path>`` argument must be an absolute
+  path.  If this argument is not passed, the :variable:`CMAKE_INSTALL_PREFIX`
+  variable will be used instead.  The default value is good when generating a
+  FooConfig.cmake file to use your package from the install tree.  When
+  generating a FooConfig.cmake file to use your package from the build tree this
+  option should be used.
+
+By default ``configure_package_config_file`` also generates two helper macros,
+``set_and_check()`` and ``check_required_components()`` into the
+``FooConfig.cmake`` file.
+
+``set_and_check()`` should be used instead of the normal ``set()`` command for
+setting directories and file locations.  Additionally to setting the variable
+it also checks that the referenced file or directory actually exists and fails
+with a ``FATAL_ERROR`` otherwise.  This makes sure that the created
+``FooConfig.cmake`` file does not contain wrong references.
+When using the ``NO_SET_AND_CHECK_MACRO``, this macro is not generated
+into the ``FooConfig.cmake`` file.
+
+``check_required_components(<PackageName>)`` should be called at the end of
+the ``FooConfig.cmake`` file. This macro checks whether all requested,
+non-optional components have been found, and if this is not the case, sets
+the ``Foo_FOUND`` variable to ``FALSE``, so that the package is considered to
+be not found.  It does that by testing the ``Foo_<Component>_FOUND``
+variables for all requested required components.  This macro should be
+called even if the package doesn't provide any components to make sure
+users are not specifying components erroneously.  When using the
+``NO_CHECK_REQUIRED_COMPONENTS_MACRO`` option, this macro is not generated
+into the ``FooConfig.cmake`` file.
+
+For an example see below the documentation for
+:command:`write_basic_package_version_file()`.
+
+Generating a Package Version File
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. command:: write_basic_package_version_file
+
+ Create a version file for a project::
+
+   write_basic_package_version_file(<filename>
+     [VERSION <major.minor.patch>]
+     COMPATIBILITY <AnyNewerVersion|SameMajorVersion|SameMinorVersion|ExactVersion>
+     [ARCH_INDEPENDENT] )
+
+
+Writes a file for use as ``<PackageName>ConfigVersion.cmake`` file to
+``<filename>``.  See the documentation of :command:`find_package()` for
+details on this.
+
+``<filename>`` is the output filename, it should be in the build tree.
+``<major.minor.patch>`` is the version number of the project to be installed.
+
+If no ``VERSION`` is given, the :variable:`PROJECT_VERSION` variable is used.
+If this hasn't been set, it errors out.
+
+The ``COMPATIBILITY`` mode ``AnyNewerVersion`` means that the installed
+package version will be considered compatible if it is newer or exactly the
+same as the requested version.  This mode should be used for packages which
+are fully backward compatible, also across major versions.
+If ``SameMajorVersion`` is used instead, then the behavior differs from
+``AnyNewerVersion`` in that the major version number must be the same as
+requested, e.g.  version 2.0 will not be considered compatible if 1.0 is
+requested.  This mode should be used for packages which guarantee backward
+compatibility within the same major version.
+If ``SameMinorVersion`` is used, the behavior is the same as
+``SameMajorVersion``, but both major and minor version must be the same as
+requested, e.g version 0.2 will not be compatible if 0.1 is requested.
+If ``ExactVersion`` is used, then the package is only considered compatible if
+the requested version matches exactly its own version number (not considering
+the tweak version).  For example, version 1.2.3 of a package is only
+considered compatible to requested version 1.2.3.  This mode is for packages
+without compatibility guarantees.
+If your project has more elaborated version matching rules, you will need to
+write your own custom ``ConfigVersion.cmake`` file instead of using this
+macro.
+
+.. versionadded:: 3.11
+  The ``SameMinorVersion`` compatibility mode.
+
+.. versionadded:: 3.14
+  If ``ARCH_INDEPENDENT`` is given, the installed package version will be
+  considered compatible even if it was built for a different architecture than
+  the requested architecture.  Otherwise, an architecture check will be performed,
+  and the package will be considered compatible only if the architecture matches
+  exactly.  For example, if the package is built for a 32-bit architecture, the
+  package is only considered compatible if it is used on a 32-bit architecture,
+  unless ``ARCH_INDEPENDENT`` is given, in which case the package is considered
+  compatible on any architecture.
+
+.. note:: ``ARCH_INDEPENDENT`` is intended for header-only libraries or similar
+  packages with no binaries.
+
+.. versionadded:: 3.19
+  ``COMPATIBILITY_MODE`` ``AnyNewerVersion``, ``SameMajorVersion`` and
+  ``SameMinorVersion`` handle the version range if any is specified
+  (see :command:`find_package` command for the details).
+  ``ExactVersion`` mode is incompatible with version ranges and will display an
+  author warning if one is specified.
+
+Internally, this macro executes :command:`configure_file()` to create the
+resulting version file.  Depending on the ``COMPATIBILITY``, the corresponding
+``BasicConfigVersion-<COMPATIBILITY>.cmake.in`` file is used.
+Please note that these files are internal to CMake and you should not call
+:command:`configure_file()` on them yourself, but they can be used as starting
+point to create more sophisticted custom ``ConfigVersion.cmake`` files.
+
+Example Generating Package Files
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Example using both :command:`configure_package_config_file` and
+``write_basic_package_version_file()``:
+
+``CMakeLists.txt``:
+
+.. code-block:: cmake
+
+   set(INCLUDE_INSTALL_DIR include/ ... CACHE )
+   set(LIB_INSTALL_DIR lib/ ... CACHE )
+   set(SYSCONFIG_INSTALL_DIR etc/foo/ ... CACHE )
+   #...
+   include(CMakePackageConfigHelpers)
+   configure_package_config_file(FooConfig.cmake.in
+     ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake
+     INSTALL_DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake
+     PATH_VARS INCLUDE_INSTALL_DIR SYSCONFIG_INSTALL_DIR)
+   write_basic_package_version_file(
+     ${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake
+     VERSION 1.2.3
+     COMPATIBILITY SameMajorVersion )
+   install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake
+                 ${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake
+           DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake )
+
+``FooConfig.cmake.in``:
+
+::
+
+   set(FOO_VERSION x.y.z)
+   ...
+   @PACKAGE_INIT@
+   ...
+   set_and_check(FOO_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
+   set_and_check(FOO_SYSCONFIG_DIR "@PACKAGE_SYSCONFIG_INSTALL_DIR@")
+
+   check_required_components(Foo)
+#]=======================================================================]
+
+include(WriteBasicConfigVersionFile)
+
+macro(WRITE_BASIC_PACKAGE_VERSION_FILE)
+  write_basic_config_version_file(${ARGN})
+endmacro()
+
+function(CONFIGURE_PACKAGE_CONFIG_FILE _inputFile _outputFile)
+  set(options NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO)
+  set(oneValueArgs INSTALL_DESTINATION INSTALL_PREFIX)
+  set(multiValueArgs PATH_VARS )
+
+  cmake_parse_arguments(CCF "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${ARGN})
+
+  if(CCF_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to CONFIGURE_PACKAGE_CONFIG_FILE(): \"${CCF_UNPARSED_ARGUMENTS}\"")
+  endif()
+
+  if(NOT CCF_INSTALL_DESTINATION)
+    message(FATAL_ERROR "No INSTALL_DESTINATION given to CONFIGURE_PACKAGE_CONFIG_FILE()")
+  endif()
+
+  if(DEFINED CCF_INSTALL_PREFIX)
+    if(IS_ABSOLUTE "${CCF_INSTALL_PREFIX}")
+      set(installPrefix "${CCF_INSTALL_PREFIX}")
+    else()
+      message(FATAL_ERROR "INSTALL_PREFIX must be an absolute path")
+    endif()
+  elseif(IS_ABSOLUTE "${CMAKE_INSTALL_PREFIX}")
+    set(installPrefix "${CMAKE_INSTALL_PREFIX}")
+  else()
+    get_filename_component(installPrefix "${CMAKE_INSTALL_PREFIX}" ABSOLUTE)
+  endif()
+
+  if(IS_ABSOLUTE "${CCF_INSTALL_DESTINATION}")
+    set(absInstallDir "${CCF_INSTALL_DESTINATION}")
+  else()
+    set(absInstallDir "${installPrefix}/${CCF_INSTALL_DESTINATION}")
+  endif()
+
+  file(RELATIVE_PATH PACKAGE_RELATIVE_PATH "${absInstallDir}" "${installPrefix}" )
+
+  foreach(var ${CCF_PATH_VARS})
+    if(NOT DEFINED ${var})
+      message(FATAL_ERROR "Variable ${var} does not exist")
+    else()
+      if(IS_ABSOLUTE "${${var}}")
+        string(REPLACE "${installPrefix}" "\${PACKAGE_PREFIX_DIR}"
+                        PACKAGE_${var} "${${var}}")
+      else()
+        set(PACKAGE_${var} "\${PACKAGE_PREFIX_DIR}/${${var}}")
+      endif()
+    endif()
+  endforeach()
+
+  get_filename_component(inputFileName "${_inputFile}" NAME)
+
+  set(PACKAGE_INIT "
+####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
+####### Any changes to this file will be overwritten by the next CMake run ####
+####### The input file was ${inputFileName}                            ########
+
+get_filename_component(PACKAGE_PREFIX_DIR \"\${CMAKE_CURRENT_LIST_DIR}/${PACKAGE_RELATIVE_PATH}\" ABSOLUTE)
+")
+
+  if("${absInstallDir}" MATCHES "^(/usr)?/lib(64)?/.+")
+    # Handle "/usr move" symlinks created by some Linux distros.
+    string(APPEND PACKAGE_INIT "
+# Use original install prefix when loaded through a \"/usr move\"
+# cross-prefix symbolic link such as /lib -> /usr/lib.
+get_filename_component(_realCurr \"\${CMAKE_CURRENT_LIST_DIR}\" REALPATH)
+get_filename_component(_realOrig \"${absInstallDir}\" REALPATH)
+if(_realCurr STREQUAL _realOrig)
+  set(PACKAGE_PREFIX_DIR \"${installPrefix}\")
+endif()
+unset(_realOrig)
+unset(_realCurr)
+")
+  endif()
+
+  if(NOT CCF_NO_SET_AND_CHECK_MACRO)
+    string(APPEND PACKAGE_INIT "
+macro(set_and_check _var _file)
+  set(\${_var} \"\${_file}\")
+  if(NOT EXISTS \"\${_file}\")
+    message(FATAL_ERROR \"File or directory \${_file} referenced by variable \${_var} does not exist !\")
+  endif()
+endmacro()
+")
+  endif()
+
+
+  if(NOT CCF_NO_CHECK_REQUIRED_COMPONENTS_MACRO)
+    string(APPEND PACKAGE_INIT "
+macro(check_required_components _NAME)
+  foreach(comp \${\${_NAME}_FIND_COMPONENTS})
+    if(NOT \${_NAME}_\${comp}_FOUND)
+      if(\${_NAME}_FIND_REQUIRED_\${comp})
+        set(\${_NAME}_FOUND FALSE)
+      endif()
+    endif()
+  endforeach()
+endmacro()
+")
+  endif()
+
+  string(APPEND PACKAGE_INIT "
+####################################################################################")
+
+  configure_file("${_inputFile}" "${_outputFile}" @ONLY)
+
+endfunction()
diff --git a/share/cmake-3.18/Modules/CMakeParseArguments.cmake b/share/cmake-3.22/Modules/CMakeParseArguments.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeParseArguments.cmake
rename to share/cmake-3.22/Modules/CMakeParseArguments.cmake
diff --git a/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake b/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake
new file mode 100644
index 0000000..5c0eda2
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeParseImplicitIncludeInfo.cmake
@@ -0,0 +1,262 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# This is used internally by CMake and should not be included by user code.
+
+# helper function that parses implicit include dirs from a single line
+# for compilers that report them that way.  on success we return the
+# list of dirs in id_var and set state_var to the 'done' state.
+function(cmake_parse_implicit_include_line line lang id_var log_var state_var)
+  # clear variables we append to (avoids possible pollution from parent scopes)
+  unset(rv)
+  set(log "")
+
+  # Cray compiler (from cray wrapper, via PrgEnv-cray)
+  if(CMAKE_${lang}_COMPILER_ID STREQUAL "Cray" AND
+     line MATCHES "^/" AND line MATCHES "/ccfe |/ftnfe " AND
+     line MATCHES " -isystem| -I")
+    string(REGEX MATCHALL " (-I ?|-isystem )(\"[^\"]+\"|[^ \"]+)" incs "${line}")
+    foreach(inc IN LISTS incs)
+      string(REGEX REPLACE " (-I ?|-isystem )(\"[^\"]+\"|[^ \"]+)" "\\2" idir "${inc}")
+      list(APPEND rv "${idir}")
+    endforeach()
+    if(rv)
+      string(APPEND log "  got implicit includes via cray ccfe parser!\n")
+    else()
+      string(APPEND log "  warning: cray ccfe parse failed!\n")
+    endif()
+  endif()
+
+  # PGI compiler
+  if(CMAKE_${lang}_COMPILER_ID STREQUAL "PGI")
+    # pgc++ verbose output differs
+    if((lang STREQUAL "C" OR lang STREQUAL "Fortran") AND
+        line MATCHES "^/" AND
+        line MATCHES "/pgc |/pgf901 |/pgftnc " AND
+        line MATCHES " -cmdline ")
+      # cmdline has unparsed cmdline, remove it
+      string(REGEX REPLACE "-cmdline .*" "" line "${line}")
+      if("${line}" MATCHES " -nostdinc ")
+        set(rv "")    # defined, but empty
+      else()
+        string(REGEX MATCHALL " -stdinc ([^ ]*)" incs "${line}")
+        foreach(inc IN LISTS incs)
+          string(REGEX REPLACE " -stdinc ([^ ]*)" "\\1" idir "${inc}")
+          string(REPLACE ":" ";" idir "${idir}")
+          list(APPEND rv ${idir})
+        endforeach()
+      endif()
+      if(DEFINED rv)
+        string(APPEND log "  got implicit includes via PGI C/F parser!\n")
+      else()
+        string(APPEND log "  warning: PGI C/F parse failed!\n")
+      endif()
+    elseif(lang STREQUAL "CXX" AND line MATCHES "^/" AND
+           line MATCHES "/pggpp1 " AND line MATCHES " -I")
+      # oddly, -Mnostdinc does not get rid of system -I's, at least in
+      # PGI 18.10.1 ...
+      string(REGEX MATCHALL " (-I ?)([^ ]*)" incs "${line}")
+      foreach(inc IN LISTS incs)
+        string(REGEX REPLACE " (-I ?)([^ ]*)" "\\2" idir "${inc}")
+        if(NOT idir STREQUAL "-")   # filter out "-I-"
+          list(APPEND rv "${idir}")
+        endif()
+      endforeach()
+      if(DEFINED rv)
+        string(APPEND log "  got implicit includes via PGI CXX parser!\n")
+      else()
+        string(APPEND log "  warning: PGI CXX parse failed!\n")
+      endif()
+    endif()
+  endif()
+
+  # SunPro compiler
+  if(CMAKE_${lang}_COMPILER_ID STREQUAL "SunPro" AND
+     (line MATCHES "-D__SUNPRO_C" OR line MATCHES "-D__SUNPRO_F"))
+    string(REGEX MATCHALL " (-I ?)([^ ]*)" incs "${line}")
+    foreach(inc IN LISTS incs)
+      string(REGEX REPLACE " (-I ?)([^ ]*)" "\\2" idir "${inc}")
+      if(NOT "${idir}" STREQUAL "-xbuiltin")
+        list(APPEND rv "${idir}")
+      endif()
+    endforeach()
+    if(rv)
+      if (lang STREQUAL "C" OR lang STREQUAL "CXX")
+        # /usr/include appears to be hardwired in
+        list(APPEND rv "/usr/include")
+      endif()
+      string(APPEND log "  got implicit includes via sunpro parser!\n")
+    else()
+      string(APPEND log "  warning: sunpro parse failed!\n")
+    endif()
+  endif()
+
+  # XL compiler
+  if((CMAKE_${lang}_COMPILER_ID STREQUAL "XL"
+      OR CMAKE_${lang}_COMPILER_ID STREQUAL "XLClang")
+     AND line MATCHES "^/"
+     AND ( (lang STREQUAL "Fortran" AND
+            line MATCHES "/xl[fF]entry " AND
+            line MATCHES "OSVAR\\([^ ]+\\)")
+           OR
+            ( (lang STREQUAL "C" OR lang STREQUAL "CXX") AND
+            line MATCHES "/xl[cC]2?entry " AND
+            line MATCHES " -qosvar=")
+         )  )
+    # -qnostdinc cancels other stdinc flags, even if present
+    string(FIND "${line}" " -qnostdinc" nostd)
+    if(NOT nostd EQUAL -1)
+      set(rv "")    # defined but empty
+      string(APPEND log "  got implicit includes via XL parser (nostdinc)\n")
+    else()
+      if(lang STREQUAL "CXX")
+        string(REGEX MATCHALL " -qcpp_stdinc=([^ ]*)" std "${line}")
+        string(REGEX MATCHALL " -qgcc_cpp_stdinc=([^ ]*)" gcc_std "${line}")
+      else()
+        string(REGEX MATCHALL " -qc_stdinc=([^ ]*)" std "${line}")
+        string(REGEX MATCHALL " -qgcc_c_stdinc=([^ ]*)" gcc_std "${line}")
+      endif()
+      set(xlstd ${std} ${gcc_std})
+      foreach(inc IN LISTS xlstd)
+        string(REGEX REPLACE " -q(cpp|gcc_cpp|c|gcc_c)_stdinc=([^ ]*)" "\\2"
+               ipath "${inc}")
+        string(REPLACE ":" ";" ipath "${ipath}")
+        list(APPEND rv ${ipath})
+      endforeach()
+    endif()
+    # user can add -I flags via CMAKE_{C,CXX}_FLAGS, look for that too
+    string(REGEX MATCHALL " (-I ?)([^ ]*)" incs "${line}")
+    unset(urv)
+    foreach(inc IN LISTS incs)
+      string(REGEX REPLACE " (-I ?)([^ ]*)" "\\2" idir "${inc}")
+      list(APPEND urv "${idir}")
+    endforeach()
+    if(urv)
+      if ("${rv}" STREQUAL "")
+        set(rv ${urv})
+      else()
+        list(APPEND rv ${urv})
+      endif()
+    endif()
+
+    if(DEFINED rv)
+      string(APPEND log "  got implicit includes via XL parser!\n")
+    else()
+      string(APPEND log "  warning: XL parse failed!\n")
+    endif()
+  endif()
+
+  # Fujitsu compiler
+  if(CMAKE_${lang}_COMPILER_ID STREQUAL "Fujitsu" AND
+     line MATCHES "/ccpcom")
+    string(REGEX MATCHALL " (-I *|--sys_include=|--preinclude +)(\"[^\"]+\"|[^ \"]+)" incs "${line}")
+    foreach(inc IN LISTS incs)
+      string(REGEX REPLACE " (-I *|--sys_include=|--preinclude +)(\"[^\"]+\"|[^ \"]+)" "\\2" idir "${inc}")
+      list(APPEND rv "${idir}")
+    endforeach()
+    if(rv)
+      string(APPEND log "  got implicit includes via fujitsu ccpcom parser!\n")
+    else()
+      string(APPEND log "  warning: fujitsu ccpcom parse failed!\n")
+    endif()
+  endif()
+
+  if(log)
+    set(${log_var} "${log}" PARENT_SCOPE)
+  else()
+    unset(${log_var} PARENT_SCOPE)
+  endif()
+  if(DEFINED rv)
+    set(${id_var} "${rv}" PARENT_SCOPE)
+    set(${state_var} "done" PARENT_SCOPE)
+  endif()
+endfunction()
+
+# top-level function to parse implicit include directory information
+# from verbose compiler output. sets state_var in parent to 'done' on success.
+function(cmake_parse_implicit_include_info text lang dir_var log_var state_var)
+  set(state start)    # values: start, loading, done
+
+  # clear variables we append to (avoids possible pollution from parent scopes)
+  set(implicit_dirs_tmp)
+  set(log "")
+
+  # go through each line of output...
+  string(REGEX REPLACE "\r*\n" ";" output_lines "${text}")
+  foreach(line IN LISTS output_lines)
+    if(state STREQUAL start)
+      string(FIND "${line}" "#include \"...\" search starts here:" rv)
+      if(rv GREATER -1)
+        set(state loading)
+        set(preload 1)      # looking for include <...> now
+        string(APPEND log "  found start of include info\n")
+      else()
+        cmake_parse_implicit_include_line("${line}" "${lang}" implicit_dirs_tmp
+                                          linelog state)
+        if(linelog)
+          string(APPEND log ${linelog})
+        endif()
+        if(state STREQUAL done)
+          break()
+        endif()
+      endif()
+    elseif(state STREQUAL loading)
+      string(FIND "${line}" "End of search list." rv)
+      if(rv GREATER -1)
+        set(state done)
+        string(APPEND log "  end of search list found\n")
+        break()
+      endif()
+      if(preload)
+        string(FIND "${line}" "#include <...> search starts here:" rv)
+        if(rv GREATER -1)
+          set(preload 0)
+          string(APPEND log "  found start of implicit include info\n")
+        endif()
+        continue()
+      endif()
+      if("${line}" MATCHES "^ ")
+        string(SUBSTRING "${line}" 1 -1 line)  # remove leading space
+      endif()
+      if ("${line}" MATCHES " \\(framework directory\\)$")
+        continue() # frameworks are handled elsewhere, ignore them here
+      endif()
+      string(REPLACE "\\" "/" path "${line}")
+      list(APPEND implicit_dirs_tmp "${path}")
+      string(APPEND log "    add: [${path}]\n")
+    endif()
+  endforeach()
+
+  set(implicit_dirs "")
+  foreach(d IN LISTS implicit_dirs_tmp)
+    if(IS_ABSOLUTE "${d}")
+      get_filename_component(dir "${d}" ABSOLUTE)
+      list(APPEND implicit_dirs "${dir}")
+      string(APPEND log "  collapse include dir [${d}] ==> [${dir}]\n")
+    elseif("${d}" MATCHES [[^\.\.[\/]\.\.[\/](.*)$]])
+      # This relative path is deep enough to get out of the CMakeFiles/CMakeTmp
+      # directory where the ABI check is done.  Assume that the compiler has
+      # computed this path adaptively based on the current working directory
+      # such that the effective result is absolute.
+      get_filename_component(dir "${CMAKE_BINARY_DIR}/${CMAKE_MATCH_1}" ABSOLUTE)
+      list(APPEND implicit_dirs "${dir}")
+      string(APPEND log "  collapse relative include dir [${d}] ==> [${dir}]\n")
+    else()
+      string(APPEND log "  skipping relative include dir [${d}]\n")
+    endif()
+  endforeach()
+  list(REMOVE_DUPLICATES implicit_dirs)
+
+  # Log results.
+  if(state STREQUAL done)
+    string(APPEND log "  implicit include dirs: [${implicit_dirs}]\n")
+  else()
+    string(APPEND log "  warn: unable to parse implicit include dirs!\n")
+  endif()
+
+  # Return results.
+  set(${dir_var} "${implicit_dirs}" PARENT_SCOPE)
+  set(${log_var} "${log}" PARENT_SCOPE)
+  set(${state_var} "${state}" PARENT_SCOPE)
+
+endfunction()
diff --git a/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake b/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake
new file mode 100644
index 0000000..a61f71b
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeParseImplicitLinkInfo.cmake
@@ -0,0 +1,271 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0053 NEW)
+cmake_policy(SET CMP0054 NEW)
+
+# Function to parse implicit linker options.
+#
+# This is used internally by CMake and should not be included by user
+# code.
+#
+# Note: this function is leaked/exposed by FindOpenMP and therefore needs
+# to have a stable API so projects that copied `FindOpenMP` for backwards
+# compatibility don't break.
+#
+function(CMAKE_PARSE_IMPLICIT_LINK_INFO text lib_var dir_var fwk_var log_var obj_regex)
+  set(implicit_libs_tmp "")
+  set(implicit_objs_tmp "")
+  set(implicit_dirs_tmp)
+  set(implicit_fwks_tmp)
+  set(log "")
+
+  set(keywordArgs)
+  set(oneValueArgs COMPUTE_IMPLICIT_OBJECTS)
+  set(multiValueArgs )
+  cmake_parse_arguments(EXTRA_PARSE "${keywordArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+  # Parse implicit linker arguments.
+  set(linker "CMAKE_LINKER-NOTFOUND")
+  if(CMAKE_LINKER)
+    get_filename_component(linker ${CMAKE_LINKER} NAME)
+    string(REGEX REPLACE "([][+.*?()^$])" "\\\\\\1" linker "${linker}")
+  endif()
+  set(startfile "CMAKE_LINK_STARTFILE-NOTFOUND")
+  if(CMAKE_LINK_STARTFILE)
+    set(startfile "${CMAKE_LINK_STARTFILE}")
+  endif()
+  # Construct a regex to match linker lines.  It must match both the
+  # whole line and just the command (argv[0]).
+  set(linker_regex "^( *|.*[/\\])(${linker}|${startfile}|([^/\\]+-)?ld|collect2)[^/\\]*( |$)")
+  set(linker_exclude_regex "collect2 version |^[A-Za-z0-9_]+=|/ldfe ")
+  string(APPEND log "  link line regex: [${linker_regex}]\n")
+  string(REGEX REPLACE "\r?\n" ";" output_lines "${text}")
+  foreach(line IN LISTS output_lines)
+    set(cmd)
+    if("${line}" MATCHES "${linker_regex}" AND
+        NOT "${line}" MATCHES "${linker_exclude_regex}")
+      if(XCODE)
+        # Xcode unconditionally adds a path under the project build tree and
+        # on older versions it is not reported with proper quotes.  Remove it.
+        string(REGEX REPLACE "([][+.*()^])" "\\\\\\1" _dir_regex "${CMAKE_BINARY_DIR}")
+        string(REGEX REPLACE " -[FL]${_dir_regex}/([^ ]| [^-])+( |$)" " " xline "${line}")
+        if(NOT "x${xline}" STREQUAL "x${line}")
+          string(APPEND log "  reduced line: [${line}]\n            to: [${xline}]\n")
+          set(line "${xline}")
+        endif()
+      endif()
+      separate_arguments(args NATIVE_COMMAND "${line}")
+      list(GET args 0 cmd)
+    else()
+      #check to see if the link line is comma-separated instead of space separated
+      string(REGEX REPLACE "," " " line "${line}")
+      if("${line}" MATCHES "${linker_regex}" AND
+        NOT "${line}" MATCHES "${linker_exclude_regex}")
+        separate_arguments(args NATIVE_COMMAND "${line}")
+        list(GET args 0 cmd)
+        if("${cmd}" MATCHES "exec:")
+          # ibm xl sometimes has 'exec: ' in-front of the linker
+          list(GET args 1 cmd)
+        endif()
+      endif()
+    endif()
+    set(is_msvc 0)
+    set(search_static 0)
+    if("${cmd}" MATCHES "${linker_regex}")
+      string(APPEND log "  link line: [${line}]\n")
+      string(REGEX REPLACE ";-([LYz]);" ";-\\1" args "${args}")
+      set(skip_value_of "")
+      foreach(arg IN LISTS args)
+        if(skip_value_of)
+          string(APPEND log "    arg [${arg}] ==> skip value of ${skip_value_of}\n")
+          set(skip_value_of "")
+        elseif("${arg}" MATCHES "^-L(.:)?[/\\]")
+          # Unix search path.
+          string(REGEX REPLACE "^-L" "" dir "${arg}")
+          list(APPEND implicit_dirs_tmp ${dir})
+          string(APPEND log "    arg [${arg}] ==> dir [${dir}]\n")
+        elseif("${arg}" MATCHES "^[-/](LIBPATH|libpath):(.+)")
+          # MSVC search path.
+          set(dir "${CMAKE_MATCH_2}")
+          list(APPEND implicit_dirs_tmp ${dir})
+          string(APPEND log "    arg [${arg}] ==> dir [${dir}]\n")
+        elseif(is_msvc AND "${arg}" STREQUAL "-link")
+          string(APPEND log "    arg [${arg}] ==> ignore MSVC cl option\n")
+        elseif(is_msvc AND "${arg}" MATCHES "^(.*\\.[Ll][Ii][Bb])$")
+          set(lib "${CMAKE_MATCH_1}")
+          list(APPEND implicit_libs_tmp ${lib})
+          string(APPEND log "    arg [${arg}] ==> lib [${lib}]\n")
+        elseif("${arg}" STREQUAL "-lto_library")
+          # ld argument "-lto_library <path>"
+          set(skip_value_of "${arg}")
+          string(APPEND log "    arg [${arg}] ==> ignore, skip following value\n")
+        elseif("${arg}" MATCHES "^-l([^:].*)$")
+          # Unix library.
+          set(lib "${CMAKE_MATCH_1}")
+          if(search_static AND lib MATCHES "^(gfortran|stdc\\+\\+)$")
+            # Search for the static library later, once all link dirs are known.
+            set(lib "SEARCH_STATIC:${lib}")
+          endif()
+          list(APPEND implicit_libs_tmp ${lib})
+          string(APPEND log "    arg [${arg}] ==> lib [${lib}]\n")
+        elseif("${arg}" MATCHES "^(.:)?[/\\].*\\.a$")
+          # Unix library full path.
+          list(APPEND implicit_libs_tmp ${arg})
+          string(APPEND log "    arg [${arg}] ==> lib [${arg}]\n")
+        elseif("${arg}" MATCHES "^[-/](DEFAULTLIB|defaultlib):(.+)")
+          # Windows library.
+          set(lib "${CMAKE_MATCH_2}")
+          list(APPEND implicit_libs_tmp ${lib})
+          string(APPEND log "    arg [${arg}] ==> lib [${lib}]\n")
+        elseif("${arg}" MATCHES "^(.:)?[/\\].*\\.o$")
+          if(EXTRA_PARSE_COMPUTE_IMPLICIT_OBJECTS)
+            list(APPEND implicit_objs_tmp ${arg})
+            string(APPEND log "    arg [${arg}] ==> obj [${arg}]\n")
+          endif()
+          if(obj_regex AND "${arg}" MATCHES "${obj_regex}")
+            # Object file full path.
+            list(APPEND implicit_libs_tmp ${arg})
+          endif()
+        elseif("${arg}" MATCHES "^-Y(P,)?[^0-9]")
+          # Sun search path ([^0-9] avoids conflict with Mac -Y<num>).
+          string(REGEX REPLACE "^-Y(P,)?" "" dirs "${arg}")
+          string(REPLACE ":" ";" dirs "${dirs}")
+          list(APPEND implicit_dirs_tmp ${dirs})
+          string(APPEND log "    arg [${arg}] ==> dirs [${dirs}]\n")
+        elseif("${arg}" STREQUAL "-Bstatic")
+          set(search_static 1)
+          string(APPEND log "    arg [${arg}] ==> search static\n" )
+        elseif("${arg}" STREQUAL "-Bdynamic")
+          set(search_static 0)
+          string(APPEND log "    arg [${arg}] ==> search dynamic\n" )
+        elseif("${arg}" MATCHES "^-l:")
+          # HP named library.
+          list(APPEND implicit_libs_tmp ${arg})
+          string(APPEND log "    arg [${arg}] ==> lib [${arg}]\n")
+        elseif("${arg}" MATCHES "^-z(all|default|weak)extract")
+          # Link editor option.
+          list(APPEND implicit_libs_tmp ${arg})
+          string(APPEND log "    arg [${arg}] ==> opt [${arg}]\n")
+        elseif("${arg}" STREQUAL "cl.exe")
+          string(APPEND log "    arg [${arg}] ==> recognize MSVC cl\n")
+          set(is_msvc 1)
+        else()
+          string(APPEND log "    arg [${arg}] ==> ignore\n")
+        endif()
+      endforeach()
+      break()
+    elseif("${line}" MATCHES "LPATH(=| is:? *)(.*)$")
+      string(APPEND log "  LPATH line: [${line}]\n")
+      # HP search path.
+      string(REPLACE ":" ";" paths "${CMAKE_MATCH_2}")
+      list(APPEND implicit_dirs_tmp ${paths})
+      string(APPEND log "    dirs [${paths}]\n")
+    else()
+      string(APPEND log "  ignore line: [${line}]\n")
+    endif()
+  endforeach()
+
+  # Look for library search paths reported by linker.
+  if("${output_lines}" MATCHES ";Library search paths:((;\t[^;]+)+)")
+    string(REPLACE ";\t" ";" implicit_dirs_match "${CMAKE_MATCH_1}")
+    string(APPEND log "  Library search paths: [${implicit_dirs_match}]\n")
+    list(APPEND implicit_dirs_tmp ${implicit_dirs_match})
+  endif()
+  if("${output_lines}" MATCHES ";Framework search paths:((;\t[^;]+)+)")
+    string(REPLACE ";\t" ";" implicit_fwks_match "${CMAKE_MATCH_1}")
+    string(APPEND log "  Framework search paths: [${implicit_fwks_match}]\n")
+    list(APPEND implicit_fwks_tmp ${implicit_fwks_match})
+  endif()
+
+  # Cleanup list of libraries and flags.
+  # We remove items that are not language-specific.
+  set(implicit_libs "")
+  foreach(lib IN LISTS implicit_libs_tmp)
+    if("x${lib}" MATCHES "^xSEARCH_STATIC:(.*)")
+      set(search_static 1)
+      set(lib "${CMAKE_MATCH_1}")
+    else()
+      set(search_static 0)
+    endif()
+    if("x${lib}" MATCHES "^x(crt.*\\.o|gcc_eh.*|.*libgcc_eh.*|System.*|.*libclang_rt.*|msvcrt.*|libvcruntime.*|libucrt.*|libcmt.*)$")
+      string(APPEND log "  remove lib [${lib}]\n")
+    elseif(search_static)
+      # This library appears after a -Bstatic flag.  Due to ordering
+      # and filtering for mixed-language link lines, we do not preserve
+      # the -Bstatic flag itself.  Instead, use an absolute path.
+      # Search using a temporary variable with a distinct name
+      # so that our test suite does not depend on disk content.
+      find_library("CMAKE_${lang}_IMPLICIT_LINK_LIBRARY_${lib}" NO_CACHE NAMES "lib${lib}.a" NO_DEFAULT_PATH PATHS ${implicit_dirs_tmp})
+      set(_lib_static "${CMAKE_${lang}_IMPLICIT_LINK_LIBRARY_${lib}}")
+      if(_lib_static)
+        string(APPEND log "  search lib [SEARCH_STATIC:${lib}] ==> [${_lib_static}]\n")
+        list(APPEND implicit_libs "${_lib_static}")
+      else()
+        string(APPEND log "  search lib [SEARCH_STATIC:${lib}] ==> [${lib}]\n")
+        list(APPEND implicit_libs "${lib}")
+      endif()
+    elseif(IS_ABSOLUTE "${lib}")
+      get_filename_component(abs "${lib}" ABSOLUTE)
+      if(NOT "x${lib}" STREQUAL "x${abs}")
+        string(APPEND log "  collapse lib [${lib}] ==> [${abs}]\n")
+      endif()
+      list(APPEND implicit_libs "${abs}")
+    else()
+      list(APPEND implicit_libs "${lib}")
+    endif()
+  endforeach()
+
+  if(EXTRA_PARSE_COMPUTE_IMPLICIT_OBJECTS)
+    set(implicit_objs "")
+    foreach(obj IN LISTS implicit_objs_tmp)
+      if(IS_ABSOLUTE "${obj}")
+        get_filename_component(abs "${obj}" ABSOLUTE)
+        if(NOT "x${obj}" STREQUAL "x${abs}")
+          string(APPEND log "  collapse obj [${obj}] ==> [${abs}]\n")
+        endif()
+        list(APPEND implicit_objs "${abs}")
+      else()
+        list(APPEND implicit_objs "${obj}")
+      endif()
+    endforeach()
+  endif()
+
+  # Cleanup list of library and framework directories.
+  set(desc_dirs "library")
+  set(desc_fwks "framework")
+  foreach(t dirs fwks)
+    set(implicit_${t} "")
+    foreach(d IN LISTS implicit_${t}_tmp)
+      get_filename_component(dir "${d}" ABSOLUTE)
+      string(FIND "${dir}" "${CMAKE_FILES_DIRECTORY}/" pos)
+      if(NOT pos LESS 0)
+        set(msg ", skipping non-system directory")
+      else()
+        set(msg "")
+        list(APPEND implicit_${t} "${dir}")
+      endif()
+      string(APPEND log "  collapse ${desc_${t}} dir [${d}] ==> [${dir}]${msg}\n")
+    endforeach()
+    list(REMOVE_DUPLICATES implicit_${t})
+  endforeach()
+
+  # Log results.
+  string(APPEND log "  implicit libs: [${implicit_libs}]\n")
+  string(APPEND log "  implicit objs: [${implicit_objs}]\n")
+  string(APPEND log "  implicit dirs: [${implicit_dirs}]\n")
+  string(APPEND log "  implicit fwks: [${implicit_fwks}]\n")
+
+  # Return results.
+  set(${lib_var} "${implicit_libs}" PARENT_SCOPE)
+  set(${dir_var} "${implicit_dirs}" PARENT_SCOPE)
+  set(${fwk_var} "${implicit_fwks}" PARENT_SCOPE)
+  set(${log_var} "${log}" PARENT_SCOPE)
+
+  if(EXTRA_PARSE_COMPUTE_IMPLICIT_OBJECTS)
+    set(${EXTRA_PARSE_COMPUTE_IMPLICIT_OBJECTS} "${implicit_objs}" PARENT_SCOPE)
+  endif()
+endfunction()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake b/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake
new file mode 100644
index 0000000..f7a4b29
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeParseLibraryArchitecture.cmake
@@ -0,0 +1,54 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0053 NEW)
+cmake_policy(SET CMP0054 NEW)
+
+# Function parse implicit linker options.
+# This is used internally by CMake and should not be included by user
+# code.
+
+function(cmake_parse_library_architecture lang implicit_dirs implicit_objs output_var)
+  unset(library_arch)
+  # Detect library architecture directory name.
+  if(CMAKE_LIBRARY_ARCHITECTURE_REGEX)
+    foreach(dir IN LISTS implicit_dirs)
+      if("${dir}" MATCHES "/lib/${CMAKE_LIBRARY_ARCHITECTURE_REGEX}$")
+        get_filename_component(arch "${dir}" NAME)
+        set(library_arch "${arch}")
+        break()
+      endif()
+    endforeach()
+
+    foreach(obj IN LISTS implicit_objs)
+      get_filename_component(dir "${obj}" DIRECTORY)
+      if("${dir}" MATCHES "(/usr)?/lib/${CMAKE_LIBRARY_ARCHITECTURE_REGEX}$")
+        get_filename_component(arch "${dir}" NAME)
+        set(library_arch "${arch}")
+        break()
+      endif()
+    endforeach()
+  endif()
+
+  if(CMAKE_CXX_COMPILER_ID STREQUAL QCC)
+    foreach(dir ${implicit_dirs})
+      if (dir MATCHES "/lib$")
+        get_filename_component(assumedArchDir "${dir}" DIRECTORY)
+        get_filename_component(archParentDir "${assumedArchDir}" DIRECTORY)
+        if (archParentDir STREQUAL CMAKE_SYSROOT)
+          get_filename_component(archDirName "${assumedArchDir}" NAME)
+          set(library_arch "${archDirName}")
+          break()
+        endif()
+      endif()
+    endforeach()
+  endif()
+
+  # Return results.
+  if(library_arch)
+    set(${output_var} "${library_arch}" PARENT_SCOPE)
+  endif()
+endfunction()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/CMakePlatformId.h.in b/share/cmake-3.22/Modules/CMakePlatformId.h.in
new file mode 100644
index 0000000..59195f8
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakePlatformId.h.in
@@ -0,0 +1,318 @@
+#define STRINGIFY_HELPER(X) #X
+#define STRINGIFY(X) STRINGIFY_HELPER(X)
+
+/* Identify known platforms by name.  */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__MSYS__)
+# define PLATFORM_ID "MSYS"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU__)
+# define PLATFORM_ID "Haiku"
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#elif defined(__WATCOMC__)
+# if defined(__LINUX__)
+#  define PLATFORM_ID "Linux"
+
+# elif defined(__DOS__)
+#  define PLATFORM_ID "DOS"
+
+# elif defined(__OS2__)
+#  define PLATFORM_ID "OS2"
+
+# elif defined(__WINDOWS__)
+#  define PLATFORM_ID "Windows3x"
+
+# elif defined(__VXWORKS__)
+#  define PLATFORM_ID "VxWorks"
+
+# else /* unknown platform */
+#  define PLATFORM_ID
+# endif
+
+#elif defined(__INTEGRITY)
+# if defined(INT_178B)
+#  define PLATFORM_ID "Integrity178"
+
+# else /* regular Integrity */
+#  define PLATFORM_ID "Integrity"
+# endif
+
+#else /* unknown platform */
+# define PLATFORM_ID
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+   the architecture of the compiler being used.  This is because
+   the compilers do not have flags that can change the architecture,
+   but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+#  define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_ARM64EC)
+#  define ARCHITECTURE_ID "ARM64EC"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+#  define ARCHITECTURE_ID "x64"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# elif defined(_M_ARM64)
+#  define ARCHITECTURE_ID "ARM64"
+
+# elif defined(_M_ARM)
+#  if _M_ARM == 4
+#   define ARCHITECTURE_ID "ARMV4I"
+#  elif _M_ARM == 5
+#   define ARCHITECTURE_ID "ARMV5I"
+#  else
+#   define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
+#  endif
+
+# elif defined(_M_MIPS)
+#  define ARCHITECTURE_ID "MIPS"
+
+# elif defined(_M_SH)
+#  define ARCHITECTURE_ID "SHx"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__WATCOMC__)
+# if defined(_M_I86)
+#  define ARCHITECTURE_ID "I86"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
+# if defined(__ICCARM__)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(__ICCRX__)
+#  define ARCHITECTURE_ID "RX"
+
+# elif defined(__ICCRH850__)
+#  define ARCHITECTURE_ID "RH850"
+
+# elif defined(__ICCRL78__)
+#  define ARCHITECTURE_ID "RL78"
+
+# elif defined(__ICCRISCV__)
+#  define ARCHITECTURE_ID "RISCV"
+
+# elif defined(__ICCAVR__)
+#  define ARCHITECTURE_ID "AVR"
+
+# elif defined(__ICC430__)
+#  define ARCHITECTURE_ID "MSP430"
+
+# elif defined(__ICCV850__)
+#  define ARCHITECTURE_ID "V850"
+
+# elif defined(__ICC8051__)
+#  define ARCHITECTURE_ID "8051"
+
+# elif defined(__ICCSTM8__)
+#  define ARCHITECTURE_ID "STM8"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__ghs__)
+# if defined(__PPC64__)
+#  define ARCHITECTURE_ID "PPC64"
+
+# elif defined(__ppc__)
+#  define ARCHITECTURE_ID "PPC"
+
+# elif defined(__ARM__)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(__x86_64__)
+#  define ARCHITECTURE_ID "x64"
+
+# elif defined(__i386__)
+#  define ARCHITECTURE_ID "X86"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__TI_COMPILER_VERSION__)
+# if defined(__TI_ARM__)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(__MSP430__)
+#  define ARCHITECTURE_ID "MSP430"
+
+# elif defined(__TMS320C28XX__)
+#  define ARCHITECTURE_ID "TMS320C28x"
+
+# elif defined(__TMS320C6X__) || defined(_TMS320C6X)
+#  define ARCHITECTURE_ID "TMS320C6x"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#else
+#  define ARCHITECTURE_ID
+#endif
+
+/* Convert integer to decimal digit literals.  */
+#define DEC(n)                   \
+  ('0' + (((n) / 10000000)%10)), \
+  ('0' + (((n) / 1000000)%10)),  \
+  ('0' + (((n) / 100000)%10)),   \
+  ('0' + (((n) / 10000)%10)),    \
+  ('0' + (((n) / 1000)%10)),     \
+  ('0' + (((n) / 100)%10)),      \
+  ('0' + (((n) / 10)%10)),       \
+  ('0' +  ((n) % 10))
+
+/* Convert integer to hex digit literals.  */
+#define HEX(n)             \
+  ('0' + ((n)>>28 & 0xF)), \
+  ('0' + ((n)>>24 & 0xF)), \
+  ('0' + ((n)>>20 & 0xF)), \
+  ('0' + ((n)>>16 & 0xF)), \
+  ('0' + ((n)>>12 & 0xF)), \
+  ('0' + ((n)>>8  & 0xF)), \
+  ('0' + ((n)>>4  & 0xF)), \
+  ('0' + ((n)     & 0xF))
+
+/* Construct a string literal encoding the version number. */
+#ifdef COMPILER_VERSION
+char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]";
+
+/* Construct a string literal encoding the version number components. */
+#elif defined(COMPILER_VERSION_MAJOR)
+char const info_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
+  COMPILER_VERSION_MAJOR,
+# ifdef COMPILER_VERSION_MINOR
+  '.', COMPILER_VERSION_MINOR,
+#  ifdef COMPILER_VERSION_PATCH
+   '.', COMPILER_VERSION_PATCH,
+#   ifdef COMPILER_VERSION_TWEAK
+    '.', COMPILER_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct a string literal encoding the internal version number. */
+#ifdef COMPILER_VERSION_INTERNAL
+char const info_version_internal[] = {
+  'I', 'N', 'F', 'O', ':',
+  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_',
+  'i','n','t','e','r','n','a','l','[',
+  COMPILER_VERSION_INTERNAL,']','\0'};
+#elif defined(COMPILER_VERSION_INTERNAL_STR)
+char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]";
+#endif
+
+/* Construct a string literal encoding the version number components. */
+#ifdef SIMULATE_VERSION_MAJOR
+char const info_simulate_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
+  SIMULATE_VERSION_MAJOR,
+# ifdef SIMULATE_VERSION_MINOR
+  '.', SIMULATE_VERSION_MINOR,
+#  ifdef SIMULATE_VERSION_PATCH
+   '.', SIMULATE_VERSION_PATCH,
+#   ifdef SIMULATE_VERSION_TWEAK
+    '.', SIMULATE_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
diff --git a/share/cmake-3.22/Modules/CMakePrintHelpers.cmake b/share/cmake-3.22/Modules/CMakePrintHelpers.cmake
new file mode 100644
index 0000000..8c25a73
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakePrintHelpers.cmake
@@ -0,0 +1,150 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CMakePrintHelpers
+-----------------
+
+Convenience functions for printing properties and variables, useful
+e.g. for debugging.
+
+::
+
+  cmake_print_properties([TARGETS target1 ..  targetN]
+                        [SOURCES source1 .. sourceN]
+                        [DIRECTORIES dir1 .. dirN]
+                        [TESTS test1 .. testN]
+                        [CACHE_ENTRIES entry1 .. entryN]
+                        PROPERTIES prop1 .. propN )
+
+This function prints the values of the properties of the given targets,
+source files, directories, tests or cache entries.  Exactly one of the
+scope keywords must be used.  Example::
+
+  cmake_print_properties(TARGETS foo bar PROPERTIES
+                         LOCATION INTERFACE_INCLUDE_DIRECTORIES)
+
+This will print the LOCATION and INTERFACE_INCLUDE_DIRECTORIES properties for
+both targets foo and bar.
+
+::
+
+  cmake_print_variables(var1 var2 ..  varN)
+
+This function will print the name of each variable followed by its value.
+Example::
+
+  cmake_print_variables(CMAKE_C_COMPILER CMAKE_MAJOR_VERSION DOES_NOT_EXIST)
+
+Gives::
+
+  -- CMAKE_C_COMPILER="/usr/bin/gcc" ; CMAKE_MAJOR_VERSION="2" ; DOES_NOT_EXIST=""
+#]=======================================================================]
+
+function(cmake_print_variables)
+  set(msg "")
+  foreach(var ${ARGN})
+    if(msg)
+      string(APPEND msg " ; ")
+    endif()
+    string(APPEND msg "${var}=\"${${var}}\"")
+  endforeach()
+  message(STATUS "${msg}")
+endfunction()
+
+
+function(cmake_print_properties)
+  set(options )
+  set(oneValueArgs )
+  set(multiValueArgs TARGETS SOURCES TESTS DIRECTORIES CACHE_ENTRIES PROPERTIES )
+
+  cmake_parse_arguments(CPP "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${ARGN})
+
+  if(CPP_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to cmake_print_properties(): \"${CPP_UNPARSED_ARGUMENTS}\"")
+    return()
+  endif()
+
+  if(NOT CPP_PROPERTIES)
+    message(FATAL_ERROR "Required argument PROPERTIES missing in cmake_print_properties() call")
+    return()
+  endif()
+
+  set(mode)
+  set(items)
+  set(keyword)
+
+  if(CPP_TARGETS)
+    set(items ${CPP_TARGETS})
+    set(mode ${mode} TARGETS)
+    set(keyword TARGET)
+  endif()
+
+  if(CPP_SOURCES)
+    set(items ${CPP_SOURCES})
+    set(mode ${mode} SOURCES)
+    set(keyword SOURCE)
+  endif()
+
+  if(CPP_TESTS)
+    set(items ${CPP_TESTS})
+    set(mode ${mode} TESTS)
+    set(keyword TEST)
+  endif()
+
+  if(CPP_DIRECTORIES)
+    set(items ${CPP_DIRECTORIES})
+    set(mode ${mode} DIRECTORIES)
+    set(keyword DIRECTORY)
+  endif()
+
+  if(CPP_CACHE_ENTRIES)
+    set(items ${CPP_CACHE_ENTRIES})
+    set(mode ${mode} CACHE_ENTRIES)
+    # This is a workaround for the fact that passing `CACHE` as an argument to
+    # set() causes a cache variable to be set.
+    set(keyword "")
+    string(APPEND keyword CACHE)
+  endif()
+
+  if(NOT mode)
+    message(FATAL_ERROR "Mode keyword missing in cmake_print_properties() call, must be one of TARGETS SOURCES TESTS DIRECTORIES CACHE_ENTRIES PROPERTIES")
+    return()
+  endif()
+
+  list(LENGTH mode modeLength)
+  if("${modeLength}" GREATER 1)
+    message(FATAL_ERROR "Multiple mode keyword used in cmake_print_properties() call, it must be exactly one of TARGETS SOURCES TESTS DIRECTORIES CACHE_ENTRIES PROPERTIES")
+    return()
+  endif()
+
+  set(msg "\n")
+  foreach(item ${items})
+
+    set(itemExists TRUE)
+    if(keyword STREQUAL "TARGET")
+      if(NOT TARGET ${item})
+      set(itemExists FALSE)
+      string(APPEND msg "\n No such TARGET \"${item}\" !\n\n")
+      endif()
+    endif()
+
+    if (itemExists)
+      string(APPEND msg " Properties for ${keyword} ${item}:\n")
+      foreach(prop ${CPP_PROPERTIES})
+
+        get_property(propertySet ${keyword} ${item} PROPERTY "${prop}" SET)
+
+        if(propertySet)
+          get_property(property ${keyword} ${item} PROPERTY "${prop}")
+          string(APPEND msg "   ${item}.${prop} = \"${property}\"\n")
+        else()
+          string(APPEND msg "   ${item}.${prop} = <NOTFOUND>\n")
+        endif()
+      endforeach()
+    endif()
+
+  endforeach()
+  message(STATUS "${msg}")
+
+endfunction()
diff --git a/share/cmake-3.18/Modules/CMakePrintSystemInformation.cmake b/share/cmake-3.22/Modules/CMakePrintSystemInformation.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakePrintSystemInformation.cmake
rename to share/cmake-3.22/Modules/CMakePrintSystemInformation.cmake
diff --git a/share/cmake-3.18/Modules/CMakePushCheckState.cmake b/share/cmake-3.22/Modules/CMakePushCheckState.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakePushCheckState.cmake
rename to share/cmake-3.22/Modules/CMakePushCheckState.cmake
diff --git a/share/cmake-3.18/Modules/CMakeRCCompiler.cmake.in b/share/cmake-3.22/Modules/CMakeRCCompiler.cmake.in
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeRCCompiler.cmake.in
rename to share/cmake-3.22/Modules/CMakeRCCompiler.cmake.in
diff --git a/share/cmake-3.18/Modules/CMakeRCInformation.cmake b/share/cmake-3.22/Modules/CMakeRCInformation.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeRCInformation.cmake
rename to share/cmake-3.22/Modules/CMakeRCInformation.cmake
diff --git a/share/cmake-3.18/Modules/CMakeSwiftCompiler.cmake.in b/share/cmake-3.22/Modules/CMakeSwiftCompiler.cmake.in
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeSwiftCompiler.cmake.in
rename to share/cmake-3.22/Modules/CMakeSwiftCompiler.cmake.in
diff --git a/share/cmake-3.22/Modules/CMakeSwiftInformation.cmake b/share/cmake-3.22/Modules/CMakeSwiftInformation.cmake
new file mode 100644
index 0000000..ecad1d5
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeSwiftInformation.cmake
@@ -0,0 +1,112 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+if(UNIX)
+  set(CMAKE_Swift_OUTPUT_EXTENSION .o)
+else()
+  set(CMAKE_Swift_OUTPUT_EXTENSION .obj)
+endif()
+
+# Load compiler-specific information.
+if(CMAKE_Swift_COMPILER_ID)
+  include(Compiler/${CMAKE_Swift_COMPILER_ID}-Swift OPTIONAL)
+
+  if(CMAKE_SYSTEM_PROCESSOR)
+    include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_Swift_COMPILER_ID}-Swift-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
+  endif()
+  include(Platform/${CMAKE_EFFECTIVE_SYSTEM_NAME}-${CMAKE_Swift_COMPILER_ID}-Swift OPTIONAL)
+endif()
+
+set(CMAKE_EXE_EXPORTS_Swift_FLAG "-emit-module -emit-module-path <SWIFT_MODULE> ${CMAKE_Swift_IMPLIB_LINKER_FLAGS}")
+
+set(CMAKE_INCLUDE_FLAG_Swift "-I ")
+if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
+  set(CMAKE_SHARED_LIBRARY_SONAME_Swift_FLAG "-Xlinker -install_name -Xlinker ")
+elseif(NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
+  set(CMAKE_SHARED_LIBRARY_SONAME_Swift_FLAG "-Xlinker -soname -Xlinker ")
+endif()
+
+if(NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
+  set(CMAKE_EXECUTABLE_RUNTIME_Swift_FLAG "-Xlinker -rpath -Xlinker ")
+  set(CMAKE_SHARED_LIBRARY_RUNTIME_Swift_FLAG "-Xlinker -rpath -Xlinker ")
+  if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
+    set(CMAKE_EXECUTABLE_RUNTIME_Swift_FLAG_SEP "")
+    set(CMAKE_SHARED_LIBRARY_RUNTIME_Swift_FLAG_SEP "")
+  else()
+    set(CMAKE_EXECUTABLE_RUNTIME_Swift_FLAG_SEP ":")
+    set(CMAKE_SHARED_LIBRARY_RUNTIME_Swift_FLAG_SEP ":")
+  endif()
+endif()
+
+set(CMAKE_Swift_COMPILE_OPTIONS_TARGET "-target ")
+set(CMAKE_Swift_COMPILE_OPTIONS_EXTERNAL_TOOLCHAIN "-tools-directory ")
+# NOTE(compnerd) the `-sdk` support is not yet ready in the compiler; when that
+# is fully working, we should be able to enable this.
+# set(CMAKE_Swift_COMPILE_OPTIONS_SYSROOT "-sdk ")
+# NOTE(compnerd) do not setup `-frontend` as we use the compiler as the driver
+# during the link phase and use that to drive the compilation
+set(CMAKE_Swift_COMPILER_ARG1 "")
+set(CMAKE_Swift_DEFINE_FLAG -D)
+set(CMAKE_Swift_FRAMEWORK_SEARCH_FLAG "-F ")
+set(CMAKE_Swift_LIBRARY_PATH_FLAG "-L ")
+set(CMAKE_Swift_LIBRARY_PATH_TERMINATOR "")
+set(CMAKE_Swift_LINK_LIBRARY_FLAG "-l")
+set(CMAKE_Swift_LINKER_WRAPPER_FLAG "-Xlinker" " ")
+set(CMAKE_Swift_RESPONSE_FILE_LINK_FLAG @)
+
+set(CMAKE_Swift_LINKER_PREFERENCE 50)
+set(CMAKE_Swift_LINKER_PREFERENCE_PROPAGATES 1)
+
+# NOTE(compnerd) use the short form for convenience and ease of search.  They
+# are treated equivalent to their long form names as well as custom Swift
+# specific names.
+set(CMAKE_Swift_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded -libc MT)
+set(CMAKE_Swift_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL -libc MD)
+set(CMAKE_Swift_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug -libc MTd)
+set(CMAKE_Swift_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL -libc MDd)
+
+set(CMAKE_Swift_FLAGS_DEBUG_INIT "-g")
+set(CMAKE_Swift_FLAGS_RELEASE_INIT "-O")
+set(CMAKE_Swift_FLAGS_RELWITHDEBINFO_INIT "-O -g")
+set(CMAKE_Swift_FLAGS_MINSIZEREL_INIT "-Osize")
+
+if(CMAKE_EXECUTABLE_FORMAT STREQUAL "ELF")
+  if(NOT DEFINED CMAKE_Swift_LINK_WHAT_YOU_USE_FLAG)
+    set(CMAKE_Swift_LINK_WHAT_YOU_USE_FLAG "LINKER:--no-as-needed")
+  endif()
+  if(NOT DEFINED CMAKE_LINK_WHAT_YOU_USE_CHECK)
+    set(CMAKE_LINK_WHAT_YOU_USE_CHECK ldd -u -r)
+  endif()
+endif()
+
+cmake_initialize_per_config_variable(CMAKE_Swift_FLAGS "Swift Compiler Flags")
+
+# NOTE(compnerd) we do not have an object compile rule since we build the objects as part of the link step
+if(NOT CMAKE_Swift_COMPILE_OBJECT)
+  set(CMAKE_Swift_COMPILE_OBJECT ":")
+endif()
+
+if(NOT CMAKE_Swift_NUM_THREADS MATCHES "^[0-9]+$")
+  cmake_host_system_information(RESULT CMAKE_Swift_NUM_THREADS QUERY NUMBER_OF_LOGICAL_CORES)
+endif()
+
+if(NOT CMAKE_Swift_CREATE_SHARED_LIBRARY)
+  set(CMAKE_Swift_CREATE_SHARED_LIBRARY "<CMAKE_Swift_COMPILER> -output-file-map <SWIFT_OUTPUT_FILE_MAP> -incremental -j ${CMAKE_Swift_NUM_THREADS} -emit-library -o <TARGET> -module-name <SWIFT_MODULE_NAME> -module-link-name <SWIFT_LIBRARY_NAME> -emit-module -emit-module-path <SWIFT_MODULE> -emit-dependencies <DEFINES> <FLAGS> <INCLUDES> <SWIFT_SOURCES> <LINK_FLAGS> <SONAME_FLAG> <TARGET_INSTALLNAME_DIR><TARGET_SONAME> ${CMAKE_Swift_IMPLIB_LINKER_FLAGS} <LINK_LIBRARIES>")
+endif()
+
+if(NOT CMAKE_Swift_CREATE_SHARED_MODULE)
+  set(CMAKE_Swift_CREATE_SHARED_MODULE ${CMAKE_Swift_CREATE_SHARED_LIBRARY})
+endif()
+
+if(NOT CMAKE_Swift_LINK_EXECUTABLE)
+  set(CMAKE_Swift_LINK_EXECUTABLE "<CMAKE_Swift_COMPILER> -output-file-map <SWIFT_OUTPUT_FILE_MAP> -incremental -j ${CMAKE_Swift_NUM_THREADS} -emit-executable -o <TARGET> -emit-dependencies <DEFINES> <FLAGS> <INCLUDES> <SWIFT_SOURCES> <LINK_FLAGS> <LINK_LIBRARIES>")
+endif()
+
+if(NOT CMAKE_Swift_CREATE_STATIC_LIBRARY)
+  set(CMAKE_Swift_CREATE_STATIC_LIBRARY "<CMAKE_Swift_COMPILER> -output-file-map <SWIFT_OUTPUT_FILE_MAP> -incremental -j ${CMAKE_Swift_NUM_THREADS} -emit-library -static -o <TARGET> -module-name <SWIFT_MODULE_NAME> -module-link-name <SWIFT_LIBRARY_NAME> -emit-module -emit-module-path <SWIFT_MODULE> -emit-dependencies <DEFINES> <FLAGS> <INCLUDES> <SWIFT_SOURCES> <LINK_FLAGS> <LINK_LIBRARIES>")
+
+  set(CMAKE_Swift_ARCHIVE_CREATE "<CMAKE_AR> crs <TARGET> <OBJECTS>")
+  set(CMAKE_Swift_ARCHIVE_FINISH "")
+endif()
+
+set(CMAKE_Swift_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.18/Modules/CMakeSystem.cmake.in b/share/cmake-3.22/Modules/CMakeSystem.cmake.in
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeSystem.cmake.in
rename to share/cmake-3.22/Modules/CMakeSystem.cmake.in
diff --git a/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake b/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake
new file mode 100644
index 0000000..0ded568
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake
@@ -0,0 +1,59 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This file is included by cmGlobalGenerator::EnableLanguage.
+# It is included after the compiler has been determined, so
+# we know things like the compiler name and if the compiler is gnu.
+
+# before cmake 2.6 these variables were set in cmMakefile.cxx. This is still
+# done to keep scripts and custom language and compiler modules working.
+# But they are reset here and set again in the platform files for the target
+# platform, so they can be used for testing the target platform instead
+# of testing the host platform.
+set(APPLE  )
+set(UNIX   )
+set(CYGWIN )
+set(MSYS )
+set(WIN32  )
+
+
+# include Generic system information
+include(CMakeGenericSystem)
+
+# 2. now include SystemName.cmake file to set the system specific information
+set(CMAKE_SYSTEM_INFO_FILE Platform/${CMAKE_SYSTEM_NAME})
+
+include(${CMAKE_SYSTEM_INFO_FILE} OPTIONAL RESULT_VARIABLE _INCLUDED_SYSTEM_INFO_FILE)
+
+if(NOT _INCLUDED_SYSTEM_INFO_FILE)
+  message("System is unknown to cmake, create:\n${CMAKE_SYSTEM_INFO_FILE}"
+          " to use this system, please post your config file on "
+          "discourse.cmake.org so it can be added to cmake")
+  if(EXISTS ${CMAKE_BINARY_DIR}/CMakeCache.txt)
+    configure_file(${CMAKE_BINARY_DIR}/CMakeCache.txt
+                   ${CMAKE_BINARY_DIR}/CopyOfCMakeCache.txt COPYONLY)
+    message("Your CMakeCache.txt file was copied to CopyOfCMakeCache.txt. "
+            "Please post that file on discourse.cmake.org.")
+  endif()
+endif()
+
+# optionally include a file which can do extra-generator specific things, e.g.
+# CMakeFindEclipseCDT4.cmake asks gcc for the system include dirs for the Eclipse CDT4 generator
+if(CMAKE_EXTRA_GENERATOR)
+  string(REPLACE " " "" _CMAKE_EXTRA_GENERATOR_NO_SPACES ${CMAKE_EXTRA_GENERATOR} )
+  include("CMakeFind${_CMAKE_EXTRA_GENERATOR_NO_SPACES}" OPTIONAL)
+endif()
+
+
+# for most systems a module is the same as a shared library
+# so unless the variable CMAKE_MODULE_EXISTS is set just
+# copy the values from the LIBRARY variables
+# this has to be done after the system information has been loaded
+if(NOT CMAKE_MODULE_EXISTS)
+  set(CMAKE_SHARED_MODULE_PREFIX "${CMAKE_SHARED_LIBRARY_PREFIX}")
+  set(CMAKE_SHARED_MODULE_SUFFIX "${CMAKE_SHARED_LIBRARY_SUFFIX}")
+endif()
+
+
+set(CMAKE_SYSTEM_SPECIFIC_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake b/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake
rename to share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake
diff --git a/share/cmake-3.18/Modules/CMakeTestASM-ATTCompiler.cmake b/share/cmake-3.22/Modules/CMakeTestASM-ATTCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeTestASM-ATTCompiler.cmake
rename to share/cmake-3.22/Modules/CMakeTestASM-ATTCompiler.cmake
diff --git a/share/cmake-3.18/Modules/CMakeTestASMCompiler.cmake b/share/cmake-3.22/Modules/CMakeTestASMCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeTestASMCompiler.cmake
rename to share/cmake-3.22/Modules/CMakeTestASMCompiler.cmake
diff --git a/share/cmake-3.18/Modules/CMakeTestASM_MASMCompiler.cmake b/share/cmake-3.22/Modules/CMakeTestASM_MASMCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeTestASM_MASMCompiler.cmake
rename to share/cmake-3.22/Modules/CMakeTestASM_MASMCompiler.cmake
diff --git a/share/cmake-3.18/Modules/CMakeTestASM_NASMCompiler.cmake b/share/cmake-3.22/Modules/CMakeTestASM_NASMCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeTestASM_NASMCompiler.cmake
rename to share/cmake-3.22/Modules/CMakeTestASM_NASMCompiler.cmake
diff --git a/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake b/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake
new file mode 100644
index 0000000..ae5aa27
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake
@@ -0,0 +1,101 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+if(CMAKE_C_COMPILER_FORCED)
+  # The compiler configuration was forced by the user.
+  # Assume the user has configured all compiler information.
+  set(CMAKE_C_COMPILER_WORKS TRUE)
+  return()
+endif()
+
+include(CMakeTestCompilerCommon)
+
+# work around enforced code signing and / or missing executable target type
+set(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE})
+if(_CMAKE_FEATURE_DETECTION_TARGET_TYPE)
+  set(CMAKE_TRY_COMPILE_TARGET_TYPE ${_CMAKE_FEATURE_DETECTION_TARGET_TYPE})
+endif()
+
+# Remove any cached result from an older CMake version.
+# We now store this in CMakeCCompiler.cmake.
+unset(CMAKE_C_COMPILER_WORKS CACHE)
+
+# Try to identify the ABI and configure it into CMakeCCompiler.cmake
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
+CMAKE_DETERMINE_COMPILER_ABI(C ${CMAKE_ROOT}/Modules/CMakeCCompilerABI.c)
+if(CMAKE_C_ABI_COMPILED)
+  # The compiler worked so skip dedicated test below.
+  set(CMAKE_C_COMPILER_WORKS TRUE)
+  message(STATUS "Check for working C compiler: ${CMAKE_C_COMPILER} - skipped")
+endif()
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that that selected C compiler can actually compile
+# and link the most basic of programs.   If not, a fatal error
+# is set and cmake stops processing commands and will not generate
+# any makefiles or projects.
+if(NOT CMAKE_C_COMPILER_WORKS)
+  PrintTestCompilerStatus("C")
+  __TestCompiler_setTryCompileTargetType()
+  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCCompiler.c
+    "#ifdef __cplusplus\n"
+    "# error \"The CMAKE_C_COMPILER is set to a C++ compiler\"\n"
+    "#endif\n"
+    "#if defined(__CLASSIC_C__)\n"
+    "int main(argc, argv)\n"
+    "  int argc;\n"
+    "  char* argv[];\n"
+    "#else\n"
+    "int main(int argc, char* argv[])\n"
+    "#endif\n"
+    "{ (void)argv; return argc-1;}\n")
+  # Clear result from normal variable.
+  unset(CMAKE_C_COMPILER_WORKS)
+  # Puts test result in cache variable.
+  try_compile(CMAKE_C_COMPILER_WORKS ${CMAKE_BINARY_DIR}
+    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCCompiler.c
+    OUTPUT_VARIABLE __CMAKE_C_COMPILER_OUTPUT)
+  # Move result from cache to normal variable.
+  set(CMAKE_C_COMPILER_WORKS ${CMAKE_C_COMPILER_WORKS})
+  unset(CMAKE_C_COMPILER_WORKS CACHE)
+  __TestCompiler_restoreTryCompileTargetType()
+  if(NOT CMAKE_C_COMPILER_WORKS)
+    PrintTestCompilerResult(CHECK_FAIL "broken")
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+      "Determining if the C compiler works failed with "
+      "the following output:\n${__CMAKE_C_COMPILER_OUTPUT}\n\n")
+    string(REPLACE "\n" "\n  " _output "${__CMAKE_C_COMPILER_OUTPUT}")
+    message(FATAL_ERROR "The C compiler\n  \"${CMAKE_C_COMPILER}\"\n"
+      "is not able to compile a simple test program.\nIt fails "
+      "with the following output:\n  ${_output}\n\n"
+      "CMake will not be able to correctly generate this project.")
+  endif()
+  PrintTestCompilerResult(CHECK_PASS "works")
+  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+    "Determining if the C compiler works passed with "
+    "the following output:\n${__CMAKE_C_COMPILER_OUTPUT}\n\n")
+endif()
+
+# Try to identify the compiler features
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompileFeatures.cmake)
+CMAKE_DETERMINE_COMPILE_FEATURES(C)
+
+# Re-configure to save learned information.
+configure_file(
+  ${CMAKE_ROOT}/Modules/CMakeCCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeCCompiler.cmake
+  @ONLY
+  )
+include(${CMAKE_PLATFORM_INFO_DIR}/CMakeCCompiler.cmake)
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+  foreach(f ${CMAKE_C_ABI_FILES})
+    include(${f})
+  endforeach()
+  unset(CMAKE_C_ABI_FILES)
+endif()
+
+set(CMAKE_TRY_COMPILE_TARGET_TYPE ${__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE})
+unset(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE)
+unset(__CMAKE_C_COMPILER_OUTPUT)
diff --git a/share/cmake-3.22/Modules/CMakeTestCSharpCompiler.cmake b/share/cmake-3.22/Modules/CMakeTestCSharpCompiler.cmake
new file mode 100644
index 0000000..adea250
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeTestCSharpCompiler.cmake
@@ -0,0 +1,70 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+if(CMAKE_CSharp_COMPILER_FORCED)
+  # The compiler configuration was forced by the user.
+  # Assume the user has configured all compiler information.
+  set(CMAKE_CSharp_COMPILER_WORKS TRUE)
+  return()
+endif()
+
+include(CMakeTestCompilerCommon)
+
+unset(CMAKE_CSharp_COMPILER_WORKS CACHE)
+
+set(test_compile_file "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCSharpCompiler.cs")
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that the selected C# compiler can actually compile
+# and link the most basic of programs. If not, a fatal error
+# is set and cmake stops processing commands and will not generate
+# any makefiles or projects.
+if(NOT CMAKE_CSharp_COMPILER_WORKS)
+  # Don't call PrintTestCompilerStatus() because the "C#" we want to pass
+  # as the LANG doesn't match with the variable name "CMAKE_CSharp_COMPILER"
+  message(CHECK_START "Check for working C# compiler: ${CMAKE_CSharp_COMPILER}")
+  file(WRITE "${test_compile_file}"
+    "namespace Test {"
+    "   public class CSharp {"
+    "       static void Main(string[] args) {}"
+    "   }"
+    "}"
+    )
+  # Clear result from normal variable.
+  unset(CMAKE_CSharp_COMPILER_WORKS)
+  # Puts test result in cache variable.
+  try_compile(CMAKE_CSharp_COMPILER_WORKS ${CMAKE_BINARY_DIR} "${test_compile_file}"
+    OUTPUT_VARIABLE __CMAKE_CSharp_COMPILER_OUTPUT
+    )
+  # Move result from cache to normal variable.
+  set(CMAKE_CSharp_COMPILER_WORKS ${CMAKE_CSharp_COMPILER_WORKS})
+  unset(CMAKE_CSharp_COMPILER_WORKS CACHE)
+  set(CSharp_TEST_WAS_RUN 1)
+endif()
+
+if(NOT CMAKE_CSharp_COMPILER_WORKS)
+  PrintTestCompilerResult(CHECK_FAIL "broken")
+  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+    "Determining if the C# compiler works failed with "
+    "the following output:\n${__CMAKE_CSharp_COMPILER_OUTPUT}\n\n")
+  string(REPLACE "\n" "\n  " _output "${__CMAKE_CSharp_COMPILER_OUTPUT}")
+  message(FATAL_ERROR "The C# compiler\n  \"${CMAKE_CSharp_COMPILER}\"\n"
+    "is not able to compile a simple test program.\nIt fails "
+    "with the following output:\n  ${_output}\n\n"
+    "CMake will not be able to correctly generate this project.")
+else()
+  if(CSharp_TEST_WAS_RUN)
+    PrintTestCompilerResult(CHECK_PASS "works")
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+      "Determining if the C# compiler works passed with "
+      "the following output:\n${__CMAKE_CSharp_COMPILER_OUTPUT}\n\n")
+  endif()
+
+  # Re-configure to save learned information.
+  configure_file(
+    ${CMAKE_ROOT}/Modules/CMakeCSharpCompiler.cmake.in
+    ${CMAKE_PLATFORM_INFO_DIR}/CMakeCSharpCompiler.cmake
+    @ONLY
+    )
+  include(${CMAKE_PLATFORM_INFO_DIR}/CMakeCSharpCompiler.cmake)
+endif()
diff --git a/share/cmake-3.22/Modules/CMakeTestCUDACompiler.cmake b/share/cmake-3.22/Modules/CMakeTestCUDACompiler.cmake
new file mode 100644
index 0000000..25a3653
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeTestCUDACompiler.cmake
@@ -0,0 +1,102 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+if(CMAKE_CUDA_COMPILER_FORCED)
+  # The compiler configuration was forced by the user.
+  # Assume the user has configured all compiler information.
+  set(CMAKE_CUDA_COMPILER_WORKS TRUE)
+  return()
+endif()
+
+include(CMakeTestCompilerCommon)
+
+# Remove any cached result from an older CMake version.
+# We now store this in CMakeCUDACompiler.cmake.
+unset(CMAKE_CUDA_COMPILER_WORKS CACHE)
+
+# Try to identify the ABI and configure it into CMakeCUDACompiler.cmake
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
+CMAKE_DETERMINE_COMPILER_ABI(CUDA ${CMAKE_ROOT}/Modules/CMakeCUDACompilerABI.cu)
+if(CMAKE_CUDA_ABI_COMPILED)
+  # The compiler worked so skip dedicated test below.
+  set(CMAKE_CUDA_COMPILER_WORKS TRUE)
+  message(STATUS "Check for working CUDA compiler: ${CMAKE_CUDA_COMPILER} - skipped")
+endif()
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that the selected cuda compiler can actually compile
+# and link the most basic of programs.   If not, a fatal error
+# is set and cmake stops processing commands and will not generate
+# any makefiles or projects.
+if(NOT CMAKE_CUDA_COMPILER_WORKS)
+  PrintTestCompilerStatus("CUDA")
+  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/main.cu
+    "#ifndef __CUDACC__\n"
+    "# error \"The CMAKE_CUDA_COMPILER is set to an invalid CUDA compiler\"\n"
+    "#endif\n"
+    "int main(){return 0;}\n")
+
+  # Clear result from normal variable.
+  unset(CMAKE_CUDA_COMPILER_WORKS)
+
+  # Puts test result in cache variable.
+  try_compile(CMAKE_CUDA_COMPILER_WORKS ${CMAKE_BINARY_DIR}
+    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/main.cu
+    OUTPUT_VARIABLE __CMAKE_CUDA_COMPILER_OUTPUT)
+
+  # Move result from cache to normal variable.
+  set(CMAKE_CUDA_COMPILER_WORKS ${CMAKE_CUDA_COMPILER_WORKS})
+  unset(CMAKE_CUDA_COMPILER_WORKS CACHE)
+  if(NOT CMAKE_CUDA_COMPILER_WORKS)
+    PrintTestCompilerResult(CHECK_FAIL "broken")
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+      "Determining if the CUDA compiler works failed with "
+      "the following output:\n${__CMAKE_CUDA_COMPILER_OUTPUT}\n\n")
+    string(REPLACE "\n" "\n  " _output "${__CMAKE_CUDA_COMPILER_OUTPUT}")
+    message(FATAL_ERROR "The CUDA compiler\n  \"${CMAKE_CUDA_COMPILER}\"\n"
+      "is not able to compile a simple test program.\nIt fails "
+      "with the following output:\n  ${_output}\n\n"
+      "CMake will not be able to correctly generate this project.")
+  endif()
+  PrintTestCompilerResult(CHECK_PASS "works")
+  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+    "Determining if the CUDA compiler works passed with "
+    "the following output:\n${__CMAKE_CUDA_COMPILER_OUTPUT}\n\n")
+endif()
+
+# Try to identify the compiler features
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompileFeatures.cmake)
+CMAKE_DETERMINE_COMPILE_FEATURES(CUDA)
+
+if("x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC")
+  set(CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES "${CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES}")
+  set(CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES "${CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES}")
+endif()
+
+# Filter out implicit link libraries that should not be passed unconditionally.
+# See CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES_EXCLUDE in CMakeDetermineCUDACompiler.
+list(REMOVE_ITEM CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES ${CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES_EXCLUDE})
+
+if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
+  # Remove the CUDA Toolkit include directories from the set of
+  # implicit system include directories.
+  # This resolves the issue that NVCC doesn't specify these
+  # includes as SYSTEM includes when compiling device code, and sometimes
+  # they contain headers that generate warnings, so let users mark them
+  # as SYSTEM explicitly
+  if(CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES)
+    list(REMOVE_ITEM CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES
+      ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}
+      )
+  endif()
+endif()
+
+# Re-configure to save learned information.
+configure_file(
+  ${CMAKE_ROOT}/Modules/CMakeCUDACompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeCUDACompiler.cmake
+  @ONLY
+  )
+include(${CMAKE_PLATFORM_INFO_DIR}/CMakeCUDACompiler.cmake)
+
+unset(__CMAKE_CUDA_COMPILER_OUTPUT)
diff --git a/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake b/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake
new file mode 100644
index 0000000..bbe3533
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake
@@ -0,0 +1,94 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+if(CMAKE_CXX_COMPILER_FORCED)
+  # The compiler configuration was forced by the user.
+  # Assume the user has configured all compiler information.
+  set(CMAKE_CXX_COMPILER_WORKS TRUE)
+  return()
+endif()
+
+include(CMakeTestCompilerCommon)
+
+# work around enforced code signing and / or missing executable target type
+set(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE})
+if(_CMAKE_FEATURE_DETECTION_TARGET_TYPE)
+  set(CMAKE_TRY_COMPILE_TARGET_TYPE ${_CMAKE_FEATURE_DETECTION_TARGET_TYPE})
+endif()
+
+# Remove any cached result from an older CMake version.
+# We now store this in CMakeCXXCompiler.cmake.
+unset(CMAKE_CXX_COMPILER_WORKS CACHE)
+
+# Try to identify the ABI and configure it into CMakeCXXCompiler.cmake
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
+CMAKE_DETERMINE_COMPILER_ABI(CXX ${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp)
+if(CMAKE_CXX_ABI_COMPILED)
+  # The compiler worked so skip dedicated test below.
+  set(CMAKE_CXX_COMPILER_WORKS TRUE)
+  message(STATUS "Check for working CXX compiler: ${CMAKE_CXX_COMPILER} - skipped")
+endif()
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that the selected C++ compiler can actually compile
+# and link the most basic of programs.   If not, a fatal error
+# is set and cmake stops processing commands and will not generate
+# any makefiles or projects.
+if(NOT CMAKE_CXX_COMPILER_WORKS)
+  PrintTestCompilerStatus("CXX")
+  __TestCompiler_setTryCompileTargetType()
+  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCXXCompiler.cxx
+    "#ifndef __cplusplus\n"
+    "# error \"The CMAKE_CXX_COMPILER is set to a C compiler\"\n"
+    "#endif\n"
+    "int main(){return 0;}\n")
+  # Clear result from normal variable.
+  unset(CMAKE_CXX_COMPILER_WORKS)
+  # Puts test result in cache variable.
+  try_compile(CMAKE_CXX_COMPILER_WORKS ${CMAKE_BINARY_DIR}
+    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCXXCompiler.cxx
+    OUTPUT_VARIABLE __CMAKE_CXX_COMPILER_OUTPUT)
+  # Move result from cache to normal variable.
+  set(CMAKE_CXX_COMPILER_WORKS ${CMAKE_CXX_COMPILER_WORKS})
+  unset(CMAKE_CXX_COMPILER_WORKS CACHE)
+  __TestCompiler_restoreTryCompileTargetType()
+  if(NOT CMAKE_CXX_COMPILER_WORKS)
+    PrintTestCompilerResult(CHECK_FAIL "broken")
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+      "Determining if the CXX compiler works failed with "
+      "the following output:\n${__CMAKE_CXX_COMPILER_OUTPUT}\n\n")
+    string(REPLACE "\n" "\n  " _output "${__CMAKE_CXX_COMPILER_OUTPUT}")
+    message(FATAL_ERROR "The C++ compiler\n  \"${CMAKE_CXX_COMPILER}\"\n"
+      "is not able to compile a simple test program.\nIt fails "
+      "with the following output:\n  ${_output}\n\n"
+      "CMake will not be able to correctly generate this project.")
+  endif()
+  PrintTestCompilerResult(CHECK_PASS "works")
+  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+    "Determining if the CXX compiler works passed with "
+    "the following output:\n${__CMAKE_CXX_COMPILER_OUTPUT}\n\n")
+endif()
+
+# Try to identify the compiler features
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompileFeatures.cmake)
+CMAKE_DETERMINE_COMPILE_FEATURES(CXX)
+
+# Re-configure to save learned information.
+configure_file(
+  ${CMAKE_ROOT}/Modules/CMakeCXXCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeCXXCompiler.cmake
+  @ONLY
+  )
+include(${CMAKE_PLATFORM_INFO_DIR}/CMakeCXXCompiler.cmake)
+
+if(CMAKE_CXX_SIZEOF_DATA_PTR)
+  foreach(f ${CMAKE_CXX_ABI_FILES})
+    include(${f})
+  endforeach()
+  unset(CMAKE_CXX_ABI_FILES)
+endif()
+
+set(CMAKE_TRY_COMPILE_TARGET_TYPE ${__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE})
+unset(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE)
+unset(__CMAKE_CXX_COMPILER_OUTPUT)
diff --git a/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake b/share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake
rename to share/cmake-3.22/Modules/CMakeTestCompilerCommon.cmake
diff --git a/share/cmake-3.22/Modules/CMakeTestFortranCompiler.cmake b/share/cmake-3.22/Modules/CMakeTestFortranCompiler.cmake
new file mode 100644
index 0000000..579f83f
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeTestFortranCompiler.cmake
@@ -0,0 +1,112 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+if(CMAKE_Fortran_COMPILER_FORCED)
+  # The compiler configuration was forced by the user.
+  # Assume the user has configured all compiler information.
+  set(CMAKE_Fortran_COMPILER_WORKS TRUE)
+  return()
+endif()
+
+include(CMakeTestCompilerCommon)
+
+# Remove any cached result from an older CMake version.
+# We now store this in CMakeFortranCompiler.cmake.
+unset(CMAKE_Fortran_COMPILER_WORKS CACHE)
+
+# Try to identify the ABI and configure it into CMakeFortranCompiler.cmake
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
+CMAKE_DETERMINE_COMPILER_ABI(Fortran ${CMAKE_ROOT}/Modules/CMakeFortranCompilerABI.F90)
+if(CMAKE_Fortran_ABI_COMPILED)
+  # The compiler worked so skip dedicated test below.
+  set(CMAKE_Fortran_COMPILER_WORKS TRUE)
+  set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 1)
+  message(STATUS "Check for working Fortran compiler: ${CMAKE_Fortran_COMPILER} - skipped")
+else()
+  cmake_determine_compiler_abi(Fortran ${CMAKE_ROOT}/Modules/CMakeFortranCompilerABI.F)
+  if(CMAKE_Fortran_ABI_COMPILED)
+    set(CMAKE_Fortran_COMPILER_WORKS TRUE)
+    message(STATUS "Check for working Fortran 77 compiler: ${CMAKE_Fortran_COMPILER} - skipped")
+  endif()
+endif()
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that the selected Fortran compiler can actually compile
+# and link the most basic of programs.   If not, a fatal error
+# is set and cmake stops processing commands and will not generate
+# any makefiles or projects.
+if(NOT CMAKE_Fortran_COMPILER_WORKS)
+  PrintTestCompilerStatus("Fortran")
+  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler.f "
+        PROGRAM TESTFortran
+        PRINT *, 'Hello'
+        END
+  ")
+  # Clear result from normal variable.
+  unset(CMAKE_Fortran_COMPILER_WORKS)
+  # Puts test result in cache variable.
+  try_compile(CMAKE_Fortran_COMPILER_WORKS ${CMAKE_BINARY_DIR}
+    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler.f
+    OUTPUT_VARIABLE OUTPUT)
+  # Move result from cache to normal variable.
+  set(CMAKE_Fortran_COMPILER_WORKS ${CMAKE_Fortran_COMPILER_WORKS})
+  unset(CMAKE_Fortran_COMPILER_WORKS CACHE)
+  if(NOT CMAKE_Fortran_COMPILER_WORKS)
+    PrintTestCompilerResult(CHECK_FAIL "broken")
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+      "Determining if the Fortran compiler works failed with "
+      "the following output:\n${OUTPUT}\n\n")
+    string(REPLACE "\n" "\n  " _output "${OUTPUT}")
+    message(FATAL_ERROR "The Fortran compiler\n  \"${CMAKE_Fortran_COMPILER}\"\n"
+      "is not able to compile a simple test program.\nIt fails "
+      "with the following output:\n  ${_output}\n\n"
+      "CMake will not be able to correctly generate this project.")
+  endif()
+  PrintTestCompilerResult(CHECK_PASS "works")
+  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+    "Determining if the Fortran compiler works passed with "
+    "the following output:\n${OUTPUT}\n\n")
+endif()
+
+# Test for Fortran 90 support by using an f90-specific construct.
+if(NOT DEFINED CMAKE_Fortran_COMPILER_SUPPORTS_F90)
+  message(CHECK_START "Checking whether ${CMAKE_Fortran_COMPILER} supports Fortran 90")
+  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompilerF90.f90 "
+    PROGRAM TESTFortran90
+    integer stop ; stop = 1 ; do while ( stop .eq. 0 ) ; end do
+    END PROGRAM TESTFortran90
+")
+  try_compile(CMAKE_Fortran_COMPILER_SUPPORTS_F90 ${CMAKE_BINARY_DIR}
+    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompilerF90.f90
+    OUTPUT_VARIABLE OUTPUT)
+  if(CMAKE_Fortran_COMPILER_SUPPORTS_F90)
+    message(CHECK_PASS "yes")
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+      "Determining if the Fortran compiler supports Fortran 90 passed with "
+      "the following output:\n${OUTPUT}\n\n")
+    set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 1)
+  else()
+    message(CHECK_FAIL "no")
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+      "Determining if the Fortran compiler supports Fortran 90 failed with "
+      "the following output:\n${OUTPUT}\n\n")
+    set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 0)
+  endif()
+  unset(CMAKE_Fortran_COMPILER_SUPPORTS_F90 CACHE)
+endif()
+
+# Re-configure to save learned information.
+configure_file(
+  ${CMAKE_ROOT}/Modules/CMakeFortranCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeFortranCompiler.cmake
+  @ONLY
+  )
+include(${CMAKE_PLATFORM_INFO_DIR}/CMakeFortranCompiler.cmake)
+
+if(CMAKE_Fortran_SIZEOF_DATA_PTR)
+  foreach(f ${CMAKE_Fortran_ABI_FILES})
+    include(${f})
+  endforeach()
+  unset(CMAKE_Fortran_ABI_FILES)
+endif()
diff --git a/share/cmake-3.22/Modules/CMakeTestGNU.c b/share/cmake-3.22/Modules/CMakeTestGNU.c
new file mode 100644
index 0000000..7dcafde
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeTestGNU.c
@@ -0,0 +1,10 @@
+#if defined(__GNUC__) &&                                                      \
+  !(defined(__INTEL_COMPILER) || defined(__INTEL_LLVM_COMPILER))
+void THIS_IS_GNU();
+#endif
+#ifdef __MINGW32__
+void THIS_IS_MINGW();
+#endif
+#ifdef __CYGWIN__
+void THIS_IS_CYGWIN();
+#endif
diff --git a/share/cmake-3.22/Modules/CMakeTestHIPCompiler.cmake b/share/cmake-3.22/Modules/CMakeTestHIPCompiler.cmake
new file mode 100644
index 0000000..ecbfa7f
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeTestHIPCompiler.cmake
@@ -0,0 +1,101 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+if(CMAKE_HIP_COMPILER_FORCED)
+  # The compiler configuration was forced by the user.
+  # Assume the user has configured all compiler information.
+  set(CMAKE_HIP_COMPILER_WORKS TRUE)
+  return()
+endif()
+
+set(__CMAKE_HIP_FLAGS "${CMAKE_HIP_FLAGS}")
+string(APPEND CMAKE_HIP_FLAGS " --cuda-host-only")
+
+include(CMakeTestCompilerCommon)
+
+# work around enforced code signing and / or missing executable target type
+set(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE})
+if(_CMAKE_FEATURE_DETECTION_TARGET_TYPE)
+  set(CMAKE_TRY_COMPILE_TARGET_TYPE ${_CMAKE_FEATURE_DETECTION_TARGET_TYPE})
+endif()
+
+# Remove any cached result from an older CMake version.
+# We now store this in CMakeHIPCompiler.cmake.
+unset(CMAKE_HIP_COMPILER_WORKS CACHE)
+
+# Try to identify the ABI and configure it into CMakeHIPCompiler.cmake
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
+CMAKE_DETERMINE_COMPILER_ABI(HIP ${CMAKE_ROOT}/Modules/CMakeHIPCompilerABI.hip)
+if(CMAKE_HIP_ABI_COMPILED)
+  # The compiler worked so skip dedicated test below.
+  set(CMAKE_HIP_COMPILER_WORKS TRUE)
+  message(STATUS "Check for working HIP compiler: ${CMAKE_HIP_COMPILER} - skipped")
+endif()
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that the selected C++ compiler can actually compile
+# and link the most basic of programs.   If not, a fatal error
+# is set and cmake stops processing commands and will not generate
+# any makefiles or projects.
+if(NOT CMAKE_HIP_COMPILER_WORKS)
+  PrintTestCompilerStatus("HIP")
+  __TestCompiler_setTryCompileTargetType()
+  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testHIPCompiler.hip
+    "#ifndef __HIP__\n"
+    "# error \"The CMAKE_HIP_COMPILER is set to a C/CXX compiler\"\n"
+    "#endif\n"
+    "int main(){return 0;}\n")
+  # Clear result from normal variable.
+  unset(CMAKE_HIP_COMPILER_WORKS)
+  # Puts test result in cache variable.
+  try_compile(CMAKE_HIP_COMPILER_WORKS ${CMAKE_BINARY_DIR}
+    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testHIPCompiler.hip
+    OUTPUT_VARIABLE __CMAKE_HIP_COMPILER_OUTPUT)
+  # Move result from cache to normal variable.
+  set(CMAKE_HIP_COMPILER_WORKS ${CMAKE_HIP_COMPILER_WORKS})
+  unset(CMAKE_HIP_COMPILER_WORKS CACHE)
+  __TestCompiler_restoreTryCompileTargetType()
+  if(NOT CMAKE_HIP_COMPILER_WORKS)
+    PrintTestCompilerResult(CHECK_FAIL "broken")
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+      "Determining if the HIP compiler works failed with "
+      "the following output:\n${__CMAKE_HIP_COMPILER_OUTPUT}\n\n")
+    string(REPLACE "\n" "\n  " _output "${__CMAKE_HIP_COMPILER_OUTPUT}")
+    message(FATAL_ERROR "The HIP compiler\n  \"${CMAKE_HIP_COMPILER}\"\n"
+      "is not able to compile a simple test program.\nIt fails "
+      "with the following output:\n  ${_output}\n\n"
+      "CMake will not be able to correctly generate this project.")
+  endif()
+  PrintTestCompilerResult(CHECK_PASS "works")
+  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+    "Determining if the HIP compiler works passed with "
+    "the following output:\n${__CMAKE_HIP_COMPILER_OUTPUT}\n\n")
+endif()
+
+set(CMAKE_HIP_FLAGS "${__CMAKE_HIP_FLAGS}")
+unset(__CMAKE_HIP_FLAGS)
+
+
+# Try to identify the compiler features
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompileFeatures.cmake)
+CMAKE_DETERMINE_COMPILE_FEATURES(HIP)
+
+# Re-configure to save learned information.
+configure_file(
+  ${CMAKE_ROOT}/Modules/CMakeHIPCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeHIPCompiler.cmake
+  @ONLY
+  )
+include(${CMAKE_PLATFORM_INFO_DIR}/CMakeHIPCompiler.cmake)
+
+if(CMAKE_HIP_SIZEOF_DATA_PTR)
+  foreach(f ${CMAKE_HIP_ABI_FILES})
+    include(${f})
+  endforeach()
+  unset(CMAKE_HIP_ABI_FILES)
+endif()
+
+set(CMAKE_TRY_COMPILE_TARGET_TYPE ${__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE})
+unset(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE)
+unset(__CMAKE_HIP_COMPILER_OUTPUT)
diff --git a/share/cmake-3.22/Modules/CMakeTestISPCCompiler.cmake b/share/cmake-3.22/Modules/CMakeTestISPCCompiler.cmake
new file mode 100644
index 0000000..6b16393
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeTestISPCCompiler.cmake
@@ -0,0 +1,43 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+
+if(CMAKE_ISPC_COMPILER_FORCED)
+  # The compiler configuration was forced by the user.
+  # Assume the user has configured all compiler information.
+  set(CMAKE_ISPC_COMPILER_WORKS TRUE)
+  return()
+endif()
+
+include(CMakeTestCompilerCommon)
+
+# Make sure we try to compile as a STATIC_LIBRARY
+set(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE})
+set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+
+# # Try to identify the ABI and configure it into CMakeISPCCompiler.cmake
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
+CMAKE_DETERMINE_COMPILER_ABI(ISPC ${CMAKE_ROOT}/Modules/CMakeISPCCompilerABI.ispc)
+if(CMAKE_ISPC_ABI_COMPILED)
+#   # The compiler worked so skip dedicated test below.
+  set(CMAKE_ISPC_COMPILER_WORKS TRUE)
+  message(STATUS "Check for working ISPC compiler: ${CMAKE_ISPC_COMPILER} - skipped")
+endif()
+
+# Re-configure to save learned information.
+configure_file(
+  ${CMAKE_ROOT}/Modules/CMakeISPCCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeISPCCompiler.cmake
+  @ONLY
+  )
+include(${CMAKE_PLATFORM_INFO_DIR}/CMakeISPCCompiler.cmake)
+
+if(CMAKE_ISPC_SIZEOF_DATA_PTR)
+  foreach(f ${CMAKE_ISPC_ABI_FILES})
+    include(${f})
+  endforeach()
+  unset(CMAKE_ISPC_ABI_FILES)
+endif()
+
+set(CMAKE_TRY_COMPILE_TARGET_TYPE ${__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE})
diff --git a/share/cmake-3.18/Modules/CMakeTestJavaCompiler.cmake b/share/cmake-3.22/Modules/CMakeTestJavaCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeTestJavaCompiler.cmake
rename to share/cmake-3.22/Modules/CMakeTestJavaCompiler.cmake
diff --git a/share/cmake-3.22/Modules/CMakeTestOBJCCompiler.cmake b/share/cmake-3.22/Modules/CMakeTestOBJCCompiler.cmake
new file mode 100644
index 0000000..20d1f8b
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeTestOBJCCompiler.cmake
@@ -0,0 +1,98 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+if(CMAKE_OBJC_COMPILER_FORCED)
+  # The compiler configuration was forced by the user.
+  # Assume the user has configured all compiler information.
+  set(CMAKE_OBJC_COMPILER_WORKS TRUE)
+  return()
+endif()
+
+include(CMakeTestCompilerCommon)
+
+# work around enforced code signing and / or missing executable target type
+set(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE})
+if(_CMAKE_FEATURE_DETECTION_TARGET_TYPE)
+  set(CMAKE_TRY_COMPILE_TARGET_TYPE ${_CMAKE_FEATURE_DETECTION_TARGET_TYPE})
+endif()
+
+# Remove any cached result from an older CMake version.
+# We now store this in CMakeCCompiler.cmake.
+unset(CMAKE_OBJC_COMPILER_WORKS CACHE)
+
+# Try to identify the ABI and configure it into CMakeOBJCCompiler.cmake
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
+CMAKE_DETERMINE_COMPILER_ABI(OBJC ${CMAKE_ROOT}/Modules/CMakeOBJCCompilerABI.m)
+if(CMAKE_OBJC_ABI_COMPILED)
+  # The compiler worked so skip dedicated test below.
+  set(CMAKE_OBJC_COMPILER_WORKS TRUE)
+  message(STATUS "Check for working OBJC compiler: ${CMAKE_OBJC_COMPILER} - skipped")
+endif()
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that that selected Objective-C compiler can actually compile
+# and link the most basic of programs.   If not, a fatal error
+# is set and cmake stops processing commands and will not generate
+# any makefiles or projects.
+if(NOT CMAKE_OBJC_COMPILER_WORKS)
+  PrintTestCompilerStatus("OBJC")
+  __TestCompiler_setTryCompileTargetType()
+  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testOBJCCompiler.m
+    "#ifdef __cplusplus\n"
+    "# error \"The CMAKE_OBJC_COMPILER is set to a C++ compiler\"\n"
+    "#endif\n"
+    "#ifndef __OBJC__\n"
+    "# error \"The CMAKE_OBJC_COMPILER is not an Objective-C compiler\"\n"
+    "#endif\n"
+    "int main(int argc, char* argv[])\n"
+    "{ (void)argv; return argc-1;}\n")
+  # Clear result from normal variable.
+  unset(CMAKE_OBJC_COMPILER_WORKS)
+  # Puts test result in cache variable.
+  try_compile(CMAKE_OBJC_COMPILER_WORKS ${CMAKE_BINARY_DIR}
+    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testOBJCCompiler.m
+    OUTPUT_VARIABLE __CMAKE_OBJC_COMPILER_OUTPUT)
+  # Move result from cache to normal variable.
+  set(CMAKE_OBJC_COMPILER_WORKS ${CMAKE_OBJC_COMPILER_WORKS})
+  unset(CMAKE_OBJC_COMPILER_WORKS CACHE)
+  __TestCompiler_restoreTryCompileTargetType()
+  if(NOT CMAKE_OBJC_COMPILER_WORKS)
+    PrintTestCompilerResult(CHECK_FAIL "broken")
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+      "Determining if the Objective-C compiler works failed with "
+      "the following output:\n${__CMAKE_OBJC_COMPILER_OUTPUT}\n\n")
+    string(REPLACE "\n" "\n  " _output "${__CMAKE_OBJC_COMPILER_OUTPUT}")
+    message(FATAL_ERROR "The Objective-C compiler\n  \"${CMAKE_OBJC_COMPILER}\"\n"
+      "is not able to compile a simple test program.\nIt fails "
+      "with the following output:\n  ${_output}\n\n"
+      "CMake will not be able to correctly generate this project.")
+  endif()
+  PrintTestCompilerResult(CHECK_PASS "works")
+  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+    "Determining if the Objective-C compiler works passed with "
+    "the following output:\n${__CMAKE_OBJC_COMPILER_OUTPUT}\n\n")
+endif()
+
+# Try to identify the compiler features
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompileFeatures.cmake)
+CMAKE_DETERMINE_COMPILE_FEATURES(OBJC)
+
+# Re-configure to save learned information.
+configure_file(
+  ${CMAKE_ROOT}/Modules/CMakeOBJCCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeOBJCCompiler.cmake
+  @ONLY
+  )
+include(${CMAKE_PLATFORM_INFO_DIR}/CMakeOBJCCompiler.cmake)
+
+if(CMAKE_OBJC_SIZEOF_DATA_PTR)
+  foreach(f ${CMAKE_OBJC_ABI_FILES})
+    include(${f})
+  endforeach()
+  unset(CMAKE_OBJC_ABI_FILES)
+endif()
+
+set(CMAKE_TRY_COMPILE_TARGET_TYPE ${__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE})
+unset(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE)
+unset(__CMAKE_OBJC_COMPILER_OUTPUT)
diff --git a/share/cmake-3.22/Modules/CMakeTestOBJCXXCompiler.cmake b/share/cmake-3.22/Modules/CMakeTestOBJCXXCompiler.cmake
new file mode 100644
index 0000000..4f7185f
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeTestOBJCXXCompiler.cmake
@@ -0,0 +1,97 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+if(CMAKE_OBJCXX_COMPILER_FORCED)
+  # The compiler configuration was forced by the user.
+  # Assume the user has configured all compiler information.
+  set(CMAKE_OBJCXX_COMPILER_WORKS TRUE)
+  return()
+endif()
+
+include(CMakeTestCompilerCommon)
+
+# work around enforced code signing and / or missing executable target type
+set(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE})
+if(_CMAKE_FEATURE_DETECTION_TARGET_TYPE)
+  set(CMAKE_TRY_COMPILE_TARGET_TYPE ${_CMAKE_FEATURE_DETECTION_TARGET_TYPE})
+endif()
+
+# Remove any cached result from an older CMake version.
+# We now store this in CMakeOBJCXXCompiler.cmake.
+unset(CMAKE_OBJCXX_COMPILER_WORKS CACHE)
+
+# Try to identify the ABI and configure it into CMakeOBJCXXCompiler.cmake
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
+CMAKE_DETERMINE_COMPILER_ABI(OBJCXX ${CMAKE_ROOT}/Modules/CMakeOBJCXXCompilerABI.mm)
+if(CMAKE_OBJCXX_ABI_COMPILED)
+  # The compiler worked so skip dedicated test below.
+  set(CMAKE_OBJCXX_COMPILER_WORKS TRUE)
+  message(STATUS "Check for working OBJCXX compiler: ${CMAKE_OBJCXX_COMPILER} - skipped")
+endif()
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that the selected Objective-C++ compiler can actually compile
+# and link the most basic of programs.   If not, a fatal error
+# is set and cmake stops processing commands and will not generate
+# any makefiles or projects.
+if(NOT CMAKE_OBJCXX_COMPILER_WORKS)
+  PrintTestCompilerStatus("OBJCXX")
+  __TestCompiler_setTryCompileTargetType()
+  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testOBJCXXCompiler.mm
+    "#ifndef __cplusplus\n"
+    "# error \"The CMAKE_OBJCXX_COMPILER is set to a C compiler\"\n"
+    "#endif\n"
+    "#ifndef __OBJC__\n"
+    "# error \"The CMAKE_OBJCXX_COMPILER is not an Objective-C++ compiler\"\n"
+    "#endif\n"
+    "int main(){return 0;}\n")
+  # Clear result from normal variable.
+  unset(CMAKE_OBJCXX_COMPILER_WORKS)
+  # Puts test result in cache variable.
+  try_compile(CMAKE_OBJCXX_COMPILER_WORKS ${CMAKE_BINARY_DIR}
+    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testOBJCXXCompiler.mm
+    OUTPUT_VARIABLE __CMAKE_OBJCXX_COMPILER_OUTPUT)
+  # Move result from cache to normal variable.
+  set(CMAKE_OBJCXX_COMPILER_WORKS ${CMAKE_OBJCXX_COMPILER_WORKS})
+  unset(CMAKE_OBJCXX_COMPILER_WORKS CACHE)
+  __TestCompiler_restoreTryCompileTargetType()
+  if(NOT CMAKE_OBJCXX_COMPILER_WORKS)
+    PrintTestCompilerResult(CHECK_FAIL "broken")
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+      "Determining if the Objective-C++ compiler works failed with "
+      "the following output:\n${__CMAKE_OBJCXX_COMPILER_OUTPUT}\n\n")
+    string(REPLACE "\n" "\n  " _output "${__CMAKE_OBJCXX_COMPILER_OUTPUT}")
+    message(FATAL_ERROR "The Objective-C++ compiler\n  \"${CMAKE_OBJCXX_COMPILER}\"\n"
+      "is not able to compile a simple test program.\nIt fails "
+      "with the following output:\n  ${_output}\n\n"
+      "CMake will not be able to correctly generate this project.")
+  endif()
+  PrintTestCompilerResult(CHECK_PASS "works")
+  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+    "Determining if the Objective-C++ compiler works passed with "
+    "the following output:\n${__CMAKE_OBJCXX_COMPILER_OUTPUT}\n\n")
+endif()
+
+# Try to identify the compiler features
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompileFeatures.cmake)
+CMAKE_DETERMINE_COMPILE_FEATURES(OBJCXX)
+
+# Re-configure to save learned information.
+configure_file(
+  ${CMAKE_ROOT}/Modules/CMakeOBJCXXCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeOBJCXXCompiler.cmake
+  @ONLY
+  )
+include(${CMAKE_PLATFORM_INFO_DIR}/CMakeOBJCXXCompiler.cmake)
+
+if(CMAKE_OBJCXX_SIZEOF_DATA_PTR)
+  foreach(f ${CMAKE_OBJCXX_ABI_FILES})
+    include(${f})
+  endforeach()
+  unset(CMAKE_OBJCXX_ABI_FILES)
+endif()
+
+set(CMAKE_TRY_COMPILE_TARGET_TYPE ${__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE})
+unset(__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE)
+unset(__CMAKE_OBJCXX_COMPILER_OUTPUT)
diff --git a/share/cmake-3.18/Modules/CMakeTestRCCompiler.cmake b/share/cmake-3.22/Modules/CMakeTestRCCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeTestRCCompiler.cmake
rename to share/cmake-3.22/Modules/CMakeTestRCCompiler.cmake
diff --git a/share/cmake-3.22/Modules/CMakeTestSwiftCompiler.cmake b/share/cmake-3.22/Modules/CMakeTestSwiftCompiler.cmake
new file mode 100644
index 0000000..2f2546f
--- /dev/null
+++ b/share/cmake-3.22/Modules/CMakeTestSwiftCompiler.cmake
@@ -0,0 +1,67 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+if(CMAKE_Swift_COMPILER_FORCED)
+  # The compiler configuration was forced by the user.
+  # Assume the user has configured all compiler information.
+  set(CMAKE_Swift_COMPILER_WORKS TRUE)
+  return()
+endif()
+
+include(CMakeTestCompilerCommon)
+
+# Remove any cached result from an older CMake version.
+# We now store this in CMakeSwiftCompiler.cmake.
+unset(CMAKE_Swift_COMPILER_WORKS CACHE)
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that the selected C++ compiler can actually compile
+# and link the most basic of programs.   If not, a fatal error
+# is set and cmake stops processing commands and will not generate
+# any makefiles or projects.
+if(NOT CMAKE_Swift_COMPILER_WORKS)
+  PrintTestCompilerStatus("Swift")
+  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/main.swift
+    "print(\"CMake\")\n")
+  # Clear result from normal variable.
+  unset(CMAKE_Swift_COMPILER_WORKS)
+  # Puts test result in cache variable.
+  try_compile(CMAKE_Swift_COMPILER_WORKS ${CMAKE_BINARY_DIR}
+    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/main.swift
+    OUTPUT_VARIABLE __CMAKE_Swift_COMPILER_OUTPUT)
+  # Move result from cache to normal variable.
+  set(CMAKE_Swift_COMPILER_WORKS ${CMAKE_Swift_COMPILER_WORKS})
+  unset(CMAKE_Swift_COMPILER_WORKS CACHE)
+  set(Swift_TEST_WAS_RUN 1)
+endif()
+
+if(NOT CMAKE_Swift_COMPILER_WORKS)
+  PrintTestCompilerResult(CHECK_FAIL "broken")
+  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+    "Determining if the Swift compiler works failed with "
+    "the following output:\n${__CMAKE_Swift_COMPILER_OUTPUT}\n\n")
+  string(REPLACE "\n" "\n  " _output "${__CMAKE_Swift_COMPILER_OUTPUT}")
+  message(FATAL_ERROR "The Swift compiler\n  \"${CMAKE_Swift_COMPILER}\"\n"
+    "is not able to compile a simple test program.\nIt fails "
+    "with the following output:\n  ${_output}\n\n"
+    "CMake will not be able to correctly generate this project.")
+else()
+  if(Swift_TEST_WAS_RUN)
+    PrintTestCompilerResult(CHECK_PASS "works")
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+      "Determining if the Swift compiler works passed with "
+      "the following output:\n${__CMAKE_Swift_COMPILER_OUTPUT}\n\n")
+  endif()
+
+  # Unlike C and CXX we do not yet detect any information about the Swift ABI.
+  # However, one of the steps done for C and CXX as part of that detection is
+  # to initialize the implicit include directories.  That is relevant here.
+  set(CMAKE_Swift_IMPLICIT_INCLUDE_DIRECTORIES "${_CMAKE_Swift_IMPLICIT_INCLUDE_DIRECTORIES_INIT}")
+
+  # Re-configure to save learned information.
+  configure_file(${CMAKE_ROOT}/Modules/CMakeSwiftCompiler.cmake.in
+                 ${CMAKE_PLATFORM_INFO_DIR}/CMakeSwiftCompiler.cmake @ONLY)
+  include(${CMAKE_PLATFORM_INFO_DIR}/CMakeSwiftCompiler.cmake)
+endif()
+
+unset(__CMAKE_Swift_COMPILER_OUTPUT)
diff --git a/share/cmake-3.18/Modules/CMakeUnixFindMake.cmake b/share/cmake-3.22/Modules/CMakeUnixFindMake.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeUnixFindMake.cmake
rename to share/cmake-3.22/Modules/CMakeUnixFindMake.cmake
diff --git a/share/cmake-3.18/Modules/CMakeVerifyManifest.cmake b/share/cmake-3.22/Modules/CMakeVerifyManifest.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CMakeVerifyManifest.cmake
rename to share/cmake-3.22/Modules/CMakeVerifyManifest.cmake
diff --git a/share/cmake-3.22/Modules/CPack.cmake b/share/cmake-3.22/Modules/CPack.cmake
new file mode 100644
index 0000000..373a707
--- /dev/null
+++ b/share/cmake-3.22/Modules/CPack.cmake
@@ -0,0 +1,884 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CPack
+-----
+
+Configure generators for binary installers and source packages.
+
+Introduction
+^^^^^^^^^^^^
+
+The CPack module generates the configuration files ``CPackConfig.cmake``
+and ``CPackSourceConfig.cmake``. They are intended for use in a subsequent
+run of  the :manual:`cpack <cpack(1)>` program where they steer the generation
+of installers or/and source packages.
+
+Depending on the CMake generator, the CPack module may also add two new build
+targets, ``package`` and ``package_source``. See the `packaging targets`_
+section below for details.
+
+The generated binary installers will contain all files that have been installed
+via CMake's :command:`install` command (and the deprecated commands
+:command:`install_files`, :command:`install_programs`, and
+:command:`install_targets`). Note that the ``DESTINATION`` option of the
+:command:`install` command must be a relative path; otherwise installed files
+are ignored by CPack.
+
+Certain kinds of binary installers can be configured such that users can select
+individual application components to install.  See the :module:`CPackComponent`
+module for further details.
+
+Source packages (configured through ``CPackSourceConfig.cmake`` and generated
+by the :cpack_gen:`CPack Archive Generator`) will contain all source files in
+the project directory except those specified in
+:variable:`CPACK_SOURCE_IGNORE_FILES`.
+
+CPack Generators
+^^^^^^^^^^^^^^^^
+
+The :variable:`CPACK_GENERATOR` variable has different meanings in different
+contexts.  In a ``CMakeLists.txt`` file, :variable:`CPACK_GENERATOR` is a
+*list of generators*: and when :manual:`cpack <cpack(1)>` is run with no other
+arguments, it will iterate over that list and produce one package for each
+generator.  In a :variable:`CPACK_PROJECT_CONFIG_FILE`,
+:variable:`CPACK_GENERATOR` is a *string naming a single generator*.  If you
+need per-cpack-generator logic to control *other* cpack settings, then you
+need a :variable:`CPACK_PROJECT_CONFIG_FILE`.
+If set, the :variable:`CPACK_PROJECT_CONFIG_FILE` is included automatically
+on a per-generator basis.  It only need contain overrides.
+
+Here's how it works:
+
+* :manual:`cpack <cpack(1)>` runs
+* it includes ``CPackConfig.cmake``
+* it iterates over the generators given by the ``-G`` command line option,
+  or if no such option was specified, over the list of generators given by
+  the :variable:`CPACK_GENERATOR` variable set in the ``CPackConfig.cmake``
+  input file.
+* foreach generator, it then
+
+  - sets :variable:`CPACK_GENERATOR` to the one currently being iterated
+  - includes the :variable:`CPACK_PROJECT_CONFIG_FILE`
+  - produces the package for that generator
+
+This is the key: For each generator listed in :variable:`CPACK_GENERATOR` in
+``CPackConfig.cmake``, cpack will *reset* :variable:`CPACK_GENERATOR`
+internally to *the one currently being used* and then include the
+:variable:`CPACK_PROJECT_CONFIG_FILE`.
+
+For a list of available generators, see :manual:`cpack-generators(7)`.
+
+.. _`packaging targets`:
+
+Targets package and package_source
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If CMake is run with the Makefile, Ninja, or Xcode generator, then
+``include(CPack)`` generates a target ``package``. This makes it possible
+to build a binary installer from CMake, Make, or Ninja: Instead of ``cpack``,
+one may call ``cmake --build . --target package`` or ``make package`` or
+``ninja package``. The VS generator creates an uppercase target ``PACKAGE``.
+
+If CMake is run with the Makefile or Ninja generator, then ``include(CPack)``
+also generates a target ``package_source``. To build a source package,
+instead of ``cpack -G TGZ --config CPackSourceConfig.cmake`` one may call
+``cmake --build . --target package_source``, ``make package_source``,
+or ``ninja package_source``.
+
+
+Variables common to all CPack Generators
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Before including this CPack module in your ``CMakeLists.txt`` file, there
+are a variety of variables that can be set to customize the resulting
+installers.  The most commonly-used variables are:
+
+.. variable:: CPACK_PACKAGE_NAME
+
+  The name of the package (or application).  If not specified, it defaults to
+  the project name.
+
+.. variable:: CPACK_PACKAGE_VENDOR
+
+  The name of the package vendor. (e.g., "Kitware").  The default is "Humanity".
+
+.. variable:: CPACK_PACKAGE_DIRECTORY
+
+  The directory in which CPack is doing its packaging.  If it is not set
+  then this will default (internally) to the build dir.  This variable may
+  be defined in a CPack config file or from the :manual:`cpack <cpack(1)>`
+  command line option ``-B``.  If set, the command line option overrides the
+  value found in the config file.
+
+.. variable:: CPACK_PACKAGE_VERSION_MAJOR
+
+  Package major version.  This variable will always be set, but its default
+  value depends on whether or not version details were given to the
+  :command:`project` command in the top level CMakeLists.txt file.  If version
+  details were given, the default value will be
+  :variable:`CMAKE_PROJECT_VERSION_MAJOR`.  If no version details were given,
+  a default version of 0.1.1 will be assumed, leading to
+  ``CPACK_PACKAGE_VERSION_MAJOR`` having a default value of 0.
+
+.. variable:: CPACK_PACKAGE_VERSION_MINOR
+
+  Package minor version.  The default value is determined based on whether or
+  not version details were given to the :command:`project` command in the top
+  level CMakeLists.txt file.  If version details were given, the default
+  value will be :variable:`CMAKE_PROJECT_VERSION_MINOR`, but if no minor
+  version component was specified then ``CPACK_PACKAGE_VERSION_MINOR`` will be
+  left unset.  If no project version was given at all, a default version of
+  0.1.1 will be assumed, leading to ``CPACK_PACKAGE_VERSION_MINOR`` having a
+  default value of 1.
+
+.. variable:: CPACK_PACKAGE_VERSION_PATCH
+
+  Package patch version.  The default value is determined based on whether or
+  not version details were given to the :command:`project` command in the top
+  level CMakeLists.txt file.  If version details were given, the default
+  value will be :variable:`CMAKE_PROJECT_VERSION_PATCH`, but if no patch
+  version component was specified then ``CPACK_PACKAGE_VERSION_PATCH`` will be
+  left unset.  If no project version was given at all, a default version of
+  0.1.1 will be assumed, leading to ``CPACK_PACKAGE_VERSION_PATCH`` having a
+  default value of 1.
+
+.. variable:: CPACK_PACKAGE_DESCRIPTION
+
+  A description of the project, used in places such as the introduction
+  screen of CPack-generated Windows installers.  If not set, the value of
+  this variable is populated from the file named by
+  :variable:`CPACK_PACKAGE_DESCRIPTION_FILE`.
+
+.. variable:: CPACK_PACKAGE_DESCRIPTION_FILE
+
+  A text file used to describe the project when
+  :variable:`CPACK_PACKAGE_DESCRIPTION` is not explicitly set.  The default
+  value for ``CPACK_PACKAGE_DESCRIPTION_FILE`` points to a built-in template
+  file ``Templates/CPack.GenericDescription.txt``.
+
+.. variable:: CPACK_PACKAGE_DESCRIPTION_SUMMARY
+
+  Short description of the project (only a few words).  If the
+  :variable:`CMAKE_PROJECT_DESCRIPTION` variable is set, it is used as the
+  default value, otherwise the default will be a string generated by CMake
+  based on :variable:`CMAKE_PROJECT_NAME`.
+
+.. variable:: CPACK_PACKAGE_HOMEPAGE_URL
+
+  Project homepage URL.  The default value is taken from the
+  :variable:`CMAKE_PROJECT_HOMEPAGE_URL` variable, which is set by the top
+  level :command:`project` command, or else the default will be empty if no
+  URL was provided to :command:`project`.
+
+.. variable:: CPACK_PACKAGE_FILE_NAME
+
+  The name of the package file to generate, not including the
+  extension.  For example, ``cmake-2.6.1-Linux-i686``.  The default value
+  is::
+
+    ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}
+
+.. variable:: CPACK_PACKAGE_INSTALL_DIRECTORY
+
+  Installation directory on the target system. This may be used by some
+  CPack generators like NSIS to create an installation directory e.g.,
+  "CMake 2.5" below the installation prefix.  All installed elements will be
+  put inside this directory.
+
+.. variable:: CPACK_PACKAGE_ICON
+
+  A branding image that will be displayed inside the installer (used by GUI
+  installers).
+
+.. variable:: CPACK_PACKAGE_CHECKSUM
+
+  .. versionadded:: 3.7
+
+  An algorithm that will be used to generate an additional file with the
+  checksum of the package.  The output file name will be::
+
+    ${CPACK_PACKAGE_FILE_NAME}.${CPACK_PACKAGE_CHECKSUM}
+
+  Supported algorithms are those listed by the
+  :ref:`string(\<HASH\>) <Supported Hash Algorithms>` command.
+
+.. variable:: CPACK_PROJECT_CONFIG_FILE
+
+  CPack-time project CPack configuration file.  This file is included at cpack
+  time, once per generator after CPack has set :variable:`CPACK_GENERATOR`
+  to the actual generator being used.  It allows per-generator setting of
+  ``CPACK_*`` variables at cpack time.
+
+.. variable:: CPACK_RESOURCE_FILE_LICENSE
+
+  License to be embedded in the installer.  It will typically be displayed
+  to the user by the produced installer (often with an explicit "Accept"
+  button, for graphical installers) prior to installation.  This license
+  file is NOT added to the installed files but is used by some CPack generators
+  like NSIS.  If you want to install a license file (may be the same as this
+  one) along with your project, you must add an appropriate CMake
+  :command:`install` command in your ``CMakeLists.txt``.
+
+.. variable:: CPACK_RESOURCE_FILE_README
+
+  ReadMe file to be embedded in the installer.  It typically describes in
+  some detail the purpose of the project during the installation.  Not all
+  CPack generators use this file.
+
+.. variable:: CPACK_RESOURCE_FILE_WELCOME
+
+  Welcome file to be embedded in the installer.  It welcomes users to this
+  installer.  Typically used in the graphical installers on Windows and Mac
+  OS X.
+
+.. variable:: CPACK_MONOLITHIC_INSTALL
+
+  Disables the component-based installation mechanism.  When set, the
+  component specification is ignored and all installed items are put in a
+  single "MONOLITHIC" package.  Some CPack generators do monolithic
+  packaging by default and may be asked to do component packaging by
+  setting ``CPACK_<GENNAME>_COMPONENT_INSTALL`` to ``TRUE``.
+
+.. variable:: CPACK_GENERATOR
+
+  List of CPack generators to use.  If not specified, CPack will create a
+  set of options following the naming pattern
+  :variable:`CPACK_BINARY_<GENNAME>` (e.g. ``CPACK_BINARY_NSIS``) allowing
+  the user to enable/disable individual generators.  If the ``-G`` option is
+  given on the :manual:`cpack <cpack(1)>` command line, it will override this
+  variable and any ``CPACK_BINARY_<GENNAME>`` options.
+
+.. variable:: CPACK_OUTPUT_CONFIG_FILE
+
+  The name of the CPack binary configuration file.  This file is the CPack
+  configuration generated by the CPack module for binary installers.
+  Defaults to ``CPackConfig.cmake``.
+
+.. variable:: CPACK_PACKAGE_EXECUTABLES
+
+  Lists each of the executables and associated text label to be used to
+  create Start Menu shortcuts.  For example, setting this to the list
+  ``ccmake;CMake`` will create a shortcut named "CMake" that will execute the
+  installed executable ``ccmake``.  Not all CPack generators use it (at least
+  NSIS, WIX and OSXX11 do).
+
+.. variable:: CPACK_STRIP_FILES
+
+  List of files to be stripped.  Starting with CMake 2.6.0,
+  ``CPACK_STRIP_FILES`` will be a boolean variable which enables
+  stripping of all files (a list of files evaluates to ``TRUE`` in CMake,
+  so this change is compatible).
+
+.. variable:: CPACK_VERBATIM_VARIABLES
+
+  .. versionadded:: 3.4
+
+  If set to ``TRUE``, values of variables prefixed with ``CPACK_`` will be
+  escaped before being written to the configuration files, so that the cpack
+  program receives them exactly as they were specified.  If not, characters
+  like quotes and backslashes can cause parsing errors or alter the value
+  received by the cpack program.  Defaults to ``FALSE`` for backwards
+  compatibility.
+
+.. variable:: CPACK_THREADS
+
+  .. versionadded:: 3.20
+
+  Number of threads to use when performing parallelized operations, such
+  as compressing the installer package.
+
+  Some compression methods used by CPack generators such as Debian or Archive
+  may take advantage of multiple CPU cores to speed up compression.
+  ``CPACK_THREADS`` can be set to specify how many threads will be
+  used for compression.
+
+  A positive integer can be used to specify an exact desired thread count.
+
+  When given a negative integer CPack will use the absolute value
+  as the upper limit but may choose a lower value based on
+  the available hardware concurrency.
+
+  Given 0 CPack will try to use all available CPU cores.
+
+  By default ``CPACK_THREADS`` is set to ``1``.
+
+  Currently only ``xz`` compression *may* take advantage of multiple cores.
+  Other compression methods ignore this value and use only one thread.
+
+  .. versionadded:: 3.21
+
+    Official CMake binaries available on ``cmake.org`` now ship
+    with a ``liblzma`` that supports parallel compression.
+    Older versions did not.
+
+Variables for Source Package Generators
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The following CPack variables are specific to source packages, and
+will not affect binary packages:
+
+.. variable:: CPACK_SOURCE_PACKAGE_FILE_NAME
+
+  The name of the source package.  For example ``cmake-2.6.1``.
+
+.. variable:: CPACK_SOURCE_STRIP_FILES
+
+  List of files in the source tree that will be stripped.  Starting with
+  CMake 2.6.0, ``CPACK_SOURCE_STRIP_FILES`` will be a boolean
+  variable which enables stripping of all files (a list of files evaluates
+  to ``TRUE`` in CMake, so this change is compatible).
+
+.. variable:: CPACK_SOURCE_GENERATOR
+
+  List of generators used for the source packages.  As with
+  :variable:`CPACK_GENERATOR`, if this is not specified then CPack will
+  create a set of options (e.g. ``CPACK_SOURCE_ZIP``) allowing
+  users to select which packages will be generated.
+
+.. variable:: CPACK_SOURCE_OUTPUT_CONFIG_FILE
+
+  The name of the CPack source configuration file.  This file is the CPack
+  configuration generated by the CPack module for source installers.
+  Defaults to ``CPackSourceConfig.cmake``.
+
+.. variable:: CPACK_SOURCE_IGNORE_FILES
+
+  Pattern of files in the source tree that won't be packaged when building
+  a source package.  This is a list of regular expression patterns (that
+  must be properly escaped), e.g.,
+  ``/CVS/;/\\.svn/;\\.swp$;\\.#;/#;.*~;cscope.*``
+
+Variables for Advanced Use
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The following variables are for advanced uses of CPack:
+
+.. variable:: CPACK_CMAKE_GENERATOR
+
+  What CMake generator should be used if the project is a CMake
+  project.  Defaults to the value of :variable:`CMAKE_GENERATOR`.  Few users
+  will want to change this setting.
+
+.. variable:: CPACK_INSTALL_CMAKE_PROJECTS
+
+  List of four values that specify what project to install.  The four values
+  are: Build directory, Project Name, Project Component, Directory.  If
+  omitted, CPack will build an installer that installs everything.
+
+.. variable:: CPACK_SYSTEM_NAME
+
+  System name, defaults to the value of :variable:`CMAKE_SYSTEM_NAME`,
+  except on Windows where it will be ``win32`` or ``win64``.
+
+.. variable:: CPACK_PACKAGE_VERSION
+
+  Package full version, used internally.  By default, this is built from
+  :variable:`CPACK_PACKAGE_VERSION_MAJOR`,
+  :variable:`CPACK_PACKAGE_VERSION_MINOR`, and
+  :variable:`CPACK_PACKAGE_VERSION_PATCH`.
+
+.. variable:: CPACK_TOPLEVEL_TAG
+
+  Directory for the installed files.
+
+.. variable:: CPACK_INSTALL_COMMANDS
+
+  Extra commands to install components.  The environment variable
+  ``CMAKE_INSTALL_PREFIX`` is set to the temporary install directory
+  during execution.
+
+.. variable:: CPACK_INSTALL_SCRIPTS
+
+  .. versionadded:: 3.16
+
+  Extra CMake scripts executed by CPack during its local staging
+  installation.  They are executed before installing the files to be packaged.
+  The scripts are not called by a standalone install (e.g.: ``make install``).
+  For every script, the following variables will be set:
+  :variable:`CMAKE_CURRENT_SOURCE_DIR`, :variable:`CMAKE_CURRENT_BINARY_DIR`
+  and :variable:`CMAKE_INSTALL_PREFIX` (which is set to the staging install
+  directory).  The singular form ``CMAKE_INSTALL_SCRIPT`` is supported as
+  an alternative variable for historical reasons, but its value is ignored if
+  ``CMAKE_INSTALL_SCRIPTS`` is set and a warning will be issued.
+
+  See also :variable:`CPACK_PRE_BUILD_SCRIPTS` and
+  :variable:`CPACK_POST_BUILD_SCRIPTS` which can be used to specify scripts
+  to be executed later in the packaging process.
+
+.. variable:: CPACK_PRE_BUILD_SCRIPTS
+
+  .. versionadded:: 3.19
+
+  List of CMake scripts to execute after CPack has installed the files to
+  be packaged into a staging directory and before producing the package(s)
+  from those files. See also :variable:`CPACK_INSTALL_SCRIPTS` and
+  :variable:`CPACK_POST_BUILD_SCRIPTS`.
+
+.. variable:: CPACK_POST_BUILD_SCRIPTS
+
+  .. versionadded:: 3.19
+
+  List of CMake scripts to execute after CPack has produced the resultant
+  packages and before copying them back to the build directory.
+  See also :variable:`CPACK_INSTALL_SCRIPTS`,
+  :variable:`CPACK_PRE_BUILD_SCRIPTS` and :variable:`CPACK_PACKAGE_FILES`.
+
+.. variable:: CPACK_PACKAGE_FILES
+
+  .. versionadded:: 3.19
+
+  List of package files created in the staging directory, with each file
+  provided as a full absolute path.  This variable is populated by CPack
+  just before invoking the post-build scripts listed in
+  :variable:`CPACK_POST_BUILD_SCRIPTS`.  It is the preferred way for the
+  post-build scripts to know the set of package files to operate on.
+  Projects should not try to set this variable themselves.
+
+.. variable:: CPACK_INSTALLED_DIRECTORIES
+
+  Extra directories to install.
+
+.. variable:: CPACK_PACKAGE_INSTALL_REGISTRY_KEY
+
+  Registry key used when installing this project.  This is only used by
+  installers for Windows.  The default value is based on the installation
+  directory.
+
+.. variable:: CPACK_CREATE_DESKTOP_LINKS
+
+  List of desktop links to create.  Each desktop link requires a
+  corresponding start menu shortcut as created by
+  :variable:`CPACK_PACKAGE_EXECUTABLES`.
+
+.. variable:: CPACK_BINARY_<GENNAME>
+
+  CPack generated options for binary generators.  The ``CPack.cmake`` module
+  generates (when :variable:`CPACK_GENERATOR` is not set) a set of CMake
+  options (see CMake :command:`option` command) which may then be used to
+  select the CPack generator(s) to be used when building the ``package``
+  target or when running :manual:`cpack <cpack(1)>` without the ``-G`` option.
+
+#]=======================================================================]
+
+# Define this var in order to avoid (or warn) concerning multiple inclusion
+if(CPack_CMake_INCLUDED)
+  message(WARNING "CPack.cmake has already been included!!")
+else()
+  set(CPack_CMake_INCLUDED 1)
+endif()
+
+# Pick a configuration file
+set(cpack_input_file "${CMAKE_ROOT}/Templates/CPackConfig.cmake.in")
+if(EXISTS "${CMAKE_SOURCE_DIR}/CPackConfig.cmake.in")
+  set(cpack_input_file "${CMAKE_SOURCE_DIR}/CPackConfig.cmake.in")
+endif()
+set(cpack_source_input_file "${CMAKE_ROOT}/Templates/CPackConfig.cmake.in")
+if(EXISTS "${CMAKE_SOURCE_DIR}/CPackSourceConfig.cmake.in")
+  set(cpack_source_input_file "${CMAKE_SOURCE_DIR}/CPackSourceConfig.cmake.in")
+endif()
+
+# Backward compatibility
+# Include CPackComponent macros if it has not already been included before.
+include(CPackComponent)
+
+# Macro for setting values if a user did not overwrite them
+# Mangles CMake-special characters. Only kept for backwards compatibility.
+macro(cpack_set_if_not_set name value)
+  message(DEPRECATION "cpack_set_if_not_set is obsolete; do not use.")
+  _cpack_set_default("${name}" "${value}")
+endmacro()
+
+# cpack_encode_variables - Function to encode variables for the configuration file
+# find any variable that starts with CPACK and create a variable
+# _CPACK_OTHER_VARIABLES_ that contains SET commands for
+# each cpack variable.  _CPACK_OTHER_VARIABLES_ is then
+# used as an @ replacement in configure_file for the CPackConfig.
+function(cpack_encode_variables)
+  set(commands "")
+  get_cmake_property(res VARIABLES)
+  foreach(var ${res})
+    if(var MATCHES "^CPACK")
+      if(CPACK_VERBATIM_VARIABLES)
+        _cpack_escape_for_cmake(value "${${var}}")
+      else()
+        set(value "${${var}}")
+      endif()
+
+      string(APPEND commands "\nset(${var} \"${value}\")")
+    endif()
+  endforeach()
+
+  set(_CPACK_OTHER_VARIABLES_ "${commands}" PARENT_SCOPE)
+endfunction()
+
+# Internal use functions
+function(_cpack_set_default name value)
+  if(NOT DEFINED "${name}")
+    set("${name}" "${value}" PARENT_SCOPE)
+  endif()
+endfunction()
+
+function(_cpack_escape_for_cmake var value)
+  string(REGEX REPLACE "([\\\$\"])" "\\\\\\1" escaped "${value}")
+  set("${var}" "${escaped}" PARENT_SCOPE)
+endfunction()
+
+# Set the package name
+_cpack_set_default(CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
+
+# Set the package version
+if(CMAKE_PROJECT_VERSION_MAJOR GREATER_EQUAL 0)
+  _cpack_set_default(CPACK_PACKAGE_VERSION_MAJOR "${CMAKE_PROJECT_VERSION_MAJOR}")
+  if(CMAKE_PROJECT_VERSION_MINOR GREATER_EQUAL 0)
+    _cpack_set_default(CPACK_PACKAGE_VERSION_MINOR "${CMAKE_PROJECT_VERSION_MINOR}")
+    if(CMAKE_PROJECT_VERSION_PATCH GREATER_EQUAL 0)
+      _cpack_set_default(CPACK_PACKAGE_VERSION_PATCH "${CMAKE_PROJECT_VERSION_PATCH}")
+    endif()
+  endif()
+else()
+  _cpack_set_default(CPACK_PACKAGE_VERSION_MAJOR "0")
+  _cpack_set_default(CPACK_PACKAGE_VERSION_MINOR "1")
+  _cpack_set_default(CPACK_PACKAGE_VERSION_PATCH "1")
+endif()
+if(NOT DEFINED CPACK_PACKAGE_VERSION)
+  set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}")
+  if(CPACK_PACKAGE_VERSION_MINOR GREATER_EQUAL 0)
+    string(APPEND CPACK_PACKAGE_VERSION ".${CPACK_PACKAGE_VERSION_MINOR}")
+    if(CPACK_PACKAGE_VERSION_PATCH GREATER_EQUAL 0)
+      string(APPEND CPACK_PACKAGE_VERSION ".${CPACK_PACKAGE_VERSION_PATCH}")
+    endif()
+  endif()
+endif()
+
+_cpack_set_default(CPACK_PACKAGE_VENDOR "Humanity")
+set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY "${CMAKE_PROJECT_NAME} built using CMake")
+if(CMAKE_PROJECT_DESCRIPTION)
+  _cpack_set_default(CPACK_PACKAGE_DESCRIPTION_SUMMARY
+    "${CMAKE_PROJECT_DESCRIPTION}")
+else()
+  _cpack_set_default(CPACK_PACKAGE_DESCRIPTION_SUMMARY
+    "${CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY}")
+endif()
+if(CMAKE_PROJECT_HOMEPAGE_URL)
+  _cpack_set_default(CPACK_PACKAGE_HOMEPAGE_URL
+    "${CMAKE_PROJECT_HOMEPAGE_URL}")
+endif()
+
+set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE
+  "${CMAKE_ROOT}/Templates/CPack.GenericDescription.txt")
+_cpack_set_default(CPACK_PACKAGE_DESCRIPTION_FILE
+  "${CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE}")
+_cpack_set_default(CPACK_RESOURCE_FILE_LICENSE
+  "${CMAKE_ROOT}/Templates/CPack.GenericLicense.txt")
+_cpack_set_default(CPACK_RESOURCE_FILE_README
+  "${CMAKE_ROOT}/Templates/CPack.GenericDescription.txt")
+_cpack_set_default(CPACK_RESOURCE_FILE_WELCOME
+  "${CMAKE_ROOT}/Templates/CPack.GenericWelcome.txt")
+
+_cpack_set_default(CPACK_MODULE_PATH "${CMAKE_MODULE_PATH}")
+
+# Set default directory creation permissions mode
+if(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS)
+  _cpack_set_default(CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
+    "${CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS}")
+endif()
+
+if(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL)
+  set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
+endif()
+
+if(CPACK_NSIS_MODIFY_PATH)
+  set(CPACK_NSIS_MODIFY_PATH ON)
+endif()
+
+set(__cpack_system_name ${CMAKE_SYSTEM_NAME})
+if(__cpack_system_name MATCHES "Windows")
+  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+    set(__cpack_system_name win64)
+  else()
+    set(__cpack_system_name win32)
+  endif()
+endif()
+_cpack_set_default(CPACK_SYSTEM_NAME "${__cpack_system_name}")
+
+# Root dir: default value should be the string literal "$PROGRAMFILES"
+# for backwards compatibility. Projects may set this value to anything.
+# When creating 64 bit binaries we set the default value to "$PROGRAMFILES64"
+if("x${__cpack_system_name}" STREQUAL "xwin64")
+  set(__cpack_root_default "$PROGRAMFILES64")
+else()
+  set(__cpack_root_default "$PROGRAMFILES")
+endif()
+_cpack_set_default(CPACK_NSIS_INSTALL_ROOT "${__cpack_root_default}")
+
+# <project>-<major>.<minor>.<patch>-<release>-<platform>.<pkgtype>
+_cpack_set_default(CPACK_PACKAGE_FILE_NAME
+  "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}")
+_cpack_set_default(CPACK_PACKAGE_INSTALL_DIRECTORY
+  "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
+_cpack_set_default(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
+  "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
+_cpack_set_default(CPACK_PACKAGE_DEFAULT_LOCATION "/")
+_cpack_set_default(CPACK_PACKAGE_RELOCATABLE "true")
+
+# always force to exactly "true" or "false" for CPack.Info.plist.in:
+if(CPACK_PACKAGE_RELOCATABLE)
+  set(CPACK_PACKAGE_RELOCATABLE "true")
+else()
+  set(CPACK_PACKAGE_RELOCATABLE "false")
+endif()
+
+macro(cpack_check_file_exists file description)
+  if(NOT EXISTS "${file}")
+    message(SEND_ERROR "CPack ${description} file: \"${file}\" could not be found.")
+  endif()
+endmacro()
+
+cpack_check_file_exists("${CPACK_PACKAGE_DESCRIPTION_FILE}" "package description")
+cpack_check_file_exists("${CPACK_RESOURCE_FILE_LICENSE}"    "license resource")
+cpack_check_file_exists("${CPACK_RESOURCE_FILE_README}"     "readme resource")
+cpack_check_file_exists("${CPACK_RESOURCE_FILE_WELCOME}"    "welcome resource")
+
+macro(cpack_optional_append _list _cond _item)
+  if(${_cond})
+    set(${_list} ${${_list}} ${_item})
+  endif()
+endmacro()
+
+# Provide options to choose generators we might check here if the required
+# tools for the generators exist and set the defaults according to the
+# results.
+if(NOT CPACK_GENERATOR)
+  if(UNIX)
+    if(CYGWIN)
+      option(CPACK_BINARY_CYGWIN "Enable to build Cygwin binary packages" ON)
+    else()
+      if(APPLE)
+        option(CPACK_BINARY_BUNDLE       "Enable to build OSX bundles"      OFF)
+        option(CPACK_BINARY_DRAGNDROP    "Enable to build OSX Drag And Drop package" OFF)
+        option(CPACK_BINARY_OSXX11       "Enable to build OSX X11 packages (deprecated)" OFF)
+        option(CPACK_BINARY_PACKAGEMAKER "Enable to build PackageMaker packages (deprecated)" OFF)
+        option(CPACK_BINARY_PRODUCTBUILD "Enable to build productbuild packages" OFF)
+        mark_as_advanced(
+          CPACK_BINARY_BUNDLE
+          CPACK_BINARY_DRAGNDROP
+          CPACK_BINARY_OSXX11
+          CPACK_BINARY_PACKAGEMAKER
+          CPACK_BINARY_PRODUCTBUILD
+          )
+      else()
+        option(CPACK_BINARY_TZ  "Enable to build TZ packages"     ON)
+        mark_as_advanced(CPACK_BINARY_TZ)
+      endif()
+      option(CPACK_BINARY_DEB  "Enable to build Debian packages"  OFF)
+      option(CPACK_BINARY_FREEBSD  "Enable to build FreeBSD packages"  OFF)
+      option(CPACK_BINARY_NSIS "Enable to build NSIS packages"    OFF)
+      option(CPACK_BINARY_RPM  "Enable to build RPM packages"     OFF)
+      option(CPACK_BINARY_STGZ "Enable to build STGZ packages"    ON)
+      option(CPACK_BINARY_TBZ2 "Enable to build TBZ2 packages"    OFF)
+      option(CPACK_BINARY_TGZ  "Enable to build TGZ packages"     ON)
+      option(CPACK_BINARY_TXZ  "Enable to build TXZ packages"     OFF)
+      mark_as_advanced(
+        CPACK_BINARY_DEB
+        CPACK_BINARY_FREEBSD
+        CPACK_BINARY_NSIS
+        CPACK_BINARY_RPM
+        CPACK_BINARY_STGZ
+        CPACK_BINARY_TBZ2
+        CPACK_BINARY_TGZ
+        CPACK_BINARY_TXZ
+        )
+    endif()
+  else()
+    option(CPACK_BINARY_7Z    "Enable to build 7-Zip packages" OFF)
+    option(CPACK_BINARY_NSIS  "Enable to build NSIS packages" ON)
+    option(CPACK_BINARY_NUGET "Enable to build NuGet packages" OFF)
+    option(CPACK_BINARY_WIX   "Enable to build WiX packages" OFF)
+    option(CPACK_BINARY_ZIP   "Enable to build ZIP packages" OFF)
+    mark_as_advanced(
+      CPACK_BINARY_7Z
+      CPACK_BINARY_NSIS
+      CPACK_BINARY_NUGET
+      CPACK_BINARY_WIX
+      CPACK_BINARY_ZIP
+      )
+  endif()
+  option(CPACK_BINARY_IFW "Enable to build IFW packages" OFF)
+  mark_as_advanced(CPACK_BINARY_IFW)
+
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_7Z           7Z)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_BUNDLE       Bundle)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_CYGWIN       CygwinBinary)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_DEB          DEB)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_DRAGNDROP    DragNDrop)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_FREEBSD      FREEBSD)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_IFW          IFW)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_NSIS         NSIS)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_NUGET        NuGet)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_OSXX11       OSXX11)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_PACKAGEMAKER PackageMaker)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_PRODUCTBUILD productbuild)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_RPM          RPM)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_STGZ         STGZ)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_TBZ2         TBZ2)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_TGZ          TGZ)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_TXZ          TXZ)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_TZ           TZ)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_WIX          WIX)
+  cpack_optional_append(CPACK_GENERATOR  CPACK_BINARY_ZIP          ZIP)
+
+endif()
+
+# Provide options to choose source generators
+if(NOT CPACK_SOURCE_GENERATOR)
+  if(UNIX)
+    if(CYGWIN)
+      option(CPACK_SOURCE_CYGWIN "Enable to build Cygwin source packages" ON)
+      mark_as_advanced(CPACK_SOURCE_CYGWIN)
+    else()
+      option(CPACK_SOURCE_RPM  "Enable to build RPM source packages"  OFF)
+      option(CPACK_SOURCE_TBZ2 "Enable to build TBZ2 source packages" ON)
+      option(CPACK_SOURCE_TGZ  "Enable to build TGZ source packages"  ON)
+      option(CPACK_SOURCE_TXZ  "Enable to build TXZ source packages"  ON)
+      option(CPACK_SOURCE_TZ   "Enable to build TZ source packages"   ON)
+      option(CPACK_SOURCE_ZIP  "Enable to build ZIP source packages"  OFF)
+      mark_as_advanced(
+        CPACK_SOURCE_RPM
+        CPACK_SOURCE_TBZ2
+        CPACK_SOURCE_TGZ
+        CPACK_SOURCE_TXZ
+        CPACK_SOURCE_TZ
+        CPACK_SOURCE_ZIP
+        )
+    endif()
+  else()
+    option(CPACK_SOURCE_7Z  "Enable to build 7-Zip source packages" ON)
+    option(CPACK_SOURCE_ZIP "Enable to build ZIP source packages" ON)
+    mark_as_advanced(
+      CPACK_SOURCE_7Z
+      CPACK_SOURCE_ZIP
+      )
+  endif()
+
+  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_7Z      7Z)
+  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_CYGWIN  CygwinSource)
+  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_RPM     RPM)
+  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_TBZ2    TBZ2)
+  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_TGZ     TGZ)
+  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_TXZ     TXZ)
+  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_TZ      TZ)
+  cpack_optional_append(CPACK_SOURCE_GENERATOR  CPACK_SOURCE_ZIP     ZIP)
+endif()
+
+# Set some other variables
+_cpack_set_default(CPACK_INSTALL_CMAKE_PROJECTS
+  "${CMAKE_BINARY_DIR};${CMAKE_PROJECT_NAME};ALL;/")
+_cpack_set_default(CPACK_CMAKE_GENERATOR "${CMAKE_GENERATOR}")
+_cpack_set_default(CPACK_TOPLEVEL_TAG "${CPACK_SYSTEM_NAME}")
+_cpack_set_default(CPACK_THREADS 1)
+# if the user has set CPACK_NSIS_DISPLAY_NAME remember it
+if(DEFINED CPACK_NSIS_DISPLAY_NAME)
+  set(CPACK_NSIS_DISPLAY_NAME_SET TRUE)
+endif()
+# if the user has set CPACK_NSIS_DISPLAY
+# explicitly, then use that as the default
+# value of CPACK_NSIS_PACKAGE_NAME  instead
+# of CPACK_PACKAGE_INSTALL_DIRECTORY
+_cpack_set_default(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
+# Specify the name of the Uninstall file in NSIS
+_cpack_set_default(CPACK_NSIS_UNINSTALL_NAME "Uninstall")
+
+if(CPACK_NSIS_DISPLAY_NAME_SET)
+  _cpack_set_default(CPACK_NSIS_PACKAGE_NAME "${CPACK_NSIS_DISPLAY_NAME}")
+else()
+  _cpack_set_default(CPACK_NSIS_PACKAGE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
+endif()
+
+_cpack_set_default(CPACK_OUTPUT_CONFIG_FILE
+  "${CMAKE_BINARY_DIR}/CPackConfig.cmake")
+
+_cpack_set_default(CPACK_SOURCE_OUTPUT_CONFIG_FILE
+  "${CMAKE_BINARY_DIR}/CPackSourceConfig.cmake")
+
+_cpack_set_default(CPACK_SET_DESTDIR OFF)
+_cpack_set_default(CPACK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+_cpack_set_default(CPACK_NSIS_INSTALLER_ICON_CODE "")
+_cpack_set_default(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "")
+
+# WiX specific variables
+_cpack_set_default(CPACK_WIX_SIZEOF_VOID_P "${CMAKE_SIZEOF_VOID_P}")
+
+# set sysroot so SDK tools can be used
+if(CMAKE_OSX_SYSROOT)
+  _cpack_set_default(CPACK_OSX_SYSROOT "${_CMAKE_OSX_SYSROOT_PATH}")
+endif()
+
+_cpack_set_default(CPACK_BUILD_SOURCE_DIRS "${CMAKE_SOURCE_DIR};${CMAKE_BINARY_DIR}")
+
+if(DEFINED CPACK_COMPONENTS_ALL)
+  if(CPACK_MONOLITHIC_INSTALL)
+    message("CPack warning: both CPACK_COMPONENTS_ALL and CPACK_MONOLITHIC_INSTALL have been set.\nDefaulting to a monolithic installation.")
+    set(CPACK_COMPONENTS_ALL)
+  else()
+    # The user has provided the set of components to be installed as
+    # part of a component-based installation; trust her.
+    set(CPACK_COMPONENTS_ALL_SET_BY_USER TRUE)
+  endif()
+else()
+  # If the user has not specifically requested a monolithic installer
+  # but has specified components in various "install" commands, tell
+  # CPack about those components.
+  if(NOT CPACK_MONOLITHIC_INSTALL)
+    get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS)
+    list(LENGTH CPACK_COMPONENTS_ALL CPACK_COMPONENTS_LEN)
+    if(CPACK_COMPONENTS_LEN EQUAL 1)
+      # Only one component: this is not a component-based installation
+      # (at least, it isn't a component-based installation, but may
+      # become one later if the user uses the cpack_add_* commands).
+      set(CPACK_COMPONENTS_ALL)
+    endif()
+    set(CPACK_COMPONENTS_LEN)
+  endif()
+endif()
+
+# CMake always generates a component named "Unspecified", which is
+# used to install everything that doesn't have an explicitly-provided
+# component. Since these files should always be installed, we'll make
+# them hidden and required.
+set(CPACK_COMPONENT_UNSPECIFIED_HIDDEN TRUE)
+set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED TRUE)
+
+cpack_encode_variables()
+configure_file("${cpack_input_file}" "${CPACK_OUTPUT_CONFIG_FILE}" @ONLY)
+
+# Generate source file
+_cpack_set_default(CPACK_SOURCE_INSTALLED_DIRECTORIES
+  "${CMAKE_SOURCE_DIR};/")
+_cpack_set_default(CPACK_SOURCE_TOPLEVEL_TAG "${CPACK_SYSTEM_NAME}-Source")
+_cpack_set_default(CPACK_SOURCE_PACKAGE_FILE_NAME
+  "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-Source")
+
+set(__cpack_source_ignore_files_default
+  "/CVS/;/\\.svn/;/\\.bzr/;/\\.hg/;/\\.git/;\\.swp$;\\.#;/#")
+if(NOT CPACK_VERBATIM_VARIABLES)
+  _cpack_escape_for_cmake(__cpack_source_ignore_files_default
+    "${__cpack_source_ignore_files_default}")
+endif()
+_cpack_set_default(CPACK_SOURCE_IGNORE_FILES "${__cpack_source_ignore_files_default}")
+
+set(CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_SOURCE_INSTALL_CMAKE_PROJECTS}")
+set(CPACK_INSTALLED_DIRECTORIES "${CPACK_SOURCE_INSTALLED_DIRECTORIES}")
+set(CPACK_GENERATOR "${CPACK_SOURCE_GENERATOR}")
+set(CPACK_TOPLEVEL_TAG "${CPACK_SOURCE_TOPLEVEL_TAG}")
+set(CPACK_PACKAGE_FILE_NAME "${CPACK_SOURCE_PACKAGE_FILE_NAME}")
+set(CPACK_IGNORE_FILES "${CPACK_SOURCE_IGNORE_FILES}")
+set(CPACK_STRIP_FILES "${CPACK_SOURCE_STRIP_FILES}")
+
+set(CPACK_RPM_PACKAGE_SOURCES "ON")
+
+cpack_encode_variables()
+configure_file("${cpack_source_input_file}"
+  "${CPACK_SOURCE_OUTPUT_CONFIG_FILE}" @ONLY)
diff --git a/share/cmake-3.18/Modules/CPackComponent.cmake b/share/cmake-3.22/Modules/CPackComponent.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CPackComponent.cmake
rename to share/cmake-3.22/Modules/CPackComponent.cmake
diff --git a/share/cmake-3.22/Modules/CPackIFW.cmake b/share/cmake-3.22/Modules/CPackIFW.cmake
new file mode 100644
index 0000000..85108db
--- /dev/null
+++ b/share/cmake-3.22/Modules/CPackIFW.cmake
@@ -0,0 +1,832 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CPackIFW
+--------
+
+.. versionadded:: 3.1
+
+This module looks for the location of the command-line utilities supplied with the
+`Qt Installer Framework <http://doc.qt.io/qtinstallerframework/index.html>`_
+(QtIFW).
+
+The module also defines several commands to control the behavior of the
+:cpack_gen:`CPack IFW Generator`.
+
+Commands
+^^^^^^^^
+
+The module defines the following commands:
+
+.. command:: cpack_ifw_configure_component
+
+  Sets the arguments specific to the CPack IFW generator.
+
+  ::
+
+    cpack_ifw_configure_component(<compname> [COMMON] [ESSENTIAL] [VIRTUAL]
+                        [FORCED_INSTALLATION] [REQUIRES_ADMIN_RIGHTS]
+                        [NAME <name>]
+                        [DISPLAY_NAME <display_name>] # Note: Internationalization supported
+                        [DESCRIPTION <description>] # Note: Internationalization supported
+                        [UPDATE_TEXT <update_text>]
+                        [VERSION <version>]
+                        [RELEASE_DATE <release_date>]
+                        [SCRIPT <script>]
+                        [PRIORITY|SORTING_PRIORITY <sorting_priority>] # Note: PRIORITY is deprecated
+                        [DEPENDS|DEPENDENCIES <com_id> ...]
+                        [AUTO_DEPEND_ON <comp_id> ...]
+                        [LICENSES <display_name> <file_path> ...]
+                        [DEFAULT <value>]
+                        [USER_INTERFACES <file_path> <file_path> ...]
+                        [TRANSLATIONS <file_path> <file_path> ...]
+                        [REPLACES <comp_id> ...]
+                        [CHECKABLE <value>])
+
+  This command should be called after :command:`cpack_add_component` command.
+
+  ``COMMON``
+    if set, then the component will be packaged and installed as part
+    of a group to which it belongs.
+
+  ``ESSENTIAL``
+    .. versionadded:: 3.6
+
+    if set, then the package manager stays disabled until that
+    component is updated.
+
+  ``VIRTUAL``
+    .. versionadded:: 3.8
+
+    if set, then the component will be hidden from the installer.
+    It is a equivalent of the ``HIDDEN`` option from the
+    :command:`cpack_add_component` command.
+
+  ``FORCED_INSTALLATION``
+    .. versionadded:: 3.8
+
+    if set, then the component must always be installed.
+    It is a equivalent of the ``REQUIRED`` option from the
+    :command:`cpack_add_component` command.
+
+  ``REQUIRES_ADMIN_RIGHTS``
+    .. versionadded:: 3.8
+
+    set it if the component needs to be installed with elevated permissions.
+
+  ``NAME``
+    is used to create domain-like identification for this component.
+    By default used origin component name.
+
+  ``DISPLAY_NAME``
+    .. versionadded:: 3.8
+
+    set to rewrite original name configured by
+    :command:`cpack_add_component` command.
+
+  ``DESCRIPTION``
+    .. versionadded:: 3.8
+
+    set to rewrite original description configured by
+    :command:`cpack_add_component` command.
+
+  ``UPDATE_TEXT``
+    .. versionadded:: 3.8
+
+    will be added to the component description if this is an update to
+    the component.
+
+  ``VERSION``
+    is version of component.
+    By default used :variable:`CPACK_PACKAGE_VERSION`.
+
+  ``RELEASE_DATE``
+    .. versionadded:: 3.8
+
+    keep empty to auto generate.
+
+  ``SCRIPT``
+    is a relative or absolute path to operations script
+    for this component.
+
+  ``SORTING_PRIORITY``
+    .. versionadded:: 3.8
+
+    is priority of the component in the tree.
+
+  ``PRIORITY``
+    .. deprecated:: 3.8
+      Old name for ``SORTING_PRIORITY``.
+
+  ``DEPENDS``, ``DEPENDENCIES``
+    .. versionadded:: 3.8
+
+    list of dependency component or component group identifiers in
+    QtIFW style.
+
+    .. versionadded:: 3.21
+
+    Component or group names listed as dependencies may contain hyphens.
+    This requires QtIFW 3.1 or later.
+
+  ``AUTO_DEPEND_ON``
+    .. versionadded:: 3.8
+
+    list of identifiers of component or component group in QtIFW style
+    that this component has an automatic dependency on.
+
+  ``LICENSES``
+    pair of <display_name> and <file_path> of license text for this
+    component. You can specify more then one license.
+
+  ``DEFAULT``
+    .. versionadded:: 3.8
+
+    Possible values are: TRUE, FALSE, and SCRIPT.
+    Set to FALSE to disable the component in the installer or to SCRIPT
+    to resolved during runtime (don't forget add the file of the script
+    as a value of the ``SCRIPT`` option).
+
+  ``USER_INTERFACES``
+    .. versionadded:: 3.7
+
+    is a list of <file_path> ('.ui' files) representing pages to load.
+
+  ``TRANSLATIONS``
+    .. versionadded:: 3.8
+
+    is a list of <file_path> ('.qm' files) representing translations to load.
+
+  ``REPLACES``
+    .. versionadded:: 3.10
+
+    list of identifiers of component or component group to replace.
+
+  ``CHECKABLE``
+    .. versionadded:: 3.10
+
+    Possible values are: TRUE, FALSE.
+    Set to FALSE if you want to hide the checkbox for an item.
+    This is useful when only a few subcomponents should be selected
+    instead of all.
+
+
+.. command:: cpack_ifw_configure_component_group
+
+  Sets the arguments specific to the CPack IFW generator.
+
+  ::
+
+    cpack_ifw_configure_component_group(<groupname> [VIRTUAL]
+                        [FORCED_INSTALLATION] [REQUIRES_ADMIN_RIGHTS]
+                        [NAME <name>]
+                        [DISPLAY_NAME <display_name>] # Note: Internationalization supported
+                        [DESCRIPTION <description>] # Note: Internationalization supported
+                        [UPDATE_TEXT <update_text>]
+                        [VERSION <version>]
+                        [RELEASE_DATE <release_date>]
+                        [SCRIPT <script>]
+                        [PRIORITY|SORTING_PRIORITY <sorting_priority>] # Note: PRIORITY is deprecated
+                        [DEPENDS|DEPENDENCIES <com_id> ...]
+                        [AUTO_DEPEND_ON <comp_id> ...]
+                        [LICENSES <display_name> <file_path> ...]
+                        [DEFAULT <value>]
+                        [USER_INTERFACES <file_path> <file_path> ...]
+                        [TRANSLATIONS <file_path> <file_path> ...]
+                        [REPLACES <comp_id> ...]
+                        [CHECKABLE <value>])
+
+  This command should be called after :command:`cpack_add_component_group`
+  command.
+
+  ``VIRTUAL``
+    .. versionadded:: 3.8
+
+    if set, then the group will be hidden from the installer.
+    Note that setting this on a root component does not work.
+
+  ``FORCED_INSTALLATION``
+    .. versionadded:: 3.8
+
+    if set, then the group must always be installed.
+
+  ``REQUIRES_ADMIN_RIGHTS``
+    .. versionadded:: 3.8
+
+    set it if the component group needs to be installed with elevated
+    permissions.
+
+  ``NAME``
+    is used to create domain-like identification for this component group.
+    By default used origin component group name.
+
+  ``DISPLAY_NAME``
+    .. versionadded:: 3.8
+
+    set to rewrite original name configured by
+    :command:`cpack_add_component_group` command.
+
+  ``DESCRIPTION``
+    .. versionadded:: 3.8
+
+    set to rewrite original description configured by
+    :command:`cpack_add_component_group` command.
+
+  ``UPDATE_TEXT``
+    .. versionadded:: 3.8
+
+    will be added to the component group description if this is an update to
+    the component group.
+
+  ``VERSION``
+    is version of component group.
+    By default used :variable:`CPACK_PACKAGE_VERSION`.
+
+  ``RELEASE_DATE``
+    .. versionadded:: 3.8
+
+    keep empty to auto generate.
+
+  ``SCRIPT``
+    is a relative or absolute path to operations script
+    for this component group.
+
+  ``SORTING_PRIORITY``
+    is priority of the component group in the tree.
+
+  ``PRIORITY``
+    .. deprecated:: 3.8
+      Old name for ``SORTING_PRIORITY``.
+
+  ``DEPENDS``, ``DEPENDENCIES``
+    .. versionadded:: 3.8
+
+    list of dependency component or component group identifiers in
+    QtIFW style.
+
+    .. versionadded:: 3.21
+
+    Component or group names listed as dependencies may contain hyphens.
+    This requires QtIFW 3.1 or later.
+
+  ``AUTO_DEPEND_ON``
+    .. versionadded:: 3.8
+
+    list of identifiers of component or component group in QtIFW style
+    that this component group has an automatic dependency on.
+
+  ``LICENSES``
+    pair of <display_name> and <file_path> of license text for this
+    component group. You can specify more then one license.
+
+  ``DEFAULT``
+    .. versionadded:: 3.8
+
+    Possible values are: TRUE, FALSE, and SCRIPT.
+    Set to TRUE to preselect the group in the installer
+    (this takes effect only on groups that have no visible child components)
+    or to SCRIPT to resolved during runtime (don't forget add the file of
+    the script as a value of the ``SCRIPT`` option).
+
+  ``USER_INTERFACES``
+    .. versionadded:: 3.7
+
+    is a list of <file_path> ('.ui' files) representing pages to load.
+
+  ``TRANSLATIONS``
+    .. versionadded:: 3.8
+
+    is a list of <file_path> ('.qm' files) representing translations to load.
+
+  ``REPLACES``
+    .. versionadded:: 3.10
+
+    list of identifiers of component or component group to replace.
+
+  ``CHECKABLE``
+    .. versionadded:: 3.10
+
+    Possible values are: TRUE, FALSE.
+    Set to FALSE if you want to hide the checkbox for an item.
+    This is useful when only a few subcomponents should be selected
+    instead of all.
+
+
+.. command:: cpack_ifw_add_repository
+
+  Add QtIFW specific remote repository to binary installer.
+
+  ::
+
+    cpack_ifw_add_repository(<reponame> [DISABLED]
+                        URL <url>
+                        [USERNAME <username>]
+                        [PASSWORD <password>]
+                        [DISPLAY_NAME <display_name>])
+
+  This command will also add the <reponame> repository
+  to a variable :variable:`CPACK_IFW_REPOSITORIES_ALL`.
+
+  ``DISABLED``
+    if set, then the repository will be disabled by default.
+
+  ``URL``
+    is points to a list of available components.
+
+  ``USERNAME``
+    is used as user on a protected repository.
+
+  ``PASSWORD``
+    is password to use on a protected repository.
+
+  ``DISPLAY_NAME``
+    is string to display instead of the URL.
+
+
+.. command:: cpack_ifw_update_repository
+
+  .. versionadded:: 3.6
+
+  Update QtIFW specific repository from remote repository.
+
+  ::
+
+    cpack_ifw_update_repository(<reponame>
+                        [[ADD|REMOVE] URL <url>]|
+                         [REPLACE OLD_URL <old_url> NEW_URL <new_url>]]
+                        [USERNAME <username>]
+                        [PASSWORD <password>]
+                        [DISPLAY_NAME <display_name>])
+
+  This command will also add the <reponame> repository
+  to a variable :variable:`CPACK_IFW_REPOSITORIES_ALL`.
+
+  ``URL``
+    is points to a list of available components.
+
+  ``OLD_URL``
+    is points to a list that will replaced.
+
+  ``NEW_URL``
+    is points to a list that will replace to.
+
+  ``USERNAME``
+    is used as user on a protected repository.
+
+  ``PASSWORD``
+    is password to use on a protected repository.
+
+  ``DISPLAY_NAME``
+    is string to display instead of the URL.
+
+
+.. command:: cpack_ifw_add_package_resources
+
+  .. versionadded:: 3.7
+
+  Add additional resources in the installer binary.
+
+  ::
+
+    cpack_ifw_add_package_resources(<file_path> <file_path> ...)
+
+  This command will also add the specified files
+  to a variable :variable:`CPACK_IFW_PACKAGE_RESOURCES`.
+
+#]=======================================================================]
+
+# TODO:
+# All of the internal implementation CMake modules for other CPack generators
+# have been moved into the Internal/CPack directory. This one has not, because
+# it contains user-facing macros which would be lost if it were moved. At some
+# point, this module should be split into user-facing macros (which would live
+# in this module) and internal implementation details (which would live in
+# Internal/CPack/CPackIFW.cmake).
+
+#=============================================================================
+# Search Qt Installer Framework tools
+#=============================================================================
+
+# Default path
+
+foreach(_CPACK_IFW_PATH_VAR "CPACK_IFW_ROOT" "QTIFWDIR" "QTDIR")
+  if(DEFINED ${_CPACK_IFW_PATH_VAR}
+    AND NOT "${${_CPACK_IFW_PATH_VAR}}" STREQUAL "")
+    list(APPEND _CPACK_IFW_PATHS "${${_CPACK_IFW_PATH_VAR}}")
+  endif()
+  if(NOT "$ENV{${_CPACK_IFW_PATH_VAR}}" STREQUAL "")
+    list(APPEND _CPACK_IFW_PATHS "$ENV{${_CPACK_IFW_PATH_VAR}}")
+  endif()
+endforeach()
+if(WIN32)
+  list(APPEND _CPACK_IFW_PATHS
+    "$ENV{HOMEDRIVE}/Qt"
+    "C:/Qt")
+else()
+  list(APPEND _CPACK_IFW_PATHS
+    "$ENV{HOME}/Qt"
+    "/opt/Qt")
+endif()
+list(REMOVE_DUPLICATES _CPACK_IFW_PATHS)
+
+set(_CPACK_IFW_PREFIXES
+  # QtSDK
+  "Tools/QtInstallerFramework/"
+  # Second branch
+  "QtIFW"
+  # First branch
+  "QtIFW-")
+
+set(_CPACK_IFW_VERSIONS
+  "4.2"
+  "4.1"
+  "4.0"
+  "3.2"
+  "3.2.0"
+  "3.1"
+  "3.1.0"
+  "3.0"
+  "3.0.0"
+  "2.3"
+  "2.3.0"
+  "2.2"
+  "2.2.0"
+  "2.1"
+  "2.1.0"
+  "2.0"
+  "2.0.5"
+  "2.0.3"
+  "2.0.2"
+  "2.0.1"
+  "2.0.0"
+  "1.6"
+  "1.6.0"
+  "1.5"
+  "1.5.0"
+  "1.4"
+  "1.4.0"
+  "1.3"
+  "1.3.0")
+
+set(_CPACK_IFW_SUFFIXES "bin")
+foreach(_CPACK_IFW_PREFIX ${_CPACK_IFW_PREFIXES})
+  foreach(_CPACK_IFW_VERSION ${_CPACK_IFW_VERSIONS})
+    list(APPEND
+      _CPACK_IFW_SUFFIXES "${_CPACK_IFW_PREFIX}${_CPACK_IFW_VERSION}/bin")
+  endforeach()
+endforeach()
+
+# Look for 'binarycreator'
+
+find_program(CPACK_IFW_BINARYCREATOR_EXECUTABLE
+  NAMES binarycreator
+  PATHS ${_CPACK_IFW_PATHS}
+  PATH_SUFFIXES ${_CPACK_IFW_SUFFIXES}
+  DOC "QtIFW binarycreator command line client")
+
+mark_as_advanced(CPACK_IFW_BINARYCREATOR_EXECUTABLE)
+
+# Look for 'repogen'
+
+find_program(CPACK_IFW_REPOGEN_EXECUTABLE
+  NAMES repogen
+  PATHS ${_CPACK_IFW_PATHS}
+  PATH_SUFFIXES ${_CPACK_IFW_SUFFIXES}
+  DOC "QtIFW repogen command line client"
+  )
+mark_as_advanced(CPACK_IFW_REPOGEN_EXECUTABLE)
+
+# Look for 'installerbase'
+
+find_program(CPACK_IFW_INSTALLERBASE_EXECUTABLE
+  NAMES installerbase
+  PATHS ${_CPACK_IFW_PATHS}
+  PATH_SUFFIXES ${_CPACK_IFW_SUFFIXES}
+  DOC "QtIFW installer executable base"
+  )
+mark_as_advanced(CPACK_IFW_INSTALLERBASE_EXECUTABLE)
+
+# Look for 'devtool' (appeared in the second branch)
+
+find_program(CPACK_IFW_DEVTOOL_EXECUTABLE
+  NAMES devtool
+  PATHS ${_CPACK_IFW_PATHS}
+  PATH_SUFFIXES ${_CPACK_IFW_SUFFIXES}
+  DOC "QtIFW devtool command line client"
+  )
+mark_as_advanced(CPACK_IFW_DEVTOOL_EXECUTABLE)
+
+# Look for 'archivegen'
+
+find_program(CPACK_IFW_ARCHIVEGEN_EXECUTABLE
+  NAMES archivegen
+  PATHS ${_CPACK_IFW_PATHS}
+  PATH_SUFFIXES ${_CPACK_IFW_SUFFIXES}
+  DOC "QtIFW archivegen command line client"
+  )
+mark_as_advanced(CPACK_IFW_ARCHIVEGEN_EXECUTABLE)
+
+#
+## Next code is included only once
+#
+
+if(NOT CPackIFW_CMake_INCLUDED)
+set(CPackIFW_CMake_INCLUDED 1)
+
+#=============================================================================
+# Framework version
+#=============================================================================
+
+set(CPACK_IFW_FRAMEWORK_VERSION_FORCED ""
+  CACHE STRING "The forced version of used QtIFW tools")
+mark_as_advanced(CPACK_IFW_FRAMEWORK_VERSION_FORCED)
+set(CPACK_IFW_FRAMEWORK_VERSION_TIMEOUT 1
+  CACHE STRING "The timeout to return QtIFW framework version string from \"installerbase\" executable")
+mark_as_advanced(CPACK_IFW_FRAMEWORK_VERSION_TIMEOUT)
+if(CPACK_IFW_INSTALLERBASE_EXECUTABLE AND NOT CPACK_IFW_FRAMEWORK_VERSION_FORCED)
+  set(CPACK_IFW_FRAMEWORK_VERSION)
+  # Invoke version from "installerbase" executable
+  foreach(_ifw_version_argument --version --framework-version)
+    if(NOT CPACK_IFW_FRAMEWORK_VERSION)
+      execute_process(COMMAND
+        "${CPACK_IFW_INSTALLERBASE_EXECUTABLE}" ${_ifw_version_argument}
+        TIMEOUT ${CPACK_IFW_FRAMEWORK_VERSION_TIMEOUT}
+        RESULT_VARIABLE CPACK_IFW_FRAMEWORK_VERSION_RESULT
+        OUTPUT_VARIABLE CPACK_IFW_FRAMEWORK_VERSION_OUTPUT
+        OUTPUT_STRIP_TRAILING_WHITESPACE
+        ENCODING UTF8)
+      if(NOT CPACK_IFW_FRAMEWORK_VERSION_RESULT AND CPACK_IFW_FRAMEWORK_VERSION_OUTPUT)
+        string(REGEX MATCH "[0-9]+(\\.[0-9]+)*"
+          CPACK_IFW_FRAMEWORK_VERSION "${CPACK_IFW_FRAMEWORK_VERSION_OUTPUT}")
+        if(CPACK_IFW_FRAMEWORK_VERSION)
+          if("${_ifw_version_argument}" STREQUAL "--framework-version")
+            set(CPACK_IFW_FRAMEWORK_VERSION_SOURCE "INSTALLERBASE_FRAMEWORK_VERSION")
+          elseif("${_ifw_version_argument}" STREQUAL "--version")
+            set(CPACK_IFW_FRAMEWORK_VERSION_SOURCE "INSTALLERBASE_FRAMEWORK_VERSION")
+          endif()
+        endif()
+      endif()
+    endif()
+  endforeach()
+  # Finally try to get version from executable path
+  if(NOT CPACK_IFW_FRAMEWORK_VERSION)
+    string(REGEX MATCH "[0-9]+(\\.[0-9]+)*"
+      CPACK_IFW_FRAMEWORK_VERSION "${CPACK_IFW_INSTALLERBASE_EXECUTABLE}")
+    if(CPACK_IFW_FRAMEWORK_VERSION)
+      set(CPACK_IFW_FRAMEWORK_VERSION_SOURCE "INSTALLERBASE_PATH")
+    endif()
+  endif()
+elseif(CPACK_IFW_FRAMEWORK_VERSION_FORCED)
+  set(CPACK_IFW_FRAMEWORK_VERSION ${CPACK_IFW_FRAMEWORK_VERSION_FORCED})
+  set(CPACK_IFW_FRAMEWORK_VERSION_SOURCE "FORCED")
+endif()
+if(CPACK_IFW_VERBOSE)
+  if(CPACK_IFW_FRAMEWORK_VERSION AND CPACK_IFW_FRAMEWORK_VERSION_FORCED)
+    message(STATUS "Found QtIFW ${CPACK_IFW_FRAMEWORK_VERSION} (forced) version")
+  elseif(CPACK_IFW_FRAMEWORK_VERSION)
+    message(STATUS "Found QtIFW ${CPACK_IFW_FRAMEWORK_VERSION} version")
+  endif()
+endif()
+if(CPACK_IFW_INSTALLERBASE_EXECUTABLE AND NOT CPACK_IFW_FRAMEWORK_VERSION)
+  message(WARNING "Could not detect QtIFW tools version. Set used version to variable \"CPACK_IFW_FRAMEWORK_VERSION_FORCED\" manually.")
+endif()
+
+#=============================================================================
+# Macro definition
+#=============================================================================
+
+# Macro definition based on CPackComponent
+
+if(NOT CPackComponent_CMake_INCLUDED)
+    include(CPackComponent)
+endif()
+
+# Resolve full filename for script file
+macro(_cpack_ifw_resolve_script _variable)
+  set(_ifw_script_macro ${_variable})
+  set(_ifw_script_file ${${_ifw_script_macro}})
+  if(DEFINED ${_ifw_script_macro})
+    get_filename_component(${_ifw_script_macro} ${_ifw_script_file} ABSOLUTE)
+    set(_ifw_script_file ${${_ifw_script_macro}})
+    if(NOT EXISTS ${_ifw_script_file})
+      message(WARNING "CPack IFW: script file \"${_ifw_script_file}\" does not exist")
+      set(${_ifw_script_macro})
+    endif()
+  endif()
+endmacro()
+
+# Resolve full path to license file
+macro(_cpack_ifw_resolve_lisenses _variable)
+  if(${_variable})
+    set(_ifw_license_file FALSE)
+    set(_ifw_licenses_fix)
+    foreach(_ifw_licenses_arg ${${_variable}})
+      if(_ifw_license_file)
+        get_filename_component(_ifw_licenses_arg "${_ifw_licenses_arg}" ABSOLUTE)
+        set(_ifw_license_file FALSE)
+      else()
+        set(_ifw_license_file TRUE)
+      endif()
+      list(APPEND _ifw_licenses_fix "${_ifw_licenses_arg}")
+    endforeach(_ifw_licenses_arg)
+    set(${_variable} "${_ifw_licenses_fix}")
+  endif()
+endmacro()
+
+# Resolve full path to a list of provided files
+macro(_cpack_ifw_resolve_file_list _variable)
+  if(${_variable})
+    set(_ifw_list_fix)
+    foreach(_ifw_file_arg ${${_variable}})
+      get_filename_component(_ifw_file_arg "${_ifw_file_arg}" ABSOLUTE)
+      if(EXISTS ${_ifw_file_arg})
+        list(APPEND _ifw_list_fix "${_ifw_file_arg}")
+      else()
+        message(WARNING "CPack IFW: page file \"${_ifw_file_arg}\" does not exist. Skipping")
+      endif()
+    endforeach(_ifw_file_arg)
+    set(${_variable} "${_ifw_list_fix}")
+  endif()
+endmacro()
+
+# Macro for configure component
+macro(cpack_ifw_configure_component compname)
+
+  string(TOUPPER ${compname} _CPACK_IFWCOMP_UNAME)
+
+  set(_IFW_OPT COMMON ESSENTIAL VIRTUAL FORCED_INSTALLATION REQUIRES_ADMIN_RIGHTS)
+  set(_IFW_ARGS NAME VERSION RELEASE_DATE SCRIPT PRIORITY SORTING_PRIORITY UPDATE_TEXT DEFAULT CHECKABLE)
+  set(_IFW_MULTI_ARGS DISPLAY_NAME DESCRIPTION DEPENDS DEPENDENCIES AUTO_DEPEND_ON LICENSES USER_INTERFACES TRANSLATIONS REPLACES)
+  cmake_parse_arguments(CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME} "${_IFW_OPT}" "${_IFW_ARGS}" "${_IFW_MULTI_ARGS}" ${ARGN})
+
+  _cpack_ifw_resolve_script(CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_SCRIPT)
+  _cpack_ifw_resolve_lisenses(CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_LICENSES)
+  _cpack_ifw_resolve_file_list(CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_USER_INTERFACES)
+  _cpack_ifw_resolve_file_list(CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_TRANSLATIONS)
+
+  set(_CPACK_IFWCOMP_STR "\n# Configuration for IFW component \"${compname}\"\n")
+
+  foreach(_IFW_ARG_NAME ${_IFW_OPT})
+  cpack_append_option_set_command(
+    CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_${_IFW_ARG_NAME}
+    _CPACK_IFWCOMP_STR)
+  endforeach()
+
+  foreach(_IFW_ARG_NAME ${_IFW_ARGS})
+  cpack_append_string_variable_set_command(
+    CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_${_IFW_ARG_NAME}
+    _CPACK_IFWCOMP_STR)
+  endforeach()
+
+  foreach(_IFW_ARG_NAME ${_IFW_MULTI_ARGS})
+  cpack_append_list_variable_set_command(
+    CPACK_IFW_COMPONENT_${_CPACK_IFWCOMP_UNAME}_${_IFW_ARG_NAME}
+    _CPACK_IFWCOMP_STR)
+  endforeach()
+
+  if(CPack_CMake_INCLUDED)
+    file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_IFWCOMP_STR}")
+  endif()
+
+endmacro()
+
+# Macro for configure group
+macro(cpack_ifw_configure_component_group grpname)
+
+  string(TOUPPER ${grpname} _CPACK_IFWGRP_UNAME)
+
+  set(_IFW_OPT VIRTUAL FORCED_INSTALLATION REQUIRES_ADMIN_RIGHTS)
+  set(_IFW_ARGS NAME VERSION RELEASE_DATE SCRIPT PRIORITY SORTING_PRIORITY UPDATE_TEXT DEFAULT CHECKABLE)
+  set(_IFW_MULTI_ARGS DISPLAY_NAME DESCRIPTION DEPENDS DEPENDENCIES AUTO_DEPEND_ON LICENSES USER_INTERFACES TRANSLATIONS REPLACES)
+  cmake_parse_arguments(CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME} "${_IFW_OPT}" "${_IFW_ARGS}" "${_IFW_MULTI_ARGS}" ${ARGN})
+
+  _cpack_ifw_resolve_script(CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_SCRIPT)
+  _cpack_ifw_resolve_lisenses(CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_LICENSES)
+  _cpack_ifw_resolve_file_list(CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_USER_INTERFACES)
+  _cpack_ifw_resolve_file_list(CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_TRANSLATIONS)
+
+  set(_CPACK_IFWGRP_STR "\n# Configuration for IFW component group \"${grpname}\"\n")
+
+  foreach(_IFW_ARG_NAME ${_IFW_OPT})
+  cpack_append_option_set_command(
+    CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_${_IFW_ARG_NAME}
+    _CPACK_IFWGRP_STR)
+  endforeach()
+
+  foreach(_IFW_ARG_NAME ${_IFW_ARGS})
+  cpack_append_string_variable_set_command(
+    CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_${_IFW_ARG_NAME}
+    _CPACK_IFWGRP_STR)
+  endforeach()
+
+  foreach(_IFW_ARG_NAME ${_IFW_MULTI_ARGS})
+  cpack_append_list_variable_set_command(
+    CPACK_IFW_COMPONENT_GROUP_${_CPACK_IFWGRP_UNAME}_${_IFW_ARG_NAME}
+    _CPACK_IFWGRP_STR)
+  endforeach()
+
+  if(CPack_CMake_INCLUDED)
+    file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_IFWGRP_STR}")
+  endif()
+endmacro()
+
+# Macro for adding repository
+macro(cpack_ifw_add_repository reponame)
+
+  string(TOUPPER ${reponame} _CPACK_IFWREPO_UNAME)
+
+  set(_IFW_OPT DISABLED)
+  set(_IFW_ARGS URL USERNAME PASSWORD DISPLAY_NAME)
+  set(_IFW_MULTI_ARGS)
+  cmake_parse_arguments(CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME} "${_IFW_OPT}" "${_IFW_ARGS}" "${_IFW_MULTI_ARGS}" ${ARGN})
+
+  set(_CPACK_IFWREPO_STR "\n# Configuration for IFW repository \"${reponame}\"\n")
+
+  foreach(_IFW_ARG_NAME ${_IFW_OPT})
+  cpack_append_option_set_command(
+    CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME}
+    _CPACK_IFWREPO_STR)
+  endforeach()
+
+  foreach(_IFW_ARG_NAME ${_IFW_ARGS})
+  cpack_append_string_variable_set_command(
+    CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME}
+    _CPACK_IFWREPO_STR)
+  endforeach()
+
+  foreach(_IFW_ARG_NAME ${_IFW_MULTI_ARGS})
+  cpack_append_variable_set_command(
+    CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME}
+    _CPACK_IFWREPO_STR)
+  endforeach()
+
+  list(APPEND CPACK_IFW_REPOSITORIES_ALL ${reponame})
+  string(APPEND _CPACK_IFWREPO_STR "list(APPEND CPACK_IFW_REPOSITORIES_ALL ${reponame})\n")
+
+  if(CPack_CMake_INCLUDED)
+    file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_IFWREPO_STR}")
+  endif()
+
+endmacro()
+
+# Macro for updating repository
+macro(cpack_ifw_update_repository reponame)
+
+  string(TOUPPER ${reponame} _CPACK_IFWREPO_UNAME)
+
+  set(_IFW_OPT ADD REMOVE REPLACE DISABLED)
+  set(_IFW_ARGS URL OLD_URL NEW_URL USERNAME PASSWORD DISPLAY_NAME)
+  set(_IFW_MULTI_ARGS)
+  cmake_parse_arguments(CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME} "${_IFW_OPT}" "${_IFW_ARGS}" "${_IFW_MULTI_ARGS}" ${ARGN})
+
+  set(_CPACK_IFWREPO_STR "\n# Configuration for IFW repository \"${reponame}\" update\n")
+
+  foreach(_IFW_ARG_NAME ${_IFW_OPT})
+  cpack_append_option_set_command(
+    CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME}
+    _CPACK_IFWREPO_STR)
+  endforeach()
+
+  foreach(_IFW_ARG_NAME ${_IFW_ARGS})
+  cpack_append_string_variable_set_command(
+    CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME}
+    _CPACK_IFWREPO_STR)
+  endforeach()
+
+  foreach(_IFW_ARG_NAME ${_IFW_MULTI_ARGS})
+  cpack_append_variable_set_command(
+    CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_${_IFW_ARG_NAME}
+    _CPACK_IFWREPO_STR)
+  endforeach()
+
+  if(CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_ADD
+    OR CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_REMOVE
+    OR CPACK_IFW_REPOSITORY_${_CPACK_IFWREPO_UNAME}_REPLACE)
+    list(APPEND CPACK_IFW_REPOSITORIES_ALL ${reponame})
+    string(APPEND _CPACK_IFWREPO_STR "list(APPEND CPACK_IFW_REPOSITORIES_ALL ${reponame})\n")
+  else()
+    set(_CPACK_IFWREPO_STR)
+  endif()
+
+  if(CPack_CMake_INCLUDED AND _CPACK_IFWREPO_STR)
+    file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_IFWREPO_STR}")
+  endif()
+
+endmacro()
+
+# Macro for adding resources
+macro(cpack_ifw_add_package_resources)
+  set(_CPACK_IFW_PACKAGE_RESOURCES ${ARGV})
+  _cpack_ifw_resolve_file_list(_CPACK_IFW_PACKAGE_RESOURCES)
+  list(APPEND CPACK_IFW_PACKAGE_RESOURCES ${_CPACK_IFW_PACKAGE_RESOURCES})
+  set(_CPACK_IFWQRC_STR "list(APPEND CPACK_IFW_PACKAGE_RESOURCES \"${_CPACK_IFW_PACKAGE_RESOURCES}\")\n")
+  if(CPack_CMake_INCLUDED)
+    file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_IFWQRC_STR}")
+  endif()
+endmacro()
+
+# Resolve package control script
+_cpack_ifw_resolve_script(CPACK_IFW_PACKAGE_CONTROL_SCRIPT)
+
+endif() # NOT CPackIFW_CMake_INCLUDED
diff --git a/share/cmake-3.22/Modules/CPackIFWConfigureFile.cmake b/share/cmake-3.22/Modules/CPackIFWConfigureFile.cmake
new file mode 100644
index 0000000..296b13f
--- /dev/null
+++ b/share/cmake-3.22/Modules/CPackIFWConfigureFile.cmake
@@ -0,0 +1,68 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CPackIFWConfigureFile
+---------------------
+
+.. versionadded:: 3.8
+
+The module defines :command:`configure_file` similar command to
+configure file templates prepared in QtIFW/SDK/Creator style.
+
+
+Commands
+^^^^^^^^
+
+The module defines the following commands:
+
+.. command:: cpack_ifw_configure_file
+
+  Copy a file to another location and modify its contents.
+
+  ::
+
+    cpack_ifw_configure_file(<input> <output>)
+
+  Copies an ``<input>`` file to an ``<output>`` file and substitutes variable
+  values referenced as ``%{VAR}`` or ``%VAR%`` in the input file content.
+  Each variable reference will be replaced with the current value of the
+  variable, or the empty string if the variable is not defined.
+
+#]=======================================================================]
+
+# NOTE: This file used to himself packaging via CPack IFW generator and
+# should be compatible with minimal CMake version defined in
+# ../CMakeLists.txt file.
+
+if(NOT DEFINED CPackIFWConfigureFile_CMake_INCLUDED)
+set(CPackIFWConfigureFile_CMake_INCLUDED 1)
+
+macro(cpack_ifw_configure_file INPUT OUTPUT)
+  file(READ "${INPUT}" _tmp)
+  foreach(_tmp_regex "%{([^%}]+)}" "%([^%]+)%")
+    string(REGEX MATCHALL "${_tmp_regex}" _tmp_vars "${_tmp}")
+    while(_tmp_vars)
+      foreach(_tmp_var ${_tmp_vars})
+        string(REGEX REPLACE "${_tmp_regex}" "\\1"
+          _tmp_var_name "${_tmp_var}")
+        if(DEFINED ${_tmp_var_name})
+          set(_tmp_var_value "${${_tmp_var_name}}")
+        elseif(NOT "$ENV{${_tmp_var_name}}" STREQUAL "")
+          set(_tmp_var_value "$ENV{${_tmp_var_name}}")
+        else()
+          set(_tmp_var_value "")
+        endif()
+        string(REPLACE "${_tmp_var}" "${_tmp_var_value}" _tmp "${_tmp}")
+      endforeach()
+      string(REGEX MATCHALL "${_tmp_regex}" _tmp_vars "${_tmp}")
+    endwhile()
+  endforeach()
+  if(IS_ABSOLUTE "${OUTPUT}")
+    file(WRITE "${OUTPUT}" "${_tmp}")
+  else()
+    file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT}" "${_tmp}")
+  endif()
+endmacro()
+
+endif() # NOT DEFINED CPackIFWConfigureFile_CMake_INCLUDED
diff --git a/share/cmake-3.22/Modules/CSharpUtilities.cmake b/share/cmake-3.22/Modules/CSharpUtilities.cmake
new file mode 100644
index 0000000..dedb146
--- /dev/null
+++ b/share/cmake-3.22/Modules/CSharpUtilities.cmake
@@ -0,0 +1,313 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CSharpUtilities
+---------------
+
+.. versionadded:: 3.8
+
+Functions to make configuration of CSharp/.NET targets easier.
+
+A collection of CMake utility functions useful for dealing with CSharp
+targets for Visual Studio generators from version 2010 and later.
+
+The following functions are provided by this module:
+
+**Main functions**
+
+- :command:`csharp_set_windows_forms_properties`
+- :command:`csharp_set_designer_cs_properties`
+- :command:`csharp_set_xaml_cs_properties`
+
+**Helper functions**
+
+- :command:`csharp_get_filename_keys`
+- :command:`csharp_get_filename_key_base`
+- :command:`csharp_get_dependentupon_name`
+
+Main functions provided by the module
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. command:: csharp_set_windows_forms_properties
+
+  Sets source file properties for use of Windows Forms. Use this, if your CSharp
+  target uses Windows Forms::
+
+    csharp_set_windows_forms_properties([<file1> [<file2> [...]]])
+
+  ``<fileN>``
+    List of all source files which are relevant for setting the
+    :prop_sf:`VS_CSHARP_<tagname>` properties (including ``.cs``, ``.resx`` and
+    ``.Designer.cs`` extensions).
+
+  In the list of all given files for all files ending with ``.Designer.cs`` and
+  ``.resx`` is searched.  For every *designer* or *resource* file a file with the
+  same base name but only ``.cs`` as extension is searched.  If this is found, the
+  :prop_sf:`VS_CSHARP_<tagname>` properties are set as follows:
+
+  for the **.cs** file:
+   - VS_CSHARP_SubType "Form"
+
+  for the **.Designer.cs** file (if it exists):
+   - VS_CSHARP_DependentUpon <cs-filename>
+   - VS_CSHARP_DesignTime "" (delete tag if previously defined)
+   - VS_CSHARP_AutoGen ""(delete tag if previously defined)
+
+  for the **.resx** file (if it exists):
+   - VS_RESOURCE_GENERATOR "" (delete tag if previously defined)
+   - VS_CSHARP_DependentUpon <cs-filename>
+   - VS_CSHARP_SubType "Designer"
+
+.. command:: csharp_set_designer_cs_properties
+
+  Sets source file properties of ``.Designer.cs`` files depending on
+  sibling filenames. Use this, if your CSharp target does **not**
+  use Windows Forms (for Windows Forms use
+  :command:`csharp_set_designer_cs_properties` instead)::
+
+    csharp_set_designer_cs_properties([<file1> [<file2> [...]]])
+
+  ``<fileN>``
+    List of all source files which are relevant for setting the
+    :prop_sf:`VS_CSHARP_<tagname>` properties (including ``.cs``,
+    ``.resx``, ``.settings`` and ``.Designer.cs`` extensions).
+
+  In the list of all given files for all files ending with
+  ``.Designer.cs`` is searched. For every *designer* file all files
+  with the same base name but different extensions are searched. If
+  a match is found, the source file properties of the *designer* file
+  are set depending on the extension of the matched file:
+
+  if match is **.resx** file:
+   - VS_CSHARP_AutoGen "True"
+   - VS_CSHARP_DesignTime "True"
+   - VS_CSHARP_DependentUpon <resx-filename>
+
+  if match is **.cs** file:
+   - VS_CSHARP_DependentUpon <cs-filename>
+
+  if match is **.settings** file:
+   - VS_CSHARP_AutoGen "True"
+   - VS_CSHARP_DesignTimeSharedInput "True"
+   - VS_CSHARP_DependentUpon <settings-filename>
+
+.. note::
+
+    Because the source file properties of the ``.Designer.cs`` file are set according
+    to the found matches and every match sets the **VS_CSHARP_DependentUpon**
+    property, there should only be one match for each ``Designer.cs`` file.
+
+.. command:: csharp_set_xaml_cs_properties
+
+  Sets source file properties for use of Windows Presentation Foundation (WPF) and
+  XAML. Use this, if your CSharp target uses WPF/XAML::
+
+    csharp_set_xaml_cs_properties([<file1> [<file2> [...]]])
+
+  ``<fileN>``
+    List of all source files which are relevant for setting the
+    :prop_sf:`VS_CSHARP_<tagname>` properties (including ``.cs``,
+    ``.xaml``, and ``.xaml.cs`` extensions).
+
+  In the list of all given files for all files ending with
+  ``.xaml.cs`` is searched. For every *xaml-cs* file, a file
+  with the same base name but extension ``.xaml`` is searched.
+  If a match is found, the source file properties of the ``.xaml.cs``
+  file are set:
+
+   - VS_CSHARP_DependentUpon <xaml-filename>
+
+Helper functions which are used by the above ones
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. command:: csharp_get_filename_keys
+
+  Helper function which computes a list of key values to identify
+  source files independently of relative/absolute paths given in cmake
+  and eliminates case sensitivity::
+
+    csharp_get_filename_keys(OUT [<file1> [<file2> [...]]])
+
+  ``OUT``
+    Name of the variable in which the list of keys is stored
+
+  ``<fileN>``
+    filename(s) as given to to CSharp target using :command:`add_library`
+    or :command:`add_executable`
+
+  In some way the function applies a canonicalization to the source names.
+  This is necessary to find file matches if the files have been added to
+  the target with different directory prefixes:
+
+  .. code-block:: cmake
+
+    add_library(lib
+      myfile.cs
+      ${CMAKE_CURRENT_SOURCE_DIR}/myfile.Designer.cs)
+
+    set_source_files_properties(myfile.Designer.cs PROPERTIES
+      VS_CSHARP_DependentUpon myfile.cs)
+
+    # this will fail, because in cmake
+    #  - ${CMAKE_CURRENT_SOURCE_DIR}/myfile.Designer.cs
+    #  - myfile.Designer.cs
+    # are not the same source file. The source file property is not set.
+
+.. command:: csharp_get_filename_key_base
+
+  Returns the full filepath and name **without** extension of a key.
+  KEY is expected to be a key from csharp_get_filename_keys. In BASE
+  the value of KEY without the file extension is returned::
+
+    csharp_get_filename_key_base(BASE KEY)
+
+  ``BASE``
+    Name of the variable with the computed "base" of ``KEY``.
+
+  ``KEY``
+    The key of which the base will be computed. Expected to be a
+    upper case full filename.
+
+.. command:: csharp_get_dependentupon_name
+
+  Computes a string which can be used as value for the source file property
+  :prop_sf:`VS_CSHARP_<tagname>` with *target* being ``DependentUpon``::
+
+    csharp_get_dependentupon_name(NAME FILE)
+
+  ``NAME``
+    Name of the variable with the result value
+
+  ``FILE``
+    Filename to convert to ``<DependentUpon>`` value
+
+  Actually this is only the filename without any path given at the moment.
+
+#]=======================================================================]
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+function(csharp_get_filename_keys OUT)
+  set(${OUT} "")
+  foreach(f ${ARGN})
+    get_filename_component(f ${f} REALPATH)
+    string(TOUPPER ${f} f)
+    list(APPEND ${OUT} ${f})
+  endforeach()
+  set(${OUT} "${${OUT}}" PARENT_SCOPE)
+endfunction()
+
+function(csharp_get_filename_key_base base key)
+  get_filename_component(dir ${key} DIRECTORY)
+  get_filename_component(fil ${key} NAME_WE)
+  set(${base} "${dir}/${fil}" PARENT_SCOPE)
+endfunction()
+
+function(csharp_get_dependentupon_name out in)
+  get_filename_component(${out} ${in} NAME)
+  set(${out} ${${out}} PARENT_SCOPE)
+endfunction()
+
+function(csharp_set_windows_forms_properties)
+  csharp_get_filename_keys(fileKeys ${ARGN})
+  foreach(key ${fileKeys})
+    get_filename_component(ext ${key} EXT)
+    if(${ext} STREQUAL ".DESIGNER.CS" OR
+       ${ext} STREQUAL ".RESX")
+      csharp_get_filename_key_base(NAME_BASE ${key})
+      list(FIND fileKeys "${NAME_BASE}.CS" FILE_INDEX)
+      if(NOT ${FILE_INDEX} EQUAL -1)
+        list(GET ARGN ${FILE_INDEX} FILE_NAME)
+        # set properties of main form file
+        set_source_files_properties("${FILE_NAME}"
+          PROPERTIES
+          VS_CSHARP_SubType "Form")
+        csharp_get_dependentupon_name(LINK "${FILE_NAME}")
+        # set properties of designer file (if found)
+        list(FIND fileKeys "${NAME_BASE}.DESIGNER.CS" FILE_INDEX)
+        if(NOT ${FILE_INDEX} EQUAL -1)
+          list(GET ARGN ${FILE_INDEX} FILE_NAME)
+          set_source_files_properties("${FILE_NAME}"
+            PROPERTIES
+            VS_CSHARP_DependentUpon "${LINK}"
+            VS_CSHARP_DesignTime ""
+            VS_CSHARP_AutoGen "")
+        endif()
+        # set properties of corresponding resource file (if found)
+        list(FIND fileKeys "${NAME_BASE}.RESX" FILE_INDEX)
+        if(NOT ${FILE_INDEX} EQUAL -1)
+          list(GET ARGN ${FILE_INDEX} FILE_NAME)
+          set_source_files_properties("${FILE_NAME}"
+            PROPERTIES
+            VS_RESOURCE_GENERATOR ""
+            VS_CSHARP_DependentUpon "${LINK}"
+            VS_CSHARP_SubType "Designer")
+        endif()
+      endif()
+    endif()
+  endforeach()
+endfunction()
+
+function(csharp_set_designer_cs_properties)
+  csharp_get_filename_keys(fileKeys ${ARGN})
+  set(INDEX -1)
+  foreach(key ${fileKeys})
+    math(EXPR INDEX "${INDEX}+1")
+    list(GET ARGN ${INDEX} source)
+    get_filename_component(ext ${key} EXT)
+    if(${ext} STREQUAL ".DESIGNER.CS")
+      csharp_get_filename_key_base(NAME_BASE ${key})
+      if("${NAME_BASE}.RESX" IN_LIST fileKeys)
+        list(FIND fileKeys "${NAME_BASE}.RESX" FILE_INDEX)
+        list(GET ARGN ${FILE_INDEX} FILE_NAME)
+        csharp_get_dependentupon_name(LINK "${FILE_NAME}")
+        set_source_files_properties("${source}"
+          PROPERTIES
+          VS_CSHARP_AutoGen "True"
+          VS_CSHARP_DesignTime "True"
+          VS_CSHARP_DependentUpon "${LINK}")
+      elseif("${NAME_BASE}.CS" IN_LIST fileKeys)
+        list(FIND fileKeys "${NAME_BASE}.CS" FILE_INDEX)
+        list(GET ARGN ${FILE_INDEX} FILE_NAME)
+        csharp_get_dependentupon_name(LINK "${FILE_NAME}")
+        set_source_files_properties("${source}"
+          PROPERTIES
+          VS_CSHARP_DependentUpon "${LINK}")
+      elseif("${NAME_BASE}.SETTINGS" IN_LIST fileKeys)
+        list(FIND fileKeys "${NAME_BASE}.SETTINGS" FILE_INDEX)
+        list(GET ARGN ${FILE_INDEX} FILE_NAME)
+        csharp_get_dependentupon_name(LINK "${FILE_NAME}")
+        set_source_files_properties("${source}"
+          PROPERTIES
+          VS_CSHARP_AutoGen "True"
+          VS_CSHARP_DesignTimeSharedInput "True"
+          VS_CSHARP_DependentUpon "${LINK}")
+      endif()
+    endif()
+  endforeach()
+endfunction()
+
+function(csharp_set_xaml_cs_properties)
+  csharp_get_filename_keys(fileKeys ${ARGN})
+  set(INDEX -1)
+  foreach(key ${fileKeys})
+    math(EXPR INDEX "${INDEX}+1")
+    list(GET ARGN ${INDEX} source)
+    get_filename_component(ext ${key} EXT)
+    if(${ext} STREQUAL ".XAML.CS")
+      csharp_get_filename_key_base(NAME_BASE ${key})
+      if("${NAME_BASE}.XAML" IN_LIST fileKeys)
+        list(FIND fileKeys "${NAME_BASE}.XAML" FILE_INDEX)
+        list(GET ARGN ${FILE_INDEX} FILE_NAME)
+        csharp_get_dependentupon_name(LINK "${FILE_NAME}")
+        set_source_files_properties("${source}"
+          PROPERTIES
+          VS_CSHARP_DependentUpon "${LINK}")
+      endif()
+    endif()
+  endforeach()
+endfunction()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/CTest.cmake b/share/cmake-3.22/Modules/CTest.cmake
new file mode 100644
index 0000000..8f8ebb4
--- /dev/null
+++ b/share/cmake-3.22/Modules/CTest.cmake
@@ -0,0 +1,267 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CTest
+-----
+
+Configure a project for testing with CTest/CDash
+
+Include this module in the top CMakeLists.txt file of a project to
+enable testing with CTest and dashboard submissions to CDash::
+
+  project(MyProject)
+  ...
+  include(CTest)
+
+The module automatically creates a ``BUILD_TESTING`` option that selects
+whether to enable testing support (``ON`` by default).  After including
+the module, use code like::
+
+  if(BUILD_TESTING)
+    # ... CMake code to create tests ...
+  endif()
+
+to creating tests when testing is enabled.
+
+To enable submissions to a CDash server, create a ``CTestConfig.cmake``
+file at the top of the project with content such as::
+
+  set(CTEST_NIGHTLY_START_TIME "01:00:00 UTC")
+  set(CTEST_SUBMIT_URL "http://my.cdash.org/submit.php?project=MyProject")
+
+(the CDash server can provide the file to a project administrator who
+configures ``MyProject``).  Settings in the config file are shared by
+both this ``CTest`` module and the :manual:`ctest(1)` command-line
+:ref:`Dashboard Client` mode (``ctest -S``).
+
+While building a project for submission to CDash, CTest scans the
+build output for errors and warnings and reports them with surrounding
+context from the build log.  This generic approach works for all build
+tools, but does not give details about the command invocation that
+produced a given problem.  One may get more detailed reports by setting
+the :variable:`CTEST_USE_LAUNCHERS` variable::
+
+  set(CTEST_USE_LAUNCHERS 1)
+
+in the ``CTestConfig.cmake`` file.
+#]=======================================================================]
+
+option(BUILD_TESTING "Build the testing tree." ON)
+
+# function to turn generator name into a version string
+# like vs9 or vs10
+function(GET_VS_VERSION_STRING generator var)
+  string(REGEX REPLACE "Visual Studio ([0-9][0-9]?)($|.*)" "\\1"
+    NUMBER "${generator}")
+    set(ver_string "vs${NUMBER}")
+  set(${var} ${ver_string} PARENT_SCOPE)
+endfunction()
+
+include(CTestUseLaunchers)
+
+if(BUILD_TESTING)
+  # Setup some auxiliary macros
+  macro(SET_IF_NOT_SET var val)
+    if(NOT DEFINED "${var}")
+      set("${var}" "${val}")
+    endif()
+  endmacro()
+
+  macro(SET_IF_SET var val)
+    if(NOT "${val}" STREQUAL "")
+      set("${var}" "${val}")
+    endif()
+  endmacro()
+
+  macro(SET_IF_SET_AND_NOT_SET var val)
+    if(NOT "${val}" STREQUAL "")
+      SET_IF_NOT_SET("${var}" "${val}")
+    endif()
+  endmacro()
+
+  # Make sure testing is enabled
+  enable_testing()
+
+  if(EXISTS "${PROJECT_SOURCE_DIR}/CTestConfig.cmake")
+    include("${PROJECT_SOURCE_DIR}/CTestConfig.cmake")
+    SET_IF_SET_AND_NOT_SET(NIGHTLY_START_TIME "${CTEST_NIGHTLY_START_TIME}")
+    SET_IF_SET_AND_NOT_SET(SUBMIT_URL "${CTEST_SUBMIT_URL}")
+    SET_IF_SET_AND_NOT_SET(DROP_METHOD "${CTEST_DROP_METHOD}")
+    SET_IF_SET_AND_NOT_SET(DROP_SITE "${CTEST_DROP_SITE}")
+    SET_IF_SET_AND_NOT_SET(DROP_SITE_USER "${CTEST_DROP_SITE_USER}")
+    SET_IF_SET_AND_NOT_SET(DROP_SITE_PASSWORD "${CTEST_DROP_SITE_PASWORD}")
+    SET_IF_SET_AND_NOT_SET(DROP_SITE_MODE "${CTEST_DROP_SITE_MODE}")
+    SET_IF_SET_AND_NOT_SET(DROP_LOCATION "${CTEST_DROP_LOCATION}")
+    SET_IF_SET_AND_NOT_SET(TRIGGER_SITE "${CTEST_TRIGGER_SITE}")
+    SET_IF_SET_AND_NOT_SET(UPDATE_TYPE "${CTEST_UPDATE_TYPE}")
+  endif()
+
+  # the project can have a DartConfig.cmake file
+  if(EXISTS "${PROJECT_SOURCE_DIR}/DartConfig.cmake")
+    include("${PROJECT_SOURCE_DIR}/DartConfig.cmake")
+  else()
+    # Dashboard is opened for submissions for a 24 hour period starting at
+    # the specified NIGHTLY_START_TIME. Time is specified in 24 hour format.
+    SET_IF_NOT_SET (NIGHTLY_START_TIME "00:00:00 EDT")
+    SET_IF_NOT_SET(DROP_METHOD "http")
+    SET_IF_NOT_SET (COMPRESS_SUBMISSION ON)
+  endif()
+  SET_IF_NOT_SET (NIGHTLY_START_TIME "00:00:00 EDT")
+
+  if(NOT SUBMIT_URL)
+    set(SUBMIT_URL "${DROP_METHOD}://")
+    if(DROP_SITE_USER)
+      string(APPEND SUBMIT_URL "${DROP_SITE_USER}")
+      if(DROP_SITE_PASSWORD)
+        string(APPEND SUBMIT_URL ":${DROP_SITE_PASSWORD}")
+      endif()
+      string(APPEND SUBMIT_URL "@")
+    endif()
+    string(APPEND SUBMIT_URL "${DROP_SITE}${DROP_LOCATION}")
+  endif()
+
+  if(NOT UPDATE_TYPE)
+    if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CVS")
+      set(UPDATE_TYPE cvs)
+    elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.svn")
+      set(UPDATE_TYPE svn)
+    elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.bzr")
+      set(UPDATE_TYPE bzr)
+    elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.hg")
+      set(UPDATE_TYPE hg)
+    elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git")
+      set(UPDATE_TYPE git)
+    endif()
+  endif()
+
+  string(TOLOWER "${UPDATE_TYPE}" _update_type)
+  if("${_update_type}" STREQUAL "cvs")
+    find_program(CVSCOMMAND cvs )
+    set(CVS_UPDATE_OPTIONS "-d -A -P" CACHE STRING
+      "Options passed to the cvs update command.")
+    set(UPDATE_COMMAND "${CVSCOMMAND}")
+    set(UPDATE_OPTIONS "${CVS_UPDATE_OPTIONS}")
+  elseif("${_update_type}" STREQUAL "svn")
+    find_program(SVNCOMMAND svn)
+    set(UPDATE_COMMAND "${SVNCOMMAND}")
+    set(UPDATE_OPTIONS "${SVN_UPDATE_OPTIONS}")
+  elseif("${_update_type}" STREQUAL "bzr")
+    find_program(BZRCOMMAND bzr)
+    set(UPDATE_COMMAND "${BZRCOMMAND}")
+    set(UPDATE_OPTIONS "${BZR_UPDATE_OPTIONS}")
+  elseif("${_update_type}" STREQUAL "hg")
+    find_program(HGCOMMAND hg)
+    set(UPDATE_COMMAND "${HGCOMMAND}")
+    set(UPDATE_OPTIONS "${HG_UPDATE_OPTIONS}")
+  elseif("${_update_type}" STREQUAL "git")
+    find_program(GITCOMMAND git)
+    set(UPDATE_COMMAND "${GITCOMMAND}")
+    set(UPDATE_OPTIONS "${GIT_UPDATE_OPTIONS}")
+  elseif("${_update_type}" STREQUAL "p4")
+    find_program(P4COMMAND p4)
+    set(UPDATE_COMMAND "${P4COMMAND}")
+    set(UPDATE_OPTIONS "${P4_UPDATE_OPTIONS}")
+  endif()
+
+  set(DART_TESTING_TIMEOUT 1500 CACHE STRING
+    "Maximum time allowed before CTest will kill the test.")
+
+  set(CTEST_SUBMIT_RETRY_DELAY 5 CACHE STRING
+    "How long to wait between timed-out CTest submissions.")
+  set(CTEST_SUBMIT_RETRY_COUNT 3 CACHE STRING
+    "How many times to retry timed-out CTest submissions.")
+
+  find_program(MEMORYCHECK_COMMAND
+    NAMES purify valgrind boundscheck drmemory cuda-memcheck compute-sanitizer
+    PATHS
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Purify\\Setup;InstallFolder]"
+    DOC "Path to the memory checking command, used for memory error detection."
+    )
+  set(MEMORYCHECK_SUPPRESSIONS_FILE "" CACHE FILEPATH
+    "File that contains suppressions for the memory checker")
+  find_program(COVERAGE_COMMAND gcov DOC
+    "Path to the coverage program that CTest uses for performing coverage inspection"
+    )
+  set(COVERAGE_EXTRA_FLAGS "-l" CACHE STRING
+    "Extra command line flags to pass to the coverage tool")
+
+  # set the site name
+  if(COMMAND cmake_host_system_information)
+    cmake_host_system_information(RESULT _ctest_hostname QUERY HOSTNAME)
+    set(SITE "${_ctest_hostname}" CACHE STRING "Name of the computer/site where compile is being run")
+    unset(_ctest_hostname)
+  else()
+    # This code path is needed for CMake itself during bootstrap.
+    site_name(SITE)
+  endif()
+  # set the build name
+  if(NOT BUILDNAME)
+    set(DART_COMPILER "${CMAKE_CXX_COMPILER}")
+    if(NOT DART_COMPILER)
+      set(DART_COMPILER "${CMAKE_C_COMPILER}")
+    endif()
+    if(NOT DART_COMPILER)
+      set(DART_COMPILER "unknown")
+    endif()
+    if(WIN32)
+      set(DART_NAME_COMPONENT "NAME_WE")
+    else()
+      set(DART_NAME_COMPONENT "NAME")
+    endif()
+    if(NOT BUILD_NAME_SYSTEM_NAME)
+      set(BUILD_NAME_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}")
+    endif()
+    if(WIN32)
+      set(BUILD_NAME_SYSTEM_NAME "Win32")
+    endif()
+    if(UNIX OR BORLAND)
+      get_filename_component(DART_COMPILER_NAME
+        "${DART_COMPILER}" ${DART_NAME_COMPONENT})
+    else()
+      get_filename_component(DART_COMPILER_NAME
+        "${CMAKE_MAKE_PROGRAM}" ${DART_NAME_COMPONENT})
+    endif()
+    if(DART_COMPILER_NAME MATCHES "devenv")
+      GET_VS_VERSION_STRING("${CMAKE_GENERATOR}" DART_COMPILER_NAME)
+    endif()
+    set(BUILDNAME "${BUILD_NAME_SYSTEM_NAME}-${DART_COMPILER_NAME}")
+  endif()
+
+  # the build command
+  build_command(MAKECOMMAND_DEFAULT_VALUE
+    CONFIGURATION "\${CTEST_CONFIGURATION_TYPE}")
+  set(MAKECOMMAND ${MAKECOMMAND_DEFAULT_VALUE}
+    CACHE STRING "Command to build the project")
+
+  # the default build configuration the ctest build handler will use
+  # if there is no -C arg given to ctest:
+  set(DEFAULT_CTEST_CONFIGURATION_TYPE "$ENV{CMAKE_CONFIG_TYPE}")
+  if(DEFAULT_CTEST_CONFIGURATION_TYPE STREQUAL "")
+    set(DEFAULT_CTEST_CONFIGURATION_TYPE "Release")
+  endif()
+
+  mark_as_advanced(
+    BZRCOMMAND
+    COVERAGE_COMMAND
+    COVERAGE_EXTRA_FLAGS
+    CTEST_SUBMIT_RETRY_DELAY
+    CTEST_SUBMIT_RETRY_COUNT
+    CVSCOMMAND
+    CVS_UPDATE_OPTIONS
+    DART_TESTING_TIMEOUT
+    GITCOMMAND
+    P4COMMAND
+    HGCOMMAND
+    MAKECOMMAND
+    MEMORYCHECK_COMMAND
+    MEMORYCHECK_SUPPRESSIONS_FILE
+    SITE
+    SVNCOMMAND
+    )
+  if(NOT RUN_FROM_DART)
+    set(RUN_FROM_CTEST_OR_DART 1)
+    include(CTestTargets)
+    set(RUN_FROM_CTEST_OR_DART)
+  endif()
+endif()
diff --git a/share/cmake-3.22/Modules/CTestCoverageCollectGCOV.cmake b/share/cmake-3.22/Modules/CTestCoverageCollectGCOV.cmake
new file mode 100644
index 0000000..a6fa3a4
--- /dev/null
+++ b/share/cmake-3.22/Modules/CTestCoverageCollectGCOV.cmake
@@ -0,0 +1,352 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CTestCoverageCollectGCOV
+------------------------
+
+.. versionadded:: 3.2
+
+This module provides the ``ctest_coverage_collect_gcov`` function.
+
+This function runs gcov on all .gcda files found in the binary tree
+and packages the resulting .gcov files into a tar file.
+This tarball also contains the following:
+
+* *data.json* defines the source and build directories for use by CDash.
+* *Labels.json* indicates any :prop_sf:`LABELS` that have been set on the
+  source files.
+* The *uncovered* directory holds any uncovered files found by
+  :variable:`CTEST_EXTRA_COVERAGE_GLOB`.
+
+After generating this tar file, it can be sent to CDash for display with the
+:command:`ctest_submit(CDASH_UPLOAD)` command.
+
+.. command:: ctest_coverage_collect_gcov
+
+  ::
+
+    ctest_coverage_collect_gcov(TARBALL <tarfile>
+      [SOURCE <source_dir>][BUILD <build_dir>]
+      [GCOV_COMMAND <gcov_command>]
+      [GCOV_OPTIONS <options>...]
+      )
+
+  Run gcov and package a tar file for CDash.  The options are:
+
+  ``TARBALL <tarfile>``
+    Specify the location of the ``.tar`` file to be created for later
+    upload to CDash.  Relative paths will be interpreted with respect
+    to the top-level build directory.
+
+  ``TARBALL_COMPRESSION <option>``
+    .. versionadded:: 3.18
+
+    Specify a compression algorithm for the
+    ``TARBALL`` data file.  Using this option reduces the size of the data file
+    before it is submitted to CDash.  ``<option>`` must be one of ``GZIP``,
+    ``BZIP2``, ``XZ``, ``ZSTD``, ``FROM_EXT``, or an expression that CMake
+    evaluates as ``FALSE``. The default value is ``BZIP2``.
+
+    If ``FROM_EXT`` is specified, the resulting file will be compressed based on
+    the file extension of the ``<tarfile>`` (i.e. ``.tar.gz`` will use ``GZIP``
+    compression). File extensions that will produce compressed output include
+    ``.tar.gz``, ``.tgz``, ``.tar.bzip2``, ``.tbz``, ``.tar.xz``, and ``.txz``.
+
+  ``SOURCE <source_dir>``
+    Specify the top-level source directory for the build.
+    Default is the value of :variable:`CTEST_SOURCE_DIRECTORY`.
+
+  ``BUILD <build_dir>``
+    Specify the top-level build directory for the build.
+    Default is the value of :variable:`CTEST_BINARY_DIRECTORY`.
+
+  ``GCOV_COMMAND <gcov_command>``
+    Specify the full path to the ``gcov`` command on the machine.
+    Default is the value of :variable:`CTEST_COVERAGE_COMMAND`.
+
+  ``GCOV_OPTIONS <options>...``
+    Specify options to be passed to gcov.  The ``gcov`` command
+    is run as ``gcov <options>... -o <gcov-dir> <file>.gcda``.
+    If not specified, the default option is just ``-b -x``.
+
+  ``GLOB``
+    .. versionadded:: 3.6
+
+    Recursively search for .gcda files in build_dir rather than
+    determining search locations by reading TargetDirectories.txt.
+
+  ``DELETE``
+    .. versionadded:: 3.6
+
+    Delete coverage files after they've been packaged into the .tar.
+
+  ``QUIET``
+    Suppress non-error messages that otherwise would have been
+    printed out by this function.
+
+  .. versionadded:: 3.3
+    Added support for the :variable:`CTEST_CUSTOM_COVERAGE_EXCLUDE` variable.
+
+#]=======================================================================]
+
+function(ctest_coverage_collect_gcov)
+  set(options QUIET GLOB DELETE)
+  set(oneValueArgs TARBALL SOURCE BUILD GCOV_COMMAND TARBALL_COMPRESSION)
+  set(multiValueArgs GCOV_OPTIONS)
+  cmake_parse_arguments(GCOV  "${options}" "${oneValueArgs}"
+    "${multiValueArgs}" "" ${ARGN} )
+  if(NOT DEFINED GCOV_TARBALL)
+    message(FATAL_ERROR
+      "TARBALL must be specified. for ctest_coverage_collect_gcov")
+  endif()
+  if(NOT DEFINED GCOV_SOURCE)
+    set(source_dir "${CTEST_SOURCE_DIRECTORY}")
+  else()
+    set(source_dir "${GCOV_SOURCE}")
+  endif()
+  if(NOT DEFINED GCOV_BUILD)
+    set(binary_dir "${CTEST_BINARY_DIRECTORY}")
+  else()
+    set(binary_dir "${GCOV_BUILD}")
+  endif()
+  if(NOT DEFINED GCOV_GCOV_COMMAND)
+    set(gcov_command "${CTEST_COVERAGE_COMMAND}")
+  else()
+    set(gcov_command "${GCOV_GCOV_COMMAND}")
+  endif()
+  if(NOT DEFINED GCOV_TARBALL_COMPRESSION)
+    set(GCOV_TARBALL_COMPRESSION "BZIP2")
+  elseif( GCOV_TARBALL_COMPRESSION AND
+      NOT GCOV_TARBALL_COMPRESSION MATCHES "^(GZIP|BZIP2|XZ|ZSTD|FROM_EXT)$")
+    message(FATAL_ERROR "TARBALL_COMPRESSION must be one of OFF, GZIP, "
+      "BZIP2, XZ, ZSTD, or FROM_EXT for ctest_coverage_collect_gcov")
+  endif()
+  # run gcov on each gcda file in the binary tree
+  set(gcda_files)
+  set(label_files)
+  if (GCOV_GLOB)
+      file(GLOB_RECURSE gfiles "${binary_dir}/*.gcda")
+      list(LENGTH gfiles len)
+      # if we have gcda files then also grab the labels file for that target
+      if(${len} GREATER 0)
+        file(GLOB_RECURSE lfiles RELATIVE ${binary_dir} "${binary_dir}/Labels.json")
+        list(APPEND gcda_files ${gfiles})
+        list(APPEND label_files ${lfiles})
+      endif()
+  else()
+    # look for gcda files in the target directories
+    # this will be faster and only look where the files will be
+    file(STRINGS "${binary_dir}/CMakeFiles/TargetDirectories.txt" target_dirs
+         ENCODING UTF-8)
+    foreach(target_dir ${target_dirs})
+      file(GLOB_RECURSE gfiles "${target_dir}/*.gcda")
+      list(LENGTH gfiles len)
+      # if we have gcda files then also grab the labels file for that target
+      if(${len} GREATER 0)
+        file(GLOB_RECURSE lfiles RELATIVE ${binary_dir}
+          "${target_dir}/Labels.json")
+        list(APPEND gcda_files ${gfiles})
+        list(APPEND label_files ${lfiles})
+      endif()
+    endforeach()
+  endif()
+  # return early if no coverage files were found
+  list(LENGTH gcda_files len)
+  if(len EQUAL 0)
+    if (NOT GCOV_QUIET)
+      message("ctest_coverage_collect_gcov: No .gcda files found, "
+        "ignoring coverage request.")
+    endif()
+    return()
+  endif()
+  # setup the dir for the coverage files
+  set(coverage_dir "${binary_dir}/Testing/CoverageInfo")
+  file(MAKE_DIRECTORY  "${coverage_dir}")
+  # run gcov, this will produce the .gcov files in the current
+  # working directory
+  if(NOT DEFINED GCOV_GCOV_OPTIONS)
+    set(GCOV_GCOV_OPTIONS -b -x)
+  endif()
+  if (GCOV_QUIET)
+    set(coverage_out_opts
+      OUTPUT_QUIET
+      ERROR_QUIET
+      )
+  else()
+    set(coverage_out_opts
+      OUTPUT_FILE "${coverage_dir}/gcov.log"
+      ERROR_FILE  "${coverage_dir}/gcov.log"
+      )
+  endif()
+  execute_process(COMMAND
+    ${gcov_command} ${GCOV_GCOV_OPTIONS} ${gcda_files}
+    RESULT_VARIABLE res
+    WORKING_DIRECTORY ${coverage_dir}
+    ${coverage_out_opts}
+    )
+
+  if (GCOV_DELETE)
+    file(REMOVE ${gcda_files})
+  endif()
+
+  if(NOT "${res}" EQUAL 0)
+    if (NOT GCOV_QUIET)
+      message(STATUS "Error running gcov: ${res}, see\n  ${coverage_dir}/gcov.log")
+    endif()
+  endif()
+  # create json file with project information
+  file(WRITE ${coverage_dir}/data.json
+    "{
+    \"Source\": \"${source_dir}\",
+    \"Binary\": \"${binary_dir}\"
+}")
+  # collect the gcov files
+  set(unfiltered_gcov_files)
+  file(GLOB_RECURSE unfiltered_gcov_files RELATIVE ${binary_dir} "${coverage_dir}/*.gcov")
+
+  # if CTEST_EXTRA_COVERAGE_GLOB was specified we search for files
+  # that might be uncovered
+  if (DEFINED CTEST_EXTRA_COVERAGE_GLOB)
+    set(uncovered_files)
+    foreach(search_entry IN LISTS CTEST_EXTRA_COVERAGE_GLOB)
+      if(NOT GCOV_QUIET)
+        message("Add coverage glob: ${search_entry}")
+      endif()
+      file(GLOB_RECURSE matching_files "${source_dir}/${search_entry}")
+      if (matching_files)
+        list(APPEND uncovered_files "${matching_files}")
+      endif()
+    endforeach()
+  endif()
+
+  set(gcov_files)
+  foreach(gcov_file ${unfiltered_gcov_files})
+    file(STRINGS ${binary_dir}/${gcov_file} first_line LIMIT_COUNT 1 ENCODING UTF-8)
+
+    set(is_excluded false)
+    if(first_line MATCHES "^        -:    0:Source:(.*)$")
+      set(source_file ${CMAKE_MATCH_1})
+    elseif(NOT GCOV_QUIET)
+      message(STATUS "Could not determine source file corresponding to: ${gcov_file}")
+    endif()
+
+    foreach(exclude_entry IN LISTS CTEST_CUSTOM_COVERAGE_EXCLUDE)
+      if(source_file MATCHES "${exclude_entry}")
+        set(is_excluded true)
+
+        if(NOT GCOV_QUIET)
+          message("Excluding coverage for: ${source_file} which matches ${exclude_entry}")
+        endif()
+
+        break()
+      endif()
+    endforeach()
+
+    get_filename_component(resolved_source_file "${source_file}" ABSOLUTE)
+    foreach(uncovered_file IN LISTS uncovered_files)
+      get_filename_component(resolved_uncovered_file "${uncovered_file}" ABSOLUTE)
+      if (resolved_uncovered_file STREQUAL resolved_source_file)
+        list(REMOVE_ITEM uncovered_files "${uncovered_file}")
+      endif()
+    endforeach()
+
+    if(NOT is_excluded)
+      list(APPEND gcov_files ${gcov_file})
+    endif()
+  endforeach()
+
+  foreach (uncovered_file ${uncovered_files})
+    # Check if this uncovered file should be excluded.
+    set(is_excluded false)
+    foreach(exclude_entry IN LISTS CTEST_CUSTOM_COVERAGE_EXCLUDE)
+      if(uncovered_file MATCHES "${exclude_entry}")
+        set(is_excluded true)
+        if(NOT GCOV_QUIET)
+          message("Excluding coverage for: ${uncovered_file} which matches ${exclude_entry}")
+        endif()
+        break()
+      endif()
+    endforeach()
+    if(is_excluded)
+      continue()
+    endif()
+
+    # Copy from source to binary dir, preserving any intermediate subdirectories.
+    get_filename_component(filename "${uncovered_file}" NAME)
+    get_filename_component(relative_path "${uncovered_file}" DIRECTORY)
+    string(REPLACE "${source_dir}" "" relative_path "${relative_path}")
+    if (relative_path)
+      # Strip leading slash.
+      string(SUBSTRING "${relative_path}" 1 -1 relative_path)
+    endif()
+    file(COPY ${uncovered_file} DESTINATION ${binary_dir}/uncovered/${relative_path})
+    if(relative_path)
+      list(APPEND uncovered_files_for_tar uncovered/${relative_path}/${filename})
+    else()
+      list(APPEND uncovered_files_for_tar uncovered/${filename})
+    endif()
+  endforeach()
+
+  # tar up the coverage info with the same date so that the md5
+  # sum will be the same for the tar file independent of file time
+  # stamps
+  string(REPLACE ";" "\n" gcov_files "${gcov_files}")
+  string(REPLACE ";" "\n" label_files "${label_files}")
+  string(REPLACE ";" "\n" uncovered_files_for_tar "${uncovered_files_for_tar}")
+  file(WRITE "${coverage_dir}/coverage_file_list.txt"
+    "${gcov_files}
+${coverage_dir}/data.json
+${label_files}
+${uncovered_files_for_tar}
+")
+
+  # Prepare tar command line arguments
+
+  set(tar_opts "")
+  # Select data compression mode
+  if( GCOV_TARBALL_COMPRESSION STREQUAL "FROM_EXT")
+    if( GCOV_TARBALL MATCHES [[\.(tgz|tar.gz)$]] )
+      string(APPEND tar_opts "z")
+    elseif( GCOV_TARBALL MATCHES [[\.(txz|tar.xz)$]] )
+      string(APPEND tar_opts "J")
+    elseif( GCOV_TARBALL MATCHES [[\.(tbz|tar.bz)$]] )
+      string(APPEND tar_opts "j")
+    endif()
+  elseif(GCOV_TARBALL_COMPRESSION STREQUAL "GZIP")
+    string(APPEND tar_opts "z")
+  elseif(GCOV_TARBALL_COMPRESSION STREQUAL "XZ")
+    string(APPEND tar_opts "J")
+  elseif(GCOV_TARBALL_COMPRESSION STREQUAL "BZIP2")
+    string(APPEND tar_opts "j")
+  elseif(GCOV_TARBALL_COMPRESSION STREQUAL "ZSTD")
+    set(zstd_tar_opt "--zstd")
+  endif()
+  # Verbosity options
+  if(NOT GCOV_QUIET AND NOT tar_opts MATCHES v)
+    string(APPEND tar_opts "v")
+  endif()
+  # Prepend option 'c' specifying 'create'
+  string(PREPEND tar_opts "c")
+  # Append option 'f' so that the next argument is the filename
+  string(APPEND tar_opts "f")
+
+  execute_process(COMMAND
+    ${CMAKE_COMMAND} -E tar ${tar_opts} ${GCOV_TARBALL} ${zstd_tar_opt}
+    "--mtime=1970-01-01 0:0:0 UTC"
+    "--format=gnutar"
+    --files-from=${coverage_dir}/coverage_file_list.txt
+    WORKING_DIRECTORY ${binary_dir})
+
+  if (GCOV_DELETE)
+    foreach(gcov_file ${unfiltered_gcov_files})
+      file(REMOVE ${binary_dir}/${gcov_file})
+    endforeach()
+    file(REMOVE ${coverage_dir}/coverage_file_list.txt)
+    file(REMOVE ${coverage_dir}/data.json)
+    if (EXISTS ${binary_dir}/uncovered)
+      file(REMOVE ${binary_dir}/uncovered)
+    endif()
+  endif()
+
+endfunction()
diff --git a/share/cmake-3.18/Modules/CTestScriptMode.cmake b/share/cmake-3.22/Modules/CTestScriptMode.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CTestScriptMode.cmake
rename to share/cmake-3.22/Modules/CTestScriptMode.cmake
diff --git a/share/cmake-3.18/Modules/CTestTargets.cmake b/share/cmake-3.22/Modules/CTestTargets.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CTestTargets.cmake
rename to share/cmake-3.22/Modules/CTestTargets.cmake
diff --git a/share/cmake-3.22/Modules/CTestUseLaunchers.cmake b/share/cmake-3.22/Modules/CTestUseLaunchers.cmake
new file mode 100644
index 0000000..23a206b
--- /dev/null
+++ b/share/cmake-3.22/Modules/CTestUseLaunchers.cmake
@@ -0,0 +1,73 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CTestUseLaunchers
+-----------------
+
+Set the RULE_LAUNCH_* global properties when CTEST_USE_LAUNCHERS is on.
+
+CTestUseLaunchers is automatically included when you include(CTest).
+However, it is split out into its own module file so projects can use
+the CTEST_USE_LAUNCHERS functionality independently.
+
+To use launchers, set CTEST_USE_LAUNCHERS to ON in a ctest -S
+dashboard script, and then also set it in the cache of the configured
+project.  Both cmake and ctest need to know the value of it for the
+launchers to work properly.  CMake needs to know in order to generate
+proper build rules, and ctest, in order to produce the proper error
+and warning analysis.
+
+For convenience, you may set the ENV variable
+CTEST_USE_LAUNCHERS_DEFAULT in your ctest -S script, too.  Then, as
+long as your CMakeLists uses include(CTest) or
+include(CTestUseLaunchers), it will use the value of the ENV variable
+to initialize a CTEST_USE_LAUNCHERS cache variable.  This cache
+variable initialization only occurs if CTEST_USE_LAUNCHERS is not
+already defined.
+
+.. versionadded:: 3.8
+  If CTEST_USE_LAUNCHERS is on in a ctest -S script
+  the ctest_configure command will add -DCTEST_USE_LAUNCHERS:BOOL=TRUE
+  to the cmake command used to configure the project.
+#]=======================================================================]
+
+if(NOT DEFINED CTEST_USE_LAUNCHERS AND DEFINED ENV{CTEST_USE_LAUNCHERS_DEFAULT})
+  set(CTEST_USE_LAUNCHERS "$ENV{CTEST_USE_LAUNCHERS_DEFAULT}"
+    CACHE INTERNAL "CTEST_USE_LAUNCHERS initial value from ENV")
+endif()
+
+if(NOT "${CMAKE_GENERATOR}" MATCHES "Make|Ninja")
+  set(CTEST_USE_LAUNCHERS 0)
+endif()
+
+if(CTEST_USE_LAUNCHERS)
+  set(__launch_common_options
+    "--target-name <TARGET_NAME> --build-dir <CMAKE_CURRENT_BINARY_DIR>")
+
+  set(__launch_compile_options
+    "${__launch_common_options} --output <OBJECT> --source <SOURCE> --language <LANGUAGE>")
+
+  set(__launch_link_options
+    "${__launch_common_options} --output <TARGET> --target-type <TARGET_TYPE> --language <LANGUAGE>")
+
+  set(__launch_custom_options
+    "${__launch_common_options} --output <OUTPUT>")
+
+  if("${CMAKE_GENERATOR}" MATCHES "Ninja")
+    string(APPEND __launch_compile_options " --filter-prefix <CMAKE_CL_SHOWINCLUDES_PREFIX>")
+  endif()
+
+  set(CTEST_LAUNCH_COMPILE
+    "\"${CMAKE_CTEST_COMMAND}\" --launch ${__launch_compile_options} --")
+
+  set(CTEST_LAUNCH_LINK
+    "\"${CMAKE_CTEST_COMMAND}\" --launch ${__launch_link_options} --")
+
+  set(CTEST_LAUNCH_CUSTOM
+    "\"${CMAKE_CTEST_COMMAND}\" --launch ${__launch_custom_options} --")
+
+  set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CTEST_LAUNCH_COMPILE}")
+  set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CTEST_LAUNCH_LINK}")
+  set_property(GLOBAL PROPERTY RULE_LAUNCH_CUSTOM "${CTEST_LAUNCH_CUSTOM}")
+endif()
diff --git a/share/cmake-3.22/Modules/CheckCCompilerFlag.cmake b/share/cmake-3.22/Modules/CheckCCompilerFlag.cmake
new file mode 100644
index 0000000..335b437
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckCCompilerFlag.cmake
@@ -0,0 +1,41 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckCCompilerFlag
+------------------
+
+Check whether the C compiler supports a given flag.
+
+.. command:: check_c_compiler_flag
+
+  .. code-block:: cmake
+
+    check_c_compiler_flag(<flag> <var>)
+
+  Check that the ``<flag>`` is accepted by the compiler without
+  a diagnostic.  Stores the result in an internal cache entry
+  named ``<var>``.
+
+This command temporarily sets the ``CMAKE_REQUIRED_DEFINITIONS`` variable
+and calls the ``check_c_source_compiles`` macro from the
+:module:`CheckCSourceCompiles` module.  See documentation of that
+module for a listing of variables that can otherwise modify the build.
+
+A positive result from this check indicates only that the compiler did not
+issue a diagnostic message when given the flag.  Whether the flag has any
+effect or even a specific one is beyond the scope of this module.
+
+.. note::
+  Since the :command:`try_compile` command forwards flags from variables
+  like :variable:`CMAKE_C_FLAGS <CMAKE_<LANG>_FLAGS>`, unknown flags
+  in such variables may cause a false negative for this check.
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(CheckCSourceCompiles)
+include(Internal/CheckCompilerFlag)
+
+macro (CHECK_C_COMPILER_FLAG _FLAG _RESULT)
+  cmake_check_compiler_flag(C "${_FLAG}" ${_RESULT})
+endmacro ()
diff --git a/share/cmake-3.22/Modules/CheckCSourceCompiles.cmake b/share/cmake-3.22/Modules/CheckCSourceCompiles.cmake
new file mode 100644
index 0000000..b24da49
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckCSourceCompiles.cmake
@@ -0,0 +1,77 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckCSourceCompiles
+--------------------
+
+Check if given C source compiles and links into an executable.
+
+.. command:: check_c_source_compiles
+
+  .. code-block:: cmake
+
+    check_c_source_compiles(<code> <resultVar>
+                            [FAIL_REGEX <regex1> [<regex2>...]])
+
+  Check that the source supplied in ``<code>`` can be compiled as a C source
+  file and linked as an executable (so it must contain at least a ``main()``
+  function). The result will be stored in the internal cache variable specified
+  by ``<resultVar>``, with a boolean true value for success and boolean false
+  for failure. If ``FAIL_REGEX`` is provided, then failure is determined by
+  checking if anything in the output matches any of the specified regular
+  expressions.
+
+  The underlying check is performed by the :command:`try_compile` command. The
+  compile and link commands can be influenced by setting any of the following
+  variables prior to calling ``check_c_source_compiles()``:
+
+  ``CMAKE_REQUIRED_FLAGS``
+    Additional flags to pass to the compiler. Note that the contents of
+    :variable:`CMAKE_C_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
+    configuration-specific variable are automatically added to the compiler
+    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
+
+  ``CMAKE_REQUIRED_DEFINITIONS``
+    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
+    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
+    ``<resultVar>`` will also be added automatically.
+
+  ``CMAKE_REQUIRED_INCLUDES``
+    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+    the compiler. These will be the only header search paths used by
+    ``try_compile()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
+    directory property will be ignored.
+
+  ``CMAKE_REQUIRED_LINK_OPTIONS``
+    .. versionadded:: 3.14
+
+    A :ref:`;-list <CMake Language Lists>` of options to add to the link
+    command (see :command:`try_compile` for further details).
+
+  ``CMAKE_REQUIRED_LIBRARIES``
+    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+    command. These can be the name of system libraries or they can be
+    :ref:`Imported Targets <Imported Targets>` (see :command:`try_compile` for
+    further details).
+
+  ``CMAKE_REQUIRED_QUIET``
+    .. versionadded:: 3.1
+
+    If this variable evaluates to a boolean true value, all status messages
+    associated with the check will be suppressed.
+
+  The check is only performed once, with the result cached in the variable
+  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
+  value rather than performing the check again, even if the ``<code>`` changes.
+  In order to force the check to be re-evaluated, the variable named by
+  ``<resultVar>`` must be manually removed from the cache.
+
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(Internal/CheckSourceCompiles)
+
+macro(CHECK_C_SOURCE_COMPILES SOURCE VAR)
+  cmake_check_source_compiles(C "${SOURCE}" ${VAR} ${ARGN})
+endmacro()
diff --git a/share/cmake-3.22/Modules/CheckCSourceRuns.cmake b/share/cmake-3.22/Modules/CheckCSourceRuns.cmake
new file mode 100644
index 0000000..a6081ff
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckCSourceRuns.cmake
@@ -0,0 +1,78 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckCSourceRuns
+----------------
+
+Check if given C source compiles and links into an executable and can
+subsequently be run.
+
+.. command:: check_c_source_runs
+
+  .. code-block:: cmake
+
+    check_c_source_runs(<code> <resultVar>)
+
+  Check that the source supplied in ``<code>`` can be compiled as a C source
+  file, linked as an executable and then run. The ``<code>`` must contain at
+  least a ``main()`` function. If the ``<code>`` could be built and run
+  successfully, the internal cache variable specified by ``<resultVar>`` will
+  be set to 1, otherwise it will be set to an value that evaluates to boolean
+  false (e.g. an empty string or an error message).
+
+  The underlying check is performed by the :command:`try_run` command. The
+  compile and link commands can be influenced by setting any of the following
+  variables prior to calling ``check_c_source_runs()``:
+
+  ``CMAKE_REQUIRED_FLAGS``
+    Additional flags to pass to the compiler. Note that the contents of
+    :variable:`CMAKE_C_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
+    configuration-specific variable are automatically added to the compiler
+    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
+
+  ``CMAKE_REQUIRED_DEFINITIONS``
+    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
+    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
+    ``<resultVar>`` will also be added automatically.
+
+  ``CMAKE_REQUIRED_INCLUDES``
+    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+    the compiler. These will be the only header search paths used by
+    ``try_run()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
+    directory property will be ignored.
+
+  ``CMAKE_REQUIRED_LINK_OPTIONS``
+    .. versionadded:: 3.14
+
+    A :ref:`;-list <CMake Language Lists>` of options to add to the link
+    command (see :command:`try_run` for further details).
+
+  ``CMAKE_REQUIRED_LIBRARIES``
+    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+    command. These can be the name of system libraries or they can be
+    :ref:`Imported Targets <Imported Targets>` (see :command:`try_run` for
+    further details).
+
+  ``CMAKE_REQUIRED_QUIET``
+    .. versionadded:: 3.1
+
+    If this variable evaluates to a boolean true value, all status messages
+    associated with the check will be suppressed.
+
+  The check is only performed once, with the result cached in the variable
+  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
+  value rather than performing the check again, even if the ``<code>`` changes.
+  In order to force the check to be re-evaluated, the variable named by
+  ``<resultVar>`` must be manually removed from the cache.
+
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(Internal/CheckSourceRuns)
+
+macro(CHECK_C_SOURCE_RUNS SOURCE VAR)
+  set(_CheckSourceRuns_old_signature 1)
+  cmake_check_source_runs(C "${SOURCE}" ${VAR} ${ARGN})
+  unset(_CheckSourceRuns_old_signature)
+endmacro()
diff --git a/share/cmake-3.22/Modules/CheckCXXCompilerFlag.cmake b/share/cmake-3.22/Modules/CheckCXXCompilerFlag.cmake
new file mode 100644
index 0000000..3bc3463
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckCXXCompilerFlag.cmake
@@ -0,0 +1,41 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckCXXCompilerFlag
+------------------------
+
+Check whether the CXX compiler supports a given flag.
+
+.. command:: check_cxx_compiler_flag
+
+  .. code-block:: cmake
+
+    check_cxx_compiler_flag(<flag> <var>)
+
+  Check that the ``<flag>`` is accepted by the compiler without
+  a diagnostic.  Stores the result in an internal cache entry
+  named ``<var>``.
+
+This command temporarily sets the ``CMAKE_REQUIRED_DEFINITIONS`` variable
+and calls the ``check_cxx_source_compiles`` macro from the
+:module:`CheckCXXSourceCompiles` module.  See documentation of that
+module for a listing of variables that can otherwise modify the build.
+
+A positive result from this check indicates only that the compiler did not
+issue a diagnostic message when given the flag.  Whether the flag has any
+effect or even a specific one is beyond the scope of this module.
+
+.. note::
+  Since the :command:`try_compile` command forwards flags from variables
+  like :variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>`, unknown flags
+  in such variables may cause a false negative for this check.
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(CheckCXXSourceCompiles)
+include(Internal/CheckCompilerFlag)
+
+macro (CHECK_CXX_COMPILER_FLAG _FLAG _RESULT)
+  cmake_check_compiler_flag(CXX "${_FLAG}" ${_RESULT})
+endmacro ()
diff --git a/share/cmake-3.22/Modules/CheckCXXSourceCompiles.cmake b/share/cmake-3.22/Modules/CheckCXXSourceCompiles.cmake
new file mode 100644
index 0000000..502bfa7
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckCXXSourceCompiles.cmake
@@ -0,0 +1,77 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckCXXSourceCompiles
+----------------------
+
+Check if given C++ source compiles and links into an executable.
+
+.. command:: check_cxx_source_compiles
+
+  .. code-block:: cmake
+
+    check_cxx_source_compiles(<code> <resultVar>
+                              [FAIL_REGEX <regex1> [<regex2>...]])
+
+  Check that the source supplied in ``<code>`` can be compiled as a C++ source
+  file and linked as an executable (so it must contain at least a ``main()``
+  function). The result will be stored in the internal cache variable specified
+  by ``<resultVar>``, with a boolean true value for success and boolean false
+  for failure. If ``FAIL_REGEX`` is provided, then failure is determined by
+  checking if anything in the output matches any of the specified regular
+  expressions.
+
+  The underlying check is performed by the :command:`try_compile` command. The
+  compile and link commands can be influenced by setting any of the following
+  variables prior to calling ``check_cxx_source_compiles()``:
+
+  ``CMAKE_REQUIRED_FLAGS``
+    Additional flags to pass to the compiler. Note that the contents of
+    :variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
+    configuration-specific variable are automatically added to the compiler
+    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
+
+  ``CMAKE_REQUIRED_DEFINITIONS``
+    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
+    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
+    ``<resultVar>`` will also be added automatically.
+
+  ``CMAKE_REQUIRED_INCLUDES``
+    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+    the compiler. These will be the only header search paths used by
+    ``try_compile()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
+    directory property will be ignored.
+
+  ``CMAKE_REQUIRED_LINK_OPTIONS``
+    .. versionadded:: 3.14
+
+    A :ref:`;-list <CMake Language Lists>` of options to add to the link
+    command (see :command:`try_compile` for further details).
+
+  ``CMAKE_REQUIRED_LIBRARIES``
+    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+    command. These can be the name of system libraries or they can be
+    :ref:`Imported Targets <Imported Targets>` (see :command:`try_compile` for
+    further details).
+
+  ``CMAKE_REQUIRED_QUIET``
+    .. versionadded:: 3.1
+
+    If this variable evaluates to a boolean true value, all status messages
+    associated with the check will be suppressed.
+
+  The check is only performed once, with the result cached in the variable
+  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
+  value rather than performing the check again, even if the ``<code>`` changes.
+  In order to force the check to be re-evaluated, the variable named by
+  ``<resultVar>`` must be manually removed from the cache.
+
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(Internal/CheckSourceCompiles)
+
+macro(CHECK_CXX_SOURCE_COMPILES SOURCE VAR)
+  cmake_check_source_compiles(CXX "${SOURCE}" ${VAR} ${ARGN})
+endmacro()
diff --git a/share/cmake-3.22/Modules/CheckCXXSourceRuns.cmake b/share/cmake-3.22/Modules/CheckCXXSourceRuns.cmake
new file mode 100644
index 0000000..af03453
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckCXXSourceRuns.cmake
@@ -0,0 +1,78 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckCXXSourceRuns
+------------------
+
+Check if given C++ source compiles and links into an executable and can
+subsequently be run.
+
+.. command:: check_cxx_source_runs
+
+  .. code-block:: cmake
+
+    check_cxx_source_runs(<code> <resultVar>)
+
+  Check that the source supplied in ``<code>`` can be compiled as a C++ source
+  file, linked as an executable and then run. The ``<code>`` must contain at
+  least a ``main()`` function. If the ``<code>`` could be built and run
+  successfully, the internal cache variable specified by ``<resultVar>`` will
+  be set to 1, otherwise it will be set to an value that evaluates to boolean
+  false (e.g. an empty string or an error message).
+
+  The underlying check is performed by the :command:`try_run` command. The
+  compile and link commands can be influenced by setting any of the following
+  variables prior to calling ``check_cxx_source_runs()``:
+
+  ``CMAKE_REQUIRED_FLAGS``
+    Additional flags to pass to the compiler. Note that the contents of
+    :variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
+    configuration-specific variable are automatically added to the compiler
+    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
+
+  ``CMAKE_REQUIRED_DEFINITIONS``
+    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
+    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
+    ``<resultVar>`` will also be added automatically.
+
+  ``CMAKE_REQUIRED_INCLUDES``
+    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+    the compiler. These will be the only header search paths used by
+    ``try_run()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
+    directory property will be ignored.
+
+  ``CMAKE_REQUIRED_LINK_OPTIONS``
+    .. versionadded:: 3.14
+
+    A :ref:`;-list <CMake Language Lists>` of options to add to the link
+    command (see :command:`try_run` for further details).
+
+  ``CMAKE_REQUIRED_LIBRARIES``
+    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+    command. These can be the name of system libraries or they can be
+    :ref:`Imported Targets <Imported Targets>` (see :command:`try_run` for
+    further details).
+
+  ``CMAKE_REQUIRED_QUIET``
+    .. versionadded:: 3.1
+
+    If this variable evaluates to a boolean true value, all status messages
+    associated with the check will be suppressed.
+
+  The check is only performed once, with the result cached in the variable
+  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
+  value rather than performing the check again, even if the ``<code>`` changes.
+  In order to force the check to be re-evaluated, the variable named by
+  ``<resultVar>`` must be manually removed from the cache.
+
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(Internal/CheckSourceRuns)
+
+macro(CHECK_CXX_SOURCE_RUNS SOURCE VAR)
+  set(_CheckSourceRuns_old_signature 1)
+  cmake_check_source_runs(CXX "${SOURCE}" ${VAR} ${ARGN})
+  unset(_CheckSourceRuns_old_signature)
+endmacro()
diff --git a/share/cmake-3.22/Modules/CheckCXXSymbolExists.cmake b/share/cmake-3.22/Modules/CheckCXXSymbolExists.cmake
new file mode 100644
index 0000000..7b13c3a
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckCXXSymbolExists.cmake
@@ -0,0 +1,78 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckCXXSymbolExists
+--------------------
+
+Check if a symbol exists as a function, variable, or macro in ``C++``.
+
+.. command:: check_cxx_symbol_exists
+
+  .. code-block:: cmake
+
+    check_cxx_symbol_exists(<symbol> <files> <variable>)
+
+  Check that the ``<symbol>`` is available after including given header
+  ``<files>`` and store the result in a ``<variable>``.  Specify the list of
+  files in one argument as a semicolon-separated list.
+  ``check_cxx_symbol_exists()`` can be used to check for symbols as seen by
+  the C++ compiler, as opposed to :command:`check_symbol_exists`, which always
+  uses the ``C`` compiler.
+
+  If the header files define the symbol as a macro it is considered
+  available and assumed to work.  If the header files declare the symbol
+  as a function or variable then the symbol must also be available for
+  linking.  If the symbol is a type, enum value, or C++ template it will
+  not be recognized: consider using the :module:`CheckTypeSize`
+  or :module:`CheckSourceCompiles` module instead.
+
+.. note::
+
+  This command is unreliable when ``<symbol>`` is (potentially) an overloaded
+  function. Since there is no reliable way to predict whether a given function
+  in the system environment may be defined as an overloaded function or may be
+  an overloaded function on other systems or will become so in the future, it
+  is generally advised to use the :module:`CheckCXXSourceCompiles` module for
+  checking any function symbol (unless somehow you surely know the checked
+  function is not overloaded on other systems or will not be so in the
+  future).
+
+The following variables may be set before calling this macro to modify
+the way the check is run:
+
+``CMAKE_REQUIRED_FLAGS``
+  string of compile command line flags.
+``CMAKE_REQUIRED_DEFINITIONS``
+  a :ref:`;-list <CMake Language Lists>` of macros to define (-DFOO=bar).
+``CMAKE_REQUIRED_INCLUDES``
+  a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+  the compiler.
+``CMAKE_REQUIRED_LINK_OPTIONS``
+  .. versionadded:: 3.14
+    a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
+``CMAKE_REQUIRED_LIBRARIES``
+  a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+  command. See policy :policy:`CMP0075`.
+``CMAKE_REQUIRED_QUIET``
+  .. versionadded:: 3.1
+    execute quietly without messages.
+
+For example:
+
+.. code-block:: cmake
+
+  include(CheckCXXSymbolExists)
+
+  # Check for macro SEEK_SET
+  check_cxx_symbol_exists(SEEK_SET "cstdio" HAVE_SEEK_SET)
+  # Check for function std::fopen
+  check_cxx_symbol_exists(std::fopen "cstdio" HAVE_STD_FOPEN)
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(CheckSymbolExists)
+
+macro(CHECK_CXX_SYMBOL_EXISTS SYMBOL FILES VARIABLE)
+  __CHECK_SYMBOL_EXISTS_IMPL("${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.cxx" "${SYMBOL}" "${FILES}" "${VARIABLE}" )
+endmacro()
diff --git a/share/cmake-3.22/Modules/CheckCompilerFlag.cmake b/share/cmake-3.22/Modules/CheckCompilerFlag.cmake
new file mode 100644
index 0000000..77c07b9
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckCompilerFlag.cmake
@@ -0,0 +1,41 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckCompilerFlag
+---------------------
+
+.. versionadded:: 3.19
+
+Check whether the compiler supports a given flag.
+
+.. command:: check_compiler_flag
+
+  .. code-block:: cmake
+
+    check_compiler_flag(<lang> <flag> <var>)
+
+Check that the ``<flag>`` is accepted by the compiler without a diagnostic.
+Stores the result in an internal cache entry named ``<var>``.
+
+This command temporarily sets the ``CMAKE_REQUIRED_DEFINITIONS`` variable
+and calls the ``check_source_compiles(<LANG>)`` function from the
+:module:`CheckSourceCompiles` module.  See documentation of that
+module for a listing of variables that can otherwise modify the build.
+
+A positive result from this check indicates only that the compiler did not
+issue a diagnostic message when given the flag.  Whether the flag has any
+effect or even a specific one is beyond the scope of this module.
+
+.. note::
+  Since the :command:`try_compile` command forwards flags from variables
+  like :variable:`CMAKE_<LANG>_FLAGS <CMAKE_<LANG>_FLAGS>`, unknown flags
+  in such variables may cause a false negative for this check.
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(Internal/CheckCompilerFlag)
+
+function(CHECK_COMPILER_FLAG _lang _flag _var)
+  cmake_check_compiler_flag(${_lang} "${_flag}" ${_var})
+endfunction()
diff --git a/share/cmake-3.18/Modules/CheckForPthreads.c b/share/cmake-3.22/Modules/CheckForPthreads.c
similarity index 100%
rename from share/cmake-3.18/Modules/CheckForPthreads.c
rename to share/cmake-3.22/Modules/CheckForPthreads.c
diff --git a/share/cmake-3.22/Modules/CheckFortranCompilerFlag.cmake b/share/cmake-3.22/Modules/CheckFortranCompilerFlag.cmake
new file mode 100644
index 0000000..5b1cd02
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckFortranCompilerFlag.cmake
@@ -0,0 +1,43 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckFortranCompilerFlag
+------------------------
+
+.. versionadded:: 3.3
+
+Check whether the Fortran compiler supports a given flag.
+
+.. command:: check_fortran_compiler_flag
+
+  .. code-block:: cmake
+
+    check_fortran_compiler_flag(<flag> <var>)
+
+  Check that the ``<flag>`` is accepted by the compiler without
+  a diagnostic.  Stores the result in an internal cache entry
+  named ``<var>``.
+
+This command temporarily sets the ``CMAKE_REQUIRED_DEFINITIONS`` variable
+and calls the ``check_fortran_source_compiles`` macro from the
+:module:`CheckFortranSourceCompiles` module.  See documentation of that
+module for a listing of variables that can otherwise modify the build.
+
+A positive result from this check indicates only that the compiler did not
+issue a diagnostic message when given the flag.  Whether the flag has any
+effect or even a specific one is beyond the scope of this module.
+
+.. note::
+  Since the :command:`try_compile` command forwards flags from variables
+  like :variable:`CMAKE_Fortran_FLAGS <CMAKE_<LANG>_FLAGS>`, unknown flags
+  in such variables may cause a false negative for this check.
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(CheckFortranSourceCompiles)
+include(Internal/CheckCompilerFlag)
+
+macro (CHECK_FORTRAN_COMPILER_FLAG _FLAG _RESULT)
+  cmake_check_compiler_flag(Fortran "${_FLAG}" ${_RESULT})
+endmacro ()
diff --git a/share/cmake-3.22/Modules/CheckFortranFunctionExists.cmake b/share/cmake-3.22/Modules/CheckFortranFunctionExists.cmake
new file mode 100644
index 0000000..8f1ca9d
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckFortranFunctionExists.cmake
@@ -0,0 +1,91 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckFortranFunctionExists
+--------------------------
+
+Check if a Fortran function exists.
+
+.. command:: CHECK_FORTRAN_FUNCTION_EXISTS
+
+  .. code-block:: cmake
+
+    CHECK_FORTRAN_FUNCTION_EXISTS(<function> <result>)
+
+  where
+
+  ``<function>``
+    the name of the Fortran function
+  ``<result>``
+    variable to store the result; will be created as an internal cache variable.
+
+.. note::
+
+  This command does not detect functions in Fortran modules. In general it is
+  recommended to use :module:`CheckSourceCompiles` instead to determine if a
+  Fortran function or subroutine is available.
+
+The following variables may be set before calling this macro to modify
+the way the check is run:
+
+``CMAKE_REQUIRED_LINK_OPTIONS``
+  .. versionadded:: 3.14
+    A :ref:`;-list <CMake Language Lists>` of options to add to the link
+    command (see :command:`try_compile` for further details).
+
+``CMAKE_REQUIRED_LIBRARIES``
+  A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+  command. These can be the name of system libraries or they can be
+  :ref:`Imported Targets <Imported Targets>` (see :command:`try_compile` for
+  further details).
+#]=======================================================================]
+
+include_guard(GLOBAL)
+
+macro(CHECK_FORTRAN_FUNCTION_EXISTS FUNCTION VARIABLE)
+  if(NOT DEFINED ${VARIABLE})
+    message(CHECK_START "Looking for Fortran ${FUNCTION}")
+    if(CMAKE_REQUIRED_LINK_OPTIONS)
+      set(CHECK_FUNCTION_EXISTS_ADD_LINK_OPTIONS
+        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
+    else()
+      set(CHECK_FUNCTION_EXISTS_ADD_LINK_OPTIONS)
+    endif()
+    if(CMAKE_REQUIRED_LIBRARIES)
+      set(CHECK_FUNCTION_EXISTS_ADD_LIBRARIES
+        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+    else()
+      set(CHECK_FUNCTION_EXISTS_ADD_LIBRARIES)
+    endif()
+    file(WRITE
+    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler.f
+    "
+      program TESTFortran
+      external ${FUNCTION}
+      call ${FUNCTION}()
+      end program TESTFortran
+    "
+    )
+    try_compile(${VARIABLE}
+      ${CMAKE_BINARY_DIR}
+      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler.f
+      ${CHECK_FUNCTION_EXISTS_ADD_LINK_OPTIONS}
+      ${CHECK_FUNCTION_EXISTS_ADD_LIBRARIES}
+      OUTPUT_VARIABLE OUTPUT
+    )
+    if(${VARIABLE})
+      set(${VARIABLE} 1 CACHE INTERNAL "Have Fortran function ${FUNCTION}")
+      message(CHECK_PASS "found")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Determining if the Fortran ${FUNCTION} exists passed with the following output:\n"
+        "${OUTPUT}\n\n")
+    else()
+      message(CHECK_FAIL "not found")
+      set(${VARIABLE} "" CACHE INTERNAL "Have Fortran function ${FUNCTION}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Determining if the Fortran ${FUNCTION} exists failed with the following output:\n"
+        "${OUTPUT}\n\n")
+    endif()
+  endif()
+endmacro()
diff --git a/share/cmake-3.22/Modules/CheckFortranSourceCompiles.cmake b/share/cmake-3.22/Modules/CheckFortranSourceCompiles.cmake
new file mode 100644
index 0000000..e134329
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckFortranSourceCompiles.cmake
@@ -0,0 +1,98 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckFortranSourceCompiles
+--------------------------
+
+.. versionadded:: 3.1
+
+Check if given Fortran source compiles and links into an executable.
+
+.. command:: check_fortran_source_compiles
+
+  .. code-block:: cmake
+
+    check_fortran_source_compiles(<code> <resultVar>
+        [FAIL_REGEX <regex>...]
+        [SRC_EXT <extension>]
+    )
+
+  Checks that the source supplied in ``<code>`` can be compiled as a Fortran
+  source file and linked as an executable. The ``<code>`` must be a Fortran program
+  containing at least an ``end`` statement--for example:
+
+  .. code-block:: cmake
+
+    check_fortran_source_compiles("character :: b; error stop b; end" F2018ESTOPOK SRC_EXT F90)
+
+  This command can help avoid costly build processes when a compiler lacks support
+  for a necessary feature, or a particular vendor library is not compatible with
+  the Fortran compiler version being used. This generate-time check may advise the
+  user of such before the main build process. See also the
+  :command:`check_fortran_source_runs` command to actually run the compiled code.
+
+  The result will be stored in the internal cache
+  variable ``<resultVar>``, with a boolean true value for success and boolean
+  false for failure.
+
+  If ``FAIL_REGEX`` is provided, then failure is determined by checking
+  if anything in the output matches any of the specified regular expressions.
+
+  By default, the test source file will be given a ``.F`` file extension. The
+  ``SRC_EXT`` option can be used to override this with ``.<extension>`` instead--
+  ``.F90`` is a typical choice.
+
+  The underlying check is performed by the :command:`try_compile` command. The
+  compile and link commands can be influenced by setting any of the following
+  variables prior to calling ``check_fortran_source_compiles()``:
+
+  ``CMAKE_REQUIRED_FLAGS``
+    Additional flags to pass to the compiler. Note that the contents of
+    :variable:`CMAKE_Fortran_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
+    configuration-specific variable are automatically added to the compiler
+    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
+
+  ``CMAKE_REQUIRED_DEFINITIONS``
+    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
+    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
+    ``<resultVar>`` will also be added automatically.
+
+  ``CMAKE_REQUIRED_INCLUDES``
+    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+    the compiler. These will be the only header search paths used by
+    ``try_compile()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
+    directory property will be ignored.
+
+  ``CMAKE_REQUIRED_LINK_OPTIONS``
+    .. versionadded:: 3.14
+
+    A :ref:`;-list <CMake Language Lists>` of options to add to the link
+    command (see :command:`try_compile` for further details).
+
+  ``CMAKE_REQUIRED_LIBRARIES``
+    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+    command. These can be the name of system libraries or they can be
+    :ref:`Imported Targets <Imported Targets>` (see :command:`try_compile` for
+    further details).
+
+  ``CMAKE_REQUIRED_QUIET``
+    If this variable evaluates to a boolean true value, all status messages
+    associated with the check will be suppressed.
+
+  The check is only performed once, with the result cached in the variable
+  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
+  value rather than performing the check again, even if the ``<code>`` changes.
+  In order to force the check to be re-evaluated, the variable named by
+  ``<resultVar>`` must be manually removed from the cache.
+
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(Internal/CheckSourceCompiles)
+
+macro(CHECK_Fortran_SOURCE_COMPILES SOURCE VAR)
+  # Pass the SRC_EXT we used by default historically.
+  # A user-provided SRC_EXT argument in ARGN will override ours.
+  cmake_check_source_compiles(Fortran "${SOURCE}" ${VAR} SRC_EXT "F" ${ARGN})
+endmacro()
diff --git a/share/cmake-3.22/Modules/CheckFortranSourceRuns.cmake b/share/cmake-3.22/Modules/CheckFortranSourceRuns.cmake
new file mode 100644
index 0000000..28f713f
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckFortranSourceRuns.cmake
@@ -0,0 +1,92 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckFortranSourceRuns
+----------------------
+
+.. versionadded:: 3.14
+
+Check if given Fortran source compiles and links into an executable and can
+subsequently be run.
+
+.. command:: check_fortran_source_runs
+
+  .. code-block:: cmake
+
+    check_fortran_source_runs(<code> <resultVar>
+        [SRC_EXT <extension>])
+
+  Check that the source supplied in ``<code>`` can be compiled as a Fortran source
+  file, linked as an executable and then run. The ``<code>`` must be a Fortran program
+  containing at least an ``end`` statement--for example:
+
+  .. code-block:: cmake
+
+    check_fortran_source_runs("real :: x[*]; call co_sum(x); end" F2018coarrayOK)
+
+  This command can help avoid costly build processes when a compiler lacks support
+  for a necessary feature, or a particular vendor library is not compatible with
+  the Fortran compiler version being used. Some of these failures only occur at runtime
+  instead of linktime, and a trivial runtime example can catch the issue before the
+  main build process.
+
+  If the ``<code>`` could be built and run
+  successfully, the internal cache variable specified by ``<resultVar>`` will
+  be set to 1, otherwise it will be set to an value that evaluates to boolean
+  false (e.g. an empty string or an error message).
+
+  By default, the test source file will be given a ``.F90`` file extension. The
+  ``SRC_EXT`` option can be used to override this with ``.<extension>`` instead.
+
+  The underlying check is performed by the :command:`try_run` command. The
+  compile and link commands can be influenced by setting any of the following
+  variables prior to calling ``check_fortran_source_runs()``:
+
+  ``CMAKE_REQUIRED_FLAGS``
+    Additional flags to pass to the compiler. Note that the contents of
+    :variable:`CMAKE_Fortran_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
+    configuration-specific variable are automatically added to the compiler
+    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
+
+  ``CMAKE_REQUIRED_DEFINITIONS``
+    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
+    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
+    ``<resultVar>`` will also be added automatically.
+
+  ``CMAKE_REQUIRED_INCLUDES``
+    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+    the compiler. These will be the only header search paths used by
+    ``try_run()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
+    directory property will be ignored.
+
+  ``CMAKE_REQUIRED_LINK_OPTIONS``
+    A :ref:`;-list <CMake Language Lists>` of options to add to the link
+    command (see :command:`try_run` for further details).
+
+  ``CMAKE_REQUIRED_LIBRARIES``
+    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+    command. These can be the name of system libraries or they can be
+    :ref:`Imported Targets <Imported Targets>` (see :command:`try_run` for
+    further details).
+
+  ``CMAKE_REQUIRED_QUIET``
+    If this variable evaluates to a boolean true value, all status messages
+    associated with the check will be suppressed.
+
+  The check is only performed once, with the result cached in the variable
+  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
+  value rather than performing the check again, even if the ``<code>`` changes.
+  In order to force the check to be re-evaluated, the variable named by
+  ``<resultVar>`` must be manually removed from the cache.
+
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(Internal/CheckSourceRuns)
+
+macro(CHECK_Fortran_SOURCE_RUNS SOURCE VAR)
+  # Pass the SRC_EXT we used by default historically.
+  # A user-provided SRC_EXT argument in ARGN will override ours.
+  cmake_check_source_runs(Fortran "${SOURCE}" ${VAR} SRC_EXT "F90" ${ARGN})
+endmacro()
diff --git a/share/cmake-3.18/Modules/CheckFunctionExists.c b/share/cmake-3.22/Modules/CheckFunctionExists.c
similarity index 100%
rename from share/cmake-3.18/Modules/CheckFunctionExists.c
rename to share/cmake-3.22/Modules/CheckFunctionExists.c
diff --git a/share/cmake-3.22/Modules/CheckFunctionExists.cmake b/share/cmake-3.22/Modules/CheckFunctionExists.cmake
new file mode 100644
index 0000000..9efa132
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckFunctionExists.cmake
@@ -0,0 +1,121 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckFunctionExists
+-------------------
+
+Check if a C function can be linked
+
+.. command:: check_function_exists
+
+  .. code-block:: cmake
+
+    check_function_exists(<function> <variable>)
+
+  Checks that the ``<function>`` is provided by libraries on the system and store
+  the result in a ``<variable>``, which will be created as an internal
+  cache variable.
+
+The following variables may be set before calling this macro to modify the
+way the check is run:
+
+``CMAKE_REQUIRED_FLAGS``
+  string of compile command line flags.
+``CMAKE_REQUIRED_DEFINITIONS``
+  a :ref:`;-list <CMake Language Lists>` of macros to define (-DFOO=bar).
+``CMAKE_REQUIRED_INCLUDES``
+  a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+  the compiler.
+``CMAKE_REQUIRED_LINK_OPTIONS``
+  .. versionadded:: 3.14
+    a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
+``CMAKE_REQUIRED_LIBRARIES``
+  a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+  command. See policy :policy:`CMP0075`.
+``CMAKE_REQUIRED_QUIET``
+  .. versionadded:: 3.1
+    execute quietly without messages.
+
+.. note::
+
+  Prefer using :Module:`CheckSymbolExists` instead of this module,
+  for the following reasons:
+
+  * ``check_function_exists()`` can't detect functions that are inlined
+    in headers or specified as a macro.
+
+  * ``check_function_exists()`` can't detect anything in the 32-bit
+    versions of the Win32 API, because of a mismatch in calling conventions.
+
+  * ``check_function_exists()`` only verifies linking, it does not verify
+    that the function is declared in system headers.
+#]=======================================================================]
+
+include_guard(GLOBAL)
+
+macro(CHECK_FUNCTION_EXISTS FUNCTION VARIABLE)
+  if(NOT DEFINED "${VARIABLE}" OR "x${${VARIABLE}}" STREQUAL "x${VARIABLE}")
+    set(MACRO_CHECK_FUNCTION_DEFINITIONS
+      "-DCHECK_FUNCTION_EXISTS=${FUNCTION} ${CMAKE_REQUIRED_FLAGS}")
+    if(NOT CMAKE_REQUIRED_QUIET)
+      message(CHECK_START "Looking for ${FUNCTION}")
+    endif()
+    if(CMAKE_REQUIRED_LINK_OPTIONS)
+      set(CHECK_FUNCTION_EXISTS_ADD_LINK_OPTIONS
+        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
+    else()
+      set(CHECK_FUNCTION_EXISTS_ADD_LINK_OPTIONS)
+    endif()
+    if(CMAKE_REQUIRED_LIBRARIES)
+      set(CHECK_FUNCTION_EXISTS_ADD_LIBRARIES
+        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+    else()
+      set(CHECK_FUNCTION_EXISTS_ADD_LIBRARIES)
+    endif()
+    if(CMAKE_REQUIRED_INCLUDES)
+      set(CHECK_FUNCTION_EXISTS_ADD_INCLUDES
+        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
+    else()
+      set(CHECK_FUNCTION_EXISTS_ADD_INCLUDES)
+    endif()
+
+    if(CMAKE_C_COMPILER_LOADED)
+      set(_cfe_source ${CMAKE_ROOT}/Modules/CheckFunctionExists.c)
+    elseif(CMAKE_CXX_COMPILER_LOADED)
+      set(_cfe_source ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckFunctionExists/CheckFunctionExists.cxx)
+      configure_file(${CMAKE_ROOT}/Modules/CheckFunctionExists.c "${_cfe_source}" COPYONLY)
+    else()
+      message(FATAL_ERROR "CHECK_FUNCTION_EXISTS needs either C or CXX language enabled")
+    endif()
+
+    try_compile(${VARIABLE}
+      ${CMAKE_BINARY_DIR}
+      ${_cfe_source}
+      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+      ${CHECK_FUNCTION_EXISTS_ADD_LINK_OPTIONS}
+      ${CHECK_FUNCTION_EXISTS_ADD_LIBRARIES}
+      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+      "${CHECK_FUNCTION_EXISTS_ADD_INCLUDES}"
+      OUTPUT_VARIABLE OUTPUT)
+    unset(_cfe_source)
+
+    if(${VARIABLE})
+      set(${VARIABLE} 1 CACHE INTERNAL "Have function ${FUNCTION}")
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_PASS "found")
+      endif()
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Determining if the function ${FUNCTION} exists passed with the following output:\n"
+        "${OUTPUT}\n\n")
+    else()
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_FAIL "not found")
+      endif()
+      set(${VARIABLE} "" CACHE INTERNAL "Have function ${FUNCTION}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Determining if the function ${FUNCTION} exists failed with the following output:\n"
+        "${OUTPUT}\n\n")
+    endif()
+  endif()
+endmacro()
diff --git a/share/cmake-3.22/Modules/CheckIPOSupported.cmake b/share/cmake-3.22/Modules/CheckIPOSupported.cmake
new file mode 100644
index 0000000..0bc3c92
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckIPOSupported.cmake
@@ -0,0 +1,244 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckIPOSupported
+-----------------
+
+.. versionadded:: 3.9
+
+Check whether the compiler supports an interprocedural optimization (IPO/LTO).
+Use this before enabling the :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target
+property.
+
+.. command:: check_ipo_supported
+
+  ::
+
+    check_ipo_supported([RESULT <result>] [OUTPUT <output>]
+                        [LANGUAGES <lang>...])
+
+  Options are:
+
+  ``RESULT <result>``
+    Set ``<result>`` variable to ``YES`` if IPO is supported by the
+    compiler and ``NO`` otherwise.  If this option is not given then
+    the command will issue a fatal error if IPO is not supported.
+  ``OUTPUT <output>``
+    Set ``<output>`` variable with details about any error.
+  ``LANGUAGES <lang>...``
+    Specify languages whose compilers to check.
+    Languages ``C``, ``CXX``, and ``Fortran`` are supported.
+
+It makes no sense to use this module when :policy:`CMP0069` is set to ``OLD`` so
+module will return error in this case. See policy :policy:`CMP0069` for details.
+
+.. versionadded:: 3.13
+  Add support for Visual Studio generators.
+
+Examples
+^^^^^^^^
+
+.. code-block:: cmake
+
+  check_ipo_supported() # fatal error if IPO is not supported
+  set_property(TARGET foo PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
+
+.. code-block:: cmake
+
+  # Optional IPO. Do not use IPO if it's not supported by compiler.
+  check_ipo_supported(RESULT result OUTPUT output)
+  if(result)
+    set_property(TARGET foo PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
+  else()
+    message(WARNING "IPO is not supported: ${output}")
+  endif()
+
+#]=======================================================================]
+
+# X_RESULT - name of the final result variable
+# X_OUTPUT - name of the variable with information about error
+macro(_ipo_not_supported output)
+  if(NOT X_RESULT)
+    message(FATAL_ERROR "IPO is not supported (${output}).")
+  endif()
+
+  set("${X_RESULT}" NO PARENT_SCOPE)
+  if(X_OUTPUT)
+    set("${X_OUTPUT}" "${output}" PARENT_SCOPE)
+  endif()
+endmacro()
+
+# Run IPO/LTO test
+macro(_ipo_run_language_check language)
+  set(testdir "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/_CMakeLTOTest-${language}")
+
+  file(REMOVE_RECURSE "${testdir}")
+  file(MAKE_DIRECTORY "${testdir}")
+
+  set(bindir "${testdir}/bin")
+  set(srcdir "${testdir}/src")
+
+  file(MAKE_DIRECTORY "${bindir}")
+  file(MAKE_DIRECTORY "${srcdir}")
+
+  set(TRY_COMPILE_PROJECT_NAME "lto-test")
+
+  set(try_compile_src "${CMAKE_ROOT}/Modules/CheckIPOSupported")
+
+  # Use:
+  # * TRY_COMPILE_PROJECT_NAME
+  # * CMAKE_VERSION
+  configure_file(
+      "${try_compile_src}/CMakeLists-${language}.txt.in"
+      "${srcdir}/CMakeLists.txt"
+      @ONLY
+  )
+
+  string(COMPARE EQUAL "${language}" "C" is_c)
+  string(COMPARE EQUAL "${language}" "CXX" is_cxx)
+  string(COMPARE EQUAL "${language}" "Fortran" is_fortran)
+
+  if(is_c)
+    set(copy_sources foo.c main.c)
+  elseif(is_cxx)
+    set(copy_sources foo.cpp main.cpp)
+  elseif(is_fortran)
+    set(copy_sources foo.f main.f)
+  else()
+    message(FATAL_ERROR "Language not supported")
+  endif()
+
+  foreach(x ${copy_sources})
+    configure_file(
+        "${try_compile_src}/${x}"
+        "${srcdir}/${x}"
+        COPYONLY
+    )
+  endforeach()
+
+  try_compile(
+      _IPO_LANGUAGE_CHECK_RESULT
+      "${bindir}"
+      "${srcdir}"
+      "${TRY_COMPILE_PROJECT_NAME}"
+      CMAKE_FLAGS
+      "-DCMAKE_VERBOSE_MAKEFILE=ON"
+      "-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON"
+      OUTPUT_VARIABLE output
+  )
+  set(_IPO_LANGUAGE_CHECK_RESULT "${_IPO_LANGUAGE_CHECK_RESULT}")
+  unset(_IPO_LANGUAGE_CHECK_RESULT CACHE)
+
+  if(NOT _IPO_LANGUAGE_CHECK_RESULT)
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+      "${language} compiler IPO check failed with the following output:\n"
+      "${output}\n")
+    _ipo_not_supported("check failed to compile")
+    if(X_OUTPUT)
+      set("${X_OUTPUT}" "${output}" PARENT_SCOPE)
+    endif()
+    return()
+  endif()
+endmacro()
+
+function(check_ipo_supported)
+  cmake_policy(GET CMP0069 x)
+
+  string(COMPARE EQUAL "${x}" "" not_set)
+  if(not_set)
+    message(FATAL_ERROR "Policy CMP0069 is not set")
+  endif()
+
+  string(COMPARE EQUAL "${x}" "OLD" is_old)
+  if(is_old)
+    message(FATAL_ERROR "Policy CMP0069 set to OLD")
+  endif()
+
+  set(optional)
+  set(one RESULT OUTPUT)
+  set(multiple LANGUAGES)
+
+  # Introduce:
+  # * X_RESULT
+  # * X_OUTPUT
+  # * X_LANGUAGES
+  cmake_parse_arguments(X "${optional}" "${one}" "${multiple}" "${ARGV}")
+
+  string(COMPARE NOTEQUAL "${X_UNPARSED_ARGUMENTS}" "" has_unparsed)
+  if(has_unparsed)
+    message(FATAL_ERROR "Unparsed arguments: ${X_UNPARSED_ARGUMENTS}")
+  endif()
+
+  string(COMPARE EQUAL "${X_LANGUAGES}" "" no_languages)
+  if(no_languages)
+    # User did not set any languages, use defaults
+    get_property(enabled_languages GLOBAL PROPERTY ENABLED_LANGUAGES)
+    string(COMPARE EQUAL "${enabled_languages}" "" no_languages)
+    if(no_languages)
+      _ipo_not_supported(
+          "no languages found in ENABLED_LANGUAGES global property"
+      )
+      return()
+    endif()
+
+    set(languages "")
+    list(FIND enabled_languages "CXX" result)
+    if(NOT result EQUAL -1)
+      list(APPEND languages "CXX")
+    endif()
+
+    list(FIND enabled_languages "C" result)
+    if(NOT result EQUAL -1)
+      list(APPEND languages "C")
+    endif()
+
+    list(FIND enabled_languages "Fortran" result)
+    if(NOT result EQUAL -1)
+      list(APPEND languages "Fortran")
+    endif()
+
+    string(COMPARE EQUAL "${languages}" "" no_languages)
+    if(no_languages)
+      _ipo_not_supported(
+          "no C/CXX/Fortran languages found in ENABLED_LANGUAGES global property"
+      )
+      return()
+    endif()
+  else()
+    set(languages "${X_LANGUAGES}")
+
+    set(unsupported_languages "${languages}")
+    list(REMOVE_ITEM unsupported_languages "C" "CXX" "Fortran")
+    string(COMPARE NOTEQUAL "${unsupported_languages}" "" has_unsupported)
+    if(has_unsupported)
+      _ipo_not_supported(
+          "language(s) '${unsupported_languages}' not supported"
+      )
+      return()
+    endif()
+  endif()
+
+  foreach(lang ${languages})
+    if(NOT _CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE)
+      _ipo_not_supported("CMake doesn't support IPO for current ${lang} compiler")
+      return()
+    endif()
+
+    if(NOT _CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER)
+      _ipo_not_supported("${lang} compiler doesn't support IPO")
+      return()
+    endif()
+  endforeach()
+
+  if(CMAKE_GENERATOR MATCHES "^Visual Studio 9 ")
+    _ipo_not_supported("CMake doesn't support IPO for current generator")
+    return()
+  endif()
+
+  foreach(x ${languages})
+    _ipo_run_language_check(${x})
+  endforeach()
+
+  set("${X_RESULT}" YES PARENT_SCOPE)
+endfunction()
diff --git a/share/cmake-3.18/Modules/CheckIPOSupported/CMakeLists-C.txt.in b/share/cmake-3.22/Modules/CheckIPOSupported/CMakeLists-C.txt.in
similarity index 100%
rename from share/cmake-3.18/Modules/CheckIPOSupported/CMakeLists-C.txt.in
rename to share/cmake-3.22/Modules/CheckIPOSupported/CMakeLists-C.txt.in
diff --git a/share/cmake-3.18/Modules/CheckIPOSupported/CMakeLists-CXX.txt.in b/share/cmake-3.22/Modules/CheckIPOSupported/CMakeLists-CXX.txt.in
similarity index 100%
rename from share/cmake-3.18/Modules/CheckIPOSupported/CMakeLists-CXX.txt.in
rename to share/cmake-3.22/Modules/CheckIPOSupported/CMakeLists-CXX.txt.in
diff --git a/share/cmake-3.18/Modules/CheckIPOSupported/CMakeLists-Fortran.txt.in b/share/cmake-3.22/Modules/CheckIPOSupported/CMakeLists-Fortran.txt.in
similarity index 100%
rename from share/cmake-3.18/Modules/CheckIPOSupported/CMakeLists-Fortran.txt.in
rename to share/cmake-3.22/Modules/CheckIPOSupported/CMakeLists-Fortran.txt.in
diff --git a/share/cmake-3.18/Modules/CheckIPOSupported/foo.c b/share/cmake-3.22/Modules/CheckIPOSupported/foo.c
similarity index 100%
rename from share/cmake-3.18/Modules/CheckIPOSupported/foo.c
rename to share/cmake-3.22/Modules/CheckIPOSupported/foo.c
diff --git a/share/cmake-3.18/Modules/CheckIPOSupported/foo.cpp b/share/cmake-3.22/Modules/CheckIPOSupported/foo.cpp
similarity index 100%
rename from share/cmake-3.18/Modules/CheckIPOSupported/foo.cpp
rename to share/cmake-3.22/Modules/CheckIPOSupported/foo.cpp
diff --git a/share/cmake-3.18/Modules/CheckIPOSupported/foo.f b/share/cmake-3.22/Modules/CheckIPOSupported/foo.f
similarity index 100%
rename from share/cmake-3.18/Modules/CheckIPOSupported/foo.f
rename to share/cmake-3.22/Modules/CheckIPOSupported/foo.f
diff --git a/share/cmake-3.18/Modules/CheckIPOSupported/main.c b/share/cmake-3.22/Modules/CheckIPOSupported/main.c
similarity index 100%
rename from share/cmake-3.18/Modules/CheckIPOSupported/main.c
rename to share/cmake-3.22/Modules/CheckIPOSupported/main.c
diff --git a/share/cmake-3.18/Modules/CheckIPOSupported/main.cpp b/share/cmake-3.22/Modules/CheckIPOSupported/main.cpp
similarity index 100%
rename from share/cmake-3.18/Modules/CheckIPOSupported/main.cpp
rename to share/cmake-3.22/Modules/CheckIPOSupported/main.cpp
diff --git a/share/cmake-3.18/Modules/CheckIPOSupported/main.f b/share/cmake-3.22/Modules/CheckIPOSupported/main.f
similarity index 100%
rename from share/cmake-3.18/Modules/CheckIPOSupported/main.f
rename to share/cmake-3.22/Modules/CheckIPOSupported/main.f
diff --git a/share/cmake-3.18/Modules/CheckIncludeFile.c.in b/share/cmake-3.22/Modules/CheckIncludeFile.c.in
similarity index 100%
rename from share/cmake-3.18/Modules/CheckIncludeFile.c.in
rename to share/cmake-3.22/Modules/CheckIncludeFile.c.in
diff --git a/share/cmake-3.22/Modules/CheckIncludeFile.cmake b/share/cmake-3.22/Modules/CheckIncludeFile.cmake
new file mode 100644
index 0000000..71ddde7
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckIncludeFile.cmake
@@ -0,0 +1,132 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckIncludeFile
+----------------
+
+Provides a macro to check if a header file can be included in ``C``.
+
+.. command:: CHECK_INCLUDE_FILE
+
+  .. code-block:: cmake
+
+    CHECK_INCLUDE_FILE(<include> <variable> [<flags>])
+
+  Check if the given ``<include>`` file may be included in a ``C``
+  source file and store the result in an internal cache entry named
+  ``<variable>``.  The optional third argument may be used to add
+  compilation flags to the check (or use ``CMAKE_REQUIRED_FLAGS`` below).
+
+The following variables may be set before calling this macro to modify
+the way the check is run:
+
+``CMAKE_REQUIRED_FLAGS``
+  string of compile command line flags.
+``CMAKE_REQUIRED_DEFINITIONS``
+  a :ref:`;-list <CMake Language Lists>` of macros to define (-DFOO=bar).
+``CMAKE_REQUIRED_INCLUDES``
+  a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+  the compiler.
+``CMAKE_REQUIRED_LINK_OPTIONS``
+  .. versionadded:: 3.14
+    a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
+``CMAKE_REQUIRED_LIBRARIES``
+  a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+  command. See policy :policy:`CMP0075`.
+``CMAKE_REQUIRED_QUIET``
+  .. versionadded:: 3.1
+    execute quietly without messages.
+
+See the :module:`CheckIncludeFiles` module to check for multiple headers
+at once.  See the :module:`CheckIncludeFileCXX` module to check for headers
+using the ``CXX`` language.
+#]=======================================================================]
+
+include_guard(GLOBAL)
+
+macro(CHECK_INCLUDE_FILE INCLUDE VARIABLE)
+  if(NOT DEFINED "${VARIABLE}")
+    if(CMAKE_REQUIRED_INCLUDES)
+      set(CHECK_INCLUDE_FILE_C_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}")
+    else()
+      set(CHECK_INCLUDE_FILE_C_INCLUDE_DIRS)
+    endif()
+    set(MACRO_CHECK_INCLUDE_FILE_FLAGS ${CMAKE_REQUIRED_FLAGS})
+    set(CHECK_INCLUDE_FILE_VAR ${INCLUDE})
+    configure_file(${CMAKE_ROOT}/Modules/CheckIncludeFile.c.in
+      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.c)
+    if(NOT CMAKE_REQUIRED_QUIET)
+      message(CHECK_START "Looking for ${INCLUDE}")
+    endif()
+    if(${ARGC} EQUAL 3)
+      set(CMAKE_C_FLAGS_SAVE ${CMAKE_C_FLAGS})
+      string(APPEND CMAKE_C_FLAGS " ${ARGV2}")
+    endif()
+
+    set(_CIF_LINK_OPTIONS)
+    if(CMAKE_REQUIRED_LINK_OPTIONS)
+      set(_CIF_LINK_OPTIONS LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
+    endif()
+
+    set(_CIF_LINK_LIBRARIES "")
+    if(CMAKE_REQUIRED_LIBRARIES)
+      cmake_policy(GET CMP0075 _CIF_CMP0075
+        PARENT_SCOPE # undocumented, do not use outside of CMake
+        )
+      if("x${_CIF_CMP0075}x" STREQUAL "xNEWx")
+        set(_CIF_LINK_LIBRARIES LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+      elseif("x${_CIF_CMP0075}x" STREQUAL "xOLDx")
+      elseif(NOT _CIF_CMP0075_WARNED)
+        set(_CIF_CMP0075_WARNED 1)
+        message(AUTHOR_WARNING
+          "Policy CMP0075 is not set: Include file check macros honor CMAKE_REQUIRED_LIBRARIES.  "
+          "Run \"cmake --help-policy CMP0075\" for policy details.  "
+          "Use the cmake_policy command to set the policy and suppress this warning."
+          "\n"
+          "CMAKE_REQUIRED_LIBRARIES is set to:\n"
+          "  ${CMAKE_REQUIRED_LIBRARIES}\n"
+          "For compatibility with CMake 3.11 and below this check is ignoring it."
+          )
+      endif()
+      unset(_CIF_CMP0075)
+    endif()
+
+    try_compile(${VARIABLE}
+      ${CMAKE_BINARY_DIR}
+      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.c
+      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+      ${_CIF_LINK_OPTIONS}
+      ${_CIF_LINK_LIBRARIES}
+      CMAKE_FLAGS
+      -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILE_FLAGS}
+      "${CHECK_INCLUDE_FILE_C_INCLUDE_DIRS}"
+      OUTPUT_VARIABLE OUTPUT)
+    unset(_CIF_LINK_OPTIONS)
+    unset(_CIF_LINK_LIBRARIES)
+
+    if(${ARGC} EQUAL 3)
+      set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS_SAVE})
+    endif()
+
+    if(${VARIABLE})
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_PASS "found")
+      endif()
+      set(${VARIABLE} 1 CACHE INTERNAL "Have include ${INCLUDE}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Determining if the include file ${INCLUDE} "
+        "exists passed with the following output:\n"
+        "${OUTPUT}\n\n")
+    else()
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_FAIL "not found")
+      endif()
+      set(${VARIABLE} "" CACHE INTERNAL "Have include ${INCLUDE}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Determining if the include file ${INCLUDE} "
+        "exists failed with the following output:\n"
+        "${OUTPUT}\n\n")
+    endif()
+  endif()
+endmacro()
diff --git a/share/cmake-3.18/Modules/CheckIncludeFile.cxx.in b/share/cmake-3.22/Modules/CheckIncludeFile.cxx.in
similarity index 100%
rename from share/cmake-3.18/Modules/CheckIncludeFile.cxx.in
rename to share/cmake-3.22/Modules/CheckIncludeFile.cxx.in
diff --git a/share/cmake-3.22/Modules/CheckIncludeFileCXX.cmake b/share/cmake-3.22/Modules/CheckIncludeFileCXX.cmake
new file mode 100644
index 0000000..953224e
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckIncludeFileCXX.cmake
@@ -0,0 +1,131 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckIncludeFileCXX
+-------------------
+
+Provides a macro to check if a header file can be included in ``CXX``.
+
+.. command:: CHECK_INCLUDE_FILE_CXX
+
+  .. code-block:: cmake
+
+    CHECK_INCLUDE_FILE_CXX(<include> <variable> [<flags>])
+
+  Check if the given ``<include>`` file may be included in a ``CXX``
+  source file and store the result in an internal cache entry named
+  ``<variable>``.  The optional third argument may be used to add
+  compilation flags to the check (or use ``CMAKE_REQUIRED_FLAGS`` below).
+
+The following variables may be set before calling this macro to modify
+the way the check is run:
+
+``CMAKE_REQUIRED_FLAGS``
+  string of compile command line flags.
+``CMAKE_REQUIRED_DEFINITIONS``
+  a :ref:`;-list <CMake Language Lists>` of macros to define (-DFOO=bar).
+``CMAKE_REQUIRED_INCLUDES``
+  a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+  the compiler.
+``CMAKE_REQUIRED_LINK_OPTIONS``
+  .. versionadded:: 3.14
+    a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
+``CMAKE_REQUIRED_LIBRARIES``
+  a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+  command. See policy :policy:`CMP0075`.
+``CMAKE_REQUIRED_QUIET``
+  .. versionadded:: 3.1
+    execute quietly without messages.
+
+See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFiles`
+to check for one or more ``C`` headers.
+#]=======================================================================]
+
+include_guard(GLOBAL)
+
+macro(CHECK_INCLUDE_FILE_CXX INCLUDE VARIABLE)
+  if(NOT DEFINED "${VARIABLE}" OR "x${${VARIABLE}}" STREQUAL "x${VARIABLE}")
+    if(CMAKE_REQUIRED_INCLUDES)
+      set(CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}")
+    else()
+      set(CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS)
+    endif()
+    set(MACRO_CHECK_INCLUDE_FILE_FLAGS ${CMAKE_REQUIRED_FLAGS})
+    set(CHECK_INCLUDE_FILE_VAR ${INCLUDE})
+    configure_file(${CMAKE_ROOT}/Modules/CheckIncludeFile.cxx.in
+      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx)
+    if(NOT CMAKE_REQUIRED_QUIET)
+      message(CHECK_START "Looking for C++ include ${INCLUDE}")
+    endif()
+    if(${ARGC} EQUAL 3)
+      set(CMAKE_CXX_FLAGS_SAVE ${CMAKE_CXX_FLAGS})
+      string(APPEND CMAKE_CXX_FLAGS " ${ARGV2}")
+    endif()
+
+    set(_CIF_LINK_OPTIONS)
+    if(CMAKE_REQUIRED_LINK_OPTIONS)
+      set(_CIF_LINK_OPTIONS LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
+    endif()
+
+    set(_CIF_LINK_LIBRARIES "")
+    if(CMAKE_REQUIRED_LIBRARIES)
+      cmake_policy(GET CMP0075 _CIF_CMP0075
+        PARENT_SCOPE # undocumented, do not use outside of CMake
+        )
+      if("x${_CIF_CMP0075}x" STREQUAL "xNEWx")
+        set(_CIF_LINK_LIBRARIES LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+      elseif("x${_CIF_CMP0075}x" STREQUAL "xOLDx")
+      elseif(NOT _CIF_CMP0075_WARNED)
+        set(_CIF_CMP0075_WARNED 1)
+        message(AUTHOR_WARNING
+          "Policy CMP0075 is not set: Include file check macros honor CMAKE_REQUIRED_LIBRARIES.  "
+          "Run \"cmake --help-policy CMP0075\" for policy details.  "
+          "Use the cmake_policy command to set the policy and suppress this warning."
+          "\n"
+          "CMAKE_REQUIRED_LIBRARIES is set to:\n"
+          "  ${CMAKE_REQUIRED_LIBRARIES}\n"
+          "For compatibility with CMake 3.11 and below this check is ignoring it."
+          )
+      endif()
+      unset(_CIF_CMP0075)
+    endif()
+
+    try_compile(${VARIABLE}
+      ${CMAKE_BINARY_DIR}
+      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx
+      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+      ${_CIF_LINK_OPTIONS}
+      ${_CIF_LINK_LIBRARIES}
+      CMAKE_FLAGS
+      -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILE_FLAGS}
+      "${CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS}"
+      OUTPUT_VARIABLE OUTPUT)
+    unset(_CIF_LINK_OPTIONS)
+    unset(_CIF_LINK_LIBRARIES)
+
+    if(${ARGC} EQUAL 3)
+      set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS_SAVE})
+    endif()
+
+    if(${VARIABLE})
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_PASS "found")
+      endif()
+      set(${VARIABLE} 1 CACHE INTERNAL "Have include ${INCLUDE}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Determining if the include file ${INCLUDE} "
+        "exists passed with the following output:\n"
+        "${OUTPUT}\n\n")
+    else()
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_FAIL "not found")
+      endif()
+      set(${VARIABLE} "" CACHE INTERNAL "Have include ${INCLUDE}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Determining if the include file ${INCLUDE} "
+        "exists failed with the following output:\n"
+        "${OUTPUT}\n\n")
+    endif()
+  endif()
+endmacro()
diff --git a/share/cmake-3.22/Modules/CheckIncludeFiles.cmake b/share/cmake-3.22/Modules/CheckIncludeFiles.cmake
new file mode 100644
index 0000000..1800ca8
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckIncludeFiles.cmake
@@ -0,0 +1,170 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckIncludeFiles
+-----------------
+
+Provides a macro to check if a list of one or more header files can
+be included together.
+
+.. command:: CHECK_INCLUDE_FILES
+
+  .. code-block:: cmake
+
+    CHECK_INCLUDE_FILES("<includes>" <variable> [LANGUAGE <language>])
+
+  Check if the given ``<includes>`` list may be included together
+  in a source file and store the result in an internal cache
+  entry named ``<variable>``.  Specify the ``<includes>`` argument
+  as a :ref:`;-list <CMake Language Lists>` of header file names.
+
+  If ``LANGUAGE`` is set, the specified compiler will be used to perform the
+  check. Acceptable values are ``C`` and ``CXX``. If not set, the C compiler
+  will be used if enabled. If the C compiler is not enabled, the C++
+  compiler will be used if enabled.
+
+The following variables may be set before calling this macro to modify
+the way the check is run:
+
+``CMAKE_REQUIRED_FLAGS``
+  string of compile command line flags.
+``CMAKE_REQUIRED_DEFINITIONS``
+  a :ref:`;-list <CMake Language Lists>` of macros to define (-DFOO=bar).
+``CMAKE_REQUIRED_INCLUDES``
+  a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+  the compiler.
+``CMAKE_REQUIRED_LINK_OPTIONS``
+  .. versionadded:: 3.14
+    a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
+``CMAKE_REQUIRED_LIBRARIES``
+  a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+  command. See policy :policy:`CMP0075`.
+``CMAKE_REQUIRED_QUIET``
+  .. versionadded:: 3.1
+    execute quietly without messages.
+
+See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFileCXX`
+to check for a single header file in ``C`` or ``CXX`` languages.
+#]=======================================================================]
+
+include_guard(GLOBAL)
+
+macro(CHECK_INCLUDE_FILES INCLUDE VARIABLE)
+  if(NOT DEFINED "${VARIABLE}")
+    set(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n")
+
+    if("x${ARGN}" STREQUAL "x")
+       if(CMAKE_C_COMPILER_LOADED)
+         set(_lang C)
+       elseif(CMAKE_CXX_COMPILER_LOADED)
+         set(_lang CXX)
+       else()
+         message(FATAL_ERROR "CHECK_INCLUDE_FILES needs either C or CXX language enabled.\n")
+       endif()
+    elseif("x${ARGN}" MATCHES "^xLANGUAGE;([a-zA-Z]+)$")
+      set(_lang "${CMAKE_MATCH_1}")
+    elseif("x${ARGN}" MATCHES "^xLANGUAGE$")
+      message(FATAL_ERROR "No languages listed for LANGUAGE option.\nSupported languages: C, CXX.\n")
+    else()
+      message(FATAL_ERROR "Unknown arguments:\n  ${ARGN}\n")
+    endif()
+
+    if(_lang STREQUAL "C")
+      set(src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckIncludeFiles/${VARIABLE}.c)
+    elseif(_lang STREQUAL "CXX")
+      set(src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckIncludeFiles/${VARIABLE}.cpp)
+    else()
+      message(FATAL_ERROR "Unknown language:\n  ${_lang}\nSupported languages: C, CXX.\n")
+    endif()
+
+    if(CMAKE_REQUIRED_INCLUDES)
+      set(CHECK_INCLUDE_FILES_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}")
+    else()
+      set(CHECK_INCLUDE_FILES_INCLUDE_DIRS)
+    endif()
+    set(CHECK_INCLUDE_FILES_CONTENT "/* */\n")
+    set(MACRO_CHECK_INCLUDE_FILES_FLAGS ${CMAKE_REQUIRED_FLAGS})
+    foreach(FILE ${INCLUDE})
+      string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT
+        "#include <${FILE}>\n")
+    endforeach()
+    string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT
+      "\n\nint main(void){return 0;}\n")
+    configure_file("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
+      "${src}" @ONLY)
+
+    set(_INCLUDE ${INCLUDE}) # remove empty elements
+    if("${_INCLUDE}" MATCHES "^([^;]+);.+;([^;]+)$")
+      list(LENGTH _INCLUDE _INCLUDE_LEN)
+      set(_description "${_INCLUDE_LEN} include files ${CMAKE_MATCH_1}, ..., ${CMAKE_MATCH_2}")
+    elseif("${_INCLUDE}" MATCHES "^([^;]+);([^;]+)$")
+      set(_description "include files ${CMAKE_MATCH_1}, ${CMAKE_MATCH_2}")
+    else()
+      set(_description "include file ${_INCLUDE}")
+    endif()
+
+    set(_CIF_LINK_OPTIONS)
+    if(CMAKE_REQUIRED_LINK_OPTIONS)
+      set(_CIF_LINK_OPTIONS LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
+    endif()
+
+    set(_CIF_LINK_LIBRARIES "")
+    if(CMAKE_REQUIRED_LIBRARIES)
+      cmake_policy(GET CMP0075 _CIF_CMP0075
+        PARENT_SCOPE # undocumented, do not use outside of CMake
+        )
+      if("x${_CIF_CMP0075}x" STREQUAL "xNEWx")
+        set(_CIF_LINK_LIBRARIES LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+      elseif("x${_CIF_CMP0075}x" STREQUAL "xOLDx")
+      elseif(NOT _CIF_CMP0075_WARNED)
+        set(_CIF_CMP0075_WARNED 1)
+        message(AUTHOR_WARNING
+          "Policy CMP0075 is not set: Include file check macros honor CMAKE_REQUIRED_LIBRARIES.  "
+          "Run \"cmake --help-policy CMP0075\" for policy details.  "
+          "Use the cmake_policy command to set the policy and suppress this warning."
+          "\n"
+          "CMAKE_REQUIRED_LIBRARIES is set to:\n"
+          "  ${CMAKE_REQUIRED_LIBRARIES}\n"
+          "For compatibility with CMake 3.11 and below this check is ignoring it."
+          )
+      endif()
+      unset(_CIF_CMP0075)
+    endif()
+
+    if(NOT CMAKE_REQUIRED_QUIET)
+      message(CHECK_START "Looking for ${_description}")
+    endif()
+    try_compile(${VARIABLE}
+      ${CMAKE_BINARY_DIR}
+      ${src}
+      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+      ${_CIF_LINK_OPTIONS}
+      ${_CIF_LINK_LIBRARIES}
+      CMAKE_FLAGS
+      -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILES_FLAGS}
+      "${CHECK_INCLUDE_FILES_INCLUDE_DIRS}"
+      OUTPUT_VARIABLE OUTPUT)
+    unset(_CIF_LINK_OPTIONS)
+    unset(_CIF_LINK_LIBRARIES)
+    if(${VARIABLE})
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_PASS "found")
+      endif()
+      set(${VARIABLE} 1 CACHE INTERNAL "Have include ${INCLUDE}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Determining if files ${INCLUDE} "
+        "exist passed with the following output:\n"
+        "${OUTPUT}\n\n")
+    else()
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_FAIL "not found")
+      endif()
+      set(${VARIABLE} "" CACHE INTERNAL "Have includes ${INCLUDE}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Determining if files ${INCLUDE} "
+        "exist failed with the following output:\n"
+        "${OUTPUT}\nSource:\n${CMAKE_CONFIGURABLE_FILE_CONTENT}\n")
+    endif()
+  endif()
+endmacro()
diff --git a/share/cmake-3.22/Modules/CheckLanguage.cmake b/share/cmake-3.22/Modules/CheckLanguage.cmake
new file mode 100644
index 0000000..52f707c
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckLanguage.cmake
@@ -0,0 +1,117 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckLanguage
+-------------
+
+Check if a language can be enabled
+
+Usage:
+
+::
+
+  check_language(<lang>)
+
+where ``<lang>`` is a language that may be passed to :command:`enable_language`
+such as ``Fortran``.  If :variable:`CMAKE_<LANG>_COMPILER` is already defined
+the check does nothing.  Otherwise it tries enabling the language in a
+test project.  The result is cached in :variable:`CMAKE_<LANG>_COMPILER`
+as the compiler that was found, or ``NOTFOUND`` if the language cannot be
+enabled. For CUDA which can have an explicit host compiler, the cache
+:variable:`CMAKE_CUDA_HOST_COMPILER` variable will be set if it was required
+for compilation (and cleared if it was not).
+
+Example:
+
+::
+
+  check_language(Fortran)
+  if(CMAKE_Fortran_COMPILER)
+    enable_language(Fortran)
+  else()
+    message(STATUS "No Fortran support")
+  endif()
+#]=======================================================================]
+
+include_guard(GLOBAL)
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0126 NEW)
+
+macro(check_language lang)
+  if(NOT DEFINED CMAKE_${lang}_COMPILER)
+    set(_desc "Looking for a ${lang} compiler")
+    message(CHECK_START "${_desc}")
+    file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang})
+
+    set(extra_compiler_variables)
+    if(${lang} STREQUAL CUDA AND NOT CMAKE_GENERATOR MATCHES "Visual Studio")
+      set(extra_compiler_variables "set(CMAKE_CUDA_HOST_COMPILER \\\"\${CMAKE_CUDA_HOST_COMPILER}\\\")")
+    endif()
+
+    set(_cl_content
+      "cmake_minimum_required(VERSION ${CMAKE_VERSION})
+project(Check${lang} ${lang})
+file(WRITE \"\${CMAKE_CURRENT_BINARY_DIR}/result.cmake\"
+  \"set(CMAKE_${lang}_COMPILER \\\"\${CMAKE_${lang}_COMPILER}\\\")\\n\"
+  \"${extra_compiler_variables}\\n\"
+  )"
+    )
+
+    file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}/CMakeLists.txt"
+      "${_cl_content}")
+    if(CMAKE_GENERATOR_INSTANCE)
+      set(_D_CMAKE_GENERATOR_INSTANCE "-DCMAKE_GENERATOR_INSTANCE:INTERNAL=${CMAKE_GENERATOR_INSTANCE}")
+    else()
+      set(_D_CMAKE_GENERATOR_INSTANCE "")
+    endif()
+    if(CMAKE_GENERATOR MATCHES "^(Xcode$|Green Hills MULTI$|Visual Studio)")
+      set(_D_CMAKE_MAKE_PROGRAM "")
+    else()
+      set(_D_CMAKE_MAKE_PROGRAM "-DCMAKE_MAKE_PROGRAM:FILEPATH=${CMAKE_MAKE_PROGRAM}")
+    endif()
+    if(CMAKE_TOOLCHAIN_FILE)
+      set(_D_CMAKE_TOOLCHAIN_FILE "-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_TOOLCHAIN_FILE}")
+    else()
+      set(_D_CMAKE_TOOLCHAIN_FILE "")
+    endif()
+    execute_process(
+      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}
+      COMMAND ${CMAKE_COMMAND} . -G ${CMAKE_GENERATOR}
+                                 -A "${CMAKE_GENERATOR_PLATFORM}"
+                                 -T "${CMAKE_GENERATOR_TOOLSET}"
+                                 ${_D_CMAKE_GENERATOR_INSTANCE}
+                                 ${_D_CMAKE_MAKE_PROGRAM}
+                                 ${_D_CMAKE_TOOLCHAIN_FILE}
+      OUTPUT_VARIABLE _cl_output
+      ERROR_VARIABLE _cl_output
+      RESULT_VARIABLE _cl_result
+      )
+    include(${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}/result.cmake OPTIONAL)
+    if(CMAKE_${lang}_COMPILER AND "${_cl_result}" STREQUAL "0")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "${_desc} passed with the following output:\n"
+        "${_cl_output}\n")
+      set(_CHECK_COMPILER_STATUS CHECK_PASS)
+    else()
+      set(CMAKE_${lang}_COMPILER NOTFOUND)
+      set(_CHECK_COMPILER_STATUS CHECK_FAIL)
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "${_desc} failed with the following output:\n"
+        "${_cl_output}\n")
+    endif()
+    message(${_CHECK_COMPILER_STATUS} "${CMAKE_${lang}_COMPILER}")
+    set(CMAKE_${lang}_COMPILER "${CMAKE_${lang}_COMPILER}" CACHE FILEPATH "${lang} compiler")
+    mark_as_advanced(CMAKE_${lang}_COMPILER)
+
+    if(CMAKE_${lang}_HOST_COMPILER)
+      message(STATUS "Looking for a ${lang} host compiler - ${CMAKE_${lang}_HOST_COMPILER}")
+      set(CMAKE_${lang}_HOST_COMPILER "${CMAKE_${lang}_HOST_COMPILER}" CACHE FILEPATH "${lang} host compiler")
+      mark_as_advanced(CMAKE_${lang}_HOST_COMPILER)
+    endif()
+
+  endif()
+endmacro()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/CheckLibraryExists.cmake b/share/cmake-3.22/Modules/CheckLibraryExists.cmake
new file mode 100644
index 0000000..804e0cb
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckLibraryExists.cmake
@@ -0,0 +1,104 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckLibraryExists
+------------------
+
+Check if the function exists.
+
+.. command:: CHECK_LIBRARY_EXISTS
+
+  .. code-block:: cmake
+
+    CHECK_LIBRARY_EXISTS(LIBRARY FUNCTION LOCATION VARIABLE)
+
+  ::
+
+    LIBRARY  - the name of the library you are looking for
+    FUNCTION - the name of the function
+    LOCATION - location where the library should be found
+    VARIABLE - variable to store the result
+               Will be created as an internal cache variable.
+
+
+
+The following variables may be set before calling this macro to modify
+the way the check is run:
+
+``CMAKE_REQUIRED_FLAGS``
+  string of compile command line flags.
+``CMAKE_REQUIRED_DEFINITIONS``
+  list of macros to define (-DFOO=bar).
+``CMAKE_REQUIRED_LINK_OPTIONS``
+  .. versionadded:: 3.14
+    list of options to pass to link command.
+``CMAKE_REQUIRED_LIBRARIES``
+  list of libraries to link.
+``CMAKE_REQUIRED_QUIET``
+  .. versionadded:: 3.1
+    execute quietly without messages.
+#]=======================================================================]
+
+include_guard(GLOBAL)
+
+macro(CHECK_LIBRARY_EXISTS LIBRARY FUNCTION LOCATION VARIABLE)
+  if(NOT DEFINED "${VARIABLE}")
+    set(MACRO_CHECK_LIBRARY_EXISTS_DEFINITION
+      "-DCHECK_FUNCTION_EXISTS=${FUNCTION} ${CMAKE_REQUIRED_FLAGS}")
+    if(NOT CMAKE_REQUIRED_QUIET)
+      message(CHECK_START "Looking for ${FUNCTION} in ${LIBRARY}")
+    endif()
+    set(CHECK_LIBRARY_EXISTS_LINK_OPTIONS)
+    if(CMAKE_REQUIRED_LINK_OPTIONS)
+      set(CHECK_LIBRARY_EXISTS_LINK_OPTIONS
+        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
+    endif()
+    set(CHECK_LIBRARY_EXISTS_LIBRARIES ${LIBRARY})
+    if(CMAKE_REQUIRED_LIBRARIES)
+      set(CHECK_LIBRARY_EXISTS_LIBRARIES
+        ${CHECK_LIBRARY_EXISTS_LIBRARIES} ${CMAKE_REQUIRED_LIBRARIES})
+    endif()
+
+    if(CMAKE_C_COMPILER_LOADED)
+      set(_cle_source ${CMAKE_ROOT}/Modules/CheckFunctionExists.c)
+    elseif(CMAKE_CXX_COMPILER_LOADED)
+      set(_cle_source ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckLibraryExists/CheckFunctionExists.cxx)
+      configure_file(${CMAKE_ROOT}/Modules/CheckFunctionExists.c "${_cle_source}" COPYONLY)
+    else()
+      message(FATAL_ERROR "CHECK_FUNCTION_EXISTS needs either C or CXX language enabled")
+    endif()
+
+    try_compile(${VARIABLE}
+      ${CMAKE_BINARY_DIR}
+      ${_cle_source}
+      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+      ${CHECK_LIBRARY_EXISTS_LINK_OPTIONS}
+      LINK_LIBRARIES ${CHECK_LIBRARY_EXISTS_LIBRARIES}
+      CMAKE_FLAGS
+      -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_LIBRARY_EXISTS_DEFINITION}
+      -DLINK_DIRECTORIES:STRING=${LOCATION}
+      OUTPUT_VARIABLE OUTPUT)
+    unset(_cle_source)
+
+    if(${VARIABLE})
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_PASS "found")
+      endif()
+      set(${VARIABLE} 1 CACHE INTERNAL "Have library ${LIBRARY}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Determining if the function ${FUNCTION} exists in the ${LIBRARY} "
+        "passed with the following output:\n"
+        "${OUTPUT}\n\n")
+    else()
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_FAIL "not found")
+      endif()
+      set(${VARIABLE} "" CACHE INTERNAL "Have library ${LIBRARY}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Determining if the function ${FUNCTION} exists in the ${LIBRARY} "
+        "failed with the following output:\n"
+        "${OUTPUT}\n\n")
+    endif()
+  endif()
+endmacro()
diff --git a/share/cmake-3.18/Modules/CheckLibraryExists.lists.in b/share/cmake-3.22/Modules/CheckLibraryExists.lists.in
similarity index 100%
rename from share/cmake-3.18/Modules/CheckLibraryExists.lists.in
rename to share/cmake-3.22/Modules/CheckLibraryExists.lists.in
diff --git a/share/cmake-3.22/Modules/CheckLinkerFlag.cmake b/share/cmake-3.22/Modules/CheckLinkerFlag.cmake
new file mode 100644
index 0000000..e85e43e
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckLinkerFlag.cmake
@@ -0,0 +1,90 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckLinkerFlag
+---------------
+
+.. versionadded:: 3.18
+
+Check whether the compiler supports a given link flag.
+
+.. command:: check_linker_flag
+
+  .. code-block:: cmake
+
+    check_linker_flag(<lang> <flag> <var>)
+
+Check that the link ``<flag>`` is accepted by the ``<lang>`` compiler without
+a diagnostic.  Stores the result in an internal cache entry named ``<var>``.
+
+This command temporarily sets the ``CMAKE_REQUIRED_LINK_OPTIONS`` variable
+and calls the :command:`check_source_compiles` command from the
+:module:`CheckSourceCompiles` module.  See that module's documentation
+for a listing of variables that can otherwise modify the build.
+
+The underlying implementation relies on the :prop_tgt:`LINK_OPTIONS` property
+to check the specified flag. The ``LINKER:`` prefix, as described in the
+:command:`target_link_options` command, can be used as well.
+
+A positive result from this check indicates only that the compiler did not
+issue a diagnostic message when given the link flag.  Whether the flag has any
+effect or even a specific one is beyond the scope of this module.
+
+.. note::
+  Since the :command:`try_compile` command forwards flags from variables
+  like :variable:`CMAKE_<LANG>_FLAGS`, unknown flags in such variables may
+  cause a false negative for this check.
+#]=======================================================================]
+
+include_guard(GLOBAL)
+
+include(CMakeCheckCompilerFlagCommonPatterns)
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced
+cmake_policy(SET CMP0057 NEW) # if() supports IN_LIST
+
+function(CHECK_LINKER_FLAG _lang _flag _var)
+  get_property (_supported_languages GLOBAL PROPERTY ENABLED_LANGUAGES)
+  if (NOT _lang IN_LIST _supported_languages)
+    message (SEND_ERROR "check_linker_flag: ${_lang}: unknown language.")
+    return()
+  endif()
+
+  include (CheckSourceCompiles)
+
+  set(CMAKE_REQUIRED_LINK_OPTIONS "${_flag}")
+
+  # Normalize locale during test compilation.
+  set(_locale_vars LC_ALL LC_MESSAGES LANG)
+  foreach(v IN LISTS _locale_vars)
+    set(_locale_vars_saved_${v} "$ENV{${v}}")
+    set(ENV{${v}} C)
+  endforeach()
+
+  if (_lang MATCHES "^(C|CXX)$")
+    set (_source "int main() { return 0; }")
+  elseif (_lang STREQUAL "Fortran")
+    set (_source "       program test\n       stop\n       end program")
+  elseif (_lang MATCHES "CUDA")
+    set (_source "__host__ int main() { return 0; }")
+  elseif (_lang MATCHES "HIP")
+    set (_source "__host__ int main() { return 0; }")
+  elseif (_lang MATCHES "^(OBJC|OBJCXX)$")
+    set (_source "#ifndef __OBJC__\n#  error \"Not an Objective-C++ compiler\"\n#endif\nint main(void) { return 0; }")
+  else()
+    message (SEND_ERROR "check_linker_flag: ${_lang}: unsupported language.")
+    return()
+  endif()
+  check_compiler_flag_common_patterns(_common_patterns)
+
+  check_source_compiles(${_lang} "${_source}" ${_var} ${_common_patterns})
+
+  foreach(v IN LISTS _locale_vars)
+    set(ENV{${v}} ${_locale_vars_saved_${v}})
+  endforeach()
+  set(${_var} "${${_var}}" PARENT_SCOPE)
+endfunction()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/CheckOBJCCompilerFlag.cmake b/share/cmake-3.22/Modules/CheckOBJCCompilerFlag.cmake
new file mode 100644
index 0000000..d8d8741
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckOBJCCompilerFlag.cmake
@@ -0,0 +1,43 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckOBJCCompilerFlag
+---------------------
+
+.. versionadded:: 3.16
+
+Check whether the Objective-C compiler supports a given flag.
+
+.. command:: check_objc_compiler_flag
+
+  .. code-block:: cmake
+
+    check_objc_compiler_flag(<flag> <var>)
+
+  Check that the ``<flag>`` is accepted by the compiler without
+  a diagnostic.  Stores the result in an internal cache entry
+  named ``<var>``.
+
+This command temporarily sets the ``CMAKE_REQUIRED_DEFINITIONS`` variable
+and calls the ``check_objc_source_compiles`` macro from the
+:module:`CheckOBJCSourceCompiles` module.  See documentation of that
+module for a listing of variables that can otherwise modify the build.
+
+A positive result from this check indicates only that the compiler did not
+issue a diagnostic message when given the flag.  Whether the flag has any
+effect or even a specific one is beyond the scope of this module.
+
+.. note::
+  Since the :command:`try_compile` command forwards flags from variables
+  like :variable:`CMAKE_OBJC_FLAGS <CMAKE_<LANG>_FLAGS>`, unknown flags
+  in such variables may cause a false negative for this check.
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(CheckOBJCSourceCompiles)
+include(Internal/CheckCompilerFlag)
+
+macro (CHECK_OBJC_COMPILER_FLAG _FLAG _RESULT)
+  cmake_check_compiler_flag(OBJC "${_FLAG}" ${_RESULT})
+endmacro ()
diff --git a/share/cmake-3.22/Modules/CheckOBJCSourceCompiles.cmake b/share/cmake-3.22/Modules/CheckOBJCSourceCompiles.cmake
new file mode 100644
index 0000000..c268ef9
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckOBJCSourceCompiles.cmake
@@ -0,0 +1,75 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckOBJCSourceCompiles
+-----------------------
+
+.. versionadded:: 3.16
+
+Check if given Objective-C source compiles and links into an executable.
+
+.. command:: check_objc_source_compiles
+
+  .. code-block:: cmake
+
+    check_objc_source_compiles(<code> <resultVar>
+                               [FAIL_REGEX <regex1> [<regex2>...]])
+
+  Check that the source supplied in ``<code>`` can be compiled as a Objectie-C source
+  file and linked as an executable (so it must contain at least a ``main()``
+  function). The result will be stored in the internal cache variable specified
+  by ``<resultVar>``, with a boolean true value for success and boolean false
+  for failure. If ``FAIL_REGEX`` is provided, then failure is determined by
+  checking if anything in the output matches any of the specified regular
+  expressions.
+
+  The underlying check is performed by the :command:`try_compile` command. The
+  compile and link commands can be influenced by setting any of the following
+  variables prior to calling ``check_objc_source_compiles()``:
+
+  ``CMAKE_REQUIRED_FLAGS``
+    Additional flags to pass to the compiler. Note that the contents of
+    :variable:`CMAKE_OBJC_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
+    configuration-specific variable are automatically added to the compiler
+    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
+
+  ``CMAKE_REQUIRED_DEFINITIONS``
+    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
+    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
+    ``<resultVar>`` will also be added automatically.
+
+  ``CMAKE_REQUIRED_INCLUDES``
+    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+    the compiler. These will be the only header search paths used by
+    ``try_compile()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
+    directory property will be ignored.
+
+  ``CMAKE_REQUIRED_LINK_OPTIONS``
+    A :ref:`;-list <CMake Language Lists>` of options to add to the link
+    command (see :command:`try_compile` for further details).
+
+  ``CMAKE_REQUIRED_LIBRARIES``
+    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+    command. These can be the name of system libraries or they can be
+    :ref:`Imported Targets <Imported Targets>` (see :command:`try_compile` for
+    further details).
+
+  ``CMAKE_REQUIRED_QUIET``
+    If this variable evaluates to a boolean true value, all status messages
+    associated with the check will be suppressed.
+
+  The check is only performed once, with the result cached in the variable
+  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
+  value rather than performing the check again, even if the ``<code>`` changes.
+  In order to force the check to be re-evaluated, the variable named by
+  ``<resultVar>`` must be manually removed from the cache.
+
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(Internal/CheckSourceCompiles)
+
+macro(CHECK_OBJC_SOURCE_COMPILES SOURCE VAR)
+  cmake_check_source_compiles(OBJC "${SOURCE}" ${VAR} ${ARGN})
+endmacro()
diff --git a/share/cmake-3.22/Modules/CheckOBJCSourceRuns.cmake b/share/cmake-3.22/Modules/CheckOBJCSourceRuns.cmake
new file mode 100644
index 0000000..dd03309
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckOBJCSourceRuns.cmake
@@ -0,0 +1,76 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckOBJCSourceRuns
+-------------------
+
+.. versionadded:: 3.16
+
+Check if given Objective-C source compiles and links into an executable and can
+subsequently be run.
+
+.. command:: check_objc_source_runs
+
+  .. code-block:: cmake
+
+    check_objc_source_runs(<code> <resultVar>)
+
+  Check that the source supplied in ``<code>`` can be compiled as a Objective-C source
+  file, linked as an executable and then run. The ``<code>`` must contain at
+  least a ``main()`` function. If the ``<code>`` could be built and run
+  successfully, the internal cache variable specified by ``<resultVar>`` will
+  be set to 1, otherwise it will be set to an value that evaluates to boolean
+  false (e.g. an empty string or an error message).
+
+  The underlying check is performed by the :command:`try_run` command. The
+  compile and link commands can be influenced by setting any of the following
+  variables prior to calling ``check_objc_source_runs()``:
+
+  ``CMAKE_REQUIRED_FLAGS``
+    Additional flags to pass to the compiler. Note that the contents of
+    :variable:`CMAKE_OBJC_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
+    configuration-specific variable are automatically added to the compiler
+    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
+
+  ``CMAKE_REQUIRED_DEFINITIONS``
+    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
+    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
+    ``<resultVar>`` will also be added automatically.
+
+  ``CMAKE_REQUIRED_INCLUDES``
+    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+    the compiler. These will be the only header search paths used by
+    ``try_run()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
+    directory property will be ignored.
+
+  ``CMAKE_REQUIRED_LINK_OPTIONS``
+    A :ref:`;-list <CMake Language Lists>` of options to add to the link
+    command (see :command:`try_run` for further details).
+
+  ``CMAKE_REQUIRED_LIBRARIES``
+    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+    command. These can be the name of system libraries or they can be
+    :ref:`Imported Targets <Imported Targets>` (see :command:`try_run` for
+    further details).
+
+  ``CMAKE_REQUIRED_QUIET``
+    If this variable evaluates to a boolean true value, all status messages
+    associated with the check will be suppressed.
+
+  The check is only performed once, with the result cached in the variable
+  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
+  value rather than performing the check again, even if the ``<code>`` changes.
+  In order to force the check to be re-evaluated, the variable named by
+  ``<resultVar>`` must be manually removed from the cache.
+
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(Internal/CheckSourceRuns)
+
+macro(CHECK_OBJC_SOURCE_RUNS SOURCE VAR)
+  set(_CheckSourceRuns_old_signature 1)
+  cmake_check_source_runs(OBJC "${SOURCE}" ${VAR} ${ARGN})
+  unset(_CheckSourceRuns_old_signature)
+endmacro()
diff --git a/share/cmake-3.22/Modules/CheckOBJCXXCompilerFlag.cmake b/share/cmake-3.22/Modules/CheckOBJCXXCompilerFlag.cmake
new file mode 100644
index 0000000..3f3f8fe
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckOBJCXXCompilerFlag.cmake
@@ -0,0 +1,43 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckOBJCXXCompilerFlag
+-----------------------
+
+.. versionadded:: 3.16
+
+Check whether the Objective-C++ compiler supports a given flag.
+
+.. command:: check_objcxx_compiler_flag
+
+  .. code-block:: cmake
+
+    check_objcxx_compiler_flag(<flag> <var>)
+
+  Check that the ``<flag>`` is accepted by the compiler without
+  a diagnostic.  Stores the result in an internal cache entry
+  named ``<var>``.
+
+This command temporarily sets the ``CMAKE_REQUIRED_DEFINITIONS`` variable
+and calls the ``check_objcxx_source_compiles`` macro from the
+:module:`CheckOBJCXXSourceCompiles` module.  See documentation of that
+module for a listing of variables that can otherwise modify the build.
+
+A positive result from this check indicates only that the compiler did not
+issue a diagnostic message when given the flag.  Whether the flag has any
+effect or even a specific one is beyond the scope of this module.
+
+.. note::
+  Since the :command:`try_compile` command forwards flags from variables
+  like :variable:`CMAKE_OBJCXX_FLAGS <CMAKE_<LANG>_FLAGS>`, unknown flags
+  in such variables may cause a false negative for this check.
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(CheckOBJCXXSourceCompiles)
+include(Internal/CheckCompilerFlag)
+
+macro (CHECK_OBJCXX_COMPILER_FLAG _FLAG _RESULT)
+  cmake_check_compiler_flag(OBJCXX "${_FLAG}" ${_RESULT})
+endmacro ()
diff --git a/share/cmake-3.22/Modules/CheckOBJCXXSourceCompiles.cmake b/share/cmake-3.22/Modules/CheckOBJCXXSourceCompiles.cmake
new file mode 100644
index 0000000..1186934
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckOBJCXXSourceCompiles.cmake
@@ -0,0 +1,75 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckOBJCXXSourceCompiles
+-------------------------
+
+.. versionadded:: 3.16
+
+Check if given Objective-C++ source compiles and links into an executable.
+
+.. command:: check_objcxx_source_compiles
+
+  .. code-block:: cmake
+
+    check_objcxx_source_compiles(<code> <resultVar>
+                                 [FAIL_REGEX <regex1> [<regex2>...]])
+
+  Check that the source supplied in ``<code>`` can be compiled as a Objective-C++ source
+  file and linked as an executable (so it must contain at least a ``main()``
+  function). The result will be stored in the internal cache variable specified
+  by ``<resultVar>``, with a boolean true value for success and boolean false
+  for failure. If ``FAIL_REGEX`` is provided, then failure is determined by
+  checking if anything in the output matches any of the specified regular
+  expressions.
+
+  The underlying check is performed by the :command:`try_compile` command. The
+  compile and link commands can be influenced by setting any of the following
+  variables prior to calling ``check_objcxx_source_compiles()``:
+
+  ``CMAKE_REQUIRED_FLAGS``
+    Additional flags to pass to the compiler. Note that the contents of
+    :variable:`CMAKE_OBJCXX_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
+    configuration-specific variable are automatically added to the compiler
+    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
+
+  ``CMAKE_REQUIRED_DEFINITIONS``
+    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
+    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
+    ``<resultVar>`` will also be added automatically.
+
+  ``CMAKE_REQUIRED_INCLUDES``
+    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+    the compiler. These will be the only header search paths used by
+    ``try_compile()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
+    directory property will be ignored.
+
+  ``CMAKE_REQUIRED_LINK_OPTIONS``
+    A :ref:`;-list <CMake Language Lists>` of options to add to the link
+    command (see :command:`try_compile` for further details).
+
+  ``CMAKE_REQUIRED_LIBRARIES``
+    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+    command. These can be the name of system libraries or they can be
+    :ref:`Imported Targets <Imported Targets>` (see :command:`try_compile` for
+    further details).
+
+  ``CMAKE_REQUIRED_QUIET``
+    If this variable evaluates to a boolean true value, all status messages
+    associated with the check will be suppressed.
+
+  The check is only performed once, with the result cached in the variable
+  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
+  value rather than performing the check again, even if the ``<code>`` changes.
+  In order to force the check to be re-evaluated, the variable named by
+  ``<resultVar>`` must be manually removed from the cache.
+
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(Internal/CheckSourceCompiles)
+
+macro(CHECK_OBJCXX_SOURCE_COMPILES SOURCE VAR)
+  cmake_check_source_compiles(OBJCXX "${SOURCE}" ${VAR} ${ARGN})
+endmacro()
diff --git a/share/cmake-3.22/Modules/CheckOBJCXXSourceRuns.cmake b/share/cmake-3.22/Modules/CheckOBJCXXSourceRuns.cmake
new file mode 100644
index 0000000..05a5e4c
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckOBJCXXSourceRuns.cmake
@@ -0,0 +1,76 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckOBJCXXSourceRuns
+---------------------
+
+.. versionadded:: 3.16
+
+Check if given Objective-C++ source compiles and links into an executable and can
+subsequently be run.
+
+.. command:: check_objcxx_source_runs
+
+  .. code-block:: cmake
+
+    check_objcxx_source_runs(<code> <resultVar>)
+
+  Check that the source supplied in ``<code>`` can be compiled as a Objective-C++ source
+  file, linked as an executable and then run. The ``<code>`` must contain at
+  least a ``main()`` function. If the ``<code>`` could be built and run
+  successfully, the internal cache variable specified by ``<resultVar>`` will
+  be set to 1, otherwise it will be set to an value that evaluates to boolean
+  false (e.g. an empty string or an error message).
+
+  The underlying check is performed by the :command:`try_run` command. The
+  compile and link commands can be influenced by setting any of the following
+  variables prior to calling ``check_objcxx_source_runs()``:
+
+  ``CMAKE_REQUIRED_FLAGS``
+    Additional flags to pass to the compiler. Note that the contents of
+    :variable:`CMAKE_OBJCXX_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
+    configuration-specific variable are automatically added to the compiler
+    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
+
+  ``CMAKE_REQUIRED_DEFINITIONS``
+    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
+    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
+    ``<resultVar>`` will also be added automatically.
+
+  ``CMAKE_REQUIRED_INCLUDES``
+    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+    the compiler. These will be the only header search paths used by
+    ``try_run()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
+    directory property will be ignored.
+
+  ``CMAKE_REQUIRED_LINK_OPTIONS``
+    A :ref:`;-list <CMake Language Lists>` of options to add to the link
+    command (see :command:`try_run` for further details).
+
+  ``CMAKE_REQUIRED_LIBRARIES``
+    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+    command. These can be the name of system libraries or they can be
+    :ref:`Imported Targets <Imported Targets>` (see :command:`try_run` for
+    further details).
+
+  ``CMAKE_REQUIRED_QUIET``
+    If this variable evaluates to a boolean true value, all status messages
+    associated with the check will be suppressed.
+
+  The check is only performed once, with the result cached in the variable
+  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
+  value rather than performing the check again, even if the ``<code>`` changes.
+  In order to force the check to be re-evaluated, the variable named by
+  ``<resultVar>`` must be manually removed from the cache.
+
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(Internal/CheckSourceRuns)
+
+macro(CHECK_OBJCXX_SOURCE_RUNS SOURCE VAR)
+  set(_CheckSourceRuns_old_signature 1)
+  cmake_check_source_runs(OBJCXX "${SOURCE}" ${VAR} ${ARGN})
+  unset(_CheckSourceRuns_old_signature)
+endmacro()
diff --git a/share/cmake-3.22/Modules/CheckPIESupported.cmake b/share/cmake-3.22/Modules/CheckPIESupported.cmake
new file mode 100644
index 0000000..fb87822
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckPIESupported.cmake
@@ -0,0 +1,138 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckPIESupported
+-----------------
+
+.. versionadded:: 3.14
+
+Check whether the linker supports Position Independent Code (PIE) or No
+Position Independent Code (NO_PIE) for executables.
+Use this to ensure that the :prop_tgt:`POSITION_INDEPENDENT_CODE` target
+property for executables will be honored at link time.
+
+.. command:: check_pie_supported
+
+  ::
+
+    check_pie_supported([OUTPUT_VARIABLE <output>]
+                        [LANGUAGES <lang>...])
+
+  Options are:
+
+  ``OUTPUT_VARIABLE <output>``
+    Set ``<output>`` variable with details about any error.
+  ``LANGUAGES <lang>...``
+    Check the linkers used for each of the specified languages.
+    Supported languages are ``C``, ``CXX``, and ``Fortran``.
+
+It makes no sense to use this module when :policy:`CMP0083` is set to ``OLD``,
+so the command will return an error in this case.  See policy :policy:`CMP0083`
+for details.
+
+Variables
+^^^^^^^^^
+
+For each language checked, two boolean cache variables are defined.
+
+ ``CMAKE_<lang>_LINK_PIE_SUPPORTED``
+   Set to ``YES`` if ``PIE`` is supported by the linker and ``NO`` otherwise.
+ ``CMAKE_<lang>_LINK_NO_PIE_SUPPORTED``
+   Set to ``YES`` if ``NO_PIE`` is supported by the linker and ``NO`` otherwise.
+
+Examples
+^^^^^^^^
+
+.. code-block:: cmake
+
+  check_pie_supported()
+  set_property(TARGET foo PROPERTY POSITION_INDEPENDENT_CODE TRUE)
+
+.. code-block:: cmake
+
+  # Retrieve any error message.
+  check_pie_supported(OUTPUT_VARIABLE output LANGUAGES C)
+  set_property(TARGET foo PROPERTY POSITION_INDEPENDENT_CODE TRUE)
+  if(NOT CMAKE_C_LINK_PIE_SUPPORTED)
+    message(WARNING "PIE is not supported at link time: ${output}.\n"
+                    "PIE link options will not be passed to linker.")
+  endif()
+
+#]=======================================================================]
+
+
+include (Internal/CMakeTryCompilerOrLinkerFlag)
+
+function (check_pie_supported)
+  cmake_policy(GET CMP0083 cmp0083)
+
+  if (NOT cmp0083)
+    message(FATAL_ERROR "check_pie_supported: Policy CMP0083 is not set")
+  endif()
+
+  if(cmp0083 STREQUAL "OLD")
+    message(FATAL_ERROR "check_pie_supported: Policy CMP0083 set to OLD")
+  endif()
+
+  set(optional)
+  set(one OUTPUT_VARIABLE)
+  set(multiple LANGUAGES)
+
+  cmake_parse_arguments(CHECK_PIE "${optional}" "${one}" "${multiple}" "${ARGN}")
+  if(CHECK_PIE_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "check_pie_supported: Unparsed arguments: ${CHECK_PIE_UNPARSED_ARGUMENTS}")
+  endif()
+
+  if (CHECK_PIE_LANGUAGES)
+    set (unsupported_languages "${CHECK_PIE_LANGUAGES}")
+    list (REMOVE_ITEM unsupported_languages "C" "CXX" "Fortran")
+    if(unsupported_languages)
+      message(FATAL_ERROR "check_pie_supported: language(s) '${unsupported_languages}' not supported")
+    endif()
+  else()
+    # User did not set any languages, use defaults
+    get_property (enabled_languages GLOBAL PROPERTY ENABLED_LANGUAGES)
+    if (NOT enabled_languages)
+      return()
+    endif()
+
+    list (FILTER enabled_languages INCLUDE REGEX "^(C|CXX|Fortran)$")
+    if (NOT enabled_languages)
+      return()
+    endif()
+
+    set (CHECK_PIE_LANGUAGES ${enabled_languages})
+  endif()
+
+  set (outputs)
+
+  foreach(lang IN LISTS CHECK_PIE_LANGUAGES)
+    if(_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER)
+      cmake_try_compiler_or_linker_flag(${lang}
+                                "${CMAKE_${lang}_LINK_OPTIONS_PIE}"
+                                CMAKE_${lang}_LINK_PIE_SUPPORTED
+                                OUTPUT_VARIABLE output)
+      if (NOT CMAKE_${lang}_LINK_PIE_SUPPORTED)
+        string (APPEND outputs "PIE (${lang}): ${output}\n")
+      endif()
+
+      cmake_try_compiler_or_linker_flag(${lang}
+                                "${CMAKE_${lang}_LINK_OPTIONS_NO_PIE}"
+                                CMAKE_${lang}_LINK_NO_PIE_SUPPORTED
+                                OUTPUT_VARIABLE output)
+      if (NOT CMAKE_${lang}_LINK_NO_PIE_SUPPORTED)
+        string (APPEND outputs "NO_PIE (${lang}): ${output}\n")
+      endif()
+    else()
+      # no support at link time. Set cache variables to NO
+      set(CMAKE_${lang}_LINK_PIE_SUPPORTED NO CACHE INTERNAL "PIE (${lang})")
+      set(CMAKE_${lang}_LINK_NO_PIE_SUPPORTED NO CACHE INTERNAL "NO_PIE (${lang})")
+      string (APPEND outputs "PIE and NO_PIE are not supported by linker for ${lang}")
+    endif()
+  endforeach()
+
+  if (CHECK_PIE_OUTPUT_VARIABLE)
+    set (${CHECK_PIE_OUTPUT_VARIABLE} "${outputs}" PARENT_SCOPE)
+  endif()
+endfunction()
diff --git a/share/cmake-3.18/Modules/CheckPrototypeDefinition.c.in b/share/cmake-3.22/Modules/CheckPrototypeDefinition.c.in
similarity index 100%
rename from share/cmake-3.18/Modules/CheckPrototypeDefinition.c.in
rename to share/cmake-3.22/Modules/CheckPrototypeDefinition.c.in
diff --git a/share/cmake-3.22/Modules/CheckPrototypeDefinition.cmake b/share/cmake-3.22/Modules/CheckPrototypeDefinition.cmake
new file mode 100644
index 0000000..d29c5e8
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckPrototypeDefinition.cmake
@@ -0,0 +1,131 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckPrototypeDefinition
+------------------------
+
+Check if the prototype we expect is correct.
+
+.. command:: check_prototype_definition
+
+  .. code-block:: cmake
+
+    check_prototype_definition(FUNCTION PROTOTYPE RETURN HEADER VARIABLE)
+
+  ::
+
+    FUNCTION - The name of the function (used to check if prototype exists)
+    PROTOTYPE- The prototype to check.
+    RETURN - The return value of the function.
+    HEADER - The header files required.
+    VARIABLE - The variable to store the result.
+               Will be created as an internal cache variable.
+
+  Example:
+
+  .. code-block:: cmake
+
+    check_prototype_definition(getpwent_r
+     "struct passwd *getpwent_r(struct passwd *src, char *buf, int buflen)"
+     "NULL"
+     "unistd.h;pwd.h"
+     SOLARIS_GETPWENT_R)
+
+The following variables may be set before calling this function to modify
+the way the check is run:
+
+``CMAKE_REQUIRED_FLAGS``
+  string of compile command line flags.
+``CMAKE_REQUIRED_DEFINITIONS``
+  list of macros to define (-DFOO=bar).
+``CMAKE_REQUIRED_INCLUDES``
+  list of include directories.
+``CMAKE_REQUIRED_LINK_OPTIONS``
+  .. versionadded:: 3.14
+    list of options to pass to link command.
+``CMAKE_REQUIRED_LIBRARIES``
+  list of libraries to link.
+``CMAKE_REQUIRED_QUIET``
+  .. versionadded:: 3.1
+    execute quietly without messages.
+#]=======================================================================]
+
+#
+
+get_filename_component(__check_proto_def_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
+
+include_guard(GLOBAL)
+
+function(check_prototype_definition _FUNCTION _PROTOTYPE _RETURN _HEADER _VARIABLE)
+
+  if (NOT DEFINED ${_VARIABLE})
+    if(NOT CMAKE_REQUIRED_QUIET)
+      message(CHECK_START "Checking prototype ${_FUNCTION} for ${_VARIABLE}")
+    endif()
+    set(CHECK_PROTOTYPE_DEFINITION_CONTENT "/* */\n")
+
+    set(CHECK_PROTOTYPE_DEFINITION_FLAGS ${CMAKE_REQUIRED_FLAGS})
+    if (CMAKE_REQUIRED_LINK_OPTIONS)
+      set(CHECK_PROTOTYPE_DEFINITION_LINK_OPTIONS
+        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
+    else()
+      set(CHECK_PROTOTYPE_DEFINITION_LINK_OPTIONS)
+    endif()
+    if (CMAKE_REQUIRED_LIBRARIES)
+      set(CHECK_PROTOTYPE_DEFINITION_LIBS
+        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+    else()
+      set(CHECK_PROTOTYPE_DEFINITION_LIBS)
+    endif()
+    if (CMAKE_REQUIRED_INCLUDES)
+      set(CMAKE_SYMBOL_EXISTS_INCLUDES
+        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
+    else()
+      set(CMAKE_SYMBOL_EXISTS_INCLUDES)
+    endif()
+
+    foreach(_FILE ${_HEADER})
+      string(APPEND CHECK_PROTOTYPE_DEFINITION_HEADER
+        "#include <${_FILE}>\n")
+    endforeach()
+
+    set(CHECK_PROTOTYPE_DEFINITION_SYMBOL ${_FUNCTION})
+    set(CHECK_PROTOTYPE_DEFINITION_PROTO ${_PROTOTYPE})
+    set(CHECK_PROTOTYPE_DEFINITION_RETURN ${_RETURN})
+
+    configure_file("${__check_proto_def_dir}/CheckPrototypeDefinition.c.in"
+      "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckPrototypeDefinition.c" @ONLY)
+
+    file(READ ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckPrototypeDefinition.c _SOURCE)
+
+    try_compile(${_VARIABLE}
+      ${CMAKE_BINARY_DIR}
+      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckPrototypeDefinition.c
+      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+      ${CHECK_PROTOTYPE_DEFINITION_LINK_OPTIONS}
+      ${CHECK_PROTOTYPE_DEFINITION_LIBS}
+      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${CHECK_PROTOTYPE_DEFINITION_FLAGS}
+      "${CMAKE_SYMBOL_EXISTS_INCLUDES}"
+      OUTPUT_VARIABLE OUTPUT)
+
+    if (${_VARIABLE})
+      set(${_VARIABLE} 1 CACHE INTERNAL "Have correct prototype for ${_FUNCTION}")
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_PASS "True")
+      endif()
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Determining if the prototype ${_FUNCTION} exists for ${_VARIABLE} passed with the following output:\n"
+        "${OUTPUT}\n\n")
+    else ()
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_FAIL "False")
+      endif()
+      set(${_VARIABLE} 0 CACHE INTERNAL "Have correct prototype for ${_FUNCTION}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Determining if the prototype ${_FUNCTION} exists for ${_VARIABLE} failed with the following output:\n"
+        "${OUTPUT}\n\n${_SOURCE}\n\n")
+    endif ()
+  endif()
+
+endfunction()
diff --git a/share/cmake-3.18/Modules/CheckSizeOf.cmake b/share/cmake-3.22/Modules/CheckSizeOf.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/CheckSizeOf.cmake
rename to share/cmake-3.22/Modules/CheckSizeOf.cmake
diff --git a/share/cmake-3.22/Modules/CheckSourceCompiles.cmake b/share/cmake-3.22/Modules/CheckSourceCompiles.cmake
new file mode 100644
index 0000000..ad74c3c
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckSourceCompiles.cmake
@@ -0,0 +1,82 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+#[=======================================================================[.rst:
+CheckSourceCompiles
+----------------------
+
+.. versionadded:: 3.19
+
+Check if given source compiles and links into an executable.
+
+.. command:: check_source_compiles
+
+  .. code-block:: cmake
+
+    check_source_compiles(<lang> <code> <resultVar>
+                          [FAIL_REGEX <regex1> [<regex2>...]]
+                          [SRC_EXT <extension>])
+
+  Check that the source supplied in ``<code>`` can be compiled as a source
+  file for the requested language and linked as an executable (so it must
+  contain at least a ``main()`` function). The result will be stored in the
+  internal cache variable specified by ``<resultVar>``, with a boolean true
+  value for success and boolean false for failure. If ``FAIL_REGEX`` is
+  provided, then failure is determined by checking if anything in the output
+  matches any of the specified regular expressions.
+
+  By default, the test source file will be given a file extension that matches
+  the requested language. The ``SRC_EXT`` option can be used to override this
+  with ``.<extension>`` instead.
+
+  The underlying check is performed by the :command:`try_compile` command. The
+  compile and link commands can be influenced by setting any of the following
+  variables prior to calling ``check_source_compiles()``:
+
+  ``CMAKE_REQUIRED_FLAGS``
+    Additional flags to pass to the compiler. Note that the contents of
+    :variable:`CMAKE_<LANG>_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
+    configuration-specific variable are automatically added to the compiler
+    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
+
+  ``CMAKE_REQUIRED_DEFINITIONS``
+    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
+    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
+    ``<resultVar>`` will also be added automatically.
+
+  ``CMAKE_REQUIRED_INCLUDES``
+    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+    the compiler. These will be the only header search paths used by
+    ``try_compile()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
+    directory property will be ignored.
+
+  ``CMAKE_REQUIRED_LINK_OPTIONS``
+    A :ref:`;-list <CMake Language Lists>` of options to add to the link
+    command (see :command:`try_compile` for further details).
+
+  ``CMAKE_REQUIRED_LIBRARIES``
+    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+    command. These can be the name of system libraries or they can be
+    :ref:`Imported Targets <Imported Targets>` (see :command:`try_compile` for
+    further details).
+
+  ``CMAKE_REQUIRED_QUIET``
+    If this variable evaluates to a boolean true value, all status messages
+    associated with the check will be suppressed.
+
+  The check is only performed once, with the result cached in the variable
+  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
+  value rather than performing the check again, even if the ``<code>`` changes.
+  In order to force the check to be re-evaluated, the variable named by
+  ``<resultVar>`` must be manually removed from the cache.
+
+#]=======================================================================]
+
+
+include_guard(GLOBAL)
+include(Internal/CheckSourceCompiles)
+
+function(CHECK_SOURCE_COMPILES _lang _source _var)
+  cmake_check_source_compiles(${_lang} "${_source}" ${_var} ${ARGN})
+endfunction()
diff --git a/share/cmake-3.22/Modules/CheckSourceRuns.cmake b/share/cmake-3.22/Modules/CheckSourceRuns.cmake
new file mode 100644
index 0000000..8f1cf01
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckSourceRuns.cmake
@@ -0,0 +1,80 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+#[=======================================================================[.rst:
+CheckSourceRuns
+-------------------
+
+.. versionadded:: 3.19
+
+Check if given source compiles and links into an executable and can
+subsequently be run.
+
+.. command:: check_source_runs
+
+  .. code-block:: cmake
+
+    check_source_runs(<lang> <code> <resultVar>
+                      [SRC_EXT <extension>])
+
+  Check that the source supplied in ``<code>`` can be compiled as a source
+  file for the requested language, linked as an executable and then run.
+  The ``<code>`` must contain at least a ``main()`` function. If the ``<code>``
+  could be built and run successfully, the internal cache variable specified by
+  ``<resultVar>`` will be set to 1, otherwise it will be set to an value that
+  evaluates to boolean false (e.g. an empty string or an error message).
+
+  By default, the test source file will be given a file extension that matches
+  the requested language. The ``SRC_EXT`` option can be used to override this
+  with ``.<extension>`` instead.
+
+  The underlying check is performed by the :command:`try_run` command. The
+  compile and link commands can be influenced by setting any of the following
+  variables prior to calling ``check_objc_source_runs()``:
+
+  ``CMAKE_REQUIRED_FLAGS``
+    Additional flags to pass to the compiler. Note that the contents of
+    :variable:`CMAKE_OBJC_FLAGS <CMAKE_<LANG>_FLAGS>` and its associated
+    configuration-specific variable are automatically added to the compiler
+    command before the contents of ``CMAKE_REQUIRED_FLAGS``.
+
+  ``CMAKE_REQUIRED_DEFINITIONS``
+    A :ref:`;-list <CMake Language Lists>` of compiler definitions of the form
+    ``-DFOO`` or ``-DFOO=bar``. A definition for the name specified by
+    ``<resultVar>`` will also be added automatically.
+
+  ``CMAKE_REQUIRED_INCLUDES``
+    A :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+    the compiler. These will be the only header search paths used by
+    ``try_run()``, i.e. the contents of the :prop_dir:`INCLUDE_DIRECTORIES`
+    directory property will be ignored.
+
+  ``CMAKE_REQUIRED_LINK_OPTIONS``
+    A :ref:`;-list <CMake Language Lists>` of options to add to the link
+    command (see :command:`try_run` for further details).
+
+  ``CMAKE_REQUIRED_LIBRARIES``
+    A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+    command. These can be the name of system libraries or they can be
+    :ref:`Imported Targets <Imported Targets>` (see :command:`try_run` for
+    further details).
+
+  ``CMAKE_REQUIRED_QUIET``
+    If this variable evaluates to a boolean true value, all status messages
+    associated with the check will be suppressed.
+
+  The check is only performed once, with the result cached in the variable
+  named by ``<resultVar>``. Every subsequent CMake run will re-use this cached
+  value rather than performing the check again, even if the ``<code>`` changes.
+  In order to force the check to be re-evaluated, the variable named by
+  ``<resultVar>`` must be manually removed from the cache.
+
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(Internal/CheckSourceRuns)
+
+function(CHECK_SOURCE_RUNS _lang _source _var)
+  cmake_check_source_runs(${_lang} "${_source}" ${_var} ${ARGN})
+endfunction()
diff --git a/share/cmake-3.22/Modules/CheckStructHasMember.cmake b/share/cmake-3.22/Modules/CheckStructHasMember.cmake
new file mode 100644
index 0000000..8217c84
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckStructHasMember.cmake
@@ -0,0 +1,87 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckStructHasMember
+--------------------
+
+Check if the given struct or class has the specified member variable
+
+.. command:: CHECK_STRUCT_HAS_MEMBER
+
+  .. code-block:: cmake
+
+    CHECK_STRUCT_HAS_MEMBER(<struct> <member> <header> <variable>
+                            [LANGUAGE <language>])
+
+  ::
+
+    <struct> - the name of the struct or class you are interested in
+    <member> - the member which existence you want to check
+    <header> - the header(s) where the prototype should be declared
+    <variable> - variable to store the result
+    <language> - the compiler to use (C or CXX)
+
+
+The following variables may be set before calling this macro to modify
+the way the check is run:
+
+``CMAKE_REQUIRED_FLAGS``
+  string of compile command line flags.
+``CMAKE_REQUIRED_DEFINITIONS``
+  list of macros to define (-DFOO=bar).
+``CMAKE_REQUIRED_INCLUDES``
+  list of include directories.
+``CMAKE_REQUIRED_LINK_OPTIONS``
+  .. versionadded:: 3.14
+    list of options to pass to link command.
+``CMAKE_REQUIRED_LIBRARIES``
+  list of libraries to link.
+``CMAKE_REQUIRED_QUIET``
+  .. versionadded:: 3.1
+    execute quietly without messages.
+
+
+Example:
+
+.. code-block:: cmake
+
+  CHECK_STRUCT_HAS_MEMBER("struct timeval" tv_sec sys/select.h
+                          HAVE_TIMEVAL_TV_SEC LANGUAGE C)
+#]=======================================================================]
+
+include_guard(GLOBAL)
+include(CheckCSourceCompiles)
+include(CheckCXXSourceCompiles)
+
+macro (CHECK_STRUCT_HAS_MEMBER _STRUCT _MEMBER _HEADER _RESULT)
+  set(_INCLUDE_FILES)
+  foreach (it ${_HEADER})
+    string(APPEND _INCLUDE_FILES "#include <${it}>\n")
+  endforeach ()
+
+  if("x${ARGN}" STREQUAL "x")
+    set(_lang C)
+  elseif("x${ARGN}" MATCHES "^xLANGUAGE;([a-zA-Z]+)$")
+    set(_lang "${CMAKE_MATCH_1}")
+  else()
+    message(FATAL_ERROR "Unknown arguments:\n  ${ARGN}\n")
+  endif()
+
+  set(_CHECK_STRUCT_MEMBER_SOURCE_CODE "
+${_INCLUDE_FILES}
+int main()
+{
+  (void)sizeof(((${_STRUCT} *)0)->${_MEMBER});
+  return 0;
+}
+")
+
+  if("${_lang}" STREQUAL "C")
+    CHECK_C_SOURCE_COMPILES("${_CHECK_STRUCT_MEMBER_SOURCE_CODE}" ${_RESULT})
+  elseif("${_lang}" STREQUAL "CXX")
+    CHECK_CXX_SOURCE_COMPILES("${_CHECK_STRUCT_MEMBER_SOURCE_CODE}" ${_RESULT})
+  else()
+    message(FATAL_ERROR "Unknown language:\n  ${_lang}\nSupported languages: C, CXX.\n")
+  endif()
+endmacro ()
diff --git a/share/cmake-3.22/Modules/CheckSymbolExists.cmake b/share/cmake-3.22/Modules/CheckSymbolExists.cmake
new file mode 100644
index 0000000..48ee3c4
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckSymbolExists.cmake
@@ -0,0 +1,168 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckSymbolExists
+-----------------
+
+Provides a macro to check if a symbol exists as a function, variable,
+or macro in ``C``.
+
+.. command:: check_symbol_exists
+
+  .. code-block:: cmake
+
+    check_symbol_exists(<symbol> <files> <variable>)
+
+  Check that the ``<symbol>`` is available after including given header
+  ``<files>`` and store the result in a ``<variable>``.  Specify the list
+  of files in one argument as a semicolon-separated list.
+  ``<variable>`` will be created as an internal cache variable.
+
+If the header files define the symbol as a macro it is considered
+available and assumed to work.  If the header files declare the symbol
+as a function or variable then the symbol must also be available for
+linking (so intrinsics may not be detected).
+If the symbol is a type, enum value, or intrinsic it will not be recognized
+(consider using :module:`CheckTypeSize` or :module:`CheckSourceCompiles`).
+If the check needs to be done in C++, consider using
+:module:`CheckCXXSymbolExists` instead.
+
+The following variables may be set before calling this macro to modify
+the way the check is run:
+
+``CMAKE_REQUIRED_FLAGS``
+  string of compile command line flags.
+``CMAKE_REQUIRED_DEFINITIONS``
+  a :ref:`;-list <CMake Language Lists>` of macros to define (-DFOO=bar).
+``CMAKE_REQUIRED_INCLUDES``
+  a :ref:`;-list <CMake Language Lists>` of header search paths to pass to
+  the compiler.
+``CMAKE_REQUIRED_LINK_OPTIONS``
+  .. versionadded:: 3.14
+    a :ref:`;-list <CMake Language Lists>` of options to add to the link command.
+``CMAKE_REQUIRED_LIBRARIES``
+  a :ref:`;-list <CMake Language Lists>` of libraries to add to the link
+  command. See policy :policy:`CMP0075`.
+``CMAKE_REQUIRED_QUIET``
+  .. versionadded:: 3.1
+    execute quietly without messages.
+
+For example:
+
+.. code-block:: cmake
+
+  include(CheckSymbolExists)
+
+  # Check for macro SEEK_SET
+  check_symbol_exists(SEEK_SET "stdio.h" HAVE_SEEK_SET)
+  # Check for function fopen
+  check_symbol_exists(fopen "stdio.h" HAVE_FOPEN)
+#]=======================================================================]
+
+include_guard(GLOBAL)
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced
+
+macro(CHECK_SYMBOL_EXISTS SYMBOL FILES VARIABLE)
+  if(CMAKE_C_COMPILER_LOADED)
+    __CHECK_SYMBOL_EXISTS_IMPL("${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.c" "${SYMBOL}" "${FILES}" "${VARIABLE}" )
+  elseif(CMAKE_CXX_COMPILER_LOADED)
+    __CHECK_SYMBOL_EXISTS_IMPL("${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.cxx" "${SYMBOL}" "${FILES}" "${VARIABLE}" )
+  else()
+    message(FATAL_ERROR "CHECK_SYMBOL_EXISTS needs either C or CXX language enabled")
+  endif()
+endmacro()
+
+macro(__CHECK_SYMBOL_EXISTS_IMPL SOURCEFILE SYMBOL FILES VARIABLE)
+  if(NOT DEFINED "${VARIABLE}" OR "x${${VARIABLE}}" STREQUAL "x${VARIABLE}")
+    set(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n")
+    set(MACRO_CHECK_SYMBOL_EXISTS_FLAGS ${CMAKE_REQUIRED_FLAGS})
+    if(CMAKE_REQUIRED_LINK_OPTIONS)
+      set(CHECK_SYMBOL_EXISTS_LINK_OPTIONS
+        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
+    else()
+      set(CHECK_SYMBOL_EXISTS_LINK_OPTIONS)
+    endif()
+    if(CMAKE_REQUIRED_LIBRARIES)
+      set(CHECK_SYMBOL_EXISTS_LIBS
+        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+    else()
+      set(CHECK_SYMBOL_EXISTS_LIBS)
+    endif()
+    if(CMAKE_REQUIRED_INCLUDES)
+      set(CMAKE_SYMBOL_EXISTS_INCLUDES
+        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
+    else()
+      set(CMAKE_SYMBOL_EXISTS_INCLUDES)
+    endif()
+    foreach(FILE ${FILES})
+      string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT
+        "#include <${FILE}>\n")
+    endforeach()
+    string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT "
+int main(int argc, char** argv)
+{
+  (void)argv;")
+    set(_CSE_CHECK_NON_MACRO "return ((int*)(&${SYMBOL}))[argc];")
+    if("${SYMBOL}" MATCHES "^[a-zA-Z_][a-zA-Z0-9_]*$")
+      # The SYMBOL has a legal macro name.  Test whether it exists as a macro.
+      string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT "
+#ifndef ${SYMBOL}
+  ${_CSE_CHECK_NON_MACRO}
+#else
+  (void)argc;
+  return 0;
+#endif")
+    else()
+      # The SYMBOL cannot be a macro (e.g., a template function).
+      string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT "
+  ${_CSE_CHECK_NON_MACRO}")
+    endif()
+    string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT "
+}")
+    unset(_CSE_CHECK_NON_MACRO)
+
+    configure_file("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
+      "${SOURCEFILE}" @ONLY)
+
+    if(NOT CMAKE_REQUIRED_QUIET)
+      message(CHECK_START "Looking for ${SYMBOL}")
+    endif()
+    try_compile(${VARIABLE}
+      ${CMAKE_BINARY_DIR}
+      "${SOURCEFILE}"
+      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+      ${CHECK_SYMBOL_EXISTS_LINK_OPTIONS}
+      ${CHECK_SYMBOL_EXISTS_LIBS}
+      CMAKE_FLAGS
+      -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_SYMBOL_EXISTS_FLAGS}
+      "${CMAKE_SYMBOL_EXISTS_INCLUDES}"
+      OUTPUT_VARIABLE OUTPUT)
+    if(${VARIABLE})
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_PASS "found")
+      endif()
+      set(${VARIABLE} 1 CACHE INTERNAL "Have symbol ${SYMBOL}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Determining if the ${SYMBOL} "
+        "exist passed with the following output:\n"
+        "${OUTPUT}\nFile ${SOURCEFILE}:\n"
+        "${CMAKE_CONFIGURABLE_FILE_CONTENT}\n")
+    else()
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_FAIL "not found")
+      endif()
+      set(${VARIABLE} "" CACHE INTERNAL "Have symbol ${SYMBOL}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Determining if the ${SYMBOL} "
+        "exist failed with the following output:\n"
+        "${OUTPUT}\nFile ${SOURCEFILE}:\n"
+        "${CMAKE_CONFIGURABLE_FILE_CONTENT}\n")
+    endif()
+    unset(CMAKE_CONFIGURABLE_FILE_CONTENT)
+  endif()
+endmacro()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/CheckTypeSize.c.in b/share/cmake-3.22/Modules/CheckTypeSize.c.in
similarity index 100%
rename from share/cmake-3.18/Modules/CheckTypeSize.c.in
rename to share/cmake-3.22/Modules/CheckTypeSize.c.in
diff --git a/share/cmake-3.22/Modules/CheckTypeSize.cmake b/share/cmake-3.22/Modules/CheckTypeSize.cmake
new file mode 100644
index 0000000..69f68f9
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckTypeSize.cmake
@@ -0,0 +1,294 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckTypeSize
+-------------
+
+Check sizeof a type
+
+.. command:: CHECK_TYPE_SIZE
+
+  .. code-block:: cmake
+
+    CHECK_TYPE_SIZE(TYPE VARIABLE [BUILTIN_TYPES_ONLY]
+                                  [LANGUAGE <language>])
+
+  Check if the type exists and determine its size.  On return,
+  ``HAVE_${VARIABLE}`` holds the existence of the type, and ``${VARIABLE}``
+  holds one of the following:
+
+  ::
+
+     <size> = type has non-zero size <size>
+     "0"    = type has arch-dependent size (see below)
+     ""     = type does not exist
+
+  Both ``HAVE_${VARIABLE}`` and ``${VARIABLE}`` will be created as internal
+  cache variables.
+
+  Furthermore, the variable ``${VARIABLE}_CODE`` holds C preprocessor code
+  to define the macro ``${VARIABLE}`` to the size of the type, or leave
+  the macro undefined if the type does not exist.
+
+  The variable ``${VARIABLE}`` may be ``0`` when
+  :variable:`CMAKE_OSX_ARCHITECTURES` has multiple architectures for building
+  OS X universal binaries.  This indicates that the type size varies across
+  architectures.  In this case ``${VARIABLE}_CODE`` contains C preprocessor
+  tests mapping from each architecture macro to the corresponding type size.
+  The list of architecture macros is stored in ``${VARIABLE}_KEYS``, and the
+  value for each key is stored in ``${VARIABLE}-${KEY}``.
+
+  If the ``BUILTIN_TYPES_ONLY`` option is not given, the macro checks for
+  headers ``<sys/types.h>``, ``<stdint.h>``, and ``<stddef.h>``, and saves
+  results in ``HAVE_SYS_TYPES_H``, ``HAVE_STDINT_H``, and ``HAVE_STDDEF_H``.
+  The type size check automatically includes the available headers, thus
+  supporting checks of types defined in the headers.
+
+  If ``LANGUAGE`` is set, the specified compiler will be used to perform the
+  check. Acceptable values are ``C`` and ``CXX``.
+
+Despite the name of the macro you may use it to check the size of more
+complex expressions, too.  To check e.g.  for the size of a struct
+member you can do something like this:
+
+.. code-block:: cmake
+
+  check_type_size("((struct something*)0)->member" SIZEOF_MEMBER)
+
+
+The following variables may be set before calling this macro to modify
+the way the check is run:
+
+``CMAKE_REQUIRED_FLAGS``
+  string of compile command line flags.
+``CMAKE_REQUIRED_DEFINITIONS``
+  list of macros to define (-DFOO=bar).
+``CMAKE_REQUIRED_INCLUDES``
+  list of include directories.
+``CMAKE_REQUIRED_LINK_OPTIONS``
+  .. versionadded:: 3.14
+    list of options to pass to link command.
+``CMAKE_REQUIRED_LIBRARIES``
+  list of libraries to link.
+``CMAKE_REQUIRED_QUIET``
+  .. versionadded:: 3.1
+    execute quietly without messages.
+``CMAKE_EXTRA_INCLUDE_FILES``
+  list of extra headers to include.
+#]=======================================================================]
+
+include(CheckIncludeFile)
+include(CheckIncludeFileCXX)
+
+get_filename_component(__check_type_size_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
+
+include_guard(GLOBAL)
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0054 NEW)
+
+#-----------------------------------------------------------------------------
+# Helper function.  DO NOT CALL DIRECTLY.
+function(__check_type_size_impl type var map builtin language)
+  if(NOT CMAKE_REQUIRED_QUIET)
+    message(CHECK_START "Check size of ${type}")
+  endif()
+
+  # Perform language check
+  if(language STREQUAL "C")
+    set(src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.c)
+  elseif(language STREQUAL "CXX")
+    set(src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.cpp)
+  else()
+    message(FATAL_ERROR "Unknown language:\n  ${language}\nSupported languages: C, CXX.\n")
+  endif()
+
+  # Include header files.
+  set(headers)
+  if(builtin)
+    if(language STREQUAL "CXX" AND type MATCHES "^std::")
+      if(HAVE_SYS_TYPES_H)
+        string(APPEND headers "#include <sys/types.h>\n")
+      endif()
+      if(HAVE_CSTDINT)
+        string(APPEND headers "#include <cstdint>\n")
+      endif()
+      if(HAVE_CSTDDEF)
+        string(APPEND headers "#include <cstddef>\n")
+      endif()
+    else()
+      if(HAVE_SYS_TYPES_H)
+        string(APPEND headers "#include <sys/types.h>\n")
+      endif()
+      if(HAVE_STDINT_H)
+        string(APPEND headers "#include <stdint.h>\n")
+      endif()
+      if(HAVE_STDDEF_H)
+        string(APPEND headers "#include <stddef.h>\n")
+      endif()
+    endif()
+  endif()
+  foreach(h ${CMAKE_EXTRA_INCLUDE_FILES})
+    string(APPEND headers "#include \"${h}\"\n")
+  endforeach()
+
+  # Perform the check.
+  set(bin ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.bin)
+  configure_file(${__check_type_size_dir}/CheckTypeSize.c.in ${src} @ONLY)
+  try_compile(HAVE_${var} ${CMAKE_BINARY_DIR} ${src}
+    COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+    LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS}
+    LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}
+    CMAKE_FLAGS
+      "-DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS}"
+      "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}"
+    OUTPUT_VARIABLE output
+    COPY_FILE ${bin}
+    )
+
+  if(HAVE_${var})
+    # The check compiled.  Load information from the binary.
+    file(STRINGS ${bin} strings LIMIT_COUNT 10 REGEX "INFO:size")
+
+    # Parse the information strings.
+    set(regex_size ".*INFO:size\\[0*([^]]*)\\].*")
+    set(regex_key " key\\[([^]]*)\\]")
+    set(keys)
+    set(code)
+    set(mismatch)
+    set(first 1)
+    foreach(info ${strings})
+      if("${info}" MATCHES "${regex_size}")
+        # Get the type size.
+        set(size "${CMAKE_MATCH_1}")
+        if(first)
+          set(${var} ${size})
+        elseif(NOT "${size}" STREQUAL "${${var}}")
+          set(mismatch 1)
+        endif()
+        set(first 0)
+
+        # Get the architecture map key.
+        string(REGEX MATCH   "${regex_key}"       key "${info}")
+        string(REGEX REPLACE "${regex_key}" "\\1" key "${key}")
+        if(key)
+          string(APPEND code "\nset(${var}-${key} \"${size}\")")
+          list(APPEND keys ${key})
+        endif()
+      endif()
+    endforeach()
+
+    # Update the architecture-to-size map.
+    if(mismatch AND keys)
+      configure_file(${__check_type_size_dir}/CheckTypeSizeMap.cmake.in ${map} @ONLY)
+      set(${var} 0)
+    else()
+      file(REMOVE ${map})
+    endif()
+
+    if(mismatch AND NOT keys)
+      message(SEND_ERROR "CHECK_TYPE_SIZE found different results, consider setting CMAKE_OSX_ARCHITECTURES or CMAKE_TRY_COMPILE_OSX_ARCHITECTURES to one or no architecture !")
+    endif()
+
+    if(NOT CMAKE_REQUIRED_QUIET)
+      message(CHECK_PASS "done")
+    endif()
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+      "Determining size of ${type} passed with the following output:\n${output}\n\n")
+    set(${var} "${${var}}" CACHE INTERNAL "CHECK_TYPE_SIZE: sizeof(${type})")
+  else()
+    # The check failed to compile.
+    if(NOT CMAKE_REQUIRED_QUIET)
+      message(CHECK_FAIL "failed")
+    endif()
+    file(READ ${src} content)
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+      "Determining size of ${type} failed with the following output:\n${output}\n${src}:\n${content}\n\n")
+    set(${var} "" CACHE INTERNAL "CHECK_TYPE_SIZE: ${type} unknown")
+    file(REMOVE ${map})
+  endif()
+endfunction()
+
+#-----------------------------------------------------------------------------
+macro(CHECK_TYPE_SIZE TYPE VARIABLE)
+  # parse arguments
+  unset(doing)
+  foreach(arg ${ARGN})
+    if("x${arg}" STREQUAL "xBUILTIN_TYPES_ONLY")
+      set(_CHECK_TYPE_SIZE_${arg} 1)
+      unset(doing)
+    elseif("x${arg}" STREQUAL "xLANGUAGE") # change to MATCHES for more keys
+      set(doing "${arg}")
+      set(_CHECK_TYPE_SIZE_${doing} "")
+    elseif("x${doing}" STREQUAL "xLANGUAGE")
+      set(_CHECK_TYPE_SIZE_${doing} "${arg}")
+      unset(doing)
+    else()
+      message(FATAL_ERROR "Unknown argument:\n  ${arg}\n")
+    endif()
+  endforeach()
+  if("x${doing}" MATCHES "^x(LANGUAGE)$")
+    message(FATAL_ERROR "Missing argument:\n  ${doing} arguments requires a value\n")
+  endif()
+  if(DEFINED _CHECK_TYPE_SIZE_LANGUAGE)
+    if(NOT "x${_CHECK_TYPE_SIZE_LANGUAGE}" MATCHES "^x(C|CXX)$")
+      message(FATAL_ERROR "Unknown language:\n  ${_CHECK_TYPE_SIZE_LANGUAGE}.\nSupported languages: C, CXX.\n")
+    endif()
+    set(_language ${_CHECK_TYPE_SIZE_LANGUAGE})
+  else()
+    set(_language C)
+  endif()
+
+  # Optionally check for standard headers.
+  if(_CHECK_TYPE_SIZE_BUILTIN_TYPES_ONLY)
+    set(_builtin 0)
+  else()
+    set(_builtin 1)
+    if(_language STREQUAL "C")
+      check_include_file(sys/types.h HAVE_SYS_TYPES_H)
+      check_include_file(stdint.h HAVE_STDINT_H)
+      check_include_file(stddef.h HAVE_STDDEF_H)
+    elseif(_language STREQUAL "CXX")
+      check_include_file_cxx(sys/types.h HAVE_SYS_TYPES_H)
+      if("${TYPE}" MATCHES "^std::")
+        check_include_file_cxx(cstdint HAVE_CSTDINT)
+        check_include_file_cxx(cstddef HAVE_CSTDDEF)
+      else()
+        check_include_file_cxx(stdint.h HAVE_STDINT_H)
+        check_include_file_cxx(stddef.h HAVE_STDDEF_H)
+      endif()
+    endif()
+  endif()
+  unset(_CHECK_TYPE_SIZE_BUILTIN_TYPES_ONLY)
+  unset(_CHECK_TYPE_SIZE_LANGUAGE)
+
+  # Compute or load the size or size map.
+  set(${VARIABLE}_KEYS)
+  set(_map_file ${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${VARIABLE}.cmake)
+  if(NOT DEFINED HAVE_${VARIABLE})
+    __check_type_size_impl(${TYPE} ${VARIABLE} ${_map_file} ${_builtin} ${_language})
+  endif()
+  include(${_map_file} OPTIONAL)
+  set(_map_file)
+  set(_builtin)
+
+  # Create preprocessor code.
+  if(${VARIABLE}_KEYS)
+    set(${VARIABLE}_CODE)
+    set(_if if)
+    foreach(key ${${VARIABLE}_KEYS})
+      string(APPEND ${VARIABLE}_CODE "#${_if} defined(${key})\n# define ${VARIABLE} ${${VARIABLE}-${key}}\n")
+      set(_if elif)
+    endforeach()
+    string(APPEND ${VARIABLE}_CODE "#else\n# error ${VARIABLE} unknown\n#endif")
+    set(_if)
+  elseif(${VARIABLE})
+    set(${VARIABLE}_CODE "#define ${VARIABLE} ${${VARIABLE}}")
+  else()
+    set(${VARIABLE}_CODE "/* #undef ${VARIABLE} */")
+  endif()
+endmacro()
+
+#-----------------------------------------------------------------------------
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/CheckTypeSizeMap.cmake.in b/share/cmake-3.22/Modules/CheckTypeSizeMap.cmake.in
similarity index 100%
rename from share/cmake-3.18/Modules/CheckTypeSizeMap.cmake.in
rename to share/cmake-3.22/Modules/CheckTypeSizeMap.cmake.in
diff --git a/share/cmake-3.18/Modules/CheckVariableExists.c b/share/cmake-3.22/Modules/CheckVariableExists.c
similarity index 100%
rename from share/cmake-3.18/Modules/CheckVariableExists.c
rename to share/cmake-3.22/Modules/CheckVariableExists.c
diff --git a/share/cmake-3.22/Modules/CheckVariableExists.cmake b/share/cmake-3.22/Modules/CheckVariableExists.cmake
new file mode 100644
index 0000000..7420124
--- /dev/null
+++ b/share/cmake-3.22/Modules/CheckVariableExists.cmake
@@ -0,0 +1,90 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CheckVariableExists
+-------------------
+
+Check if the variable exists.
+
+.. command:: CHECK_VARIABLE_EXISTS
+
+  .. code-block:: cmake
+
+    CHECK_VARIABLE_EXISTS(VAR VARIABLE)
+
+
+  ::
+
+    VAR      - the name of the variable
+    VARIABLE - variable to store the result
+               Will be created as an internal cache variable.
+
+
+  This macro is only for ``C`` variables.
+
+The following variables may be set before calling this macro to modify
+the way the check is run:
+
+``CMAKE_REQUIRED_FLAGS``
+  string of compile command line flags.
+``CMAKE_REQUIRED_DEFINITIONS``
+  list of macros to define (-DFOO=bar).
+``CMAKE_REQUIRED_LINK_OPTIONS``
+  .. versionadded:: 3.14
+    list of options to pass to link command.
+``CMAKE_REQUIRED_LIBRARIES``
+  list of libraries to link.
+``CMAKE_REQUIRED_QUIET``
+  .. versionadded:: 3.1
+    execute quietly without messages.
+#]=======================================================================]
+
+include_guard(GLOBAL)
+
+macro(CHECK_VARIABLE_EXISTS VAR VARIABLE)
+  if(NOT DEFINED "${VARIABLE}")
+    set(MACRO_CHECK_VARIABLE_DEFINITIONS
+      "-DCHECK_VARIABLE_EXISTS=${VAR} ${CMAKE_REQUIRED_FLAGS}")
+    if(NOT CMAKE_REQUIRED_QUIET)
+      message(CHECK_START "Looking for ${VAR}")
+    endif()
+    if(CMAKE_REQUIRED_LINK_OPTIONS)
+      set(CHECK_VARIABLE_EXISTS_ADD_LINK_OPTIONS
+        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
+    else()
+      set(CHECK_VARIABLE_EXISTS_ADD_LINK_OPTIONS)
+    endif()
+    if(CMAKE_REQUIRED_LIBRARIES)
+      set(CHECK_VARIABLE_EXISTS_ADD_LIBRARIES
+        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+    else()
+      set(CHECK_VARIABLE_EXISTS_ADD_LIBRARIES)
+    endif()
+    try_compile(${VARIABLE}
+      ${CMAKE_BINARY_DIR}
+      ${CMAKE_ROOT}/Modules/CheckVariableExists.c
+      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+      ${CHECK_VARIABLE_EXISTS_ADD_LINK_OPTIONS}
+      ${CHECK_VARIABLE_EXISTS_ADD_LIBRARIES}
+      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_VARIABLE_DEFINITIONS}
+      OUTPUT_VARIABLE OUTPUT)
+    if(${VARIABLE})
+      set(${VARIABLE} 1 CACHE INTERNAL "Have variable ${VAR}")
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_PASS "found")
+      endif()
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Determining if the variable ${VAR} exists passed with the following output:\n"
+        "${OUTPUT}\n\n")
+    else()
+      set(${VARIABLE} "" CACHE INTERNAL "Have variable ${VAR}")
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_FAIL "not found")
+      endif()
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Determining if the variable ${VAR} exists failed with the following output:\n"
+        "${OUTPUT}\n\n")
+    endif()
+  endif()
+endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/ADSP-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/ADSP-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/ADSP-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/ARMCC-ASM.cmake b/share/cmake-3.22/Modules/Compiler/ARMCC-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/ARMCC-ASM.cmake
rename to share/cmake-3.22/Modules/Compiler/ARMCC-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/ARMCC-C.cmake b/share/cmake-3.22/Modules/Compiler/ARMCC-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/ARMCC-C.cmake
rename to share/cmake-3.22/Modules/Compiler/ARMCC-C.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/ARMCC-CXX.cmake b/share/cmake-3.22/Modules/Compiler/ARMCC-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/ARMCC-CXX.cmake
rename to share/cmake-3.22/Modules/Compiler/ARMCC-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/ARMCC-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/ARMCC-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/ARMCC-DetermineCompiler.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/ARMCC.cmake b/share/cmake-3.22/Modules/Compiler/ARMCC.cmake
new file mode 100644
index 0000000..f4f1854
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/ARMCC.cmake
@@ -0,0 +1,39 @@
+if(_ARMCC_CMAKE_LOADED)
+  return()
+endif()
+set(_ARMCC_CMAKE_LOADED TRUE)
+
+# See ARM Compiler documentation at:
+# http://infocenter.arm.com/help/topic/com.arm.doc.set.swdev/index.html
+
+get_filename_component(_CMAKE_C_TOOLCHAIN_LOCATION "${CMAKE_C_COMPILER}" PATH)
+get_filename_component(_CMAKE_CXX_TOOLCHAIN_LOCATION "${CMAKE_CXX_COMPILER}" PATH)
+
+set(CMAKE_EXECUTABLE_SUFFIX ".elf")
+
+find_program(CMAKE_ARMCC_LINKER armlink HINTS "${_CMAKE_C_TOOLCHAIN_LOCATION}" "${_CMAKE_CXX_TOOLCHAIN_LOCATION}" )
+find_program(CMAKE_ARMCC_AR     armar   HINTS "${_CMAKE_C_TOOLCHAIN_LOCATION}" "${_CMAKE_CXX_TOOLCHAIN_LOCATION}" )
+
+set(CMAKE_LINKER "${CMAKE_ARMCC_LINKER}" CACHE FILEPATH "The ARMCC linker" FORCE)
+mark_as_advanced(CMAKE_ARMCC_LINKER)
+set(CMAKE_AR "${CMAKE_ARMCC_AR}" CACHE FILEPATH "The ARMCC archiver" FORCE)
+mark_as_advanced(CMAKE_ARMCC_AR)
+
+macro(__compiler_armcc lang)
+  string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
+  string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g")
+  string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Ospace -DNDEBUG")
+  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -Otime -DNDEBUG")
+  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g")
+
+  set(CMAKE_${lang}_OUTPUT_EXTENSION ".o")
+  set(CMAKE_${lang}_OUTPUT_EXTENSION_REPLACE 1)
+  set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "--via=")
+
+  set(CMAKE_${lang}_LINK_EXECUTABLE      "<CMAKE_LINKER> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS> -o <TARGET> --list <TARGET_BASE>.map")
+  set(CMAKE_${lang}_CREATE_STATIC_LIBRARY  "<CMAKE_AR> --create -cr <TARGET> <LINK_FLAGS> <OBJECTS>")
+
+  set(CMAKE_DEPFILE_FLAGS_${lang} "--depend=<DEP_FILE> --depend_single_line --no_depend_system_headers")
+
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Xlinker" " ")
+endmacro()
diff --git a/share/cmake-3.22/Modules/Compiler/ARMClang-ASM.cmake b/share/cmake-3.22/Modules/Compiler/ARMClang-ASM.cmake
new file mode 100644
index 0000000..6a299be
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/ARMClang-ASM.cmake
@@ -0,0 +1,9 @@
+include(Compiler/ARMClang)
+
+set(CMAKE_ASM_OUTPUT_EXTENSION ".o")
+set(CMAKE_ASM_OUTPUT_EXTENSION_REPLACE 1)
+
+set(CMAKE_ASM_COMPILE_OBJECT       "<CMAKE_ASM_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -c -o <OBJECT> <SOURCE>")
+set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS S;s;asm;msa)
+
+__compiler_armclang(ASM)
diff --git a/share/cmake-3.18/Modules/Compiler/ARMClang-C-FeatureTests.cmake b/share/cmake-3.22/Modules/Compiler/ARMClang-C-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/ARMClang-C-FeatureTests.cmake
rename to share/cmake-3.22/Modules/Compiler/ARMClang-C-FeatureTests.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/ARMClang-C.cmake b/share/cmake-3.22/Modules/Compiler/ARMClang-C.cmake
new file mode 100644
index 0000000..01c4cea
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/ARMClang-C.cmake
@@ -0,0 +1,23 @@
+include(Compiler/Clang-C)
+include(Compiler/ARMClang)
+__compiler_armclang(C)
+
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+    AND CMAKE_DEPFILE_FLAGS_C)
+  # dependencies are computed by the compiler itself
+  set(CMAKE_C_DEPFILE_FORMAT gcc)
+  set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
+endif()
+
+set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
+set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
+set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
+
+set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
+set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
+set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
+
+set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
+set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
+set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
diff --git a/share/cmake-3.18/Modules/Compiler/ARMClang-CXX-FeatureTests.cmake b/share/cmake-3.22/Modules/Compiler/ARMClang-CXX-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/ARMClang-CXX-FeatureTests.cmake
rename to share/cmake-3.22/Modules/Compiler/ARMClang-CXX-FeatureTests.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/ARMClang-CXX.cmake b/share/cmake-3.22/Modules/Compiler/ARMClang-CXX.cmake
new file mode 100644
index 0000000..045b783
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/ARMClang-CXX.cmake
@@ -0,0 +1,11 @@
+include(Compiler/Clang-CXX)
+include(Compiler/ARMClang)
+__compiler_armclang(CXX)
+
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+    AND CMAKE_DEPFILE_FLAGS_CXX)
+  # dependencies are computed by the compiler itself
+  set(CMAKE_CXX_DEPFILE_FORMAT gcc)
+  set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
+endif()
diff --git a/share/cmake-3.18/Modules/Compiler/ARMClang-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/ARMClang-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/ARMClang-DetermineCompiler.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/ARMClang.cmake b/share/cmake-3.22/Modules/Compiler/ARMClang.cmake
new file mode 100644
index 0000000..c839220
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/ARMClang.cmake
@@ -0,0 +1,146 @@
+if(_ARMClang_CMAKE_LOADED)
+  return()
+endif()
+
+# This file requires CMAKE_LINKER and CMAKE_AR set by CMakeFindBinUtils.cmake.
+if(NOT (DEFINED CMAKE_LINKER AND DEFINED CMAKE_AR))
+  return()
+endif()
+
+set(_ARMClang_CMAKE_LOADED TRUE)
+
+# Save the CMP0123 setting in a variable used both below and by try_compile.
+cmake_policy(GET CMP0123 CMAKE_ARMClang_CMP0123)
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+set(CMAKE_EXECUTABLE_SUFFIX ".elf")
+
+if (CMAKE_LINKER MATCHES "armlink")
+  set(__CMAKE_ARMClang_USING_armlink TRUE)
+  set(CMAKE_LIBRARY_PATH_FLAG "--userlibpath=")
+else()
+  set(__CMAKE_ARMClang_USING_armlink FALSE)
+endif()
+
+# get compiler supported cpu list
+function(__armclang_set_processor_list lang out_var)
+  execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" --target=${CMAKE_${lang}_COMPILER_TARGET} -mcpu=list
+    OUTPUT_VARIABLE processor_list
+    ERROR_VARIABLE processor_list)
+  string(REGEX MATCHALL "-mcpu=([^ \n]*)" processor_list "${processor_list}")
+  string(REGEX REPLACE "-mcpu=" "" processor_list "${processor_list}")
+  set(${out_var} "${processor_list}" PARENT_SCOPE)
+endfunction()
+
+# check processor is in list
+function(__armclang_check_processor processor list out_var)
+  string(TOLOWER "${processor}" processor)
+  if(processor IN_LIST list)
+    set(${out_var} TRUE PARENT_SCOPE)
+  else()
+    set(${out_var} FALSE PARENT_SCOPE)
+  endif()
+endfunction()
+
+# get compiler supported arch list
+function(__armclang_set_arch_list lang out_var)
+  execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" --target=${CMAKE_${lang}_COMPILER_TARGET} -march=list
+    OUTPUT_VARIABLE arch_list
+    ERROR_VARIABLE arch_list)
+  string(REGEX MATCHALL "-march=([^ \n]*)" arch_list "${arch_list}")
+  string(REGEX REPLACE "-march=" "" arch_list "${arch_list}")
+  set(${out_var} "${arch_list}" PARENT_SCOPE)
+endfunction()
+
+# get linker supported cpu list
+function(__armlink_set_cpu_list lang out_var)
+  if(__CMAKE_ARMClang_USING_armlink)
+    set(__linker_wrapper_flags "")
+  else()
+    set(__linker_wrapper_flags --target=${CMAKE_${lang}_COMPILER_TARGET} -Xlinker)
+  endif()
+
+  execute_process(COMMAND "${CMAKE_LINKER}" ${__linker_wrapper_flags} --cpu=list
+    OUTPUT_VARIABLE cpu_list
+    ERROR_VARIABLE cpu_list)
+  string(REGEX MATCHALL "--cpu=([^ \n]*)" cpu_list "${cpu_list}")
+  string(REGEX REPLACE "--cpu=" "" cpu_list "${cpu_list}")
+  set(${out_var} "${cpu_list}" PARENT_SCOPE)
+endfunction()
+
+macro(__compiler_armclang lang)
+  if(NOT CMAKE_${lang}_COMPILER_TARGET)
+    set(CMAKE_${lang}_COMPILER_TARGET arm-arm-none-eabi)
+  endif()
+  if(NOT CMAKE_${lang}_COMPILER_PROCESSOR_LIST)
+    __armclang_set_processor_list(${lang} CMAKE_${lang}_COMPILER_PROCESSOR_LIST)
+  endif()
+  if(NOT CMAKE_${lang}_COMPILER_ARCH_LIST)
+    __armclang_set_arch_list(${lang} CMAKE_${lang}_COMPILER_ARCH_LIST)
+  endif()
+
+  # CMAKE_SYSTEM_PROCESSOR and CMAKE_SYSTEM_ARCH are not sufficient because they provide no
+  # information of additional CPU features needed in `-mcpu=<name>[+[no]<feature>+...]`.
+  # The automatic setting of compile and link options is deprecated and projects should specify their own.
+  cmake_policy(GET CMP0123 policy_CMP0123)
+  if(NOT "x${CMAKE_ARMClang_CMP0123}x" STREQUAL "xNEWx")
+    if(NOT "x${CMAKE_ARMClang_CMP0123}x" STREQUAL "xOLDx")
+      cmake_policy(GET_WARNING CMP0123 _cmp0123_warning)
+      message(AUTHOR_WARNING
+        "${_cmp0123_warning}\n"
+        "For compatibility, CMake will automatically add cpu/arch flags based "
+        "on the CMAKE_SYSTEM_PROCESSOR and/or CMAKE_SYSTEM_ARCH variables."
+        )
+    endif()
+
+    if(NOT CMAKE_SYSTEM_PROCESSOR AND NOT CMAKE_SYSTEM_ARCH)
+      message(FATAL_ERROR "  CMAKE_SYSTEM_PROCESSOR or CMAKE_SYSTEM_ARCH must be set for ARMClang\n"
+        "  Supported processor: ${CMAKE_${lang}_COMPILER_PROCESSOR_LIST}\n"
+        "  Supported Architecture: ${CMAKE_${lang}_COMPILER_ARCH_LIST}")
+    else()
+      __armclang_check_processor("${CMAKE_SYSTEM_ARCH}" "${CMAKE_${lang}_COMPILER_ARCH_LIST}" _CMAKE_${lang}_CHECK_ARCH_RESULT)
+      if( _CMAKE_${lang}_CHECK_ARCH_RESULT)
+        string(APPEND CMAKE_${lang}_FLAGS_INIT " -march=${CMAKE_SYSTEM_ARCH}")
+        set(__march_flag_set TRUE)
+      endif()
+      __armclang_check_processor("${CMAKE_SYSTEM_PROCESSOR}" "${CMAKE_${lang}_COMPILER_PROCESSOR_LIST}" _CMAKE_${lang}_CHECK_PROCESSOR_RESULT)
+      if(_CMAKE_${lang}_CHECK_PROCESSOR_RESULT)
+        string(APPEND CMAKE_${lang}_FLAGS_INIT " -mcpu=${CMAKE_SYSTEM_PROCESSOR}")
+        set(__mcpu_flag_set TRUE)
+      endif()
+      if(NOT __march_flag_set AND NOT __mcpu_flag_set)
+        message(FATAL_ERROR "At least one of the variables CMAKE_SYSTEM_PROCESSOR or CMAKE_SYSTEM_ARCH must be set for ARMClang\n"
+                            "Supported processor: ${CMAKE_${lang}_COMPILER_PROCESSOR_LIST}\n"
+                            "  Supported Architecture: ${CMAKE_${lang}_COMPILER_ARCH_LIST}")
+      endif()
+      unset(_CMAKE_${lang}_CHECK_PROCESSOR_RESULT)
+      unset(_CMAKE_${lang}_CHECK_ARCH_RESULT)
+    endif()
+
+    #check if CMAKE_SYSTEM_PROCESSOR belongs to supported cpu list for armlink
+    __armlink_set_cpu_list( ${lang} CMAKE_LINKER_CPU_LIST)
+    list(TRANSFORM CMAKE_LINKER_CPU_LIST TOLOWER)
+    __armclang_check_processor("${CMAKE_SYSTEM_PROCESSOR}" "${CMAKE_LINKER_CPU_LIST}" _CMAKE_CHECK_LINK_CPU_RESULT)
+    if(_CMAKE_CHECK_LINK_CPU_RESULT)
+      string(APPEND CMAKE_${lang}_LINK_FLAGS " --cpu=${CMAKE_SYSTEM_PROCESSOR}")
+    endif()
+
+  endif()
+
+  if(__CMAKE_ARMClang_USING_armlink)
+    unset(CMAKE_${lang}_LINKER_WRAPPER_FLAG)
+    set(__CMAKE_ARMClang_USING_armlink_WRAPPER "")
+  else()
+    set(__CMAKE_ARMClang_USING_armlink_WRAPPER "-Xlinker")
+  endif()
+  set(CMAKE_${lang}_LINK_EXECUTABLE "<CMAKE_LINKER> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS> -o <TARGET> ${__CMAKE_ARMClang_USING_armlink_WRAPPER} --list=<TARGET_BASE>.map")
+  set(CMAKE_${lang}_CREATE_STATIC_LIBRARY  "<CMAKE_AR> --create -cr <TARGET> <LINK_FLAGS> <OBJECTS>")
+  set(CMAKE_${lang}_ARCHIVE_CREATE         "<CMAKE_AR> --create -cr <TARGET> <LINK_FLAGS> <OBJECTS>")
+  set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "${__CMAKE_ARMClang_USING_armlink_WRAPPER} --via=")
+  set(CMAKE_${lang}_OUTPUT_EXTENSION ".o")
+  set(CMAKE_${lang}_OUTPUT_EXTENSION_REPLACE 1)
+endmacro()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/Compiler/Absoft-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/Absoft-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Absoft-Fortran.cmake
rename to share/cmake-3.22/Modules/Compiler/Absoft-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/AppleClang-ASM.cmake b/share/cmake-3.22/Modules/Compiler/AppleClang-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/AppleClang-ASM.cmake
rename to share/cmake-3.22/Modules/Compiler/AppleClang-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/AppleClang-C-FeatureTests.cmake b/share/cmake-3.22/Modules/Compiler/AppleClang-C-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/AppleClang-C-FeatureTests.cmake
rename to share/cmake-3.22/Modules/Compiler/AppleClang-C-FeatureTests.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/AppleClang-C.cmake b/share/cmake-3.22/Modules/Compiler/AppleClang-C.cmake
new file mode 100644
index 0000000..d711b6e
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/AppleClang-C.cmake
@@ -0,0 +1,41 @@
+include(Compiler/Clang)
+__compiler_clang(C)
+
+
+if(NOT "x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
+  if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+      AND CMAKE_GENERATOR MATCHES "Makefiles"
+      AND CMAKE_DEPFILE_FLAGS_C)
+    # dependencies are computed by the compiler itself
+    set(CMAKE_C_DEPFILE_FORMAT gcc)
+    set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
+  endif()
+endif()
+
+set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
+
+if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.0)
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
+  set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
+
+  set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
+  set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
+
+  set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
+  set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
+  set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 11.0)
+  set(CMAKE_C17_STANDARD_COMPILE_OPTION "-std=c17")
+  set(CMAKE_C17_EXTENSION_COMPILE_OPTION "-std=gnu17")
+endif()
+
+if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 11.0.3)
+  set(CMAKE_C23_STANDARD_COMPILE_OPTION "-std=c2x")
+  set(CMAKE_C23_EXTENSION_COMPILE_OPTION "-std=gnu2x")
+endif()
+
+__compiler_check_default_language_standard(C 4.0 99 9.1 11 12.0.5 17)
diff --git a/share/cmake-3.18/Modules/Compiler/AppleClang-CXX-FeatureTests.cmake b/share/cmake-3.22/Modules/Compiler/AppleClang-CXX-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/AppleClang-CXX-FeatureTests.cmake
rename to share/cmake-3.22/Modules/Compiler/AppleClang-CXX-FeatureTests.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/AppleClang-CXX.cmake b/share/cmake-3.22/Modules/Compiler/AppleClang-CXX.cmake
new file mode 100644
index 0000000..28be1df
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/AppleClang-CXX.cmake
@@ -0,0 +1,55 @@
+include(Compiler/Clang)
+__compiler_clang(CXX)
+
+set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
+
+if(NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
+  if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+      AND CMAKE_GENERATOR MATCHES "Makefiles"
+      AND CMAKE_DEPFILE_FLAGS_CXX)
+    # dependencies are computed by the compiler itself
+    set(CMAKE_CXX_DEPFILE_FORMAT gcc)
+    set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
+  endif()
+
+  set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
+endif()
+
+if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.0)
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
+  set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
+
+  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
+  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
+endif()
+
+if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.1)
+  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
+  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
+  set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
+elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.1)
+  # AppleClang 5.0 knows this flag, but does not set a __cplusplus macro greater than 201103L
+  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++1y")
+  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
+  set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.0)
+  set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
+  set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
+elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.1)
+  set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++1z")
+  set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
+endif()
+
+if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0)
+    set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.0)
+  set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++2a")
+  set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++2a")
+endif()
+
+__compiler_check_default_language_standard(CXX 4.0 98)
diff --git a/share/cmake-3.18/Modules/Compiler/AppleClang-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/AppleClang-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/AppleClang-DetermineCompiler.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/AppleClang-OBJC.cmake b/share/cmake-3.22/Modules/Compiler/AppleClang-OBJC.cmake
new file mode 100644
index 0000000..f40c396
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/AppleClang-OBJC.cmake
@@ -0,0 +1,40 @@
+include(Compiler/Clang-OBJC)
+
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles"
+    AND CMAKE_DEPFILE_FLAGS_OBJC)
+  # dependencies are computed by the compiler itself
+  set(CMAKE_OBJC_DEPFILE_FORMAT gcc)
+  set(CMAKE_OBJC_DEPENDS_USE_COMPILER TRUE)
+endif()
+
+
+if(NOT CMAKE_OBJC_COMPILER_VERSION VERSION_LESS 4.0)
+  set(CMAKE_OBJC90_STANDARD_COMPILE_OPTION "-std=c90")
+  set(CMAKE_OBJC90_EXTENSION_COMPILE_OPTION "-std=gnu90")
+  set(CMAKE_OBJC90_STANDARD__HAS_FULL_SUPPORT ON)
+
+  set(CMAKE_OBJC99_STANDARD_COMPILE_OPTION "-std=c99")
+  set(CMAKE_OBJC99_EXTENSION_COMPILE_OPTION "-std=gnu99")
+  set(CMAKE_OBJC99_STANDARD__HAS_FULL_SUPPORT ON)
+
+  set(CMAKE_OBJC11_STANDARD_COMPILE_OPTION "-std=c11")
+  set(CMAKE_OBJC11_EXTENSION_COMPILE_OPTION "-std=gnu11")
+  set(CMAKE_OBJC11_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+# AppleClang 10.0 was the oldest compiler available to test C17 support
+if(NOT CMAKE_OBJC_COMPILER_VERSION VERSION_LESS 10.0)
+  set(CMAKE_OBJC17_STANDARD_COMPILE_OPTION "-std=c17")
+  set(CMAKE_OBJC17_EXTENSION_COMPILE_OPTION "-std=gnu17")
+  set(CMAKE_OBJC17_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+if(NOT CMAKE_OBJC_COMPILER_VERSION VERSION_LESS 11.0)
+  set(CMAKE_OBJC23_STANDARD_COMPILE_OPTION "-std=c2x")
+  set(CMAKE_OBJC23_EXTENSION_COMPILE_OPTION "-std=gnu2x")
+  set(CMAKE_OBJC23_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+# AppleClang 10.0 was the oldest compiler available to test default C11 support
+__compiler_check_default_language_standard(OBJC 4.0 99 10.0 11)
diff --git a/share/cmake-3.22/Modules/Compiler/AppleClang-OBJCXX.cmake b/share/cmake-3.22/Modules/Compiler/AppleClang-OBJCXX.cmake
new file mode 100644
index 0000000..172a343
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/AppleClang-OBJCXX.cmake
@@ -0,0 +1,52 @@
+include(Compiler/Clang-OBJCXX)
+
+
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles"
+    AND CMAKE_DEPFILE_FLAGS_OBJCXX)
+  # dependencies are computed by the compiler itself
+  set(CMAKE_OBJCXX_DEPFILE_FORMAT gcc)
+  set(CMAKE_OBJCXX_DEPENDS_USE_COMPILER TRUE)
+endif()
+
+
+set(CMAKE_OBJCXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
+
+if(NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 4.0)
+  set(CMAKE_OBJCXX98_STANDARD_COMPILE_OPTION "-std=c++98")
+  set(CMAKE_OBJCXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
+  set(CMAKE_OBJCXX98_STANDARD__HAS_FULL_SUPPORT ON)
+
+  set(CMAKE_OBJCXX11_STANDARD_COMPILE_OPTION "-std=c++11")
+  set(CMAKE_OBJCXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
+endif()
+
+if(NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 6.1)
+  set(CMAKE_OBJCXX14_STANDARD_COMPILE_OPTION "-std=c++14")
+  set(CMAKE_OBJCXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
+  set(CMAKE_OBJCXX14_STANDARD__HAS_FULL_SUPPORT ON)
+elseif(NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 5.1)
+  # AppleClang 5.0 knows this flag, but does not set a __cplusplus macro greater than 201103L
+  set(CMAKE_OBJCXX14_STANDARD_COMPILE_OPTION "-std=c++1y")
+  set(CMAKE_OBJCXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
+  set(CMAKE_OBJCXX14_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+if (NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 10.0)
+  set(CMAKE_OBJCXX17_STANDARD_COMPILE_OPTION "-std=c++17")
+  set(CMAKE_OBJCXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
+elseif (NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 6.1)
+  set(CMAKE_OBJCXX17_STANDARD_COMPILE_OPTION "-std=c++1z")
+  set(CMAKE_OBJCXX17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
+endif()
+
+if (NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 8.0)
+    set(CMAKE_OBJCXX11_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+if (NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 10.0)
+  set(CMAKE_OBJCXX20_STANDARD_COMPILE_OPTION "-std=c++2a")
+  set(CMAKE_OBJCXX20_EXTENSION_COMPILE_OPTION "-std=gnu++2a")
+endif()
+
+__compiler_check_default_language_standard(OBJCXX 4.0 98)
diff --git a/share/cmake-3.18/Modules/Compiler/Borland-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Borland-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/Borland-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/Bruce-C-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Bruce-C-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/Bruce-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/Bruce-C.cmake b/share/cmake-3.22/Modules/Compiler/Bruce-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Bruce-C.cmake
rename to share/cmake-3.22/Modules/Compiler/Bruce-C.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/CCur-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/CCur-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/CCur-Fortran.cmake
rename to share/cmake-3.22/Modules/Compiler/CCur-Fortran.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake b/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake
new file mode 100644
index 0000000..2f220d4
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake
@@ -0,0 +1,194 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# This module is shared by multiple languages and compilers; use include guard
+if (__COMPILER_CMAKE_COMMON_COMPILER_MACROS)
+  return()
+endif ()
+set(__COMPILER_CMAKE_COMMON_COMPILER_MACROS 1)
+
+
+# Check that a compiler's language standard is properly detected
+# Parameters:
+#   lang   - Language to check
+#   stdver1 - Minimum version to set a given default for
+#   std1    - Default to use for compiler ver >= stdver1
+#   stdverN - Minimum version to set a given default for
+#   stdN    - Default to use for compiler ver >= stdverN
+#
+#   The order of stdverN stdN pairs passed as arguments is expected to be in
+#   monotonically increasing version order.
+#
+# Note:
+#   This macro can be called with multiple version / std pairs to convey that
+#   newer compiler versions may use a newer standard default.
+#
+# Example:
+#   To specify that compiler version 6.1 and newer defaults to C++11 while
+#   4.8 <= ver < 6.1 default to C++98, you would call:
+#
+# __compiler_check_default_language_standard(CXX 4.8 98 6.1 11)
+#
+macro(__compiler_check_default_language_standard lang stdver1 std1)
+  set(__std_ver_pairs "${stdver1};${std1};${ARGN}")
+  string(REGEX REPLACE " *; *" " " __std_ver_pairs "${__std_ver_pairs}")
+  string(REGEX MATCHALL "[^ ]+ [^ ]+" __std_ver_pairs "${__std_ver_pairs}")
+
+  # If the compiler version is below the threshold of even having CMake
+  # support for language standards, then don't bother.
+  if (CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL "${stdver1}")
+    if (NOT CMAKE_${lang}_COMPILER_FORCED)
+      if (NOT CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT OR NOT DEFINED CMAKE_${lang}_EXTENSIONS_COMPUTED_DEFAULT)
+        message(FATAL_ERROR "CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT and CMAKE_${lang}_EXTENSIONS_COMPUTED_DEFAULT should be set for ${CMAKE_${lang}_COMPILER_ID} (${CMAKE_${lang}_COMPILER}) version ${CMAKE_${lang}_COMPILER_VERSION}")
+      endif ()
+      set(CMAKE_${lang}_STANDARD_DEFAULT ${CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT})
+      set(CMAKE_${lang}_EXTENSIONS_DEFAULT ${CMAKE_${lang}_EXTENSIONS_COMPUTED_DEFAULT})
+    else ()
+      list(REVERSE __std_ver_pairs)
+      foreach (__std_ver_pair IN LISTS __std_ver_pairs)
+        string(REGEX MATCH "([^ ]+) (.+)" __std_ver_pair "${__std_ver_pair}")
+        set(__stdver ${CMAKE_MATCH_1})
+        set(__std ${CMAKE_MATCH_2})
+        # Compiler id was forced so just guess the defaults.
+        if (CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL __stdver)
+          if(NOT DEFINED CMAKE_${lang}_EXTENSIONS_DEFAULT)
+            # Currently known compilers default to enabling extensions.
+            set(CMAKE_${lang}_EXTENSIONS_DEFAULT ON)
+          endif()
+          if(NOT DEFINED CMAKE_${lang}_STANDARD_DEFAULT)
+            set(CMAKE_${lang}_STANDARD_DEFAULT ${__std})
+          endif()
+        endif ()
+        unset(__std)
+        unset(__stdver)
+      endforeach ()
+    endif ()
+  endif ()
+  unset(__std_ver_pairs)
+endmacro()
+
+# Define to allow compile features to be automatically determined
+macro(cmake_record_c_compile_features)
+  set(_result 0)
+  if(_result EQUAL 0 AND DEFINED CMAKE_C23_STANDARD_COMPILE_OPTION)
+    _has_compiler_features_c(23)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_C17_STANDARD_COMPILE_OPTION)
+    _has_compiler_features_c(17)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_C11_STANDARD_COMPILE_OPTION)
+    if(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT)
+      _has_compiler_features_c(11)
+    else()
+      _record_compiler_features_c(11)
+    endif()
+    unset(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_C99_STANDARD_COMPILE_OPTION)
+    if(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT)
+      _has_compiler_features_c(99)
+    else()
+      _record_compiler_features_c(99)
+    endif()
+    unset(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_C90_STANDARD_COMPILE_OPTION)
+    if(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT)
+      _has_compiler_features_c(90)
+    else()
+      _record_compiler_features_c(90)
+    endif()
+    unset(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT)
+  endif()
+endmacro()
+
+# Define to allow compile features to be automatically determined
+macro(cmake_record_cxx_compile_features)
+  set(_result 0)
+  if(_result EQUAL 0 AND DEFINED CMAKE_CXX23_STANDARD_COMPILE_OPTION)
+    _has_compiler_features_cxx(23)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_CXX20_STANDARD_COMPILE_OPTION)
+    _has_compiler_features_cxx(20)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_CXX17_STANDARD_COMPILE_OPTION)
+    _has_compiler_features_cxx(17)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_CXX14_STANDARD_COMPILE_OPTION)
+    if(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT)
+      _has_compiler_features_cxx(14)
+    else()
+      _record_compiler_features_cxx(14)
+    endif()
+    unset(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_CXX11_STANDARD_COMPILE_OPTION)
+    if(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT)
+      _has_compiler_features_cxx(11)
+    else()
+      _record_compiler_features_cxx(11)
+    endif()
+    unset(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_CXX98_STANDARD_COMPILE_OPTION)
+    if(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT)
+      _has_compiler_features_cxx(98)
+    else()
+      _record_compiler_features_cxx(98)
+    endif()
+    unset(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT)
+  endif()
+endmacro()
+
+macro(cmake_record_cuda_compile_features)
+  set(_result 0)
+  if(_result EQUAL 0 AND DEFINED CMAKE_CUDA23_STANDARD_COMPILE_OPTION)
+    _has_compiler_features_cuda(23)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_CUDA20_STANDARD_COMPILE_OPTION)
+    _has_compiler_features_cuda(20)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_CUDA17_STANDARD_COMPILE_OPTION)
+    _has_compiler_features_cuda(17)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_CUDA14_STANDARD_COMPILE_OPTION)
+    if(CMAKE_CUDA14_STANDARD__HAS_FULL_SUPPORT)
+      _has_compiler_features_cuda(14)
+    else()
+      _record_compiler_features_cuda(14)
+    endif()
+    unset(CMAKE_CUDA14_STANDARD__HAS_FULL_SUPPORT)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_CUDA11_STANDARD_COMPILE_OPTION)
+    if(CMAKE_CUDA11_STANDARD__HAS_FULL_SUPPORT)
+      _has_compiler_features_cuda(11)
+    else()
+      _record_compiler_features_cuda(11)
+    endif()
+    unset(CMAKE_CUDA11_STANDARD__HAS_FULL_SUPPORT)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_CUDA03_STANDARD_COMPILE_OPTION)
+    if(CMAKE_CUDA03_STANDARD__HAS_FULL_SUPPORT)
+      _has_compiler_features_cuda(03)
+    else()
+      _record_compiler_features_cuda(03)
+    endif()
+    unset(CMAKE_CUDA03_STANDARD__HAS_FULL_SUPPORT)
+  endif()
+endmacro()
+
+macro(cmake_record_hip_compile_features)
+  set(_result 0)
+  if(_result EQUAL 0 AND DEFINED CMAKE_HIP23_STANDARD_COMPILE_OPTION)
+    _has_compiler_features_hip(23)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_HIP20_STANDARD_COMPILE_OPTION)
+    _has_compiler_features_hip(20)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_HIP17_STANDARD_COMPILE_OPTION)
+    _has_compiler_features_hip(17)
+  endif()
+  _has_compiler_features_hip(14)
+  _has_compiler_features_hip(11)
+  _has_compiler_features_hip(98)
+endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/Clang-ASM.cmake b/share/cmake-3.22/Modules/Compiler/Clang-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Clang-ASM.cmake
rename to share/cmake-3.22/Modules/Compiler/Clang-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/Clang-C-FeatureTests.cmake b/share/cmake-3.22/Modules/Compiler/Clang-C-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Clang-C-FeatureTests.cmake
rename to share/cmake-3.22/Modules/Compiler/Clang-C-FeatureTests.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/Clang-C.cmake b/share/cmake-3.22/Modules/Compiler/Clang-C.cmake
new file mode 100644
index 0000000..1b765ad
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Clang-C.cmake
@@ -0,0 +1,85 @@
+include(Compiler/Clang)
+__compiler_clang(C)
+
+cmake_policy(GET CMP0025 appleClangPolicy)
+if(APPLE AND NOT appleClangPolicy STREQUAL NEW)
+  return()
+endif()
+
+if("x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
+  set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -TC)
+  set(CMAKE_C_CLANG_TIDY_DRIVER_MODE "cl")
+  set(CMAKE_C_INCLUDE_WHAT_YOU_USE_DRIVER_MODE "cl")
+  if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+      AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+      AND CMAKE_DEPFILE_FLAGS_C)
+    set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
+  endif()
+elseif("x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
+  set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
+  if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+      AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+      AND CMAKE_DEPFILE_FLAGS_C)
+    # dependencies are computed by the compiler itself
+    set(CMAKE_C_DEPFILE_FORMAT gcc)
+    set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
+  endif()
+endif()
+
+if("x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
+  if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 2.1)
+    set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
+    set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
+
+    set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
+    set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
+  endif()
+
+  if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.1)
+    set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
+    set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
+  elseif(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.0)
+    set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c1x")
+    set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu1x")
+  endif()
+
+  if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 6.0)
+    set(CMAKE_C17_STANDARD_COMPILE_OPTION "-std=c17")
+    set(CMAKE_C17_EXTENSION_COMPILE_OPTION "-std=gnu17")
+  endif()
+
+  if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 9.0)
+    set(CMAKE_C23_STANDARD_COMPILE_OPTION "-std=c2x")
+    set(CMAKE_C23_EXTENSION_COMPILE_OPTION "-std=gnu2x")
+  endif()
+else()
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "")
+  set(CMAKE_C99_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "")
+
+  if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0)
+    set(CMAKE_C11_STANDARD_COMPILE_OPTION "/std:c11")
+    set(CMAKE_C11_EXTENSION_COMPILE_OPTION "/std:c11")
+
+    set(CMAKE_C17_STANDARD_COMPILE_OPTION "/std:c17")
+    set(CMAKE_C17_EXTENSION_COMPILE_OPTION "/std:c17")
+  else()
+    set(CMAKE_C11_STANDARD_COMPILE_OPTION "")
+    set(CMAKE_C11_EXTENSION_COMPILE_OPTION "")
+
+    set(CMAKE_C17_STANDARD_COMPILE_OPTION "")
+    set(CMAKE_C17_EXTENSION_COMPILE_OPTION "")
+  endif()
+endif()
+
+if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 2.1)
+  set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
+  set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.0)
+  set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+__compiler_check_default_language_standard(C 2.1 99 3.5.2 11 11.0 17)
diff --git a/share/cmake-3.22/Modules/Compiler/Clang-CUDA.cmake b/share/cmake-3.22/Modules/Compiler/Clang-CUDA.cmake
new file mode 100644
index 0000000..0223081
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Clang-CUDA.cmake
@@ -0,0 +1,35 @@
+include(Compiler/Clang)
+__compiler_clang(CUDA)
+
+# Set explicitly, because __compiler_clang() doesn't set this if we're simulating MSVC.
+set(CMAKE_DEPFILE_FLAGS_CUDA "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake")
+  # dependencies are computed by the compiler itself
+  set(CMAKE_CUDA_DEPFILE_FORMAT gcc)
+  set(CMAKE_CUDA_DEPENDS_USE_COMPILER TRUE)
+endif()
+
+# C++03 isn't supported for CXX, but is for CUDA, so we need to set these manually.
+# Do this before __compiler_clang_cxx_standards() since that adds the feature.
+set(CMAKE_CUDA03_STANDARD_COMPILE_OPTION "-std=c++03")
+set(CMAKE_CUDA03_EXTENSION_COMPILE_OPTION "-std=gnu++03")
+__compiler_clang_cxx_standards(CUDA)
+
+set(CMAKE_CUDA_COMPILER_HAS_DEVICE_LINK_PHASE TRUE)
+set(_CMAKE_COMPILE_AS_CUDA_FLAG "-x cuda")
+set(_CMAKE_CUDA_PTX_FLAG "--cuda-device-only -S")
+set(_CMAKE_CUDA_DEVICE_CODE "-fgpu-rdc -c")
+
+# RulePlaceholderExpander expands crosscompile variables like sysroot and target only for CMAKE_<LANG>_COMPILER. Override the default.
+set(CMAKE_CUDA_LINK_EXECUTABLE "<CMAKE_CUDA_COMPILER> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>${__IMPLICIT_LINKS}")
+set(CMAKE_CUDA_CREATE_SHARED_LIBRARY "<CMAKE_CUDA_COMPILER> <CMAKE_SHARED_LIBRARY_CUDA_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CUDA_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>${__IMPLICIT_LINKS}")
+
+set(CMAKE_CUDA_RUNTIME_LIBRARY_DEFAULT "STATIC")
+set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_STATIC "cudadevrt;cudart_static")
+set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_SHARED "cudadevrt;cudart")
+set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_NONE   "")
+
+if(UNIX)
+  list(APPEND CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_STATIC "rt" "pthread" "dl")
+endif()
diff --git a/share/cmake-3.18/Modules/Compiler/Clang-CXX-FeatureTests.cmake b/share/cmake-3.22/Modules/Compiler/Clang-CXX-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Clang-CXX-FeatureTests.cmake
rename to share/cmake-3.22/Modules/Compiler/Clang-CXX-FeatureTests.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/Clang-CXX-TestableFeatures.cmake b/share/cmake-3.22/Modules/Compiler/Clang-CXX-TestableFeatures.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Clang-CXX-TestableFeatures.cmake
rename to share/cmake-3.22/Modules/Compiler/Clang-CXX-TestableFeatures.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake b/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake
new file mode 100644
index 0000000..84b05d7
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Clang-CXX.cmake
@@ -0,0 +1,31 @@
+include(Compiler/Clang)
+__compiler_clang(CXX)
+__compiler_clang_cxx_standards(CXX)
+
+if("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
+  if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+      AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+      AND CMAKE_DEPFILE_FLAGS_CXX)
+    # dependencies are computed by the compiler itself
+    set(CMAKE_CXX_DEPFILE_FORMAT gcc)
+    set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
+  endif()
+
+  set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
+  set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
+endif()
+
+cmake_policy(GET CMP0025 appleClangPolicy)
+if(APPLE AND NOT appleClangPolicy STREQUAL NEW)
+  return()
+endif()
+
+if("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
+  set(CMAKE_CXX_CLANG_TIDY_DRIVER_MODE "cl")
+  set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE_DRIVER_MODE "cl")
+  if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+      AND CMAKE_GENERATOR MATCHES "Makefiles"
+      AND CMAKE_DEPFILE_FLAGS_CXX)
+    set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
+  endif()
+endif()
diff --git a/share/cmake-3.18/Modules/Compiler/Clang-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Clang-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/Clang-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/Clang-DetermineCompilerInternal.cmake b/share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Clang-DetermineCompilerInternal.cmake
rename to share/cmake-3.22/Modules/Compiler/Clang-DetermineCompilerInternal.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake b/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake
new file mode 100644
index 0000000..125ae78
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Clang-FindBinUtils.cmake
@@ -0,0 +1,45 @@
+if(NOT DEFINED _CMAKE_PROCESSING_LANGUAGE OR _CMAKE_PROCESSING_LANGUAGE STREQUAL "")
+  message(FATAL_ERROR "Internal error: _CMAKE_PROCESSING_LANGUAGE is not set")
+endif()
+
+# Ubuntu:
+# * /usr/bin/llvm-ar-9
+# * /usr/bin/llvm-ranlib-9
+string(REGEX MATCH "^([0-9]+)" __version_x
+    "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION}")
+
+# Debian:
+# * /usr/bin/llvm-ar-4.0
+# * /usr/bin/llvm-ranlib-4.0
+string(REGEX MATCH "^([0-9]+\\.[0-9]+)" __version_x_y
+    "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION}")
+
+# Try to find tools in the same directory as Clang itself
+get_filename_component(__clang_hint_1 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" REALPATH)
+get_filename_component(__clang_hint_1 "${__clang_hint_1}" DIRECTORY)
+
+get_filename_component(__clang_hint_2 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" DIRECTORY)
+
+set(__clang_hints ${__clang_hint_1} ${__clang_hint_2})
+
+# http://manpages.ubuntu.com/manpages/precise/en/man1/llvm-ar.1.html
+find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR NAMES
+    "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ar-${__version_x_y}"
+    "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ar-${__version_x}"
+    "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ar"
+    HINTS ${__clang_hints}
+    NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH
+    DOC "LLVM archiver"
+)
+mark_as_advanced(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR)
+
+# http://manpages.ubuntu.com/manpages/precise/en/man1/llvm-ranlib.1.html
+find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_RANLIB NAMES
+    "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ranlib-${__version_x_y}"
+    "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ranlib-${__version_x}"
+    "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ranlib"
+    HINTS ${__clang_hints}
+    NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH
+    DOC "Generate index for LLVM archive"
+)
+mark_as_advanced(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_RANLIB)
diff --git a/share/cmake-3.22/Modules/Compiler/Clang-HIP.cmake b/share/cmake-3.22/Modules/Compiler/Clang-HIP.cmake
new file mode 100644
index 0000000..4dbe2e8
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Clang-HIP.cmake
@@ -0,0 +1,20 @@
+include(Compiler/Clang)
+__compiler_clang(HIP)
+__compiler_clang_cxx_standards(HIP)
+
+set(_CMAKE_COMPILE_AS_HIP_FLAG "-x hip")
+set(_CMAKE_HIP_RDC_FLAG "-fgpu-rdc")
+
+if(NOT "x${CMAKE_HIP_SIMULATE_ID}" STREQUAL "xMSVC")
+  set(CMAKE_HIP_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
+
+  string(APPEND CMAKE_HIP_FLAGS_DEBUG_INIT " -O")
+endif()
+
+set(CMAKE_HIP_RUNTIME_LIBRARY_DEFAULT "SHARED")
+set(CMAKE_HIP_RUNTIME_LIBRARY_LINK_OPTIONS_STATIC  "")
+set(CMAKE_HIP_RUNTIME_LIBRARY_LINK_OPTIONS_SHARED  "")
+
+# Populated by CMakeHIPInformation.cmake
+set(CMAKE_HIP_RUNTIME_LIBRARIES_STATIC "")
+set(CMAKE_HIP_RUNTIME_LIBRARIES_SHARED "")
diff --git a/share/cmake-3.22/Modules/Compiler/Clang-OBJC.cmake b/share/cmake-3.22/Modules/Compiler/Clang-OBJC.cmake
new file mode 100644
index 0000000..7a83b77
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Clang-OBJC.cmake
@@ -0,0 +1,39 @@
+include(Compiler/Clang)
+__compiler_clang(OBJC)
+
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+    AND CMAKE_DEPFILE_FLAGS_OBJC)
+  # dependencies are computed by the compiler itself
+  set(CMAKE_OBJC_DEPFILE_FORMAT gcc)
+  set(CMAKE_OBJC_DEPENDS_USE_COMPILER TRUE)
+endif()
+
+
+if(NOT CMAKE_OBJC_COMPILER_VERSION VERSION_LESS 3.4)
+  set(CMAKE_OBJC90_STANDARD_COMPILE_OPTION "-std=c90")
+  set(CMAKE_OBJC90_EXTENSION_COMPILE_OPTION "-std=gnu90")
+  set(CMAKE_OBJC90_STANDARD__HAS_FULL_SUPPORT ON)
+
+  set(CMAKE_OBJC99_STANDARD_COMPILE_OPTION "-std=c99")
+  set(CMAKE_OBJC99_EXTENSION_COMPILE_OPTION "-std=gnu99")
+  set(CMAKE_OBJC99_STANDARD__HAS_FULL_SUPPORT ON)
+
+  set(CMAKE_OBJC11_STANDARD_COMPILE_OPTION "-std=c11")
+  set(CMAKE_OBJC11_EXTENSION_COMPILE_OPTION "-std=gnu11")
+  set(CMAKE_OBJC11_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+if(NOT CMAKE_OBJC_COMPILER_VERSION VERSION_LESS 6.0)
+  set(CMAKE_OBJC17_STANDARD_COMPILE_OPTION "-std=c17")
+  set(CMAKE_OBJC17_EXTENSION_COMPILE_OPTION "-std=gnu17")
+  set(CMAKE_OBJC17_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+if(NOT CMAKE_OBJC_COMPILER_VERSION VERSION_LESS 9.0)
+  set(CMAKE_OBJC23_STANDARD_COMPILE_OPTION "-std=c2x")
+  set(CMAKE_OBJC23_EXTENSION_COMPILE_OPTION "-std=gnu2x")
+  set(CMAKE_OBJC23_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+__compiler_check_default_language_standard(OBJC 3.4 99 3.6 11)
diff --git a/share/cmake-3.22/Modules/Compiler/Clang-OBJCXX.cmake b/share/cmake-3.22/Modules/Compiler/Clang-OBJCXX.cmake
new file mode 100644
index 0000000..9bdff66
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Clang-OBJCXX.cmake
@@ -0,0 +1,11 @@
+include(Compiler/Clang)
+__compiler_clang(OBJCXX)
+__compiler_clang_cxx_standards(OBJCXX)
+
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+    AND CMAKE_DEPFILE_FLAGS_OBJCXX)
+  # dependencies are computed by the compiler itself
+  set(CMAKE_OBJCXX_DEPFILE_FORMAT gcc)
+  set(CMAKE_OBJCXX_DEPENDS_USE_COMPILER TRUE)
+endif()
diff --git a/share/cmake-3.22/Modules/Compiler/Clang.cmake b/share/cmake-3.22/Modules/Compiler/Clang.cmake
new file mode 100644
index 0000000..f885eb0
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Clang.cmake
@@ -0,0 +1,256 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__COMPILER_CLANG)
+  return()
+endif()
+set(__COMPILER_CLANG 1)
+
+include(Compiler/CMakeCommonCompilerMacros)
+
+set(__pch_header_C "c-header")
+set(__pch_header_CXX "c++-header")
+set(__pch_header_OBJC "objective-c-header")
+set(__pch_header_OBJCXX "objective-c++-header")
+
+if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC"
+    OR "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC"
+    OR "x${CMAKE_Fortran_SIMULATE_ID}" STREQUAL "xMSVC")
+  macro(__compiler_clang lang)
+  endmacro()
+else()
+  include(Compiler/GNU)
+
+  macro(__compiler_clang lang)
+    __compiler_gnu(${lang})
+    set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
+    # Link options for PIE are already set in 'Compiler/GNU.cmake'
+    # but clang may require alternate syntax on some platforms
+    if (APPLE)
+      set(CMAKE_${lang}_LINK_OPTIONS_PIE ${CMAKE_${lang}_COMPILE_OPTIONS_PIE} -Xlinker -pie)
+      set(CMAKE_${lang}_LINK_OPTIONS_NO_PIE -Xlinker -no_pie)
+    endif()
+    set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-isystem ")
+    set(CMAKE_${lang}_COMPILE_OPTIONS_VISIBILITY "-fvisibility=")
+    if(CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4.0)
+      set(CMAKE_${lang}_COMPILE_OPTIONS_TARGET "-target ")
+      set(CMAKE_${lang}_COMPILE_OPTIONS_EXTERNAL_TOOLCHAIN "-gcc-toolchain ")
+    else()
+      set(CMAKE_${lang}_COMPILE_OPTIONS_TARGET "--target=")
+      set(CMAKE_${lang}_COMPILE_OPTIONS_EXTERNAL_TOOLCHAIN "--gcc-toolchain=")
+    endif()
+    set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Xlinker" " ")
+    set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP)
+
+    if(CMAKE_${lang}_COMPILER_TARGET)
+      if(CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4.0)
+        list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-target" "${CMAKE_${lang}_COMPILER_TARGET}")
+      else()
+        list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "--target=${CMAKE_${lang}_COMPILER_TARGET}")
+      endif()
+    endif()
+
+    set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
+    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
+
+    string(COMPARE EQUAL "${CMAKE_${lang}_COMPILER_ID}" "AppleClang" __is_apple_clang)
+    string(COMPARE EQUAL "${CMAKE_${lang}_COMPILER_ID}" "FujitsuClang" __is_fujitsu_clang)
+
+    # '-flto=thin' available since Clang 3.9 and Xcode 8
+    # * http://clang.llvm.org/docs/ThinLTO.html#clang-llvm
+    # * https://trac.macports.org/wiki/XcodeVersionInfo
+    set(_CMAKE_LTO_THIN TRUE)
+    if(__is_apple_clang)
+      if(CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 8.0)
+        set(_CMAKE_LTO_THIN FALSE)
+      endif()
+    elseif(__is_fujitsu_clang)
+      set(_CMAKE_LTO_THIN FALSE)
+    else()
+      if(CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.9)
+        set(_CMAKE_LTO_THIN FALSE)
+      endif()
+    endif()
+
+    if(_CMAKE_LTO_THIN)
+      set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto=thin")
+    else()
+      set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto")
+    endif()
+
+    if(ANDROID AND NOT CMAKE_ANDROID_NDK_VERSION VERSION_GREATER_EQUAL "22")
+      # https://github.com/android-ndk/ndk/issues/242
+      set(CMAKE_${lang}_LINK_OPTIONS_IPO "-fuse-ld=gold")
+    endif()
+
+    if(ANDROID OR __is_apple_clang)
+      set(__ar "${CMAKE_AR}")
+      set(__ranlib "${CMAKE_RANLIB}")
+    else()
+      set(__ar "${CMAKE_${lang}_COMPILER_AR}")
+      set(__ranlib "${CMAKE_${lang}_COMPILER_RANLIB}")
+    endif()
+
+    set(CMAKE_${lang}_ARCHIVE_CREATE_IPO
+      "\"${__ar}\" cr <TARGET> <LINK_FLAGS> <OBJECTS>"
+    )
+
+    set(CMAKE_${lang}_ARCHIVE_APPEND_IPO
+      "\"${__ar}\" r <TARGET> <LINK_FLAGS> <OBJECTS>"
+    )
+
+    set(CMAKE_${lang}_ARCHIVE_FINISH_IPO
+      "\"${__ranlib}\" <TARGET>"
+    )
+
+    set(CMAKE_PCH_EXTENSION .pch)
+    if (NOT CMAKE_GENERATOR MATCHES "Xcode")
+      set(CMAKE_PCH_PROLOGUE "#pragma clang system_header")
+    endif()
+    if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 11.0.0 AND NOT __is_apple_clang)
+      set(CMAKE_${lang}_COMPILE_OPTIONS_INSTANTIATE_TEMPLATES_PCH -fpch-instantiate-templates)
+    endif()
+    set(CMAKE_${lang}_COMPILE_OPTIONS_USE_PCH -Xclang -include-pch -Xclang <PCH_FILE> -Xclang -include -Xclang <PCH_HEADER>)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_CREATE_PCH -Xclang -emit-pch -Xclang -include -Xclang <PCH_HEADER> -x ${__pch_header_${lang}})
+  endmacro()
+endif()
+
+macro(__compiler_clang_cxx_standards lang)
+  if("x${CMAKE_${lang}_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
+    if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 2.1)
+      set(CMAKE_${lang}98_STANDARD_COMPILE_OPTION "-std=c++98")
+      set(CMAKE_${lang}98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
+    endif()
+
+    if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.1)
+      set(CMAKE_${lang}98_STANDARD__HAS_FULL_SUPPORT ON)
+      set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "-std=c++11")
+      set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
+      set(CMAKE_${lang}11_STANDARD__HAS_FULL_SUPPORT ON)
+    elseif(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 2.1)
+      set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "-std=c++0x")
+      set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "-std=gnu++0x")
+    endif()
+
+    if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.5)
+      set(CMAKE_${lang}14_STANDARD_COMPILE_OPTION "-std=c++14")
+      set(CMAKE_${lang}14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
+      set(CMAKE_${lang}14_STANDARD__HAS_FULL_SUPPORT ON)
+    elseif(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4)
+      set(CMAKE_${lang}14_STANDARD_COMPILE_OPTION "-std=c++1y")
+      set(CMAKE_${lang}14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
+      set(CMAKE_${lang}14_STANDARD__HAS_FULL_SUPPORT ON)
+    endif()
+
+    set(_clang_version_std17 5.0)
+    if(CMAKE_SYSTEM_NAME STREQUAL "Android")
+      set(_clang_version_std17 6.0)
+    endif()
+
+    if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS "${_clang_version_std17}")
+      set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "-std=c++17")
+      set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
+    elseif (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.5)
+      set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "-std=c++1z")
+      set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
+    endif()
+
+    if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 11.0)
+      set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std=c++20")
+      set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std=gnu++20")
+    elseif(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS "${_clang_version_std17}")
+      set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std=c++2a")
+      set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std=gnu++2a")
+    endif()
+
+    unset(_clang_version_std17)
+
+    if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 12.0)
+      set(CMAKE_${lang}23_STANDARD_COMPILE_OPTION "-std=c++2b")
+      set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-std=gnu++2b")
+    endif()
+
+    if("x${CMAKE_${lang}_SIMULATE_ID}" STREQUAL "xMSVC")
+      # The MSVC standard library requires C++14, and MSVC itself has no
+      # notion of operating in a mode not aware of at least that standard.
+      set(CMAKE_${lang}98_STANDARD_COMPILE_OPTION "-std=c++14")
+      set(CMAKE_${lang}98_EXTENSION_COMPILE_OPTION "-std=gnu++14")
+      set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "-std=c++14")
+      set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "-std=gnu++14")
+
+      # This clang++ is missing some features because of MSVC compatibility.
+      unset(CMAKE_${lang}11_STANDARD__HAS_FULL_SUPPORT)
+      unset(CMAKE_${lang}14_STANDARD__HAS_FULL_SUPPORT)
+    endif()
+
+    __compiler_check_default_language_standard(${lang} 2.1 98)
+  elseif(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 3.9
+      AND CMAKE_${lang}_SIMULATE_VERSION VERSION_GREATER_EQUAL 19.0)
+    # This version of clang-cl and the MSVC version it simulates have
+    # support for -std: flags.
+    set(CMAKE_${lang}98_STANDARD_COMPILE_OPTION "")
+    set(CMAKE_${lang}98_EXTENSION_COMPILE_OPTION "")
+    set(CMAKE_${lang}98_STANDARD__HAS_FULL_SUPPORT ON)
+    set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "")
+    set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "")
+    set(CMAKE_${lang}14_STANDARD_COMPILE_OPTION "-std:c++14")
+    set(CMAKE_${lang}14_EXTENSION_COMPILE_OPTION "-std:c++14")
+
+    if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 6.0)
+      set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "-std:c++17")
+      set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "-std:c++17")
+    else()
+      set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "-std:c++latest")
+      set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "-std:c++latest")
+    endif()
+
+    if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0)
+      set(CMAKE_${lang}23_STANDARD_COMPILE_OPTION "-std:c++latest")
+      set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-std:c++latest")
+      set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std:c++20")
+      set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std:c++20")
+    elseif(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 6.0)
+      set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std:c++latest")
+      set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std:c++latest")
+    endif()
+
+    __compiler_check_default_language_standard(${lang} 3.9 14)
+  else()
+    # This version of clang-cl, or the MSVC version it simulates, does not have
+    # language standards.  Set these options as empty strings so the feature
+    # test infrastructure can at least check to see if they are defined.
+    set(CMAKE_${lang}98_STANDARD_COMPILE_OPTION "")
+    set(CMAKE_${lang}98_EXTENSION_COMPILE_OPTION "")
+    set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "")
+    set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "")
+    set(CMAKE_${lang}14_STANDARD_COMPILE_OPTION "")
+    set(CMAKE_${lang}14_EXTENSION_COMPILE_OPTION "")
+    set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "")
+    set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "")
+    set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "")
+    set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "")
+    set(CMAKE_${lang}23_STANDARD_COMPILE_OPTION "")
+    set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "")
+
+    # There is no meaningful default for this
+    set(CMAKE_${lang}_STANDARD_DEFAULT "")
+
+    # There are no compiler modes so we only need to test features once.
+    # Override the default macro for this special case.  Pretend that
+    # all language standards are available so that at least compilation
+    # can be attempted.
+    macro(cmake_record_${lang}_compile_features)
+      list(APPEND CMAKE_${lang}_COMPILE_FEATURES
+        cxx_std_98
+        cxx_std_11
+        cxx_std_14
+        cxx_std_17
+        cxx_std_20
+        cxx_std_23
+        )
+      _record_compiler_features(${lang} "" CMAKE_${lang}_COMPILE_FEATURES)
+    endmacro()
+  endif()
+endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/Compaq-C-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Compaq-C-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/Compaq-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/Cray-C.cmake b/share/cmake-3.22/Modules/Compiler/Cray-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Cray-C.cmake
rename to share/cmake-3.22/Modules/Compiler/Cray-C.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/Cray-CXX.cmake b/share/cmake-3.22/Modules/Compiler/Cray-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Cray-CXX.cmake
rename to share/cmake-3.22/Modules/Compiler/Cray-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/Cray-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Cray-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/Cray-DetermineCompiler.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/Cray-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/Cray-Fortran.cmake
new file mode 100644
index 0000000..0d5e1c7
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Cray-Fortran.cmake
@@ -0,0 +1,25 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+include(Compiler/Cray)
+__compiler_cray(Fortran)
+
+set(CMAKE_Fortran_SUBMODULE_SEP "")
+set(CMAKE_Fortran_SUBMODULE_EXT ".mod")
+set(CMAKE_Fortran_MODOUT_FLAG -em)
+set(CMAKE_Fortran_MODDIR_FLAG -J)
+set(CMAKE_Fortran_MODDIR_DEFAULT .)
+set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-f fixed")
+set(CMAKE_Fortran_FORMAT_FREE_FLAG "-f free")
+
+if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 8.5)
+  set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_ON "-eT")
+  set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_OFF "-dT")
+else()
+  set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_ON "-eZ")
+  set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_OFF "-dZ")
+endif()
+
+if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 11.0)
+  set(CMAKE_Fortran_PREPROCESS_SOURCE "<CMAKE_Fortran_COMPILER> -o <PREPROCESSED_SOURCE> <DEFINES> <INCLUDES> <FLAGS> -eP <SOURCE>")
+endif()
diff --git a/share/cmake-3.18/Modules/Compiler/Cray.cmake b/share/cmake-3.22/Modules/Compiler/Cray.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Cray.cmake
rename to share/cmake-3.22/Modules/Compiler/Cray.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/CrayPrgEnv-C.cmake b/share/cmake-3.22/Modules/Compiler/CrayPrgEnv-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/CrayPrgEnv-C.cmake
rename to share/cmake-3.22/Modules/Compiler/CrayPrgEnv-C.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/CrayPrgEnv-CXX.cmake b/share/cmake-3.22/Modules/Compiler/CrayPrgEnv-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/CrayPrgEnv-CXX.cmake
rename to share/cmake-3.22/Modules/Compiler/CrayPrgEnv-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/CrayPrgEnv-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/CrayPrgEnv-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/CrayPrgEnv-Fortran.cmake
rename to share/cmake-3.22/Modules/Compiler/CrayPrgEnv-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/CrayPrgEnv.cmake b/share/cmake-3.22/Modules/Compiler/CrayPrgEnv.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/CrayPrgEnv.cmake
rename to share/cmake-3.22/Modules/Compiler/CrayPrgEnv.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/Embarcadero-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Embarcadero-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/Embarcadero-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/Flang-FindBinUtils.cmake b/share/cmake-3.22/Modules/Compiler/Flang-FindBinUtils.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Flang-FindBinUtils.cmake
rename to share/cmake-3.22/Modules/Compiler/Flang-FindBinUtils.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/Flang-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/Flang-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Flang-Fortran.cmake
rename to share/cmake-3.22/Modules/Compiler/Flang-Fortran.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/Fujitsu-C.cmake b/share/cmake-3.22/Modules/Compiler/Fujitsu-C.cmake
new file mode 100644
index 0000000..dd31e43
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Fujitsu-C.cmake
@@ -0,0 +1,20 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+include(Compiler/Fujitsu)
+__compiler_fujitsu(C)
+
+if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4)
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION  -std=c89)
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION -std=gnu89)
+  set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
+
+  set(CMAKE_C99_STANDARD_COMPILE_OPTION  -std=c99)
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION -std=gnu99)
+  set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
+
+  set(CMAKE_C11_STANDARD_COMPILE_OPTION  -std=c11)
+  set(CMAKE_C11_EXTENSION_COMPILE_OPTION -std=gnu11)
+  set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+__compiler_check_default_language_standard(C 4 11)
diff --git a/share/cmake-3.22/Modules/Compiler/Fujitsu-CXX.cmake b/share/cmake-3.22/Modules/Compiler/Fujitsu-CXX.cmake
new file mode 100644
index 0000000..0f42196
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Fujitsu-CXX.cmake
@@ -0,0 +1,47 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+include(Compiler/Fujitsu)
+__compiler_fujitsu(CXX)
+
+#set(CMAKE_PCH_EXTENSION .pch)
+#set(CMAKE_PCH_EPILOGUE "#pragma hdrstop")
+#set(CMAKE_CXX_COMPILE_OPTIONS_USE_PCH --no_pch_messages -include <PCH_HEADER> --use_pch <PCH_FILE>)
+#set(CMAKE_CXX_COMPILE_OPTIONS_CREATE_PCH --no_pch_messages -include <PCH_HEADER> --create_pch <PCH_FILE>)
+
+# The Fujitsu compiler offers both a 98 and 03 mode.  These two are
+# essentially interchangeable as 03 simply provides clarity to some 98
+# ambiguyity.
+#
+# Re: Stroustrup's C++ FAQ:
+#   What is the difference between C++98 and C++03?
+#     From a programmer's view there is none. The C++03 revision of the
+#     standard was a bug fix release for implementers to ensure greater
+#     consistency and portability. In particular, tutorial and reference
+#     material describing C++98 and C++03 can be used interchangeably by all
+#     except compiler writers and standards gurus.
+#
+# Since CMake doesn't actually have an 03 mode and they're effectively
+# interchangeable then we're just going to explicitly use 03 mode in the
+# compiler when 98 is requested.
+
+# The version matching is messy here.  The std support seems to be related to
+# the compiler tweak version derived from the patch id in the version string.
+
+if(CMAKE_CXX_COMPILER_VERSION GREATER_EQUAL 4)
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION  -std=c++03)
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION -std=gnu++03)
+  set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
+
+  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION  -std=c++11)
+  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION -std=gnu++11)
+  set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
+
+  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION  -std=c++14)
+  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION -std=gnu++14)
+  set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
+
+  set(CMAKE_CXX17_STANDARD_COMPILE_OPTION  -std=c++17)
+  set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION -std=gnu++17)
+endif()
+
+__compiler_check_default_language_standard(CXX 4 14)
diff --git a/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake
new file mode 100644
index 0000000..8534916
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Fujitsu-DetermineCompiler.cmake
@@ -0,0 +1,17 @@
+
+set(_compiler_id_pp_test "defined(__FUJITSU)")
+
+set(_compiler_id_version_compute "
+# if defined(__FCC_version__)
+#   define @PREFIX@COMPILER_VERSION __FCC_version__
+# elif defined(__FCC_major__)
+#   define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__FCC_major__)
+#   define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__FCC_minor__)
+#   define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__FCC_patchlevel__)
+# endif
+# if defined(__fcc_version)
+#   define @PREFIX@COMPILER_VERSION_INTERNAL @MACRO_DEC@(__fcc_version)
+# elif defined(__FCC_VERSION)
+#   define @PREFIX@COMPILER_VERSION_INTERNAL @MACRO_DEC@(__FCC_VERSION)
+# endif
+")
diff --git a/share/cmake-3.22/Modules/Compiler/Fujitsu-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/Fujitsu-Fortran.cmake
new file mode 100644
index 0000000..face2d6
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Fujitsu-Fortran.cmake
@@ -0,0 +1,16 @@
+include(Compiler/Fujitsu)
+__compiler_fujitsu(Fortran)
+
+set(CMAKE_Fortran_SUBMODULE_SEP ".")
+set(CMAKE_Fortran_SUBMODULE_EXT ".smod")
+
+set(CMAKE_Fortran_PREPROCESS_SOURCE
+  "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -Cpp -P <SOURCE> -o <PREPROCESSED_SOURCE>")
+set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_ON "-Cpp")
+
+set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-Fixed")
+set(CMAKE_Fortran_FORMAT_FREE_FLAG "-Free")
+
+string(APPEND CMAKE_Fortran_FLAGS_DEBUG_INIT "")
+
+set(CMAKE_Fortran_MODDIR_FLAG "-M ")
diff --git a/share/cmake-3.22/Modules/Compiler/Fujitsu.cmake b/share/cmake-3.22/Modules/Compiler/Fujitsu.cmake
new file mode 100644
index 0000000..78495cb
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Fujitsu.cmake
@@ -0,0 +1,43 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# This module is shared by multiple languages; use include blocker.
+if(__COMPILER_FUJITSU)
+  return()
+endif()
+set(__COMPILER_FUJITSU 1)
+
+include(Compiler/CMakeCommonCompilerMacros)
+
+macro(__compiler_fujitsu lang)
+  set(CMAKE_${lang}_VERBOSE_FLAG "-###")
+
+  # Initial configuration flags
+  string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
+  string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g -O0")
+  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3 -DNDEBUG")
+  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g -DNDEBUG")
+
+  # PIC flags
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC")
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
+
+  # Passing link options to the compiler
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Wl,")
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP ",")
+
+  # IPO flag
+  set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
+  if ("${lang}" STREQUAL "Fortran")
+    # Supported by Fortran compiler only
+    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-Klto")
+  else()
+    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER NO)
+  endif()
+
+  # How to actually call the compiler
+  set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE
+  "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E $<$<COMPILE_LANGUAGE:Fortran>:-Cpp> <SOURCE> > <PREPROCESSED_SOURCE>")
+  set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
+endmacro()
diff --git a/share/cmake-3.22/Modules/Compiler/FujitsuClang-C.cmake b/share/cmake-3.22/Modules/Compiler/FujitsuClang-C.cmake
new file mode 100644
index 0000000..f700d2d
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/FujitsuClang-C.cmake
@@ -0,0 +1,6 @@
+include(Compiler/FujitsuClang)
+
+set(_fjclang_ver "${CMAKE_C_COMPILER_VERSION_INTERNAL}")
+set(CMAKE_C_COMPILER_VERSION "${CMAKE_C_COMPILER_VERSION_INTERNAL}")
+include(Compiler/Clang-C)
+set(CMAKE_C_COMPILER_VERSION "${_fjclang_ver}")
diff --git a/share/cmake-3.22/Modules/Compiler/FujitsuClang-CXX.cmake b/share/cmake-3.22/Modules/Compiler/FujitsuClang-CXX.cmake
new file mode 100644
index 0000000..c8790cd
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/FujitsuClang-CXX.cmake
@@ -0,0 +1,6 @@
+include(Compiler/FujitsuClang)
+
+set(_fjclang_ver "${CMAKE_CXX_COMPILER_VERSION_INTERNAL}")
+set(CMAKE_CXX_COMPILER_VERSION "${CMAKE_CXX_COMPILER_VERSION_INTERNAL}")
+include(Compiler/Clang-CXX)
+set(CMAKE_CXX_COMPILER_VERSION "${_fjclang_ver}")
diff --git a/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake
new file mode 100644
index 0000000..f6719b1
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/FujitsuClang-DetermineCompiler.cmake
@@ -0,0 +1,9 @@
+
+set(_compiler_id_pp_test "defined(__CLANG_FUJITSU)")
+
+set(_compiler_id_version_compute "
+# define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__FCC_major__)
+# define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__FCC_minor__)
+# define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__FCC_patchlevel__)
+# define @PREFIX@COMPILER_VERSION_INTERNAL_STR __clang_version__
+")
diff --git a/share/cmake-3.22/Modules/Compiler/FujitsuClang-FindBinUtils.cmake b/share/cmake-3.22/Modules/Compiler/FujitsuClang-FindBinUtils.cmake
new file mode 100644
index 0000000..4a6401d
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/FujitsuClang-FindBinUtils.cmake
@@ -0,0 +1,6 @@
+if(NOT DEFINED _CMAKE_PROCESSING_LANGUAGE OR _CMAKE_PROCESSING_LANGUAGE STREQUAL "")
+  message(FATAL_ERROR "Internal error: _CMAKE_PROCESSING_LANGUAGE is not set")
+endif()
+
+set(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR ar)
+set(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_RANLIB ranlib)
diff --git a/share/cmake-3.22/Modules/Compiler/FujitsuClang.cmake b/share/cmake-3.22/Modules/Compiler/FujitsuClang.cmake
new file mode 100644
index 0000000..a848248
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/FujitsuClang.cmake
@@ -0,0 +1,11 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__COMPILER_FUJITSUCLANG)
+  return()
+endif()
+set(__COMPILER_FUJITSUCLANG 1)
+
+include(Compiler/Clang)
diff --git a/share/cmake-3.18/Modules/Compiler/G95-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/G95-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/G95-Fortran.cmake
rename to share/cmake-3.22/Modules/Compiler/G95-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/GHS-C.cmake b/share/cmake-3.22/Modules/Compiler/GHS-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/GHS-C.cmake
rename to share/cmake-3.22/Modules/Compiler/GHS-C.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/GHS-CXX.cmake b/share/cmake-3.22/Modules/Compiler/GHS-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/GHS-CXX.cmake
rename to share/cmake-3.22/Modules/Compiler/GHS-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/GHS-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/GHS-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/GHS-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/GHS.cmake b/share/cmake-3.22/Modules/Compiler/GHS.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/GHS.cmake
rename to share/cmake-3.22/Modules/Compiler/GHS.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/GNU-ASM.cmake b/share/cmake-3.22/Modules/Compiler/GNU-ASM.cmake
new file mode 100644
index 0000000..a935416
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/GNU-ASM.cmake
@@ -0,0 +1,13 @@
+# This file is loaded when gcc/g++ is used for assembler files (the "ASM" cmake language)
+include(Compiler/GNU)
+
+set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s;S;asm)
+
+__compiler_gnu(ASM)
+
+if(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_MATCH STREQUAL "GNU assembler")
+  set(CMAKE_DEPFILE_FLAGS_ASM${ASM_DIALECT} "--MD <DEP_FILE>")
+  set(CMAKE_ASM${ASM_DIALECT}_LINK_EXECUTABLE
+    "<CMAKE_LINKER> <FLAGS> <CMAKE_ASM${ASM_DIALECT}_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
+  set(CMAKE_ASM_DEFINE_FLAG "--defsym ")
+endif()
diff --git a/share/cmake-3.18/Modules/Compiler/GNU-C-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/GNU-C-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/GNU-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/GNU-C-FeatureTests.cmake b/share/cmake-3.22/Modules/Compiler/GNU-C-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/GNU-C-FeatureTests.cmake
rename to share/cmake-3.22/Modules/Compiler/GNU-C-FeatureTests.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/GNU-C.cmake b/share/cmake-3.22/Modules/Compiler/GNU-C.cmake
new file mode 100644
index 0000000..03e8d2b
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/GNU-C.cmake
@@ -0,0 +1,49 @@
+include(Compiler/GNU)
+__compiler_gnu(C)
+
+
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+    AND CMAKE_DEPFILE_FLAGS_C)
+  # dependencies are computed by the compiler itself
+  set(CMAKE_C_DEPFILE_FORMAT gcc)
+  set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
+endif()
+
+set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
+
+if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.5)
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
+elseif (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c89")
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu89")
+endif()
+
+if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
+  set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
+  set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
+  set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.7)
+  set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
+  set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
+  set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
+elseif (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.6)
+  set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c1x")
+  set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu1x")
+endif()
+
+if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1)
+  set(CMAKE_C17_STANDARD_COMPILE_OPTION "-std=c17")
+  set(CMAKE_C17_EXTENSION_COMPILE_OPTION "-std=gnu17")
+endif()
+
+if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 9.1)
+  set(CMAKE_C23_STANDARD_COMPILE_OPTION "-std=c2x")
+  set(CMAKE_C23_EXTENSION_COMPILE_OPTION "-std=gnu2x")
+endif()
+
+__compiler_check_default_language_standard(C 3.4 90 5.0 11 8.1 17)
diff --git a/share/cmake-3.18/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/share/cmake-3.22/Modules/Compiler/GNU-CXX-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/GNU-CXX-FeatureTests.cmake
rename to share/cmake-3.22/Modules/Compiler/GNU-CXX-FeatureTests.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/GNU-CXX.cmake b/share/cmake-3.22/Modules/Compiler/GNU-CXX.cmake
new file mode 100644
index 0000000..b35f254
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/GNU-CXX.cmake
@@ -0,0 +1,74 @@
+include(Compiler/GNU)
+__compiler_gnu(CXX)
+
+
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+    AND CMAKE_DEPFILE_FLAGS_CXX)
+  # dependencies are computed by the compiler itself
+  set(CMAKE_CXX_DEPFILE_FORMAT gcc)
+  set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
+endif()
+
+set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
+
+if (WIN32)
+  if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.6)
+    set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fno-keep-inline-dllexport")
+  endif()
+else()
+  if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.0)
+    set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
+  endif()
+endif()
+
+if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4)
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
+endif()
+
+if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
+  set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
+  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
+  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
+elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.4)
+  # 4.3 supports 0x variants
+  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++0x")
+  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++0x")
+endif()
+
+if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8.1)
+  set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9)
+  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
+  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
+elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
+  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++1y")
+  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
+endif()
+
+if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0)
+  set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
+endif()
+
+if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0)
+  set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
+  set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
+elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.1)
+  set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++1z")
+  set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
+endif()
+
+if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 11.1)
+  set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++20")
+  set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++20")
+  set(CMAKE_CXX23_STANDARD_COMPILE_OPTION "-std=c++23")
+  set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION "-std=gnu++23")
+elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.0)
+  set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++2a")
+  set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++2a")
+endif()
+
+__compiler_check_default_language_standard(CXX 3.4 98 6.0 14 11.1 17)
diff --git a/share/cmake-3.22/Modules/Compiler/GNU-FindBinUtils.cmake b/share/cmake-3.22/Modules/Compiler/GNU-FindBinUtils.cmake
new file mode 100644
index 0000000..4dcdd53
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/GNU-FindBinUtils.cmake
@@ -0,0 +1,37 @@
+if(NOT DEFINED _CMAKE_PROCESSING_LANGUAGE OR _CMAKE_PROCESSING_LANGUAGE STREQUAL "")
+  message(FATAL_ERROR "Internal error: _CMAKE_PROCESSING_LANGUAGE is not set")
+endif()
+
+# Ubuntu 16.04:
+# * /usr/bin/gcc-ar-5
+# * /usr/bin/gcc-ranlib-5
+string(REGEX MATCH "^([0-9]+)" __version_x
+    "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION}")
+
+string(REGEX MATCH "^([0-9]+\\.[0-9]+)" __version_x_y
+    "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION}")
+
+# Try to find tools in the same directory as GCC itself
+get_filename_component(__gcc_hints "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" DIRECTORY)
+
+# http://manpages.ubuntu.com/manpages/wily/en/man1/gcc-ar.1.html
+find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR NAMES
+    "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar-${__version_x_y}"
+    "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar-${__version_x}"
+    "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar${_CMAKE_COMPILER_SUFFIX}"
+    HINTS ${__gcc_hints}
+    NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH
+    DOC "A wrapper around 'ar' adding the appropriate '--plugin' option for the GCC compiler"
+)
+mark_as_advanced(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR)
+
+# http://manpages.ubuntu.com/manpages/wily/en/man1/gcc-ranlib.1.html
+find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_RANLIB NAMES
+    "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib-${__version_x_y}"
+    "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib-${__version_x}"
+    "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib${_CMAKE_COMPILER_SUFFIX}"
+    HINTS ${__gcc_hints}
+    NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH
+    DOC "A wrapper around 'ranlib' adding the appropriate '--plugin' option for the GCC compiler"
+)
+mark_as_advanced(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_RANLIB)
diff --git a/share/cmake-3.18/Modules/Compiler/GNU-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/GNU-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/GNU-Fortran.cmake
rename to share/cmake-3.22/Modules/Compiler/GNU-Fortran.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/GNU-OBJC.cmake b/share/cmake-3.22/Modules/Compiler/GNU-OBJC.cmake
new file mode 100644
index 0000000..7eeed83
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/GNU-OBJC.cmake
@@ -0,0 +1,11 @@
+include(Compiler/GNU)
+__compiler_gnu(OBJC)
+
+
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+    AND CMAKE_DEPFILE_FLAGS_OBJC)
+  # dependencies are computed by the compiler itself
+  set(CMAKE_OBJC_DEPFILE_FORMAT gcc)
+  set(CMAKE_OBJC_DEPENDS_USE_COMPILER TRUE)
+endif()
diff --git a/share/cmake-3.22/Modules/Compiler/GNU-OBJCXX.cmake b/share/cmake-3.22/Modules/Compiler/GNU-OBJCXX.cmake
new file mode 100644
index 0000000..1047b5d
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/GNU-OBJCXX.cmake
@@ -0,0 +1,19 @@
+include(Compiler/GNU)
+__compiler_gnu(OBJCXX)
+
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+    AND CMAKE_DEPFILE_FLAGS_OBJCXX)
+  # dependencies are computed by the compiler itself
+  set(CMAKE_OBJCXX_DEPFILE_FORMAT gcc)
+  set(CMAKE_OBJCXX_DEPENDS_USE_COMPILER TRUE)
+endif()
+
+
+if(NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 4.2)
+  set(CMAKE_OBJCXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
+endif()
+
+if(NOT CMAKE_OBJCXX_LINK_FLAGS)
+  set(CMAKE_OBCXX_LINK_FLAGS "-lstdc++")
+endif()
diff --git a/share/cmake-3.22/Modules/Compiler/GNU.cmake b/share/cmake-3.22/Modules/Compiler/GNU.cmake
new file mode 100644
index 0000000..928e726
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/GNU.cmake
@@ -0,0 +1,122 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__COMPILER_GNU)
+  return()
+endif()
+set(__COMPILER_GNU 1)
+
+include(Compiler/CMakeCommonCompilerMacros)
+
+set(__pch_header_C "c-header")
+set(__pch_header_CXX "c++-header")
+set(__pch_header_OBJC "objective-c-header")
+set(__pch_header_OBJCXX "objective-c++-header")
+
+macro(__compiler_gnu lang)
+  # Feature flags.
+  set(CMAKE_${lang}_VERBOSE_FLAG "-v")
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC")
+  set (_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER NO)
+  if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
+    # Support of PIE at link stage depends on various elements : platform, compiler, linker
+    # so to activate it, module CheckPIESupported must be used.
+    set (_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER YES)
+    set(CMAKE_${lang}_LINK_OPTIONS_PIE ${CMAKE_${lang}_COMPILE_OPTIONS_PIE} "-pie")
+    set(CMAKE_${lang}_LINK_OPTIONS_NO_PIE "-no-pie")
+  endif()
+  if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.0)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_VISIBILITY "-fvisibility=")
+  endif()
+  set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-fPIC")
+  set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-shared")
+  set(CMAKE_${lang}_COMPILE_OPTIONS_SYSROOT "--sysroot=")
+
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Wl,")
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP ",")
+
+  # Older versions of gcc (< 4.5) contain a bug causing them to report a missing
+  # header file as a warning if depfiles are enabled, causing check_header_file
+  # tests to always succeed.  Work around this by disabling dependency tracking
+  # in try_compile mode.
+  get_property(_IN_TC GLOBAL PROPERTY IN_TRY_COMPILE)
+  if(CMAKE_${lang}_COMPILER_ID STREQUAL "GNU" AND _IN_TC AND NOT CMAKE_FORCE_DEPFILES)
+  else()
+    # distcc does not transform -o to -MT when invoking the preprocessor
+    # internally, as it ought to.  Work around this bug by setting -MT here
+    # even though it isn't strictly necessary.
+    set(CMAKE_DEPFILE_FLAGS_${lang} "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
+  endif()
+
+  # Initial configuration flags.
+  string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
+  string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g")
+  string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Os -DNDEBUG")
+  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3 -DNDEBUG")
+  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g -DNDEBUG")
+  set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
+  set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
+  if(NOT APPLE OR NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4) # work around #4462
+    set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-isystem ")
+  endif()
+
+  set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
+  set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER NO)
+
+  # '-flto' introduced since GCC 4.5:
+  # * https://gcc.gnu.org/onlinedocs/gcc-4.4.7/gcc/Option-Summary.html (no)
+  # * https://gcc.gnu.org/onlinedocs/gcc-4.5.4/gcc/Option-Summary.html (yes)
+  if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.5)
+    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
+    set(__lto_flags -flto)
+
+    if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.7)
+      # '-ffat-lto-objects' introduced since GCC 4.7:
+      # * https://gcc.gnu.org/onlinedocs/gcc-4.6.4/gcc/Option-Summary.html (no)
+      # * https://gcc.gnu.org/onlinedocs/gcc-4.7.4/gcc/Option-Summary.html (yes)
+      list(APPEND __lto_flags -fno-fat-lto-objects)
+    endif()
+
+    set(CMAKE_${lang}_COMPILE_OPTIONS_IPO ${__lto_flags})
+
+    # Need to use version of 'ar'/'ranlib' with plugin support.
+    # Quote from [documentation][1]:
+    #
+    #   To create static libraries suitable for LTO,
+    #   use gcc-ar and gcc-ranlib instead of ar and ranlib
+    #
+    # [1]: https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/Optimize-Options.html
+    set(CMAKE_${lang}_ARCHIVE_CREATE_IPO
+      "\"${CMAKE_${lang}_COMPILER_AR}\" cr <TARGET> <LINK_FLAGS> <OBJECTS>"
+    )
+
+    set(CMAKE_${lang}_ARCHIVE_APPEND_IPO
+      "\"${CMAKE_${lang}_COMPILER_AR}\" r <TARGET> <LINK_FLAGS> <OBJECTS>"
+    )
+
+    set(CMAKE_${lang}_ARCHIVE_FINISH_IPO
+      "\"${CMAKE_${lang}_COMPILER_RANLIB}\" <TARGET>"
+    )
+  endif()
+
+  set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}")
+  if(CMAKE_${lang}_COMPILER_ARG1)
+    separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}")
+    list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS})
+    unset(_COMPILER_ARGS)
+  endif()
+  list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp")
+
+  if(NOT "x${lang}" STREQUAL "xFortran")
+    set(CMAKE_PCH_EXTENSION .gch)
+    if (NOT CMAKE_GENERATOR MATCHES "Xcode")
+      set(CMAKE_PCH_PROLOGUE "#pragma GCC system_header")
+    endif()
+    set(CMAKE_${lang}_COMPILE_OPTIONS_INVALID_PCH -Winvalid-pch)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_USE_PCH -include <PCH_HEADER>)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_CREATE_PCH -x ${__pch_header_${lang}} -include <PCH_HEADER>)
+  endif()
+endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/HP-ASM.cmake b/share/cmake-3.22/Modules/Compiler/HP-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/HP-ASM.cmake
rename to share/cmake-3.22/Modules/Compiler/HP-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/HP-C-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/HP-C-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/HP-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/HP-C.cmake b/share/cmake-3.22/Modules/Compiler/HP-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/HP-C.cmake
rename to share/cmake-3.22/Modules/Compiler/HP-C.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/HP-CXX-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/HP-CXX-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/HP-CXX-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/HP-CXX.cmake b/share/cmake-3.22/Modules/Compiler/HP-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/HP-CXX.cmake
rename to share/cmake-3.22/Modules/Compiler/HP-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/HP-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/HP-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/HP-Fortran.cmake
rename to share/cmake-3.22/Modules/Compiler/HP-Fortran.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/IAR-ASM.cmake b/share/cmake-3.22/Modules/Compiler/IAR-ASM.cmake
new file mode 100644
index 0000000..bae0fbd
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/IAR-ASM.cmake
@@ -0,0 +1,45 @@
+# This file is processed when the IAR Assembler is used
+
+include(Compiler/IAR)
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+set(_CMAKE_IAR_ITOOLS "ARM" "RH850"  "RL78" "RX" "RISC-V" "STM8")
+set(_CMAKE_IAR_XTOOLS "AVR" "MSP430" "V850" "8051")
+
+set(_CMAKE_IAR_ASM_SILENT   "RH850"  "RL78" "RX" "RISC-V" "STM8")
+if("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" IN_LIST _CMAKE_IAR_ASM_SILENT)
+  set(_CMAKE_IAR_SILENCER_FLAG " --silent")
+else()
+  set(_CMAKE_IAR_SILENCER_FLAG " -S")
+endif()
+
+string(APPEND CMAKE_ASM_FLAGS_INIT " ")
+string(APPEND CMAKE_ASM_FLAGS_DEBUG_INIT " -r")
+string(APPEND CMAKE_ASM_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+string(APPEND CMAKE_ASM_FLAGS_RELEASE_INIT " -DNDEBUG")
+string(APPEND CMAKE_ASM_FLAGS_RELWITHDEBINFO_INIT " -r -DNDEBUG")
+
+set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> ${_CMAKE_IAR_SILENCER_FLAG} <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT>")
+
+if("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" IN_LIST _CMAKE_IAR_ITOOLS)
+  __compiler_iar_ilink(ASM)
+  set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s;asm;msa;S)
+
+elseif("${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID}" IN_LIST _CMAKE_IAR_XTOOLS)
+  __compiler_iar_xlink(ASM)
+  # AVR=s90, MSP430=s43, V850=s85, 8051=s51
+  set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s90;s43;s85;s51;asm;msa)
+
+else()
+  message(FATAL_ERROR "CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID not detected. This should be automatic.")
+
+endif()
+
+unset(_CMAKE_IAR_ITOOLS)
+unset(_CMAKE_IAR_XTOOLS)
+unset(_CMAKE_IAR_ASM_SILENT)
+unset(_CMAKE_IAR_SILENCER_FLAG)
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/Compiler/IAR-C.cmake b/share/cmake-3.22/Modules/Compiler/IAR-C.cmake
new file mode 100644
index 0000000..0ef1a2a
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/IAR-C.cmake
@@ -0,0 +1,86 @@
+# This file is processed when the IAR C Compiler is used
+#
+# C Language Specification support
+#  - Newer versions of the IAR C Compiler require the --c89 flag to build a file under the C90 standard.
+#  - Earlier versions of the compiler had C90 by default, not requiring the backward-compatibility flag.
+#
+# The IAR Language Extensions
+#  - The IAR Language Extensions can be enabled by -e flag
+#
+include(Compiler/IAR)
+include(Compiler/CMakeCommonCompilerMacros)
+
+if(NOT DEFINED CMAKE_C_COMPILER_VERSION)
+  message(FATAL_ERROR "CMAKE_C_COMPILER_VERSION not detected.  This should be automatic.")
+endif()
+
+# Unused after CMP0128
+set(CMAKE_C_EXTENSION_COMPILE_OPTION -e)
+
+if(CMAKE_C_COMPILER_VERSION_INTERNAL VERSION_GREATER 7)
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION --c89)
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION --c89 -e)
+else()
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION -e)
+endif()
+
+set(CMAKE_C${CMAKE_C_STANDARD_COMPUTED_DEFAULT}_STANDARD_COMPILE_OPTION "")
+set(CMAKE_C${CMAKE_C_STANDARD_COMPUTED_DEFAULT}_EXTENSION_COMPILE_OPTION -e)
+
+# Architecture specific
+if("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM")
+  if (CMAKE_C_COMPILER_VERSION VERSION_LESS 5)
+    # IAR C Compiler for Arm prior version 5.xx uses XLINK. Support in CMake is not implemented.
+    message(FATAL_ERROR "IAR C Compiler for Arm version ${CMAKE_C_COMPILER_VERSION} not supported by CMake.")
+  endif()
+  __compiler_iar_ilink(C)
+  __compiler_check_default_language_standard(C 5.10 90 6.10 99 8.10 11 8.40 17)
+
+elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "RX")
+  __compiler_iar_ilink(C)
+  __compiler_check_default_language_standard(C 1.10 90 2.10 99 4.10 11 4.20 17)
+
+elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "RH850")
+  __compiler_iar_ilink(C)
+  __compiler_check_default_language_standard(C 1.10 90 1.10 99 2.10 11 2.21 17)
+
+elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "RL78")
+  if(CMAKE_C_COMPILER_VERSION VERSION_LESS 2)
+    # IAR C Compiler for RL78 prior version 2.xx uses XLINK. Support in CMake is not implemented.
+    message(FATAL_ERROR "IAR C Compiler for RL78 version ${CMAKE_C_COMPILER_VERSION} not supported by CMake.")
+  endif()
+  __compiler_iar_ilink(C)
+  __compiler_check_default_language_standard(C 2.10 90 2.10 99 4.10 11 4.20 17)
+
+elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "RISCV")
+  __compiler_iar_ilink(C)
+  __compiler_check_default_language_standard(C 1.10 90 1.10 99 1.10 11 1.21 17)
+
+elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "AVR")
+  __compiler_iar_xlink(C)
+  __compiler_check_default_language_standard(C 7.10 99)
+  set(CMAKE_C_OUTPUT_EXTENSION ".r90")
+
+elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "MSP430")
+  __compiler_iar_xlink(C)
+  __compiler_check_default_language_standard(C 1.10 90 5.10 99)
+  set(CMAKE_C_OUTPUT_EXTENSION ".r43")
+
+elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "V850")
+  __compiler_iar_xlink(C)
+  __compiler_check_default_language_standard(C 1.10 90 4.10 99)
+  set(CMAKE_C_OUTPUT_EXTENSION ".r85")
+
+elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "8051")
+  __compiler_iar_xlink(C)
+  __compiler_check_default_language_standard(C 6.10 90 8.10 99)
+  set(CMAKE_C_OUTPUT_EXTENSION ".r51")
+
+elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "STM8")
+  __compiler_iar_ilink(C)
+  __compiler_check_default_language_standard(C 3.11 90 3.11 99)
+
+else()
+  message(FATAL_ERROR "CMAKE_C_COMPILER_ARCHITECTURE_ID not detected. This should be automatic.")
+endif()
diff --git a/share/cmake-3.22/Modules/Compiler/IAR-CXX.cmake b/share/cmake-3.22/Modules/Compiler/IAR-CXX.cmake
new file mode 100644
index 0000000..a3f1dbc
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/IAR-CXX.cmake
@@ -0,0 +1,89 @@
+# This file is processed when the IAR C++ Compiler is used
+#
+# C++ Language Specification support
+#  - Newer versions of the IAR C++ Compiler require the --c++ flag to build a C++ file.
+#    Earlier versions for non-ARM architectures provided Embedded C++, enabled with the --eec++ flag.
+#
+# The IAR Language Extensions
+#  - The IAR Language Extensions can be enabled by -e flag
+#
+include(Compiler/IAR)
+include(Compiler/CMakeCommonCompilerMacros)
+
+if(NOT DEFINED CMAKE_CXX_COMPILER_VERSION)
+  message(FATAL_ERROR "CMAKE_CXX_COMPILER_VERSION not detected. This should be automatic.")
+endif()
+
+# Whenever needed, override this default behavior using CMAKE_IAR_CXX_FLAG in your toolchain file.
+if(NOT CMAKE_IAR_CXX_FLAG)
+  set(_CMAKE_IAR_MODERNCXX_LIST 14 17)
+  if(${CMAKE_CXX_STANDARD_COMPUTED_DEFAULT} IN_LIST _CMAKE_IAR_MODERNCXX_LIST OR
+     ("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM" AND ${CMAKE_CXX_STANDARD_COMPUTED_DEFAULT} EQUAL 98))
+    string(PREPEND CMAKE_CXX_FLAGS "--c++ ")
+  else()
+    string(PREPEND CMAKE_CXX_FLAGS "--eec++ ")
+  endif()
+  unset(_CMAKE_IAR_MODERNCXX_LIST)
+endif()
+
+set(CMAKE_CXX_STANDARD_COMPILE_OPTION "")
+set(CMAKE_CXX_EXTENSION_COMPILE_OPTION -e) # Unused after CMP0128
+
+set(CMAKE_CXX${CMAKE_CXX_STANDARD_COMPUTED_DEFAULT}_STANDARD_COMPILE_OPTION "")
+set(CMAKE_CXX${CMAKE_CXX_STANDARD_COMPUTED_DEFAULT}_EXTENSION_COMPILE_OPTION -e)
+
+# Architecture specific
+if("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM")
+  if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5)
+    # IAR C++ Compiler for Arm prior version 5.xx uses XLINK. Support in CMake is not implemented.
+    message(FATAL_ERROR "IAR C++ Compiler for Arm version ${CMAKE_CXX_COMPILER_VERSION} not supported by CMake.")
+  endif()
+  __compiler_iar_ilink(CXX)
+  __compiler_check_default_language_standard(CXX 5.10 98 8.10 14 8.40 17)
+
+elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "RX")
+  __compiler_iar_ilink(CXX)
+  __compiler_check_default_language_standard(CXX 2.10 98 4.10 14 4.20 17)
+
+elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "RH850")
+  __compiler_iar_ilink(CXX)
+  __compiler_check_default_language_standard(CXX 1.10 98 2.10 14 2.21 17)
+
+elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "RL78")
+  if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 2)
+    # # IAR C++ Compiler for RL78 prior version 2.xx uses XLINK. Support in CMake is not implemented.
+    message(FATAL_ERROR "IAR C++ Compiler for RL78 version ${CMAKE_CXX_COMPILER_VERSION} not supported by CMake.")
+  endif()
+  __compiler_iar_ilink(CXX)
+  __compiler_check_default_language_standard(CXX 2.10 98 4.10 14 4.20 17)
+
+elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "RISCV")
+  __compiler_iar_ilink(CXX)
+  __compiler_check_default_language_standard(CXX 1.10 98 1.10 14 1.21 17)
+
+elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "AVR")
+  __compiler_iar_xlink(CXX)
+  __compiler_check_default_language_standard(CXX 7.10 98)
+
+elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "MSP430")
+  __compiler_iar_xlink(CXX)
+  __compiler_check_default_language_standard(CXX 5.10 98)
+  set(CMAKE_CXX_OUTPUT_EXTENSION ".r43")
+
+elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "V850")
+  __compiler_iar_xlink(CXX)
+  __compiler_check_default_language_standard(CXX 1.10 98)
+  set(CMAKE_C_OUTPUT_EXTENSION ".r85")
+
+elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "8051")
+  __compiler_iar_xlink(CXX)
+  __compiler_check_default_language_standard(CXX 6.10 98)
+  set(CMAKE_C_OUTPUT_EXTENSION ".r51")
+
+elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "STM8")
+  __compiler_iar_ilink(CXX)
+  __compiler_check_default_language_standard(CXX 3.11 98)
+
+else()
+  message(FATAL_ERROR "CMAKE_CXX_COMPILER_ARCHITECTURE_ID not detected. This should be automatic." )
+endif()
diff --git a/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake
new file mode 100644
index 0000000..b03fd1f
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/IAR-DetermineCompiler.cmake
@@ -0,0 +1,37 @@
+# IAR C/C++ Compiler (https://www.iar.com)
+# CPU <arch> supported in CMake: 8051, Arm, AVR, MSP430, RH850, RISC-V, RL78, RX and V850
+#
+# IAR C/C++ Compiler for <arch> internal integer symbols used in CMake:
+#
+# __IAR_SYSTEMS_ICC__
+#           Provides the compiler internal platform version
+# __ICC<arch>__
+#           Provides 1 for the current <arch> in use
+# __VER__
+#           Provides the current version in use
+#            The semantic version of the compiler is architecture-dependent
+#            When <arch> is ARM:
+#               CMAKE_<LANG>_COMPILER_VERSION_MAJOR = (__VER__ / 1E6)
+#               CMAKE_<LANG>_COMPILER_VERSION_MINOR = (__VER__ / 1E3) % 1E3
+#               CMAKE_<LANG>_COMPILER_VERSION_PATCH = (__VER__ % 1E3)
+#            When <arch> is non-ARM:
+#               CMAKE_<LANG>_COMPILER_VERSION_MAJOR = (__VER__ / 1E2)
+#               CMAKE_<LANG>_COMPILER_VERSION_MINOR = (__VER__ - ((__VER__/ 1E2) * 1E2))
+#               CMAKE_<LANG>_COMPILER_VERSION_PATCH = (__SUBVERSION__)
+# __SUBVERSION__
+#           Provides the version's patch level for non-ARM <arch>
+#
+set(_compiler_id_pp_test "defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)")
+
+set(_compiler_id_version_compute "
+# if defined(__VER__) && defined(__ICCARM__)
+#  define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@((__VER__) / 1000000)
+#  define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(((__VER__) / 1000) % 1000)
+#  define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@((__VER__) % 1000)
+#  define @PREFIX@COMPILER_VERSION_INTERNAL @MACRO_DEC@(__IAR_SYSTEMS_ICC__)
+# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__))
+#  define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@((__VER__) / 100)
+#  define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@((__VER__) - (((__VER__) / 100)*100))
+#  define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__SUBVERSION__)
+#  define @PREFIX@COMPILER_VERSION_INTERNAL @MACRO_DEC@(__IAR_SYSTEMS_ICC__)
+# endif")
diff --git a/share/cmake-3.22/Modules/Compiler/IAR.cmake b/share/cmake-3.22/Modules/Compiler/IAR.cmake
new file mode 100644
index 0000000..53456f5
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/IAR.cmake
@@ -0,0 +1,61 @@
+# This file is processed when the IAR C/C++ Compiler is used
+#
+# CPU <arch> supported in CMake: 8051, Arm, AVR, MSP430, RH850, RISC-V, RL78, RX and V850
+#
+# The compiler user documentation is architecture-dependent
+# and it can found with the product installation under <arch>/doc/{EW,BX}<arch>_DevelopmentGuide.ENU.pdf
+#
+#
+include_guard()
+
+macro(__compiler_iar_ilink lang)
+  set(CMAKE_EXECUTABLE_SUFFIX ".elf")
+  set(CMAKE_${lang}_OUTPUT_EXTENSION ".o")
+  if (${lang} STREQUAL "C" OR ${lang} STREQUAL "CXX")
+    set(CMAKE_${lang}_COMPILE_OBJECT             "<CMAKE_${lang}_COMPILER> ${CMAKE_IAR_${lang}_FLAG} --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT>")
+    set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> ${CMAKE_IAR_${lang}_FLAG} --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> --preprocess=cnl <PREPROCESSED_SOURCE>")
+    set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE     "<CMAKE_${lang}_COMPILER> ${CMAKE_IAR_${lang}_FLAG} --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -lAH <ASSEMBLY_SOURCE> -o <OBJECT>.dummy")
+
+    set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "-f ")
+    set(CMAKE_DEPFILE_FLAGS_${lang} "--dependencies=ns <DEP_FILE>")
+
+    string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
+    string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -r")
+    string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Ohz -DNDEBUG")
+    string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -Oh -DNDEBUG")
+    string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -Oh -r -DNDEBUG")
+  endif()
+
+  set(CMAKE_${lang}_LINK_EXECUTABLE "<CMAKE_LINKER> --silent <OBJECTS> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> -o <TARGET>")
+  set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "<CMAKE_AR> <TARGET> --create <LINK_FLAGS> <OBJECTS>")
+  set(CMAKE_${lang}_ARCHIVE_CREATE "<CMAKE_AR> <TARGET> --create <LINK_FLAGS> <OBJECTS>")
+  set(CMAKE_${lang}_ARCHIVE_APPEND "<CMAKE_AR> <TARGET> --replace <LINK_FLAGS> <OBJECTS>")
+  set(CMAKE_${lang}_ARCHIVE_FINISH "")
+endmacro()
+
+macro(__compiler_iar_xlink lang)
+  set(CMAKE_EXECUTABLE_SUFFIX ".bin")
+  if (${lang} STREQUAL "C" OR ${lang} STREQUAL "CXX")
+
+    set(CMAKE_${lang}_COMPILE_OBJECT             "<CMAKE_${lang}_COMPILER> ${CMAKE_IAR_${lang}_FLAG} --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT>")
+    set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> ${CMAKE_IAR_${lang}_FLAG} --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> --preprocess=cnl <PREPROCESSED_SOURCE>")
+    set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE     "<CMAKE_${lang}_COMPILER> ${CMAKE_IAR_${lang}_FLAG} --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -lAH <ASSEMBLY_SOURCE> -o <OBJECT>.dummy")
+
+    set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "-f ")
+    set(CMAKE_DEPFILE_FLAGS_${lang} "--dependencies=ns <DEP_FILE>")
+
+    string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
+    string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -r")
+    string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Ohz -DNDEBUG")
+    string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -Oh -DNDEBUG")
+    string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -Oh -r -DNDEBUG")
+  endif()
+
+  set(CMAKE_${lang}_LINK_EXECUTABLE "<CMAKE_LINKER> -S <OBJECTS> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> -o <TARGET>")
+  set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "<CMAKE_AR> <TARGET> <LINK_FLAGS> <OBJECTS>")
+  set(CMAKE_${lang}_ARCHIVE_CREATE "<CMAKE_AR> <TARGET> <LINK_FLAGS> <OBJECTS>")
+  set(CMAKE_${lang}_ARCHIVE_APPEND "")
+  set(CMAKE_${lang}_ARCHIVE_FINISH "")
+
+  set(CMAKE_LIBRARY_PATH_FLAG "-I")
+endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake b/share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake
rename to share/cmake-3.22/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake b/share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake
rename to share/cmake-3.22/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/Intel-ASM.cmake b/share/cmake-3.22/Modules/Compiler/Intel-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Intel-ASM.cmake
rename to share/cmake-3.22/Modules/Compiler/Intel-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/Intel-C-FeatureTests.cmake b/share/cmake-3.22/Modules/Compiler/Intel-C-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Intel-C-FeatureTests.cmake
rename to share/cmake-3.22/Modules/Compiler/Intel-C-FeatureTests.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/Intel-C.cmake b/share/cmake-3.22/Modules/Compiler/Intel-C.cmake
new file mode 100644
index 0000000..9884b58
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Intel-C.cmake
@@ -0,0 +1,61 @@
+include(Compiler/Intel)
+__compiler_intel(C)
+
+string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG")
+string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -DNDEBUG")
+
+set(CMAKE_DEPFILE_FLAGS_C "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake")
+  # dependencies are computed by the compiler itself
+  set(CMAKE_C_DEPFILE_FORMAT gcc)
+  set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
+endif()
+
+if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
+
+  set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -TC)
+  set(CMAKE_C_CLANG_TIDY_DRIVER_MODE "cl")
+  set(CMAKE_C_INCLUDE_WHAT_YOU_USE_DRIVER_MODE "cl")
+
+  if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 16.0.0)
+    set(CMAKE_C11_STANDARD_COMPILE_OPTION "-Qstd=c11")
+    set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-Qstd=c11")
+    set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
+  endif()
+
+  if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.0)
+    set(CMAKE_C90_STANDARD_COMPILE_OPTION "-Qstd=c89")
+    set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-Qstd=c89")
+    set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
+    set(CMAKE_C99_STANDARD_COMPILE_OPTION "-Qstd=c99")
+    set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-Qstd=c99")
+    set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
+  endif()
+
+else()
+
+  set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
+
+  if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0.0)
+    set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
+    set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
+    set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
+  endif()
+
+  if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.0)
+    set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c89")
+    set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu89")
+    set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
+    set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
+    set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
+    set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
+  endif()
+
+endif()
+
+__compiler_check_default_language_standard(C 12.0 90 15.0.0 11)
+
+set(CMAKE_C_CREATE_PREPROCESSED_SOURCE "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
+set(CMAKE_C_CREATE_ASSEMBLY_SOURCE "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
diff --git a/share/cmake-3.18/Modules/Compiler/Intel-CXX-FeatureTests.cmake b/share/cmake-3.22/Modules/Compiler/Intel-CXX-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Intel-CXX-FeatureTests.cmake
rename to share/cmake-3.22/Modules/Compiler/Intel-CXX-FeatureTests.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/Intel-CXX.cmake b/share/cmake-3.22/Modules/Compiler/Intel-CXX.cmake
new file mode 100644
index 0000000..7c9cca9
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Intel-CXX.cmake
@@ -0,0 +1,105 @@
+include(Compiler/Intel)
+__compiler_intel(CXX)
+
+string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -DNDEBUG")
+string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT " -DNDEBUG")
+
+set(CMAKE_DEPFILE_FLAGS_CXX "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake")
+  # dependencies are computed by the compiler itself
+  set(CMAKE_CXX_DEPFILE_FORMAT gcc)
+  set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
+endif()
+
+if("x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
+
+  set(CMAKE_CXX_CLANG_TIDY_DRIVER_MODE "cl")
+  set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE_DRIVER_MODE "cl")
+
+  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0)
+    set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-Qstd=c++20")
+    set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-Qstd=c++20")
+  endif()
+
+  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0.0)
+    set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-Qstd=c++17")
+    set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-Qstd=c++17")
+  endif()
+
+  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16.0)
+    set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-Qstd=c++14")
+    set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-Qstd=c++14")
+  endif()
+
+  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.0)
+    set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-Qstd=c++11")
+    set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-Qstd=c++11")
+  elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
+    set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-Qstd=c++0x")
+    set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-Qstd=c++0x")
+  endif()
+
+  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
+    set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
+    set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "")
+    set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
+  endif()
+
+else()
+
+  set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
+
+  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0)
+    set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++20")
+    set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++20")
+  endif()
+
+  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0.0)
+    set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
+    set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
+  endif()
+
+  if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 17.0)
+    set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
+  endif()
+
+  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0.2)
+    set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
+  elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0.0)
+    set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++1y")
+  endif()
+
+  # Intel 15.0.2 accepts c++14 instead of c++1y, but not gnu++14
+  # instead of gnu++1y.  Intel 17.0.0 accepts gnu++14 too.
+  if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 17.0)
+    set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
+  elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0.0)
+    set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
+  endif()
+
+  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0)
+    set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
+  endif()
+
+  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.0)
+    set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
+    set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
+  elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
+    set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++0x")
+    set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++0x")
+  endif()
+
+  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
+    set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
+    set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
+    set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
+  endif()
+
+endif()
+
+__compiler_check_default_language_standard(CXX 12.1 98)
+
+set(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
+set(CMAKE_CXX_CREATE_ASSEMBLY_SOURCE "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
diff --git a/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake
new file mode 100644
index 0000000..3c1fde2
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Intel-DetermineCompiler.cmake
@@ -0,0 +1,49 @@
+
+set(_compiler_id_pp_test "defined(__INTEL_COMPILER) || defined(__ICC)")
+
+set(_compiler_id_version_compute "
+  /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later,
+     except that a few beta releases use the old format with V=2021.  */
+# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111
+#  define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__INTEL_COMPILER/100)
+#  define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__INTEL_COMPILER/10 % 10)
+#  if defined(__INTEL_COMPILER_UPDATE)
+#   define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__INTEL_COMPILER_UPDATE)
+#  else
+#   define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__INTEL_COMPILER   % 10)
+#  endif
+# else
+#  define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__INTEL_COMPILER)
+#  define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__INTEL_COMPILER_UPDATE)
+   /* The third version component from --version is an update index,
+      but no macro is provided for it.  */
+#  define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(0)
+# endif
+# if defined(__INTEL_COMPILER_BUILD_DATE)
+   /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
+#  define @PREFIX@COMPILER_VERSION_TWEAK @MACRO_DEC@(__INTEL_COMPILER_BUILD_DATE)
+# endif
+# if defined(_MSC_VER)
+   /* _MSC_VER = VVRR */
+#  define @PREFIX@SIMULATE_VERSION_MAJOR @MACRO_DEC@(_MSC_VER / 100)
+#  define @PREFIX@SIMULATE_VERSION_MINOR @MACRO_DEC@(_MSC_VER % 100)
+# endif
+# if defined(__GNUC__)
+#  define @PREFIX@SIMULATE_VERSION_MAJOR @MACRO_DEC@(__GNUC__)
+# elif defined(__GNUG__)
+#  define @PREFIX@SIMULATE_VERSION_MAJOR @MACRO_DEC@(__GNUG__)
+# endif
+# if defined(__GNUC_MINOR__)
+#  define @PREFIX@SIMULATE_VERSION_MINOR @MACRO_DEC@(__GNUC_MINOR__)
+# endif
+# if defined(__GNUC_PATCHLEVEL__)
+#  define @PREFIX@SIMULATE_VERSION_PATCH @MACRO_DEC@(__GNUC_PATCHLEVEL__)
+# endif")
+
+set(_compiler_id_simulate "
+# if defined(_MSC_VER)
+#  define @PREFIX@SIMULATE_ID \"MSVC\"
+# endif
+# if defined(__GNUC__)
+#  define @PREFIX@SIMULATE_ID \"GNU\"
+# endif")
diff --git a/share/cmake-3.22/Modules/Compiler/Intel-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/Intel-Fortran.cmake
new file mode 100644
index 0000000..9fb6d46
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Intel-Fortran.cmake
@@ -0,0 +1,27 @@
+include(Compiler/Intel)
+__compiler_intel(Fortran)
+
+set(CMAKE_Fortran_SUBMODULE_SEP "@")
+set(CMAKE_Fortran_SUBMODULE_EXT ".smod")
+
+set(CMAKE_Fortran_MODDIR_FLAG "-module ")
+set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-fixed")
+set(CMAKE_Fortran_FORMAT_FREE_FLAG "-free")
+
+set(CMAKE_Fortran_COMPILE_WITH_DEFINES 1)
+
+set(CMAKE_Fortran_CREATE_PREPROCESSED_SOURCE "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
+set(CMAKE_Fortran_CREATE_ASSEMBLY_SOURCE "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
+
+if(CMAKE_HOST_WIN32)
+  # MSVC-like
+  set(CMAKE_Fortran_PREPROCESS_SOURCE
+    "<CMAKE_Fortran_COMPILER> -fpp <DEFINES> <INCLUDES> <FLAGS> -P <SOURCE> -Fi<PREPROCESSED_SOURCE>")
+else()
+  # GNU-like
+  set(CMAKE_Fortran_PREPROCESS_SOURCE
+    "<CMAKE_Fortran_COMPILER> -fpp <DEFINES> <INCLUDES> <FLAGS> -P <SOURCE> -o <PREPROCESSED_SOURCE>")
+endif()
+
+set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_ON "-fpp")
+set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_OFF "-nofpp")
diff --git a/share/cmake-3.22/Modules/Compiler/Intel-ISPC.cmake b/share/cmake-3.22/Modules/Compiler/Intel-ISPC.cmake
new file mode 100644
index 0000000..be64cf7
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/Intel-ISPC.cmake
@@ -0,0 +1,26 @@
+include(Compiler/CMakeCommonCompilerMacros)
+
+# Not aware of any verbose flag for ISPC
+#set(CMAKE_ISPC_VERBOSE_FLAG )
+
+set(CMAKE_DEPFILE_FLAGS_ISPC "-M -MT <DEP_TARGET> -MF <DEP_FILE>")
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake")
+  # dependencies are computed by the compiler itself
+  set(CMAKE_ISPC_DEPFILE_FORMAT gcc)
+  set(CMAKE_ISPC_DEPENDS_USE_COMPILER TRUE)
+endif()
+
+string(APPEND CMAKE_ISPC_FLAGS_INIT " ")
+string(APPEND CMAKE_ISPC_FLAGS_DEBUG_INIT "-O0 -g")
+string(APPEND CMAKE_ISPC_FLAGS_RELEASE_INIT " -O3 -DNDEBUG")
+string(APPEND CMAKE_ISPC_FLAGS_MINSIZEREL_INIT " -O1 -DNDEBUG")
+string(APPEND CMAKE_ISPC_FLAGS_RELWITHDEBINFO_INIT " -O2 -g -DNDEBUG")
+
+set(CMAKE_ISPC_COMPILE_OPTIONS_PIE --pic)
+set(CMAKE_ISPC_COMPILE_OPTIONS_PIC --pic)
+
+set(CMAKE_ISPC_RESPONSE_FILE_FLAG "@")
+set(CMAKE_ISPC_USE_RESPONSE_FILE_FOR_INCLUDES 1)
+set(CMAKE_ISPC_USE_RESPONSE_FILE_FOR_LIBRARIES 1)
+set(CMAKE_ISPC_USE_RESPONSE_FILE_FOR_OBJECTS 1)
diff --git a/share/cmake-3.18/Modules/Compiler/Intel.cmake b/share/cmake-3.22/Modules/Compiler/Intel.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Intel.cmake
rename to share/cmake-3.22/Modules/Compiler/Intel.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/IntelLLVM-ASM.cmake b/share/cmake-3.22/Modules/Compiler/IntelLLVM-ASM.cmake
new file mode 100644
index 0000000..c258a0a
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/IntelLLVM-ASM.cmake
@@ -0,0 +1,12 @@
+include(Compiler/IntelLLVM)
+__compiler_intel_llvm(ASM)
+
+string(APPEND CMAKE_ASM_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+string(APPEND CMAKE_ASM_FLAGS_RELEASE_INIT " -DNDEBUG")
+string(APPEND CMAKE_ASM_FLAGS_RELWITHDEBINFO_INIT " -DNDEBUG")
+
+if(UNIX)
+  set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s;S)
+else()
+  set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS asm)
+endif()
diff --git a/share/cmake-3.22/Modules/Compiler/IntelLLVM-C.cmake b/share/cmake-3.22/Modules/Compiler/IntelLLVM-C.cmake
new file mode 100644
index 0000000..d7346f6
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/IntelLLVM-C.cmake
@@ -0,0 +1,59 @@
+include(Compiler/IntelLLVM)
+__compiler_intel_llvm(C)
+
+if("x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
+  set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -TC)
+  set(CMAKE_C_CLANG_TIDY_DRIVER_MODE "cl")
+  set(CMAKE_C_INCLUDE_WHAT_YOU_USE_DRIVER_MODE "cl")
+  if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+      AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+      AND CMAKE_DEPFILE_FLAGS_C)
+    set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
+  endif()
+else()
+  set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
+  if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+      AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+      AND CMAKE_DEPFILE_FLAGS_C)
+    # dependencies are computed by the compiler itself
+    set(CMAKE_C_DEPFILE_FORMAT gcc)
+    set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
+  endif()
+
+  string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+  string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG")
+  string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -DNDEBUG")
+endif()
+
+set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
+set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
+set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
+
+if(NOT "x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
+
+  set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
+
+  set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
+  set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
+
+  set(CMAKE_C17_STANDARD_COMPILE_OPTION "-std=c17")
+  set(CMAKE_C17_EXTENSION_COMPILE_OPTION "-std=gnu17")
+else()
+  # clang-cl doesn't have any of these
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "")
+
+  set(CMAKE_C99_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "")
+
+  set(CMAKE_C11_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_C11_EXTENSION_COMPILE_OPTION "")
+
+  set(CMAKE_C17_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_C17_EXTENSION_COMPILE_OPTION "")
+endif()
+
+__compiler_check_default_language_standard(C 2020 17)
diff --git a/share/cmake-3.22/Modules/Compiler/IntelLLVM-CXX.cmake b/share/cmake-3.22/Modules/Compiler/IntelLLVM-CXX.cmake
new file mode 100644
index 0000000..cae1f11
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/IntelLLVM-CXX.cmake
@@ -0,0 +1,66 @@
+include(Compiler/IntelLLVM)
+__compiler_intel_llvm(CXX)
+
+if("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
+  set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -TP)
+  set(CMAKE_CXX_CLANG_TIDY_DRIVER_MODE "cl")
+  set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE_DRIVER_MODE "cl")
+  if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+      AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+      AND CMAKE_DEPFILE_FLAGS_CXX)
+    set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
+  endif()
+else()
+  set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
+  if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+      AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+      AND CMAKE_DEPFILE_FLAGS_CXX)
+    # dependencies are computed by the compiler itself
+    set(CMAKE_CXX_DEPFILE_FORMAT gcc)
+    set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
+  endif()
+
+  set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
+
+  string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+  string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -DNDEBUG")
+  string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT " -DNDEBUG")
+endif()
+
+set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
+set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
+set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
+
+if(NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION  "-std=c++98")
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
+
+  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION  "-std=c++11")
+  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
+
+  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION  "-std=c++14")
+  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
+
+  set(CMAKE_CXX17_STANDARD_COMPILE_OPTION  "-std=c++17")
+  set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
+
+  set(CMAKE_CXX20_STANDARD_COMPILE_OPTION  "-std=c++20")
+  set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++20")
+else()
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION  "")
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "")
+
+  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION  "-Qstd=c++11")
+  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-Qstd=c++11")
+
+  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION  "-Qstd=c++14")
+  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-Qstd=c++14")
+
+  set(CMAKE_CXX17_STANDARD_COMPILE_OPTION  "-Qstd=c++17")
+  set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-Qstd=c++17")
+
+  set(CMAKE_CXX20_STANDARD_COMPILE_OPTION  "-Qstd=c++20")
+  set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-Qstd=c++20")
+endif()
+
+__compiler_check_default_language_standard(CXX 2020 14)
diff --git a/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake
new file mode 100644
index 0000000..917a364
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/IntelLLVM-DetermineCompiler.cmake
@@ -0,0 +1,41 @@
+
+set(_compiler_id_pp_test "(defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER)")
+
+set(_compiler_id_version_compute "
+/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and
+ * later.  Look for 6 digit vs. 8 digit version number to decide encoding.
+ * VVVV is no smaller than the current year when a version is released.
+ */
+#if __INTEL_LLVM_COMPILER < 1000000L
+# define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__INTEL_LLVM_COMPILER/100)
+# define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__INTEL_LLVM_COMPILER/10 % 10)
+# define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__INTEL_LLVM_COMPILER    % 10)
+#else
+# define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__INTEL_LLVM_COMPILER/10000)
+# define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__INTEL_LLVM_COMPILER/100 % 100)
+# define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__INTEL_LLVM_COMPILER     % 100)
+#endif
+#if defined(_MSC_VER)
+  /* _MSC_VER = VVRR */
+# define @PREFIX@SIMULATE_VERSION_MAJOR @MACRO_DEC@(_MSC_VER / 100)
+# define @PREFIX@SIMULATE_VERSION_MINOR @MACRO_DEC@(_MSC_VER % 100)
+#endif
+#if defined(__GNUC__)
+# define @PREFIX@SIMULATE_VERSION_MAJOR @MACRO_DEC@(__GNUC__)
+#elif defined(__GNUG__)
+# define @PREFIX@SIMULATE_VERSION_MAJOR @MACRO_DEC@(__GNUG__)
+#endif
+#if defined(__GNUC_MINOR__)
+# define @PREFIX@SIMULATE_VERSION_MINOR @MACRO_DEC@(__GNUC_MINOR__)
+#endif
+#if defined(__GNUC_PATCHLEVEL__)
+# define @PREFIX@SIMULATE_VERSION_PATCH @MACRO_DEC@(__GNUC_PATCHLEVEL__)
+#endif")
+
+set(_compiler_id_simulate "
+#if defined(_MSC_VER)
+# define @PREFIX@SIMULATE_ID \"MSVC\"
+#endif
+#if defined(__GNUC__)
+# define @PREFIX@SIMULATE_ID \"GNU\"
+#endif")
diff --git a/share/cmake-3.22/Modules/Compiler/IntelLLVM-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/IntelLLVM-Fortran.cmake
new file mode 100644
index 0000000..710803f
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/IntelLLVM-Fortran.cmake
@@ -0,0 +1,27 @@
+include(Compiler/IntelLLVM)
+__compiler_intel_llvm(Fortran)
+
+set(CMAKE_Fortran_SUBMODULE_SEP "@")
+set(CMAKE_Fortran_SUBMODULE_EXT ".smod")
+
+set(CMAKE_Fortran_MODDIR_FLAG "-module ")
+set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-fixed")
+set(CMAKE_Fortran_FORMAT_FREE_FLAG "-free")
+
+set(CMAKE_Fortran_COMPILE_WITH_DEFINES 1)
+
+set(CMAKE_Fortran_CREATE_PREPROCESSED_SOURCE "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
+set(CMAKE_Fortran_CREATE_ASSEMBLY_SOURCE "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
+
+if(CMAKE_HOST_WIN32)
+  # MSVC-like
+  set(CMAKE_Fortran_PREPROCESS_SOURCE
+    "<CMAKE_Fortran_COMPILER> -fpp <DEFINES> <INCLUDES> <FLAGS> -P <SOURCE> -Fi<PREPROCESSED_SOURCE>")
+else()
+  # GNU-like
+  set(CMAKE_Fortran_PREPROCESS_SOURCE
+    "<CMAKE_Fortran_COMPILER> -fpp <DEFINES> <INCLUDES> <FLAGS> -P <SOURCE> -o <PREPROCESSED_SOURCE>")
+endif()
+
+set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_ON "-fpp")
+set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_OFF "-nofpp")
diff --git a/share/cmake-3.22/Modules/Compiler/IntelLLVM.cmake b/share/cmake-3.22/Modules/Compiler/IntelLLVM.cmake
new file mode 100644
index 0000000..14b7ad8
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/IntelLLVM.cmake
@@ -0,0 +1,92 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__COMPILER_LLVM_INTEL)
+  return()
+endif()
+set(__COMPILER_LLVM_INTEL 1)
+
+include(Compiler/CMakeCommonCompilerMacros)
+
+set(__pch_header_C "c-header")
+set(__pch_header_CXX "c++-header")
+set(__pch_header_OBJC "objective-c-header")
+set(__pch_header_OBJCXX "objective-c++-header")
+
+if(CMAKE_HOST_WIN32)
+  # MSVC-like
+  macro(__compiler_intel_llvm lang)
+    if(NOT "x${lang}" STREQUAL "xFortran")
+      set(CMAKE_${lang}_COMPILE_OPTIONS_INVALID_PCH -Winvalid-pch)
+    endif()
+  endmacro()
+else()
+  # GNU-like
+  macro(__compiler_intel_llvm lang)
+    set(CMAKE_${lang}_VERBOSE_FLAG "-v")
+
+    string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
+    string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g")
+    string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Os")
+    string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3")
+    string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g")
+
+    set(_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER YES)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC")
+    set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
+    set(CMAKE_${lang}_LINK_OPTIONS_PIE ${CMAKE_${lang}_COMPILE_OPTIONS_PIE} "-pie")
+    set(CMAKE_${lang}_LINK_OPTIONS_NO_PIE "-no-pie")
+
+    set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-fPIC")
+    set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-shared")
+
+    set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Wl,")
+    set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP ",")
+
+    # distcc does not transform -o to -MT when invoking the preprocessor
+    # internally, as it ought to.  Work around this bug by setting -MT here
+    # even though it isn't strictly necessary.
+    set(CMAKE_DEPFILE_FLAGS_${lang} "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
+
+    set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-isystem ")
+    set(CMAKE_${lang}_COMPILE_OPTIONS_VISIBILITY "-fvisibility=")
+    set(CMAKE_${lang}_COMPILE_OPTIONS_TARGET "--target=")
+    set(CMAKE_${lang}_COMPILE_OPTIONS_SYSROOT "--sysroot=")
+    set(CMAKE_${lang}_COMPILE_OPTIONS_EXTERNAL_TOOLCHAIN "--gcc-toolchain=")
+    set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Xlinker" " ")
+    set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP)
+
+    set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
+    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto=thin")
+    set(CMAKE_${lang}_ARCHIVE_CREATE_IPO "\"${CMAKE_${lang}_COMPILER_AR}\" cr <TARGET> <LINK_FLAGS> <OBJECTS>")
+    set(CMAKE_${lang}_ARCHIVE_APPEND_IPO "\"${CMAKE_${lang}_COMPILER_AR}\" r <TARGET> <LINK_FLAGS> <OBJECTS>")
+    set(CMAKE_${lang}_ARCHIVE_FINISH_IPO "\"${CMAKE_${lang}_COMPILER_RANLIB}\" <TARGET>")
+
+    set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
+    set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
+
+    set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}")
+    if(CMAKE_${lang}_COMPILER_ARG1)
+      separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}")
+      list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS})
+      unset(_COMPILER_ARGS)
+    endif()
+    list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp")
+    if(CMAKE_${lang}_COMPILER_TARGET)
+      list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "--target=${CMAKE_${lang}_COMPILER_TARGET}")
+    endif()
+
+    if(NOT "x${lang}" STREQUAL "xFortran")
+      # Precompile Headers
+      set(CMAKE_PCH_EXTENSION .pch)
+      set(CMAKE_PCH_PROLOGUE "#pragma clang system_header")
+      set(CMAKE_${lang}_COMPILE_OPTIONS_INSTANTIATE_TEMPLATES_PCH -fpch-instantiate-templates)
+      set(CMAKE_${lang}_COMPILE_OPTIONS_INVALID_PCH -Winvalid-pch)
+      set(CMAKE_${lang}_COMPILE_OPTIONS_USE_PCH -Xclang -include-pch -Xclang <PCH_FILE> -Xclang -include -Xclang <PCH_HEADER>)
+      set(CMAKE_${lang}_COMPILE_OPTIONS_CREATE_PCH -Xclang -emit-pch -Xclang -include -Xclang <PCH_HEADER> -x ${__pch_header_${lang}})
+    endif()
+  endmacro()
+endif()
diff --git a/share/cmake-3.18/Modules/Compiler/MSVC-ASM.cmake b/share/cmake-3.22/Modules/Compiler/MSVC-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/MSVC-ASM.cmake
rename to share/cmake-3.22/Modules/Compiler/MSVC-ASM.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/MSVC-C-FeatureTests.cmake b/share/cmake-3.22/Modules/Compiler/MSVC-C-FeatureTests.cmake
new file mode 100644
index 0000000..4024c12
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/MSVC-C-FeatureTests.cmake
@@ -0,0 +1,7 @@
+set(_cmake_oldestSupported "_MSC_VER >= 1600")
+
+set(_cmake_feature_test_c_restrict "_MSC_VER >= 1927")
+set(_cmake_feature_test_c_static_assert "_MSC_VER >= 1928")
+
+set(_cmake_feature_test_c_variadic_macros "${_cmake_oldestSupported}")
+set(_cmake_feature_test_c_function_prototypes "${_cmake_oldestSupported}")
diff --git a/share/cmake-3.22/Modules/Compiler/MSVC-C.cmake b/share/cmake-3.22/Modules/Compiler/MSVC-C.cmake
new file mode 100644
index 0000000..a53df46
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/MSVC-C.cmake
@@ -0,0 +1,82 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+include(Compiler/CMakeCommonCompilerMacros)
+
+if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 19.27)
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "")
+  set(CMAKE_C99_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "")
+  set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std:c11")
+  set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std:c11")
+
+  if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 19.28)
+    set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
+    set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
+    set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
+    set(CMAKE_C17_STANDARD_COMPILE_OPTION "-std:c17")
+    set(CMAKE_C17_EXTENSION_COMPILE_OPTION "-std:c17")
+  else()
+    # Special case for 19.27 (VS 16.7): C11 has partial support.
+    macro(cmake_record_c_compile_features)
+      _has_compiler_features_c(90)
+      _has_compiler_features_c(99)
+      list(APPEND CMAKE_C11_COMPILE_FEATURES c_std_11)
+      set(_result 0) # expected by cmake_determine_compile_features
+    endmacro()
+  endif()
+
+  __compiler_check_default_language_standard(C 19.27 99)
+else()
+  # MSVC has no specific options to set C language standards, but set them as
+  # empty strings anyways so the feature test infrastructure can at least check
+  # to see if they are defined.
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "")
+  set(CMAKE_C99_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "")
+  set(CMAKE_C11_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_C11_EXTENSION_COMPILE_OPTION "")
+
+  # There is no meaningful default for this
+  set(CMAKE_C_STANDARD_DEFAULT "")
+
+  # There are no C compiler modes so we hard-code the known compiler supported
+  # features. Override the default macro for this special case.  Pretend that
+  # all language standards are available so that at least compilation
+  # can be attempted.
+  macro(cmake_record_c_compile_features)
+    list(APPEND CMAKE_C_COMPILE_FEATURES
+      c_std_90
+      c_std_99
+      c_std_11
+      c_std_17
+      c_std_23
+      c_function_prototypes
+      )
+    list(APPEND CMAKE_C90_COMPILE_FEATURES c_std_90 c_function_prototypes)
+    list(APPEND CMAKE_C99_COMPILE_FEATURES c_std_99)
+    list(APPEND CMAKE_C11_COMPILE_FEATURES c_std_11)
+    if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 14.0)
+      list(APPEND CMAKE_C_COMPILE_FEATURES c_variadic_macros)
+      list(APPEND CMAKE_C99_COMPILE_FEATURES c_variadic_macros)
+    endif()
+    set(_result 0) # expected by cmake_determine_compile_features
+  endmacro()
+endif()
+
+set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -TC)
+set(CMAKE_C_CLANG_TIDY_DRIVER_MODE "cl")
+set(CMAKE_C_INCLUDE_WHAT_YOU_USE_DRIVER_MODE "cl")
+
+# /JMC "Just My Code" is only supported by MSVC 19.05 onward.
+if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 19.05)
+  set(CMAKE_C_COMPILE_OPTIONS_JMC "-JMC")
+endif()
+
+# The `/external:I` flag was made non-experimental in 19.29.30036.3.
+if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 19.29.30036.3)
+  set(CMAKE_INCLUDE_SYSTEM_FLAG_C "-external:I ")
+  set(_CMAKE_INCLUDE_SYSTEM_FLAG_C_WARNING "-external:W0 ")
+endif ()
diff --git a/share/cmake-3.18/Modules/Compiler/MSVC-CXX-FeatureTests.cmake b/share/cmake-3.22/Modules/Compiler/MSVC-CXX-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/MSVC-CXX-FeatureTests.cmake
rename to share/cmake-3.22/Modules/Compiler/MSVC-CXX-FeatureTests.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/MSVC-CXX.cmake b/share/cmake-3.22/Modules/Compiler/MSVC-CXX.cmake
new file mode 100644
index 0000000..bcaec69
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/MSVC-CXX.cmake
@@ -0,0 +1,89 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+include(Compiler/CMakeCommonCompilerMacros)
+
+set(CMAKE_CXX_CLANG_TIDY_DRIVER_MODE "cl")
+set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE_DRIVER_MODE "cl")
+
+if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0.24215.1 AND
+     CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.10) OR
+   CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.10.25017)
+
+  # VS 2015 Update 3 and above support language standard level flags,
+  # with the default and minimum level being C++14.
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "")
+  set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
+  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "")
+  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std:c++14")
+  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std:c++14")
+
+  if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.11.25505)
+    set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
+    set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
+    set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std:c++17")
+    set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std:c++17")
+  else()
+    set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std:c++latest")
+    set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std:c++latest")
+  endif()
+
+  if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.29.30129)
+    set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std:c++20")
+    set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std:c++20")
+    set(CMAKE_CXX23_STANDARD_COMPILE_OPTION "-std:c++latest")
+    set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION "-std:c++latest")
+  elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.12.25835)
+    set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std:c++latest")
+    set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std:c++latest")
+  endif()
+
+  __compiler_check_default_language_standard(CXX 19.0 14)
+
+elseif (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)
+  # MSVC has no specific options to set language standards, but set them as
+  # empty strings anyways so the feature test infrastructure can at least check
+  # to see if they are defined.
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "")
+  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "")
+  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "")
+  set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "")
+  set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "")
+
+  # There is no meaningful default for this
+  set(CMAKE_CXX_STANDARD_DEFAULT "")
+
+  # There are no compiler modes so we only need to test features once.
+  # Override the default macro for this special case.  Pretend that
+  # all language standards are available so that at least compilation
+  # can be attempted.
+  macro(cmake_record_cxx_compile_features)
+    list(APPEND CMAKE_CXX_COMPILE_FEATURES
+      cxx_std_98
+      cxx_std_11
+      cxx_std_14
+      cxx_std_17
+      cxx_std_20
+      cxx_std_23
+      )
+    _record_compiler_features(CXX "" CMAKE_CXX_COMPILE_FEATURES)
+  endmacro()
+endif()
+
+# /JMC "Just My Code" is only supported by MSVC 19.05 onward.
+if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.05)
+  set(CMAKE_CXX_COMPILE_OPTIONS_JMC "-JMC")
+endif()
+
+# The `/external:I` flag was made non-experimental in 19.29.30036.3.
+if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.29.30036.3)
+  set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-external:I ")
+  set(_CMAKE_INCLUDE_SYSTEM_FLAG_CXX_WARNING "-external:W0 ")
+endif ()
diff --git a/share/cmake-3.18/Modules/Compiler/MSVC-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/MSVC-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/MSVC-DetermineCompiler.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/NAG-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/NAG-Fortran.cmake
new file mode 100644
index 0000000..a65fd2c
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/NAG-Fortran.cmake
@@ -0,0 +1,41 @@
+# Help CMAKE_PARSE_IMPLICIT_LINK_INFO detect NAG Fortran object files.
+if(NOT CMAKE_Fortran_COMPILER_WORKS AND NOT CMAKE_Fortran_COMPILER_FORCED)
+  message(CHECK_START "Detecting NAG Fortran directory")
+  # Run with -dryrun to see sample "link" line.
+  execute_process(
+    COMMAND ${CMAKE_Fortran_COMPILER} dummy.o -dryrun
+    OUTPUT_VARIABLE _dryrun
+    ERROR_VARIABLE _dryrun
+    )
+  # Match an object file.
+  string(REGEX MATCH "/[^ ]*/[^ /][^ /]*\\.o" _nag_obj "${_dryrun}")
+  if(_nag_obj)
+    # Parse object directory and convert to a regex.
+    string(REGEX REPLACE "/[^/]*$" "" _nag_dir "${_nag_obj}")
+    string(REGEX REPLACE "([][+.*()^])" "\\\\\\1" _nag_regex "${_nag_dir}")
+    set(CMAKE_Fortran_IMPLICIT_OBJECT_REGEX "^${_nag_regex}/")
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+      "Detecting NAG Fortran directory with -dryrun found\n"
+      "  object: ${_nag_obj}\n"
+      "  directory: ${_nag_dir}\n"
+      "  regex: ${CMAKE_Fortran_IMPLICIT_OBJECT_REGEX}\n"
+      "from output:\n${_dryrun}\n\n")
+    message(CHECK_PASS "${_nag_dir}")
+  else()
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+      "Detecting NAG Fortran directory with -dryrun failed:\n${_dryrun}\n\n")
+    message(CHECK_FAIL "failed")
+  endif()
+endif()
+
+set(CMAKE_Fortran_SUBMODULE_SEP ".")
+set(CMAKE_Fortran_SUBMODULE_EXT ".sub")
+set(CMAKE_Fortran_MODDIR_FLAG "-mdir ")
+set(CMAKE_Fortran_MODDIR_INCLUDE_FLAG "-I") # -mdir does not affect search path
+set(CMAKE_SHARED_LIBRARY_Fortran_FLAGS "-PIC")
+set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-fixed")
+set(CMAKE_Fortran_FORMAT_FREE_FLAG "-free")
+set(CMAKE_Fortran_COMPILE_OPTIONS_PIC "-PIC")
+set(CMAKE_Fortran_COMPILE_OPTIONS_PIE "-PIC")
+set(CMAKE_Fortran_RESPONSE_FILE_LINK_FLAG "-Wl,@")
+set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_ON "-fpp")
diff --git a/share/cmake-3.22/Modules/Compiler/NVHPC-C.cmake b/share/cmake-3.22/Modules/Compiler/NVHPC-C.cmake
new file mode 100644
index 0000000..9295abd
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/NVHPC-C.cmake
@@ -0,0 +1,23 @@
+include(Compiler/PGI-C)
+include(Compiler/NVHPC)
+
+# Needed so that we support `LANGUAGE` property correctly
+set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
+
+if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 20.11)
+  set(CMAKE_C17_STANDARD_COMPILE_OPTION  -std=c17)
+  set(CMAKE_C17_EXTENSION_COMPILE_OPTION -std=gnu17)
+endif()
+
+if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 21.07)
+  set(CMAKE_DEPFILE_FLAGS_C "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
+  set(CMAKE_C_DEPFILE_FORMAT gcc)
+  set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
+else()
+  # Before NVHPC 21.07 the `-MD` flag implicitly
+  # implies `-E` and therefore compilation and dependency generation
+  # can't occur in the same invocation
+  set(CMAKE_C_DEPENDS_EXTRA_COMMANDS "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -x c -M <SOURCE> -MT <OBJECT> -MD<DEP_FILE>")
+endif()
+
+__compiler_nvhpc(C)
diff --git a/share/cmake-3.22/Modules/Compiler/NVHPC-CXX.cmake b/share/cmake-3.22/Modules/Compiler/NVHPC-CXX.cmake
new file mode 100644
index 0000000..59ba7bf
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/NVHPC-CXX.cmake
@@ -0,0 +1,22 @@
+include(Compiler/PGI-CXX)
+include(Compiler/NVHPC)
+
+# Needed so that we support `LANGUAGE` property correctly
+set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
+
+if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 20.11)
+  set(CMAKE_CXX20_STANDARD_COMPILE_OPTION  -std=c++20)
+  set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION -std=gnu++20)
+endif()
+
+if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 21.07)
+  set(CMAKE_DEPFILE_FLAGS_CXX "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
+  set(CMAKE_CXX_DEPFILE_FORMAT gcc)
+  set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
+else()
+  # Before NVHPC 21.07 the `-MD` flag implicitly
+  # implies `-E` and therefore compilation and dependency generation
+  # can't occur in the same invocation
+  set(CMAKE_CXX_DEPENDS_EXTRA_COMMANDS "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -x c++ -M <SOURCE> -MT <OBJECT> -MD<DEP_FILE>")
+endif()
+__compiler_nvhpc(CXX)
diff --git a/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake
new file mode 100644
index 0000000..45b69e1
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/NVHPC-DetermineCompiler.cmake
@@ -0,0 +1,9 @@
+
+set(_compiler_id_pp_test "defined(__NVCOMPILER)")
+
+set(_compiler_id_version_compute "
+# define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__NVCOMPILER_MAJOR__)
+# define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__NVCOMPILER_MINOR__)
+# if defined(__NVCOMPILER_PATCHLEVEL__)
+#  define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__NVCOMPILER_PATCHLEVEL__)
+# endif")
diff --git a/share/cmake-3.22/Modules/Compiler/NVHPC-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/NVHPC-Fortran.cmake
new file mode 100644
index 0000000..59755b3
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/NVHPC-Fortran.cmake
@@ -0,0 +1,3 @@
+include(Compiler/PGI-Fortran)
+include(Compiler/NVHPC)
+__compiler_nvhpc(Fortran)
diff --git a/share/cmake-3.22/Modules/Compiler/NVHPC.cmake b/share/cmake-3.22/Modules/Compiler/NVHPC.cmake
new file mode 100644
index 0000000..b51bb43
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/NVHPC.cmake
@@ -0,0 +1,16 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__COMPILER_NVHPC)
+  return()
+endif()
+set(__COMPILER_NVHPC 1)
+
+include(Compiler/PGI)
+
+macro(__compiler_nvhpc lang)
+  # Logic specific to NVHPC.
+  set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-isystem ")
+endmacro()
diff --git a/share/cmake-3.22/Modules/Compiler/NVIDIA-CUDA.cmake b/share/cmake-3.22/Modules/Compiler/NVIDIA-CUDA.cmake
new file mode 100644
index 0000000..c2fe42d
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/NVIDIA-CUDA.cmake
@@ -0,0 +1,140 @@
+include(Compiler/CMakeCommonCompilerMacros)
+
+set(CMAKE_CUDA_COMPILER_HAS_DEVICE_LINK_PHASE True)
+set(CMAKE_CUDA_VERBOSE_FLAG "-v")
+set(CMAKE_CUDA_VERBOSE_COMPILE_FLAG "-Xcompiler=-v")
+
+set(_CMAKE_COMPILE_AS_CUDA_FLAG "-x cu")
+set(_CMAKE_CUDA_PTX_FLAG "-ptx")
+set(_CMAKE_CUDA_DEVICE_CODE "-dc")
+
+if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 10.2.89)
+  # The -forward-unknown-to-host-compiler flag was only
+  # added to nvcc in 10.2 so before that we had no good
+  # way to invoke the CUDA compiler and propagate unknown
+  # flags such as -pthread to the host compiler
+  set(_CMAKE_CUDA_EXTRA_FLAGS "-forward-unknown-to-host-compiler")
+else()
+  set(_CMAKE_CUDA_EXTRA_FLAGS "")
+endif()
+
+if(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL "8.0.0")
+  set(_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS "-Wno-deprecated-gpu-targets")
+else()
+  set(_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS "")
+endif()
+
+if(CMAKE_CUDA_HOST_COMPILER AND NOT CMAKE_GENERATOR MATCHES "Visual Studio")
+  string(APPEND _CMAKE_CUDA_EXTRA_FLAGS " -ccbin=<CMAKE_CUDA_HOST_COMPILER>")
+endif()
+
+if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 10.2.89)
+  # The -MD flag was only added to nvcc in 10.2 so
+  # before that we had to invoke the compiler twice
+  # to get header dependency information
+  set(CMAKE_DEPFILE_FLAGS_CUDA "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
+else()
+  set(CMAKE_CUDA_DEPENDS_EXTRA_COMMANDS "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} -M <SOURCE> -MT <OBJECT> -o <DEP_FILE>")
+endif()
+set(CMAKE_CUDA_DEPFILE_FORMAT gcc)
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake")
+  set(CMAKE_CUDA_DEPENDS_USE_COMPILER TRUE)
+endif()
+
+if(NOT "x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC")
+  set(CMAKE_CUDA_COMPILE_OPTIONS_PIE -Xcompiler=-fPIE)
+  set(CMAKE_CUDA_COMPILE_OPTIONS_PIC -Xcompiler=-fPIC)
+  set(CMAKE_CUDA_COMPILE_OPTIONS_VISIBILITY -Xcompiler=-fvisibility=)
+  # CMAKE_SHARED_LIBRARY_CUDA_FLAGS is sent to the host linker so we
+  # don't need to forward it through nvcc.
+  set(CMAKE_SHARED_LIBRARY_CUDA_FLAGS -fPIC)
+  string(APPEND CMAKE_CUDA_FLAGS_INIT " ")
+  string(APPEND CMAKE_CUDA_FLAGS_DEBUG_INIT " -g")
+  string(APPEND CMAKE_CUDA_FLAGS_RELEASE_INIT " -O3 -DNDEBUG")
+  string(APPEND CMAKE_CUDA_FLAGS_MINSIZEREL_INIT " -O1 -DNDEBUG")
+  string(APPEND CMAKE_CUDA_FLAGS_RELWITHDEBINFO_INIT " -O2 -g -DNDEBUG")
+endif()
+set(CMAKE_SHARED_LIBRARY_CREATE_CUDA_FLAGS -shared)
+set(CMAKE_INCLUDE_SYSTEM_FLAG_CUDA -isystem=)
+
+if (CMAKE_CUDA_SIMULATE_ID STREQUAL "GNU")
+  set(CMAKE_CUDA_LINKER_WRAPPER_FLAG "-Wl,")
+  set(CMAKE_CUDA_LINKER_WRAPPER_FLAG_SEP ",")
+elseif(CMAKE_CUDA_SIMULATE_ID STREQUAL "Clang")
+  set(CMAKE_CUDA_LINKER_WRAPPER_FLAG "-Xlinker" " ")
+  set(CMAKE_CUDA_LINKER_WRAPPER_FLAG_SEP)
+endif()
+
+set(CMAKE_CUDA_DEVICE_COMPILER_WRAPPER_FLAG "-Xcompiler=")
+set(CMAKE_CUDA_DEVICE_COMPILER_WRAPPER_FLAG_SEP ",")
+set(CMAKE_CUDA_DEVICE_LINKER_WRAPPER_FLAG "-Xlinker=")
+set(CMAKE_CUDA_DEVICE_LINKER_WRAPPER_FLAG_SEP ",")
+
+set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_STATIC  "cudadevrt;cudart_static")
+set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_SHARED  "cudadevrt;cudart")
+set(CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_NONE    "")
+
+if(UNIX AND NOT (CMAKE_SYSTEM_NAME STREQUAL "QNX"))
+  list(APPEND CMAKE_CUDA_RUNTIME_LIBRARY_LINK_OPTIONS_STATIC "rt" "pthread" "dl")
+endif()
+
+if("x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC")
+  # MSVC requires c++14 as the minimum level
+  set(CMAKE_CUDA03_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_CUDA03_EXTENSION_COMPILE_OPTION "")
+
+  # MSVC requires c++14 as the minimum level
+  set(CMAKE_CUDA11_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_CUDA11_EXTENSION_COMPILE_OPTION "")
+
+  if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 9.0)
+    if(CMAKE_CUDA_SIMULATE_VERSION VERSION_GREATER_EQUAL 19.10.25017)
+      set(CMAKE_CUDA14_STANDARD_COMPILE_OPTION "-std=c++14")
+      set(CMAKE_CUDA14_EXTENSION_COMPILE_OPTION "-std=c++14")
+    else()
+      set(CMAKE_CUDA14_STANDARD_COMPILE_OPTION "")
+      set(CMAKE_CUDA14_EXTENSION_COMPILE_OPTION "")
+    endif()
+  endif()
+
+  if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 11.0)
+    if(CMAKE_CUDA_SIMULATE_VERSION VERSION_GREATER_EQUAL 19.11.25505)
+      set(CMAKE_CUDA17_STANDARD_COMPILE_OPTION "-std=c++17")
+      set(CMAKE_CUDA17_EXTENSION_COMPILE_OPTION "-std=c++17")
+    endif()
+  endif()
+
+else()
+  set(CMAKE_CUDA03_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_CUDA03_EXTENSION_COMPILE_OPTION "")
+
+  set(CMAKE_CUDA11_STANDARD_COMPILE_OPTION "-std=c++11")
+  set(CMAKE_CUDA11_EXTENSION_COMPILE_OPTION "-std=c++11")
+
+  if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 9.0)
+    set(CMAKE_CUDA03_STANDARD_COMPILE_OPTION "-std=c++03")
+    set(CMAKE_CUDA03_EXTENSION_COMPILE_OPTION "-std=c++03")
+    set(CMAKE_CUDA14_STANDARD_COMPILE_OPTION "-std=c++14")
+    set(CMAKE_CUDA14_EXTENSION_COMPILE_OPTION "-std=c++14")
+  endif()
+
+  if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 11.0)
+    set(CMAKE_CUDA17_STANDARD_COMPILE_OPTION "-std=c++17")
+    set(CMAKE_CUDA17_EXTENSION_COMPILE_OPTION "-std=c++17")
+  endif()
+
+endif()
+
+# FIXME: investigate use of --options-file.
+# Tell Makefile generator that nvcc does not support @<rspfile> syntax.
+set(CMAKE_CUDA_USE_RESPONSE_FILE_FOR_INCLUDES 0)
+set(CMAKE_CUDA_USE_RESPONSE_FILE_FOR_LIBRARIES 0)
+set(CMAKE_CUDA_USE_RESPONSE_FILE_FOR_OBJECTS 0)
+
+if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL "9.0")
+  set(CMAKE_CUDA_RESPONSE_FILE_DEVICE_LINK_FLAG "--options-file ")
+  set(CMAKE_CUDA_RESPONSE_FILE_FLAG "--options-file ")
+endif()
+
+__compiler_check_default_language_standard(CUDA 6.0 03)
diff --git a/share/cmake-3.18/Modules/Compiler/NVIDIA-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/NVIDIA-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/NVIDIA-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/OpenWatcom-C.cmake b/share/cmake-3.22/Modules/Compiler/OpenWatcom-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/OpenWatcom-C.cmake
rename to share/cmake-3.22/Modules/Compiler/OpenWatcom-C.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/OpenWatcom-CXX.cmake b/share/cmake-3.22/Modules/Compiler/OpenWatcom-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/OpenWatcom-CXX.cmake
rename to share/cmake-3.22/Modules/Compiler/OpenWatcom-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/OpenWatcom.cmake b/share/cmake-3.22/Modules/Compiler/OpenWatcom.cmake
new file mode 100644
index 0000000..8cfe683
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/OpenWatcom.cmake
@@ -0,0 +1,119 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# This module is shared by multiple languages; use include blocker.
+include_guard()
+
+set(CMAKE_LIBRARY_PATH_FLAG "libpath ")
+set(CMAKE_LINK_LIBRARY_FLAG "library ")
+set(CMAKE_LINK_LIBRARY_FILE_FLAG "library ")
+set(CMAKE_LINK_OBJECT_FILE_FLAG "file ")
+
+if(CMAKE_VERBOSE_MAKEFILE)
+  set(CMAKE_WCL_QUIET)
+  set(CMAKE_WLINK_QUIET)
+  set(CMAKE_LIB_QUIET)
+else()
+  set(CMAKE_WCL_QUIET "-zq")
+  set(CMAKE_WLINK_QUIET "option quiet")
+  set(CMAKE_LIB_QUIET "-q")
+endif()
+
+foreach(type CREATE_SHARED_LIBRARY CREATE_SHARED_MODULE LINK_EXECUTABLE)
+  set(CMAKE_C_${type}_USE_WATCOM_QUOTE 1)
+  set(CMAKE_CXX_${type}_USE_WATCOM_QUOTE 1)
+endforeach()
+
+foreach(type SHARED MODULE EXE)
+  # linker map file creation directives
+  string(APPEND CMAKE_${type}_LINKER_FLAGS_INIT " opt map")
+  # linker debug directives
+  string(APPEND CMAKE_${type}_LINKER_FLAGS_DEBUG_INIT " debug all")
+  string(APPEND CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO_INIT " debug all")
+endforeach()
+
+foreach(lang C CXX)
+  # warning level
+  string(APPEND CMAKE_${lang}_FLAGS_INIT " -w3")
+  # debug options
+  string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -d2")
+  string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -s -os -d0 -dNDEBUG")
+  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -s -ot -d0 -dNDEBUG")
+  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -s -ot -d1 -dNDEBUG")
+endforeach()
+
+# C create import library
+set(CMAKE_C_CREATE_IMPORT_LIBRARY
+  "<CMAKE_AR> -c -q -n -b <TARGET_IMPLIB> +<TARGET_QUOTED>")
+# C++ create import library
+set(CMAKE_CXX_CREATE_IMPORT_LIBRARY ${CMAKE_C_CREATE_IMPORT_LIBRARY})
+
+# C link a object files into an executable file
+set(CMAKE_C_LINK_EXECUTABLE
+  "<CMAKE_LINKER> ${CMAKE_WLINK_QUIET} name <TARGET> <LINK_FLAGS> file {<OBJECTS>} <LINK_LIBRARIES>")
+# C++ link a object files into an executable file
+set(CMAKE_CXX_LINK_EXECUTABLE ${CMAKE_C_LINK_EXECUTABLE})
+
+# C compile a file into an object file
+set(CMAKE_C_COMPILE_OBJECT
+  "<CMAKE_C_COMPILER> ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo<OBJECT> -c -cc <SOURCE>")
+# C++ compile a file into an object file
+set(CMAKE_CXX_COMPILE_OBJECT
+  "<CMAKE_CXX_COMPILER> ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo<OBJECT> -c -cc++ <SOURCE>")
+
+# C preprocess a source file
+set(CMAKE_C_CREATE_PREPROCESSED_SOURCE
+  "<CMAKE_C_COMPILER> ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo<PREPROCESSED_SOURCE> -pl -cc <SOURCE>")
+# C++ preprocess a source file
+set(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE
+  "<CMAKE_CXX_COMPILER> ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo<PREPROCESSED_SOURCE> -pl -cc++ <SOURCE>")
+
+# C create a shared library
+set(CMAKE_C_CREATE_SHARED_LIBRARY
+  "<CMAKE_LINKER> ${CMAKE_WLINK_QUIET} name <TARGET> <LINK_FLAGS> option implib=<TARGET_IMPLIB> file {<OBJECTS>} <LINK_LIBRARIES>")
+# C++ create a shared library
+set(CMAKE_CXX_CREATE_SHARED_LIBRARY ${CMAKE_C_CREATE_SHARED_LIBRARY})
+
+# C create a shared module
+set(CMAKE_C_CREATE_SHARED_MODULE
+  "<CMAKE_LINKER> ${CMAKE_WLINK_QUIET} name <TARGET> <LINK_FLAGS> file {<OBJECTS>} <LINK_LIBRARIES>")
+# C++ create a shared module
+set(CMAKE_CXX_CREATE_SHARED_MODULE ${CMAKE_C_CREATE_SHARED_MODULE})
+
+# C create a static library
+set(CMAKE_C_CREATE_STATIC_LIBRARY
+  "<CMAKE_AR> ${CMAKE_LIB_QUIET} -c -n -b <TARGET_QUOTED> <LINK_FLAGS> <OBJECTS> ")
+# C++ create a static library
+set(CMAKE_CXX_CREATE_STATIC_LIBRARY ${CMAKE_C_CREATE_STATIC_LIBRARY})
+
+
+# old CMake internally used OpenWatcom version macros
+# for backward compatibility
+if(NOT _CMAKE_WATCOM_VERSION)
+  set(_CMAKE_WATCOM_VERSION 1)
+  if(CMAKE_C_COMPILER_VERSION)
+    set(_compiler_version ${CMAKE_C_COMPILER_VERSION})
+    set(_compiler_id ${CMAKE_C_COMPILER_ID})
+  else()
+    set(_compiler_version ${CMAKE_CXX_COMPILER_VERSION})
+    set(_compiler_id ${CMAKE_CXX_COMPILER_ID})
+  endif()
+  set(WATCOM16)
+  set(WATCOM17)
+  set(WATCOM18)
+  set(WATCOM19)
+  if("${_compiler_id}" STREQUAL "OpenWatcom")
+    if("${_compiler_version}" VERSION_LESS 1.7)
+      set(WATCOM16 1)
+    endif()
+    if("${_compiler_version}" VERSION_EQUAL 1.7)
+      set(WATCOM17 1)
+    endif()
+    if("${_compiler_version}" VERSION_EQUAL 1.8)
+      set(WATCOM18 1)
+    endif()
+    if("${_compiler_version}" VERSION_EQUAL 1.9)
+      set(WATCOM19 1)
+    endif()
+  endif()
+endif()
diff --git a/share/cmake-3.18/Modules/Compiler/PGI-C.cmake b/share/cmake-3.22/Modules/Compiler/PGI-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/PGI-C.cmake
rename to share/cmake-3.22/Modules/Compiler/PGI-C.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/PGI-CXX.cmake b/share/cmake-3.22/Modules/Compiler/PGI-CXX.cmake
new file mode 100644
index 0000000..1279c19
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/PGI-CXX.cmake
@@ -0,0 +1,28 @@
+include(Compiler/PGI)
+__compiler_pgi(CXX)
+string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -DNDEBUG")
+
+if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 12.10)
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION --gnu_extensions)
+  set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
+  if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.10)
+    set(CMAKE_CXX98_STANDARD_COMPILE_OPTION --c++03)
+    set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION --c++03 --gnu_extensions)
+    set(CMAKE_CXX11_STANDARD_COMPILE_OPTION  --c++11)
+    set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION --c++11 --gnu_extensions)
+    set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
+    if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 15.7)
+      set(CMAKE_CXX14_STANDARD_COMPILE_OPTION  --c++14)
+      set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION --c++14 --gnu_extensions)
+      set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
+      if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 17.1)
+        set(CMAKE_CXX17_STANDARD_COMPILE_OPTION  --c++17)
+        set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION --c++17 --gnu_extensions)
+      endif()
+    endif()
+  endif()
+endif()
+
+__compiler_check_default_language_standard(CXX 12.10 98)
diff --git a/share/cmake-3.18/Modules/Compiler/PGI-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/PGI-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/PGI-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/PGI-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/PGI-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/PGI-Fortran.cmake
rename to share/cmake-3.22/Modules/Compiler/PGI-Fortran.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/PGI.cmake b/share/cmake-3.22/Modules/Compiler/PGI.cmake
new file mode 100644
index 0000000..d111be9
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/PGI.cmake
@@ -0,0 +1,42 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__COMPILER_PGI)
+  return()
+endif()
+set(__COMPILER_PGI 1)
+
+include(Compiler/CMakeCommonCompilerMacros)
+
+macro(__compiler_pgi lang)
+  # Feature flags.
+  set(CMAKE_${lang}_VERBOSE_FLAG "-v")
+
+  # Initial configuration flags.
+  string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
+  string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g -O0")
+  string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -O2 -s")
+  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -fast -O3")
+  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -gopt")
+
+  if(CMAKE_HOST_WIN32)
+    string(APPEND CMAKE_${lang}_FLAGS_INIT " -Bdynamic")
+  endif()
+
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Wl,")
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP ",")
+
+  set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
+  if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL ppc64le AND (NOT CMAKE_HOST_WIN32 OR CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 16.3))
+    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-Mipa=fast,inline")
+  else()
+    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER NO)
+  endif()
+
+  # Preprocessing and assembly rules.
+  set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
+  set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
+endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/PathScale-C.cmake b/share/cmake-3.22/Modules/Compiler/PathScale-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/PathScale-C.cmake
rename to share/cmake-3.22/Modules/Compiler/PathScale-C.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/PathScale-CXX.cmake b/share/cmake-3.22/Modules/Compiler/PathScale-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/PathScale-CXX.cmake
rename to share/cmake-3.22/Modules/Compiler/PathScale-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/PathScale-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/PathScale-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/PathScale-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/PathScale-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/PathScale-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/PathScale-Fortran.cmake
rename to share/cmake-3.22/Modules/Compiler/PathScale-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/PathScale.cmake b/share/cmake-3.22/Modules/Compiler/PathScale.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/PathScale.cmake
rename to share/cmake-3.22/Modules/Compiler/PathScale.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/QCC-ASM.cmake b/share/cmake-3.22/Modules/Compiler/QCC-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/QCC-ASM.cmake
rename to share/cmake-3.22/Modules/Compiler/QCC-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/QCC-C-FeatureTests.cmake b/share/cmake-3.22/Modules/Compiler/QCC-C-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/QCC-C-FeatureTests.cmake
rename to share/cmake-3.22/Modules/Compiler/QCC-C-FeatureTests.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/QCC-C.cmake b/share/cmake-3.22/Modules/Compiler/QCC-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/QCC-C.cmake
rename to share/cmake-3.22/Modules/Compiler/QCC-C.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/QCC-CXX-FeatureTests.cmake b/share/cmake-3.22/Modules/Compiler/QCC-CXX-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/QCC-CXX-FeatureTests.cmake
rename to share/cmake-3.22/Modules/Compiler/QCC-CXX-FeatureTests.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/QCC-CXX.cmake b/share/cmake-3.22/Modules/Compiler/QCC-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/QCC-CXX.cmake
rename to share/cmake-3.22/Modules/Compiler/QCC-CXX.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/QCC.cmake b/share/cmake-3.22/Modules/Compiler/QCC.cmake
new file mode 100644
index 0000000..7fbfd10
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/QCC.cmake
@@ -0,0 +1,37 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+include(Compiler/GNU)
+
+macro(__compiler_qcc lang)
+  __compiler_gnu(${lang})
+
+  # http://www.qnx.com/developers/docs/6.4.0/neutrino/utilities/q/qcc.html#examples
+  set(CMAKE_${lang}_COMPILE_OPTIONS_TARGET "-V")
+
+  set(CMAKE_PREFIX_LIBRARY_ARCHITECTURE "ON")
+
+  set(CMAKE_${lang}_COMPILE_OPTIONS_SYSROOT "-Wc,-isysroot,")
+  set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-Wp,-isystem,")
+  set(CMAKE_DEPFILE_FLAGS_${lang} "-Wp,-MD,<DEP_FILE> -Wp,-MT,<DEP_TARGET> -Wp,-MF,<DEP_FILE>")
+
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Wl,")
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP ",")
+
+  set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE NO)
+  set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER NO)
+
+  set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}")
+  if(CMAKE_${lang}_COMPILER_ARG1)
+    separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}")
+    list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS})
+    unset(_COMPILER_ARGS)
+  endif()
+  list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-Wp,-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp")
+
+  unset(CMAKE_${lang}_COMPILE_OPTIONS_IPO)
+  unset(CMAKE_${lang}_ARCHIVE_CREATE_IPO)
+  unset(CMAKE_${lang}_ARCHIVE_APPEND_IPO)
+  unset(CMAKE_${lang}_ARCHIVE_FINISH_IPO)
+endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/SCO-C.cmake b/share/cmake-3.22/Modules/Compiler/SCO-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/SCO-C.cmake
rename to share/cmake-3.22/Modules/Compiler/SCO-C.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/SCO-CXX.cmake b/share/cmake-3.22/Modules/Compiler/SCO-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/SCO-CXX.cmake
rename to share/cmake-3.22/Modules/Compiler/SCO-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/SCO-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/SCO-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/SCO-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/SCO.cmake b/share/cmake-3.22/Modules/Compiler/SCO.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/SCO.cmake
rename to share/cmake-3.22/Modules/Compiler/SCO.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/SDCC-C-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/SDCC-C-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/SDCC-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/SunPro-ASM.cmake b/share/cmake-3.22/Modules/Compiler/SunPro-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/SunPro-ASM.cmake
rename to share/cmake-3.22/Modules/Compiler/SunPro-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/SunPro-C-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/SunPro-C-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/SunPro-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/SunPro-C-FeatureTests.cmake b/share/cmake-3.22/Modules/Compiler/SunPro-C-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/SunPro-C-FeatureTests.cmake
rename to share/cmake-3.22/Modules/Compiler/SunPro-C-FeatureTests.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/SunPro-C.cmake b/share/cmake-3.22/Modules/Compiler/SunPro-C.cmake
new file mode 100644
index 0000000..c98656f
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/SunPro-C.cmake
@@ -0,0 +1,59 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+include(Compiler/SunPro)
+
+set(CMAKE_C_VERBOSE_FLAG "-#")
+
+set(CMAKE_C_COMPILE_OPTIONS_PIC -KPIC)
+set(CMAKE_C_COMPILE_OPTIONS_PIE "")
+set(_CMAKE_C_PIE_MAY_BE_SUPPORTED_BY_LINKER NO)
+set(CMAKE_C_LINK_OPTIONS_PIE "")
+set(CMAKE_C_LINK_OPTIONS_NO_PIE "")
+set(CMAKE_SHARED_LIBRARY_C_FLAGS "-KPIC")
+set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-G")
+set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-R")
+set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":")
+set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-h")
+
+string(APPEND CMAKE_C_FLAGS_INIT " ")
+string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " -g")
+string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -xO2 -xspace -DNDEBUG")
+string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -xO3 -DNDEBUG")
+string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -g -xO2 -DNDEBUG")
+
+set(CMAKE_DEPFILE_FLAGS_C "-xMD -xMF <DEP_FILE>")
+
+# Initialize C link type selection flags.  These flags are used when
+# building a shared library, shared module, or executable that links
+# to other libraries to select whether to use the static or shared
+# versions of the libraries.
+foreach(type SHARED_LIBRARY SHARED_MODULE EXE)
+  set(CMAKE_${type}_LINK_STATIC_C_FLAGS "-Bstatic")
+  set(CMAKE_${type}_LINK_DYNAMIC_C_FLAGS "-Bdynamic")
+endforeach()
+
+set(CMAKE_C_LINKER_WRAPPER_FLAG "-Qoption" "ld" " ")
+set(CMAKE_C_LINKER_WRAPPER_FLAG_SEP ",")
+
+if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 5.13)
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c89")
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=c89")
+  set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
+  set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=c99")
+  set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
+  set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
+  set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=c11")
+  set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
+elseif (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 5.11)
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "")
+  set(CMAKE_C99_STANDARD_COMPILE_OPTION "-xc99")
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-xc99")
+endif()
+
+__compiler_check_default_language_standard(C 5.11 90 5.14 11)
+
+set(CMAKE_C_CREATE_PREPROCESSED_SOURCE "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
+set(CMAKE_C_CREATE_ASSEMBLY_SOURCE "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
diff --git a/share/cmake-3.18/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/SunPro-CXX-FeatureTests.cmake b/share/cmake-3.22/Modules/Compiler/SunPro-CXX-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/SunPro-CXX-FeatureTests.cmake
rename to share/cmake-3.22/Modules/Compiler/SunPro-CXX-FeatureTests.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/SunPro-CXX.cmake b/share/cmake-3.22/Modules/Compiler/SunPro-CXX.cmake
new file mode 100644
index 0000000..aa8a9c5
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/SunPro-CXX.cmake
@@ -0,0 +1,66 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+include(Compiler/SunPro)
+
+set(CMAKE_CXX_VERBOSE_FLAG "-v")
+
+set(CMAKE_CXX_COMPILE_OPTIONS_PIC -KPIC)
+set(CMAKE_CXX_COMPILE_OPTIONS_PIE "")
+set(_CMAKE_CXX_PIE_MAY_BE_SUPPORTED_BY_LINKER NO)
+set(CMAKE_CXX_LINK_OPTIONS_PIE "")
+set(CMAKE_CXX_LINK_OPTIONS_NO_PIE "")
+set(CMAKE_SHARED_LIBRARY_CXX_FLAGS "-KPIC")
+set(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-G")
+set(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG "-R")
+set(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG_SEP ":")
+set(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-h")
+
+string(APPEND CMAKE_CXX_FLAGS_INIT " ")
+string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " -g")
+string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -xO2 -xspace -DNDEBUG")
+string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -xO3 -DNDEBUG")
+string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT " -g -xO2 -DNDEBUG")
+
+set(CMAKE_DEPFILE_FLAGS_CXX "-xMD -xMF <DEP_FILE>")
+
+# Initialize C link type selection flags.  These flags are used when
+# building a shared library, shared module, or executable that links
+# to other libraries to select whether to use the static or shared
+# versions of the libraries.
+foreach(type SHARED_LIBRARY SHARED_MODULE EXE)
+  set(CMAKE_${type}_LINK_STATIC_CXX_FLAGS "-Bstatic")
+  set(CMAKE_${type}_LINK_DYNAMIC_CXX_FLAGS "-Bdynamic")
+endforeach()
+
+set(CMAKE_CXX_LINKER_WRAPPER_FLAG "-Qoption" "ld" " ")
+set(CMAKE_CXX_LINKER_WRAPPER_FLAG_SEP ",")
+
+set(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
+set(CMAKE_CXX_CREATE_ASSEMBLY_SOURCE "<CMAKE_CXX_COMPILER> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
+
+# Create archives with "CC -xar" in case user adds "-instances=extern"
+# so that template instantiations are available to archive members.
+set(CMAKE_CXX_CREATE_STATIC_LIBRARY
+  "<CMAKE_CXX_COMPILER> -xar -o <TARGET> <OBJECTS> "
+  "<CMAKE_RANLIB> <TARGET> ")
+
+if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.13)
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++03")
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=c++03")
+  set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
+  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
+  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=c++11")
+  set(CMAKE_CXX_LINK_WITH_STANDARD_COMPILE_OPTION 1)
+
+  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.14)
+    set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
+    set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=c++14")
+  endif()
+else()
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-library=stlport4")
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-library=stlport4")
+  set(CMAKE_CXX_LINK_WITH_STANDARD_COMPILE_OPTION 1)
+endif()
+
+__compiler_check_default_language_standard(CXX 1 98)
diff --git a/share/cmake-3.18/Modules/Compiler/SunPro-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/SunPro-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/SunPro-Fortran.cmake
rename to share/cmake-3.22/Modules/Compiler/SunPro-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/SunPro.cmake b/share/cmake-3.22/Modules/Compiler/SunPro.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/SunPro.cmake
rename to share/cmake-3.22/Modules/Compiler/SunPro.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/TI-ASM.cmake b/share/cmake-3.22/Modules/Compiler/TI-ASM.cmake
new file mode 100644
index 0000000..01965d2
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/TI-ASM.cmake
@@ -0,0 +1,4 @@
+include(Compiler/TI)
+__compiler_ti(ASM)
+
+set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS asm;s;abs)
diff --git a/share/cmake-3.22/Modules/Compiler/TI-C.cmake b/share/cmake-3.22/Modules/Compiler/TI-C.cmake
new file mode 100644
index 0000000..bd88989
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/TI-C.cmake
@@ -0,0 +1,67 @@
+include(Compiler/TI)
+__compiler_ti(C)
+
+# Architecture specific
+# C99 versions: https://processors.wiki.ti.com/index.php/C99_Support_in_TI_Compilers
+
+if("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM")
+  set(__COMPILER_TI_C99_VERSION_ARM 5.2)
+  set(__COMPILER_TI_C11_VERSION_ARM 18.12)
+
+elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "MSP430")
+  set(__COMPILER_TI_C99_VERSION_MSP430 4.3)
+  set(__COMPILER_TI_C11_VERSION_MSP430 18.12)
+
+elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "TMS320C28x")
+  set(__COMPILER_TI_C99_VERSION_TMS320C28x 6.3)
+  set(__COMPILER_TI_C11_VERSION_TMS320C28x 18.9)
+
+elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "TMS320C6x")
+  set(__COMPILER_TI_C99_VERSION_TMS320C6x 7.5)
+
+else()
+  # architecture not handled
+  return()
+
+endif()
+
+
+if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "${__COMPILER_TI_C99_VERSION_${CMAKE_C_COMPILER_ARCHITECTURE_ID}}")
+
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION "--c89" "--strict_ansi")
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "--c89" "--relaxed_ansi")
+
+  set(CMAKE_C99_STANDARD_COMPILE_OPTION "--c99" "--strict_ansi")
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "--c99" "--relaxed_ansi")
+
+  if(DEFINED __COMPILER_TI_C11_VERSION_${CMAKE_C_COMPILER_ARCHITECTURE_ID} AND
+     CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "${__COMPILER_TI_C11_VERSION_${CMAKE_C_COMPILER_ARCHITECTURE_ID}}")
+
+    set(CMAKE_C11_STANDARD_COMPILE_OPTION "--c11" "--strict_ansi")
+    set(CMAKE_C11_EXTENSION_COMPILE_OPTION "--c11" "--relaxed_ansi")
+
+  endif()
+
+else()
+
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION "--strict_ansi")
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "--relaxed_ansi")
+
+endif()
+
+
+# Architecture specific
+
+if("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM")
+  __compiler_check_default_language_standard(C 2.0 90)
+
+elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "MSP430")
+  __compiler_check_default_language_standard(C 3.0 90)
+
+elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "TMS320C28x")
+  __compiler_check_default_language_standard(C 4.1 90)
+
+elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "TMS320C6x")
+  __compiler_check_default_language_standard(C 4.45 90)
+
+endif()
diff --git a/share/cmake-3.22/Modules/Compiler/TI-CXX.cmake b/share/cmake-3.22/Modules/Compiler/TI-CXX.cmake
new file mode 100644
index 0000000..4b6efcd
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/TI-CXX.cmake
@@ -0,0 +1,71 @@
+include(Compiler/TI)
+__compiler_ti(CXX)
+
+# Architecture specific
+
+if("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM")
+  set(__COMPILER_TI_CXX03_VERSION 5.2)
+  set(__COMPILER_TI_CXX14_VERSION 18.1)
+
+elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "MSP430")
+  set(__COMPILER_TI_CXX03_VERSION 4.4)
+  set(__COMPILER_TI_CXX14_VERSION 18.1)
+
+elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "TMS320C28x")
+  set(__COMPILER_TI_CXX03_VERSION 16.9)
+
+elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "TMS320C6x")
+  set(__COMPILER_TI_CXX03_VERSION 8.1)
+  set(__COMPILER_TI_CXX14_VERSION 8.3)
+
+else()
+  # architecture not handled
+  return()
+
+endif()
+
+
+if(DEFINED __COMPILER_TI_CXX14_VERSION AND
+   CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "${__COMPILER_TI_CXX14_VERSION}")
+
+  # C++03 is not supported anymore
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION  "--strict_ansi")
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "--relaxed_ansi")
+
+  # C++11 was never supported
+  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "--strict_ansi")
+  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "--relaxed_ansi")
+
+  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "--c++14" "--strict_ansi")
+  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "--c++14" "--relaxed_ansi")
+
+
+elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "${__COMPILER_TI_CXX03_VERSION}")
+
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "--c++03" "--strict_ansi")
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "--c++03" "--relaxed_ansi")
+
+else()
+
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION  "--strict_ansi")
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "--relaxed_ansi")
+
+endif()
+
+
+# Architecture specific
+# CXX98 versions: https://processors.wiki.ti.com/index.php/C%2B%2B_Support_in_TI_Compilers
+
+if("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM")
+  __compiler_check_default_language_standard(CXX 4.5 98 ${__COMPILER_TI_CXX14_VERSION} 14)
+
+elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "MSP430")
+  __compiler_check_default_language_standard(CXX 3.0 98 ${__COMPILER_TI_CXX14_VERSION} 14)
+
+elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "TMS320C28x")
+  __compiler_check_default_language_standard(CXX 5.1 98)
+
+elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "TMS320C6x")
+  __compiler_check_default_language_standard(CXX 6.1 98 ${__COMPILER_TI_CXX14_VERSION} 14)
+
+endif()
diff --git a/share/cmake-3.18/Modules/Compiler/TI-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/TI-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/TI-DetermineCompiler.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/TI.cmake b/share/cmake-3.22/Modules/Compiler/TI.cmake
new file mode 100644
index 0000000..0f9ded3
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/TI.cmake
@@ -0,0 +1,40 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__COMPILER_TI)
+  return()
+endif()
+set(__COMPILER_TI 1)
+
+include(Compiler/CMakeCommonCompilerMacros)
+
+set(__COMPILER_TI_SOURCE_FLAG_C   "--c_file")
+set(__COMPILER_TI_SOURCE_FLAG_CXX "--cpp_file")
+set(__COMPILER_TI_SOURCE_FLAG_ASM "--asm_file")
+
+macro(__compiler_ti lang)
+  set(CMAKE_${lang}_RESPONSE_FILE_FLAG "--cmd_file=")
+  # Using --cmd_file flag is not possible after the --run_linker flag.
+  # By using a whitespace only the filename is used without flag.
+  # That file is interpreted as linker command file which may contain files to link.
+  set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG " ")
+
+  set(CMAKE_INCLUDE_FLAG_${lang} "--include_path=")
+  set(CMAKE_DEPFILE_FLAGS_${lang} "--preproc_with_compile --preproc_dependency=<DEP_FILE>")
+
+  set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> --preproc_only ${__COMPILER_TI_SOURCE_FLAG_${lang}}=<SOURCE> <DEFINES> <INCLUDES> <FLAGS> --output_file=<PREPROCESSED_SOURCE>")
+  set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE     "<CMAKE_${lang}_COMPILER> --compile_only --skip_assembler ${__COMPILER_TI_SOURCE_FLAG_${lang}}=<SOURCE> <DEFINES> <INCLUDES> <FLAGS> --output_file=<ASSEMBLY_SOURCE>")
+
+  set(CMAKE_${lang}_COMPILE_OBJECT  "<CMAKE_${lang}_COMPILER> --compile_only ${__COMPILER_TI_SOURCE_FLAG_${lang}}=<SOURCE> <DEFINES> <INCLUDES> <FLAGS> --output_file=<OBJECT>")
+
+  set(CMAKE_${lang}_ARCHIVE_CREATE "<CMAKE_AR> qr <TARGET> <OBJECTS>")
+  set(CMAKE_${lang}_ARCHIVE_APPEND "<CMAKE_AR> qa <TARGET> <OBJECTS>")
+  set(CMAKE_${lang}_ARCHIVE_FINISH "")
+
+  set(CMAKE_${lang}_LINK_EXECUTABLE "<CMAKE_${lang}_COMPILER> <FLAGS> --run_linker --output_file=<TARGET> --map_file=<TARGET_NAME>.map <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> <LINK_LIBRARIES>")
+endmacro()
+
+set(CMAKE_LIBRARY_PATH_FLAG "--search_path=")
+set(CMAKE_LINK_LIBRARY_FLAG "--library=")
diff --git a/share/cmake-3.18/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/TinyCC-C.cmake b/share/cmake-3.22/Modules/Compiler/TinyCC-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/TinyCC-C.cmake
rename to share/cmake-3.22/Modules/Compiler/TinyCC-C.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/VisualAge-C.cmake b/share/cmake-3.22/Modules/Compiler/VisualAge-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/VisualAge-C.cmake
rename to share/cmake-3.22/Modules/Compiler/VisualAge-C.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/VisualAge-CXX.cmake b/share/cmake-3.22/Modules/Compiler/VisualAge-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/VisualAge-CXX.cmake
rename to share/cmake-3.22/Modules/Compiler/VisualAge-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/VisualAge-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/VisualAge-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/VisualAge-Fortran.cmake
rename to share/cmake-3.22/Modules/Compiler/VisualAge-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/Watcom-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/Watcom-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/Watcom-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/XL-ASM.cmake b/share/cmake-3.22/Modules/Compiler/XL-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/XL-ASM.cmake
rename to share/cmake-3.22/Modules/Compiler/XL-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/XL-C-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/XL-C-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/XL-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/XL-C.cmake b/share/cmake-3.22/Modules/Compiler/XL-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/XL-C.cmake
rename to share/cmake-3.22/Modules/Compiler/XL-C.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/XL-CXX-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/XL-CXX-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/XL-CXX-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/XL-CXX.cmake b/share/cmake-3.22/Modules/Compiler/XL-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/XL-CXX.cmake
rename to share/cmake-3.22/Modules/Compiler/XL-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/XL-Fortran.cmake b/share/cmake-3.22/Modules/Compiler/XL-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/XL-Fortran.cmake
rename to share/cmake-3.22/Modules/Compiler/XL-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/XL-Fortran/cpp b/share/cmake-3.22/Modules/Compiler/XL-Fortran/cpp
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/XL-Fortran/cpp
rename to share/cmake-3.22/Modules/Compiler/XL-Fortran/cpp
diff --git a/share/cmake-3.22/Modules/Compiler/XL.cmake b/share/cmake-3.22/Modules/Compiler/XL.cmake
new file mode 100644
index 0000000..8b9d4a9
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/XL.cmake
@@ -0,0 +1,34 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__COMPILER_XL)
+  return()
+endif()
+set(__COMPILER_XL 1)
+
+include(Compiler/CMakeCommonCompilerMacros)
+
+macro(__compiler_xl lang)
+  # Feature flags.
+  set(CMAKE_${lang}_VERBOSE_FLAG "-V")
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-qpic")
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-qpic")
+  set(CMAKE_${lang}_RESPONSE_FILE_FLAG "-qoptfile=")
+  set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "-qoptfile=")
+
+  set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-qmkshrobj")
+
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Wl,")
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP ",")
+
+  string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g")
+  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O")
+  string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -O")
+  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -g")
+  set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
+  set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE     "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
+
+  set(CMAKE_DEPFILE_FLAGS_${lang} "-MF <DEP_FILE> -qmakedep=gcc")
+endmacro()
diff --git a/share/cmake-3.18/Modules/Compiler/XLClang-C-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/XLClang-C-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/XLClang-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/XLClang-C.cmake b/share/cmake-3.22/Modules/Compiler/XLClang-C.cmake
new file mode 100644
index 0000000..1668a4d
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/XLClang-C.cmake
@@ -0,0 +1,22 @@
+include(Compiler/XLClang)
+__compiler_xlclang(C)
+
+set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
+
+if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.1)
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION  "-std=c89")
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu89")
+  set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
+  set(CMAKE_C99_STANDARD_COMPILE_OPTION  "-std=c99")
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
+  set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
+  set(CMAKE_C11_STANDARD_COMPILE_OPTION  "-qlanglvl=extc1x")
+  set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-qlanglvl=extc1x")
+  if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.2)
+    set(CMAKE_C11_STANDARD_COMPILE_OPTION  "-std=c11")
+    set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
+    set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
+  endif ()
+endif()
+
+__compiler_check_default_language_standard(C 13.1.1 99)
diff --git a/share/cmake-3.18/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake
diff --git a/share/cmake-3.22/Modules/Compiler/XLClang-CXX.cmake b/share/cmake-3.22/Modules/Compiler/XLClang-CXX.cmake
new file mode 100644
index 0000000..02638c7
--- /dev/null
+++ b/share/cmake-3.22/Modules/Compiler/XLClang-CXX.cmake
@@ -0,0 +1,29 @@
+include(Compiler/XLClang)
+__compiler_xlclang(CXX)
+
+set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
+
+if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.1)
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION  "")
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "")
+  set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
+  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION  "-qlanglvl=extended0x")
+  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-qlanglvl=extended0x")
+  set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
+  if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.2)
+    set(CMAKE_CXX11_STANDARD_COMPILE_OPTION  "-std=c++11")
+    set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
+    set(CMAKE_CXX14_STANDARD_COMPILE_OPTION  "-std=c++1y")
+    set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
+    set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
+  endif ()
+  if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.1.0)
+    set(CMAKE_CXX14_STANDARD_COMPILE_OPTION  "-std=c++14")
+    set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
+  endif()
+endif()
+
+__compiler_check_default_language_standard(CXX 13.1.1 98)
+
+set(CMAKE_CXX_COMPILE_OBJECT
+  "<CMAKE_CXX_COMPILER> -x c++ <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
diff --git a/share/cmake-3.18/Modules/Compiler/XLClang.cmake b/share/cmake-3.22/Modules/Compiler/XLClang.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/XLClang.cmake
rename to share/cmake-3.22/Modules/Compiler/XLClang.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/zOS-C-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/zOS-C-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/zOS-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake b/share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake
rename to share/cmake-3.22/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake
diff --git a/share/cmake-3.18/Modules/CompilerId/GHS_default.gpj.in b/share/cmake-3.22/Modules/CompilerId/GHS_default.gpj.in
similarity index 100%
rename from share/cmake-3.18/Modules/CompilerId/GHS_default.gpj.in
rename to share/cmake-3.22/Modules/CompilerId/GHS_default.gpj.in
diff --git a/share/cmake-3.18/Modules/CompilerId/GHS_lib.gpj.in b/share/cmake-3.22/Modules/CompilerId/GHS_lib.gpj.in
similarity index 100%
rename from share/cmake-3.18/Modules/CompilerId/GHS_lib.gpj.in
rename to share/cmake-3.22/Modules/CompilerId/GHS_lib.gpj.in
diff --git a/share/cmake-3.22/Modules/CompilerId/VS-10.csproj.in b/share/cmake-3.22/Modules/CompilerId/VS-10.csproj.in
new file mode 100644
index 0000000..fba74ff
--- /dev/null
+++ b/share/cmake-3.22/Modules/CompilerId/VS-10.csproj.in
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{CAE07175-D007-4FC3-BFE8-47B392814159}</ProjectGuid>
+    <RootNamespace>CompilerId@id_lang@</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+    @id_system@
+    @id_system_version@
+    @id_TargetFrameworkVersion@
+    @id_TargetFrameworkIdentifier@
+    @id_TargetFrameworkTargetsVersion@
+    @id_WindowsTargetPlatformVersion@
+    @id_WindowsSDKDesktopARMSupport@
+  </PropertyGroup>
+  <PropertyGroup>
+    @id_PreferredToolArchitecture@
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@id_platform@'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    @id_toolset@
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <!-- ============================================================ -->
+  <!-- ==                set preprocessor definitions            == -->
+  <!-- ============================================================ -->
+  <PropertyGroup>
+    <DefineConstants></DefineConstants>
+    <UnknownValue>Unknown</UnknownValue>
+  </PropertyGroup>
+  <!-- Platform -->
+  <PropertyGroup Condition="'$(Platform)'!=''">
+    <DefineConstants>$(DefineConstants);Platform$(Platform)</DefineConstants>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Platform)'==''">
+    <DefineConstants>$(DefineConstants);Platform$(UnknownValue)</DefineConstants>
+  </PropertyGroup>
+  <!-- PlatformToolset -->
+  <PropertyGroup Condition="'$(PlatformToolset)'!=''">
+    <DefineConstants>$(DefineConstants);PlatformToolset$(PlatformToolset)</DefineConstants>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(PlatformToolset)'==''">
+    <DefineConstants>$(DefineConstants);PlatformToolset$(UnknownValue)</DefineConstants>
+  </PropertyGroup>
+  <!-- ============================================================ -->
+  <PropertyGroup>
+    <OutputPath Condition="'$(Configuration)|$(Platform)'=='Debug|@id_platform@'">.\</OutputPath>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="@id_src@" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PostBuildEvent>if not "$(RoslynTargetsPath)"=="" if exist "$(RoslynTargetsPath)\@id_cl@" set _CSC=$(RoslynTargetsPath)
+if exist "$(MSBuildToolsPath)\@id_cl@" set _CSC=$(MSBuildToolsPath)
+if "%_CSC%"=="" exit -1
+%40echo CMAKE_@id_lang@_COMPILER=%_CSC%\@id_cl@</PostBuildEvent>
+  </PropertyGroup>
+</Project>
diff --git a/share/cmake-3.22/Modules/CompilerId/VS-10.vcxproj.in b/share/cmake-3.22/Modules/CompilerId/VS-10.vcxproj.in
new file mode 100644
index 0000000..3598fc7
--- /dev/null
+++ b/share/cmake-3.22/Modules/CompilerId/VS-10.vcxproj.in
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|@id_platform@">
+      <Configuration>Debug</Configuration>
+      <Platform>@id_platform@</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{CAE07175-D007-4FC3-BFE8-47B392814159}</ProjectGuid>
+    <RootNamespace>CompilerId@id_lang@</RootNamespace>
+    <Keyword>@id_keyword@</Keyword>
+    @id_system@
+    @id_system_version@
+    @id_WindowsTargetPlatformVersion@
+    @id_WindowsSDKDesktopARMSupport@
+    @id_CudaToolkitCustomDir@
+    @id_ToolsetVCTargetsDir@
+    @id_CustomGlobals@
+  </PropertyGroup>
+  @id_toolset_version_props@
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup>
+    @id_PreferredToolArchitecture@
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@id_platform@'" Label="Configuration">
+    <ConfigurationType>@id_config_type@</ConfigurationType>
+    @id_toolset@
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+    @id_Import_props@
+  </ImportGroup>
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|@id_platform@'">.\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|@id_platform@'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|@id_platform@'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@id_platform@'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>false</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>TurnOffAllWarnings</WarningLevel>
+      <DebugInformationFormat>
+      </DebugInformationFormat>
+    </ClCompile>
+    @id_ItemDefinitionGroup_entry@
+    <Link>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      @id_Link_AdditionalDependencies@
+    </Link>
+    <PostBuildEvent>
+      <Command>@id_PostBuildEvent_Command@</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <@id_compile@ Include="@id_src@" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+    @id_Import_targets@
+  </ImportGroup>
+</Project>
diff --git a/share/cmake-3.18/Modules/CompilerId/VS-7.vcproj.in b/share/cmake-3.22/Modules/CompilerId/VS-7.vcproj.in
similarity index 100%
rename from share/cmake-3.18/Modules/CompilerId/VS-7.vcproj.in
rename to share/cmake-3.22/Modules/CompilerId/VS-7.vcproj.in
diff --git a/share/cmake-3.18/Modules/CompilerId/VS-Intel.vfproj.in b/share/cmake-3.22/Modules/CompilerId/VS-Intel.vfproj.in
similarity index 100%
rename from share/cmake-3.18/Modules/CompilerId/VS-Intel.vfproj.in
rename to share/cmake-3.22/Modules/CompilerId/VS-Intel.vfproj.in
diff --git a/share/cmake-3.18/Modules/CompilerId/VS-NsightTegra.vcxproj.in b/share/cmake-3.22/Modules/CompilerId/VS-NsightTegra.vcxproj.in
similarity index 100%
rename from share/cmake-3.18/Modules/CompilerId/VS-NsightTegra.vcxproj.in
rename to share/cmake-3.22/Modules/CompilerId/VS-NsightTegra.vcxproj.in
diff --git a/share/cmake-3.22/Modules/CompilerId/Xcode-3.pbxproj.in b/share/cmake-3.22/Modules/CompilerId/Xcode-3.pbxproj.in
new file mode 100644
index 0000000..aab357a
--- /dev/null
+++ b/share/cmake-3.22/Modules/CompilerId/Xcode-3.pbxproj.in
@@ -0,0 +1,114 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 45;
+	objects = {
+
+		2C18F0B615DC1E0300593670 = {isa = PBXBuildFile; fileRef = 2C18F0B415DC1DC700593670; };
+		2C18F0B415DC1DC700593670 = {isa = PBXFileReference; fileEncoding = 4; explicitFileType = @id_type@; path = @id_src@; sourceTree = "<group>"; };
+		08FB7794FE84155DC02AAC07 = {
+			isa = PBXGroup;
+			children = (
+				2C18F0B415DC1DC700593670,
+			);
+			name = CompilerId@id_lang@;
+			sourceTree = "<group>";
+		};
+		8DD76FA90486AB0100D96B5E = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 1DEB928508733DD80010E9CD;
+			buildPhases = (
+				2C18F0B515DC1DCE00593670,
+				2C8FEB8E15DC1A1A00E56A5D,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = CompilerId@id_lang@;
+			productName = CompilerId@id_lang@;
+			productType = "@id_product_type@";
+		};
+		08FB7793FE84155DC02AAC07 = {
+			isa = PBXProject;
+			buildConfigurationList = 1DEB928908733DD80010E9CD;
+			compatibilityVersion = "Xcode 3.1";
+			developmentRegion = English;
+			hasScannedForEncodings = 1;
+			knownRegions = (
+				en,
+			);
+			mainGroup = 08FB7794FE84155DC02AAC07;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				8DD76FA90486AB0100D96B5E,
+			);
+		};
+		2C8FEB8E15DC1A1A00E56A5D = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "echo \"GCC_VERSION=$GCC_VERSION\" ; echo \"ARCHS=$ARCHS\"";
+			showEnvVarsInLog = 0;
+		};
+		2C18F0B515DC1DCE00593670 = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				2C18F0B615DC1E0300593670,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		1DEB928608733DD80010E9CD = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CODE_SIGN_IDENTITY = "";
+				PRODUCT_NAME = CompilerId@id_lang@;
+			};
+			name = Debug;
+		};
+		1DEB928A08733DD80010E9CD = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CODE_SIGNING_REQUIRED = NO;
+				CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)";
+				SYMROOT = .;
+				@id_archs@
+				@id_arch_active@
+				@id_toolset@
+				@id_lang_version@
+				@id_clang_cxx_library@
+				@id_deployment_target@
+				@id_sdkroot@
+			};
+			name = Debug;
+		};
+		1DEB928508733DD80010E9CD = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB928608733DD80010E9CD,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Debug;
+		};
+		1DEB928908733DD80010E9CD = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB928A08733DD80010E9CD,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Debug;
+		};
+	};
+	rootObject = 08FB7793FE84155DC02AAC07;
+}
diff --git a/share/cmake-3.18/Modules/CompilerId/main.swift.in b/share/cmake-3.22/Modules/CompilerId/main.swift.in
similarity index 100%
rename from share/cmake-3.18/Modules/CompilerId/main.swift.in
rename to share/cmake-3.22/Modules/CompilerId/main.swift.in
diff --git a/share/cmake-3.18/Modules/Dart.cmake b/share/cmake-3.22/Modules/Dart.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Dart.cmake
rename to share/cmake-3.22/Modules/Dart.cmake
diff --git a/share/cmake-3.22/Modules/DartConfiguration.tcl.in b/share/cmake-3.22/Modules/DartConfiguration.tcl.in
new file mode 100644
index 0000000..e5b1e5d
--- /dev/null
+++ b/share/cmake-3.22/Modules/DartConfiguration.tcl.in
@@ -0,0 +1,105 @@
+# This file is configured by CMake automatically as DartConfiguration.tcl
+# If you choose not to use CMake, this file may be hand configured, by
+# filling in the required variables.
+
+
+# Configuration directories and files
+SourceDirectory: @PROJECT_SOURCE_DIR@
+BuildDirectory: @PROJECT_BINARY_DIR@
+
+# Where to place the cost data store
+CostDataFile: @CTEST_COST_DATA_FILE@
+
+# Site is something like machine.domain, i.e. pragmatic.crd
+Site: @SITE@
+
+# Build name is osname-revision-compiler, i.e. Linux-2.4.2-2smp-c++
+BuildName: @BUILDNAME@
+
+# Subprojects
+LabelsForSubprojects: @CTEST_LABELS_FOR_SUBPROJECTS@
+
+# Submission information
+SubmitURL: @SUBMIT_URL@
+
+# Dashboard start time
+NightlyStartTime: @NIGHTLY_START_TIME@
+
+# Commands for the build/test/submit cycle
+ConfigureCommand: "@CMAKE_COMMAND@" "@PROJECT_SOURCE_DIR@"
+MakeCommand: @MAKECOMMAND@
+DefaultCTestConfigurationType: @DEFAULT_CTEST_CONFIGURATION_TYPE@
+
+# version control
+UpdateVersionOnly: @CTEST_UPDATE_VERSION_ONLY@
+
+# CVS options
+# Default is "-d -P -A"
+CVSCommand: @CVSCOMMAND@
+CVSUpdateOptions: @CVS_UPDATE_OPTIONS@
+
+# Subversion options
+SVNCommand: @SVNCOMMAND@
+SVNOptions: @CTEST_SVN_OPTIONS@
+SVNUpdateOptions: @SVN_UPDATE_OPTIONS@
+
+# Git options
+GITCommand: @GITCOMMAND@
+GITInitSubmodules: @CTEST_GIT_INIT_SUBMODULES@
+GITUpdateOptions: @GIT_UPDATE_OPTIONS@
+GITUpdateCustom: @CTEST_GIT_UPDATE_CUSTOM@
+
+# Perforce options
+P4Command: @P4COMMAND@
+P4Client: @CTEST_P4_CLIENT@
+P4Options: @CTEST_P4_OPTIONS@
+P4UpdateOptions: @CTEST_P4_UPDATE_OPTIONS@
+P4UpdateCustom: @CTEST_P4_UPDATE_CUSTOM@
+
+# Generic update command
+UpdateCommand: @UPDATE_COMMAND@
+UpdateOptions: @UPDATE_OPTIONS@
+UpdateType: @UPDATE_TYPE@
+
+# Compiler info
+Compiler: @CMAKE_CXX_COMPILER@
+CompilerVersion: @CMAKE_CXX_COMPILER_VERSION@
+
+# Dynamic analysis (MemCheck)
+PurifyCommand: @PURIFYCOMMAND@
+ValgrindCommand: @VALGRIND_COMMAND@
+ValgrindCommandOptions: @VALGRIND_COMMAND_OPTIONS@
+DrMemoryCommand: @DRMEMORY_COMMAND@
+DrMemoryCommandOptions: @DRMEMORY_COMMAND_OPTIONS@
+CudaSanitizerCommand: @CUDA_SANITIZER_COMMAND@
+CudaSanitizerCommandOptions: @CUDA_SANITIZER_COMMAND_OPTIONS@
+MemoryCheckType: @MEMORYCHECK_TYPE@
+MemoryCheckSanitizerOptions: @MEMORYCHECK_SANITIZER_OPTIONS@
+MemoryCheckCommand: @MEMORYCHECK_COMMAND@
+MemoryCheckCommandOptions: @MEMORYCHECK_COMMAND_OPTIONS@
+MemoryCheckSuppressionFile: @MEMORYCHECK_SUPPRESSIONS_FILE@
+
+# Coverage
+CoverageCommand: @COVERAGE_COMMAND@
+CoverageExtraFlags: @COVERAGE_EXTRA_FLAGS@
+
+# Testing options
+# TimeOut is the amount of time in seconds to wait for processes
+# to complete during testing.  After TimeOut seconds, the
+# process will be summarily terminated.
+# Currently set to 25 minutes
+TimeOut: @DART_TESTING_TIMEOUT@
+
+# During parallel testing CTest will not start a new test if doing
+# so would cause the system load to exceed this value.
+TestLoad: @CTEST_TEST_LOAD@
+
+UseLaunchers: @CTEST_USE_LAUNCHERS@
+CurlOptions: @CTEST_CURL_OPTIONS@
+# warning, if you add new options here that have to do with submit,
+# you have to update cmCTestSubmitCommand.cxx
+
+# For CTest submissions that timeout, these options
+# specify behavior for retrying the submission
+CTestSubmitRetryDelay: @CTEST_SUBMIT_RETRY_DELAY@
+CTestSubmitRetryCount: @CTEST_SUBMIT_RETRY_COUNT@
diff --git a/share/cmake-3.18/Modules/DeployQt4.cmake b/share/cmake-3.22/Modules/DeployQt4.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/DeployQt4.cmake
rename to share/cmake-3.22/Modules/DeployQt4.cmake
diff --git a/share/cmake-3.22/Modules/Documentation.cmake b/share/cmake-3.22/Modules/Documentation.cmake
new file mode 100644
index 0000000..2430f85
--- /dev/null
+++ b/share/cmake-3.22/Modules/Documentation.cmake
@@ -0,0 +1,77 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+Documentation
+-------------
+
+.. deprecated:: 3.18
+  This module does nothing, unless policy :policy:`CMP0106` is set to ``OLD``.
+
+This module provides support for the VTK documentation framework.  It
+relies on several tools (Doxygen, Perl, etc).
+#]=======================================================================]
+
+cmake_policy(GET CMP0106 _Documentation_policy)
+
+if (_Documentation_policy STREQUAL "NEW")
+  message(FATAL_ERROR
+    "Documentation.cmake is VTK-specific code and should not be used in "
+    "non-VTK projects. This logic in this module is best shipped with the "
+    "project using it rather than with CMake. This is now an error according "
+    "to policy CMP0106.")
+else ()
+
+if (_Documentation_policy STREQUAL "")
+  # Ignore the warning if the project is detected as VTK itself.
+  if (NOT CMAKE_PROJECT_NAME STREQUAL "VTK" AND
+      NOT PROJECT_NAME STREQUAL "VTK")
+    cmake_policy(GET_WARNING CMP0106 _Documentation_policy_warning)
+    message(AUTHOR_WARNING
+      "${_Documentation_policy_warning}\n"
+      "Documentation.cmake is VTK-specific code and should not be used in "
+      "non-VTK projects. This logic in this module is best shipped with the "
+      "project using it rather than with CMake.")
+  endif ()
+  unset(_Documentation_policy_warning)
+endif ()
+
+#
+# Build the documentation ?
+#
+option(BUILD_DOCUMENTATION "Build the documentation (Doxygen)." OFF)
+mark_as_advanced(BUILD_DOCUMENTATION)
+
+if (BUILD_DOCUMENTATION)
+
+  #
+  # Check for the tools
+  #
+  find_package(UnixCommands)
+  find_package(Doxygen)
+  find_package(Gnuplot)
+  find_package(HTMLHelp)
+  find_package(Perl)
+  find_package(Wget)
+
+  option(DOCUMENTATION_HTML_HELP
+    "Build the HTML Help file (CHM)." OFF)
+
+  option(DOCUMENTATION_HTML_TARZ
+    "Build a compressed tar archive of the HTML doc." OFF)
+
+  mark_as_advanced(
+    DOCUMENTATION_HTML_HELP
+    DOCUMENTATION_HTML_TARZ
+    )
+
+  #
+  # The documentation process is controlled by a batch file.
+  # We will probably need bash to create the custom target
+  #
+
+endif ()
+
+endif ()
+
+unset(_Documentation_policy)
diff --git a/share/cmake-3.18/Modules/DummyCXXFile.cxx b/share/cmake-3.22/Modules/DummyCXXFile.cxx
similarity index 100%
rename from share/cmake-3.18/Modules/DummyCXXFile.cxx
rename to share/cmake-3.22/Modules/DummyCXXFile.cxx
diff --git a/share/cmake-3.22/Modules/ExternalData.cmake b/share/cmake-3.22/Modules/ExternalData.cmake
new file mode 100644
index 0000000..189374b
--- /dev/null
+++ b/share/cmake-3.22/Modules/ExternalData.cmake
@@ -0,0 +1,1212 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+ExternalData
+------------
+
+.. only:: html
+
+   .. contents::
+
+Manage data files stored outside source tree
+
+Introduction
+^^^^^^^^^^^^
+
+Use this module to unambiguously reference data files stored outside
+the source tree and fetch them at build time from arbitrary local and
+remote content-addressed locations.  Functions provided by this module
+recognize arguments with the syntax ``DATA{<name>}`` as references to
+external data, replace them with full paths to local copies of those
+data, and create build rules to fetch and update the local copies.
+
+For example:
+
+.. code-block:: cmake
+
+ include(ExternalData)
+ set(ExternalData_URL_TEMPLATES "file:///local/%(algo)/%(hash)"
+                                "file:////host/share/%(algo)/%(hash)"
+                                "http://data.org/%(algo)/%(hash)")
+ ExternalData_Add_Test(MyData
+   NAME MyTest
+   COMMAND MyExe DATA{MyInput.png}
+   )
+ ExternalData_Add_Target(MyData)
+
+When test ``MyTest`` runs the ``DATA{MyInput.png}`` argument will be
+replaced by the full path to a real instance of the data file
+``MyInput.png`` on disk.  If the source tree contains a content link
+such as ``MyInput.png.md5`` then the ``MyData`` target creates a real
+``MyInput.png`` in the build tree.
+
+Module Functions
+^^^^^^^^^^^^^^^^
+
+.. command:: ExternalData_Expand_Arguments
+
+  The ``ExternalData_Expand_Arguments`` function evaluates ``DATA{}``
+  references in its arguments and constructs a new list of arguments::
+
+    ExternalData_Expand_Arguments(
+      <target>   # Name of data management target
+      <outVar>   # Output variable
+      [args...]  # Input arguments, DATA{} allowed
+      )
+
+  It replaces each ``DATA{}`` reference in an argument with the full path of
+  a real data file on disk that will exist after the ``<target>`` builds.
+
+.. command:: ExternalData_Add_Test
+
+  The ``ExternalData_Add_Test`` function wraps around the CMake
+  :command:`add_test` command but supports ``DATA{}`` references in
+  its arguments::
+
+    ExternalData_Add_Test(
+      <target>   # Name of data management target
+      ...        # Arguments of add_test(), DATA{} allowed
+      )
+
+  It passes its arguments through ``ExternalData_Expand_Arguments`` and then
+  invokes the :command:`add_test` command using the results.
+
+.. command:: ExternalData_Add_Target
+
+  The ``ExternalData_Add_Target`` function creates a custom target to
+  manage local instances of data files stored externally::
+
+    ExternalData_Add_Target(
+      <target>                  # Name of data management target
+      [SHOW_PROGRESS <ON|OFF>]  # Show progress during the download
+      )
+
+  It creates custom commands in the target as necessary to make data
+  files available for each ``DATA{}`` reference previously evaluated by
+  other functions provided by this module.
+  Data files may be fetched from one of the URL templates specified in
+  the ``ExternalData_URL_TEMPLATES`` variable, or may be found locally
+  in one of the paths specified in the ``ExternalData_OBJECT_STORES``
+  variable.
+
+  .. versionadded:: 3.20
+    The ``SHOW_PROGRESS`` argument may be passed to suppress progress information
+    during the download of objects. If not provided, it defaults to ``OFF`` for
+    :generator:`Ninja` and :generator:`Ninja Multi-Config` generators and ``ON``
+    otherwise.
+
+  Typically only one target is needed to manage all external data within
+  a project.  Call this function once at the end of configuration after
+  all data references have been processed.
+
+Module Variables
+^^^^^^^^^^^^^^^^
+
+The following variables configure behavior.  They should be set before
+calling any of the functions provided by this module.
+
+.. variable:: ExternalData_BINARY_ROOT
+
+  The ``ExternalData_BINARY_ROOT`` variable may be set to the directory to
+  hold the real data files named by expanded ``DATA{}`` references.  The
+  default is ``CMAKE_BINARY_DIR``.  The directory layout will mirror that of
+  content links under ``ExternalData_SOURCE_ROOT``.
+
+.. variable:: ExternalData_CUSTOM_SCRIPT_<key>
+
+  .. versionadded:: 3.2
+
+  Specify a full path to a ``.cmake`` custom fetch script identified by
+  ``<key>`` in entries of the ``ExternalData_URL_TEMPLATES`` list.
+  See `Custom Fetch Scripts`_.
+
+.. variable:: ExternalData_LINK_CONTENT
+
+  The ``ExternalData_LINK_CONTENT`` variable may be set to the name of a
+  supported hash algorithm to enable automatic conversion of real data
+  files referenced by the ``DATA{}`` syntax into content links.  For each
+  such ``<file>`` a content link named ``<file><ext>`` is created.  The
+  original file is renamed to the form ``.ExternalData_<algo>_<hash>`` to
+  stage it for future transmission to one of the locations in the list
+  of URL templates (by means outside the scope of this module).  The
+  data fetch rule created for the content link will use the staged
+  object if it cannot be found using any URL template.
+
+.. variable:: ExternalData_NO_SYMLINKS
+
+  .. versionadded:: 3.3
+
+  The real data files named by expanded ``DATA{}`` references may be made
+  available under ``ExternalData_BINARY_ROOT`` using symbolic links on
+  some platforms.  The ``ExternalData_NO_SYMLINKS`` variable may be set
+  to disable use of symbolic links and enable use of copies instead.
+
+.. variable:: ExternalData_OBJECT_STORES
+
+  The ``ExternalData_OBJECT_STORES`` variable may be set to a list of local
+  directories that store objects using the layout ``<dir>/%(algo)/%(hash)``.
+  These directories will be searched first for a needed object.  If the
+  object is not available in any store then it will be fetched remotely
+  using the URL templates and added to the first local store listed.  If
+  no stores are specified the default is a location inside the build
+  tree.
+
+.. variable:: ExternalData_SERIES_PARSE
+              ExternalData_SERIES_PARSE_PREFIX
+              ExternalData_SERIES_PARSE_NUMBER
+              ExternalData_SERIES_PARSE_SUFFIX
+              ExternalData_SERIES_MATCH
+
+  See `Referencing File Series`_.
+
+.. variable:: ExternalData_SOURCE_ROOT
+
+  The ``ExternalData_SOURCE_ROOT`` variable may be set to the highest source
+  directory containing any path named by a ``DATA{}`` reference.  The
+  default is ``CMAKE_SOURCE_DIR``.  ``ExternalData_SOURCE_ROOT`` and
+  ``CMAKE_SOURCE_DIR`` must refer to directories within a single source
+  distribution (e.g.  they come together in one tarball).
+
+.. variable:: ExternalData_TIMEOUT_ABSOLUTE
+
+  The ``ExternalData_TIMEOUT_ABSOLUTE`` variable sets the download
+  absolute timeout, in seconds, with a default of ``300`` seconds.
+  Set to ``0`` to disable enforcement.
+
+.. variable:: ExternalData_TIMEOUT_INACTIVITY
+
+  The ``ExternalData_TIMEOUT_INACTIVITY`` variable sets the download
+  inactivity timeout, in seconds, with a default of ``60`` seconds.
+  Set to ``0`` to disable enforcement.
+
+.. variable:: ExternalData_URL_ALGO_<algo>_<key>
+
+  .. versionadded:: 3.3
+
+  Specify a custom URL component to be substituted for URL template
+  placeholders of the form ``%(algo:<key>)``, where ``<key>`` is a
+  valid C identifier, when fetching an object referenced via hash
+  algorithm ``<algo>``.  If not defined, the default URL component
+  is just ``<algo>`` for any ``<key>``.
+
+.. variable:: ExternalData_URL_TEMPLATES
+
+  The ``ExternalData_URL_TEMPLATES`` may be set to provide a list
+  of URL templates using the placeholders ``%(algo)`` and ``%(hash)``
+  in each template.  Data fetch rules try each URL template in order
+  by substituting the hash algorithm name for ``%(algo)`` and the hash
+  value for ``%(hash)``.  Alternatively one may use ``%(algo:<key>)``
+  with ``ExternalData_URL_ALGO_<algo>_<key>`` variables to gain more
+  flexibility in remote URLs.
+
+Referencing Files
+^^^^^^^^^^^^^^^^^
+
+Referencing Single Files
+""""""""""""""""""""""""
+
+The ``DATA{}`` syntax is literal and the ``<name>`` is a full or relative path
+within the source tree.  The source tree must contain either a real
+data file at ``<name>`` or a "content link" at ``<name><ext>`` containing a
+hash of the real file using a hash algorithm corresponding to ``<ext>``.
+For example, the argument ``DATA{img.png}`` may be satisfied by either a
+real ``img.png`` file in the current source directory or a ``img.png.md5``
+file containing its MD5 sum.
+
+.. versionadded:: 3.8
+  Multiple content links of the same name with different hash algorithms
+  are supported (e.g. ``img.png.sha256`` and ``img.png.sha1``) so long as
+  they all correspond to the same real file.  This allows objects to be
+  fetched from sources indexed by different hash algorithms.
+
+Referencing File Series
+"""""""""""""""""""""""
+
+The ``DATA{}`` syntax can be told to fetch a file series using the form
+``DATA{<name>,:}``, where the ``:`` is literal.  If the source tree
+contains a group of files or content links named like a series then a
+reference to one member adds rules to fetch all of them.  Although all
+members of a series are fetched, only the file originally named by the
+``DATA{}`` argument is substituted for it.  The default configuration
+recognizes file series names ending with ``#.ext``, ``_#.ext``, ``.#.ext``,
+or ``-#.ext`` where ``#`` is a sequence of decimal digits and ``.ext`` is
+any single extension.  Configure it with a regex that parses ``<number>``
+and ``<suffix>`` parts from the end of ``<name>``::
+
+ ExternalData_SERIES_PARSE = regex of the form (<number>)(<suffix>)$
+
+For more complicated cases set::
+
+ ExternalData_SERIES_PARSE = regex with at least two () groups
+ ExternalData_SERIES_PARSE_PREFIX = <prefix> regex group number, if any
+ ExternalData_SERIES_PARSE_NUMBER = <number> regex group number
+ ExternalData_SERIES_PARSE_SUFFIX = <suffix> regex group number
+
+Configure series number matching with a regex that matches the
+``<number>`` part of series members named ``<prefix><number><suffix>``::
+
+ ExternalData_SERIES_MATCH = regex matching <number> in all series members
+
+Note that the ``<suffix>`` of a series does not include a hash-algorithm
+extension.
+
+Referencing Associated Files
+""""""""""""""""""""""""""""
+
+The ``DATA{}`` syntax can alternatively match files associated with the
+named file and contained in the same directory.  Associated files may
+be specified by options using the syntax
+``DATA{<name>,<opt1>,<opt2>,...}``.  Each option may specify one file by
+name or specify a regular expression to match file names using the
+syntax ``REGEX:<regex>``.  For example, the arguments::
+
+ DATA{MyData/MyInput.mhd,MyInput.img}                   # File pair
+ DATA{MyData/MyFrames00.png,REGEX:MyFrames[0-9]+\\.png} # Series
+
+will pass ``MyInput.mha`` and ``MyFrames00.png`` on the command line but
+ensure that the associated files are present next to them.
+
+Referencing Directories
+"""""""""""""""""""""""
+
+The ``DATA{}`` syntax may reference a directory using a trailing slash and
+a list of associated files.  The form ``DATA{<name>/,<opt1>,<opt2>,...}``
+adds rules to fetch any files in the directory that match one of the
+associated file options.  For example, the argument
+``DATA{MyDataDir/,REGEX:.*}`` will pass the full path to a ``MyDataDir``
+directory on the command line and ensure that the directory contains
+files corresponding to every file or content link in the ``MyDataDir``
+source directory.
+
+.. versionadded:: 3.3
+  In order to match associated files in subdirectories,
+  specify a ``RECURSE:`` option, e.g. ``DATA{MyDataDir/,RECURSE:,REGEX:.*}``.
+
+Hash Algorithms
+^^^^^^^^^^^^^^^
+
+The following hash algorithms are supported::
+
+ %(algo)     <ext>     Description
+ -------     -----     -----------
+ MD5         .md5      Message-Digest Algorithm 5, RFC 1321
+ SHA1        .sha1     US Secure Hash Algorithm 1, RFC 3174
+ SHA224      .sha224   US Secure Hash Algorithms, RFC 4634
+ SHA256      .sha256   US Secure Hash Algorithms, RFC 4634
+ SHA384      .sha384   US Secure Hash Algorithms, RFC 4634
+ SHA512      .sha512   US Secure Hash Algorithms, RFC 4634
+ SHA3_224    .sha3-224 Keccak SHA-3
+ SHA3_256    .sha3-256 Keccak SHA-3
+ SHA3_384    .sha3-384 Keccak SHA-3
+ SHA3_512    .sha3-512 Keccak SHA-3
+
+.. versionadded:: 3.8
+  Added the ``SHA3_*`` hash algorithms.
+
+Note that the hashes are used only for unique data identification and
+download verification.
+
+.. _`ExternalData Custom Fetch Scripts`:
+
+Custom Fetch Scripts
+^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.2
+
+When a data file must be fetched from one of the URL templates
+specified in the ``ExternalData_URL_TEMPLATES`` variable, it is
+normally downloaded using the :command:`file(DOWNLOAD)` command.
+One may specify usage of a custom fetch script by using a URL
+template of the form ``ExternalDataCustomScript://<key>/<loc>``.
+The ``<key>`` must be a C identifier, and the ``<loc>`` must
+contain the ``%(algo)`` and ``%(hash)`` placeholders.
+A variable corresponding to the key, ``ExternalData_CUSTOM_SCRIPT_<key>``,
+must be set to the full path to a ``.cmake`` script file.  The script
+will be included to perform the actual fetch, and provided with
+the following variables:
+
+.. variable:: ExternalData_CUSTOM_LOCATION
+
+  When a custom fetch script is loaded, this variable is set to the
+  location part of the URL, which will contain the substituted hash
+  algorithm name and content hash value.
+
+.. variable:: ExternalData_CUSTOM_FILE
+
+  When a custom fetch script is loaded, this variable is set to the
+  full path to a file in which the script must store the fetched
+  content.  The name of the file is unspecified and should not be
+  interpreted in any way.
+
+The custom fetch script is expected to store fetched content in the
+file or set a variable:
+
+.. variable:: ExternalData_CUSTOM_ERROR
+
+  When a custom fetch script fails to fetch the requested content,
+  it must set this variable to a short one-line message describing
+  the reason for failure.
+
+#]=======================================================================]
+
+function(ExternalData_add_test target)
+  # Expand all arguments as a single string to preserve escaped semicolons.
+  ExternalData_expand_arguments("${target}" testArgs "${ARGN}")
+  add_test(${testArgs})
+endfunction()
+
+function(ExternalData_add_target target)
+  if(NOT ExternalData_URL_TEMPLATES AND NOT ExternalData_OBJECT_STORES)
+    message(FATAL_ERROR
+      "Neither ExternalData_URL_TEMPLATES nor ExternalData_OBJECT_STORES is set!")
+  endif()
+  if(NOT ExternalData_OBJECT_STORES)
+    set(ExternalData_OBJECT_STORES ${CMAKE_BINARY_DIR}/ExternalData/Objects)
+  endif()
+  set(_ExternalData_CONFIG_CODE "")
+
+  cmake_parse_arguments(PARSE_ARGV 1 _ExternalData_add_target
+    ""
+    "SHOW_PROGRESS"
+    "")
+  if (_ExternalData_add_target_UNPARSED_ARGUMENTS)
+    message(AUTHOR_WARNING
+      "Ignoring unrecognized arguments passed to ExternalData_add_target: "
+      "`${_ExternalData_add_target_UNPARSED_ARGUMENTS}`")
+  endif ()
+
+  # Turn `SHOW_PROGRESS` into a boolean
+  if (NOT DEFINED _ExternalData_add_target_SHOW_PROGRESS)
+    # The default setting
+    if (CMAKE_GENERATOR MATCHES "Ninja")
+      set(_ExternalData_add_target_SHOW_PROGRESS OFF)
+    else ()
+      set(_ExternalData_add_target_SHOW_PROGRESS ON)
+    endif ()
+  elseif (_ExternalData_add_target_SHOW_PROGRESS)
+    set(_ExternalData_add_target_SHOW_PROGRESS ON)
+  else ()
+    set(_ExternalData_add_target_SHOW_PROGRESS OFF)
+  endif ()
+
+  # Store custom script configuration.
+  foreach(url_template IN LISTS ExternalData_URL_TEMPLATES)
+    if("${url_template}" MATCHES "^ExternalDataCustomScript://([^/]*)/(.*)$")
+      set(key "${CMAKE_MATCH_1}")
+      if(key MATCHES "^[A-Za-z_][A-Za-z0-9_]*$")
+        if(ExternalData_CUSTOM_SCRIPT_${key})
+          if(IS_ABSOLUTE "${ExternalData_CUSTOM_SCRIPT_${key}}")
+            string(CONCAT _ExternalData_CONFIG_CODE "${_ExternalData_CONFIG_CODE}\n"
+              "set(ExternalData_CUSTOM_SCRIPT_${key} \"${ExternalData_CUSTOM_SCRIPT_${key}}\")")
+          else()
+            message(FATAL_ERROR
+              "No ExternalData_CUSTOM_SCRIPT_${key} is not set to a full path:\n"
+              " ${ExternalData_CUSTOM_SCRIPT_${key}}")
+          endif()
+        else()
+          message(FATAL_ERROR
+            "No ExternalData_CUSTOM_SCRIPT_${key} is set for URL template:\n"
+            " ${url_template}")
+        endif()
+      else()
+        message(FATAL_ERROR
+          "Bad ExternalDataCustomScript key '${key}' in URL template:\n"
+          " ${url_template}\n"
+          "The key must be a valid C identifier.")
+      endif()
+    endif()
+
+    # Store custom algorithm name to URL component maps.
+    if("${url_template}" MATCHES "%\\(algo:([^)]*)\\)")
+      set(key "${CMAKE_MATCH_1}")
+      if(key MATCHES "^[A-Za-z_][A-Za-z0-9_]*$")
+        string(REPLACE "|" ";" _algos "${_ExternalData_REGEX_ALGO}")
+        foreach(algo ${_algos})
+          if(DEFINED ExternalData_URL_ALGO_${algo}_${key})
+            string(CONCAT _ExternalData_CONFIG_CODE "${_ExternalData_CONFIG_CODE}\n"
+              "set(ExternalData_URL_ALGO_${algo}_${key} \"${ExternalData_URL_ALGO_${algo}_${key}}\")")
+          endif()
+        endforeach()
+      else()
+        message(FATAL_ERROR
+          "Bad %(algo:${key}) in URL template:\n"
+          " ${url_template}\n"
+          "The transform name must be a valid C identifier.")
+      endif()
+    endif()
+  endforeach()
+
+  # Store configuration for use by build-time script.
+  set(config ${CMAKE_CURRENT_BINARY_DIR}/${target}_config.cmake)
+  configure_file(${_ExternalData_SELF_DIR}/ExternalData_config.cmake.in ${config} @ONLY)
+
+  set(files "")
+
+  # Set a "_ExternalData_FILE_${file}" variable for each output file to avoid
+  # duplicate entries within this target.  Set a directory property of the same
+  # name to avoid repeating custom commands with the same output in this directory.
+  # Repeating custom commands with the same output across directories or across
+  # targets in the same directory may be a race, but this is likely okay because
+  # we use atomic replacement of output files.
+  #
+  # Use local data first to prefer real files over content links.
+
+  # Custom commands to copy or link local data.
+  get_property(data_local GLOBAL PROPERTY _ExternalData_${target}_LOCAL)
+  foreach(entry IN LISTS data_local)
+    string(REPLACE "|" ";" tuple "${entry}")
+    list(GET tuple 0 file)
+    list(GET tuple 1 name)
+    if(NOT DEFINED "_ExternalData_FILE_${file}")
+      set("_ExternalData_FILE_${file}" 1)
+      get_property(added DIRECTORY PROPERTY "_ExternalData_FILE_${file}")
+      if(NOT added)
+        set_property(DIRECTORY PROPERTY "_ExternalData_FILE_${file}" 1)
+        add_custom_command(
+          COMMENT "Generating ${file}"
+          OUTPUT "${file}"
+          COMMAND ${CMAKE_COMMAND} -Drelative_top=${CMAKE_BINARY_DIR}
+                                   -Dfile=${file} -Dname=${name}
+                                   -DExternalData_ACTION=local
+                                   -DExternalData_SHOW_PROGRESS=${_ExternalData_add_target_SHOW_PROGRESS}
+                                   -DExternalData_CONFIG=${config}
+                                   -P ${_ExternalData_SELF}
+          MAIN_DEPENDENCY "${name}"
+          )
+      endif()
+      list(APPEND files "${file}")
+    endif()
+  endforeach()
+
+  # Custom commands to fetch remote data.
+  get_property(data_fetch GLOBAL PROPERTY _ExternalData_${target}_FETCH)
+  foreach(entry IN LISTS data_fetch)
+    string(REPLACE "|" ";" tuple "${entry}")
+    list(GET tuple 0 file)
+    list(GET tuple 1 name)
+    list(GET tuple 2 exts)
+    string(REPLACE "+" ";" exts_list "${exts}")
+    list(GET exts_list 0 first_ext)
+    set(stamp "-hash-stamp")
+    if(NOT DEFINED "_ExternalData_FILE_${file}")
+      set("_ExternalData_FILE_${file}" 1)
+      get_property(added DIRECTORY PROPERTY "_ExternalData_FILE_${file}")
+      if(NOT added)
+        set_property(DIRECTORY PROPERTY "_ExternalData_FILE_${file}" 1)
+        add_custom_command(
+          # Users care about the data file, so hide the hash/timestamp file.
+          COMMENT "Generating ${file}"
+          # The hash/timestamp file is the output from the build perspective.
+          # List the real file as a second output in case it is a broken link.
+          # The files must be listed in this order so CMake can hide from the
+          # make tool that a symlink target may not be newer than the input.
+          OUTPUT "${file}${stamp}" "${file}"
+          # Run the data fetch/update script.
+          COMMAND ${CMAKE_COMMAND} -Drelative_top=${CMAKE_BINARY_DIR}
+                                   -Dfile=${file} -Dname=${name} -Dexts=${exts}
+                                   -DExternalData_ACTION=fetch
+                                   -DExternalData_SHOW_PROGRESS=${_ExternalData_add_target_SHOW_PROGRESS}
+                                   -DExternalData_CONFIG=${config}
+                                   -P ${_ExternalData_SELF}
+          # Update whenever the object hash changes.
+          MAIN_DEPENDENCY "${name}${first_ext}"
+          )
+      endif()
+      list(APPEND files "${file}${stamp}")
+    endif()
+  endforeach()
+
+  # Custom target to drive all update commands.
+  add_custom_target(${target} ALL DEPENDS ${files})
+endfunction()
+
+function(ExternalData_expand_arguments target outArgsVar)
+  # Replace DATA{} references with real arguments.
+  set(data_regex "DATA{([^;{}\r\n]*)}")
+  set(other_regex "([^D]|D[^A]|DA[^T]|DAT[^A]|DATA[^{])+|.")
+  set(outArgs "")
+  # This list expansion un-escapes semicolons in list element values so we
+  # must re-escape them below anywhere a new list expansion will occur.
+  foreach(arg IN LISTS ARGN)
+    if("x${arg}" MATCHES "${data_regex}")
+      # Re-escape in-value semicolons before expansion in foreach below.
+      string(REPLACE ";" "\\;" tmp "${arg}")
+      # Split argument into DATA{}-pieces and other pieces.
+      string(REGEX MATCHALL "${data_regex}|${other_regex}" pieces "${tmp}")
+      # Compose output argument with DATA{}-pieces replaced.
+      set(outArg "")
+      foreach(piece IN LISTS pieces)
+        if("x${piece}" MATCHES "^x${data_regex}$")
+          # Replace this DATA{}-piece with a file path.
+          _ExternalData_arg("${target}" "${piece}" "${CMAKE_MATCH_1}" file)
+          string(APPEND outArg "${file}")
+        else()
+          # No replacement needed for this piece.
+          string(APPEND outArg "${piece}")
+        endif()
+      endforeach()
+    else()
+      # No replacements needed in this argument.
+      set(outArg "${arg}")
+    endif()
+    # Re-escape in-value semicolons in resulting list.
+    string(REPLACE ";" "\\;" outArg "${outArg}")
+    list(APPEND outArgs "${outArg}")
+  endforeach()
+  set("${outArgsVar}" "${outArgs}" PARENT_SCOPE)
+endfunction()
+
+#-----------------------------------------------------------------------------
+# Private helper interface
+
+set(_ExternalData_REGEX_ALGO "MD5|SHA1|SHA224|SHA256|SHA384|SHA512|SHA3_224|SHA3_256|SHA3_384|SHA3_512")
+set(_ExternalData_REGEX_EXT "md5|sha1|sha224|sha256|sha384|sha512|sha3-224|sha3-256|sha3-384|sha3-512")
+set(_ExternalData_SELF "${CMAKE_CURRENT_LIST_FILE}")
+get_filename_component(_ExternalData_SELF_DIR "${_ExternalData_SELF}" PATH)
+
+function(_ExternalData_compute_hash var_hash algo file)
+  if("${algo}" MATCHES "^${_ExternalData_REGEX_ALGO}$")
+    file("${algo}" "${file}" hash)
+    set("${var_hash}" "${hash}" PARENT_SCOPE)
+  else()
+    message(FATAL_ERROR "Hash algorithm ${algo} unimplemented.")
+  endif()
+endfunction()
+
+function(_ExternalData_random var)
+  string(RANDOM LENGTH 6 random)
+  set("${var}" "${random}" PARENT_SCOPE)
+endfunction()
+
+function(_ExternalData_exact_regex regex_var string)
+  string(REGEX REPLACE "([][+.*()^])" "\\\\\\1" regex "${string}")
+  set("${regex_var}" "${regex}" PARENT_SCOPE)
+endfunction()
+
+function(_ExternalData_atomic_write file content)
+  _ExternalData_random(random)
+  set(tmp "${file}.tmp${random}")
+  file(WRITE "${tmp}" "${content}")
+  file(RENAME "${tmp}" "${file}")
+endfunction()
+
+function(_ExternalData_link_content name var_ext)
+  if("${ExternalData_LINK_CONTENT}" MATCHES "^(${_ExternalData_REGEX_ALGO})$")
+    set(algo "${ExternalData_LINK_CONTENT}")
+  else()
+    message(FATAL_ERROR
+      "Unknown hash algorithm specified by ExternalData_LINK_CONTENT:\n"
+      "  ${ExternalData_LINK_CONTENT}")
+  endif()
+  _ExternalData_compute_hash(hash "${algo}" "${name}")
+  get_filename_component(dir "${name}" PATH)
+  set(staged "${dir}/.ExternalData_${algo}_${hash}")
+  string(TOLOWER ".${algo}" ext)
+  _ExternalData_atomic_write("${name}${ext}" "${hash}\n")
+  file(RENAME "${name}" "${staged}")
+  set("${var_ext}" "${ext}" PARENT_SCOPE)
+
+  file(RELATIVE_PATH relname "${ExternalData_SOURCE_ROOT}" "${name}${ext}")
+  message(STATUS "Linked ${relname} to ExternalData ${algo}/${hash}")
+endfunction()
+
+function(_ExternalData_arg target arg options var_file)
+  # Separate data path from the options.
+  string(REPLACE "," ";" options "${options}")
+  list(GET options 0 data)
+  list(REMOVE_AT options 0)
+
+  # Interpret trailing slashes as directories.
+  set(data_is_directory 0)
+  if("x${data}" MATCHES "^x(.*)([/\\])$")
+    set(data_is_directory 1)
+    set(data "${CMAKE_MATCH_1}")
+  endif()
+
+  # Convert to full path.
+  if(IS_ABSOLUTE "${data}")
+    set(absdata "${data}")
+  else()
+    set(absdata "${CMAKE_CURRENT_SOURCE_DIR}/${data}")
+  endif()
+  get_filename_component(absdata "${absdata}" ABSOLUTE)
+
+  # Convert to relative path under the source tree.
+  if(NOT ExternalData_SOURCE_ROOT)
+    set(ExternalData_SOURCE_ROOT "${CMAKE_SOURCE_DIR}")
+  endif()
+  set(top_src "${ExternalData_SOURCE_ROOT}")
+  file(RELATIVE_PATH reldata "${top_src}" "${absdata}")
+  if(IS_ABSOLUTE "${reldata}" OR "${reldata}" MATCHES "^\\.\\./")
+    message(FATAL_ERROR "Data file referenced by argument\n"
+      "  ${arg}\n"
+      "does not lie under the top-level source directory\n"
+      "  ${top_src}\n")
+  endif()
+  if(data_is_directory AND NOT IS_DIRECTORY "${top_src}/${reldata}")
+    message(FATAL_ERROR "Data directory referenced by argument\n"
+      "  ${arg}\n"
+      "corresponds to source tree path\n"
+      "  ${reldata}\n"
+      "that does not exist as a directory!")
+  endif()
+  if(NOT ExternalData_BINARY_ROOT)
+    set(ExternalData_BINARY_ROOT "${CMAKE_BINARY_DIR}")
+  endif()
+  set(top_bin "${ExternalData_BINARY_ROOT}")
+
+  # Handle in-source builds gracefully.
+  if("${top_src}" STREQUAL "${top_bin}")
+    if(ExternalData_LINK_CONTENT)
+      message(WARNING "ExternalData_LINK_CONTENT cannot be used in-source")
+      set(ExternalData_LINK_CONTENT 0)
+    endif()
+    set(top_same 1)
+  endif()
+
+  set(external "") # Entries external to the source tree.
+  set(internal "") # Entries internal to the source tree.
+  set(have_original ${data_is_directory})
+  set(have_original_as_dir 0)
+
+  # Process options.
+  set(series_option "")
+  set(recurse_option "")
+  set(associated_files "")
+  set(associated_regex "")
+  foreach(opt ${options})
+    # Regular expression to match associated files.
+    if("x${opt}" MATCHES "^xREGEX:([^:/]+)$")
+      list(APPEND associated_regex "${CMAKE_MATCH_1}")
+    elseif(opt STREQUAL ":")
+      # Activate series matching.
+      set(series_option "${opt}")
+    elseif(opt STREQUAL "RECURSE:")
+      # Activate recursive matching in directories.
+      set(recurse_option "${opt}")
+    elseif("x${opt}" MATCHES "^[^][:/*?]+$")
+      # Specific associated file.
+      list(APPEND associated_files "${opt}")
+    else()
+      message(FATAL_ERROR "Unknown option \"${opt}\" in argument\n"
+        "  ${arg}\n")
+    endif()
+  endforeach()
+
+  if(series_option)
+    if(data_is_directory)
+      message(FATAL_ERROR "Series option \"${series_option}\" not allowed with directories.")
+    endif()
+    if(associated_files OR associated_regex)
+      message(FATAL_ERROR "Series option \"${series_option}\" not allowed with associated files.")
+    endif()
+    if(recurse_option)
+      message(FATAL_ERROR "Recurse option \"${recurse_option}\" allowed only with directories.")
+    endif()
+    # Load a whole file series.
+    _ExternalData_arg_series()
+  elseif(data_is_directory)
+    if(associated_files OR associated_regex)
+      # Load listed/matching associated files in the directory.
+      _ExternalData_arg_associated()
+    else()
+      message(FATAL_ERROR "Data directory referenced by argument\n"
+        "  ${arg}\n"
+        "must list associated files.")
+    endif()
+  else()
+    if(recurse_option)
+      message(FATAL_ERROR "Recurse option \"${recurse_option}\" allowed only with directories.")
+    endif()
+    # Load the named data file.
+    _ExternalData_arg_single()
+    if(associated_files OR associated_regex)
+      # Load listed/matching associated files.
+      _ExternalData_arg_associated()
+    endif()
+  endif()
+
+  if(NOT have_original)
+    if(have_original_as_dir)
+      set(msg_kind FATAL_ERROR)
+      set(msg "that is directory instead of a file!")
+    else()
+      set(msg_kind AUTHOR_WARNING)
+      set(msg "that does not exist as a file (with or without an extension)!")
+    endif()
+    message(${msg_kind} "Data file referenced by argument\n"
+      "  ${arg}\n"
+      "corresponds to source tree path\n"
+      "  ${reldata}\n"
+      "${msg}")
+  endif()
+
+  if(external)
+    # Make the series available in the build tree.
+    set_property(GLOBAL APPEND PROPERTY
+      _ExternalData_${target}_FETCH "${external}")
+    set_property(GLOBAL APPEND PROPERTY
+      _ExternalData_${target}_LOCAL "${internal}")
+    set("${var_file}" "${top_bin}/${reldata}" PARENT_SCOPE)
+  else()
+    # The whole series is in the source tree.
+    set("${var_file}" "${top_src}/${reldata}" PARENT_SCOPE)
+  endif()
+endfunction()
+
+macro(_ExternalData_arg_associated)
+  # Associated files lie in the same directory.
+  if(data_is_directory)
+    set(reldir "${reldata}")
+  else()
+    get_filename_component(reldir "${reldata}" PATH)
+  endif()
+  if(reldir)
+    string(APPEND reldir "/")
+  endif()
+  _ExternalData_exact_regex(reldir_regex "${reldir}")
+  if(recurse_option)
+    set(glob GLOB_RECURSE)
+    string(APPEND reldir_regex "(.+/)?")
+  else()
+    set(glob GLOB)
+  endif()
+
+  # Find files named explicitly.
+  foreach(file ${associated_files})
+    _ExternalData_exact_regex(file_regex "${file}")
+    _ExternalData_arg_find_files(${glob} "${reldir}${file}"
+      "${reldir_regex}${file_regex}")
+  endforeach()
+
+  # Find files matching the given regular expressions.
+  set(all "")
+  set(sep "")
+  foreach(regex ${associated_regex})
+    string(APPEND all "${sep}${reldir_regex}${regex}")
+    set(sep "|")
+  endforeach()
+  _ExternalData_arg_find_files(${glob} "${reldir}" "${all}")
+endmacro()
+
+macro(_ExternalData_arg_single)
+  # Match only the named data by itself.
+  _ExternalData_exact_regex(data_regex "${reldata}")
+  _ExternalData_arg_find_files(GLOB "${reldata}" "${data_regex}")
+endmacro()
+
+macro(_ExternalData_arg_series)
+  # Configure series parsing and matching.
+  set(series_parse_prefix "")
+  set(series_parse_number "\\1")
+  set(series_parse_suffix "\\2")
+  if(ExternalData_SERIES_PARSE)
+    if(ExternalData_SERIES_PARSE_NUMBER AND ExternalData_SERIES_PARSE_SUFFIX)
+      if(ExternalData_SERIES_PARSE_PREFIX)
+        set(series_parse_prefix "\\${ExternalData_SERIES_PARSE_PREFIX}")
+      endif()
+      set(series_parse_number "\\${ExternalData_SERIES_PARSE_NUMBER}")
+      set(series_parse_suffix "\\${ExternalData_SERIES_PARSE_SUFFIX}")
+    elseif(NOT "x${ExternalData_SERIES_PARSE}" MATCHES "^x\\([^()]*\\)\\([^()]*\\)\\$$")
+      message(FATAL_ERROR
+        "ExternalData_SERIES_PARSE is set to\n"
+        "  ${ExternalData_SERIES_PARSE}\n"
+        "which is not of the form\n"
+        "  (<number>)(<suffix>)$\n"
+        "Fix the regular expression or set variables\n"
+        "  ExternalData_SERIES_PARSE_PREFIX = <prefix> regex group number, if any\n"
+        "  ExternalData_SERIES_PARSE_NUMBER = <number> regex group number\n"
+        "  ExternalData_SERIES_PARSE_SUFFIX = <suffix> regex group number\n"
+        )
+    endif()
+    set(series_parse "${ExternalData_SERIES_PARSE}")
+  else()
+    set(series_parse "([0-9]*)(\\.[^./]*)$")
+  endif()
+  if(ExternalData_SERIES_MATCH)
+    set(series_match "${ExternalData_SERIES_MATCH}")
+  else()
+    set(series_match "[_.-]?[0-9]*")
+  endif()
+
+  # Parse the base, number, and extension components of the series.
+  string(REGEX REPLACE "${series_parse}" "${series_parse_prefix};${series_parse_number};${series_parse_suffix}" tuple "${reldata}")
+  list(LENGTH tuple len)
+  if(NOT "${len}" EQUAL 3)
+    message(FATAL_ERROR "Data file referenced by argument\n"
+      "  ${arg}\n"
+      "corresponds to path\n"
+      "  ${reldata}\n"
+      "that does not match regular expression\n"
+      "  ${series_parse}")
+  endif()
+  list(GET tuple 0 relbase)
+  list(GET tuple 2 ext)
+
+  # Glob files that might match the series.
+  # Then match base, number, and extension.
+  _ExternalData_exact_regex(series_base "${relbase}")
+  _ExternalData_exact_regex(series_ext "${ext}")
+  _ExternalData_arg_find_files(GLOB "${relbase}*${ext}"
+    "${series_base}${series_match}${series_ext}")
+endmacro()
+
+function(_ExternalData_arg_find_files glob pattern regex)
+  cmake_policy(PUSH)
+  cmake_policy(SET CMP0009 NEW)
+  file(${glob} globbed RELATIVE "${top_src}" "${top_src}/${pattern}*")
+  cmake_policy(POP)
+  set(externals_count -1)
+  foreach(entry IN LISTS globbed)
+    if("x${entry}" MATCHES "^x(.*)(\\.(${_ExternalData_REGEX_EXT}))$")
+      set(relname "${CMAKE_MATCH_1}")
+      set(alg "${CMAKE_MATCH_2}")
+    else()
+      set(relname "${entry}")
+      set(alg "")
+    endif()
+    if("x${relname}" MATCHES "^x${regex}$" # matches
+        AND NOT "x${relname}" MATCHES "(^x|/)\\.ExternalData_" # not staged obj
+        )
+      if(IS_DIRECTORY "${top_src}/${entry}")
+        if("${relname}" STREQUAL "${reldata}")
+          set(have_original_as_dir 1)
+        endif()
+      else()
+        set(name "${top_src}/${relname}")
+        set(file "${top_bin}/${relname}")
+        if(alg)
+          if(NOT "${external_${externals_count}_file_name}" STREQUAL "${file}|${name}")
+            math(EXPR externals_count "${externals_count} + 1")
+            set(external_${externals_count}_file_name "${file}|${name}")
+          endif()
+          list(APPEND external_${externals_count}_algs "${alg}")
+        elseif(ExternalData_LINK_CONTENT)
+          _ExternalData_link_content("${name}" alg)
+          list(APPEND external "${file}|${name}|${alg}")
+        elseif(NOT top_same)
+          list(APPEND internal "${file}|${name}")
+        endif()
+        if("${relname}" STREQUAL "${reldata}")
+          set(have_original 1)
+        endif()
+      endif()
+    endif()
+  endforeach()
+  if(${externals_count} GREATER -1)
+    foreach(ii RANGE ${externals_count})
+      string(REPLACE ";" "+" algs_delim "${external_${ii}_algs}")
+      list(APPEND external "${external_${ii}_file_name}|${algs_delim}")
+      unset(external_${ii}_algs)
+      unset(external_${ii}_file_name)
+    endforeach()
+  endif()
+  set(external "${external}" PARENT_SCOPE)
+  set(internal "${internal}" PARENT_SCOPE)
+  set(have_original "${have_original}" PARENT_SCOPE)
+  set(have_original_as_dir "${have_original_as_dir}" PARENT_SCOPE)
+endfunction()
+
+#-----------------------------------------------------------------------------
+# Private script mode interface
+
+if(CMAKE_GENERATOR OR NOT ExternalData_ACTION)
+  return()
+endif()
+
+if(ExternalData_CONFIG)
+  include(${ExternalData_CONFIG})
+endif()
+if(NOT ExternalData_URL_TEMPLATES AND NOT ExternalData_OBJECT_STORES)
+  message(FATAL_ERROR
+    "Neither ExternalData_URL_TEMPLATES nor ExternalData_OBJECT_STORES is set!")
+endif()
+
+function(_ExternalData_link_or_copy src dst)
+  # Create a temporary file first.
+  get_filename_component(dst_dir "${dst}" PATH)
+  file(MAKE_DIRECTORY "${dst_dir}")
+  _ExternalData_random(random)
+  set(tmp "${dst}.tmp${random}")
+  if(UNIX AND NOT ExternalData_NO_SYMLINKS)
+    # Create a symbolic link.
+    set(tgt "${src}")
+    if(relative_top)
+      # Use relative path if files are close enough.
+      file(RELATIVE_PATH relsrc "${relative_top}" "${src}")
+      file(RELATIVE_PATH relfile "${relative_top}" "${dst}")
+      if(NOT IS_ABSOLUTE "${relsrc}" AND NOT "${relsrc}" MATCHES "^\\.\\./" AND
+          NOT IS_ABSOLUTE "${reldst}" AND NOT "${reldst}" MATCHES "^\\.\\./")
+        file(RELATIVE_PATH tgt "${dst_dir}" "${src}")
+      endif()
+    endif()
+    # Create link (falling back to copying if there's a problem).
+    file(CREATE_LINK "${tgt}" "${tmp}" RESULT result COPY_ON_ERROR SYMBOLIC)
+  else()
+    # Create a copy.
+    file(COPY_FILE "${src}" "${tmp}" RESULT result)
+  endif()
+  if(result)
+    file(REMOVE "${tmp}")
+    message(FATAL_ERROR "Failed to create:\n  \"${tmp}\"\nfrom:\n  \"${obj}\"\nwith error:\n  ${result}")
+  endif()
+
+  # Atomically create/replace the real destination.
+  file(RENAME "${tmp}" "${dst}")
+endfunction()
+
+function(_ExternalData_download_file url file err_var msg_var)
+  set(retry 3)
+  while(retry)
+    math(EXPR retry "${retry} - 1")
+    if(ExternalData_TIMEOUT_INACTIVITY)
+      set(inactivity_timeout INACTIVITY_TIMEOUT ${ExternalData_TIMEOUT_INACTIVITY})
+    elseif(NOT "${ExternalData_TIMEOUT_INACTIVITY}" EQUAL 0)
+      set(inactivity_timeout INACTIVITY_TIMEOUT 60)
+    else()
+      set(inactivity_timeout "")
+    endif()
+    if(ExternalData_TIMEOUT_ABSOLUTE)
+      set(absolute_timeout TIMEOUT ${ExternalData_TIMEOUT_ABSOLUTE})
+    elseif(NOT "${ExternalData_TIMEOUT_ABSOLUTE}" EQUAL 0)
+      set(absolute_timeout TIMEOUT 300)
+    else()
+      set(absolute_timeout "")
+    endif()
+    set(show_progress_args)
+    if (ExternalData_SHOW_PROGRESS)
+      list(APPEND show_progress_args SHOW_PROGRESS)
+    endif ()
+    file(DOWNLOAD "${url}" "${file}" STATUS status LOG log ${inactivity_timeout} ${absolute_timeout} ${show_progress_args})
+    list(GET status 0 err)
+    list(GET status 1 msg)
+    if(err)
+      if("${msg}" MATCHES "HTTP response code said error" AND
+          "${log}" MATCHES "error: 503")
+        set(msg "temporarily unavailable")
+      endif()
+    elseif("${log}" MATCHES "\nHTTP[^\n]* 503")
+      set(err TRUE)
+      set(msg "temporarily unavailable")
+    endif()
+    if(NOT err OR NOT "${msg}" MATCHES "partial|timeout|temporarily")
+      break()
+    elseif(retry)
+      message(STATUS "[download terminated: ${msg}, retries left: ${retry}]")
+    endif()
+  endwhile()
+  set("${err_var}" "${err}" PARENT_SCOPE)
+  set("${msg_var}" "${msg}" PARENT_SCOPE)
+endfunction()
+
+function(_ExternalData_custom_fetch key loc file err_var msg_var)
+  if(NOT ExternalData_CUSTOM_SCRIPT_${key})
+    set(err 1)
+    set(msg "No ExternalData_CUSTOM_SCRIPT_${key} set!")
+  elseif(NOT EXISTS "${ExternalData_CUSTOM_SCRIPT_${key}}")
+    set(err 1)
+    set(msg "No '${ExternalData_CUSTOM_SCRIPT_${key}}' exists!")
+  else()
+    set(ExternalData_CUSTOM_LOCATION "${loc}")
+    set(ExternalData_CUSTOM_FILE "${file}")
+    unset(ExternalData_CUSTOM_ERROR)
+    include("${ExternalData_CUSTOM_SCRIPT_${key}}")
+    if(DEFINED ExternalData_CUSTOM_ERROR)
+      set(err 1)
+      set(msg "${ExternalData_CUSTOM_ERROR}")
+    else()
+      set(err 0)
+      set(msg "no error")
+    endif()
+  endif()
+  set("${err_var}" "${err}" PARENT_SCOPE)
+  set("${msg_var}" "${msg}" PARENT_SCOPE)
+endfunction()
+
+function(_ExternalData_get_from_object_store hash algo var_obj var_success)
+  # Search all object stores for an existing object.
+  foreach(dir ${ExternalData_OBJECT_STORES})
+    set(obj "${dir}/${algo}/${hash}")
+    if(EXISTS "${obj}")
+      message(STATUS "Found object: \"${obj}\"")
+      set("${var_obj}" "${obj}" PARENT_SCOPE)
+      set("${var_success}" 1 PARENT_SCOPE)
+      return()
+    endif()
+  endforeach()
+endfunction()
+
+function(_ExternalData_download_object name hash algo var_obj var_success var_errorMsg)
+  # Search all object stores for an existing object.
+  set(success 1)
+  foreach(dir ${ExternalData_OBJECT_STORES})
+    set(obj "${dir}/${algo}/${hash}")
+    if(EXISTS "${obj}")
+      message(STATUS "Found object: \"${obj}\"")
+      set("${var_obj}" "${obj}" PARENT_SCOPE)
+      set("${var_success}" "${success}" PARENT_SCOPE)
+      return()
+    endif()
+  endforeach()
+
+  # Download object to the first store.
+  list(GET ExternalData_OBJECT_STORES 0 store)
+  set(obj "${store}/${algo}/${hash}")
+
+  _ExternalData_random(random)
+  set(tmp "${obj}.tmp${random}")
+  set(found 0)
+  set(tried "")
+  foreach(url_template IN LISTS ExternalData_URL_TEMPLATES)
+    string(REPLACE "%(hash)" "${hash}" url_tmp "${url_template}")
+    string(REPLACE "%(algo)" "${algo}" url "${url_tmp}")
+    if(url MATCHES "^(.*)%\\(algo:([A-Za-z_][A-Za-z0-9_]*)\\)(.*)$")
+      set(lhs "${CMAKE_MATCH_1}")
+      set(key "${CMAKE_MATCH_2}")
+      set(rhs "${CMAKE_MATCH_3}")
+      if(DEFINED ExternalData_URL_ALGO_${algo}_${key})
+        set(url "${lhs}${ExternalData_URL_ALGO_${algo}_${key}}${rhs}")
+      else()
+        set(url "${lhs}${algo}${rhs}")
+      endif()
+    endif()
+    string(REGEX REPLACE "((https?|ftp)://)([^@]+@)?(.*)" "\\1\\4" secured_url "${url}")
+    message(STATUS "Fetching \"${secured_url}\"")
+    if(url MATCHES "^ExternalDataCustomScript://([A-Za-z_][A-Za-z0-9_]*)/(.*)$")
+      _ExternalData_custom_fetch("${CMAKE_MATCH_1}" "${CMAKE_MATCH_2}" "${tmp}" err errMsg)
+    else()
+      _ExternalData_download_file("${url}" "${tmp}" err errMsg)
+    endif()
+    string(APPEND tried "\n  ${url}")
+    if(err)
+      string(APPEND tried " (${errMsg})")
+    else()
+      # Verify downloaded object.
+      _ExternalData_compute_hash(dl_hash "${algo}" "${tmp}")
+      if("${dl_hash}" STREQUAL "${hash}")
+        set(found 1)
+        break()
+      else()
+        string(APPEND tried " (wrong hash ${algo}=${dl_hash})")
+        if("$ENV{ExternalData_DEBUG_DOWNLOAD}" MATCHES ".")
+          file(RENAME "${tmp}" "${store}/${algo}/${dl_hash}")
+        endif()
+      endif()
+    endif()
+    file(REMOVE "${tmp}")
+  endforeach()
+
+  get_filename_component(dir "${name}" PATH)
+  set(staged "${dir}/.ExternalData_${algo}_${hash}")
+
+  set(success 1)
+  if(found)
+    # Atomically create the object.  If we lose a race with another process,
+    # do not replace it.  Content-addressing ensures it has what we expect.
+    file(RENAME "${tmp}" "${obj}" NO_REPLACE RESULT result)
+    if (result STREQUAL "NO_REPLACE")
+      file(REMOVE "${tmp}")
+    elseif (result)
+      message(FATAL_ERROR "Failed to rename:\n  \"${tmp}\"\nto:\n  \"${obj}\"\nwith error:\n  ${result}")
+    endif()
+    message(STATUS "Downloaded object: \"${obj}\"")
+  elseif(EXISTS "${staged}")
+    set(obj "${staged}")
+    message(STATUS "Staged object: \"${obj}\"")
+  else()
+    if(NOT tried)
+      set(tried "\n  (No ExternalData_URL_TEMPLATES given)")
+    endif()
+    set(success 0)
+    set("${var_errorMsg}" "Object ${algo}=${hash} not found at:${tried}" PARENT_SCOPE)
+  endif()
+
+  set("${var_obj}" "${obj}" PARENT_SCOPE)
+  set("${var_success}" "${success}" PARENT_SCOPE)
+endfunction()
+
+if("${ExternalData_ACTION}" STREQUAL "fetch")
+  foreach(v ExternalData_OBJECT_STORES file name exts)
+    if(NOT DEFINED "${v}")
+      message(FATAL_ERROR "No \"-D${v}=\" value provided!")
+    endif()
+  endforeach()
+
+  string(REPLACE "+" ";" exts_list "${exts}")
+  set(succeeded 0)
+  set(errorMsg "")
+  set(hash_list )
+  set(algo_list )
+  set(hash )
+  set(algo )
+  foreach(ext ${exts_list})
+    file(READ "${name}${ext}" hash)
+    string(STRIP "${hash}" hash)
+
+    if("${ext}" MATCHES "^\\.(${_ExternalData_REGEX_EXT})$")
+      string(TOUPPER "${CMAKE_MATCH_1}" algo)
+      string(REPLACE "-" "_" algo "${algo}")
+    else()
+      message(FATAL_ERROR "Unknown hash algorithm extension \"${ext}\"")
+    endif()
+
+    list(APPEND hash_list ${hash})
+    list(APPEND algo_list ${algo})
+  endforeach()
+
+  list(LENGTH exts_list num_extensions)
+  math(EXPR exts_range "${num_extensions} - 1")
+  foreach(ii RANGE 0 ${exts_range})
+    list(GET hash_list ${ii} hash)
+    list(GET algo_list ${ii} algo)
+    _ExternalData_get_from_object_store("${hash}" "${algo}" obj succeeded)
+    if(succeeded)
+      break()
+    endif()
+  endforeach()
+  if(NOT succeeded)
+    foreach(ii RANGE 0 ${exts_range})
+      list(GET hash_list ${ii} hash)
+      list(GET algo_list ${ii} algo)
+      _ExternalData_download_object("${name}" "${hash}" "${algo}"
+        obj succeeded algoErrorMsg)
+      string(APPEND errorMsg "\n${algoErrorMsg}")
+      if(succeeded)
+        break()
+      endif()
+    endforeach()
+  endif()
+  if(NOT succeeded)
+    message(FATAL_ERROR "${errorMsg}")
+  endif()
+  # Check if file already corresponds to the object.
+  set(stamp "-hash-stamp")
+  set(file_up_to_date 0)
+  if(EXISTS "${file}" AND EXISTS "${file}${stamp}")
+    file(READ "${file}${stamp}" f_hash)
+    string(STRIP "${f_hash}" f_hash)
+    if("${f_hash}" STREQUAL "${hash}")
+      set(file_up_to_date 1)
+    endif()
+  endif()
+
+  if(file_up_to_date)
+    # Touch the file to convince the build system it is up to date.
+    file(TOUCH "${file}")
+  else()
+    _ExternalData_link_or_copy("${obj}" "${file}")
+  endif()
+
+  # Atomically update the hash/timestamp file to record the object referenced.
+  _ExternalData_atomic_write("${file}${stamp}" "${hash}\n")
+elseif("${ExternalData_ACTION}" STREQUAL "local")
+  foreach(v file name)
+    if(NOT DEFINED "${v}")
+      message(FATAL_ERROR "No \"-D${v}=\" value provided!")
+    endif()
+  endforeach()
+  _ExternalData_link_or_copy("${name}" "${file}")
+else()
+  message(FATAL_ERROR "Unknown ExternalData_ACTION=[${ExternalData_ACTION}]")
+endif()
diff --git a/share/cmake-3.18/Modules/ExternalData_config.cmake.in b/share/cmake-3.22/Modules/ExternalData_config.cmake.in
similarity index 100%
rename from share/cmake-3.18/Modules/ExternalData_config.cmake.in
rename to share/cmake-3.22/Modules/ExternalData_config.cmake.in
diff --git a/share/cmake-3.22/Modules/ExternalProject-download.cmake.in b/share/cmake-3.22/Modules/ExternalProject-download.cmake.in
new file mode 100644
index 0000000..ff8c659
--- /dev/null
+++ b/share/cmake-3.22/Modules/ExternalProject-download.cmake.in
@@ -0,0 +1,173 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+cmake_minimum_required(VERSION 3.5)
+
+function(check_file_hash has_hash hash_is_good)
+  if("${has_hash}" STREQUAL "")
+    message(FATAL_ERROR "has_hash Can't be empty")
+  endif()
+
+  if("${hash_is_good}" STREQUAL "")
+    message(FATAL_ERROR "hash_is_good Can't be empty")
+  endif()
+
+  if("@ALGO@" STREQUAL "")
+    # No check
+    set("${has_hash}" FALSE PARENT_SCOPE)
+    set("${hash_is_good}" FALSE PARENT_SCOPE)
+    return()
+  endif()
+
+  set("${has_hash}" TRUE PARENT_SCOPE)
+
+  message(STATUS "verifying file...
+       file='@LOCAL@'")
+
+  file("@ALGO@" "@LOCAL@" actual_value)
+
+  if(NOT "${actual_value}" STREQUAL "@EXPECT_VALUE@")
+    set("${hash_is_good}" FALSE PARENT_SCOPE)
+    message(STATUS "@ALGO@ hash of
+    @LOCAL@
+  does not match expected value
+    expected: '@EXPECT_VALUE@'
+      actual: '${actual_value}'")
+  else()
+    set("${hash_is_good}" TRUE PARENT_SCOPE)
+  endif()
+endfunction()
+
+function(sleep_before_download attempt)
+  if(attempt EQUAL 0)
+    return()
+  endif()
+
+  if(attempt EQUAL 1)
+    message(STATUS "Retrying...")
+    return()
+  endif()
+
+  set(sleep_seconds 0)
+
+  if(attempt EQUAL 2)
+    set(sleep_seconds 5)
+  elseif(attempt EQUAL 3)
+    set(sleep_seconds 5)
+  elseif(attempt EQUAL 4)
+    set(sleep_seconds 15)
+  elseif(attempt EQUAL 5)
+    set(sleep_seconds 60)
+  elseif(attempt EQUAL 6)
+    set(sleep_seconds 90)
+  elseif(attempt EQUAL 7)
+    set(sleep_seconds 300)
+  else()
+    set(sleep_seconds 1200)
+  endif()
+
+  message(STATUS "Retry after ${sleep_seconds} seconds (attempt #${attempt}) ...")
+
+  execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep "${sleep_seconds}")
+endfunction()
+
+if("@LOCAL@" STREQUAL "")
+  message(FATAL_ERROR "LOCAL can't be empty")
+endif()
+
+if("@REMOTE@" STREQUAL "")
+  message(FATAL_ERROR "REMOTE can't be empty")
+endif()
+
+if(EXISTS "@LOCAL@")
+  check_file_hash(has_hash hash_is_good)
+  if(has_hash)
+    if(hash_is_good)
+      message(STATUS "File already exists and hash match (skip download):
+  file='@LOCAL@'
+  @ALGO@='@EXPECT_VALUE@'"
+      )
+      return()
+    else()
+      message(STATUS "File already exists but hash mismatch. Removing...")
+      file(REMOVE "@LOCAL@")
+    endif()
+  else()
+    message(STATUS "File already exists but no hash specified (use URL_HASH):
+  file='@LOCAL@'
+Old file will be removed and new file downloaded from URL."
+    )
+    file(REMOVE "@LOCAL@")
+  endif()
+endif()
+
+set(retry_number 5)
+
+message(STATUS "Downloading...
+   dst='@LOCAL@'
+   timeout='@TIMEOUT_MSG@'
+   inactivity timeout='@INACTIVITY_TIMEOUT_MSG@'"
+)
+set(download_retry_codes 7 6 8 15)
+set(skip_url_list)
+set(status_code)
+foreach(i RANGE ${retry_number})
+  if(status_code IN_LIST download_retry_codes)
+    sleep_before_download(${i})
+  endif()
+  foreach(url @REMOTE@)
+    if(NOT url IN_LIST skip_url_list)
+      message(STATUS "Using src='${url}'")
+
+      @TLS_VERIFY_CODE@
+      @TLS_CAINFO_CODE@
+      @NETRC_CODE@
+      @NETRC_FILE_CODE@
+
+      file(
+        DOWNLOAD
+        "${url}" "@LOCAL@"
+        @SHOW_PROGRESS@
+        @TIMEOUT_ARGS@
+        @INACTIVITY_TIMEOUT_ARGS@
+        STATUS status
+        LOG log
+        @USERPWD_ARGS@
+        @HTTP_HEADERS_ARGS@
+        )
+
+      list(GET status 0 status_code)
+      list(GET status 1 status_string)
+
+      if(status_code EQUAL 0)
+        check_file_hash(has_hash hash_is_good)
+        if(has_hash AND NOT hash_is_good)
+          message(STATUS "Hash mismatch, removing...")
+          file(REMOVE "@LOCAL@")
+        else()
+          message(STATUS "Downloading... done")
+          return()
+        endif()
+      else()
+        string(APPEND logFailedURLs "error: downloading '${url}' failed
+        status_code: ${status_code}
+        status_string: ${status_string}
+        log:
+        --- LOG BEGIN ---
+        ${log}
+        --- LOG END ---
+        "
+        )
+      if(NOT status_code IN_LIST download_retry_codes)
+        list(APPEND skip_url_list "${url}")
+        break()
+      endif()
+    endif()
+  endif()
+  endforeach()
+endforeach()
+
+message(FATAL_ERROR "Each download failed!
+  ${logFailedURLs}
+  "
+)
diff --git a/share/cmake-3.22/Modules/ExternalProject-gitupdate.cmake.in b/share/cmake-3.22/Modules/ExternalProject-gitupdate.cmake.in
new file mode 100644
index 0000000..0de2372
--- /dev/null
+++ b/share/cmake-3.22/Modules/ExternalProject-gitupdate.cmake.in
@@ -0,0 +1,277 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+cmake_minimum_required(VERSION 3.5)
+
+function(get_hash_for_ref ref out_var err_var)
+  execute_process(
+    COMMAND "@git_EXECUTABLE@" rev-parse "${ref}^0"
+    WORKING_DIRECTORY "@work_dir@"
+    RESULT_VARIABLE error_code
+    OUTPUT_VARIABLE ref_hash
+    ERROR_VARIABLE error_msg
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+  )
+  if(error_code)
+    set(${out_var} "" PARENT_SCOPE)
+  else()
+    set(${out_var} "${ref_hash}" PARENT_SCOPE)
+  endif()
+  set(${err_var} "${error_msg}" PARENT_SCOPE)
+endfunction()
+
+get_hash_for_ref(HEAD head_sha error_msg)
+if(head_sha STREQUAL "")
+  message(FATAL_ERROR "Failed to get the hash for HEAD:\n${error_msg}")
+endif()
+
+
+execute_process(
+  COMMAND "@git_EXECUTABLE@" show-ref "@git_tag@"
+  WORKING_DIRECTORY "@work_dir@"
+  OUTPUT_VARIABLE show_ref_output
+)
+if(show_ref_output MATCHES "^[a-z0-9]+[ \\t]+refs/remotes/")
+  # Given a full remote/branch-name and we know about it already. Since
+  # branches can move around, we always have to fetch.
+  set(fetch_required YES)
+  set(checkout_name "@git_tag@")
+
+elseif(show_ref_output MATCHES "^[a-z0-9]+[ \\t]+refs/tags/")
+  # Given a tag name that we already know about. We don't know if the tag we
+  # have matches the remote though (tags can move), so we should fetch.
+  set(fetch_required YES)
+  set(checkout_name "@git_tag@")
+
+  # Special case to preserve backward compatibility: if we are already at the
+  # same commit as the tag we hold locally, don't do a fetch and assume the tag
+  # hasn't moved on the remote.
+  # FIXME: We should provide an option to always fetch for this case
+  get_hash_for_ref("@git_tag@" tag_sha error_msg)
+  if(tag_sha STREQUAL head_sha)
+    message(VERBOSE "Already at requested tag: ${tag_sha}")
+    return()
+  endif()
+
+elseif(show_ref_output MATCHES "^[a-z0-9]+[ \\t]+refs/heads/")
+  # Given a branch name without any remote and we already have a branch by that
+  # name. We might already have that branch checked out or it might be a
+  # different branch. It isn't safe to use a bare branch name without the
+  # remote, so do a fetch and replace the ref with one that includes the remote.
+  set(fetch_required YES)
+  set(checkout_name "@git_remote_name@/@git_tag@")
+
+else()
+  get_hash_for_ref("@git_tag@" tag_sha error_msg)
+  if(tag_sha STREQUAL head_sha)
+    # Have the right commit checked out already
+    message(VERBOSE "Already at requested ref: ${tag_sha}")
+    return()
+
+  elseif(tag_sha STREQUAL "")
+    # We don't know about this ref yet, so we have no choice but to fetch.
+    # We deliberately swallow any error message at the default log level
+    # because it can be confusing for users to see a failed git command.
+    # That failure is being handled here, so it isn't an error.
+    set(fetch_required YES)
+    set(checkout_name "@git_tag@")
+    if(NOT error_msg STREQUAL "")
+      message(VERBOSE "${error_msg}")
+    endif()
+
+  else()
+    # We have the commit, so we know we were asked to find a commit hash
+    # (otherwise it would have been handled further above), but we don't
+    # have that commit checked out yet
+    set(fetch_required NO)
+    set(checkout_name "@git_tag@")
+    if(NOT error_msg STREQUAL "")
+      message(WARNING "${error_msg}")
+    endif()
+
+  endif()
+endif()
+
+if(fetch_required)
+  message(VERBOSE "Fetching latest from the remote @git_remote_name@")
+  execute_process(
+    COMMAND "@git_EXECUTABLE@" fetch --tags --force "@git_remote_name@"
+    WORKING_DIRECTORY "@work_dir@"
+    COMMAND_ERROR_IS_FATAL ANY
+  )
+endif()
+
+set(git_update_strategy "@git_update_strategy@")
+if(git_update_strategy STREQUAL "")
+  # Backward compatibility requires REBASE as the default behavior
+  set(git_update_strategy REBASE)
+endif()
+
+if(git_update_strategy MATCHES "^REBASE(_CHECKOUT)?$")
+  # Asked to potentially try to rebase first, maybe with fallback to checkout.
+  # We can't if we aren't already on a branch and we shouldn't if that local
+  # branch isn't tracking the one we want to checkout.
+  execute_process(
+    COMMAND "@git_EXECUTABLE@" symbolic-ref -q HEAD
+    WORKING_DIRECTORY "@work_dir@"
+    OUTPUT_VARIABLE current_branch
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+    # Don't test for an error. If this isn't a branch, we get a non-zero error
+    # code but empty output.
+  )
+
+  if(current_branch STREQUAL "")
+    # Not on a branch, checkout is the only sensible option since any rebase
+    # would always fail (and backward compatibility requires us to checkout in
+    # this situation)
+    set(git_update_strategy CHECKOUT)
+
+  else()
+    execute_process(
+      COMMAND "@git_EXECUTABLE@" for-each-ref "--format='%(upstream:short)'" "${current_branch}"
+      WORKING_DIRECTORY "@work_dir@"
+      OUTPUT_VARIABLE upstream_branch
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+      COMMAND_ERROR_IS_FATAL ANY  # There is no error if no upstream is set
+    )
+    if(NOT upstream_branch STREQUAL checkout_name)
+      # Not safe to rebase when asked to checkout a different branch to the one
+      # we are tracking. If we did rebase, we could end up with arbitrary
+      # commits added to the ref we were asked to checkout if the current local
+      # branch happens to be able to rebase onto the target branch. There would
+      # be no error message and the user wouldn't know this was occurring.
+      set(git_update_strategy CHECKOUT)
+    endif()
+
+  endif()
+elseif(NOT git_update_strategy STREQUAL "CHECKOUT")
+  message(FATAL_ERROR "Unsupported git update strategy: ${git_update_strategy}")
+endif()
+
+
+# Check if stash is needed
+execute_process(
+  COMMAND "@git_EXECUTABLE@" status --porcelain
+  WORKING_DIRECTORY "@work_dir@"
+  RESULT_VARIABLE error_code
+  OUTPUT_VARIABLE repo_status
+)
+if(error_code)
+  message(FATAL_ERROR "Failed to get the status")
+endif()
+string(LENGTH "${repo_status}" need_stash)
+
+# If not in clean state, stash changes in order to be able to perform a
+# rebase or checkout without losing those changes permanently
+if(need_stash)
+  execute_process(
+    COMMAND "@git_EXECUTABLE@" stash save @git_stash_save_options@
+    WORKING_DIRECTORY "@work_dir@"
+    COMMAND_ERROR_IS_FATAL ANY
+  )
+endif()
+
+if(git_update_strategy STREQUAL "CHECKOUT")
+  execute_process(
+    COMMAND "@git_EXECUTABLE@" checkout "${checkout_name}"
+    WORKING_DIRECTORY "@work_dir@"
+    COMMAND_ERROR_IS_FATAL ANY
+  )
+else()
+  execute_process(
+    COMMAND "@git_EXECUTABLE@" rebase "${checkout_name}"
+    WORKING_DIRECTORY "@work_dir@"
+    RESULT_VARIABLE error_code
+    OUTPUT_VARIABLE rebase_output
+    ERROR_VARIABLE  rebase_output
+  )
+  if(error_code)
+    # Rebase failed, undo the rebase attempt before continuing
+    execute_process(
+      COMMAND "@git_EXECUTABLE@" rebase --abort
+      WORKING_DIRECTORY "@work_dir@"
+    )
+
+    if(NOT git_update_strategy STREQUAL "REBASE_CHECKOUT")
+      # Not allowed to do a checkout as a fallback, so cannot proceed
+      if(need_stash)
+        execute_process(
+          COMMAND "@git_EXECUTABLE@" stash pop --index --quiet
+          WORKING_DIRECTORY "@work_dir@"
+          )
+      endif()
+      message(FATAL_ERROR "\nFailed to rebase in: '@work_dir@'."
+                          "\nOutput from the attempted rebase follows:"
+                          "\n${rebase_output}"
+                          "\n\nYou will have to resolve the conflicts manually")
+    endif()
+
+    # Fall back to checkout. We create an annotated tag so that the user
+    # can manually inspect the situation and revert if required.
+    # We can't log the failed rebase output because MSVC sees it and
+    # intervenes, causing the build to fail even though it completes.
+    # Write it to a file instead.
+    string(TIMESTAMP tag_timestamp "%Y%m%dT%H%M%S" UTC)
+    set(tag_name _cmake_ExternalProject_moved_from_here_${tag_timestamp}Z)
+    set(error_log_file ${CMAKE_CURRENT_LIST_DIR}/rebase_error_${tag_timestamp}Z.log)
+    file(WRITE ${error_log_file} "${rebase_output}")
+    message(WARNING "Rebase failed, output has been saved to ${error_log_file}"
+                    "\nFalling back to checkout, previous commit tagged as ${tag_name}")
+    execute_process(
+      COMMAND "@git_EXECUTABLE@" tag -a
+              -m "ExternalProject attempting to move from here to ${checkout_name}"
+              ${tag_name}
+      WORKING_DIRECTORY "@work_dir@"
+      COMMAND_ERROR_IS_FATAL ANY
+    )
+
+    execute_process(
+      COMMAND "@git_EXECUTABLE@" checkout "${checkout_name}"
+      WORKING_DIRECTORY "@work_dir@"
+      COMMAND_ERROR_IS_FATAL ANY
+    )
+  endif()
+endif()
+
+if(need_stash)
+  # Put back the stashed changes
+  execute_process(
+    COMMAND "@git_EXECUTABLE@" stash pop --index --quiet
+    WORKING_DIRECTORY "@work_dir@"
+    RESULT_VARIABLE error_code
+    )
+  if(error_code)
+    # Stash pop --index failed: Try again dropping the index
+    execute_process(
+      COMMAND "@git_EXECUTABLE@" reset --hard --quiet
+      WORKING_DIRECTORY "@work_dir@"
+    )
+    execute_process(
+      COMMAND "@git_EXECUTABLE@" stash pop --quiet
+      WORKING_DIRECTORY "@work_dir@"
+      RESULT_VARIABLE error_code
+    )
+    if(error_code)
+      # Stash pop failed: Restore previous state.
+      execute_process(
+        COMMAND "@git_EXECUTABLE@" reset --hard --quiet ${head_sha}
+        WORKING_DIRECTORY "@work_dir@"
+      )
+      execute_process(
+        COMMAND "@git_EXECUTABLE@" stash pop --index --quiet
+        WORKING_DIRECTORY "@work_dir@"
+      )
+      message(FATAL_ERROR "\nFailed to unstash changes in: '@work_dir@'."
+                          "\nYou will have to resolve the conflicts manually")
+    endif()
+  endif()
+endif()
+
+set(init_submodules "@init_submodules@")
+if(init_submodules)
+  execute_process(
+    COMMAND "@git_EXECUTABLE@" submodule update @git_submodules_recurse@ --init @git_submodules@
+    WORKING_DIRECTORY "@work_dir@"
+    COMMAND_ERROR_IS_FATAL ANY
+  )
+endif()
diff --git a/share/cmake-3.18/Modules/ExternalProject-verify.cmake.in b/share/cmake-3.22/Modules/ExternalProject-verify.cmake.in
similarity index 100%
rename from share/cmake-3.18/Modules/ExternalProject-verify.cmake.in
rename to share/cmake-3.22/Modules/ExternalProject-verify.cmake.in
diff --git a/share/cmake-3.22/Modules/ExternalProject.cmake b/share/cmake-3.22/Modules/ExternalProject.cmake
new file mode 100644
index 0000000..4004ea4
--- /dev/null
+++ b/share/cmake-3.22/Modules/ExternalProject.cmake
@@ -0,0 +1,3729 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+include_guard(GLOBAL)
+
+#[=======================================================================[.rst:
+ExternalProject
+---------------
+
+.. only:: html
+
+   .. contents::
+
+Commands
+^^^^^^^^
+
+External Project Definition
+"""""""""""""""""""""""""""
+
+.. command:: ExternalProject_Add
+
+  The ``ExternalProject_Add()`` function creates a custom target to drive
+  download, update/patch, configure, build, install and test steps of an
+  external project:
+
+  .. code-block:: cmake
+
+    ExternalProject_Add(<name> [<option>...])
+
+  The individual steps within the process can be driven independently if
+  required (e.g. for CDash submission) and extra custom steps can be defined,
+  along with the ability to control the step dependencies. The directory
+  structure used for the management of the external project can also be
+  customized. The function supports a large number of options which can be used
+  to tailor the external project behavior.
+
+  **Directory Options:**
+    Most of the time, the default directory layout is sufficient. It is largely
+    an implementation detail that the main project usually doesn't need to
+    change. In some circumstances, however, control over the directory layout
+    can be useful or necessary. The directory options are potentially more
+    useful from the point of view that the main build can use the
+    :command:`ExternalProject_Get_Property` command to retrieve their values,
+    thereby allowing the main project to refer to build artifacts of the
+    external project.
+
+    ``PREFIX <dir>``
+      Root directory for the external project. Unless otherwise noted below,
+      all other directories associated with the external project will be
+      created under here.
+
+    ``TMP_DIR <dir>``
+      Directory in which to store temporary files.
+
+    ``STAMP_DIR <dir>``
+      Directory in which to store the timestamps of each step. Log files from
+      individual steps are also created in here unless overridden by LOG_DIR
+      (see *Logging Options* below).
+
+    ``LOG_DIR <dir>``
+      .. versionadded:: 3.14
+
+      Directory in which to store the logs of each step.
+
+    ``DOWNLOAD_DIR <dir>``
+      Directory in which to store downloaded files before unpacking them. This
+      directory is only used by the URL download method, all other download
+      methods use ``SOURCE_DIR`` directly instead.
+
+    ``SOURCE_DIR <dir>``
+      Source directory into which downloaded contents will be unpacked, or for
+      non-URL download methods, the directory in which the repository should be
+      checked out, cloned, etc. If no download method is specified, this must
+      point to an existing directory where the external project has already
+      been unpacked or cloned/checked out.
+
+      .. note::
+         If a download method is specified, any existing contents of the source
+         directory may be deleted. Only the URL download method checks whether
+         this directory is either missing or empty before initiating the
+         download, stopping with an error if it is not empty. All other
+         download methods silently discard any previous contents of the source
+         directory.
+
+    ``BINARY_DIR <dir>``
+      Specify the build directory location. This option is ignored if
+      ``BUILD_IN_SOURCE`` is enabled.
+
+    ``INSTALL_DIR <dir>``
+      Installation prefix to be placed in the ``<INSTALL_DIR>`` placeholder.
+      This does not actually configure the external project to install to
+      the given prefix. That must be done by passing appropriate arguments
+      to the external project configuration step, e.g. using ``<INSTALL_DIR>``.
+
+    If any of the above ``..._DIR`` options are not specified, their defaults
+    are computed as follows. If the ``PREFIX`` option is given or the
+    ``EP_PREFIX`` directory property is set, then an external project is built
+    and installed under the specified prefix::
+
+      TMP_DIR      = <prefix>/tmp
+      STAMP_DIR    = <prefix>/src/<name>-stamp
+      DOWNLOAD_DIR = <prefix>/src
+      SOURCE_DIR   = <prefix>/src/<name>
+      BINARY_DIR   = <prefix>/src/<name>-build
+      INSTALL_DIR  = <prefix>
+      LOG_DIR      = <STAMP_DIR>
+
+    Otherwise, if the ``EP_BASE`` directory property is set then components
+    of an external project are stored under the specified base::
+
+      TMP_DIR      = <base>/tmp/<name>
+      STAMP_DIR    = <base>/Stamp/<name>
+      DOWNLOAD_DIR = <base>/Download/<name>
+      SOURCE_DIR   = <base>/Source/<name>
+      BINARY_DIR   = <base>/Build/<name>
+      INSTALL_DIR  = <base>/Install/<name>
+      LOG_DIR      = <STAMP_DIR>
+
+    If no ``PREFIX``, ``EP_PREFIX``, or ``EP_BASE`` is specified, then the
+    default is to set ``PREFIX`` to ``<name>-prefix``. Relative paths are
+    interpreted with respect to :variable:`CMAKE_CURRENT_BINARY_DIR` at the
+    point where ``ExternalProject_Add()`` is called.
+
+  **Download Step Options:**
+    A download method can be omitted if the ``SOURCE_DIR`` option is used to
+    point to an existing non-empty directory. Otherwise, one of the download
+    methods below must be specified (multiple download methods should not be
+    given) or a custom ``DOWNLOAD_COMMAND`` provided.
+
+    ``DOWNLOAD_COMMAND <cmd>...``
+      Overrides the command used for the download step
+      (:manual:`generator expressions <cmake-generator-expressions(7)>` are
+      supported). If this option is specified, all other download options will
+      be ignored. Providing an empty string for ``<cmd>`` effectively disables
+      the download step.
+
+    *URL Download*
+      ``URL <url1> [<url2>...]``
+        List of paths and/or URL(s) of the external project's source. When more
+        than one URL is given, they are tried in turn until one succeeds. A URL
+        may be an ordinary path in the local file system (in which case it
+        must be the only URL provided) or any downloadable URL supported by the
+        :command:`file(DOWNLOAD)` command. A local filesystem path may refer to
+        either an existing directory or to an archive file, whereas a URL is
+        expected to point to a file which can be treated as an archive. When an
+        archive is used, it will be unpacked automatically unless the
+        ``DOWNLOAD_NO_EXTRACT`` option is set to prevent it. The archive type
+        is determined by inspecting the actual content rather than using logic
+        based on the file extension.
+
+        .. versionchanged:: 3.7
+          Multiple URLs are allowed.
+
+      ``URL_HASH <algo>=<hashValue>``
+        Hash of the archive file to be downloaded. The argument should be of
+        the form ``<algo>=<hashValue>`` where ``algo`` can be any of the hashing
+        algorithms supported by the :command:`file()` command. Specifying this
+        option is strongly recommended for URL downloads, as it ensures the
+        integrity of the downloaded content. It is also used as a check for a
+        previously downloaded file, allowing connection to the remote location
+        to be avoided altogether if the local directory already has a file from
+        an earlier download that matches the specified hash.
+
+      ``URL_MD5 <md5>``
+        Equivalent to ``URL_HASH MD5=<md5>``.
+
+      ``DOWNLOAD_NAME <fname>``
+        File name to use for the downloaded file. If not given, the end of the
+        URL is used to determine the file name. This option is rarely needed,
+        the default name is generally suitable and is not normally used outside
+        of code internal to the ``ExternalProject`` module.
+
+      ``DOWNLOAD_NO_EXTRACT <bool>``
+        .. versionadded:: 3.6
+
+        Allows the extraction part of the download step to be disabled by
+        passing a boolean true value for this option. If this option is not
+        given, the downloaded contents will be unpacked automatically if
+        required. If extraction has been disabled, the full path to the
+        downloaded file is available as ``<DOWNLOADED_FILE>`` in subsequent
+        steps or as the property ``DOWNLOADED_FILE`` with the
+        :command:`ExternalProject_Get_Property` command.
+
+      ``DOWNLOAD_NO_PROGRESS <bool>``
+        Can be used to disable logging the download progress. If this option is
+        not given, download progress messages will be logged.
+
+      ``TIMEOUT <seconds>``
+        Maximum time allowed for file download operations.
+
+      ``INACTIVITY_TIMEOUT <seconds>``
+        .. versionadded:: 3.19
+
+        Terminate the operation after a period of inactivity.
+
+      ``HTTP_USERNAME <username>``
+        .. versionadded:: 3.7
+
+        Username for the download operation if authentication is required.
+
+      ``HTTP_PASSWORD <password>``
+        .. versionadded:: 3.7
+
+        Password for the download operation if authentication is required.
+
+      ``HTTP_HEADER <header1> [<header2>...]``
+        .. versionadded:: 3.7
+
+        Provides an arbitrary list of HTTP headers for the download operation.
+        This can be useful for accessing content in systems like AWS, etc.
+
+      ``TLS_VERIFY <bool>``
+        Specifies whether certificate verification should be performed for
+        https URLs. If this option is not provided, the default behavior is
+        determined by the :variable:`CMAKE_TLS_VERIFY` variable (see
+        :command:`file(DOWNLOAD)`). If that is also not set, certificate
+        verification will not be performed. In situations where ``URL_HASH``
+        cannot be provided, this option can be an alternative verification
+        measure.
+
+        .. versionchanged:: 3.6
+          This option also applies to ``git clone`` invocations.
+
+      ``TLS_CAINFO <file>``
+        Specify a custom certificate authority file to use if ``TLS_VERIFY``
+        is enabled. If this option is not specified, the value of the
+        :variable:`CMAKE_TLS_CAINFO` variable will be used instead (see
+        :command:`file(DOWNLOAD)`)
+
+      ``NETRC <level>``
+        .. versionadded:: 3.11
+
+        Specify whether the ``.netrc`` file is to be used for operation.
+        If this option is not specified, the value of the :variable:`CMAKE_NETRC`
+        variable will be used instead (see :command:`file(DOWNLOAD)`)
+        Valid levels are:
+
+        ``IGNORED``
+          The ``.netrc`` file is ignored.
+          This is the default.
+        ``OPTIONAL``
+          The ``.netrc`` file is optional, and information in the URL
+          is preferred.  The file will be scanned to find which ever
+          information is not specified in the URL.
+        ``REQUIRED``
+          The ``.netrc`` file is required, and information in the URL
+          is ignored.
+
+      ``NETRC_FILE <file>``
+        .. versionadded:: 3.11
+
+        Specify an alternative ``.netrc`` file to the one in your home directory
+        if the ``NETRC`` level is ``OPTIONAL`` or ``REQUIRED``. If this option
+        is not specified, the value of the :variable:`CMAKE_NETRC_FILE` variable
+        will be used instead (see :command:`file(DOWNLOAD)`)
+
+      .. versionadded:: 3.1
+        Added support for `tbz2`, `.tar.xz`, `.txz`, and `.7z` extensions.
+
+    *Git*
+      NOTE: A git version of 1.6.5 or later is required if this download method
+      is used.
+
+      ``GIT_REPOSITORY <url>``
+        URL of the git repository. Any URL understood by the ``git`` command
+        may be used.
+
+      ``GIT_TAG <tag>``
+        Git branch name, tag or commit hash. Note that branch names and tags
+        should generally be specified as remote names (i.e. ``origin/myBranch``
+        rather than simply ``myBranch``). This ensures that if the remote end
+        has its tag moved or branch rebased or history rewritten, the local
+        clone will still be updated correctly. In general, however, specifying
+        a commit hash should be preferred for a number of reasons:
+
+        - If the local clone already has the commit corresponding to the hash,
+          no ``git fetch`` needs to be performed to check for changes each time
+          CMake is re-run. This can result in a significant speed up if many
+          external projects are being used.
+        - Using a specific git hash ensures that the main project's own history
+          is fully traceable to a specific point in the external project's
+          evolution. If a branch or tag name is used instead, then checking out
+          a specific commit of the main project doesn't necessarily pin the
+          whole build to a specific point in the life of the external project.
+          The lack of such deterministic behavior makes the main project lose
+          traceability and repeatability.
+
+        If ``GIT_SHALLOW`` is enabled then ``GIT_TAG`` works only with
+        branch names and tags.  A commit hash is not allowed.
+
+      ``GIT_REMOTE_NAME <name>``
+        The optional name of the remote. If this option is not specified, it
+        defaults to ``origin``.
+
+      ``GIT_SUBMODULES <module>...``
+        Specific git submodules that should also be updated. If this option is
+        not provided, all git submodules will be updated.
+
+        .. versionchanged:: 3.16
+          When :policy:`CMP0097` is set to ``NEW``, if this value is set
+          to an empty string then no submodules are initialized or updated.
+
+      ``GIT_SUBMODULES_RECURSE <bool>``
+        .. versionadded:: 3.17
+
+        Specify whether git submodules (if any) should update recursively by
+        passing the ``--recursive`` flag to ``git submodule update``.
+        If not specified, the default is on.
+
+      ``GIT_SHALLOW <bool>``
+        .. versionadded:: 3.6
+
+        When this option is enabled, the ``git clone`` operation will be given
+        the ``--depth 1`` option. This performs a shallow clone, which avoids
+        downloading the whole history and instead retrieves just the commit
+        denoted by the ``GIT_TAG`` option.
+
+      ``GIT_PROGRESS <bool>``
+        .. versionadded:: 3.8
+
+        When enabled, this option instructs the ``git clone`` operation to
+        report its progress by passing it the ``--progress`` option. Without
+        this option, the clone step for large projects may appear to make the
+        build stall, since nothing will be logged until the clone operation
+        finishes. While this option can be used to provide progress to prevent
+        the appearance of the build having stalled, it may also make the build
+        overly noisy if lots of external projects are used.
+
+      ``GIT_CONFIG <option1> [<option2>...]``
+        .. versionadded:: 3.8
+
+        Specify a list of config options to pass to ``git clone``. Each option
+        listed will be transformed into its own ``--config <option>`` on the
+        ``git clone`` command line, with each option required to be in the
+        form ``key=value``.
+
+      ``GIT_REMOTE_UPDATE_STRATEGY <strategy>``
+        .. versionadded:: 3.18
+
+        When ``GIT_TAG`` refers to a remote branch, this option can be used to
+        specify how the update step behaves.  The ``<strategy>`` must be one of
+        the following:
+
+        ``CHECKOUT``
+          Ignore the local branch and always checkout the branch specified by
+          ``GIT_TAG``.
+
+        ``REBASE``
+          Try to rebase the current branch to the one specified by ``GIT_TAG``.
+          If there are local uncommitted changes, they will be stashed first
+          and popped again after rebasing.  If rebasing or popping stashed
+          changes fail, abort the rebase and halt with an error.
+          When ``GIT_REMOTE_UPDATE_STRATEGY`` is not present, this is the
+          default strategy unless the default has been overridden with
+          ``CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY`` (see below).
+
+        ``REBASE_CHECKOUT``
+          Same as ``REBASE`` except if the rebase fails, an annotated tag will
+          be created at the original ``HEAD`` position from before the rebase
+          and then checkout ``GIT_TAG`` just like the ``CHECKOUT`` strategy.
+          The message stored on the annotated tag will give information about
+          what was attempted and the tag name will include a timestamp so that
+          each failed run will add a new tag.  This strategy ensures no changes
+          will be lost, but updates should always succeed if ``GIT_TAG`` refers
+          to a valid ref unless there are uncommitted changes that cannot be
+          popped successfully.
+
+        The variable ``CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY`` can be set to
+        override the default strategy.  This variable should not be set by a
+        project, it is intended for the user to set.  It is primarily intended
+        for use in continuous integration scripts to ensure that when history
+        is rewritten on a remote branch, the build doesn't end up with unintended
+        changes or failed builds resulting from conflicts during rebase operations.
+
+    *Subversion*
+      ``SVN_REPOSITORY <url>``
+        URL of the Subversion repository.
+
+      ``SVN_REVISION -r<rev>``
+        Revision to checkout from the Subversion repository.
+
+      ``SVN_USERNAME <username>``
+        Username for the Subversion checkout and update.
+
+      ``SVN_PASSWORD <password>``
+        Password for the Subversion checkout and update.
+
+      ``SVN_TRUST_CERT <bool>``
+        Specifies whether to trust the Subversion server site certificate. If
+        enabled, the ``--trust-server-cert`` option is passed to the ``svn``
+        checkout and update commands.
+
+    *Mercurial*
+      ``HG_REPOSITORY <url>``
+        URL of the mercurial repository.
+
+      ``HG_TAG <tag>``
+        Mercurial branch name, tag or commit id.
+
+    *CVS*
+      ``CVS_REPOSITORY <cvsroot>``
+        CVSROOT of the CVS repository.
+
+      ``CVS_MODULE <mod>``
+        Module to checkout from the CVS repository.
+
+      ``CVS_TAG <tag>``
+        Tag to checkout from the CVS repository.
+
+  **Update/Patch Step Options:**
+    Whenever CMake is re-run, by default the external project's sources will be
+    updated if the download method supports updates (e.g. a git repository
+    would be checked if the ``GIT_TAG`` does not refer to a specific commit).
+
+    ``UPDATE_COMMAND <cmd>...``
+      Overrides the download method's update step with a custom command.
+      The command may use
+      :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+    ``UPDATE_DISCONNECTED <bool>``
+      .. versionadded:: 3.2
+
+      When enabled, this option causes the update step to be skipped. It does
+      not, however, prevent the download step. The update step can still be
+      added as a step target (see :command:`ExternalProject_Add_StepTargets`)
+      and called manually. This is useful if you want to allow developers to
+      build the project when disconnected from the network (the network may
+      still be needed for the download step though).
+
+      When this option is present, it is generally advisable to make the value
+      a cache variable under the developer's control rather than hard-coding
+      it. If this option is not present, the default value is taken from the
+      ``EP_UPDATE_DISCONNECTED`` directory property. If that is also not
+      defined, updates are performed as normal. The ``EP_UPDATE_DISCONNECTED``
+      directory property is intended as a convenience for controlling the
+      ``UPDATE_DISCONNECTED`` behavior for an entire section of a project's
+      directory hierarchy and may be a more convenient method of giving
+      developers control over whether or not to perform updates (assuming the
+      project also provides a cache variable or some other convenient method
+      for setting the directory property).
+
+      This may cause a step target to be created automatically for the
+      ``download`` step.  See policy :policy:`CMP0114`.
+
+    ``PATCH_COMMAND <cmd>...``
+      Specifies a custom command to patch the sources after an update. By
+      default, no patch command is defined. Note that it can be quite difficult
+      to define an appropriate patch command that performs robustly, especially
+      for download methods such as git where changing the ``GIT_TAG`` will not
+      discard changes from a previous patch, but the patch command will be
+      called again after updating to the new tag.
+
+  **Configure Step Options:**
+    The configure step is run after the download and update steps. By default,
+    the external project is assumed to be a CMake project, but this can be
+    overridden if required.
+
+    ``CONFIGURE_COMMAND <cmd>...``
+      The default configure command runs CMake with a few options based on
+      the main project.  The options added are typically only those needed to
+      use the same generator as the main project, but the ``CMAKE_GENERATOR``
+      option can be given to override this.  The project is responsible for
+      adding any toolchain details, flags or other settings it wants to
+      re-use from the main project or otherwise specify (see ``CMAKE_ARGS``,
+      ``CMAKE_CACHE_ARGS`` and ``CMAKE_CACHE_DEFAULT_ARGS`` below).
+
+      For non-CMake external projects, the ``CONFIGURE_COMMAND`` option must
+      be used to override the default configure command
+      (:manual:`generator expressions <cmake-generator-expressions(7)>` are
+      supported). For projects that require no configure step, specify this
+      option with an empty string as the command to execute.
+
+    ``CMAKE_COMMAND /.../cmake``
+      Specify an alternative cmake executable for the configure step (use an
+      absolute path). This is generally not recommended, since it is
+      usually desirable to use the same CMake version throughout the whole
+      build. This option is ignored if a custom configure command has been
+      specified with ``CONFIGURE_COMMAND``.
+
+    ``CMAKE_GENERATOR <gen>``
+      Override the CMake generator used for the configure step. Without this
+      option, the same generator as the main build will be used. This option is
+      ignored if a custom configure command has been specified with the
+      ``CONFIGURE_COMMAND`` option.
+
+    ``CMAKE_GENERATOR_PLATFORM <platform>``
+      .. versionadded:: 3.1
+
+      Pass a generator-specific platform name to the CMake command (see
+      :variable:`CMAKE_GENERATOR_PLATFORM`). It is an error to provide this
+      option without the ``CMAKE_GENERATOR`` option.
+
+    ``CMAKE_GENERATOR_TOOLSET <toolset>``
+      Pass a generator-specific toolset name to the CMake command (see
+      :variable:`CMAKE_GENERATOR_TOOLSET`). It is an error to provide this
+      option without the ``CMAKE_GENERATOR`` option.
+
+    ``CMAKE_GENERATOR_INSTANCE <instance>``
+      .. versionadded:: 3.11
+
+      Pass a generator-specific instance selection to the CMake command (see
+      :variable:`CMAKE_GENERATOR_INSTANCE`). It is an error to provide this
+      option without the ``CMAKE_GENERATOR`` option.
+
+    ``CMAKE_ARGS <arg>...``
+      The specified arguments are passed to the ``cmake`` command line. They
+      can be any argument the ``cmake`` command understands, not just cache
+      values defined by ``-D...`` arguments (see also
+      :manual:`CMake Options <cmake(1)>`).
+
+      .. versionadded:: 3.3
+        Arguments may use :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+    ``CMAKE_CACHE_ARGS <arg>...``
+      This is an alternate way of specifying cache variables where command line
+      length issues may become a problem. The arguments are expected to be in
+      the form ``-Dvar:STRING=value``, which are then transformed into
+      CMake :command:`set` commands with the ``FORCE`` option used. These
+      ``set()`` commands are written to a pre-load script which is then applied
+      using the :manual:`cmake -C <cmake(1)>` command line option.
+
+      .. versionadded:: 3.3
+        Arguments may use :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+    ``CMAKE_CACHE_DEFAULT_ARGS <arg>...``
+      .. versionadded:: 3.2
+
+      This is the same as the ``CMAKE_CACHE_ARGS`` option except the ``set()``
+      commands do not include the ``FORCE`` keyword. This means the values act
+      as initial defaults only and will not override any variables already set
+      from a previous run. Use this option with care, as it can lead to
+      different behavior depending on whether the build starts from a fresh
+      build directory or re-uses previous build contents.
+
+      .. versionadded:: 3.15
+        If the CMake generator is the ``Green Hills MULTI`` and not overridden then
+        the original project's settings for the GHS toolset and target system
+        customization cache variables are propagated into the external project.
+
+    ``SOURCE_SUBDIR <dir>``
+      .. versionadded:: 3.7
+
+      When no ``CONFIGURE_COMMAND`` option is specified, the configure step
+      assumes the external project has a ``CMakeLists.txt`` file at the top of
+      its source tree (i.e. in ``SOURCE_DIR``). The ``SOURCE_SUBDIR`` option
+      can be used to point to an alternative directory within the source tree
+      to use as the top of the CMake source tree instead. This must be a
+      relative path and it will be interpreted as being relative to
+      ``SOURCE_DIR``.
+
+      .. versionadded:: 3.14
+        When ``BUILD_IN_SOURCE`` option is enabled, the ``BUILD_COMMAND``
+        is used to point to an alternative directory within the source tree.
+
+    ``CONFIGURE_HANDLED_BY_BUILD <bool>``
+      .. versionadded:: 3.20
+
+      Enabling this option relaxes the dependencies of the configure step on
+      other external projects to order-only. This means the configure step will
+      be executed after its external project dependencies are built but it will
+      not be marked dirty when one of its external project dependencies is
+      rebuilt. This option can be enabled when the build step is smart enough
+      to figure out if the configure step needs to be rerun. CMake and Meson are
+      examples of build systems whose build step is smart enough to know if the
+      configure step needs to be rerun.
+
+  **Build Step Options:**
+    If the configure step assumed the external project uses CMake as its build
+    system, the build step will also. Otherwise, the build step will assume a
+    Makefile-based build and simply run ``make`` with no arguments as the
+    default build step. This can be overridden with custom build commands if
+    required.
+
+    If both the main project and the external project use make as their build
+    tool, the build step of the external project is invoked as a recursive
+    make using ``$(MAKE)``.  This will communicate some build tool settings
+    from the main project to the external project.  If either the main project
+    or external project is not using make, no build tool settings will be
+    passed to the external project other than those established by the
+    configure step (i.e. running ``ninja -v`` in the main project will not
+    pass ``-v`` to the external project's build step, even if it also uses
+    ``ninja`` as its build tool).
+
+    ``BUILD_COMMAND <cmd>...``
+      Overrides the default build command
+      (:manual:`generator expressions <cmake-generator-expressions(7)>` are
+      supported). If this option is not given, the default build command will
+      be chosen to integrate with the main build in the most appropriate way
+      (e.g. using recursive ``make`` for Makefile generators or
+      ``cmake --build`` if the project uses a CMake build). This option can be
+      specified with an empty string as the command to make the build step do
+      nothing.
+
+    ``BUILD_IN_SOURCE <bool>``
+      When this option is enabled, the build will be done directly within the
+      external project's source tree. This should generally be avoided, the use
+      of a separate build directory is usually preferred, but it can be useful
+      when the external project assumes an in-source build. The ``BINARY_DIR``
+      option should not be specified if building in-source.
+
+    ``BUILD_ALWAYS <bool>``
+      Enabling this option forces the build step to always be run. This can be
+      the easiest way to robustly ensure that the external project's own build
+      dependencies are evaluated rather than relying on the default
+      success timestamp-based method. This option is not normally needed unless
+      developers are expected to modify something the external project's build
+      depends on in a way that is not detectable via the step target
+      dependencies (e.g. ``SOURCE_DIR`` is used without a download method and
+      developers might modify the sources in ``SOURCE_DIR``).
+
+    ``BUILD_BYPRODUCTS <file>...``
+      .. versionadded:: 3.2
+
+      Specifies files that will be generated by the build command but which
+      might or might not have their modification time updated by subsequent
+      builds. These ultimately get passed through as ``BYPRODUCTS`` to the
+      build step's own underlying call to :command:`add_custom_command`.
+
+  **Install Step Options:**
+    If the configure step assumed the external project uses CMake as its build
+    system, the install step will also. Otherwise, the install step will assume
+    a Makefile-based build and simply run ``make install`` as the default build
+    step. This can be overridden with custom install commands if required.
+
+    ``INSTALL_COMMAND <cmd>...``
+      The external project's own install step is invoked as part of the main
+      project's *build*. It is done after the external project's build step
+      and may be before or after the external project's test step (see the
+      ``TEST_BEFORE_INSTALL`` option below). The external project's install
+      rules are not part of the main project's install rules, so if anything
+      from the external project should be installed as part of the main build,
+      these need to be specified in the main build as additional
+      :command:`install` commands. The default install step builds the
+      ``install`` target of the external project, but this can be overridden
+      with a custom command using this option
+      (:manual:`generator expressions <cmake-generator-expressions(7)>` are
+      supported). Passing an empty string as the ``<cmd>`` makes the install
+      step do nothing.
+
+    .. note::
+      If the :envvar:`CMAKE_INSTALL_MODE` environment variable is set when the
+      main project is built, it will only have an effect if the following
+      conditions are met:
+
+      * The main project's configure step assumed the external project uses
+        CMake as its build system.
+      * The external project's install command actually runs. Note that due
+        to the way ``ExternalProject`` may use timestamps internally, if
+        nothing the install step depends on needs to be re-executed, the
+        install command might also not need to run.
+
+      Note also that ``ExternalProject`` does not check whether the
+      :envvar:`CMAKE_INSTALL_MODE` environment variable changes from one run
+      to another.
+
+  **Test Step Options:**
+    The test step is only defined if at least one of the following ``TEST_...``
+    options are provided.
+
+    ``TEST_COMMAND <cmd>...``
+      Overrides the default test command
+      (:manual:`generator expressions <cmake-generator-expressions(7)>` are
+      supported). If this option is not given, the default behavior of the test
+      step is to build the external project's own ``test`` target. This option
+      can be specified with ``<cmd>`` as an empty string, which allows the test
+      step to still be defined, but it will do nothing. Do not specify any of
+      the other ``TEST_...`` options if providing an empty string as the test
+      command, but prefer to omit all ``TEST_...`` options altogether if the
+      test step target is not needed.
+
+    ``TEST_BEFORE_INSTALL <bool>``
+      When this option is enabled, the test step will be executed before the
+      install step. The default behavior is for the test step to run after the
+      install step.
+
+    ``TEST_AFTER_INSTALL <bool>``
+      This option is mainly useful as a way to indicate that the test step is
+      desired but all default behavior is sufficient. Specifying this option
+      with a boolean true value ensures the test step is defined and that it
+      comes after the install step. If both ``TEST_BEFORE_INSTALL`` and
+      ``TEST_AFTER_INSTALL`` are enabled, the latter is silently ignored.
+
+    ``TEST_EXCLUDE_FROM_MAIN <bool>``
+      .. versionadded:: 3.2
+
+      If enabled, the main build's default ALL target will not depend on the
+      test step. This can be a useful way of ensuring the test step is defined
+      but only gets invoked when manually requested.
+      This may cause a step target to be created automatically for either
+      the ``install`` or ``build`` step.  See policy :policy:`CMP0114`.
+
+  **Output Logging Options:**
+    Each of the following ``LOG_...`` options can be used to wrap the relevant
+    step in a script to capture its output to files. The log files will be
+    created in ``LOG_DIR`` if supplied or otherwise the ``STAMP_DIR``
+    directory with step-specific file names.
+
+    ``LOG_DOWNLOAD <bool>``
+      When enabled, the output of the download step is logged to files.
+
+    ``LOG_UPDATE <bool>``
+      When enabled, the output of the update step is logged to files.
+
+    ``LOG_PATCH <bool>``
+      .. versionadded:: 3.14
+
+      When enabled, the output of the patch step is logged to files.
+
+    ``LOG_CONFIGURE <bool>``
+      When enabled, the output of the configure step is logged to files.
+
+    ``LOG_BUILD <bool>``
+      When enabled, the output of the build step is logged to files.
+
+    ``LOG_INSTALL <bool>``
+      When enabled, the output of the install step is logged to files.
+
+    ``LOG_TEST <bool>``
+      When enabled, the output of the test step is logged to files.
+
+    ``LOG_MERGED_STDOUTERR <bool>``
+      .. versionadded:: 3.14
+
+      When enabled, stdout and stderr will be merged for any step whose
+      output is being logged to files.
+
+    ``LOG_OUTPUT_ON_FAILURE <bool>``
+      .. versionadded:: 3.14
+
+      This option only has an effect if at least one of the other ``LOG_<step>``
+      options is enabled.  If an error occurs for a step which has logging to
+      file enabled, that step's output will be printed to the console if
+      ``LOG_OUTPUT_ON_FAILURE`` is set to true.  For cases where a large amount
+      of output is recorded, just the end of that output may be printed to the
+      console.
+
+  **Terminal Access Options:**
+    .. versionadded:: 3.4
+
+    Steps can be given direct access to the terminal in some cases. Giving a
+    step access to the terminal may allow it to receive terminal input if
+    required, such as for authentication details not provided by other options.
+    With the :generator:`Ninja` generator, these options place the steps in the
+    ``console`` :prop_gbl:`job pool <JOB_POOLS>`. Each step can be given access
+    to the terminal individually via the following options:
+
+    ``USES_TERMINAL_DOWNLOAD <bool>``
+      Give the download step access to the terminal.
+
+    ``USES_TERMINAL_UPDATE <bool>``
+      Give the update step access to the terminal.
+
+    ``USES_TERMINAL_CONFIGURE <bool>``
+      Give the configure step access to the terminal.
+
+    ``USES_TERMINAL_BUILD <bool>``
+      Give the build step access to the terminal.
+
+    ``USES_TERMINAL_INSTALL <bool>``
+      Give the install step access to the terminal.
+
+    ``USES_TERMINAL_TEST <bool>``
+      Give the test step access to the terminal.
+
+  **Target Options:**
+    ``DEPENDS <targets>...``
+      Specify other targets on which the external project depends. The other
+      targets will be brought up to date before any of the external project's
+      steps are executed. Because the external project uses additional custom
+      targets internally for each step, the ``DEPENDS`` option is the most
+      convenient way to ensure all of those steps depend on the other targets.
+      Simply doing
+      :command:`add_dependencies(\<name\> \<targets\>) <add_dependencies>` will
+      not make any of the steps dependent on ``<targets>``.
+
+    ``EXCLUDE_FROM_ALL <bool>``
+      When enabled, this option excludes the external project from the default
+      ALL target of the main build.
+
+    ``STEP_TARGETS <step-target>...``
+      Generate custom targets for the specified steps. This is required if the
+      steps need to be triggered manually or if they need to be used as
+      dependencies of other targets. If this option is not specified, the
+      default value is taken from the ``EP_STEP_TARGETS`` directory property.
+      See :command:`ExternalProject_Add_StepTargets` below for further
+      discussion of the effects of this option.
+
+    ``INDEPENDENT_STEP_TARGETS <step-target>...``
+      .. deprecated:: 3.19
+        This is allowed only if policy :policy:`CMP0114` is not set to ``NEW``.
+
+      Generates custom targets for the specified steps and prevent these targets
+      from having the usual dependencies applied to them. If this option is not
+      specified, the default value is taken from the
+      ``EP_INDEPENDENT_STEP_TARGETS`` directory property. This option is mostly
+      useful for allowing individual steps to be driven independently, such as
+      for a CDash setup where each step should be initiated and reported
+      individually rather than as one whole build. See
+      :command:`ExternalProject_Add_StepTargets` below for further discussion
+      of the effects of this option.
+
+  **Miscellaneous Options:**
+    ``LIST_SEPARATOR <sep>``
+      For any of the various ``..._COMMAND`` options, replace ``;`` with
+      ``<sep>`` in the specified command lines. This can be useful where list
+      variables may be given in commands where they should end up as
+      space-separated arguments (``<sep>`` would be a single space character
+      string in this case).
+
+    ``COMMAND <cmd>...``
+      Any of the other ``..._COMMAND`` options can have additional commands
+      appended to them by following them with as many ``COMMAND ...`` options
+      as needed
+      (:manual:`generator expressions <cmake-generator-expressions(7)>` are
+      supported). For example:
+
+      .. code-block:: cmake
+
+        ExternalProject_Add(example
+          ... # Download options, etc.
+          BUILD_COMMAND ${CMAKE_COMMAND} -E echo "Starting $<CONFIG> build"
+          COMMAND       ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG>
+          COMMAND       ${CMAKE_COMMAND} -E echo "$<CONFIG> build complete"
+        )
+
+  It should also be noted that each build step is created via a call to
+  :command:`ExternalProject_Add_Step`. See that command's documentation for the
+  automatic substitutions that are supported for some options.
+
+Obtaining Project Properties
+""""""""""""""""""""""""""""
+
+.. command:: ExternalProject_Get_Property
+
+  The ``ExternalProject_Get_Property()`` function retrieves external project
+  target properties:
+
+  .. code-block:: cmake
+
+    ExternalProject_Get_Property(<name> <prop1> [<prop2>...])
+
+  The function stores property values in variables of the same name. Property
+  names correspond to the keyword argument names of ``ExternalProject_Add()``.
+  For example, the source directory might be retrieved like so:
+
+  .. code-block:: cmake
+
+    ExternalProject_Get_property(myExtProj SOURCE_DIR)
+    message("Source dir of myExtProj = ${SOURCE_DIR}")
+
+Explicit Step Management
+""""""""""""""""""""""""
+
+The ``ExternalProject_Add()`` function on its own is often sufficient for
+incorporating an external project into the main build. Certain scenarios
+require additional work to implement desired behavior, such as adding in a
+custom step or making steps available as manually triggerable targets. The
+``ExternalProject_Add_Step()``, ``ExternalProject_Add_StepTargets()`` and
+``ExternalProject_Add_StepDependencies`` functions provide the lower level
+control needed to implement such step-level capabilities.
+
+.. command:: ExternalProject_Add_Step
+
+  The ``ExternalProject_Add_Step()`` function specifies an additional custom
+  step for an external project defined by an earlier call to
+  :command:`ExternalProject_Add`:
+
+  .. code-block:: cmake
+
+    ExternalProject_Add_Step(<name> <step> [<option>...])
+
+  ``<name>`` is the same as the name passed to the original call to
+  :command:`ExternalProject_Add`. The specified ``<step>`` must not be one of
+  the pre-defined steps (``mkdir``, ``download``, ``update``,
+  ``patch``, ``configure``, ``build``, ``install`` or ``test``). The supported
+  options are:
+
+  ``COMMAND <cmd>...``
+    The command line to be executed by this custom step
+    (:manual:`generator expressions <cmake-generator-expressions(7)>` are
+    supported). This option can be repeated multiple times to specify multiple
+    commands to be executed in order.
+
+  ``COMMENT "<text>..."``
+    Text to be printed when the custom step executes.
+
+  ``DEPENDEES <step>...``
+    Other steps (custom or pre-defined) on which this step depends.
+
+  ``DEPENDERS <step>...``
+    Other steps (custom or pre-defined) that depend on this new custom step.
+
+  ``DEPENDS <file>...``
+    Files on which this custom step depends.
+
+  ``INDEPENDENT <bool>``
+    .. versionadded:: 3.19
+
+    Specifies whether this step is independent of the external dependencies
+    specified by the :command:`ExternalProject_Add`'s ``DEPENDS`` option.
+    The default is ``FALSE``.  Steps marked as independent may depend only
+    on other steps marked independent.  See policy :policy:`CMP0114`.
+
+    Note that this use of the term "independent" refers only to independence
+    from external targets specified by the ``DEPENDS`` option and is
+    orthogonal to a step's dependencies on other steps.
+
+    If a step target is created for an independent step by the
+    :command:`ExternalProject_Add` ``STEP_TARGETS`` option or by the
+    :command:`ExternalProject_Add_StepTargets` function, it will not depend
+    on the external targets, but may depend on targets for other steps.
+
+  ``BYPRODUCTS <file>...``
+    .. versionadded:: 3.2
+
+    Files that will be generated by this custom step but which might or might
+    not have their modification time updated by subsequent builds. This list of
+    files will ultimately be passed through as the ``BYPRODUCTS`` option to the
+    :command:`add_custom_command` used to implement the custom step internally.
+
+  ``ALWAYS <bool>``
+    When enabled, this option specifies that the custom step should always be
+    run (i.e. that it is always considered out of date).
+
+  ``EXCLUDE_FROM_MAIN <bool>``
+    When enabled, this option specifies that the external project's main target
+    does not depend on the custom step.
+    This may cause step targets to be created automatically for the steps on
+    which this step depends.  See policy :policy:`CMP0114`.
+
+  ``WORKING_DIRECTORY <dir>``
+    Specifies the working directory to set before running the custom step's
+    command. If this option is not specified, the directory will be the value
+    of the :variable:`CMAKE_CURRENT_BINARY_DIR` at the point where
+    ``ExternalProject_Add_Step()`` was called.
+
+  ``LOG <bool>``
+    If set, this causes the output from the custom step to be captured to files
+    in the external project's ``LOG_DIR`` if supplied or ``STAMP_DIR``.
+
+  ``USES_TERMINAL <bool>``
+    If enabled, this gives the custom step direct access to the terminal if
+    possible.
+
+  The command line, comment, working directory and byproducts of every
+  standard and custom step are processed to replace the tokens
+  ``<SOURCE_DIR>``, ``<SOURCE_SUBDIR>``, ``<BINARY_DIR>``, ``<INSTALL_DIR>``
+  ``<TMP_DIR>``, ``<DOWNLOAD_DIR>`` and ``<DOWNLOADED_FILE>`` with their
+  corresponding property values defined in the original call to
+  :command:`ExternalProject_Add`.
+
+  .. versionadded:: 3.3
+    Token replacement is extended to byproducts.
+
+  .. versionadded:: 3.11
+    The ``<DOWNLOAD_DIR>`` substitution token.
+
+.. command:: ExternalProject_Add_StepTargets
+
+  The ``ExternalProject_Add_StepTargets()`` function generates targets for the
+  steps listed. The name of each created target will be of the form
+  ``<name>-<step>``:
+
+  .. code-block:: cmake
+
+    ExternalProject_Add_StepTargets(<name> <step1> [<step2>...])
+
+  Creating a target for a step allows it to be used as a dependency of another
+  target or to be triggered manually. Having targets for specific steps also
+  allows them to be driven independently of each other by specifying targets on
+  build command lines. For example, you may be submitting to a sub-project
+  based dashboard where you want to drive the configure portion of the build,
+  then submit to the dashboard, followed by the build portion, followed
+  by tests. If you invoke a custom target that depends on a step halfway
+  through the step dependency chain, then all the previous steps will also run
+  to ensure everything is up to date.
+
+  Internally, :command:`ExternalProject_Add` calls
+  :command:`ExternalProject_Add_Step` to create each step. If any
+  ``STEP_TARGETS`` were specified, then ``ExternalProject_Add_StepTargets()``
+  will also be called after :command:`ExternalProject_Add_Step`.  Even if a
+  step is not mentioned in the ``STEP_TARGETS`` option,
+  ``ExternalProject_Add_StepTargets()`` can still be called later to manually
+  define a target for the step.
+
+  The ``STEP_TARGETS`` option for :command:`ExternalProject_Add` is generally
+  the easiest way to ensure targets are created for specific steps of interest.
+  For custom steps, ``ExternalProject_Add_StepTargets()`` must be called
+  explicitly if a target should also be created for that custom step.
+  An alternative to these two options is to populate the ``EP_STEP_TARGETS``
+  directory property.  It acts as a default for the step target options and
+  can save having to repeatedly specify the same set of step targets when
+  multiple external projects are being defined.
+
+  .. versionadded:: 3.19
+    If :policy:`CMP0114` is set to ``NEW``, step targets are fully responsible
+    for holding the custom commands implementing their steps.  The primary target
+    created by ``ExternalProject_Add`` depends on the step targets, and the
+    step targets depend on each other.  The target-level dependencies match
+    the file-level dependencies used by the custom commands for each step.
+    The targets for steps created with :command:`ExternalProject_Add_Step`'s
+    ``INDEPENDENT`` option do not depend on the external targets specified
+    by :command:`ExternalProject_Add`'s ``DEPENDS`` option.  The predefined
+    steps ``mkdir``, ``download``, ``update``, and ``patch`` are independent.
+
+  If :policy:`CMP0114` is not ``NEW``, the following deprecated behavior
+  is available:
+
+  * A deprecated ``NO_DEPENDS`` option may be specified immediately after the
+    ``<name>`` and before the first step.
+    If the ``NO_DEPENDS`` option is specified, the step target will not depend on
+    the dependencies of the external project (i.e. on any dependencies of the
+    ``<name>`` custom target created by :command:`ExternalProject_Add`). This is
+    usually safe for the ``download``, ``update`` and ``patch`` steps, since they
+    do not typically require that the dependencies are updated and built. Using
+    ``NO_DEPENDS`` for any of the other pre-defined steps, however, may break
+    parallel builds. Only use ``NO_DEPENDS`` where it is certain that the named
+    steps genuinely do not have dependencies. For custom steps, consider whether
+    or not the custom commands require the dependencies to be configured, built
+    and installed.
+
+  * The ``INDEPENDENT_STEP_TARGETS`` option for :command:`ExternalProject_Add`,
+    or the ``EP_INDEPENDENT_STEP_TARGETS`` directory property, tells the
+    function to call ``ExternalProject_Add_StepTargets()`` internally
+    using the ``NO_DEPENDS`` option for the specified steps.
+
+.. command:: ExternalProject_Add_StepDependencies
+
+  .. versionadded:: 3.2
+
+  The ``ExternalProject_Add_StepDependencies()`` function can be used to add
+  dependencies to a step. The dependencies added must be targets CMake already
+  knows about (these can be ordinary executable or library targets, custom
+  targets or even step targets of another external project):
+
+  .. code-block:: cmake
+
+    ExternalProject_Add_StepDependencies(<name> <step> <target1> [<target2>...])
+
+  This function takes care to set both target and file level dependencies and
+  will ensure that parallel builds will not break. It should be used instead of
+  :command:`add_dependencies` whenever adding a dependency for some of the step
+  targets generated by the ``ExternalProject`` module.
+
+Examples
+^^^^^^^^
+
+The following example shows how to download and build a hypothetical project
+called *FooBar* from github:
+
+.. code-block:: cmake
+
+  include(ExternalProject)
+  ExternalProject_Add(foobar
+    GIT_REPOSITORY    git@github.com:FooCo/FooBar.git
+    GIT_TAG           origin/release/1.2.3
+  )
+
+For the sake of the example, also define a second hypothetical external project
+called *SecretSauce*, which is downloaded from a web server. Two URLs are given
+to take advantage of a faster internal network if available, with a fallback to
+a slower external server. The project is a typical ``Makefile`` project with no
+configure step, so some of the default commands are overridden. The build is
+only required to build the *sauce* target:
+
+.. code-block:: cmake
+
+  find_program(MAKE_EXE NAMES gmake nmake make)
+  ExternalProject_Add(secretsauce
+    URL               http://intranet.somecompany.com/artifacts/sauce-2.7.tgz
+                      https://www.somecompany.com/downloads/sauce-2.7.zip
+    URL_HASH          MD5=d41d8cd98f00b204e9800998ecf8427e
+    CONFIGURE_COMMAND ""
+    BUILD_COMMAND     ${MAKE_EXE} sauce
+  )
+
+Suppose the build step of ``secretsauce`` requires that ``foobar`` must already
+be built. This could be enforced like so:
+
+.. code-block:: cmake
+
+  ExternalProject_Add_StepDependencies(secretsauce build foobar)
+
+Another alternative would be to create a custom target for ``foobar``'s build
+step and make ``secretsauce`` depend on that rather than the whole ``foobar``
+project. This would mean ``foobar`` only needs to be built, it doesn't need to
+run its install or test steps before ``secretsauce`` can be built. The
+dependency can also be defined along with the ``secretsauce`` project:
+
+.. code-block:: cmake
+
+  ExternalProject_Add_StepTargets(foobar build)
+  ExternalProject_Add(secretsauce
+    URL               http://intranet.somecompany.com/artifacts/sauce-2.7.tgz
+                      https://www.somecompany.com/downloads/sauce-2.7.zip
+    URL_HASH          MD5=d41d8cd98f00b204e9800998ecf8427e
+    CONFIGURE_COMMAND ""
+    BUILD_COMMAND     ${MAKE_EXE} sauce
+    DEPENDS           foobar-build
+  )
+
+Instead of calling :command:`ExternalProject_Add_StepTargets`, the target could
+be defined along with the ``foobar`` project itself:
+
+.. code-block:: cmake
+
+  ExternalProject_Add(foobar
+    GIT_REPOSITORY git@github.com:FooCo/FooBar.git
+    GIT_TAG        origin/release/1.2.3
+    STEP_TARGETS   build
+  )
+
+If many external projects should have the same set of step targets, setting a
+directory property may be more convenient. The ``build`` step target could be
+created automatically by setting the ``EP_STEP_TARGETS`` directory property
+before creating the external projects with :command:`ExternalProject_Add`:
+
+.. code-block:: cmake
+
+  set_property(DIRECTORY PROPERTY EP_STEP_TARGETS build)
+
+Lastly, suppose that ``secretsauce`` provides a script called ``makedoc`` which
+can be used to generate its own documentation. Further suppose that the script
+expects the output directory to be provided as the only parameter and that it
+should be run from the ``secretsauce`` source directory. A custom step and a
+custom target to trigger the script can be defined like so:
+
+.. code-block:: cmake
+
+  ExternalProject_Add_Step(secretsauce docs
+    COMMAND           <SOURCE_DIR>/makedoc <BINARY_DIR>
+    WORKING_DIRECTORY <SOURCE_DIR>
+    COMMENT           "Building secretsauce docs"
+    ALWAYS            TRUE
+    EXCLUDE_FROM_MAIN TRUE
+  )
+  ExternalProject_Add_StepTargets(secretsauce docs)
+
+The custom step could then be triggered from the main build like so::
+
+  cmake --build . --target secretsauce-docs
+
+#]=======================================================================]
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced
+cmake_policy(SET CMP0057 NEW) # if() supports IN_LIST
+
+macro(_ep_get_hash_algos out_var)
+  set(${out_var}
+    MD5
+    SHA1
+    SHA224
+    SHA256
+    SHA384
+    SHA512
+    SHA3_224
+    SHA3_256
+    SHA3_384
+    SHA3_512
+  )
+endmacro()
+
+macro(_ep_get_hash_regex out_var)
+  _ep_get_hash_algos(${out_var})
+  list(JOIN ${out_var} "|" ${out_var})
+  set(${out_var} "^(${${out_var}})=([0-9A-Fa-f]+)$")
+endmacro()
+
+function(_ep_parse_arguments f keywords name ns args)
+  # Transfer the arguments to this function into target properties for the
+  # new custom target we just added so that we can set up all the build steps
+  # correctly based on target properties.
+  #
+  # Because some keywords can be repeated, we can't use cmake_parse_arguments().
+  # Instead, we loop through ARGN and consider the namespace starting with an
+  # upper-case letter followed by at least two more upper-case letters,
+  # numbers or underscores to be keywords.
+
+  set(key)
+
+  foreach(arg IN LISTS args)
+    set(is_value 1)
+
+    if(arg MATCHES "^[A-Z][A-Z0-9_][A-Z0-9_]+$" AND
+        NOT (("x${arg}x" STREQUAL "x${key}x") AND ("x${key}x" STREQUAL "xCOMMANDx")) AND
+        NOT arg MATCHES "^(TRUE|FALSE)$")
+      if(arg IN_LIST keywords)
+        set(is_value 0)
+      endif()
+    endif()
+
+    if(is_value)
+      if(key)
+        # Value
+        if(NOT arg STREQUAL "")
+          set_property(TARGET ${name} APPEND PROPERTY ${ns}${key} "${arg}")
+        else()
+          get_property(have_key TARGET ${name} PROPERTY ${ns}${key} SET)
+          if(have_key)
+            get_property(value TARGET ${name} PROPERTY ${ns}${key})
+            set_property(TARGET ${name} PROPERTY ${ns}${key} "${value};${arg}")
+          else()
+            set_property(TARGET ${name} PROPERTY ${ns}${key} "${arg}")
+          endif()
+        endif()
+      else()
+        # Missing Keyword
+        message(AUTHOR_WARNING "value '${arg}' with no previous keyword in ${f}")
+      endif()
+    else()
+      set(key "${arg}")
+    endif()
+  endforeach()
+endfunction()
+
+
+define_property(DIRECTORY PROPERTY "EP_BASE" INHERITED
+  BRIEF_DOCS "Base directory for External Project storage."
+  FULL_DOCS
+  "See documentation of the ExternalProject_Add() function in the "
+  "ExternalProject module."
+  )
+
+define_property(DIRECTORY PROPERTY "EP_PREFIX" INHERITED
+  BRIEF_DOCS "Top prefix for External Project storage."
+  FULL_DOCS
+  "See documentation of the ExternalProject_Add() function in the "
+  "ExternalProject module."
+  )
+
+define_property(DIRECTORY PROPERTY "EP_STEP_TARGETS" INHERITED
+  BRIEF_DOCS
+  "List of ExternalProject steps that automatically get corresponding targets"
+  FULL_DOCS
+  "These targets will be dependent on the main target dependencies. "
+  "See documentation of the ExternalProject_Add_StepTargets() function in the "
+  "ExternalProject module."
+  )
+
+define_property(DIRECTORY PROPERTY "EP_INDEPENDENT_STEP_TARGETS" INHERITED
+  BRIEF_DOCS
+  "List of ExternalProject steps that automatically get corresponding targets"
+  FULL_DOCS
+  "These targets will not be dependent on the main target dependencies. "
+  "See documentation of the ExternalProject_Add_StepTargets() function in the "
+  "ExternalProject module."
+  )
+
+define_property(DIRECTORY PROPERTY "EP_UPDATE_DISCONNECTED" INHERITED
+  BRIEF_DOCS "Never update automatically from the remote repo."
+  FULL_DOCS
+  "See documentation of the ExternalProject_Add() function in the "
+  "ExternalProject module."
+  )
+
+function(_ep_write_gitclone_script script_filename source_dir git_EXECUTABLE git_repository git_tag git_remote_name init_submodules git_submodules_recurse git_submodules git_shallow git_progress git_config src_name work_dir gitclone_infofile gitclone_stampfile tls_verify)
+  if(NOT GIT_VERSION_STRING VERSION_LESS 1.8.5)
+    # Use `git checkout <tree-ish> --` to avoid ambiguity with a local path.
+    set(git_checkout_explicit-- "--")
+  else()
+    # Use `git checkout <branch>` even though this risks ambiguity with a
+    # local path.  Unfortunately we cannot use `git checkout <tree-ish> --`
+    # because that will not search for remote branch names, a common use case.
+    set(git_checkout_explicit-- "")
+  endif()
+  if("${git_tag}" STREQUAL "")
+    message(FATAL_ERROR "Tag for git checkout should not be empty.")
+  endif()
+
+  if(GIT_VERSION_STRING VERSION_LESS 2.20 OR 2.21 VERSION_LESS_EQUAL GIT_VERSION_STRING)
+    set(git_clone_options "--no-checkout")
+  else()
+    set(git_clone_options)
+  endif()
+  if(git_shallow)
+    if(NOT GIT_VERSION_STRING VERSION_LESS 1.7.10)
+      list(APPEND git_clone_options "--depth 1 --no-single-branch")
+    else()
+      list(APPEND git_clone_options "--depth 1")
+    endif()
+  endif()
+  if(git_progress)
+    list(APPEND git_clone_options --progress)
+  endif()
+  foreach(config IN LISTS git_config)
+    list(APPEND git_clone_options --config \"${config}\")
+  endforeach()
+  if(NOT ${git_remote_name} STREQUAL "origin")
+    list(APPEND git_clone_options --origin \"${git_remote_name}\")
+  endif()
+
+  string (REPLACE ";" " " git_clone_options "${git_clone_options}")
+
+  set(git_options)
+  # disable cert checking if explicitly told not to do it
+  if(NOT "x${tls_verify}" STREQUAL "x" AND NOT tls_verify)
+    set(git_options
+      -c http.sslVerify=false)
+  endif()
+  string (REPLACE ";" " " git_options "${git_options}")
+
+  file(WRITE ${script_filename}
+"
+if(NOT \"${gitclone_infofile}\" IS_NEWER_THAN \"${gitclone_stampfile}\")
+  message(STATUS \"Avoiding repeated git clone, stamp file is up to date: '${gitclone_stampfile}'\")
+  return()
+endif()
+
+execute_process(
+  COMMAND \${CMAKE_COMMAND} -E rm -rf \"${source_dir}\"
+  RESULT_VARIABLE error_code
+  )
+if(error_code)
+  message(FATAL_ERROR \"Failed to remove directory: '${source_dir}'\")
+endif()
+
+# try the clone 3 times in case there is an odd git clone issue
+set(error_code 1)
+set(number_of_tries 0)
+while(error_code AND number_of_tries LESS 3)
+  execute_process(
+    COMMAND \"${git_EXECUTABLE}\" ${git_options} clone ${git_clone_options} \"${git_repository}\" \"${src_name}\"
+    WORKING_DIRECTORY \"${work_dir}\"
+    RESULT_VARIABLE error_code
+    )
+  math(EXPR number_of_tries \"\${number_of_tries} + 1\")
+endwhile()
+if(number_of_tries GREATER 1)
+  message(STATUS \"Had to git clone more than once:
+          \${number_of_tries} times.\")
+endif()
+if(error_code)
+  message(FATAL_ERROR \"Failed to clone repository: '${git_repository}'\")
+endif()
+
+execute_process(
+  COMMAND \"${git_EXECUTABLE}\" ${git_options} checkout ${git_tag} ${git_checkout_explicit--}
+  WORKING_DIRECTORY \"${work_dir}/${src_name}\"
+  RESULT_VARIABLE error_code
+  )
+if(error_code)
+  message(FATAL_ERROR \"Failed to checkout tag: '${git_tag}'\")
+endif()
+
+set(init_submodules ${init_submodules})
+if(init_submodules)
+  execute_process(
+    COMMAND \"${git_EXECUTABLE}\" ${git_options} submodule update ${git_submodules_recurse} --init ${git_submodules}
+    WORKING_DIRECTORY \"${work_dir}/${src_name}\"
+    RESULT_VARIABLE error_code
+    )
+endif()
+if(error_code)
+  message(FATAL_ERROR \"Failed to update submodules in: '${work_dir}/${src_name}'\")
+endif()
+
+# Complete success, update the script-last-run stamp file:
+#
+execute_process(
+  COMMAND \${CMAKE_COMMAND} -E copy
+    \"${gitclone_infofile}\"
+    \"${gitclone_stampfile}\"
+  RESULT_VARIABLE error_code
+  )
+if(error_code)
+  message(FATAL_ERROR \"Failed to copy script-last-run stamp file: '${gitclone_stampfile}'\")
+endif()
+
+"
+)
+
+endfunction()
+
+function(_ep_write_hgclone_script script_filename source_dir hg_EXECUTABLE hg_repository hg_tag src_name work_dir hgclone_infofile hgclone_stampfile)
+  if("${hg_tag}" STREQUAL "")
+    message(FATAL_ERROR "Tag for hg checkout should not be empty.")
+  endif()
+  file(WRITE ${script_filename}
+"
+if(NOT \"${hgclone_infofile}\" IS_NEWER_THAN \"${hgclone_stampfile}\")
+  message(STATUS \"Avoiding repeated hg clone, stamp file is up to date: '${hgclone_stampfile}'\")
+  return()
+endif()
+
+execute_process(
+  COMMAND \${CMAKE_COMMAND} -E rm -rf \"${source_dir}\"
+  RESULT_VARIABLE error_code
+  )
+if(error_code)
+  message(FATAL_ERROR \"Failed to remove directory: '${source_dir}'\")
+endif()
+
+execute_process(
+  COMMAND \"${hg_EXECUTABLE}\" clone -U \"${hg_repository}\" \"${src_name}\"
+  WORKING_DIRECTORY \"${work_dir}\"
+  RESULT_VARIABLE error_code
+  )
+if(error_code)
+  message(FATAL_ERROR \"Failed to clone repository: '${hg_repository}'\")
+endif()
+
+execute_process(
+  COMMAND \"${hg_EXECUTABLE}\" update ${hg_tag}
+  WORKING_DIRECTORY \"${work_dir}/${src_name}\"
+  RESULT_VARIABLE error_code
+  )
+if(error_code)
+  message(FATAL_ERROR \"Failed to checkout tag: '${hg_tag}'\")
+endif()
+
+# Complete success, update the script-last-run stamp file:
+#
+execute_process(
+  COMMAND \${CMAKE_COMMAND} -E copy
+    \"${hgclone_infofile}\"
+    \"${hgclone_stampfile}\"
+  RESULT_VARIABLE error_code
+  )
+if(error_code)
+  message(FATAL_ERROR \"Failed to copy script-last-run stamp file: '${hgclone_stampfile}'\")
+endif()
+
+"
+)
+
+endfunction()
+
+
+function(_ep_write_gitupdate_script script_filename git_EXECUTABLE git_tag git_remote_name init_submodules git_submodules_recurse git_submodules git_repository work_dir git_update_strategy)
+  if("${git_tag}" STREQUAL "")
+    message(FATAL_ERROR "Tag for git checkout should not be empty.")
+  endif()
+  set(git_stash_save_options --quiet)
+  if(GIT_VERSION_STRING VERSION_GREATER_EQUAL 1.7.7)
+    # This avoids stashing files covered by .gitignore
+    list(APPEND git_stash_save_options --include-untracked)
+  elseif(GIT_VERSION_STRING VERSION_GREATER_EQUAL 1.7.6)
+    # Untracked files, but also ignored files, so potentially slower
+    list(APPEND git_stash_save_options --all)
+  endif()
+
+  configure_file(
+      "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/ExternalProject-gitupdate.cmake.in"
+      "${script_filename}"
+      @ONLY
+  )
+endfunction()
+
+function(_ep_write_downloadfile_script script_filename REMOTE LOCAL timeout inactivity_timeout no_progress hash tls_verify tls_cainfo userpwd http_headers netrc netrc_file)
+  if(timeout)
+    set(TIMEOUT_ARGS TIMEOUT ${timeout})
+    set(TIMEOUT_MSG "${timeout} seconds")
+  else()
+    set(TIMEOUT_ARGS "# no TIMEOUT")
+    set(TIMEOUT_MSG "none")
+  endif()
+  if(inactivity_timeout)
+    set(INACTIVITY_TIMEOUT_ARGS INACTIVITY_TIMEOUT ${inactivity_timeout})
+    set(INACTIVITY_TIMEOUT_MSG "${inactivity_timeout} seconds")
+  else()
+    set(INACTIVITY_TIMEOUT_ARGS "# no INACTIVITY_TIMEOUT")
+    set(INACTIVITY_TIMEOUT_MSG "none")
+  endif()
+
+
+  if(no_progress)
+    set(SHOW_PROGRESS "")
+  else()
+    set(SHOW_PROGRESS "SHOW_PROGRESS")
+  endif()
+
+  _ep_get_hash_regex(_ep_hash_regex)
+  if("${hash}" MATCHES "${_ep_hash_regex}")
+    set(ALGO "${CMAKE_MATCH_1}")
+    string(TOLOWER "${CMAKE_MATCH_2}" EXPECT_VALUE)
+  else()
+    set(ALGO "")
+    set(EXPECT_VALUE "")
+  endif()
+
+  set(TLS_VERIFY_CODE "")
+  set(TLS_CAINFO_CODE "")
+  set(NETRC_CODE "")
+  set(NETRC_FILE_CODE "")
+
+  # check for curl globals in the project
+  if(DEFINED CMAKE_TLS_VERIFY)
+    set(TLS_VERIFY_CODE "set(CMAKE_TLS_VERIFY ${CMAKE_TLS_VERIFY})")
+  endif()
+  if(DEFINED CMAKE_TLS_CAINFO)
+    set(TLS_CAINFO_CODE "set(CMAKE_TLS_CAINFO \"${CMAKE_TLS_CAINFO}\")")
+  endif()
+  if(DEFINED CMAKE_NETRC)
+    set(NETRC_CODE "set(CMAKE_NETRC \"${CMAKE_NETRC}\")")
+  endif()
+  if(DEFINED CMAKE_NETRC_FILE)
+    set(NETRC_FILE_CODE "set(CMAKE_NETRC_FILE \"${CMAKE_NETRC_FILE}\")")
+  endif()
+
+  # now check for curl locals so that the local values
+  # will override the globals
+
+  # check for tls_verify argument
+  string(LENGTH "${tls_verify}" tls_verify_len)
+  if(tls_verify_len GREATER 0)
+    set(TLS_VERIFY_CODE "set(CMAKE_TLS_VERIFY ${tls_verify})")
+  endif()
+  # check for tls_cainfo argument
+  string(LENGTH "${tls_cainfo}" tls_cainfo_len)
+  if(tls_cainfo_len GREATER 0)
+    set(TLS_CAINFO_CODE "set(CMAKE_TLS_CAINFO \"${tls_cainfo}\")")
+  endif()
+  # check for netrc argument
+  string(LENGTH "${netrc}" netrc_len)
+  if(netrc_len GREATER 0)
+    set(NETRC_CODE "set(CMAKE_NETRC \"${netrc}\")")
+  endif()
+  # check for netrc_file argument
+  string(LENGTH "${netrc_file}" netrc_file_len)
+  if(netrc_file_len GREATER 0)
+    set(NETRC_FILE_CODE "set(CMAKE_NETRC_FILE \"${netrc_file}\")")
+  endif()
+
+  if(userpwd STREQUAL ":")
+    set(USERPWD_ARGS)
+  else()
+    set(USERPWD_ARGS USERPWD "${userpwd}")
+  endif()
+
+  set(HTTP_HEADERS_ARGS "")
+  if(NOT http_headers STREQUAL "")
+    foreach(header ${http_headers})
+      set(
+          HTTP_HEADERS_ARGS
+          "HTTPHEADER \"${header}\"\n        ${HTTP_HEADERS_ARGS}"
+      )
+    endforeach()
+  endif()
+
+  # Used variables:
+  # * TLS_VERIFY_CODE
+  # * TLS_CAINFO_CODE
+  # * ALGO
+  # * EXPECT_VALUE
+  # * REMOTE
+  # * LOCAL
+  # * SHOW_PROGRESS
+  # * TIMEOUT_ARGS
+  # * TIMEOUT_MSG
+  # * USERPWD_ARGS
+  # * HTTP_HEADERS_ARGS
+  configure_file(
+      "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/ExternalProject-download.cmake.in"
+      "${script_filename}"
+      @ONLY
+  )
+endfunction()
+
+function(_ep_write_verifyfile_script script_filename LOCAL hash)
+  _ep_get_hash_regex(_ep_hash_regex)
+  if("${hash}" MATCHES "${_ep_hash_regex}")
+    set(ALGO "${CMAKE_MATCH_1}")
+    string(TOLOWER "${CMAKE_MATCH_2}" EXPECT_VALUE)
+  else()
+    set(ALGO "")
+    set(EXPECT_VALUE "")
+  endif()
+
+  # Used variables:
+  # * ALGO
+  # * EXPECT_VALUE
+  # * LOCAL
+  configure_file(
+      "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/ExternalProject-verify.cmake.in"
+      "${script_filename}"
+      @ONLY
+  )
+endfunction()
+
+
+function(_ep_write_extractfile_script script_filename name filename directory)
+  set(args "")
+
+  if(filename MATCHES "(\\.|=)(7z|tar\\.bz2|tar\\.gz|tar\\.xz|tbz2|tgz|txz|zip)$")
+    set(args xfz)
+  endif()
+
+  if(filename MATCHES "(\\.|=)tar$")
+    set(args xf)
+  endif()
+
+  if(args STREQUAL "")
+    message(SEND_ERROR "error: do not know how to extract '${filename}' -- known types are .7z, .tar, .tar.bz2, .tar.gz, .tar.xz, .tbz2, .tgz, .txz and .zip")
+    return()
+  endif()
+
+  file(WRITE ${script_filename}
+"# Make file names absolute:
+#
+get_filename_component(filename \"${filename}\" ABSOLUTE)
+get_filename_component(directory \"${directory}\" ABSOLUTE)
+
+message(STATUS \"extracting...
+     src='\${filename}'
+     dst='\${directory}'\")
+
+if(NOT EXISTS \"\${filename}\")
+  message(FATAL_ERROR \"error: file to extract does not exist: '\${filename}'\")
+endif()
+
+# Prepare a space for extracting:
+#
+set(i 1234)
+while(EXISTS \"\${directory}/../ex-${name}\${i}\")
+  math(EXPR i \"\${i} + 1\")
+endwhile()
+set(ut_dir \"\${directory}/../ex-${name}\${i}\")
+file(MAKE_DIRECTORY \"\${ut_dir}\")
+
+# Extract it:
+#
+message(STATUS \"extracting... [tar ${args}]\")
+execute_process(COMMAND \${CMAKE_COMMAND} -E tar ${args} \${filename}
+  WORKING_DIRECTORY \${ut_dir}
+  RESULT_VARIABLE rv)
+
+if(NOT rv EQUAL 0)
+  message(STATUS \"extracting... [error clean up]\")
+  file(REMOVE_RECURSE \"\${ut_dir}\")
+  message(FATAL_ERROR \"error: extract of '\${filename}' failed\")
+endif()
+
+# Analyze what came out of the tar file:
+#
+message(STATUS \"extracting... [analysis]\")
+file(GLOB contents \"\${ut_dir}/*\")
+list(REMOVE_ITEM contents \"\${ut_dir}/.DS_Store\")
+list(LENGTH contents n)
+if(NOT n EQUAL 1 OR NOT IS_DIRECTORY \"\${contents}\")
+  set(contents \"\${ut_dir}\")
+endif()
+
+# Move \"the one\" directory to the final directory:
+#
+message(STATUS \"extracting... [rename]\")
+file(REMOVE_RECURSE \${directory})
+get_filename_component(contents \${contents} ABSOLUTE)
+file(RENAME \${contents} \${directory})
+
+# Clean up:
+#
+message(STATUS \"extracting... [clean up]\")
+file(REMOVE_RECURSE \"\${ut_dir}\")
+
+message(STATUS \"extracting... done\")
+"
+)
+
+endfunction()
+
+
+function(_ep_set_directories name)
+  get_property(prefix TARGET ${name} PROPERTY _EP_PREFIX)
+  if(NOT prefix)
+    get_property(prefix DIRECTORY PROPERTY EP_PREFIX)
+    if(NOT prefix)
+      get_property(base DIRECTORY PROPERTY EP_BASE)
+      if(NOT base)
+        set(prefix "${name}-prefix")
+      endif()
+    endif()
+  endif()
+  if(prefix)
+    set(tmp_default "${prefix}/tmp")
+    set(download_default "${prefix}/src")
+    set(source_default "${prefix}/src/${name}")
+    set(binary_default "${prefix}/src/${name}-build")
+    set(stamp_default "${prefix}/src/${name}-stamp")
+    set(install_default "${prefix}")
+  else()
+    set(tmp_default "${base}/tmp/${name}")
+    set(download_default "${base}/Download/${name}")
+    set(source_default "${base}/Source/${name}")
+    set(binary_default "${base}/Build/${name}")
+    set(stamp_default "${base}/Stamp/${name}")
+    set(install_default "${base}/Install/${name}")
+  endif()
+  get_property(build_in_source TARGET ${name} PROPERTY _EP_BUILD_IN_SOURCE)
+  if(build_in_source)
+    get_property(have_binary_dir TARGET ${name} PROPERTY _EP_BINARY_DIR SET)
+    if(have_binary_dir)
+      message(FATAL_ERROR
+        "External project ${name} has both BINARY_DIR and BUILD_IN_SOURCE!")
+    endif()
+  endif()
+  set(top "${CMAKE_CURRENT_BINARY_DIR}")
+
+  # Apply defaults and convert to absolute paths.
+  set(places stamp download source binary install tmp)
+  foreach(var ${places})
+    string(TOUPPER "${var}" VAR)
+    get_property(${var}_dir TARGET ${name} PROPERTY _EP_${VAR}_DIR)
+    if(NOT ${var}_dir)
+      set(${var}_dir "${${var}_default}")
+    endif()
+    if(NOT IS_ABSOLUTE "${${var}_dir}")
+      get_filename_component(${var}_dir "${top}/${${var}_dir}" ABSOLUTE)
+    endif()
+    set_property(TARGET ${name} PROPERTY _EP_${VAR}_DIR "${${var}_dir}")
+  endforeach()
+
+  # Special case for default log directory based on stamp directory.
+  get_property(log_dir TARGET ${name} PROPERTY _EP_LOG_DIR)
+  if(NOT log_dir)
+    get_property(log_dir TARGET ${name} PROPERTY _EP_STAMP_DIR)
+  endif()
+  if(NOT IS_ABSOLUTE "${log_dir}")
+    get_filename_component(log_dir "${top}/${log_dir}" ABSOLUTE)
+  endif()
+  set_property(TARGET ${name} PROPERTY _EP_LOG_DIR "${log_dir}")
+
+  get_property(source_subdir TARGET ${name} PROPERTY _EP_SOURCE_SUBDIR)
+  if(NOT source_subdir)
+    set_property(TARGET ${name} PROPERTY _EP_SOURCE_SUBDIR "")
+  elseif(IS_ABSOLUTE "${source_subdir}")
+    message(FATAL_ERROR
+      "External project ${name} has non-relative SOURCE_SUBDIR!")
+  else()
+    # Prefix with a slash so that when appended to the source directory, it
+    # behaves as expected.
+    set_property(TARGET ${name} PROPERTY _EP_SOURCE_SUBDIR "/${source_subdir}")
+  endif()
+  if(build_in_source)
+    get_property(source_dir TARGET ${name} PROPERTY _EP_SOURCE_DIR)
+    if(source_subdir)
+      set_property(TARGET ${name} PROPERTY _EP_BINARY_DIR "${source_dir}/${source_subdir}")
+    else()
+      set_property(TARGET ${name} PROPERTY _EP_BINARY_DIR "${source_dir}")
+    endif()
+  endif()
+
+  # Make the directories at CMake configure time *and* add a custom command
+  # to make them at build time. They need to exist at makefile generation
+  # time for Borland make and wmake so that CMake may generate makefiles
+  # with "cd C:\short\paths\with\no\spaces" commands in them.
+  #
+  # Additionally, the add_custom_command is still used in case somebody
+  # removes one of the necessary directories and tries to rebuild without
+  # re-running cmake.
+  foreach(var ${places})
+    string(TOUPPER "${var}" VAR)
+    get_property(dir TARGET ${name} PROPERTY _EP_${VAR}_DIR)
+    file(MAKE_DIRECTORY "${dir}")
+    if(NOT EXISTS "${dir}")
+      message(FATAL_ERROR "dir '${dir}' does not exist after file(MAKE_DIRECTORY)")
+    endif()
+  endforeach()
+endfunction()
+
+
+# IMPORTANT: this MUST be a macro and not a function because of the
+# in-place replacements that occur in each ${var}
+#
+macro(_ep_replace_location_tags target_name)
+  set(vars ${ARGN})
+  foreach(var ${vars})
+    if(${var})
+      foreach(dir SOURCE_DIR SOURCE_SUBDIR BINARY_DIR INSTALL_DIR TMP_DIR DOWNLOAD_DIR DOWNLOADED_FILE LOG_DIR)
+        get_property(val TARGET ${target_name} PROPERTY _EP_${dir})
+        string(REPLACE "<${dir}>" "${val}" ${var} "${${var}}")
+      endforeach()
+    endif()
+  endforeach()
+endmacro()
+
+
+function(_ep_command_line_to_initial_cache var args force)
+  set(script_initial_cache "")
+  set(regex "^([^:]+):([^=]+)=(.*)$")
+  set(setArg "")
+  set(forceArg "")
+  if(force)
+    set(forceArg "FORCE")
+  endif()
+  foreach(line ${args})
+    if("${line}" MATCHES "^-D(.*)")
+      set(line "${CMAKE_MATCH_1}")
+      if(NOT "${setArg}" STREQUAL "")
+        # This is required to build up lists in variables, or complete an entry
+        string(APPEND setArg "${accumulator}\" CACHE ${type} \"Initial cache\" ${forceArg})")
+        string(APPEND script_initial_cache "\n${setArg}")
+        set(accumulator "")
+        set(setArg "")
+      endif()
+      if("${line}" MATCHES "${regex}")
+        set(name "${CMAKE_MATCH_1}")
+        set(type "${CMAKE_MATCH_2}")
+        set(value "${CMAKE_MATCH_3}")
+        set(setArg "set(${name} \"${value}")
+      else()
+        message(WARNING "Line '${line}' does not match regex. Ignoring.")
+      endif()
+    else()
+      # Assume this is a list to append to the last var
+      string(APPEND accumulator ";${line}")
+    endif()
+  endforeach()
+  # Catch the final line of the args
+  if(NOT "${setArg}" STREQUAL "")
+    string(APPEND setArg "${accumulator}\" CACHE ${type} \"Initial cache\" ${forceArg})")
+    string(APPEND script_initial_cache "\n${setArg}")
+  endif()
+  set(${var} ${script_initial_cache} PARENT_SCOPE)
+endfunction()
+
+
+function(_ep_write_initial_cache target_name script_filename script_initial_cache)
+  # Write out values into an initial cache, that will be passed to CMake with -C
+  # Replace location tags.
+  _ep_replace_location_tags(${target_name} script_initial_cache)
+  _ep_replace_location_tags(${target_name} script_filename)
+  # Replace list separators.
+  get_property(sep TARGET ${target_name} PROPERTY _EP_LIST_SEPARATOR)
+  if(sep AND script_initial_cache)
+    string(REPLACE "${sep}" ";" script_initial_cache "${script_initial_cache}")
+  endif()
+  # Write out the initial cache file to the location specified.
+  file(GENERATE OUTPUT "${script_filename}" CONTENT "${script_initial_cache}")
+endfunction()
+
+
+function(ExternalProject_Get_Property name)
+  foreach(var ${ARGN})
+    string(TOUPPER "${var}" VAR)
+    get_property(is_set TARGET ${name} PROPERTY _EP_${VAR} SET)
+    if(NOT is_set)
+      message(FATAL_ERROR "External project \"${name}\" has no ${var}")
+    endif()
+    get_property(${var} TARGET ${name} PROPERTY _EP_${VAR})
+    set(${var} "${${var}}" PARENT_SCOPE)
+  endforeach()
+endfunction()
+
+
+function(_ep_get_configure_command_id name cfg_cmd_id_var)
+  get_target_property(cmd ${name} _EP_CONFIGURE_COMMAND)
+
+  if(cmd STREQUAL "")
+    # Explicit empty string means no configure step for this project
+    set(${cfg_cmd_id_var} "none" PARENT_SCOPE)
+  else()
+    if(NOT cmd)
+      # Default is "use cmake":
+      set(${cfg_cmd_id_var} "cmake" PARENT_SCOPE)
+    else()
+      # Otherwise we have to analyze the value:
+      if(cmd MATCHES "^[^;]*/configure")
+        set(${cfg_cmd_id_var} "configure" PARENT_SCOPE)
+      elseif(cmd MATCHES "^[^;]*/cmake" AND NOT cmd MATCHES ";-[PE];")
+        set(${cfg_cmd_id_var} "cmake" PARENT_SCOPE)
+      elseif(cmd MATCHES "config")
+        set(${cfg_cmd_id_var} "configure" PARENT_SCOPE)
+      else()
+        set(${cfg_cmd_id_var} "unknown:${cmd}" PARENT_SCOPE)
+      endif()
+    endif()
+  endif()
+endfunction()
+
+
+function(_ep_get_build_command name step cmd_var)
+  set(cmd "")
+  set(args)
+  _ep_get_configure_command_id(${name} cfg_cmd_id)
+  if(cfg_cmd_id STREQUAL "cmake")
+    # CMake project.  Select build command based on generator.
+    get_target_property(cmake_generator ${name} _EP_CMAKE_GENERATOR)
+    if("${CMAKE_GENERATOR}" MATCHES "Make" AND
+       ("${cmake_generator}" MATCHES "Make" OR NOT cmake_generator))
+      # The project uses the same Makefile generator.  Use recursive make.
+      set(cmd "$(MAKE)")
+      if(step STREQUAL "INSTALL")
+        set(args install)
+      endif()
+      if("x${step}x" STREQUAL "xTESTx")
+        set(args test)
+      endif()
+    else()
+      # Drive the project with "cmake --build".
+      get_target_property(cmake_command ${name} _EP_CMAKE_COMMAND)
+      if(cmake_command)
+        set(cmd "${cmake_command}")
+      else()
+        set(cmd "${CMAKE_COMMAND}")
+      endif()
+      set(args --build ".")
+      get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+      if(_isMultiConfig)
+        if (CMAKE_CFG_INTDIR AND
+            NOT CMAKE_CFG_INTDIR STREQUAL "." AND
+            NOT CMAKE_CFG_INTDIR MATCHES "\\$")
+          # CMake 3.4 and below used the CMAKE_CFG_INTDIR placeholder value
+          # provided by multi-configuration generators.  Some projects were
+          # taking advantage of that undocumented implementation detail to
+          # specify a specific configuration here.  They should use
+          # BUILD_COMMAND to change the default command instead, but for
+          # compatibility honor the value.
+          set(config ${CMAKE_CFG_INTDIR})
+          message(AUTHOR_WARNING "CMAKE_CFG_INTDIR should not be set by project code.\n"
+            "To get a non-default build command, use the BUILD_COMMAND option.")
+        else()
+          set(config $<CONFIG>)
+        endif()
+        list(APPEND args --config ${config})
+      endif()
+      if(step STREQUAL "INSTALL")
+        list(APPEND args --target install)
+      endif()
+      # But for "TEST" drive the project with corresponding "ctest".
+      if("x${step}x" STREQUAL "xTESTx")
+        string(REGEX REPLACE "^(.*/)cmake([^/]*)$" "\\1ctest\\2" cmd "${cmd}")
+        set(args "")
+        if(_isMultiConfig)
+          list(APPEND args -C ${config})
+        endif()
+      endif()
+    endif()
+  else()
+    # Non-CMake project.  Guess "make" and "make install" and "make test".
+    if("${CMAKE_GENERATOR}" MATCHES "Makefiles")
+      # Try to get the parallel arguments
+      set(cmd "$(MAKE)")
+    else()
+      set(cmd "make")
+    endif()
+    if(step STREQUAL "INSTALL")
+      set(args install)
+    endif()
+    if("x${step}x" STREQUAL "xTESTx")
+      set(args test)
+    endif()
+  endif()
+
+  # Use user-specified arguments instead of default arguments, if any.
+  get_property(have_args TARGET ${name} PROPERTY _EP_${step}_ARGS SET)
+  if(have_args)
+    get_target_property(args ${name} _EP_${step}_ARGS)
+  endif()
+
+  if(NOT "${args}" STREQUAL "")
+    # args could have empty items, so we must quote it to prevent them
+    # from being silently removed
+    list(APPEND cmd "${args}")
+  endif()
+  set(${cmd_var} "${cmd}" PARENT_SCOPE)
+endfunction()
+
+function(_ep_write_log_script name step cmd_var)
+  ExternalProject_Get_Property(${name} log_dir)
+  ExternalProject_Get_Property(${name} stamp_dir)
+  set(command "${${cmd_var}}")
+
+  set(make "")
+  set(code_cygpath_make "")
+  if(command MATCHES "^\\$\\(MAKE\\)")
+    # GNU make recognizes the string "$(MAKE)" as recursive make, so
+    # ensure that it appears directly in the makefile.
+    string(REGEX REPLACE "^\\$\\(MAKE\\)" "\${make}" command "${command}")
+    set(make "-Dmake=$(MAKE)")
+
+    if(WIN32 AND NOT CYGWIN)
+      set(code_cygpath_make "
+if(\${make} MATCHES \"^/\")
+  execute_process(
+    COMMAND cygpath -w \${make}
+    OUTPUT_VARIABLE cygpath_make
+    ERROR_VARIABLE cygpath_make
+    RESULT_VARIABLE cygpath_error
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+  )
+  if(NOT cygpath_error)
+    set(make \${cygpath_make})
+  endif()
+endif()
+")
+    endif()
+  endif()
+
+  set(config "")
+  if("${CMAKE_CFG_INTDIR}" MATCHES "^\\$")
+    string(REPLACE "${CMAKE_CFG_INTDIR}" "\${config}" command "${command}")
+    set(config "-Dconfig=${CMAKE_CFG_INTDIR}")
+  endif()
+
+  # Wrap multiple 'COMMAND' lines up into a second-level wrapper
+  # script so all output can be sent to one log file.
+  if(command MATCHES "(^|;)COMMAND;")
+    set(code_execute_process "
+${code_cygpath_make}
+execute_process(COMMAND \${command} RESULT_VARIABLE result)
+if(result)
+  set(msg \"Command failed (\${result}):\\n\")
+  foreach(arg IN LISTS command)
+    set(msg \"\${msg} '\${arg}'\")
+  endforeach()
+  message(FATAL_ERROR \"\${msg}\")
+endif()
+")
+    set(code "")
+    set(cmd "")
+    set(sep "")
+    foreach(arg IN LISTS command)
+      if("x${arg}" STREQUAL "xCOMMAND")
+        if(NOT "x${cmd}" STREQUAL "x")
+          string(APPEND code "set(command \"${cmd}\")${code_execute_process}")
+        endif()
+        set(cmd "")
+        set(sep "")
+      else()
+        string(APPEND cmd "${sep}${arg}")
+        set(sep ";")
+      endif()
+    endforeach()
+    string(APPEND code "set(command \"${cmd}\")${code_execute_process}")
+    file(GENERATE OUTPUT "${stamp_dir}/${name}-${step}-$<CONFIG>-impl.cmake" CONTENT "${code}")
+    set(command ${CMAKE_COMMAND} "-Dmake=\${make}" "-Dconfig=\${config}" -P ${stamp_dir}/${name}-${step}-$<CONFIG>-impl.cmake)
+  endif()
+
+  # Wrap the command in a script to log output to files.
+  set(script ${stamp_dir}/${name}-${step}-$<CONFIG>.cmake)
+  set(logbase ${log_dir}/${name}-${step})
+  get_property(log_merged TARGET ${name} PROPERTY _EP_LOG_MERGED_STDOUTERR)
+  get_property(log_output_on_failure TARGET ${name} PROPERTY _EP_LOG_OUTPUT_ON_FAILURE)
+  if (log_merged)
+    set(stdout_log "${logbase}.log")
+    set(stderr_log "${logbase}.log")
+  else()
+    set(stdout_log "${logbase}-out.log")
+    set(stderr_log "${logbase}-err.log")
+  endif()
+  set(code "
+cmake_minimum_required(VERSION 3.15)
+${code_cygpath_make}
+set(command \"${command}\")
+set(log_merged \"${log_merged}\")
+set(log_output_on_failure \"${log_output_on_failure}\")
+set(stdout_log \"${stdout_log}\")
+set(stderr_log \"${stderr_log}\")
+execute_process(
+  COMMAND \${command}
+  RESULT_VARIABLE result
+  OUTPUT_FILE \"\${stdout_log}\"
+  ERROR_FILE \"\${stderr_log}\"
+  )
+macro(read_up_to_max_size log_file output_var)
+  file(SIZE \${log_file} determined_size)
+  set(max_size 10240)
+  if (determined_size GREATER max_size)
+    math(EXPR seek_position \"\${determined_size} - \${max_size}\")
+    file(READ \${log_file} \${output_var} OFFSET \${seek_position})
+    set(\${output_var} \"...skipping to end...\\n\${\${output_var}}\")
+  else()
+    file(READ \${log_file} \${output_var})
+  endif()
+endmacro()
+if(result)
+  set(msg \"Command failed: \${result}\\n\")
+  foreach(arg IN LISTS command)
+    set(msg \"\${msg} '\${arg}'\")
+  endforeach()
+  if (\${log_merged})
+    set(msg \"\${msg}\\nSee also\\n  \${stderr_log}\")
+  else()
+    set(msg \"\${msg}\\nSee also\\n  ${logbase}-*.log\")
+  endif()
+  if (\${log_output_on_failure})
+    message(SEND_ERROR \"\${msg}\")
+    if (\${log_merged})
+      read_up_to_max_size(\"\${stderr_log}\" error_log_contents)
+      message(STATUS \"Log output is:\\n\${error_log_contents}\")
+    else()
+      read_up_to_max_size(\"\${stdout_log}\" out_log_contents)
+      read_up_to_max_size(\"\${stderr_log}\" err_log_contents)
+      message(STATUS \"stdout output is:\\n\${out_log_contents}\")
+      message(STATUS \"stderr output is:\\n\${err_log_contents}\")
+    endif()
+    message(FATAL_ERROR \"Stopping after outputting logs.\")
+  else()
+    message(FATAL_ERROR \"\${msg}\")
+  endif()
+else()
+  if(NOT \"${CMAKE_GENERATOR}\" MATCHES \"Ninja\")
+    set(msg \"${name} ${step} command succeeded.  See also ${logbase}-*.log\")
+    message(STATUS \"\${msg}\")
+  endif()
+endif()
+")
+  file(GENERATE OUTPUT "${script}" CONTENT "${code}")
+  set(command ${CMAKE_COMMAND} ${make} ${config} -P ${script})
+  set(${cmd_var} "${command}" PARENT_SCOPE)
+endfunction()
+
+# This module used to use "/${CMAKE_CFG_INTDIR}" directly and produced
+# makefiles with "/./" in paths for custom command dependencies. Which
+# resulted in problems with parallel make -j invocations.
+#
+# This function was added so that the suffix (search below for ${cfgdir}) is
+# only set to "/${CMAKE_CFG_INTDIR}" when ${CMAKE_CFG_INTDIR} is not going to
+# be "." (multi-configuration build systems like Visual Studio and Xcode...)
+#
+function(_ep_get_configuration_subdir_suffix suffix_var)
+  set(suffix "")
+  get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+  if(_isMultiConfig)
+    set(suffix "/${CMAKE_CFG_INTDIR}")
+  endif()
+  set(${suffix_var} "${suffix}" PARENT_SCOPE)
+endfunction()
+
+
+function(_ep_get_step_stampfile name step stampfile_var)
+  ExternalProject_Get_Property(${name} stamp_dir)
+
+  _ep_get_configuration_subdir_suffix(cfgdir)
+  set(stampfile "${stamp_dir}${cfgdir}/${name}-${step}")
+
+  set(${stampfile_var} "${stampfile}" PARENT_SCOPE)
+endfunction()
+
+
+function(_ep_get_complete_stampfile name stampfile_var)
+  set(cmf_dir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles)
+  _ep_get_configuration_subdir_suffix(cfgdir)
+  set(stampfile "${cmf_dir}${cfgdir}/${name}-complete")
+
+  set(${stampfile_var} ${stampfile} PARENT_SCOPE)
+endfunction()
+
+
+function(_ep_step_add_target name step no_deps)
+  if(TARGET ${name}-${step})
+    return()
+  endif()
+  get_property(cmp0114 TARGET ${name} PROPERTY _EP_CMP0114)
+  _ep_get_step_stampfile(${name} ${step} stamp_file)
+  cmake_policy(PUSH)
+  if(cmp0114 STREQUAL "NEW")
+    # To implement CMP0114 NEW behavior with Makefile generators,
+    # we need CMP0113 NEW behavior.
+    cmake_policy(SET CMP0113 NEW)
+  endif()
+  add_custom_target(${name}-${step}
+    DEPENDS ${stamp_file})
+  cmake_policy(POP)
+  set_property(TARGET ${name}-${step} PROPERTY _EP_IS_EXTERNAL_PROJECT_STEP 1)
+  set_property(TARGET ${name}-${step} PROPERTY LABELS ${name})
+  set_property(TARGET ${name}-${step} PROPERTY FOLDER "ExternalProjectTargets/${name}")
+
+  if(cmp0114 STREQUAL "NEW")
+    # Add target-level dependencies for the step.
+    get_property(exclude_from_main TARGET ${name} PROPERTY _EP_${step}_EXCLUDE_FROM_MAIN)
+    if(NOT exclude_from_main)
+      add_dependencies(${name} ${name}-${step})
+    endif()
+    _ep_step_add_target_dependencies(${name} ${step} ${step})
+    _ep_step_add_target_dependents(${name} ${step} ${step})
+
+    get_property(independent TARGET ${name} PROPERTY _EP_${step}_INDEPENDENT)
+  else()
+    if(no_deps AND "${step}" MATCHES "^(configure|build|install|test)$")
+      message(AUTHOR_WARNING "Using NO_DEPENDS for \"${step}\" step  might break parallel builds")
+    endif()
+    set(independent ${no_deps})
+  endif()
+
+  # Depend on other external projects (target-level).
+  if(NOT independent)
+    get_property(deps TARGET ${name} PROPERTY _EP_DEPENDS)
+    foreach(arg IN LISTS deps)
+      add_dependencies(${name}-${step} ${arg})
+    endforeach()
+  endif()
+endfunction()
+
+
+function(_ep_step_add_target_dependencies name step node)
+  get_property(dependees TARGET ${name} PROPERTY _EP_${node}_INTERNAL_DEPENDEES)
+  list(REMOVE_DUPLICATES dependees)
+  foreach(dependee IN LISTS dependees)
+    get_property(exclude_from_main TARGET ${name} PROPERTY _EP_${step}_EXCLUDE_FROM_MAIN)
+    get_property(dependee_dependers TARGET ${name} PROPERTY _EP_${dependee}_INTERNAL_DEPENDERS)
+    if(exclude_from_main OR dependee_dependers MATCHES ";")
+      # The step on which our step target depends itself has
+      # dependents in multiple targes.  It needs a step target too
+      # so that there is a unique place for its custom command.
+      _ep_step_add_target("${name}" "${dependee}" "FALSE")
+    endif()
+
+    if(TARGET ${name}-${dependee})
+      add_dependencies(${name}-${step} ${name}-${dependee})
+    else()
+      _ep_step_add_target_dependencies(${name} ${step} ${dependee})
+    endif()
+  endforeach()
+endfunction()
+
+
+function(_ep_step_add_target_dependents name step node)
+  get_property(dependers TARGET ${name} PROPERTY _EP_${node}_INTERNAL_DEPENDERS)
+  list(REMOVE_DUPLICATES dependers)
+  foreach(depender IN LISTS dependers)
+    if(TARGET ${name}-${depender})
+      add_dependencies(${name}-${depender} ${name}-${step})
+    else()
+      _ep_step_add_target_dependents(${name} ${step} ${depender})
+    endif()
+  endforeach()
+endfunction()
+
+
+function(ExternalProject_Add_StepTargets name)
+  get_property(cmp0114 TARGET ${name} PROPERTY _EP_CMP0114)
+  set(steps ${ARGN})
+  if(ARGC GREATER 1 AND "${ARGV1}" STREQUAL "NO_DEPENDS")
+    set(no_deps 1)
+    list(REMOVE_AT steps 0)
+  else()
+    set(no_deps 0)
+  endif()
+  if(cmp0114 STREQUAL "NEW")
+    if(no_deps)
+      message(FATAL_ERROR
+        "The 'NO_DEPENDS' option is no longer allowed.  "
+        "It has been superseded by the per-step 'INDEPENDENT' option.  "
+        "See policy CMP0114."
+        )
+    endif()
+  elseif(cmp0114 STREQUAL "")
+    cmake_policy(GET_WARNING CMP0114 _cmp0114_warning)
+    string(APPEND _cmp0114_warning "\n"
+      "ExternalProject target '${name}' would depend on the targets for "
+      "step(s) '${steps}' under policy CMP0114, but this is being left out "
+      "for compatibility since the policy is not set."
+      )
+    if(no_deps)
+      string(APPEND _cmp0114_warning
+        "  Also, the NO_DEPENDS option is deprecated in favor of policy CMP0114."
+        )
+    endif()
+    message(AUTHOR_WARNING "${_cmp0114_warning}")
+  endif()
+  foreach(step ${steps})
+    _ep_step_add_target("${name}" "${step}" "${no_deps}")
+  endforeach()
+endfunction()
+
+
+function(ExternalProject_Add_Step name step)
+  get_property(cmp0114 TARGET ${name} PROPERTY _EP_CMP0114)
+  _ep_get_complete_stampfile(${name} complete_stamp_file)
+  _ep_get_step_stampfile(${name} ${step} stamp_file)
+
+  set(keywords
+    COMMAND
+    COMMENT
+    DEPENDEES
+    DEPENDERS
+    DEPENDS
+    INDEPENDENT
+    BYPRODUCTS
+    ALWAYS
+    EXCLUDE_FROM_MAIN
+    WORKING_DIRECTORY
+    LOG
+    USES_TERMINAL
+  )
+  _ep_parse_arguments(ExternalProject_Add_Step "${keywords}"
+                      ${name} _EP_${step}_ "${ARGN}")
+
+  get_property(independent TARGET ${name} PROPERTY _EP_${step}_INDEPENDENT)
+  if(independent STREQUAL "")
+    set(independent FALSE)
+    set_property(TARGET ${name} PROPERTY _EP_${step}_INDEPENDENT "${independent}")
+  endif()
+
+  get_property(exclude_from_main TARGET ${name} PROPERTY _EP_${step}_EXCLUDE_FROM_MAIN)
+  if(NOT exclude_from_main)
+    add_custom_command(APPEND
+      OUTPUT ${complete_stamp_file}
+      DEPENDS ${stamp_file}
+      )
+  endif()
+
+  # Steps depending on this step.
+  get_property(dependers TARGET ${name} PROPERTY _EP_${step}_DEPENDERS)
+  set_property(TARGET ${name} APPEND PROPERTY _EP_${step}_INTERNAL_DEPENDERS ${dependers})
+  foreach(depender IN LISTS dependers)
+    set_property(TARGET ${name} APPEND PROPERTY _EP_${depender}_INTERNAL_DEPENDEES ${step})
+    _ep_get_step_stampfile(${name} ${depender} depender_stamp_file)
+    add_custom_command(APPEND
+      OUTPUT ${depender_stamp_file}
+      DEPENDS ${stamp_file}
+      )
+    if(cmp0114 STREQUAL "NEW" AND NOT independent)
+      get_property(dep_independent TARGET ${name} PROPERTY _EP_${depender}_INDEPENDENT)
+      if(dep_independent)
+        message(FATAL_ERROR "ExternalProject '${name}' step '${depender}' is marked INDEPENDENT "
+          "but depends on step '${step}' that is not marked INDEPENDENT.")
+      endif()
+    endif()
+  endforeach()
+
+  # Dependencies on files.
+  get_property(depends TARGET ${name} PROPERTY _EP_${step}_DEPENDS)
+
+  # Byproducts of the step.
+  get_property(byproducts TARGET ${name} PROPERTY _EP_${step}_BYPRODUCTS)
+
+  # Dependencies on steps.
+  get_property(dependees TARGET ${name} PROPERTY _EP_${step}_DEPENDEES)
+  set_property(TARGET ${name} APPEND PROPERTY _EP_${step}_INTERNAL_DEPENDEES ${dependees})
+  foreach(dependee IN LISTS dependees)
+    set_property(TARGET ${name} APPEND PROPERTY _EP_${dependee}_INTERNAL_DEPENDERS ${step})
+    _ep_get_step_stampfile(${name} ${dependee} dependee_stamp_file)
+    list(APPEND depends ${dependee_stamp_file})
+    if(cmp0114 STREQUAL "NEW" AND independent)
+      get_property(dep_independent TARGET ${name} PROPERTY _EP_${dependee}_INDEPENDENT)
+      if(NOT dep_independent)
+        message(FATAL_ERROR "ExternalProject '${name}' step '${step}' is marked INDEPENDENT "
+          "but depends on step '${dependee}' that is not marked INDEPENDENT.")
+      endif()
+    endif()
+  endforeach()
+
+  # The command to run.
+  get_property(command TARGET ${name} PROPERTY _EP_${step}_COMMAND)
+  if(command)
+    set(comment "Performing ${step} step for '${name}'")
+  else()
+    set(comment "No ${step} step for '${name}'")
+  endif()
+  get_property(work_dir TARGET ${name} PROPERTY _EP_${step}_WORKING_DIRECTORY)
+
+  # Replace list separators.
+  get_property(sep TARGET ${name} PROPERTY _EP_LIST_SEPARATOR)
+  if(sep AND command)
+    string(REPLACE "${sep}" "\\;" command "${command}")
+  endif()
+
+  # Replace location tags.
+  _ep_replace_location_tags(${name} comment command work_dir byproducts)
+
+  # Custom comment?
+  get_property(comment_set TARGET ${name} PROPERTY _EP_${step}_COMMENT SET)
+  if(comment_set)
+    get_property(comment TARGET ${name} PROPERTY _EP_${step}_COMMENT)
+  endif()
+
+  # Uses terminal?
+  get_property(uses_terminal TARGET ${name} PROPERTY _EP_${step}_USES_TERMINAL)
+  if(uses_terminal)
+    set(uses_terminal USES_TERMINAL)
+  else()
+    set(uses_terminal "")
+  endif()
+
+  # Run every time?
+  get_property(always TARGET ${name} PROPERTY _EP_${step}_ALWAYS)
+  if(always)
+    set_property(SOURCE ${stamp_file} PROPERTY SYMBOLIC 1)
+    set(touch)
+    # Remove any existing stamp in case the option changed in an existing tree.
+    get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+    if(_isMultiConfig)
+      foreach(cfg ${CMAKE_CONFIGURATION_TYPES})
+        string(REPLACE "/${CMAKE_CFG_INTDIR}" "/${cfg}" stamp_file_config "${stamp_file}")
+        file(REMOVE ${stamp_file_config})
+      endforeach()
+    else()
+      file(REMOVE ${stamp_file})
+    endif()
+  else()
+    set(touch ${CMAKE_COMMAND} -E touch ${stamp_file})
+  endif()
+
+  # Wrap with log script?
+  get_property(log TARGET ${name} PROPERTY _EP_${step}_LOG)
+  if(command AND log)
+    _ep_write_log_script(${name} ${step} command)
+  endif()
+
+  if("${command}" STREQUAL "")
+    # Some generators (i.e. Xcode) will not generate a file level target
+    # if no command is set, and therefore the dependencies on this
+    # target will be broken.
+    # The empty command is replaced by an echo command here in order to
+    # avoid this issue.
+    set(command ${CMAKE_COMMAND} -E echo_append)
+  endif()
+
+  set(__cmdQuoted)
+  foreach(__item IN LISTS command)
+    string(APPEND __cmdQuoted " [==[${__item}]==]")
+  endforeach()
+  cmake_language(EVAL CODE "
+    add_custom_command(
+      OUTPUT \${stamp_file}
+      BYPRODUCTS \${byproducts}
+      COMMENT \${comment}
+      COMMAND ${__cmdQuoted}
+      COMMAND \${touch}
+      DEPENDS \${depends}
+      WORKING_DIRECTORY \${work_dir}
+      VERBATIM
+      ${uses_terminal}
+    )"
+  )
+  set_property(TARGET ${name} APPEND PROPERTY _EP_STEPS ${step})
+
+  # Add custom "step target"?
+  get_property(step_targets TARGET ${name} PROPERTY _EP_STEP_TARGETS)
+  if(NOT step_targets)
+    get_property(step_targets DIRECTORY PROPERTY EP_STEP_TARGETS)
+  endif()
+  foreach(st ${step_targets})
+    if("${st}" STREQUAL "${step}")
+      _ep_step_add_target("${name}" "${step}" "FALSE")
+      break()
+    endif()
+  endforeach()
+
+  get_property(independent_step_targets TARGET ${name} PROPERTY _EP_INDEPENDENT_STEP_TARGETS)
+  if(NOT independent_step_targets)
+    get_property(independent_step_targets DIRECTORY PROPERTY EP_INDEPENDENT_STEP_TARGETS)
+  endif()
+  if(cmp0114 STREQUAL "NEW")
+    if(independent_step_targets)
+      message(FATAL_ERROR
+        "ExternalProject '${name}' option 'INDEPENDENT_STEP_TARGETS' is set to\n"
+        "  ${independent_step_targets}\n"
+        "but the option is no longer allowed.  "
+        "It has been superseded by the per-step 'INDEPENDENT' option.  "
+        "See policy CMP0114."
+        )
+    endif()
+  else()
+    if(independent_step_targets AND cmp0114 STREQUAL "")
+      get_property(warned TARGET ${name} PROPERTY _EP_CMP0114_WARNED_INDEPENDENT_STEP_TARGETS)
+      if(NOT warned)
+        set_property(TARGET ${name} PROPERTY _EP_CMP0114_WARNED_INDEPENDENT_STEP_TARGETS 1)
+        cmake_policy(GET_WARNING CMP0114 _cmp0114_warning)
+        string(APPEND _cmp0114_warning "\n"
+          "ExternalProject '${name}' option INDEPENDENT_STEP_TARGETS is set to\n"
+          "  ${independent_step_targets}\n"
+          "but the option is deprecated in favor of policy CMP0114."
+          )
+        message(AUTHOR_WARNING "${_cmp0114_warning}")
+      endif()
+    endif()
+    foreach(st ${independent_step_targets})
+      if("${st}" STREQUAL "${step}")
+        _ep_step_add_target("${name}" "${step}" "TRUE")
+        break()
+      endif()
+    endforeach()
+  endif()
+endfunction()
+
+
+function(ExternalProject_Add_StepDependencies name step)
+  set(dependencies ${ARGN})
+
+  # Sanity checks on "name" and "step".
+  if(NOT TARGET ${name})
+    message(FATAL_ERROR "Cannot find target \"${name}\". Perhaps it has not yet been created using ExternalProject_Add.")
+  endif()
+
+  get_property(type TARGET ${name} PROPERTY TYPE)
+  if(NOT type STREQUAL "UTILITY")
+    message(FATAL_ERROR "Target \"${name}\" was not generated by ExternalProject_Add.")
+  endif()
+
+  get_property(is_ep TARGET ${name} PROPERTY _EP_IS_EXTERNAL_PROJECT)
+  if(NOT is_ep)
+    message(FATAL_ERROR "Target \"${name}\" was not generated by ExternalProject_Add.")
+  endif()
+
+  get_property(steps TARGET ${name} PROPERTY _EP_STEPS)
+  list(FIND steps ${step} is_step)
+  if(is_step LESS 0)
+    message(FATAL_ERROR "External project \"${name}\" does not have a step \"${step}\".")
+  endif()
+
+  if(TARGET ${name}-${step})
+    get_property(type TARGET ${name}-${step} PROPERTY TYPE)
+    if(NOT type STREQUAL "UTILITY")
+      message(FATAL_ERROR "Target \"${name}-${step}\" was not generated by ExternalProject_Add_StepTargets.")
+    endif()
+    get_property(is_ep_step TARGET ${name}-${step} PROPERTY _EP_IS_EXTERNAL_PROJECT_STEP)
+    if(NOT is_ep_step)
+      message(FATAL_ERROR "Target \"${name}-${step}\" was not generated by ExternalProject_Add_StepTargets.")
+    endif()
+  endif()
+
+  # Always add file-level dependency, but add target-level dependency
+  # only if the target exists for that step.
+  _ep_get_step_stampfile(${name} ${step} stamp_file)
+  foreach(dep ${dependencies})
+    add_custom_command(APPEND
+      OUTPUT ${stamp_file}
+      DEPENDS ${dep})
+    if(TARGET ${name}-${step})
+      foreach(dep ${dependencies})
+        add_dependencies(${name}-${step} ${dep})
+      endforeach()
+    endif()
+  endforeach()
+
+endfunction()
+
+
+function(_ep_add_mkdir_command name)
+  ExternalProject_Get_Property(${name}
+    source_dir binary_dir install_dir stamp_dir download_dir tmp_dir log_dir)
+
+  _ep_get_configuration_subdir_suffix(cfgdir)
+
+  ExternalProject_Add_Step(${name} mkdir
+    INDEPENDENT TRUE
+    COMMENT "Creating directories for '${name}'"
+    COMMAND ${CMAKE_COMMAND} -E make_directory ${source_dir}
+    COMMAND ${CMAKE_COMMAND} -E make_directory ${binary_dir}
+    COMMAND ${CMAKE_COMMAND} -E make_directory ${install_dir}
+    COMMAND ${CMAKE_COMMAND} -E make_directory ${tmp_dir}
+    COMMAND ${CMAKE_COMMAND} -E make_directory ${stamp_dir}${cfgdir}
+    COMMAND ${CMAKE_COMMAND} -E make_directory ${download_dir}
+    COMMAND ${CMAKE_COMMAND} -E make_directory ${log_dir}
+    )
+endfunction()
+
+
+function(_ep_is_dir_empty dir empty_var)
+  file(GLOB gr "${dir}/*")
+  if("${gr}" STREQUAL "")
+    set(${empty_var} 1 PARENT_SCOPE)
+  else()
+    set(${empty_var} 0 PARENT_SCOPE)
+  endif()
+endfunction()
+
+function(_ep_get_git_submodules_recurse git_submodules_recurse)
+  # Checks for GIT_SUBMODULES_RECURSE property
+  # Default is ON, which sets git_submodules_recurse output variable to "--recursive"
+  # Otherwise, the output variable is set to an empty value ""
+  get_property(git_submodules_recurse_set TARGET ${name} PROPERTY _EP_GIT_SUBMODULES_RECURSE SET)
+  if(NOT git_submodules_recurse_set)
+    set(recurseFlag "--recursive")
+  else()
+    get_property(git_submodules_recurse_value TARGET ${name} PROPERTY _EP_GIT_SUBMODULES_RECURSE)
+    if(git_submodules_recurse_value)
+      set(recurseFlag "--recursive")
+    else()
+      set(recurseFlag "")
+    endif()
+  endif()
+  set(${git_submodules_recurse} "${recurseFlag}" PARENT_SCOPE)
+
+  # The git submodule update '--recursive' flag requires git >= v1.6.5
+  if(recurseFlag AND GIT_VERSION_STRING VERSION_LESS 1.6.5)
+    message(FATAL_ERROR "error: git version 1.6.5 or later required for --recursive flag with 'git submodule ...': GIT_VERSION_STRING='${GIT_VERSION_STRING}'")
+  endif()
+endfunction()
+
+
+function(_ep_add_download_command name)
+  ExternalProject_Get_Property(${name} source_dir stamp_dir download_dir tmp_dir)
+
+  get_property(cmd_set TARGET ${name} PROPERTY _EP_DOWNLOAD_COMMAND SET)
+  get_property(cmd TARGET ${name} PROPERTY _EP_DOWNLOAD_COMMAND)
+  get_property(cvs_repository TARGET ${name} PROPERTY _EP_CVS_REPOSITORY)
+  get_property(svn_repository TARGET ${name} PROPERTY _EP_SVN_REPOSITORY)
+  get_property(git_repository TARGET ${name} PROPERTY _EP_GIT_REPOSITORY)
+  get_property(hg_repository  TARGET ${name} PROPERTY _EP_HG_REPOSITORY )
+  get_property(url TARGET ${name} PROPERTY _EP_URL)
+  get_property(fname TARGET ${name} PROPERTY _EP_DOWNLOAD_NAME)
+
+  # TODO: Perhaps file:// should be copied to download dir before extraction.
+  string(REGEX REPLACE "file://" "" url "${url}")
+
+  set(depends)
+  set(comment)
+  set(work_dir)
+
+  if(cmd_set)
+    set(work_dir ${download_dir})
+  elseif(cvs_repository)
+    find_package(CVS QUIET)
+    if(NOT CVS_EXECUTABLE)
+      message(FATAL_ERROR "error: could not find cvs for checkout of ${name}")
+    endif()
+
+    get_target_property(cvs_module ${name} _EP_CVS_MODULE)
+    if(NOT cvs_module)
+      message(FATAL_ERROR "error: no CVS_MODULE")
+    endif()
+
+    get_property(cvs_tag TARGET ${name} PROPERTY _EP_CVS_TAG)
+
+    set(repository ${cvs_repository})
+    set(module ${cvs_module})
+    set(tag ${cvs_tag})
+    configure_file(
+      "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in"
+      "${stamp_dir}/${name}-cvsinfo.txt"
+      @ONLY
+      )
+
+    get_filename_component(src_name "${source_dir}" NAME)
+    get_filename_component(work_dir "${source_dir}" PATH)
+    set(comment "Performing download step (CVS checkout) for '${name}'")
+    set(cmd ${CVS_EXECUTABLE} -d ${cvs_repository} -q co ${cvs_tag} -d ${src_name} ${cvs_module})
+    list(APPEND depends ${stamp_dir}/${name}-cvsinfo.txt)
+  elseif(svn_repository)
+    find_package(Subversion QUIET)
+    if(NOT Subversion_SVN_EXECUTABLE)
+      message(FATAL_ERROR "error: could not find svn for checkout of ${name}")
+    endif()
+
+    get_property(svn_revision TARGET ${name} PROPERTY _EP_SVN_REVISION)
+    get_property(svn_username TARGET ${name} PROPERTY _EP_SVN_USERNAME)
+    get_property(svn_password TARGET ${name} PROPERTY _EP_SVN_PASSWORD)
+    get_property(svn_trust_cert TARGET ${name} PROPERTY _EP_SVN_TRUST_CERT)
+
+    set(repository "${svn_repository} user=${svn_username} password=${svn_password}")
+    set(module)
+    set(tag ${svn_revision})
+    configure_file(
+      "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in"
+      "${stamp_dir}/${name}-svninfo.txt"
+      @ONLY
+      )
+
+    get_filename_component(src_name "${source_dir}" NAME)
+    get_filename_component(work_dir "${source_dir}" PATH)
+    set(comment "Performing download step (SVN checkout) for '${name}'")
+    set(svn_user_pw_args "")
+    if(DEFINED svn_username)
+      set(svn_user_pw_args ${svn_user_pw_args} "--username=${svn_username}")
+    endif()
+    if(DEFINED svn_password)
+      set(svn_user_pw_args ${svn_user_pw_args} "--password=${svn_password}")
+    endif()
+    if(svn_trust_cert)
+      set(svn_trust_cert_args --trust-server-cert)
+    endif()
+    set(cmd ${Subversion_SVN_EXECUTABLE} co ${svn_repository} ${svn_revision}
+      --non-interactive ${svn_trust_cert_args} ${svn_user_pw_args} ${src_name})
+    list(APPEND depends ${stamp_dir}/${name}-svninfo.txt)
+  elseif(git_repository)
+    # FetchContent gives us these directly, so don't try to recompute them
+    if(NOT GIT_EXECUTABLE OR NOT GIT_VERSION_STRING)
+      unset(CMAKE_MODULE_PATH) # Use CMake builtin find module
+      find_package(Git QUIET)
+      if(NOT GIT_EXECUTABLE)
+        message(FATAL_ERROR "error: could not find git for clone of ${name}")
+      endif()
+    endif()
+
+    _ep_get_git_submodules_recurse(git_submodules_recurse)
+
+    get_property(git_tag TARGET ${name} PROPERTY _EP_GIT_TAG)
+    if(NOT git_tag)
+      set(git_tag "master")
+    endif()
+
+    set(git_init_submodules TRUE)
+    get_property(git_submodules_set TARGET ${name} PROPERTY _EP_GIT_SUBMODULES SET)
+    if(git_submodules_set)
+      get_property(git_submodules TARGET ${name} PROPERTY _EP_GIT_SUBMODULES)
+      if(git_submodules  STREQUAL "" AND _EP_CMP0097 STREQUAL "NEW")
+        set(git_init_submodules FALSE)
+      endif()
+    endif()
+
+    get_property(git_remote_name TARGET ${name} PROPERTY _EP_GIT_REMOTE_NAME)
+    if(NOT git_remote_name)
+      set(git_remote_name "origin")
+    endif()
+
+    get_property(tls_verify TARGET ${name} PROPERTY _EP_TLS_VERIFY)
+    if("x${tls_verify}" STREQUAL "x" AND DEFINED CMAKE_TLS_VERIFY)
+      set(tls_verify "${CMAKE_TLS_VERIFY}")
+    endif()
+    get_property(git_shallow TARGET ${name} PROPERTY _EP_GIT_SHALLOW)
+    get_property(git_progress TARGET ${name} PROPERTY _EP_GIT_PROGRESS)
+    get_property(git_config TARGET ${name} PROPERTY _EP_GIT_CONFIG)
+
+    # If git supports it, make checkouts quiet when checking out a git hash.
+    # This avoids the very noisy detached head message.
+    if(GIT_VERSION_STRING VERSION_GREATER_EQUAL 1.7.7)
+      list(PREPEND git_config advice.detachedHead=false)
+    endif()
+
+    # For the download step, and the git clone operation, only the repository
+    # should be recorded in a configured RepositoryInfo file. If the repo
+    # changes, the clone script should be run again. But if only the tag
+    # changes, avoid running the clone script again. Let the 'always' running
+    # update step checkout the new tag.
+    #
+    set(repository ${git_repository})
+    set(module)
+    set(tag ${git_remote_name})
+    configure_file(
+      "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in"
+      "${stamp_dir}/${name}-gitinfo.txt"
+      @ONLY
+      )
+
+    get_filename_component(src_name "${source_dir}" NAME)
+    get_filename_component(work_dir "${source_dir}" PATH)
+
+    # Since git clone doesn't succeed if the non-empty source_dir exists,
+    # create a cmake script to invoke as download command.
+    # The script will delete the source directory and then call git clone.
+    #
+    _ep_write_gitclone_script(${tmp_dir}/${name}-gitclone.cmake ${source_dir}
+      ${GIT_EXECUTABLE} ${git_repository} ${git_tag} ${git_remote_name} ${git_init_submodules} "${git_submodules_recurse}" "${git_submodules}" "${git_shallow}" "${git_progress}" "${git_config}" ${src_name} ${work_dir}
+      ${stamp_dir}/${name}-gitinfo.txt ${stamp_dir}/${name}-gitclone-lastrun.txt "${tls_verify}"
+      )
+    set(comment "Performing download step (git clone) for '${name}'")
+    set(cmd ${CMAKE_COMMAND} -P ${tmp_dir}/${name}-gitclone.cmake)
+    list(APPEND depends ${stamp_dir}/${name}-gitinfo.txt)
+  elseif(hg_repository)
+    find_package(Hg QUIET)
+    if(NOT HG_EXECUTABLE)
+      message(FATAL_ERROR "error: could not find hg for clone of ${name}")
+    endif()
+
+    get_property(hg_tag TARGET ${name} PROPERTY _EP_HG_TAG)
+    if(NOT hg_tag)
+      set(hg_tag "tip")
+    endif()
+
+    # For the download step, and the hg clone operation, only the repository
+    # should be recorded in a configured RepositoryInfo file. If the repo
+    # changes, the clone script should be run again. But if only the tag
+    # changes, avoid running the clone script again. Let the 'always' running
+    # update step checkout the new tag.
+    #
+    set(repository ${hg_repository})
+    set(module)
+    set(tag)
+    configure_file(
+      "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in"
+      "${stamp_dir}/${name}-hginfo.txt"
+      @ONLY
+      )
+
+    get_filename_component(src_name "${source_dir}" NAME)
+    get_filename_component(work_dir "${source_dir}" PATH)
+
+    # Since hg clone doesn't succeed if the non-empty source_dir exists,
+    # create a cmake script to invoke as download command.
+    # The script will delete the source directory and then call hg clone.
+    #
+    _ep_write_hgclone_script(${tmp_dir}/${name}-hgclone.cmake ${source_dir}
+      ${HG_EXECUTABLE} ${hg_repository} ${hg_tag} ${src_name} ${work_dir}
+      ${stamp_dir}/${name}-hginfo.txt ${stamp_dir}/${name}-hgclone-lastrun.txt
+      )
+    set(comment "Performing download step (hg clone) for '${name}'")
+    set(cmd ${CMAKE_COMMAND} -P ${tmp_dir}/${name}-hgclone.cmake)
+    list(APPEND depends ${stamp_dir}/${name}-hginfo.txt)
+  elseif(url)
+    get_filename_component(work_dir "${source_dir}" PATH)
+    get_property(hash TARGET ${name} PROPERTY _EP_URL_HASH)
+    _ep_get_hash_regex(_ep_hash_regex)
+    if(hash AND NOT "${hash}" MATCHES "${_ep_hash_regex}")
+      _ep_get_hash_algos(_ep_hash_algos)
+      list(JOIN _ep_hash_algos "|" _ep_hash_algos)
+      message(FATAL_ERROR "URL_HASH is set to\n  ${hash}\n"
+        "but must be ALGO=value where ALGO is\n  ${_ep_hash_algos}\n"
+        "and value is a hex string.")
+    endif()
+    get_property(md5 TARGET ${name} PROPERTY _EP_URL_MD5)
+    if(md5 AND NOT "MD5=${md5}" MATCHES "${_ep_hash_regex}")
+      message(FATAL_ERROR "URL_MD5 is set to\n  ${md5}\nbut must be a hex string.")
+    endif()
+    if(md5 AND NOT hash)
+      set(hash "MD5=${md5}")
+    endif()
+    set(repository "external project URL")
+    set(module "${url}")
+    set(tag "${hash}")
+    configure_file(
+      "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in"
+      "${stamp_dir}/${name}-urlinfo.txt"
+      @ONLY
+      )
+    list(APPEND depends ${stamp_dir}/${name}-urlinfo.txt)
+
+    list(LENGTH url url_list_length)
+    if(NOT "${url_list_length}" STREQUAL "1")
+      foreach(entry ${url})
+        if(NOT "${entry}" MATCHES "^[a-z]+://")
+          message(FATAL_ERROR "At least one entry of URL is a path (invalid in a list)")
+        endif()
+      endforeach()
+      if("x${fname}" STREQUAL "x")
+        list(GET url 0 fname)
+      endif()
+    endif()
+
+    if(IS_DIRECTORY "${url}")
+      get_filename_component(abs_dir "${url}" ABSOLUTE)
+      set(comment "Performing download step (DIR copy) for '${name}'")
+      set(cmd   ${CMAKE_COMMAND} -E rm -rf ${source_dir}
+        COMMAND ${CMAKE_COMMAND} -E copy_directory ${abs_dir} ${source_dir})
+    else()
+      get_property(no_extract TARGET "${name}" PROPERTY _EP_DOWNLOAD_NO_EXTRACT)
+      if("${url}" MATCHES "^[a-z]+://")
+        # TODO: Should download and extraction be different steps?
+        if("x${fname}" STREQUAL "x")
+          set(fname "${url}")
+        endif()
+        if("${fname}" MATCHES [[([^/\?#]+(\.|=)(7z|tar|tar\.bz2|tar\.gz|tar\.xz|tbz2|tgz|txz|zip))([/?#].*)?$]])
+          set(fname "${CMAKE_MATCH_1}")
+        elseif(no_extract)
+          get_filename_component(fname "${fname}" NAME)
+        else()
+          # Fall back to a default file name.  The actual file name does not
+          # matter because it is used only internally and our extraction tool
+          # inspects the file content directly.  If it turns out the wrong URL
+          # was given that will be revealed during the build which is an easier
+          # place for users to diagnose than an error here anyway.
+          set(fname "archive.tar")
+        endif()
+        string(REPLACE ";" "-" fname "${fname}")
+        set(file ${download_dir}/${fname})
+        get_property(timeout TARGET ${name} PROPERTY _EP_TIMEOUT)
+        get_property(inactivity_timeout TARGET ${name} PROPERTY _EP_INACTIVITY_TIMEOUT)
+        get_property(no_progress TARGET ${name} PROPERTY _EP_DOWNLOAD_NO_PROGRESS)
+        get_property(tls_verify TARGET ${name} PROPERTY _EP_TLS_VERIFY)
+        get_property(tls_cainfo TARGET ${name} PROPERTY _EP_TLS_CAINFO)
+        get_property(netrc TARGET ${name} PROPERTY _EP_NETRC)
+        get_property(netrc_file TARGET ${name} PROPERTY _EP_NETRC_FILE)
+        get_property(http_username TARGET ${name} PROPERTY _EP_HTTP_USERNAME)
+        get_property(http_password TARGET ${name} PROPERTY _EP_HTTP_PASSWORD)
+        get_property(http_headers TARGET ${name} PROPERTY _EP_HTTP_HEADER)
+        set(download_script "${stamp_dir}/download-${name}.cmake")
+        _ep_write_downloadfile_script("${download_script}" "${url}" "${file}" "${timeout}" "${inactivity_timeout}" "${no_progress}" "${hash}" "${tls_verify}" "${tls_cainfo}" "${http_username}:${http_password}" "${http_headers}" "${netrc}" "${netrc_file}")
+        set(cmd ${CMAKE_COMMAND} -P "${download_script}"
+          COMMAND)
+        if (no_extract)
+          set(steps "download and verify")
+        else ()
+          set(steps "download, verify and extract")
+        endif ()
+        set(comment "Performing download step (${steps}) for '${name}'")
+        file(WRITE "${stamp_dir}/verify-${name}.cmake" "") # already verified by 'download_script'
+      else()
+        set(file "${url}")
+        if (no_extract)
+          set(steps "verify")
+        else ()
+          set(steps "verify and extract")
+        endif ()
+        set(comment "Performing download step (${steps}) for '${name}'")
+        _ep_write_verifyfile_script("${stamp_dir}/verify-${name}.cmake" "${file}" "${hash}")
+      endif()
+      list(APPEND cmd ${CMAKE_COMMAND} -P ${stamp_dir}/verify-${name}.cmake)
+      if (NOT no_extract)
+        _ep_write_extractfile_script("${stamp_dir}/extract-${name}.cmake" "${name}" "${file}" "${source_dir}")
+        list(APPEND cmd COMMAND ${CMAKE_COMMAND} -P ${stamp_dir}/extract-${name}.cmake)
+      else ()
+        set_property(TARGET ${name} PROPERTY _EP_DOWNLOADED_FILE ${file})
+      endif ()
+    endif()
+  else()
+    _ep_is_dir_empty("${source_dir}" empty)
+    if(${empty})
+      message(SEND_ERROR
+        "No download info given for '${name}' and its source directory:\n"
+        " ${source_dir}\n"
+        "is not an existing non-empty directory.  Please specify one of:\n"
+        " * SOURCE_DIR with an existing non-empty directory\n"
+        " * DOWNLOAD_COMMAND\n"
+        " * URL\n"
+        " * GIT_REPOSITORY\n"
+        " * SVN_REPOSITORY\n"
+        " * HG_REPOSITORY\n"
+        " * CVS_REPOSITORY and CVS_MODULE"
+        )
+    endif()
+  endif()
+
+  get_property(log TARGET ${name} PROPERTY _EP_LOG_DOWNLOAD)
+  if(log)
+    set(log LOG 1)
+  else()
+    set(log "")
+  endif()
+
+  get_property(uses_terminal TARGET ${name} PROPERTY
+    _EP_USES_TERMINAL_DOWNLOAD)
+  if(uses_terminal)
+    set(uses_terminal USES_TERMINAL 1)
+  else()
+    set(uses_terminal "")
+  endif()
+
+  set(__cmdQuoted)
+  foreach(__item IN LISTS cmd)
+    string(APPEND __cmdQuoted " [==[${__item}]==]")
+  endforeach()
+  cmake_language(EVAL CODE "
+    ExternalProject_Add_Step(\${name} download
+      INDEPENDENT TRUE
+      COMMENT \${comment}
+      COMMAND ${__cmdQuoted}
+      WORKING_DIRECTORY \${work_dir}
+      DEPENDS \${depends}
+      DEPENDEES mkdir
+      ${log}
+      ${uses_terminal}
+      )"
+  )
+endfunction()
+
+function(_ep_get_update_disconnected var name)
+  get_property(update_disconnected_set TARGET ${name} PROPERTY _EP_UPDATE_DISCONNECTED SET)
+  if(update_disconnected_set)
+    get_property(update_disconnected TARGET ${name} PROPERTY _EP_UPDATE_DISCONNECTED)
+  else()
+    get_property(update_disconnected DIRECTORY PROPERTY EP_UPDATE_DISCONNECTED)
+  endif()
+  set(${var} "${update_disconnected}" PARENT_SCOPE)
+endfunction()
+
+function(_ep_add_update_command name)
+  ExternalProject_Get_Property(${name} source_dir tmp_dir)
+
+  get_property(cmd_set TARGET ${name} PROPERTY _EP_UPDATE_COMMAND SET)
+  get_property(cmd TARGET ${name} PROPERTY _EP_UPDATE_COMMAND)
+  get_property(cvs_repository TARGET ${name} PROPERTY _EP_CVS_REPOSITORY)
+  get_property(svn_repository TARGET ${name} PROPERTY _EP_SVN_REPOSITORY)
+  get_property(git_repository TARGET ${name} PROPERTY _EP_GIT_REPOSITORY)
+  get_property(hg_repository  TARGET ${name} PROPERTY _EP_HG_REPOSITORY )
+
+  _ep_get_update_disconnected(update_disconnected ${name})
+
+  set(work_dir)
+  set(comment)
+  set(always)
+
+  if(cmd_set)
+    set(work_dir ${source_dir})
+    if(NOT "x${cmd}" STREQUAL "x")
+      set(always 1)
+    endif()
+  elseif(cvs_repository)
+    if(NOT CVS_EXECUTABLE)
+      message(FATAL_ERROR "error: could not find cvs for update of ${name}")
+    endif()
+    set(work_dir ${source_dir})
+    set(comment "Performing update step (CVS update) for '${name}'")
+    get_property(cvs_tag TARGET ${name} PROPERTY _EP_CVS_TAG)
+    set(cmd ${CVS_EXECUTABLE} -d ${cvs_repository} -q up -dP ${cvs_tag})
+    set(always 1)
+  elseif(svn_repository)
+    if(NOT Subversion_SVN_EXECUTABLE)
+      message(FATAL_ERROR "error: could not find svn for update of ${name}")
+    endif()
+    set(work_dir ${source_dir})
+    set(comment "Performing update step (SVN update) for '${name}'")
+    get_property(svn_revision TARGET ${name} PROPERTY _EP_SVN_REVISION)
+    get_property(svn_username TARGET ${name} PROPERTY _EP_SVN_USERNAME)
+    get_property(svn_password TARGET ${name} PROPERTY _EP_SVN_PASSWORD)
+    get_property(svn_trust_cert TARGET ${name} PROPERTY _EP_SVN_TRUST_CERT)
+    set(svn_user_pw_args "")
+    if(DEFINED svn_username)
+      set(svn_user_pw_args ${svn_user_pw_args} "--username=${svn_username}")
+    endif()
+    if(DEFINED svn_password)
+      set(svn_user_pw_args ${svn_user_pw_args} "--password=${svn_password}")
+    endif()
+    if(svn_trust_cert)
+      set(svn_trust_cert_args --trust-server-cert)
+    endif()
+    set(cmd ${Subversion_SVN_EXECUTABLE} up ${svn_revision}
+      --non-interactive ${svn_trust_cert_args} ${svn_user_pw_args})
+    set(always 1)
+  elseif(git_repository)
+    # FetchContent gives us these directly, so don't try to recompute them
+    if(NOT GIT_EXECUTABLE OR NOT GIT_VERSION_STRING)
+      unset(CMAKE_MODULE_PATH) # Use CMake builtin find module
+      find_package(Git QUIET)
+      if(NOT GIT_EXECUTABLE)
+        message(FATAL_ERROR "error: could not find git for fetch of ${name}")
+      endif()
+    endif()
+    set(work_dir ${source_dir})
+    set(comment "Performing update step for '${name}'")
+    get_property(git_tag TARGET ${name} PROPERTY _EP_GIT_TAG)
+    if(NOT git_tag)
+      set(git_tag "master")
+    endif()
+    get_property(git_remote_name TARGET ${name} PROPERTY _EP_GIT_REMOTE_NAME)
+    if(NOT git_remote_name)
+      set(git_remote_name "origin")
+    endif()
+
+    set(git_init_submodules TRUE)
+    get_property(git_submodules_set TARGET ${name} PROPERTY _EP_GIT_SUBMODULES SET)
+    if(git_submodules_set)
+      get_property(git_submodules TARGET ${name} PROPERTY _EP_GIT_SUBMODULES)
+      if(git_submodules  STREQUAL "" AND _EP_CMP0097 STREQUAL "NEW")
+        set(git_init_submodules FALSE)
+      endif()
+    endif()
+
+    get_property(git_update_strategy TARGET ${name} PROPERTY _EP_GIT_REMOTE_UPDATE_STRATEGY)
+    if(NOT git_update_strategy)
+      set(git_update_strategy "${CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY}")
+    endif()
+    if(NOT git_update_strategy)
+      set(git_update_strategy REBASE)
+    endif()
+    set(strategies CHECKOUT REBASE REBASE_CHECKOUT)
+    if(NOT git_update_strategy IN_LIST strategies)
+      message(FATAL_ERROR "'${git_update_strategy}' is not one of the supported strategies: ${strategies}")
+    endif()
+
+    _ep_get_git_submodules_recurse(git_submodules_recurse)
+
+    _ep_write_gitupdate_script(${tmp_dir}/${name}-gitupdate.cmake
+      ${GIT_EXECUTABLE} ${git_tag} ${git_remote_name} ${git_init_submodules} "${git_submodules_recurse}" "${git_submodules}" ${git_repository} ${work_dir} ${git_update_strategy}
+      )
+    set(cmd ${CMAKE_COMMAND} -P ${tmp_dir}/${name}-gitupdate.cmake)
+    set(always 1)
+  elseif(hg_repository)
+    if(NOT HG_EXECUTABLE)
+      message(FATAL_ERROR "error: could not find hg for pull of ${name}")
+    endif()
+    set(work_dir ${source_dir})
+    set(comment "Performing update step (hg pull) for '${name}'")
+    get_property(hg_tag TARGET ${name} PROPERTY _EP_HG_TAG)
+    if(NOT hg_tag)
+      set(hg_tag "tip")
+    endif()
+    if("${HG_VERSION_STRING}" STREQUAL "2.1")
+      message(WARNING "Mercurial 2.1 does not distinguish an empty pull from a failed pull:
+ http://mercurial.selenic.com/wiki/UpgradeNotes#A2.1.1:_revert_pull_return_code_change.2C_compile_issue_on_OS_X
+ http://thread.gmane.org/gmane.comp.version-control.mercurial.devel/47656
+Update to Mercurial >= 2.1.1.
+")
+    endif()
+    set(cmd ${HG_EXECUTABLE} pull
+      COMMAND ${HG_EXECUTABLE} update ${hg_tag}
+      )
+    set(always 1)
+  endif()
+
+  get_property(log TARGET ${name} PROPERTY _EP_LOG_UPDATE)
+  if(log)
+    set(log LOG 1)
+  else()
+    set(log "")
+  endif()
+
+  get_property(uses_terminal TARGET ${name} PROPERTY
+    _EP_USES_TERMINAL_UPDATE)
+  if(uses_terminal)
+    set(uses_terminal USES_TERMINAL 1)
+  else()
+    set(uses_terminal "")
+  endif()
+
+  set(__cmdQuoted)
+  foreach(__item IN LISTS cmd)
+    string(APPEND __cmdQuoted " [==[${__item}]==]")
+  endforeach()
+  cmake_language(EVAL CODE "
+    ExternalProject_Add_Step(${name} update
+      INDEPENDENT TRUE
+      COMMENT \${comment}
+      COMMAND ${__cmdQuoted}
+      ALWAYS \${always}
+      EXCLUDE_FROM_MAIN \${update_disconnected}
+      WORKING_DIRECTORY \${work_dir}
+      DEPENDEES download
+      ${log}
+      ${uses_terminal}
+      )"
+  )
+
+endfunction()
+
+
+function(_ep_add_patch_command name)
+  ExternalProject_Get_Property(${name} source_dir)
+
+  get_property(cmd_set TARGET ${name} PROPERTY _EP_PATCH_COMMAND SET)
+  get_property(cmd TARGET ${name} PROPERTY _EP_PATCH_COMMAND)
+
+  set(work_dir)
+
+  if(cmd_set)
+    set(work_dir ${source_dir})
+  endif()
+
+  get_property(log TARGET ${name} PROPERTY _EP_LOG_PATCH)
+  if(log)
+    set(log LOG 1)
+  else()
+    set(log "")
+  endif()
+
+  _ep_get_update_disconnected(update_disconnected ${name})
+  if(update_disconnected)
+    set(patch_dep download)
+  else()
+    set(patch_dep update)
+  endif()
+
+  set(__cmdQuoted)
+  foreach(__item IN LISTS cmd)
+    string(APPEND __cmdQuoted " [==[${__item}]==]")
+  endforeach()
+  cmake_language(EVAL CODE "
+    ExternalProject_Add_Step(${name} patch
+      INDEPENDENT TRUE
+      COMMAND ${__cmdQuoted}
+      WORKING_DIRECTORY \${work_dir}
+      DEPENDEES \${patch_dep}
+      ${log}
+      )"
+  )
+endfunction()
+
+function(_ep_get_file_deps var name)
+  set(file_deps)
+
+  get_property(deps TARGET ${name} PROPERTY _EP_DEPENDS)
+  foreach(dep IN LISTS deps)
+    get_property(dep_type TARGET ${dep} PROPERTY TYPE)
+    if(dep_type STREQUAL "UTILITY")
+      get_property(is_ep TARGET ${dep} PROPERTY _EP_IS_EXTERNAL_PROJECT)
+      if(is_ep)
+        _ep_get_step_stampfile(${dep} "done" done_stamp_file)
+        list(APPEND file_deps ${done_stamp_file})
+      endif()
+    endif()
+  endforeach()
+
+  set("${var}" "${file_deps}" PARENT_SCOPE)
+endfunction()
+
+function(_ep_extract_configure_command var name)
+  get_property(cmd_set TARGET ${name} PROPERTY _EP_CONFIGURE_COMMAND SET)
+  if(cmd_set)
+    get_property(cmd TARGET ${name} PROPERTY _EP_CONFIGURE_COMMAND)
+  else()
+    get_target_property(cmake_command ${name} _EP_CMAKE_COMMAND)
+    if(cmake_command)
+      set(cmd "${cmake_command}")
+    else()
+      set(cmd "${CMAKE_COMMAND}")
+    endif()
+
+    get_property(cmake_args TARGET ${name} PROPERTY _EP_CMAKE_ARGS)
+    list(APPEND cmd ${cmake_args})
+
+    # If there are any CMAKE_CACHE_ARGS or CMAKE_CACHE_DEFAULT_ARGS,
+    # write an initial cache and use it
+    get_property(cmake_cache_args TARGET ${name} PROPERTY _EP_CMAKE_CACHE_ARGS)
+    get_property(cmake_cache_default_args TARGET ${name} PROPERTY _EP_CMAKE_CACHE_DEFAULT_ARGS)
+
+    set(has_cmake_cache_args 0)
+    if(NOT "${cmake_cache_args}" STREQUAL "")
+      set(has_cmake_cache_args 1)
+    endif()
+
+    set(has_cmake_cache_default_args 0)
+    if(NOT "${cmake_cache_default_args}" STREQUAL "")
+      set(has_cmake_cache_default_args 1)
+    endif()
+
+    get_target_property(cmake_generator ${name} _EP_CMAKE_GENERATOR)
+    get_target_property(cmake_generator_instance ${name} _EP_CMAKE_GENERATOR_INSTANCE)
+    get_target_property(cmake_generator_platform ${name} _EP_CMAKE_GENERATOR_PLATFORM)
+    get_target_property(cmake_generator_toolset ${name} _EP_CMAKE_GENERATOR_TOOLSET)
+    if(cmake_generator)
+      list(APPEND cmd "-G${cmake_generator}")
+      if(cmake_generator_platform)
+        list(APPEND cmd "-A${cmake_generator_platform}")
+      endif()
+      if(cmake_generator_toolset)
+        list(APPEND cmd "-T${cmake_generator_toolset}")
+      endif()
+      if(cmake_generator_instance)
+        list(APPEND cmd "-DCMAKE_GENERATOR_INSTANCE:INTERNAL=${cmake_generator_instance}")
+      endif()
+    else()
+      if(CMAKE_EXTRA_GENERATOR)
+        list(APPEND cmd "-G${CMAKE_EXTRA_GENERATOR} - ${CMAKE_GENERATOR}")
+      else()
+        list(APPEND cmd "-G${CMAKE_GENERATOR}")
+        if("${CMAKE_GENERATOR}" MATCHES "Green Hills MULTI")
+          set(has_cmake_cache_default_args 1)
+          set(cmake_cache_default_args ${cmake_cache_default_args}
+            "-DGHS_TARGET_PLATFORM:STRING=${GHS_TARGET_PLATFORM}"
+            "-DGHS_PRIMARY_TARGET:STRING=${GHS_PRIMARY_TARGET}"
+            "-DGHS_TOOLSET_ROOT:STRING=${GHS_TOOLSET_ROOT}"
+            "-DGHS_OS_ROOT:STRING=${GHS_OS_ROOT}"
+            "-DGHS_OS_DIR:STRING=${GHS_OS_DIR}"
+            "-DGHS_BSP_NAME:STRING=${GHS_BSP_NAME}")
+        endif()
+      endif()
+      if(cmake_generator_platform)
+        message(FATAL_ERROR "Option CMAKE_GENERATOR_PLATFORM not allowed without CMAKE_GENERATOR.")
+      endif()
+      if(CMAKE_GENERATOR_PLATFORM)
+        list(APPEND cmd "-A${CMAKE_GENERATOR_PLATFORM}")
+      endif()
+      if(cmake_generator_toolset)
+        message(FATAL_ERROR "Option CMAKE_GENERATOR_TOOLSET not allowed without CMAKE_GENERATOR.")
+      endif()
+      if(CMAKE_GENERATOR_TOOLSET)
+        list(APPEND cmd "-T${CMAKE_GENERATOR_TOOLSET}")
+      endif()
+      if(cmake_generator_instance)
+        message(FATAL_ERROR "Option CMAKE_GENERATOR_INSTANCE not allowed without CMAKE_GENERATOR.")
+      endif()
+      if(CMAKE_GENERATOR_INSTANCE)
+        list(APPEND cmd "-DCMAKE_GENERATOR_INSTANCE:INTERNAL=${CMAKE_GENERATOR_INSTANCE}")
+      endif()
+    endif()
+
+    if(has_cmake_cache_args OR has_cmake_cache_default_args)
+      set(_ep_cache_args_script "<TMP_DIR>/${name}-cache-$<CONFIG>.cmake")
+      if(has_cmake_cache_args)
+        _ep_command_line_to_initial_cache(script_initial_cache_force "${cmake_cache_args}" 1)
+      endif()
+      if(has_cmake_cache_default_args)
+        _ep_command_line_to_initial_cache(script_initial_cache_default "${cmake_cache_default_args}" 0)
+      endif()
+      _ep_write_initial_cache(${name} "${_ep_cache_args_script}" "${script_initial_cache_force}${script_initial_cache_default}")
+      list(APPEND cmd "-C${_ep_cache_args_script}")
+      _ep_replace_location_tags(${name} _ep_cache_args_script)
+      set(_ep_cache_args_script
+        "${_ep_cache_args_script}"
+        PARENT_SCOPE)
+    endif()
+
+    list(APPEND cmd "<SOURCE_DIR><SOURCE_SUBDIR>")
+  endif()
+
+  set("${var}" "${cmd}" PARENT_SCOPE)
+endfunction()
+
+# TODO: Make sure external projects use the proper compiler
+function(_ep_add_configure_command name)
+  ExternalProject_Get_Property(${name} binary_dir tmp_dir)
+
+  set(file_deps)
+  get_property(configure_handled_by_build TARGET ${name}
+               PROPERTY _EP_CONFIGURE_HANDLED_BY_BUILD)
+  if(NOT configure_handled_by_build)
+    # Depend on other external projects (file-level)
+    _ep_get_file_deps(file_deps ${name})
+  endif()
+
+  _ep_extract_configure_command(cmd ${name})
+
+  # If anything about the configure command changes, (command itself, cmake
+  # used, cmake args or cmake generator) then re-run the configure step.
+  # Fixes issue https://gitlab.kitware.com/cmake/cmake/-/issues/10258
+  #
+  if(NOT EXISTS ${tmp_dir}/${name}-cfgcmd.txt.in)
+    file(WRITE ${tmp_dir}/${name}-cfgcmd.txt.in "cmd='\@cmd\@'\n")
+  endif()
+  configure_file(${tmp_dir}/${name}-cfgcmd.txt.in ${tmp_dir}/${name}-cfgcmd.txt)
+  list(APPEND file_deps ${tmp_dir}/${name}-cfgcmd.txt)
+  list(APPEND file_deps ${_ep_cache_args_script})
+
+  get_property(log TARGET ${name} PROPERTY _EP_LOG_CONFIGURE)
+  if(log)
+    set(log LOG 1)
+  else()
+    set(log "")
+  endif()
+
+  get_property(uses_terminal TARGET ${name} PROPERTY
+    _EP_USES_TERMINAL_CONFIGURE)
+  if(uses_terminal)
+    set(uses_terminal USES_TERMINAL 1)
+  else()
+    set(uses_terminal "")
+  endif()
+
+  set(__cmdQuoted)
+  foreach(__item IN LISTS cmd)
+    string(APPEND __cmdQuoted " [==[${__item}]==]")
+  endforeach()
+  cmake_language(EVAL CODE "
+    ExternalProject_Add_Step(${name} configure
+      INDEPENDENT FALSE
+      COMMAND ${__cmdQuoted}
+      WORKING_DIRECTORY \${binary_dir}
+      DEPENDEES patch
+      DEPENDS \${file_deps}
+      ${log}
+      ${uses_terminal}
+      )"
+  )
+endfunction()
+
+
+function(_ep_add_build_command name)
+  ExternalProject_Get_Property(${name} binary_dir)
+
+  set(file_deps)
+  get_property(configure_handled_by_build TARGET ${name}
+               PROPERTY _EP_CONFIGURE_HANDLED_BY_BUILD)
+  if(configure_handled_by_build)
+    # Depend on other external projects (file-level)
+    _ep_get_file_deps(file_deps ${name})
+  endif()
+
+  get_property(cmd_set TARGET ${name} PROPERTY _EP_BUILD_COMMAND SET)
+  if(cmd_set)
+    get_property(cmd TARGET ${name} PROPERTY _EP_BUILD_COMMAND)
+  else()
+    _ep_get_build_command(${name} BUILD cmd)
+  endif()
+
+  get_property(log TARGET ${name} PROPERTY _EP_LOG_BUILD)
+  if(log)
+    set(log LOG 1)
+  else()
+    set(log "")
+  endif()
+
+  get_property(uses_terminal TARGET ${name} PROPERTY
+    _EP_USES_TERMINAL_BUILD)
+  if(uses_terminal)
+    set(uses_terminal USES_TERMINAL 1)
+  else()
+    set(uses_terminal "")
+  endif()
+
+  get_property(build_always TARGET ${name} PROPERTY _EP_BUILD_ALWAYS)
+  if(build_always)
+    set(always 1)
+  else()
+    set(always 0)
+  endif()
+
+  get_property(build_byproducts TARGET ${name} PROPERTY _EP_BUILD_BYPRODUCTS)
+
+  set(__cmdQuoted)
+  foreach(__item IN LISTS cmd)
+    string(APPEND __cmdQuoted " [==[${__item}]==]")
+  endforeach()
+  cmake_language(EVAL CODE "
+    ExternalProject_Add_Step(${name} build
+      INDEPENDENT FALSE
+      COMMAND ${__cmdQuoted}
+      BYPRODUCTS \${build_byproducts}
+      WORKING_DIRECTORY \${binary_dir}
+      DEPENDEES configure
+      DEPENDS \${file_deps}
+      ALWAYS \${always}
+      ${log}
+      ${uses_terminal}
+      )"
+  )
+endfunction()
+
+
+function(_ep_add_install_command name)
+  ExternalProject_Get_Property(${name} binary_dir)
+
+  get_property(cmd_set TARGET ${name} PROPERTY _EP_INSTALL_COMMAND SET)
+  if(cmd_set)
+    get_property(cmd TARGET ${name} PROPERTY _EP_INSTALL_COMMAND)
+  else()
+    _ep_get_build_command(${name} INSTALL cmd)
+  endif()
+
+  get_property(log TARGET ${name} PROPERTY _EP_LOG_INSTALL)
+  if(log)
+    set(log LOG 1)
+  else()
+    set(log "")
+  endif()
+
+  get_property(uses_terminal TARGET ${name} PROPERTY
+    _EP_USES_TERMINAL_INSTALL)
+  if(uses_terminal)
+    set(uses_terminal USES_TERMINAL 1)
+  else()
+    set(uses_terminal "")
+  endif()
+
+  set(__cmdQuoted)
+  foreach(__item IN LISTS cmd)
+    string(APPEND __cmdQuoted " [==[${__item}]==]")
+  endforeach()
+  cmake_language(EVAL CODE "
+    ExternalProject_Add_Step(${name} install
+      INDEPENDENT FALSE
+      COMMAND ${__cmdQuoted}
+      WORKING_DIRECTORY \${binary_dir}
+      DEPENDEES build
+      ${log}
+      ${uses_terminal}
+      )"
+  )
+endfunction()
+
+
+function(_ep_add_test_command name)
+  ExternalProject_Get_Property(${name} binary_dir)
+
+  get_property(before TARGET ${name} PROPERTY _EP_TEST_BEFORE_INSTALL)
+  get_property(after TARGET ${name} PROPERTY _EP_TEST_AFTER_INSTALL)
+  get_property(exclude TARGET ${name} PROPERTY _EP_TEST_EXCLUDE_FROM_MAIN)
+  get_property(cmd_set TARGET ${name} PROPERTY _EP_TEST_COMMAND SET)
+
+  # Only actually add the test step if one of the test related properties is
+  # explicitly set. (i.e. the test step is omitted unless requested...)
+  #
+  if(cmd_set OR before OR after OR exclude)
+    if(cmd_set)
+      get_property(cmd TARGET ${name} PROPERTY _EP_TEST_COMMAND)
+    else()
+      _ep_get_build_command(${name} TEST cmd)
+    endif()
+
+    if(before)
+      set(dependees_args DEPENDEES build)
+    else()
+      set(dependees_args DEPENDEES install)
+    endif()
+
+    if(exclude)
+      set(dependers_args "")
+      set(exclude_args EXCLUDE_FROM_MAIN 1)
+    else()
+      if(before)
+        set(dependers_args DEPENDERS install)
+      else()
+        set(dependers_args "")
+      endif()
+      set(exclude_args "")
+    endif()
+
+    get_property(log TARGET ${name} PROPERTY _EP_LOG_TEST)
+    if(log)
+      set(log LOG 1)
+    else()
+      set(log "")
+    endif()
+
+    get_property(uses_terminal TARGET ${name} PROPERTY
+      _EP_USES_TERMINAL_TEST)
+    if(uses_terminal)
+      set(uses_terminal USES_TERMINAL 1)
+    else()
+      set(uses_terminal "")
+    endif()
+
+    set(__cmdQuoted)
+    foreach(__item IN LISTS cmd)
+      string(APPEND __cmdQuoted " [==[${__item}]==]")
+    endforeach()
+    cmake_language(EVAL CODE "
+      ExternalProject_Add_Step(${name} test
+        INDEPENDENT FALSE
+        COMMAND ${__cmdQuoted}
+        WORKING_DIRECTORY \${binary_dir}
+        ${dependees_args}
+        ${dependers_args}
+        ${exclude_args}
+        ${log}
+        ${uses_terminal}
+        )"
+    )
+  endif()
+endfunction()
+
+
+function(ExternalProject_Add name)
+  cmake_policy(GET CMP0097 _EP_CMP0097
+    PARENT_SCOPE # undocumented, do not use outside of CMake
+    )
+  cmake_policy(GET CMP0114 cmp0114
+    PARENT_SCOPE # undocumented, do not use outside of CMake
+    )
+  if(CMAKE_XCODE_BUILD_SYSTEM VERSION_GREATER_EQUAL 12 AND NOT cmp0114 STREQUAL "NEW")
+    message(AUTHOR_WARNING
+      "Policy CMP0114 is not set to NEW.  "
+      "In order to support the Xcode \"new build system\", "
+      "this project must be updated to set policy CMP0114 to NEW."
+      "\n"
+      "Since CMake is generating for the Xcode \"new build system\", "
+      "ExternalProject_Add will use policy CMP0114's NEW behavior anyway, "
+      "but the generated build system may not match what the project intends."
+      )
+    set(cmp0114 "NEW")
+  endif()
+
+  _ep_get_configuration_subdir_suffix(cfgdir)
+
+  # Add a custom target for the external project.
+  set(cmf_dir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles)
+  _ep_get_complete_stampfile(${name} complete_stamp_file)
+
+  cmake_policy(PUSH)
+  if(cmp0114 STREQUAL "NEW")
+    # To implement CMP0114 NEW behavior with Makefile generators,
+    # we need CMP0113 NEW behavior.
+    cmake_policy(SET CMP0113 NEW)
+  endif()
+  # The "ALL" option to add_custom_target just tells it to not set the
+  # EXCLUDE_FROM_ALL target property. Later, if the EXCLUDE_FROM_ALL
+  # argument was passed, we explicitly set it for the target.
+  add_custom_target(${name} ALL DEPENDS ${complete_stamp_file})
+  cmake_policy(POP)
+  set_property(TARGET ${name} PROPERTY _EP_IS_EXTERNAL_PROJECT 1)
+  set_property(TARGET ${name} PROPERTY LABELS ${name})
+  set_property(TARGET ${name} PROPERTY FOLDER "ExternalProjectTargets/${name}")
+
+  set_property(TARGET ${name} PROPERTY _EP_CMP0114 "${cmp0114}")
+
+  set(keywords
+    #
+    # Directory options
+    #
+    PREFIX
+    TMP_DIR
+    STAMP_DIR
+    LOG_DIR
+    DOWNLOAD_DIR
+    SOURCE_DIR
+    BINARY_DIR
+    INSTALL_DIR
+    #
+    # Download step options
+    #
+    DOWNLOAD_COMMAND
+    #
+    URL
+    URL_HASH
+    URL_MD5
+    DOWNLOAD_NAME
+    DOWNLOAD_NO_EXTRACT
+    DOWNLOAD_NO_PROGRESS
+    TIMEOUT
+    INACTIVITY_TIMEOUT
+    HTTP_USERNAME
+    HTTP_PASSWORD
+    HTTP_HEADER
+    TLS_VERIFY     # Also used for git clone operations
+    TLS_CAINFO
+    NETRC
+    NETRC_FILE
+    #
+    GIT_REPOSITORY
+    GIT_TAG
+    GIT_REMOTE_NAME
+    GIT_SUBMODULES
+    GIT_SUBMODULES_RECURSE
+    GIT_SHALLOW
+    GIT_PROGRESS
+    GIT_CONFIG
+    GIT_REMOTE_UPDATE_STRATEGY
+    #
+    SVN_REPOSITORY
+    SVN_REVISION
+    SVN_USERNAME
+    SVN_PASSWORD
+    SVN_TRUST_CERT
+    #
+    HG_REPOSITORY
+    HG_TAG
+    #
+    CVS_REPOSITORY
+    CVS_MODULE
+    CVS_TAG
+    #
+    # Update step options
+    #
+    UPDATE_COMMAND
+    UPDATE_DISCONNECTED
+    #
+    # Patch step options
+    #
+    PATCH_COMMAND
+    #
+    # Configure step options
+    #
+    CONFIGURE_COMMAND
+    CMAKE_COMMAND
+    CMAKE_GENERATOR
+    CMAKE_GENERATOR_PLATFORM
+    CMAKE_GENERATOR_TOOLSET
+    CMAKE_GENERATOR_INSTANCE
+    CMAKE_ARGS
+    CMAKE_CACHE_ARGS
+    CMAKE_CACHE_DEFAULT_ARGS
+    SOURCE_SUBDIR
+    CONFIGURE_HANDLED_BY_BUILD
+    #
+    # Build step options
+    #
+    BUILD_COMMAND
+    BUILD_IN_SOURCE
+    BUILD_ALWAYS
+    BUILD_BYPRODUCTS
+    #
+    # Install step options
+    #
+    INSTALL_COMMAND
+    #
+    # Test step options
+    #
+    TEST_COMMAND
+    TEST_BEFORE_INSTALL
+    TEST_AFTER_INSTALL
+    TEST_EXCLUDE_FROM_MAIN
+    #
+    # Logging options
+    #
+    LOG_DOWNLOAD
+    LOG_UPDATE
+    LOG_PATCH
+    LOG_CONFIGURE
+    LOG_BUILD
+    LOG_INSTALL
+    LOG_TEST
+    LOG_MERGED_STDOUTERR
+    LOG_OUTPUT_ON_FAILURE
+    #
+    # Terminal access options
+    #
+    USES_TERMINAL_DOWNLOAD
+    USES_TERMINAL_UPDATE
+    USES_TERMINAL_CONFIGURE
+    USES_TERMINAL_BUILD
+    USES_TERMINAL_INSTALL
+    USES_TERMINAL_TEST
+    #
+    # Target options
+    #
+    DEPENDS
+    EXCLUDE_FROM_ALL
+    STEP_TARGETS
+    INDEPENDENT_STEP_TARGETS
+    #
+    # Miscellaneous options
+    #
+    LIST_SEPARATOR
+  )
+  _ep_parse_arguments(ExternalProject_Add "${keywords}" ${name} _EP_ "${ARGN}")
+  _ep_set_directories(${name})
+  _ep_get_step_stampfile(${name} "done" done_stamp_file)
+  _ep_get_step_stampfile(${name} "install" install_stamp_file)
+
+  # Set the EXCLUDE_FROM_ALL target property if required.
+  get_property(exclude_from_all TARGET ${name} PROPERTY _EP_EXCLUDE_FROM_ALL)
+  if(exclude_from_all)
+    set_property(TARGET ${name} PROPERTY EXCLUDE_FROM_ALL TRUE)
+  endif()
+
+  # The 'complete' step depends on all other steps and creates a
+  # 'done' mark.  A dependent external project's 'configure' step
+  # depends on the 'done' mark so that it rebuilds when this project
+  # rebuilds.  It is important that 'done' is not the output of any
+  # custom command so that CMake does not propagate build rules to
+  # other external project targets, which may cause problems during
+  # parallel builds.  However, the Ninja generator needs to see the entire
+  # dependency graph, and can cope with custom commands belonging to
+  # multiple targets, so we add the 'done' mark as an output for Ninja only.
+  set(complete_outputs ${complete_stamp_file})
+  if(${CMAKE_GENERATOR} MATCHES "Ninja")
+    set(complete_outputs ${complete_outputs} ${done_stamp_file})
+  endif()
+
+  add_custom_command(
+    OUTPUT ${complete_outputs}
+    COMMENT "Completed '${name}'"
+    COMMAND ${CMAKE_COMMAND} -E make_directory ${cmf_dir}${cfgdir}
+    COMMAND ${CMAKE_COMMAND} -E touch ${complete_stamp_file}
+    COMMAND ${CMAKE_COMMAND} -E touch ${done_stamp_file}
+    DEPENDS ${install_stamp_file}
+    VERBATIM
+    )
+
+
+  # Depend on other external projects (target-level).
+  get_property(deps TARGET ${name} PROPERTY _EP_DEPENDS)
+  foreach(arg IN LISTS deps)
+    add_dependencies(${name} ${arg})
+  endforeach()
+
+  # Set up custom build steps based on the target properties.
+  # Each step depends on the previous one.
+  #
+  # The target depends on the output of the final step.
+  # (Already set up above in the DEPENDS of the add_custom_target command.)
+  #
+  _ep_add_mkdir_command(${name})
+  _ep_add_download_command(${name})
+  _ep_add_update_command(${name})
+  _ep_add_patch_command(${name})
+  _ep_add_configure_command(${name})
+  _ep_add_build_command(${name})
+  _ep_add_install_command(${name})
+
+  # Test is special in that it might depend on build, or it might depend
+  # on install.
+  #
+  _ep_add_test_command(${name})
+endfunction()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FLTKCompatibility.cmake b/share/cmake-3.22/Modules/FLTKCompatibility.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FLTKCompatibility.cmake
rename to share/cmake-3.22/Modules/FLTKCompatibility.cmake
diff --git a/share/cmake-3.22/Modules/FeatureSummary.cmake b/share/cmake-3.22/Modules/FeatureSummary.cmake
new file mode 100644
index 0000000..77c66d1
--- /dev/null
+++ b/share/cmake-3.22/Modules/FeatureSummary.cmake
@@ -0,0 +1,749 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FeatureSummary
+--------------
+
+Functions for generating a summary of enabled/disabled features.
+
+These functions can be used to generate a summary of enabled and disabled
+packages and/or feature for a build tree such as::
+
+    -- The following OPTIONAL packages have been found:
+    LibXml2 (required version >= 2.4), XML processing lib, <http://xmlsoft.org>
+       * Enables HTML-import in MyWordProcessor
+       * Enables odt-export in MyWordProcessor
+    PNG, A PNG image library., <http://www.libpng.org/pub/png/>
+       * Enables saving screenshots
+    -- The following OPTIONAL packages have not been found:
+    Lua51, The Lua scripting language., <http://www.lua.org>
+       * Enables macros in MyWordProcessor
+    Foo, Foo provides cool stuff.
+
+Global Properties
+^^^^^^^^^^^^^^^^^
+
+.. variable:: FeatureSummary_PKG_TYPES
+
+The global property :variable:`FeatureSummary_PKG_TYPES` defines the type of
+packages used by `FeatureSummary`.
+
+The order in this list is important, the first package type in the list is the
+least important, the last is the most important. the of a package can only be
+changed to higher types.
+
+The default package types are , ``RUNTIME``, ``OPTIONAL``, ``RECOMMENDED`` and
+``REQUIRED``, and their importance is
+``RUNTIME < OPTIONAL < RECOMMENDED < REQUIRED``.
+
+
+.. variable:: FeatureSummary_REQUIRED_PKG_TYPES
+
+The global property :variable:`FeatureSummary_REQUIRED_PKG_TYPES` defines which
+package types are required.
+
+If one or more package in this categories has not been found, CMake will abort
+when calling :command:`feature_summary` with the
+'FATAL_ON_MISSING_REQUIRED_PACKAGES' option enabled.
+
+The default value for this global property is ``REQUIRED``.
+
+
+.. variable:: FeatureSummary_DEFAULT_PKG_TYPE
+
+The global property :variable:`FeatureSummary_DEFAULT_PKG_TYPE` defines which
+package type is the default one.
+When calling :command:`feature_summary`, if the user did not set the package type
+explicitly, the package will be assigned to this category.
+
+This value must be one of the types defined in the
+:variable:`FeatureSummary_PKG_TYPES` global property unless the package type
+is set for all the packages.
+
+The default value for this global property is ``OPTIONAL``.
+
+
+.. variable:: FeatureSummary_<TYPE>_DESCRIPTION
+
+.. versionadded:: 3.9
+
+The global property :variable:`FeatureSummary_<TYPE>_DESCRIPTION` can be defined
+for each type to replace the type name with the specified string whenever the
+package type is used in an output string.
+
+If not set, the string "``<TYPE>`` packages" is used.
+
+
+#]=======================================================================]
+
+get_property(_fsPkgTypeIsSet GLOBAL PROPERTY FeatureSummary_PKG_TYPES SET)
+if(NOT _fsPkgTypeIsSet)
+  set_property(GLOBAL PROPERTY FeatureSummary_PKG_TYPES RUNTIME OPTIONAL RECOMMENDED REQUIRED)
+endif()
+
+get_property(_fsReqPkgTypesIsSet GLOBAL PROPERTY FeatureSummary_REQUIRED_PKG_TYPES SET)
+if(NOT _fsReqPkgTypesIsSet)
+  set_property(GLOBAL PROPERTY FeatureSummary_REQUIRED_PKG_TYPES REQUIRED)
+endif()
+
+get_property(_fsDefaultPkgTypeIsSet GLOBAL PROPERTY FeatureSummary_DEFAULT_PKG_TYPE SET)
+if(NOT _fsDefaultPkgTypeIsSet)
+  set_property(GLOBAL PROPERTY FeatureSummary_DEFAULT_PKG_TYPE OPTIONAL)
+endif()
+
+#[=======================================================================[.rst:
+
+Functions
+^^^^^^^^^
+
+#]=======================================================================]
+
+function(_FS_GET_FEATURE_SUMMARY _property _var _includeQuiet)
+
+  get_property(_fsPkgTypes GLOBAL PROPERTY FeatureSummary_PKG_TYPES)
+  get_property(_fsDefaultPkgType GLOBAL PROPERTY FeatureSummary_DEFAULT_PKG_TYPE)
+
+  set(_type "ANY")
+  foreach(_fsPkgType ${_fsPkgTypes})
+    if("${_property}" MATCHES "${_fsPkgType}_PACKAGES_(NOT_)?FOUND")
+      set(_type "${_fsPkgType}")
+      break()
+    endif()
+  endforeach()
+
+  if("${_property}" MATCHES "PACKAGES_FOUND")
+    set(_property "PACKAGES_FOUND")
+  elseif("${_property}" MATCHES "PACKAGES_NOT_FOUND")
+    set(_property "PACKAGES_NOT_FOUND")
+  endif()
+
+
+  set(_currentFeatureText "")
+  get_property(_EnabledFeatures  GLOBAL PROPERTY ${_property})
+  if(_EnabledFeatures)
+    list(REMOVE_DUPLICATES _EnabledFeatures)
+  endif(_EnabledFeatures)
+
+  foreach(_currentFeature ${_EnabledFeatures})
+
+    # does this package belong to the type we currently want to list ?
+    get_property(_currentType  GLOBAL PROPERTY _CMAKE_${_currentFeature}_TYPE)
+    if(NOT _currentType)
+      list(FIND _fsPkgTypes "${_fsDefaultPkgType}" _defaultInPkgTypes)
+      if("${_defaultInPkgTypes}" STREQUAL "-1")
+        string(REGEX REPLACE ";([^;]+)$" " and \\1" _fsPkgTypes_msg "${_fsPkgTypes}")
+        string(REPLACE ";" ", " _fsPkgTypes_msg "${_fsPkgTypes_msg}")
+        message(FATAL_ERROR "Bad package property type ${_fsDefaultPkgType} used in global property FeatureSummary_DEFAULT_PKG_TYPE. "
+                            "Valid types are ${_fsPkgTypes_msg}. "
+                            "Either update FeatureSummary_DEFAULT_PKG_TYPE or add ${_fsDefaultPkgType} to the FeatureSummary_PKG_TYPES global property.")
+      endif()
+      set(_currentType ${_fsDefaultPkgType})
+    endif()
+
+    if("${_type}" STREQUAL ANY  OR  "${_type}" STREQUAL "${_currentType}")
+      # check whether the current feature/package should be in the output depending on whether it was QUIET or not
+      set(includeThisOne TRUE)
+      set(_required FALSE)
+      # skip QUIET packages, except if they are REQUIRED or INCLUDE_QUIET_PACKAGES has been set
+      get_property(_fsReqPkgTypes GLOBAL PROPERTY FeatureSummary_REQUIRED_PKG_TYPES)
+      foreach(_fsReqPkgType ${_fsReqPkgTypes})
+        if("${_currentType}" STREQUAL "${_fsReqPkgType}")
+          set(_required TRUE)
+          break()
+        endif()
+      endforeach()
+      if(NOT _required AND NOT _includeQuiet)
+        get_property(_isQuiet  GLOBAL PROPERTY _CMAKE_${_currentFeature}_QUIET)
+        if(_isQuiet)
+          set(includeThisOne FALSE)
+        endif()
+      endif()
+      get_property(_isTransitiveDepend
+        GLOBAL PROPERTY _CMAKE_${_currentFeature}_TRANSITIVE_DEPENDENCY
+      )
+      if(_isTransitiveDepend)
+        set(includeThisOne FALSE)
+      endif()
+
+      if(includeThisOne)
+
+        string(APPEND _currentFeatureText "\n * ${_currentFeature}")
+        get_property(_info  GLOBAL PROPERTY _CMAKE_${_currentFeature}_REQUIRED_VERSION)
+        if(_info)
+          string(APPEND _currentFeatureText " (required version ${_info})")
+        endif()
+        get_property(_info  GLOBAL PROPERTY _CMAKE_${_currentFeature}_DESCRIPTION)
+        if(_info)
+          string(APPEND _currentFeatureText ", ${_info}")
+        endif()
+        get_property(_info  GLOBAL PROPERTY _CMAKE_${_currentFeature}_URL)
+        if(_info)
+          string(APPEND _currentFeatureText ", <${_info}>")
+        endif()
+
+        get_property(_info  GLOBAL PROPERTY _CMAKE_${_currentFeature}_PURPOSE)
+        foreach(_purpose ${_info})
+          string(APPEND _currentFeatureText "\n   ${_purpose}")
+        endforeach()
+
+      endif()
+
+    endif()
+
+  endforeach()
+  set(${_var} "${_currentFeatureText}" PARENT_SCOPE)
+endfunction()
+
+
+#[=======================================================================[.rst:
+.. command:: feature_summary
+
+  ::
+
+    feature_summary( [FILENAME <file>]
+                     [APPEND]
+                     [VAR <variable_name>]
+                     [INCLUDE_QUIET_PACKAGES]
+                     [FATAL_ON_MISSING_REQUIRED_PACKAGES]
+                     [DESCRIPTION "<description>" | DEFAULT_DESCRIPTION]
+                     [QUIET_ON_EMPTY]
+                     WHAT (ALL
+                          | PACKAGES_FOUND | PACKAGES_NOT_FOUND
+                          | <TYPE>_PACKAGES_FOUND | <TYPE>_PACKAGES_NOT_FOUND
+                          | ENABLED_FEATURES | DISABLED_FEATURES)
+                   )
+
+  The ``feature_summary()`` macro can be used to print information about
+  enabled or disabled packages or features of a project.  By default,
+  only the names of the features/packages will be printed and their
+  required version when one was specified.  Use ``set_package_properties()``
+  to add more useful information, like e.g.  a download URL for the
+  respective package or their purpose in the project.
+
+  The ``WHAT`` option is the only mandatory option.  Here you specify what
+  information will be printed:
+
+  ``ALL``
+   print everything
+  ``ENABLED_FEATURES``
+   the list of all features which are enabled
+  ``DISABLED_FEATURES``
+   the list of all features which are disabled
+  ``PACKAGES_FOUND``
+   the list of all packages which have been found
+  ``PACKAGES_NOT_FOUND``
+   the list of all packages which have not been found
+
+  For each package type ``<TYPE>`` defined by the
+  :variable:`FeatureSummary_PKG_TYPES` global property, the following
+  information can also be used:
+
+  ``<TYPE>_PACKAGES_FOUND``
+   only those packages which have been found which have the type <TYPE>
+  ``<TYPE>_PACKAGES_NOT_FOUND``
+   only those packages which have not been found which have the type <TYPE>
+
+  .. versionchanged:: 3.1
+    With the exception of the ``ALL`` value, these values can be combined
+    in order to customize the output. For example:
+
+    .. code-block:: cmake
+
+      feature_summary(WHAT ENABLED_FEATURES DISABLED_FEATURES)
+
+  If a ``FILENAME`` is given, the information is printed into this file.  If
+  ``APPEND`` is used, it is appended to this file, otherwise the file is
+  overwritten if it already existed.  If the VAR option is used, the
+  information is "printed" into the specified variable.  If ``FILENAME`` is
+  not used, the information is printed to the terminal.  Using the
+  ``DESCRIPTION`` option a description or headline can be set which will be
+  printed above the actual content.  If only one type of
+  package was requested, no title is printed, unless it is explicitly set using
+  either ``DESCRIPTION`` to use a custom string, or ``DEFAULT_DESCRIPTION`` to
+  use a default title for the requested type.
+  If ``INCLUDE_QUIET_PACKAGES`` is given, packages which have been searched with
+  ``find_package(... QUIET)`` will also be listed. By default they are skipped.
+  If ``FATAL_ON_MISSING_REQUIRED_PACKAGES`` is given, CMake will abort if a
+  package which is marked as one of the package types listed in the
+  :variable:`FeatureSummary_REQUIRED_PKG_TYPES` global property has not been
+  found.
+  The default value for the :variable:`FeatureSummary_REQUIRED_PKG_TYPES` global
+  property is ``REQUIRED``.
+
+  .. versionadded:: 3.9
+    The ``DEFAULT_DESCRIPTION`` option.
+
+  The :variable:`FeatureSummary_DEFAULT_PKG_TYPE` global property can be
+  modified to change the default package type assigned when not explicitly
+  assigned by the user.
+
+  .. versionadded:: 3.8
+    If the ``QUIET_ON_EMPTY`` option is used, if only one type of package was
+    requested, and no packages belonging to that category were found, then no
+    output (including the ``DESCRIPTION``) is printed or added to the ``VAR``
+    variable.
+
+  Example 1, append everything to a file:
+
+  .. code-block:: cmake
+
+   include(FeatureSummary)
+   feature_summary(WHAT ALL
+                   FILENAME ${CMAKE_BINARY_DIR}/all.log APPEND)
+
+  Example 2, print the enabled features into the variable
+  enabledFeaturesText, including QUIET packages:
+
+  .. code-block:: cmake
+
+   include(FeatureSummary)
+   feature_summary(WHAT ENABLED_FEATURES
+                   INCLUDE_QUIET_PACKAGES
+                   DESCRIPTION "Enabled Features:"
+                   VAR enabledFeaturesText)
+   message(STATUS "${enabledFeaturesText}")
+
+  Example 3, change default package types and print only the categories that
+  are not empty:
+
+  .. code-block:: cmake
+
+   include(FeatureSummary)
+   set_property(GLOBAL APPEND PROPERTY FeatureSummary_PKG_TYPES BUILD)
+   find_package(FOO)
+   set_package_properties(FOO PROPERTIES TYPE BUILD)
+   feature_summary(WHAT BUILD_PACKAGES_FOUND
+                   Description "Build tools found:"
+                   QUIET_ON_EMPTY)
+   feature_summary(WHAT BUILD_PACKAGES_NOT_FOUND
+                   Description "Build tools not found:"
+                   QUIET_ON_EMPTY)
+
+#]=======================================================================]
+
+function(FEATURE_SUMMARY)
+# CMAKE_PARSE_ARGUMENTS(<prefix> <options> <one_value_keywords> <multi_value_keywords> args...)
+  set(options APPEND
+              INCLUDE_QUIET_PACKAGES
+              FATAL_ON_MISSING_REQUIRED_PACKAGES
+              QUIET_ON_EMPTY
+              DEFAULT_DESCRIPTION)
+  set(oneValueArgs FILENAME
+                   VAR
+                   DESCRIPTION)
+  set(multiValueArgs WHAT)
+
+  CMAKE_PARSE_ARGUMENTS(_FS "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${_FIRST_ARG} ${ARGN})
+
+  if(_FS_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to FEATURE_SUMMARY(): \"${_FS_UNPARSED_ARGUMENTS}\"")
+  endif()
+
+  if(NOT _FS_WHAT)
+    message(FATAL_ERROR "The call to FEATURE_SUMMARY() doesn't set the required WHAT argument.")
+  endif()
+
+  if(_FS_DEFAULT_DESCRIPTION AND DEFINED _FS_DESCRIPTION)
+    message(WARNING "DEFAULT_DESCRIPTION option discarded since DESCRIPTION is set.")
+    set(_FS_DEFAULT_DESCRIPTION 0)
+  endif()
+
+  set(validWhatParts "ENABLED_FEATURES"
+                     "DISABLED_FEATURES"
+                     "PACKAGES_FOUND"
+                     "PACKAGES_NOT_FOUND")
+
+  get_property(_fsPkgTypes GLOBAL PROPERTY FeatureSummary_PKG_TYPES)
+  get_property(_fsReqPkgTypes GLOBAL PROPERTY FeatureSummary_REQUIRED_PKG_TYPES)
+  foreach(_fsPkgType ${_fsPkgTypes})
+    list(APPEND validWhatParts "${_fsPkgType}_PACKAGES_FOUND"
+                               "${_fsPkgType}_PACKAGES_NOT_FOUND")
+  endforeach()
+
+  set(title_ENABLED_FEATURES               "The following features have been enabled:")
+  set(title_DISABLED_FEATURES              "The following features have been disabled:")
+  set(title_PACKAGES_FOUND                 "The following packages have been found:")
+  set(title_PACKAGES_NOT_FOUND             "The following packages have not been found:")
+  foreach(_fsPkgType ${_fsPkgTypes})
+    set(_fsPkgTypeDescription "${_fsPkgType} packages")
+    get_property(_fsPkgTypeDescriptionIsSet GLOBAL PROPERTY FeatureSummary_${_fsPkgType}_DESCRIPTION SET)
+    if(_fsPkgTypeDescriptionIsSet)
+      get_property(_fsPkgTypeDescription GLOBAL PROPERTY FeatureSummary_${_fsPkgType}_DESCRIPTION )
+    endif()
+    set(title_${_fsPkgType}_PACKAGES_FOUND     "The following ${_fsPkgTypeDescription} have been found:")
+    set(title_${_fsPkgType}_PACKAGES_NOT_FOUND "The following ${_fsPkgTypeDescription} have not been found:")
+  endforeach()
+
+  list(FIND validWhatParts "${_FS_WHAT}" indexInList)
+  if(NOT "${indexInList}" STREQUAL "-1")
+    _FS_GET_FEATURE_SUMMARY( ${_FS_WHAT} _featureSummary ${_FS_INCLUDE_QUIET_PACKAGES} )
+    if(_featureSummary OR NOT _FS_QUIET_ON_EMPTY)
+      if(_FS_DEFAULT_DESCRIPTION)
+        set(_fullText "${title_${_FS_WHAT}}\n${_featureSummary}\n")
+      else()
+        set(_fullText "${_FS_DESCRIPTION}${_featureSummary}\n")
+      endif()
+    endif()
+
+    if(_featureSummary)
+      foreach(_fsReqPkgType ${_fsReqPkgTypes})
+        if("${_FS_WHAT}" STREQUAL "${_fsReqPkgType}_PACKAGES_NOT_FOUND")
+          set(requiredPackagesNotFound TRUE)
+          break()
+        endif()
+      endforeach()
+    endif()
+
+  else()
+    if("${_FS_WHAT}" STREQUAL "ALL")
+
+      set(allWhatParts "ENABLED_FEATURES")
+      foreach(_fsPkgType ${_fsPkgTypes})
+        list(APPEND allWhatParts "${_fsPkgType}_PACKAGES_FOUND")
+      endforeach()
+      list(APPEND allWhatParts "DISABLED_FEATURES")
+      foreach(_fsPkgType ${_fsPkgTypes})
+        list(APPEND allWhatParts "${_fsPkgType}_PACKAGES_NOT_FOUND")
+      endforeach()
+    else()
+      set(allWhatParts)
+      foreach(part ${_FS_WHAT})
+        list(FIND validWhatParts "${part}" indexInList)
+        if(NOT "${indexInList}" STREQUAL "-1")
+          list(APPEND allWhatParts "${part}")
+        else()
+          if("${part}" STREQUAL "ALL")
+            message(FATAL_ERROR "The WHAT argument of FEATURE_SUMMARY() contains ALL, which cannot be combined with other values.")
+          else()
+            message(FATAL_ERROR "The WHAT argument of FEATURE_SUMMARY() contains ${part}, which is not a valid value.")
+          endif()
+        endif()
+      endforeach()
+    endif()
+
+    set(_fullText "${_FS_DESCRIPTION}")
+    foreach(part ${allWhatParts})
+      set(_tmp)
+      _FS_GET_FEATURE_SUMMARY( ${part} _tmp ${_FS_INCLUDE_QUIET_PACKAGES})
+      if(_tmp)
+        if(_fullText)
+          string(APPEND _fullText "\n-- ")
+        endif()
+        string(APPEND _fullText "${title_${part}}\n${_tmp}\n")
+        foreach(_fsReqPkgType ${_fsReqPkgTypes})
+          if("${part}" STREQUAL "${_fsReqPkgType}_PACKAGES_NOT_FOUND")
+            set(requiredPackagesNotFound TRUE)
+            break()
+          endif()
+        endforeach()
+      endif()
+    endforeach()
+  endif()
+
+  if(_fullText OR NOT _FS_QUIET_ON_EMPTY)
+    if(_FS_FILENAME)
+      if(_FS_APPEND)
+        file(APPEND "${_FS_FILENAME}" "${_fullText}")
+      else()
+        file(WRITE  "${_FS_FILENAME}" "${_fullText}")
+      endif()
+
+    else()
+      if(NOT _FS_VAR)
+        message(STATUS "${_fullText}")
+      endif()
+    endif()
+
+    if(_FS_VAR)
+      set(${_FS_VAR} "${_fullText}" PARENT_SCOPE)
+    endif()
+  endif()
+
+  if(requiredPackagesNotFound  AND  _FS_FATAL_ON_MISSING_REQUIRED_PACKAGES)
+    message(FATAL_ERROR "feature_summary() Error: REQUIRED package(s) are missing, aborting CMake run.")
+  endif()
+
+endfunction()
+
+#[=======================================================================[.rst:
+.. command:: set_package_properties
+
+  ::
+
+    set_package_properties(<name> PROPERTIES
+                           [ URL <url> ]
+                           [ DESCRIPTION <description> ]
+                           [ TYPE (RUNTIME|OPTIONAL|RECOMMENDED|REQUIRED) ]
+                           [ PURPOSE <purpose> ]
+                          )
+
+  Use this macro to set up information about the named package, which
+  can then be displayed via FEATURE_SUMMARY().  This can be done either
+  directly in the Find-module or in the project which uses the module
+  after the find_package() call.  The features for which information can
+  be set are added automatically by the find_package() command.
+
+  ``URL <url>``
+    This should be the homepage of the package, or something similar.
+    Ideally this is set already directly in the Find-module.
+
+  ``DESCRIPTION <description>``
+    A short description what that package is, at most one sentence.
+    Ideally this is set already directly in the Find-module.
+
+  ``TYPE <type>``
+    What type of dependency has the using project on that package.
+    Default is ``OPTIONAL``.  In this case it is a package which can be used
+    by the project when available at buildtime, but it also work without.
+    ``RECOMMENDED`` is similar to ``OPTIONAL``, i.e.  the project will build if
+    the package is not present, but the functionality of the resulting
+    binaries will be severely limited.  If a ``REQUIRED`` package is not
+    available at buildtime, the project may not even build.  This can be
+    combined with the ``FATAL_ON_MISSING_REQUIRED_PACKAGES`` argument for
+    ``feature_summary()``.  Last, a ``RUNTIME`` package is a package which is
+    actually not used at all during the build, but which is required for
+    actually running the resulting binaries.  So if such a package is
+    missing, the project can still be built, but it may not work later on.
+    If ``set_package_properties()`` is called multiple times for the same
+    package with different TYPEs, the ``TYPE`` is only changed to higher
+    TYPEs (``RUNTIME < OPTIONAL < RECOMMENDED < REQUIRED``), lower TYPEs are
+    ignored.  The ``TYPE`` property is project-specific, so it cannot be set
+    by the Find-module, but must be set in the project.
+    Type accepted can be changed by setting the
+    :variable:`FeatureSummary_PKG_TYPES` global property.
+
+  ``PURPOSE <purpose>``
+    This describes which features this package enables in the
+    project, i.e.  it tells the user what functionality he gets in the
+    resulting binaries.  If set_package_properties() is called multiple
+    times for a package, all PURPOSE properties are appended to a list of
+    purposes of the package in the project.  As the TYPE property, also
+    the PURPOSE property is project-specific, so it cannot be set by the
+    Find-module, but must be set in the project.
+
+  Example for setting the info for a package:
+
+  .. code-block:: cmake
+
+    find_package(LibXml2)
+    set_package_properties(LibXml2 PROPERTIES
+                           DESCRIPTION "A XML processing library."
+                           URL "http://xmlsoft.org/")
+    # or
+    set_package_properties(LibXml2 PROPERTIES
+                           TYPE RECOMMENDED
+                           PURPOSE "Enables HTML-import in MyWordProcessor")
+    # or
+    set_package_properties(LibXml2 PROPERTIES
+                           TYPE OPTIONAL
+                           PURPOSE "Enables odt-export in MyWordProcessor")
+
+    find_package(DBUS)
+    set_package_properties(DBUS PROPERTIES
+      TYPE RUNTIME
+      PURPOSE "Necessary to disable the screensaver during a presentation")
+#]=======================================================================]
+function(SET_PACKAGE_PROPERTIES _name _props)
+  if(NOT "${_props}" STREQUAL "PROPERTIES")
+    message(FATAL_ERROR "PROPERTIES keyword is missing in SET_PACKAGE_PROPERTIES() call.")
+  endif()
+
+  set(options ) # none
+  set(oneValueArgs DESCRIPTION URL TYPE PURPOSE )
+  set(multiValueArgs ) # none
+
+  CMAKE_PARSE_ARGUMENTS(_SPP "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${ARGN})
+
+  if(_SPP_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to SET_PACKAGE_PROPERTIES(): \"${_SPP_UNPARSED_ARGUMENTS}\"")
+  endif()
+
+  if(_SPP_DESCRIPTION)
+    get_property(_info  GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION)
+    if(_info AND NOT "${_info}" STREQUAL "${_SPP_DESCRIPTION}")
+      message(STATUS "Warning: Property DESCRIPTION for package ${_name} already set to \"${_info}\", overriding it with \"${_SPP_DESCRIPTION}\"")
+    endif()
+
+    set_property(GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION "${_SPP_DESCRIPTION}" )
+  endif()
+
+
+  if(_SPP_URL)
+    get_property(_info  GLOBAL PROPERTY _CMAKE_${_name}_URL)
+    if(_info AND NOT "${_info}" STREQUAL "${_SPP_URL}")
+      message(STATUS "Warning: Property URL already set to \"${_info}\", overriding it with \"${_SPP_URL}\"")
+    endif()
+
+    set_property(GLOBAL PROPERTY _CMAKE_${_name}_URL "${_SPP_URL}" )
+  endif()
+
+
+  # handle the PURPOSE: use APPEND, since there can be multiple purposes for one package inside a project
+  if(_SPP_PURPOSE)
+    set_property(GLOBAL APPEND PROPERTY _CMAKE_${_name}_PURPOSE "${_SPP_PURPOSE}" )
+  endif()
+
+  get_property(_fsPkgTypes GLOBAL PROPERTY FeatureSummary_PKG_TYPES)
+  get_property(_fsDefaultPkgType GLOBAL PROPERTY FeatureSummary_DEFAULT_PKG_TYPE)
+
+  # handle the TYPE
+  if(DEFINED _SPP_TYPE)
+    # Supported types are listed in FeatureSummary_PKG_TYPES according to their priority
+    get_property(_fsPkgTypes GLOBAL PROPERTY FeatureSummary_PKG_TYPES)
+    list(FIND _fsPkgTypes ${_SPP_TYPE} _typeIndexInList)
+    if("${_typeIndexInList}" STREQUAL "-1" )
+      string(REGEX REPLACE ";([^;]+)$" " and \\1" _fsPkgTypes_msg "${_fsPkgTypes}")
+      string(REPLACE ";" ", " _fsPkgTypes_msg "${_fsPkgTypes_msg}")
+      message(FATAL_ERROR "Bad package property type ${_SPP_TYPE} used in SET_PACKAGE_PROPERTIES(). "
+                          "Valid types are ${_fsPkgTypes_msg}." )
+    endif()
+
+    get_property(_previousType  GLOBAL PROPERTY _CMAKE_${_name}_TYPE)
+    list(FIND _fsPkgTypes "${_previousType}" _prevTypeIndexInList)
+
+    # make sure a previously set TYPE is not overridden with a lower new TYPE:
+    if("${_typeIndexInList}" GREATER "${_prevTypeIndexInList}")
+      set_property(GLOBAL PROPERTY _CMAKE_${_name}_TYPE "${_SPP_TYPE}" )
+    endif()
+  endif()
+
+endfunction()
+
+#[=======================================================================[.rst:
+.. command:: add_feature_info
+
+  ::
+
+    add_feature_info(<name> <enabled> <description>)
+
+  Use this macro to add information about a feature with the given ``<name>``.
+  ``<enabled>`` contains whether this feature is enabled or not. It can be a
+  variable or a list of conditions.
+  ``<description>`` is a text describing the feature.  The information can
+  be displayed using ``feature_summary()`` for ``ENABLED_FEATURES`` and
+  ``DISABLED_FEATURES`` respectively.
+
+  .. versionchanged:: 3.8
+    ``<enabled>`` can be a list of conditions.
+
+  Example for setting the info for a feature:
+
+  .. code-block:: cmake
+
+     option(WITH_FOO "Help for foo" ON)
+     add_feature_info(Foo WITH_FOO "The Foo feature provides very cool stuff.")
+#]=======================================================================]
+function(ADD_FEATURE_INFO _name _depends _desc)
+  set(_enabled 1)
+  foreach(_d ${_depends})
+    string(REGEX REPLACE " +" ";" _d "${_d}")
+    if(${_d})
+    else()
+      set(_enabled 0)
+      break()
+    endif()
+  endforeach()
+  if (${_enabled})
+    set_property(GLOBAL APPEND PROPERTY ENABLED_FEATURES "${_name}")
+  else ()
+    set_property(GLOBAL APPEND PROPERTY DISABLED_FEATURES "${_name}")
+  endif ()
+
+  set_property(GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION "${_desc}" )
+endfunction()
+
+
+# The stuff below is only kept for compatibility
+
+#[=======================================================================[.rst:
+Legacy Macros
+^^^^^^^^^^^^^
+
+The following macros are provided for compatibility with previous
+CMake versions:
+
+.. command:: set_package_info
+
+  ::
+
+    set_package_info(<name> <description> [ <url> [<purpose>] ])
+
+  Use this macro to set up information about the named package, which
+  can then be displayed via ``feature_summary()``.  This can be done either
+  directly in the Find-module or in the project which uses the module
+  after the :command:`find_package` call.  The features for which information
+  can be set are added automatically by the ``find_package()`` command.
+#]=======================================================================]
+function(SET_PACKAGE_INFO _name _desc)
+  message(DEPRECATION "SET_PACKAGE_INFO is deprecated. Use SET_PACKAGE_PROPERTIES instead.")
+  unset(_url)
+  unset(_purpose)
+  if(ARGC GREATER 2)
+    set(_url "${ARGV2}")
+  endif()
+  if(ARGC GREATER 3)
+    set(_purpose "${ARGV3}")
+  endif()
+  set_property(GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION "${_desc}" )
+  if(NOT _url STREQUAL "")
+    set_property(GLOBAL PROPERTY _CMAKE_${_name}_URL "${_url}" )
+  endif()
+  if(NOT _purpose STREQUAL "")
+    set_property(GLOBAL APPEND PROPERTY _CMAKE_${_name}_PURPOSE "${_purpose}" )
+  endif()
+endfunction()
+
+#[=======================================================================[.rst:
+.. command:: set_feature_info
+
+  ::
+
+    set_feature_info(<name> <description> [<url>])
+
+  Does the same as::
+
+    set_package_info(<name> <description> <url>)
+#]=======================================================================]
+function(SET_FEATURE_INFO)
+  message(DEPRECATION "SET_FEATURE_INFO is deprecated. Use ADD_FEATURE_INFO instead.")
+  SET_PACKAGE_INFO(${ARGN})
+endfunction()
+
+#[=======================================================================[.rst:
+.. command:: print_enabled_features
+
+  ::
+
+    print_enabled_features()
+
+  Does the same as
+
+  .. code-block:: cmake
+
+    feature_summary(WHAT ENABLED_FEATURES DESCRIPTION "Enabled features:")
+#]=======================================================================]
+function(PRINT_ENABLED_FEATURES)
+  message(DEPRECATION "PRINT_ENABLED_FEATURES is deprecated. Use
+    feature_summary(WHAT ENABLED_FEATURES DESCRIPTION \"Enabled features:\")")
+  FEATURE_SUMMARY(WHAT ENABLED_FEATURES  DESCRIPTION "Enabled features:")
+endfunction()
+
+#[=======================================================================[.rst:
+.. command:: print_disabled_features
+
+  ::
+
+    print_disabled_features()
+
+  Does the same as
+
+  .. code-block:: cmake
+
+    feature_summary(WHAT DISABLED_FEATURES DESCRIPTION "Disabled features:")
+#]=======================================================================]
+function(PRINT_DISABLED_FEATURES)
+  message(DEPRECATION "PRINT_DISABLED_FEATURES is deprecated. Use
+    feature_summary(WHAT DISABLED_FEATURES DESCRIPTION \"Disabled features:\")")
+  FEATURE_SUMMARY(WHAT DISABLED_FEATURES  DESCRIPTION "Disabled features:")
+endfunction()
diff --git a/share/cmake-3.22/Modules/FetchContent.cmake b/share/cmake-3.22/Modules/FetchContent.cmake
new file mode 100644
index 0000000..be75689
--- /dev/null
+++ b/share/cmake-3.22/Modules/FetchContent.cmake
@@ -0,0 +1,1294 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FetchContent
+------------------
+
+.. versionadded:: 3.11
+
+.. only:: html
+
+  .. contents::
+
+Overview
+^^^^^^^^
+
+This module enables populating content at configure time via any method
+supported by the :module:`ExternalProject` module.  Whereas
+:command:`ExternalProject_Add` downloads at build time, the
+``FetchContent`` module makes content available immediately, allowing the
+configure step to use the content in commands like :command:`add_subdirectory`,
+:command:`include` or :command:`file` operations.
+
+Content population details should be defined separately from the command that
+performs the actual population.  This separation ensures that all the
+dependency details are defined before anything might try to use them to
+populate content.  This is particularly important in more complex project
+hierarchies where dependencies may be shared between multiple projects.
+
+The following shows a typical example of declaring content details for some
+dependencies and then ensuring they are populated with a separate call:
+
+.. code-block:: cmake
+
+  FetchContent_Declare(
+    googletest
+    GIT_REPOSITORY https://github.com/google/googletest.git
+    GIT_TAG        703bd9caab50b139428cea1aaff9974ebee5742e # release-1.10.0
+  )
+  FetchContent_Declare(
+    myCompanyIcons
+    URL      https://intranet.mycompany.com/assets/iconset_1.12.tar.gz
+    URL_HASH MD5=5588a7b18261c20068beabfb4f530b87
+  )
+
+  FetchContent_MakeAvailable(googletest secret_sauce)
+
+The :command:`FetchContent_MakeAvailable` command ensures the named
+dependencies have been populated, either by an earlier call or by populating
+them itself.  When performing the population, it will also add them to the
+main build, if possible, so that the main build can use the populated
+projects' targets, etc.  See the command's documentation for how these steps
+are performed.
+
+When using a hierarchical project arrangement, projects at higher levels in
+the hierarchy are able to override the declared details of content specified
+anywhere lower in the project hierarchy.  The first details to be declared
+for a given dependency take precedence, regardless of where in the project
+hierarchy that occurs.  Similarly, the first call that tries to populate a
+dependency "wins", with subsequent populations reusing the result of the
+first instead of repeating the population again.
+See the :ref:`Examples <fetch-content-examples>` which demonstrate
+this scenario.
+
+In some cases, the main project may need to have more precise control over
+the population, or it may be required to explicitly define the population
+steps in a way that cannot be captured by the declared details alone.
+For such situations, the lower level :command:`FetchContent_GetProperties` and
+:command:`FetchContent_Populate` commands can be used.  These lack the richer
+features provided by :command:`FetchContent_MakeAvailable` though, so their
+direct use should be considered a last resort.  The typical pattern of such
+custom steps looks like this:
+
+.. code-block:: cmake
+
+  # NOTE: Where possible, prefer to use FetchContent_MakeAvailable()
+  #       instead of custom logic like this
+
+  # Check if population has already been performed
+  FetchContent_GetProperties(depname)
+  if(NOT depname_POPULATED)
+    # Fetch the content using previously declared details
+    FetchContent_Populate(depname)
+
+    # Set custom variables, policies, etc.
+    # ...
+
+    # Bring the populated content into the build
+    add_subdirectory(${depname_SOURCE_DIR} ${depname_BINARY_DIR})
+  endif()
+
+The ``FetchContent`` module also supports defining and populating
+content in a single call, with no check for whether the content has been
+populated elsewhere already.  This should not be done in projects, but may
+be appropriate for populating content in CMake's script mode.
+See :command:`FetchContent_Populate` for details.
+
+Commands
+^^^^^^^^
+
+.. command:: FetchContent_Declare
+
+  .. code-block:: cmake
+
+    FetchContent_Declare(<name> <contentOptions>...)
+
+  The ``FetchContent_Declare()`` function records the options that describe
+  how to populate the specified content.  If such details have already
+  been recorded earlier in this project (regardless of where in the project
+  hierarchy), this and all later calls for the same content ``<name>`` are
+  ignored.  This "first to record, wins" approach is what allows hierarchical
+  projects to have parent projects override content details of child projects.
+
+  The content ``<name>`` can be any string without spaces, but good practice
+  would be to use only letters, numbers and underscores.  The name will be
+  treated case-insensitively and it should be obvious for the content it
+  represents, often being the name of the child project or the value given
+  to its top level :command:`project` command (if it is a CMake project).
+  For well-known public projects, the name should generally be the official
+  name of the project.  Choosing an unusual name makes it unlikely that other
+  projects needing that same content will use the same name, leading to
+  the content being populated multiple times.
+
+  The ``<contentOptions>`` can be any of the download, update or patch options
+  that the :command:`ExternalProject_Add` command understands.  The configure,
+  build, install and test steps are explicitly disabled and therefore options
+  related to them will be ignored.  The ``SOURCE_SUBDIR`` option is an
+  exception, see :command:`FetchContent_MakeAvailable` for details on how that
+  affects behavior.
+
+  In most cases, ``<contentOptions>`` will just be a couple of options defining
+  the download method and method-specific details like a commit tag or archive
+  hash.  For example:
+
+  .. code-block:: cmake
+
+    FetchContent_Declare(
+      googletest
+      GIT_REPOSITORY https://github.com/google/googletest.git
+      GIT_TAG        703bd9caab50b139428cea1aaff9974ebee5742e # release-1.10.0
+    )
+
+    FetchContent_Declare(
+      myCompanyIcons
+      URL      https://intranet.mycompany.com/assets/iconset_1.12.tar.gz
+      URL_HASH MD5=5588a7b18261c20068beabfb4f530b87
+    )
+
+    FetchContent_Declare(
+      myCompanyCertificates
+      SVN_REPOSITORY svn+ssh://svn.mycompany.com/srv/svn/trunk/certs
+      SVN_REVISION   -r12345
+    )
+
+  Where contents are being fetched from a remote location and you do not
+  control that server, it is advisable to use a hash for ``GIT_TAG`` rather
+  than a branch or tag name.  A commit hash is more secure and helps to
+  confirm that the downloaded contents are what you expected.
+
+  .. versionchanged:: 3.14
+    Commands for the download, update or patch steps can access the terminal.
+    This may be needed for things like password prompts or real-time display
+    of command progress.
+
+  .. versionadded:: 3.22
+    The :variable:`CMAKE_TLS_VERIFY`, :variable:`CMAKE_TLS_CAINFO`,
+    :variable:`CMAKE_NETRC` and :variable:`CMAKE_NETRC_FILE` variables now
+    provide the defaults for their corresponding content options, just like
+    they do for :command:`ExternalProject_Add`. Previously, these variables
+    were ignored by the ``FetchContent`` module.
+
+.. command:: FetchContent_MakeAvailable
+
+  .. versionadded:: 3.14
+
+  .. code-block:: cmake
+
+    FetchContent_MakeAvailable(<name1> [<name2>...])
+
+  This command ensures that each of the named dependencies are populated and
+  potentially added to the build by the time it returns.  It iterates over
+  the list, and for each dependency, the following logic is applied:
+
+  * If the dependency has already been populated earlier in this run, set
+    the ``<lowercaseName>_POPULATED``, ``<lowercaseName>_SOURCE_DIR`` and
+    ``<lowercaseName>_BINARY_DIR`` variables in the same way as a call to
+    :command:`FetchContent_GetProperties`, then skip the remaining steps
+    below and move on to the next dependency in the list.
+
+  * Call :command:`FetchContent_Populate` to populate the dependency using
+    the details recorded by an earlier call to :command:`FetchContent_Declare`.
+    Halt with a fatal error if no such details have been recorded.
+    :variable:`FETCHCONTENT_SOURCE_DIR_<uppercaseName>` can be used to override
+    the declared details and use content provided at the specified location
+    instead.
+
+  * If the top directory of the populated content contains a ``CMakeLists.txt``
+    file, call :command:`add_subdirectory` to add it to the main build.
+    It is not an error for there to be no ``CMakeLists.txt`` file, which
+    allows the command to be used for dependencies that make downloaded
+    content available at a known location, but which do not need or support
+    being added directly to the build.
+
+    .. versionadded:: 3.18
+      The ``SOURCE_SUBDIR`` option can be given in the declared details to
+      look somewhere below the top directory instead (i.e. the same way that
+      ``SOURCE_SUBDIR`` is used by the :command:`ExternalProject_Add`
+      command).  The path provided with ``SOURCE_SUBDIR`` must be relative
+      and will be treated as relative to the top directory.  It can also
+      point to a directory that does not contain a ``CMakeLists.txt`` file
+      or even to a directory that doesn't exist.  This can be used to avoid
+      adding a project that contains a ``CMakeLists.txt`` file in its top
+      directory.
+
+  Projects should aim to declare the details of all dependencies they might
+  use before they call ``FetchContent_MakeAvailable()`` for any of them.
+  This ensures that if any of the dependencies are also sub-dependencies of
+  one or more of the others, the main project still controls the details
+  that will be used (because it will declare them first before the
+  dependencies get a chance to).  In the following code samples, assume that
+  the ``uses_other`` dependency also uses ``FetchContent`` to add the ``other``
+  dependency internally:
+
+  .. code-block:: cmake
+
+    # WRONG: Should declare all details first
+    FetchContent_Declare(uses_other ...)
+    FetchContent_MakeAvailable(uses_other)
+
+    FetchContent_Declare(other ...)    # Will be ignored, uses_other beat us to it
+    FetchContent_MakeAvailable(other)  # Would use details declared by uses_other
+
+  .. code-block:: cmake
+
+    # CORRECT: All details declared first, so they will take priority
+    FetchContent_Declare(uses_other ...)
+    FetchContent_Declare(other ...)
+    FetchContent_MakeAvailable(uses_other other)
+
+.. command:: FetchContent_Populate
+
+  .. note::
+    Where possible, prefer to use :command:`FetchContent_MakeAvailable`
+    instead of implementing population manually with this command.
+
+  .. code-block:: cmake
+
+    FetchContent_Populate(<name>)
+
+  In most cases, the only argument given to ``FetchContent_Populate()`` is the
+  ``<name>``.  When used this way, the command assumes the content details have
+  been recorded by an earlier call to :command:`FetchContent_Declare`.  The
+  details are stored in a global property, so they are unaffected by things
+  like variable or directory scope.  Therefore, it doesn't matter where in the
+  project the details were previously declared, as long as they have been
+  declared before the call to ``FetchContent_Populate()``.  Those saved details
+  are then used to construct a call to :command:`ExternalProject_Add` in a
+  private sub-build to perform the content population immediately.  The
+  implementation of ``ExternalProject_Add()`` ensures that if the content has
+  already been populated in a previous CMake run, that content will be reused
+  rather than repopulating them again.  For the common case where population
+  involves downloading content, the cost of the download is only paid once.
+
+  An internal global property records when a particular content population
+  request has been processed.  If ``FetchContent_Populate()`` is called more
+  than once for the same content name within a configure run, the second call
+  will halt with an error.  Projects can and should check whether content
+  population has already been processed with the
+  :command:`FetchContent_GetProperties` command before calling
+  ``FetchContent_Populate()``.
+
+  ``FetchContent_Populate()`` will set three variables in the scope of the
+  caller:
+
+  ``<lowercaseName>_POPULATED``
+    This will always be set to ``TRUE`` by the call.
+
+  ``<lowercaseName>_SOURCE_DIR``
+    The location where the populated content can be found upon return.
+
+  ``<lowercaseName>_BINARY_DIR``
+    A directory intended for use as a corresponding build directory.
+
+  The main use case for the ``<lowercaseName>_SOURCE_DIR`` and
+  ``<lowercaseName>_BINARY_DIR`` variables is to call
+  :command:`add_subdirectory` immediately after population:
+
+  .. code-block:: cmake
+
+    FetchContent_Populate(FooBar)
+    add_subdirectory(${foobar_SOURCE_DIR} ${foobar_BINARY_DIR})
+
+  The values of the three variables can also be retrieved from anywhere in the
+  project hierarchy using the :command:`FetchContent_GetProperties` command.
+
+  The ``FetchContent_Populate()`` command also supports a syntax allowing the
+  content details to be specified directly rather than using any saved
+  details.  This is more low-level and use of this form is generally to be
+  avoided in favor of using saved content details as outlined above.
+  Nevertheless, in certain situations it can be useful to invoke the content
+  population as an isolated operation (typically as part of implementing some
+  other higher level feature or when using CMake in script mode):
+
+  .. code-block:: cmake
+
+    FetchContent_Populate(
+      <name>
+      [QUIET]
+      [SUBBUILD_DIR <subBuildDir>]
+      [SOURCE_DIR <srcDir>]
+      [BINARY_DIR <binDir>]
+      ...
+    )
+
+  This form has a number of key differences to that where only ``<name>`` is
+  provided:
+
+  - All required population details are assumed to have been provided directly
+    in the call to ``FetchContent_Populate()``. Any saved details for
+    ``<name>`` are ignored.
+  - No check is made for whether content for ``<name>`` has already been
+    populated.
+  - No global property is set to record that the population has occurred.
+  - No global properties record the source or binary directories used for the
+    populated content.
+  - The ``FETCHCONTENT_FULLY_DISCONNECTED`` and
+    ``FETCHCONTENT_UPDATES_DISCONNECTED`` cache variables are ignored.
+
+  The ``<lowercaseName>_SOURCE_DIR`` and ``<lowercaseName>_BINARY_DIR``
+  variables are still returned to the caller, but since these locations are
+  not stored as global properties when this form is used, they are only
+  available to the calling scope and below rather than the entire project
+  hierarchy.  No ``<lowercaseName>_POPULATED`` variable is set in the caller's
+  scope with this form.
+
+  The supported options for ``FetchContent_Populate()`` are the same as those
+  for :command:`FetchContent_Declare()`.  Those few options shown just
+  above are either specific to ``FetchContent_Populate()`` or their behavior is
+  slightly modified from how :command:`ExternalProject_Add` treats them:
+
+  ``QUIET``
+    The ``QUIET`` option can be given to hide the output associated with
+    populating the specified content.  If the population fails, the output will
+    be shown regardless of whether this option was given or not so that the
+    cause of the failure can be diagnosed.  The global ``FETCHCONTENT_QUIET``
+    cache variable has no effect on ``FetchContent_Populate()`` calls where the
+    content details are provided directly.
+
+  ``SUBBUILD_DIR``
+    The ``SUBBUILD_DIR`` argument can be provided to change the location of the
+    sub-build created to perform the population.  The default value is
+    ``${CMAKE_CURRENT_BINARY_DIR}/<lowercaseName>-subbuild`` and it would be
+    unusual to need to override this default.  If a relative path is specified,
+    it will be interpreted as relative to :variable:`CMAKE_CURRENT_BINARY_DIR`.
+    This option should not be confused with the ``SOURCE_SUBDIR`` option which
+    only affects the :command:`FetchContent_MakeAvailable` command.
+
+  ``SOURCE_DIR``, ``BINARY_DIR``
+    The ``SOURCE_DIR`` and ``BINARY_DIR`` arguments are supported by
+    :command:`ExternalProject_Add`, but different default values are used by
+    ``FetchContent_Populate()``.  ``SOURCE_DIR`` defaults to
+    ``${CMAKE_CURRENT_BINARY_DIR}/<lowercaseName>-src`` and ``BINARY_DIR``
+    defaults to ``${CMAKE_CURRENT_BINARY_DIR}/<lowercaseName>-build``.
+    If a relative path is specified, it will be interpreted as relative to
+    :variable:`CMAKE_CURRENT_BINARY_DIR`.
+
+  In addition to the above explicit options, any other unrecognized options are
+  passed through unmodified to :command:`ExternalProject_Add` to perform the
+  download, patch and update steps.  The following options are explicitly
+  prohibited (they are disabled by the ``FetchContent_Populate()`` command):
+
+  - ``CONFIGURE_COMMAND``
+  - ``BUILD_COMMAND``
+  - ``INSTALL_COMMAND``
+  - ``TEST_COMMAND``
+
+  If using ``FetchContent_Populate()`` within CMake's script mode, be aware
+  that the implementation sets up a sub-build which therefore requires a CMake
+  generator and build tool to be available. If these cannot be found by
+  default, then the :variable:`CMAKE_GENERATOR` and/or
+  :variable:`CMAKE_MAKE_PROGRAM` variables will need to be set appropriately
+  on the command line invoking the script.
+
+  .. versionadded:: 3.18
+    Added support for the ``DOWNLOAD_NO_EXTRACT`` option.
+
+.. command:: FetchContent_GetProperties
+
+  When using saved content details, a call to
+  :command:`FetchContent_MakeAvailable` or :command:`FetchContent_Populate`
+  records information in global properties which can be queried at any time.
+  This information includes the source and binary directories associated with
+  the content and also whether or not the content population has been processed
+  during the current configure run.
+
+  .. code-block:: cmake
+
+    FetchContent_GetProperties(
+      <name>
+      [SOURCE_DIR <srcDirVar>]
+      [BINARY_DIR <binDirVar>]
+      [POPULATED <doneVar>]
+    )
+
+  The ``SOURCE_DIR``, ``BINARY_DIR`` and ``POPULATED`` options can be used to
+  specify which properties should be retrieved.  Each option accepts a value
+  which is the name of the variable in which to store that property.  Most of
+  the time though, only ``<name>`` is given, in which case the call will then
+  set the same variables as a call to
+  :command:`FetchContent_MakeAvailable(name) <FetchContent_MakeAvailable>` or
+  :command:`FetchContent_Populate(name) <FetchContent_Populate>`.
+
+  This command is rarely needed when using
+  :command:`FetchContent_MakeAvailable`.  It is more commonly used as part of
+  implementing the following pattern with :command:`FetchContent_Populate`,
+  which ensures that the relevant variables will always be defined regardless
+  of whether or not the population has been performed elsewhere in the project
+  already:
+
+  .. code-block:: cmake
+
+    # Check if population has already been performed
+    FetchContent_GetProperties(depname)
+    if(NOT depname_POPULATED)
+      # Fetch the content using previously declared details
+      FetchContent_Populate(depname)
+
+      # Set custom variables, policies, etc.
+      # ...
+
+      # Bring the populated content into the build
+      add_subdirectory(${depname_SOURCE_DIR} ${depname_BINARY_DIR})
+    endif()
+
+Variables
+^^^^^^^^^
+
+A number of cache variables can influence the behavior where details from a
+:command:`FetchContent_Declare` call are used to populate content.
+The variables are all intended for the developer to customize behavior and
+should not normally be set by the project.
+
+.. variable:: FETCHCONTENT_BASE_DIR
+
+  In most cases, the saved details do not specify any options relating to the
+  directories to use for the internal sub-build, final source and build areas.
+  It is generally best to leave these decisions up to the ``FetchContent``
+  module to handle on the project's behalf.  The ``FETCHCONTENT_BASE_DIR``
+  cache variable controls the point under which all content population
+  directories are collected, but in most cases, developers would not need to
+  change this.  The default location is ``${CMAKE_BINARY_DIR}/_deps``, but if
+  developers change this value, they should aim to keep the path short and
+  just below the top level of the build tree to avoid running into path
+  length problems on Windows.
+
+.. variable:: FETCHCONTENT_QUIET
+
+  The logging output during population can be quite verbose, making the
+  configure stage quite noisy.  This cache option (``ON`` by default) hides
+  all population output unless an error is encountered.  If experiencing
+  problems with hung downloads, temporarily switching this option off may
+  help diagnose which content population is causing the issue.
+
+.. variable:: FETCHCONTENT_FULLY_DISCONNECTED
+
+  When this option is enabled, no attempt is made to download or update
+  any content.  It is assumed that all content has already been populated in
+  a previous run or the source directories have been pointed at existing
+  contents the developer has provided manually (using options described
+  further below).  When the developer knows that no changes have been made to
+  any content details, turning this option ``ON`` can significantly speed up
+  the configure stage.  It is ``OFF`` by default.
+
+.. variable:: FETCHCONTENT_UPDATES_DISCONNECTED
+
+  This is a less severe download/update control compared to
+  :variable:`FETCHCONTENT_FULLY_DISCONNECTED`.  Instead of bypassing all
+  download and update logic, ``FETCHCONTENT_UPDATES_DISCONNECTED`` only
+  disables the update stage.  Therefore, if content has not been downloaded
+  previously, it will still be downloaded when this option is enabled.
+  This can speed up the configure stage, but not as much as
+  :variable:`FETCHCONTENT_FULLY_DISCONNECTED`.  It is ``OFF`` by default.
+
+In addition to the above cache variables, the following cache variables are
+also defined for each content name:
+
+.. variable:: FETCHCONTENT_SOURCE_DIR_<uppercaseName>
+
+  If this is set, no download or update steps are performed for the specified
+  content and the ``<lowercaseName>_SOURCE_DIR`` variable returned to the
+  caller is pointed at this location.  This gives developers a way to have a
+  separate checkout of the content that they can modify freely without
+  interference from the build.  The build simply uses that existing source,
+  but it still defines ``<lowercaseName>_BINARY_DIR`` to point inside its own
+  build area.  Developers are strongly encouraged to use this mechanism rather
+  than editing the sources populated in the default location, as changes to
+  sources in the default location can be lost when content population details
+  are changed by the project.
+
+.. variable:: FETCHCONTENT_UPDATES_DISCONNECTED_<uppercaseName>
+
+  This is the per-content equivalent of
+  :variable:`FETCHCONTENT_UPDATES_DISCONNECTED`.  If the global option or
+  this option is ``ON``, then updates will be disabled for the named content.
+  Disabling updates for individual content can be useful for content whose
+  details rarely change, while still leaving other frequently changing content
+  with updates enabled.
+
+.. _`fetch-content-examples`:
+
+Examples
+^^^^^^^^
+
+This first fairly straightforward example ensures that some popular testing
+frameworks are available to the main build:
+
+.. code-block:: cmake
+
+  include(FetchContent)
+  FetchContent_Declare(
+    googletest
+    GIT_REPOSITORY https://github.com/google/googletest.git
+    GIT_TAG        703bd9caab50b139428cea1aaff9974ebee5742e # release-1.10.0
+  )
+  FetchContent_Declare(
+    Catch2
+    GIT_REPOSITORY https://github.com/catchorg/Catch2.git
+    GIT_TAG        de6fe184a9ac1a06895cdd1c9b437f0a0bdf14ad # v2.13.4
+  )
+
+  # After the following call, the CMake targets defined by googletest and
+  # Catch2 will be available to the rest of the build
+  FetchContent_MakeAvailable(googletest Catch2)
+
+If the sub-project's ``CMakeLists.txt`` file is not at the top level of its
+source tree, the ``SOURCE_SUBDIR`` option can be used to tell ``FetchContent``
+where to find it.  The following example shows how to use that option and
+it also sets a variable which is meaningful to the subproject before pulling
+it into the main build:
+
+.. code-block:: cmake
+
+  include(FetchContent)
+  FetchContent_Declare(
+    protobuf
+    GIT_REPOSITORY https://github.com/protocolbuffers/protobuf.git
+    GIT_TAG        ae50d9b9902526efd6c7a1907d09739f959c6297 # v3.15.0
+    SOURCE_SUBDIR  cmake
+  )
+  set(protobuf_BUILD_TESTS OFF)
+  FetchContent_MakeAvailable(protobuf)
+
+In more complex project hierarchies, the dependency relationships can be more
+complicated.  Consider a hierarchy where ``projA`` is the top level project and
+it depends directly on projects ``projB`` and ``projC``.  Both ``projB`` and
+``projC`` can be built standalone and they also both depend on another project
+``projD``.  ``projB`` additionally depends on ``projE``.  This example assumes
+that all five projects are available on a company git server.  The
+``CMakeLists.txt`` of each project might have sections like the following:
+
+*projA*:
+
+.. code-block:: cmake
+
+  include(FetchContent)
+  FetchContent_Declare(
+    projB
+    GIT_REPOSITORY git@mycompany.com:git/projB.git
+    GIT_TAG        4a89dc7e24ff212a7b5167bef7ab079d
+  )
+  FetchContent_Declare(
+    projC
+    GIT_REPOSITORY git@mycompany.com:git/projC.git
+    GIT_TAG        4ad4016bd1d8d5412d135cf8ceea1bb9
+  )
+  FetchContent_Declare(
+    projD
+    GIT_REPOSITORY git@mycompany.com:git/projD.git
+    GIT_TAG        origin/integrationBranch
+  )
+  FetchContent_Declare(
+    projE
+    GIT_REPOSITORY git@mycompany.com:git/projE.git
+    GIT_TAG        v2.3-rc1
+  )
+
+  # Order is important, see notes in the discussion further below
+  FetchContent_MakeAvailable(projD projB projC)
+
+*projB*:
+
+.. code-block:: cmake
+
+  include(FetchContent)
+  FetchContent_Declare(
+    projD
+    GIT_REPOSITORY git@mycompany.com:git/projD.git
+    GIT_TAG        20b415f9034bbd2a2e8216e9a5c9e632
+  )
+  FetchContent_Declare(
+    projE
+    GIT_REPOSITORY git@mycompany.com:git/projE.git
+    GIT_TAG        68e20f674a48be38d60e129f600faf7d
+  )
+
+  FetchContent_MakeAvailable(projD projE)
+
+*projC*:
+
+.. code-block:: cmake
+
+  include(FetchContent)
+  FetchContent_Declare(
+    projD
+    GIT_REPOSITORY git@mycompany.com:git/projD.git
+    GIT_TAG        7d9a17ad2c962aa13e2fbb8043fb6b8a
+  )
+
+  # This particular version of projD requires workarounds
+  FetchContent_GetProperties(projD)
+  if(NOT projd_POPULATED)
+    FetchContent_Populate(projD)
+
+    # Copy an additional/replacement file into the populated source
+    file(COPY someFile.c DESTINATION ${projd_SOURCE_DIR}/src)
+
+    add_subdirectory(${projd_SOURCE_DIR} ${projd_BINARY_DIR})
+  endif()
+
+A few key points should be noted in the above:
+
+- ``projB`` and ``projC`` define different content details for ``projD``,
+  but ``projA`` also defines a set of content details for ``projD``.
+  Because ``projA`` will define them first, the details from ``projB`` and
+  ``projC`` will not be used.  The override details defined by ``projA``
+  are not required to match either of those from ``projB`` or ``projC``, but
+  it is up to the higher level project to ensure that the details it does
+  define still make sense for the child projects.
+- In the ``projA`` call to :command:`FetchContent_MakeAvailable`, ``projD``
+  is listed ahead of ``projB`` and ``projC`` to ensure that ``projA`` is in
+  control of how ``projD`` is populated.
+- While ``projA`` defines content details for ``projE``, it does not need
+  to explicitly call ``FetchContent_MakeAvailable(projE)`` or
+  ``FetchContent_Populate(projD)`` itself.  Instead, it leaves that to the
+  child ``projB``.  For higher level projects, it is often enough to just
+  define the override content details and leave the actual population to the
+  child projects.  This saves repeating the same thing at each level of the
+  project hierarchy unnecessarily.
+
+
+Projects don't always need to add the populated content to the build.
+Sometimes the project just wants to make the downloaded content available at
+a predictable location.  The next example ensures that a set of standard
+company toolchain files (and potentially even the toolchain binaries
+themselves) is available early enough to be used for that same build.
+
+.. code-block:: cmake
+
+  cmake_minimum_required(VERSION 3.14)
+
+  include(FetchContent)
+  FetchContent_Declare(
+    mycom_toolchains
+    URL  https://intranet.mycompany.com//toolchains_1.3.2.tar.gz
+  )
+  FetchContent_MakeAvailable(mycom_toolchains)
+
+  project(CrossCompileExample)
+
+The project could be configured to use one of the downloaded toolchains like
+so:
+
+.. code-block:: shell
+
+  cmake -DCMAKE_TOOLCHAIN_FILE=_deps/mycom_toolchains-src/toolchain_arm.cmake /path/to/src
+
+When CMake processes the ``CMakeLists.txt`` file, it will download and unpack
+the tarball into ``_deps/mycompany_toolchains-src`` relative to the build
+directory.  The :variable:`CMAKE_TOOLCHAIN_FILE` variable is not used until
+the :command:`project` command is reached, at which point CMake looks for the
+named toolchain file relative to the build directory.  Because the tarball has
+already been downloaded and unpacked by then, the toolchain file will be in
+place, even the very first time that ``cmake`` is run in the build directory.
+
+Lastly, the following example demonstrates how one might download and unpack a
+firmware tarball using CMake's :manual:`script mode <cmake(1)>`.  The call to
+:command:`FetchContent_Populate` specifies all the content details and the
+unpacked firmware will be placed in a ``firmware`` directory below the
+current working directory.
+
+*getFirmware.cmake*:
+
+.. code-block:: cmake
+
+  # NOTE: Intended to be run in script mode with cmake -P
+  include(FetchContent)
+  FetchContent_Populate(
+    firmware
+    URL        https://mycompany.com/assets/firmware-1.23-arm.tar.gz
+    URL_HASH   MD5=68247684da89b608d466253762b0ff11
+    SOURCE_DIR firmware
+  )
+
+#]=======================================================================]
+
+#=======================================================================
+# Recording and retrieving content details for later population
+#=======================================================================
+
+# Internal use, projects must not call this directly. It is
+# intended for use by FetchContent_Declare() only.
+#
+# Sets a content-specific global property (not meant for use
+# outside of functions defined here in this file) which can later
+# be retrieved using __FetchContent_getSavedDetails() with just the
+# same content name. If there is already a value stored in the
+# property, it is left unchanged and this call has no effect.
+# This allows parent projects to define the content details,
+# overriding anything a child project may try to set (properties
+# are not cached between runs, so the first thing to set it in a
+# build will be in control).
+function(__FetchContent_declareDetails contentName)
+
+  string(TOLOWER ${contentName} contentNameLower)
+  set(propertyName "_FetchContent_${contentNameLower}_savedDetails")
+  get_property(alreadyDefined GLOBAL PROPERTY ${propertyName} DEFINED)
+  if(NOT alreadyDefined)
+    define_property(GLOBAL PROPERTY ${propertyName}
+      BRIEF_DOCS "Internal implementation detail of FetchContent_Populate()"
+      FULL_DOCS  "Details used by FetchContent_Populate() for ${contentName}"
+    )
+    set(__cmdArgs)
+    foreach(__item IN LISTS ARGN)
+      string(APPEND __cmdArgs " [==[${__item}]==]")
+    endforeach()
+    cmake_language(EVAL CODE
+      "set_property(GLOBAL PROPERTY ${propertyName} ${__cmdArgs})")
+  endif()
+
+endfunction()
+
+
+# Internal use, projects must not call this directly. It is
+# intended for use by the FetchContent_Declare() function.
+#
+# Retrieves details saved for the specified content in an
+# earlier call to __FetchContent_declareDetails().
+function(__FetchContent_getSavedDetails contentName outVar)
+
+  string(TOLOWER ${contentName} contentNameLower)
+  set(propertyName "_FetchContent_${contentNameLower}_savedDetails")
+  get_property(alreadyDefined GLOBAL PROPERTY ${propertyName} DEFINED)
+  if(NOT alreadyDefined)
+    message(FATAL_ERROR "No content details recorded for ${contentName}")
+  endif()
+  get_property(propertyValue GLOBAL PROPERTY ${propertyName})
+  set(${outVar} "${propertyValue}" PARENT_SCOPE)
+
+endfunction()
+
+
+# Saves population details of the content, sets defaults for the
+# SOURCE_DIR and BUILD_DIR.
+function(FetchContent_Declare contentName)
+
+  set(options "")
+  set(oneValueArgs SVN_REPOSITORY)
+  set(multiValueArgs "")
+
+  cmake_parse_arguments(PARSE_ARGV 1 ARG
+    "${options}" "${oneValueArgs}" "${multiValueArgs}")
+
+  unset(srcDirSuffix)
+  unset(svnRepoArgs)
+  if(ARG_SVN_REPOSITORY)
+    # Add a hash of the svn repository URL to the source dir. This works
+    # around the problem where if the URL changes, the download would
+    # fail because it tries to checkout/update rather than switch the
+    # old URL to the new one. We limit the hash to the first 7 characters
+    # so that the source path doesn't get overly long (which can be a
+    # problem on windows due to path length limits).
+    string(SHA1 urlSHA ${ARG_SVN_REPOSITORY})
+    string(SUBSTRING ${urlSHA} 0 7 urlSHA)
+    set(srcDirSuffix "-${urlSHA}")
+    set(svnRepoArgs  SVN_REPOSITORY ${ARG_SVN_REPOSITORY})
+  endif()
+
+  string(TOLOWER ${contentName} contentNameLower)
+
+  set(__argsQuoted)
+  foreach(__item IN LISTS ARG_UNPARSED_ARGUMENTS)
+    string(APPEND __argsQuoted " [==[${__item}]==]")
+  endforeach()
+  cmake_language(EVAL CODE "
+    __FetchContent_declareDetails(
+      ${contentNameLower}
+      SOURCE_DIR \"${FETCHCONTENT_BASE_DIR}/${contentNameLower}-src${srcDirSuffix}\"
+      BINARY_DIR \"${FETCHCONTENT_BASE_DIR}/${contentNameLower}-build\"
+      \${svnRepoArgs}
+      # List these last so they can override things we set above
+      ${__argsQuoted}
+    )"
+  )
+
+endfunction()
+
+
+#=======================================================================
+# Set/get whether the specified content has been populated yet.
+# The setter also records the source and binary dirs used.
+#=======================================================================
+
+# Internal use, projects must not call this directly. It is
+# intended for use by the FetchContent_Populate() function to
+# record when FetchContent_Populate() is called for a particular
+# content name.
+function(__FetchContent_setPopulated contentName sourceDir binaryDir)
+
+  string(TOLOWER ${contentName} contentNameLower)
+  set(prefix "_FetchContent_${contentNameLower}")
+
+  set(propertyName "${prefix}_sourceDir")
+  define_property(GLOBAL PROPERTY ${propertyName}
+    BRIEF_DOCS "Internal implementation detail of FetchContent_Populate()"
+    FULL_DOCS  "Details used by FetchContent_Populate() for ${contentName}"
+  )
+  set_property(GLOBAL PROPERTY ${propertyName} ${sourceDir})
+
+  set(propertyName "${prefix}_binaryDir")
+  define_property(GLOBAL PROPERTY ${propertyName}
+    BRIEF_DOCS "Internal implementation detail of FetchContent_Populate()"
+    FULL_DOCS  "Details used by FetchContent_Populate() for ${contentName}"
+  )
+  set_property(GLOBAL PROPERTY ${propertyName} ${binaryDir})
+
+  set(propertyName "${prefix}_populated")
+  define_property(GLOBAL PROPERTY ${propertyName}
+    BRIEF_DOCS "Internal implementation detail of FetchContent_Populate()"
+    FULL_DOCS  "Details used by FetchContent_Populate() for ${contentName}"
+  )
+  set_property(GLOBAL PROPERTY ${propertyName} True)
+
+endfunction()
+
+
+# Set variables in the calling scope for any of the retrievable
+# properties. If no specific properties are requested, variables
+# will be set for all retrievable properties.
+#
+# This function is intended to also be used by projects as the canonical
+# way to detect whether they should call FetchContent_Populate()
+# and pull the populated source into the build with add_subdirectory(),
+# if they are using the populated content in that way.
+function(FetchContent_GetProperties contentName)
+
+  string(TOLOWER ${contentName} contentNameLower)
+
+  set(options "")
+  set(oneValueArgs SOURCE_DIR BINARY_DIR POPULATED)
+  set(multiValueArgs "")
+
+  cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+  if(NOT ARG_SOURCE_DIR AND
+     NOT ARG_BINARY_DIR AND
+     NOT ARG_POPULATED)
+    # No specific properties requested, provide them all
+    set(ARG_SOURCE_DIR ${contentNameLower}_SOURCE_DIR)
+    set(ARG_BINARY_DIR ${contentNameLower}_BINARY_DIR)
+    set(ARG_POPULATED  ${contentNameLower}_POPULATED)
+  endif()
+
+  set(prefix "_FetchContent_${contentNameLower}")
+
+  if(ARG_SOURCE_DIR)
+    set(propertyName "${prefix}_sourceDir")
+    get_property(value GLOBAL PROPERTY ${propertyName})
+    if(value)
+      set(${ARG_SOURCE_DIR} ${value} PARENT_SCOPE)
+    endif()
+  endif()
+
+  if(ARG_BINARY_DIR)
+    set(propertyName "${prefix}_binaryDir")
+    get_property(value GLOBAL PROPERTY ${propertyName})
+    if(value)
+      set(${ARG_BINARY_DIR} ${value} PARENT_SCOPE)
+    endif()
+  endif()
+
+  if(ARG_POPULATED)
+    set(propertyName "${prefix}_populated")
+    get_property(value GLOBAL PROPERTY ${propertyName} DEFINED)
+    set(${ARG_POPULATED} ${value} PARENT_SCOPE)
+  endif()
+
+endfunction()
+
+
+#=======================================================================
+# Performing the population
+#=======================================================================
+
+# The value of contentName will always have been lowercased by the caller.
+# All other arguments are assumed to be options that are understood by
+# ExternalProject_Add(), except for QUIET and SUBBUILD_DIR.
+function(__FetchContent_directPopulate contentName)
+
+  set(options
+      QUIET
+  )
+  set(oneValueArgs
+      SUBBUILD_DIR
+      SOURCE_DIR
+      BINARY_DIR
+      # We need special processing if DOWNLOAD_NO_EXTRACT is true
+      DOWNLOAD_NO_EXTRACT
+      # Prevent the following from being passed through
+      CONFIGURE_COMMAND
+      BUILD_COMMAND
+      INSTALL_COMMAND
+      TEST_COMMAND
+      # We force both of these to be ON since we are always executing serially
+      # and we want all steps to have access to the terminal in case they
+      # need input from the command line (e.g. ask for a private key password)
+      # or they want to provide timely progress. We silently absorb and
+      # discard these if they are set by the caller.
+      USES_TERMINAL_DOWNLOAD
+      USES_TERMINAL_UPDATE
+  )
+  set(multiValueArgs "")
+
+  cmake_parse_arguments(PARSE_ARGV 1 ARG
+    "${options}" "${oneValueArgs}" "${multiValueArgs}")
+
+  if(NOT ARG_SUBBUILD_DIR)
+    message(FATAL_ERROR "Internal error: SUBBUILD_DIR not set")
+  elseif(NOT IS_ABSOLUTE "${ARG_SUBBUILD_DIR}")
+    set(ARG_SUBBUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/${ARG_SUBBUILD_DIR}")
+  endif()
+
+  if(NOT ARG_SOURCE_DIR)
+    message(FATAL_ERROR "Internal error: SOURCE_DIR not set")
+  elseif(NOT IS_ABSOLUTE "${ARG_SOURCE_DIR}")
+    set(ARG_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/${ARG_SOURCE_DIR}")
+  endif()
+
+  if(NOT ARG_BINARY_DIR)
+    message(FATAL_ERROR "Internal error: BINARY_DIR not set")
+  elseif(NOT IS_ABSOLUTE "${ARG_BINARY_DIR}")
+    set(ARG_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/${ARG_BINARY_DIR}")
+  endif()
+
+  # Ensure the caller can know where to find the source and build directories
+  # with some convenient variables. Doing this here ensures the caller sees
+  # the correct result in the case where the default values are overridden by
+  # the content details set by the project.
+  set(${contentName}_SOURCE_DIR "${ARG_SOURCE_DIR}" PARENT_SCOPE)
+  set(${contentName}_BINARY_DIR "${ARG_BINARY_DIR}" PARENT_SCOPE)
+
+  # The unparsed arguments may contain spaces, so build up ARG_EXTRA
+  # in such a way that it correctly substitutes into the generated
+  # CMakeLists.txt file with each argument quoted.
+  unset(ARG_EXTRA)
+  foreach(arg IN LISTS ARG_UNPARSED_ARGUMENTS)
+    set(ARG_EXTRA "${ARG_EXTRA} \"${arg}\"")
+  endforeach()
+
+  if(ARG_DOWNLOAD_NO_EXTRACT)
+    set(ARG_EXTRA "${ARG_EXTRA} DOWNLOAD_NO_EXTRACT YES")
+    set(__FETCHCONTENT_COPY_FILE
+"
+ExternalProject_Get_Property(${contentName}-populate DOWNLOADED_FILE)
+get_filename_component(dlFileName \"\${DOWNLOADED_FILE}\" NAME)
+
+ExternalProject_Add_Step(${contentName}-populate copyfile
+  COMMAND    \"${CMAKE_COMMAND}\" -E copy_if_different
+             \"<DOWNLOADED_FILE>\" \"${ARG_SOURCE_DIR}\"
+  DEPENDEES  patch
+  DEPENDERS  configure
+  BYPRODUCTS \"${ARG_SOURCE_DIR}/\${dlFileName}\"
+  COMMENT    \"Copying file to SOURCE_DIR\"
+)
+")
+  else()
+    unset(__FETCHCONTENT_COPY_FILE)
+  endif()
+
+  # Hide output if requested, but save it to a variable in case there's an
+  # error so we can show the output upon failure. When not quiet, don't
+  # capture the output to a variable because the user may want to see the
+  # output as it happens (e.g. progress during long downloads). Combine both
+  # stdout and stderr in the one capture variable so the output stays in order.
+  if (ARG_QUIET)
+    set(outputOptions
+        OUTPUT_VARIABLE capturedOutput
+        ERROR_VARIABLE  capturedOutput
+    )
+  else()
+    set(capturedOutput)
+    set(outputOptions)
+    message(STATUS "Populating ${contentName}")
+  endif()
+
+  if(CMAKE_GENERATOR)
+    set(subCMakeOpts "-G${CMAKE_GENERATOR}")
+    if(CMAKE_GENERATOR_PLATFORM)
+      list(APPEND subCMakeOpts "-A${CMAKE_GENERATOR_PLATFORM}")
+    endif()
+    if(CMAKE_GENERATOR_TOOLSET)
+      list(APPEND subCMakeOpts "-T${CMAKE_GENERATOR_TOOLSET}")
+    endif()
+
+    if(CMAKE_MAKE_PROGRAM)
+      list(APPEND subCMakeOpts "-DCMAKE_MAKE_PROGRAM:FILEPATH=${CMAKE_MAKE_PROGRAM}")
+    endif()
+
+  else()
+    # Likely we've been invoked via CMake's script mode where no
+    # generator is set (and hence CMAKE_MAKE_PROGRAM could not be
+    # trusted even if provided). We will have to rely on being
+    # able to find the default generator and build tool.
+    unset(subCMakeOpts)
+  endif()
+
+  set(__FETCHCONTENT_CACHED_INFO "")
+  set(__passthrough_vars
+    CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY
+    CMAKE_TLS_VERIFY
+    CMAKE_TLS_CAINFO
+    CMAKE_NETRC
+    CMAKE_NETRC_FILE
+  )
+  foreach(var IN LISTS __passthrough_vars)
+    if(DEFINED ${var})
+      # Embed directly in the generated CMakeLists.txt file to avoid making
+      # the cmake command line excessively long. It also makes debugging and
+      # testing easier.
+      string(APPEND __FETCHCONTENT_CACHED_INFO "set(${var} [==[${${var}}]==])\n")
+    endif()
+  endforeach()
+
+  # Avoid using if(... IN_LIST ...) so we don't have to alter policy settings
+  list(FIND ARG_UNPARSED_ARGUMENTS GIT_REPOSITORY indexResult)
+  if(indexResult GREATER_EQUAL 0)
+    find_package(Git QUIET)
+    string(APPEND __FETCHCONTENT_CACHED_INFO "
+# Pass through things we've already detected in the main project to avoid
+# paying the cost of redetecting them again in ExternalProject_Add()
+set(GIT_EXECUTABLE [==[${GIT_EXECUTABLE}]==])
+set(GIT_VERSION_STRING [==[${GIT_VERSION_STRING}]==])
+set_property(GLOBAL PROPERTY _CMAKE_FindGit_GIT_EXECUTABLE_VERSION
+  [==[${GIT_EXECUTABLE};${GIT_VERSION_STRING}]==]
+)
+")
+  endif()
+
+  # Create and build a separate CMake project to carry out the population.
+  # If we've already previously done these steps, they will not cause
+  # anything to be updated, so extra rebuilds of the project won't occur.
+  # Make sure to pass through CMAKE_MAKE_PROGRAM in case the main project
+  # has this set to something not findable on the PATH.
+  configure_file("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/FetchContent/CMakeLists.cmake.in"
+                 "${ARG_SUBBUILD_DIR}/CMakeLists.txt")
+  execute_process(
+    COMMAND ${CMAKE_COMMAND} ${subCMakeOpts} .
+    RESULT_VARIABLE result
+    ${outputOptions}
+    WORKING_DIRECTORY "${ARG_SUBBUILD_DIR}"
+  )
+  if(result)
+    if(capturedOutput)
+      message("${capturedOutput}")
+    endif()
+    message(FATAL_ERROR "CMake step for ${contentName} failed: ${result}")
+  endif()
+  execute_process(
+    COMMAND ${CMAKE_COMMAND} --build .
+    RESULT_VARIABLE result
+    ${outputOptions}
+    WORKING_DIRECTORY "${ARG_SUBBUILD_DIR}"
+  )
+  if(result)
+    if(capturedOutput)
+      message("${capturedOutput}")
+    endif()
+    message(FATAL_ERROR "Build step for ${contentName} failed: ${result}")
+  endif()
+
+endfunction()
+
+
+option(FETCHCONTENT_FULLY_DISCONNECTED   "Disables all attempts to download or update content and assumes source dirs already exist")
+option(FETCHCONTENT_UPDATES_DISCONNECTED "Enables UPDATE_DISCONNECTED behavior for all content population")
+option(FETCHCONTENT_QUIET                "Enables QUIET option for all content population" ON)
+set(FETCHCONTENT_BASE_DIR "${CMAKE_BINARY_DIR}/_deps" CACHE PATH "Directory under which to collect all populated content")
+
+# Populate the specified content using details stored from
+# an earlier call to FetchContent_Declare().
+function(FetchContent_Populate contentName)
+
+  if(NOT contentName)
+    message(FATAL_ERROR "Empty contentName not allowed for FetchContent_Populate()")
+  endif()
+
+  string(TOLOWER ${contentName} contentNameLower)
+
+  if(ARGN)
+    # This is the direct population form with details fully specified
+    # as part of the call, so we already have everything we need
+    __FetchContent_directPopulate(
+      ${contentNameLower}
+      SUBBUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/${contentNameLower}-subbuild"
+      SOURCE_DIR   "${CMAKE_CURRENT_BINARY_DIR}/${contentNameLower}-src"
+      BINARY_DIR   "${CMAKE_CURRENT_BINARY_DIR}/${contentNameLower}-build"
+      ${ARGN}  # Could override any of the above ..._DIR variables
+    )
+
+    # Pass source and binary dir variables back to the caller
+    set(${contentNameLower}_SOURCE_DIR "${${contentNameLower}_SOURCE_DIR}" PARENT_SCOPE)
+    set(${contentNameLower}_BINARY_DIR "${${contentNameLower}_BINARY_DIR}" PARENT_SCOPE)
+
+    # Don't set global properties, or record that we did this population, since
+    # this was a direct call outside of the normal declared details form.
+    # We only want to save values in the global properties for content that
+    # honors the hierarchical details mechanism so that projects are not
+    # robbed of the ability to override details set in nested projects.
+    return()
+  endif()
+
+  # No details provided, so assume they were saved from an earlier call
+  # to FetchContent_Declare(). Do a check that we haven't already
+  # populated this content before in case the caller forgot to check.
+  FetchContent_GetProperties(${contentName})
+  if(${contentNameLower}_POPULATED)
+    message(FATAL_ERROR "Content ${contentName} already populated in ${${contentNameLower}_SOURCE_DIR}")
+  endif()
+
+  __FetchContent_getSavedDetails(${contentName} contentDetails)
+  if("${contentDetails}" STREQUAL "")
+    message(FATAL_ERROR "No details have been set for content: ${contentName}")
+  endif()
+
+  string(TOUPPER ${contentName} contentNameUpper)
+  set(FETCHCONTENT_SOURCE_DIR_${contentNameUpper}
+      "${FETCHCONTENT_SOURCE_DIR_${contentNameUpper}}"
+      CACHE PATH "When not empty, overrides where to find pre-populated content for ${contentName}")
+
+  if(FETCHCONTENT_SOURCE_DIR_${contentNameUpper})
+    # The source directory has been explicitly provided in the cache,
+    # so no population is required. The build directory may still be specified
+    # by the declared details though.
+
+    if(NOT IS_ABSOLUTE "${FETCHCONTENT_SOURCE_DIR_${contentNameUpper}}")
+      # Don't check this directory because we don't know what location it is
+      # expected to be relative to. We can't make this a hard error for backward
+      # compatibility reasons.
+      message(WARNING "Relative source directory specified. This is not safe, "
+        "as it depends on the calling directory scope.\n"
+        "  FETCHCONTENT_SOURCE_DIR_${contentNameUpper} --> ${FETCHCONTENT_SOURCE_DIR_${contentNameUpper}}")
+    elseif(NOT EXISTS "${FETCHCONTENT_SOURCE_DIR_${contentNameUpper}}")
+      message(FATAL_ERROR "Manually specified source directory is missing:\n"
+        "  FETCHCONTENT_SOURCE_DIR_${contentNameUpper} --> ${FETCHCONTENT_SOURCE_DIR_${contentNameUpper}}")
+    endif()
+
+    set(${contentNameLower}_SOURCE_DIR "${FETCHCONTENT_SOURCE_DIR_${contentNameUpper}}")
+
+    cmake_parse_arguments(savedDetails "" "BINARY_DIR" "" ${contentDetails})
+
+    if(savedDetails_BINARY_DIR)
+      set(${contentNameLower}_BINARY_DIR ${savedDetails_BINARY_DIR})
+    else()
+      set(${contentNameLower}_BINARY_DIR "${FETCHCONTENT_BASE_DIR}/${contentNameLower}-build")
+    endif()
+
+  elseif(FETCHCONTENT_FULLY_DISCONNECTED)
+    # Bypass population and assume source is already there from a previous run.
+    # Declared details may override the default source or build directories.
+
+    cmake_parse_arguments(savedDetails "" "SOURCE_DIR;BINARY_DIR" "" ${contentDetails})
+
+    if(savedDetails_SOURCE_DIR)
+      set(${contentNameLower}_SOURCE_DIR ${savedDetails_SOURCE_DIR})
+    else()
+      set(${contentNameLower}_SOURCE_DIR "${FETCHCONTENT_BASE_DIR}/${contentNameLower}-src")
+    endif()
+
+    if(savedDetails_BINARY_DIR)
+      set(${contentNameLower}_BINARY_DIR ${savedDetails_BINARY_DIR})
+    else()
+      set(${contentNameLower}_BINARY_DIR "${FETCHCONTENT_BASE_DIR}/${contentNameLower}-build")
+    endif()
+
+  else()
+    # Support both a global "disconnect all updates" and a per-content
+    # update test (either one being set disables updates for this content).
+    option(FETCHCONTENT_UPDATES_DISCONNECTED_${contentNameUpper}
+           "Enables UPDATE_DISCONNECTED behavior just for population of ${contentName}")
+    if(FETCHCONTENT_UPDATES_DISCONNECTED OR
+       FETCHCONTENT_UPDATES_DISCONNECTED_${contentNameUpper})
+      set(disconnectUpdates True)
+    else()
+      set(disconnectUpdates False)
+    endif()
+
+    if(FETCHCONTENT_QUIET)
+      set(quietFlag QUIET)
+    else()
+      unset(quietFlag)
+    endif()
+
+    set(__detailsQuoted)
+    foreach(__item IN LISTS contentDetails)
+      string(APPEND __detailsQuoted " [==[${__item}]==]")
+    endforeach()
+    cmake_language(EVAL CODE "
+      __FetchContent_directPopulate(
+        ${contentNameLower}
+        ${quietFlag}
+        UPDATE_DISCONNECTED ${disconnectUpdates}
+        SUBBUILD_DIR \"${FETCHCONTENT_BASE_DIR}/${contentNameLower}-subbuild\"
+        SOURCE_DIR   \"${FETCHCONTENT_BASE_DIR}/${contentNameLower}-src\"
+        BINARY_DIR   \"${FETCHCONTENT_BASE_DIR}/${contentNameLower}-build\"
+        # Put the saved details last so they can override any of the
+        # the options we set above (this can include SOURCE_DIR or
+        # BUILD_DIR)
+        ${__detailsQuoted}
+      )"
+    )
+  endif()
+
+  __FetchContent_setPopulated(
+    ${contentName}
+    ${${contentNameLower}_SOURCE_DIR}
+    ${${contentNameLower}_BINARY_DIR}
+  )
+
+  # Pass variables back to the caller. The variables passed back here
+  # must match what FetchContent_GetProperties() sets when it is called
+  # with just the content name.
+  set(${contentNameLower}_SOURCE_DIR "${${contentNameLower}_SOURCE_DIR}" PARENT_SCOPE)
+  set(${contentNameLower}_BINARY_DIR "${${contentNameLower}_BINARY_DIR}" PARENT_SCOPE)
+  set(${contentNameLower}_POPULATED  True PARENT_SCOPE)
+
+endfunction()
+
+# Arguments are assumed to be the names of dependencies that have been
+# declared previously and should be populated. It is not an error if
+# any of them have already been populated (they will just be skipped in
+# that case). The command is implemented as a macro so that the variables
+# defined by the FetchContent_GetProperties() and FetchContent_Populate()
+# calls will be available to the caller.
+macro(FetchContent_MakeAvailable)
+
+  foreach(__cmake_contentName IN ITEMS ${ARGV})
+    string(TOLOWER ${__cmake_contentName} __cmake_contentNameLower)
+    FetchContent_GetProperties(${__cmake_contentName})
+    if(NOT ${__cmake_contentNameLower}_POPULATED)
+      FetchContent_Populate(${__cmake_contentName})
+
+      # Only try to call add_subdirectory() if the populated content
+      # can be treated that way. Protecting the call with the check
+      # allows this function to be used for projects that just want
+      # to ensure the content exists, such as to provide content at
+      # a known location. We check the saved details for an optional
+      # SOURCE_SUBDIR which can be used in the same way as its meaning
+      # for ExternalProject. It won't matter if it was passed through
+      # to the ExternalProject sub-build, since it would have been
+      # ignored there.
+      set(__cmake_srcdir "${${__cmake_contentNameLower}_SOURCE_DIR}")
+      __FetchContent_getSavedDetails(${__cmake_contentName} __cmake_contentDetails)
+      if("${__cmake_contentDetails}" STREQUAL "")
+        message(FATAL_ERROR "No details have been set for content: ${__cmake_contentName}")
+      endif()
+      cmake_parse_arguments(__cmake_arg "" "SOURCE_SUBDIR" "" ${__cmake_contentDetails})
+      if(NOT "${__cmake_arg_SOURCE_SUBDIR}" STREQUAL "")
+        string(APPEND __cmake_srcdir "/${__cmake_arg_SOURCE_SUBDIR}")
+      endif()
+
+      if(EXISTS ${__cmake_srcdir}/CMakeLists.txt)
+        add_subdirectory(${__cmake_srcdir} ${${__cmake_contentNameLower}_BINARY_DIR})
+      endif()
+
+      unset(__cmake_srcdir)
+    endif()
+  endforeach()
+
+  # clear local variables to prevent leaking into the caller's scope
+  unset(__cmake_contentName)
+  unset(__cmake_contentNameLower)
+  unset(__cmake_contentDetails)
+  unset(__cmake_arg_SOURCE_SUBDIR)
+
+endmacro()
diff --git a/share/cmake-3.22/Modules/FetchContent/CMakeLists.cmake.in b/share/cmake-3.22/Modules/FetchContent/CMakeLists.cmake.in
new file mode 100644
index 0000000..5ebb12f
--- /dev/null
+++ b/share/cmake-3.22/Modules/FetchContent/CMakeLists.cmake.in
@@ -0,0 +1,27 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+cmake_minimum_required(VERSION ${CMAKE_VERSION})
+
+# We name the project and the target for the ExternalProject_Add() call
+# to something that will highlight to the user what we are working on if
+# something goes wrong and an error message is produced.
+
+project(${contentName}-populate NONE)
+
+@__FETCHCONTENT_CACHED_INFO@
+
+include(ExternalProject)
+ExternalProject_Add(${contentName}-populate
+                    ${ARG_EXTRA}
+                    SOURCE_DIR          "${ARG_SOURCE_DIR}"
+                    BINARY_DIR          "${ARG_BINARY_DIR}"
+                    CONFIGURE_COMMAND   ""
+                    BUILD_COMMAND       ""
+                    INSTALL_COMMAND     ""
+                    TEST_COMMAND        ""
+                    USES_TERMINAL_DOWNLOAD  YES
+                    USES_TERMINAL_UPDATE    YES
+)
+
+@__FETCHCONTENT_COPY_FILE@
diff --git a/share/cmake-3.22/Modules/FindALSA.cmake b/share/cmake-3.22/Modules/FindALSA.cmake
new file mode 100644
index 0000000..627866a
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindALSA.cmake
@@ -0,0 +1,76 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindALSA
+--------
+
+Find Advanced Linux Sound Architecture (ALSA)
+
+Find the alsa libraries (``asound``)
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.12
+
+This module defines :prop_tgt:`IMPORTED` target ``ALSA::ALSA``, if
+ALSA has been found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module defines the following variables:
+
+``ALSA_FOUND``
+  True if ALSA_INCLUDE_DIR & ALSA_LIBRARY are found
+
+``ALSA_LIBRARIES``
+  List of libraries when using ALSA.
+
+``ALSA_INCLUDE_DIRS``
+  Where to find the ALSA headers.
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set:
+
+``ALSA_INCLUDE_DIR``
+  the ALSA include directory
+
+``ALSA_LIBRARY``
+  the absolute path of the asound library
+#]=======================================================================]
+
+find_path(ALSA_INCLUDE_DIR NAMES alsa/asoundlib.h
+          DOC "The ALSA (asound) include directory"
+)
+
+find_library(ALSA_LIBRARY NAMES asound
+          DOC "The ALSA (asound) library"
+)
+
+if(ALSA_INCLUDE_DIR AND EXISTS "${ALSA_INCLUDE_DIR}/alsa/version.h")
+  file(STRINGS "${ALSA_INCLUDE_DIR}/alsa/version.h" alsa_version_str REGEX "^#define[\t ]+SND_LIB_VERSION_STR[\t ]+\".*\"")
+
+  string(REGEX REPLACE "^.*SND_LIB_VERSION_STR[\t ]+\"([^\"]*)\".*$" "\\1" ALSA_VERSION_STRING "${alsa_version_str}")
+  unset(alsa_version_str)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(ALSA
+                                  REQUIRED_VARS ALSA_LIBRARY ALSA_INCLUDE_DIR
+                                  VERSION_VAR ALSA_VERSION_STRING)
+
+if(ALSA_FOUND)
+  set( ALSA_LIBRARIES ${ALSA_LIBRARY} )
+  set( ALSA_INCLUDE_DIRS ${ALSA_INCLUDE_DIR} )
+  if(NOT TARGET ALSA::ALSA)
+    add_library(ALSA::ALSA UNKNOWN IMPORTED)
+    set_target_properties(ALSA::ALSA PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${ALSA_INCLUDE_DIRS}")
+    set_property(TARGET ALSA::ALSA APPEND PROPERTY IMPORTED_LOCATION "${ALSA_LIBRARY}")
+  endif()
+endif()
+
+mark_as_advanced(ALSA_INCLUDE_DIR ALSA_LIBRARY)
diff --git a/share/cmake-3.18/Modules/FindASPELL.cmake b/share/cmake-3.22/Modules/FindASPELL.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindASPELL.cmake
rename to share/cmake-3.22/Modules/FindASPELL.cmake
diff --git a/share/cmake-3.18/Modules/FindAVIFile.cmake b/share/cmake-3.22/Modules/FindAVIFile.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindAVIFile.cmake
rename to share/cmake-3.22/Modules/FindAVIFile.cmake
diff --git a/share/cmake-3.22/Modules/FindArmadillo.cmake b/share/cmake-3.22/Modules/FindArmadillo.cmake
new file mode 100644
index 0000000..f959356
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindArmadillo.cmake
@@ -0,0 +1,135 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindArmadillo
+-------------
+
+Find the Armadillo C++ library.
+Armadillo is a library for linear algebra & scientific computing.
+
+.. versionadded:: 3.18
+  Support for linking wrapped libraries directly (``ARMA_DONT_USE_WRAPPER``).
+
+Using Armadillo:
+
+::
+
+  find_package(Armadillo REQUIRED)
+  include_directories(${ARMADILLO_INCLUDE_DIRS})
+  add_executable(foo foo.cc)
+  target_link_libraries(foo ${ARMADILLO_LIBRARIES})
+
+This module sets the following variables:
+
+::
+
+  ARMADILLO_FOUND - set to true if the library is found
+  ARMADILLO_INCLUDE_DIRS - list of required include directories
+  ARMADILLO_LIBRARIES - list of libraries to be linked
+  ARMADILLO_VERSION_MAJOR - major version number
+  ARMADILLO_VERSION_MINOR - minor version number
+  ARMADILLO_VERSION_PATCH - patch version number
+  ARMADILLO_VERSION_STRING - version number as a string (ex: "1.0.4")
+  ARMADILLO_VERSION_NAME - name of the version (ex: "Antipodean Antileech")
+#]=======================================================================]
+
+find_path(ARMADILLO_INCLUDE_DIR
+  NAMES armadillo
+  PATHS "$ENV{ProgramFiles}/Armadillo/include"
+  )
+mark_as_advanced(ARMADILLO_INCLUDE_DIR)
+
+if(ARMADILLO_INCLUDE_DIR)
+  # ------------------------------------------------------------------------
+  #  Extract version information from <armadillo>
+  # ------------------------------------------------------------------------
+
+  # WARNING: Early releases of Armadillo didn't have the arma_version.hpp file.
+  # (e.g. v.0.9.8-1 in ubuntu maverick packages (2001-03-15))
+  # If the file is missing, set all values to 0
+  set(ARMADILLO_VERSION_MAJOR 0)
+  set(ARMADILLO_VERSION_MINOR 0)
+  set(ARMADILLO_VERSION_PATCH 0)
+  set(ARMADILLO_VERSION_NAME "EARLY RELEASE")
+
+  if(EXISTS "${ARMADILLO_INCLUDE_DIR}/armadillo_bits/arma_version.hpp")
+
+    # Read and parse armdillo version header file for version number
+    file(STRINGS "${ARMADILLO_INCLUDE_DIR}/armadillo_bits/arma_version.hpp" _ARMA_HEADER_CONTENTS REGEX "#define ARMA_VERSION_[A-Z]+ ")
+    string(REGEX REPLACE ".*#define ARMA_VERSION_MAJOR ([0-9]+).*" "\\1" ARMADILLO_VERSION_MAJOR "${_ARMA_HEADER_CONTENTS}")
+    string(REGEX REPLACE ".*#define ARMA_VERSION_MINOR ([0-9]+).*" "\\1" ARMADILLO_VERSION_MINOR "${_ARMA_HEADER_CONTENTS}")
+    string(REGEX REPLACE ".*#define ARMA_VERSION_PATCH ([0-9]+).*" "\\1" ARMADILLO_VERSION_PATCH "${_ARMA_HEADER_CONTENTS}")
+
+    # WARNING: The number of spaces before the version name is not one.
+    string(REGEX REPLACE ".*#define ARMA_VERSION_NAME\ +\"([0-9a-zA-Z\ _-]+)\".*" "\\1" ARMADILLO_VERSION_NAME "${_ARMA_HEADER_CONTENTS}")
+
+  endif()
+
+  set(ARMADILLO_VERSION_STRING "${ARMADILLO_VERSION_MAJOR}.${ARMADILLO_VERSION_MINOR}.${ARMADILLO_VERSION_PATCH}")
+endif ()
+
+if(EXISTS "${ARMADILLO_INCLUDE_DIR}/armadillo_bits/config.hpp")
+  file(STRINGS "${ARMADILLO_INCLUDE_DIR}/armadillo_bits/config.hpp" _ARMA_CONFIG_CONTENTS REGEX "^#define ARMA_USE_[A-Z]+")
+  string(REGEX MATCH "ARMA_USE_WRAPPER" _ARMA_USE_WRAPPER "${_ARMA_CONFIG_CONTENTS}")
+  string(REGEX MATCH "ARMA_USE_LAPACK" _ARMA_USE_LAPACK "${_ARMA_CONFIG_CONTENTS}")
+  string(REGEX MATCH "ARMA_USE_BLAS" _ARMA_USE_BLAS "${_ARMA_CONFIG_CONTENTS}")
+  string(REGEX MATCH "ARMA_USE_ARPACK" _ARMA_USE_ARPACK "${_ARMA_CONFIG_CONTENTS}")
+  string(REGEX MATCH "ARMA_USE_HDF5" _ARMA_USE_HDF5 "${_ARMA_CONFIG_CONTENTS}")
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+# If _ARMA_USE_WRAPPER is set, then we just link to armadillo, but if it's not then we need support libraries instead
+set(_ARMA_SUPPORT_LIBRARIES)
+
+if(_ARMA_USE_WRAPPER)
+  # Link to the armadillo wrapper library.
+  find_library(ARMADILLO_LIBRARY
+    NAMES armadillo
+    NAMES_PER_DIR
+    PATHS
+      "$ENV{ProgramFiles}/Armadillo/lib"
+      "$ENV{ProgramFiles}/Armadillo/lib64"
+      "$ENV{ProgramFiles}/Armadillo"
+    )
+  mark_as_advanced(ARMADILLO_LIBRARY)
+  set(_ARMA_REQUIRED_VARS ARMADILLO_LIBRARY)
+else()
+  # Link directly to individual components.
+  set(ARMADILLO_LIBRARY "")
+  foreach(pkg
+      LAPACK
+      BLAS
+      ARPACK
+      HDF5
+      )
+    if(_ARMA_USE_${pkg})
+      find_package(${pkg} QUIET)
+      list(APPEND _ARMA_REQUIRED_VARS "${pkg}_FOUND")
+      if(${pkg}_FOUND)
+        list(APPEND _ARMA_SUPPORT_LIBRARIES ${${pkg}_LIBRARIES})
+      endif()
+    endif()
+  endforeach()
+endif()
+
+find_package_handle_standard_args(Armadillo
+  REQUIRED_VARS ARMADILLO_INCLUDE_DIR ${_ARMA_REQUIRED_VARS}
+  VERSION_VAR ARMADILLO_VERSION_STRING)
+
+if (ARMADILLO_FOUND)
+  set(ARMADILLO_INCLUDE_DIRS ${ARMADILLO_INCLUDE_DIR})
+  set(ARMADILLO_LIBRARIES ${ARMADILLO_LIBRARY} ${_ARMA_SUPPORT_LIBRARIES})
+endif ()
+
+# Clean up internal variables
+unset(_ARMA_REQUIRED_VARS)
+unset(_ARMA_SUPPORT_LIBRARIES)
+unset(_ARMA_USE_WRAPPER)
+unset(_ARMA_USE_LAPACK)
+unset(_ARMA_USE_BLAS)
+unset(_ARMA_USE_ARPACK)
+unset(_ARMA_USE_HDF5)
+unset(_ARMA_CONFIG_CONTENTS)
+unset(_ARMA_HEADER_CONTENTS)
diff --git a/share/cmake-3.22/Modules/FindBISON.cmake b/share/cmake-3.22/Modules/FindBISON.cmake
new file mode 100644
index 0000000..3515bf0
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindBISON.cmake
@@ -0,0 +1,307 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindBISON
+---------
+
+Find ``bison`` executable and provide a macro to generate custom build rules.
+
+The module defines the following variables:
+
+``BISON_EXECUTABLE``
+  path to the ``bison`` program
+
+``BISON_VERSION``
+  version of ``bison``
+
+``BISON_FOUND``
+  "True" if the program was found
+
+The minimum required version of ``bison`` can be specified using the
+standard CMake syntax, e.g.  :command:`find_package(BISON 2.1.3)`.
+
+If ``bison`` is found, the module defines the macro::
+
+  BISON_TARGET(<Name> <YaccInput> <CodeOutput>
+               [COMPILE_FLAGS <flags>]
+               [DEFINES_FILE <file>]
+               [VERBOSE [<file>]]
+               [REPORT_FILE <file>]
+               )
+
+which will create a custom rule to generate a parser.  ``<YaccInput>`` is
+the path to a yacc file.  ``<CodeOutput>`` is the name of the source file
+generated by bison.  A header file is also be generated, and contains
+the token list.
+
+.. versionchanged:: 3.14
+  When :policy:`CMP0088` is set to ``NEW``, ``bison`` runs in the
+  :variable:`CMAKE_CURRENT_BINARY_DIR` directory.
+
+The options are:
+
+``COMPILE_FLAGS <flags>``
+  Specify flags to be added to the ``bison`` command line.
+
+``DEFINES_FILE <file>``
+  .. versionadded:: 3.4
+
+  Specify a non-default header ``<file>`` to be generated by ``bison``.
+
+``VERBOSE [<file>]``
+  Tell ``bison`` to write a report file of the grammar and parser.
+
+  .. deprecated:: 3.7
+    If ``<file>`` is given, it specifies path the report file is copied to.
+    ``[<file>]`` is left for backward compatibility of this module.
+    Use ``VERBOSE REPORT_FILE <file>``.
+
+``REPORT_FILE <file>``
+  .. versionadded:: 3.7
+
+  Specify a non-default report ``<file>``, if generated.
+
+The macro defines the following variables:
+
+``BISON_<Name>_DEFINED``
+  ``True`` is the macro ran successfully
+
+``BISON_<Name>_INPUT``
+  The input source file, an alias for <YaccInput>
+
+``BISON_<Name>_OUTPUT_SOURCE``
+  The source file generated by bison
+
+``BISON_<Name>_OUTPUT_HEADER``
+  The header file generated by bison
+
+``BISON_<Name>_OUTPUTS``
+  All files generated by bison including the source, the header and the report
+
+``BISON_<Name>_COMPILE_FLAGS``
+  Options used in the ``bison`` command line
+
+Example usage:
+
+.. code-block:: cmake
+
+  find_package(BISON)
+  BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp
+               DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/parser.h)
+  add_executable(Foo main.cpp ${BISON_MyParser_OUTPUTS})
+#]=======================================================================]
+
+find_program(BISON_EXECUTABLE NAMES bison win-bison win_bison DOC "path to the bison executable")
+mark_as_advanced(BISON_EXECUTABLE)
+
+if(BISON_EXECUTABLE)
+  # the bison commands should be executed with the C locale, otherwise
+  # the message (which are parsed) may be translated
+  set(_Bison_SAVED_LC_ALL "$ENV{LC_ALL}")
+  set(ENV{LC_ALL} C)
+
+  execute_process(COMMAND ${BISON_EXECUTABLE} --version
+    OUTPUT_VARIABLE BISON_version_output
+    ERROR_VARIABLE BISON_version_error
+    RESULT_VARIABLE BISON_version_result
+    OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+  set(ENV{LC_ALL} ${_Bison_SAVED_LC_ALL})
+
+  if(NOT ${BISON_version_result} EQUAL 0)
+    message(SEND_ERROR "Command \"${BISON_EXECUTABLE} --version\" failed with output:\n${BISON_version_error}")
+  else()
+    # Bison++
+    if("${BISON_version_output}" MATCHES "^bison\\+\\+ Version ([^,]+)")
+      set(BISON_VERSION "${CMAKE_MATCH_1}")
+    # GNU Bison
+    elseif("${BISON_version_output}" MATCHES "^bison \\(GNU Bison\\) ([^\n]+)\n")
+      set(BISON_VERSION "${CMAKE_MATCH_1}")
+    elseif("${BISON_version_output}" MATCHES "^GNU Bison (version )?([^\n]+)")
+      set(BISON_VERSION "${CMAKE_MATCH_2}")
+    endif()
+  endif()
+
+  # internal macro
+  # sets BISON_TARGET_cmdopt
+  macro(BISON_TARGET_option_extraopts Options)
+    set(BISON_TARGET_cmdopt "")
+    set(BISON_TARGET_extraopts "${Options}")
+    separate_arguments(BISON_TARGET_extraopts)
+    list(APPEND BISON_TARGET_cmdopt ${BISON_TARGET_extraopts})
+  endmacro()
+
+  # internal macro
+  # sets BISON_TARGET_output_header and BISON_TARGET_cmdopt
+  macro(BISON_TARGET_option_defines BisonOutput Header)
+    if("${Header}" STREQUAL "")
+      # default header path generated by bison (see option -d)
+      string(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\2" _fileext "${BisonOutput}")
+      string(REPLACE "c" "h" _fileext ${_fileext})
+      string(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\1${_fileext}"
+          BISON_TARGET_output_header "${BisonOutput}")
+      list(APPEND BISON_TARGET_cmdopt "-d")
+    else()
+      set(BISON_TARGET_output_header "${Header}")
+      list(APPEND BISON_TARGET_cmdopt "--defines=${BISON_TARGET_output_header}")
+    endif()
+  endmacro()
+
+  # internal macro
+  # sets BISON_TARGET_verbose_file and BISON_TARGET_cmdopt
+  macro(BISON_TARGET_option_report_file BisonOutput ReportFile)
+    if("${ReportFile}" STREQUAL "")
+      get_filename_component(BISON_TARGET_output_path "${BisonOutput}" PATH)
+      get_filename_component(BISON_TARGET_output_name "${BisonOutput}" NAME_WE)
+      set(BISON_TARGET_verbose_file
+        "${BISON_TARGET_output_path}/${BISON_TARGET_output_name}.output")
+    else()
+      set(BISON_TARGET_verbose_file "${ReportFile}")
+      list(APPEND BISON_TARGET_cmdopt "--report-file=${BISON_TARGET_verbose_file}")
+    endif()
+    if(NOT IS_ABSOLUTE "${BISON_TARGET_verbose_file}")
+      cmake_policy(GET CMP0088 _BISON_CMP0088
+        PARENT_SCOPE # undocumented, do not use outside of CMake
+        )
+      if("x${_BISON_CMP0088}x" STREQUAL "xNEWx")
+        set(BISON_TARGET_verbose_file "${CMAKE_CURRENT_BINARY_DIR}/${BISON_TARGET_verbose_file}")
+      else()
+        set(BISON_TARGET_verbose_file "${CMAKE_CURRENT_SOURCE_DIR}/${BISON_TARGET_verbose_file}")
+      endif()
+      unset(_BISON_CMP0088)
+    endif()
+  endmacro()
+
+  # internal macro
+  # adds a custom command and sets
+  #   BISON_TARGET_cmdopt, BISON_TARGET_extraoutputs
+  macro(BISON_TARGET_option_verbose Name BisonOutput filename)
+    cmake_policy(GET CMP0088 _BISON_CMP0088
+        PARENT_SCOPE # undocumented, do not use outside of CMake
+        )
+    set(_BISON_WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+    if("x${_BISON_CMP0088}x" STREQUAL "xNEWx")
+      set(_BISON_WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+    endif()
+    unset(_BISON_CMP0088)
+
+    list(APPEND BISON_TARGET_cmdopt "--verbose")
+    list(APPEND BISON_TARGET_outputs
+      "${BISON_TARGET_verbose_file}")
+    if (NOT "${filename}" STREQUAL "")
+      if(IS_ABSOLUTE "${filename}")
+        set(BISON_TARGET_verbose_extra_file "${filename}")
+      else()
+        set(BISON_TARGET_verbose_extra_file "${_BISON_WORKING_DIRECTORY}/${filename}")
+      endif()
+
+      add_custom_command(OUTPUT ${BISON_TARGET_verbose_extra_file}
+        COMMAND ${CMAKE_COMMAND} -E copy
+        "${BISON_TARGET_verbose_file}"
+        "${filename}"
+        VERBATIM
+        DEPENDS
+        "${BISON_TARGET_verbose_file}"
+        COMMENT "[BISON][${Name}] Copying bison verbose table to ${filename}"
+        WORKING_DIRECTORY ${_BISON_WORKING_DIRECTORY})
+      list(APPEND BISON_TARGET_extraoutputs
+        "${BISON_TARGET_verbose_extra_file}")
+      unset(BISON_TARGET_verbose_extra_file)
+      unset(_BISON_WORKING_DIRECTORY)
+    endif()
+  endmacro()
+
+  #============================================================
+  # BISON_TARGET (public macro)
+  #============================================================
+  #
+  macro(BISON_TARGET Name BisonInput BisonOutput)
+    set(BISON_TARGET_outputs "${BisonOutput}")
+    set(BISON_TARGET_extraoutputs "")
+
+    # Parsing parameters
+    set(BISON_TARGET_PARAM_OPTIONS
+      )
+    set(BISON_TARGET_PARAM_ONE_VALUE_KEYWORDS
+      COMPILE_FLAGS
+      DEFINES_FILE
+      REPORT_FILE
+      )
+    set(BISON_TARGET_PARAM_MULTI_VALUE_KEYWORDS
+      VERBOSE
+      )
+    cmake_parse_arguments(
+        BISON_TARGET_ARG
+        "${BISON_TARGET_PARAM_OPTIONS}"
+        "${BISON_TARGET_PARAM_ONE_VALUE_KEYWORDS}"
+        "${BISON_TARGET_PARAM_MULTI_VALUE_KEYWORDS}"
+        ${ARGN}
+    )
+
+    if(NOT "${BISON_TARGET_ARG_UNPARSED_ARGUMENTS}" STREQUAL "")
+      message(SEND_ERROR "Usage")
+    elseif("${BISON_TARGET_ARG_VERBOSE}" MATCHES ";")
+      # [VERBOSE [<file>] hack: <file> is non-multi value by usage
+      message(SEND_ERROR "Usage")
+    else()
+
+      BISON_TARGET_option_extraopts("${BISON_TARGET_ARG_COMPILE_FLAGS}")
+      BISON_TARGET_option_defines("${BisonOutput}" "${BISON_TARGET_ARG_DEFINES_FILE}")
+      BISON_TARGET_option_report_file("${BisonOutput}" "${BISON_TARGET_ARG_REPORT_FILE}")
+      if(NOT "${BISON_TARGET_ARG_VERBOSE}" STREQUAL "")
+        BISON_TARGET_option_verbose(${Name} ${BisonOutput} "${BISON_TARGET_ARG_VERBOSE}")
+      else()
+        # [VERBOSE [<file>]] is used with no argument or is not used
+        set(BISON_TARGET_args "${ARGN}")
+        list(FIND BISON_TARGET_args "VERBOSE" BISON_TARGET_args_indexof_verbose)
+        if(${BISON_TARGET_args_indexof_verbose} GREATER -1)
+          # VERBOSE is used without <file>
+          BISON_TARGET_option_verbose(${Name} ${BisonOutput} "")
+        endif()
+      endif()
+
+      list(APPEND BISON_TARGET_outputs "${BISON_TARGET_output_header}")
+
+      cmake_policy(GET CMP0088 _BISON_CMP0088
+        PARENT_SCOPE # undocumented, do not use outside of CMake
+        )
+      set(_BISON_WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+      set(_BisonInput "${BisonInput}")
+      if("x${_BISON_CMP0088}x" STREQUAL "xNEWx")
+        set(_BISON_WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+        if(NOT IS_ABSOLUTE "${_BisonInput}")
+          set(_BisonInput "${CMAKE_CURRENT_SOURCE_DIR}/${_BisonInput}")
+        endif()
+      endif()
+      unset(_BISON_CMP0088)
+
+      add_custom_command(OUTPUT ${BISON_TARGET_outputs}
+        COMMAND ${BISON_EXECUTABLE} ${BISON_TARGET_cmdopt} -o ${BisonOutput} ${_BisonInput}
+        VERBATIM
+        DEPENDS ${_BisonInput}
+        COMMENT "[BISON][${Name}] Building parser with bison ${BISON_VERSION}"
+        WORKING_DIRECTORY ${_BISON_WORKING_DIRECTORY})
+
+      unset(_BISON_WORKING_DIRECTORY)
+
+      # define target variables
+      set(BISON_${Name}_DEFINED TRUE)
+      set(BISON_${Name}_INPUT ${_BisonInput})
+      set(BISON_${Name}_OUTPUTS ${BISON_TARGET_outputs} ${BISON_TARGET_extraoutputs})
+      set(BISON_${Name}_COMPILE_FLAGS ${BISON_TARGET_cmdopt})
+      set(BISON_${Name}_OUTPUT_SOURCE "${BisonOutput}")
+      set(BISON_${Name}_OUTPUT_HEADER "${BISON_TARGET_output_header}")
+
+      unset(_BisonInput)
+
+    endif()
+  endmacro()
+  #
+  #============================================================
+
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(BISON REQUIRED_VARS  BISON_EXECUTABLE
+                                        VERSION_VAR BISON_VERSION)
diff --git a/share/cmake-3.22/Modules/FindBLAS.cmake b/share/cmake-3.22/Modules/FindBLAS.cmake
new file mode 100644
index 0000000..308138f
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindBLAS.cmake
@@ -0,0 +1,1343 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindBLAS
+--------
+
+Find Basic Linear Algebra Subprograms (BLAS) library
+
+This module finds an installed Fortran library that implements the
+`BLAS linear-algebra interface`_.
+
+At least one of the ``C``, ``CXX``, or ``Fortran`` languages must be enabled.
+
+.. _`BLAS linear-algebra interface`: http://www.netlib.org/blas/
+
+Input Variables
+^^^^^^^^^^^^^^^
+
+The following variables may be set to influence this module's behavior:
+
+``BLA_STATIC``
+  if ``ON`` use static linkage
+
+``BLA_VENDOR``
+  Set to one of the :ref:`BLAS/LAPACK Vendors` to search for BLAS only
+  from the specified vendor.  If not set, all vendors are considered.
+
+``BLA_F95``
+  if ``ON`` tries to find the BLAS95 interfaces
+
+``BLA_PREFER_PKGCONFIG``
+  .. versionadded:: 3.11
+
+  if set ``pkg-config`` will be used to search for a BLAS library first
+  and if one is found that is preferred
+
+``BLA_SIZEOF_INTEGER``
+  .. versionadded:: 3.22
+
+  Specify the BLAS/LAPACK library integer size:
+
+  ``4``
+    Search for a BLAS/LAPACK with 32-bit integer interfaces.
+  ``8``
+    Search for a BLAS/LAPACK with 64-bit integer interfaces.
+  ``ANY``
+    Search for any BLAS/LAPACK.
+    Most likely, a BLAS/LAPACK with 32-bit integer interfaces will be found.
+
+Imported targets
+^^^^^^^^^^^^^^^^
+
+This module defines the following :prop_tgt:`IMPORTED` targets:
+
+``BLAS::BLAS``
+  .. versionadded:: 3.18
+
+  The libraries to use for BLAS, if found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module defines the following variables:
+
+``BLAS_FOUND``
+  library implementing the BLAS interface is found
+``BLAS_LINKER_FLAGS``
+  uncached list of required linker flags (excluding ``-l`` and ``-L``).
+``BLAS_LIBRARIES``
+  uncached list of libraries (using full path name) to link against
+  to use BLAS (may be empty if compiler implicitly links BLAS)
+``BLAS95_LIBRARIES``
+  uncached list of libraries (using full path name) to link against
+  to use BLAS95 interface
+``BLAS95_FOUND``
+  library implementing the BLAS95 interface is found
+
+.. _`BLAS/LAPACK Vendors`:
+
+BLAS/LAPACK Vendors
+^^^^^^^^^^^^^^^^^^^
+
+``Generic``
+  Generic reference implementation
+
+``ACML``, ``ACML_MP``, ``ACML_GPU``
+  AMD Core Math Library
+
+``Apple``, ``NAS``
+  Apple BLAS (Accelerate), and Apple NAS (vecLib)
+
+``Arm``, ``Arm_mp``, ``Arm_ilp64``, ``Arm_ilp64_mp``
+  .. versionadded:: 3.18
+
+  Arm Performance Libraries
+
+``ATLAS``
+  Automatically Tuned Linear Algebra Software
+
+``CXML``, ``DXML``
+  Compaq/Digital Extended Math Library
+
+``EML``, ``EML_mt``
+  .. versionadded:: 3.20
+
+  Elbrus Math Library
+
+``FLAME``
+  .. versionadded:: 3.11
+
+  BLIS Framework
+
+``FlexiBLAS``
+  .. versionadded:: 3.19
+
+``Fujitsu_SSL2``, ``Fujitsu_SSL2BLAMP``, ``Fujitsu_SSL2SVE``, ``Fujitsu_SSL2BLAMPSVE``
+  .. versionadded:: 3.20
+
+  Fujitsu SSL2 serial and parallel blas/lapack with SVE instructions
+
+``Goto``
+  GotoBLAS
+
+``IBMESSL``, ``IBMESSL_SMP``
+
+  IBM Engineering and Scientific Subroutine Library
+
+``Intel``
+  Intel MKL 32 bit and 64 bit obsolete versions
+
+``Intel10_32``
+  Intel MKL v10 32 bit, threaded code
+
+``Intel10_64lp``
+  Intel MKL v10+ 64 bit, threaded code, lp64 model
+
+``Intel10_64lp_seq``
+  Intel MKL v10+ 64 bit, sequential code, lp64 model
+
+``Intel10_64ilp``
+  .. versionadded:: 3.13
+
+  Intel MKL v10+ 64 bit, threaded code, ilp64 model
+
+``Intel10_64ilp_seq``
+  .. versionadded:: 3.13
+
+  Intel MKL v10+ 64 bit, sequential code, ilp64 model
+
+``Intel10_64_dyn``
+  .. versionadded:: 3.17
+
+  Intel MKL v10+ 64 bit, single dynamic library
+
+``NVHPC``
+  .. versionadded:: 3.21
+
+  NVIDIA HPC SDK
+
+``OpenBLAS``
+  .. versionadded:: 3.6
+
+``PhiPACK``
+  Portable High Performance ANSI C (PHiPAC)
+
+``SCSL``, ``SCSL_mp``
+  Scientific Computing Software Library
+
+``SGIMATH``
+  SGI Scientific Mathematical Library
+
+``SunPerf``
+  Sun Performance Library
+
+.. _`Intel MKL`:
+
+Intel MKL
+^^^^^^^^^
+
+To use the Intel MKL implementation of BLAS, a project must enable at least
+one of the ``C`` or ``CXX`` languages.  Set ``BLA_VENDOR`` to an Intel MKL
+variant either on the command-line as ``-DBLA_VENDOR=Intel10_64lp`` or in
+project code:
+
+.. code-block:: cmake
+
+  set(BLA_VENDOR Intel10_64lp)
+  find_package(BLAS)
+
+In order to build a project using Intel MKL, and end user must first
+establish an Intel MKL environment:
+
+Intel oneAPI
+  Source the full Intel environment script:
+
+  .. code-block:: shell
+
+    . /opt/intel/oneapi/setvars.sh
+
+  Or, source the MKL component environment script:
+
+  .. code-block:: shell
+
+    . /opt/intel/oneapi/mkl/latest/env/vars.sh
+
+Intel Classic
+  Source the full Intel environment script:
+
+  .. code-block:: shell
+
+    . /opt/intel/bin/compilervars.sh intel64
+
+  Or, source the MKL component environment script:
+
+  .. code-block:: shell
+
+    . /opt/intel/mkl/bin/mklvars.sh intel64
+
+The above environment scripts set the ``MKLROOT`` environment variable
+to the top of the MKL installation.  They also add the location of the
+runtime libraries to the dynamic library loader environment variable for
+your platform (e.g. ``LD_LIBRARY_PATH``).  This is necessary for programs
+linked against MKL to run.
+
+.. note::
+
+  As of Intel oneAPI 2021.2, loading only the MKL component does not
+  make all of its dependencies available.  In particular, the ``iomp5``
+  library must be available separately, or provided by also loading
+  the compiler component environment:
+
+  .. code-block:: shell
+
+    . /opt/intel/oneapi/compiler/latest/env/vars.sh
+
+#]=======================================================================]
+
+# The approach follows that of the ``autoconf`` macro file, ``acx_blas.m4``
+# (distributed at http://ac-archive.sourceforge.net/ac-archive/acx_blas.html).
+
+# Check the language being used
+if(NOT (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED OR CMAKE_Fortran_COMPILER_LOADED))
+  if(BLAS_FIND_REQUIRED)
+    message(FATAL_ERROR "FindBLAS requires Fortran, C, or C++ to be enabled.")
+  else()
+    message(STATUS "Looking for BLAS... - NOT found (Unsupported languages)")
+    return()
+  endif()
+endif()
+
+function(_add_blas_target)
+  if(BLAS_FOUND AND NOT TARGET BLAS::BLAS)
+    add_library(BLAS::BLAS INTERFACE IMPORTED)
+    if(BLAS_LIBRARIES)
+      set_target_properties(BLAS::BLAS PROPERTIES
+        INTERFACE_LINK_LIBRARIES "${BLAS_LIBRARIES}"
+      )
+    endif()
+    if(BLAS_LINKER_FLAGS)
+      set_target_properties(BLAS::BLAS PROPERTIES
+        INTERFACE_LINK_OPTIONS "${BLAS_LINKER_FLAGS}"
+      )
+    endif()
+  endif()
+endfunction()
+
+if(CMAKE_Fortran_COMPILER_LOADED)
+  include(${CMAKE_CURRENT_LIST_DIR}/CheckFortranFunctionExists.cmake)
+else()
+  include(${CMAKE_CURRENT_LIST_DIR}/CheckFunctionExists.cmake)
+endif()
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+if(BLA_PREFER_PKGCONFIG)
+  find_package(PkgConfig)
+  pkg_check_modules(PKGC_BLAS blas)
+  if(PKGC_BLAS_FOUND)
+    set(BLAS_FOUND ${PKGC_BLAS_FOUND})
+    set(BLAS_LIBRARIES "${PKGC_BLAS_LINK_LIBRARIES}")
+    _add_blas_target()
+    return()
+  endif()
+endif()
+
+# TODO: move this stuff to a separate module
+
+function(CHECK_BLAS_LIBRARIES LIBRARIES _prefix _name _flags _list _deps _addlibdir _subdirs)
+  # This function checks for the existence of the combination of libraries
+  # given by _list.  If the combination is found, this checks whether can link
+  # against that library combination using the name of a routine given by _name
+  # using the linker flags given by _flags.  If the combination of libraries is
+  # found and passes the link test, ${LIBRARIES} is set to the list of complete
+  # library paths that have been found.  Otherwise, ${LIBRARIES} is set to FALSE.
+
+  set(_libraries_work TRUE)
+  set(_libraries)
+  set(_combined_name)
+
+  if(BLA_STATIC)
+    if(WIN32)
+      set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
+    else()
+      set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
+    endif()
+  else()
+    if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+      # for ubuntu's libblas3gf and liblapack3gf packages
+      set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES} .so.3gf)
+    endif()
+  endif()
+
+  set(_extaddlibdir "${_addlibdir}")
+  if(WIN32)
+    list(APPEND _extaddlibdir ENV LIB)
+  elseif(APPLE)
+    list(APPEND _extaddlibdir ENV DYLD_LIBRARY_PATH)
+  else()
+    list(APPEND _extaddlibdir ENV LD_LIBRARY_PATH)
+  endif()
+  list(APPEND _extaddlibdir "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}")
+
+  foreach(_library ${_list})
+    if(_library MATCHES "^-")
+      # Respect linker flags as-is (required by MKL)
+      list(APPEND _libraries "${_library}")
+    else()
+      string(REGEX REPLACE "[^A-Za-z0-9]" "_" _lib_var "${_library}")
+      string(APPEND _combined_name "_${_lib_var}")
+      if(NOT "${_deps}" STREQUAL "")
+        string(APPEND _combined_name "_deps")
+      endif()
+      if(_libraries_work)
+        find_library(${_prefix}_${_lib_var}_LIBRARY
+          NAMES ${_library}
+          NAMES_PER_DIR
+          PATHS ${_extaddlibdir}
+          PATH_SUFFIXES ${_subdirs}
+        )
+        mark_as_advanced(${_prefix}_${_lib_var}_LIBRARY)
+        list(APPEND _libraries ${${_prefix}_${_lib_var}_LIBRARY})
+        set(_libraries_work ${${_prefix}_${_lib_var}_LIBRARY})
+      endif()
+    endif()
+  endforeach()
+
+  foreach(_flag ${_flags})
+    string(REGEX REPLACE "[^A-Za-z0-9]" "_" _flag_var "${_flag}")
+    string(APPEND _combined_name "_${_flag_var}")
+  endforeach()
+  if(_libraries_work)
+    # Test this combination of libraries.
+    set(CMAKE_REQUIRED_LIBRARIES ${_flags} ${_libraries} ${_deps})
+    set(CMAKE_REQUIRED_QUIET ${BLAS_FIND_QUIETLY})
+    if(CMAKE_Fortran_COMPILER_LOADED)
+      check_fortran_function_exists("${_name}" ${_prefix}${_combined_name}_WORKS)
+    else()
+      check_function_exists("${_name}_" ${_prefix}${_combined_name}_WORKS)
+    endif()
+    set(CMAKE_REQUIRED_LIBRARIES)
+    set(_libraries_work ${${_prefix}${_combined_name}_WORKS})
+  endif()
+
+  if(_libraries_work)
+    if("${_list}" STREQUAL "")
+      set(_libraries "${LIBRARIES}-PLACEHOLDER-FOR-EMPTY-LIBRARIES")
+    else()
+      list(APPEND _libraries ${_deps})
+    endif()
+  else()
+    set(_libraries FALSE)
+  endif()
+  set(${LIBRARIES} "${_libraries}" PARENT_SCOPE)
+endfunction()
+
+set(BLAS_LINKER_FLAGS)
+set(BLAS_LIBRARIES)
+set(BLAS95_LIBRARIES)
+set(_blas_fphsa_req_var BLAS_LIBRARIES)
+if(NOT $ENV{BLA_VENDOR} STREQUAL "")
+  set(BLA_VENDOR $ENV{BLA_VENDOR})
+else()
+  if(NOT BLA_VENDOR)
+    set(BLA_VENDOR "All")
+  endif()
+endif()
+
+if(NOT BLA_SIZEOF_INTEGER)
+  # in the reality we do not know which API of BLAS/LAPACK is masked in library
+  set(_blas_sizeof_integer "ANY")
+elseif((BLA_SIZEOF_INTEGER STREQUAL "ANY") OR
+       (BLA_SIZEOF_INTEGER STREQUAL "4") OR
+       (BLA_SIZEOF_INTEGER STREQUAL "8"))
+  set(_blas_sizeof_integer ${BLA_SIZEOF_INTEGER})
+else()
+  message(FATAL_ERROR "BLA_SIZEOF_INTEGER can have only <no value>, ANY, 4, or 8 values")
+endif()
+
+# Implicitly linked BLAS libraries?
+if(BLA_VENDOR STREQUAL "All")
+  if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      ""
+      ""
+      ""
+      ""
+      ""
+      )
+  endif()
+  if(BLAS_WORKS)
+    # Give a more helpful "found" message
+    set(BLAS_WORKS "implicitly linked")
+    set(_blas_fphsa_req_var BLAS_WORKS)
+  endif()
+endif()
+
+# BLAS in the Intel MKL 10+ library?
+if(BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
+  if(NOT BLAS_LIBRARIES)
+    if(CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED)
+      # System-specific settings
+      if(WIN32)
+        if(BLA_STATIC)
+          set(BLAS_mkl_DLL_SUFFIX "")
+        else()
+          set(BLAS_mkl_DLL_SUFFIX "_dll")
+        endif()
+      else()
+        if(BLA_STATIC)
+          set(BLAS_mkl_START_GROUP "-Wl,--start-group")
+          set(BLAS_mkl_END_GROUP "-Wl,--end-group")
+        else()
+          set(BLAS_mkl_START_GROUP "")
+          set(BLAS_mkl_END_GROUP "")
+        endif()
+        # Switch to GNU Fortran support layer if needed (but not on Apple, where MKL does not provide it)
+        if(CMAKE_Fortran_COMPILER_LOADED AND CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" AND NOT APPLE)
+            set(BLAS_mkl_INTFACE "gf")
+            set(BLAS_mkl_THREADING "gnu")
+            set(BLAS_mkl_OMP "gomp")
+        else()
+            set(BLAS_mkl_INTFACE "intel")
+            set(BLAS_mkl_THREADING "intel")
+            set(BLAS_mkl_OMP "iomp5")
+        endif()
+        set(BLAS_mkl_LM "-lm")
+        set(BLAS_mkl_LDL "-ldl")
+      endif()
+
+      if(BLAS_FIND_QUIETLY OR NOT BLAS_FIND_REQUIRED)
+        find_package(Threads)
+      else()
+        find_package(Threads REQUIRED)
+      endif()
+
+      if(_blas_sizeof_integer EQUAL 8)
+        set(BLAS_mkl_ILP_MODE "ilp64")
+      elseif(_blas_sizeof_integer EQUAL 4)
+        set(BLAS_mkl_ILP_MODE "lp64")
+      else()
+        if(BLA_VENDOR MATCHES "_64ilp")
+          set(BLAS_mkl_ILP_MODE "ilp64")
+        else()
+          set(BLAS_mkl_ILP_MODE "lp64")
+        endif()
+      endif()
+
+      set(BLAS_SEARCH_LIBS "")
+
+      if(BLA_F95)
+        set(BLAS_mkl_SEARCH_SYMBOL "sgemm_f95")
+        set(_BLAS_LIBRARIES BLAS95_LIBRARIES)
+        if(WIN32)
+          # Find the main file (32-bit or 64-bit)
+          set(BLAS_SEARCH_LIBS_WIN_MAIN "")
+          if(BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
+            list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
+              "mkl_blas95${BLAS_mkl_DLL_SUFFIX} mkl_intel_c${BLAS_mkl_DLL_SUFFIX}")
+          endif()
+
+          if(BLA_VENDOR MATCHES "^Intel10_64i?lp" OR BLA_VENDOR STREQUAL "All")
+            list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
+              "mkl_blas95_${BLAS_mkl_ILP_MODE}${BLAS_mkl_DLL_SUFFIX} mkl_intel_${BLAS_mkl_ILP_MODE}${BLAS_mkl_DLL_SUFFIX}")
+          endif()
+
+          # Add threading/sequential libs
+          set(BLAS_SEARCH_LIBS_WIN_THREAD "")
+          if(BLA_VENDOR MATCHES "^Intel10_64i?lp$" OR BLA_VENDOR STREQUAL "All")
+            # old version
+            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
+              "libguide40 mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
+            # mkl >= 10.3
+            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
+              "libiomp5md mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
+          endif()
+          if(BLA_VENDOR MATCHES "^Intel10_64i?lp_seq$" OR BLA_VENDOR STREQUAL "All")
+            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
+              "mkl_sequential${BLAS_mkl_DLL_SUFFIX}")
+          endif()
+
+          # Cartesian product of the above
+          foreach(MAIN ${BLAS_SEARCH_LIBS_WIN_MAIN})
+            foreach(THREAD ${BLAS_SEARCH_LIBS_WIN_THREAD})
+              list(APPEND BLAS_SEARCH_LIBS
+                "${MAIN} ${THREAD} mkl_core${BLAS_mkl_DLL_SUFFIX}")
+            endforeach()
+          endforeach()
+        else()
+          if(BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
+            # old version
+            list(APPEND BLAS_SEARCH_LIBS
+              "mkl_blas95 mkl_${BLAS_mkl_INTFACE} mkl_${BLAS_mkl_THREADING}_thread mkl_core guide")
+
+            # mkl >= 10.3
+            list(APPEND BLAS_SEARCH_LIBS
+              "${BLAS_mkl_START_GROUP} mkl_blas95 mkl_${BLAS_mkl_INTFACE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_END_GROUP} ${BLAS_mkl_OMP}")
+          endif()
+          if(BLA_VENDOR MATCHES "^Intel10_64i?lp$" OR BLA_VENDOR STREQUAL "All")
+            # old version
+            list(APPEND BLAS_SEARCH_LIBS
+              "mkl_blas95 mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_THREADING}_thread mkl_core guide")
+
+            # mkl >= 10.3
+            list(APPEND BLAS_SEARCH_LIBS
+              "${BLAS_mkl_START_GROUP} mkl_blas95_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_END_GROUP} ${BLAS_mkl_OMP}")
+          endif()
+          if(BLA_VENDOR MATCHES "^Intel10_64i?lp_seq$" OR BLA_VENDOR STREQUAL "All")
+            list(APPEND BLAS_SEARCH_LIBS
+              "${BLAS_mkl_START_GROUP} mkl_blas95_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_sequential mkl_core ${BLAS_mkl_END_GROUP}")
+          endif()
+        endif()
+      else()
+        set(BLAS_mkl_SEARCH_SYMBOL sgemm)
+        set(_BLAS_LIBRARIES BLAS_LIBRARIES)
+        if(WIN32)
+          # Find the main file (32-bit or 64-bit)
+          set(BLAS_SEARCH_LIBS_WIN_MAIN "")
+          if(BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
+            list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
+              "mkl_intel_c${BLAS_mkl_DLL_SUFFIX}")
+          endif()
+          if(BLA_VENDOR MATCHES "^Intel10_64i?lp" OR BLA_VENDOR STREQUAL "All")
+            list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
+              "mkl_intel_${BLAS_mkl_ILP_MODE}${BLAS_mkl_DLL_SUFFIX}")
+          endif()
+
+          # Add threading/sequential libs
+          set(BLAS_SEARCH_LIBS_WIN_THREAD "")
+          if(BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
+            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
+              "libiomp5md mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
+          endif()
+          if(BLA_VENDOR MATCHES "^Intel10_64i?lp$" OR BLA_VENDOR STREQUAL "All")
+            # old version
+            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
+              "libguide40 mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
+            # mkl >= 10.3
+            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
+              "libiomp5md mkl_intel_thread${BLAS_mkl_DLL_SUFFIX}")
+          endif()
+          if(BLA_VENDOR MATCHES "^Intel10_64i?lp_seq$" OR BLA_VENDOR STREQUAL "All")
+            list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
+              "mkl_sequential${BLAS_mkl_DLL_SUFFIX}")
+          endif()
+
+          # Cartesian product of the above
+          foreach(MAIN ${BLAS_SEARCH_LIBS_WIN_MAIN})
+            foreach(THREAD ${BLAS_SEARCH_LIBS_WIN_THREAD})
+              list(APPEND BLAS_SEARCH_LIBS
+                "${MAIN} ${THREAD} mkl_core${BLAS_mkl_DLL_SUFFIX}")
+            endforeach()
+          endforeach()
+        else()
+          if(BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All")
+            # old version
+            list(APPEND BLAS_SEARCH_LIBS
+              "mkl_${BLAS_mkl_INTFACE} mkl_${BLAS_mkl_THREADING}_thread mkl_core guide")
+
+            # mkl >= 10.3
+            list(APPEND BLAS_SEARCH_LIBS
+              "${BLAS_mkl_START_GROUP} mkl_${BLAS_mkl_INTFACE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_END_GROUP} ${BLAS_mkl_OMP}")
+          endif()
+          if(BLA_VENDOR MATCHES "^Intel10_64i?lp$" OR BLA_VENDOR STREQUAL "All")
+            # old version
+            list(APPEND BLAS_SEARCH_LIBS
+              "mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_THREADING}_thread mkl_core guide")
+
+            # mkl >= 10.3
+            list(APPEND BLAS_SEARCH_LIBS
+              "${BLAS_mkl_START_GROUP} mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_END_GROUP} ${BLAS_mkl_OMP}")
+          endif()
+          if(BLA_VENDOR MATCHES "^Intel10_64i?lp_seq$" OR BLA_VENDOR STREQUAL "All")
+            list(APPEND BLAS_SEARCH_LIBS
+              "${BLAS_mkl_START_GROUP} mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_sequential mkl_core ${BLAS_mkl_END_GROUP}")
+          endif()
+
+          #older versions of intel mkl libs
+          if(BLA_VENDOR STREQUAL "Intel" OR BLA_VENDOR STREQUAL "All")
+            list(APPEND BLAS_SEARCH_LIBS
+              "mkl")
+            list(APPEND BLAS_SEARCH_LIBS
+              "mkl_ia32")
+            list(APPEND BLAS_SEARCH_LIBS
+              "mkl_em64t")
+          endif()
+        endif()
+      endif()
+
+      if(BLA_VENDOR MATCHES "^Intel10_64_dyn$" OR BLA_VENDOR STREQUAL "All")
+        # mkl >= 10.3 with single dynamic library
+        list(APPEND BLAS_SEARCH_LIBS
+          "mkl_rt")
+      endif()
+
+      # MKL uses a multitude of partially platform-specific subdirectories:
+      if(BLA_VENDOR STREQUAL "Intel10_32")
+        set(BLAS_mkl_ARCH_NAME "ia32")
+      else()
+        set(BLAS_mkl_ARCH_NAME "intel64")
+      endif()
+      if(WIN32)
+        set(BLAS_mkl_OS_NAME "win")
+      elseif(APPLE)
+        set(BLAS_mkl_OS_NAME "mac")
+      else()
+        set(BLAS_mkl_OS_NAME "lin")
+      endif()
+      if(DEFINED ENV{MKLROOT})
+        file(TO_CMAKE_PATH "$ENV{MKLROOT}" BLAS_mkl_MKLROOT)
+        # If MKLROOT points to the subdirectory 'mkl', use the parent directory instead
+        # so we can better detect other relevant libraries in 'compiler' or 'tbb':
+        get_filename_component(BLAS_mkl_MKLROOT_LAST_DIR "${BLAS_mkl_MKLROOT}" NAME)
+        if(BLAS_mkl_MKLROOT_LAST_DIR STREQUAL "mkl")
+            get_filename_component(BLAS_mkl_MKLROOT "${BLAS_mkl_MKLROOT}" DIRECTORY)
+        endif()
+      endif()
+      set(BLAS_mkl_LIB_PATH_SUFFIXES
+          "compiler/lib" "compiler/lib/${BLAS_mkl_ARCH_NAME}_${BLAS_mkl_OS_NAME}"
+          "compiler/lib/${BLAS_mkl_ARCH_NAME}"
+          "mkl/lib" "mkl/lib/${BLAS_mkl_ARCH_NAME}_${BLAS_mkl_OS_NAME}"
+          "mkl/lib/${BLAS_mkl_ARCH_NAME}"
+          "lib" "lib/${BLAS_mkl_ARCH_NAME}_${BLAS_mkl_OS_NAME}"
+          "lib/${BLAS_mkl_ARCH_NAME}"
+          )
+
+      foreach(_search ${BLAS_SEARCH_LIBS})
+        string(REPLACE " " ";" _search ${_search})
+        if(NOT ${_BLAS_LIBRARIES})
+          check_blas_libraries(
+            ${_BLAS_LIBRARIES}
+            BLAS
+            ${BLAS_mkl_SEARCH_SYMBOL}
+            ""
+            "${_search}"
+            "${CMAKE_THREAD_LIBS_INIT};${BLAS_mkl_LM};${BLAS_mkl_LDL}"
+            "${BLAS_mkl_MKLROOT}"
+            "${BLAS_mkl_LIB_PATH_SUFFIXES}"
+            )
+        endif()
+      endforeach()
+
+      unset(_search)
+      unset(BLAS_mkl_ILP_MODE)
+      unset(BLAS_mkl_INTFACE)
+      unset(BLAS_mkl_THREADING)
+      unset(BLAS_mkl_OMP)
+      unset(BLAS_mkl_DLL_SUFFIX)
+      unset(BLAS_mkl_LM)
+      unset(BLAS_mkl_LDL)
+      unset(BLAS_mkl_MKLROOT)
+      unset(BLAS_mkl_MKLROOT_LAST_DIR)
+      unset(BLAS_mkl_ARCH_NAME)
+      unset(BLAS_mkl_OS_NAME)
+      unset(BLAS_mkl_LIB_PATH_SUFFIXES)
+    endif()
+  endif()
+endif()
+
+if(BLA_F95)
+  find_package_handle_standard_args(BLAS REQUIRED_VARS BLAS95_LIBRARIES)
+  set(BLAS95_FOUND ${BLAS_FOUND})
+  if(BLAS_FOUND)
+    set(BLAS_LIBRARIES "${BLAS95_LIBRARIES}")
+  endif()
+endif()
+
+# gotoblas? (http://www.tacc.utexas.edu/tacc-projects/gotoblas2)
+if(BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All")
+  if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      ""
+      "goto2"
+      ""
+      ""
+      ""
+      )
+  endif()
+endif()
+
+# FlexiBLAS? (http://www.mpi-magdeburg.mpg.de/mpcsc/software/FlexiBLAS/)
+if(BLA_VENDOR STREQUAL "FlexiBLAS" OR BLA_VENDOR STREQUAL "All")
+  set(_blas_flexiblas_lib "flexiblas")
+
+  if(_blas_sizeof_integer EQUAL 8)
+    string(APPEND _blas_flexiblas_lib "64")
+  endif()
+
+  if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      ""
+      "${_blas_flexiblas_lib}"
+      ""
+      ""
+      ""
+      )
+  endif()
+
+  unset(_blas_flexiblas_lib)
+endif()
+
+# OpenBLAS? (http://www.openblas.net)
+if(BLA_VENDOR STREQUAL "OpenBLAS" OR BLA_VENDOR STREQUAL "All")
+  set(_blas_openblas_lib "openblas")
+
+  if(_blas_sizeof_integer EQUAL 8)
+    string(APPEND _blas_openblas_lib "64")
+  endif()
+
+  if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      ""
+      "${_blas_openblas_lib}"
+      ""
+      ""
+      ""
+      )
+  endif()
+  if(NOT BLAS_LIBRARIES AND (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED))
+    if(BLAS_FIND_QUIETLY OR NOT BLAS_FIND_REQUIRED)
+      find_package(Threads)
+    else()
+      find_package(Threads REQUIRED)
+    endif()
+    set(_threadlibs "${CMAKE_THREAD_LIBS_INIT}")
+    if(BLA_STATIC)
+      if (CMAKE_C_COMPILER_LOADED)
+        find_package(OpenMP COMPONENTS C)
+        list(PREPEND _threadlibs "${OpenMP_C_LIBRARIES}")
+      elseif(CMAKE_CXX_COMPILER_LOADED)
+        find_package(OpenMP COMPONENTS CXX)
+        list(PREPEND _threadlibs "${OpenMP_CXX_LIBRARIES}")
+      endif()
+    endif()
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      ""
+      "${_blas_openblas_lib}"
+      "${_threadlibs}"
+      ""
+      ""
+      )
+    unset(_threadlibs)
+  endif()
+
+  unset(_blas_openblas_lib)
+endif()
+
+# ArmPL blas library? (https://developer.arm.com/tools-and-software/server-and-hpc/compile/arm-compiler-for-linux/arm-performance-libraries)
+if(BLA_VENDOR MATCHES "Arm" OR BLA_VENDOR STREQUAL "All")
+
+   # Check for 64bit Integer support
+  if(_blas_sizeof_integer EQUAL 8)
+    set(_blas_armpl_lib "armpl_ilp64")
+  elseif(_blas_sizeof_integer EQUAL 4)
+    set(_blas_armpl_lib "armpl_lp64")
+  else()
+    if(BLA_VENDOR MATCHES "_ilp64")
+      set(_blas_armpl_lib "armpl_ilp64")
+    else()
+      set(_blas_armpl_lib "armpl_lp64")
+    endif()
+  endif()
+
+   # Check for OpenMP support, VIA BLA_VENDOR of Arm_mp or Arm_ipl64_mp
+   if(BLA_VENDOR MATCHES "_mp")
+     string(APPEND _blas_armpl_lib "_mp")
+   endif()
+
+   if(NOT BLAS_LIBRARIES)
+     check_blas_libraries(
+       BLAS_LIBRARIES
+       BLAS
+       sgemm
+       ""
+       "${_blas_armpl_lib}"
+       ""
+       ""
+       ""
+       )
+  endif()
+  unset(_blas_armpl_lib)
+endif()
+
+# FLAME's blis library? (https://github.com/flame/blis)
+if(BLA_VENDOR STREQUAL "FLAME" OR BLA_VENDOR STREQUAL "All")
+  set(_blas_flame_lib "blis")
+
+  if(_blas_sizeof_integer EQUAL 8)
+    string(APPEND _blas_flame_lib "64")
+  endif()
+
+  if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      ""
+      "${_blas_flame_lib}"
+      ""
+      ""
+      ""
+      )
+  endif()
+
+  unset(_blas_flame_lib)
+endif()
+
+# BLAS in the ATLAS library? (http://math-atlas.sourceforge.net/)
+if(BLA_VENDOR STREQUAL "ATLAS" OR BLA_VENDOR STREQUAL "All")
+  if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      dgemm
+      ""
+      "blas;f77blas;atlas"
+      ""
+      ""
+      ""
+      )
+  endif()
+endif()
+
+# BLAS in PhiPACK libraries? (requires generic BLAS lib, too)
+if(BLA_VENDOR STREQUAL "PhiPACK" OR BLA_VENDOR STREQUAL "All")
+  if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      ""
+      "sgemm;dgemm;blas"
+      ""
+      ""
+      ""
+      )
+  endif()
+endif()
+
+# BLAS in Alpha CXML library?
+if(BLA_VENDOR STREQUAL "CXML" OR BLA_VENDOR STREQUAL "All")
+  if(_blas_sizeof_integer EQUAL 8)
+    if(BLA_VENDOR STREQUAL "CXML")
+      message(FATAL_ERROR "CXML does not support Int64 type")
+    endif()
+  else()
+    if(NOT BLAS_LIBRARIES)
+      check_blas_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        sgemm
+        ""
+        "cxml"
+        ""
+        ""
+        ""
+        )
+    endif()
+  endif()
+endif()
+
+# BLAS in Alpha DXML library? (now called CXML, see above)
+if(BLA_VENDOR STREQUAL "DXML" OR BLA_VENDOR STREQUAL "All")
+  if(_blas_sizeof_integer EQUAL 8)
+    if(BLA_VENDOR STREQUAL "DXML")
+      message(FATAL_ERROR "DXML does not support Int64 type")
+    endif()
+  else()
+    if(NOT BLAS_LIBRARIES)
+      check_blas_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        sgemm
+        ""
+        "dxml"
+        ""
+        ""
+        ""
+        )
+    endif()
+  endif()
+endif()
+
+# BLAS in Sun Performance library?
+if(BLA_VENDOR STREQUAL "SunPerf" OR BLA_VENDOR STREQUAL "All")
+  if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      "-xlic_lib=sunperf"
+      "sunperf;sunmath"
+      ""
+      ""
+      ""
+      )
+    if(BLAS_LIBRARIES)
+      set(BLAS_LINKER_FLAGS "-xlic_lib=sunperf")
+    endif()
+  endif()
+endif()
+
+# BLAS in SCSL library?  (SGI/Cray Scientific Library)
+if(BLA_VENDOR MATCHES "SCSL" OR BLA_VENDOR STREQUAL "All")
+  set(_blas_scsl_lib "scs")
+
+  if(_blas_sizeof_integer EQUAL 8)
+    string(APPEND _blas_scsl_lib "_i8")
+  endif()
+  if(BLA_VENDOR MATCHES "_mp")
+    string(APPEND _blas_scsl_lib "_mp")
+  endif()
+
+  if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      ""
+      "${_blas_scsl_lib}"
+      ""
+      ""
+      ""
+      )
+  endif()
+
+  unset(_blas_scsl_lib)
+endif()
+
+# BLAS in SGIMATH library?
+if(BLA_VENDOR STREQUAL "SGIMATH" OR BLA_VENDOR STREQUAL "All")
+  if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      ""
+      "complib.sgimath"
+      ""
+      ""
+      ""
+      )
+  endif()
+endif()
+
+# BLAS in IBM ESSL library?
+if(BLA_VENDOR MATCHES "IBMESSL" OR BLA_VENDOR STREQUAL "All")
+  set(_blas_essl_lib "essl")
+
+  if(BLA_VENDOR MATCHES "_SMP")
+    string(APPEND _blas_essl_lib "smp")
+  endif()
+  if(_blas_sizeof_integer EQUAL 8)
+    string(APPEND _blas_essl_lib "6464")
+  endif()
+
+  if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      ""
+      "${_blas_essl_lib}"
+      ""
+      ""
+      ""
+      )
+  endif()
+
+  unset(_blas_essl_lib)
+endif()
+
+# BLAS in acml library?
+if(BLA_VENDOR MATCHES "ACML" OR BLA_VENDOR STREQUAL "All")
+  if(((BLA_VENDOR STREQUAL "ACML") AND (NOT BLAS_ACML_LIB_DIRS)) OR
+    ((BLA_VENDOR STREQUAL "ACML_MP") AND (NOT BLAS_ACML_MP_LIB_DIRS)) OR
+    ((BLA_VENDOR STREQUAL "ACML_GPU") AND (NOT BLAS_ACML_GPU_LIB_DIRS))
+    )
+  # try to find acml in "standard" paths
+  if(WIN32)
+    file(GLOB _ACML_ROOT "C:/AMD/acml*/ACML-EULA.txt")
+  else()
+    file(GLOB _ACML_ROOT "/opt/acml*/ACML-EULA.txt")
+  endif()
+  if(WIN32)
+    file(GLOB _ACML_GPU_ROOT "C:/AMD/acml*/GPGPUexamples")
+  else()
+    file(GLOB _ACML_GPU_ROOT "/opt/acml*/GPGPUexamples")
+  endif()
+  list(GET _ACML_ROOT 0 _ACML_ROOT)
+  list(GET _ACML_GPU_ROOT 0 _ACML_GPU_ROOT)
+  if(_ACML_ROOT)
+    get_filename_component(_ACML_ROOT ${_ACML_ROOT} PATH)
+    if(_blas_sizeof_integer EQUAL 8)
+      set(_ACML_PATH_SUFFIX "_int64")
+    else()
+      set(_ACML_PATH_SUFFIX "")
+    endif()
+    if(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
+      set(_ACML_COMPILER32 "ifort32")
+      set(_ACML_COMPILER64 "ifort64")
+    elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "IntelLLVM")
+      # 32-bit not supported
+      set(_ACML_COMPILER64 "ifx")
+    elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "SunPro")
+      set(_ACML_COMPILER32 "sun32")
+      set(_ACML_COMPILER64 "sun64")
+    elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "PGI")
+      set(_ACML_COMPILER32 "pgi32")
+      if(WIN32)
+        set(_ACML_COMPILER64 "win64")
+      else()
+        set(_ACML_COMPILER64 "pgi64")
+      endif()
+    elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Open64")
+      # 32 bit builds not supported on Open64 but for code simplicity
+      # We'll just use the same directory twice
+      set(_ACML_COMPILER32 "open64_64")
+      set(_ACML_COMPILER64 "open64_64")
+    elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "NAG")
+      set(_ACML_COMPILER32 "nag32")
+      set(_ACML_COMPILER64 "nag64")
+    else()
+      set(_ACML_COMPILER32 "gfortran32")
+      set(_ACML_COMPILER64 "gfortran64")
+    endif()
+
+    if(BLA_VENDOR STREQUAL "ACML_MP")
+      set(_ACML_MP_LIB_DIRS
+        "${_ACML_ROOT}/${_ACML_COMPILER32}_mp${_ACML_PATH_SUFFIX}/lib"
+        "${_ACML_ROOT}/${_ACML_COMPILER64}_mp${_ACML_PATH_SUFFIX}/lib")
+    else()
+      set(_ACML_LIB_DIRS
+        "${_ACML_ROOT}/${_ACML_COMPILER32}${_ACML_PATH_SUFFIX}/lib"
+        "${_ACML_ROOT}/${_ACML_COMPILER64}${_ACML_PATH_SUFFIX}/lib")
+    endif()
+  endif()
+elseif(BLAS_${BLA_VENDOR}_LIB_DIRS)
+  set(_${BLA_VENDOR}_LIB_DIRS ${BLAS_${BLA_VENDOR}_LIB_DIRS})
+endif()
+
+if(BLA_VENDOR STREQUAL "ACML_MP")
+  foreach(BLAS_ACML_MP_LIB_DIRS ${_ACML_MP_LIB_DIRS})
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      "" "acml_mp;acml_mv" "" ${BLAS_ACML_MP_LIB_DIRS} ""
+      )
+    if(BLAS_LIBRARIES)
+      break()
+    endif()
+  endforeach()
+elseif(BLA_VENDOR STREQUAL "ACML_GPU")
+  foreach(BLAS_ACML_GPU_LIB_DIRS ${_ACML_GPU_LIB_DIRS})
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      "" "acml;acml_mv;CALBLAS" "" ${BLAS_ACML_GPU_LIB_DIRS} ""
+      )
+    if(BLAS_LIBRARIES)
+      break()
+    endif()
+  endforeach()
+else()
+  foreach(BLAS_ACML_LIB_DIRS ${_ACML_LIB_DIRS})
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      "" "acml;acml_mv" "" ${BLAS_ACML_LIB_DIRS} ""
+      )
+    if(BLAS_LIBRARIES)
+      break()
+    endif()
+  endforeach()
+endif()
+
+# Either acml or acml_mp should be in LD_LIBRARY_PATH but not both
+if(NOT BLAS_LIBRARIES)
+  check_blas_libraries(
+    BLAS_LIBRARIES
+    BLAS
+    sgemm
+    ""
+    "acml;acml_mv"
+    ""
+    ""
+    ""
+    )
+endif()
+if(NOT BLAS_LIBRARIES)
+  check_blas_libraries(
+    BLAS_LIBRARIES
+    BLAS
+    sgemm
+    ""
+    "acml_mp;acml_mv"
+    ""
+    ""
+    ""
+    )
+endif()
+if(NOT BLAS_LIBRARIES)
+  check_blas_libraries(
+    BLAS_LIBRARIES
+    BLAS
+    sgemm
+    ""
+    "acml;acml_mv;CALBLAS"
+    ""
+    ""
+    ""
+    )
+endif()
+endif() # ACML
+
+# Apple BLAS library?
+if(BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All")
+  if(_blas_sizeof_integer EQUAL 8)
+    if(BLA_VENDOR STREQUAL "Apple")
+      message(FATAL_ERROR "Accelerate Framework does not support Int64 type")
+    endif()
+  else()
+    if(NOT BLAS_LIBRARIES)
+      check_blas_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        dgemm
+        ""
+        "Accelerate"
+        ""
+        ""
+        ""
+        )
+    endif()
+  endif()
+endif()
+
+# Apple NAS (vecLib) library?
+if(BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All")
+  if(_blas_sizeof_integer EQUAL 8)
+    if(BLA_VENDOR STREQUAL "NAS")
+      message(FATAL_ERROR "Accelerate Framework does not support Int64 type")
+    endif()
+  else()
+    if(NOT BLAS_LIBRARIES)
+      check_blas_libraries(
+        BLAS_LIBRARIES
+        BLAS
+        dgemm
+        ""
+        "vecLib"
+        ""
+        ""
+        ""
+        )
+    endif()
+  endif()
+endif()
+
+# Elbrus Math Library?
+if(BLA_VENDOR MATCHES "EML" OR BLA_VENDOR STREQUAL "All")
+
+  set(_blas_eml_lib "eml")
+
+  if(_blas_sizeof_integer EQUAL 8)
+    string(APPEND _blas_eml_lib "_ilp64")
+  endif()
+  # Check for OpenMP support, VIA BLA_VENDOR of eml_mt
+  if(BLA_VENDOR MATCHES "_mt")
+    string(APPEND _blas_eml_lib "_mt")
+  endif()
+
+  if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      ""
+      "${_blas_eml_lib}"
+      ""
+      ""
+      ""
+      )
+  endif()
+  unset(_blas_eml_lib)
+endif()
+
+# Fujitsu SSL2 Library?
+if(NOT BLAS_LIBRARIES
+    AND (BLA_VENDOR MATCHES "^Fujitsu_SSL2" OR BLA_VENDOR STREQUAL "All"))
+  set(_blas_fjlapack_lib "fjlapack")
+  set(_blas_fjlapack_flags "-Kopenmp")
+
+  if(BLA_VENDOR MATCHES "BLAMP")
+    string(APPEND _blas_fjlapack_lib "ex")
+  endif()
+  if(BLA_VENDOR MATCHES "SVE")
+    string(APPEND _blas_fjlapack_lib "sve")
+  endif()
+  if(_blas_sizeof_integer EQUAL 8)
+    string(APPEND _blas_fjlapack_lib "_ilp64")
+  endif()
+
+  if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      "${_blas_fjlapack_flags}"
+      "${_blas_fjlapack_lib}"
+      ""
+      ""
+      ""
+      )
+    if(BLAS_LIBRARIES)
+      set(BLAS_LINKER_FLAGS ${_blas_fjlapack_flags})
+    endif()
+  endif()
+
+  unset(_blas_fjlapack_flags)
+  unset(_blas_fjlapack_lib)
+endif()
+
+# BLAS in nVidia HPC SDK? (https://developer.nvidia.com/hpc-sdk)
+if(BLA_VENDOR STREQUAL "NVHPC" OR BLA_VENDOR STREQUAL "All")
+  set(_blas_nvhpc_lib "blas")
+
+  if(_blas_sizeof_integer EQUAL 8)
+    string(APPEND _blas_nvhpc_lib "_ilp64")
+  elseif(_blas_sizeof_integer EQUAL 4)
+    string(APPEND _blas_nvhpc_lib "_lp64")
+  endif()
+
+  if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      ""
+      "${_blas_nvhpc_lib}"
+      ""
+      ""
+      ""
+      )
+  endif()
+
+  # an additional check for NVHPC 2020
+  # which does not have differentiation
+  # between lp64 and ilp64 modes
+  if(NOT BLAS_LIBRARIES AND NOT _blas_sizeof_integer EQUAL 8)
+    set(_blas_nvhpc_lib "blas")
+
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      ""
+      "${_blas_nvhpc_lib}"
+      ""
+      ""
+      ""
+      )
+  endif()
+
+  unset(_blas_nvhpc_lib)
+endif()
+
+# Generic BLAS library?
+if(BLA_VENDOR STREQUAL "Generic" OR
+   BLA_VENDOR STREQUAL "All")
+  set(_blas_generic_lib "blas")
+
+  if(_blas_sizeof_integer EQUAL 8)
+    string(APPEND _blas_generic_lib "64")
+  endif()
+
+  if(NOT BLAS_LIBRARIES)
+    check_blas_libraries(
+      BLAS_LIBRARIES
+      BLAS
+      sgemm
+      ""
+      "${_blas_generic_lib}"
+      ""
+      ""
+      ""
+      )
+  endif()
+
+  unset(_blas_generic_lib)
+endif()
+
+# On compilers that implicitly link BLAS (i.e. CrayPrgEnv) we used a
+# placeholder for empty BLAS_LIBRARIES to get through our logic above.
+if(BLAS_LIBRARIES STREQUAL "BLAS_LIBRARIES-PLACEHOLDER-FOR-EMPTY-LIBRARIES")
+  set(BLAS_LIBRARIES "")
+endif()
+
+if(NOT BLA_F95)
+  find_package_handle_standard_args(BLAS REQUIRED_VARS ${_blas_fphsa_req_var})
+endif()
+
+_add_blas_target()
+unset(_blas_fphsa_req_var)
+unset(_blas_sizeof_integer)
+unset(_BLAS_LIBRARIES)
diff --git a/share/cmake-3.22/Modules/FindBZip2.cmake b/share/cmake-3.22/Modules/FindBZip2.cmake
new file mode 100644
index 0000000..355c4bb
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindBZip2.cmake
@@ -0,0 +1,107 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindBZip2
+---------
+
+Try to find BZip2
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.12
+
+This module defines :prop_tgt:`IMPORTED` target ``BZip2::BZip2``, if
+BZip2 has been found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module defines the following variables:
+
+``BZIP2_FOUND``
+  system has BZip2
+``BZIP2_INCLUDE_DIRS``
+  .. versionadded:: 3.12
+    the BZip2 include directories
+``BZIP2_LIBRARIES``
+  Link these to use BZip2
+``BZIP2_NEED_PREFIX``
+  this is set if the functions are prefixed with ``BZ2_``
+``BZIP2_VERSION_STRING``
+  the version of BZip2 found
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set:
+
+``BZIP2_INCLUDE_DIR``
+  the BZip2 include directory
+#]=======================================================================]
+
+set(_BZIP2_PATHS PATHS
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Bzip2;InstallPath]"
+  )
+
+find_path(BZIP2_INCLUDE_DIR bzlib.h ${_BZIP2_PATHS} PATH_SUFFIXES include)
+
+if (NOT BZIP2_LIBRARIES)
+    find_library(BZIP2_LIBRARY_RELEASE NAMES bz2 bzip2 libbz2 libbzip2 NAMES_PER_DIR ${_BZIP2_PATHS} PATH_SUFFIXES lib)
+    find_library(BZIP2_LIBRARY_DEBUG NAMES bz2d bzip2d libbz2d libbzip2d NAMES_PER_DIR ${_BZIP2_PATHS} PATH_SUFFIXES lib)
+
+    include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+    SELECT_LIBRARY_CONFIGURATIONS(BZIP2)
+else ()
+    file(TO_CMAKE_PATH "${BZIP2_LIBRARIES}" BZIP2_LIBRARIES)
+endif ()
+
+if (BZIP2_INCLUDE_DIR AND EXISTS "${BZIP2_INCLUDE_DIR}/bzlib.h")
+    file(STRINGS "${BZIP2_INCLUDE_DIR}/bzlib.h" BZLIB_H REGEX "bzip2/libbzip2 version [0-9]+\\.[^ ]+ of [0-9]+ ")
+    string(REGEX REPLACE ".* bzip2/libbzip2 version ([0-9]+\\.[^ ]+) of [0-9]+ .*" "\\1" BZIP2_VERSION_STRING "${BZLIB_H}")
+endif ()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(BZip2
+                                  REQUIRED_VARS BZIP2_LIBRARIES BZIP2_INCLUDE_DIR
+                                  VERSION_VAR BZIP2_VERSION_STRING)
+
+if (BZIP2_FOUND)
+  set(BZIP2_INCLUDE_DIRS ${BZIP2_INCLUDE_DIR})
+  include(${CMAKE_CURRENT_LIST_DIR}/CheckSymbolExists.cmake)
+  include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
+  cmake_push_check_state()
+  set(CMAKE_REQUIRED_QUIET ${BZip2_FIND_QUIETLY})
+  set(CMAKE_REQUIRED_INCLUDES ${BZIP2_INCLUDE_DIR})
+  set(CMAKE_REQUIRED_LIBRARIES ${BZIP2_LIBRARIES})
+  CHECK_SYMBOL_EXISTS(BZ2_bzCompressInit "bzlib.h" BZIP2_NEED_PREFIX)
+  cmake_pop_check_state()
+
+  if(NOT TARGET BZip2::BZip2)
+    add_library(BZip2::BZip2 UNKNOWN IMPORTED)
+    set_target_properties(BZip2::BZip2 PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${BZIP2_INCLUDE_DIRS}")
+
+    if(BZIP2_LIBRARY_RELEASE)
+      set_property(TARGET BZip2::BZip2 APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS RELEASE)
+      set_target_properties(BZip2::BZip2 PROPERTIES
+        IMPORTED_LOCATION_RELEASE "${BZIP2_LIBRARY_RELEASE}")
+    endif()
+
+    if(BZIP2_LIBRARY_DEBUG)
+      set_property(TARGET BZip2::BZip2 APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS DEBUG)
+      set_target_properties(BZip2::BZip2 PROPERTIES
+        IMPORTED_LOCATION_DEBUG "${BZIP2_LIBRARY_DEBUG}")
+    endif()
+
+    if(NOT BZIP2_LIBRARY_RELEASE AND NOT BZIP2_LIBRARY_DEBUG)
+      set_property(TARGET BZip2::BZip2 APPEND PROPERTY
+        IMPORTED_LOCATION "${BZIP2_LIBRARY}")
+    endif()
+  endif()
+endif ()
+
+mark_as_advanced(BZIP2_INCLUDE_DIR)
diff --git a/share/cmake-3.18/Modules/FindBacktrace.cmake b/share/cmake-3.22/Modules/FindBacktrace.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindBacktrace.cmake
rename to share/cmake-3.22/Modules/FindBacktrace.cmake
diff --git a/share/cmake-3.22/Modules/FindBoost.cmake b/share/cmake-3.22/Modules/FindBoost.cmake
new file mode 100644
index 0000000..38faca2
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindBoost.cmake
@@ -0,0 +1,2573 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindBoost
+---------
+
+Find Boost include dirs and libraries
+
+Use this module by invoking :command:`find_package` with the form:
+
+.. code-block:: cmake
+
+  find_package(Boost
+    [version] [EXACT]      # Minimum or EXACT version e.g. 1.67.0
+    [REQUIRED]             # Fail with error if Boost is not found
+    [COMPONENTS <libs>...] # Boost libraries by their canonical name
+                           # e.g. "date_time" for "libboost_date_time"
+    [OPTIONAL_COMPONENTS <libs>...]
+                           # Optional Boost libraries by their canonical name)
+    )                      # e.g. "date_time" for "libboost_date_time"
+
+This module finds headers and requested component libraries OR a CMake
+package configuration file provided by a "Boost CMake" build.  For the
+latter case skip to the :ref:`Boost CMake` section below.
+
+.. versionadded:: 3.7
+  ``bzip2`` and ``zlib`` components (Windows only).
+
+.. versionadded:: 3.11
+  The ``OPTIONAL_COMPONENTS`` option.
+
+.. versionadded:: 3.13
+  ``stacktrace_*`` components.
+
+.. versionadded:: 3.19
+  ``bzip2`` and ``zlib`` components on all platforms.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module defines the following variables:
+
+``Boost_FOUND``
+  True if headers and requested libraries were found.
+
+``Boost_INCLUDE_DIRS``
+  Boost include directories.
+
+``Boost_LIBRARY_DIRS``
+  Link directories for Boost libraries.
+
+``Boost_LIBRARIES``
+  Boost component libraries to be linked.
+
+``Boost_<COMPONENT>_FOUND``
+  True if component ``<COMPONENT>`` was found (``<COMPONENT>`` name is upper-case).
+
+``Boost_<COMPONENT>_LIBRARY``
+  Libraries to link for component ``<COMPONENT>`` (may include
+  :command:`target_link_libraries` debug/optimized keywords).
+
+``Boost_VERSION_MACRO``
+  ``BOOST_VERSION`` value from ``boost/version.hpp``.
+
+``Boost_VERSION_STRING``
+  Boost version number in ``X.Y.Z`` format.
+
+``Boost_VERSION``
+  Boost version number in ``X.Y.Z`` format (same as ``Boost_VERSION_STRING``).
+
+  .. versionchanged:: 3.15
+    In previous CMake versions, this variable used the raw version string
+    from the Boost header (same as ``Boost_VERSION_MACRO``).
+    See policy :policy:`CMP0093`.
+
+``Boost_LIB_VERSION``
+  Version string appended to library filenames.
+
+``Boost_VERSION_MAJOR``, ``Boost_MAJOR_VERSION``
+  Boost major version number (``X`` in ``X.Y.Z``).
+
+``Boost_VERSION_MINOR``, ``Boost_MINOR_VERSION``
+  Boost minor version number (``Y`` in ``X.Y.Z``).
+
+``Boost_VERSION_PATCH``, ``Boost_SUBMINOR_VERSION``
+  Boost subminor version number (``Z`` in ``X.Y.Z``).
+
+``Boost_VERSION_COUNT``
+  Amount of version components (3).
+
+``Boost_LIB_DIAGNOSTIC_DEFINITIONS`` (Windows-specific)
+  Pass to :command:`add_definitions` to have diagnostic
+  information about Boost's automatic linking
+  displayed during compilation
+
+.. versionadded:: 3.15
+  The ``Boost_VERSION_<PART>`` variables.
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+Search results are saved persistently in CMake cache entries:
+
+``Boost_INCLUDE_DIR``
+  Directory containing Boost headers.
+
+``Boost_LIBRARY_DIR_RELEASE``
+  Directory containing release Boost libraries.
+
+``Boost_LIBRARY_DIR_DEBUG``
+  Directory containing debug Boost libraries.
+
+``Boost_<COMPONENT>_LIBRARY_DEBUG``
+  Component ``<COMPONENT>`` library debug variant.
+
+``Boost_<COMPONENT>_LIBRARY_RELEASE``
+  Component ``<COMPONENT>`` library release variant.
+
+.. versionadded:: 3.3
+  Per-configuration variables ``Boost_LIBRARY_DIR_RELEASE`` and
+  ``Boost_LIBRARY_DIR_DEBUG``.
+
+Hints
+^^^^^
+
+This module reads hints about search locations from variables:
+
+``BOOST_ROOT``, ``BOOSTROOT``
+  Preferred installation prefix.
+
+``BOOST_INCLUDEDIR``
+  Preferred include directory e.g. ``<prefix>/include``.
+
+``BOOST_LIBRARYDIR``
+  Preferred library directory e.g. ``<prefix>/lib``.
+
+``Boost_NO_SYSTEM_PATHS``
+  Set to ``ON`` to disable searching in locations not
+  specified by these hint variables. Default is ``OFF``.
+
+``Boost_ADDITIONAL_VERSIONS``
+  List of Boost versions not known to this module.
+  (Boost install locations may contain the version).
+
+Users may set these hints or results as ``CACHE`` entries.  Projects
+should not read these entries directly but instead use the above
+result variables.  Note that some hint names start in upper-case
+``BOOST``.  One may specify these as environment variables if they are
+not specified as CMake variables or cache entries.
+
+This module first searches for the Boost header files using the above
+hint variables (excluding ``BOOST_LIBRARYDIR``) and saves the result in
+``Boost_INCLUDE_DIR``.  Then it searches for requested component libraries
+using the above hints (excluding ``BOOST_INCLUDEDIR`` and
+``Boost_ADDITIONAL_VERSIONS``), "lib" directories near ``Boost_INCLUDE_DIR``,
+and the library name configuration settings below.  It saves the
+library directories in ``Boost_LIBRARY_DIR_DEBUG`` and
+``Boost_LIBRARY_DIR_RELEASE`` and individual library
+locations in ``Boost_<COMPONENT>_LIBRARY_DEBUG`` and ``Boost_<COMPONENT>_LIBRARY_RELEASE``.
+When one changes settings used by previous searches in the same build
+tree (excluding environment variables) this module discards previous
+search results affected by the changes and searches again.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.5
+
+This module defines the following :prop_tgt:`IMPORTED` targets:
+
+``Boost::boost``
+  Target for header-only dependencies. (Boost include directory).
+
+``Boost::headers``
+  .. versionadded:: 3.15
+    Alias for ``Boost::boost``.
+
+``Boost::<component>``
+  Target for specific component dependency (shared or static library);
+  ``<component>`` name is lower-case.
+
+``Boost::diagnostic_definitions``
+  Interface target to enable diagnostic information about Boost's automatic
+  linking during compilation (adds ``-DBOOST_LIB_DIAGNOSTIC``).
+
+``Boost::disable_autolinking``
+  Interface target to disable automatic linking with MSVC
+  (adds ``-DBOOST_ALL_NO_LIB``).
+
+``Boost::dynamic_linking``
+  Interface target to enable dynamic linking with MSVC
+  (adds ``-DBOOST_ALL_DYN_LINK``).
+
+Implicit dependencies such as ``Boost::filesystem`` requiring
+``Boost::system`` will be automatically detected and satisfied, even
+if system is not specified when using :command:`find_package` and if
+``Boost::system`` is not added to :command:`target_link_libraries`.  If using
+``Boost::thread``, then ``Threads::Threads`` will also be added automatically.
+
+It is important to note that the imported targets behave differently
+than variables created by this module: multiple calls to
+:command:`find_package(Boost)` in the same directory or sub-directories with
+different options (e.g. static or shared) will not override the
+values of the targets created by the first call.
+
+Other Variables
+^^^^^^^^^^^^^^^
+
+Boost libraries come in many variants encoded in their file name.
+Users or projects may tell this module which variant to find by
+setting variables:
+
+``Boost_USE_DEBUG_LIBS``
+  .. versionadded:: 3.10
+
+  Set to ``ON`` or ``OFF`` to specify whether to search and use the debug
+  libraries.  Default is ``ON``.
+
+``Boost_USE_RELEASE_LIBS``
+  .. versionadded:: 3.10
+
+  Set to ``ON`` or ``OFF`` to specify whether to search and use the release
+  libraries.  Default is ``ON``.
+
+``Boost_USE_MULTITHREADED``
+  Set to OFF to use the non-multithreaded libraries ("mt" tag). Default is
+  ``ON``.
+
+``Boost_USE_STATIC_LIBS``
+  Set to ON to force the use of the static libraries.  Default is ``OFF``.
+
+``Boost_USE_STATIC_RUNTIME``
+  Set to ``ON`` or ``OFF`` to specify whether to use libraries linked
+  statically to the C++ runtime ("s" tag).  Default is platform dependent.
+
+``Boost_USE_DEBUG_RUNTIME``
+  Set to ``ON`` or ``OFF`` to specify whether to use libraries linked to the
+  MS debug C++ runtime ("g" tag).  Default is ``ON``.
+
+``Boost_USE_DEBUG_PYTHON``
+  Set to ``ON`` to use libraries compiled with a debug Python build ("y"
+  tag).  Default is ``OFF``.
+
+``Boost_USE_STLPORT``
+  Set to ``ON`` to use libraries compiled with STLPort ("p" tag). Default is
+  ``OFF``.
+
+``Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS``
+  Set to ON to use libraries compiled with STLPort deprecated "native
+  iostreams" ("n" tag).  Default is ``OFF``.
+
+``Boost_COMPILER``
+  Set to the compiler-specific library suffix (e.g. ``-gcc43``).  Default is
+  auto-computed for the C++ compiler in use.
+
+  .. versionchanged:: 3.9
+    A list may be used if multiple compatible suffixes should be tested for,
+    in decreasing order of preference.
+
+``Boost_LIB_PREFIX``
+  .. versionadded:: 3.18
+
+  Set to the platform-specific library name prefix (e.g. ``lib``) used by
+  Boost static libs.  This is needed only on platforms where CMake does not
+  know the prefix by default.
+
+``Boost_ARCHITECTURE``
+  .. versionadded:: 3.13
+
+  Set to the architecture-specific library suffix (e.g. ``-x64``).
+  Default is auto-computed for the C++ compiler in use.
+
+``Boost_THREADAPI``
+  Suffix for ``thread`` component library name, such as ``pthread`` or
+  ``win32``.  Names with and without this suffix will both be tried.
+
+``Boost_NAMESPACE``
+  Alternate namespace used to build boost with e.g. if set to ``myboost``,
+  will search for ``myboost_thread`` instead of ``boost_thread``.
+
+Other variables one may set to control this module are:
+
+``Boost_DEBUG``
+  Set to ``ON`` to enable debug output from ``FindBoost``.
+  Please enable this before filing any bug report.
+
+``Boost_REALPATH``
+  Set to ``ON`` to resolve symlinks for discovered libraries to assist with
+  packaging.  For example, the "system" component library may be resolved to
+  ``/usr/lib/libboost_system.so.1.67.0`` instead of
+  ``/usr/lib/libboost_system.so``.  This does not affect linking and should
+  not be enabled unless the user needs this information.
+
+``Boost_LIBRARY_DIR``
+  Default value for ``Boost_LIBRARY_DIR_RELEASE`` and
+  ``Boost_LIBRARY_DIR_DEBUG``.
+
+``Boost_NO_WARN_NEW_VERSIONS``
+  .. versionadded:: 3.20
+
+  Set to ``ON`` to suppress the warning about unknown dependencies for new
+  Boost versions.
+
+On Visual Studio and Borland compilers Boost headers request automatic
+linking to corresponding libraries.  This requires matching libraries
+to be linked explicitly or available in the link library search path.
+In this case setting ``Boost_USE_STATIC_LIBS`` to ``OFF`` may not achieve
+dynamic linking.  Boost automatic linking typically requests static
+libraries with a few exceptions (such as ``Boost.Python``).  Use:
+
+.. code-block:: cmake
+
+  add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS})
+
+to ask Boost to report information about automatic linking requests.
+
+Examples
+^^^^^^^^
+
+Find Boost headers only:
+
+.. code-block:: cmake
+
+  find_package(Boost 1.36.0)
+  if(Boost_FOUND)
+    include_directories(${Boost_INCLUDE_DIRS})
+    add_executable(foo foo.cc)
+  endif()
+
+Find Boost libraries and use imported targets:
+
+.. code-block:: cmake
+
+  find_package(Boost 1.56 REQUIRED COMPONENTS
+               date_time filesystem iostreams)
+  add_executable(foo foo.cc)
+  target_link_libraries(foo Boost::date_time Boost::filesystem
+                            Boost::iostreams)
+
+Find Boost Python 3.6 libraries and use imported targets:
+
+.. code-block:: cmake
+
+  find_package(Boost 1.67 REQUIRED COMPONENTS
+               python36 numpy36)
+  add_executable(foo foo.cc)
+  target_link_libraries(foo Boost::python36 Boost::numpy36)
+
+Find Boost headers and some *static* (release only) libraries:
+
+.. code-block:: cmake
+
+  set(Boost_USE_STATIC_LIBS        ON)  # only find static libs
+  set(Boost_USE_DEBUG_LIBS        OFF)  # ignore debug libs and
+  set(Boost_USE_RELEASE_LIBS       ON)  # only find release libs
+  set(Boost_USE_MULTITHREADED      ON)
+  set(Boost_USE_STATIC_RUNTIME    OFF)
+  find_package(Boost 1.66.0 COMPONENTS date_time filesystem system ...)
+  if(Boost_FOUND)
+    include_directories(${Boost_INCLUDE_DIRS})
+    add_executable(foo foo.cc)
+    target_link_libraries(foo ${Boost_LIBRARIES})
+  endif()
+
+.. _`Boost CMake`:
+
+Boost CMake
+^^^^^^^^^^^
+
+If Boost was built using the boost-cmake project or from Boost 1.70.0 on
+it provides a package configuration file for use with find_package's config mode.
+This module looks for the package configuration file called
+``BoostConfig.cmake`` or ``boost-config.cmake`` and stores the result in
+``CACHE`` entry ``Boost_DIR``.  If found, the package configuration file is loaded
+and this module returns with no further action.  See documentation of
+the Boost CMake package configuration for details on what it provides.
+
+Set ``Boost_NO_BOOST_CMAKE`` to ``ON``, to disable the search for boost-cmake.
+#]=======================================================================]
+
+# The FPHSA helper provides standard way of reporting final search results to
+# the user including the version and component checks.
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+# Save project's policies
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+cmake_policy(SET CMP0102 NEW) # if mark_as_advanced(non_cache_var)
+
+function(_boost_get_existing_target component target_var)
+  set(names "${component}")
+  if(component MATCHES "^([a-z_]*)(python|numpy)([1-9])\\.?([0-9])?$")
+    # handle pythonXY and numpyXY versioned components and also python X.Y, mpi_python etc.
+    list(APPEND names
+      "${CMAKE_MATCH_1}${CMAKE_MATCH_2}" # python
+      "${CMAKE_MATCH_1}${CMAKE_MATCH_2}${CMAKE_MATCH_3}" # pythonX
+      "${CMAKE_MATCH_1}${CMAKE_MATCH_2}${CMAKE_MATCH_3}${CMAKE_MATCH_4}" #pythonXY
+    )
+  endif()
+  # https://github.com/boost-cmake/boost-cmake uses boost::file_system etc.
+  # So handle similar constructions of target names
+  string(TOLOWER "${component}" lower_component)
+  list(APPEND names "${lower_component}")
+  foreach(prefix Boost boost)
+    foreach(name IN LISTS names)
+      if(TARGET "${prefix}::${name}")
+        # The target may be an INTERFACE library that wraps around a single other
+        # target for compatibility.  Unwrap this layer so we can extract real info.
+        if("${name}" MATCHES "^(python|numpy|mpi_python)([1-9])([0-9])$")
+          set(name_nv "${CMAKE_MATCH_1}")
+          if(TARGET "${prefix}::${name_nv}")
+            get_property(type TARGET "${prefix}::${name}" PROPERTY TYPE)
+            if(type STREQUAL "INTERFACE_LIBRARY")
+              get_property(lib TARGET "${prefix}::${name}" PROPERTY INTERFACE_LINK_LIBRARIES)
+              if("${lib}" STREQUAL "${prefix}::${name_nv}")
+                set(${target_var} "${prefix}::${name_nv}" PARENT_SCOPE)
+                return()
+              endif()
+            endif()
+          endif()
+        endif()
+        set(${target_var} "${prefix}::${name}" PARENT_SCOPE)
+        return()
+      endif()
+    endforeach()
+  endforeach()
+  set(${target_var} "" PARENT_SCOPE)
+endfunction()
+
+function(_boost_get_canonical_target_name component target_var)
+  string(TOLOWER "${component}" component)
+  if(component MATCHES "^([a-z_]*)(python|numpy)([1-9])\\.?([0-9])?$")
+    # handle pythonXY and numpyXY versioned components and also python X.Y, mpi_python etc.
+    set(${target_var} "Boost::${CMAKE_MATCH_1}${CMAKE_MATCH_2}" PARENT_SCOPE)
+  else()
+    set(${target_var} "Boost::${component}" PARENT_SCOPE)
+  endif()
+endfunction()
+
+macro(_boost_set_in_parent_scope name value)
+  # Set a variable in parent scope and make it visible in current scope
+  set(${name} "${value}" PARENT_SCOPE)
+  set(${name} "${value}")
+endmacro()
+
+macro(_boost_set_if_unset name value)
+  if(NOT ${name})
+    _boost_set_in_parent_scope(${name} "${value}")
+  endif()
+endmacro()
+
+macro(_boost_set_cache_if_unset name value)
+  if(NOT ${name})
+    set(${name} "${value}" CACHE STRING "" FORCE)
+  endif()
+endmacro()
+
+macro(_boost_append_include_dir target)
+  get_target_property(inc "${target}" INTERFACE_INCLUDE_DIRECTORIES)
+  if(inc)
+    list(APPEND include_dirs "${inc}")
+  endif()
+endmacro()
+
+function(_boost_set_legacy_variables_from_config)
+  # Set legacy variables for compatibility if not set
+  set(include_dirs "")
+  set(library_dirs "")
+  set(libraries "")
+  # Header targets Boost::headers or Boost::boost
+  foreach(comp headers boost)
+    _boost_get_existing_target(${comp} target)
+    if(target)
+      _boost_append_include_dir("${target}")
+    endif()
+  endforeach()
+  # Library targets
+  foreach(comp IN LISTS Boost_FIND_COMPONENTS)
+    string(TOUPPER ${comp} uppercomp)
+    # Overwrite if set
+    _boost_set_in_parent_scope(Boost_${uppercomp}_FOUND "${Boost_${comp}_FOUND}")
+    if(Boost_${comp}_FOUND)
+      _boost_get_existing_target(${comp} target)
+      if(NOT target)
+        if(Boost_DEBUG OR Boost_VERBOSE)
+          message(WARNING "Could not find imported target for required component '${comp}'. Legacy variables for this component might be missing. Refer to the documentation of your Boost installation for help on variables to use.")
+        endif()
+        continue()
+      endif()
+      _boost_append_include_dir("${target}")
+      _boost_set_if_unset(Boost_${uppercomp}_LIBRARY "${target}")
+      _boost_set_if_unset(Boost_${uppercomp}_LIBRARIES "${target}") # Very old legacy variable
+      list(APPEND libraries "${target}")
+      get_property(type TARGET "${target}" PROPERTY TYPE)
+      if(NOT type STREQUAL "INTERFACE_LIBRARY")
+        foreach(cfg RELEASE DEBUG)
+          get_target_property(lib ${target} IMPORTED_LOCATION_${cfg})
+          if(lib)
+            get_filename_component(lib_dir "${lib}" DIRECTORY)
+            list(APPEND library_dirs ${lib_dir})
+            _boost_set_cache_if_unset(Boost_${uppercomp}_LIBRARY_${cfg} "${lib}")
+          endif()
+        endforeach()
+      elseif(Boost_DEBUG OR Boost_VERBOSE)
+        # For projects using only the Boost::* targets this warning can be safely ignored.
+        message(WARNING "Imported target '${target}' for required component '${comp}' has no artifact. Legacy variables for this component might be missing. Refer to the documentation of your Boost installation for help on variables to use.")
+      endif()
+      _boost_get_canonical_target_name("${comp}" canonical_target)
+      if(NOT TARGET "${canonical_target}")
+        add_library("${canonical_target}" INTERFACE IMPORTED)
+        target_link_libraries("${canonical_target}" INTERFACE "${target}")
+      endif()
+    endif()
+  endforeach()
+  list(REMOVE_DUPLICATES include_dirs)
+  list(REMOVE_DUPLICATES library_dirs)
+  _boost_set_if_unset(Boost_INCLUDE_DIRS "${include_dirs}")
+  _boost_set_if_unset(Boost_LIBRARY_DIRS "${library_dirs}")
+  _boost_set_if_unset(Boost_LIBRARIES "${libraries}")
+  _boost_set_if_unset(Boost_VERSION_STRING "${Boost_VERSION_MAJOR}.${Boost_VERSION_MINOR}.${Boost_VERSION_PATCH}")
+  find_path(Boost_INCLUDE_DIR
+    NAMES boost/version.hpp boost/config.hpp
+    HINTS ${Boost_INCLUDE_DIRS}
+    NO_DEFAULT_PATH
+  )
+  if(NOT Boost_VERSION_MACRO OR NOT Boost_LIB_VERSION)
+    set(version_file ${Boost_INCLUDE_DIR}/boost/version.hpp)
+    if(EXISTS "${version_file}")
+      file(STRINGS "${version_file}" contents REGEX "#define BOOST_(LIB_)?VERSION ")
+      if(contents MATCHES "#define BOOST_VERSION ([0-9]+)")
+        _boost_set_if_unset(Boost_VERSION_MACRO "${CMAKE_MATCH_1}")
+      endif()
+      if(contents MATCHES "#define BOOST_LIB_VERSION \"([0-9_]+)\"")
+        _boost_set_if_unset(Boost_LIB_VERSION "${CMAKE_MATCH_1}")
+      endif()
+    endif()
+  endif()
+  _boost_set_if_unset(Boost_MAJOR_VERSION ${Boost_VERSION_MAJOR})
+  _boost_set_if_unset(Boost_MINOR_VERSION ${Boost_VERSION_MINOR})
+  _boost_set_if_unset(Boost_SUBMINOR_VERSION ${Boost_VERSION_PATCH})
+  if(WIN32)
+    _boost_set_if_unset(Boost_LIB_DIAGNOSTIC_DEFINITIONS "-DBOOST_LIB_DIAGNOSTIC")
+  endif()
+  if(NOT TARGET Boost::headers)
+    add_library(Boost::headers INTERFACE IMPORTED)
+    target_include_directories(Boost::headers INTERFACE ${Boost_INCLUDE_DIRS})
+  endif()
+  # Legacy targets w/o functionality as all handled by defined targets
+  foreach(lib diagnostic_definitions disable_autolinking dynamic_linking)
+    if(NOT TARGET Boost::${lib})
+      add_library(Boost::${lib} INTERFACE IMPORTED)
+    endif()
+  endforeach()
+  if(NOT TARGET Boost::boost)
+    add_library(Boost::boost INTERFACE IMPORTED)
+    target_link_libraries(Boost::boost INTERFACE Boost::headers)
+  endif()
+endfunction()
+
+#-------------------------------------------------------------------------------
+# Before we go searching, check whether a boost cmake package is available, unless
+# the user specifically asked NOT to search for one.
+#
+# If Boost_DIR is set, this behaves as any find_package call would. If not,
+# it looks at BOOST_ROOT and BOOSTROOT to find Boost.
+#
+if (NOT Boost_NO_BOOST_CMAKE)
+  # If Boost_DIR is not set, look for BOOSTROOT and BOOST_ROOT as alternatives,
+  # since these are more conventional for Boost.
+  if ("$ENV{Boost_DIR}" STREQUAL "")
+    if (NOT "$ENV{BOOST_ROOT}" STREQUAL "")
+      set(ENV{Boost_DIR} $ENV{BOOST_ROOT})
+    elseif (NOT "$ENV{BOOSTROOT}" STREQUAL "")
+      set(ENV{Boost_DIR} $ENV{BOOSTROOT})
+    endif()
+  endif()
+
+  set(_boost_FIND_PACKAGE_ARGS "")
+  if(Boost_NO_SYSTEM_PATHS)
+    list(APPEND _boost_FIND_PACKAGE_ARGS NO_CMAKE_SYSTEM_PATH NO_SYSTEM_ENVIRONMENT_PATH)
+  endif()
+
+  # Do the same find_package call but look specifically for the CMake version.
+  # Note that args are passed in the Boost_FIND_xxxxx variables, so there is no
+  # need to delegate them to this find_package call.
+  if(BOOST_ROOT AND NOT Boost_ROOT)
+    # Honor BOOST_ROOT by setting Boost_ROOT with CMP0074 NEW behavior.
+    cmake_policy(PUSH)
+    cmake_policy(SET CMP0074 NEW)
+    set(Boost_ROOT "${BOOST_ROOT}")
+    set(_Boost_ROOT_FOR_CONFIG 1)
+  endif()
+  find_package(Boost QUIET NO_MODULE ${_boost_FIND_PACKAGE_ARGS})
+  if(_Boost_ROOT_FOR_CONFIG)
+    unset(_Boost_ROOT_FOR_CONFIG)
+    unset(Boost_ROOT)
+    cmake_policy(POP)
+  endif()
+  if (DEFINED Boost_DIR)
+    mark_as_advanced(Boost_DIR)
+  endif ()
+
+  # If we found a boost cmake package, then we're done. Print out what we found.
+  # Otherwise let the rest of the module try to find it.
+  if(Boost_FOUND)
+    # Convert component found variables to standard variables if required
+    # Necessary for legacy boost-cmake and 1.70 builtin BoostConfig
+    if(Boost_FIND_COMPONENTS)
+      # Ignore the meta-component "ALL", introduced by Boost 1.73
+      list(REMOVE_ITEM Boost_FIND_COMPONENTS "ALL")
+
+      foreach(_comp IN LISTS Boost_FIND_COMPONENTS)
+        if(DEFINED Boost_${_comp}_FOUND)
+          continue()
+        endif()
+        string(TOUPPER ${_comp} _uppercomp)
+        if(DEFINED Boost${_comp}_FOUND) # legacy boost-cmake project
+          set(Boost_${_comp}_FOUND ${Boost${_comp}_FOUND})
+        elseif(DEFINED Boost_${_uppercomp}_FOUND) # Boost 1.70
+          set(Boost_${_comp}_FOUND ${Boost_${_uppercomp}_FOUND})
+        endif()
+      endforeach()
+    endif()
+
+    find_package_handle_standard_args(Boost HANDLE_COMPONENTS CONFIG_MODE)
+    _boost_set_legacy_variables_from_config()
+
+    # Restore project's policies
+    cmake_policy(POP)
+    return()
+  endif()
+endif()
+
+
+#-------------------------------------------------------------------------------
+#  FindBoost functions & macros
+#
+
+#
+# Print debug text if Boost_DEBUG is set.
+# Call example:
+# _Boost_DEBUG_PRINT("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "debug message")
+#
+function(_Boost_DEBUG_PRINT file line text)
+  if(Boost_DEBUG)
+    message(STATUS "[ ${file}:${line} ] ${text}")
+  endif()
+endfunction()
+
+#
+# _Boost_DEBUG_PRINT_VAR(file line variable_name [ENVIRONMENT]
+#                        [SOURCE "short explanation of origin of var value"])
+#
+#   ENVIRONMENT - look up environment variable instead of CMake variable
+#
+# Print variable name and its value if Boost_DEBUG is set.
+# Call example:
+# _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" BOOST_ROOT)
+#
+function(_Boost_DEBUG_PRINT_VAR file line name)
+  if(Boost_DEBUG)
+    cmake_parse_arguments(_args "ENVIRONMENT" "SOURCE" "" ${ARGN})
+
+    unset(source)
+    if(_args_SOURCE)
+      set(source " (${_args_SOURCE})")
+    endif()
+
+    if(_args_ENVIRONMENT)
+      if(DEFINED ENV{${name}})
+        set(value "\"$ENV{${name}}\"")
+      else()
+        set(value "<unset>")
+      endif()
+      set(_name "ENV{${name}}")
+    else()
+      if(DEFINED "${name}")
+        set(value "\"${${name}}\"")
+      else()
+        set(value "<unset>")
+      endif()
+      set(_name "${name}")
+    endif()
+
+    _Boost_DEBUG_PRINT("${file}" "${line}" "${_name} = ${value}${source}")
+  endif()
+endfunction()
+
+############################################
+#
+# Check the existence of the libraries.
+#
+############################################
+# This macro was taken directly from the FindQt4.cmake file that is included
+# with the CMake distribution. This is NOT my work. All work was done by the
+# original authors of the FindQt4.cmake file. Only minor modifications were
+# made to remove references to Qt and make this file more generally applicable
+# And ELSE/ENDIF pairs were removed for readability.
+#########################################################################
+
+macro(_Boost_ADJUST_LIB_VARS basename)
+  if(Boost_INCLUDE_DIR )
+    if(Boost_${basename}_LIBRARY_DEBUG AND Boost_${basename}_LIBRARY_RELEASE)
+      # if the generator is multi-config or if CMAKE_BUILD_TYPE is set for
+      # single-config generators, set optimized and debug libraries
+      get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+      if(_isMultiConfig OR CMAKE_BUILD_TYPE)
+        set(Boost_${basename}_LIBRARY optimized ${Boost_${basename}_LIBRARY_RELEASE} debug ${Boost_${basename}_LIBRARY_DEBUG})
+      else()
+        # For single-config generators where CMAKE_BUILD_TYPE has no value,
+        # just use the release libraries
+        set(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY_RELEASE} )
+      endif()
+      # FIXME: This probably should be set for both cases
+      set(Boost_${basename}_LIBRARIES optimized ${Boost_${basename}_LIBRARY_RELEASE} debug ${Boost_${basename}_LIBRARY_DEBUG})
+    endif()
+
+    # if only the release version was found, set the debug variable also to the release version
+    if(Boost_${basename}_LIBRARY_RELEASE AND NOT Boost_${basename}_LIBRARY_DEBUG)
+      set(Boost_${basename}_LIBRARY_DEBUG ${Boost_${basename}_LIBRARY_RELEASE})
+      set(Boost_${basename}_LIBRARY       ${Boost_${basename}_LIBRARY_RELEASE})
+      set(Boost_${basename}_LIBRARIES     ${Boost_${basename}_LIBRARY_RELEASE})
+    endif()
+
+    # if only the debug version was found, set the release variable also to the debug version
+    if(Boost_${basename}_LIBRARY_DEBUG AND NOT Boost_${basename}_LIBRARY_RELEASE)
+      set(Boost_${basename}_LIBRARY_RELEASE ${Boost_${basename}_LIBRARY_DEBUG})
+      set(Boost_${basename}_LIBRARY         ${Boost_${basename}_LIBRARY_DEBUG})
+      set(Boost_${basename}_LIBRARIES       ${Boost_${basename}_LIBRARY_DEBUG})
+    endif()
+
+    # If the debug & release library ends up being the same, omit the keywords
+    if("${Boost_${basename}_LIBRARY_RELEASE}" STREQUAL "${Boost_${basename}_LIBRARY_DEBUG}")
+      set(Boost_${basename}_LIBRARY   ${Boost_${basename}_LIBRARY_RELEASE} )
+      set(Boost_${basename}_LIBRARIES ${Boost_${basename}_LIBRARY_RELEASE} )
+    endif()
+
+    if(Boost_${basename}_LIBRARY AND Boost_${basename}_HEADER)
+      set(Boost_${basename}_FOUND ON)
+      if("x${basename}" STREQUAL "xTHREAD" AND NOT TARGET Threads::Threads)
+        string(APPEND Boost_ERROR_REASON_THREAD " (missing dependency: Threads)")
+        set(Boost_THREAD_FOUND OFF)
+      endif()
+    endif()
+
+  endif()
+  # Make variables changeable to the advanced user
+  mark_as_advanced(
+      Boost_${basename}_LIBRARY_RELEASE
+      Boost_${basename}_LIBRARY_DEBUG
+  )
+endmacro()
+
+# Detect changes in used variables.
+# Compares the current variable value with the last one.
+# In short form:
+# v != v_LAST                      -> CHANGED = 1
+# v is defined, v_LAST not         -> CHANGED = 1
+# v is not defined, but v_LAST is  -> CHANGED = 1
+# otherwise                        -> CHANGED = 0
+# CHANGED is returned in variable named ${changed_var}
+macro(_Boost_CHANGE_DETECT changed_var)
+  set(${changed_var} 0)
+  foreach(v ${ARGN})
+    if(DEFINED _Boost_COMPONENTS_SEARCHED)
+      if(${v})
+        if(_${v}_LAST)
+          string(COMPARE NOTEQUAL "${${v}}" "${_${v}_LAST}" _${v}_CHANGED)
+        else()
+          set(_${v}_CHANGED 1)
+        endif()
+      elseif(_${v}_LAST)
+        set(_${v}_CHANGED 1)
+      endif()
+      if(_${v}_CHANGED)
+        set(${changed_var} 1)
+      endif()
+    else()
+      set(_${v}_CHANGED 0)
+    endif()
+  endforeach()
+endmacro()
+
+#
+# Find the given library (var).
+# Use 'build_type' to support different lib paths for RELEASE or DEBUG builds
+#
+macro(_Boost_FIND_LIBRARY var build_type)
+
+  find_library(${var} ${ARGN})
+
+  if(${var})
+    # If this is the first library found then save Boost_LIBRARY_DIR_[RELEASE,DEBUG].
+    if(NOT Boost_LIBRARY_DIR_${build_type})
+      get_filename_component(_dir "${${var}}" PATH)
+      set(Boost_LIBRARY_DIR_${build_type} "${_dir}" CACHE PATH "Boost library directory ${build_type}" FORCE)
+    endif()
+  elseif(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT)
+    # Try component-specific hints but do not save Boost_LIBRARY_DIR_[RELEASE,DEBUG].
+    find_library(${var} HINTS ${_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT} ${ARGN})
+  endif()
+
+  # If Boost_LIBRARY_DIR_[RELEASE,DEBUG] is known then search only there.
+  if(Boost_LIBRARY_DIR_${build_type})
+    set(_boost_LIBRARY_SEARCH_DIRS_${build_type} ${Boost_LIBRARY_DIR_${build_type}} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+    _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
+                           "Boost_LIBRARY_DIR_${build_type}")
+    _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
+                           "_boost_LIBRARY_SEARCH_DIRS_${build_type}")
+  endif()
+endmacro()
+
+#-------------------------------------------------------------------------------
+
+# Convert CMAKE_CXX_COMPILER_VERSION to boost compiler suffix version.
+function(_Boost_COMPILER_DUMPVERSION _OUTPUT_VERSION _OUTPUT_VERSION_MAJOR _OUTPUT_VERSION_MINOR)
+  string(REGEX REPLACE "([0-9]+)\\.([0-9]+)(\\.[0-9]+)?" "\\1"
+    _boost_COMPILER_VERSION_MAJOR "${CMAKE_CXX_COMPILER_VERSION}")
+  string(REGEX REPLACE "([0-9]+)\\.([0-9]+)(\\.[0-9]+)?" "\\2"
+    _boost_COMPILER_VERSION_MINOR "${CMAKE_CXX_COMPILER_VERSION}")
+
+  set(_boost_COMPILER_VERSION "${_boost_COMPILER_VERSION_MAJOR}${_boost_COMPILER_VERSION_MINOR}")
+
+  set(${_OUTPUT_VERSION} ${_boost_COMPILER_VERSION} PARENT_SCOPE)
+  set(${_OUTPUT_VERSION_MAJOR} ${_boost_COMPILER_VERSION_MAJOR} PARENT_SCOPE)
+  set(${_OUTPUT_VERSION_MINOR} ${_boost_COMPILER_VERSION_MINOR} PARENT_SCOPE)
+endfunction()
+
+#
+# Take a list of libraries with "thread" in it
+# and prepend duplicates with "thread_${Boost_THREADAPI}"
+# at the front of the list
+#
+function(_Boost_PREPEND_LIST_WITH_THREADAPI _output)
+  set(_orig_libnames ${ARGN})
+  string(REPLACE "thread" "thread_${Boost_THREADAPI}" _threadapi_libnames "${_orig_libnames}")
+  set(${_output} ${_threadapi_libnames} ${_orig_libnames} PARENT_SCOPE)
+endfunction()
+
+#
+# If a library is found, replace its cache entry with its REALPATH
+#
+function(_Boost_SWAP_WITH_REALPATH _library _docstring)
+  if(${_library})
+    get_filename_component(_boost_filepathreal ${${_library}} REALPATH)
+    unset(${_library} CACHE)
+    set(${_library} ${_boost_filepathreal} CACHE FILEPATH "${_docstring}")
+  endif()
+endfunction()
+
+function(_Boost_CHECK_SPELLING _var)
+  if(${_var})
+    string(TOUPPER ${_var} _var_UC)
+    message(FATAL_ERROR "ERROR: ${_var} is not the correct spelling.  The proper spelling is ${_var_UC}.")
+  endif()
+endfunction()
+
+# Guesses Boost's compiler prefix used in built library names
+# Returns the guess by setting the variable pointed to by _ret
+function(_Boost_GUESS_COMPILER_PREFIX _ret)
+  if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xIntel"
+      OR "x${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "xIntelLLVM")
+    if(WIN32)
+      set (_boost_COMPILER "-iw")
+    else()
+      set (_boost_COMPILER "-il")
+    endif()
+  elseif (GHSMULTI)
+    set(_boost_COMPILER "-ghs")
+  elseif("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC" OR "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
+    if(MSVC_TOOLSET_VERSION GREATER_EQUAL 150)
+      # Not yet known.
+      set(_boost_COMPILER "")
+    elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 140)
+      # MSVC toolset 14.x versions are forward compatible.
+      set(_boost_COMPILER "")
+      foreach(v 9 8 7 6 5 4 3 2 1 0)
+        if(MSVC_TOOLSET_VERSION GREATER_EQUAL 14${v})
+          list(APPEND _boost_COMPILER "-vc14${v}")
+        endif()
+      endforeach()
+    elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 80)
+      set(_boost_COMPILER "-vc${MSVC_TOOLSET_VERSION}")
+    elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.10)
+      set(_boost_COMPILER "-vc71")
+    elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13) # Good luck!
+      set(_boost_COMPILER "-vc7") # yes, this is correct
+    else() # VS 6.0 Good luck!
+      set(_boost_COMPILER "-vc6") # yes, this is correct
+    endif()
+
+    if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xClang")
+      string(REPLACE "." ";" VERSION_LIST "${CMAKE_CXX_COMPILER_VERSION}")
+      list(GET VERSION_LIST 0 CLANG_VERSION_MAJOR)
+      set(_boost_COMPILER "-clangw${CLANG_VERSION_MAJOR};${_boost_COMPILER}")
+    endif()
+  elseif (BORLAND)
+    set(_boost_COMPILER "-bcb")
+  elseif(CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")
+    set(_boost_COMPILER "-sw")
+  elseif(CMAKE_CXX_COMPILER_ID STREQUAL "XL")
+    set(_boost_COMPILER "-xlc")
+  elseif (MINGW)
+    if(Boost_VERSION_STRING VERSION_LESS 1.34)
+        set(_boost_COMPILER "-mgw") # no GCC version encoding prior to 1.34
+    else()
+      _Boost_COMPILER_DUMPVERSION(_boost_COMPILER_VERSION _boost_COMPILER_VERSION_MAJOR _boost_COMPILER_VERSION_MINOR)
+      if(Boost_VERSION_STRING VERSION_GREATER_EQUAL 1.73 AND _boost_COMPILER_VERSION_MAJOR VERSION_GREATER_EQUAL 5)
+        set(_boost_COMPILER "-mgw${_boost_COMPILER_VERSION_MAJOR}")
+      else()
+        set(_boost_COMPILER "-mgw${_boost_COMPILER_VERSION}")
+      endif()
+    endif()
+  elseif (UNIX)
+    _Boost_COMPILER_DUMPVERSION(_boost_COMPILER_VERSION _boost_COMPILER_VERSION_MAJOR _boost_COMPILER_VERSION_MINOR)
+    if(NOT Boost_VERSION_STRING VERSION_LESS 1.69.0)
+      # From GCC 5 and clang 4, versioning changes and minor becomes patch.
+      # For those compilers, patch is exclude from compiler tag in Boost 1.69+ library naming.
+      if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND _boost_COMPILER_VERSION_MAJOR VERSION_GREATER 4)
+        set(_boost_COMPILER_VERSION "${_boost_COMPILER_VERSION_MAJOR}")
+      elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND _boost_COMPILER_VERSION_MAJOR VERSION_GREATER 3)
+        set(_boost_COMPILER_VERSION "${_boost_COMPILER_VERSION_MAJOR}")
+      endif()
+    endif()
+
+    if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+      if(Boost_VERSION_STRING VERSION_LESS 1.34)
+        set(_boost_COMPILER "-gcc") # no GCC version encoding prior to 1.34
+      else()
+        # Determine which version of GCC we have.
+        if(APPLE)
+          if(Boost_VERSION_STRING VERSION_LESS 1.36.0)
+            # In Boost <= 1.35.0, there is no mangled compiler name for
+            # the macOS/Darwin version of GCC.
+            set(_boost_COMPILER "")
+          else()
+            # In Boost 1.36.0 and newer, the mangled compiler name used
+            # on macOS/Darwin is "xgcc".
+            set(_boost_COMPILER "-xgcc${_boost_COMPILER_VERSION}")
+          endif()
+        else()
+          set(_boost_COMPILER "-gcc${_boost_COMPILER_VERSION}")
+        endif()
+      endif()
+    elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+      # TODO: Find out any Boost version constraints vs clang support.
+      set(_boost_COMPILER "-clang${_boost_COMPILER_VERSION}")
+    endif()
+  else()
+    set(_boost_COMPILER "")
+  endif()
+  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
+                         "_boost_COMPILER" SOURCE "guessed")
+  set(${_ret} ${_boost_COMPILER} PARENT_SCOPE)
+endfunction()
+
+#
+# Get component dependencies.  Requires the dependencies to have been
+# defined for the Boost release version.
+#
+# component - the component to check
+# _ret - list of library dependencies
+#
+function(_Boost_COMPONENT_DEPENDENCIES component _ret)
+  # Note: to add a new Boost release, run
+  #
+  #   % cmake -DBOOST_DIR=/path/to/boost/source -P Utilities/Scripts/BoostScanDeps.cmake
+  #
+  # The output may be added in a new block below.  If it's the same as
+  # the previous release, simply update the version range of the block
+  # for the previous release.  Also check if any new components have
+  # been added, and add any new components to
+  # _Boost_COMPONENT_HEADERS.
+  #
+  # This information was originally generated by running
+  # BoostScanDeps.cmake against every boost release to date supported
+  # by FindBoost:
+  #
+  #   % for version in /path/to/boost/sources/*
+  #     do
+  #       cmake -DBOOST_DIR=$version -P Utilities/Scripts/BoostScanDeps.cmake
+  #     done
+  #
+  # The output was then updated by search and replace with these regexes:
+  #
+  # - Strip message(STATUS) prefix dashes
+  #   s;^-- ;;
+  # - Indent
+  #   s;^set(;    set(;;
+  # - Add conditionals
+  #   s;Scanning /path/to/boost/sources/boost_\(.*\)_\(.*\)_\(.*);  elseif(NOT Boost_VERSION_STRING VERSION_LESS \1\.\2\.\3 AND Boost_VERSION_STRING VERSION_LESS xxxx);
+  #
+  # This results in the logic seen below, but will require the xxxx
+  # replacing with the following Boost release version (or the next
+  # minor version to be released, e.g. 1.59 was the latest at the time
+  # of writing, making 1.60 the next. Identical consecutive releases
+  # were then merged together by updating the end range of the first
+  # block and removing the following redundant blocks.
+  #
+  # Running the script against all historical releases should be
+  # required only if the BoostScanDeps.cmake script logic is changed.
+  # The addition of a new release should only require it to be run
+  # against the new release.
+
+  # Handle Python version suffixes
+  if(component MATCHES "^(python|mpi_python|numpy)([0-9][0-9]?|[0-9]\\.[0-9])\$")
+    set(component "${CMAKE_MATCH_1}")
+    set(component_python_version "${CMAKE_MATCH_2}")
+  endif()
+
+  set(_Boost_IMPORTED_TARGETS TRUE)
+  if(Boost_VERSION_STRING)
+    if(Boost_VERSION_STRING VERSION_LESS 1.33.0)
+      message(WARNING "Imported targets and dependency information not available for Boost version ${Boost_VERSION_STRING} (all versions older than 1.33)")
+      set(_Boost_IMPORTED_TARGETS FALSE)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.35.0)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex thread)
+      set(_Boost_REGEX_DEPENDENCIES thread)
+      set(_Boost_WAVE_DEPENDENCIES filesystem thread)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.36.0)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system thread)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.38.0)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system thread)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.43.0)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_THREAD_DEPENDENCIES date_time)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system thread date_time)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.44.0)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_THREAD_DEPENDENCIES date_time)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system thread date_time)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.45.0)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random serialization)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_THREAD_DEPENDENCIES date_time)
+      set(_Boost_WAVE_DEPENDENCIES serialization filesystem system thread date_time)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.47.0)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_THREAD_DEPENDENCIES date_time)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.48.0)
+      set(_Boost_CHRONO_DEPENDENCIES system)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_THREAD_DEPENDENCIES date_time)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.50.0)
+      set(_Boost_CHRONO_DEPENDENCIES system)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_THREAD_DEPENDENCIES date_time)
+      set(_Boost_TIMER_DEPENDENCIES chrono system)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.53.0)
+      set(_Boost_CHRONO_DEPENDENCIES system)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l regex random)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_THREAD_DEPENDENCIES chrono system date_time)
+      set(_Boost_TIMER_DEPENDENCIES chrono system)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.54.0)
+      set(_Boost_ATOMIC_DEPENDENCIES thread chrono system date_time)
+      set(_Boost_CHRONO_DEPENDENCIES system)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l regex random)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
+      set(_Boost_TIMER_DEPENDENCIES chrono system)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.55.0)
+      set(_Boost_ATOMIC_DEPENDENCIES thread chrono system date_time)
+      set(_Boost_CHRONO_DEPENDENCIES system)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_LOG_DEPENDENCIES log_setup date_time system filesystem thread regex chrono)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l regex random)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
+      set(_Boost_TIMER_DEPENDENCIES chrono system)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.56.0)
+      set(_Boost_CHRONO_DEPENDENCIES system)
+      set(_Boost_COROUTINE_DEPENDENCIES context system)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_LOG_DEPENDENCIES log_setup date_time system filesystem thread regex chrono)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l regex random)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
+      set(_Boost_TIMER_DEPENDENCIES chrono system)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.59.0)
+      set(_Boost_CHRONO_DEPENDENCIES system)
+      set(_Boost_COROUTINE_DEPENDENCIES context system)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_LOG_DEPENDENCIES log_setup date_time system filesystem thread regex chrono)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_RANDOM_DEPENDENCIES system)
+      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
+      set(_Boost_TIMER_DEPENDENCIES chrono system)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.60.0)
+      set(_Boost_CHRONO_DEPENDENCIES system)
+      set(_Boost_COROUTINE_DEPENDENCIES context system)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_LOG_DEPENDENCIES log_setup date_time system filesystem thread regex chrono atomic)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_RANDOM_DEPENDENCIES system)
+      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
+      set(_Boost_TIMER_DEPENDENCIES chrono system)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.61.0)
+      set(_Boost_CHRONO_DEPENDENCIES system)
+      set(_Boost_COROUTINE_DEPENDENCIES context system)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_RANDOM_DEPENDENCIES system)
+      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
+      set(_Boost_TIMER_DEPENDENCIES chrono system)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.62.0)
+      set(_Boost_CHRONO_DEPENDENCIES system)
+      set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time)
+      set(_Boost_COROUTINE_DEPENDENCIES context system)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_RANDOM_DEPENDENCIES system)
+      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.63.0)
+      set(_Boost_CHRONO_DEPENDENCIES system)
+      set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time)
+      set(_Boost_COROUTINE_DEPENDENCIES context system)
+      set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_RANDOM_DEPENDENCIES system)
+      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.65.0)
+      set(_Boost_CHRONO_DEPENDENCIES system)
+      set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time)
+      set(_Boost_COROUTINE_DEPENDENCIES context system)
+      set(_Boost_COROUTINE2_DEPENDENCIES context fiber thread chrono system date_time)
+      set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_RANDOM_DEPENDENCIES system)
+      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.67.0)
+      set(_Boost_CHRONO_DEPENDENCIES system)
+      set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time)
+      set(_Boost_COROUTINE_DEPENDENCIES context system)
+      set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
+      set(_Boost_RANDOM_DEPENDENCIES system)
+      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
+      set(_Boost_TIMER_DEPENDENCIES chrono system)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.68.0)
+      set(_Boost_CHRONO_DEPENDENCIES system)
+      set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time)
+      set(_Boost_COROUTINE_DEPENDENCIES context system)
+      set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
+      set(_Boost_RANDOM_DEPENDENCIES system)
+      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
+      set(_Boost_TIMER_DEPENDENCIES chrono system)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.69.0)
+      set(_Boost_CHRONO_DEPENDENCIES system)
+      set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time)
+      set(_Boost_CONTRACT_DEPENDENCIES thread chrono system date_time)
+      set(_Boost_COROUTINE_DEPENDENCIES context system)
+      set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time)
+      set(_Boost_FILESYSTEM_DEPENDENCIES system)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
+      set(_Boost_RANDOM_DEPENDENCIES system)
+      set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
+      set(_Boost_TIMER_DEPENDENCIES chrono system)
+      set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.70.0)
+      set(_Boost_CONTRACT_DEPENDENCIES thread chrono date_time)
+      set(_Boost_COROUTINE_DEPENDENCIES context)
+      set(_Boost_FIBER_DEPENDENCIES context)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_LOG_DEPENDENCIES date_time log_setup filesystem thread regex chrono atomic)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
+      set(_Boost_THREAD_DEPENDENCIES chrono date_time atomic)
+      set(_Boost_TIMER_DEPENDENCIES chrono system)
+      set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono date_time atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.72.0)
+      set(_Boost_CONTRACT_DEPENDENCIES thread chrono date_time)
+      set(_Boost_COROUTINE_DEPENDENCIES context)
+      set(_Boost_FIBER_DEPENDENCIES context)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_LOG_DEPENDENCIES date_time log_setup filesystem thread regex chrono atomic)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
+      set(_Boost_THREAD_DEPENDENCIES chrono date_time atomic)
+      set(_Boost_TIMER_DEPENDENCIES chrono)
+      set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono date_time atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.73.0)
+      set(_Boost_CONTRACT_DEPENDENCIES thread chrono date_time)
+      set(_Boost_COROUTINE_DEPENDENCIES context)
+      set(_Boost_FIBER_DEPENDENCIES context)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_LOG_DEPENDENCIES date_time log_setup filesystem thread regex chrono atomic)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l chrono atomic)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
+      set(_Boost_THREAD_DEPENDENCIES chrono date_time atomic)
+      set(_Boost_TIMER_DEPENDENCIES chrono)
+      set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono date_time atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.75.0)
+      set(_Boost_CONTRACT_DEPENDENCIES thread chrono date_time)
+      set(_Boost_COROUTINE_DEPENDENCIES context)
+      set(_Boost_FIBER_DEPENDENCIES context)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_LOG_DEPENDENCIES date_time log_setup filesystem thread regex chrono atomic)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
+      set(_Boost_THREAD_DEPENDENCIES chrono date_time atomic)
+      set(_Boost_TIMER_DEPENDENCIES chrono)
+      set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono date_time atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    elseif(Boost_VERSION_STRING VERSION_LESS 1.77.0)
+      set(_Boost_CONTRACT_DEPENDENCIES thread chrono date_time)
+      set(_Boost_COROUTINE_DEPENDENCIES context)
+      set(_Boost_FIBER_DEPENDENCIES context)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_JSON_DEPENDENCIES container)
+      set(_Boost_LOG_DEPENDENCIES date_time log_setup filesystem thread regex chrono atomic)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
+      set(_Boost_THREAD_DEPENDENCIES chrono date_time atomic)
+      set(_Boost_TIMER_DEPENDENCIES chrono)
+      set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono date_time atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+    else()
+      set(_Boost_CONTRACT_DEPENDENCIES thread chrono)
+      set(_Boost_COROUTINE_DEPENDENCIES context)
+      set(_Boost_FIBER_DEPENDENCIES context)
+      set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+      set(_Boost_JSON_DEPENDENCIES container)
+      set(_Boost_LOG_DEPENDENCIES date_time log_setup filesystem thread regex chrono atomic)
+      set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l)
+      set(_Boost_MPI_DEPENDENCIES serialization)
+      set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
+      set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
+      set(_Boost_THREAD_DEPENDENCIES chrono atomic)
+      set(_Boost_TIMER_DEPENDENCIES chrono)
+      set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono atomic)
+      set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+      if(Boost_VERSION_STRING VERSION_GREATER_EQUAL 1.78.0 AND NOT Boost_NO_WARN_NEW_VERSIONS)
+        message(WARNING "New Boost version may have incorrect or missing dependencies and imported targets")
+      endif()
+    endif()
+  endif()
+
+  string(TOUPPER ${component} uppercomponent)
+  set(${_ret} ${_Boost_${uppercomponent}_DEPENDENCIES} PARENT_SCOPE)
+  set(_Boost_IMPORTED_TARGETS ${_Boost_IMPORTED_TARGETS} PARENT_SCOPE)
+
+  string(REGEX REPLACE ";" " " _boost_DEPS_STRING "${_Boost_${uppercomponent}_DEPENDENCIES}")
+  if (NOT _boost_DEPS_STRING)
+    set(_boost_DEPS_STRING "(none)")
+  endif()
+  # message(STATUS "Dependencies for Boost::${component}: ${_boost_DEPS_STRING}")
+endfunction()
+
+#
+# Get component headers.  This is the primary header (or headers) for
+# a given component, and is used to check that the headers are present
+# as well as the library itself as an extra sanity check of the build
+# environment.
+#
+# component - the component to check
+# _hdrs
+#
+function(_Boost_COMPONENT_HEADERS component _hdrs)
+  # Handle Python version suffixes
+  if(component MATCHES "^(python|mpi_python|numpy)([0-9][0-9]?|[0-9]\\.[0-9])\$")
+    set(component "${CMAKE_MATCH_1}")
+    set(component_python_version "${CMAKE_MATCH_2}")
+  endif()
+
+  # Note: new boost components will require adding here.  The header
+  # must be present in all versions of Boost providing a library.
+  set(_Boost_ATOMIC_HEADERS              "boost/atomic.hpp")
+  set(_Boost_CHRONO_HEADERS              "boost/chrono.hpp")
+  set(_Boost_CONTAINER_HEADERS           "boost/container/container_fwd.hpp")
+  set(_Boost_CONTRACT_HEADERS            "boost/contract.hpp")
+  if(Boost_VERSION_STRING VERSION_LESS 1.61.0)
+    set(_Boost_CONTEXT_HEADERS           "boost/context/all.hpp")
+  else()
+    set(_Boost_CONTEXT_HEADERS           "boost/context/detail/fcontext.hpp")
+  endif()
+  set(_Boost_COROUTINE_HEADERS           "boost/coroutine/all.hpp")
+  set(_Boost_DATE_TIME_HEADERS           "boost/date_time/date.hpp")
+  set(_Boost_EXCEPTION_HEADERS           "boost/exception/exception.hpp")
+  set(_Boost_FIBER_HEADERS               "boost/fiber/all.hpp")
+  set(_Boost_FILESYSTEM_HEADERS          "boost/filesystem/path.hpp")
+  set(_Boost_GRAPH_HEADERS               "boost/graph/adjacency_list.hpp")
+  set(_Boost_GRAPH_PARALLEL_HEADERS      "boost/graph/adjacency_list.hpp")
+  set(_Boost_IOSTREAMS_HEADERS           "boost/iostreams/stream.hpp")
+  set(_Boost_LOCALE_HEADERS              "boost/locale.hpp")
+  set(_Boost_LOG_HEADERS                 "boost/log/core.hpp")
+  set(_Boost_LOG_SETUP_HEADERS           "boost/log/detail/setup_config.hpp")
+  set(_Boost_JSON_HEADERS                "boost/json.hpp")
+  set(_Boost_MATH_HEADERS                "boost/math_fwd.hpp")
+  set(_Boost_MATH_C99_HEADERS            "boost/math/tr1.hpp")
+  set(_Boost_MATH_C99F_HEADERS           "boost/math/tr1.hpp")
+  set(_Boost_MATH_C99L_HEADERS           "boost/math/tr1.hpp")
+  set(_Boost_MATH_TR1_HEADERS            "boost/math/tr1.hpp")
+  set(_Boost_MATH_TR1F_HEADERS           "boost/math/tr1.hpp")
+  set(_Boost_MATH_TR1L_HEADERS           "boost/math/tr1.hpp")
+  set(_Boost_MPI_HEADERS                 "boost/mpi.hpp")
+  set(_Boost_MPI_PYTHON_HEADERS          "boost/mpi/python/config.hpp")
+  set(_Boost_NUMPY_HEADERS               "boost/python/numpy.hpp")
+  set(_Boost_NOWIDE_HEADERS              "boost/nowide/cstdlib.hpp")
+  set(_Boost_PRG_EXEC_MONITOR_HEADERS    "boost/test/prg_exec_monitor.hpp")
+  set(_Boost_PROGRAM_OPTIONS_HEADERS     "boost/program_options.hpp")
+  set(_Boost_PYTHON_HEADERS              "boost/python.hpp")
+  set(_Boost_RANDOM_HEADERS              "boost/random.hpp")
+  set(_Boost_REGEX_HEADERS               "boost/regex.hpp")
+  set(_Boost_SERIALIZATION_HEADERS       "boost/serialization/serialization.hpp")
+  set(_Boost_SIGNALS_HEADERS             "boost/signals.hpp")
+  set(_Boost_STACKTRACE_ADDR2LINE_HEADERS "boost/stacktrace.hpp")
+  set(_Boost_STACKTRACE_BACKTRACE_HEADERS "boost/stacktrace.hpp")
+  set(_Boost_STACKTRACE_BASIC_HEADERS    "boost/stacktrace.hpp")
+  set(_Boost_STACKTRACE_NOOP_HEADERS     "boost/stacktrace.hpp")
+  set(_Boost_STACKTRACE_WINDBG_CACHED_HEADERS "boost/stacktrace.hpp")
+  set(_Boost_STACKTRACE_WINDBG_HEADERS   "boost/stacktrace.hpp")
+  set(_Boost_SYSTEM_HEADERS              "boost/system/config.hpp")
+  set(_Boost_TEST_EXEC_MONITOR_HEADERS   "boost/test/test_exec_monitor.hpp")
+  set(_Boost_THREAD_HEADERS              "boost/thread.hpp")
+  set(_Boost_TIMER_HEADERS               "boost/timer.hpp")
+  set(_Boost_TYPE_ERASURE_HEADERS        "boost/type_erasure/config.hpp")
+  set(_Boost_UNIT_TEST_FRAMEWORK_HEADERS "boost/test/framework.hpp")
+  set(_Boost_WAVE_HEADERS                "boost/wave.hpp")
+  set(_Boost_WSERIALIZATION_HEADERS      "boost/archive/text_wiarchive.hpp")
+  set(_Boost_BZIP2_HEADERS               "boost/iostreams/filter/bzip2.hpp")
+  set(_Boost_ZLIB_HEADERS                "boost/iostreams/filter/zlib.hpp")
+
+  string(TOUPPER ${component} uppercomponent)
+  set(${_hdrs} ${_Boost_${uppercomponent}_HEADERS} PARENT_SCOPE)
+
+  string(REGEX REPLACE ";" " " _boost_HDRS_STRING "${_Boost_${uppercomponent}_HEADERS}")
+  if (NOT _boost_HDRS_STRING)
+    set(_boost_HDRS_STRING "(none)")
+  endif()
+  # message(STATUS "Headers for Boost::${component}: ${_boost_HDRS_STRING}")
+endfunction()
+
+#
+# Determine if any missing dependencies require adding to the component list.
+#
+# Sets _Boost_${COMPONENT}_DEPENDENCIES for each required component,
+# plus _Boost_IMPORTED_TARGETS (TRUE if imported targets should be
+# defined; FALSE if dependency information is unavailable).
+#
+# componentvar - the component list variable name
+# extravar - the indirect dependency list variable name
+#
+#
+function(_Boost_MISSING_DEPENDENCIES componentvar extravar)
+  # _boost_unprocessed_components - list of components requiring processing
+  # _boost_processed_components - components already processed (or currently being processed)
+  # _boost_new_components - new components discovered for future processing
+  #
+  list(APPEND _boost_unprocessed_components ${${componentvar}})
+
+  while(_boost_unprocessed_components)
+    list(APPEND _boost_processed_components ${_boost_unprocessed_components})
+    foreach(component ${_boost_unprocessed_components})
+      string(TOUPPER ${component} uppercomponent)
+      set(${_ret} ${_Boost_${uppercomponent}_DEPENDENCIES} PARENT_SCOPE)
+      _Boost_COMPONENT_DEPENDENCIES("${component}" _Boost_${uppercomponent}_DEPENDENCIES)
+      set(_Boost_${uppercomponent}_DEPENDENCIES ${_Boost_${uppercomponent}_DEPENDENCIES} PARENT_SCOPE)
+      set(_Boost_IMPORTED_TARGETS ${_Boost_IMPORTED_TARGETS} PARENT_SCOPE)
+      foreach(componentdep ${_Boost_${uppercomponent}_DEPENDENCIES})
+        if (NOT ("${componentdep}" IN_LIST _boost_processed_components OR "${componentdep}" IN_LIST _boost_new_components))
+          list(APPEND _boost_new_components ${componentdep})
+        endif()
+      endforeach()
+    endforeach()
+    set(_boost_unprocessed_components ${_boost_new_components})
+    unset(_boost_new_components)
+  endwhile()
+  set(_boost_extra_components ${_boost_processed_components})
+  if(_boost_extra_components AND ${componentvar})
+    list(REMOVE_ITEM _boost_extra_components ${${componentvar}})
+  endif()
+  set(${componentvar} ${_boost_processed_components} PARENT_SCOPE)
+  set(${extravar} ${_boost_extra_components} PARENT_SCOPE)
+endfunction()
+
+#
+# Some boost libraries may require particular set of compler features.
+# The very first one was `boost::fiber` introduced in Boost 1.62.
+# One can check required compiler features of it in
+# - `${Boost_ROOT}/libs/fiber/build/Jamfile.v2`;
+# - `${Boost_ROOT}/libs/context/build/Jamfile.v2`.
+#
+# TODO (Re)Check compiler features on (every?) release ???
+# One may use the following command to get the files to check:
+#
+#   $ find . -name Jamfile.v2 | grep build | xargs grep -l cxx1
+#
+function(_Boost_COMPILER_FEATURES component _ret)
+  # Boost >= 1.62
+  if(NOT Boost_VERSION_STRING VERSION_LESS 1.62.0)
+    set(_Boost_FIBER_COMPILER_FEATURES
+        cxx_alias_templates
+        cxx_auto_type
+        cxx_constexpr
+        cxx_defaulted_functions
+        cxx_final
+        cxx_lambdas
+        cxx_noexcept
+        cxx_nullptr
+        cxx_rvalue_references
+        cxx_thread_local
+        cxx_variadic_templates
+    )
+    # Compiler feature for `context` same as for `fiber`.
+    set(_Boost_CONTEXT_COMPILER_FEATURES ${_Boost_FIBER_COMPILER_FEATURES})
+  endif()
+
+  # Boost Contract library available in >= 1.67
+  if(NOT Boost_VERSION_STRING VERSION_LESS 1.67.0)
+    # From `libs/contract/build/boost_contract_build.jam`
+    set(_Boost_CONTRACT_COMPILER_FEATURES
+        cxx_lambdas
+        cxx_variadic_templates
+    )
+  endif()
+
+  string(TOUPPER ${component} uppercomponent)
+  set(${_ret} ${_Boost_${uppercomponent}_COMPILER_FEATURES} PARENT_SCOPE)
+endfunction()
+
+#
+# Update library search directory hint variable with paths used by prebuilt boost binaries.
+#
+# Prebuilt windows binaries (https://sourceforge.net/projects/boost/files/boost-binaries/)
+# have library directories named using MSVC compiler version and architecture.
+# This function would append corresponding directories if MSVC is a current compiler,
+# so having `BOOST_ROOT` would be enough to specify to find everything.
+#
+function(_Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS componentlibvar basedir)
+  if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC")
+    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+      set(_arch_suffix 64)
+    else()
+      set(_arch_suffix 32)
+    endif()
+    if(MSVC_TOOLSET_VERSION GREATER_EQUAL 150)
+      # Not yet known.
+    elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 140)
+      # MSVC toolset 14.x versions are forward compatible.
+      foreach(v 9 8 7 6 5 4 3 2 1 0)
+        if(MSVC_TOOLSET_VERSION GREATER_EQUAL 14${v})
+          list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-14.${v})
+        endif()
+      endforeach()
+    elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 80)
+      math(EXPR _toolset_major_version "${MSVC_TOOLSET_VERSION} / 10")
+      list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-${_toolset_major_version}.0)
+    endif()
+    set(${componentlibvar} ${${componentlibvar}} PARENT_SCOPE)
+  endif()
+endfunction()
+
+#
+# End functions/macros
+#
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+# main.
+#-------------------------------------------------------------------------------
+
+
+# If the user sets Boost_LIBRARY_DIR, use it as the default for both
+# configurations.
+if(NOT Boost_LIBRARY_DIR_RELEASE AND Boost_LIBRARY_DIR)
+  set(Boost_LIBRARY_DIR_RELEASE "${Boost_LIBRARY_DIR}")
+endif()
+if(NOT Boost_LIBRARY_DIR_DEBUG AND Boost_LIBRARY_DIR)
+  set(Boost_LIBRARY_DIR_DEBUG   "${Boost_LIBRARY_DIR}")
+endif()
+
+if(NOT DEFINED Boost_USE_DEBUG_LIBS)
+  set(Boost_USE_DEBUG_LIBS TRUE)
+endif()
+if(NOT DEFINED Boost_USE_RELEASE_LIBS)
+  set(Boost_USE_RELEASE_LIBS TRUE)
+endif()
+if(NOT DEFINED Boost_USE_MULTITHREADED)
+  set(Boost_USE_MULTITHREADED TRUE)
+endif()
+if(NOT DEFINED Boost_USE_DEBUG_RUNTIME)
+  set(Boost_USE_DEBUG_RUNTIME TRUE)
+endif()
+
+# Check the version of Boost against the requested version.
+if(Boost_FIND_VERSION AND NOT Boost_FIND_VERSION_MINOR)
+  message(SEND_ERROR "When requesting a specific version of Boost, you must provide at least the major and minor version numbers, e.g., 1.34")
+endif()
+
+if(Boost_FIND_VERSION_EXACT)
+  # The version may appear in a directory with or without the patch
+  # level, even when the patch level is non-zero.
+  set(_boost_TEST_VERSIONS
+    "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}.${Boost_FIND_VERSION_PATCH}"
+    "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}")
+else()
+  # The user has not requested an exact version.  Among known
+  # versions, find those that are acceptable to the user request.
+  #
+  # Note: When adding a new Boost release, also update the dependency
+  # information in _Boost_COMPONENT_DEPENDENCIES and
+  # _Boost_COMPONENT_HEADERS.  See the instructions at the top of
+  # _Boost_COMPONENT_DEPENDENCIES.
+  set(_Boost_KNOWN_VERSIONS ${Boost_ADDITIONAL_VERSIONS}
+    "1.77.0" "1.77" "1.76.0" "1.76" "1.75.0" "1.75" "1.74.0" "1.74"
+    "1.73.0" "1.73" "1.72.0" "1.72" "1.71.0" "1.71" "1.70.0" "1.70" "1.69.0" "1.69"
+    "1.68.0" "1.68" "1.67.0" "1.67" "1.66.0" "1.66" "1.65.1" "1.65.0" "1.65"
+    "1.64.0" "1.64" "1.63.0" "1.63" "1.62.0" "1.62" "1.61.0" "1.61" "1.60.0" "1.60"
+    "1.59.0" "1.59" "1.58.0" "1.58" "1.57.0" "1.57" "1.56.0" "1.56" "1.55.0" "1.55"
+    "1.54.0" "1.54" "1.53.0" "1.53" "1.52.0" "1.52" "1.51.0" "1.51"
+    "1.50.0" "1.50" "1.49.0" "1.49" "1.48.0" "1.48" "1.47.0" "1.47" "1.46.1"
+    "1.46.0" "1.46" "1.45.0" "1.45" "1.44.0" "1.44" "1.43.0" "1.43" "1.42.0" "1.42"
+    "1.41.0" "1.41" "1.40.0" "1.40" "1.39.0" "1.39" "1.38.0" "1.38" "1.37.0" "1.37"
+    "1.36.1" "1.36.0" "1.36" "1.35.1" "1.35.0" "1.35" "1.34.1" "1.34.0"
+    "1.34" "1.33.1" "1.33.0" "1.33")
+
+  set(_boost_TEST_VERSIONS)
+  if(Boost_FIND_VERSION)
+    set(_Boost_FIND_VERSION_SHORT "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}")
+    # Select acceptable versions.
+    foreach(version ${_Boost_KNOWN_VERSIONS})
+      if(NOT "${version}" VERSION_LESS "${Boost_FIND_VERSION}")
+        # This version is high enough.
+        list(APPEND _boost_TEST_VERSIONS "${version}")
+      elseif("${version}.99" VERSION_EQUAL "${_Boost_FIND_VERSION_SHORT}.99")
+        # This version is a short-form for the requested version with
+        # the patch level dropped.
+        list(APPEND _boost_TEST_VERSIONS "${version}")
+      endif()
+    endforeach()
+  else()
+    # Any version is acceptable.
+    set(_boost_TEST_VERSIONS "${_Boost_KNOWN_VERSIONS}")
+  endif()
+endif()
+
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "_boost_TEST_VERSIONS")
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_USE_MULTITHREADED")
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_USE_STATIC_LIBS")
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_USE_STATIC_RUNTIME")
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_ADDITIONAL_VERSIONS")
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_NO_SYSTEM_PATHS")
+
+cmake_policy(GET CMP0074 _Boost_CMP0074)
+if(NOT "x${_Boost_CMP0074}x" STREQUAL "xNEWx")
+  _Boost_CHECK_SPELLING(Boost_ROOT)
+endif()
+unset(_Boost_CMP0074)
+_Boost_CHECK_SPELLING(Boost_LIBRARYDIR)
+_Boost_CHECK_SPELLING(Boost_INCLUDEDIR)
+
+# Collect environment variable inputs as hints.  Do not consider changes.
+foreach(v BOOSTROOT BOOST_ROOT BOOST_INCLUDEDIR BOOST_LIBRARYDIR)
+  set(_env $ENV{${v}})
+  if(_env)
+    file(TO_CMAKE_PATH "${_env}" _ENV_${v})
+  else()
+    set(_ENV_${v} "")
+  endif()
+endforeach()
+if(NOT _ENV_BOOST_ROOT AND _ENV_BOOSTROOT)
+  set(_ENV_BOOST_ROOT "${_ENV_BOOSTROOT}")
+endif()
+
+# Collect inputs and cached results.  Detect changes since the last run.
+if(NOT BOOST_ROOT AND BOOSTROOT)
+  set(BOOST_ROOT "${BOOSTROOT}")
+endif()
+set(_Boost_VARS_DIR
+  BOOST_ROOT
+  Boost_NO_SYSTEM_PATHS
+  )
+
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "BOOST_ROOT")
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "BOOST_ROOT" ENVIRONMENT)
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "BOOST_INCLUDEDIR")
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "BOOST_INCLUDEDIR" ENVIRONMENT)
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "BOOST_LIBRARYDIR")
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "BOOST_LIBRARYDIR" ENVIRONMENT)
+
+# ------------------------------------------------------------------------
+#  Search for Boost include DIR
+# ------------------------------------------------------------------------
+
+set(_Boost_VARS_INC BOOST_INCLUDEDIR Boost_INCLUDE_DIR Boost_ADDITIONAL_VERSIONS)
+_Boost_CHANGE_DETECT(_Boost_CHANGE_INCDIR ${_Boost_VARS_DIR} ${_Boost_VARS_INC})
+# Clear Boost_INCLUDE_DIR if it did not change but other input affecting the
+# location did.  We will find a new one based on the new inputs.
+if(_Boost_CHANGE_INCDIR AND NOT _Boost_INCLUDE_DIR_CHANGED)
+  unset(Boost_INCLUDE_DIR CACHE)
+endif()
+
+if(NOT Boost_INCLUDE_DIR)
+  set(_boost_INCLUDE_SEARCH_DIRS "")
+  if(BOOST_INCLUDEDIR)
+    list(APPEND _boost_INCLUDE_SEARCH_DIRS ${BOOST_INCLUDEDIR})
+  elseif(_ENV_BOOST_INCLUDEDIR)
+    list(APPEND _boost_INCLUDE_SEARCH_DIRS ${_ENV_BOOST_INCLUDEDIR})
+  endif()
+
+  if( BOOST_ROOT )
+    list(APPEND _boost_INCLUDE_SEARCH_DIRS ${BOOST_ROOT}/include ${BOOST_ROOT})
+  elseif( _ENV_BOOST_ROOT )
+    list(APPEND _boost_INCLUDE_SEARCH_DIRS ${_ENV_BOOST_ROOT}/include ${_ENV_BOOST_ROOT})
+  endif()
+
+  if( Boost_NO_SYSTEM_PATHS)
+    list(APPEND _boost_INCLUDE_SEARCH_DIRS NO_CMAKE_SYSTEM_PATH NO_SYSTEM_ENVIRONMENT_PATH)
+  else()
+    if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC")
+      foreach(ver ${_boost_TEST_VERSIONS})
+        string(REPLACE "." "_" ver "${ver}")
+        list(APPEND _boost_INCLUDE_SEARCH_DIRS PATHS "C:/local/boost_${ver}")
+      endforeach()
+    endif()
+    list(APPEND _boost_INCLUDE_SEARCH_DIRS PATHS
+      C:/boost/include
+      C:/boost
+      /sw/local/include
+      )
+  endif()
+
+  # Try to find Boost by stepping backwards through the Boost versions
+  # we know about.
+  # Build a list of path suffixes for each version.
+  set(_boost_PATH_SUFFIXES)
+  foreach(_boost_VER ${_boost_TEST_VERSIONS})
+    # Add in a path suffix, based on the required version, ideally
+    # we could read this from version.hpp, but for that to work we'd
+    # need to know the include dir already
+    set(_boost_BOOSTIFIED_VERSION)
+
+    # Transform 1.35 => 1_35 and 1.36.0 => 1_36_0
+    if(_boost_VER MATCHES "([0-9]+)\\.([0-9]+)\\.([0-9]+)")
+        set(_boost_BOOSTIFIED_VERSION
+          "${CMAKE_MATCH_1}_${CMAKE_MATCH_2}_${CMAKE_MATCH_3}")
+    elseif(_boost_VER MATCHES "([0-9]+)\\.([0-9]+)")
+        set(_boost_BOOSTIFIED_VERSION
+          "${CMAKE_MATCH_1}_${CMAKE_MATCH_2}")
+    endif()
+
+    list(APPEND _boost_PATH_SUFFIXES
+      "boost-${_boost_BOOSTIFIED_VERSION}"
+      "boost_${_boost_BOOSTIFIED_VERSION}"
+      "boost/boost-${_boost_BOOSTIFIED_VERSION}"
+      "boost/boost_${_boost_BOOSTIFIED_VERSION}"
+      )
+
+  endforeach()
+
+  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "_boost_INCLUDE_SEARCH_DIRS")
+  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "_boost_PATH_SUFFIXES")
+
+  # Look for a standard boost header file.
+  find_path(Boost_INCLUDE_DIR
+    NAMES         boost/config.hpp
+    HINTS         ${_boost_INCLUDE_SEARCH_DIRS}
+    PATH_SUFFIXES ${_boost_PATH_SUFFIXES}
+    )
+endif()
+
+# ------------------------------------------------------------------------
+#  Extract version information from version.hpp
+# ------------------------------------------------------------------------
+
+if(Boost_INCLUDE_DIR)
+  _Boost_DEBUG_PRINT("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
+                     "location of version.hpp: ${Boost_INCLUDE_DIR}/boost/version.hpp")
+
+  # Extract Boost_VERSION_MACRO and Boost_LIB_VERSION from version.hpp
+  set(Boost_VERSION_MACRO 0)
+  set(Boost_LIB_VERSION "")
+  file(STRINGS "${Boost_INCLUDE_DIR}/boost/version.hpp" _boost_VERSION_HPP_CONTENTS REGEX "#define BOOST_(LIB_)?VERSION ")
+  if("${_boost_VERSION_HPP_CONTENTS}" MATCHES "#define BOOST_VERSION ([0-9]+)")
+    set(Boost_VERSION_MACRO "${CMAKE_MATCH_1}")
+  endif()
+  if("${_boost_VERSION_HPP_CONTENTS}" MATCHES "#define BOOST_LIB_VERSION \"([0-9_]+)\"")
+    set(Boost_LIB_VERSION "${CMAKE_MATCH_1}")
+  endif()
+  unset(_boost_VERSION_HPP_CONTENTS)
+
+  # Calculate version components
+  math(EXPR Boost_VERSION_MAJOR "${Boost_VERSION_MACRO} / 100000")
+  math(EXPR Boost_VERSION_MINOR "${Boost_VERSION_MACRO} / 100 % 1000")
+  math(EXPR Boost_VERSION_PATCH "${Boost_VERSION_MACRO} % 100")
+  set(Boost_VERSION_COUNT 3)
+
+  # Define alias variables for backwards compat.
+  set(Boost_MAJOR_VERSION ${Boost_VERSION_MAJOR})
+  set(Boost_MINOR_VERSION ${Boost_VERSION_MINOR})
+  set(Boost_SUBMINOR_VERSION ${Boost_VERSION_PATCH})
+
+  # Define Boost version in x.y.z format
+  set(Boost_VERSION_STRING "${Boost_VERSION_MAJOR}.${Boost_VERSION_MINOR}.${Boost_VERSION_PATCH}")
+
+  # Define final Boost_VERSION
+  cmake_policy(GET CMP0093 _Boost_CMP0093
+    PARENT_SCOPE # undocumented, do not use outside of CMake
+  )
+  if("x${_Boost_CMP0093}x" STREQUAL "xNEWx")
+    set(Boost_VERSION ${Boost_VERSION_STRING})
+  else()
+    set(Boost_VERSION ${Boost_VERSION_MACRO})
+  endif()
+  unset(_Boost_CMP0093)
+
+  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_VERSION")
+  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_VERSION_STRING")
+  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_VERSION_MACRO")
+  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_VERSION_MAJOR")
+  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_VERSION_MINOR")
+  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_VERSION_PATCH")
+  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_VERSION_COUNT")
+endif()
+
+# ------------------------------------------------------------------------
+#  Prefix initialization
+# ------------------------------------------------------------------------
+
+if ( NOT DEFINED Boost_LIB_PREFIX )
+  # Boost's static libraries use a "lib" prefix on DLL platforms
+  # to distinguish them from the DLL import libraries.
+  if (Boost_USE_STATIC_LIBS AND (
+      (WIN32 AND NOT CYGWIN)
+      OR GHSMULTI
+      ))
+    set(Boost_LIB_PREFIX "lib")
+  else()
+    set(Boost_LIB_PREFIX "")
+  endif()
+endif()
+
+if ( NOT Boost_NAMESPACE )
+  set(Boost_NAMESPACE "boost")
+endif()
+
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_LIB_PREFIX")
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "Boost_NAMESPACE")
+
+# ------------------------------------------------------------------------
+#  Suffix initialization and compiler suffix detection.
+# ------------------------------------------------------------------------
+
+set(_Boost_VARS_NAME
+  Boost_NAMESPACE
+  Boost_COMPILER
+  Boost_THREADAPI
+  Boost_USE_DEBUG_PYTHON
+  Boost_USE_MULTITHREADED
+  Boost_USE_STATIC_LIBS
+  Boost_USE_STATIC_RUNTIME
+  Boost_USE_STLPORT
+  Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS
+  )
+_Boost_CHANGE_DETECT(_Boost_CHANGE_LIBNAME ${_Boost_VARS_NAME})
+
+# Setting some more suffixes for the library
+if (Boost_COMPILER)
+  set(_boost_COMPILER ${Boost_COMPILER})
+  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
+                         "_boost_COMPILER" SOURCE "user-specified via Boost_COMPILER")
+else()
+  # Attempt to guess the compiler suffix
+  # NOTE: this is not perfect yet, if you experience any issues
+  # please report them and use the Boost_COMPILER variable
+  # to work around the problems.
+  _Boost_GUESS_COMPILER_PREFIX(_boost_COMPILER)
+endif()
+
+set (_boost_MULTITHREADED "-mt")
+if( NOT Boost_USE_MULTITHREADED )
+  set (_boost_MULTITHREADED "")
+endif()
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "_boost_MULTITHREADED")
+
+#======================
+# Systematically build up the Boost ABI tag for the 'tagged' and 'versioned' layouts
+# http://boost.org/doc/libs/1_66_0/more/getting_started/windows.html#library-naming
+# http://boost.org/doc/libs/1_66_0/boost/config/auto_link.hpp
+# http://boost.org/doc/libs/1_66_0/tools/build/src/tools/common.jam
+# http://boost.org/doc/libs/1_66_0/boostcpp.jam
+set( _boost_RELEASE_ABI_TAG "-")
+set( _boost_DEBUG_ABI_TAG   "-")
+# Key       Use this library when:
+#  s        linking statically to the C++ standard library and
+#           compiler runtime support libraries.
+if(Boost_USE_STATIC_RUNTIME)
+  set( _boost_RELEASE_ABI_TAG "${_boost_RELEASE_ABI_TAG}s")
+  set( _boost_DEBUG_ABI_TAG   "${_boost_DEBUG_ABI_TAG}s")
+endif()
+#  g        using debug versions of the standard and runtime
+#           support libraries
+if(WIN32 AND Boost_USE_DEBUG_RUNTIME)
+  if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC"
+          OR "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xClang"
+          OR "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xIntel"
+          OR "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xIntelLLVM")
+    string(APPEND _boost_DEBUG_ABI_TAG "g")
+  endif()
+endif()
+#  y        using special debug build of python
+if(Boost_USE_DEBUG_PYTHON)
+  string(APPEND _boost_DEBUG_ABI_TAG "y")
+endif()
+#  d        using a debug version of your code
+string(APPEND _boost_DEBUG_ABI_TAG "d")
+#  p        using the STLport standard library rather than the
+#           default one supplied with your compiler
+if(Boost_USE_STLPORT)
+  string(APPEND _boost_RELEASE_ABI_TAG "p")
+  string(APPEND _boost_DEBUG_ABI_TAG "p")
+endif()
+#  n        using the STLport deprecated "native iostreams" feature
+#           removed from the documentation in 1.43.0 but still present in
+#           boost/config/auto_link.hpp
+if(Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS)
+  string(APPEND _boost_RELEASE_ABI_TAG "n")
+  string(APPEND _boost_DEBUG_ABI_TAG "n")
+endif()
+
+#  -x86     Architecture and address model tag
+#           First character is the architecture, then word-size, either 32 or 64
+#           Only used in 'versioned' layout, added in Boost 1.66.0
+if(DEFINED Boost_ARCHITECTURE)
+  set(_boost_ARCHITECTURE_TAG "${Boost_ARCHITECTURE}")
+  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
+                         "_boost_ARCHITECTURE_TAG" SOURCE "user-specified via Boost_ARCHITECTURE")
+else()
+  set(_boost_ARCHITECTURE_TAG "")
+  # {CMAKE_CXX_COMPILER_ARCHITECTURE_ID} is not currently set for all compilers
+  if(NOT "x${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "x" AND NOT Boost_VERSION_STRING VERSION_LESS 1.66.0)
+    string(APPEND _boost_ARCHITECTURE_TAG "-")
+    # This needs to be kept in-sync with the section of CMakePlatformId.h.in
+    # inside 'defined(_WIN32) && defined(_MSC_VER)'
+    if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "IA64")
+      string(APPEND _boost_ARCHITECTURE_TAG "i")
+    elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "X86"
+              OR CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "x64")
+      string(APPEND _boost_ARCHITECTURE_TAG "x")
+    elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID MATCHES "^ARM")
+      string(APPEND _boost_ARCHITECTURE_TAG "a")
+    elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "MIPS")
+      string(APPEND _boost_ARCHITECTURE_TAG "m")
+    endif()
+
+    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+      string(APPEND _boost_ARCHITECTURE_TAG "64")
+    else()
+      string(APPEND _boost_ARCHITECTURE_TAG "32")
+    endif()
+  endif()
+  _Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
+                         "_boost_ARCHITECTURE_TAG" SOURCE "detected")
+endif()
+
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "_boost_RELEASE_ABI_TAG")
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "_boost_DEBUG_ABI_TAG")
+
+# ------------------------------------------------------------------------
+#  Begin finding boost libraries
+# ------------------------------------------------------------------------
+
+set(_Boost_VARS_LIB "")
+foreach(c DEBUG RELEASE)
+  set(_Boost_VARS_LIB_${c} BOOST_LIBRARYDIR Boost_LIBRARY_DIR_${c})
+  list(APPEND _Boost_VARS_LIB ${_Boost_VARS_LIB_${c}})
+  _Boost_CHANGE_DETECT(_Boost_CHANGE_LIBDIR_${c} ${_Boost_VARS_DIR} ${_Boost_VARS_LIB_${c}} Boost_INCLUDE_DIR)
+  # Clear Boost_LIBRARY_DIR_${c} if it did not change but other input affecting the
+  # location did.  We will find a new one based on the new inputs.
+  if(_Boost_CHANGE_LIBDIR_${c} AND NOT _Boost_LIBRARY_DIR_${c}_CHANGED)
+    unset(Boost_LIBRARY_DIR_${c} CACHE)
+  endif()
+
+  # If Boost_LIBRARY_DIR_[RELEASE,DEBUG] is set, prefer its value.
+  if(Boost_LIBRARY_DIR_${c})
+    set(_boost_LIBRARY_SEARCH_DIRS_${c} ${Boost_LIBRARY_DIR_${c}} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+  else()
+    set(_boost_LIBRARY_SEARCH_DIRS_${c} "")
+    if(BOOST_LIBRARYDIR)
+      list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${BOOST_LIBRARYDIR})
+    elseif(_ENV_BOOST_LIBRARYDIR)
+      list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${_ENV_BOOST_LIBRARYDIR})
+    endif()
+
+    if(BOOST_ROOT)
+      list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${BOOST_ROOT}/lib ${BOOST_ROOT}/stage/lib)
+      _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "${BOOST_ROOT}")
+    elseif(_ENV_BOOST_ROOT)
+      list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${_ENV_BOOST_ROOT}/lib ${_ENV_BOOST_ROOT}/stage/lib)
+      _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "${_ENV_BOOST_ROOT}")
+    endif()
+
+    list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c}
+      ${Boost_INCLUDE_DIR}/lib
+      ${Boost_INCLUDE_DIR}/../lib
+      ${Boost_INCLUDE_DIR}/stage/lib
+      )
+    _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "${Boost_INCLUDE_DIR}/..")
+    _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "${Boost_INCLUDE_DIR}")
+    if( Boost_NO_SYSTEM_PATHS )
+      list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} NO_CMAKE_SYSTEM_PATH NO_SYSTEM_ENVIRONMENT_PATH)
+    else()
+      foreach(ver ${_boost_TEST_VERSIONS})
+        string(REPLACE "." "_" ver "${ver}")
+        _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "C:/local/boost_${ver}")
+      endforeach()
+      _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "C:/boost")
+      list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} PATHS
+        C:/boost/lib
+        C:/boost
+        /sw/local/lib
+        )
+    endif()
+  endif()
+endforeach()
+
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "_boost_LIBRARY_SEARCH_DIRS_RELEASE")
+_Boost_DEBUG_PRINT_VAR("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}" "_boost_LIBRARY_SEARCH_DIRS_DEBUG")
+
+# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
+if( Boost_USE_STATIC_LIBS )
+  set( _boost_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
+  if(WIN32)
+    list(INSERT CMAKE_FIND_LIBRARY_SUFFIXES 0 .lib .a)
+  else()
+    set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
+  endif()
+endif()
+
+# We want to use the tag inline below without risking double dashes
+if(_boost_RELEASE_ABI_TAG)
+  if(${_boost_RELEASE_ABI_TAG} STREQUAL "-")
+    set(_boost_RELEASE_ABI_TAG "")
+  endif()
+endif()
+if(_boost_DEBUG_ABI_TAG)
+  if(${_boost_DEBUG_ABI_TAG} STREQUAL "-")
+    set(_boost_DEBUG_ABI_TAG "")
+  endif()
+endif()
+
+# The previous behavior of FindBoost when Boost_USE_STATIC_LIBS was enabled
+# on WIN32 was to:
+#  1. Search for static libs compiled against a SHARED C++ standard runtime library (use if found)
+#  2. Search for static libs compiled against a STATIC C++ standard runtime library (use if found)
+# We maintain this behavior since changing it could break people's builds.
+# To disable the ambiguous behavior, the user need only
+# set Boost_USE_STATIC_RUNTIME either ON or OFF.
+set(_boost_STATIC_RUNTIME_WORKAROUND false)
+if(WIN32 AND Boost_USE_STATIC_LIBS)
+  if(NOT DEFINED Boost_USE_STATIC_RUNTIME)
+    set(_boost_STATIC_RUNTIME_WORKAROUND TRUE)
+  endif()
+endif()
+
+# On versions < 1.35, remove the System library from the considered list
+# since it wasn't added until 1.35.
+if(Boost_VERSION_STRING AND Boost_FIND_COMPONENTS)
+  if(Boost_VERSION_STRING VERSION_LESS 1.35.0)
+    list(REMOVE_ITEM Boost_FIND_COMPONENTS system)
+  endif()
+endif()
+
+# Additional components may be required via component dependencies.
+# Add any missing components to the list.
+_Boost_MISSING_DEPENDENCIES(Boost_FIND_COMPONENTS _Boost_EXTRA_FIND_COMPONENTS)
+
+# If thread is required, get the thread libs as a dependency
+if("thread" IN_LIST Boost_FIND_COMPONENTS)
+  if(Boost_FIND_QUIETLY)
+    set(_Boost_find_quiet QUIET)
+  else()
+    set(_Boost_find_quiet "")
+  endif()
+  find_package(Threads ${_Boost_find_quiet})
+  unset(_Boost_find_quiet)
+endif()
+
+# If the user changed any of our control inputs flush previous results.
+if(_Boost_CHANGE_LIBDIR_DEBUG OR _Boost_CHANGE_LIBDIR_RELEASE OR _Boost_CHANGE_LIBNAME)
+  foreach(COMPONENT ${_Boost_COMPONENTS_SEARCHED})
+    string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
+    foreach(c DEBUG RELEASE)
+      set(_var Boost_${UPPERCOMPONENT}_LIBRARY_${c})
+      unset(${_var} CACHE)
+      set(${_var} "${_var}-NOTFOUND")
+    endforeach()
+  endforeach()
+  set(_Boost_COMPONENTS_SEARCHED "")
+endif()
+
+foreach(COMPONENT ${Boost_FIND_COMPONENTS})
+  string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
+
+  set( _boost_docstring_release "Boost ${COMPONENT} library (release)")
+  set( _boost_docstring_debug   "Boost ${COMPONENT} library (debug)")
+
+  # Compute component-specific hints.
+  set(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT "")
+  if(${COMPONENT} STREQUAL "mpi" OR ${COMPONENT} STREQUAL "mpi_python" OR
+     ${COMPONENT} STREQUAL "graph_parallel")
+    foreach(lib ${MPI_CXX_LIBRARIES} ${MPI_C_LIBRARIES})
+      if(IS_ABSOLUTE "${lib}")
+        get_filename_component(libdir "${lib}" PATH)
+        string(REPLACE "\\" "/" libdir "${libdir}")
+        list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT ${libdir})
+      endif()
+    endforeach()
+  endif()
+
+  # Handle Python version suffixes
+  unset(COMPONENT_PYTHON_VERSION_MAJOR)
+  unset(COMPONENT_PYTHON_VERSION_MINOR)
+  if(${COMPONENT} MATCHES "^(python|mpi_python|numpy)([0-9])\$")
+    set(COMPONENT_UNVERSIONED "${CMAKE_MATCH_1}")
+    set(COMPONENT_PYTHON_VERSION_MAJOR "${CMAKE_MATCH_2}")
+  elseif(${COMPONENT} MATCHES "^(python|mpi_python|numpy)([0-9])\\.?([0-9])\$")
+    set(COMPONENT_UNVERSIONED "${CMAKE_MATCH_1}")
+    set(COMPONENT_PYTHON_VERSION_MAJOR "${CMAKE_MATCH_2}")
+    set(COMPONENT_PYTHON_VERSION_MINOR "${CMAKE_MATCH_3}")
+  endif()
+
+  unset(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME)
+  if (COMPONENT_PYTHON_VERSION_MINOR)
+    # Boost >= 1.67
+    list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}")
+    # Debian/Ubuntu (Some versions omit the 2 and/or 3 from the suffix)
+    list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}${COMPONENT_PYTHON_VERSION_MAJOR}-py${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}")
+    list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}-py${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}")
+    # Gentoo
+    list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}-${COMPONENT_PYTHON_VERSION_MAJOR}.${COMPONENT_PYTHON_VERSION_MINOR}")
+    # RPMs
+    list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}-${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}")
+  endif()
+  if (COMPONENT_PYTHON_VERSION_MAJOR AND NOT COMPONENT_PYTHON_VERSION_MINOR)
+    # Boost < 1.67
+    list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}${COMPONENT_PYTHON_VERSION_MAJOR}")
+  endif()
+
+  # Consolidate and report component-specific hints.
+  if(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME)
+    list(REMOVE_DUPLICATES _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME)
+    _Boost_DEBUG_PRINT("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
+      "Component-specific library search names for ${COMPONENT_NAME}: ${_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME}")
+  endif()
+  if(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT)
+    list(REMOVE_DUPLICATES _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT)
+    _Boost_DEBUG_PRINT("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
+      "Component-specific library search paths for ${COMPONENT}: ${_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT}")
+  endif()
+
+  #
+  # Find headers
+  #
+  _Boost_COMPONENT_HEADERS("${COMPONENT}" Boost_${UPPERCOMPONENT}_HEADER_NAME)
+  # Look for a standard boost header file.
+  if(Boost_${UPPERCOMPONENT}_HEADER_NAME)
+    if(EXISTS "${Boost_INCLUDE_DIR}/${Boost_${UPPERCOMPONENT}_HEADER_NAME}")
+      set(Boost_${UPPERCOMPONENT}_HEADER ON)
+    else()
+      set(Boost_${UPPERCOMPONENT}_HEADER OFF)
+    endif()
+  else()
+    set(Boost_${UPPERCOMPONENT}_HEADER ON)
+    message(WARNING "No header defined for ${COMPONENT}; skipping header check "
+                    "(note: header-only libraries have no designated component)")
+  endif()
+
+  #
+  # Find RELEASE libraries
+  #
+  unset(_boost_RELEASE_NAMES)
+  foreach(component IN LISTS _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME COMPONENT)
+    foreach(compiler IN LISTS _boost_COMPILER)
+      list(APPEND _boost_RELEASE_NAMES
+        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
+        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG}
+        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG} )
+    endforeach()
+    list(APPEND _boost_RELEASE_NAMES
+      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
+      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG}
+      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}
+      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}
+      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component} )
+    if(_boost_STATIC_RUNTIME_WORKAROUND)
+      set(_boost_RELEASE_STATIC_ABI_TAG "-s${_boost_RELEASE_ABI_TAG}")
+      foreach(compiler IN LISTS _boost_COMPILER)
+        list(APPEND _boost_RELEASE_NAMES
+          ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
+          ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}
+          ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG} )
+      endforeach()
+      list(APPEND _boost_RELEASE_NAMES
+        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
+        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}
+        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG} )
+    endif()
+  endforeach()
+  if(Boost_THREADAPI AND ${COMPONENT} STREQUAL "thread")
+    _Boost_PREPEND_LIST_WITH_THREADAPI(_boost_RELEASE_NAMES ${_boost_RELEASE_NAMES})
+  endif()
+  _Boost_DEBUG_PRINT("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
+                     "Searching for ${UPPERCOMPONENT}_LIBRARY_RELEASE: ${_boost_RELEASE_NAMES}")
+
+  # if Boost_LIBRARY_DIR_RELEASE is not defined,
+  # but Boost_LIBRARY_DIR_DEBUG is, look there first for RELEASE libs
+  if(NOT Boost_LIBRARY_DIR_RELEASE AND Boost_LIBRARY_DIR_DEBUG)
+    list(INSERT _boost_LIBRARY_SEARCH_DIRS_RELEASE 0 ${Boost_LIBRARY_DIR_DEBUG})
+  endif()
+
+  # Avoid passing backslashes to _Boost_FIND_LIBRARY due to macro re-parsing.
+  string(REPLACE "\\" "/" _boost_LIBRARY_SEARCH_DIRS_tmp "${_boost_LIBRARY_SEARCH_DIRS_RELEASE}")
+
+  if(Boost_USE_RELEASE_LIBS)
+    _Boost_FIND_LIBRARY(Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE RELEASE
+      NAMES ${_boost_RELEASE_NAMES}
+      HINTS ${_boost_LIBRARY_SEARCH_DIRS_tmp}
+      NAMES_PER_DIR
+      DOC "${_boost_docstring_release}"
+      )
+  endif()
+
+  #
+  # Find DEBUG libraries
+  #
+  unset(_boost_DEBUG_NAMES)
+  foreach(component IN LISTS _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME COMPONENT)
+    foreach(compiler IN LISTS _boost_COMPILER)
+      list(APPEND _boost_DEBUG_NAMES
+        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
+        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}${_boost_ARCHITECTURE_TAG}
+        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG} )
+    endforeach()
+    list(APPEND _boost_DEBUG_NAMES
+      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
+      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}${_boost_ARCHITECTURE_TAG}
+      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}
+      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}
+      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component} )
+    if(_boost_STATIC_RUNTIME_WORKAROUND)
+      set(_boost_DEBUG_STATIC_ABI_TAG "-s${_boost_DEBUG_ABI_TAG}")
+      foreach(compiler IN LISTS _boost_COMPILER)
+        list(APPEND _boost_DEBUG_NAMES
+          ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
+          ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}
+          ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG} )
+      endforeach()
+      list(APPEND _boost_DEBUG_NAMES
+        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
+        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}
+        ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG} )
+    endif()
+  endforeach()
+  if(Boost_THREADAPI AND ${COMPONENT} STREQUAL "thread")
+     _Boost_PREPEND_LIST_WITH_THREADAPI(_boost_DEBUG_NAMES ${_boost_DEBUG_NAMES})
+  endif()
+  _Boost_DEBUG_PRINT("${CMAKE_CURRENT_LIST_FILE}" "${CMAKE_CURRENT_LIST_LINE}"
+                     "Searching for ${UPPERCOMPONENT}_LIBRARY_DEBUG: ${_boost_DEBUG_NAMES}")
+
+  # if Boost_LIBRARY_DIR_DEBUG is not defined,
+  # but Boost_LIBRARY_DIR_RELEASE is, look there first for DEBUG libs
+  if(NOT Boost_LIBRARY_DIR_DEBUG AND Boost_LIBRARY_DIR_RELEASE)
+    list(INSERT _boost_LIBRARY_SEARCH_DIRS_DEBUG 0 ${Boost_LIBRARY_DIR_RELEASE})
+  endif()
+
+  # Avoid passing backslashes to _Boost_FIND_LIBRARY due to macro re-parsing.
+  string(REPLACE "\\" "/" _boost_LIBRARY_SEARCH_DIRS_tmp "${_boost_LIBRARY_SEARCH_DIRS_DEBUG}")
+
+  if(Boost_USE_DEBUG_LIBS)
+    _Boost_FIND_LIBRARY(Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG DEBUG
+      NAMES ${_boost_DEBUG_NAMES}
+      HINTS ${_boost_LIBRARY_SEARCH_DIRS_tmp}
+      NAMES_PER_DIR
+      DOC "${_boost_docstring_debug}"
+      )
+  endif ()
+
+  if(Boost_REALPATH)
+    _Boost_SWAP_WITH_REALPATH(Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE "${_boost_docstring_release}")
+    _Boost_SWAP_WITH_REALPATH(Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG   "${_boost_docstring_debug}"  )
+  endif()
+
+  _Boost_ADJUST_LIB_VARS(${UPPERCOMPONENT})
+
+  # Check if component requires some compiler features
+  _Boost_COMPILER_FEATURES(${COMPONENT} _Boost_${UPPERCOMPONENT}_COMPILER_FEATURES)
+
+endforeach()
+
+# Restore the original find library ordering
+if( Boost_USE_STATIC_LIBS )
+  set(CMAKE_FIND_LIBRARY_SUFFIXES ${_boost_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
+endif()
+
+# ------------------------------------------------------------------------
+#  End finding boost libraries
+# ------------------------------------------------------------------------
+
+set(Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIR})
+set(Boost_LIBRARY_DIRS)
+if(Boost_LIBRARY_DIR_RELEASE)
+  list(APPEND Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIR_RELEASE})
+endif()
+if(Boost_LIBRARY_DIR_DEBUG)
+  list(APPEND Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIR_DEBUG})
+endif()
+if(Boost_LIBRARY_DIRS)
+  list(REMOVE_DUPLICATES Boost_LIBRARY_DIRS)
+endif()
+
+# ------------------------------------------------------------------------
+#  Call FPHSA helper, see https://cmake.org/cmake/help/latest/module/FindPackageHandleStandardArgs.html
+# ------------------------------------------------------------------------
+
+# Define aliases as needed by the component handler in the FPHSA helper below
+foreach(_comp IN LISTS Boost_FIND_COMPONENTS)
+  string(TOUPPER ${_comp} _uppercomp)
+  if(DEFINED Boost_${_uppercomp}_FOUND)
+    set(Boost_${_comp}_FOUND ${Boost_${_uppercomp}_FOUND})
+  endif()
+endforeach()
+
+find_package_handle_standard_args(Boost
+  REQUIRED_VARS Boost_INCLUDE_DIR
+  VERSION_VAR Boost_VERSION_STRING
+  HANDLE_COMPONENTS)
+
+if(Boost_FOUND)
+  if( NOT Boost_LIBRARY_DIRS )
+    # Compatibility Code for backwards compatibility with CMake
+    # 2.4's FindBoost module.
+
+    # Look for the boost library path.
+    # Note that the user may not have installed any libraries
+    # so it is quite possible the Boost_LIBRARY_DIRS may not exist.
+    set(_boost_LIB_DIR ${Boost_INCLUDE_DIR})
+
+    if("${_boost_LIB_DIR}" MATCHES "boost-[0-9]+")
+      get_filename_component(_boost_LIB_DIR ${_boost_LIB_DIR} PATH)
+    endif()
+
+    if("${_boost_LIB_DIR}" MATCHES "/include$")
+      # Strip off the trailing "/include" in the path.
+      get_filename_component(_boost_LIB_DIR ${_boost_LIB_DIR} PATH)
+    endif()
+
+    if(EXISTS "${_boost_LIB_DIR}/lib")
+      string(APPEND _boost_LIB_DIR /lib)
+    elseif(EXISTS "${_boost_LIB_DIR}/stage/lib")
+      string(APPEND _boost_LIB_DIR "/stage/lib")
+    else()
+      set(_boost_LIB_DIR "")
+    endif()
+
+    if(_boost_LIB_DIR AND EXISTS "${_boost_LIB_DIR}")
+      set(Boost_LIBRARY_DIRS ${_boost_LIB_DIR})
+    endif()
+
+  endif()
+else()
+  # Boost headers were not found so no components were found.
+  foreach(COMPONENT ${Boost_FIND_COMPONENTS})
+    string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
+    set(Boost_${UPPERCOMPONENT}_FOUND 0)
+  endforeach()
+endif()
+
+# ------------------------------------------------------------------------
+#  Add imported targets
+# ------------------------------------------------------------------------
+
+if(Boost_FOUND)
+  # The builtin CMake package in Boost 1.70+ introduces a new name
+  # for the header-only lib, let's provide the same UI in module mode
+  if(NOT TARGET Boost::headers)
+    add_library(Boost::headers INTERFACE IMPORTED)
+    if(Boost_INCLUDE_DIRS)
+      set_target_properties(Boost::headers PROPERTIES
+        INTERFACE_INCLUDE_DIRECTORIES "${Boost_INCLUDE_DIRS}")
+    endif()
+  endif()
+
+  # Define the old target name for header-only libraries for backwards
+  # compat.
+  if(NOT TARGET Boost::boost)
+    add_library(Boost::boost INTERFACE IMPORTED)
+    set_target_properties(Boost::boost
+      PROPERTIES INTERFACE_LINK_LIBRARIES Boost::headers)
+  endif()
+
+  foreach(COMPONENT ${Boost_FIND_COMPONENTS})
+    if(_Boost_IMPORTED_TARGETS AND NOT TARGET Boost::${COMPONENT})
+      string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
+      if(Boost_${UPPERCOMPONENT}_FOUND)
+        if(Boost_USE_STATIC_LIBS)
+          add_library(Boost::${COMPONENT} STATIC IMPORTED)
+        else()
+          # Even if Boost_USE_STATIC_LIBS is OFF, we might have static
+          # libraries as a result.
+          add_library(Boost::${COMPONENT} UNKNOWN IMPORTED)
+        endif()
+        if(Boost_INCLUDE_DIRS)
+          set_target_properties(Boost::${COMPONENT} PROPERTIES
+            INTERFACE_INCLUDE_DIRECTORIES "${Boost_INCLUDE_DIRS}")
+        endif()
+        if(EXISTS "${Boost_${UPPERCOMPONENT}_LIBRARY}")
+          set_target_properties(Boost::${COMPONENT} PROPERTIES
+            IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+            IMPORTED_LOCATION "${Boost_${UPPERCOMPONENT}_LIBRARY}")
+        endif()
+        if(EXISTS "${Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE}")
+          set_property(TARGET Boost::${COMPONENT} APPEND PROPERTY
+            IMPORTED_CONFIGURATIONS RELEASE)
+          set_target_properties(Boost::${COMPONENT} PROPERTIES
+            IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
+            IMPORTED_LOCATION_RELEASE "${Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE}")
+        endif()
+        if(EXISTS "${Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG}")
+          set_property(TARGET Boost::${COMPONENT} APPEND PROPERTY
+            IMPORTED_CONFIGURATIONS DEBUG)
+          set_target_properties(Boost::${COMPONENT} PROPERTIES
+            IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
+            IMPORTED_LOCATION_DEBUG "${Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG}")
+        endif()
+        if(_Boost_${UPPERCOMPONENT}_DEPENDENCIES)
+          unset(_Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES)
+          foreach(dep ${_Boost_${UPPERCOMPONENT}_DEPENDENCIES})
+            list(APPEND _Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES Boost::${dep})
+          endforeach()
+          if(COMPONENT STREQUAL "thread")
+            list(APPEND _Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES Threads::Threads)
+          endif()
+          set_target_properties(Boost::${COMPONENT} PROPERTIES
+            INTERFACE_LINK_LIBRARIES "${_Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES}")
+        endif()
+        if(_Boost_${UPPERCOMPONENT}_COMPILER_FEATURES)
+          set_target_properties(Boost::${COMPONENT} PROPERTIES
+            INTERFACE_COMPILE_FEATURES "${_Boost_${UPPERCOMPONENT}_COMPILER_FEATURES}")
+        endif()
+      endif()
+    endif()
+  endforeach()
+
+  # Supply Boost_LIB_DIAGNOSTIC_DEFINITIONS as a convenience target. It
+  # will only contain any interface definitions on WIN32, but is created
+  # on all platforms to keep end user code free from platform dependent
+  # code.  Also provide convenience targets to disable autolinking and
+  # enable dynamic linking.
+  if(NOT TARGET Boost::diagnostic_definitions)
+    add_library(Boost::diagnostic_definitions INTERFACE IMPORTED)
+    add_library(Boost::disable_autolinking INTERFACE IMPORTED)
+    add_library(Boost::dynamic_linking INTERFACE IMPORTED)
+    set_target_properties(Boost::dynamic_linking PROPERTIES
+      INTERFACE_COMPILE_DEFINITIONS "BOOST_ALL_DYN_LINK")
+  endif()
+  if(WIN32)
+    # In windows, automatic linking is performed, so you do not have
+    # to specify the libraries.  If you are linking to a dynamic
+    # runtime, then you can choose to link to either a static or a
+    # dynamic Boost library, the default is to do a static link.  You
+    # can alter this for a specific library "whatever" by defining
+    # BOOST_WHATEVER_DYN_LINK to force Boost library "whatever" to be
+    # linked dynamically.  Alternatively you can force all Boost
+    # libraries to dynamic link by defining BOOST_ALL_DYN_LINK.
+
+    # This feature can be disabled for Boost library "whatever" by
+    # defining BOOST_WHATEVER_NO_LIB, or for all of Boost by defining
+    # BOOST_ALL_NO_LIB.
+
+    # If you want to observe which libraries are being linked against
+    # then defining BOOST_LIB_DIAGNOSTIC will cause the auto-linking
+    # code to emit a #pragma message each time a library is selected
+    # for linking.
+    set(Boost_LIB_DIAGNOSTIC_DEFINITIONS "-DBOOST_LIB_DIAGNOSTIC")
+    set_target_properties(Boost::diagnostic_definitions PROPERTIES
+      INTERFACE_COMPILE_DEFINITIONS "BOOST_LIB_DIAGNOSTIC")
+    set_target_properties(Boost::disable_autolinking PROPERTIES
+      INTERFACE_COMPILE_DEFINITIONS "BOOST_ALL_NO_LIB")
+  endif()
+endif()
+
+# ------------------------------------------------------------------------
+#  Finalize
+# ------------------------------------------------------------------------
+
+# Report Boost_LIBRARIES
+set(Boost_LIBRARIES "")
+foreach(_comp IN LISTS Boost_FIND_COMPONENTS)
+  string(TOUPPER ${_comp} _uppercomp)
+  if(Boost_${_uppercomp}_FOUND)
+    list(APPEND Boost_LIBRARIES ${Boost_${_uppercomp}_LIBRARY})
+    if(_comp STREQUAL "thread")
+      list(APPEND Boost_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
+    endif()
+  endif()
+endforeach()
+
+# Configure display of cache entries in GUI.
+foreach(v BOOSTROOT BOOST_ROOT ${_Boost_VARS_INC} ${_Boost_VARS_LIB})
+  get_property(_type CACHE ${v} PROPERTY TYPE)
+  if(_type)
+    set_property(CACHE ${v} PROPERTY ADVANCED 1)
+    if("x${_type}" STREQUAL "xUNINITIALIZED")
+      if("x${v}" STREQUAL "xBoost_ADDITIONAL_VERSIONS")
+        set_property(CACHE ${v} PROPERTY TYPE STRING)
+      else()
+        set_property(CACHE ${v} PROPERTY TYPE PATH)
+      endif()
+    endif()
+  endif()
+endforeach()
+
+# Record last used values of input variables so we can
+# detect on the next run if the user changed them.
+foreach(v
+    ${_Boost_VARS_INC} ${_Boost_VARS_LIB}
+    ${_Boost_VARS_DIR} ${_Boost_VARS_NAME}
+    )
+  if(DEFINED ${v})
+    set(_${v}_LAST "${${v}}" CACHE INTERNAL "Last used ${v} value.")
+  else()
+    unset(_${v}_LAST CACHE)
+  endif()
+endforeach()
+
+# Maintain a persistent list of components requested anywhere since
+# the last flush.
+set(_Boost_COMPONENTS_SEARCHED "${_Boost_COMPONENTS_SEARCHED}")
+list(APPEND _Boost_COMPONENTS_SEARCHED ${Boost_FIND_COMPONENTS})
+list(REMOVE_DUPLICATES _Boost_COMPONENTS_SEARCHED)
+list(SORT _Boost_COMPONENTS_SEARCHED)
+set(_Boost_COMPONENTS_SEARCHED "${_Boost_COMPONENTS_SEARCHED}"
+  CACHE INTERNAL "Components requested for this build tree.")
+
+# Restore project's policies
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FindBullet.cmake b/share/cmake-3.22/Modules/FindBullet.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindBullet.cmake
rename to share/cmake-3.22/Modules/FindBullet.cmake
diff --git a/share/cmake-3.18/Modules/FindCABLE.cmake b/share/cmake-3.22/Modules/FindCABLE.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindCABLE.cmake
rename to share/cmake-3.22/Modules/FindCABLE.cmake
diff --git a/share/cmake-3.22/Modules/FindCUDA.cmake b/share/cmake-3.22/Modules/FindCUDA.cmake
new file mode 100644
index 0000000..dd795f4
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindCUDA.cmake
@@ -0,0 +1,2172 @@
+#[=======================================================================[.rst:
+FindCUDA
+--------
+
+.. warning:: *Deprecated since version 3.10.*
+
+It is no longer necessary to use this module or call ``find_package(CUDA)``
+for compiling CUDA code. Instead, list ``CUDA`` among the languages named
+in the top-level call to the :command:`project` command, or call the
+:command:`enable_language` command with ``CUDA``.
+Then one can add CUDA (``.cu``) sources directly to targets similar to other
+languages.
+
+.. versionadded:: 3.17
+  To find and use the CUDA toolkit libraries manually, use the
+  :module:`FindCUDAToolkit` module instead.  It works regardless of the
+  ``CUDA`` language being enabled.
+
+Documentation of Deprecated Usage
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Tools for building CUDA C files: libraries and build dependencies.
+
+This script locates the NVIDIA CUDA C tools.  It should work on Linux,
+Windows, and macOS and should be reasonably up to date with CUDA C
+releases.
+
+.. versionadded:: 3.19
+  QNX support.
+
+This script makes use of the standard :command:`find_package` arguments of
+``<VERSION>``, ``REQUIRED`` and ``QUIET``.  ``CUDA_FOUND`` will report if an
+acceptable version of CUDA was found.
+
+The script will prompt the user to specify ``CUDA_TOOLKIT_ROOT_DIR`` if
+the prefix cannot be determined by the location of nvcc in the system
+path and ``REQUIRED`` is specified to :command:`find_package`.  To use
+a different installed version of the toolkit set the environment variable
+``CUDA_BIN_PATH`` before running cmake (e.g.
+``CUDA_BIN_PATH=/usr/local/cuda1.0`` instead of the default
+``/usr/local/cuda``) or set ``CUDA_TOOLKIT_ROOT_DIR`` after configuring.  If
+you change the value of ``CUDA_TOOLKIT_ROOT_DIR``, various components that
+depend on the path will be relocated.
+
+It might be necessary to set ``CUDA_TOOLKIT_ROOT_DIR`` manually on certain
+platforms, or to use a CUDA runtime not installed in the default
+location.  In newer versions of the toolkit the CUDA library is
+included with the graphics driver -- be sure that the driver version
+matches what is needed by the CUDA runtime version.
+
+Input Variables
+"""""""""""""""
+
+The following variables affect the behavior of the macros in the
+script (in alphabetical order).  Note that any of these flags can be
+changed multiple times in the same directory before calling
+``cuda_add_executable()``, ``cuda_add_library()``, ``cuda_compile()``,
+``cuda_compile_ptx()``, ``cuda_compile_fatbin()``, ``cuda_compile_cubin()``
+or ``cuda_wrap_srcs()``:
+
+``CUDA_64_BIT_DEVICE_CODE`` (Default: host bit size)
+  Set to ``ON`` to compile for 64 bit device code, OFF for 32 bit device code.
+  Note that making this different from the host code when generating object
+  or C files from CUDA code just won't work, because size_t gets defined by
+  nvcc in the generated source.  If you compile to PTX and then load the
+  file yourself, you can mix bit sizes between device and host.
+
+``CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE`` (Default: ``ON``)
+  Set to ``ON`` if you want the custom build rule to be attached to the source
+  file in Visual Studio.  Turn OFF if you add the same cuda file to multiple
+  targets.
+
+  This allows the user to build the target from the CUDA file; however, bad
+  things can happen if the CUDA source file is added to multiple targets.
+  When performing parallel builds it is possible for the custom build
+  command to be run more than once and in parallel causing cryptic build
+  errors.  VS runs the rules for every source file in the target, and a
+  source can have only one rule no matter how many projects it is added to.
+  When the rule is run from multiple targets race conditions can occur on
+  the generated file.  Eventually everything will get built, but if the user
+  is unaware of this behavior, there may be confusion.  It would be nice if
+  this script could detect the reuse of source files across multiple targets
+  and turn the option off for the user, but no good solution could be found.
+
+``CUDA_BUILD_CUBIN`` (Default: ``OFF``)
+  Set to ``ON`` to enable and extra compilation pass with the ``-cubin`` option in
+  Device mode. The output is parsed and register, shared memory usage is
+  printed during build.
+
+``CUDA_BUILD_EMULATION`` (Default: ``OFF`` for device mode)
+  Set to ``ON`` for Emulation mode. ``-D_DEVICEEMU`` is defined for CUDA C files
+  when ``CUDA_BUILD_EMULATION`` is ``TRUE``.
+
+``CUDA_LINK_LIBRARIES_KEYWORD`` (Default: ``""``)
+  .. versionadded:: 3.9
+
+  The ``<PRIVATE|PUBLIC|INTERFACE>`` keyword to use for internal
+  :command:`target_link_libraries` calls. The default is to use no keyword which
+  uses the old "plain" form of :command:`target_link_libraries`. Note that is matters
+  because whatever is used inside the ``FindCUDA`` module must also be used
+  outside - the two forms of :command:`target_link_libraries` cannot be mixed.
+
+``CUDA_GENERATED_OUTPUT_DIR`` (Default: :variable:`CMAKE_CURRENT_BINARY_DIR`)
+  Set to the path you wish to have the generated files placed.  If it is
+  blank output files will be placed in :variable:`CMAKE_CURRENT_BINARY_DIR`.
+  Intermediate files will always be placed in
+  ``CMAKE_CURRENT_BINARY_DIR/CMakeFiles``.
+
+``CUDA_HOST_COMPILATION_CPP`` (Default: ``ON``)
+  Set to ``OFF`` for C compilation of host code.
+
+``CUDA_HOST_COMPILER`` (Default: ``CMAKE_C_COMPILER``)
+  Set the host compiler to be used by nvcc.  Ignored if ``-ccbin`` or
+  ``--compiler-bindir`` is already present in the ``CUDA_NVCC_FLAGS`` or
+  ``CUDA_NVCC_FLAGS_<CONFIG>`` variables.  For Visual Studio targets,
+  the host compiler is constructed with one or more visual studio macros
+  such as ``$(VCInstallDir)``, that expands out to the path when
+  the command is run from within VS.
+
+  .. versionadded:: 3.13
+    If the :envvar:`CUDAHOSTCXX` environment variable is set it will
+    be used as the default.
+
+``CUDA_NVCC_FLAGS``, ``CUDA_NVCC_FLAGS_<CONFIG>``
+  Additional NVCC command line arguments.  NOTE: multiple arguments must be
+  semi-colon delimited (e.g. ``--compiler-options;-Wall``)
+
+  .. versionadded:: 3.6
+    Contents of these variables may use
+    :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+``CUDA_PROPAGATE_HOST_FLAGS`` (Default: ``ON``)
+  Set to ``ON`` to propagate :variable:`CMAKE_{C,CXX}_FLAGS <CMAKE_<LANG>_FLAGS>` and their configuration
+  dependent counterparts (e.g. ``CMAKE_C_FLAGS_DEBUG``) automatically to the
+  host compiler through nvcc's ``-Xcompiler`` flag.  This helps make the
+  generated host code match the rest of the system better.  Sometimes
+  certain flags give nvcc problems, and this will help you turn the flag
+  propagation off.  This does not affect the flags supplied directly to nvcc
+  via ``CUDA_NVCC_FLAGS`` or through the ``OPTION`` flags specified through
+  ``cuda_add_library()``, ``cuda_add_executable()``, or ``cuda_wrap_srcs()``.  Flags used for
+  shared library compilation are not affected by this flag.
+
+``CUDA_SEPARABLE_COMPILATION`` (Default: ``OFF``)
+  If set this will enable separable compilation for all CUDA runtime object
+  files.  If used outside of ``cuda_add_executable()`` and ``cuda_add_library()``
+  (e.g. calling ``cuda_wrap_srcs()`` directly),
+  ``cuda_compute_separable_compilation_object_file_name()`` and
+  ``cuda_link_separable_compilation_objects()`` should be called.
+
+``CUDA_SOURCE_PROPERTY_FORMAT``
+  .. versionadded:: 3.3
+
+  If this source file property is set, it can override the format specified
+  to ``cuda_wrap_srcs()`` (``OBJ``, ``PTX``, ``CUBIN``, or ``FATBIN``).  If an input source file
+  is not a ``.cu`` file, setting this file will cause it to be treated as a ``.cu``
+  file. See documentation for set_source_files_properties on how to set
+  this property.
+
+``CUDA_USE_STATIC_CUDA_RUNTIME`` (Default: ``ON``)
+  .. versionadded:: 3.3
+
+  When enabled the static version of the CUDA runtime library will be used
+  in ``CUDA_LIBRARIES``.  If the version of CUDA configured doesn't support
+  this option, then it will be silently disabled.
+
+``CUDA_VERBOSE_BUILD`` (Default: ``OFF``)
+  Set to ``ON`` to see all the commands used when building the CUDA file.  When
+  using a Makefile generator the value defaults to ``VERBOSE`` (run
+  ``make VERBOSE=1`` to see output), although setting ``CUDA_VERBOSE_BUILD`` to ``ON`` will
+  always print the output.
+
+Commands
+""""""""
+
+The script creates the following functions and macros (in alphabetical order):
+
+.. code-block:: cmake
+
+  cuda_add_cufft_to_target(<cuda_target>)
+
+Adds the cufft library to the target (can be any target).  Handles whether
+you are in emulation mode or not.
+
+.. code-block:: cmake
+
+  cuda_add_cublas_to_target(<cuda_target>)
+
+Adds the cublas library to the target (can be any target).  Handles
+whether you are in emulation mode or not.
+
+.. code-block:: cmake
+
+  cuda_add_executable(<cuda_target> <file>...
+                      [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [OPTIONS ...])
+
+Creates an executable ``<cuda_target>`` which is made up of the files
+specified.  All of the non CUDA C files are compiled using the standard
+build rules specified by CMake and the CUDA files are compiled to object
+files using nvcc and the host compiler.  In addition ``CUDA_INCLUDE_DIRS`` is
+added automatically to :command:`include_directories`.  Some standard CMake target
+calls can be used on the target after calling this macro
+(e.g. :command:`set_target_properties` and :command:`target_link_libraries`), but setting
+properties that adjust compilation flags will not affect code compiled by
+nvcc.  Such flags should be modified before calling ``cuda_add_executable()``,
+``cuda_add_library()`` or ``cuda_wrap_srcs()``.
+
+.. code-block:: cmake
+
+  cuda_add_library(<cuda_target> <file>...
+                   [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] [OPTIONS ...])
+
+Same as ``cuda_add_executable()`` except that a library is created.
+
+.. code-block:: cmake
+
+  cuda_build_clean_target()
+
+Creates a convenience target that deletes all the dependency files
+generated.  You should make clean after running this target to ensure the
+dependency files get regenerated.
+
+.. code-block:: cmake
+
+  cuda_compile(<generated_files> <file>... [STATIC | SHARED | MODULE]
+               [OPTIONS ...])
+
+Returns a list of generated files from the input source files to be used
+with :command:`add_library` or :command:`add_executable`.
+
+.. code-block:: cmake
+
+  cuda_compile_ptx(<generated_files> <file>... [OPTIONS ...])
+
+Returns a list of ``PTX`` files generated from the input source files.
+
+.. code-block:: cmake
+
+  cuda_compile_fatbin(<generated_files> <file>... [OPTIONS ...])
+
+.. versionadded:: 3.1
+
+Returns a list of ``FATBIN`` files generated from the input source files.
+
+.. code-block:: cmake
+
+  cuda_compile_cubin(<generated_files> <file>... [OPTIONS ...])
+
+.. versionadded:: 3.1
+
+Returns a list of ``CUBIN`` files generated from the input source files.
+
+.. code-block:: cmake
+
+  cuda_compute_separable_compilation_object_file_name(<output_file_var>
+                                                      <cuda_target>
+                                                      <object_files>)
+
+Compute the name of the intermediate link file used for separable
+compilation.  This file name is typically passed into
+``CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS``.  output_file_var is produced
+based on cuda_target the list of objects files that need separable
+compilation as specified by ``<object_files>``.  If the ``<object_files>`` list is
+empty, then ``<output_file_var>`` will be empty.  This function is called
+automatically for ``cuda_add_library()`` and ``cuda_add_executable()``.  Note that
+this is a function and not a macro.
+
+.. code-block:: cmake
+
+  cuda_include_directories(path0 path1 ...)
+
+Sets the directories that should be passed to nvcc
+(e.g. ``nvcc -Ipath0 -Ipath1 ...``). These paths usually contain other ``.cu``
+files.
+
+.. code-block:: cmake
+
+  cuda_link_separable_compilation_objects(<output_file_var> <cuda_target>
+                                          <nvcc_flags> <object_files>)
+
+Generates the link object required by separable compilation from the given
+object files.  This is called automatically for ``cuda_add_executable()`` and
+``cuda_add_library()``, but can be called manually when using ``cuda_wrap_srcs()``
+directly.  When called from ``cuda_add_library()`` or ``cuda_add_executable()`` the
+``<nvcc_flags>`` passed in are the same as the flags passed in via the ``OPTIONS``
+argument.  The only nvcc flag added automatically is the bitness flag as
+specified by ``CUDA_64_BIT_DEVICE_CODE``.  Note that this is a function
+instead of a macro.
+
+.. code-block:: cmake
+
+  cuda_select_nvcc_arch_flags(<out_variable> [<target_CUDA_architecture> ...])
+
+Selects GPU arch flags for nvcc based on ``target_CUDA_architecture``.
+
+Values for ``target_CUDA_architecture``:
+
+* ``Auto``: detects local machine GPU compute arch at runtime.
+* ``Common`` and ``All``: cover common and entire subsets of architectures.
+* ``<name>``: one of ``Fermi``, ``Kepler``, ``Maxwell``, ``Kepler+Tegra``, ``Kepler+Tesla``, ``Maxwell+Tegra``, ``Pascal``.
+* ``<ver>``, ``<ver>(<ver>)``, ``<ver>+PTX``, where ``<ver>`` is one of
+  ``2.0``, ``2.1``, ``3.0``, ``3.2``, ``3.5``, ``3.7``, ``5.0``, ``5.2``, ``5.3``, ``6.0``, ``6.2``.
+
+Returns list of flags to be added to ``CUDA_NVCC_FLAGS`` in ``<out_variable>``.
+Additionally, sets ``<out_variable>_readable`` to the resulting numeric list.
+
+Example::
+
+  cuda_select_nvcc_arch_flags(ARCH_FLAGS 3.0 3.5+PTX 5.2(5.0) Maxwell)
+  list(APPEND CUDA_NVCC_FLAGS ${ARCH_FLAGS})
+
+More info on CUDA architectures: https://en.wikipedia.org/wiki/CUDA.
+Note that this is a function instead of a macro.
+
+.. code-block:: cmake
+
+  cuda_wrap_srcs(<cuda_target> <format> <generated_files> <file>...
+                 [STATIC | SHARED | MODULE] [OPTIONS ...])
+
+This is where all the magic happens.  ``cuda_add_executable()``,
+``cuda_add_library()``, ``cuda_compile()``, and ``cuda_compile_ptx()`` all call this
+function under the hood.
+
+Given the list of files ``<file>...`` this macro generates
+custom commands that generate either PTX or linkable objects (use ``PTX`` or
+``OBJ`` for the ``<format>`` argument to switch).  Files that don't end with ``.cu``
+or have the ``HEADER_FILE_ONLY`` property are ignored.
+
+The arguments passed in after ``OPTIONS`` are extra command line options to
+give to nvcc.  You can also specify per configuration options by
+specifying the name of the configuration followed by the options.  General
+options must precede configuration specific options.  Not all
+configurations need to be specified, only the ones provided will be used.
+For example:
+
+.. code-block:: cmake
+
+  cuda_add_executable(...
+    OPTIONS -DFLAG=2 "-DFLAG_OTHER=space in flag"
+    DEBUG -g
+    RELEASE --use_fast_math
+    RELWITHDEBINFO --use_fast_math;-g
+    MINSIZEREL --use_fast_math)
+
+For certain configurations (namely VS generating object files with
+``CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE`` set to ``ON``), no generated file will
+be produced for the given cuda file.  This is because when you add the
+cuda file to Visual Studio it knows that this file produces an object file
+and will link in the resulting object file automatically.
+
+This script will also generate a separate cmake script that is used at
+build time to invoke nvcc.  This is for several reasons:
+
+* nvcc can return negative numbers as return values which confuses
+  Visual Studio into thinking that the command succeeded.  The script now
+  checks the error codes and produces errors when there was a problem.
+
+* nvcc has been known to not delete incomplete results when it
+  encounters problems.  This confuses build systems into thinking the
+  target was generated when in fact an unusable file exists.  The script
+  now deletes the output files if there was an error.
+
+* By putting all the options that affect the build into a file and then
+  make the build rule dependent on the file, the output files will be
+  regenerated when the options change.
+
+This script also looks at optional arguments ``STATIC``, ``SHARED``, or ``MODULE`` to
+determine when to target the object compilation for a shared library.
+:variable:`BUILD_SHARED_LIBS` is ignored in ``cuda_wrap_srcs()``, but it is respected in
+``cuda_add_library()``.  On some systems special flags are added for building
+objects intended for shared libraries.  A preprocessor macro,
+``<target_name>_EXPORTS`` is defined when a shared library compilation is
+detected.
+
+Flags passed into add_definitions with ``-D`` or ``/D`` are passed along to nvcc.
+
+Result Variables
+""""""""""""""""
+
+The script defines the following variables:
+
+``CUDA_VERSION_MAJOR``
+  The major version of cuda as reported by nvcc.
+
+``CUDA_VERSION_MINOR``
+  The minor version.
+
+``CUDA_VERSION``, ``CUDA_VERSION_STRING``
+  Full version in the ``X.Y`` format.
+
+``CUDA_HAS_FP16``
+  .. versionadded:: 3.6
+    Whether a short float (``float16``, ``fp16``) is supported.
+
+``CUDA_TOOLKIT_ROOT_DIR``
+  Path to the CUDA Toolkit (defined if not set).
+
+``CUDA_SDK_ROOT_DIR``
+  Path to the CUDA SDK.  Use this to find files in the SDK.  This script will
+  not directly support finding specific libraries or headers, as that isn't
+  supported by NVIDIA.  If you want to change libraries when the path changes
+  see the ``FindCUDA.cmake`` script for an example of how to clear these
+  variables.  There are also examples of how to use the ``CUDA_SDK_ROOT_DIR``
+  to locate headers or libraries, if you so choose (at your own risk).
+
+``CUDA_INCLUDE_DIRS``
+  Include directory for cuda headers.  Added automatically
+  for ``cuda_add_executable()`` and ``cuda_add_library()``.
+
+``CUDA_LIBRARIES``
+  Cuda RT library.
+
+``CUDA_CUFFT_LIBRARIES``
+  Device or emulation library for the Cuda FFT implementation (alternative to
+  ``cuda_add_cufft_to_target()`` macro)
+
+``CUDA_CUBLAS_LIBRARIES``
+  Device or emulation library for the Cuda BLAS implementation (alternative to
+  ``cuda_add_cublas_to_target()`` macro).
+
+``CUDA_cudart_static_LIBRARY``
+  Statically linkable cuda runtime library.
+  Only available for CUDA version 5.5+.
+
+``CUDA_cudadevrt_LIBRARY``
+  .. versionadded:: 3.7
+    Device runtime library.  Required for separable compilation.
+
+``CUDA_cupti_LIBRARY``
+  CUDA Profiling Tools Interface library.
+  Only available for CUDA version 4.0+.
+
+``CUDA_curand_LIBRARY``
+  CUDA Random Number Generation library.
+  Only available for CUDA version 3.2+.
+
+``CUDA_cusolver_LIBRARY``
+  .. versionadded:: 3.2
+    CUDA Direct Solver library.
+    Only available for CUDA version 7.0+.
+
+``CUDA_cusparse_LIBRARY``
+  CUDA Sparse Matrix library.
+  Only available for CUDA version 3.2+.
+
+``CUDA_npp_LIBRARY``
+  NVIDIA Performance Primitives lib.
+  Only available for CUDA version 4.0+.
+
+``CUDA_nppc_LIBRARY``
+  NVIDIA Performance Primitives lib (core).
+  Only available for CUDA version 5.5+.
+
+``CUDA_nppi_LIBRARY``
+  NVIDIA Performance Primitives lib (image processing).
+  Only available for CUDA version 5.5 - 8.0.
+
+``CUDA_nppial_LIBRARY``
+  NVIDIA Performance Primitives lib (image processing).
+  Only available for CUDA version 9.0.
+
+``CUDA_nppicc_LIBRARY``
+  NVIDIA Performance Primitives lib (image processing).
+  Only available for CUDA version 9.0.
+
+``CUDA_nppicom_LIBRARY``
+  NVIDIA Performance Primitives lib (image processing).
+  Only available for CUDA version 9.0 - 10.2.
+  Replaced by nvjpeg.
+
+``CUDA_nppidei_LIBRARY``
+  NVIDIA Performance Primitives lib (image processing).
+  Only available for CUDA version 9.0.
+
+``CUDA_nppif_LIBRARY``
+  NVIDIA Performance Primitives lib (image processing).
+  Only available for CUDA version 9.0.
+
+``CUDA_nppig_LIBRARY``
+  NVIDIA Performance Primitives lib (image processing).
+  Only available for CUDA version 9.0.
+
+``CUDA_nppim_LIBRARY``
+  NVIDIA Performance Primitives lib (image processing).
+  Only available for CUDA version 9.0.
+
+``CUDA_nppist_LIBRARY``
+  NVIDIA Performance Primitives lib (image processing).
+  Only available for CUDA version 9.0.
+
+``CUDA_nppisu_LIBRARY``
+  NVIDIA Performance Primitives lib (image processing).
+  Only available for CUDA version 9.0.
+
+``CUDA_nppitc_LIBRARY``
+  NVIDIA Performance Primitives lib (image processing).
+  Only available for CUDA version 9.0.
+
+``CUDA_npps_LIBRARY``
+  NVIDIA Performance Primitives lib (signal processing).
+  Only available for CUDA version 5.5+.
+
+``CUDA_nvcuvenc_LIBRARY``
+  CUDA Video Encoder library.
+  Only available for CUDA version 3.2+.
+  Windows only.
+
+``CUDA_nvcuvid_LIBRARY``
+  CUDA Video Decoder library.
+  Only available for CUDA version 3.2+.
+  Windows only.
+
+``CUDA_nvToolsExt_LIBRARY``
+  .. versionadded:: 3.16
+    NVIDA CUDA Tools Extension library.
+    Available for CUDA version 5+.
+
+``CUDA_OpenCL_LIBRARY``
+  .. versionadded:: 3.16
+    NVIDA CUDA OpenCL library.
+    Available for CUDA version 5+.
+
+#]=======================================================================]
+
+#   James Bigler, NVIDIA Corp (nvidia.com - jbigler)
+#   Abe Stephens, SCI Institute -- http://www.sci.utah.edu/~abe/FindCuda.html
+#
+#   Copyright (c) 2008 - 2009 NVIDIA Corporation.  All rights reserved.
+#
+#   Copyright (c) 2007-2009
+#   Scientific Computing and Imaging Institute, University of Utah
+#
+#   This code is licensed under the MIT License.  See the FindCUDA.cmake script
+#   for the text of the license.
+
+# The MIT License
+#
+# License for the specific language governing rights and limitations under
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+#
+###############################################################################
+
+# FindCUDA.cmake
+
+# This macro helps us find the location of helper files we will need the full path to
+macro(CUDA_FIND_HELPER_FILE _name _extension)
+  set(_full_name "${_name}.${_extension}")
+  # CMAKE_CURRENT_LIST_FILE contains the full path to the file currently being
+  # processed.  Using this variable, we can pull out the current path, and
+  # provide a way to get access to the other files we need local to here.
+  get_filename_component(CMAKE_CURRENT_LIST_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+  set(CUDA_${_name} "${CMAKE_CURRENT_LIST_DIR}/FindCUDA/${_full_name}")
+  if(NOT EXISTS "${CUDA_${_name}}")
+    set(error_message "${_full_name} not found in ${CMAKE_CURRENT_LIST_DIR}/FindCUDA")
+    if(CUDA_FIND_REQUIRED)
+      message(FATAL_ERROR "${error_message}")
+    else()
+      if(NOT CUDA_FIND_QUIETLY)
+        message(STATUS "${error_message}")
+      endif()
+    endif()
+  endif()
+  # Set this variable as internal, so the user isn't bugged with it.
+  set(CUDA_${_name} ${CUDA_${_name}} CACHE INTERNAL "Location of ${_full_name}" FORCE)
+endmacro()
+
+#####################################################################
+## CUDA_INCLUDE_NVCC_DEPENDENCIES
+##
+
+# So we want to try and include the dependency file if it exists.  If
+# it doesn't exist then we need to create an empty one, so we can
+# include it.
+
+# If it does exist, then we need to check to see if all the files it
+# depends on exist.  If they don't then we should clear the dependency
+# file and regenerate it later.  This covers the case where a header
+# file has disappeared or moved.
+
+macro(CUDA_INCLUDE_NVCC_DEPENDENCIES dependency_file)
+  set(CUDA_NVCC_DEPEND)
+  set(CUDA_NVCC_DEPEND_REGENERATE FALSE)
+
+
+  # Include the dependency file.  Create it first if it doesn't exist .  The
+  # INCLUDE puts a dependency that will force CMake to rerun and bring in the
+  # new info when it changes.  DO NOT REMOVE THIS (as I did and spent a few
+  # hours figuring out why it didn't work.
+  if(NOT EXISTS ${dependency_file})
+    file(WRITE ${dependency_file} "#FindCUDA.cmake generated file.  Do not edit.\n")
+  endif()
+  # Always include this file to force CMake to run again next
+  # invocation and rebuild the dependencies.
+  #message("including dependency_file = ${dependency_file}")
+  include(${dependency_file})
+
+  # Now we need to verify the existence of all the included files
+  # here.  If they aren't there we need to just blank this variable and
+  # make the file regenerate again.
+#   if(DEFINED CUDA_NVCC_DEPEND)
+#     message("CUDA_NVCC_DEPEND set")
+#   else()
+#     message("CUDA_NVCC_DEPEND NOT set")
+#   endif()
+  if(CUDA_NVCC_DEPEND)
+    #message("CUDA_NVCC_DEPEND found")
+    foreach(f ${CUDA_NVCC_DEPEND})
+      # message("searching for ${f}")
+      if(NOT EXISTS ${f})
+        #message("file ${f} not found")
+        set(CUDA_NVCC_DEPEND_REGENERATE TRUE)
+      endif()
+    endforeach()
+  else()
+    #message("CUDA_NVCC_DEPEND false")
+    # No dependencies, so regenerate the file.
+    set(CUDA_NVCC_DEPEND_REGENERATE TRUE)
+  endif()
+
+  #message("CUDA_NVCC_DEPEND_REGENERATE = ${CUDA_NVCC_DEPEND_REGENERATE}")
+  # No incoming dependencies, so we need to generate them.  Make the
+  # output depend on the dependency file itself, which should cause the
+  # rule to re-run.
+  if(CUDA_NVCC_DEPEND_REGENERATE)
+    set(CUDA_NVCC_DEPEND ${dependency_file})
+    #message("Generating an empty dependency_file: ${dependency_file}")
+    file(WRITE ${dependency_file} "#FindCUDA.cmake generated file.  Do not edit.\n")
+  endif()
+
+endmacro()
+
+###############################################################################
+###############################################################################
+# Setup variables' defaults
+###############################################################################
+###############################################################################
+
+# Allow the user to specify if the device code is supposed to be 32 or 64 bit.
+if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+  set(CUDA_64_BIT_DEVICE_CODE_DEFAULT ON)
+else()
+  set(CUDA_64_BIT_DEVICE_CODE_DEFAULT OFF)
+endif()
+option(CUDA_64_BIT_DEVICE_CODE "Compile device code in 64 bit mode" ${CUDA_64_BIT_DEVICE_CODE_DEFAULT})
+
+# Attach the build rule to the source file in VS.  This option
+option(CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE "Attach the build rule to the CUDA source file.  Enable only when the CUDA source file is added to at most one target." ON)
+
+# Prints out extra information about the cuda file during compilation
+option(CUDA_BUILD_CUBIN "Generate and parse .cubin files in Device mode." OFF)
+
+# Set whether we are using emulation or device mode.
+option(CUDA_BUILD_EMULATION "Build in Emulation mode" OFF)
+
+# Where to put the generated output.
+set(CUDA_GENERATED_OUTPUT_DIR "" CACHE PATH "Directory to put all the output files.  If blank it will default to the CMAKE_CURRENT_BINARY_DIR")
+
+# Parse HOST_COMPILATION mode.
+option(CUDA_HOST_COMPILATION_CPP "Generated file extension" ON)
+
+# Extra user settable flags
+cmake_initialize_per_config_variable(CUDA_NVCC_FLAGS "Semi-colon delimit multiple arguments.")
+
+if(DEFINED ENV{CUDAHOSTCXX})
+  set(CUDA_HOST_COMPILER "$ENV{CUDAHOSTCXX}" CACHE FILEPATH "Host side compiler used by NVCC")
+elseif(CMAKE_GENERATOR MATCHES "Visual Studio")
+  set(_CUDA_MSVC_HOST_COMPILER "$(VCInstallDir)Tools/MSVC/$(VCToolsVersion)/bin/Host$(Platform)/$(PlatformTarget)")
+  if(MSVC_VERSION LESS 1910)
+    set(_CUDA_MSVC_HOST_COMPILER "$(VCInstallDir)bin")
+  endif()
+
+  set(CUDA_HOST_COMPILER "${_CUDA_MSVC_HOST_COMPILER}" CACHE FILEPATH "Host side compiler used by NVCC")
+
+else()
+  if(APPLE
+      AND "${CMAKE_C_COMPILER_ID}" MATCHES "Clang"
+      AND "${CMAKE_C_COMPILER}" MATCHES "/cc$")
+    # Using cc which is symlink to clang may let NVCC think it is GCC and issue
+    # unhandled -dumpspecs option to clang. Also in case neither
+    # CMAKE_C_COMPILER is defined (project does not use C language) nor
+    # CUDA_HOST_COMPILER is specified manually we should skip -ccbin and let
+    # nvcc use its own default C compiler.
+    # Only care about this on APPLE with clang to avoid
+    # following symlinks to things like ccache
+    if(DEFINED CMAKE_C_COMPILER AND NOT DEFINED CUDA_HOST_COMPILER)
+      get_filename_component(c_compiler_realpath "${CMAKE_C_COMPILER}" REALPATH)
+      # if the real path does not end up being clang then
+      # go back to using CMAKE_C_COMPILER
+      if(NOT "${c_compiler_realpath}" MATCHES "/clang$")
+        set(c_compiler_realpath "${CMAKE_C_COMPILER}")
+      endif()
+    else()
+      set(c_compiler_realpath "")
+    endif()
+    set(CUDA_HOST_COMPILER "${c_compiler_realpath}" CACHE FILEPATH "Host side compiler used by NVCC")
+  elseif(MSVC AND "${CMAKE_C_COMPILER}" MATCHES "clcache|sccache")
+    # NVCC does not think it will work if it is passed clcache.exe or sccache.exe
+    # as the host compiler, which means that builds with CC=cl.exe won't work.
+    # Best to just feed it whatever the actual cl.exe is as the host compiler.
+    set(CUDA_HOST_COMPILER "cl.exe" CACHE FILEPATH "Host side compiler used by NVCC")
+  else()
+    set(CUDA_HOST_COMPILER "${CMAKE_C_COMPILER}"
+      CACHE FILEPATH "Host side compiler used by NVCC")
+  endif()
+endif()
+
+# Propagate the host flags to the host compiler via -Xcompiler
+option(CUDA_PROPAGATE_HOST_FLAGS "Propagate C/CXX_FLAGS and friends to the host compiler via -Xcompile" ON)
+
+# Enable CUDA_SEPARABLE_COMPILATION
+option(CUDA_SEPARABLE_COMPILATION "Compile CUDA objects with separable compilation enabled.  Requires CUDA 5.0+" OFF)
+
+# Specifies whether the commands used when compiling the .cu file will be printed out.
+option(CUDA_VERBOSE_BUILD "Print out the commands run while compiling the CUDA source file.  With the Makefile generator this defaults to VERBOSE variable specified on the command line, but can be forced on with this option." OFF)
+
+mark_as_advanced(
+  CUDA_64_BIT_DEVICE_CODE
+  CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE
+  CUDA_GENERATED_OUTPUT_DIR
+  CUDA_HOST_COMPILATION_CPP
+  CUDA_NVCC_FLAGS
+  CUDA_PROPAGATE_HOST_FLAGS
+  CUDA_BUILD_CUBIN
+  CUDA_BUILD_EMULATION
+  CUDA_VERBOSE_BUILD
+  CUDA_SEPARABLE_COMPILATION
+  )
+
+# Single config generators like Makefiles or Ninja don't usually have
+# CMAKE_CONFIGURATION_TYPES defined (but note that it can be defined if set by
+# projects or developers). Even CMAKE_BUILD_TYPE might not be defined for
+# single config generators (and should not be defined for multi-config
+# generators). To ensure we get a complete superset of all possible
+# configurations, we combine CMAKE_CONFIGURATION_TYPES, CMAKE_BUILD_TYPE and
+# all of the standard configurations, then weed out duplicates with
+# list(REMOVE_DUPLICATES). Looping over the unique set then ensures we have
+# each configuration-specific set of nvcc flags defined and marked as advanced.
+set(CUDA_configuration_types ${CMAKE_CONFIGURATION_TYPES} ${CMAKE_BUILD_TYPE} Debug MinSizeRel Release RelWithDebInfo)
+list(REMOVE_DUPLICATES CUDA_configuration_types)
+
+###############################################################################
+###############################################################################
+# Locate CUDA, Set Build Type, etc.
+###############################################################################
+###############################################################################
+
+macro(cuda_unset_include_and_libraries)
+  unset(CUDA_TOOLKIT_INCLUDE CACHE)
+  unset(CUDA_CUDART_LIBRARY CACHE)
+  unset(CUDA_CUDA_LIBRARY CACHE)
+  # Make sure you run this before you unset CUDA_VERSION.
+  if(CUDA_VERSION VERSION_EQUAL "3.0")
+    # This only existed in the 3.0 version of the CUDA toolkit
+    unset(CUDA_CUDARTEMU_LIBRARY CACHE)
+  endif()
+  unset(CUDA_cudart_static_LIBRARY CACHE)
+  unset(CUDA_cudadevrt_LIBRARY CACHE)
+  unset(CUDA_cublas_LIBRARY CACHE)
+  unset(CUDA_cublas_device_LIBRARY CACHE)
+  unset(CUDA_cublasemu_LIBRARY CACHE)
+  unset(CUDA_cufft_LIBRARY CACHE)
+  unset(CUDA_cufftemu_LIBRARY CACHE)
+  unset(CUDA_cupti_LIBRARY CACHE)
+  unset(CUDA_curand_LIBRARY CACHE)
+  unset(CUDA_cusolver_LIBRARY CACHE)
+  unset(CUDA_cusparse_LIBRARY CACHE)
+  unset(CUDA_npp_LIBRARY CACHE)
+  unset(CUDA_nppc_LIBRARY CACHE)
+  unset(CUDA_nppi_LIBRARY CACHE)
+  unset(CUDA_npps_LIBRARY CACHE)
+  unset(CUDA_nvcuvenc_LIBRARY CACHE)
+  unset(CUDA_nvcuvid_LIBRARY CACHE)
+  unset(CUDA_nvToolsExt_LIBRARY CACHE)
+  unset(CUDA_OpenCL_LIBRARY CACHE)
+  unset(CUDA_GPU_DETECT_OUTPUT CACHE)
+endmacro()
+
+# Check to see if the CUDA_TOOLKIT_ROOT_DIR and CUDA_SDK_ROOT_DIR have changed,
+# if they have then clear the cache variables, so that will be detected again.
+if(NOT "${CUDA_TOOLKIT_ROOT_DIR}" STREQUAL "${CUDA_TOOLKIT_ROOT_DIR_INTERNAL}")
+  unset(CUDA_TOOLKIT_TARGET_DIR CACHE)
+  unset(CUDA_NVCC_EXECUTABLE CACHE)
+  cuda_unset_include_and_libraries()
+  unset(CUDA_VERSION CACHE)
+endif()
+
+if(NOT "${CUDA_TOOLKIT_TARGET_DIR}" STREQUAL "${CUDA_TOOLKIT_TARGET_DIR_INTERNAL}")
+  cuda_unset_include_and_libraries()
+endif()
+
+#
+#  End of unset()
+#
+
+#
+#  Start looking for things
+#
+
+# Search for the cuda distribution.
+if(NOT CUDA_TOOLKIT_ROOT_DIR AND NOT CMAKE_CROSSCOMPILING)
+  # Search in the CUDA_BIN_PATH first.
+  find_program(CUDA_TOOLKIT_ROOT_DIR_NVCC
+    NAMES nvcc nvcc.exe
+    PATHS
+      ENV CUDA_TOOLKIT_ROOT
+      ENV CUDA_PATH
+      ENV CUDA_BIN_PATH
+    PATH_SUFFIXES bin bin64
+    DOC "Toolkit location."
+    NO_DEFAULT_PATH
+    )
+
+  # Now search default paths
+  find_program(CUDA_TOOLKIT_ROOT_DIR_NVCC
+    NAMES nvcc nvcc.exe
+    PATHS /opt/cuda/bin
+    PATH_SUFFIXES cuda/bin
+    DOC "Toolkit location."
+    )
+
+  if (CUDA_TOOLKIT_ROOT_DIR_NVCC)
+    # Given that NVCC can be provided by multiple different sources (NVIDIA HPC SDK, CUDA Toolkit, distro)
+    # each of which has a different layout, we need to extract the CUDA toolkit root from the compiler
+    # itself, allowing us to support numerous different scattered toolkit layouts
+    execute_process(COMMAND ${CUDA_TOOLKIT_ROOT_DIR_NVCC} "-v" "__cmake_determine_cuda"
+      OUTPUT_VARIABLE _CUDA_NVCC_OUT ERROR_VARIABLE _CUDA_NVCC_OUT)
+    if(_CUDA_NVCC_OUT MATCHES "\\#\\$ TOP=([^\r\n]*)")
+      get_filename_component(CUDA_TOOLKIT_ROOT_DIR "${CMAKE_MATCH_1}" ABSOLUTE CACHE)
+    else()
+      get_filename_component(CUDA_TOOLKIT_ROOT_DIR "${CUDA_TOOLKIT_ROOT_DIR_NVCC}" DIRECTORY)
+      get_filename_component(CUDA_TOOLKIT_ROOT_DIR "${CUDA_TOOLKIT_ROOT_DIR}" DIRECTORY CACHE)
+    endif()
+    unset(_CUDA_NVCC_OUT)
+
+    string(REGEX REPLACE "[/\\\\]?bin[64]*[/\\\\]?$" "" CUDA_TOOLKIT_ROOT_DIR ${CUDA_TOOLKIT_ROOT_DIR})
+    # We need to force this back into the cache.
+    set(CUDA_TOOLKIT_ROOT_DIR ${CUDA_TOOLKIT_ROOT_DIR} CACHE PATH "Toolkit location." FORCE)
+    set(CUDA_TOOLKIT_TARGET_DIR ${CUDA_TOOLKIT_ROOT_DIR})
+  endif()
+  unset(CUDA_TOOLKIT_ROOT_DIR_NVCC CACHE)
+
+  if (NOT EXISTS ${CUDA_TOOLKIT_ROOT_DIR})
+    if(CUDA_FIND_REQUIRED)
+      message(FATAL_ERROR "Specify CUDA_TOOLKIT_ROOT_DIR")
+    elseif(NOT CUDA_FIND_QUIETLY)
+      message("CUDA_TOOLKIT_ROOT_DIR not found or specified")
+    endif()
+  endif ()
+endif ()
+
+if(CMAKE_CROSSCOMPILING)
+  SET (CUDA_TOOLKIT_ROOT $ENV{CUDA_TOOLKIT_ROOT})
+  if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a")
+    # Support for NVPACK
+    set (CUDA_TOOLKIT_TARGET_NAME "armv7-linux-androideabi")
+  elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
+    # Support for arm cross compilation
+    set(CUDA_TOOLKIT_TARGET_NAME "armv7-linux-gnueabihf")
+  elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
+    # Support for aarch64 cross compilation
+    if (ANDROID_ARCH_NAME STREQUAL "arm64")
+      set(CUDA_TOOLKIT_TARGET_NAME "aarch64-linux-androideabi")
+    elseif (CMAKE_SYSTEM_NAME STREQUAL "QNX")
+      set(CUDA_TOOLKIT_TARGET_NAME "aarch64-qnx")
+    else()
+      set(CUDA_TOOLKIT_TARGET_NAME "aarch64-linux")
+    endif (ANDROID_ARCH_NAME STREQUAL "arm64")
+  endif()
+
+  if (EXISTS "${CUDA_TOOLKIT_ROOT}/targets/${CUDA_TOOLKIT_TARGET_NAME}")
+    set(CUDA_TOOLKIT_TARGET_DIR "${CUDA_TOOLKIT_ROOT}/targets/${CUDA_TOOLKIT_TARGET_NAME}" CACHE PATH "CUDA Toolkit target location.")
+    SET (CUDA_TOOLKIT_ROOT_DIR ${CUDA_TOOLKIT_ROOT})
+    mark_as_advanced(CUDA_TOOLKIT_TARGET_DIR)
+  endif()
+
+  # add known CUDA targetr root path to the set of directories we search for programs, libraries and headers
+  set( CMAKE_FIND_ROOT_PATH "${CUDA_TOOLKIT_TARGET_DIR};${CMAKE_FIND_ROOT_PATH}")
+  macro( cuda_find_host_program )
+    if (COMMAND find_host_program)
+      find_host_program( ${ARGN} )
+    else()
+      find_program( ${ARGN} )
+    endif()
+  endmacro()
+else()
+  # for non-cross-compile, find_host_program == find_program and CUDA_TOOLKIT_TARGET_DIR == CUDA_TOOLKIT_ROOT_DIR
+  macro( cuda_find_host_program )
+    find_program( ${ARGN} )
+  endmacro()
+  SET (CUDA_TOOLKIT_TARGET_DIR ${CUDA_TOOLKIT_ROOT_DIR})
+endif()
+
+
+# CUDA_NVCC_EXECUTABLE
+if(DEFINED ENV{CUDA_NVCC_EXECUTABLE})
+  set(CUDA_NVCC_EXECUTABLE "$ENV{CUDA_NVCC_EXECUTABLE}" CACHE FILEPATH "The CUDA compiler")
+else()
+  cuda_find_host_program(CUDA_NVCC_EXECUTABLE
+    NAMES nvcc
+    PATHS "${CUDA_TOOLKIT_ROOT_DIR}"
+    ENV CUDA_PATH
+    ENV CUDA_BIN_PATH
+    PATH_SUFFIXES bin bin64
+    NO_DEFAULT_PATH
+    )
+  # Search default search paths, after we search our own set of paths.
+  cuda_find_host_program(CUDA_NVCC_EXECUTABLE nvcc)
+endif()
+mark_as_advanced(CUDA_NVCC_EXECUTABLE)
+
+if(CUDA_NVCC_EXECUTABLE AND NOT CUDA_VERSION)
+  # Compute the version.
+  execute_process (COMMAND ${CUDA_NVCC_EXECUTABLE} "--version" OUTPUT_VARIABLE NVCC_OUT)
+  string(REGEX REPLACE ".*release ([0-9]+)\\.([0-9]+).*" "\\1" CUDA_VERSION_MAJOR ${NVCC_OUT})
+  string(REGEX REPLACE ".*release ([0-9]+)\\.([0-9]+).*" "\\2" CUDA_VERSION_MINOR ${NVCC_OUT})
+  set(CUDA_VERSION "${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}" CACHE STRING "Version of CUDA as computed from nvcc.")
+  mark_as_advanced(CUDA_VERSION)
+else()
+  # Need to set these based off of the cached value
+  string(REGEX REPLACE "([0-9]+)\\.([0-9]+).*" "\\1" CUDA_VERSION_MAJOR "${CUDA_VERSION}")
+  string(REGEX REPLACE "([0-9]+)\\.([0-9]+).*" "\\2" CUDA_VERSION_MINOR "${CUDA_VERSION}")
+endif()
+
+
+# Always set this convenience variable
+set(CUDA_VERSION_STRING "${CUDA_VERSION}")
+
+# CUDA_TOOLKIT_INCLUDE
+find_path(CUDA_TOOLKIT_INCLUDE
+  device_functions.h # Header included in toolkit
+  PATHS ${CUDA_TOOLKIT_TARGET_DIR}
+  ENV CUDA_PATH
+  ENV CUDA_INC_PATH
+  PATH_SUFFIXES include
+  NO_DEFAULT_PATH
+  )
+# Search default search paths, after we search our own set of paths.
+find_path(CUDA_TOOLKIT_INCLUDE device_functions.h)
+mark_as_advanced(CUDA_TOOLKIT_INCLUDE)
+
+if (CUDA_VERSION VERSION_GREATER "7.0" OR EXISTS "${CUDA_TOOLKIT_INCLUDE}/cuda_fp16.h")
+  set(CUDA_HAS_FP16 TRUE)
+else()
+  set(CUDA_HAS_FP16 FALSE)
+endif()
+
+# Set the user list of include dir to nothing to initialize it.
+set (CUDA_NVCC_INCLUDE_DIRS_USER "")
+set (CUDA_INCLUDE_DIRS ${CUDA_TOOLKIT_INCLUDE})
+
+macro(cuda_find_library_local_first_with_path_ext _var _names _doc _path_ext )
+  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+    # CUDA 3.2+ on Windows moved the library directories, so we need the new
+    # and old paths.
+    set(_cuda_64bit_lib_dir "${_path_ext}lib/x64" "${_path_ext}lib64" "${_path_ext}libx64" )
+  endif()
+  # CUDA 3.2+ on Windows moved the library directories, so we need to new
+  # (lib/Win32) and the old path (lib).
+  find_library(${_var}
+    NAMES ${_names}
+    PATHS "${CUDA_TOOLKIT_TARGET_DIR}"
+    ENV CUDA_PATH
+    ENV CUDA_LIB_PATH
+    PATH_SUFFIXES ${_cuda_64bit_lib_dir} "${_path_ext}lib/Win32" "${_path_ext}lib" "${_path_ext}libWin32"
+    DOC ${_doc}
+    NO_DEFAULT_PATH
+    )
+  if (NOT CMAKE_CROSSCOMPILING)
+    # Search default search paths, after we search our own set of paths.
+    find_library(${_var}
+      NAMES ${_names}
+      PATHS "/usr/lib/nvidia-current"
+      DOC ${_doc}
+      )
+  endif()
+endmacro()
+
+macro(cuda_find_library_local_first _var _names _doc)
+  cuda_find_library_local_first_with_path_ext( "${_var}" "${_names}" "${_doc}" "" )
+endmacro()
+
+macro(find_library_local_first _var _names _doc )
+  cuda_find_library_local_first( "${_var}" "${_names}" "${_doc}" "" )
+endmacro()
+
+
+# CUDA_LIBRARIES
+cuda_find_library_local_first(CUDA_CUDART_LIBRARY cudart "\"cudart\" library")
+if(CUDA_VERSION VERSION_EQUAL "3.0")
+  # The cudartemu library only existed for the 3.0 version of CUDA.
+  cuda_find_library_local_first(CUDA_CUDARTEMU_LIBRARY cudartemu "\"cudartemu\" library")
+  mark_as_advanced(
+    CUDA_CUDARTEMU_LIBRARY
+    )
+endif()
+
+if(NOT CUDA_VERSION VERSION_LESS "5.5")
+  cuda_find_library_local_first(CUDA_cudart_static_LIBRARY cudart_static "static CUDA runtime library")
+  mark_as_advanced(CUDA_cudart_static_LIBRARY)
+endif()
+
+
+if(CUDA_cudart_static_LIBRARY)
+  # If static cudart available, use it by default, but provide a user-visible option to disable it.
+  option(CUDA_USE_STATIC_CUDA_RUNTIME "Use the static version of the CUDA runtime library if available" ON)
+else()
+  # If not available, silently disable the option.
+  set(CUDA_USE_STATIC_CUDA_RUNTIME OFF CACHE INTERNAL "")
+endif()
+
+if(CUDA_USE_STATIC_CUDA_RUNTIME)
+  set(CUDA_CUDART_LIBRARY_VAR CUDA_cudart_static_LIBRARY)
+else()
+  set(CUDA_CUDART_LIBRARY_VAR CUDA_CUDART_LIBRARY)
+endif()
+
+if(NOT CUDA_VERSION VERSION_LESS "5.0")
+  cuda_find_library_local_first(CUDA_cudadevrt_LIBRARY cudadevrt "\"cudadevrt\" library")
+  mark_as_advanced(CUDA_cudadevrt_LIBRARY)
+endif()
+
+if(CUDA_USE_STATIC_CUDA_RUNTIME)
+  if(UNIX)
+    # Check for the dependent libraries.
+
+    # Many of the FindXYZ CMake comes with makes use of try_compile with int main(){return 0;}
+    # as the source file.  Unfortunately this causes a warning with -Wstrict-prototypes and
+    # -Werror causes the try_compile to fail.  We will just temporarily disable other flags
+    # when doing the find_package command here.
+    set(_cuda_cmake_c_flags ${CMAKE_C_FLAGS})
+    set(CMAKE_C_FLAGS "-fPIC")
+    find_package(Threads REQUIRED)
+    set(CMAKE_C_FLAGS ${_cuda_cmake_c_flags})
+
+    if(NOT APPLE AND NOT (CMAKE_SYSTEM_NAME STREQUAL "QNX"))
+      #On Linux, you must link against librt when using the static cuda runtime.
+      find_library(CUDA_rt_LIBRARY rt)
+      if (NOT CUDA_rt_LIBRARY)
+        message(WARNING "Expecting to find librt for libcudart_static, but didn't find it.")
+      endif()
+    endif()
+  endif()
+endif()
+
+# CUPTI library showed up in cuda toolkit 4.0
+if(NOT CUDA_VERSION VERSION_LESS "4.0")
+  cuda_find_library_local_first_with_path_ext(CUDA_cupti_LIBRARY cupti "\"cupti\" library" "extras/CUPTI/")
+  mark_as_advanced(CUDA_cupti_LIBRARY)
+endif()
+
+# Set the CUDA_LIBRARIES variable.  This is the set of stuff to link against if you are
+# using the CUDA runtime.  For the dynamic version of the runtime, most of the
+# dependencies are brough in, but for the static version there are additional libraries
+# and linker commands needed.
+# Initialize to empty
+set(CUDA_LIBRARIES)
+
+# If we are using emulation mode and we found the cudartemu library then use
+# that one instead of cudart.
+if(CUDA_BUILD_EMULATION AND CUDA_CUDARTEMU_LIBRARY)
+  list(APPEND CUDA_LIBRARIES ${CUDA_CUDARTEMU_LIBRARY})
+elseif(CUDA_USE_STATIC_CUDA_RUNTIME AND CUDA_cudart_static_LIBRARY)
+  list(APPEND CUDA_LIBRARIES ${CUDA_cudart_static_LIBRARY})
+  if (TARGET Threads::Threads)
+    list(APPEND CUDA_LIBRARIES Threads::Threads)
+  endif()
+  list(APPEND CUDA_LIBRARIES ${CMAKE_DL_LIBS})
+  if (CUDA_rt_LIBRARY)
+    list(APPEND CUDA_LIBRARIES ${CUDA_rt_LIBRARY})
+  endif()
+  if(APPLE)
+    # We need to add the default path to the driver (libcuda.dylib) as an rpath, so that
+    # the static cuda runtime can find it at runtime.
+    list(APPEND CUDA_LIBRARIES -Wl,-rpath,/usr/local/cuda/lib)
+  endif()
+else()
+  list(APPEND CUDA_LIBRARIES ${CUDA_CUDART_LIBRARY})
+endif()
+
+# 1.1 toolkit on linux doesn't appear to have a separate library on
+# some platforms.
+cuda_find_library_local_first(CUDA_CUDA_LIBRARY cuda "\"cuda\" library (older versions only).")
+
+mark_as_advanced(
+  CUDA_CUDA_LIBRARY
+  CUDA_CUDART_LIBRARY
+  )
+
+#######################
+# Look for some of the toolkit helper libraries
+macro(FIND_CUDA_HELPER_LIBS _name)
+  cuda_find_library_local_first(CUDA_${_name}_LIBRARY ${_name} "\"${_name}\" library")
+  mark_as_advanced(CUDA_${_name}_LIBRARY)
+endmacro()
+
+#######################
+# Disable emulation for v3.1 onward
+if(CUDA_VERSION VERSION_GREATER "3.0")
+  if(CUDA_BUILD_EMULATION)
+    message(FATAL_ERROR "CUDA_BUILD_EMULATION is not supported in version 3.1 and onwards.  You must disable it to proceed.  You have version ${CUDA_VERSION}.")
+  endif()
+endif()
+
+# Search for additional CUDA toolkit libraries.
+if(CUDA_VERSION VERSION_LESS "3.1")
+  # Emulation libraries aren't available in version 3.1 onward.
+  find_cuda_helper_libs(cufftemu)
+  find_cuda_helper_libs(cublasemu)
+endif()
+find_cuda_helper_libs(cufft)
+find_cuda_helper_libs(cublas)
+if(NOT CUDA_VERSION VERSION_LESS "3.2")
+  # cusparse showed up in version 3.2
+  find_cuda_helper_libs(cusparse)
+  find_cuda_helper_libs(curand)
+  if (WIN32)
+    find_cuda_helper_libs(nvcuvenc)
+    find_cuda_helper_libs(nvcuvid)
+  endif()
+endif()
+if(CUDA_VERSION VERSION_GREATER "5.0" AND CUDA_VERSION VERSION_LESS "9.2")
+  # In CUDA 9.2 cublas_device was deprecated
+  find_cuda_helper_libs(cublas_device)
+endif()
+
+if(NOT CUDA_VERSION VERSION_LESS "5.0")
+  find_cuda_helper_libs(nvToolsExt)
+  find_cuda_helper_libs(OpenCL)
+endif()
+
+if(NOT CUDA_VERSION VERSION_LESS "9.0")
+  # In CUDA 9.0 NPP was nppi was removed
+  find_cuda_helper_libs(nppc)
+  find_cuda_helper_libs(nppial)
+  find_cuda_helper_libs(nppicc)
+  if(CUDA_VERSION VERSION_LESS "11.0")
+    find_cuda_helper_libs(nppicom)
+  endif()
+  find_cuda_helper_libs(nppidei)
+  find_cuda_helper_libs(nppif)
+  find_cuda_helper_libs(nppig)
+  find_cuda_helper_libs(nppim)
+  find_cuda_helper_libs(nppist)
+  find_cuda_helper_libs(nppisu)
+  find_cuda_helper_libs(nppitc)
+  find_cuda_helper_libs(npps)
+  set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppial_LIBRARY};${CUDA_nppicc_LIBRARY};${CUDA_nppicom_LIBRARY};${CUDA_nppidei_LIBRARY};${CUDA_nppif_LIBRARY};${CUDA_nppig_LIBRARY};${CUDA_nppim_LIBRARY};${CUDA_nppist_LIBRARY};${CUDA_nppisu_LIBRARY};${CUDA_nppitc_LIBRARY};${CUDA_npps_LIBRARY}")
+elseif(CUDA_VERSION VERSION_GREATER "5.0")
+  # In CUDA 5.5 NPP was split into 3 separate libraries.
+  find_cuda_helper_libs(nppc)
+  find_cuda_helper_libs(nppi)
+  find_cuda_helper_libs(npps)
+  set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppi_LIBRARY};${CUDA_npps_LIBRARY}")
+elseif(NOT CUDA_VERSION VERSION_LESS "4.0")
+  find_cuda_helper_libs(npp)
+endif()
+if(NOT CUDA_VERSION VERSION_LESS "7.0")
+  # cusolver showed up in version 7.0
+  find_cuda_helper_libs(cusolver)
+endif()
+
+if (CUDA_BUILD_EMULATION)
+  set(CUDA_CUFFT_LIBRARIES ${CUDA_cufftemu_LIBRARY})
+  set(CUDA_CUBLAS_LIBRARIES ${CUDA_cublasemu_LIBRARY})
+else()
+  set(CUDA_CUFFT_LIBRARIES ${CUDA_cufft_LIBRARY})
+  set(CUDA_CUBLAS_LIBRARIES ${CUDA_cublas_LIBRARY} ${CUDA_cublas_device_LIBRARY})
+endif()
+
+########################
+# Look for the SDK stuff.  As of CUDA 3.0 NVSDKCUDA_ROOT has been replaced with
+# NVSDKCOMPUTE_ROOT with the old CUDA C contents moved into the C subdirectory
+find_path(CUDA_SDK_ROOT_DIR common/inc/cutil.h
+ HINTS
+  "$ENV{NVSDKCOMPUTE_ROOT}/C"
+  ENV NVSDKCUDA_ROOT
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\NVIDIA Corporation\\Installed Products\\NVIDIA SDK 10\\Compute;InstallDir]"
+ PATHS
+  "/Developer/GPU\ Computing/C"
+  )
+
+# Keep the CUDA_SDK_ROOT_DIR first in order to be able to override the
+# environment variables.
+set(CUDA_SDK_SEARCH_PATH
+  "${CUDA_SDK_ROOT_DIR}"
+  "${CUDA_TOOLKIT_ROOT_DIR}/local/NVSDK0.2"
+  "${CUDA_TOOLKIT_ROOT_DIR}/NVSDK0.2"
+  "${CUDA_TOOLKIT_ROOT_DIR}/NV_CUDA_SDK"
+  "$ENV{HOME}/NVIDIA_CUDA_SDK"
+  "$ENV{HOME}/NVIDIA_CUDA_SDK_MACOSX"
+  "/Developer/CUDA"
+  )
+
+# Example of how to find an include file from the CUDA_SDK_ROOT_DIR
+
+# find_path(CUDA_CUT_INCLUDE_DIR
+#   cutil.h
+#   PATHS ${CUDA_SDK_SEARCH_PATH}
+#   PATH_SUFFIXES "common/inc"
+#   DOC "Location of cutil.h"
+#   NO_DEFAULT_PATH
+#   )
+# # Now search system paths
+# find_path(CUDA_CUT_INCLUDE_DIR cutil.h DOC "Location of cutil.h")
+
+# mark_as_advanced(CUDA_CUT_INCLUDE_DIR)
+
+
+# Example of how to find a library in the CUDA_SDK_ROOT_DIR
+
+# # cutil library is called cutil64 for 64 bit builds on windows.  We don't want
+# # to get these confused, so we are setting the name based on the word size of
+# # the build.
+
+# if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+#   set(cuda_cutil_name cutil64)
+# else()
+#   set(cuda_cutil_name cutil32)
+# endif()
+
+# find_library(CUDA_CUT_LIBRARY
+#   NAMES cutil ${cuda_cutil_name}
+#   PATHS ${CUDA_SDK_SEARCH_PATH}
+#   # The new version of the sdk shows up in common/lib, but the old one is in lib
+#   PATH_SUFFIXES "common/lib" "lib"
+#   DOC "Location of cutil library"
+#   NO_DEFAULT_PATH
+#   )
+# # Now search system paths
+# find_library(CUDA_CUT_LIBRARY NAMES cutil ${cuda_cutil_name} DOC "Location of cutil library")
+# mark_as_advanced(CUDA_CUT_LIBRARY)
+# set(CUDA_CUT_LIBRARIES ${CUDA_CUT_LIBRARY})
+
+
+
+#############################
+# Check for required components
+set(CUDA_FOUND TRUE)
+
+set(CUDA_TOOLKIT_ROOT_DIR_INTERNAL "${CUDA_TOOLKIT_ROOT_DIR}" CACHE INTERNAL
+  "This is the value of the last time CUDA_TOOLKIT_ROOT_DIR was set successfully." FORCE)
+set(CUDA_TOOLKIT_TARGET_DIR_INTERNAL "${CUDA_TOOLKIT_TARGET_DIR}" CACHE INTERNAL
+  "This is the value of the last time CUDA_TOOLKIT_TARGET_DIR was set successfully." FORCE)
+set(CUDA_SDK_ROOT_DIR_INTERNAL "${CUDA_SDK_ROOT_DIR}" CACHE INTERNAL
+  "This is the value of the last time CUDA_SDK_ROOT_DIR was set successfully." FORCE)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+find_package_handle_standard_args(CUDA
+  REQUIRED_VARS
+    CUDA_TOOLKIT_ROOT_DIR
+    CUDA_NVCC_EXECUTABLE
+    CUDA_INCLUDE_DIRS
+    ${CUDA_CUDART_LIBRARY_VAR}
+  VERSION_VAR
+    CUDA_VERSION
+  )
+
+
+
+###############################################################################
+###############################################################################
+# Macros
+###############################################################################
+###############################################################################
+
+###############################################################################
+# Add include directories to pass to the nvcc command.
+macro(CUDA_INCLUDE_DIRECTORIES)
+  foreach(dir ${ARGN})
+    list(APPEND CUDA_NVCC_INCLUDE_DIRS_USER ${dir})
+  endforeach()
+endmacro()
+
+
+##############################################################################
+cuda_find_helper_file(parse_cubin cmake)
+cuda_find_helper_file(make2cmake cmake)
+cuda_find_helper_file(run_nvcc cmake)
+include("${CMAKE_CURRENT_LIST_DIR}/FindCUDA/select_compute_arch.cmake")
+
+##############################################################################
+# Separate the OPTIONS out from the sources
+#
+macro(CUDA_GET_SOURCES_AND_OPTIONS _sources _cmake_options _options)
+  set( ${_sources} )
+  set( ${_cmake_options} )
+  set( ${_options} )
+  set( _found_options FALSE )
+  foreach(arg ${ARGN})
+    if("x${arg}" STREQUAL "xOPTIONS")
+      set( _found_options TRUE )
+    elseif(
+        "x${arg}" STREQUAL "xWIN32" OR
+        "x${arg}" STREQUAL "xMACOSX_BUNDLE" OR
+        "x${arg}" STREQUAL "xEXCLUDE_FROM_ALL" OR
+        "x${arg}" STREQUAL "xSTATIC" OR
+        "x${arg}" STREQUAL "xSHARED" OR
+        "x${arg}" STREQUAL "xMODULE"
+        )
+      list(APPEND ${_cmake_options} ${arg})
+    else()
+      if ( _found_options )
+        list(APPEND ${_options} ${arg})
+      else()
+        # Assume this is a file
+        list(APPEND ${_sources} ${arg})
+      endif()
+    endif()
+  endforeach()
+endmacro()
+
+##############################################################################
+# Parse the OPTIONS from ARGN and set the variables prefixed by _option_prefix
+#
+macro(CUDA_PARSE_NVCC_OPTIONS _option_prefix)
+  set( _found_config )
+  foreach(arg ${ARGN})
+    # Determine if we are dealing with a perconfiguration flag
+    foreach(config ${CUDA_configuration_types})
+      string(TOUPPER ${config} config_upper)
+      if (arg STREQUAL "${config_upper}")
+        set( _found_config _${arg})
+        # Set arg to nothing to keep it from being processed further
+        set( arg )
+      endif()
+    endforeach()
+
+    if ( arg )
+      list(APPEND ${_option_prefix}${_found_config} "${arg}")
+    endif()
+  endforeach()
+endmacro()
+
+##############################################################################
+# Helper to add the include directory for CUDA only once
+function(CUDA_ADD_CUDA_INCLUDE_ONCE)
+  get_directory_property(_include_directories INCLUDE_DIRECTORIES)
+  set(_add TRUE)
+  if(_include_directories)
+    foreach(dir ${_include_directories})
+      if("${dir}" STREQUAL "${CUDA_INCLUDE_DIRS}")
+        set(_add FALSE)
+      endif()
+    endforeach()
+  endif()
+  if(_add)
+    include_directories(${CUDA_INCLUDE_DIRS})
+  endif()
+endfunction()
+
+function(CUDA_BUILD_SHARED_LIBRARY shared_flag)
+  set(cmake_args ${ARGN})
+  # If SHARED, MODULE, or STATIC aren't already in the list of arguments, then
+  # add SHARED or STATIC based on the value of BUILD_SHARED_LIBS.
+  list(FIND cmake_args SHARED _cuda_found_SHARED)
+  list(FIND cmake_args MODULE _cuda_found_MODULE)
+  list(FIND cmake_args STATIC _cuda_found_STATIC)
+  if( _cuda_found_SHARED GREATER -1 OR
+      _cuda_found_MODULE GREATER -1 OR
+      _cuda_found_STATIC GREATER -1)
+    set(_cuda_build_shared_libs)
+  else()
+    if (BUILD_SHARED_LIBS)
+      set(_cuda_build_shared_libs SHARED)
+    else()
+      set(_cuda_build_shared_libs STATIC)
+    endif()
+  endif()
+  set(${shared_flag} ${_cuda_build_shared_libs} PARENT_SCOPE)
+endfunction()
+
+##############################################################################
+# Helper to avoid clashes of files with the same basename but different paths.
+# This doesn't attempt to do exactly what CMake internals do, which is to only
+# add this path when there is a conflict, since by the time a second collision
+# in names is detected it's already too late to fix the first one.  For
+# consistency sake the relative path will be added to all files.
+function(CUDA_COMPUTE_BUILD_PATH path build_path)
+  #message("CUDA_COMPUTE_BUILD_PATH([${path}] ${build_path})")
+  # Only deal with CMake style paths from here on out
+  file(TO_CMAKE_PATH "${path}" bpath)
+  if (IS_ABSOLUTE "${bpath}")
+    # Absolute paths are generally unnessary, especially if something like
+    # file(GLOB_RECURSE) is used to pick up the files.
+
+    string(FIND "${bpath}" "${CMAKE_CURRENT_BINARY_DIR}" _binary_dir_pos)
+    if (_binary_dir_pos EQUAL 0)
+      file(RELATIVE_PATH bpath "${CMAKE_CURRENT_BINARY_DIR}" "${bpath}")
+    else()
+      file(RELATIVE_PATH bpath "${CMAKE_CURRENT_SOURCE_DIR}" "${bpath}")
+    endif()
+  endif()
+
+  # This recipe is from cmLocalGenerator::CreateSafeUniqueObjectFileName in the
+  # CMake source.
+
+  # Remove leading /
+  string(REGEX REPLACE "^[/]+" "" bpath "${bpath}")
+  # Avoid absolute paths by removing ':'
+  string(REPLACE ":" "_" bpath "${bpath}")
+  # Avoid relative paths that go up the tree
+  string(REPLACE "../" "__/" bpath "${bpath}")
+  # Avoid spaces
+  string(REPLACE " " "_" bpath "${bpath}")
+
+  # Strip off the filename.  I wait until here to do it, since removin the
+  # basename can make a path that looked like path/../basename turn into
+  # path/.. (notice the trailing slash).
+  get_filename_component(bpath "${bpath}" PATH)
+
+  set(${build_path} "${bpath}" PARENT_SCOPE)
+  #message("${build_path} = ${bpath}")
+endfunction()
+
+##############################################################################
+# This helper macro populates the following variables and setups up custom
+# commands and targets to invoke the nvcc compiler to generate C or PTX source
+# dependent upon the format parameter.  The compiler is invoked once with -M
+# to generate a dependency file and a second time with -cuda or -ptx to generate
+# a .cpp or .ptx file.
+# INPUT:
+#   cuda_target         - Target name
+#   format              - PTX, CUBIN, FATBIN or OBJ
+#   FILE1 .. FILEN      - The remaining arguments are the sources to be wrapped.
+#   OPTIONS             - Extra options to NVCC
+# OUTPUT:
+#   generated_files     - List of generated files
+##############################################################################
+##############################################################################
+
+macro(CUDA_WRAP_SRCS cuda_target format generated_files)
+
+  # Put optional arguments in list.
+  set(_argn_list "${ARGN}")
+  # If one of the given optional arguments is "PHONY", make a note of it, then
+  # remove it from the list.
+  list(FIND _argn_list "PHONY" _phony_idx)
+  if("${_phony_idx}" GREATER "-1")
+    set(_target_is_phony true)
+    list(REMOVE_AT _argn_list ${_phony_idx})
+  else()
+    set(_target_is_phony false)
+  endif()
+
+  # If CMake doesn't support separable compilation, complain
+  if(CUDA_SEPARABLE_COMPILATION AND CMAKE_VERSION VERSION_LESS "2.8.10.1")
+    message(SEND_ERROR "CUDA_SEPARABLE_COMPILATION isn't supported for CMake versions less than 2.8.10.1")
+  endif()
+
+  # Set up all the command line flags here, so that they can be overridden on a per target basis.
+
+  set(nvcc_flags "")
+
+  # Emulation if the card isn't present.
+  if (CUDA_BUILD_EMULATION)
+    # Emulation.
+    set(nvcc_flags ${nvcc_flags} --device-emulation -D_DEVICEEMU -g)
+  else()
+    # Device mode.  No flags necessary.
+  endif()
+
+  if(CUDA_HOST_COMPILATION_CPP)
+    set(CUDA_C_OR_CXX CXX)
+  else()
+    if(CUDA_VERSION VERSION_LESS "3.0")
+      set(nvcc_flags ${nvcc_flags} --host-compilation C)
+    else()
+      message(WARNING "--host-compilation flag is deprecated in CUDA version >= 3.0.  Removing --host-compilation C flag" )
+    endif()
+    set(CUDA_C_OR_CXX C)
+  endif()
+
+  set(generated_extension ${CMAKE_${CUDA_C_OR_CXX}_OUTPUT_EXTENSION})
+
+  if(CUDA_64_BIT_DEVICE_CODE)
+    set(nvcc_flags ${nvcc_flags} -m64)
+  else()
+    set(nvcc_flags ${nvcc_flags} -m32)
+  endif()
+
+  if(CUDA_TARGET_CPU_ARCH)
+    set(nvcc_flags ${nvcc_flags} "--target-cpu-architecture=${CUDA_TARGET_CPU_ARCH}")
+  endif()
+
+  # This needs to be passed in at this stage, because VS needs to fill out the
+  # various macros from within VS.  Note that CCBIN is only used if
+  # -ccbin or --compiler-bindir isn't used and CUDA_HOST_COMPILER matches
+  # _CUDA_MSVC_HOST_COMPILER
+  if(CMAKE_GENERATOR MATCHES "Visual Studio")
+    set(ccbin_flags -D "\"CCBIN:PATH=${_CUDA_MSVC_HOST_COMPILER}\"" )
+  else()
+    set(ccbin_flags)
+  endif()
+
+  # Figure out which configure we will use and pass that in as an argument to
+  # the script.  We need to defer the decision until compilation time, because
+  # for VS projects we won't know if we are making a debug or release build
+  # until build time.
+  if(CMAKE_GENERATOR MATCHES "Visual Studio")
+    set( CUDA_build_configuration "$(ConfigurationName)" )
+  else()
+    set( CUDA_build_configuration "${CMAKE_BUILD_TYPE}")
+  endif()
+
+  # Initialize our list of includes with the user ones followed by the CUDA system ones.
+  set(CUDA_NVCC_INCLUDE_DIRS ${CUDA_NVCC_INCLUDE_DIRS_USER} "${CUDA_INCLUDE_DIRS}")
+  if(_target_is_phony)
+    # If the passed in target name isn't a real target (i.e., this is from a call to one of the
+    # cuda_compile_* functions), need to query directory properties to get include directories
+    # and compile definitions.
+    get_directory_property(_dir_include_dirs INCLUDE_DIRECTORIES)
+    get_directory_property(_dir_compile_defs COMPILE_DEFINITIONS)
+
+    list(APPEND CUDA_NVCC_INCLUDE_DIRS "${_dir_include_dirs}")
+    set(CUDA_NVCC_COMPILE_DEFINITIONS "${_dir_compile_defs}")
+  else()
+    # Append the include directories for this target via generator expression, which is
+    # expanded by the FILE(GENERATE) call below.  This generator expression captures all
+    # include dirs set by the user, whether via directory properties or target properties
+    list(APPEND CUDA_NVCC_INCLUDE_DIRS "$<TARGET_PROPERTY:${cuda_target},INCLUDE_DIRECTORIES>")
+
+    # Do the same thing with compile definitions
+    set(CUDA_NVCC_COMPILE_DEFINITIONS "$<TARGET_PROPERTY:${cuda_target},COMPILE_DEFINITIONS>")
+  endif()
+
+
+  # Reset these variables
+  set(CUDA_WRAP_OPTION_NVCC_FLAGS)
+  foreach(config ${CUDA_configuration_types})
+    string(TOUPPER ${config} config_upper)
+    set(CUDA_WRAP_OPTION_NVCC_FLAGS_${config_upper})
+  endforeach()
+
+  CUDA_GET_SOURCES_AND_OPTIONS(_cuda_wrap_sources _cuda_wrap_cmake_options _cuda_wrap_options ${_argn_list})
+  CUDA_PARSE_NVCC_OPTIONS(CUDA_WRAP_OPTION_NVCC_FLAGS ${_cuda_wrap_options})
+
+  # Figure out if we are building a shared library.  BUILD_SHARED_LIBS is
+  # respected in CUDA_ADD_LIBRARY.
+  set(_cuda_build_shared_libs FALSE)
+  # SHARED, MODULE
+  list(FIND _cuda_wrap_cmake_options SHARED _cuda_found_SHARED)
+  list(FIND _cuda_wrap_cmake_options MODULE _cuda_found_MODULE)
+  if(_cuda_found_SHARED GREATER -1 OR _cuda_found_MODULE GREATER -1)
+    set(_cuda_build_shared_libs TRUE)
+  endif()
+  # STATIC
+  list(FIND _cuda_wrap_cmake_options STATIC _cuda_found_STATIC)
+  if(_cuda_found_STATIC GREATER -1)
+    set(_cuda_build_shared_libs FALSE)
+  endif()
+
+  # CUDA_HOST_FLAGS
+  if(_cuda_build_shared_libs)
+    # If we are setting up code for a shared library, then we need to add extra flags for
+    # compiling objects for shared libraries.
+    set(CUDA_HOST_SHARED_FLAGS ${CMAKE_SHARED_LIBRARY_${CUDA_C_OR_CXX}_FLAGS})
+  else()
+    set(CUDA_HOST_SHARED_FLAGS)
+  endif()
+  # Only add the CMAKE_{C,CXX}_FLAGS if we are propagating host flags.  We
+  # always need to set the SHARED_FLAGS, though.
+  if(CUDA_PROPAGATE_HOST_FLAGS)
+    set(_cuda_host_flags "set(CMAKE_HOST_FLAGS ${CMAKE_${CUDA_C_OR_CXX}_FLAGS} ${CUDA_HOST_SHARED_FLAGS})")
+  else()
+    set(_cuda_host_flags "set(CMAKE_HOST_FLAGS ${CUDA_HOST_SHARED_FLAGS})")
+  endif()
+
+  set(_cuda_nvcc_flags_config "# Build specific configuration flags")
+  # Loop over all the configuration types to generate appropriate flags for run_nvcc.cmake
+  foreach(config ${CUDA_configuration_types})
+    string(TOUPPER ${config} config_upper)
+    # CMAKE_FLAGS are strings and not lists.  By not putting quotes around CMAKE_FLAGS
+    # we convert the strings to lists (like we want).
+
+    if(CUDA_PROPAGATE_HOST_FLAGS)
+      # nvcc chokes on -g3 in versions previous to 3.0, so replace it with -g
+      set(_cuda_fix_g3 FALSE)
+
+      if(CMAKE_COMPILER_IS_GNUCC)
+        if (CUDA_VERSION VERSION_LESS  "3.0" OR
+            CUDA_VERSION VERSION_EQUAL "4.1" OR
+            CUDA_VERSION VERSION_EQUAL "4.2"
+            )
+          set(_cuda_fix_g3 TRUE)
+        endif()
+      endif()
+      if(_cuda_fix_g3)
+        string(REPLACE "-g3" "-g" _cuda_C_FLAGS "${CMAKE_${CUDA_C_OR_CXX}_FLAGS_${config_upper}}")
+      else()
+        set(_cuda_C_FLAGS "${CMAKE_${CUDA_C_OR_CXX}_FLAGS_${config_upper}}")
+      endif()
+
+      string(APPEND _cuda_host_flags "\nset(CMAKE_HOST_FLAGS_${config_upper} ${_cuda_C_FLAGS})")
+    endif()
+
+    # Note that if we ever want CUDA_NVCC_FLAGS_<CONFIG> to be string (instead of a list
+    # like it is currently), we can remove the quotes around the
+    # ${CUDA_NVCC_FLAGS_${config_upper}} variable like the CMAKE_HOST_FLAGS_<CONFIG> variable.
+    string(APPEND _cuda_nvcc_flags_config "\nset(CUDA_NVCC_FLAGS_${config_upper} ${CUDA_NVCC_FLAGS_${config_upper}} ;; ${CUDA_WRAP_OPTION_NVCC_FLAGS_${config_upper}})")
+  endforeach()
+
+  # Process the C++11 flag.  If the host sets the flag, we need to add it to nvcc and
+  # remove it from the host. This is because -Xcompile -std=c++ will choke nvcc (it uses
+  # the C preprocessor).  In order to get this to work correctly, we need to use nvcc's
+  # specific c++11 flag.
+  if( "${_cuda_host_flags}" MATCHES "-std=c\\+\\+11")
+    # Add the c++11 flag to nvcc if it isn't already present.  Note that we only look at
+    # the main flag instead of the configuration specific flags.
+    if( NOT "${CUDA_NVCC_FLAGS}" MATCHES "-std=c\\+\\+11" )
+      list(APPEND nvcc_flags --std c++11)
+    endif()
+    string(REGEX REPLACE "[-]+std=c\\+\\+11" "" _cuda_host_flags "${_cuda_host_flags}")
+  endif()
+
+  if(_cuda_build_shared_libs)
+    list(APPEND nvcc_flags "-D${cuda_target}_EXPORTS")
+  endif()
+
+  # Reset the output variable
+  set(_cuda_wrap_generated_files "")
+
+  # Iterate over the macro arguments and create custom
+  # commands for all the .cu files.
+  foreach(file ${_argn_list})
+    # Ignore any file marked as a HEADER_FILE_ONLY
+    get_source_file_property(_is_header ${file} HEADER_FILE_ONLY)
+    # Allow per source file overrides of the format.  Also allows compiling non-.cu files.
+    get_source_file_property(_cuda_source_format ${file} CUDA_SOURCE_PROPERTY_FORMAT)
+    if((${file} MATCHES "\\.cu$" OR _cuda_source_format) AND NOT _is_header)
+
+      if(NOT _cuda_source_format)
+        set(_cuda_source_format ${format})
+      endif()
+      # If file isn't a .cu file, we need to tell nvcc to treat it as such.
+      if(NOT ${file} MATCHES "\\.cu$")
+        set(cuda_language_flag -x=cu)
+      else()
+        set(cuda_language_flag)
+      endif()
+
+      if( ${_cuda_source_format} MATCHES "OBJ")
+        set( cuda_compile_to_external_module OFF )
+      else()
+        set( cuda_compile_to_external_module ON )
+        if( ${_cuda_source_format} MATCHES "PTX" )
+          set( cuda_compile_to_external_module_type "ptx" )
+        elseif( ${_cuda_source_format} MATCHES "CUBIN")
+          set( cuda_compile_to_external_module_type "cubin" )
+        elseif( ${_cuda_source_format} MATCHES "FATBIN")
+          set( cuda_compile_to_external_module_type "fatbin" )
+        else()
+          message( FATAL_ERROR "Invalid format flag passed to CUDA_WRAP_SRCS or set with CUDA_SOURCE_PROPERTY_FORMAT file property for file '${file}': '${_cuda_source_format}'.  Use OBJ, PTX, CUBIN or FATBIN.")
+        endif()
+      endif()
+
+      if(cuda_compile_to_external_module)
+        # Don't use any of the host compilation flags for PTX targets.
+        set(CUDA_HOST_FLAGS)
+        set(CUDA_NVCC_FLAGS_CONFIG)
+      else()
+        set(CUDA_HOST_FLAGS ${_cuda_host_flags})
+        set(CUDA_NVCC_FLAGS_CONFIG ${_cuda_nvcc_flags_config})
+      endif()
+
+      # Determine output directory
+      cuda_compute_build_path("${file}" cuda_build_path)
+      set(cuda_compile_intermediate_directory "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${cuda_target}.dir/${cuda_build_path}")
+      if(CUDA_GENERATED_OUTPUT_DIR)
+        set(cuda_compile_output_dir "${CUDA_GENERATED_OUTPUT_DIR}")
+      else()
+        if ( cuda_compile_to_external_module )
+          set(cuda_compile_output_dir "${CMAKE_CURRENT_BINARY_DIR}")
+        else()
+          set(cuda_compile_output_dir "${cuda_compile_intermediate_directory}")
+        endif()
+      endif()
+
+      # Add a custom target to generate a c or ptx file. ######################
+
+      get_filename_component( basename ${file} NAME )
+      if( cuda_compile_to_external_module )
+        set(generated_file_path "${cuda_compile_output_dir}")
+        set(generated_file_basename "${cuda_target}_generated_${basename}.${cuda_compile_to_external_module_type}")
+        set(format_flag "-${cuda_compile_to_external_module_type}")
+        file(MAKE_DIRECTORY "${cuda_compile_output_dir}")
+      else()
+        set(generated_file_path "${cuda_compile_output_dir}/${CMAKE_CFG_INTDIR}")
+        set(generated_file_basename "${cuda_target}_generated_${basename}${generated_extension}")
+        if(CUDA_SEPARABLE_COMPILATION)
+          set(format_flag "-dc")
+        else()
+          set(format_flag "-c")
+        endif()
+      endif()
+
+      # Set all of our file names.  Make sure that whatever filenames that have
+      # generated_file_path in them get passed in through as a command line
+      # argument, so that the ${CMAKE_CFG_INTDIR} gets expanded at run time
+      # instead of configure time.
+      set(generated_file "${generated_file_path}/${generated_file_basename}")
+      set(cmake_dependency_file "${cuda_compile_intermediate_directory}/${generated_file_basename}.depend")
+      set(NVCC_generated_dependency_file "${cuda_compile_intermediate_directory}/${generated_file_basename}.NVCC-depend")
+      set(generated_cubin_file "${generated_file_path}/${generated_file_basename}.cubin.txt")
+      set(custom_target_script_pregen "${cuda_compile_intermediate_directory}/${generated_file_basename}.cmake.pre-gen")
+      set(custom_target_script "${cuda_compile_intermediate_directory}/${generated_file_basename}$<$<BOOL:$<CONFIG>>:.$<CONFIG>>.cmake")
+
+      # Setup properties for obj files:
+      if( NOT cuda_compile_to_external_module )
+        set_source_files_properties("${generated_file}"
+          PROPERTIES
+          EXTERNAL_OBJECT true # This is an object file not to be compiled, but only be linked.
+          )
+      endif()
+
+      # Don't add CMAKE_CURRENT_SOURCE_DIR if the path is already an absolute path.
+      get_filename_component(file_path "${file}" PATH)
+      if(IS_ABSOLUTE "${file_path}")
+        set(source_file "${file}")
+      else()
+        set(source_file "${CMAKE_CURRENT_SOURCE_DIR}/${file}")
+      endif()
+
+      if( NOT cuda_compile_to_external_module AND CUDA_SEPARABLE_COMPILATION)
+        list(APPEND ${cuda_target}_SEPARABLE_COMPILATION_OBJECTS "${generated_file}")
+      endif()
+
+      # Bring in the dependencies.  Creates a variable CUDA_NVCC_DEPEND #######
+      cuda_include_nvcc_dependencies(${cmake_dependency_file})
+
+      # Convenience string for output #########################################
+      if(CUDA_BUILD_EMULATION)
+        set(cuda_build_type "Emulation")
+      else()
+        set(cuda_build_type "Device")
+      endif()
+
+      # Build the NVCC made dependency file ###################################
+      set(build_cubin OFF)
+      if ( NOT CUDA_BUILD_EMULATION AND CUDA_BUILD_CUBIN )
+         if ( NOT cuda_compile_to_external_module )
+           set ( build_cubin ON )
+         endif()
+      endif()
+
+      # Configure the build script
+      configure_file("${CUDA_run_nvcc}" "${custom_target_script_pregen}" @ONLY)
+      file(GENERATE
+        OUTPUT "${custom_target_script}"
+        INPUT "${custom_target_script_pregen}"
+        )
+
+      # So if a user specifies the same cuda file as input more than once, you
+      # can have bad things happen with dependencies.  Here we check an option
+      # to see if this is the behavior they want.
+      if(CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE)
+        set(main_dep MAIN_DEPENDENCY ${source_file})
+      else()
+        set(main_dep DEPENDS ${source_file})
+      endif()
+
+      if(CUDA_VERBOSE_BUILD)
+        set(verbose_output ON)
+      elseif(CMAKE_GENERATOR MATCHES "Makefiles")
+        set(verbose_output "$(VERBOSE)")
+      else()
+        set(verbose_output OFF)
+      endif()
+
+      # Create up the comment string
+      file(RELATIVE_PATH generated_file_relative_path "${CMAKE_BINARY_DIR}" "${generated_file}")
+      if(cuda_compile_to_external_module)
+        set(cuda_build_comment_string "Building NVCC ${cuda_compile_to_external_module_type} file ${generated_file_relative_path}")
+      else()
+        set(cuda_build_comment_string "Building NVCC (${cuda_build_type}) object ${generated_file_relative_path}")
+      endif()
+
+      set(_verbatim VERBATIM)
+      if(ccbin_flags MATCHES "\\$\\(VCInstallDir\\)")
+        set(_verbatim "")
+      endif()
+
+      # Build the generated file and dependency file ##########################
+      add_custom_command(
+        OUTPUT ${generated_file}
+        # These output files depend on the source_file and the contents of cmake_dependency_file
+        ${main_dep}
+        DEPENDS ${CUDA_NVCC_DEPEND}
+        DEPENDS ${custom_target_script}
+        # Make sure the output directory exists before trying to write to it.
+        COMMAND ${CMAKE_COMMAND} -E make_directory "${generated_file_path}"
+        COMMAND ${CMAKE_COMMAND} ARGS
+          -D verbose:BOOL=${verbose_output}
+          ${ccbin_flags}
+          -D build_configuration:STRING=${CUDA_build_configuration}
+          -D "generated_file:STRING=${generated_file}"
+          -D "generated_cubin_file:STRING=${generated_cubin_file}"
+          -P "${custom_target_script}"
+        WORKING_DIRECTORY "${cuda_compile_intermediate_directory}"
+        COMMENT "${cuda_build_comment_string}"
+        ${_verbatim}
+        )
+
+      # Make sure the build system knows the file is generated.
+      set_source_files_properties(${generated_file} PROPERTIES GENERATED TRUE)
+
+      list(APPEND _cuda_wrap_generated_files ${generated_file})
+
+      # Add the other files that we want cmake to clean on a cleanup ##########
+      list(APPEND CUDA_ADDITIONAL_CLEAN_FILES "${cmake_dependency_file}")
+      list(REMOVE_DUPLICATES CUDA_ADDITIONAL_CLEAN_FILES)
+      set(CUDA_ADDITIONAL_CLEAN_FILES ${CUDA_ADDITIONAL_CLEAN_FILES} CACHE INTERNAL "List of intermediate files that are part of the cuda dependency scanning.")
+
+    endif()
+  endforeach()
+
+  # Set the return parameter
+  set(${generated_files} ${_cuda_wrap_generated_files})
+endmacro()
+
+function(_cuda_get_important_host_flags important_flags flag_string)
+  if(CMAKE_GENERATOR MATCHES "Visual Studio")
+    string(REGEX MATCHALL "/M[DT][d]?" flags "${flag_string}")
+    list(APPEND ${important_flags} ${flags})
+  else()
+    string(REGEX MATCHALL "-fPIC" flags "${flag_string}")
+    list(APPEND ${important_flags} ${flags})
+  endif()
+  set(${important_flags} ${${important_flags}} PARENT_SCOPE)
+endfunction()
+
+###############################################################################
+###############################################################################
+# Separable Compilation Link
+###############################################################################
+###############################################################################
+
+# Compute the filename to be used by CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS
+function(CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME output_file_var cuda_target object_files)
+  if (object_files)
+    set(generated_extension ${CMAKE_${CUDA_C_OR_CXX}_OUTPUT_EXTENSION})
+    set(output_file "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${cuda_target}.dir/${CMAKE_CFG_INTDIR}/${cuda_target}_intermediate_link${generated_extension}")
+  else()
+    set(output_file)
+  endif()
+
+  set(${output_file_var} "${output_file}" PARENT_SCOPE)
+endfunction()
+
+# Setup the build rule for the separable compilation intermediate link file.
+function(CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS output_file cuda_target options object_files)
+  if (object_files)
+
+    set_source_files_properties("${output_file}"
+      PROPERTIES
+      EXTERNAL_OBJECT TRUE # This is an object file not to be compiled, but only
+                           # be linked.
+      GENERATED TRUE       # This file is generated during the build
+      )
+
+    # For now we are ignoring all the configuration specific flags.
+    set(nvcc_flags)
+    CUDA_PARSE_NVCC_OPTIONS(nvcc_flags ${options})
+    if(CUDA_64_BIT_DEVICE_CODE)
+      list(APPEND nvcc_flags -m64)
+    else()
+      list(APPEND nvcc_flags -m32)
+    endif()
+    # If -ccbin, --compiler-bindir has been specified, don't do anything.  Otherwise add it here.
+    list( FIND nvcc_flags "-ccbin" ccbin_found0 )
+    list( FIND nvcc_flags "--compiler-bindir" ccbin_found1 )
+    if( ccbin_found0 LESS 0 AND ccbin_found1 LESS 0 AND CUDA_HOST_COMPILER )
+      # Match VERBATIM check below.
+      if(CUDA_HOST_COMPILER MATCHES "\\$\\(VCInstallDir\\)")
+        list(APPEND nvcc_flags -ccbin "\"${CUDA_HOST_COMPILER}\"")
+      else()
+        list(APPEND nvcc_flags -ccbin "${CUDA_HOST_COMPILER}")
+      endif()
+    endif()
+
+    # Create a list of flags specified by CUDA_NVCC_FLAGS_${CONFIG} and CMAKE_${CUDA_C_OR_CXX}_FLAGS*
+    set(config_specific_flags)
+    set(flags)
+    foreach(config ${CUDA_configuration_types})
+      string(TOUPPER ${config} config_upper)
+      # Add config specific flags
+      foreach(f ${CUDA_NVCC_FLAGS_${config_upper}})
+        list(APPEND config_specific_flags $<$<CONFIG:${config}>:${f}>)
+      endforeach()
+      set(important_host_flags)
+      _cuda_get_important_host_flags(important_host_flags "${CMAKE_${CUDA_C_OR_CXX}_FLAGS_${config_upper}}")
+      foreach(f ${important_host_flags})
+        list(APPEND flags $<$<CONFIG:${config}>:-Xcompiler> $<$<CONFIG:${config}>:${f}>)
+      endforeach()
+    endforeach()
+    # Add CMAKE_${CUDA_C_OR_CXX}_FLAGS
+    set(important_host_flags)
+    _cuda_get_important_host_flags(important_host_flags "${CMAKE_${CUDA_C_OR_CXX}_FLAGS}")
+    foreach(f ${important_host_flags})
+      list(APPEND flags -Xcompiler ${f})
+    endforeach()
+
+    # Add our general CUDA_NVCC_FLAGS with the configuration specifig flags
+    set(nvcc_flags ${CUDA_NVCC_FLAGS} ${config_specific_flags} ${nvcc_flags})
+
+    file(RELATIVE_PATH output_file_relative_path "${CMAKE_BINARY_DIR}" "${output_file}")
+
+    # Some generators don't handle the multiple levels of custom command
+    # dependencies correctly (obj1 depends on file1, obj2 depends on obj1), so
+    # we work around that issue by compiling the intermediate link object as a
+    # pre-link custom command in that situation.
+    set(do_obj_build_rule TRUE)
+    if (MSVC_VERSION GREATER 1599 AND MSVC_VERSION LESS 1800)
+      # VS 2010 and 2012 have this problem.
+      set(do_obj_build_rule FALSE)
+    endif()
+
+    set(_verbatim VERBATIM)
+    if(nvcc_flags MATCHES "\\$\\(VCInstallDir\\)")
+      set(_verbatim "")
+    endif()
+
+    if (do_obj_build_rule)
+      add_custom_command(
+        OUTPUT ${output_file}
+        DEPENDS ${object_files}
+        COMMAND ${CUDA_NVCC_EXECUTABLE} ${nvcc_flags} -dlink ${object_files} -o ${output_file}
+        ${flags}
+        COMMENT "Building NVCC intermediate link file ${output_file_relative_path}"
+        COMMAND_EXPAND_LISTS
+        ${_verbatim}
+        )
+    else()
+      get_filename_component(output_file_dir "${output_file}" DIRECTORY)
+      add_custom_command(
+        TARGET ${cuda_target}
+        PRE_LINK
+        COMMAND ${CMAKE_COMMAND} -E echo "Building NVCC intermediate link file ${output_file_relative_path}"
+        COMMAND ${CMAKE_COMMAND} -E make_directory "${output_file_dir}"
+        COMMAND ${CUDA_NVCC_EXECUTABLE} ${nvcc_flags} ${flags} -dlink ${object_files} -o "${output_file}"
+        COMMAND_EXPAND_LISTS
+        ${_verbatim}
+        )
+    endif()
+ endif()
+endfunction()
+
+###############################################################################
+###############################################################################
+# ADD LIBRARY
+###############################################################################
+###############################################################################
+macro(CUDA_ADD_LIBRARY cuda_target)
+
+  CUDA_ADD_CUDA_INCLUDE_ONCE()
+
+  # Separate the sources from the options
+  CUDA_GET_SOURCES_AND_OPTIONS(_sources _cmake_options _options ${ARGN})
+  CUDA_BUILD_SHARED_LIBRARY(_cuda_shared_flag ${ARGN})
+  # Create custom commands and targets for each file.
+  CUDA_WRAP_SRCS( ${cuda_target} OBJ _generated_files ${_sources}
+    ${_cmake_options} ${_cuda_shared_flag}
+    OPTIONS ${_options} )
+
+  # Compute the file name of the intermedate link file used for separable
+  # compilation.
+  CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME(link_file ${cuda_target} "${${cuda_target}_SEPARABLE_COMPILATION_OBJECTS}")
+
+  # Add the library.
+  add_library(${cuda_target} ${_cmake_options}
+    ${_generated_files}
+    ${_sources}
+    ${link_file}
+    )
+
+  # Add a link phase for the separable compilation if it has been enabled.  If
+  # it has been enabled then the ${cuda_target}_SEPARABLE_COMPILATION_OBJECTS
+  # variable will have been defined.
+  CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS("${link_file}" ${cuda_target} "${_options}" "${${cuda_target}_SEPARABLE_COMPILATION_OBJECTS}")
+
+  target_link_libraries(${cuda_target} ${CUDA_LINK_LIBRARIES_KEYWORD}
+    ${CUDA_LIBRARIES}
+    )
+
+  if(CUDA_SEPARABLE_COMPILATION)
+    target_link_libraries(${cuda_target} ${CUDA_LINK_LIBRARIES_KEYWORD}
+      ${CUDA_cudadevrt_LIBRARY}
+      )
+  endif()
+
+  # We need to set the linker language based on what the expected generated file
+  # would be. CUDA_C_OR_CXX is computed based on CUDA_HOST_COMPILATION_CPP.
+  set_target_properties(${cuda_target}
+    PROPERTIES
+    LINKER_LANGUAGE ${CUDA_C_OR_CXX}
+    )
+
+endmacro()
+
+
+###############################################################################
+###############################################################################
+# ADD EXECUTABLE
+###############################################################################
+###############################################################################
+macro(CUDA_ADD_EXECUTABLE cuda_target)
+
+  CUDA_ADD_CUDA_INCLUDE_ONCE()
+
+  # Separate the sources from the options
+  CUDA_GET_SOURCES_AND_OPTIONS(_sources _cmake_options _options ${ARGN})
+  # Create custom commands and targets for each file.
+  CUDA_WRAP_SRCS( ${cuda_target} OBJ _generated_files ${_sources} OPTIONS ${_options} )
+
+  # Compute the file name of the intermedate link file used for separable
+  # compilation.
+  CUDA_COMPUTE_SEPARABLE_COMPILATION_OBJECT_FILE_NAME(link_file ${cuda_target} "${${cuda_target}_SEPARABLE_COMPILATION_OBJECTS}")
+
+  # Add the library.
+  add_executable(${cuda_target} ${_cmake_options}
+    ${_generated_files}
+    ${_sources}
+    ${link_file}
+    )
+
+  # Add a link phase for the separable compilation if it has been enabled.  If
+  # it has been enabled then the ${cuda_target}_SEPARABLE_COMPILATION_OBJECTS
+  # variable will have been defined.
+  CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS("${link_file}" ${cuda_target} "${_options}" "${${cuda_target}_SEPARABLE_COMPILATION_OBJECTS}")
+
+  target_link_libraries(${cuda_target} ${CUDA_LINK_LIBRARIES_KEYWORD}
+    ${CUDA_LIBRARIES}
+    )
+
+  # We need to set the linker language based on what the expected generated file
+  # would be. CUDA_C_OR_CXX is computed based on CUDA_HOST_COMPILATION_CPP.
+  set_target_properties(${cuda_target}
+    PROPERTIES
+    LINKER_LANGUAGE ${CUDA_C_OR_CXX}
+    )
+
+endmacro()
+
+
+###############################################################################
+###############################################################################
+# (Internal) helper for manually added cuda source files with specific targets
+###############################################################################
+###############################################################################
+macro(cuda_compile_base cuda_target format generated_files)
+  # Update a counter in this directory, to keep phony target names unique.
+  set(_cuda_target "${cuda_target}")
+  get_property(_counter DIRECTORY PROPERTY _cuda_internal_phony_counter)
+  if(_counter)
+    math(EXPR _counter "${_counter} + 1")
+  else()
+    set(_counter 1)
+  endif()
+  string(APPEND _cuda_target "_${_counter}")
+  set_property(DIRECTORY PROPERTY _cuda_internal_phony_counter ${_counter})
+
+  # Separate the sources from the options
+  CUDA_GET_SOURCES_AND_OPTIONS(_sources _cmake_options _options ${ARGN})
+
+  # Create custom commands and targets for each file.
+  CUDA_WRAP_SRCS( ${_cuda_target} ${format} _generated_files ${_sources}
+                  ${_cmake_options} OPTIONS ${_options} PHONY)
+
+  set( ${generated_files} ${_generated_files})
+
+endmacro()
+
+###############################################################################
+###############################################################################
+# CUDA COMPILE
+###############################################################################
+###############################################################################
+macro(CUDA_COMPILE generated_files)
+  cuda_compile_base(cuda_compile OBJ ${generated_files} ${ARGN})
+endmacro()
+
+###############################################################################
+###############################################################################
+# CUDA COMPILE PTX
+###############################################################################
+###############################################################################
+macro(CUDA_COMPILE_PTX generated_files)
+  cuda_compile_base(cuda_compile_ptx PTX ${generated_files} ${ARGN})
+endmacro()
+
+###############################################################################
+###############################################################################
+# CUDA COMPILE FATBIN
+###############################################################################
+###############################################################################
+macro(CUDA_COMPILE_FATBIN generated_files)
+  cuda_compile_base(cuda_compile_fatbin FATBIN ${generated_files} ${ARGN})
+endmacro()
+
+###############################################################################
+###############################################################################
+# CUDA COMPILE CUBIN
+###############################################################################
+###############################################################################
+macro(CUDA_COMPILE_CUBIN generated_files)
+  cuda_compile_base(cuda_compile_cubin CUBIN ${generated_files} ${ARGN})
+endmacro()
+
+
+###############################################################################
+###############################################################################
+# CUDA ADD CUFFT TO TARGET
+###############################################################################
+###############################################################################
+macro(CUDA_ADD_CUFFT_TO_TARGET target)
+  if (CUDA_BUILD_EMULATION)
+    target_link_libraries(${target} ${CUDA_LINK_LIBRARIES_KEYWORD} ${CUDA_cufftemu_LIBRARY})
+  else()
+    target_link_libraries(${target} ${CUDA_LINK_LIBRARIES_KEYWORD} ${CUDA_cufft_LIBRARY})
+  endif()
+endmacro()
+
+###############################################################################
+###############################################################################
+# CUDA ADD CUBLAS TO TARGET
+###############################################################################
+###############################################################################
+macro(CUDA_ADD_CUBLAS_TO_TARGET target)
+  if (CUDA_BUILD_EMULATION)
+    target_link_libraries(${target} ${CUDA_LINK_LIBRARIES_KEYWORD} ${CUDA_cublasemu_LIBRARY})
+  else()
+    target_link_libraries(${target} ${CUDA_LINK_LIBRARIES_KEYWORD} ${CUDA_cublas_LIBRARY} ${CUDA_cublas_device_LIBRARY})
+  endif()
+endmacro()
+
+###############################################################################
+###############################################################################
+# CUDA BUILD CLEAN TARGET
+###############################################################################
+###############################################################################
+macro(CUDA_BUILD_CLEAN_TARGET)
+  # Call this after you add all your CUDA targets, and you will get a
+  # convenience target.  You should also make clean after running this target
+  # to get the build system to generate all the code again.
+
+  set(cuda_clean_target_name clean_cuda_depends)
+  if (CMAKE_GENERATOR MATCHES "Visual Studio")
+    string(TOUPPER ${cuda_clean_target_name} cuda_clean_target_name)
+  endif()
+  add_custom_target(${cuda_clean_target_name}
+    COMMAND ${CMAKE_COMMAND} -E rm -f ${CUDA_ADDITIONAL_CLEAN_FILES})
+
+  # Clear out the variable, so the next time we configure it will be empty.
+  # This is useful so that the files won't persist in the list after targets
+  # have been removed.
+  set(CUDA_ADDITIONAL_CLEAN_FILES "" CACHE INTERNAL "List of intermediate files that are part of the cuda dependency scanning.")
+endmacro()
diff --git a/share/cmake-3.18/Modules/FindCUDA/make2cmake.cmake b/share/cmake-3.22/Modules/FindCUDA/make2cmake.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindCUDA/make2cmake.cmake
rename to share/cmake-3.22/Modules/FindCUDA/make2cmake.cmake
diff --git a/share/cmake-3.18/Modules/FindCUDA/parse_cubin.cmake b/share/cmake-3.22/Modules/FindCUDA/parse_cubin.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindCUDA/parse_cubin.cmake
rename to share/cmake-3.22/Modules/FindCUDA/parse_cubin.cmake
diff --git a/share/cmake-3.22/Modules/FindCUDA/run_nvcc.cmake b/share/cmake-3.22/Modules/FindCUDA/run_nvcc.cmake
new file mode 100644
index 0000000..17e12f8
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindCUDA/run_nvcc.cmake
@@ -0,0 +1,306 @@
+#  James Bigler, NVIDIA Corp (nvidia.com - jbigler)
+#
+#  Copyright (c) 2008 - 2009 NVIDIA Corporation.  All rights reserved.
+#
+#  This code is licensed under the MIT License.  See the FindCUDA.cmake script
+#  for the text of the license.
+
+# The MIT License
+#
+# License for the specific language governing rights and limitations under
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+
+
+##########################################################################
+# This file runs the nvcc commands to produce the desired output file along with
+# the dependency file needed by CMake to compute dependencies.  In addition the
+# file checks the output of each command and if the command fails it deletes the
+# output files.
+
+# Input variables
+#
+# verbose:BOOL=<>          OFF: Be as quiet as possible (default)
+#                          ON : Describe each step
+#
+# build_configuration:STRING=<> Typically one of Debug, MinSizeRel, Release, or
+#                               RelWithDebInfo, but it should match one of the
+#                               entries in CUDA_HOST_FLAGS. This is the build
+#                               configuration used when compiling the code.  If
+#                               blank or unspecified Debug is assumed as this is
+#                               what CMake does.
+#
+# generated_file:STRING=<> File to generate.  This argument must be passed in.
+#
+# generated_cubin_file:STRING=<> File to generate.  This argument must be passed
+#                                                   in if build_cubin is true.
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0007 NEW)
+if(NOT generated_file)
+  message(FATAL_ERROR "You must specify generated_file on the command line")
+endif()
+
+# Set these up as variables to make reading the generated file easier
+set(CMAKE_COMMAND "@CMAKE_COMMAND@") # path
+set(source_file "@source_file@") # path
+set(NVCC_generated_dependency_file "@NVCC_generated_dependency_file@") # path
+set(cmake_dependency_file "@cmake_dependency_file@") # path
+set(CUDA_make2cmake "@CUDA_make2cmake@") # path
+set(CUDA_parse_cubin "@CUDA_parse_cubin@") # path
+set(build_cubin @build_cubin@) # bool
+set(CUDA_HOST_COMPILER "@CUDA_HOST_COMPILER@") # path
+# We won't actually use these variables for now, but we need to set this, in
+# order to force this file to be run again if it changes.
+set(generated_file_path "@generated_file_path@") # path
+set(generated_file_internal "@generated_file@") # path
+set(generated_cubin_file_internal "@generated_cubin_file@") # path
+
+set(CUDA_NVCC_EXECUTABLE "@CUDA_NVCC_EXECUTABLE@") # path
+set(CUDA_NVCC_FLAGS @CUDA_NVCC_FLAGS@ ;; @CUDA_WRAP_OPTION_NVCC_FLAGS@) # list
+@CUDA_NVCC_FLAGS_CONFIG@
+set(nvcc_flags @nvcc_flags@) # list
+set(CUDA_NVCC_INCLUDE_DIRS [==[@CUDA_NVCC_INCLUDE_DIRS@]==]) # list (needs to be in lua quotes to address backslashes)
+string(REPLACE "\\" "/" CUDA_NVCC_INCLUDE_DIRS "${CUDA_NVCC_INCLUDE_DIRS}")
+set(CUDA_NVCC_COMPILE_DEFINITIONS [==[@CUDA_NVCC_COMPILE_DEFINITIONS@]==]) # list (needs to be in lua quotes see #16510 ).
+set(format_flag "@format_flag@") # string
+set(cuda_language_flag @cuda_language_flag@) # list
+
+# Clean up list of include directories and add -I flags
+list(REMOVE_DUPLICATES CUDA_NVCC_INCLUDE_DIRS)
+set(CUDA_NVCC_INCLUDE_ARGS)
+foreach(dir ${CUDA_NVCC_INCLUDE_DIRS})
+  # Extra quotes are added around each flag to help nvcc parse out flags with spaces.
+  list(APPEND CUDA_NVCC_INCLUDE_ARGS "-I${dir}")
+endforeach()
+
+# Clean up list of compile definitions, add -D flags, and append to nvcc_flags
+list(REMOVE_DUPLICATES CUDA_NVCC_COMPILE_DEFINITIONS)
+foreach(def ${CUDA_NVCC_COMPILE_DEFINITIONS})
+  list(APPEND nvcc_flags "-D${def}")
+endforeach()
+
+if(build_cubin AND NOT generated_cubin_file)
+  message(FATAL_ERROR "You must specify generated_cubin_file on the command line")
+endif()
+
+# This is the list of host compilation flags.  It C or CXX should already have
+# been chosen by FindCUDA.cmake.
+@CUDA_HOST_FLAGS@
+
+# Take the compiler flags and package them up to be sent to the compiler via -Xcompiler
+set(nvcc_host_compiler_flags "")
+# If we weren't given a build_configuration, use Debug.
+if(NOT build_configuration)
+  set(build_configuration Debug)
+endif()
+string(TOUPPER "${build_configuration}" build_configuration)
+#message("CUDA_NVCC_HOST_COMPILER_FLAGS = ${CUDA_NVCC_HOST_COMPILER_FLAGS}")
+foreach(flag ${CMAKE_HOST_FLAGS} ${CMAKE_HOST_FLAGS_${build_configuration}})
+  # Extra quotes are added around each flag to help nvcc parse out flags with spaces.
+  string(APPEND nvcc_host_compiler_flags ",\"${flag}\"")
+endforeach()
+if (nvcc_host_compiler_flags)
+  set(nvcc_host_compiler_flags "-Xcompiler" ${nvcc_host_compiler_flags})
+endif()
+#message("nvcc_host_compiler_flags = \"${nvcc_host_compiler_flags}\"")
+# Add the build specific configuration flags
+list(APPEND CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS_${build_configuration}})
+
+# Any -ccbin existing in CUDA_NVCC_FLAGS gets highest priority
+list( FIND CUDA_NVCC_FLAGS "-ccbin" ccbin_found0 )
+list( FIND CUDA_NVCC_FLAGS "--compiler-bindir" ccbin_found1 )
+if( ccbin_found0 LESS 0 AND ccbin_found1 LESS 0 AND CUDA_HOST_COMPILER )
+  if (CUDA_HOST_COMPILER STREQUAL "@_CUDA_MSVC_HOST_COMPILER@" AND DEFINED CCBIN)
+    set(CCBIN -ccbin "${CCBIN}")
+  else()
+    set(CCBIN -ccbin "${CUDA_HOST_COMPILER}")
+  endif()
+endif()
+
+# cuda_execute_process - Executes a command with optional command echo and status message.
+#
+#   status  - Status message to print if verbose is true
+#   command - COMMAND argument from the usual execute_process argument structure
+#   ARGN    - Remaining arguments are the command with arguments
+#
+#   CUDA_result - return value from running the command
+#
+# Make this a macro instead of a function, so that things like RESULT_VARIABLE
+# and other return variables are present after executing the process.
+macro(cuda_execute_process status command)
+  set(_command ${command})
+  if(NOT "x${_command}" STREQUAL "xCOMMAND")
+    message(FATAL_ERROR "Malformed call to cuda_execute_process.  Missing COMMAND as second argument. (command = ${command})")
+  endif()
+  if(verbose)
+    execute_process(COMMAND "${CMAKE_COMMAND}" -E echo -- ${status})
+    # Now we need to build up our command string.  We are accounting for quotes
+    # and spaces, anything else is left up to the user to fix if they want to
+    # copy and paste a runnable command line.
+    set(cuda_execute_process_string)
+    foreach(arg ${ARGN})
+      # If there are quotes, escape them, so they come through.
+      string(REPLACE "\"" "\\\"" arg ${arg})
+      # Args with spaces need quotes around them to get them to be parsed as a single argument.
+      if(arg MATCHES " ")
+        list(APPEND cuda_execute_process_string "\"${arg}\"")
+      else()
+        list(APPEND cuda_execute_process_string ${arg})
+      endif()
+    endforeach()
+    # Echo the command
+    execute_process(COMMAND ${CMAKE_COMMAND} -E echo ${cuda_execute_process_string})
+  endif()
+  # Run the command
+  execute_process(COMMAND ${ARGN} RESULT_VARIABLE CUDA_result )
+endmacro()
+
+# Delete the target file
+cuda_execute_process(
+  "Removing ${generated_file}"
+  COMMAND "${CMAKE_COMMAND}" -E rm -f "${generated_file}"
+  )
+
+# For CUDA 2.3 and below, -G -M doesn't work, so remove the -G flag
+# for dependency generation and hope for the best.
+set(depends_CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS}")
+set(CUDA_VERSION @CUDA_VERSION@)
+if(CUDA_VERSION VERSION_LESS "3.0")
+  # Note that this will remove all occurrences of -G.
+  list(REMOVE_ITEM depends_CUDA_NVCC_FLAGS "-G")
+endif()
+
+# nvcc doesn't define __CUDACC__ for some reason when generating dependency files.  This
+# can cause incorrect dependencies when #including files based on this macro which is
+# defined in the generating passes of nvcc invocation.  We will go ahead and manually
+# define this for now until a future version fixes this bug.
+set(CUDACC_DEFINE -D__CUDACC__)
+
+# Generate the dependency file
+cuda_execute_process(
+  "Generating dependency file: ${NVCC_generated_dependency_file}"
+  COMMAND "${CUDA_NVCC_EXECUTABLE}"
+  -M
+  ${CUDACC_DEFINE}
+  "${source_file}"
+  -o "${NVCC_generated_dependency_file}"
+  ${CCBIN}
+  ${nvcc_flags}
+  ${nvcc_host_compiler_flags}
+  ${depends_CUDA_NVCC_FLAGS}
+  -DNVCC
+  ${CUDA_NVCC_INCLUDE_ARGS}
+  )
+
+if(CUDA_result)
+  message(FATAL_ERROR "Error generating ${generated_file}")
+endif()
+
+# Generate the cmake readable dependency file to a temp file.  Don't put the
+# quotes just around the filenames for the input_file and output_file variables.
+# CMake will pass the quotes through and not be able to find the file.
+cuda_execute_process(
+  "Generating temporary cmake readable file: ${cmake_dependency_file}.tmp"
+  COMMAND "${CMAKE_COMMAND}"
+  -D "input_file:FILEPATH=${NVCC_generated_dependency_file}"
+  -D "output_file:FILEPATH=${cmake_dependency_file}.tmp"
+  -D "verbose=${verbose}"
+  -P "${CUDA_make2cmake}"
+  )
+
+if(CUDA_result)
+  message(FATAL_ERROR "Error generating ${generated_file}")
+endif()
+
+# Copy the file if it is different
+cuda_execute_process(
+  "Copy if different ${cmake_dependency_file}.tmp to ${cmake_dependency_file}"
+  COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${cmake_dependency_file}.tmp" "${cmake_dependency_file}"
+  )
+
+if(CUDA_result)
+  message(FATAL_ERROR "Error generating ${generated_file}")
+endif()
+
+# Delete the temporary file
+cuda_execute_process(
+  "Removing ${cmake_dependency_file}.tmp and ${NVCC_generated_dependency_file}"
+  COMMAND "${CMAKE_COMMAND}" -E rm -f "${cmake_dependency_file}.tmp" "${NVCC_generated_dependency_file}"
+  )
+
+if(CUDA_result)
+  message(FATAL_ERROR "Error generating ${generated_file}")
+endif()
+
+# Generate the code
+cuda_execute_process(
+  "Generating ${generated_file}"
+  COMMAND "${CUDA_NVCC_EXECUTABLE}"
+  "${source_file}"
+  ${cuda_language_flag}
+  ${format_flag} -o "${generated_file}"
+  ${CCBIN}
+  ${nvcc_flags}
+  ${nvcc_host_compiler_flags}
+  ${CUDA_NVCC_FLAGS}
+  -DNVCC
+  ${CUDA_NVCC_INCLUDE_ARGS}
+  )
+
+if(CUDA_result)
+  # Since nvcc can sometimes leave half done files make sure that we delete the output file.
+  cuda_execute_process(
+    "Removing ${generated_file}"
+    COMMAND "${CMAKE_COMMAND}" -E rm -f "${generated_file}"
+    )
+  message(FATAL_ERROR "Error generating file ${generated_file}")
+else()
+  if(verbose)
+    message("Generated ${generated_file} successfully.")
+  endif()
+endif()
+
+# Cubin resource report commands.
+if( build_cubin )
+  # Run with -cubin to produce resource usage report.
+  cuda_execute_process(
+    "Generating ${generated_cubin_file}"
+    COMMAND "${CUDA_NVCC_EXECUTABLE}"
+    "${source_file}"
+    ${CUDA_NVCC_FLAGS}
+    ${nvcc_flags}
+    ${CCBIN}
+    ${nvcc_host_compiler_flags}
+    -DNVCC
+    -cubin
+    -o "${generated_cubin_file}"
+    ${CUDA_NVCC_INCLUDE_ARGS}
+    )
+
+  # Execute the parser script.
+  cuda_execute_process(
+    "Executing the parser script"
+    COMMAND  "${CMAKE_COMMAND}"
+    -D "input_file:STRING=${generated_cubin_file}"
+    -P "${CUDA_parse_cubin}"
+    )
+
+endif()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/FindCUDA/select_compute_arch.cmake b/share/cmake-3.22/Modules/FindCUDA/select_compute_arch.cmake
new file mode 100644
index 0000000..a35b3f8
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindCUDA/select_compute_arch.cmake
@@ -0,0 +1,298 @@
+# Synopsis:
+#   CUDA_SELECT_NVCC_ARCH_FLAGS(out_variable [target_CUDA_architectures])
+#   -- Selects GPU arch flags for nvcc based on target_CUDA_architectures
+#      target_CUDA_architectures : Auto | Common | All | LIST(ARCH_AND_PTX ...)
+#       - "Auto" detects local machine GPU compute arch at runtime.
+#       - "Common" and "All" cover common and entire subsets of architectures
+#      ARCH_AND_PTX : NAME | NUM.NUM | NUM.NUM(NUM.NUM) | NUM.NUM+PTX
+#      NAME: Fermi Kepler Maxwell Kepler+Tegra Kepler+Tesla Maxwell+Tegra Pascal Volta Turing Ampere
+#      NUM: Any number. Only those pairs are currently accepted by NVCC though:
+#            2.0 2.1 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.2 7.0 7.2 7.5 8.0 8.6
+#      Returns LIST of flags to be added to CUDA_NVCC_FLAGS in ${out_variable}
+#      Additionally, sets ${out_variable}_readable to the resulting numeric list
+#      Example:
+#       CUDA_SELECT_NVCC_ARCH_FLAGS(ARCH_FLAGS 3.0 3.5+PTX 5.2(5.0) Maxwell)
+#        LIST(APPEND CUDA_NVCC_FLAGS ${ARCH_FLAGS})
+#
+#      More info on CUDA architectures: https://en.wikipedia.org/wiki/CUDA
+#
+
+if(CMAKE_CUDA_COMPILER_LOADED) # CUDA as a language
+  if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA"
+      AND CMAKE_CUDA_COMPILER_VERSION MATCHES "^([0-9]+\\.[0-9]+)")
+    set(CUDA_VERSION "${CMAKE_MATCH_1}")
+  endif()
+endif()
+
+# See: https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#gpu-feature-list
+# Additions, deprecations, and removals can be found in the release notes:
+# https://developer.nvidia.com/cuda-toolkit-archive
+
+# The initial status here is for CUDA 7.0
+set(CUDA_KNOWN_GPU_ARCHITECTURES  "Fermi" "Kepler" "Maxwell" "Kepler+Tegra" "Kepler+Tesla" "Maxwell+Tegra")
+set(CUDA_COMMON_GPU_ARCHITECTURES "2.0" "2.1" "3.0" "3.5" "5.0" "5.3")
+set(CUDA_LIMIT_GPU_ARCHITECTURE "6.0")
+set(CUDA_ALL_GPU_ARCHITECTURES "2.0" "2.1" "3.0" "3.2" "3.5" "3.7" "5.0" "5.2" "5.3")
+set(_CUDA_MAX_COMMON_ARCHITECTURE "5.2+PTX")
+
+
+if(CUDA_VERSION VERSION_GREATER_EQUAL "8.0")
+  list(APPEND CUDA_KNOWN_GPU_ARCHITECTURES "Pascal")
+  list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "6.0" "6.1")
+  list(APPEND CUDA_ALL_GPU_ARCHITECTURES "6.0" "6.1" "6.2")
+
+  set(_CUDA_MAX_COMMON_ARCHITECTURE "6.2+PTX")
+  set(CUDA_LIMIT_GPU_ARCHITECTURE "7.0")
+
+  list(REMOVE_ITEM CUDA_COMMON_GPU_ARCHITECTURES "2.0" "2.1")
+endif ()
+
+if(CUDA_VERSION VERSION_GREATER_EQUAL "9.0")
+  list(APPEND CUDA_KNOWN_GPU_ARCHITECTURES "Volta")
+  list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "7.0")
+  list(APPEND CUDA_ALL_GPU_ARCHITECTURES "7.0" "7.2")
+
+  set(_CUDA_MAX_COMMON_ARCHITECTURE "7.2+PTX")
+  set(CUDA_LIMIT_GPU_ARCHITECTURE "8.0")
+
+  list(REMOVE_ITEM CUDA_KNOWN_GPU_ARCHITECTURES "Fermi")
+  list(REMOVE_ITEM CUDA_ALL_GPU_ARCHITECTURES "2.0" "2.1")
+endif()
+
+if(CUDA_VERSION VERSION_GREATER_EQUAL "10.0")
+  list(APPEND CUDA_KNOWN_GPU_ARCHITECTURES "Turing")
+  list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "7.5")
+  list(APPEND CUDA_ALL_GPU_ARCHITECTURES "7.5")
+
+  set(_CUDA_MAX_COMMON_ARCHITECTURE "7.5+PTX")
+  set(CUDA_LIMIT_GPU_ARCHITECTURE "8.0")
+
+  list(REMOVE_ITEM CUDA_COMMON_GPU_ARCHITECTURES "3.0")
+endif()
+
+# https://docs.nvidia.com/cuda/archive/11.0/cuda-toolkit-release-notes/index.html#cuda-general-new-features
+# https://docs.nvidia.com/cuda/archive/11.0/cuda-toolkit-release-notes/index.html#deprecated-features
+if(CUDA_VERSION VERSION_GREATER_EQUAL "11.0")
+  list(APPEND CUDA_KNOWN_GPU_ARCHITECTURES "Ampere")
+  list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "8.0")
+  list(APPEND CUDA_ALL_GPU_ARCHITECTURES "8.0")
+
+  set(_CUDA_MAX_COMMON_ARCHITECTURE "8.0+PTX")
+  set(CUDA_LIMIT_GPU_ARCHITECTURE "8.6")
+
+  list(REMOVE_ITEM CUDA_COMMON_GPU_ARCHITECTURES "3.5" "5.0")
+  list(REMOVE_ITEM CUDA_ALL_GPU_ARCHITECTURES "3.0" "3.2")
+endif()
+
+if(CUDA_VERSION VERSION_GREATER_EQUAL "11.1")
+  list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "8.6")
+  list(APPEND CUDA_ALL_GPU_ARCHITECTURES "8.6")
+
+  set(_CUDA_MAX_COMMON_ARCHITECTURE "8.6+PTX")
+  set(CUDA_LIMIT_GPU_ARCHITECTURE "9.0")
+endif()
+
+list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "${_CUDA_MAX_COMMON_ARCHITECTURE}")
+
+# Check with: cmake -DCUDA_VERSION=7.0 -P select_compute_arch.cmake
+if(DEFINED CMAKE_SCRIPT_MODE_FILE)
+  include(CMakePrintHelpers)
+  cmake_print_variables(CUDA_KNOWN_GPU_ARCHITECTURES)
+  cmake_print_variables(CUDA_COMMON_GPU_ARCHITECTURES)
+  cmake_print_variables(CUDA_LIMIT_GPU_ARCHITECTURE)
+  cmake_print_variables(CUDA_ALL_GPU_ARCHITECTURES)
+endif()
+
+
+################################################################################################
+# A function for automatic detection of GPUs installed  (if autodetection is enabled)
+# Usage:
+#   CUDA_DETECT_INSTALLED_GPUS(OUT_VARIABLE)
+#
+function(CUDA_DETECT_INSTALLED_GPUS OUT_VARIABLE)
+  if(NOT CUDA_GPU_DETECT_OUTPUT)
+    if(CMAKE_CUDA_COMPILER_LOADED) # CUDA as a language
+      set(file "${PROJECT_BINARY_DIR}/detect_cuda_compute_capabilities.cu")
+    else()
+      set(file "${PROJECT_BINARY_DIR}/detect_cuda_compute_capabilities.cpp")
+    endif()
+
+    file(WRITE ${file} ""
+      "#include <cuda_runtime.h>\n"
+      "#include <cstdio>\n"
+      "int main()\n"
+      "{\n"
+      "  int count = 0;\n"
+      "  if (cudaSuccess != cudaGetDeviceCount(&count)) return -1;\n"
+      "  if (count == 0) return -1;\n"
+      "  for (int device = 0; device < count; ++device)\n"
+      "  {\n"
+      "    cudaDeviceProp prop;\n"
+      "    if (cudaSuccess == cudaGetDeviceProperties(&prop, device))\n"
+      "      std::printf(\"%d.%d \", prop.major, prop.minor);\n"
+      "  }\n"
+      "  return 0;\n"
+      "}\n")
+
+    if(CMAKE_CUDA_COMPILER_LOADED) # CUDA as a language
+      try_run(run_result compile_result ${PROJECT_BINARY_DIR} ${file}
+              RUN_OUTPUT_VARIABLE compute_capabilities)
+    else()
+      try_run(run_result compile_result ${PROJECT_BINARY_DIR} ${file}
+              CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${CUDA_INCLUDE_DIRS}"
+              LINK_LIBRARIES ${CUDA_LIBRARIES}
+              RUN_OUTPUT_VARIABLE compute_capabilities)
+    endif()
+
+    # Filter unrelated content out of the output.
+    string(REGEX MATCHALL "[0-9]+\\.[0-9]+" compute_capabilities "${compute_capabilities}")
+
+    if(run_result EQUAL 0)
+      string(REPLACE "2.1" "2.1(2.0)" compute_capabilities "${compute_capabilities}")
+      set(CUDA_GPU_DETECT_OUTPUT ${compute_capabilities}
+        CACHE INTERNAL "Returned GPU architectures from detect_gpus tool" FORCE)
+    endif()
+  endif()
+
+  if(NOT CUDA_GPU_DETECT_OUTPUT)
+    message(STATUS "Automatic GPU detection failed. Building for common architectures.")
+    set(${OUT_VARIABLE} ${CUDA_COMMON_GPU_ARCHITECTURES} PARENT_SCOPE)
+  else()
+    # Filter based on CUDA version supported archs
+    set(CUDA_GPU_DETECT_OUTPUT_FILTERED "")
+    separate_arguments(CUDA_GPU_DETECT_OUTPUT)
+    foreach(ITEM IN ITEMS ${CUDA_GPU_DETECT_OUTPUT})
+        if(CUDA_LIMIT_GPU_ARCHITECTURE AND ITEM VERSION_GREATER_EQUAL CUDA_LIMIT_GPU_ARCHITECTURE)
+        list(GET CUDA_COMMON_GPU_ARCHITECTURES -1 NEWITEM)
+        string(APPEND CUDA_GPU_DETECT_OUTPUT_FILTERED " ${NEWITEM}")
+      else()
+        string(APPEND CUDA_GPU_DETECT_OUTPUT_FILTERED " ${ITEM}")
+      endif()
+    endforeach()
+
+    set(${OUT_VARIABLE} ${CUDA_GPU_DETECT_OUTPUT_FILTERED} PARENT_SCOPE)
+  endif()
+endfunction()
+
+
+################################################################################################
+# Function for selecting GPU arch flags for nvcc based on CUDA architectures from parameter list
+# Usage:
+#   SELECT_NVCC_ARCH_FLAGS(out_variable [list of CUDA compute archs])
+function(CUDA_SELECT_NVCC_ARCH_FLAGS out_variable)
+  set(CUDA_ARCH_LIST "${ARGN}")
+
+  if("X${CUDA_ARCH_LIST}" STREQUAL "X" )
+    set(CUDA_ARCH_LIST "Auto")
+  endif()
+
+  set(cuda_arch_bin)
+  set(cuda_arch_ptx)
+
+  if("${CUDA_ARCH_LIST}" STREQUAL "All")
+    set(CUDA_ARCH_LIST ${CUDA_KNOWN_GPU_ARCHITECTURES})
+  elseif("${CUDA_ARCH_LIST}" STREQUAL "Common")
+    set(CUDA_ARCH_LIST ${CUDA_COMMON_GPU_ARCHITECTURES})
+  elseif("${CUDA_ARCH_LIST}" STREQUAL "Auto")
+    CUDA_DETECT_INSTALLED_GPUS(CUDA_ARCH_LIST)
+    message(STATUS "Autodetected CUDA architecture(s): ${CUDA_ARCH_LIST}")
+  endif()
+
+  # Now process the list and look for names
+  string(REGEX REPLACE "[ \t]+" ";" CUDA_ARCH_LIST "${CUDA_ARCH_LIST}")
+  list(REMOVE_DUPLICATES CUDA_ARCH_LIST)
+  foreach(arch_name ${CUDA_ARCH_LIST})
+    set(arch_bin)
+    set(arch_ptx)
+    set(add_ptx FALSE)
+    # Check to see if we are compiling PTX
+    if(arch_name MATCHES "(.*)\\+PTX$")
+      set(add_ptx TRUE)
+      set(arch_name ${CMAKE_MATCH_1})
+    endif()
+    if(arch_name MATCHES "^([0-9]\\.[0-9](\\([0-9]\\.[0-9]\\))?)$")
+      set(arch_bin ${CMAKE_MATCH_1})
+      set(arch_ptx ${arch_bin})
+    else()
+      # Look for it in our list of known architectures
+      if(${arch_name} STREQUAL "Fermi")
+        set(arch_bin 2.0 "2.1(2.0)")
+      elseif(${arch_name} STREQUAL "Kepler+Tegra")
+        set(arch_bin 3.2)
+      elseif(${arch_name} STREQUAL "Kepler+Tesla")
+        set(arch_bin 3.7)
+      elseif(${arch_name} STREQUAL "Kepler")
+        set(arch_bin 3.0 3.5)
+        set(arch_ptx 3.5)
+      elseif(${arch_name} STREQUAL "Maxwell+Tegra")
+        set(arch_bin 5.3)
+      elseif(${arch_name} STREQUAL "Maxwell")
+        set(arch_bin 5.0 5.2)
+        set(arch_ptx 5.2)
+      elseif(${arch_name} STREQUAL "Pascal")
+        set(arch_bin 6.0 6.1)
+        set(arch_ptx 6.1)
+      elseif(${arch_name} STREQUAL "Volta")
+        set(arch_bin 7.0 7.0)
+        set(arch_ptx 7.0)
+      elseif(${arch_name} STREQUAL "Turing")
+        set(arch_bin 7.5)
+        set(arch_ptx 7.5)
+      elseif(${arch_name} STREQUAL "Ampere")
+        set(arch_bin 8.0)
+        set(arch_ptx 8.0)
+      else()
+        message(SEND_ERROR "Unknown CUDA Architecture Name ${arch_name} in CUDA_SELECT_NVCC_ARCH_FLAGS")
+      endif()
+    endif()
+    if(NOT arch_bin)
+      message(SEND_ERROR "arch_bin wasn't set for some reason")
+    endif()
+    list(APPEND cuda_arch_bin ${arch_bin})
+    if(add_ptx)
+      if (NOT arch_ptx)
+        set(arch_ptx ${arch_bin})
+      endif()
+      list(APPEND cuda_arch_ptx ${arch_ptx})
+    endif()
+  endforeach()
+
+  # remove dots and convert to lists
+  string(REGEX REPLACE "\\." "" cuda_arch_bin "${cuda_arch_bin}")
+  string(REGEX REPLACE "\\." "" cuda_arch_ptx "${cuda_arch_ptx}")
+  string(REGEX MATCHALL "[0-9()]+" cuda_arch_bin "${cuda_arch_bin}")
+  string(REGEX MATCHALL "[0-9]+"   cuda_arch_ptx "${cuda_arch_ptx}")
+
+  if(cuda_arch_bin)
+    list(REMOVE_DUPLICATES cuda_arch_bin)
+  endif()
+  if(cuda_arch_ptx)
+    list(REMOVE_DUPLICATES cuda_arch_ptx)
+  endif()
+
+  set(nvcc_flags "")
+  set(nvcc_archs_readable "")
+
+  # Tell NVCC to add binaries for the specified GPUs
+  foreach(arch ${cuda_arch_bin})
+    if(arch MATCHES "([0-9]+)\\(([0-9]+)\\)")
+      # User explicitly specified ARCH for the concrete CODE
+      list(APPEND nvcc_flags -gencode arch=compute_${CMAKE_MATCH_2},code=sm_${CMAKE_MATCH_1})
+      list(APPEND nvcc_archs_readable sm_${CMAKE_MATCH_1})
+    else()
+      # User didn't explicitly specify ARCH for the concrete CODE, we assume ARCH=CODE
+      list(APPEND nvcc_flags -gencode arch=compute_${arch},code=sm_${arch})
+      list(APPEND nvcc_archs_readable sm_${arch})
+    endif()
+  endforeach()
+
+  # Tell NVCC to add PTX intermediate code for the specified architectures
+  foreach(arch ${cuda_arch_ptx})
+    list(APPEND nvcc_flags -gencode arch=compute_${arch},code=compute_${arch})
+    list(APPEND nvcc_archs_readable compute_${arch})
+  endforeach()
+
+  string(REPLACE ";" " " nvcc_archs_readable "${nvcc_archs_readable}")
+  set(${out_variable}          ${nvcc_flags}          PARENT_SCOPE)
+  set(${out_variable}_readable ${nvcc_archs_readable} PARENT_SCOPE)
+endfunction()
diff --git a/share/cmake-3.22/Modules/FindCUDAToolkit.cmake b/share/cmake-3.22/Modules/FindCUDAToolkit.cmake
new file mode 100644
index 0000000..d22a676
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindCUDAToolkit.cmake
@@ -0,0 +1,976 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindCUDAToolkit
+---------------
+
+.. versionadded:: 3.17
+
+This script locates the NVIDIA CUDA toolkit and the associated libraries, but
+does not require the ``CUDA`` language be enabled for a given project. This
+module does not search for the NVIDIA CUDA Samples.
+
+.. versionadded:: 3.19
+  QNX support.
+
+Search Behavior
+^^^^^^^^^^^^^^^
+
+The CUDA Toolkit search behavior uses the following order:
+
+1. If the ``CUDA`` language has been enabled we will use the directory
+   containing the compiler as the first search location for ``nvcc``.
+
+2. If the ``CUDAToolkit_ROOT`` cmake configuration variable (e.g.,
+   ``-DCUDAToolkit_ROOT=/some/path``) *or* environment variable is defined, it
+   will be searched.  If both an environment variable **and** a
+   configuration variable are specified, the *configuration* variable takes
+   precedence.
+
+   The directory specified here must be such that the executable ``nvcc`` or
+   the appropriate ``version.txt`` file can be found underneath the specified
+   directory.
+
+3. If the CUDA_PATH environment variable is defined, it will be searched
+   for ``nvcc``.
+
+4. The user's path is searched for ``nvcc`` using :command:`find_program`.  If
+   this is found, no subsequent search attempts are performed.  Users are
+   responsible for ensuring that the first ``nvcc`` to show up in the path is
+   the desired path in the event that multiple CUDA Toolkits are installed.
+
+5. On Unix systems, if the symbolic link ``/usr/local/cuda`` exists, this is
+   used.  No subsequent search attempts are performed.  No default symbolic link
+   location exists for the Windows platform.
+
+6. The platform specific default install locations are searched.  If exactly one
+   candidate is found, this is used.  The default CUDA Toolkit install locations
+   searched are:
+
+   +-------------+-------------------------------------------------------------+
+   | Platform    | Search Pattern                                              |
+   +=============+=============================================================+
+   | macOS       | ``/Developer/NVIDIA/CUDA-X.Y``                              |
+   +-------------+-------------------------------------------------------------+
+   | Other Unix  | ``/usr/local/cuda-X.Y``                                     |
+   +-------------+-------------------------------------------------------------+
+   | Windows     | ``C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y`` |
+   +-------------+-------------------------------------------------------------+
+
+   Where ``X.Y`` would be a specific version of the CUDA Toolkit, such as
+   ``/usr/local/cuda-9.0`` or
+   ``C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0``
+
+   .. note::
+
+       When multiple CUDA Toolkits are installed in the default location of a
+       system (e.g., both ``/usr/local/cuda-9.0`` and ``/usr/local/cuda-10.0``
+       exist but the ``/usr/local/cuda`` symbolic link does **not** exist), this
+       package is marked as **not** found.
+
+       There are too many factors involved in making an automatic decision in
+       the presence of multiple CUDA Toolkits being installed.  In this
+       situation, users are encouraged to either (1) set ``CUDAToolkit_ROOT`` or
+       (2) ensure that the correct ``nvcc`` executable shows up in ``$PATH`` for
+       :command:`find_program` to find.
+
+Arguments
+^^^^^^^^^
+
+``[<version>]``
+    The ``[<version>]`` argument requests a version with which the package found
+    should be compatible. See :ref:`find_package version format <FIND_PACKAGE_VERSION_FORMAT>`
+    for more details.
+
+Options
+^^^^^^^
+
+``REQUIRED``
+    If specified, configuration will error if a suitable CUDA Toolkit is not
+    found.
+
+``QUIET``
+    If specified, the search for a suitable CUDA Toolkit will not produce any
+    messages.
+
+``EXACT``
+    If specified, the CUDA Toolkit is considered found only if the exact
+    ``VERSION`` specified is recovered.
+
+Imported targets
+^^^^^^^^^^^^^^^^
+
+An :ref:`imported target <Imported targets>` named ``CUDA::toolkit`` is provided.
+
+This module defines :prop_tgt:`IMPORTED` targets for each
+of the following libraries that are part of the CUDAToolkit:
+
+- :ref:`CUDA Runtime Library<cuda_toolkit_rt_lib>`
+- :ref:`CUDA Driver Library<cuda_toolkit_driver_lib>`
+- :ref:`cuBLAS<cuda_toolkit_cuBLAS>`
+- :ref:`cuFFT<cuda_toolkit_cuFFT>`
+- :ref:`cuRAND<cuda_toolkit_cuRAND>`
+- :ref:`cuSOLVER<cuda_toolkit_cuSOLVER>`
+- :ref:`cuSPARSE<cuda_toolkit_cuSPARSE>`
+- :ref:`cuPTI<cuda_toolkit_cupti>`
+- :ref:`NPP<cuda_toolkit_NPP>`
+- :ref:`nvBLAS<cuda_toolkit_nvBLAS>`
+- :ref:`nvGRAPH<cuda_toolkit_nvGRAPH>`
+- :ref:`nvJPEG<cuda_toolkit_nvJPEG>`
+- :ref:`nvidia-ML<cuda_toolkit_nvML>`
+- :ref:`nvRTC<cuda_toolkit_nvRTC>`
+- :ref:`nvToolsExt<cuda_toolkit_nvToolsExt>`
+- :ref:`OpenCL<cuda_toolkit_opencl>`
+- :ref:`cuLIBOS<cuda_toolkit_cuLIBOS>`
+
+.. _`cuda_toolkit_rt_lib`:
+
+CUDA Runtime Library
+""""""""""""""""""""
+
+The CUDA Runtime library (cudart) are what most applications will typically
+need to link against to make any calls such as `cudaMalloc`, and `cudaFree`.
+
+Targets Created:
+
+- ``CUDA::cudart``
+- ``CUDA::cudart_static``
+
+.. _`cuda_toolkit_driver_lib`:
+
+CUDA Driver Library
+""""""""""""""""""""
+
+The CUDA Driver library (cuda) are used by applications that use calls
+such as `cuMemAlloc`, and `cuMemFree`. This is generally used by advanced
+
+
+Targets Created:
+
+- ``CUDA::cuda_driver``
+- ``CUDA::cuda_driver``
+
+.. _`cuda_toolkit_cuBLAS`:
+
+cuBLAS
+""""""
+
+The `cuBLAS <https://docs.nvidia.com/cuda/cublas/index.html>`_ library.
+
+Targets Created:
+
+- ``CUDA::cublas``
+- ``CUDA::cublas_static``
+- ``CUDA::cublasLt`` starting in CUDA 10.1
+- ``CUDA::cublasLt_static`` starting in CUDA 10.1
+
+.. _`cuda_toolkit_cuFFT`:
+
+cuFFT
+"""""
+
+The `cuFFT <https://docs.nvidia.com/cuda/cufft/index.html>`_ library.
+
+Targets Created:
+
+- ``CUDA::cufft``
+- ``CUDA::cufftw``
+- ``CUDA::cufft_static``
+- ``CUDA::cufftw_static``
+
+cuRAND
+""""""
+
+The `cuRAND <https://docs.nvidia.com/cuda/curand/index.html>`_ library.
+
+Targets Created:
+
+- ``CUDA::curand``
+- ``CUDA::curand_static``
+
+.. _`cuda_toolkit_cuSOLVER`:
+
+cuSOLVER
+""""""""
+
+The `cuSOLVER <https://docs.nvidia.com/cuda/cusolver/index.html>`_ library.
+
+Targets Created:
+
+- ``CUDA::cusolver``
+- ``CUDA::cusolver_static``
+
+.. _`cuda_toolkit_cuSPARSE`:
+
+cuSPARSE
+""""""""
+
+The `cuSPARSE <https://docs.nvidia.com/cuda/cusparse/index.html>`_ library.
+
+Targets Created:
+
+- ``CUDA::cusparse``
+- ``CUDA::cusparse_static``
+
+.. _`cuda_toolkit_cupti`:
+
+cupti
+"""""
+
+The `NVIDIA CUDA Profiling Tools Interface <https://developer.nvidia.com/CUPTI>`_.
+
+Targets Created:
+
+- ``CUDA::cupti``
+- ``CUDA::cupti_static``
+
+.. _`cuda_toolkit_NPP`:
+
+NPP
+"""
+
+The `NPP <https://docs.nvidia.com/cuda/npp/index.html>`_ libraries.
+
+Targets Created:
+
+- `nppc`:
+
+  - ``CUDA::nppc``
+  - ``CUDA::nppc_static``
+
+- `nppial`: Arithmetic and logical operation functions in `nppi_arithmetic_and_logical_operations.h`
+
+  - ``CUDA::nppial``
+  - ``CUDA::nppial_static``
+
+- `nppicc`: Color conversion and sampling functions in `nppi_color_conversion.h`
+
+  - ``CUDA::nppicc``
+  - ``CUDA::nppicc_static``
+
+- `nppicom`: JPEG compression and decompression functions in `nppi_compression_functions.h`
+  Removed starting in CUDA 11.0, use :ref:`nvJPEG<cuda_toolkit_nvJPEG>` instead.
+
+  - ``CUDA::nppicom``
+  - ``CUDA::nppicom_static``
+
+- `nppidei`: Data exchange and initialization functions in `nppi_data_exchange_and_initialization.h`
+
+  - ``CUDA::nppidei``
+  - ``CUDA::nppidei_static``
+
+- `nppif`: Filtering and computer vision functions in `nppi_filter_functions.h`
+
+  - ``CUDA::nppif``
+  - ``CUDA::nppif_static``
+
+- `nppig`: Geometry transformation functions found in `nppi_geometry_transforms.h`
+
+  - ``CUDA::nppig``
+  - ``CUDA::nppig_static``
+
+- `nppim`: Morphological operation functions found in `nppi_morphological_operations.h`
+
+  - ``CUDA::nppim``
+  - ``CUDA::nppim_static``
+
+- `nppist`: Statistics and linear transform in `nppi_statistics_functions.h` and `nppi_linear_transforms.h`
+
+  - ``CUDA::nppist``
+  - ``CUDA::nppist_static``
+
+- `nppisu`: Memory support functions in `nppi_support_functions.h`
+
+  - ``CUDA::nppisu``
+  - ``CUDA::nppisu_static``
+
+- `nppitc`: Threshold and compare operation functions in `nppi_threshold_and_compare_operations.h`
+
+  - ``CUDA::nppitc``
+  - ``CUDA::nppitc_static``
+
+- `npps`:
+
+  - ``CUDA::npps``
+  - ``CUDA::npps_static``
+
+.. _`cuda_toolkit_nvBLAS`:
+
+nvBLAS
+""""""
+
+The `nvBLAS <https://docs.nvidia.com/cuda/nvblas/index.html>`_ libraries.
+This is a shared library only.
+
+Targets Created:
+
+- ``CUDA::nvblas``
+
+.. _`cuda_toolkit_nvGRAPH`:
+
+nvGRAPH
+"""""""
+
+The `nvGRAPH <https://docs.nvidia.com/cuda/nvgraph/index.html>`_ library.
+Removed starting in CUDA 11.0
+
+Targets Created:
+
+- ``CUDA::nvgraph``
+- ``CUDA::nvgraph_static``
+
+
+.. _`cuda_toolkit_nvJPEG`:
+
+nvJPEG
+""""""
+
+The `nvJPEG <https://docs.nvidia.com/cuda/nvjpeg/index.html>`_ library.
+Introduced in CUDA 10.
+
+Targets Created:
+
+- ``CUDA::nvjpeg``
+- ``CUDA::nvjpeg_static``
+
+.. _`cuda_toolkit_nvRTC`:
+
+nvRTC
+"""""
+
+The `nvRTC <https://docs.nvidia.com/cuda/nvrtc/index.html>`_ (Runtime Compilation) library.
+This is a shared library only.
+
+Targets Created:
+
+- ``CUDA::nvrtc``
+
+.. _`cuda_toolkit_nvml`:
+
+nvidia-ML
+"""""""""
+
+The `NVIDIA Management Library <https://developer.nvidia.com/nvidia-management-library-nvml>`_.
+This is a shared library only.
+
+Targets Created:
+
+- ``CUDA::nvml``
+
+.. _`cuda_toolkit_nvToolsExt`:
+
+nvToolsExt
+""""""""""
+
+The `NVIDIA Tools Extension <https://docs.nvidia.com/gameworks/content/gameworkslibrary/nvtx/nvidia_tools_extension_library_nvtx.htm>`_.
+This is a shared library only.
+
+Targets Created:
+
+- ``CUDA::nvToolsExt``
+
+.. _`cuda_toolkit_opencl`:
+
+OpenCL
+""""""
+
+The `NVIDIA OpenCL Library <https://developer.nvidia.com/opencl>`_.
+This is a shared library only.
+
+Targets Created:
+
+- ``CUDA::OpenCL``
+
+.. _`cuda_toolkit_cuLIBOS`:
+
+cuLIBOS
+"""""""
+
+The cuLIBOS library is a backend thread abstraction layer library which is
+static only.  The ``CUDA::cublas_static``, ``CUDA::cusparse_static``,
+``CUDA::cufft_static``, ``CUDA::curand_static``, and (when implemented) NPP
+libraries all automatically have this dependency linked.
+
+Target Created:
+
+- ``CUDA::culibos``
+
+**Note**: direct usage of this target by consumers should not be necessary.
+
+.. _`cuda_toolkit_cuRAND`:
+
+
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+``CUDAToolkit_FOUND``
+    A boolean specifying whether or not the CUDA Toolkit was found.
+
+``CUDAToolkit_VERSION``
+    The exact version of the CUDA Toolkit found (as reported by
+    ``nvcc --version`` or ``version.txt``).
+
+``CUDAToolkit_VERSION_MAJOR``
+    The major version of the CUDA Toolkit.
+
+``CUDAToolkit_VERSION_MINOR``
+    The minor version of the CUDA Toolkit.
+
+``CUDAToolkit_VERSION_PATCH``
+    The patch version of the CUDA Toolkit.
+
+``CUDAToolkit_BIN_DIR``
+    The path to the CUDA Toolkit library directory that contains the CUDA
+    executable ``nvcc``.
+
+``CUDAToolkit_INCLUDE_DIRS``
+    The path to the CUDA Toolkit ``include`` folder containing the header files
+    required to compile a project linking against CUDA.
+
+``CUDAToolkit_LIBRARY_DIR``
+    The path to the CUDA Toolkit library directory that contains the CUDA
+    Runtime library ``cudart``.
+
+``CUDAToolkit_LIBRARY_ROOT``
+    .. versionadded:: 3.18
+
+    The path to the CUDA Toolkit directory containing the nvvm directory and
+    version.txt.
+
+``CUDAToolkit_TARGET_DIR``
+    The path to the CUDA Toolkit directory including the target architecture
+    when cross-compiling. When not cross-compiling this will be equivalent to
+    the parent directory of ``CUDAToolkit_BIN_DIR``.
+
+``CUDAToolkit_NVCC_EXECUTABLE``
+    The path to the NVIDIA CUDA compiler ``nvcc``.  Note that this path may
+    **not** be the same as
+    :variable:`CMAKE_CUDA_COMPILER <CMAKE_<LANG>_COMPILER>`.  ``nvcc`` must be
+    found to determine the CUDA Toolkit version as well as determining other
+    features of the Toolkit.  This variable is set for the convenience of
+    modules that depend on this one.
+
+
+#]=======================================================================]
+
+# NOTE: much of this was simply extracted from FindCUDA.cmake.
+
+#   James Bigler, NVIDIA Corp (nvidia.com - jbigler)
+#   Abe Stephens, SCI Institute -- http://www.sci.utah.edu/~abe/FindCuda.html
+#
+#   Copyright (c) 2008 - 2009 NVIDIA Corporation.  All rights reserved.
+#
+#   Copyright (c) 2007-2009
+#   Scientific Computing and Imaging Institute, University of Utah
+#
+#   This code is licensed under the MIT License.  See the FindCUDA.cmake script
+#   for the text of the license.
+
+# The MIT License
+#
+# License for the specific language governing rights and limitations under
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+#
+###############################################################################
+
+# The toolkit is located during compiler detection for CUDA and stored in CMakeCUDACompiler.cmake as
+# CMAKE_CUDA_COMPILER_TOOLKIT_ROOT and CMAKE_CUDA_COMPILER_LIBRARY_ROOT.
+# We compute the rest based on those here to avoid re-searching and to avoid finding a possibly
+# different installation.
+if(CMAKE_CUDA_COMPILER_TOOLKIT_ROOT)
+  set(CUDAToolkit_ROOT_DIR "${CMAKE_CUDA_COMPILER_TOOLKIT_ROOT}")
+  set(CUDAToolkit_LIBRARY_ROOT "${CMAKE_CUDA_COMPILER_LIBRARY_ROOT}")
+  set(CUDAToolkit_BIN_DIR "${CUDAToolkit_ROOT_DIR}/bin")
+  set(CUDAToolkit_NVCC_EXECUTABLE "${CUDAToolkit_BIN_DIR}/nvcc${CMAKE_EXECUTABLE_SUFFIX}")
+else()
+
+  function(_CUDAToolkit_find_root_dir )
+    cmake_parse_arguments(arg "" "" "SEARCH_PATHS;FIND_FLAGS" ${ARGN})
+
+
+    if(NOT CUDAToolkit_BIN_DIR)
+      if(NOT CUDAToolkit_SENTINEL_FILE)
+        find_program(CUDAToolkit_NVCC_EXECUTABLE
+          NAMES nvcc nvcc.exe
+          PATHS ${arg_SEARCH_PATHS}
+          ${arg_FIND_FLAGS}
+        )
+      endif()
+
+      if(NOT CUDAToolkit_NVCC_EXECUTABLE)
+        find_file(CUDAToolkit_SENTINEL_FILE
+          NAMES version.txt
+          PATHS ${arg_SEARCH_PATHS}
+          NO_DEFAULT_PATH
+        )
+      endif()
+
+      if(EXISTS "${CUDAToolkit_NVCC_EXECUTABLE}")
+        # If NVCC exists  then invoke it to find the toolkit location.
+        # This allows us to support wrapper scripts (e.g. ccache or colornvcc), CUDA Toolkit,
+        # NVIDIA HPC SDK, and distro's splayed layouts
+        execute_process(COMMAND ${CUDAToolkit_NVCC_EXECUTABLE} "-v" "__cmake_determine_cuda"
+          OUTPUT_VARIABLE _CUDA_NVCC_OUT ERROR_VARIABLE _CUDA_NVCC_OUT)
+        if(_CUDA_NVCC_OUT MATCHES "\\#\\$ TOP=([^\r\n]*)")
+          get_filename_component(CUDAToolkit_BIN_DIR "${CMAKE_MATCH_1}/bin" ABSOLUTE)
+        else()
+          get_filename_component(CUDAToolkit_BIN_DIR "${CUDAToolkit_NVCC_EXECUTABLE}" DIRECTORY)
+        endif()
+        unset(_CUDA_NVCC_OUT)
+
+        mark_as_advanced(CUDAToolkit_BIN_DIR)
+        set(CUDAToolkit_BIN_DIR "${CUDAToolkit_BIN_DIR}" CACHE PATH "" FORCE)
+      endif()
+
+      if(CUDAToolkit_SENTINEL_FILE)
+        get_filename_component(CUDAToolkit_BIN_DIR ${CUDAToolkit_SENTINEL_FILE} DIRECTORY ABSOLUTE)
+        set(CUDAToolkit_BIN_DIR "${CUDAToolkit_BIN_DIR}/bin")
+
+        set(CUDAToolkit_BIN_DIR "${CUDAToolkit_BIN_DIR}" CACHE PATH "" FORCE)
+        mark_as_advanced(CUDAToolkit_BIN_DIR)
+      endif()
+    endif()
+
+    if(CUDAToolkit_BIN_DIR)
+      get_filename_component(CUDAToolkit_ROOT_DIR ${CUDAToolkit_BIN_DIR} DIRECTORY ABSOLUTE)
+      set(CUDAToolkit_ROOT_DIR "${CUDAToolkit_ROOT_DIR}" PARENT_SCOPE)
+    endif()
+
+  endfunction()
+
+  function(_CUDAToolkit_find_version_file result_variable)
+    # We first check for a non-scattered installation to prefer it over a scattered installation.
+    if(CUDAToolkit_ROOT AND EXISTS "${CUDAToolkit_ROOT}/version.txt")
+      set(${result_variable} "${CUDAToolkit_ROOT}/version.txt" PARENT_SCOPE)
+    elseif(CUDAToolkit_ROOT_DIR AND EXISTS "${CUDAToolkit_ROOT_DIR}/version.txt")
+      set(${result_variable} "${CUDAToolkit_ROOT_DIR}/version.txt" PARENT_SCOPE)
+    elseif(CMAKE_SYSROOT_LINK AND EXISTS "${CMAKE_SYSROOT_LINK}/usr/lib/cuda/version.txt")
+      set(${result_variable} "${CMAKE_SYSROOT_LINK}/usr/lib/cuda/version.txt" PARENT_SCOPE)
+    elseif(EXISTS "${CMAKE_SYSROOT}/usr/lib/cuda/version.txt")
+      set(${result_variable} "${CMAKE_SYSROOT}/usr/lib/cuda/version.txt" PARENT_SCOPE)
+    endif()
+  endfunction()
+
+  # For NVCC we can easily deduce the SDK binary directory from the compiler path.
+  if(CMAKE_CUDA_COMPILER_LOADED AND NOT CUDAToolkit_BIN_DIR AND CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
+    get_filename_component(CUDAToolkit_BIN_DIR "${CMAKE_CUDA_COMPILER}" DIRECTORY)
+    set(CUDAToolkit_BIN_DIR "${CUDAToolkit_BIN_DIR}" CACHE PATH "")
+    # Try language provided path first.
+    _CUDAToolkit_find_root_dir(SEARCH_PATHS "${CUDAToolkit_BIN_DIR}" FIND_FLAGS NO_DEFAULT_PATH)
+    mark_as_advanced(CUDAToolkit_BIN_DIR)
+  endif()
+
+  # Try user provided path
+  if(NOT CUDAToolkit_ROOT_DIR AND CUDAToolkit_ROOT)
+    _CUDAToolkit_find_root_dir(SEARCH_PATHS "${CUDAToolkit_ROOT}" FIND_FLAGS PATH_SUFFIXES bin NO_DEFAULT_PATH)
+  endif()
+  if(NOT CUDAToolkit_ROOT_DIR)
+    _CUDAToolkit_find_root_dir(FIND_FLAGS PATHS ENV CUDA_PATH PATH_SUFFIXES bin)
+  endif()
+
+  # If the user specified CUDAToolkit_ROOT but the toolkit could not be found, this is an error.
+  if(NOT CUDAToolkit_ROOT_DIR AND (DEFINED CUDAToolkit_ROOT OR DEFINED ENV{CUDAToolkit_ROOT}))
+    # Declare error messages now, print later depending on find_package args.
+    set(fail_base "Could not find nvcc executable in path specified by")
+    set(cuda_root_fail "${fail_base} CUDAToolkit_ROOT=${CUDAToolkit_ROOT}")
+    set(env_cuda_root_fail "${fail_base} environment variable CUDAToolkit_ROOT=$ENV{CUDAToolkit_ROOT}")
+
+    if(CUDAToolkit_FIND_REQUIRED)
+      if(DEFINED CUDAToolkit_ROOT)
+        message(FATAL_ERROR ${cuda_root_fail})
+      elseif(DEFINED ENV{CUDAToolkit_ROOT})
+        message(FATAL_ERROR ${env_cuda_root_fail})
+      endif()
+    else()
+      if(NOT CUDAToolkit_FIND_QUIETLY)
+        if(DEFINED CUDAToolkit_ROOT)
+          message(STATUS ${cuda_root_fail})
+        elseif(DEFINED ENV{CUDAToolkit_ROOT})
+          message(STATUS ${env_cuda_root_fail})
+        endif()
+      endif()
+      set(CUDAToolkit_FOUND FALSE)
+      unset(fail_base)
+      unset(cuda_root_fail)
+      unset(env_cuda_root_fail)
+      return()
+    endif()
+  endif()
+
+  # CUDAToolkit_ROOT cmake / env variable not specified, try platform defaults.
+  #
+  # - Linux: /usr/local/cuda-X.Y
+  # - macOS: /Developer/NVIDIA/CUDA-X.Y
+  # - Windows: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y
+  #
+  # We will also search the default symlink location /usr/local/cuda first since
+  # if CUDAToolkit_ROOT is not specified, it is assumed that the symlinked
+  # directory is the desired location.
+  if(NOT CUDAToolkit_ROOT_DIR)
+    if(UNIX)
+      if(NOT APPLE)
+        set(platform_base "/usr/local/cuda-")
+      else()
+        set(platform_base "/Developer/NVIDIA/CUDA-")
+      endif()
+    else()
+      set(platform_base "C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v")
+    endif()
+
+    # Build out a descending list of possible cuda installations, e.g.
+    file(GLOB possible_paths "${platform_base}*")
+    # Iterate the glob results and create a descending list.
+    set(versions)
+    foreach(p ${possible_paths})
+      # Extract version number from end of string
+      string(REGEX MATCH "[0-9][0-9]?\\.[0-9]$" p_version ${p})
+      if(IS_DIRECTORY ${p} AND p_version)
+        list(APPEND versions ${p_version})
+      endif()
+    endforeach()
+
+    # Sort numerically in descending order, so we try the newest versions first.
+    list(SORT versions COMPARE NATURAL ORDER DESCENDING)
+
+    # With a descending list of versions, populate possible paths to search.
+    set(search_paths)
+    foreach(v ${versions})
+      list(APPEND search_paths "${platform_base}${v}")
+    endforeach()
+
+    # Force the global default /usr/local/cuda to the front on Unix.
+    if(UNIX)
+      list(INSERT search_paths 0 "/usr/local/cuda")
+    endif()
+
+    # Now search for the toolkit again using the platform default search paths.
+    _CUDAToolkit_find_root_dir(SEARCH_PATHS "${search_paths}" FIND_FLAGS PATH_SUFFIXES bin)
+
+    # We are done with these variables now, cleanup for caller.
+    unset(platform_base)
+    unset(possible_paths)
+    unset(versions)
+    unset(search_paths)
+
+    if(NOT CUDAToolkit_ROOT_DIR)
+      if(CUDAToolkit_FIND_REQUIRED)
+        message(FATAL_ERROR "Could not find nvcc, please set CUDAToolkit_ROOT.")
+      elseif(NOT CUDAToolkit_FIND_QUIETLY)
+        message(STATUS "Could not find nvcc, please set CUDAToolkit_ROOT.")
+      endif()
+
+      set(CUDAToolkit_FOUND FALSE)
+      return()
+    endif()
+  endif()
+
+  _CUDAToolkit_find_version_file( _CUDAToolkit_version_file )
+  if(_CUDAToolkit_version_file)
+    # CUDAToolkit_LIBRARY_ROOT contains the device library and version file.
+    get_filename_component(CUDAToolkit_LIBRARY_ROOT "${_CUDAToolkit_version_file}" DIRECTORY ABSOLUTE)
+  endif()
+  unset(_CUDAToolkit_version_file)
+endif()
+
+# Find target directory when crosscompiling.
+if(CMAKE_CROSSCOMPILING)
+  if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7-a")
+    # Support for NVPACK
+    set(CUDAToolkit_TARGET_NAME "armv7-linux-androideabi")
+  elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
+    set(CUDAToolkit_TARGET_NAME "armv7-linux-gnueabihf")
+  elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
+    if(ANDROID_ARCH_NAME STREQUAL "arm64")
+      set(CUDAToolkit_TARGET_NAME "aarch64-linux-androideabi")
+    elseif (CMAKE_SYSTEM_NAME STREQUAL "QNX")
+      set(CUDAToolkit_TARGET_NAME "aarch64-qnx")
+    else()
+      set(CUDAToolkit_TARGET_NAME "aarch64-linux")
+    endif(ANDROID_ARCH_NAME STREQUAL "arm64")
+  elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
+    set(CUDAToolkit_TARGET_NAME "x86_64-linux")
+  endif()
+
+  if(EXISTS "${CUDAToolkit_ROOT_DIR}/targets/${CUDAToolkit_TARGET_NAME}")
+    set(CUDAToolkit_TARGET_DIR "${CUDAToolkit_ROOT_DIR}/targets/${CUDAToolkit_TARGET_NAME}")
+    # add known CUDA target root path to the set of directories we search for programs, libraries and headers
+    list(PREPEND CMAKE_FIND_ROOT_PATH "${CUDAToolkit_TARGET_DIR}")
+
+    # Mark that we need to pop the root search path changes after we have
+    # found all cuda libraries so that searches for our cross-compilation
+    # libraries work when another cuda sdk is in CMAKE_PREFIX_PATH or
+    # PATh
+    set(_CUDAToolkit_Pop_ROOT_PATH True)
+  endif()
+endif()
+
+# If not already set we can simply use the toolkit root or it's a scattered installation.
+if(NOT CUDAToolkit_TARGET_DIR)
+  # Not cross compiling
+  set(CUDAToolkit_TARGET_DIR "${CUDAToolkit_ROOT_DIR}")
+  # Now that we have the real ROOT_DIR, find components inside it.
+  list(APPEND CMAKE_PREFIX_PATH ${CUDAToolkit_ROOT_DIR})
+
+  # Mark that we need to pop the prefix path changes after we have
+  # found the cudart library.
+  set(_CUDAToolkit_Pop_Prefix True)
+endif()
+
+# CUDAToolkit_TARGET_DIR always points to the directory containing the include directory.
+# On a scattered installation /usr, on a non-scattered something like /usr/local/cuda or /usr/local/cuda-10.2/targets/aarch64-linux.
+if(EXISTS "${CUDAToolkit_TARGET_DIR}/include/cuda_runtime.h")
+  set(CUDAToolkit_INCLUDE_DIR "${CUDAToolkit_TARGET_DIR}/include")
+elseif(NOT CUDAToolkit_FIND_QUIETLY)
+  message(STATUS "Unable to find cuda_runtime.h in \"${CUDAToolkit_TARGET_DIR}/include\" for CUDAToolkit_INCLUDE_DIR.")
+endif()
+
+# The NVHPC layout moves math library headers and libraries to a sibling directory.
+# Create a separate variable so this directory can be selectively added to math targets.
+if(NOT EXISTS "${CUDAToolkit_INCLUDE_DIR}/cublas_v2.h")
+  set(CUDAToolkit_MATH_INCLUDE_DIR "${CUDAToolkit_TARGET_DIR}/../../math_libs/include")
+  cmake_path(NORMAL_PATH CUDAToolkit_MATH_INCLUDE_DIR)
+  if(NOT EXISTS "${CUDAToolkit_MATH_INCLUDE_DIR}/cublas_v2.h")
+    if(NOT CUDAToolkit_FIND_QUIETLY)
+      message(STATUS "Unable to find cublas_v2.h in either \"${CUDAToolkit_INCLUDE_DIR}\" or \"${CUDAToolkit_MATH_INCLUDE_DIR}\"")
+    endif()
+    unset(CUDAToolkit_MATH_INCLUDE_DIR)
+  endif()
+endif()
+
+if(CUDAToolkit_NVCC_EXECUTABLE AND
+   CMAKE_CUDA_COMPILER_VERSION AND
+   CUDAToolkit_NVCC_EXECUTABLE STREQUAL CMAKE_CUDA_COMPILER)
+  # Need to set these based off the already computed CMAKE_CUDA_COMPILER_VERSION value
+  # This if statement will always match, but is used to provide variables for MATCH 1,2,3...
+  if(CMAKE_CUDA_COMPILER_VERSION MATCHES [=[([0-9]+)\.([0-9]+)\.([0-9]+)]=])
+    set(CUDAToolkit_VERSION_MAJOR "${CMAKE_MATCH_1}")
+    set(CUDAToolkit_VERSION_MINOR "${CMAKE_MATCH_2}")
+    set(CUDAToolkit_VERSION_PATCH "${CMAKE_MATCH_3}")
+    set(CUDAToolkit_VERSION "${CMAKE_CUDA_COMPILER_VERSION}")
+  endif()
+elseif(CUDAToolkit_NVCC_EXECUTABLE)
+  # Compute the version by invoking nvcc
+  execute_process(COMMAND ${CUDAToolkit_NVCC_EXECUTABLE} "--version" OUTPUT_VARIABLE NVCC_OUT)
+  if(NVCC_OUT MATCHES [=[ V([0-9]+)\.([0-9]+)\.([0-9]+)]=])
+    set(CUDAToolkit_VERSION_MAJOR "${CMAKE_MATCH_1}")
+    set(CUDAToolkit_VERSION_MINOR "${CMAKE_MATCH_2}")
+    set(CUDAToolkit_VERSION_PATCH "${CMAKE_MATCH_3}")
+    set(CUDAToolkit_VERSION  "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}")
+  endif()
+  unset(NVCC_OUT)
+else()
+  _CUDAToolkit_find_version_file(version_file)
+  if(version_file)
+    file(READ "${version_file}" VERSION_INFO)
+    if(VERSION_INFO MATCHES [=[CUDA Version ([0-9]+)\.([0-9]+)\.([0-9]+)]=])
+      set(CUDAToolkit_VERSION_MAJOR "${CMAKE_MATCH_1}")
+      set(CUDAToolkit_VERSION_MINOR "${CMAKE_MATCH_2}")
+      set(CUDAToolkit_VERSION_PATCH "${CMAKE_MATCH_3}")
+      set(CUDAToolkit_VERSION  "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}")
+    endif()
+  endif()
+endif()
+
+# Find the CUDA Runtime Library libcudart
+find_library(CUDA_CUDART
+  NAMES cudart
+  PATH_SUFFIXES lib64 lib/x64
+)
+find_library(CUDA_CUDART
+  NAMES cudart
+  PATH_SUFFIXES lib64/stubs lib/x64/stubs
+)
+
+if(NOT CUDA_CUDART AND NOT CUDAToolkit_FIND_QUIETLY)
+  message(STATUS "Unable to find cudart library.")
+endif()
+
+if(_CUDAToolkit_Pop_Prefix)
+  list(REMOVE_AT CMAKE_PREFIX_PATH -1)
+  unset(_CUDAToolkit_Pop_Prefix)
+endif()
+
+#-----------------------------------------------------------------------------
+# Perform version comparison and validate all required variables are set.
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(CUDAToolkit
+  REQUIRED_VARS
+    CUDAToolkit_INCLUDE_DIR
+    CUDA_CUDART
+    CUDAToolkit_BIN_DIR
+  VERSION_VAR
+    CUDAToolkit_VERSION
+)
+
+unset(CUDAToolkit_ROOT_DIR)
+mark_as_advanced(CUDA_CUDART
+                 CUDAToolkit_INCLUDE_DIR
+                 CUDAToolkit_NVCC_EXECUTABLE
+                 CUDAToolkit_SENTINEL_FILE
+                 )
+
+#-----------------------------------------------------------------------------
+# Construct result variables
+if(CUDAToolkit_FOUND)
+  set(CUDAToolkit_INCLUDE_DIRS ${CUDAToolkit_INCLUDE_DIR})
+  get_filename_component(CUDAToolkit_LIBRARY_DIR ${CUDA_CUDART} DIRECTORY ABSOLUTE)
+endif()
+
+#-----------------------------------------------------------------------------
+# Construct import targets
+if(CUDAToolkit_FOUND)
+
+  function(_CUDAToolkit_find_and_add_import_lib lib_name)
+    cmake_parse_arguments(arg "" "" "ALT;DEPS;EXTRA_PATH_SUFFIXES" ${ARGN})
+
+    set(search_names ${lib_name} ${arg_ALT})
+
+    find_library(CUDA_${lib_name}_LIBRARY
+      NAMES ${search_names}
+      HINTS ${CUDAToolkit_LIBRARY_DIR}
+            ENV CUDA_PATH
+      PATH_SUFFIXES nvidia/current lib64 lib/x64 lib
+                    ${arg_EXTRA_PATH_SUFFIXES}
+    )
+    # Don't try any stub directories until we have exhausted all other
+    # search locations.
+    find_library(CUDA_${lib_name}_LIBRARY
+      NAMES ${search_names}
+      HINTS ${CUDAToolkit_LIBRARY_DIR}
+            ENV CUDA_PATH
+      PATH_SUFFIXES lib64/stubs lib/x64/stubs lib/stubs stubs
+                    # Support NVHPC splayed math library layout
+                    ../../math_libs/${CUDAToolkit_VERSION_MAJOR}.${CUDAToolkit_VERSION_MINOR}/lib64
+                    ../../math_libs/lib64
+    )
+
+    mark_as_advanced(CUDA_${lib_name}_LIBRARY)
+
+    if (NOT TARGET CUDA::${lib_name} AND CUDA_${lib_name}_LIBRARY)
+      add_library(CUDA::${lib_name} UNKNOWN IMPORTED)
+      target_include_directories(CUDA::${lib_name} SYSTEM INTERFACE "${CUDAToolkit_INCLUDE_DIRS}")
+      if(DEFINED CUDAToolkit_MATH_INCLUDE_DIR)
+        string(FIND ${CUDA_${lib_name}_LIBRARY} "math_libs" math_libs)
+        if(NOT ${math_libs} EQUAL -1)
+          target_include_directories(CUDA::${lib_name} SYSTEM INTERFACE "${CUDAToolkit_MATH_INCLUDE_DIR}")
+        endif()
+      endif()
+      set_property(TARGET CUDA::${lib_name} PROPERTY IMPORTED_LOCATION "${CUDA_${lib_name}_LIBRARY}")
+      foreach(dep ${arg_DEPS})
+        if(TARGET CUDA::${dep})
+          target_link_libraries(CUDA::${lib_name} INTERFACE CUDA::${dep})
+        endif()
+      endforeach()
+    endif()
+  endfunction()
+
+  if(NOT TARGET CUDA::toolkit)
+    add_library(CUDA::toolkit IMPORTED INTERFACE)
+    target_include_directories(CUDA::toolkit SYSTEM INTERFACE "${CUDAToolkit_INCLUDE_DIRS}")
+    target_link_directories(CUDA::toolkit INTERFACE "${CUDAToolkit_LIBRARY_DIR}")
+  endif()
+
+  _CUDAToolkit_find_and_add_import_lib(cuda_driver ALT cuda)
+
+  _CUDAToolkit_find_and_add_import_lib(cudart)
+  _CUDAToolkit_find_and_add_import_lib(cudart_static)
+
+  # setup dependencies that are required for cudart_static when building
+  # on linux. These are generally only required when using the CUDA toolkit
+  # when CUDA language is disabled
+  if(NOT TARGET CUDA::cudart_static_deps
+     AND TARGET CUDA::cudart_static)
+
+    add_library(CUDA::cudart_static_deps IMPORTED INTERFACE)
+    target_link_libraries(CUDA::cudart_static INTERFACE CUDA::cudart_static_deps)
+
+    if(UNIX AND (CMAKE_C_COMPILER OR CMAKE_CXX_COMPILER))
+      find_package(Threads REQUIRED)
+      target_link_libraries(CUDA::cudart_static_deps INTERFACE Threads::Threads ${CMAKE_DL_LIBS})
+    endif()
+
+    if(UNIX AND NOT APPLE AND NOT (CMAKE_SYSTEM_NAME STREQUAL "QNX"))
+      # On Linux, you must link against librt when using the static cuda runtime.
+      find_library(CUDAToolkit_rt_LIBRARY rt)
+      mark_as_advanced(CUDAToolkit_rt_LIBRARY)
+      if(NOT CUDAToolkit_rt_LIBRARY)
+        message(WARNING "Could not find librt library, needed by CUDA::cudart_static")
+      else()
+        target_link_libraries(CUDA::cudart_static_deps INTERFACE ${CUDAToolkit_rt_LIBRARY})
+      endif()
+    endif()
+  endif()
+
+  _CUDAToolkit_find_and_add_import_lib(culibos) # it's a static library
+  foreach (cuda_lib cublasLt cublas cufft curand cusparse nppc nvjpeg)
+    _CUDAToolkit_find_and_add_import_lib(${cuda_lib})
+    _CUDAToolkit_find_and_add_import_lib(${cuda_lib}_static DEPS culibos)
+  endforeach()
+
+  # cuFFTW depends on cuFFT
+  _CUDAToolkit_find_and_add_import_lib(cufftw DEPS cufft)
+  _CUDAToolkit_find_and_add_import_lib(cufftw DEPS cufft_static)
+
+  # cuSOLVER depends on cuBLAS, and cuSPARSE
+  _CUDAToolkit_find_and_add_import_lib(cusolver DEPS cublas cusparse)
+  _CUDAToolkit_find_and_add_import_lib(cusolver_static DEPS cublas_static cusparse_static culibos)
+
+  # nvGRAPH depends on cuRAND, and cuSOLVER.
+  _CUDAToolkit_find_and_add_import_lib(nvgraph DEPS curand cusolver)
+  _CUDAToolkit_find_and_add_import_lib(nvgraph_static DEPS curand_static cusolver_static)
+
+  # Process the majority of the NPP libraries.
+  foreach (cuda_lib nppial nppicc nppidei nppif nppig nppim nppist nppitc npps nppicom nppisu)
+    _CUDAToolkit_find_and_add_import_lib(${cuda_lib} DEPS nppc)
+    _CUDAToolkit_find_and_add_import_lib(${cuda_lib}_static DEPS nppc_static)
+  endforeach()
+
+  _CUDAToolkit_find_and_add_import_lib(cupti
+                                       EXTRA_PATH_SUFFIXES ../extras/CUPTI/lib64/
+                                                           ../extras/CUPTI/lib/)
+  _CUDAToolkit_find_and_add_import_lib(cupti_static
+                                       EXTRA_PATH_SUFFIXES ../extras/CUPTI/lib64/
+                                                           ../extras/CUPTI/lib/)
+
+  _CUDAToolkit_find_and_add_import_lib(nvrtc DEPS cuda_driver)
+
+  _CUDAToolkit_find_and_add_import_lib(nvml ALT nvidia-ml nvml)
+
+  if(WIN32)
+    # nvtools can be installed outside the CUDA toolkit directory
+    # so prefer the NVTOOLSEXT_PATH windows only environment variable
+    # In addition on windows the most common name is nvToolsExt64_1
+    find_library(CUDA_nvToolsExt_LIBRARY
+      NAMES nvToolsExt64_1 nvToolsExt64 nvToolsExt
+      PATHS ENV NVTOOLSEXT_PATH
+            ENV CUDA_PATH
+      PATH_SUFFIXES lib/x64 lib
+    )
+  endif()
+  _CUDAToolkit_find_and_add_import_lib(nvToolsExt ALT nvToolsExt64)
+
+  _CUDAToolkit_find_and_add_import_lib(OpenCL)
+endif()
+
+if(_CUDAToolkit_Pop_ROOT_PATH)
+  list(REMOVE_AT CMAKE_FIND_ROOT_PATH 0)
+  unset(_CUDAToolkit_Pop_ROOT_PATH)
+endif()
diff --git a/share/cmake-3.22/Modules/FindCURL.cmake b/share/cmake-3.22/Modules/FindCURL.cmake
new file mode 100644
index 0000000..e37d225
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindCURL.cmake
@@ -0,0 +1,215 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindCURL
+--------
+
+Find the native CURL headers and libraries.
+
+.. versionadded:: 3.14
+  This module accept optional COMPONENTS to check supported features and
+  protocols:
+
+::
+
+  PROTOCOLS: ICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS LDAP LDAPS POP3
+             POP3S RTMP RTSP SCP SFTP SMB SMBS SMTP SMTPS TELNET TFTP
+  FEATURES:  SSL IPv6 UnixSockets libz AsynchDNS IDN GSS-API PSL SPNEGO
+             Kerberos NTLM NTLM_WB TLS-SRP HTTP2 HTTPS-proxy
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.12
+
+This module defines :prop_tgt:`IMPORTED` target ``CURL::libcurl``, if
+curl has been found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module defines the following variables:
+
+``CURL_FOUND``
+  "True" if ``curl`` found.
+
+``CURL_INCLUDE_DIRS``
+  where to find ``curl``/``curl.h``, etc.
+
+``CURL_LIBRARIES``
+  List of libraries when using ``curl``.
+
+``CURL_VERSION_STRING``
+  The version of ``curl`` found.
+
+.. versionadded:: 3.13
+  Debug and Release variants are found separately.
+
+CURL CMake
+^^^^^^^^^^
+
+.. versionadded:: 3.17
+
+If CURL was built using the CMake buildsystem then it provides its own
+``CURLConfig.cmake`` file for use with the :command:`find_package` command's
+config mode. This module looks for this file and, if found,
+returns its results with no further action.
+
+Set ``CURL_NO_CURL_CMAKE`` to ``ON`` to disable this search.
+
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+if(NOT CURL_NO_CURL_CMAKE)
+  # do a find package call to specifically look for the CMake version
+  # of curl
+  find_package(CURL QUIET NO_MODULE)
+  mark_as_advanced(CURL_DIR)
+
+  # if we found the CURL cmake package then we are done, and
+  # can print what we found and return.
+  if(CURL_FOUND)
+    find_package_handle_standard_args(CURL HANDLE_COMPONENTS CONFIG_MODE)
+    return()
+  endif()
+endif()
+
+find_package(PkgConfig QUIET)
+if(PKG_CONFIG_FOUND)
+  pkg_check_modules(PC_CURL QUIET libcurl)
+  if(PC_CURL_FOUND)
+    set(CURL_VERSION_STRING ${PC_CURL_VERSION})
+    pkg_get_variable(CURL_SUPPORTED_PROTOCOLS libcurl supported_protocols)
+    pkg_get_variable(CURL_SUPPORTED_FEATURES libcurl supported_features)
+  endif()
+endif()
+
+# Look for the header file.
+find_path(CURL_INCLUDE_DIR
+          NAMES curl/curl.h
+          HINTS ${PC_CURL_INCLUDE_DIRS})
+mark_as_advanced(CURL_INCLUDE_DIR)
+
+if(NOT CURL_LIBRARY)
+  # Look for the library (sorted from most current/relevant entry to least).
+  find_library(CURL_LIBRARY_RELEASE NAMES
+      curl
+    # Windows MSVC prebuilts:
+      curllib
+      libcurl_imp
+      curllib_static
+    # Windows older "Win32 - MSVC" prebuilts (libcurl.lib, e.g. libcurl-7.15.5-win32-msvc.zip):
+      libcurl
+      NAMES_PER_DIR
+      HINTS ${PC_CURL_LIBRARY_DIRS}
+  )
+  mark_as_advanced(CURL_LIBRARY_RELEASE)
+
+  find_library(CURL_LIBRARY_DEBUG NAMES
+    # Windows MSVC CMake builds in debug configuration on vcpkg:
+      libcurl-d_imp
+      libcurl-d
+      NAMES_PER_DIR
+      HINTS ${PC_CURL_LIBRARY_DIRS}
+  )
+  mark_as_advanced(CURL_LIBRARY_DEBUG)
+
+  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+  select_library_configurations(CURL)
+endif()
+
+if(CURL_INCLUDE_DIR AND NOT CURL_VERSION_STRING)
+  foreach(_curl_version_header curlver.h curl.h)
+    if(EXISTS "${CURL_INCLUDE_DIR}/curl/${_curl_version_header}")
+      file(STRINGS "${CURL_INCLUDE_DIR}/curl/${_curl_version_header}" curl_version_str REGEX "^#define[\t ]+LIBCURL_VERSION[\t ]+\".*\"")
+
+      string(REGEX REPLACE "^#define[\t ]+LIBCURL_VERSION[\t ]+\"([^\"]*)\".*" "\\1" CURL_VERSION_STRING "${curl_version_str}")
+      unset(curl_version_str)
+      break()
+    endif()
+  endforeach()
+endif()
+
+if(CURL_FIND_COMPONENTS)
+  set(CURL_KNOWN_PROTOCOLS ICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS LDAP LDAPS POP3 POP3S RTMP RTSP SCP SFTP SMB SMBS SMTP SMTPS TELNET TFTP)
+  set(CURL_KNOWN_FEATURES  SSL IPv6 UnixSockets libz AsynchDNS IDN GSS-API PSL SPNEGO Kerberos NTLM NTLM_WB TLS-SRP HTTP2 HTTPS-proxy)
+  foreach(component IN LISTS CURL_KNOWN_PROTOCOLS CURL_KNOWN_FEATURES)
+    set(CURL_${component}_FOUND FALSE)
+  endforeach()
+  if(NOT PC_CURL_FOUND)
+    find_program(CURL_CONFIG_EXECUTABLE NAMES curl-config)
+    if(CURL_CONFIG_EXECUTABLE)
+      execute_process(COMMAND ${CURL_CONFIG_EXECUTABLE} --version
+                      OUTPUT_VARIABLE CURL_CONFIG_VERSION_STRING
+                      ERROR_QUIET
+                      OUTPUT_STRIP_TRAILING_WHITESPACE)
+      execute_process(COMMAND ${CURL_CONFIG_EXECUTABLE} --feature
+                      OUTPUT_VARIABLE CURL_CONFIG_FEATURES_STRING
+                      ERROR_QUIET
+                      OUTPUT_STRIP_TRAILING_WHITESPACE)
+      string(REPLACE "\n" ";" CURL_SUPPORTED_FEATURES "${CURL_CONFIG_FEATURES_STRING}")
+      execute_process(COMMAND ${CURL_CONFIG_EXECUTABLE} --protocols
+                      OUTPUT_VARIABLE CURL_CONFIG_PROTOCOLS_STRING
+                      ERROR_QUIET
+                      OUTPUT_STRIP_TRAILING_WHITESPACE)
+      string(REPLACE "\n" ";" CURL_SUPPORTED_PROTOCOLS "${CURL_CONFIG_PROTOCOLS_STRING}")
+    endif()
+
+  endif()
+  foreach(component IN LISTS CURL_FIND_COMPONENTS)
+    list(FIND CURL_KNOWN_PROTOCOLS ${component} _found)
+    if(NOT _found EQUAL -1)
+      list(FIND CURL_SUPPORTED_PROTOCOLS ${component} _found)
+      if(NOT _found EQUAL -1)
+        set(CURL_${component}_FOUND TRUE)
+      elseif(CURL_FIND_REQUIRED)
+        message(FATAL_ERROR "CURL: Required protocol ${component} is not found")
+      endif()
+    else()
+      list(FIND CURL_SUPPORTED_FEATURES ${component} _found)
+      if(NOT _found EQUAL -1)
+        set(CURL_${component}_FOUND TRUE)
+      elseif(CURL_FIND_REQUIRED)
+        message(FATAL_ERROR "CURL: Required feature ${component} is not found")
+      endif()
+    endif()
+  endforeach()
+endif()
+
+find_package_handle_standard_args(CURL
+                                  REQUIRED_VARS CURL_LIBRARY CURL_INCLUDE_DIR
+                                  VERSION_VAR CURL_VERSION_STRING
+                                  HANDLE_COMPONENTS)
+
+if(CURL_FOUND)
+  set(CURL_LIBRARIES ${CURL_LIBRARY})
+  set(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIR})
+
+  if(NOT TARGET CURL::libcurl)
+    add_library(CURL::libcurl UNKNOWN IMPORTED)
+    set_target_properties(CURL::libcurl PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${CURL_INCLUDE_DIRS}")
+
+    if(EXISTS "${CURL_LIBRARY}")
+      set_target_properties(CURL::libcurl PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+        IMPORTED_LOCATION "${CURL_LIBRARY}")
+    endif()
+    if(CURL_LIBRARY_RELEASE)
+      set_property(TARGET CURL::libcurl APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS RELEASE)
+      set_target_properties(CURL::libcurl PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+        IMPORTED_LOCATION_RELEASE "${CURL_LIBRARY_RELEASE}")
+    endif()
+    if(CURL_LIBRARY_DEBUG)
+      set_property(TARGET CURL::libcurl APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS DEBUG)
+      set_target_properties(CURL::libcurl PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+        IMPORTED_LOCATION_DEBUG "${CURL_LIBRARY_DEBUG}")
+    endif()
+  endif()
+endif()
diff --git a/share/cmake-3.18/Modules/FindCVS.cmake b/share/cmake-3.22/Modules/FindCVS.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindCVS.cmake
rename to share/cmake-3.22/Modules/FindCVS.cmake
diff --git a/share/cmake-3.18/Modules/FindCoin3D.cmake b/share/cmake-3.22/Modules/FindCoin3D.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindCoin3D.cmake
rename to share/cmake-3.22/Modules/FindCoin3D.cmake
diff --git a/share/cmake-3.22/Modules/FindCups.cmake b/share/cmake-3.22/Modules/FindCups.cmake
new file mode 100644
index 0000000..cf0d341
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindCups.cmake
@@ -0,0 +1,100 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindCups
+--------
+
+Find the Common UNIX Printing System (CUPS).
+
+Set ``CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE`` to ``TRUE`` if you need a version which
+features this function (i.e. at least ``1.1.19``)
+
+Imported targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.15
+
+This module defines :prop_tgt:`IMPORTED` target ``Cups::Cups``, if Cups has
+been found.
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``CUPS_FOUND``
+  true if CUPS headers and libraries were found
+``CUPS_INCLUDE_DIRS``
+  the directory containing the Cups headers
+``CUPS_LIBRARIES``
+  the libraries to link against to use CUPS.
+``CUPS_VERSION_STRING``
+  the version of CUPS found (since CMake 2.8.8)
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set:
+
+``CUPS_INCLUDE_DIR``
+  the directory containing the Cups headers
+#]=======================================================================]
+
+find_path(CUPS_INCLUDE_DIR cups/cups.h )
+
+find_library(CUPS_LIBRARIES NAMES cups )
+
+if (CUPS_INCLUDE_DIR AND CUPS_LIBRARIES AND CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE)
+    include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake)
+    include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
+    cmake_push_check_state()
+    set(CMAKE_REQUIRED_QUIET ${Cups_FIND_QUIETLY})
+
+    # ippDeleteAttribute is new in cups-1.1.19 (and used by kdeprint)
+    CHECK_LIBRARY_EXISTS(cups ippDeleteAttribute "" CUPS_HAS_IPP_DELETE_ATTRIBUTE)
+    cmake_pop_check_state()
+endif ()
+
+if (CUPS_INCLUDE_DIR AND EXISTS "${CUPS_INCLUDE_DIR}/cups/cups.h")
+    file(STRINGS "${CUPS_INCLUDE_DIR}/cups/cups.h" cups_version_str
+         REGEX "^#[\t ]*define[\t ]+CUPS_VERSION_(MAJOR|MINOR|PATCH)[\t ]+[0-9]+$")
+
+    unset(CUPS_VERSION_STRING)
+    foreach(VPART MAJOR MINOR PATCH)
+        foreach(VLINE ${cups_version_str})
+            if(VLINE MATCHES "^#[\t ]*define[\t ]+CUPS_VERSION_${VPART}[\t ]+([0-9]+)$")
+                set(CUPS_VERSION_PART "${CMAKE_MATCH_1}")
+                if(CUPS_VERSION_STRING)
+                    string(APPEND CUPS_VERSION_STRING ".${CUPS_VERSION_PART}")
+                else()
+                    set(CUPS_VERSION_STRING "${CUPS_VERSION_PART}")
+                endif()
+            endif()
+        endforeach()
+    endforeach()
+endif ()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+if (CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE)
+    FIND_PACKAGE_HANDLE_STANDARD_ARGS(Cups
+                                      REQUIRED_VARS CUPS_LIBRARIES CUPS_INCLUDE_DIR CUPS_HAS_IPP_DELETE_ATTRIBUTE
+                                      VERSION_VAR CUPS_VERSION_STRING)
+else ()
+    FIND_PACKAGE_HANDLE_STANDARD_ARGS(Cups
+                                      REQUIRED_VARS CUPS_LIBRARIES CUPS_INCLUDE_DIR
+                                      VERSION_VAR CUPS_VERSION_STRING)
+endif ()
+
+mark_as_advanced(CUPS_INCLUDE_DIR CUPS_LIBRARIES)
+
+if (CUPS_FOUND)
+    set(CUPS_INCLUDE_DIRS "${CUPS_INCLUDE_DIR}")
+    if (NOT TARGET Cups::Cups)
+        add_library(Cups::Cups INTERFACE IMPORTED)
+        set_target_properties(Cups::Cups PROPERTIES
+            INTERFACE_LINK_LIBRARIES      "${CUPS_LIBRARIES}"
+            INTERFACE_INCLUDE_DIRECTORIES "${CUPS_INCLUDE_DIR}")
+    endif ()
+endif ()
diff --git a/share/cmake-3.22/Modules/FindCurses.cmake b/share/cmake-3.22/Modules/FindCurses.cmake
new file mode 100644
index 0000000..bfa1d6f
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindCurses.cmake
@@ -0,0 +1,276 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindCurses
+----------
+
+Find the curses or ncurses include file and library.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module defines the following variables:
+
+``CURSES_FOUND``
+  True if Curses is found.
+``CURSES_INCLUDE_DIRS``
+  The include directories needed to use Curses.
+``CURSES_LIBRARIES``
+  The libraries needed to use Curses.
+``CURSES_CFLAGS``
+  .. versionadded:: 3.16
+
+  Parameters which ought be given to C/C++ compilers when using Curses.
+``CURSES_HAVE_CURSES_H``
+  True if curses.h is available.
+``CURSES_HAVE_NCURSES_H``
+  True if ncurses.h is available.
+``CURSES_HAVE_NCURSES_NCURSES_H``
+  True if ``ncurses/ncurses.h`` is available.
+``CURSES_HAVE_NCURSES_CURSES_H``
+  True if ``ncurses/curses.h`` is available.
+
+Set ``CURSES_NEED_NCURSES`` to ``TRUE`` before the
+``find_package(Curses)`` call if NCurses functionality is required.
+
+.. versionadded:: 3.10
+  Set ``CURSES_NEED_WIDE`` to ``TRUE`` before the
+  ``find_package(Curses)`` call if unicode functionality is required.
+
+Backward Compatibility
+^^^^^^^^^^^^^^^^^^^^^^
+
+The following variable are provided for backward compatibility:
+
+``CURSES_INCLUDE_DIR``
+  Path to Curses include.  Use ``CURSES_INCLUDE_DIRS`` instead.
+``CURSES_LIBRARY``
+  Path to Curses library.  Use ``CURSES_LIBRARIES`` instead.
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake)
+
+# we don't know anything about cursesw, so only ncurses
+# may be ncursesw
+if(NOT CURSES_NEED_WIDE)
+  set(NCURSES_LIBRARY_NAME "ncurses")
+  set(CURSES_FORM_LIBRARY_NAME "form")
+else()
+  set(NCURSES_LIBRARY_NAME "ncursesw")
+  set(CURSES_FORM_LIBRARY_NAME "formw")
+  # Also, if we are searching for wide curses - we are actually searching
+  # for ncurses, we don't know about any other unicode version.
+  set(CURSES_NEED_NCURSES TRUE)
+endif()
+
+find_library(CURSES_CURSES_LIBRARY NAMES curses)
+
+find_library(CURSES_NCURSES_LIBRARY NAMES "${NCURSES_LIBRARY_NAME}" )
+set(CURSES_USE_NCURSES FALSE)
+
+if(CURSES_NCURSES_LIBRARY  AND ((NOT CURSES_CURSES_LIBRARY) OR CURSES_NEED_NCURSES))
+  set(CURSES_USE_NCURSES TRUE)
+endif()
+# http://cygwin.com/ml/cygwin-announce/2010-01/msg00002.html
+# cygwin ncurses stopped providing curses.h symlinks see above
+# message.  Cygwin is an ncurses package, so force ncurses on
+# cygwin if the curses.h is missing
+if(CURSES_NCURSES_LIBRARY AND CYGWIN)
+  if (CURSES_NEED_WIDE)
+    if(NOT EXISTS /usr/include/ncursesw/curses.h)
+      set(CURSES_USE_NCURSES TRUE)
+    endif()
+  else()
+    if(NOT EXISTS /usr/include/curses.h)
+      set(CURSES_USE_NCURSES TRUE)
+    endif()
+  endif()
+endif()
+
+
+# Not sure the logic is correct here.
+# If NCurses is required, use the function wsyncup() to check if the library
+# has NCurses functionality (at least this is where it breaks on NetBSD).
+# If wsyncup is in curses, use this one.
+# If not, try to find ncurses and check if this has the symbol.
+# Once the ncurses library is found, search the ncurses.h header first, but
+# some web pages also say that even with ncurses there is not always a ncurses.h:
+# http://osdir.com/ml/gnome.apps.mc.devel/2002-06/msg00029.html
+# So at first try ncurses.h, if not found, try to find curses.h under the same
+# prefix as the library was found, if still not found, try curses.h with the
+# default search paths.
+if(CURSES_CURSES_LIBRARY  AND  CURSES_NEED_NCURSES)
+  include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
+  cmake_push_check_state()
+  set(CMAKE_REQUIRED_QUIET ${Curses_FIND_QUIETLY})
+  CHECK_LIBRARY_EXISTS("${CURSES_CURSES_LIBRARY}"
+    wsyncup "" CURSES_CURSES_HAS_WSYNCUP)
+
+  if(CURSES_NCURSES_LIBRARY  AND NOT  CURSES_CURSES_HAS_WSYNCUP)
+    CHECK_LIBRARY_EXISTS("${CURSES_NCURSES_LIBRARY}"
+      wsyncup "" CURSES_NCURSES_HAS_WSYNCUP)
+    if( CURSES_NCURSES_HAS_WSYNCUP)
+      set(CURSES_USE_NCURSES TRUE)
+    endif()
+  endif()
+  cmake_pop_check_state()
+
+endif()
+
+if(CURSES_USE_NCURSES)
+  get_filename_component(_cursesLibDir "${CURSES_NCURSES_LIBRARY}" PATH)
+  get_filename_component(_cursesParentDir "${_cursesLibDir}" PATH)
+
+  # Use CURSES_NCURSES_INCLUDE_PATH if set, for compatibility.
+  if(CURSES_NCURSES_INCLUDE_PATH)
+    if (CURSES_NEED_WIDE)
+      find_path(CURSES_INCLUDE_PATH
+        NAMES ncursesw/ncurses.h ncursesw/curses.h ncursesw.h cursesw.h
+        PATHS ${CURSES_NCURSES_INCLUDE_PATH}
+        NO_DEFAULT_PATH
+        )
+    else()
+      find_path(CURSES_INCLUDE_PATH
+        NAMES ncurses/ncurses.h ncurses/curses.h ncurses.h curses.h
+        PATHS ${CURSES_NCURSES_INCLUDE_PATH}
+        NO_DEFAULT_PATH
+        )
+    endif()
+  endif()
+
+  if (CURSES_NEED_WIDE)
+    set(CURSES_TINFO_LIBRARY_NAME tinfow)
+    find_path(CURSES_INCLUDE_PATH
+      NAMES ncursesw/ncurses.h ncursesw/curses.h ncursesw.h cursesw.h
+      HINTS "${_cursesParentDir}/include"
+      )
+  else()
+    set(CURSES_TINFO_LIBRARY_NAME tinfo)
+    find_path(CURSES_INCLUDE_PATH
+      NAMES ncurses/ncurses.h ncurses/curses.h ncurses.h curses.h
+      HINTS "${_cursesParentDir}/include"
+      )
+  endif()
+
+  # Previous versions of FindCurses provided these values.
+  if(NOT DEFINED CURSES_LIBRARY)
+    set(CURSES_LIBRARY "${CURSES_NCURSES_LIBRARY}")
+  endif()
+
+  CHECK_LIBRARY_EXISTS("${CURSES_NCURSES_LIBRARY}"
+    cbreak "" CURSES_NCURSES_HAS_CBREAK)
+  CHECK_LIBRARY_EXISTS("${CURSES_NCURSES_LIBRARY}"
+    nodelay "" CURSES_NCURSES_HAS_NODELAY)
+  if(NOT CURSES_NCURSES_HAS_CBREAK OR NOT CURSES_NCURSES_HAS_NODELAY)
+    find_library(CURSES_EXTRA_LIBRARY "${CURSES_TINFO_LIBRARY_NAME}" HINTS "${_cursesLibDir}")
+    find_library(CURSES_EXTRA_LIBRARY "${CURSES_TINFO_LIBRARY_NAME}" )
+
+    mark_as_advanced(
+      CURSES_EXTRA_LIBRARY
+      )
+  endif()
+else()
+  get_filename_component(_cursesLibDir "${CURSES_CURSES_LIBRARY}" PATH)
+  get_filename_component(_cursesParentDir "${_cursesLibDir}" PATH)
+
+  #We can't find anything with CURSES_NEED_WIDE because we know
+  #only about ncursesw unicode curses version
+  if(NOT CURSES_NEED_WIDE)
+    find_path(CURSES_INCLUDE_PATH
+      NAMES curses.h
+      HINTS "${_cursesParentDir}/include"
+      )
+  endif()
+
+  # Previous versions of FindCurses provided these values.
+  if(NOT DEFINED CURSES_CURSES_H_PATH)
+    set(CURSES_CURSES_H_PATH "${CURSES_INCLUDE_PATH}")
+  endif()
+  if(NOT DEFINED CURSES_LIBRARY)
+    set(CURSES_LIBRARY "${CURSES_CURSES_LIBRARY}")
+  endif()
+endif()
+
+# Report whether each possible header name exists in the include directory.
+if(NOT DEFINED CURSES_HAVE_NCURSES_NCURSES_H)
+  if(CURSES_NEED_WIDE)
+    if(EXISTS "${CURSES_INCLUDE_PATH}/ncursesw/ncurses.h")
+      set(CURSES_HAVE_NCURSES_NCURSES_H "${CURSES_INCLUDE_PATH}/ncursesw/ncurses.h")
+    endif()
+  elseif(EXISTS "${CURSES_INCLUDE_PATH}/ncurses/ncurses.h")
+    set(CURSES_HAVE_NCURSES_NCURSES_H "${CURSES_INCLUDE_PATH}/ncurses/ncurses.h")
+  endif()
+  if(NOT DEFINED CURSES_HAVE_NCURSES_NCURSES_H)
+    set(CURSES_HAVE_NCURSES_NCURSES_H "CURSES_HAVE_NCURSES_NCURSES_H-NOTFOUND")
+  endif()
+endif()
+if(NOT DEFINED CURSES_HAVE_NCURSES_CURSES_H)
+  if(CURSES_NEED_WIDE)
+    if(EXISTS "${CURSES_INCLUDE_PATH}/ncursesw/curses.h")
+      set(CURSES_HAVE_NCURSES_CURSES_H "${CURSES_INCLUDE_PATH}/ncursesw/curses.h")
+    endif()
+  elseif(EXISTS "${CURSES_INCLUDE_PATH}/ncurses/curses.h")
+    set(CURSES_HAVE_NCURSES_CURSES_H "${CURSES_INCLUDE_PATH}/ncurses/curses.h")
+  endif()
+  if(NOT DEFINED CURSES_HAVE_NCURSES_CURSES_H)
+    set(CURSES_HAVE_NCURSES_CURSES_H "CURSES_HAVE_NCURSES_CURSES_H-NOTFOUND")
+  endif()
+endif()
+if(NOT CURSES_NEED_WIDE)
+  #ncursesw can't be found for this paths
+  if(NOT DEFINED CURSES_HAVE_NCURSES_H)
+    if(EXISTS "${CURSES_INCLUDE_PATH}/ncurses.h")
+      set(CURSES_HAVE_NCURSES_H "${CURSES_INCLUDE_PATH}/ncurses.h")
+    else()
+      set(CURSES_HAVE_NCURSES_H "CURSES_HAVE_NCURSES_H-NOTFOUND")
+    endif()
+  endif()
+  if(NOT DEFINED CURSES_HAVE_CURSES_H)
+    if(EXISTS "${CURSES_INCLUDE_PATH}/curses.h")
+      set(CURSES_HAVE_CURSES_H "${CURSES_INCLUDE_PATH}/curses.h")
+    else()
+      set(CURSES_HAVE_CURSES_H "CURSES_HAVE_CURSES_H-NOTFOUND")
+    endif()
+  endif()
+endif()
+
+find_library(CURSES_FORM_LIBRARY "${CURSES_FORM_LIBRARY_NAME}" HINTS "${_cursesLibDir}")
+find_library(CURSES_FORM_LIBRARY "${CURSES_FORM_LIBRARY_NAME}" )
+
+# Previous versions of FindCurses provided these values.
+if(NOT DEFINED FORM_LIBRARY)
+  set(FORM_LIBRARY "${CURSES_FORM_LIBRARY}")
+endif()
+
+# Need to provide the *_LIBRARIES
+set(CURSES_LIBRARIES ${CURSES_LIBRARY})
+
+if(CURSES_EXTRA_LIBRARY)
+  set(CURSES_LIBRARIES ${CURSES_LIBRARIES} ${CURSES_EXTRA_LIBRARY})
+endif()
+
+if(CURSES_FORM_LIBRARY)
+  set(CURSES_LIBRARIES ${CURSES_LIBRARIES} ${CURSES_FORM_LIBRARY})
+endif()
+
+# Provide the *_INCLUDE_DIRS and *_CFLAGS results.
+set(CURSES_INCLUDE_DIRS ${CURSES_INCLUDE_PATH})
+set(CURSES_INCLUDE_DIR ${CURSES_INCLUDE_PATH}) # compatibility
+
+find_package(PkgConfig QUIET)
+if(PKG_CONFIG_FOUND)
+  pkg_check_modules(NCURSES QUIET ${NCURSES_LIBRARY_NAME})
+  set(CURSES_CFLAGS ${NCURSES_CFLAGS_OTHER})
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Curses DEFAULT_MSG
+  CURSES_LIBRARY CURSES_INCLUDE_PATH)
+
+mark_as_advanced(
+  CURSES_INCLUDE_PATH
+  CURSES_CURSES_LIBRARY
+  CURSES_NCURSES_LIBRARY
+  CURSES_FORM_LIBRARY
+  )
diff --git a/share/cmake-3.18/Modules/FindCxxTest.cmake b/share/cmake-3.22/Modules/FindCxxTest.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindCxxTest.cmake
rename to share/cmake-3.22/Modules/FindCxxTest.cmake
diff --git a/share/cmake-3.18/Modules/FindCygwin.cmake b/share/cmake-3.22/Modules/FindCygwin.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindCygwin.cmake
rename to share/cmake-3.22/Modules/FindCygwin.cmake
diff --git a/share/cmake-3.18/Modules/FindDCMTK.cmake b/share/cmake-3.22/Modules/FindDCMTK.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindDCMTK.cmake
rename to share/cmake-3.22/Modules/FindDCMTK.cmake
diff --git a/share/cmake-3.18/Modules/FindDart.cmake b/share/cmake-3.22/Modules/FindDart.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindDart.cmake
rename to share/cmake-3.22/Modules/FindDart.cmake
diff --git a/share/cmake-3.22/Modules/FindDevIL.cmake b/share/cmake-3.22/Modules/FindDevIL.cmake
new file mode 100644
index 0000000..c8e5e31
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindDevIL.cmake
@@ -0,0 +1,139 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindDevIL
+---------
+
+
+
+This module locates the developer's image library.
+http://openil.sourceforge.net/
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.21
+
+This module defines the :prop_tgt:`IMPORTED` targets:
+
+``DevIL::IL``
+ Defined if the system has DevIL.
+
+``DevIL::ILU``
+ Defined if the system has DevIL Utilities.
+
+``DevIL::ILUT``
+ Defined if the system has DevIL Utility Toolkit.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module sets:
+
+``IL_LIBRARIES``
+  The name of the IL library. These include the full path to
+  the core DevIL library. This one has to be linked into the
+  application.
+
+``ILU_LIBRARIES``
+  The name of the ILU library. Again, the full path. This
+  library is for filters and effects, not actual loading. It
+  doesn't have to be linked if the functionality it provides
+  is not used.
+
+``ILUT_LIBRARIES``
+  The name of the ILUT library. Full path. This part of the
+  library interfaces with OpenGL. It is not strictly needed
+  in applications.
+
+``IL_INCLUDE_DIR``
+  where to find the il.h, ilu.h and ilut.h files.
+
+``DevIL_FOUND``
+  This is set to TRUE if all the above variables were set.
+  This will be set to false if ILU or ILUT are not found,
+  even if they are not needed. In most systems, if one
+  library is found all the others are as well. That's the
+  way the DevIL developers release it.
+
+``DevIL_ILUT_FOUND``
+  .. versionadded:: 3.21
+
+  This is set to TRUE if the ILUT library is found.
+#]=======================================================================]
+
+# TODO: Add version support.
+# Tested under Linux and Windows (MSVC)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+find_path(IL_INCLUDE_DIR il.h
+  PATH_SUFFIXES include IL
+  DOC "The path to the directory that contains il.h"
+)
+
+#message("IL_INCLUDE_DIR is ${IL_INCLUDE_DIR}")
+
+find_library(IL_LIBRARIES
+  NAMES IL DEVIL
+  PATH_SUFFIXES libx32 lib64 lib lib32
+  DOC "The file that corresponds to the base il library."
+)
+
+#message("IL_LIBRARIES is ${IL_LIBRARIES}")
+
+find_library(ILUT_LIBRARIES
+  NAMES ILUT
+  PATH_SUFFIXES libx32 lib64 lib lib32
+  DOC "The file that corresponds to the il (system?) utility library."
+)
+
+#message("ILUT_LIBRARIES is ${ILUT_LIBRARIES}")
+
+find_library(ILU_LIBRARIES
+  NAMES ILU
+  PATH_SUFFIXES libx32 lib64 lib lib32
+  DOC "The file that corresponds to the il utility library."
+)
+
+#message("ILU_LIBRARIES is ${ILU_LIBRARIES}")
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(DevIL DEFAULT_MSG
+                                  IL_LIBRARIES ILU_LIBRARIES
+                                  IL_INCLUDE_DIR)
+# provide legacy variable for compatibility
+set(IL_FOUND ${DevIL_FOUND})
+
+# create imported targets ONLY if we found DevIL.
+if(DevIL_FOUND)
+  # Report the ILUT found if ILUT_LIBRARIES contains valid path.
+  if (ILUT_LIBRARIES)
+    set(DevIL_ILUT_FOUND TRUE)
+  else()
+    set(DevIL_ILUT_FOUND FALSE)
+  endif()
+
+  if(NOT TARGET DevIL::IL)
+    add_library(DevIL::IL UNKNOWN IMPORTED)
+    set_target_properties(DevIL::IL PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${IL_INCLUDE_DIR}"
+      IMPORTED_LOCATION "${IL_LIBRARIES}")
+  endif()
+
+  # DevIL Utilities target
+  if(NOT TARGET DevIL::ILU)
+    add_library(DevIL::ILU UNKNOWN IMPORTED)
+    set_target_properties(DevIL::ILU PROPERTIES
+      IMPORTED_LOCATION "${ILU_LIBRARIES}")
+    target_link_libraries(DevIL::ILU INTERFACE DevIL::IL)
+  endif()
+
+  # ILUT (if found)
+  if(NOT TARGET DevIL::ILUT AND DevIL_ILUT_FOUND)
+    add_library(DevIL::ILUT UNKNOWN IMPORTED)
+    set_target_properties(DevIL::ILUT PROPERTIES
+      IMPORTED_LOCATION "${ILUT_LIBRARIES}")
+    target_link_libraries(DevIL::ILUT INTERFACE DevIL::ILU)
+  endif()
+endif()
diff --git a/share/cmake-3.22/Modules/FindDoxygen.cmake b/share/cmake-3.22/Modules/FindDoxygen.cmake
new file mode 100644
index 0000000..4a16e31
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindDoxygen.cmake
@@ -0,0 +1,1177 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindDoxygen
+-----------
+
+Doxygen is a documentation generation tool (see http://www.doxygen.org).
+This module looks for Doxygen and some optional tools it supports:
+
+``dot``
+  `Graphviz <http://graphviz.org>`_ ``dot`` utility used to render various
+  graphs.
+``mscgen``
+  `Message Chart Generator <http://www.mcternan.me.uk/mscgen/>`_ utility used
+  by Doxygen's ``\msc`` and ``\mscfile`` commands.
+``dia``
+  `Dia <https://wiki.gnome.org/Apps/Dia>`_ the diagram editor used by Doxygen's
+  ``\diafile`` command.
+
+.. versionadded:: 3.9
+  These tools are available as components in the :command:`find_package` command.
+  For example:
+
+.. code-block:: cmake
+
+  # Require dot, treat the other components as optional
+  find_package(Doxygen
+               REQUIRED dot
+               OPTIONAL_COMPONENTS mscgen dia)
+
+The following variables are defined by this module:
+
+.. variable:: DOXYGEN_FOUND
+
+  True if the ``doxygen`` executable was found.
+
+.. variable:: DOXYGEN_VERSION
+
+  The version reported by ``doxygen --version``.
+
+.. versionadded:: 3.9
+  The module defines ``IMPORTED`` targets for Doxygen and each component found.
+  These can be used as part of custom commands, etc. and should be preferred over
+  old-style (and now deprecated) variables like ``DOXYGEN_EXECUTABLE``. The
+  following import targets are defined if their corresponding executable could be
+  found (the component import targets will only be defined if that component was
+  requested):
+
+::
+
+  Doxygen::doxygen
+  Doxygen::dot
+  Doxygen::mscgen
+  Doxygen::dia
+
+
+Functions
+^^^^^^^^^
+
+.. command:: doxygen_add_docs
+
+  .. versionadded:: 3.9
+
+  This function is intended as a convenience for adding a target for generating
+  documentation with Doxygen. It aims to provide sensible defaults so that
+  projects can generally just provide the input files and directories and that
+  will be sufficient to give sensible results. The function supports the
+  ability to customize the Doxygen configuration used to build the
+  documentation.
+
+  ::
+
+    doxygen_add_docs(targetName
+        [filesOrDirs...]
+        [ALL]
+        [USE_STAMP_FILE]
+        [WORKING_DIRECTORY dir]
+        [COMMENT comment])
+
+  The function constructs a ``Doxyfile`` and defines a custom target that runs
+  Doxygen on that generated file. The listed files and directories are used as
+  the ``INPUT`` of the generated ``Doxyfile`` and they can contain wildcards.
+  Any files that are listed explicitly will also be added as ``SOURCES`` of the
+  custom target so they will show up in an IDE project's source list.
+
+  So that relative input paths work as expected, by default the working
+  directory of the Doxygen command will be the current source directory (i.e.
+  :variable:`CMAKE_CURRENT_SOURCE_DIR`). This can be overridden with the
+  ``WORKING_DIRECTORY`` option to change the directory used as the relative
+  base point. Note also that Doxygen's default behavior is to strip the working
+  directory from relative paths in the generated documentation (see the
+  ``STRIP_FROM_PATH`` `Doxygen config option
+  <http://www.doxygen.org/manual/config.html>`_ for details).
+
+  If provided, the optional ``comment`` will be passed as the ``COMMENT`` for
+  the :command:`add_custom_target` command used to create the custom target
+  internally.
+
+  .. versionadded:: 3.12
+    If ``ALL`` is set, the target will be added to the default build target.
+
+  .. versionadded:: 3.16
+    If ``USE_STAMP_FILE`` is set, the custom command defined by this function will
+    create a stamp file with the name ``<targetName>.stamp`` in the current
+    binary directory whenever doxygen is re-run.  With this option present, all
+    items in ``<filesOrDirs>`` must be files (i.e. no directories, symlinks or
+    wildcards) and each of the files must exist at the time
+    ``doxygen_add_docs()`` is called.  An error will be raised if any of the
+    items listed is missing or is not a file when ``USE_STAMP_FILE`` is given.
+    A dependency will be created on each of the files so that doxygen will only
+    be re-run if one of the files is updated.  Without the ``USE_STAMP_FILE``
+    option, doxygen will always be re-run if the ``<targetName>`` target is built
+    regardless of whether anything listed in ``<filesOrDirs>`` has changed.
+
+  The contents of the generated ``Doxyfile`` can be customized by setting CMake
+  variables before calling ``doxygen_add_docs()``. Any variable with a name of
+  the form ``DOXYGEN_<tag>`` will have its value substituted for the
+  corresponding ``<tag>`` configuration option in the ``Doxyfile``. See the
+  `Doxygen documentation <http://www.doxygen.org/manual/config.html>`_ for the
+  full list of supported configuration options.
+
+  Some of Doxygen's defaults are overridden to provide more appropriate
+  behavior for a CMake project. Each of the following will be explicitly set
+  unless the variable already has a value before ``doxygen_add_docs()`` is
+  called (with some exceptions noted):
+
+  .. variable:: DOXYGEN_HAVE_DOT
+
+    Set to ``YES`` if the ``dot`` component was requested and it was found,
+    ``NO`` otherwise. Any existing value of ``DOXYGEN_HAVE_DOT`` is ignored.
+
+  .. variable:: DOXYGEN_DOT_MULTI_TARGETS
+
+    Set to ``YES`` by this module (note that this requires a ``dot`` version
+    newer than 1.8.10). This option is only meaningful if ``DOXYGEN_HAVE_DOT``
+    is also set to ``YES``.
+
+  .. variable:: DOXYGEN_GENERATE_LATEX
+
+    Set to ``NO`` by this module.
+
+  .. variable:: DOXYGEN_WARN_FORMAT
+
+    For Visual Studio based generators, this is set to the form recognized by
+    the Visual Studio IDE: ``$file($line) : $text``. For all other generators,
+    Doxygen's default value is not overridden.
+
+  .. variable:: DOXYGEN_PROJECT_NAME
+
+    Populated with the name of the current project (i.e.
+    :variable:`PROJECT_NAME`).
+
+  .. variable:: DOXYGEN_PROJECT_NUMBER
+
+    Populated with the version of the current project (i.e.
+    :variable:`PROJECT_VERSION`).
+
+  .. variable:: DOXYGEN_PROJECT_BRIEF
+
+    Populated with the description of the current project (i.e.
+    :variable:`PROJECT_DESCRIPTION`).
+
+  .. variable:: DOXYGEN_INPUT
+
+    Projects should not set this variable. It will be populated with the set of
+    files and directories passed to ``doxygen_add_docs()``, thereby providing
+    consistent behavior with the other built-in commands like
+    :command:`add_executable`, :command:`add_library` and
+    :command:`add_custom_target`. If a variable named ``DOXYGEN_INPUT`` is set
+    by the project, it will be ignored and a warning will be issued.
+
+  .. variable:: DOXYGEN_RECURSIVE
+
+    Set to ``YES`` by this module.
+
+  .. variable:: DOXYGEN_EXCLUDE_PATTERNS
+
+    If the set of inputs includes directories, this variable will specify
+    patterns used to exclude files from them. The following patterns are added
+    by ``doxygen_add_docs()`` to ensure CMake-specific files and directories
+    are not included in the input. If the project sets
+    ``DOXYGEN_EXCLUDE_PATTERNS``, those contents are merged with these
+    additional patterns rather than replacing them:
+
+    ::
+
+      */.git/*
+      */.svn/*
+      */.hg/*
+      */CMakeFiles/*
+      */_CPack_Packages/*
+      DartConfiguration.tcl
+      CMakeLists.txt
+      CMakeCache.txt
+
+  .. variable:: DOXYGEN_OUTPUT_DIRECTORY
+
+    Set to :variable:`CMAKE_CURRENT_BINARY_DIR` by this module. Note that if
+    the project provides its own value for this and it is a relative path, it
+    will be converted to an absolute path relative to the current binary
+    directory. This is necessary because doxygen will normally be run from a
+    directory within the source tree so that relative source paths work as
+    expected. If this directory does not exist, it will be recursively created
+    prior to executing the doxygen commands.
+
+To change any of these defaults or override any other Doxygen config option,
+set relevant variables before calling ``doxygen_add_docs()``. For example:
+
+  .. code-block:: cmake
+
+    set(DOXYGEN_GENERATE_HTML NO)
+    set(DOXYGEN_GENERATE_MAN YES)
+
+    doxygen_add_docs(
+        doxygen
+        ${PROJECT_SOURCE_DIR}
+        COMMENT "Generate man pages"
+    )
+
+A number of Doxygen config options accept lists of values, but Doxygen requires
+them to be separated by whitespace. CMake variables hold lists as a string with
+items separated by semi-colons, so a conversion needs to be performed. The
+``doxygen_add_docs()`` command specifically checks the following Doxygen config
+options and will convert their associated CMake variable's contents into the
+required form if set. CMake variables are named ``DOXYGEN_<name>`` for the
+Doxygen settings specified here.
+
+::
+
+  ABBREVIATE_BRIEF
+  ALIASES
+  CITE_BIB_FILES
+  DIAFILE_DIRS
+  DOTFILE_DIRS
+  DOT_FONTPATH
+  ENABLED_SECTIONS
+  EXAMPLE_PATH
+  EXAMPLE_PATTERNS
+  EXCLUDE
+  EXCLUDE_PATTERNS
+  EXCLUDE_SYMBOLS
+  EXPAND_AS_DEFINED
+  EXTENSION_MAPPING
+  EXTRA_PACKAGES
+  EXTRA_SEARCH_MAPPINGS
+  FILE_PATTERNS
+  FILTER_PATTERNS
+  FILTER_SOURCE_PATTERNS
+  HTML_EXTRA_FILES
+  HTML_EXTRA_STYLESHEET
+  IGNORE_PREFIX
+  IMAGE_PATH
+  INCLUDE_FILE_PATTERNS
+  INCLUDE_PATH
+  INPUT
+  LATEX_EXTRA_FILES
+  LATEX_EXTRA_STYLESHEET
+  MATHJAX_EXTENSIONS
+  MSCFILE_DIRS
+  PLANTUML_INCLUDE_PATH
+  PREDEFINED
+  QHP_CUST_FILTER_ATTRS
+  QHP_SECT_FILTER_ATTRS
+  STRIP_FROM_INC_PATH
+  STRIP_FROM_PATH
+  TAGFILES
+  TCL_SUBST
+
+The following single value Doxygen options will be quoted automatically
+if they contain at least one space:
+
+::
+
+  CHM_FILE
+  DIA_PATH
+  DOCBOOK_OUTPUT
+  DOCSET_FEEDNAME
+  DOCSET_PUBLISHER_NAME
+  DOT_FONTNAME
+  DOT_PATH
+  EXTERNAL_SEARCH_ID
+  FILE_VERSION_FILTER
+  GENERATE_TAGFILE
+  HHC_LOCATION
+  HTML_FOOTER
+  HTML_HEADER
+  HTML_OUTPUT
+  HTML_STYLESHEET
+  INPUT_FILTER
+  LATEX_FOOTER
+  LATEX_HEADER
+  LATEX_OUTPUT
+  LAYOUT_FILE
+  MAN_OUTPUT
+  MAN_SUBDIR
+  MATHJAX_CODEFILE
+  MSCGEN_PATH
+  OUTPUT_DIRECTORY
+  PERL_PATH
+  PLANTUML_JAR_PATH
+  PROJECT_BRIEF
+  PROJECT_LOGO
+  PROJECT_NAME
+  QCH_FILE
+  QHG_LOCATION
+  QHP_CUST_FILTER_NAME
+  QHP_VIRTUAL_FOLDER
+  RTF_EXTENSIONS_FILE
+  RTF_OUTPUT
+  RTF_STYLESHEET_FILE
+  SEARCHDATA_FILE
+  USE_MDFILE_AS_MAINPAGE
+  WARN_FORMAT
+  WARN_LOGFILE
+  XML_OUTPUT
+
+.. versionadded:: 3.11
+  There are situations where it may be undesirable for a particular config option
+  to be automatically quoted by ``doxygen_add_docs()``, such as ``ALIASES`` which
+  may need to include its own embedded quoting.  The ``DOXYGEN_VERBATIM_VARS``
+  variable can be used to specify a list of Doxygen variables (including the
+  leading ``DOXYGEN_`` prefix) which should not be quoted.  The project is then
+  responsible for ensuring that those variables' values make sense when placed
+  directly in the Doxygen input file.  In the case of list variables, list items
+  are still separated by spaces, it is only the automatic quoting that is
+  skipped.  For example, the following allows ``doxygen_add_docs()`` to apply
+  quoting to ``DOXYGEN_PROJECT_BRIEF``, but not each item in the
+  ``DOXYGEN_ALIASES`` list (:ref:`bracket syntax <Bracket Argument>` can also
+  be used to make working with embedded quotes easier):
+
+.. code-block:: cmake
+
+  set(DOXYGEN_PROJECT_BRIEF "String with spaces")
+  set(DOXYGEN_ALIASES
+      [[somealias="@some_command param"]]
+      "anotherAlias=@foobar"
+  )
+  set(DOXYGEN_VERBATIM_VARS DOXYGEN_ALIASES)
+
+The resultant ``Doxyfile`` will contain the following lines:
+
+.. code-block:: text
+
+  PROJECT_BRIEF = "String with spaces"
+  ALIASES       = somealias="@some_command param" anotherAlias=@foobar
+
+
+Deprecated Result Variables
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. deprecated:: 3.9
+
+For compatibility with previous versions of CMake, the following variables
+are also defined but they are deprecated and should no longer be used:
+
+.. variable:: DOXYGEN_EXECUTABLE
+
+  The path to the ``doxygen`` command. If projects need to refer to the
+  ``doxygen`` executable directly, they should use the ``Doxygen::doxygen``
+  import target instead.
+
+.. variable:: DOXYGEN_DOT_FOUND
+
+  True if the ``dot`` executable was found.
+
+.. variable:: DOXYGEN_DOT_EXECUTABLE
+
+  The path to the ``dot`` command. If projects need to refer to the ``dot``
+  executable directly, they should use the ``Doxygen::dot`` import target
+  instead.
+
+.. variable:: DOXYGEN_DOT_PATH
+
+  The path to the directory containing the ``dot`` executable as reported in
+  ``DOXYGEN_DOT_EXECUTABLE``. The path may have forward slashes even on Windows
+  and is not suitable for direct substitution into a ``Doxyfile.in`` template.
+  If you need this value, get the :prop_tgt:`IMPORTED_LOCATION` property of the
+  ``Doxygen::dot`` target and use :command:`get_filename_component` to extract
+  the directory part of that path. You may also want to consider using
+  :command:`file(TO_NATIVE_PATH)` to prepare the path for a Doxygen
+  configuration file.
+
+
+Deprecated Hint Variables
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. deprecated:: 3.9
+
+.. variable:: DOXYGEN_SKIP_DOT
+
+  This variable has no effect for the component form of ``find_package``.
+  In backward compatibility mode (i.e. without components list) it prevents
+  the finder module from searching for Graphviz's ``dot`` utility.
+
+#]=======================================================================]
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0054 NEW) # quoted if arguments
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+# For backwards compatibility support
+if(Doxygen_FIND_QUIETLY)
+    set(DOXYGEN_FIND_QUIETLY TRUE)
+endif()
+
+# ===== Rationale for OS X AppBundle mods below =====
+#  With the OS X GUI version, Doxygen likes to be installed to /Applications
+#  and it contains the doxygen executable in the bundle. In the versions I've
+#  seen, it is located in Resources, but in general, more often binaries are
+#  located in MacOS.
+#
+#  NOTE: The official Doxygen.app distributed for OS X uses non-standard
+#  conventions. Instead of the command-line "doxygen" tool being placed in
+#  Doxygen.app/Contents/MacOS, "Doxywizard" is placed there instead and
+#  "doxygen" is placed in Contents/Resources.  This is most likely done
+#  so that something happens when people double-click on the Doxygen.app
+#  package. Unfortunately, CMake gets confused by this as when it sees the
+#  bundle it uses "Doxywizard" as the executable to use instead of
+#  "doxygen". Therefore to work-around this issue we temporarily disable
+#  the app-bundle feature, just for this CMake module:
+#
+if(APPLE)
+    # Save the old setting
+    set(TEMP_DOXYGEN_SAVE_CMAKE_FIND_APPBUNDLE ${CMAKE_FIND_APPBUNDLE})
+    # Disable the App-bundle detection feature
+    set(CMAKE_FIND_APPBUNDLE "NEVER")
+endif()
+# FYI:
+# In older versions of OS X Doxygen, dot was included with the Doxygen bundle,
+# but newer versions require you to download Graphviz.app which contains "dot"
+# or use something like homebrew.
+# ============== End OSX stuff ================
+
+#
+# Find Doxygen...
+#
+macro(_Doxygen_find_doxygen)
+    find_program(
+        DOXYGEN_EXECUTABLE
+        NAMES doxygen
+        PATHS
+            "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\doxygen_is1;Inno Setup: App Path]/bin"
+            /Applications/Doxygen.app/Contents/Resources
+            /Applications/Doxygen.app/Contents/MacOS
+            /Applications/Utilities/Doxygen.app/Contents/Resources
+            /Applications/Utilities/Doxygen.app/Contents/MacOS
+        DOC "Doxygen documentation generation tool (http://www.doxygen.org)"
+    )
+    mark_as_advanced(DOXYGEN_EXECUTABLE)
+
+    if(DOXYGEN_EXECUTABLE)
+        execute_process(
+            COMMAND "${DOXYGEN_EXECUTABLE}" --version
+            OUTPUT_VARIABLE DOXYGEN_VERSION
+            OUTPUT_STRIP_TRAILING_WHITESPACE
+            RESULT_VARIABLE _Doxygen_version_result
+        )
+        if(_Doxygen_version_result)
+            message(WARNING "Unable to determine doxygen version: ${_Doxygen_version_result}")
+        endif()
+
+        # Create an imported target for Doxygen
+        if(NOT TARGET Doxygen::doxygen)
+            add_executable(Doxygen::doxygen IMPORTED GLOBAL)
+            set_target_properties(Doxygen::doxygen PROPERTIES
+                IMPORTED_LOCATION "${DOXYGEN_EXECUTABLE}"
+            )
+        endif()
+    endif()
+endmacro()
+
+#
+# Find Diagram Editor...
+#
+macro(_Doxygen_find_dia)
+    set(_x86 "(x86)")
+    find_program(
+        DOXYGEN_DIA_EXECUTABLE
+        NAMES dia
+        PATHS
+            "$ENV{ProgramFiles}/Dia"
+            "$ENV{ProgramFiles${_x86}}/Dia"
+        DOC "Diagram Editor tool for use with Doxygen"
+    )
+    mark_as_advanced(DOXYGEN_DIA_EXECUTABLE)
+
+    if(DOXYGEN_DIA_EXECUTABLE)
+        # The Doxyfile wants the path to the utility, not the entire path
+        # including file name
+        get_filename_component(DOXYGEN_DIA_PATH
+                              "${DOXYGEN_DIA_EXECUTABLE}"
+                              DIRECTORY)
+        if(WIN32)
+            file(TO_NATIVE_PATH "${DOXYGEN_DIA_PATH}" DOXYGEN_DIA_PATH)
+        endif()
+
+        # Create an imported target for component
+        if(NOT TARGET Doxygen::dia)
+            add_executable(Doxygen::dia IMPORTED GLOBAL)
+            set_target_properties(Doxygen::dia PROPERTIES
+                IMPORTED_LOCATION "${DOXYGEN_DIA_EXECUTABLE}"
+            )
+        endif()
+    endif()
+
+    unset(_x86)
+endmacro()
+
+#
+# Find Graphviz Dot...
+#
+macro(_Doxygen_find_dot)
+    if(WIN32)
+        set(_x86 "(x86)")
+        file(
+            GLOB _Doxygen_GRAPHVIZ_BIN_DIRS
+            "$ENV{ProgramFiles}/Graphviz*/bin"
+            "$ENV{ProgramFiles${_x86}}/Graphviz*/bin"
+        )
+        unset(_x86)
+    else()
+        set(_Doxygen_GRAPHVIZ_BIN_DIRS "")
+    endif()
+
+    find_program(
+        DOXYGEN_DOT_EXECUTABLE
+        NAMES dot
+        PATHS
+            ${_Doxygen_GRAPHVIZ_BIN_DIRS}
+            "$ENV{ProgramFiles}/ATT/Graphviz/bin"
+            "C:/Program Files/ATT/Graphviz/bin"
+            [HKEY_LOCAL_MACHINE\\SOFTWARE\\ATT\\Graphviz;InstallPath]/bin
+            /Applications/Graphviz.app/Contents/MacOS
+            /Applications/Utilities/Graphviz.app/Contents/MacOS
+            /Applications/Doxygen.app/Contents/Resources
+            /Applications/Doxygen.app/Contents/MacOS
+            /Applications/Utilities/Doxygen.app/Contents/Resources
+            /Applications/Utilities/Doxygen.app/Contents/MacOS
+        DOC "Dot tool for use with Doxygen"
+    )
+    mark_as_advanced(DOXYGEN_DOT_EXECUTABLE)
+
+    if(DOXYGEN_DOT_EXECUTABLE)
+        # The Doxyfile wants the path to the utility, not the entire path
+        # including file name
+        get_filename_component(DOXYGEN_DOT_PATH
+                               "${DOXYGEN_DOT_EXECUTABLE}"
+                               DIRECTORY)
+        if(WIN32)
+            file(TO_NATIVE_PATH "${DOXYGEN_DOT_PATH}" DOXYGEN_DOT_PATH)
+        endif()
+
+        # Create an imported target for component
+        if(NOT TARGET Doxygen::dot)
+            add_executable(Doxygen::dot IMPORTED GLOBAL)
+            set_target_properties(Doxygen::dot PROPERTIES
+                IMPORTED_LOCATION "${DOXYGEN_DOT_EXECUTABLE}"
+            )
+        endif()
+    endif()
+
+    unset(_Doxygen_GRAPHVIZ_BIN_DIRS)
+endmacro()
+
+#
+# Find Message Sequence Chart...
+#
+macro(_Doxygen_find_mscgen)
+    set(_x86 "(x86)")
+    find_program(
+        DOXYGEN_MSCGEN_EXECUTABLE
+        NAMES mscgen
+        PATHS
+            "$ENV{ProgramFiles}/Mscgen"
+            "$ENV{ProgramFiles${_x86}}/Mscgen"
+        DOC "Message sequence chart tool for use with Doxygen"
+    )
+    mark_as_advanced(DOXYGEN_MSCGEN_EXECUTABLE)
+
+    if(DOXYGEN_MSCGEN_EXECUTABLE)
+        # The Doxyfile wants the path to the utility, not the entire path
+        # including file name
+        get_filename_component(DOXYGEN_MSCGEN_PATH
+                               "${DOXYGEN_MSCGEN_EXECUTABLE}"
+                               DIRECTORY)
+        if(WIN32)
+            file(TO_NATIVE_PATH "${DOXYGEN_MSCGEN_PATH}" DOXYGEN_MSCGEN_PATH)
+        endif()
+
+        # Create an imported target for component
+        if(NOT TARGET Doxygen::mscgen)
+            add_executable(Doxygen::mscgen IMPORTED GLOBAL)
+            set_target_properties(Doxygen::mscgen PROPERTIES
+                IMPORTED_LOCATION "${DOXYGEN_MSCGEN_EXECUTABLE}"
+            )
+        endif()
+    endif()
+
+    unset(_x86)
+endmacro()
+
+# Make sure `doxygen` is one of the components to find
+set(_Doxygen_keep_backward_compat FALSE)
+if(NOT Doxygen_FIND_COMPONENTS)
+    # Search at least for `doxygen` executable
+    set(Doxygen_FIND_COMPONENTS doxygen)
+    # Preserve backward compatibility:
+    # search for `dot` also if `DOXYGEN_SKIP_DOT` is not explicitly disable this.
+    if(NOT DOXYGEN_SKIP_DOT)
+        list(APPEND Doxygen_FIND_COMPONENTS dot)
+    endif()
+    set(_Doxygen_keep_backward_compat TRUE)
+elseif(NOT doxygen IN_LIST Doxygen_FIND_COMPONENTS)
+    list(INSERT Doxygen_FIND_COMPONENTS 0 doxygen)
+endif()
+
+#
+# Find all requested components of Doxygen...
+#
+foreach(_comp IN LISTS Doxygen_FIND_COMPONENTS)
+    if(_comp STREQUAL "doxygen")
+        _Doxygen_find_doxygen()
+    elseif(_comp STREQUAL "dia")
+        _Doxygen_find_dia()
+    elseif(_comp STREQUAL "dot")
+        _Doxygen_find_dot()
+    elseif(_comp STREQUAL "mscgen")
+        _Doxygen_find_mscgen()
+    else()
+        message(WARNING "${_comp} is not a valid Doxygen component")
+        set(Doxygen_${_comp}_FOUND FALSE)
+        continue()
+    endif()
+
+    if(TARGET Doxygen::${_comp})
+        set(Doxygen_${_comp}_FOUND TRUE)
+    else()
+        set(Doxygen_${_comp}_FOUND FALSE)
+    endif()
+endforeach()
+unset(_comp)
+
+# Verify find results
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(
+    Doxygen
+    REQUIRED_VARS DOXYGEN_EXECUTABLE
+    VERSION_VAR DOXYGEN_VERSION
+    HANDLE_COMPONENTS
+)
+
+#
+# Backwards compatibility...
+#
+if(APPLE)
+    # Restore the old app-bundle setting
+    set(CMAKE_FIND_APPBUNDLE ${TEMP_DOXYGEN_SAVE_CMAKE_FIND_APPBUNDLE})
+endif()
+
+# Maintain the _FOUND variables as "YES" or "NO" for backwards
+# compatibility. This allows people to substitute them directly into
+# Doxyfile with configure_file().
+if(DOXYGEN_FOUND)
+    set(DOXYGEN_FOUND "YES")
+else()
+    set(DOXYGEN_FOUND "NO")
+endif()
+if(_Doxygen_keep_backward_compat)
+    if(Doxygen_dot_FOUND)
+        set(DOXYGEN_DOT_FOUND "YES")
+    else()
+        set(DOXYGEN_DOT_FOUND "NO")
+    endif()
+
+    # For backwards compatibility support for even older CMake versions
+    set(DOXYGEN ${DOXYGEN_EXECUTABLE})
+    set(DOT ${DOXYGEN_DOT_EXECUTABLE})
+
+    # No need to keep any backward compatibility for `DOXYGEN_MSCGEN_XXX`
+    # and `DOXYGEN_DIA_XXX` since they were not supported before component
+    # support was added
+endif()
+unset(_Doxygen_keep_backward_compat)
+
+#
+# Allow full control of Doxygen from CMakeLists.txt
+#
+
+# Prepare a template Doxyfile and Doxygen's default values CMake file
+if(TARGET Doxygen::doxygen)
+    # If doxygen was found, use it to generate a minimal default Doxyfile.
+    # We will delete this file after we have finished using it below to
+    # generate the other files that doxygen_add_docs() will use.
+    set(_Doxygen_tpl "${CMAKE_BINARY_DIR}/CMakeDoxyfile.tpl")
+    execute_process(
+        COMMAND "${DOXYGEN_EXECUTABLE}" -s -g "${_Doxygen_tpl}"
+        OUTPUT_QUIET
+        RESULT_VARIABLE _Doxygen_tpl_result
+    )
+    if(_Doxygen_tpl_result)
+        message(FATAL_ERROR
+                "Unable to generate Doxyfile template: ${_Doxygen_tpl_result}")
+    elseif(NOT EXISTS "${_Doxygen_tpl}")
+        message(FATAL_ERROR
+                "Doxygen has failed to generate a Doxyfile template")
+    endif()
+
+    # Write a do-not-edit header to files we are going to generate...
+    set(_Doxygen_dne_header
+[[
+#
+# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE!
+#
+
+]]
+    )
+    # We only need one copy of these across the whole build, since their
+    # content is only dependent on the version of Doxygen being used. Therefore
+    # we always put them at the top of the build tree so that they are in a
+    # predictable location.
+    set(_doxyfile_in       "${CMAKE_BINARY_DIR}/CMakeDoxyfile.in")
+    set(_doxyfile_defaults "${CMAKE_BINARY_DIR}/CMakeDoxygenDefaults.cmake")
+
+    set(_doxyfile_in_contents "")
+    set(_doxyfile_defaults_contents "")
+
+    # Get strings containing a configuration key from the template Doxyfile
+    # we obtained from this version of Doxygen. Because some options are split
+    # across multiple lines by ending lines with backslashes, we cannot just
+    # use file(STRINGS...) with a REGEX. Instead, read lines without a REGEX
+    # so that file(STRINGS...) handles the trailing backslash as a line
+    # continuation. It stores multi-lines as lists, so we then have to replace
+    # the ";" list separator with backslashed newlines again so that we get the
+    # original content stored back as the value part.
+    file(STRINGS "${_Doxygen_tpl}" _file_lines)
+    unset(_Doxygen_tpl_params)
+    foreach(_line IN LISTS _file_lines)
+        if(_line MATCHES "([A-Z][A-Z0-9_]+)( *=)(.*)")
+            set(_key "${CMAKE_MATCH_1}")
+            set(_eql "${CMAKE_MATCH_2}")
+            set(_value "${CMAKE_MATCH_3}")
+            string(REPLACE "\\" "\\\\" _value "${_value}")
+            string(REPLACE ";" "\\\n" _value "${_value}")
+            list(APPEND _Doxygen_tpl_params "${_key}${_eql}${_value}")
+        endif()
+    endforeach()
+
+    # Build up a Doxyfile that provides @configVar@ substitutions for each
+    # Doxygen config option as well as a separate CMake script which provides
+    # the default value for each of those options if the project doesn't supply
+    # them. Each config option will support substitution of a CMake variable
+    # of the same name except with DOXYGEN_ prepended.
+    foreach(_Doxygen_param IN LISTS _Doxygen_tpl_params)
+        if(_Doxygen_param MATCHES "([A-Z][A-Z0-9_]+)( *)=( (.*))?")
+            # Ok, this is a config key with a value
+            if(CMAKE_MATCH_COUNT EQUAL 4)
+                string(APPEND _doxyfile_in_contents
+                       "${CMAKE_MATCH_1}${CMAKE_MATCH_2}= @DOXYGEN_${CMAKE_MATCH_1}@\n")
+                # Remove the backslashes we had to preserve to handle newlines
+                string(REPLACE "\\\n" "\n" _value "${CMAKE_MATCH_4}")
+                string(APPEND _doxyfile_defaults_contents
+"if(NOT DEFINED DOXYGEN_${CMAKE_MATCH_1})
+    set(DOXYGEN_${CMAKE_MATCH_1} ${_value})
+endif()
+")
+            # Ok, this is a config key with empty default value
+            elseif(CMAKE_MATCH_COUNT EQUAL 2)
+                string(APPEND _doxyfile_in_contents
+                       "${CMAKE_MATCH_1}${CMAKE_MATCH_2}= @DOXYGEN_${CMAKE_MATCH_1}@\n")
+            else()
+                message(AUTHOR_WARNING
+"Unexpected line format! Code review required!\nFault line: ${_Doxygen_param}")
+            endif()
+        else()
+            message(AUTHOR_WARNING
+"Unexpected line format! Code review required!\nFault line: ${_Doxygen_param}")
+        endif()
+    endforeach()
+    file(WRITE "${_doxyfile_defaults}" "${_Doxygen_dne_header}"
+                                       "${_doxyfile_defaults_contents}")
+    file(WRITE "${_doxyfile_in}"       "${_Doxygen_dne_header}"
+                                       "${_doxyfile_in_contents}")
+
+    # Ok, dumped defaults are not needed anymore...
+    file(REMOVE "${_Doxygen_tpl}")
+
+    unset(_Doxygen_param)
+    unset(_Doxygen_tpl_params)
+    unset(_Doxygen_dne_header)
+    unset(_Doxygen_tpl)
+
+endif()
+
+function(doxygen_quote_value VARIABLE)
+    # Quote a value of the given variable if:
+    # - VARIABLE parameter was really given
+    # - the variable it names is defined and is not present in the list
+    #   specified by DOXYGEN_VERBATIM_VARS (if set)
+    # - the value of the named variable isn't already quoted
+    # - the value has spaces
+    if(VARIABLE AND DEFINED ${VARIABLE} AND
+       NOT ${VARIABLE} MATCHES "^\".* .*\"$" AND ${VARIABLE} MATCHES " " AND
+       NOT (DEFINED DOXYGEN_VERBATIM_VARS AND
+            "${VARIABLE}" IN_LIST DOXYGEN_VERBATIM_VARS))
+        set(${VARIABLE} "\"${${VARIABLE}}\"" PARENT_SCOPE)
+    endif()
+endfunction()
+
+function(doxygen_list_to_quoted_strings LIST_VARIABLE)
+    if(LIST_VARIABLE AND DEFINED ${LIST_VARIABLE})
+        unset(_inputs)
+        unset(_sep)
+        unset(_verbatim)
+        # Have to test if list items should be treated as verbatim here
+        # because we lose the variable name when we pass just one list item
+        # to doxygen_quote_value() below
+        if(DEFINED DOXYGEN_VERBATIM_VARS AND
+           "${LIST_VARIABLE}" IN_LIST DOXYGEN_VERBATIM_VARS)
+            set(_verbatim True)
+        endif()
+        foreach(_in IN LISTS ${LIST_VARIABLE})
+            if(NOT _verbatim)
+                doxygen_quote_value(_in)
+            endif()
+            string(APPEND _inputs "${_sep}${_in}")
+            set(_sep " ")
+        endforeach()
+        set(${LIST_VARIABLE} "${_inputs}" PARENT_SCOPE)
+    endif()
+endfunction()
+
+function(doxygen_add_docs targetName)
+    set(_options ALL USE_STAMP_FILE)
+    set(_one_value_args WORKING_DIRECTORY COMMENT)
+    set(_multi_value_args)
+    cmake_parse_arguments(_args
+                          "${_options}"
+                          "${_one_value_args}"
+                          "${_multi_value_args}"
+                          ${ARGN})
+
+    if(NOT _args_COMMENT)
+        set(_args_COMMENT "Generate API documentation for ${targetName}")
+    endif()
+
+    if(NOT _args_WORKING_DIRECTORY)
+        set(_args_WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
+    endif()
+
+    if(DEFINED DOXYGEN_INPUT)
+        message(WARNING
+"DOXYGEN_INPUT is set but it will be ignored. Pass the files and directories \
+directly to the doxygen_add_docs() command instead.")
+    endif()
+    set(DOXYGEN_INPUT ${_args_UNPARSED_ARGUMENTS})
+
+    if(NOT TARGET Doxygen::doxygen)
+        message(FATAL_ERROR "Doxygen was not found, needed by \
+doxygen_add_docs() for target ${targetName}")
+    endif()
+
+    # If not already defined, set some relevant defaults based on the
+    # assumption that the documentation is for the whole project. Details
+    # specified in the project() command will be used to populate a number of
+    # these defaults.
+
+    if(NOT DEFINED DOXYGEN_PROJECT_NAME)
+        # The PROJECT_NAME tag is a single word (or a sequence of words
+        # surrounded by double-quotes, unless you are using Doxywizard) that
+        # should identify the project for which the documentation is generated.
+        # This name is used in the title of most generated pages and in a few
+        # other places. The default value is: My Project.
+        set(DOXYGEN_PROJECT_NAME ${PROJECT_NAME})
+    endif()
+
+    if(NOT DEFINED DOXYGEN_PROJECT_NUMBER)
+        # The PROJECT_NUMBER tag can be used to enter a project or revision
+        # number. This could be handy for archiving the generated documentation
+        # or if some version control system is used.
+        set(DOXYGEN_PROJECT_NUMBER ${PROJECT_VERSION})
+    endif()
+
+    if(NOT DEFINED DOXYGEN_PROJECT_BRIEF)
+        # Using the PROJECT_BRIEF tag one can provide an optional one line
+        # description for a project that appears at the top of each page and
+        # should give viewer a quick idea about the purpose of the project.
+        # Keep the description short.
+        set(DOXYGEN_PROJECT_BRIEF "${PROJECT_DESCRIPTION}")
+    endif()
+
+    if(NOT DEFINED DOXYGEN_RECURSIVE)
+        # The RECURSIVE tag can be used to specify whether or not
+        # subdirectories should be searched for input files as well. CMake
+        # projects generally evolve to span multiple directories, so it makes
+        # more sense for this to be on by default. Doxygen's default value
+        # has this setting turned off, so we override it.
+        set(DOXYGEN_RECURSIVE YES)
+    endif()
+
+    if(NOT DEFINED DOXYGEN_OUTPUT_DIRECTORY)
+        # The OUTPUT_DIRECTORY tag is used to specify the (relative or
+        # absolute) path into which the generated documentation will be
+        # written. If a relative path is used, Doxygen will interpret it as
+        # being relative to the location where doxygen was started, but we need
+        # to run Doxygen in the source tree so that relative input paths work
+        # intuitively. Therefore, we ensure that the output directory is always
+        # an absolute path and if the project provided a relative path, we
+        # treat it as relative to the current BINARY directory so that output
+        # is not generated inside the source tree.
+        set(DOXYGEN_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
+    elseif(NOT IS_ABSOLUTE "${DOXYGEN_OUTPUT_DIRECTORY}")
+        get_filename_component(DOXYGEN_OUTPUT_DIRECTORY
+                               "${DOXYGEN_OUTPUT_DIRECTORY}"
+                               ABSOLUTE
+                               BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
+    endif()
+
+    if(NOT DEFINED DOXYGEN_HAVE_DOT)
+        # If you set the HAVE_DOT tag to YES then doxygen will assume the dot
+        # tool is available from the path. This tool is part of Graphviz (see:
+        # http://www.graphviz.org/), a graph visualization toolkit from AT&T
+        # and Lucent Bell Labs. The other options in this section have no
+        # effect if this option is set to NO.
+        # Doxygen's default value is: NO.
+        if(Doxygen_dot_FOUND)
+          set(DOXYGEN_HAVE_DOT "YES")
+        else()
+          set(DOXYGEN_HAVE_DOT "NO")
+        endif()
+    endif()
+
+    if(NOT DEFINED DOXYGEN_DOT_MULTI_TARGETS)
+        # Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate
+        # multiple output files in one run (i.e. multiple -o and -T options on
+        # the command line). This makes dot run faster, but since only newer
+        # versions of dot (>1.8.10) support this, Doxygen disables this feature
+        # by default.
+        # This tag requires that the tag HAVE_DOT is set to YES.
+        set(DOXYGEN_DOT_MULTI_TARGETS YES)
+    endif()
+
+    if(NOT DEFINED DOXYGEN_GENERATE_LATEX)
+        # If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX
+        # output. We only want the HTML output enabled by default, so we turn
+        # this off if the project hasn't specified it.
+        set(DOXYGEN_GENERATE_LATEX NO)
+    endif()
+
+    if(NOT DEFINED DOXYGEN_WARN_FORMAT)
+        if(CMAKE_VS_MSBUILD_COMMAND OR CMAKE_VS_DEVENV_COMMAND)
+            # The WARN_FORMAT tag determines the format of the warning messages
+            # that doxygen can produce. The string should contain the $file,
+            # $line and $text tags, which will be replaced by the file and line
+            # number from which the warning originated and the warning text.
+            # Optionally, the format may contain $version, which will be
+            # replaced by the version of the file (if it could be obtained via
+            # FILE_VERSION_FILTER).
+            # Doxygen's default value is: $file:$line: $text
+            set(DOXYGEN_WARN_FORMAT "$file($line) : $text ")
+        endif()
+    endif()
+
+    if(DEFINED DOXYGEN_WARN_LOGFILE AND NOT IS_ABSOLUTE "${DOXYGEN_WARN_LOGFILE}")
+        # The WARN_LOGFILE tag can be used to specify a file to which warning and error
+        # messages should be written. If left blank the output is written to standard
+        # error (stderr).
+        get_filename_component(DOXYGEN_WARN_LOGFILE
+                               "${DOXYGEN_WARN_LOGFILE}"
+                               ABSOLUTE
+                               BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
+    endif()
+
+    # Any files from the INPUT that match any of the EXCLUDE_PATTERNS will be
+    # excluded from the set of input files. We provide some additional patterns
+    # to prevent commonly unwanted things from CMake builds being pulled in.
+    #
+    # Note that the wildcards are matched against the file with absolute path,
+    # so to exclude all test directories for example use the pattern */test/*
+    list(
+        APPEND
+        DOXYGEN_EXCLUDE_PATTERNS
+        "*/.git/*"
+        "*/.svn/*"
+        "*/.hg/*"
+        "*/CMakeFiles/*"
+        "*/_CPack_Packages/*"
+        "DartConfiguration.tcl"
+        "CMakeLists.txt"
+        "CMakeCache.txt"
+    )
+
+    # Now bring in Doxgen's defaults for those things the project has not
+    # already set and we have not provided above
+    include("${CMAKE_BINARY_DIR}/CMakeDoxygenDefaults.cmake" OPTIONAL)
+
+    # Cleanup built HTMLs on "make clean"
+    # TODO Any other dirs?
+    if(DOXYGEN_GENERATE_HTML)
+        if(IS_ABSOLUTE "${DOXYGEN_HTML_OUTPUT}")
+            set(_args_clean_html_dir "${DOXYGEN_HTML_OUTPUT}")
+        else()
+            set(_args_clean_html_dir
+                "${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_HTML_OUTPUT}")
+        endif()
+        set_property(DIRECTORY APPEND PROPERTY
+            ADDITIONAL_CLEAN_FILES "${_args_clean_html_dir}")
+    endif()
+
+    # Build up a list of files we can identify from the inputs so we can list
+    # them as DEPENDS and SOURCES in the custom command/target (the latter
+    # makes them display in IDEs). This must be done before we transform the
+    # various DOXYGEN_... variables below because we need to process
+    # DOXYGEN_INPUT as a list first.
+    unset(_sources)
+    foreach(_item IN LISTS DOXYGEN_INPUT)
+        get_filename_component(_abs_item "${_item}" ABSOLUTE
+                               BASE_DIR "${_args_WORKING_DIRECTORY}")
+        get_source_file_property(_isGenerated "${_abs_item}" GENERATED)
+        if(_isGenerated OR
+           (EXISTS "${_abs_item}" AND
+            NOT IS_DIRECTORY "${_abs_item}" AND
+            NOT IS_SYMLINK "${_abs_item}"))
+            list(APPEND _sources "${_abs_item}")
+        elseif(_args_USE_STAMP_FILE)
+            message(FATAL_ERROR "Source does not exist or is not a file:\n"
+                "    ${_abs_item}\n"
+                "Only existing files may be specified when the "
+                "USE_STAMP_FILE option is given.")
+        endif()
+    endforeach()
+
+    # Transform known list type options into space separated strings.
+    set(_doxygen_list_options
+        ABBREVIATE_BRIEF
+        ALIASES
+        CITE_BIB_FILES
+        DIAFILE_DIRS
+        DOTFILE_DIRS
+        DOT_FONTPATH
+        ENABLED_SECTIONS
+        EXAMPLE_PATH
+        EXAMPLE_PATTERNS
+        EXCLUDE
+        EXCLUDE_PATTERNS
+        EXCLUDE_SYMBOLS
+        EXPAND_AS_DEFINED
+        EXTENSION_MAPPING
+        EXTRA_PACKAGES
+        EXTRA_SEARCH_MAPPINGS
+        FILE_PATTERNS
+        FILTER_PATTERNS
+        FILTER_SOURCE_PATTERNS
+        HTML_EXTRA_FILES
+        HTML_EXTRA_STYLESHEET
+        IGNORE_PREFIX
+        IMAGE_PATH
+        INCLUDE_FILE_PATTERNS
+        INCLUDE_PATH
+        INPUT
+        LATEX_EXTRA_FILES
+        LATEX_EXTRA_STYLESHEET
+        MATHJAX_EXTENSIONS
+        MSCFILE_DIRS
+        PLANTUML_INCLUDE_PATH
+        PREDEFINED
+        QHP_CUST_FILTER_ATTRS
+        QHP_SECT_FILTER_ATTRS
+        STRIP_FROM_INC_PATH
+        STRIP_FROM_PATH
+        TAGFILES
+        TCL_SUBST
+    )
+    foreach(_item IN LISTS _doxygen_list_options)
+        doxygen_list_to_quoted_strings(DOXYGEN_${_item})
+    endforeach()
+
+    # Transform known single value variables which may contain spaces, such as
+    # paths or description strings.
+    set(_doxygen_quoted_options
+        CHM_FILE
+        DIA_PATH
+        DOCBOOK_OUTPUT
+        DOCSET_FEEDNAME
+        DOCSET_PUBLISHER_NAME
+        DOT_FONTNAME
+        DOT_PATH
+        EXTERNAL_SEARCH_ID
+        FILE_VERSION_FILTER
+        GENERATE_TAGFILE
+        HHC_LOCATION
+        HTML_FOOTER
+        HTML_HEADER
+        HTML_OUTPUT
+        HTML_STYLESHEET
+        INPUT_FILTER
+        LATEX_FOOTER
+        LATEX_HEADER
+        LATEX_OUTPUT
+        LAYOUT_FILE
+        MAN_OUTPUT
+        MAN_SUBDIR
+        MATHJAX_CODEFILE
+        MSCGEN_PATH
+        OUTPUT_DIRECTORY
+        PERL_PATH
+        PLANTUML_JAR_PATH
+        PROJECT_BRIEF
+        PROJECT_LOGO
+        PROJECT_NAME
+        QCH_FILE
+        QHG_LOCATION
+        QHP_CUST_FILTER_NAME
+        QHP_VIRTUAL_FOLDER
+        RTF_EXTENSIONS_FILE
+        RTF_OUTPUT
+        RTF_STYLESHEET_FILE
+        SEARCHDATA_FILE
+        USE_MDFILE_AS_MAINPAGE
+        WARN_FORMAT
+        WARN_LOGFILE
+        XML_OUTPUT
+    )
+
+    # Store the unmodified value of DOXYGEN_OUTPUT_DIRECTORY prior to invoking
+    # doxygen_quote_value() below. This will mutate the string specifically for
+    # consumption by Doxygen's config file, which we do not want when we use it
+    # later in the custom target's commands.
+    set( _original_doxygen_output_dir ${DOXYGEN_OUTPUT_DIRECTORY} )
+
+    foreach(_item IN LISTS _doxygen_quoted_options)
+        doxygen_quote_value(DOXYGEN_${_item})
+    endforeach()
+
+    # Prepare doxygen configuration file
+    set(_doxyfile_template "${CMAKE_BINARY_DIR}/CMakeDoxyfile.in")
+    set(_target_doxyfile "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.${targetName}")
+    configure_file("${_doxyfile_template}" "${_target_doxyfile}")
+
+    unset(_all)
+    if(${_args_ALL})
+        set(_all ALL)
+    endif()
+
+    # Only create the stamp file if asked to. If we don't create it,
+    # the target will always be considered out-of-date.
+    if(_args_USE_STAMP_FILE)
+        set(__stamp_file "${CMAKE_CURRENT_BINARY_DIR}/${targetName}.stamp")
+        add_custom_command(
+            VERBATIM
+            OUTPUT ${__stamp_file}
+            COMMAND ${CMAKE_COMMAND} -E make_directory ${_original_doxygen_output_dir}
+            COMMAND "${DOXYGEN_EXECUTABLE}" "${_target_doxyfile}"
+            COMMAND ${CMAKE_COMMAND} -E touch ${__stamp_file}
+            WORKING_DIRECTORY "${_args_WORKING_DIRECTORY}"
+            DEPENDS "${_target_doxyfile}" ${_sources}
+            COMMENT "${_args_COMMENT}"
+        )
+        add_custom_target(${targetName} ${_all}
+            DEPENDS ${__stamp_file}
+            SOURCES ${_sources}
+        )
+        unset(__stamp_file)
+    else()
+        add_custom_target( ${targetName} ${_all} VERBATIM
+            COMMAND ${CMAKE_COMMAND} -E make_directory ${_original_doxygen_output_dir}
+            COMMAND "${DOXYGEN_EXECUTABLE}" "${_target_doxyfile}"
+            WORKING_DIRECTORY "${_args_WORKING_DIRECTORY}"
+            DEPENDS "${_target_doxyfile}" ${_sources}
+            COMMENT "${_args_COMMENT}"
+            SOURCES ${_sources}
+        )
+    endif()
+
+endfunction()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/FindEXPAT.cmake b/share/cmake-3.22/Modules/FindEXPAT.cmake
new file mode 100644
index 0000000..f9cb432
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindEXPAT.cmake
@@ -0,0 +1,83 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindEXPAT
+---------
+
+Find the native Expat headers and library.
+Expat is a stream-oriented XML parser library written in C.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.10
+
+This module defines the following :prop_tgt:`IMPORTED` targets:
+
+``EXPAT::EXPAT``
+  The Expat ``expat`` library, if found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``EXPAT_INCLUDE_DIRS``
+  where to find expat.h, etc.
+``EXPAT_LIBRARIES``
+  the libraries to link against to use Expat.
+``EXPAT_FOUND``
+  true if the Expat headers and libraries were found.
+
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
+
+pkg_check_modules(PC_EXPAT QUIET expat)
+
+# Look for the header file.
+find_path(EXPAT_INCLUDE_DIR NAMES expat.h HINTS ${PC_EXPAT_INCLUDE_DIRS})
+
+# Look for the library.
+find_library(EXPAT_LIBRARY NAMES expat libexpat NAMES_PER_DIR HINTS ${PC_EXPAT_LIBRARY_DIRS})
+
+if (EXPAT_INCLUDE_DIR AND EXISTS "${EXPAT_INCLUDE_DIR}/expat.h")
+    file(STRINGS "${EXPAT_INCLUDE_DIR}/expat.h" expat_version_str
+         REGEX "^#[\t ]*define[\t ]+XML_(MAJOR|MINOR|MICRO)_VERSION[\t ]+[0-9]+$")
+
+    unset(EXPAT_VERSION_STRING)
+    foreach(VPART MAJOR MINOR MICRO)
+        foreach(VLINE ${expat_version_str})
+            if(VLINE MATCHES "^#[\t ]*define[\t ]+XML_${VPART}_VERSION[\t ]+([0-9]+)$")
+                set(EXPAT_VERSION_PART "${CMAKE_MATCH_1}")
+                if(EXPAT_VERSION_STRING)
+                    string(APPEND EXPAT_VERSION_STRING ".${EXPAT_VERSION_PART}")
+                else()
+                    set(EXPAT_VERSION_STRING "${EXPAT_VERSION_PART}")
+                endif()
+            endif()
+        endforeach()
+    endforeach()
+endif ()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(EXPAT
+                                  REQUIRED_VARS EXPAT_LIBRARY EXPAT_INCLUDE_DIR
+                                  VERSION_VAR EXPAT_VERSION_STRING)
+
+# Copy the results to the output variables and target.
+if(EXPAT_FOUND)
+  set(EXPAT_LIBRARIES ${EXPAT_LIBRARY})
+  set(EXPAT_INCLUDE_DIRS ${EXPAT_INCLUDE_DIR})
+
+  if(NOT TARGET EXPAT::EXPAT)
+    add_library(EXPAT::EXPAT UNKNOWN IMPORTED)
+    set_target_properties(EXPAT::EXPAT PROPERTIES
+      IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+      IMPORTED_LOCATION "${EXPAT_LIBRARY}"
+      INTERFACE_INCLUDE_DIRECTORIES "${EXPAT_INCLUDE_DIRS}")
+  endif()
+endif()
+
+mark_as_advanced(EXPAT_INCLUDE_DIR EXPAT_LIBRARY)
diff --git a/share/cmake-3.22/Modules/FindEnvModules.cmake b/share/cmake-3.22/Modules/FindEnvModules.cmake
new file mode 100644
index 0000000..a4ac0b4
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindEnvModules.cmake
@@ -0,0 +1,335 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindEnvModules
+--------------
+
+.. versionadded:: 3.15
+
+Locate an environment module implementation and make commands available to
+CMake scripts to use them.  This is compatible with both Lua-based Lmod
+and TCL-based EnvironmentModules.
+
+This module is intended for the use case of setting up the compiler and library
+environment within a :ref:`CTest Script <CTest Script>` (``ctest -S``).  It can
+also be used in a :ref:`CMake Script <Script Processing Mode>` (``cmake -P``).
+
+.. note::
+
+  The loaded environment will not survive past the end of the calling process.
+  Do not use this module in project code (``CMakeLists.txt`` files) to load
+  a compiler environment; it will not be available during the build.  Instead
+  load the environment manually before running CMake or using the generated
+  build system.
+
+Example Usage
+^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+  set(CTEST_BUILD_NAME "CrayLinux-CrayPE-Cray-dynamic")
+  set(CTEST_BUILD_CONFIGURATION Release)
+  set(CTEST_BUILD_FLAGS "-k -j8")
+  set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
+
+  ...
+
+  find_package(EnvModules REQUIRED)
+
+  env_module(purge)
+  env_module(load modules)
+  env_module(load craype)
+  env_module(load PrgEnv-cray)
+  env_module(load craype-knl)
+  env_module(load cray-mpich)
+  env_module(load cray-libsci)
+
+  set(ENV{CRAYPE_LINK_TYPE} dynamic)
+
+  ...
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``EnvModules_FOUND``
+  True if a compatible environment modules framework was found.
+
+Cache Variables
+^^^^^^^^^^^^^^^
+
+The following cache variable will be set:
+
+``EnvModules_COMMAND``
+  The low level module command to use.  Currently supported
+  implementations are the Lua based Lmod and TCL based EnvironmentModules.
+
+Environment Variables
+^^^^^^^^^^^^^^^^^^^^^
+
+``ENV{MODULESHOME}``
+  Usually set by the module environment implementation, used as a hint to
+  locate the module command to execute.
+
+Provided Functions
+^^^^^^^^^^^^^^^^^^
+
+This defines the following CMake functions for interacting with environment
+modules:
+
+.. command:: env_module
+
+  Execute an aribitrary module command:
+
+  .. code-block:: cmake
+
+    env_module(cmd arg1 ... argN)
+    env_module(
+      COMMAND cmd arg1 ... argN
+      [OUTPUT_VARIABLE <out-var>]
+      [RESULT_VARIABLE <ret-var>]
+    )
+
+  The options are:
+
+  ``cmd arg1 ... argN``
+    The module sub-command and arguments to execute as if they were
+    passed directly to the module command in your shell environment.
+
+  ``OUTPUT_VARIABLE <out-var>``
+    The standard output from executing the module command.
+
+  ``RESULT_VARIABLE <ret-var>``
+    The return code from executing the module command.
+
+.. command:: env_module_swap
+
+  Swap one module for another:
+
+  .. code-block:: cmake
+
+    env_module_swap(out_mod in_mod
+      [OUTPUT_VARIABLE <out-var>]
+      [RESULT_VARIABLE <ret-var>]
+    )
+
+  This is functionally equivalent to the ``module swap out_mod in_mod`` shell
+  command.  The options are:
+
+  ``OUTPUT_VARIABLE <out-var>``
+    The standard output from executing the module command.
+
+  ``RESULT_VARIABLE <ret-var>``
+    The return code from executing the module command.
+
+.. command:: env_module_list
+
+  Retrieve the list of currently loaded modules:
+
+  .. code-block:: cmake
+
+    env_module_list(<out-var>)
+
+  This is functionally equivalent to the ``module list`` shell command.
+  The result is stored in ``<out-var>`` as a properly formatted CMake
+  :ref:`semicolon-separated list <CMake Language Lists>` variable.
+
+.. command:: env_module_avail
+
+  Retrieve the list of available modules:
+
+  .. code-block:: cmake
+
+    env_module_avail([<mod-prefix>] <out-var>)
+
+  This is functionally equivalent to the ``module avail <mod-prefix>`` shell
+  command.  The result is stored in ``<out-var>`` as a properly formatted
+  CMake :ref:`semicolon-separated list <CMake Language Lists>` variable.
+
+#]=======================================================================]
+
+function(env_module)
+  if(NOT EnvModules_COMMAND)
+    message(FATAL_ERROR "Failed to process module command.  EnvModules_COMMAND not found")
+    return()
+  endif()
+
+  set(options)
+  set(oneValueArgs OUTPUT_VARIABLE RESULT_VARIABLE)
+  set(multiValueArgs COMMAND)
+  cmake_parse_arguments(MOD_ARGS
+    "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGV}
+  )
+  if(NOT MOD_ARGS_COMMAND)
+    # If no explicit command argument was given, then treat the calling syntax
+    # as: module(cmd args...)
+    set(exec_cmd ${ARGV})
+  else()
+    set(exec_cmd ${MOD_ARGS_COMMAND})
+  endif()
+
+  if(MOD_ARGS_OUTPUT_VARIABLE)
+    set(err_var_args ERROR_VARIABLE err_var)
+  endif()
+
+  execute_process(
+    COMMAND mktemp -t module.cmake.XXXXXXXXXXXX
+    OUTPUT_VARIABLE tempfile_name
+  )
+  string(STRIP "${tempfile_name}" tempfile_name)
+
+  # If the $MODULESHOME/init/cmake file exists then assume that the CMake
+  # "shell" functionality exits
+  if(EXISTS "$ENV{MODULESHOME}/init/cmake")
+    execute_process(
+      COMMAND ${EnvModules_COMMAND} cmake ${exec_cmd}
+      OUTPUT_FILE ${tempfile_name}
+      ${err_var_args}
+      RESULT_VARIABLE ret_var
+    )
+
+  else() # fallback to the sh shell and manually convert to CMake
+    execute_process(
+      COMMAND ${EnvModules_COMMAND} sh ${exec_cmd}
+      OUTPUT_VARIABLE out_var
+      ${err_var_args}
+      RESULT_VARIABLE ret_var
+    )
+  endif()
+
+  # If we executed successfully then process and cleanup the temp file
+  if(ret_var EQUAL 0)
+    # No CMake shell so we need to process the sh output into CMake code
+    if(NOT EXISTS "$ENV{MODULESHOME}/init/cmake")
+      file(WRITE ${tempfile_name} "")
+      string(REPLACE "\n" ";" out_var "${out_var}")
+      foreach(sh_cmd IN LISTS out_var)
+        if(sh_cmd MATCHES "^ *unset *([^ ]*)")
+          set(cmake_cmd "unset(ENV{${CMAKE_MATCH_1}})")
+        elseif(sh_cmd MATCHES "^ *export *([^ ]*)")
+          set(cmake_cmd "set(ENV{${CMAKE_MATCH_1}} \"\${${CMAKE_MATCH_1}}\")")
+        elseif(sh_cmd MATCHES " *([^ =]*) *= *(.*)")
+          set(var_name "${CMAKE_MATCH_1}")
+          set(var_value "${CMAKE_MATCH_2}")
+          if(var_value MATCHES "^\"(.*[^\\])\"")
+            # If it's in quotes, take the value as is
+            set(var_value "${CMAKE_MATCH_1}")
+          else()
+            # Otherwise, strip trailing spaces
+            string(REGEX REPLACE "([^\\])? +$" "\\1" var_value "${var_value}")
+          endif()
+          string(REPLACE "\\ " " " var_value "${var_value}")
+          set(cmake_cmd "set(${var_name} \"${var_value}\")")
+        else()
+          continue()
+        endif()
+        file(APPEND ${tempfile_name} "${cmake_cmd}\n")
+      endforeach()
+    endif()
+
+    # Process the change in environment variables
+    include(${tempfile_name})
+    file(REMOVE ${tempfile_name})
+  endif()
+
+  # Push the output back out to the calling scope
+  if(MOD_ARGS_OUTPUT_VARIABLE)
+    set(${MOD_ARGS_OUTPUT_VARIABLE} "${err_var}" PARENT_SCOPE)
+  endif()
+  if(MOD_ARGS_RESULT_VARIABLE)
+    set(${MOD_ARGS_RESULT_VARIABLE} ${ret_var} PARENT_SCOPE)
+  endif()
+endfunction(env_module)
+
+#------------------------------------------------------------------------------
+function(env_module_swap out_mod in_mod)
+  set(options)
+  set(oneValueArgs OUTPUT_VARIABLE RESULT_VARIABLE)
+  set(multiValueArgs)
+
+  cmake_parse_arguments(MOD_ARGS
+    "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGV}
+  )
+
+  env_module(COMMAND -t swap ${out_mod} ${in_mod}
+    OUTPUT_VARIABLE tmp_out
+    RETURN_VARIABLE tmp_ret
+  )
+
+  if(MOD_ARGS_OUTPUT_VARIABLE)
+    set(${MOD_ARGS_OUTPUT_VARIABLE} "${err_var}" PARENT_SCOPE)
+  endif()
+  if(MOD_ARGS_RESULT_VARIABLE)
+    set(${MOD_ARGS_RESULT_VARIABLE} ${tmp_ret} PARENT_SCOPE)
+  endif()
+endfunction()
+
+#------------------------------------------------------------------------------
+function(env_module_list out_var)
+  cmake_policy(SET CMP0007 NEW)
+  env_module(COMMAND -t list OUTPUT_VARIABLE tmp_out)
+
+  # Convert output into a CMake list
+  string(REPLACE "\n" ";" ${out_var} "${tmp_out}")
+
+  # Remove title headers and empty entries
+  list(REMOVE_ITEM ${out_var} "No modules loaded")
+  if(${out_var})
+    list(FILTER ${out_var} EXCLUDE REGEX "^(.*:)?$")
+  endif()
+  list(FILTER ${out_var} EXCLUDE REGEX "^(.*:)?$")
+
+  set(${out_var} ${${out_var}} PARENT_SCOPE)
+endfunction()
+
+#------------------------------------------------------------------------------
+function(env_module_avail)
+  cmake_policy(SET CMP0007 NEW)
+
+  if(ARGC EQUAL 1)
+    set(mod_prefix)
+    set(out_var ${ARGV0})
+  elseif(ARGC EQUAL 2)
+    set(mod_prefix ${ARGV0})
+    set(out_var ${ARGV1})
+  else()
+    message(FATAL_ERROR "Usage: env_module_avail([mod_prefix] out_var)")
+  endif()
+  env_module(COMMAND -t avail ${mod_prefix} OUTPUT_VARIABLE tmp_out)
+
+  # Convert output into a CMake list
+  string(REPLACE "\n" ";" tmp_out "${tmp_out}")
+
+  set(${out_var})
+  foreach(MOD IN LISTS tmp_out)
+    # Remove directory entries and empty values
+    if(MOD MATCHES "^(.*:)?$")
+      continue()
+    endif()
+
+    # Convert default modules
+    if(MOD MATCHES "^(.*)/$" ) # "foo/"
+      list(APPEND ${out_var} ${CMAKE_MATCH_1})
+    elseif(MOD MATCHES "^((.*)/.*)\\(default\\)$") # "foo/1.2.3(default)"
+      list(APPEND ${out_var} ${CMAKE_MATCH_2})
+      list(APPEND ${out_var} ${CMAKE_MATCH_1})
+    else()
+      list(APPEND ${out_var} ${MOD})
+    endif()
+  endforeach()
+
+  set(${out_var} ${${out_var}} PARENT_SCOPE)
+endfunction()
+
+#------------------------------------------------------------------------------
+# Make sure we know where the underlying module command is
+find_program(EnvModules_COMMAND
+  NAMES lmod modulecmd
+  HINTS ENV MODULESHOME
+  PATH_SUFFIXES libexec
+)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(EnvModules DEFAULT_MSG EnvModules_COMMAND)
diff --git a/share/cmake-3.22/Modules/FindFLEX.cmake b/share/cmake-3.22/Modules/FindFLEX.cmake
new file mode 100644
index 0000000..e67e931
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindFLEX.cmake
@@ -0,0 +1,265 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindFLEX
+--------
+
+Find Fast Lexical Analyzer (Flex) executable and provides a macro
+to generate custom build rules
+
+
+
+The module defines the following variables:
+
+::
+
+  FLEX_FOUND - True is flex executable is found
+  FLEX_EXECUTABLE - the path to the flex executable
+  FLEX_VERSION - the version of flex
+  FLEX_LIBRARIES - The flex libraries
+  FLEX_INCLUDE_DIRS - The path to the flex headers
+
+
+
+The minimum required version of flex can be specified using the
+standard syntax, e.g.  :command:`find_package(FLEX 2.5.13)`
+
+
+
+If flex is found on the system, the module provides the macro:
+
+::
+
+  FLEX_TARGET(Name FlexInput FlexOutput
+              [COMPILE_FLAGS <string>]
+              [DEFINES_FILE <string>]
+              )
+
+which creates a custom command to generate the ``FlexOutput`` file from
+the ``FlexInput`` file.  Name is an alias used to get details of this custom
+command.  If ``COMPILE_FLAGS`` option is specified, the next
+parameter is added to the flex command line.
+
+.. versionadded:: 3.5
+  If flex is configured to
+  output a header file, the ``DEFINES_FILE`` option may be used to specify its
+  name.
+
+.. versionchanged:: 3.17
+  When :policy:`CMP0098` is set to ``NEW``, ``flex`` runs in the
+  :variable:`CMAKE_CURRENT_BINARY_DIR` directory.
+
+The macro defines the following variables:
+
+::
+
+  FLEX_${Name}_DEFINED - true is the macro ran successfully
+  FLEX_${Name}_OUTPUTS - the source file generated by the custom rule, an
+  alias for FlexOutput
+  FLEX_${Name}_INPUT - the flex source file, an alias for ${FlexInput}
+  FLEX_${Name}_OUTPUT_HEADER - the header flex output, if any.
+
+
+
+Flex scanners often use tokens defined by Bison: the code generated
+by Flex depends of the header generated by Bison.  This module also
+defines a macro:
+
+::
+
+  ADD_FLEX_BISON_DEPENDENCY(FlexTarget BisonTarget)
+
+which adds the required dependency between a scanner and a parser
+where ``FlexTarget`` and ``BisonTarget`` are the first parameters of
+respectively ``FLEX_TARGET`` and ``BISON_TARGET`` macros.
+
+::
+
+  ====================================================================
+  Example:
+
+
+
+::
+
+   find_package(BISON)
+   find_package(FLEX)
+
+
+
+::
+
+   BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp)
+   FLEX_TARGET(MyScanner lexer.l  ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp)
+   ADD_FLEX_BISON_DEPENDENCY(MyScanner MyParser)
+
+
+
+::
+
+   include_directories(${CMAKE_CURRENT_BINARY_DIR})
+   add_executable(Foo
+      Foo.cc
+      ${BISON_MyParser_OUTPUTS}
+      ${FLEX_MyScanner_OUTPUTS}
+   )
+   target_link_libraries(Foo ${FLEX_LIBRARIES})
+  ====================================================================
+#]=======================================================================]
+
+find_program(FLEX_EXECUTABLE NAMES flex win-flex win_flex DOC "path to the flex executable")
+mark_as_advanced(FLEX_EXECUTABLE)
+
+find_library(FL_LIBRARY NAMES fl
+  DOC "Path to the fl library")
+
+find_path(FLEX_INCLUDE_DIR FlexLexer.h
+  DOC "Path to the flex headers")
+
+mark_as_advanced(FL_LIBRARY FLEX_INCLUDE_DIR)
+
+set(FLEX_INCLUDE_DIRS ${FLEX_INCLUDE_DIR})
+set(FLEX_LIBRARIES ${FL_LIBRARY})
+
+if(FLEX_EXECUTABLE)
+
+  execute_process(COMMAND ${FLEX_EXECUTABLE} --version
+    OUTPUT_VARIABLE FLEX_version_output
+    ERROR_VARIABLE FLEX_version_error
+    RESULT_VARIABLE FLEX_version_result
+    OUTPUT_STRIP_TRAILING_WHITESPACE)
+  if(NOT ${FLEX_version_result} EQUAL 0)
+    if(FLEX_FIND_REQUIRED)
+      message(SEND_ERROR "Command \"${FLEX_EXECUTABLE} --version\" failed with output:\n${FLEX_version_output}\n${FLEX_version_error}")
+    else()
+      message("Command \"${FLEX_EXECUTABLE} --version\" failed with output:\n${FLEX_version_output}\n${FLEX_version_error}\nFLEX_VERSION will not be available")
+    endif()
+  else()
+    # older versions of flex printed "/full/path/to/executable version X.Y"
+    # newer versions use "basename(executable) X.Y"
+    get_filename_component(FLEX_EXE_NAME_WE "${FLEX_EXECUTABLE}" NAME_WE)
+    get_filename_component(FLEX_EXE_EXT "${FLEX_EXECUTABLE}" EXT)
+    string(REGEX REPLACE "^.*${FLEX_EXE_NAME_WE}(${FLEX_EXE_EXT})?\"? (version )?([0-9]+[^ ]*)( .*)?$" "\\3"
+      FLEX_VERSION "${FLEX_version_output}")
+    unset(FLEX_EXE_EXT)
+    unset(FLEX_EXE_NAME_WE)
+  endif()
+
+  #============================================================
+  # FLEX_TARGET (public macro)
+  #============================================================
+  #
+  macro(FLEX_TARGET Name Input Output)
+
+    set(FLEX_TARGET_PARAM_OPTIONS)
+    set(FLEX_TARGET_PARAM_ONE_VALUE_KEYWORDS
+      COMPILE_FLAGS
+      DEFINES_FILE
+      )
+    set(FLEX_TARGET_PARAM_MULTI_VALUE_KEYWORDS)
+
+    cmake_parse_arguments(
+      FLEX_TARGET_ARG
+      "${FLEX_TARGET_PARAM_OPTIONS}"
+      "${FLEX_TARGET_PARAM_ONE_VALUE_KEYWORDS}"
+      "${FLEX_TARGET_MULTI_VALUE_KEYWORDS}"
+      ${ARGN}
+      )
+
+    set(FLEX_TARGET_usage "FLEX_TARGET(<Name> <Input> <Output> [COMPILE_FLAGS <string>] [DEFINES_FILE <string>]")
+
+    if(NOT "${FLEX_TARGET_ARG_UNPARSED_ARGUMENTS}" STREQUAL "")
+      message(SEND_ERROR ${FLEX_TARGET_usage})
+    else()
+
+      cmake_policy(GET CMP0098 _flex_CMP0098
+          PARENT_SCOPE # undocumented, do not use outside of CMake
+        )
+      set(_flex_INPUT "${Input}")
+      if("x${_flex_CMP0098}x" STREQUAL "xNEWx")
+        set(_flex_WORKING_DIR "${CMAKE_CURRENT_BINARY_DIR}")
+        if(NOT IS_ABSOLUTE "${_flex_INPUT}")
+          set(_flex_INPUT "${CMAKE_CURRENT_SOURCE_DIR}/${_flex_INPUT}")
+        endif()
+      else()
+        set(_flex_WORKING_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
+      endif()
+      unset(_flex_CMP0098)
+
+      set(_flex_OUTPUT "${Output}")
+      if(NOT IS_ABSOLUTE ${_flex_OUTPUT})
+        set(_flex_OUTPUT "${_flex_WORKING_DIR}/${_flex_OUTPUT}")
+      endif()
+      set(_flex_TARGET_OUTPUTS "${_flex_OUTPUT}")
+
+      set(_flex_EXE_OPTS "")
+      if(NOT "${FLEX_TARGET_ARG_COMPILE_FLAGS}" STREQUAL "")
+        set(_flex_EXE_OPTS "${FLEX_TARGET_ARG_COMPILE_FLAGS}")
+        separate_arguments(_flex_EXE_OPTS)
+      endif()
+
+      set(_flex_OUTPUT_HEADER "")
+      if(NOT "${FLEX_TARGET_ARG_DEFINES_FILE}" STREQUAL "")
+        set(_flex_OUTPUT_HEADER "${FLEX_TARGET_ARG_DEFINES_FILE}")
+        if(IS_ABSOLUTE "${_flex_OUTPUT_HEADER}")
+          set(_flex_OUTPUT_HEADER_ABS "${_flex_OUTPUT_HEADER}")
+        else()
+          set(_flex_OUTPUT_HEADER_ABS "${_flex_WORKING_DIR}/${_flex_OUTPUT_HEADER}")
+        endif()
+        list(APPEND _flex_TARGET_OUTPUTS "${_flex_OUTPUT_HEADER_ABS}")
+        list(APPEND _flex_EXE_OPTS --header-file=${_flex_OUTPUT_HEADER_ABS})
+      endif()
+
+      get_filename_component(_flex_EXE_NAME_WE "${FLEX_EXECUTABLE}" NAME_WE)
+      add_custom_command(OUTPUT ${_flex_TARGET_OUTPUTS}
+        COMMAND ${FLEX_EXECUTABLE} ${_flex_EXE_OPTS} -o${_flex_OUTPUT} ${_flex_INPUT}
+        VERBATIM
+        DEPENDS ${_flex_INPUT}
+        COMMENT "[FLEX][${Name}] Building scanner with ${_flex_EXE_NAME_WE} ${FLEX_VERSION}"
+        WORKING_DIRECTORY ${_flex_WORKING_DIR})
+
+      set(FLEX_${Name}_DEFINED TRUE)
+      set(FLEX_${Name}_OUTPUTS ${_flex_TARGET_OUTPUTS})
+      set(FLEX_${Name}_INPUT ${_flex_INPUT})
+      set(FLEX_${Name}_COMPILE_FLAGS ${_flex_EXE_OPTS})
+      set(FLEX_${Name}_OUTPUT_HEADER ${_flex_OUTPUT_HEADER})
+
+      unset(_flex_EXE_NAME_WE)
+      unset(_flex_EXE_OPTS)
+      unset(_flex_INPUT)
+      unset(_flex_OUTPUT)
+      unset(_flex_OUTPUT_HEADER)
+      unset(_flex_OUTPUT_HEADER_ABS)
+      unset(_flex_TARGET_OUTPUTS)
+      unset(_flex_WORKING_DIR)
+
+    endif()
+  endmacro()
+  #============================================================
+
+
+  #============================================================
+  # ADD_FLEX_BISON_DEPENDENCY (public macro)
+  #============================================================
+  #
+  macro(ADD_FLEX_BISON_DEPENDENCY FlexTarget BisonTarget)
+
+    if(NOT FLEX_${FlexTarget}_OUTPUTS)
+      message(SEND_ERROR "Flex target `${FlexTarget}' does not exist.")
+    endif()
+
+    if(NOT BISON_${BisonTarget}_OUTPUT_HEADER)
+      message(SEND_ERROR "Bison target `${BisonTarget}' does not exist.")
+    endif()
+
+    set_source_files_properties(${FLEX_${FlexTarget}_OUTPUTS}
+      PROPERTIES OBJECT_DEPENDS ${BISON_${BisonTarget}_OUTPUT_HEADER})
+  endmacro()
+  #============================================================
+
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(FLEX REQUIRED_VARS FLEX_EXECUTABLE
+                                       VERSION_VAR FLEX_VERSION)
diff --git a/share/cmake-3.22/Modules/FindFLTK.cmake b/share/cmake-3.22/Modules/FindFLTK.cmake
new file mode 100644
index 0000000..d54d2f6
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindFLTK.cmake
@@ -0,0 +1,344 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindFLTK
+--------
+
+Find the Fast Light Toolkit (FLTK) library
+
+Input Variables
+^^^^^^^^^^^^^^^
+
+By default this module will search for all of the FLTK components and
+add them to the ``FLTK_LIBRARIES`` variable.  You can limit the components
+which get placed in ``FLTK_LIBRARIES`` by defining one or more of the
+following three options:
+
+``FLTK_SKIP_OPENGL``
+  Set to true to disable searching for the FLTK GL library
+
+``FLTK_SKIP_FORMS``
+  Set to true to disable searching for the FLTK Forms library
+
+``FLTK_SKIP_IMAGES``
+  Set to true to disable searching for the FLTK Images library
+
+FLTK is composed also by a binary tool. You can set the following option:
+
+``FLTK_SKIP_FLUID``
+  Set to true to not look for the FLUID binary
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+The following variables will be defined:
+
+``FLTK_FOUND``
+  True if all components not skipped were found
+
+``FLTK_INCLUDE_DIR``
+  Path to the include directory for FLTK header files
+
+``FLTK_LIBRARIES``
+  List of the FLTK libraries found
+
+``FLTK_FLUID_EXECUTABLE``
+  Path to the FLUID binary tool
+
+``FLTK_WRAP_UI``
+  True if FLUID is found, used to enable the FLTK_WRAP_UI command
+
+Cache Variables
+^^^^^^^^^^^^^^^
+
+The following cache variables are also available to set or use:
+
+``FLTK_BASE_LIBRARY_RELEASE``
+  The FLTK base library (optimized)
+
+``FLTK_BASE_LIBRARY_DEBUG``
+  The FLTK base library (debug)
+
+``FLTK_GL_LIBRARY_RELEASE``
+  The FLTK GL library (optimized)
+
+``FLTK_GL_LIBRARY_DEBUG``
+  The FLTK GL library (debug)
+
+``FLTK_FORMS_LIBRARY_RELEASE``
+  The FLTK Forms library (optimized)
+
+``FLTK_FORMS_LIBRARY_DEBUG``
+  The FLTK Forms library (debug)
+
+``FLTK_IMAGES_LIBRARY_RELEASE``
+  The FLTK Images protobuf library (optimized)
+
+``FLTK_IMAGES_LIBRARY_DEBUG``
+  The FLTK Images library (debug)
+
+.. versionadded:: 3.11
+  Debug and Release variants are found separately and use per-configuration
+  variables.
+#]=======================================================================]
+
+if(NOT FLTK_SKIP_OPENGL)
+  find_package(OpenGL)
+endif()
+
+#  Platform dependent libraries required by FLTK
+if(WIN32)
+  if(NOT CYGWIN)
+    if(BORLAND)
+      set( FLTK_PLATFORM_DEPENDENT_LIBS import32 )
+    else()
+      set( FLTK_PLATFORM_DEPENDENT_LIBS wsock32 comctl32 )
+    endif()
+  endif()
+endif()
+
+if(UNIX)
+  include(${CMAKE_CURRENT_LIST_DIR}/FindX11.cmake)
+  find_library(FLTK_MATH_LIBRARY m)
+  set( FLTK_PLATFORM_DEPENDENT_LIBS ${X11_LIBRARIES} ${FLTK_MATH_LIBRARY})
+endif()
+
+if(APPLE)
+  set( FLTK_PLATFORM_DEPENDENT_LIBS  "-framework Carbon -framework Cocoa -framework ApplicationServices -lz")
+endif()
+
+# If FLTK_INCLUDE_DIR is already defined we assign its value to FLTK_DIR.
+if(FLTK_INCLUDE_DIR)
+  set(FLTK_DIR ${FLTK_INCLUDE_DIR})
+endif()
+
+
+# If FLTK has been built using CMake we try to find everything directly
+set(FLTK_DIR_STRING "directory containing FLTKConfig.cmake.  This is either the root of the build tree, or PREFIX/lib/fltk for an installation.")
+
+# Search only if the location is not already known.
+if(NOT FLTK_DIR)
+  # Get the system search path as a list.
+  file(TO_CMAKE_PATH "$ENV{PATH}" FLTK_DIR_SEARCH2)
+
+  # Construct a set of paths relative to the system search path.
+  set(FLTK_DIR_SEARCH "")
+  foreach(dir ${FLTK_DIR_SEARCH2})
+    set(FLTK_DIR_SEARCH ${FLTK_DIR_SEARCH} "${dir}/../lib/fltk")
+  endforeach()
+  string(REPLACE "//" "/" FLTK_DIR_SEARCH "${FLTK_DIR_SEARCH}")
+
+  #
+  # Look for an installation or build tree.
+  #
+  find_path(FLTK_DIR FLTKConfig.cmake
+    # Look for an environment variable FLTK_DIR.
+    HINTS
+      ENV FLTK_DIR
+
+    # Look in places relative to the system executable search path.
+    ${FLTK_DIR_SEARCH}
+
+    PATH_SUFFIXES
+    fltk
+    fltk/include
+    lib/fltk
+    lib/fltk/include
+
+    # Help the user find it if we cannot.
+    DOC "The ${FLTK_DIR_STRING}"
+    )
+endif()
+
+# Check if FLTK was built using CMake
+foreach(fltk_include IN LISTS FLTK_DIR)
+  if(EXISTS "${fltk_include}/FLTKConfig.cmake")
+    set(FLTK_BUILT_WITH_CMAKE 1)
+    set(FLTK_CMAKE_PATH "${fltk_include}/FLTKConfig.cmake")
+    break()
+  endif()
+endforeach()
+
+if(FLTK_BUILT_WITH_CMAKE)
+  set(FLTK_FOUND 1)
+  include("${FLTK_CMAKE_PATH}")
+
+  # Fluid
+  if(FLUID_COMMAND)
+    set(FLTK_FLUID_EXECUTABLE ${FLUID_COMMAND} CACHE FILEPATH "Fluid executable")
+  else()
+    find_program(FLTK_FLUID_EXECUTABLE fluid PATHS
+      ${FLTK_EXECUTABLE_DIRS}
+      ${FLTK_EXECUTABLE_DIRS}/RelWithDebInfo
+      ${FLTK_EXECUTABLE_DIRS}/Debug
+      ${FLTK_EXECUTABLE_DIRS}/Release
+      NO_SYSTEM_PATH)
+  endif()
+  # mark_as_advanced(FLTK_FLUID_EXECUTABLE)
+
+  set(FLTK_INCLUDE_DIR ${FLTK_DIR})
+  link_directories(${FLTK_LIBRARY_DIRS})
+
+  set(FLTK_BASE_LIBRARY fltk)
+  set(FLTK_GL_LIBRARY fltk_gl)
+  set(FLTK_FORMS_LIBRARY fltk_forms)
+  set(FLTK_IMAGES_LIBRARY fltk_images)
+
+  # Add the extra libraries
+  load_cache(${FLTK_DIR}
+    READ_WITH_PREFIX
+    FL FLTK_USE_SYSTEM_JPEG
+    FL FLTK_USE_SYSTEM_PNG
+    FL FLTK_USE_SYSTEM_ZLIB
+    )
+
+  set(FLTK_IMAGES_LIBS "")
+  if(FLFLTK_USE_SYSTEM_JPEG)
+    set(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_jpeg)
+  endif()
+  if(FLFLTK_USE_SYSTEM_PNG)
+    set(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_png)
+  endif()
+  if(FLFLTK_USE_SYSTEM_ZLIB)
+    set(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_zlib)
+  endif()
+  set(FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}" CACHE INTERNAL
+    "Extra libraries for fltk_images library.")
+
+else()
+
+  # if FLTK was not built using CMake
+  # Find fluid executable.
+  find_program(FLTK_FLUID_EXECUTABLE fluid ${FLTK_INCLUDE_DIR}/fluid)
+
+  # Use location of fluid to help find everything else.
+  set(FLTK_INCLUDE_SEARCH_PATH "")
+  set(FLTK_LIBRARY_SEARCH_PATH "")
+  if(FLTK_FLUID_EXECUTABLE)
+    get_filename_component(FLTK_BIN_DIR "${FLTK_FLUID_EXECUTABLE}" PATH)
+    set(FLTK_INCLUDE_SEARCH_PATH ${FLTK_INCLUDE_SEARCH_PATH}
+      ${FLTK_BIN_DIR}/../include ${FLTK_BIN_DIR}/..)
+    set(FLTK_LIBRARY_SEARCH_PATH ${FLTK_LIBRARY_SEARCH_PATH}
+      ${FLTK_BIN_DIR}/../lib)
+    set(FLTK_WRAP_UI 1)
+  endif()
+
+  #
+  # Try to find FLTK include dir using fltk-config
+  #
+  if(UNIX)
+    # Use fltk-config to generate a list of possible include directories
+    find_program(FLTK_CONFIG_SCRIPT fltk-config PATHS ${FLTK_BIN_DIR})
+    if(FLTK_CONFIG_SCRIPT)
+      if(NOT FLTK_INCLUDE_DIR)
+        exec_program(${FLTK_CONFIG_SCRIPT} ARGS --cxxflags OUTPUT_VARIABLE FLTK_CXXFLAGS)
+        if(FLTK_CXXFLAGS)
+          string(REGEX MATCHALL "-I[^ ]*" _fltk_temp_dirs ${FLTK_CXXFLAGS})
+          string(REPLACE "-I" "" _fltk_temp_dirs "${_fltk_temp_dirs}")
+          foreach(_dir ${_fltk_temp_dirs})
+            string(STRIP ${_dir} _output)
+            list(APPEND _FLTK_POSSIBLE_INCLUDE_DIRS ${_output})
+          endforeach()
+        endif()
+      endif()
+    endif()
+  endif()
+
+  list(APPEND FLTK_INCLUDE_SEARCH_PATH ${_FLTK_POSSIBLE_INCLUDE_DIRS})
+
+  find_path(FLTK_INCLUDE_DIR
+      NAMES FL/Fl.h FL/Fl.H    # fltk 1.1.9 has Fl.H (#8376)
+      PATH_SUFFIXES fltk fltk/include
+      PATHS ${FLTK_INCLUDE_SEARCH_PATH})
+
+  #
+  # Try to find FLTK library
+  if(UNIX)
+    if(FLTK_CONFIG_SCRIPT)
+      exec_program(${FLTK_CONFIG_SCRIPT} ARGS --libs OUTPUT_VARIABLE _FLTK_POSSIBLE_LIBS)
+      if(_FLTK_POSSIBLE_LIBS)
+        get_filename_component(_FLTK_POSSIBLE_LIBRARY_DIR ${_FLTK_POSSIBLE_LIBS} PATH)
+      endif()
+    endif()
+  endif()
+
+  list(APPEND FLTK_LIBRARY_SEARCH_PATH ${FLTK_INCLUDE_DIR}/lib ${_FLTK_POSSIBLE_LIBRARY_DIR})
+
+  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+
+  # Allow libraries to be set manually
+  if(NOT FLTK_BASE_LIBRARY)
+      find_library(FLTK_BASE_LIBRARY_RELEASE NAMES fltk PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+      find_library(FLTK_BASE_LIBRARY_DEBUG NAMES fltkd PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+      select_library_configurations(FLTK_BASE)
+  endif()
+  if(NOT FLTK_GL_LIBRARY)
+      find_library(FLTK_GL_LIBRARY_RELEASE NAMES fltkgl fltk_gl PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+      find_library(FLTK_GL_LIBRARY_DEBUG NAMES fltkgld fltk_gld PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+      select_library_configurations(FLTK_GL)
+  endif()
+  if(NOT FLTK_FORMS_LIBRARY)
+      find_library(FLTK_FORMS_LIBRARY_RELEASE NAMES fltkforms fltk_forms PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+      find_library(FLTK_FORMS_LIBRARY_DEBUG NAMES fltkformsd fltk_formsd PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+      select_library_configurations(FLTK_FORMS)
+  endif()
+  if(NOT FLTK_IMAGES_LIBRARY)
+      find_library(FLTK_IMAGES_LIBRARY_RELEASE NAMES fltkimages fltk_images PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+      find_library(FLTK_IMAGES_LIBRARY_DEBUG NAMES fltkimagesd fltk_imagesd PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+      select_library_configurations(FLTK_IMAGES)
+  endif()
+
+  # Find the extra libraries needed for the fltk_images library.
+  if(UNIX)
+    if(FLTK_CONFIG_SCRIPT)
+      exec_program(${FLTK_CONFIG_SCRIPT} ARGS --use-images --ldflags
+        OUTPUT_VARIABLE FLTK_IMAGES_LDFLAGS)
+      set(FLTK_LIBS_EXTRACT_REGEX ".*-lfltk_images (.*) -lfltk.*")
+      if("${FLTK_IMAGES_LDFLAGS}" MATCHES "${FLTK_LIBS_EXTRACT_REGEX}")
+        string(REGEX REPLACE " +" ";" FLTK_IMAGES_LIBS "${CMAKE_MATCH_1}")
+        # The EXEC_PROGRAM will not be inherited into subdirectories from
+        # the file that originally included this module.  Save the answer.
+        set(FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}" CACHE INTERNAL
+          "Extra libraries for fltk_images library.")
+      endif()
+    endif()
+  endif()
+
+endif()
+
+# Append all of the required libraries together (by default, everything)
+set(FLTK_LIBRARIES)
+if(NOT FLTK_SKIP_IMAGES)
+  list(APPEND FLTK_LIBRARIES ${FLTK_IMAGES_LIBRARY})
+endif()
+if(NOT FLTK_SKIP_FORMS)
+  list(APPEND FLTK_LIBRARIES ${FLTK_FORMS_LIBRARY})
+endif()
+if(NOT FLTK_SKIP_OPENGL)
+  list(APPEND FLTK_LIBRARIES ${FLTK_GL_LIBRARY} ${OPENGL_gl_LIBRARY})
+  list(APPEND FLTK_INCLUDE_DIR ${OPENGL_INCLUDE_DIR})
+  list(REMOVE_DUPLICATES FLTK_INCLUDE_DIR)
+endif()
+list(APPEND FLTK_LIBRARIES ${FLTK_BASE_LIBRARY})
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+if(FLTK_SKIP_FLUID)
+  FIND_PACKAGE_HANDLE_STANDARD_ARGS(FLTK DEFAULT_MSG FLTK_LIBRARIES FLTK_INCLUDE_DIR)
+else()
+  FIND_PACKAGE_HANDLE_STANDARD_ARGS(FLTK DEFAULT_MSG FLTK_LIBRARIES FLTK_INCLUDE_DIR FLTK_FLUID_EXECUTABLE)
+endif()
+
+if(FLTK_FOUND)
+  if(APPLE)
+    set(FLTK_LIBRARIES ${FLTK_PLATFORM_DEPENDENT_LIBS} ${FLTK_LIBRARIES})
+  else()
+    set(FLTK_LIBRARIES ${FLTK_LIBRARIES} ${FLTK_PLATFORM_DEPENDENT_LIBS})
+  endif()
+
+  # The following deprecated settings are for compatibility with CMake 1.4
+  set (HAS_FLTK ${FLTK_FOUND})
+  set (FLTK_INCLUDE_PATH ${FLTK_INCLUDE_DIR})
+  set (FLTK_FLUID_EXE ${FLTK_FLUID_EXECUTABLE})
+  set (FLTK_LIBRARY ${FLTK_LIBRARIES})
+endif()
diff --git a/share/cmake-3.18/Modules/FindFLTK2.cmake b/share/cmake-3.22/Modules/FindFLTK2.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindFLTK2.cmake
rename to share/cmake-3.22/Modules/FindFLTK2.cmake
diff --git a/share/cmake-3.22/Modules/FindFontconfig.cmake b/share/cmake-3.22/Modules/FindFontconfig.cmake
new file mode 100644
index 0000000..5228831
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindFontconfig.cmake
@@ -0,0 +1,103 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindFontconfig
+--------------
+
+.. versionadded:: 3.14
+
+Find Fontconfig headers and library.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+``Fontconfig::Fontconfig``
+  The Fontconfig library, if found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This will define the following variables in your project:
+
+``Fontconfig_FOUND``
+  true if (the requested version of) Fontconfig is available.
+``Fontconfig_VERSION``
+  the version of Fontconfig.
+``Fontconfig_LIBRARIES``
+  the libraries to link against to use Fontconfig.
+``Fontconfig_INCLUDE_DIRS``
+  where to find the Fontconfig headers.
+``Fontconfig_COMPILE_OPTIONS``
+  this should be passed to target_compile_options(), if the
+  target is not used for linking
+
+#]=======================================================================]
+
+
+# use pkg-config to get the directories and then use these values
+# in the FIND_PATH() and FIND_LIBRARY() calls
+find_package(PkgConfig QUIET)
+pkg_check_modules(PKG_FONTCONFIG QUIET fontconfig)
+set(Fontconfig_COMPILE_OPTIONS ${PKG_FONTCONFIG_CFLAGS_OTHER})
+set(Fontconfig_VERSION ${PKG_FONTCONFIG_VERSION})
+
+find_path( Fontconfig_INCLUDE_DIR
+  NAMES
+    fontconfig/fontconfig.h
+  HINTS
+    ${PKG_FONTCONFIG_INCLUDE_DIRS}
+    /usr/X11/include
+)
+
+find_library( Fontconfig_LIBRARY
+  NAMES
+    fontconfig
+  PATHS
+    ${PKG_FONTCONFIG_LIBRARY_DIRS}
+)
+
+if (Fontconfig_INCLUDE_DIR AND NOT Fontconfig_VERSION)
+  file(STRINGS ${Fontconfig_INCLUDE_DIR}/fontconfig/fontconfig.h _contents REGEX "^#define[ \t]+FC_[A-Z]+[ \t]+[0-9]+$")
+  unset(Fontconfig_VERSION)
+  foreach(VPART MAJOR MINOR REVISION)
+    foreach(VLINE ${_contents})
+      if(VLINE MATCHES "^#define[\t ]+FC_${VPART}[\t ]+([0-9]+)$")
+        set(Fontconfig_VERSION_PART "${CMAKE_MATCH_1}")
+        if(Fontconfig_VERSION)
+          string(APPEND Fontconfig_VERSION ".${Fontconfig_VERSION_PART}")
+        else()
+          set(Fontconfig_VERSION "${Fontconfig_VERSION_PART}")
+        endif()
+      endif()
+    endforeach()
+  endforeach()
+endif ()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Fontconfig
+  FOUND_VAR
+    Fontconfig_FOUND
+  REQUIRED_VARS
+    Fontconfig_LIBRARY
+    Fontconfig_INCLUDE_DIR
+  VERSION_VAR
+    Fontconfig_VERSION
+)
+
+
+if(Fontconfig_FOUND AND NOT TARGET Fontconfig::Fontconfig)
+  add_library(Fontconfig::Fontconfig UNKNOWN IMPORTED)
+  set_target_properties(Fontconfig::Fontconfig PROPERTIES
+    IMPORTED_LOCATION "${Fontconfig_LIBRARY}"
+    INTERFACE_COMPILE_OPTIONS "${Fontconfig_COMPILE_OPTIONS}"
+    INTERFACE_INCLUDE_DIRECTORIES "${Fontconfig_INCLUDE_DIR}"
+  )
+endif()
+
+mark_as_advanced(Fontconfig_LIBRARY Fontconfig_INCLUDE_DIR)
+
+if(Fontconfig_FOUND)
+  set(Fontconfig_LIBRARIES ${Fontconfig_LIBRARY})
+  set(Fontconfig_INCLUDE_DIRS ${Fontconfig_INCLUDE_DIR})
+endif()
diff --git a/share/cmake-3.22/Modules/FindFreetype.cmake b/share/cmake-3.22/Modules/FindFreetype.cmake
new file mode 100644
index 0000000..82885cb
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindFreetype.cmake
@@ -0,0 +1,204 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindFreetype
+------------
+
+Find the FreeType font renderer includes and library.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.10
+
+This module defines the following :prop_tgt:`IMPORTED` target:
+
+``Freetype::Freetype``
+  The Freetype ``freetype`` library, if found
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``FREETYPE_FOUND``
+  true if the Freetype headers and libraries were found
+``FREETYPE_INCLUDE_DIRS``
+  directories containing the Freetype headers. This is the
+  concatenation of the variables:
+
+  ``FREETYPE_INCLUDE_DIR_ft2build``
+    directory holding the main Freetype API configuration header
+  ``FREETYPE_INCLUDE_DIR_freetype2``
+    directory holding Freetype public headers
+``FREETYPE_LIBRARIES``
+  the library to link against
+``FREETYPE_VERSION_STRING``
+  the version of freetype found
+
+.. versionadded:: 3.7
+  Debug and Release variants are found separately.
+
+Hints
+^^^^^
+
+The user may set the environment variable ``FREETYPE_DIR`` to the root
+directory of a Freetype installation.
+#]=======================================================================]
+
+# Created by Eric Wing.
+# Modifications by Alexander Neundorf.
+# This file has been renamed to "FindFreetype.cmake" instead of the correct
+# "FindFreeType.cmake" in order to be compatible with the one from KDE4, Alex.
+
+# Ugh, FreeType seems to use some #include trickery which
+# makes this harder than it should be. It looks like they
+# put ft2build.h in a common/easier-to-find location which
+# then contains a #include to a more specific header in a
+# more specific location (#include <freetype/config/ftheader.h>).
+# Then from there, they need to set a bunch of #define's
+# so you can do something like:
+# #include FT_FREETYPE_H
+# Unfortunately, using CMake's mechanisms like include_directories()
+# wants explicit full paths and this trickery doesn't work too well.
+# I'm going to attempt to cut out the middleman and hope
+# everything still works.
+
+set(FREETYPE_FIND_ARGS
+  HINTS
+    ENV FREETYPE_DIR
+  PATHS
+    ENV GTKMM_BASEPATH
+    [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]
+    [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]
+)
+
+find_path(
+  FREETYPE_INCLUDE_DIR_ft2build
+  ft2build.h
+  ${FREETYPE_FIND_ARGS}
+  PATH_SUFFIXES
+    include/freetype2
+    include
+    freetype2
+)
+
+find_path(
+  FREETYPE_INCLUDE_DIR_freetype2
+  NAMES
+    freetype/config/ftheader.h
+    config/ftheader.h
+  ${FREETYPE_FIND_ARGS}
+  PATH_SUFFIXES
+    include/freetype2
+    include
+    freetype2
+)
+
+if(NOT FREETYPE_LIBRARY)
+  find_library(FREETYPE_LIBRARY_RELEASE
+    NAMES
+      freetype
+      libfreetype
+      freetype219
+    ${FREETYPE_FIND_ARGS}
+    PATH_SUFFIXES
+      lib
+  )
+  find_library(FREETYPE_LIBRARY_DEBUG
+    NAMES
+      freetyped
+      libfreetyped
+      freetype219d
+    ${FREETYPE_FIND_ARGS}
+    PATH_SUFFIXES
+      lib
+  )
+  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+  select_library_configurations(FREETYPE)
+else()
+  # on Windows, ensure paths are in canonical format (forward slahes):
+  file(TO_CMAKE_PATH "${FREETYPE_LIBRARY}" FREETYPE_LIBRARY)
+endif()
+
+unset(FREETYPE_FIND_ARGS)
+
+# set the user variables
+if(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
+  set(FREETYPE_INCLUDE_DIRS "${FREETYPE_INCLUDE_DIR_ft2build};${FREETYPE_INCLUDE_DIR_freetype2}")
+  list(REMOVE_DUPLICATES FREETYPE_INCLUDE_DIRS)
+endif()
+set(FREETYPE_LIBRARIES "${FREETYPE_LIBRARY}")
+
+if(EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h")
+  set(FREETYPE_H "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h")
+elseif(EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype.h")
+  set(FREETYPE_H "${FREETYPE_INCLUDE_DIR_freetype2}/freetype.h")
+endif()
+
+if(FREETYPE_INCLUDE_DIR_freetype2 AND FREETYPE_H)
+  file(STRINGS "${FREETYPE_H}" freetype_version_str
+       REGEX "^#[\t ]*define[\t ]+FREETYPE_(MAJOR|MINOR|PATCH)[\t ]+[0-9]+$")
+
+  unset(FREETYPE_VERSION_STRING)
+  foreach(VPART MAJOR MINOR PATCH)
+    foreach(VLINE ${freetype_version_str})
+      if(VLINE MATCHES "^#[\t ]*define[\t ]+FREETYPE_${VPART}[\t ]+([0-9]+)$")
+        set(FREETYPE_VERSION_PART "${CMAKE_MATCH_1}")
+        if(FREETYPE_VERSION_STRING)
+          string(APPEND FREETYPE_VERSION_STRING ".${FREETYPE_VERSION_PART}")
+        else()
+          set(FREETYPE_VERSION_STRING "${FREETYPE_VERSION_PART}")
+        endif()
+        unset(FREETYPE_VERSION_PART)
+      endif()
+    endforeach()
+  endforeach()
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+find_package_handle_standard_args(
+  Freetype
+  REQUIRED_VARS
+    FREETYPE_LIBRARY
+    FREETYPE_INCLUDE_DIRS
+  VERSION_VAR
+    FREETYPE_VERSION_STRING
+)
+
+mark_as_advanced(
+  FREETYPE_INCLUDE_DIR_freetype2
+  FREETYPE_INCLUDE_DIR_ft2build
+)
+
+if(Freetype_FOUND)
+  if(NOT TARGET Freetype::Freetype)
+    add_library(Freetype::Freetype UNKNOWN IMPORTED)
+    set_target_properties(Freetype::Freetype PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${FREETYPE_INCLUDE_DIRS}")
+
+    if(FREETYPE_LIBRARY_RELEASE)
+      set_property(TARGET Freetype::Freetype APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS RELEASE)
+      set_target_properties(Freetype::Freetype PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
+        IMPORTED_LOCATION_RELEASE "${FREETYPE_LIBRARY_RELEASE}")
+    endif()
+
+    if(FREETYPE_LIBRARY_DEBUG)
+      set_property(TARGET Freetype::Freetype APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS DEBUG)
+      set_target_properties(Freetype::Freetype PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
+        IMPORTED_LOCATION_DEBUG "${FREETYPE_LIBRARY_DEBUG}")
+    endif()
+
+    if(NOT FREETYPE_LIBRARY_RELEASE AND NOT FREETYPE_LIBRARY_DEBUG)
+      set_target_properties(Freetype::Freetype PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+        IMPORTED_LOCATION "${FREETYPE_LIBRARY}")
+    endif()
+  endif()
+endif()
diff --git a/share/cmake-3.18/Modules/FindGCCXML.cmake b/share/cmake-3.22/Modules/FindGCCXML.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindGCCXML.cmake
rename to share/cmake-3.22/Modules/FindGCCXML.cmake
diff --git a/share/cmake-3.22/Modules/FindGDAL.cmake b/share/cmake-3.22/Modules/FindGDAL.cmake
new file mode 100644
index 0000000..5237e15
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindGDAL.cmake
@@ -0,0 +1,199 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindGDAL
+--------
+
+Find Geospatial Data Abstraction Library (GDAL).
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.14
+
+This module defines :prop_tgt:`IMPORTED` target ``GDAL::GDAL``
+if GDAL has been found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``GDAL_FOUND``
+  True if GDAL is found.
+``GDAL_INCLUDE_DIRS``
+  Include directories for GDAL headers.
+``GDAL_LIBRARIES``
+  Libraries to link to GDAL.
+``GDAL_VERSION``
+  .. versionadded:: 3.14
+    The version of GDAL found.
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set:
+
+``GDAL_LIBRARY``
+  The libgdal library file.
+``GDAL_INCLUDE_DIR``
+  The directory containing ``gdal.h``.
+
+Hints
+^^^^^
+
+Set ``GDAL_DIR`` or ``GDAL_ROOT`` in the environment to specify the
+GDAL installation prefix.
+
+The following variables may be set to modify the search strategy:
+
+``FindGDAL_SKIP_GDAL_CONFIG``
+  If set, ``gdal-config`` will not be used. This can be useful if there are
+  GDAL libraries built with autotools (which provide the tool) and CMake (which
+  do not) in the same environment.
+``GDAL_ADDITIONAL_LIBRARY_VERSIONS``
+  Extra versions of library names to search for.
+#]=======================================================================]
+
+# $GDALDIR is an environment variable that would
+# correspond to the ./configure --prefix=$GDAL_DIR
+# used in building gdal.
+#
+# Created by Eric Wing. I'm not a gdal user, but OpenSceneGraph uses it
+# for osgTerrain so I whipped this module together for completeness.
+# I actually don't know the conventions or where files are typically
+# placed in distros.
+# Any real gdal users are encouraged to correct this (but please don't
+# break the OS X framework stuff when doing so which is what usually seems
+# to happen).
+
+# This makes the presumption that you are include gdal.h like
+#
+#include "gdal.h"
+
+find_path(GDAL_INCLUDE_DIR gdal.h
+  HINTS
+    ENV GDAL_DIR
+    ENV GDAL_ROOT
+  PATH_SUFFIXES
+    include/gdal
+    include/GDAL
+    include
+  DOC "Path to the GDAL include directory"
+)
+mark_as_advanced(GDAL_INCLUDE_DIR)
+
+if(UNIX AND NOT FindGDAL_SKIP_GDAL_CONFIG)
+    # Use gdal-config to obtain the library version (this should hopefully
+    # allow us to -lgdal1.x.y where x.y are correct version)
+    # For some reason, libgdal development packages do not contain
+    # libgdal.so...
+    find_program(GDAL_CONFIG gdal-config
+        HINTS
+          ENV GDAL_DIR
+          ENV GDAL_ROOT
+        PATH_SUFFIXES bin
+        DOC "Path to the gdal-config tool"
+    )
+    mark_as_advanced(GDAL_CONFIG)
+
+    if(GDAL_CONFIG)
+        execute_process(COMMAND ${GDAL_CONFIG} --libs OUTPUT_VARIABLE GDAL_CONFIG_LIBS)
+
+        if(GDAL_CONFIG_LIBS)
+            # treat the output as a command line and split it up
+            separate_arguments(args NATIVE_COMMAND "${GDAL_CONFIG_LIBS}")
+
+            # only consider libraries whose name matches this pattern
+            set(name_pattern "[gG][dD][aA][lL]")
+
+            # consider each entry as a possible library path, name, or parent directory
+            foreach(arg IN LISTS args)
+                # library name
+                if("${arg}" MATCHES "^-l(.*)$")
+                    set(lib "${CMAKE_MATCH_1}")
+
+                    # only consider libraries whose name matches the expected pattern
+                    if("${lib}" MATCHES "${name_pattern}")
+                        list(APPEND _gdal_lib "${lib}")
+                    endif()
+                # library search path
+                elseif("${arg}" MATCHES "^-L(.*)$")
+                    list(APPEND _gdal_libpath "${CMAKE_MATCH_1}")
+                # assume this is a full path to a library
+                elseif(IS_ABSOLUTE "${arg}" AND EXISTS "${arg}")
+                    # extract the file name
+                    get_filename_component(lib "${arg}" NAME)
+
+                    # only consider libraries whose name matches the expected pattern
+                    if(NOT "${lib}" MATCHES "${name_pattern}")
+                        continue()
+                    endif()
+
+                    # extract the file directory
+                    get_filename_component(dir "${arg}" DIRECTORY)
+
+                    # remove library prefixes/suffixes
+                    string(REGEX REPLACE "^(${CMAKE_SHARED_LIBRARY_PREFIX}|${CMAKE_STATIC_LIBRARY_PREFIX})" "" lib "${lib}")
+                    string(REGEX REPLACE "(${CMAKE_SHARED_LIBRARY_SUFFIX}|${CMAKE_STATIC_LIBRARY_SUFFIX})$" "" lib "${lib}")
+
+                    # use the file name and directory as hints
+                    list(APPEND _gdal_libpath "${dir}")
+                    list(APPEND _gdal_lib "${lib}")
+                endif()
+            endforeach()
+        endif()
+    endif()
+endif()
+
+# GDAL name its library when built with CMake as `gdal${major}${minor}`.
+set(_gdal_versions
+    ${GDAL_ADDITIONAL_LIBRARY_VERSIONS} 3.0 2.4 2.3 2.2 2.1 2.0 1.11 1.10 1.9 1.8 1.7 1.6 1.5 1.4 1.3 1.2)
+
+set(_gdal_libnames)
+foreach (_gdal_version IN LISTS _gdal_versions)
+    string(REPLACE "." "" _gdal_version "${_gdal_version}")
+    list(APPEND _gdal_libnames "gdal${_gdal_version}" "GDAL${_gdal_version}")
+endforeach ()
+unset(_gdal_version)
+unset(_gdal_versions)
+
+find_library(GDAL_LIBRARY
+  NAMES ${_gdal_lib} ${_gdal_libnames} gdal gdal_i gdal1.5.0 gdal1.4.0 gdal1.3.2 GDAL
+  HINTS
+     ENV GDAL_DIR
+     ENV GDAL_ROOT
+     ${_gdal_libpath}
+  PATH_SUFFIXES lib
+  DOC "Path to the GDAL library"
+)
+mark_as_advanced(GDAL_LIBRARY)
+unset(_gdal_libnames)
+unset(_gdal_lib)
+
+if (EXISTS "${GDAL_INCLUDE_DIR}/gdal_version.h")
+    file(STRINGS "${GDAL_INCLUDE_DIR}/gdal_version.h" _gdal_version
+        REGEX "GDAL_RELEASE_NAME")
+    string(REGEX REPLACE ".*\"\(.*\)\"" "\\1" GDAL_VERSION "${_gdal_version}")
+    unset(_gdal_version)
+else ()
+    set(GDAL_VERSION GDAL_VERSION-NOTFOUND)
+endif ()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GDAL
+    VERSION_VAR GDAL_VERSION
+    REQUIRED_VARS GDAL_LIBRARY GDAL_INCLUDE_DIR)
+
+if (GDAL_FOUND)
+    set(GDAL_LIBRARIES ${GDAL_LIBRARY})
+    set(GDAL_INCLUDE_DIRS ${GDAL_INCLUDE_DIR})
+
+    if (NOT TARGET GDAL::GDAL)
+        add_library(GDAL::GDAL UNKNOWN IMPORTED)
+        set_target_properties(GDAL::GDAL PROPERTIES
+            IMPORTED_LOCATION "${GDAL_LIBRARY}"
+            INTERFACE_INCLUDE_DIRECTORIES "${GDAL_INCLUDE_DIR}")
+    endif ()
+endif ()
diff --git a/share/cmake-3.22/Modules/FindGIF.cmake b/share/cmake-3.22/Modules/FindGIF.cmake
new file mode 100644
index 0000000..cea9cd8
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindGIF.cmake
@@ -0,0 +1,128 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindGIF
+-------
+
+This finds the Graphics Interchange Format (GIF) library (``giflib``)
+
+Imported targets
+^^^^^^^^^^^^^^^^
+
+This module defines the following :prop_tgt:`IMPORTED` target:
+
+``GIF::GIF``
+  The ``giflib`` library, if found.
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``GIF_FOUND``
+  If false, do not try to use GIF.
+``GIF_INCLUDE_DIRS``
+  where to find gif_lib.h, etc.
+``GIF_LIBRARIES``
+  the libraries needed to use GIF.
+``GIF_VERSION``
+  3, 4 or a full version string (eg 5.1.4) for versions >= 4.1.6.
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set:
+
+``GIF_INCLUDE_DIR``
+  where to find the GIF headers.
+``GIF_LIBRARY``
+  where to find the GIF library.
+
+Hints
+^^^^^
+
+``GIF_DIR`` is an environment variable that would correspond to the
+``./configure --prefix=$GIF_DIR``.
+#]=======================================================================]
+
+# Created by Eric Wing.
+# Modifications by Alexander Neundorf, Ben Campbell
+
+find_path(GIF_INCLUDE_DIR gif_lib.h
+  HINTS
+    ENV GIF_DIR
+  PATH_SUFFIXES include
+)
+
+# the gif library can have many names :-/
+set(POTENTIAL_GIF_LIBS gif libgif ungif libungif giflib giflib4)
+
+find_library(GIF_LIBRARY
+  NAMES ${POTENTIAL_GIF_LIBS}
+  NAMES_PER_DIR
+  HINTS
+    ENV GIF_DIR
+  PATH_SUFFIXES lib
+)
+
+# Very basic version detection.
+# The GIF_LIB_VERSION string in gif_lib.h seems to be unreliable, since it seems
+# to be always " Version 2.0, " in versions 3.x of giflib.
+# In version 4 the member UserData was added to GifFileType, so we check for this
+# one.
+# Versions after 4.1.6 define GIFLIB_MAJOR, GIFLIB_MINOR, and GIFLIB_RELEASE
+# see http://giflib.sourceforge.net/gif_lib.html#compatibility
+if(GIF_INCLUDE_DIR)
+  include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
+  include(${CMAKE_CURRENT_LIST_DIR}/CheckStructHasMember.cmake)
+  CMAKE_PUSH_CHECK_STATE()
+  set(CMAKE_REQUIRED_QUIET ${GIF_FIND_QUIETLY})
+  set(CMAKE_REQUIRED_INCLUDES "${GIF_INCLUDE_DIR}")
+
+  # Check for the specific version defines (>=4.1.6 only)
+  file(STRINGS ${GIF_INCLUDE_DIR}/gif_lib.h _GIF_DEFS REGEX "^[ \t]*#define[ \t]+GIFLIB_(MAJOR|MINOR|RELEASE)")
+  if(_GIF_DEFS)
+    # yay - got exact version info
+    string(REGEX REPLACE ".*GIFLIB_MAJOR ([0-9]+).*" "\\1" _GIF_MAJ "${_GIF_DEFS}")
+    string(REGEX REPLACE ".*GIFLIB_MINOR ([0-9]+).*" "\\1" _GIF_MIN "${_GIF_DEFS}")
+    string(REGEX REPLACE ".*GIFLIB_RELEASE ([0-9]+).*" "\\1" _GIF_REL "${_GIF_DEFS}")
+    set(GIF_VERSION "${_GIF_MAJ}.${_GIF_MIN}.${_GIF_REL}")
+  else()
+    # use UserData field to sniff version instead
+    CHECK_STRUCT_HAS_MEMBER(GifFileType UserData gif_lib.h GIF_GifFileType_UserData )
+    if(GIF_GifFileType_UserData)
+      set(GIF_VERSION 4)
+    else()
+      set(GIF_VERSION 3)
+    endif()
+  endif()
+
+  unset(_GIF_MAJ)
+  unset(_GIF_MIN)
+  unset(_GIF_REL)
+  unset(_GIF_DEFS)
+  CMAKE_POP_CHECK_STATE()
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GIF  REQUIRED_VARS  GIF_LIBRARY  GIF_INCLUDE_DIR
+                                       VERSION_VAR GIF_VERSION )
+
+if(GIF_FOUND)
+  set(GIF_INCLUDE_DIRS "${GIF_INCLUDE_DIR}")
+  set(GIF_LIBRARIES ${GIF_LIBRARY})
+
+  if(NOT TARGET GIF::GIF)
+    add_library(GIF::GIF UNKNOWN IMPORTED)
+    set_target_properties(GIF::GIF PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${GIF_INCLUDE_DIRS}")
+    if(EXISTS "${GIF_LIBRARY}")
+      set_target_properties(GIF::GIF PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+        IMPORTED_LOCATION "${GIF_LIBRARY}")
+    endif()
+  endif()
+endif()
+
+mark_as_advanced(GIF_INCLUDE_DIR GIF_LIBRARY)
diff --git a/share/cmake-3.22/Modules/FindGLEW.cmake b/share/cmake-3.22/Modules/FindGLEW.cmake
new file mode 100644
index 0000000..b9ebe08
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindGLEW.cmake
@@ -0,0 +1,350 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindGLEW
+--------
+
+Find the OpenGL Extension Wrangler Library (GLEW)
+
+Input Variables
+^^^^^^^^^^^^^^^
+
+The following variables may be set to influence this module's behavior:
+
+``GLEW_USE_STATIC_LIBS``
+  to find and create :prop_tgt:`IMPORTED` target for static linkage.
+
+``GLEW_VERBOSE``
+  to output a detailed log of this module.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.1
+
+This module defines the following :ref:`Imported Targets <Imported Targets>`:
+
+
+``GLEW::glew``
+  The GLEW shared library.
+``GLEW::glew_s``
+  The GLEW static library, if ``GLEW_USE_STATIC_LIBS`` is set to ``TRUE``.
+``GLEW::GLEW``
+  Duplicates either ``GLEW::glew`` or ``GLEW::glew_s`` based on availability.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module defines the following variables:
+
+``GLEW_INCLUDE_DIRS``
+  include directories for GLEW
+``GLEW_LIBRARIES``
+  libraries to link against GLEW
+``GLEW_SHARED_LIBRARIES``
+  libraries to link against shared GLEW
+``GLEW_STATIC_LIBRARIES``
+  libraries to link against static GLEW
+``GLEW_FOUND``
+  true if GLEW has been found and can be used
+``GLEW_VERSION``
+  GLEW version
+``GLEW_VERSION_MAJOR``
+  GLEW major version
+``GLEW_VERSION_MINOR``
+  GLEW minor version
+``GLEW_VERSION_MICRO``
+  GLEW micro version
+
+.. versionadded:: 3.7
+  Debug and Release variants are found separately.
+
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+find_package(GLEW CONFIG QUIET)
+
+if(GLEW_FOUND)
+  find_package_handle_standard_args(GLEW DEFAULT_MSG GLEW_CONFIG)
+  return()
+endif()
+
+if(GLEW_VERBOSE)
+  message(STATUS "FindGLEW: did not find GLEW CMake config file. Searching for libraries.")
+endif()
+
+if(APPLE)
+  find_package(OpenGL QUIET)
+
+  if(OpenGL_FOUND)
+    if(GLEW_VERBOSE)
+      message(STATUS "FindGLEW: Found OpenGL Framework.")
+      message(STATUS "FindGLEW: OPENGL_LIBRARIES: ${OPENGL_LIBRARIES}")
+    endif()
+  else()
+    if(GLEW_VERBOSE)
+      message(STATUS "FindGLEW: could not find GLEW library.")
+    endif()
+    return()
+  endif()
+endif()
+
+
+function(__glew_set_find_library_suffix shared_or_static)
+  if((UNIX AND NOT APPLE) AND "${shared_or_static}" MATCHES "SHARED")
+    set(CMAKE_FIND_LIBRARY_SUFFIXES ".so" PARENT_SCOPE)
+  elseif((UNIX AND NOT APPLE) AND "${shared_or_static}" MATCHES "STATIC")
+    set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" PARENT_SCOPE)
+  elseif(APPLE AND "${shared_or_static}" MATCHES "SHARED")
+    set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib;.so" PARENT_SCOPE)
+  elseif(APPLE AND "${shared_or_static}" MATCHES "STATIC")
+    set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" PARENT_SCOPE)
+  elseif(WIN32 AND "${shared_or_static}" MATCHES "SHARED")
+    set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" PARENT_SCOPE)
+  elseif(WIN32 AND "${shared_or_static}" MATCHES "STATIC")
+    set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib;.dll.a" PARENT_SCOPE)
+  endif()
+
+  if(GLEW_VERBOSE)
+    message(STATUS "FindGLEW: CMAKE_FIND_LIBRARY_SUFFIXES for ${shared_or_static}: ${CMAKE_FIND_LIBRARY_SUFFIXES}")
+  endif()
+endfunction()
+
+
+if(GLEW_VERBOSE)
+  if(DEFINED GLEW_USE_STATIC_LIBS)
+    message(STATUS "FindGLEW: GLEW_USE_STATIC_LIBS: ${GLEW_USE_STATIC_LIBS}.")
+  else()
+    message(STATUS "FindGLEW: GLEW_USE_STATIC_LIBS is undefined. Treated as FALSE.")
+  endif()
+endif()
+
+find_path(GLEW_INCLUDE_DIR GL/glew.h)
+mark_as_advanced(GLEW_INCLUDE_DIR)
+
+set(GLEW_INCLUDE_DIRS ${GLEW_INCLUDE_DIR})
+
+if(GLEW_VERBOSE)
+  message(STATUS "FindGLEW: GLEW_INCLUDE_DIR: ${GLEW_INCLUDE_DIR}")
+  message(STATUS "FindGLEW: GLEW_INCLUDE_DIRS: ${GLEW_INCLUDE_DIRS}")
+endif()
+
+if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+  set(_arch "x64")
+else()
+  set(_arch "Win32")
+endif()
+
+set(__GLEW_CURRENT_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
+
+__glew_set_find_library_suffix(SHARED)
+
+find_library(GLEW_SHARED_LIBRARY_RELEASE
+             NAMES GLEW glew glew32
+             NAMES_PER_DIR
+             PATH_SUFFIXES lib lib64 libx32 lib/Release/${_arch}
+             PATHS ENV GLEW_ROOT)
+
+find_library(GLEW_SHARED_LIBRARY_DEBUG
+             NAMES GLEWd glewd glew32d
+             NAMES_PER_DIR
+             PATH_SUFFIXES lib lib64
+             PATHS ENV GLEW_ROOT)
+
+
+__glew_set_find_library_suffix(STATIC)
+
+find_library(GLEW_STATIC_LIBRARY_RELEASE
+             NAMES GLEW glew glew32s
+             NAMES_PER_DIR
+             PATH_SUFFIXES lib lib64 libx32 lib/Release/${_arch}
+             PATHS ENV GLEW_ROOT)
+
+find_library(GLEW_STATIC_LIBRARY_DEBUG
+             NAMES GLEWds glewds glew32ds
+             NAMES_PER_DIR
+             PATH_SUFFIXES lib lib64
+             PATHS ENV GLEW_ROOT)
+
+set(CMAKE_FIND_LIBRARY_SUFFIXES ${__GLEW_CURRENT_FIND_LIBRARY_SUFFIXES})
+unset(__GLEW_CURRENT_FIND_LIBRARY_SUFFIXES)
+
+include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+
+select_library_configurations(GLEW_SHARED)
+select_library_configurations(GLEW_STATIC)
+
+if(NOT GLEW_USE_STATIC_LIBS)
+  set(GLEW_LIBRARIES ${GLEW_SHARED_LIBRARY})
+else()
+  set(GLEW_LIBRARIES ${GLEW_STATIC_LIBRARY})
+endif()
+
+
+if(GLEW_VERBOSE)
+  message(STATUS "FindGLEW: GLEW_SHARED_LIBRARY_RELEASE: ${GLEW_SHARED_LIBRARY_RELEASE}")
+  message(STATUS "FindGLEW: GLEW_STATIC_LIBRARY_RELEASE: ${GLEW_STATIC_LIBRARY_RELEASE}")
+  message(STATUS "FindGLEW: GLEW_SHARED_LIBRARY_DEBUG: ${GLEW_SHARED_LIBRARY_DEBUG}")
+  message(STATUS "FindGLEW: GLEW_STATIC_LIBRARY_DEBUG: ${GLEW_STATIC_LIBRARY_DEBUG}")
+  message(STATUS "FindGLEW: GLEW_SHARED_LIBRARY: ${GLEW_SHARED_LIBRARY}")
+  message(STATUS "FindGLEW: GLEW_STATIC_LIBRARY: ${GLEW_STATIC_LIBRARY}")
+  message(STATUS "FindGLEW: GLEW_LIBRARIES: ${GLEW_LIBRARIES}")
+endif()
+
+
+# Read version from GL/glew.h file
+if(EXISTS "${GLEW_INCLUDE_DIR}/GL/glew.h")
+  file(STRINGS "${GLEW_INCLUDE_DIR}/GL/glew.h" _contents REGEX "^VERSION_.+ [0-9]+")
+  if(_contents)
+    string(REGEX REPLACE ".*VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" GLEW_VERSION_MAJOR "${_contents}")
+    string(REGEX REPLACE ".*VERSION_MINOR[ \t]+([0-9]+).*" "\\1" GLEW_VERSION_MINOR "${_contents}")
+    string(REGEX REPLACE ".*VERSION_MICRO[ \t]+([0-9]+).*" "\\1" GLEW_VERSION_MICRO "${_contents}")
+    set(GLEW_VERSION "${GLEW_VERSION_MAJOR}.${GLEW_VERSION_MINOR}.${GLEW_VERSION_MICRO}")
+  endif()
+endif()
+
+if(GLEW_VERBOSE)
+  message(STATUS "FindGLEW: GLEW_VERSION_MAJOR: ${GLEW_VERSION_MAJOR}")
+  message(STATUS "FindGLEW: GLEW_VERSION_MINOR: ${GLEW_VERSION_MINOR}")
+  message(STATUS "FindGLEW: GLEW_VERSION_MICRO: ${GLEW_VERSION_MICRO}")
+  message(STATUS "FindGLEW: GLEW_VERSION: ${GLEW_VERSION}")
+endif()
+
+find_package_handle_standard_args(GLEW
+                                  REQUIRED_VARS GLEW_INCLUDE_DIRS GLEW_LIBRARIES
+                                  VERSION_VAR GLEW_VERSION)
+
+if(NOT GLEW_FOUND)
+  if(GLEW_VERBOSE)
+    message(STATUS "FindGLEW: could not find GLEW library.")
+  endif()
+  return()
+endif()
+
+
+if(NOT TARGET GLEW::glew AND NOT GLEW_USE_STATIC_LIBS)
+  if(GLEW_VERBOSE)
+    message(STATUS "FindGLEW: Creating GLEW::glew imported target.")
+  endif()
+
+  add_library(GLEW::glew UNKNOWN IMPORTED)
+
+  set_target_properties(GLEW::glew
+                        PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${GLEW_INCLUDE_DIRS}")
+
+  if(APPLE)
+    set_target_properties(GLEW::glew
+                          PROPERTIES INTERFACE_LINK_LIBRARIES OpenGL::GL)
+  endif()
+
+  if(GLEW_SHARED_LIBRARY_RELEASE)
+    set_property(TARGET GLEW::glew
+                 APPEND
+                 PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+
+    set_target_properties(GLEW::glew
+                          PROPERTIES IMPORTED_LOCATION_RELEASE "${GLEW_SHARED_LIBRARY_RELEASE}")
+  endif()
+
+  if(GLEW_SHARED_LIBRARY_DEBUG)
+    set_property(TARGET GLEW::glew
+                 APPEND
+                 PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
+
+    set_target_properties(GLEW::glew
+                          PROPERTIES IMPORTED_LOCATION_DEBUG "${GLEW_SHARED_LIBRARY_DEBUG}")
+  endif()
+
+elseif(NOT TARGET GLEW::glew_s AND GLEW_USE_STATIC_LIBS)
+  if(GLEW_VERBOSE)
+    message(STATUS "FindGLEW: Creating GLEW::glew_s imported target.")
+  endif()
+
+  add_library(GLEW::glew_s UNKNOWN IMPORTED)
+
+  set_target_properties(GLEW::glew_s
+                        PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${GLEW_INCLUDE_DIRS}")
+
+  if(APPLE)
+    set_target_properties(GLEW::glew_s
+                          PROPERTIES INTERFACE_LINK_LIBRARIES OpenGL::GL)
+  endif()
+
+  if(GLEW_STATIC_LIBRARY_RELEASE)
+    set_property(TARGET GLEW::glew_s
+                 APPEND
+                 PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+
+    set_target_properties(GLEW::glew_s
+                          PROPERTIES IMPORTED_LOCATION_RELEASE "${GLEW_STATIC_LIBRARY_RELEASE}")
+  endif()
+
+  if(GLEW_STATIC_LIBRARY_DEBUG)
+    set_property(TARGET GLEW::glew_s
+                 APPEND
+                 PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
+
+    set_target_properties(GLEW::glew_s
+                          PROPERTIES IMPORTED_LOCATION_DEBUG "${GLEW_STATIC_LIBRARY_DEBUG}")
+  endif()
+endif()
+
+if(NOT TARGET GLEW::GLEW)
+  if(GLEW_VERBOSE)
+    message(STATUS "FindGLEW: Creating GLEW::GLEW imported target.")
+  endif()
+
+  add_library(GLEW::GLEW UNKNOWN IMPORTED)
+
+  set_target_properties(GLEW::GLEW
+                        PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${GLEW_INCLUDE_DIRS}")
+
+  if(APPLE)
+    set_target_properties(GLEW::GLEW
+                          PROPERTIES INTERFACE_LINK_LIBRARIES OpenGL::GL)
+  endif()
+
+  if(TARGET GLEW::glew)
+    if(GLEW_SHARED_LIBRARY_RELEASE)
+      set_property(TARGET GLEW::GLEW
+                   APPEND
+                   PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+
+      set_target_properties(GLEW::GLEW
+                            PROPERTIES IMPORTED_LOCATION_RELEASE "${GLEW_SHARED_LIBRARY_RELEASE}")
+    endif()
+
+    if(GLEW_SHARED_LIBRARY_DEBUG)
+      set_property(TARGET GLEW::GLEW
+                   APPEND
+                   PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
+
+      set_target_properties(GLEW::GLEW
+                            PROPERTIES IMPORTED_LOCATION_DEBUG "${GLEW_SHARED_LIBRARY_DEBUG}")
+    endif()
+
+  elseif(TARGET GLEW::glew_s)
+    if(GLEW_STATIC_LIBRARY_RELEASE)
+      set_property(TARGET GLEW::GLEW
+                   APPEND
+                   PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+
+      set_target_properties(GLEW::GLEW
+                            PROPERTIES IMPORTED_LOCATION_RELEASE "${GLEW_STATIC_LIBRARY_RELEASE}")
+    endif()
+
+    if(GLEW_STATIC_LIBRARY_DEBUG AND GLEW_USE_STATIC_LIBS)
+      set_property(TARGET GLEW::GLEW
+                   APPEND
+                   PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
+
+      set_target_properties(GLEW::GLEW
+                            PROPERTIES IMPORTED_LOCATION_DEBUG "${GLEW_STATIC_LIBRARY_DEBUG}")
+    endif()
+
+  elseif(GLEW_VERBOSE)
+    message(WARNING "FindGLEW: no `GLEW::glew` or `GLEW::glew_s` target was created. Something went wrong in FindGLEW target creation.")
+  endif()
+endif()
diff --git a/share/cmake-3.18/Modules/FindGLU.cmake b/share/cmake-3.22/Modules/FindGLU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindGLU.cmake
rename to share/cmake-3.22/Modules/FindGLU.cmake
diff --git a/share/cmake-3.22/Modules/FindGLUT.cmake b/share/cmake-3.22/Modules/FindGLUT.cmake
new file mode 100644
index 0000000..dd0975d
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindGLUT.cmake
@@ -0,0 +1,231 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindGLUT
+--------
+
+Find OpenGL Utility Toolkit (GLUT) library and include files.
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.1
+
+This module defines the :prop_tgt:`IMPORTED` targets:
+
+``GLUT::GLUT``
+ Defined if the system has GLUT.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module sets the following variables:
+
+::
+
+  GLUT_INCLUDE_DIR, where to find GL/glut.h, etc.
+  GLUT_LIBRARIES, the libraries to link against
+  GLUT_FOUND, If false, do not try to use GLUT.
+
+Also defined, but not for general use are:
+
+::
+
+  GLUT_glut_LIBRARY = the full path to the glut library.
+  GLUT_Xmu_LIBRARY  = the full path to the Xmu library.
+  GLUT_Xi_LIBRARY   = the full path to the Xi Library.
+
+.. versionadded:: 3.13
+  Debug and Release variants are found separately.
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+function(_add_glut_target_simple)
+  if(TARGET GLUT::GLUT)
+    return()
+  endif()
+  add_library(GLUT::GLUT INTERFACE IMPORTED)
+  if(GLUT_INCLUDE_DIRS)
+    target_include_directories(GLUT::GLUT SYSTEM
+      INTERFACE "${GLUT_INCLUDE_DIRS}")
+  endif()
+  if(GLUT_LIBRARIES)
+    target_link_libraries(GLUT::GLUT INTERFACE ${GLUT_LIBRARIES})
+  endif()
+  if(GLUT_LDFLAGS)
+    target_link_options(GLUT::GLUT INTERFACE ${GLUT_LDFLAGS})
+  endif()
+  if(GLUT_CFLAGS)
+    separate_arguments(GLUT_CFLAGS_SPLIT UNIX_COMMAND "${GLUT_CFLAGS}")
+    target_compile_options(GLUT::GLUT INTERFACE ${GLUT_CFLAGS_SPLIT})
+  endif()
+
+  set_property(TARGET GLUT::GLUT APPEND PROPERTY
+    IMPORTED_LOCATION "${GLUT_glut_LIBRARY}")
+endfunction()
+
+find_package(PkgConfig)
+if(PKG_CONFIG_FOUND)
+  pkg_check_modules(GLUT glut)
+  if(GLUT_FOUND)
+    _add_glut_target_simple()
+    FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLUT REQUIRED_VARS GLUT_FOUND)
+    return()
+  endif()
+endif()
+
+if(WIN32)
+  find_path( GLUT_INCLUDE_DIR NAMES GL/glut.h
+    PATHS  ${GLUT_ROOT_PATH}/include )
+  find_library( GLUT_glut_LIBRARY_RELEASE NAMES glut glut32 freeglut
+    PATHS
+    ${OPENGL_LIBRARY_DIR}
+    ${GLUT_ROOT_PATH}/Release
+    )
+  find_library( GLUT_glut_LIBRARY_DEBUG NAMES freeglutd
+    PATHS
+    ${OPENGL_LIBRARY_DIR}
+    ${GLUT_ROOT_PATH}/Debug
+    )
+  mark_as_advanced(GLUT_glut_LIBRARY_RELEASE GLUT_glut_LIBRARY_DEBUG)
+  select_library_configurations(GLUT_glut)
+elseif(APPLE)
+  find_path(GLUT_INCLUDE_DIR glut.h ${OPENGL_LIBRARY_DIR})
+  find_library(GLUT_glut_LIBRARY GLUT DOC "GLUT library for OSX")
+  find_library(GLUT_cocoa_LIBRARY Cocoa DOC "Cocoa framework for OSX")
+  mark_as_advanced(GLUT_glut_LIBRARY GLUT_cocoa_LIBRARY)
+
+  if(GLUT_cocoa_LIBRARY AND NOT TARGET GLUT::Cocoa)
+    add_library(GLUT::Cocoa UNKNOWN IMPORTED)
+    # Cocoa should always be a Framework, but we check to make sure.
+    if(GLUT_cocoa_LIBRARY MATCHES "/([^/]+)\\.framework$")
+      set(_glut_cocoa "${GLUT_cocoa_LIBRARY}/${CMAKE_MATCH_1}")
+      if(EXISTS "${_glut_cocoa}.tbd")
+        string(APPEND _glut_cocoa ".tbd")
+      endif()
+      set_target_properties(GLUT::Cocoa PROPERTIES
+        IMPORTED_LOCATION "${_glut_cocoa}")
+    else()
+      set_target_properties(GLUT::Cocoa PROPERTIES
+        IMPORTED_LOCATION "${GLUT_cocoa_LIBRARY}")
+    endif()
+  endif()
+else()
+  if(BEOS)
+    set(_GLUT_INC_DIR /boot/develop/headers/os/opengl)
+    set(_GLUT_glut_LIB_DIR /boot/develop/lib/x86)
+  else()
+    find_library( GLUT_Xi_LIBRARY Xi
+      /usr/openwin/lib
+      )
+    mark_as_advanced(GLUT_Xi_LIBRARY)
+
+    find_library( GLUT_Xmu_LIBRARY Xmu
+      /usr/openwin/lib
+      )
+    mark_as_advanced(GLUT_Xmu_LIBRARY)
+
+    if(GLUT_Xi_LIBRARY AND NOT TARGET GLUT::Xi)
+      add_library(GLUT::Xi UNKNOWN IMPORTED)
+      set_target_properties(GLUT::Xi PROPERTIES
+        IMPORTED_LOCATION "${GLUT_Xi_LIBRARY}")
+    endif()
+
+    if(GLUT_Xmu_LIBRARY AND NOT TARGET GLUT::Xmu)
+      add_library(GLUT::Xmu UNKNOWN IMPORTED)
+      set_target_properties(GLUT::Xmu PROPERTIES
+        IMPORTED_LOCATION "${GLUT_Xmu_LIBRARY}")
+    endif()
+
+  endif ()
+
+  find_path( GLUT_INCLUDE_DIR GL/glut.h
+    /usr/include/GL
+    /usr/openwin/share/include
+    /usr/openwin/include
+    /opt/graphics/OpenGL/include
+    /opt/graphics/OpenGL/contrib/libglut
+    ${_GLUT_INC_DIR}
+    )
+
+  find_library( GLUT_glut_LIBRARY glut
+    /usr/openwin/lib
+    ${_GLUT_glut_LIB_DIR}
+    )
+
+  unset(_GLUT_INC_DIR)
+  unset(_GLUT_glut_LIB_DIR)
+endif()
+mark_as_advanced(GLUT_glut_LIBRARY)
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLUT REQUIRED_VARS GLUT_glut_LIBRARY GLUT_INCLUDE_DIR)
+
+if (GLUT_FOUND)
+  # Is -lXi and -lXmu required on all platforms that have it?
+  # If not, we need some way to figure out what platform we are on.
+  set( GLUT_LIBRARIES
+    ${GLUT_glut_LIBRARY}
+    )
+  foreach(v GLUT_Xmu_LIBRARY GLUT_Xi_LIBRARY GLUT_cocoa_LIBRARY)
+    if(${v})
+      list(APPEND GLUT_LIBRARIES ${${v}})
+    endif()
+  endforeach()
+
+  if(NOT TARGET GLUT::GLUT)
+    add_library(GLUT::GLUT UNKNOWN IMPORTED)
+    set_target_properties(GLUT::GLUT PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${GLUT_INCLUDE_DIR}")
+    if(GLUT_glut_LIBRARY MATCHES "/([^/]+)\\.framework$")
+      set(_glut_glut "${GLUT_glut_LIBRARY}/${CMAKE_MATCH_1}")
+      if(EXISTS "${_glut_glut}.tbd")
+        string(APPEND _glut_glut ".tbd")
+      endif()
+      set_target_properties(GLUT::GLUT PROPERTIES
+        IMPORTED_LOCATION "${_glut_glut}")
+    else()
+      if(GLUT_glut_LIBRARY_RELEASE)
+        set_property(TARGET GLUT::GLUT APPEND PROPERTY
+          IMPORTED_CONFIGURATIONS RELEASE)
+        set_target_properties(GLUT::GLUT PROPERTIES
+          IMPORTED_LOCATION_RELEASE "${GLUT_glut_LIBRARY_RELEASE}")
+      endif()
+
+      if(GLUT_glut_LIBRARY_DEBUG)
+        set_property(TARGET GLUT::GLUT APPEND PROPERTY
+          IMPORTED_CONFIGURATIONS DEBUG)
+        set_target_properties(GLUT::GLUT PROPERTIES
+          IMPORTED_LOCATION_DEBUG "${GLUT_glut_LIBRARY_DEBUG}")
+      endif()
+
+      if(NOT GLUT_glut_LIBRARY_RELEASE AND NOT GLUT_glut_LIBRARY_DEBUG)
+        set_property(TARGET GLUT::GLUT APPEND PROPERTY
+          IMPORTED_LOCATION "${GLUT_glut_LIBRARY}")
+      endif()
+    endif()
+
+    if(TARGET GLUT::Xmu)
+      set_property(TARGET GLUT::GLUT APPEND
+        PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Xmu)
+    endif()
+
+    if(TARGET GLUT::Xi)
+      set_property(TARGET GLUT::GLUT APPEND
+        PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Xi)
+    endif()
+
+    if(TARGET GLUT::Cocoa)
+      set_property(TARGET GLUT::GLUT APPEND
+        PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Cocoa)
+    endif()
+  endif()
+
+  #The following deprecated settings are for backwards compatibility with CMake1.4
+  set (GLUT_LIBRARY ${GLUT_LIBRARIES})
+  set (GLUT_INCLUDE_PATH ${GLUT_INCLUDE_DIR})
+endif()
+
+mark_as_advanced(GLUT_INCLUDE_DIR)
diff --git a/share/cmake-3.22/Modules/FindGSL.cmake b/share/cmake-3.22/Modules/FindGSL.cmake
new file mode 100644
index 0000000..3d4e7f9
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindGSL.cmake
@@ -0,0 +1,231 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindGSL
+--------
+
+.. versionadded:: 3.2
+
+Find the native GNU Scientific Library (GSL) includes and libraries.
+
+The GNU Scientific Library (GSL) is a numerical library for C and C++
+programmers. It is free software under the GNU General Public
+License.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+If GSL is found, this module defines the following :prop_tgt:`IMPORTED`
+targets::
+
+ GSL::gsl      - The main GSL library.
+ GSL::gslcblas - The CBLAS support library used by GSL.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project::
+
+ GSL_FOUND          - True if GSL found on the local system
+ GSL_INCLUDE_DIRS   - Location of GSL header files.
+ GSL_LIBRARIES      - The GSL libraries.
+ GSL_VERSION        - The version of the discovered GSL install.
+
+Hints
+^^^^^
+
+Set ``GSL_ROOT_DIR`` to a directory that contains a GSL installation.
+
+This script expects to find libraries at ``$GSL_ROOT_DIR/lib`` and the GSL
+headers at ``$GSL_ROOT_DIR/include/gsl``.  The library directory may
+optionally provide Release and Debug folders. If available, the libraries
+named ``gsld``, ``gslblasd`` or ``cblasd`` are recognized as debug libraries.
+For Unix-like systems, this script will use ``$GSL_ROOT_DIR/bin/gsl-config``
+(if found) to aid in the discovery of GSL.
+
+Cache Variables
+^^^^^^^^^^^^^^^
+
+This module may set the following variables depending on platform and type
+of GSL installation discovered.  These variables may optionally be set to
+help this module find the correct files::
+
+ GSL_CBLAS_LIBRARY       - Location of the GSL CBLAS library.
+ GSL_CBLAS_LIBRARY_DEBUG - Location of the debug GSL CBLAS library (if any).
+ GSL_CONFIG_EXECUTABLE   - Location of the ``gsl-config`` script (if any).
+ GSL_LIBRARY             - Location of the GSL library.
+ GSL_LIBRARY_DEBUG       - Location of the debug GSL library (if any).
+
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+#=============================================================================
+# If the user has provided ``GSL_ROOT_DIR``, use it!  Choose items found
+# at this location over system locations.
+if( EXISTS "$ENV{GSL_ROOT_DIR}" )
+  file( TO_CMAKE_PATH "$ENV{GSL_ROOT_DIR}" GSL_ROOT_DIR )
+  set( GSL_ROOT_DIR "${GSL_ROOT_DIR}" CACHE PATH "Prefix for GSL installation." )
+endif()
+if( NOT EXISTS "${GSL_ROOT_DIR}" )
+  set( GSL_USE_PKGCONFIG ON )
+endif()
+
+#=============================================================================
+# As a first try, use the PkgConfig module.  This will work on many
+# *NIX systems.  See :module:`findpkgconfig`
+# This will return ``GSL_INCLUDEDIR`` and ``GSL_LIBDIR`` used below.
+if( GSL_USE_PKGCONFIG )
+  find_package(PkgConfig)
+  pkg_check_modules( GSL QUIET gsl )
+
+  if( EXISTS "${GSL_INCLUDEDIR}" )
+    get_filename_component( GSL_ROOT_DIR "${GSL_INCLUDEDIR}" DIRECTORY CACHE)
+  endif()
+endif()
+
+#=============================================================================
+# Set GSL_INCLUDE_DIRS and GSL_LIBRARIES. If we skipped the PkgConfig step, try
+# to find the libraries at $GSL_ROOT_DIR (if provided) or in standard system
+# locations.  These find_library and find_path calls will prefer custom
+# locations over standard locations (HINTS).  If the requested file is not found
+# at the HINTS location, standard system locations will be still be searched
+# (/usr/lib64 (Redhat), lib/i386-linux-gnu (Debian)).
+
+find_path( GSL_INCLUDE_DIR
+  NAMES gsl/gsl_sf.h
+  HINTS ${GSL_ROOT_DIR}/include ${GSL_INCLUDEDIR}
+)
+find_library( GSL_LIBRARY
+  NAMES gsl
+  HINTS ${GSL_ROOT_DIR}/lib ${GSL_LIBDIR}
+  PATH_SUFFIXES Release Debug
+)
+find_library( GSL_CBLAS_LIBRARY
+  NAMES gslcblas cblas
+  HINTS ${GSL_ROOT_DIR}/lib ${GSL_LIBDIR}
+  PATH_SUFFIXES Release Debug
+)
+# Do we also have debug versions?
+find_library( GSL_LIBRARY_DEBUG
+  NAMES gsld gsl
+  HINTS ${GSL_ROOT_DIR}/lib ${GSL_LIBDIR}
+  PATH_SUFFIXES Debug
+)
+find_library( GSL_CBLAS_LIBRARY_DEBUG
+  NAMES gslcblasd cblasd gslcblas cblas
+  HINTS ${GSL_ROOT_DIR}/lib ${GSL_LIBDIR}
+  PATH_SUFFIXES Debug
+)
+set( GSL_INCLUDE_DIRS ${GSL_INCLUDE_DIR} )
+set( GSL_LIBRARIES ${GSL_LIBRARY} ${GSL_CBLAS_LIBRARY} )
+
+# If we didn't use PkgConfig, try to find the version via gsl-config or by
+# reading gsl_version.h.
+if( NOT GSL_VERSION )
+  # 1. If gsl-config exists, query for the version.
+  find_program( GSL_CONFIG_EXECUTABLE
+    NAMES gsl-config
+    HINTS "${GSL_ROOT_DIR}/bin"
+    )
+  if( EXISTS "${GSL_CONFIG_EXECUTABLE}" )
+    execute_process(
+      COMMAND "${GSL_CONFIG_EXECUTABLE}" --version
+      OUTPUT_VARIABLE GSL_VERSION
+      OUTPUT_STRIP_TRAILING_WHITESPACE )
+  endif()
+
+  # 2. If gsl-config is not available, try looking in gsl/gsl_version.h
+  if( NOT GSL_VERSION AND EXISTS "${GSL_INCLUDE_DIRS}/gsl/gsl_version.h" )
+    file( STRINGS "${GSL_INCLUDE_DIRS}/gsl/gsl_version.h" gsl_version_h_contents REGEX "define GSL_VERSION" )
+    string( REGEX REPLACE ".*([0-9]\\.[0-9][0-9]?).*" "\\1" GSL_VERSION ${gsl_version_h_contents} )
+  endif()
+
+  # might also try scraping the directory name for a regex match "gsl-X.X"
+endif()
+
+#=============================================================================
+# handle the QUIETLY and REQUIRED arguments and set GSL_FOUND to TRUE if all
+# listed variables are TRUE
+find_package_handle_standard_args( GSL
+  FOUND_VAR
+    GSL_FOUND
+  REQUIRED_VARS
+    GSL_INCLUDE_DIR
+    GSL_LIBRARY
+    GSL_CBLAS_LIBRARY
+  VERSION_VAR
+    GSL_VERSION
+    )
+
+mark_as_advanced( GSL_ROOT_DIR GSL_VERSION GSL_LIBRARY GSL_INCLUDE_DIR
+  GSL_CBLAS_LIBRARY GSL_LIBRARY_DEBUG GSL_CBLAS_LIBRARY_DEBUG
+  GSL_USE_PKGCONFIG GSL_CONFIG )
+
+#=============================================================================
+# Register imported libraries:
+# 1. If we can find a Windows .dll file (or if we can find both Debug and
+#    Release libraries), we will set appropriate target properties for these.
+# 2. However, for most systems, we will only register the import location and
+#    include directory.
+
+# Look for dlls, or Release and Debug libraries.
+if(WIN32)
+  string( REPLACE ".lib" ".dll" GSL_LIBRARY_DLL       "${GSL_LIBRARY}" )
+  string( REPLACE ".lib" ".dll" GSL_CBLAS_LIBRARY_DLL "${GSL_CBLAS_LIBRARY}" )
+  string( REPLACE ".lib" ".dll" GSL_LIBRARY_DEBUG_DLL "${GSL_LIBRARY_DEBUG}" )
+  string( REPLACE ".lib" ".dll" GSL_CBLAS_LIBRARY_DEBUG_DLL "${GSL_CBLAS_LIBRARY_DEBUG}" )
+endif()
+
+if( GSL_FOUND AND NOT TARGET GSL::gsl )
+  if( EXISTS "${GSL_LIBRARY_DLL}" AND EXISTS "${GSL_CBLAS_LIBRARY_DLL}")
+
+    # Windows systems with dll libraries.
+    add_library( GSL::gsl      SHARED IMPORTED )
+    add_library( GSL::gslcblas SHARED IMPORTED )
+
+    # Windows with dlls, but only Release libraries.
+    set_target_properties( GSL::gslcblas PROPERTIES
+      IMPORTED_LOCATION_RELEASE         "${GSL_CBLAS_LIBRARY_DLL}"
+      IMPORTED_IMPLIB                   "${GSL_CBLAS_LIBRARY}"
+      INTERFACE_INCLUDE_DIRECTORIES     "${GSL_INCLUDE_DIRS}"
+      IMPORTED_CONFIGURATIONS           Release
+      IMPORTED_LINK_INTERFACE_LANGUAGES "C" )
+    set_target_properties( GSL::gsl PROPERTIES
+      IMPORTED_LOCATION_RELEASE         "${GSL_LIBRARY_DLL}"
+      IMPORTED_IMPLIB                   "${GSL_LIBRARY}"
+      INTERFACE_INCLUDE_DIRECTORIES     "${GSL_INCLUDE_DIRS}"
+      IMPORTED_CONFIGURATIONS           Release
+      IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+      INTERFACE_LINK_LIBRARIES          GSL::gslcblas )
+
+    # If we have both Debug and Release libraries
+    if( EXISTS "${GSL_LIBRARY_DEBUG_DLL}" AND EXISTS "${GSL_CBLAS_LIBRARY_DEBUG_DLL}")
+      set_property( TARGET GSL::gslcblas APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug )
+      set_target_properties( GSL::gslcblas PROPERTIES
+        IMPORTED_LOCATION_DEBUG           "${GSL_CBLAS_LIBRARY_DEBUG_DLL}"
+        IMPORTED_IMPLIB_DEBUG             "${GSL_CBLAS_LIBRARY_DEBUG}" )
+      set_property( TARGET GSL::gsl APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug )
+      set_target_properties( GSL::gsl PROPERTIES
+        IMPORTED_LOCATION_DEBUG           "${GSL_LIBRARY_DEBUG_DLL}"
+        IMPORTED_IMPLIB_DEBUG             "${GSL_LIBRARY_DEBUG}" )
+    endif()
+
+  else()
+
+    # For all other environments (ones without dll libraries), create
+    # the imported library targets.
+    add_library( GSL::gsl      UNKNOWN IMPORTED )
+    add_library( GSL::gslcblas UNKNOWN IMPORTED )
+    set_target_properties( GSL::gslcblas PROPERTIES
+      IMPORTED_LOCATION                 "${GSL_CBLAS_LIBRARY}"
+      INTERFACE_INCLUDE_DIRECTORIES     "${GSL_INCLUDE_DIRS}"
+      IMPORTED_LINK_INTERFACE_LANGUAGES "C" )
+    set_target_properties( GSL::gsl PROPERTIES
+      IMPORTED_LOCATION                 "${GSL_LIBRARY}"
+      INTERFACE_INCLUDE_DIRECTORIES     "${GSL_INCLUDE_DIRS}"
+      IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+      INTERFACE_LINK_LIBRARIES          GSL::gslcblas )
+  endif()
+endif()
diff --git a/share/cmake-3.18/Modules/FindGTK.cmake b/share/cmake-3.22/Modules/FindGTK.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindGTK.cmake
rename to share/cmake-3.22/Modules/FindGTK.cmake
diff --git a/share/cmake-3.22/Modules/FindGTK2.cmake b/share/cmake-3.22/Modules/FindGTK2.cmake
new file mode 100644
index 0000000..00bfc29
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindGTK2.cmake
@@ -0,0 +1,969 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindGTK2
+--------
+
+Find the GTK2 widget libraries and several of its other optional components
+like ``gtkmm``, ``glade``, and ``glademm``.
+
+Specify one or more of the following components as you call this find
+module.  See example below.
+
+* ``gtk``
+* ``gtkmm``
+* ``glade``
+* ``glademm``
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+This module defines the following :prop_tgt:`IMPORTED` targets (subject to
+component selection):
+
+``GTK2::atk``, ``GTK2::atkmm``, ``GTK2::cairo``, ``GTK2::cairomm``,
+``GTK2::gdk_pixbuf``, ``GTK2::gdk``, ``GTK2::gdkmm``, ``GTK2::gio``,
+``GTK2::giomm``, ``GTK2::glade``, ``GTK2::glademm``, ``GTK2::glib``,
+``GTK2::glibmm``, ``GTK2::gmodule``, ``GTK2::gobject``, ``GTK2::gthread``,
+``GTK2::gtk``, ``GTK2::gtkmm``, ``GTK2::harfbuzz``, ``GTK2::pango``,
+``GTK2::pangocairo``, ``GTK2::pangoft2``, ``GTK2::pangomm``,
+``GTK2::pangoxft``, ``GTK2::sigc``.
+
+.. versionadded:: 3.16.7
+  Added the ``GTK2::harfbuzz`` target.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+The following variables will be defined for your use
+
+``GTK2_FOUND``
+  Were all of your specified components found?
+``GTK2_INCLUDE_DIRS``
+  All include directories
+``GTK2_LIBRARIES``
+  All libraries
+``GTK2_TARGETS``
+  .. versionadded:: 3.5
+    All imported targets
+``GTK2_DEFINITIONS``
+  Additional compiler flags
+``GTK2_VERSION``
+  The version of GTK2 found (x.y.z)
+``GTK2_MAJOR_VERSION``
+  The major version of GTK2
+``GTK2_MINOR_VERSION``
+  The minor version of GTK2
+``GTK2_PATCH_VERSION``
+  The patch version of GTK2
+
+.. versionadded:: 3.5
+  When ``GTK2_USE_IMPORTED_TARGETS`` is set to ``TRUE``, ``GTK2_LIBRARIES``
+  will list imported targets instead of library paths.
+
+Input Variables
+^^^^^^^^^^^^^^^
+
+Optional variables you can define prior to calling this module:
+
+``GTK2_DEBUG``
+  Enables verbose debugging of the module
+``GTK2_ADDITIONAL_SUFFIXES``
+  Allows defining additional directories to search for include files
+
+Example Usage
+^^^^^^^^^^^^^
+
+Call :command:`find_package` once.  Here are some examples to pick from:
+
+Require GTK 2.6 or later:
+
+.. code-block:: cmake
+
+  find_package(GTK2 2.6 REQUIRED gtk)
+
+Require GTK 2.10 or later and Glade:
+
+.. code-block:: cmake
+
+  find_package(GTK2 2.10 REQUIRED gtk glade)
+
+Search for GTK/GTKMM 2.8 or later:
+
+.. code-block:: cmake
+
+  find_package(GTK2 2.8 COMPONENTS gtk gtkmm)
+
+Use the results:
+
+.. code-block:: cmake
+
+  if(GTK2_FOUND)
+    include_directories(${GTK2_INCLUDE_DIRS})
+    add_executable(mygui mygui.cc)
+    target_link_libraries(mygui ${GTK2_LIBRARIES})
+  endif()
+#]=======================================================================]
+
+# Version 1.6 (CMake 3.0)
+#   * Create targets for each library
+#   * Do not link libfreetype
+# Version 1.5 (CMake 2.8.12)
+#   * 14236: Detect gthread library
+#            Detect pangocairo on windows
+#            Detect pangocairo with gtk module instead of with gtkmm
+#   * 14259: Use vc100 libraries with VS 11
+#   * 14260: Export a GTK2_DEFINITIONS variable to set /vd2 when appropriate
+#            (i.e. MSVC)
+#   * Use the optimized/debug syntax for _LIBRARY and _LIBRARIES variables when
+#     appropriate. A new set of _RELEASE variables was also added.
+#   * Remove GTK2_SKIP_MARK_AS_ADVANCED option, as now the variables are
+#     marked as advanced by SelectLibraryConfigurations
+#   * Detect gmodule, pangoft2 and pangoxft libraries
+# Version 1.4 (10/4/2012) (CMake 2.8.10)
+#   * 12596: Missing paths for FindGTK2 on NetBSD
+#   * 12049: Fixed detection of GTK include files in the lib folder on
+#            multiarch systems.
+# Version 1.3 (11/9/2010) (CMake 2.8.4)
+#   * 11429: Add support for detecting GTK2 built with Visual Studio 10.
+#            Thanks to Vincent Levesque for the patch.
+# Version 1.2 (8/30/2010) (CMake 2.8.3)
+#   * Merge patch for detecting gdk-pixbuf library (split off
+#     from core GTK in 2.21).  Thanks to Vincent Untz for the patch
+#     and Ricardo Cruz for the heads up.
+# Version 1.1 (8/19/2010) (CMake 2.8.3)
+#   * Add support for detecting GTK2 under macports (thanks to Gary Kramlich)
+# Version 1.0 (8/12/2010) (CMake 2.8.3)
+#   * Add support for detecting new pangommconfig.h header file
+#     (Thanks to Sune Vuorela & the Debian Project for the patch)
+#   * Add support for detecting fontconfig.h header
+#   * Call find_package(Freetype) since it's required
+#   * Add support for allowing users to add additional library directories
+#     via the GTK2_ADDITIONAL_SUFFIXES variable (kind of a future-kludge in
+#     case the GTK developers change versions on any of the directories in the
+#     future).
+# Version 0.8 (1/4/2010)
+#   * Get module working under MacOSX fink by adding /sw/include, /sw/lib
+#     to PATHS and the gobject library
+# Version 0.7 (3/22/09)
+#   * Checked into CMake CVS
+#   * Added versioning support
+#   * Module now defaults to searching for GTK if COMPONENTS not specified.
+#   * Added HKCU prior to HKLM registry key and GTKMM specific environment
+#      variable as per mailing list discussion.
+#   * Added lib64 to include search path and a few other search paths where GTK
+#      may be installed on Unix systems.
+#   * Switched to lowercase CMake commands
+#   * Prefaced internal variables with _GTK2 to prevent collision
+#   * Changed internal macros to functions
+#   * Enhanced documentation
+# Version 0.6 (1/8/08)
+#   Added GTK2_SKIP_MARK_AS_ADVANCED option
+# Version 0.5 (12/19/08)
+#   Second release to cmake mailing list
+
+#=============================================================
+# _GTK2_GET_VERSION
+# Internal function to parse the version number in gtkversion.h
+#   _OUT_major = Major version number
+#   _OUT_minor = Minor version number
+#   _OUT_micro = Micro version number
+#   _gtkversion_hdr = Header file to parse
+#=============================================================
+
+include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+
+function(_GTK2_GET_VERSION _OUT_major _OUT_minor _OUT_micro _gtkversion_hdr)
+    file(STRINGS ${_gtkversion_hdr} _contents REGEX "#define GTK_M[A-Z]+_VERSION[ \t]+")
+    if(_contents)
+        string(REGEX REPLACE ".*#define GTK_MAJOR_VERSION[ \t]+\\(([0-9]+)\\).*" "\\1" ${_OUT_major} "${_contents}")
+        string(REGEX REPLACE ".*#define GTK_MINOR_VERSION[ \t]+\\(([0-9]+)\\).*" "\\1" ${_OUT_minor} "${_contents}")
+        string(REGEX REPLACE ".*#define GTK_MICRO_VERSION[ \t]+\\(([0-9]+)\\).*" "\\1" ${_OUT_micro} "${_contents}")
+
+        if(NOT ${_OUT_major} MATCHES "[0-9]+")
+            message(FATAL_ERROR "Version parsing failed for GTK2_MAJOR_VERSION!")
+        endif()
+        if(NOT ${_OUT_minor} MATCHES "[0-9]+")
+            message(FATAL_ERROR "Version parsing failed for GTK2_MINOR_VERSION!")
+        endif()
+        if(NOT ${_OUT_micro} MATCHES "[0-9]+")
+            message(FATAL_ERROR "Version parsing failed for GTK2_MICRO_VERSION!")
+        endif()
+
+        set(${_OUT_major} ${${_OUT_major}} PARENT_SCOPE)
+        set(${_OUT_minor} ${${_OUT_minor}} PARENT_SCOPE)
+        set(${_OUT_micro} ${${_OUT_micro}} PARENT_SCOPE)
+    else()
+        message(FATAL_ERROR "Include file ${_gtkversion_hdr} does not exist")
+    endif()
+endfunction()
+
+
+#=============================================================
+# _GTK2_SIGCXX_GET_VERSION
+# Internal function to parse the version number in
+# sigc++config.h
+#   _OUT_major = Major version number
+#   _OUT_minor = Minor version number
+#   _OUT_micro = Micro version number
+#   _sigcxxversion_hdr = Header file to parse
+#=============================================================
+
+function(_GTK2_SIGCXX_GET_VERSION _OUT_major _OUT_minor _OUT_micro _sigcxxversion_hdr)
+    file(STRINGS ${_sigcxxversion_hdr} _contents REGEX "#define SIGCXX_M[A-Z]+_VERSION[ \t]+")
+    if(_contents)
+        string(REGEX REPLACE ".*#define SIGCXX_MAJOR_VERSION[ \t]+([0-9]+).*" "\\1" ${_OUT_major} "${_contents}")
+        string(REGEX REPLACE ".*#define SIGCXX_MINOR_VERSION[ \t]+([0-9]+).*" "\\1" ${_OUT_minor} "${_contents}")
+        string(REGEX REPLACE ".*#define SIGCXX_MICRO_VERSION[ \t]+([0-9]+).*" "\\1" ${_OUT_micro} "${_contents}")
+
+        if(NOT ${_OUT_major} MATCHES "[0-9]+")
+            message(FATAL_ERROR "Version parsing failed for SIGCXX_MAJOR_VERSION!")
+        endif()
+        if(NOT ${_OUT_minor} MATCHES "[0-9]+")
+            message(FATAL_ERROR "Version parsing failed for SIGCXX_MINOR_VERSION!")
+        endif()
+        if(NOT ${_OUT_micro} MATCHES "[0-9]+")
+            message(FATAL_ERROR "Version parsing failed for SIGCXX_MICRO_VERSION!")
+        endif()
+
+        set(${_OUT_major} ${${_OUT_major}} PARENT_SCOPE)
+        set(${_OUT_minor} ${${_OUT_minor}} PARENT_SCOPE)
+        set(${_OUT_micro} ${${_OUT_micro}} PARENT_SCOPE)
+    else()
+        # The header does not have the version macros; assume it is ``0.0.0``.
+        set(${_OUT_major} 0)
+        set(${_OUT_minor} 0)
+        set(${_OUT_micro} 0)
+    endif()
+endfunction()
+
+
+#=============================================================
+# _GTK2_FIND_INCLUDE_DIR
+# Internal function to find the GTK include directories
+#   _var = variable to set (_INCLUDE_DIR is appended)
+#   _hdr = header file to look for
+#=============================================================
+function(_GTK2_FIND_INCLUDE_DIR _var _hdr)
+
+    if(GTK2_DEBUG)
+        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] "
+                       "_GTK2_FIND_INCLUDE_DIR( ${_var} ${_hdr} )")
+    endif()
+
+    set(_gtk_packages
+        # If these ever change, things will break.
+        ${GTK2_ADDITIONAL_SUFFIXES}
+        glibmm-2.4
+        glib-2.0
+        atk-1.0
+        atkmm-1.6
+        cairo
+        cairomm-1.0
+        gdk-pixbuf-2.0
+        gdkmm-2.4
+        giomm-2.4
+        gtk-2.0
+        gtkmm-2.4
+        libglade-2.0
+        libglademm-2.4
+        harfbuzz
+        pango-1.0
+        pangomm-1.4
+        sigc++-2.0
+    )
+
+    #
+    # NOTE: The following suffixes cause searching for header files in both of
+    # these directories:
+    #         /usr/include/<pkg>
+    #         /usr/lib/<pkg>/include
+    #
+
+    set(_suffixes)
+    foreach(_d ${_gtk_packages})
+        list(APPEND _suffixes ${_d})
+        list(APPEND _suffixes ${_d}/include) # for /usr/lib/gtk-2.0/include
+    endforeach()
+
+    if(GTK2_DEBUG)
+        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
+                       "include suffixes = ${_suffixes}")
+    endif()
+
+    if(CMAKE_LIBRARY_ARCHITECTURE)
+      set(_gtk2_arch_dir /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE})
+      if(GTK2_DEBUG)
+        message(STATUS "Adding ${_gtk2_arch_dir} to search path for multiarch support")
+      endif()
+    endif()
+    find_path(GTK2_${_var}_INCLUDE_DIR ${_hdr}
+        PATHS
+            ${_gtk2_arch_dir}
+            /usr/local/libx32
+            /usr/local/lib64
+            /usr/local/lib
+            /usr/libx32
+            /usr/lib64
+            /usr/lib
+            /opt/gnome/include
+            /opt/gnome/lib
+            /opt/openwin/include
+            /usr/openwin/lib
+            /sw/lib
+            /opt/local/lib
+            /usr/pkg/lib
+            /usr/pkg/include/glib
+            $ENV{GTKMM_BASEPATH}/include
+            $ENV{GTKMM_BASEPATH}/lib
+            [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/include
+            [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/lib
+            [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/include
+            [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/lib
+        PATH_SUFFIXES
+            ${_suffixes}
+    )
+    mark_as_advanced(GTK2_${_var}_INCLUDE_DIR)
+
+    if(GTK2_${_var}_INCLUDE_DIR)
+        set(GTK2_INCLUDE_DIRS ${GTK2_INCLUDE_DIRS} ${GTK2_${_var}_INCLUDE_DIR} PARENT_SCOPE)
+    endif()
+
+endfunction()
+
+#=============================================================
+# _GTK2_FIND_LIBRARY
+# Internal function to find libraries packaged with GTK2
+#   _var = library variable to create (_LIBRARY is appended)
+#=============================================================
+function(_GTK2_FIND_LIBRARY _var _lib _expand_vc _append_version)
+
+    if(GTK2_DEBUG)
+        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] "
+                       "_GTK2_FIND_LIBRARY( ${_var} ${_lib} ${_expand_vc} ${_append_version} )")
+    endif()
+
+    # Not GTK versions per se but the versions encoded into Windows
+    # import libraries (GtkMM 2.14.1 has a gtkmm-vc80-2_4.lib for example)
+    # Also the MSVC libraries use _ for . (this is handled below)
+    set(_versions 2.20 2.18 2.16 2.14 2.12
+                  2.10  2.8  2.6  2.4  2.2 2.0
+                  1.20 1.18 1.16 1.14 1.12
+                  1.10  1.8  1.6  1.4  1.2 1.0)
+
+    set(_library)
+    set(_library_d)
+
+    set(_library ${_lib})
+
+    if(_expand_vc AND MSVC)
+        # Add vc80/vc90/vc100 midfixes
+        if(MSVC_TOOLSET_VERSION LESS 110)
+            set(_library   ${_library}-vc${MSVC_TOOLSET_VERSION})
+        else()
+            # Up to gtkmm-win 2.22.0-2 there are no vc110 libraries but vc100 can be used
+            set(_library ${_library}-vc100)
+        endif()
+        set(_library_d ${_library}-d)
+    endif()
+
+    if(GTK2_DEBUG)
+        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
+                       "After midfix addition = ${_library} and ${_library_d}")
+    endif()
+
+    set(_lib_list)
+    set(_libd_list)
+    if(_append_version)
+        foreach(_ver ${_versions})
+            list(APPEND _lib_list  "${_library}-${_ver}")
+            list(APPEND _libd_list "${_library_d}-${_ver}")
+        endforeach()
+    else()
+        set(_lib_list ${_library})
+        set(_libd_list ${_library_d})
+    endif()
+
+    if(GTK2_DEBUG)
+        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
+                       "library list = ${_lib_list} and library debug list = ${_libd_list}")
+    endif()
+
+    # For some silly reason the MSVC libraries use _ instead of .
+    # in the version fields
+    if(_expand_vc AND MSVC)
+        set(_no_dots_lib_list)
+        set(_no_dots_libd_list)
+        foreach(_l ${_lib_list})
+            string(REPLACE "." "_" _no_dots_library ${_l})
+            list(APPEND _no_dots_lib_list ${_no_dots_library})
+        endforeach()
+        # And for debug
+        set(_no_dots_libsd_list)
+        foreach(_l ${_libd_list})
+            string(REPLACE "." "_" _no_dots_libraryd ${_l})
+            list(APPEND _no_dots_libd_list ${_no_dots_libraryd})
+        endforeach()
+
+        # Copy list back to original names
+        set(_lib_list ${_no_dots_lib_list})
+        set(_libd_list ${_no_dots_libd_list})
+    endif()
+
+    if(GTK2_DEBUG)
+        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
+                       "While searching for GTK2_${_var}_LIBRARY, our proposed library list is ${_lib_list}")
+    endif()
+
+    find_library(GTK2_${_var}_LIBRARY_RELEASE
+        NAMES ${_lib_list}
+        PATHS
+            /opt/gnome/lib
+            /usr/openwin/lib
+            $ENV{GTKMM_BASEPATH}/lib
+            [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/lib
+            [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/lib
+        )
+
+    if(_expand_vc AND MSVC)
+        if(GTK2_DEBUG)
+            message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
+                           "While searching for GTK2_${_var}_LIBRARY_DEBUG our proposed library list is ${_libd_list}")
+        endif()
+
+        find_library(GTK2_${_var}_LIBRARY_DEBUG
+            NAMES ${_libd_list}
+            PATHS
+            $ENV{GTKMM_BASEPATH}/lib
+            [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/lib
+            [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/lib
+        )
+    endif()
+
+    select_library_configurations(GTK2_${_var})
+
+    set(GTK2_${_var}_LIBRARY ${GTK2_${_var}_LIBRARY} PARENT_SCOPE)
+    set(GTK2_${_var}_FOUND ${GTK2_${_var}_FOUND} PARENT_SCOPE)
+
+    if(GTK2_${_var}_FOUND)
+        set(GTK2_LIBRARIES ${GTK2_LIBRARIES} ${GTK2_${_var}_LIBRARY})
+        set(GTK2_LIBRARIES ${GTK2_LIBRARIES} PARENT_SCOPE)
+    endif()
+
+    if(GTK2_DEBUG)
+        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
+                       "GTK2_${_var}_LIBRARY_RELEASE = \"${GTK2_${_var}_LIBRARY_RELEASE}\"")
+        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
+                       "GTK2_${_var}_LIBRARY_DEBUG   = \"${GTK2_${_var}_LIBRARY_DEBUG}\"")
+        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
+                       "GTK2_${_var}_LIBRARY         = \"${GTK2_${_var}_LIBRARY}\"")
+        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}]     "
+                       "GTK2_${_var}_FOUND           = \"${GTK2_${_var}_FOUND}\"")
+    endif()
+
+endfunction()
+
+
+function(_GTK2_ADD_TARGET_DEPENDS_INTERNAL _var _property)
+    if(GTK2_DEBUG)
+        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] "
+                       "_GTK2_ADD_TARGET_DEPENDS_INTERNAL( ${_var} ${_property} )")
+    endif()
+
+    string(TOLOWER "${_var}" _basename)
+
+    if (TARGET GTK2::${_basename})
+        foreach(_depend ${ARGN})
+            set(_valid_depends)
+            if (TARGET GTK2::${_depend})
+                list(APPEND _valid_depends GTK2::${_depend})
+            endif()
+            if (_valid_depends)
+                set_property(TARGET GTK2::${_basename} APPEND PROPERTY ${_property} "${_valid_depends}")
+            endif()
+            set(_valid_depends)
+        endforeach()
+    endif()
+endfunction()
+
+function(_GTK2_ADD_TARGET_DEPENDS _var)
+    if(GTK2_DEBUG)
+        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] "
+                       "_GTK2_ADD_TARGET_DEPENDS( ${_var} )")
+    endif()
+
+    string(TOLOWER "${_var}" _basename)
+
+    if(TARGET GTK2::${_basename})
+        get_target_property(_configs GTK2::${_basename} IMPORTED_CONFIGURATIONS)
+        _GTK2_ADD_TARGET_DEPENDS_INTERNAL(${_var} INTERFACE_LINK_LIBRARIES ${ARGN})
+        foreach(_config ${_configs})
+            _GTK2_ADD_TARGET_DEPENDS_INTERNAL(${_var} IMPORTED_LINK_INTERFACE_LIBRARIES_${_config} ${ARGN})
+        endforeach()
+    endif()
+endfunction()
+
+function(_GTK2_ADD_TARGET_INCLUDE_DIRS _var)
+    if(GTK2_DEBUG)
+        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] "
+                       "_GTK2_ADD_TARGET_INCLUDE_DIRS( ${_var} )")
+    endif()
+
+    string(TOLOWER "${_var}" _basename)
+
+    if(TARGET GTK2::${_basename})
+        foreach(_include ${ARGN})
+            set_property(TARGET GTK2::${_basename} APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${_include}")
+        endforeach()
+    endif()
+endfunction()
+
+#=============================================================
+# _GTK2_ADD_TARGET
+# Internal function to create targets for GTK2
+#   _var = target to create
+#=============================================================
+function(_GTK2_ADD_TARGET _var)
+    if(GTK2_DEBUG)
+        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] "
+                       "_GTK2_ADD_TARGET( ${_var} )")
+    endif()
+
+    string(TOLOWER "${_var}" _basename)
+
+    cmake_parse_arguments(_${_var} "" "" "GTK2_DEPENDS;GTK2_OPTIONAL_DEPENDS;OPTIONAL_INCLUDES" ${ARGN})
+
+    if(GTK2_${_var}_FOUND)
+        if(NOT TARGET GTK2::${_basename})
+            # Do not create the target if dependencies are missing
+            foreach(_dep ${_${_var}_GTK2_DEPENDS})
+                if(NOT TARGET GTK2::${_dep})
+                    return()
+                endif()
+            endforeach()
+
+            add_library(GTK2::${_basename} UNKNOWN IMPORTED)
+
+            if(GTK2_${_var}_LIBRARY_RELEASE)
+                set_property(TARGET GTK2::${_basename} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+                set_property(TARGET GTK2::${_basename}        PROPERTY IMPORTED_LOCATION_RELEASE "${GTK2_${_var}_LIBRARY_RELEASE}" )
+            endif()
+
+            if(GTK2_${_var}_LIBRARY_DEBUG)
+                set_property(TARGET GTK2::${_basename} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
+                set_property(TARGET GTK2::${_basename}        PROPERTY IMPORTED_LOCATION_DEBUG "${GTK2_${_var}_LIBRARY_DEBUG}" )
+            endif()
+
+            if(GTK2_${_var}_INCLUDE_DIR)
+                set_property(TARGET GTK2::${_basename} APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${GTK2_${_var}_INCLUDE_DIR}")
+            endif()
+
+            if(GTK2_${_var}CONFIG_INCLUDE_DIR AND NOT "x${GTK2_${_var}CONFIG_INCLUDE_DIR}" STREQUAL "x${GTK2_${_var}_INCLUDE_DIR}")
+                set_property(TARGET GTK2::${_basename} APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${GTK2_${_var}CONFIG_INCLUDE_DIR}")
+            endif()
+
+            if(GTK2_DEFINITIONS)
+                set_property(TARGET GTK2::${_basename} PROPERTY INTERFACE_COMPILE_DEFINITIONS "${GTK2_DEFINITIONS}")
+            endif()
+
+            if(_${_var}_GTK2_DEPENDS)
+                _GTK2_ADD_TARGET_DEPENDS(${_var} ${_${_var}_GTK2_DEPENDS} ${_${_var}_GTK2_OPTIONAL_DEPENDS})
+            endif()
+
+            if(_${_var}_OPTIONAL_INCLUDES)
+                foreach(_D ${_${_var}_OPTIONAL_INCLUDES})
+                    if(_D)
+                        _GTK2_ADD_TARGET_INCLUDE_DIRS(${_var} ${_D})
+                    endif()
+                endforeach()
+            endif()
+        endif()
+
+        set(GTK2_TARGETS ${GTK2_TARGETS} GTK2::${_basename})
+        set(GTK2_TARGETS ${GTK2_TARGETS} PARENT_SCOPE)
+
+        if(GTK2_USE_IMPORTED_TARGETS)
+            set(GTK2_${_var}_LIBRARY GTK2::${_basename} PARENT_SCOPE)
+        endif()
+
+    endif()
+endfunction()
+
+
+
+#=============================================================
+
+#
+# main()
+#
+
+set(GTK2_FOUND)
+set(GTK2_INCLUDE_DIRS)
+set(GTK2_LIBRARIES)
+set(GTK2_TARGETS)
+set(GTK2_DEFINITIONS)
+
+if(NOT GTK2_FIND_COMPONENTS)
+    # Assume they only want GTK
+    set(GTK2_FIND_COMPONENTS gtk)
+endif()
+
+#
+# If specified, enforce version number
+#
+if(GTK2_FIND_VERSION)
+    set(GTK2_FAILED_VERSION_CHECK true)
+    if(GTK2_DEBUG)
+        message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] "
+                       "Searching for version ${GTK2_FIND_VERSION}")
+    endif()
+    _GTK2_FIND_INCLUDE_DIR(GTK gtk/gtk.h)
+    if(GTK2_GTK_INCLUDE_DIR)
+        _GTK2_GET_VERSION(GTK2_MAJOR_VERSION
+                          GTK2_MINOR_VERSION
+                          GTK2_PATCH_VERSION
+                          ${GTK2_GTK_INCLUDE_DIR}/gtk/gtkversion.h)
+        set(GTK2_VERSION
+            ${GTK2_MAJOR_VERSION}.${GTK2_MINOR_VERSION}.${GTK2_PATCH_VERSION})
+        if(GTK2_FIND_VERSION_EXACT)
+            if(GTK2_VERSION VERSION_EQUAL GTK2_FIND_VERSION)
+                set(GTK2_FAILED_VERSION_CHECK false)
+            endif()
+        else()
+            if(GTK2_VERSION VERSION_EQUAL   GTK2_FIND_VERSION OR
+               GTK2_VERSION VERSION_GREATER GTK2_FIND_VERSION)
+                set(GTK2_FAILED_VERSION_CHECK false)
+            endif()
+        endif()
+    else()
+        # If we can't find the GTK include dir, we can't do version checking
+        if(GTK2_FIND_REQUIRED AND NOT GTK2_FIND_QUIETLY)
+            message(FATAL_ERROR "Could not find GTK2 include directory")
+        endif()
+        return()
+    endif()
+
+    if(GTK2_FAILED_VERSION_CHECK)
+        if(GTK2_FIND_REQUIRED AND NOT GTK2_FIND_QUIETLY)
+            if(GTK2_FIND_VERSION_EXACT)
+                message(FATAL_ERROR "GTK2 version check failed.  Version ${GTK2_VERSION} was found, version ${GTK2_FIND_VERSION} is needed exactly.")
+            else()
+                message(FATAL_ERROR "GTK2 version check failed.  Version ${GTK2_VERSION} was found, at least version ${GTK2_FIND_VERSION} is required")
+            endif()
+        endif()
+
+        # If the version check fails, exit out of the module here
+        return()
+    endif()
+endif()
+
+#
+# On MSVC, according to https://wiki.gnome.org/gtkmm/MSWindows, the /vd2 flag needs to be
+# passed to the compiler in order to use gtkmm
+#
+if(MSVC)
+    foreach(_GTK2_component ${GTK2_FIND_COMPONENTS})
+        if(_GTK2_component STREQUAL "gtkmm")
+            set(GTK2_DEFINITIONS "/vd2")
+        elseif(_GTK2_component STREQUAL "glademm")
+            set(GTK2_DEFINITIONS "/vd2")
+        endif()
+    endforeach()
+endif()
+
+#
+# Find all components
+#
+
+find_package(Freetype QUIET)
+if(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
+    list(APPEND GTK2_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2})
+endif()
+
+foreach(_GTK2_component ${GTK2_FIND_COMPONENTS})
+    if(_GTK2_component STREQUAL "gtk")
+        # Left for compatibility with previous versions.
+        _GTK2_FIND_INCLUDE_DIR(FONTCONFIG fontconfig/fontconfig.h)
+        _GTK2_FIND_INCLUDE_DIR(X11 X11/Xlib.h)
+
+        _GTK2_FIND_INCLUDE_DIR(GLIB glib.h)
+        _GTK2_FIND_INCLUDE_DIR(GLIBCONFIG glibconfig.h)
+        _GTK2_FIND_LIBRARY    (GLIB glib false true)
+        _GTK2_ADD_TARGET      (GLIB)
+
+        _GTK2_FIND_INCLUDE_DIR(GOBJECT glib-object.h)
+        _GTK2_FIND_LIBRARY    (GOBJECT gobject false true)
+        _GTK2_ADD_TARGET      (GOBJECT GTK2_DEPENDS glib)
+
+        _GTK2_FIND_INCLUDE_DIR(ATK atk/atk.h)
+        _GTK2_FIND_LIBRARY    (ATK atk false true)
+        _GTK2_ADD_TARGET      (ATK GTK2_DEPENDS gobject glib)
+
+        _GTK2_FIND_LIBRARY    (GIO gio false true)
+        _GTK2_ADD_TARGET      (GIO GTK2_DEPENDS gobject glib)
+
+        _GTK2_FIND_LIBRARY    (GTHREAD gthread false true)
+        _GTK2_ADD_TARGET      (GTHREAD GTK2_DEPENDS glib)
+
+        _GTK2_FIND_LIBRARY    (GMODULE gmodule false true)
+        _GTK2_ADD_TARGET      (GMODULE GTK2_DEPENDS glib)
+
+        _GTK2_FIND_INCLUDE_DIR(GDK_PIXBUF gdk-pixbuf/gdk-pixbuf.h)
+        _GTK2_FIND_LIBRARY    (GDK_PIXBUF gdk_pixbuf false true)
+        _GTK2_ADD_TARGET      (GDK_PIXBUF GTK2_DEPENDS gobject glib)
+
+        _GTK2_FIND_INCLUDE_DIR(CAIRO cairo.h)
+        _GTK2_FIND_LIBRARY    (CAIRO cairo false false)
+        _GTK2_ADD_TARGET      (CAIRO)
+
+        _GTK2_FIND_INCLUDE_DIR(HARFBUZZ hb.h)
+        _GTK2_FIND_LIBRARY    (HARFBUZZ harfbuzz false false)
+        _GTK2_ADD_TARGET      (HARFBUZZ)
+
+        _GTK2_FIND_INCLUDE_DIR(PANGO pango/pango.h)
+        _GTK2_FIND_LIBRARY    (PANGO pango false true)
+        _GTK2_ADD_TARGET      (PANGO GTK2_DEPENDS gobject glib
+                                     GTK2_OPTIONAL_DEPENDS harfbuzz)
+
+        _GTK2_FIND_LIBRARY    (PANGOCAIRO pangocairo false true)
+        _GTK2_ADD_TARGET      (PANGOCAIRO GTK2_DEPENDS pango cairo gobject glib)
+
+        _GTK2_FIND_LIBRARY    (PANGOFT2 pangoft2 false true)
+        _GTK2_ADD_TARGET      (PANGOFT2 GTK2_DEPENDS pango gobject glib
+                                        OPTIONAL_INCLUDES ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2}
+                                                          ${GTK2_FONTCONFIG_INCLUDE_DIR}
+                                                          ${GTK2_X11_INCLUDE_DIR})
+
+        _GTK2_FIND_LIBRARY    (PANGOXFT pangoxft false true)
+        _GTK2_ADD_TARGET      (PANGOXFT GTK2_DEPENDS pangoft2 pango gobject glib
+                                        OPTIONAL_INCLUDES ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2}
+                                                          ${GTK2_FONTCONFIG_INCLUDE_DIR}
+                                                          ${GTK2_X11_INCLUDE_DIR})
+
+        _GTK2_FIND_INCLUDE_DIR(GDK gdk/gdk.h)
+        _GTK2_FIND_INCLUDE_DIR(GDKCONFIG gdkconfig.h)
+        if(UNIX)
+            if(APPLE)
+                _GTK2_FIND_LIBRARY    (GDK gdk-quartz false true)
+            endif()
+            _GTK2_FIND_LIBRARY    (GDK gdk-x11 false true)
+        else()
+            _GTK2_FIND_LIBRARY    (GDK gdk-win32 false true)
+        endif()
+        _GTK2_ADD_TARGET (GDK GTK2_DEPENDS pango gdk_pixbuf gobject glib
+                              GTK2_OPTIONAL_DEPENDS pangocairo cairo)
+
+        _GTK2_FIND_INCLUDE_DIR(GTK gtk/gtk.h)
+        if(UNIX)
+            if(APPLE)
+                _GTK2_FIND_LIBRARY    (GTK gtk-quartz false true)
+            endif()
+            _GTK2_FIND_LIBRARY    (GTK gtk-x11 false true)
+        else()
+            _GTK2_FIND_LIBRARY    (GTK gtk-win32 false true)
+        endif()
+        _GTK2_ADD_TARGET (GTK GTK2_DEPENDS gdk atk pangoft2 pango gdk_pixbuf gthread gobject glib
+                              GTK2_OPTIONAL_DEPENDS gio pangocairo cairo)
+
+    elseif(_GTK2_component STREQUAL "gtkmm")
+
+        _GTK2_FIND_INCLUDE_DIR(SIGC++ sigc++/sigc++.h)
+        _GTK2_FIND_INCLUDE_DIR(SIGC++CONFIG sigc++config.h)
+        _GTK2_FIND_LIBRARY    (SIGC++ sigc true true)
+        _GTK2_ADD_TARGET      (SIGC++)
+        # Since sigc++ 2.5.1 c++11 support is required
+        if(GTK2_SIGC++CONFIG_INCLUDE_DIR)
+            _GTK2_SIGCXX_GET_VERSION(GTK2_SIGC++_VERSION_MAJOR
+                                     GTK2_SIGC++_VERSION_MINOR
+                                     GTK2_SIGC++_VERSION_MICRO
+                                     ${GTK2_SIGC++CONFIG_INCLUDE_DIR}/sigc++config.h)
+            if(NOT ${GTK2_SIGC++_VERSION_MAJOR}.${GTK2_SIGC++_VERSION_MINOR}.${GTK2_SIGC++_VERSION_MICRO} VERSION_LESS 2.5.1)
+                # These are the features needed by clients in order to include the
+                # project headers:
+                set_property(TARGET GTK2::sigc++
+                             PROPERTY INTERFACE_COMPILE_FEATURES cxx_alias_templates
+                                                                 cxx_auto_type
+                                                                 cxx_decltype
+                                                                 cxx_deleted_functions
+                                                                 cxx_noexcept
+                                                                 cxx_nullptr
+                                                                 cxx_right_angle_brackets
+                                                                 cxx_rvalue_references
+                                                                 cxx_variadic_templates)
+            endif()
+        endif()
+
+        _GTK2_FIND_INCLUDE_DIR(GLIBMM glibmm.h)
+        _GTK2_FIND_INCLUDE_DIR(GLIBMMCONFIG glibmmconfig.h)
+        _GTK2_FIND_LIBRARY    (GLIBMM glibmm true true)
+        _GTK2_ADD_TARGET      (GLIBMM GTK2_DEPENDS gobject sigc++ glib)
+
+        _GTK2_FIND_INCLUDE_DIR(GIOMM giomm.h)
+        _GTK2_FIND_INCLUDE_DIR(GIOMMCONFIG giommconfig.h)
+        _GTK2_FIND_LIBRARY    (GIOMM giomm true true)
+        _GTK2_ADD_TARGET      (GIOMM GTK2_DEPENDS gio glibmm gobject sigc++ glib)
+
+        _GTK2_FIND_INCLUDE_DIR(ATKMM atkmm.h)
+        _GTK2_FIND_INCLUDE_DIR(ATKMMCONFIG atkmmconfig.h)
+        _GTK2_FIND_LIBRARY    (ATKMM atkmm true true)
+        _GTK2_ADD_TARGET      (ATKMM GTK2_DEPENDS atk glibmm gobject sigc++ glib)
+
+        _GTK2_FIND_INCLUDE_DIR(CAIROMM cairomm/cairomm.h)
+        _GTK2_FIND_INCLUDE_DIR(CAIROMMCONFIG cairommconfig.h)
+        _GTK2_FIND_LIBRARY    (CAIROMM cairomm true true)
+        _GTK2_ADD_TARGET      (CAIROMM GTK2_DEPENDS cairo sigc++
+                                       OPTIONAL_INCLUDES ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2}
+                                                         ${GTK2_FONTCONFIG_INCLUDE_DIR}
+                                                         ${GTK2_X11_INCLUDE_DIR})
+
+        _GTK2_FIND_INCLUDE_DIR(PANGOMM pangomm.h)
+        _GTK2_FIND_INCLUDE_DIR(PANGOMMCONFIG pangommconfig.h)
+        _GTK2_FIND_LIBRARY    (PANGOMM pangomm true true)
+        _GTK2_ADD_TARGET      (PANGOMM GTK2_DEPENDS glibmm sigc++ pango gobject glib
+                                       GTK2_OPTIONAL_DEPENDS cairomm pangocairo cairo
+                                       OPTIONAL_INCLUDES ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2}
+                                                         ${GTK2_FONTCONFIG_INCLUDE_DIR}
+                                                         ${GTK2_X11_INCLUDE_DIR})
+
+        _GTK2_FIND_INCLUDE_DIR(GDKMM gdkmm.h)
+        _GTK2_FIND_INCLUDE_DIR(GDKMMCONFIG gdkmmconfig.h)
+        _GTK2_FIND_LIBRARY    (GDKMM gdkmm true true)
+        _GTK2_ADD_TARGET      (GDKMM GTK2_DEPENDS pangomm gtk glibmm sigc++ gdk atk pangoft2 gdk_pixbuf pango gobject glib
+                                     GTK2_OPTIONAL_DEPENDS giomm cairomm gio pangocairo cairo
+                                     OPTIONAL_INCLUDES ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2}
+                                                       ${GTK2_FONTCONFIG_INCLUDE_DIR}
+                                                       ${GTK2_X11_INCLUDE_DIR})
+
+        _GTK2_FIND_INCLUDE_DIR(GTKMM gtkmm.h)
+        _GTK2_FIND_INCLUDE_DIR(GTKMMCONFIG gtkmmconfig.h)
+        _GTK2_FIND_LIBRARY    (GTKMM gtkmm true true)
+        _GTK2_ADD_TARGET      (GTKMM GTK2_DEPENDS atkmm gdkmm pangomm gtk glibmm sigc++ gdk atk pangoft2 gdk_pixbuf pango gthread gobject glib
+                                     GTK2_OPTIONAL_DEPENDS giomm cairomm gio pangocairo cairo
+                                     OPTIONAL_INCLUDES ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2}
+                                                       ${GTK2_FONTCONFIG_INCLUDE_DIR}
+                                                       ${GTK2_X11_INCLUDE_DIR})
+
+    elseif(_GTK2_component STREQUAL "glade")
+
+        _GTK2_FIND_INCLUDE_DIR(GLADE glade/glade.h)
+        _GTK2_FIND_LIBRARY    (GLADE glade false true)
+        _GTK2_ADD_TARGET      (GLADE GTK2_DEPENDS gtk gdk atk gio pangoft2 gdk_pixbuf pango gobject glib
+                                     GTK2_OPTIONAL_DEPENDS pangocairo cairo
+                                     OPTIONAL_INCLUDES ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2}
+                                                       ${GTK2_FONTCONFIG_INCLUDE_DIR}
+                                                       ${GTK2_X11_INCLUDE_DIR})
+
+    elseif(_GTK2_component STREQUAL "glademm")
+
+        _GTK2_FIND_INCLUDE_DIR(GLADEMM libglademm.h)
+        _GTK2_FIND_INCLUDE_DIR(GLADEMMCONFIG libglademmconfig.h)
+        _GTK2_FIND_LIBRARY    (GLADEMM glademm true true)
+        _GTK2_ADD_TARGET      (GLADEMM GTK2_DEPENDS gtkmm glade atkmm gdkmm giomm pangomm glibmm sigc++ gtk gdk atk pangoft2 gdk_pixbuf pango gthread gobject glib
+                                       GTK2_OPTIONAL_DEPENDS giomm cairomm gio pangocairo cairo
+                                       OPTIONAL_INCLUDES ${FREETYPE_INCLUDE_DIR_ft2build} ${FREETYPE_INCLUDE_DIR_freetype2}
+                                                         ${GTK2_FONTCONFIG_INCLUDE_DIR}
+                                                         ${GTK2_X11_INCLUDE_DIR})
+
+    else()
+        message(FATAL_ERROR "Unknown GTK2 component ${_component}")
+    endif()
+endforeach()
+
+#
+# Solve for the GTK2 version if we haven't already
+#
+if(NOT GTK2_FIND_VERSION AND GTK2_GTK_INCLUDE_DIR)
+    _GTK2_GET_VERSION(GTK2_MAJOR_VERSION
+                      GTK2_MINOR_VERSION
+                      GTK2_PATCH_VERSION
+                      ${GTK2_GTK_INCLUDE_DIR}/gtk/gtkversion.h)
+    set(GTK2_VERSION ${GTK2_MAJOR_VERSION}.${GTK2_MINOR_VERSION}.${GTK2_PATCH_VERSION})
+endif()
+
+#
+# Try to enforce components
+#
+
+set(_GTK2_did_we_find_everything true)  # This gets set to GTK2_FOUND
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+foreach(_GTK2_component ${GTK2_FIND_COMPONENTS})
+    string(TOUPPER ${_GTK2_component} _COMPONENT_UPPER)
+
+    set(GTK2_${_COMPONENT_UPPER}_FIND_QUIETLY ${GTK2_FIND_QUIETLY})
+
+    set(FPHSA_NAME_MISMATCHED 1)
+    if(_GTK2_component STREQUAL "gtk")
+        FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "Some or all of the gtk libraries were not found."
+            GTK2_GTK_LIBRARY
+            GTK2_GTK_INCLUDE_DIR
+
+            GTK2_GDK_INCLUDE_DIR
+            GTK2_GDKCONFIG_INCLUDE_DIR
+            GTK2_GDK_LIBRARY
+
+            GTK2_GLIB_INCLUDE_DIR
+            GTK2_GLIBCONFIG_INCLUDE_DIR
+            GTK2_GLIB_LIBRARY
+        )
+    elseif(_GTK2_component STREQUAL "gtkmm")
+        FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "Some or all of the gtkmm libraries were not found."
+            GTK2_GTKMM_LIBRARY
+            GTK2_GTKMM_INCLUDE_DIR
+            GTK2_GTKMMCONFIG_INCLUDE_DIR
+
+            GTK2_GDKMM_INCLUDE_DIR
+            GTK2_GDKMMCONFIG_INCLUDE_DIR
+            GTK2_GDKMM_LIBRARY
+
+            GTK2_GLIBMM_INCLUDE_DIR
+            GTK2_GLIBMMCONFIG_INCLUDE_DIR
+            GTK2_GLIBMM_LIBRARY
+
+            FREETYPE_INCLUDE_DIR_ft2build
+            FREETYPE_INCLUDE_DIR_freetype2
+        )
+    elseif(_GTK2_component STREQUAL "glade")
+        FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "The glade library was not found."
+            GTK2_GLADE_LIBRARY
+            GTK2_GLADE_INCLUDE_DIR
+        )
+    elseif(_GTK2_component STREQUAL "glademm")
+        FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "The glademm library was not found."
+            GTK2_GLADEMM_LIBRARY
+            GTK2_GLADEMM_INCLUDE_DIR
+            GTK2_GLADEMMCONFIG_INCLUDE_DIR
+        )
+    endif()
+    unset(FPHSA_NAME_MISMATCHED)
+
+    if(NOT GTK2_${_COMPONENT_UPPER}_FOUND)
+        set(_GTK2_did_we_find_everything false)
+    endif()
+endforeach()
+
+if(GTK2_USE_IMPORTED_TARGETS)
+    set(GTK2_LIBRARIES ${GTK2_TARGETS})
+endif()
+
+
+if(_GTK2_did_we_find_everything AND NOT GTK2_VERSION_CHECK_FAILED)
+    set(GTK2_FOUND true)
+else()
+    # Unset our variables.
+    set(GTK2_FOUND false)
+    set(GTK2_VERSION)
+    set(GTK2_VERSION_MAJOR)
+    set(GTK2_VERSION_MINOR)
+    set(GTK2_VERSION_PATCH)
+    set(GTK2_INCLUDE_DIRS)
+    set(GTK2_LIBRARIES)
+    set(GTK2_TARGETS)
+    set(GTK2_DEFINITIONS)
+endif()
+
+if(GTK2_INCLUDE_DIRS)
+  list(REMOVE_DUPLICATES GTK2_INCLUDE_DIRS)
+endif()
diff --git a/share/cmake-3.22/Modules/FindGTest.cmake b/share/cmake-3.22/Modules/FindGTest.cmake
new file mode 100644
index 0000000..8e22f79
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindGTest.cmake
@@ -0,0 +1,294 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindGTest
+---------
+
+Locate the Google C++ Testing Framework.
+
+.. versionadded:: 3.20
+  Upstream ``GTestConfig.cmake`` is used if possible.
+
+Imported targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.20
+  This module defines the following :prop_tgt:`IMPORTED` targets:
+
+``GTest::gtest``
+  The Google Test ``gtest`` library, if found; adds Thread::Thread
+  automatically
+``GTest::gtest_main``
+  The Google Test ``gtest_main`` library, if found
+
+.. deprecated:: 3.20
+  For backwards compatibility, this module defines additionally the
+  following deprecated :prop_tgt:`IMPORTED` targets (available since 3.5):
+
+``GTest::GTest``
+  The Google Test ``gtest`` library, if found; adds Thread::Thread
+  automatically
+``GTest::Main``
+  The Google Test ``gtest_main`` library, if found
+
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``GTest_FOUND``
+  Found the Google Testing framework
+``GTEST_INCLUDE_DIRS``
+  the directory containing the Google Test headers
+
+The library variables below are set as normal variables.  These
+contain debug/optimized keywords when a debugging library is found.
+
+``GTEST_LIBRARIES``
+  The Google Test ``gtest`` library; note it also requires linking
+  with an appropriate thread library
+``GTEST_MAIN_LIBRARIES``
+  The Google Test ``gtest_main`` library
+``GTEST_BOTH_LIBRARIES``
+  Both ``gtest`` and ``gtest_main``
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set:
+
+``GTEST_ROOT``
+  The root directory of the Google Test installation (may also be
+  set as an environment variable)
+``GTEST_MSVC_SEARCH``
+  If compiling with MSVC, this variable can be set to ``MT`` or
+  ``MD`` (the default) to enable searching a GTest build tree
+
+
+Example usage
+^^^^^^^^^^^^^
+
+::
+
+    enable_testing()
+    find_package(GTest REQUIRED)
+
+    add_executable(foo foo.cc)
+    target_link_libraries(foo GTest::gtest GTest::gtest_main)
+
+    add_test(AllTestsInFoo foo)
+
+
+Deeper integration with CTest
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+See :module:`GoogleTest` for information on the :command:`gtest_add_tests`
+and :command:`gtest_discover_tests` commands.
+
+.. versionchanged:: 3.9
+  Previous CMake versions defined :command:`gtest_add_tests` macro in this
+  module.
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/GoogleTest.cmake)
+
+function(__gtest_append_debugs _endvar _library)
+    if(${_library} AND ${_library}_DEBUG)
+        set(_output optimized ${${_library}} debug ${${_library}_DEBUG})
+    else()
+        set(_output ${${_library}})
+    endif()
+    set(${_endvar} ${_output} PARENT_SCOPE)
+endfunction()
+
+function(__gtest_find_library _name)
+    find_library(${_name}
+        NAMES ${ARGN}
+        HINTS
+            ENV GTEST_ROOT
+            ${GTEST_ROOT}
+        PATH_SUFFIXES ${_gtest_libpath_suffixes}
+    )
+    mark_as_advanced(${_name})
+endfunction()
+
+macro(__gtest_determine_windows_library_type _var)
+    if(EXISTS "${${_var}}")
+        file(TO_NATIVE_PATH "${${_var}}" _lib_path)
+        get_filename_component(_name "${${_var}}" NAME_WE)
+        file(STRINGS "${${_var}}" _match REGEX "${_name}\\.dll" LIMIT_COUNT 1)
+        if(NOT _match STREQUAL "")
+            set(${_var}_TYPE SHARED PARENT_SCOPE)
+        else()
+            set(${_var}_TYPE UNKNOWN PARENT_SCOPE)
+        endif()
+        return()
+    endif()
+endmacro()
+
+function(__gtest_determine_library_type _var)
+    if(WIN32)
+        # For now, at least, only Windows really needs to know the library type
+        __gtest_determine_windows_library_type(${_var})
+        __gtest_determine_windows_library_type(${_var}_RELEASE)
+        __gtest_determine_windows_library_type(${_var}_DEBUG)
+    endif()
+    # If we get here, no determination was made from the above checks
+    set(${_var}_TYPE UNKNOWN PARENT_SCOPE)
+endfunction()
+
+function(__gtest_import_library _target _var _config)
+    if(_config)
+        set(_config_suffix "_${_config}")
+    else()
+        set(_config_suffix "")
+    endif()
+
+    set(_lib "${${_var}${_config_suffix}}")
+    if(EXISTS "${_lib}")
+        if(_config)
+            set_property(TARGET ${_target} APPEND PROPERTY
+                IMPORTED_CONFIGURATIONS ${_config})
+        endif()
+        set_target_properties(${_target} PROPERTIES
+            IMPORTED_LINK_INTERFACE_LANGUAGES${_config_suffix} "CXX")
+        if(WIN32 AND ${_var}_TYPE STREQUAL SHARED)
+            set_target_properties(${_target} PROPERTIES
+                IMPORTED_IMPLIB${_config_suffix} "${_lib}")
+        else()
+            set_target_properties(${_target} PROPERTIES
+                IMPORTED_LOCATION${_config_suffix} "${_lib}")
+        endif()
+    endif()
+endfunction()
+
+function(__gtest_define_backwards_compatible_library_targets)
+    set(GTEST_BOTH_LIBRARIES ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} PARENT_SCOPE)
+
+    # Add targets mapping the same library names as defined in
+    # older versions of CMake's FindGTest
+    if(NOT TARGET GTest::GTest)
+        add_library(GTest::GTest INTERFACE IMPORTED)
+        target_link_libraries(GTest::GTest INTERFACE GTest::gtest)
+    endif()
+    if(NOT TARGET GTest::Main)
+        add_library(GTest::Main INTERFACE IMPORTED)
+        target_link_libraries(GTest::Main INTERFACE GTest::gtest_main)
+    endif()
+endfunction()
+
+#
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+# first specifically look for the CMake version of GTest
+find_package(GTest QUIET NO_MODULE)
+
+# if we found the GTest cmake package then we are done, and
+# can print what we found and return.
+if(GTest_FOUND)
+    FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTest HANDLE_COMPONENTS CONFIG_MODE)
+
+    set(GTEST_LIBRARIES      GTest::gtest)
+    set(GTEST_MAIN_LIBRARIES GTest::gtest_main)
+
+    __gtest_define_backwards_compatible_library_targets()
+
+    return()
+endif()
+
+if(NOT DEFINED GTEST_MSVC_SEARCH)
+    set(GTEST_MSVC_SEARCH MD)
+endif()
+
+set(_gtest_libpath_suffixes lib)
+if(MSVC)
+    if(GTEST_MSVC_SEARCH STREQUAL "MD")
+        list(APPEND _gtest_libpath_suffixes
+            msvc/gtest-md/Debug
+            msvc/gtest-md/Release
+            msvc/x64/Debug
+            msvc/x64/Release
+            msvc/2010/gtest-md/Win32-Debug
+            msvc/2010/gtest-md/Win32-Release
+            msvc/2010/gtest-md/x64-Debug
+            msvc/2010/gtest-md/x64-Release
+            )
+    elseif(GTEST_MSVC_SEARCH STREQUAL "MT")
+        list(APPEND _gtest_libpath_suffixes
+            msvc/gtest/Debug
+            msvc/gtest/Release
+            msvc/x64/Debug
+            msvc/x64/Release
+            msvc/2010/gtest/Win32-Debug
+            msvc/2010/gtest/Win32-Release
+            msvc/2010/gtest/x64-Debug
+            msvc/2010/gtest/x64-Release
+            )
+    endif()
+endif()
+
+
+find_path(GTEST_INCLUDE_DIR gtest/gtest.h
+    HINTS
+        $ENV{GTEST_ROOT}/include
+        ${GTEST_ROOT}/include
+)
+mark_as_advanced(GTEST_INCLUDE_DIR)
+
+if(MSVC AND GTEST_MSVC_SEARCH STREQUAL "MD")
+    # The provided /MD project files for Google Test add -md suffixes to the
+    # library names.
+    __gtest_find_library(GTEST_LIBRARY            gtest-md  gtest)
+    __gtest_find_library(GTEST_LIBRARY_DEBUG      gtest-mdd gtestd)
+    __gtest_find_library(GTEST_MAIN_LIBRARY       gtest_main-md  gtest_main)
+    __gtest_find_library(GTEST_MAIN_LIBRARY_DEBUG gtest_main-mdd gtest_maind)
+else()
+    __gtest_find_library(GTEST_LIBRARY            gtest)
+    __gtest_find_library(GTEST_LIBRARY_DEBUG      gtestd)
+    __gtest_find_library(GTEST_MAIN_LIBRARY       gtest_main)
+    __gtest_find_library(GTEST_MAIN_LIBRARY_DEBUG gtest_maind)
+endif()
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTest DEFAULT_MSG GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)
+
+if(GTest_FOUND)
+    set(GTEST_INCLUDE_DIRS ${GTEST_INCLUDE_DIR})
+    __gtest_append_debugs(GTEST_LIBRARIES      GTEST_LIBRARY)
+    __gtest_append_debugs(GTEST_MAIN_LIBRARIES GTEST_MAIN_LIBRARY)
+
+    find_package(Threads QUIET)
+
+    if(NOT TARGET GTest::gtest)
+        __gtest_determine_library_type(GTEST_LIBRARY)
+        add_library(GTest::gtest ${GTEST_LIBRARY_TYPE} IMPORTED)
+        if(TARGET Threads::Threads)
+            set_target_properties(GTest::gtest PROPERTIES
+                INTERFACE_LINK_LIBRARIES Threads::Threads)
+        endif()
+        if(GTEST_LIBRARY_TYPE STREQUAL "SHARED")
+            set_target_properties(GTest::gtest PROPERTIES
+                INTERFACE_COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
+        endif()
+        if(GTEST_INCLUDE_DIRS)
+            set_target_properties(GTest::gtest PROPERTIES
+                INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}")
+        endif()
+        __gtest_import_library(GTest::gtest GTEST_LIBRARY "")
+        __gtest_import_library(GTest::gtest GTEST_LIBRARY "RELEASE")
+        __gtest_import_library(GTest::gtest GTEST_LIBRARY "DEBUG")
+    endif()
+    if(NOT TARGET GTest::gtest_main)
+        __gtest_determine_library_type(GTEST_MAIN_LIBRARY)
+        add_library(GTest::gtest_main ${GTEST_MAIN_LIBRARY_TYPE} IMPORTED)
+        set_target_properties(GTest::gtest_main PROPERTIES
+            INTERFACE_LINK_LIBRARIES "GTest::gtest")
+        __gtest_import_library(GTest::gtest_main GTEST_MAIN_LIBRARY "")
+        __gtest_import_library(GTest::gtest_main GTEST_MAIN_LIBRARY "RELEASE")
+        __gtest_import_library(GTest::gtest_main GTEST_MAIN_LIBRARY "DEBUG")
+    endif()
+
+    __gtest_define_backwards_compatible_library_targets()
+endif()
diff --git a/share/cmake-3.22/Modules/FindGettext.cmake b/share/cmake-3.22/Modules/FindGettext.cmake
new file mode 100644
index 0000000..99e2887
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindGettext.cmake
@@ -0,0 +1,232 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindGettext
+-----------
+
+Find GNU gettext tools
+
+This module looks for the GNU gettext tools.  This module defines the
+following values:
+
+::
+
+  GETTEXT_MSGMERGE_EXECUTABLE: the full path to the msgmerge tool.
+  GETTEXT_MSGFMT_EXECUTABLE: the full path to the msgfmt tool.
+  GETTEXT_FOUND: True if gettext has been found.
+  GETTEXT_VERSION_STRING: the version of gettext found (since CMake 2.8.8)
+
+
+
+Additionally it provides the following macros:
+
+GETTEXT_CREATE_TRANSLATIONS ( outputFile [ALL] file1 ...  fileN )
+
+::
+
+    This will create a target "translations" which will convert the
+    given input po files into the binary output mo file. If the
+    ALL option is used, the translations will also be created when
+    building the default target.
+
+GETTEXT_PROCESS_POT_FILE( <potfile> [ALL] [INSTALL_DESTINATION <destdir>]
+LANGUAGES <lang1> <lang2> ...  )
+
+::
+
+     Process the given pot file to mo files.
+     If INSTALL_DESTINATION is given then automatically install rules will
+     be created, the language subdirectory will be taken into account
+     (by default use share/locale/).
+     If ALL is specified, the pot file is processed when building the all target.
+     It creates a custom target "potfile".
+
+GETTEXT_PROCESS_PO_FILES( <lang> [ALL] [INSTALL_DESTINATION <dir>]
+PO_FILES <po1> <po2> ...  )
+
+::
+
+     Process the given po files to mo files for the given language.
+     If INSTALL_DESTINATION is given then automatically install rules will
+     be created, the language subdirectory will be taken into account
+     (by default use share/locale/).
+     If ALL is specified, the po files are processed when building the all target.
+     It creates a custom target "pofiles".
+
+.. versionadded:: 3.2
+  If you wish to use the Gettext library (libintl), use :module:`FindIntl`.
+#]=======================================================================]
+
+find_program(GETTEXT_MSGMERGE_EXECUTABLE msgmerge)
+
+find_program(GETTEXT_MSGFMT_EXECUTABLE msgfmt)
+
+if(GETTEXT_MSGMERGE_EXECUTABLE)
+  execute_process(COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --version
+                  OUTPUT_VARIABLE gettext_version
+                  ERROR_QUIET
+                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+  get_filename_component(msgmerge_name ${GETTEXT_MSGMERGE_EXECUTABLE} NAME)
+  get_filename_component(msgmerge_namewe ${GETTEXT_MSGMERGE_EXECUTABLE} NAME_WE)
+  if (gettext_version MATCHES "^(${msgmerge_name}|${msgmerge_namewe}) \\([^\\)]*\\) ([0-9\\.]+[^ \n]*)")
+    set(GETTEXT_VERSION_STRING "${CMAKE_MATCH_2}")
+  endif()
+  unset(gettext_version)
+  unset(msgmerge_name)
+  unset(msgmerge_namewe)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Gettext
+                                  REQUIRED_VARS GETTEXT_MSGMERGE_EXECUTABLE GETTEXT_MSGFMT_EXECUTABLE
+                                  VERSION_VAR GETTEXT_VERSION_STRING)
+
+function(_GETTEXT_GET_UNIQUE_TARGET_NAME _name _unique_name)
+  set(propertyName "_GETTEXT_UNIQUE_COUNTER_${_name}")
+  get_property(currentCounter GLOBAL PROPERTY "${propertyName}")
+  if(NOT currentCounter)
+    set(currentCounter 1)
+  endif()
+  set(${_unique_name} "${_name}_${currentCounter}" PARENT_SCOPE)
+  math(EXPR currentCounter "${currentCounter} + 1")
+  set_property(GLOBAL PROPERTY ${propertyName} ${currentCounter} )
+endfunction()
+
+macro(GETTEXT_CREATE_TRANSLATIONS _potFile _firstPoFileArg)
+  # make it a real variable, so we can modify it here
+  set(_firstPoFile "${_firstPoFileArg}")
+
+  set(_gmoFiles)
+  get_filename_component(_potName ${_potFile} NAME)
+  string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _potBasename ${_potName})
+  get_filename_component(_absPotFile ${_potFile} ABSOLUTE)
+
+  set(_addToAll)
+  if(${_firstPoFile} STREQUAL "ALL")
+    set(_addToAll "ALL")
+    set(_firstPoFile)
+  endif()
+
+  foreach (_currentPoFile ${_firstPoFile} ${ARGN})
+    get_filename_component(_absFile ${_currentPoFile} ABSOLUTE)
+    get_filename_component(_abs_PATH ${_absFile} PATH)
+    get_filename_component(_lang ${_absFile} NAME_WE)
+    set(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo)
+
+    add_custom_command(
+      OUTPUT ${_gmoFile}
+      COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet --update --backup=none -s ${_absFile} ${_absPotFile}
+      COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_absFile}
+      DEPENDS ${_absPotFile} ${_absFile}
+    )
+
+    install(FILES ${_gmoFile} DESTINATION share/locale/${_lang}/LC_MESSAGES RENAME ${_potBasename}.mo)
+    set(_gmoFiles ${_gmoFiles} ${_gmoFile})
+
+  endforeach ()
+
+  if(NOT TARGET translations)
+    add_custom_target(translations)
+  endif()
+
+  _GETTEXT_GET_UNIQUE_TARGET_NAME(translations uniqueTargetName)
+
+  add_custom_target(${uniqueTargetName} ${_addToAll} DEPENDS ${_gmoFiles})
+
+  add_dependencies(translations ${uniqueTargetName})
+
+endmacro()
+
+
+function(GETTEXT_PROCESS_POT_FILE _potFile)
+  set(_gmoFiles)
+  set(_options ALL)
+  set(_oneValueArgs INSTALL_DESTINATION)
+  set(_multiValueArgs LANGUAGES)
+
+  CMAKE_PARSE_ARGUMENTS(_parsedArguments "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN})
+
+  get_filename_component(_potName ${_potFile} NAME)
+  string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _potBasename ${_potName})
+  get_filename_component(_absPotFile ${_potFile} ABSOLUTE)
+
+  foreach (_lang ${_parsedArguments_LANGUAGES})
+    set(_poFile  "${CMAKE_CURRENT_BINARY_DIR}/${_lang}.po")
+    set(_gmoFile "${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo")
+
+    add_custom_command(
+      OUTPUT "${_poFile}"
+      COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet --update --backup=none -s ${_poFile} ${_absPotFile}
+      DEPENDS ${_absPotFile}
+    )
+
+    add_custom_command(
+      OUTPUT "${_gmoFile}"
+      COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_poFile}
+      DEPENDS ${_absPotFile} ${_poFile}
+    )
+
+    if(_parsedArguments_INSTALL_DESTINATION)
+      install(FILES ${_gmoFile} DESTINATION ${_parsedArguments_INSTALL_DESTINATION}/${_lang}/LC_MESSAGES RENAME ${_potBasename}.mo)
+    endif()
+    list(APPEND _gmoFiles ${_gmoFile})
+  endforeach ()
+
+  if(NOT TARGET potfiles)
+    add_custom_target(potfiles)
+  endif()
+
+  _GETTEXT_GET_UNIQUE_TARGET_NAME( potfiles uniqueTargetName)
+
+  if(_parsedArguments_ALL)
+    add_custom_target(${uniqueTargetName} ALL DEPENDS ${_gmoFiles})
+  else()
+    add_custom_target(${uniqueTargetName} DEPENDS ${_gmoFiles})
+  endif()
+
+  add_dependencies(potfiles ${uniqueTargetName})
+
+endfunction()
+
+
+function(GETTEXT_PROCESS_PO_FILES _lang)
+  set(_options ALL)
+  set(_oneValueArgs INSTALL_DESTINATION)
+  set(_multiValueArgs PO_FILES)
+  set(_gmoFiles)
+
+  CMAKE_PARSE_ARGUMENTS(_parsedArguments "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN})
+
+  foreach(_current_PO_FILE ${_parsedArguments_PO_FILES})
+    get_filename_component(_name ${_current_PO_FILE} NAME)
+    string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _basename ${_name})
+    set(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.gmo)
+    add_custom_command(OUTPUT ${_gmoFile}
+      COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_current_PO_FILE}
+      WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+      DEPENDS ${_current_PO_FILE}
+    )
+
+    if(_parsedArguments_INSTALL_DESTINATION)
+      install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.gmo DESTINATION ${_parsedArguments_INSTALL_DESTINATION}/${_lang}/LC_MESSAGES/ RENAME ${_basename}.mo)
+    endif()
+    list(APPEND _gmoFiles ${_gmoFile})
+  endforeach()
+
+
+  if(NOT TARGET pofiles)
+    add_custom_target(pofiles)
+  endif()
+
+  _GETTEXT_GET_UNIQUE_TARGET_NAME( pofiles uniqueTargetName)
+
+  if(_parsedArguments_ALL)
+    add_custom_target(${uniqueTargetName} ALL DEPENDS ${_gmoFiles})
+  else()
+    add_custom_target(${uniqueTargetName} DEPENDS ${_gmoFiles})
+  endif()
+
+  add_dependencies(pofiles ${uniqueTargetName})
+
+endfunction()
diff --git a/share/cmake-3.22/Modules/FindGit.cmake b/share/cmake-3.22/Modules/FindGit.cmake
new file mode 100644
index 0000000..99850b4
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindGit.cmake
@@ -0,0 +1,130 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindGit
+-------
+
+The module defines the following variables:
+
+``GIT_EXECUTABLE``
+  Path to Git command-line client.
+``Git_FOUND``, ``GIT_FOUND``
+  True if the Git command-line client was found.
+``GIT_VERSION_STRING``
+  The version of Git found.
+
+.. versionadded:: 3.14
+  The module defines the following ``IMPORTED`` targets (when
+  :prop_gbl:`CMAKE_ROLE` is ``PROJECT``):
+
+``Git::Git``
+  Executable of the Git command-line client.
+
+Example usage:
+
+.. code-block:: cmake
+
+   find_package(Git)
+   if(Git_FOUND)
+     message("Git found: ${GIT_EXECUTABLE}")
+   endif()
+#]=======================================================================]
+
+# Look for 'git' or 'eg' (easy git)
+#
+set(git_names git eg)
+
+# Prefer .cmd variants on Windows unless running in a Makefile
+# in the MSYS shell.
+#
+if(CMAKE_HOST_WIN32)
+  if(NOT CMAKE_GENERATOR MATCHES "MSYS")
+    set(git_names git.cmd git eg.cmd eg)
+    # GitHub search path for Windows
+    file(GLOB github_path
+      "$ENV{LOCALAPPDATA}/Github/PortableGit*/cmd"
+      "$ENV{LOCALAPPDATA}/Github/PortableGit*/bin"
+      )
+    # SourceTree search path for Windows
+    set(_git_sourcetree_path "$ENV{LOCALAPPDATA}/Atlassian/SourceTree/git_local/bin")
+  endif()
+endif()
+
+# First search the PATH and specific locations.
+find_program(GIT_EXECUTABLE
+  NAMES ${git_names}
+  PATHS ${github_path} ${_git_sourcetree_path}
+  DOC "Git command line client"
+  )
+
+if(CMAKE_HOST_WIN32)
+  # Now look for installations in Git/ directories under typical installation
+  # prefixes on Windows.  Exclude PATH from this search because VS 2017's
+  # command prompt happens to have a PATH entry with a Git/ subdirectory
+  # containing a minimal git not meant for general use.
+  find_program(GIT_EXECUTABLE
+    NAMES ${git_names}
+    PATH_SUFFIXES Git/cmd Git/bin
+    NO_SYSTEM_ENVIRONMENT_PATH
+    DOC "Git command line client"
+    )
+endif()
+
+mark_as_advanced(GIT_EXECUTABLE)
+
+unset(git_names)
+unset(_git_sourcetree_path)
+
+if(GIT_EXECUTABLE)
+  # Avoid querying the version if we've already done that this run. For
+  # projects that use things like ExternalProject or FetchContent heavily,
+  # this saving can be measurable on some platforms.
+  #
+  # This is an internal property, projects must not try to use it.
+  # We don't want this stored in the cache because it might still change
+  # between CMake runs, but it shouldn't change during a run for a given
+  # git executable location.
+  set(__doGitVersionCheck TRUE)
+  get_property(__gitVersionProp GLOBAL
+    PROPERTY _CMAKE_FindGit_GIT_EXECUTABLE_VERSION
+  )
+  if(__gitVersionProp)
+    list(GET __gitVersionProp 0 __gitExe)
+    list(GET __gitVersionProp 1 __gitVersion)
+    if(__gitExe STREQUAL GIT_EXECUTABLE AND NOT __gitVersion STREQUAL "")
+      set(GIT_VERSION_STRING "${__gitVersion}")
+      set(__doGitVersionCheck FALSE)
+    endif()
+    unset(__gitExe)
+    unset(__gitVersion)
+  endif()
+  unset(__gitVersionProp)
+
+  if(__doGitVersionCheck)
+    execute_process(COMMAND ${GIT_EXECUTABLE} --version
+                    OUTPUT_VARIABLE git_version
+                    ERROR_QUIET
+                    OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if (git_version MATCHES "^git version [0-9]")
+      string(REPLACE "git version " "" GIT_VERSION_STRING "${git_version}")
+      set_property(GLOBAL PROPERTY _CMAKE_FindGit_GIT_EXECUTABLE_VERSION
+        "${GIT_EXECUTABLE};${GIT_VERSION_STRING}"
+      )
+    endif()
+    unset(git_version)
+  endif()
+  unset(__doGitVersionCheck)
+
+  get_property(_findgit_role GLOBAL PROPERTY CMAKE_ROLE)
+  if(_findgit_role STREQUAL "PROJECT" AND NOT TARGET Git::Git)
+    add_executable(Git::Git IMPORTED)
+    set_property(TARGET Git::Git PROPERTY IMPORTED_LOCATION "${GIT_EXECUTABLE}")
+  endif()
+  unset(_findgit_role)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(Git
+                                  REQUIRED_VARS GIT_EXECUTABLE
+                                  VERSION_VAR GIT_VERSION_STRING)
diff --git a/share/cmake-3.22/Modules/FindGnuTLS.cmake b/share/cmake-3.22/Modules/FindGnuTLS.cmake
new file mode 100644
index 0000000..782a72b
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindGnuTLS.cmake
@@ -0,0 +1,84 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindGnuTLS
+----------
+
+Find the GNU Transport Layer Security library (gnutls)
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.16
+
+This module defines :prop_tgt:`IMPORTED` target ``GnuTLS::GnuTLS``, if
+gnutls has been found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+``GNUTLS_FOUND``
+  System has gnutls
+``GNUTLS_INCLUDE_DIR``
+  The gnutls include directory
+``GNUTLS_LIBRARIES``
+  The libraries needed to use gnutls
+``GNUTLS_DEFINITIONS``
+  Compiler switches required for using gnutls
+``GNUTLS_VERSION``
+  version of gnutls.
+#]=======================================================================]
+
+# Note that this doesn't try to find the gnutls-extra package.
+
+
+if (GNUTLS_INCLUDE_DIR AND GNUTLS_LIBRARY)
+  # in cache already
+  set(gnutls_FIND_QUIETLY TRUE)
+endif ()
+
+if (NOT WIN32)
+  # try using pkg-config to get the directories and then use these values
+  # in the find_path() and find_library() calls
+  # also fills in GNUTLS_DEFINITIONS, although that isn't normally useful
+  find_package(PkgConfig QUIET)
+  PKG_CHECK_MODULES(PC_GNUTLS QUIET gnutls)
+  set(GNUTLS_DEFINITIONS ${PC_GNUTLS_CFLAGS_OTHER})
+  set(GNUTLS_VERSION ${PC_GNUTLS_VERSION})
+  # keep for backward compatibility
+  set(GNUTLS_VERSION_STRING ${PC_GNUTLS_VERSION})
+endif ()
+
+find_path(GNUTLS_INCLUDE_DIR gnutls/gnutls.h
+  HINTS
+    ${PC_GNUTLS_INCLUDEDIR}
+    ${PC_GNUTLS_INCLUDE_DIRS}
+  )
+
+find_library(GNUTLS_LIBRARY NAMES gnutls libgnutls
+  HINTS
+    ${PC_GNUTLS_LIBDIR}
+    ${PC_GNUTLS_LIBRARY_DIRS}
+  )
+
+mark_as_advanced(GNUTLS_INCLUDE_DIR GNUTLS_LIBRARY)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GnuTLS
+                                  REQUIRED_VARS GNUTLS_LIBRARY GNUTLS_INCLUDE_DIR
+                                  VERSION_VAR GNUTLS_VERSION_STRING)
+
+if(GNUTLS_FOUND)
+  set(GNUTLS_LIBRARIES    ${GNUTLS_LIBRARY})
+  set(GNUTLS_INCLUDE_DIRS ${GNUTLS_INCLUDE_DIR})
+
+  if(NOT TARGET GnuTLS::GnuTLS)
+    add_library(GnuTLS::GnuTLS UNKNOWN IMPORTED)
+    set_target_properties(GnuTLS::GnuTLS PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${GNUTLS_INCLUDE_DIRS}"
+      INTERFACE_COMPILE_DEFINITIONS "${GNUTLS_DEFINITIONS}"
+      IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+      IMPORTED_LOCATION "${GNUTLS_LIBRARIES}")
+  endif()
+endif()
diff --git a/share/cmake-3.22/Modules/FindGnuplot.cmake b/share/cmake-3.22/Modules/FindGnuplot.cmake
new file mode 100644
index 0000000..b4ea6ab
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindGnuplot.cmake
@@ -0,0 +1,57 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindGnuplot
+-----------
+
+this module looks for gnuplot
+
+
+
+Once done this will define
+
+::
+
+  GNUPLOT_FOUND - system has Gnuplot
+  GNUPLOT_EXECUTABLE - the Gnuplot executable
+  GNUPLOT_VERSION_STRING - the version of Gnuplot found (since CMake 2.8.8)
+
+
+
+GNUPLOT_VERSION_STRING will not work for old versions like 3.7.1.
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/FindMsys.cmake)
+
+find_program(GNUPLOT_EXECUTABLE
+  NAMES
+  gnuplot
+  pgnuplot
+  wgnupl32
+  PATHS
+  ${CYGWIN_INSTALL_PATH}/bin
+  ${MSYS_INSTALL_PATH}/usr/bin
+)
+
+if (GNUPLOT_EXECUTABLE)
+    execute_process(COMMAND "${GNUPLOT_EXECUTABLE}" --version
+                  OUTPUT_VARIABLE GNUPLOT_OUTPUT_VARIABLE
+                  ERROR_QUIET
+                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+    string(REGEX REPLACE "^gnuplot ([0-9\\.]+)( patchlevel )?" "\\1." GNUPLOT_VERSION_STRING "${GNUPLOT_OUTPUT_VARIABLE}")
+    string(REGEX REPLACE "\\.$" "" GNUPLOT_VERSION_STRING "${GNUPLOT_VERSION_STRING}")
+    unset(GNUPLOT_OUTPUT_VARIABLE)
+endif()
+
+# for compatibility
+set(GNUPLOT ${GNUPLOT_EXECUTABLE})
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Gnuplot
+                                  REQUIRED_VARS GNUPLOT_EXECUTABLE
+                                  VERSION_VAR GNUPLOT_VERSION_STRING)
+
+mark_as_advanced( GNUPLOT_EXECUTABLE )
diff --git a/share/cmake-3.22/Modules/FindHDF5.cmake b/share/cmake-3.22/Modules/FindHDF5.cmake
new file mode 100644
index 0000000..6cadadb
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindHDF5.cmake
@@ -0,0 +1,1191 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindHDF5
+--------
+
+Find Hierarchical Data Format (HDF5), a library for reading and writing
+self describing array data.
+
+
+This module invokes the ``HDF5`` wrapper compiler that should be installed
+alongside ``HDF5``.  Depending upon the ``HDF5`` Configuration, the wrapper
+compiler is called either ``h5cc`` or ``h5pcc``.  If this succeeds, the module
+will then call the compiler with the show argument to see what flags
+are used when compiling an ``HDF5`` client application.
+
+The module will optionally accept the ``COMPONENTS`` argument.  If no
+``COMPONENTS`` are specified, then the find module will default to finding
+only the ``HDF5`` C library.  If one or more ``COMPONENTS`` are specified, the
+module will attempt to find the language bindings for the specified
+components.  The valid components are ``C``, ``CXX``, ``Fortran``, ``HL``.
+``HL`` refers to the "high-level" HDF5 functions for C and Fortran.
+If the ``COMPONENTS`` argument is not given, the module will
+attempt to find only the C bindings.
+For example, to use Fortran HDF5 and HDF5-HL functions, do:
+``find_package(HDF5 COMPONENTS Fortran HL)``.
+
+This module will read the variable
+``HDF5_USE_STATIC_LIBRARIES`` to determine whether or not to prefer a
+static link to a dynamic link for ``HDF5`` and all of it's dependencies.
+To use this feature, make sure that the ``HDF5_USE_STATIC_LIBRARIES``
+variable is set before the call to find_package.
+
+.. versionadded:: 3.10
+  Support for ``HDF5_USE_STATIC_LIBRARIES`` on Windows.
+
+Both the serial and parallel ``HDF5`` wrappers are considered and the first
+directory to contain either one will be used.  In the event that both appear
+in the same directory the serial version is preferentially selected. This
+behavior can be reversed by setting the variable ``HDF5_PREFER_PARALLEL`` to
+``TRUE``.
+
+In addition to finding the includes and libraries required to compile
+an ``HDF5`` client application, this module also makes an effort to find
+tools that come with the ``HDF5`` distribution that may be useful for
+regression testing.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``HDF5_FOUND``
+  HDF5 was found on the system
+``HDF5_VERSION``
+  .. versionadded:: 3.3
+    HDF5 library version
+``HDF5_INCLUDE_DIRS``
+  Location of the HDF5 header files
+``HDF5_DEFINITIONS``
+  Required compiler definitions for HDF5
+``HDF5_LIBRARIES``
+  Required libraries for all requested bindings
+``HDF5_HL_LIBRARIES``
+  Required libraries for the HDF5 high level API for all bindings,
+  if the ``HL`` component is enabled
+
+Available components are: ``C`` ``CXX`` ``Fortran`` and ``HL``.
+For each enabled language binding, a corresponding ``HDF5_${LANG}_LIBRARIES``
+variable, and potentially ``HDF5_${LANG}_DEFINITIONS``, will be defined.
+If the ``HL`` component is enabled, then an ``HDF5_${LANG}_HL_LIBRARIES`` will
+also be defined.  With all components enabled, the following variables will be defined:
+
+``HDF5_C_DEFINITIONS``
+  Required compiler definitions for HDF5 C bindings
+``HDF5_CXX_DEFINITIONS``
+  Required compiler definitions for HDF5 C++ bindings
+``HDF5_Fortran_DEFINITIONS``
+  Required compiler definitions for HDF5 Fortran bindings
+``HDF5_C_INCLUDE_DIRS``
+  Required include directories for HDF5 C bindings
+``HDF5_CXX_INCLUDE_DIRS``
+  Required include directories for HDF5 C++ bindings
+``HDF5_Fortran_INCLUDE_DIRS``
+  Required include directories for HDF5 Fortran bindings
+``HDF5_C_LIBRARIES``
+  Required libraries for the HDF5 C bindings
+``HDF5_CXX_LIBRARIES``
+  Required libraries for the HDF5 C++ bindings
+``HDF5_Fortran_LIBRARIES``
+  Required libraries for the HDF5 Fortran bindings
+``HDF5_C_HL_LIBRARIES``
+  Required libraries for the high level C bindings
+``HDF5_CXX_HL_LIBRARIES``
+  Required libraries for the high level C++ bindings
+``HDF5_Fortran_HL_LIBRARIES``
+  Required libraries for the high level Fortran bindings.
+
+``HDF5_IS_PARALLEL``
+  HDF5 library has parallel IO support
+``HDF5_C_COMPILER_EXECUTABLE``
+  path to the HDF5 C wrapper compiler
+``HDF5_CXX_COMPILER_EXECUTABLE``
+  path to the HDF5 C++ wrapper compiler
+``HDF5_Fortran_COMPILER_EXECUTABLE``
+  path to the HDF5 Fortran wrapper compiler
+``HDF5_C_COMPILER_EXECUTABLE_NO_INTERROGATE``
+  path to the primary C compiler which is also the HDF5 wrapper
+``HDF5_CXX_COMPILER_EXECUTABLE_NO_INTERROGATE``
+  path to the primary C++ compiler which is also the HDF5 wrapper
+``HDF5_Fortran_COMPILER_EXECUTABLE_NO_INTERROGATE``
+  path to the primary Fortran compiler which is also the HDF5 wrapper
+``HDF5_DIFF_EXECUTABLE``
+  path to the HDF5 dataset comparison tool
+
+With all components enabled, the following targets will be defined:
+
+``HDF5::HDF5``
+  All detected ``HDF5_LIBRARIES``.
+``hdf5::hdf5``
+  C library.
+``hdf5::hdf5_cpp``
+  C++ library.
+``hdf5::hdf5_fortran``
+  Fortran library.
+``hdf5::hdf5_hl``
+  High-level C library.
+``hdf5::hdf5_hl_cpp``
+  High-level C++ library.
+``hdf5::hdf5_hl_fortran``
+  High-level Fortran library.
+``hdf5::h5diff``
+  ``h5diff`` executable.
+
+Hints
+^^^^^
+
+The following variables can be set to guide the search for HDF5 libraries and includes:
+
+``HDF5_PREFER_PARALLEL``
+  .. versionadded:: 3.4
+
+  set ``true`` to prefer parallel HDF5 (by default, serial is preferred)
+
+``HDF5_FIND_DEBUG``
+  .. versionadded:: 3.9
+
+  Set ``true`` to get extra debugging output.
+
+``HDF5_NO_FIND_PACKAGE_CONFIG_FILE``
+  .. versionadded:: 3.8
+
+  Set ``true`` to skip trying to find ``hdf5-config.cmake``.
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+# We haven't found HDF5 yet. Clear its state in case it is set in the parent
+# scope somewhere else. We can't rely on it because different components may
+# have been requested for this call.
+set(HDF5_FOUND OFF)
+set(HDF5_LIBRARIES)
+set(HDF5_HL_LIBRARIES)
+
+# List of the valid HDF5 components
+set(HDF5_VALID_LANGUAGE_BINDINGS C CXX Fortran)
+
+# Validate the list of find components.
+if(NOT HDF5_FIND_COMPONENTS)
+  set(HDF5_LANGUAGE_BINDINGS "C")
+else()
+  set(HDF5_LANGUAGE_BINDINGS)
+  # add the extra specified components, ensuring that they are valid.
+  set(HDF5_FIND_HL OFF)
+  foreach(_component IN LISTS HDF5_FIND_COMPONENTS)
+    list(FIND HDF5_VALID_LANGUAGE_BINDINGS ${_component} _component_location)
+    if(NOT _component_location EQUAL -1)
+      list(APPEND HDF5_LANGUAGE_BINDINGS ${_component})
+    elseif(_component STREQUAL "HL")
+      set(HDF5_FIND_HL ON)
+    elseif(_component STREQUAL "Fortran_HL") # only for compatibility
+      list(APPEND HDF5_LANGUAGE_BINDINGS Fortran)
+      set(HDF5_FIND_HL ON)
+      set(HDF5_FIND_REQUIRED_Fortran_HL FALSE)
+      set(HDF5_FIND_REQUIRED_Fortran TRUE)
+      set(HDF5_FIND_REQUIRED_HL TRUE)
+    else()
+      message(FATAL_ERROR "${_component} is not a valid HDF5 component.")
+    endif()
+  endforeach()
+  unset(_component)
+  unset(_component_location)
+  if(NOT HDF5_LANGUAGE_BINDINGS)
+    get_property(_langs GLOBAL PROPERTY ENABLED_LANGUAGES)
+    foreach(_lang IN LISTS _langs)
+      if(_lang MATCHES "^(C|CXX|Fortran)$")
+        list(APPEND HDF5_LANGUAGE_BINDINGS ${_lang})
+      endif()
+    endforeach()
+  endif()
+  list(REMOVE_ITEM HDF5_FIND_COMPONENTS Fortran_HL) # replaced by Fortran and HL
+  list(REMOVE_DUPLICATES HDF5_LANGUAGE_BINDINGS)
+endif()
+
+# Determine whether to search for serial or parallel executable first
+if(HDF5_PREFER_PARALLEL)
+  set(HDF5_C_COMPILER_NAMES h5pcc h5cc)
+  set(HDF5_CXX_COMPILER_NAMES h5pc++ h5c++)
+  set(HDF5_Fortran_COMPILER_NAMES h5pfc h5fc)
+else()
+  set(HDF5_C_COMPILER_NAMES h5cc h5pcc)
+  set(HDF5_CXX_COMPILER_NAMES h5c++ h5pc++)
+  set(HDF5_Fortran_COMPILER_NAMES h5fc h5pfc)
+endif()
+
+# Test first if the current compilers automatically wrap HDF5
+function(_HDF5_test_regular_compiler_C success version is_parallel)
+  set(scratch_directory
+    ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hdf5)
+  if(NOT ${success} OR
+     NOT EXISTS ${scratch_directory}/compiler_has_h5_c)
+    set(test_file ${scratch_directory}/cmake_hdf5_test.c)
+    file(WRITE ${test_file}
+      "#include <hdf5.h>\n"
+      "const char* info_ver = \"INFO\" \":\" H5_VERSION;\n"
+      "#ifdef H5_HAVE_PARALLEL\n"
+      "const char* info_parallel = \"INFO\" \":\" \"PARALLEL\";\n"
+      "#endif\n"
+      "int main(int argc, char **argv) {\n"
+      "  int require = 0;\n"
+      "  require += info_ver[argc];\n"
+      "#ifdef H5_HAVE_PARALLEL\n"
+      "  require += info_parallel[argc];\n"
+      "#endif\n"
+      "  hid_t fid;\n"
+      "  fid = H5Fcreate(\"foo.h5\",H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT);\n"
+      "  return 0;\n"
+      "}")
+    try_compile(${success} ${scratch_directory} ${test_file}
+      COPY_FILE ${scratch_directory}/compiler_has_h5_c
+    )
+  endif()
+  if(${success})
+    file(STRINGS ${scratch_directory}/compiler_has_h5_c INFO_STRINGS
+      REGEX "^INFO:"
+    )
+    string(REGEX MATCH "^INFO:([0-9]+\\.[0-9]+\\.[0-9]+)(-patch([0-9]+))?"
+      INFO_VER "${INFO_STRINGS}"
+    )
+    set(${version} ${CMAKE_MATCH_1})
+    if(CMAKE_MATCH_3)
+      set(${version} ${HDF5_C_VERSION}.${CMAKE_MATCH_3})
+    endif()
+    set(${version} ${${version}} PARENT_SCOPE)
+
+    if(INFO_STRINGS MATCHES "INFO:PARALLEL")
+      set(${is_parallel} TRUE PARENT_SCOPE)
+    else()
+      set(${is_parallel} FALSE PARENT_SCOPE)
+    endif()
+  endif()
+endfunction()
+
+function(_HDF5_test_regular_compiler_CXX success version is_parallel)
+  set(scratch_directory ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hdf5)
+  if(NOT ${success} OR
+     NOT EXISTS ${scratch_directory}/compiler_has_h5_cxx)
+    set(test_file ${scratch_directory}/cmake_hdf5_test.cxx)
+    file(WRITE ${test_file}
+      "#include <H5Cpp.h>\n"
+      "#ifndef H5_NO_NAMESPACE\n"
+      "using namespace H5;\n"
+      "#endif\n"
+      "const char* info_ver = \"INFO\" \":\" H5_VERSION;\n"
+      "#ifdef H5_HAVE_PARALLEL\n"
+      "const char* info_parallel = \"INFO\" \":\" \"PARALLEL\";\n"
+      "#endif\n"
+      "int main(int argc, char **argv) {\n"
+      "  int require = 0;\n"
+      "  require += info_ver[argc];\n"
+      "#ifdef H5_HAVE_PARALLEL\n"
+      "  require += info_parallel[argc];\n"
+      "#endif\n"
+      "  H5File file(\"foo.h5\", H5F_ACC_TRUNC);\n"
+      "  return 0;\n"
+      "}")
+    try_compile(${success} ${scratch_directory} ${test_file}
+      COPY_FILE ${scratch_directory}/compiler_has_h5_cxx
+    )
+  endif()
+  if(${success})
+    file(STRINGS ${scratch_directory}/compiler_has_h5_cxx INFO_STRINGS
+      REGEX "^INFO:"
+    )
+    string(REGEX MATCH "^INFO:([0-9]+\\.[0-9]+\\.[0-9]+)(-patch([0-9]+))?"
+      INFO_VER "${INFO_STRINGS}"
+    )
+    set(${version} ${CMAKE_MATCH_1})
+    if(CMAKE_MATCH_3)
+      set(${version} ${HDF5_CXX_VERSION}.${CMAKE_MATCH_3})
+    endif()
+    set(${version} ${${version}} PARENT_SCOPE)
+
+    if(INFO_STRINGS MATCHES "INFO:PARALLEL")
+      set(${is_parallel} TRUE PARENT_SCOPE)
+    else()
+      set(${is_parallel} FALSE PARENT_SCOPE)
+    endif()
+  endif()
+endfunction()
+
+function(_HDF5_test_regular_compiler_Fortran success is_parallel)
+  if(NOT ${success})
+    set(scratch_directory
+      ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hdf5)
+    set(test_file ${scratch_directory}/cmake_hdf5_test.f90)
+    file(WRITE ${test_file}
+      "program hdf5_hello\n"
+      "  use hdf5\n"
+      "  use h5lt\n"
+      "  use h5ds\n"
+      "  integer error\n"
+      "  call h5open_f(error)\n"
+      "  call h5close_f(error)\n"
+      "end\n")
+    try_compile(${success} ${scratch_directory} ${test_file})
+    if(${success})
+      execute_process(COMMAND ${CMAKE_Fortran_COMPILER} -showconfig
+        OUTPUT_VARIABLE config_output
+        ERROR_VARIABLE config_error
+        RESULT_VARIABLE config_result
+        )
+      if(config_output MATCHES "Parallel HDF5: yes")
+        set(${is_parallel} TRUE PARENT_SCOPE)
+      else()
+        set(${is_parallel} FALSE PARENT_SCOPE)
+      endif()
+    endif()
+  endif()
+endfunction()
+
+# Invoke the HDF5 wrapper compiler.  The compiler return value is stored to the
+# return_value argument, the text output is stored to the output variable.
+function( _HDF5_invoke_compiler language output_var return_value_var version_var is_parallel_var)
+  set(is_parallel FALSE)
+  if(HDF5_USE_STATIC_LIBRARIES)
+    set(lib_type_args -noshlib)
+  else()
+    set(lib_type_args -shlib)
+  endif()
+  set(scratch_dir ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hdf5)
+  if("${language}" STREQUAL "C")
+    set(test_file ${scratch_dir}/cmake_hdf5_test.c)
+  elseif("${language}" STREQUAL "CXX")
+    set(test_file ${scratch_dir}/cmake_hdf5_test.cxx)
+  elseif("${language}" STREQUAL "Fortran")
+    set(test_file ${scratch_dir}/cmake_hdf5_test.f90)
+  endif()
+  # Verify that the compiler wrapper can actually compile: sometimes the compiler
+  # wrapper exists, but not the compiler.  E.g. Miniconda / Anaconda Python
+  execute_process(
+    COMMAND ${HDF5_${language}_COMPILER_EXECUTABLE} ${test_file}
+    WORKING_DIRECTORY ${scratch_dir}
+    OUTPUT_VARIABLE output
+    ERROR_VARIABLE output
+    RESULT_VARIABLE return_value
+    )
+  if(return_value AND NOT HDF5_FIND_QUIETLY)
+    message(STATUS
+      "HDF5 ${language} compiler wrapper is unable to compile a minimal HDF5 program.")
+  else()
+    execute_process(
+      COMMAND ${HDF5_${language}_COMPILER_EXECUTABLE} -show ${lib_type_args} ${test_file}
+      WORKING_DIRECTORY ${scratch_dir}
+      OUTPUT_VARIABLE output
+      ERROR_VARIABLE output
+      RESULT_VARIABLE return_value
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+      )
+    if(return_value AND NOT HDF5_FIND_QUIETLY)
+      message(STATUS
+        "Unable to determine HDF5 ${language} flags from HDF5 wrapper.")
+    endif()
+    execute_process(
+      COMMAND ${HDF5_${language}_COMPILER_EXECUTABLE} -showconfig
+      OUTPUT_VARIABLE config_output
+      ERROR_VARIABLE config_output
+      RESULT_VARIABLE return_value
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+      )
+    if(return_value AND NOT HDF5_FIND_QUIETLY)
+      message(STATUS
+        "Unable to determine HDF5 ${language} version_var from HDF5 wrapper.")
+    endif()
+    string(REGEX MATCH "HDF5 Version: ([a-zA-Z0-9\\.\\-]*)" version "${config_output}")
+    if(version)
+      string(REPLACE "HDF5 Version: " "" version "${version}")
+      string(REPLACE "-patch" "." version "${version}")
+    endif()
+    if(config_output MATCHES "Parallel HDF5: yes")
+      set(is_parallel TRUE)
+    endif()
+  endif()
+  foreach(var output return_value version is_parallel)
+    set(${${var}_var} ${${var}} PARENT_SCOPE)
+  endforeach()
+endfunction()
+
+# Parse a compile line for definitions, includes, library paths, and libraries.
+function(_HDF5_parse_compile_line compile_line_var include_paths definitions
+    library_paths libraries libraries_hl)
+
+  separate_arguments(_compile_args NATIVE_COMMAND "${${compile_line_var}}")
+
+  foreach(_arg IN LISTS _compile_args)
+    if("${_arg}" MATCHES "^-I(.*)$")
+      # include directory
+      list(APPEND include_paths "${CMAKE_MATCH_1}")
+    elseif("${_arg}" MATCHES "^-D(.*)$")
+      # compile definition
+      list(APPEND definitions "-D${CMAKE_MATCH_1}")
+    elseif("${_arg}" MATCHES "^-L(.*)$")
+      # library search path
+      list(APPEND library_paths "${CMAKE_MATCH_1}")
+    elseif("${_arg}" MATCHES "^-l(hdf5.*hl.*)$")
+      # library name (hl)
+      list(APPEND libraries_hl "${CMAKE_MATCH_1}")
+    elseif("${_arg}" MATCHES "^-l(.*)$")
+      # library name
+      list(APPEND libraries "${CMAKE_MATCH_1}")
+    elseif("${_arg}" MATCHES "^(.:)?[/\\].*\\.(a|so|dylib|sl|lib)$")
+      # library file
+      if(NOT EXISTS "${_arg}")
+        continue()
+      endif()
+      get_filename_component(_lpath "${_arg}" DIRECTORY)
+      get_filename_component(_lname "${_arg}" NAME_WE)
+      string(REGEX REPLACE "^lib" "" _lname "${_lname}")
+      list(APPEND library_paths "${_lpath}")
+      if(_lname MATCHES "hdf5.*hl")
+        list(APPEND libraries_hl "${_lname}")
+      else()
+        list(APPEND libraries "${_lname}")
+      endif()
+    endif()
+  endforeach()
+  foreach(var include_paths definitions library_paths libraries libraries_hl)
+    set(${${var}_var} ${${var}} PARENT_SCOPE)
+  endforeach()
+endfunction()
+
+# Select a preferred imported configuration from a target
+function(_HDF5_select_imported_config target imported_conf)
+    # We will first assign the value to a local variable _imported_conf, then assign
+    # it to the function argument at the end.
+    get_target_property(_imported_conf ${target} MAP_IMPORTED_CONFIG_${CMAKE_BUILD_TYPE})
+    if (NOT _imported_conf)
+        # Get available imported configurations by examining target properties
+        get_target_property(_imported_conf ${target} IMPORTED_CONFIGURATIONS)
+        if(HDF5_FIND_DEBUG)
+            message(STATUS "Found imported configurations: ${_imported_conf}")
+        endif()
+        # Find the imported configuration that we prefer.
+        # We do this by making list of configurations in order of preference,
+        # starting with ${CMAKE_BUILD_TYPE} and ending with the first imported_conf
+        set(_preferred_confs ${CMAKE_BUILD_TYPE})
+        list(GET _imported_conf 0 _fallback_conf)
+        list(APPEND _preferred_confs RELWITHDEBINFO RELEASE DEBUG ${_fallback_conf})
+        if(HDF5_FIND_DEBUG)
+            message(STATUS "Start search through imported configurations in the following order: ${_preferred_confs}")
+        endif()
+        # Now find the first of these that is present in imported_conf
+        cmake_policy(PUSH)
+        cmake_policy(SET CMP0057 NEW) # support IN_LISTS
+        foreach (_conf IN LISTS _preferred_confs)
+            if (${_conf} IN_LIST _imported_conf)
+               set(_imported_conf ${_conf})
+               break()
+            endif()
+        endforeach()
+        cmake_policy(POP)
+    endif()
+    if(HDF5_FIND_DEBUG)
+        message(STATUS "Selected imported configuration: ${_imported_conf}")
+    endif()
+    # assign value to function argument
+    set(${imported_conf} ${_imported_conf} PARENT_SCOPE)
+endfunction()
+
+
+if(NOT HDF5_ROOT)
+    set(HDF5_ROOT $ENV{HDF5_ROOT})
+endif()
+if(HDF5_ROOT)
+    set(_HDF5_SEARCH_OPTS NO_DEFAULT_PATH)
+else()
+    set(_HDF5_SEARCH_OPTS)
+endif()
+
+# Try to find HDF5 using an installed hdf5-config.cmake
+if(NOT HDF5_FOUND AND NOT HDF5_NO_FIND_PACKAGE_CONFIG_FILE)
+    find_package(HDF5 QUIET NO_MODULE
+      HINTS ${HDF5_ROOT}
+      ${_HDF5_SEARCH_OPTS}
+      )
+    if( HDF5_FOUND)
+        if(HDF5_FIND_DEBUG)
+            message(STATUS "Found HDF5 at ${HDF5_DIR} via NO_MODULE. Now trying to extract locations etc.")
+        endif()
+        set(HDF5_IS_PARALLEL ${HDF5_ENABLE_PARALLEL})
+        set(HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIR})
+        set(HDF5_LIBRARIES)
+        if (NOT TARGET hdf5 AND NOT TARGET hdf5-static AND NOT TARGET hdf5-shared)
+            # Some HDF5 versions (e.g. 1.8.18) used hdf5::hdf5 etc
+            set(_target_prefix "hdf5::")
+        endif()
+        set(HDF5_C_TARGET ${_target_prefix}hdf5)
+        set(HDF5_C_HL_TARGET ${_target_prefix}hdf5_hl)
+        set(HDF5_CXX_TARGET ${_target_prefix}hdf5_cpp)
+        set(HDF5_CXX_HL_TARGET ${_target_prefix}hdf5_hl_cpp)
+        set(HDF5_Fortran_TARGET ${_target_prefix}hdf5_fortran)
+        set(HDF5_Fortran_HL_TARGET ${_target_prefix}hdf5_hl_fortran)
+        set(HDF5_DEFINITIONS "")
+        if(HDF5_USE_STATIC_LIBRARIES)
+            set(_suffix "-static")
+        else()
+            set(_suffix "-shared")
+        endif()
+        foreach(_lang ${HDF5_LANGUAGE_BINDINGS})
+
+            #Older versions of hdf5 don't have a static/shared suffix so
+            #if we detect that occurrence clear the suffix
+            if(_suffix AND NOT TARGET ${HDF5_${_lang}_TARGET}${_suffix})
+              if(NOT TARGET ${HDF5_${_lang}_TARGET})
+                #can't find this component with or without the suffix
+                #so bail out, and let the following locate HDF5
+                set(HDF5_FOUND FALSE)
+                break()
+              endif()
+              set(_suffix "")
+            endif()
+
+            if(HDF5_FIND_DEBUG)
+                message(STATUS "Trying to get properties of target ${HDF5_${_lang}_TARGET}${_suffix}")
+            endif()
+            # Find library for this target. Complicated as on Windows with a DLL, we need to search for the import-lib.
+            _HDF5_select_imported_config(${HDF5_${_lang}_TARGET}${_suffix} _hdf5_imported_conf)
+            get_target_property(_hdf5_lang_location ${HDF5_${_lang}_TARGET}${_suffix} IMPORTED_IMPLIB_${_hdf5_imported_conf} )
+            if (NOT _hdf5_lang_location)
+                # no import lib, just try LOCATION
+                get_target_property(_hdf5_lang_location ${HDF5_${_lang}_TARGET}${_suffix} LOCATION_${_hdf5_imported_conf})
+                if (NOT _hdf5_lang_location)
+                    get_target_property(_hdf5_lang_location ${HDF5_${_lang}_TARGET}${_suffix} LOCATION)
+                endif()
+            endif()
+            if( _hdf5_lang_location )
+                set(HDF5_${_lang}_LIBRARY ${_hdf5_lang_location})
+                list(APPEND HDF5_LIBRARIES ${HDF5_${_lang}_TARGET}${_suffix})
+                set(HDF5_${_lang}_LIBRARIES ${HDF5_${_lang}_TARGET}${_suffix})
+                set(HDF5_${_lang}_FOUND TRUE)
+            endif()
+            if(HDF5_FIND_HL)
+                get_target_property(_hdf5_lang_hl_location ${HDF5_${_lang}_HL_TARGET}${_suffix} IMPORTED_IMPLIB_${_hdf5_imported_conf} )
+                if (NOT _hdf5_lang_hl_location)
+                    get_target_property(_hdf5_lang_hl_location ${HDF5_${_lang}_HL_TARGET}${_suffix} LOCATION_${_hdf5_imported_conf})
+                    if (NOT _hdf5_hl_lang_location)
+                        get_target_property(_hdf5_hl_lang_location ${HDF5_${_lang}_HL_TARGET}${_suffix} LOCATION)
+                    endif()
+                endif()
+                if( _hdf5_lang_hl_location )
+                    set(HDF5_${_lang}_HL_LIBRARY ${_hdf5_lang_hl_location})
+                    list(APPEND HDF5_HL_LIBRARIES ${HDF5_${_lang}_HL_TARGET}${_suffix})
+                    set(HDF5_${_lang}_HL_LIBRARIES ${HDF5_${_lang}_HL_TARGET}${_suffix})
+                    set(HDF5_HL_FOUND TRUE)
+                endif()
+                unset(_hdf5_lang_hl_location)
+            endif()
+            unset(_hdf5_imported_conf)
+            unset(_hdf5_lang_location)
+        endforeach()
+    endif()
+endif()
+
+if(NOT HDF5_FOUND)
+  set(_HDF5_NEED_TO_SEARCH FALSE)
+  set(HDF5_COMPILER_NO_INTERROGATE TRUE)
+  # Only search for languages we've enabled
+  foreach(_lang IN LISTS HDF5_LANGUAGE_BINDINGS)
+    set(HDF5_${_lang}_LIBRARIES)
+    set(HDF5_${_lang}_HL_LIBRARIES)
+
+    # First check to see if our regular compiler is one of wrappers
+    if(_lang STREQUAL "C")
+      _HDF5_test_regular_compiler_C(
+        HDF5_${_lang}_COMPILER_NO_INTERROGATE
+        HDF5_${_lang}_VERSION
+        HDF5_${_lang}_IS_PARALLEL)
+    elseif(_lang STREQUAL "CXX")
+      _HDF5_test_regular_compiler_CXX(
+        HDF5_${_lang}_COMPILER_NO_INTERROGATE
+        HDF5_${_lang}_VERSION
+        HDF5_${_lang}_IS_PARALLEL)
+    elseif(_lang STREQUAL "Fortran")
+      _HDF5_test_regular_compiler_Fortran(
+        HDF5_${_lang}_COMPILER_NO_INTERROGATE
+        HDF5_${_lang}_IS_PARALLEL)
+    else()
+      continue()
+    endif()
+    if(HDF5_${_lang}_COMPILER_NO_INTERROGATE)
+      if(HDF5_FIND_DEBUG)
+        message(STATUS "HDF5: Using hdf5 compiler wrapper for all ${_lang} compiling")
+      endif()
+      set(HDF5_${_lang}_FOUND TRUE)
+      set(HDF5_${_lang}_COMPILER_EXECUTABLE_NO_INTERROGATE
+          "${CMAKE_${_lang}_COMPILER}"
+          CACHE FILEPATH "HDF5 ${_lang} compiler wrapper")
+      set(HDF5_${_lang}_DEFINITIONS)
+      set(HDF5_${_lang}_INCLUDE_DIRS)
+      set(HDF5_${_lang}_LIBRARIES)
+      set(HDF5_${_lang}_HL_LIBRARIES)
+
+      mark_as_advanced(HDF5_${_lang}_COMPILER_EXECUTABLE_NO_INTERROGATE)
+
+      set(HDF5_${_lang}_FOUND TRUE)
+      set(HDF5_HL_FOUND TRUE)
+    else()
+      set(HDF5_COMPILER_NO_INTERROGATE FALSE)
+      # If this language isn't using the wrapper, then try to seed the
+      # search options with the wrapper
+      find_program(HDF5_${_lang}_COMPILER_EXECUTABLE
+        NAMES ${HDF5_${_lang}_COMPILER_NAMES} NAMES_PER_DIR
+        HINTS ${HDF5_ROOT}
+        PATH_SUFFIXES bin Bin
+        DOC "HDF5 ${_lang} Wrapper compiler.  Used only to detect HDF5 compile flags."
+        ${_HDF5_SEARCH_OPTS}
+      )
+      mark_as_advanced( HDF5_${_lang}_COMPILER_EXECUTABLE )
+      unset(HDF5_${_lang}_COMPILER_NAMES)
+
+      if(HDF5_${_lang}_COMPILER_EXECUTABLE)
+        _HDF5_invoke_compiler(${_lang} HDF5_${_lang}_COMPILE_LINE
+          HDF5_${_lang}_RETURN_VALUE HDF5_${_lang}_VERSION HDF5_${_lang}_IS_PARALLEL)
+        if(HDF5_${_lang}_RETURN_VALUE EQUAL 0)
+          if(HDF5_FIND_DEBUG)
+            message(STATUS "HDF5: Using hdf5 compiler wrapper to determine ${_lang} configuration")
+          endif()
+          _HDF5_parse_compile_line( HDF5_${_lang}_COMPILE_LINE
+            HDF5_${_lang}_INCLUDE_DIRS
+            HDF5_${_lang}_DEFINITIONS
+            HDF5_${_lang}_LIBRARY_DIRS
+            HDF5_${_lang}_LIBRARY_NAMES
+            HDF5_${_lang}_HL_LIBRARY_NAMES
+          )
+          set(HDF5_${_lang}_LIBRARIES)
+
+          foreach(_lib IN LISTS HDF5_${_lang}_LIBRARY_NAMES)
+            set(_HDF5_SEARCH_NAMES_LOCAL)
+            if("x${_lib}" MATCHES "hdf5")
+              # hdf5 library
+              set(_HDF5_SEARCH_OPTS_LOCAL ${_HDF5_SEARCH_OPTS})
+              if(HDF5_USE_STATIC_LIBRARIES)
+                if(WIN32)
+                  set(_HDF5_SEARCH_NAMES_LOCAL lib${_lib})
+                else()
+                  set(_HDF5_SEARCH_NAMES_LOCAL lib${_lib}.a)
+                endif()
+              endif()
+            else()
+              # external library
+              set(_HDF5_SEARCH_OPTS_LOCAL)
+            endif()
+            find_library(HDF5_${_lang}_LIBRARY_${_lib}
+              NAMES ${_HDF5_SEARCH_NAMES_LOCAL} ${_lib} NAMES_PER_DIR
+              HINTS ${HDF5_${_lang}_LIBRARY_DIRS}
+                    ${HDF5_ROOT}
+              ${_HDF5_SEARCH_OPTS_LOCAL}
+              )
+            unset(_HDF5_SEARCH_OPTS_LOCAL)
+            unset(_HDF5_SEARCH_NAMES_LOCAL)
+            if(HDF5_${_lang}_LIBRARY_${_lib})
+              list(APPEND HDF5_${_lang}_LIBRARIES ${HDF5_${_lang}_LIBRARY_${_lib}})
+            else()
+              list(APPEND HDF5_${_lang}_LIBRARIES ${_lib})
+            endif()
+          endforeach()
+          if(HDF5_FIND_HL)
+            set(HDF5_${_lang}_HL_LIBRARIES)
+            foreach(_lib IN LISTS HDF5_${_lang}_HL_LIBRARY_NAMES)
+              set(_HDF5_SEARCH_NAMES_LOCAL)
+              if("x${_lib}" MATCHES "hdf5")
+                # hdf5 library
+                set(_HDF5_SEARCH_OPTS_LOCAL ${_HDF5_SEARCH_OPTS})
+                if(HDF5_USE_STATIC_LIBRARIES)
+                  if(WIN32)
+                    set(_HDF5_SEARCH_NAMES_LOCAL lib${_lib})
+                  else()
+                    set(_HDF5_SEARCH_NAMES_LOCAL lib${_lib}.a)
+                  endif()
+                endif()
+              else()
+                # external library
+                set(_HDF5_SEARCH_OPTS_LOCAL)
+              endif()
+              find_library(HDF5_${_lang}_LIBRARY_${_lib}
+                NAMES ${_HDF5_SEARCH_NAMES_LOCAL} ${_lib} NAMES_PER_DIR
+                HINTS ${HDF5_${_lang}_LIBRARY_DIRS}
+                      ${HDF5_ROOT}
+                ${_HDF5_SEARCH_OPTS_LOCAL}
+                )
+              unset(_HDF5_SEARCH_OPTS_LOCAL)
+              unset(_HDF5_SEARCH_NAMES_LOCAL)
+              if(HDF5_${_lang}_LIBRARY_${_lib})
+                list(APPEND HDF5_${_lang}_HL_LIBRARIES ${HDF5_${_lang}_LIBRARY_${_lib}})
+              else()
+                list(APPEND HDF5_${_lang}_HL_LIBRARIES ${_lib})
+              endif()
+            endforeach()
+            set(HDF5_HL_FOUND TRUE)
+          endif()
+
+          set(HDF5_${_lang}_FOUND TRUE)
+          list(REMOVE_DUPLICATES HDF5_${_lang}_DEFINITIONS)
+          list(REMOVE_DUPLICATES HDF5_${_lang}_INCLUDE_DIRS)
+        else()
+          set(_HDF5_NEED_TO_SEARCH TRUE)
+        endif()
+      else()
+        set(_HDF5_NEED_TO_SEARCH TRUE)
+      endif()
+    endif()
+    if(HDF5_${_lang}_VERSION)
+      if(NOT HDF5_VERSION)
+        set(HDF5_VERSION ${HDF5_${_lang}_VERSION})
+      elseif(NOT HDF5_VERSION VERSION_EQUAL HDF5_${_lang}_VERSION)
+        message(WARNING "HDF5 Version found for language ${_lang}, ${HDF5_${_lang}_VERSION} is different than previously found version ${HDF5_VERSION}")
+      endif()
+    endif()
+    if(DEFINED HDF5_${_lang}_IS_PARALLEL)
+      if(NOT DEFINED HDF5_IS_PARALLEL)
+        set(HDF5_IS_PARALLEL ${HDF5_${_lang}_IS_PARALLEL})
+      elseif(NOT HDF5_IS_PARALLEL AND HDF5_${_lang}_IS_PARALLEL)
+        message(WARNING "HDF5 found for language ${_lang} is parallel but previously found language is not parallel.")
+      elseif(HDF5_IS_PARALLEL AND NOT HDF5_${_lang}_IS_PARALLEL)
+        message(WARNING "HDF5 found for language ${_lang} is not parallel but previously found language is parallel.")
+      endif()
+    endif()
+  endforeach()
+  unset(_lib)
+else()
+  set(_HDF5_NEED_TO_SEARCH TRUE)
+endif()
+
+if(NOT HDF5_FOUND AND HDF5_COMPILER_NO_INTERROGATE)
+  # No arguments necessary, all languages can use the compiler wrappers
+  set(HDF5_FOUND TRUE)
+  set(HDF5_METHOD "Included by compiler wrappers")
+  set(HDF5_REQUIRED_VARS HDF5_METHOD)
+elseif(NOT HDF5_FOUND AND NOT _HDF5_NEED_TO_SEARCH)
+  # Compiler wrappers aren't being used by the build but were found and used
+  # to determine necessary include and library flags
+  set(HDF5_INCLUDE_DIRS)
+  set(HDF5_LIBRARIES)
+  set(HDF5_HL_LIBRARIES)
+  foreach(_lang IN LISTS HDF5_LANGUAGE_BINDINGS)
+    if(HDF5_${_lang}_FOUND)
+      if(NOT HDF5_${_lang}_COMPILER_NO_INTERROGATE)
+        list(APPEND HDF5_DEFINITIONS ${HDF5_${_lang}_DEFINITIONS})
+        list(APPEND HDF5_INCLUDE_DIRS ${HDF5_${_lang}_INCLUDE_DIRS})
+        list(APPEND HDF5_LIBRARIES ${HDF5_${_lang}_LIBRARIES})
+        if(HDF5_FIND_HL)
+          list(APPEND HDF5_HL_LIBRARIES ${HDF5_${_lang}_HL_LIBRARIES})
+        endif()
+      endif()
+    endif()
+  endforeach()
+  list(REMOVE_DUPLICATES HDF5_DEFINITIONS)
+  list(REMOVE_DUPLICATES HDF5_INCLUDE_DIRS)
+  set(HDF5_FOUND TRUE)
+  set(HDF5_REQUIRED_VARS HDF5_LIBRARIES)
+  if(HDF5_FIND_HL)
+    list(APPEND HDF5_REQUIRED_VARS HDF5_HL_LIBRARIES)
+  endif()
+endif()
+
+find_program( HDF5_DIFF_EXECUTABLE
+    NAMES h5diff
+    HINTS ${HDF5_ROOT}
+    PATH_SUFFIXES bin Bin
+    ${_HDF5_SEARCH_OPTS}
+    DOC "HDF5 file differencing tool." )
+mark_as_advanced( HDF5_DIFF_EXECUTABLE )
+
+if( NOT HDF5_FOUND )
+    # seed the initial lists of libraries to find with items we know we need
+    set(HDF5_C_LIBRARY_NAMES          hdf5)
+    set(HDF5_C_HL_LIBRARY_NAMES       hdf5_hl ${HDF5_C_LIBRARY_NAMES} )
+
+    set(HDF5_CXX_LIBRARY_NAMES        hdf5_cpp    ${HDF5_C_LIBRARY_NAMES})
+    set(HDF5_CXX_HL_LIBRARY_NAMES     hdf5_hl_cpp ${HDF5_C_HL_LIBRARY_NAMES} ${HDF5_CXX_LIBRARY_NAMES})
+
+    set(HDF5_Fortran_LIBRARY_NAMES    hdf5_fortran   ${HDF5_C_LIBRARY_NAMES})
+    set(HDF5_Fortran_HL_LIBRARY_NAMES hdf5_hl_fortran hdf5hl_fortran ${HDF5_C_HL_LIBRARY_NAMES} ${HDF5_Fortran_LIBRARY_NAMES})
+
+    # suffixes as seen on Linux, MSYS2, ...
+    set(_lib_suffixes hdf5)
+    if(NOT HDF5_PREFER_PARALLEL)
+      list(APPEND _lib_suffixes hdf5/serial)
+    endif()
+    if(HDF5_USE_STATIC_LIBRARIES)
+      set(_inc_suffixes include/static)
+    else()
+      set(_inc_suffixes include/shared)
+    endif()
+
+    foreach(_lang IN LISTS HDF5_LANGUAGE_BINDINGS)
+        set(HDF5_${_lang}_LIBRARIES)
+        set(HDF5_${_lang}_HL_LIBRARIES)
+
+        # The "main" library.
+        set(_hdf5_main_library "")
+
+        # find the HDF5 libraries
+        foreach(LIB IN LISTS HDF5_${_lang}_LIBRARY_NAMES)
+            if(HDF5_USE_STATIC_LIBRARIES)
+                # According to bug 1643 on the CMake bug tracker, this is the
+                # preferred method for searching for a static library.
+                # See https://gitlab.kitware.com/cmake/cmake/-/issues/1643.  We search
+                # first for the full static library name, but fall back to a
+                # generic search on the name if the static search fails.
+                set( THIS_LIBRARY_SEARCH_DEBUG
+                    lib${LIB}d.a lib${LIB}_debug.a lib${LIB}d lib${LIB}_D lib${LIB}_debug
+                    lib${LIB}d-static.a lib${LIB}_debug-static.a ${LIB}d-static ${LIB}_D-static ${LIB}_debug-static )
+                set( THIS_LIBRARY_SEARCH_RELEASE lib${LIB}.a lib${LIB} lib${LIB}-static.a ${LIB}-static)
+            else()
+                set( THIS_LIBRARY_SEARCH_DEBUG ${LIB}d ${LIB}_D ${LIB}_debug ${LIB}d-shared ${LIB}_D-shared ${LIB}_debug-shared)
+                set( THIS_LIBRARY_SEARCH_RELEASE ${LIB} ${LIB}-shared)
+                if(WIN32)
+                  list(APPEND HDF5_DEFINITIONS "-DH5_BUILT_AS_DYNAMIC_LIB")
+                endif()
+            endif()
+            find_library(HDF5_${LIB}_LIBRARY_DEBUG
+                NAMES ${THIS_LIBRARY_SEARCH_DEBUG}
+                HINTS ${HDF5_ROOT} PATH_SUFFIXES lib Lib ${_lib_suffixes}
+                ${_HDF5_SEARCH_OPTS}
+            )
+            find_library(HDF5_${LIB}_LIBRARY_RELEASE
+                NAMES ${THIS_LIBRARY_SEARCH_RELEASE}
+                HINTS ${HDF5_ROOT} PATH_SUFFIXES lib Lib ${_lib_suffixes}
+                ${_HDF5_SEARCH_OPTS}
+            )
+
+            # Set the "main" library if not already set.
+            if (NOT _hdf5_main_library)
+              if (HDF5_${LIB}_LIBRARY_RELEASE)
+                set(_hdf5_main_library "${HDF5_${LIB}_LIBRARY_RELEASE}")
+              elseif (HDF5_${LIB}_LIBRARY_DEBUG)
+                set(_hdf5_main_library "${HDF5_${LIB}_LIBRARY_DEBUG}")
+              endif ()
+            endif ()
+
+            select_library_configurations( HDF5_${LIB} )
+            list(APPEND HDF5_${_lang}_LIBRARIES ${HDF5_${LIB}_LIBRARY})
+        endforeach()
+        if(HDF5_${_lang}_LIBRARIES)
+            set(HDF5_${_lang}_FOUND TRUE)
+        endif()
+
+        # Append the libraries for this language binding to the list of all
+        # required libraries.
+        list(APPEND HDF5_LIBRARIES ${HDF5_${_lang}_LIBRARIES})
+
+        # find the HDF5 include directories
+        set(_hdf5_inc_extra_paths)
+        set(_hdf5_inc_extra_suffixes)
+        if("${_lang}" STREQUAL "Fortran")
+            set(HDF5_INCLUDE_FILENAME hdf5.mod HDF5.mod)
+
+            # Add library-based search paths for Fortran modules.
+            if (NOT _hdf5_main_library STREQUAL "")
+              # gfortran module directory
+              if (CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
+                get_filename_component(_hdf5_library_dir "${_hdf5_main_library}" DIRECTORY)
+                list(APPEND _hdf5_inc_extra_paths "${_hdf5_library_dir}")
+                unset(_hdf5_library_dir)
+                list(APPEND _hdf5_inc_extra_suffixes gfortran/modules)
+              endif ()
+            endif ()
+        elseif("${_lang}" STREQUAL "CXX")
+            set(HDF5_INCLUDE_FILENAME H5Cpp.h)
+        else()
+            set(HDF5_INCLUDE_FILENAME hdf5.h)
+        endif()
+
+        unset(_hdf5_main_library)
+
+        find_path(HDF5_${_lang}_INCLUDE_DIR ${HDF5_INCLUDE_FILENAME}
+            HINTS ${HDF5_ROOT}
+            PATHS $ENV{HOME}/.local/include ${_hdf5_inc_extra_paths}
+            PATH_SUFFIXES include Include ${_inc_suffixes} ${_lib_suffixes} ${_hdf5_inc_extra_suffixes}
+            ${_HDF5_SEARCH_OPTS}
+        )
+        mark_as_advanced(HDF5_${_lang}_INCLUDE_DIR)
+        unset(_hdf5_inc_extra_paths)
+        unset(_hdf5_inc_extra_suffixes)
+        # set the _DIRS variable as this is what the user will normally use
+        set(HDF5_${_lang}_INCLUDE_DIRS ${HDF5_${_lang}_INCLUDE_DIR})
+        list(APPEND HDF5_INCLUDE_DIRS ${HDF5_${_lang}_INCLUDE_DIR})
+
+        if(HDF5_FIND_HL)
+            foreach(LIB IN LISTS HDF5_${_lang}_HL_LIBRARY_NAMES)
+                if(HDF5_USE_STATIC_LIBRARIES)
+                    # According to bug 1643 on the CMake bug tracker, this is the
+                    # preferred method for searching for a static library.
+                    # See https://gitlab.kitware.com/cmake/cmake/-/issues/1643.  We search
+                    # first for the full static library name, but fall back to a
+                    # generic search on the name if the static search fails.
+                    set( THIS_LIBRARY_SEARCH_DEBUG
+                        lib${LIB}d.a lib${LIB}_debug.a lib${LIB}d lib${LIB}_D lib${LIB}_debug
+                        lib${LIB}d-static.a lib${LIB}_debug-static.a lib${LIB}d-static lib${LIB}_D-static lib${LIB}_debug-static )
+                    set( THIS_LIBRARY_SEARCH_RELEASE lib${LIB}.a lib${LIB} lib${LIB}-static.a lib${LIB}-static)
+                else()
+                    set( THIS_LIBRARY_SEARCH_DEBUG ${LIB}d ${LIB}_D ${LIB}_debug ${LIB}d-shared ${LIB}_D-shared ${LIB}_debug-shared)
+                    set( THIS_LIBRARY_SEARCH_RELEASE ${LIB} ${LIB}-shared)
+                endif()
+                find_library(HDF5_${LIB}_LIBRARY_DEBUG
+                    NAMES ${THIS_LIBRARY_SEARCH_DEBUG}
+                    HINTS ${HDF5_ROOT} PATH_SUFFIXES lib Lib ${_lib_suffixes}
+                    ${_HDF5_SEARCH_OPTS}
+                )
+                find_library(HDF5_${LIB}_LIBRARY_RELEASE
+                    NAMES ${THIS_LIBRARY_SEARCH_RELEASE}
+                    HINTS ${HDF5_ROOT} PATH_SUFFIXES lib Lib ${_lib_suffixes}
+                    ${_HDF5_SEARCH_OPTS}
+                )
+
+                select_library_configurations( HDF5_${LIB} )
+                list(APPEND HDF5_${_lang}_HL_LIBRARIES ${HDF5_${LIB}_LIBRARY})
+            endforeach()
+
+            # Append the libraries for this language binding to the list of all
+            # required libraries.
+            list(APPEND HDF5_HL_LIBRARIES ${HDF5_${_lang}_HL_LIBRARIES})
+        endif()
+    endforeach()
+    if(HDF5_FIND_HL AND HDF5_HL_LIBRARIES)
+        set(HDF5_HL_FOUND TRUE)
+    endif()
+
+    list(REMOVE_DUPLICATES HDF5_DEFINITIONS)
+    list(REMOVE_DUPLICATES HDF5_INCLUDE_DIRS)
+
+    # If the HDF5 include directory was found, open H5pubconf.h to determine if
+    # HDF5 was compiled with parallel IO support
+    set( HDF5_IS_PARALLEL FALSE )
+    set( HDF5_VERSION "" )
+    foreach( _dir IN LISTS HDF5_INCLUDE_DIRS )
+      foreach(_hdr "${_dir}/H5pubconf.h" "${_dir}/H5pubconf-64.h" "${_dir}/H5pubconf-32.h")
+        if( EXISTS "${_hdr}" )
+            file( STRINGS "${_hdr}"
+                HDF5_HAVE_PARALLEL_DEFINE
+                REGEX "HAVE_PARALLEL 1" )
+            if( HDF5_HAVE_PARALLEL_DEFINE )
+                set( HDF5_IS_PARALLEL TRUE )
+            endif()
+            unset(HDF5_HAVE_PARALLEL_DEFINE)
+
+            file( STRINGS "${_hdr}"
+                HDF5_VERSION_DEFINE
+                REGEX "^[ \t]*#[ \t]*define[ \t]+H5_VERSION[ \t]+" )
+            if( "${HDF5_VERSION_DEFINE}" MATCHES
+                "H5_VERSION[ \t]+\"([0-9]+\\.[0-9]+\\.[0-9]+)(-patch([0-9]+))?\"" )
+                set( HDF5_VERSION "${CMAKE_MATCH_1}" )
+                if( CMAKE_MATCH_3 )
+                  set( HDF5_VERSION ${HDF5_VERSION}.${CMAKE_MATCH_3})
+                endif()
+            endif()
+            unset(HDF5_VERSION_DEFINE)
+        endif()
+      endforeach()
+    endforeach()
+    unset(_hdr)
+    unset(_dir)
+    set( HDF5_IS_PARALLEL ${HDF5_IS_PARALLEL} CACHE BOOL
+        "HDF5 library compiled with parallel IO support" )
+    mark_as_advanced( HDF5_IS_PARALLEL )
+
+    set(HDF5_REQUIRED_VARS HDF5_LIBRARIES HDF5_INCLUDE_DIRS)
+    if(HDF5_FIND_HL)
+        list(APPEND HDF5_REQUIRED_VARS HDF5_HL_LIBRARIES)
+    endif()
+endif()
+
+# For backwards compatibility we set HDF5_INCLUDE_DIR to the value of
+# HDF5_INCLUDE_DIRS
+if( HDF5_INCLUDE_DIRS )
+  set( HDF5_INCLUDE_DIR "${HDF5_INCLUDE_DIRS}" )
+endif()
+
+# If HDF5_REQUIRED_VARS is empty at this point, then it's likely that
+# something external is trying to explicitly pass already found
+# locations
+if(NOT HDF5_REQUIRED_VARS)
+    set(HDF5_REQUIRED_VARS HDF5_LIBRARIES HDF5_INCLUDE_DIRS)
+endif()
+
+find_package_handle_standard_args(HDF5
+    REQUIRED_VARS ${HDF5_REQUIRED_VARS}
+    VERSION_VAR   HDF5_VERSION
+    HANDLE_COMPONENTS
+)
+
+unset(_HDF5_SEARCH_OPTS)
+
+if( HDF5_FOUND AND NOT HDF5_DIR)
+  # hide HDF5_DIR for the non-advanced user to avoid confusion with
+  # HDF5_DIR-NOT_FOUND while HDF5 was found.
+  mark_as_advanced(HDF5_DIR)
+endif()
+
+if (HDF5_FOUND)
+  if (NOT TARGET HDF5::HDF5)
+    add_library(HDF5::HDF5 INTERFACE IMPORTED)
+    string(REPLACE "-D" "" _hdf5_definitions "${HDF5_DEFINITIONS}")
+    set_target_properties(HDF5::HDF5 PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${HDF5_INCLUDE_DIRS}"
+      INTERFACE_COMPILE_DEFINITIONS "${_hdf5_definitions}")
+    unset(_hdf5_definitions)
+    target_link_libraries(HDF5::HDF5 INTERFACE ${HDF5_LIBRARIES})
+  endif ()
+
+  foreach (hdf5_lang IN LISTS HDF5_LANGUAGE_BINDINGS)
+    if (hdf5_lang STREQUAL "C")
+      set(hdf5_target_name "hdf5")
+    elseif (hdf5_lang STREQUAL "CXX")
+      set(hdf5_target_name "hdf5_cpp")
+    elseif (hdf5_lang STREQUAL "Fortran")
+      set(hdf5_target_name "hdf5_fortran")
+    else ()
+      continue ()
+    endif ()
+
+    if (NOT TARGET "hdf5::${hdf5_target_name}")
+      if (HDF5_COMPILER_NO_INTERROGATE)
+        add_library("hdf5::${hdf5_target_name}" INTERFACE IMPORTED)
+        string(REPLACE "-D" "" _hdf5_definitions "${HDF5_${hdf5_lang}_DEFINITIONS}")
+        set_target_properties("hdf5::${hdf5_target_name}" PROPERTIES
+          INTERFACE_INCLUDE_DIRECTORIES "${HDF5_${hdf5_lang}_INCLUDE_DIRS}"
+          INTERFACE_COMPILE_DEFINITIONS "${_hdf5_definitions}")
+      else()
+        if (DEFINED "HDF5_${hdf5_target_name}_LIBRARY")
+          set(_hdf5_location "${HDF5_${hdf5_target_name}_LIBRARY}")
+        elseif (DEFINED "HDF5_${hdf5_lang}_LIBRARY")
+          set(_hdf5_location "${HDF5_${hdf5_lang}_LIBRARY}")
+        elseif (DEFINED "HDF5_${hdf5_lang}_LIBRARY_${hdf5_target_name}")
+          set(_hdf5_location "${HDF5_${hdf5_lang}_LIBRARY_${hdf5_target_name}}")
+        else ()
+          # Error if we still don't have the location.
+          message(SEND_ERROR
+            "HDF5 was found, but a different variable was set which contains "
+            "the location of the `hdf5::${hdf5_target_name}` library.")
+        endif ()
+        add_library("hdf5::${hdf5_target_name}" UNKNOWN IMPORTED)
+        string(REPLACE "-D" "" _hdf5_definitions "${HDF5_${hdf5_lang}_DEFINITIONS}")
+        if (NOT HDF5_${hdf5_lang}_INCLUDE_DIRS)
+         set(HDF5_${hdf5_lang}_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS})
+        endif ()
+        set_target_properties("hdf5::${hdf5_target_name}" PROPERTIES
+          IMPORTED_LOCATION "${_hdf5_location}"
+          IMPORTED_IMPLIB "${_hdf5_location}"
+          INTERFACE_INCLUDE_DIRECTORIES "${HDF5_${hdf5_lang}_INCLUDE_DIRS}"
+          INTERFACE_COMPILE_DEFINITIONS "${_hdf5_definitions}")
+        if (_hdf5_libtype STREQUAL "SHARED")
+          set_property(TARGET "hdf5::${hdf5_target_name}" APPEND
+            PROPERTY
+              INTERFACE_COMPILE_DEFINITIONS H5_BUILT_AS_DYNAMIC_LIB)
+        elseif (_hdf5_libtype STREQUAL "STATIC")
+          set_property(TARGET "hdf5::${hdf5_target_name}" APPEND
+            PROPERTY
+              INTERFACE_COMPILE_DEFINITIONS H5_BUILT_AS_STATIC_LIB)
+        endif ()
+        unset(_hdf5_definitions)
+        unset(_hdf5_libtype)
+        unset(_hdf5_location)
+      endif ()
+    endif ()
+
+    if (NOT HDF5_FIND_HL)
+      continue ()
+    endif ()
+
+    set(hdf5_alt_target_name "")
+    if (hdf5_lang STREQUAL "C")
+      set(hdf5_target_name "hdf5_hl")
+    elseif (hdf5_lang STREQUAL "CXX")
+      set(hdf5_target_name "hdf5_hl_cpp")
+    elseif (hdf5_lang STREQUAL "Fortran")
+      set(hdf5_target_name "hdf5_hl_fortran")
+      set(hdf5_alt_target_name "hdf5hl_fortran")
+    else ()
+      continue ()
+    endif ()
+
+    if (NOT TARGET "hdf5::${hdf5_target_name}")
+      if (HDF5_COMPILER_NO_INTERROGATE)
+        add_library("hdf5::${hdf5_target_name}" INTERFACE IMPORTED)
+        string(REPLACE "-D" "" _hdf5_definitions "${HDF5_${hdf5_lang}_HL_DEFINITIONS}")
+        set_target_properties("hdf5::${hdf5_target_name}" PROPERTIES
+          INTERFACE_INCLUDE_DIRECTORIES "${HDF5_${hdf5_lang}_HL_INCLUDE_DIRS}"
+          INTERFACE_COMPILE_DEFINITIONS "${_hdf5_definitions}")
+      else()
+        if (DEFINED "HDF5_${hdf5_target_name}_LIBRARY")
+          set(_hdf5_location "${HDF5_${hdf5_target_name}_LIBRARY}")
+        elseif (DEFINED "HDF5_${hdf5_lang}_HL_LIBRARY")
+          set(_hdf5_location "${HDF5_${hdf5_lang}_HL_LIBRARY}")
+        elseif (DEFINED "HDF5_${hdf5_lang}_LIBRARY_${hdf5_target_name}")
+          set(_hdf5_location "${HDF5_${hdf5_lang}_LIBRARY_${hdf5_target_name}}")
+        elseif (hdf5_alt_target_name AND DEFINED "HDF5_${hdf5_lang}_LIBRARY_${hdf5_alt_target_name}")
+          set(_hdf5_location "${HDF5_${hdf5_lang}_LIBRARY_${hdf5_alt_target_name}}")
+        else ()
+          # Error if we still don't have the location.
+          message(SEND_ERROR
+            "HDF5 was found, but a different variable was set which contains "
+            "the location of the `hdf5::${hdf5_target_name}` library.")
+        endif ()
+        add_library("hdf5::${hdf5_target_name}" UNKNOWN IMPORTED)
+        string(REPLACE "-D" "" _hdf5_definitions "${HDF5_${hdf5_lang}_HL_DEFINITIONS}")
+        set_target_properties("hdf5::${hdf5_target_name}" PROPERTIES
+          IMPORTED_LOCATION "${_hdf5_location}"
+          IMPORTED_IMPLIB "${_hdf5_location}"
+          INTERFACE_INCLUDE_DIRECTORIES "${HDF5_${hdf5_lang}_HL_INCLUDE_DIRS}"
+          INTERFACE_COMPILE_DEFINITIONS "${_hdf5_definitions}")
+        if (_hdf5_libtype STREQUAL "SHARED")
+          set_property(TARGET "hdf5::${hdf5_target_name}" APPEND
+            PROPERTY
+              INTERFACE_COMPILE_DEFINITIONS H5_BUILT_AS_DYNAMIC_LIB)
+        elseif (_hdf5_libtype STREQUAL "STATIC")
+          set_property(TARGET "hdf5::${hdf5_target_name}" APPEND
+            PROPERTY
+              INTERFACE_COMPILE_DEFINITIONS H5_BUILT_AS_STATIC_LIB)
+        endif ()
+        unset(_hdf5_definitions)
+        unset(_hdf5_libtype)
+        unset(_hdf5_location)
+      endif ()
+    endif ()
+  endforeach ()
+  unset(hdf5_lang)
+
+  if (HDF5_DIFF_EXECUTABLE AND NOT TARGET hdf5::h5diff)
+    add_executable(hdf5::h5diff IMPORTED)
+    set_target_properties(hdf5::h5diff PROPERTIES
+      IMPORTED_LOCATION "${HDF5_DIFF_EXECUTABLE}")
+  endif ()
+endif ()
+
+if (HDF5_FIND_DEBUG)
+  message(STATUS "HDF5_DIR: ${HDF5_DIR}")
+  message(STATUS "HDF5_DEFINITIONS: ${HDF5_DEFINITIONS}")
+  message(STATUS "HDF5_INCLUDE_DIRS: ${HDF5_INCLUDE_DIRS}")
+  message(STATUS "HDF5_LIBRARIES: ${HDF5_LIBRARIES}")
+  message(STATUS "HDF5_HL_LIBRARIES: ${HDF5_HL_LIBRARIES}")
+  foreach(_lang IN LISTS HDF5_LANGUAGE_BINDINGS)
+    message(STATUS "HDF5_${_lang}_DEFINITIONS: ${HDF5_${_lang}_DEFINITIONS}")
+    message(STATUS "HDF5_${_lang}_INCLUDE_DIR: ${HDF5_${_lang}_INCLUDE_DIR}")
+    message(STATUS "HDF5_${_lang}_INCLUDE_DIRS: ${HDF5_${_lang}_INCLUDE_DIRS}")
+    message(STATUS "HDF5_${_lang}_LIBRARY: ${HDF5_${_lang}_LIBRARY}")
+    message(STATUS "HDF5_${_lang}_LIBRARIES: ${HDF5_${_lang}_LIBRARIES}")
+    message(STATUS "HDF5_${_lang}_HL_LIBRARY: ${HDF5_${_lang}_HL_LIBRARY}")
+    message(STATUS "HDF5_${_lang}_HL_LIBRARIES: ${HDF5_${_lang}_HL_LIBRARIES}")
+  endforeach()
+  message(STATUS "Defined targets (if any):")
+  foreach(_lang IN  ITEMS "" "_cpp" "_fortran")
+    foreach(_hl IN  ITEMS "" "_hl")
+      foreach(_prefix IN ITEMS "hdf5::" "")
+        foreach(_suffix IN ITEMS "-static" "-shared" "")
+          set (_target ${_prefix}hdf5${_hl}${_lang}${_suffix})
+          if (TARGET  ${_target})
+            message(STATUS "... ${_target}")
+          else()
+            #message(STATUS "... ${_target} does not exist")
+          endif()
+        endforeach()
+      endforeach()
+    endforeach()
+  endforeach()
+endif()
+unset(_lang)
+unset(_HDF5_NEED_TO_SEARCH)
diff --git a/share/cmake-3.18/Modules/FindHSPELL.cmake b/share/cmake-3.22/Modules/FindHSPELL.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindHSPELL.cmake
rename to share/cmake-3.22/Modules/FindHSPELL.cmake
diff --git a/share/cmake-3.18/Modules/FindHTMLHelp.cmake b/share/cmake-3.22/Modules/FindHTMLHelp.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindHTMLHelp.cmake
rename to share/cmake-3.22/Modules/FindHTMLHelp.cmake
diff --git a/share/cmake-3.22/Modules/FindHg.cmake b/share/cmake-3.22/Modules/FindHg.cmake
new file mode 100644
index 0000000..e9f2c82
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindHg.cmake
@@ -0,0 +1,98 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindHg
+------
+
+Extract information from a mercurial working copy.
+
+The module defines the following variables:
+
+::
+
+   HG_EXECUTABLE - path to mercurial command line client (hg)
+   HG_FOUND - true if the command line client was found
+   HG_VERSION_STRING - the version of mercurial found
+
+.. versionadded:: 3.1
+  If the command line client executable is found the following macro is defined:
+
+::
+
+  HG_WC_INFO(<dir> <var-prefix>)
+
+Hg_WC_INFO extracts information of a mercurial working copy
+at a given location.  This macro defines the following variables:
+
+::
+
+  <var-prefix>_WC_CHANGESET - current changeset
+  <var-prefix>_WC_REVISION - current revision
+
+Example usage:
+
+::
+
+   find_package(Hg)
+   if(HG_FOUND)
+     message("hg found: ${HG_EXECUTABLE}")
+     HG_WC_INFO(${PROJECT_SOURCE_DIR} Project)
+     message("Current revision is ${Project_WC_REVISION}")
+     message("Current changeset is ${Project_WC_CHANGESET}")
+   endif()
+#]=======================================================================]
+
+find_program(HG_EXECUTABLE
+  NAMES hg
+  PATHS
+    [HKEY_LOCAL_MACHINE\\Software\\TortoiseHG]
+  PATH_SUFFIXES Mercurial
+  DOC "hg command line client"
+  )
+mark_as_advanced(HG_EXECUTABLE)
+
+if(HG_EXECUTABLE)
+  set(_saved_lc_all "$ENV{LC_ALL}")
+  set(ENV{LC_ALL} "C")
+
+  set(_saved_language "$ENV{LANGUAGE}")
+  set(ENV{LANGUAGE})
+
+  execute_process(COMMAND ${HG_EXECUTABLE} --version
+                  OUTPUT_VARIABLE hg_version
+                  ERROR_QUIET
+                  RESULT_VARIABLE hg_result
+                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+  set(ENV{LC_ALL} ${_saved_lc_all})
+  set(ENV{LANGUAGE} ${_saved_language})
+
+  if(hg_result MATCHES "is not a valid Win32 application")
+    set_property(CACHE HG_EXECUTABLE PROPERTY VALUE "HG_EXECUTABLE-NOTFOUND")
+  endif()
+  if(hg_version MATCHES "^Mercurial Distributed SCM \\(version ([0-9][^)]*)\\)")
+    set(HG_VERSION_STRING "${CMAKE_MATCH_1}")
+  endif()
+  unset(hg_version)
+
+  macro(HG_WC_INFO dir prefix)
+    execute_process(COMMAND ${HG_EXECUTABLE} id -i -n
+      WORKING_DIRECTORY ${dir}
+      RESULT_VARIABLE hg_id_result
+      ERROR_VARIABLE hg_id_error
+      OUTPUT_VARIABLE ${prefix}_WC_DATA
+      OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if(NOT ${hg_id_result} EQUAL 0)
+      message(SEND_ERROR "Command \"${HG_EXECUTBALE} id -n\" in directory ${dir} failed with output:\n${hg_id_error}")
+    endif()
+
+    string(REGEX REPLACE "([0-9a-f]+)\\+? [0-9]+\\+?" "\\1" ${prefix}_WC_CHANGESET ${${prefix}_WC_DATA})
+    string(REGEX REPLACE "[0-9a-f]+\\+? ([0-9]+)\\+?" "\\1" ${prefix}_WC_REVISION ${${prefix}_WC_DATA})
+  endmacro(HG_WC_INFO)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(Hg
+                                  REQUIRED_VARS HG_EXECUTABLE
+                                  VERSION_VAR HG_VERSION_STRING)
diff --git a/share/cmake-3.22/Modules/FindICU.cmake b/share/cmake-3.22/Modules/FindICU.cmake
new file mode 100644
index 0000000..1bae825
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindICU.cmake
@@ -0,0 +1,438 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindICU
+-------
+
+.. versionadded:: 3.7
+
+Find the International Components for Unicode (ICU) libraries and
+programs.
+
+This module supports multiple components.
+Components can include any of: ``data``, ``i18n``, ``io``, ``le``,
+``lx``, ``test``, ``tu`` and ``uc``.
+
+Note that on Windows ``data`` is named ``dt`` and ``i18n`` is named
+``in``; any of the names may be used, and the appropriate
+platform-specific library name will be automatically selected.
+
+.. versionadded:: 3.11
+  Added support for static libraries on Windows.
+
+This module reports information about the ICU installation in
+several variables.  General variables::
+
+  ICU_VERSION - ICU release version
+  ICU_FOUND - true if the main programs and libraries were found
+  ICU_LIBRARIES - component libraries to be linked
+  ICU_INCLUDE_DIRS - the directories containing the ICU headers
+
+Imported targets::
+
+  ICU::<C>
+
+Where ``<C>`` is the name of an ICU component, for example
+``ICU::i18n``; ``<C>`` is lower-case.
+
+ICU programs are reported in::
+
+  ICU_GENCNVAL_EXECUTABLE - path to gencnval executable
+  ICU_ICUINFO_EXECUTABLE - path to icuinfo executable
+  ICU_GENBRK_EXECUTABLE - path to genbrk executable
+  ICU_ICU-CONFIG_EXECUTABLE - path to icu-config executable
+  ICU_GENRB_EXECUTABLE - path to genrb executable
+  ICU_GENDICT_EXECUTABLE - path to gendict executable
+  ICU_DERB_EXECUTABLE - path to derb executable
+  ICU_PKGDATA_EXECUTABLE - path to pkgdata executable
+  ICU_UCONV_EXECUTABLE - path to uconv executable
+  ICU_GENCFU_EXECUTABLE - path to gencfu executable
+  ICU_MAKECONV_EXECUTABLE - path to makeconv executable
+  ICU_GENNORM2_EXECUTABLE - path to gennorm2 executable
+  ICU_GENCCODE_EXECUTABLE - path to genccode executable
+  ICU_GENSPREP_EXECUTABLE - path to gensprep executable
+  ICU_ICUPKG_EXECUTABLE - path to icupkg executable
+  ICU_GENCMN_EXECUTABLE - path to gencmn executable
+
+ICU component libraries are reported in::
+
+  ICU_<C>_FOUND - ON if component was found; ``<C>`` is upper-case.
+  ICU_<C>_LIBRARIES - libraries for component; ``<C>`` is upper-case.
+
+ICU datafiles are reported in::
+
+  ICU_MAKEFILE_INC - Makefile.inc
+  ICU_PKGDATA_INC - pkgdata.inc
+
+This module reads hints about search results from::
+
+  ICU_ROOT - the root of the ICU installation
+
+The environment variable ``ICU_ROOT`` may also be used; the
+ICU_ROOT variable takes precedence.
+
+The following cache variables may also be set::
+
+  ICU_<P>_EXECUTABLE - the path to executable <P>; ``<P>`` is upper-case.
+  ICU_INCLUDE_DIR - the directory containing the ICU headers
+  ICU_<C>_LIBRARY - the library for component <C>; ``<C>`` is upper-case.
+
+.. note::
+
+  In most cases none of the above variables will require setting,
+  unless multiple ICU versions are available and a specific version
+  is required.
+
+Other variables one may set to control this module are::
+
+  ICU_DEBUG - Set to ON to enable debug output from FindICU.
+#]=======================================================================]
+
+# Written by Roger Leigh <rleigh@codelibre.net>
+
+set(icu_programs
+  gencnval
+  icuinfo
+  genbrk
+  icu-config
+  genrb
+  gendict
+  derb
+  pkgdata
+  uconv
+  gencfu
+  makeconv
+  gennorm2
+  genccode
+  gensprep
+  icupkg
+  gencmn)
+
+set(icu_data
+  Makefile.inc
+  pkgdata.inc)
+
+# The ICU checks are contained in a function due to the large number
+# of temporary variables needed.
+function(_ICU_FIND)
+  # Set up search paths, taking compiler into account.  Search ICU_ROOT,
+  # with ICU_ROOT in the environment as a fallback if unset.
+  if(ICU_ROOT)
+    list(APPEND icu_roots "${ICU_ROOT}")
+  else()
+    if(NOT "$ENV{ICU_ROOT}" STREQUAL "")
+      file(TO_CMAKE_PATH "$ENV{ICU_ROOT}" NATIVE_PATH)
+      list(APPEND icu_roots "${NATIVE_PATH}")
+      set(ICU_ROOT "${NATIVE_PATH}"
+          CACHE PATH "Location of the ICU installation" FORCE)
+    endif()
+  endif()
+
+  # Find include directory
+  list(APPEND icu_include_suffixes "include")
+  find_path(ICU_INCLUDE_DIR
+            NAMES "unicode/utypes.h"
+            HINTS ${icu_roots}
+            PATH_SUFFIXES ${icu_include_suffixes}
+            DOC "ICU include directory")
+  set(ICU_INCLUDE_DIR "${ICU_INCLUDE_DIR}" PARENT_SCOPE)
+
+  # Get version
+  if(ICU_INCLUDE_DIR AND EXISTS "${ICU_INCLUDE_DIR}/unicode/uvernum.h")
+    file(STRINGS "${ICU_INCLUDE_DIR}/unicode/uvernum.h" icu_header_str
+      REGEX "^#define[\t ]+U_ICU_VERSION[\t ]+\".*\".*")
+
+    string(REGEX REPLACE "^#define[\t ]+U_ICU_VERSION[\t ]+\"([^ \\n]*)\".*"
+      "\\1" icu_version_string "${icu_header_str}")
+    set(ICU_VERSION "${icu_version_string}")
+    set(ICU_VERSION "${icu_version_string}" PARENT_SCOPE)
+    unset(icu_header_str)
+    unset(icu_version_string)
+  endif()
+
+  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+    # 64-bit binary directory
+    set(_bin64 "bin64")
+    # 64-bit library directory
+    set(_lib64 "lib64")
+  endif()
+
+
+  # Find all ICU programs
+  list(APPEND icu_binary_suffixes "${_bin64}" "bin" "sbin")
+  foreach(program ${icu_programs})
+    string(TOUPPER "${program}" program_upcase)
+    set(cache_var "ICU_${program_upcase}_EXECUTABLE")
+    set(program_var "ICU_${program_upcase}_EXECUTABLE")
+    find_program("${cache_var}"
+      NAMES "${program}"
+      HINTS ${icu_roots}
+      PATH_SUFFIXES ${icu_binary_suffixes}
+      DOC "ICU ${program} executable"
+      NO_PACKAGE_ROOT_PATH
+      )
+    mark_as_advanced("${cache_var}")
+    set("${program_var}" "${${cache_var}}" PARENT_SCOPE)
+  endforeach()
+
+  # Find all ICU libraries
+  list(APPEND icu_library_suffixes "${_lib64}" "lib")
+  set(ICU_REQUIRED_LIBS_FOUND ON)
+  set(static_prefix )
+  # static icu libraries compiled with MSVC have the prefix 's'
+  if(MSVC)
+    set(static_prefix "s")
+  endif()
+  foreach(component ${ICU_FIND_COMPONENTS})
+    string(TOUPPER "${component}" component_upcase)
+    set(component_cache "ICU_${component_upcase}_LIBRARY")
+    set(component_cache_release "${component_cache}_RELEASE")
+    set(component_cache_debug "${component_cache}_DEBUG")
+    set(component_found "ICU_${component_upcase}_FOUND")
+    set(component_found_compat "${component_upcase}_FOUND")
+    set(component_libnames "icu${component}")
+    set(component_debug_libnames "icu${component}d")
+
+    # Special case deliberate library naming mismatches between Unix
+    # and Windows builds
+    unset(component_libnames)
+    unset(component_debug_libnames)
+    list(APPEND component_libnames "icu${component}")
+    list(APPEND component_debug_libnames "icu${component}d")
+    if(component STREQUAL "data")
+      list(APPEND component_libnames "icudt")
+      # Note there is no debug variant at present
+      list(APPEND component_debug_libnames "icudtd")
+    endif()
+    if(component STREQUAL "dt")
+      list(APPEND component_libnames "icudata")
+      # Note there is no debug variant at present
+      list(APPEND component_debug_libnames "icudatad")
+    endif()
+    if(component STREQUAL "i18n")
+      list(APPEND component_libnames "icuin")
+      list(APPEND component_debug_libnames "icuind")
+    endif()
+    if(component STREQUAL "in")
+      list(APPEND component_libnames "icui18n")
+      list(APPEND component_debug_libnames "icui18nd")
+    endif()
+
+    if(static_prefix)
+      unset(static_component_libnames)
+      unset(static_component_debug_libnames)
+      foreach(component_libname ${component_libnames})
+        list(APPEND static_component_libnames
+          ${static_prefix}${component_libname})
+      endforeach()
+      foreach(component_libname ${component_debug_libnames})
+        list(APPEND static_component_debug_libnames
+          ${static_prefix}${component_libname})
+      endforeach()
+      list(APPEND component_libnames ${static_component_libnames})
+      list(APPEND component_debug_libnames ${static_component_debug_libnames})
+    endif()
+    find_library("${component_cache_release}"
+      NAMES ${component_libnames}
+      HINTS ${icu_roots}
+      PATH_SUFFIXES ${icu_library_suffixes}
+      DOC "ICU ${component} library (release)"
+      NO_PACKAGE_ROOT_PATH
+      )
+    find_library("${component_cache_debug}"
+      NAMES ${component_debug_libnames}
+      HINTS ${icu_roots}
+      PATH_SUFFIXES ${icu_library_suffixes}
+      DOC "ICU ${component} library (debug)"
+      NO_PACKAGE_ROOT_PATH
+      )
+    include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+    select_library_configurations(ICU_${component_upcase})
+    mark_as_advanced("${component_cache_release}" "${component_cache_debug}")
+    if(${component_cache})
+      set("${component_found}" ON)
+      set("${component_found_compat}" ON)
+      list(APPEND ICU_LIBRARY "${${component_cache}}")
+    endif()
+    mark_as_advanced("${component_found}")
+    mark_as_advanced("${component_found_compat}")
+    set("${component_cache}" "${${component_cache}}" PARENT_SCOPE)
+    set("${component_found}" "${${component_found}}" PARENT_SCOPE)
+    set("${component_found_compat}" "${${component_found_compat}}" PARENT_SCOPE)
+    if(component_found OR component_found_compat)
+      if (ICU_FIND_REQUIRED_${component})
+        list(APPEND ICU_LIBS_FOUND "${component} (required)")
+      else()
+        list(APPEND ICU_LIBS_FOUND "${component} (optional)")
+      endif()
+    else()
+      if (ICU_FIND_REQUIRED_${component})
+        set(ICU_REQUIRED_LIBS_FOUND OFF)
+        list(APPEND ICU_LIBS_NOTFOUND "${component} (required)")
+      else()
+        list(APPEND ICU_LIBS_NOTFOUND "${component} (optional)")
+      endif()
+    endif()
+  endforeach()
+  set(_ICU_REQUIRED_LIBS_FOUND "${ICU_REQUIRED_LIBS_FOUND}" PARENT_SCOPE)
+  set(ICU_LIBRARY "${ICU_LIBRARY}" PARENT_SCOPE)
+
+  # Find all ICU data files
+  if(CMAKE_LIBRARY_ARCHITECTURE)
+    list(APPEND icu_data_suffixes
+      "${_lib64}/${CMAKE_LIBRARY_ARCHITECTURE}/icu/${ICU_VERSION}"
+      "lib/${CMAKE_LIBRARY_ARCHITECTURE}/icu/${ICU_VERSION}"
+      "${_lib64}/${CMAKE_LIBRARY_ARCHITECTURE}/icu"
+      "lib/${CMAKE_LIBRARY_ARCHITECTURE}/icu")
+  endif()
+  list(APPEND icu_data_suffixes
+    "${_lib64}/icu/${ICU_VERSION}"
+    "lib/icu/${ICU_VERSION}"
+    "${_lib64}/icu"
+    "lib/icu")
+  foreach(data ${icu_data})
+    string(TOUPPER "${data}" data_upcase)
+    string(REPLACE "." "_" data_upcase "${data_upcase}")
+    set(cache_var "ICU_${data_upcase}")
+    set(data_var "ICU_${data_upcase}")
+    find_file("${cache_var}"
+      NAMES "${data}"
+      HINTS ${icu_roots}
+      PATH_SUFFIXES ${icu_data_suffixes}
+      DOC "ICU ${data} data file")
+    mark_as_advanced("${cache_var}")
+    set("${data_var}" "${${cache_var}}" PARENT_SCOPE)
+  endforeach()
+
+  if(NOT ICU_FIND_QUIETLY)
+    if(ICU_LIBS_FOUND)
+      message(STATUS "Found the following ICU libraries:")
+      foreach(found ${ICU_LIBS_FOUND})
+        message(STATUS "  ${found}")
+      endforeach()
+    endif()
+    if(ICU_LIBS_NOTFOUND)
+      message(STATUS "The following ICU libraries were not found:")
+      foreach(notfound ${ICU_LIBS_NOTFOUND})
+        message(STATUS "  ${notfound}")
+      endforeach()
+    endif()
+  endif()
+
+  if(ICU_DEBUG)
+    message(STATUS "--------FindICU.cmake search debug--------")
+    message(STATUS "ICU binary path search order: ${icu_roots}")
+    message(STATUS "ICU include path search order: ${icu_roots}")
+    message(STATUS "ICU library path search order: ${icu_roots}")
+    message(STATUS "----------------")
+  endif()
+endfunction()
+
+_ICU_FIND()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(ICU
+                                  FOUND_VAR ICU_FOUND
+                                  REQUIRED_VARS ICU_INCLUDE_DIR
+                                                ICU_LIBRARY
+                                                _ICU_REQUIRED_LIBS_FOUND
+                                  VERSION_VAR ICU_VERSION
+                                  FAIL_MESSAGE "Failed to find all ICU components")
+
+unset(_ICU_REQUIRED_LIBS_FOUND)
+
+if(ICU_FOUND)
+  set(ICU_INCLUDE_DIRS "${ICU_INCLUDE_DIR}")
+  set(ICU_LIBRARIES "${ICU_LIBRARY}")
+  foreach(_ICU_component ${ICU_FIND_COMPONENTS})
+    string(TOUPPER "${_ICU_component}" _ICU_component_upcase)
+    set(_ICU_component_cache "ICU_${_ICU_component_upcase}_LIBRARY")
+    set(_ICU_component_cache_release "ICU_${_ICU_component_upcase}_LIBRARY_RELEASE")
+    set(_ICU_component_cache_debug "ICU_${_ICU_component_upcase}_LIBRARY_DEBUG")
+    set(_ICU_component_lib "ICU_${_ICU_component_upcase}_LIBRARIES")
+    set(_ICU_component_found "ICU_${_ICU_component_upcase}_FOUND")
+    set(_ICU_imported_target "ICU::${_ICU_component}")
+    if(${_ICU_component_found})
+      set("${_ICU_component_lib}" "${${_ICU_component_cache}}")
+      if(NOT TARGET ${_ICU_imported_target})
+        add_library(${_ICU_imported_target} UNKNOWN IMPORTED)
+        if(ICU_INCLUDE_DIR)
+          set_target_properties(${_ICU_imported_target} PROPERTIES
+            INTERFACE_INCLUDE_DIRECTORIES "${ICU_INCLUDE_DIR}")
+        endif()
+        if(EXISTS "${${_ICU_component_cache}}")
+          set_target_properties(${_ICU_imported_target} PROPERTIES
+            IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+            IMPORTED_LOCATION "${${_ICU_component_cache}}")
+        endif()
+        if(EXISTS "${${_ICU_component_cache_release}}")
+          set_property(TARGET ${_ICU_imported_target} APPEND PROPERTY
+            IMPORTED_CONFIGURATIONS RELEASE)
+          set_target_properties(${_ICU_imported_target} PROPERTIES
+            IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
+            IMPORTED_LOCATION_RELEASE "${${_ICU_component_cache_release}}")
+        endif()
+        if(EXISTS "${${_ICU_component_cache_debug}}")
+          set_property(TARGET ${_ICU_imported_target} APPEND PROPERTY
+            IMPORTED_CONFIGURATIONS DEBUG)
+          set_target_properties(${_ICU_imported_target} PROPERTIES
+            IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
+            IMPORTED_LOCATION_DEBUG "${${_ICU_component_cache_debug}}")
+        endif()
+        if(CMAKE_DL_LIBS AND _ICU_component STREQUAL "uc")
+          set_target_properties(${_ICU_imported_target} PROPERTIES
+            INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS}")
+        endif()
+      endif()
+    endif()
+    unset(_ICU_component_upcase)
+    unset(_ICU_component_cache)
+    unset(_ICU_component_lib)
+    unset(_ICU_component_found)
+    unset(_ICU_imported_target)
+  endforeach()
+endif()
+
+if(ICU_DEBUG)
+  message(STATUS "--------FindICU.cmake results debug--------")
+  message(STATUS "ICU found: ${ICU_FOUND}")
+  message(STATUS "ICU_VERSION number: ${ICU_VERSION}")
+  message(STATUS "ICU_ROOT directory: ${ICU_ROOT}")
+  message(STATUS "ICU_INCLUDE_DIR directory: ${ICU_INCLUDE_DIR}")
+  message(STATUS "ICU_LIBRARIES: ${ICU_LIBRARIES}")
+
+  foreach(program IN LISTS icu_programs)
+    string(TOUPPER "${program}" program_upcase)
+    set(program_lib "ICU_${program_upcase}_EXECUTABLE")
+    message(STATUS "${program} program: ${program_lib}=${${program_lib}}")
+    unset(program_upcase)
+    unset(program_lib)
+  endforeach()
+
+  foreach(data IN LISTS icu_data)
+    string(TOUPPER "${data}" data_upcase)
+    string(REPLACE "." "_" data_upcase "${data_upcase}")
+    set(data_lib "ICU_${data_upcase}")
+    message(STATUS "${data} data: ${data_lib}=${${data_lib}}")
+    unset(data_upcase)
+    unset(data_lib)
+  endforeach()
+
+  foreach(component IN LISTS ICU_FIND_COMPONENTS)
+    string(TOUPPER "${component}" component_upcase)
+    set(component_lib "ICU_${component_upcase}_LIBRARIES")
+    set(component_found "ICU_${component_upcase}_FOUND")
+    set(component_found_compat "${component_upcase}_FOUND")
+    message(STATUS "${component} library found: ${component_found}=${${component_found}}")
+    message(STATUS "${component} library found (compat name): ${component_found_compat}=${${component_found_compat}}")
+    message(STATUS "${component} library: ${component_lib}=${${component_lib}}")
+    unset(component_upcase)
+    unset(component_lib)
+    unset(component_found)
+    unset(component_found_compat)
+  endforeach()
+  message(STATUS "----------------")
+endif()
+
+unset(icu_programs)
diff --git a/share/cmake-3.22/Modules/FindIce.cmake b/share/cmake-3.22/Modules/FindIce.cmake
new file mode 100644
index 0000000..543e10c
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindIce.cmake
@@ -0,0 +1,633 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindIce
+-------
+
+.. versionadded:: 3.1
+
+Find the ZeroC Internet Communication Engine (ICE) programs,
+libraries and datafiles.
+
+This module supports multiple components.
+Components can include any of: ``Freeze``, ``Glacier2``, ``Ice``,
+``IceBox``, ``IceDB``, ``IceDiscovery``, ``IceGrid``,
+``IceLocatorDiscovery``, ``IcePatch``, ``IceSSL``, ``IceStorm``,
+``IceUtil``, ``IceXML``, or ``Slice``.
+
+Ice 3.7 and later also include C++11-specific components:
+``Glacier2++11``, ``Ice++11``, ``IceBox++11``, ``IceDiscovery++11``
+``IceGrid``, ``IceLocatorDiscovery++11``, ``IceSSL++11``,
+``IceStorm++11``
+
+Note that the set of supported components is Ice version-specific.
+
+.. versionadded:: 3.4
+  Imported targets for components and most ``EXECUTABLE`` variables.
+
+.. versionadded:: 3.7
+  Debug and Release variants are found separately.
+
+.. versionadded:: 3.10
+  Ice 3.7 support, including new components, programs and the Nuget package.
+
+This module reports information about the Ice installation in
+several variables.  General variables::
+
+  Ice_VERSION - Ice release version
+  Ice_FOUND - true if the main programs and libraries were found
+  Ice_LIBRARIES - component libraries to be linked
+  Ice_INCLUDE_DIRS - the directories containing the Ice headers
+  Ice_SLICE_DIRS - the directories containing the Ice slice interface
+                   definitions
+
+Imported targets::
+
+  Ice::<C>
+
+Where ``<C>`` is the name of an Ice component, for example
+``Ice::Glacier2`` or ``Ice++11``.
+
+Ice slice programs are reported in::
+
+  Ice_SLICE2CONFLUENCE_EXECUTABLE - path to slice2confluence executable
+  Ice_SLICE2CPP_EXECUTABLE - path to slice2cpp executable
+  Ice_SLICE2CS_EXECUTABLE - path to slice2cs executable
+  Ice_SLICE2FREEZEJ_EXECUTABLE - path to slice2freezej executable
+  Ice_SLICE2FREEZE_EXECUTABLE - path to slice2freeze executable
+  Ice_SLICE2HTML_EXECUTABLE - path to slice2html executable
+  Ice_SLICE2JAVA_EXECUTABLE - path to slice2java executable
+  Ice_SLICE2JS_EXECUTABLE - path to slice2js executable
+  Ice_SLICE2MATLAB_EXECUTABLE - path to slice2matlab executable
+  Ice_SLICE2OBJC_EXECUTABLE - path to slice2objc executable
+  Ice_SLICE2PHP_EXECUTABLE - path to slice2php executable
+  Ice_SLICE2PY_EXECUTABLE - path to slice2py executable
+  Ice_SLICE2RB_EXECUTABLE - path to slice2rb executable
+
+.. versionadded:: 3.14
+  Variables for ``slice2confluence`` and ``slice2matlab``.
+
+Ice programs are reported in::
+
+  Ice_GLACIER2ROUTER_EXECUTABLE - path to glacier2router executable
+  Ice_ICEBOX_EXECUTABLE - path to icebox executable
+  Ice_ICEBOXXX11_EXECUTABLE - path to icebox++11 executable
+  Ice_ICEBOXADMIN_EXECUTABLE - path to iceboxadmin executable
+  Ice_ICEBOXD_EXECUTABLE - path to iceboxd executable
+  Ice_ICEBOXNET_EXECUTABLE - path to iceboxnet executable
+  Ice_ICEBRIDGE_EXECUTABLE - path to icebridge executable
+  Ice_ICEGRIDADMIN_EXECUTABLE - path to icegridadmin executable
+  Ice_ICEGRIDDB_EXECUTABLE - path to icegriddb executable
+  Ice_ICEGRIDNODE_EXECUTABLE - path to icegridnode executable
+  Ice_ICEGRIDNODED_EXECUTABLE - path to icegridnoded executable
+  Ice_ICEGRIDREGISTRY_EXECUTABLE - path to icegridregistry executable
+  Ice_ICEGRIDREGISTRYD_EXECUTABLE - path to icegridregistryd executable
+  Ice_ICEPATCH2CALC_EXECUTABLE - path to icepatch2calc executable
+  Ice_ICEPATCH2CLIENT_EXECUTABLE - path to icepatch2client executable
+  Ice_ICEPATCH2SERVER_EXECUTABLE - path to icepatch2server executable
+  Ice_ICESERVICEINSTALL_EXECUTABLE - path to iceserviceinstall executable
+  Ice_ICESTORMADMIN_EXECUTABLE - path to icestormadmin executable
+  Ice_ICESTORMDB_EXECUTABLE - path to icestormdb executable
+  Ice_ICESTORMMIGRATE_EXECUTABLE - path to icestormmigrate executable
+
+Ice db programs (Windows only; standard system versions on all other
+platforms) are reported in::
+
+  Ice_DB_ARCHIVE_EXECUTABLE - path to db_archive executable
+  Ice_DB_CHECKPOINT_EXECUTABLE - path to db_checkpoint executable
+  Ice_DB_DEADLOCK_EXECUTABLE - path to db_deadlock executable
+  Ice_DB_DUMP_EXECUTABLE - path to db_dump executable
+  Ice_DB_HOTBACKUP_EXECUTABLE - path to db_hotbackup executable
+  Ice_DB_LOAD_EXECUTABLE - path to db_load executable
+  Ice_DB_LOG_VERIFY_EXECUTABLE - path to db_log_verify executable
+  Ice_DB_PRINTLOG_EXECUTABLE - path to db_printlog executable
+  Ice_DB_RECOVER_EXECUTABLE - path to db_recover executable
+  Ice_DB_STAT_EXECUTABLE - path to db_stat executable
+  Ice_DB_TUNER_EXECUTABLE - path to db_tuner executable
+  Ice_DB_UPGRADE_EXECUTABLE - path to db_upgrade executable
+  Ice_DB_VERIFY_EXECUTABLE - path to db_verify executable
+  Ice_DUMPDB_EXECUTABLE - path to dumpdb executable
+  Ice_TRANSFORMDB_EXECUTABLE - path to transformdb executable
+
+Ice component libraries are reported in::
+
+  Ice_<C>_FOUND - ON if component was found
+  Ice_<C>_LIBRARIES - libraries for component
+
+Note that ``<C>`` is the uppercased name of the component.
+
+This module reads hints about search results from::
+
+  Ice_HOME - the root of the Ice installation
+
+The environment variable ``ICE_HOME`` may also be used; the
+Ice_HOME variable takes precedence.
+
+.. note::
+  On Windows, Ice 3.7.0 and later provide libraries via the NuGet
+  package manager.  Appropriate NuGet packages will be searched for
+  using ``CMAKE_PREFIX_PATH``, or alternatively ``Ice_HOME`` may be
+  set to the location of a specific NuGet package to restrict the
+  search.
+
+The following cache variables may also be set::
+
+  Ice_<P>_EXECUTABLE - the path to executable <P>
+  Ice_INCLUDE_DIR - the directory containing the Ice headers
+  Ice_SLICE_DIR - the directory containing the Ice slice interface
+                  definitions
+  Ice_<C>_LIBRARY - the library for component <C>
+
+.. note::
+
+  In most cases none of the above variables will require setting,
+  unless multiple Ice versions are available and a specific version
+  is required.  On Windows, the most recent version of Ice will be
+  found through the registry.  On Unix, the programs, headers and
+  libraries will usually be in standard locations, but Ice_SLICE_DIRS
+  might not be automatically detected (commonly known locations are
+  searched).  All the other variables are defaulted using Ice_HOME,
+  if set.  It's possible to set Ice_HOME and selectively specify
+  alternative locations for the other components; this might be
+  required for e.g. newer versions of Visual Studio if the
+  heuristics are not sufficient to identify the correct programs and
+  libraries for the specific Visual Studio version.
+
+Other variables one may set to control this module are::
+
+  Ice_DEBUG - Set to ON to enable debug output from FindIce.
+#]=======================================================================]
+
+# Written by Roger Leigh <rleigh@codelibre.net>
+
+  set(_Ice_db_programs
+      db_archive
+      db_checkpoint
+      db_deadlock
+      db_dump
+      db_hotbackup
+      db_load
+      db_log_verify
+      db_printlog
+      db_recover
+      db_stat
+      db_tuner
+      db_upgrade
+      db_verify
+      dumpdb
+      transformdb)
+
+  set(_Ice_programs
+      glacier2router
+      icebox
+      icebox++11
+      iceboxadmin
+      iceboxd
+      iceboxnet
+      icebridge
+      icegridadmin
+      icegriddb
+      icegridnode
+      icegridnoded
+      icegridregistry
+      icegridregistryd
+      icepatch2calc
+      icepatch2client
+      icepatch2server
+      iceserviceinstall
+      icestormadmin
+      icestormdb
+      icestormmigrate)
+
+  set(_Ice_slice_programs
+      slice2confluence
+      slice2cpp
+      slice2cs
+      slice2freezej
+      slice2freeze
+      slice2html
+      slice2java
+      slice2js
+      slice2matlab
+      slice2objc
+      slice2php
+      slice2py
+      slice2rb)
+
+
+# The Ice checks are contained in a function due to the large number
+# of temporary variables needed.
+function(_Ice_FIND)
+  # Released versions of Ice, including generic short forms
+  set(ice_versions
+      3
+      3.7
+      3.7.0
+      3.6
+      3.6.3
+      3.6.2
+      3.6.1
+      3.6.0
+      3.5
+      3.5.1
+      3.5.0
+      3.4
+      3.4.2
+      3.4.1
+      3.4.0
+      3.3
+      3.3.1
+      3.3.0)
+
+  foreach(ver ${ice_versions})
+    string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\$" two_digit_version_match "${ver}")
+    if(two_digit_version_match)
+      string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\$" "\\1\\2" two_digit_version "${ver}")
+      list(APPEND ice_suffix_versions "${two_digit_version}")
+    endif()
+  endforeach()
+
+  # Set up search paths, taking compiler into account.  Search Ice_HOME,
+  # with ICE_HOME in the environment as a fallback if unset.
+  if(Ice_HOME)
+    list(APPEND ice_roots "${Ice_HOME}")
+  else()
+    if(NOT "$ENV{ICE_HOME}" STREQUAL "")
+      file(TO_CMAKE_PATH "$ENV{ICE_HOME}" NATIVE_PATH)
+      list(APPEND ice_roots "${NATIVE_PATH}")
+      set(Ice_HOME "${NATIVE_PATH}"
+          CACHE PATH "Location of the Ice installation" FORCE)
+    endif()
+  endif()
+
+  set(_bin "bin/Win32")
+  set(_lib "lib/Win32")
+  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+    set(_bin "bin/x64")
+    set(_lib "lib/x64")
+    # 64-bit path suffix
+    set(_x64 "/x64")
+    # 64-bit library directory
+    set(_lib64 "lib64")
+  endif()
+
+  unset(vcvers)
+  if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" OR "${CMAKE_CXX_SIMULATE_ID}" STREQUAL "MSVC")
+    if(MSVC_TOOLSET_VERSION GREATER_EQUAL 141)
+      set(vcvers "141;140")
+    elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 100)
+      set(vcvers "${MSVC_TOOLSET_VERSION}")
+    elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 90)
+      set(vcvers "${MSVC_TOOLSET_VERSION}")
+      set(vcyear "2008")
+    elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 80)
+      set(vcvers "${MSVC_TOOLSET_VERSION}")
+      set(vcyear "2005")
+    else() # Unknown version
+      set(vcvers Unknown)
+    endif()
+  endif()
+
+  # For compatibility with ZeroC Windows builds.
+  if(vcvers)
+    list(APPEND ice_binary_suffixes "build/native/${_bin}/Release" "tools")
+    list(APPEND ice_debug_library_suffixes "build/native/${_lib}/Debug")
+    list(APPEND ice_release_library_suffixes "build/native/${_lib}/Release")
+    foreach(vcver IN LISTS vcvers)
+      # Earlier Ice (3.3) builds don't use vcnnn subdirectories, but are harmless to check.
+      list(APPEND ice_binary_suffixes "bin/vc${vcver}${_x64}" "bin/vc${vcver}")
+      list(APPEND ice_debug_library_suffixes "lib/vc${vcver}${_x64}" "lib/vc${vcver}")
+      list(APPEND ice_release_library_suffixes "lib/vc${vcver}${_x64}" "lib/vc${vcver}")
+    endforeach()
+  endif()
+  # Generic 64-bit and 32-bit directories
+  list(APPEND ice_binary_suffixes "bin${_x64}" "bin")
+  list(APPEND ice_debug_library_suffixes "libx32" "${_lib64}" "lib${_x64}" "lib")
+  list(APPEND ice_release_library_suffixes "libx32" "${_lib64}" "lib${_x64}" "lib")
+  if(vcvers)
+    list(APPEND ice_include_suffixes "build/native/include")
+  endif()
+  list(APPEND ice_include_suffixes "include")
+  list(APPEND ice_slice_suffixes "slice")
+
+  # On Windows, look in the registry for install locations.  Different
+  # versions of Ice install support different compiler versions.
+  if(vcvers)
+    foreach(ice_version ${ice_versions})
+      foreach(vcver IN LISTS vcvers)
+        list(APPEND ice_nuget_dirs "zeroc.ice.v${vcver}.${ice_version}")
+        list(APPEND freeze_nuget_dirs "zeroc.freeze.v${vcver}.${ice_version}")
+      endforeach()
+    endforeach()
+    find_path(Ice_NUGET_DIR
+              NAMES "tools/slice2cpp.exe"
+              PATH_SUFFIXES ${ice_nuget_dirs}
+              DOC "Ice NuGet directory")
+    if(Ice_NUGET_DIR)
+      list(APPEND ice_roots "${Ice_NUGET_DIR}")
+    endif()
+    find_path(Freeze_NUGET_DIR
+              NAMES "tools/slice2freeze.exe"
+              PATH_SUFFIXES ${freeze_nuget_dirs}
+              DOC "Freeze NuGet directory")
+    if(Freeze_NUGET_DIR)
+      list(APPEND ice_roots "${Freeze_NUGET_DIR}")
+    endif()
+    foreach(ice_version ${ice_versions})
+      # Ice 3.3 releases use a Visual Studio year suffix and value is
+      # enclosed in double quotes, though only the leading quote is
+      # returned by get_filename_component.
+      unset(ice_location)
+      if(vcyear)
+        get_filename_component(ice_location
+                               "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ZeroC\\Ice ${ice_version} for Visual Studio ${vcyear};InstallDir]"
+                               PATH)
+        if(ice_location AND NOT ("${ice_location}" STREQUAL "/registry" OR "${ice_location}" STREQUAL "/"))
+          string(REGEX REPLACE "^\"(.*)\"?$" "\\1" ice_location "${ice_location}")
+          get_filename_component(ice_location "${ice_location}" ABSOLUTE)
+        else()
+          unset(ice_location)
+        endif()
+      endif()
+      # Ice 3.4+ releases don't use a suffix
+      if(NOT ice_location OR "${ice_location}" STREQUAL "/registry")
+        get_filename_component(ice_location
+                               "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ZeroC\\Ice ${ice_version};InstallDir]"
+                               ABSOLUTE)
+      endif()
+
+      if(ice_location AND NOT "${ice_location}" STREQUAL "/registry")
+        list(APPEND ice_roots "${ice_location}")
+      endif()
+    endforeach()
+  else()
+    foreach(ice_version ${ice_versions})
+      # Prefer 64-bit variants if present (and using a 64-bit compiler)
+      list(APPEND ice_roots "/opt/Ice-${ice_version}")
+    endforeach()
+  endif()
+
+  # Find all Ice programs
+  foreach(program ${_Ice_db_programs} ${_Ice_programs} ${_Ice_slice_programs})
+    string(TOUPPER "${program}" program_upcase)
+    set(cache_var "Ice_${program_upcase}_EXECUTABLE")
+    set(program_var "Ice_${program_upcase}_EXECUTABLE")
+    find_program("${cache_var}" "${program}"
+      HINTS ${ice_roots}
+      PATH_SUFFIXES ${ice_binary_suffixes}
+      DOC "Ice ${program} executable")
+    mark_as_advanced(cache_var)
+    set("${program_var}" "${${cache_var}}" PARENT_SCOPE)
+  endforeach()
+
+  # Get version.
+  if(Ice_SLICE2CPP_EXECUTABLE)
+    # Execute in C locale for safety
+    set(_Ice_SAVED_LC_ALL "$ENV{LC_ALL}")
+    set(ENV{LC_ALL} C)
+
+    execute_process(COMMAND ${Ice_SLICE2CPP_EXECUTABLE} --version
+      ERROR_VARIABLE Ice_VERSION_SLICE2CPP_FULL
+      ERROR_STRIP_TRAILING_WHITESPACE)
+
+    # restore the previous LC_ALL
+    set(ENV{LC_ALL} ${_Ice_SAVED_LC_ALL})
+
+    # Make short version
+    string(REGEX REPLACE "^(.*)\\.[^.]*$" "\\1" Ice_VERSION_SLICE2CPP_SHORT "${Ice_VERSION_SLICE2CPP_FULL}")
+    set(Ice_VERSION "${Ice_VERSION_SLICE2CPP_FULL}" PARENT_SCOPE)
+  endif()
+
+  if(NOT Ice_FIND_QUIETLY)
+    message(STATUS "Ice version: ${Ice_VERSION_SLICE2CPP_FULL}")
+  endif()
+
+  # Find include directory
+  find_path(Ice_INCLUDE_DIR
+            NAMES "Ice/Ice.h"
+            HINTS ${ice_roots}
+            PATH_SUFFIXES ${ice_include_suffixes}
+            DOC "Ice include directory")
+  set(Ice_INCLUDE_DIR "${Ice_INCLUDE_DIR}" PARENT_SCOPE)
+
+  find_path(Freeze_INCLUDE_DIR
+            NAMES "Freeze/Freeze.h"
+            HINTS ${ice_roots}
+            PATH_SUFFIXES ${ice_include_suffixes}
+            DOC "Freeze include directory")
+  set(Freeze_INCLUDE_DIR "${Freeze_INCLUDE_DIR}" PARENT_SCOPE)
+
+  # In common use on Linux, MacOS X (homebrew) and FreeBSD; prefer
+  # version-specific dir
+  list(APPEND ice_slice_paths
+       /usr/local/share /usr/share)
+  list(APPEND ice_slice_suffixes
+       "Ice-${Ice_VERSION_SLICE2CPP_FULL}/slice"
+       "Ice-${Ice_VERSION_SLICE2CPP_SHORT}/slice"
+       "ice/slice"
+       Ice)
+
+  # Find slice directory
+  find_path(Ice_SLICE_DIR
+            NAMES "Ice/Connection.ice"
+            HINTS ${ice_roots}
+                  ${ice_slice_paths}
+            PATH_SUFFIXES ${ice_slice_suffixes}
+            NO_DEFAULT_PATH
+            DOC "Ice slice directory")
+  set(Ice_SLICE_DIR "${Ice_SLICE_DIR}" PARENT_SCOPE)
+
+  # Find all Ice libraries
+  set(Ice_REQUIRED_LIBS_FOUND ON)
+  foreach(component ${Ice_FIND_COMPONENTS})
+    string(TOUPPER "${component}" component_upcase)
+    set(component_cache "Ice_${component_upcase}_LIBRARY")
+    set(component_cache_release "${component_cache}_RELEASE")
+    set(component_cache_debug "${component_cache}_DEBUG")
+    set(component_found "${component_upcase}_FOUND")
+    set(component_library "${component}")
+    unset(component_library_release_names)
+    unset(component_library_debug_names)
+    if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" OR "${CMAKE_CXX_SIMULATE_ID}" STREQUAL "MSVC")
+      string(REGEX MATCH ".+\\+\\+11$" component_library_cpp11 "${component_library}")
+      if(component_library_cpp11)
+        string(REGEX REPLACE "^(.+)(\\+\\+11)$" "\\1" component_library "${component_library}")
+      endif()
+      foreach(suffix_ver ${ice_suffix_versions})
+        set(_name "${component_library}${suffix_ver}")
+        if(component_library_cpp11)
+          string(APPEND _name "++11")
+        endif()
+        list(APPEND component_library_debug_names "${_name}d")
+        list(APPEND component_library_release_names "${_name}")
+      endforeach()
+      set(_name "${component_library}")
+      if(component_library_cpp11)
+        string(APPEND _name "++11")
+      endif()
+      list(APPEND component_library_debug_names "${_name}d")
+      list(APPEND component_library_release_names "${_name}")
+    else()
+      list(APPEND component_library_debug_names "${component_library}d")
+      list(APPEND component_library_release_names "${component_library}")
+    endif()
+    find_library("${component_cache_release}" ${component_library_release_names}
+      HINTS ${ice_roots}
+      PATH_SUFFIXES ${ice_release_library_suffixes}
+      DOC "Ice ${component} library (release)")
+    find_library("${component_cache_debug}" ${component_library_debug_names}
+      HINTS ${ice_roots}
+      PATH_SUFFIXES ${ice_debug_library_suffixes}
+      DOC "Ice ${component} library (debug)")
+    include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+    select_library_configurations(Ice_${component_upcase})
+    mark_as_advanced("${component_cache_release}" "${component_cache_debug}")
+    if(${component_cache})
+      set("${component_found}" ON)
+      list(APPEND Ice_LIBRARY "${${component_cache}}")
+    endif()
+    mark_as_advanced("${component_found}")
+    set("${component_cache}" "${${component_cache}}" PARENT_SCOPE)
+    set("${component_found}" "${${component_found}}" PARENT_SCOPE)
+    if(${component_found})
+      if (Ice_FIND_REQUIRED_${component})
+        list(APPEND Ice_LIBS_FOUND "${component} (required)")
+      else()
+        list(APPEND Ice_LIBS_FOUND "${component} (optional)")
+      endif()
+    else()
+      if (Ice_FIND_REQUIRED_${component})
+        set(Ice_REQUIRED_LIBS_FOUND OFF)
+        list(APPEND Ice_LIBS_NOTFOUND "${component} (required)")
+      else()
+        list(APPEND Ice_LIBS_NOTFOUND "${component} (optional)")
+      endif()
+    endif()
+  endforeach()
+  set(_Ice_REQUIRED_LIBS_FOUND "${Ice_REQUIRED_LIBS_FOUND}" PARENT_SCOPE)
+  set(Ice_LIBRARY "${Ice_LIBRARY}" PARENT_SCOPE)
+
+  if(NOT Ice_FIND_QUIETLY)
+    if(Ice_LIBS_FOUND)
+      message(STATUS "Found the following Ice libraries:")
+      foreach(found ${Ice_LIBS_FOUND})
+        message(STATUS "  ${found}")
+      endforeach()
+    endif()
+    if(Ice_LIBS_NOTFOUND)
+      message(STATUS "The following Ice libraries were not found:")
+      foreach(notfound ${Ice_LIBS_NOTFOUND})
+        message(STATUS "  ${notfound}")
+      endforeach()
+    endif()
+  endif()
+
+  if(Ice_DEBUG)
+    message(STATUS "--------FindIce.cmake search debug--------")
+    message(STATUS "ICE binary path search order: ${ice_roots}")
+    message(STATUS "ICE binary suffixes: ${ice_binary_suffixes}")
+    message(STATUS "ICE include path search order: ${ice_roots}")
+    message(STATUS "ICE include suffixes: ${ice_include_suffixes}")
+    message(STATUS "ICE slice path search order: ${ice_roots} ${ice_slice_paths}")
+    message(STATUS "ICE slice suffixes: ${ice_slice_suffixes}")
+    message(STATUS "ICE library path search order: ${ice_roots}")
+    message(STATUS "ICE debug library suffixes: ${ice_debug_library_suffixes}")
+    message(STATUS "ICE release library suffixes: ${ice_release_library_suffixes}")
+    message(STATUS "----------------")
+  endif()
+endfunction()
+
+_Ice_FIND()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Ice
+                                  FOUND_VAR Ice_FOUND
+                                  REQUIRED_VARS Ice_SLICE2CPP_EXECUTABLE
+                                                Ice_INCLUDE_DIR
+                                                Ice_SLICE_DIR
+                                                Ice_LIBRARY
+                                                _Ice_REQUIRED_LIBS_FOUND
+                                  VERSION_VAR Ice_VERSION
+                                  FAIL_MESSAGE "Failed to find all Ice components")
+
+unset(_Ice_REQUIRED_LIBS_FOUND)
+
+if(Ice_FOUND)
+  set(Ice_INCLUDE_DIRS "${Ice_INCLUDE_DIR}")
+  if (Freeze_INCLUDE_DIR)
+    list(APPEND Ice_INCLUDE_DIRS "${Freeze_INCLUDE_DIR}")
+  endif()
+  set(Ice_SLICE_DIRS "${Ice_SLICE_DIR}")
+  set(Ice_LIBRARIES "${Ice_LIBRARY}")
+  foreach(_Ice_component ${Ice_FIND_COMPONENTS})
+    string(TOUPPER "${_Ice_component}" _Ice_component_upcase)
+    set(_Ice_component_cache "Ice_${_Ice_component_upcase}_LIBRARY")
+    set(_Ice_component_cache_release "Ice_${_Ice_component_upcase}_LIBRARY_RELEASE")
+    set(_Ice_component_cache_debug "Ice_${_Ice_component_upcase}_LIBRARY_DEBUG")
+    set(_Ice_component_lib "Ice_${_Ice_component_upcase}_LIBRARIES")
+    set(_Ice_component_found "${_Ice_component_upcase}_FOUND")
+    set(_Ice_imported_target "Ice::${_Ice_component}")
+    if(${_Ice_component_found})
+      set("${_Ice_component_lib}" "${${_Ice_component_cache}}")
+      if(NOT TARGET ${_Ice_imported_target})
+        add_library(${_Ice_imported_target} UNKNOWN IMPORTED)
+        set_target_properties(${_Ice_imported_target} PROPERTIES
+          INTERFACE_INCLUDE_DIRECTORIES "${Ice_INCLUDE_DIRS}")
+        if(EXISTS "${${_Ice_component_cache}}")
+          set_target_properties(${_Ice_imported_target} PROPERTIES
+            IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+            IMPORTED_LOCATION "${${_Ice_component_cache}}")
+        endif()
+        if(EXISTS "${${_Ice_component_cache_release}}")
+          set_property(TARGET ${_Ice_imported_target} APPEND PROPERTY
+            IMPORTED_CONFIGURATIONS RELEASE)
+          set_target_properties(${_Ice_imported_target} PROPERTIES
+            IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
+            IMPORTED_LOCATION_RELEASE "${${_Ice_component_cache_release}}")
+        endif()
+        if(EXISTS "${${_Ice_component_cache_debug}}")
+          set_property(TARGET ${_Ice_imported_target} APPEND PROPERTY
+            IMPORTED_CONFIGURATIONS DEBUG)
+          set_target_properties(${_Ice_imported_target} PROPERTIES
+            IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
+            IMPORTED_LOCATION_DEBUG "${${_Ice_component_cache_debug}}")
+        endif()
+      endif()
+    endif()
+    unset(_Ice_component_upcase)
+    unset(_Ice_component_cache)
+    unset(_Ice_component_lib)
+    unset(_Ice_component_found)
+    unset(_Ice_imported_target)
+  endforeach()
+endif()
+
+if(Ice_DEBUG)
+  message(STATUS "--------FindIce.cmake results debug--------")
+  message(STATUS "Ice_VERSION number: ${Ice_VERSION}")
+  message(STATUS "Ice_HOME directory: ${Ice_HOME}")
+  message(STATUS "Ice_INCLUDE_DIR directory: ${Ice_INCLUDE_DIR}")
+  message(STATUS "Ice_SLICE_DIR directory: ${Ice_SLICE_DIR}")
+  message(STATUS "Ice_LIBRARIES: ${Ice_LIBRARIES}")
+  message(STATUS "Freeze_INCLUDE_DIR directory: ${Freeze_INCLUDE_DIR}")
+  message(STATUS "Ice_INCLUDE_DIRS directory: ${Ice_INCLUDE_DIRS}")
+
+  foreach(program ${_Ice_db_programs} ${_Ice_programs} ${_Ice_slice_programs})
+    string(TOUPPER "${program}" program_upcase)
+    message(STATUS "${program} executable: ${Ice_${program_upcase}_EXECUTABLE}")
+  endforeach()
+
+  foreach(component ${Ice_FIND_COMPONENTS})
+    string(TOUPPER "${component}" component_upcase)
+    set(component_lib "Ice_${component_upcase}_LIBRARIES")
+    set(component_found "${component_upcase}_FOUND")
+    message(STATUS "${component} library found: ${${component_found}}")
+    message(STATUS "${component} library: ${${component_lib}}")
+  endforeach()
+  message(STATUS "----------------")
+endif()
+
+unset(_Ice_db_programs)
+unset(_Ice_programs)
+unset(_Ice_slice_programs)
diff --git a/share/cmake-3.22/Modules/FindIconv.cmake b/share/cmake-3.22/Modules/FindIconv.cmake
new file mode 100644
index 0000000..566330f
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindIconv.cmake
@@ -0,0 +1,182 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindIconv
+---------
+
+.. versionadded:: 3.11
+
+This module finds the ``iconv()`` POSIX.1 functions on the system.
+These functions might be provided in the regular C library or externally
+in the form of an additional library.
+
+The following variables are provided to indicate iconv support:
+
+.. variable:: Iconv_FOUND
+
+  Variable indicating if the iconv support was found.
+
+.. variable:: Iconv_INCLUDE_DIRS
+
+  The directories containing the iconv headers.
+
+.. variable:: Iconv_LIBRARIES
+
+  The iconv libraries to be linked.
+
+.. variable:: Iconv_VERSION
+
+  .. versionadded:: 3.21
+
+  The version of iconv found (x.y)
+
+.. variable:: Iconv_VERSION_MAJOR
+
+  .. versionadded:: 3.21
+
+  The major version of iconv
+
+.. variable:: Iconv_VERSION_MINOR
+
+  .. versionadded:: 3.21
+
+  The minor version of iconv
+
+.. variable:: Iconv_IS_BUILT_IN
+
+  A variable indicating whether iconv support is stemming from the
+  C library or not. Even if the C library provides `iconv()`, the presence of
+  an external `libiconv` implementation might lead to this being false.
+
+Additionally, the following :prop_tgt:`IMPORTED` target is being provided:
+
+.. variable:: Iconv::Iconv
+
+  Imported target for using iconv.
+
+The following cache variables may also be set:
+
+.. variable:: Iconv_INCLUDE_DIR
+
+  The directory containing the iconv headers.
+
+.. variable:: Iconv_LIBRARY
+
+  The iconv library (if not implicitly given in the C library).
+
+.. note::
+  On POSIX platforms, iconv might be part of the C library and the cache
+  variables ``Iconv_INCLUDE_DIR`` and ``Iconv_LIBRARY`` might be empty.
+
+.. note::
+  Some libiconv implementations don't embed the version number in their header files.
+  In this case the variables ``Iconv_VERSION*`` will be empty.
+
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
+if(CMAKE_C_COMPILER_LOADED)
+  include(${CMAKE_CURRENT_LIST_DIR}/CheckCSourceCompiles.cmake)
+elseif(CMAKE_CXX_COMPILER_LOADED)
+  include(${CMAKE_CURRENT_LIST_DIR}/CheckCXXSourceCompiles.cmake)
+else()
+  # If neither C nor CXX are loaded, implicit iconv makes no sense.
+  set(Iconv_IS_BUILT_IN FALSE)
+endif()
+
+# iconv can only be provided in libc on a POSIX system.
+# If any cache variable is already set, we'll skip this test.
+if(NOT DEFINED Iconv_IS_BUILT_IN)
+  if(UNIX AND NOT DEFINED Iconv_INCLUDE_DIR AND NOT DEFINED Iconv_LIBRARY)
+    cmake_push_check_state(RESET)
+    # We always suppress the message here: Otherwise on supported systems
+    # not having iconv in their C library (e.g. those using libiconv)
+    # would always display a confusing "Looking for iconv - not found" message
+    set(CMAKE_FIND_QUIETLY TRUE)
+    # The following code will not work, but it's sufficient to see if it compiles.
+    # Note: libiconv will define the iconv functions as macros, so CheckSymbolExists
+    # will not yield correct results.
+    set(Iconv_IMPLICIT_TEST_CODE
+      "
+      #include <stddef.h>
+      #include <iconv.h>
+      int main() {
+        char *a, *b;
+        size_t i, j;
+        iconv_t ic;
+        ic = iconv_open(\"to\", \"from\");
+        iconv(ic, &a, &i, &b, &j);
+        iconv_close(ic);
+      }
+      "
+    )
+    if(CMAKE_C_COMPILER_LOADED)
+      check_c_source_compiles("${Iconv_IMPLICIT_TEST_CODE}" Iconv_IS_BUILT_IN)
+    else()
+      check_cxx_source_compiles("${Iconv_IMPLICIT_TEST_CODE}" Iconv_IS_BUILT_IN)
+    endif()
+    cmake_pop_check_state()
+  else()
+    set(Iconv_IS_BUILT_IN FALSE)
+  endif()
+endif()
+
+set(_Iconv_REQUIRED_VARS)
+if(Iconv_IS_BUILT_IN)
+  set(_Iconv_REQUIRED_VARS _Iconv_IS_BUILT_IN_MSG)
+  set(_Iconv_IS_BUILT_IN_MSG "built in to C library")
+else()
+  set(_Iconv_REQUIRED_VARS Iconv_LIBRARY Iconv_INCLUDE_DIR)
+
+  find_path(Iconv_INCLUDE_DIR
+    NAMES "iconv.h"
+    DOC "iconv include directory")
+  set(Iconv_LIBRARY_NAMES "iconv" "libiconv")
+  mark_as_advanced(Iconv_INCLUDE_DIR)
+
+  find_library(Iconv_LIBRARY
+    NAMES iconv libiconv
+    NAMES_PER_DIR
+    DOC "iconv library (if not in the C library)")
+  mark_as_advanced(Iconv_LIBRARY)
+endif()
+
+# NOTE: glibc's iconv.h does not define _LIBICONV_VERSION
+if(Iconv_INCLUDE_DIR AND EXISTS "${Iconv_INCLUDE_DIR}/iconv.h")
+  file(STRINGS ${Iconv_INCLUDE_DIR}/iconv.h Iconv_VERSION_DEFINE REGEX "_LIBICONV_VERSION (.*)")
+
+  if(Iconv_VERSION_DEFINE MATCHES "(0x[A-Fa-f0-9]+)")
+    set(Iconv_VERSION_NUMBER "${CMAKE_MATCH_1}")
+    # encoding -> version number: (major<<8) + minor
+    math(EXPR Iconv_VERSION_MAJOR "${Iconv_VERSION_NUMBER} >> 8" OUTPUT_FORMAT HEXADECIMAL)
+    math(EXPR Iconv_VERSION_MINOR "${Iconv_VERSION_NUMBER} - (${Iconv_VERSION_MAJOR} << 8)" OUTPUT_FORMAT HEXADECIMAL)
+
+    math(EXPR Iconv_VERSION_MAJOR "${Iconv_VERSION_MAJOR}" OUTPUT_FORMAT DECIMAL)
+    math(EXPR Iconv_VERSION_MINOR "${Iconv_VERSION_MINOR}" OUTPUT_FORMAT DECIMAL)
+    set(Iconv_VERSION "${Iconv_VERSION_MAJOR}.${Iconv_VERSION_MINOR}")
+  endif()
+
+  unset(Iconv_VERSION_DEFINE)
+  unset(Iconv_VERSION_NUMBER)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(Iconv
+                                  REQUIRED_VARS ${_Iconv_REQUIRED_VARS}
+                                  VERSION_VAR Iconv_VERSION)
+
+if(Iconv_FOUND)
+  if(Iconv_IS_BUILT_IN)
+    set(Iconv_INCLUDE_DIRS "")
+    set(Iconv_LIBRARIES "")
+  else()
+    set(Iconv_INCLUDE_DIRS "${Iconv_INCLUDE_DIR}")
+    set(Iconv_LIBRARIES "${Iconv_LIBRARY}")
+  endif()
+  if(NOT TARGET Iconv::Iconv)
+    add_library(Iconv::Iconv INTERFACE IMPORTED)
+    set_property(TARGET Iconv::Iconv PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${Iconv_INCLUDE_DIRS}")
+    set_property(TARGET Iconv::Iconv PROPERTY INTERFACE_LINK_LIBRARIES "${Iconv_LIBRARIES}")
+  endif()
+endif()
diff --git a/share/cmake-3.18/Modules/FindIcotool.cmake b/share/cmake-3.22/Modules/FindIcotool.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindIcotool.cmake
rename to share/cmake-3.22/Modules/FindIcotool.cmake
diff --git a/share/cmake-3.22/Modules/FindImageMagick.cmake b/share/cmake-3.22/Modules/FindImageMagick.cmake
new file mode 100644
index 0000000..d7de0dd
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindImageMagick.cmake
@@ -0,0 +1,310 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindImageMagick
+---------------
+
+Find ImageMagick binary suite.
+
+.. versionadded:: 3.9
+  Added support for ImageMagick 7.
+
+This module will search for a set of ImageMagick tools specified as
+components in the :command:`find_package` call.  Typical components include,
+but are not limited to (future versions of ImageMagick might have
+additional components not listed here):
+
+::
+
+  animate
+  compare
+  composite
+  conjure
+  convert
+  display
+  identify
+  import
+  mogrify
+  montage
+  stream
+
+
+
+If no component is specified in the :command:`find_package` call, then it only
+searches for the ImageMagick executable directory.  This code defines
+the following variables:
+
+::
+
+  ImageMagick_FOUND                  - TRUE if all components are found.
+  ImageMagick_EXECUTABLE_DIR         - Full path to executables directory.
+  ImageMagick_<component>_FOUND      - TRUE if <component> is found.
+  ImageMagick_<component>_EXECUTABLE - Full path to <component> executable.
+  ImageMagick_VERSION_STRING         - the version of ImageMagick found
+                                       (since CMake 2.8.8)
+
+
+
+``ImageMagick_VERSION_STRING`` will not work for old versions like 5.2.3.
+
+There are also components for the following ImageMagick APIs:
+
+::
+
+  Magick++
+  MagickWand
+  MagickCore
+
+
+
+For these components the following variables are set:
+
+::
+
+  ImageMagick_FOUND                    - TRUE if all components are found.
+  ImageMagick_INCLUDE_DIRS             - Full paths to all include dirs.
+  ImageMagick_LIBRARIES                - Full paths to all libraries.
+  ImageMagick_<component>_FOUND        - TRUE if <component> is found.
+  ImageMagick_<component>_INCLUDE_DIRS - Full path to <component> include dirs.
+  ImageMagick_<component>_LIBRARIES    - Full path to <component> libraries.
+
+
+
+Example Usages:
+
+::
+
+  find_package(ImageMagick)
+  find_package(ImageMagick COMPONENTS convert)
+  find_package(ImageMagick COMPONENTS convert mogrify display)
+  find_package(ImageMagick COMPONENTS Magick++)
+  find_package(ImageMagick COMPONENTS Magick++ convert)
+
+
+
+Note that the standard :command:`find_package` features are supported (i.e.,
+``QUIET``, ``REQUIRED``, etc.).
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
+
+#---------------------------------------------------------------------
+# Helper functions
+#---------------------------------------------------------------------
+function(FIND_IMAGEMAGICK_API component header)
+  set(ImageMagick_${component}_FOUND FALSE PARENT_SCOPE)
+
+  pkg_check_modules(PC_${component} QUIET ${component})
+
+  find_path(ImageMagick_${component}_INCLUDE_DIR
+    NAMES ${header}
+    HINTS
+      ${PC_${component}_INCLUDEDIR}
+      ${PC_${component}_INCLUDE_DIRS}
+    PATHS
+      ${ImageMagick_INCLUDE_DIRS}
+      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ImageMagick\\Current;BinPath]/include"
+    PATH_SUFFIXES
+      ImageMagick ImageMagick-6 ImageMagick-7
+    DOC "Path to the ImageMagick arch-independent include dir."
+    NO_DEFAULT_PATH
+    )
+  find_path(ImageMagick_${component}_ARCH_INCLUDE_DIR
+    NAMES magick/magick-baseconfig.h
+    HINTS
+      ${PC_${component}_INCLUDEDIR}
+      ${PC_${component}_INCLUDE_DIRS}
+    PATHS
+      ${ImageMagick_INCLUDE_DIRS}
+      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ImageMagick\\Current;BinPath]/include"
+    PATH_SUFFIXES
+      ImageMagick ImageMagick-6 ImageMagick-7
+    DOC "Path to the ImageMagick arch-specific include dir."
+    NO_DEFAULT_PATH
+    )
+  find_library(ImageMagick_${component}_LIBRARY
+    NAMES ${ARGN}
+    HINTS
+      ${PC_${component}_LIBDIR}
+      ${PC_${component}_LIB_DIRS}
+    PATHS
+      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ImageMagick\\Current;BinPath]/lib"
+    DOC "Path to the ImageMagick Magick++ library."
+    NO_DEFAULT_PATH
+    )
+
+  # old version have only indep dir
+  if(ImageMagick_${component}_INCLUDE_DIR AND ImageMagick_${component}_LIBRARY)
+    set(ImageMagick_${component}_FOUND TRUE PARENT_SCOPE)
+
+    # Construct per-component include directories.
+    set(ImageMagick_${component}_INCLUDE_DIRS
+      ${ImageMagick_${component}_INCLUDE_DIR}
+      )
+    if(ImageMagick_${component}_ARCH_INCLUDE_DIR)
+      list(APPEND ImageMagick_${component}_INCLUDE_DIRS
+        ${ImageMagick_${component}_ARCH_INCLUDE_DIR})
+    endif()
+    list(REMOVE_DUPLICATES ImageMagick_${component}_INCLUDE_DIRS)
+    set(ImageMagick_${component}_INCLUDE_DIRS
+      ${ImageMagick_${component}_INCLUDE_DIRS} PARENT_SCOPE)
+
+    # Add the per-component include directories to the full include dirs.
+    list(APPEND ImageMagick_INCLUDE_DIRS ${ImageMagick_${component}_INCLUDE_DIRS})
+    list(REMOVE_DUPLICATES ImageMagick_INCLUDE_DIRS)
+    set(ImageMagick_INCLUDE_DIRS ${ImageMagick_INCLUDE_DIRS} PARENT_SCOPE)
+
+    list(APPEND ImageMagick_LIBRARIES
+      ${ImageMagick_${component}_LIBRARY}
+      )
+    set(ImageMagick_LIBRARIES ${ImageMagick_LIBRARIES} PARENT_SCOPE)
+  endif()
+endfunction()
+
+function(FIND_IMAGEMAGICK_EXE component)
+  set(_IMAGEMAGICK_EXECUTABLE
+    ${ImageMagick_EXECUTABLE_DIR}/${component}${CMAKE_EXECUTABLE_SUFFIX})
+  if(EXISTS ${_IMAGEMAGICK_EXECUTABLE})
+    set(ImageMagick_${component}_EXECUTABLE
+      ${_IMAGEMAGICK_EXECUTABLE}
+       PARENT_SCOPE
+       )
+    set(ImageMagick_${component}_FOUND TRUE PARENT_SCOPE)
+  else()
+    set(ImageMagick_${component}_FOUND FALSE PARENT_SCOPE)
+  endif()
+endfunction()
+
+#---------------------------------------------------------------------
+# Start Actual Work
+#---------------------------------------------------------------------
+# Try to find a ImageMagick installation binary path.
+find_path(ImageMagick_EXECUTABLE_DIR
+  NAMES mogrify${CMAKE_EXECUTABLE_SUFFIX}
+  PATHS
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ImageMagick\\Current;BinPath]"
+  DOC "Path to the ImageMagick binary directory."
+  NO_DEFAULT_PATH
+  )
+find_path(ImageMagick_EXECUTABLE_DIR
+  NAMES mogrify${CMAKE_EXECUTABLE_SUFFIX}
+  )
+
+# Find each component. Search for all tools in same dir
+# <ImageMagick_EXECUTABLE_DIR>; otherwise they should be found
+# independently and not in a cohesive module such as this one.
+unset(ImageMagick_REQUIRED_VARS)
+unset(ImageMagick_DEFAULT_EXECUTABLES)
+foreach(component ${ImageMagick_FIND_COMPONENTS}
+    # DEPRECATED: forced components for backward compatibility
+    convert mogrify import montage composite
+    )
+  if(component STREQUAL "Magick++")
+    FIND_IMAGEMAGICK_API(Magick++ Magick++.h
+      Magick++ CORE_RL_Magick++_
+      Magick++-6 Magick++-7
+      Magick++-Q8 Magick++-Q16 Magick++-Q16HDRI Magick++-Q8HDRI
+      Magick++-6.Q64 Magick++-6.Q32 Magick++-6.Q64HDRI Magick++-6.Q32HDRI
+      Magick++-6.Q16 Magick++-6.Q8 Magick++-6.Q16HDRI Magick++-6.Q8HDRI
+      Magick++-7.Q64 Magick++-7.Q32 Magick++-7.Q64HDRI Magick++-7.Q32HDRI
+      Magick++-7.Q16 Magick++-7.Q8 Magick++-7.Q16HDRI Magick++-7.Q8HDRI
+      )
+    list(APPEND ImageMagick_REQUIRED_VARS ImageMagick_Magick++_LIBRARY)
+  elseif(component STREQUAL "MagickWand")
+    FIND_IMAGEMAGICK_API(MagickWand "wand/MagickWand.h;MagickWand/MagickWand.h"
+      Wand MagickWand CORE_RL_wand_ CORE_RL_MagickWand_
+      MagickWand-6 MagickWand-7
+      MagickWand-Q16 MagickWand-Q8 MagickWand-Q16HDRI MagickWand-Q8HDRI
+      MagickWand-6.Q64 MagickWand-6.Q32 MagickWand-6.Q64HDRI MagickWand-6.Q32HDRI
+      MagickWand-6.Q16 MagickWand-6.Q8 MagickWand-6.Q16HDRI MagickWand-6.Q8HDRI
+      MagickWand-7.Q64 MagickWand-7.Q32 MagickWand-7.Q64HDRI MagickWand-7.Q32HDRI
+      MagickWand-7.Q16 MagickWand-7.Q8 MagickWand-7.Q16HDRI MagickWand-7.Q8HDRI
+      )
+    list(APPEND ImageMagick_REQUIRED_VARS ImageMagick_MagickWand_LIBRARY)
+  elseif(component STREQUAL "MagickCore")
+    FIND_IMAGEMAGICK_API(MagickCore "magick/MagickCore.h;MagickCore/MagickCore.h"
+      Magick MagickCore CORE_RL_magick_ CORE_RL_MagickCore_
+      MagickCore-6 MagickCore-7
+      MagickCore-Q16 MagickCore-Q8 MagickCore-Q16HDRI MagickCore-Q8HDRI
+      MagickCore-6.Q64 MagickCore-6.Q32 MagickCore-6.Q64HDRI MagickCore-6.Q32HDRI
+      MagickCore-6.Q16 MagickCore-6.Q8 MagickCore-6.Q16HDRI MagickCore-6.Q8HDRI
+      MagickCore-7.Q64 MagickCore-7.Q32 MagickCore-7.Q64HDRI MagickCore-7.Q32HDRI
+      MagickCore-7.Q16 MagickCore-7.Q8 MagickCore-7.Q16HDRI MagickCore-7.Q8HDRI
+      )
+    list(APPEND ImageMagick_REQUIRED_VARS ImageMagick_MagickCore_LIBRARY)
+  else()
+    if(ImageMagick_EXECUTABLE_DIR)
+      FIND_IMAGEMAGICK_EXE(${component})
+    endif()
+
+    if(ImageMagick_FIND_COMPONENTS)
+      list(FIND ImageMagick_FIND_COMPONENTS ${component} is_requested)
+      if(is_requested GREATER -1)
+        list(APPEND ImageMagick_REQUIRED_VARS ImageMagick_${component}_EXECUTABLE)
+      endif()
+    elseif(ImageMagick_${component}_EXECUTABLE)
+      # if no components were requested explicitly put all (default) executables
+      # in the list
+      list(APPEND ImageMagick_DEFAULT_EXECUTABLES ImageMagick_${component}_EXECUTABLE)
+    endif()
+  endif()
+endforeach()
+
+if(NOT ImageMagick_FIND_COMPONENTS AND NOT ImageMagick_DEFAULT_EXECUTABLES)
+  # No components were requested, and none of the default components were
+  # found. Just insert mogrify into the list of the default components to
+  # find so FPHSA below has something to check
+  list(APPEND ImageMagick_REQUIRED_VARS ImageMagick_mogrify_EXECUTABLE)
+elseif(ImageMagick_DEFAULT_EXECUTABLES)
+  list(APPEND ImageMagick_REQUIRED_VARS ${ImageMagick_DEFAULT_EXECUTABLES})
+endif()
+
+set(ImageMagick_INCLUDE_DIRS ${ImageMagick_INCLUDE_DIRS})
+set(ImageMagick_LIBRARIES ${ImageMagick_LIBRARIES})
+
+if(ImageMagick_mogrify_EXECUTABLE)
+  execute_process(COMMAND ${ImageMagick_mogrify_EXECUTABLE} -version
+                  OUTPUT_VARIABLE imagemagick_version
+                  ERROR_QUIET
+                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+  if(imagemagick_version MATCHES "^Version: ImageMagick ([-0-9\\.]+)")
+    set(ImageMagick_VERSION_STRING "${CMAKE_MATCH_1}")
+  endif()
+  unset(imagemagick_version)
+endif()
+
+#---------------------------------------------------------------------
+# Standard Package Output
+#---------------------------------------------------------------------
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(ImageMagick
+                                  REQUIRED_VARS ${ImageMagick_REQUIRED_VARS}
+                                  VERSION_VAR ImageMagick_VERSION_STRING
+  )
+# Maintain consistency with all other variables.
+set(ImageMagick_FOUND ${IMAGEMAGICK_FOUND})
+
+#---------------------------------------------------------------------
+# DEPRECATED: Setting variables for backward compatibility.
+#---------------------------------------------------------------------
+set(IMAGEMAGICK_BINARY_PATH          ${ImageMagick_EXECUTABLE_DIR}
+    CACHE PATH "Path to the ImageMagick binary directory.")
+set(IMAGEMAGICK_CONVERT_EXECUTABLE   ${ImageMagick_convert_EXECUTABLE}
+    CACHE FILEPATH "Path to ImageMagick's convert executable.")
+set(IMAGEMAGICK_MOGRIFY_EXECUTABLE   ${ImageMagick_mogrify_EXECUTABLE}
+    CACHE FILEPATH "Path to ImageMagick's mogrify executable.")
+set(IMAGEMAGICK_IMPORT_EXECUTABLE    ${ImageMagick_import_EXECUTABLE}
+    CACHE FILEPATH "Path to ImageMagick's import executable.")
+set(IMAGEMAGICK_MONTAGE_EXECUTABLE   ${ImageMagick_montage_EXECUTABLE}
+    CACHE FILEPATH "Path to ImageMagick's montage executable.")
+set(IMAGEMAGICK_COMPOSITE_EXECUTABLE ${ImageMagick_composite_EXECUTABLE}
+    CACHE FILEPATH "Path to ImageMagick's composite executable.")
+mark_as_advanced(
+  IMAGEMAGICK_BINARY_PATH
+  IMAGEMAGICK_CONVERT_EXECUTABLE
+  IMAGEMAGICK_MOGRIFY_EXECUTABLE
+  IMAGEMAGICK_IMPORT_EXECUTABLE
+  IMAGEMAGICK_MONTAGE_EXECUTABLE
+  IMAGEMAGICK_COMPOSITE_EXECUTABLE
+  )
diff --git a/share/cmake-3.22/Modules/FindIntl.cmake b/share/cmake-3.22/Modules/FindIntl.cmake
new file mode 100644
index 0000000..95eeabd
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindIntl.cmake
@@ -0,0 +1,183 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindIntl
+--------
+
+.. versionadded:: 3.2
+
+Find the Gettext libintl headers and libraries.
+
+This module reports information about the Gettext libintl
+installation in several variables.
+
+.. variable:: Intl_FOUND
+
+  True if libintl is found.
+
+.. variable:: Intl_INCLUDE_DIRS
+
+  The directory containing the libintl headers.
+
+.. variable:: Intl_LIBRARIES
+
+  The intl libraries to be linked.
+
+.. variable:: Intl_VERSION
+
+  .. versionadded:: 3.21
+
+  The version of intl found (x.y.z)
+
+.. variable:: Intl_VERSION_MAJOR
+
+  .. versionadded:: 3.21
+
+  The major version of intl
+
+.. variable:: Intl_VERSION_MINOR
+
+  .. versionadded:: 3.21
+
+  The minor version of intl
+
+.. variable:: Intl_VERSION_PATCH
+
+  .. versionadded:: 3.21
+
+  The patch version of intl
+
+.. versionadded:: 3.20
+  This module defines :prop_tgt:`IMPORTED` target ``Intl::Intl``.
+
+The following cache variables may also be set:
+
+.. variable:: Intl_INCLUDE_DIR
+
+  The directory containing the libintl headers
+
+.. variable:: Intl_LIBRARY
+
+  The libintl library (if any)
+
+.. variable:: Intl_IS_BUILT_IN
+
+  .. versionadded:: 3.20
+
+  whether ``intl`` is a part of the C library.
+
+.. note::
+  On some platforms, such as Linux with GNU libc, the gettext
+  functions are present in the C standard library and libintl
+  is not required.  ``Intl_LIBRARIES`` will be empty in this
+  case.
+
+.. note::
+  Some libintl implementations don't embed the version number in their header files.
+  In this case the variables ``Intl_VERSION*`` will be empty.
+
+.. note::
+  If you wish to use the Gettext tools (``msgmerge``,
+  ``msgfmt``, etc.), use :module:`FindGettext`.
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
+if(CMAKE_C_COMPILER_LOADED)
+  include(${CMAKE_CURRENT_LIST_DIR}/CheckCSourceCompiles.cmake)
+elseif(CMAKE_CXX_COMPILER_LOADED)
+  include(${CMAKE_CURRENT_LIST_DIR}/CheckCXXSourceCompiles.cmake)
+else()
+  # If neither C nor CXX are loaded, implicit intl makes no sense.
+  set(Intl_IS_BUILT_IN FALSE)
+endif()
+
+# Check if Intl is built in to the C library.
+if(NOT DEFINED Intl_IS_BUILT_IN)
+  if(NOT DEFINED Intl_INCLUDE_DIR AND NOT DEFINED Intl_LIBRARY)
+    cmake_push_check_state(RESET)
+    set(CMAKE_REQUIRED_QUIET TRUE)
+    set(Intl_IMPLICIT_TEST_CODE [[
+#include <libintl.h>
+int main(void) {
+  gettext("");
+  dgettext("", "");
+  dcgettext("", "", 0);
+  return 0;
+}
+]])
+    if(CMAKE_C_COMPILER_LOADED)
+      check_c_source_compiles("${Intl_IMPLICIT_TEST_CODE}" Intl_IS_BUILT_IN)
+    else()
+      check_cxx_source_compiles("${Intl_IMPLICIT_TEST_CODE}" Intl_IS_BUILT_IN)
+    endif()
+    cmake_pop_check_state()
+  else()
+    set(Intl_IS_BUILT_IN FALSE)
+  endif()
+endif()
+
+set(_Intl_REQUIRED_VARS)
+if(Intl_IS_BUILT_IN)
+  set(_Intl_REQUIRED_VARS _Intl_IS_BUILT_IN_MSG)
+  set(_Intl_IS_BUILT_IN_MSG "built in to C library")
+else()
+  set(_Intl_REQUIRED_VARS Intl_LIBRARY Intl_INCLUDE_DIR)
+
+  find_path(Intl_INCLUDE_DIR
+            NAMES "libintl.h"
+            DOC "libintl include directory")
+  mark_as_advanced(Intl_INCLUDE_DIR)
+
+  find_library(Intl_LIBRARY
+    NAMES "intl" "libintl"
+    NAMES_PER_DIR
+    DOC "libintl libraries (if not in the C library)")
+  mark_as_advanced(Intl_LIBRARY)
+endif()
+
+# NOTE: glibc's libintl.h does not define LIBINTL_VERSION
+if(Intl_INCLUDE_DIR AND EXISTS "${Intl_INCLUDE_DIR}/libintl.h")
+  file(STRINGS ${Intl_INCLUDE_DIR}/libintl.h Intl_VERSION_DEFINE REGEX "LIBINTL_VERSION (.*)")
+
+  if(Intl_VERSION_DEFINE MATCHES "(0x[A-Fa-f0-9]+)")
+    set(Intl_VERSION_NUMBER "${CMAKE_MATCH_1}")
+    # encoding -> version number: (major<<16) + (minor<<8) + patch
+    math(EXPR Intl_VERSION_MAJOR "${Intl_VERSION_NUMBER} >> 16" OUTPUT_FORMAT HEXADECIMAL)
+    math(EXPR Intl_VERSION_MINOR "(${Intl_VERSION_NUMBER} - (${Intl_VERSION_MAJOR} << 16)) >> 8" OUTPUT_FORMAT HEXADECIMAL)
+    math(EXPR Intl_VERSION_PATCH "${Intl_VERSION_NUMBER} - ((${Intl_VERSION_MAJOR} << 16) + (${Intl_VERSION_MINOR} << 8))" OUTPUT_FORMAT HEXADECIMAL)
+
+    math(EXPR Intl_VERSION_MAJOR "${Intl_VERSION_MAJOR}" OUTPUT_FORMAT DECIMAL)
+    math(EXPR Intl_VERSION_MINOR "${Intl_VERSION_MINOR}" OUTPUT_FORMAT DECIMAL)
+    math(EXPR Intl_VERSION_PATCH "${Intl_VERSION_PATCH}" OUTPUT_FORMAT DECIMAL)
+    set(Intl_VERSION "${Intl_VERSION_MAJOR}.${Intl_VERSION_MINOR}.${Intl_VERSION_PATCH}")
+  endif()
+
+  unset(Intl_VERSION_DEFINE)
+  unset(Intl_VERSION_NUMBER)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Intl
+                                  FOUND_VAR Intl_FOUND
+                                  REQUIRED_VARS ${_Intl_REQUIRED_VARS}
+                                  VERSION_VAR Intl_VERSION
+                                  FAIL_MESSAGE "Failed to find Gettext libintl")
+unset(_Intl_REQUIRED_VARS)
+unset(_Intl_IS_BUILT_IN_MSG)
+
+if(Intl_FOUND)
+  if(Intl_IS_BUILT_IN)
+    set(Intl_INCLUDE_DIRS "")
+    set(Intl_LIBRARIES "")
+  else()
+    set(Intl_INCLUDE_DIRS "${Intl_INCLUDE_DIR}")
+    set(Intl_LIBRARIES "${Intl_LIBRARY}")
+  endif()
+  if(NOT TARGET Intl::Intl)
+    add_library(Intl::Intl INTERFACE IMPORTED)
+    set_target_properties(Intl::Intl PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${Intl_INCLUDE_DIRS}"
+      INTERFACE_LINK_LIBRARIES "${Intl_LIBRARIES}")
+  endif()
+endif()
diff --git a/share/cmake-3.22/Modules/FindJNI.cmake b/share/cmake-3.22/Modules/FindJNI.cmake
new file mode 100644
index 0000000..e4f60b3
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindJNI.cmake
@@ -0,0 +1,405 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindJNI
+-------
+
+Find Java Native Interface (JNI) libraries.
+
+JNI enables Java code running in a Java Virtual Machine (JVM) to call
+and be called by native applications and libraries written in other
+languages such as C, C++.
+
+This module finds if Java is installed and determines where the
+include files and libraries are.  It also determines what the name of
+the library is.  The caller may set variable ``JAVA_HOME`` to specify a
+Java installation prefix explicitly.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module sets the following result variables:
+
+``JNI_INCLUDE_DIRS``
+  the include dirs to use
+``JNI_LIBRARIES``
+  the libraries to use (JAWT and JVM)
+``JNI_FOUND``
+  TRUE if JNI headers and libraries were found.
+
+Cache Variables
+^^^^^^^^^^^^^^^
+
+The following cache variables are also available to set or use:
+
+``JAVA_AWT_LIBRARY``
+  the path to the Java AWT Native Interface (JAWT) library
+``JAVA_JVM_LIBRARY``
+  the path to the Java Virtual Machine (JVM) library
+``JAVA_INCLUDE_PATH``
+  the include path to jni.h
+``JAVA_INCLUDE_PATH2``
+  the include path to jni_md.h and jniport.h
+``JAVA_AWT_INCLUDE_PATH``
+  the include path to jawt.h
+#]=======================================================================]
+
+# Expand {libarch} occurrences to java_libarch subdirectory(-ies) and set ${_var}
+macro(java_append_library_directories _var)
+    # Determine java arch-specific library subdir
+    # Mostly based on openjdk/jdk/make/common/shared/Platform.gmk as of openjdk
+    # 1.6.0_18 + icedtea patches. However, it would be much better to base the
+    # guess on the first part of the GNU config.guess platform triplet.
+    if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
+      if(CMAKE_LIBRARY_ARCHITECTURE STREQUAL "x86_64-linux-gnux32")
+        set(_java_libarch "x32" "amd64" "i386")
+      else()
+        set(_java_libarch "amd64" "i386")
+      endif()
+    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$")
+        set(_java_libarch "i386")
+    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
+        set(_java_libarch "arm64" "aarch64")
+    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^alpha")
+        set(_java_libarch "alpha")
+    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
+        # Subdir is "arm" for both big-endian (arm) and little-endian (armel).
+        set(_java_libarch "arm" "aarch32")
+    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^mips")
+        # mips* machines are bi-endian mostly so processor does not tell
+        # endianness of the underlying system.
+        set(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}"
+            "mips" "mipsel" "mipseb" "mipsr6" "mipsr6el"
+            "mips64" "mips64el" "mips64r6" "mips64r6el"
+            "mipsn32" "mipsn32el" "mipsn32r6" "mipsn32r6el")
+    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64le")
+        set(_java_libarch "ppc64" "ppc64le")
+    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64")
+        set(_java_libarch "ppc64" "ppc")
+    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
+        set(_java_libarch "ppc" "ppc64")
+    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^sparc")
+        # Both flavors can run on the same processor
+        set(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}" "sparc" "sparcv9")
+    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(parisc|hppa)")
+        set(_java_libarch "parisc" "parisc64")
+    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^s390")
+        # s390 binaries can run on s390x machines
+        set(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}" "s390" "s390x")
+    elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^sh")
+        set(_java_libarch "sh")
+    else()
+        set(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}")
+    endif()
+
+    # Append default list architectures if CMAKE_SYSTEM_PROCESSOR was empty or
+    # system is non-Linux (where the code above has not been well tested)
+    if(NOT _java_libarch OR NOT (CMAKE_SYSTEM_NAME MATCHES "Linux"))
+        list(APPEND _java_libarch "i386" "amd64" "ppc")
+    endif()
+
+    # Sometimes ${CMAKE_SYSTEM_PROCESSOR} is added to the list to prefer
+    # current value to a hardcoded list. Remove possible duplicates.
+    list(REMOVE_DUPLICATES _java_libarch)
+
+    foreach(_path ${ARGN})
+        if(_path MATCHES "{libarch}")
+            foreach(_libarch ${_java_libarch})
+                string(REPLACE "{libarch}" "${_libarch}" _newpath "${_path}")
+                if(EXISTS ${_newpath})
+                    list(APPEND ${_var} "${_newpath}")
+                endif()
+            endforeach()
+        else()
+            if(EXISTS ${_path})
+                list(APPEND ${_var} "${_path}")
+            endif()
+        endif()
+    endforeach()
+endmacro()
+
+include(${CMAKE_CURRENT_LIST_DIR}/CMakeFindJavaCommon.cmake)
+
+# Save CMAKE_FIND_FRAMEWORK
+if(DEFINED CMAKE_FIND_FRAMEWORK)
+  set(_JNI_CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK})
+else()
+  unset(_JNI_CMAKE_FIND_FRAMEWORK)
+endif()
+
+if(_JAVA_HOME_EXPLICIT)
+  set(CMAKE_FIND_FRAMEWORK NEVER)
+endif()
+
+set(JAVA_AWT_LIBRARY_DIRECTORIES)
+if(_JAVA_HOME)
+  JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_LIBRARY_DIRECTORIES
+    ${_JAVA_HOME}/jre/lib/{libarch}
+    ${_JAVA_HOME}/jre/lib
+    ${_JAVA_HOME}/lib/{libarch}
+    ${_JAVA_HOME}/lib
+    ${_JAVA_HOME}
+    )
+endif()
+
+if (WIN32)
+  set (_JNI_HINTS)
+  execute_process(COMMAND REG QUERY HKLM\\SOFTWARE\\JavaSoft\\JDK
+    RESULT_VARIABLE _JNI_RESULT
+    OUTPUT_VARIABLE _JNI_VERSIONS
+    ERROR_QUIET)
+  if (NOT  _JNI_RESULT)
+    string (REGEX MATCHALL "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\JavaSoft\\\\JDK\\\\[0-9.]+" _JNI_VERSIONS "${_JNI_VERSIONS}")
+    if (_JNI_VERSIONS)
+      # sort versions. Most recent first
+      ## handle version 9 apart from other versions to get correct ordering
+      set (_JNI_V9 ${_JNI_VERSIONS})
+      list (FILTER _JNI_VERSIONS EXCLUDE REGEX "JDK\\\\9")
+      list (SORT _JNI_VERSIONS)
+      list (REVERSE _JNI_VERSIONS)
+      list (FILTER _JNI_V9 INCLUDE REGEX "JDK\\\\9")
+      list (SORT _JNI_V9)
+      list (REVERSE _JNI_V9)
+      list (APPEND _JNI_VERSIONS ${_JNI_V9})
+      foreach (_JNI_HINT IN LISTS _JNI_VERSIONS)
+        list(APPEND _JNI_HINTS "[${_JNI_HINT};JavaHome]")
+      endforeach()
+    endif()
+  endif()
+
+  foreach (_JNI_HINT IN LISTS _JNI_HINTS)
+    list(APPEND JAVA_AWT_LIBRARY_DIRECTORIES "${_JNI_HINT}/lib")
+  endforeach()
+
+  get_filename_component(java_install_version
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit;CurrentVersion]" NAME)
+
+  list(APPEND JAVA_AWT_LIBRARY_DIRECTORIES
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.8;JavaHome]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.7;JavaHome]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.6;JavaHome]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5;JavaHome]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\${java_install_version};JavaHome]/lib"
+    )
+endif()
+
+set(_JNI_JAVA_DIRECTORIES_BASE
+  /usr/lib/jvm/java
+  /usr/lib/java
+  /usr/lib/jvm
+  /usr/local/lib/java
+  /usr/local/share/java
+  /usr/lib/j2sdk1.4-sun
+  /usr/lib/j2sdk1.5-sun
+  /opt/sun-jdk-1.5.0.04
+  /usr/lib/jvm/java-6-sun
+  /usr/lib/jvm/java-1.5.0-sun
+  /usr/lib/jvm/java-6-sun-1.6.0.00       # can this one be removed according to #8821 ? Alex
+  /usr/lib/jvm/java-6-openjdk
+  /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0        # fedora
+  # Debian specific paths for default JVM
+  /usr/lib/jvm/default-java
+  # Arch Linux specific paths for default JVM
+  /usr/lib/jvm/default
+  # Ubuntu specific paths for default JVM
+  /usr/lib/jvm/java-11-openjdk-{libarch}    # Ubuntu 18.04 LTS
+  /usr/lib/jvm/java-8-openjdk-{libarch}     # Ubuntu 15.10
+  /usr/lib/jvm/java-7-openjdk-{libarch}     # Ubuntu 15.10
+  /usr/lib/jvm/java-6-openjdk-{libarch}     # Ubuntu 15.10
+  # OpenBSD specific paths for default JVM
+  /usr/local/jdk-1.7.0
+  /usr/local/jre-1.7.0
+  /usr/local/jdk-1.6.0
+  /usr/local/jre-1.6.0
+  # FreeBSD specific paths for default JVM
+  /usr/local/openjdk15
+  /usr/local/openjdk14
+  /usr/local/openjdk13
+  /usr/local/openjdk12
+  /usr/local/openjdk11
+  /usr/local/openjdk8
+  /usr/local/openjdk7
+  # SuSE specific paths for default JVM
+  /usr/lib64/jvm/java
+  /usr/lib64/jvm/jre
+  )
+
+set(_JNI_JAVA_AWT_LIBRARY_TRIES)
+set(_JNI_JAVA_INCLUDE_TRIES)
+
+foreach(_java_dir IN LISTS _JNI_JAVA_DIRECTORIES_BASE)
+  list(APPEND _JNI_JAVA_AWT_LIBRARY_TRIES
+    ${_java_dir}/jre/lib/{libarch}
+    ${_java_dir}/jre/lib
+    ${_java_dir}/lib/{libarch}
+    ${_java_dir}/lib
+    ${_java_dir}
+  )
+  list(APPEND _JNI_JAVA_INCLUDE_TRIES
+    ${_java_dir}/include
+  )
+endforeach()
+
+JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_LIBRARY_DIRECTORIES
+    ${_JNI_JAVA_AWT_LIBRARY_TRIES}
+  )
+
+set(JAVA_JVM_LIBRARY_DIRECTORIES)
+foreach(dir ${JAVA_AWT_LIBRARY_DIRECTORIES})
+  list(APPEND JAVA_JVM_LIBRARY_DIRECTORIES
+    "${dir}"
+    "${dir}/client"
+    "${dir}/server"
+    # IBM SDK, Java Technology Edition, specific paths
+    "${dir}/j9vm"
+    "${dir}/default"
+    )
+endforeach()
+
+set(JAVA_AWT_INCLUDE_DIRECTORIES)
+if(_JAVA_HOME)
+  list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES ${_JAVA_HOME}/include)
+endif()
+if (WIN32)
+  foreach (_JNI_HINT IN LISTS _JNI_HINTS)
+    list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES "${_JNI_HINT}/include")
+  endforeach()
+  list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.8;JavaHome]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.7;JavaHome]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.6;JavaHome]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5;JavaHome]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\${java_install_version};JavaHome]/include"
+    )
+endif()
+
+JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_INCLUDE_DIRECTORIES
+  ${_JNI_JAVA_INCLUDE_TRIES}
+  )
+
+foreach(JAVA_PROG "${JAVA_RUNTIME}" "${JAVA_COMPILE}" "${JAVA_ARCHIVE}")
+  get_filename_component(jpath "${JAVA_PROG}" PATH)
+  foreach(JAVA_INC_PATH ../include ../java/include ../share/java/include)
+    if(EXISTS ${jpath}/${JAVA_INC_PATH})
+      list(APPEND JAVA_AWT_INCLUDE_DIRECTORIES "${jpath}/${JAVA_INC_PATH}")
+    endif()
+  endforeach()
+  foreach(JAVA_LIB_PATH
+    ../lib ../jre/lib ../jre/lib/i386
+    ../java/lib ../java/jre/lib ../java/jre/lib/i386
+    ../share/java/lib ../share/java/jre/lib ../share/java/jre/lib/i386)
+    if(EXISTS ${jpath}/${JAVA_LIB_PATH})
+      list(APPEND JAVA_AWT_LIBRARY_DIRECTORIES "${jpath}/${JAVA_LIB_PATH}")
+    endif()
+  endforeach()
+endforeach()
+
+if(APPLE)
+  if(CMAKE_FIND_FRAMEWORK STREQUAL "ONLY")
+    set(_JNI_SEARCHES FRAMEWORK)
+  elseif(CMAKE_FIND_FRAMEWORK STREQUAL "NEVER")
+    set(_JNI_SEARCHES NORMAL)
+  elseif(CMAKE_FIND_FRAMEWORK STREQUAL "LAST")
+    set(_JNI_SEARCHES NORMAL FRAMEWORK)
+  else()
+    set(_JNI_SEARCHES FRAMEWORK NORMAL)
+  endif()
+  set(_JNI_FRAMEWORK_JVM NAMES JavaVM)
+  set(_JNI_FRAMEWORK_JAWT "${_JNI_FRAMEWORK_JVM}")
+else()
+  set(_JNI_SEARCHES NORMAL)
+endif()
+
+set(_JNI_NORMAL_JVM
+  NAMES jvm
+  PATHS ${JAVA_JVM_LIBRARY_DIRECTORIES}
+  )
+
+set(_JNI_NORMAL_JAWT
+  NAMES jawt
+  PATHS ${JAVA_AWT_LIBRARY_DIRECTORIES}
+  )
+
+foreach(search ${_JNI_SEARCHES})
+  find_library(JAVA_JVM_LIBRARY ${_JNI_${search}_JVM})
+  find_library(JAVA_AWT_LIBRARY ${_JNI_${search}_JAWT})
+  if(JAVA_JVM_LIBRARY)
+    break()
+  endif()
+endforeach()
+unset(_JNI_SEARCHES)
+unset(_JNI_FRAMEWORK_JVM)
+unset(_JNI_FRAMEWORK_JAWT)
+unset(_JNI_NORMAL_JVM)
+unset(_JNI_NORMAL_JAWT)
+
+# Find headers matching the library.
+if("${JAVA_JVM_LIBRARY};${JAVA_AWT_LIBRARY};" MATCHES "(/JavaVM.framework|-framework JavaVM);")
+  set(CMAKE_FIND_FRAMEWORK ONLY)
+else()
+  set(CMAKE_FIND_FRAMEWORK NEVER)
+endif()
+
+# add in the include path
+find_path(JAVA_INCLUDE_PATH jni.h
+  ${JAVA_AWT_INCLUDE_DIRECTORIES}
+)
+
+find_path(JAVA_INCLUDE_PATH2 NAMES jni_md.h jniport.h
+  PATHS
+  ${JAVA_INCLUDE_PATH}
+  ${JAVA_INCLUDE_PATH}/darwin
+  ${JAVA_INCLUDE_PATH}/win32
+  ${JAVA_INCLUDE_PATH}/linux
+  ${JAVA_INCLUDE_PATH}/freebsd
+  ${JAVA_INCLUDE_PATH}/openbsd
+  ${JAVA_INCLUDE_PATH}/solaris
+  ${JAVA_INCLUDE_PATH}/hp-ux
+  ${JAVA_INCLUDE_PATH}/alpha
+  ${JAVA_INCLUDE_PATH}/aix
+)
+
+find_path(JAVA_AWT_INCLUDE_PATH jawt.h
+  ${JAVA_INCLUDE_PATH}
+)
+
+# Restore CMAKE_FIND_FRAMEWORK
+if(DEFINED _JNI_CMAKE_FIND_FRAMEWORK)
+  set(CMAKE_FIND_FRAMEWORK ${_JNI_CMAKE_FIND_FRAMEWORK})
+  unset(_JNI_CMAKE_FIND_FRAMEWORK)
+else()
+  unset(CMAKE_FIND_FRAMEWORK)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(JNI  DEFAULT_MSG  JAVA_AWT_LIBRARY
+                                                    JAVA_JVM_LIBRARY
+                                                    JAVA_INCLUDE_PATH
+                                                    JAVA_INCLUDE_PATH2
+                                                    JAVA_AWT_INCLUDE_PATH)
+
+mark_as_advanced(
+  JAVA_AWT_LIBRARY
+  JAVA_JVM_LIBRARY
+  JAVA_AWT_INCLUDE_PATH
+  JAVA_INCLUDE_PATH
+  JAVA_INCLUDE_PATH2
+)
+
+set(JNI_LIBRARIES
+  ${JAVA_AWT_LIBRARY}
+  ${JAVA_JVM_LIBRARY}
+)
+
+set(JNI_INCLUDE_DIRS
+  ${JAVA_INCLUDE_PATH}
+  ${JAVA_INCLUDE_PATH2}
+  ${JAVA_AWT_INCLUDE_PATH}
+)
diff --git a/share/cmake-3.22/Modules/FindJPEG.cmake b/share/cmake-3.22/Modules/FindJPEG.cmake
new file mode 100644
index 0000000..3f243de
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindJPEG.cmake
@@ -0,0 +1,142 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindJPEG
+--------
+
+Find the Joint Photographic Experts Group (JPEG) library (``libjpeg``)
+
+Imported targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.12
+
+This module defines the following :prop_tgt:`IMPORTED` targets:
+
+``JPEG::JPEG``
+  The JPEG library, if found.
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``JPEG_FOUND``
+  If false, do not try to use JPEG.
+``JPEG_INCLUDE_DIRS``
+  where to find jpeglib.h, etc.
+``JPEG_LIBRARIES``
+  the libraries needed to use JPEG.
+``JPEG_VERSION``
+  .. versionadded:: 3.12
+    the version of the JPEG library found
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set:
+
+``JPEG_INCLUDE_DIRS``
+  where to find jpeglib.h, etc.
+``JPEG_LIBRARY_RELEASE``
+  where to find the JPEG library (optimized).
+``JPEG_LIBRARY_DEBUG``
+  where to find the JPEG library (debug).
+
+.. versionadded:: 3.12
+  Debug and Release variand are found separately.
+
+Obsolete variables
+^^^^^^^^^^^^^^^^^^
+
+``JPEG_INCLUDE_DIR``
+  where to find jpeglib.h, etc. (same as JPEG_INCLUDE_DIRS)
+``JPEG_LIBRARY``
+  where to find the JPEG library.
+#]=======================================================================]
+
+find_path(JPEG_INCLUDE_DIR jpeglib.h)
+
+set(jpeg_names ${JPEG_NAMES} jpeg jpeg-static libjpeg libjpeg-static)
+foreach(name ${jpeg_names})
+  list(APPEND jpeg_names_debug "${name}d")
+endforeach()
+
+if(NOT JPEG_LIBRARY)
+  find_library(JPEG_LIBRARY_RELEASE NAMES ${jpeg_names} NAMES_PER_DIR)
+  find_library(JPEG_LIBRARY_DEBUG NAMES ${jpeg_names_debug} NAMES_PER_DIR)
+  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+  select_library_configurations(JPEG)
+  mark_as_advanced(JPEG_LIBRARY_RELEASE JPEG_LIBRARY_DEBUG)
+endif()
+unset(jpeg_names)
+unset(jpeg_names_debug)
+
+if(JPEG_INCLUDE_DIR)
+  file(GLOB _JPEG_CONFIG_HEADERS_FEDORA "${JPEG_INCLUDE_DIR}/jconfig*.h")
+  file(GLOB _JPEG_CONFIG_HEADERS_DEBIAN "${JPEG_INCLUDE_DIR}/*/jconfig.h")
+  set(_JPEG_CONFIG_HEADERS
+    "${JPEG_INCLUDE_DIR}/jpeglib.h"
+    ${_JPEG_CONFIG_HEADERS_FEDORA}
+    ${_JPEG_CONFIG_HEADERS_DEBIAN})
+  foreach (_JPEG_CONFIG_HEADER IN LISTS _JPEG_CONFIG_HEADERS)
+    if (NOT EXISTS "${_JPEG_CONFIG_HEADER}")
+      continue ()
+    endif ()
+    file(STRINGS "${_JPEG_CONFIG_HEADER}"
+      jpeg_lib_version REGEX "^#define[\t ]+JPEG_LIB_VERSION[\t ]+.*")
+
+    if (NOT jpeg_lib_version)
+      continue ()
+    endif ()
+
+    string(REGEX REPLACE "^#define[\t ]+JPEG_LIB_VERSION[\t ]+([0-9]+).*"
+      "\\1" JPEG_VERSION "${jpeg_lib_version}")
+    break ()
+  endforeach ()
+  unset(jpeg_lib_version)
+  unset(_JPEG_CONFIG_HEADER)
+  unset(_JPEG_CONFIG_HEADERS)
+  unset(_JPEG_CONFIG_HEADERS_FEDORA)
+  unset(_JPEG_CONFIG_HEADERS_DEBIAN)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(JPEG
+  REQUIRED_VARS JPEG_LIBRARY JPEG_INCLUDE_DIR
+  VERSION_VAR JPEG_VERSION)
+
+if(JPEG_FOUND)
+  set(JPEG_LIBRARIES ${JPEG_LIBRARY})
+  set(JPEG_INCLUDE_DIRS "${JPEG_INCLUDE_DIR}")
+
+  if(NOT TARGET JPEG::JPEG)
+    add_library(JPEG::JPEG UNKNOWN IMPORTED)
+    if(JPEG_INCLUDE_DIRS)
+      set_target_properties(JPEG::JPEG PROPERTIES
+        INTERFACE_INCLUDE_DIRECTORIES "${JPEG_INCLUDE_DIRS}")
+    endif()
+    if(EXISTS "${JPEG_LIBRARY}")
+      set_target_properties(JPEG::JPEG PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+        IMPORTED_LOCATION "${JPEG_LIBRARY}")
+    endif()
+    if(EXISTS "${JPEG_LIBRARY_RELEASE}")
+      set_property(TARGET JPEG::JPEG APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS RELEASE)
+      set_target_properties(JPEG::JPEG PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
+        IMPORTED_LOCATION_RELEASE "${JPEG_LIBRARY_RELEASE}")
+    endif()
+    if(EXISTS "${JPEG_LIBRARY_DEBUG}")
+      set_property(TARGET JPEG::JPEG APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS DEBUG)
+      set_target_properties(JPEG::JPEG PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
+        IMPORTED_LOCATION_DEBUG "${JPEG_LIBRARY_DEBUG}")
+    endif()
+  endif()
+endif()
+
+mark_as_advanced(JPEG_LIBRARY JPEG_INCLUDE_DIR)
diff --git a/share/cmake-3.22/Modules/FindJasper.cmake b/share/cmake-3.22/Modules/FindJasper.cmake
new file mode 100644
index 0000000..9a62669
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindJasper.cmake
@@ -0,0 +1,90 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindJasper
+----------
+
+Find the Jasper JPEG2000 library.
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+``Jasper::Jasper``
+  The jasper library, if found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module defines the following variables:
+
+``JASPER_FOUND``
+  system has Jasper
+``JASPER_INCLUDE_DIRS``
+  .. versionadded:: 3.22
+
+  the Jasper include directory
+``JASPER_LIBRARIES``
+  the libraries needed to use Jasper
+``JASPER_VERSION_STRING``
+  the version of Jasper found
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set:
+
+``JASPER_INCLUDE_DIR``
+  where to find jasper/jasper.h, etc.
+``JASPER_LIBRARY_RELEASE``
+  where to find the Jasper library (optimized).
+``JASPER_LIBARRY_DEBUG``
+  where to find the Jasper library (debug).
+#]=======================================================================]
+
+find_path(JASPER_INCLUDE_DIR jasper/jasper.h)
+mark_as_advanced(JASPER_INCLUDE_DIR)
+
+if(NOT JASPER_LIBRARIES)
+  find_package(JPEG)
+  find_library(JASPER_LIBRARY_RELEASE NAMES jasper libjasper)
+  find_library(JASPER_LIBRARY_DEBUG NAMES jasperd)
+  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+  select_library_configurations(JASPER)
+endif()
+
+if(JASPER_INCLUDE_DIR AND EXISTS "${JASPER_INCLUDE_DIR}/jasper/jas_config.h")
+  file(STRINGS "${JASPER_INCLUDE_DIR}/jasper/jas_config.h" jasper_version_str REGEX "^#define[\t ]+JAS_VERSION[\t ]+\".*\".*")
+  string(REGEX REPLACE "^#define[\t ]+JAS_VERSION[\t ]+\"([^\"]+)\".*" "\\1" JASPER_VERSION_STRING "${jasper_version_str}")
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(Jasper
+                                  REQUIRED_VARS JASPER_LIBRARIES JASPER_INCLUDE_DIR JPEG_LIBRARIES
+                                  VERSION_VAR JASPER_VERSION_STRING)
+
+if(JASPER_FOUND)
+  set(JASPER_LIBRARIES ${JASPER_LIBRARIES} ${JPEG_LIBRARIES})
+  set(JASPER_INCLUDE_DIRS ${JASPER_INCLUDE_DIR})
+  if(NOT TARGET Jasper::Jasper)
+    add_library(Jasper::Jasper UNKNOWN IMPORTED)
+    if(JASPER_INCLUDE_DIRS)
+      set_target_properties(Jasper::Jasper PROPERTIES
+        INTERFACE_INCLUDE_DIRECTORIES "${JASPER_INCLUDE_DIRS}")
+    endif()
+    if(EXISTS "${JASPER_LIBRARY_RELEASE}")
+      set_property(TARGET Jasper::Jasper APPEND PROPERTY
+        IMPORTED CONFIGURATION RELEASE)
+      set_target_properties(Jasper::Jasper PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
+        IMPORTED_LOCATION "${JASPER_LIBRARY_RELEASE}")
+    endif()
+    if(EXISTS "${JASPER_LIBRARY_DEBUG}")
+      set_property(TARGET Jasper::Jasper APPEND PROPERTY
+        IMPORTED CONFIGURATION DEBUG)
+      set_target_properties(Jasper::Jasper PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
+        IMPORTED_LOCATION "${JASPER_LIBRARY_DEBUG}")
+    endif()
+  endif()
+endif()
diff --git a/share/cmake-3.22/Modules/FindJava.cmake b/share/cmake-3.22/Modules/FindJava.cmake
new file mode 100644
index 0000000..4f0e0fe
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindJava.cmake
@@ -0,0 +1,364 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindJava
+--------
+
+Find Java
+
+This module finds if Java is installed and determines where the
+include files and libraries are.  The caller may set variable ``JAVA_HOME``
+to specify a Java installation prefix explicitly.
+
+See also the :module:`FindJNI` module to find Java Native Interface (JNI).
+
+.. versionadded:: 3.10
+  Added support for Java 9+ version parsing.
+
+Specify one or more of the following components as you call this find module. See example below.
+
+::
+
+  Runtime     = Java Runtime Environment used to execute Java byte-compiled applications
+  Development = Development tools (java, javac, javah, jar and javadoc), includes Runtime component
+  IdlJ        = Interface Description Language (IDL) to Java compiler
+  JarSigner   = Signer and verifier tool for Java Archive (JAR) files
+
+
+This module sets the following result variables:
+
+::
+
+  Java_JAVA_EXECUTABLE      = the full path to the Java runtime
+  Java_JAVAC_EXECUTABLE     = the full path to the Java compiler
+  Java_JAVAH_EXECUTABLE     = the full path to the Java header generator
+  Java_JAVADOC_EXECUTABLE   = the full path to the Java documentation generator
+  Java_IDLJ_EXECUTABLE      = the full path to the Java idl compiler
+  Java_JAR_EXECUTABLE       = the full path to the Java archiver
+  Java_JARSIGNER_EXECUTABLE = the full path to the Java jar signer
+  Java_VERSION_STRING       = Version of java found, eg. 1.6.0_12
+  Java_VERSION_MAJOR        = The major version of the package found.
+  Java_VERSION_MINOR        = The minor version of the package found.
+  Java_VERSION_PATCH        = The patch version of the package found.
+  Java_VERSION_TWEAK        = The tweak version of the package found (after '_')
+  Java_VERSION              = This is set to: $major[.$minor[.$patch[.$tweak]]]
+
+.. versionadded:: 3.4
+  Added the ``Java_IDLJ_EXECUTABLE`` and ``Java_JARSIGNER_EXECUTABLE``
+  variables.
+
+The minimum required version of Java can be specified using the
+:command:`find_package` syntax, e.g.
+
+.. code-block:: cmake
+
+  find_package(Java 1.8)
+
+NOTE: ``${Java_VERSION}`` and ``${Java_VERSION_STRING}`` are not guaranteed to
+be identical.  For example some java version may return:
+``Java_VERSION_STRING = 1.8.0_17`` and ``Java_VERSION = 1.8.0.17``
+
+another example is the Java OEM, with: ``Java_VERSION_STRING = 1.8.0-oem``
+and ``Java_VERSION = 1.8.0``
+
+For these components the following variables are set:
+
+::
+
+  Java_FOUND                    - TRUE if all components are found.
+  Java_<component>_FOUND        - TRUE if <component> is found.
+
+
+
+Example Usages:
+
+::
+
+  find_package(Java)
+  find_package(Java 1.8 REQUIRED)
+  find_package(Java COMPONENTS Runtime)
+  find_package(Java COMPONENTS Development)
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/CMakeFindJavaCommon.cmake)
+
+# The HINTS option should only be used for values computed from the system.
+set(_JAVA_HINTS)
+if(_JAVA_HOME)
+  list(APPEND _JAVA_HINTS ${_JAVA_HOME}/bin)
+endif()
+if (WIN32)
+  macro (_JAVA_GET_INSTALLED_VERSIONS _KIND)
+    execute_process(COMMAND REG QUERY HKLM\\SOFTWARE\\JavaSoft\\${_KIND}
+      RESULT_VARIABLE _JAVA_RESULT
+      OUTPUT_VARIABLE _JAVA_VERSIONS
+      ERROR_QUIET)
+    if (NOT  _JAVA_RESULT)
+      string (REGEX MATCHALL "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\JavaSoft\\\\${_KIND}\\\\[0-9.]+" _JAVA_VERSIONS "${_JAVA_VERSIONS}")
+      if (_JAVA_VERSIONS)
+        # sort versions. Most recent first
+        ## handle version 9 apart from other versions to get correct ordering
+        set (_JAVA_V9 ${_JAVA_VERSIONS})
+        list (FILTER _JAVA_VERSIONS EXCLUDE REGEX "${_KIND}\\\\9")
+        list (SORT _JAVA_VERSIONS)
+        list (REVERSE _JAVA_VERSIONS)
+        list (FILTER _JAVA_V9 INCLUDE REGEX "${_KIND}\\\\9")
+        list (SORT _JAVA_V9)
+        list (REVERSE _JAVA_V9)
+        list (APPEND _JAVA_VERSIONS ${_JAVA_V9})
+        foreach (_JAVA_HINT IN LISTS _JAVA_VERSIONS)
+          list(APPEND _JAVA_HINTS "[${_JAVA_HINT};JavaHome]/bin")
+        endforeach()
+      endif()
+    endif()
+  endmacro()
+
+  # search for installed versions for version 9 and upper
+  _JAVA_GET_INSTALLED_VERSIONS("JDK")
+  _JAVA_GET_INSTALLED_VERSIONS("JRE")
+
+  list(APPEND _JAVA_HINTS
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.8;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.7;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.6;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.9;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.8;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.7;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.6;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.5;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.4;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\1.3;JavaHome]/bin"
+  )
+endif()
+
+# Hard-coded guesses should still go in PATHS. This ensures that the user
+# environment can always override hard guesses.
+set(_JAVA_PATHS
+  /usr/lib/java/bin
+  /usr/share/java/bin
+  /usr/local/java/bin
+  /usr/local/java/share/bin
+  /usr/java/j2sdk1.4.2_04
+  /usr/lib/j2sdk1.4-sun/bin
+  /usr/java/j2sdk1.4.2_09/bin
+  /usr/lib/j2sdk1.5-sun/bin
+  /opt/sun-jdk-1.5.0.04/bin
+  /usr/local/jdk-1.7.0/bin
+  /usr/local/jdk-1.6.0/bin
+  )
+find_program(Java_JAVA_EXECUTABLE
+  NAMES java
+  HINTS ${_JAVA_HINTS}
+  PATHS ${_JAVA_PATHS}
+)
+
+if(Java_JAVA_EXECUTABLE)
+    execute_process(COMMAND "${Java_JAVA_EXECUTABLE}" -version
+      RESULT_VARIABLE res
+      OUTPUT_VARIABLE var
+      ERROR_VARIABLE var # sun-java output to stderr
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+      ERROR_STRIP_TRAILING_WHITESPACE)
+    if( res )
+      if(var MATCHES "Unable to locate a Java Runtime to invoke|No Java runtime present, requesting install")
+        set(Java_JAVA_EXECUTABLE Java_JAVA_EXECUTABLE-NOTFOUND)
+      elseif(${Java_FIND_REQUIRED})
+        message( FATAL_ERROR "Error executing java -version" )
+      else()
+        message( STATUS "Warning, could not run java -version")
+      endif()
+    else()
+      # Extract version components (up to 4 levels) from "java -version" output.
+      set(_java_version_regex [[(([0-9]+)(\.([0-9]+)(\.([0-9]+)(_([0-9]+))?)?)?.*)]])
+      if(var MATCHES "java version \"${_java_version_regex}\"")
+        # Sun, GCJ, older OpenJDK
+        set(Java_VERSION_STRING "${CMAKE_MATCH_1}")
+        set(Java_VERSION_MAJOR "${CMAKE_MATCH_2}")
+        if (CMAKE_MATCH_4)
+        set(Java_VERSION_MINOR "${CMAKE_MATCH_4}")
+        else()
+          set(Java_VERSION_MINOR 0)
+        endif()
+        if (CMAKE_MATCH_6)
+        set(Java_VERSION_PATCH "${CMAKE_MATCH_6}")
+        else()
+          set(Java_VERSION_PATCH 0)
+        endif()
+        set(Java_VERSION_TWEAK "${CMAKE_MATCH_8}")
+      elseif(var MATCHES "openjdk version \"${_java_version_regex}\"")
+        # OpenJDK
+        set(Java_VERSION_STRING "${CMAKE_MATCH_1}")
+        set(Java_VERSION_MAJOR "${CMAKE_MATCH_2}")
+        if (CMAKE_MATCH_4)
+        set(Java_VERSION_MINOR "${CMAKE_MATCH_4}")
+        else()
+          set(Java_VERSION_MINOR 0)
+        endif()
+        if (CMAKE_MATCH_6)
+        set(Java_VERSION_PATCH "${CMAKE_MATCH_6}")
+        else()
+          set(Java_VERSION_PATCH 0)
+        endif()
+        set(Java_VERSION_TWEAK "${CMAKE_MATCH_8}")
+      elseif(var MATCHES "openjdk version \"([0-9]+)-[A-Za-z]+\"")
+        # OpenJDK 9 early access builds or locally built
+        set(Java_VERSION_STRING "1.${CMAKE_MATCH_1}.0")
+        set(Java_VERSION_MAJOR "1")
+        set(Java_VERSION_MINOR "${CMAKE_MATCH_1}")
+        set(Java_VERSION_PATCH "0")
+        set(Java_VERSION_TWEAK "")
+      elseif(var MATCHES "java full version \"kaffe-${_java_version_regex}\"")
+        # Kaffe style
+        set(Java_VERSION_STRING "${CMAKE_MATCH_1}")
+        set(Java_VERSION_MAJOR "${CMAKE_MATCH_2}")
+        set(Java_VERSION_MINOR "${CMAKE_MATCH_4}")
+        set(Java_VERSION_PATCH "${CMAKE_MATCH_6}")
+        set(Java_VERSION_TWEAK "${CMAKE_MATCH_8}")
+      else()
+        if(NOT Java_FIND_QUIETLY)
+          string(REPLACE "\n" "\n  " ver_msg "\n${var}")
+          message(WARNING "Java version not recognized:${ver_msg}\nPlease report.")
+        endif()
+        set(Java_VERSION_STRING "")
+        set(Java_VERSION_MAJOR "")
+        set(Java_VERSION_MINOR "")
+        set(Java_VERSION_PATCH "")
+        set(Java_VERSION_TWEAK "")
+      endif()
+      set(Java_VERSION "${Java_VERSION_MAJOR}")
+      if(NOT "x${Java_VERSION}" STREQUAL "x")
+        foreach(c MINOR PATCH TWEAK)
+          if(NOT "x${Java_VERSION_${c}}" STREQUAL "x")
+            string(APPEND Java_VERSION ".${Java_VERSION_${c}}")
+          else()
+            break()
+          endif()
+        endforeach()
+      endif()
+    endif()
+
+endif()
+
+
+find_program(Java_JAR_EXECUTABLE
+  NAMES jar
+  HINTS ${_JAVA_HINTS}
+  PATHS ${_JAVA_PATHS}
+)
+
+find_program(Java_JAVAC_EXECUTABLE
+  NAMES javac
+  HINTS ${_JAVA_HINTS}
+  PATHS ${_JAVA_PATHS}
+)
+
+find_program(Java_JAVAH_EXECUTABLE
+  NAMES javah
+  HINTS ${_JAVA_HINTS}
+  PATHS ${_JAVA_PATHS}
+)
+
+find_program(Java_JAVADOC_EXECUTABLE
+  NAMES javadoc
+  HINTS ${_JAVA_HINTS}
+  PATHS ${_JAVA_PATHS}
+)
+
+find_program(Java_IDLJ_EXECUTABLE
+  NAMES idlj
+  HINTS ${_JAVA_HINTS}
+  PATHS ${_JAVA_PATHS}
+)
+
+find_program(Java_JARSIGNER_EXECUTABLE
+  NAMES jarsigner
+  HINTS ${_JAVA_HINTS}
+  PATHS ${_JAVA_PATHS}
+)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+if(Java_FIND_COMPONENTS)
+  set(_JAVA_REQUIRED_VARS)
+  foreach(component ${Java_FIND_COMPONENTS})
+    # User just want to execute some Java byte-compiled
+    If(component STREQUAL "Runtime")
+      list(APPEND _JAVA_REQUIRED_VARS Java_JAVA_EXECUTABLE)
+      if(Java_JAVA_EXECUTABLE)
+        set(Java_Runtime_FOUND TRUE)
+      endif()
+    elseif(component STREQUAL "Development")
+      list(APPEND _JAVA_REQUIRED_VARS Java_JAVA_EXECUTABLE Java_JAVAC_EXECUTABLE
+                                      Java_JAR_EXECUTABLE Java_JAVADOC_EXECUTABLE)
+      if(Java_VERSION VERSION_LESS "10")
+        list(APPEND _JAVA_REQUIRED_VARS Java_JAVAH_EXECUTABLE)
+        if(Java_JAVA_EXECUTABLE AND Java_JAVAC_EXECUTABLE
+            AND Java_JAVAH_EXECUTABLE AND Java_JAR_EXECUTABLE AND Java_JAVADOC_EXECUTABLE)
+          set(Java_Development_FOUND TRUE)
+        endif()
+      else()
+        if(Java_JAVA_EXECUTABLE AND Java_JAVAC_EXECUTABLE
+            AND Java_JAR_EXECUTABLE AND Java_JAVADOC_EXECUTABLE)
+          set(Java_Development_FOUND TRUE)
+        endif()
+      endif()
+    elseif(component STREQUAL "IdlJ")
+      list(APPEND _JAVA_REQUIRED_VARS Java_IDLJ_EXECUTABLE)
+      if(Java_IDLJ_EXECUTABLE)
+        set(Java_IdlJ_FOUND TRUE)
+      endif()
+    elseif(component STREQUAL "JarSigner")
+      list(APPEND _JAVA_REQUIRED_VARS Java_JARSIGNER_EXECUTABLE)
+      if(Java_JARSIGNER_EXECUTABLE)
+        set(Java_JarSigner_FOUND TRUE)
+      endif()
+    else()
+      message(FATAL_ERROR "Comp: ${component} is not handled")
+    endif()
+  endforeach()
+  list (REMOVE_DUPLICATES _JAVA_REQUIRED_VARS)
+  find_package_handle_standard_args(Java
+    REQUIRED_VARS ${_JAVA_REQUIRED_VARS} HANDLE_COMPONENTS
+    VERSION_VAR Java_VERSION
+    )
+  if(Java_FOUND)
+    foreach(component ${Java_FIND_COMPONENTS})
+      set(Java_${component}_FOUND TRUE)
+    endforeach()
+  endif()
+else()
+  # Check for Development
+  if(Java_VERSION VERSION_LESS "10")
+    find_package_handle_standard_args(Java
+      REQUIRED_VARS Java_JAVA_EXECUTABLE Java_JAR_EXECUTABLE Java_JAVAC_EXECUTABLE
+                    Java_JAVAH_EXECUTABLE Java_JAVADOC_EXECUTABLE
+      VERSION_VAR Java_VERSION_STRING
+      )
+  else()
+    find_package_handle_standard_args(Java
+      REQUIRED_VARS Java_JAVA_EXECUTABLE Java_JAR_EXECUTABLE Java_JAVAC_EXECUTABLE
+                    Java_JAVADOC_EXECUTABLE
+      VERSION_VAR Java_VERSION_STRING
+      )
+  endif()
+endif()
+
+
+mark_as_advanced(
+  Java_JAVA_EXECUTABLE
+  Java_JAR_EXECUTABLE
+  Java_JAVAC_EXECUTABLE
+  Java_JAVAH_EXECUTABLE
+  Java_JAVADOC_EXECUTABLE
+  Java_IDLJ_EXECUTABLE
+  Java_JARSIGNER_EXECUTABLE
+  )
+
+# LEGACY
+set(JAVA_RUNTIME ${Java_JAVA_EXECUTABLE})
+set(JAVA_ARCHIVE ${Java_JAR_EXECUTABLE})
+set(JAVA_COMPILE ${Java_JAVAC_EXECUTABLE})
diff --git a/share/cmake-3.18/Modules/FindKDE3.cmake b/share/cmake-3.22/Modules/FindKDE3.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindKDE3.cmake
rename to share/cmake-3.22/Modules/FindKDE3.cmake
diff --git a/share/cmake-3.18/Modules/FindKDE4.cmake b/share/cmake-3.22/Modules/FindKDE4.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindKDE4.cmake
rename to share/cmake-3.22/Modules/FindKDE4.cmake
diff --git a/share/cmake-3.22/Modules/FindLAPACK.cmake b/share/cmake-3.22/Modules/FindLAPACK.cmake
new file mode 100644
index 0000000..5540965
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindLAPACK.cmake
@@ -0,0 +1,761 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindLAPACK
+----------
+
+Find Linear Algebra PACKage (LAPACK) library
+
+This module finds an installed Fortran library that implements the
+`LAPACK linear-algebra interface`_.
+
+At least one of the ``C``, ``CXX``, or ``Fortran`` languages must be enabled.
+
+.. _`LAPACK linear-algebra interface`: http://www.netlib.org/lapack/
+
+Input Variables
+^^^^^^^^^^^^^^^
+
+The following variables may be set to influence this module's behavior:
+
+``BLA_STATIC``
+  if ``ON`` use static linkage
+
+``BLA_VENDOR``
+  Set to one of the :ref:`BLAS/LAPACK Vendors` to search for BLAS only
+  from the specified vendor.  If not set, all vendors are considered.
+
+``BLA_F95``
+  if ``ON`` tries to find the BLAS95/LAPACK95 interfaces
+
+``BLA_PREFER_PKGCONFIG``
+  .. versionadded:: 3.20
+
+  if set ``pkg-config`` will be used to search for a LAPACK library first
+  and if one is found that is preferred
+
+``BLA_SIZEOF_INTEGER``
+  .. versionadded:: 3.22
+
+  Specify the BLAS/LAPACK library integer size:
+
+  ``4``
+    Search for a BLAS/LAPACK with 32-bit integer interfaces.
+  ``8``
+    Search for a BLAS/LAPACK with 64-bit integer interfaces.
+  ``ANY``
+    Search for any BLAS/LAPACK.
+    Most likely, a BLAS/LAPACK with 32-bit integer interfaces will be found.
+
+Imported targets
+^^^^^^^^^^^^^^^^
+
+This module defines the following :prop_tgt:`IMPORTED` targets:
+
+``LAPACK::LAPACK``
+  .. versionadded:: 3.18
+
+  The libraries to use for LAPACK, if found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module defines the following variables:
+
+``LAPACK_FOUND``
+  library implementing the LAPACK interface is found
+``LAPACK_LINKER_FLAGS``
+  uncached list of required linker flags (excluding ``-l`` and ``-L``).
+``LAPACK_LIBRARIES``
+  uncached list of libraries (using full path name) to link against
+  to use LAPACK
+``LAPACK95_LIBRARIES``
+  uncached list of libraries (using full path name) to link against
+  to use LAPACK95
+``LAPACK95_FOUND``
+  library implementing the LAPACK95 interface is found
+
+Intel MKL
+^^^^^^^^^
+
+To use the Intel MKL implementation of LAPACK, a project must enable at least
+one of the ``C`` or ``CXX`` languages.  Set ``BLA_VENDOR`` to an Intel MKL
+variant either on the command-line as ``-DBLA_VENDOR=Intel10_64lp`` or in
+project code:
+
+.. code-block:: cmake
+
+  set(BLA_VENDOR Intel10_64lp)
+  find_package(LAPACK)
+
+In order to build a project using Intel MKL, and end user must first
+establish an Intel MKL environment.  See the :module:`FindBLAS` module
+section on :ref:`Intel MKL` for details.
+
+#]=======================================================================]
+
+# The approach follows that of the ``autoconf`` macro file, ``acx_lapack.m4``
+# (distributed at http://ac-archive.sourceforge.net/ac-archive/acx_lapack.html).
+
+if(CMAKE_Fortran_COMPILER_LOADED)
+  include(${CMAKE_CURRENT_LIST_DIR}/CheckFortranFunctionExists.cmake)
+else()
+  include(${CMAKE_CURRENT_LIST_DIR}/CheckFunctionExists.cmake)
+endif()
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+function(_add_lapack_target)
+  if(LAPACK_FOUND AND NOT TARGET LAPACK::LAPACK)
+    add_library(LAPACK::LAPACK INTERFACE IMPORTED)
+
+    # Filter out redundant BLAS info and replace with the BLAS target
+    set(_lapack_libs "${LAPACK_LIBRARIES}")
+    set(_lapack_flags "${LAPACK_LINKER_FLAGS}")
+    if(TARGET BLAS::BLAS)
+      if(_lapack_libs AND BLAS_LIBRARIES)
+        foreach(_blas_lib IN LISTS BLAS_LIBRARIES)
+          list(REMOVE_ITEM _lapack_libs "${_blas_lib}")
+        endforeach()
+      endif()
+      if(_lapack_flags AND BLAS_LINKER_FLAGS)
+        foreach(_blas_flag IN LISTS BLAS_LINKER_FLAGS)
+          list(REMOVE_ITEM _lapack_flags "${_blas_flag}")
+        endforeach()
+      endif()
+      list(APPEND _lapack_libs BLAS::BLAS)
+    endif()
+    if(_lapack_libs)
+      set_target_properties(LAPACK::LAPACK PROPERTIES
+        INTERFACE_LINK_LIBRARIES "${_lapack_libs}"
+      )
+    endif()
+    if(_lapack_flags)
+      set_target_properties(LAPACK::LAPACK PROPERTIES
+        INTERFACE_LINK_OPTIONS "${_lapack_flags}"
+      )
+    endif()
+  endif()
+endfunction()
+
+# TODO: move this stuff to a separate module
+
+function(CHECK_LAPACK_LIBRARIES LIBRARIES _prefix _name _flags _list _deps _addlibdir _subdirs _blas)
+  # This function checks for the existence of the combination of libraries
+  # given by _list.  If the combination is found, this checks whether can link
+  # against that library combination using the name of a routine given by _name
+  # using the linker flags given by _flags.  If the combination of libraries is
+  # found and passes the link test, ${LIBRARIES} is set to the list of complete
+  # library paths that have been found.  Otherwise, ${LIBRARIES} is set to FALSE.
+
+  set(_libraries_work TRUE)
+  set(_libraries)
+  set(_combined_name)
+
+  if(BLA_STATIC)
+    if(WIN32)
+      set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
+    else()
+      set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
+    endif()
+  else()
+    if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+      # for ubuntu's libblas3gf and liblapack3gf packages
+      set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES} .so.3gf)
+    endif()
+  endif()
+
+  set(_extaddlibdir "${_addlibdir}")
+  if(WIN32)
+    list(APPEND _extaddlibdir ENV LIB)
+  elseif(APPLE)
+    list(APPEND _extaddlibdir ENV DYLD_LIBRARY_PATH)
+  else()
+    list(APPEND _extaddlibdir ENV LD_LIBRARY_PATH)
+  endif()
+  list(APPEND _extaddlibdir "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}")
+
+  foreach(_library ${_list})
+    if(_library MATCHES "^-")
+      # Respect linker flags as-is (required by MKL)
+      list(APPEND _libraries "${_library}")
+    else()
+      string(REGEX REPLACE "[^A-Za-z0-9]" "_" _lib_var "${_library}")
+      string(APPEND _combined_name "_${_lib_var}")
+      if(NOT "${_deps}" STREQUAL "")
+        string(APPEND _combined_name "_deps")
+      endif()
+      if(_libraries_work)
+        find_library(${_prefix}_${_lib_var}_LIBRARY
+          NAMES ${_library}
+          NAMES_PER_DIR
+          PATHS ${_extaddlibdir}
+          PATH_SUFFIXES ${_subdirs}
+        )
+        mark_as_advanced(${_prefix}_${_lib_var}_LIBRARY)
+        list(APPEND _libraries ${${_prefix}_${_lib_var}_LIBRARY})
+        set(_libraries_work ${${_prefix}_${_lib_var}_LIBRARY})
+      endif()
+    endif()
+  endforeach()
+
+  foreach(_flag ${_flags})
+    string(REGEX REPLACE "[^A-Za-z0-9]" "_" _flag_var "${_flag}")
+    string(APPEND _combined_name "_${_flag_var}")
+  endforeach()
+  if(_libraries_work)
+    # Test this combination of libraries.
+    set(CMAKE_REQUIRED_LIBRARIES ${_flags} ${_libraries} ${_blas} ${_deps})
+    set(CMAKE_REQUIRED_QUIET ${LAPACK_FIND_QUIETLY})
+    if(CMAKE_Fortran_COMPILER_LOADED)
+      check_fortran_function_exists("${_name}" ${_prefix}${_combined_name}_WORKS)
+    else()
+      check_function_exists("${_name}_" ${_prefix}${_combined_name}_WORKS)
+    endif()
+    set(CMAKE_REQUIRED_LIBRARIES)
+    set(_libraries_work ${${_prefix}${_combined_name}_WORKS})
+  endif()
+
+  if(_libraries_work)
+    if("${_list}${_blas}" STREQUAL "")
+      set(_libraries "${LIBRARIES}-PLACEHOLDER-FOR-EMPTY-LIBRARIES")
+    else()
+      list(APPEND _libraries ${_blas} ${_deps})
+    endif()
+  else()
+    set(_libraries FALSE)
+  endif()
+  set(${LIBRARIES} "${_libraries}" PARENT_SCOPE)
+endfunction()
+
+macro(_lapack_find_dependency dep)
+  set(_lapack_quiet_arg)
+  if(LAPACK_FIND_QUIETLY)
+    set(_lapack_quiet_arg QUIET)
+  endif()
+  set(_lapack_required_arg)
+  if(LAPACK_FIND_REQUIRED)
+    set(_lapack_required_arg REQUIRED)
+  endif()
+  find_package(${dep} ${ARGN}
+    ${_lapack_quiet_arg}
+    ${_lapack_required_arg}
+  )
+  if (NOT ${dep}_FOUND)
+    set(LAPACK_NOT_FOUND_MESSAGE "LAPACK could not be found because dependency ${dep} could not be found.")
+  endif()
+
+  set(_lapack_required_arg)
+  set(_lapack_quiet_arg)
+endmacro()
+
+set(LAPACK_LINKER_FLAGS)
+set(LAPACK_LIBRARIES)
+set(LAPACK95_LIBRARIES)
+set(_lapack_fphsa_req_var LAPACK_LIBRARIES)
+
+# Check the language being used
+if(NOT (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED OR CMAKE_Fortran_COMPILER_LOADED))
+  set(LAPACK_NOT_FOUND_MESSAGE
+    "FindLAPACK requires Fortran, C, or C++ to be enabled.")
+endif()
+
+if(NOT BLA_SIZEOF_INTEGER)
+  # in the reality we do not know which API of BLAS/LAPACK is masked in library
+  set(_lapack_sizeof_integer "ANY")
+elseif((BLA_SIZEOF_INTEGER STREQUAL "ANY") OR
+       (BLA_SIZEOF_INTEGER STREQUAL "4") OR
+       (BLA_SIZEOF_INTEGER STREQUAL "8"))
+  set(_lapack_sizeof_integer ${BLA_SIZEOF_INTEGER})
+else()
+  message(FATAL_ERROR "BLA_SIZEOF_INTEGER can have only <no value>, ANY, 4, or 8 values")
+endif()
+
+# Load BLAS
+if(NOT LAPACK_NOT_FOUND_MESSAGE)
+  _lapack_find_dependency(BLAS)
+endif()
+
+# Search with pkg-config if specified
+if(BLA_PREFER_PKGCONFIG)
+  find_package(PkgConfig)
+  pkg_check_modules(PKGC_LAPACK lapack)
+  if(PKGC_LAPACK_FOUND)
+    set(LAPACK_FOUND TRUE)
+    set(LAPACK_LIBRARIES "${PKGC_LAPACK_LINK_LIBRARIES}")
+    if (BLAS_LIBRARIES)
+      list(APPEND LAPACK_LIBRARIES "${BLAS_LIBRARIES}")
+    endif()
+    _add_lapack_target()
+    return()
+  endif()
+endif()
+
+# Search for different LAPACK distributions if BLAS is found
+if(NOT LAPACK_NOT_FOUND_MESSAGE)
+  set(LAPACK_LINKER_FLAGS ${BLAS_LINKER_FLAGS})
+  if(NOT $ENV{BLA_VENDOR} STREQUAL "")
+    set(BLA_VENDOR $ENV{BLA_VENDOR})
+  elseif(NOT BLA_VENDOR)
+    set(BLA_VENDOR "All")
+  endif()
+
+  # LAPACK in the Intel MKL 10+ library?
+  if(NOT LAPACK_LIBRARIES
+      AND (BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
+      AND (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED))
+    # System-specific settings
+    if(NOT WIN32)
+      set(LAPACK_mkl_LM "-lm")
+      set(LAPACK_mkl_LDL "-ldl")
+    endif()
+
+    _lapack_find_dependency(Threads)
+
+    if(_lapack_sizeof_integer EQUAL 8)
+      set(LAPACK_mkl_ILP_MODE "ilp64")
+    elseif(_lapack_sizeof_integer EQUAL 4)
+      set(LAPACK_mkl_ILP_MODE "lp64")
+    else()
+      if(BLA_VENDOR MATCHES "_64ilp")
+        set(LAPACK_mkl_ILP_MODE "ilp64")
+      else()
+        set(LAPACK_mkl_ILP_MODE "lp64")
+      endif()
+    endif()
+
+    set(LAPACK_SEARCH_LIBS "")
+
+    if(BLA_F95)
+      set(LAPACK_mkl_SEARCH_SYMBOL "cheev_f95")
+      set(_LAPACK_LIBRARIES LAPACK95_LIBRARIES)
+      set(_BLAS_LIBRARIES ${BLAS95_LIBRARIES})
+
+      # old
+      list(APPEND LAPACK_SEARCH_LIBS
+        "mkl_lapack95")
+      # new >= 10.3
+      list(APPEND LAPACK_SEARCH_LIBS
+        "mkl_intel_c")
+      list(APPEND LAPACK_SEARCH_LIBS
+        "mkl_lapack95_${LAPACK_mkl_ILP_MODE}")
+    else()
+      set(LAPACK_mkl_SEARCH_SYMBOL "cheev")
+      set(_LAPACK_LIBRARIES LAPACK_LIBRARIES)
+      set(_BLAS_LIBRARIES ${BLAS_LIBRARIES})
+
+      # old and new >= 10.3
+      list(APPEND LAPACK_SEARCH_LIBS
+        "mkl_lapack")
+    endif()
+
+    # MKL uses a multitude of partially platform-specific subdirectories:
+    if(BLA_VENDOR STREQUAL "Intel10_32")
+      set(LAPACK_mkl_ARCH_NAME "ia32")
+    else()
+      set(LAPACK_mkl_ARCH_NAME "intel64")
+    endif()
+    if(WIN32)
+      set(LAPACK_mkl_OS_NAME "win")
+    elseif(APPLE)
+      set(LAPACK_mkl_OS_NAME "mac")
+    else()
+      set(LAPACK_mkl_OS_NAME "lin")
+    endif()
+    if(DEFINED ENV{MKLROOT})
+      file(TO_CMAKE_PATH "$ENV{MKLROOT}" LAPACK_mkl_MKLROOT)
+      # If MKLROOT points to the subdirectory 'mkl', use the parent directory instead
+      # so we can better detect other relevant libraries in 'compiler' or 'tbb':
+      get_filename_component(LAPACK_mkl_MKLROOT_LAST_DIR "${LAPACK_mkl_MKLROOT}" NAME)
+      if(LAPACK_mkl_MKLROOT_LAST_DIR STREQUAL "mkl")
+          get_filename_component(LAPACK_mkl_MKLROOT "${LAPACK_mkl_MKLROOT}" DIRECTORY)
+      endif()
+    endif()
+    set(LAPACK_mkl_LIB_PATH_SUFFIXES
+        "compiler/lib" "compiler/lib/${LAPACK_mkl_ARCH_NAME}_${LAPACK_mkl_OS_NAME}"
+        "compiler/lib/${LAPACK_mkl_ARCH_NAME}"
+        "mkl/lib" "mkl/lib/${LAPACK_mkl_ARCH_NAME}_${LAPACK_mkl_OS_NAME}"
+        "mkl/lib/${LAPACK_mkl_ARCH_NAME}"
+        "lib" "lib/${LAPACK_mkl_ARCH_NAME}_${LAPACK_mkl_OS_NAME}"
+        "lib/${LAPACK_mkl_ARCH_NAME}"
+        )
+
+    # First try empty lapack libs (implicitly linked or automatic from BLAS)
+    if(NOT ${_LAPACK_LIBRARIES})
+      check_lapack_libraries(
+        ${_LAPACK_LIBRARIES}
+        LAPACK
+        ${LAPACK_mkl_SEARCH_SYMBOL}
+        ""
+        ""
+        "${CMAKE_THREAD_LIBS_INIT};${LAPACK_mkl_LM};${LAPACK_mkl_LDL}"
+        "${LAPACK_mkl_MKLROOT}"
+        "${LAPACK_mkl_LIB_PATH_SUFFIXES}"
+        "${_BLAS_LIBRARIES}"
+      )
+      if(LAPACK_WORKS AND NOT _BLAS_LIBRARIES)
+        # Give a more helpful "found" message
+        set(LAPACK_WORKS "implicitly linked")
+        set(_lapack_fphsa_req_var LAPACK_WORKS)
+      endif()
+    endif()
+
+    # Then try the search libs
+    foreach(_search ${LAPACK_SEARCH_LIBS})
+      string(REPLACE " " ";" _search ${_search})
+      if(NOT ${_LAPACK_LIBRARIES})
+        check_lapack_libraries(
+          ${_LAPACK_LIBRARIES}
+          LAPACK
+          ${LAPACK_mkl_SEARCH_SYMBOL}
+          ""
+          "${_search}"
+          "${CMAKE_THREAD_LIBS_INIT};${LAPACK_mkl_LM};${LAPACK_mkl_LDL}"
+          "${LAPACK_mkl_MKLROOT}"
+          "${LAPACK_mkl_LIB_PATH_SUFFIXES}"
+          "${_BLAS_LIBRARIES}"
+        )
+      endif()
+    endforeach()
+
+    unset(_search)
+    unset(LAPACK_mkl_ILP_MODE)
+    unset(LAPACK_mkl_SEARCH_SYMBOL)
+    unset(LAPACK_mkl_LM)
+    unset(LAPACK_mkl_LDL)
+    unset(LAPACK_mkl_MKLROOT)
+    unset(LAPACK_mkl_ARCH_NAME)
+    unset(LAPACK_mkl_OS_NAME)
+    unset(LAPACK_mkl_LIB_PATH_SUFFIXES)
+  endif()
+
+  # gotoblas? (http://www.tacc.utexas.edu/tacc-projects/gotoblas2)
+  if(NOT LAPACK_LIBRARIES
+      AND (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All"))
+    check_lapack_libraries(
+      LAPACK_LIBRARIES
+      LAPACK
+      cheev
+      ""
+      "goto2"
+      ""
+      ""
+      ""
+      "${BLAS_LIBRARIES}"
+    )
+  endif()
+
+  # FlexiBLAS? (http://www.mpi-magdeburg.mpg.de/mpcsc/software/FlexiBLAS/)
+  if(NOT LAPACK_LIBRARIES
+      AND (BLA_VENDOR STREQUAL "FlexiBLAS" OR BLA_VENDOR STREQUAL "All"))
+    set(_lapack_flexiblas_lib "flexiblas")
+
+    if(_lapack_sizeof_integer EQUAL 8)
+      string(APPEND _lapack_flexiblas_lib "64")
+    endif()
+
+    check_lapack_libraries(
+      LAPACK_LIBRARIES
+      LAPACK
+      cheev
+      ""
+      "${_lapack_flexiblas_lib}"
+      ""
+      ""
+      ""
+      "${BLAS_LIBRARIES}"
+    )
+
+    unset(_lapack_flexiblas_lib)
+  endif()
+
+  # OpenBLAS? (http://www.openblas.net)
+  if(NOT LAPACK_LIBRARIES
+      AND (BLA_VENDOR STREQUAL "OpenBLAS" OR BLA_VENDOR STREQUAL "All"))
+    set(_lapack_openblas_lib "openblas")
+
+    if(_lapack_sizeof_integer EQUAL 8)
+      string(APPEND _lapack_openblas_lib "64")
+    endif()
+
+    check_lapack_libraries(
+      LAPACK_LIBRARIES
+      LAPACK
+      cheev
+      ""
+      "${_lapack_openblas_lib}"
+      ""
+      ""
+      ""
+      "${BLAS_LIBRARIES}"
+    )
+
+    unset(_lapack_openblas_lib)
+  endif()
+
+  # ArmPL? (https://developer.arm.com/tools-and-software/server-and-hpc/compile/arm-compiler-for-linux/arm-performance-libraries)
+  if(NOT LAPACK_LIBRARIES
+      AND (BLA_VENDOR MATCHES "Arm" OR BLA_VENDOR STREQUAL "All"))
+    # Check for 64bit Integer support
+    if(_lapack_sizeof_integer EQUAL 8)
+      set(LAPACK_armpl_LIB "armpl_ilp64")
+    elseif(_lapack_sizeof_integer EQUAL 4)
+      set(LAPACK_armpl_LIB "armpl_lp64")
+    else()
+      if(BLA_VENDOR MATCHES "_ilp64")
+        set(LAPACK_armpl_LIB "armpl_ilp64")
+      else()
+        set(LAPACK_armpl_LIB "armpl_lp64")
+      endif()
+    endif()
+
+    # Check for OpenMP support, VIA BLA_VENDOR of Arm_mp or Arm_ipl64_mp
+    if(BLA_VENDOR MATCHES "_mp")
+      string(APPEND LAPACK_armpl_LIB "_mp")
+    endif()
+
+    check_lapack_libraries(
+      LAPACK_LIBRARIES
+      LAPACK
+      cheev
+      ""
+      "${LAPACK_armpl_LIB}"
+      ""
+      ""
+      ""
+      "${BLAS_LIBRARIES}"
+    )
+  endif()
+
+  # FLAME's blis library? (https://github.com/flame/blis)
+  if(NOT LAPACK_LIBRARIES
+      AND (BLA_VENDOR STREQUAL "FLAME" OR BLA_VENDOR STREQUAL "All"))
+    if(_lapack_sizeof_integer EQUAL 8)
+      if(BLA_VENDOR STREQUAL "FLAME")
+        message(FATAL_ERROR "libFLAME does not support Int64 type")
+      endif()
+    else()
+      check_lapack_libraries(
+        LAPACK_LIBRARIES
+        LAPACK
+        cheev
+        ""
+        "flame"
+        ""
+        ""
+        ""
+        "${BLAS_LIBRARIES}"
+      )
+    endif()
+  endif()
+
+  # LAPACK in SCSL library? (SGI/Cray Scientific Library)
+  if(NOT LAPACK_LIBRARIES
+      AND (BLA_VENDOR MATCHES "SCSL" OR BLA_VENDOR STREQUAL "All"))
+    set(_lapack_scsl_lib "scs")
+
+    if(_lapack_sizeof_integer EQUAL 8)
+      string(APPEND _lapack_scsl_lib "_i8")
+    endif()
+    # Check for OpenMP support, VIA BLA_VENDOR of scs_mp
+    if(BLA_VENDOR MATCHES "_mp")
+      string(APPEND _lapack_scsl_lib "_mp")
+    endif()
+
+    check_lapack_libraries(
+      LAPACK_LIBRARIES
+      LAPACK
+      cheev
+      ""
+      "${_lapack_scsl_lib}"
+      ""
+      ""
+      ""
+      "${BLAS_LIBRARIES}"
+    )
+    unset(_lapack_scsl_lib)
+  endif()
+
+  # BLAS in acml library?
+  if(BLA_VENDOR MATCHES "ACML" OR BLA_VENDOR STREQUAL "All")
+    if(BLAS_LIBRARIES MATCHES ".+acml.+")
+      set(LAPACK_LIBRARIES ${BLAS_LIBRARIES})
+    endif()
+  endif()
+
+  # Apple LAPACK library?
+  if(NOT LAPACK_LIBRARIES
+      AND (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All"))
+    if(_lapack_sizeof_integer EQUAL 8)
+      if(BLA_VENDOR STREQUAL "Apple")
+        message(FATAL_ERROR "Accelerate Framework does not support Int64 type")
+      endif()
+    else()
+      check_lapack_libraries(
+        LAPACK_LIBRARIES
+        LAPACK
+        cheev
+        ""
+        "Accelerate"
+        ""
+        ""
+        ""
+        "${BLAS_LIBRARIES}"
+      )
+    endif()
+  endif()
+
+  # Apple NAS (vecLib) library?
+  if(NOT LAPACK_LIBRARIES
+      AND (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All"))
+    if(_lapack_sizeof_integer EQUAL 8)
+      if(BLA_VENDOR STREQUAL "NAS")
+        message(FATAL_ERROR "Accelerate Framework does not support Int64 type")
+      endif()
+    else()
+      check_lapack_libraries(
+        LAPACK_LIBRARIES
+        LAPACK
+        cheev
+        ""
+        "vecLib"
+        ""
+        ""
+        ""
+        "${BLAS_LIBRARIES}"
+      )
+    endif()
+  endif()
+
+  # Elbrus Math Library?
+  if(NOT LAPACK_LIBRARIES
+      AND (BLA_VENDOR MATCHES "EML" OR BLA_VENDOR STREQUAL "All"))
+    if(BLAS_LIBRARIES MATCHES "eml.+")
+      set(LAPACK_LIBRARIES ${BLAS_LIBRARIES})
+    endif()
+  endif()
+
+  # Fujitsu SSL2 Library?
+  if(NOT LAPACK_LIBRARIES
+      AND (BLA_VENDOR MATCHES "Fujitsu_SSL2" OR BLA_VENDOR STREQUAL "All"))
+    if(BLAS_LIBRARIES MATCHES "fjlapack.+")
+      set(LAPACK_LIBRARIES ${BLAS_LIBRARIES})
+      set(LAPACK_LINKER_FLAGS ${BLAS_LINKER_FLAGS})
+    endif()
+  endif()
+
+  # LAPACK in IBM ESSL library?
+  if(NOT LAPACK_LIBRARIES
+      AND (BLA_VENDOR MATCHES "IBMESSL" OR BLA_VENDOR STREQUAL "All"))
+    if(BLAS_LIBRARIES MATCHES "essl.+")
+      set(LAPACK_LIBRARIES ${BLAS_LIBRARIES})
+    endif()
+  endif()
+
+  # NVHPC Library?
+
+  if(NOT LAPACK_LIBRARIES
+      AND (BLA_VENDOR MATCHES "NVHPC" OR BLA_VENDOR STREQUAL "All"))
+    set(_lapack_nvhpc_lib "lapack")
+
+    if(_lapack_sizeof_integer EQUAL 8)
+      string(APPEND _lapack_nvhpc_lib "_ilp64")
+    elseif(_lapack_sizeof_integer EQUAL 4)
+      string(APPEND _lapack_nvhpc_lib "_lp64")
+    endif()
+
+    check_lapack_libraries(
+      LAPACK_LIBRARIES
+      LAPACK
+      cheev
+      ""
+      "${_lapack_nvhpc_lib}"
+      "-fortranlibs"
+      ""
+      ""
+      "${BLAS_LIBRARIES}"
+    )
+
+    # an additional check for NVHPC 2020
+    # which does not have differentiation
+    # between lp64 and ilp64 modes
+    if(NOT LAPACK_LIBRARIES AND NOT _lapack_sizeof_integer EQUAL 8)
+      set(_lapack_nvhpc_lib "lapack")
+
+      check_lapack_libraries(
+        LAPACK_LIBRARIES
+        LAPACK
+        cheev
+        ""
+        "${_lapack_nvhpc_lib}"
+        "-fortranlibs"
+        ""
+        ""
+        "${BLAS_LIBRARIES}"
+      )
+    endif()
+
+    unset(_lapack_nvhpc_lib)
+  endif()
+
+  # Generic LAPACK library?
+  if(NOT LAPACK_LIBRARIES
+      AND (BLA_VENDOR STREQUAL "Generic"
+           OR BLA_VENDOR STREQUAL "ATLAS"
+           OR BLA_VENDOR STREQUAL "All"))
+    set(_lapack_generic_lib "lapack")
+    if(BLA_STATIC)
+      # We do not know for sure how the LAPACK reference implementation
+      # is built on this host.  Guess typical dependencies.
+      set(_lapack_generic_deps "-lgfortran;-lm")
+    else()
+      set(_lapack_generic_deps "")
+    endif()
+
+    if(_lapack_sizeof_integer EQUAL 8)
+      string(APPEND _lapack_generic_lib "64")
+    endif()
+
+    check_lapack_libraries(
+      LAPACK_LIBRARIES
+      LAPACK
+      cheev
+      ""
+      "${_lapack_generic_lib}"
+      "${_lapack_generic_deps}"
+      ""
+      ""
+      "${BLAS_LIBRARIES}"
+    )
+
+    unset(_lapack_generic_deps)
+    unset(_lapack_generic_lib)
+  endif()
+endif()
+
+if(BLA_F95)
+  set(LAPACK_LIBRARIES "${LAPACK95_LIBRARIES}")
+endif()
+
+if(LAPACK_NOT_FOUND_MESSAGE)
+  set(LAPACK_NOT_FOUND_MESSAGE
+    REASON_FAILURE_MESSAGE ${LAPACK_NOT_FOUND_MESSAGE})
+endif()
+find_package_handle_standard_args(LAPACK REQUIRED_VARS ${_lapack_fphsa_req_var}
+  ${LAPACK_NOT_FOUND_MESSAGE})
+unset(LAPACK_NOT_FOUND_MESSAGE)
+
+if(BLA_F95)
+  set(LAPACK95_FOUND ${LAPACK_FOUND})
+endif()
+
+# On compilers that implicitly link LAPACK (such as ftn, cc, and CC on Cray HPC machines)
+# we used a placeholder for empty LAPACK_LIBRARIES to get through our logic above.
+if(LAPACK_LIBRARIES STREQUAL "LAPACK_LIBRARIES-PLACEHOLDER-FOR-EMPTY-LIBRARIES")
+  set(LAPACK_LIBRARIES "")
+endif()
+
+_add_lapack_target()
+unset(_lapack_fphsa_req_var)
+unset(_lapack_sizeof_integer)
+unset(_LAPACK_LIBRARIES)
diff --git a/share/cmake-3.22/Modules/FindLATEX.cmake b/share/cmake-3.22/Modules/FindLATEX.cmake
new file mode 100644
index 0000000..9d7168e
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindLATEX.cmake
@@ -0,0 +1,287 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindLATEX
+---------
+
+Find LaTeX
+
+This module finds an installed LaTeX and determines the location
+of the compiler.  Additionally the module looks for Latex-related
+software like BibTeX.
+
+.. versionadded:: 3.2
+  Component processing; support for htlatex, pdftops, Biber, xindy, XeLaTeX,
+  LuaLaTeX.
+
+This module sets the following result variables::
+
+  LATEX_FOUND:          whether found Latex and requested components
+  LATEX_<component>_FOUND:  whether found <component>
+  LATEX_COMPILER:       path to the LaTeX compiler
+  PDFLATEX_COMPILER:    path to the PdfLaTeX compiler
+  XELATEX_COMPILER:     path to the XeLaTeX compiler
+  LUALATEX_COMPILER:    path to the LuaLaTeX compiler
+  BIBTEX_COMPILER:      path to the BibTeX compiler
+  BIBER_COMPILER:       path to the Biber compiler
+  MAKEINDEX_COMPILER:   path to the MakeIndex compiler
+  XINDY_COMPILER:       path to the xindy compiler
+  DVIPS_CONVERTER:      path to the DVIPS converter
+  DVIPDF_CONVERTER:     path to the DVIPDF converter
+  PS2PDF_CONVERTER:     path to the PS2PDF converter
+  PDFTOPS_CONVERTER:    path to the pdftops converter
+  LATEX2HTML_CONVERTER: path to the LaTeX2Html converter
+  HTLATEX_COMPILER:     path to the htlatex compiler
+
+Possible components are::
+
+  PDFLATEX
+  XELATEX
+  LUALATEX
+  BIBTEX
+  BIBER
+  MAKEINDEX
+  XINDY
+  DVIPS
+  DVIPDF
+  PS2PDF
+  PDFTOPS
+  LATEX2HTML
+  HTLATEX
+
+Example Usages::
+
+  find_package(LATEX)
+  find_package(LATEX COMPONENTS PDFLATEX)
+  find_package(LATEX COMPONENTS BIBTEX PS2PDF)
+#]=======================================================================]
+
+if (WIN32)
+  # Try to find the MikTex binary path (look for its package manager).
+  find_path(MIKTEX_BINARY_PATH mpm.exe
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MiK\\MiKTeX\\CurrentVersion\\MiKTeX;Install Root]/miktex/bin"
+     "$ENV{LOCALAPPDATA}/Programs/MiKTeX/miktex/bin"
+     "$ENV{LOCALAPPDATA}/Programs/MiKTeX/miktex/bin/x64"
+     "$ENV{APPDATA}/Programs/MiKTeX/miktex/bin"
+     "$ENV{APPDATA}/Programs/MiKTeX/miktex/bin/x64"
+    DOC
+    "Path to the MikTex binary directory."
+  )
+  mark_as_advanced(MIKTEX_BINARY_PATH)
+
+  # Try to find the GhostScript binary path (look for gswin32).
+  get_filename_component(GHOSTSCRIPT_BINARY_PATH_FROM_REGISTERY_8_00
+     "[HKEY_LOCAL_MACHINE\\SOFTWARE\\AFPL Ghostscript\\8.00;GS_DLL]" PATH
+  )
+
+  get_filename_component(GHOSTSCRIPT_BINARY_PATH_FROM_REGISTERY_7_04
+     "[HKEY_LOCAL_MACHINE\\SOFTWARE\\AFPL Ghostscript\\7.04;GS_DLL]" PATH
+  )
+
+  find_path(GHOSTSCRIPT_BINARY_PATH gswin32.exe
+    ${GHOSTSCRIPT_BINARY_PATH_FROM_REGISTERY_8_00}
+    ${GHOSTSCRIPT_BINARY_PATH_FROM_REGISTERY_7_04}
+    DOC "Path to the GhostScript binary directory."
+  )
+  mark_as_advanced(GHOSTSCRIPT_BINARY_PATH)
+
+  find_path(GHOSTSCRIPT_LIBRARY_PATH ps2pdf13.bat
+    "${GHOSTSCRIPT_BINARY_PATH}/../lib"
+    DOC "Path to the GhostScript library directory."
+  )
+  mark_as_advanced(GHOSTSCRIPT_LIBRARY_PATH)
+endif ()
+
+# try to find Latex and the related programs
+find_program(LATEX_COMPILER
+  NAMES latex
+  PATHS ${MIKTEX_BINARY_PATH}
+        /usr/bin
+)
+
+# find pdflatex
+find_program(PDFLATEX_COMPILER
+  NAMES pdflatex
+  PATHS ${MIKTEX_BINARY_PATH}
+        /usr/bin
+)
+if (PDFLATEX_COMPILER)
+  set(LATEX_PDFLATEX_FOUND TRUE)
+else()
+  set(LATEX_PDFLATEX_FOUND FALSE)
+endif()
+
+# find xelatex
+find_program(XELATEX_COMPILER
+  NAMES xelatex
+  PATHS ${MIKTEX_BINARY_PATH}
+        /usr/bin
+)
+if (XELATEX_COMPILER)
+  set(LATEX_XELATEX_FOUND TRUE)
+else()
+  set(LATEX_XELATEX_FOUND FALSE)
+endif()
+
+# find lualatex
+find_program(LUALATEX_COMPILER
+  NAMES lualatex
+  PATHS ${MIKTEX_BINARY_PATH}
+        /usr/bin
+)
+if (LUALATEX_COMPILER)
+  set(LATEX_LUALATEX_FOUND TRUE)
+else()
+  set(LATEX_LUALATEX_FOUND FALSE)
+endif()
+
+# find bibtex
+find_program(BIBTEX_COMPILER
+  NAMES bibtex
+  PATHS ${MIKTEX_BINARY_PATH}
+        /usr/bin
+)
+if (BIBTEX_COMPILER)
+  set(LATEX_BIBTEX_FOUND TRUE)
+else()
+  set(LATEX_BIBTEX_FOUND FALSE)
+endif()
+
+# find biber
+find_program(BIBER_COMPILER
+  NAMES biber
+  PATHS ${MIKTEX_BINARY_PATH}
+        /usr/bin
+)
+if (BIBER_COMPILER)
+  set(LATEX_BIBER_FOUND TRUE)
+else()
+  set(LATEX_BIBER_FOUND FALSE)
+endif()
+
+# find makeindex
+find_program(MAKEINDEX_COMPILER
+  NAMES makeindex
+  PATHS ${MIKTEX_BINARY_PATH}
+        /usr/bin
+)
+if (MAKEINDEX_COMPILER)
+  set(LATEX_MAKEINDEX_FOUND TRUE)
+else()
+  set(LATEX_MAKEINDEX_FOUND FALSE)
+endif()
+
+# find xindy
+find_program(XINDY_COMPILER
+  NAMES xindy
+  PATHS ${MIKTEX_BINARY_PATH}
+        /usr/bin
+)
+if (XINDY_COMPILER)
+  set(LATEX_XINDY_FOUND TRUE)
+else()
+  set(LATEX_XINDY_FOUND FALSE)
+endif()
+
+# find dvips
+find_program(DVIPS_CONVERTER
+  NAMES dvips
+  PATHS ${MIKTEX_BINARY_PATH}
+        /usr/bin
+)
+if (DVIPS_CONVERTER)
+  set(LATEX_DVIPS_FOUND TRUE)
+else()
+  set(LATEX_DVIPS_FOUND FALSE)
+endif()
+
+# find dvipdf
+find_program(DVIPDF_CONVERTER
+  NAMES dvipdfm dvipdft dvipdf
+  PATHS ${MIKTEX_BINARY_PATH}
+        /usr/bin
+)
+if (DVIPDF_CONVERTER)
+  set(LATEX_DVIPDF_FOUND TRUE)
+else()
+  set(LATEX_DVIPDF_FOUND FALSE)
+endif()
+
+# find ps2pdf
+if (WIN32)
+  find_program(PS2PDF_CONVERTER
+    NAMES ps2pdf14.bat ps2pdf14 ps2pdf
+    PATHS ${GHOSTSCRIPT_LIBRARY_PATH}
+          ${MIKTEX_BINARY_PATH}
+  )
+else ()
+  find_program(PS2PDF_CONVERTER
+    NAMES ps2pdf14 ps2pdf
+  )
+endif ()
+if (PS2PDF_CONVERTER)
+  set(LATEX_PS2PDF_FOUND TRUE)
+else()
+  set(LATEX_PS2PDF_FOUND FALSE)
+endif()
+
+# find pdftops
+find_program(PDFTOPS_CONVERTER
+  NAMES pdftops
+  PATHS ${MIKTEX_BINARY_PATH}
+        /usr/bin
+)
+if (PDFTOPS_CONVERTER)
+  set(LATEX_PDFTOPS_FOUND TRUE)
+else()
+  set(LATEX_PDFTOPS_FOUND FALSE)
+endif()
+
+# find latex2html
+find_program(LATEX2HTML_CONVERTER
+  NAMES latex2html
+  PATHS ${MIKTEX_BINARY_PATH}
+        /usr/bin
+)
+if (LATEX2HTML_CONVERTER)
+  set(LATEX_LATEX2HTML_FOUND TRUE)
+else()
+  set(LATEX_LATEX2HTML_FOUND FALSE)
+endif()
+
+# find htlatex
+find_program(HTLATEX_COMPILER
+  NAMES htlatex
+  PATHS ${MIKTEX_BINARY_PATH}
+        /usr/bin
+)
+if (HTLATEX_COMPILER)
+  set(LATEX_HTLATEX_FOUND TRUE)
+else()
+  set(LATEX_HTLATEX_FOUND FALSE)
+endif()
+
+
+mark_as_advanced(
+  LATEX_COMPILER
+  PDFLATEX_COMPILER
+  XELATEX_COMPILER
+  LUALATEX_COMPILER
+  BIBTEX_COMPILER
+  BIBER_COMPILER
+  MAKEINDEX_COMPILER
+  XINDY_COMPILER
+  DVIPS_CONVERTER
+  DVIPDF_CONVERTER
+  PS2PDF_CONVERTER
+  PDFTOPS_CONVERTER
+  LATEX2HTML_CONVERTER
+  HTLATEX_COMPILER
+)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(LATEX
+  REQUIRED_VARS LATEX_COMPILER
+  HANDLE_COMPONENTS
+)
diff --git a/share/cmake-3.22/Modules/FindLTTngUST.cmake b/share/cmake-3.22/Modules/FindLTTngUST.cmake
new file mode 100644
index 0000000..f478e4d
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindLTTngUST.cmake
@@ -0,0 +1,102 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindLTTngUST
+------------
+
+.. versionadded:: 3.6
+
+Find
+`Linux Trace Toolkit Next Generation (LTTng-UST) <http://lttng.org/>`__ library.
+
+Imported target
+^^^^^^^^^^^^^^^
+
+This module defines the following :prop_tgt:`IMPORTED` target:
+
+``LTTng::UST``
+  The LTTng-UST library, if found
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module sets the following
+
+``LTTNGUST_FOUND``
+  ``TRUE`` if system has LTTng-UST
+``LTTNGUST_INCLUDE_DIRS``
+  The LTTng-UST include directories
+``LTTNGUST_LIBRARIES``
+  The libraries needed to use LTTng-UST
+``LTTNGUST_VERSION_STRING``
+  The LTTng-UST version
+``LTTNGUST_HAS_TRACEF``
+  ``TRUE`` if the ``tracef()`` API is available in the system's LTTng-UST
+``LTTNGUST_HAS_TRACELOG``
+  ``TRUE`` if the ``tracelog()`` API is available in the system's LTTng-UST
+#]=======================================================================]
+
+find_path(LTTNGUST_INCLUDE_DIRS NAMES lttng/tracepoint.h)
+find_library(LTTNGUST_LIBRARIES NAMES lttng-ust)
+
+if(LTTNGUST_INCLUDE_DIRS AND LTTNGUST_LIBRARIES)
+  # find tracef() and tracelog() support
+  set(LTTNGUST_HAS_TRACEF 0)
+  set(LTTNGUST_HAS_TRACELOG 0)
+
+  if(EXISTS "${LTTNGUST_INCLUDE_DIRS}/lttng/tracef.h")
+    set(LTTNGUST_HAS_TRACEF TRUE)
+  endif()
+
+  if(EXISTS "${LTTNGUST_INCLUDE_DIRS}/lttng/tracelog.h")
+    set(LTTNGUST_HAS_TRACELOG TRUE)
+  endif()
+
+  # get version
+  set(lttngust_version_file "${LTTNGUST_INCLUDE_DIRS}/lttng/ust-version.h")
+
+  if(EXISTS "${lttngust_version_file}")
+    file(STRINGS "${lttngust_version_file}" lttngust_version_major_string
+         REGEX "^[\t ]*#define[\t ]+LTTNG_UST_MAJOR_VERSION[\t ]+[0-9]+[\t ]*$")
+    file(STRINGS "${lttngust_version_file}" lttngust_version_minor_string
+         REGEX "^[\t ]*#define[\t ]+LTTNG_UST_MINOR_VERSION[\t ]+[0-9]+[\t ]*$")
+    file(STRINGS "${lttngust_version_file}" lttngust_version_patch_string
+         REGEX "^[\t ]*#define[\t ]+LTTNG_UST_PATCHLEVEL_VERSION[\t ]+[0-9]+[\t ]*$")
+    string(REGEX REPLACE ".*([0-9]+).*" "\\1"
+           lttngust_v_major "${lttngust_version_major_string}")
+    string(REGEX REPLACE ".*([0-9]+).*" "\\1"
+           lttngust_v_minor "${lttngust_version_minor_string}")
+    string(REGEX REPLACE ".*([0-9]+).*" "\\1"
+           lttngust_v_patch "${lttngust_version_patch_string}")
+    set(LTTNGUST_VERSION_STRING
+        "${lttngust_v_major}.${lttngust_v_minor}.${lttngust_v_patch}")
+    unset(lttngust_version_major_string)
+    unset(lttngust_version_minor_string)
+    unset(lttngust_version_patch_string)
+    unset(lttngust_v_major)
+    unset(lttngust_v_minor)
+    unset(lttngust_v_patch)
+  endif()
+
+  unset(lttngust_version_file)
+
+  if(NOT TARGET LTTng::UST)
+    add_library(LTTng::UST UNKNOWN IMPORTED)
+    set_target_properties(LTTng::UST PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${LTTNGUST_INCLUDE_DIRS}"
+      INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS}
+      IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+      IMPORTED_LOCATION "${LTTNGUST_LIBRARIES}")
+  endif()
+
+  # add libdl to required libraries
+  set(LTTNGUST_LIBRARIES ${LTTNGUST_LIBRARIES} ${CMAKE_DL_LIBS})
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(LTTngUST FOUND_VAR LTTNGUST_FOUND
+                                  REQUIRED_VARS LTTNGUST_LIBRARIES
+                                                LTTNGUST_INCLUDE_DIRS
+                                  VERSION_VAR LTTNGUST_VERSION_STRING)
+mark_as_advanced(LTTNGUST_LIBRARIES LTTNGUST_INCLUDE_DIRS)
diff --git a/share/cmake-3.22/Modules/FindLibArchive.cmake b/share/cmake-3.22/Modules/FindLibArchive.cmake
new file mode 100644
index 0000000..08078a2
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindLibArchive.cmake
@@ -0,0 +1,80 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindLibArchive
+--------------
+
+Find libarchive library and headers.
+Libarchive is multi-format archive and compression library.
+
+The module defines the following variables:
+
+::
+
+  LibArchive_FOUND        - true if libarchive was found
+  LibArchive_INCLUDE_DIRS - include search path
+  LibArchive_LIBRARIES    - libraries to link
+  LibArchive_VERSION      - libarchive 3-component version number
+
+The module defines the following ``IMPORTED`` targets:
+
+::
+
+  LibArchive::LibArchive  - target for linking against libarchive
+
+.. versionadded:: 3.6
+  Support for new libarchive 3.2 version string format.
+
+#]=======================================================================]
+
+find_path(LibArchive_INCLUDE_DIR
+  NAMES archive.h
+  PATHS
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\LibArchive;InstallPath]/include"
+  DOC "libarchive include directory"
+  )
+
+find_library(LibArchive_LIBRARY
+  NAMES archive libarchive
+  PATHS
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\LibArchive;InstallPath]/lib"
+  DOC "libarchive library"
+  )
+
+mark_as_advanced(LibArchive_INCLUDE_DIR LibArchive_LIBRARY)
+
+# Extract the version number from the header.
+if(LibArchive_INCLUDE_DIR AND EXISTS "${LibArchive_INCLUDE_DIR}/archive.h")
+  # The version string appears in one of three known formats in the header:
+  #  #define ARCHIVE_LIBRARY_VERSION "libarchive 2.4.12"
+  #  #define ARCHIVE_VERSION_STRING "libarchive 2.8.4"
+  #  #define ARCHIVE_VERSION_ONLY_STRING "3.2.0"
+  # Match any format.
+  set(_LibArchive_VERSION_REGEX "^#define[ \t]+ARCHIVE[_A-Z]+VERSION[_A-Z]*[ \t]+\"(libarchive +)?([0-9]+)\\.([0-9]+)\\.([0-9]+)[^\"]*\".*$")
+  file(STRINGS "${LibArchive_INCLUDE_DIR}/archive.h" _LibArchive_VERSION_STRING LIMIT_COUNT 1 REGEX "${_LibArchive_VERSION_REGEX}")
+  if(_LibArchive_VERSION_STRING)
+    string(REGEX REPLACE "${_LibArchive_VERSION_REGEX}" "\\2.\\3.\\4" LibArchive_VERSION "${_LibArchive_VERSION_STRING}")
+  endif()
+  unset(_LibArchive_VERSION_REGEX)
+  unset(_LibArchive_VERSION_STRING)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(LibArchive
+                                  REQUIRED_VARS LibArchive_LIBRARY LibArchive_INCLUDE_DIR
+                                  VERSION_VAR LibArchive_VERSION
+  )
+unset(LIBARCHIVE_FOUND)
+
+if(LibArchive_FOUND)
+  set(LibArchive_INCLUDE_DIRS ${LibArchive_INCLUDE_DIR})
+  set(LibArchive_LIBRARIES    ${LibArchive_LIBRARY})
+
+  if (NOT TARGET LibArchive::LibArchive)
+    add_library(LibArchive::LibArchive UNKNOWN IMPORTED)
+    set_target_properties(LibArchive::LibArchive PROPERTIES
+      IMPORTED_LOCATION "${LibArchive_LIBRARY}"
+      INTERFACE_INCLUDE_DIRECTORIES "${LibArchive_INCLUDE_DIR}")
+  endif ()
+endif()
diff --git a/share/cmake-3.22/Modules/FindLibLZMA.cmake b/share/cmake-3.22/Modules/FindLibLZMA.cmake
new file mode 100644
index 0000000..9ec8f07
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindLibLZMA.cmake
@@ -0,0 +1,126 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindLibLZMA
+-----------
+
+Find LZMA compression algorithm headers and library.
+
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.14
+
+This module defines :prop_tgt:`IMPORTED` target ``LibLZMA::LibLZMA``, if
+liblzma has been found.
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``LIBLZMA_FOUND``
+  True if liblzma headers and library were found.
+``LIBLZMA_INCLUDE_DIRS``
+  Directory where liblzma headers are located.
+``LIBLZMA_LIBRARIES``
+  Lzma libraries to link against.
+``LIBLZMA_HAS_AUTO_DECODER``
+  True if lzma_auto_decoder() is found (required).
+``LIBLZMA_HAS_EASY_ENCODER``
+  True if lzma_easy_encoder() is found (required).
+``LIBLZMA_HAS_LZMA_PRESET``
+  True if lzma_lzma_preset() is found (required).
+``LIBLZMA_VERSION_MAJOR``
+  The major version of lzma
+``LIBLZMA_VERSION_MINOR``
+  The minor version of lzma
+``LIBLZMA_VERSION_PATCH``
+  The patch version of lzma
+``LIBLZMA_VERSION_STRING``
+  version number as a string (ex: "5.0.3")
+#]=======================================================================]
+
+find_path(LIBLZMA_INCLUDE_DIR lzma.h )
+if(NOT LIBLZMA_LIBRARY)
+  find_library(LIBLZMA_LIBRARY_RELEASE NAMES lzma liblzma NAMES_PER_DIR PATH_SUFFIXES lib)
+  find_library(LIBLZMA_LIBRARY_DEBUG NAMES lzmad liblzmad NAMES_PER_DIR PATH_SUFFIXES lib)
+  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+  select_library_configurations(LIBLZMA)
+else()
+  file(TO_CMAKE_PATH "${LIBLZMA_LIBRARY}" LIBLZMA_LIBRARY)
+endif()
+
+if(LIBLZMA_INCLUDE_DIR AND EXISTS "${LIBLZMA_INCLUDE_DIR}/lzma/version.h")
+    file(STRINGS "${LIBLZMA_INCLUDE_DIR}/lzma/version.h" LIBLZMA_HEADER_CONTENTS REGEX "#define LZMA_VERSION_[A-Z]+ [0-9]+")
+
+    string(REGEX REPLACE ".*#define LZMA_VERSION_MAJOR ([0-9]+).*" "\\1" LIBLZMA_VERSION_MAJOR "${LIBLZMA_HEADER_CONTENTS}")
+    string(REGEX REPLACE ".*#define LZMA_VERSION_MINOR ([0-9]+).*" "\\1" LIBLZMA_VERSION_MINOR "${LIBLZMA_HEADER_CONTENTS}")
+    string(REGEX REPLACE ".*#define LZMA_VERSION_PATCH ([0-9]+).*" "\\1" LIBLZMA_VERSION_PATCH "${LIBLZMA_HEADER_CONTENTS}")
+
+    set(LIBLZMA_VERSION_STRING "${LIBLZMA_VERSION_MAJOR}.${LIBLZMA_VERSION_MINOR}.${LIBLZMA_VERSION_PATCH}")
+    unset(LIBLZMA_HEADER_CONTENTS)
+endif()
+
+# We're using new code known now as XZ, even library still been called LZMA
+# it can be found in http://tukaani.org/xz/
+# Avoid using old codebase
+if (LIBLZMA_LIBRARY)
+  include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake)
+  set(CMAKE_REQUIRED_QUIET_SAVE ${CMAKE_REQUIRED_QUIET})
+  set(CMAKE_REQUIRED_QUIET ${LibLZMA_FIND_QUIETLY})
+  if(NOT LIBLZMA_LIBRARY_RELEASE AND NOT LIBLZMA_LIBRARY_DEBUG)
+    set(LIBLZMA_LIBRARY_check ${LIBLZMA_LIBRARY})
+  elseif(LIBLZMA_LIBRARY_RELEASE)
+    set(LIBLZMA_LIBRARY_check ${LIBLZMA_LIBRARY_RELEASE})
+  elseif(LIBLZMA_LIBRARY_DEBUG)
+    set(LIBLZMA_LIBRARY_check ${LIBLZMA_LIBRARY_DEBUG})
+  endif()
+  CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARY_check} lzma_auto_decoder "" LIBLZMA_HAS_AUTO_DECODER)
+  CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARY_check} lzma_easy_encoder "" LIBLZMA_HAS_EASY_ENCODER)
+  CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARY_check} lzma_lzma_preset "" LIBLZMA_HAS_LZMA_PRESET)
+  unset(LIBLZMA_LIBRARY_check)
+  set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE})
+endif ()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(LibLZMA  REQUIRED_VARS  LIBLZMA_LIBRARY
+                                                          LIBLZMA_INCLUDE_DIR
+                                                          LIBLZMA_HAS_AUTO_DECODER
+                                                          LIBLZMA_HAS_EASY_ENCODER
+                                                          LIBLZMA_HAS_LZMA_PRESET
+                                           VERSION_VAR    LIBLZMA_VERSION_STRING
+                                 )
+mark_as_advanced( LIBLZMA_INCLUDE_DIR LIBLZMA_LIBRARY )
+
+if (LIBLZMA_FOUND)
+    set(LIBLZMA_LIBRARIES ${LIBLZMA_LIBRARY})
+    set(LIBLZMA_INCLUDE_DIRS ${LIBLZMA_INCLUDE_DIR})
+    if(NOT TARGET LibLZMA::LibLZMA)
+        add_library(LibLZMA::LibLZMA UNKNOWN IMPORTED)
+        set_target_properties(LibLZMA::LibLZMA PROPERTIES
+                              INTERFACE_INCLUDE_DIRECTORIES ${LIBLZMA_INCLUDE_DIR}
+                              IMPORTED_LINK_INTERFACE_LANGUAGES C)
+
+        if(LIBLZMA_LIBRARY_RELEASE)
+            set_property(TARGET LibLZMA::LibLZMA APPEND PROPERTY
+                IMPORTED_CONFIGURATIONS RELEASE)
+            set_target_properties(LibLZMA::LibLZMA PROPERTIES
+                IMPORTED_LOCATION_RELEASE "${LIBLZMA_LIBRARY_RELEASE}")
+        endif()
+
+        if(LIBLZMA_LIBRARY_DEBUG)
+            set_property(TARGET LibLZMA::LibLZMA APPEND PROPERTY
+                IMPORTED_CONFIGURATIONS DEBUG)
+            set_target_properties(LibLZMA::LibLZMA PROPERTIES
+                IMPORTED_LOCATION_DEBUG "${LIBLZMA_LIBRARY_DEBUG}")
+        endif()
+
+        if(NOT LIBLZMA_LIBRARY_RELEASE AND NOT LIBLZMA_LIBRARY_DEBUG)
+            set_target_properties(LibLZMA::LibLZMA PROPERTIES
+                IMPORTED_LOCATION "${LIBLZMA_LIBRARY}")
+        endif()
+    endif()
+endif ()
diff --git a/share/cmake-3.22/Modules/FindLibXml2.cmake b/share/cmake-3.22/Modules/FindLibXml2.cmake
new file mode 100644
index 0000000..ce28d03
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindLibXml2.cmake
@@ -0,0 +1,124 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindLibXml2
+-----------
+
+Find the XML processing library (libxml2).
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.12
+
+The following :prop_tgt:`IMPORTED` targets may be defined:
+
+``LibXml2::LibXml2``
+  libxml2 library.
+``LibXml2::xmllint``
+  .. versionadded:: 3.17
+
+  xmllint command-line executable.
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``LibXml2_FOUND``
+  true if libxml2 headers and libraries were found
+``LIBXML2_INCLUDE_DIR``
+  the directory containing LibXml2 headers
+``LIBXML2_INCLUDE_DIRS``
+  list of the include directories needed to use LibXml2
+``LIBXML2_LIBRARIES``
+  LibXml2 libraries to be linked
+``LIBXML2_DEFINITIONS``
+  the compiler switches required for using LibXml2
+``LIBXML2_XMLLINT_EXECUTABLE``
+  path to the XML checking tool xmllint coming with LibXml2
+``LIBXML2_VERSION_STRING``
+  the version of LibXml2 found (since CMake 2.8.8)
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set:
+
+``LIBXML2_INCLUDE_DIR``
+  the directory containing LibXml2 headers
+``LIBXML2_LIBRARY``
+  path to the LibXml2 library
+#]=======================================================================]
+
+# use pkg-config to get the directories and then use these values
+# in the find_path() and find_library() calls
+find_package(PkgConfig QUIET)
+PKG_CHECK_MODULES(PC_LIBXML QUIET libxml-2.0)
+
+find_path(LIBXML2_INCLUDE_DIR NAMES libxml/xpath.h
+   HINTS
+   ${PC_LIBXML_INCLUDEDIR}
+   ${PC_LIBXML_INCLUDE_DIRS}
+   PATH_SUFFIXES libxml2
+   )
+
+# CMake 3.9 and below used 'LIBXML2_LIBRARIES' as the name of
+# the cache entry storing the find_library result.  Use the
+# value if it was set by the project or user.
+if(DEFINED LIBXML2_LIBRARIES AND NOT DEFINED LIBXML2_LIBRARY)
+  set(LIBXML2_LIBRARY ${LIBXML2_LIBRARIES})
+endif()
+
+find_library(LIBXML2_LIBRARY NAMES xml2 libxml2 libxml2_a
+   HINTS
+   ${PC_LIBXML_LIBDIR}
+   ${PC_LIBXML_LIBRARY_DIRS}
+   )
+
+find_program(LIBXML2_XMLLINT_EXECUTABLE xmllint)
+# for backwards compat. with KDE 4.0.x:
+set(XMLLINT_EXECUTABLE "${LIBXML2_XMLLINT_EXECUTABLE}")
+
+if(LIBXML2_INCLUDE_DIR AND EXISTS "${LIBXML2_INCLUDE_DIR}/libxml/xmlversion.h")
+    file(STRINGS "${LIBXML2_INCLUDE_DIR}/libxml/xmlversion.h" libxml2_version_str
+         REGEX "^#define[\t ]+LIBXML_DOTTED_VERSION[\t ]+\".*\"")
+
+    string(REGEX REPLACE "^#define[\t ]+LIBXML_DOTTED_VERSION[\t ]+\"([^\"]*)\".*" "\\1"
+           LIBXML2_VERSION_STRING "${libxml2_version_str}")
+    unset(libxml2_version_str)
+endif()
+
+set(LIBXML2_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR})
+set(LIBXML2_LIBRARIES ${LIBXML2_LIBRARY})
+
+# Did we find the same installation as pkg-config?
+# If so, use additional information from it.
+unset(LIBXML2_DEFINITIONS)
+foreach(libxml2_pc_lib_dir IN LISTS PC_LIBXML_LIBDIR PC_LIBXML_LIBRARY_DIRS)
+  if (LIBXML2_LIBRARY MATCHES "^${libxml2_pc_lib_dir}")
+    list(APPEND LIBXML2_INCLUDE_DIRS ${PC_LIBXML_INCLUDE_DIRS})
+    set(LIBXML2_DEFINITIONS ${PC_LIBXML_CFLAGS_OTHER})
+    break()
+  endif()
+endforeach()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibXml2
+                                  REQUIRED_VARS LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR
+                                  VERSION_VAR LIBXML2_VERSION_STRING)
+
+mark_as_advanced(LIBXML2_INCLUDE_DIR LIBXML2_LIBRARY LIBXML2_XMLLINT_EXECUTABLE)
+
+if(LibXml2_FOUND AND NOT TARGET LibXml2::LibXml2)
+  add_library(LibXml2::LibXml2 UNKNOWN IMPORTED)
+  set_target_properties(LibXml2::LibXml2 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBXML2_INCLUDE_DIRS}")
+  set_target_properties(LibXml2::LibXml2 PROPERTIES INTERFACE_COMPILE_OPTIONS "${LIBXML2_DEFINITIONS}")
+  set_property(TARGET LibXml2::LibXml2 APPEND PROPERTY IMPORTED_LOCATION "${LIBXML2_LIBRARY}")
+endif()
+
+if(LIBXML2_XMLLINT_EXECUTABLE AND NOT TARGET LibXml2::xmllint)
+  add_executable(LibXml2::xmllint IMPORTED)
+  set_target_properties(LibXml2::xmllint PROPERTIES IMPORTED_LOCATION "${LIBXML2_XMLLINT_EXECUTABLE}")
+endif()
diff --git a/share/cmake-3.22/Modules/FindLibXslt.cmake b/share/cmake-3.22/Modules/FindLibXslt.cmake
new file mode 100644
index 0000000..97943d6
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindLibXslt.cmake
@@ -0,0 +1,134 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindLibXslt
+-----------
+
+Find the XSL Transformations, Extensible Stylesheet Language
+Transformations (XSLT) library (LibXslt)
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.18
+
+The following :prop_tgt:`IMPORTED` targets may be defined:
+
+``LibXslt::LibXslt``
+  If the libxslt library has been found
+``LibXslt::LibExslt``
+  If the libexslt library has been found
+``LibXslt::xsltproc``
+  If the xsltproc command-line executable has been found
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+  LIBXSLT_FOUND - system has LibXslt
+  LIBXSLT_INCLUDE_DIR - the LibXslt include directory
+  LIBXSLT_LIBRARIES - Link these to LibXslt
+  LIBXSLT_DEFINITIONS - Compiler switches required for using LibXslt
+  LIBXSLT_VERSION_STRING - version of LibXslt found (since CMake 2.8.8)
+
+Additionally, the following two variables are set (but not required
+for using xslt):
+
+``LIBXSLT_EXSLT_INCLUDE_DIR``
+  .. versionadded:: 3.18
+    The include directory for exslt.
+``LIBXSLT_EXSLT_LIBRARIES``
+  Link to these if you need to link against the exslt library.
+``LIBXSLT_XSLTPROC_EXECUTABLE``
+  Contains the full path to the xsltproc executable if found.
+#]=======================================================================]
+
+# use pkg-config to get the directories and then use these values
+# in the find_path() and find_library() calls
+find_package(PkgConfig QUIET)
+PKG_CHECK_MODULES(PC_LIBXSLT QUIET libxslt)
+set(LIBXSLT_DEFINITIONS ${PC_LIBXSLT_CFLAGS_OTHER})
+
+find_path(LIBXSLT_INCLUDE_DIR NAMES libxslt/xslt.h
+    HINTS
+   ${PC_LIBXSLT_INCLUDEDIR}
+   ${PC_LIBXSLT_INCLUDE_DIRS}
+  )
+
+# CMake 3.17 and below used 'LIBXSLT_LIBRARIES' as the name of
+# the cache entry storing the find_library result.  Use the
+# value if it was set by the project or user.
+if(DEFINED LIBXSLT_LIBRARIES AND NOT DEFINED LIBXSLT_LIBRARY)
+  set(LIBXSLT_LIBRARY ${LIBXSLT_LIBRARIES})
+endif()
+
+find_library(LIBXSLT_LIBRARY NAMES xslt libxslt
+    HINTS
+   ${PC_LIBXSLT_LIBDIR}
+   ${PC_LIBXSLT_LIBRARY_DIRS}
+  )
+
+set(LIBXSLT_LIBRARIES ${LIBXSLT_LIBRARY})
+
+PKG_CHECK_MODULES(PC_LIBXSLT_EXSLT QUIET libexslt)
+set(LIBXSLT_EXSLT_DEFINITIONS ${PC_LIBXSLT_EXSLT_CFLAGS_OTHER})
+
+find_path(LIBXSLT_EXSLT_INCLUDE_DIR NAMES libexslt/exslt.h
+  HINTS
+  ${PC_LIBXSLT_EXSLT_INCLUDEDIR}
+  ${PC_LIBXSLT_EXSLT_INCLUDE_DIRS}
+)
+
+find_library(LIBXSLT_EXSLT_LIBRARY NAMES exslt libexslt
+    HINTS
+    ${PC_LIBXSLT_LIBDIR}
+    ${PC_LIBXSLT_LIBRARY_DIRS}
+    ${PC_LIBXSLT_EXSLT_LIBDIR}
+    ${PC_LIBXSLT_EXSLT_LIBRARY_DIRS}
+  )
+
+set(LIBXSLT_EXSLT_LIBRARIES ${LIBXSLT_EXSLT_LIBRARY} )
+
+find_program(LIBXSLT_XSLTPROC_EXECUTABLE xsltproc)
+
+if(PC_LIBXSLT_VERSION)
+    set(LIBXSLT_VERSION_STRING ${PC_LIBXSLT_VERSION})
+elseif(LIBXSLT_INCLUDE_DIR AND EXISTS "${LIBXSLT_INCLUDE_DIR}/libxslt/xsltconfig.h")
+    file(STRINGS "${LIBXSLT_INCLUDE_DIR}/libxslt/xsltconfig.h" libxslt_version_str
+         REGEX "^#define[\t ]+LIBXSLT_DOTTED_VERSION[\t ]+\".*\"")
+
+    string(REGEX REPLACE "^#define[\t ]+LIBXSLT_DOTTED_VERSION[\t ]+\"([^\"]*)\".*" "\\1"
+           LIBXSLT_VERSION_STRING "${libxslt_version_str}")
+    unset(libxslt_version_str)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibXslt
+                                  REQUIRED_VARS LIBXSLT_LIBRARIES LIBXSLT_INCLUDE_DIR
+                                  VERSION_VAR LIBXSLT_VERSION_STRING)
+
+mark_as_advanced(LIBXSLT_INCLUDE_DIR
+                 LIBXSLT_LIBRARIES
+                 LIBXSLT_EXSLT_LIBRARY
+                 LIBXSLT_XSLTPROC_EXECUTABLE)
+
+if(LIBXSLT_FOUND AND NOT TARGET LibXslt::LibXslt)
+  add_library(LibXslt::LibXslt UNKNOWN IMPORTED)
+  set_target_properties(LibXslt::LibXslt PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBXSLT_INCLUDE_DIR}")
+  set_target_properties(LibXslt::LibXslt PROPERTIES INTERFACE_COMPILE_OPTIONS "${LIBXSLT_DEFINITIONS}")
+  set_property(TARGET LibXslt::LibXslt APPEND PROPERTY IMPORTED_LOCATION "${LIBXSLT_LIBRARY}")
+endif()
+
+if(LIBXSLT_FOUND AND NOT TARGET LibXslt::LibExslt)
+  add_library(LibXslt::LibExslt UNKNOWN IMPORTED)
+  set_target_properties(LibXslt::LibExslt PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LIBXSLT_EXSLT_INCLUDE_DIR}")
+  set_target_properties(LibXslt::LibExslt PROPERTIES INTERFACE_COMPILE_OPTIONS "${LIBXSLT_EXSLT_DEFINITIONS}")
+  set_property(TARGET LibXslt::LibExslt APPEND PROPERTY IMPORTED_LOCATION "${LIBXSLT_EXSLT_LIBRARY}")
+endif()
+
+if(LIBXSLT_XSLTPROC_EXECUTABLE AND NOT TARGET LibXslt::xsltproc)
+  add_executable(LibXslt::xsltproc IMPORTED)
+  set_target_properties(LibXslt::xsltproc PROPERTIES IMPORTED_LOCATION "${LIBXSLT_XSLTPROC_EXECUTABLE}")
+endif()
diff --git a/share/cmake-3.22/Modules/FindLibinput.cmake b/share/cmake-3.22/Modules/FindLibinput.cmake
new file mode 100644
index 0000000..88d5b2f
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindLibinput.cmake
@@ -0,0 +1,84 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindLibinput
+------------
+
+.. versionadded:: 3.14
+
+Find libinput headers and library.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+``Libinput::Libinput``
+  The libinput library, if found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This will define the following variables in your project:
+
+``Libinput_FOUND``
+  true if (the requested version of) libinput is available.
+``Libinput_VERSION``
+  the version of libinput.
+``Libinput_LIBRARIES``
+  the libraries to link against to use libinput.
+``Libinput_INCLUDE_DIRS``
+  where to find the libinput headers.
+``Libinput_COMPILE_OPTIONS``
+  this should be passed to target_compile_options(), if the
+  target is not used for linking
+
+#]=======================================================================]
+
+
+# Use pkg-config to get the directories and then use these values
+# in the FIND_PATH() and FIND_LIBRARY() calls
+find_package(PkgConfig QUIET)
+pkg_check_modules(PKG_Libinput QUIET libinput)
+
+set(Libinput_COMPILE_OPTIONS ${PKG_Libinput_CFLAGS_OTHER})
+set(Libinput_VERSION ${PKG_Libinput_VERSION})
+
+find_path(Libinput_INCLUDE_DIR
+  NAMES
+    libinput.h
+  HINTS
+    ${PKG_Libinput_INCLUDE_DIRS}
+)
+find_library(Libinput_LIBRARY
+  NAMES
+    input
+  HINTS
+    ${PKG_Libinput_LIBRARY_DIRS}
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Libinput
+  FOUND_VAR
+    Libinput_FOUND
+  REQUIRED_VARS
+    Libinput_LIBRARY
+    Libinput_INCLUDE_DIR
+  VERSION_VAR
+    Libinput_VERSION
+)
+
+if(Libinput_FOUND AND NOT TARGET Libinput::Libinput)
+  add_library(Libinput::Libinput UNKNOWN IMPORTED)
+  set_target_properties(Libinput::Libinput PROPERTIES
+    IMPORTED_LOCATION "${Libinput_LIBRARY}"
+    INTERFACE_COMPILE_OPTIONS "${Libinput_COMPILE_OPTIONS}"
+    INTERFACE_INCLUDE_DIRECTORIES "${Libinput_INCLUDE_DIR}"
+  )
+endif()
+
+mark_as_advanced(Libinput_LIBRARY Libinput_INCLUDE_DIR)
+
+if(Libinput_FOUND)
+  set(Libinput_LIBRARIES ${Libinput_LIBRARY})
+  set(Libinput_INCLUDE_DIRS ${Libinput_INCLUDE_DIR})
+endif()
diff --git a/share/cmake-3.22/Modules/FindLua.cmake b/share/cmake-3.22/Modules/FindLua.cmake
new file mode 100644
index 0000000..32642fe
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindLua.cmake
@@ -0,0 +1,239 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindLua
+-------
+
+Locate Lua library.
+
+.. versionadded:: 3.18
+  Support for Lua 5.4.
+
+This module defines::
+
+::
+
+  LUA_FOUND          - if false, do not try to link to Lua
+  LUA_LIBRARIES      - both lua and lualib
+  LUA_INCLUDE_DIR    - where to find lua.h
+  LUA_VERSION_STRING - the version of Lua found
+  LUA_VERSION_MAJOR  - the major version of Lua
+  LUA_VERSION_MINOR  - the minor version of Lua
+  LUA_VERSION_PATCH  - the patch version of Lua
+
+
+
+Note that the expected include convention is
+
+::
+
+  #include "lua.h"
+
+and not
+
+::
+
+  #include <lua/lua.h>
+
+This is because, the lua location is not standardized and may exist in
+locations other than lua/
+#]=======================================================================]
+
+cmake_policy(PUSH)  # Policies apply to functions at definition-time
+cmake_policy(SET CMP0012 NEW)  # For while(TRUE)
+
+unset(_lua_include_subdirs)
+unset(_lua_library_names)
+unset(_lua_append_versions)
+
+# this is a function only to have all the variables inside go away automatically
+function(_lua_get_versions)
+    set(LUA_VERSIONS5 5.4 5.3 5.2 5.1 5.0)
+
+    if (Lua_FIND_VERSION_EXACT)
+        if (Lua_FIND_VERSION_COUNT GREATER 1)
+            set(_lua_append_versions ${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR})
+        endif ()
+    elseif (Lua_FIND_VERSION)
+        # once there is a different major version supported this should become a loop
+        if (NOT Lua_FIND_VERSION_MAJOR GREATER 5)
+            if (Lua_FIND_VERSION_COUNT EQUAL 1)
+                set(_lua_append_versions ${LUA_VERSIONS5})
+            else ()
+                foreach (subver IN LISTS LUA_VERSIONS5)
+                    if (NOT subver VERSION_LESS ${Lua_FIND_VERSION})
+                        list(APPEND _lua_append_versions ${subver})
+                    endif ()
+                endforeach ()
+                # New version -> Search for it (heuristic only! Defines in include might have changed)
+                if (NOT _lua_append_versions)
+                    set(_lua_append_versions ${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR})
+                endif()
+            endif ()
+        endif ()
+    else ()
+        # once there is a different major version supported this should become a loop
+        set(_lua_append_versions ${LUA_VERSIONS5})
+    endif ()
+
+    if (LUA_Debug)
+        message(STATUS "Considering following Lua versions: ${_lua_append_versions}")
+    endif()
+
+    set(_lua_append_versions "${_lua_append_versions}" PARENT_SCOPE)
+endfunction()
+
+function(_lua_set_version_vars)
+  set(_lua_include_subdirs_raw "lua")
+
+  foreach (ver IN LISTS _lua_append_versions)
+    string(REGEX MATCH "^([0-9]+)\\.([0-9]+)$" _ver "${ver}")
+    list(APPEND _lua_include_subdirs_raw
+        lua${CMAKE_MATCH_1}${CMAKE_MATCH_2}
+        lua${CMAKE_MATCH_1}.${CMAKE_MATCH_2}
+        lua-${CMAKE_MATCH_1}.${CMAKE_MATCH_2}
+        )
+  endforeach ()
+
+  # Prepend "include/" to each path directly after the path
+  set(_lua_include_subdirs "include")
+  foreach (dir IN LISTS _lua_include_subdirs_raw)
+    list(APPEND _lua_include_subdirs "${dir}" "include/${dir}")
+  endforeach ()
+
+  set(_lua_include_subdirs "${_lua_include_subdirs}" PARENT_SCOPE)
+endfunction(_lua_set_version_vars)
+
+function(_lua_get_header_version)
+  unset(LUA_VERSION_STRING PARENT_SCOPE)
+  set(_hdr_file "${LUA_INCLUDE_DIR}/lua.h")
+
+  if (NOT EXISTS "${_hdr_file}")
+    return()
+  endif ()
+
+  # At least 5.[012] have different ways to express the version
+  # so all of them need to be tested. Lua 5.2 defines LUA_VERSION
+  # and LUA_RELEASE as joined by the C preprocessor, so avoid those.
+  file(STRINGS "${_hdr_file}" lua_version_strings
+       REGEX "^#define[ \t]+LUA_(RELEASE[ \t]+\"Lua [0-9]|VERSION([ \t]+\"Lua [0-9]|_[MR])).*")
+
+  string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MAJOR[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_MAJOR ";${lua_version_strings};")
+  if (LUA_VERSION_MAJOR MATCHES "^[0-9]+$")
+    string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MINOR[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_MINOR ";${lua_version_strings};")
+    string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_RELEASE[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_PATCH ";${lua_version_strings};")
+    set(LUA_VERSION_STRING "${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}.${LUA_VERSION_PATCH}")
+  else ()
+    string(REGEX REPLACE ".*;#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" LUA_VERSION_STRING ";${lua_version_strings};")
+    if (NOT LUA_VERSION_STRING MATCHES "^[0-9.]+$")
+      string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" LUA_VERSION_STRING ";${lua_version_strings};")
+    endif ()
+    string(REGEX REPLACE "^([0-9]+)\\.[0-9.]*$" "\\1" LUA_VERSION_MAJOR "${LUA_VERSION_STRING}")
+    string(REGEX REPLACE "^[0-9]+\\.([0-9]+)[0-9.]*$" "\\1" LUA_VERSION_MINOR "${LUA_VERSION_STRING}")
+    string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]).*" "\\1" LUA_VERSION_PATCH "${LUA_VERSION_STRING}")
+  endif ()
+  foreach (ver IN LISTS _lua_append_versions)
+    if (ver STREQUAL "${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}")
+      set(LUA_VERSION_MAJOR ${LUA_VERSION_MAJOR} PARENT_SCOPE)
+      set(LUA_VERSION_MINOR ${LUA_VERSION_MINOR} PARENT_SCOPE)
+      set(LUA_VERSION_PATCH ${LUA_VERSION_PATCH} PARENT_SCOPE)
+      set(LUA_VERSION_STRING ${LUA_VERSION_STRING} PARENT_SCOPE)
+      return()
+    endif ()
+  endforeach ()
+endfunction(_lua_get_header_version)
+
+function(_lua_find_header)
+  _lua_set_version_vars()
+
+  # Initialize as local variable
+  set(CMAKE_IGNORE_PATH ${CMAKE_IGNORE_PATH})
+  while (TRUE)
+    # Find the next header to test. Check each possible subdir in order
+    # This prefers e.g. higher versions as they are earlier in the list
+    # It is also consistent with previous versions of FindLua
+    foreach (subdir IN LISTS _lua_include_subdirs)
+      find_path(LUA_INCLUDE_DIR lua.h
+        HINTS ENV LUA_DIR
+        PATH_SUFFIXES ${subdir}
+        )
+      if (LUA_INCLUDE_DIR)
+        break()
+      endif()
+    endforeach()
+    # Did not found header -> Fail
+    if (NOT LUA_INCLUDE_DIR)
+      return()
+    endif()
+    _lua_get_header_version()
+    # Found accepted version -> Ok
+    if (LUA_VERSION_STRING)
+      if (LUA_Debug)
+        message(STATUS "Found suitable version ${LUA_VERSION_STRING} in ${LUA_INCLUDE_DIR}/lua.h")
+      endif()
+      return()
+    endif()
+    # Found wrong version -> Ignore this path and retry
+    if (LUA_Debug)
+      message(STATUS "Ignoring unsuitable version in ${LUA_INCLUDE_DIR}")
+    endif()
+    list(APPEND CMAKE_IGNORE_PATH "${LUA_INCLUDE_DIR}")
+    unset(LUA_INCLUDE_DIR CACHE)
+    unset(LUA_INCLUDE_DIR)
+    unset(LUA_INCLUDE_DIR PARENT_SCOPE)
+  endwhile ()
+endfunction()
+
+_lua_get_versions()
+_lua_find_header()
+_lua_get_header_version()
+unset(_lua_append_versions)
+
+if (LUA_VERSION_STRING)
+  set(_lua_library_names
+    lua${LUA_VERSION_MAJOR}${LUA_VERSION_MINOR}
+    lua${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}
+    lua-${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}
+    lua.${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}
+    )
+endif ()
+
+find_library(LUA_LIBRARY
+  NAMES ${_lua_library_names} lua
+  NAMES_PER_DIR
+  HINTS
+    ENV LUA_DIR
+  PATH_SUFFIXES lib
+)
+unset(_lua_library_names)
+
+if (LUA_LIBRARY)
+  # include the math library for Unix
+  if (UNIX AND NOT APPLE AND NOT BEOS)
+    find_library(LUA_MATH_LIBRARY m)
+    mark_as_advanced(LUA_MATH_LIBRARY)
+    set(LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}")
+
+    # include dl library for statically-linked Lua library
+    get_filename_component(LUA_LIB_EXT ${LUA_LIBRARY} EXT)
+    if(LUA_LIB_EXT STREQUAL CMAKE_STATIC_LIBRARY_SUFFIX)
+      list(APPEND LUA_LIBRARIES ${CMAKE_DL_LIBS})
+    endif()
+
+  # For Windows and Mac, don't need to explicitly include the math library
+  else ()
+    set(LUA_LIBRARIES "${LUA_LIBRARY}")
+  endif ()
+endif ()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+# handle the QUIETLY and REQUIRED arguments and set LUA_FOUND to TRUE if
+# all listed variables are TRUE
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua
+                                  REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR
+                                  VERSION_VAR LUA_VERSION_STRING)
+
+mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARY)
+
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FindLua50.cmake b/share/cmake-3.22/Modules/FindLua50.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindLua50.cmake
rename to share/cmake-3.22/Modules/FindLua50.cmake
diff --git a/share/cmake-3.18/Modules/FindLua51.cmake b/share/cmake-3.22/Modules/FindLua51.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindLua51.cmake
rename to share/cmake-3.22/Modules/FindLua51.cmake
diff --git a/share/cmake-3.18/Modules/FindMFC.cmake b/share/cmake-3.22/Modules/FindMFC.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindMFC.cmake
rename to share/cmake-3.22/Modules/FindMFC.cmake
diff --git a/share/cmake-3.18/Modules/FindMPEG.cmake b/share/cmake-3.22/Modules/FindMPEG.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindMPEG.cmake
rename to share/cmake-3.22/Modules/FindMPEG.cmake
diff --git a/share/cmake-3.18/Modules/FindMPEG2.cmake b/share/cmake-3.22/Modules/FindMPEG2.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindMPEG2.cmake
rename to share/cmake-3.22/Modules/FindMPEG2.cmake
diff --git a/share/cmake-3.22/Modules/FindMPI.cmake b/share/cmake-3.22/Modules/FindMPI.cmake
new file mode 100644
index 0000000..c974d33
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindMPI.cmake
@@ -0,0 +1,1900 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindMPI
+-------
+
+Find a Message Passing Interface (MPI) implementation.
+
+The Message Passing Interface (MPI) is a library used to write
+high-performance distributed-memory parallel applications, and is
+typically deployed on a cluster.  MPI is a standard interface (defined
+by the MPI forum) for which many implementations are available.
+
+.. versionadded:: 3.10
+  Major overhaul of the module: many new variables, per-language components,
+  support for a wider variety of runtimes.
+
+Variables for using MPI
+^^^^^^^^^^^^^^^^^^^^^^^
+
+The module exposes the components ``C``, ``CXX``, ``MPICXX`` and ``Fortran``.
+Each of these controls the various MPI languages to search for.
+The difference between ``CXX`` and ``MPICXX`` is that ``CXX`` refers to the
+MPI C API being usable from C++, whereas ``MPICXX`` refers to the MPI-2 C++ API
+that was removed again in MPI-3.
+
+Depending on the enabled components the following variables will be set:
+
+``MPI_FOUND``
+  Variable indicating that MPI settings for all requested languages have been found.
+  If no components are specified, this is true if MPI settings for all enabled languages
+  were detected. Note that the ``MPICXX`` component does not affect this variable.
+``MPI_VERSION``
+  Minimal version of MPI detected among the requested languages, or all enabled languages
+  if no components were specified.
+
+This module will set the following variables per language in your
+project, where ``<lang>`` is one of C, CXX, or Fortran:
+
+``MPI_<lang>_FOUND``
+  Variable indicating the MPI settings for ``<lang>`` were found and that
+  simple MPI test programs compile with the provided settings.
+``MPI_<lang>_COMPILER``
+  MPI compiler for ``<lang>`` if such a program exists.
+``MPI_<lang>_COMPILE_OPTIONS``
+  Compilation options for MPI programs in ``<lang>``, given as a :ref:`;-list <CMake Language Lists>`.
+``MPI_<lang>_COMPILE_DEFINITIONS``
+  Compilation definitions for MPI programs in ``<lang>``, given as a :ref:`;-list <CMake Language Lists>`.
+``MPI_<lang>_INCLUDE_DIRS``
+  Include path(s) for MPI header.
+``MPI_<lang>_LINK_FLAGS``
+  Linker flags for MPI programs.
+``MPI_<lang>_LIBRARIES``
+  All libraries to link MPI programs against.
+
+.. versionadded:: 3.9
+  Additionally, the following :prop_tgt:`IMPORTED` targets are defined:
+
+``MPI::MPI_<lang>``
+  Target for using MPI from ``<lang>``.
+
+The following variables indicating which bindings are present will be defined:
+
+``MPI_MPICXX_FOUND``
+  Variable indicating whether the MPI-2 C++ bindings are present (introduced in MPI-2, removed with MPI-3).
+``MPI_Fortran_HAVE_F77_HEADER``
+  True if the Fortran 77 header ``mpif.h`` is available.
+``MPI_Fortran_HAVE_F90_MODULE``
+  True if the Fortran 90 module ``mpi`` can be used for accessing MPI (MPI-2 and higher only).
+``MPI_Fortran_HAVE_F08_MODULE``
+  True if the Fortran 2008 ``mpi_f08`` is available to MPI programs (MPI-3 and higher only).
+
+If possible, the MPI version will be determined by this module. The facilities to detect the MPI version
+were introduced with MPI-1.2, and therefore cannot be found for older MPI versions.
+
+``MPI_<lang>_VERSION_MAJOR``
+  Major version of MPI implemented for ``<lang>`` by the MPI distribution.
+``MPI_<lang>_VERSION_MINOR``
+  Minor version of MPI implemented for ``<lang>`` by the MPI distribution.
+``MPI_<lang>_VERSION``
+  MPI version implemented for ``<lang>`` by the MPI distribution.
+
+Note that there's no variable for the C bindings being accessible through ``mpi.h``, since the MPI standards
+always have required this binding to work in both C and C++ code.
+
+For running MPI programs, the module sets the following variables
+
+``MPIEXEC_EXECUTABLE``
+  Executable for running MPI programs, if such exists.
+``MPIEXEC_NUMPROC_FLAG``
+  Flag to pass to ``mpiexec`` before giving it the number of processors to run on.
+``MPIEXEC_MAX_NUMPROCS``
+  Number of MPI processors to utilize. Defaults to the number
+  of processors detected on the host system.
+``MPIEXEC_PREFLAGS``
+  Flags to pass to ``mpiexec`` directly before the executable to run.
+``MPIEXEC_POSTFLAGS``
+  Flags to pass to ``mpiexec`` after other flags.
+
+Variables for locating MPI
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This module performs a four step search for an MPI implementation:
+
+1. Search for ``MPIEXEC_EXECUTABLE`` and, if found, use its base directory.
+2. Check if the compiler has MPI support built-in. This is the case if the user passed a
+   compiler wrapper as ``CMAKE_<LANG>_COMPILER`` or if they use Cray system compiler wrappers.
+3. Attempt to find an MPI compiler wrapper and determine the compiler information from it.
+4. Try to find an MPI implementation that does not ship such a wrapper by guessing settings.
+   Currently, only Microsoft MPI and MPICH2 on Windows are supported.
+
+For controlling the ``MPIEXEC_EXECUTABLE`` step, the following variables may be set:
+
+``MPIEXEC_EXECUTABLE``
+  Manually specify the location of ``mpiexec``.
+``MPI_HOME``
+  Specify the base directory of the MPI installation.
+``ENV{MPI_HOME}``
+  Environment variable to specify the base directory of the MPI installation.
+``ENV{I_MPI_ROOT}``
+  Environment variable to specify the base directory of the MPI installation.
+
+For controlling the compiler wrapper step, the following variables may be set:
+
+``MPI_<lang>_COMPILER``
+  Search for the specified compiler wrapper and use it.
+``MPI_<lang>_COMPILER_FLAGS``
+  Flags to pass to the MPI compiler wrapper during interrogation. Some compiler wrappers
+  support linking debug or tracing libraries if a specific flag is passed and this variable
+  may be used to obtain them.
+``MPI_COMPILER_FLAGS``
+  Used to initialize ``MPI_<lang>_COMPILER_FLAGS`` if no language specific flag has been given.
+  Empty by default.
+``MPI_EXECUTABLE_SUFFIX``
+  A suffix which is appended to all names that are being looked for. For instance you may set this
+  to ``.mpich`` or ``.openmpi`` to prefer the one or the other on Debian and its derivatives.
+
+In order to control the guessing step, the following variable may be set:
+
+``MPI_GUESS_LIBRARY_NAME``
+  Valid values are ``MSMPI`` and ``MPICH2``. If set, only the given library will be searched for.
+  By default, ``MSMPI`` will be preferred over ``MPICH2`` if both are available.
+  This also sets ``MPI_SKIP_COMPILER_WRAPPER`` to ``true``, which may be overridden.
+
+Each of the search steps may be skipped with the following control variables:
+
+``MPI_ASSUME_NO_BUILTIN_MPI``
+  If true, the module assumes that the compiler itself does not provide an MPI implementation and
+  skips to step 2.
+``MPI_SKIP_COMPILER_WRAPPER``
+  If true, no compiler wrapper will be searched for.
+``MPI_SKIP_GUESSING``
+  If true, the guessing step will be skipped.
+
+Additionally, the following control variable is available to change search behavior:
+
+``MPI_CXX_SKIP_MPICXX``
+  Add some definitions that will disable the MPI-2 C++ bindings.
+  Currently supported are MPICH, Open MPI, Platform MPI and derivatives thereof,
+  for example MVAPICH or Intel MPI.
+
+If the find procedure fails for a variable ``MPI_<lang>_WORKS``, then the settings detected by or passed to
+the module did not work and even a simple MPI test program failed to compile.
+
+If all of these parameters were not sufficient to find the right MPI implementation, a user may
+disable the entire autodetection process by specifying both a list of libraries in ``MPI_<lang>_LIBRARIES``
+and a list of include directories in ``MPI_<lang>_ADDITIONAL_INCLUDE_DIRS``.
+Any other variable may be set in addition to these two. The module will then validate the MPI settings and store the
+settings in the cache.
+
+Cache variables for MPI
+^^^^^^^^^^^^^^^^^^^^^^^
+
+The variable ``MPI_<lang>_INCLUDE_DIRS`` will be assembled from the following variables.
+For C and CXX:
+
+``MPI_<lang>_HEADER_DIR``
+  Location of the ``mpi.h`` header on disk.
+
+For Fortran:
+
+``MPI_Fortran_F77_HEADER_DIR``
+  Location of the Fortran 77 header ``mpif.h``, if it exists.
+``MPI_Fortran_MODULE_DIR``
+  Location of the ``mpi`` or ``mpi_f08`` modules, if available.
+
+For all languages the following variables are additionally considered:
+
+``MPI_<lang>_ADDITIONAL_INCLUDE_DIRS``
+  A :ref:`;-list <CMake Language Lists>` of paths needed in addition to the normal include directories.
+``MPI_<include_name>_INCLUDE_DIR``
+  Path variables for include folders referred to by ``<include_name>``.
+``MPI_<lang>_ADDITIONAL_INCLUDE_VARS``
+  A :ref:`;-list <CMake Language Lists>` of ``<include_name>`` that will be added to the include locations of ``<lang>``.
+
+The variable ``MPI_<lang>_LIBRARIES`` will be assembled from the following variables:
+
+``MPI_<lib_name>_LIBRARY``
+  The location of a library called ``<lib_name>`` for use with MPI.
+``MPI_<lang>_LIB_NAMES``
+  A :ref:`;-list <CMake Language Lists>` of ``<lib_name>`` that will be added to the include locations of ``<lang>``.
+
+Usage of mpiexec
+^^^^^^^^^^^^^^^^
+
+When using ``MPIEXEC_EXECUTABLE`` to execute MPI applications, you should typically
+use all of the ``MPIEXEC_EXECUTABLE`` flags as follows:
+
+::
+
+   ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS}
+     ${MPIEXEC_PREFLAGS} EXECUTABLE ${MPIEXEC_POSTFLAGS} ARGS
+
+where ``EXECUTABLE`` is the MPI program, and ``ARGS`` are the arguments to
+pass to the MPI program.
+
+Advanced variables for using MPI
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The module can perform some advanced feature detections upon explicit request.
+
+**Important notice:** The following checks cannot be performed without *executing* an MPI test program.
+Consider the special considerations for the behavior of :command:`try_run` during cross compilation.
+Moreover, running an MPI program can cause additional issues, like a firewall notification on some systems.
+You should only enable these detections if you absolutely need the information.
+
+If the following variables are set to true, the respective search will be performed:
+
+``MPI_DETERMINE_Fortran_CAPABILITIES``
+  Determine for all available Fortran bindings what the values of ``MPI_SUBARRAYS_SUPPORTED`` and
+  ``MPI_ASYNC_PROTECTS_NONBLOCKING`` are and make their values available as ``MPI_Fortran_<binding>_SUBARRAYS``
+  and ``MPI_Fortran_<binding>_ASYNCPROT``, where ``<binding>`` is one of ``F77_HEADER``, ``F90_MODULE`` and
+  ``F08_MODULE``.
+``MPI_DETERMINE_LIBRARY_VERSION``
+  For each language, find the output of ``MPI_Get_library_version`` and make it available as ``MPI_<lang>_LIBRARY_VERSION_STRING``.
+  This information is usually tied to the runtime component of an MPI implementation and might differ depending on ``<lang>``.
+  Note that the return value is entirely implementation defined. This information might be used to identify
+  the MPI vendor and for example pick the correct one of multiple third party binaries that matches the MPI vendor.
+
+Backward Compatibility
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. deprecated:: 3.10
+
+For backward compatibility with older versions of FindMPI, these
+variables are set:
+
+::
+
+   MPI_COMPILER        MPI_LIBRARY        MPI_EXTRA_LIBRARY
+   MPI_COMPILE_FLAGS   MPI_INCLUDE_PATH   MPI_LINK_FLAGS
+   MPI_LIBRARIES
+
+In new projects, please use the ``MPI_<lang>_XXX`` equivalents.
+Additionally, the following variables are deprecated:
+
+``MPI_<lang>_COMPILE_FLAGS``
+  Use ``MPI_<lang>_COMPILE_OPTIONS`` and ``MPI_<lang>_COMPILE_DEFINITIONS`` instead.
+``MPI_<lang>_INCLUDE_PATH``
+  For consumption use ``MPI_<lang>_INCLUDE_DIRS`` and for specifying folders use ``MPI_<lang>_ADDITIONAL_INCLUDE_DIRS`` instead.
+``MPIEXEC``
+  Use ``MPIEXEC_EXECUTABLE`` instead.
+#]=======================================================================]
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package(PkgConfig QUIET)
+
+# Generic compiler names
+set(_MPI_C_GENERIC_COMPILER_NAMES          mpicc    mpcc      mpicc_r mpcc_r)
+set(_MPI_CXX_GENERIC_COMPILER_NAMES        mpicxx   mpiCC     mpcxx   mpCC    mpic++   mpc++
+                                           mpicxx_r mpiCC_r   mpcxx_r mpCC_r  mpic++_r mpc++_r)
+set(_MPI_Fortran_GENERIC_COMPILER_NAMES    mpif95   mpif95_r  mpf95   mpf95_r
+                                           mpif90   mpif90_r  mpf90   mpf90_r
+                                           mpif77   mpif77_r  mpf77   mpf77_r
+                                           mpifc)
+
+#Fujitsu cross/own compiler names
+set(_MPI_Fujitsu_C_COMPILER_NAMES        mpifccpx mpifcc)
+set(_MPI_Fujitsu_CXX_COMPILER_NAMES      mpiFCCpx mpiFCC)
+set(_MPI_Fujitsu_Fortran_COMPILER_NAMES  mpifrtpx mpifrt)
+
+# GNU compiler names
+set(_MPI_GNU_C_COMPILER_NAMES              mpigcc mpgcc mpigcc_r mpgcc_r)
+set(_MPI_GNU_CXX_COMPILER_NAMES            mpig++ mpg++ mpig++_r mpg++_r mpigxx)
+set(_MPI_GNU_Fortran_COMPILER_NAMES        mpigfortran mpgfortran mpigfortran_r mpgfortran_r
+                                           mpig77 mpig77_r mpg77 mpg77_r)
+
+# Intel MPI compiler names on Windows
+if(WIN32)
+  list(APPEND _MPI_C_GENERIC_COMPILER_NAMES       mpicc.bat)
+  list(APPEND _MPI_CXX_GENERIC_COMPILER_NAMES     mpicxx.bat)
+  list(APPEND _MPI_Fortran_GENERIC_COMPILER_NAMES mpifc.bat)
+
+  # Intel MPI compiler names
+  set(_MPI_Intel_C_COMPILER_NAMES            mpiicc.bat)
+  set(_MPI_Intel_CXX_COMPILER_NAMES          mpiicpc.bat)
+  set(_MPI_Intel_Fortran_COMPILER_NAMES      mpiifort.bat mpif77.bat mpif90.bat)
+
+  # Intel MPI compiler names
+  set(_MPI_IntelLLVM_C_COMPILER_NAMES            mpiicc.bat)
+  set(_MPI_IntelLLVM_CXX_COMPILER_NAMES          mpiicpc.bat)
+  set(_MPI_IntelLLVM_Fortran_COMPILER_NAMES      mpiifort.bat mpif77.bat mpif90.bat)
+
+  # Intel MPI compiler names for MSMPI
+  set(_MPI_MSVC_C_COMPILER_NAMES             mpicl.bat)
+  set(_MPI_MSVC_CXX_COMPILER_NAMES           mpicl.bat)
+else()
+  # Intel compiler names
+  set(_MPI_Intel_C_COMPILER_NAMES            mpiicc)
+  set(_MPI_Intel_CXX_COMPILER_NAMES          mpiicpc  mpiicxx mpiic++)
+  set(_MPI_Intel_Fortran_COMPILER_NAMES      mpiifort mpiif95 mpiif90 mpiif77)
+
+  # Intel compiler names
+  set(_MPI_IntelLLVM_C_COMPILER_NAMES            mpiicc)
+  set(_MPI_IntelLLVM_CXX_COMPILER_NAMES          mpiicpc  mpiicxx mpiic++)
+  set(_MPI_IntelLLVM_Fortran_COMPILER_NAMES      mpiifort mpiif95 mpiif90 mpiif77)
+endif()
+
+# PGI compiler names
+set(_MPI_PGI_C_COMPILER_NAMES              mpipgicc mpipgcc mppgcc)
+set(_MPI_PGI_CXX_COMPILER_NAMES            mpipgic++ mpipgCC mppgCC)
+set(_MPI_PGI_Fortran_COMPILER_NAMES        mpipgifort mpipgf95 mpipgf90 mppgf95 mppgf90 mpipgf77 mppgf77)
+
+# XLC MPI Compiler names
+set(_MPI_XL_C_COMPILER_NAMES               mpxlc      mpxlc_r    mpixlc     mpixlc_r)
+set(_MPI_XL_CXX_COMPILER_NAMES             mpixlcxx   mpixlC     mpixlc++   mpxlcxx   mpxlc++   mpixlc++   mpxlCC
+                                           mpixlcxx_r mpixlC_r   mpixlc++_r mpxlcxx_r mpxlc++_r mpixlc++_r mpxlCC_r)
+set(_MPI_XL_Fortran_COMPILER_NAMES         mpixlf95   mpixlf95_r mpxlf95 mpxlf95_r
+                                           mpixlf90   mpixlf90_r mpxlf90 mpxlf90_r
+                                           mpixlf77   mpixlf77_r mpxlf77 mpxlf77_r
+                                           mpixlf     mpixlf_r   mpxlf   mpxlf_r)
+
+# Cray Compiler names
+set(_MPI_Cray_C_COMPILER_NAMES             cc)
+set(_MPI_Cray_CXX_COMPILER_NAMES           CC)
+set(_MPI_Cray_Fortran_COMPILER_NAMES       ftn)
+
+# Prepend vendor-specific compiler wrappers to the list. If we don't know the compiler,
+# attempt all of them.
+# By attempting vendor-specific compiler names first, we should avoid situations where the compiler wrapper
+# stems from a proprietary MPI and won't know which compiler it's being used for. For instance, Intel MPI
+# controls its settings via the I_MPI_CC environment variables if the generic name is being used.
+# If we know which compiler we're working with, we can use the most specialized wrapper there is in order to
+# pick up the right settings for it.
+foreach (LANG IN ITEMS C CXX Fortran)
+  set(_MPI_${LANG}_COMPILER_NAMES "")
+  foreach (id IN ITEMS Fujitsu FujitsuClang GNU Intel IntelLLVM MSVC PGI XL)
+    if (NOT CMAKE_${LANG}_COMPILER_ID OR CMAKE_${LANG}_COMPILER_ID STREQUAL id)
+      foreach(_COMPILER_NAME IN LISTS _MPI_${id}_${LANG}_COMPILER_NAMES)
+        list(APPEND _MPI_${LANG}_COMPILER_NAMES ${_COMPILER_NAME}${MPI_EXECUTABLE_SUFFIX})
+      endforeach()
+    endif()
+    unset(_MPI_${id}_${LANG}_COMPILER_NAMES)
+  endforeach()
+  foreach(_COMPILER_NAME IN LISTS _MPI_${LANG}_GENERIC_COMPILER_NAMES)
+    list(APPEND _MPI_${LANG}_COMPILER_NAMES ${_COMPILER_NAME}${MPI_EXECUTABLE_SUFFIX})
+  endforeach()
+  unset(_MPI_${LANG}_GENERIC_COMPILER_NAMES)
+endforeach()
+
+# Names to try for mpiexec
+# Only mpiexec commands are guaranteed to behave as described in the standard,
+# mpirun commands are not covered by the standard in any way whatsoever.
+# lamexec is the executable for LAM/MPI, srun is for SLURM or Open MPI with SLURM support.
+# srun -n X <executable> is however a valid command, so it behaves 'like' mpiexec.
+set(_MPIEXEC_NAMES_BASE                   mpiexec mpiexec.hydra mpiexec.mpd mpirun lamexec srun)
+
+unset(_MPIEXEC_NAMES)
+foreach(_MPIEXEC_NAME IN LISTS _MPIEXEC_NAMES_BASE)
+  list(APPEND _MPIEXEC_NAMES "${_MPIEXEC_NAME}${MPI_EXECUTABLE_SUFFIX}")
+endforeach()
+unset(_MPIEXEC_NAMES_BASE)
+
+function (_MPI_check_compiler LANG QUERY_FLAG OUTPUT_VARIABLE RESULT_VARIABLE)
+  if(DEFINED MPI_${LANG}_COMPILER_FLAGS)
+    separate_arguments(_MPI_COMPILER_WRAPPER_OPTIONS NATIVE_COMMAND "${MPI_${LANG}_COMPILER_FLAGS}")
+  else()
+    separate_arguments(_MPI_COMPILER_WRAPPER_OPTIONS NATIVE_COMMAND "${MPI_COMPILER_FLAGS}")
+  endif()
+  execute_process(
+    COMMAND ${MPI_${LANG}_COMPILER} ${_MPI_COMPILER_WRAPPER_OPTIONS} ${QUERY_FLAG}
+    OUTPUT_VARIABLE  WRAPPER_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE
+    ERROR_VARIABLE   WRAPPER_OUTPUT ERROR_STRIP_TRAILING_WHITESPACE
+    RESULT_VARIABLE  WRAPPER_RETURN)
+  # Some compiler wrappers will yield spurious zero return values, for example
+  # Intel MPI tolerates unknown arguments and if the MPI wrappers loads a shared
+  # library that has invalid or missing version information there would be warning
+  # messages emitted by ld.so in the compiler output. In either case, we'll treat
+  # the output as invalid.
+  if("${WRAPPER_OUTPUT}" MATCHES "undefined reference|unrecognized|need to set|no version information available|command not found")
+    set(WRAPPER_RETURN 255)
+  endif()
+  # Ensure that no error output might be passed upwards.
+  if(NOT WRAPPER_RETURN EQUAL 0)
+    unset(WRAPPER_OUTPUT)
+  else()
+    # Strip leading whitespace
+    string(REGEX REPLACE "^ +" "" WRAPPER_OUTPUT "${WRAPPER_OUTPUT}")
+  endif()
+  set(${OUTPUT_VARIABLE} "${WRAPPER_OUTPUT}" PARENT_SCOPE)
+  set(${RESULT_VARIABLE} "${WRAPPER_RETURN}" PARENT_SCOPE)
+endfunction()
+
+macro(_MPI_env_set_ifnot VAR VALUE)
+  if(NOT DEFINED ENV{${VAR}})
+    set(_MPI_${VAR}_WAS_SET FALSE)
+    set(ENV{${VAR}} ${${VALUE}})
+  else()
+    set(_MPI_${VAR}_WAS_SET TRUE)
+  endif()
+endmacro()
+
+macro(_MPI_env_unset_ifnot VAR)
+  if(NOT _MPI_${VAR}_WAS_SET)
+    unset(ENV{${VAR}})
+  endif()
+endmacro()
+
+function (_MPI_interrogate_compiler LANG)
+  unset(MPI_COMPILE_CMDLINE)
+  unset(MPI_LINK_CMDLINE)
+
+  unset(MPI_COMPILE_OPTIONS_WORK)
+  unset(MPI_COMPILE_DEFINITIONS_WORK)
+  unset(MPI_INCLUDE_DIRS_WORK)
+  unset(MPI_LINK_FLAGS_WORK)
+  unset(MPI_LIB_NAMES_WORK)
+  unset(MPI_LIB_FULLPATHS_WORK)
+
+  # Define the MPICH and Intel MPI compiler variables to the compilers set in CMake.
+  # It's possible to have a per-compiler configuration in these MPI implementations and
+  # a particular MPICH derivate might check compiler interoperability.
+  # Intel MPI in particular does this with I_MPI_CHECK_COMPILER.
+  file(TO_NATIVE_PATH "${CMAKE_${LANG}_COMPILER}" _MPI_UNDERLAYING_COMPILER)
+  # On Windows, the Intel MPI batch scripts can only work with filnames - Full paths will break them.
+  # Due to the lack of other MPICH-based wrappers for Visual C++, we may treat this as default.
+  if(MSVC)
+    get_filename_component(_MPI_UNDERLAYING_COMPILER "${_MPI_UNDERLAYING_COMPILER}" NAME)
+  endif()
+  if("${LANG}" STREQUAL "C")
+    _MPI_env_set_ifnot(I_MPI_CC _MPI_UNDERLAYING_COMPILER)
+    _MPI_env_set_ifnot(MPICH_CC _MPI_UNDERLAYING_COMPILER)
+  elseif("${LANG}" STREQUAL "CXX")
+    _MPI_env_set_ifnot(I_MPI_CXX _MPI_UNDERLAYING_COMPILER)
+    _MPI_env_set_ifnot(MPICH_CXX _MPI_UNDERLAYING_COMPILER)
+  elseif("${LANG}" STREQUAL "Fortran")
+    _MPI_env_set_ifnot(I_MPI_FC _MPI_UNDERLAYING_COMPILER)
+    _MPI_env_set_ifnot(MPICH_FC _MPI_UNDERLAYING_COMPILER)
+    _MPI_env_set_ifnot(I_MPI_F77 _MPI_UNDERLAYING_COMPILER)
+    _MPI_env_set_ifnot(MPICH_F77 _MPI_UNDERLAYING_COMPILER)
+    _MPI_env_set_ifnot(I_MPI_F90 _MPI_UNDERLAYING_COMPILER)
+    _MPI_env_set_ifnot(MPICH_F90 _MPI_UNDERLAYING_COMPILER)
+  endif()
+
+  # Set these two variables for Intel MPI:
+  #   - I_MPI_DEBUG_INFO_STRIP: It adds 'objcopy' lines to the compiler output. We support stripping them
+  #     (see below), but if we can avoid them in the first place, we should.
+  #   - I_MPI_FORT_BIND: By default Intel MPI makes the C/C++ compiler wrappers link Fortran bindings.
+  #     This is so that mixed-language code doesn't require additional libraries when linking with mpicc.
+  #     For our purposes, this makes little sense, since correct MPI usage from CMake already circumvenes this.
+  set(_MPI_ENV_VALUE "disable")
+  _MPI_env_set_ifnot(I_MPI_DEBUG_INFO_STRIP _MPI_ENV_VALUE)
+  _MPI_env_set_ifnot(I_MPI_FORT_BIND _MPI_ENV_VALUE)
+
+  # Check whether the -showme:compile option works. This indicates that we have either Open MPI
+  # or a newer version of LAM/MPI, and implies that -showme:link will also work.
+  # Open MPI also supports -show, but separates linker and compiler information
+  _MPI_check_compiler(${LANG} "-showme:compile" MPI_COMPILE_CMDLINE MPI_COMPILER_RETURN)
+  if (MPI_COMPILER_RETURN EQUAL 0)
+    _MPI_check_compiler(${LANG} "-showme:link" MPI_LINK_CMDLINE MPI_COMPILER_RETURN)
+
+    if (NOT MPI_COMPILER_RETURN EQUAL 0)
+      unset(MPI_COMPILE_CMDLINE)
+    endif()
+  endif()
+
+  # MPICH and MVAPICH offer -compile-info and -link-info.
+  # For modern versions, both do the same as -show. However, for old versions, they do differ
+  # when called for mpicxx and mpif90 and it's necessary to use them over -show in order to find the
+  # removed MPI C++ bindings.
+  if (NOT MPI_COMPILER_RETURN EQUAL 0)
+    _MPI_check_compiler(${LANG} "-compile-info" MPI_COMPILE_CMDLINE MPI_COMPILER_RETURN)
+
+    if (MPI_COMPILER_RETURN EQUAL 0)
+      _MPI_check_compiler(${LANG} "-link-info" MPI_LINK_CMDLINE MPI_COMPILER_RETURN)
+
+      if (NOT MPI_COMPILER_RETURN EQUAL 0)
+        unset(MPI_COMPILE_CMDLINE)
+      endif()
+    endif()
+  endif()
+
+  # Cray compiler wrappers come usually without a separate mpicc/c++/ftn, but offer
+  # --cray-print-opts=...
+  if (NOT MPI_COMPILER_RETURN EQUAL 0)
+    _MPI_check_compiler(${LANG} "--cray-print-opts=cflags"
+                        MPI_COMPILE_CMDLINE MPI_COMPILER_RETURN)
+
+    if (MPI_COMPILER_RETURN EQUAL 0)
+      # Pass --no-as-needed so the mpi library is always linked. Otherwise, the
+      # Cray compiler wrapper puts an --as-needed flag around the mpi library,
+      # and it is not linked unless code directly refers to it.
+      _MPI_check_compiler(${LANG} "--no-as-needed;--cray-print-opts=libs"
+                          MPI_LINK_CMDLINE MPI_COMPILER_RETURN)
+
+      if (NOT MPI_COMPILER_RETURN EQUAL 0)
+        unset(MPI_COMPILE_CMDLINE)
+        unset(MPI_LINK_CMDLINE)
+      endif()
+    endif()
+  endif()
+
+  # MPICH, MVAPICH2 and Intel MPI just use "-show". Open MPI also offers this, but the
+  # -showme commands are more specialized.
+  if (NOT MPI_COMPILER_RETURN EQUAL 0)
+    _MPI_check_compiler(${LANG} "-show" MPI_COMPILE_CMDLINE MPI_COMPILER_RETURN)
+  endif()
+
+  # Older versions of LAM/MPI have "-showme". Open MPI also supports this.
+  # Unknown to MPICH, MVAPICH and Intel MPI.
+  if (NOT MPI_COMPILER_RETURN EQUAL 0)
+    _MPI_check_compiler(${LANG} "-showme" MPI_COMPILE_CMDLINE MPI_COMPILER_RETURN)
+  endif()
+
+  if (MPI_COMPILER_RETURN EQUAL 0 AND DEFINED MPI_COMPILE_CMDLINE)
+    # Intel MPI can be run with -compchk or I_MPI_CHECK_COMPILER set to 1.
+    # In this case, -show will be prepended with a line to the compiler checker. This is a script that performs
+    # compatibility checks and returns a non-zero exit code together with an error if something fails.
+    # It has to be called as "compchk.sh <arch> <compiler>". Here, <arch> is one out of 32 (i686), 64 (ia64) or 32e (x86_64).
+    # The compiler is identified by filename, and can be either the MPI compiler or the underlying compiler.
+    # NOTE: It is vital to run this script while the environment variables are set up, otherwise it can check the wrong compiler.
+    if("${MPI_COMPILE_CMDLINE}" MATCHES "^([^\" ]+/compchk.sh|\"[^\"]+/compchk.sh\") +([^ ]+)")
+      # Now CMAKE_MATCH_1 contains the path to the compchk.sh file and CMAKE_MATCH_2 the architecture flag.
+      unset(COMPILER_CHECKER_OUTPUT)
+      execute_process(
+      COMMAND ${CMAKE_MATCH_1} ${CMAKE_MATCH_2} ${MPI_${LANG}_COMPILER}
+      OUTPUT_VARIABLE  COMPILER_CHECKER_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE
+      ERROR_VARIABLE   COMPILER_CHECKER_OUTPUT ERROR_STRIP_TRAILING_WHITESPACE
+      RESULT_VARIABLE  MPI_COMPILER_RETURN)
+      # If it returned a non-zero value, the check below will fail and cause the interrogation to be aborted.
+      if(NOT MPI_COMPILER_RETURN EQUAL 0)
+        if(NOT MPI_FIND_QUIETLY)
+          message(STATUS "Intel MPI compiler check failed: ${COMPILER_CHECKER_OUTPUT}")
+        endif()
+      else()
+        # Since the check passed, we can remove the compchk.sh script.
+        string(REGEX REPLACE "^([^\" ]+|\"[^\"]+\")/compchk.sh.*\n" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}")
+      endif()
+    endif()
+  endif()
+
+  # Revert changes to the environment made previously
+  if("${LANG}" STREQUAL "C")
+    _MPI_env_unset_ifnot(I_MPI_CC)
+    _MPI_env_unset_ifnot(MPICH_CC)
+  elseif("${LANG}" STREQUAL "CXX")
+    _MPI_env_unset_ifnot(I_MPI_CXX)
+    _MPI_env_unset_ifnot(MPICH_CXX)
+  elseif("${LANG}" STREQUAL "Fortran")
+    _MPI_env_unset_ifnot(I_MPI_FC)
+    _MPI_env_unset_ifnot(MPICH_FC)
+    _MPI_env_unset_ifnot(I_MPI_F77)
+    _MPI_env_unset_ifnot(MPICH_F77)
+    _MPI_env_unset_ifnot(I_MPI_F90)
+    _MPI_env_unset_ifnot(MPICH_F90)
+  endif()
+
+  _MPI_env_unset_ifnot(I_MPI_DEBUG_INFO_STRIP)
+  _MPI_env_unset_ifnot(I_MPI_FORT_BIND)
+
+  if (NOT (MPI_COMPILER_RETURN EQUAL 0) OR NOT (DEFINED MPI_COMPILE_CMDLINE))
+    # Cannot interrogate this compiler, so exit.
+    set(MPI_${LANG}_WRAPPER_FOUND FALSE PARENT_SCOPE)
+    return()
+  endif()
+  unset(MPI_COMPILER_RETURN)
+
+  # We have our command lines, but we might need to copy MPI_COMPILE_CMDLINE
+  # into MPI_LINK_CMDLINE, if we didn't find the link line.
+  if (NOT DEFINED MPI_LINK_CMDLINE)
+    set(MPI_LINK_CMDLINE "${MPI_COMPILE_CMDLINE}")
+  endif()
+
+  # Visual Studio parsers permit each flag prefixed by either / or -.
+  # We'll normalize this to the - syntax we use for CMake purposes anyways.
+  if(MSVC)
+    foreach(_MPI_VARIABLE IN ITEMS COMPILE LINK)
+      # The Intel MPI wrappers on Windows prefix their output with some copyright boilerplate.
+      # To prevent possible problems, we discard this text before proceeding with any further matching.
+      string(REGEX REPLACE "^[^ ]+ for the Intel\\(R\\) MPI Library [^\n]+ for Windows\\*\nCopyright\\(C\\) [^\n]+, Intel Corporation\\. All rights reserved\\.\n\n" ""
+        MPI_${_MPI_VARIABLE}_CMDLINE "${MPI_${_MPI_VARIABLE}_CMDLINE}")
+      string(REGEX REPLACE "(^| )/" "\\1-" MPI_${_MPI_VARIABLE}_CMDLINE "${MPI_${_MPI_VARIABLE}_CMDLINE}")
+      string(REPLACE "-libpath:" "-LIBPATH:" MPI_${_MPI_VARIABLE}_CMDLINE "${MPI_${_MPI_VARIABLE}_CMDLINE}")
+    endforeach()
+  endif()
+
+  # For MSVC and cl-compatible compilers, the keyword /link indicates a point after which
+  # everything following is passed to the linker. In this case, we drop all prior information
+  # from the link line and treat any unknown extra flags as linker flags.
+  set(_MPI_FILTERED_LINK_INFORMATION FALSE)
+  if(MSVC)
+    if(MPI_LINK_CMDLINE MATCHES " -(link|LINK) ")
+      string(REGEX REPLACE ".+-(link|LINK) +" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}")
+      set(_MPI_FILTERED_LINK_INFORMATION TRUE)
+    endif()
+    string(REGEX REPLACE " +-(link|LINK) .+" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}")
+  endif()
+
+  if(UNIX)
+    # At this point, we obtained some output from a compiler wrapper that works.
+    # We'll now try to parse it into variables with meaning to us.
+    if("${LANG}" STREQUAL "Fortran")
+      # If MPICH (and derivates) didn't recognize the Fortran compiler include flag during configuration,
+      # they'll return a set of three commands, consisting out of a symlink command for mpif.h,
+      # the actual compiler command and deletion of the created symlink.
+      # Especially with M(VA)PICH-1, this appears to happen erroneously, and therefore we should translate
+      # this output into an additional include directory and then drop it from the output.
+      if("${MPI_COMPILE_CMDLINE}" MATCHES "^ln -s ([^\" ]+|\"[^\"]+\") mpif.h")
+        get_filename_component(MPI_INCLUDE_DIRS_WORK "${CMAKE_MATCH_1}" DIRECTORY)
+        string(REGEX REPLACE "^ln -s ([^\" ]+|\"[^\"]+\") mpif.h\n" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}")
+        string(REGEX REPLACE "^ln -s ([^\" ]+|\"[^\"]+\") mpif.h\n" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}")
+        string(REGEX REPLACE "\nrm -f mpif.h$" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}")
+        string(REGEX REPLACE "\nrm -f mpif.h$" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}")
+      endif()
+    endif()
+
+    # If Intel MPI was configured for static linkage with -static_mpi, the wrapper will by default strip
+    # debug information from resulting binaries (see I_MPI_DEBUG_INFO_STRIP).
+    # Since we cannot process this information into CMake logic, we need to discard the resulting objcopy
+    # commands from the output.
+    string(REGEX REPLACE "(^|\n)objcopy[^\n]+(\n|$)" "" MPI_COMPILE_CMDLINE "${MPI_COMPILE_CMDLINE}")
+    string(REGEX REPLACE "(^|\n)objcopy[^\n]+(\n|$)" "" MPI_LINK_CMDLINE "${MPI_LINK_CMDLINE}")
+  endif()
+
+  # For Visual C++, extracting compiler options in a generic fashion isn't easy. However, no MPI implementation
+  # on Windows seems to require any specific ones, either.
+  if(NOT MSVC)
+    # Extract compile options from the compile command line.
+    string(REGEX MATCHALL "(^| )-f([^\" ]+|\"[^\"]+\")" MPI_ALL_COMPILE_OPTIONS "${MPI_COMPILE_CMDLINE}")
+
+    foreach(_MPI_COMPILE_OPTION IN LISTS MPI_ALL_COMPILE_OPTIONS)
+      string(REGEX REPLACE "^ " "" _MPI_COMPILE_OPTION "${_MPI_COMPILE_OPTION}")
+
+      # Ignore -fstack-protector directives: These occur on MPICH and MVAPICH when the libraries
+      # themselves were built with this flag. However, this flag is unrelated to using MPI, and
+      # we won't match the accompanying --param-ssp-size and -Wp,-D_FORTIFY_SOURCE flags and therefore
+      # produce inconsistent results with the regularly flags.
+      # Similarly, aliasing flags do not belong into our flag array.
+      # Also strip out `-framework` flags.
+      if(NOT "${_MPI_COMPILE_OPTION}" MATCHES "^-f((no-|)(stack-protector|strict-aliasing)|PI[CE]|pi[ce]|ramework)")
+        list(APPEND MPI_COMPILE_OPTIONS_WORK "${_MPI_COMPILE_OPTION}")
+      endif()
+    endforeach()
+  endif()
+
+  # For GNU-style compilers, it's possible to prefix includes and definitions with certain flags to pass them
+  # only to the preprocessor. For CMake purposes, we need to treat, but ignore such scopings.
+  # Note that we do not support spaces between the arguments, i.e. -Wp,-I -Wp,/opt/mympi will not be parsed
+  # correctly. This form does not seem to occur in any common MPI implementation, however.
+  if(NOT MSVC)
+    set(_MPI_PREPROCESSOR_FLAG_REGEX "(-Wp,|-Xpreprocessor )?")
+  else()
+    set(_MPI_PREPROCESSOR_FLAG_REGEX "")
+  endif()
+
+  # Same deal as above, for the definitions.
+  string(REGEX MATCHALL "(^| )${_MPI_PREPROCESSOR_FLAG_REGEX}-D *([^\" ]+|\"[^\"]+\")" MPI_ALL_COMPILE_DEFINITIONS "${MPI_COMPILE_CMDLINE}")
+
+  foreach(_MPI_COMPILE_DEFINITION IN LISTS MPI_ALL_COMPILE_DEFINITIONS)
+    string(REGEX REPLACE "^ ?${_MPI_PREPROCESSOR_FLAG_REGEX}-D *" "" _MPI_COMPILE_DEFINITION "${_MPI_COMPILE_DEFINITION}")
+    string(REPLACE "\"" "" _MPI_COMPILE_DEFINITION "${_MPI_COMPILE_DEFINITION}")
+    if(NOT "${_MPI_COMPILE_DEFINITION}" MATCHES "^_FORTIFY_SOURCE.*")
+      list(APPEND MPI_COMPILE_DEFINITIONS_WORK "${_MPI_COMPILE_DEFINITION}")
+    endif()
+  endforeach()
+
+  # Extract include paths from compile command line
+  string(REGEX MATCHALL "(^| )${_MPI_PREPROCESSOR_FLAG_REGEX}${CMAKE_INCLUDE_FLAG_${LANG}} *([^\" ]+|\"[^\"]+\")"
+    MPI_ALL_INCLUDE_PATHS "${MPI_COMPILE_CMDLINE}")
+
+  # If extracting failed to work, we'll try using -showme:incdirs.
+  # Unlike before, we do this without the environment variables set up, but since only MPICH derivates are affected by any of them, and
+  # -showme:... is only supported by Open MPI and LAM/MPI, this isn't a concern.
+  if (NOT MPI_ALL_INCLUDE_PATHS)
+    _MPI_check_compiler(${LANG} "-showme:incdirs" MPI_INCDIRS_CMDLINE MPI_INCDIRS_COMPILER_RETURN)
+    if(MPI_INCDIRS_COMPILER_RETURN)
+      separate_arguments(MPI_ALL_INCLUDE_PATHS NATIVE_COMMAND "${MPI_INCDIRS_CMDLINE}")
+    endif()
+  endif()
+
+  foreach(_MPI_INCLUDE_PATH IN LISTS MPI_ALL_INCLUDE_PATHS)
+    string(REGEX REPLACE "^ ?${_MPI_PREPROCESSOR_FLAG_REGEX}${CMAKE_INCLUDE_FLAG_${LANG}} *" "" _MPI_INCLUDE_PATH "${_MPI_INCLUDE_PATH}")
+    string(REPLACE "\"" "" _MPI_INCLUDE_PATH "${_MPI_INCLUDE_PATH}")
+    string(REPLACE "'" "" _MPI_INCLUDE_PATH "${_MPI_INCLUDE_PATH}")
+    get_filename_component(_MPI_INCLUDE_PATH "${_MPI_INCLUDE_PATH}" REALPATH)
+    list(APPEND MPI_INCLUDE_DIRS_WORK "${_MPI_INCLUDE_PATH}")
+  endforeach()
+
+  # The next step are linker flags and library directories. Here, we first take the flags given in raw -L or -LIBPATH: syntax.
+  string(REGEX MATCHALL "(^| )${CMAKE_LIBRARY_PATH_FLAG} *([^\" ]+|\"[^\"]+\")" MPI_DIRECT_LINK_PATHS "${MPI_LINK_CMDLINE}")
+  foreach(_MPI_LPATH IN LISTS MPI_DIRECT_LINK_PATHS)
+    string(REGEX REPLACE "(^| )${CMAKE_LIBRARY_PATH_FLAG} *" "" _MPI_LPATH "${_MPI_LPATH}")
+    list(APPEND MPI_ALL_LINK_PATHS "${_MPI_LPATH}")
+  endforeach()
+
+  # If the link commandline hasn't been filtered (e.g. when using MSVC and /link), we need to extract the relevant parts first.
+  if(NOT _MPI_FILTERED_LINK_INFORMATION)
+    string(REGEX MATCHALL "(^| )(-Wl,|-Xlinker +)([^\" ]+|\"[^\"]+\")" MPI_LINK_FLAGS "${MPI_LINK_CMDLINE}")
+
+    # In this case, we could also find some indirectly given linker paths, e.g. prefixed by -Xlinker or -Wl,
+    # Since syntaxes like -Wl,-L -Wl,/my/path/to/lib are also valid, we parse these paths by first removing -Wl, and -Xlinker
+    # from the list of filtered flags and then parse the remainder of the output.
+    string(REGEX REPLACE "(-Wl,|-Xlinker +)" "" MPI_LINK_FLAGS_RAW "${MPI_LINK_FLAGS}")
+
+    # Now we can parse the leftover output. Note that spaces can now be handled since the above example would reduce to
+    # -L /my/path/to/lib and can be extracted correctly.
+    string(REGEX MATCHALL "^(${CMAKE_LIBRARY_PATH_FLAG},? *|--library-path=)([^\" ]+|\"[^\"]+\")"
+      MPI_INDIRECT_LINK_PATHS "${MPI_LINK_FLAGS_RAW}")
+
+    foreach(_MPI_LPATH IN LISTS MPI_INDIRECT_LINK_PATHS)
+      string(REGEX REPLACE "^(${CMAKE_LIBRARY_PATH_FLAG},? *|--library-path=)" "" _MPI_LPATH "${_MPI_LPATH}")
+      list(APPEND MPI_ALL_LINK_PATHS "${_MPI_LPATH}")
+    endforeach()
+
+    # We need to remove the flags we extracted from the linker flag list now.
+    string(REGEX REPLACE "(^| )(-Wl,|-Xlinker +)(${CMAKE_LIBRARY_PATH_FLAG},? *(-Wl,|-Xlinker +)?|--library-path=)([^\" ]+|\"[^\"]+\")" ""
+      MPI_LINK_CMDLINE_FILTERED "${MPI_LINK_CMDLINE}")
+
+    # Some MPI implementations pass on options they themselves were built with. Since -z,noexecstack is a common
+    # hardening, we should strip it. In general, the -z options should be undesirable.
+    string(REGEX REPLACE "(^| )-Wl,-z(,[^ ]+| +-Wl,[^ ]+)" "" MPI_LINK_CMDLINE_FILTERED "${MPI_LINK_CMDLINE_FILTERED}")
+    string(REGEX REPLACE "(^| )-Xlinker +-z +-Xlinker +[^ ]+" "" MPI_LINK_CMDLINE_FILTERED "${MPI_LINK_CMDLINE_FILTERED}")
+
+    # We only consider options of the form -Wl or -Xlinker:
+    string(REGEX MATCHALL "(^| )(-Wl,|-Xlinker +)([^\" ]+|\"[^\"]+\")" MPI_ALL_LINK_FLAGS "${MPI_LINK_CMDLINE_FILTERED}")
+
+    # As a next step, we assemble the linker flags extracted in a preliminary flags string
+    foreach(_MPI_LINK_FLAG IN LISTS MPI_ALL_LINK_FLAGS)
+      string(STRIP "${_MPI_LINK_FLAG}" _MPI_LINK_FLAG)
+      if (MPI_LINK_FLAGS_WORK)
+        string(APPEND MPI_LINK_FLAGS_WORK " ${_MPI_LINK_FLAG}")
+      else()
+        set(MPI_LINK_FLAGS_WORK "${_MPI_LINK_FLAG}")
+      endif()
+    endforeach()
+  else()
+    # In the filtered case, we obtain the link time flags by just stripping the library paths.
+    string(REGEX REPLACE "(^| )${CMAKE_LIBRARY_PATH_FLAG} *([^\" ]+|\"[^\"]+\")" "" MPI_LINK_CMDLINE_FILTERED "${MPI_LINK_CMDLINE}")
+  endif()
+
+  # If we failed to extract any linker paths, we'll try using the -showme:libdirs option with the MPI compiler.
+  # This will return a list of folders, not a set of flags!
+  if (NOT MPI_ALL_LINK_PATHS)
+    _MPI_check_compiler(${LANG} "-showme:libdirs" MPI_LIBDIRS_CMDLINE MPI_LIBDIRS_COMPILER_RETURN)
+    if(MPI_LIBDIRS_COMPILER_RETURN)
+      separate_arguments(MPI_ALL_LINK_PATHS NATIVE_COMMAND "${MPI_LIBDIRS_CMDLINE}")
+    endif()
+  endif()
+
+  # We need to remove potential quotes and convert the paths to CMake syntax while resolving them, too.
+  foreach(_MPI_LPATH IN LISTS MPI_ALL_LINK_PATHS)
+    string(REPLACE "\"" "" _MPI_LPATH "${_MPI_LPATH}")
+    get_filename_component(_MPI_LPATH "${_MPI_LPATH}" REALPATH)
+    list(APPEND MPI_LINK_DIRECTORIES_WORK "${_MPI_LPATH}")
+  endforeach()
+
+  # Extract the set of libraries to link against from the link command line
+  # This only makes sense if CMAKE_LINK_LIBRARY_FLAG is defined, i.e. a -lxxxx syntax is supported by the compiler.
+  if(CMAKE_LINK_LIBRARY_FLAG)
+    string(REGEX MATCHALL "(^| )${CMAKE_LINK_LIBRARY_FLAG}([^\" ]+|\"[^\"]+\")"
+      MPI_LIBNAMES "${MPI_LINK_CMDLINE}")
+
+    foreach(_MPI_LIB_NAME IN LISTS MPI_LIBNAMES)
+      string(REGEX REPLACE "^ ?${CMAKE_LINK_LIBRARY_FLAG}" "" _MPI_LIB_NAME "${_MPI_LIB_NAME}")
+      string(REPLACE "\"" "" _MPI_LIB_NAME "${_MPI_LIB_NAME}")
+      list(APPEND MPI_LIB_NAMES_WORK "${_MPI_LIB_NAME}")
+    endforeach()
+  endif()
+
+  # Treat linker objects given by full path, for example static libraries, import libraries
+  # or shared libraries if there aren't any import libraries in use on the system.
+  # Note that we do not consider CMAKE_<TYPE>_LIBRARY_PREFIX intentionally here: The linker will for a given file
+  # decide how to link it based on file type, not based on a prefix like 'lib'.
+  set(_MPI_LIB_SUFFIX_REGEX "${CMAKE_STATIC_LIBRARY_SUFFIX}")
+  if(DEFINED CMAKE_IMPORT_LIBRARY_SUFFIX)
+    if(NOT ("${CMAKE_IMPORT_LIBRARY_SUFFIX}" STREQUAL "${CMAKE_STATIC_LIBRARY_SUFFIX}"))
+      string(APPEND _MPI_SUFFIX_REGEX "|${CMAKE_IMPORT_LIBRARY_SUFFIX}")
+    endif()
+  else()
+    string(APPEND _MPI_LIB_SUFFIX_REGEX "|${CMAKE_SHARED_LIBRARY_SUFFIX}")
+  endif()
+  set(_MPI_LIB_NAME_REGEX "(([^\" ]+(${_MPI_LIB_SUFFIX_REGEX}))|(\"[^\"]+(${_MPI_LIB_SUFFIX_REGEX})\"))( +|$)")
+  string(REPLACE "." "\\." _MPI_LIB_NAME_REGEX "${_MPI_LIB_NAME_REGEX}")
+
+  string(REGEX MATCHALL "${_MPI_LIB_NAME_REGEX}" MPI_LIBNAMES "${MPI_LINK_CMDLINE}")
+  foreach(_MPI_LIB_NAME IN LISTS MPI_LIBNAMES)
+    string(REGEX REPLACE "^ +\"?|\"? +$" "" _MPI_LIB_NAME "${_MPI_LIB_NAME}")
+    get_filename_component(_MPI_LIB_PATH "${_MPI_LIB_NAME}" DIRECTORY)
+    if(NOT "${_MPI_LIB_PATH}" STREQUAL "")
+      list(APPEND MPI_LIB_FULLPATHS_WORK "${_MPI_LIB_NAME}")
+    else()
+      list(APPEND MPI_LIB_NAMES_WORK "${_MPI_LIB_NAME}")
+    endif()
+  endforeach()
+
+  # Save the explicitly given link directories
+  set(MPI_LINK_DIRECTORIES_LEFTOVER "${MPI_LINK_DIRECTORIES_WORK}")
+
+  # An MPI compiler wrapper could have its MPI libraries in the implicitly
+  # linked directories of the compiler itself.
+  if(DEFINED CMAKE_${LANG}_IMPLICIT_LINK_DIRECTORIES)
+    list(APPEND MPI_LINK_DIRECTORIES_WORK "${CMAKE_${LANG}_IMPLICIT_LINK_DIRECTORIES}")
+  endif()
+
+  # Determine full path names for all of the libraries that one needs
+  # to link against in an MPI program
+  unset(MPI_PLAIN_LIB_NAMES_WORK)
+  foreach(_MPI_LIB_NAME IN LISTS MPI_LIB_NAMES_WORK)
+    get_filename_component(_MPI_PLAIN_LIB_NAME "${_MPI_LIB_NAME}" NAME_WE)
+    list(APPEND MPI_PLAIN_LIB_NAMES_WORK "${_MPI_PLAIN_LIB_NAME}")
+    find_library(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY
+      NAMES "${_MPI_LIB_NAME}" "lib${_MPI_LIB_NAME}"
+      HINTS ${MPI_LINK_DIRECTORIES_WORK}
+      DOC "Location of the ${_MPI_PLAIN_LIB_NAME} library for MPI"
+    )
+    mark_as_advanced(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY)
+    # Remove the directory from the remainder list.
+    if(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY)
+      get_filename_component(_MPI_TAKEN_DIRECTORY "${MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY}" DIRECTORY)
+      list(REMOVE_ITEM MPI_LINK_DIRECTORIES_LEFTOVER "${_MPI_TAKEN_DIRECTORY}")
+    endif()
+  endforeach()
+
+  # Add the link directories given explicitly that we haven't used back as linker directories.
+  if(NOT WIN32)
+    foreach(_MPI_LINK_DIRECTORY IN LISTS MPI_LINK_DIRECTORIES_LEFTOVER)
+      file(TO_NATIVE_PATH "${_MPI_LINK_DIRECTORY}" _MPI_LINK_DIRECTORY_ACTUAL)
+      string(FIND "${_MPI_LINK_DIRECTORY_ACTUAL}" " " _MPI_LINK_DIRECTORY_CONTAINS_SPACE)
+      if(NOT _MPI_LINK_DIRECTORY_CONTAINS_SPACE EQUAL -1)
+        set(_MPI_LINK_DIRECTORY_ACTUAL "\"${_MPI_LINK_DIRECTORY_ACTUAL}\"")
+      endif()
+      if(MPI_LINK_FLAGS_WORK)
+        string(APPEND MPI_LINK_FLAGS_WORK " ${CMAKE_LIBRARY_PATH_FLAG}${_MPI_LINK_DIRECTORY_ACTUAL}")
+      else()
+        set(MPI_LINK_FLAGS_WORK "${CMAKE_LIBRARY_PATH_FLAG}${_MPI_LINK_DIRECTORY_ACTUAL}")
+      endif()
+    endforeach()
+  endif()
+
+  # Deal with the libraries given with full path next
+  unset(MPI_DIRECT_LIB_NAMES_WORK)
+  foreach(_MPI_LIB_FULLPATH IN LISTS MPI_LIB_FULLPATHS_WORK)
+    get_filename_component(_MPI_PLAIN_LIB_NAME "${_MPI_LIB_FULLPATH}" NAME_WE)
+    list(APPEND MPI_DIRECT_LIB_NAMES_WORK "${_MPI_PLAIN_LIB_NAME}")
+    set(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY "${_MPI_LIB_FULLPATH}" CACHE FILEPATH "Location of the ${_MPI_PLAIN_LIB_NAME} library for MPI")
+    mark_as_advanced(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY)
+  endforeach()
+  # Directly linked objects should be linked first in case some generic linker flags are needed for them.
+  if(MPI_DIRECT_LIB_NAMES_WORK)
+    set(MPI_PLAIN_LIB_NAMES_WORK "${MPI_DIRECT_LIB_NAMES_WORK};${MPI_PLAIN_LIB_NAMES_WORK}")
+  endif()
+
+  # MPI might require pthread to work. The above mechanism wouldn't detect it, but we need to
+  # link it in that case. -lpthread is covered by the normal library treatment on the other hand.
+  if("${MPI_COMPILE_CMDLINE}" MATCHES "-pthread")
+    list(APPEND MPI_COMPILE_OPTIONS_WORK "-pthread")
+    if(MPI_LINK_FLAGS_WORK)
+      string(APPEND MPI_LINK_FLAGS_WORK " -pthread")
+    else()
+      set(MPI_LINK_FLAGS_WORK "-pthread")
+    endif()
+  endif()
+
+  if(MPI_${LANG}_EXTRA_COMPILE_DEFINITIONS)
+    list(APPEND MPI_COMPILE_DEFINITIONS_WORK "${MPI_${LANG}_EXTRA_COMPILE_DEFINITIONS}")
+  endif()
+  if(MPI_${LANG}_EXTRA_COMPILE_OPTIONS)
+    list(APPEND MPI_COMPILE_OPTIONS_WORK "${MPI_${LANG}_EXTRA_COMPILE_OPTIONS}")
+  endif()
+  if(MPI_${LANG}_EXTRA_LIB_NAMES)
+    list(APPEND MPI_PLAIN_LIB_NAMES_WORK "${MPI_${LANG}_EXTRA_LIB_NAMES}")
+  endif()
+
+  # If we found MPI, set up all of the appropriate cache entries
+  if(NOT MPI_${LANG}_COMPILE_OPTIONS)
+    set(MPI_${LANG}_COMPILE_OPTIONS          ${MPI_COMPILE_OPTIONS_WORK}     CACHE STRING "MPI ${LANG} compilation options"            FORCE)
+  endif()
+  if(NOT MPI_${LANG}_COMPILE_DEFINITIONS)
+    set(MPI_${LANG}_COMPILE_DEFINITIONS      ${MPI_COMPILE_DEFINITIONS_WORK} CACHE STRING "MPI ${LANG} compilation definitions"        FORCE)
+  endif()
+  if(NOT MPI_${LANG}_COMPILER_INCLUDE_DIRS)
+    set(MPI_${LANG}_COMPILER_INCLUDE_DIRS    ${MPI_INCLUDE_DIRS_WORK}        CACHE STRING "MPI ${LANG} compiler wrapper include directories" FORCE)
+  endif()
+  if(NOT MPI_${LANG}_LINK_FLAGS)
+    set(MPI_${LANG}_LINK_FLAGS               ${MPI_LINK_FLAGS_WORK}          CACHE STRING "MPI ${LANG} linker flags"                   FORCE)
+  endif()
+  if(NOT MPI_${LANG}_LIB_NAMES)
+    set(MPI_${LANG}_LIB_NAMES                ${MPI_PLAIN_LIB_NAMES_WORK}     CACHE STRING "MPI ${LANG} libraries to link against"      FORCE)
+  endif()
+  set(MPI_${LANG}_WRAPPER_FOUND TRUE PARENT_SCOPE)
+endfunction()
+
+function(_MPI_guess_settings LANG)
+  set(MPI_GUESS_FOUND FALSE)
+  # Currently only MSMPI and MPICH2 on Windows are supported, so we can skip this search if we're not targeting that.
+  if(WIN32)
+    # MSMPI
+
+    # The environment variables MSMPI_INC and MSMPILIB32/64 are the only ways of locating the MSMPI_SDK,
+    # which is installed separately from the runtime. Thus it's possible to have mpiexec but not MPI headers
+    # or import libraries and vice versa.
+    if(NOT MPI_GUESS_LIBRARY_NAME OR "${MPI_GUESS_LIBRARY_NAME}" STREQUAL "MSMPI")
+      # We first attempt to locate the msmpi.lib. Should be find it, we'll assume that the MPI present is indeed
+      # Microsoft MPI.
+      if("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
+        file(TO_CMAKE_PATH "$ENV{MSMPI_LIB64}" MPI_MSMPI_LIB_PATH)
+        file(TO_CMAKE_PATH "$ENV{MSMPI_INC}/x64" MPI_MSMPI_INC_PATH_EXTRA)
+      else()
+        file(TO_CMAKE_PATH "$ENV{MSMPI_LIB32}" MPI_MSMPI_LIB_PATH)
+        file(TO_CMAKE_PATH "$ENV{MSMPI_INC}/x86" MPI_MSMPI_INC_PATH_EXTRA)
+      endif()
+
+      find_library(MPI_msmpi_LIBRARY
+        NAMES msmpi
+        HINTS ${MPI_MSMPI_LIB_PATH}
+        DOC "Location of the msmpi library for Microsoft MPI")
+      mark_as_advanced(MPI_msmpi_LIBRARY)
+
+      if(MPI_msmpi_LIBRARY)
+        # Next, we attempt to locate the MPI header. Note that for Fortran we know that mpif.h is a way
+        # MSMPI can be used and therefore that header has to be present.
+        if(NOT MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS)
+          get_filename_component(MPI_MSMPI_INC_DIR "$ENV{MSMPI_INC}" REALPATH)
+          set(MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS "${MPI_MSMPI_INC_DIR}" CACHE STRING "MPI ${LANG} additional include directories" FORCE)
+          unset(MPI_MSMPI_INC_DIR)
+        endif()
+
+        # For MSMPI, one can compile the MPI module by building the mpi.f90 shipped with the MSMPI SDK,
+        # thus it might be present or provided by the user. Figuring out which is supported is done later on.
+        # The PGI Fortran compiler for instance ships a prebuilt set of modules in its own include folder.
+        # Should a user be employing PGI or have built its own set and provided it via cache variables, the
+        # splitting routine would have located the module files.
+
+        # For C and C++, we're done here (MSMPI does not ship the MPI-2 C++ bindings) - however, for Fortran
+        # we need some extra library to glue Fortran support together:
+        # MSMPI ships 2-4 Fortran libraries, each for different Fortran compiler behaviors. The library names
+        # ending with a c are using the cdecl calling convention, whereas those ending with an s are for Fortran
+        # implementations using stdcall. Therefore, the 64-bit MSMPI only ships those ending in 'c', whereas the 32-bit
+        # has both variants available.
+        # The second difference is the last but one letter, if it's an e(nd), the length of a string argument is
+        # passed by the Fortran compiler after all other arguments on the parameter list, if it's an m(ixed),
+        # it's passed immediately after the string address.
+
+        # To summarize:
+        #   - msmpifec: CHARACTER length passed after the parameter list and using cdecl calling convention
+        #   - msmpifmc: CHARACTER length passed directly after string address and using cdecl calling convention
+        #   - msmpifes: CHARACTER length passed after the parameter list and using stdcall calling convention
+        #   - msmpifms: CHARACTER length passed directly after string address and using stdcall calling convention
+        # 32-bit MSMPI ships all four libraries, 64-bit MSMPI ships only the first two.
+
+        # As is, Intel Fortran and PGI Fortran both use the 'ec' variant of the calling convention, whereas
+        # the old Compaq Visual Fortran compiler defaulted to the 'ms' version. It's possible to make Intel Fortran
+        # use the CVF calling convention using /iface:cvf, but we assume - and this is also assumed in FortranCInterface -
+        # this isn't the case. It's also possible to make CVF use the 'ec' variant, using /iface=(cref,nomixed_str_len_arg).
+
+        # Our strategy is now to locate all libraries, but enter msmpifec into the LIB_NAMES array.
+        # Should this not be adequate it's a straightforward way for a user to change the LIB_NAMES array and
+        # have his library found. Still, this should not be necessary outside of exceptional cases, as reasoned.
+        if ("${LANG}" STREQUAL "Fortran")
+          set(MPI_MSMPI_CALLINGCONVS c)
+          if("${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
+            list(APPEND MPI_MSMPI_CALLINGCONVS s)
+          endif()
+          foreach(mpistrlenpos IN ITEMS e m)
+            foreach(mpicallingconv IN LISTS MPI_MSMPI_CALLINGCONVS)
+              find_library(MPI_msmpif${mpistrlenpos}${mpicallingconv}_LIBRARY
+                NAMES msmpif${mpistrlenpos}${mpicallingconv}
+                HINTS "${MPI_MSMPI_LIB_PATH}"
+                DOC "Location of the msmpi${mpistrlenpos}${mpicallingconv} library for Microsoft MPI")
+              mark_as_advanced(MPI_msmpif${mpistrlenpos}${mpicallingconv}_LIBRARY)
+            endforeach()
+          endforeach()
+          if(NOT MPI_${LANG}_LIB_NAMES)
+            set(MPI_${LANG}_LIB_NAMES "msmpi;msmpifec" CACHE STRING "MPI ${LANG} libraries to link against" FORCE)
+          endif()
+
+          # At this point we're *not* done. MSMPI requires an additional include file for Fortran giving the value
+          # of MPI_AINT. This file is called mpifptr.h located in the x64 and x86 subfolders, respectively.
+          find_path(MPI_mpifptr_INCLUDE_DIR
+            NAMES "mpifptr.h"
+            HINTS "${MPI_MSMPI_INC_PATH_EXTRA}"
+            DOC "Location of the mpifptr.h extra header for Microsoft MPI")
+          if(NOT MPI_${LANG}_ADDITIONAL_INCLUDE_VARS)
+            set(MPI_${LANG}_ADDITIONAL_INCLUDE_VARS "mpifptr" CACHE STRING "MPI ${LANG} additional include directory variables, given in the form MPI_<name>_INCLUDE_DIR." FORCE)
+          endif()
+          mark_as_advanced(MPI_${LANG}_ADDITIONAL_INCLUDE_VARS MPI_mpifptr_INCLUDE_DIR)
+        else()
+          if(NOT MPI_${LANG}_LIB_NAMES)
+            set(MPI_${LANG}_LIB_NAMES "msmpi" CACHE STRING "MPI ${LANG} libraries to link against" FORCE)
+          endif()
+        endif()
+        mark_as_advanced(MPI_${LANG}_LIB_NAMES)
+        set(MPI_GUESS_FOUND TRUE)
+
+        if(_MPIEXEC_NOT_GIVEN)
+          unset(MPIEXEC_EXECUTABLE CACHE)
+        endif()
+
+        find_program(MPIEXEC_EXECUTABLE
+          NAMES mpiexec
+          HINTS $ENV{MSMPI_BIN} "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MPI;InstallRoot]/Bin"
+          DOC "Executable for running MPI programs.")
+      endif()
+    endif()
+
+    # At this point there's not many MPIs that we could still consider.
+    # OpenMPI 1.6.x and below supported Windows, but these ship compiler wrappers that still work.
+    # The only other relevant MPI implementation without a wrapper is MPICH2, which had Windows support in 1.4.1p1 and older.
+    if(NOT MPI_GUESS_FOUND AND (NOT MPI_GUESS_LIBRARY_NAME OR "${MPI_GUESS_LIBRARY_NAME}" STREQUAL "MPICH2"))
+      set(MPI_MPICH_PREFIX_PATHS
+        "$ENV{ProgramW6432}/MPICH2/lib"
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MPICH\\SMPD;binary]/../lib"
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MPICH2;Path]/lib"
+      )
+
+      # All of C, C++ and Fortran will need mpi.lib, so we'll look for this first
+      find_library(MPI_mpi_LIBRARY
+        NAMES mpi
+        HINTS ${MPI_MPICH_PREFIX_PATHS})
+      mark_as_advanced(MPI_mpi_LIBRARY)
+      # If we found mpi.lib, we detect the rest of MPICH2
+      if(MPI_mpi_LIBRARY)
+        set(MPI_MPICH_LIB_NAMES "mpi")
+        # If MPI-2 C++ bindings are requested, we need to locate cxx.lib as well.
+        # Otherwise, MPICH_SKIP_MPICXX will be defined and these bindings aren't needed.
+        if("${LANG}" STREQUAL "CXX" AND NOT MPI_CXX_SKIP_MPICXX)
+          find_library(MPI_cxx_LIBRARY
+            NAMES cxx
+            HINTS ${MPI_MPICH_PREFIX_PATHS})
+          mark_as_advanced(MPI_cxx_LIBRARY)
+          list(APPEND MPI_MPICH_LIB_NAMES "cxx")
+        # For Fortran, MPICH2 provides three different libraries:
+        #   fmpich2.lib which uses uppercase symbols and cdecl,
+        #   fmpich2s.lib which uses uppercase symbols and stdcall (32-bit only),
+        #   fmpich2g.lib which uses lowercase symbols with double underscores and cdecl.
+        # fmpich2s.lib would be useful for Compaq Visual Fortran, fmpich2g.lib has to be used with GNU g77 and is also
+        # provided in the form of an .a archive for MinGW and Cygwin. From our perspective, fmpich2.lib is the only one
+        # we need to try, and if it doesn't work with the given Fortran compiler we'd find out later on during validation
+        elseif("${LANG}" STREQUAL "Fortran")
+          find_library(MPI_fmpich2_LIBRARY
+            NAMES fmpich2
+            HINTS ${MPI_MPICH_PREFIX_PATHS})
+          find_library(MPI_fmpich2s_LIBRARY
+            NAMES fmpich2s
+            HINTS ${MPI_MPICH_PREFIX_PATHS})
+          find_library(MPI_fmpich2g_LIBRARY
+            NAMES fmpich2g
+            HINTS ${MPI_MPICH_PREFIX_PATHS})
+          mark_as_advanced(MPI_fmpich2_LIBRARY MPI_fmpich2s_LIBRARY MPI_fmpich2g_LIBRARY)
+          list(APPEND MPI_MPICH_LIB_NAMES "fmpich2")
+        endif()
+
+        if(NOT MPI_${LANG}_LIB_NAMES)
+          set(MPI_${LANG}_LIB_NAMES "${MPI_MPICH_LIB_NAMES}" CACHE STRING "MPI ${LANG} libraries to link against" FORCE)
+        endif()
+        unset(MPI_MPICH_LIB_NAMES)
+
+        if(NOT MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS)
+          # For MPICH2, the include folder would be in ../include relative to the library folder.
+          get_filename_component(MPI_MPICH_ROOT_DIR "${MPI_mpi_LIBRARY}" DIRECTORY)
+          get_filename_component(MPI_MPICH_ROOT_DIR "${MPI_MPICH_ROOT_DIR}" DIRECTORY)
+          if(IS_DIRECTORY "${MPI_MPICH_ROOT_DIR}/include")
+            set(MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS "${MPI_MPICH_ROOT_DIR}/include" CACHE STRING "MPI ${LANG} additional include directory variables, given in the form MPI_<name>_INCLUDE_DIR." FORCE)
+          endif()
+          unset(MPI_MPICH_ROOT_DIR)
+        endif()
+        set(MPI_GUESS_FOUND TRUE)
+
+        if(_MPIEXEC_NOT_GIVEN)
+          unset(MPIEXEC_EXECUTABLE CACHE)
+        endif()
+
+        find_program(MPIEXEC_EXECUTABLE
+          NAMES ${_MPIEXEC_NAMES}
+          HINTS "$ENV{ProgramW6432}/MPICH2/bin"
+                "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MPICH\\SMPD;binary]"
+                "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MPICH2;Path]/bin"
+          DOC "Executable for running MPI programs.")
+      endif()
+      unset(MPI_MPICH_PREFIX_PATHS)
+    endif()
+  endif()
+  set(MPI_${LANG}_GUESS_FOUND "${MPI_GUESS_FOUND}" PARENT_SCOPE)
+endfunction()
+
+function(_MPI_adjust_compile_definitions LANG)
+  if("${LANG}" STREQUAL "CXX")
+    # To disable the C++ bindings, we need to pass some definitions since the mpi.h header has to deal with both C and C++
+    # bindings in MPI-2.
+    if(MPI_CXX_SKIP_MPICXX AND NOT MPI_${LANG}_COMPILE_DEFINITIONS MATCHES "SKIP_MPICXX")
+      # MPICH_SKIP_MPICXX is being used in MPICH and derivatives like MVAPICH or Intel MPI
+      # OMPI_SKIP_MPICXX is being used in Open MPI
+      # _MPICC_H is being used for IBM Platform MPI
+      list(APPEND MPI_${LANG}_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX" "OMPI_SKIP_MPICXX" "_MPICC_H")
+      set(MPI_${LANG}_COMPILE_DEFINITIONS "${MPI_${LANG}_COMPILE_DEFINITIONS}" CACHE STRING "MPI ${LANG} compilation definitions" FORCE)
+    endif()
+  endif()
+endfunction()
+
+macro(_MPI_assemble_libraries LANG)
+  set(MPI_${LANG}_LIBRARIES "")
+  # Only for libraries do we need to check whether the compiler's linking stage is separate.
+  if(NOT "${MPI_${LANG}_COMPILER}" STREQUAL "${CMAKE_${LANG}_COMPILER}" OR NOT MPI_${LANG}_WORKS_IMPLICIT)
+    foreach(mpilib IN LISTS MPI_${LANG}_LIB_NAMES)
+      list(APPEND MPI_${LANG}_LIBRARIES ${MPI_${mpilib}_LIBRARY})
+    endforeach()
+  endif()
+endmacro()
+
+macro(_MPI_assemble_include_dirs LANG)
+  set(MPI_${LANG}_INCLUDE_DIRS
+    ${MPI_${LANG}_COMPILER_INCLUDE_DIRS}
+    ${MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS}
+    )
+  if("${LANG}" MATCHES "(C|CXX)")
+    if(MPI_${LANG}_HEADER_DIR)
+      list(APPEND MPI_${LANG}_INCLUDE_DIRS "${MPI_${LANG}_HEADER_DIR}")
+    endif()
+  else() # Fortran
+    if(MPI_${LANG}_F77_HEADER_DIR)
+      list(APPEND MPI_${LANG}_INCLUDE_DIRS "${MPI_${LANG}_F77_HEADER_DIR}")
+    endif()
+    if(MPI_${LANG}_MODULE_DIR)
+      list(APPEND MPI_${LANG}_INCLUDE_DIRS "${MPI_${LANG}_MODULE_DIR}")
+    endif()
+  endif()
+  if(MPI_${LANG}_INCLUDE_DIRS)
+    list(REMOVE_DUPLICATES MPI_${LANG}_INCLUDE_DIRS)
+  endif()
+endmacro()
+
+macro(_MPI_split_include_dirs LANG)
+  # Backwards compatibility: Search INCLUDE_PATH if given.
+  if(MPI_${LANG}_INCLUDE_PATH)
+    list(APPEND MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS "${MPI_${LANG}_INCLUDE_PATH}")
+  endif()
+
+  # We try to find the headers/modules among those paths (and system paths)
+  # For C/C++, we just need to have a look for mpi.h.
+  if("${LANG}" MATCHES "(C|CXX)")
+    find_path(MPI_${LANG}_HEADER_DIR "mpi.h"
+      HINTS
+        ${MPI_${LANG}_COMPILER_INCLUDE_DIRS}
+        ${MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS}
+    )
+    mark_as_advanced(MPI_${LANG}_HEADER_DIR)
+    if(MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS)
+      list(REMOVE_ITEM MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS "${MPI_${LANG}_HEADER_DIR}")
+    endif()
+
+  # Fortran is more complicated here: An implementation could provide
+  # any of the Fortran 77/90/2008 APIs for MPI. For example, MSMPI
+  # only provides Fortran 77 and - if mpi.f90 is built - potentially
+  # a Fortran 90 module.
+  elseif("${LANG}" STREQUAL "Fortran")
+    find_path(MPI_${LANG}_F77_HEADER_DIR "mpif.h"
+      HINTS
+        ${MPI_${LANG}_COMPILER_INCLUDE_DIRS}
+        ${MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS}
+    )
+    find_path(MPI_${LANG}_MODULE_DIR
+      NAMES "mpi.mod" "mpi_f08.mod"
+      HINTS
+        ${MPI_${LANG}_COMPILER_INCLUDE_DIRS}
+        ${MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS}
+    )
+    if(MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS)
+      list(REMOVE_ITEM MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS
+        "${MPI_${LANG}_F77_HEADER_DIR}"
+        "${MPI_${LANG}_MODULE_DIR}"
+      )
+    endif()
+    mark_as_advanced(MPI_${LANG}_F77_HEADER_DIR MPI_${LANG}_MODULE_DIR)
+  endif()
+
+  # Remove duplicates and default system directories from the list.
+  if(MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS)
+    list(REMOVE_DUPLICATES MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS)
+    foreach(MPI_IMPLICIT_INC_DIR IN LISTS CMAKE_${LANG}_IMPLICIT_LINK_DIRECTORIES)
+      list(REMOVE_ITEM MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS ${MPI_IMPLICIT_INC_DIR})
+    endforeach()
+  endif()
+
+  set(MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS ${MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS} CACHE STRING "MPI ${LANG} additional include directories" FORCE)
+endmacro()
+
+macro(_MPI_create_imported_target LANG)
+  if(NOT TARGET MPI::MPI_${LANG})
+    add_library(MPI::MPI_${LANG} INTERFACE IMPORTED)
+  endif()
+
+  # When this is consumed for compiling CUDA, use '-Xcompiler' to wrap '-pthread' and '-fexceptions'.
+  string(REPLACE "-pthread" "$<$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>:SHELL:-Xcompiler >-pthread"
+    _MPI_${LANG}_COMPILE_OPTIONS "${MPI_${LANG}_COMPILE_OPTIONS}")
+  string(REPLACE "-fexceptions" "$<$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>:SHELL:-Xcompiler >-fexceptions"
+    _MPI_${LANG}_COMPILE_OPTIONS "${_MPI_${LANG}_COMPILE_OPTIONS}")
+  set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_COMPILE_OPTIONS "${_MPI_${LANG}_COMPILE_OPTIONS}")
+  unset(_MPI_${LANG}_COMPILE_OPTIONS)
+
+  set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_COMPILE_DEFINITIONS "${MPI_${LANG}_COMPILE_DEFINITIONS}")
+
+  if(MPI_${LANG}_LINK_FLAGS)
+    string(REPLACE "," "$<COMMA>" _MPI_${LANG}_LINK_FLAGS "${MPI_${LANG}_LINK_FLAGS}")
+    string(PREPEND _MPI_${LANG}_LINK_FLAGS "$<HOST_LINK:SHELL:")
+    string(APPEND _MPI_${LANG}_LINK_FLAGS ">")
+    set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_LINK_OPTIONS "${_MPI_${LANG}_LINK_FLAGS}")
+  endif()
+  # If the compiler links MPI implicitly, no libraries will be found as they're contained within
+  # CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES already.
+  if(MPI_${LANG}_LIBRARIES)
+    set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_LINK_LIBRARIES "${MPI_${LANG}_LIBRARIES}")
+  endif()
+  # Given the new design of FindMPI, INCLUDE_DIRS will always be located, even under implicit linking.
+  set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${MPI_${LANG}_INCLUDE_DIRS}")
+endmacro()
+
+function(_MPI_try_staged_settings LANG MPI_TEST_FILE_NAME MODE RUN_BINARY SUPPRESS_ERRORS)
+  set(WORK_DIR "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindMPI")
+  set(SRC_DIR "${CMAKE_ROOT}/Modules/FindMPI")
+  set(BIN_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindMPI/${MPI_TEST_FILE_NAME}_${LANG}.bin")
+  unset(MPI_TEST_COMPILE_DEFINITIONS)
+  if("${LANG}" STREQUAL "Fortran")
+    if("${MODE}" STREQUAL "F90_MODULE")
+      set(MPI_Fortran_INCLUDE_LINE "use mpi\n      implicit none")
+    elseif("${MODE}" STREQUAL "F08_MODULE")
+      set(MPI_Fortran_INCLUDE_LINE "use mpi_f08\n      implicit none")
+    else() # F77 header
+      set(MPI_Fortran_INCLUDE_LINE "implicit none\n      include 'mpif.h'")
+    endif()
+    configure_file("${SRC_DIR}/${MPI_TEST_FILE_NAME}.f90.in" "${WORK_DIR}/${MPI_TEST_FILE_NAME}.f90" @ONLY)
+    set(MPI_TEST_SOURCE_FILE "${WORK_DIR}/${MPI_TEST_FILE_NAME}.f90")
+  elseif("${LANG}" STREQUAL "CXX")
+    configure_file("${SRC_DIR}/${MPI_TEST_FILE_NAME}.c" "${WORK_DIR}/${MPI_TEST_FILE_NAME}.cpp" COPYONLY)
+    set(MPI_TEST_SOURCE_FILE "${WORK_DIR}/${MPI_TEST_FILE_NAME}.cpp")
+    if("${MODE}" STREQUAL "TEST_MPICXX")
+      set(MPI_TEST_COMPILE_DEFINITIONS TEST_MPI_MPICXX)
+    endif()
+  else() # C
+    set(MPI_TEST_SOURCE_FILE "${SRC_DIR}/${MPI_TEST_FILE_NAME}.c")
+  endif()
+  if(RUN_BINARY)
+    try_run(MPI_RUN_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE} MPI_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}
+     "${CMAKE_BINARY_DIR}" SOURCES "${MPI_TEST_SOURCE_FILE}"
+      COMPILE_DEFINITIONS ${MPI_TEST_COMPILE_DEFINITIONS}
+      LINK_LIBRARIES MPI::MPI_${LANG}
+      RUN_OUTPUT_VARIABLE MPI_RUN_OUTPUT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}
+      COMPILE_OUTPUT_VARIABLE _MPI_TRY_${MPI_TEST_FILE_NAME}_${MODE}_OUTPUT)
+    set(MPI_RUN_OUTPUT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE} "${MPI_RUN_OUTPUT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}}" PARENT_SCOPE)
+  else()
+    try_compile(MPI_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}
+      "${CMAKE_BINARY_DIR}" SOURCES "${MPI_TEST_SOURCE_FILE}"
+      COMPILE_DEFINITIONS ${MPI_TEST_COMPILE_DEFINITIONS}
+      LINK_LIBRARIES MPI::MPI_${LANG}
+      COPY_FILE "${BIN_FILE}"
+      OUTPUT_VARIABLE _MPI_TRY_${MPI_TEST_FILE_NAME}_${MODE}_OUTPUT)
+  endif()
+  if(NOT SUPPRESS_ERRORS)
+    if(NOT MPI_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE})
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+          "The MPI test ${MPI_TEST_FILE_NAME} for ${LANG} in mode ${MODE} failed to compile with the following output:\n${_MPI_TRY_${MPI_TEST_FILE_NAME}_${MODE}_OUTPUT}\n\n")
+    elseif(DEFINED MPI_RUN_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE} AND MPI_RUN_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE})
+        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+          "The MPI test ${MPI_TEST_FILE_NAME} for ${LANG} in mode ${MODE} failed to run with the following output:\n${MPI_RUN_OUTPUT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}}\n\n")
+    endif()
+  endif()
+endfunction()
+
+macro(_MPI_check_lang_works LANG SUPPRESS_ERRORS)
+  # For Fortran we may have by the MPI-3 standard an implementation that provides:
+  #   - the mpi_f08 module
+  #   - *both*, the mpi module and 'mpif.h'
+  # Since older MPI standards (MPI-1) did not define anything but 'mpif.h', we need to check all three individually.
+  if( NOT MPI_${LANG}_WORKS )
+    if("${LANG}" STREQUAL "Fortran")
+      set(MPI_Fortran_INTEGER_LINE "(kind=MPI_INTEGER_KIND)")
+      _MPI_try_staged_settings(${LANG} test_mpi F77_HEADER FALSE ${SUPPRESS_ERRORS})
+      _MPI_try_staged_settings(${LANG} test_mpi F90_MODULE FALSE ${SUPPRESS_ERRORS})
+      _MPI_try_staged_settings(${LANG} test_mpi F08_MODULE FALSE ${SUPPRESS_ERRORS})
+
+      set(MPI_${LANG}_WORKS FALSE)
+
+      foreach(mpimethod IN ITEMS F77_HEADER F08_MODULE F90_MODULE)
+        if(MPI_RESULT_${LANG}_test_mpi_${mpimethod})
+          set(MPI_${LANG}_WORKS TRUE)
+          set(MPI_${LANG}_HAVE_${mpimethod} TRUE)
+        else()
+          set(MPI_${LANG}_HAVE_${mpimethod} FALSE)
+        endif()
+      endforeach()
+      # MPI-1 versions had no MPI_INTGER_KIND defined, so we need to try without it.
+      # However, MPI-1 also did not define the Fortran 90 and 08 modules, so we only try the F77 header.
+      unset(MPI_Fortran_INTEGER_LINE)
+      if(NOT MPI_${LANG}_WORKS)
+        _MPI_try_staged_settings(${LANG} test_mpi F77_HEADER_NOKIND FALSE ${SUPPRESS_ERRORS})
+        if(MPI_RESULT_${LANG}_test_mpi_F77_HEADER_NOKIND)
+          set(MPI_${LANG}_WORKS TRUE)
+          set(MPI_${LANG}_HAVE_F77_HEADER TRUE)
+        endif()
+      endif()
+    else()
+      _MPI_try_staged_settings(${LANG} test_mpi normal FALSE ${SUPPRESS_ERRORS})
+      # If 'test_mpi' built correctly, we've found valid MPI settings. There might not be MPI-2 C++ support, but there can't
+      # be MPI-2 C++ support without the C bindings being present, so checking for them is sufficient.
+      set(MPI_${LANG}_WORKS "${MPI_RESULT_${LANG}_test_mpi_normal}")
+    endif()
+  endif()
+endmacro()
+
+# Some systems install various MPI implementations in separate folders in some MPI prefix
+# This macro enumerates all such subfolders and adds them to the list of hints that will be searched.
+macro(MPI_search_mpi_prefix_folder PREFIX_FOLDER)
+  if(EXISTS "${PREFIX_FOLDER}")
+    file(GLOB _MPI_folder_children RELATIVE "${PREFIX_FOLDER}" "${PREFIX_FOLDER}/*")
+    foreach(_MPI_folder_child IN LISTS _MPI_folder_children)
+      if(IS_DIRECTORY "${PREFIX_FOLDER}/${_MPI_folder_child}")
+        list(APPEND MPI_HINT_DIRS "${PREFIX_FOLDER}/${_MPI_folder_child}")
+      endif()
+    endforeach()
+  endif()
+endmacro()
+
+set(MPI_HINT_DIRS ${MPI_HOME} $ENV{MPI_HOME} $ENV{I_MPI_ROOT})
+if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux")
+  # SUSE Linux Enterprise Server stores its MPI implementations under /usr/lib64/mpi/gcc/<name>
+  # We enumerate the subfolders and append each as a prefix
+  MPI_search_mpi_prefix_folder("/usr/lib64/mpi/gcc")
+elseif("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "FreeBSD")
+  # FreeBSD ships mpich under the normal system paths - but available openmpi implementations
+  # will be found in /usr/local/mpi/<name>
+  MPI_search_mpi_prefix_folder("/usr/local/mpi")
+endif()
+
+# Most MPI distributions have some form of mpiexec or mpirun which gives us something we can look for.
+# The MPI standard does not mandate the existence of either, but instead only makes requirements if a distribution
+# ships an mpiexec program (mpirun executables are not regulated by the standard).
+
+# We defer searching for mpiexec binaries belonging to guesses until later. By doing so, mismatches between mpiexec
+# and the MPI we found should be reduced.
+if(NOT MPIEXEC_EXECUTABLE)
+  set(_MPIEXEC_NOT_GIVEN TRUE)
+else()
+  set(_MPIEXEC_NOT_GIVEN FALSE)
+endif()
+
+find_program(MPIEXEC_EXECUTABLE
+  NAMES ${_MPIEXEC_NAMES}
+  PATH_SUFFIXES bin sbin
+  HINTS ${MPI_HINT_DIRS}
+  DOC "Executable for running MPI programs.")
+
+# call get_filename_component twice to remove mpiexec and the directory it exists in (typically bin).
+# This gives us a fairly reliable base directory to search for /bin /lib and /include from.
+get_filename_component(_MPI_BASE_DIR "${MPIEXEC_EXECUTABLE}" PATH)
+get_filename_component(_MPI_BASE_DIR "${_MPI_BASE_DIR}" PATH)
+
+# According to the MPI standard, section 8.8 -n is a guaranteed, and the only guaranteed way to
+# launch an MPI process using mpiexec if such a program exists.
+set(MPIEXEC_NUMPROC_FLAG "-n"  CACHE STRING "Flag used by MPI to specify the number of processes for mpiexec; the next option will be the number of processes.")
+set(MPIEXEC_PREFLAGS     ""    CACHE STRING "These flags will be directly before the executable that is being run by mpiexec.")
+set(MPIEXEC_POSTFLAGS    ""    CACHE STRING "These flags will be placed after all flags passed to mpiexec.")
+
+# Set the number of processes to the physical processor count
+cmake_host_system_information(RESULT _MPIEXEC_NUMPROCS QUERY NUMBER_OF_PHYSICAL_CORES)
+set(MPIEXEC_MAX_NUMPROCS "${_MPIEXEC_NUMPROCS}" CACHE STRING "Maximum number of processors available to run MPI applications.")
+unset(_MPIEXEC_NUMPROCS)
+mark_as_advanced(MPIEXEC_EXECUTABLE MPIEXEC_NUMPROC_FLAG MPIEXEC_PREFLAGS MPIEXEC_POSTFLAGS MPIEXEC_MAX_NUMPROCS)
+
+#=============================================================================
+# Backward compatibility input hacks.  Propagate the FindMPI hints to C and
+# CXX if the respective new versions are not defined.  Translate the old
+# MPI_LIBRARY and MPI_EXTRA_LIBRARY to respective MPI_${LANG}_LIBRARIES.
+#
+# Once we find the new variables, we translate them back into their old
+# equivalents below.
+if(NOT MPI_IGNORE_LEGACY_VARIABLES)
+  foreach (LANG IN ITEMS C CXX)
+    # Old input variables.
+    set(_MPI_OLD_INPUT_VARS COMPILER COMPILE_FLAGS INCLUDE_PATH LINK_FLAGS)
+
+    # Set new vars based on their old equivalents, if the new versions are not already set.
+    foreach (var ${_MPI_OLD_INPUT_VARS})
+      if (NOT MPI_${LANG}_${var} AND MPI_${var})
+        set(MPI_${LANG}_${var} "${MPI_${var}}")
+      endif()
+    endforeach()
+
+    # Chop the old compile flags into options and definitions
+
+    unset(MPI_${LANG}_EXTRA_COMPILE_DEFINITIONS)
+    unset(MPI_${LANG}_EXTRA_COMPILE_OPTIONS)
+    if(MPI_${LANG}_COMPILE_FLAGS)
+      separate_arguments(MPI_SEPARATE_FLAGS NATIVE_COMMAND "${MPI_${LANG}_COMPILE_FLAGS}")
+      foreach(_MPI_FLAG IN LISTS MPI_SEPARATE_FLAGS)
+        if("${_MPI_FLAG}" MATCHES "^ *-D([^ ]+)")
+          list(APPEND MPI_${LANG}_EXTRA_COMPILE_DEFINITIONS "${CMAKE_MATCH_1}")
+        else()
+          list(APPEND MPI_${LANG}_EXTRA_COMPILE_OPTIONS "${_MPI_FLAG}")
+        endif()
+      endforeach()
+      unset(MPI_SEPARATE_FLAGS)
+    endif()
+
+    # If a list of libraries was given, we'll split it into new-style cache variables
+    unset(MPI_${LANG}_EXTRA_LIB_NAMES)
+    if(NOT MPI_${LANG}_LIB_NAMES)
+      foreach(_MPI_LIB IN LISTS MPI_${LANG}_LIBRARIES MPI_LIBRARY MPI_EXTRA_LIBRARY)
+        if(_MPI_LIB)
+          get_filename_component(_MPI_PLAIN_LIB_NAME "${_MPI_LIB}" NAME_WE)
+          get_filename_component(_MPI_LIB_NAME "${_MPI_LIB}" NAME)
+          get_filename_component(_MPI_LIB_DIR "${_MPI_LIB}" DIRECTORY)
+          list(APPEND MPI_${LANG}_EXTRA_LIB_NAMES "${_MPI_PLAIN_LIB_NAME}")
+          find_library(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY
+            NAMES "${_MPI_LIB_NAME}" "lib${_MPI_LIB_NAME}"
+            HINTS ${_MPI_LIB_DIR} $ENV{MPI_LIB}
+            DOC "Location of the ${_MPI_PLAIN_LIB_NAME} library for MPI"
+          )
+          mark_as_advanced(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY)
+        endif()
+      endforeach()
+    endif()
+  endforeach()
+endif()
+#=============================================================================
+
+unset(MPI_VERSION)
+unset(MPI_VERSION_MAJOR)
+unset(MPI_VERSION_MINOR)
+
+unset(_MPI_MIN_VERSION)
+
+# If the user specified a library name we assume they prefer that library over a wrapper. If not, they can disable skipping manually.
+if(NOT DEFINED MPI_SKIP_COMPILER_WRAPPER AND MPI_GUESS_LIBRARY_NAME)
+  set(MPI_SKIP_COMPILER_WRAPPER TRUE)
+endif()
+
+# This loop finds the compilers and sends them off for interrogation.
+foreach(LANG IN ITEMS C CXX Fortran)
+  if(CMAKE_${LANG}_COMPILER_LOADED)
+    if(NOT MPI_FIND_COMPONENTS)
+      set(_MPI_FIND_${LANG} TRUE)
+    elseif( ${LANG} IN_LIST MPI_FIND_COMPONENTS)
+      set(_MPI_FIND_${LANG} TRUE)
+    elseif( ${LANG} STREQUAL CXX AND NOT MPI_CXX_SKIP_MPICXX AND MPICXX IN_LIST MPI_FIND_COMPONENTS )
+      set(_MPI_FIND_${LANG} TRUE)
+    else()
+      set(_MPI_FIND_${LANG} FALSE)
+    endif()
+  else()
+    set(_MPI_FIND_${LANG} FALSE)
+    if(${LANG} IN_LIST MPI_FIND_COMPONENTS)
+      string(APPEND _MPI_FAIL_REASON "MPI component '${LANG}' was requested, but language ${LANG} is not enabled.  ")
+    endif()
+  endif()
+  if(_MPI_FIND_${LANG})
+    if( ${LANG} STREQUAL CXX AND NOT MPICXX IN_LIST MPI_FIND_COMPONENTS )
+      option(MPI_CXX_SKIP_MPICXX "If true, the MPI-2 C++ bindings are disabled using definitions." FALSE)
+      mark_as_advanced(MPI_CXX_SKIP_MPICXX)
+    endif()
+    _MPI_adjust_compile_definitions(${LANG})
+    if(NOT (MPI_${LANG}_LIB_NAMES AND (MPI_${LANG}_INCLUDE_PATH OR MPI_${LANG}_INCLUDE_DIRS OR MPI_${LANG}_COMPILER_INCLUDE_DIRS)))
+      set(MPI_${LANG}_TRIED_IMPLICIT FALSE)
+      set(MPI_${LANG}_WORKS_IMPLICIT FALSE)
+      if(NOT MPI_${LANG}_COMPILER AND NOT MPI_ASSUME_NO_BUILTIN_MPI)
+        # Should the imported targets be empty, we effectively try whether the compiler supports MPI on its own, which is the case on e.g.
+        # Cray PrgEnv.
+        _MPI_create_imported_target(${LANG})
+        _MPI_check_lang_works(${LANG} TRUE)
+
+        # If the compiler can build MPI code on its own, it functions as an MPI compiler and we'll set the variable to point to it.
+        if(MPI_${LANG}_WORKS)
+          set(MPI_${LANG}_COMPILER "${CMAKE_${LANG}_COMPILER}" CACHE FILEPATH "MPI compiler for ${LANG}" FORCE)
+          set(MPI_${LANG}_WORKS_IMPLICIT TRUE)
+        endif()
+        set(MPI_${LANG}_TRIED_IMPLICIT TRUE)
+      endif()
+
+      if(NOT "${MPI_${LANG}_COMPILER}" STREQUAL "${CMAKE_${LANG}_COMPILER}" OR NOT MPI_${LANG}_WORKS)
+        set(MPI_${LANG}_WRAPPER_FOUND FALSE)
+        set(MPI_PINNED_COMPILER FALSE)
+
+        if(NOT MPI_SKIP_COMPILER_WRAPPER)
+          if(MPI_${LANG}_COMPILER)
+            # If the user supplies a compiler *name* instead of an absolute path, assume that we need to find THAT compiler.
+            if (NOT IS_ABSOLUTE "${MPI_${LANG}_COMPILER}")
+              # Get rid of our default list of names and just search for the name the user wants.
+              set(_MPI_${LANG}_COMPILER_NAMES "${MPI_${LANG}_COMPILER}")
+              unset(MPI_${LANG}_COMPILER CACHE)
+            endif()
+            # If the user specifies a compiler, we don't want to try to search libraries either.
+            set(MPI_PINNED_COMPILER TRUE)
+          endif()
+
+          # If we have an MPI base directory, we'll try all compiler names in that one first.
+          # This should prevent mixing different MPI environments
+          if(_MPI_BASE_DIR)
+            find_program(MPI_${LANG}_COMPILER
+              NAMES  ${_MPI_${LANG}_COMPILER_NAMES}
+              PATH_SUFFIXES bin sbin
+              HINTS  ${_MPI_BASE_DIR}
+              NO_DEFAULT_PATH
+              DOC    "MPI compiler for ${LANG}"
+            )
+          endif()
+
+          # If the base directory did not help (for example because the mpiexec isn't in the same directory as the compilers),
+          # we shall try searching in the default paths.
+          find_program(MPI_${LANG}_COMPILER
+            NAMES  ${_MPI_${LANG}_COMPILER_NAMES}
+            PATH_SUFFIXES bin sbin
+            DOC    "MPI compiler for ${LANG}"
+          )
+
+          if("${MPI_${LANG}_COMPILER}" STREQUAL "${CMAKE_${LANG}_COMPILER}")
+            set(MPI_PINNED_COMPILER TRUE)
+
+            # If we haven't made the implicit compiler test yet, perform it now.
+            if(NOT MPI_${LANG}_TRIED_IMPLICIT)
+              _MPI_create_imported_target(${LANG})
+              _MPI_check_lang_works(${LANG} TRUE)
+            endif()
+
+            # Should the MPI compiler not work implicitly for MPI, still interrogate it.
+            # Otherwise, MPI compilers for which CMake has separate linking stages, e.g. Intel MPI on Windows where link.exe is being used
+            # directly during linkage instead of CMAKE_<LANG>_COMPILER will not work.
+            if(NOT MPI_${LANG}_WORKS)
+              set(MPI_${LANG}_WORKS_IMPLICIT FALSE)
+              _MPI_interrogate_compiler(${LANG})
+            else()
+              set(MPI_${LANG}_WORKS_IMPLICIT TRUE)
+            endif()
+          elseif(MPI_${LANG}_COMPILER)
+            _MPI_interrogate_compiler(${LANG})
+          endif()
+        endif()
+
+        # We are on a Cray, environment identfier: PE_ENV is set (CRAY), and
+        # have NOT found an mpic++-like compiler wrapper (previous block),
+        # and we do NOT use the Cray cc/CC compiler wrappers as CC/CXX CMake
+        # compiler.
+        # So as a last resort, we now interrogate cc/CC/ftn for MPI flags.
+        if(DEFINED ENV{PE_ENV} AND NOT "${MPI_${LANG}_COMPILER}")
+          set(MPI_PINNED_COMPILER TRUE)
+          find_program(MPI_${LANG}_COMPILER
+            NAMES  ${_MPI_Cray_${LANG}_COMPILER_NAMES}
+            PATH_SUFFIXES bin sbin
+            DOC    "MPI compiler for ${LANG}"
+          )
+
+          # If we haven't made the implicit compiler test yet, perform it now.
+          if(NOT MPI_${LANG}_TRIED_IMPLICIT)
+            _MPI_create_imported_target(${LANG})
+            _MPI_check_lang_works(${LANG} TRUE)
+          endif()
+
+          set(MPI_${LANG}_WORKS_IMPLICIT TRUE)
+          _MPI_interrogate_compiler(${LANG})
+        endif()
+
+        if(NOT MPI_PINNED_COMPILER AND NOT MPI_${LANG}_WRAPPER_FOUND)
+          # If MPI_PINNED_COMPILER wasn't given, and the MPI compiler we potentially found didn't work, we withdraw it.
+          set(MPI_${LANG}_COMPILER "MPI_${LANG}_COMPILER-NOTFOUND" CACHE FILEPATH "MPI compiler for ${LANG}" FORCE)
+
+          if(LANG STREQUAL "C")
+            set(_MPI_PKG "mpi-c")
+          elseif(LANG STREQUAL "CXX")
+            set(_MPI_PKG "mpi-cxx")
+          elseif(LANG STREQUAL "Fortran")
+            set(_MPI_PKG "mpi-fort")
+          else()
+            set(_MPI_PKG "")
+          endif()
+          if(_MPI_PKG AND PKG_CONFIG_FOUND)
+            pkg_check_modules("MPI_${LANG}_PKG" "${_MPI_PKG}")
+            if("${MPI_${LANG}_PKG_FOUND}")
+              set(MPI_${LANG}_COMPILE_OPTIONS  ${MPI_${LANG}_PKG_CFLAGS}        CACHE STRING "MPI ${LANG} compilation options"       FORCE)
+              set(MPI_${LANG}_INCLUDE_PATH     ${MPI_${LANG}_PKG_INCLUDE_DIRS}  CACHE STRING "MPI ${LANG} include directories"       FORCE)
+              set(MPI_${LANG}_LINK_FLAGS       ${MPI_${LANG}_PKG_LDFLAGS}       CACHE STRING "MPI ${LANG} linker flags"              FORCE)
+              set(MPI_${LANG}_LIB_NAMES        ${MPI_${LANG}_PKG_LIBRARIES}     CACHE STRING "MPI ${LANG} libraries to link against" FORCE)
+              foreach(_MPI_LIB IN LISTS MPI_${LANG}_LIB_NAMES)
+                if(_MPI_LIB)
+                  get_filename_component(_MPI_PLAIN_LIB_NAME "${_MPI_LIB}" NAME_WE)
+                  get_filename_component(_MPI_LIB_NAME "${_MPI_LIB}" NAME)
+                  get_filename_component(_MPI_LIB_DIR "${_MPI_LIB}" DIRECTORY)
+                  find_library(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY
+                    NAMES "${_MPI_LIB_NAME}" "lib${_MPI_LIB_NAME}"
+                    HINTS ${_MPI_LIB_DIR}
+                    DOC "Location of the ${_MPI_PLAIN_LIB_NAME} library for MPI"
+                  )
+                  mark_as_advanced(MPI_${_MPI_PLAIN_LIB_NAME}_LIBRARY)
+                endif()
+              endforeach()
+            endif()
+          endif()
+
+          if(NOT MPI_SKIP_GUESSING AND NOT "${MPI_${LANG}_PKG_FOUND}")
+            # For C++, we may use the settings for C. Should a given compiler wrapper for C++ not exist, but one for C does, we copy over the
+            # settings for C. An MPI distribution that is in this situation would be IBM Platform MPI.
+            if("${LANG}" STREQUAL "CXX" AND MPI_C_WRAPPER_FOUND)
+              set(MPI_${LANG}_COMPILE_OPTIONS          ${MPI_C_COMPILE_OPTIONS}     CACHE STRING "MPI ${LANG} compilation options"           )
+              set(MPI_${LANG}_COMPILE_DEFINITIONS      ${MPI_C_COMPILE_DEFINITIONS} CACHE STRING "MPI ${LANG} compilation definitions"       )
+              set(MPI_${LANG}_COMPILER_INCLUDE_DIRS    ${MPI_C_INCLUDE_DIRS}        CACHE STRING "MPI ${LANG} compiler wrapper include directories")
+              set(MPI_${LANG}_LINK_FLAGS               ${MPI_C_LINK_FLAGS}          CACHE STRING "MPI ${LANG} linker flags"                  )
+              set(MPI_${LANG}_LIB_NAMES                ${MPI_C_LIB_NAMES}           CACHE STRING "MPI ${LANG} libraries to link against"     )
+            else()
+              _MPI_guess_settings(${LANG})
+            endif()
+          endif()
+        endif()
+      endif()
+    endif()
+
+    if(NOT "${MPI_${LANG}_COMPILER}" STREQUAL "${CMAKE_${LANG}_COMPILER}")
+      _MPI_split_include_dirs(${LANG})
+      _MPI_assemble_include_dirs(${LANG})
+    else()
+      set(MPI_${LANG}_INCLUDE_DIRS "")
+    endif()
+    _MPI_assemble_libraries(${LANG})
+
+    # We always create imported targets even if they're empty
+    _MPI_create_imported_target(${LANG})
+
+    if(NOT MPI_${LANG}_WORKS)
+      _MPI_check_lang_works(${LANG} FALSE)
+    endif()
+
+    # Next, we'll initialize the MPI variables that have not been previously set.
+    set(MPI_${LANG}_COMPILE_OPTIONS          "" CACHE STRING "MPI ${LANG} compilation flags"             )
+    set(MPI_${LANG}_COMPILE_DEFINITIONS      "" CACHE STRING "MPI ${LANG} compilation definitions"       )
+    set(MPI_${LANG}_COMPILER_INCLUDE_DIRS    "" CACHE STRING "MPI ${LANG} compiler wrapper include directories")
+    set(MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS  "" CACHE STRING "MPI ${LANG} additional include directories")
+    set(MPI_${LANG}_LINK_FLAGS               "" CACHE STRING "MPI ${LANG} linker flags"                  )
+    if(NOT MPI_${LANG}_COMPILER STREQUAL CMAKE_${LANG}_COMPILER)
+      set(MPI_${LANG}_LIB_NAMES                "" CACHE STRING "MPI ${LANG} libraries to link against"   )
+    endif()
+    mark_as_advanced(
+      MPI_${LANG}_COMPILE_OPTIONS
+      MPI_${LANG}_COMPILE_DEFINITIONS
+      MPI_${LANG}_LINK_FLAGS
+      MPI_${LANG}_LIB_NAMES
+      MPI_${LANG}_COMPILER_INCLUDE_DIRS
+      MPI_${LANG}_ADDITIONAL_INCLUDE_DIRS
+      MPI_${LANG}_COMPILER
+      )
+
+    # If we've found MPI, then we'll perform additional analysis: Determine the MPI version, MPI library version, supported
+    # MPI APIs (i.e. MPI-2 C++ bindings). For Fortran we also need to find specific parameters if we're under MPI-3.
+    if(MPI_${LANG}_WORKS)
+      if("${LANG}" STREQUAL "CXX" AND NOT DEFINED MPI_MPICXX_FOUND)
+        if(NOT MPI_CXX_SKIP_MPICXX AND NOT MPI_CXX_VALIDATE_SKIP_MPICXX)
+          _MPI_try_staged_settings(${LANG} test_mpi MPICXX FALSE FALSE)
+          if(MPI_RESULT_${LANG}_test_mpi_MPICXX)
+            set(MPI_MPICXX_FOUND TRUE)
+          else()
+            set(MPI_MPICXX_FOUND FALSE)
+          endif()
+        else()
+          set(MPI_MPICXX_FOUND FALSE)
+        endif()
+      endif()
+
+      # At this point, we know the bindings present but not the MPI version or anything else.
+      if(NOT DEFINED MPI_${LANG}_VERSION)
+        unset(MPI_${LANG}_VERSION_MAJOR)
+        unset(MPI_${LANG}_VERSION_MINOR)
+      endif()
+      set(MPI_BIN_FOLDER ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindMPI)
+
+      # For Fortran, we'll want to use the most modern MPI binding to test capabilities other than the
+      # Fortran parameters, since those depend on the method of consumption.
+      # For C++, we can always use the C bindings, and should do so, since the C++ bindings do not exist in MPI-3
+      # whereas the C bindings do, and the C++ bindings never offered any feature advantage over their C counterparts.
+      if("${LANG}" STREQUAL "Fortran")
+        if(MPI_${LANG}_HAVE_F08_MODULE)
+          set(MPI_${LANG}_HIGHEST_METHOD F08_MODULE)
+        elseif(MPI_${LANG}_HAVE_F90_MODULE)
+          set(MPI_${LANG}_HIGHEST_METHOD F90_MODULE)
+        else()
+          set(MPI_${LANG}_HIGHEST_METHOD F77_HEADER)
+        endif()
+
+        # Another difference between C and Fortran is that we can't use the preprocessor to determine whether MPI_VERSION
+        # and MPI_SUBVERSION are provided. These defines did not exist in MPI 1.0 and 1.1 and therefore might not
+        # exist. For C/C++, test_mpi.c will handle the MPI_VERSION extraction, but for Fortran, we need mpiver.f90.
+        if(NOT DEFINED MPI_${LANG}_VERSION)
+          _MPI_try_staged_settings(${LANG} mpiver ${MPI_${LANG}_HIGHEST_METHOD} FALSE FALSE)
+          if(MPI_RESULT_${LANG}_mpiver_${MPI_${LANG}_HIGHEST_METHOD})
+            file(STRINGS ${MPI_BIN_FOLDER}/mpiver_${LANG}.bin _MPI_VERSION_STRING LIMIT_COUNT 1 REGEX "INFO:MPI-VER")
+            if("${_MPI_VERSION_STRING}" MATCHES ".*INFO:MPI-VER\\[([0-9]+)\\.([0-9]+)\\].*")
+              set(MPI_${LANG}_VERSION_MAJOR "${CMAKE_MATCH_1}")
+              set(MPI_${LANG}_VERSION_MINOR "${CMAKE_MATCH_2}")
+              set(MPI_${LANG}_VERSION "${MPI_${LANG}_VERSION_MAJOR}.${MPI_${LANG}_VERSION_MINOR}")
+            endif()
+          endif()
+        endif()
+
+        # Finally, we want to find out which capabilities a given interface supports, compare the MPI-3 standard.
+        # This is determined by interface specific parameters MPI_SUBARRAYS_SUPPORTED and MPI_ASYNC_PROTECTS_NONBLOCKING
+        # and might vary between the different methods of consumption.
+        if(MPI_DETERMINE_Fortran_CAPABILITIES AND NOT MPI_Fortran_CAPABILITIES_DETERMINED)
+          foreach(mpimethod IN ITEMS F08_MODULE F90_MODULE F77_HEADER)
+            if(MPI_${LANG}_HAVE_${mpimethod})
+              set(MPI_${LANG}_${mpimethod}_SUBARRAYS FALSE)
+              set(MPI_${LANG}_${mpimethod}_ASYNCPROT FALSE)
+              _MPI_try_staged_settings(${LANG} fortranparam_mpi ${mpimethod} TRUE FALSE)
+              if(MPI_RESULT_${LANG}_fortranparam_mpi_${mpimethod} AND
+                NOT "${MPI_RUN_RESULT_${LANG}_fortranparam_mpi_${mpimethod}}" STREQUAL "FAILED_TO_RUN")
+                if("${MPI_RUN_OUTPUT_${LANG}_fortranparam_mpi_${mpimethod}}" MATCHES
+                  ".*INFO:SUBARRAYS\\[ *([TF]) *\\]-ASYNCPROT\\[ *([TF]) *\\].*")
+                  if("${CMAKE_MATCH_1}" STREQUAL "T")
+                    set(MPI_${LANG}_${mpimethod}_SUBARRAYS TRUE)
+                  endif()
+                  if("${CMAKE_MATCH_2}" STREQUAL "T")
+                    set(MPI_${LANG}_${mpimethod}_ASYNCPROT TRUE)
+                  endif()
+                endif()
+              endif()
+            endif()
+          endforeach()
+          set(MPI_Fortran_CAPABILITIES_DETERMINED TRUE)
+        endif()
+      else()
+        set(MPI_${LANG}_HIGHEST_METHOD normal)
+
+        # By the MPI-2 standard, MPI_VERSION and MPI_SUBVERSION are valid for both C and C++ bindings.
+        if(NOT DEFINED MPI_${LANG}_VERSION)
+          file(STRINGS ${MPI_BIN_FOLDER}/test_mpi_${LANG}.bin _MPI_VERSION_STRING LIMIT_COUNT 1 REGEX "INFO:MPI-VER")
+          if("${_MPI_VERSION_STRING}" MATCHES ".*INFO:MPI-VER\\[([0-9]+)\\.([0-9]+)\\].*")
+            set(MPI_${LANG}_VERSION_MAJOR "${CMAKE_MATCH_1}")
+            set(MPI_${LANG}_VERSION_MINOR "${CMAKE_MATCH_2}")
+            set(MPI_${LANG}_VERSION "${MPI_${LANG}_VERSION_MAJOR}.${MPI_${LANG}_VERSION_MINOR}")
+          endif()
+        endif()
+      endif()
+
+      unset(MPI_BIN_FOLDER)
+
+      # At this point, we have dealt with determining the MPI version and parameters for each Fortran method available.
+      # The one remaining issue is to determine which MPI library is installed.
+      # Determining the version and vendor of the MPI library is only possible via MPI_Get_library_version() at runtime,
+      # and therefore we cannot do this while cross-compiling (a user may still define MPI_<lang>_LIBRARY_VERSION_STRING
+      # themselves and we'll attempt splitting it, which is equivalent to provide the try_run output).
+      # It's also worth noting that the installed version string can depend on the language, or on the system the binary
+      # runs on if MPI is not statically linked.
+      if(MPI_DETERMINE_LIBRARY_VERSION AND NOT MPI_${LANG}_LIBRARY_VERSION_STRING)
+        _MPI_try_staged_settings(${LANG} libver_mpi ${MPI_${LANG}_HIGHEST_METHOD} TRUE FALSE)
+        if(MPI_RESULT_${LANG}_libver_mpi_${MPI_${LANG}_HIGHEST_METHOD} AND
+          "${MPI_RUN_RESULT_${LANG}_libver_mpi_${MPI_${LANG}_HIGHEST_METHOD}}" EQUAL "0")
+          string(STRIP "${MPI_RUN_OUTPUT_${LANG}_libver_mpi_${MPI_${LANG}_HIGHEST_METHOD}}"
+            MPI_${LANG}_LIBRARY_VERSION_STRING)
+        else()
+          set(MPI_${LANG}_LIBRARY_VERSION_STRING "NOTFOUND")
+        endif()
+      endif()
+    endif()
+
+    set(MPI_${LANG}_FIND_QUIETLY ${MPI_FIND_QUIETLY})
+    set(MPI_${LANG}_FIND_VERSION ${MPI_FIND_VERSION})
+    set(MPI_${LANG}_FIND_VERSION_EXACT ${MPI_FIND_VERSION_EXACT})
+
+    unset(MPI_${LANG}_REQUIRED_VARS)
+    if (NOT "${MPI_${LANG}_COMPILER}" STREQUAL "${CMAKE_${LANG}_COMPILER}")
+      foreach(mpilibname IN LISTS MPI_${LANG}_LIB_NAMES)
+        list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${mpilibname}_LIBRARY")
+      endforeach()
+      list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${LANG}_LIB_NAMES")
+      if("${LANG}" STREQUAL "Fortran")
+        # For Fortran we only need one of the module or header directories to have *some* support for MPI.
+        if(NOT MPI_${LANG}_MODULE_DIR)
+          list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${LANG}_F77_HEADER_DIR")
+        endif()
+        if(NOT MPI_${LANG}_F77_HEADER_DIR)
+          list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${LANG}_MODULE_DIR")
+        endif()
+      else()
+        list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${LANG}_HEADER_DIR")
+      endif()
+      if(MPI_${LANG}_ADDITIONAL_INCLUDE_VARS)
+        foreach(mpiincvar IN LISTS MPI_${LANG}_ADDITIONAL_INCLUDE_VARS)
+          list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${mpiincvar}_INCLUDE_DIR")
+        endforeach()
+      endif()
+      # Append the works variable now. If the settings did not work, this will show up properly.
+      list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${LANG}_WORKS")
+    else()
+      # If the compiler worked implicitly, use its path as output.
+      # Should the compiler variable be set, we also require it to work.
+      list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${LANG}_COMPILER")
+      if(MPI_${LANG}_COMPILER)
+        list(APPEND MPI_${LANG}_REQUIRED_VARS "MPI_${LANG}_WORKS")
+      endif()
+    endif()
+    find_package_handle_standard_args(MPI_${LANG} NAME_MISMATCHED
+      REQUIRED_VARS ${MPI_${LANG}_REQUIRED_VARS}
+      VERSION_VAR MPI_${LANG}_VERSION)
+
+    if(DEFINED MPI_${LANG}_VERSION)
+      if(NOT _MPI_MIN_VERSION OR _MPI_MIN_VERSION VERSION_GREATER MPI_${LANG}_VERSION)
+        set(_MPI_MIN_VERSION MPI_${LANG}_VERSION)
+      endif()
+    endif()
+  endif()
+endforeach()
+
+unset(_MPI_REQ_VARS)
+foreach(LANG IN ITEMS C CXX Fortran)
+  if((NOT MPI_FIND_COMPONENTS AND CMAKE_${LANG}_COMPILER_LOADED) OR LANG IN_LIST MPI_FIND_COMPONENTS)
+    list(APPEND _MPI_REQ_VARS "MPI_${LANG}_FOUND")
+  endif()
+endforeach()
+
+if(MPICXX IN_LIST MPI_FIND_COMPONENTS)
+  list(APPEND _MPI_REQ_VARS "MPI_MPICXX_FOUND")
+endif()
+
+find_package_handle_standard_args(MPI
+    REQUIRED_VARS ${_MPI_REQ_VARS}
+    VERSION_VAR ${_MPI_MIN_VERSION}
+    REASON_FAILURE_MESSAGE "${_MPI_FAIL_REASON}"
+    HANDLE_COMPONENTS)
+
+#=============================================================================
+# More backward compatibility stuff
+
+# For compatibility reasons, we also define MPIEXEC
+set(MPIEXEC "${MPIEXEC_EXECUTABLE}")
+
+# Copy over MPI_<LANG>_INCLUDE_PATH from the assembled INCLUDE_DIRS.
+foreach(LANG IN ITEMS C CXX Fortran)
+  if(MPI_${LANG}_FOUND)
+    set(MPI_${LANG}_INCLUDE_PATH "${MPI_${LANG}_INCLUDE_DIRS}")
+    unset(MPI_${LANG}_COMPILE_FLAGS)
+    if(MPI_${LANG}_COMPILE_OPTIONS)
+      list(JOIN MPI_${LANG}_COMPILE_OPTIONS " " MPI_${LANG}_COMPILE_FLAGS)
+    endif()
+    if(MPI_${LANG}_COMPILE_DEFINITIONS)
+      foreach(_MPI_DEF IN LISTS MPI_${LANG}_COMPILE_DEFINITIONS)
+        string(APPEND MPI_${LANG}_COMPILE_FLAGS " -D${_MPI_DEF}")
+      endforeach()
+    endif()
+  endif()
+endforeach()
+
+# Bare MPI sans ${LANG} vars are set to CXX then C, depending on what was found.
+# This mimics the behavior of the old language-oblivious FindMPI.
+set(_MPI_OLD_VARS COMPILER INCLUDE_PATH COMPILE_FLAGS LINK_FLAGS LIBRARIES)
+if (MPI_CXX_FOUND)
+  foreach (var ${_MPI_OLD_VARS})
+    set(MPI_${var} ${MPI_CXX_${var}})
+  endforeach()
+elseif (MPI_C_FOUND)
+  foreach (var ${_MPI_OLD_VARS})
+    set(MPI_${var} ${MPI_C_${var}})
+  endforeach()
+endif()
+
+# Chop MPI_LIBRARIES into the old-style MPI_LIBRARY and MPI_EXTRA_LIBRARY, and set them in cache.
+if (MPI_LIBRARIES)
+  list(GET MPI_LIBRARIES 0 MPI_LIBRARY_WORK)
+  set(MPI_LIBRARY "${MPI_LIBRARY_WORK}")
+  unset(MPI_LIBRARY_WORK)
+else()
+  set(MPI_LIBRARY "MPI_LIBRARY-NOTFOUND")
+endif()
+
+list(LENGTH MPI_LIBRARIES MPI_NUMLIBS)
+if (MPI_NUMLIBS GREATER 1)
+  set(MPI_EXTRA_LIBRARY_WORK "${MPI_LIBRARIES}")
+  list(REMOVE_AT MPI_EXTRA_LIBRARY_WORK 0)
+  set(MPI_EXTRA_LIBRARY "${MPI_EXTRA_LIBRARY_WORK}")
+  unset(MPI_EXTRA_LIBRARY_WORK)
+else()
+  set(MPI_EXTRA_LIBRARY "MPI_EXTRA_LIBRARY-NOTFOUND")
+endif()
+set(MPI_IGNORE_LEGACY_VARIABLES TRUE)
+#=============================================================================
+
+# unset these vars to cleanup namespace
+unset(_MPI_OLD_VARS)
+unset(_MPI_PREFIX_PATH)
+unset(_MPI_BASE_DIR)
+foreach (lang C CXX Fortran)
+  unset(_MPI_${LANG}_COMPILER_NAMES)
+endforeach()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FindMPI/fortranparam_mpi.f90.in b/share/cmake-3.22/Modules/FindMPI/fortranparam_mpi.f90.in
similarity index 100%
rename from share/cmake-3.18/Modules/FindMPI/fortranparam_mpi.f90.in
rename to share/cmake-3.22/Modules/FindMPI/fortranparam_mpi.f90.in
diff --git a/share/cmake-3.18/Modules/FindMPI/libver_mpi.c b/share/cmake-3.22/Modules/FindMPI/libver_mpi.c
similarity index 100%
rename from share/cmake-3.18/Modules/FindMPI/libver_mpi.c
rename to share/cmake-3.22/Modules/FindMPI/libver_mpi.c
diff --git a/share/cmake-3.18/Modules/FindMPI/libver_mpi.f90.in b/share/cmake-3.22/Modules/FindMPI/libver_mpi.f90.in
similarity index 100%
rename from share/cmake-3.18/Modules/FindMPI/libver_mpi.f90.in
rename to share/cmake-3.22/Modules/FindMPI/libver_mpi.f90.in
diff --git a/share/cmake-3.18/Modules/FindMPI/mpiver.f90.in b/share/cmake-3.22/Modules/FindMPI/mpiver.f90.in
similarity index 100%
rename from share/cmake-3.18/Modules/FindMPI/mpiver.f90.in
rename to share/cmake-3.22/Modules/FindMPI/mpiver.f90.in
diff --git a/share/cmake-3.22/Modules/FindMPI/test_mpi.c b/share/cmake-3.22/Modules/FindMPI/test_mpi.c
new file mode 100644
index 0000000..70d7e1d
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindMPI/test_mpi.c
@@ -0,0 +1,38 @@
+#include <mpi.h>
+
+#ifdef __cplusplus
+#  include <cstdio>
+#else
+#  include <stdio.h>
+#endif
+
+#if defined(MPI_VERSION) && defined(MPI_SUBVERSION)
+const static char mpiver_str[] = { 'I', 'N',
+                                   'F', 'O',
+                                   ':', 'M',
+                                   'P', 'I',
+                                   '-', 'V',
+                                   'E', 'R',
+                                   '[', ('0' + MPI_VERSION),
+                                   '.', ('0' + MPI_SUBVERSION),
+                                   ']', '\0' };
+#endif
+
+int main(int argc, char* argv[])
+{
+#if defined(MPI_VERSION) && defined(MPI_SUBVERSION)
+#  ifdef __cplusplus
+  std::puts(mpiver_str);
+#  else
+  puts(mpiver_str);
+#  endif
+#endif
+#ifdef TEST_MPI_MPICXX
+  MPI::MPI_Init(&argc, &argv);
+  MPI::MPI_Finalize();
+#else
+  MPI_Init(&argc, &argv);
+  MPI_Finalize();
+#endif
+  return 0;
+}
diff --git a/share/cmake-3.18/Modules/FindMPI/test_mpi.f90.in b/share/cmake-3.22/Modules/FindMPI/test_mpi.f90.in
similarity index 100%
rename from share/cmake-3.18/Modules/FindMPI/test_mpi.f90.in
rename to share/cmake-3.22/Modules/FindMPI/test_mpi.f90.in
diff --git a/share/cmake-3.22/Modules/FindMatlab.cmake b/share/cmake-3.22/Modules/FindMatlab.cmake
new file mode 100644
index 0000000..0ca593e
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindMatlab.cmake
@@ -0,0 +1,1976 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindMatlab
+----------
+
+Finds Matlab or Matlab Compiler Runtime (MCR) and provides Matlab tools,
+libraries and compilers to CMake.
+
+This package primary purpose is to find the libraries associated with Matlab
+or the MCR in order to be able to build Matlab extensions (mex files). It
+can also be used:
+
+* to run specific commands in Matlab in case Matlab is available
+* for declaring Matlab unit test
+* to retrieve various information from Matlab (mex extensions, versions and
+  release queries, ...)
+
+.. versionadded:: 3.12
+  Added Matlab Compiler Runtime (MCR) support.
+
+The module supports the following components:
+
+* ``ENG_LIBRARY`` and ``MAT_LIBRARY``: respectively the ``ENG`` and ``MAT``
+  libraries of Matlab
+* ``MAIN_PROGRAM`` the Matlab binary program. Note that this component is not
+  available on the MCR version, and will yield an error if the MCR is found
+  instead of the regular Matlab installation.
+* ``MEX_COMPILER`` the MEX compiler.
+* ``MCC_COMPILER`` the MCC compiler, included with the Matlab Compiler add-on.
+* ``SIMULINK`` the Simulink environment.
+
+.. versionadded:: 3.7
+  Added the ``MAT_LIBRARY`` component.
+
+.. versionadded:: 3.13
+  Added the ``ENGINE_LIBRARY``, ``DATAARRAY_LIBRARY`` and ``MCC_COMPILER``
+  components.
+
+.. versionchanged:: 3.14
+  Removed the ``MX_LIBRARY``, ``ENGINE_LIBRARY`` and ``DATAARRAY_LIBRARY``
+  components.  These libraries are found unconditionally.
+
+.. note::
+
+  The version given to the :command:`find_package` directive is the Matlab
+  **version**, which should not be confused with the Matlab *release* name
+  (eg. `R2014`).
+  The :command:`matlab_get_version_from_release_name` and
+  :command:`matlab_get_release_name_from_version` provide a mapping
+  between the release name and the version.
+
+The variable :variable:`Matlab_ROOT_DIR` may be specified in order to give
+the path of the desired Matlab version. Otherwise, the behavior is platform
+specific:
+
+* Windows: The installed versions of Matlab/MCR are retrieved from the
+  Windows registry
+* OS X: The installed versions of Matlab/MCR are given by the MATLAB
+  default installation paths in ``/Application``. If no such application is
+  found, it falls back to the one that might be accessible from the ``PATH``.
+* Unix: The desired Matlab should be accessible from the ``PATH``. This does
+  not work for MCR installation and :variable:`Matlab_ROOT_DIR` should be
+  specified on this platform.
+
+Additional information is provided when :variable:`MATLAB_FIND_DEBUG` is set.
+When a Matlab/MCR installation is found automatically and the ``MATLAB_VERSION``
+is not given, the version is queried from Matlab directly (on Windows this
+may pop up a Matlab window) or from the MCR installation.
+
+The mapping of the release names and the version of Matlab is performed by
+defining pairs (name, version).  The variable
+:variable:`MATLAB_ADDITIONAL_VERSIONS` may be provided before the call to
+the :command:`find_package` in order to handle additional versions.
+
+A Matlab scripts can be added to the set of tests using the
+:command:`matlab_add_unit_test`. By default, the Matlab unit test framework
+will be used (>= 2013a) to run this script, but regular ``.m`` files
+returning an exit code can be used as well (0 indicating a success).
+
+Module Input Variables
+^^^^^^^^^^^^^^^^^^^^^^
+
+Users or projects may set the following variables to configure the module
+behavior:
+
+:variable:`Matlab_ROOT_DIR`
+  the root of the Matlab installation.
+:variable:`MATLAB_FIND_DEBUG`
+  outputs debug information
+:variable:`MATLAB_ADDITIONAL_VERSIONS`
+  additional versions of Matlab for the automatic retrieval of the installed
+  versions.
+
+Imported targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.22
+
+This module defines the following :prop_tgt:`IMPORTED` targets:
+
+``Matlab::mex``
+  The ``mex`` library, always available.
+
+``Matlab::mx``
+  The mx library of Matlab (arrays), always available.
+
+``Matlab::eng``
+  Matlab engine library. Available only if the ``ENG_LIBRARY`` component
+  is requested.
+
+``Matlab::mat``
+  Matlab matrix library. Available only if the ``MAT_LIBRARY`` component
+  is requested.
+
+``Matlab::MatlabEngine``
+  Matlab C++ engine library, always available for R2018a and newer.
+
+``Matlab::MatlabDataArray``
+  Matlab C++ data array library, always available for R2018a and newer.
+
+Variables defined by the module
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Result variables
+""""""""""""""""
+
+``Matlab_FOUND``
+  ``TRUE`` if the Matlab installation is found, ``FALSE``
+  otherwise. All variable below are defined if Matlab is found.
+``Matlab_ROOT_DIR``
+  the final root of the Matlab installation determined by the FindMatlab
+  module.
+``Matlab_MAIN_PROGRAM``
+  the Matlab binary program. Available only if the component ``MAIN_PROGRAM``
+  is given in the :command:`find_package` directive.
+``Matlab_INCLUDE_DIRS``
+ the path of the Matlab libraries headers
+``Matlab_MEX_LIBRARY``
+  library for mex, always available.
+``Matlab_MX_LIBRARY``
+  mx library of Matlab (arrays), always available.
+``Matlab_ENG_LIBRARY``
+  Matlab engine library. Available only if the component ``ENG_LIBRARY``
+  is requested.
+``Matlab_MAT_LIBRARY``
+  Matlab matrix library. Available only if the component ``MAT_LIBRARY``
+  is requested.
+``Matlab_ENGINE_LIBRARY``
+  .. versionadded:: 3.13
+
+  Matlab C++ engine library, always available for R2018a and newer.
+``Matlab_DATAARRAY_LIBRARY``
+  .. versionadded:: 3.13
+
+  Matlab C++ data array library, always available for R2018a and newer.
+``Matlab_LIBRARIES``
+  the whole set of libraries of Matlab
+``Matlab_MEX_COMPILER``
+  the mex compiler of Matlab. Currently not used.
+  Available only if the component ``MEX_COMPILER`` is requested.
+``Matlab_MCC_COMPILER``
+  .. versionadded:: 3.13
+
+  the mcc compiler of Matlab. Included with the Matlab Compiler add-on.
+  Available only if the component ``MCC_COMPILER`` is requested.
+
+Cached variables
+""""""""""""""""
+
+``Matlab_MEX_EXTENSION``
+  the extension of the mex files for the current platform (given by Matlab).
+``Matlab_ROOT_DIR``
+  the location of the root of the Matlab installation found. If this value
+  is changed by the user, the result variables are recomputed.
+
+Provided macros
+^^^^^^^^^^^^^^^
+
+:command:`matlab_get_version_from_release_name`
+  returns the version from the release name
+:command:`matlab_get_release_name_from_version`
+  returns the release name from the Matlab version
+
+Provided functions
+^^^^^^^^^^^^^^^^^^
+
+:command:`matlab_add_mex`
+  adds a target compiling a MEX file.
+:command:`matlab_add_unit_test`
+  adds a Matlab unit test file as a test to the project.
+:command:`matlab_extract_all_installed_versions_from_registry`
+  parses the registry for all Matlab versions. Available on Windows only.
+  The part of the registry parsed is dependent on the host processor
+:command:`matlab_get_all_valid_matlab_roots_from_registry`
+  returns all the possible Matlab or MCR paths, according to a previously
+  given list. Only the existing/accessible paths are kept. This is mainly
+  useful for the searching all possible Matlab installation.
+:command:`matlab_get_mex_suffix`
+  returns the suffix to be used for the mex files
+  (platform/architecture dependent)
+:command:`matlab_get_version_from_matlab_run`
+  returns the version of Matlab/MCR, given the full directory of the Matlab/MCR
+  installation path.
+
+
+Known issues
+^^^^^^^^^^^^
+
+**Symbol clash in a MEX target**
+  By default, every symbols inside a MEX
+  file defined with the command :command:`matlab_add_mex` have hidden
+  visibility, except for the entry point. This is the default behavior of
+  the MEX compiler, which lowers the risk of symbol collision between the
+  libraries shipped with Matlab, and the libraries to which the MEX file is
+  linking to. This is also the default on Windows platforms.
+
+  However, this is not sufficient in certain case, where for instance your
+  MEX file is linking against libraries that are already loaded by Matlab,
+  even if those libraries have different SONAMES.
+  A possible solution is to hide the symbols of the libraries to which the
+  MEX target is linking to. This can be achieved in GNU GCC compilers with
+  the linker option ``-Wl,--exclude-libs,ALL``.
+
+**Tests using GPU resources**
+  in case your MEX file is using the GPU and
+  in order to be able to run unit tests on this MEX file, the GPU resources
+  should be properly released by Matlab. A possible solution is to make
+  Matlab aware of the use of the GPU resources in the session, which can be
+  performed by a command such as ``D = gpuDevice()`` at the beginning of
+  the test script (or via a fixture).
+
+
+Reference
+^^^^^^^^^
+
+.. variable:: Matlab_ROOT_DIR
+
+   The root folder of the Matlab installation. If set before the call to
+   :command:`find_package`, the module will look for the components in that
+   path. If not set, then an automatic search of Matlab
+   will be performed. If set, it should point to a valid version of Matlab.
+
+.. variable:: MATLAB_FIND_DEBUG
+
+   If set, the lookup of Matlab and the intermediate configuration steps are
+   outputted to the console.
+
+.. variable:: MATLAB_ADDITIONAL_VERSIONS
+
+  If set, specifies additional versions of Matlab that may be looked for.
+  The variable should be a list of strings, organized by pairs of release
+  name and versions, such as follows::
+
+    set(MATLAB_ADDITIONAL_VERSIONS
+        "release_name1=corresponding_version1"
+        "release_name2=corresponding_version2"
+        ...
+        )
+
+  Example::
+
+    set(MATLAB_ADDITIONAL_VERSIONS
+        "R2013b=8.2"
+        "R2013a=8.1"
+        "R2012b=8.0")
+
+  The order of entries in this list matters when several versions of
+  Matlab are installed. The priority is set according to the ordering in
+  this list.
+#]=======================================================================]
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+set(_FindMatlab_SELF_DIR "${CMAKE_CURRENT_LIST_DIR}")
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+include(CheckCXXCompilerFlag)
+include(CheckCCompilerFlag)
+
+
+# The currently supported versions. Other version can be added by the user by
+# providing MATLAB_ADDITIONAL_VERSIONS
+if(NOT MATLAB_ADDITIONAL_VERSIONS)
+  set(MATLAB_ADDITIONAL_VERSIONS)
+endif()
+
+set(MATLAB_VERSIONS_MAPPING
+  "R2021b=9.11"
+  "R2021a=9.10"
+  "R2020b=9.9"
+  "R2020a=9.8"
+  "R2019b=9.7"
+  "R2019a=9.6"
+  "R2018b=9.5"
+  "R2018a=9.4"
+  "R2017b=9.3"
+  "R2017a=9.2"
+  "R2016b=9.1"
+  "R2016a=9.0"
+  "R2015b=8.6"
+  "R2015a=8.5"
+  "R2014b=8.4"
+  "R2014a=8.3"
+  "R2013b=8.2"
+  "R2013a=8.1"
+  "R2012b=8.0"
+  "R2012a=7.14"
+  "R2011b=7.13"
+  "R2011a=7.12"
+  "R2010b=7.11"
+
+  ${MATLAB_ADDITIONAL_VERSIONS}
+  )
+
+
+# temporary folder for all Matlab runs
+set(_matlab_temporary_folder ${CMAKE_BINARY_DIR}/Matlab)
+
+if(NOT EXISTS "${_matlab_temporary_folder}")
+  file(MAKE_DIRECTORY "${_matlab_temporary_folder}")
+endif()
+
+#[=======================================================================[.rst:
+.. command:: matlab_get_version_from_release_name
+
+  Returns the version of Matlab (17.58) from a release name (R2017k)
+#]=======================================================================]
+macro(matlab_get_version_from_release_name release_name version_name)
+
+  string(REGEX MATCHALL "${release_name}=([0-9]+\\.?[0-9]*)" _matched ${MATLAB_VERSIONS_MAPPING})
+
+  set(${version_name} "")
+  if(NOT _matched STREQUAL "")
+    set(${version_name} ${CMAKE_MATCH_1})
+  else()
+    message(WARNING "[MATLAB] The release name ${release_name} is not registered")
+  endif()
+  unset(_matched)
+
+endmacro()
+
+
+
+
+
+#[=======================================================================[.rst:
+.. command:: matlab_get_release_name_from_version
+
+  Returns the release name (R2017k) from the version of Matlab (17.58)
+#]=======================================================================]
+macro(matlab_get_release_name_from_version version release_name)
+
+  set(${release_name} "")
+  foreach(_var IN LISTS MATLAB_VERSIONS_MAPPING)
+    string(REGEX MATCHALL "(.+)=${version}" _matched ${_var})
+    if(NOT _matched STREQUAL "")
+      set(${release_name} ${CMAKE_MATCH_1})
+      break()
+    endif()
+  endforeach(_var)
+
+  unset(_var)
+  unset(_matched)
+  if(${release_name} STREQUAL "")
+    message(WARNING "[MATLAB] The version ${version} is not registered")
+  endif()
+
+endmacro()
+
+
+
+
+
+# extracts all the supported release names (R2017k...) of Matlab
+# internal use
+macro(matlab_get_supported_releases list_releases)
+  set(${list_releases})
+  foreach(_var IN LISTS MATLAB_VERSIONS_MAPPING)
+    string(REGEX MATCHALL "(.+)=([0-9]+\\.?[0-9]*)" _matched ${_var})
+    if(NOT _matched STREQUAL "")
+      list(APPEND ${list_releases} ${CMAKE_MATCH_1})
+    endif()
+    unset(_matched)
+    unset(CMAKE_MATCH_1)
+  endforeach(_var)
+  unset(_var)
+endmacro()
+
+
+
+# extracts all the supported versions of Matlab
+# internal use
+macro(matlab_get_supported_versions list_versions)
+  set(${list_versions})
+  foreach(_var IN LISTS MATLAB_VERSIONS_MAPPING)
+    string(REGEX MATCHALL "(.+)=([0-9]+\\.?[0-9]*)" _matched ${_var})
+    if(NOT _matched STREQUAL "")
+      list(APPEND ${list_versions} ${CMAKE_MATCH_2})
+    endif()
+    unset(_matched)
+    unset(CMAKE_MATCH_1)
+  endforeach(_var)
+  unset(_var)
+endmacro()
+
+
+#[=======================================================================[.rst:
+.. command:: matlab_extract_all_installed_versions_from_registry
+
+  This function parses the registry and founds the Matlab versions that are
+  installed. The found versions are returned in `matlab_versions`.
+  Set `win64` to `TRUE` if the 64 bit version of Matlab should be looked for
+  The returned list contains all versions under
+  ``HKLM\\SOFTWARE\\Mathworks\\MATLAB`` and
+  ``HKLM\\SOFTWARE\\Mathworks\\MATLAB Runtime`` or an empty list in case an
+  error occurred (or nothing found).
+
+  .. note::
+
+    Only the versions are provided. No check is made over the existence of the
+    installation referenced in the registry,
+
+#]=======================================================================]
+function(matlab_extract_all_installed_versions_from_registry win64 matlab_versions)
+
+  if(NOT CMAKE_HOST_WIN32)
+    message(FATAL_ERROR "[MATLAB] This macro can only be called by a windows host (call to reg.exe)")
+  endif()
+
+  if(${win64} AND CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "64")
+    set(APPEND_REG "/reg:64")
+  else()
+    set(APPEND_REG "/reg:32")
+  endif()
+
+  set(matlabs_from_registry)
+
+  foreach(_installation_type IN ITEMS "MATLAB" "MATLAB Runtime" "MATLAB Compiler Runtime")
+
+    # /reg:64 should be added on 64 bits capable OSs in order to enable the
+    # redirection of 64 bits applications
+    execute_process(
+      COMMAND reg query "HKEY_LOCAL_MACHINE\\SOFTWARE\\Mathworks\\${_installation_type}" /f * /k ${APPEND_REG}
+      RESULT_VARIABLE resultMatlab
+      OUTPUT_VARIABLE varMatlab
+      ERROR_VARIABLE errMatlab
+      INPUT_FILE NUL
+      )
+
+
+    if(resultMatlab EQUAL 0)
+
+      string(
+        REGEX MATCHALL "${_installation_type}\\\\([0-9]+(\\.[0-9]+)?)"
+        matlab_versions_regex ${varMatlab})
+
+      foreach(match IN LISTS matlab_versions_regex)
+        string(
+          REGEX MATCH "${_installation_type}\\\\(([0-9]+)(\\.([0-9]+))?)"
+          current_match ${match})
+
+        set(_matlab_current_version ${CMAKE_MATCH_1})
+        set(current_matlab_version_major ${CMAKE_MATCH_2})
+        set(current_matlab_version_minor ${CMAKE_MATCH_4})
+        if(NOT current_matlab_version_minor)
+          set(current_matlab_version_minor "0")
+        endif()
+
+        list(APPEND matlabs_from_registry ${_matlab_current_version})
+        unset(_matlab_current_version)
+      endforeach()
+
+    endif()
+  endforeach()
+
+  if(matlabs_from_registry)
+    list(REMOVE_DUPLICATES matlabs_from_registry)
+    list(SORT matlabs_from_registry COMPARE NATURAL)
+    list(REVERSE matlabs_from_registry)
+  endif()
+
+  set(${matlab_versions} ${matlabs_from_registry} PARENT_SCOPE)
+
+endfunction()
+
+
+
+# (internal)
+macro(extract_matlab_versions_from_registry_brute_force matlab_versions)
+  # get the supported versions
+  set(matlab_supported_versions)
+  matlab_get_supported_versions(matlab_supported_versions)
+
+
+  # this is a manual population of the versions we want to look for
+  # this can be done as is, but preferably with the call to
+  # matlab_get_supported_versions and variable
+
+  # populating the versions we want to look for
+  # set(matlab_supported_versions)
+
+  # # Matlab 7
+  # set(matlab_major 7)
+  # foreach(current_matlab_minor RANGE 4 20)
+    # list(APPEND matlab_supported_versions "${matlab_major}.${current_matlab_minor}")
+  # endforeach(current_matlab_minor)
+
+  # # Matlab 8
+  # set(matlab_major 8)
+  # foreach(current_matlab_minor RANGE 0 5)
+    # list(APPEND matlab_supported_versions "${matlab_major}.${current_matlab_minor}")
+  # endforeach(current_matlab_minor)
+
+  # # taking into account the possible additional versions provided by the user
+  # if(DEFINED MATLAB_ADDITIONAL_VERSIONS)
+    # list(APPEND matlab_supported_versions MATLAB_ADDITIONAL_VERSIONS)
+  # endif()
+
+  # we order from more recent to older
+  if(matlab_supported_versions)
+    list(REMOVE_DUPLICATES matlab_supported_versions)
+    list(SORT matlab_supported_versions COMPARE NATURAL)
+    list(REVERSE matlab_supported_versions)
+  endif()
+
+  set(${matlab_versions} ${matlab_supported_versions})
+endmacro()
+
+
+
+
+#[=======================================================================[.rst:
+.. command:: matlab_get_all_valid_matlab_roots_from_registry
+
+  Populates the Matlab root with valid versions of Matlab or
+  Matlab Runtime (MCR).
+  The returned matlab_roots is organized in triplets
+  ``(type,version_number,matlab_root_path)``, where ``type``
+  indicates either ``MATLAB`` or ``MCR``.
+
+  ::
+
+    matlab_get_all_valid_matlab_roots_from_registry(
+        matlab_versions
+        matlab_roots)
+
+  ``matlab_versions``
+    the versions of each of the Matlab or MCR installations
+  ``matlab_roots``
+    the location of each of the Matlab or MCR installations
+#]=======================================================================]
+function(matlab_get_all_valid_matlab_roots_from_registry matlab_versions matlab_roots)
+
+  # The matlab_versions comes either from
+  # extract_matlab_versions_from_registry_brute_force or
+  # matlab_extract_all_installed_versions_from_registry.
+
+  set(_matlab_roots_list )
+  # check for Matlab installations
+  foreach(_matlab_current_version ${matlab_versions})
+    get_filename_component(
+      current_MATLAB_ROOT
+      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\${_matlab_current_version};MATLABROOT]"
+      ABSOLUTE)
+
+    if(EXISTS "${current_MATLAB_ROOT}")
+      list(APPEND _matlab_roots_list "MATLAB" ${_matlab_current_version} ${current_MATLAB_ROOT})
+    endif()
+
+  endforeach()
+
+  # Check for MCR installations
+  foreach(_matlab_current_version ${matlab_versions})
+    get_filename_component(
+      current_MATLAB_ROOT
+      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB Runtime\\${_matlab_current_version};MATLABROOT]"
+      ABSOLUTE)
+
+    # remove the dot
+    string(REPLACE "." "" _matlab_current_version_without_dot "${_matlab_current_version}")
+
+    if(EXISTS "${current_MATLAB_ROOT}")
+      list(APPEND _matlab_roots_list "MCR" ${_matlab_current_version} "${current_MATLAB_ROOT}/v${_matlab_current_version_without_dot}")
+    endif()
+
+  endforeach()
+
+  # Check for old MCR installations
+  foreach(_matlab_current_version ${matlab_versions})
+    get_filename_component(
+      current_MATLAB_ROOT
+      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB Compiler Runtime\\${_matlab_current_version};MATLABROOT]"
+      ABSOLUTE)
+
+    # remove the dot
+    string(REPLACE "." "" _matlab_current_version_without_dot "${_matlab_current_version}")
+
+    if(EXISTS "${current_MATLAB_ROOT}")
+      list(APPEND _matlab_roots_list "MCR" ${_matlab_current_version} "${current_MATLAB_ROOT}/v${_matlab_current_version_without_dot}")
+    endif()
+
+  endforeach()
+  set(${matlab_roots} ${_matlab_roots_list} PARENT_SCOPE)
+endfunction()
+
+#[=======================================================================[.rst:
+.. command:: matlab_get_mex_suffix
+
+  Returns the extension of the mex files (the suffixes).
+  This function should not be called before the appropriate Matlab root has
+  been found.
+
+  ::
+
+    matlab_get_mex_suffix(
+        matlab_root
+        mex_suffix)
+
+  ``matlab_root``
+    the root of the Matlab/MCR installation
+  ``mex_suffix``
+    the variable name in which the suffix will be returned.
+#]=======================================================================]
+function(matlab_get_mex_suffix matlab_root mex_suffix)
+
+  # todo setup the extension properly. Currently I do not know if this is
+  # sufficient for all win32 distributions.
+  # there is also CMAKE_EXECUTABLE_SUFFIX that could be tweaked
+  set(mexext_suffix "")
+  if(WIN32)
+    list(APPEND mexext_suffix ".bat")
+  endif()
+
+  # we first try without suffix, since cmake does not understand a list with
+  # one empty string element
+  find_program(
+    Matlab_MEXEXTENSIONS_PROG
+    NAMES mexext
+    PATHS ${matlab_root}/bin
+    DOC "Matlab MEX extension provider"
+    NO_DEFAULT_PATH
+  )
+
+  foreach(current_mexext_suffix IN LISTS mexext_suffix)
+    if(NOT DEFINED Matlab_MEXEXTENSIONS_PROG OR NOT Matlab_MEXEXTENSIONS_PROG)
+      # this call should populate the cache automatically
+      find_program(
+        Matlab_MEXEXTENSIONS_PROG
+        "mexext${current_mexext_suffix}"
+        PATHS ${matlab_root}/bin
+        DOC "Matlab MEX extension provider"
+        NO_DEFAULT_PATH
+      )
+    endif()
+  endforeach(current_mexext_suffix)
+  if(MATLAB_FIND_DEBUG)
+    message(STATUS "[MATLAB] Determining mex files extensions from '${matlab_root}/bin' with program '${Matlab_MEXEXTENSIONS_PROG}'")
+  endif()
+
+  # the program has been found?
+  if((NOT Matlab_MEXEXTENSIONS_PROG) OR (NOT EXISTS ${Matlab_MEXEXTENSIONS_PROG}))
+    if(MATLAB_FIND_DEBUG)
+      message(WARNING "[MATLAB] Cannot found mexext program. Matlab root is ${matlab_root}")
+    endif()
+    unset(Matlab_MEXEXTENSIONS_PROG CACHE)
+    return()
+  endif()
+
+  set(_matlab_mex_extension)
+
+  set(devnull)
+  if(UNIX)
+    set(devnull INPUT_FILE /dev/null)
+  elseif(WIN32)
+    set(devnull INPUT_FILE NUL)
+  endif()
+
+  if(WIN32)
+    # this environment variable is used to determine the arch on Windows
+    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+      set(ENV{MATLAB_ARCH} "win64")
+    else()
+      set(ENV{MATLAB_ARCH} "win32")
+    endif()
+  endif()
+
+  # this is the preferred way. If this does not work properly (eg. MCR on Windows), then we use our own knowledge
+  execute_process(
+    COMMAND ${Matlab_MEXEXTENSIONS_PROG}
+    OUTPUT_VARIABLE _matlab_mex_extension
+    ERROR_VARIABLE _matlab_mex_extension_error
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+    ${devnull})
+  unset(ENV{MATLAB_ARCH})
+
+  if(_matlab_mex_extension_error)
+    if(WIN32)
+      # this is only for intel architecture
+      if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+        set(_matlab_mex_extension "mexw64")
+      else()
+        set(_matlab_mex_extension "mexw32")
+      endif()
+    endif()
+  endif()
+
+  string(STRIP "${_matlab_mex_extension}"  _matlab_mex_extension)
+  if(MATLAB_FIND_DEBUG)
+    message(STATUS "[MATLAB] '${Matlab_MEXEXTENSIONS_PROG}' : determined extension '${_matlab_mex_extension}' and error string is '${_matlab_mex_extension_error}'")
+  endif()
+
+  unset(Matlab_MEXEXTENSIONS_PROG CACHE)
+  set(${mex_suffix} ${_matlab_mex_extension} PARENT_SCOPE)
+endfunction()
+
+
+
+
+#[=======================================================================[.rst:
+.. command:: matlab_get_version_from_matlab_run
+
+  This function runs Matlab program specified on arguments and extracts its
+  version. If the path provided for the Matlab installation points to an MCR
+  installation, the version is extracted from the installed files.
+
+  ::
+
+    matlab_get_version_from_matlab_run(
+        matlab_binary_path
+        matlab_list_versions)
+
+  ``matlab_binary_path``
+    the location of the `matlab` binary executable
+  ``matlab_list_versions``
+    the version extracted from Matlab
+#]=======================================================================]
+function(matlab_get_version_from_matlab_run matlab_binary_program matlab_list_versions)
+
+  set(${matlab_list_versions} "" PARENT_SCOPE)
+
+  if(MATLAB_FIND_DEBUG)
+    message(STATUS "[MATLAB] Determining the version of Matlab from ${matlab_binary_program}")
+  endif()
+
+  if(EXISTS "${_matlab_temporary_folder}/matlabVersionLog.cmaketmp")
+    if(MATLAB_FIND_DEBUG)
+      message(STATUS "[MATLAB] Removing previous ${_matlab_temporary_folder}/matlabVersionLog.cmaketmp file")
+    endif()
+    file(REMOVE "${_matlab_temporary_folder}/matlabVersionLog.cmaketmp")
+  endif()
+
+
+  # the log file is needed since on windows the command executes in a new
+  # window and it is not possible to get back the answer of Matlab
+  # the -wait command is needed on windows, otherwise the call returns
+  # immediately after the program launches itself.
+  if(WIN32)
+    set(_matlab_additional_commands "-wait")
+  endif()
+
+  set(devnull)
+  if(UNIX)
+    set(devnull INPUT_FILE /dev/null)
+  elseif(WIN32)
+    set(devnull INPUT_FILE NUL)
+  endif()
+
+  # timeout set to 120 seconds, in case it does not start
+  # note as said before OUTPUT_VARIABLE cannot be used in a platform
+  # independent manner however, not setting it would flush the output of Matlab
+  # in the current console (unix variant)
+  execute_process(
+    COMMAND "${matlab_binary_program}" -nosplash -nojvm ${_matlab_additional_commands} -logfile "matlabVersionLog.cmaketmp" -nodesktop -nodisplay -r "version, exit"
+    OUTPUT_VARIABLE _matlab_version_from_cmd_dummy
+    RESULT_VARIABLE _matlab_result_version_call
+    ERROR_VARIABLE _matlab_result_version_call_error
+    TIMEOUT 120
+    WORKING_DIRECTORY "${_matlab_temporary_folder}"
+    ${devnull}
+    )
+
+  if(_matlab_result_version_call MATCHES "timeout")
+    if(MATLAB_FIND_DEBUG)
+      message(WARNING "[MATLAB] Unable to determine the version of Matlab."
+        " Matlab call timed out after 120 seconds.")
+    endif()
+    return()
+  endif()
+
+  if(${_matlab_result_version_call})
+    if(MATLAB_FIND_DEBUG)
+      message(WARNING "[MATLAB] Unable to determine the version of Matlab. Matlab call returned with error ${_matlab_result_version_call}.")
+    endif()
+    return()
+  elseif(NOT EXISTS "${_matlab_temporary_folder}/matlabVersionLog.cmaketmp")
+    if(MATLAB_FIND_DEBUG)
+      message(WARNING "[MATLAB] Unable to determine the version of Matlab. The log file does not exist.")
+    endif()
+    return()
+  endif()
+
+  # if successful, read back the log
+  file(READ "${_matlab_temporary_folder}/matlabVersionLog.cmaketmp" _matlab_version_from_cmd)
+  file(REMOVE "${_matlab_temporary_folder}/matlabVersionLog.cmaketmp")
+
+  set(index -1)
+  string(FIND "${_matlab_version_from_cmd}" "ans" index)
+  if(index EQUAL -1)
+
+    if(MATLAB_FIND_DEBUG)
+      message(WARNING "[MATLAB] Cannot find the version of Matlab returned by the run.")
+    endif()
+
+  else()
+    set(matlab_list_of_all_versions_tmp)
+
+    string(SUBSTRING "${_matlab_version_from_cmd}" ${index} -1 substring_ans)
+    string(
+      REGEX MATCHALL "ans[\r\n\t ]*=[\r\n\t ]*'?([0-9]+(\\.[0-9]+)?)"
+      matlab_versions_regex
+      ${substring_ans})
+    foreach(match IN LISTS matlab_versions_regex)
+      string(
+        REGEX MATCH "ans[\r\n\t ]*=[\r\n\t ]*'?(([0-9]+)(\\.([0-9]+))?)"
+        current_match ${match})
+
+      list(APPEND matlab_list_of_all_versions_tmp ${CMAKE_MATCH_1})
+    endforeach()
+    if(matlab_list_of_all_versions_tmp)
+      list(REMOVE_DUPLICATES matlab_list_of_all_versions_tmp)
+    endif()
+    set(${matlab_list_versions} ${matlab_list_of_all_versions_tmp} PARENT_SCOPE)
+
+  endif()
+
+endfunction()
+
+#[=======================================================================[.rst:
+.. command:: matlab_add_unit_test
+
+  Adds a Matlab unit test to the test set of cmake/ctest.
+  This command requires the component ``MAIN_PROGRAM`` and hence is not
+  available for an MCR installation.
+
+  The unit test uses the Matlab unittest framework (default, available
+  starting Matlab 2013b+) except if the option ``NO_UNITTEST_FRAMEWORK``
+  is given.
+
+  The function expects one Matlab test script file to be given.
+  In the case ``NO_UNITTEST_FRAMEWORK`` is given, the unittest script file
+  should contain the script to be run, plus an exit command with the exit
+  value. This exit value will be passed to the ctest framework (0 success,
+  non 0 failure). Additional arguments accepted by :command:`add_test` can be
+  passed through ``TEST_ARGS`` (eg. ``CONFIGURATION <config> ...``).
+
+  ::
+
+    matlab_add_unit_test(
+        NAME <name>
+        UNITTEST_FILE matlab_file_containing_unittest.m
+        [CUSTOM_TEST_COMMAND matlab_command_to_run_as_test]
+        [UNITTEST_PRECOMMAND matlab_command_to_run]
+        [TIMEOUT timeout]
+        [ADDITIONAL_PATH path1 [path2 ...]]
+        [MATLAB_ADDITIONAL_STARTUP_OPTIONS option1 [option2 ...]]
+        [TEST_ARGS arg1 [arg2 ...]]
+        [NO_UNITTEST_FRAMEWORK]
+        )
+
+  The function arguments are:
+
+  ``NAME``
+    name of the unittest in ctest.
+  ``UNITTEST_FILE``
+    the matlab unittest file. Its path will be automatically
+    added to the Matlab path.
+  ``CUSTOM_TEST_COMMAND``
+    Matlab script command to run as the test.
+    If this is not set, then the following is run:
+    ``runtests('matlab_file_name'), exit(max([ans(1,:).Failed]))``
+    where ``matlab_file_name`` is the ``UNITTEST_FILE`` without the extension.
+  ``UNITTEST_PRECOMMAND``
+    Matlab script command to be ran before the file
+    containing the test (eg. GPU device initialization based on CMake
+    variables).
+  ``TIMEOUT``
+    the test timeout in seconds. Defaults to 180 seconds as the
+    Matlab unit test may hang.
+  ``ADDITIONAL_PATH``
+    a list of paths to add to the Matlab path prior to
+    running the unit test.
+  ``MATLAB_ADDITIONAL_STARTUP_OPTIONS``
+    a list of additional option in order
+    to run Matlab from the command line.
+    ``-nosplash -nodesktop -nodisplay`` are always added.
+  ``TEST_ARGS``
+    Additional options provided to the add_test command. These
+    options are added to the default options (eg. "CONFIGURATIONS Release")
+  ``NO_UNITTEST_FRAMEWORK``
+    when set, indicates that the test should not
+    use the unittest framework of Matlab (available for versions >= R2013a).
+  ``WORKING_DIRECTORY``
+    This will be the working directory for the test. If specified it will
+    also be the output directory used for the log file of the test run.
+    If not specified the temporary directory ``${CMAKE_BINARY_DIR}/Matlab`` will
+    be used as the working directory and the log location.
+
+#]=======================================================================]
+function(matlab_add_unit_test)
+
+  if(NOT Matlab_MAIN_PROGRAM)
+    message(FATAL_ERROR "[MATLAB] This functionality needs the MAIN_PROGRAM component (not default)")
+  endif()
+
+  set(options NO_UNITTEST_FRAMEWORK)
+  set(oneValueArgs NAME UNITTEST_FILE TIMEOUT WORKING_DIRECTORY
+    UNITTEST_PRECOMMAND CUSTOM_TEST_COMMAND)
+  set(multiValueArgs ADDITIONAL_PATH MATLAB_ADDITIONAL_STARTUP_OPTIONS TEST_ARGS)
+
+  set(prefix _matlab_unittest_prefix)
+  cmake_parse_arguments(PARSE_ARGV 0 ${prefix} "${options}" "${oneValueArgs}" "${multiValueArgs}" )
+
+  if(NOT ${prefix}_NAME)
+    message(FATAL_ERROR "[MATLAB] The Matlab test name cannot be empty")
+  endif()
+
+  add_test(NAME ${${prefix}_NAME}
+           COMMAND ${CMAKE_COMMAND}
+            "-Dtest_name=${${prefix}_NAME}"
+            "-Dadditional_paths=${${prefix}_ADDITIONAL_PATH}"
+            "-Dtest_timeout=${${prefix}_TIMEOUT}"
+            "-Doutput_directory=${_matlab_temporary_folder}"
+            "-Dworking_directory=${${prefix}_WORKING_DIRECTORY}"
+            "-DMatlab_PROGRAM=${Matlab_MAIN_PROGRAM}"
+            "-Dno_unittest_framework=${${prefix}_NO_UNITTEST_FRAMEWORK}"
+            "-DMatlab_ADDITIONAL_STARTUP_OPTIONS=${${prefix}_MATLAB_ADDITIONAL_STARTUP_OPTIONS}"
+            "-Dunittest_file_to_run=${${prefix}_UNITTEST_FILE}"
+            "-Dcustom_Matlab_test_command=${${prefix}_CUSTOM_TEST_COMMAND}"
+            "-Dcmd_to_run_before_test=${${prefix}_UNITTEST_PRECOMMAND}"
+            -P ${_FindMatlab_SELF_DIR}/MatlabTestsRedirect.cmake
+           ${${prefix}_TEST_ARGS}
+           ${${prefix}_UNPARSED_ARGUMENTS}
+           )
+endfunction()
+
+
+#[=======================================================================[.rst:
+.. command:: matlab_add_mex
+
+  Adds a Matlab MEX target.
+  This commands compiles the given sources with the current tool-chain in
+  order to produce a MEX file. The final name of the produced output may be
+  specified, as well as additional link libraries, and a documentation entry
+  for the MEX file. Remaining arguments of the call are passed to the
+  :command:`add_library` or :command:`add_executable` command.
+
+  ::
+
+     matlab_add_mex(
+         NAME <name>
+         [EXECUTABLE | MODULE | SHARED]
+         SRC src1 [src2 ...]
+         [OUTPUT_NAME output_name]
+         [DOCUMENTATION file.txt]
+         [LINK_TO target1 target2 ...]
+         [R2017b | R2018a]
+         [EXCLUDE_FROM_ALL]
+         [...]
+     )
+
+  ``NAME``
+    name of the target.
+  ``SRC``
+    list of source files.
+  ``LINK_TO``
+    a list of additional link dependencies.  The target links to ``libmex``
+    and ``libmx`` by default.
+  ``OUTPUT_NAME``
+    if given, overrides the default name. The default name is
+    the name of the target without any prefix and
+    with ``Matlab_MEX_EXTENSION`` suffix.
+  ``DOCUMENTATION``
+    if given, the file ``file.txt`` will be considered as
+    being the documentation file for the MEX file. This file is copied into
+    the same folder without any processing, with the same name as the final
+    mex file, and with extension `.m`. In that case, typing ``help <name>``
+    in Matlab prints the documentation contained in this file.
+  ``R2017b`` or ``R2018a``
+    .. versionadded:: 3.14
+
+    May be given to specify the version of the C API
+    to use: ``R2017b`` specifies the traditional (separate complex) C API,
+    and corresponds to the ``-R2017b`` flag for the `mex` command. ``R2018a``
+    specifies the new interleaved complex C API, and corresponds to the
+    ``-R2018a`` flag for the `mex` command. Ignored if MATLAB version prior
+    to R2018a. Defaults to ``R2017b``.
+
+  ``MODULE`` or ``SHARED``
+    .. versionadded:: 3.7
+
+    May be given to specify the type of library to be
+    created.
+
+  ``EXECUTABLE``
+    .. versionadded:: 3.7
+
+    May be given to create an executable instead of
+    a library. If no type is given explicitly, the type is ``SHARED``.
+  ``EXCLUDE_FROM_ALL``
+    This option has the same meaning as for :prop_tgt:`EXCLUDE_FROM_ALL` and
+    is forwarded to :command:`add_library` or :command:`add_executable`
+    commands.
+
+  The documentation file is not processed and should be in the following
+  format:
+
+  ::
+
+    % This is the documentation
+    function ret = mex_target_output_name(input1)
+
+#]=======================================================================]
+function(matlab_add_mex)
+
+  if(NOT WIN32)
+    # we do not need all this on Windows
+    # pthread options
+    if(CMAKE_CXX_COMPILER_LOADED)
+      check_cxx_compiler_flag(-pthread HAS_MINUS_PTHREAD)
+    elseif(CMAKE_C_COMPILER_LOADED)
+      check_c_compiler_flag(-pthread HAS_MINUS_PTHREAD)
+    endif()
+    # we should use try_compile instead, the link flags are discarded from
+    # this compiler_flag function.
+    #check_cxx_compiler_flag(-Wl,--exclude-libs,ALL HAS_SYMBOL_HIDING_CAPABILITY)
+
+  endif()
+
+  set(options EXECUTABLE MODULE SHARED R2017b R2018a EXCLUDE_FROM_ALL)
+  set(oneValueArgs NAME DOCUMENTATION OUTPUT_NAME)
+  set(multiValueArgs LINK_TO SRC)
+
+  set(prefix _matlab_addmex_prefix)
+  cmake_parse_arguments(${prefix} "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
+
+  if(NOT ${prefix}_NAME)
+    message(FATAL_ERROR "[MATLAB] The MEX target name cannot be empty")
+  endif()
+
+  if(NOT ${prefix}_OUTPUT_NAME)
+    set(${prefix}_OUTPUT_NAME ${${prefix}_NAME})
+  endif()
+
+  if(NOT Matlab_VERSION_STRING VERSION_LESS "9.1") # For 9.1 (R2016b) and newer, add version source file
+    # Add the correct version file depending on which languages are enabled in the project
+    if(CMAKE_C_COMPILER_LOADED)
+      # If C is enabled, use the .c file as it will work fine also with C++
+      set(MEX_VERSION_FILE "${Matlab_ROOT_DIR}/extern/version/c_mexapi_version.c")
+    elseif(CMAKE_CXX_COMPILER_LOADED)
+      # If C is not enabled, check if CXX is enabled and use the .cpp file
+      # to avoid that the .c file is silently ignored
+      set(MEX_VERSION_FILE "${Matlab_ROOT_DIR}/extern/version/cpp_mexapi_version.cpp")
+    else()
+      # If neither C or CXX is enabled, warn because we cannot add the source.
+      # TODO: add support for fortran mex files
+      message(WARNING "[MATLAB] matlab_add_mex requires that at least C or CXX are enabled languages")
+    endif()
+  endif()
+
+  # For 9.4 (R2018a) and newer, add API macro.
+  # Add it for unknown versions too, just in case.
+  if(NOT Matlab_VERSION_STRING VERSION_LESS "9.4"
+      OR Matlab_VERSION_STRING STREQUAL "unknown")
+    if(${${prefix}_R2018a})
+      set(MEX_API_MACRO "MATLAB_DEFAULT_RELEASE=R2018a")
+    else()
+      set(MEX_API_MACRO "MATLAB_DEFAULT_RELEASE=R2017b")
+    endif()
+  endif()
+
+  set(_option_EXCLUDE_FROM_ALL)
+  if(${prefix}_EXCLUDE_FROM_ALL)
+    set(_option_EXCLUDE_FROM_ALL "EXCLUDE_FROM_ALL")
+  endif()
+
+  if(${prefix}_EXECUTABLE)
+    add_executable(${${prefix}_NAME}
+      ${_option_EXCLUDE_FROM_ALL}
+      ${${prefix}_SRC}
+      ${MEX_VERSION_FILE}
+      ${${prefix}_DOCUMENTATION}
+      ${${prefix}_UNPARSED_ARGUMENTS})
+  else()
+    if(${prefix}_MODULE)
+      set(type MODULE)
+    else()
+      set(type SHARED)
+    endif()
+
+    add_library(${${prefix}_NAME}
+      ${type}
+      ${_option_EXCLUDE_FROM_ALL}
+      ${${prefix}_SRC}
+      ${MEX_VERSION_FILE}
+      ${${prefix}_DOCUMENTATION}
+      ${${prefix}_UNPARSED_ARGUMENTS})
+  endif()
+
+  target_include_directories(${${prefix}_NAME} PRIVATE ${Matlab_INCLUDE_DIRS})
+
+  if(Matlab_HAS_CPP_API)
+    if(Matlab_ENGINE_LIBRARY)
+      target_link_libraries(${${prefix}_NAME} ${Matlab_ENGINE_LIBRARY})
+    endif()
+    if(Matlab_DATAARRAY_LIBRARY)
+      target_link_libraries(${${prefix}_NAME} ${Matlab_DATAARRAY_LIBRARY})
+    endif()
+  endif()
+
+  target_link_libraries(${${prefix}_NAME} ${Matlab_MEX_LIBRARY} ${Matlab_MX_LIBRARY} ${${prefix}_LINK_TO})
+  set_target_properties(${${prefix}_NAME}
+      PROPERTIES
+        PREFIX ""
+        OUTPUT_NAME ${${prefix}_OUTPUT_NAME}
+        SUFFIX ".${Matlab_MEX_EXTENSION}")
+
+  target_compile_definitions(${${prefix}_NAME} PRIVATE ${MEX_API_MACRO} MATLAB_MEX_FILE)
+
+  # documentation
+  if(NOT ${${prefix}_DOCUMENTATION} STREQUAL "")
+    get_target_property(output_name ${${prefix}_NAME} OUTPUT_NAME)
+    add_custom_command(
+      TARGET ${${prefix}_NAME}
+      PRE_BUILD
+      COMMAND ${CMAKE_COMMAND} -E copy_if_different ${${prefix}_DOCUMENTATION} $<TARGET_FILE_DIR:${${prefix}_NAME}>/${output_name}.m
+      COMMENT "[MATLAB] Copy ${${prefix}_NAME} documentation file into the output folder"
+    )
+  endif() # documentation
+
+  # entry point in the mex file + taking care of visibility and symbol clashes.
+  if(WIN32)
+
+    if (MSVC)
+
+      set(_link_flags "${_link_flags} /EXPORT:mexFunction")
+      if(NOT Matlab_VERSION_STRING VERSION_LESS "9.1") # For 9.1 (R2016b) and newer, export version
+        set(_link_flags "${_link_flags} /EXPORT:mexfilerequiredapiversion")
+      endif()
+
+      set_property(TARGET ${${prefix}_NAME} APPEND PROPERTY LINK_FLAGS ${_link_flags})
+
+    endif() # No other compiler currently supported on Windows.
+
+    set_target_properties(${${prefix}_NAME}
+      PROPERTIES
+        DEFINE_SYMBOL "DLL_EXPORT_SYM=__declspec(dllexport)")
+
+  else()
+
+    if(Matlab_VERSION_STRING VERSION_LESS "9.1") # For versions prior to 9.1 (R2016b)
+      set(_ver_map_files ${Matlab_EXTERN_LIBRARY_DIR}/mexFunction.map)
+    else()                                          # For 9.1 (R2016b) and newer
+      set(_ver_map_files ${Matlab_EXTERN_LIBRARY_DIR}/c_exportsmexfileversion.map)
+    endif()
+
+    if(NOT Matlab_VERSION_STRING VERSION_LESS "9.5") # For 9.5 (R2018b) (and newer?)
+      target_compile_options(${${prefix}_NAME} PRIVATE "-fvisibility=default")
+      # This one is weird, it might be a bug in <mex.h> for R2018b. When compiling with
+      # -fvisibility=hidden, the symbol `mexFunction` cannot be exported. Reading the
+      # source code for <mex.h>, it seems that the preprocessor macro `MW_NEEDS_VERSION_H`
+      # needs to be defined for `__attribute__((visibility("default")))` to be added
+      # in front of the declaration of `mexFunction`. In previous versions of MATLAB this
+      # was not the case, there `DLL_EXPORT_SYM` needed to be defined.
+      # Adding `-fvisibility=hidden` to the `mex` command causes the build to fail.
+      # TODO: Check that this is still necessary in R2019a when it comes out.
+    endif()
+
+    if(APPLE)
+
+      if(Matlab_HAS_CPP_API)
+        list(APPEND _ver_map_files ${Matlab_EXTERN_LIBRARY_DIR}/cppMexFunction.map) # This one doesn't exist on Linux
+        set(_link_flags "${_link_flags} -Wl,-U,_mexCreateMexFunction -Wl,-U,_mexDestroyMexFunction -Wl,-U,_mexFunctionAdapter")
+        # On MacOS, the MEX command adds the above, without it the link breaks
+        # because we indiscriminately use "cppMexFunction.map" even for C API MEX-files.
+      endif()
+
+      set(_export_flag_name -exported_symbols_list)
+
+    else() # Linux
+
+      if(HAS_MINUS_PTHREAD)
+        # Apparently, compiling with -pthread generated the proper link flags
+        # and some defines at compilation
+        target_compile_options(${${prefix}_NAME} PRIVATE "-pthread")
+      endif()
+
+      set(_link_flags "${_link_flags} -Wl,--as-needed")
+
+      set(_export_flag_name --version-script)
+
+    endif()
+
+    foreach(_file ${_ver_map_files})
+      set(_link_flags "${_link_flags} -Wl,${_export_flag_name},${_file}")
+    endforeach()
+
+    # The `mex` command doesn't add this define. It is specified here in order
+    # to export the symbol in case the client code decides to hide its symbols
+    set_target_properties(${${prefix}_NAME}
+      PROPERTIES
+        DEFINE_SYMBOL "DLL_EXPORT_SYM=__attribute__((visibility(\"default\")))"
+        LINK_FLAGS "${_link_flags}"
+    )
+
+  endif()
+
+endfunction()
+
+
+# (internal)
+# Used to get the version of matlab, using caching. This basically transforms the
+# output of the root list, with possible unknown version, to a version
+# This can possibly run Matlab for extracting the version.
+function(_Matlab_get_version_from_root matlab_root matlab_or_mcr matlab_known_version matlab_final_version)
+
+  # if the version is not trivial, we query matlab (if not MCR) for that
+  # we keep track of the location of matlab that induced this version
+  #if(NOT DEFINED Matlab_PROG_VERSION_STRING_AUTO_DETECT)
+  #  set(Matlab_PROG_VERSION_STRING_AUTO_DETECT "" CACHE INTERNAL "internal matlab location for the discovered version")
+  #endif()
+
+  if(NOT matlab_known_version STREQUAL "NOTFOUND")
+    # the version is known, we just return it
+    set(${matlab_final_version} ${matlab_known_version} PARENT_SCOPE)
+    set(Matlab_VERSION_STRING_INTERNAL ${matlab_known_version} CACHE INTERNAL "Matlab version (automatically determined)" FORCE)
+    return()
+  endif()
+
+  if(matlab_or_mcr STREQUAL "UNKNOWN")
+    if(MATLAB_FIND_DEBUG)
+      message(WARNING "[MATLAB] Determining Matlab or MCR")
+    endif()
+
+    if(EXISTS "${matlab_root}/appdata/version.xml")
+      # we inspect the application version.xml file that contains the product information
+      file(STRINGS "${matlab_root}/appdata/version.xml" productinfo_string NEWLINE_CONSUME)
+      string(REGEX MATCH "<installedProductData.*displayedString=\"([a-zA-Z ]+)\".*/>"
+             product_reg_match
+             ${productinfo_string}
+            )
+
+      # default fallback to Matlab
+      set(matlab_or_mcr "MATLAB")
+      if(NOT CMAKE_MATCH_1 STREQUAL "")
+        string(TOLOWER "${CMAKE_MATCH_1}" product_reg_match)
+
+        if(product_reg_match STREQUAL "matlab runtime")
+          set(matlab_or_mcr "MCR")
+        endif()
+      endif()
+    endif()
+
+    if(MATLAB_FIND_DEBUG)
+      message(WARNING "[MATLAB] '${matlab_root}' contains the '${matlab_or_mcr}'")
+    endif()
+  endif()
+
+  # UNKNOWN is the default behavior in case we
+  # - have an erroneous matlab_root
+  # - have an initial 'UNKNOWN'
+  if(matlab_or_mcr STREQUAL "MATLAB" OR matlab_or_mcr STREQUAL "UNKNOWN")
+    # MATLAB versions
+    set(_matlab_current_program ${Matlab_MAIN_PROGRAM})
+
+    # do we already have a matlab program?
+    if(NOT _matlab_current_program)
+
+      set(_find_matlab_options)
+      if(matlab_root AND EXISTS ${matlab_root})
+        set(_find_matlab_options PATHS ${matlab_root} ${matlab_root}/bin NO_DEFAULT_PATH)
+      endif()
+
+      find_program(
+          _matlab_current_program
+          matlab
+          ${_find_matlab_options}
+          DOC "Matlab main program"
+        )
+    endif()
+
+    if(NOT _matlab_current_program OR NOT EXISTS ${_matlab_current_program})
+      # if not found, clear the dependent variables
+      if(MATLAB_FIND_DEBUG)
+        message(WARNING "[MATLAB] Cannot find the main matlab program under ${matlab_root}")
+      endif()
+      set(Matlab_PROG_VERSION_STRING_AUTO_DETECT "" CACHE INTERNAL "internal matlab location for the discovered version" FORCE)
+      set(Matlab_VERSION_STRING_INTERNAL "" CACHE INTERNAL "internal matlab location for the discovered version" FORCE)
+      unset(_matlab_current_program)
+      unset(_matlab_current_program CACHE)
+      return()
+    endif()
+
+    # full real path for path comparison
+    get_filename_component(_matlab_main_real_path_tmp "${_matlab_current_program}" REALPATH)
+    unset(_matlab_current_program)
+    unset(_matlab_current_program CACHE)
+
+    # is it the same as the previous one?
+    if(_matlab_main_real_path_tmp STREQUAL Matlab_PROG_VERSION_STRING_AUTO_DETECT)
+      set(${matlab_final_version} ${Matlab_VERSION_STRING_INTERNAL} PARENT_SCOPE)
+      return()
+    endif()
+
+    # update the location of the program
+    set(Matlab_PROG_VERSION_STRING_AUTO_DETECT
+        ${_matlab_main_real_path_tmp}
+        CACHE INTERNAL "internal matlab location for the discovered version" FORCE)
+
+    set(matlab_list_of_all_versions)
+    matlab_get_version_from_matlab_run("${Matlab_PROG_VERSION_STRING_AUTO_DETECT}" matlab_list_of_all_versions)
+
+    list(LENGTH matlab_list_of_all_versions list_of_all_versions_length)
+    if(list_of_all_versions_length GREATER 0)
+      list(GET matlab_list_of_all_versions 0 _matlab_version_tmp)
+    else()
+      set(_matlab_version_tmp "unknown")
+    endif()
+
+    # set the version into the cache
+    set(Matlab_VERSION_STRING_INTERNAL ${_matlab_version_tmp} CACHE INTERNAL "Matlab version (automatically determined)" FORCE)
+
+    # warning, just in case several versions found (should not happen)
+    if((list_of_all_versions_length GREATER 1) AND MATLAB_FIND_DEBUG)
+      message(WARNING "[MATLAB] Found several versions, taking the first one (versions found ${matlab_list_of_all_versions})")
+    endif()
+
+    # return the updated value
+    set(${matlab_final_version} ${Matlab_VERSION_STRING_INTERNAL} PARENT_SCOPE)
+  elseif(EXISTS "${matlab_root}/VersionInfo.xml")
+    # MCR
+    # we cannot run anything in order to extract the version. We assume that the file
+    # VersionInfo.xml exists under the MatlabRoot, we look for it and extract the version from there
+    set(_matlab_version_tmp "unknown")
+    file(STRINGS "${matlab_root}/VersionInfo.xml" versioninfo_string NEWLINE_CONSUME)
+
+    if(versioninfo_string)
+      # parses "<version>9.2.0.538062</version>"
+      string(REGEX MATCH "<version>(.*)</version>"
+             version_reg_match
+             ${versioninfo_string}
+            )
+
+      if(CMAKE_MATCH_1 MATCHES "(([0-9])\\.([0-9]))[\\.0-9]*")
+        set(_matlab_version_tmp "${CMAKE_MATCH_1}")
+      endif()
+    endif()
+    set(${matlab_final_version} "${_matlab_version_tmp}" PARENT_SCOPE)
+    set(Matlab_VERSION_STRING_INTERNAL
+        "${_matlab_version_tmp}"
+        CACHE INTERNAL "Matlab (MCR) version (automatically determined)"
+        FORCE)
+  endif() # Matlab or MCR
+
+endfunction()
+
+
+# Utility function for finding Matlab or MCR on Win32
+function(_Matlab_find_instances_win32 matlab_roots)
+  # On WIN32, we look for Matlab installation in the registry
+  # if unsuccessful, we look for all known revision and filter the existing
+  # ones.
+
+  # testing if we are able to extract the needed information from the registry
+  set(_matlab_versions_from_registry)
+
+  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+    set(_matlab_win64 ON)
+  else()
+    set(_matlab_win64 OFF)
+  endif()
+
+  matlab_extract_all_installed_versions_from_registry(_matlab_win64 _matlab_versions_from_registry)
+
+  # the returned list is empty, doing the search on all known versions
+  if(NOT _matlab_versions_from_registry)
+    if(MATLAB_FIND_DEBUG)
+      message(STATUS "[MATLAB] Search for Matlab from the registry unsuccessful, testing all supported versions")
+    endif()
+    extract_matlab_versions_from_registry_brute_force(_matlab_versions_from_registry)
+  endif()
+
+  # filtering the results with the registry keys
+  matlab_get_all_valid_matlab_roots_from_registry("${_matlab_versions_from_registry}" _matlab_possible_roots)
+  set(${matlab_roots} ${_matlab_possible_roots} PARENT_SCOPE)
+
+endfunction()
+
+# Utility function for finding Matlab or MCR on OSX
+function(_Matlab_find_instances_osx matlab_roots)
+
+  set(_matlab_possible_roots)
+  # on mac, we look for the /Application paths
+  # this corresponds to the behavior on Windows. On Linux, we do not have
+  # any other guess.
+  matlab_get_supported_releases(_matlab_releases)
+  if(MATLAB_FIND_DEBUG)
+    message(STATUS "[MATLAB] Matlab supported versions ${_matlab_releases}. If more version should be supported "
+                 "the variable MATLAB_ADDITIONAL_VERSIONS can be set according to the documentation")
+  endif()
+
+  foreach(_matlab_current_release IN LISTS _matlab_releases)
+    matlab_get_version_from_release_name("${_matlab_current_release}" _matlab_current_version)
+    string(REPLACE "." "" _matlab_current_version_without_dot "${_matlab_current_version}")
+    set(_matlab_base_path "/Applications/MATLAB_${_matlab_current_release}.app")
+
+    # Check Matlab, has precedence over MCR
+    if(EXISTS ${_matlab_base_path})
+      if(MATLAB_FIND_DEBUG)
+        message(STATUS "[MATLAB] Found version ${_matlab_current_release} (${_matlab_current_version}) in ${_matlab_base_path}")
+      endif()
+      list(APPEND _matlab_possible_roots "MATLAB" ${_matlab_current_version} ${_matlab_base_path})
+    endif()
+
+    # Checks MCR
+    set(_mcr_path "/Applications/MATLAB/MATLAB_Runtime/v${_matlab_current_version_without_dot}")
+    if(EXISTS "${_mcr_path}")
+      if(MATLAB_FIND_DEBUG)
+        message(STATUS "[MATLAB] Found MCR version ${_matlab_current_release} (${_matlab_current_version}) in ${_mcr_path}")
+      endif()
+      list(APPEND _matlab_possible_roots "MCR" ${_matlab_current_version} ${_mcr_path})
+    endif()
+
+  endforeach()
+  set(${matlab_roots} ${_matlab_possible_roots} PARENT_SCOPE)
+
+endfunction()
+
+# Utility function for finding Matlab or MCR from the PATH
+function(_Matlab_find_instances_from_path matlab_roots)
+
+  set(_matlab_possible_roots)
+
+  # At this point, we have no other choice than trying to find it from PATH.
+  # If set by the user, this won't change.
+  find_program(
+    _matlab_main_tmp
+    NAMES matlab)
+
+  if(_matlab_main_tmp)
+    # we then populate the list of roots, with empty version
+    if(MATLAB_FIND_DEBUG)
+      message(STATUS "[MATLAB] matlab found from PATH: ${_matlab_main_tmp}")
+    endif()
+
+    # resolve symlinks
+    get_filename_component(_matlab_current_location "${_matlab_main_tmp}" REALPATH)
+
+    # get the directory (the command below has to be run twice)
+    # this will be the matlab root
+    get_filename_component(_matlab_current_location "${_matlab_current_location}" DIRECTORY)
+    get_filename_component(_matlab_current_location "${_matlab_current_location}" DIRECTORY) # Matlab should be in bin
+
+    # We found the Matlab program
+    list(APPEND _matlab_possible_roots "MATLAB" "NOTFOUND" ${_matlab_current_location})
+
+    # we remove this from the CACHE
+    unset(_matlab_main_tmp CACHE)
+  else()
+    find_program(
+      _matlab_mex_tmp
+      NAMES mex)
+    if(_matlab_mex_tmp)
+      # we then populate the list of roots, with empty version
+      if(MATLAB_FIND_DEBUG)
+        message(STATUS "[MATLAB] mex compiler found from PATH: ${_matlab_mex_tmp}")
+      endif()
+
+      # resolve symlinks
+      get_filename_component(_mex_current_location "${_matlab_mex_tmp}" REALPATH)
+
+      # get the directory (the command below has to be run twice)
+      # this will be the matlab root
+      get_filename_component(_mex_current_location "${_mex_current_location}" DIRECTORY)
+      get_filename_component(_mex_current_location "${_mex_current_location}" DIRECTORY) # Matlab Runtime mex compiler should be in bin
+
+      # We found the Matlab program
+      list(APPEND _matlab_possible_roots "MCR" "NOTFOUND" ${_mex_current_location})
+
+      unset(_matlab_mex_tmp CACHE)
+    else()
+      if(MATLAB_FIND_DEBUG)
+        message(STATUS "[MATLAB] mex compiler not found")
+      endif()
+    endif()
+
+
+  endif()
+
+  set(${matlab_roots} ${_matlab_possible_roots} PARENT_SCOPE)
+endfunction()
+
+
+# ###################################
+# Exploring the possible Matlab_ROOTS
+
+# this variable will get all Matlab installations found in the current system.
+set(_matlab_possible_roots)
+
+if(Matlab_ROOT_DIR)
+  # if the user specifies a possible root, we keep this one
+
+  if(NOT EXISTS "${Matlab_ROOT_DIR}")
+    # if Matlab_ROOT_DIR specified but erroneous
+    if(MATLAB_FIND_DEBUG)
+      message(WARNING "[MATLAB] the specified path for Matlab_ROOT_DIR does not exist (${Matlab_ROOT_DIR})")
+    endif()
+  else()
+    # NOTFOUND indicates the code below to search for the version automatically
+    if("${Matlab_VERSION_STRING_INTERNAL}" STREQUAL "")
+      list(APPEND _matlab_possible_roots "UNKNOWN" "NOTFOUND" ${Matlab_ROOT_DIR}) # empty version, empty MCR/Matlab indication
+    else()
+      list(APPEND _matlab_possible_roots "UNKNOWN" ${Matlab_VERSION_STRING_INTERNAL} ${Matlab_ROOT_DIR}) # cached version
+    endif()
+  endif()
+else()
+
+  # if the user does not specify the possible installation root, we look for
+  # one installation using the appropriate heuristics.
+  # There is apparently no standard way on Linux.
+  if(CMAKE_HOST_WIN32)
+    _Matlab_find_instances_win32(_matlab_possible_roots_win32)
+    list(APPEND _matlab_possible_roots ${_matlab_possible_roots_win32})
+  elseif(APPLE)
+    _Matlab_find_instances_osx(_matlab_possible_roots_osx)
+    list(APPEND _matlab_possible_roots ${_matlab_possible_roots_osx})
+  endif()
+endif()
+
+
+list(LENGTH _matlab_possible_roots _numbers_of_matlab_roots)
+if(_numbers_of_matlab_roots EQUAL 0)
+  # if we have not found anything, we fall back on the PATH
+  _Matlab_find_instances_from_path(_matlab_possible_roots)
+endif()
+
+
+if(MATLAB_FIND_DEBUG)
+  message(STATUS "[MATLAB] Matlab root folders are ${_matlab_possible_roots}")
+endif()
+
+
+
+
+
+# take the first possible Matlab root
+list(LENGTH _matlab_possible_roots _numbers_of_matlab_roots)
+set(Matlab_VERSION_STRING "NOTFOUND")
+set(Matlab_Or_MCR "UNKNOWN")
+if(_numbers_of_matlab_roots GREATER 0)
+  if(Matlab_FIND_VERSION_EXACT)
+    list(FIND _matlab_possible_roots ${Matlab_FIND_VERSION} _list_index)
+    if(_list_index LESS 0)
+      set(_list_index 1)
+    endif()
+
+    math(EXPR _matlab_or_mcr_index "${_list_index} - 1")
+    math(EXPR _matlab_root_dir_index "${_list_index} + 1")
+
+    list(GET _matlab_possible_roots ${_matlab_or_mcr_index} Matlab_Or_MCR)
+    list(GET _matlab_possible_roots ${_list_index} Matlab_VERSION_STRING)
+    list(GET _matlab_possible_roots ${_matlab_root_dir_index} Matlab_ROOT_DIR)
+  elseif(DEFINED Matlab_FIND_VERSION)
+    foreach(_matlab_root_index RANGE 1 ${_numbers_of_matlab_roots} 3)
+      list(GET _matlab_possible_roots ${_matlab_root_index} _matlab_root_version)
+      if(_matlab_root_version VERSION_GREATER_EQUAL Matlab_FIND_VERSION)
+        set(_list_index ${_matlab_root_index})
+        break()
+      endif()
+    endforeach()
+
+    if(_list_index LESS 0)
+      set(_list_index 1)
+    endif()
+
+    math(EXPR _matlab_or_mcr_index "${_list_index} - 1")
+    math(EXPR _matlab_root_dir_index "${_list_index} + 1")
+    list(GET _matlab_possible_roots ${_matlab_or_mcr_index} Matlab_Or_MCR)
+    list(GET _matlab_possible_roots ${_list_index} Matlab_VERSION_STRING)
+    list(GET _matlab_possible_roots ${_matlab_root_dir_index} Matlab_ROOT_DIR)
+    # adding a warning in case of ambiguity
+    if(_numbers_of_matlab_roots GREATER 3 AND MATLAB_FIND_DEBUG)
+      message(WARNING "[MATLAB] Found several distributions of Matlab. Setting the current version to ${Matlab_VERSION_STRING} (located ${Matlab_ROOT_DIR})."
+                      " If this is not the desired behavior, use the EXACT keyword or provide the -DMatlab_ROOT_DIR=... on the command line")
+    endif()
+  else()
+    list(GET _matlab_possible_roots 0 Matlab_Or_MCR)
+    list(GET _matlab_possible_roots 1 Matlab_VERSION_STRING)
+    list(GET _matlab_possible_roots 2 Matlab_ROOT_DIR)
+
+    # adding a warning in case of ambiguity
+    if(_numbers_of_matlab_roots GREATER 3 AND MATLAB_FIND_DEBUG)
+      message(WARNING "[MATLAB] Found several distributions of Matlab. Setting the current version to ${Matlab_VERSION_STRING} (located ${Matlab_ROOT_DIR})."
+                      " If this is not the desired behavior, use the EXACT keyword or provide the -DMatlab_ROOT_DIR=... on the command line")
+    endif()
+  endif()
+endif()
+
+
+# check if the root changed wrt. the previous defined one, if so
+# clear all the cached variables for being able to reconfigure properly
+if(DEFINED Matlab_ROOT_DIR_LAST_CACHED)
+
+  if(NOT Matlab_ROOT_DIR_LAST_CACHED STREQUAL Matlab_ROOT_DIR)
+    set(_Matlab_cached_vars
+        Matlab_VERSION_STRING
+        Matlab_INCLUDE_DIRS
+        Matlab_MEX_LIBRARY
+        Matlab_MEX_COMPILER
+        Matlab_MCC_COMPILER
+        Matlab_MAIN_PROGRAM
+        Matlab_MX_LIBRARY
+        Matlab_ENG_LIBRARY
+        Matlab_MAT_LIBRARY
+        Matlab_ENGINE_LIBRARY
+        Matlab_DATAARRAY_LIBRARY
+        Matlab_MEX_EXTENSION
+        Matlab_SIMULINK_INCLUDE_DIR
+
+        # internal
+        Matlab_MEXEXTENSIONS_PROG
+        Matlab_ROOT_DIR_LAST_CACHED
+        #Matlab_PROG_VERSION_STRING_AUTO_DETECT
+        #Matlab_VERSION_STRING_INTERNAL
+        )
+    foreach(_var IN LISTS _Matlab_cached_vars)
+      if(DEFINED ${_var})
+        unset(${_var} CACHE)
+      endif()
+    endforeach()
+  endif()
+endif()
+
+set(Matlab_ROOT_DIR_LAST_CACHED ${Matlab_ROOT_DIR} CACHE INTERNAL "last Matlab root dir location")
+set(Matlab_ROOT_DIR ${Matlab_ROOT_DIR} CACHE PATH "Matlab installation root path" FORCE)
+
+# Fix the version, in case this one is NOTFOUND
+_Matlab_get_version_from_root(
+  "${Matlab_ROOT_DIR}"
+  "${Matlab_Or_MCR}"
+  ${Matlab_VERSION_STRING}
+  Matlab_VERSION_STRING
+)
+
+if(MATLAB_FIND_DEBUG)
+  message(STATUS "[MATLAB] Current version is ${Matlab_VERSION_STRING} located ${Matlab_ROOT_DIR}")
+endif()
+
+# MATLAB 9.4 (R2018a) and newer have a new C++ API
+# This API pulls additional required libraries.
+if(NOT ${Matlab_VERSION_STRING} VERSION_LESS "9.4")
+  set(Matlab_HAS_CPP_API 1)
+endif()
+
+if(Matlab_ROOT_DIR)
+  file(TO_CMAKE_PATH ${Matlab_ROOT_DIR} Matlab_ROOT_DIR)
+endif()
+
+if(CMAKE_SIZEOF_VOID_P EQUAL 4)
+  set(_matlab_64Build FALSE)
+else()
+  set(_matlab_64Build TRUE)
+endif()
+
+if(APPLE)
+  set(_matlab_bin_prefix "mac") # i should be for intel
+  set(_matlab_bin_suffix_32bits "i")
+  set(_matlab_bin_suffix_64bits "i64")
+elseif(UNIX)
+  set(_matlab_bin_prefix "gln")
+  set(_matlab_bin_suffix_32bits "x86")
+  set(_matlab_bin_suffix_64bits "xa64")
+else()
+  set(_matlab_bin_prefix "win")
+  set(_matlab_bin_suffix_32bits "32")
+  set(_matlab_bin_suffix_64bits "64")
+endif()
+
+
+
+set(MATLAB_INCLUDE_DIR_TO_LOOK ${Matlab_ROOT_DIR}/extern/include)
+if(_matlab_64Build)
+  set(_matlab_current_suffix ${_matlab_bin_suffix_64bits})
+else()
+  set(_matlab_current_suffix ${_matlab_bin_suffix_32bits})
+endif()
+
+set(Matlab_BINARIES_DIR
+    ${Matlab_ROOT_DIR}/bin/${_matlab_bin_prefix}${_matlab_current_suffix})
+set(Matlab_EXTERN_LIBRARY_DIR
+    ${Matlab_ROOT_DIR}/extern/lib/${_matlab_bin_prefix}${_matlab_current_suffix})
+set(Matlab_EXTERN_BINARIES_DIR
+    ${Matlab_ROOT_DIR}/extern/bin/${_matlab_bin_prefix}${_matlab_current_suffix})
+
+if(WIN32)
+  if(MINGW)
+    set(_matlab_lib_dir_for_search ${Matlab_EXTERN_LIBRARY_DIR}/mingw64)
+  else()
+    set(_matlab_lib_dir_for_search ${Matlab_EXTERN_LIBRARY_DIR}/microsoft)
+  endif()
+  set(_matlab_lib_prefix_for_search "lib")
+else()
+  set(_matlab_lib_dir_for_search ${Matlab_BINARIES_DIR} ${Matlab_EXTERN_BINARIES_DIR})
+  set(_matlab_lib_prefix_for_search "lib")
+endif()
+
+unset(_matlab_64Build)
+
+
+if(NOT DEFINED Matlab_MEX_EXTENSION)
+  set(_matlab_mex_extension "")
+  matlab_get_mex_suffix("${Matlab_ROOT_DIR}" _matlab_mex_extension)
+
+  # This variable goes to the cache.
+  set(Matlab_MEX_EXTENSION ${_matlab_mex_extension} CACHE STRING "Extensions for the mex targets (automatically given by Matlab)")
+  unset(_matlab_mex_extension)
+endif()
+
+
+if(MATLAB_FIND_DEBUG)
+  message(STATUS "[MATLAB] [DEBUG]_matlab_lib_prefix_for_search = ${_matlab_lib_prefix_for_search} | _matlab_lib_dir_for_search = ${_matlab_lib_dir_for_search}")
+endif()
+
+
+
+# internal
+# This small stub around find_library is to prevent any pollution of CMAKE_FIND_LIBRARY_PREFIXES in the global scope.
+# This is the function to be used below instead of the find_library directives.
+function(_Matlab_find_library _matlab_library_prefix)
+  set(CMAKE_FIND_LIBRARY_PREFIXES ${CMAKE_FIND_LIBRARY_PREFIXES} ${_matlab_library_prefix})
+  find_library(${ARGN})
+endfunction()
+
+
+set(_matlab_required_variables)
+
+# Order is as follow:
+# - unconditionally required libraries/headers first
+# - then library components
+# - then program components
+
+# the MEX library/header are required
+find_path(
+  Matlab_INCLUDE_DIRS
+  mex.h
+  PATHS ${MATLAB_INCLUDE_DIR_TO_LOOK}
+  NO_DEFAULT_PATH
+  )
+list(APPEND _matlab_required_variables Matlab_INCLUDE_DIRS)
+
+if(Matlab_Or_MCR STREQUAL "MATLAB" OR Matlab_Or_MCR STREQUAL "UNKNOWN")
+  _Matlab_find_library(
+    ${_matlab_lib_prefix_for_search}
+    Matlab_MEX_LIBRARY
+    mex
+    PATHS ${_matlab_lib_dir_for_search}
+    NO_DEFAULT_PATH
+  )
+  list(APPEND _matlab_required_variables Matlab_MEX_LIBRARY)
+
+  # the MEX extension is required
+  list(APPEND _matlab_required_variables Matlab_MEX_EXTENSION)
+
+  # the matlab root is required
+  list(APPEND _matlab_required_variables Matlab_ROOT_DIR)
+
+  # The MX library is required
+  _Matlab_find_library(
+    ${_matlab_lib_prefix_for_search}
+    Matlab_MX_LIBRARY
+    mx
+    PATHS ${_matlab_lib_dir_for_search}
+    NO_DEFAULT_PATH
+  )
+  list(APPEND _matlab_required_variables Matlab_MX_LIBRARY)
+  if(Matlab_MX_LIBRARY)
+    set(Matlab_MX_LIBRARY_FOUND TRUE)
+  endif()
+endif()
+
+if(Matlab_HAS_CPP_API)
+
+  # The MatlabEngine library is required for R2018a+
+  _Matlab_find_library(
+    ${_matlab_lib_prefix_for_search}
+    Matlab_ENGINE_LIBRARY
+    MatlabEngine
+    PATHS ${_matlab_lib_dir_for_search}
+    DOC "MatlabEngine Library"
+    NO_DEFAULT_PATH
+  )
+  if(Matlab_ENGINE_LIBRARY)
+    set(Matlab_ENGINE_LIBRARY_FOUND TRUE)
+  endif()
+
+  # The MatlabDataArray library is required for R2018a+
+  _Matlab_find_library(
+    ${_matlab_lib_prefix_for_search}
+    Matlab_DATAARRAY_LIBRARY
+    MatlabDataArray
+    PATHS ${_matlab_lib_dir_for_search}
+    DOC "MatlabDataArray Library"
+    NO_DEFAULT_PATH
+  )
+  if(Matlab_DATAARRAY_LIBRARY)
+    set(Matlab_DATAARRAY_LIBRARY_FOUND TRUE)
+  endif()
+
+endif()
+
+# Component ENG library
+if("ENG_LIBRARY" IN_LIST Matlab_FIND_COMPONENTS)
+  _Matlab_find_library(
+    ${_matlab_lib_prefix_for_search}
+    Matlab_ENG_LIBRARY
+    eng
+    PATHS ${_matlab_lib_dir_for_search}
+    NO_DEFAULT_PATH
+  )
+  if(Matlab_ENG_LIBRARY)
+    set(Matlab_ENG_LIBRARY_FOUND TRUE)
+  endif()
+endif()
+
+# Component MAT library
+if("MAT_LIBRARY" IN_LIST Matlab_FIND_COMPONENTS)
+  _Matlab_find_library(
+    ${_matlab_lib_prefix_for_search}
+    Matlab_MAT_LIBRARY
+    mat
+    PATHS ${_matlab_lib_dir_for_search}
+    NO_DEFAULT_PATH
+  )
+  if(Matlab_MAT_LIBRARY)
+    set(Matlab_MAT_LIBRARY_FOUND TRUE)
+  endif()
+endif()
+
+# Component Simulink
+if("SIMULINK" IN_LIST Matlab_FIND_COMPONENTS)
+  find_path(
+    Matlab_SIMULINK_INCLUDE_DIR
+    simstruc.h
+    PATHS "${Matlab_ROOT_DIR}/simulink/include"
+    NO_DEFAULT_PATH
+    )
+  if(Matlab_SIMULINK_INCLUDE_DIR)
+    set(Matlab_SIMULINK_FOUND TRUE)
+    list(APPEND Matlab_INCLUDE_DIRS "${Matlab_SIMULINK_INCLUDE_DIR}")
+  endif()
+endif()
+
+# component Matlab program
+if("MAIN_PROGRAM" IN_LIST Matlab_FIND_COMPONENTS)
+  find_program(
+    Matlab_MAIN_PROGRAM
+    matlab
+    PATHS ${Matlab_ROOT_DIR} ${Matlab_ROOT_DIR}/bin
+    DOC "Matlab main program"
+    NO_DEFAULT_PATH
+  )
+  if(Matlab_MAIN_PROGRAM)
+    set(Matlab_MAIN_PROGRAM_FOUND TRUE)
+  endif()
+endif()
+
+# component Mex Compiler
+if("MEX_COMPILER" IN_LIST Matlab_FIND_COMPONENTS)
+  find_program(
+    Matlab_MEX_COMPILER
+    "mex"
+    PATHS ${Matlab_BINARIES_DIR}
+    DOC "Matlab MEX compiler"
+    NO_DEFAULT_PATH
+  )
+  if(Matlab_MEX_COMPILER)
+    set(Matlab_MEX_COMPILER_FOUND TRUE)
+  endif()
+endif()
+
+# component MCC Compiler
+if("MCC_COMPILER" IN_LIST Matlab_FIND_COMPONENTS)
+  find_program(
+    Matlab_MCC_COMPILER
+    "mcc"
+    PATHS ${Matlab_BINARIES_DIR}
+    DOC "Matlab MCC compiler"
+    NO_DEFAULT_PATH
+  )
+  if(Matlab_MCC_COMPILER)
+    set(Matlab_MCC_COMPILER_FOUND TRUE)
+  endif()
+endif()
+
+set(Matlab_LIBRARIES
+  ${Matlab_MEX_LIBRARY} ${Matlab_MX_LIBRARY}
+  ${Matlab_ENG_LIBRARY} ${Matlab_MAT_LIBRARY})
+
+if(Matlab_ENGINE_LIBRARY)
+  list(APPEND Matlab_LIBRARIES ${Matlab_ENGINE_LIBRARY})
+endif()
+
+if(Matlab_DATAARRAY_LIBRARY)
+  list(APPEND Matlab_LIBRARIES ${Matlab_DATAARRAY_LIBRARY})
+endif()
+
+# internal
+# This small stub permits to add imported targets for the found MATLAB libraries
+function(_Matlab_add_imported_target _matlab_library_variable_name _matlab_library_target_name)
+  if(Matlab_${_matlab_library_variable_name}_LIBRARY)
+    if(NOT TARGET Matlab::${_matlab_library_target_name})
+      add_library(Matlab::${_matlab_library_target_name} UNKNOWN IMPORTED)
+      set_target_properties(Matlab::${_matlab_library_target_name} PROPERTIES
+        INTERFACE_INCLUDE_DIRECTORIES "${Matlab_INCLUDE_DIRS}"
+        IMPORTED_LOCATION "${Matlab_${_matlab_library_variable_name}_LIBRARY}")
+      if(_matlab_library_target_name STREQUAL "mex" OR
+         _matlab_library_target_name STREQUAL "eng" OR
+         _matlab_library_target_name STREQUAL "mat")
+        set_target_properties(Matlab::${_matlab_library_target_name} PROPERTIES
+          INTERFACE_LINK_LIBRARIES Matlab::mx)
+      endif()
+    endif()
+  endif()
+endfunction()
+
+_Matlab_add_imported_target(MX mx)
+_Matlab_add_imported_target(MEX mex)
+_Matlab_add_imported_target(ENG eng)
+_Matlab_add_imported_target(MAT mat)
+_Matlab_add_imported_target(ENGINE MatlabEngine)
+_Matlab_add_imported_target(DATAARRAY MatlabDataArray)
+
+find_package_handle_standard_args(
+  Matlab
+  FOUND_VAR Matlab_FOUND
+  REQUIRED_VARS ${_matlab_required_variables}
+  VERSION_VAR Matlab_VERSION_STRING
+  HANDLE_COMPONENTS)
+
+unset(_matlab_required_variables)
+unset(_matlab_bin_prefix)
+unset(_matlab_bin_suffix_32bits)
+unset(_matlab_bin_suffix_64bits)
+unset(_matlab_current_suffix)
+unset(_matlab_lib_dir_for_search)
+unset(_matlab_lib_prefix_for_search)
+
+if(Matlab_INCLUDE_DIRS AND Matlab_LIBRARIES)
+  mark_as_advanced(
+    Matlab_MEX_LIBRARY
+    Matlab_MX_LIBRARY
+    Matlab_ENG_LIBRARY
+    Matlab_ENGINE_LIBRARY
+    Matlab_DATAARRAY_LIBRARY
+    Matlab_MAT_LIBRARY
+    Matlab_INCLUDE_DIRS
+    Matlab_FOUND
+    Matlab_MAIN_PROGRAM
+    Matlab_MEXEXTENSIONS_PROG
+    Matlab_MEX_EXTENSION
+  )
+endif()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FindMotif.cmake b/share/cmake-3.22/Modules/FindMotif.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindMotif.cmake
rename to share/cmake-3.22/Modules/FindMotif.cmake
diff --git a/share/cmake-3.22/Modules/FindMsys.cmake b/share/cmake-3.22/Modules/FindMsys.cmake
new file mode 100644
index 0000000..b4796d2
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindMsys.cmake
@@ -0,0 +1,31 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindMsys
+--------
+
+.. versionadded:: 3.21
+
+Find MSYS, a POSIX-compatible environment that runs natively
+on Microsoft Windows
+#]=======================================================================]
+
+if (WIN32)
+  if(MSYS_INSTALL_PATH)
+    set(MSYS_CMD "${MSYS_INSTALL_PATH}/msys2_shell.cmd")
+  endif()
+
+  find_program(MSYS_CMD
+    NAMES msys2_shell.cmd
+    PATHS
+      "C:/msys64"
+      "C:/msys32"
+      "C:/MSYS"
+      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MSYS\\setup;rootdir]"
+      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Cygnus Solutions\\MSYS\\mounts v2\\/;native]"
+  )
+  get_filename_component(MSYS_INSTALL_PATH "${MSYS_CMD}" DIRECTORY)
+  mark_as_advanced(MSYS_CMD)
+
+endif ()
diff --git a/share/cmake-3.22/Modules/FindODBC.cmake b/share/cmake-3.22/Modules/FindODBC.cmake
new file mode 100644
index 0000000..884653c
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindODBC.cmake
@@ -0,0 +1,233 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindODBC
+--------
+
+.. versionadded:: 3.12
+
+Find an Open Database Connectivity (ODBC) include directory and library.
+
+On Windows, when building with Visual Studio, this module assumes the ODBC
+library is provided by the available Windows SDK.
+
+On Unix, this module allows to search for ODBC library provided by
+unixODBC or iODBC implementations of ODBC API.
+This module reads hint about location of the config program:
+
+.. variable:: ODBC_CONFIG
+
+  Location of odbc_config or iodbc-config program
+
+Otherwise, this module tries to find the config program,
+first from unixODBC, then from iODBC.
+If no config program found, this module searches for ODBC header
+and library in list of known locations.
+
+Imported targets
+^^^^^^^^^^^^^^^^
+
+This module defines the following :prop_tgt:`IMPORTED` targets:
+
+.. variable:: ODBC::ODBC
+
+  Imported target for using the ODBC library, if found.
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+.. variable:: ODBC_FOUND
+
+  Set to true if ODBC library found, otherwise false or undefined.
+
+.. variable:: ODBC_INCLUDE_DIRS
+
+  Paths to include directories listed in one variable for use by ODBC client.
+  May be empty on Windows, where the include directory corresponding to the
+  expected Windows SDK is already available in the compilation environment.
+
+.. variable:: ODBC_LIBRARIES
+
+  Paths to libraries to linked against to use ODBC.
+  May just a library name on Windows, where the library directory corresponding
+  to the expected Windows SDK is already available in the compilation environment.
+
+.. variable:: ODBC_CONFIG
+
+  Path to unixODBC or iODBC config program, if found or specified.
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+For users who wish to edit and control the module behavior, this module
+reads hints about search locations from the following variables:
+
+.. variable:: ODBC_INCLUDE_DIR
+
+  Path to ODBC include directory with ``sql.h`` header.
+
+.. variable:: ODBC_LIBRARY
+
+  Path to ODBC library to be linked.
+
+These variables should not be used directly by project code.
+
+Limitations
+^^^^^^^^^^^
+
+On Windows, this module does not search for iODBC.
+On Unix, there is no way to prefer unixODBC over iODBC, or vice versa,
+other than providing the config program location using the ``ODBC_CONFIG``.
+This module does not allow to search for a specific ODBC driver.
+
+#]=======================================================================]
+
+# Define lists used internally
+set(_odbc_include_paths)
+set(_odbc_lib_paths)
+set(_odbc_lib_names)
+set(_odbc_required_libs_names)
+
+### Try Windows Kits ##########################################################
+if(WIN32)
+  # List names of ODBC libraries on Windows
+  if(NOT MINGW)
+    set(ODBC_LIBRARY odbc32.lib)
+  else()
+    set(ODBC_LIBRARY libodbc32.a)
+  endif()
+  set(_odbc_lib_names odbc32;)
+
+  # List additional libraries required to use ODBC library
+  if(MSVC OR CMAKE_CXX_COMPILER_ID MATCHES "Intel")
+    set(_odbc_required_libs_names odbccp32;ws2_32)
+  elseif(MINGW)
+    set(_odbc_required_libs_names odbccp32)
+  endif()
+endif()
+
+### Try unixODBC or iODBC config program ######################################
+if (UNIX)
+  find_program(ODBC_CONFIG
+    NAMES odbc_config iodbc-config
+    DOC "Path to unixODBC or iODBC config program")
+  mark_as_advanced(ODBC_CONFIG)
+endif()
+
+if (UNIX AND ODBC_CONFIG)
+  # unixODBC and iODBC accept unified command line options
+  execute_process(COMMAND ${ODBC_CONFIG} --cflags
+    OUTPUT_VARIABLE _cflags OUTPUT_STRIP_TRAILING_WHITESPACE)
+  execute_process(COMMAND ${ODBC_CONFIG} --libs
+    OUTPUT_VARIABLE _libs OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+  # Collect paths of include directories from CFLAGS
+  separate_arguments(_cflags NATIVE_COMMAND "${_cflags}")
+  foreach(arg IN LISTS _cflags)
+    if("${arg}" MATCHES "^-I(.*)$")
+      list(APPEND _odbc_include_paths "${CMAKE_MATCH_1}")
+    endif()
+  endforeach()
+  unset(_cflags)
+
+  # Collect paths of library names and directories from LIBS
+  separate_arguments(_libs NATIVE_COMMAND "${_libs}")
+  foreach(arg IN LISTS _libs)
+    if("${arg}" MATCHES "^-L(.*)$")
+      list(APPEND _odbc_lib_paths "${CMAKE_MATCH_1}")
+    elseif("${arg}" MATCHES "^-l(.*)$")
+      set(_lib_name ${CMAKE_MATCH_1})
+      string(REGEX MATCH "odbc" _is_odbc ${_lib_name})
+      if(_is_odbc)
+        list(APPEND _odbc_lib_names ${_lib_name})
+      else()
+        list(APPEND _odbc_required_libs_names ${_lib_name})
+      endif()
+      unset(_lib_name)
+    endif()
+  endforeach()
+  unset(_libs)
+endif()
+
+### Try unixODBC or iODBC in include/lib filesystems ##########################
+if (UNIX AND NOT ODBC_CONFIG)
+  # List names of both ODBC libraries, unixODBC and iODBC
+  set(_odbc_lib_names odbc;iodbc;unixodbc;)
+endif()
+
+### Find include directories ##################################################
+find_path(ODBC_INCLUDE_DIR
+  NAMES sql.h
+  PATHS ${_odbc_include_paths})
+
+if(NOT ODBC_INCLUDE_DIR AND WIN32)
+  set(ODBC_INCLUDE_DIR "")
+endif()
+
+### Find libraries ############################################################
+if(NOT ODBC_LIBRARY)
+  find_library(ODBC_LIBRARY
+    NAMES ${_odbc_lib_names}
+    PATHS ${_odbc_lib_paths}
+    PATH_SUFFIXES odbc)
+
+  foreach(_lib IN LISTS _odbc_required_libs_names)
+    find_library(_lib_path
+      NAMES ${_lib}
+      PATHS ${_odbc_lib_paths} # system parths or collected from ODBC_CONFIG
+      PATH_SUFFIXES odbc)
+    if(_lib_path)
+      list(APPEND _odbc_required_libs_paths ${_lib_path})
+    endif()
+    unset(_lib_path CACHE)
+  endforeach()
+endif()
+
+# Unset internal lists as no longer used
+unset(_odbc_include_paths)
+unset(_odbc_lib_paths)
+unset(_odbc_lib_names)
+unset(_odbc_required_libs_names)
+
+### Set result variables ######################################################
+set(_odbc_required_vars ODBC_LIBRARY)
+if(NOT WIN32)
+  list(APPEND _odbc_required_vars ODBC_INCLUDE_DIR)
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(ODBC DEFAULT_MSG ${_odbc_required_vars})
+
+unset(_odbc_required_vars)
+
+mark_as_advanced(ODBC_LIBRARY ODBC_INCLUDE_DIR)
+
+set(ODBC_INCLUDE_DIRS ${ODBC_INCLUDE_DIR})
+list(APPEND ODBC_LIBRARIES ${ODBC_LIBRARY})
+list(APPEND ODBC_LIBRARIES ${_odbc_required_libs_paths})
+
+### Import targets ############################################################
+if(ODBC_FOUND)
+  if(NOT TARGET ODBC::ODBC)
+    if(IS_ABSOLUTE "${ODBC_LIBRARY}")
+      add_library(ODBC::ODBC UNKNOWN IMPORTED)
+      set_target_properties(ODBC::ODBC PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+        IMPORTED_LOCATION "${ODBC_LIBRARY}")
+    else()
+      add_library(ODBC::ODBC INTERFACE IMPORTED)
+      set_target_properties(ODBC::ODBC PROPERTIES
+        IMPORTED_LIBNAME "${ODBC_LIBRARY}")
+    endif()
+    set_target_properties(ODBC::ODBC PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${ODBC_INCLUDE_DIR}")
+
+    if(_odbc_required_libs_paths)
+      set_property(TARGET ODBC::ODBC APPEND PROPERTY
+        INTERFACE_LINK_LIBRARIES "${_odbc_required_libs_paths}")
+    endif()
+  endif()
+endif()
+
+unset(_odbc_required_libs_paths)
diff --git a/share/cmake-3.22/Modules/FindOpenACC.cmake b/share/cmake-3.22/Modules/FindOpenACC.cmake
new file mode 100644
index 0000000..cf58f3b
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindOpenACC.cmake
@@ -0,0 +1,296 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindOpenACC
+-----------
+
+.. versionadded:: 3.10
+
+Detect OpenACC support by the compiler.
+
+This module can be used to detect OpenACC support in a compiler.
+If the compiler supports OpenACC, the flags required to compile with
+OpenACC support are returned in variables for the different languages.
+Currently, only NVHPC, PGI, GNU and Cray compilers are supported.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.16
+
+The module provides :prop_tgt:`IMPORTED` targets:
+
+``OpenACC::OpenACC_<lang>``
+  Target for using OpenACC from ``<lang>``.
+
+Variables
+^^^^^^^^^
+
+This module will set the following variables per language in your
+project, where ``<lang>`` is one of C, CXX, or Fortran:
+
+``OpenACC_<lang>_FOUND``
+  Variable indicating if OpenACC support for ``<lang>`` was detected.
+``OpenACC_<lang>_FLAGS``
+  OpenACC compiler flags for ``<lang>``, separated by spaces.
+``OpenACC_<lang>_OPTIONS``
+  .. versionadded:: 3.16
+
+  OpenACC compiler flags for ``<lang>``, as a list. Suitable for usage
+  with target_compile_options or target_link_options.
+
+The module will also try to provide the OpenACC version variables:
+
+``OpenACC_<lang>_SPEC_DATE``
+  Date of the OpenACC specification implemented by the ``<lang>`` compiler.
+``OpenACC_<lang>_VERSION_MAJOR``
+  Major version of OpenACC implemented by the ``<lang>`` compiler.
+``OpenACC_<lang>_VERSION_MINOR``
+  Minor version of OpenACC implemented by the ``<lang>`` compiler.
+``OpenACC_<lang>_VERSION``
+  OpenACC version implemented by the ``<lang>`` compiler.
+
+The specification date is formatted as given in the OpenACC standard:
+``yyyymm`` where ``yyyy`` and ``mm`` represents the year and month of
+the OpenACC specification implemented by the ``<lang>`` compiler.
+
+Input Variables
+^^^^^^^^^^^^^^^
+
+``OpenACC_ACCEL_TARGET=<target>``
+If set, will the correct target accelerator flag set to the <target> will
+be returned with OpenACC_<lang>_FLAGS.
+#]=======================================================================]
+
+set(OpenACC_C_CXX_TEST_SOURCE
+"
+int main(){
+#ifdef _OPENACC
+  return 0;
+#else
+  breaks_on_purpose
+#endif
+}
+"
+)
+set(OpenACC_Fortran_TEST_SOURCE
+"
+program test
+#ifndef _OPENACC
+  breaks_on_purpose
+#endif
+endprogram test
+"
+)
+set(OpenACC_C_CXX_CHECK_VERSION_SOURCE
+"
+#include <stdio.h>
+const char accver_str[] = { 'I', 'N', 'F', 'O', ':', 'O', 'p', 'e', 'n', 'A',
+                            'C', 'C', '-', 'd', 'a', 't', 'e', '[',
+                            ('0' + ((_OPENACC/100000)%10)),
+                            ('0' + ((_OPENACC/10000)%10)),
+                            ('0' + ((_OPENACC/1000)%10)),
+                            ('0' + ((_OPENACC/100)%10)),
+                            ('0' + ((_OPENACC/10)%10)),
+                            ('0' + ((_OPENACC/1)%10)),
+                            ']', '\\0' };
+int main()
+{
+  puts(accver_str);
+  return 0;
+}
+")
+set(OpenACC_Fortran_CHECK_VERSION_SOURCE
+"
+      program acc_ver
+      implicit none
+      integer, parameter :: zero = ichar('0')
+      character, dimension(25), parameter :: accver_str =&
+      (/ 'I', 'N', 'F', 'O', ':', 'O', 'p', 'e', 'n', 'A', 'C', 'C', '-',&
+         'd', 'a', 't', 'e', '[',&
+         char(zero + mod(_OPENACC/100000, 10)),&
+         char(zero + mod(_OPENACC/10000, 10)),&
+         char(zero + mod(_OPENACC/1000, 10)),&
+         char(zero + mod(_OPENACC/100, 10)),&
+         char(zero + mod(_OPENACC/10, 10)),&
+         char(zero + mod(_OPENACC/1, 10)), ']' /)
+      print *, accver_str
+      end program acc_ver
+"
+)
+
+
+function(_OPENACC_WRITE_SOURCE_FILE LANG SRC_FILE_CONTENT_VAR SRC_FILE_NAME SRC_FILE_FULLPATH)
+  set(WORK_DIR ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindOpenACC)
+  if("${LANG}" STREQUAL "C")
+    set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.c")
+    file(WRITE "${SRC_FILE}" "${OpenACC_C_CXX_${SRC_FILE_CONTENT_VAR}}")
+  elseif("${LANG}" STREQUAL "CXX")
+    set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.cpp")
+    file(WRITE "${SRC_FILE}" "${OpenACC_C_CXX_${SRC_FILE_CONTENT_VAR}}")
+  elseif("${LANG}" STREQUAL "Fortran")
+    set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.F90")
+    file(WRITE "${SRC_FILE}_in" "${OpenACC_Fortran_${SRC_FILE_CONTENT_VAR}}")
+    configure_file("${SRC_FILE}_in" "${SRC_FILE}" @ONLY)
+  endif()
+  set(${SRC_FILE_FULLPATH} "${SRC_FILE}" PARENT_SCOPE)
+endfunction()
+
+
+function(_OPENACC_GET_FLAGS_CANDIDATE LANG FLAG_VAR)
+  set(ACC_FLAG_NVHPC "-acc")
+  set(ACC_FLAG_PGI "-acc")
+  set(ACC_FLAG_GNU "-fopenacc")
+  set(ACC_FLAG_Cray "-h acc")
+
+  if(DEFINED ACC_FLAG_${CMAKE_${LANG}_COMPILER_ID})
+    set("${FLAG_VAR}" "${ACC_FLAG_${CMAKE_${LANG}_COMPILER_ID}}" PARENT_SCOPE)
+  else()
+    # Fall back to a few common flags.
+    set("${FLAG_VAR}" ${ACC_FLAG_GNU} ${ACC_FLAG_PGI})
+  endif()
+
+endfunction()
+
+
+function(_OPENACC_GET_ACCEL_TARGET_FLAG LANG TARGET FLAG_VAR)
+  # Find target accelerator flags.
+  set(ACC_TARGET_FLAG_NVHPC "-ta")
+  set(ACC_TARGET_FLAG_PGI "-ta")
+  if(DEFINED ACC_TARGET_FLAG_${CMAKE_${LANG}_COMPILER_ID})
+    set("${FLAG_VAR}" "${ACC_TARGET_FLAG_${CMAKE_${LANG}_COMPILER_ID}}=${TARGET}" PARENT_SCOPE)
+  endif()
+endfunction()
+
+
+function(_OPENACC_GET_VERBOSE_FLAG LANG FLAG_VAR)
+  # Find compiler's verbose flag for OpenACC.
+  set(ACC_VERBOSE_FLAG_NVHPC "-Minfo=accel")
+  set(ACC_VERBOSE_FLAG_PGI "-Minfo=accel")
+  if(DEFINED ACC_VERBOSE_FLAG_${CMAKE_${LANG}_COMPILER_ID})
+    set("${FLAG_VAR}" "${ACC_VERBOSE_FLAG_${CMAKE_${LANG}_COMPILER_ID}}" PARENT_SCOPE)
+  endif()
+endfunction()
+
+
+function(_OPENACC_GET_FLAGS LANG FLAG_VAR)
+  set(FLAG_CANDIDATES "")
+  _OPENACC_GET_FLAGS_CANDIDATE("${LANG}" FLAG_CANDIDATES)
+  _OPENACC_WRITE_SOURCE_FILE("${LANG}" "TEST_SOURCE" OpenACCTryFlag _OPENACC_TEST_SRC)
+
+  foreach(FLAG IN LISTS FLAG_CANDIDATES)
+    try_compile(OpenACC_FLAG_TEST_RESULT ${CMAKE_BINARY_DIR} ${_OPENACC_TEST_SRC}
+      CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${FLAG}"
+      OUTPUT_VARIABLE OpenACC_TRY_COMPILE_OUTPUT
+    )
+    if(OpenACC_FLAG_TEST_RESULT)
+      set("${FLAG_VAR}" "${FLAG}")
+      if(DEFINED OpenACC_ACCEL_TARGET)
+        _OPENACC_GET_ACCEL_TARGET_FLAG("${LANG}" "${OpenACC_ACCEL_TARGET}" TARGET_FLAG)
+        string(APPEND "${FLAG_VAR}" " ${TARGET_FLAG}")
+      endif()
+
+      if(CMAKE_VERBOSE_MAKEFILE)
+        # -Minfo=accel prints out OpenACC's messages on optimizations.
+        _OPENACC_GET_VERBOSE_FLAG("${LANG}" OpenACC_VERBOSE_FLAG)
+        string(APPEND "${FLAG_VAR}" " ${OpenACC_VERBOSE_FLAG}")
+      endif()
+      set("${FLAG_VAR}" "${${FLAG_VAR}}" PARENT_SCOPE)
+      break()
+    endif()
+  endforeach()
+
+endfunction()
+
+
+function(_OPENACC_GET_SPEC_DATE LANG SPEC_DATE)
+  _OPENACC_WRITE_SOURCE_FILE("${LANG}" "CHECK_VERSION_SOURCE" OpenACCCheckVersion _OPENACC_TEST_SRC)
+
+  set(BIN_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindOpenACC/accver_${LANG}.bin")
+  try_compile(OpenACC_SPECTEST_${LANG} "${CMAKE_BINARY_DIR}" "${_OPENACC_TEST_SRC}"
+              CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OpenACC_${LANG}_FLAGS}"
+              COPY_FILE ${BIN_FILE}
+              OUTPUT_VARIABLE OUTPUT)
+
+  if(${OpenACC_SPECTEST_${LANG}})
+    file(STRINGS ${BIN_FILE} specstr LIMIT_COUNT 1 REGEX "INFO:OpenACC-date")
+    set(regex_spec_date ".*INFO:OpenACC-date\\[0*([^]]*)\\].*")
+    if("${specstr}" MATCHES "${regex_spec_date}")
+      set(${SPEC_DATE} "${CMAKE_MATCH_1}" PARENT_SCOPE)
+    endif()
+  endif()
+endfunction()
+
+
+macro(_OPENACC_SET_VERSION_BY_SPEC_DATE LANG)
+  set(OpenACC_SPEC_DATE_MAP
+    # Combined versions, 2.5 onwards
+    "201510=2.5"
+    # 2013 08 is the corrected version.
+    "201308=2.0"
+    "201306=2.0"
+    "201111=1.0"
+  )
+
+  string(REGEX MATCHALL "${OpenACC_${LANG}_SPEC_DATE}=([0-9]+)\\.([0-9]+)" _version_match "${OpenACC_SPEC_DATE_MAP}")
+  if(NOT _version_match STREQUAL "")
+    set(OpenACC_${LANG}_VERSION_MAJOR ${CMAKE_MATCH_1})
+    set(OpenACC_${LANG}_VERSION_MINOR ${CMAKE_MATCH_2})
+    set(OpenACC_${LANG}_VERSION "${OpenACC_${LANG}_VERSION_MAJOR}.${OpenACC_${LANG}_VERSION_MINOR}")
+  else()
+    unset(OpenACC_${LANG}_VERSION_MAJOR)
+    unset(OpenACC_${LANG}_VERSION_MINOR)
+    unset(OpenACC_${LANG}_VERSION)
+  endif()
+  unset(_version_match)
+  unset(OpenACC_SPEC_DATE_MAP)
+endmacro()
+
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+foreach (LANG IN ITEMS C CXX Fortran)
+  if(CMAKE_${LANG}_COMPILER_LOADED)
+    set(OpenACC_${LANG}_FIND_QUIETLY ${OpenACC_FIND_QUIETLY})
+    set(OpenACC_${LANG}_FIND_REQUIRED ${OpenACC_FIND_REQUIRED})
+    set(OpenACC_${LANG}_FIND_VERSION ${OpenACC_FIND_VERSION})
+    set(OpenACC_${LANG}_FIND_VERSION_EXACT ${OpenACC_FIND_VERSION_EXACT})
+
+    if(NOT DEFINED OpenACC_${LANG}_FLAGS)
+      _OPENACC_GET_FLAGS("${LANG}" OpenACC_${LANG}_FLAGS)
+    endif()
+    if(NOT DEFINED OpenACC_${LANG}_OPTIONS)
+      separate_arguments(OpenACC_${LANG}_OPTIONS NATIVE_COMMAND "${OpenACC_${LANG}_FLAGS}")
+    endif()
+    _OPENACC_GET_SPEC_DATE("${LANG}" OpenACC_${LANG}_SPEC_DATE)
+    _OPENACC_SET_VERSION_BY_SPEC_DATE("${LANG}")
+
+    find_package_handle_standard_args(OpenACC_${LANG}
+      NAME_MISMATCHED
+      REQUIRED_VARS OpenACC_${LANG}_FLAGS
+      VERSION_VAR OpenACC_${LANG}_VERSION
+    )
+  endif()
+endforeach()
+
+foreach (LANG IN ITEMS C CXX Fortran)
+  if(OpenACC_${LANG}_FOUND AND NOT TARGET OpenACC::OpenACC_${LANG})
+    add_library(OpenACC::OpenACC_${LANG} INTERFACE IMPORTED)
+  endif()
+  if(OpenACC_${LANG}_LIBRARIES)
+    set_property(TARGET OpenACC::OpenACC_${LANG} PROPERTY
+      INTERFACE_LINK_LIBRARIES "${OpenACC_${LANG}_LIBRARIES}")
+  endif()
+  if(OpenACC_${LANG}_FLAGS)
+    set_property(TARGET OpenACC::OpenACC_${LANG} PROPERTY
+      INTERFACE_COMPILE_OPTIONS "$<$<COMPILE_LANGUAGE:${LANG}>:${OpenACC_${LANG}_OPTIONS}>")
+    set_property(TARGET OpenACC::OpenACC_${LANG} PROPERTY
+      INTERFACE_LINK_OPTIONS "$<$<COMPILE_LANGUAGE:${LANG}>:${OpenACC_${LANG}_OPTIONS}>")
+    unset(_OpenACC_${LANG}_OPTIONS)
+  endif()
+endforeach()
+
+unset(OpenACC_C_CXX_TEST_SOURCE)
+unset(OpenACC_Fortran_TEST_SOURCE)
+unset(OpenACC_C_CXX_CHECK_VERSION_SOURCE)
+unset(OpenACC_Fortran_CHECK_VERSION_SOURCE)
diff --git a/share/cmake-3.18/Modules/FindOpenAL.cmake b/share/cmake-3.22/Modules/FindOpenAL.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindOpenAL.cmake
rename to share/cmake-3.22/Modules/FindOpenAL.cmake
diff --git a/share/cmake-3.22/Modules/FindOpenCL.cmake b/share/cmake-3.22/Modules/FindOpenCL.cmake
new file mode 100644
index 0000000..1b4662b
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindOpenCL.cmake
@@ -0,0 +1,185 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindOpenCL
+----------
+
+.. versionadded:: 3.1
+
+Finds Open Computing Language (OpenCL)
+
+.. versionadded:: 3.10
+  Detection of OpenCL 2.1 and 2.2.
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.7
+
+This module defines :prop_tgt:`IMPORTED` target ``OpenCL::OpenCL``, if
+OpenCL has been found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module defines the following variables::
+
+  OpenCL_FOUND          - True if OpenCL was found
+  OpenCL_INCLUDE_DIRS   - include directories for OpenCL
+  OpenCL_LIBRARIES      - link against this library to use OpenCL
+  OpenCL_VERSION_STRING - Highest supported OpenCL version (eg. 1.2)
+  OpenCL_VERSION_MAJOR  - The major version of the OpenCL implementation
+  OpenCL_VERSION_MINOR  - The minor version of the OpenCL implementation
+
+The module will also define two cache variables::
+
+  OpenCL_INCLUDE_DIR    - the OpenCL include directory
+  OpenCL_LIBRARY        - the path to the OpenCL library
+
+#]=======================================================================]
+
+function(_FIND_OPENCL_VERSION)
+  include(CheckSymbolExists)
+  include(CMakePushCheckState)
+  set(CMAKE_REQUIRED_QUIET ${OpenCL_FIND_QUIETLY})
+
+  CMAKE_PUSH_CHECK_STATE()
+  foreach(VERSION "2_2" "2_1" "2_0" "1_2" "1_1" "1_0")
+    set(CMAKE_REQUIRED_INCLUDES "${OpenCL_INCLUDE_DIR}")
+
+    if(APPLE)
+      CHECK_SYMBOL_EXISTS(
+        CL_VERSION_${VERSION}
+        "${OpenCL_INCLUDE_DIR}/Headers/cl.h"
+        OPENCL_VERSION_${VERSION})
+    else()
+      CHECK_SYMBOL_EXISTS(
+        CL_VERSION_${VERSION}
+        "${OpenCL_INCLUDE_DIR}/CL/cl.h"
+        OPENCL_VERSION_${VERSION})
+    endif()
+
+    if(OPENCL_VERSION_${VERSION})
+      string(REPLACE "_" "." VERSION "${VERSION}")
+      set(OpenCL_VERSION_STRING ${VERSION} PARENT_SCOPE)
+      string(REGEX MATCHALL "[0-9]+" version_components "${VERSION}")
+      list(GET version_components 0 major_version)
+      list(GET version_components 1 minor_version)
+      set(OpenCL_VERSION_MAJOR ${major_version} PARENT_SCOPE)
+      set(OpenCL_VERSION_MINOR ${minor_version} PARENT_SCOPE)
+      break()
+    endif()
+  endforeach()
+  CMAKE_POP_CHECK_STATE()
+endfunction()
+
+find_path(OpenCL_INCLUDE_DIR
+  NAMES
+    CL/cl.h OpenCL/cl.h
+  PATHS
+    ENV "PROGRAMFILES(X86)"
+    ENV AMDAPPSDKROOT
+    ENV INTELOCLSDKROOT
+    ENV NVSDKCOMPUTE_ROOT
+    ENV CUDA_PATH
+    ENV ATISTREAMSDKROOT
+    ENV OCL_ROOT
+    /usr/local/cuda
+    /opt/cuda
+  PATH_SUFFIXES
+    include
+    OpenCL/common/inc
+    "AMD APP/include")
+
+_FIND_OPENCL_VERSION()
+
+if(WIN32)
+  if(CMAKE_SIZEOF_VOID_P EQUAL 4)
+    find_library(OpenCL_LIBRARY
+      NAMES OpenCL
+      PATHS
+        ENV "PROGRAMFILES(X86)"
+        ENV AMDAPPSDKROOT
+        ENV INTELOCLSDKROOT
+        ENV CUDA_PATH
+        ENV NVSDKCOMPUTE_ROOT
+        ENV ATISTREAMSDKROOT
+        ENV OCL_ROOT
+      PATH_SUFFIXES
+        "AMD APP/lib/x86"
+        lib/x86
+        lib/Win32
+        OpenCL/common/lib/Win32)
+  elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
+    find_library(OpenCL_LIBRARY
+      NAMES OpenCL
+      PATHS
+        ENV "PROGRAMFILES(X86)"
+        ENV AMDAPPSDKROOT
+        ENV INTELOCLSDKROOT
+        ENV CUDA_PATH
+        ENV NVSDKCOMPUTE_ROOT
+        ENV ATISTREAMSDKROOT
+        ENV OCL_ROOT
+      PATH_SUFFIXES
+        "AMD APP/lib/x86_64"
+        lib/x86_64
+        lib/x64
+        OpenCL/common/lib/x64)
+  endif()
+else()
+  if(CMAKE_SIZEOF_VOID_P EQUAL 4)
+    find_library(OpenCL_LIBRARY
+      NAMES OpenCL
+      PATHS
+        ENV AMDAPPSDKROOT
+        ENV CUDA_PATH
+        /usr/local/cuda
+        /opt/cuda
+      PATH_SUFFIXES
+        lib/x86
+        lib)
+  elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
+    find_library(OpenCL_LIBRARY
+      NAMES OpenCL
+      PATHS
+        ENV AMDAPPSDKROOT
+        ENV CUDA_PATH
+        /usr/local/cuda
+        /opt/cuda
+      PATH_SUFFIXES
+        lib/x86_64
+        lib/x64
+        lib
+        lib64)
+  endif()
+endif()
+
+set(OpenCL_LIBRARIES ${OpenCL_LIBRARY})
+set(OpenCL_INCLUDE_DIRS ${OpenCL_INCLUDE_DIR})
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(
+  OpenCL
+  FOUND_VAR OpenCL_FOUND
+  REQUIRED_VARS OpenCL_LIBRARY OpenCL_INCLUDE_DIR
+  VERSION_VAR OpenCL_VERSION_STRING)
+
+mark_as_advanced(
+  OpenCL_INCLUDE_DIR
+  OpenCL_LIBRARY)
+
+if(OpenCL_FOUND AND NOT TARGET OpenCL::OpenCL)
+  if(OpenCL_LIBRARY MATCHES "/([^/]+)\\.framework$")
+    add_library(OpenCL::OpenCL INTERFACE IMPORTED)
+    set_target_properties(OpenCL::OpenCL PROPERTIES
+      INTERFACE_LINK_LIBRARIES "${OpenCL_LIBRARY}")
+  else()
+    add_library(OpenCL::OpenCL UNKNOWN IMPORTED)
+    set_target_properties(OpenCL::OpenCL PROPERTIES
+      IMPORTED_LOCATION "${OpenCL_LIBRARY}")
+  endif()
+  set_target_properties(OpenCL::OpenCL PROPERTIES
+    INTERFACE_INCLUDE_DIRECTORIES "${OpenCL_INCLUDE_DIRS}")
+endif()
diff --git a/share/cmake-3.22/Modules/FindOpenGL.cmake b/share/cmake-3.22/Modules/FindOpenGL.cmake
new file mode 100644
index 0000000..d6d1c00
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindOpenGL.cmake
@@ -0,0 +1,583 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindOpenGL
+----------
+
+FindModule for OpenGL and OpenGL Utility Library (GLU).
+
+.. versionchanged:: 3.2
+  X11 is no longer added as a dependency on Unix/Linux systems.
+
+.. versionadded:: 3.10
+  GLVND support on Linux.  See the :ref:`Linux Specific` section below.
+
+Optional COMPONENTS
+^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.10
+
+This module respects several optional COMPONENTS: ``EGL``, ``GLX``, and
+``OpenGL``.  There are corresponding import targets for each of these flags.
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.8
+
+This module defines the :prop_tgt:`IMPORTED` targets:
+
+``OpenGL::GL``
+  Defined to the platform-specific OpenGL libraries if the system has OpenGL.
+``OpenGL::GLU``
+  Defined if the system has OpenGL Utility Library (GLU).
+
+.. versionadded:: 3.10
+  Additionally, the following GLVND-specific library targets are defined:
+
+``OpenGL::OpenGL``
+  Defined to libOpenGL if the system is GLVND-based.
+``OpenGL::GLX``
+  Defined if the system has OpenGL Extension to the X Window System (GLX).
+``OpenGL::EGL``
+  Defined if the system has EGL.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module sets the following variables:
+
+``OPENGL_FOUND``
+ True, if the system has OpenGL and all components are found.
+``OPENGL_XMESA_FOUND``
+ True, if the system has XMESA.
+``OPENGL_GLU_FOUND``
+ True, if the system has GLU.
+``OpenGL_OpenGL_FOUND``
+ True, if the system has an OpenGL library.
+``OpenGL_GLX_FOUND``
+ True, if the system has GLX.
+``OpenGL_EGL_FOUND``
+ True, if the system has EGL.
+``OPENGL_INCLUDE_DIR``
+ Path to the OpenGL include directory.
+``OPENGL_EGL_INCLUDE_DIRS``
+ Path to the EGL include directory.
+``OPENGL_LIBRARIES``
+ Paths to the OpenGL library, windowing system libraries, and GLU libraries.
+ On Linux, this assumes GLX and is never correct for EGL-based targets.
+ Clients are encouraged to use the ``OpenGL::*`` import targets instead.
+
+.. versionadded:: 3.10
+  Variables for GLVND-specific libraries ``OpenGL``, ``EGL`` and ``GLX``.
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set:
+
+``OPENGL_egl_LIBRARY``
+ Path to the EGL library.
+``OPENGL_glu_LIBRARY``
+ Path to the GLU library.
+``OPENGL_glx_LIBRARY``
+ Path to the GLVND 'GLX' library.
+``OPENGL_opengl_LIBRARY``
+ Path to the GLVND 'OpenGL' library
+``OPENGL_gl_LIBRARY``
+ Path to the OpenGL library.  New code should prefer the ``OpenGL::*`` import
+ targets.
+
+.. versionadded:: 3.10
+  Variables for GLVND-specific libraries ``OpenGL``, ``EGL`` and ``GLX``.
+
+.. _`Linux Specific`:
+
+Linux-specific
+^^^^^^^^^^^^^^
+
+Some Linux systems utilize GLVND as a new ABI for OpenGL.  GLVND separates
+context libraries from OpenGL itself; OpenGL lives in "libOpenGL", and
+contexts are defined in "libGLX" or "libEGL".  GLVND is currently the only way
+to get OpenGL 3+ functionality via EGL in a manner portable across vendors.
+Projects may use GLVND explicitly with target ``OpenGL::OpenGL`` and either
+``OpenGL::GLX`` or ``OpenGL::EGL``.
+
+Projects may use the ``OpenGL::GL`` target (or ``OPENGL_LIBRARIES`` variable)
+to use legacy GL interfaces.  These will use the legacy GL library located
+by ``OPENGL_gl_LIBRARY``, if available.  If ``OPENGL_gl_LIBRARY`` is empty or
+not found and GLVND is available, the ``OpenGL::GL`` target will use GLVND
+``OpenGL::OpenGL`` and ``OpenGL::GLX`` (and the ``OPENGL_LIBRARIES``
+variable will use the corresponding libraries).  Thus, for non-EGL-based
+Linux targets, the ``OpenGL::GL`` target is most portable.
+
+A ``OpenGL_GL_PREFERENCE`` variable may be set to specify the preferred way
+to provide legacy GL interfaces in case multiple choices are available.
+The value may be one of:
+
+``GLVND``
+ If the GLVND OpenGL and GLX libraries are available, prefer them.
+ This forces ``OPENGL_gl_LIBRARY`` to be empty.
+
+ .. versionchanged:: 3.11
+  This is the default, unless policy :policy:`CMP0072` is set to ``OLD``
+  and no components are requeted (since components
+  correspond to GLVND libraries).
+
+``LEGACY``
+ Prefer to use the legacy libGL library, if available.
+
+For EGL targets the client must rely on GLVND support on the user's system.
+Linking should use the ``OpenGL::OpenGL OpenGL::EGL`` targets.  Using GLES*
+libraries is theoretically possible in place of ``OpenGL::OpenGL``, but this
+module does not currently support that; contributions welcome.
+
+``OPENGL_egl_LIBRARY`` and ``OPENGL_EGL_INCLUDE_DIRS`` are defined in the case of
+GLVND.  For non-GLVND Linux and other systems these are left undefined.
+
+macOS-Specific
+^^^^^^^^^^^^^^
+
+On OSX FindOpenGL defaults to using the framework version of OpenGL. People
+will have to change the cache values of OPENGL_glu_LIBRARY and
+OPENGL_gl_LIBRARY to use OpenGL with X11 on OSX.
+#]=======================================================================]
+
+set(_OpenGL_REQUIRED_VARS OPENGL_gl_LIBRARY)
+
+# Provide OPENGL_USE_<C> variables for each component.
+foreach(component ${OpenGL_FIND_COMPONENTS})
+  string(TOUPPER ${component} _COMPONENT)
+  set(OPENGL_USE_${_COMPONENT} 1)
+endforeach()
+
+set(_OpenGL_CACHE_VARS)
+
+if (WIN32)
+
+  if(BORLAND)
+    set (OPENGL_gl_LIBRARY import32 CACHE STRING "OpenGL library for win32")
+    set (OPENGL_glu_LIBRARY import32 CACHE STRING "GLU library for win32")
+  else()
+    set (OPENGL_gl_LIBRARY opengl32 CACHE STRING "OpenGL library for win32")
+    set (OPENGL_glu_LIBRARY glu32 CACHE STRING "GLU library for win32")
+  endif()
+
+  list(APPEND _OpenGL_CACHE_VARS
+    OPENGL_gl_LIBRARY
+    OPENGL_glu_LIBRARY
+    )
+elseif (APPLE)
+  # The OpenGL.framework provides both gl and glu
+  find_library(OPENGL_gl_LIBRARY OpenGL DOC "OpenGL library for OS X")
+  find_library(OPENGL_glu_LIBRARY OpenGL DOC
+    "GLU library for OS X (usually same as OpenGL library)")
+  find_path(OPENGL_INCLUDE_DIR OpenGL/gl.h DOC "Include for OpenGL on OS X")
+  list(APPEND _OpenGL_REQUIRED_VARS OPENGL_INCLUDE_DIR)
+
+  list(APPEND _OpenGL_CACHE_VARS
+    OPENGL_INCLUDE_DIR
+    OPENGL_gl_LIBRARY
+    OPENGL_glu_LIBRARY
+    )
+else()
+  if (CMAKE_SYSTEM_NAME MATCHES "HP-UX")
+    # Handle HP-UX cases where we only want to find OpenGL in either hpux64
+    # or hpux32 depending on if we're doing a 64 bit build.
+    if(CMAKE_SIZEOF_VOID_P EQUAL 4)
+      set(_OPENGL_LIB_PATH
+        /opt/graphics/OpenGL/lib/hpux32/)
+    else()
+      set(_OPENGL_LIB_PATH
+        /opt/graphics/OpenGL/lib/hpux64/
+        /opt/graphics/OpenGL/lib/pa20_64)
+    endif()
+  elseif(CMAKE_SYSTEM_NAME STREQUAL Haiku)
+    set(_OPENGL_LIB_PATH
+      /boot/develop/lib/x86)
+    set(_OPENGL_INCLUDE_PATH
+      /boot/develop/headers/os/opengl)
+  endif()
+
+  # The first line below is to make sure that the proper headers
+  # are used on a Linux machine with the NVidia drivers installed.
+  # They replace Mesa with NVidia's own library but normally do not
+  # install headers and that causes the linking to
+  # fail since the compiler finds the Mesa headers but NVidia's library.
+  # Make sure the NVIDIA directory comes BEFORE the others.
+  #  - Atanas Georgiev <atanas@cs.columbia.edu>
+  find_path(OPENGL_INCLUDE_DIR GL/gl.h
+    /usr/share/doc/NVIDIA_GLX-1.0/include
+    /usr/openwin/share/include
+    /opt/graphics/OpenGL/include
+    ${_OPENGL_INCLUDE_PATH}
+  )
+  find_path(OPENGL_GLX_INCLUDE_DIR GL/glx.h ${_OPENGL_INCLUDE_PATH})
+  find_path(OPENGL_EGL_INCLUDE_DIR EGL/egl.h ${_OPENGL_INCLUDE_PATH})
+  find_path(OPENGL_xmesa_INCLUDE_DIR GL/xmesa.h
+    /usr/share/doc/NVIDIA_GLX-1.0/include
+    /usr/openwin/share/include
+    /opt/graphics/OpenGL/include
+  )
+  list(APPEND _OpenGL_CACHE_VARS
+    OPENGL_INCLUDE_DIR
+    OPENGL_GLX_INCLUDE_DIR
+    OPENGL_EGL_INCLUDE_DIR
+    OPENGL_xmesa_INCLUDE_DIR
+    )
+
+  # Search for the GLVND libraries.  We do this regardless of COMPONENTS; we'll
+  # take into account the COMPONENTS logic later.
+  find_library(OPENGL_opengl_LIBRARY
+    NAMES OpenGL
+    PATHS ${_OPENGL_LIB_PATH}
+  )
+
+  find_library(OPENGL_glx_LIBRARY
+    NAMES GLX
+    PATHS ${_OPENGL_LIB_PATH}
+    PATH_SUFFIXES libglvnd
+  )
+
+  find_library(OPENGL_egl_LIBRARY
+    NAMES EGL
+    PATHS ${_OPENGL_LIB_PATH}
+    PATH_SUFFIXES libglvnd
+  )
+
+  find_library(OPENGL_glu_LIBRARY
+    NAMES GLU MesaGLU
+    PATHS ${OPENGL_gl_LIBRARY}
+          /opt/graphics/OpenGL/lib
+          /usr/openwin/lib
+          /usr/shlib
+  )
+
+  list(APPEND _OpenGL_CACHE_VARS
+    OPENGL_opengl_LIBRARY
+    OPENGL_glx_LIBRARY
+    OPENGL_egl_LIBRARY
+    OPENGL_glu_LIBRARY
+    )
+
+  set(_OpenGL_GL_POLICY_WARN 0)
+  if(NOT DEFINED OpenGL_GL_PREFERENCE)
+    set(OpenGL_GL_PREFERENCE "")
+  endif()
+  if(NOT OpenGL_GL_PREFERENCE STREQUAL "")
+    # A preference has been explicitly specified.
+    if(NOT OpenGL_GL_PREFERENCE MATCHES "^(GLVND|LEGACY)$")
+      message(FATAL_ERROR
+        "OpenGL_GL_PREFERENCE value '${OpenGL_GL_PREFERENCE}' not recognized.  "
+        "Allowed values are 'GLVND' and 'LEGACY'."
+        )
+    endif()
+  elseif(OpenGL_FIND_COMPONENTS)
+    # No preference was explicitly specified, but the caller did request
+    # at least one GLVND component.  Prefer GLVND for legacy GL.
+    set(OpenGL_GL_PREFERENCE "GLVND")
+  else()
+    # No preference was explicitly specified and no GLVND components were
+    # requested.  Use a policy to choose the default.
+    cmake_policy(GET CMP0072 _OpenGL_GL_POLICY)
+    if("x${_OpenGL_GL_POLICY}x" STREQUAL "xNEWx")
+      set(OpenGL_GL_PREFERENCE "GLVND")
+    else()
+      set(OpenGL_GL_PREFERENCE "LEGACY")
+      if("x${_OpenGL_GL_POLICY}x" STREQUAL "xx")
+        set(_OpenGL_GL_POLICY_WARN 1)
+      endif()
+    endif()
+    unset(_OpenGL_GL_POLICY)
+  endif()
+
+  if("x${OpenGL_GL_PREFERENCE}x" STREQUAL "xGLVNDx" AND OPENGL_opengl_LIBRARY AND OPENGL_glx_LIBRARY)
+    # We can provide legacy GL using GLVND libraries.
+    # Do not use any legacy GL library.
+    set(OPENGL_gl_LIBRARY "")
+  else()
+    # We cannot provide legacy GL using GLVND libraries.
+    # Search for the legacy GL library.
+    find_library(OPENGL_gl_LIBRARY
+      NAMES GL MesaGL
+      PATHS /opt/graphics/OpenGL/lib
+            /usr/openwin/lib
+            /usr/shlib
+            ${_OPENGL_LIB_PATH}
+      PATH_SUFFIXES libglvnd
+      )
+    list(APPEND _OpenGL_CACHE_VARS OPENGL_gl_LIBRARY)
+  endif()
+
+  if(_OpenGL_GL_POLICY_WARN AND OPENGL_gl_LIBRARY AND OPENGL_opengl_LIBRARY AND OPENGL_glx_LIBRARY)
+    cmake_policy(GET_WARNING CMP0072 _cmp0072_warning)
+    message(AUTHOR_WARNING
+      "${_cmp0072_warning}\n"
+      "FindOpenGL found both a legacy GL library:\n"
+      "  OPENGL_gl_LIBRARY: ${OPENGL_gl_LIBRARY}\n"
+      "and GLVND libraries for OpenGL and GLX:\n"
+      "  OPENGL_opengl_LIBRARY: ${OPENGL_opengl_LIBRARY}\n"
+      "  OPENGL_glx_LIBRARY: ${OPENGL_glx_LIBRARY}\n"
+      "OpenGL_GL_PREFERENCE has not been set to \"GLVND\" or \"LEGACY\", so for "
+      "compatibility with CMake 3.10 and below the legacy GL library will be used."
+      )
+  endif()
+  unset(_OpenGL_GL_POLICY_WARN)
+
+  # FPHSA cannot handle "this OR that is required", so we conditionally set what
+  # it must look for.  First clear any previous config we might have done:
+  set(_OpenGL_REQUIRED_VARS)
+
+  # now we append the libraries as appropriate.  The complicated logic
+  # basically comes down to "use libOpenGL when we can, and add in specific
+  # context mechanisms when requested, or we need them to preserve the previous
+  # default where glx is always available."
+  if((NOT OPENGL_USE_EGL AND
+      NOT OPENGL_opengl_LIBRARY AND
+          OPENGL_glx_LIBRARY AND
+      NOT OPENGL_gl_LIBRARY) OR
+     (NOT OPENGL_USE_EGL AND
+      NOT OPENGL_glx_LIBRARY AND
+      NOT OPENGL_gl_LIBRARY) OR
+     (NOT OPENGL_USE_EGL AND
+          OPENGL_opengl_LIBRARY AND
+          OPENGL_glx_LIBRARY) OR
+     (    OPENGL_USE_EGL))
+    list(APPEND _OpenGL_REQUIRED_VARS OPENGL_opengl_LIBRARY)
+  endif()
+
+  # GLVND GLX library.  Preferred when available.
+  if((NOT OPENGL_USE_OPENGL AND
+      NOT OPENGL_USE_GLX AND
+      NOT OPENGL_USE_EGL AND
+      NOT OPENGL_glx_LIBRARY AND
+      NOT OPENGL_gl_LIBRARY) OR
+     (    OPENGL_USE_GLX AND
+      NOT OPENGL_USE_EGL AND
+      NOT OPENGL_glx_LIBRARY AND
+      NOT OPENGL_gl_LIBRARY) OR
+     (NOT OPENGL_USE_EGL AND
+          OPENGL_opengl_LIBRARY AND
+          OPENGL_glx_LIBRARY) OR
+     (OPENGL_USE_GLX AND OPENGL_USE_EGL))
+    list(APPEND _OpenGL_REQUIRED_VARS OPENGL_glx_LIBRARY)
+  endif()
+
+  # GLVND EGL library.
+  if(OPENGL_USE_EGL)
+    list(APPEND _OpenGL_REQUIRED_VARS OPENGL_egl_LIBRARY)
+  endif()
+
+  # Old-style "libGL" library: used as a fallback when GLVND isn't available.
+  if((NOT OPENGL_USE_EGL AND
+      NOT OPENGL_opengl_LIBRARY AND
+          OPENGL_glx_LIBRARY AND
+          OPENGL_gl_LIBRARY) OR
+     (NOT OPENGL_USE_EGL AND
+      NOT OPENGL_glx_LIBRARY AND
+          OPENGL_gl_LIBRARY))
+    list(APPEND _OpenGL_REQUIRED_VARS OPENGL_gl_LIBRARY)
+  endif()
+
+  # We always need the 'gl.h' include dir.
+  list(APPEND _OpenGL_REQUIRED_VARS OPENGL_INCLUDE_DIR)
+
+  unset(_OPENGL_INCLUDE_PATH)
+  unset(_OPENGL_LIB_PATH)
+
+  find_library(OPENGL_glu_LIBRARY
+    NAMES GLU MesaGLU
+    PATHS ${OPENGL_gl_LIBRARY}
+          /opt/graphics/OpenGL/lib
+          /usr/openwin/lib
+          /usr/shlib
+  )
+endif ()
+
+if(OPENGL_xmesa_INCLUDE_DIR)
+  set( OPENGL_XMESA_FOUND "YES" )
+else()
+  set( OPENGL_XMESA_FOUND "NO" )
+endif()
+
+if(OPENGL_glu_LIBRARY)
+  set( OPENGL_GLU_FOUND "YES" )
+else()
+  set( OPENGL_GLU_FOUND "NO" )
+endif()
+
+# OpenGL_OpenGL_FOUND is a bit unique in that it is okay if /either/ libOpenGL
+# or libGL is found.
+# Using libGL with libEGL is never okay, though; we handle that case later.
+if(NOT OPENGL_opengl_LIBRARY AND NOT OPENGL_gl_LIBRARY)
+  set(OpenGL_OpenGL_FOUND FALSE)
+else()
+  set(OpenGL_OpenGL_FOUND TRUE)
+endif()
+
+if(OPENGL_glx_LIBRARY AND OPENGL_GLX_INCLUDE_DIR)
+  set(OpenGL_GLX_FOUND TRUE)
+else()
+  set(OpenGL_GLX_FOUND FALSE)
+endif()
+
+if(OPENGL_egl_LIBRARY AND OPENGL_EGL_INCLUDE_DIR)
+  set(OpenGL_EGL_FOUND TRUE)
+else()
+  set(OpenGL_EGL_FOUND FALSE)
+endif()
+
+# User-visible names should be plural.
+if(OPENGL_EGL_INCLUDE_DIR)
+  set(OPENGL_EGL_INCLUDE_DIRS ${OPENGL_EGL_INCLUDE_DIR})
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+if (CMAKE_FIND_PACKAGE_NAME STREQUAL "GLU")
+  # FindGLU include()'s this module. It's an old pattern, but rather than
+  # trying to suppress this from outside the module (which is then sensitive to
+  # the contents, detect the case in this module and suppress it explicitly.
+  set(FPHSA_NAME_MISMATCHED 1)
+endif ()
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenGL REQUIRED_VARS ${_OpenGL_REQUIRED_VARS}
+                                  HANDLE_COMPONENTS)
+unset(FPHSA_NAME_MISMATCHED)
+unset(_OpenGL_REQUIRED_VARS)
+
+# OpenGL:: targets
+if(OPENGL_FOUND)
+  # ::OpenGL is a GLVND library, and thus Linux-only: we don't bother checking
+  # for a framework version of this library.
+  if(OPENGL_opengl_LIBRARY AND NOT TARGET OpenGL::OpenGL)
+    if(IS_ABSOLUTE "${OPENGL_opengl_LIBRARY}")
+      add_library(OpenGL::OpenGL UNKNOWN IMPORTED)
+      set_target_properties(OpenGL::OpenGL PROPERTIES IMPORTED_LOCATION
+                            "${OPENGL_opengl_LIBRARY}")
+    else()
+      add_library(OpenGL::OpenGL INTERFACE IMPORTED)
+      set_target_properties(OpenGL::OpenGL PROPERTIES IMPORTED_LIBNAME
+                            "${OPENGL_opengl_LIBRARY}")
+    endif()
+    set_target_properties(OpenGL::OpenGL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
+                          "${OPENGL_INCLUDE_DIR}")
+  endif()
+
+  # ::GLX is a GLVND library, and thus Linux-only: we don't bother checking
+  # for a framework version of this library.
+  if(OpenGL_GLX_FOUND AND NOT TARGET OpenGL::GLX AND TARGET OpenGL::OpenGL)
+    if(IS_ABSOLUTE "${OPENGL_glx_LIBRARY}")
+      add_library(OpenGL::GLX UNKNOWN IMPORTED)
+      set_target_properties(OpenGL::GLX PROPERTIES IMPORTED_LOCATION
+                            "${OPENGL_glx_LIBRARY}")
+    else()
+      add_library(OpenGL::GLX INTERFACE IMPORTED)
+      set_target_properties(OpenGL::GLX PROPERTIES IMPORTED_LIBNAME
+                            "${OPENGL_glx_LIBRARY}")
+    endif()
+    set_target_properties(OpenGL::GLX PROPERTIES INTERFACE_LINK_LIBRARIES
+                          OpenGL::OpenGL)
+    set_target_properties(OpenGL::GLX PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
+                          "${OPENGL_GLX_INCLUDE_DIR}")
+  endif()
+
+  if(OPENGL_gl_LIBRARY AND NOT TARGET OpenGL::GL)
+    # A legacy GL library is available, so use it for the legacy GL target.
+    if(IS_ABSOLUTE "${OPENGL_gl_LIBRARY}")
+      add_library(OpenGL::GL UNKNOWN IMPORTED)
+      if(OPENGL_gl_LIBRARY MATCHES "/([^/]+)\\.framework$")
+        set(_gl_fw "${OPENGL_gl_LIBRARY}/${CMAKE_MATCH_1}")
+        if(EXISTS "${_gl_fw}.tbd")
+          string(APPEND _gl_fw ".tbd")
+        endif()
+        set_target_properties(OpenGL::GL PROPERTIES
+          IMPORTED_LOCATION "${_gl_fw}")
+      else()
+        set_target_properties(OpenGL::GL PROPERTIES
+          IMPORTED_LOCATION "${OPENGL_gl_LIBRARY}")
+      endif()
+    else()
+      add_library(OpenGL::GL INTERFACE IMPORTED)
+      set_target_properties(OpenGL::GL PROPERTIES
+        IMPORTED_LIBNAME "${OPENGL_gl_LIBRARY}")
+    endif()
+    set_target_properties(OpenGL::GL PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}")
+  elseif(NOT TARGET OpenGL::GL AND TARGET OpenGL::OpenGL AND TARGET OpenGL::GLX)
+    # A legacy GL library is not available, but we can provide the legacy GL
+    # target using GLVND OpenGL+GLX.
+    add_library(OpenGL::GL INTERFACE IMPORTED)
+    set_target_properties(OpenGL::GL PROPERTIES INTERFACE_LINK_LIBRARIES
+                          OpenGL::OpenGL)
+    set_property(TARGET OpenGL::GL APPEND PROPERTY INTERFACE_LINK_LIBRARIES
+                 OpenGL::GLX)
+    set_target_properties(OpenGL::GL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
+                          "${OPENGL_INCLUDE_DIR}")
+  endif()
+
+  # ::EGL is a GLVND library, and thus Linux-only: we don't bother checking
+  # for a framework version of this library.
+  # Note we test for OpenGL::OpenGL as a target.  When this module is updated to
+  # support GLES, we would additionally want to check for the hypothetical GLES
+  # target and enable EGL if either ::GLES or ::OpenGL is created.
+  if(TARGET OpenGL::OpenGL AND OpenGL_EGL_FOUND AND NOT TARGET OpenGL::EGL)
+    if(IS_ABSOLUTE "${OPENGL_egl_LIBRARY}")
+      add_library(OpenGL::EGL UNKNOWN IMPORTED)
+      set_target_properties(OpenGL::EGL PROPERTIES IMPORTED_LOCATION
+                            "${OPENGL_egl_LIBRARY}")
+    else()
+      add_library(OpenGL::EGL INTERFACE IMPORTED)
+      set_target_properties(OpenGL::EGL PROPERTIES IMPORTED_LIBNAME
+                            "${OPENGL_egl_LIBRARY}")
+    endif()
+    set_target_properties(OpenGL::EGL PROPERTIES INTERFACE_LINK_LIBRARIES
+                          OpenGL::OpenGL)
+    # Note that EGL's include directory is different from OpenGL/GLX's!
+    set_target_properties(OpenGL::EGL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
+                          "${OPENGL_EGL_INCLUDE_DIR}")
+  endif()
+
+  if(OPENGL_GLU_FOUND AND NOT TARGET OpenGL::GLU)
+    if(IS_ABSOLUTE "${OPENGL_glu_LIBRARY}")
+      add_library(OpenGL::GLU UNKNOWN IMPORTED)
+      if(OPENGL_glu_LIBRARY MATCHES "/([^/]+)\\.framework$")
+        set(_glu_fw "${OPENGL_glu_LIBRARY}/${CMAKE_MATCH_1}")
+        if(EXISTS "${_glu_fw}.tbd")
+          string(APPEND _glu_fw ".tbd")
+        endif()
+        set_target_properties(OpenGL::GLU PROPERTIES
+          IMPORTED_LOCATION "${_glu_fw}")
+      else()
+        set_target_properties(OpenGL::GLU PROPERTIES
+          IMPORTED_LOCATION "${OPENGL_glu_LIBRARY}")
+      endif()
+    else()
+      add_library(OpenGL::GLU INTERFACE IMPORTED)
+      set_target_properties(OpenGL::GLU PROPERTIES
+        IMPORTED_LIBNAME "${OPENGL_glu_LIBRARY}")
+    endif()
+    set_target_properties(OpenGL::GLU PROPERTIES
+      INTERFACE_LINK_LIBRARIES OpenGL::GL)
+  endif()
+
+  # OPENGL_LIBRARIES mirrors OpenGL::GL's logic ...
+  if(OPENGL_gl_LIBRARY)
+    set(OPENGL_LIBRARIES ${OPENGL_gl_LIBRARY})
+  elseif(TARGET OpenGL::OpenGL AND TARGET OpenGL::GLX)
+    set(OPENGL_LIBRARIES ${OPENGL_opengl_LIBRARY} ${OPENGL_glx_LIBRARY})
+  else()
+    set(OPENGL_LIBRARIES "")
+  endif()
+  # ... and also includes GLU, if available.
+  if(TARGET OpenGL::GLU)
+    list(APPEND OPENGL_LIBRARIES ${OPENGL_glu_LIBRARY})
+  endif()
+endif()
+
+# This deprecated setting is for backward compatibility with CMake1.4
+set(OPENGL_LIBRARY ${OPENGL_LIBRARIES})
+# This deprecated setting is for backward compatibility with CMake1.4
+set(OPENGL_INCLUDE_PATH ${OPENGL_INCLUDE_DIR})
+
+mark_as_advanced(${_OpenGL_CACHE_VARS})
+unset(_OpenGL_CACHE_VARS)
diff --git a/share/cmake-3.22/Modules/FindOpenMP.cmake b/share/cmake-3.22/Modules/FindOpenMP.cmake
new file mode 100644
index 0000000..929a809
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindOpenMP.cmake
@@ -0,0 +1,624 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindOpenMP
+----------
+
+Finds Open Multi-Processing (OpenMP) support.
+
+This module can be used to detect OpenMP support in a compiler.  If
+the compiler supports OpenMP, the flags required to compile with
+OpenMP support are returned in variables for the different languages.
+The variables may be empty if the compiler does not need a special
+flag to support OpenMP.
+
+.. versionadded:: 3.5
+  Clang support.
+
+Variables
+^^^^^^^^^
+
+.. versionadded:: 3.10
+  The module exposes the components ``C``, ``CXX``, and ``Fortran``.
+  Each of these controls the various languages to search OpenMP support for.
+
+Depending on the enabled components the following variables will be set:
+
+``OpenMP_FOUND``
+  Variable indicating that OpenMP flags for all requested languages have been found.
+  If no components are specified, this is true if OpenMP settings for all enabled languages
+  were detected.
+``OpenMP_VERSION``
+  Minimal version of the OpenMP standard detected among the requested languages,
+  or all enabled languages if no components were specified.
+
+This module will set the following variables per language in your
+project, where ``<lang>`` is one of C, CXX, or Fortran:
+
+``OpenMP_<lang>_FOUND``
+  Variable indicating if OpenMP support for ``<lang>`` was detected.
+``OpenMP_<lang>_FLAGS``
+  OpenMP compiler flags for ``<lang>``, separated by spaces.
+``OpenMP_<lang>_INCLUDE_DIRS``
+  Directories that must be added to the header search path for ``<lang>``
+  when using OpenMP.
+
+For linking with OpenMP code written in ``<lang>``, the following
+variables are provided:
+
+``OpenMP_<lang>_LIB_NAMES``
+  :ref:`;-list <CMake Language Lists>` of libraries for OpenMP programs for ``<lang>``.
+``OpenMP_<libname>_LIBRARY``
+  Location of the individual libraries needed for OpenMP support in ``<lang>``.
+``OpenMP_<lang>_LIBRARIES``
+  A list of libraries needed to link with OpenMP code written in ``<lang>``.
+
+Additionally, the module provides :prop_tgt:`IMPORTED` targets:
+
+``OpenMP::OpenMP_<lang>``
+  Target for using OpenMP from ``<lang>``.
+
+Specifically for Fortran, the module sets the following variables:
+
+``OpenMP_Fortran_HAVE_OMPLIB_HEADER``
+  Boolean indicating if OpenMP is accessible through ``omp_lib.h``.
+``OpenMP_Fortran_HAVE_OMPLIB_MODULE``
+  Boolean indicating if OpenMP is accessible through the ``omp_lib`` Fortran module.
+
+The module will also try to provide the OpenMP version variables:
+
+``OpenMP_<lang>_SPEC_DATE``
+  .. versionadded:: 3.7
+
+  Date of the OpenMP specification implemented by the ``<lang>`` compiler.
+``OpenMP_<lang>_VERSION_MAJOR``
+  Major version of OpenMP implemented by the ``<lang>`` compiler.
+``OpenMP_<lang>_VERSION_MINOR``
+  Minor version of OpenMP implemented by the ``<lang>`` compiler.
+``OpenMP_<lang>_VERSION``
+  OpenMP version implemented by the ``<lang>`` compiler.
+
+The specification date is formatted as given in the OpenMP standard:
+``yyyymm`` where ``yyyy`` and ``mm`` represents the year and month of
+the OpenMP specification implemented by the ``<lang>`` compiler.
+
+For some compilers, it may be necessary to add a header search path to find
+the relevant OpenMP headers.  This location may be language-specific.  Where
+this is needed, the module may attempt to find the location, but it can be
+provided directly by setting the ``OpenMP_<lang>_INCLUDE_DIR`` cache variable.
+Note that this variable is an _input_ control to the module.  Project code
+should use the ``OpenMP_<lang>_INCLUDE_DIRS`` _output_ variable if it needs
+to know what include directories are needed.
+#]=======================================================================]
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0012 NEW) # if() recognizes numbers and booleans
+cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+function(_OPENMP_FLAG_CANDIDATES LANG)
+  if(NOT OpenMP_${LANG}_FLAG)
+    unset(OpenMP_FLAG_CANDIDATES)
+
+    set(OMP_FLAG_GNU "-fopenmp")
+    set(OMP_FLAG_Clang "-fopenmp=libomp" "-fopenmp=libiomp5" "-fopenmp" "-Xclang -fopenmp")
+    set(OMP_FLAG_AppleClang "-Xclang -fopenmp")
+    set(OMP_FLAG_HP "+Oopenmp")
+    if(WIN32)
+      set(OMP_FLAG_Intel "-Qopenmp")
+    elseif(CMAKE_${LANG}_COMPILER_ID STREQUAL "Intel" AND
+           "${CMAKE_${LANG}_COMPILER_VERSION}" VERSION_LESS "15.0.0.20140528")
+      set(OMP_FLAG_Intel "-openmp")
+    else()
+      set(OMP_FLAG_Intel "-qopenmp")
+    endif()
+    if(CMAKE_${LANG}_COMPILER_ID STREQUAL "IntelLLVM" AND
+      "x${CMAKE_${LANG}_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
+      set(OMP_FLAG_IntelLLVM "-Qiopenmp")
+    else()
+      set(OMP_FLAG_IntelLLVM "-fiopenmp")
+    endif()
+    set(OMP_FLAG_MSVC "-openmp")
+    set(OMP_FLAG_PathScale "-openmp")
+    set(OMP_FLAG_NAG "-openmp")
+    set(OMP_FLAG_Absoft "-openmp")
+    set(OMP_FLAG_NVHPC "-mp")
+    set(OMP_FLAG_PGI "-mp")
+    set(OMP_FLAG_Flang "-fopenmp")
+    set(OMP_FLAG_SunPro "-xopenmp")
+    set(OMP_FLAG_XL "-qsmp=omp")
+    # Cray compiler activate OpenMP with -h omp, which is enabled by default.
+    set(OMP_FLAG_Cray " " "-h omp")
+    set(OMP_FLAG_Fujitsu "-Kopenmp" "-KOMP")
+    set(OMP_FLAG_FujitsuClang "-fopenmp" "-Kopenmp")
+
+    # If we know the correct flags, use those
+    if(DEFINED OMP_FLAG_${CMAKE_${LANG}_COMPILER_ID})
+      set(OpenMP_FLAG_CANDIDATES "${OMP_FLAG_${CMAKE_${LANG}_COMPILER_ID}}")
+    # Fall back to reasonable default tries otherwise
+    else()
+      set(OpenMP_FLAG_CANDIDATES "-openmp" "-fopenmp" "-mp" " ")
+    endif()
+    set(OpenMP_${LANG}_FLAG_CANDIDATES "${OpenMP_FLAG_CANDIDATES}" PARENT_SCOPE)
+  else()
+    set(OpenMP_${LANG}_FLAG_CANDIDATES "${OpenMP_${LANG}_FLAG}" PARENT_SCOPE)
+  endif()
+endfunction()
+
+# sample openmp source code to test
+set(OpenMP_C_CXX_TEST_SOURCE
+"
+#include <omp.h>
+int main(void) {
+#ifdef _OPENMP
+  omp_get_max_threads();
+  return 0;
+#elif defined(__HIP_DEVICE_COMPILE__)
+  return 0;
+#else
+  breaks_on_purpose
+#endif
+}
+")
+
+# in Fortran, an implementation may provide an omp_lib.h header
+# or omp_lib module, or both (OpenMP standard, section 3.1)
+# Furthmore !$ is the Fortran equivalent of #ifdef _OPENMP (OpenMP standard, 2.2.2)
+# Without the conditional compilation, some compilers (e.g. PGI) might compile OpenMP code
+# while not actually enabling OpenMP, building code sequentially
+set(OpenMP_Fortran_TEST_SOURCE
+  "
+      program test
+      @OpenMP_Fortran_INCLUDE_LINE@
+  !$  integer :: n
+      n = omp_get_num_threads()
+      end program test
+  "
+)
+
+function(_OPENMP_WRITE_SOURCE_FILE LANG SRC_FILE_CONTENT_VAR SRC_FILE_NAME SRC_FILE_FULLPATH)
+  set(WORK_DIR ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindOpenMP)
+  if("${LANG}" STREQUAL "C")
+    set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.c")
+    file(WRITE "${SRC_FILE}" "${OpenMP_C_CXX_${SRC_FILE_CONTENT_VAR}}")
+  elseif("${LANG}" STREQUAL "CXX")
+    set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.cpp")
+    file(WRITE "${SRC_FILE}" "${OpenMP_C_CXX_${SRC_FILE_CONTENT_VAR}}")
+  elseif("${LANG}" STREQUAL "Fortran")
+    set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.f90")
+    file(WRITE "${SRC_FILE}_in" "${OpenMP_Fortran_${SRC_FILE_CONTENT_VAR}}")
+    configure_file("${SRC_FILE}_in" "${SRC_FILE}" @ONLY)
+  endif()
+  set(${SRC_FILE_FULLPATH} "${SRC_FILE}" PARENT_SCOPE)
+endfunction()
+
+include(${CMAKE_CURRENT_LIST_DIR}/CMakeParseImplicitLinkInfo.cmake)
+
+function(_OPENMP_GET_FLAGS LANG FLAG_MODE OPENMP_FLAG_VAR OPENMP_LIB_NAMES_VAR)
+  _OPENMP_FLAG_CANDIDATES("${LANG}")
+  _OPENMP_WRITE_SOURCE_FILE("${LANG}" "TEST_SOURCE" OpenMPTryFlag _OPENMP_TEST_SRC)
+
+  unset(OpenMP_VERBOSE_COMPILE_OPTIONS)
+  separate_arguments(OpenMP_VERBOSE_OPTIONS NATIVE_COMMAND "${CMAKE_${LANG}_VERBOSE_FLAG}")
+  foreach(_VERBOSE_OPTION IN LISTS OpenMP_VERBOSE_OPTIONS)
+    if(NOT _VERBOSE_OPTION MATCHES "^-Wl,")
+      list(APPEND OpenMP_VERBOSE_COMPILE_OPTIONS ${_VERBOSE_OPTION})
+    endif()
+  endforeach()
+
+  foreach(OPENMP_FLAG IN LISTS OpenMP_${LANG}_FLAG_CANDIDATES)
+    set(OPENMP_FLAGS_TEST "${OPENMP_FLAG}")
+    if(OpenMP_VERBOSE_COMPILE_OPTIONS)
+      string(APPEND OPENMP_FLAGS_TEST " ${OpenMP_VERBOSE_COMPILE_OPTIONS}")
+    endif()
+    string(REGEX REPLACE "[-/=+]" "" OPENMP_PLAIN_FLAG "${OPENMP_FLAG}")
+    try_compile( OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG} ${CMAKE_BINARY_DIR} ${_OPENMP_TEST_SRC}
+      CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OPENMP_FLAGS_TEST}"
+      LINK_LIBRARIES ${CMAKE_${LANG}_VERBOSE_FLAG}
+      OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT
+    )
+
+    if(OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG})
+      set("${OPENMP_FLAG_VAR}" "${OPENMP_FLAG}" PARENT_SCOPE)
+
+      if(CMAKE_${LANG}_VERBOSE_FLAG)
+        unset(OpenMP_${LANG}_IMPLICIT_LIBRARIES)
+        unset(OpenMP_${LANG}_IMPLICIT_LINK_DIRS)
+        unset(OpenMP_${LANG}_IMPLICIT_FWK_DIRS)
+        unset(OpenMP_${LANG}_LOG_VAR)
+
+        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Detecting ${LANG} OpenMP compiler ABI info compiled with the following output:\n${OpenMP_TRY_COMPILE_OUTPUT}\n\n")
+
+        cmake_parse_implicit_link_info("${OpenMP_TRY_COMPILE_OUTPUT}"
+          OpenMP_${LANG}_IMPLICIT_LIBRARIES
+          OpenMP_${LANG}_IMPLICIT_LINK_DIRS
+          OpenMP_${LANG}_IMPLICIT_FWK_DIRS
+          OpenMP_${LANG}_LOG_VAR
+          "${CMAKE_${LANG}_IMPLICIT_OBJECT_REGEX}"
+        )
+
+        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Parsed ${LANG} OpenMP implicit link information from above output:\n${OpenMP_${LANG}_LOG_VAR}\n\n")
+
+        unset(_OPENMP_LIB_NAMES)
+        foreach(_OPENMP_IMPLICIT_LIB IN LISTS OpenMP_${LANG}_IMPLICIT_LIBRARIES)
+          get_filename_component(_OPENMP_IMPLICIT_LIB_DIR "${_OPENMP_IMPLICIT_LIB}" DIRECTORY)
+          get_filename_component(_OPENMP_IMPLICIT_LIB_NAME "${_OPENMP_IMPLICIT_LIB}" NAME)
+          get_filename_component(_OPENMP_IMPLICIT_LIB_PLAIN "${_OPENMP_IMPLICIT_LIB}" NAME_WE)
+          string(REGEX REPLACE "([][+.*?()^$])" "\\\\\\1" _OPENMP_IMPLICIT_LIB_PLAIN_ESC "${_OPENMP_IMPLICIT_LIB_PLAIN}")
+          string(REGEX REPLACE "([][+.*?()^$])" "\\\\\\1" _OPENMP_IMPLICIT_LIB_PATH_ESC "${_OPENMP_IMPLICIT_LIB}")
+          if(NOT ( "${_OPENMP_IMPLICIT_LIB}" IN_LIST CMAKE_${LANG}_IMPLICIT_LINK_LIBRARIES
+            OR "${CMAKE_${LANG}_STANDARD_LIBRARIES}" MATCHES "(^| )(-Wl,)?(-l)?(${_OPENMP_IMPLICIT_LIB_PLAIN_ESC}|${_OPENMP_IMPLICIT_LIB_PATH_ESC})( |$)"
+            OR "${CMAKE_${LANG}_LINK_EXECUTABLE}" MATCHES "(^| )(-Wl,)?(-l)?(${_OPENMP_IMPLICIT_LIB_PLAIN_ESC}|${_OPENMP_IMPLICIT_LIB_PATH_ESC})( |$)" ) )
+            if(_OPENMP_IMPLICIT_LIB_DIR)
+              set(OpenMP_${_OPENMP_IMPLICIT_LIB_PLAIN}_LIBRARY "${_OPENMP_IMPLICIT_LIB}" CACHE FILEPATH
+                "Path to the ${_OPENMP_IMPLICIT_LIB_PLAIN} library for OpenMP")
+            else()
+              find_library(OpenMP_${_OPENMP_IMPLICIT_LIB_PLAIN}_LIBRARY
+                NAMES "${_OPENMP_IMPLICIT_LIB_NAME}"
+                DOC "Path to the ${_OPENMP_IMPLICIT_LIB_PLAIN} library for OpenMP"
+                HINTS ${OpenMP_${LANG}_IMPLICIT_LINK_DIRS}
+                CMAKE_FIND_ROOT_PATH_BOTH
+                NO_DEFAULT_PATH
+              )
+            endif()
+            mark_as_advanced(OpenMP_${_OPENMP_IMPLICIT_LIB_PLAIN}_LIBRARY)
+            list(APPEND _OPENMP_LIB_NAMES ${_OPENMP_IMPLICIT_LIB_PLAIN})
+          endif()
+        endforeach()
+        set("${OPENMP_LIB_NAMES_VAR}" "${_OPENMP_LIB_NAMES}" PARENT_SCOPE)
+      else()
+        # We do not know how to extract implicit OpenMP libraries for this compiler.
+        # Assume that it handles them automatically, e.g. the Intel Compiler on
+        # Windows should put the dependency in its object files.
+        set("${OPENMP_LIB_NAMES_VAR}" "" PARENT_SCOPE)
+      endif()
+      break()
+    elseif(CMAKE_${LANG}_COMPILER_ID STREQUAL "AppleClang"
+      AND CMAKE_${LANG}_COMPILER_VERSION VERSION_GREATER_EQUAL "7.0")
+
+      # Check for separate OpenMP library on AppleClang 7+
+      find_library(OpenMP_libomp_LIBRARY
+        NAMES omp gomp iomp5
+        HINTS ${CMAKE_${LANG}_IMPLICIT_LINK_DIRECTORIES}
+      )
+      mark_as_advanced(OpenMP_libomp_LIBRARY)
+
+      if(OpenMP_libomp_LIBRARY)
+        # Try without specifying include directory first. We only want to
+        # explicitly add a search path if the header can't be found on the
+        # default header search path already.
+        try_compile( OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG} ${CMAKE_BINARY_DIR} ${_OPENMP_TEST_SRC}
+          CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OPENMP_FLAGS_TEST}"
+          LINK_LIBRARIES ${CMAKE_${LANG}_VERBOSE_FLAG} ${OpenMP_libomp_LIBRARY}
+          OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT
+        )
+        if(NOT OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG})
+          find_path(OpenMP_${LANG}_INCLUDE_DIR omp.h)
+          mark_as_advanced(OpenMP_${LANG}_INCLUDE_DIR)
+          set(OpenMP_${LANG}_INCLUDE_DIR "${OpenMP_${LANG}_INCLUDE_DIR}" PARENT_SCOPE)
+          if(OpenMP_${LANG}_INCLUDE_DIR)
+            try_compile( OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG} ${CMAKE_BINARY_DIR} ${_OPENMP_TEST_SRC}
+              CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OPENMP_FLAGS_TEST}"
+                          "-DINCLUDE_DIRECTORIES:STRING=${OpenMP_${LANG}_INCLUDE_DIR}"
+              LINK_LIBRARIES ${CMAKE_${LANG}_VERBOSE_FLAG} ${OpenMP_libomp_LIBRARY}
+              OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT
+            )
+          endif()
+        endif()
+        if(OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG})
+          set("${OPENMP_FLAG_VAR}" "${OPENMP_FLAG}" PARENT_SCOPE)
+          set("${OPENMP_LIB_NAMES_VAR}" "libomp" PARENT_SCOPE)
+          break()
+        endif()
+      endif()
+    elseif(CMAKE_${LANG}_COMPILER_ID STREQUAL "Clang" AND WIN32)
+      # Check for separate OpenMP library for Clang on Windows
+      find_library(OpenMP_libomp_LIBRARY
+        NAMES libomp libgomp libiomp5
+        HINTS ${CMAKE_${LANG}_IMPLICIT_LINK_DIRECTORIES}
+      )
+      mark_as_advanced(OpenMP_libomp_LIBRARY)
+      if(OpenMP_libomp_LIBRARY)
+        try_compile( OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG} ${CMAKE_BINARY_DIR} ${_OPENMP_TEST_SRC}
+          CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OPENMP_FLAGS_TEST}"
+          LINK_LIBRARIES ${CMAKE_${LANG}_VERBOSE_FLAG} ${OpenMP_libomp_LIBRARY}
+          OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT
+        )
+        if(OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG})
+          set("${OPENMP_FLAG_VAR}" "${OPENMP_FLAG}" PARENT_SCOPE)
+          set("${OPENMP_LIB_NAMES_VAR}" "libomp" PARENT_SCOPE)
+          break()
+        endif()
+      endif()
+    else()
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Detecting ${LANG} OpenMP failed with the following output:\n${OpenMP_TRY_COMPILE_OUTPUT}\n\n")
+    endif()
+    set("${OPENMP_LIB_NAMES_VAR}" "NOTFOUND" PARENT_SCOPE)
+    set("${OPENMP_FLAG_VAR}" "NOTFOUND" PARENT_SCOPE)
+  endforeach()
+
+  unset(OpenMP_VERBOSE_COMPILE_OPTIONS)
+endfunction()
+
+set(OpenMP_C_CXX_CHECK_VERSION_SOURCE
+"
+#include <stdio.h>
+#include <omp.h>
+const char ompver_str[] = { 'I', 'N', 'F', 'O', ':', 'O', 'p', 'e', 'n', 'M',
+                            'P', '-', 'd', 'a', 't', 'e', '[',
+                            ('0' + ((_OPENMP/100000)%10)),
+                            ('0' + ((_OPENMP/10000)%10)),
+                            ('0' + ((_OPENMP/1000)%10)),
+                            ('0' + ((_OPENMP/100)%10)),
+                            ('0' + ((_OPENMP/10)%10)),
+                            ('0' + ((_OPENMP/1)%10)),
+                            ']', '\\0' };
+int main(void)
+{
+  puts(ompver_str);
+  return 0;
+}
+")
+
+set(OpenMP_Fortran_CHECK_VERSION_SOURCE
+"
+      program omp_ver
+      @OpenMP_Fortran_INCLUDE_LINE@
+      integer, parameter :: zero = ichar('0')
+      integer, parameter :: ompv = openmp_version
+      character, dimension(24), parameter :: ompver_str =&
+      (/ 'I', 'N', 'F', 'O', ':', 'O', 'p', 'e', 'n', 'M', 'P', '-',&
+         'd', 'a', 't', 'e', '[',&
+         char(zero + mod(ompv/100000, 10)),&
+         char(zero + mod(ompv/10000, 10)),&
+         char(zero + mod(ompv/1000, 10)),&
+         char(zero + mod(ompv/100, 10)),&
+         char(zero + mod(ompv/10, 10)),&
+         char(zero + mod(ompv/1, 10)), ']' /)
+      print *, ompver_str
+      end program omp_ver
+")
+
+function(_OPENMP_GET_SPEC_DATE LANG SPEC_DATE)
+  _OPENMP_WRITE_SOURCE_FILE("${LANG}" "CHECK_VERSION_SOURCE" OpenMPCheckVersion _OPENMP_TEST_SRC)
+
+  unset(_includeDirFlags)
+  if(OpenMP_${LANG}_INCLUDE_DIR)
+    set(_includeDirFlags "-DINCLUDE_DIRECTORIES:STRING=${OpenMP_${LANG}_INCLUDE_DIR}")
+  endif()
+
+  set(BIN_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindOpenMP/ompver_${LANG}.bin")
+  string(REGEX REPLACE "[-/=+]" "" OPENMP_PLAIN_FLAG "${OPENMP_FLAG}")
+  try_compile(OpenMP_SPECTEST_${LANG}_${OPENMP_PLAIN_FLAG} "${CMAKE_BINARY_DIR}" "${_OPENMP_TEST_SRC}"
+              CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OpenMP_${LANG}_FLAGS}" ${_includeDirFlags}
+              COPY_FILE ${BIN_FILE}
+              OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT)
+
+  if(${OpenMP_SPECTEST_${LANG}_${OPENMP_PLAIN_FLAG}})
+    file(STRINGS ${BIN_FILE} specstr LIMIT_COUNT 1 REGEX "INFO:OpenMP-date")
+    set(regex_spec_date ".*INFO:OpenMP-date\\[0*([^]]*)\\].*")
+    if("${specstr}" MATCHES "${regex_spec_date}")
+      set(${SPEC_DATE} "${CMAKE_MATCH_1}" PARENT_SCOPE)
+    endif()
+  else()
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Detecting ${LANG} OpenMP version failed with the following output:\n${OpenMP_TRY_COMPILE_OUTPUT}\n\n")
+  endif()
+endfunction()
+
+macro(_OPENMP_SET_VERSION_BY_SPEC_DATE LANG)
+  set(OpenMP_SPEC_DATE_MAP
+    # Preview versions
+    "201611=5.0" # OpenMP 5.0 preview 1
+    # Combined versions, 2.5 onwards
+    "201811=5.0"
+    "201511=4.5"
+    "201307=4.0"
+    "201107=3.1"
+    "200805=3.0"
+    "200505=2.5"
+    # C/C++ version 2.0
+    "200203=2.0"
+    # Fortran version 2.0
+    "200011=2.0"
+    # Fortran version 1.1
+    "199911=1.1"
+    # C/C++ version 1.0 (there's no 1.1 for C/C++)
+    "199810=1.0"
+    # Fortran version 1.0
+    "199710=1.0"
+  )
+  if(MSVC)
+    list(APPEND OpenMP_SPEC_DATE_MAP "2019=2.0")
+  endif()
+
+  if(OpenMP_${LANG}_SPEC_DATE)
+    string(REGEX MATCHALL "${OpenMP_${LANG}_SPEC_DATE}=([0-9]+)\\.([0-9]+)" _version_match "${OpenMP_SPEC_DATE_MAP}")
+  else()
+    set(_version_match "")
+  endif()
+  if(NOT _version_match STREQUAL "")
+    set(OpenMP_${LANG}_VERSION_MAJOR ${CMAKE_MATCH_1})
+    set(OpenMP_${LANG}_VERSION_MINOR ${CMAKE_MATCH_2})
+    set(OpenMP_${LANG}_VERSION "${OpenMP_${LANG}_VERSION_MAJOR}.${OpenMP_${LANG}_VERSION_MINOR}")
+  else()
+    unset(OpenMP_${LANG}_VERSION_MAJOR)
+    unset(OpenMP_${LANG}_VERSION_MINOR)
+    unset(OpenMP_${LANG}_VERSION)
+  endif()
+  unset(_version_match)
+  unset(OpenMP_SPEC_DATE_MAP)
+endmacro()
+
+foreach(LANG IN ITEMS C CXX)
+  if(CMAKE_${LANG}_COMPILER_LOADED)
+    if(NOT DEFINED OpenMP_${LANG}_FLAGS OR "${OpenMP_${LANG}_FLAGS}" STREQUAL "NOTFOUND"
+      OR NOT DEFINED OpenMP_${LANG}_LIB_NAMES OR "${OpenMP_${LANG}_LIB_NAMES}" STREQUAL "NOTFOUND")
+      _OPENMP_GET_FLAGS("${LANG}" "${LANG}" OpenMP_${LANG}_FLAGS_WORK OpenMP_${LANG}_LIB_NAMES_WORK)
+      set(OpenMP_${LANG}_FLAGS "${OpenMP_${LANG}_FLAGS_WORK}"
+        CACHE STRING "${LANG} compiler flags for OpenMP parallelization" FORCE)
+      set(OpenMP_${LANG}_LIB_NAMES "${OpenMP_${LANG}_LIB_NAMES_WORK}"
+        CACHE STRING "${LANG} compiler libraries for OpenMP parallelization" FORCE)
+      mark_as_advanced(OpenMP_${LANG}_FLAGS OpenMP_${LANG}_LIB_NAMES)
+    endif()
+  endif()
+endforeach()
+
+if(CMAKE_Fortran_COMPILER_LOADED)
+  if(NOT DEFINED OpenMP_Fortran_FLAGS OR "${OpenMP_Fortran_FLAGS}" STREQUAL "NOTFOUND"
+    OR NOT DEFINED OpenMP_Fortran_LIB_NAMES OR "${OpenMP_Fortran_LIB_NAMES}" STREQUAL "NOTFOUND"
+    OR NOT DEFINED OpenMP_Fortran_HAVE_OMPLIB_MODULE)
+    set(OpenMP_Fortran_INCLUDE_LINE "use omp_lib\n      implicit none")
+    _OPENMP_GET_FLAGS("Fortran" "FortranHeader" OpenMP_Fortran_FLAGS_WORK OpenMP_Fortran_LIB_NAMES_WORK)
+    if(OpenMP_Fortran_FLAGS_WORK)
+      set(OpenMP_Fortran_HAVE_OMPLIB_MODULE TRUE CACHE BOOL INTERNAL "")
+    endif()
+
+    set(OpenMP_Fortran_FLAGS "${OpenMP_Fortran_FLAGS_WORK}"
+      CACHE STRING "Fortran compiler flags for OpenMP parallelization")
+    set(OpenMP_Fortran_LIB_NAMES "${OpenMP_Fortran_LIB_NAMES_WORK}"
+      CACHE STRING "Fortran compiler libraries for OpenMP parallelization")
+    mark_as_advanced(OpenMP_Fortran_FLAGS OpenMP_Fortran_LIB_NAMES)
+  endif()
+
+  if(NOT DEFINED OpenMP_Fortran_FLAGS OR "${OpenMP_Fortran_FLAGS}" STREQUAL "NOTFOUND"
+    OR NOT DEFINED OpenMP_Fortran_LIB_NAMES OR "${OpenMP_Fortran_LIB_NAMES}" STREQUAL "NOTFOUND"
+    OR NOT DEFINED OpenMP_Fortran_HAVE_OMPLIB_HEADER)
+    set(OpenMP_Fortran_INCLUDE_LINE "implicit none\n      include 'omp_lib.h'")
+    _OPENMP_GET_FLAGS("Fortran" "FortranModule" OpenMP_Fortran_FLAGS_WORK OpenMP_Fortran_LIB_NAMES_WORK)
+    if(OpenMP_Fortran_FLAGS_WORK)
+      set(OpenMP_Fortran_HAVE_OMPLIB_HEADER TRUE CACHE BOOL INTERNAL "")
+    endif()
+
+    set(OpenMP_Fortran_FLAGS "${OpenMP_Fortran_FLAGS_WORK}"
+      CACHE STRING "Fortran compiler flags for OpenMP parallelization")
+
+    set(OpenMP_Fortran_LIB_NAMES "${OpenMP_Fortran_LIB_NAMES}"
+      CACHE STRING "Fortran compiler libraries for OpenMP parallelization")
+  endif()
+
+  if(OpenMP_Fortran_HAVE_OMPLIB_MODULE)
+    set(OpenMP_Fortran_INCLUDE_LINE "use omp_lib\n      implicit none")
+  else()
+    set(OpenMP_Fortran_INCLUDE_LINE "implicit none\n      include 'omp_lib.h'")
+  endif()
+endif()
+
+if(NOT OpenMP_FIND_COMPONENTS)
+  set(OpenMP_FINDLIST C CXX Fortran)
+else()
+  set(OpenMP_FINDLIST ${OpenMP_FIND_COMPONENTS})
+endif()
+
+unset(_OpenMP_MIN_VERSION)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+foreach(LANG IN LISTS OpenMP_FINDLIST)
+  if(CMAKE_${LANG}_COMPILER_LOADED)
+    if (NOT OpenMP_${LANG}_SPEC_DATE AND OpenMP_${LANG}_FLAGS)
+      _OPENMP_GET_SPEC_DATE("${LANG}" OpenMP_${LANG}_SPEC_DATE_INTERNAL)
+      set(OpenMP_${LANG}_SPEC_DATE "${OpenMP_${LANG}_SPEC_DATE_INTERNAL}" CACHE
+        INTERNAL "${LANG} compiler's OpenMP specification date")
+    endif()
+    _OPENMP_SET_VERSION_BY_SPEC_DATE("${LANG}")
+
+    set(OpenMP_${LANG}_FIND_QUIETLY ${OpenMP_FIND_QUIETLY})
+    set(OpenMP_${LANG}_FIND_REQUIRED ${OpenMP_FIND_REQUIRED})
+    set(OpenMP_${LANG}_FIND_VERSION ${OpenMP_FIND_VERSION})
+    set(OpenMP_${LANG}_FIND_VERSION_EXACT ${OpenMP_FIND_VERSION_EXACT})
+
+    set(_OPENMP_${LANG}_REQUIRED_VARS OpenMP_${LANG}_FLAGS)
+    if("${OpenMP_${LANG}_LIB_NAMES}" STREQUAL "NOTFOUND")
+      set(_OPENMP_${LANG}_REQUIRED_LIB_VARS OpenMP_${LANG}_LIB_NAMES)
+    else()
+      foreach(_OPENMP_IMPLICIT_LIB IN LISTS OpenMP_${LANG}_LIB_NAMES)
+        list(APPEND _OPENMP_${LANG}_REQUIRED_LIB_VARS OpenMP_${_OPENMP_IMPLICIT_LIB}_LIBRARY)
+      endforeach()
+    endif()
+
+    find_package_handle_standard_args(OpenMP_${LANG}
+      NAME_MISMATCHED
+      REQUIRED_VARS OpenMP_${LANG}_FLAGS ${_OPENMP_${LANG}_REQUIRED_LIB_VARS}
+      VERSION_VAR OpenMP_${LANG}_VERSION
+    )
+
+    if(OpenMP_${LANG}_FOUND)
+      if(DEFINED OpenMP_${LANG}_VERSION)
+        if(NOT _OpenMP_MIN_VERSION OR _OpenMP_MIN_VERSION VERSION_GREATER OpenMP_${LANG}_VERSION)
+          set(_OpenMP_MIN_VERSION OpenMP_${LANG}_VERSION)
+        endif()
+      endif()
+      set(OpenMP_${LANG}_LIBRARIES "")
+      foreach(_OPENMP_IMPLICIT_LIB IN LISTS OpenMP_${LANG}_LIB_NAMES)
+        list(APPEND OpenMP_${LANG}_LIBRARIES "${OpenMP_${_OPENMP_IMPLICIT_LIB}_LIBRARY}")
+      endforeach()
+      if(OpenMP_${LANG}_INCLUDE_DIR)
+        set(OpenMP_${LANG}_INCLUDE_DIRS ${OpenMP_${LANG}_INCLUDE_DIR})
+      else()
+        set(OpenMP_${LANG}_INCLUDE_DIRS "")
+      endif()
+
+      if(NOT TARGET OpenMP::OpenMP_${LANG})
+        add_library(OpenMP::OpenMP_${LANG} INTERFACE IMPORTED)
+      endif()
+      if(OpenMP_${LANG}_FLAGS)
+        separate_arguments(_OpenMP_${LANG}_OPTIONS NATIVE_COMMAND "${OpenMP_${LANG}_FLAGS}")
+        set_property(TARGET OpenMP::OpenMP_${LANG} PROPERTY
+          INTERFACE_COMPILE_OPTIONS "$<$<COMPILE_LANGUAGE:${LANG}>:${_OpenMP_${LANG}_OPTIONS}>")
+        if(CMAKE_${LANG}_COMPILER_ID STREQUAL "Fujitsu")
+          set_property(TARGET OpenMP::OpenMP_${LANG} PROPERTY
+            INTERFACE_LINK_OPTIONS "${OpenMP_${LANG}_FLAGS}")
+        endif()
+        unset(_OpenMP_${LANG}_OPTIONS)
+      endif()
+      if(OpenMP_${LANG}_INCLUDE_DIRS)
+        set_property(TARGET OpenMP::OpenMP_${LANG} PROPERTY
+          INTERFACE_INCLUDE_DIRECTORIES "$<BUILD_INTERFACE:${OpenMP_${LANG}_INCLUDE_DIRS}>")
+      endif()
+      if(OpenMP_${LANG}_LIBRARIES)
+        set_property(TARGET OpenMP::OpenMP_${LANG} PROPERTY
+          INTERFACE_LINK_LIBRARIES "${OpenMP_${LANG}_LIBRARIES}")
+      endif()
+    endif()
+  endif()
+endforeach()
+
+unset(_OpenMP_REQ_VARS)
+foreach(LANG IN ITEMS C CXX Fortran)
+  if((NOT OpenMP_FIND_COMPONENTS AND CMAKE_${LANG}_COMPILER_LOADED) OR LANG IN_LIST OpenMP_FIND_COMPONENTS)
+    list(APPEND _OpenMP_REQ_VARS "OpenMP_${LANG}_FOUND")
+  endif()
+endforeach()
+
+find_package_handle_standard_args(OpenMP
+    REQUIRED_VARS ${_OpenMP_REQ_VARS}
+    VERSION_VAR ${_OpenMP_MIN_VERSION}
+    HANDLE_COMPONENTS)
+
+set(OPENMP_FOUND ${OpenMP_FOUND})
+
+if(CMAKE_Fortran_COMPILER_LOADED AND OpenMP_Fortran_FOUND)
+  if(NOT DEFINED OpenMP_Fortran_HAVE_OMPLIB_MODULE)
+    set(OpenMP_Fortran_HAVE_OMPLIB_MODULE FALSE CACHE BOOL INTERNAL "")
+  endif()
+  if(NOT DEFINED OpenMP_Fortran_HAVE_OMPLIB_HEADER)
+    set(OpenMP_Fortran_HAVE_OMPLIB_HEADER FALSE CACHE BOOL INTERNAL "")
+  endif()
+endif()
+
+if(NOT ( CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED OR CMAKE_Fortran_COMPILER_LOADED ))
+  message(SEND_ERROR "FindOpenMP requires the C, CXX or Fortran languages to be enabled")
+endif()
+
+unset(OpenMP_C_CXX_TEST_SOURCE)
+unset(OpenMP_Fortran_TEST_SOURCE)
+unset(OpenMP_C_CXX_CHECK_VERSION_SOURCE)
+unset(OpenMP_Fortran_CHECK_VERSION_SOURCE)
+unset(OpenMP_Fortran_INCLUDE_LINE)
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/FindOpenSSL.cmake b/share/cmake-3.22/Modules/FindOpenSSL.cmake
new file mode 100644
index 0000000..8474e05
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindOpenSSL.cmake
@@ -0,0 +1,679 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindOpenSSL
+-----------
+
+Find the OpenSSL encryption library.
+
+This module finds an installed OpenSSL library and determines its version.
+
+.. versionadded:: 3.19
+  When a version is requested, it can be specified as a simple value or as a
+  range. For a detailed description of version range usage and capabilities,
+  refer to the :command:`find_package` command.
+
+.. versionadded:: 3.18
+  Support for OpenSSL 3.0.
+
+Optional COMPONENTS
+^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.12
+
+This module supports two optional COMPONENTS: ``Crypto`` and ``SSL``.  Both
+components have associated imported targets, as described below.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.4
+
+This module defines the following :prop_tgt:`IMPORTED` targets:
+
+``OpenSSL::SSL``
+  The OpenSSL ``ssl`` library, if found.
+``OpenSSL::Crypto``
+  The OpenSSL ``crypto`` library, if found.
+``OpenSSL::applink``
+  .. versionadded:: 3.18
+
+  The OpenSSL ``applink`` components that might be need to be compiled into
+  projects under MSVC. This target is available only if found OpenSSL version
+  is not less than 0.9.8. By linking this target the above OpenSSL targets can
+  be linked even if the project has different MSVC runtime configurations with
+  the above OpenSSL targets. This target has no effect on platforms other than
+  MSVC.
+
+NOTE: Due to how ``INTERFACE_SOURCES`` are consumed by the consuming target,
+unless you certainly know what you are doing, it is always preferred to link
+``OpenSSL::applink`` target as ``PRIVATE`` and to make sure that this target is
+linked at most once for the whole dependency graph of any library or
+executable:
+
+.. code-block:: cmake
+
+   target_link_libraries(myTarget PRIVATE OpenSSL::applink)
+
+Otherwise you would probably encounter unexpected random problems when building
+and linking, as both the ISO C and the ISO C++ standard claims almost nothing
+about what a link process should be.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``OPENSSL_FOUND``
+  System has the OpenSSL library. If no components are requested it only
+  requires the crypto library.
+``OPENSSL_INCLUDE_DIR``
+  The OpenSSL include directory.
+``OPENSSL_CRYPTO_LIBRARY``
+  The OpenSSL crypto library.
+``OPENSSL_CRYPTO_LIBRARIES``
+  The OpenSSL crypto library and its dependencies.
+``OPENSSL_SSL_LIBRARY``
+  The OpenSSL SSL library.
+``OPENSSL_SSL_LIBRARIES``
+  The OpenSSL SSL library and its dependencies.
+``OPENSSL_LIBRARIES``
+  All OpenSSL libraries and their dependencies.
+``OPENSSL_VERSION``
+  This is set to ``$major.$minor.$revision$patch`` (e.g. ``0.9.8s``).
+``OPENSSL_APPLINK_SOURCE``
+  The sources in the target ``OpenSSL::applink`` that is mentioned above. This
+  variable shall always be undefined if found openssl version is less than
+  0.9.8 or if platform is not MSVC.
+
+Hints
+^^^^^
+
+Set ``OPENSSL_ROOT_DIR`` to the root directory of an OpenSSL installation.
+
+.. versionadded:: 3.4
+  Set ``OPENSSL_USE_STATIC_LIBS`` to ``TRUE`` to look for static libraries.
+
+.. versionadded:: 3.5
+  Set ``OPENSSL_MSVC_STATIC_RT`` set ``TRUE`` to choose the MT version of the lib.
+#]=======================================================================]
+
+macro(_OpenSSL_test_and_find_dependencies ssl_library crypto_library)
+  if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND
+     (("${ssl_library}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$") OR
+      ("${crypto_library}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$")))
+    set(_OpenSSL_has_dependencies TRUE)
+    find_package(Threads)
+  else()
+    set(_OpenSSL_has_dependencies FALSE)
+  endif()
+endmacro()
+
+function(_OpenSSL_add_dependencies libraries_var)
+  if(CMAKE_THREAD_LIBS_INIT)
+    list(APPEND ${libraries_var} ${CMAKE_THREAD_LIBS_INIT})
+  endif()
+  list(APPEND ${libraries_var} ${CMAKE_DL_LIBS})
+  set(${libraries_var} ${${libraries_var}} PARENT_SCOPE)
+endfunction()
+
+function(_OpenSSL_target_add_dependencies target)
+  if(_OpenSSL_has_dependencies)
+    set_property( TARGET ${target} APPEND PROPERTY INTERFACE_LINK_LIBRARIES Threads::Threads )
+    set_property( TARGET ${target} APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS} )
+  endif()
+  if(WIN32 AND OPENSSL_USE_STATIC_LIBS)
+    set_property( TARGET ${target} APPEND PROPERTY INTERFACE_LINK_LIBRARIES ws2_32 )
+    set_property( TARGET ${target} APPEND PROPERTY INTERFACE_LINK_LIBRARIES crypt32 )
+  endif()
+endfunction()
+
+if (UNIX)
+  find_package(PkgConfig QUIET)
+  pkg_check_modules(_OPENSSL QUIET openssl)
+endif ()
+
+# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
+if(OPENSSL_USE_STATIC_LIBS)
+  set(_openssl_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
+  if(WIN32)
+    set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
+  else()
+    set(CMAKE_FIND_LIBRARY_SUFFIXES .a )
+  endif()
+endif()
+
+if (WIN32)
+  # http://www.slproweb.com/products/Win32OpenSSL.html
+  set(_OPENSSL_ROOT_HINTS
+    ${OPENSSL_ROOT_DIR}
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;Inno Setup: App Path]"
+    ENV OPENSSL_ROOT_DIR
+    )
+
+  if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
+    set(_arch "Win64")
+    file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
+  else()
+    set(_arch "Win32")
+    set(_progfiles_x86 "ProgramFiles(x86)")
+    if(NOT "$ENV{${_progfiles_x86}}" STREQUAL "")
+      # under windows 64 bit machine
+      file(TO_CMAKE_PATH "$ENV{${_progfiles_x86}}" _programfiles)
+    else()
+      # under windows 32 bit machine
+      file(TO_CMAKE_PATH "$ENV{ProgramFiles}" _programfiles)
+    endif()
+  endif()
+
+  set(_OPENSSL_ROOT_PATHS
+    "${_programfiles}/OpenSSL"
+    "${_programfiles}/OpenSSL-${_arch}"
+    "C:/OpenSSL/"
+    "C:/OpenSSL-${_arch}/"
+    )
+  unset(_programfiles)
+  unset(_arch)
+else ()
+  set(_OPENSSL_ROOT_HINTS
+    ${OPENSSL_ROOT_DIR}
+    ENV OPENSSL_ROOT_DIR
+    )
+endif ()
+
+set(_OPENSSL_ROOT_HINTS_AND_PATHS
+    HINTS ${_OPENSSL_ROOT_HINTS}
+    PATHS ${_OPENSSL_ROOT_PATHS}
+    )
+
+find_path(OPENSSL_INCLUDE_DIR
+  NAMES
+    openssl/ssl.h
+  ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+  HINTS
+    ${_OPENSSL_INCLUDEDIR}
+    ${_OPENSSL_INCLUDE_DIRS}
+  PATH_SUFFIXES
+    include
+)
+
+if(WIN32 AND NOT CYGWIN)
+  if(MSVC)
+    # /MD and /MDd are the standard values - if someone wants to use
+    # others, the libnames have to change here too
+    # use also ssl and ssleay32 in debug as fallback for openssl < 0.9.8b
+    # enable OPENSSL_MSVC_STATIC_RT to get the libs build /MT (Multithreaded no-DLL)
+    # In Visual C++ naming convention each of these four kinds of Windows libraries has it's standard suffix:
+    #   * MD for dynamic-release
+    #   * MDd for dynamic-debug
+    #   * MT for static-release
+    #   * MTd for static-debug
+
+    # Implementation details:
+    # We are using the libraries located in the VC subdir instead of the parent directory even though :
+    # libeay32MD.lib is identical to ../libeay32.lib, and
+    # ssleay32MD.lib is identical to ../ssleay32.lib
+    # enable OPENSSL_USE_STATIC_LIBS to use the static libs located in lib/VC/static
+
+    if (OPENSSL_MSVC_STATIC_RT)
+      set(_OPENSSL_MSVC_RT_MODE "MT")
+    else ()
+      set(_OPENSSL_MSVC_RT_MODE "MD")
+    endif ()
+
+    # Since OpenSSL 1.1, lib names are like libcrypto32MTd.lib and libssl32MTd.lib
+    if( "${CMAKE_SIZEOF_VOID_P}" STREQUAL "8" )
+        set(_OPENSSL_MSVC_ARCH_SUFFIX "64")
+    else()
+        set(_OPENSSL_MSVC_ARCH_SUFFIX "32")
+    endif()
+
+    if(OPENSSL_USE_STATIC_LIBS)
+      set(_OPENSSL_STATIC_SUFFIX
+        "_static"
+      )
+      set(_OPENSSL_PATH_SUFFIXES
+        "lib/VC/static"
+        "VC/static"
+        "lib"
+        )
+    else()
+      set(_OPENSSL_STATIC_SUFFIX
+        ""
+      )
+      set(_OPENSSL_PATH_SUFFIXES
+        "lib/VC"
+        "VC"
+        "lib"
+        )
+    endif ()
+
+    find_library(LIB_EAY_DEBUG
+      NAMES
+        # When OpenSSL is built with default options, the static library name is suffixed with "_static".
+        # Looking the "libcrypto_static.lib" with a higher priority than "libcrypto.lib" which is the
+        # import library of "libcrypto.dll".
+        libcrypto${_OPENSSL_STATIC_SUFFIX}${_OPENSSL_MSVC_ARCH_SUFFIX}${_OPENSSL_MSVC_RT_MODE}d
+        libcrypto${_OPENSSL_STATIC_SUFFIX}${_OPENSSL_MSVC_RT_MODE}d
+        libcrypto${_OPENSSL_STATIC_SUFFIX}d
+        libeay32${_OPENSSL_STATIC_SUFFIX}${_OPENSSL_MSVC_RT_MODE}d
+        libeay32${_OPENSSL_STATIC_SUFFIX}d
+        crypto${_OPENSSL_STATIC_SUFFIX}d
+        # When OpenSSL is built with the "-static" option, only the static build is produced,
+        # and it is not suffixed with "_static".
+        libcrypto${_OPENSSL_MSVC_ARCH_SUFFIX}${_OPENSSL_MSVC_RT_MODE}d
+        libcrypto${_OPENSSL_MSVC_RT_MODE}d
+        libcryptod
+        libeay32${_OPENSSL_MSVC_RT_MODE}d
+        libeay32d
+        cryptod
+      NAMES_PER_DIR
+      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+      PATH_SUFFIXES
+        ${_OPENSSL_PATH_SUFFIXES}
+    )
+
+    find_library(LIB_EAY_RELEASE
+      NAMES
+        # When OpenSSL is built with default options, the static library name is suffixed with "_static".
+        # Looking the "libcrypto_static.lib" with a higher priority than "libcrypto.lib" which is the
+        # import library of "libcrypto.dll".
+        libcrypto${_OPENSSL_STATIC_SUFFIX}${_OPENSSL_MSVC_ARCH_SUFFIX}${_OPENSSL_MSVC_RT_MODE}
+        libcrypto${_OPENSSL_STATIC_SUFFIX}${_OPENSSL_MSVC_RT_MODE}
+        libcrypto${_OPENSSL_STATIC_SUFFIX}
+        libeay32${_OPENSSL_STATIC_SUFFIX}${_OPENSSL_MSVC_RT_MODE}
+        libeay32${_OPENSSL_STATIC_SUFFIX}
+        crypto${_OPENSSL_STATIC_SUFFIX}
+        # When OpenSSL is built with the "-static" option, only the static build is produced,
+        # and it is not suffixed with "_static".
+        libcrypto${_OPENSSL_MSVC_ARCH_SUFFIX}${_OPENSSL_MSVC_RT_MODE}
+        libcrypto${_OPENSSL_MSVC_RT_MODE}
+        libcrypto
+        libeay32${_OPENSSL_MSVC_RT_MODE}
+        libeay32
+        crypto
+      NAMES_PER_DIR
+      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+      PATH_SUFFIXES
+        ${_OPENSSL_PATH_SUFFIXES}
+    )
+
+    find_library(SSL_EAY_DEBUG
+      NAMES
+        # When OpenSSL is built with default options, the static library name is suffixed with "_static".
+        # Looking the "libssl_static.lib" with a higher priority than "libssl.lib" which is the
+        # import library of "libssl.dll".
+        libssl${_OPENSSL_STATIC_SUFFIX}${_OPENSSL_MSVC_ARCH_SUFFIX}${_OPENSSL_MSVC_RT_MODE}d
+        libssl${_OPENSSL_STATIC_SUFFIX}${_OPENSSL_MSVC_RT_MODE}d
+        libssl${_OPENSSL_STATIC_SUFFIX}d
+        ssleay32${_OPENSSL_STATIC_SUFFIX}${_OPENSSL_MSVC_RT_MODE}d
+        ssleay32${_OPENSSL_STATIC_SUFFIX}d
+        ssl${_OPENSSL_STATIC_SUFFIX}d
+        # When OpenSSL is built with the "-static" option, only the static build is produced,
+        # and it is not suffixed with "_static".
+        libssl${_OPENSSL_MSVC_ARCH_SUFFIX}${_OPENSSL_MSVC_RT_MODE}d
+        libssl${_OPENSSL_MSVC_RT_MODE}d
+        libssld
+        ssleay32${_OPENSSL_MSVC_RT_MODE}d
+        ssleay32d
+        ssld
+      NAMES_PER_DIR
+      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+      PATH_SUFFIXES
+        ${_OPENSSL_PATH_SUFFIXES}
+    )
+
+    find_library(SSL_EAY_RELEASE
+      NAMES
+        # When OpenSSL is built with default options, the static library name is suffixed with "_static".
+        # Looking the "libssl_static.lib" with a higher priority than "libssl.lib" which is the
+        # import library of "libssl.dll".
+        libssl${_OPENSSL_STATIC_SUFFIX}${_OPENSSL_MSVC_ARCH_SUFFIX}${_OPENSSL_MSVC_RT_MODE}
+        libssl${_OPENSSL_STATIC_SUFFIX}${_OPENSSL_MSVC_RT_MODE}
+        libssl${_OPENSSL_STATIC_SUFFIX}
+        ssleay32${_OPENSSL_STATIC_SUFFIX}${_OPENSSL_MSVC_RT_MODE}
+        ssleay32${_OPENSSL_STATIC_SUFFIX}
+        ssl${_OPENSSL_STATIC_SUFFIX}
+        # When OpenSSL is built with the "-static" option, only the static build is produced,
+        # and it is not suffixed with "_static".
+        libssl${_OPENSSL_MSVC_ARCH_SUFFIX}${_OPENSSL_MSVC_RT_MODE}
+        libssl${_OPENSSL_MSVC_RT_MODE}
+        libssl
+        ssleay32${_OPENSSL_MSVC_RT_MODE}
+        ssleay32
+        ssl
+      NAMES_PER_DIR
+      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+      PATH_SUFFIXES
+        ${_OPENSSL_PATH_SUFFIXES}
+    )
+
+    set(LIB_EAY_LIBRARY_DEBUG "${LIB_EAY_DEBUG}")
+    set(LIB_EAY_LIBRARY_RELEASE "${LIB_EAY_RELEASE}")
+    set(SSL_EAY_LIBRARY_DEBUG "${SSL_EAY_DEBUG}")
+    set(SSL_EAY_LIBRARY_RELEASE "${SSL_EAY_RELEASE}")
+
+    include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+    select_library_configurations(LIB_EAY)
+    select_library_configurations(SSL_EAY)
+
+    mark_as_advanced(LIB_EAY_LIBRARY_DEBUG LIB_EAY_LIBRARY_RELEASE
+                     SSL_EAY_LIBRARY_DEBUG SSL_EAY_LIBRARY_RELEASE)
+    set(OPENSSL_SSL_LIBRARY ${SSL_EAY_LIBRARY} )
+    set(OPENSSL_CRYPTO_LIBRARY ${LIB_EAY_LIBRARY} )
+  elseif(MINGW)
+    # same player, for MinGW
+    set(LIB_EAY_NAMES crypto libeay32)
+    set(SSL_EAY_NAMES ssl ssleay32)
+    find_library(LIB_EAY
+      NAMES
+        ${LIB_EAY_NAMES}
+      NAMES_PER_DIR
+      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+      PATH_SUFFIXES
+        "lib/MinGW"
+        "lib"
+    )
+
+    find_library(SSL_EAY
+      NAMES
+        ${SSL_EAY_NAMES}
+      NAMES_PER_DIR
+      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+      PATH_SUFFIXES
+        "lib/MinGW"
+        "lib"
+    )
+
+    mark_as_advanced(SSL_EAY LIB_EAY)
+    set(OPENSSL_SSL_LIBRARY ${SSL_EAY} )
+    set(OPENSSL_CRYPTO_LIBRARY ${LIB_EAY} )
+    unset(LIB_EAY_NAMES)
+    unset(SSL_EAY_NAMES)
+  else()
+    # Not sure what to pick for -say- intel, let's use the toplevel ones and hope someone report issues:
+    find_library(LIB_EAY
+      NAMES
+        libcrypto
+        libeay32
+      NAMES_PER_DIR
+      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+      HINTS
+        ${_OPENSSL_LIBDIR}
+      PATH_SUFFIXES
+        lib
+    )
+
+    find_library(SSL_EAY
+      NAMES
+        libssl
+        ssleay32
+      NAMES_PER_DIR
+      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+      HINTS
+        ${_OPENSSL_LIBDIR}
+      PATH_SUFFIXES
+        lib
+    )
+
+    mark_as_advanced(SSL_EAY LIB_EAY)
+    set(OPENSSL_SSL_LIBRARY ${SSL_EAY} )
+    set(OPENSSL_CRYPTO_LIBRARY ${LIB_EAY} )
+  endif()
+else()
+
+  find_library(OPENSSL_SSL_LIBRARY
+    NAMES
+      ssl
+      ssleay32
+      ssleay32MD
+    NAMES_PER_DIR
+    ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+    HINTS
+      ${_OPENSSL_LIBDIR}
+      ${_OPENSSL_LIBRARY_DIRS}
+    PATH_SUFFIXES
+      lib
+  )
+
+  find_library(OPENSSL_CRYPTO_LIBRARY
+    NAMES
+      crypto
+    NAMES_PER_DIR
+    ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+    HINTS
+      ${_OPENSSL_LIBDIR}
+      ${_OPENSSL_LIBRARY_DIRS}
+    PATH_SUFFIXES
+      lib
+  )
+
+  mark_as_advanced(OPENSSL_CRYPTO_LIBRARY OPENSSL_SSL_LIBRARY)
+
+endif()
+
+set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY})
+set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY})
+set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARIES} ${OPENSSL_CRYPTO_LIBRARIES} )
+_OpenSSL_test_and_find_dependencies("${OPENSSL_SSL_LIBRARY}" "${OPENSSL_CRYPTO_LIBRARY}")
+if(_OpenSSL_has_dependencies)
+  _OpenSSL_add_dependencies( OPENSSL_SSL_LIBRARIES )
+  _OpenSSL_add_dependencies( OPENSSL_CRYPTO_LIBRARIES )
+  _OpenSSL_add_dependencies( OPENSSL_LIBRARIES )
+endif()
+
+function(from_hex HEX DEC)
+  string(TOUPPER "${HEX}" HEX)
+  set(_res 0)
+  string(LENGTH "${HEX}" _strlen)
+
+  while (_strlen GREATER 0)
+    math(EXPR _res "${_res} * 16")
+    string(SUBSTRING "${HEX}" 0 1 NIBBLE)
+    string(SUBSTRING "${HEX}" 1 -1 HEX)
+    if (NIBBLE STREQUAL "A")
+      math(EXPR _res "${_res} + 10")
+    elseif (NIBBLE STREQUAL "B")
+      math(EXPR _res "${_res} + 11")
+    elseif (NIBBLE STREQUAL "C")
+      math(EXPR _res "${_res} + 12")
+    elseif (NIBBLE STREQUAL "D")
+      math(EXPR _res "${_res} + 13")
+    elseif (NIBBLE STREQUAL "E")
+      math(EXPR _res "${_res} + 14")
+    elseif (NIBBLE STREQUAL "F")
+      math(EXPR _res "${_res} + 15")
+    else()
+      math(EXPR _res "${_res} + ${NIBBLE}")
+    endif()
+
+    string(LENGTH "${HEX}" _strlen)
+  endwhile()
+
+  set(${DEC} ${_res} PARENT_SCOPE)
+endfunction()
+
+if(OPENSSL_INCLUDE_DIR AND EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h")
+  file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" openssl_version_str
+       REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])+.*")
+
+  if(openssl_version_str)
+    # The version number is encoded as 0xMNNFFPPS: major minor fix patch status
+    # The status gives if this is a developer or prerelease and is ignored here.
+    # Major, minor, and fix directly translate into the version numbers shown in
+    # the string. The patch field translates to the single character suffix that
+    # indicates the bug fix state, which 00 -> nothing, 01 -> a, 02 -> b and so
+    # on.
+
+    string(REGEX REPLACE "^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F]).*$"
+           "\\1;\\2;\\3;\\4;\\5" OPENSSL_VERSION_LIST "${openssl_version_str}")
+    list(GET OPENSSL_VERSION_LIST 0 OPENSSL_VERSION_MAJOR)
+    list(GET OPENSSL_VERSION_LIST 1 OPENSSL_VERSION_MINOR)
+    from_hex("${OPENSSL_VERSION_MINOR}" OPENSSL_VERSION_MINOR)
+    list(GET OPENSSL_VERSION_LIST 2 OPENSSL_VERSION_FIX)
+    from_hex("${OPENSSL_VERSION_FIX}" OPENSSL_VERSION_FIX)
+    list(GET OPENSSL_VERSION_LIST 3 OPENSSL_VERSION_PATCH)
+
+    if (NOT OPENSSL_VERSION_PATCH STREQUAL "00")
+      from_hex("${OPENSSL_VERSION_PATCH}" _tmp)
+      # 96 is the ASCII code of 'a' minus 1
+      math(EXPR OPENSSL_VERSION_PATCH_ASCII "${_tmp} + 96")
+      unset(_tmp)
+      # Once anyone knows how OpenSSL would call the patch versions beyond 'z'
+      # this should be updated to handle that, too. This has not happened yet
+      # so it is simply ignored here for now.
+      string(ASCII "${OPENSSL_VERSION_PATCH_ASCII}" OPENSSL_VERSION_PATCH_STRING)
+    endif ()
+
+    set(OPENSSL_VERSION "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}.${OPENSSL_VERSION_FIX}${OPENSSL_VERSION_PATCH_STRING}")
+  else ()
+    # Since OpenSSL 3.0.0, the new version format is MAJOR.MINOR.PATCH and
+    # a new OPENSSL_VERSION_STR macro contains exactly that
+    file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" OPENSSL_VERSION_STR
+         REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_STR[\t ]+\"([0-9])+\\.([0-9])+\\.([0-9])+\".*")
+    string(REGEX REPLACE "^.*OPENSSL_VERSION_STR[\t ]+\"([0-9]+\\.[0-9]+\\.[0-9]+)\".*$"
+           "\\1" OPENSSL_VERSION_STR "${OPENSSL_VERSION_STR}")
+
+    set(OPENSSL_VERSION "${OPENSSL_VERSION_STR}")
+
+    unset(OPENSSL_VERSION_STR)
+  endif ()
+endif ()
+
+foreach(_comp IN LISTS OpenSSL_FIND_COMPONENTS)
+  if(_comp STREQUAL "Crypto")
+    if(EXISTS "${OPENSSL_INCLUDE_DIR}" AND
+        (EXISTS "${OPENSSL_CRYPTO_LIBRARY}" OR
+        EXISTS "${LIB_EAY_LIBRARY_DEBUG}" OR
+        EXISTS "${LIB_EAY_LIBRARY_RELEASE}")
+    )
+      set(OpenSSL_${_comp}_FOUND TRUE)
+    else()
+      set(OpenSSL_${_comp}_FOUND FALSE)
+    endif()
+  elseif(_comp STREQUAL "SSL")
+    if(EXISTS "${OPENSSL_INCLUDE_DIR}" AND
+        (EXISTS "${OPENSSL_SSL_LIBRARY}" OR
+        EXISTS "${SSL_EAY_LIBRARY_DEBUG}" OR
+        EXISTS "${SSL_EAY_LIBRARY_RELEASE}")
+    )
+      set(OpenSSL_${_comp}_FOUND TRUE)
+    else()
+      set(OpenSSL_${_comp}_FOUND FALSE)
+    endif()
+  else()
+    message(WARNING "${_comp} is not a valid OpenSSL component")
+    set(OpenSSL_${_comp}_FOUND FALSE)
+  endif()
+endforeach()
+unset(_comp)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(OpenSSL
+  REQUIRED_VARS
+    OPENSSL_CRYPTO_LIBRARY
+    OPENSSL_INCLUDE_DIR
+  VERSION_VAR
+    OPENSSL_VERSION
+  HANDLE_VERSION_RANGE
+  HANDLE_COMPONENTS
+  FAIL_MESSAGE
+    "Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
+)
+
+mark_as_advanced(OPENSSL_INCLUDE_DIR)
+
+if(OPENSSL_FOUND)
+  if(NOT TARGET OpenSSL::Crypto AND
+      (EXISTS "${OPENSSL_CRYPTO_LIBRARY}" OR
+        EXISTS "${LIB_EAY_LIBRARY_DEBUG}" OR
+        EXISTS "${LIB_EAY_LIBRARY_RELEASE}")
+      )
+    add_library(OpenSSL::Crypto UNKNOWN IMPORTED)
+    set_target_properties(OpenSSL::Crypto PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}")
+    if(EXISTS "${OPENSSL_CRYPTO_LIBRARY}")
+      set_target_properties(OpenSSL::Crypto PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+        IMPORTED_LOCATION "${OPENSSL_CRYPTO_LIBRARY}")
+    endif()
+    if(EXISTS "${LIB_EAY_LIBRARY_RELEASE}")
+      set_property(TARGET OpenSSL::Crypto APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS RELEASE)
+      set_target_properties(OpenSSL::Crypto PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
+        IMPORTED_LOCATION_RELEASE "${LIB_EAY_LIBRARY_RELEASE}")
+    endif()
+    if(EXISTS "${LIB_EAY_LIBRARY_DEBUG}")
+      set_property(TARGET OpenSSL::Crypto APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS DEBUG)
+      set_target_properties(OpenSSL::Crypto PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
+        IMPORTED_LOCATION_DEBUG "${LIB_EAY_LIBRARY_DEBUG}")
+    endif()
+    _OpenSSL_target_add_dependencies(OpenSSL::Crypto)
+  endif()
+
+  if(NOT TARGET OpenSSL::SSL AND
+      (EXISTS "${OPENSSL_SSL_LIBRARY}" OR
+        EXISTS "${SSL_EAY_LIBRARY_DEBUG}" OR
+        EXISTS "${SSL_EAY_LIBRARY_RELEASE}")
+      )
+    add_library(OpenSSL::SSL UNKNOWN IMPORTED)
+    set_target_properties(OpenSSL::SSL PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}")
+    if(EXISTS "${OPENSSL_SSL_LIBRARY}")
+      set_target_properties(OpenSSL::SSL PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+        IMPORTED_LOCATION "${OPENSSL_SSL_LIBRARY}")
+    endif()
+    if(EXISTS "${SSL_EAY_LIBRARY_RELEASE}")
+      set_property(TARGET OpenSSL::SSL APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS RELEASE)
+      set_target_properties(OpenSSL::SSL PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
+        IMPORTED_LOCATION_RELEASE "${SSL_EAY_LIBRARY_RELEASE}")
+    endif()
+    if(EXISTS "${SSL_EAY_LIBRARY_DEBUG}")
+      set_property(TARGET OpenSSL::SSL APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS DEBUG)
+      set_target_properties(OpenSSL::SSL PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
+        IMPORTED_LOCATION_DEBUG "${SSL_EAY_LIBRARY_DEBUG}")
+    endif()
+    if(TARGET OpenSSL::Crypto)
+      set_target_properties(OpenSSL::SSL PROPERTIES
+        INTERFACE_LINK_LIBRARIES OpenSSL::Crypto)
+    endif()
+    _OpenSSL_target_add_dependencies(OpenSSL::SSL)
+  endif()
+
+  if("${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_FIX}" VERSION_GREATER_EQUAL "0.9.8")
+    if(MSVC)
+      if(EXISTS "${OPENSSL_INCLUDE_DIR}")
+        set(_OPENSSL_applink_paths PATHS ${OPENSSL_INCLUDE_DIR})
+      endif()
+      find_file(OPENSSL_APPLINK_SOURCE
+        NAMES
+          openssl/applink.c
+        ${_OPENSSL_applink_paths}
+        NO_DEFAULT_PATH)
+      if(OPENSSL_APPLINK_SOURCE)
+        set(_OPENSSL_applink_interface_srcs ${OPENSSL_APPLINK_SOURCE})
+      endif()
+    endif()
+    if(NOT TARGET OpenSSL::applink)
+      add_library(OpenSSL::applink INTERFACE IMPORTED)
+      set_property(TARGET OpenSSL::applink APPEND
+        PROPERTY INTERFACE_SOURCES
+          ${_OPENSSL_applink_interface_srcs})
+    endif()
+  endif()
+endif()
+
+# Restore the original find library ordering
+if(OPENSSL_USE_STATIC_LIBS)
+  set(CMAKE_FIND_LIBRARY_SUFFIXES ${_openssl_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
+endif()
diff --git a/share/cmake-3.18/Modules/FindOpenSceneGraph.cmake b/share/cmake-3.22/Modules/FindOpenSceneGraph.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindOpenSceneGraph.cmake
rename to share/cmake-3.22/Modules/FindOpenSceneGraph.cmake
diff --git a/share/cmake-3.18/Modules/FindOpenThreads.cmake b/share/cmake-3.22/Modules/FindOpenThreads.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindOpenThreads.cmake
rename to share/cmake-3.22/Modules/FindOpenThreads.cmake
diff --git a/share/cmake-3.18/Modules/FindPHP4.cmake b/share/cmake-3.22/Modules/FindPHP4.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindPHP4.cmake
rename to share/cmake-3.22/Modules/FindPHP4.cmake
diff --git a/share/cmake-3.22/Modules/FindPNG.cmake b/share/cmake-3.22/Modules/FindPNG.cmake
new file mode 100644
index 0000000..94d15db
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindPNG.cmake
@@ -0,0 +1,161 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindPNG
+-------
+
+Find libpng, the official reference library for the PNG image format.
+
+Imported targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.5
+
+This module defines the following :prop_tgt:`IMPORTED` target:
+
+``PNG::PNG``
+  The libpng library, if found.
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``PNG_INCLUDE_DIRS``
+  where to find png.h, etc.
+``PNG_LIBRARIES``
+  the libraries to link against to use PNG.
+``PNG_DEFINITIONS``
+  You should add_definitions(${PNG_DEFINITIONS}) before compiling code
+  that includes png library files.
+``PNG_FOUND``
+  If false, do not try to use PNG.
+``PNG_VERSION_STRING``
+  the version of the PNG library found (since CMake 2.8.8)
+
+Obsolete variables
+^^^^^^^^^^^^^^^^^^
+
+The following variables may also be set, for backwards compatibility:
+
+``PNG_LIBRARY``
+  where to find the PNG library.
+``PNG_INCLUDE_DIR``
+  where to find the PNG headers (same as PNG_INCLUDE_DIRS)
+
+Since PNG depends on the ZLib compression library, none of the above
+will be defined unless ZLib can be found.
+#]=======================================================================]
+
+if(PNG_FIND_QUIETLY)
+  set(_FIND_ZLIB_ARG QUIET)
+endif()
+find_package(ZLIB ${_FIND_ZLIB_ARG})
+
+if(ZLIB_FOUND)
+  find_path(PNG_PNG_INCLUDE_DIR png.h PATH_SUFFIXES include/libpng)
+  mark_as_advanced(PNG_PNG_INCLUDE_DIR)
+
+  list(APPEND PNG_NAMES png libpng)
+  unset(PNG_NAMES_DEBUG)
+  set(_PNG_VERSION_SUFFIXES 17 16 15 14 12)
+  if (PNG_FIND_VERSION MATCHES "^([0-9]+)\\.([0-9]+)(\\..*)?$")
+    set(_PNG_VERSION_SUFFIX_MIN "${CMAKE_MATCH_1}${CMAKE_MATCH_2}")
+    if (PNG_FIND_VERSION_EXACT)
+      set(_PNG_VERSION_SUFFIXES ${_PNG_VERSION_SUFFIX_MIN})
+    else ()
+      string(REGEX REPLACE
+          "${_PNG_VERSION_SUFFIX_MIN}.*" "${_PNG_VERSION_SUFFIX_MIN}"
+          _PNG_VERSION_SUFFIXES "${_PNG_VERSION_SUFFIXES}")
+    endif ()
+    unset(_PNG_VERSION_SUFFIX_MIN)
+  endif ()
+  foreach(v IN LISTS _PNG_VERSION_SUFFIXES)
+    list(APPEND PNG_NAMES png${v} libpng${v} libpng${v}_static)
+    list(APPEND PNG_NAMES_DEBUG png${v}d libpng${v}d libpng${v}_staticd)
+  endforeach()
+  unset(_PNG_VERSION_SUFFIXES)
+  # For compatibility with versions prior to this multi-config search, honor
+  # any PNG_LIBRARY that is already specified and skip the search.
+  if(NOT PNG_LIBRARY)
+    find_library(PNG_LIBRARY_RELEASE NAMES ${PNG_NAMES} NAMES_PER_DIR)
+    find_library(PNG_LIBRARY_DEBUG NAMES ${PNG_NAMES_DEBUG} NAMES_PER_DIR)
+    include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+    select_library_configurations(PNG)
+    mark_as_advanced(PNG_LIBRARY_RELEASE PNG_LIBRARY_DEBUG)
+  endif()
+  unset(PNG_NAMES)
+  unset(PNG_NAMES_DEBUG)
+
+  # Set by select_library_configurations(), but we want the one from
+  # find_package_handle_standard_args() below.
+  unset(PNG_FOUND)
+
+  if (PNG_LIBRARY AND PNG_PNG_INCLUDE_DIR)
+      # png.h includes zlib.h. Sigh.
+      set(PNG_INCLUDE_DIRS ${PNG_PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} )
+      set(PNG_INCLUDE_DIR ${PNG_INCLUDE_DIRS} ) # for backward compatibility
+      set(PNG_LIBRARIES ${PNG_LIBRARY} ${ZLIB_LIBRARY})
+      if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND
+         ("${PNG_LIBRARY}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$"))
+        list(APPEND PNG_LIBRARIES m)
+      endif()
+
+      if (CYGWIN)
+        if(BUILD_SHARED_LIBS)
+           # No need to define PNG_USE_DLL here, because it's default for Cygwin.
+        else()
+          set (PNG_DEFINITIONS -DPNG_STATIC)
+          set(_PNG_COMPILE_DEFINITIONS PNG_STATIC)
+        endif()
+      endif ()
+
+      if(NOT TARGET PNG::PNG)
+        add_library(PNG::PNG UNKNOWN IMPORTED)
+        set_target_properties(PNG::PNG PROPERTIES
+          INTERFACE_COMPILE_DEFINITIONS "${_PNG_COMPILE_DEFINITIONS}"
+          INTERFACE_INCLUDE_DIRECTORIES "${PNG_INCLUDE_DIRS}"
+          INTERFACE_LINK_LIBRARIES ZLIB::ZLIB)
+        if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND
+           ("${PNG_LIBRARY}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$"))
+          set_property(TARGET PNG::PNG APPEND PROPERTY
+            INTERFACE_LINK_LIBRARIES m)
+        endif()
+
+        if(EXISTS "${PNG_LIBRARY}")
+          set_target_properties(PNG::PNG PROPERTIES
+            IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+            IMPORTED_LOCATION "${PNG_LIBRARY}")
+        endif()
+        if(EXISTS "${PNG_LIBRARY_RELEASE}")
+          set_property(TARGET PNG::PNG APPEND PROPERTY
+            IMPORTED_CONFIGURATIONS RELEASE)
+          set_target_properties(PNG::PNG PROPERTIES
+            IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
+            IMPORTED_LOCATION_RELEASE "${PNG_LIBRARY_RELEASE}")
+        endif()
+        if(EXISTS "${PNG_LIBRARY_DEBUG}")
+          set_property(TARGET PNG::PNG APPEND PROPERTY
+            IMPORTED_CONFIGURATIONS DEBUG)
+          set_target_properties(PNG::PNG PROPERTIES
+            IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
+            IMPORTED_LOCATION_DEBUG "${PNG_LIBRARY_DEBUG}")
+        endif()
+      endif()
+
+      unset(_PNG_COMPILE_DEFINITIONS)
+  endif ()
+
+  if (PNG_PNG_INCLUDE_DIR AND EXISTS "${PNG_PNG_INCLUDE_DIR}/png.h")
+      file(STRINGS "${PNG_PNG_INCLUDE_DIR}/png.h" png_version_str REGEX "^#define[ \t]+PNG_LIBPNG_VER_STRING[ \t]+\".+\"")
+
+      string(REGEX REPLACE "^#define[ \t]+PNG_LIBPNG_VER_STRING[ \t]+\"([^\"]+)\".*" "\\1" PNG_VERSION_STRING "${png_version_str}")
+      unset(png_version_str)
+  endif ()
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(PNG
+                                  REQUIRED_VARS PNG_LIBRARY PNG_PNG_INCLUDE_DIR
+                                  VERSION_VAR PNG_VERSION_STRING)
diff --git a/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake b/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake
new file mode 100644
index 0000000..fbcf7cd
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake
@@ -0,0 +1,605 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindPackageHandleStandardArgs
+-----------------------------
+
+This module provides functions intended to be used in :ref:`Find Modules`
+implementing :command:`find_package(<PackageName>)` calls.
+
+.. command:: find_package_handle_standard_args
+
+  This command handles the ``REQUIRED``, ``QUIET`` and version-related
+  arguments of :command:`find_package`.  It also sets the
+  ``<PackageName>_FOUND`` variable.  The package is considered found if all
+  variables listed contain valid results, e.g. valid filepaths.
+
+  There are two signatures:
+
+  .. code-block:: cmake
+
+    find_package_handle_standard_args(<PackageName>
+      (DEFAULT_MSG|<custom-failure-message>)
+      <required-var>...
+      )
+
+    find_package_handle_standard_args(<PackageName>
+      [FOUND_VAR <result-var>]
+      [REQUIRED_VARS <required-var>...]
+      [VERSION_VAR <version-var>]
+      [HANDLE_VERSION_RANGE]
+      [HANDLE_COMPONENTS]
+      [CONFIG_MODE]
+      [NAME_MISMATCHED]
+      [REASON_FAILURE_MESSAGE <reason-failure-message>]
+      [FAIL_MESSAGE <custom-failure-message>]
+      )
+
+  The ``<PackageName>_FOUND`` variable will be set to ``TRUE`` if all
+  the variables ``<required-var>...`` are valid and any optional
+  constraints are satisfied, and ``FALSE`` otherwise.  A success or
+  failure message may be displayed based on the results and on
+  whether the ``REQUIRED`` and/or ``QUIET`` option was given to
+  the :command:`find_package` call.
+
+  The options are:
+
+  ``(DEFAULT_MSG|<custom-failure-message>)``
+    In the simple signature this specifies the failure message.
+    Use ``DEFAULT_MSG`` to ask for a default message to be computed
+    (recommended).  Not valid in the full signature.
+
+  ``FOUND_VAR <result-var>``
+    .. deprecated:: 3.3
+
+    Specifies either ``<PackageName>_FOUND`` or
+    ``<PACKAGENAME>_FOUND`` as the result variable.  This exists only
+    for compatibility with older versions of CMake and is now ignored.
+    Result variables of both names are always set for compatibility.
+
+  ``REQUIRED_VARS <required-var>...``
+    Specify the variables which are required for this package.
+    These may be named in the generated failure message asking the
+    user to set the missing variable values.  Therefore these should
+    typically be cache entries such as ``FOO_LIBRARY`` and not output
+    variables like ``FOO_LIBRARIES``.
+
+    .. versionchanged:: 3.18
+      If ``HANDLE_COMPONENTS`` is specified, this option can be omitted.
+
+  ``VERSION_VAR <version-var>``
+    Specify the name of a variable that holds the version of the package
+    that has been found.  This version will be checked against the
+    (potentially) specified required version given to the
+    :command:`find_package` call, including its ``EXACT`` option.
+    The default messages include information about the required
+    version and the version which has been actually found, both
+    if the version is ok or not.
+
+  ``HANDLE_VERSION_RANGE``
+    .. versionadded:: 3.19
+
+    Enable handling of a version range, if one is specified. Without this
+    option, a developer warning will be displayed if a version range is
+    specified.
+
+  ``HANDLE_COMPONENTS``
+    Enable handling of package components.  In this case, the command
+    will report which components have been found and which are missing,
+    and the ``<PackageName>_FOUND`` variable will be set to ``FALSE``
+    if any of the required components (i.e. not the ones listed after
+    the ``OPTIONAL_COMPONENTS`` option of :command:`find_package`) are
+    missing.
+
+  ``CONFIG_MODE``
+    Specify that the calling find module is a wrapper around a
+    call to ``find_package(<PackageName> NO_MODULE)``.  This implies
+    a ``VERSION_VAR`` value of ``<PackageName>_VERSION``.  The command
+    will automatically check whether the package configuration file
+    was found.
+
+  ``REASON_FAILURE_MESSAGE <reason-failure-message>``
+    .. versionadded:: 3.16
+
+    Specify a custom message of the reason for the failure which will be
+    appended to the default generated message.
+
+  ``FAIL_MESSAGE <custom-failure-message>``
+    Specify a custom failure message instead of using the default
+    generated message.  Not recommended.
+
+  ``NAME_MISMATCHED``
+    .. versionadded:: 3.17
+
+    Indicate that the ``<PackageName>`` does not match
+    ``${CMAKE_FIND_PACKAGE_NAME}``. This is usually a mistake and raises a
+    warning, but it may be intentional for usage of the command for components
+    of a larger package.
+
+Example for the simple signature:
+
+.. code-block:: cmake
+
+  find_package_handle_standard_args(LibXml2 DEFAULT_MSG
+    LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR)
+
+The ``LibXml2`` package is considered to be found if both
+``LIBXML2_LIBRARY`` and ``LIBXML2_INCLUDE_DIR`` are valid.
+Then also ``LibXml2_FOUND`` is set to ``TRUE``.  If it is not found
+and ``REQUIRED`` was used, it fails with a
+:command:`message(FATAL_ERROR)`, independent whether ``QUIET`` was
+used or not.  If it is found, success will be reported, including
+the content of the first ``<required-var>``.  On repeated CMake runs,
+the same message will not be printed again.
+
+.. note::
+
+  If ``<PackageName>`` does not match ``CMAKE_FIND_PACKAGE_NAME`` for the
+  calling module, a warning that there is a mismatch is given. The
+  ``FPHSA_NAME_MISMATCHED`` variable may be set to bypass the warning if using
+  the old signature and the ``NAME_MISMATCHED`` argument using the new
+  signature. To avoid forcing the caller to require newer versions of CMake for
+  usage, the variable's value will be used if defined when the
+  ``NAME_MISMATCHED`` argument is not passed for the new signature (but using
+  both is an error)..
+
+Example for the full signature:
+
+.. code-block:: cmake
+
+  find_package_handle_standard_args(LibArchive
+    REQUIRED_VARS LibArchive_LIBRARY LibArchive_INCLUDE_DIR
+    VERSION_VAR LibArchive_VERSION)
+
+In this case, the ``LibArchive`` package is considered to be found if
+both ``LibArchive_LIBRARY`` and ``LibArchive_INCLUDE_DIR`` are valid.
+Also the version of ``LibArchive`` will be checked by using the version
+contained in ``LibArchive_VERSION``.  Since no ``FAIL_MESSAGE`` is given,
+the default messages will be printed.
+
+Another example for the full signature:
+
+.. code-block:: cmake
+
+  find_package(Automoc4 QUIET NO_MODULE HINTS /opt/automoc4)
+  find_package_handle_standard_args(Automoc4  CONFIG_MODE)
+
+In this case, a ``FindAutmoc4.cmake`` module wraps a call to
+``find_package(Automoc4 NO_MODULE)`` and adds an additional search
+directory for ``automoc4``.  Then the call to
+``find_package_handle_standard_args`` produces a proper success/failure
+message.
+
+.. command:: find_package_check_version
+
+  .. versionadded:: 3.19
+
+  Helper function which can be used to check if a ``<version>`` is valid
+  against version-related arguments of :command:`find_package`.
+
+  .. code-block:: cmake
+
+    find_package_check_version(<version> <result-var>
+      [HANDLE_VERSION_RANGE]
+      [RESULT_MESSAGE_VARIABLE <message-var>]
+      )
+
+  The ``<result-var>`` will hold a boolean value giving the result of the check.
+
+  The options are:
+
+  ``HANDLE_VERSION_RANGE``
+    Enable handling of a version range, if one is specified. Without this
+    option, a developer warning will be displayed if a version range is
+    specified.
+
+  ``RESULT_MESSAGE_VARIABLE <message-var>``
+    Specify a variable to get back a message describing the result of the check.
+
+Example for the usage:
+
+.. code-block:: cmake
+
+  find_package_check_version(1.2.3 result HANDLE_VERSION_RANGE
+    RESULT_MESSAGE_VARIABLE reason)
+  if (result)
+    message (STATUS "${reason}")
+  else()
+    message (FATAL_ERROR "${reason}")
+  endif()
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageMessage.cmake)
+
+
+cmake_policy(PUSH)
+# numbers and boolean constants
+cmake_policy (SET CMP0012 NEW)
+# IN_LIST operator
+cmake_policy (SET CMP0057 NEW)
+
+
+# internal helper macro
+macro(_FPHSA_FAILURE_MESSAGE _msg)
+  set (__msg "${_msg}")
+  if (FPHSA_REASON_FAILURE_MESSAGE)
+    string(APPEND __msg "\n    Reason given by package: ${FPHSA_REASON_FAILURE_MESSAGE}\n")
+  endif()
+  if (${_NAME}_FIND_REQUIRED)
+    message(FATAL_ERROR "${__msg}")
+  else ()
+    if (NOT ${_NAME}_FIND_QUIETLY)
+      message(STATUS "${__msg}")
+    endif ()
+  endif ()
+endmacro()
+
+
+# internal helper macro to generate the failure message when used in CONFIG_MODE:
+macro(_FPHSA_HANDLE_FAILURE_CONFIG_MODE)
+  # <PackageName>_CONFIG is set, but FOUND is false, this means that some other of the REQUIRED_VARS was not found:
+  if(${_NAME}_CONFIG)
+    _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: missing:${MISSING_VARS} (found ${${_NAME}_CONFIG} ${VERSION_MSG})")
+  else()
+    # If _CONSIDERED_CONFIGS is set, the config-file has been found, but no suitable version.
+    # List them all in the error message:
+    if(${_NAME}_CONSIDERED_CONFIGS)
+      set(configsText "")
+      list(LENGTH ${_NAME}_CONSIDERED_CONFIGS configsCount)
+      math(EXPR configsCount "${configsCount} - 1")
+      foreach(currentConfigIndex RANGE ${configsCount})
+        list(GET ${_NAME}_CONSIDERED_CONFIGS ${currentConfigIndex} filename)
+        list(GET ${_NAME}_CONSIDERED_VERSIONS ${currentConfigIndex} version)
+        string(APPEND configsText "\n    ${filename} (version ${version})")
+      endforeach()
+      if (${_NAME}_NOT_FOUND_MESSAGE)
+        if (FPHSA_REASON_FAILURE_MESSAGE)
+          string(PREPEND FPHSA_REASON_FAILURE_MESSAGE "${${_NAME}_NOT_FOUND_MESSAGE}\n    ")
+        else()
+          set(FPHSA_REASON_FAILURE_MESSAGE "${${_NAME}_NOT_FOUND_MESSAGE}")
+        endif()
+      else()
+        string(APPEND configsText "\n")
+      endif()
+      _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} ${VERSION_MSG}, checked the following files:${configsText}")
+
+    else()
+      # Simple case: No Config-file was found at all:
+      _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: found neither ${_NAME}Config.cmake nor ${_NAME_LOWER}-config.cmake ${VERSION_MSG}")
+    endif()
+  endif()
+endmacro()
+
+
+function(FIND_PACKAGE_CHECK_VERSION version result)
+  cmake_parse_arguments (PARSE_ARGV 2 FPCV "HANDLE_VERSION_RANGE;NO_AUTHOR_WARNING_VERSION_RANGE" "RESULT_MESSAGE_VARIABLE" "")
+
+  if (FPCV_UNPARSED_ARGUMENTS)
+    message (FATAL_ERROR "find_package_check_version(): ${FPCV_UNPARSED_ARGUMENTS}: unexpected arguments")
+  endif()
+  if ("RESULT_MESSAGE_VARIABLE" IN_LIST FPCV_KEYWORDS_MISSING_VALUES)
+    message (FATAL_ERROR "find_package_check_version(): RESULT_MESSAGE_VARIABLE expects an argument")
+  endif()
+
+  set (${result} FALSE PARENT_SCOPE)
+  if (FPCV_RESULT_MESSAGE_VARIABLE)
+    unset (${FPCV_RESULT_MESSAGE_VARIABLE} PARENT_SCOPE)
+  endif()
+
+  if (_CMAKE_FPHSA_PACKAGE_NAME)
+    set (package "${_CMAKE_FPHSA_PACKAGE_NAME}")
+  elseif (CMAKE_FIND_PACKAGE_NAME)
+    set (package "${CMAKE_FIND_PACKAGE_NAME}")
+  else()
+    message (FATAL_ERROR "find_package_check_version(): Cannot be used outside a 'Find Module'")
+  endif()
+
+  if (NOT FPCV_NO_AUTHOR_WARNING_VERSION_RANGE
+      AND ${package}_FIND_VERSION_RANGE AND NOT FPCV_HANDLE_VERSION_RANGE)
+    message(AUTHOR_WARNING
+      "`find_package()` specify a version range but the option "
+      "HANDLE_VERSION_RANGE` is not passed to `find_package_check_version()`. "
+      "Only the lower endpoint of the range will be used.")
+  endif()
+
+
+  set (version_ok FALSE)
+  unset (version_msg)
+
+  if (FPCV_HANDLE_VERSION_RANGE AND ${package}_FIND_VERSION_RANGE)
+    if ((${package}_FIND_VERSION_RANGE_MIN STREQUAL "INCLUDE"
+          AND version VERSION_GREATER_EQUAL ${package}_FIND_VERSION_MIN)
+        AND ((${package}_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE"
+            AND version VERSION_LESS_EQUAL ${package}_FIND_VERSION_MAX)
+          OR (${package}_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE"
+            AND version VERSION_LESS ${package}_FIND_VERSION_MAX)))
+      set (version_ok TRUE)
+      set(version_msg "(found suitable version \"${version}\", required range is \"${${package}_FIND_VERSION_RANGE}\")")
+    else()
+      set(version_msg "Found unsuitable version \"${version}\", required range is \"${${package}_FIND_VERSION_RANGE}\"")
+    endif()
+  elseif (DEFINED ${package}_FIND_VERSION)
+    if(${package}_FIND_VERSION_EXACT)       # exact version required
+      # count the dots in the version string
+      string(REGEX REPLACE "[^.]" "" version_dots "${version}")
+      # add one dot because there is one dot more than there are components
+      string(LENGTH "${version_dots}." version_dots)
+      if (version_dots GREATER ${package}_FIND_VERSION_COUNT)
+        # Because of the C++ implementation of find_package() ${package}_FIND_VERSION_COUNT
+        # is at most 4 here. Therefore a simple lookup table is used.
+        if (${package}_FIND_VERSION_COUNT EQUAL 1)
+          set(version_regex "[^.]*")
+        elseif (${package}_FIND_VERSION_COUNT EQUAL 2)
+          set(version_regex "[^.]*\\.[^.]*")
+        elseif (${package}_FIND_VERSION_COUNT EQUAL 3)
+          set(version_regex "[^.]*\\.[^.]*\\.[^.]*")
+        else()
+          set(version_regex "[^.]*\\.[^.]*\\.[^.]*\\.[^.]*")
+        endif()
+        string(REGEX REPLACE "^(${version_regex})\\..*" "\\1" version_head "${version}")
+        if (NOT ${package}_FIND_VERSION VERSION_EQUAL version_head)
+          set(version_msg "Found unsuitable version \"${version}\", but required is exact version \"${${package}_FIND_VERSION}\"")
+        else ()
+          set(version_ok TRUE)
+          set(version_msg "(found suitable exact version \"${_FOUND_VERSION}\")")
+        endif ()
+      else ()
+        if (NOT ${package}_FIND_VERSION VERSION_EQUAL version)
+          set(version_msg "Found unsuitable version \"${version}\", but required is exact version \"${${package}_FIND_VERSION}\"")
+        else ()
+          set(version_ok TRUE)
+          set(version_msg "(found suitable exact version \"${version}\")")
+        endif ()
+      endif ()
+    else()     # minimum version
+      if (${package}_FIND_VERSION VERSION_GREATER version)
+        set(version_msg "Found unsuitable version \"${version}\", but required is at least \"${${package}_FIND_VERSION}\"")
+      else()
+        set(version_ok TRUE)
+        set(version_msg "(found suitable version \"${version}\", minimum required is \"${${package}_FIND_VERSION}\")")
+      endif()
+    endif()
+  else ()
+    set(version_ok TRUE)
+    set(version_msg "(found version \"${version}\")")
+  endif()
+
+  set (${result} ${version_ok} PARENT_SCOPE)
+  if (FPCV_RESULT_MESSAGE_VARIABLE)
+    set (${FPCV_RESULT_MESSAGE_VARIABLE} "${version_msg}" PARENT_SCOPE)
+  endif()
+endfunction()
+
+
+function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
+
+  # Set up the arguments for `cmake_parse_arguments`.
+  set(options  CONFIG_MODE  HANDLE_COMPONENTS NAME_MISMATCHED HANDLE_VERSION_RANGE)
+  set(oneValueArgs  FAIL_MESSAGE  REASON_FAILURE_MESSAGE VERSION_VAR  FOUND_VAR)
+  set(multiValueArgs REQUIRED_VARS)
+
+  # Check whether we are in 'simple' or 'extended' mode:
+  set(_KEYWORDS_FOR_EXTENDED_MODE  ${options} ${oneValueArgs} ${multiValueArgs} )
+  list(FIND _KEYWORDS_FOR_EXTENDED_MODE "${_FIRST_ARG}" INDEX)
+
+  unset(FPHSA_NAME_MISMATCHED_override)
+  if (DEFINED FPHSA_NAME_MISMATCHED)
+    # If the variable NAME_MISMATCHED variable is set, error if it is passed as
+    # an argument. The former is for old signatures, the latter is for new
+    # signatures.
+    list(FIND ARGN "NAME_MISMATCHED" name_mismatched_idx)
+    if (NOT name_mismatched_idx EQUAL "-1")
+      message(FATAL_ERROR
+        "The `NAME_MISMATCHED` argument may only be specified by the argument or "
+        "the variable, not both.")
+    endif ()
+
+    # But use the variable if it is not an argument to avoid forcing minimum
+    # CMake version bumps for calling modules.
+    set(FPHSA_NAME_MISMATCHED_override "${FPHSA_NAME_MISMATCHED}")
+  endif ()
+
+  if(${INDEX} EQUAL -1)
+    set(FPHSA_FAIL_MESSAGE ${_FIRST_ARG})
+    set(FPHSA_REQUIRED_VARS ${ARGN})
+    set(FPHSA_VERSION_VAR)
+  else()
+    cmake_parse_arguments(FPHSA "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${_FIRST_ARG} ${ARGN})
+
+    if(FPHSA_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to FIND_PACKAGE_HANDLE_STANDARD_ARGS(): \"${FPHSA_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if(NOT FPHSA_FAIL_MESSAGE)
+      set(FPHSA_FAIL_MESSAGE  "DEFAULT_MSG")
+    endif()
+
+    # In config-mode, we rely on the variable <PackageName>_CONFIG, which is set by find_package()
+    # when it successfully found the config-file, including version checking:
+    if(FPHSA_CONFIG_MODE)
+      list(INSERT FPHSA_REQUIRED_VARS 0 ${_NAME}_CONFIG)
+      list(REMOVE_DUPLICATES FPHSA_REQUIRED_VARS)
+      set(FPHSA_VERSION_VAR ${_NAME}_VERSION)
+    endif()
+
+    if(NOT FPHSA_REQUIRED_VARS AND NOT FPHSA_HANDLE_COMPONENTS)
+      message(FATAL_ERROR "No REQUIRED_VARS specified for FIND_PACKAGE_HANDLE_STANDARD_ARGS()")
+    endif()
+  endif()
+
+  if (DEFINED FPHSA_NAME_MISMATCHED_override)
+    set(FPHSA_NAME_MISMATCHED "${FPHSA_NAME_MISMATCHED_override}")
+  endif ()
+
+  if (DEFINED CMAKE_FIND_PACKAGE_NAME
+      AND NOT FPHSA_NAME_MISMATCHED
+      AND NOT _NAME STREQUAL CMAKE_FIND_PACKAGE_NAME)
+    message(AUTHOR_WARNING
+      "The package name passed to `find_package_handle_standard_args` "
+      "(${_NAME}) does not match the name of the calling package "
+      "(${CMAKE_FIND_PACKAGE_NAME}). This can lead to problems in calling "
+      "code that expects `find_package` result variables (e.g., `_FOUND`) "
+      "to follow a certain pattern.")
+  endif ()
+
+  if (${_NAME}_FIND_VERSION_RANGE AND NOT FPHSA_HANDLE_VERSION_RANGE)
+    message(AUTHOR_WARNING
+      "`find_package()` specify a version range but the module ${_NAME} does "
+      "not support this capability. Only the lower endpoint of the range "
+      "will be used.")
+  endif()
+
+  # to propagate package name to FIND_PACKAGE_CHECK_VERSION
+  set(_CMAKE_FPHSA_PACKAGE_NAME "${_NAME}")
+
+  # now that we collected all arguments, process them
+
+  if("x${FPHSA_FAIL_MESSAGE}" STREQUAL "xDEFAULT_MSG")
+    set(FPHSA_FAIL_MESSAGE "Could NOT find ${_NAME}")
+  endif()
+
+  if (FPHSA_REQUIRED_VARS)
+    list(GET FPHSA_REQUIRED_VARS 0 _FIRST_REQUIRED_VAR)
+  endif()
+
+  string(TOUPPER ${_NAME} _NAME_UPPER)
+  string(TOLOWER ${_NAME} _NAME_LOWER)
+
+  if(FPHSA_FOUND_VAR)
+    set(_FOUND_VAR_UPPER ${_NAME_UPPER}_FOUND)
+    set(_FOUND_VAR_MIXED ${_NAME}_FOUND)
+    if(FPHSA_FOUND_VAR STREQUAL _FOUND_VAR_MIXED  OR  FPHSA_FOUND_VAR STREQUAL _FOUND_VAR_UPPER)
+      set(_FOUND_VAR ${FPHSA_FOUND_VAR})
+    else()
+      message(FATAL_ERROR "The argument for FOUND_VAR is \"${FPHSA_FOUND_VAR}\", but only \"${_FOUND_VAR_MIXED}\" and \"${_FOUND_VAR_UPPER}\" are valid names.")
+    endif()
+  else()
+    set(_FOUND_VAR ${_NAME_UPPER}_FOUND)
+  endif()
+
+  # collect all variables which were not found, so they can be printed, so the
+  # user knows better what went wrong (#6375)
+  set(MISSING_VARS "")
+  set(DETAILS "")
+  # check if all passed variables are valid
+  set(FPHSA_FOUND_${_NAME} TRUE)
+  foreach(_CURRENT_VAR ${FPHSA_REQUIRED_VARS})
+    if(NOT ${_CURRENT_VAR})
+      set(FPHSA_FOUND_${_NAME} FALSE)
+      string(APPEND MISSING_VARS " ${_CURRENT_VAR}")
+    else()
+      string(APPEND DETAILS "[${${_CURRENT_VAR}}]")
+    endif()
+  endforeach()
+  if(FPHSA_FOUND_${_NAME})
+    set(${_NAME}_FOUND TRUE)
+    set(${_NAME_UPPER}_FOUND TRUE)
+  else()
+    set(${_NAME}_FOUND FALSE)
+    set(${_NAME_UPPER}_FOUND FALSE)
+  endif()
+
+  # component handling
+  unset(FOUND_COMPONENTS_MSG)
+  unset(MISSING_COMPONENTS_MSG)
+
+  if(FPHSA_HANDLE_COMPONENTS)
+    foreach(comp ${${_NAME}_FIND_COMPONENTS})
+      if(${_NAME}_${comp}_FOUND)
+
+        if(NOT DEFINED FOUND_COMPONENTS_MSG)
+          set(FOUND_COMPONENTS_MSG "found components:")
+        endif()
+        string(APPEND FOUND_COMPONENTS_MSG " ${comp}")
+
+      else()
+
+        if(NOT DEFINED MISSING_COMPONENTS_MSG)
+          set(MISSING_COMPONENTS_MSG "missing components:")
+        endif()
+        string(APPEND MISSING_COMPONENTS_MSG " ${comp}")
+
+        if(${_NAME}_FIND_REQUIRED_${comp})
+          set(${_NAME}_FOUND FALSE)
+          string(APPEND MISSING_VARS " ${comp}")
+        endif()
+
+      endif()
+    endforeach()
+    set(COMPONENT_MSG "${FOUND_COMPONENTS_MSG} ${MISSING_COMPONENTS_MSG}")
+    string(APPEND DETAILS "[c${COMPONENT_MSG}]")
+  endif()
+
+  # version handling:
+  set(VERSION_MSG "")
+  set(VERSION_OK TRUE)
+
+  # check with DEFINED here as the requested or found version may be "0"
+  if (DEFINED ${_NAME}_FIND_VERSION)
+    if(DEFINED ${FPHSA_VERSION_VAR})
+      set(_FOUND_VERSION ${${FPHSA_VERSION_VAR}})
+      if (FPHSA_HANDLE_VERSION_RANGE)
+        set (FPCV_HANDLE_VERSION_RANGE HANDLE_VERSION_RANGE)
+      else()
+        set(FPCV_HANDLE_VERSION_RANGE NO_AUTHOR_WARNING_VERSION_RANGE)
+      endif()
+      find_package_check_version ("${_FOUND_VERSION}" VERSION_OK RESULT_MESSAGE_VARIABLE VERSION_MSG
+        ${FPCV_HANDLE_VERSION_RANGE})
+    else()
+      # if the package was not found, but a version was given, add that to the output:
+      if(${_NAME}_FIND_VERSION_EXACT)
+        set(VERSION_MSG "(Required is exact version \"${${_NAME}_FIND_VERSION}\")")
+      elseif (FPHSA_HANDLE_VERSION_RANGE AND ${_NAME}_FIND_VERSION_RANGE)
+        set(VERSION_MSG "(Required is version range \"${${_NAME}_FIND_VERSION_RANGE}\")")
+      else()
+        set(VERSION_MSG "(Required is at least version \"${${_NAME}_FIND_VERSION}\")")
+      endif()
+    endif()
+  else ()
+    # Check with DEFINED as the found version may be 0.
+    if(DEFINED ${FPHSA_VERSION_VAR})
+      set(VERSION_MSG "(found version \"${${FPHSA_VERSION_VAR}}\")")
+    endif()
+  endif ()
+
+  if(VERSION_OK)
+    string(APPEND DETAILS "[v${${FPHSA_VERSION_VAR}}(${${_NAME}_FIND_VERSION})]")
+  else()
+    set(${_NAME}_FOUND FALSE)
+  endif()
+
+
+  # print the result:
+  if (${_NAME}_FOUND)
+    FIND_PACKAGE_MESSAGE(${_NAME} "Found ${_NAME}: ${${_FIRST_REQUIRED_VAR}} ${VERSION_MSG} ${COMPONENT_MSG}" "${DETAILS}")
+  else ()
+
+    if(FPHSA_CONFIG_MODE)
+      _FPHSA_HANDLE_FAILURE_CONFIG_MODE()
+    else()
+      if(NOT VERSION_OK)
+        set(RESULT_MSG)
+        if (_FIRST_REQUIRED_VAR)
+          string (APPEND RESULT_MSG "found ${${_FIRST_REQUIRED_VAR}}")
+        endif()
+        if (COMPONENT_MSG)
+          if (RESULT_MSG)
+            string (APPEND RESULT_MSG ", ")
+          endif()
+          string (APPEND RESULT_MSG "${FOUND_COMPONENTS_MSG}")
+        endif()
+        _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: ${VERSION_MSG} (${RESULT_MSG})")
+      else()
+        _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} (missing:${MISSING_VARS}) ${VERSION_MSG}")
+      endif()
+    endif()
+
+  endif ()
+
+  set(${_NAME}_FOUND ${${_NAME}_FOUND} PARENT_SCOPE)
+  set(${_NAME_UPPER}_FOUND ${${_NAME}_FOUND} PARENT_SCOPE)
+endfunction()
+
+
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FindPackageMessage.cmake b/share/cmake-3.22/Modules/FindPackageMessage.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindPackageMessage.cmake
rename to share/cmake-3.22/Modules/FindPackageMessage.cmake
diff --git a/share/cmake-3.22/Modules/FindPatch.cmake b/share/cmake-3.22/Modules/FindPatch.cmake
new file mode 100644
index 0000000..f4fe4a6
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindPatch.cmake
@@ -0,0 +1,71 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindPatch
+---------
+
+.. versionadded:: 3.10
+
+The module defines the following variables:
+
+``Patch_EXECUTABLE``
+  Path to patch command-line executable.
+``Patch_FOUND``
+  True if the patch command-line executable was found.
+
+The following :prop_tgt:`IMPORTED` targets are also defined:
+
+``Patch::patch``
+  The command-line executable.
+
+Example usage:
+
+.. code-block:: cmake
+
+   find_package(Patch)
+   if(Patch_FOUND)
+     message("Patch found: ${Patch_EXECUTABLE}")
+   endif()
+#]=======================================================================]
+
+set(_doc "Patch command line executable")
+set(_patch_path )
+
+if(CMAKE_HOST_WIN32)
+  set(_patch_path
+    "$ENV{LOCALAPPDATA}/Programs/Git/bin"
+    "$ENV{LOCALAPPDATA}/Programs/Git/usr/bin"
+    "$ENV{APPDATA}/Programs/Git/bin"
+    "$ENV{APPDATA}/Programs/Git/usr/bin"
+    )
+endif()
+
+# First search the PATH
+find_program(Patch_EXECUTABLE
+  NAMES patch
+  PATHS ${_patch_path}
+  DOC ${_doc}
+  )
+
+if(CMAKE_HOST_WIN32)
+  # Now look for installations in Git/ directories under typical installation
+  # prefixes on Windows.
+  find_program(Patch_EXECUTABLE
+    NAMES patch
+    PATH_SUFFIXES Git/usr/bin Git/bin GnuWin32/bin
+    DOC ${_doc}
+    )
+endif()
+
+if(Patch_EXECUTABLE AND NOT TARGET Patch::patch)
+  add_executable(Patch::patch IMPORTED)
+  set_property(TARGET Patch::patch PROPERTY IMPORTED_LOCATION ${Patch_EXECUTABLE})
+endif()
+
+unset(_patch_path)
+unset(_doc)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(Patch
+                                  REQUIRED_VARS Patch_EXECUTABLE)
diff --git a/share/cmake-3.22/Modules/FindPerl.cmake b/share/cmake-3.22/Modules/FindPerl.cmake
new file mode 100644
index 0000000..26962df
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindPerl.cmake
@@ -0,0 +1,89 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindPerl
+--------
+
+Find perl
+
+this module looks for Perl
+
+::
+
+  PERL_EXECUTABLE     - the full path to perl
+  PERL_FOUND          - If false, don't attempt to use perl.
+  PERL_VERSION_STRING - version of perl found (since CMake 2.8.8)
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/FindMsys.cmake)
+
+set(PERL_POSSIBLE_BIN_PATHS
+  ${CYGWIN_INSTALL_PATH}/bin
+  ${MSYS_INSTALL_PATH}/usr/bin
+  )
+
+if(WIN32)
+  get_filename_component(
+    ActivePerl_CurrentVersion
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActivePerl;CurrentVersion]"
+    NAME)
+  set(PERL_POSSIBLE_BIN_PATHS ${PERL_POSSIBLE_BIN_PATHS}
+    "C:/Perl/bin"
+    "C:/Strawberry/perl/bin"
+    [HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActivePerl\\${ActivePerl_CurrentVersion}]/bin
+    )
+endif()
+
+find_program(PERL_EXECUTABLE
+  NAMES perl
+  PATHS ${PERL_POSSIBLE_BIN_PATHS}
+  )
+
+if(PERL_EXECUTABLE)
+  ### PERL_VERSION
+  execute_process(
+    COMMAND
+      ${PERL_EXECUTABLE} -V:version
+      OUTPUT_VARIABLE
+        PERL_VERSION_OUTPUT_VARIABLE
+      RESULT_VARIABLE
+        PERL_VERSION_RESULT_VARIABLE
+      ERROR_QUIET
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+  )
+  if(NOT PERL_VERSION_RESULT_VARIABLE AND NOT PERL_VERSION_OUTPUT_VARIABLE MATCHES "^version='UNKNOWN'")
+    string(REGEX REPLACE "version='([^']+)'.*" "\\1" PERL_VERSION_STRING ${PERL_VERSION_OUTPUT_VARIABLE})
+  else()
+    execute_process(
+      COMMAND ${PERL_EXECUTABLE} -v
+      OUTPUT_VARIABLE PERL_VERSION_OUTPUT_VARIABLE
+      RESULT_VARIABLE PERL_VERSION_RESULT_VARIABLE
+      ERROR_QUIET
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+    )
+    if(NOT PERL_VERSION_RESULT_VARIABLE AND PERL_VERSION_OUTPUT_VARIABLE MATCHES "This is perl.*[ \\(]v([0-9\\._]+)[ \\)]")
+      set(PERL_VERSION_STRING "${CMAKE_MATCH_1}")
+    elseif(NOT PERL_VERSION_RESULT_VARIABLE AND PERL_VERSION_OUTPUT_VARIABLE MATCHES "This is perl, version ([0-9\\._]+) +")
+      set(PERL_VERSION_STRING "${CMAKE_MATCH_1}")
+    endif()
+  endif()
+endif()
+
+# Deprecated settings for compatibility with CMake1.4
+set(PERL ${PERL_EXECUTABLE})
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+if (CMAKE_FIND_PACKAGE_NAME STREQUAL "PerlLibs")
+  # FindPerlLibs include()'s this module. It's an old pattern, but rather than
+  # trying to suppress this from outside the module (which is then sensitive to
+  # the contents, detect the case in this module and suppress it explicitly.
+  set(FPHSA_NAME_MISMATCHED 1)
+endif ()
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Perl
+                                  REQUIRED_VARS PERL_EXECUTABLE
+                                  VERSION_VAR PERL_VERSION_STRING)
+unset(FPHSA_NAME_MISMATCHED)
+
+mark_as_advanced(PERL_EXECUTABLE)
diff --git a/share/cmake-3.22/Modules/FindPerlLibs.cmake b/share/cmake-3.22/Modules/FindPerlLibs.cmake
new file mode 100644
index 0000000..d576b86
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindPerlLibs.cmake
@@ -0,0 +1,162 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindPerlLibs
+------------
+
+Find Perl libraries
+
+This module finds if PERL is installed and determines where the
+include files and libraries are.  It also determines what the name of
+the library is.  This code sets the following variables:
+
+::
+
+  PERLLIBS_FOUND    = True if perl.h & libperl were found
+  PERL_INCLUDE_PATH = path to where perl.h is found
+  PERL_LIBRARY      = path to libperl
+  PERL_EXECUTABLE   = full path to the perl binary
+
+
+
+The minimum required version of Perl can be specified using the
+standard syntax, e.g.  find_package(PerlLibs 6.0)
+
+::
+
+  The following variables are also available if needed
+  (introduced after CMake 2.6.4)
+
+
+
+::
+
+  PERL_SITESEARCH     = path to the sitesearch install dir (-V:installsitesearch)
+  PERL_SITEARCH       = path to the sitelib install directory (-V:installsitearch)
+  PERL_SITELIB        = path to the sitelib install directory (-V:installsitelib)
+  PERL_VENDORARCH     = path to the vendor arch install directory (-V:installvendorarch)
+  PERL_VENDORLIB      = path to the vendor lib install directory (-V:installvendorlib)
+  PERL_ARCHLIB        = path to the core arch lib install directory (-V:archlib)
+  PERL_PRIVLIB        = path to the core priv lib install directory (-V:privlib)
+  PERL_UPDATE_ARCHLIB = path to the update arch lib install directory (-V:installarchlib)
+  PERL_UPDATE_PRIVLIB = path to the update priv lib install directory (-V:installprivlib)
+  PERL_EXTRA_C_FLAGS = Compilation flags used to build perl
+#]=======================================================================]
+
+# find the perl executable
+include(${CMAKE_CURRENT_LIST_DIR}/FindPerl.cmake)
+
+if (PERL_EXECUTABLE)
+
+  function (perl_get_info _pgi_info tag)
+    cmake_parse_arguments(_PGI "IS_PATH" "" "" ${ARGN})
+
+    set (${_pgi_info} NOTFOUND PARENT_SCOPE)
+
+    execute_process(COMMAND "${PERL_EXECUTABLE}" -V:${tag}
+      OUTPUT_VARIABLE result
+      RESULT_VARIABLE status)
+
+    if (NOT status)
+      string(REGEX REPLACE "${tag}='([^']*)'.*" "\\1" result "${result}")
+      if (_PGI_IS_PATH)
+        file(TO_CMAKE_PATH "${result}" result)
+      endif()
+      set (${_pgi_info} "${result}" PARENT_SCOPE)
+    endif ()
+  endfunction()
+
+  ### PERL_PREFIX
+  perl_get_info(PERL_PREFIX prefix IS_PATH)
+
+  ### PERL_ARCHNAME
+  perl_get_info(PERL_ARCHNAME archname)
+
+  ### PERL_EXTRA_C_FLAGS
+  perl_get_info(PERL_EXTRA_C_FLAGS cppflags)
+
+  ### PERL_SITESEARCH
+  perl_get_info(PERL_SITESEARCH installsitesearch IS_PATH)
+
+  ### PERL_SITEARCH
+  perl_get_info(PERL_SITEARCH installsitearch IS_PATH)
+
+  ### PERL_SITELIB
+  perl_get_info(PERL_SITELIB installsitelib IS_PATH)
+
+  ### PERL_VENDORARCH
+  perl_get_info(PERL_VENDORARCH installvendorarch IS_PATH)
+
+  ### PERL_VENDORLIB
+  perl_get_info(PERL_VENDORLIB installvendorlib IS_PATH)
+
+  ### PERL_ARCHLIB
+  perl_get_info(PERL_ARCHLIB archlib IS_PATH)
+
+  ### PERL_PRIVLIB
+  perl_get_info(PERL_PRIVLIB privlib IS_PATH)
+
+  ### PERL_UPDATE_ARCHLIB
+  perl_get_info(PERL_UPDATE_ARCHLIB installarchlib IS_PATH)
+
+  ### PERL_UPDATE_PRIVLIB
+  perl_get_info(PERL_UPDATE_PRIVLIB installprivlib IS_PATH)
+
+  ### PERL_POSSIBLE_LIBRARY_NAMES
+  perl_get_info(PERL_POSSIBLE_LIBRARY_NAMES libperl)
+  if (NOT PERL_POSSIBLE_LIBRARY_NAMES)
+    set(PERL_POSSIBLE_LIBRARY_NAMES perl${PERL_VERSION_STRING} perl)
+  endif()
+  if(CMAKE_SYSTEM_NAME MATCHES "CYGWIN")
+    list (APPEND PERL_POSSIBLE_LIBRARY_NAMES perl${PERL_VERSION_STRING})
+  endif()
+  if (CMAKE_SYSTEM_NAME MATCHES "MSYS|CYGWIN")
+    # on MSYS and CYGWIN environments, current perl -V:libperl gives shared library name
+    # rather than the import library. So, extends possible library names
+    list (APPEND PERL_POSSIBLE_LIBRARY_NAMES perl)
+  endif()
+
+  ### PERL_INCLUDE_PATH
+  find_path(PERL_INCLUDE_PATH
+    NAMES
+      perl.h
+    PATHS
+      "${PERL_UPDATE_ARCHLIB}/CORE"
+      "${PERL_ARCHLIB}/CORE"
+      /usr/lib/perl5/${PERL_VERSION_STRING}/${PERL_ARCHNAME}/CORE
+      /usr/lib/perl/${PERL_VERSION_STRING}/${PERL_ARCHNAME}/CORE
+      /usr/lib/perl5/${PERL_VERSION_STRING}/CORE
+      /usr/lib/perl/${PERL_VERSION_STRING}/CORE
+  )
+
+  ### PERL_LIBRARY
+  find_library(PERL_LIBRARY
+    NAMES
+      ${PERL_POSSIBLE_LIBRARY_NAMES}
+    PATHS
+      "${PERL_UPDATE_ARCHLIB}/CORE"
+      "${PERL_ARCHLIB}/CORE"
+      /usr/lib/perl5/${PERL_VERSION_STRING}/${PERL_ARCHNAME}/CORE
+      /usr/lib/perl/${PERL_VERSION_STRING}/${PERL_ARCHNAME}/CORE
+      /usr/lib/perl5/${PERL_VERSION_STRING}/CORE
+      /usr/lib/perl/${PERL_VERSION_STRING}/CORE
+  )
+
+endif ()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(PerlLibs REQUIRED_VARS PERL_LIBRARY PERL_INCLUDE_PATH
+                                           VERSION_VAR PERL_VERSION_STRING)
+
+# Introduced after CMake 2.6.4 to bring module into compliance
+set(PERL_INCLUDE_DIR  ${PERL_INCLUDE_PATH})
+set(PERL_INCLUDE_DIRS ${PERL_INCLUDE_PATH})
+set(PERL_LIBRARIES    ${PERL_LIBRARY})
+# For backward compatibility with CMake before 2.8.8
+set(PERL_VERSION ${PERL_VERSION_STRING})
+
+mark_as_advanced(
+  PERL_INCLUDE_PATH
+  PERL_LIBRARY
+)
diff --git a/share/cmake-3.18/Modules/FindPhysFS.cmake b/share/cmake-3.22/Modules/FindPhysFS.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindPhysFS.cmake
rename to share/cmake-3.22/Modules/FindPhysFS.cmake
diff --git a/share/cmake-3.18/Modules/FindPike.cmake b/share/cmake-3.22/Modules/FindPike.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindPike.cmake
rename to share/cmake-3.22/Modules/FindPike.cmake
diff --git a/share/cmake-3.22/Modules/FindPkgConfig.cmake b/share/cmake-3.22/Modules/FindPkgConfig.cmake
new file mode 100644
index 0000000..547bc52
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindPkgConfig.cmake
@@ -0,0 +1,982 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[========================================[.rst:
+FindPkgConfig
+-------------
+
+A ``pkg-config`` module for CMake.
+
+Finds the ``pkg-config`` executable and adds the :command:`pkg_get_variable`,
+:command:`pkg_check_modules` and :command:`pkg_search_module` commands. The
+following variables will also be set:
+
+``PKG_CONFIG_FOUND``
+  True if a pkg-config executable was found.
+
+``PKG_CONFIG_VERSION_STRING``
+  .. versionadded:: 2.8.8
+
+  The version of pkg-config that was found.
+
+``PKG_CONFIG_EXECUTABLE``
+  The pathname of the pkg-config program.
+
+``PKG_CONFIG_ARGN``
+  .. versionadded:: 3.22
+
+  A list of arguments to pass to pkg-config.
+
+Both ``PKG_CONFIG_EXECUTABLE`` and ``PKG_CONFIG_ARGN`` are initialized by the
+module, but may be overridden by the user.  See `Variables Affecting Behavior`_
+for how these variables are initialized.
+
+#]========================================]
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+### Common stuff ####
+set(PKG_CONFIG_VERSION 1)
+
+# find pkg-config, use PKG_CONFIG if set
+if((NOT PKG_CONFIG_EXECUTABLE) AND (NOT "$ENV{PKG_CONFIG}" STREQUAL ""))
+  separate_arguments(PKG_CONFIG_FROM_ENV_SPLIT NATIVE_COMMAND PROGRAM SEPARATE_ARGS "$ENV{PKG_CONFIG}")
+  list(LENGTH PKG_CONFIG_FROM_ENV_SPLIT PKG_CONFIG_FROM_ENV_SPLIT_ARGC)
+  if(PKG_CONFIG_FROM_ENV_SPLIT_ARGC GREATER 0)
+    list(GET PKG_CONFIG_FROM_ENV_SPLIT 0 PKG_CONFIG_FROM_ENV_ARGV0)
+    if(PKG_CONFIG_FROM_ENV_SPLIT_ARGC GREATER 1)
+      list(SUBLIST PKG_CONFIG_FROM_ENV_SPLIT 1 -1 PKG_CONFIG_ARGN)
+    endif()
+    set(PKG_CONFIG_EXECUTABLE "${PKG_CONFIG_FROM_ENV_ARGV0}" CACHE FILEPATH "pkg-config executable")
+  endif()
+endif()
+
+set(PKG_CONFIG_NAMES "pkg-config")
+if(CMAKE_HOST_WIN32)
+  list(PREPEND PKG_CONFIG_NAMES "pkg-config.bat")
+endif()
+list(APPEND PKG_CONFIG_NAMES "pkgconf")
+
+find_program(PKG_CONFIG_EXECUTABLE
+  NAMES ${PKG_CONFIG_NAMES}
+  NAMES_PER_DIR
+  DOC "pkg-config executable")
+mark_as_advanced(PKG_CONFIG_EXECUTABLE)
+
+set(PKG_CONFIG_ARGN "${PKG_CONFIG_ARGN}" CACHE STRING "Arguments to supply to pkg-config")
+mark_as_advanced(PKG_CONFIG_ARGN)
+
+set(_PKG_CONFIG_FAILURE_MESSAGE "")
+if (PKG_CONFIG_EXECUTABLE)
+  execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} ${PKG_CONFIG_ARGN} --version
+    OUTPUT_VARIABLE PKG_CONFIG_VERSION_STRING OUTPUT_STRIP_TRAILING_WHITESPACE
+    ERROR_VARIABLE _PKG_CONFIG_VERSION_ERROR ERROR_STRIP_TRAILING_WHITESPACE
+    RESULT_VARIABLE _PKG_CONFIG_VERSION_RESULT
+    )
+
+  if (NOT _PKG_CONFIG_VERSION_RESULT EQUAL 0)
+    string(REPLACE "\n" "\n    " _PKG_CONFIG_VERSION_ERROR "      ${_PKG_CONFIG_VERSION_ERROR}")
+    if(PKG_CONFIG_ARGN)
+      string(REPLACE ";" " " PKG_CONFIG_ARGN " ${PKG_CONFIG_ARGN}")
+    endif()
+    string(APPEND _PKG_CONFIG_FAILURE_MESSAGE
+      "The command\n"
+      "      \"${PKG_CONFIG_EXECUTABLE}\"${PKG_CONFIG_ARGN} --version\n"
+      "    failed with output:\n${PKG_CONFIG_VERSION_STRING}\n"
+      "    stderr: \n${_PKG_CONFIG_VERSION_ERROR}\n"
+      "    result: \n${_PKG_CONFIG_VERSION_RESULT}"
+      )
+    set(PKG_CONFIG_EXECUTABLE "")
+    set(PKG_CONFIG_ARGN "")
+    unset(PKG_CONFIG_VERSION_STRING)
+  endif ()
+  unset(_PKG_CONFIG_VERSION_RESULT)
+endif ()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(PkgConfig
+                                  REQUIRED_VARS PKG_CONFIG_EXECUTABLE
+                                  REASON_FAILURE_MESSAGE "${_PKG_CONFIG_FAILURE_MESSAGE}"
+                                  VERSION_VAR PKG_CONFIG_VERSION_STRING)
+
+# This is needed because the module name is "PkgConfig" but the name of
+# this variable has always been PKG_CONFIG_FOUND so this isn't automatically
+# handled by FPHSA.
+set(PKG_CONFIG_FOUND "${PKGCONFIG_FOUND}")
+
+# Unsets the given variables
+macro(_pkgconfig_unset var)
+  # Clear normal variable (possibly set by project code).
+  unset(${var})
+  # Store as cache variable.
+  # FIXME: Add a policy to switch to a normal variable.
+  set(${var} "" CACHE INTERNAL "")
+endmacro()
+
+macro(_pkgconfig_set var value)
+  # Clear normal variable (possibly set by project code).
+  unset(${var})
+  # Store as cache variable.
+  # FIXME: Add a policy to switch to a normal variable.
+  set(${var} ${value} CACHE INTERNAL "")
+endmacro()
+
+# Invokes pkgconfig, cleans up the result and sets variables
+macro(_pkgconfig_invoke _pkglist _prefix _varname _regexp)
+  set(_pkgconfig_invoke_result)
+
+  execute_process(
+    COMMAND ${PKG_CONFIG_EXECUTABLE} ${PKG_CONFIG_ARGN} ${ARGN} ${_pkglist}
+    OUTPUT_VARIABLE _pkgconfig_invoke_result
+    RESULT_VARIABLE _pkgconfig_failed
+    OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+  if (_pkgconfig_failed)
+    set(_pkgconfig_${_varname} "")
+    _pkgconfig_unset(${_prefix}_${_varname})
+  else()
+    string(REGEX REPLACE "[\r\n]"       " " _pkgconfig_invoke_result "${_pkgconfig_invoke_result}")
+
+    if (NOT ${_regexp} STREQUAL "")
+      string(REGEX REPLACE "${_regexp}" " " _pkgconfig_invoke_result "${_pkgconfig_invoke_result}")
+    endif()
+
+    separate_arguments(_pkgconfig_invoke_result)
+
+    #message(STATUS "  ${_varname} ... ${_pkgconfig_invoke_result}")
+    set(_pkgconfig_${_varname} ${_pkgconfig_invoke_result})
+    _pkgconfig_set(${_prefix}_${_varname} "${_pkgconfig_invoke_result}")
+  endif()
+endmacro()
+
+# Internal version of pkg_get_variable; expects PKG_CONFIG_PATH to already be set
+function (_pkg_get_variable result pkg variable)
+  _pkgconfig_invoke("${pkg}" "prefix" "result" "" "--variable=${variable}")
+  set("${result}"
+    "${prefix_result}"
+    PARENT_SCOPE)
+endfunction ()
+
+# Invokes pkgconfig two times; once without '--static' and once with
+# '--static'
+macro(_pkgconfig_invoke_dyn _pkglist _prefix _varname cleanup_regexp)
+  _pkgconfig_invoke("${_pkglist}" ${_prefix}        ${_varname} "${cleanup_regexp}" ${ARGN})
+  _pkgconfig_invoke("${_pkglist}" ${_prefix} STATIC_${_varname} "${cleanup_regexp}" --static  ${ARGN})
+endmacro()
+
+# Splits given arguments into options and a package list
+macro(_pkgconfig_parse_options _result _is_req _is_silent _no_cmake_path _no_cmake_environment_path _imp_target _imp_target_global)
+  set(${_is_req} 0)
+  set(${_is_silent} 0)
+  set(${_no_cmake_path} 0)
+  set(${_no_cmake_environment_path} 0)
+  set(${_imp_target} 0)
+  set(${_imp_target_global} 0)
+  if(DEFINED PKG_CONFIG_USE_CMAKE_PREFIX_PATH)
+    if(NOT PKG_CONFIG_USE_CMAKE_PREFIX_PATH)
+      set(${_no_cmake_path} 1)
+      set(${_no_cmake_environment_path} 1)
+    endif()
+  elseif(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 3.1)
+    set(${_no_cmake_path} 1)
+    set(${_no_cmake_environment_path} 1)
+  endif()
+
+  foreach(_pkg ${ARGN})
+    if (_pkg STREQUAL "REQUIRED")
+      set(${_is_req} 1)
+    endif ()
+    if (_pkg STREQUAL "QUIET")
+      set(${_is_silent} 1)
+    endif ()
+    if (_pkg STREQUAL "NO_CMAKE_PATH")
+      set(${_no_cmake_path} 1)
+    endif()
+    if (_pkg STREQUAL "NO_CMAKE_ENVIRONMENT_PATH")
+      set(${_no_cmake_environment_path} 1)
+    endif()
+    if (_pkg STREQUAL "IMPORTED_TARGET")
+      set(${_imp_target} 1)
+    endif()
+    if (_pkg STREQUAL "GLOBAL")
+      set(${_imp_target_global} 1)
+    endif()
+  endforeach()
+
+  if (${_imp_target_global} AND NOT ${_imp_target})
+    message(SEND_ERROR "the argument GLOBAL may only be used together with IMPORTED_TARGET")
+  endif()
+
+  set(${_result} ${ARGN})
+  list(REMOVE_ITEM ${_result} "REQUIRED")
+  list(REMOVE_ITEM ${_result} "QUIET")
+  list(REMOVE_ITEM ${_result} "NO_CMAKE_PATH")
+  list(REMOVE_ITEM ${_result} "NO_CMAKE_ENVIRONMENT_PATH")
+  list(REMOVE_ITEM ${_result} "IMPORTED_TARGET")
+  list(REMOVE_ITEM ${_result} "GLOBAL")
+endmacro()
+
+# Add the content of a variable or an environment variable to a list of
+# paths
+# Usage:
+#  - _pkgconfig_add_extra_path(_extra_paths VAR)
+#  - _pkgconfig_add_extra_path(_extra_paths ENV VAR)
+function(_pkgconfig_add_extra_path _extra_paths_var _var)
+  set(_is_env 0)
+  if(ARGC GREATER 2 AND _var STREQUAL "ENV")
+    set(_var ${ARGV2})
+    set(_is_env 1)
+  endif()
+  if(NOT _is_env)
+    if(NOT "${${_var}}" STREQUAL "")
+      list(APPEND ${_extra_paths_var} ${${_var}})
+    endif()
+  else()
+    if(NOT "$ENV{${_var}}" STREQUAL "")
+      file(TO_CMAKE_PATH "$ENV{${_var}}" _path)
+      list(APPEND ${_extra_paths_var} ${_path})
+      unset(_path)
+    endif()
+  endif()
+  set(${_extra_paths_var} ${${_extra_paths_var}} PARENT_SCOPE)
+endfunction()
+
+# scan the LDFLAGS returned by pkg-config for library directories and
+# libraries, figure out the absolute paths of that libraries in the
+# given directories
+function(_pkg_find_libs _prefix _no_cmake_path _no_cmake_environment_path)
+  unset(_libs)
+  unset(_find_opts)
+
+  # set the options that are used as long as the .pc file does not provide a library
+  # path to look into
+  if(_no_cmake_path)
+    list(APPEND _find_opts "NO_CMAKE_PATH")
+  endif()
+  if(_no_cmake_environment_path)
+    list(APPEND _find_opts "NO_CMAKE_ENVIRONMENT_PATH")
+  endif()
+
+  unset(_search_paths)
+  unset(_next_is_framework)
+  foreach (flag IN LISTS ${_prefix}_LDFLAGS)
+    if (_next_is_framework)
+      list(APPEND _libs "-framework ${flag}")
+      unset(_next_is_framework)
+      continue()
+    endif ()
+    if (flag MATCHES "^-L(.*)")
+      list(APPEND _search_paths ${CMAKE_MATCH_1})
+      continue()
+    endif()
+    if (flag MATCHES "^-l(.*)")
+      set(_pkg_search "${CMAKE_MATCH_1}")
+    else()
+      if (flag STREQUAL "-framework")
+        set(_next_is_framework TRUE)
+      endif ()
+      continue()
+    endif()
+
+    if(_search_paths)
+        # Firstly search in -L paths
+        find_library(pkgcfg_lib_${_prefix}_${_pkg_search}
+                     NAMES ${_pkg_search}
+                     HINTS ${_search_paths} NO_DEFAULT_PATH)
+    endif()
+    find_library(pkgcfg_lib_${_prefix}_${_pkg_search}
+                 NAMES ${_pkg_search}
+                 ${_find_opts})
+    mark_as_advanced(pkgcfg_lib_${_prefix}_${_pkg_search})
+    if(pkgcfg_lib_${_prefix}_${_pkg_search})
+      list(APPEND _libs "${pkgcfg_lib_${_prefix}_${_pkg_search}}")
+    else()
+      list(APPEND _libs ${_pkg_search})
+    endif()
+  endforeach()
+
+  set(${_prefix}_LINK_LIBRARIES "${_libs}" PARENT_SCOPE)
+endfunction()
+
+# create an imported target from all the information returned by pkg-config
+function(_pkg_create_imp_target _prefix _imp_target_global)
+  if (NOT TARGET PkgConfig::${_prefix})
+    if(${_imp_target_global})
+      set(_global_opt "GLOBAL")
+    else()
+      unset(_global_opt)
+    endif()
+    add_library(PkgConfig::${_prefix} INTERFACE IMPORTED ${_global_opt})
+
+    if(${_prefix}_INCLUDE_DIRS)
+      set_property(TARGET PkgConfig::${_prefix} PROPERTY
+                   INTERFACE_INCLUDE_DIRECTORIES "${${_prefix}_INCLUDE_DIRS}")
+    endif()
+    if(${_prefix}_LINK_LIBRARIES)
+      set_property(TARGET PkgConfig::${_prefix} PROPERTY
+                   INTERFACE_LINK_LIBRARIES "${${_prefix}_LINK_LIBRARIES}")
+    endif()
+    if(${_prefix}_LDFLAGS_OTHER)
+      set_property(TARGET PkgConfig::${_prefix} PROPERTY
+                   INTERFACE_LINK_OPTIONS "${${_prefix}_LDFLAGS_OTHER}")
+    endif()
+    if(${_prefix}_CFLAGS_OTHER)
+      set_property(TARGET PkgConfig::${_prefix} PROPERTY
+                   INTERFACE_COMPILE_OPTIONS "${${_prefix}_CFLAGS_OTHER}")
+    endif()
+  endif()
+endfunction()
+
+# recalculate the dynamic output
+# this is a macro and not a function so the result of _pkg_find_libs is automatically propagated
+macro(_pkg_recalculate _prefix _no_cmake_path _no_cmake_environment_path _imp_target _imp_target_global)
+  _pkg_find_libs(${_prefix} ${_no_cmake_path} ${_no_cmake_environment_path})
+  if(${_imp_target})
+    _pkg_create_imp_target(${_prefix} ${_imp_target_global})
+  endif()
+endmacro()
+
+###
+macro(_pkg_set_path_internal)
+  set(_extra_paths)
+
+  if(NOT _no_cmake_path)
+    _pkgconfig_add_extra_path(_extra_paths CMAKE_PREFIX_PATH)
+    _pkgconfig_add_extra_path(_extra_paths CMAKE_FRAMEWORK_PATH)
+    _pkgconfig_add_extra_path(_extra_paths CMAKE_APPBUNDLE_PATH)
+  endif()
+
+  if(NOT _no_cmake_environment_path)
+    _pkgconfig_add_extra_path(_extra_paths ENV CMAKE_PREFIX_PATH)
+    _pkgconfig_add_extra_path(_extra_paths ENV CMAKE_FRAMEWORK_PATH)
+    _pkgconfig_add_extra_path(_extra_paths ENV CMAKE_APPBUNDLE_PATH)
+  endif()
+
+  if(NOT _extra_paths STREQUAL "")
+    # Save the PKG_CONFIG_PATH environment variable, and add paths
+    # from the CMAKE_PREFIX_PATH variables
+    set(_pkgconfig_path_old "$ENV{PKG_CONFIG_PATH}")
+    set(_pkgconfig_path "${_pkgconfig_path_old}")
+    if(NOT _pkgconfig_path STREQUAL "")
+      file(TO_CMAKE_PATH "${_pkgconfig_path}" _pkgconfig_path)
+    endif()
+
+    # Create a list of the possible pkgconfig subfolder (depending on
+    # the system
+    set(_lib_dirs)
+    if(NOT DEFINED CMAKE_SYSTEM_NAME
+        OR (CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU)$"
+            AND NOT CMAKE_CROSSCOMPILING))
+      if(EXISTS "/etc/debian_version") # is this a debian system ?
+        if(CMAKE_LIBRARY_ARCHITECTURE)
+          list(APPEND _lib_dirs "lib/${CMAKE_LIBRARY_ARCHITECTURE}/pkgconfig")
+        endif()
+      else()
+        # not debian, check the FIND_LIBRARY_USE_LIB32_PATHS and FIND_LIBRARY_USE_LIB64_PATHS properties
+        get_property(uselib32 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS)
+        if(uselib32 AND CMAKE_SIZEOF_VOID_P EQUAL 4)
+          list(APPEND _lib_dirs "lib32/pkgconfig")
+        endif()
+        get_property(uselib64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS)
+        if(uselib64 AND CMAKE_SIZEOF_VOID_P EQUAL 8)
+          list(APPEND _lib_dirs "lib64/pkgconfig")
+        endif()
+        get_property(uselibx32 GLOBAL PROPERTY FIND_LIBRARY_USE_LIBX32_PATHS)
+        if(uselibx32 AND CMAKE_INTERNAL_PLATFORM_ABI STREQUAL "ELF X32")
+          list(APPEND _lib_dirs "libx32/pkgconfig")
+        endif()
+      endif()
+    endif()
+    if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" AND NOT CMAKE_CROSSCOMPILING)
+      list(APPEND _lib_dirs "libdata/pkgconfig")
+    endif()
+    list(APPEND _lib_dirs "lib/pkgconfig")
+    list(APPEND _lib_dirs "share/pkgconfig")
+
+    # Check if directories exist and eventually append them to the
+    # pkgconfig path list
+    foreach(_prefix_dir ${_extra_paths})
+      foreach(_lib_dir ${_lib_dirs})
+        if(EXISTS "${_prefix_dir}/${_lib_dir}")
+          list(APPEND _pkgconfig_path "${_prefix_dir}/${_lib_dir}")
+          list(REMOVE_DUPLICATES _pkgconfig_path)
+        endif()
+      endforeach()
+    endforeach()
+
+    # Prepare and set the environment variable
+    if(NOT _pkgconfig_path STREQUAL "")
+      # remove empty values from the list
+      list(REMOVE_ITEM _pkgconfig_path "")
+      file(TO_NATIVE_PATH "${_pkgconfig_path}" _pkgconfig_path)
+      if(CMAKE_HOST_UNIX)
+        string(REPLACE ";" ":" _pkgconfig_path "${_pkgconfig_path}")
+        string(REPLACE "\\ " " " _pkgconfig_path "${_pkgconfig_path}")
+      endif()
+      set(ENV{PKG_CONFIG_PATH} "${_pkgconfig_path}")
+    endif()
+
+    # Unset variables
+    unset(_lib_dirs)
+    unset(_pkgconfig_path)
+  endif()
+
+  # Tell pkg-config not to strip any -L paths so we can search them all.
+  if(DEFINED ENV{PKG_CONFIG_ALLOW_SYSTEM_LIBS})
+    set(_pkgconfig_allow_system_libs_old "$ENV{PKG_CONFIG_ALLOW_SYSTEM_LIBS}")
+  else()
+    unset(_pkgconfig_allow_system_libs_old)
+  endif()
+  set(ENV{PKG_CONFIG_ALLOW_SYSTEM_LIBS} 0)
+endmacro()
+
+macro(_pkg_restore_path_internal)
+  if(NOT _extra_paths STREQUAL "")
+    # Restore the environment variable
+    set(ENV{PKG_CONFIG_PATH} "${_pkgconfig_path_old}")
+  endif()
+  if(DEFINED _pkgconfig_allow_system_libs_old)
+    set(ENV{PKG_CONFIG_ALLOW_SYSTEM_LIBS} "${_pkgconfig_allow_system_libs_old}")
+    unset(_pkgconfig_allow_system_libs_old)
+  endif()
+
+  unset(_extra_paths)
+  unset(_pkgconfig_path_old)
+endmacro()
+
+# pkg-config returns frameworks in --libs-only-other
+# they need to be in ${_prefix}_LIBRARIES so "-framework a -framework b" does
+# not incorrectly be combined to "-framework a b"
+function(_pkgconfig_extract_frameworks _prefix)
+  set(ldflags "${${_prefix}_LDFLAGS_OTHER}")
+  list(FIND ldflags "-framework" FR_POS)
+  list(LENGTH ldflags LD_LENGTH)
+
+  # reduce length by 1 as we need "-framework" and the next entry
+  math(EXPR LD_LENGTH "${LD_LENGTH} - 1")
+  while (FR_POS GREATER -1 AND LD_LENGTH GREATER FR_POS)
+    list(REMOVE_AT ldflags ${FR_POS})
+    list(GET ldflags ${FR_POS} HEAD)
+    list(REMOVE_AT ldflags ${FR_POS})
+    math(EXPR LD_LENGTH "${LD_LENGTH} - 2")
+
+    list(APPEND LIBS "-framework ${HEAD}")
+
+    list(FIND ldflags "-framework" FR_POS)
+  endwhile ()
+  set(${_prefix}_LIBRARIES ${${_prefix}_LIBRARIES} ${LIBS} PARENT_SCOPE)
+  set(${_prefix}_LDFLAGS_OTHER "${ldflags}" PARENT_SCOPE)
+endfunction()
+
+# pkg-config returns -isystem include directories in --cflags-only-other,
+# depending on the version and if there is a space between -isystem and
+# the actual path
+function(_pkgconfig_extract_isystem _prefix)
+  set(cflags "${${_prefix}_CFLAGS_OTHER}")
+  set(outflags "")
+  set(incdirs "${${_prefix}_INCLUDE_DIRS}")
+
+  set(next_is_isystem FALSE)
+  foreach (THING IN LISTS cflags)
+    # This may filter "-isystem -isystem". That would not work anyway,
+    # so let it happen.
+    if (THING STREQUAL "-isystem")
+      set(next_is_isystem TRUE)
+      continue()
+    endif ()
+    if (next_is_isystem)
+      set(next_is_isystem FALSE)
+      list(APPEND incdirs "${THING}")
+    elseif (THING MATCHES "^-isystem")
+      string(SUBSTRING "${THING}" 8 -1 THING)
+      list(APPEND incdirs "${THING}")
+    else ()
+      list(APPEND outflags "${THING}")
+    endif ()
+  endforeach ()
+  set(${_prefix}_CFLAGS_OTHER "${outflags}" PARENT_SCOPE)
+  set(${_prefix}_INCLUDE_DIRS "${incdirs}" PARENT_SCOPE)
+endfunction()
+
+###
+macro(_pkg_check_modules_internal _is_required _is_silent _no_cmake_path _no_cmake_environment_path _imp_target _imp_target_global _prefix)
+  _pkgconfig_unset(${_prefix}_FOUND)
+  _pkgconfig_unset(${_prefix}_VERSION)
+  _pkgconfig_unset(${_prefix}_PREFIX)
+  _pkgconfig_unset(${_prefix}_INCLUDEDIR)
+  _pkgconfig_unset(${_prefix}_LIBDIR)
+  _pkgconfig_unset(${_prefix}_MODULE_NAME)
+  _pkgconfig_unset(${_prefix}_LIBS)
+  _pkgconfig_unset(${_prefix}_LIBS_L)
+  _pkgconfig_unset(${_prefix}_LIBS_PATHS)
+  _pkgconfig_unset(${_prefix}_LIBS_OTHER)
+  _pkgconfig_unset(${_prefix}_CFLAGS)
+  _pkgconfig_unset(${_prefix}_CFLAGS_I)
+  _pkgconfig_unset(${_prefix}_CFLAGS_OTHER)
+  _pkgconfig_unset(${_prefix}_STATIC_LIBDIR)
+  _pkgconfig_unset(${_prefix}_STATIC_LIBS)
+  _pkgconfig_unset(${_prefix}_STATIC_LIBS_L)
+  _pkgconfig_unset(${_prefix}_STATIC_LIBS_PATHS)
+  _pkgconfig_unset(${_prefix}_STATIC_LIBS_OTHER)
+  _pkgconfig_unset(${_prefix}_STATIC_CFLAGS)
+  _pkgconfig_unset(${_prefix}_STATIC_CFLAGS_I)
+  _pkgconfig_unset(${_prefix}_STATIC_CFLAGS_OTHER)
+
+  # create a better addressable variable of the modules and calculate its size
+  set(_pkg_check_modules_list ${ARGN})
+  list(LENGTH _pkg_check_modules_list _pkg_check_modules_cnt)
+
+  if(PKG_CONFIG_EXECUTABLE)
+    # give out status message telling checked module
+    if (NOT ${_is_silent})
+      if (_pkg_check_modules_cnt EQUAL 1)
+        message(STATUS "Checking for module '${_pkg_check_modules_list}'")
+      else()
+        message(STATUS "Checking for modules '${_pkg_check_modules_list}'")
+      endif()
+    endif()
+
+    set(_pkg_check_modules_packages)
+    set(_pkg_check_modules_failed)
+
+    _pkg_set_path_internal()
+
+    # iterate through module list and check whether they exist and match the required version
+    foreach (_pkg_check_modules_pkg ${_pkg_check_modules_list})
+      set(_pkg_check_modules_exist_query)
+
+      # check whether version is given
+      if (_pkg_check_modules_pkg MATCHES "(.*[^><])(=|[><]=?)(.*)")
+        set(_pkg_check_modules_pkg_name "${CMAKE_MATCH_1}")
+        set(_pkg_check_modules_pkg_op "${CMAKE_MATCH_2}")
+        set(_pkg_check_modules_pkg_ver "${CMAKE_MATCH_3}")
+      else()
+        set(_pkg_check_modules_pkg_name "${_pkg_check_modules_pkg}")
+        set(_pkg_check_modules_pkg_op)
+        set(_pkg_check_modules_pkg_ver)
+      endif()
+
+      _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_VERSION)
+      _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_PREFIX)
+      _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_INCLUDEDIR)
+      _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_LIBDIR)
+
+      list(APPEND _pkg_check_modules_packages    "${_pkg_check_modules_pkg_name}")
+
+      # create the final query which is of the format:
+      # * <pkg-name> > <version>
+      # * <pkg-name> >= <version>
+      # * <pkg-name> = <version>
+      # * <pkg-name> <= <version>
+      # * <pkg-name> < <version>
+      # * --exists <pkg-name>
+      list(APPEND _pkg_check_modules_exist_query --print-errors --short-errors)
+      if (_pkg_check_modules_pkg_op)
+        list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_name} ${_pkg_check_modules_pkg_op} ${_pkg_check_modules_pkg_ver}")
+      else()
+        list(APPEND _pkg_check_modules_exist_query --exists)
+        list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_name}")
+      endif()
+
+      # execute the query
+      execute_process(
+        COMMAND ${PKG_CONFIG_EXECUTABLE} ${PKG_CONFIG_ARGN} ${_pkg_check_modules_exist_query}
+        RESULT_VARIABLE _pkgconfig_retval
+        ERROR_VARIABLE _pkgconfig_error
+        ERROR_STRIP_TRAILING_WHITESPACE)
+
+      # evaluate result and tell failures
+      if (_pkgconfig_retval)
+        if(NOT ${_is_silent})
+          message(STATUS "  ${_pkgconfig_error}")
+        endif()
+
+        set(_pkg_check_modules_failed 1)
+      endif()
+    endforeach()
+
+    if(_pkg_check_modules_failed)
+      # fail when requested
+      if (${_is_required})
+        message(FATAL_ERROR "A required package was not found")
+      endif ()
+    else()
+      # when we are here, we checked whether requested modules
+      # exist. Now, go through them and set variables
+
+      _pkgconfig_set(${_prefix}_FOUND 1)
+      list(LENGTH _pkg_check_modules_packages pkg_count)
+
+      # iterate through all modules again and set individual variables
+      foreach (_pkg_check_modules_pkg ${_pkg_check_modules_packages})
+        # handle case when there is only one package required
+        if (pkg_count EQUAL 1)
+          set(_pkg_check_prefix "${_prefix}")
+        else()
+          set(_pkg_check_prefix "${_prefix}_${_pkg_check_modules_pkg}")
+        endif()
+
+        _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" VERSION    ""   --modversion )
+        pkg_get_variable("${_pkg_check_prefix}_PREFIX" ${_pkg_check_modules_pkg} "prefix")
+        pkg_get_variable("${_pkg_check_prefix}_INCLUDEDIR" ${_pkg_check_modules_pkg} "includedir")
+        pkg_get_variable("${_pkg_check_prefix}_LIBDIR" ${_pkg_check_modules_pkg} "libdir")
+        foreach (variable IN ITEMS PREFIX INCLUDEDIR LIBDIR)
+          _pkgconfig_set("${_pkg_check_prefix}_${variable}" "${${_pkg_check_prefix}_${variable}}")
+        endforeach ()
+          _pkgconfig_set("${_pkg_check_prefix}_MODULE_NAME" "${_pkg_check_modules_pkg}")
+
+        if (NOT ${_is_silent})
+          message(STATUS "  Found ${_pkg_check_modules_pkg}, version ${_pkgconfig_VERSION}")
+        endif ()
+      endforeach()
+
+      # set variables which are combined for multiple modules
+      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LIBRARIES     "(^| )-l"             --libs-only-l )
+      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LIBRARY_DIRS  "(^| )-L"             --libs-only-L )
+      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LDFLAGS       ""                    --libs )
+      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LDFLAGS_OTHER ""                    --libs-only-other )
+
+      if (APPLE AND "-framework" IN_LIST ${_prefix}_LDFLAGS_OTHER)
+        _pkgconfig_extract_frameworks("${_prefix}")
+      endif()
+
+      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" INCLUDE_DIRS  "(^| )(-I|-isystem ?)" --cflags-only-I )
+      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" CFLAGS        ""                    --cflags )
+      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" CFLAGS_OTHER  ""                    --cflags-only-other )
+
+      if (${_prefix}_CFLAGS_OTHER MATCHES "-isystem")
+        _pkgconfig_extract_isystem("${_prefix}")
+      endif ()
+
+      _pkg_recalculate("${_prefix}" ${_no_cmake_path} ${_no_cmake_environment_path} ${_imp_target} ${_imp_target_global})
+    endif()
+
+    _pkg_restore_path_internal()
+  else()
+    if (${_is_required})
+      message(SEND_ERROR "pkg-config tool not found")
+    endif ()
+  endif()
+endmacro()
+
+
+#[========================================[.rst:
+.. command:: pkg_check_modules
+
+  Checks for all the given modules, setting a variety of result variables in
+  the calling scope.
+
+  .. code-block:: cmake
+
+    pkg_check_modules(<prefix>
+                      [REQUIRED] [QUIET]
+                      [NO_CMAKE_PATH]
+                      [NO_CMAKE_ENVIRONMENT_PATH]
+                      [IMPORTED_TARGET [GLOBAL]]
+                      <moduleSpec> [<moduleSpec>...])
+
+  When the ``REQUIRED`` argument is given, the command will fail with an error
+  if module(s) could not be found.
+
+  When the ``QUIET`` argument is given, no status messages will be printed.
+
+  .. versionadded:: 3.1
+    The :variable:`CMAKE_PREFIX_PATH`,
+    :variable:`CMAKE_FRAMEWORK_PATH`, and :variable:`CMAKE_APPBUNDLE_PATH` cache
+    and environment variables will be added to the ``pkg-config`` search path.
+    The ``NO_CMAKE_PATH`` and ``NO_CMAKE_ENVIRONMENT_PATH`` arguments
+    disable this behavior for the cache variables and environment variables
+    respectively.
+    The :variable:`PKG_CONFIG_USE_CMAKE_PREFIX_PATH` variable set to ``FALSE``
+    disables this behavior globally.
+
+    .. This didn't actually work until 3.3.
+
+  .. versionadded:: 3.6
+    The ``IMPORTED_TARGET`` argument will create an imported target named
+    ``PkgConfig::<prefix>`` that can be passed directly as an argument to
+    :command:`target_link_libraries`.
+
+    .. This didn't actually work until 3.7.
+
+  .. versionadded:: 3.13
+    The ``GLOBAL`` argument will make the
+    imported target available in global scope.
+
+  .. versionadded:: 3.15
+    Non-library linker options reported by ``pkg-config`` are stored in the
+    :prop_tgt:`INTERFACE_LINK_OPTIONS` target property.
+
+  .. versionchanged:: 3.18
+    Include directories specified with ``-isystem`` are stored in the
+    :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` target property.  Previous
+    versions of CMake left them in the :prop_tgt:`INTERFACE_COMPILE_OPTIONS`
+    property.
+
+  Each ``<moduleSpec>`` can be either a bare module name or it can be a
+  module name with a version constraint (operators ``=``, ``<``, ``>``,
+  ``<=`` and ``>=`` are supported).  The following are examples for a module
+  named ``foo`` with various constraints:
+
+  - ``foo`` matches any version.
+  - ``foo<2`` only matches versions before 2.
+  - ``foo>=3.1`` matches any version from 3.1 or later.
+  - ``foo=1.2.3`` requires that foo must be exactly version 1.2.3.
+
+  The following variables may be set upon return.  Two sets of values exist:
+  One for the common case (``<XXX> = <prefix>``) and another for the
+  information ``pkg-config`` provides when called with the ``--static``
+  option (``<XXX> = <prefix>_STATIC``).
+
+  ``<XXX>_FOUND``
+    set to 1 if module(s) exist
+  ``<XXX>_LIBRARIES``
+    only the libraries (without the '-l')
+  ``<XXX>_LINK_LIBRARIES``
+    the libraries and their absolute paths
+  ``<XXX>_LIBRARY_DIRS``
+    the paths of the libraries (without the '-L')
+  ``<XXX>_LDFLAGS``
+    all required linker flags
+  ``<XXX>_LDFLAGS_OTHER``
+    all other linker flags
+  ``<XXX>_INCLUDE_DIRS``
+    the '-I' preprocessor flags (without the '-I')
+  ``<XXX>_CFLAGS``
+    all required cflags
+  ``<XXX>_CFLAGS_OTHER``
+    the other compiler flags
+
+  All but ``<XXX>_FOUND`` may be a :ref:`;-list <CMake Language Lists>` if the
+  associated variable returned from ``pkg-config`` has multiple values.
+
+  .. versionchanged:: 3.18
+    Include directories specified with ``-isystem`` are stored in the
+    ``<XXX>_INCLUDE_DIRS`` variable.  Previous versions of CMake left them
+    in ``<XXX>_CFLAGS_OTHER``.
+
+  There are some special variables whose prefix depends on the number of
+  ``<moduleSpec>`` given.  When there is only one ``<moduleSpec>``,
+  ``<YYY>`` will simply be ``<prefix>``, but if two or more ``<moduleSpec>``
+  items are given, ``<YYY>`` will be ``<prefix>_<moduleName>``.
+
+  ``<YYY>_VERSION``
+    version of the module
+  ``<YYY>_PREFIX``
+    prefix directory of the module
+  ``<YYY>_INCLUDEDIR``
+    include directory of the module
+  ``<YYY>_LIBDIR``
+    lib directory of the module
+
+  .. versionchanged:: 3.8
+    For any given ``<prefix>``, ``pkg_check_modules()`` can be called multiple
+    times with different parameters.  Previous versions of CMake cached and
+    returned the first successful result.
+
+  .. versionchanged:: 3.16
+    If a full path to the found library can't be determined, but it's still
+    visible to the linker, pass it through as ``-l<name>``.  Previous versions
+    of CMake failed in this case.
+
+  Examples:
+
+  .. code-block:: cmake
+
+    pkg_check_modules (GLIB2 glib-2.0)
+
+  Looks for any version of glib2.  If found, the output variable
+  ``GLIB2_VERSION`` will hold the actual version found.
+
+  .. code-block:: cmake
+
+    pkg_check_modules (GLIB2 glib-2.0>=2.10)
+
+  Looks for at least version 2.10 of glib2.  If found, the output variable
+  ``GLIB2_VERSION`` will hold the actual version found.
+
+  .. code-block:: cmake
+
+    pkg_check_modules (FOO glib-2.0>=2.10 gtk+-2.0)
+
+  Looks for both glib2-2.0 (at least version 2.10) and any version of
+  gtk2+-2.0.  Only if both are found will ``FOO`` be considered found.
+  The ``FOO_glib-2.0_VERSION`` and ``FOO_gtk+-2.0_VERSION`` variables will be
+  set to their respective found module versions.
+
+  .. code-block:: cmake
+
+    pkg_check_modules (XRENDER REQUIRED xrender)
+
+  Requires any version of ``xrender``.  Example output variables set by a
+  successful call::
+
+    XRENDER_LIBRARIES=Xrender;X11
+    XRENDER_STATIC_LIBRARIES=Xrender;X11;pthread;Xau;Xdmcp
+#]========================================]
+macro(pkg_check_modules _prefix _module0)
+  _pkgconfig_parse_options(_pkg_modules _pkg_is_required _pkg_is_silent _no_cmake_path _no_cmake_environment_path _imp_target _imp_target_global "${_module0}" ${ARGN})
+  # check cached value
+  if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND OR
+      (NOT "${ARGN}" STREQUAL "" AND NOT "${__pkg_config_arguments_${_prefix}}" STREQUAL "${_module0};${ARGN}") OR
+      (    "${ARGN}" STREQUAL "" AND NOT "${__pkg_config_arguments_${_prefix}}" STREQUAL "${_module0}"))
+    _pkg_check_modules_internal("${_pkg_is_required}" "${_pkg_is_silent}" ${_no_cmake_path} ${_no_cmake_environment_path} ${_imp_target} ${_imp_target_global} "${_prefix}" ${_pkg_modules})
+
+    _pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION})
+    if (${_prefix}_FOUND)
+      _pkgconfig_set(__pkg_config_arguments_${_prefix} "${_module0};${ARGN}")
+    endif()
+  else()
+    if (${_prefix}_FOUND)
+      _pkg_recalculate("${_prefix}" ${_no_cmake_path} ${_no_cmake_environment_path} ${_imp_target} ${_imp_target_global})
+    endif()
+  endif()
+endmacro()
+
+
+#[========================================[.rst:
+.. command:: pkg_search_module
+
+  The behavior of this command is the same as :command:`pkg_check_modules`,
+  except that rather than checking for all the specified modules, it searches
+  for just the first successful match.
+
+  .. code-block:: cmake
+
+    pkg_search_module(<prefix>
+                      [REQUIRED] [QUIET]
+                      [NO_CMAKE_PATH]
+                      [NO_CMAKE_ENVIRONMENT_PATH]
+                      [IMPORTED_TARGET [GLOBAL]]
+                      <moduleSpec> [<moduleSpec>...])
+
+  .. versionadded:: 3.16
+    If a module is found, the ``<prefix>_MODULE_NAME`` variable will contain the
+    name of the matching module. This variable can be used if you need to run
+    :command:`pkg_get_variable`.
+
+  Example:
+
+  .. code-block:: cmake
+
+    pkg_search_module (BAR libxml-2.0 libxml2 libxml>=2)
+#]========================================]
+macro(pkg_search_module _prefix _module0)
+  _pkgconfig_parse_options(_pkg_modules_alt _pkg_is_required _pkg_is_silent _no_cmake_path _no_cmake_environment_path _imp_target _imp_target_global "${_module0}" ${ARGN})
+  # check cached value
+  if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND)
+    set(_pkg_modules_found 0)
+
+    if (NOT ${_pkg_is_silent})
+      message(STATUS "Checking for one of the modules '${_pkg_modules_alt}'")
+    endif ()
+
+    # iterate through all modules and stop at the first working one.
+    foreach(_pkg_alt ${_pkg_modules_alt})
+      if(NOT _pkg_modules_found)
+        _pkg_check_modules_internal(0 1 ${_no_cmake_path} ${_no_cmake_environment_path} ${_imp_target} ${_imp_target_global} "${_prefix}" "${_pkg_alt}")
+      endif()
+
+      if (${_prefix}_FOUND)
+        set(_pkg_modules_found 1)
+        break()
+      endif()
+    endforeach()
+
+    if (NOT ${_prefix}_FOUND)
+      if(${_pkg_is_required})
+        message(SEND_ERROR "None of the required '${_pkg_modules_alt}' found")
+      endif()
+    endif()
+
+    _pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION})
+  elseif (${_prefix}_FOUND)
+    _pkg_recalculate("${_prefix}" ${_no_cmake_path} ${_no_cmake_environment_path} ${_imp_target} ${_imp_target_global})
+  endif()
+endmacro()
+
+#[========================================[.rst:
+.. command:: pkg_get_variable
+
+  .. versionadded:: 3.4
+
+  Retrieves the value of a pkg-config variable ``varName`` and stores it in the
+  result variable ``resultVar`` in the calling scope.
+
+  .. code-block:: cmake
+
+    pkg_get_variable(<resultVar> <moduleName> <varName>)
+
+  If ``pkg-config`` returns multiple values for the specified variable,
+  ``resultVar`` will contain a :ref:`;-list <CMake Language Lists>`.
+
+  For example:
+
+  .. code-block:: cmake
+
+    pkg_get_variable(GI_GIRDIR gobject-introspection-1.0 girdir)
+#]========================================]
+function (pkg_get_variable result pkg variable)
+  _pkg_set_path_internal()
+  _pkgconfig_invoke("${pkg}" "prefix" "result" "" "--variable=${variable}")
+  set("${result}"
+    "${prefix_result}"
+    PARENT_SCOPE)
+  _pkg_restore_path_internal()
+endfunction ()
+
+
+#[========================================[.rst:
+Variables Affecting Behavior
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. variable:: PKG_CONFIG_EXECUTABLE
+
+  This cache variable can be set to the path of the pkg-config executable.
+  :command:`find_program` is called internally by the module with this
+  variable.
+
+  .. versionadded:: 3.1
+    The ``PKG_CONFIG`` environment variable can be used as a hint if
+    ``PKG_CONFIG_EXECUTABLE`` has not yet been set.
+
+  .. versionchanged:: 3.22
+    If the ``PKG_CONFIG`` environment variable is set, only the first
+    argument is taken from it when using it as a hint.
+
+.. variable:: PKG_CONFIG_ARGN
+
+  .. versionadded:: 3.22
+
+  This cache variable can be set to a list of arguments to additionally pass
+  to pkg-config if needed. If not provided, it will be initialized from the
+  ``PKG_CONFIG`` environment variable, if set. The first argument in that
+  environment variable is assumed to be the pkg-config program, while all
+  remaining arguments after that are used to initialize ``PKG_CONFIG_ARGN``.
+  If no such environment variable is defined, ``PKG_CONFIG_ARGN`` is
+  initialized to an empty string. The module does not update the variable once
+  it has been set in the cache.
+
+.. variable:: PKG_CONFIG_USE_CMAKE_PREFIX_PATH
+
+  .. versionadded:: 3.1
+
+  Specifies whether :command:`pkg_check_modules` and
+  :command:`pkg_search_module` should add the paths in the
+  :variable:`CMAKE_PREFIX_PATH`, :variable:`CMAKE_FRAMEWORK_PATH` and
+  :variable:`CMAKE_APPBUNDLE_PATH` cache and environment variables to the
+  ``pkg-config`` search path.
+
+  If this variable is not set, this behavior is enabled by default if
+  :variable:`CMAKE_MINIMUM_REQUIRED_VERSION` is 3.1 or later, disabled
+  otherwise.
+#]========================================]
+
+
+### Local Variables:
+### mode: cmake
+### End:
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/FindPostgreSQL.cmake b/share/cmake-3.22/Modules/FindPostgreSQL.cmake
new file mode 100644
index 0000000..147071a
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindPostgreSQL.cmake
@@ -0,0 +1,312 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindPostgreSQL
+--------------
+
+Find the PostgreSQL installation.
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.14
+
+This module defines :prop_tgt:`IMPORTED` target ``PostgreSQL::PostgreSQL``
+if PostgreSQL has been found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``PostgreSQL_FOUND``
+  True if PostgreSQL is found.
+``PostgreSQL_LIBRARIES``
+  the PostgreSQL libraries needed for linking
+``PostgreSQL_INCLUDE_DIRS``
+  the directories of the PostgreSQL headers
+``PostgreSQL_LIBRARY_DIRS``
+  the link directories for PostgreSQL libraries
+``PostgreSQL_VERSION_STRING``
+  the version of PostgreSQL found
+``PostgreSQL_TYPE_INCLUDE_DIR``
+  the directories of the PostgreSQL server headers
+
+Components
+^^^^^^^^^^
+
+This module contains additional ``Server`` component, that forcibly checks
+for the presence of server headers. Note that ``PostgreSQL_TYPE_INCLUDE_DIR``
+is set regardless of the presence of the ``Server`` component in find_package call.
+
+#]=======================================================================]
+
+# ----------------------------------------------------------------------------
+# History:
+# This module is derived from the module originally found in the VTK source tree.
+#
+# ----------------------------------------------------------------------------
+# Note:
+# PostgreSQL_ADDITIONAL_VERSIONS is a variable that can be used to set the
+# version number of the implementation of PostgreSQL.
+# In Windows the default installation of PostgreSQL uses that as part of the path.
+# E.g C:\Program Files\PostgreSQL\8.4.
+# Currently, the following version numbers are known to this module:
+# "11" "10" "9.6" "9.5" "9.4" "9.3" "9.2" "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0"
+#
+# To use this variable just do something like this:
+# set(PostgreSQL_ADDITIONAL_VERSIONS "9.2" "8.4.4")
+# before calling find_package(PostgreSQL) in your CMakeLists.txt file.
+# This will mean that the versions you set here will be found first in the order
+# specified before the default ones are searched.
+#
+# ----------------------------------------------------------------------------
+# You may need to manually set:
+#  PostgreSQL_INCLUDE_DIR  - the path to where the PostgreSQL include files are.
+#  PostgreSQL_LIBRARY_DIR  - The path to where the PostgreSQL library files are.
+# If FindPostgreSQL.cmake cannot find the include files or the library files.
+#
+# ----------------------------------------------------------------------------
+# The following variables are set if PostgreSQL is found:
+#  PostgreSQL_FOUND         - Set to true when PostgreSQL is found.
+#  PostgreSQL_INCLUDE_DIRS  - Include directories for PostgreSQL
+#  PostgreSQL_LIBRARY_DIRS  - Link directories for PostgreSQL libraries
+#  PostgreSQL_LIBRARIES     - The PostgreSQL libraries.
+#
+# The ``PostgreSQL::PostgreSQL`` imported target is also created.
+#
+# ----------------------------------------------------------------------------
+# If you have installed PostgreSQL in a non-standard location.
+# (Please note that in the following comments, it is assumed that <Your Path>
+# points to the root directory of the include directory of PostgreSQL.)
+# Then you have three options.
+# 1) After CMake runs, set PostgreSQL_INCLUDE_DIR to <Your Path>/include and
+#    PostgreSQL_LIBRARY_DIR to wherever the library pq (or libpq in windows) is
+# 2) Use CMAKE_INCLUDE_PATH to set a path to <Your Path>/PostgreSQL<-version>. This will allow find_path()
+#    to locate PostgreSQL_INCLUDE_DIR by utilizing the PATH_SUFFIXES option. e.g. In your CMakeLists.txt file
+#    set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "<Your Path>/include")
+# 3) Set an environment variable called ${PostgreSQL_ROOT} that points to the root of where you have
+#    installed PostgreSQL, e.g. <Your Path>.
+#
+# ----------------------------------------------------------------------------
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+set(PostgreSQL_INCLUDE_PATH_DESCRIPTION "top-level directory containing the PostgreSQL include directories. E.g /usr/local/include/PostgreSQL/8.4 or C:/Program Files/PostgreSQL/8.4/include")
+set(PostgreSQL_INCLUDE_DIR_MESSAGE "Set the PostgreSQL_INCLUDE_DIR cmake cache entry to the ${PostgreSQL_INCLUDE_PATH_DESCRIPTION}")
+set(PostgreSQL_LIBRARY_PATH_DESCRIPTION "top-level directory containing the PostgreSQL libraries.")
+set(PostgreSQL_LIBRARY_DIR_MESSAGE "Set the PostgreSQL_LIBRARY_DIR cmake cache entry to the ${PostgreSQL_LIBRARY_PATH_DESCRIPTION}")
+set(PostgreSQL_ROOT_DIR_MESSAGE "Set the PostgreSQL_ROOT system variable to where PostgreSQL is found on the machine E.g C:/Program Files/PostgreSQL/8.4")
+
+
+set(PostgreSQL_KNOWN_VERSIONS ${PostgreSQL_ADDITIONAL_VERSIONS}
+    "13" "12" "11" "10" "9.6" "9.5" "9.4" "9.3" "9.2" "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0")
+
+# Define additional search paths for root directories.
+set( PostgreSQL_ROOT_DIRECTORIES
+   ENV PostgreSQL_ROOT
+   ${PostgreSQL_ROOT}
+)
+foreach(suffix ${PostgreSQL_KNOWN_VERSIONS})
+  if(WIN32)
+    list(APPEND PostgreSQL_LIBRARY_ADDITIONAL_SEARCH_SUFFIXES
+        "PostgreSQL/${suffix}/lib")
+    list(APPEND PostgreSQL_INCLUDE_ADDITIONAL_SEARCH_SUFFIXES
+        "PostgreSQL/${suffix}/include")
+    list(APPEND PostgreSQL_TYPE_ADDITIONAL_SEARCH_SUFFIXES
+        "PostgreSQL/${suffix}/include/server")
+  endif()
+  if(UNIX)
+    list(APPEND PostgreSQL_LIBRARY_ADDITIONAL_SEARCH_SUFFIXES
+        "postgresql${suffix}"
+        "pgsql-${suffix}/lib")
+    list(APPEND PostgreSQL_INCLUDE_ADDITIONAL_SEARCH_SUFFIXES
+        "postgresql${suffix}"
+        "postgresql/${suffix}"
+        "pgsql-${suffix}/include")
+    list(APPEND PostgreSQL_TYPE_ADDITIONAL_SEARCH_SUFFIXES
+        "postgresql${suffix}/server"
+        "postgresql/${suffix}/server"
+        "pgsql-${suffix}/include/server")
+  endif()
+endforeach()
+
+#
+# Look for an installation.
+#
+find_path(PostgreSQL_INCLUDE_DIR
+  NAMES libpq-fe.h
+  PATHS
+   # Look in other places.
+   ${PostgreSQL_ROOT_DIRECTORIES}
+  PATH_SUFFIXES
+    pgsql
+    postgresql
+    include
+    ${PostgreSQL_INCLUDE_ADDITIONAL_SEARCH_SUFFIXES}
+  # Help the user find it if we cannot.
+  DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
+)
+
+find_path(PostgreSQL_TYPE_INCLUDE_DIR
+  NAMES catalog/pg_type.h
+  PATHS
+   # Look in other places.
+   ${PostgreSQL_ROOT_DIRECTORIES}
+  PATH_SUFFIXES
+    postgresql
+    pgsql/server
+    postgresql/server
+    include/server
+    ${PostgreSQL_TYPE_ADDITIONAL_SEARCH_SUFFIXES}
+  # Help the user find it if we cannot.
+  DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
+)
+
+# The PostgreSQL library.
+set (PostgreSQL_LIBRARY_TO_FIND pq)
+# Setting some more prefixes for the library
+set (PostgreSQL_LIB_PREFIX "")
+if ( WIN32 )
+  set (PostgreSQL_LIB_PREFIX ${PostgreSQL_LIB_PREFIX} "lib")
+  set (PostgreSQL_LIBRARY_TO_FIND ${PostgreSQL_LIB_PREFIX}${PostgreSQL_LIBRARY_TO_FIND})
+endif()
+
+function(__postgresql_find_library _name)
+  find_library(${_name}
+   NAMES ${ARGN}
+   PATHS
+     ${PostgreSQL_ROOT_DIRECTORIES}
+   PATH_SUFFIXES
+     lib
+     ${PostgreSQL_LIBRARY_ADDITIONAL_SEARCH_SUFFIXES}
+   # Help the user find it if we cannot.
+   DOC "The ${PostgreSQL_LIBRARY_DIR_MESSAGE}"
+  )
+endfunction()
+
+# For compatibility with versions prior to this multi-config search, honor
+# any PostgreSQL_LIBRARY that is already specified and skip the search.
+if(PostgreSQL_LIBRARY)
+  set(PostgreSQL_LIBRARIES "${PostgreSQL_LIBRARY}")
+  get_filename_component(PostgreSQL_LIBRARY_DIR "${PostgreSQL_LIBRARY}" PATH)
+else()
+  __postgresql_find_library(PostgreSQL_LIBRARY_RELEASE ${PostgreSQL_LIBRARY_TO_FIND})
+  __postgresql_find_library(PostgreSQL_LIBRARY_DEBUG ${PostgreSQL_LIBRARY_TO_FIND}d)
+  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+  select_library_configurations(PostgreSQL)
+  mark_as_advanced(PostgreSQL_LIBRARY_RELEASE PostgreSQL_LIBRARY_DEBUG)
+  if(PostgreSQL_LIBRARY_RELEASE)
+    get_filename_component(PostgreSQL_LIBRARY_DIR "${PostgreSQL_LIBRARY_RELEASE}" PATH)
+  elseif(PostgreSQL_LIBRARY_DEBUG)
+    get_filename_component(PostgreSQL_LIBRARY_DIR "${PostgreSQL_LIBRARY_DEBUG}" PATH)
+  else()
+    set(PostgreSQL_LIBRARY_DIR "")
+  endif()
+endif()
+
+if (PostgreSQL_INCLUDE_DIR)
+  # Some platforms include multiple pg_config.hs for multi-lib configurations
+  # This is a temporary workaround.  A better solution would be to compile
+  # a dummy c file and extract the value of the symbol.
+  file(GLOB _PG_CONFIG_HEADERS "${PostgreSQL_INCLUDE_DIR}/pg_config*.h")
+  foreach(_PG_CONFIG_HEADER ${_PG_CONFIG_HEADERS})
+    if(EXISTS "${_PG_CONFIG_HEADER}")
+      file(STRINGS "${_PG_CONFIG_HEADER}" pgsql_version_str
+           REGEX "^#define[\t ]+PG_VERSION_NUM[\t ]+.*")
+      if(pgsql_version_str)
+        string(REGEX REPLACE "^#define[\t ]+PG_VERSION_NUM[\t ]+([0-9]*).*"
+               "\\1" _PostgreSQL_VERSION_NUM "${pgsql_version_str}")
+        break()
+      endif()
+    endif()
+  endforeach()
+  if (_PostgreSQL_VERSION_NUM)
+    # 9.x and older encoding
+    if (_PostgreSQL_VERSION_NUM LESS 100000)
+      math(EXPR _PostgreSQL_major_version "${_PostgreSQL_VERSION_NUM} / 10000")
+      math(EXPR _PostgreSQL_minor_version "${_PostgreSQL_VERSION_NUM} % 10000 / 100")
+      math(EXPR _PostgreSQL_patch_version "${_PostgreSQL_VERSION_NUM} % 100")
+      set(PostgreSQL_VERSION_STRING "${_PostgreSQL_major_version}.${_PostgreSQL_minor_version}.${_PostgreSQL_patch_version}")
+      unset(_PostgreSQL_major_version)
+      unset(_PostgreSQL_minor_version)
+      unset(_PostgreSQL_patch_version)
+    else ()
+      math(EXPR _PostgreSQL_major_version "${_PostgreSQL_VERSION_NUM} / 10000")
+      math(EXPR _PostgreSQL_minor_version "${_PostgreSQL_VERSION_NUM} % 10000")
+      set(PostgreSQL_VERSION_STRING "${_PostgreSQL_major_version}.${_PostgreSQL_minor_version}")
+      unset(_PostgreSQL_major_version)
+      unset(_PostgreSQL_minor_version)
+    endif ()
+  else ()
+    foreach(_PG_CONFIG_HEADER ${_PG_CONFIG_HEADERS})
+      if(EXISTS "${_PG_CONFIG_HEADER}")
+        file(STRINGS "${_PG_CONFIG_HEADER}" pgsql_version_str
+             REGEX "^#define[\t ]+PG_VERSION[\t ]+\".*\"")
+        if(pgsql_version_str)
+          string(REGEX REPLACE "^#define[\t ]+PG_VERSION[\t ]+\"([^\"]*)\".*"
+                 "\\1" PostgreSQL_VERSION_STRING "${pgsql_version_str}")
+          break()
+        endif()
+      endif()
+    endforeach()
+  endif ()
+  unset(_PostgreSQL_VERSION_NUM)
+  unset(pgsql_version_str)
+endif()
+
+if("Server" IN_LIST PostgreSQL_FIND_COMPONENTS)
+  set(PostgreSQL_Server_FOUND TRUE)
+  if(NOT PostgreSQL_TYPE_INCLUDE_DIR)
+    set(PostgreSQL_Server_FOUND FALSE)
+  endif()
+endif()
+
+# Did we find anything?
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(PostgreSQL
+                                  REQUIRED_VARS PostgreSQL_LIBRARY PostgreSQL_INCLUDE_DIR
+                                  HANDLE_COMPONENTS
+                                  VERSION_VAR PostgreSQL_VERSION_STRING)
+set(PostgreSQL_FOUND  ${POSTGRESQL_FOUND})
+
+function(__postgresql_import_library _target _var _config)
+  if(_config)
+    set(_config_suffix "_${_config}")
+  else()
+    set(_config_suffix "")
+  endif()
+
+  set(_lib "${${_var}${_config_suffix}}")
+  if(EXISTS "${_lib}")
+    if(_config)
+      set_property(TARGET ${_target} APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS ${_config})
+    endif()
+    set_target_properties(${_target} PROPERTIES
+      IMPORTED_LOCATION${_config_suffix} "${_lib}")
+  endif()
+endfunction()
+
+# Now try to get the include and library path.
+if(PostgreSQL_FOUND)
+  set(PostgreSQL_INCLUDE_DIRS ${PostgreSQL_INCLUDE_DIR})
+  if(PostgreSQL_TYPE_INCLUDE_DIR)
+    list(APPEND PostgreSQL_INCLUDE_DIRS ${PostgreSQL_TYPE_INCLUDE_DIR})
+  endif()
+  set(PostgreSQL_LIBRARY_DIRS ${PostgreSQL_LIBRARY_DIR})
+  if (NOT TARGET PostgreSQL::PostgreSQL)
+    add_library(PostgreSQL::PostgreSQL UNKNOWN IMPORTED)
+    set_target_properties(PostgreSQL::PostgreSQL PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${PostgreSQL_INCLUDE_DIRS}")
+    __postgresql_import_library(PostgreSQL::PostgreSQL PostgreSQL_LIBRARY "")
+    __postgresql_import_library(PostgreSQL::PostgreSQL PostgreSQL_LIBRARY "RELEASE")
+    __postgresql_import_library(PostgreSQL::PostgreSQL PostgreSQL_LIBRARY "DEBUG")
+  endif ()
+endif()
+
+mark_as_advanced(PostgreSQL_INCLUDE_DIR PostgreSQL_TYPE_INCLUDE_DIR)
+
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FindProducer.cmake b/share/cmake-3.22/Modules/FindProducer.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindProducer.cmake
rename to share/cmake-3.22/Modules/FindProducer.cmake
diff --git a/share/cmake-3.22/Modules/FindProtobuf.cmake b/share/cmake-3.22/Modules/FindProtobuf.cmake
new file mode 100644
index 0000000..c73a2d8
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindProtobuf.cmake
@@ -0,0 +1,685 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindProtobuf
+------------
+
+Locate and configure the Google Protocol Buffers library.
+
+.. versionadded:: 3.6
+  Support for :command:`find_package` version checks.
+
+.. versionchanged:: 3.6
+  All input and output variables use the ``Protobuf_`` prefix.
+  Variables with ``PROTOBUF_`` prefix are still supported for compatibility.
+
+The following variables can be set and are optional:
+
+``Protobuf_SRC_ROOT_FOLDER``
+  When compiling with MSVC, if this cache variable is set
+  the protobuf-default VS project build locations
+  (vsprojects/Debug and vsprojects/Release
+  or vsprojects/x64/Debug and vsprojects/x64/Release)
+  will be searched for libraries and binaries.
+``Protobuf_IMPORT_DIRS``
+  List of additional directories to be searched for
+  imported .proto files.
+``Protobuf_DEBUG``
+  .. versionadded:: 3.6
+
+  Show debug messages.
+``Protobuf_USE_STATIC_LIBS``
+  .. versionadded:: 3.9
+
+  Set to ON to force the use of the static libraries.
+  Default is OFF.
+
+Defines the following variables:
+
+``Protobuf_FOUND``
+  Found the Google Protocol Buffers library
+  (libprotobuf & header files)
+``Protobuf_VERSION``
+  .. versionadded:: 3.6
+
+  Version of package found.
+``Protobuf_INCLUDE_DIRS``
+  Include directories for Google Protocol Buffers
+``Protobuf_LIBRARIES``
+  The protobuf libraries
+``Protobuf_PROTOC_LIBRARIES``
+  The protoc libraries
+``Protobuf_LITE_LIBRARIES``
+  The protobuf-lite libraries
+
+.. versionadded:: 3.9
+  The following :prop_tgt:`IMPORTED` targets are also defined:
+
+``protobuf::libprotobuf``
+  The protobuf library.
+``protobuf::libprotobuf-lite``
+  The protobuf lite library.
+``protobuf::libprotoc``
+  The protoc library.
+``protobuf::protoc``
+  .. versionadded:: 3.10
+    The protoc compiler.
+
+The following cache variables are also available to set or use:
+
+``Protobuf_LIBRARY``
+  The protobuf library
+``Protobuf_PROTOC_LIBRARY``
+  The protoc library
+``Protobuf_INCLUDE_DIR``
+  The include directory for protocol buffers
+``Protobuf_PROTOC_EXECUTABLE``
+  The protoc compiler
+``Protobuf_LIBRARY_DEBUG``
+  The protobuf library (debug)
+``Protobuf_PROTOC_LIBRARY_DEBUG``
+  The protoc library (debug)
+``Protobuf_LITE_LIBRARY``
+  The protobuf lite library
+``Protobuf_LITE_LIBRARY_DEBUG``
+  The protobuf lite library (debug)
+
+Example:
+
+.. code-block:: cmake
+
+  find_package(Protobuf REQUIRED)
+  include_directories(${Protobuf_INCLUDE_DIRS})
+  include_directories(${CMAKE_CURRENT_BINARY_DIR})
+  protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS foo.proto)
+  protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS EXPORT_MACRO DLL_EXPORT foo.proto)
+  protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS DESCRIPTORS PROTO_DESCS foo.proto)
+  protobuf_generate_python(PROTO_PY foo.proto)
+  add_executable(bar bar.cc ${PROTO_SRCS} ${PROTO_HDRS})
+  target_link_libraries(bar ${Protobuf_LIBRARIES})
+
+.. note::
+  The ``protobuf_generate_cpp`` and ``protobuf_generate_python``
+  functions and :command:`add_executable` or :command:`add_library`
+  calls only work properly within the same directory.
+
+.. command:: protobuf_generate_cpp
+
+  Add custom commands to process ``.proto`` files to C++::
+
+    protobuf_generate_cpp (<SRCS> <HDRS>
+        [DESCRIPTORS <DESC>] [EXPORT_MACRO <MACRO>] [<ARGN>...])
+
+  ``SRCS``
+    Variable to define with autogenerated source files
+  ``HDRS``
+    Variable to define with autogenerated header files
+  ``DESCRIPTORS``
+    .. versionadded:: 3.10
+      Variable to define with autogenerated descriptor files, if requested.
+  ``EXPORT_MACRO``
+    is a macro which should expand to ``__declspec(dllexport)`` or
+    ``__declspec(dllimport)`` depending on what is being compiled.
+  ``ARGN``
+    ``.proto`` files
+
+.. command:: protobuf_generate_python
+
+  .. versionadded:: 3.4
+
+  Add custom commands to process ``.proto`` files to Python::
+
+    protobuf_generate_python (<PY> [<ARGN>...])
+
+  ``PY``
+    Variable to define with autogenerated Python files
+  ``ARGN``
+    ``.proto`` files
+#]=======================================================================]
+
+function(protobuf_generate)
+  set(_options APPEND_PATH DESCRIPTORS)
+  set(_singleargs LANGUAGE OUT_VAR EXPORT_MACRO PROTOC_OUT_DIR PLUGIN)
+  if(COMMAND target_sources)
+    list(APPEND _singleargs TARGET)
+  endif()
+  set(_multiargs PROTOS IMPORT_DIRS GENERATE_EXTENSIONS)
+
+  cmake_parse_arguments(protobuf_generate "${_options}" "${_singleargs}" "${_multiargs}" "${ARGN}")
+
+  if(NOT protobuf_generate_PROTOS AND NOT protobuf_generate_TARGET)
+    message(SEND_ERROR "Error: protobuf_generate called without any targets or source files")
+    return()
+  endif()
+
+  if(NOT protobuf_generate_OUT_VAR AND NOT protobuf_generate_TARGET)
+    message(SEND_ERROR "Error: protobuf_generate called without a target or output variable")
+    return()
+  endif()
+
+  if(NOT protobuf_generate_LANGUAGE)
+    set(protobuf_generate_LANGUAGE cpp)
+  endif()
+  string(TOLOWER ${protobuf_generate_LANGUAGE} protobuf_generate_LANGUAGE)
+
+  if(NOT protobuf_generate_PROTOC_OUT_DIR)
+    set(protobuf_generate_PROTOC_OUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
+  endif()
+
+  if(protobuf_generate_EXPORT_MACRO AND protobuf_generate_LANGUAGE STREQUAL cpp)
+    set(_dll_export_decl "dllexport_decl=${protobuf_generate_EXPORT_MACRO}:")
+  endif()
+
+  if(protobuf_generate_PLUGIN)
+    set(_plugin "--plugin=${protobuf_generate_PLUGIN}")
+  endif()
+
+  if(NOT protobuf_generate_GENERATE_EXTENSIONS)
+    if(protobuf_generate_LANGUAGE STREQUAL cpp)
+      set(protobuf_generate_GENERATE_EXTENSIONS .pb.h .pb.cc)
+    elseif(protobuf_generate_LANGUAGE STREQUAL python)
+      set(protobuf_generate_GENERATE_EXTENSIONS _pb2.py)
+    else()
+      message(SEND_ERROR "Error: protobuf_generate given unknown Language ${LANGUAGE}, please provide a value for GENERATE_EXTENSIONS")
+      return()
+    endif()
+  endif()
+
+  if(protobuf_generate_TARGET)
+    get_target_property(_source_list ${protobuf_generate_TARGET} SOURCES)
+    foreach(_file ${_source_list})
+      if(_file MATCHES "proto$")
+        list(APPEND protobuf_generate_PROTOS ${_file})
+      endif()
+    endforeach()
+  endif()
+
+  if(NOT protobuf_generate_PROTOS)
+    message(SEND_ERROR "Error: protobuf_generate could not find any .proto files")
+    return()
+  endif()
+
+  if(protobuf_generate_APPEND_PATH)
+    # Create an include path for each file specified
+    foreach(_file ${protobuf_generate_PROTOS})
+      get_filename_component(_abs_file ${_file} ABSOLUTE)
+      get_filename_component(_abs_path ${_abs_file} PATH)
+      list(FIND _protobuf_include_path ${_abs_path} _contains_already)
+      if(${_contains_already} EQUAL -1)
+          list(APPEND _protobuf_include_path -I ${_abs_path})
+      endif()
+    endforeach()
+  else()
+    set(_protobuf_include_path -I ${CMAKE_CURRENT_SOURCE_DIR})
+  endif()
+
+  foreach(DIR ${protobuf_generate_IMPORT_DIRS})
+    get_filename_component(ABS_PATH ${DIR} ABSOLUTE)
+    list(FIND _protobuf_include_path ${ABS_PATH} _contains_already)
+    if(${_contains_already} EQUAL -1)
+        list(APPEND _protobuf_include_path -I ${ABS_PATH})
+    endif()
+  endforeach()
+
+  set(_generated_srcs_all)
+  foreach(_proto ${protobuf_generate_PROTOS})
+    get_filename_component(_abs_file ${_proto} ABSOLUTE)
+    get_filename_component(_abs_dir ${_abs_file} DIRECTORY)
+    get_filename_component(_basename ${_proto} NAME_WLE)
+    file(RELATIVE_PATH _rel_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_abs_dir})
+
+    set(_possible_rel_dir)
+    if (NOT protobuf_generate_APPEND_PATH)
+        set(_possible_rel_dir ${_rel_dir}/)
+    endif()
+
+    set(_generated_srcs)
+    foreach(_ext ${protobuf_generate_GENERATE_EXTENSIONS})
+      list(APPEND _generated_srcs "${protobuf_generate_PROTOC_OUT_DIR}/${_possible_rel_dir}${_basename}${_ext}")
+    endforeach()
+
+    if(protobuf_generate_DESCRIPTORS AND protobuf_generate_LANGUAGE STREQUAL cpp)
+      set(_descriptor_file "${CMAKE_CURRENT_BINARY_DIR}/${_basename}.desc")
+      set(_dll_desc_out "--descriptor_set_out=${_descriptor_file}")
+      list(APPEND _generated_srcs ${_descriptor_file})
+    endif()
+    list(APPEND _generated_srcs_all ${_generated_srcs})
+
+    add_custom_command(
+      OUTPUT ${_generated_srcs}
+      COMMAND  protobuf::protoc
+      ARGS --${protobuf_generate_LANGUAGE}_out ${_dll_export_decl}${protobuf_generate_PROTOC_OUT_DIR} ${_plugin} ${_dll_desc_out} ${_protobuf_include_path} ${_abs_file}
+      DEPENDS ${_abs_file} protobuf::protoc
+      COMMENT "Running ${protobuf_generate_LANGUAGE} protocol buffer compiler on ${_proto}"
+      VERBATIM )
+  endforeach()
+
+  set_source_files_properties(${_generated_srcs_all} PROPERTIES GENERATED TRUE)
+  if(protobuf_generate_OUT_VAR)
+    set(${protobuf_generate_OUT_VAR} ${_generated_srcs_all} PARENT_SCOPE)
+  endif()
+  if(protobuf_generate_TARGET)
+    target_sources(${protobuf_generate_TARGET} PRIVATE ${_generated_srcs_all})
+  endif()
+endfunction()
+
+function(PROTOBUF_GENERATE_CPP SRCS HDRS)
+  cmake_parse_arguments(protobuf_generate_cpp "" "EXPORT_MACRO;DESCRIPTORS" "" ${ARGN})
+
+  set(_proto_files "${protobuf_generate_cpp_UNPARSED_ARGUMENTS}")
+  if(NOT _proto_files)
+    message(SEND_ERROR "Error: PROTOBUF_GENERATE_CPP() called without any proto files")
+    return()
+  endif()
+
+  if(PROTOBUF_GENERATE_CPP_APPEND_PATH)
+    set(_append_arg APPEND_PATH)
+  endif()
+
+  if(protobuf_generate_cpp_DESCRIPTORS)
+    set(_descriptors DESCRIPTORS)
+  endif()
+
+  if(DEFINED PROTOBUF_IMPORT_DIRS AND NOT DEFINED Protobuf_IMPORT_DIRS)
+    set(Protobuf_IMPORT_DIRS "${PROTOBUF_IMPORT_DIRS}")
+  endif()
+
+  if(DEFINED Protobuf_IMPORT_DIRS)
+    set(_import_arg IMPORT_DIRS ${Protobuf_IMPORT_DIRS})
+  endif()
+
+  set(_outvar)
+  protobuf_generate(${_append_arg} ${_descriptors} LANGUAGE cpp EXPORT_MACRO ${protobuf_generate_cpp_EXPORT_MACRO} OUT_VAR _outvar ${_import_arg} PROTOS ${_proto_files})
+
+  set(${SRCS})
+  set(${HDRS})
+  if(protobuf_generate_cpp_DESCRIPTORS)
+    set(${protobuf_generate_cpp_DESCRIPTORS})
+  endif()
+
+  foreach(_file ${_outvar})
+    if(_file MATCHES "cc$")
+      list(APPEND ${SRCS} ${_file})
+    elseif(_file MATCHES "desc$")
+      list(APPEND ${protobuf_generate_cpp_DESCRIPTORS} ${_file})
+    else()
+      list(APPEND ${HDRS} ${_file})
+    endif()
+  endforeach()
+  set(${SRCS} ${${SRCS}} PARENT_SCOPE)
+  set(${HDRS} ${${HDRS}} PARENT_SCOPE)
+  if(protobuf_generate_cpp_DESCRIPTORS)
+    set(${protobuf_generate_cpp_DESCRIPTORS} "${${protobuf_generate_cpp_DESCRIPTORS}}" PARENT_SCOPE)
+  endif()
+endfunction()
+
+function(PROTOBUF_GENERATE_PYTHON SRCS)
+  if(NOT ARGN)
+    message(SEND_ERROR "Error: PROTOBUF_GENERATE_PYTHON() called without any proto files")
+    return()
+  endif()
+
+  if(PROTOBUF_GENERATE_CPP_APPEND_PATH)
+    set(_append_arg APPEND_PATH)
+  endif()
+
+  if(DEFINED PROTOBUF_IMPORT_DIRS AND NOT DEFINED Protobuf_IMPORT_DIRS)
+    set(Protobuf_IMPORT_DIRS "${PROTOBUF_IMPORT_DIRS}")
+  endif()
+
+  if(DEFINED Protobuf_IMPORT_DIRS)
+    set(_import_arg IMPORT_DIRS ${Protobuf_IMPORT_DIRS})
+  endif()
+
+  set(_outvar)
+  protobuf_generate(${_append_arg} LANGUAGE python OUT_VAR _outvar ${_import_arg} PROTOS ${ARGN})
+  set(${SRCS} ${_outvar} PARENT_SCOPE)
+endfunction()
+
+
+if(Protobuf_DEBUG)
+  # Output some of their choices
+  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                 "Protobuf_USE_STATIC_LIBS = ${Protobuf_USE_STATIC_LIBS}")
+endif()
+
+
+# Backwards compatibility
+# Define camel case versions of input variables
+foreach(UPPER
+    PROTOBUF_SRC_ROOT_FOLDER
+    PROTOBUF_IMPORT_DIRS
+    PROTOBUF_DEBUG
+    PROTOBUF_LIBRARY
+    PROTOBUF_PROTOC_LIBRARY
+    PROTOBUF_INCLUDE_DIR
+    PROTOBUF_PROTOC_EXECUTABLE
+    PROTOBUF_LIBRARY_DEBUG
+    PROTOBUF_PROTOC_LIBRARY_DEBUG
+    PROTOBUF_LITE_LIBRARY
+    PROTOBUF_LITE_LIBRARY_DEBUG
+    )
+    if (DEFINED ${UPPER})
+        string(REPLACE "PROTOBUF_" "Protobuf_" Camel ${UPPER})
+        if (NOT DEFINED ${Camel})
+            set(${Camel} ${${UPPER}})
+        endif()
+    endif()
+endforeach()
+
+if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+  set(_PROTOBUF_ARCH_DIR x64/)
+endif()
+
+
+# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
+if( Protobuf_USE_STATIC_LIBS )
+  set( _protobuf_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
+  if(WIN32)
+    set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
+  else()
+    set(CMAKE_FIND_LIBRARY_SUFFIXES .a )
+  endif()
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+
+# Internal function: search for normal library as well as a debug one
+#    if the debug one is specified also include debug/optimized keywords
+#    in *_LIBRARIES variable
+function(_protobuf_find_libraries name filename)
+  if(${name}_LIBRARIES)
+    # Use result recorded by a previous call.
+    return()
+  elseif(${name}_LIBRARY)
+    # Honor cache entry used by CMake 3.5 and lower.
+    set(${name}_LIBRARIES "${${name}_LIBRARY}" PARENT_SCOPE)
+  else()
+    find_library(${name}_LIBRARY_RELEASE
+      NAMES ${filename}
+      NAMES_PER_DIR
+      PATHS ${Protobuf_SRC_ROOT_FOLDER}/vsprojects/${_PROTOBUF_ARCH_DIR}Release)
+    mark_as_advanced(${name}_LIBRARY_RELEASE)
+
+    find_library(${name}_LIBRARY_DEBUG
+      NAMES ${filename}d ${filename}
+      NAMES_PER_DIR
+      PATHS ${Protobuf_SRC_ROOT_FOLDER}/vsprojects/${_PROTOBUF_ARCH_DIR}Debug)
+    mark_as_advanced(${name}_LIBRARY_DEBUG)
+
+    select_library_configurations(${name})
+
+    if(UNIX AND Threads_FOUND AND ${name}_LIBRARY)
+      list(APPEND ${name}_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
+    endif()
+
+    set(${name}_LIBRARY "${${name}_LIBRARY}" PARENT_SCOPE)
+    set(${name}_LIBRARIES "${${name}_LIBRARIES}" PARENT_SCOPE)
+  endif()
+endfunction()
+
+#
+# Main.
+#
+
+# By default have PROTOBUF_GENERATE_CPP macro pass -I to protoc
+# for each directory where a proto file is referenced.
+if(NOT DEFINED PROTOBUF_GENERATE_CPP_APPEND_PATH)
+  set(PROTOBUF_GENERATE_CPP_APPEND_PATH TRUE)
+endif()
+
+
+# Google's provided vcproj files generate libraries with a "lib"
+# prefix on Windows
+if(MSVC)
+    set(Protobuf_ORIG_FIND_LIBRARY_PREFIXES "${CMAKE_FIND_LIBRARY_PREFIXES}")
+    set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
+
+    find_path(Protobuf_SRC_ROOT_FOLDER protobuf.pc.in)
+endif()
+
+if(UNIX)
+  # Protobuf headers may depend on threading.
+  find_package(Threads QUIET)
+endif()
+
+# The Protobuf library
+_protobuf_find_libraries(Protobuf protobuf)
+#DOC "The Google Protocol Buffers RELEASE Library"
+
+_protobuf_find_libraries(Protobuf_LITE protobuf-lite)
+
+# The Protobuf Protoc Library
+_protobuf_find_libraries(Protobuf_PROTOC protoc)
+
+# Restore original find library prefixes
+if(MSVC)
+    set(CMAKE_FIND_LIBRARY_PREFIXES "${Protobuf_ORIG_FIND_LIBRARY_PREFIXES}")
+endif()
+
+# Find the include directory
+find_path(Protobuf_INCLUDE_DIR
+    google/protobuf/service.h
+    PATHS ${Protobuf_SRC_ROOT_FOLDER}/src
+)
+mark_as_advanced(Protobuf_INCLUDE_DIR)
+
+# Find the protoc Executable
+find_program(Protobuf_PROTOC_EXECUTABLE
+    NAMES protoc
+    DOC "The Google Protocol Buffers Compiler"
+    PATHS
+    ${Protobuf_SRC_ROOT_FOLDER}/vsprojects/${_PROTOBUF_ARCH_DIR}Release
+    ${Protobuf_SRC_ROOT_FOLDER}/vsprojects/${_PROTOBUF_ARCH_DIR}Debug
+)
+mark_as_advanced(Protobuf_PROTOC_EXECUTABLE)
+
+if(Protobuf_DEBUG)
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+        "requested version of Google Protobuf is ${Protobuf_FIND_VERSION}")
+endif()
+
+if(Protobuf_INCLUDE_DIR)
+  set(_PROTOBUF_COMMON_HEADER ${Protobuf_INCLUDE_DIR}/google/protobuf/stubs/common.h)
+
+  if(Protobuf_DEBUG)
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "location of common.h: ${_PROTOBUF_COMMON_HEADER}")
+  endif()
+
+  set(Protobuf_VERSION "")
+  set(Protobuf_LIB_VERSION "")
+  file(STRINGS ${_PROTOBUF_COMMON_HEADER} _PROTOBUF_COMMON_H_CONTENTS REGEX "#define[ \t]+GOOGLE_PROTOBUF_VERSION[ \t]+")
+  if(_PROTOBUF_COMMON_H_CONTENTS MATCHES "#define[ \t]+GOOGLE_PROTOBUF_VERSION[ \t]+([0-9]+)")
+      set(Protobuf_LIB_VERSION "${CMAKE_MATCH_1}")
+  endif()
+  unset(_PROTOBUF_COMMON_H_CONTENTS)
+
+  math(EXPR _PROTOBUF_MAJOR_VERSION "${Protobuf_LIB_VERSION} / 1000000")
+  math(EXPR _PROTOBUF_MINOR_VERSION "${Protobuf_LIB_VERSION} / 1000 % 1000")
+  math(EXPR _PROTOBUF_SUBMINOR_VERSION "${Protobuf_LIB_VERSION} % 1000")
+  set(Protobuf_VERSION "${_PROTOBUF_MAJOR_VERSION}.${_PROTOBUF_MINOR_VERSION}.${_PROTOBUF_SUBMINOR_VERSION}")
+
+  if(Protobuf_DEBUG)
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+        "${_PROTOBUF_COMMON_HEADER} reveals protobuf ${Protobuf_VERSION}")
+  endif()
+
+  if(Protobuf_PROTOC_EXECUTABLE)
+    # Check Protobuf compiler version to be aligned with libraries version
+    execute_process(COMMAND ${Protobuf_PROTOC_EXECUTABLE} --version
+                    OUTPUT_VARIABLE _PROTOBUF_PROTOC_EXECUTABLE_VERSION)
+
+    if("${_PROTOBUF_PROTOC_EXECUTABLE_VERSION}" MATCHES "libprotoc ([0-9.]+)")
+      set(_PROTOBUF_PROTOC_EXECUTABLE_VERSION "${CMAKE_MATCH_1}")
+    endif()
+
+    if(Protobuf_DEBUG)
+      message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+          "${Protobuf_PROTOC_EXECUTABLE} reveals version ${_PROTOBUF_PROTOC_EXECUTABLE_VERSION}")
+    endif()
+
+    if(NOT "${_PROTOBUF_PROTOC_EXECUTABLE_VERSION}" VERSION_EQUAL "${Protobuf_VERSION}")
+      message(WARNING "Protobuf compiler version ${_PROTOBUF_PROTOC_EXECUTABLE_VERSION}"
+        " doesn't match library version ${Protobuf_VERSION}")
+    endif()
+  endif()
+
+  if(Protobuf_LIBRARY)
+      if(NOT TARGET protobuf::libprotobuf)
+          add_library(protobuf::libprotobuf UNKNOWN IMPORTED)
+          set_target_properties(protobuf::libprotobuf PROPERTIES
+            INTERFACE_INCLUDE_DIRECTORIES "${Protobuf_INCLUDE_DIR}")
+          if(EXISTS "${Protobuf_LIBRARY}")
+            set_target_properties(protobuf::libprotobuf PROPERTIES
+              IMPORTED_LOCATION "${Protobuf_LIBRARY}")
+          endif()
+          if(EXISTS "${Protobuf_LIBRARY_RELEASE}")
+            set_property(TARGET protobuf::libprotobuf APPEND PROPERTY
+              IMPORTED_CONFIGURATIONS RELEASE)
+            set_target_properties(protobuf::libprotobuf PROPERTIES
+              IMPORTED_LOCATION_RELEASE "${Protobuf_LIBRARY_RELEASE}")
+          endif()
+          if(EXISTS "${Protobuf_LIBRARY_DEBUG}")
+            set_property(TARGET protobuf::libprotobuf APPEND PROPERTY
+              IMPORTED_CONFIGURATIONS DEBUG)
+            set_target_properties(protobuf::libprotobuf PROPERTIES
+              IMPORTED_LOCATION_DEBUG "${Protobuf_LIBRARY_DEBUG}")
+          endif()
+          if (Protobuf_VERSION VERSION_GREATER_EQUAL "3.6")
+            set_property(TARGET protobuf::libprotobuf APPEND PROPERTY
+              INTERFACE_COMPILE_FEATURES cxx_std_11
+            )
+          endif()
+          if (MSVC AND NOT Protobuf_USE_STATIC_LIBS)
+            set_property(TARGET protobuf::libprotobuf APPEND PROPERTY
+              INTERFACE_COMPILE_DEFINITIONS "PROTOBUF_USE_DLLS"
+            )
+          endif()
+          if(UNIX AND TARGET Threads::Threads)
+            set_property(TARGET protobuf::libprotobuf APPEND PROPERTY
+                INTERFACE_LINK_LIBRARIES Threads::Threads)
+          endif()
+      endif()
+  endif()
+
+  if(Protobuf_LITE_LIBRARY)
+      if(NOT TARGET protobuf::libprotobuf-lite)
+          add_library(protobuf::libprotobuf-lite UNKNOWN IMPORTED)
+          set_target_properties(protobuf::libprotobuf-lite PROPERTIES
+            INTERFACE_INCLUDE_DIRECTORIES "${Protobuf_INCLUDE_DIR}")
+          if(EXISTS "${Protobuf_LITE_LIBRARY}")
+            set_target_properties(protobuf::libprotobuf-lite PROPERTIES
+              IMPORTED_LOCATION "${Protobuf_LITE_LIBRARY}")
+          endif()
+          if(EXISTS "${Protobuf_LITE_LIBRARY_RELEASE}")
+            set_property(TARGET protobuf::libprotobuf-lite APPEND PROPERTY
+              IMPORTED_CONFIGURATIONS RELEASE)
+            set_target_properties(protobuf::libprotobuf-lite PROPERTIES
+              IMPORTED_LOCATION_RELEASE "${Protobuf_LITE_LIBRARY_RELEASE}")
+          endif()
+          if(EXISTS "${Protobuf_LITE_LIBRARY_DEBUG}")
+            set_property(TARGET protobuf::libprotobuf-lite APPEND PROPERTY
+              IMPORTED_CONFIGURATIONS DEBUG)
+            set_target_properties(protobuf::libprotobuf-lite PROPERTIES
+              IMPORTED_LOCATION_DEBUG "${Protobuf_LITE_LIBRARY_DEBUG}")
+          endif()
+          if (MSVC AND NOT Protobuf_USE_STATIC_LIBS)
+            set_property(TARGET protobuf::libprotobuf-lite APPEND PROPERTY
+              INTERFACE_COMPILE_DEFINITIONS "PROTOBUF_USE_DLLS"
+            )
+          endif()
+          if(UNIX AND TARGET Threads::Threads)
+            set_property(TARGET protobuf::libprotobuf-lite APPEND PROPERTY
+                INTERFACE_LINK_LIBRARIES Threads::Threads)
+          endif()
+      endif()
+  endif()
+
+  if(Protobuf_PROTOC_LIBRARY)
+      if(NOT TARGET protobuf::libprotoc)
+          add_library(protobuf::libprotoc UNKNOWN IMPORTED)
+          set_target_properties(protobuf::libprotoc PROPERTIES
+            INTERFACE_INCLUDE_DIRECTORIES "${Protobuf_INCLUDE_DIR}")
+          if(EXISTS "${Protobuf_PROTOC_LIBRARY}")
+            set_target_properties(protobuf::libprotoc PROPERTIES
+              IMPORTED_LOCATION "${Protobuf_PROTOC_LIBRARY}")
+          endif()
+          if(EXISTS "${Protobuf_PROTOC_LIBRARY_RELEASE}")
+            set_property(TARGET protobuf::libprotoc APPEND PROPERTY
+              IMPORTED_CONFIGURATIONS RELEASE)
+            set_target_properties(protobuf::libprotoc PROPERTIES
+              IMPORTED_LOCATION_RELEASE "${Protobuf_PROTOC_LIBRARY_RELEASE}")
+          endif()
+          if(EXISTS "${Protobuf_PROTOC_LIBRARY_DEBUG}")
+            set_property(TARGET protobuf::libprotoc APPEND PROPERTY
+              IMPORTED_CONFIGURATIONS DEBUG)
+            set_target_properties(protobuf::libprotoc PROPERTIES
+              IMPORTED_LOCATION_DEBUG "${Protobuf_PROTOC_LIBRARY_DEBUG}")
+          endif()
+          if (Protobuf_VERSION VERSION_GREATER_EQUAL "3.6")
+            set_property(TARGET protobuf::libprotoc APPEND PROPERTY
+              INTERFACE_COMPILE_FEATURES cxx_std_11
+            )
+          endif()
+          if (MSVC AND NOT Protobuf_USE_STATIC_LIBS)
+            set_property(TARGET protobuf::libprotoc APPEND PROPERTY
+              INTERFACE_COMPILE_DEFINITIONS "PROTOBUF_USE_DLLS"
+            )
+          endif()
+          if(UNIX AND TARGET Threads::Threads)
+            set_property(TARGET protobuf::libprotoc APPEND PROPERTY
+                INTERFACE_LINK_LIBRARIES Threads::Threads)
+          endif()
+      endif()
+  endif()
+
+  if(Protobuf_PROTOC_EXECUTABLE)
+      if(NOT TARGET protobuf::protoc)
+          add_executable(protobuf::protoc IMPORTED)
+          if(EXISTS "${Protobuf_PROTOC_EXECUTABLE}")
+            set_target_properties(protobuf::protoc PROPERTIES
+              IMPORTED_LOCATION "${Protobuf_PROTOC_EXECUTABLE}")
+          endif()
+      endif()
+  endif()
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Protobuf
+    REQUIRED_VARS Protobuf_LIBRARIES Protobuf_INCLUDE_DIR
+    VERSION_VAR Protobuf_VERSION
+)
+
+if(Protobuf_FOUND)
+    set(Protobuf_INCLUDE_DIRS ${Protobuf_INCLUDE_DIR})
+endif()
+
+# Restore the original find library ordering
+if( Protobuf_USE_STATIC_LIBS )
+  set(CMAKE_FIND_LIBRARY_SUFFIXES ${_protobuf_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
+endif()
+
+# Backwards compatibility
+# Define upper case versions of output variables
+foreach(Camel
+    Protobuf_SRC_ROOT_FOLDER
+    Protobuf_IMPORT_DIRS
+    Protobuf_DEBUG
+    Protobuf_INCLUDE_DIRS
+    Protobuf_LIBRARIES
+    Protobuf_PROTOC_LIBRARIES
+    Protobuf_LITE_LIBRARIES
+    Protobuf_LIBRARY
+    Protobuf_PROTOC_LIBRARY
+    Protobuf_INCLUDE_DIR
+    Protobuf_PROTOC_EXECUTABLE
+    Protobuf_LIBRARY_DEBUG
+    Protobuf_PROTOC_LIBRARY_DEBUG
+    Protobuf_LITE_LIBRARY
+    Protobuf_LITE_LIBRARY_DEBUG
+    )
+    string(TOUPPER ${Camel} UPPER)
+    set(${UPPER} ${${Camel}})
+endforeach()
diff --git a/share/cmake-3.22/Modules/FindPython.cmake b/share/cmake-3.22/Modules/FindPython.cmake
new file mode 100644
index 0000000..375cb70
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindPython.cmake
@@ -0,0 +1,586 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindPython
+----------
+
+.. versionadded:: 3.12
+
+Find Python interpreter, compiler and development environment (include
+directories and libraries).
+
+.. versionadded:: 3.19
+  When a version is requested, it can be specified as a simple value or as a
+  range. For a detailed description of version range usage and capabilities,
+  refer to the :command:`find_package` command.
+
+The following components are supported:
+
+* ``Interpreter``: search for Python interpreter.
+* ``Compiler``: search for Python compiler. Only offered by IronPython.
+* ``Development``: search for development artifacts (include directories and
+  libraries).
+
+  .. versionadded:: 3.18
+    This component includes two sub-components which can be specified
+    independently:
+
+    * ``Development.Module``: search for artifacts for Python module
+      developments.
+    * ``Development.Embed``: search for artifacts for Python embedding
+      developments.
+
+* ``NumPy``: search for NumPy include directories.
+
+.. versionadded:: 3.14
+  Added the ``NumPy`` component.
+
+If no ``COMPONENTS`` are specified, ``Interpreter`` is assumed.
+
+If component ``Development`` is specified, it implies sub-components
+``Development.Module`` and ``Development.Embed``.
+
+To ensure consistent versions between components ``Interpreter``, ``Compiler``,
+``Development`` (or one of its sub-components) and ``NumPy``, specify all
+components at the same time::
+
+  find_package (Python COMPONENTS Interpreter Development)
+
+This module looks preferably for version 3 of Python. If not found, version 2
+is searched.
+To manage concurrent versions 3 and 2 of Python, use :module:`FindPython3` and
+:module:`FindPython2` modules rather than this one.
+
+.. note::
+
+  If components ``Interpreter`` and ``Development`` (or one of its
+  sub-components) are both specified, this module search only for interpreter
+  with same platform architecture as the one defined by ``CMake``
+  configuration. This constraint does not apply if only ``Interpreter``
+  component is specified.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+This module defines the following :ref:`Imported Targets <Imported Targets>`:
+
+.. versionchanged:: 3.14
+  :ref:`Imported Targets <Imported Targets>` are only created when
+  :prop_gbl:`CMAKE_ROLE` is ``PROJECT``.
+
+``Python::Interpreter``
+  Python interpreter. Target defined if component ``Interpreter`` is found.
+``Python::Compiler``
+  Python compiler. Target defined if component ``Compiler`` is found.
+
+``Python::Module``
+  .. versionadded:: 3.15
+
+  Python library for Python module. Target defined if component
+  ``Development.Module`` is found.
+
+``Python::Python``
+  Python library for Python embedding. Target defined if component
+  ``Development.Embed`` is found.
+
+``Python::NumPy``
+  .. versionadded:: 3.14
+
+  NumPy Python library. Target defined if component ``NumPy`` is found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project
+(see :ref:`Standard Variable Names <CMake Developer Standard Variable Names>`):
+
+``Python_FOUND``
+  System has the Python requested components.
+``Python_Interpreter_FOUND``
+  System has the Python interpreter.
+``Python_EXECUTABLE``
+  Path to the Python interpreter.
+``Python_INTERPRETER_ID``
+  A short string unique to the interpreter. Possible values include:
+    * Python
+    * ActivePython
+    * Anaconda
+    * Canopy
+    * IronPython
+    * PyPy
+``Python_STDLIB``
+  Standard platform independent installation directory.
+
+  Information returned by
+  ``distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=True)``
+  or else ``sysconfig.get_path('stdlib')``.
+``Python_STDARCH``
+  Standard platform dependent installation directory.
+
+  Information returned by
+  ``distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=True)``
+  or else ``sysconfig.get_path('platstdlib')``.
+``Python_SITELIB``
+  Third-party platform independent installation directory.
+
+  Information returned by
+  ``distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=False)``
+  or else ``sysconfig.get_path('purelib')``.
+``Python_SITEARCH``
+  Third-party platform dependent installation directory.
+
+  Information returned by
+  ``distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=False)``
+  or else ``sysconfig.get_path('platlib')``.
+
+``Python_SOABI``
+  .. versionadded:: 3.17
+
+  Extension suffix for modules.
+
+  Information returned by
+  ``distutils.sysconfig.get_config_var('SOABI')`` or computed from
+  ``distutils.sysconfig.get_config_var('EXT_SUFFIX')`` or
+  ``python-config --extension-suffix``. If package ``distutils.sysconfig`` is
+  not available, ``sysconfig.get_config_var('SOABI')`` or
+  ``sysconfig.get_config_var('EXT_SUFFIX')`` are used.
+
+``Python_Compiler_FOUND``
+  System has the Python compiler.
+``Python_COMPILER``
+  Path to the Python compiler. Only offered by IronPython.
+``Python_COMPILER_ID``
+  A short string unique to the compiler. Possible values include:
+    * IronPython
+
+``Python_DOTNET_LAUNCHER``
+  .. versionadded:: 3.18
+
+  The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
+
+``Python_Development_FOUND``
+  System has the Python development artifacts.
+
+``Python_Development.Module_FOUND``
+  .. versionadded:: 3.18
+
+  System has the Python development artifacts for Python module.
+
+``Python_Development.Embed_FOUND``
+  .. versionadded:: 3.18
+
+  System has the Python development artifacts for Python embedding.
+
+``Python_INCLUDE_DIRS``
+
+  The Python include directories.
+
+``Python_LINK_OPTIONS``
+  .. versionadded:: 3.19
+
+  The Python link options. Some configurations require specific link options
+  for a correct build and execution.
+
+``Python_LIBRARIES``
+  The Python libraries.
+``Python_LIBRARY_DIRS``
+  The Python library directories.
+``Python_RUNTIME_LIBRARY_DIRS``
+  The Python runtime library directories.
+``Python_VERSION``
+  Python version.
+``Python_VERSION_MAJOR``
+  Python major version.
+``Python_VERSION_MINOR``
+  Python minor version.
+``Python_VERSION_PATCH``
+  Python patch version.
+
+``Python_PyPy_VERSION``
+  .. versionadded:: 3.18
+
+  Python PyPy version.
+
+``Python_NumPy_FOUND``
+  .. versionadded:: 3.14
+
+  System has the NumPy.
+
+``Python_NumPy_INCLUDE_DIRS``
+  .. versionadded:: 3.14
+
+  The NumPy include directories.
+
+``Python_NumPy_VERSION``
+  .. versionadded:: 3.14
+
+  The NumPy version.
+
+Hints
+^^^^^
+
+``Python_ROOT_DIR``
+  Define the root directory of a Python installation.
+
+``Python_USE_STATIC_LIBS``
+  * If not defined, search for shared libraries and static libraries in that
+    order.
+  * If set to TRUE, search **only** for static libraries.
+  * If set to FALSE, search **only** for shared libraries.
+
+  .. note::
+
+    This hint will be ignored on ``Windows`` because static libraries are not
+    available on this platform.
+
+``Python_FIND_ABI``
+  .. versionadded:: 3.16
+
+  This variable defines which ABIs, as defined in
+  `PEP 3149 <https://www.python.org/dev/peps/pep-3149/>`_, should be searched.
+
+  .. note::
+
+    This hint will be honored only when searched for ``Python`` version 3.
+
+  .. note::
+
+    If ``Python_FIND_ABI`` is not defined, any ABI will be searched.
+
+  The ``Python_FIND_ABI`` variable is a 3-tuple specifying, in that order,
+  ``pydebug`` (``d``), ``pymalloc`` (``m``) and ``unicode`` (``u``) flags.
+  Each element can be set to one of the following:
+
+  * ``ON``: Corresponding flag is selected.
+  * ``OFF``: Corresponding flag is not selected.
+  * ``ANY``: The two possibilities (``ON`` and ``OFF``) will be searched.
+
+  From this 3-tuple, various ABIs will be searched starting from the most
+  specialized to the most general. Moreover, ``debug`` versions will be
+  searched **after** ``non-debug`` ones.
+
+  For example, if we have::
+
+    set (Python_FIND_ABI "ON" "ANY" "ANY")
+
+  The following flags combinations will be appended, in that order, to the
+  artifact names: ``dmu``, ``dm``, ``du``, and ``d``.
+
+  And to search any possible ABIs::
+
+    set (Python_FIND_ABI "ANY" "ANY" "ANY")
+
+  The following combinations, in that order, will be used: ``mu``, ``m``,
+  ``u``, ``<empty>``, ``dmu``, ``dm``, ``du`` and ``d``.
+
+  .. note::
+
+    This hint is useful only on ``POSIX`` systems. So, on ``Windows`` systems,
+    when ``Python_FIND_ABI`` is defined, ``Python`` distributions from
+    `python.org <https://www.python.org/>`_ will be found only if value for
+    each flag is ``OFF`` or ``ANY``.
+
+``Python_FIND_STRATEGY``
+  .. versionadded:: 3.15
+
+  This variable defines how lookup will be done.
+  The ``Python_FIND_STRATEGY`` variable can be set to one of the following:
+
+  * ``VERSION``: Try to find the most recent version in all specified
+    locations.
+    This is the default if policy :policy:`CMP0094` is undefined or set to
+    ``OLD``.
+  * ``LOCATION``: Stops lookup as soon as a version satisfying version
+    constraints is founded.
+    This is the default if policy :policy:`CMP0094` is set to ``NEW``.
+
+``Python_FIND_REGISTRY``
+  .. versionadded:: 3.13
+
+  On Windows the ``Python_FIND_REGISTRY`` variable determine the order
+  of preference between registry and environment variables.
+  the ``Python_FIND_REGISTRY`` variable can be set to one of the following:
+
+  * ``FIRST``: Try to use registry before environment variables.
+    This is the default.
+  * ``LAST``: Try to use registry after environment variables.
+  * ``NEVER``: Never try to use registry.
+
+``Python_FIND_FRAMEWORK``
+  .. versionadded:: 3.15
+
+  On macOS the ``Python_FIND_FRAMEWORK`` variable determine the order of
+  preference between Apple-style and unix-style package components.
+  This variable can take same values as :variable:`CMAKE_FIND_FRAMEWORK`
+  variable.
+
+  .. note::
+
+    Value ``ONLY`` is not supported so ``FIRST`` will be used instead.
+
+  If ``Python_FIND_FRAMEWORK`` is not defined, :variable:`CMAKE_FIND_FRAMEWORK`
+  variable will be used, if any.
+
+``Python_FIND_VIRTUALENV``
+  .. versionadded:: 3.15
+
+  This variable defines the handling of virtual environments managed by
+  ``virtualenv`` or ``conda``. It is meaningful only when a virtual environment
+  is active (i.e. the ``activate`` script has been evaluated). In this case, it
+  takes precedence over ``Python_FIND_REGISTRY`` and ``CMAKE_FIND_FRAMEWORK``
+  variables.  The ``Python_FIND_VIRTUALENV`` variable can be set to one of the
+  following:
+
+  * ``FIRST``: The virtual environment is used before any other standard
+    paths to look-up for the interpreter. This is the default.
+  * ``ONLY``: Only the virtual environment is used to look-up for the
+    interpreter.
+  * ``STANDARD``: The virtual environment is not used to look-up for the
+    interpreter but environment variable ``PATH`` is always considered.
+    In this case, variable ``Python_FIND_REGISTRY`` (Windows) or
+    ``CMAKE_FIND_FRAMEWORK`` (macOS) can be set with value ``LAST`` or
+    ``NEVER`` to select preferably the interpreter from the virtual
+    environment.
+
+  .. versionadded:: 3.17
+    Added support for ``conda`` environments.
+
+  .. note::
+
+    If the component ``Development`` is requested, it is **strongly**
+    recommended to also include the component ``Interpreter`` to get expected
+    result.
+
+``Python_FIND_IMPLEMENTATIONS``
+  .. versionadded:: 3.18
+
+  This variable defines, in an ordered list, the different implementations
+  which will be searched. The ``Python_FIND_IMPLEMENTATIONS`` variable can
+  hold the following values:
+
+  * ``CPython``: this is the standard implementation. Various products, like
+    ``Anaconda`` or ``ActivePython``, rely on this implementation.
+  * ``IronPython``: This implementation use the ``CSharp`` language for
+    ``.NET Framework`` on top of the `Dynamic Language Runtime` (``DLR``).
+    See `IronPython <http://ironpython.net>`_.
+  * ``PyPy``: This implementation use ``RPython`` language and
+    ``RPython translation toolchain`` to produce the python interpreter.
+    See `PyPy <https://www.pypy.org>`_.
+
+  The default value is:
+
+  * Windows platform: ``CPython``, ``IronPython``
+  * Other platforms: ``CPython``
+
+  .. note::
+
+    This hint has the lowest priority of all hints, so even if, for example,
+    you specify ``IronPython`` first and ``CPython`` in second, a python
+    product based on ``CPython`` can be selected because, for example with
+    ``Python_FIND_STRATEGY=LOCATION``, each location will be search first for
+    ``IronPython`` and second for ``CPython``.
+
+  .. note::
+
+    When ``IronPython`` is specified, on platforms other than ``Windows``, the
+    ``.Net`` interpreter (i.e. ``mono`` command) is expected to be available
+    through the ``PATH`` variable.
+
+``Python_FIND_UNVERSIONED_NAMES``
+  .. versionadded:: 3.20
+
+  This variable defines how the generic names will be searched. Currently, it
+  only applies to the generic names of the interpreter, namely, ``python3`` or
+  ``python2`` and ``python``.
+  The ``Python_FIND_UNVERSIONED_NAMES`` variable can be set to one of the
+  following values:
+
+  * ``FIRST``: The generic names are searched before the more specialized ones
+    (such as ``python2.5`` for example).
+  * ``LAST``: The generic names are searched after the more specialized ones.
+    This is the default.
+  * ``NEVER``: The generic name are not searched at all.
+
+Artifacts Specification
+^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.16
+
+To solve special cases, it is possible to specify directly the artifacts by
+setting the following variables:
+
+``Python_EXECUTABLE``
+  The path to the interpreter.
+
+``Python_COMPILER``
+  The path to the compiler.
+
+``Python_DOTNET_LAUNCHER``
+  .. versionadded:: 3.18
+
+  The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
+
+``Python_LIBRARY``
+  The path to the library. It will be used to compute the
+  variables ``Python_LIBRARIES``, ``Python_LIBRARY_DIRS`` and
+  ``Python_RUNTIME_LIBRARY_DIRS``.
+
+``Python_INCLUDE_DIR``
+  The path to the directory of the ``Python`` headers. It will be used to
+  compute the variable ``Python_INCLUDE_DIRS``.
+
+``Python_NumPy_INCLUDE_DIR``
+  The path to the directory of the ``NumPy`` headers. It will be used to
+  compute the variable ``Python_NumPy_INCLUDE_DIRS``.
+
+.. note::
+
+  All paths must be absolute. Any artifact specified with a relative path
+  will be ignored.
+
+.. note::
+
+  When an artifact is specified, all ``HINTS`` will be ignored and no search
+  will be performed for this artifact.
+
+  If more than one artifact is specified, it is the user's responsibility to
+  ensure the consistency of the various artifacts.
+
+By default, this module supports multiple calls in different directories of a
+project with different version/component requirements while providing correct
+and consistent results for each call. To support this behavior, ``CMake`` cache
+is not used in the traditional way which can be problematic for interactive
+specification. So, to enable also interactive specification, module behavior
+can be controlled with the following variable:
+
+``Python_ARTIFACTS_INTERACTIVE``
+  .. versionadded:: 3.18
+
+  Selects the behavior of the module. This is a boolean variable:
+
+  * If set to ``TRUE``: Create CMake cache entries for the above artifact
+    specification variables so that users can edit them interactively.
+    This disables support for multiple version/component requirements.
+  * If set to ``FALSE`` or undefined: Enable multiple version/component
+    requirements.
+
+Commands
+^^^^^^^^
+
+This module defines the command ``Python_add_library`` (when
+:prop_gbl:`CMAKE_ROLE` is ``PROJECT``), which has the same semantics as
+:command:`add_library` and adds a dependency to target ``Python::Python`` or,
+when library type is ``MODULE``, to target ``Python::Module`` and takes care of
+Python module naming rules::
+
+  Python_add_library (<name> [STATIC | SHARED | MODULE [WITH_SOABI]]
+                      <source1> [<source2> ...])
+
+If the library type is not specified, ``MODULE`` is assumed.
+
+.. versionadded:: 3.17
+  For ``MODULE`` library type, if option ``WITH_SOABI`` is specified, the
+  module suffix will include the ``Python_SOABI`` value, if any.
+#]=======================================================================]
+
+
+cmake_policy(PUSH)
+# numbers and boolean constants
+cmake_policy (SET CMP0012 NEW)
+
+
+set (_PYTHON_PREFIX Python)
+unset (_Python_REQUIRED_VERSION_MAJOR)
+unset (_Python_REQUIRED_VERSIONS)
+
+if (Python_FIND_VERSION_RANGE)
+  # compute list of major versions
+  foreach (_Python_MAJOR IN ITEMS 3 2)
+    if (_Python_MAJOR VERSION_GREATER_EQUAL Python_FIND_VERSION_MIN_MAJOR
+        AND ((Python_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND _Python_MAJOR VERSION_LESS_EQUAL Python_FIND_VERSION_MAX)
+        OR (Python_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND _Python_MAJOR VERSION_LESS Python_FIND_VERSION_MAX)))
+      list (APPEND _Python_REQUIRED_VERSIONS ${_Python_MAJOR})
+    endif()
+  endforeach()
+  list (LENGTH _Python_REQUIRED_VERSIONS _Python_VERSION_COUNT)
+  if (_Python_VERSION_COUNT EQUAL 0)
+    unset (_Python_REQUIRED_VERSIONS)
+  elseif (_Python_VERSION_COUNT EQUAL 1)
+    set (_Python_REQUIRED_VERSION_MAJOR ${_Python_REQUIRED_VERSIONS})
+  endif()
+elseif (DEFINED Python_FIND_VERSION)
+  set (_Python_REQUIRED_VERSION_MAJOR ${Python_FIND_VERSION_MAJOR})
+else()
+  set (_Python_REQUIRED_VERSIONS 3 2)
+endif()
+
+if (_Python_REQUIRED_VERSION_MAJOR)
+  include (${CMAKE_CURRENT_LIST_DIR}/FindPython/Support.cmake)
+elseif (_Python_REQUIRED_VERSIONS)
+  # iterate over versions in quiet and NOT required modes to avoid multiple
+  # "Found" messages and prematurally failure.
+  set (_Python_QUIETLY ${Python_FIND_QUIETLY})
+  set (_Python_REQUIRED ${Python_FIND_REQUIRED})
+  set (Python_FIND_QUIETLY TRUE)
+  set (Python_FIND_REQUIRED FALSE)
+
+  set (_Python_REQUIRED_VERSION_LAST 2)
+
+  unset (_Python_INPUT_VARS)
+  foreach (_Python_ITEM IN ITEMS Python_EXECUTABLE Python_COMPILER Python_LIBRARY
+                                 Python_INCLUDE_DIR Python_NumPy_INCLUDE_DIR)
+    if (NOT DEFINED ${_Python_ITEM})
+      list (APPEND _Python_INPUT_VARS ${_Python_ITEM})
+    endif()
+  endforeach()
+
+  foreach (_Python_REQUIRED_VERSION_MAJOR IN LISTS _Python_REQUIRED_VERSIONS)
+    set (Python_FIND_VERSION ${_Python_REQUIRED_VERSION_MAJOR})
+    include (${CMAKE_CURRENT_LIST_DIR}/FindPython/Support.cmake)
+    if (Python_FOUND OR
+        _Python_REQUIRED_VERSION_MAJOR EQUAL _Python_REQUIRED_VERSION_LAST)
+      break()
+    endif()
+    # clean-up INPUT variables not set by the user
+    foreach (_Python_ITEM IN LISTS _Python_INPUT_VARS)
+      unset (${_Python_ITEM})
+    endforeach()
+    # clean-up some CACHE variables to ensure look-up restart from scratch
+    foreach (_Python_ITEM IN LISTS _Python_CACHED_VARS)
+      unset (${_Python_ITEM} CACHE)
+    endforeach()
+  endforeach()
+
+  unset (Python_FIND_VERSION)
+
+  set (Python_FIND_QUIETLY ${_Python_QUIETLY})
+  set (Python_FIND_REQUIRED ${_Python_REQUIRED})
+  if (Python_FIND_REQUIRED OR NOT Python_FIND_QUIETLY)
+    # call again validation command to get "Found" or error message
+    find_package_handle_standard_args (Python HANDLE_COMPONENTS HANDLE_VERSION_RANGE
+                                              REQUIRED_VARS ${_Python_REQUIRED_VARS}
+                                              VERSION_VAR Python_VERSION)
+  endif()
+else()
+  # supported versions not in the specified range. Call final check
+  if (NOT Python_FIND_COMPONENTS)
+    set (Python_FIND_COMPONENTS Interpreter)
+    set (Python_FIND_REQUIRED_Interpreter TRUE)
+  endif()
+
+  include (${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+  find_package_handle_standard_args (Python HANDLE_COMPONENTS HANDLE_VERSION_RANGE
+                                            VERSION_VAR Python_VERSION
+                                            REASON_FAILURE_MESSAGE "Version range specified \"${Python_FIND_VERSION_RANGE}\" does not include supported versions")
+endif()
+
+if (COMMAND __Python_add_library)
+  macro (Python_add_library)
+    __Python_add_library (Python ${ARGV})
+  endmacro()
+endif()
+
+unset (_PYTHON_PREFIX)
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/FindPython/Support.cmake b/share/cmake-3.22/Modules/FindPython/Support.cmake
new file mode 100644
index 0000000..ce25cfc
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindPython/Support.cmake
@@ -0,0 +1,3370 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#
+# This file is a "template" file used by various FindPython modules.
+#
+
+#
+# Initial configuration
+#
+
+cmake_policy(PUSH)
+# numbers and boolean constants
+cmake_policy (SET CMP0012 NEW)
+# IN_LIST operator
+cmake_policy (SET CMP0057 NEW)
+
+if (NOT DEFINED _PYTHON_PREFIX)
+  message (FATAL_ERROR "FindPython: INTERNAL ERROR")
+endif()
+if (NOT DEFINED _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
+  message (FATAL_ERROR "FindPython: INTERNAL ERROR")
+endif()
+if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL "3")
+  set(_${_PYTHON_PREFIX}_VERSIONS 3.10 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
+elseif (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL "2")
+  set(_${_PYTHON_PREFIX}_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
+else()
+  message (FATAL_ERROR "FindPython: INTERNAL ERROR")
+endif()
+
+get_property(_${_PYTHON_PREFIX}_CMAKE_ROLE GLOBAL PROPERTY CMAKE_ROLE)
+
+include (${CMAKE_CURRENT_LIST_DIR}/../FindPackageHandleStandardArgs.cmake)
+
+#
+# helper commands
+#
+macro (_PYTHON_DISPLAY_FAILURE _PYTHON_MSG)
+  if (${_PYTHON_PREFIX}_FIND_REQUIRED)
+    message (FATAL_ERROR "${_PYTHON_MSG}")
+  else()
+    if (NOT ${_PYTHON_PREFIX}_FIND_QUIETLY)
+      message(STATUS "${_PYTHON_MSG}")
+    endif ()
+  endif()
+
+  set (${_PYTHON_PREFIX}_FOUND FALSE)
+  string (TOUPPER "${_PYTHON_PREFIX}" _${_PYTHON_PREFIX}_UPPER_PREFIX)
+  set (${_PYTHON_UPPER_PREFIX}_FOUND FALSE)
+endmacro()
+
+
+function (_PYTHON_MARK_AS_INTERNAL)
+  foreach (var IN LISTS ARGV)
+    if (DEFINED CACHE{${var}})
+      set_property (CACHE ${var} PROPERTY TYPE INTERNAL)
+    endif()
+  endforeach()
+endfunction()
+
+
+macro (_PYTHON_SELECT_LIBRARY_CONFIGURATIONS _PYTHON_BASENAME)
+  if(NOT DEFINED ${_PYTHON_BASENAME}_LIBRARY_RELEASE)
+    set(${_PYTHON_BASENAME}_LIBRARY_RELEASE "${_PYTHON_BASENAME}_LIBRARY_RELEASE-NOTFOUND")
+  endif()
+  if(NOT DEFINED ${_PYTHON_BASENAME}_LIBRARY_DEBUG)
+    set(${_PYTHON_BASENAME}_LIBRARY_DEBUG "${_PYTHON_BASENAME}_LIBRARY_DEBUG-NOTFOUND")
+  endif()
+
+  get_property(_PYTHON_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+  if (${_PYTHON_BASENAME}_LIBRARY_DEBUG AND ${_PYTHON_BASENAME}_LIBRARY_RELEASE AND
+      NOT ${_PYTHON_BASENAME}_LIBRARY_DEBUG STREQUAL ${_PYTHON_BASENAME}_LIBRARY_RELEASE AND
+      (_PYTHON_isMultiConfig OR CMAKE_BUILD_TYPE))
+    # if the generator is multi-config or if CMAKE_BUILD_TYPE is set for
+    # single-config generators, set optimized and debug libraries
+    set (${_PYTHON_BASENAME}_LIBRARIES "")
+    foreach (_PYTHON_libname IN LISTS ${_PYTHON_BASENAME}_LIBRARY_RELEASE)
+      list( APPEND ${_PYTHON_BASENAME}_LIBRARIES optimized "${_PYTHON_libname}")
+    endforeach()
+    foreach (_PYTHON_libname IN LISTS ${_PYTHON_BASENAME}_LIBRARY_DEBUG)
+      list( APPEND ${_PYTHON_BASENAME}_LIBRARIES debug "${_PYTHON_libname}")
+    endforeach()
+  elseif (${_PYTHON_BASENAME}_LIBRARY_RELEASE)
+    set (${_PYTHON_BASENAME}_LIBRARIES "${${_PYTHON_BASENAME}_LIBRARY_RELEASE}")
+  elseif (${_PYTHON_BASENAME}_LIBRARY_DEBUG)
+    set (${_PYTHON_BASENAME}_LIBRARIES "${${_PYTHON_BASENAME}_LIBRARY_DEBUG}")
+  else()
+    set (${_PYTHON_BASENAME}_LIBRARIES "${_PYTHON_BASENAME}_LIBRARY-NOTFOUND")
+  endif()
+endmacro()
+
+
+macro (_PYTHON_FIND_FRAMEWORKS)
+  if (CMAKE_HOST_APPLE OR APPLE)
+    file(TO_CMAKE_PATH "$ENV{CMAKE_FRAMEWORK_PATH}" _pff_CMAKE_FRAMEWORK_PATH)
+    set (_pff_frameworks ${CMAKE_FRAMEWORK_PATH}
+                         ${_pff_CMAKE_FRAMEWORK_PATH}
+                         ~/Library/Frameworks
+                         /usr/local/Frameworks
+                         /opt/homebrew/Frameworks
+                         ${CMAKE_SYSTEM_FRAMEWORK_PATH})
+    list (REMOVE_DUPLICATES _pff_frameworks)
+    foreach (_pff_implementation IN LISTS _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS)
+      unset (_${_PYTHON_PREFIX}_${_pff_implementation}_FRAMEWORKS)
+      if (_pff_implementation STREQUAL "CPython")
+        foreach (_pff_framework IN LISTS _pff_frameworks)
+          if (EXISTS ${_pff_framework}/Python${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}.framework)
+            list (APPEND _${_PYTHON_PREFIX}_${_pff_implementation}_FRAMEWORKS ${_pff_framework}/Python${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}.framework)
+          endif()
+          if (EXISTS ${_pff_framework}/Python.framework)
+            list (APPEND _${_PYTHON_PREFIX}_${_pff_implementation}_FRAMEWORKS ${_pff_framework}/Python.framework)
+          endif()
+        endforeach()
+      elseif (_pff_implementation STREQUAL "IronPython")
+        foreach (_pff_framework IN LISTS _pff_frameworks)
+          if (EXISTS ${_pff_framework}/IronPython.framework)
+            list (APPEND _${_PYTHON_PREFIX}_${_pff_implementation}_FRAMEWORKS ${_pff_framework}/IronPython.framework)
+          endif()
+        endforeach()
+      endif()
+    endforeach()
+    unset (_pff_implementation)
+    unset (_pff_frameworks)
+    unset (_pff_framework)
+  endif()
+endmacro()
+
+function (_PYTHON_GET_FRAMEWORKS _PYTHON_PGF_FRAMEWORK_PATHS)
+  cmake_parse_arguments (PARSE_ARGV 1 _PGF "" "" "IMPLEMENTATIONS;VERSION")
+
+  if (NOT _PGF_IMPLEMENTATIONS)
+    set (_PGF_IMPLEMENTATIONS ${_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS})
+  endif()
+
+  set (framework_paths)
+
+  foreach (implementation IN LISTS _PGF_IMPLEMENTATIONS)
+    if (implementation STREQUAL "CPython")
+      foreach (version IN LISTS _PGF_VERSION)
+        foreach (framework IN LISTS _${_PYTHON_PREFIX}_${implementation}_FRAMEWORKS)
+          if (EXISTS "${framework}/Versions/${version}")
+            list (APPEND framework_paths "${framework}/Versions/${version}")
+          endif()
+        endforeach()
+      endforeach()
+    elseif (implementation STREQUAL "IronPython")
+      foreach (version IN LISTS _PGF_VERSION)
+        foreach (framework IN LISTS _${_PYTHON_PREFIX}_${implementation}_FRAMEWORKS)
+          # pick-up all available versions
+          file (GLOB versions LIST_DIRECTORIES true RELATIVE "${framework}/Versions/"
+                              "${framework}/Versions/${version}*")
+          list (SORT versions ORDER DESCENDING)
+          list (TRANSFORM versions PREPEND "${framework}/Versions/")
+          list (APPEND framework_paths ${versions})
+        endforeach()
+      endforeach()
+    endif()
+  endforeach()
+
+  set (${_PYTHON_PGF_FRAMEWORK_PATHS} ${framework_paths} PARENT_SCOPE)
+endfunction()
+
+function (_PYTHON_GET_REGISTRIES _PYTHON_PGR_REGISTRY_PATHS)
+  cmake_parse_arguments (PARSE_ARGV 1 _PGR "" "" "IMPLEMENTATIONS;VERSION")
+
+  if (NOT _PGR_IMPLEMENTATIONS)
+    set (_PGR_IMPLEMENTATIONS ${_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS})
+  endif()
+
+  set (registries)
+
+  foreach (implementation IN LISTS _PGR_IMPLEMENTATIONS)
+    if (implementation STREQUAL "CPython")
+      foreach (version IN LISTS _PGR_VERSION)
+        string (REPLACE "." "" version_no_dots ${version})
+        list (APPEND registries
+                     [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${version}-${_${_PYTHON_PREFIX}_ARCH}\\InstallPath]
+                     [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${version}-${_${_PYTHON_PREFIX}_ARCH2}\\InstallPath])
+        if (version VERSION_GREATER_EQUAL "3.5")
+          get_filename_component (arch "[HKEY_CURRENT_USER\\Software\\Python\\PythonCore\\${version};SysArchitecture]" NAME)
+          if (arch MATCHES "(${_${_PYTHON_PREFIX}_ARCH}|${_${_PYTHON_PREFIX}_ARCH2})bit")
+            list (APPEND registries
+                         [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${version}\\InstallPath])
+          endif()
+        else()
+          list (APPEND registries
+                       [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${version}\\InstallPath])
+        endif()
+        list (APPEND registries
+                     [HKEY_CURRENT_USER\\SOFTWARE\\Python\\ContinuumAnalytics\\Anaconda${version_no_dots}-${_${_PYTHON_PREFIX}_ARCH}\\InstallPath]
+                     [HKEY_CURRENT_USER\\SOFTWARE\\Python\\ContinuumAnalytics\\Anaconda${version_no_dots}-${_${_PYTHON_PREFIX}_ARCH2}\\InstallPath]
+                     [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${version}-${_${_PYTHON_PREFIX}_ARCH}\\InstallPath]
+                     [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${version}-${_${_PYTHON_PREFIX}_ARCH2}\\InstallPath]
+                     [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${version}\\InstallPath]
+                     [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\ContinuumAnalytics\\Anaconda${version_no_dots}-${_${_PYTHON_PREFIX}_ARCH}\\InstallPath]
+                     [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\ContinuumAnalytics\\Anaconda${version_no_dots}-${_${_PYTHON_PREFIX}_ARCH2}\\InstallPath])
+      endforeach()
+    elseif (implementation STREQUAL "IronPython")
+      foreach (version  IN LISTS _PGR_VERSION)
+        list (APPEND registries [HKEY_LOCAL_MACHINE\\SOFTWARE\\IronPython\\${version}\\InstallPath])
+      endforeach()
+    endif()
+  endforeach()
+
+  set (${_PYTHON_PGR_REGISTRY_PATHS} "${registries}" PARENT_SCOPE)
+endfunction()
+
+
+function (_PYTHON_GET_ABIFLAGS _PGABIFLAGS)
+  set (abiflags)
+  list (GET _${_PYTHON_PREFIX}_FIND_ABI 0 pydebug)
+  list (GET _${_PYTHON_PREFIX}_FIND_ABI 1 pymalloc)
+  list (GET _${_PYTHON_PREFIX}_FIND_ABI 2 unicode)
+
+  if (pymalloc STREQUAL "ANY" AND unicode STREQUAL "ANY")
+    set (abiflags "mu" "m" "u" "")
+  elseif (pymalloc STREQUAL "ANY" AND unicode STREQUAL "ON")
+    set (abiflags "mu" "u")
+  elseif (pymalloc STREQUAL "ANY" AND unicode STREQUAL "OFF")
+    set (abiflags "m" "")
+  elseif (pymalloc STREQUAL "ON" AND unicode STREQUAL "ANY")
+    set (abiflags "mu" "m")
+  elseif (pymalloc STREQUAL "ON" AND unicode STREQUAL "ON")
+    set (abiflags "mu")
+  elseif (pymalloc STREQUAL "ON" AND unicode STREQUAL "OFF")
+    set (abiflags "m")
+  elseif (pymalloc STREQUAL "ON" AND unicode STREQUAL "ANY")
+    set (abiflags "u" "")
+  elseif (pymalloc STREQUAL "OFF" AND unicode STREQUAL "ON")
+    set (abiflags "u")
+  endif()
+
+  if (pydebug STREQUAL "ON")
+    if (abiflags)
+      list (TRANSFORM abiflags PREPEND "d")
+    else()
+      set (abiflags "d")
+    endif()
+  elseif (pydebug STREQUAL "ANY")
+    if (abiflags)
+      set (flags "${abiflags}")
+      list (TRANSFORM flags PREPEND "d")
+      list (APPEND abiflags "${flags}")
+    else()
+      set (abiflags "" "d")
+    endif()
+  endif()
+
+  set (${_PGABIFLAGS} "${abiflags}" PARENT_SCOPE)
+endfunction()
+
+function (_PYTHON_GET_PATH_SUFFIXES _PYTHON_PGPS_PATH_SUFFIXES)
+  cmake_parse_arguments (PARSE_ARGV 1 _PGPS "INTERPRETER;COMPILER;LIBRARY;INCLUDE" "" "IMPLEMENTATIONS;VERSION")
+
+  if (NOT _PGPS_IMPLEMENTATIONS)
+    set (_PGPS_IMPLEMENTATIONS ${_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS})
+  endif()
+
+  if (DEFINED _${_PYTHON_PREFIX}_ABIFLAGS)
+    set (abi "${_${_PYTHON_PREFIX}_ABIFLAGS}")
+  else()
+    set (abi "mu" "m" "u" "")
+  endif()
+
+  set (path_suffixes)
+
+  foreach (implementation IN LISTS _PGPS_IMPLEMENTATIONS)
+    if (implementation STREQUAL "CPython")
+      if (_PGPS_INTERPRETER)
+        list (APPEND path_suffixes bin Scripts)
+      else()
+        foreach (version IN LISTS _PGPS_VERSION)
+          if (_PGPS_LIBRARY)
+            if (CMAKE_LIBRARY_ARCHITECTURE)
+              list (APPEND path_suffixes lib/${CMAKE_LIBRARY_ARCHITECTURE})
+            endif()
+            list (APPEND path_suffixes lib libs)
+
+            if (CMAKE_LIBRARY_ARCHITECTURE)
+              set (suffixes "${abi}")
+              if (suffixes)
+                list (TRANSFORM suffixes PREPEND "lib/python${_PGPS_VERSION}/config-${_PGPS_VERSION}")
+                list (TRANSFORM suffixes APPEND "-${CMAKE_LIBRARY_ARCHITECTURE}")
+              else()
+                set (suffixes "lib/python${_PGPS_VERSION}/config-${_PGPS_VERSION}-${CMAKE_LIBRARY_ARCHITECTURE}")
+              endif()
+              list (APPEND path_suffixes ${suffixes})
+            endif()
+            set (suffixes "${abi}")
+            if (suffixes)
+              list (TRANSFORM suffixes PREPEND "lib/python${_PGPS_VERSION}/config-${_PGPS_VERSION}")
+            else()
+              set (suffixes "lib/python${_PGPS_VERSION}/config-${_PGPS_VERSION}")
+            endif()
+            list (APPEND path_suffixes ${suffixes})
+          elseif (_PGPS_INCLUDE)
+            set (suffixes "${abi}")
+            if (suffixes)
+              list (TRANSFORM suffixes PREPEND "include/python${_PGPS_VERSION}")
+            else()
+              set (suffixes "include/python${_PGPS_VERSION}")
+            endif()
+            list (APPEND path_suffixes ${suffixes} include)
+          endif()
+        endforeach()
+      endif()
+    elseif (implementation STREQUAL "IronPython")
+      if (_PGPS_INTERPRETER OR _PGPS_COMPILER)
+        foreach (version IN LISTS _PGPS_VERSION)
+          list (APPEND path_suffixes "share/ironpython${version}")
+        endforeach()
+        list (APPEND path_suffixes ${_${_PYTHON_PREFIX}_IRON_PYTHON_PATH_SUFFIXES})
+      endif()
+    elseif (implementation STREQUAL "PyPy")
+      if (_PGPS_INTERPRETER)
+        list (APPEND path_suffixes ${_${_PYTHON_PREFIX}_PYPY_EXECUTABLE_PATH_SUFFIXES})
+      elseif (_PGPS_LIBRARY)
+        list (APPEND path_suffixes ${_${_PYTHON_PREFIX}_PYPY_LIBRARY_PATH_SUFFIXES})
+      elseif (_PGPS_INCLUDE)
+        list (APPEND path_suffixes ${_${_PYTHON_PREFIX}_PYPY_INCLUDE_PATH_SUFFIXES})
+      endif()
+    endif()
+  endforeach()
+  list (REMOVE_DUPLICATES path_suffixes)
+
+  set (${_PYTHON_PGPS_PATH_SUFFIXES} ${path_suffixes} PARENT_SCOPE)
+endfunction()
+
+function (_PYTHON_GET_NAMES _PYTHON_PGN_NAMES)
+  cmake_parse_arguments (PARSE_ARGV 1 _PGN "POSIX;INTERPRETER;COMPILER;CONFIG;LIBRARY;WIN32;DEBUG" "" "IMPLEMENTATIONS;VERSION")
+
+  if (NOT _PGN_IMPLEMENTATIONS)
+    set (_PGN_IMPLEMENTATIONS ${_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS})
+  endif()
+
+  set (names)
+
+  foreach (implementation IN LISTS _PGN_IMPLEMENTATIONS)
+    if (implementation STREQUAL "CPython")
+      if (_PGN_INTERPRETER AND _${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES STREQUAL "FIRST")
+        list (APPEND names python${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR} python)
+      endif()
+      foreach (version IN LISTS _PGN_VERSION)
+        if (_PGN_WIN32)
+          string (REPLACE "." "" version_no_dots ${version})
+
+          set (name python${version_no_dots})
+          if (_PGN_DEBUG)
+            string (APPEND name "_d")
+          endif()
+
+          list (APPEND names "${name}")
+        endif()
+
+        if (_PGN_POSIX)
+          if (DEFINED _${_PYTHON_PREFIX}_ABIFLAGS)
+            set (abi "${_${_PYTHON_PREFIX}_ABIFLAGS}")
+          else()
+            if (_PGN_INTERPRETER OR _PGN_CONFIG)
+              set (abi "")
+            else()
+              set (abi "mu" "m" "u" "")
+            endif()
+          endif()
+
+          if (abi)
+            if (_PGN_CONFIG AND DEFINED CMAKE_LIBRARY_ARCHITECTURE)
+              set (abinames "${abi}")
+              list (TRANSFORM abinames PREPEND "${CMAKE_LIBRARY_ARCHITECTURE}-python${version}")
+              list (TRANSFORM abinames APPEND "-config")
+              list (APPEND names ${abinames})
+            endif()
+            set (abinames "${abi}")
+            list (TRANSFORM abinames PREPEND "python${version}")
+            if (_PGN_CONFIG)
+              list (TRANSFORM abinames APPEND "-config")
+            endif()
+            list (APPEND names ${abinames})
+          else()
+            unset (abinames)
+            if (_PGN_CONFIG AND DEFINED CMAKE_LIBRARY_ARCHITECTURE)
+              set (abinames "${CMAKE_LIBRARY_ARCHITECTURE}-python${version}")
+            endif()
+            list (APPEND abinames "python${version}")
+            if (_PGN_CONFIG)
+              list (TRANSFORM abinames APPEND "-config")
+            endif()
+            list (APPEND names ${abinames})
+          endif()
+        endif()
+      endforeach()
+      if (_PGN_INTERPRETER AND _${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES STREQUAL "LAST")
+        list (APPEND names python${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR} python)
+      endif()
+    elseif (implementation STREQUAL "IronPython")
+      if (_PGN_INTERPRETER)
+        if (NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
+          # Do not use wrapper script on Linux because it is buggy: -c interpreter option cannot be used
+          foreach (version IN LISTS _PGN_VERSION)
+            list (APPEND names "ipy${version}")
+          endforeach()
+        endif()
+        list (APPEND names ${_${_PYTHON_PREFIX}_IRON_PYTHON_INTERPRETER_NAMES})
+      elseif (_PGN_COMPILER)
+        list (APPEND names ${_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_NAMES})
+      endif()
+    elseif (implementation STREQUAL "PyPy")
+      if (_PGN_INTERPRETER)
+        list (APPEND names ${_${_PYTHON_PREFIX}_PYPY_NAMES})
+      elseif (_PGN_LIBRARY)
+        if (_PGN_WIN32)
+          foreach (version IN LISTS _PGN_VERSION)
+            string (REPLACE "." "" version_no_dots ${version})
+
+            set (name "python${version_no_dots}")
+            if (_PGN_DEBUG)
+              string (APPEND name "_d")
+            endif()
+            list (APPEND names "${name}")
+          endforeach()
+        endif()
+        list (APPEND names ${_${_PYTHON_PREFIX}_PYPY_LIB_NAMES})
+      endif()
+    endif()
+  endforeach()
+
+  set (${_PYTHON_PGN_NAMES} ${names} PARENT_SCOPE)
+endfunction()
+
+function (_PYTHON_GET_CONFIG_VAR _PYTHON_PGCV_VALUE NAME)
+  unset (${_PYTHON_PGCV_VALUE} PARENT_SCOPE)
+
+  if (NOT NAME MATCHES "^(PREFIX|ABIFLAGS|CONFIGDIR|INCLUDES|LIBS|SOABI)$")
+    return()
+  endif()
+
+  if (_${_PYTHON_PREFIX}_CONFIG)
+    if (NAME STREQUAL "SOABI")
+      set (config_flag "--extension-suffix")
+    else()
+      set (config_flag "--${NAME}")
+    endif()
+    string (TOLOWER "${config_flag}" config_flag)
+    execute_process (COMMAND "${_${_PYTHON_PREFIX}_CONFIG}" ${config_flag}
+                     RESULT_VARIABLE _result
+                     OUTPUT_VARIABLE _values
+                     ERROR_QUIET
+                     OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if (_result)
+      unset (_values)
+    else()
+      if (NAME STREQUAL "INCLUDES")
+        # do some clean-up
+        string (REGEX MATCHALL "(-I|-iwithsysroot)[ ]*[^ ]+" _values "${_values}")
+        string (REGEX REPLACE "(-I|-iwithsysroot)[ ]*" "" _values "${_values}")
+        list (REMOVE_DUPLICATES _values)
+      elseif (NAME STREQUAL "SOABI")
+        # clean-up: remove prefix character and suffix
+        if (_values MATCHES "^(\\.${CMAKE_SHARED_LIBRARY_SUFFIX}|\\.so|\\.pyd)$")
+          set(_values "")
+        else()
+          string (REGEX REPLACE "^[.-](.+)(${CMAKE_SHARED_LIBRARY_SUFFIX}|\\.(so|pyd))$" "\\1" _values "${_values}")
+        endif()
+      endif()
+    endif()
+  endif()
+
+  if (_${_PYTHON_PREFIX}_EXECUTABLE AND NOT CMAKE_CROSSCOMPILING)
+    if (NAME STREQUAL "PREFIX")
+      execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c "import sys\ntry:\n   from distutils import sysconfig\n   sys.stdout.write(';'.join([sysconfig.PREFIX,sysconfig.EXEC_PREFIX,sysconfig.BASE_EXEC_PREFIX]))\nexcept Exception:\n   import sysconfig\n   sys.stdout.write(';'.join([sysconfig.get_config_var('base') or '', sysconfig.get_config_var('installed_base') or '']))"
+                       RESULT_VARIABLE _result
+                       OUTPUT_VARIABLE _values
+                       ERROR_QUIET
+                       OUTPUT_STRIP_TRAILING_WHITESPACE)
+      if (_result)
+        unset (_values)
+      else()
+        list (REMOVE_DUPLICATES _values)
+      endif()
+    elseif (NAME STREQUAL "INCLUDES")
+      if (WIN32)
+        set (_scheme "nt")
+      else()
+        set (_scheme "posix_prefix")
+      endif()
+      execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
+                               "import sys\ntry:\n   from distutils import sysconfig\n   sys.stdout.write(';'.join([sysconfig.get_python_inc(plat_specific=True),sysconfig.get_python_inc(plat_specific=False)]))\nexcept Exception:\n   import sysconfig\n   sys.stdout.write(';'.join([sysconfig.get_path('platinclude'),sysconfig.get_path('platinclude','${_scheme}'),sysconfig.get_path('include'),sysconfig.get_path('include','${_scheme}')]))"
+                       RESULT_VARIABLE _result
+                       OUTPUT_VARIABLE _values
+                       ERROR_QUIET
+                       OUTPUT_STRIP_TRAILING_WHITESPACE)
+      if (_result)
+        unset (_values)
+      else()
+        list (REMOVE_DUPLICATES _values)
+      endif()
+    elseif (NAME STREQUAL "SOABI")
+      execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
+                               "import sys\ntry:\n   from distutils import sysconfig\n   sys.stdout.write(';'.join([sysconfig.get_config_var('SOABI') or '',sysconfig.get_config_var('EXT_SUFFIX') or '',sysconfig.get_config_var('SO') or '']))\nexcept Exception:\n   import sysconfig;sys.stdout.write(';'.join([sysconfig.get_config_var('SOABI') or '',sysconfig.get_config_var('EXT_SUFFIX') or '',sysconfig.get_config_var('SO') or '']))"
+                       RESULT_VARIABLE _result
+                       OUTPUT_VARIABLE _soabi
+                       ERROR_QUIET
+                       OUTPUT_STRIP_TRAILING_WHITESPACE)
+      if (_result)
+        unset (_values)
+      else()
+        foreach (_item IN LISTS _soabi)
+          if (_item)
+            set (_values "${_item}")
+            break()
+          endif()
+        endforeach()
+        if (_values)
+          # clean-up: remove prefix character and suffix
+          if (_values MATCHES "^(\\.${CMAKE_SHARED_LIBRARY_SUFFIX}|\\.so|\\.pyd)$")
+            set(_values "")
+          else()
+            string (REGEX REPLACE "^[.-](.+)(${CMAKE_SHARED_LIBRARY_SUFFIX}|\\.(so|pyd))$" "\\1" _values "${_values}")
+          endif()
+        endif()
+      endif()
+    else()
+      set (config_flag "${NAME}")
+      if (NAME STREQUAL "CONFIGDIR")
+        set (config_flag "LIBPL")
+      endif()
+      execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
+                               "import sys\ntry:\n   from distutils import sysconfig\n   sys.stdout.write(sysconfig.get_config_var('${config_flag}'))\nexcept Exception:\n   import sysconfig\n   sys.stdout.write(sysconfig.get_config_var('${config_flag}'))"
+                       RESULT_VARIABLE _result
+                       OUTPUT_VARIABLE _values
+                       ERROR_QUIET
+                       OUTPUT_STRIP_TRAILING_WHITESPACE)
+      if (_result)
+        unset (_values)
+      endif()
+    endif()
+  endif()
+
+  if (NAME STREQUAL "ABIFLAGS" OR NAME STREQUAL "SOABI")
+    set (${_PYTHON_PGCV_VALUE} "${_values}" PARENT_SCOPE)
+    return()
+  endif()
+
+  if (NOT _values OR _values STREQUAL "None")
+    return()
+  endif()
+
+  if (NAME STREQUAL "LIBS")
+    # do some clean-up
+    string (REGEX MATCHALL "-(l|framework)[ ]*[^ ]+" _values "${_values}")
+    # remove elements relative to python library itself
+    list (FILTER _values EXCLUDE REGEX "-lpython")
+    list (REMOVE_DUPLICATES _values)
+  endif()
+
+  if (WIN32 AND NAME MATCHES "^(PREFIX|CONFIGDIR|INCLUDES)$")
+    file (TO_CMAKE_PATH "${_values}" _values)
+  endif()
+
+  set (${_PYTHON_PGCV_VALUE} "${_values}" PARENT_SCOPE)
+endfunction()
+
+function (_PYTHON_GET_VERSION)
+  cmake_parse_arguments (PARSE_ARGV 0 _PGV "LIBRARY;INCLUDE" "PREFIX" "")
+
+  unset (${_PGV_PREFIX}VERSION PARENT_SCOPE)
+  unset (${_PGV_PREFIX}VERSION_MAJOR PARENT_SCOPE)
+  unset (${_PGV_PREFIX}VERSION_MINOR PARENT_SCOPE)
+  unset (${_PGV_PREFIX}VERSION_PATCH PARENT_SCOPE)
+  unset (${_PGV_PREFIX}ABI PARENT_SCOPE)
+
+  if (_PGV_LIBRARY)
+    # retrieve version and abi from library name
+    if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+      get_filename_component (library_name "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}" NAME)
+      # extract version from library name
+      if (library_name MATCHES "python([23])([0-9]+)")
+        set (${_PGV_PREFIX}VERSION_MAJOR "${CMAKE_MATCH_1}" PARENT_SCOPE)
+        set (${_PGV_PREFIX}VERSION_MINOR "${CMAKE_MATCH_2}" PARENT_SCOPE)
+        set (${_PGV_PREFIX}VERSION "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}" PARENT_SCOPE)
+        set (${_PGV_PREFIX}ABI "" PARENT_SCOPE)
+      elseif (library_name MATCHES "python([23])\\.([0-9]+)([dmu]*)")
+        set (${_PGV_PREFIX}VERSION_MAJOR "${CMAKE_MATCH_1}" PARENT_SCOPE)
+        set (${_PGV_PREFIX}VERSION_MINOR "${CMAKE_MATCH_2}" PARENT_SCOPE)
+        set (${_PGV_PREFIX}VERSION "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}" PARENT_SCOPE)
+        set (${_PGV_PREFIX}ABI "${CMAKE_MATCH_3}" PARENT_SCOPE)
+      elseif (library_name MATCHES "pypy(3)?-c")
+        set (version "${CMAKE_MATCH_1}")
+        if (version EQUAL "3")
+          set (${_PGV_PREFIX}VERSION_MAJOR "3" PARENT_SCOPE)
+          set (${_PGV_PREFIX}VERSION "3" PARENT_SCOPE)
+        else()
+          set (${_PGV_PREFIX}VERSION_MAJOR "2" PARENT_SCOPE)
+          set (${_PGV_PREFIX}VERSION "2" PARENT_SCOPE)
+        endif()
+        set (${_PGV_PREFIX}ABI "" PARENT_SCOPE)
+      endif()
+    endif()
+  else()
+    if (_${_PYTHON_PREFIX}_INCLUDE_DIR)
+      # retrieve version from header file
+      file (STRINGS "${_${_PYTHON_PREFIX}_INCLUDE_DIR}/patchlevel.h" version
+            REGEX "^#define[ \t]+PY_VERSION[ \t]+\"[^\"]+\"")
+      string (REGEX REPLACE "^#define[ \t]+PY_VERSION[ \t]+\"([^\"]+)\".*" "\\1"
+                            version "${version}")
+      string (REGEX MATCHALL "[0-9]+" versions "${version}")
+      list (GET versions 0 version_major)
+      list (GET versions 1 version_minor)
+      list (GET versions 2 version_patch)
+
+      set (${_PGV_PREFIX}VERSION "${version_major}.${version_minor}.${version_patch}" PARENT_SCOPE)
+      set (${_PGV_PREFIX}VERSION_MAJOR ${version_major} PARENT_SCOPE)
+      set (${_PGV_PREFIX}VERSION_MINOR ${version_minor} PARENT_SCOPE)
+      set (${_PGV_PREFIX}VERSION_PATCH ${version_patch} PARENT_SCOPE)
+
+      # compute ABI flags
+      if (version_major VERSION_GREATER "2")
+        file (STRINGS "${_${_PYTHON_PREFIX}_INCLUDE_DIR}/pyconfig.h" config REGEX "(Py_DEBUG|WITH_PYMALLOC|Py_UNICODE_SIZE|MS_WIN32)")
+        set (abi)
+        if (config MATCHES "#[ ]*define[ ]+MS_WIN32")
+          # ABI not used on Windows
+          set (abi "")
+        else()
+          if (NOT config)
+            # pyconfig.h can be a wrapper to a platform specific pyconfig.h
+            # In this case, try to identify ABI from include directory
+            if (_${_PYTHON_PREFIX}_INCLUDE_DIR MATCHES "python${version_major}\\.${version_minor}+([dmu]*)")
+              set (abi "${CMAKE_MATCH_1}")
+            else()
+              set (abi "")
+            endif()
+          else()
+            if (config MATCHES "#[ ]*define[ ]+Py_DEBUG[ ]+1")
+              string (APPEND abi "d")
+            endif()
+            if (config MATCHES "#[ ]*define[ ]+WITH_PYMALLOC[ ]+1")
+              string (APPEND abi "m")
+            endif()
+            if (config MATCHES "#[ ]*define[ ]+Py_UNICODE_SIZE[ ]+4")
+              string (APPEND abi "u")
+            endif()
+          endif()
+          set (${_PGV_PREFIX}ABI "${abi}" PARENT_SCOPE)
+        endif()
+      else()
+        # ABI not supported
+        set (${_PGV_PREFIX}ABI "" PARENT_SCOPE)
+      endif()
+    endif()
+  endif()
+endfunction()
+
+function (_PYTHON_GET_LAUNCHER _PYTHON_PGL_NAME)
+  cmake_parse_arguments (PARSE_ARGV 1 _PGL "INTERPRETER;COMPILER" "" "")
+
+  unset ({_PYTHON_PGL_NAME} PARENT_SCOPE)
+
+  if ((_PGL_INTERPRETER AND NOT _${_PYTHON_PREFIX}_EXECUTABLE)
+      OR (_PGL_COMPILER AND NOT _${_PYTHON_PREFIX}_COMPILER))
+    return()
+  endif()
+
+  if ("IronPython" IN_LIST _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS
+      AND NOT SYSTEM_NAME MATCHES "Windows|Linux")
+    if (_PGL_INTERPRETER)
+      get_filename_component (name "${_${_PYTHON_PREFIX}_EXECUTABLE}" NAME)
+      get_filename_component (ext "${_${_PYTHON_PREFIX}_EXECUTABLE}" LAST_EXT)
+      if (name IN_LIST _${_PYTHON_PREFIX}_IRON_PYTHON_INTERPRETER_NAMES
+          AND ext STREQUAL ".exe")
+        set (${_PYTHON_PGL_NAME} "${${_PYTHON_PREFIX}_DOTNET_LAUNCHER}" PARENT_SCOPE)
+      endif()
+    else()
+      get_filename_component (name "${_${_PYTHON_PREFIX}_COMPILER}" NAME)
+      get_filename_component (ext "${_${_PYTHON_PREFIX}_COMPILER}" LAST_EXT)
+      if (name IN_LIST _${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_NAMES
+          AND ext STREQUAL ".exe")
+        set (${_PYTHON_PGL_NAME} "${${_PYTHON_PREFIX}_DOTNET_LAUNCHER}" PARENT_SCOPE)
+      endif()
+    endif()
+  endif()
+endfunction()
+
+
+function (_PYTHON_VALIDATE_INTERPRETER)
+  if (NOT _${_PYTHON_PREFIX}_EXECUTABLE)
+    return()
+  endif()
+
+  cmake_parse_arguments (PARSE_ARGV 0 _PVI "IN_RANGE;EXACT;CHECK_EXISTS" "VERSION" "")
+
+  if (_PVI_CHECK_EXISTS AND NOT EXISTS "${_${_PYTHON_PREFIX}_EXECUTABLE}")
+    # interpreter does not exist anymore
+    set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Cannot find the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
+    set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND")
+    return()
+  endif()
+
+  _python_get_launcher (launcher INTERPRETER)
+
+  # validate ABI compatibility
+  if (DEFINED _${_PYTHON_PREFIX}_FIND_ABI)
+    execute_process (COMMAND ${launcher} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
+                             "import sys; sys.stdout.write(sys.abiflags)"
+                     RESULT_VARIABLE result
+                     OUTPUT_VARIABLE abi
+                     ERROR_QUIET
+                     OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if (result)
+      # assume ABI is not supported
+      set (abi "")
+    endif()
+    if (NOT abi IN_LIST _${_PYTHON_PREFIX}_ABIFLAGS)
+      # incompatible ABI
+      set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Wrong ABI for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
+      set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND")
+      return()
+    endif()
+  endif()
+
+  if (_PVI_IN_RANGE OR _PVI_VERSION)
+    # retrieve full version
+    execute_process (COMMAND ${launcher} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
+                             "import sys; sys.stdout.write('.'.join([str(x) for x in sys.version_info[:3]]))"
+                     RESULT_VARIABLE result
+                     OUTPUT_VARIABLE version
+                     ERROR_QUIET
+                     OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if (result)
+      # interpreter is not usable
+      set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Cannot use the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
+      set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND")
+      return()
+    endif()
+
+    if (_PVI_VERSION)
+      # check against specified version
+      ## compute number of components for version
+      string (REGEX REPLACE "[^.]" "" dots "${_PVI_VERSION}")
+      ## add one dot because there is one dot less than there are components
+      string (LENGTH "${dots}." count)
+      if (count GREATER 3)
+        set (count 3)
+      endif()
+      set (version_regex "^[0-9]+")
+      if (count EQUAL 3)
+        string (APPEND version_regex "\\.[0-9]+\\.[0-9]+")
+      elseif (count EQUAL 2)
+        string (APPEND version_regex "\\.[0-9]+")
+      endif()
+      # extract needed range
+      string (REGEX MATCH "${version_regex}" version "${version}")
+
+      if (_PVI_EXACT AND NOT version VERSION_EQUAL _PVI_VERSION)
+        # interpreter has wrong version
+        set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Wrong version for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
+        set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND")
+        return()
+      else()
+        # check that version is OK
+        string(REGEX REPLACE "^([0-9]+)\\.?.*$" "\\1" major_version "${version}")
+        string(REGEX REPLACE "^([0-9]+)\\.?.*$" "\\1" expected_major_version "${_PVI_VERSION}")
+        if (NOT major_version VERSION_EQUAL expected_major_version
+            OR NOT version VERSION_GREATER_EQUAL _PVI_VERSION)
+          set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Wrong version for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
+          set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND")
+          return()
+        endif()
+      endif()
+    endif()
+
+    if (_PVI_IN_RANGE)
+      # check if version is in the requested range
+      find_package_check_version ("${version}" in_range HANDLE_VERSION_RANGE)
+      if (NOT in_range)
+        # interpreter has invalid version
+        set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Wrong version for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
+        set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND")
+        return()
+      endif()
+    endif()
+  else()
+    get_filename_component (python_name "${_${_PYTHON_PREFIX}_EXECUTABLE}" NAME)
+    if (NOT python_name STREQUAL "python${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}${CMAKE_EXECUTABLE_SUFFIX}")
+      # executable found do not have version in name
+      # ensure major version is OK
+      execute_process (COMMAND ${launcher} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
+                               "import sys; sys.stdout.write(str(sys.version_info[0]))"
+                       RESULT_VARIABLE result
+                       OUTPUT_VARIABLE version
+                       ERROR_QUIET
+                       OUTPUT_STRIP_TRAILING_WHITESPACE)
+      if (result OR NOT version EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
+        # interpreter not usable or has wrong major version
+        if (result)
+          set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Cannot use the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
+        else()
+          set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Wrong major version for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
+        endif()
+        set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND")
+        return()
+      endif()
+    endif()
+  endif()
+
+  if (CMAKE_SIZEOF_VOID_P AND ("Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
+        OR "Development.Embed" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
+      AND NOT CMAKE_CROSSCOMPILING)
+    # In this case, interpreter must have same architecture as environment
+    execute_process (COMMAND ${launcher} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
+                             "import sys, struct; sys.stdout.write(str(struct.calcsize(\"P\")))"
+                     RESULT_VARIABLE result
+                     OUTPUT_VARIABLE size
+                     ERROR_QUIET
+                     OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if (result OR NOT size EQUAL CMAKE_SIZEOF_VOID_P)
+      # interpreter not usable or has wrong architecture
+      if (result)
+        set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Cannot use the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
+      else()
+        set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Wrong architecture for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"" PARENT_SCOPE)
+      endif()
+      set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND")
+      return()
+    endif()
+  endif()
+endfunction()
+
+
+function (_PYTHON_VALIDATE_COMPILER)
+  if (NOT _${_PYTHON_PREFIX}_COMPILER)
+    return()
+  endif()
+
+  cmake_parse_arguments (PARSE_ARGV 0 _PVC "IN_RANGE;EXACT;CHECK_EXISTS" "VERSION" "")
+
+  if (_PVC_CHECK_EXISTS AND NOT EXISTS "${_${_PYTHON_PREFIX}_COMPILER}")
+    # Compiler does not exist anymore
+    set (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE "Cannot find the compiler \"${_${_PYTHON_PREFIX}_COMPILER}\"" PARENT_SCOPE)
+    set_property (CACHE _${_PYTHON_PREFIX}_COMPILER PROPERTY VALUE "${_PYTHON_PREFIX}_COMPILER-NOTFOUND")
+    return()
+  endif()
+
+  _python_get_launcher (launcher COMPILER)
+
+  # retrieve python environment version from compiler
+  set (working_dir "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/PythonCompilerVersion.dir")
+  file (WRITE "${working_dir}/version.py" "import sys; sys.stdout.write('.'.join([str(x) for x in sys.version_info[:3]]))\n")
+  execute_process (COMMAND ${launcher} "${_${_PYTHON_PREFIX}_COMPILER}"
+                           ${_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_ARCH_FLAGS}
+                           /target:exe /embed "${working_dir}/version.py"
+                   WORKING_DIRECTORY "${working_dir}"
+                   OUTPUT_QUIET
+                   ERROR_QUIET
+                   OUTPUT_STRIP_TRAILING_WHITESPACE)
+  get_filename_component (ir_dir "${_${_PYTHON_PREFIX}_COMPILER}" DIRECTORY)
+  execute_process (COMMAND "${CMAKE_COMMAND}" -E env "MONO_PATH=${ir_dir}"
+                                              ${${_PYTHON_PREFIX}_DOTNET_LAUNCHER} "${working_dir}/version.exe"
+                   WORKING_DIRECTORY "${working_dir}"
+                   RESULT_VARIABLE result
+                   OUTPUT_VARIABLE version
+                   ERROR_QUIET)
+  file (REMOVE_RECURSE "${working_dir}")
+  if (result)
+    # compiler is not usable
+    set (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE "Cannot use the compiler \"${_${_PYTHON_PREFIX}_COMPILER}\"" PARENT_SCOPE)
+    set_property (CACHE _${_PYTHON_PREFIX}_COMPILER PROPERTY VALUE "${_PYTHON_PREFIX}_COMPILER-NOTFOUND")
+    return()
+  endif()
+
+  if (_PVC_VERSION OR _PVC_IN_RANGE)
+    if (_PVC_VERSION)
+      # check against specified version
+      ## compute number of components for version
+      string (REGEX REPLACE "[^.]" "" dots "${_PVC_VERSION}")
+      ## add one dot because there is one dot less than there are components
+      string (LENGTH "${dots}." count)
+      if (count GREATER 3)
+        set (count 3)
+      endif()
+      set (version_regex "^[0-9]+")
+      if (count EQUAL 3)
+        string (APPEND version_regex "\\.[0-9]+\\.[0-9]+")
+      elseif (count EQUAL 2)
+        string (APPEND version_regex "\\.[0-9]+")
+      endif()
+      # extract needed range
+      string (REGEX MATCH "${version_regex}" version "${version}")
+
+      if (_PVC_EXACT AND NOT version VERSION_EQUAL _PVC_VERSION)
+        # interpreter has wrong version
+        set (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE "Wrong version for the compiler \"${_${_PYTHON_PREFIX}_COMPILER}\"" PARENT_SCOPE)
+        set_property (CACHE _${_PYTHON_PREFIX}_COMPILER PROPERTY VALUE "${_PYTHON_PREFIX}_COMPILER-NOTFOUND")
+        return()
+      else()
+        # check that version is OK
+        string(REGEX REPLACE "^([0-9]+)\\.?.*$" "\\1" major_version "${version}")
+        string(REGEX REPLACE "^([0-9]+)\\.?.*$" "\\1" expected_major_version "${_PVC_VERSION}")
+        if (NOT major_version VERSION_EQUAL expected_major_version
+            OR NOT version VERSION_GREATER_EQUAL _PVC_VERSION)
+          set (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE "Wrong version for the compiler \"${_${_PYTHON_PREFIX}_COMPILER}\"" PARENT_SCOPE)
+          set_property (CACHE _${_PYTHON_PREFIX}_COMPILER PROPERTY VALUE "${_PYTHON_PREFIX}_COMPILER-NOTFOUND")
+          return()
+        endif()
+      endif()
+    endif()
+
+    if (_PVC_IN_RANGE)
+      # check if version is in the requested range
+      find_package_check_version ("${version}" in_range HANDLE_VERSION_RANGE)
+      if (NOT in_range)
+        # interpreter has invalid version
+        set (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE "Wrong version for the compiler \"${_${_PYTHON_PREFIX}_COMPILER}\"" PARENT_SCOPE)
+        set_property (CACHE _${_PYTHON_PREFIX}_COMPILER PROPERTY VALUE "${_PYTHON_PREFIX}_COMPILER-NOTFOUND")
+        return()
+      endif()
+    endif()
+  else()
+    string(REGEX REPLACE "^([0-9]+)\\.?.*$" "\\1" major_version "${version}")
+    if (NOT major_version EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
+      # Compiler has wrong major version
+      set (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE "Wrong major version for the compiler \"${_${_PYTHON_PREFIX}_COMPILER}\"" PARENT_SCOPE)
+      set_property (CACHE _${_PYTHON_PREFIX}_COMPILER PROPERTY VALUE "${_PYTHON_PREFIX}_COMPILER-NOTFOUND")
+      return()
+    endif()
+  endif()
+endfunction()
+
+
+function (_PYTHON_VALIDATE_LIBRARY)
+  if (NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+    unset (_${_PYTHON_PREFIX}_LIBRARY_DEBUG)
+    return()
+  endif()
+
+  cmake_parse_arguments (PARSE_ARGV 0 _PVL "IN_RANGE;EXACT;CHECK_EXISTS" "VERSION" "")
+
+  if (_PVL_CHECK_EXISTS AND NOT EXISTS "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}")
+    # library does not exist anymore
+    set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Cannot find the library \"${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}\"" PARENT_SCOPE)
+    set_property (CACHE _${_PYTHON_PREFIX}_LIBRARY_RELEASE PROPERTY VALUE "${_PYTHON_PREFIX}_LIBRARY_RELEASE-NOTFOUND")
+    if (WIN32)
+      set_property (CACHE _${_PYTHON_PREFIX}_LIBRARY_DEBUG PROPERTY VALUE "${_PYTHON_PREFIX}_LIBRARY_DEBUG-NOTFOUND")
+    endif()
+    set_property (CACHE _${_PYTHON_PREFIX}_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_INCLUDE_DIR-NOTFOUND")
+    return()
+  endif()
+
+  # retrieve version and abi from library name
+  _python_get_version (LIBRARY PREFIX lib_)
+
+  if (DEFINED _${_PYTHON_PREFIX}_FIND_ABI AND NOT lib_ABI IN_LIST _${_PYTHON_PREFIX}_ABIFLAGS)
+    # incompatible ABI
+    set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Wrong ABI for the library \"${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}\"" PARENT_SCOPE)
+    set_property (CACHE _${_PYTHON_PREFIX}_LIBRARY_RELEASE PROPERTY VALUE "${_PYTHON_PREFIX}_LIBRARY_RELEASE-NOTFOUND")
+  else()
+    if (_PVL_VERSION OR _PVL_IN_RANGE)
+      if (_PVL_VERSION)
+        # library have only major.minor information
+        string (REGEX MATCH "[0-9](\\.[0-9]+)?" version "${_PVL_VERSION}")
+        if ((_PVL_EXACT AND NOT lib_VERSION VERSION_EQUAL version) OR (lib_VERSION VERSION_LESS version))
+          # library has wrong version
+          set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Wrong version for the library \"${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}\"" PARENT_SCOPE)
+          set_property (CACHE _${_PYTHON_PREFIX}_LIBRARY_RELEASE PROPERTY VALUE "${_PYTHON_PREFIX}_LIBRARY_RELEASE-NOTFOUND")
+        endif()
+      endif()
+
+      if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE AND _PVL_IN_RANGE)
+        # check if library version is in the requested range
+        find_package_check_version ("${lib_VERSION}" in_range HANDLE_VERSION_RANGE)
+        if (NOT in_range)
+          # library has wrong version
+          set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Wrong version for the library \"${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}\"" PARENT_SCOPE)
+          set_property (CACHE _${_PYTHON_PREFIX}_LIBRARY_RELEASE PROPERTY VALUE "${_PYTHON_PREFIX}_LIBRARY_RELEASE-NOTFOUND")
+        endif()
+      endif()
+    else()
+      if (NOT lib_VERSION_MAJOR VERSION_EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
+        # library has wrong major version
+        set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Wrong major version for the library \"${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}\"" PARENT_SCOPE)
+        set_property (CACHE _${_PYTHON_PREFIX}_LIBRARY_RELEASE PROPERTY VALUE "${_PYTHON_PREFIX}_LIBRARY_RELEASE-NOTFOUND")
+      endif()
+    endif()
+  endif()
+
+  if (NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+    if (WIN32)
+      set_property (CACHE _${_PYTHON_PREFIX}_LIBRARY_DEBUG PROPERTY VALUE "${_PYTHON_PREFIX}_LIBRARY_DEBUG-NOTFOUND")
+    endif()
+    unset (_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE CACHE)
+    unset (_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG CACHE)
+    set_property (CACHE _${_PYTHON_PREFIX}_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_INCLUDE_DIR-NOTFOUND")
+  endif()
+endfunction()
+
+
+function (_PYTHON_VALIDATE_INCLUDE_DIR)
+  if (NOT _${_PYTHON_PREFIX}_INCLUDE_DIR)
+    return()
+  endif()
+
+  cmake_parse_arguments (PARSE_ARGV 0 _PVID "IN_RANGE;EXACT;CHECK_EXISTS" "VERSION" "")
+
+  if (_PVID_CHECK_EXISTS AND NOT EXISTS "${_${_PYTHON_PREFIX}_INCLUDE_DIR}")
+    # include file does not exist anymore
+    set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Cannot find the directory \"${_${_PYTHON_PREFIX}_INCLUDE_DIR}\"" PARENT_SCOPE)
+    set_property (CACHE _${_PYTHON_PREFIX}_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_INCLUDE_DIR-NOTFOUND")
+    return()
+  endif()
+
+  # retrieve version from header file
+  _python_get_version (INCLUDE PREFIX inc_)
+
+  if (DEFINED _${_PYTHON_PREFIX}_FIND_ABI AND NOT inc_ABI IN_LIST _${_PYTHON_PREFIX}_ABIFLAGS)
+    # incompatible ABI
+    set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Wrong ABI for the directory \"${_${_PYTHON_PREFIX}_INCLUDE_DIR}\"" PARENT_SCOPE)
+    set_property (CACHE _${_PYTHON_PREFIX}_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_INCLUDE_DIR-NOTFOUND")
+  else()
+    if (_PVID_VERSION OR _PVID_IN_RANGE)
+      if (_PVID_VERSION)
+        if ((_PVID_EXACT AND NOT inc_VERSION VERSION_EQUAL expected_version) OR (inc_VERSION VERSION_LESS expected_version))
+          # include dir has wrong version
+          set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Wrong version for the directory \"${_${_PYTHON_PREFIX}_INCLUDE_DIR}\"" PARENT_SCOPE)
+          set_property (CACHE _${_PYTHON_PREFIX}_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_INCLUDE_DIR-NOTFOUND")
+        endif()
+      endif()
+
+      if (_${_PYTHON_PREFIX}_INCLUDE_DIR AND PVID_IN_RANGE)
+        # check if include dir is in the request range
+        find_package_check_version ("${inc_VERSION}" in_range HANDLE_VERSION_RANGE)
+        if (NOT in_range)
+          # include dir has wrong version
+          set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Wrong version for the directory \"${_${_PYTHON_PREFIX}_INCLUDE_DIR}\"" PARENT_SCOPE)
+          set_property (CACHE _${_PYTHON_PREFIX}_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_INCLUDE_DIR-NOTFOUND")
+        endif()
+      endif()
+    else()
+      if (NOT inc_VERSION_MAJOR VERSION_EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
+        # include dir has wrong major version
+        set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Wrong major version for the directory \"${_${_PYTHON_PREFIX}_INCLUDE_DIR}\"" PARENT_SCOPE)
+        set_property (CACHE _${_PYTHON_PREFIX}_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_INCLUDE_DIR-NOTFOUND")
+      endif()
+    endif()
+  endif()
+endfunction()
+
+
+function (_PYTHON_FIND_RUNTIME_LIBRARY _PYTHON_LIB)
+  string (REPLACE "_RUNTIME" "" _PYTHON_LIB "${_PYTHON_LIB}")
+  # look at runtime part on systems supporting it
+  if (CMAKE_SYSTEM_NAME STREQUAL "Windows" OR
+      (CMAKE_SYSTEM_NAME MATCHES "MSYS|CYGWIN"
+        AND ${_PYTHON_LIB} MATCHES "${CMAKE_IMPORT_LIBRARY_SUFFIX}$"))
+    set (CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_SHARED_LIBRARY_SUFFIX})
+    # MSYS has a special syntax for runtime libraries
+    if (CMAKE_SYSTEM_NAME MATCHES "MSYS")
+      list (APPEND CMAKE_FIND_LIBRARY_PREFIXES "msys-")
+    endif()
+    find_library (${ARGV})
+  endif()
+endfunction()
+
+
+function (_PYTHON_SET_LIBRARY_DIRS _PYTHON_SLD_RESULT)
+  unset (_PYTHON_DIRS)
+  set (_PYTHON_LIBS ${ARGN})
+  foreach (_PYTHON_LIB IN LISTS _PYTHON_LIBS)
+    if (${_PYTHON_LIB})
+      get_filename_component (_PYTHON_DIR "${${_PYTHON_LIB}}" DIRECTORY)
+      list (APPEND _PYTHON_DIRS "${_PYTHON_DIR}")
+    endif()
+  endforeach()
+  list (REMOVE_DUPLICATES _PYTHON_DIRS)
+  set (${_PYTHON_SLD_RESULT} ${_PYTHON_DIRS} PARENT_SCOPE)
+endfunction()
+
+
+function (_PYTHON_SET_DEVELOPMENT_MODULE_FOUND module)
+  if ("Development.${module}" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
+    string(TOUPPER "${module}" id)
+    set (module_found TRUE)
+
+    if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS
+        AND NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+      set (module_found FALSE)
+    endif()
+    if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS
+        AND NOT _${_PYTHON_PREFIX}_INCLUDE_DIR)
+      set (module_found FALSE)
+    endif()
+
+    set (${_PYTHON_PREFIX}_Development.${module}_FOUND ${module_found} PARENT_SCOPE)
+  endif()
+endfunction()
+
+
+if (${_PYTHON_PREFIX}_FIND_VERSION_RANGE)
+  # range must include internal major version
+  if (${_PYTHON_PREFIX}_FIND_VERSION_MIN_MAJOR VERSION_GREATER _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR
+      OR ((${_PYTHON_PREFIX}_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE"
+          AND ${_PYTHON_PREFIX}_FIND_VERSION_MAX VERSION_LESS _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
+        OR (${_PYTHON_PREFIX}_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE"
+          AND ${_PYTHON_PREFIX}_FIND_VERSION_MAX VERSION_LESS_EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)))
+    _python_display_failure ("Could NOT find ${_PYTHON_PREFIX}: Wrong version range specified is \"${${_PYTHON_PREFIX}_FIND_VERSION_RANGE}\", but expected version range must include major version \"${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}\"")
+
+    cmake_policy(POP)
+    return()
+  endif()
+else()
+  if (DEFINED ${_PYTHON_PREFIX}_FIND_VERSION_MAJOR
+      AND NOT ${_PYTHON_PREFIX}_FIND_VERSION_MAJOR VERSION_EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
+    # If major version is specified, it must be the same as internal major version
+    _python_display_failure ("Could NOT find ${_PYTHON_PREFIX}: Wrong major version specified is \"${${_PYTHON_PREFIX}_FIND_VERSION_MAJOR}\", but expected major version is \"${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}\"")
+
+    cmake_policy(POP)
+    return()
+  endif()
+endif()
+
+
+# handle components
+if (NOT ${_PYTHON_PREFIX}_FIND_COMPONENTS)
+  set (${_PYTHON_PREFIX}_FIND_COMPONENTS Interpreter)
+  set (${_PYTHON_PREFIX}_FIND_REQUIRED_Interpreter TRUE)
+endif()
+if ("NumPy" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
+  list (APPEND ${_PYTHON_PREFIX}_FIND_COMPONENTS "Interpreter" "Development.Module")
+endif()
+if ("Development" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
+  list (APPEND ${_PYTHON_PREFIX}_FIND_COMPONENTS "Development.Module" "Development.Embed")
+endif()
+list (REMOVE_DUPLICATES ${_PYTHON_PREFIX}_FIND_COMPONENTS)
+foreach (_${_PYTHON_PREFIX}_COMPONENT IN ITEMS Interpreter Compiler Development Development.Module Development.Embed NumPy)
+  set (${_PYTHON_PREFIX}_${_${_PYTHON_PREFIX}_COMPONENT}_FOUND FALSE)
+endforeach()
+if (${_PYTHON_PREFIX}_FIND_REQUIRED_Development)
+  set (${_PYTHON_PREFIX}_FIND_REQUIRED_Development.Module TRUE)
+  set (${_PYTHON_PREFIX}_FIND_REQUIRED_Development.Embed TRUE)
+endif()
+
+unset (_${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
+unset (_${_PYTHON_PREFIX}_FIND_DEVELOPMENT_MODULE_ARTIFACTS)
+unset (_${_PYTHON_PREFIX}_FIND_DEVELOPMENT_EMBED_ARTIFACTS)
+if ("Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
+  if (CMAKE_SYSTEM_NAME MATCHES "^(Windows.*|CYGWIN|MSYS)$")
+    list (APPEND _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_MODULE_ARTIFACTS "LIBRARY")
+  endif()
+  list (APPEND _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_MODULE_ARTIFACTS "INCLUDE_DIR")
+endif()
+if ("Development.Embed" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
+  list (APPEND _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_EMBED_ARTIFACTS "LIBRARY" "INCLUDE_DIR")
+endif()
+set (_${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS ${_${_PYTHON_PREFIX}_FIND_DEVELOPMENT_MODULE_ARTIFACTS} ${_${_PYTHON_PREFIX}_FIND_DEVELOPMENT_EMBED_ARTIFACTS})
+list (REMOVE_DUPLICATES _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
+
+# Set versions to search
+## default: search any version
+set (_${_PYTHON_PREFIX}_FIND_VERSIONS ${_${_PYTHON_PREFIX}_VERSIONS})
+unset (_${_PYTHON_PREFIX}_FIND_VERSION_EXACT)
+
+if (${_PYTHON_PREFIX}_FIND_VERSION_RANGE)
+  unset (_${_PYTHON_PREFIX}_FIND_VERSIONS)
+  foreach (_${_PYTHON_PREFIX}_VERSION IN LISTS _${_PYTHON_PREFIX}_VERSIONS)
+    if ((${_PYTHON_PREFIX}_FIND_VERSION_RANGE_MIN STREQUAL "INCLUDE"
+          AND _${_PYTHON_PREFIX}_VERSION VERSION_GREATER_EQUAL ${_PYTHON_PREFIX}_FIND_VERSION_MIN)
+        AND ((${_PYTHON_PREFIX}_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE"
+            AND _${_PYTHON_PREFIX}_VERSION VERSION_LESS_EQUAL ${_PYTHON_PREFIX}_FIND_VERSION_MAX)
+          OR (${_PYTHON_PREFIX}_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE"
+            AND _${_PYTHON_PREFIX}_VERSION VERSION_LESS ${_PYTHON_PREFIX}_FIND_VERSION_MAX)))
+      list (APPEND _${_PYTHON_PREFIX}_FIND_VERSIONS ${_${_PYTHON_PREFIX}_VERSION})
+    endif()
+  endforeach()
+else()
+  if (${_PYTHON_PREFIX}_FIND_VERSION_COUNT GREATER 1)
+    if (${_PYTHON_PREFIX}_FIND_VERSION_EXACT)
+      set (_${_PYTHON_PREFIX}_FIND_VERSION_EXACT "EXACT")
+      set (_${_PYTHON_PREFIX}_FIND_VERSIONS ${${_PYTHON_PREFIX}_FIND_VERSION_MAJOR}.${${_PYTHON_PREFIX}_FIND_VERSION_MINOR})
+    else()
+      unset (_${_PYTHON_PREFIX}_FIND_VERSIONS)
+      # add all compatible versions
+      foreach (_${_PYTHON_PREFIX}_VERSION IN LISTS _${_PYTHON_PREFIX}_VERSIONS)
+        if (_${_PYTHON_PREFIX}_VERSION VERSION_GREATER_EQUAL "${${_PYTHON_PREFIX}_FIND_VERSION_MAJOR}.${${_PYTHON_PREFIX}_FIND_VERSION_MINOR}")
+          list (APPEND _${_PYTHON_PREFIX}_FIND_VERSIONS ${_${_PYTHON_PREFIX}_VERSION})
+        endif()
+      endforeach()
+    endif()
+  endif()
+endif()
+
+# Set ABIs to search
+## default: search any ABI
+if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR VERSION_LESS "3")
+  # ABI not supported
+  unset (_${_PYTHON_PREFIX}_FIND_ABI)
+  set (_${_PYTHON_PREFIX}_ABIFLAGS "")
+else()
+  unset (_${_PYTHON_PREFIX}_FIND_ABI)
+  unset (_${_PYTHON_PREFIX}_ABIFLAGS)
+  if (DEFINED ${_PYTHON_PREFIX}_FIND_ABI)
+    # normalization
+    string (TOUPPER "${${_PYTHON_PREFIX}_FIND_ABI}" _${_PYTHON_PREFIX}_FIND_ABI)
+    list (TRANSFORM _${_PYTHON_PREFIX}_FIND_ABI REPLACE "^(TRUE|Y(ES)?|1)$" "ON")
+    list (TRANSFORM _${_PYTHON_PREFIX}_FIND_ABI REPLACE "^(FALSE|N(O)?|0)$" "OFF")
+    if (NOT _${_PYTHON_PREFIX}_FIND_ABI MATCHES "^(ON|OFF|ANY);(ON|OFF|ANY);(ON|OFF|ANY)$")
+      message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${${_PYTHON_PREFIX}_FIND_ABI}: invalid value for '${_PYTHON_PREFIX}_FIND_ABI'. Ignore it")
+      unset (_${_PYTHON_PREFIX}_FIND_ABI)
+    endif()
+    _python_get_abiflags (_${_PYTHON_PREFIX}_ABIFLAGS)
+  endif()
+endif()
+unset (${_PYTHON_PREFIX}_SOABI)
+
+# Define lookup strategy
+cmake_policy (GET CMP0094 _${_PYTHON_PREFIX}_LOOKUP_POLICY)
+if (_${_PYTHON_PREFIX}_LOOKUP_POLICY STREQUAL "NEW")
+  set (_${_PYTHON_PREFIX}_FIND_STRATEGY "LOCATION")
+else()
+  set (_${_PYTHON_PREFIX}_FIND_STRATEGY "VERSION")
+endif()
+if (DEFINED ${_PYTHON_PREFIX}_FIND_STRATEGY)
+  if (NOT ${_PYTHON_PREFIX}_FIND_STRATEGY MATCHES "^(VERSION|LOCATION)$")
+    message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${${_PYTHON_PREFIX}_FIND_STRATEGY}: invalid value for '${_PYTHON_PREFIX}_FIND_STRATEGY'. 'VERSION' or 'LOCATION' expected.")
+    set (_${_PYTHON_PREFIX}_FIND_STRATEGY "VERSION")
+  else()
+    set (_${_PYTHON_PREFIX}_FIND_STRATEGY "${${_PYTHON_PREFIX}_FIND_STRATEGY}")
+  endif()
+endif()
+
+# Python and Anaconda distributions: define which architectures can be used
+if (CMAKE_SIZEOF_VOID_P)
+  # In this case, search only for 64bit or 32bit
+  math (EXPR _${_PYTHON_PREFIX}_ARCH "${CMAKE_SIZEOF_VOID_P} * 8")
+  set (_${_PYTHON_PREFIX}_ARCH2 ${_${_PYTHON_PREFIX}_ARCH})
+else()
+  # architecture unknown, search for both 64bit and 32bit
+  set (_${_PYTHON_PREFIX}_ARCH 64)
+  set (_${_PYTHON_PREFIX}_ARCH2 32)
+endif()
+
+# IronPython support
+unset (_${_PYTHON_PREFIX}_IRON_PYTHON_INTERPRETER_NAMES)
+unset (_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_NAMES)
+unset (_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_ARCH_FLAGS)
+if (CMAKE_SIZEOF_VOID_P)
+  if (_${_PYTHON_PREFIX}_ARCH EQUAL "32")
+    set (_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_ARCH_FLAGS "/platform:x86")
+  else()
+    set (_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_ARCH_FLAGS "/platform:x64")
+  endif()
+endif()
+if (NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
+  # Do not use wrapper script on Linux because it is buggy: -c interpreter option cannot be used
+  list (APPEND _${_PYTHON_PREFIX}_IRON_PYTHON_INTERPRETER_NAMES "ipy${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}" "ipy64" "ipy32" "ipy")
+  list (APPEND _${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_NAMES "ipyc")
+endif()
+list (APPEND _${_PYTHON_PREFIX}_IRON_PYTHON_INTERPRETER_NAMES "ipy.exe")
+list (APPEND _${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_NAMES "ipyc.exe")
+set (_${_PYTHON_PREFIX}_IRON_PYTHON_PATH_SUFFIXES net45 net40 bin)
+
+# PyPy support
+if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL "3")
+  set (_${_PYTHON_PREFIX}_PYPY_NAMES pypy3)
+  set (_${_PYTHON_PREFIX}_PYPY_LIB_NAMES pypy3-c)
+  if (WIN32)
+    # special name for runtime part
+    list (APPEND _${_PYTHON_PREFIX}_PYPY_LIB_NAMES libpypy3-c)
+  endif()
+  set (_${_PYTHON_PREFIX}_PYPY_INCLUDE_PATH_SUFFIXES lib/pypy3)
+else()
+  set (_${_PYTHON_PREFIX}_PYPY_NAMES pypy)
+  set (_${_PYTHON_PREFIX}_PYPY_LIB_NAMES pypy-c)
+  if (WIN32)
+    # special name for runtime part
+    list (APPEND _${_PYTHON_PREFIX}_PYPY_LIB_NAMES libpypy-c)
+  endif()
+  set (_${_PYTHON_PREFIX}_PYPY_INCLUDE_PATH_SUFFIXES lib/pypy)
+endif()
+set (_${_PYTHON_PREFIX}_PYPY_EXECUTABLE_PATH_SUFFIXES bin)
+set (_${_PYTHON_PREFIX}_PYPY_LIBRARY_PATH_SUFFIXES lib libs bin)
+list (APPEND _${_PYTHON_PREFIX}_PYPY_INCLUDE_PATH_SUFFIXES include)
+
+# Python Implementations handling
+unset (_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS)
+if (DEFINED ${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS)
+  foreach (_${_PYTHON_PREFIX}_IMPLEMENTATION IN LISTS ${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS)
+    if (NOT _${_PYTHON_PREFIX}_IMPLEMENTATION MATCHES "^(CPython|IronPython|PyPy)$")
+      message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${_${_PYTHON_PREFIX}_IMPLEMENTATION}: invalid value for '${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS'. 'CPython', 'IronPython' or 'PyPy' expected. Value will be ignored.")
+    else()
+      list (APPEND _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS ${_${_PYTHON_PREFIX}_IMPLEMENTATION})
+    endif()
+  endforeach()
+else()
+  if (WIN32)
+    set (_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS CPython IronPython)
+  else()
+    set (_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS CPython)
+  endif()
+endif()
+
+# compute list of names for header file
+unset (_${_PYTHON_PREFIX}_INCLUDE_NAMES)
+foreach (_${_PYTHON_PREFIX}_IMPLEMENTATION IN LISTS _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS)
+  if (_${_PYTHON_PREFIX}_IMPLEMENTATION STREQUAL "CPython")
+    list (APPEND _${_PYTHON_PREFIX}_INCLUDE_NAMES "Python.h")
+  elseif (_${_PYTHON_PREFIX}_IMPLEMENTATION STREQUAL "PyPy")
+    list (APPEND _${_PYTHON_PREFIX}_INCLUDE_NAMES "PyPy.h")
+  endif()
+endforeach()
+
+
+# Apple frameworks handling
+_python_find_frameworks ()
+
+set (_${_PYTHON_PREFIX}_FIND_FRAMEWORK "FIRST")
+
+if (DEFINED ${_PYTHON_PREFIX}_FIND_FRAMEWORK)
+  if (NOT ${_PYTHON_PREFIX}_FIND_FRAMEWORK MATCHES "^(FIRST|LAST|NEVER)$")
+    message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${${_PYTHON_PREFIX}_FIND_FRAMEWORK}: invalid value for '${_PYTHON_PREFIX}_FIND_FRAMEWORK'. 'FIRST', 'LAST' or 'NEVER' expected. 'FIRST' will be used instead.")
+  else()
+    set (_${_PYTHON_PREFIX}_FIND_FRAMEWORK ${${_PYTHON_PREFIX}_FIND_FRAMEWORK})
+  endif()
+elseif (DEFINED CMAKE_FIND_FRAMEWORK)
+  if (CMAKE_FIND_FRAMEWORK STREQUAL "ONLY")
+    message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: CMAKE_FIND_FRAMEWORK: 'ONLY' value is not supported. 'FIRST' will be used instead.")
+  elseif (NOT CMAKE_FIND_FRAMEWORK MATCHES "^(FIRST|LAST|NEVER)$")
+    message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${CMAKE_FIND_FRAMEWORK}: invalid value for 'CMAKE_FIND_FRAMEWORK'. 'FIRST', 'LAST' or 'NEVER' expected. 'FIRST' will be used instead.")
+  else()
+    set (_${_PYTHON_PREFIX}_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK})
+  endif()
+endif()
+
+# Save CMAKE_FIND_APPBUNDLE
+if (DEFINED CMAKE_FIND_APPBUNDLE)
+  set (_${_PYTHON_PREFIX}_CMAKE_FIND_APPBUNDLE ${CMAKE_FIND_APPBUNDLE})
+else()
+  unset (_${_PYTHON_PREFIX}_CMAKE_FIND_APPBUNDLE)
+endif()
+# To avoid app bundle lookup
+set (CMAKE_FIND_APPBUNDLE "NEVER")
+
+# Save CMAKE_FIND_FRAMEWORK
+if (DEFINED CMAKE_FIND_FRAMEWORK)
+  set (_${_PYTHON_PREFIX}_CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK})
+else()
+  unset (_${_PYTHON_PREFIX}_CMAKE_FIND_FRAMEWORK)
+endif()
+# To avoid framework lookup
+set (CMAKE_FIND_FRAMEWORK "NEVER")
+
+# Windows Registry handling
+if (DEFINED ${_PYTHON_PREFIX}_FIND_REGISTRY)
+  if (NOT ${_PYTHON_PREFIX}_FIND_REGISTRY MATCHES "^(FIRST|LAST|NEVER)$")
+    message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${${_PYTHON_PREFIX}_FIND_REGISTRY}: invalid value for '${_PYTHON_PREFIX}_FIND_REGISTRY'. 'FIRST', 'LAST' or 'NEVER' expected. 'FIRST' will be used instead.")
+    set (_${_PYTHON_PREFIX}_FIND_REGISTRY "FIRST")
+  else()
+    set (_${_PYTHON_PREFIX}_FIND_REGISTRY ${${_PYTHON_PREFIX}_FIND_REGISTRY})
+  endif()
+else()
+  set (_${_PYTHON_PREFIX}_FIND_REGISTRY "FIRST")
+endif()
+
+# virtual environments recognition
+if (DEFINED ENV{VIRTUAL_ENV} OR DEFINED ENV{CONDA_PREFIX})
+  if (DEFINED ${_PYTHON_PREFIX}_FIND_VIRTUALENV)
+    if (NOT ${_PYTHON_PREFIX}_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY|STANDARD)$")
+      message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${${_PYTHON_PREFIX}_FIND_VIRTUALENV}: invalid value for '${_PYTHON_PREFIX}_FIND_VIRTUALENV'. 'FIRST', 'ONLY' or 'STANDARD' expected. 'FIRST' will be used instead.")
+      set (_${_PYTHON_PREFIX}_FIND_VIRTUALENV "FIRST")
+    else()
+      set (_${_PYTHON_PREFIX}_FIND_VIRTUALENV ${${_PYTHON_PREFIX}_FIND_VIRTUALENV})
+    endif()
+  else()
+    set (_${_PYTHON_PREFIX}_FIND_VIRTUALENV FIRST)
+  endif()
+else()
+  set (_${_PYTHON_PREFIX}_FIND_VIRTUALENV STANDARD)
+endif()
+
+
+# Python naming handling
+if (DEFINED ${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES)
+  if (NOT ${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES MATCHES "^(FIRST|LAST|NEVER)$")
+    message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${_${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES}: invalid value for '${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES'. 'FIRST', 'LAST' or 'NEVER' expected. 'LAST' will be used instead.")
+    set (_${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES LAST)
+  else()
+    set (_${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES ${${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES})
+  endif()
+else()
+  set (_${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES LAST)
+endif()
+
+
+# Compute search signature
+# This signature will be used to check validity of cached variables on new search
+set (_${_PYTHON_PREFIX}_SIGNATURE "${${_PYTHON_PREFIX}_ROOT_DIR}:${_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS}:${_${_PYTHON_PREFIX}_FIND_STRATEGY}:${${_PYTHON_PREFIX}_FIND_VIRTUALENV}${_${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES}")
+if (NOT WIN32)
+  string (APPEND _${_PYTHON_PREFIX}_SIGNATURE ":${${_PYTHON_PREFIX}_USE_STATIC_LIBS}:")
+endif()
+if (CMAKE_HOST_APPLE)
+  string (APPEND _${_PYTHON_PREFIX}_SIGNATURE ":${_${_PYTHON_PREFIX}_FIND_FRAMEWORK}")
+endif()
+if (CMAKE_HOST_WIN32)
+  string (APPEND _${_PYTHON_PREFIX}_SIGNATURE ":${_${_PYTHON_PREFIX}_FIND_REGISTRY}")
+endif()
+
+function (_PYTHON_CHECK_DEVELOPMENT_SIGNATURE module)
+  if ("Development.${module}" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
+    string (TOUPPER "${module}" id)
+    set (signature "${_${_PYTHON_PREFIX}_SIGNATURE}:")
+    if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS)
+      list (APPEND signature "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}:")
+    endif()
+    if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS)
+      list (APPEND signature "${_${_PYTHON_PREFIX}_INCLUDE_DIR}:")
+    endif()
+    string (MD5 signature "${signature}")
+    if (signature STREQUAL _${_PYTHON_PREFIX}_DEVELOPMENT_${id}_SIGNATURE)
+      if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS)
+        if (${_PYTHON_PREFIX}_FIND_VERSION_EXACT)
+          _python_validate_library (VERSION ${${_PYTHON_PREFIX}_FIND_VERSION} EXACT CHECK_EXISTS)
+        elseif (${_PYTHON_PREFIX}_FIND_VERSION_RANGE)
+          _python_validate_library (IN_RANGE CHECK_EXISTS)
+        elseif (DEFINED ${_PYTHON_PREFIX}_FIND_VERSION)
+          _python_validate_library (VERSION ${${_PYTHON_PREFIX}_FIND_VERSION} CHECK_EXISTS)
+        else()
+          _python_validate_library (CHECK_EXISTS)
+        endif()
+      endif()
+      if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS)
+        if (${_PYTHON_PREFIX}_FIND_VERSION_EXACT)
+          _python_validate_include_dir (VERSION ${${_PYTHON_PREFIX}_FIND_VERSION} EXACT CHECK_EXISTS)
+        elseif (${_PYTHON_PREFIX}_FIND_VERSION_RANGE)
+          _python_validate_include_dir (IN_RANGE CHECK_EXISTS)
+        elseif (${_PYTHON_PREFIX}_FIND_VERSION)
+          _python_validate_include_dir (VERSION ${${_PYTHON_PREFIX}_FIND_VERSION} CHECK_EXISTS)
+        else()
+          _python_validate_include_dir (CHECK_EXISTS)
+        endif()
+      endif()
+    else()
+      if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS)
+        unset (_${_PYTHON_PREFIX}_LIBRARY_RELEASE CACHE)
+        unset (_${_PYTHON_PREFIX}_LIBRARY_DEBUG CACHE)
+      endif()
+      if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS)
+        unset (_${_PYTHON_PREFIX}_INCLUDE_DIR CACHE)
+      endif()
+    endif()
+    if (("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS
+          AND NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+        OR ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS
+          AND NOT _${_PYTHON_PREFIX}_INCLUDE_DIR))
+      unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
+      unset (_${_PYTHON_PREFIX}_DEVELOPMENT_${id}_SIGNATURE CACHE)
+    endif()
+  endif()
+endfunction()
+
+function (_PYTHON_COMPUTE_DEVELOPMENT_SIGNATURE module)
+  string (TOUPPER "${module}" id)
+  if (${_PYTHON_PREFIX}_Development.${module}_FOUND)
+    set (signature "${_${_PYTHON_PREFIX}_SIGNATURE}:")
+    if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS)
+      list (APPEND signature "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}:")
+    endif()
+    if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_${id}_ARTIFACTS)
+      list (APPEND signature "${_${_PYTHON_PREFIX}_INCLUDE_DIR}:")
+    endif()
+    string (MD5 signature "${signature}")
+    set (_${_PYTHON_PREFIX}_DEVELOPMENT_${id}_SIGNATURE "${signature}" CACHE INTERNAL "")
+  else()
+    unset (_${_PYTHON_PREFIX}_DEVELOPMENT_${id}_SIGNATURE CACHE)
+  endif()
+endfunction()
+
+
+unset (_${_PYTHON_PREFIX}_REQUIRED_VARS)
+unset (_${_PYTHON_PREFIX}_CACHED_VARS)
+unset (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE)
+unset (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE)
+unset (_${_PYTHON_PREFIX}_Development_REASON_FAILURE)
+unset (_${_PYTHON_PREFIX}_NumPy_REASON_FAILURE)
+
+
+# preamble
+## For IronPython on platforms other than Windows, search for the .Net interpreter
+if ("IronPython" IN_LIST _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS
+    AND NOT WIN32)
+  find_program (${_PYTHON_PREFIX}_DOTNET_LAUNCHER
+                NAMES "mono")
+endif()
+
+
+# first step, search for the interpreter
+if ("Interpreter" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
+  list (APPEND _${_PYTHON_PREFIX}_CACHED_VARS _${_PYTHON_PREFIX}_EXECUTABLE
+                                              _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES)
+  if (${_PYTHON_PREFIX}_FIND_REQUIRED_Interpreter)
+    list (APPEND _${_PYTHON_PREFIX}_REQUIRED_VARS ${_PYTHON_PREFIX}_EXECUTABLE)
+  endif()
+
+  if (DEFINED ${_PYTHON_PREFIX}_EXECUTABLE
+      AND IS_ABSOLUTE "${${_PYTHON_PREFIX}_EXECUTABLE}")
+    if (NOT ${_PYTHON_PREFIX}_EXECUTABLE STREQUAL _${_PYTHON_PREFIX}_EXECUTABLE)
+      # invalidate cache properties
+      unset (_${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES CACHE)
+    endif()
+    set (_${_PYTHON_PREFIX}_EXECUTABLE "${${_PYTHON_PREFIX}_EXECUTABLE}" CACHE INTERNAL "")
+  elseif (DEFINED _${_PYTHON_PREFIX}_EXECUTABLE)
+    # compute interpreter signature and check validity of definition
+    string (MD5 __${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE "${_${_PYTHON_PREFIX}_SIGNATURE}:${_${_PYTHON_PREFIX}_EXECUTABLE}")
+    if (__${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE STREQUAL _${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE)
+      # check version validity
+      if (${_PYTHON_PREFIX}_FIND_VERSION_EXACT)
+        _python_validate_interpreter (VERSION ${${_PYTHON_PREFIX}_FIND_VERSION} EXACT CHECK_EXISTS)
+      elseif (${_PYTHON_PREFIX}_FIND_VERSION_RANGE)
+        _python_validate_interpreter (IN_RANGE CHECK_EXISTS)
+      elseif (DEFINED ${_PYTHON_PREFIX}_FIND_VERSION)
+        _python_validate_interpreter (VERSION ${${_PYTHON_PREFIX}_FIND_VERSION} CHECK_EXISTS)
+      else()
+        _python_validate_interpreter (CHECK_EXISTS)
+      endif()
+    else()
+      unset (_${_PYTHON_PREFIX}_EXECUTABLE CACHE)
+    endif()
+    if (NOT _${_PYTHON_PREFIX}_EXECUTABLE)
+      unset (_${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE CACHE)
+      unset (_${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES CACHE)
+    endif()
+  endif()
+
+  if (NOT _${_PYTHON_PREFIX}_EXECUTABLE)
+    set (_${_PYTHON_PREFIX}_HINTS "${${_PYTHON_PREFIX}_ROOT_DIR}" ENV ${_PYTHON_PREFIX}_ROOT_DIR)
+
+    if (_${_PYTHON_PREFIX}_FIND_STRATEGY STREQUAL "LOCATION")
+      # build all executable names
+      _python_get_names (_${_PYTHON_PREFIX}_NAMES VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS} POSIX INTERPRETER)
+      _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS} INTERPRETER)
+
+      # Framework Paths
+      _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS})
+      # Registry Paths
+      _python_get_registries (_${_PYTHON_PREFIX}_REGISTRY_PATHS VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS})
+
+      set (_${_PYTHON_PREFIX}_VALIDATE_OPTIONS ${_${_PYTHON_PREFIX}_FIND_VERSION_EXACT})
+      if (${_PYTHON_PREFIX}_FIND_VERSION_RANGE)
+        list (APPEND _${_PYTHON_PREFIX}_VALIDATE_OPTIONS IN_RANGE)
+      elseif (DEFINED ${_PYTHON_PREFIX}_FIND_VERSION)
+        list (APPEND _${_PYTHON_PREFIX}_VALIDATE_OPTIONS VERSION ${${_PYTHON_PREFIX}_FIND_VERSION})
+      endif()
+
+      while (TRUE)
+        # Virtual environments handling
+        if (_${_PYTHON_PREFIX}_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY)$")
+          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
+                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
+                        NAMES_PER_DIR
+                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                        PATHS ENV VIRTUAL_ENV ENV CONDA_PREFIX
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_CMAKE_PATH
+                        NO_CMAKE_ENVIRONMENT_PATH
+                        NO_SYSTEM_ENVIRONMENT_PATH
+                        NO_CMAKE_SYSTEM_PATH)
+
+          _python_validate_interpreter (${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+          if (_${_PYTHON_PREFIX}_EXECUTABLE)
+            break()
+          endif()
+          if (_${_PYTHON_PREFIX}_FIND_VIRTUALENV STREQUAL "ONLY")
+            break()
+          endif()
+        endif()
+
+        # Apple frameworks handling
+        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
+          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
+                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
+                        NAMES_PER_DIR
+                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_CMAKE_PATH
+                        NO_CMAKE_ENVIRONMENT_PATH
+                        NO_SYSTEM_ENVIRONMENT_PATH
+                        NO_CMAKE_SYSTEM_PATH)
+          _python_validate_interpreter (${${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+          if (_${_PYTHON_PREFIX}_EXECUTABLE)
+            break()
+          endif()
+        endif()
+        # Windows registry
+        if (CMAKE_HOST_WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "FIRST")
+          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
+                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
+                        NAMES_PER_DIR
+                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                        PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_SYSTEM_ENVIRONMENT_PATH
+                        NO_CMAKE_SYSTEM_PATH)
+          _python_validate_interpreter (${${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+          if (_${_PYTHON_PREFIX}_EXECUTABLE)
+            break()
+          endif()
+        endif()
+
+        # try using HINTS
+        find_program (_${_PYTHON_PREFIX}_EXECUTABLE
+                      NAMES ${_${_PYTHON_PREFIX}_NAMES}
+                      NAMES_PER_DIR
+                      HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                      PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                      NO_SYSTEM_ENVIRONMENT_PATH
+                      NO_CMAKE_SYSTEM_PATH)
+        _python_validate_interpreter (${${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+        if (_${_PYTHON_PREFIX}_EXECUTABLE)
+          break()
+        endif()
+        # try using standard paths
+        find_program (_${_PYTHON_PREFIX}_EXECUTABLE
+                      NAMES ${_${_PYTHON_PREFIX}_NAMES}
+                      NAMES_PER_DIR
+                      PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES})
+        _python_validate_interpreter (${${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+        if (_${_PYTHON_PREFIX}_EXECUTABLE)
+          break()
+        endif()
+
+        # Apple frameworks handling
+        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
+          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
+                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
+                        NAMES_PER_DIR
+                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_DEFAULT_PATH)
+          _python_validate_interpreter (${${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+          if (_${_PYTHON_PREFIX}_EXECUTABLE)
+            break()
+          endif()
+        endif()
+        # Windows registry
+        if (CMAKE_HOST_WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "LAST")
+          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
+                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
+                        NAMES_PER_DIR
+                        PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_DEFAULT_PATH)
+          _python_validate_interpreter (${${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+          if (_${_PYTHON_PREFIX}_EXECUTABLE)
+            break()
+          endif()
+        endif()
+
+        break()
+      endwhile()
+    else()
+      # look-up for various versions and locations
+      set (_${_PYTHON_PREFIX}_VALIDATE_OPTIONS EXACT)
+      if (${_PYTHON_PREFIX}_FIND_VERSION_RANGE)
+        list (APPEND _${_PYTHON_PREFIX}_VALIDATE_OPTIONS IN_RANGE)
+      endif()
+
+      foreach (_${_PYTHON_PREFIX}_VERSION IN LISTS _${_PYTHON_PREFIX}_FIND_VERSIONS)
+        _python_get_names (_${_PYTHON_PREFIX}_NAMES VERSION ${_${_PYTHON_PREFIX}_VERSION} POSIX INTERPRETER)
+        _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES VERSION ${_${_PYTHON_PREFIX}_VERSION} INTERPRETER)
+
+        _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS VERSION ${_${_PYTHON_PREFIX}_VERSION})
+        _python_get_registries (_${_PYTHON_PREFIX}_REGISTRY_PATHS VERSION ${_${_PYTHON_PREFIX}_VERSION})
+
+        # Virtual environments handling
+        if (_${_PYTHON_PREFIX}_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY)$")
+          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
+                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
+                        NAMES_PER_DIR
+                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                        PATHS ENV VIRTUAL_ENV ENV CONDA_PREFIX
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_CMAKE_PATH
+                        NO_CMAKE_ENVIRONMENT_PATH
+                        NO_SYSTEM_ENVIRONMENT_PATH
+                        NO_CMAKE_SYSTEM_PATH)
+          _python_validate_interpreter (VERSION ${_${_PYTHON_PREFIX}_VERSION} ${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+          if (_${_PYTHON_PREFIX}_EXECUTABLE)
+            break()
+          endif()
+          if (_${_PYTHON_PREFIX}_FIND_VIRTUALENV STREQUAL "ONLY")
+            continue()
+          endif()
+        endif()
+
+        # Apple frameworks handling
+        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
+          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
+                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
+                        NAMES_PER_DIR
+                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_CMAKE_PATH
+                        NO_CMAKE_ENVIRONMENT_PATH
+                        NO_SYSTEM_ENVIRONMENT_PATH
+                        NO_CMAKE_SYSTEM_PATH)
+        endif()
+
+        # Windows registry
+        if (CMAKE_HOST_WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "FIRST")
+          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
+                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
+                        NAMES_PER_DIR
+                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                        PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_SYSTEM_ENVIRONMENT_PATH
+                        NO_CMAKE_SYSTEM_PATH)
+        endif()
+
+        _python_validate_interpreter (VERSION ${_${_PYTHON_PREFIX}_VERSION} ${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+        if (_${_PYTHON_PREFIX}_EXECUTABLE)
+          break()
+        endif()
+
+        # try using HINTS
+        find_program (_${_PYTHON_PREFIX}_EXECUTABLE
+                      NAMES ${_${_PYTHON_PREFIX}_NAMES}
+                      NAMES_PER_DIR
+                      HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                      PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                      NO_SYSTEM_ENVIRONMENT_PATH
+                      NO_CMAKE_SYSTEM_PATH)
+        _python_validate_interpreter (VERSION ${_${_PYTHON_PREFIX}_VERSION} ${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+        if (_${_PYTHON_PREFIX}_EXECUTABLE)
+          break()
+        endif()
+        # try using standard paths.
+        # NAMES_PER_DIR is not defined on purpose to have a chance to find
+        # expected version.
+        # For example, typical systems have 'python' for version 2.* and 'python3'
+        # for version 3.*. So looking for names per dir will find, potentially,
+        # systematically 'python' (i.e. version 2) even if version 3 is searched.
+        find_program (_${_PYTHON_PREFIX}_EXECUTABLE
+                      NAMES ${_${_PYTHON_PREFIX}_NAMES}
+                      PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES})
+        _python_validate_interpreter (VERSION ${_${_PYTHON_PREFIX}_VERSION} ${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+        if (_${_PYTHON_PREFIX}_EXECUTABLE)
+          break()
+        endif()
+
+        # Apple frameworks handling
+        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
+          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
+                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
+                        NAMES_PER_DIR
+                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_DEFAULT_PATH)
+        endif()
+
+        # Windows registry
+        if (CMAKE_HOST_WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "LAST")
+          find_program (_${_PYTHON_PREFIX}_EXECUTABLE
+                        NAMES ${_${_PYTHON_PREFIX}_NAMES}
+                        NAMES_PER_DIR
+                        PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_DEFAULT_PATH)
+        endif()
+
+        _python_validate_interpreter (VERSION ${_${_PYTHON_PREFIX}_VERSION} ${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+        if (_${_PYTHON_PREFIX}_EXECUTABLE)
+          break()
+        endif()
+      endforeach()
+
+      if (NOT _${_PYTHON_PREFIX}_EXECUTABLE AND
+          NOT _${_PYTHON_PREFIX}_FIND_VIRTUALENV STREQUAL "ONLY")
+        # No specific version found. Retry with generic names and standard paths.
+        # NAMES_PER_DIR is not defined on purpose to have a chance to find
+        # expected version.
+        # For example, typical systems have 'python' for version 2.* and 'python3'
+        # for version 3.*. So looking for names per dir will find, potentially,
+        # systematically 'python' (i.e. version 2) even if version 3 is searched.
+        _python_get_names (_${_PYTHON_PREFIX}_NAMES POSIX INTERPRETER)
+        find_program (_${_PYTHON_PREFIX}_EXECUTABLE
+                      NAMES ${_${_PYTHON_PREFIX}_NAMES})
+        _python_validate_interpreter ()
+      endif()
+    endif()
+  endif()
+
+  set (${_PYTHON_PREFIX}_EXECUTABLE "${_${_PYTHON_PREFIX}_EXECUTABLE}")
+  _python_get_launcher (_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER INTERPRETER)
+
+  # retrieve exact version of executable found
+  if (_${_PYTHON_PREFIX}_EXECUTABLE)
+    execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
+                             "import sys; sys.stdout.write('.'.join([str(x) for x in sys.version_info[:3]]))"
+                     RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
+                     OUTPUT_VARIABLE ${_PYTHON_PREFIX}_VERSION
+                     ERROR_QUIET
+                     OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if (NOT _${_PYTHON_PREFIX}_RESULT)
+      set (_${_PYTHON_PREFIX}_EXECUTABLE_USABLE TRUE)
+    else()
+      # Interpreter is not usable
+      set (_${_PYTHON_PREFIX}_EXECUTABLE_USABLE FALSE)
+      unset (${_PYTHON_PREFIX}_VERSION)
+      set (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE "Cannot run the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"")
+    endif()
+  endif()
+
+  if (_${_PYTHON_PREFIX}_EXECUTABLE AND _${_PYTHON_PREFIX}_EXECUTABLE_USABLE)
+    if (_${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES)
+      set (${_PYTHON_PREFIX}_Interpreter_FOUND TRUE)
+
+      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 0 ${_PYTHON_PREFIX}_INTERPRETER_ID)
+
+      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 1 ${_PYTHON_PREFIX}_VERSION_MAJOR)
+      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 2 ${_PYTHON_PREFIX}_VERSION_MINOR)
+      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 3 ${_PYTHON_PREFIX}_VERSION_PATCH)
+
+      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 4 _${_PYTHON_PREFIX}_ARCH)
+      set (_${_PYTHON_PREFIX}_ARCH2 ${_${_PYTHON_PREFIX}_ARCH})
+
+      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 5 _${_PYTHON_PREFIX}_ABIFLAGS)
+      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 6 ${_PYTHON_PREFIX}_SOABI)
+
+      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 7 ${_PYTHON_PREFIX}_STDLIB)
+      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 8 ${_PYTHON_PREFIX}_STDARCH)
+      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 9 ${_PYTHON_PREFIX}_SITELIB)
+      list (GET _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES 10 ${_PYTHON_PREFIX}_SITEARCH)
+    else()
+      string (REGEX MATCHALL "[0-9]+" _${_PYTHON_PREFIX}_VERSIONS "${${_PYTHON_PREFIX}_VERSION}")
+      list (GET _${_PYTHON_PREFIX}_VERSIONS 0 ${_PYTHON_PREFIX}_VERSION_MAJOR)
+      list (GET _${_PYTHON_PREFIX}_VERSIONS 1 ${_PYTHON_PREFIX}_VERSION_MINOR)
+      list (GET _${_PYTHON_PREFIX}_VERSIONS 2 ${_PYTHON_PREFIX}_VERSION_PATCH)
+
+      if (${_PYTHON_PREFIX}_VERSION_MAJOR VERSION_EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
+        set (${_PYTHON_PREFIX}_Interpreter_FOUND TRUE)
+
+        # Use interpreter version and ABI for future searches to ensure consistency
+        set (_${_PYTHON_PREFIX}_FIND_VERSIONS ${${_PYTHON_PREFIX}_VERSION_MAJOR}.${${_PYTHON_PREFIX}_VERSION_MINOR})
+        execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETR_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
+                                 "import sys; sys.stdout.write(sys.abiflags)"
+                         RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
+                         OUTPUT_VARIABLE _${_PYTHON_PREFIX}_ABIFLAGS
+                         ERROR_QUIET
+                         OUTPUT_STRIP_TRAILING_WHITESPACE)
+        if (_${_PYTHON_PREFIX}_RESULT)
+          # assunme ABI is not supported
+          set (_${_PYTHON_PREFIX}_ABIFLAGS "")
+        endif()
+      endif()
+
+      if (${_PYTHON_PREFIX}_Interpreter_FOUND)
+        unset (_${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE)
+
+        # compute and save interpreter signature
+        string (MD5 __${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE "${_${_PYTHON_PREFIX}_SIGNATURE}:${_${_PYTHON_PREFIX}_EXECUTABLE}")
+        set (_${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE "${__${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE}" CACHE INTERNAL "")
+
+        if (NOT CMAKE_SIZEOF_VOID_P)
+          # determine interpreter architecture
+          execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
+                                   "import sys; sys.stdout.write(str(sys.maxsize > 2**32))"
+                           RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
+                           OUTPUT_VARIABLE ${_PYTHON_PREFIX}_IS64BIT
+                           ERROR_VARIABLE ${_PYTHON_PREFIX}_IS64BIT)
+          if (NOT _${_PYTHON_PREFIX}_RESULT)
+            if (${_PYTHON_PREFIX}_IS64BIT)
+              set (_${_PYTHON_PREFIX}_ARCH 64)
+              set (_${_PYTHON_PREFIX}_ARCH2 64)
+            else()
+              set (_${_PYTHON_PREFIX}_ARCH 32)
+              set (_${_PYTHON_PREFIX}_ARCH2 32)
+            endif()
+          endif()
+        endif()
+
+        # retrieve interpreter identity
+        execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -V
+                         RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
+                         OUTPUT_VARIABLE ${_PYTHON_PREFIX}_INTERPRETER_ID
+                         ERROR_VARIABLE ${_PYTHON_PREFIX}_INTERPRETER_ID)
+        if (NOT _${_PYTHON_PREFIX}_RESULT)
+          if (${_PYTHON_PREFIX}_INTERPRETER_ID MATCHES "Anaconda")
+            set (${_PYTHON_PREFIX}_INTERPRETER_ID "Anaconda")
+          elseif (${_PYTHON_PREFIX}_INTERPRETER_ID MATCHES "Enthought")
+            set (${_PYTHON_PREFIX}_INTERPRETER_ID "Canopy")
+          elseif (${_PYTHON_PREFIX}_INTERPRETER_ID MATCHES "PyPy ([0-9.]+)")
+            set (${_PYTHON_PREFIX}_INTERPRETER_ID "PyPy")
+            set  (${_PYTHON_PREFIX}_PyPy_VERSION "${CMAKE_MATCH_1}")
+          else()
+            string (REGEX REPLACE "^([^ ]+).*" "\\1" ${_PYTHON_PREFIX}_INTERPRETER_ID "${${_PYTHON_PREFIX}_INTERPRETER_ID}")
+            if (${_PYTHON_PREFIX}_INTERPRETER_ID STREQUAL "Python")
+              # try to get a more precise ID
+              execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
+                                       "import sys; sys.stdout.write(sys.copyright)"
+                               RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
+                               OUTPUT_VARIABLE ${_PYTHON_PREFIX}_COPYRIGHT
+                               ERROR_QUIET)
+              if (${_PYTHON_PREFIX}_COPYRIGHT MATCHES "ActiveState")
+                set (${_PYTHON_PREFIX}_INTERPRETER_ID "ActivePython")
+              endif()
+            endif()
+          endif()
+        else()
+          set (${_PYTHON_PREFIX}_INTERPRETER_ID Python)
+        endif()
+
+        # retrieve various package installation directories
+        execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
+                                 "import sys\ntry:\n   from distutils import sysconfig\n   sys.stdout.write(';'.join([sysconfig.get_python_lib(plat_specific=False,standard_lib=True),sysconfig.get_python_lib(plat_specific=True,standard_lib=True),sysconfig.get_python_lib(plat_specific=False,standard_lib=False),sysconfig.get_python_lib(plat_specific=True,standard_lib=False)]))\nexcept Exception:\n   import sysconfig\n   sys.stdout.write(';'.join([sysconfig.get_path('stdlib'),sysconfig.get_path('platstdlib'),sysconfig.get_path('purelib'),sysconfig.get_path('platlib')]))"
+                         RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
+                         OUTPUT_VARIABLE _${_PYTHON_PREFIX}_LIBPATHS
+                         ERROR_QUIET)
+        if (NOT _${_PYTHON_PREFIX}_RESULT)
+          list (GET _${_PYTHON_PREFIX}_LIBPATHS 0 ${_PYTHON_PREFIX}_STDLIB)
+          list (GET _${_PYTHON_PREFIX}_LIBPATHS 1 ${_PYTHON_PREFIX}_STDARCH)
+          list (GET _${_PYTHON_PREFIX}_LIBPATHS 2 ${_PYTHON_PREFIX}_SITELIB)
+          list (GET _${_PYTHON_PREFIX}_LIBPATHS 3 ${_PYTHON_PREFIX}_SITEARCH)
+        else()
+          unset (${_PYTHON_PREFIX}_STDLIB)
+          unset (${_PYTHON_PREFIX}_STDARCH)
+          unset (${_PYTHON_PREFIX}_SITELIB)
+          unset (${_PYTHON_PREFIX}_SITEARCH)
+        endif()
+
+        _python_get_config_var (${_PYTHON_PREFIX}_SOABI SOABI)
+
+        # store properties in the cache to speed-up future searches
+        set (_${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES
+          "${${_PYTHON_PREFIX}_INTERPRETER_ID};${${_PYTHON_PREFIX}_VERSION_MAJOR};${${_PYTHON_PREFIX}_VERSION_MINOR};${${_PYTHON_PREFIX}_VERSION_PATCH};${_${_PYTHON_PREFIX}_ARCH};${_${_PYTHON_PREFIX}_ABIFLAGS};${${_PYTHON_PREFIX}_SOABI};${${_PYTHON_PREFIX}_STDLIB};${${_PYTHON_PREFIX}_STDARCH};${${_PYTHON_PREFIX}_SITELIB};${${_PYTHON_PREFIX}_SITEARCH}" CACHE INTERNAL "${_PYTHON_PREFIX} Properties")
+      else()
+        unset (_${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE CACHE)
+        unset (${_PYTHON_PREFIX}_INTERPRETER_ID)
+      endif()
+    endif()
+  endif()
+
+  if (${_PYTHON_PREFIX}_ARTIFACTS_INTERACTIVE)
+    set (${_PYTHON_PREFIX}_EXECUTABLE "${_${_PYTHON_PREFIX}_EXECUTABLE}" CACHE FILEPATH "${_PYTHON_PREFIX} Interpreter")
+  endif()
+
+  _python_mark_as_internal (_${_PYTHON_PREFIX}_EXECUTABLE
+                            _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES
+                            _${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE)
+endif()
+
+
+# second step, search for compiler (IronPython)
+if ("Compiler" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
+  list (APPEND _${_PYTHON_PREFIX}_CACHED_VARS _${_PYTHON_PREFIX}_COMPILER)
+  if (${_PYTHON_PREFIX}_FIND_REQUIRED_Compiler)
+    list (APPEND _${_PYTHON_PREFIX}_REQUIRED_VARS ${_PYTHON_PREFIX}_COMPILER)
+  endif()
+
+  if (NOT "IronPython" IN_LIST _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS)
+    unset (_${_PYTHON_PREFIX}_COMPILER CACHE)
+    unset (_${_PYTHON_PREFIX}_COMPILER_SIGNATURE CACHE)
+  elseif (DEFINED ${_PYTHON_PREFIX}_COMPILER
+      AND IS_ABSOLUTE "${${_PYTHON_PREFIX}_COMPILER}")
+    set (_${_PYTHON_PREFIX}_COMPILER "${${_PYTHON_PREFIX}_COMPILER}" CACHE INTERNAL "")
+  elseif (DEFINED _${_PYTHON_PREFIX}_COMPILER)
+    # compute compiler signature and check validity of definition
+    string (MD5 __${_PYTHON_PREFIX}_COMPILER_SIGNATURE "${_${_PYTHON_PREFIX}_SIGNATURE}:${_${_PYTHON_PREFIX}_COMPILER}")
+    if (__${_PYTHON_PREFIX}_COMPILER_SIGNATURE STREQUAL _${_PYTHON_PREFIX}_COMPILER_SIGNATURE)
+      # check version validity
+      if (${_PYTHON_PREFIX}_FIND_VERSION_EXACT)
+        _python_validate_compiler (VERSION ${${_PYTHON_PREFIX}_FIND_VERSION} EXACT CHECK_EXISTS)
+      elseif (${_PYTHON_PREFIX}_FIND_VERSION_RANGE)
+        _python_validate_compiler (IN_RANGE CHECK_EXISTS)
+      elseif (DEFINED ${_PYTHON_PREFIX}_FIND_VERSION)
+        _python_validate_compiler (VERSION ${${_PYTHON_PREFIX}_FIND_VERSION} CHECK_EXISTS)
+      else()
+        _python_validate_compiler (CHECK_EXISTS)
+      endif()
+    else()
+      unset (_${_PYTHON_PREFIX}_COMPILER CACHE)
+      unset (_${_PYTHON_PREFIX}_COMPILER_SIGNATURE CACHE)
+    endif()
+  endif()
+
+  if ("IronPython" IN_LIST _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS
+      AND NOT _${_PYTHON_PREFIX}_COMPILER)
+    # IronPython specific artifacts
+    # If IronPython interpreter is found, use its path
+    unset (_${_PYTHON_PREFIX}_IRON_ROOT)
+    if (${_PYTHON_PREFIX}_Interpreter_FOUND AND ${_PYTHON_PREFIX}_INTERPRETER_ID STREQUAL "IronPython")
+      get_filename_component (_${_PYTHON_PREFIX}_IRON_ROOT "${${_PYTHON_PREFIX}_EXECUTABLE}" DIRECTORY)
+    endif()
+
+    if (_${_PYTHON_PREFIX}_FIND_STRATEGY STREQUAL "LOCATION")
+      _python_get_names (_${_PYTHON_PREFIX}_COMPILER_NAMES
+                         IMPLEMENTATIONS IronPython
+                         VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS}
+                         COMPILER)
+
+      _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES
+                                 IMPLEMENTATIONS IronPython
+                                 VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS}
+                                 COMPILER)
+
+      _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS
+                              IMPLEMENTATIONS IronPython
+                              VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS})
+      _python_get_registries (_${_PYTHON_PREFIX}_REGISTRY_PATHS
+                              IMPLEMENTATIONS IronPython
+                              VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS})
+
+      set (_${_PYTHON_PREFIX}_VALIDATE_OPTIONS ${_${_PYTHON_PREFIX}_FIND_VERSION_EXACT})
+      if (${_PYTHON_PREFIX}_FIND_VERSION_RANGE)
+        list (APPEND _${_PYTHON_PREFIX}_VALIDATE_OPTIONS IN_RANGE)
+      elseif (DEFINED ${_PYTHON_PREFIX}_FIND_VERSION)
+        list (APPEND _${_PYTHON_PREFIX}_VALIDATE_OPTIONS VERSION ${${_PYTHON_PREFIX}_FIND_VERSION})
+      endif()
+
+      while (TRUE)
+        # Apple frameworks handling
+        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
+          find_program (_${_PYTHON_PREFIX}_COMPILER
+                        NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
+                        NAMES_PER_DIR
+                        HINTS ${_${_PYTHON_PREFIX}_IRON_ROOT} ${_${_PYTHON_PREFIX}_HINTS}
+                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_CMAKE_PATH
+                        NO_CMAKE_ENVIRONMENT_PATH
+                        NO_SYSTEM_ENVIRONMENT_PATH
+                        NO_CMAKE_SYSTEM_PATH)
+          _python_validate_compiler (${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+          if (_${_PYTHON_PREFIX}_COMPILER)
+            break()
+          endif()
+        endif()
+        # Windows registry
+        if (CMAKE_HOST_WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "FIRST")
+          find_program (_${_PYTHON_PREFIX}_COMPILER
+                        NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
+                        NAMES_PER_DIR
+                        HINTS ${_${_PYTHON_PREFIX}_IRON_ROOT} ${_${_PYTHON_PREFIX}_HINTS}
+                        PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_SYSTEM_ENVIRONMENT_PATH
+                        NO_CMAKE_SYSTEM_PATH)
+          _python_validate_compiler (${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+          if (_${_PYTHON_PREFIX}_COMPILER)
+            break()
+          endif()
+        endif()
+
+        # try using HINTS
+        find_program (_${_PYTHON_PREFIX}_COMPILER
+                      NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
+                      NAMES_PER_DIR
+                      HINTS ${_${_PYTHON_PREFIX}_IRON_ROOT} ${_${_PYTHON_PREFIX}_HINTS}
+                      PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                      NO_SYSTEM_ENVIRONMENT_PATH
+                      NO_CMAKE_SYSTEM_PATH)
+        _python_validate_compiler (${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+        if (_${_PYTHON_PREFIX}_COMPILER)
+          break()
+        endif()
+
+        # try using standard paths
+        find_program (_${_PYTHON_PREFIX}_COMPILER
+                      NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
+                      NAMES_PER_DIR
+                      PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES})
+        _python_validate_compiler (${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+        if (_${_PYTHON_PREFIX}_COMPILER)
+          break()
+        endif()
+
+        # Apple frameworks handling
+        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
+          find_program (_${_PYTHON_PREFIX}_COMPILER
+                        NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
+                        NAMES_PER_DIR
+                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_DEFAULT_PATH)
+          _python_validate_compiler (${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+          if (_${_PYTHON_PREFIX}_COMPILER)
+            break()
+          endif()
+        endif()
+        # Windows registry
+        if (CMAKE_HOST_WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "LAST")
+          find_program (_${_PYTHON_PREFIX}_COMPILER
+                        NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
+                        NAMES_PER_DIR
+                        PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_DEFAULT_PATH)
+          _python_validate_compiler (${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+          if (_${_PYTHON_PREFIX}_COMPILER)
+            break()
+          endif()
+        endif()
+
+        break()
+      endwhile()
+    else()
+      # try using root dir and registry
+      set (_${_PYTHON_PREFIX}_VALIDATE_OPTIONS EXACT)
+      if (${_PYTHON_PREFIX}_FIND_VERSION_RANGE)
+        list (APPEND _${_PYTHON_PREFIX}_VALIDATE_OPTIONS IN_RANGE)
+      endif()
+
+      foreach (_${_PYTHON_PREFIX}_VERSION IN LISTS _${_PYTHON_PREFIX}_FIND_VERSIONS)
+        _python_get_names (_${_PYTHON_PREFIX}_COMPILER_NAMES
+                           IMPLEMENTATIONS IronPython
+                           VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS}
+                           COMPILER)
+
+        _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES
+                                   IMPLEMENTATIONS IronPython
+                                   VERSION ${_${_PYTHON_PREFIX}_FIND_VERSION}
+                                   COMPILER)
+
+        _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS
+                                IMPLEMENTATIONS IronPython
+                                VERSION ${_${_PYTHON_PREFIX}_VERSION})
+        _python_get_registries (_${_PYTHON_PREFIX}_REGISTRY_PATHS
+                                IMPLEMENTATIONS IronPython
+                                VERSION ${_${_PYTHON_PREFIX}_VERSION})
+
+        # Apple frameworks handling
+        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
+          find_program (_${_PYTHON_PREFIX}_COMPILER
+                        NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
+                        NAMES_PER_DIR
+                        HINTS ${_${_PYTHON_PREFIX}_IRON_ROOT} ${_${_PYTHON_PREFIX}_HINTS}
+                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_CMAKE_PATH
+                        NO_CMAKE_ENVIRONMENT_PATH
+                        NO_SYSTEM_ENVIRONMENT_PATH
+                        NO_CMAKE_SYSTEM_PATH)
+          _python_validate_compiler (VERSION ${_${_PYTHON_PREFIX}_VERSION} ${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+          if (_${_PYTHON_PREFIX}_COMPILER)
+            break()
+          endif()
+        endif()
+        # Windows registry
+        if (CMAKE_HOST_WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "FIRST")
+          find_program (_${_PYTHON_PREFIX}_COMPILER
+                        NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
+                        NAMES_PER_DIR
+                        HINTS ${_${_PYTHON_PREFIX}_IRON_ROOT} ${_${_PYTHON_PREFIX}_HINTS}
+                        PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_SYSTEM_ENVIRONMENT_PATH
+                        NO_CMAKE_SYSTEM_PATH)
+          _python_validate_compiler (VERSION ${_${_PYTHON_PREFIX}_VERSION} ${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+          if (_${_PYTHON_PREFIX}_COMPILER)
+            break()
+          endif()
+        endif()
+
+        # try using HINTS
+        find_program (_${_PYTHON_PREFIX}_COMPILER
+                      NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
+                      NAMES_PER_DIR
+                      HINTS ${_${_PYTHON_PREFIX}_IRON_ROOT} ${_${_PYTHON_PREFIX}_HINTS}
+                      PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                      NO_SYSTEM_ENVIRONMENT_PATH
+                      NO_CMAKE_SYSTEM_PATH)
+        _python_validate_compiler (VERSION ${_${_PYTHON_PREFIX}_VERSION} ${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+        if (_${_PYTHON_PREFIX}_COMPILER)
+          break()
+        endif()
+
+        # Apple frameworks handling
+        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
+          find_program (_${_PYTHON_PREFIX}_COMPILER
+                        NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
+                        NAMES_PER_DIR
+                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_DEFAULT_PATH)
+          _python_validate_compiler (VERSION ${_${_PYTHON_PREFIX}_VERSION} ${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+          if (_${_PYTHON_PREFIX}_COMPILER)
+            break()
+          endif()
+        endif()
+        # Windows registry
+        if (CMAKE_HOST_WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "LAST")
+          find_program (_${_PYTHON_PREFIX}_COMPILER
+                        NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
+                        NAMES_PER_DIR
+                        PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_DEFAULT_PATH)
+          _python_validate_compiler (VERSION ${_${_PYTHON_PREFIX}_VERSION} ${_${_PYTHON_PREFIX}_VALIDATE_OPTIONS})
+          if (_${_PYTHON_PREFIX}_COMPILER)
+            break()
+          endif()
+        endif()
+      endforeach()
+
+      # no specific version found, re-try in standard paths
+      _python_get_names (_${_PYTHON_PREFIX}_COMPILER_NAMES
+                         IMPLEMENTATIONS IronPython
+                         VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS}
+                         COMPILER)
+      _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES
+                                 IMPLEMENTATIONS IronPython
+                                 VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS}
+                                 COMPILER)
+      find_program (_${_PYTHON_PREFIX}_COMPILER
+                    NAMES ${_${_PYTHON_PREFIX}_COMPILER_NAMES}
+                    HINTS ${_${_PYTHON_PREFIX}_IRON_ROOT} ${_${_PYTHON_PREFIX}_HINTS}
+                    PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES})
+      _python_validate_compiler ()
+    endif()
+  endif()
+
+  set (${_PYTHON_PREFIX}_COMPILER "${_${_PYTHON_PREFIX}_COMPILER}")
+
+  if (_${_PYTHON_PREFIX}_COMPILER)
+    # retrieve python environment version from compiler
+    _python_get_launcher (_${_PYTHON_PREFIX}_COMPILER_LAUNCHER COMPILER)
+    set (_${_PYTHON_PREFIX}_VERSION_DIR "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/PythonCompilerVersion.dir")
+    file (WRITE "${_${_PYTHON_PREFIX}_VERSION_DIR}/version.py" "import sys; sys.stdout.write('.'.join([str(x) for x in sys.version_info[:3]]))\n")
+    execute_process (COMMAND ${_${_PYTHON_PREFIX}_COMPILER_LAUNCHER} "${_${_PYTHON_PREFIX}_COMPILER}"
+                             ${_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_ARCH_FLAGS}
+                             /target:exe /embed "${_${_PYTHON_PREFIX}_VERSION_DIR}/version.py"
+                     WORKING_DIRECTORY "${_${_PYTHON_PREFIX}_VERSION_DIR}"
+                     OUTPUT_QUIET
+                     ERROR_QUIET)
+    get_filename_component (_${_PYTHON_PREFIX}_IR_DIR "${_${_PYTHON_PREFIX}_COMPILER}" DIRECTORY)
+    execute_process (COMMAND "${CMAKE_COMMAND}" -E env "MONO_PATH=${_${_PYTHON_PREFIX}_IR_DIR}"
+                             ${${_PYTHON_PREFIX}_DOTNET_LAUNCHER} "${_${_PYTHON_PREFIX}_VERSION_DIR}/version.exe"
+                     WORKING_DIRECTORY "${_${_PYTHON_PREFIX}_VERSION_DIR}"
+                     RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
+                     OUTPUT_VARIABLE _${_PYTHON_PREFIX}_VERSION
+                     ERROR_QUIET)
+    if (NOT _${_PYTHON_PREFIX}_RESULT)
+      set (_${_PYTHON_PREFIX}_COMPILER_USABLE TRUE)
+      string (REGEX MATCHALL "[0-9]+" _${_PYTHON_PREFIX}_VERSIONS "${_${_PYTHON_PREFIX}_VERSION}")
+      list (GET _${_PYTHON_PREFIX}_VERSIONS 0 _${_PYTHON_PREFIX}_VERSION_MAJOR)
+      list (GET _${_PYTHON_PREFIX}_VERSIONS 1 _${_PYTHON_PREFIX}_VERSION_MINOR)
+      list (GET _${_PYTHON_PREFIX}_VERSIONS 2 _${_PYTHON_PREFIX}_VERSION_PATCH)
+
+      if (NOT ${_PYTHON_PREFIX}_Interpreter_FOUND)
+        # set public version information
+        set (${_PYTHON_PREFIX}_VERSION ${_${_PYTHON_PREFIX}_VERSION})
+        set (${_PYTHON_PREFIX}_VERSION_MAJOR ${_${_PYTHON_PREFIX}_VERSION_MAJOR})
+        set (${_PYTHON_PREFIX}_VERSION_MINOR ${_${_PYTHON_PREFIX}_VERSION_MINOR})
+        set (${_PYTHON_PREFIX}_VERSION_PATCH ${_${_PYTHON_PREFIX}_VERSION_PATCH})
+      endif()
+    else()
+      # compiler not usable
+      set (_${_PYTHON_PREFIX}_COMPILER_USABLE FALSE)
+      set (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE "Cannot run the compiler \"${_${_PYTHON_PREFIX}_COMPILER}\"")
+    endif()
+    file (REMOVE_RECURSE "${_${_PYTHON_PREFIX}_VERSION_DIR}")
+  endif()
+
+  if (_${_PYTHON_PREFIX}_COMPILER AND _${_PYTHON_PREFIX}_COMPILER_USABLE)
+    if (${_PYTHON_PREFIX}_Interpreter_FOUND)
+      # Compiler must be compatible with interpreter
+      if ("${_${_PYTHON_PREFIX}_VERSION_MAJOR}.${_${_PYTHON_PREFIX}_VERSION_MINOR}" VERSION_EQUAL "${${_PYTHON_PREFIX}_VERSION_MAJOR}.${${_PYTHON_PREFIX}_VERSION_MINOR}")
+        set (${_PYTHON_PREFIX}_Compiler_FOUND TRUE)
+      endif()
+    elseif (${_PYTHON_PREFIX}_VERSION_MAJOR VERSION_EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
+      set (${_PYTHON_PREFIX}_Compiler_FOUND TRUE)
+      # Use compiler version for future searches to ensure consistency
+      set (_${_PYTHON_PREFIX}_FIND_VERSIONS ${${_PYTHON_PREFIX}_VERSION_MAJOR}.${${_PYTHON_PREFIX}_VERSION_MINOR})
+    endif()
+  endif()
+
+  if (${_PYTHON_PREFIX}_Compiler_FOUND)
+    unset (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE)
+
+    # compute and save compiler signature
+    string (MD5 __${_PYTHON_PREFIX}_COMPILER_SIGNATURE "${_${_PYTHON_PREFIX}_SIGNATURE}:${_${_PYTHON_PREFIX}_COMPILER}")
+    set (_${_PYTHON_PREFIX}_COMPILER_SIGNATURE "${__${_PYTHON_PREFIX}_COMPILER_SIGNATURE}" CACHE INTERNAL "")
+
+    set (${_PYTHON_PREFIX}_COMPILER_ID IronPython)
+  else()
+    unset (_${_PYTHON_PREFIX}_COMPILER_SIGNATURE CACHE)
+    unset (${_PYTHON_PREFIX}_COMPILER_ID)
+  endif()
+
+  if (${_PYTHON_PREFIX}_ARTIFACTS_INTERACTIVE)
+    set (${_PYTHON_PREFIX}_COMPILER "${_${_PYTHON_PREFIX}_COMPILER}" CACHE FILEPATH "${_PYTHON_PREFIX} Compiler")
+  endif()
+
+  _python_mark_as_internal (_${_PYTHON_PREFIX}_COMPILER
+                            _${_PYTHON_PREFIX}_COMPILER_SIGNATURE)
+endif()
+
+# third step, search for the development artifacts
+if (${_PYTHON_PREFIX}_FIND_REQUIRED_Development.Module)
+  if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_MODULE_ARTIFACTS)
+    list (APPEND _${_PYTHON_PREFIX}_REQUIRED_VARS ${_PYTHON_PREFIX}_LIBRARIES)
+  endif()
+  if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_MODULE_ARTIFACTS)
+    list (APPEND _${_PYTHON_PREFIX}_REQUIRED_VARS ${_PYTHON_PREFIX}_INCLUDE_DIRS)
+  endif()
+endif()
+if (${_PYTHON_PREFIX}_FIND_REQUIRED_Development.Embed)
+  if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_EMBED_ARTIFACTS)
+    list (APPEND _${_PYTHON_PREFIX}_REQUIRED_VARS ${_PYTHON_PREFIX}_LIBRARIES)
+  endif()
+  if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_EMBED_ARTIFACTS)
+    list (APPEND _${_PYTHON_PREFIX}_REQUIRED_VARS ${_PYTHON_PREFIX}_INCLUDE_DIRS)
+  endif()
+endif()
+list (REMOVE_DUPLICATES _${_PYTHON_PREFIX}_REQUIRED_VARS)
+## Development environment is not compatible with IronPython interpreter
+if (("Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
+      OR "Development.Embed" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
+    AND ((${_PYTHON_PREFIX}_Interpreter_FOUND
+        AND NOT ${_PYTHON_PREFIX}_INTERPRETER_ID STREQUAL "IronPython")
+      OR NOT ${_PYTHON_PREFIX}_Interpreter_FOUND))
+  if (${_PYTHON_PREFIX}_Interpreter_FOUND)
+    # reduce possible implementations to the interpreter one
+    if (${_PYTHON_PREFIX}_INTERPRETER_ID STREQUAL "PyPy")
+      set (_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS "PyPy")
+    else()
+      set (_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS "CPython")
+    endif()
+  else()
+    list (REMOVE_ITEM _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS "IronPython")
+  endif()
+  if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
+  list (APPEND _${_PYTHON_PREFIX}_CACHED_VARS _${_PYTHON_PREFIX}_LIBRARY_RELEASE
+                                              _${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE
+                                              _${_PYTHON_PREFIX}_LIBRARY_DEBUG
+                                              _${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG)
+  endif()
+  if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
+    list (APPEND _${_PYTHON_PREFIX}_CACHED_VARS _${_PYTHON_PREFIX}_INCLUDE_DIR)
+  endif()
+
+  _python_check_development_signature (Module)
+  _python_check_development_signature (Embed)
+
+  if (DEFINED ${_PYTHON_PREFIX}_LIBRARY
+      AND IS_ABSOLUTE "${${_PYTHON_PREFIX}_LIBRARY}")
+    set (_${_PYTHON_PREFIX}_LIBRARY_RELEASE "${${_PYTHON_PREFIX}_LIBRARY}" CACHE INTERNAL "")
+    unset (_${_PYTHON_PREFIX}_LIBRARY_DEBUG CACHE)
+    unset (_${_PYTHON_PREFIX}_INCLUDE_DIR CACHE)
+  endif()
+  if (DEFINED ${_PYTHON_PREFIX}_INCLUDE_DIR
+      AND IS_ABSOLUTE "${${_PYTHON_PREFIX}_INCLUDE_DIR}")
+    set (_${_PYTHON_PREFIX}_INCLUDE_DIR "${${_PYTHON_PREFIX}_INCLUDE_DIR}" CACHE INTERNAL "")
+  endif()
+
+  # Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
+  unset (_${_PYTHON_PREFIX}_CMAKE_FIND_LIBRARY_SUFFIXES)
+  if (DEFINED ${_PYTHON_PREFIX}_USE_STATIC_LIBS AND NOT WIN32)
+    set(_${_PYTHON_PREFIX}_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
+    if(${_PYTHON_PREFIX}_USE_STATIC_LIBS)
+      set (CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX})
+    else()
+      list (REMOVE_ITEM CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX})
+    endif()
+  endif()
+
+  if (NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE OR NOT _${_PYTHON_PREFIX}_INCLUDE_DIR)
+    # if python interpreter is found, use it to look-up for artifacts
+    # to ensure consistency between interpreter and development environments.
+    # If not, try to locate a compatible config tool
+    if ((NOT ${_PYTHON_PREFIX}_Interpreter_FOUND OR CMAKE_CROSSCOMPILING)
+        AND "CPython" IN_LIST _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS)
+      set (_${_PYTHON_PREFIX}_HINTS "${${_PYTHON_PREFIX}_ROOT_DIR}" ENV ${_PYTHON_PREFIX}_ROOT_DIR)
+      unset (_${_PYTHON_PREFIX}_VIRTUALENV_PATHS)
+      if (_${_PYTHON_PREFIX}_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY)$")
+        set (_${_PYTHON_PREFIX}_VIRTUALENV_PATHS ENV VIRTUAL_ENV ENV CONDA_PREFIX)
+      endif()
+
+      if (_${_PYTHON_PREFIX}_FIND_STRATEGY STREQUAL "LOCATION")
+        _python_get_names (_${_PYTHON_PREFIX}_CONFIG_NAMES VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS} POSIX CONFIG)
+          # Framework Paths
+        _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS})
+
+        # Apple frameworks handling
+        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
+          find_program (_${_PYTHON_PREFIX}_CONFIG
+                        NAMES ${_${_PYTHON_PREFIX}_CONFIG_NAMES}
+                        NAMES_PER_DIR
+                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                        PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
+                              ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                        PATH_SUFFIXES bin
+                        NO_CMAKE_PATH
+                        NO_CMAKE_ENVIRONMENT_PATH
+                        NO_SYSTEM_ENVIRONMENT_PATH
+                        NO_CMAKE_SYSTEM_PATH)
+        endif()
+
+        find_program (_${_PYTHON_PREFIX}_CONFIG
+                      NAMES ${_${_PYTHON_PREFIX}_CONFIG_NAMES}
+                      NAMES_PER_DIR
+                      HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                      PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
+                      PATH_SUFFIXES bin)
+
+        # Apple frameworks handling
+        if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
+          find_program (_${_PYTHON_PREFIX}_CONFIG
+                        NAMES ${_${_PYTHON_PREFIX}_CONFIG_NAMES}
+                        NAMES_PER_DIR
+                        PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                        PATH_SUFFIXES bin
+                        NO_DEFAULT_PATH)
+        endif()
+
+        if (_${_PYTHON_PREFIX}_CONFIG)
+          execute_process (COMMAND "${_${_PYTHON_PREFIX}_CONFIG}" --help
+                           RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
+                           OUTPUT_VARIABLE __${_PYTHON_PREFIX}_HELP
+                           ERROR_QUIET
+                           OUTPUT_STRIP_TRAILING_WHITESPACE)
+          if (_${_PYTHON_PREFIX}_RESULT)
+            # assume config tool is not usable
+            unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
+          endif()
+        endif()
+
+        if (_${_PYTHON_PREFIX}_CONFIG)
+          execute_process (COMMAND "${_${_PYTHON_PREFIX}_CONFIG}" --abiflags
+                           RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
+                           OUTPUT_VARIABLE __${_PYTHON_PREFIX}_ABIFLAGS
+                           ERROR_QUIET
+                           OUTPUT_STRIP_TRAILING_WHITESPACE)
+          if (_${_PYTHON_PREFIX}_RESULT)
+            # assume ABI is not supported
+            set (__${_PYTHON_PREFIX}_ABIFLAGS "")
+          endif()
+          if (DEFINED _${_PYTHON_PREFIX}_FIND_ABI AND NOT __${_PYTHON_PREFIX}_ABIFLAGS IN_LIST _${_PYTHON_PREFIX}_ABIFLAGS)
+            # Wrong ABI
+            unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
+          endif()
+        endif()
+
+        if (_${_PYTHON_PREFIX}_CONFIG AND DEFINED CMAKE_LIBRARY_ARCHITECTURE)
+          # check that config tool match library architecture
+          execute_process (COMMAND "${_${_PYTHON_PREFIX}_CONFIG}" --configdir
+                           RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
+                           OUTPUT_VARIABLE _${_PYTHON_PREFIX}_CONFIGDIR
+                           ERROR_QUIET
+                           OUTPUT_STRIP_TRAILING_WHITESPACE)
+          if (_${_PYTHON_PREFIX}_RESULT)
+            unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
+          else()
+            string(FIND "${_${_PYTHON_PREFIX}_CONFIGDIR}" "${CMAKE_LIBRARY_ARCHITECTURE}" _${_PYTHON_PREFIX}_RESULT)
+            if (_${_PYTHON_PREFIX}_RESULT EQUAL -1)
+              unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
+            endif()
+          endif()
+        endif()
+      else()
+        foreach (_${_PYTHON_PREFIX}_VERSION IN LISTS _${_PYTHON_PREFIX}_FIND_VERSIONS)
+          # try to use pythonX.Y-config tool
+          _python_get_names (_${_PYTHON_PREFIX}_CONFIG_NAMES VERSION ${_${_PYTHON_PREFIX}_VERSION} POSIX CONFIG)
+
+          # Framework Paths
+          _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS VERSION ${_${_PYTHON_PREFIX}_VERSION})
+
+          # Apple frameworks handling
+          if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
+            find_program (_${_PYTHON_PREFIX}_CONFIG
+                          NAMES ${_${_PYTHON_PREFIX}_CONFIG_NAMES}
+                          NAMES_PER_DIR
+                          HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                          PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
+                                ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                          PATH_SUFFIXES bin
+                          NO_CMAKE_PATH
+                          NO_CMAKE_ENVIRONMENT_PATH
+                          NO_SYSTEM_ENVIRONMENT_PATH
+                          NO_CMAKE_SYSTEM_PATH)
+          endif()
+
+          find_program (_${_PYTHON_PREFIX}_CONFIG
+                        NAMES ${_${_PYTHON_PREFIX}_CONFIG_NAMES}
+                        NAMES_PER_DIR
+                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                        PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
+                        PATH_SUFFIXES bin)
+
+          # Apple frameworks handling
+          if (CMAKE_HOST_APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
+            find_program (_${_PYTHON_PREFIX}_CONFIG
+                          NAMES ${_${_PYTHON_PREFIX}_CONFIG_NAMES}
+                          NAMES_PER_DIR
+                          PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                          PATH_SUFFIXES bin
+                          NO_DEFAULT_PATH)
+          endif()
+
+          unset (_${_PYTHON_PREFIX}_CONFIG_NAMES)
+
+          if (_${_PYTHON_PREFIX}_CONFIG)
+            execute_process (COMMAND "${_${_PYTHON_PREFIX}_CONFIG}" --help
+                             RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
+                             OUTPUT_VARIABLE __${_PYTHON_PREFIX}_HELP
+                             ERROR_QUIET
+                             OUTPUT_STRIP_TRAILING_WHITESPACE)
+            if (_${_PYTHON_PREFIX}_RESULT)
+              # assume config tool is not usable
+              unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
+            endif()
+          endif()
+
+          if (NOT _${_PYTHON_PREFIX}_CONFIG)
+            continue()
+          endif()
+
+          execute_process (COMMAND "${_${_PYTHON_PREFIX}_CONFIG}" --abiflags
+                           RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
+                           OUTPUT_VARIABLE __${_PYTHON_PREFIX}_ABIFLAGS
+                           ERROR_QUIET
+                           OUTPUT_STRIP_TRAILING_WHITESPACE)
+          if (_${_PYTHON_PREFIX}_RESULT)
+            # assume ABI is not supported
+            set (__${_PYTHON_PREFIX}_ABIFLAGS "")
+          endif()
+          if (DEFINED _${_PYTHON_PREFIX}_FIND_ABI AND NOT __${_PYTHON_PREFIX}_ABIFLAGS IN_LIST _${_PYTHON_PREFIX}_ABIFLAGS)
+            # Wrong ABI
+            unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
+            continue()
+          endif()
+
+          if (_${_PYTHON_PREFIX}_CONFIG AND DEFINED CMAKE_LIBRARY_ARCHITECTURE)
+            # check that config tool match library architecture
+            execute_process (COMMAND "${_${_PYTHON_PREFIX}_CONFIG}" --configdir
+                             RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
+                             OUTPUT_VARIABLE _${_PYTHON_PREFIX}_CONFIGDIR
+                             ERROR_QUIET
+                             OUTPUT_STRIP_TRAILING_WHITESPACE)
+            if (_${_PYTHON_PREFIX}_RESULT)
+              unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
+              continue()
+            endif()
+            string (FIND "${_${_PYTHON_PREFIX}_CONFIGDIR}" "${CMAKE_LIBRARY_ARCHITECTURE}" _${_PYTHON_PREFIX}_RESULT)
+            if (_${_PYTHON_PREFIX}_RESULT EQUAL -1)
+              unset (_${_PYTHON_PREFIX}_CONFIG CACHE)
+              continue()
+            endif()
+          endif()
+
+          if (_${_PYTHON_PREFIX}_CONFIG)
+            break()
+          endif()
+        endforeach()
+      endif()
+    endif()
+  endif()
+
+  if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
+    if (NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+      if ((${_PYTHON_PREFIX}_Interpreter_FOUND AND NOT CMAKE_CROSSCOMPILING) OR _${_PYTHON_PREFIX}_CONFIG)
+        # retrieve root install directory
+        _python_get_config_var (_${_PYTHON_PREFIX}_PREFIX PREFIX)
+
+        # enforce current ABI
+        _python_get_config_var (_${_PYTHON_PREFIX}_ABIFLAGS ABIFLAGS)
+
+        set (_${_PYTHON_PREFIX}_HINTS "${_${_PYTHON_PREFIX}_PREFIX}")
+
+        # retrieve library
+        ## compute some paths and artifact names
+        if (_${_PYTHON_PREFIX}_CONFIG)
+          string (REGEX REPLACE "^.+python([0-9.]+)[a-z]*-config" "\\1" _${_PYTHON_PREFIX}_VERSION "${_${_PYTHON_PREFIX}_CONFIG}")
+        else()
+          set (_${_PYTHON_PREFIX}_VERSION "${${_PYTHON_PREFIX}_VERSION_MAJOR}.${${_PYTHON_PREFIX}_VERSION_MINOR}")
+        endif()
+        _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES VERSION ${_${_PYTHON_PREFIX}_VERSION} LIBRARY)
+        _python_get_names (_${_PYTHON_PREFIX}_LIB_NAMES VERSION ${_${_PYTHON_PREFIX}_VERSION} WIN32 POSIX LIBRARY)
+
+        _python_get_config_var (_${_PYTHON_PREFIX}_CONFIGDIR CONFIGDIR)
+        list (APPEND _${_PYTHON_PREFIX}_HINTS "${_${_PYTHON_PREFIX}_CONFIGDIR}")
+
+        list (APPEND _${_PYTHON_PREFIX}_HINTS "${${_PYTHON_PREFIX}_ROOT_DIR}" ENV ${_PYTHON_PREFIX}_ROOT_DIR)
+
+        find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
+                      NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
+                      NAMES_PER_DIR
+                      HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                      PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                      NO_SYSTEM_ENVIRONMENT_PATH
+                      NO_CMAKE_SYSTEM_PATH)
+      endif()
+
+      # Rely on HINTS and standard paths if interpreter or config tool failed to locate artifacts
+      if (NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+        set (_${_PYTHON_PREFIX}_HINTS "${${_PYTHON_PREFIX}_ROOT_DIR}" ENV ${_PYTHON_PREFIX}_ROOT_DIR)
+
+        unset (_${_PYTHON_PREFIX}_VIRTUALENV_PATHS)
+        if (_${_PYTHON_PREFIX}_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY)$")
+          set (_${_PYTHON_PREFIX}_VIRTUALENV_PATHS ENV VIRTUAL_ENV ENV CONDA_PREFIX)
+        endif()
+
+        if (_${_PYTHON_PREFIX}_FIND_STRATEGY STREQUAL "LOCATION")
+          # library names
+          _python_get_names (_${_PYTHON_PREFIX}_LIB_NAMES VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS} WIN32 POSIX LIBRARY)
+          _python_get_names (_${_PYTHON_PREFIX}_LIB_NAMES_DEBUG VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS} WIN32 DEBUG)
+          # Paths suffixes
+          _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS} LIBRARY)
+
+          # Framework Paths
+          _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS VERSION ${_${_PYTHON_PREFIX}_LIB_FIND_VERSIONS})
+          # Registry Paths
+          _python_get_registries (_${_PYTHON_PREFIX}_REGISTRY_PATHS VERSION ${_${_PYTHON_PREFIX}_FIND_VERSIONS} )
+
+          if (APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
+            find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
+                          NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
+                          NAMES_PER_DIR
+                          HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                          PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
+                                ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                          PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                          NO_CMAKE_PATH
+                          NO_CMAKE_ENVIRONMENT_PATH
+                          NO_SYSTEM_ENVIRONMENT_PATH
+                          NO_CMAKE_SYSTEM_PATH)
+          endif()
+
+          if (WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "FIRST")
+            find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
+                          NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
+                          NAMES_PER_DIR
+                          HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                          PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
+                                ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
+                          PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                          NO_SYSTEM_ENVIRONMENT_PATH
+                          NO_CMAKE_SYSTEM_PATH)
+          endif()
+
+          # search in HINTS locations
+          find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
+                        NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
+                        NAMES_PER_DIR
+                        HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                        PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                        NO_SYSTEM_ENVIRONMENT_PATH
+                        NO_CMAKE_SYSTEM_PATH)
+
+          if (APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
+            set (__${_PYTHON_PREFIX}_FRAMEWORK_PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS})
+          else()
+            unset (__${_PYTHON_PREFIX}_FRAMEWORK_PATHS)
+          endif()
+
+          if (WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "LAST")
+            set (__${_PYTHON_PREFIX}_REGISTRY_PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS})
+          else()
+            unset (__${_PYTHON_PREFIX}_REGISTRY_PATHS)
+          endif()
+
+          # search in all default paths
+          find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
+                        NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
+                        NAMES_PER_DIR
+                        PATHS ${__${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                              ${__${_PYTHON_PREFIX}_REGISTRY_PATHS}
+                        PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES})
+        else()
+          foreach (_${_PYTHON_PREFIX}_LIB_VERSION IN LISTS _${_PYTHON_PREFIX}_FIND_VERSIONS)
+            _python_get_names (_${_PYTHON_PREFIX}_LIB_NAMES VERSION ${_${_PYTHON_PREFIX}_LIB_VERSION} WIN32 POSIX LIBRARY)
+            _python_get_names (_${_PYTHON_PREFIX}_LIB_NAMES_DEBUG VERSION ${_${_PYTHON_PREFIX}_LIB_VERSION} WIN32 DEBUG)
+
+            _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS VERSION ${_${_PYTHON_PREFIX}_LIB_VERSION})
+            _python_get_registries (_${_PYTHON_PREFIX}_REGISTRY_PATHS VERSION ${_${_PYTHON_PREFIX}_LIB_VERSION})
+
+            _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES VERSION ${_${_PYTHON_PREFIX}_LIB_VERSION} LIBRARY)
+
+            if (APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
+              find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
+                            NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
+                            NAMES_PER_DIR
+                            HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                            PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
+                                  ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                            PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                            NO_CMAKE_PATH
+                            NO_CMAKE_ENVIRONMENT_PATH
+                            NO_SYSTEM_ENVIRONMENT_PATH
+                            NO_CMAKE_SYSTEM_PATH)
+            endif()
+
+            if (WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "FIRST")
+              find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
+                            NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
+                            NAMES_PER_DIR
+                            HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                            PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
+                                  ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
+                            PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                            NO_SYSTEM_ENVIRONMENT_PATH
+                            NO_CMAKE_SYSTEM_PATH)
+            endif()
+
+            # search in HINTS locations
+            find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
+                          NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
+                          NAMES_PER_DIR
+                          HINTS ${_${_PYTHON_PREFIX}_HINTS}
+                          PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
+                          PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                          NO_SYSTEM_ENVIRONMENT_PATH
+                          NO_CMAKE_SYSTEM_PATH)
+
+            if (APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
+              set (__${_PYTHON_PREFIX}_FRAMEWORK_PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS})
+            else()
+              unset (__${_PYTHON_PREFIX}_FRAMEWORK_PATHS)
+            endif()
+
+            if (WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "LAST")
+              set (__${_PYTHON_PREFIX}_REGISTRY_PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS})
+            else()
+              unset (__${_PYTHON_PREFIX}_REGISTRY_PATHS)
+            endif()
+
+            # search in all default paths
+            find_library (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
+                          NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
+                          NAMES_PER_DIR
+                          PATHS ${__${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                                ${__${_PYTHON_PREFIX}_REGISTRY_PATHS}
+                          PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES})
+
+            if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+              break()
+            endif()
+          endforeach()
+        endif()
+      endif()
+    endif()
+
+    # finalize library version information
+    _python_get_version (LIBRARY PREFIX _${_PYTHON_PREFIX}_)
+    if (_${_PYTHON_PREFIX}_VERSION EQUAL "${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}")
+      # not able to extract full version from library name
+      if (${_PYTHON_PREFIX}_Interpreter_FOUND)
+        # update from interpreter
+        set (_${_PYTHON_PREFIX}_VERSION ${${_PYTHON_PREFIX}_VERSION})
+        set (_${_PYTHON_PREFIX}_VERSION_MAJOR ${${_PYTHON_PREFIX}_VERSION_MAJOR})
+        set (_${_PYTHON_PREFIX}_VERSION_MINOR ${${_PYTHON_PREFIX}_VERSION_MINOR})
+        set (_${_PYTHON_PREFIX}_VERSION_PATCH ${${_PYTHON_PREFIX}_VERSION_PATCH})
+      endif()
+    endif()
+
+    set (${_PYTHON_PREFIX}_LIBRARY_RELEASE "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}")
+
+    if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE AND NOT EXISTS "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}")
+      set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Cannot find the library \"${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}\"")
+      set_property (CACHE _${_PYTHON_PREFIX}_LIBRARY_RELEASE PROPERTY VALUE "${_PYTHON_PREFIX}_LIBRARY_RELEASE-NOTFOUND")
+    endif()
+
+    set (_${_PYTHON_PREFIX}_HINTS "${${_PYTHON_PREFIX}_ROOT_DIR}" ENV ${_PYTHON_PREFIX}_ROOT_DIR)
+
+    if (WIN32 AND _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+      # search for debug library
+      # use release library location as a hint
+      _python_get_names (_${_PYTHON_PREFIX}_LIB_NAMES_DEBUG VERSION ${_${_PYTHON_PREFIX}_VERSION} WIN32 DEBUG)
+      get_filename_component (_${_PYTHON_PREFIX}_PATH "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}" DIRECTORY)
+      find_library (_${_PYTHON_PREFIX}_LIBRARY_DEBUG
+                    NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES_DEBUG}
+                    NAMES_PER_DIR
+                    HINTS "${_${_PYTHON_PREFIX}_PATH}" ${_${_PYTHON_PREFIX}_HINTS}
+                    NO_DEFAULT_PATH)
+      # second try including CMAKE variables to catch-up non conventional layouts
+      find_library (_${_PYTHON_PREFIX}_LIBRARY_DEBUG
+                    NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES_DEBUG}
+                    NAMES_PER_DIR
+                    NO_SYSTEM_ENVIRONMENT_PATH
+                    NO_CMAKE_SYSTEM_PATH)
+    endif()
+
+    # retrieve runtime libraries
+    if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+      _python_get_names (_${_PYTHON_PREFIX}_LIB_NAMES VERSION ${_${_PYTHON_PREFIX}_VERSION} WIN32 POSIX LIBRARY)
+      get_filename_component (_${_PYTHON_PREFIX}_PATH "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}" DIRECTORY)
+      get_filename_component (_${_PYTHON_PREFIX}_PATH2 "${_${_PYTHON_PREFIX}_PATH}" DIRECTORY)
+      _python_find_runtime_library (_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE
+                                    NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES}
+                                    NAMES_PER_DIR
+                                    HINTS "${_${_PYTHON_PREFIX}_PATH}"
+                                          "${_${_PYTHON_PREFIX}_PATH2}" ${_${_PYTHON_PREFIX}_HINTS}
+                                    PATH_SUFFIXES bin)
+    endif()
+    if (_${_PYTHON_PREFIX}_LIBRARY_DEBUG)
+      _python_get_names (_${_PYTHON_PREFIX}_LIB_NAMES_DEBUG VERSION ${_${_PYTHON_PREFIX}_VERSION} WIN32 DEBUG)
+      get_filename_component (_${_PYTHON_PREFIX}_PATH "${_${_PYTHON_PREFIX}_LIBRARY_DEBUG}" DIRECTORY)
+      get_filename_component (_${_PYTHON_PREFIX}_PATH2 "${_${_PYTHON_PREFIX}_PATH}" DIRECTORY)
+      _python_find_runtime_library (_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG
+                                    NAMES ${_${_PYTHON_PREFIX}_LIB_NAMES_DEBUG}
+                                    NAMES_PER_DIR
+                                    HINTS "${_${_PYTHON_PREFIX}_PATH}"
+                                          "${_${_PYTHON_PREFIX}_PATH2}" ${_${_PYTHON_PREFIX}_HINTS}
+                                    PATH_SUFFIXES bin)
+    endif()
+  endif()
+
+  if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
+    while (NOT _${_PYTHON_PREFIX}_INCLUDE_DIR)
+      if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS
+          AND NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+        # Don't search for include dir if no library was founded
+        break()
+      endif()
+
+      if ((${_PYTHON_PREFIX}_Interpreter_FOUND AND NOT CMAKE_CROSSCOMPILING) OR _${_PYTHON_PREFIX}_CONFIG)
+        _python_get_config_var (_${_PYTHON_PREFIX}_INCLUDE_DIRS INCLUDES)
+
+        find_path (_${_PYTHON_PREFIX}_INCLUDE_DIR
+                   NAMES ${_${_PYTHON_PREFIX}_INCLUDE_NAMES}
+                   HINTS ${_${_PYTHON_PREFIX}_INCLUDE_DIRS}
+                   NO_SYSTEM_ENVIRONMENT_PATH
+                   NO_CMAKE_SYSTEM_PATH)
+      endif()
+
+      # Rely on HINTS and standard paths if interpreter or config tool failed to locate artifacts
+      if (NOT _${_PYTHON_PREFIX}_INCLUDE_DIR)
+        unset (_${_PYTHON_PREFIX}_VIRTUALENV_PATHS)
+        if (_${_PYTHON_PREFIX}_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY)$")
+          set (_${_PYTHON_PREFIX}_VIRTUALENV_PATHS ENV VIRTUAL_ENV ENV CONDA_PREFIX)
+        endif()
+        unset (_${_PYTHON_PREFIX}_INCLUDE_HINTS)
+
+        if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+          # Use the library's install prefix as a hint
+          if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "^(.+/Frameworks/Python.framework/Versions/[0-9.]+)")
+            list (APPEND _${_PYTHON_PREFIX}_INCLUDE_HINTS "${CMAKE_MATCH_1}")
+          elseif (_${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "^(.+)/lib(64|32)?/python[0-9.]+/config")
+            list (APPEND _${_PYTHON_PREFIX}_INCLUDE_HINTS "${CMAKE_MATCH_1}")
+          elseif (DEFINED CMAKE_LIBRARY_ARCHITECTURE AND ${_${_PYTHON_PREFIX}_LIBRARY_RELEASE} MATCHES "^(.+)/lib/${CMAKE_LIBRARY_ARCHITECTURE}")
+            list (APPEND _${_PYTHON_PREFIX}_INCLUDE_HINTS "${CMAKE_MATCH_1}")
+          else()
+            # assume library is in a directory under root
+            get_filename_component (_${_PYTHON_PREFIX}_PREFIX "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}" DIRECTORY)
+            get_filename_component (_${_PYTHON_PREFIX}_PREFIX "${_${_PYTHON_PREFIX}_PREFIX}" DIRECTORY)
+            list (APPEND _${_PYTHON_PREFIX}_INCLUDE_HINTS "${_${_PYTHON_PREFIX}_PREFIX}")
+          endif()
+        endif()
+
+        _python_get_frameworks (_${_PYTHON_PREFIX}_FRAMEWORK_PATHS VERSION ${_${_PYTHON_PREFIX}_VERSION})
+        _python_get_registries (_${_PYTHON_PREFIX}_REGISTRY_PATHS VERSION ${_${_PYTHON_PREFIX}_VERSION})
+        _python_get_path_suffixes (_${_PYTHON_PREFIX}_PATH_SUFFIXES VERSION ${_${_PYTHON_PREFIX}_VERSION} INCLUDE)
+
+        if (APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "FIRST")
+          find_path (_${_PYTHON_PREFIX}_INCLUDE_DIR
+                     NAMES ${_${_PYTHON_PREFIX}_INCLUDE_NAMES}
+                     HINTS ${_${_PYTHON_PREFIX}_INCLUDE_HINTS} ${_${_PYTHON_PREFIX}_HINTS}
+                     PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
+                           ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                     PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                     NO_CMAKE_PATH
+                     NO_CMAKE_ENVIRONMENT_PATH
+                     NO_SYSTEM_ENVIRONMENT_PATH
+                     NO_CMAKE_SYSTEM_PATH)
+        endif()
+
+        if (WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "FIRST")
+          find_path (_${_PYTHON_PREFIX}_INCLUDE_DIR
+                     NAMES ${_${_PYTHON_PREFIX}_INCLUDE_NAMES}
+                     HINTS ${_${_PYTHON_PREFIX}_INCLUDE_HINTS} ${_${_PYTHON_PREFIX}_HINTS}
+                     PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
+                           ${_${_PYTHON_PREFIX}_REGISTRY_PATHS}
+                     PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                     NO_SYSTEM_ENVIRONMENT_PATH
+                     NO_CMAKE_SYSTEM_PATH)
+        endif()
+
+        if (APPLE AND _${_PYTHON_PREFIX}_FIND_FRAMEWORK STREQUAL "LAST")
+          set (__${_PYTHON_PREFIX}_FRAMEWORK_PATHS ${_${_PYTHON_PREFIX}_FRAMEWORK_PATHS})
+        else()
+          unset (__${_PYTHON_PREFIX}_FRAMEWORK_PATHS)
+        endif()
+
+        if (WIN32 AND _${_PYTHON_PREFIX}_FIND_REGISTRY STREQUAL "LAST")
+          set (__${_PYTHON_PREFIX}_REGISTRY_PATHS ${_${_PYTHON_PREFIX}_REGISTRY_PATHS})
+        else()
+          unset (__${_PYTHON_PREFIX}_REGISTRY_PATHS)
+        endif()
+
+        find_path (_${_PYTHON_PREFIX}_INCLUDE_DIR
+                   NAMES ${_${_PYTHON_PREFIX}_INCLUDE_NAMES}
+                   HINTS ${_${_PYTHON_PREFIX}_INCLUDE_HINTS} ${_${_PYTHON_PREFIX}_HINTS}
+                   PATHS ${_${_PYTHON_PREFIX}_VIRTUALENV_PATHS}
+                         ${__${_PYTHON_PREFIX}_FRAMEWORK_PATHS}
+                         ${__${_PYTHON_PREFIX}_REGISTRY_PATHS}
+                   PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES}
+                   NO_SYSTEM_ENVIRONMENT_PATH
+                   NO_CMAKE_SYSTEM_PATH)
+      endif()
+
+      # search header file in standard locations
+      find_path (_${_PYTHON_PREFIX}_INCLUDE_DIR
+                 NAMES ${_${_PYTHON_PREFIX}_INCLUDE_NAMES})
+
+      break()
+    endwhile()
+
+    set (${_PYTHON_PREFIX}_INCLUDE_DIRS "${_${_PYTHON_PREFIX}_INCLUDE_DIR}")
+
+    if (_${_PYTHON_PREFIX}_INCLUDE_DIR AND NOT EXISTS "${_${_PYTHON_PREFIX}_INCLUDE_DIR}")
+      set (_${_PYTHON_PREFIX}_Development_REASON_FAILURE "Cannot find the directory \"${_${_PYTHON_PREFIX}_INCLUDE_DIR}\"")
+      set_property (CACHE _${_PYTHON_PREFIX}_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_INCLUDE_DIR-NOTFOUND")
+    endif()
+
+    if (_${_PYTHON_PREFIX}_INCLUDE_DIR)
+      # retrieve version from header file
+      _python_get_version (INCLUDE PREFIX _${_PYTHON_PREFIX}_INC_)
+      if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+        if ("${_${_PYTHON_PREFIX}_INC_VERSION_MAJOR}.${_${_PYTHON_PREFIX}_INC_VERSION_MINOR}"
+            VERSION_EQUAL _${_PYTHON_PREFIX}_VERSION)
+          # update versioning
+          set (_${_PYTHON_PREFIX}_VERSION ${_${_PYTHON_PREFIX}_INC_VERSION})
+          set (_${_PYTHON_PREFIX}_VERSION_PATCH ${_${_PYTHON_PREFIX}_INC_VERSION_PATCH})
+        endif()
+      else()
+        set (_${_PYTHON_PREFIX}_VERSION ${_${_PYTHON_PREFIX}_INC_VERSION})
+        set (_${_PYTHON_PREFIX}_VERSION_MAJOR ${_${_PYTHON_PREFIX}_INC_VERSION_MAJOR})
+        set (_${_PYTHON_PREFIX}_VERSION_MINOR ${_${_PYTHON_PREFIX}_INC_VERSION_MINOR})
+        set (_${_PYTHON_PREFIX}_VERSION_PATCH ${_${_PYTHON_PREFIX}_INC_VERSION_PATCH})
+      endif()
+    endif()
+  endif()
+
+  if (NOT ${_PYTHON_PREFIX}_Interpreter_FOUND AND NOT ${_PYTHON_PREFIX}_Compiler_FOUND)
+    # set public version information
+    set (${_PYTHON_PREFIX}_VERSION ${_${_PYTHON_PREFIX}_VERSION})
+    set (${_PYTHON_PREFIX}_VERSION_MAJOR ${_${_PYTHON_PREFIX}_VERSION_MAJOR})
+    set (${_PYTHON_PREFIX}_VERSION_MINOR ${_${_PYTHON_PREFIX}_VERSION_MINOR})
+    set (${_PYTHON_PREFIX}_VERSION_PATCH ${_${_PYTHON_PREFIX}_VERSION_PATCH})
+  endif()
+
+  # define public variables
+  if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
+    set (${_PYTHON_PREFIX}_LIBRARY_DEBUG "${_${_PYTHON_PREFIX}_LIBRARY_DEBUG}")
+    _python_select_library_configurations (${_PYTHON_PREFIX})
+
+    set (${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE "${_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE}")
+    set (${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG "${_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG}")
+
+    if (_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE)
+      set (${_PYTHON_PREFIX}_RUNTIME_LIBRARY "${_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE}")
+    elseif (_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG)
+      set (${_PYTHON_PREFIX}_RUNTIME_LIBRARY "${_${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG}")
+    else()
+      set (${_PYTHON_PREFIX}_RUNTIME_LIBRARY "${_PYTHON_PREFIX}_RUNTIME_LIBRARY-NOTFOUND")
+    endif()
+
+    _python_set_library_dirs (${_PYTHON_PREFIX}_LIBRARY_DIRS
+                              _${_PYTHON_PREFIX}_LIBRARY_RELEASE
+                              _${_PYTHON_PREFIX}_LIBRARY_DEBUG)
+    if (UNIX)
+      if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "${CMAKE_SHARED_LIBRARY_SUFFIX}$")
+        set (${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DIRS ${${_PYTHON_PREFIX}_LIBRARY_DIRS})
+      endif()
+    else()
+      _python_set_library_dirs (${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DIRS
+                                _${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE
+                                _${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG)
+    endif()
+  endif()
+
+  if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE OR _${_PYTHON_PREFIX}_INCLUDE_DIR)
+    if (${_PYTHON_PREFIX}_Interpreter_FOUND OR ${_PYTHON_PREFIX}_Compiler_FOUND)
+      # development environment must be compatible with interpreter/compiler
+      if ("${_${_PYTHON_PREFIX}_VERSION_MAJOR}.${_${_PYTHON_PREFIX}_VERSION_MINOR}" VERSION_EQUAL "${${_PYTHON_PREFIX}_VERSION_MAJOR}.${${_PYTHON_PREFIX}_VERSION_MINOR}"
+          AND "${_${_PYTHON_PREFIX}_INC_VERSION_MAJOR}.${_${_PYTHON_PREFIX}_INC_VERSION_MINOR}" VERSION_EQUAL "${_${_PYTHON_PREFIX}_VERSION_MAJOR}.${_${_PYTHON_PREFIX}_VERSION_MINOR}")
+        _python_set_development_module_found (Module)
+        _python_set_development_module_found (Embed)
+      endif()
+    elseif (${_PYTHON_PREFIX}_VERSION_MAJOR VERSION_EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR
+        AND "${_${_PYTHON_PREFIX}_INC_VERSION_MAJOR}.${_${_PYTHON_PREFIX}_INC_VERSION_MINOR}" VERSION_EQUAL "${_${_PYTHON_PREFIX}_VERSION_MAJOR}.${_${_PYTHON_PREFIX}_VERSION_MINOR}")
+      _python_set_development_module_found (Module)
+      _python_set_development_module_found (Embed)
+    endif()
+    if (DEFINED _${_PYTHON_PREFIX}_FIND_ABI AND
+        (NOT _${_PYTHON_PREFIX}_ABI IN_LIST _${_PYTHON_PREFIX}_ABIFLAGS
+          OR NOT _${_PYTHON_PREFIX}_INC_ABI IN_LIST _${_PYTHON_PREFIX}_ABIFLAGS))
+      set (${_PYTHON_PREFIX}_Development.Module_FOUND FALSE)
+      set (${_PYTHON_PREFIX}_Development.Embed_FOUND FALSE)
+    endif()
+  endif()
+
+  if (( ${_PYTHON_PREFIX}_Development.Module_FOUND
+        AND ${_PYTHON_PREFIX}_Development.Embed_FOUND)
+      OR (NOT "Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
+        AND ${_PYTHON_PREFIX}_Development.Embed_FOUND)
+      OR (NOT "Development.Embed" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
+        AND ${_PYTHON_PREFIX}_Development.Module_FOUND))
+    unset (_${_PYTHON_PREFIX}_Development_REASON_FAILURE)
+  endif()
+
+  if ("Development" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
+      AND ${_PYTHON_PREFIX}_Development.Module_FOUND
+      AND ${_PYTHON_PREFIX}_Development.Embed_FOUND)
+    set (${_PYTHON_PREFIX}_Development_FOUND TRUE)
+  endif()
+
+  if ((${_PYTHON_PREFIX}_Development.Module_FOUND
+      OR ${_PYTHON_PREFIX}_Development.Embed_FOUND)
+    AND EXISTS "${_${_PYTHON_PREFIX}_INCLUDE_DIR}/PyPy.h")
+  # retrieve PyPy version
+  file (STRINGS "${_${_PYTHON_PREFIX}_INCLUDE_DIR}/patchlevel.h" ${_PYTHON_PREFIX}_PyPy_VERSION
+                REGEX "^#define[ \t]+PYPY_VERSION[ \t]+\"[^\"]+\"")
+  string (REGEX REPLACE "^#define[ \t]+PYPY_VERSION[ \t]+\"([^\"]+)\".*" "\\1"
+                ${_PYTHON_PREFIX}_PyPy_VERSION "${${_PYTHON_PREFIX}_PyPy_VERSION}")
+  endif()
+
+  unset(${_PYTHON_PREFIX}_LINK_OPTIONS)
+  if (${_PYTHON_PREFIX}_Development.Embed_FOUND AND APPLE
+      AND ${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "${CMAKE_SHARED_LIBRARY_SUFFIX}$")
+    # rpath must be specified if python is part of a framework
+    unset(_${_PYTHON_PREFIX}_is_prefix)
+    foreach (_${_PYTHON_PREFIX}_implementation IN LISTS _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS)
+      foreach (_${_PYTHON_PREFIX}_framework IN LISTS _${_PYTHON_PREFIX}_${_${_PYTHON_PREFIX}_implementation}_FRAMEWORKS)
+        cmake_path (IS_PREFIX _${_PYTHON_PREFIX}_framework "${${_PYTHON_PREFIX}_LIBRARY_RELEASE}" _${_PYTHON_PREFIX}_is_prefix)
+        if (_${_PYTHON_PREFIX}_is_prefix)
+          cmake_path (GET _${_PYTHON_PREFIX}_framework PARENT_PATH _${_PYTHON_PREFIX}_framework)
+          set (${_PYTHON_PREFIX}_LINK_OPTIONS "LINKER:-rpath,${_${_PYTHON_PREFIX}_framework}")
+          break()
+        endif()
+      endforeach()
+      if (_${_PYTHON_PREFIX}_is_prefix)
+        break()
+      endif()
+    endforeach()
+    unset(_${_PYTHON_PREFIX}_implementation)
+    unset(_${_PYTHON_PREFIX}_framework)
+    unset(_${_PYTHON_PREFIX}_is_prefix)
+  endif()
+
+  if (NOT DEFINED ${_PYTHON_PREFIX}_SOABI)
+    _python_get_config_var (${_PYTHON_PREFIX}_SOABI SOABI)
+  endif()
+
+  _python_compute_development_signature (Module)
+  _python_compute_development_signature (Embed)
+
+  # Restore the original find library ordering
+  if (DEFINED _${_PYTHON_PREFIX}_CMAKE_FIND_LIBRARY_SUFFIXES)
+    set (CMAKE_FIND_LIBRARY_SUFFIXES ${_${_PYTHON_PREFIX}_CMAKE_FIND_LIBRARY_SUFFIXES})
+  endif()
+
+  if (${_PYTHON_PREFIX}_ARTIFACTS_INTERACTIVE)
+    if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
+      set (${_PYTHON_PREFIX}_LIBRARY "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}" CACHE FILEPATH "${_PYTHON_PREFIX} Library")
+    endif()
+    if ("INCLUDE_DIR" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS)
+      set (${_PYTHON_PREFIX}_INCLUDE_DIR "${_${_PYTHON_PREFIX}_INCLUDE_DIR}" CACHE FILEPATH "${_PYTHON_PREFIX} Include Directory")
+    endif()
+  endif()
+
+  _python_mark_as_internal (_${_PYTHON_PREFIX}_LIBRARY_RELEASE
+                            _${_PYTHON_PREFIX}_LIBRARY_DEBUG
+                            _${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE
+                            _${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG
+                            _${_PYTHON_PREFIX}_INCLUDE_DIR
+                            _${_PYTHON_PREFIX}_CONFIG
+                            _${_PYTHON_PREFIX}_DEVELOPMENT_MODULE_SIGNATURE
+                            _${_PYTHON_PREFIX}_DEVELOPMENT_EMBED_SIGNATURE)
+endif()
+
+if (${_PYTHON_PREFIX}_FIND_REQUIRED_NumPy)
+  list (APPEND _${_PYTHON_PREFIX}_REQUIRED_VARS ${_PYTHON_PREFIX}_NumPy_INCLUDE_DIRS)
+endif()
+if ("NumPy" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS AND ${_PYTHON_PREFIX}_Interpreter_FOUND)
+  list (APPEND _${_PYTHON_PREFIX}_CACHED_VARS _${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR)
+
+  if (DEFINED ${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR
+      AND IS_ABSOLUTE "${${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR}")
+    set (_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR "${${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR}" CACHE INTERNAL "")
+  elseif (DEFINED _${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR)
+    # compute numpy signature. Depends on interpreter and development signatures
+    string (MD5 __${_PYTHON_PREFIX}_NUMPY_SIGNATURE "${_${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE}:${_${_PYTHON_PREFIX}_DEVELOPMENT_MODULE_SIGNATURE}:${_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR}")
+    if (NOT __${_PYTHON_PREFIX}_NUMPY_SIGNATURE STREQUAL _${_PYTHON_PREFIX}_NUMPY_SIGNATURE
+        OR NOT EXISTS "${_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR}")
+      unset (_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR CACHE)
+      unset (_${_PYTHON_PREFIX}_NUMPY_SIGNATURE CACHE)
+    endif()
+  endif()
+
+  if (NOT _${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR)
+    execute_process(COMMAND ${${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
+                            "import sys\ntry: import numpy; sys.stdout.write(numpy.get_include())\nexcept:pass\n"
+                    RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
+                    OUTPUT_VARIABLE _${_PYTHON_PREFIX}_NumPy_PATH
+                    ERROR_QUIET
+                    OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+    if (NOT _${_PYTHON_PREFIX}_RESULT)
+      find_path (_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR
+                 NAMES "numpy/arrayobject.h" "numpy/numpyconfig.h"
+                 HINTS "${_${_PYTHON_PREFIX}_NumPy_PATH}"
+                 NO_DEFAULT_PATH)
+    endif()
+  endif()
+
+  set (${_PYTHON_PREFIX}_NumPy_INCLUDE_DIRS "${_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR}")
+
+  if(_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR AND NOT EXISTS "${_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR}")
+    set (_${_PYTHON_PREFIX}_NumPy_REASON_FAILURE "Cannot find the directory \"${_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR}\"")
+    set_property (CACHE _${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR PROPERTY VALUE "${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR-NOTFOUND")
+  endif()
+
+  if (_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR)
+    execute_process (COMMAND ${${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
+                             "import sys\ntry: import numpy; sys.stdout.write(numpy.__version__)\nexcept:pass\n"
+                     RESULT_VARIABLE _${_PYTHON_PREFIX}_RESULT
+                     OUTPUT_VARIABLE _${_PYTHON_PREFIX}_NumPy_VERSION)
+    if (NOT _${_PYTHON_PREFIX}_RESULT)
+      set (${_PYTHON_PREFIX}_NumPy_VERSION "${_${_PYTHON_PREFIX}_NumPy_VERSION}")
+    else()
+      unset (${_PYTHON_PREFIX}_NumPy_VERSION)
+    endif()
+
+    # final step: set NumPy founded only if Development.Module component is founded as well
+    set(${_PYTHON_PREFIX}_NumPy_FOUND ${${_PYTHON_PREFIX}_Development.Module_FOUND})
+  else()
+    set (${_PYTHON_PREFIX}_NumPy_FOUND FALSE)
+  endif()
+
+  if (${_PYTHON_PREFIX}_NumPy_FOUND)
+    unset (_${_PYTHON_PREFIX}_NumPy_REASON_FAILURE)
+
+    # compute and save numpy signature
+    string (MD5 __${_PYTHON_PREFIX}_NUMPY_SIGNATURE "${_${_PYTHON_PREFIX}_INTERPRETER_SIGNATURE}:${_${_PYTHON_PREFIX}_DEVELOPMENT_MODULE_SIGNATURE}:${${_PYTHON_PREFIX}_NumPyINCLUDE_DIR}")
+    set (_${_PYTHON_PREFIX}_NUMPY_SIGNATURE "${__${_PYTHON_PREFIX}_NUMPY_SIGNATURE}" CACHE INTERNAL "")
+  else()
+    unset (_${_PYTHON_PREFIX}_NUMPY_SIGNATURE CACHE)
+  endif()
+
+  if (${_PYTHON_PREFIX}_ARTIFACTS_INTERACTIVE)
+    set (${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR "${_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR}" CACHE FILEPATH "${_PYTHON_PREFIX} NumPy Include Directory")
+  endif()
+
+  _python_mark_as_internal (_${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR
+                            _${_PYTHON_PREFIX}_NUMPY_SIGNATURE)
+endif()
+
+# final validation
+if (${_PYTHON_PREFIX}_VERSION_MAJOR AND
+    NOT ${_PYTHON_PREFIX}_VERSION_MAJOR VERSION_EQUAL _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
+  _python_display_failure ("Could NOT find ${_PYTHON_PREFIX}: Found unsuitable major version \"${${_PYTHON_PREFIX}_VERSION_MAJOR}\", but required major version is exact version \"${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}\"")
+
+  cmake_policy(POP)
+  return()
+endif()
+
+unset (_${_PYTHON_PREFIX}_REASON_FAILURE)
+foreach (_${_PYTHON_PREFIX}_COMPONENT IN ITEMS Interpreter Compiler Development NumPy)
+  if (_${_PYTHON_PREFIX}_${_${_PYTHON_PREFIX}_COMPONENT}_REASON_FAILURE)
+    string (APPEND _${_PYTHON_PREFIX}_REASON_FAILURE "\n        ${_${_PYTHON_PREFIX}_COMPONENT}: ${_${_PYTHON_PREFIX}_${_${_PYTHON_PREFIX}_COMPONENT}_REASON_FAILURE}")
+    unset (_${_PYTHON_PREFIX}_${_${_PYTHON_PREFIX}_COMPONENT}_REASON_FAILURE)
+  endif()
+endforeach()
+
+find_package_handle_standard_args (${_PYTHON_PREFIX}
+                                   REQUIRED_VARS ${_${_PYTHON_PREFIX}_REQUIRED_VARS}
+                                   VERSION_VAR ${_PYTHON_PREFIX}_VERSION
+                                   HANDLE_VERSION_RANGE
+                                   HANDLE_COMPONENTS
+                                   REASON_FAILURE_MESSAGE "${_${_PYTHON_PREFIX}_REASON_FAILURE}")
+
+# Create imported targets and helper functions
+if(_${_PYTHON_PREFIX}_CMAKE_ROLE STREQUAL "PROJECT")
+  if ("Interpreter" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
+      AND ${_PYTHON_PREFIX}_Interpreter_FOUND
+      AND NOT TARGET ${_PYTHON_PREFIX}::Interpreter)
+    add_executable (${_PYTHON_PREFIX}::Interpreter IMPORTED)
+    set_property (TARGET ${_PYTHON_PREFIX}::Interpreter
+                  PROPERTY IMPORTED_LOCATION "${${_PYTHON_PREFIX}_EXECUTABLE}")
+  endif()
+
+  if ("Compiler" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
+      AND ${_PYTHON_PREFIX}_Compiler_FOUND
+      AND NOT TARGET ${_PYTHON_PREFIX}::Compiler)
+    add_executable (${_PYTHON_PREFIX}::Compiler IMPORTED)
+    set_property (TARGET ${_PYTHON_PREFIX}::Compiler
+                  PROPERTY IMPORTED_LOCATION "${${_PYTHON_PREFIX}_COMPILER}")
+  endif()
+
+  if (("Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
+        AND ${_PYTHON_PREFIX}_Development.Module_FOUND)
+      OR ("Development.Embed" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
+        AND ${_PYTHON_PREFIX}_Development.Embed_FOUND))
+
+    macro (__PYTHON_IMPORT_LIBRARY __name)
+      if (${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "${CMAKE_SHARED_LIBRARY_SUFFIX}$"
+          OR ${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE)
+        set (_${_PYTHON_PREFIX}_LIBRARY_TYPE SHARED)
+      else()
+        set (_${_PYTHON_PREFIX}_LIBRARY_TYPE STATIC)
+      endif()
+
+      if (NOT TARGET ${__name})
+        add_library (${__name} ${_${_PYTHON_PREFIX}_LIBRARY_TYPE} IMPORTED)
+      endif()
+
+      set_property (TARGET ${__name}
+                    PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${${_PYTHON_PREFIX}_INCLUDE_DIRS}")
+
+      if (${_PYTHON_PREFIX}_LIBRARY_RELEASE AND ${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE)
+        # System manage shared libraries in two parts: import and runtime
+        if (${_PYTHON_PREFIX}_LIBRARY_RELEASE AND ${_PYTHON_PREFIX}_LIBRARY_DEBUG)
+          set_property (TARGET ${__name} PROPERTY IMPORTED_CONFIGURATIONS RELEASE DEBUG)
+          set_target_properties (${__name}
+                                 PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
+                                            IMPORTED_IMPLIB_RELEASE "${${_PYTHON_PREFIX}_LIBRARY_RELEASE}"
+                                            IMPORTED_LOCATION_RELEASE "${${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE}")
+          set_target_properties (${__name}
+                                 PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
+                                            IMPORTED_IMPLIB_DEBUG "${${_PYTHON_PREFIX}_LIBRARY_DEBUG}"
+                                            IMPORTED_LOCATION_DEBUG "${${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG}")
+        else()
+          set_target_properties (${__name}
+                                 PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+                                            IMPORTED_IMPLIB "${${_PYTHON_PREFIX}_LIBRARIES}"
+                                            IMPORTED_LOCATION "${${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE}")
+        endif()
+      else()
+        if (${_PYTHON_PREFIX}_LIBRARY_RELEASE AND ${_PYTHON_PREFIX}_LIBRARY_DEBUG)
+          set_property (TARGET ${__name} PROPERTY IMPORTED_CONFIGURATIONS RELEASE DEBUG)
+          set_target_properties (${__name}
+                                 PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
+                                            IMPORTED_LOCATION_RELEASE "${${_PYTHON_PREFIX}_LIBRARY_RELEASE}")
+          set_target_properties (${__name}
+                                 PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
+                                            IMPORTED_LOCATION_DEBUG "${${_PYTHON_PREFIX}_LIBRARY_DEBUG}")
+        else()
+          set_target_properties (${__name}
+                                 PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+                                            IMPORTED_LOCATION "${${_PYTHON_PREFIX}_LIBRARY_RELEASE}")
+        endif()
+      endif()
+
+      if (_${_PYTHON_PREFIX}_LIBRARY_TYPE STREQUAL "STATIC")
+        # extend link information with dependent libraries
+        _python_get_config_var (_${_PYTHON_PREFIX}_LINK_LIBRARIES LIBS)
+        if (_${_PYTHON_PREFIX}_LINK_LIBRARIES)
+          set_property (TARGET ${__name}
+                        PROPERTY INTERFACE_LINK_LIBRARIES ${_${_PYTHON_PREFIX}_LINK_LIBRARIES})
+        endif()
+      endif()
+
+      if (${_PYTHON_PREFIX}_LINK_OPTIONS
+          AND _${_PYTHON_PREFIX}_LIBRARY_TYPE STREQUAL "SHARED")
+        set_property (TARGET ${__name} PROPERTY INTERFACE_LINK_OPTIONS "${${_PYTHON_PREFIX}_LINK_OPTIONS}")
+      endif()
+    endmacro()
+
+    if (${_PYTHON_PREFIX}_Development.Embed_FOUND)
+      __python_import_library (${_PYTHON_PREFIX}::Python)
+    endif()
+
+    if (${_PYTHON_PREFIX}_Development.Module_FOUND)
+      if ("LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_MODULE_ARTIFACTS)
+        # On Windows/CYGWIN/MSYS, Python::Module is the same as Python::Python
+        # but ALIAS cannot be used because the imported library is not GLOBAL.
+        __python_import_library (${_PYTHON_PREFIX}::Module)
+      else()
+        if (NOT TARGET ${_PYTHON_PREFIX}::Module)
+          add_library (${_PYTHON_PREFIX}::Module INTERFACE IMPORTED)
+        endif()
+        set_property (TARGET ${_PYTHON_PREFIX}::Module
+                      PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${${_PYTHON_PREFIX}_INCLUDE_DIRS}")
+
+        # When available, enforce shared library generation with undefined symbols
+        if (APPLE)
+          set_property (TARGET ${_PYTHON_PREFIX}::Module
+                        PROPERTY INTERFACE_LINK_OPTIONS "LINKER:-undefined,dynamic_lookup")
+        endif()
+        if (CMAKE_SYSTEM_NAME STREQUAL "SunOS")
+          set_property (TARGET ${_PYTHON_PREFIX}::Module
+                        PROPERTY INTERFACE_LINK_OPTIONS "LINKER:-z,nodefs")
+        endif()
+        if (CMAKE_SYSTEM_NAME STREQUAL "AIX")
+          set_property (TARGET ${_PYTHON_PREFIX}::Module
+                        PROPERTY INTERFACE_LINK_OPTIONS "LINKER:-b,erok")
+        endif()
+      endif()
+    endif()
+
+    #
+    # PYTHON_ADD_LIBRARY (<name> [STATIC|SHARED|MODULE] src1 src2 ... srcN)
+    # It is used to build modules for python.
+    #
+    function (__${_PYTHON_PREFIX}_ADD_LIBRARY prefix name)
+      cmake_parse_arguments (PARSE_ARGV 2 PYTHON_ADD_LIBRARY "STATIC;SHARED;MODULE;WITH_SOABI" "" "")
+
+      if (PYTHON_ADD_LIBRARY_STATIC)
+        set (type STATIC)
+      elseif (PYTHON_ADD_LIBRARY_SHARED)
+        set (type SHARED)
+      else()
+        set (type MODULE)
+      endif()
+
+      if (type STREQUAL "MODULE" AND NOT TARGET ${prefix}::Module)
+        message (SEND_ERROR "${prefix}_ADD_LIBRARY: dependent target '${prefix}::Module' is not defined.\n   Did you miss to request COMPONENT 'Development.Module'?")
+        return()
+      endif()
+      if (NOT type STREQUAL "MODULE" AND NOT TARGET ${prefix}::Python)
+        message (SEND_ERROR "${prefix}_ADD_LIBRARY: dependent target '${prefix}::Python' is not defined.\n   Did you miss to request COMPONENT 'Development.Embed'?")
+        return()
+      endif()
+
+      add_library (${name} ${type} ${PYTHON_ADD_LIBRARY_UNPARSED_ARGUMENTS})
+
+      get_property (type TARGET ${name} PROPERTY TYPE)
+
+      if (type STREQUAL "MODULE_LIBRARY")
+        target_link_libraries (${name} PRIVATE ${prefix}::Module)
+        # customize library name to follow module name rules
+        set_property (TARGET ${name} PROPERTY PREFIX "")
+        if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
+          set_property (TARGET ${name} PROPERTY SUFFIX ".pyd")
+        endif()
+
+        if (PYTHON_ADD_LIBRARY_WITH_SOABI AND ${prefix}_SOABI)
+          get_property (suffix TARGET ${name} PROPERTY SUFFIX)
+          if (NOT suffix)
+            set (suffix "${CMAKE_SHARED_MODULE_SUFFIX}")
+          endif()
+          set_property (TARGET ${name} PROPERTY SUFFIX ".${${prefix}_SOABI}${suffix}")
+        endif()
+      else()
+        if (PYTHON_ADD_LIBRARY_WITH_SOABI)
+          message (AUTHOR_WARNING "Find${prefix}: Option `WITH_SOABI` is only supported for `MODULE` library type.")
+        endif()
+        target_link_libraries (${name} PRIVATE ${prefix}::Python)
+      endif()
+    endfunction()
+  endif()
+
+  if ("NumPy" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS AND ${_PYTHON_PREFIX}_NumPy_FOUND
+      AND NOT TARGET ${_PYTHON_PREFIX}::NumPy AND TARGET ${_PYTHON_PREFIX}::Module)
+    add_library (${_PYTHON_PREFIX}::NumPy INTERFACE IMPORTED)
+    set_property (TARGET ${_PYTHON_PREFIX}::NumPy
+                  PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${${_PYTHON_PREFIX}_NumPy_INCLUDE_DIRS}")
+    target_link_libraries (${_PYTHON_PREFIX}::NumPy INTERFACE ${_PYTHON_PREFIX}::Module)
+  endif()
+endif()
+
+# final clean-up
+
+# Restore CMAKE_FIND_APPBUNDLE
+if (DEFINED _${_PYTHON_PREFIX}_CMAKE_FIND_APPBUNDLE)
+  set (CMAKE_FIND_APPBUNDLE ${_${_PYTHON_PREFIX}_CMAKE_FIND_APPBUNDLE})
+  unset (_${_PYTHON_PREFIX}_CMAKE_FIND_APPBUNDLE)
+else()
+  unset (CMAKE_FIND_APPBUNDLE)
+endif()
+# Restore CMAKE_FIND_FRAMEWORK
+if (DEFINED _${_PYTHON_PREFIX}_CMAKE_FIND_FRAMEWORK)
+  set (CMAKE_FIND_FRAMEWORK ${_${_PYTHON_PREFIX}_CMAKE_FIND_FRAMEWORK})
+  unset (_${_PYTHON_PREFIX}_CMAKE_FIND_FRAMEWORK)
+else()
+  unset (CMAKE_FIND_FRAMEWORK)
+endif()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/FindPython2.cmake b/share/cmake-3.22/Modules/FindPython2.cmake
new file mode 100644
index 0000000..0888fad
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindPython2.cmake
@@ -0,0 +1,435 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindPython2
+-----------
+
+.. versionadded:: 3.12
+
+Find Python 2 interpreter, compiler and development environment (include
+directories and libraries).
+
+.. versionadded:: 3.19
+  When a version is requested, it can be specified as a simple value or as a
+  range. For a detailed description of version range usage and capabilities,
+  refer to the :command:`find_package` command.
+
+The following components are supported:
+
+* ``Interpreter``: search for Python 2 interpreter
+* ``Compiler``: search for Python 2 compiler. Only offered by IronPython.
+* ``Development``: search for development artifacts (include directories and
+  libraries).
+
+  .. versionadded:: 3.18
+    This component includes two sub-components which can be specified
+    independently:
+
+    * ``Development.Module``: search for artifacts for Python 2 module
+      developments.
+    * ``Development.Embed``: search for artifacts for Python 2 embedding
+      developments.
+
+* ``NumPy``: search for NumPy include directories.
+
+.. versionadded:: 3.14
+  Added the ``NumPy`` component.
+
+If no ``COMPONENTS`` are specified, ``Interpreter`` is assumed.
+
+If component ``Development`` is specified, it implies sub-components
+``Development.Module`` and ``Development.Embed``.
+
+To ensure consistent versions between components ``Interpreter``, ``Compiler``,
+``Development`` (or one of its sub-components) and ``NumPy``, specify all
+components at the same time::
+
+  find_package (Python2 COMPONENTS Interpreter Development)
+
+This module looks only for version 2 of Python. This module can be used
+concurrently with :module:`FindPython3` module to use both Python versions.
+
+The :module:`FindPython` module can be used if Python version does not matter
+for you.
+
+.. note::
+
+  If components ``Interpreter`` and ``Development`` (or one of its
+  sub-components) are both specified, this module search only for interpreter
+  with same platform architecture as the one defined by ``CMake``
+  configuration. This constraint does not apply if only ``Interpreter``
+  component is specified.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+This module defines the following :ref:`Imported Targets <Imported Targets>`:
+
+.. versionchanged:: 3.14
+  :ref:`Imported Targets <Imported Targets>` are only created when
+  :prop_gbl:`CMAKE_ROLE` is ``PROJECT``.
+
+``Python2::Interpreter``
+  Python 2 interpreter. Target defined if component ``Interpreter`` is found.
+``Python2::Compiler``
+  Python 2 compiler. Target defined if component ``Compiler`` is found.
+``Python2::Module``
+  .. versionadded:: 3.15
+
+  Python 2 library for Python module. Target defined if component
+  ``Development.Module`` is found.
+
+``Python2::Python``
+  Python 2 library for Python embedding. Target defined if component
+  ``Development.Embed`` is found.
+
+``Python2::NumPy``
+  .. versionadded:: 3.14
+
+  NumPy library for Python 2. Target defined if component ``NumPy`` is found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project
+(see :ref:`Standard Variable Names <CMake Developer Standard Variable Names>`):
+
+``Python2_FOUND``
+  System has the Python 2 requested components.
+``Python2_Interpreter_FOUND``
+  System has the Python 2 interpreter.
+``Python2_EXECUTABLE``
+  Path to the Python 2 interpreter.
+``Python2_INTERPRETER_ID``
+  A short string unique to the interpreter. Possible values include:
+    * Python
+    * ActivePython
+    * Anaconda
+    * Canopy
+    * IronPython
+    * PyPy
+``Python2_STDLIB``
+  Standard platform independent installation directory.
+
+  Information returned by
+  ``distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=True)``
+  or else ``sysconfig.get_path('stdlib')``.
+``Python2_STDARCH``
+  Standard platform dependent installation directory.
+
+  Information returned by
+  ``distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=True)``
+  or else ``sysconfig.get_path('platstdlib')``.
+``Python2_SITELIB``
+  Third-party platform independent installation directory.
+
+  Information returned by
+  ``distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=False)``
+  or else ``sysconfig.get_path('purelib')``.
+``Python2_SITEARCH``
+  Third-party platform dependent installation directory.
+
+  Information returned by
+  ``distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=False)``
+  or else ``sysconfig.get_path('platlib')``.
+``Python2_Compiler_FOUND``
+  System has the Python 2 compiler.
+``Python2_COMPILER``
+  Path to the Python 2 compiler. Only offered by IronPython.
+``Python2_COMPILER_ID``
+  A short string unique to the compiler. Possible values include:
+    * IronPython
+
+``Python2_DOTNET_LAUNCHER``
+  .. versionadded:: 3.18
+
+  The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
+
+``Python2_Development_FOUND``
+  System has the Python 2 development artifacts.
+
+``Python2_Development.Module_FOUND``
+  .. versionadded:: 3.18
+
+  System has the Python 2 development artifacts for Python module.
+
+``Python2_Development.Embed_FOUND``
+  .. versionadded:: 3.18
+
+  System has the Python 2 development artifacts for Python embedding.
+
+``Python2_INCLUDE_DIRS``
+  The Python 2 include directories.
+
+``Python2_LINK_OPTIONS``
+  .. versionadded:: 3.19
+
+  The Python 2 link options. Some configurations require specific link options
+  for a correct build and execution.
+
+``Python2_LIBRARIES``
+  The Python 2 libraries.
+``Python2_LIBRARY_DIRS``
+  The Python 2 library directories.
+``Python2_RUNTIME_LIBRARY_DIRS``
+  The Python 2 runtime library directories.
+``Python2_VERSION``
+  Python 2 version.
+``Python2_VERSION_MAJOR``
+  Python 2 major version.
+``Python2_VERSION_MINOR``
+  Python 2 minor version.
+``Python2_VERSION_PATCH``
+  Python 2 patch version.
+
+``Python2_PyPy_VERSION``
+  .. versionadded:: 3.18
+
+  Python 2 PyPy version.
+
+``Python2_NumPy_FOUND``
+  .. versionadded:: 3.14
+
+  System has the NumPy.
+
+``Python2_NumPy_INCLUDE_DIRS``
+  .. versionadded:: 3.14
+
+  The NumPy include directories.
+
+``Python2_NumPy_VERSION``
+  .. versionadded:: 3.14
+
+  The NumPy version.
+
+Hints
+^^^^^
+
+``Python2_ROOT_DIR``
+  Define the root directory of a Python 2 installation.
+
+``Python2_USE_STATIC_LIBS``
+  * If not defined, search for shared libraries and static libraries in that
+    order.
+  * If set to TRUE, search **only** for static libraries.
+  * If set to FALSE, search **only** for shared libraries.
+
+  .. note::
+
+    This hint will be ignored on ``Windows`` because static libraries are not
+    available on this platform.
+
+``Python2_FIND_STRATEGY``
+  .. versionadded:: 3.15
+
+  This variable defines how lookup will be done.
+  The ``Python2_FIND_STRATEGY`` variable can be set to one of the following:
+
+  * ``VERSION``: Try to find the most recent version in all specified
+    locations.
+    This is the default if policy :policy:`CMP0094` is undefined or set to
+    ``OLD``.
+  * ``LOCATION``: Stops lookup as soon as a version satisfying version
+    constraints is founded.
+    This is the default if policy :policy:`CMP0094` is set to ``NEW``.
+
+``Python2_FIND_REGISTRY``
+  .. versionadded:: 3.13
+
+  On Windows the ``Python2_FIND_REGISTRY`` variable determine the order
+  of preference between registry and environment variables.
+  the ``Python2_FIND_REGISTRY`` variable can be set to one of the following:
+
+  * ``FIRST``: Try to use registry before environment variables.
+    This is the default.
+  * ``LAST``: Try to use registry after environment variables.
+  * ``NEVER``: Never try to use registry.
+
+``Python2_FIND_FRAMEWORK``
+  .. versionadded:: 3.15
+
+  On macOS the ``Python2_FIND_FRAMEWORK`` variable determine the order of
+  preference between Apple-style and unix-style package components.
+  This variable can take same values as :variable:`CMAKE_FIND_FRAMEWORK`
+  variable.
+
+  .. note::
+
+    Value ``ONLY`` is not supported so ``FIRST`` will be used instead.
+
+  If ``Python2_FIND_FRAMEWORK`` is not defined, :variable:`CMAKE_FIND_FRAMEWORK`
+  variable will be used, if any.
+
+``Python2_FIND_VIRTUALENV``
+  .. versionadded:: 3.15
+
+  This variable defines the handling of virtual environments managed by
+  ``virtualenv`` or ``conda``. It is meaningful only when a virtual environment
+  is active (i.e. the ``activate`` script has been evaluated). In this case, it
+  takes precedence over ``Python2_FIND_REGISTRY`` and ``CMAKE_FIND_FRAMEWORK``
+  variables.  The ``Python2_FIND_VIRTUALENV`` variable can be set to one of the
+  following:
+
+  * ``FIRST``: The virtual environment is used before any other standard
+    paths to look-up for the interpreter. This is the default.
+  * ``ONLY``: Only the virtual environment is used to look-up for the
+    interpreter.
+  * ``STANDARD``: The virtual environment is not used to look-up for the
+    interpreter but environment variable ``PATH`` is always considered.
+    In this case, variable ``Python2_FIND_REGISTRY`` (Windows) or
+    ``CMAKE_FIND_FRAMEWORK`` (macOS) can be set with value ``LAST`` or
+    ``NEVER`` to select preferably the interpreter from the virtual
+    environment.
+
+  .. versionadded:: 3.17
+    Added support for ``conda`` environments.
+
+  .. note::
+
+    If the component ``Development`` is requested, it is **strongly**
+    recommended to also include the component ``Interpreter`` to get expected
+    result.
+
+``Python2_FIND_IMPLEMENTATIONS``
+  .. versionadded:: 3.18
+
+  This variable defines, in an ordered list, the different implementations
+  which will be searched. The ``Python2_FIND_IMPLEMENTATIONS`` variable can
+  hold the following values:
+
+  * ``CPython``: this is the standard implementation. Various products, like
+    ``Anaconda`` or ``ActivePython``, rely on this implementation.
+  * ``IronPython``: This implementation use the ``CSharp`` language for
+    ``.NET Framework`` on top of the `Dynamic Language Runtime` (``DLR``).
+    See `IronPython <http://ironpython.net>`_.
+  * ``PyPy``: This implementation use ``RPython`` language and
+    ``RPython translation toolchain`` to produce the python interpreter.
+    See `PyPy <https://www.pypy.org>`_.
+
+  The default value is:
+
+  * Windows platform: ``CPython``, ``IronPython``
+  * Other platforms: ``CPython``
+
+  .. note::
+
+    This hint has the lowest priority of all hints, so even if, for example,
+    you specify ``IronPython`` first and ``CPython`` in second, a python
+    product based on ``CPython`` can be selected because, for example with
+    ``Python2_FIND_STRATEGY=LOCATION``, each location will be search first for
+    ``IronPython`` and second for ``CPython``.
+
+  .. note::
+
+    When ``IronPython`` is specified, on platforms other than ``Windows``, the
+    ``.Net`` interpreter (i.e. ``mono`` command) is expected to be available
+    through the ``PATH`` variable.
+
+``Python2_FIND_UNVERSIONED_NAMES``
+  .. versionadded:: 3.20
+
+  This variable defines how the generic names will be searched. Currently, it
+  only applies to the generic names of the interpreter, namely, ``python2`` and
+  ``python``.
+  The ``Python2_FIND_UNVERSIONED_NAMES`` variable can be set to one of the
+  following values:
+
+  * ``FIRST``: The generic names are searched before the more specialized ones
+    (such as ``python2.5`` for example).
+  * ``LAST``: The generic names are searched after the more specialized ones.
+    This is the default.
+  * ``NEVER``: The generic name are not searched at all.
+
+Artifacts Specification
+^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.16
+
+To solve special cases, it is possible to specify directly the artifacts by
+setting the following variables:
+
+``Python2_EXECUTABLE``
+  The path to the interpreter.
+
+``Python2_COMPILER``
+  The path to the compiler.
+
+``Python2_DOTNET_LAUNCHER``
+  .. versionadded:: 3.18
+
+  The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
+
+``Python2_LIBRARY``
+  The path to the library. It will be used to compute the
+  variables ``Python2_LIBRARIES``, ``Python2_LIBRARY_DIRS`` and
+  ``Python2_RUNTIME_LIBRARY_DIRS``.
+
+``Python2_INCLUDE_DIR``
+  The path to the directory of the ``Python`` headers. It will be used to
+  compute the variable ``Python2_INCLUDE_DIRS``.
+
+``Python2_NumPy_INCLUDE_DIR``
+  The path to the directory of the ``NumPy`` headers. It will be used to
+  compute the variable ``Python2_NumPy_INCLUDE_DIRS``.
+
+.. note::
+
+  All paths must be absolute. Any artifact specified with a relative path
+  will be ignored.
+
+.. note::
+
+  When an artifact is specified, all ``HINTS`` will be ignored and no search
+  will be performed for this artifact.
+
+  If more than one artifact is specified, it is the user's responsibility to
+  ensure the consistency of the various artifacts.
+
+By default, this module supports multiple calls in different directories of a
+project with different version/component requirements while providing correct
+and consistent results for each call. To support this behavior, ``CMake`` cache
+is not used in the traditional way which can be problematic for interactive
+specification. So, to enable also interactive specification, module behavior
+can be controlled with the following variable:
+
+``Python2_ARTIFACTS_INTERACTIVE``
+  .. versionadded:: 3.18
+
+  Selects the behavior of the module. This is a boolean variable:
+
+  * If set to ``TRUE``: Create CMake cache entries for the above artifact
+    specification variables so that users can edit them interactively.
+    This disables support for multiple version/component requirements.
+  * If set to ``FALSE`` or undefined: Enable multiple version/component
+    requirements.
+
+Commands
+^^^^^^^^
+
+This module defines the command ``Python2_add_library`` (when
+:prop_gbl:`CMAKE_ROLE` is ``PROJECT``), which has the same semantics as
+:command:`add_library` and adds a dependency to target ``Python2::Python`` or,
+when library type is ``MODULE``, to target ``Python2::Module`` and takes care
+of Python module naming rules::
+
+  Python2_add_library (<name> [STATIC | SHARED | MODULE]
+                       <source1> [<source2> ...])
+
+If library type is not specified, ``MODULE`` is assumed.
+#]=======================================================================]
+
+
+set (_PYTHON_PREFIX Python2)
+
+set (_Python2_REQUIRED_VERSION_MAJOR 2)
+
+include (${CMAKE_CURRENT_LIST_DIR}/FindPython/Support.cmake)
+
+if (COMMAND __Python2_add_library)
+  macro (Python2_add_library)
+    __Python2_add_library (Python2 ${ARGV})
+  endmacro()
+endif()
+
+unset (_PYTHON_PREFIX)
diff --git a/share/cmake-3.22/Modules/FindPython3.cmake b/share/cmake-3.22/Modules/FindPython3.cmake
new file mode 100644
index 0000000..145c95e
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindPython3.cmake
@@ -0,0 +1,498 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindPython3
+-----------
+
+.. versionadded:: 3.12
+
+Find Python 3 interpreter, compiler and development environment (include
+directories and libraries).
+
+.. versionadded:: 3.19
+  When a version is requested, it can be specified as a simple value or as a
+  range. For a detailed description of version range usage and capabilities,
+  refer to the :command:`find_package` command.
+
+The following components are supported:
+
+* ``Interpreter``: search for Python 3 interpreter
+* ``Compiler``: search for Python 3 compiler. Only offered by IronPython.
+* ``Development``: search for development artifacts (include directories and
+  libraries).
+
+  .. versionadded:: 3.18
+    This component includes two sub-components which can be specified
+    independently:
+
+    * ``Development.Module``: search for artifacts for Python 3 module
+      developments.
+    * ``Development.Embed``: search for artifacts for Python 3 embedding
+      developments.
+
+* ``NumPy``: search for NumPy include directories.
+
+.. versionadded:: 3.14
+  Added the ``NumPy`` component.
+
+If no ``COMPONENTS`` are specified, ``Interpreter`` is assumed.
+
+If component ``Development`` is specified, it implies sub-components
+``Development.Module`` and ``Development.Embed``.
+
+To ensure consistent versions between components ``Interpreter``, ``Compiler``,
+``Development`` (or one of its sub-components) and ``NumPy``, specify all
+components at the same time::
+
+  find_package (Python3 COMPONENTS Interpreter Development)
+
+This module looks only for version 3 of Python. This module can be used
+concurrently with :module:`FindPython2` module to use both Python versions.
+
+The :module:`FindPython` module can be used if Python version does not matter
+for you.
+
+.. note::
+
+  If components ``Interpreter`` and ``Development`` (or one of its
+  sub-components) are both specified, this module search only for interpreter
+  with same platform architecture as the one defined by ``CMake``
+  configuration. This constraint does not apply if only ``Interpreter``
+  component is specified.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+This module defines the following :ref:`Imported Targets <Imported Targets>`:
+
+.. versionchanged:: 3.14
+  :ref:`Imported Targets <Imported Targets>` are only created when
+  :prop_gbl:`CMAKE_ROLE` is ``PROJECT``.
+
+``Python3::Interpreter``
+  Python 3 interpreter. Target defined if component ``Interpreter`` is found.
+``Python3::Compiler``
+  Python 3 compiler. Target defined if component ``Compiler`` is found.
+
+``Python3::Module``
+  .. versionadded:: 3.15
+
+  Python 3 library for Python module. Target defined if component
+  ``Development.Module`` is found.
+
+``Python3::Python``
+  Python 3 library for Python embedding. Target defined if component
+  ``Development.Embed`` is found.
+
+``Python3::NumPy``
+  .. versionadded:: 3.14
+
+  NumPy library for Python 3. Target defined if component ``NumPy`` is found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project
+(see :ref:`Standard Variable Names <CMake Developer Standard Variable Names>`):
+
+``Python3_FOUND``
+  System has the Python 3 requested components.
+``Python3_Interpreter_FOUND``
+  System has the Python 3 interpreter.
+``Python3_EXECUTABLE``
+  Path to the Python 3 interpreter.
+``Python3_INTERPRETER_ID``
+  A short string unique to the interpreter. Possible values include:
+    * Python
+    * ActivePython
+    * Anaconda
+    * Canopy
+    * IronPython
+    * PyPy
+``Python3_STDLIB``
+  Standard platform independent installation directory.
+
+  Information returned by
+  ``distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=True)``
+  or else ``sysconfig.get_path('stdlib')``.
+``Python3_STDARCH``
+  Standard platform dependent installation directory.
+
+  Information returned by
+  ``distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=True)``
+  or else ``sysconfig.get_path('platstdlib')``.
+``Python3_SITELIB``
+  Third-party platform independent installation directory.
+
+  Information returned by
+  ``distutils.sysconfig.get_python_lib(plat_specific=False,standard_lib=False)``
+  or else ``sysconfig.get_path('purelib')``.
+``Python3_SITEARCH``
+  Third-party platform dependent installation directory.
+
+  Information returned by
+  ``distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=False)``
+  or else ``sysconfig.get_path('platlib')``.
+
+``Python3_SOABI``
+  .. versionadded:: 3.17
+
+  Extension suffix for modules.
+
+  Information returned by
+  ``distutils.sysconfig.get_config_var('SOABI')`` or computed from
+  ``distutils.sysconfig.get_config_var('EXT_SUFFIX')`` or
+  ``python3-config --extension-suffix``. If package ``distutils.sysconfig`` is
+  not available, ``sysconfig.get_config_var('SOABI')`` or
+  ``sysconfig.get_config_var('EXT_SUFFIX')`` are used.
+
+``Python3_Compiler_FOUND``
+  System has the Python 3 compiler.
+``Python3_COMPILER``
+  Path to the Python 3 compiler. Only offered by IronPython.
+``Python3_COMPILER_ID``
+  A short string unique to the compiler. Possible values include:
+    * IronPython
+
+``Python3_DOTNET_LAUNCHER``
+  .. versionadded:: 3.18
+
+  The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
+
+``Python3_Development_FOUND``
+
+  System has the Python 3 development artifacts.
+
+``Python3_Development.Module_FOUND``
+  .. versionadded:: 3.18
+
+  System has the Python 3 development artifacts for Python module.
+
+``Python3_Development.Embed_FOUND``
+  .. versionadded:: 3.18
+
+  System has the Python 3 development artifacts for Python embedding.
+
+``Python3_INCLUDE_DIRS``
+
+  The Python 3 include directories.
+
+``Python3_LINK_OPTIONS``
+  .. versionadded:: 3.19
+
+  The Python 3 link options. Some configurations require specific link options
+  for a correct build and execution.
+
+``Python3_LIBRARIES``
+  The Python 3 libraries.
+``Python3_LIBRARY_DIRS``
+  The Python 3 library directories.
+``Python3_RUNTIME_LIBRARY_DIRS``
+  The Python 3 runtime library directories.
+``Python3_VERSION``
+  Python 3 version.
+``Python3_VERSION_MAJOR``
+  Python 3 major version.
+``Python3_VERSION_MINOR``
+  Python 3 minor version.
+``Python3_VERSION_PATCH``
+  Python 3 patch version.
+
+``Python3_PyPy_VERSION``
+  .. versionadded:: 3.18
+
+  Python 3 PyPy version.
+
+``Python3_NumPy_FOUND``
+  .. versionadded:: 3.14
+
+  System has the NumPy.
+
+``Python3_NumPy_INCLUDE_DIRS``
+  .. versionadded:: 3.14
+
+  The NumPy include directories.
+
+``Python3_NumPy_VERSION``
+  .. versionadded:: 3.14
+
+  The NumPy version.
+
+Hints
+^^^^^
+
+``Python3_ROOT_DIR``
+  Define the root directory of a Python 3 installation.
+
+``Python3_USE_STATIC_LIBS``
+  * If not defined, search for shared libraries and static libraries in that
+    order.
+  * If set to TRUE, search **only** for static libraries.
+  * If set to FALSE, search **only** for shared libraries.
+
+  .. note::
+
+    This hint will be ignored on ``Windows`` because static libraries are not
+    available on this platform.
+
+``Python3_FIND_ABI``
+  .. versionadded:: 3.16
+
+  This variable defines which ABIs, as defined in
+  `PEP 3149 <https://www.python.org/dev/peps/pep-3149/>`_, should be searched.
+
+  .. note::
+
+    If ``Python3_FIND_ABI`` is not defined, any ABI will be searched.
+
+  The ``Python3_FIND_ABI`` variable is a 3-tuple specifying, in that order,
+  ``pydebug`` (``d``), ``pymalloc`` (``m``) and ``unicode`` (``u``) flags.
+  Each element can be set to one of the following:
+
+  * ``ON``: Corresponding flag is selected.
+  * ``OFF``: Corresponding flag is not selected.
+  * ``ANY``: The two possibilities (``ON`` and ``OFF``) will be searched.
+
+  From this 3-tuple, various ABIs will be searched starting from the most
+  specialized to the most general. Moreover, ``debug`` versions will be
+  searched **after** ``non-debug`` ones.
+
+  For example, if we have::
+
+    set (Python3_FIND_ABI "ON" "ANY" "ANY")
+
+  The following flags combinations will be appended, in that order, to the
+  artifact names: ``dmu``, ``dm``, ``du``, and ``d``.
+
+  And to search any possible ABIs::
+
+    set (Python3_FIND_ABI "ANY" "ANY" "ANY")
+
+  The following combinations, in that order, will be used: ``mu``, ``m``,
+  ``u``, ``<empty>``, ``dmu``, ``dm``, ``du`` and ``d``.
+
+  .. note::
+
+    This hint is useful only on ``POSIX`` systems. So, on ``Windows`` systems,
+    when ``Python3_FIND_ABI`` is defined, ``Python`` distributions from
+    `python.org <https://www.python.org/>`_ will be found only if value for
+    each flag is ``OFF`` or ``ANY``.
+
+``Python3_FIND_STRATEGY``
+  .. versionadded:: 3.15
+
+  This variable defines how lookup will be done.
+  The ``Python3_FIND_STRATEGY`` variable can be set to one of the following:
+
+  * ``VERSION``: Try to find the most recent version in all specified
+    locations.
+    This is the default if policy :policy:`CMP0094` is undefined or set to
+    ``OLD``.
+  * ``LOCATION``: Stops lookup as soon as a version satisfying version
+    constraints is founded.
+    This is the default if policy :policy:`CMP0094` is set to ``NEW``.
+
+``Python3_FIND_REGISTRY``
+  .. versionadded:: 3.13
+
+  On Windows the ``Python3_FIND_REGISTRY`` variable determine the order
+  of preference between registry and environment variables.
+  The ``Python3_FIND_REGISTRY`` variable can be set to one of the following:
+
+  * ``FIRST``: Try to use registry before environment variables.
+    This is the default.
+  * ``LAST``: Try to use registry after environment variables.
+  * ``NEVER``: Never try to use registry.
+
+``Python3_FIND_FRAMEWORK``
+  .. versionadded:: 3.15
+
+  On macOS the ``Python3_FIND_FRAMEWORK`` variable determine the order of
+  preference between Apple-style and unix-style package components.
+  This variable can take same values as :variable:`CMAKE_FIND_FRAMEWORK`
+  variable.
+
+  .. note::
+
+    Value ``ONLY`` is not supported so ``FIRST`` will be used instead.
+
+  If ``Python3_FIND_FRAMEWORK`` is not defined, :variable:`CMAKE_FIND_FRAMEWORK`
+  variable will be used, if any.
+
+``Python3_FIND_VIRTUALENV``
+  .. versionadded:: 3.15
+
+  This variable defines the handling of virtual environments managed by
+  ``virtualenv`` or ``conda``. It is meaningful only when a virtual environment
+  is active (i.e. the ``activate`` script has been evaluated). In this case, it
+  takes precedence over ``Python3_FIND_REGISTRY`` and ``CMAKE_FIND_FRAMEWORK``
+  variables.  The ``Python3_FIND_VIRTUALENV`` variable can be set to one of the
+  following:
+
+  * ``FIRST``: The virtual environment is used before any other standard
+    paths to look-up for the interpreter. This is the default.
+  * ``ONLY``: Only the virtual environment is used to look-up for the
+    interpreter.
+  * ``STANDARD``: The virtual environment is not used to look-up for the
+    interpreter but environment variable ``PATH`` is always considered.
+    In this case, variable ``Python3_FIND_REGISTRY`` (Windows) or
+    ``CMAKE_FIND_FRAMEWORK`` (macOS) can be set with value ``LAST`` or
+    ``NEVER`` to select preferably the interpreter from the virtual
+    environment.
+
+  .. versionadded:: 3.17
+    Added support for ``conda`` environments.
+
+  .. note::
+
+    If the component ``Development`` is requested, it is **strongly**
+    recommended to also include the component ``Interpreter`` to get expected
+    result.
+
+``Python3_FIND_IMPLEMENTATIONS``
+  .. versionadded:: 3.18
+
+  This variable defines, in an ordered list, the different implementations
+  which will be searched. The ``Python3_FIND_IMPLEMENTATIONS`` variable can
+  hold the following values:
+
+  * ``CPython``: this is the standard implementation. Various products, like
+    ``Anaconda`` or ``ActivePython``, rely on this implementation.
+  * ``IronPython``: This implementation use the ``CSharp`` language for
+    ``.NET Framework`` on top of the `Dynamic Language Runtime` (``DLR``).
+    See `IronPython <http://ironpython.net>`_.
+  * ``PyPy``: This implementation use ``RPython`` language and
+    ``RPython translation toolchain`` to produce the python interpreter.
+    See `PyPy <https://www.pypy.org>`_.
+
+  The default value is:
+
+  * Windows platform: ``CPython``, ``IronPython``
+  * Other platforms: ``CPython``
+
+  .. note::
+
+    This hint has the lowest priority of all hints, so even if, for example,
+    you specify ``IronPython`` first and ``CPython`` in second, a python
+    product based on ``CPython`` can be selected because, for example with
+    ``Python3_FIND_STRATEGY=LOCATION``, each location will be search first for
+    ``IronPython`` and second for ``CPython``.
+
+  .. note::
+
+    When ``IronPython`` is specified, on platforms other than ``Windows``, the
+    ``.Net`` interpreter (i.e. ``mono`` command) is expected to be available
+    through the ``PATH`` variable.
+
+``Python3_FIND_UNVERSIONED_NAMES``
+  .. versionadded:: 3.20
+
+  This variable defines how the generic names will be searched. Currently, it
+  only applies to the generic names of the interpreter, namely, ``python3`` and
+  ``python``.
+  The ``Python3_FIND_UNVERSIONED_NAMES`` variable can be set to one of the
+  following values:
+
+  * ``FIRST``: The generic names are searched before the more specialized ones
+    (such as ``python3.5`` for example).
+  * ``LAST``: The generic names are searched after the more specialized ones.
+    This is the default.
+  * ``NEVER``: The generic name are not searched at all.
+
+Artifacts Specification
+^^^^^^^^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.16
+
+To solve special cases, it is possible to specify directly the artifacts by
+setting the following variables:
+
+``Python3_EXECUTABLE``
+  The path to the interpreter.
+
+``Python3_COMPILER``
+  The path to the compiler.
+
+``Python3_DOTNET_LAUNCHER``
+  .. versionadded:: 3.18
+
+  The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
+
+``Python3_LIBRARY``
+  The path to the library. It will be used to compute the
+  variables ``Python3_LIBRARIES``, ``Python3_LIBRARY_DIRS`` and
+  ``Python3_RUNTIME_LIBRARY_DIRS``.
+
+``Python3_INCLUDE_DIR``
+  The path to the directory of the ``Python`` headers. It will be used to
+  compute the variable ``Python3_INCLUDE_DIRS``.
+
+``Python3_NumPy_INCLUDE_DIR``
+  The path to the directory of the ``NumPy`` headers. It will be used to
+  compute the variable ``Python3_NumPy_INCLUDE_DIRS``.
+
+.. note::
+
+  All paths must be absolute. Any artifact specified with a relative path
+  will be ignored.
+
+.. note::
+
+  When an artifact is specified, all ``HINTS`` will be ignored and no search
+  will be performed for this artifact.
+
+  If more than one artifact is specified, it is the user's responsibility to
+  ensure the consistency of the various artifacts.
+
+By default, this module supports multiple calls in different directories of a
+project with different version/component requirements while providing correct
+and consistent results for each call. To support this behavior, ``CMake`` cache
+is not used in the traditional way which can be problematic for interactive
+specification. So, to enable also interactive specification, module behavior
+can be controlled with the following variable:
+
+``Python3_ARTIFACTS_INTERACTIVE``
+  .. versionadded:: 3.18
+
+  Selects the behavior of the module. This is a boolean variable:
+
+  * If set to ``TRUE``: Create CMake cache entries for the above artifact
+    specification variables so that users can edit them interactively.
+    This disables support for multiple version/component requirements.
+  * If set to ``FALSE`` or undefined: Enable multiple version/component
+    requirements.
+
+Commands
+^^^^^^^^
+
+This module defines the command ``Python3_add_library`` (when
+:prop_gbl:`CMAKE_ROLE` is ``PROJECT``), which has the same semantics as
+:command:`add_library` and adds a dependency to target ``Python3::Python`` or,
+when library type is ``MODULE``, to target ``Python3::Module`` and takes care
+of Python module naming rules::
+
+  Python3_add_library (<name> [STATIC | SHARED | MODULE [WITH_SOABI]]
+                       <source1> [<source2> ...])
+
+If the library type is not specified, ``MODULE`` is assumed.
+
+.. versionadded:: 3.17
+  For ``MODULE`` library type, if option ``WITH_SOABI`` is specified, the
+  module suffix will include the ``Python3_SOABI`` value, if any.
+#]=======================================================================]
+
+
+set (_PYTHON_PREFIX Python3)
+
+set (_Python3_REQUIRED_VERSION_MAJOR 3)
+
+include (${CMAKE_CURRENT_LIST_DIR}/FindPython/Support.cmake)
+
+if (COMMAND __Python3_add_library)
+  macro (Python3_add_library)
+    __Python3_add_library (Python3 ${ARGV})
+  endmacro()
+endif()
+
+unset (_PYTHON_PREFIX)
diff --git a/share/cmake-3.22/Modules/FindPythonInterp.cmake b/share/cmake-3.22/Modules/FindPythonInterp.cmake
new file mode 100644
index 0000000..efe0f11
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindPythonInterp.cmake
@@ -0,0 +1,171 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindPythonInterp
+----------------
+
+.. deprecated:: 3.12
+
+  Use :module:`FindPython3`, :module:`FindPython2` or :module:`FindPython` instead.
+
+Find python interpreter
+
+This module finds if Python interpreter is installed and determines
+where the executables are.  This code sets the following variables:
+
+::
+
+  PYTHONINTERP_FOUND         - Was the Python executable found
+  PYTHON_EXECUTABLE          - path to the Python interpreter
+
+
+
+::
+
+  PYTHON_VERSION_STRING      - Python version found e.g. 2.5.2
+  PYTHON_VERSION_MAJOR       - Python major version found e.g. 2
+  PYTHON_VERSION_MINOR       - Python minor version found e.g. 5
+  PYTHON_VERSION_PATCH       - Python patch version found e.g. 2
+
+
+
+The Python_ADDITIONAL_VERSIONS variable can be used to specify a list
+of version numbers that should be taken into account when searching
+for Python.  You need to set this variable before calling
+find_package(PythonInterp).
+
+If calling both ``find_package(PythonInterp)`` and
+``find_package(PythonLibs)``, call ``find_package(PythonInterp)`` first to
+get the currently active Python version by default with a consistent version
+of PYTHON_LIBRARIES.
+
+.. note::
+
+  A call to ``find_package(PythonInterp ${V})`` for python version ``V``
+  may find a ``python`` executable with no version suffix.  In this case
+  no attempt is made to avoid python executables from other versions.
+  Use :module:`FindPython3`, :module:`FindPython2` or :module:`FindPython`
+  instead.
+
+#]=======================================================================]
+
+unset(_Python_NAMES)
+
+set(_PYTHON1_VERSIONS 1.6 1.5)
+set(_PYTHON2_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
+set(_PYTHON3_VERSIONS 3.10 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
+
+if(PythonInterp_FIND_VERSION)
+    if(PythonInterp_FIND_VERSION_COUNT GREATER 1)
+        set(_PYTHON_FIND_MAJ_MIN "${PythonInterp_FIND_VERSION_MAJOR}.${PythonInterp_FIND_VERSION_MINOR}")
+        list(APPEND _Python_NAMES
+             python${_PYTHON_FIND_MAJ_MIN}
+             python${PythonInterp_FIND_VERSION_MAJOR})
+        unset(_PYTHON_FIND_OTHER_VERSIONS)
+        if(NOT PythonInterp_FIND_VERSION_EXACT)
+            foreach(_PYTHON_V ${_PYTHON${PythonInterp_FIND_VERSION_MAJOR}_VERSIONS})
+                if(NOT _PYTHON_V VERSION_LESS _PYTHON_FIND_MAJ_MIN)
+                    list(APPEND _PYTHON_FIND_OTHER_VERSIONS ${_PYTHON_V})
+                endif()
+             endforeach()
+        endif()
+        unset(_PYTHON_FIND_MAJ_MIN)
+    else()
+        list(APPEND _Python_NAMES python${PythonInterp_FIND_VERSION_MAJOR})
+        set(_PYTHON_FIND_OTHER_VERSIONS ${_PYTHON${PythonInterp_FIND_VERSION_MAJOR}_VERSIONS})
+    endif()
+else()
+    set(_PYTHON_FIND_OTHER_VERSIONS ${_PYTHON3_VERSIONS} ${_PYTHON2_VERSIONS} ${_PYTHON1_VERSIONS})
+endif()
+find_program(PYTHON_EXECUTABLE NAMES ${_Python_NAMES})
+
+# Set up the versions we know about, in the order we will search. Always add
+# the user supplied additional versions to the front.
+set(_Python_VERSIONS ${Python_ADDITIONAL_VERSIONS})
+# If FindPythonInterp has already found the major and minor version,
+# insert that version next to get consistent versions of the interpreter and
+# library.
+if(DEFINED PYTHONLIBS_VERSION_STRING)
+  string(REPLACE "." ";" _PYTHONLIBS_VERSION "${PYTHONLIBS_VERSION_STRING}")
+  list(GET _PYTHONLIBS_VERSION 0 _PYTHONLIBS_VERSION_MAJOR)
+  list(GET _PYTHONLIBS_VERSION 1 _PYTHONLIBS_VERSION_MINOR)
+  list(APPEND _Python_VERSIONS ${_PYTHONLIBS_VERSION_MAJOR}.${_PYTHONLIBS_VERSION_MINOR})
+endif()
+# Search for the current active python version first
+list(APPEND _Python_VERSIONS ";")
+list(APPEND _Python_VERSIONS ${_PYTHON_FIND_OTHER_VERSIONS})
+
+unset(_PYTHON_FIND_OTHER_VERSIONS)
+unset(_PYTHON1_VERSIONS)
+unset(_PYTHON2_VERSIONS)
+unset(_PYTHON3_VERSIONS)
+
+# Search for newest python version if python executable isn't found
+if(NOT PYTHON_EXECUTABLE)
+    foreach(_CURRENT_VERSION IN LISTS _Python_VERSIONS)
+      set(_Python_NAMES python${_CURRENT_VERSION})
+      if(CMAKE_HOST_WIN32)
+        list(APPEND _Python_NAMES python)
+      endif()
+      find_program(PYTHON_EXECUTABLE
+        NAMES ${_Python_NAMES}
+        PATHS
+            [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]
+            [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-32\\InstallPath]
+            [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-64\\InstallPath]
+            [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]
+            [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-32\\InstallPath]
+            [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-64\\InstallPath]
+        )
+    endforeach()
+endif()
+
+# determine python version string
+if(PYTHON_EXECUTABLE)
+    execute_process(COMMAND "${PYTHON_EXECUTABLE}" -c
+                            "import sys; sys.stdout.write(';'.join([str(x) for x in sys.version_info[:3]]))"
+                    OUTPUT_VARIABLE _VERSION
+                    RESULT_VARIABLE _PYTHON_VERSION_RESULT
+                    ERROR_QUIET)
+    if(NOT _PYTHON_VERSION_RESULT)
+        string(REPLACE ";" "." PYTHON_VERSION_STRING "${_VERSION}")
+        list(GET _VERSION 0 PYTHON_VERSION_MAJOR)
+        list(GET _VERSION 1 PYTHON_VERSION_MINOR)
+        list(GET _VERSION 2 PYTHON_VERSION_PATCH)
+        if(PYTHON_VERSION_PATCH EQUAL 0)
+            # it's called "Python 2.7", not "2.7.0"
+            string(REGEX REPLACE "\\.0$" "" PYTHON_VERSION_STRING "${PYTHON_VERSION_STRING}")
+        endif()
+    else()
+        # sys.version predates sys.version_info, so use that
+        # sys.version was first documented for Python 1.5, so assume version 1.4
+        # if retrieving sys.version fails.
+        execute_process(COMMAND "${PYTHON_EXECUTABLE}" -c "try: import sys; sys.stdout.write(sys.version)\nexcept: sys.stdout.write(\"1.4.0\")"
+                        OUTPUT_VARIABLE _VERSION
+                        RESULT_VARIABLE _PYTHON_VERSION_RESULT
+                        ERROR_QUIET)
+        if(NOT _PYTHON_VERSION_RESULT)
+            string(REGEX REPLACE " .*" "" PYTHON_VERSION_STRING "${_VERSION}")
+            string(REGEX REPLACE "^([0-9]+)\\.[0-9]+.*" "\\1" PYTHON_VERSION_MAJOR "${PYTHON_VERSION_STRING}")
+            string(REGEX REPLACE "^[0-9]+\\.([0-9])+.*" "\\1" PYTHON_VERSION_MINOR "${PYTHON_VERSION_STRING}")
+            if(PYTHON_VERSION_STRING MATCHES "^[0-9]+\\.[0-9]+\\.([0-9]+)")
+                set(PYTHON_VERSION_PATCH "${CMAKE_MATCH_1}")
+            else()
+                set(PYTHON_VERSION_PATCH "0")
+            endif()
+        else()
+            unset(PYTHON_VERSION_STRING)
+            unset(PYTHON_VERSION_MAJOR)
+            unset(PYTHON_VERSION_MINOR)
+            unset(PYTHON_VERSION_PATCH)
+        endif()
+    endif()
+    unset(_PYTHON_VERSION_RESULT)
+    unset(_VERSION)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonInterp REQUIRED_VARS PYTHON_EXECUTABLE VERSION_VAR PYTHON_VERSION_STRING)
+
+mark_as_advanced(PYTHON_EXECUTABLE)
diff --git a/share/cmake-3.22/Modules/FindPythonLibs.cmake b/share/cmake-3.22/Modules/FindPythonLibs.cmake
new file mode 100644
index 0000000..396f0d2
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindPythonLibs.cmake
@@ -0,0 +1,399 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindPythonLibs
+--------------
+
+.. deprecated:: 3.12
+
+  Use :module:`FindPython3`, :module:`FindPython2` or :module:`FindPython` instead.
+
+Find python libraries
+
+This module finds if Python is installed and determines where the
+include files and libraries are.  It also determines what the name of
+the library is.  This code sets the following variables:
+
+::
+
+  PYTHONLIBS_FOUND           - have the Python libs been found
+  PYTHON_LIBRARIES           - path to the python library
+  PYTHON_INCLUDE_PATH        - path to where Python.h is found (deprecated)
+  PYTHON_INCLUDE_DIRS        - path to where Python.h is found
+  PYTHON_DEBUG_LIBRARIES     - path to the debug library (deprecated)
+  PYTHONLIBS_VERSION_STRING  - version of the Python libs found (since CMake 2.8.8)
+
+
+
+The Python_ADDITIONAL_VERSIONS variable can be used to specify a list
+of version numbers that should be taken into account when searching
+for Python.  You need to set this variable before calling
+find_package(PythonLibs).
+
+If you'd like to specify the installation of Python to use, you should
+modify the following cache variables:
+
+::
+
+  PYTHON_LIBRARY             - path to the python library
+  PYTHON_INCLUDE_DIR         - path to where Python.h is found
+
+If calling both ``find_package(PythonInterp)`` and
+``find_package(PythonLibs)``, call ``find_package(PythonInterp)`` first to
+get the currently active Python version by default with a consistent version
+of PYTHON_LIBRARIES.
+#]=======================================================================]
+
+# Use the executable's path as a hint
+set(_Python_LIBRARY_PATH_HINT)
+if(IS_ABSOLUTE "${PYTHON_EXECUTABLE}")
+  if(WIN32)
+    get_filename_component(_Python_PREFIX "${PYTHON_EXECUTABLE}" PATH)
+    if(_Python_PREFIX)
+      set(_Python_LIBRARY_PATH_HINT ${_Python_PREFIX}/libs)
+    endif()
+    unset(_Python_PREFIX)
+  else()
+    get_filename_component(_Python_PREFIX "${PYTHON_EXECUTABLE}" PATH)
+    get_filename_component(_Python_PREFIX "${_Python_PREFIX}" PATH)
+    if(_Python_PREFIX)
+      set(_Python_LIBRARY_PATH_HINT ${_Python_PREFIX}/lib)
+    endif()
+    unset(_Python_PREFIX)
+  endif()
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/CMakeFindFrameworks.cmake)
+# Search for the python framework on Apple.
+CMAKE_FIND_FRAMEWORKS(Python)
+
+# Save CMAKE_FIND_FRAMEWORK
+if(DEFINED CMAKE_FIND_FRAMEWORK)
+  set(_PythonLibs_CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK})
+else()
+  unset(_PythonLibs_CMAKE_FIND_FRAMEWORK)
+endif()
+# To avoid picking up the system Python.h pre-maturely.
+set(CMAKE_FIND_FRAMEWORK LAST)
+
+set(_PYTHON1_VERSIONS 1.6 1.5)
+set(_PYTHON2_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
+set(_PYTHON3_VERSIONS 3.10 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
+
+if(PythonLibs_FIND_VERSION)
+    if(PythonLibs_FIND_VERSION_COUNT GREATER 1)
+        set(_PYTHON_FIND_MAJ_MIN "${PythonLibs_FIND_VERSION_MAJOR}.${PythonLibs_FIND_VERSION_MINOR}")
+        unset(_PYTHON_FIND_OTHER_VERSIONS)
+        if(PythonLibs_FIND_VERSION_EXACT)
+            if(_PYTHON_FIND_MAJ_MIN STREQUAL PythonLibs_FIND_VERSION)
+                set(_PYTHON_FIND_OTHER_VERSIONS "${PythonLibs_FIND_VERSION}")
+            else()
+                set(_PYTHON_FIND_OTHER_VERSIONS "${PythonLibs_FIND_VERSION}" "${_PYTHON_FIND_MAJ_MIN}")
+            endif()
+        else()
+            foreach(_PYTHON_V ${_PYTHON${PythonLibs_FIND_VERSION_MAJOR}_VERSIONS})
+                if(NOT _PYTHON_V VERSION_LESS _PYTHON_FIND_MAJ_MIN)
+                    list(APPEND _PYTHON_FIND_OTHER_VERSIONS ${_PYTHON_V})
+                endif()
+             endforeach()
+        endif()
+        unset(_PYTHON_FIND_MAJ_MIN)
+    else()
+        set(_PYTHON_FIND_OTHER_VERSIONS ${_PYTHON${PythonLibs_FIND_VERSION_MAJOR}_VERSIONS})
+    endif()
+else()
+    set(_PYTHON_FIND_OTHER_VERSIONS ${_PYTHON3_VERSIONS} ${_PYTHON2_VERSIONS} ${_PYTHON1_VERSIONS})
+endif()
+
+# Set up the versions we know about, in the order we will search. Always add
+# the user supplied additional versions to the front.
+# If FindPythonInterp has already found the major and minor version,
+# insert that version between the user supplied versions and the stock
+# version list.
+set(_Python_VERSIONS ${Python_ADDITIONAL_VERSIONS})
+if(DEFINED PYTHON_VERSION_MAJOR AND DEFINED PYTHON_VERSION_MINOR)
+  list(APPEND _Python_VERSIONS ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR})
+endif()
+list(APPEND _Python_VERSIONS ${_PYTHON_FIND_OTHER_VERSIONS})
+
+unset(_PYTHON_FIND_OTHER_VERSIONS)
+unset(_PYTHON1_VERSIONS)
+unset(_PYTHON2_VERSIONS)
+unset(_PYTHON3_VERSIONS)
+
+# Python distribution: define which architectures can be used
+if (CMAKE_SIZEOF_VOID_P)
+  # In this case, search only for 64bit or 32bit
+  math (EXPR _PYTHON_ARCH "${CMAKE_SIZEOF_VOID_P} * 8")
+  set (_PYTHON_ARCH2 _PYTHON_PREFIX_ARCH})
+else()
+  if (PYTHON_EXECUTABLE)
+    # determine interpreter architecture
+    execute_process (COMMAND "${PYTHON_EXECUTABLE}" -c "import sys; print(sys.maxsize > 2**32)"
+                     RESULT_VARIABLE _PYTHON_RESULT
+                     OUTPUT_VARIABLE _PYTHON_IS64BIT
+                     ERROR_VARIABLE _PYTHON_IS64BIT)
+      if (NOT _PYTHON_RESULT)
+        if (_PYTHON_IS64BIT)
+          set (_PYTHON_ARCH 64)
+          set (_PYTHON_ARCH2 64)
+        else()
+          set (_PYTHON_ARCH 32)
+          set (_PYTHON_ARCH2 32)
+        endif()
+      endif()
+  else()
+    # architecture unknown, search for both 64bit and 32bit
+    set (_PYTHON_ARCH 64)
+    set (_PYTHON_ARCH2 32)
+  endif()
+endif()
+
+foreach(_CURRENT_VERSION ${_Python_VERSIONS})
+  string(REPLACE "." "" _CURRENT_VERSION_NO_DOTS ${_CURRENT_VERSION})
+  if(WIN32)
+    find_library(PYTHON_DEBUG_LIBRARY
+      NAMES python${_CURRENT_VERSION_NO_DOTS}_d python
+      NAMES_PER_DIR
+      HINTS ${_Python_LIBRARY_PATH_HINT}
+      PATHS
+      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs/Debug
+      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH}\\InstallPath]/libs/Debug
+      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH2}\\InstallPath]/libs/Debug
+      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs/Debug
+      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH}\\InstallPath]/libs/Debug
+      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH2}\\InstallPath]/libs/Debug
+      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs
+      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH}\\InstallPath]/libs
+      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH2}\\InstallPath]/libs
+      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs
+      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH}\\InstallPath]/libs
+      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH2}\\InstallPath]/libs
+      )
+  endif()
+
+  set(PYTHON_FRAMEWORK_LIBRARIES)
+  if(Python_FRAMEWORKS AND NOT PYTHON_LIBRARY)
+    foreach(dir ${Python_FRAMEWORKS})
+      list(APPEND PYTHON_FRAMEWORK_LIBRARIES
+           ${dir}/Versions/${_CURRENT_VERSION}/lib)
+    endforeach()
+  endif()
+  find_library(PYTHON_LIBRARY
+    NAMES
+      python${_CURRENT_VERSION_NO_DOTS}
+      python${_CURRENT_VERSION}mu
+      python${_CURRENT_VERSION}m
+      python${_CURRENT_VERSION}u
+      python${_CURRENT_VERSION}
+    NAMES_PER_DIR
+    HINTS
+      ${_Python_LIBRARY_PATH_HINT}
+    PATHS
+      ${PYTHON_FRAMEWORK_LIBRARIES}
+      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs
+      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH}\\InstallPath]/libs
+      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH2}\\InstallPath]/libs
+      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs
+      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH}\\InstallPath]/libs
+      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH2}\\InstallPath]/libs
+  )
+  # Look for the static library in the Python config directory
+  find_library(PYTHON_LIBRARY
+    NAMES python${_CURRENT_VERSION_NO_DOTS} python${_CURRENT_VERSION}
+    NAMES_PER_DIR
+    # This is where the static library is usually located
+    PATH_SUFFIXES python${_CURRENT_VERSION}/config
+  )
+
+  # Don't search for include dir until library location is known
+  if(PYTHON_LIBRARY)
+
+    # Use the library's install prefix as a hint
+    set(_Python_INCLUDE_PATH_HINT)
+    # PYTHON_LIBRARY may contain a list because of SelectLibraryConfigurations
+    # which may have been run previously. If it is the case, the list can be:
+    #   optimized;<FILEPATH_TO_RELEASE_LIBRARY>;debug;<FILEPATH_TO_DEBUG_LIBRARY>
+    foreach(lib ${PYTHON_LIBRARY} ${PYTHON_DEBUG_LIBRARY})
+      if(IS_ABSOLUTE "${lib}")
+        get_filename_component(_Python_PREFIX "${lib}" PATH)
+        get_filename_component(_Python_PREFIX "${_Python_PREFIX}" PATH)
+        if(_Python_PREFIX)
+          list(APPEND _Python_INCLUDE_PATH_HINT ${_Python_PREFIX}/include)
+        endif()
+        unset(_Python_PREFIX)
+      endif()
+    endforeach()
+
+    # Add framework directories to the search paths
+    set(PYTHON_FRAMEWORK_INCLUDES)
+    if(Python_FRAMEWORKS AND NOT PYTHON_INCLUDE_DIR)
+      foreach(dir ${Python_FRAMEWORKS})
+        list(APPEND PYTHON_FRAMEWORK_INCLUDES
+          ${dir}/Versions/${_CURRENT_VERSION}/include)
+      endforeach()
+    endif()
+
+    find_path(PYTHON_INCLUDE_DIR
+      NAMES Python.h
+      HINTS
+        ${_Python_INCLUDE_PATH_HINT}
+      PATHS
+        ${PYTHON_FRAMEWORK_INCLUDES}
+        [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/include
+        [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH}\\InstallPath]/include
+        [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH2}\\InstallPath]/include
+        [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/include
+        [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH}\\InstallPath]/include
+        [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-${_PYTHON_ARCH2}\\InstallPath]/include
+      PATH_SUFFIXES
+        python${_CURRENT_VERSION}mu
+        python${_CURRENT_VERSION}m
+        python${_CURRENT_VERSION}u
+        python${_CURRENT_VERSION}
+    )
+  endif()
+
+  # For backward compatibility, set PYTHON_INCLUDE_PATH.
+  set(PYTHON_INCLUDE_PATH "${PYTHON_INCLUDE_DIR}")
+
+  if(PYTHON_INCLUDE_DIR AND EXISTS "${PYTHON_INCLUDE_DIR}/patchlevel.h")
+    file(STRINGS "${PYTHON_INCLUDE_DIR}/patchlevel.h" python_version_str
+         REGEX "^#define[ \t]+PY_VERSION[ \t]+\"[^\"]+\"")
+    string(REGEX REPLACE "^#define[ \t]+PY_VERSION[ \t]+\"([^\"]+)\".*" "\\1"
+                         PYTHONLIBS_VERSION_STRING "${python_version_str}")
+    unset(python_version_str)
+  endif()
+
+  if(PYTHON_LIBRARY AND PYTHON_INCLUDE_DIR)
+    break()
+  endif()
+endforeach()
+
+unset(_Python_INCLUDE_PATH_HINT)
+unset(_Python_LIBRARY_PATH_HINT)
+
+mark_as_advanced(
+  PYTHON_DEBUG_LIBRARY
+  PYTHON_LIBRARY
+  PYTHON_INCLUDE_DIR
+)
+
+# We use PYTHON_INCLUDE_DIR, PYTHON_LIBRARY and PYTHON_DEBUG_LIBRARY for the
+# cache entries because they are meant to specify the location of a single
+# library. We now set the variables listed by the documentation for this
+# module.
+set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
+set(PYTHON_DEBUG_LIBRARIES "${PYTHON_DEBUG_LIBRARY}")
+
+# These variables have been historically named in this module different from
+# what SELECT_LIBRARY_CONFIGURATIONS() expects.
+set(PYTHON_LIBRARY_DEBUG "${PYTHON_DEBUG_LIBRARY}")
+set(PYTHON_LIBRARY_RELEASE "${PYTHON_LIBRARY}")
+include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+SELECT_LIBRARY_CONFIGURATIONS(PYTHON)
+# SELECT_LIBRARY_CONFIGURATIONS() sets ${PREFIX}_FOUND if it has a library.
+# Unset this, this prefix doesn't match the module prefix, they are different
+# for historical reasons.
+unset(PYTHON_FOUND)
+
+# Restore CMAKE_FIND_FRAMEWORK
+if(DEFINED _PythonLibs_CMAKE_FIND_FRAMEWORK)
+  set(CMAKE_FIND_FRAMEWORK ${_PythonLibs_CMAKE_FIND_FRAMEWORK})
+  unset(_PythonLibs_CMAKE_FIND_FRAMEWORK)
+else()
+  unset(CMAKE_FIND_FRAMEWORK)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonLibs
+                                  REQUIRED_VARS PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS
+                                  VERSION_VAR PYTHONLIBS_VERSION_STRING)
+
+# PYTHON_ADD_MODULE(<name> src1 src2 ... srcN) is used to build modules for python.
+# PYTHON_WRITE_MODULES_HEADER(<filename>) writes a header file you can include
+# in your sources to initialize the static python modules
+function(PYTHON_ADD_MODULE _NAME )
+  get_property(_TARGET_SUPPORTS_SHARED_LIBS
+    GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS)
+  option(PYTHON_ENABLE_MODULE_${_NAME} "Add module ${_NAME}" TRUE)
+  option(PYTHON_MODULE_${_NAME}_BUILD_SHARED
+    "Add module ${_NAME} shared" ${_TARGET_SUPPORTS_SHARED_LIBS})
+
+  # Mark these options as advanced
+  mark_as_advanced(PYTHON_ENABLE_MODULE_${_NAME}
+    PYTHON_MODULE_${_NAME}_BUILD_SHARED)
+
+  if(PYTHON_ENABLE_MODULE_${_NAME})
+    if(PYTHON_MODULE_${_NAME}_BUILD_SHARED)
+      set(PY_MODULE_TYPE MODULE)
+    else()
+      set(PY_MODULE_TYPE STATIC)
+      set_property(GLOBAL  APPEND  PROPERTY  PY_STATIC_MODULES_LIST ${_NAME})
+    endif()
+
+    set_property(GLOBAL  APPEND  PROPERTY  PY_MODULES_LIST ${_NAME})
+    add_library(${_NAME} ${PY_MODULE_TYPE} ${ARGN})
+#    target_link_libraries(${_NAME} ${PYTHON_LIBRARIES})
+
+    if(PYTHON_MODULE_${_NAME}_BUILD_SHARED)
+      set_target_properties(${_NAME} PROPERTIES PREFIX "${PYTHON_MODULE_PREFIX}")
+      if(WIN32 AND NOT CYGWIN)
+        set_target_properties(${_NAME} PROPERTIES SUFFIX ".pyd")
+      endif()
+    endif()
+
+  endif()
+endfunction()
+
+function(PYTHON_WRITE_MODULES_HEADER _filename)
+
+  get_property(PY_STATIC_MODULES_LIST  GLOBAL  PROPERTY PY_STATIC_MODULES_LIST)
+
+  get_filename_component(_name "${_filename}" NAME)
+  string(REPLACE "." "_" _name "${_name}")
+  string(TOUPPER ${_name} _nameUpper)
+  set(_filename ${CMAKE_CURRENT_BINARY_DIR}/${_filename})
+
+  set(_filenameTmp "${_filename}.in")
+  file(WRITE ${_filenameTmp} "/*Created by cmake, do not edit, changes will be lost*/\n")
+  file(APPEND ${_filenameTmp}
+"#ifndef ${_nameUpper}
+#define ${_nameUpper}
+
+#include <Python.h>
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif /* __cplusplus */
+
+")
+
+  foreach(_currentModule ${PY_STATIC_MODULES_LIST})
+    file(APPEND ${_filenameTmp} "extern void init${PYTHON_MODULE_PREFIX}${_currentModule}(void);\n\n")
+  endforeach()
+
+  file(APPEND ${_filenameTmp}
+"#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+")
+
+
+  foreach(_currentModule ${PY_STATIC_MODULES_LIST})
+    file(APPEND ${_filenameTmp} "int ${_name}_${_currentModule}(void) \n{\n  static char name[]=\"${PYTHON_MODULE_PREFIX}${_currentModule}\"; return PyImport_AppendInittab(name, init${PYTHON_MODULE_PREFIX}${_currentModule});\n}\n\n")
+  endforeach()
+
+  file(APPEND ${_filenameTmp} "void ${_name}_LoadAllPythonModules(void)\n{\n")
+  foreach(_currentModule ${PY_STATIC_MODULES_LIST})
+    file(APPEND ${_filenameTmp} "  ${_name}_${_currentModule}();\n")
+  endforeach()
+  file(APPEND ${_filenameTmp} "}\n\n")
+  file(APPEND ${_filenameTmp} "#ifndef EXCLUDE_LOAD_ALL_FUNCTION\nvoid CMakeLoadAllPythonModules(void)\n{\n  ${_name}_LoadAllPythonModules();\n}\n#endif\n\n#endif\n")
+
+# with configure_file() cmake complains that you may not use a file created using file(WRITE) as input file for configure_file()
+  execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${_filenameTmp}" "${_filename}" OUTPUT_QUIET ERROR_QUIET)
+
+endfunction()
diff --git a/share/cmake-3.22/Modules/FindQt.cmake b/share/cmake-3.22/Modules/FindQt.cmake
new file mode 100644
index 0000000..44a1f41
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindQt.cmake
@@ -0,0 +1,188 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindQt
+------
+
+.. deprecated:: 3.14
+  This module is available only if policy :policy:`CMP0084` is not set to ``NEW``.
+
+Searches for all installed versions of Qt3 or Qt4.
+
+This module cannot handle Qt5 or any later versions.
+For those, see :manual:`cmake-qt(7)`.
+
+This module should only be used if your project can work with multiple
+versions of Qt.  If not, you should just directly use FindQt4 or
+FindQt3.  If multiple versions of Qt are found on the machine, then
+The user must set the option DESIRED_QT_VERSION to the version they
+want to use.  If only one version of qt is found on the machine, then
+the DESIRED_QT_VERSION is set to that version and the matching FindQt3
+or FindQt4 module is included.  Once the user sets DESIRED_QT_VERSION,
+then the FindQt3 or FindQt4 module is included.
+
+::
+
+  QT_REQUIRED if this is set to TRUE then if CMake can
+              not find Qt4 or Qt3 an error is raised
+              and a message is sent to the user.
+
+
+
+::
+
+  DESIRED_QT_VERSION OPTION is created
+  QT4_INSTALLED is set to TRUE if qt4 is found.
+  QT3_INSTALLED is set to TRUE if qt3 is found.
+#]=======================================================================]
+
+if(_findqt_testing)
+  set(_findqt_included TRUE)
+  return()
+endif()
+
+# look for signs of qt3 installations
+file(GLOB GLOB_TEMP_VAR /usr/lib*/qt-3*/bin/qmake /usr/lib*/qt3*/bin/qmake)
+if(GLOB_TEMP_VAR)
+  set(QT3_INSTALLED TRUE)
+endif()
+set(GLOB_TEMP_VAR)
+
+file(GLOB GLOB_TEMP_VAR /usr/local/qt-x11-commercial-3*/bin/qmake)
+if(GLOB_TEMP_VAR)
+  set(QT3_INSTALLED TRUE)
+endif()
+set(GLOB_TEMP_VAR)
+
+file(GLOB GLOB_TEMP_VAR /usr/local/lib/qt3/bin/qmake)
+if(GLOB_TEMP_VAR)
+  set(QT3_INSTALLED TRUE)
+endif()
+set(GLOB_TEMP_VAR)
+
+# look for qt4 installations
+file(GLOB GLOB_TEMP_VAR /usr/local/qt-x11-commercial-4*/bin/qmake)
+if(GLOB_TEMP_VAR)
+  set(QT4_INSTALLED TRUE)
+endif()
+set(GLOB_TEMP_VAR)
+
+file(GLOB GLOB_TEMP_VAR /usr/local/Trolltech/Qt-4*/bin/qmake)
+if(GLOB_TEMP_VAR)
+  set(QT4_INSTALLED TRUE)
+endif()
+set(GLOB_TEMP_VAR)
+
+file(GLOB GLOB_TEMP_VAR /usr/local/lib/qt4/bin/qmake)
+if(GLOB_TEMP_VAR)
+  set(QT4_INSTALLED TRUE)
+endif()
+set(GLOB_TEMP_VAR)
+
+if (Qt_FIND_VERSION)
+  if (Qt_FIND_VERSION MATCHES "^([34])(\\.[0-9]+.*)?$")
+    set(DESIRED_QT_VERSION ${CMAKE_MATCH_1})
+  else ()
+    message(FATAL_ERROR "FindQt was called with invalid version '${Qt_FIND_VERSION}'. Only Qt major versions 3 or 4 are supported. If you do not need to support both Qt3 and Qt4 in your source consider calling find_package(Qt3) or find_package(Qt4) instead of find_package(Qt) instead.")
+  endif ()
+endif ()
+
+# now find qmake
+find_program(QT_QMAKE_EXECUTABLE_FINDQT NAMES qmake PATHS "${QT_SEARCH_PATH}/bin" "$ENV{QTDIR}/bin")
+if(QT_QMAKE_EXECUTABLE_FINDQT)
+  exec_program(${QT_QMAKE_EXECUTABLE_FINDQT} ARGS "-query QT_VERSION"
+    OUTPUT_VARIABLE QTVERSION)
+  if(QTVERSION MATCHES "4")
+    set(QT_QMAKE_EXECUTABLE ${QT_QMAKE_EXECUTABLE_FINDQT} CACHE PATH "Qt4 qmake program.")
+    set(QT4_INSTALLED TRUE)
+  endif()
+  if(QTVERSION MATCHES "Unknown")
+    set(QT3_INSTALLED TRUE)
+  endif()
+endif()
+
+if(QT_QMAKE_EXECUTABLE_FINDQT)
+  exec_program( ${QT_QMAKE_EXECUTABLE_FINDQT}
+    ARGS "-query QT_INSTALL_HEADERS"
+    OUTPUT_VARIABLE qt_headers )
+endif()
+
+find_file( QT4_QGLOBAL_H_FILE qglobal.h
+  "${QT_SEARCH_PATH}/Qt/include"
+  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\4.0.0;InstallDir]/include/Qt"
+  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\4.0.0;InstallDir]/include/Qt"
+  ${qt_headers}/Qt
+  $ENV{QTDIR}/include/Qt
+  /usr/lib/qt/include/Qt
+  /usr/share/qt4/include/Qt
+  /usr/local/include/X11/qt4/Qt
+  C:/Progra~1/qt/include/Qt
+  PATH_SUFFIXES qt/include/Qt include/Qt)
+
+if(QT4_QGLOBAL_H_FILE)
+  set(QT4_INSTALLED TRUE)
+endif()
+
+find_file( QT3_QGLOBAL_H_FILE qglobal.h
+  "${QT_SEARCH_PATH}/Qt/include"
+ "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]/include/Qt"
+  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]/include/Qt"
+  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]/include/Qt"
+  C:/Qt/3.3.3Educational/include
+  $ENV{QTDIR}/include
+  /usr/include/qt3/Qt
+  /usr/share/qt3/include
+  /usr/local/include/X11/qt3
+  C:/Progra~1/qt/include
+  PATH_SUFFIXES qt/include include/qt3)
+
+if(QT3_QGLOBAL_H_FILE)
+  set(QT3_INSTALLED TRUE)
+endif()
+
+if(QT3_INSTALLED AND QT4_INSTALLED AND NOT DESIRED_QT_VERSION)
+  # force user to pick if we have both
+  set(DESIRED_QT_VERSION 0 CACHE STRING "Pick a version of Qt to use: 3 or 4")
+else()
+  # if only one found then pick that one
+  if(QT3_INSTALLED AND NOT DESIRED_QT_VERSION EQUAL 4)
+    set(DESIRED_QT_VERSION 3 CACHE STRING "Pick a version of Qt to use: 3 or 4")
+  endif()
+  if(QT4_INSTALLED AND NOT DESIRED_QT_VERSION EQUAL 3)
+    set(DESIRED_QT_VERSION 4 CACHE STRING "Pick a version of Qt to use: 3 or 4")
+  endif()
+endif()
+
+if(DESIRED_QT_VERSION EQUAL 3)
+  set(Qt3_FIND_REQUIRED ${Qt_FIND_REQUIRED})
+  set(Qt3_FIND_QUIETLY  ${Qt_FIND_QUIETLY})
+  include(${CMAKE_CURRENT_LIST_DIR}/FindQt3.cmake)
+endif()
+if(DESIRED_QT_VERSION EQUAL 4)
+  set(Qt4_FIND_REQUIRED ${Qt_FIND_REQUIRED})
+  set(Qt4_FIND_QUIETLY  ${Qt_FIND_QUIETLY})
+  include(${CMAKE_CURRENT_LIST_DIR}/FindQt4.cmake)
+endif()
+
+if(NOT QT3_INSTALLED AND NOT QT4_INSTALLED)
+  if(QT_REQUIRED)
+    message(SEND_ERROR "CMake was unable to find any Qt versions, put qmake in your path, or set QT_QMAKE_EXECUTABLE.")
+  endif()
+else()
+  if(NOT QT_FOUND AND NOT DESIRED_QT_VERSION)
+    if(QT_REQUIRED)
+      message(SEND_ERROR "Multiple versions of Qt found please set DESIRED_QT_VERSION")
+    else()
+      message("Multiple versions of Qt found please set DESIRED_QT_VERSION")
+    endif()
+  endif()
+  if(NOT QT_FOUND AND DESIRED_QT_VERSION)
+    if(QT_REQUIRED)
+      message(FATAL_ERROR "CMake was unable to find Qt version: ${DESIRED_QT_VERSION}. Set advanced values QT_QMAKE_EXECUTABLE and QT${DESIRED_QT_VERSION}_QGLOBAL_H_FILE, if those are set then QT_QT_LIBRARY or QT_LIBRARY_DIR.")
+    else()
+      message( "CMake was unable to find desired Qt version: ${DESIRED_QT_VERSION}. Set advanced values QT_QMAKE_EXECUTABLE and QT${DESIRED_QT_VERSION}_QGLOBAL_H_FILE.")
+    endif()
+  endif()
+endif()
+mark_as_advanced(QT3_QGLOBAL_H_FILE QT4_QGLOBAL_H_FILE QT_QMAKE_EXECUTABLE_FINDQT)
diff --git a/share/cmake-3.22/Modules/FindQt3.cmake b/share/cmake-3.22/Modules/FindQt3.cmake
new file mode 100644
index 0000000..da82e59
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindQt3.cmake
@@ -0,0 +1,306 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindQt3
+-------
+
+Locate Qt include paths and libraries
+
+This module defines:
+
+::
+
+  QT_INCLUDE_DIR    - where to find qt.h, etc.
+  QT_LIBRARIES      - the libraries to link against to use Qt.
+  QT_DEFINITIONS    - definitions to use when
+                      compiling code that uses Qt.
+  QT_FOUND          - If false, don't try to use Qt.
+  QT_VERSION_STRING - the version of Qt found
+
+
+
+If you need the multithreaded version of Qt, set QT_MT_REQUIRED to
+TRUE
+
+Also defined, but not for general use are:
+
+::
+
+  QT_MOC_EXECUTABLE, where to find the moc tool.
+  QT_UIC_EXECUTABLE, where to find the uic tool.
+  QT_QT_LIBRARY, where to find the Qt library.
+  QT_QTMAIN_LIBRARY, where to find the qtmain
+   library. This is only required by Qt3 on Windows.
+#]=======================================================================]
+
+# These are around for backwards compatibility
+# they will be set
+#  QT_WRAP_CPP, set true if QT_MOC_EXECUTABLE is found
+#  QT_WRAP_UI set true if QT_UIC_EXECUTABLE is found
+
+# If Qt4 has already been found, fail.
+if(QT4_FOUND)
+  if(Qt3_FIND_REQUIRED)
+    message( FATAL_ERROR "Qt3 and Qt4 cannot be used together in one project.")
+  else()
+    if(NOT Qt3_FIND_QUIETLY)
+      message( STATUS    "Qt3 and Qt4 cannot be used together in one project.")
+    endif()
+    return()
+  endif()
+endif()
+
+
+file(GLOB GLOB_PATHS /usr/lib/qt-3*)
+foreach(GLOB_PATH ${GLOB_PATHS})
+  list(APPEND GLOB_PATHS_BIN "${GLOB_PATH}/bin")
+endforeach()
+find_path(QT_INCLUDE_DIR
+  NAMES qt.h
+  PATHS
+  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]/include/Qt"
+  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]/include/Qt"
+  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]/include/Qt"
+  $ENV{QTDIR}/include
+  ${GLOB_PATHS}
+  /usr/share/qt3/include
+  C:/Progra~1/qt/include
+  /usr/local/include/X11/qt3
+  PATH_SUFFIXES lib/qt/include lib/qt3/include include/qt include/qt3 qt/include qt3/include
+  )
+
+# if qglobal.h is not in the qt_include_dir then set
+# QT_INCLUDE_DIR to NOTFOUND
+if(NOT EXISTS ${QT_INCLUDE_DIR}/qglobal.h)
+  set(QT_INCLUDE_DIR QT_INCLUDE_DIR-NOTFOUND CACHE PATH "path to Qt3 include directory" FORCE)
+endif()
+
+if(QT_INCLUDE_DIR)
+  #extract the version string from qglobal.h
+  file(STRINGS ${QT_INCLUDE_DIR}/qglobal.h QGLOBAL_H REGEX "#define[\t ]+QT_VERSION_STR[\t ]+\"[0-9]+.[0-9]+.[0-9]+[a-z]*\"")
+  string(REGEX REPLACE ".*\"([0-9]+.[0-9]+.[0-9]+[a-z]*)\".*" "\\1" qt_version_str "${QGLOBAL_H}")
+  unset(QGLOBAL_H)
+
+  # Under windows the qt library (MSVC) has the format qt-mtXYZ where XYZ is the
+  # version X.Y.Z, so we need to remove the dots from version
+  string(REGEX REPLACE "\\." "" qt_version_str_lib "${qt_version_str}")
+  set(QT_VERSION_STRING "${qt_version_str}")
+endif()
+
+file(GLOB GLOB_PATHS_LIB /usr/lib/qt-3*/lib/)
+if (QT_MT_REQUIRED)
+  find_library(QT_QT_LIBRARY
+    NAMES
+    qt-mt qt-mt${qt_version_str_lib} qt-mtnc${qt_version_str_lib}
+    qt-mtedu${qt_version_str_lib} qt-mt230nc qt-mtnc321 qt-mt3
+    PATHS
+      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]"
+      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]"
+      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]"
+      ENV QTDIR
+      ${GLOB_PATHS_LIB}
+      /usr/share/qt3
+      C:/Progra~1/qt
+    PATH_SUFFIXES
+      lib lib/qt lib/qt3 qt qt3 qt/lib qt3/lib
+    )
+
+else ()
+  find_library(QT_QT_LIBRARY
+    NAMES
+    qt qt-${qt_version_str_lib} qt-edu${qt_version_str_lib}
+    qt-mt qt-mt${qt_version_str_lib} qt-mtnc${qt_version_str_lib}
+    qt-mtedu${qt_version_str_lib} qt-mt230nc qt-mtnc321 qt-mt3
+    PATHS
+      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]"
+      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]"
+      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]"
+      ENV QTDIR
+      ${GLOB_PATHS_LIB}
+      /usr/share/qt3
+      C:/Progra~1/qt/lib
+    PATH_SUFFIXES
+      lib lib/qt lib/qt3 qt qt3 qt/lib qt3/lib
+    )
+endif ()
+
+
+find_library(QT_QASSISTANTCLIENT_LIBRARY
+  NAMES qassistantclient
+  PATHS
+    "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]"
+    "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]"
+    "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]"
+    ENV QTDIR
+    ${GLOB_PATHS_LIB}
+    /usr/share/qt3
+    C:/Progra~1/qt
+  PATH_SUFFIXES
+    lib lib/qt lib/qt3 qt qt3 qt/lib qt3/lib
+  )
+
+# Qt 3 should prefer QTDIR over the PATH
+find_program(QT_MOC_EXECUTABLE
+  NAMES moc-qt3 moc3 moc3-mt moc
+  HINTS
+    ENV QTDIR
+  PATHS
+  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]/include/Qt"
+  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]/include/Qt"
+  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]/include/Qt"
+  ${GLOB_PATHS_BIN}
+    /usr/share/qt3
+    C:/Progra~1/qt
+  PATH_SUFFIXES
+    bin lib/qt lib/qt3 qt qt3 qt/bin qt3/bin lib/qt/bin lib/qt3/bin
+  )
+
+if(QT_MOC_EXECUTABLE)
+  set ( QT_WRAP_CPP "YES")
+endif()
+
+# Qt 3 should prefer QTDIR over the PATH
+find_program(QT_UIC_EXECUTABLE
+  NAMES uic-qt3 uic3 uic3-mt uic
+  HINTS
+    ENV QTDIR
+  PATHS
+  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]/include/Qt"
+  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]/include/Qt"
+  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]/include/Qt"
+  ${GLOB_PATHS_BIN}
+    /usr/share/qt3
+    C:/Progra~1/qt
+  PATH_SUFFIXES
+    bin lib/qt lib/qt3 qt qt3 qt/bin qt3/bin lib/qt/bin lib/qt3/bin
+  )
+
+if(QT_UIC_EXECUTABLE)
+  set ( QT_WRAP_UI "YES")
+endif()
+
+if (WIN32)
+  find_library(QT_QTMAIN_LIBRARY
+    NAMES qtmain
+    HINTS
+      ENV QTDIR
+      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]"
+      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]"
+      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]"
+    PATHS
+      "$ENV{ProgramFiles}/qt"
+      "C:/Program Files/qt"
+    PATH_SUFFIXES
+      lib
+    DOC "This Library is only needed by and included with Qt3 on MSWindows. It should be NOTFOUND, undefined or IGNORE otherwise."
+    )
+endif ()
+
+#support old QT_MIN_VERSION if set, but not if version is supplied by find_package()
+if(NOT Qt3_FIND_VERSION AND QT_MIN_VERSION)
+  set(Qt3_FIND_VERSION ${QT_MIN_VERSION})
+endif()
+
+# if the include a library are found then we have it
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+if (CMAKE_FIND_PACKAGE_NAME STREQUAL "Qt")
+  # FindQt include()'s this module. It's an old pattern, but rather than trying
+  # to suppress this from outside the module (which is then sensitive to the
+  # contents, detect the case in this module and suppress it explicitly.
+  set(FPHSA_NAME_MISMATCHED 1)
+endif ()
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Qt3
+                                  REQUIRED_VARS QT_QT_LIBRARY QT_INCLUDE_DIR QT_MOC_EXECUTABLE
+                                  VERSION_VAR QT_VERSION_STRING)
+unset(FPHSA_NAME_MISMATCHED)
+set(QT_FOUND ${QT3_FOUND} )
+
+if(QT_FOUND)
+  set( QT_LIBRARIES ${QT_LIBRARIES} ${QT_QT_LIBRARY} )
+  set( QT_DEFINITIONS "")
+
+  if (WIN32 AND NOT CYGWIN)
+    if (QT_QTMAIN_LIBRARY)
+      # for version 3
+      set (QT_DEFINITIONS -DQT_DLL -DQT_THREAD_SUPPORT -DNO_DEBUG)
+      set (QT_LIBRARIES imm32.lib ${QT_QT_LIBRARY} ${QT_QTMAIN_LIBRARY} )
+      set (QT_LIBRARIES ${QT_LIBRARIES} winmm wsock32)
+    else ()
+      # for version 2
+      set (QT_LIBRARIES imm32.lib ws2_32.lib ${QT_QT_LIBRARY} )
+    endif ()
+  else ()
+    set (QT_LIBRARIES ${QT_QT_LIBRARY} )
+
+    set (QT_DEFINITIONS -DQT_SHARED -DQT_NO_DEBUG)
+    if(QT_QT_LIBRARY MATCHES "qt-mt")
+      set (QT_DEFINITIONS ${QT_DEFINITIONS} -DQT_THREAD_SUPPORT -D_REENTRANT)
+    endif()
+
+  endif ()
+
+  if (QT_QASSISTANTCLIENT_LIBRARY)
+    set (QT_LIBRARIES ${QT_QASSISTANTCLIENT_LIBRARY} ${QT_LIBRARIES})
+  endif ()
+
+  # Backwards compatibility for CMake1.4 and 1.2
+  set (QT_MOC_EXE ${QT_MOC_EXECUTABLE} )
+  set (QT_UIC_EXE ${QT_UIC_EXECUTABLE} )
+  # for unix add X11 stuff
+  if(UNIX)
+    find_package(X11)
+    if (X11_FOUND)
+      set (QT_LIBRARIES ${QT_LIBRARIES} ${X11_LIBRARIES})
+    endif ()
+    if (CMAKE_DL_LIBS)
+      set (QT_LIBRARIES ${QT_LIBRARIES} ${CMAKE_DL_LIBS})
+    endif ()
+  endif()
+  if(QT_QT_LIBRARY MATCHES "qt-mt")
+    find_package(Threads)
+    set(QT_LIBRARIES ${QT_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
+  endif()
+endif()
+
+if(QT_MOC_EXECUTABLE)
+  execute_process(COMMAND ${QT_MOC_EXECUTABLE} "-v"
+                  OUTPUT_VARIABLE QTVERSION_MOC
+                  ERROR_QUIET)
+endif()
+if(QT_UIC_EXECUTABLE)
+  execute_process(COMMAND ${QT_UIC_EXECUTABLE} "-version"
+                  OUTPUT_VARIABLE QTVERSION_UIC
+                  ERROR_QUIET)
+endif()
+
+set(_QT_UIC_VERSION_3 FALSE)
+if("${QTVERSION_UIC}" MATCHES " 3.")
+  set(_QT_UIC_VERSION_3 TRUE)
+endif()
+
+set(_QT_MOC_VERSION_3 FALSE)
+if("${QTVERSION_MOC}" MATCHES " 3.")
+  set(_QT_MOC_VERSION_3 TRUE)
+endif()
+
+set(QT_WRAP_CPP FALSE)
+if (QT_MOC_EXECUTABLE AND _QT_MOC_VERSION_3)
+  set ( QT_WRAP_CPP TRUE)
+endif ()
+
+set(QT_WRAP_UI FALSE)
+if (QT_UIC_EXECUTABLE AND _QT_UIC_VERSION_3)
+  set ( QT_WRAP_UI TRUE)
+endif ()
+
+mark_as_advanced(
+  QT_INCLUDE_DIR
+  QT_QT_LIBRARY
+  QT_QTMAIN_LIBRARY
+  QT_QASSISTANTCLIENT_LIBRARY
+  QT_UIC_EXECUTABLE
+  QT_MOC_EXECUTABLE
+  QT_WRAP_CPP
+  QT_WRAP_UI
+  )
diff --git a/share/cmake-3.22/Modules/FindQt4.cmake b/share/cmake-3.22/Modules/FindQt4.cmake
new file mode 100644
index 0000000..ec0f453
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindQt4.cmake
@@ -0,0 +1,1346 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindQt4
+-------
+
+Finding and Using Qt4
+^^^^^^^^^^^^^^^^^^^^^
+
+This module can be used to find Qt4.  The most important issue is that
+the Qt4 qmake is available via the system path.  This qmake is then
+used to detect basically everything else.  This module defines a
+number of :prop_tgt:`IMPORTED` targets, macros and variables.
+
+Typical usage could be something like:
+
+.. code-block:: cmake
+
+   set(CMAKE_AUTOMOC ON)
+   set(CMAKE_INCLUDE_CURRENT_DIR ON)
+   find_package(Qt4 4.4.3 REQUIRED QtGui QtXml)
+   add_executable(myexe main.cpp)
+   target_link_libraries(myexe Qt4::QtGui Qt4::QtXml)
+
+.. note::
+
+ When using :prop_tgt:`IMPORTED` targets, the qtmain.lib static library is
+ automatically linked on Windows for :prop_tgt:`WIN32 <WIN32_EXECUTABLE>`
+ executables. To disable that globally, set the
+ ``QT4_NO_LINK_QTMAIN`` variable before finding Qt4. To disable that
+ for a particular executable, set the ``QT4_NO_LINK_QTMAIN`` target
+ property to ``TRUE`` on the executable.
+
+Qt Build Tools
+^^^^^^^^^^^^^^
+
+Qt relies on some bundled tools for code generation, such as ``moc`` for
+meta-object code generation,``uic`` for widget layout and population,
+and ``rcc`` for virtual filesystem content generation.  These tools may be
+automatically invoked by :manual:`cmake(1)` if the appropriate conditions
+are met.  See :manual:`cmake-qt(7)` for more.
+
+Qt Macros
+^^^^^^^^^
+
+In some cases it can be necessary or useful to invoke the Qt build tools in a
+more-manual way. Several macros are available to add targets for such uses.
+
+::
+
+  macro QT4_WRAP_CPP(outfiles inputfile ... [TARGET tgt] OPTIONS ...)
+        create moc code from a list of files containing Qt class with
+        the Q_OBJECT declaration.  Per-directory preprocessor definitions
+        are also added.  If the <tgt> is specified, the
+        INTERFACE_INCLUDE_DIRECTORIES and INTERFACE_COMPILE_DEFINITIONS from
+        the <tgt> are passed to moc.  Options may be given to moc, such as
+        those found when executing "moc -help".
+
+
+::
+
+  macro QT4_WRAP_UI(outfiles inputfile ... OPTIONS ...)
+        create code from a list of Qt designer ui files.
+        Options may be given to uic, such as those found
+        when executing "uic -help"
+
+
+::
+
+  macro QT4_ADD_RESOURCES(outfiles inputfile ... OPTIONS ...)
+        create code from a list of Qt resource files.
+        Options may be given to rcc, such as those found
+        when executing "rcc -help"
+
+
+::
+
+  macro QT4_GENERATE_MOC(inputfile outputfile [TARGET tgt])
+        creates a rule to run moc on infile and create outfile.
+        Use this if for some reason QT4_WRAP_CPP() isn't appropriate, e.g.
+        because you need a custom filename for the moc file or something
+        similar.  If the <tgt> is specified, the
+        INTERFACE_INCLUDE_DIRECTORIES and INTERFACE_COMPILE_DEFINITIONS from
+        the <tgt> are passed to moc.
+
+
+::
+
+  macro QT4_ADD_DBUS_INTERFACE(outfiles interface basename)
+        Create the interface header and implementation files with the
+        given basename from the given interface xml file and add it to
+        the list of sources.
+
+        You can pass additional parameters to the qdbusxml2cpp call by setting
+        properties on the input file:
+
+        INCLUDE the given file will be included in the generate interface header
+
+        CLASSNAME the generated class is named accordingly
+
+        NO_NAMESPACE the generated class is not wrapped in a namespace
+
+
+::
+
+  macro QT4_ADD_DBUS_INTERFACES(outfiles inputfile ... )
+        Create the interface header and implementation files
+        for all listed interface xml files.
+        The basename will be automatically determined from the name
+        of the xml file.
+
+        The source file properties described for
+        QT4_ADD_DBUS_INTERFACE also apply here.
+
+
+::
+
+  macro QT4_ADD_DBUS_ADAPTOR(outfiles xmlfile parentheader parentclassname
+                             [basename] [classname])
+        create a dbus adaptor (header and implementation file) from the xml file
+        describing the interface, and add it to the list of sources. The adaptor
+        forwards the calls to a parent class, defined in parentheader and named
+        parentclassname. The name of the generated files will be
+        <basename>adaptor.{cpp,h} where basename defaults to the basename of the
+        xml file.
+        If <classname> is provided, then it will be used as the classname of the
+        adaptor itself.
+
+
+::
+
+  macro QT4_GENERATE_DBUS_INTERFACE( header [interfacename] OPTIONS ...)
+        generate the xml interface file from the given header.
+        If the optional argument interfacename is omitted, the name of the
+        interface file is constructed from the basename of the header with
+        the suffix .xml appended.
+        Options may be given to qdbuscpp2xml, such as those found when
+        executing "qdbuscpp2xml --help"
+
+
+::
+
+  macro QT4_CREATE_TRANSLATION( qm_files directories ... sources ...
+                                ts_files ... OPTIONS ...)
+        out: qm_files
+        in:  directories sources ts_files
+        options: flags to pass to lupdate, such as -extensions to specify
+        extensions for a directory scan.
+        generates commands to create .ts (via lupdate) and .qm
+        (via lrelease) - files from directories and/or sources. The ts files are
+        created and/or updated in the source tree (unless given with full paths).
+        The qm files are generated in the build tree.
+        Updating the translations can be done by adding the qm_files
+        to the source list of your library/executable, so they are
+        always updated, or by adding a custom target to control when
+        they get updated/generated.
+
+
+::
+
+  macro QT4_ADD_TRANSLATION( qm_files ts_files ... )
+        out: qm_files
+        in:  ts_files
+        generates commands to create .qm from .ts - files. The generated
+        filenames can be found in qm_files. The ts_files
+        must exist and are not updated in any way.
+
+
+::
+
+  macro QT4_AUTOMOC(sourcefile1 sourcefile2 ... [TARGET tgt])
+        The qt4_automoc macro is obsolete.  Use the CMAKE_AUTOMOC feature instead.
+        This macro is still experimental.
+        It can be used to have moc automatically handled.
+        So if you have the files foo.h and foo.cpp, and in foo.h a
+        a class uses the Q_OBJECT macro, moc has to run on it. If you don't
+        want to use QT4_WRAP_CPP() (which is reliable and mature), you can insert
+        #include "foo.moc"
+        in foo.cpp and then give foo.cpp as argument to QT4_AUTOMOC(). This will
+        scan all listed files at cmake-time for such included moc files and if it
+        finds them cause a rule to be generated to run moc at build time on the
+        accompanying header file foo.h.
+        If a source file has the SKIP_AUTOMOC property set it will be ignored by
+        this macro.
+        If the <tgt> is specified, the INTERFACE_INCLUDE_DIRECTORIES and
+        INTERFACE_COMPILE_DEFINITIONS from the <tgt> are passed to moc.
+
+
+::
+
+ function QT4_USE_MODULES( target [link_type] modules...)
+        This function is obsolete. Use target_link_libraries with IMPORTED targets
+        instead.
+        Make <target> use the <modules> from Qt. Using a Qt module means
+        to link to the library, add the relevant include directories for the
+        module, and add the relevant compiler defines for using the module.
+        Modules are roughly equivalent to components of Qt4, so usage would be
+        something like:
+         qt4_use_modules(myexe Core Gui Declarative)
+        to use QtCore, QtGui and QtDeclarative. The optional <link_type> argument
+        can be specified as either LINK_PUBLIC or LINK_PRIVATE to specify the
+        same argument to the target_link_libraries call.
+
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+A particular Qt library may be used by using the corresponding
+:prop_tgt:`IMPORTED` target with the :command:`target_link_libraries`
+command:
+
+.. code-block:: cmake
+
+  target_link_libraries(myexe Qt4::QtGui Qt4::QtXml)
+
+Using a target in this way causes :cmake(1)` to use the appropriate include
+directories and compile definitions for the target when compiling ``myexe``.
+
+Targets are aware of their dependencies, so for example it is not necessary
+to list ``Qt4::QtCore`` if another Qt library is listed, and it is not
+necessary to list ``Qt4::QtGui`` if ``Qt4::QtDeclarative`` is listed.
+Targets may be tested for existence in the usual way with the
+:command:`if(TARGET)` command.
+
+The Qt toolkit may contain both debug and release libraries.
+:manual:`cmake(1)` will choose the appropriate version based on the build
+configuration.
+
+``Qt4::QtCore``
+ The QtCore target
+``Qt4::QtGui``
+ The QtGui target
+``Qt4::Qt3Support``
+ The Qt3Support target
+``Qt4::QtAssistant``
+ The QtAssistant target
+``Qt4::QtAssistantClient``
+ The QtAssistantClient target
+``Qt4::QAxContainer``
+ The QAxContainer target (Windows only)
+``Qt4::QAxServer``
+ The QAxServer target (Windows only)
+``Qt4::QtDBus``
+ The QtDBus target
+``Qt4::QtDeclarative``
+ The QtDeclarative target
+``Qt4::QtDesigner``
+ The QtDesigner target
+``Qt4::QtDesignerComponents``
+ The QtDesignerComponents target
+``Qt4::QtHelp``
+ The QtHelp target
+``Qt4::QtMotif``
+ The QtMotif target
+``Qt4::QtMultimedia``
+ The QtMultimedia target
+``Qt4::QtNetwork``
+ The QtNetwork target
+``Qt4::QtNsPLugin``
+ The QtNsPLugin target
+``Qt4::QtOpenGL``
+ The QtOpenGL target
+``Qt4::QtScript``
+ The QtScript target
+``Qt4::QtScriptTools``
+ The QtScriptTools target
+``Qt4::QtSql``
+ The QtSql target
+``Qt4::QtSvg``
+ The QtSvg target
+``Qt4::QtTest``
+ The QtTest target
+``Qt4::QtUiTools``
+ The QtUiTools target
+``Qt4::QtWebKit``
+ The QtWebKit target
+``Qt4::QtXml``
+ The QtXml target
+``Qt4::QtXmlPatterns``
+ The QtXmlPatterns target
+``Qt4::phonon``
+ The phonon target
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+  Below is a detailed list of variables that FindQt4.cmake sets.
+
+``Qt4_FOUND``
+ If false, don't try to use Qt 4.
+``QT_FOUND``
+ If false, don't try to use Qt. This variable is for compatibility only.
+``QT4_FOUND``
+ If false, don't try to use Qt 4. This variable is for compatibility only.
+``QT_VERSION_MAJOR``
+ The major version of Qt found.
+``QT_VERSION_MINOR``
+ The minor version of Qt found.
+``QT_VERSION_PATCH``
+ The patch version of Qt found.
+#]=======================================================================]
+
+# Use find_package( Qt4 COMPONENTS ... ) to enable modules
+if( Qt4_FIND_COMPONENTS )
+  foreach( component ${Qt4_FIND_COMPONENTS} )
+    string( TOUPPER ${component} _COMPONENT )
+    set( QT_USE_${_COMPONENT} 1 )
+  endforeach()
+
+  # To make sure we don't use QtCore or QtGui when not in COMPONENTS
+  if(NOT QT_USE_QTCORE)
+    set( QT_DONT_USE_QTCORE 1 )
+  endif()
+
+  if(NOT QT_USE_QTGUI)
+    set( QT_DONT_USE_QTGUI 1 )
+  endif()
+
+endif()
+
+# If Qt3 has already been found, fail.
+if(QT_QT_LIBRARY)
+  if(Qt4_FIND_REQUIRED)
+    message( FATAL_ERROR "Qt3 and Qt4 cannot be used together in one project.  If switching to Qt4, the CMakeCache.txt needs to be cleaned.")
+  else()
+    if(NOT Qt4_FIND_QUIETLY)
+      message( STATUS    "Qt3 and Qt4 cannot be used together in one project.  If switching to Qt4, the CMakeCache.txt needs to be cleaned.")
+    endif()
+    return()
+  endif()
+endif()
+
+
+include(${CMAKE_CURRENT_LIST_DIR}/CheckCXXSymbolExists.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/MacroAddFileDependencies.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
+
+set(QT_USE_FILE ${CMAKE_ROOT}/Modules/UseQt4.cmake)
+
+set( QT_DEFINITIONS "")
+
+# convenience macro for dealing with debug/release library names
+macro (_QT4_ADJUST_LIB_VARS _camelCaseBasename)
+
+  string(TOUPPER "${_camelCaseBasename}" basename)
+
+  # The name of the imported targets, i.e. the prefix "Qt4::" must not change,
+  # since it is stored in EXPORT-files as name of a required library. If the name would change
+  # here, this would lead to the imported Qt4-library targets not being resolved by cmake anymore.
+  if (QT_${basename}_LIBRARY_RELEASE OR QT_${basename}_LIBRARY_DEBUG)
+
+    if(NOT TARGET Qt4::${_camelCaseBasename})
+      add_library(Qt4::${_camelCaseBasename} UNKNOWN IMPORTED )
+
+      if (QT_${basename}_LIBRARY_RELEASE)
+        set_property(TARGET Qt4::${_camelCaseBasename} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+        set(_location "${QT_${basename}_LIBRARY_RELEASE}")
+        if(QT_USE_FRAMEWORKS AND EXISTS ${_location}/${_camelCaseBasename})
+          set_property(TARGET Qt4::${_camelCaseBasename}        PROPERTY IMPORTED_LOCATION_RELEASE "${_location}/${_camelCaseBasename}" )
+        else()
+          set_property(TARGET Qt4::${_camelCaseBasename}        PROPERTY IMPORTED_LOCATION_RELEASE "${_location}" )
+        endif()
+      endif ()
+
+      if (QT_${basename}_LIBRARY_DEBUG)
+        set_property(TARGET Qt4::${_camelCaseBasename} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
+        set(_location "${QT_${basename}_LIBRARY_DEBUG}")
+        if(QT_USE_FRAMEWORKS AND EXISTS ${_location}/${_camelCaseBasename})
+          set_property(TARGET Qt4::${_camelCaseBasename}        PROPERTY IMPORTED_LOCATION_DEBUG "${_location}/${_camelCaseBasename}" )
+        else()
+          set_property(TARGET Qt4::${_camelCaseBasename}        PROPERTY IMPORTED_LOCATION_DEBUG "${_location}" )
+        endif()
+      endif ()
+      set_property(TARGET Qt4::${_camelCaseBasename} PROPERTY
+        INTERFACE_INCLUDE_DIRECTORIES
+          "${QT_${basename}_INCLUDE_DIR}"
+      )
+      string(REGEX REPLACE "^QT" "" _stemname ${basename})
+      set_property(TARGET Qt4::${_camelCaseBasename} PROPERTY
+        INTERFACE_COMPILE_DEFINITIONS
+          "QT_${_stemname}_LIB"
+      )
+    endif()
+
+    # If QT_USE_IMPORTED_TARGETS is enabled, the QT_QTFOO_LIBRARY variables are set to point at these
+    # imported targets. This works better in general, and is also in almost all cases fully
+    # backward compatible. The only issue is when a project A which had this enabled then exports its
+    # libraries via export or export_library_dependencies(). In this case the libraries from project
+    # A will depend on the imported Qt targets, and the names of these imported targets will be stored
+    # in the dependency files on disk. This means when a project B then uses project A, these imported
+    # targets must be created again, otherwise e.g. "Qt4__QtCore" will be interpreted as name of a
+    # library file on disk, and not as a target, and linking will fail:
+    if(QT_USE_IMPORTED_TARGETS)
+        set(QT_${basename}_LIBRARY       Qt4::${_camelCaseBasename} )
+        set(QT_${basename}_LIBRARIES     Qt4::${_camelCaseBasename} )
+    else()
+
+      # if the release- as well as the debug-version of the library have been found:
+      if (QT_${basename}_LIBRARY_DEBUG AND QT_${basename}_LIBRARY_RELEASE)
+        # if the generator is multi-config or if CMAKE_BUILD_TYPE is set for
+        # single-config generators, set optimized and debug libraries
+        get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+        if(_isMultiConfig OR CMAKE_BUILD_TYPE)
+          set(QT_${basename}_LIBRARY       optimized ${QT_${basename}_LIBRARY_RELEASE} debug ${QT_${basename}_LIBRARY_DEBUG})
+        else()
+          # For single-config generators where CMAKE_BUILD_TYPE has no value,
+          # just use the release libraries
+          set(QT_${basename}_LIBRARY       ${QT_${basename}_LIBRARY_RELEASE} )
+        endif()
+        set(QT_${basename}_LIBRARIES       optimized ${QT_${basename}_LIBRARY_RELEASE} debug ${QT_${basename}_LIBRARY_DEBUG})
+      endif ()
+
+      # if only the release version was found, set the debug variable also to the release version
+      if (QT_${basename}_LIBRARY_RELEASE AND NOT QT_${basename}_LIBRARY_DEBUG)
+        set(QT_${basename}_LIBRARY_DEBUG ${QT_${basename}_LIBRARY_RELEASE})
+        set(QT_${basename}_LIBRARY       ${QT_${basename}_LIBRARY_RELEASE})
+        set(QT_${basename}_LIBRARIES     ${QT_${basename}_LIBRARY_RELEASE})
+      endif ()
+
+      # if only the debug version was found, set the release variable also to the debug version
+      if (QT_${basename}_LIBRARY_DEBUG AND NOT QT_${basename}_LIBRARY_RELEASE)
+        set(QT_${basename}_LIBRARY_RELEASE ${QT_${basename}_LIBRARY_DEBUG})
+        set(QT_${basename}_LIBRARY         ${QT_${basename}_LIBRARY_DEBUG})
+        set(QT_${basename}_LIBRARIES       ${QT_${basename}_LIBRARY_DEBUG})
+      endif ()
+
+      # put the value in the cache:
+      set(QT_${basename}_LIBRARY ${QT_${basename}_LIBRARY} CACHE STRING "The Qt ${basename} library" FORCE)
+
+    endif()
+
+    set(QT_${basename}_FOUND 1)
+
+  else ()
+
+    set(QT_${basename}_LIBRARY "" CACHE STRING "The Qt ${basename} library" FORCE)
+
+  endif ()
+
+  if (QT_${basename}_INCLUDE_DIR)
+    #add the include directory to QT_INCLUDES
+    set(QT_INCLUDES "${QT_${basename}_INCLUDE_DIR}" ${QT_INCLUDES})
+  endif ()
+
+  # Make variables changeable to the advanced user
+  mark_as_advanced(QT_${basename}_LIBRARY QT_${basename}_LIBRARY_RELEASE QT_${basename}_LIBRARY_DEBUG QT_${basename}_INCLUDE_DIR)
+endmacro ()
+
+function(_QT4_QUERY_QMAKE VAR RESULT)
+  execute_process(COMMAND "${QT_QMAKE_EXECUTABLE}" -query ${VAR}
+    RESULT_VARIABLE return_code
+    OUTPUT_VARIABLE output
+    OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE)
+  if(NOT return_code)
+    file(TO_CMAKE_PATH "${output}" output)
+    set(${RESULT} ${output} PARENT_SCOPE)
+  endif()
+endfunction()
+
+function(_QT4_GET_VERSION_COMPONENTS VERSION RESULT_MAJOR RESULT_MINOR RESULT_PATCH)
+  string(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" QT_VERSION_MAJOR "${QTVERSION}")
+  string(REGEX REPLACE "^[0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" QT_VERSION_MINOR "${QTVERSION}")
+  string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" QT_VERSION_PATCH "${QTVERSION}")
+
+  set(${RESULT_MAJOR} ${QT_VERSION_MAJOR} PARENT_SCOPE)
+  set(${RESULT_MINOR} ${QT_VERSION_MINOR} PARENT_SCOPE)
+  set(${RESULT_PATCH} ${QT_VERSION_PATCH} PARENT_SCOPE)
+endfunction()
+
+function(_QT4_FIND_QMAKE QMAKE_NAMES QMAKE_RESULT VERSION_RESULT)
+  list(LENGTH QMAKE_NAMES QMAKE_NAMES_LEN)
+  if(${QMAKE_NAMES_LEN} EQUAL 0)
+    return()
+  endif()
+  list(GET QMAKE_NAMES 0 QMAKE_NAME)
+
+  get_filename_component(qt_install_version "[HKEY_CURRENT_USER\\Software\\trolltech\\Versions;DefaultQtVersion]" NAME)
+
+  find_program(QT_QMAKE_EXECUTABLE NAMES ${QMAKE_NAME}
+    PATHS
+      ENV QTDIR
+      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\${qt_install_version};InstallDir]"
+    PATH_SUFFIXES bin
+    DOC "The qmake executable for the Qt installation to use"
+  )
+
+  set(major 0)
+  if (QT_QMAKE_EXECUTABLE)
+    _qt4_query_qmake(QT_VERSION QTVERSION)
+    _qt4_get_version_components("${QTVERSION}" major minor patch)
+  endif()
+
+  if (NOT QT_QMAKE_EXECUTABLE OR NOT "${major}" EQUAL 4)
+    set(curr_qmake "${QT_QMAKE_EXECUTABLE}")
+    set(curr_qt_version "${QTVERSION}")
+
+    set(QT_QMAKE_EXECUTABLE NOTFOUND CACHE FILEPATH "" FORCE)
+    list(REMOVE_AT QMAKE_NAMES 0)
+    _qt4_find_qmake("${QMAKE_NAMES}" QMAKE QTVERSION)
+
+    _qt4_get_version_components("${QTVERSION}" major minor patch)
+    if (NOT ${major} EQUAL 4)
+      # Restore possibly found qmake and it's version; these are used later
+      # in error message if incorrect version is found
+      set(QT_QMAKE_EXECUTABLE "${curr_qmake}" CACHE FILEPATH "" FORCE)
+      set(QTVERSION "${curr_qt_version}")
+    endif()
+
+  endif()
+
+
+  set(${QMAKE_RESULT} "${QT_QMAKE_EXECUTABLE}" PARENT_SCOPE)
+  set(${VERSION_RESULT} "${QTVERSION}" PARENT_SCOPE)
+endfunction()
+
+
+set(QT4_INSTALLED_VERSION_TOO_OLD FALSE)
+
+set(_QT4_QMAKE_NAMES qmake qmake4 qmake-qt4 qmake-mac)
+_qt4_find_qmake("${_QT4_QMAKE_NAMES}" QT_QMAKE_EXECUTABLE QTVERSION)
+
+if (QT_QMAKE_EXECUTABLE AND
+  QTVERSION VERSION_GREATER 3 AND QTVERSION VERSION_LESS 5)
+
+  if (Qt5Core_FOUND)
+    # Qt5CoreConfig sets QT_MOC_EXECUTABLE as a non-cache variable to the Qt 5
+    # path to moc.  Unset that variable when Qt 4 and 5 are used together, so
+    # that when find_program looks for moc, it is not set to the Qt 5 version.
+    # If FindQt4 has already put the Qt 4 path in the cache, the unset()
+    # command 'unhides' the (correct) cache variable.
+    unset(QT_MOC_EXECUTABLE)
+  endif()
+  if (QT_QMAKE_EXECUTABLE_LAST)
+    string(COMPARE NOTEQUAL "${QT_QMAKE_EXECUTABLE_LAST}" "${QT_QMAKE_EXECUTABLE}" QT_QMAKE_CHANGED)
+  endif()
+  set(QT_QMAKE_EXECUTABLE_LAST "${QT_QMAKE_EXECUTABLE}" CACHE INTERNAL "" FORCE)
+
+  _qt4_get_version_components("${QTVERSION}" QT_VERSION_MAJOR QT_VERSION_MINOR QT_VERSION_PATCH)
+
+  # ask qmake for the mkspecs directory
+  # we do this first because QT_LIBINFIX might be set
+  if (NOT QT_MKSPECS_DIR  OR  QT_QMAKE_CHANGED)
+    _qt4_query_qmake(QMAKE_MKSPECS qt_mkspecs_dirs)
+    # do not replace : on windows as it might be a drive letter
+    # and windows should already use ; as a separator
+    if(NOT WIN32)
+      string(REPLACE ":" ";" qt_mkspecs_dirs "${qt_mkspecs_dirs}")
+    endif()
+
+    find_path(QT_MKSPECS_DIR NAMES qconfig.pri
+      HINTS ${qt_mkspecs_dirs}
+      PATH_SUFFIXES mkspecs share/qt4/mkspecs
+      DOC "The location of the Qt mkspecs containing qconfig.pri")
+  endif()
+
+  if(EXISTS "${QT_MKSPECS_DIR}/qconfig.pri")
+    file(READ ${QT_MKSPECS_DIR}/qconfig.pri _qconfig_FILE_contents)
+    string(REGEX MATCH "QT_CONFIG[^\n]+" QT_QCONFIG "${_qconfig_FILE_contents}")
+    string(REGEX MATCH "CONFIG[^\n]+" QT_CONFIG "${_qconfig_FILE_contents}")
+    string(REGEX MATCH "EDITION[^\n]+" QT_EDITION "${_qconfig_FILE_contents}")
+    string(REGEX MATCH "QT_LIBINFIX[^\n]+" _qconfig_qt_libinfix "${_qconfig_FILE_contents}")
+    string(REGEX REPLACE "QT_LIBINFIX *= *([^\n]*)" "\\1" QT_LIBINFIX "${_qconfig_qt_libinfix}")
+  endif()
+  if("${QT_EDITION}" MATCHES "DesktopLight")
+    set(QT_EDITION_DESKTOPLIGHT 1)
+  endif()
+
+  # ask qmake for the library dir as a hint, then search for QtCore library and use that as a reference for finding the
+  # others and for setting QT_LIBRARY_DIR
+  if (NOT (QT_QTCORE_LIBRARY_RELEASE OR QT_QTCORE_LIBRARY_DEBUG)  OR QT_QMAKE_CHANGED)
+    _qt4_query_qmake(QT_INSTALL_LIBS QT_LIBRARY_DIR_TMP)
+    set(QT_QTCORE_LIBRARY_RELEASE NOTFOUND)
+    set(QT_QTCORE_LIBRARY_DEBUG NOTFOUND)
+    find_library(QT_QTCORE_LIBRARY_RELEASE
+                 NAMES QtCore${QT_LIBINFIX} QtCore${QT_LIBINFIX}4
+                 HINTS ${QT_LIBRARY_DIR_TMP}
+                 NO_DEFAULT_PATH
+        )
+    find_library(QT_QTCORE_LIBRARY_DEBUG
+                 NAMES QtCore${QT_LIBINFIX}_debug QtCore${QT_LIBINFIX}d QtCore${QT_LIBINFIX}d4
+                 HINTS ${QT_LIBRARY_DIR_TMP}
+                 NO_DEFAULT_PATH
+        )
+
+    if(NOT QT_QTCORE_LIBRARY_RELEASE AND NOT QT_QTCORE_LIBRARY_DEBUG)
+      find_library(QT_QTCORE_LIBRARY_RELEASE
+                   NAMES QtCore${QT_LIBINFIX} QtCore${QT_LIBINFIX}4
+                   HINTS ${QT_LIBRARY_DIR_TMP}
+          )
+      find_library(QT_QTCORE_LIBRARY_DEBUG
+                   NAMES QtCore${QT_LIBINFIX}_debug QtCore${QT_LIBINFIX}d QtCore${QT_LIBINFIX}d4
+                   HINTS ${QT_LIBRARY_DIR_TMP}
+          )
+    endif()
+
+    # try dropping a hint if trying to use Visual Studio with Qt built by MinGW
+    if(NOT QT_QTCORE_LIBRARY_RELEASE AND MSVC)
+      if(EXISTS ${QT_LIBRARY_DIR_TMP}/libqtmain.a)
+        message( FATAL_ERROR "It appears you're trying to use Visual Studio with Qt built by MinGW.  Those compilers do not produce code compatible with each other.")
+      endif()
+    endif()
+
+  endif ()
+
+  # set QT_LIBRARY_DIR based on location of QtCore found.
+  if(QT_QTCORE_LIBRARY_RELEASE)
+    get_filename_component(QT_LIBRARY_DIR_TMP "${QT_QTCORE_LIBRARY_RELEASE}" PATH)
+    set(QT_LIBRARY_DIR ${QT_LIBRARY_DIR_TMP} CACHE INTERNAL "Qt library dir" FORCE)
+    set(QT_QTCORE_FOUND 1)
+  elseif(QT_QTCORE_LIBRARY_DEBUG)
+    get_filename_component(QT_LIBRARY_DIR_TMP "${QT_QTCORE_LIBRARY_DEBUG}" PATH)
+    set(QT_LIBRARY_DIR ${QT_LIBRARY_DIR_TMP} CACHE INTERNAL "Qt library dir" FORCE)
+    set(QT_QTCORE_FOUND 1)
+  else()
+    if(NOT Qt4_FIND_QUIETLY)
+      message(WARNING
+        "${QT_QMAKE_EXECUTABLE} reported QT_INSTALL_LIBS as "
+        "\"${QT_LIBRARY_DIR_TMP}\" "
+        "but QtCore could not be found there.  "
+        "Qt is NOT installed correctly for the target build environment.")
+    endif()
+    set(Qt4_FOUND FALSE)
+    if(Qt4_FIND_REQUIRED)
+      message( FATAL_ERROR "Could NOT find QtCore. Check ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log for more details.")
+    else()
+      return()
+    endif()
+  endif()
+
+  # ask qmake for the binary dir
+  if (NOT QT_BINARY_DIR  OR  QT_QMAKE_CHANGED)
+    _qt4_query_qmake(QT_INSTALL_BINS qt_bins)
+    set(QT_BINARY_DIR ${qt_bins} CACHE INTERNAL "" FORCE)
+  endif ()
+
+  if (APPLE)
+    set(CMAKE_FIND_FRAMEWORK_OLD ${CMAKE_FIND_FRAMEWORK})
+    if (EXISTS ${QT_LIBRARY_DIR}/QtCore.framework)
+      set(QT_USE_FRAMEWORKS ON CACHE INTERNAL "" FORCE)
+      set(CMAKE_FIND_FRAMEWORK FIRST)
+    else ()
+      set(QT_USE_FRAMEWORKS OFF CACHE INTERNAL "" FORCE)
+      set(CMAKE_FIND_FRAMEWORK LAST)
+    endif ()
+  endif ()
+
+  # ask qmake for the include dir
+  if (QT_LIBRARY_DIR AND (NOT QT_QTCORE_INCLUDE_DIR OR NOT QT_HEADERS_DIR OR  QT_QMAKE_CHANGED))
+      _qt4_query_qmake(QT_INSTALL_HEADERS qt_headers)
+      set(QT_QTCORE_INCLUDE_DIR NOTFOUND)
+      find_path(QT_QTCORE_INCLUDE_DIR QtCore
+                HINTS ${qt_headers} ${QT_LIBRARY_DIR}
+                PATH_SUFFIXES QtCore qt4/QtCore
+                NO_DEFAULT_PATH
+        )
+      if(NOT QT_QTCORE_INCLUDE_DIR)
+        find_path(QT_QTCORE_INCLUDE_DIR QtCore
+                  HINTS ${qt_headers} ${QT_LIBRARY_DIR}
+                  PATH_SUFFIXES QtCore qt4/QtCore
+          )
+      endif()
+
+      # Set QT_HEADERS_DIR based on finding QtCore header
+      if(QT_QTCORE_INCLUDE_DIR)
+        if(QT_USE_FRAMEWORKS)
+          set(QT_HEADERS_DIR "${qt_headers}" CACHE INTERNAL "" FORCE)
+        else()
+          get_filename_component(qt_headers "${QT_QTCORE_INCLUDE_DIR}/../" ABSOLUTE)
+          set(QT_HEADERS_DIR "${qt_headers}" CACHE INTERNAL "" FORCE)
+        endif()
+      else()
+        message("Warning: QT_QMAKE_EXECUTABLE reported QT_INSTALL_HEADERS as ${qt_headers}")
+        message("Warning: But QtCore couldn't be found.  Qt must NOT be installed correctly.")
+      endif()
+  endif()
+
+  if(APPLE)
+    set(CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_OLD})
+  endif()
+
+  # Set QT_INCLUDE_DIR based on QT_HEADERS_DIR
+  if(QT_HEADERS_DIR)
+    if(QT_USE_FRAMEWORKS)
+      # Qt/Mac frameworks has two include dirs.
+      # One is the framework include for which CMake will add a -F flag
+      # and the other is an include dir for non-framework Qt modules
+      set(QT_INCLUDE_DIR ${QT_HEADERS_DIR} ${QT_QTCORE_LIBRARY_RELEASE} )
+    else()
+      set(QT_INCLUDE_DIR ${QT_HEADERS_DIR})
+    endif()
+  endif()
+
+  # Set QT_INCLUDES
+  set( QT_INCLUDES ${QT_MKSPECS_DIR}/default ${QT_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR})
+
+
+  # ask qmake for the documentation directory
+  if (QT_LIBRARY_DIR AND NOT QT_DOC_DIR  OR  QT_QMAKE_CHANGED)
+    _qt4_query_qmake(QT_INSTALL_DOCS qt_doc_dir)
+    set(QT_DOC_DIR ${qt_doc_dir} CACHE PATH "The location of the Qt docs" FORCE)
+  endif ()
+
+
+  # ask qmake for the plugins directory
+  if (QT_LIBRARY_DIR AND NOT QT_PLUGINS_DIR  OR  QT_QMAKE_CHANGED)
+    _qt4_query_qmake(QT_INSTALL_PLUGINS qt_plugins_dir)
+    if(CMAKE_CROSSCOMPILING OR NOT qt_plugins_dir)
+      find_path(QT_PLUGINS_DIR
+        NAMES accessible bearer codecs designer graphicssystems iconengines imageformats inputmethods qmltooling script sqldrivers
+        HINTS ${qt_plugins_dir}
+        PATH_SUFFIXES plugins lib/qt4/plugins
+        DOC "The location of the Qt plugins")
+    else()
+      set(QT_PLUGINS_DIR ${qt_plugins_dir} CACHE PATH "The location of the Qt plugins")
+    endif()
+  endif ()
+
+  # ask qmake for the translations directory
+  if (QT_LIBRARY_DIR AND NOT QT_TRANSLATIONS_DIR  OR  QT_QMAKE_CHANGED)
+    _qt4_query_qmake(QT_INSTALL_TRANSLATIONS qt_translations_dir)
+    set(QT_TRANSLATIONS_DIR ${qt_translations_dir} CACHE PATH "The location of the Qt translations" FORCE)
+  endif ()
+
+  # ask qmake for the imports directory
+  if (QT_LIBRARY_DIR AND NOT QT_IMPORTS_DIR OR QT_QMAKE_CHANGED)
+    _qt4_query_qmake(QT_INSTALL_IMPORTS qt_imports_dir)
+    if(CMAKE_CROSSCOMPILING OR NOT qt_imports_dir)
+      find_path(QT_IMPORTS_DIR NAMES Qt
+        HINTS ${qt_imports_dir}
+        PATH_SUFFIXES imports lib/qt4/imports
+        DOC "The location of the Qt imports")
+    else()
+      set(QT_IMPORTS_DIR ${qt_imports_dir} CACHE PATH "The location of the Qt imports")
+    endif()
+  endif ()
+
+  # Make variables changeable to the advanced user
+  mark_as_advanced( QT_LIBRARY_DIR QT_DOC_DIR QT_MKSPECS_DIR
+                    QT_PLUGINS_DIR QT_TRANSLATIONS_DIR)
+
+
+
+
+  #############################################
+  #
+  # Find out what window system we're using
+  #
+  #############################################
+  cmake_push_check_state()
+  # Add QT_INCLUDE_DIR to CMAKE_REQUIRED_INCLUDES
+  list(APPEND CMAKE_REQUIRED_INCLUDES "${QT_INCLUDE_DIR}")
+  set(CMAKE_REQUIRED_QUIET ${Qt4_FIND_QUIETLY})
+  # Check for Window system symbols (note: only one should end up being set)
+  CHECK_CXX_SYMBOL_EXISTS(Q_WS_X11 "QtCore/qglobal.h" Q_WS_X11)
+  CHECK_CXX_SYMBOL_EXISTS(Q_WS_WIN "QtCore/qglobal.h" Q_WS_WIN)
+  CHECK_CXX_SYMBOL_EXISTS(Q_WS_QWS "QtCore/qglobal.h" Q_WS_QWS)
+  CHECK_CXX_SYMBOL_EXISTS(Q_WS_MAC "QtCore/qglobal.h" Q_WS_MAC)
+  if(Q_WS_MAC)
+    if(QT_QMAKE_CHANGED)
+      unset(QT_MAC_USE_COCOA CACHE)
+    endif()
+    CHECK_CXX_SYMBOL_EXISTS(QT_MAC_USE_COCOA "QtCore/qconfig.h" QT_MAC_USE_COCOA)
+  endif()
+
+  if (QT_QTCOPY_REQUIRED)
+     CHECK_CXX_SYMBOL_EXISTS(QT_IS_QTCOPY "QtCore/qglobal.h" QT_KDE_QT_COPY)
+     if (NOT QT_IS_QTCOPY)
+        message(FATAL_ERROR "qt-copy is required, but hasn't been found")
+     endif ()
+  endif ()
+
+  cmake_pop_check_state()
+  #
+  #############################################
+
+
+
+  ########################################
+  #
+  #       Setting the INCLUDE-Variables
+  #
+  ########################################
+
+  set(QT_MODULES QtGui Qt3Support QtSvg QtScript QtTest QtUiTools
+                 QtHelp QtWebKit QtXmlPatterns phonon QtNetwork QtMultimedia
+                 QtNsPlugin QtOpenGL QtSql QtXml QtDesigner QtDBus QtScriptTools
+                 QtDeclarative)
+
+  if(Q_WS_X11)
+    set(QT_MODULES ${QT_MODULES} QtMotif)
+  endif()
+
+  if(QT_QMAKE_CHANGED)
+    foreach(QT_MODULE ${QT_MODULES})
+      string(TOUPPER ${QT_MODULE} _upper_qt_module)
+      set(QT_${_upper_qt_module}_INCLUDE_DIR NOTFOUND)
+      set(QT_${_upper_qt_module}_LIBRARY_RELEASE NOTFOUND)
+      set(QT_${_upper_qt_module}_LIBRARY_DEBUG NOTFOUND)
+    endforeach()
+    set(QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR NOTFOUND)
+    set(QT_QTDESIGNERCOMPONENTS_LIBRARY_RELEASE NOTFOUND)
+    set(QT_QTDESIGNERCOMPONENTS_LIBRARY_DEBUG NOTFOUND)
+    set(QT_QTASSISTANTCLIENT_INCLUDE_DIR NOTFOUND)
+    set(QT_QTASSISTANTCLIENT_LIBRARY_RELEASE NOTFOUND)
+    set(QT_QTASSISTANTCLIENT_LIBRARY_DEBUG NOTFOUND)
+    set(QT_QTASSISTANT_INCLUDE_DIR NOTFOUND)
+    set(QT_QTASSISTANT_LIBRARY_RELEASE NOTFOUND)
+    set(QT_QTASSISTANT_LIBRARY_DEBUG NOTFOUND)
+    set(QT_QTCLUCENE_LIBRARY_RELEASE NOTFOUND)
+    set(QT_QTCLUCENE_LIBRARY_DEBUG NOTFOUND)
+    set(QT_QAXCONTAINER_INCLUDE_DIR NOTFOUND)
+    set(QT_QAXCONTAINER_LIBRARY_RELEASE NOTFOUND)
+    set(QT_QAXCONTAINER_LIBRARY_DEBUG NOTFOUND)
+    set(QT_QAXSERVER_INCLUDE_DIR NOTFOUND)
+    set(QT_QAXSERVER_LIBRARY_RELEASE NOTFOUND)
+    set(QT_QAXSERVER_LIBRARY_DEBUG NOTFOUND)
+    if(Q_WS_WIN)
+      set(QT_QTMAIN_LIBRARY_DEBUG NOTFOUND)
+      set(QT_QTMAIN_LIBRARY_RELEASE NOTFOUND)
+    endif()
+  endif()
+
+  foreach(QT_MODULE ${QT_MODULES})
+    string(TOUPPER ${QT_MODULE} _upper_qt_module)
+    find_path(QT_${_upper_qt_module}_INCLUDE_DIR ${QT_MODULE}
+              PATHS
+              ${QT_HEADERS_DIR}/${QT_MODULE}
+              ${QT_LIBRARY_DIR}/${QT_MODULE}.framework/Headers
+              NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+      )
+    # phonon doesn't seem consistent, let's try phonondefs.h for some
+    # installations
+    if(${QT_MODULE} STREQUAL "phonon")
+      find_path(QT_${_upper_qt_module}_INCLUDE_DIR phonondefs.h
+                PATHS
+                ${QT_HEADERS_DIR}/${QT_MODULE}
+                ${QT_LIBRARY_DIR}/${QT_MODULE}.framework/Headers
+                NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+        )
+    endif()
+  endforeach()
+
+  if(Q_WS_WIN)
+    set(QT_MODULES ${QT_MODULES} QAxContainer QAxServer)
+    # Set QT_AXCONTAINER_INCLUDE_DIR and QT_AXSERVER_INCLUDE_DIR
+    find_path(QT_QAXCONTAINER_INCLUDE_DIR ActiveQt
+      PATHS ${QT_HEADERS_DIR}/ActiveQt
+      NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+      )
+    find_path(QT_QAXSERVER_INCLUDE_DIR ActiveQt
+      PATHS ${QT_HEADERS_DIR}/ActiveQt
+      NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+      )
+  endif()
+
+  # Set QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR
+  find_path(QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR QDesignerComponents
+    PATHS
+    ${QT_HEADERS_DIR}/QtDesigner
+    ${QT_LIBRARY_DIR}/QtDesigner.framework/Headers
+    NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+    )
+
+  # Set QT_QTASSISTANT_INCLUDE_DIR
+  find_path(QT_QTASSISTANT_INCLUDE_DIR QtAssistant
+    PATHS
+    ${QT_HEADERS_DIR}/QtAssistant
+    ${QT_LIBRARY_DIR}/QtAssistant.framework/Headers
+    NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+    )
+
+  # Set QT_QTASSISTANTCLIENT_INCLUDE_DIR
+  find_path(QT_QTASSISTANTCLIENT_INCLUDE_DIR QAssistantClient
+    PATHS
+    ${QT_HEADERS_DIR}/QtAssistant
+    ${QT_LIBRARY_DIR}/QtAssistant.framework/Headers
+    NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+    )
+
+  ########################################
+  #
+  #       Setting the LIBRARY-Variables
+  #
+  ########################################
+
+  # find the libraries
+  foreach(QT_MODULE ${QT_MODULES})
+    string(TOUPPER ${QT_MODULE} _upper_qt_module)
+    find_library(QT_${_upper_qt_module}_LIBRARY_RELEASE
+                 NAMES ${QT_MODULE}${QT_LIBINFIX} ${QT_MODULE}${QT_LIBINFIX}4
+                 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+        )
+    find_library(QT_${_upper_qt_module}_LIBRARY_DEBUG
+                 NAMES ${QT_MODULE}${QT_LIBINFIX}_debug ${QT_MODULE}${QT_LIBINFIX}d ${QT_MODULE}${QT_LIBINFIX}d4
+                 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+        )
+    if(QT_${_upper_qt_module}_LIBRARY_RELEASE MATCHES "/${QT_MODULE}\\.framework$")
+      if(NOT EXISTS "${QT_${_upper_qt_module}_LIBRARY_RELEASE}/${QT_MODULE}")
+        # Release framework library file does not exist... Force to NOTFOUND:
+        set(QT_${_upper_qt_module}_LIBRARY_RELEASE "QT_${_upper_qt_module}_LIBRARY_RELEASE-NOTFOUND" CACHE FILEPATH "Path to a library." FORCE)
+      endif()
+    endif()
+    if(QT_${_upper_qt_module}_LIBRARY_DEBUG MATCHES "/${QT_MODULE}\\.framework$")
+      if(NOT EXISTS "${QT_${_upper_qt_module}_LIBRARY_DEBUG}/${QT_MODULE}")
+        # Debug framework library file does not exist... Force to NOTFOUND:
+        set(QT_${_upper_qt_module}_LIBRARY_DEBUG "QT_${_upper_qt_module}_LIBRARY_DEBUG-NOTFOUND" CACHE FILEPATH "Path to a library." FORCE)
+      endif()
+    endif()
+  endforeach()
+
+  # QtUiTools is sometimes not in the same directory as the other found libraries
+  # e.g. on Mac, its never a framework like the others are
+  if(QT_QTCORE_LIBRARY_RELEASE AND NOT QT_QTUITOOLS_LIBRARY_RELEASE)
+    find_library(QT_QTUITOOLS_LIBRARY_RELEASE NAMES QtUiTools${QT_LIBINFIX} PATHS ${QT_LIBRARY_DIR})
+  endif()
+
+  # Set QT_QTDESIGNERCOMPONENTS_LIBRARY
+  find_library(QT_QTDESIGNERCOMPONENTS_LIBRARY_RELEASE NAMES QtDesignerComponents${QT_LIBINFIX} QtDesignerComponents${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+  find_library(QT_QTDESIGNERCOMPONENTS_LIBRARY_DEBUG   NAMES QtDesignerComponents${QT_LIBINFIX}_debug QtDesignerComponents${QT_LIBINFIX}d QtDesignerComponents${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+
+  # Set QT_QTMAIN_LIBRARY
+  if(Q_WS_WIN)
+    find_library(QT_QTMAIN_LIBRARY_RELEASE NAMES qtmain${QT_LIBINFIX} PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+    find_library(QT_QTMAIN_LIBRARY_DEBUG NAMES qtmain${QT_LIBINFIX}d PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+  endif()
+
+  # Set QT_QTASSISTANTCLIENT_LIBRARY
+  find_library(QT_QTASSISTANTCLIENT_LIBRARY_RELEASE NAMES QtAssistantClient${QT_LIBINFIX} QtAssistantClient${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+  find_library(QT_QTASSISTANTCLIENT_LIBRARY_DEBUG   NAMES QtAssistantClient${QT_LIBINFIX}_debug QtAssistantClient${QT_LIBINFIX}d QtAssistantClient${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR}  NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+
+  # Set QT_QTASSISTANT_LIBRARY
+  find_library(QT_QTASSISTANT_LIBRARY_RELEASE NAMES QtAssistantClient${QT_LIBINFIX} QtAssistantClient${QT_LIBINFIX}4 QtAssistant${QT_LIBINFIX} QtAssistant${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+  find_library(QT_QTASSISTANT_LIBRARY_DEBUG   NAMES QtAssistantClient${QT_LIBINFIX}_debug QtAssistantClient${QT_LIBINFIX}d QtAssistantClient${QT_LIBINFIX}d4 QtAssistant${QT_LIBINFIX}_debug QtAssistant${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+
+  # Set QT_QTHELP_LIBRARY
+  find_library(QT_QTCLUCENE_LIBRARY_RELEASE NAMES QtCLucene${QT_LIBINFIX} QtCLucene${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+  find_library(QT_QTCLUCENE_LIBRARY_DEBUG   NAMES QtCLucene${QT_LIBINFIX}_debug QtCLucene${QT_LIBINFIX}d QtCLucene${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+  if(Q_WS_MAC AND QT_QTCORE_LIBRARY_RELEASE AND NOT QT_QTCLUCENE_LIBRARY_RELEASE)
+    find_library(QT_QTCLUCENE_LIBRARY_RELEASE NAMES QtCLucene${QT_LIBINFIX} PATHS ${QT_LIBRARY_DIR})
+  endif()
+
+
+  ############################################
+  #
+  # Check the existence of the libraries.
+  #
+  ############################################
+
+
+  macro(_qt4_add_target_depends_internal _QT_MODULE _PROPERTY)
+    if (TARGET Qt4::${_QT_MODULE})
+      foreach(_DEPEND ${ARGN})
+        set(_VALID_DEPENDS)
+        if (TARGET Qt4::Qt${_DEPEND})
+          list(APPEND _VALID_DEPENDS Qt4::Qt${_DEPEND})
+        endif()
+        if (_VALID_DEPENDS)
+          set_property(TARGET Qt4::${_QT_MODULE} APPEND PROPERTY
+            ${_PROPERTY}
+            "${_VALID_DEPENDS}"
+          )
+        endif()
+        set(_VALID_DEPENDS)
+      endforeach()
+    endif()
+  endmacro()
+
+  macro(_qt4_add_target_depends _QT_MODULE)
+    if (TARGET Qt4::${_QT_MODULE})
+      get_target_property(_configs Qt4::${_QT_MODULE} IMPORTED_CONFIGURATIONS)
+      _qt4_add_target_depends_internal(${_QT_MODULE} INTERFACE_LINK_LIBRARIES ${ARGN})
+      foreach(_config ${_configs})
+        _qt4_add_target_depends_internal(${_QT_MODULE} IMPORTED_LINK_INTERFACE_LIBRARIES_${_config} ${ARGN})
+      endforeach()
+      set(_configs)
+    endif()
+  endmacro()
+
+  macro(_qt4_add_target_private_depends _QT_MODULE)
+    if (TARGET Qt4::${_QT_MODULE})
+      get_target_property(_configs Qt4::${_QT_MODULE} IMPORTED_CONFIGURATIONS)
+      foreach(_config ${_configs})
+        _qt4_add_target_depends_internal(${_QT_MODULE} IMPORTED_LINK_DEPENDENT_LIBRARIES_${_config} ${ARGN})
+      endforeach()
+      set(_configs)
+    endif()
+  endmacro()
+
+
+  # Set QT_xyz_LIBRARY variable and add
+  # library include path to QT_INCLUDES
+  _QT4_ADJUST_LIB_VARS(QtCore)
+  set_property(TARGET Qt4::QtCore APPEND PROPERTY
+    INTERFACE_INCLUDE_DIRECTORIES
+      "${QT_MKSPECS_DIR}/default"
+      ${QT_INCLUDE_DIR}
+  )
+  set_property(TARGET Qt4::QtCore APPEND PROPERTY
+    INTERFACE_COMPILE_DEFINITIONS
+      $<$<NOT:$<CONFIG:Debug>>:QT_NO_DEBUG>
+  )
+  set_property(TARGET Qt4::QtCore PROPERTY
+    INTERFACE_QT_MAJOR_VERSION 4
+  )
+  set_property(TARGET Qt4::QtCore APPEND PROPERTY
+    COMPATIBLE_INTERFACE_STRING QT_MAJOR_VERSION
+  )
+
+  foreach(QT_MODULE ${QT_MODULES})
+    _QT4_ADJUST_LIB_VARS(${QT_MODULE})
+    _qt4_add_target_depends(${QT_MODULE} Core)
+  endforeach()
+
+  _QT4_ADJUST_LIB_VARS(QtAssistant)
+  _QT4_ADJUST_LIB_VARS(QtAssistantClient)
+  _QT4_ADJUST_LIB_VARS(QtCLucene)
+  _QT4_ADJUST_LIB_VARS(QtDesignerComponents)
+
+  # platform dependent libraries
+  if(Q_WS_WIN)
+    _QT4_ADJUST_LIB_VARS(qtmain)
+
+    _QT4_ADJUST_LIB_VARS(QAxServer)
+    if(QT_QAXSERVER_FOUND)
+      set_property(TARGET Qt4::QAxServer PROPERTY
+        INTERFACE_QT4_NO_LINK_QTMAIN ON
+      )
+      set_property(TARGET Qt4::QAxServer APPEND PROPERTY
+        COMPATIBLE_INTERFACE_BOOL QT4_NO_LINK_QTMAIN)
+    endif()
+
+    _QT4_ADJUST_LIB_VARS(QAxContainer)
+  endif()
+
+  # Only public dependencies are listed here.
+  # Eg, QtDBus links to QtXml, but users of QtDBus do not need to
+  # link to QtXml because QtDBus only uses it internally, not in public
+  # headers.
+  # Everything depends on QtCore, but that is covered above already
+  _qt4_add_target_depends(Qt3Support Sql Gui Network)
+  if (TARGET Qt4::Qt3Support)
+    # An additional define is required for QT3_SUPPORT
+    set_property(TARGET Qt4::Qt3Support APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS QT3_SUPPORT)
+  endif()
+  _qt4_add_target_depends(QtDeclarative Script Gui)
+  _qt4_add_target_depends(QtDesigner Gui)
+  _qt4_add_target_depends(QtHelp Gui)
+  _qt4_add_target_depends(QtMultimedia Gui)
+  _qt4_add_target_depends(QtOpenGL Gui)
+  _qt4_add_target_depends(QtSvg Gui)
+  _qt4_add_target_depends(QtWebKit Gui Network)
+
+  _qt4_add_target_private_depends(Qt3Support Xml)
+  if(QT_VERSION VERSION_GREATER 4.6)
+    _qt4_add_target_private_depends(QtSvg Xml)
+  endif()
+  _qt4_add_target_private_depends(QtDBus Xml)
+  _qt4_add_target_private_depends(QtUiTools Xml Gui)
+  _qt4_add_target_private_depends(QtHelp Sql Xml Network)
+  _qt4_add_target_private_depends(QtXmlPatterns Network)
+  _qt4_add_target_private_depends(QtScriptTools Gui)
+  _qt4_add_target_private_depends(QtWebKit XmlPatterns)
+  _qt4_add_target_private_depends(QtDeclarative XmlPatterns Svg Sql Gui)
+  _qt4_add_target_private_depends(QtMultimedia Gui)
+  _qt4_add_target_private_depends(QtOpenGL Gui)
+  if(QT_QAXSERVER_FOUND)
+    _qt4_add_target_private_depends(QAxServer Gui)
+  endif()
+  if(QT_QAXCONTAINER_FOUND)
+    _qt4_add_target_private_depends(QAxContainer Gui)
+  endif()
+  _qt4_add_target_private_depends(phonon Gui)
+  if(QT_QTDBUS_FOUND)
+    _qt4_add_target_private_depends(phonon DBus)
+  endif()
+
+  if (WIN32 AND NOT QT4_NO_LINK_QTMAIN)
+    set(_isExe $<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>)
+    set(_isWin32 $<BOOL:$<TARGET_PROPERTY:WIN32_EXECUTABLE>>)
+    set(_isNotExcluded $<NOT:$<BOOL:$<TARGET_PROPERTY:QT4_NO_LINK_QTMAIN>>>)
+    set(_isPolicyNEW $<TARGET_POLICY:CMP0020>)
+    get_target_property(_configs Qt4::QtCore IMPORTED_CONFIGURATIONS)
+    set_property(TARGET Qt4::QtCore APPEND PROPERTY
+        INTERFACE_LINK_LIBRARIES
+          $<$<AND:${_isExe},${_isWin32},${_isNotExcluded},${_isPolicyNEW}>:Qt4::qtmain>
+    )
+    foreach(_config ${_configs})
+      set_property(TARGET Qt4::QtCore APPEND PROPERTY
+        IMPORTED_LINK_INTERFACE_LIBRARIES_${_config}
+          $<$<AND:${_isExe},${_isWin32},${_isNotExcluded},${_isPolicyNEW}>:Qt4::qtmain>
+      )
+    endforeach()
+    unset(_configs)
+    unset(_isExe)
+    unset(_isWin32)
+    unset(_isNotExcluded)
+    unset(_isPolicyNEW)
+  endif()
+
+  #######################################
+  #
+  #       Check the executables of Qt
+  #          ( moc, uic, rcc )
+  #
+  #######################################
+
+
+  if(QT_QMAKE_CHANGED)
+    set(QT_UIC_EXECUTABLE NOTFOUND)
+    set(QT_MOC_EXECUTABLE NOTFOUND)
+    set(QT_UIC3_EXECUTABLE NOTFOUND)
+    set(QT_RCC_EXECUTABLE NOTFOUND)
+    set(QT_DBUSCPP2XML_EXECUTABLE NOTFOUND)
+    set(QT_DBUSXML2CPP_EXECUTABLE NOTFOUND)
+    set(QT_LUPDATE_EXECUTABLE NOTFOUND)
+    set(QT_LRELEASE_EXECUTABLE NOTFOUND)
+    set(QT_QCOLLECTIONGENERATOR_EXECUTABLE NOTFOUND)
+    set(QT_DESIGNER_EXECUTABLE NOTFOUND)
+    set(QT_LINGUIST_EXECUTABLE NOTFOUND)
+  endif()
+
+  macro(_find_qt4_program VAR NAME)
+    find_program(${VAR}
+      NAMES ${ARGN}
+      PATHS ${QT_BINARY_DIR}
+      NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+      )
+    if (${VAR} AND NOT TARGET ${NAME})
+      add_executable(${NAME} IMPORTED)
+      set_property(TARGET ${NAME} PROPERTY IMPORTED_LOCATION ${${VAR}})
+    endif()
+  endmacro()
+
+  _find_qt4_program(QT_MOC_EXECUTABLE Qt4::moc moc-qt4 moc4 moc)
+  _find_qt4_program(QT_UIC_EXECUTABLE Qt4::uic uic-qt4 uic4 uic)
+  _find_qt4_program(QT_UIC3_EXECUTABLE Qt4::uic3 uic3)
+  _find_qt4_program(QT_RCC_EXECUTABLE Qt4::rcc rcc)
+  _find_qt4_program(QT_DBUSCPP2XML_EXECUTABLE Qt4::qdbuscpp2xml qdbuscpp2xml)
+  _find_qt4_program(QT_DBUSXML2CPP_EXECUTABLE Qt4::qdbusxml2cpp qdbusxml2cpp)
+  _find_qt4_program(QT_LUPDATE_EXECUTABLE Qt4::lupdate lupdate-qt4 lupdate4 lupdate)
+  _find_qt4_program(QT_LRELEASE_EXECUTABLE Qt4::lrelease lrelease-qt4 lrelease4 lrelease)
+  _find_qt4_program(QT_QCOLLECTIONGENERATOR_EXECUTABLE Qt4::qcollectiongenerator qcollectiongenerator-qt4 qcollectiongenerator)
+  _find_qt4_program(QT_DESIGNER_EXECUTABLE Qt4::designer designer-qt4 designer4 designer)
+  _find_qt4_program(QT_LINGUIST_EXECUTABLE Qt4::linguist linguist-qt4 linguist4 linguist)
+
+  if (NOT TARGET Qt4::qmake)
+    add_executable(Qt4::qmake IMPORTED)
+    set_property(TARGET Qt4::qmake PROPERTY IMPORTED_LOCATION ${QT_QMAKE_EXECUTABLE})
+  endif()
+
+  if (QT_MOC_EXECUTABLE)
+     set(QT_WRAP_CPP "YES")
+  endif ()
+
+  if (QT_UIC_EXECUTABLE)
+     set(QT_WRAP_UI "YES")
+  endif ()
+
+
+
+  mark_as_advanced( QT_UIC_EXECUTABLE QT_UIC3_EXECUTABLE QT_MOC_EXECUTABLE
+    QT_RCC_EXECUTABLE QT_DBUSXML2CPP_EXECUTABLE QT_DBUSCPP2XML_EXECUTABLE
+    QT_LUPDATE_EXECUTABLE QT_LRELEASE_EXECUTABLE QT_QCOLLECTIONGENERATOR_EXECUTABLE
+    QT_DESIGNER_EXECUTABLE QT_LINGUIST_EXECUTABLE)
+
+
+  # get the directory of the current file, used later on in the file
+  get_filename_component( _qt4_current_dir  "${CMAKE_CURRENT_LIST_FILE}" PATH)
+
+
+  ###############################################
+  #
+  #       configuration/system dependent settings
+  #
+  ###############################################
+
+  include("${_qt4_current_dir}/Qt4ConfigDependentSettings.cmake")
+
+
+  #######################################
+  #
+  #       Check the plugins of Qt
+  #
+  #######################################
+
+  set( QT_PLUGIN_TYPES accessible bearer codecs decorations designer gfxdrivers graphicssystems iconengines imageformats inputmethods mousedrivers phonon_backend script sqldrivers )
+
+  set( QT_ACCESSIBLE_PLUGINS qtaccessiblecompatwidgets qtaccessiblewidgets )
+  set( QT_BEARER_PLUGINS qcorewlanbearer qgenericbearer qnativewifibearer )
+  set( QT_CODECS_PLUGINS qcncodecs qjpcodecs qkrcodecs qtwcodecs )
+  set( QT_DECORATIONS_PLUGINS qdecorationdefault qdecorationwindows )
+  set( QT_DESIGNER_PLUGINS arthurplugin containerextension customwidgetplugin phononwidgets qdeclarativeview qt3supportwidgets qwebview taskmenuextension worldtimeclockplugin )
+  set( QT_GRAPHICSDRIVERS_PLUGINS qgfxtransformed qgfxvnc qscreenvfb )
+  set( QT_GRAPHICSSYSTEMS_PLUGINS qglgraphicssystem qtracegraphicssystem )
+  set( QT_ICONENGINES_PLUGINS qsvgicon )
+  set( QT_IMAGEFORMATS_PLUGINS qgif qjpeg qmng qico qsvg qtiff qtga )
+  set( QT_INPUTMETHODS_PLUGINS qimsw_multi )
+  set( QT_MOUSEDRIVERS_PLUGINS qwstslibmousehandler )
+  if(APPLE)
+    set( QT_PHONON_BACKEND_PLUGINS phonon_qt7 )
+  elseif(WIN32)
+    set( QT_PHONON_BACKEND_PLUGINS phonon_ds9 )
+  endif()
+  set( QT_SCRIPT_PLUGINS qtscriptdbus )
+  set( QT_SQLDRIVERS_PLUGINS qsqldb2 qsqlibase qsqlite qsqlite2 qsqlmysql qsqloci qsqlodbc qsqlpsql qsqltds )
+
+  set( QT_PHONON_PLUGINS ${QT_PHONON_BACKEND_PLUGINS} )
+  set( QT_QT3SUPPORT_PLUGINS qtaccessiblecompatwidgets )
+  set( QT_QTCORE_PLUGINS ${QT_BEARER_PLUGINS} ${QT_CODECS_PLUGINS} )
+  set( QT_QTGUI_PLUGINS qtaccessiblewidgets ${QT_IMAGEFORMATS_PLUGINS} ${QT_DECORATIONS_PLUGINS} ${QT_GRAPHICSDRIVERS_PLUGINS} ${QT_GRAPHICSSYSTEMS_PLUGINS} ${QT_INPUTMETHODS_PLUGINS} ${QT_MOUSEDRIVERS_PLUGINS} )
+  set( QT_QTSCRIPT_PLUGINS ${QT_SCRIPT_PLUGINS} )
+  set( QT_QTSQL_PLUGINS ${QT_SQLDRIVERS_PLUGINS} )
+  set( QT_QTSVG_PLUGINS qsvg qsvgicon )
+
+  if(QT_QMAKE_CHANGED)
+    foreach(QT_PLUGIN_TYPE ${QT_PLUGIN_TYPES})
+      string(TOUPPER ${QT_PLUGIN_TYPE} _upper_qt_plugin_type)
+      set(QT_${_upper_qt_plugin_type}_PLUGINS_DIR ${QT_PLUGINS_DIR}/${QT_PLUGIN_TYPE})
+      foreach(QT_PLUGIN ${QT_${_upper_qt_plugin_type}_PLUGINS})
+        string(TOUPPER ${QT_PLUGIN} _upper_qt_plugin)
+        unset(QT_${_upper_qt_plugin}_LIBRARY_RELEASE CACHE)
+        unset(QT_${_upper_qt_plugin}_LIBRARY_DEBUG CACHE)
+        unset(QT_${_upper_qt_plugin}_LIBRARY CACHE)
+        unset(QT_${_upper_qt_plugin}_PLUGIN_RELEASE CACHE)
+        unset(QT_${_upper_qt_plugin}_PLUGIN_DEBUG CACHE)
+        unset(QT_${_upper_qt_plugin}_PLUGIN CACHE)
+      endforeach()
+    endforeach()
+  endif()
+
+  # find_library works better than find_file but we need to set prefixes to only match plugins
+  foreach(QT_PLUGIN_TYPE ${QT_PLUGIN_TYPES})
+    string(TOUPPER ${QT_PLUGIN_TYPE} _upper_qt_plugin_type)
+    set(QT_${_upper_qt_plugin_type}_PLUGINS_DIR ${QT_PLUGINS_DIR}/${QT_PLUGIN_TYPE})
+    foreach(QT_PLUGIN ${QT_${_upper_qt_plugin_type}_PLUGINS})
+      string(TOUPPER ${QT_PLUGIN} _upper_qt_plugin)
+      if(QT_IS_STATIC)
+        find_library(QT_${_upper_qt_plugin}_LIBRARY_RELEASE
+                     NAMES ${QT_PLUGIN}${QT_LIBINFIX} ${QT_PLUGIN}${QT_LIBINFIX}4
+                     PATHS ${QT_${_upper_qt_plugin_type}_PLUGINS_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+            )
+        find_library(QT_${_upper_qt_plugin}_LIBRARY_DEBUG
+                     NAMES ${QT_PLUGIN}${QT_LIBINFIX}_debug ${QT_PLUGIN}${QT_LIBINFIX}d ${QT_PLUGIN}${QT_LIBINFIX}d4
+                     PATHS ${QT_${_upper_qt_plugin_type}_PLUGINS_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+            )
+        _QT4_ADJUST_LIB_VARS(${QT_PLUGIN})
+      else()
+        # find_library works easier/better than find_file but we need to set suffixes to only match plugins
+        set(CMAKE_FIND_LIBRARY_SUFFIXES_DEFAULT ${CMAKE_FIND_LIBRARY_SUFFIXES})
+        set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_SHARED_MODULE_SUFFIX} ${CMAKE_SHARED_LIBRARY_SUFFIX})
+        find_library(QT_${_upper_qt_plugin}_PLUGIN_RELEASE
+                     NAMES ${QT_PLUGIN}${QT_LIBINFIX} ${QT_PLUGIN}${QT_LIBINFIX}4
+                     PATHS ${QT_${_upper_qt_plugin_type}_PLUGINS_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+            )
+        find_library(QT_${_upper_qt_plugin}_PLUGIN_DEBUG
+                     NAMES ${QT_PLUGIN}${QT_LIBINFIX}_debug ${QT_PLUGIN}${QT_LIBINFIX}d ${QT_PLUGIN}${QT_LIBINFIX}d4
+                     PATHS ${QT_${_upper_qt_plugin_type}_PLUGINS_DIR} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH
+            )
+        mark_as_advanced(QT_${_upper_qt_plugin}_PLUGIN_RELEASE QT_${_upper_qt_plugin}_PLUGIN_DEBUG)
+        set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_DEFAULT})
+      endif()
+    endforeach()
+  endforeach()
+
+
+  ######################################
+  #
+  #       Macros for building Qt files
+  #
+  ######################################
+
+  include("${_qt4_current_dir}/Qt4Macros.cmake")
+
+endif()
+
+#support old QT_MIN_VERSION if set, but not if version is supplied by find_package()
+if(NOT Qt4_FIND_VERSION AND QT_MIN_VERSION)
+  set(Qt4_FIND_VERSION ${QT_MIN_VERSION})
+endif()
+
+if( Qt4_FIND_COMPONENTS )
+
+  # if components specified in find_package(), make sure each of those pieces were found
+  set(_QT4_FOUND_REQUIRED_VARS QT_QMAKE_EXECUTABLE QT_MOC_EXECUTABLE QT_RCC_EXECUTABLE QT_INCLUDE_DIR QT_LIBRARY_DIR)
+  foreach( component ${Qt4_FIND_COMPONENTS} )
+    string( TOUPPER ${component} _COMPONENT )
+    if(${_COMPONENT} STREQUAL "QTMAIN")
+      if(Q_WS_WIN)
+        set(_QT4_FOUND_REQUIRED_VARS ${_QT4_FOUND_REQUIRED_VARS} QT_${_COMPONENT}_LIBRARY)
+      endif()
+    else()
+      set(_QT4_FOUND_REQUIRED_VARS ${_QT4_FOUND_REQUIRED_VARS} QT_${_COMPONENT}_INCLUDE_DIR QT_${_COMPONENT}_LIBRARY)
+    endif()
+  endforeach()
+
+  if(Qt4_FIND_COMPONENTS MATCHES QtGui)
+    set(_QT4_FOUND_REQUIRED_VARS ${_QT4_FOUND_REQUIRED_VARS} QT_UIC_EXECUTABLE)
+  endif()
+
+else()
+
+  # if no components specified, we'll make a default set of required variables to say Qt is found
+  set(_QT4_FOUND_REQUIRED_VARS QT_QMAKE_EXECUTABLE QT_MOC_EXECUTABLE QT_RCC_EXECUTABLE QT_UIC_EXECUTABLE QT_INCLUDE_DIR
+    QT_LIBRARY_DIR QT_QTCORE_LIBRARY)
+
+endif()
+
+if (NOT QT_VERSION_MAJOR EQUAL 4)
+    set(VERSION_MSG "Found unsuitable Qt version \"${QTVERSION}\" from ${QT_QMAKE_EXECUTABLE}")
+    set(Qt4_FOUND FALSE)
+    if(Qt4_FIND_REQUIRED)
+       message( FATAL_ERROR "${VERSION_MSG}, this code requires Qt 4.x")
+    else()
+      if(NOT Qt4_FIND_QUIETLY)
+         message( STATUS    "${VERSION_MSG}")
+      endif()
+    endif()
+else()
+  if (CMAKE_FIND_PACKAGE_NAME STREQUAL "Qt")
+    # FindQt include()'s this module. It's an old pattern, but rather than
+    # trying to suppress this from outside the module (which is then sensitive
+    # to the contents, detect the case in this module and suppress it
+    # explicitly.
+    set(FPHSA_NAME_MISMATCHED 1)
+  endif ()
+  FIND_PACKAGE_HANDLE_STANDARD_ARGS(Qt4 FOUND_VAR Qt4_FOUND
+    REQUIRED_VARS ${_QT4_FOUND_REQUIRED_VARS}
+    VERSION_VAR QTVERSION
+    )
+  unset(FPHSA_NAME_MISMATCHED)
+endif()
+
+#######################################
+#
+#       compatibility settings
+#
+#######################################
+# Backwards compatibility for CMake1.4 and 1.2
+set (QT_MOC_EXE ${QT_MOC_EXECUTABLE} )
+set (QT_UIC_EXE ${QT_UIC_EXECUTABLE} )
+set( QT_QT_LIBRARY "")
+set(QT4_FOUND ${Qt4_FOUND})
+set(QT_FOUND ${Qt4_FOUND})
+
diff --git a/share/cmake-3.18/Modules/FindQuickTime.cmake b/share/cmake-3.22/Modules/FindQuickTime.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindQuickTime.cmake
rename to share/cmake-3.22/Modules/FindQuickTime.cmake
diff --git a/share/cmake-3.18/Modules/FindRTI.cmake b/share/cmake-3.22/Modules/FindRTI.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindRTI.cmake
rename to share/cmake-3.22/Modules/FindRTI.cmake
diff --git a/share/cmake-3.22/Modules/FindRuby.cmake b/share/cmake-3.22/Modules/FindRuby.cmake
new file mode 100644
index 0000000..759f57c
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindRuby.cmake
@@ -0,0 +1,533 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindRuby
+--------
+
+Find Ruby
+
+This module finds if Ruby is installed and determines where the
+include files and libraries are.  Ruby 1.8 through 2.7 are
+supported.
+
+The minimum required version of Ruby can be specified using the
+standard syntax, e.g.
+
+.. code-block:: cmake
+
+  find_package(Ruby 2.5.1 EXACT REQUIRED)
+  # OR
+  find_package(Ruby 2.4)
+
+It also determines what the name of the library is.
+
+Virtual environments such as RVM are handled as well, by passing
+the argument ``Ruby_FIND_VIRTUALENV``
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``Ruby_FOUND``
+  set to true if ruby was found successfully
+``Ruby_EXECUTABLE``
+  full path to the ruby binary
+``Ruby_INCLUDE_DIRS``
+  include dirs to be used when using the ruby library
+``Ruby_LIBRARIES``
+  .. versionadded:: 3.18
+    libraries needed to use ruby from C.
+``Ruby_VERSION``
+  the version of ruby which was found, e.g. "1.8.7"
+``Ruby_VERSION_MAJOR``
+  Ruby major version.
+``Ruby_VERSION_MINOR``
+  Ruby minor version.
+``Ruby_VERSION_PATCH``
+  Ruby patch version.
+
+.. versionchanged:: 3.18
+  Previous versions of CMake used the ``RUBY_`` prefix for all variables.
+  The following variables are provided for compatibility reasons,
+  don't use them in new code:
+
+``RUBY_EXECUTABLE``
+  same as Ruby_EXECUTABLE.
+``RUBY_INCLUDE_DIRS``
+  same as Ruby_INCLUDE_DIRS.
+``RUBY_INCLUDE_PATH``
+  same as Ruby_INCLUDE_DIRS.
+``RUBY_LIBRARY``
+  same as Ruby_LIBRARY.
+``RUBY_VERSION``
+  same as Ruby_VERSION.
+``RUBY_FOUND``
+  same as Ruby_FOUND.
+
+Hints
+^^^^^
+
+.. versionadded:: 3.18
+
+``Ruby_ROOT_DIR``
+  Define the root directory of a Ruby installation.
+
+``Ruby_FIND_VIRTUALENV``
+  This variable defines the handling of virtual environments managed by
+  ``rvm``. It is meaningful only when a virtual environment
+  is active (i.e. the ``rvm`` script has been evaluated or at least the
+  ``MY_RUBY_HOME`` environment variable is set).
+  The ``Ruby_FIND_VIRTUALENV`` variable can be set to empty or
+  one of the following:
+
+  * ``FIRST``: The virtual environment is used before any other standard
+    paths to look-up for the interpreter. This is the default.
+  * ``ONLY``: Only the virtual environment is used to look-up for the
+    interpreter.
+  * ``STANDARD``: The virtual environment is not used to look-up for the
+    interpreter (assuming it isn't still in the PATH...)
+
+#]=======================================================================]
+
+# Backwards compatibility
+# Define camel case versions of input variables
+foreach(UPPER
+    RUBY_EXECUTABLE
+    RUBY_LIBRARY
+    RUBY_INCLUDE_DIR
+    RUBY_CONFIG_INCLUDE_DIR
+    )
+    if (DEFINED ${UPPER})
+      string(REPLACE "RUBY_" "Ruby_" Camel ${UPPER})
+        if (NOT DEFINED ${Camel})
+            set(${Camel} ${${UPPER}})
+        endif()
+    endif()
+endforeach()
+
+#   Ruby_ARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"archdir"@:>@)'`
+#   Ruby_SITEARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitearchdir"@:>@)'`
+#   Ruby_SITEDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitelibdir"@:>@)'`
+#   Ruby_LIBDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"libdir"@:>@)'`
+#   Ruby_LIBRUBYARG=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"LIBRUBYARG_SHARED"@:>@)'`
+
+# uncomment the following line to get debug output for this file
+# set(_Ruby_DEBUG_OUTPUT TRUE)
+
+# Determine the list of possible names of the ruby executable depending
+# on which version of ruby is required
+set(_Ruby_POSSIBLE_EXECUTABLE_NAMES ruby)
+
+# If not specified, allow everything as far back as 1.8.0
+if(NOT DEFINED Ruby_FIND_VERSION_MAJOR)
+  set(Ruby_FIND_VERSION "1.8.0")
+  set(Ruby_FIND_VERSION_MAJOR 1)
+  set(Ruby_FIND_VERSION_MINOR 8)
+  set(Ruby_FIND_VERSION_PATCH 0)
+endif()
+
+if(_Ruby_DEBUG_OUTPUT)
+  message("Ruby_FIND_VERSION=${Ruby_FIND_VERSION}")
+  message("Ruby_FIND_VERSION_MAJOR=${Ruby_FIND_VERSION_MAJOR}")
+  message("Ruby_FIND_VERSION_MINOR=${Ruby_FIND_VERSION_MINOR}")
+  message("Ruby_FIND_VERSION_PATCH=${Ruby_FIND_VERSION_PATCH}")
+endif()
+
+set(Ruby_FIND_VERSION_SHORT_NODOT "${Ruby_FIND_VERSION_MAJOR}${Ruby_FIND_VERSION_MINOR}")
+
+# Set name of possible executables, ignoring the minor
+# Eg:
+# 2.1.1 => from ruby27 to ruby21 included
+# 2.1   => from ruby27 to ruby21 included
+# 2     => from ruby26 to ruby20 included
+# empty => from ruby27 to ruby18 included
+if(NOT Ruby_FIND_VERSION_EXACT)
+
+  foreach(_ruby_version RANGE 27 18 -1)
+    string(SUBSTRING "${_ruby_version}" 0 1 _ruby_major_version)
+    string(SUBSTRING "${_ruby_version}" 1 1 _ruby_minor_version)
+
+    if(NOT "${_ruby_major_version}${_ruby_minor_version}" VERSION_LESS ${Ruby_FIND_VERSION_SHORT_NODOT})
+      # Append both rubyX.Y and rubyXY (eg: ruby2.7 ruby27)
+      list(APPEND _Ruby_POSSIBLE_EXECUTABLE_NAMES ruby${_ruby_major_version}.${_ruby_minor_version} ruby${_ruby_major_version}${_ruby_minor_version})
+    else()
+      break()
+    endif()
+
+  endforeach()
+
+  list(REMOVE_DUPLICATES _Ruby_POSSIBLE_EXECUTABLE_NAMES)
+endif()
+
+# virtual environments handling (eg RVM)
+if (DEFINED ENV{MY_RUBY_HOME})
+  if(_Ruby_DEBUG_OUTPUT)
+    message("My ruby home is defined: $ENV{MY_RUBY_HOME}")
+  endif()
+
+  if (DEFINED Ruby_FIND_VIRTUALENV)
+    if (NOT Ruby_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY|STANDARD)$")
+      message (AUTHOR_WARNING "FindRuby: ${Ruby_FIND_VIRTUALENV}: invalid value for 'Ruby_FIND_VIRTUALENV'. 'FIRST', 'ONLY' or 'STANDARD' expected. 'FIRST' will be used instead.")
+      set (_Ruby_FIND_VIRTUALENV "FIRST")
+    else()
+      set (_Ruby_FIND_VIRTUALENV ${Ruby_FIND_VIRTUALENV})
+    endif()
+  else()
+    set (_Ruby_FIND_VIRTUALENV FIRST)
+  endif()
+else()
+  if (DEFINED Ruby_FIND_VIRTUALENV)
+    message("Environment variable MY_RUBY_HOME isn't set, defaulting back to Ruby_FIND_VIRTUALENV=STANDARD")
+  endif()
+  set (_Ruby_FIND_VIRTUALENV STANDARD)
+endif()
+
+if(_Ruby_DEBUG_OUTPUT)
+  message("_Ruby_POSSIBLE_EXECUTABLE_NAMES=${_Ruby_POSSIBLE_EXECUTABLE_NAMES}")
+  message("_Ruby_FIND_VIRTUALENV=${_Ruby_FIND_VIRTUALENV}")
+endif()
+
+function (_RUBY_VALIDATE_INTERPRETER)
+  if (NOT Ruby_EXECUTABLE)
+    return()
+  endif()
+
+  cmake_parse_arguments (PARSE_ARGV 0 _RVI "EXACT;CHECK_EXISTS" "" "")
+  if (_RVI_UNPARSED_ARGUMENTS)
+    set (expected_version ${_RVI_UNPARSED_ARGUMENTS})
+  else()
+    unset (expected_version)
+  endif()
+
+  if (_RVI_CHECK_EXISTS AND NOT EXISTS "${Ruby_EXECUTABLE}")
+    # interpreter does not exist anymore
+    set (_Ruby_Interpreter_REASON_FAILURE "Cannot find the interpreter \"${Ruby_EXECUTABLE}\"")
+    set_property (CACHE Ruby_EXECUTABLE PROPERTY VALUE "Ruby_EXECUTABLE-NOTFOUND")
+    return()
+  endif()
+
+  # Check the version it returns
+  # executable found must have a specific version
+  execute_process (COMMAND "${Ruby_EXECUTABLE}" -e "puts RUBY_VERSION"
+                   RESULT_VARIABLE result
+                   OUTPUT_VARIABLE version
+                   ERROR_QUIET
+                   OUTPUT_STRIP_TRAILING_WHITESPACE)
+  if (result OR (_RVI_EXACT AND NOT version VERSION_EQUAL expected_version) OR (version VERSION_LESS expected_version))
+    # interpreter not usable or has wrong major version
+    if (result)
+      set (_Ruby_Interpreter_REASON_FAILURE "Cannot use the interpreter \"${Ruby_EXECUTABLE}\"")
+    else()
+      set (_Ruby_Interpreter_REASON_FAILURE "Wrong major version for the interpreter \"${Ruby_EXECUTABLE}\"")
+    endif()
+    set_property (CACHE Ruby_EXECUTABLE PROPERTY VALUE "Ruby_EXECUTABLE-NOTFOUND")
+    return()
+  endif()
+
+endfunction()
+
+while(1)
+  # Virtual environments handling
+  if(_Ruby_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY)$")
+    if(_Ruby_DEBUG_OUTPUT)
+      message("Inside Matches")
+    endif()
+    find_program (Ruby_EXECUTABLE
+                  NAMES ${_Ruby_POSSIBLE_EXECUTABLE_NAMES}
+                  NAMES_PER_DIR
+                  PATHS ENV MY_RUBY_HOME
+                  PATH_SUFFIXES bin Scripts
+                  NO_CMAKE_PATH
+                  NO_CMAKE_ENVIRONMENT_PATH
+                  NO_SYSTEM_ENVIRONMENT_PATH
+                  NO_CMAKE_SYSTEM_PATH)
+
+    if(_Ruby_DEBUG_OUTPUT)
+      message("Ruby_EXECUTABLE=${Ruby_EXECUTABLE}")
+    endif()
+
+    _RUBY_VALIDATE_INTERPRETER (${Ruby_FIND_VERSION}})
+    if(Ruby_EXECUTABLE)
+      break()
+    endif()
+    if(NOT _Ruby_FIND_VIRTUALENV STREQUAL "ONLY")
+      break()
+    endif()
+  elseif(_Ruby_DEBUG_OUTPUT)
+    message("_Ruby_FIND_VIRTUALENV doesn't match: ${_Ruby_FIND_VIRTUALENV}")
+  endif()
+
+  # try using standard paths
+  find_program (Ruby_EXECUTABLE
+                NAMES ${_Ruby_POSSIBLE_EXECUTABLE_NAMES}
+                NAMES_PER_DIR)
+  _RUBY_VALIDATE_INTERPRETER (${Ruby_FIND_VERSION})
+  if (Ruby_EXECUTABLE)
+    break()
+  endif()
+
+  break()
+endwhile()
+
+if(Ruby_EXECUTABLE AND NOT Ruby_VERSION_MAJOR)
+  function(_RUBY_CONFIG_VAR RBVAR OUTVAR)
+    execute_process(COMMAND ${Ruby_EXECUTABLE} -r rbconfig -e "print RbConfig::CONFIG['${RBVAR}']"
+      RESULT_VARIABLE _Ruby_SUCCESS
+      OUTPUT_VARIABLE _Ruby_OUTPUT
+      ERROR_QUIET)
+    if(_Ruby_SUCCESS OR _Ruby_OUTPUT STREQUAL "")
+      execute_process(COMMAND ${Ruby_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['${RBVAR}']"
+        RESULT_VARIABLE _Ruby_SUCCESS
+        OUTPUT_VARIABLE _Ruby_OUTPUT
+        ERROR_QUIET)
+    endif()
+    set(${OUTVAR} "${_Ruby_OUTPUT}" PARENT_SCOPE)
+  endfunction()
+
+
+  # query the ruby version
+  _RUBY_CONFIG_VAR("MAJOR" Ruby_VERSION_MAJOR)
+  _RUBY_CONFIG_VAR("MINOR" Ruby_VERSION_MINOR)
+  _RUBY_CONFIG_VAR("TEENY" Ruby_VERSION_PATCH)
+
+  # query the different directories
+  _RUBY_CONFIG_VAR("archdir" Ruby_ARCH_DIR)
+  _RUBY_CONFIG_VAR("arch" Ruby_ARCH)
+  _RUBY_CONFIG_VAR("rubyhdrdir" Ruby_HDR_DIR)
+  _RUBY_CONFIG_VAR("rubyarchhdrdir" Ruby_ARCHHDR_DIR)
+  _RUBY_CONFIG_VAR("libdir" Ruby_POSSIBLE_LIB_DIR)
+  _RUBY_CONFIG_VAR("rubylibdir" Ruby_RUBY_LIB_DIR)
+
+  # site_ruby
+  _RUBY_CONFIG_VAR("sitearchdir" Ruby_SITEARCH_DIR)
+  _RUBY_CONFIG_VAR("sitelibdir" Ruby_SITELIB_DIR)
+
+  # vendor_ruby available ?
+  execute_process(COMMAND ${Ruby_EXECUTABLE} -r vendor-specific -e "print 'true'"
+    OUTPUT_VARIABLE Ruby_HAS_VENDOR_RUBY  ERROR_QUIET)
+
+  if(Ruby_HAS_VENDOR_RUBY)
+    _RUBY_CONFIG_VAR("vendorlibdir" Ruby_VENDORLIB_DIR)
+    _RUBY_CONFIG_VAR("vendorarchdir" Ruby_VENDORARCH_DIR)
+  endif()
+
+  # save the results in the cache so we don't have to run ruby the next time again
+  set(Ruby_VERSION_MAJOR    ${Ruby_VERSION_MAJOR}    CACHE PATH "The Ruby major version" FORCE)
+  set(Ruby_VERSION_MINOR    ${Ruby_VERSION_MINOR}    CACHE PATH "The Ruby minor version" FORCE)
+  set(Ruby_VERSION_PATCH    ${Ruby_VERSION_PATCH}    CACHE PATH "The Ruby patch version" FORCE)
+  set(Ruby_ARCH_DIR         ${Ruby_ARCH_DIR}         CACHE PATH "The Ruby arch dir" FORCE)
+  set(Ruby_HDR_DIR          ${Ruby_HDR_DIR}          CACHE PATH "The Ruby header dir (1.9+)" FORCE)
+  set(Ruby_ARCHHDR_DIR      ${Ruby_ARCHHDR_DIR}      CACHE PATH "The Ruby arch header dir (2.0+)" FORCE)
+  set(Ruby_POSSIBLE_LIB_DIR ${Ruby_POSSIBLE_LIB_DIR} CACHE PATH "The Ruby lib dir" FORCE)
+  set(Ruby_RUBY_LIB_DIR     ${Ruby_RUBY_LIB_DIR}     CACHE PATH "The Ruby ruby-lib dir" FORCE)
+  set(Ruby_SITEARCH_DIR     ${Ruby_SITEARCH_DIR}     CACHE PATH "The Ruby site arch dir" FORCE)
+  set(Ruby_SITELIB_DIR      ${Ruby_SITELIB_DIR}      CACHE PATH "The Ruby site lib dir" FORCE)
+  set(Ruby_HAS_VENDOR_RUBY  ${Ruby_HAS_VENDOR_RUBY}  CACHE BOOL "Vendor Ruby is available" FORCE)
+  set(Ruby_VENDORARCH_DIR   ${Ruby_VENDORARCH_DIR}   CACHE PATH "The Ruby vendor arch dir" FORCE)
+  set(Ruby_VENDORLIB_DIR    ${Ruby_VENDORLIB_DIR}    CACHE PATH "The Ruby vendor lib dir" FORCE)
+
+  mark_as_advanced(
+    Ruby_ARCH_DIR
+    Ruby_ARCH
+    Ruby_HDR_DIR
+    Ruby_ARCHHDR_DIR
+    Ruby_POSSIBLE_LIB_DIR
+    Ruby_RUBY_LIB_DIR
+    Ruby_SITEARCH_DIR
+    Ruby_SITELIB_DIR
+    Ruby_HAS_VENDOR_RUBY
+    Ruby_VENDORARCH_DIR
+    Ruby_VENDORLIB_DIR
+    Ruby_VERSION_MAJOR
+    Ruby_VERSION_MINOR
+    Ruby_VERSION_PATCH
+    )
+endif()
+
+# In case Ruby_EXECUTABLE could not be executed (e.g. cross compiling)
+# try to detect which version we found. This is not too good.
+if(Ruby_EXECUTABLE AND NOT Ruby_VERSION_MAJOR)
+  # by default assume 1.8.0
+  set(Ruby_VERSION_MAJOR 1)
+  set(Ruby_VERSION_MINOR 8)
+  set(Ruby_VERSION_PATCH 0)
+  # check whether we found 1.9.x
+  if(${Ruby_EXECUTABLE} MATCHES "ruby1\\.?9")
+    set(Ruby_VERSION_MAJOR 1)
+    set(Ruby_VERSION_MINOR 9)
+  endif()
+  # check whether we found 2.0.x
+  if(${Ruby_EXECUTABLE} MATCHES "ruby2\\.?0")
+    set(Ruby_VERSION_MAJOR 2)
+    set(Ruby_VERSION_MINOR 0)
+  endif()
+  # check whether we found 2.1.x
+  if(${Ruby_EXECUTABLE} MATCHES "ruby2\\.?1")
+    set(Ruby_VERSION_MAJOR 2)
+    set(Ruby_VERSION_MINOR 1)
+  endif()
+  # check whether we found 2.2.x
+  if(${Ruby_EXECUTABLE} MATCHES "ruby2\\.?2")
+    set(Ruby_VERSION_MAJOR 2)
+    set(Ruby_VERSION_MINOR 2)
+  endif()
+  # check whether we found 2.3.x
+  if(${Ruby_EXECUTABLE} MATCHES "ruby2\\.?3")
+    set(Ruby_VERSION_MAJOR 2)
+    set(Ruby_VERSION_MINOR 3)
+  endif()
+  # check whether we found 2.4.x
+  if(${Ruby_EXECUTABLE} MATCHES "ruby2\\.?4")
+    set(Ruby_VERSION_MAJOR 2)
+    set(Ruby_VERSION_MINOR 4)
+  endif()
+  # check whether we found 2.5.x
+  if(${Ruby_EXECUTABLE} MATCHES "ruby2\\.?5")
+    set(Ruby_VERSION_MAJOR 2)
+    set(Ruby_VERSION_MINOR 5)
+  endif()
+  # check whether we found 2.6.x
+  if(${Ruby_EXECUTABLE} MATCHES "ruby2\\.?6")
+    set(Ruby_VERSION_MAJOR 2)
+    set(Ruby_VERSION_MINOR 6)
+  endif()
+  # check whether we found 2.7.x
+  if(${Ruby_EXECUTABLE} MATCHES "ruby2\\.?7")
+    set(Ruby_VERSION_MAJOR 2)
+    set(Ruby_VERSION_MINOR 7)
+  endif()
+endif()
+
+if(Ruby_VERSION_MAJOR)
+  set(Ruby_VERSION "${Ruby_VERSION_MAJOR}.${Ruby_VERSION_MINOR}.${Ruby_VERSION_PATCH}")
+  set(_Ruby_VERSION_SHORT "${Ruby_VERSION_MAJOR}.${Ruby_VERSION_MINOR}")
+  set(_Ruby_VERSION_SHORT_NODOT "${Ruby_VERSION_MAJOR}${Ruby_VERSION_MINOR}")
+  set(_Ruby_NODOT_VERSION "${Ruby_VERSION_MAJOR}${Ruby_VERSION_MINOR}${Ruby_VERSION_PATCH}")
+  set(_Ruby_NODOT_VERSION_ZERO_PATCH "${Ruby_VERSION_MAJOR}${Ruby_VERSION_MINOR}0")
+endif()
+
+# FIXME: Currently we require both the interpreter and development components to be found
+# in order to use either.  See issue #20474.
+find_path(Ruby_INCLUDE_DIR
+  NAMES ruby.h
+  HINTS
+    ${Ruby_HDR_DIR}
+    ${Ruby_ARCH_DIR}
+    /usr/lib/ruby/${_Ruby_VERSION_SHORT}/i586-linux-gnu/
+)
+
+set(Ruby_INCLUDE_DIRS ${Ruby_INCLUDE_DIR})
+
+# if ruby > 1.8 is required or if ruby > 1.8 was found, search for the config.h dir
+if( Ruby_FIND_VERSION VERSION_GREATER_EQUAL "1.9"  OR  Ruby_VERSION VERSION_GREATER_EQUAL "1.9"  OR  Ruby_HDR_DIR)
+  find_path(Ruby_CONFIG_INCLUDE_DIR
+    NAMES ruby/config.h  config.h
+    HINTS
+      ${Ruby_HDR_DIR}/${Ruby_ARCH}
+      ${Ruby_ARCH_DIR}
+      ${Ruby_ARCHHDR_DIR}
+  )
+
+  set(Ruby_INCLUDE_DIRS ${Ruby_INCLUDE_DIRS} ${Ruby_CONFIG_INCLUDE_DIR} )
+endif()
+
+
+# Determine the list of possible names for the ruby library
+set(_Ruby_POSSIBLE_LIB_NAMES ruby ruby-static ruby${_Ruby_VERSION_SHORT} ruby${_Ruby_VERSION_SHORT_NODOT} ruby${_Ruby_NODOT_VERSION} ruby-${_Ruby_VERSION_SHORT} ruby-${Ruby_VERSION})
+
+if(WIN32)
+  set(_Ruby_POSSIBLE_MSVC_RUNTIMES "msvcrt;vcruntime140;vcruntime140_1")
+  if(MSVC_TOOLSET_VERSION)
+    list(APPEND _Ruby_POSSIBLE_MSVC_RUNTIMES "msvcr${MSVC_TOOLSET_VERSION}")
+  else()
+    list(APPEND _Ruby_POSSIBLE_MSVC_RUNTIMES "msvcr")
+  endif()
+
+  set(_Ruby_POSSIBLE_VERSION_SUFFICES "${_Ruby_NODOT_VERSION};${_Ruby_NODOT_VERSION_ZERO_PATCH}")
+
+  set(_Ruby_ARCH_PREFIX "")
+  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+    set(_Ruby_ARCH_PREFIX "x64-")
+  endif()
+
+  foreach(_Ruby_MSVC_RUNTIME ${_Ruby_POSSIBLE_MSVC_RUNTIMES})
+    foreach(_Ruby_VERSION_SUFFIX ${_Ruby_POSSIBLE_VERSION_SUFFICES})
+      list(APPEND _Ruby_POSSIBLE_LIB_NAMES
+                 "${_Ruby_ARCH_PREFIX}${_Ruby_MSVC_RUNTIME}-ruby${_Ruby_VERSION_SUFFIX}"
+                 "${_Ruby_ARCH_PREFIX}${_Ruby_MSVC_RUNTIME}-ruby${_Ruby_VERSION_SUFFIX}-static")
+    endforeach()
+  endforeach()
+endif()
+
+find_library(Ruby_LIBRARY NAMES ${_Ruby_POSSIBLE_LIB_NAMES} HINTS ${Ruby_POSSIBLE_LIB_DIR} )
+
+set(_Ruby_REQUIRED_VARS Ruby_EXECUTABLE Ruby_INCLUDE_DIR Ruby_LIBRARY)
+if(_Ruby_VERSION_SHORT_NODOT GREATER 18)
+  list(APPEND _Ruby_REQUIRED_VARS Ruby_CONFIG_INCLUDE_DIR)
+endif()
+
+if(_Ruby_DEBUG_OUTPUT)
+  message(STATUS "--------FindRuby.cmake debug------------")
+  message(STATUS "_Ruby_POSSIBLE_EXECUTABLE_NAMES: ${_Ruby_POSSIBLE_EXECUTABLE_NAMES}")
+  message(STATUS "_Ruby_POSSIBLE_LIB_NAMES: ${_Ruby_POSSIBLE_LIB_NAMES}")
+  message(STATUS "Ruby_ARCH_DIR: ${Ruby_ARCH_DIR}")
+  message(STATUS "Ruby_HDR_DIR: ${Ruby_HDR_DIR}")
+  message(STATUS "Ruby_POSSIBLE_LIB_DIR: ${Ruby_POSSIBLE_LIB_DIR}")
+  message(STATUS "Found Ruby_VERSION: \"${Ruby_VERSION}\" , short: \"${_Ruby_VERSION_SHORT}\", nodot: \"${_Ruby_VERSION_SHORT_NODOT}\"")
+  message(STATUS "_Ruby_REQUIRED_VARS: ${_Ruby_REQUIRED_VARS}")
+  message(STATUS "Ruby_EXECUTABLE: ${Ruby_EXECUTABLE}")
+  message(STATUS "Ruby_LIBRARY: ${Ruby_LIBRARY}")
+  message(STATUS "Ruby_INCLUDE_DIR: ${Ruby_INCLUDE_DIR}")
+  message(STATUS "Ruby_CONFIG_INCLUDE_DIR: ${Ruby_CONFIG_INCLUDE_DIR}")
+  message(STATUS "--------------------")
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Ruby  REQUIRED_VARS  ${_Ruby_REQUIRED_VARS}
+                                        VERSION_VAR Ruby_VERSION )
+
+if(Ruby_FOUND)
+  set(Ruby_LIBRARIES ${Ruby_LIBRARY})
+endif()
+
+mark_as_advanced(
+  Ruby_EXECUTABLE
+  Ruby_LIBRARY
+  Ruby_INCLUDE_DIR
+  Ruby_CONFIG_INCLUDE_DIR
+  )
+
+# Set some variables for compatibility with previous version of this file (no need to provide a CamelCase version of that...)
+set(RUBY_POSSIBLE_LIB_PATH ${Ruby_POSSIBLE_LIB_DIR})
+set(RUBY_RUBY_LIB_PATH ${Ruby_RUBY_LIB_DIR})
+set(RUBY_INCLUDE_PATH ${Ruby_INCLUDE_DIRS})
+
+# Backwards compatibility
+# Define upper case versions of output variables
+foreach(Camel
+    Ruby_EXECUTABLE
+    Ruby_INCLUDE_DIRS
+    Ruby_LIBRARY
+    Ruby_VERSION
+    Ruby_VERSION_MAJOR
+    Ruby_VERSION_MINOR
+    Ruby_VERSION_PATCH
+
+    Ruby_ARCH_DIR
+    Ruby_ARCH
+    Ruby_HDR_DIR
+    Ruby_ARCHHDR_DIR
+    Ruby_POSSIBLE_LIB_DIR
+    Ruby_RUBY_LIB_DIR
+    Ruby_SITEARCH_DIR
+    Ruby_SITELIB_DIR
+    Ruby_HAS_VENDOR_RUBY
+    Ruby_VENDORARCH_DIR
+    Ruby_VENDORLIB_DIR
+
+    )
+    string(TOUPPER ${Camel} UPPER)
+    set(${UPPER} ${${Camel}})
+endforeach()
diff --git a/share/cmake-3.22/Modules/FindSDL.cmake b/share/cmake-3.22/Modules/FindSDL.cmake
new file mode 100644
index 0000000..c68e18d
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindSDL.cmake
@@ -0,0 +1,237 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindSDL
+-------
+
+Locate the SDL library
+
+
+Imported targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.19
+
+This module defines the following :prop_tgt:`IMPORTED` target:
+
+``SDL::SDL``
+  The SDL library, if found
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``SDL_INCLUDE_DIRS``
+  where to find SDL.h
+``SDL_LIBRARIES``
+  the name of the library to link against
+``SDL_FOUND``
+  if false, do not try to link to SDL
+``SDL_VERSION``
+  the human-readable string containing the version of SDL if found
+``SDL_VERSION_MAJOR``
+  SDL major version
+``SDL_VERSION_MINOR``
+  SDL minor version
+``SDL_VERSION_PATCH``
+  SDL patch version
+
+.. versionadded:: 3.19
+  Added the ``SDL_INCLUDE_DIRS``, ``SDL_LIBRARIES`` and ``SDL_VERSION[_<PART>]``
+  variables.
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+These variables may optionally be set to help this module find the correct files:
+
+``SDL_INCLUDE_DIR``
+  where to find SDL.h
+``SDL_LIBRARY``
+  the name of the library to link against
+
+
+Variables for locating SDL
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This module responds to the flag:
+
+``SDL_BUILDING_LIBRARY``
+    If this is defined, then no SDL_main will be linked in because
+    only applications need main().
+    Otherwise, it is assumed you are building an application and this
+    module will attempt to locate and set the proper link flags
+    as part of the returned SDL_LIBRARY variable.
+
+
+Obsolete variables
+^^^^^^^^^^^^^^^^^^
+
+.. deprecated:: 3.19
+
+These variables are obsolete and provided for backwards compatibility:
+
+``SDL_VERSION_STRING``
+  the human-readable string containing the version of SDL if found.
+  Identical to SDL_VERSION
+
+
+Don't forget to include SDLmain.h and SDLmain.m your project for the
+OS X framework based version.  (Other versions link to -lSDLmain which
+this module will try to find on your behalf.) Also for OS X, this
+module will automatically add the -framework Cocoa on your behalf.
+
+
+
+Additional Note: If you see an empty SDL_LIBRARY_TEMP in your
+configuration and no SDL_LIBRARY, it means CMake did not find your SDL
+library (SDL.dll, libsdl.so, SDL.framework, etc).  Set
+SDL_LIBRARY_TEMP to point to your SDL library, and configure again.
+Similarly, if you see an empty SDLMAIN_LIBRARY, you should set this
+value as appropriate.  These values are used to generate the final
+SDL_LIBRARY variable, but when these values are unset, SDL_LIBRARY
+does not get created.
+
+
+
+$SDLDIR is an environment variable that would correspond to the
+./configure --prefix=$SDLDIR used in building SDL.  l.e.galup 9-20-02
+
+On OSX, this will prefer the Framework version (if found) over others.
+People will have to manually change the cache values of SDL_LIBRARY to
+override this selection or set the CMake environment
+CMAKE_INCLUDE_PATH to modify the search paths.
+
+Note that the header path has changed from SDL/SDL.h to just SDL.h
+This needed to change because "proper" SDL convention is #include
+"SDL.h", not <SDL/SDL.h>.  This is done for portability reasons
+because not all systems place things in SDL/ (see FreeBSD).
+#]=======================================================================]
+
+find_path(SDL_INCLUDE_DIR SDL.h
+  HINTS
+    ENV SDLDIR
+  PATH_SUFFIXES SDL SDL12 SDL11
+                # path suffixes to search inside ENV{SDLDIR}
+                include/SDL include/SDL12 include/SDL11 include
+)
+
+if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+  set(VC_LIB_PATH_SUFFIX lib/x64)
+else()
+  set(VC_LIB_PATH_SUFFIX lib/x86)
+endif()
+
+# SDL-1.1 is the name used by FreeBSD ports...
+# don't confuse it for the version number.
+find_library(SDL_LIBRARY_TEMP
+  NAMES SDL SDL-1.1
+  HINTS
+    ENV SDLDIR
+  PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
+)
+
+# Hide this cache variable from the user, it's an internal implementation
+# detail. The documented library variable for the user is SDL_LIBRARY
+# which is derived from SDL_LIBRARY_TEMP further below.
+set_property(CACHE SDL_LIBRARY_TEMP PROPERTY TYPE INTERNAL)
+
+if(NOT SDL_BUILDING_LIBRARY)
+  if(NOT SDL_INCLUDE_DIR MATCHES ".framework")
+    # Non-OS X framework versions expect you to also dynamically link to
+    # SDLmain. This is mainly for Windows and OS X. Other (Unix) platforms
+    # seem to provide SDLmain for compatibility even though they don't
+    # necessarily need it.
+    find_library(SDLMAIN_LIBRARY
+      NAMES SDLmain SDLmain-1.1
+      HINTS
+        ENV SDLDIR
+      PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
+      PATHS
+      /opt
+    )
+  endif()
+endif()
+
+# SDL may require threads on your system.
+# The Apple build may not need an explicit flag because one of the
+# frameworks may already provide it.
+# But for non-OSX systems, I will use the CMake Threads package.
+if(NOT APPLE)
+  find_package(Threads)
+endif()
+
+# MinGW needs an additional link flag, -mwindows
+# It's total link flags should look like -lmingw32 -lSDLmain -lSDL -mwindows
+if(MINGW)
+  set(MINGW32_LIBRARY mingw32 "-mwindows" CACHE STRING "link flags for MinGW")
+endif()
+
+if(SDL_LIBRARY_TEMP)
+  # For SDLmain
+  if(SDLMAIN_LIBRARY AND NOT SDL_BUILDING_LIBRARY)
+    list(FIND SDL_LIBRARY_TEMP "${SDLMAIN_LIBRARY}" _SDL_MAIN_INDEX)
+    if(_SDL_MAIN_INDEX EQUAL -1)
+      set(SDL_LIBRARY_TEMP "${SDLMAIN_LIBRARY}" ${SDL_LIBRARY_TEMP})
+    endif()
+    unset(_SDL_MAIN_INDEX)
+  endif()
+
+  # For OS X, SDL uses Cocoa as a backend so it must link to Cocoa.
+  # CMake doesn't display the -framework Cocoa string in the UI even
+  # though it actually is there if I modify a pre-used variable.
+  # I think it has something to do with the CACHE STRING.
+  # So I use a temporary variable until the end so I can set the
+  # "real" variable in one-shot.
+  if(APPLE)
+    set(SDL_LIBRARY_TEMP ${SDL_LIBRARY_TEMP} "-framework Cocoa")
+  endif()
+
+  # For threads, as mentioned Apple doesn't need this.
+  # In fact, there seems to be a problem if I used the Threads package
+  # and try using this line, so I'm just skipping it entirely for OS X.
+  if(NOT APPLE)
+    set(SDL_LIBRARY_TEMP ${SDL_LIBRARY_TEMP} ${CMAKE_THREAD_LIBS_INIT})
+  endif()
+
+  # For MinGW library
+  if(MINGW)
+    set(SDL_LIBRARY_TEMP ${MINGW32_LIBRARY} ${SDL_LIBRARY_TEMP})
+  endif()
+
+  # Set the final string here so the GUI reflects the final state.
+  set(SDL_LIBRARY ${SDL_LIBRARY_TEMP} CACHE STRING "Where the SDL Library can be found")
+endif()
+
+if(SDL_INCLUDE_DIR AND EXISTS "${SDL_INCLUDE_DIR}/SDL_version.h")
+  file(STRINGS "${SDL_INCLUDE_DIR}/SDL_version.h" SDL_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+[0-9]+$")
+  file(STRINGS "${SDL_INCLUDE_DIR}/SDL_version.h" SDL_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_MINOR_VERSION[ \t]+[0-9]+$")
+  file(STRINGS "${SDL_INCLUDE_DIR}/SDL_version.h" SDL_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_PATCHLEVEL[ \t]+[0-9]+$")
+  string(REGEX REPLACE "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL_VERSION_MAJOR "${SDL_VERSION_MAJOR_LINE}")
+  string(REGEX REPLACE "^#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL_VERSION_MINOR "${SDL_VERSION_MINOR_LINE}")
+  string(REGEX REPLACE "^#define[ \t]+SDL_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL_VERSION_PATCH "${SDL_VERSION_PATCH_LINE}")
+  unset(SDL_VERSION_MAJOR_LINE)
+  unset(SDL_VERSION_MINOR_LINE)
+  unset(SDL_VERSION_PATCH_LINE)
+  set(SDL_VERSION ${SDL_VERSION_MAJOR}.${SDL_VERSION_MINOR}.${SDL_VERSION_PATCH})
+  set(SDL_VERSION_STRING ${SDL_VERSION})
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL
+                                  REQUIRED_VARS SDL_LIBRARY SDL_INCLUDE_DIR
+                                  VERSION_VAR SDL_VERSION_STRING)
+
+if(SDL_FOUND)
+  set(SDL_LIBRARIES ${SDL_LIBRARY})
+  set(SDL_INCLUDE_DIRS ${SDL_INCLUDE_DIR})
+  if(NOT TARGET SDL::SDL)
+    add_library(SDL::SDL INTERFACE IMPORTED)
+    set_target_properties(SDL::SDL PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${SDL_INCLUDE_DIR}"
+      INTERFACE_LINK_LIBRARIES "${SDL_LIBRARY}")
+  endif()
+endif()
diff --git a/share/cmake-3.18/Modules/FindSDL_image.cmake b/share/cmake-3.22/Modules/FindSDL_image.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindSDL_image.cmake
rename to share/cmake-3.22/Modules/FindSDL_image.cmake
diff --git a/share/cmake-3.18/Modules/FindSDL_mixer.cmake b/share/cmake-3.22/Modules/FindSDL_mixer.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindSDL_mixer.cmake
rename to share/cmake-3.22/Modules/FindSDL_mixer.cmake
diff --git a/share/cmake-3.18/Modules/FindSDL_net.cmake b/share/cmake-3.22/Modules/FindSDL_net.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindSDL_net.cmake
rename to share/cmake-3.22/Modules/FindSDL_net.cmake
diff --git a/share/cmake-3.18/Modules/FindSDL_sound.cmake b/share/cmake-3.22/Modules/FindSDL_sound.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindSDL_sound.cmake
rename to share/cmake-3.22/Modules/FindSDL_sound.cmake
diff --git a/share/cmake-3.18/Modules/FindSDL_ttf.cmake b/share/cmake-3.22/Modules/FindSDL_ttf.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindSDL_ttf.cmake
rename to share/cmake-3.22/Modules/FindSDL_ttf.cmake
diff --git a/share/cmake-3.22/Modules/FindSQLite3.cmake b/share/cmake-3.22/Modules/FindSQLite3.cmake
new file mode 100644
index 0000000..88c7dd2
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindSQLite3.cmake
@@ -0,0 +1,68 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindSQLite3
+-----------
+
+.. versionadded:: 3.14
+
+Find the SQLite libraries, v3
+
+IMPORTED targets
+^^^^^^^^^^^^^^^^
+
+This module defines the following :prop_tgt:`IMPORTED` target:
+
+``SQLite::SQLite3``
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables if found:
+
+``SQLite3_INCLUDE_DIRS``
+  where to find sqlite3.h, etc.
+``SQLite3_LIBRARIES``
+  the libraries to link against to use SQLite3.
+``SQLite3_VERSION``
+  version of the SQLite3 library found
+``SQLite3_FOUND``
+  TRUE if found
+
+#]=======================================================================]
+
+# Look for the necessary header
+find_path(SQLite3_INCLUDE_DIR NAMES sqlite3.h)
+mark_as_advanced(SQLite3_INCLUDE_DIR)
+
+# Look for the necessary library
+find_library(SQLite3_LIBRARY NAMES sqlite3 sqlite)
+mark_as_advanced(SQLite3_LIBRARY)
+
+# Extract version information from the header file
+if(SQLite3_INCLUDE_DIR)
+    file(STRINGS ${SQLite3_INCLUDE_DIR}/sqlite3.h _ver_line
+         REGEX "^#define SQLITE_VERSION  *\"[0-9]+\\.[0-9]+\\.[0-9]+\""
+         LIMIT_COUNT 1)
+    string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+"
+           SQLite3_VERSION "${_ver_line}")
+    unset(_ver_line)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(SQLite3
+    REQUIRED_VARS SQLite3_INCLUDE_DIR SQLite3_LIBRARY
+    VERSION_VAR SQLite3_VERSION)
+
+# Create the imported target
+if(SQLite3_FOUND)
+    set(SQLite3_INCLUDE_DIRS ${SQLite3_INCLUDE_DIR})
+    set(SQLite3_LIBRARIES ${SQLite3_LIBRARY})
+    if(NOT TARGET SQLite::SQLite3)
+        add_library(SQLite::SQLite3 UNKNOWN IMPORTED)
+        set_target_properties(SQLite::SQLite3 PROPERTIES
+            IMPORTED_LOCATION             "${SQLite3_LIBRARY}"
+            INTERFACE_INCLUDE_DIRECTORIES "${SQLite3_INCLUDE_DIR}")
+    endif()
+endif()
diff --git a/share/cmake-3.22/Modules/FindSWIG.cmake b/share/cmake-3.22/Modules/FindSWIG.cmake
new file mode 100644
index 0000000..7c610d9
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindSWIG.cmake
@@ -0,0 +1,163 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindSWIG
+--------
+
+Find the Simplified Wrapper and Interface Generator (SWIG_) executable.
+
+This module finds an installed SWIG and determines its version.
+
+.. versionadded:: 3.18
+  If a ``COMPONENTS`` or ``OPTIONAL_COMPONENTS`` argument is given to the
+  :command:`find_package` command, it will also determine supported target
+  languages.
+
+.. versionadded:: 3.19
+  When a version is requested, it can be specified as a simple value or as a
+  range. For a detailed description of version range usage and capabilities,
+  refer to the :command:`find_package` command.
+
+The module defines the following variables:
+
+``SWIG_FOUND``
+  Whether SWIG and any required components were found on the system.
+``SWIG_EXECUTABLE``
+  Path to the SWIG executable.
+``SWIG_DIR``
+  Path to the installed SWIG ``Lib`` directory (result of ``swig -swiglib``).
+``SWIG_VERSION``
+  SWIG executable version (result of ``swig -version``).
+``SWIG_<lang>_FOUND``
+  If ``COMPONENTS`` or ``OPTIONAL_COMPONENTS`` are requested, each available
+  target language ``<lang>`` (lowercase) will be set to TRUE.
+
+Any ``COMPONENTS`` given to ``find_package`` should be the names of supported
+target languages as provided to the LANGUAGE argument of ``swig_add_library``,
+such as ``python`` or ``perl5``. Language names *must* be lowercase.
+
+All information is collected from the ``SWIG_EXECUTABLE``, so the version
+to be found can be changed from the command line by means of setting
+``SWIG_EXECUTABLE``.
+
+Example usage requiring SWIG 4.0 or higher and Python language support, with
+optional Fortran support:
+
+.. code-block:: cmake
+
+   find_package(SWIG 4.0 COMPONENTS python OPTIONAL_COMPONENTS fortran)
+   if(SWIG_FOUND)
+     message("SWIG found: ${SWIG_EXECUTABLE}")
+     if(NOT SWIG_fortran_FOUND)
+       message(WARNING "SWIG Fortran bindings cannot be generated")
+     endif()
+   endif()
+
+.. _`SWIG`: http://swig.org
+
+#]=======================================================================]
+
+# compute list of possible names
+unset (_SWIG_NAMES)
+if (SWIG_FIND_VERSION_RANGE)
+  foreach (_SWIG_MAJOR IN ITEMS 4 3 2)
+    if (_SWIG_MAJOR VERSION_GREATER_EQUAL SWIG_FIND_VERSION_MIN_MAJOR
+        AND ((SWIG_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND _SWIG_MAJOR VERSION_LESS_EQUAL SWIG_FIND_VERSION_MAX)
+        OR (SWIG_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND _SWIG_MAJOR VERSION_LESS SWIG_FIND_VERSION_MAX)))
+      list (APPEND _SWIG_NAMES swig${_SWIG_MAJOR}.0)
+    endif()
+  endforeach()
+elseif(SWIG_FIND_VERSION)
+  if (SWIG_FIND_VERSION_EXACT)
+    set(_SWIG_NAMES swig${SWIG_FIND_VERSION_MAJOR}.0)
+  else()
+    foreach (_SWIG_MAJOR IN ITEMS 4 3 2)
+      if (_SWIG_MAJOR VERSION_GREATER_EQUAL SWIG_FIND_VERSION_MAJOR)
+        list (APPEND _SWIG_NAMES swig${_SWIG_MAJOR}.0)
+      endif()
+    endforeach()
+  endif()
+else()
+  set (_SWIG_NAMES swig4.0 swig3.0 swig2.0)
+endif()
+if (NOT _SWIG_NAMES)
+  # try to find any version
+  set (_SWIG_NAMES swig4.0 swig3.0 swig2.0)
+endif()
+
+find_program(SWIG_EXECUTABLE NAMES ${_SWIG_NAMES} swig)
+unset(_SWIG_NAMES)
+
+if(SWIG_EXECUTABLE AND NOT SWIG_DIR)
+  # Find default value for SWIG library directory
+  execute_process(COMMAND "${SWIG_EXECUTABLE}" -swiglib
+    OUTPUT_VARIABLE _swig_output
+    ERROR_VARIABLE _swig_error
+    RESULT_VARIABLE _swig_result)
+
+  if(_swig_result)
+    set(_msg "Command \"${SWIG_EXECUTABLE} -swiglib\" failed with output:\n${_swig_error}")
+    if(SWIG_FIND_REQUIRED)
+      message(SEND_ERROR "${_msg}")
+    else()
+      message(STATUS "${_msg}")
+    endif()
+    unset(_msg)
+  else()
+    string(REGEX REPLACE "[\n\r]+" ";" _SWIG_LIB ${_swig_output})
+  endif()
+
+  # Find SWIG library directory
+  find_path(SWIG_DIR swig.swg PATHS ${_SWIG_LIB} NO_CMAKE_FIND_ROOT_PATH)
+  unset(_SWIG_LIB)
+endif()
+
+if(SWIG_EXECUTABLE AND SWIG_DIR AND NOT SWIG_VERSION)
+  # Determine SWIG version
+  execute_process(COMMAND "${SWIG_EXECUTABLE}" -version
+    OUTPUT_VARIABLE _swig_output
+    ERROR_VARIABLE _swig_output
+    RESULT_VARIABLE _swig_result)
+  if(_swig_result)
+    message(SEND_ERROR "Command \"${SWIG_EXECUTABLE} -version\" failed with output:\n${_swig_output}")
+  else()
+    string(REGEX REPLACE ".*SWIG Version[^0-9.]*\([0-9.]+\).*" "\\1"
+      _swig_output "${_swig_output}")
+    set(SWIG_VERSION ${_swig_output} CACHE STRING "Swig version" FORCE)
+  endif()
+endif()
+
+if(SWIG_EXECUTABLE AND SWIG_FIND_COMPONENTS)
+  execute_process(COMMAND "${SWIG_EXECUTABLE}" -help
+    OUTPUT_VARIABLE _swig_output
+    ERROR_VARIABLE _swig_error
+    RESULT_VARIABLE _swig_result)
+  if(_swig_result)
+    message(SEND_ERROR "Command \"${SWIG_EXECUTABLE} -help\" failed with output:\n${_swig_error}")
+  else()
+    string(REPLACE "\n" ";" _swig_output "${_swig_output}")
+    foreach(SWIG_line IN LISTS _swig_output)
+      if(SWIG_line MATCHES "-([A-Za-z0-9_]+) +- *Generate.*wrappers")
+        set(SWIG_${CMAKE_MATCH_1}_FOUND TRUE)
+      endif()
+    endforeach()
+  endif()
+endif()
+
+unset(_swig_output)
+unset(_swig_error)
+unset(_swig_result)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(
+  SWIG HANDLE_COMPONENTS
+  REQUIRED_VARS SWIG_EXECUTABLE SWIG_DIR
+  VERSION_VAR SWIG_VERSION
+  HANDLE_VERSION_RANGE)
+
+if(SWIG_FOUND)
+  set(SWIG_USE_FILE "${CMAKE_CURRENT_LIST_DIR}/UseSWIG.cmake")
+endif()
+
+mark_as_advanced(SWIG_DIR SWIG_VERSION SWIG_EXECUTABLE)
diff --git a/share/cmake-3.22/Modules/FindSelfPackers.cmake b/share/cmake-3.22/Modules/FindSelfPackers.cmake
new file mode 100644
index 0000000..a6eb6e5
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindSelfPackers.cmake
@@ -0,0 +1,61 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindSelfPackers
+---------------
+
+Find upx
+
+This module looks for some executable packers (i.e.  software that
+compress executables or shared libs into on-the-fly self-extracting
+executables or shared libs.  Examples:
+
+::
+
+  UPX: http://wildsau.idv.uni-linz.ac.at/mfx/upx.html
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/FindMsys.cmake)
+
+find_program(SELF_PACKER_FOR_EXECUTABLE
+  upx
+  ${CYGWIN_INSTALL_PATH}/bin
+  ${MSYS_INSTALL_PATH}/usr/bin
+)
+
+find_program(SELF_PACKER_FOR_SHARED_LIB
+  upx
+  ${CYGWIN_INSTALL_PATH}/bin
+  ${MSYS_INSTALL_PATH}/usr/bin
+)
+
+mark_as_advanced(
+  SELF_PACKER_FOR_EXECUTABLE
+  SELF_PACKER_FOR_SHARED_LIB
+)
+
+#
+# Set flags
+#
+if (SELF_PACKER_FOR_EXECUTABLE MATCHES "upx")
+  set (SELF_PACKER_FOR_EXECUTABLE_FLAGS "-q" CACHE STRING
+       "Flags for the executable self-packer.")
+else ()
+  set (SELF_PACKER_FOR_EXECUTABLE_FLAGS "" CACHE STRING
+       "Flags for the executable self-packer.")
+endif ()
+
+if (SELF_PACKER_FOR_SHARED_LIB MATCHES "upx")
+  set (SELF_PACKER_FOR_SHARED_LIB_FLAGS "-q" CACHE STRING
+       "Flags for the shared lib self-packer.")
+else ()
+  set (SELF_PACKER_FOR_SHARED_LIB_FLAGS "" CACHE STRING
+       "Flags for the shared lib self-packer.")
+endif ()
+
+mark_as_advanced(
+  SELF_PACKER_FOR_EXECUTABLE_FLAGS
+  SELF_PACKER_FOR_SHARED_LIB_FLAGS
+)
diff --git a/share/cmake-3.22/Modules/FindSquish.cmake b/share/cmake-3.22/Modules/FindSquish.cmake
new file mode 100644
index 0000000..9a17fdb
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindSquish.cmake
@@ -0,0 +1,289 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindSquish
+----------
+
+-- Typical Use
+
+
+
+This module can be used to find Squish.
+
+::
+
+  SQUISH_FOUND                    If false, don't try to use Squish
+  SQUISH_VERSION                  The full version of Squish found
+  SQUISH_VERSION_MAJOR            The major version of Squish found
+  SQUISH_VERSION_MINOR            The minor version of Squish found
+  SQUISH_VERSION_PATCH            The patch version of Squish found
+
+
+
+::
+
+  SQUISH_INSTALL_DIR              The Squish installation directory
+                                  (containing bin, lib, etc)
+  SQUISH_SERVER_EXECUTABLE        The squishserver executable
+  SQUISH_CLIENT_EXECUTABLE        The squishrunner executable
+
+
+
+::
+
+  SQUISH_INSTALL_DIR_FOUND        Was the install directory found?
+  SQUISH_SERVER_EXECUTABLE_FOUND  Was the server executable found?
+  SQUISH_CLIENT_EXECUTABLE_FOUND  Was the client executable found?
+
+
+
+It provides the function squish_add_test() for adding a squish test
+to cmake using Squish >= 4.x:
+
+::
+
+   squish_add_test(cmakeTestName
+     AUT targetName SUITE suiteName TEST squishTestName
+     [SETTINGSGROUP group] [PRE_COMMAND command] [POST_COMMAND command] )
+
+.. versionchanged:: 3.18
+  In previous CMake versions, this function was named ``squish_v4_add_test``.
+
+The arguments have the following meaning:
+
+``cmakeTestName``
+  this will be used as the first argument for add_test()
+``AUT targetName``
+  the name of the cmake target which will be used as AUT, i.e. the
+  executable which will be tested.
+``SUITE suiteName``
+  this is either the full path to the squish suite, or just the
+  last directory of the suite, i.e. the suite name. In this case
+  the CMakeLists.txt which calls squish_add_test() must be located
+  in the parent directory of the suite directory.
+``TEST squishTestName``
+  the name of the squish test, i.e. the name of the subdirectory
+  of the test inside the suite directory.
+``SETTINGSGROUP group``
+  deprecated, this argument will be ignored.
+``PRE_COMMAND command``
+  if specified, the given command will be executed before starting the squish test.
+``POST_COMMAND command``
+  same as PRE_COMMAND, but after the squish test has been executed.
+
+
+
+::
+
+   enable_testing()
+   find_package(Squish 6.5)
+   if (SQUISH_FOUND)
+      squish_add_test(myTestName
+        AUT myApp
+        SUITE ${CMAKE_SOURCE_DIR}/tests/mySuite
+        TEST someSquishTest
+        )
+   endif ()
+
+
+
+
+
+For users of Squish version 3.x the macro squish_v3_add_test() is
+provided:
+
+::
+
+   squish_v3_add_test(testName applicationUnderTest testCase envVars testWrapper)
+   Use this macro to add a test using Squish 3.x.
+
+
+
+::
+
+  enable_testing()
+  find_package(Squish 3.0)
+  if (SQUISH_FOUND)
+    squish_v3_add_test(myTestName myApplication testCase envVars testWrapper)
+  endif ()
+
+
+#]=======================================================================]
+
+set(SQUISH_INSTALL_DIR_STRING "Directory containing the bin, doc, and lib directories for Squish; this should be the root of the installation directory.")
+set(SQUISH_SERVER_EXECUTABLE_STRING "The squishserver executable program.")
+set(SQUISH_CLIENT_EXECUTABLE_STRING "The squishclient executable program.")
+
+# Search only if the location is not already known.
+if(NOT SQUISH_INSTALL_DIR)
+  # Get the system search path as a list.
+  file(TO_CMAKE_PATH "$ENV{PATH}" SQUISH_INSTALL_DIR_SEARCH2)
+
+  # Construct a set of paths relative to the system search path.
+  set(SQUISH_INSTALL_DIR_SEARCH "")
+  foreach(dir ${SQUISH_INSTALL_DIR_SEARCH2})
+    set(SQUISH_INSTALL_DIR_SEARCH ${SQUISH_INSTALL_DIR_SEARCH} "${dir}/../lib/fltk")
+  endforeach()
+  string(REPLACE "//" "/" SQUISH_INSTALL_DIR_SEARCH "${SQUISH_INSTALL_DIR_SEARCH}")
+
+  # Look for an installation
+  find_path(SQUISH_INSTALL_DIR
+    NAMES bin/squishrunner bin/squishrunner.exe
+    HINTS
+    # Look for an environment variable SQUISH_INSTALL_DIR.
+      ENV SQUISH_INSTALL_DIR
+
+    # Look in places relative to the system executable search path.
+    ${SQUISH_INSTALL_DIR_SEARCH}
+
+    DOC "The ${SQUISH_INSTALL_DIR_STRING}"
+    )
+endif()
+
+# search for the executables
+if(SQUISH_INSTALL_DIR)
+  set(SQUISH_INSTALL_DIR_FOUND 1)
+
+  # find the client program
+  if(NOT SQUISH_CLIENT_EXECUTABLE)
+    find_program(SQUISH_CLIENT_EXECUTABLE ${SQUISH_INSTALL_DIR}/bin/squishrunner${CMAKE_EXECUTABLE_SUFFIX} DOC "The ${SQUISH_CLIENT_EXECUTABLE_STRING}")
+  endif()
+
+  # find the server program
+  if(NOT SQUISH_SERVER_EXECUTABLE)
+    find_program(SQUISH_SERVER_EXECUTABLE ${SQUISH_INSTALL_DIR}/bin/squishserver${CMAKE_EXECUTABLE_SUFFIX} DOC "The ${SQUISH_SERVER_EXECUTABLE_STRING}")
+  endif()
+
+else()
+  set(SQUISH_INSTALL_DIR_FOUND 0)
+endif()
+
+
+set(SQUISH_VERSION)
+set(SQUISH_VERSION_MAJOR)
+set(SQUISH_VERSION_MINOR)
+set(SQUISH_VERSION_PATCH)
+
+# record if executables are set
+if(SQUISH_CLIENT_EXECUTABLE)
+  set(SQUISH_CLIENT_EXECUTABLE_FOUND 1)
+  execute_process(COMMAND "${SQUISH_CLIENT_EXECUTABLE}" --version
+                  OUTPUT_VARIABLE _squishVersionOutput
+                  ERROR_QUIET )
+  if("${_squishVersionOutput}" MATCHES "([0-9]+)\\.([0-9]+)\\.([0-9]+)")
+    set(SQUISH_VERSION_MAJOR "${CMAKE_MATCH_1}")
+    set(SQUISH_VERSION_MINOR "${CMAKE_MATCH_2}")
+    set(SQUISH_VERSION_PATCH "${CMAKE_MATCH_3}")
+    set(SQUISH_VERSION "${SQUISH_VERSION_MAJOR}.${SQUISH_VERSION_MINOR}.${SQUISH_VERSION_PATCH}" )
+  endif()
+else()
+  set(SQUISH_CLIENT_EXECUTABLE_FOUND 0)
+endif()
+
+if(SQUISH_SERVER_EXECUTABLE)
+  set(SQUISH_SERVER_EXECUTABLE_FOUND 1)
+else()
+  set(SQUISH_SERVER_EXECUTABLE_FOUND 0)
+endif()
+
+# record if Squish was found
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(Squish  REQUIRED_VARS  SQUISH_INSTALL_DIR SQUISH_CLIENT_EXECUTABLE SQUISH_SERVER_EXECUTABLE
+                                          VERSION_VAR  SQUISH_VERSION )
+
+
+set(_SQUISH_MODULE_DIR "${CMAKE_CURRENT_LIST_DIR}")
+
+macro(squish_v3_add_test testName testAUT testCase envVars testWraper)
+  if("${SQUISH_VERSION_MAJOR}" STRGREATER "3")
+    message(STATUS "Using squish_v3_add_test(), but SQUISH_VERSION_MAJOR is ${SQUISH_VERSION_MAJOR}.\nThis may not work.")
+  endif()
+
+  add_test(${testName}
+    ${CMAKE_COMMAND} -V -VV
+    "-Dsquish_version:STRING=3"
+    "-Dsquish_aut:STRING=${testAUT}"
+    "-Dsquish_server_executable:STRING=${SQUISH_SERVER_EXECUTABLE}"
+    "-Dsquish_client_executable:STRING=${SQUISH_CLIENT_EXECUTABLE}"
+    "-Dsquish_libqtdir:STRING=${QT_LIBRARY_DIR}"
+    "-Dsquish_test_case:STRING=${testCase}"
+    "-Dsquish_env_vars:STRING=${envVars}"
+    "-Dsquish_wrapper:STRING=${testWraper}"
+    "-Dsquish_module_dir:STRING=${_SQUISH_MODULE_DIR}"
+    -P "${_SQUISH_MODULE_DIR}/SquishTestScript.cmake"
+    )
+  set_tests_properties(${testName}
+    PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED;ERROR;FATAL"
+    )
+endmacro()
+
+
+function(squish_v4_add_test testName)
+  if(NOT "${SQUISH_VERSION_MAJOR}" STRGREATER "3")
+    message(STATUS "Using squish_add_test(), but SQUISH_VERSION_MAJOR is ${SQUISH_VERSION_MAJOR}.\nThis may not work.")
+  endif()
+
+  set(oneValueArgs AUT SUITE TEST SETTINGSGROUP PRE_COMMAND POST_COMMAND)
+
+  cmake_parse_arguments(_SQUISH "" "${oneValueArgs}" "" ${ARGN} )
+
+  if(_SQUISH_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to SQUISH_ADD_TEST(): \"${_SQUISH_UNPARSED_ARGUMENTS}\"")
+  endif()
+
+  if(NOT _SQUISH_AUT)
+    message(FATAL_ERROR "Required argument AUT not given for SQUISH_ADD_TEST()")
+  endif()
+
+  if(NOT _SQUISH_SUITE)
+    message(FATAL_ERROR "Required argument SUITE not given for SQUISH_ADD_TEST()")
+  endif()
+
+  if(NOT _SQUISH_TEST)
+    message(FATAL_ERROR "Required argument TEST not given for SQUISH_ADD_TEST()")
+  endif()
+
+  get_filename_component(absTestSuite "${_SQUISH_SUITE}" ABSOLUTE)
+  if(NOT EXISTS "${absTestSuite}")
+    message(FATAL_ERROR "Could not find squish test suite ${_SQUISH_SUITE} (checked ${absTestSuite})")
+  endif()
+
+  set(absTestCase "${absTestSuite}/${_SQUISH_TEST}")
+  if(NOT EXISTS "${absTestCase}")
+    message(FATAL_ERROR "Could not find squish testcase ${_SQUISH_TEST} (checked ${absTestCase})")
+  endif()
+
+  if(_SQUISH_SETTINGSGROUP)
+    message("SETTINGSGROUP is deprecated and will be ignored.")
+  endif()
+
+  add_test(NAME ${testName}
+    COMMAND ${CMAKE_COMMAND} -V -VV
+    "-Dsquish_version:STRING=4"
+    "-Dsquish_aut:STRING=$<TARGET_FILE_BASE_NAME:${_SQUISH_AUT}>"
+    "-Dsquish_aut_dir:STRING=$<TARGET_FILE_DIR:${_SQUISH_AUT}>"
+    "-Dsquish_server_executable:STRING=${SQUISH_SERVER_EXECUTABLE}"
+    "-Dsquish_client_executable:STRING=${SQUISH_CLIENT_EXECUTABLE}"
+    "-Dsquish_libqtdir:STRING=${QT_LIBRARY_DIR}"
+    "-Dsquish_test_suite:STRING=${absTestSuite}"
+    "-Dsquish_test_case:STRING=${_SQUISH_TEST}"
+    "-Dsquish_env_vars:STRING=${envVars}"
+    "-Dsquish_wrapper:STRING=${testWraper}"
+    "-Dsquish_module_dir:STRING=${_SQUISH_MODULE_DIR}"
+    "-Dsquish_pre_command:STRING=${_SQUISH_PRE_COMMAND}"
+    "-Dsquish_post_command:STRING=${_SQUISH_POST_COMMAND}"
+    -P "${_SQUISH_MODULE_DIR}/SquishTestScript.cmake"
+    )
+  set_tests_properties(${testName}
+    PROPERTIES FAIL_REGULAR_EXPRESSION "FAIL;FAILED;ERROR;FATAL"
+    )
+endfunction()
+
+macro(squish_add_test)
+  if("${SQUISH_VERSION_MAJOR}" STRGREATER "3")
+    squish_v4_add_test(${ARGV})
+  else()
+    squish_v3_add_test(${ARGV})
+  endif()
+endmacro()
diff --git a/share/cmake-3.22/Modules/FindSubversion.cmake b/share/cmake-3.22/Modules/FindSubversion.cmake
new file mode 100644
index 0000000..7a9c440
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindSubversion.cmake
@@ -0,0 +1,169 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindSubversion
+--------------
+
+Extract information from a subversion working copy
+
+The module defines the following variables:
+
+::
+
+  Subversion_SVN_EXECUTABLE - path to svn command line client
+  Subversion_VERSION_SVN - version of svn command line client
+  Subversion_FOUND - true if the command line client was found
+  SUBVERSION_FOUND - same as Subversion_FOUND, set for compatibility reasons
+
+
+
+The minimum required version of Subversion can be specified using the
+standard syntax, e.g. ``find_package(Subversion 1.4)``.
+
+If the command line client executable is found two macros are defined:
+
+::
+
+  Subversion_WC_INFO(<dir> <var-prefix> [IGNORE_SVN_FAILURE])
+  Subversion_WC_LOG(<dir> <var-prefix>)
+
+``Subversion_WC_INFO`` extracts information of a subversion working copy at a
+given location.  This macro defines the following variables if running
+Subversion's ``info`` command on ``<dir>`` succeeds; otherwise a
+``SEND_ERROR`` message is generated.
+
+.. versionadded:: 3.13
+  The error can be ignored by providing the
+  ``IGNORE_SVN_FAILURE`` option, which causes these variables to remain
+  undefined.
+
+::
+
+  <var-prefix>_WC_URL - url of the repository (at <dir>)
+  <var-prefix>_WC_ROOT - root url of the repository
+  <var-prefix>_WC_REVISION - current revision
+  <var-prefix>_WC_LAST_CHANGED_AUTHOR - author of last commit
+  <var-prefix>_WC_LAST_CHANGED_DATE - date of last commit
+  <var-prefix>_WC_LAST_CHANGED_REV - revision of last commit
+  <var-prefix>_WC_INFO - output of command `svn info <dir>'
+
+``Subversion_WC_LOG`` retrieves the log message of the base revision of a
+subversion working copy at a given location.  This macro defines the variable:
+
+::
+
+  <var-prefix>_LAST_CHANGED_LOG - last log of base revision
+
+Example usage:
+
+::
+
+  find_package(Subversion)
+  if(SUBVERSION_FOUND)
+    Subversion_WC_INFO(${PROJECT_SOURCE_DIR} Project)
+    message("Current revision is ${Project_WC_REVISION}")
+    Subversion_WC_LOG(${PROJECT_SOURCE_DIR} Project)
+    message("Last changed log is ${Project_LAST_CHANGED_LOG}")
+  endif()
+#]=======================================================================]
+
+find_program(Subversion_SVN_EXECUTABLE svn
+  PATHS
+    [HKEY_LOCAL_MACHINE\\Software\\TortoiseSVN;Directory]/bin
+  DOC "subversion command line client")
+mark_as_advanced(Subversion_SVN_EXECUTABLE)
+
+if(Subversion_SVN_EXECUTABLE)
+  # the subversion commands should be executed with the C locale, otherwise
+  # the message (which are parsed) may be translated, Alex
+  set(_Subversion_SAVED_LC_ALL "$ENV{LC_ALL}")
+  set(ENV{LC_ALL} C)
+
+  execute_process(COMMAND ${Subversion_SVN_EXECUTABLE} --version
+    OUTPUT_VARIABLE Subversion_VERSION_SVN
+    ERROR_VARIABLE _Subversion_VERSION_STDERR
+    RESULT_VARIABLE _Subversion_VERSION_RESULT
+    OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+  # restore the previous LC_ALL
+  set(ENV{LC_ALL} ${_Subversion_SAVED_LC_ALL})
+
+  if(_Subversion_VERSION_RESULT EQUAL 0)
+    string(REGEX REPLACE "^(.*\n)?svn, version ([.0-9]+).*"
+      "\\2" Subversion_VERSION_SVN "${Subversion_VERSION_SVN}")
+  else()
+    unset(Subversion_VERSION_SVN)
+    if(_Subversion_VERSION_STDERR MATCHES "svn: error: The subversion command line tools are no longer provided by Xcode")
+      set(Subversion_SVN_EXECUTABLE Subversion_SVN_EXECUTABLE-NOTFOUND)
+    endif()
+  endif()
+
+  macro(Subversion_WC_INFO dir prefix)
+
+    cmake_parse_arguments(
+      "Subversion_WC_INFO"
+      "IGNORE_SVN_FAILURE"
+      "" ""
+      ${ARGN}
+    )
+
+    # the subversion commands should be executed with the C locale, otherwise
+    # the message (which are parsed) may be translated, Alex
+    set(_Subversion_SAVED_LC_ALL "$ENV{LC_ALL}")
+    set(ENV{LC_ALL} C)
+
+    execute_process(COMMAND ${Subversion_SVN_EXECUTABLE} info ${dir}
+      OUTPUT_VARIABLE ${prefix}_WC_INFO
+      ERROR_VARIABLE Subversion_svn_info_error
+      RESULT_VARIABLE Subversion_svn_info_result
+      OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+    if(${Subversion_svn_info_result} EQUAL 0)
+      string(REGEX REPLACE "^(.*\n)?URL: ([^\n]+).*"
+        "\\2" ${prefix}_WC_URL "${${prefix}_WC_INFO}")
+      string(REGEX REPLACE "^(.*\n)?Repository Root: ([^\n]+).*"
+        "\\2" ${prefix}_WC_ROOT "${${prefix}_WC_INFO}")
+      string(REGEX REPLACE "^(.*\n)?Revision: ([^\n]+).*"
+        "\\2" ${prefix}_WC_REVISION "${${prefix}_WC_INFO}")
+      string(REGEX REPLACE "^(.*\n)?Last Changed Author: ([^\n]+).*"
+        "\\2" ${prefix}_WC_LAST_CHANGED_AUTHOR "${${prefix}_WC_INFO}")
+      string(REGEX REPLACE "^(.*\n)?Last Changed Rev: ([^\n]+).*"
+        "\\2" ${prefix}_WC_LAST_CHANGED_REV "${${prefix}_WC_INFO}")
+      string(REGEX REPLACE "^(.*\n)?Last Changed Date: ([^\n]+).*"
+        "\\2" ${prefix}_WC_LAST_CHANGED_DATE "${${prefix}_WC_INFO}")
+    elseif(NOT Subversion_WC_INFO_IGNORE_SVN_FAILURE)
+      message(SEND_ERROR "Command \"${Subversion_SVN_EXECUTABLE} info ${dir}\" failed with output:\n${Subversion_svn_info_error}")
+    endif()
+
+    # restore the previous LC_ALL
+    set(ENV{LC_ALL} ${_Subversion_SAVED_LC_ALL})
+
+  endmacro()
+
+  macro(Subversion_WC_LOG dir prefix)
+    # This macro can block if the certificate is not signed:
+    # svn ask you to accept the certificate and wait for your answer
+    # This macro requires a svn server network access (Internet most of the time)
+    # and can also be slow since it access the svn server
+    execute_process(COMMAND
+      ${Subversion_SVN_EXECUTABLE} --non-interactive log -r BASE ${dir}
+      OUTPUT_VARIABLE ${prefix}_LAST_CHANGED_LOG
+      ERROR_VARIABLE Subversion_svn_log_error
+      RESULT_VARIABLE Subversion_svn_log_result
+      OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+    if(NOT ${Subversion_svn_log_result} EQUAL 0)
+      message(SEND_ERROR "Command \"${Subversion_SVN_EXECUTABLE} log -r BASE ${dir}\" failed with output:\n${Subversion_svn_log_error}")
+    endif()
+  endmacro()
+
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Subversion REQUIRED_VARS Subversion_SVN_EXECUTABLE
+                                             VERSION_VAR Subversion_VERSION_SVN )
+
+# for compatibility
+set(Subversion_FOUND ${SUBVERSION_FOUND})
+set(Subversion_SVN_FOUND ${SUBVERSION_FOUND})
diff --git a/share/cmake-3.22/Modules/FindTCL.cmake b/share/cmake-3.22/Modules/FindTCL.cmake
new file mode 100644
index 0000000..9b771dc
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindTCL.cmake
@@ -0,0 +1,247 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindTCL
+-------
+
+TK_INTERNAL_PATH was removed.
+
+This module finds if Tcl is installed and determines where the include
+files and libraries are.  It also determines what the name of the
+library is.  This code sets the following variables:
+
+::
+
+  TCL_FOUND              = Tcl was found
+  TK_FOUND               = Tk was found
+  TCLTK_FOUND            = Tcl and Tk were found
+  TCL_LIBRARY            = path to Tcl library (tcl tcl80)
+  TCL_INCLUDE_PATH       = path to where tcl.h can be found
+  TCL_TCLSH              = path to tclsh binary (tcl tcl80)
+  TK_LIBRARY             = path to Tk library (tk tk80 etc)
+  TK_INCLUDE_PATH        = path to where tk.h can be found
+  TK_WISH                = full path to the wish executable
+
+
+
+In an effort to remove some clutter and clear up some issues for
+people who are not necessarily Tcl/Tk gurus/developers, some
+variables were moved or removed.  Changes compared to CMake 2.4 are:
+
+::
+
+   => they were only useful for people writing Tcl/Tk extensions.
+   => these libs are not packaged by default with Tcl/Tk distributions.
+      Even when Tcl/Tk is built from source, several flavors of debug libs
+      are created and there is no real reason to pick a single one
+      specifically (say, amongst tcl84g, tcl84gs, or tcl84sgx).
+      Let's leave that choice to the user by allowing him to assign
+      TCL_LIBRARY to any Tcl library, debug or not.
+   => this ended up being only a Win32 variable, and there is a lot of
+      confusion regarding the location of this file in an installed Tcl/Tk
+      tree anyway (see 8.5 for example). If you need the internal path at
+      this point it is safer you ask directly where the *source* tree is
+      and dig from there.
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/CMakeFindFrameworks.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/FindTclsh.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/FindWish.cmake)
+
+if(TCLSH_VERSION_STRING)
+  set(TCL_TCLSH_VERSION "${TCLSH_VERSION_STRING}")
+else()
+  get_filename_component(TCL_TCLSH_PATH "${TCL_TCLSH}" PATH)
+  get_filename_component(TCL_TCLSH_PATH_PARENT "${TCL_TCLSH_PATH}" PATH)
+  string(REGEX REPLACE
+    "^.*tclsh([0-9]\\.*[0-9]).*$" "\\1" TCL_TCLSH_VERSION "${TCL_TCLSH}")
+endif()
+
+get_filename_component(TK_WISH_PATH "${TK_WISH}" PATH)
+get_filename_component(TK_WISH_PATH_PARENT "${TK_WISH_PATH}" PATH)
+string(REGEX REPLACE
+  "^.*wish([0-9]\\.*[0-9]).*$" "\\1" TK_WISH_VERSION "${TK_WISH}")
+
+get_filename_component(TCL_INCLUDE_PATH_PARENT "${TCL_INCLUDE_PATH}" PATH)
+get_filename_component(TK_INCLUDE_PATH_PARENT "${TK_INCLUDE_PATH}" PATH)
+
+get_filename_component(TCL_LIBRARY_PATH "${TCL_LIBRARY}" PATH)
+get_filename_component(TCL_LIBRARY_PATH_PARENT "${TCL_LIBRARY_PATH}" PATH)
+string(REGEX REPLACE
+  "^.*tcl([0-9]\\.*[0-9]).*$" "\\1" TCL_LIBRARY_VERSION "${TCL_LIBRARY}")
+
+get_filename_component(TK_LIBRARY_PATH "${TK_LIBRARY}" PATH)
+get_filename_component(TK_LIBRARY_PATH_PARENT "${TK_LIBRARY_PATH}" PATH)
+string(REGEX REPLACE
+  "^.*tk([0-9]\\.*[0-9]).*$" "\\1" TK_LIBRARY_VERSION "${TK_LIBRARY}")
+
+set(TCLTK_POSSIBLE_LIB_PATHS
+  "${TCL_INCLUDE_PATH_PARENT}/lib"
+  "${TK_INCLUDE_PATH_PARENT}/lib"
+  "${TCL_LIBRARY_PATH}"
+  "${TK_LIBRARY_PATH}"
+  "${TCL_TCLSH_PATH_PARENT}/lib"
+  "${TK_WISH_PATH_PARENT}/lib"
+)
+
+set(TCLTK_POSSIBLE_LIB_PATH_SUFFIXES
+  lib/tcl/tcl8.7
+  lib/tcl/tk8.7
+  lib/tcl/tcl8.6
+  lib/tcl/tk8.6
+  lib/tcl/tcl8.5
+  lib/tcl/tk8.5
+  lib/tcl/tcl8.4
+  lib/tcl/tk8.4
+)
+
+if(WIN32)
+  get_filename_component(
+    ActiveTcl_CurrentVersion
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl;CurrentVersion]"
+    NAME)
+  set(TCLTK_POSSIBLE_LIB_PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.4;Root]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.3;Root]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.2;Root]/lib"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/lib"
+    "$ENV{ProgramFiles}/Tcl/Lib"
+    "C:/Program Files/Tcl/lib"
+    "C:/Tcl/lib"
+    )
+endif()
+
+find_library(TCL_LIBRARY
+  NAMES
+  tcl
+  tcl${TCL_LIBRARY_VERSION} tcl${TCL_TCLSH_VERSION} tcl${TK_WISH_VERSION}
+  tcl87 tcl8.7 tcl87t tcl8.7t
+  tcl86 tcl8.6 tcl86t tcl8.6t
+  tcl85 tcl8.5
+  tcl84 tcl8.4
+  tcl83 tcl8.3
+  tcl82 tcl8.2
+  tcl80 tcl8.0
+  PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
+  PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
+  )
+
+find_library(TK_LIBRARY
+  NAMES
+  tk
+  tk${TK_LIBRARY_VERSION} tk${TCL_TCLSH_VERSION} tk${TK_WISH_VERSION}
+  tk87 tk8.7 tk87t tk8.7t
+  tk86 tk8.6 tk86t tk8.6t
+  tk85 tk8.5
+  tk84 tk8.4
+  tk83 tk8.3
+  tk82 tk8.2
+  tk80 tk8.0
+  PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
+  PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
+  )
+
+CMAKE_FIND_FRAMEWORKS(Tcl)
+CMAKE_FIND_FRAMEWORKS(Tk)
+
+set(TCL_FRAMEWORK_INCLUDES)
+if(Tcl_FRAMEWORKS)
+  if(NOT TCL_INCLUDE_PATH)
+    foreach(dir ${Tcl_FRAMEWORKS})
+      set(TCL_FRAMEWORK_INCLUDES ${TCL_FRAMEWORK_INCLUDES} ${dir}/Headers)
+    endforeach()
+  endif()
+endif()
+
+set(TK_FRAMEWORK_INCLUDES)
+if(Tk_FRAMEWORKS)
+  if(NOT TK_INCLUDE_PATH)
+    foreach(dir ${Tk_FRAMEWORKS})
+      set(TK_FRAMEWORK_INCLUDES ${TK_FRAMEWORK_INCLUDES}
+        ${dir}/Headers ${dir}/PrivateHeaders)
+    endforeach()
+  endif()
+endif()
+
+set(TCLTK_POSSIBLE_INCLUDE_PATHS
+  "${TCL_LIBRARY_PATH_PARENT}/include"
+  "${TK_LIBRARY_PATH_PARENT}/include"
+  "${TCL_INCLUDE_PATH}"
+  "${TK_INCLUDE_PATH}"
+  ${TCL_FRAMEWORK_INCLUDES}
+  ${TK_FRAMEWORK_INCLUDES}
+  "${TCL_TCLSH_PATH_PARENT}/include"
+  "${TK_WISH_PATH_PARENT}/include"
+  )
+
+set(TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES
+  include/tcl${TK_LIBRARY_VERSION}
+  include/tcl${TCL_LIBRARY_VERSION}
+  include/tcl8.7
+  include/tk8.7
+  include/tcl8.6
+  include/tk8.6
+  include/tcl8.5
+  include/tk8.5
+  include/tcl8.4
+  include/tk8.4
+  include/tcl8.3
+  include/tcl8.2
+  include/tcl8.0
+  )
+
+if(WIN32)
+  set(TCLTK_POSSIBLE_INCLUDE_PATHS ${TCLTK_POSSIBLE_INCLUDE_PATHS}
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.4;Root]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.3;Root]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.2;Root]/include"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/include"
+    "$ENV{ProgramFiles}/Tcl/include"
+    "C:/Program Files/Tcl/include"
+    "C:/Tcl/include"
+    )
+endif()
+
+find_path(TCL_INCLUDE_PATH
+  NAMES tcl.h
+  HINTS ${TCLTK_POSSIBLE_INCLUDE_PATHS}
+  PATH_SUFFIXES ${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
+  )
+
+find_path(TK_INCLUDE_PATH
+  NAMES tk.h
+  HINTS ${TCLTK_POSSIBLE_INCLUDE_PATHS}
+  PATH_SUFFIXES ${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
+  )
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+if (CMAKE_FIND_PACKAGE_NAME STREQUAL "TclStub")
+  # FindTclStub include()'s this module. It's an old pattern, but rather than
+  # trying to suppress this from outside the module (which is then sensitive to
+  # the contents, detect the case in this module and suppress it explicitly.
+  set(FPHSA_NAME_MISMATCHED 1)
+endif ()
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(TCL DEFAULT_MSG TCL_LIBRARY TCL_INCLUDE_PATH)
+set(FPHSA_NAME_MISMATCHED 1)
+set(TCLTK_FIND_REQUIRED ${TCL_FIND_REQUIRED})
+set(TCLTK_FIND_QUIETLY  ${TCL_FIND_QUIETLY})
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(TCLTK DEFAULT_MSG TCL_LIBRARY TCL_INCLUDE_PATH TK_LIBRARY TK_INCLUDE_PATH)
+set(TK_FIND_REQUIRED ${TCL_FIND_REQUIRED})
+set(TK_FIND_QUIETLY  ${TCL_FIND_QUIETLY})
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(TK DEFAULT_MSG TK_LIBRARY TK_INCLUDE_PATH)
+unset(FPHSA_NAME_MISMATCHED)
+
+mark_as_advanced(
+  TCL_INCLUDE_PATH
+  TK_INCLUDE_PATH
+  TCL_LIBRARY
+  TK_LIBRARY
+  )
diff --git a/share/cmake-3.22/Modules/FindTIFF.cmake b/share/cmake-3.22/Modules/FindTIFF.cmake
new file mode 100644
index 0000000..ed2657c
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindTIFF.cmake
@@ -0,0 +1,200 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindTIFF
+--------
+
+Find the TIFF library (``libtiff``, https://libtiff.gitlab.io/libtiff/).
+
+Optional COMPONENTS
+^^^^^^^^^^^^^^^^^^^
+
+This module supports the optional component `CXX`, for use with the COMPONENTS
+argument of the :command:`find_package` command. This component has an associated
+imported target, as described below.
+
+Imported targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.5
+
+This module defines the following :prop_tgt:`IMPORTED` targets:
+
+``TIFF::TIFF``
+  The TIFF library, if found.
+
+``TIFF::CXX``
+  .. versionadded:: 3.19
+
+  The C++ wrapper libtiffxx, if requested by the `COMPONENTS CXX` option,
+  if the compiler is not MSVC (which includes the C++ wrapper in libtiff),
+  and if found.
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``TIFF_FOUND``
+  true if the TIFF headers and libraries were found
+``TIFF_INCLUDE_DIR``
+  the directory containing the TIFF headers
+``TIFF_INCLUDE_DIRS``
+  the directory containing the TIFF headers
+``TIFF_LIBRARIES``
+  TIFF libraries to be linked
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set:
+
+``TIFF_INCLUDE_DIR``
+  the directory containing the TIFF headers
+``TIFF_LIBRARY_RELEASE``
+  the path to the TIFF library for release configurations
+``TIFF_LIBRARY_DEBUG``
+  the path to the TIFF library for debug configurations
+``TIFFXX_LIBRARY_RELEASE``
+  the path to the TIFFXX library for release configurations
+``TIFFXX_LIBRARY_DEBUG``
+  the path to the TIFFXX library for debug configurations
+
+.. versionadded:: 3.4
+  Debug and Release variants are found separately.
+#]=======================================================================]
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW)
+
+find_path(TIFF_INCLUDE_DIR tiff.h)
+
+set(TIFF_NAMES ${TIFF_NAMES} tiff libtiff tiff3 libtiff3)
+foreach(name ${TIFF_NAMES})
+  list(APPEND TIFF_NAMES_DEBUG "${name}d")
+endforeach()
+
+if(NOT TIFF_LIBRARY)
+  find_library(TIFF_LIBRARY_RELEASE NAMES ${TIFF_NAMES})
+  find_library(TIFF_LIBRARY_DEBUG NAMES ${TIFF_NAMES_DEBUG})
+  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+  select_library_configurations(TIFF)
+  mark_as_advanced(TIFF_LIBRARY_RELEASE TIFF_LIBRARY_DEBUG)
+endif()
+
+if(TIFF_INCLUDE_DIR AND EXISTS "${TIFF_INCLUDE_DIR}/tiffvers.h")
+    file(STRINGS "${TIFF_INCLUDE_DIR}/tiffvers.h" tiff_version_str
+         REGEX "^#define[\t ]+TIFFLIB_VERSION_STR[\t ]+\"LIBTIFF, Version .*")
+
+    string(REGEX REPLACE "^#define[\t ]+TIFFLIB_VERSION_STR[\t ]+\"LIBTIFF, Version +([^ \\n]*).*"
+           "\\1" TIFF_VERSION_STRING "${tiff_version_str}")
+    unset(tiff_version_str)
+endif()
+
+foreach(_comp IN LISTS TIFF_FIND_COMPONENTS)
+  if(_comp STREQUAL "CXX")
+    if(MSVC)
+      # C++ bindings are built into the main tiff library.
+      set(TIFF_CXX_FOUND 1)
+    else()
+      foreach(name ${TIFF_NAMES})
+        list(APPEND TIFFXX_NAMES "${name}xx")
+        list(APPEND TIFFXX_NAMES_DEBUG "${name}xxd")
+      endforeach()
+      find_library(TIFFXX_LIBRARY_RELEASE NAMES ${TIFFXX_NAMES})
+      find_library(TIFFXX_LIBRARY_DEBUG NAMES ${TIFFXX_NAMES_DEBUG})
+      include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+      select_library_configurations(TIFFXX)
+      mark_as_advanced(TIFFXX_LIBRARY_RELEASE TIFFXX_LIBRARY_DEBUG)
+      unset(TIFFXX_NAMES)
+      unset(TIFFXX_NAMES_DEBUG)
+      if(TIFFXX_LIBRARY)
+        set(TIFF_CXX_FOUND 1)
+      endif()
+    endif()
+  endif()
+endforeach()
+unset(_comp)
+
+unset(TIFF_NAMES)
+unset(TIFF_NAMES_DEBUG)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(TIFF
+                                  HANDLE_COMPONENTS
+                                  REQUIRED_VARS TIFF_LIBRARY TIFF_INCLUDE_DIR
+                                  VERSION_VAR TIFF_VERSION_STRING)
+
+if(TIFF_FOUND)
+  set(TIFF_LIBRARIES ${TIFF_LIBRARY})
+  if("CXX" IN_LIST TIFF_FIND_COMPONENTS AND NOT MSVC)
+    list(APPEND TIFF_LIBRARIES ${TIFFXX_LIBRARY})
+  endif()
+
+  set(TIFF_INCLUDE_DIRS "${TIFF_INCLUDE_DIR}")
+
+  if(NOT TARGET TIFF::TIFF)
+    add_library(TIFF::TIFF UNKNOWN IMPORTED)
+    if(TIFF_INCLUDE_DIRS)
+      set_target_properties(TIFF::TIFF PROPERTIES
+        INTERFACE_INCLUDE_DIRECTORIES "${TIFF_INCLUDE_DIRS}")
+    endif()
+    if(EXISTS "${TIFF_LIBRARY}")
+      set_target_properties(TIFF::TIFF PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+        IMPORTED_LOCATION "${TIFF_LIBRARY}")
+    endif()
+    if(EXISTS "${TIFF_LIBRARY_RELEASE}")
+      set_property(TARGET TIFF::TIFF APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS RELEASE)
+      set_target_properties(TIFF::TIFF PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
+        IMPORTED_LOCATION_RELEASE "${TIFF_LIBRARY_RELEASE}")
+    endif()
+    if(EXISTS "${TIFF_LIBRARY_DEBUG}")
+      set_property(TARGET TIFF::TIFF APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS DEBUG)
+      set_target_properties(TIFF::TIFF PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
+        IMPORTED_LOCATION_DEBUG "${TIFF_LIBRARY_DEBUG}")
+    endif()
+  endif()
+
+  if(NOT TARGET TIFF::CXX)
+    if(MSVC)
+      add_library(TIFF::CXX INTERFACE IMPORTED)
+      set_property(TARGET TIFF::CXX PROPERTY INTERFACE_LINK_LIBRARIES TIFF::TIFF)
+    else()
+      add_library(TIFF::CXX UNKNOWN IMPORTED)
+      set_property(TARGET TIFF::CXX PROPERTY INTERFACE_LINK_LIBRARIES TIFF::TIFF)
+      if(TIFF_INCLUDE_DIRS)
+        set_target_properties(TIFF::CXX PROPERTIES
+          INTERFACE_INCLUDE_DIRECTORIES "${TIFF_INCLUDE_DIRS}")
+      endif()
+      if(EXISTS "${TIFFXX_LIBRARY}")
+        set_target_properties(TIFF::CXX PROPERTIES
+          IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+          IMPORTED_LOCATION "${TIFFXX_LIBRARY}")
+      endif()
+      if(EXISTS "${TIFFXX_LIBRARY_RELEASE}")
+        set_property(TARGET TIFF::CXX APPEND PROPERTY
+          IMPORTED_CONFIGURATIONS RELEASE)
+        set_target_properties(TIFF::CXX PROPERTIES
+          IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
+          IMPORTED_LOCATION_RELEASE "${TIFFXX_LIBRARY_RELEASE}")
+      endif()
+      if(EXISTS "${TIFFXX_LIBRARY_DEBUG}")
+        set_property(TARGET TIFF::CXX APPEND PROPERTY
+          IMPORTED_CONFIGURATIONS DEBUG)
+        set_target_properties(TIFF::CXX PROPERTIES
+          IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
+          IMPORTED_LOCATION_DEBUG "${TIFFXX_LIBRARY_DEBUG}")
+      endif()
+    endif()
+  endif()
+
+endif()
+
+mark_as_advanced(TIFF_INCLUDE_DIR)
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FindTclStub.cmake b/share/cmake-3.22/Modules/FindTclStub.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindTclStub.cmake
rename to share/cmake-3.22/Modules/FindTclStub.cmake
diff --git a/share/cmake-3.22/Modules/FindTclsh.cmake b/share/cmake-3.22/Modules/FindTclsh.cmake
new file mode 100644
index 0000000..594d0ec
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindTclsh.cmake
@@ -0,0 +1,101 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindTclsh
+---------
+
+Find tclsh
+
+This module finds if TCL is installed and determines where the include
+files and libraries are.  It also determines what the name of the
+library is.  This code sets the following variables:
+
+::
+
+  TCLSH_FOUND = TRUE if tclsh has been found
+  TCL_TCLSH = the path to the tclsh executable
+#]=======================================================================]
+
+get_filename_component(TK_WISH_PATH "${TK_WISH}" PATH)
+get_filename_component(TK_WISH_PATH_PARENT "${TK_WISH_PATH}" PATH)
+string(REGEX REPLACE
+  "^.*wish([0-9]\\.*[0-9]).*$" "\\1" TK_WISH_VERSION "${TK_WISH}")
+
+get_filename_component(TCL_INCLUDE_PATH_PARENT "${TCL_INCLUDE_PATH}" PATH)
+get_filename_component(TK_INCLUDE_PATH_PARENT "${TK_INCLUDE_PATH}" PATH)
+
+get_filename_component(TCL_LIBRARY_PATH "${TCL_LIBRARY}" PATH)
+get_filename_component(TCL_LIBRARY_PATH_PARENT "${TCL_LIBRARY_PATH}" PATH)
+string(REGEX REPLACE
+  "^.*tcl([0-9]\\.*[0-9]).*$" "\\1" TCL_LIBRARY_VERSION "${TCL_LIBRARY}")
+
+get_filename_component(TK_LIBRARY_PATH "${TK_LIBRARY}" PATH)
+get_filename_component(TK_LIBRARY_PATH_PARENT "${TK_LIBRARY_PATH}" PATH)
+string(REGEX REPLACE
+  "^.*tk([0-9]\\.*[0-9]).*$" "\\1" TK_LIBRARY_VERSION "${TK_LIBRARY}")
+
+set(TCLTK_POSSIBLE_BIN_PATHS
+  "${TCL_INCLUDE_PATH_PARENT}/bin"
+  "${TK_INCLUDE_PATH_PARENT}/bin"
+  "${TCL_LIBRARY_PATH_PARENT}/bin"
+  "${TK_LIBRARY_PATH_PARENT}/bin"
+  "${TK_WISH_PATH_PARENT}/bin"
+  )
+
+if(WIN32)
+  get_filename_component(
+    ActiveTcl_CurrentVersion
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl;CurrentVersion]"
+    NAME)
+  set(TCLTK_POSSIBLE_BIN_PATHS ${TCLTK_POSSIBLE_BIN_PATHS}
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.4;Root]/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.3;Root]/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.2;Root]/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/bin"
+    )
+endif()
+
+set(TCL_TCLSH_NAMES
+  tclsh
+  tclsh${TCL_LIBRARY_VERSION} tclsh${TK_LIBRARY_VERSION} tclsh${TK_WISH_VERSION}
+  tclsh87 tclsh8.7
+  tclsh86 tclsh8.6
+  tclsh85 tclsh8.5
+  tclsh84 tclsh8.4
+  tclsh83 tclsh8.3
+  tclsh82 tclsh8.2
+  tclsh80 tclsh8.0
+  )
+
+find_program(TCL_TCLSH
+  NAMES ${TCL_TCLSH_NAMES}
+  HINTS ${TCLTK_POSSIBLE_BIN_PATHS}
+  )
+
+if(TCL_TCLSH)
+  execute_process(COMMAND "${CMAKE_COMMAND}" -E echo puts "\$tcl_version"
+                  COMMAND "${TCL_TCLSH}"
+                  OUTPUT_VARIABLE TCLSH_VERSION_STRING
+                  ERROR_QUIET
+                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+if (CMAKE_FIND_PACKAGE_NAME STREQUAL "TCL" OR
+    CMAKE_FIND_PACKAGE_NAME STREQUAL "TclStub")
+  # FindTCL include()'s this module. It's an old pattern, but rather than
+  # trying to suppress this from outside the module (which is then sensitive to
+  # the contents, detect the case in this module and suppress it explicitly.
+  # Transitively, FindTclStub includes FindTCL.
+  set(FPHSA_NAME_MISMATCHED 1)
+endif ()
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Tclsh
+                                  REQUIRED_VARS TCL_TCLSH
+                                  VERSION_VAR TCLSH_VERSION_STRING)
+unset(FPHSA_NAME_MISMATCHED)
+
+mark_as_advanced(TCL_TCLSH)
diff --git a/share/cmake-3.22/Modules/FindThreads.cmake b/share/cmake-3.22/Modules/FindThreads.cmake
new file mode 100644
index 0000000..e4d6cf3
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindThreads.cmake
@@ -0,0 +1,258 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindThreads
+-----------
+
+This module determines the thread library of the system.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.1
+
+This module defines the following :prop_tgt:`IMPORTED` target:
+
+``Threads::Threads``
+  The thread library, if found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+The following variables are set:
+
+``Threads_FOUND``
+  If a supported thread library was found.
+``CMAKE_THREAD_LIBS_INIT``
+  The thread library to use. This may be empty if the thread functions
+  are provided by the system libraries and no special flags are needed
+  to use them.
+``CMAKE_USE_WIN32_THREADS_INIT``
+  If the found thread library is the win32 one.
+``CMAKE_USE_PTHREADS_INIT``
+  If the found thread library is pthread compatible.
+``CMAKE_HP_PTHREADS_INIT``
+  If the found thread library is the HP thread library.
+
+Variables Affecting Behavior
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. variable:: THREADS_PREFER_PTHREAD_FLAG
+
+  .. versionadded:: 3.1
+
+  If the use of the -pthread compiler and linker flag is preferred then
+  the caller can set this variable to TRUE. The compiler flag can only be
+  used with the imported target. Use of both the imported target as well
+  as this switch is highly recommended for new code.
+
+  This variable has no effect if the system libraries provide the
+  thread functions, i.e. when ``CMAKE_THREAD_LIBS_INIT`` will be empty.
+#]=======================================================================]
+
+include (CheckLibraryExists)
+set(Threads_FOUND FALSE)
+set(CMAKE_REQUIRED_QUIET_SAVE ${CMAKE_REQUIRED_QUIET})
+set(CMAKE_REQUIRED_QUIET ${Threads_FIND_QUIETLY})
+
+if(CMAKE_C_COMPILER_LOADED)
+  include (CheckIncludeFile)
+  include (CheckCSourceCompiles)
+elseif(CMAKE_CXX_COMPILER_LOADED)
+  include (CheckIncludeFileCXX)
+  include (CheckCXXSourceCompiles)
+else()
+  message(FATAL_ERROR "FindThreads only works if either C or CXX language is enabled")
+endif()
+
+# simple pthread test code
+set(PTHREAD_C_CXX_TEST_SOURCE [====[
+#include <pthread.h>
+
+static void* test_func(void* data)
+{
+  return data;
+}
+
+int main(void)
+{
+  pthread_t thread;
+  pthread_create(&thread, NULL, test_func, NULL);
+  pthread_detach(thread);
+  pthread_cancel(thread);
+  pthread_join(thread, NULL);
+  pthread_atfork(NULL, NULL, NULL);
+  pthread_exit(NULL);
+
+  return 0;
+}
+]====])
+
+# Internal helper macro.
+# Do NOT even think about using it outside of this file!
+macro(_check_threads_lib LIBNAME FUNCNAME VARNAME)
+  if(NOT Threads_FOUND)
+     CHECK_LIBRARY_EXISTS(${LIBNAME} ${FUNCNAME} "" ${VARNAME})
+     if(${VARNAME})
+       set(CMAKE_THREAD_LIBS_INIT "-l${LIBNAME}")
+       set(CMAKE_HAVE_THREADS_LIBRARY 1)
+       set(Threads_FOUND TRUE)
+     endif()
+  endif ()
+endmacro()
+
+# Internal helper macro.
+# Do NOT even think about using it outside of this file!
+macro(_check_pthreads_flag)
+  if(NOT Threads_FOUND)
+    # If we did not find -lpthreads, -lpthread, or -lthread, look for -pthread
+    if(NOT DEFINED THREADS_HAVE_PTHREAD_ARG)
+      message(CHECK_START "Check if compiler accepts -pthread")
+      if(CMAKE_C_COMPILER_LOADED)
+        set(_threads_src ${CMAKE_CURRENT_LIST_DIR}/CheckForPthreads.c)
+      elseif(CMAKE_CXX_COMPILER_LOADED)
+        set(_threads_src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindThreads/CheckForPthreads.cxx)
+        configure_file(${CMAKE_CURRENT_LIST_DIR}/CheckForPthreads.c "${_threads_src}" COPYONLY)
+      endif()
+      try_compile(THREADS_HAVE_PTHREAD_ARG
+        ${CMAKE_BINARY_DIR}
+        ${_threads_src}
+        CMAKE_FLAGS -DLINK_LIBRARIES:STRING=-pthread
+        OUTPUT_VARIABLE _cmake_check_pthreads_output)
+
+      string(APPEND _cmake_find_threads_output "${_cmake_check_pthreads_output}")
+      unset(_cmake_check_pthreads_output)
+      unset(_threads_src)
+
+      if(THREADS_HAVE_PTHREAD_ARG)
+        set(Threads_FOUND TRUE)
+        message(CHECK_PASS "yes")
+      else()
+        message(CHECK_FAIL "no")
+      endif()
+
+    endif()
+
+    if(THREADS_HAVE_PTHREAD_ARG)
+      set(Threads_FOUND TRUE)
+      set(CMAKE_THREAD_LIBS_INIT "-pthread")
+    endif()
+  endif()
+endmacro()
+
+# Do we have pthreads?
+if(CMAKE_C_COMPILER_LOADED)
+  CHECK_INCLUDE_FILE("pthread.h" CMAKE_HAVE_PTHREAD_H)
+else()
+  CHECK_INCLUDE_FILE_CXX("pthread.h" CMAKE_HAVE_PTHREAD_H)
+endif()
+
+if(CMAKE_HAVE_PTHREAD_H)
+  #
+  # We have pthread.h
+  # Let's check for the library now.
+  #
+  set(CMAKE_HAVE_THREADS_LIBRARY)
+  if(NOT THREADS_HAVE_PTHREAD_ARG)
+    # Check if pthread functions are in normal C library.
+    # We list some pthread functions in PTHREAD_C_CXX_TEST_SOURCE test code.
+    # If the pthread functions already exist in C library, we could just use
+    # them instead of linking to the additional pthread library.
+    if(CMAKE_C_COMPILER_LOADED)
+      CHECK_C_SOURCE_COMPILES("${PTHREAD_C_CXX_TEST_SOURCE}" CMAKE_HAVE_LIBC_PTHREAD)
+    elseif(CMAKE_CXX_COMPILER_LOADED)
+      CHECK_CXX_SOURCE_COMPILES("${PTHREAD_C_CXX_TEST_SOURCE}" CMAKE_HAVE_LIBC_PTHREAD)
+    endif()
+    if(CMAKE_HAVE_LIBC_PTHREAD)
+      set(CMAKE_THREAD_LIBS_INIT "")
+      set(CMAKE_HAVE_THREADS_LIBRARY 1)
+      set(Threads_FOUND TRUE)
+    else()
+      # Check for -pthread first if enabled. This is the recommended
+      # way, but not backwards compatible as one must also pass -pthread
+      # as compiler flag then.
+      if (THREADS_PREFER_PTHREAD_FLAG)
+         _check_pthreads_flag()
+      endif ()
+
+      if(CMAKE_SYSTEM MATCHES "GHS-MULTI")
+        _check_threads_lib(posix pthread_create CMAKE_HAVE_PTHREADS_CREATE)
+      endif()
+      _check_threads_lib(pthreads pthread_create CMAKE_HAVE_PTHREADS_CREATE)
+      _check_threads_lib(pthread  pthread_create CMAKE_HAVE_PTHREAD_CREATE)
+      if(CMAKE_SYSTEM_NAME MATCHES "SunOS")
+          # On sun also check for -lthread
+          _check_threads_lib(thread thr_create CMAKE_HAVE_THR_CREATE)
+      endif()
+    endif()
+  endif()
+
+  _check_pthreads_flag()
+endif()
+
+if(CMAKE_THREAD_LIBS_INIT OR CMAKE_HAVE_LIBC_PTHREAD)
+  set(CMAKE_USE_PTHREADS_INIT 1)
+  set(Threads_FOUND TRUE)
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Windows")
+  set(CMAKE_USE_WIN32_THREADS_INIT 1)
+  set(Threads_FOUND TRUE)
+endif()
+
+if(CMAKE_USE_PTHREADS_INIT)
+  if(CMAKE_SYSTEM_NAME MATCHES "HP-UX")
+    # Use libcma if it exists and can be used.  It provides more
+    # symbols than the plain pthread library.  CMA threads
+    # have actually been deprecated:
+    #   http://docs.hp.com/en/B3920-90091/ch12s03.html#d0e11395
+    #   http://docs.hp.com/en/947/d8.html
+    # but we need to maintain compatibility here.
+    # The CMAKE_HP_PTHREADS setting actually indicates whether CMA threads
+    # are available.
+    CHECK_LIBRARY_EXISTS(cma pthread_attr_create "" CMAKE_HAVE_HP_CMA)
+    if(CMAKE_HAVE_HP_CMA)
+      set(CMAKE_THREAD_LIBS_INIT "-lcma")
+      set(CMAKE_HP_PTHREADS_INIT 1)
+      set(Threads_FOUND TRUE)
+    endif()
+    set(CMAKE_USE_PTHREADS_INIT 1)
+  endif()
+
+  if(CMAKE_SYSTEM MATCHES "OSF1-V")
+    set(CMAKE_USE_PTHREADS_INIT 0)
+    set(CMAKE_THREAD_LIBS_INIT )
+  endif()
+
+  if(CMAKE_SYSTEM MATCHES "CYGWIN_NT" OR CMAKE_SYSTEM MATCHES "MSYS_NT")
+    set(CMAKE_USE_PTHREADS_INIT 1)
+    set(Threads_FOUND TRUE)
+    set(CMAKE_THREAD_LIBS_INIT )
+    set(CMAKE_USE_WIN32_THREADS_INIT 0)
+  endif()
+endif()
+
+set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE})
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Threads DEFAULT_MSG Threads_FOUND)
+
+if(THREADS_FOUND AND NOT TARGET Threads::Threads)
+  add_library(Threads::Threads INTERFACE IMPORTED)
+
+  if(THREADS_HAVE_PTHREAD_ARG)
+    set_property(TARGET Threads::Threads
+                 PROPERTY INTERFACE_COMPILE_OPTIONS "$<$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>:SHELL:-Xcompiler -pthread>"
+                                                    "$<$<NOT:$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>>:-pthread>")
+  endif()
+
+  if(CMAKE_THREAD_LIBS_INIT)
+    set_property(TARGET Threads::Threads PROPERTY INTERFACE_LINK_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
+  endif()
+elseif(NOT THREADS_FOUND AND _cmake_find_threads_output)
+  file(APPEND
+    ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+    "Determining if compiler accepts -pthread failed with the following output:\n${_cmake_find_threads_output}\n\n")
+endif()
+
+unset(_cmake_find_threads_output)
diff --git a/share/cmake-3.22/Modules/FindUnixCommands.cmake b/share/cmake-3.22/Modules/FindUnixCommands.cmake
new file mode 100644
index 0000000..97739fa
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindUnixCommands.cmake
@@ -0,0 +1,78 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindUnixCommands
+----------------
+
+Find Unix commands, including the ones from Cygwin
+
+This module looks for the Unix commands ``bash``, ``cp``, ``gzip``,
+``mv``, ``rm``, and ``tar`` and stores the result in the variables
+``BASH``, ``CP``, ``GZIP``, ``MV``, ``RM``, and ``TAR``.
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/FindMsys.cmake)
+
+find_program(BASH
+  bash
+  ${CYGWIN_INSTALL_PATH}/bin
+  ${MSYS_INSTALL_PATH}/usr/bin
+)
+mark_as_advanced(
+  BASH
+)
+
+find_program(CP
+  cp
+  ${CYGWIN_INSTALL_PATH}/bin
+  ${MSYS_INSTALL_PATH}/usr/bin
+)
+mark_as_advanced(
+  CP
+)
+
+find_program(GZIP
+  gzip
+  ${CYGWIN_INSTALL_PATH}/bin
+  ${MSYS_INSTALL_PATH}/usr/bin
+)
+mark_as_advanced(
+  GZIP
+)
+
+find_program(MV
+  mv
+  ${CYGWIN_INSTALL_PATH}/bin
+  ${MSYS_INSTALL_PATH}/usr/bin
+)
+mark_as_advanced(
+  MV
+)
+
+find_program(RM
+  rm
+  ${CYGWIN_INSTALL_PATH}/bin
+  ${MSYS_INSTALL_PATH}/usr/bin
+)
+mark_as_advanced(
+  RM
+)
+
+find_program(TAR
+  NAMES
+  tar
+  gtar
+  PATH
+  ${CYGWIN_INSTALL_PATH}/bin
+  ${MSYS_INSTALL_PATH}/usr/bin
+)
+mark_as_advanced(
+  TAR
+)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(UnixCommands
+  REQUIRED_VARS BASH CP GZIP MV RM TAR
+)
diff --git a/share/cmake-3.22/Modules/FindVulkan.cmake b/share/cmake-3.22/Modules/FindVulkan.cmake
new file mode 100644
index 0000000..4f48e13
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindVulkan.cmake
@@ -0,0 +1,157 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindVulkan
+----------
+
+.. versionadded:: 3.7
+
+Find Vulkan, which is a low-overhead, cross-platform 3D graphics
+and computing API.
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+This module defines :prop_tgt:`IMPORTED` targets if Vulkan has been found:
+
+``Vulkan::Vulkan``
+  The main Vulkan library.
+
+``Vulkan::glslc``
+  .. versionadded:: 3.19
+
+  The GLSLC SPIR-V compiler, if it has been found.
+
+``Vulkan::Headers``
+  .. versionadded:: 3.21
+
+  Provides just Vulkan headers include paths, if found.  No library is
+  included in this target.  This can be useful for applications that
+  load Vulkan library dynamically.
+
+``Vulkan::glslangValidator``
+  .. versionadded:: 3.21
+
+  The glslangValidator tool, if found.  It is used to compile GLSL and
+  HLSL shaders into SPIR-V.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module defines the following variables::
+
+  Vulkan_FOUND          - "True" if Vulkan was found
+  Vulkan_INCLUDE_DIRS   - include directories for Vulkan
+  Vulkan_LIBRARIES      - link against this library to use Vulkan
+
+The module will also define three cache variables::
+
+  Vulkan_INCLUDE_DIR        - the Vulkan include directory
+  Vulkan_LIBRARY            - the path to the Vulkan library
+  Vulkan_GLSLC_EXECUTABLE   - the path to the GLSL SPIR-V compiler
+  Vulkan_GLSLANG_VALIDATOR_EXECUTABLE - the path to the glslangValidator tool
+
+Hints
+^^^^^
+
+.. versionadded:: 3.18
+
+The ``VULKAN_SDK`` environment variable optionally specifies the
+location of the Vulkan SDK root directory for the given
+architecture. It is typically set by sourcing the toplevel
+``setup-env.sh`` script of the Vulkan SDK directory into the shell
+environment.
+
+#]=======================================================================]
+
+if(WIN32)
+  find_path(Vulkan_INCLUDE_DIR
+    NAMES vulkan/vulkan.h
+    HINTS
+      "$ENV{VULKAN_SDK}/Include"
+    )
+
+  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+    find_library(Vulkan_LIBRARY
+      NAMES vulkan-1
+      HINTS
+        "$ENV{VULKAN_SDK}/Lib"
+        "$ENV{VULKAN_SDK}/Bin"
+      )
+    find_program(Vulkan_GLSLC_EXECUTABLE
+      NAMES glslc
+      HINTS
+        "$ENV{VULKAN_SDK}/Bin"
+      )
+    find_program(Vulkan_GLSLANG_VALIDATOR_EXECUTABLE
+      NAMES glslangValidator
+      HINTS
+        "$ENV{VULKAN_SDK}/Bin"
+      )
+  elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
+    find_library(Vulkan_LIBRARY
+      NAMES vulkan-1
+      HINTS
+        "$ENV{VULKAN_SDK}/Lib32"
+        "$ENV{VULKAN_SDK}/Bin32"
+      )
+    find_program(Vulkan_GLSLC_EXECUTABLE
+      NAMES glslc
+      HINTS
+        "$ENV{VULKAN_SDK}/Bin32"
+      )
+    find_program(Vulkan_GLSLANG_VALIDATOR_EXECUTABLE
+      NAMES glslangValidator
+      HINTS
+        "$ENV{VULKAN_SDK}/Bin32"
+      )
+  endif()
+else()
+  find_path(Vulkan_INCLUDE_DIR
+    NAMES vulkan/vulkan.h
+    HINTS "$ENV{VULKAN_SDK}/include")
+  find_library(Vulkan_LIBRARY
+    NAMES vulkan
+    HINTS "$ENV{VULKAN_SDK}/lib")
+  find_program(Vulkan_GLSLC_EXECUTABLE
+    NAMES glslc
+    HINTS "$ENV{VULKAN_SDK}/bin")
+  find_program(Vulkan_GLSLANG_VALIDATOR_EXECUTABLE
+    NAMES glslangValidator
+    HINTS "$ENV{VULKAN_SDK}/bin")
+endif()
+
+set(Vulkan_LIBRARIES ${Vulkan_LIBRARY})
+set(Vulkan_INCLUDE_DIRS ${Vulkan_INCLUDE_DIR})
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(Vulkan
+  DEFAULT_MSG
+  Vulkan_LIBRARY Vulkan_INCLUDE_DIR)
+
+mark_as_advanced(Vulkan_INCLUDE_DIR Vulkan_LIBRARY Vulkan_GLSLC_EXECUTABLE
+                 Vulkan_GLSLANG_VALIDATOR_EXECUTABLE)
+
+if(Vulkan_FOUND AND NOT TARGET Vulkan::Vulkan)
+  add_library(Vulkan::Vulkan UNKNOWN IMPORTED)
+  set_target_properties(Vulkan::Vulkan PROPERTIES
+    IMPORTED_LOCATION "${Vulkan_LIBRARIES}"
+    INTERFACE_INCLUDE_DIRECTORIES "${Vulkan_INCLUDE_DIRS}")
+endif()
+
+if(Vulkan_FOUND AND NOT TARGET Vulkan::Headers)
+  add_library(Vulkan::Headers INTERFACE IMPORTED)
+  set_target_properties(Vulkan::Headers PROPERTIES
+    INTERFACE_INCLUDE_DIRECTORIES "${Vulkan_INCLUDE_DIRS}")
+endif()
+
+if(Vulkan_FOUND AND Vulkan_GLSLC_EXECUTABLE AND NOT TARGET Vulkan::glslc)
+  add_executable(Vulkan::glslc IMPORTED)
+  set_property(TARGET Vulkan::glslc PROPERTY IMPORTED_LOCATION "${Vulkan_GLSLC_EXECUTABLE}")
+endif()
+
+if(Vulkan_FOUND AND Vulkan_GLSLANG_VALIDATOR_EXECUTABLE AND NOT TARGET Vulkan::glslangValidator)
+  add_executable(Vulkan::glslangValidator IMPORTED)
+  set_property(TARGET Vulkan::glslangValidator PROPERTY IMPORTED_LOCATION "${Vulkan_GLSLANG_VALIDATOR_EXECUTABLE}")
+endif()
diff --git a/share/cmake-3.22/Modules/FindWget.cmake b/share/cmake-3.22/Modules/FindWget.cmake
new file mode 100644
index 0000000..d0b6fdf
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindWget.cmake
@@ -0,0 +1,34 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindWget
+--------
+
+Find wget
+
+This module looks for wget.  This module defines the following values:
+
+::
+
+  WGET_EXECUTABLE: the full path to the wget tool.
+  WGET_FOUND: True if wget has been found.
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/FindMsys.cmake)
+
+find_program(WGET_EXECUTABLE
+  wget
+  ${CYGWIN_INSTALL_PATH}/bin
+  ${MSYS_INSTALL_PATH}/usr/bin
+)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Wget DEFAULT_MSG WGET_EXECUTABLE)
+
+mark_as_advanced( WGET_EXECUTABLE )
+
+# WGET option is deprecated.
+# use WGET_EXECUTABLE instead.
+set (WGET ${WGET_EXECUTABLE})
diff --git a/share/cmake-3.18/Modules/FindWish.cmake b/share/cmake-3.22/Modules/FindWish.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindWish.cmake
rename to share/cmake-3.22/Modules/FindWish.cmake
diff --git a/share/cmake-3.22/Modules/FindX11.cmake b/share/cmake-3.22/Modules/FindX11.cmake
new file mode 100644
index 0000000..fd5ee53
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindX11.cmake
@@ -0,0 +1,904 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindX11
+-------
+
+Find X11 installation
+
+Try to find X11 on UNIX systems. The following values are defined
+
+::
+
+  X11_FOUND        - True if X11 is available
+  X11_INCLUDE_DIR  - include directories to use X11
+  X11_LIBRARIES    - link against these to use X11
+
+and also the following more fine grained variables and targets:
+
+.. versionadded:: 3.14
+  Imported targets.
+
+::
+
+  X11_ICE_INCLUDE_PATH,          X11_ICE_LIB,        X11_ICE_FOUND,        X11::ICE
+  X11_SM_INCLUDE_PATH,           X11_SM_LIB,         X11_SM_FOUND,         X11::SM
+  X11_X11_INCLUDE_PATH,          X11_X11_LIB,                              X11::X11
+  X11_Xaccessrules_INCLUDE_PATH,
+  X11_Xaccessstr_INCLUDE_PATH,                       X11_Xaccess_FOUND
+  X11_Xau_INCLUDE_PATH,          X11_Xau_LIB,        X11_Xau_FOUND,        X11::Xau
+  X11_xcb_INCLUDE_PATH,          X11_xcb_LIB,        X11_xcb_FOUND,        X11::xcb
+  X11_X11_xcb_INCLUDE_PATH,      X11_X11_xcb_LIB,    X11_X11_xcb_FOUND,    X11::X11_xcb
+  X11_xcb_icccm_INCLUDE_PATH,    X11_xcb_icccm_LIB,  X11_xcb_icccm_FOUND,  X11::xcb_icccm
+  X11_xcb_util_INCLUDE_PATH,     X11_xcb_util_LIB,   X11_xcb_util_FOUND,   X11::xcb_util
+  X11_xcb_xfixes_INCLUDE_PATH,   X11_xcb_xfixes_LIB, X11_xcb_xfixes_FOUND, X11::xcb_xfixes
+  X11_xcb_xkb_INCLUDE_PATH,      X11_xcb_xkb_LIB,    X11_xcb_xkb_FOUND,    X11::xcb_xkb
+  X11_Xcomposite_INCLUDE_PATH,   X11_Xcomposite_LIB, X11_Xcomposite_FOUND, X11::Xcomposite
+  X11_Xcursor_INCLUDE_PATH,      X11_Xcursor_LIB,    X11_Xcursor_FOUND,    X11::Xcursor
+  X11_Xdamage_INCLUDE_PATH,      X11_Xdamage_LIB,    X11_Xdamage_FOUND,    X11::Xdamage
+  X11_Xdmcp_INCLUDE_PATH,        X11_Xdmcp_LIB,      X11_Xdmcp_FOUND,      X11::Xdmcp
+  X11_Xext_INCLUDE_PATH,         X11_Xext_LIB,       X11_Xext_FOUND,       X11::Xext
+  X11_Xxf86misc_INCLUDE_PATH,    X11_Xxf86misc_LIB,  X11_Xxf86misc_FOUND,  X11::Xxf86misc
+  X11_Xxf86vm_INCLUDE_PATH,      X11_Xxf86vm_LIB     X11_Xxf86vm_FOUND,    X11::Xxf86vm
+  X11_Xfixes_INCLUDE_PATH,       X11_Xfixes_LIB,     X11_Xfixes_FOUND,     X11::Xfixes
+  X11_Xft_INCLUDE_PATH,          X11_Xft_LIB,        X11_Xft_FOUND,        X11::Xft
+  X11_Xi_INCLUDE_PATH,           X11_Xi_LIB,         X11_Xi_FOUND,         X11::Xi
+  X11_Xinerama_INCLUDE_PATH,     X11_Xinerama_LIB,   X11_Xinerama_FOUND,   X11::Xinerama
+  X11_Xkb_INCLUDE_PATH,
+  X11_Xkblib_INCLUDE_PATH,                           X11_Xkb_FOUND,        X11::Xkb
+  X11_xkbcommon_INCLUDE_PATH,    X11_xkbcommon_LIB,  X11_xkbcommon_FOUND,  X11::xkbcommon
+  X11_xkbcommon_X11_INCLUDE_PATH,X11_xkbcommon_X11_LIB,X11_xkbcommon_X11_FOUND,X11::xkbcommon_X11
+  X11_xkbfile_INCLUDE_PATH,      X11_xkbfile_LIB,    X11_xkbfile_FOUND,    X11::xkbfile
+  X11_Xmu_INCLUDE_PATH,          X11_Xmu_LIB,        X11_Xmu_FOUND,        X11::Xmu
+  X11_Xpm_INCLUDE_PATH,          X11_Xpm_LIB,        X11_Xpm_FOUND,        X11::Xpm
+  X11_Xtst_INCLUDE_PATH,         X11_Xtst_LIB,       X11_Xtst_FOUND,       X11::Xtst
+  X11_Xrandr_INCLUDE_PATH,       X11_Xrandr_LIB,     X11_Xrandr_FOUND,     X11::Xrandr
+  X11_Xrender_INCLUDE_PATH,      X11_Xrender_LIB,    X11_Xrender_FOUND,    X11::Xrender
+  X11_XRes_INCLUDE_PATH,         X11_XRes_LIB,       X11_XRes_FOUND,       X11::XRes
+  X11_Xss_INCLUDE_PATH,          X11_Xss_LIB,        X11_Xss_FOUND,        X11::Xss
+  X11_Xt_INCLUDE_PATH,           X11_Xt_LIB,         X11_Xt_FOUND,         X11::Xt
+  X11_Xutil_INCLUDE_PATH,                            X11_Xutil_FOUND,      X11::Xutil
+  X11_Xv_INCLUDE_PATH,           X11_Xv_LIB,         X11_Xv_FOUND,         X11::Xv
+  X11_dpms_INCLUDE_PATH,         (in X11_Xext_LIB),  X11_dpms_FOUND
+  X11_XShm_INCLUDE_PATH,         (in X11_Xext_LIB),  X11_XShm_FOUND
+  X11_Xshape_INCLUDE_PATH,       (in X11_Xext_LIB),  X11_Xshape_FOUND
+  X11_XSync_INCLUDE_PATH,        (in X11_Xext_LIB),  X11_XSync_FOUND
+  X11_Xaw_INCLUDE_PATH,          X11_Xaw_LIB         X11_Xaw_FOUND         X11::Xaw
+
+.. versionadded:: 3.14
+  Renamed ``Xxf86misc``, ``X11_Xxf86misc``, ``X11_Xxf86vm``, ``X11_xkbfile``,
+  ``X11_Xtst``, and ``X11_Xss`` libraries to match their file names.
+  Deprecated the ``X11_Xinput`` library.  Old names are still available
+  for compatibility.
+
+.. versionadded:: 3.14
+  Added the ``X11_Xext_INCLUDE_PATH`` variable.
+
+.. versionadded:: 3.18
+  Added the ``xcb``, ``X11-xcb``, ``xcb-icccm``, ``xcb-xkb``, ``xkbcommon``,
+  and ``xkbcommon-X11`` libraries.
+
+.. versionadded:: 3.19
+  Added the ``Xaw``, ``xcb_util``, and ``xcb_xfixes`` libraries.
+
+#]=======================================================================]
+
+if (UNIX)
+  set(X11_FOUND 0)
+  # X11 is never a framework and some header files may be
+  # found in tcl on the mac
+  set(CMAKE_FIND_FRAMEWORK_SAVE ${CMAKE_FIND_FRAMEWORK})
+  set(CMAKE_FIND_FRAMEWORK NEVER)
+  set(CMAKE_REQUIRED_QUIET_SAVE ${CMAKE_REQUIRED_QUIET})
+  set(CMAKE_REQUIRED_QUIET ${X11_FIND_QUIETLY})
+  set(X11_INC_SEARCH_PATH
+    /usr/pkg/xorg/include
+    /usr/X11R6/include
+    /usr/X11R7/include
+    /usr/include/X11
+    /usr/openwin/include
+    /usr/openwin/share/include
+    /opt/graphics/OpenGL/include
+    /opt/X11/include
+  )
+
+  set(X11_LIB_SEARCH_PATH
+    /usr/pkg/xorg/lib
+    /usr/X11R6/lib
+    /usr/X11R7/lib
+    /usr/openwin/lib
+    /opt/X11/lib
+  )
+
+  find_path(X11_X11_INCLUDE_PATH X11/X.h                             ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xlib_INCLUDE_PATH X11/Xlib.h                         ${X11_INC_SEARCH_PATH})
+
+  # Look for includes; keep the list sorted by name of the cmake *_INCLUDE_PATH
+  # variable (which doesn't need to match the include file name).
+
+  # Solaris lacks XKBrules.h, so we should skip kxkbd there.
+  find_path(X11_ICE_INCLUDE_PATH X11/ICE/ICE.h                       ${X11_INC_SEARCH_PATH})
+  find_path(X11_SM_INCLUDE_PATH X11/SM/SM.h                          ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xaccessrules_INCLUDE_PATH X11/extensions/XKBrules.h  ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xaccessstr_INCLUDE_PATH X11/extensions/XKBstr.h      ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xau_INCLUDE_PATH X11/Xauth.h                         ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xaw_INCLUDE_PATH X11/Xaw/Intrinsic.h                 ${X11_INC_SEARCH_PATH})
+  find_path(X11_xcb_INCLUDE_PATH xcb/xcb.h                           ${X11_INC_SEARCH_PATH})
+  find_path(X11_X11_xcb_INCLUDE_PATH X11/Xlib-xcb.h                  ${X11_INC_SEARCH_PATH})
+  find_path(X11_xcb_icccm_INCLUDE_PATH xcb/xcb_icccm.h               ${X11_INC_SEARCH_PATH})
+  find_path(X11_xcb_util_INCLUDE_PATH xcb/xcb_aux.h                  ${X11_INC_SEARCH_PATH})
+  find_path(X11_xcb_xfixes_INCLUDE_PATH xcb/xfixes.h                 ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xcomposite_INCLUDE_PATH X11/extensions/Xcomposite.h  ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xcursor_INCLUDE_PATH X11/Xcursor/Xcursor.h           ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xdamage_INCLUDE_PATH X11/extensions/Xdamage.h        ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xdmcp_INCLUDE_PATH X11/Xdmcp.h                       ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xext_INCLUDE_PATH X11/extensions/Xext.h              ${X11_INC_SEARCH_PATH})
+  find_path(X11_dpms_INCLUDE_PATH X11/extensions/dpms.h              ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xxf86misc_INCLUDE_PATH X11/extensions/xf86misc.h     ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xxf86vm_INCLUDE_PATH X11/extensions/xf86vmode.h      ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xfixes_INCLUDE_PATH X11/extensions/Xfixes.h          ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xft_INCLUDE_PATH X11/Xft/Xft.h                       ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xi_INCLUDE_PATH X11/extensions/XInput.h              ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xinerama_INCLUDE_PATH X11/extensions/Xinerama.h      ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xkb_INCLUDE_PATH X11/extensions/XKB.h                ${X11_INC_SEARCH_PATH})
+  find_path(X11_xkbcommon_INCLUDE_PATH xkbcommon/xkbcommon.h         ${X11_INC_SEARCH_PATH})
+  find_path(X11_xkbcommon_X11_INCLUDE_PATH xkbcommon/xkbcommon-x11.h ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xkblib_INCLUDE_PATH X11/XKBlib.h                     ${X11_INC_SEARCH_PATH})
+  find_path(X11_xkbfile_INCLUDE_PATH X11/extensions/XKBfile.h        ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xmu_INCLUDE_PATH X11/Xmu/Xmu.h                       ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xpm_INCLUDE_PATH X11/xpm.h                           ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xtst_INCLUDE_PATH X11/extensions/XTest.h             ${X11_INC_SEARCH_PATH})
+  find_path(X11_XShm_INCLUDE_PATH X11/extensions/XShm.h              ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xrandr_INCLUDE_PATH X11/extensions/Xrandr.h          ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xrender_INCLUDE_PATH X11/extensions/Xrender.h        ${X11_INC_SEARCH_PATH})
+  find_path(X11_XRes_INCLUDE_PATH X11/extensions/XRes.h              ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xss_INCLUDE_PATH X11/extensions/scrnsaver.h          ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xshape_INCLUDE_PATH X11/extensions/shape.h           ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xutil_INCLUDE_PATH X11/Xutil.h                       ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xt_INCLUDE_PATH X11/Intrinsic.h                      ${X11_INC_SEARCH_PATH})
+  find_path(X11_Xv_INCLUDE_PATH X11/extensions/Xvlib.h               ${X11_INC_SEARCH_PATH})
+  find_path(X11_XSync_INCLUDE_PATH X11/extensions/sync.h             ${X11_INC_SEARCH_PATH})
+
+
+
+  # Backwards compatibility.
+  set(X11_Xinput_INCLUDE_PATH "${X11_Xi_INCLUDE_PATH}")
+  set(X11_xf86misc_INCLUDE_PATH "${X11_Xxf86misc_INCLUDE_PATH}")
+  set(X11_xf86vmode_INCLUDE_PATH "${X11_Xxf8vm_INCLUDE_PATH}")
+  set(X11_Xkbfile_INCLUDE_PATH "${X11_xkbfile_INCLUDE_PATH}")
+  set(X11_XTest_INCLUDE_PATH "${X11_Xtst_INCLUDE_PATH}")
+  set(X11_Xscreensaver_INCLUDE_PATH "${X11_Xss_INCLUDE_PATH}")
+
+  find_library(X11_X11_LIB X11               ${X11_LIB_SEARCH_PATH})
+
+  # Find additional X libraries. Keep list sorted by library name.
+  find_library(X11_ICE_LIB ICE               ${X11_LIB_SEARCH_PATH})
+  find_library(X11_SM_LIB SM                 ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xau_LIB Xau               ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xaw_LIB Xaw               ${X11_LIB_SEARCH_PATH})
+  find_library(X11_xcb_LIB xcb               ${X11_LIB_SEARCH_PATH})
+  find_library(X11_X11_xcb_LIB X11-xcb       ${X11_LIB_SEARCH_PATH})
+  find_library(X11_xcb_icccm_LIB xcb-icccm   ${X11_LIB_SEARCH_PATH})
+  find_library(X11_xcb_util_LIB xcb-util     ${X11_LIB_SEARCH_PATH})
+  find_library(X11_xcb_xfixes_LIB xcb-xfixes ${X11_LIB_SEARCH_PATH})
+  find_library(X11_xcb_xkb_LIB xcb-xkb       ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xcomposite_LIB Xcomposite ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xcursor_LIB Xcursor       ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xdamage_LIB Xdamage       ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xdmcp_LIB Xdmcp           ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xext_LIB Xext             ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xfixes_LIB Xfixes         ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xft_LIB Xft               ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xi_LIB Xi                 ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xinerama_LIB Xinerama     ${X11_LIB_SEARCH_PATH})
+  find_library(X11_xkbcommon_LIB xkbcommon   ${X11_LIB_SEARCH_PATH})
+  find_library(X11_xkbcommon_X11_LIB xkbcommon-x11   ${X11_LIB_SEARCH_PATH})
+  find_library(X11_xkbfile_LIB xkbfile       ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xmu_LIB Xmu               ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xpm_LIB Xpm               ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xrandr_LIB Xrandr         ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xrender_LIB Xrender       ${X11_LIB_SEARCH_PATH})
+  find_library(X11_XRes_LIB XRes             ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xss_LIB Xss               ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xt_LIB Xt                 ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xtst_LIB Xtst             ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xv_LIB Xv                 ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xxf86misc_LIB Xxf86misc   ${X11_LIB_SEARCH_PATH})
+  find_library(X11_Xxf86vm_LIB Xxf86vm       ${X11_LIB_SEARCH_PATH})
+
+  # Backwards compatibility.
+  set(X11_Xinput_LIB "${X11_Xi_LIB}")
+  set(X11_Xkbfile_LIB "${X11_xkbfile_LIB}")
+  set(X11_XTest_LIB "${X11_Xtst_LIB}")
+  set(X11_Xscreensaver_LIB "${X11_Xss_LIB}")
+
+  set(X11_LIBRARY_DIR "")
+  if(X11_X11_LIB)
+    get_filename_component(X11_LIBRARY_DIR ${X11_X11_LIB} PATH)
+  endif()
+
+  set(X11_INCLUDE_DIR) # start with empty list
+  if(X11_X11_INCLUDE_PATH)
+    list(APPEND X11_INCLUDE_DIR ${X11_X11_INCLUDE_PATH})
+  endif()
+
+  if(X11_Xlib_INCLUDE_PATH)
+    list(APPEND X11_INCLUDE_DIR ${X11_Xlib_INCLUDE_PATH})
+  endif()
+
+  if(X11_Xutil_INCLUDE_PATH)
+    set(X11_Xutil_FOUND TRUE)
+    list(APPEND X11_INCLUDE_DIR ${X11_Xutil_INCLUDE_PATH})
+  endif()
+
+  if(X11_Xshape_INCLUDE_PATH)
+    set(X11_Xshape_FOUND TRUE)
+    list(APPEND X11_INCLUDE_DIR ${X11_Xshape_INCLUDE_PATH})
+  endif()
+
+  set(X11_LIBRARIES) # start with empty list
+  if(X11_X11_LIB)
+    list(APPEND X11_LIBRARIES ${X11_X11_LIB})
+  endif()
+
+  if(X11_Xext_LIB)
+    set(X11_Xext_FOUND TRUE)
+    list(APPEND X11_LIBRARIES ${X11_Xext_LIB})
+  endif()
+
+  if(X11_Xt_LIB AND X11_Xt_INCLUDE_PATH)
+    set(X11_Xt_FOUND TRUE)
+  endif()
+
+  if(X11_Xft_LIB AND X11_Xft_INCLUDE_PATH)
+    find_package(Freetype QUIET)
+    find_package(Fontconfig QUIET)
+    if (FREETYPE_FOUND AND Fontconfig_FOUND)
+      set(X11_Xft_FOUND TRUE)
+    endif ()
+    list(APPEND X11_INCLUDE_DIR ${X11_Xft_INCLUDE_PATH})
+  endif()
+
+  if(X11_Xv_LIB AND X11_Xv_INCLUDE_PATH)
+    set(X11_Xv_FOUND TRUE)
+    list(APPEND X11_INCLUDE_DIR ${X11_Xv_INCLUDE_PATH})
+  endif()
+
+  if (X11_Xau_LIB AND X11_Xau_INCLUDE_PATH)
+    set(X11_Xau_FOUND TRUE)
+  endif ()
+
+  if (X11_xcb_LIB AND X11_xcb_INCLUDE_PATH)
+    set(X11_xcb_FOUND TRUE)
+  endif ()
+
+  if (X11_X11_xcb_LIB AND X11_X11_xcb_INCLUDE_PATH)
+    set(X11_X11_xcb_FOUND TRUE)
+  endif ()
+
+  if (X11_xcb_icccm_LIB AND X11_xcb_icccm_INCLUDE_PATH)
+    set(X11_xcb_icccm_FOUND TRUE)
+  endif ()
+
+  if (X11_xcb_util_LIB AND X11_xcb_util_INCLUDE_PATH)
+    set(X11_xcb_util_FOUND TRUE)
+  endif ()
+
+  if (X11_xcb_xfixes_LIB)
+    set(X11_xcb_xfixes_FOUND TRUE)
+  endif ()
+
+  if (X11_xcb_xkb_LIB)
+    set(X11_xcb_xkb_FOUND TRUE)
+  endif ()
+
+  if (X11_Xdmcp_INCLUDE_PATH AND X11_Xdmcp_LIB)
+      set(X11_Xdmcp_FOUND TRUE)
+      list(APPEND X11_INCLUDE_DIR ${X11_Xdmcp_INCLUDE_PATH})
+  endif ()
+
+  if (X11_Xaccessrules_INCLUDE_PATH AND X11_Xaccessstr_INCLUDE_PATH)
+      set(X11_Xaccess_FOUND TRUE)
+      set(X11_Xaccess_INCLUDE_PATH ${X11_Xaccessstr_INCLUDE_PATH})
+      list(APPEND X11_INCLUDE_DIR ${X11_Xaccess_INCLUDE_PATH})
+  endif ()
+
+  if (X11_Xpm_INCLUDE_PATH AND X11_Xpm_LIB)
+      set(X11_Xpm_FOUND TRUE)
+      list(APPEND X11_INCLUDE_DIR ${X11_Xpm_INCLUDE_PATH})
+  endif ()
+
+  if (X11_Xcomposite_INCLUDE_PATH AND X11_Xcomposite_LIB)
+     set(X11_Xcomposite_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_Xcomposite_INCLUDE_PATH})
+  endif ()
+
+  if (X11_Xdamage_INCLUDE_PATH AND X11_Xdamage_LIB)
+     set(X11_Xdamage_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_Xdamage_INCLUDE_PATH})
+  endif ()
+
+  if (X11_XShm_INCLUDE_PATH)
+     set(X11_XShm_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_XShm_INCLUDE_PATH})
+  endif ()
+
+  if (X11_Xtst_INCLUDE_PATH AND X11_Xtst_LIB)
+      set(X11_Xtst_FOUND TRUE)
+      # Backwards compatibility.
+      set(X11_XTest_FOUND TRUE)
+      list(APPEND X11_INCLUDE_DIR ${X11_Xtst_INCLUDE_PATH})
+  endif ()
+
+  if (X11_Xi_INCLUDE_PATH AND X11_Xi_LIB)
+     set(X11_Xi_FOUND TRUE)
+     # Backwards compatibility.
+     set(X11_Xinput_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_Xi_INCLUDE_PATH})
+  endif ()
+
+  if (X11_Xinerama_INCLUDE_PATH AND X11_Xinerama_LIB)
+     set(X11_Xinerama_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_Xinerama_INCLUDE_PATH})
+  endif ()
+
+  if (X11_Xfixes_INCLUDE_PATH AND X11_Xfixes_LIB)
+     set(X11_Xfixes_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_Xfixes_INCLUDE_PATH})
+  endif ()
+
+  if (X11_Xrender_INCLUDE_PATH AND X11_Xrender_LIB)
+     set(X11_Xrender_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_Xrender_INCLUDE_PATH})
+  endif ()
+
+  if (X11_XRes_INCLUDE_PATH AND X11_XRes_LIB)
+     set(X11_XRes_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_XRes_INCLUDE_PATH})
+  endif ()
+
+  if (X11_Xrandr_INCLUDE_PATH AND X11_Xrandr_LIB)
+     set(X11_Xrandr_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_Xrandr_INCLUDE_PATH})
+  endif ()
+
+  if (X11_Xxf86misc_INCLUDE_PATH AND X11_Xxf86misc_LIB)
+     set(X11_Xxf86misc_FOUND TRUE)
+     # Backwards compatibility.
+     set(X11_xf86misc_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_Xxf86misc_INCLUDE_PATH})
+  endif ()
+
+  if (X11_Xxf86vm_INCLUDE_PATH AND X11_Xxf86vm_LIB)
+     set(X11_Xxf86vm_FOUND TRUE)
+     # Backwards compatibility.
+     set(X11_xf86vmode_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_Xxf86vm_INCLUDE_PATH})
+  endif ()
+
+  if (X11_Xcursor_INCLUDE_PATH AND X11_Xcursor_LIB)
+     set(X11_Xcursor_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_Xcursor_INCLUDE_PATH})
+  endif ()
+
+  if (X11_Xss_INCLUDE_PATH AND X11_Xss_LIB)
+     set(X11_Xss_FOUND TRUE)
+     set(X11_Xscreensaver_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_Xss_INCLUDE_PATH})
+  endif ()
+
+  if (X11_dpms_INCLUDE_PATH)
+     set(X11_dpms_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_dpms_INCLUDE_PATH})
+  endif ()
+
+  if (X11_Xkb_INCLUDE_PATH AND X11_Xkblib_INCLUDE_PATH AND X11_Xlib_INCLUDE_PATH)
+     set(X11_Xkb_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_Xkb_INCLUDE_PATH} )
+  endif ()
+
+  if (X11_xkbcommon_INCLUDE_PATH AND X11_xkbcommon_LIB)
+     set(X11_xkbcommon_FOUND TRUE)
+  endif ()
+
+  if (X11_xkbcommon_X11_INCLUDE_PATH AND X11_xkbcommon_X11_LIB)
+     set(X11_xkbcommon_X11_FOUND TRUE)
+  endif ()
+
+  if (X11_xkbfile_INCLUDE_PATH AND X11_xkbfile_LIB AND X11_Xlib_INCLUDE_PATH)
+     set(X11_xkbfile_FOUND TRUE)
+     # Backwards compatibility.
+     set(X11_Xkbfile_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_xkbfile_INCLUDE_PATH} )
+  endif ()
+
+  if (X11_Xmu_INCLUDE_PATH AND X11_Xmu_LIB)
+     set(X11_Xmu_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_Xmu_INCLUDE_PATH})
+  endif ()
+
+  if (X11_XSync_INCLUDE_PATH)
+     set(X11_XSync_FOUND TRUE)
+     list(APPEND X11_INCLUDE_DIR ${X11_XSync_INCLUDE_PATH})
+  endif ()
+
+  if(X11_ICE_LIB AND X11_ICE_INCLUDE_PATH)
+     set(X11_ICE_FOUND TRUE)
+  endif()
+
+  if(X11_SM_LIB AND X11_SM_INCLUDE_PATH)
+     set(X11_SM_FOUND TRUE)
+  endif()
+
+  if(X11_Xaw_LIB AND X11_Xaw_INCLUDE_PATH)
+      set(X11_Xaw_FOUND TRUE)
+  endif()
+
+  # Most of the X11 headers will be in the same directories, avoid
+  # creating a huge list of duplicates.
+  if (X11_INCLUDE_DIR)
+     list(REMOVE_DUPLICATES X11_INCLUDE_DIR)
+  endif ()
+
+  # Deprecated variable for backwards compatibility with CMake 1.4
+  if (X11_X11_INCLUDE_PATH AND X11_LIBRARIES)
+    set(X11_FOUND 1)
+  endif ()
+
+  include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+  if (CMAKE_FIND_PACKAGE_NAME STREQUAL "FLTK")
+    # FindFLTK include()'s this module. It's an old pattern, but rather than
+    # trying to suppress this from outside the module (which is then sensitive
+    # to the contents, detect the case in this module and suppress it
+    # explicitly.
+    set(FPHSA_NAME_MISMATCHED 1)
+  endif ()
+  find_package_handle_standard_args(X11
+    REQUIRED_VARS X11_X11_INCLUDE_PATH X11_X11_LIB
+    HANDLE_COMPONENTS)
+  unset(FPHSA_NAME_MISMATCHED)
+
+  if(X11_FOUND)
+    include(${CMAKE_CURRENT_LIST_DIR}/CheckFunctionExists.cmake)
+    include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake)
+
+    # Translated from an autoconf-generated configure script.
+    # See libs.m4 in autoconf's m4 directory.
+    if($ENV{ISC} MATCHES "^yes$")
+      set(X11_X_EXTRA_LIBS -lnsl_s -linet)
+    else()
+      set(X11_X_EXTRA_LIBS "")
+
+      # See if XOpenDisplay in X11 works by itself.
+      check_library_exists("${X11_LIBRARIES}" "XOpenDisplay" "${X11_LIBRARY_DIR}" X11_LIB_X11_SOLO)
+      if(NOT X11_LIB_X11_SOLO)
+        # Find library needed for dnet_ntoa.
+        check_library_exists("dnet" "dnet_ntoa" "" X11_LIB_DNET_HAS_DNET_NTOA)
+        if (X11_LIB_DNET_HAS_DNET_NTOA)
+          list(APPEND X11_X_EXTRA_LIBS -ldnet)
+        else ()
+          check_library_exists("dnet_stub" "dnet_ntoa" "" X11_LIB_DNET_STUB_HAS_DNET_NTOA)
+          if (X11_LIB_DNET_STUB_HAS_DNET_NTOA)
+            list(APPEND X11_X_EXTRA_LIBS -ldnet_stub)
+          endif ()
+        endif ()
+      endif()
+
+      # Find library needed for gethostbyname.
+      check_function_exists("gethostbyname" CMAKE_HAVE_GETHOSTBYNAME)
+      if(NOT CMAKE_HAVE_GETHOSTBYNAME)
+        check_library_exists("nsl" "gethostbyname" "" CMAKE_LIB_NSL_HAS_GETHOSTBYNAME)
+        if (CMAKE_LIB_NSL_HAS_GETHOSTBYNAME)
+          list(APPEND X11_X_EXTRA_LIBS -lnsl)
+        else ()
+          check_library_exists("bsd" "gethostbyname" "" CMAKE_LIB_BSD_HAS_GETHOSTBYNAME)
+          if (CMAKE_LIB_BSD_HAS_GETHOSTBYNAME)
+            list(APPEND X11_X_EXTRA_LIBS -lbsd)
+          endif ()
+        endif ()
+      endif()
+
+      # Find library needed for connect.
+      check_function_exists("connect" CMAKE_HAVE_CONNECT)
+      if(NOT CMAKE_HAVE_CONNECT)
+        check_library_exists("socket" "connect" "" CMAKE_LIB_SOCKET_HAS_CONNECT)
+        if (CMAKE_LIB_SOCKET_HAS_CONNECT)
+          list(INSERT X11_X_EXTRA_LIBS 0 -lsocket)
+        endif ()
+      endif()
+
+      # Find library needed for remove.
+      check_function_exists("remove" CMAKE_HAVE_REMOVE)
+      if(NOT CMAKE_HAVE_REMOVE)
+        check_library_exists("posix" "remove" "" CMAKE_LIB_POSIX_HAS_REMOVE)
+        if (CMAKE_LIB_POSIX_HAS_REMOVE)
+          list(APPEND X11_X_EXTRA_LIBS -lposix)
+        endif ()
+      endif()
+
+      # Find library needed for shmat.
+      check_function_exists("shmat" CMAKE_HAVE_SHMAT)
+      if(NOT CMAKE_HAVE_SHMAT)
+        check_library_exists("ipc" "shmat" "" CMAKE_LIB_IPS_HAS_SHMAT)
+        if (CMAKE_LIB_IPS_HAS_SHMAT)
+          list(APPEND X11_X_EXTRA_LIBS -lipc)
+        endif ()
+      endif()
+    endif()
+
+    if (X11_ICE_FOUND)
+      check_library_exists("ICE" "IceConnectionNumber" "${X11_LIBRARY_DIR}"
+                            CMAKE_LIB_ICE_HAS_ICECONNECTIONNUMBER)
+      if(CMAKE_LIB_ICE_HAS_ICECONNECTIONNUMBER)
+        set (X11_X_PRE_LIBS ${X11_ICE_LIB})
+        if(X11_SM_LIB)
+          list(INSERT X11_X_PRE_LIBS 0 ${X11_SM_LIB})
+        endif()
+      endif()
+    endif ()
+
+    # Build the final list of libraries.
+    set(X11_LIBRARIES ${X11_X_PRE_LIBS} ${X11_LIBRARIES} ${X11_X_EXTRA_LIBS})
+
+    if (NOT TARGET X11::X11)
+      add_library(X11::X11 UNKNOWN IMPORTED)
+      set_target_properties(X11::X11 PROPERTIES
+        IMPORTED_LOCATION "${X11_X11_LIB}"
+        INTERFACE_INCLUDE_DIRECTORIES "${X11_X11_INCLUDE_PATH}")
+    endif ()
+  endif ()
+
+  if (X11_ICE_FOUND AND NOT TARGET X11::ICE)
+    add_library(X11::ICE UNKNOWN IMPORTED)
+    set_target_properties(X11::ICE PROPERTIES
+      IMPORTED_LOCATION "${X11_ICE_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_ICE_INCLUDE_PATH}")
+  endif ()
+
+  if (X11_SM_FOUND AND NOT TARGET X11::SM)
+    add_library(X11::SM UNKNOWN IMPORTED)
+    set_target_properties(X11::SM PROPERTIES
+      IMPORTED_LOCATION "${X11_SM_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_SM_INCLUDE_PATH}")
+  endif ()
+
+  if (X11_Xau_FOUND AND NOT TARGET X11::Xau)
+    add_library(X11::Xau UNKNOWN IMPORTED)
+    set_target_properties(X11::Xau PROPERTIES
+      IMPORTED_LOCATION "${X11_Xau_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xau_INCLUDE_PATH}")
+  endif ()
+
+  if (X11_Xaw_FOUND AND NOT TARGET X11::Xaw)
+    add_library(X11::Xaw UNKNOWN IMPORTED)
+    set_target_properties(X11::Xaw PROPERTIES
+      IMPORTED_LOCATION "${X11_Xaw_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xaw_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::Xmu;X11::Xt;X11::Xpm;X11::X11")
+  endif ()
+
+  if (X11_xcb_FOUND AND NOT TARGET X11::xcb)
+    add_library(X11::xcb UNKNOWN IMPORTED)
+    set_target_properties(X11::xcb PROPERTIES
+      IMPORTED_LOCATION "${X11_xcb_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_xcb_INCLUDE_PATH}")
+  endif ()
+
+  if (X11_X11_xcb_FOUND AND NOT TARGET X11::X11_xcb)
+    add_library(X11::X11_xcb UNKNOWN IMPORTED)
+    set_target_properties(X11::X11_xcb PROPERTIES
+      IMPORTED_LOCATION "${X11_X11_xcb_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_X11_xcb_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::xcb;X11::X11")
+  endif ()
+
+  if (X11_xcb_icccm_FOUND AND NOT TARGET X11::xcb_icccm)
+    add_library(X11::xcb_icccm UNKNOWN IMPORTED)
+    set_target_properties(X11::xcb_icccm PROPERTIES
+      IMPORTED_LOCATION "${X11_xcb_icccm_LIB}"
+      INTERFACE_LINK_LIBRARIES "X11::xcb")
+  endif ()
+
+  if (X11_xcb_util_FOUND AND NOT TARGET X11::xcb_util)
+    add_library(X11::xcb_util UNKNOWN IMPORTED)
+    set_target_properties(X11::xcb_util PROPERTIES
+      IMPORTED_LOCATION "${X11_xcb_util_LIB}"
+      INTERFACE_LINK_LIBRARIES "X11::xcb")
+  endif ()
+
+  if (X11_xcb_xfixes_FOUND AND NOT TARGET X11::xcb_xfixes)
+    add_library(X11::xcb_xfixes UNKNOWN IMPORTED)
+    set_target_properties(X11::xcb_xfixes PROPERTIES
+      IMPORTED_LOCATION "${X11_xcb_xfixes_LIB}"
+      INTERFACE_LINK_LIBRARIES "X11::xcb")
+  endif ()
+
+  if (X11_xcb_xkb_FOUND AND NOT TARGET X11::xcb_xkb)
+    add_library(X11::xcb_xkb UNKNOWN IMPORTED)
+    set_target_properties(X11::xcb_xkb PROPERTIES
+      IMPORTED_LOCATION "${X11_xcb_xkb_LIB}"
+      INTERFACE_LINK_LIBRARIES "X11::xcb")
+  endif ()
+
+  if (X11_Xcomposite_FOUND AND NOT TARGET X11::Xcomposite)
+    add_library(X11::Xcomposite UNKNOWN IMPORTED)
+    set_target_properties(X11::Xcomposite PROPERTIES
+      IMPORTED_LOCATION "${X11_Xcomposite_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xcomposite_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::X11")
+  endif ()
+
+  if (X11_Xcursor_FOUND AND NOT TARGET X11::Xcursor)
+    add_library(X11::Xcursor UNKNOWN IMPORTED)
+    set_target_properties(X11::Xcursor PROPERTIES
+      IMPORTED_LOCATION "${X11_Xcursor_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xcursor_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::Xrender;X11::Xfixes;X11::X11")
+  endif ()
+
+  if (X11_Xdamage_FOUND AND NOT TARGET X11::Xdamage)
+    add_library(X11::Xdamage UNKNOWN IMPORTED)
+    set_target_properties(X11::Xdamage PROPERTIES
+      IMPORTED_LOCATION "${X11_Xdamage_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xdamage_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::Xfixes;X11::X11")
+  endif ()
+
+  if (X11_Xdmcp_FOUND AND NOT TARGET X11::Xdmcp)
+    add_library(X11::Xdmcp UNKNOWN IMPORTED)
+    set_target_properties(X11::Xdmcp PROPERTIES
+      IMPORTED_LOCATION "${X11_Xdmcp_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xdmcp_INCLUDE_PATH}")
+  endif ()
+
+  if (X11_Xext_FOUND AND NOT TARGET X11::Xext)
+    add_library(X11::Xext UNKNOWN IMPORTED)
+    set_target_properties(X11::Xext PROPERTIES
+      IMPORTED_LOCATION "${X11_Xext_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xext_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::X11")
+  endif ()
+
+  if (X11_Xxf86misc_FOUND AND NOT TARGET X11::Xxf86misc)
+    add_library(X11::Xxf86misc UNKNOWN IMPORTED)
+    set_target_properties(X11::Xxf86misc PROPERTIES
+      IMPORTED_LOCATION "${X11_Xxf86misc_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xxf86misc_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::X11;X11::Xext")
+  endif ()
+
+  if (X11_Xxf86vm_FOUND AND NOT TARGET X11::Xxf86vm)
+    add_library(X11::Xxf86vm UNKNOWN IMPORTED)
+    set_target_properties(X11::Xxf86vm PROPERTIES
+      IMPORTED_LOCATION "${X11_Xxf86vm_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xxf86vm_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::X11;X11::Xext")
+  endif ()
+
+  if (X11_Xfixes_FOUND AND NOT TARGET X11::Xfixes)
+    add_library(X11::Xfixes UNKNOWN IMPORTED)
+    set_target_properties(X11::Xfixes PROPERTIES
+      IMPORTED_LOCATION "${X11_Xfixes_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xfixes_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::X11")
+  endif ()
+
+  if (X11_Xft_FOUND AND NOT TARGET X11::Xft)
+    add_library(X11::Xft UNKNOWN IMPORTED)
+    set_target_properties(X11::Xft PROPERTIES
+      IMPORTED_LOCATION "${X11_Xft_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xft_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::Xrender;X11::X11;Fontconfig::Fontconfig;Freetype::Freetype")
+  endif ()
+
+  if (X11_Xi_FOUND AND NOT TARGET X11::Xi)
+    add_library(X11::Xi UNKNOWN IMPORTED)
+    set_target_properties(X11::Xi PROPERTIES
+      IMPORTED_LOCATION "${X11_Xi_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xi_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
+  endif ()
+
+  if (X11_Xinerama_FOUND AND NOT TARGET X11::Xinerama)
+    add_library(X11::Xinerama UNKNOWN IMPORTED)
+    set_target_properties(X11::Xinerama PROPERTIES
+      IMPORTED_LOCATION "${X11_Xinerama_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xinerama_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
+  endif ()
+
+  if (X11_Xkb_FOUND AND NOT TARGET X11::Xkb)
+    add_library(X11::Xkb INTERFACE IMPORTED)
+    set_target_properties(X11::Xkb PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xkb_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::X11")
+  endif ()
+
+  if (X11_xkbcommon_FOUND AND NOT TARGET X11::xkbcommon)
+    add_library(X11::xkbcommon UNKNOWN IMPORTED)
+    set_target_properties(X11::xkbcommon PROPERTIES
+      IMPORTED_LOCATION "${X11_xkbcommon_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_xkbcommon_INCLUDE_PATH}")
+  endif ()
+
+  if (X11_xkbcommon_X11_FOUND AND NOT TARGET X11::xkbcommon_X11)
+    add_library(X11::xkbcommon_X11 UNKNOWN IMPORTED)
+    set_target_properties(X11::xkbcommon_X11 PROPERTIES
+      IMPORTED_LOCATION "${X11_xkbcommon_X11_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_xkbcommon_X11_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::X11;X11::xkbcommon")
+  endif ()
+
+  if (X11_xkbfile_FOUND AND NOT TARGET X11::xkbfile)
+    add_library(X11::xkbfile UNKNOWN IMPORTED)
+    set_target_properties(X11::xkbfile PROPERTIES
+      IMPORTED_LOCATION "${X11_xkbfile_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_xkbfile_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::X11")
+  endif ()
+
+  if (X11_Xmu_FOUND AND NOT TARGET X11::Xmu)
+    add_library(X11::Xmu UNKNOWN IMPORTED)
+    set_target_properties(X11::Xmu PROPERTIES
+      IMPORTED_LOCATION "${X11_Xmu_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xmu_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::Xt;X11::Xext;X11::X11")
+  endif ()
+
+  if (X11_Xpm_FOUND AND NOT TARGET X11::Xpm)
+    add_library(X11::Xpm UNKNOWN IMPORTED)
+    set_target_properties(X11::Xpm PROPERTIES
+      IMPORTED_LOCATION "${X11_Xpm_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xpm_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::X11")
+  endif ()
+
+  if (X11_Xtst_FOUND AND NOT TARGET X11::Xtst)
+    add_library(X11::Xtst UNKNOWN IMPORTED)
+    set_target_properties(X11::Xtst PROPERTIES
+      IMPORTED_LOCATION "${X11_Xtst_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xtst_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::Xi;X11::Xext;X11::X11")
+  endif ()
+
+  if (X11_Xrandr_FOUND AND NOT TARGET X11::Xrandr)
+    add_library(X11::Xrandr UNKNOWN IMPORTED)
+    set_target_properties(X11::Xrandr PROPERTIES
+      IMPORTED_LOCATION "${X11_Xrandr_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xrandr_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::Xrender;X11::Xext;X11::X11")
+  endif ()
+
+  if (X11_Xrender_FOUND AND NOT TARGET X11::Xrender)
+    add_library(X11::Xrender UNKNOWN IMPORTED)
+    set_target_properties(X11::Xrender PROPERTIES
+      IMPORTED_LOCATION "${X11_Xrender_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xrender_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::X11")
+  endif ()
+
+  if (X11_XRes_FOUND AND NOT TARGET X11::XRes)
+    add_library(X11::XRes UNKNOWN IMPORTED)
+    set_target_properties(X11::XRes PROPERTIES
+      IMPORTED_LOCATION "${X11_XRes_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_XRes_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
+  endif ()
+
+  if (X11_Xss_FOUND AND NOT TARGET X11::Xss)
+    add_library(X11::Xss UNKNOWN IMPORTED)
+    set_target_properties(X11::Xss PROPERTIES
+      IMPORTED_LOCATION "${X11_Xss_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xss_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
+  endif ()
+
+  if (X11_Xt_FOUND AND NOT TARGET X11::Xt)
+    add_library(X11::Xt UNKNOWN IMPORTED)
+    set_target_properties(X11::Xt PROPERTIES
+      IMPORTED_LOCATION "${X11_Xt_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xt_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::ICE;X11::SM;X11::X11")
+  endif ()
+
+  if (X11_Xutil_FOUND AND NOT TARGET X11::Xutil)
+    add_library(X11::Xutil INTERFACE IMPORTED)
+    set_target_properties(X11::Xutil PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xutil_INCLUDE_PATH}"
+      # libX11 contains the implementations for functions in the Xutil.h
+      # header.
+      INTERFACE_LINK_LIBRARIES "X11::X11")
+  endif ()
+
+  if (X11_Xv_FOUND AND NOT TARGET X11::Xv)
+    add_library(X11::Xv UNKNOWN IMPORTED)
+    set_target_properties(X11::Xv PROPERTIES
+      IMPORTED_LOCATION "${X11_Xv_LIB}"
+      INTERFACE_INCLUDE_DIRECTORIES "${X11_Xv_INCLUDE_PATH}"
+      INTERFACE_LINK_LIBRARIES "X11::Xext;X11::X11")
+  endif ()
+
+  mark_as_advanced(
+    X11_X11_INCLUDE_PATH
+    X11_X11_LIB
+    X11_Xext_INCLUDE_PATH
+    X11_Xext_LIB
+    X11_Xau_LIB
+    X11_Xau_INCLUDE_PATH
+    X11_xcb_LIB
+    X11_xcb_INCLUDE_PATH
+    X11_xcb_icccm_LIB
+    X11_xcb_icccm_INCLUDE_PATH
+    X11_xcb_util_LIB
+    X11_xcb_util_INCLUDE_PATH
+    X11_xcb_xfixes_LIB
+    X11_xcb_xfixes_INCLUDE_PATH
+    X11_xcb_xkb_LIB
+    X11_X11_xcb_LIB
+    X11_X11_xcb_INCLUDE_PATH
+    X11_Xlib_INCLUDE_PATH
+    X11_Xutil_INCLUDE_PATH
+    X11_Xcomposite_INCLUDE_PATH
+    X11_Xcomposite_LIB
+    X11_Xfixes_LIB
+    X11_Xfixes_INCLUDE_PATH
+    X11_Xrandr_LIB
+    X11_Xrandr_INCLUDE_PATH
+    X11_Xdamage_LIB
+    X11_Xdamage_INCLUDE_PATH
+    X11_Xrender_LIB
+    X11_Xrender_INCLUDE_PATH
+    X11_XRes_LIB
+    X11_XRes_INCLUDE_PATH
+    X11_Xxf86misc_LIB
+    X11_Xxf86misc_INCLUDE_PATH
+    X11_Xxf86vm_LIB
+    X11_Xxf86vm_INCLUDE_PATH
+    X11_Xi_LIB
+    X11_Xi_INCLUDE_PATH
+    X11_Xinerama_LIB
+    X11_Xinerama_INCLUDE_PATH
+    X11_Xtst_LIB
+    X11_Xtst_INCLUDE_PATH
+    X11_Xcursor_LIB
+    X11_Xcursor_INCLUDE_PATH
+    X11_dpms_INCLUDE_PATH
+    X11_Xt_LIB
+    X11_Xt_INCLUDE_PATH
+    X11_Xdmcp_LIB
+    X11_LIBRARIES
+    X11_Xaccessrules_INCLUDE_PATH
+    X11_Xaccessstr_INCLUDE_PATH
+    X11_Xdmcp_INCLUDE_PATH
+    X11_Xkb_INCLUDE_PATH
+    X11_Xkblib_INCLUDE_PATH
+    X11_xkbcommon_INCLUDE_PATH
+    X11_xkbcommon_LIB
+    X11_xkbcommon_X11_INCLUDE_PATH
+    X11_xkbcommon_X11_LIB
+    X11_xkbfile_INCLUDE_PATH
+    X11_xkbfile_LIB
+    X11_Xmu_INCLUDE_PATH
+    X11_Xmu_LIB
+    X11_Xss_INCLUDE_PATH
+    X11_Xss_LIB
+    X11_Xpm_INCLUDE_PATH
+    X11_Xpm_LIB
+    X11_Xft_LIB
+    X11_Xft_INCLUDE_PATH
+    X11_Xshape_INCLUDE_PATH
+    X11_Xv_LIB
+    X11_Xv_INCLUDE_PATH
+    X11_XShm_INCLUDE_PATH
+    X11_ICE_LIB
+    X11_ICE_INCLUDE_PATH
+    X11_SM_LIB
+    X11_SM_INCLUDE_PATH
+    X11_XSync_INCLUDE_PATH
+    X11_Xaw_LIB
+    X11_Xaw_INCLUDE_PATH
+  )
+  set(CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_SAVE})
+  set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE})
+endif ()
diff --git a/share/cmake-3.22/Modules/FindXCTest.cmake b/share/cmake-3.22/Modules/FindXCTest.cmake
new file mode 100644
index 0000000..00729bc
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindXCTest.cmake
@@ -0,0 +1,223 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindXCTest
+----------
+
+.. versionadded:: 3.3
+
+Functions to help creating and executing XCTest bundles.
+
+An XCTest bundle is a CFBundle with a special product-type
+and bundle extension. The Mac Developer Library provides more
+information in the `Testing with Xcode`_ document.
+
+.. _Testing with Xcode: http://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/testing_with_xcode/
+
+Module Functions
+^^^^^^^^^^^^^^^^
+
+.. command:: xctest_add_bundle
+
+  The ``xctest_add_bundle`` function creates a XCTest bundle named
+  <target> which will test the target <testee>. Supported target types
+  for testee are Frameworks and App Bundles::
+
+    xctest_add_bundle(
+      <target>  # Name of the XCTest bundle
+      <testee>  # Target name of the testee
+      )
+
+.. command:: xctest_add_test
+
+  The ``xctest_add_test`` function adds an XCTest bundle to the
+  project to be run by :manual:`ctest(1)`. The test will be named
+  <name> and tests <bundle>::
+
+    xctest_add_test(
+      <name>    # Test name
+      <bundle>  # Target name of XCTest bundle
+      )
+
+Module Variables
+^^^^^^^^^^^^^^^^
+
+The following variables are set by including this module:
+
+.. variable:: XCTest_FOUND
+
+  True if the XCTest Framework and executable were found.
+
+.. variable:: XCTest_EXECUTABLE
+
+  The path to the xctest command line tool used to execute XCTest bundles.
+
+.. variable:: XCTest_INCLUDE_DIRS
+
+  The directory containing the XCTest Framework headers.
+
+.. variable:: XCTest_LIBRARIES
+
+  The location of the XCTest Framework.
+
+#]=======================================================================]
+
+set(_PRESERVED_CMAKE_FIND_ROOT_PATH "${CMAKE_FIND_ROOT_PATH}")
+
+if(CMAKE_EFFECTIVE_SYSTEM_NAME STREQUAL "Apple"
+   AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+  # Non-macos systems set the CMAKE_FIND_ROOT_PATH_MODE to "ONLY" which
+  # restricts the search paths too much to find XCTest.framework. In
+  # contrast to the regular system frameworks which reside within the
+  # SDK direectory the XCTest framework is located in the respective
+  # platform directory which is not added to the CMAKE_FIND_ROOT_PATH
+  # (only to CMAKE_SYSTEM_FRAMEWORK_PATH) and therefore not searched.
+  #
+  # Until this is properly addressed, temporaily add the platform
+  # directory to CMAKE_FIND_ROOT_PATH.
+  list(APPEND CMAKE_FIND_ROOT_PATH "${_CMAKE_OSX_SYSROOT_PATH}/../..")
+endif()
+
+find_path(XCTest_INCLUDE_DIR
+  NAMES "XCTest/XCTest.h"
+  DOC "XCTest include directory")
+mark_as_advanced(XCTest_INCLUDE_DIR)
+
+find_library(XCTest_LIBRARY
+  NAMES XCTest
+  DOC "XCTest Framework library")
+mark_as_advanced(XCTest_LIBRARY)
+
+set(CMAKE_FIND_ROOT_PATH "${_PRESERVED_CMAKE_FIND_ROOT_PATH}")
+unset(_PRESERVED_CMAKE_FIND_ROOT_PATH)
+
+execute_process(
+  COMMAND xcrun --find xctest
+  OUTPUT_VARIABLE _xcrun_out OUTPUT_STRIP_TRAILING_WHITESPACE
+  ERROR_VARIABLE _xcrun_err)
+if(_xcrun_out)
+  set(XCTest_EXECUTABLE "${_xcrun_out}" CACHE FILEPATH "XCTest executable")
+  mark_as_advanced(XCTest_EXECUTABLE)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(XCTest
+  FOUND_VAR XCTest_FOUND
+  REQUIRED_VARS XCTest_LIBRARY XCTest_INCLUDE_DIR XCTest_EXECUTABLE)
+
+if(XCTest_FOUND)
+  set(XCTest_INCLUDE_DIRS "${XCTest_INCLUDE_DIR}")
+  set(XCTest_LIBRARIES "${XCTest_LIBRARY}")
+endif(XCTest_FOUND)
+
+
+function(xctest_add_bundle target testee)
+  if(NOT XCTest_FOUND)
+    message(FATAL_ERROR "XCTest is required to create a XCTest Bundle.")
+  endif(NOT XCTest_FOUND)
+
+  if(NOT CMAKE_OSX_SYSROOT)
+    message(FATAL_ERROR "Adding XCTest bundles requires CMAKE_OSX_SYSROOT to be set.")
+  endif()
+
+  add_library(${target} MODULE ${ARGN})
+
+  set_target_properties(${target} PROPERTIES
+    BUNDLE TRUE
+    XCTEST TRUE
+    XCTEST_TESTEE ${testee})
+
+  target_link_libraries(${target} PRIVATE "-framework Foundation")
+  target_link_libraries(${target} PRIVATE ${XCTest_LIBRARIES})
+  target_include_directories(${target} PRIVATE ${XCTest_INCLUDE_DIRS})
+
+  # retrieve testee target type
+  if(NOT TARGET ${testee})
+    message(FATAL_ERROR "${testee} is not a target.")
+  endif()
+  get_property(_testee_type TARGET ${testee} PROPERTY TYPE)
+  get_property(_testee_framework TARGET ${testee} PROPERTY FRAMEWORK)
+  get_property(_testee_macosx_bundle TARGET ${testee} PROPERTY MACOSX_BUNDLE)
+
+  if(_testee_type STREQUAL "SHARED_LIBRARY" AND _testee_framework)
+    # testee is a Framework
+    target_link_libraries(${target} PRIVATE ${testee})
+
+  elseif(_testee_type STREQUAL "STATIC_LIBRARY")
+    # testee is a static library
+    target_link_libraries(${target} PRIVATE ${testee})
+
+  elseif(_testee_type STREQUAL "EXECUTABLE" AND _testee_macosx_bundle)
+    # testee is an App Bundle
+    add_dependencies(${target} ${testee})
+    if(XCODE)
+      set_target_properties(${target} PROPERTIES
+        XCODE_ATTRIBUTE_BUNDLE_LOADER "$(TEST_HOST)"
+        XCODE_ATTRIBUTE_TEST_HOST "$<TARGET_FILE:${testee}>")
+      if(XCODE_VERSION VERSION_GREATER_EQUAL 7.3)
+        # The Xcode "new build system" used a different path until Xcode 12.5.
+        if(CMAKE_XCODE_BUILD_SYSTEM EQUAL 12 AND
+           XCODE_VERSION VERSION_LESS 12.5 AND
+           NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+          set(_output_directory "$<TARGET_BUNDLE_CONTENT_DIR:${testee}>")
+        else()
+          set(_output_directory "$<TARGET_BUNDLE_CONTENT_DIR:${testee}>/PlugIns")
+        endif()
+        set_target_properties(${target} PROPERTIES
+          LIBRARY_OUTPUT_DIRECTORY "${_output_directory}")
+      endif()
+    else(XCODE)
+      target_link_libraries(${target}
+        PRIVATE -bundle_loader $<TARGET_FILE:${testee}>)
+    endif(XCODE)
+
+  else()
+    message(FATAL_ERROR "Testee ${testee} is of unsupported type.")
+  endif()
+endfunction(xctest_add_bundle)
+
+
+function(xctest_add_test name bundle)
+  if(NOT XCTest_EXECUTABLE)
+    message(FATAL_ERROR "XCTest executable is required to register a test.")
+  endif()
+
+  # check that bundle is a XCTest Bundle
+
+  if(NOT TARGET ${bundle})
+    message(FATAL_ERROR "${bundle} is not a target.")
+  endif(NOT TARGET ${bundle})
+
+  get_property(_test_type TARGET ${bundle} PROPERTY TYPE)
+  get_property(_test_bundle TARGET ${bundle} PROPERTY BUNDLE)
+  get_property(_test_xctest TARGET ${bundle} PROPERTY XCTEST)
+
+  if(NOT _test_type STREQUAL "MODULE_LIBRARY"
+       OR NOT _test_xctest OR NOT _test_bundle)
+    message(FATAL_ERROR "Test ${bundle} is not an XCTest Bundle")
+  endif()
+
+  # get and check testee properties
+
+  get_property(_testee TARGET ${bundle} PROPERTY XCTEST_TESTEE)
+  if(NOT TARGET ${_testee})
+    message(FATAL_ERROR "${_testee} is not a target.")
+  endif()
+
+  get_property(_testee_type TARGET ${_testee} PROPERTY TYPE)
+  get_property(_testee_framework TARGET ${_testee} PROPERTY FRAMEWORK)
+
+  # register test
+
+  add_test(
+    NAME ${name}
+    COMMAND ${XCTest_EXECUTABLE} $<TARGET_BUNDLE_DIR:${bundle}>)
+
+  # point loader to testee in case rpath is disabled
+
+  if(_testee_type STREQUAL "SHARED_LIBRARY" AND _testee_framework)
+    set_property(TEST ${name} APPEND PROPERTY
+      ENVIRONMENT DYLD_FRAMEWORK_PATH=$<TARGET_LINKER_FILE_DIR:${_testee}>/..)
+  endif()
+endfunction(xctest_add_test)
diff --git a/share/cmake-3.18/Modules/FindXMLRPC.cmake b/share/cmake-3.22/Modules/FindXMLRPC.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindXMLRPC.cmake
rename to share/cmake-3.22/Modules/FindXMLRPC.cmake
diff --git a/share/cmake-3.22/Modules/FindXalanC.cmake b/share/cmake-3.22/Modules/FindXalanC.cmake
new file mode 100644
index 0000000..a7fb766
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindXalanC.cmake
@@ -0,0 +1,155 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindXalanC
+-----------
+
+.. versionadded:: 3.5
+
+Find the Apache Xalan-C++ XSL transform processor headers and libraries.
+
+Imported targets
+^^^^^^^^^^^^^^^^
+
+This module defines the following :prop_tgt:`IMPORTED` targets:
+
+``XalanC::XalanC``
+  The Xalan-C++ ``xalan-c`` library, if found.
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``XalanC_FOUND``
+  true if the Xalan headers and libraries were found
+``XalanC_VERSION``
+  Xalan release version
+``XalanC_INCLUDE_DIRS``
+  the directory containing the Xalan headers; note
+  ``XercesC_INCLUDE_DIRS`` is also required
+``XalanC_LIBRARIES``
+  Xalan libraries to be linked; note ``XercesC_LIBRARIES`` is also
+  required
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set:
+
+``XalanC_INCLUDE_DIR``
+  the directory containing the Xalan headers
+``XalanC_LIBRARY``
+  the Xalan library
+#]=======================================================================]
+
+# Written by Roger Leigh <rleigh@codelibre.net>
+
+function(_XalanC_GET_VERSION  version_hdr)
+    file(STRINGS ${version_hdr} _contents REGEX "^[ \t]*#define XALAN_VERSION_.*")
+    if(_contents)
+        string(REGEX REPLACE "[^*]*#define XALAN_VERSION_MAJOR[ \t(]+([0-9]+).*" "\\1" XalanC_MAJOR "${_contents}")
+        string(REGEX REPLACE "[^*]*#define XALAN_VERSION_MINOR[ \t(]+([0-9]+).*" "\\1" XalanC_MINOR "${_contents}")
+        string(REGEX REPLACE "[^*]*#define XALAN_VERSION_REVISION[ \t(]+([0-9]+).*" "\\1" XalanC_PATCH "${_contents}")
+
+        if(NOT XalanC_MAJOR MATCHES "^[0-9]+$")
+            message(FATAL_ERROR "Version parsing failed for XALAN_VERSION_MAJOR!")
+        endif()
+        if(NOT XalanC_MINOR MATCHES "^[0-9]+$")
+            message(FATAL_ERROR "Version parsing failed for XALAN_VERSION_MINOR!")
+        endif()
+        if(NOT XalanC_PATCH MATCHES "^[0-9]+$")
+            message(FATAL_ERROR "Version parsing failed for XALAN_VERSION_REVISION!")
+        endif()
+
+        set(XalanC_VERSION "${XalanC_MAJOR}.${XalanC_MINOR}.${XalanC_PATCH}" PARENT_SCOPE)
+        set(XalanC_VERSION_MAJOR "${XalanC_MAJOR}" PARENT_SCOPE)
+        set(XalanC_VERSION_MINOR "${XalanC_MINOR}" PARENT_SCOPE)
+        set(XalanC_VERSION_PATCH "${XalanC_PATCH}" PARENT_SCOPE)
+    else()
+        message(FATAL_ERROR "Include file ${version_hdr} does not exist or does not contain expected version information")
+    endif()
+endfunction()
+
+# Find include directory
+find_path(XalanC_INCLUDE_DIR
+          NAMES "xalanc/XalanTransformer/XalanTransformer.hpp"
+          DOC "Xalan-C++ include directory")
+mark_as_advanced(XalanC_INCLUDE_DIR)
+
+if(XalanC_INCLUDE_DIR AND EXISTS "${XalanC_INCLUDE_DIR}/xalanc/Include/XalanVersion.hpp")
+  _XalanC_GET_VERSION("${XalanC_INCLUDE_DIR}/xalanc/Include/XalanVersion.hpp")
+endif()
+
+if(NOT XalanC_LIBRARY)
+  # Find all XalanC libraries
+  find_library(XalanC_LIBRARY_RELEASE
+               NAMES "Xalan-C" "xalan-c"
+                     "Xalan-C_${XalanC_VERSION_MAJOR}"
+                     "Xalan-C_${XalanC_VERSION_MAJOR}_${XalanC_VERSION_MINOR}"
+               DOC "Xalan-C++ libraries (release)")
+  find_library(XalanC_LIBRARY_DEBUG
+               NAMES "Xalan-CD" "xalan-cd"
+                     "Xalan-C_${XalanC_VERSION_MAJOR}D"
+                     "Xalan-C_${XalanC_VERSION_MAJOR}_${XalanC_VERSION_MINOR}D"
+               DOC "Xalan-C++ libraries (debug)")
+  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+  select_library_configurations(XalanC)
+  mark_as_advanced(XalanC_LIBRARY_RELEASE XalanC_LIBRARY_DEBUG)
+endif()
+
+unset(XalanC_VERSION_MAJOR)
+unset(XalanC_VERSION_MINOR)
+unset(XalanC_VERSION_PATCH)
+
+unset(XalanC_XERCESC_REQUIRED)
+if(XalanC_FIND_REQUIRED)
+  set(XalanC_XERCESC_REQUIRED REQUIRED)
+endif()
+find_package(XercesC ${XalanC_XERCESC_REQUIRED})
+unset(XalanC_XERCESC_REQUIRED)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(XalanC
+                                  FOUND_VAR XalanC_FOUND
+                                  REQUIRED_VARS XalanC_LIBRARY
+                                                XalanC_INCLUDE_DIR
+                                                XalanC_VERSION
+                                                XercesC_FOUND
+                                  VERSION_VAR XalanC_VERSION
+                                  FAIL_MESSAGE "Failed to find XalanC")
+
+if(XalanC_FOUND)
+  set(XalanC_INCLUDE_DIRS "${XalanC_INCLUDE_DIR}" ${XercesC_INCLUDE_DIRS})
+  set(XalanC_LIBRARIES "${XalanC_LIBRARY}" ${XercesC_LIBRARIES})
+
+  # For header-only libraries
+  if(NOT TARGET XalanC::XalanC)
+    add_library(XalanC::XalanC UNKNOWN IMPORTED)
+    if(XalanC_INCLUDE_DIRS)
+      set_target_properties(XalanC::XalanC PROPERTIES
+        INTERFACE_INCLUDE_DIRECTORIES "${XalanC_INCLUDE_DIRS}")
+    endif()
+    if(EXISTS "${XalanC_LIBRARY}")
+      set_target_properties(XalanC::XalanC PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+        IMPORTED_LOCATION "${XalanC_LIBRARY}")
+    endif()
+    if(EXISTS "${XalanC_LIBRARY_RELEASE}")
+      set_property(TARGET XalanC::XalanC APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS RELEASE)
+      set_target_properties(XalanC::XalanC PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
+        IMPORTED_LOCATION_RELEASE "${XalanC_LIBRARY_RELEASE}")
+    endif()
+    if(EXISTS "${XalanC_LIBRARY_DEBUG}")
+      set_property(TARGET XalanC::XalanC APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS DEBUG)
+      set_target_properties(XalanC::XalanC PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
+        IMPORTED_LOCATION_DEBUG "${XalanC_LIBRARY_DEBUG}")
+    endif()
+    set_target_properties(XalanC::XalanC PROPERTIES INTERFACE_LINK_LIBRARIES XercesC::XercesC)
+  endif()
+endif()
diff --git a/share/cmake-3.22/Modules/FindXercesC.cmake b/share/cmake-3.22/Modules/FindXercesC.cmake
new file mode 100644
index 0000000..af1b0b4
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindXercesC.cmake
@@ -0,0 +1,149 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindXercesC
+-----------
+
+.. versionadded:: 3.1
+
+Find the Apache Xerces-C++ validating XML parser headers and libraries.
+
+Imported targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.5
+
+This module defines the following :prop_tgt:`IMPORTED` targets:
+
+``XercesC::XercesC``
+  The Xerces-C++ ``xerces-c`` library, if found.
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables in your project:
+
+``XercesC_FOUND``
+  true if the Xerces headers and libraries were found
+``XercesC_VERSION``
+  Xerces release version
+``XercesC_INCLUDE_DIRS``
+  the directory containing the Xerces headers
+``XercesC_LIBRARIES``
+  Xerces libraries to be linked
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set:
+
+``XercesC_INCLUDE_DIR``
+  the directory containing the Xerces headers
+``XercesC_LIBRARY``
+  the Xerces library
+
+.. versionadded:: 3.4
+  Debug and Release variants are found separately.
+#]=======================================================================]
+
+# Written by Roger Leigh <rleigh@codelibre.net>
+
+function(_XercesC_GET_VERSION  version_hdr)
+    file(STRINGS ${version_hdr} _contents REGEX "^[ \t]*#define XERCES_VERSION_.*")
+    if(_contents)
+        string(REGEX REPLACE ".*#define XERCES_VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" XercesC_MAJOR "${_contents}")
+        string(REGEX REPLACE ".*#define XERCES_VERSION_MINOR[ \t]+([0-9]+).*" "\\1" XercesC_MINOR "${_contents}")
+        string(REGEX REPLACE ".*#define XERCES_VERSION_REVISION[ \t]+([0-9]+).*" "\\1" XercesC_PATCH "${_contents}")
+
+        if(NOT XercesC_MAJOR MATCHES "^[0-9]+$")
+            message(FATAL_ERROR "Version parsing failed for XERCES_VERSION_MAJOR!")
+        endif()
+        if(NOT XercesC_MINOR MATCHES "^[0-9]+$")
+            message(FATAL_ERROR "Version parsing failed for XERCES_VERSION_MINOR!")
+        endif()
+        if(NOT XercesC_PATCH MATCHES "^[0-9]+$")
+            message(FATAL_ERROR "Version parsing failed for XERCES_VERSION_REVISION!")
+        endif()
+
+        set(XercesC_VERSION "${XercesC_MAJOR}.${XercesC_MINOR}.${XercesC_PATCH}" PARENT_SCOPE)
+        set(XercesC_VERSION_MAJOR "${XercesC_MAJOR}" PARENT_SCOPE)
+        set(XercesC_VERSION_MINOR "${XercesC_MINOR}" PARENT_SCOPE)
+        set(XercesC_VERSION_PATCH "${XercesC_PATCH}" PARENT_SCOPE)
+    else()
+        message(FATAL_ERROR "Include file ${version_hdr} does not exist or does not contain expected version information")
+    endif()
+endfunction()
+
+# Find include directory
+find_path(XercesC_INCLUDE_DIR
+          NAMES "xercesc/util/PlatformUtils.hpp"
+          DOC "Xerces-C++ include directory")
+mark_as_advanced(XercesC_INCLUDE_DIR)
+
+if(XercesC_INCLUDE_DIR AND EXISTS "${XercesC_INCLUDE_DIR}/xercesc/util/XercesVersion.hpp")
+  _XercesC_GET_VERSION("${XercesC_INCLUDE_DIR}/xercesc/util/XercesVersion.hpp")
+endif()
+
+if(NOT XercesC_LIBRARY)
+  # Find all XercesC libraries
+  find_library(XercesC_LIBRARY_RELEASE
+               NAMES "xerces-c"
+                     "xerces-c_${XercesC_VERSION_MAJOR}"
+                     "xerces-c-${XercesC_VERSION_MAJOR}.${XercesC_VERSION_MINOR}"
+               DOC "Xerces-C++ libraries (release)")
+  find_library(XercesC_LIBRARY_DEBUG
+               NAMES "xerces-cd"
+                     "xerces-c_${XercesC_VERSION_MAJOR}D"
+                     "xerces-c_${XercesC_VERSION_MAJOR}_${XercesC_VERSION_MINOR}D"
+               DOC "Xerces-C++ libraries (debug)")
+  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+  select_library_configurations(XercesC)
+  mark_as_advanced(XercesC_LIBRARY_RELEASE XercesC_LIBRARY_DEBUG)
+endif()
+
+unset(XercesC_VERSION_MAJOR)
+unset(XercesC_VERSION_MINOR)
+unset(XercesC_VERSION_PATCH)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(XercesC
+                                  FOUND_VAR XercesC_FOUND
+                                  REQUIRED_VARS XercesC_LIBRARY
+                                                XercesC_INCLUDE_DIR
+                                                XercesC_VERSION
+                                  VERSION_VAR XercesC_VERSION
+                                  FAIL_MESSAGE "Failed to find XercesC")
+
+if(XercesC_FOUND)
+  set(XercesC_INCLUDE_DIRS "${XercesC_INCLUDE_DIR}")
+  set(XercesC_LIBRARIES "${XercesC_LIBRARY}")
+
+  # For header-only libraries
+  if(NOT TARGET XercesC::XercesC)
+    add_library(XercesC::XercesC UNKNOWN IMPORTED)
+    if(XercesC_INCLUDE_DIRS)
+      set_target_properties(XercesC::XercesC PROPERTIES
+        INTERFACE_INCLUDE_DIRECTORIES "${XercesC_INCLUDE_DIRS}")
+    endif()
+    if(EXISTS "${XercesC_LIBRARY}")
+      set_target_properties(XercesC::XercesC PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+        IMPORTED_LOCATION "${XercesC_LIBRARY}")
+    endif()
+    if(EXISTS "${XercesC_LIBRARY_RELEASE}")
+      set_property(TARGET XercesC::XercesC APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS RELEASE)
+      set_target_properties(XercesC::XercesC PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
+        IMPORTED_LOCATION_RELEASE "${XercesC_LIBRARY_RELEASE}")
+    endif()
+    if(EXISTS "${XercesC_LIBRARY_DEBUG}")
+      set_property(TARGET XercesC::XercesC APPEND PROPERTY
+        IMPORTED_CONFIGURATIONS DEBUG)
+      set_target_properties(XercesC::XercesC PROPERTIES
+        IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
+        IMPORTED_LOCATION_DEBUG "${XercesC_LIBRARY_DEBUG}")
+    endif()
+  endif()
+endif()
diff --git a/share/cmake-3.22/Modules/FindZLIB.cmake b/share/cmake-3.22/Modules/FindZLIB.cmake
new file mode 100644
index 0000000..5778b03
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindZLIB.cmake
@@ -0,0 +1,154 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindZLIB
+--------
+
+Find the native ZLIB includes and library.
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+.. versionadded:: 3.1
+
+This module defines :prop_tgt:`IMPORTED` target ``ZLIB::ZLIB``, if
+ZLIB has been found.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module defines the following variables:
+
+::
+
+  ZLIB_INCLUDE_DIRS   - where to find zlib.h, etc.
+  ZLIB_LIBRARIES      - List of libraries when using zlib.
+  ZLIB_FOUND          - True if zlib found.
+
+::
+
+  ZLIB_VERSION_STRING - The version of zlib found (x.y.z)
+  ZLIB_VERSION_MAJOR  - The major version of zlib
+  ZLIB_VERSION_MINOR  - The minor version of zlib
+  ZLIB_VERSION_PATCH  - The patch version of zlib
+  ZLIB_VERSION_TWEAK  - The tweak version of zlib
+
+.. versionadded:: 3.4
+  Debug and Release variants are found separately.
+
+Backward Compatibility
+^^^^^^^^^^^^^^^^^^^^^^
+
+The following variable are provided for backward compatibility
+
+::
+
+  ZLIB_MAJOR_VERSION  - The major version of zlib
+  ZLIB_MINOR_VERSION  - The minor version of zlib
+  ZLIB_PATCH_VERSION  - The patch version of zlib
+
+Hints
+^^^^^
+
+A user may set ``ZLIB_ROOT`` to a zlib installation root to tell this
+module where to look.
+#]=======================================================================]
+
+set(_ZLIB_SEARCHES)
+
+# Search ZLIB_ROOT first if it is set.
+if(ZLIB_ROOT)
+  set(_ZLIB_SEARCH_ROOT PATHS ${ZLIB_ROOT} NO_DEFAULT_PATH)
+  list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_ROOT)
+endif()
+
+# Normal search.
+set(_ZLIB_x86 "(x86)")
+set(_ZLIB_SEARCH_NORMAL
+    PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]"
+          "$ENV{ProgramFiles}/zlib"
+          "$ENV{ProgramFiles${_ZLIB_x86}}/zlib")
+unset(_ZLIB_x86)
+list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_NORMAL)
+
+set(ZLIB_NAMES z zlib zdll zlib1 zlibstatic)
+set(ZLIB_NAMES_DEBUG zd zlibd zdlld zlibd1 zlib1d zlibstaticd)
+
+# Try each search configuration.
+foreach(search ${_ZLIB_SEARCHES})
+  find_path(ZLIB_INCLUDE_DIR NAMES zlib.h ${${search}} PATH_SUFFIXES include)
+endforeach()
+
+# Allow ZLIB_LIBRARY to be set manually, as the location of the zlib library
+if(NOT ZLIB_LIBRARY)
+  foreach(search ${_ZLIB_SEARCHES})
+    find_library(ZLIB_LIBRARY_RELEASE NAMES ${ZLIB_NAMES} NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
+    find_library(ZLIB_LIBRARY_DEBUG NAMES ${ZLIB_NAMES_DEBUG} NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
+  endforeach()
+
+  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+  select_library_configurations(ZLIB)
+endif()
+
+unset(ZLIB_NAMES)
+unset(ZLIB_NAMES_DEBUG)
+
+mark_as_advanced(ZLIB_INCLUDE_DIR)
+
+if(ZLIB_INCLUDE_DIR AND EXISTS "${ZLIB_INCLUDE_DIR}/zlib.h")
+    file(STRINGS "${ZLIB_INCLUDE_DIR}/zlib.h" ZLIB_H REGEX "^#define ZLIB_VERSION \"[^\"]*\"$")
+
+    string(REGEX REPLACE "^.*ZLIB_VERSION \"([0-9]+).*$" "\\1" ZLIB_VERSION_MAJOR "${ZLIB_H}")
+    string(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_MINOR  "${ZLIB_H}")
+    string(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_PATCH "${ZLIB_H}")
+    set(ZLIB_VERSION_STRING "${ZLIB_VERSION_MAJOR}.${ZLIB_VERSION_MINOR}.${ZLIB_VERSION_PATCH}")
+
+    # only append a TWEAK version if it exists:
+    set(ZLIB_VERSION_TWEAK "")
+    if( "${ZLIB_H}" MATCHES "ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+)")
+        set(ZLIB_VERSION_TWEAK "${CMAKE_MATCH_1}")
+        string(APPEND ZLIB_VERSION_STRING ".${ZLIB_VERSION_TWEAK}")
+    endif()
+
+    set(ZLIB_MAJOR_VERSION "${ZLIB_VERSION_MAJOR}")
+    set(ZLIB_MINOR_VERSION "${ZLIB_VERSION_MINOR}")
+    set(ZLIB_PATCH_VERSION "${ZLIB_VERSION_PATCH}")
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZLIB REQUIRED_VARS ZLIB_LIBRARY ZLIB_INCLUDE_DIR
+                                       VERSION_VAR ZLIB_VERSION_STRING)
+
+if(ZLIB_FOUND)
+    set(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
+
+    if(NOT ZLIB_LIBRARIES)
+      set(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
+    endif()
+
+    if(NOT TARGET ZLIB::ZLIB)
+      add_library(ZLIB::ZLIB UNKNOWN IMPORTED)
+      set_target_properties(ZLIB::ZLIB PROPERTIES
+        INTERFACE_INCLUDE_DIRECTORIES "${ZLIB_INCLUDE_DIRS}")
+
+      if(ZLIB_LIBRARY_RELEASE)
+        set_property(TARGET ZLIB::ZLIB APPEND PROPERTY
+          IMPORTED_CONFIGURATIONS RELEASE)
+        set_target_properties(ZLIB::ZLIB PROPERTIES
+          IMPORTED_LOCATION_RELEASE "${ZLIB_LIBRARY_RELEASE}")
+      endif()
+
+      if(ZLIB_LIBRARY_DEBUG)
+        set_property(TARGET ZLIB::ZLIB APPEND PROPERTY
+          IMPORTED_CONFIGURATIONS DEBUG)
+        set_target_properties(ZLIB::ZLIB PROPERTIES
+          IMPORTED_LOCATION_DEBUG "${ZLIB_LIBRARY_DEBUG}")
+      endif()
+
+      if(NOT ZLIB_LIBRARY_RELEASE AND NOT ZLIB_LIBRARY_DEBUG)
+        set_property(TARGET ZLIB::ZLIB APPEND PROPERTY
+          IMPORTED_LOCATION "${ZLIB_LIBRARY}")
+      endif()
+    endif()
+endif()
diff --git a/share/cmake-3.18/Modules/Findosg.cmake b/share/cmake-3.22/Modules/Findosg.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Findosg.cmake
rename to share/cmake-3.22/Modules/Findosg.cmake
diff --git a/share/cmake-3.18/Modules/FindosgAnimation.cmake b/share/cmake-3.22/Modules/FindosgAnimation.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgAnimation.cmake
rename to share/cmake-3.22/Modules/FindosgAnimation.cmake
diff --git a/share/cmake-3.18/Modules/FindosgDB.cmake b/share/cmake-3.22/Modules/FindosgDB.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgDB.cmake
rename to share/cmake-3.22/Modules/FindosgDB.cmake
diff --git a/share/cmake-3.18/Modules/FindosgFX.cmake b/share/cmake-3.22/Modules/FindosgFX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgFX.cmake
rename to share/cmake-3.22/Modules/FindosgFX.cmake
diff --git a/share/cmake-3.18/Modules/FindosgGA.cmake b/share/cmake-3.22/Modules/FindosgGA.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgGA.cmake
rename to share/cmake-3.22/Modules/FindosgGA.cmake
diff --git a/share/cmake-3.18/Modules/FindosgIntrospection.cmake b/share/cmake-3.22/Modules/FindosgIntrospection.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgIntrospection.cmake
rename to share/cmake-3.22/Modules/FindosgIntrospection.cmake
diff --git a/share/cmake-3.18/Modules/FindosgManipulator.cmake b/share/cmake-3.22/Modules/FindosgManipulator.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgManipulator.cmake
rename to share/cmake-3.22/Modules/FindosgManipulator.cmake
diff --git a/share/cmake-3.18/Modules/FindosgParticle.cmake b/share/cmake-3.22/Modules/FindosgParticle.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgParticle.cmake
rename to share/cmake-3.22/Modules/FindosgParticle.cmake
diff --git a/share/cmake-3.18/Modules/FindosgPresentation.cmake b/share/cmake-3.22/Modules/FindosgPresentation.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgPresentation.cmake
rename to share/cmake-3.22/Modules/FindosgPresentation.cmake
diff --git a/share/cmake-3.18/Modules/FindosgProducer.cmake b/share/cmake-3.22/Modules/FindosgProducer.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgProducer.cmake
rename to share/cmake-3.22/Modules/FindosgProducer.cmake
diff --git a/share/cmake-3.18/Modules/FindosgQt.cmake b/share/cmake-3.22/Modules/FindosgQt.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgQt.cmake
rename to share/cmake-3.22/Modules/FindosgQt.cmake
diff --git a/share/cmake-3.18/Modules/FindosgShadow.cmake b/share/cmake-3.22/Modules/FindosgShadow.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgShadow.cmake
rename to share/cmake-3.22/Modules/FindosgShadow.cmake
diff --git a/share/cmake-3.18/Modules/FindosgSim.cmake b/share/cmake-3.22/Modules/FindosgSim.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgSim.cmake
rename to share/cmake-3.22/Modules/FindosgSim.cmake
diff --git a/share/cmake-3.18/Modules/FindosgTerrain.cmake b/share/cmake-3.22/Modules/FindosgTerrain.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgTerrain.cmake
rename to share/cmake-3.22/Modules/FindosgTerrain.cmake
diff --git a/share/cmake-3.18/Modules/FindosgText.cmake b/share/cmake-3.22/Modules/FindosgText.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgText.cmake
rename to share/cmake-3.22/Modules/FindosgText.cmake
diff --git a/share/cmake-3.18/Modules/FindosgUtil.cmake b/share/cmake-3.22/Modules/FindosgUtil.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgUtil.cmake
rename to share/cmake-3.22/Modules/FindosgUtil.cmake
diff --git a/share/cmake-3.18/Modules/FindosgViewer.cmake b/share/cmake-3.22/Modules/FindosgViewer.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgViewer.cmake
rename to share/cmake-3.22/Modules/FindosgViewer.cmake
diff --git a/share/cmake-3.18/Modules/FindosgVolume.cmake b/share/cmake-3.22/Modules/FindosgVolume.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgVolume.cmake
rename to share/cmake-3.22/Modules/FindosgVolume.cmake
diff --git a/share/cmake-3.18/Modules/FindosgWidget.cmake b/share/cmake-3.22/Modules/FindosgWidget.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/FindosgWidget.cmake
rename to share/cmake-3.22/Modules/FindosgWidget.cmake
diff --git a/share/cmake-3.18/Modules/Findosg_functions.cmake b/share/cmake-3.22/Modules/Findosg_functions.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Findosg_functions.cmake
rename to share/cmake-3.22/Modules/Findosg_functions.cmake
diff --git a/share/cmake-3.22/Modules/FindwxWidgets.cmake b/share/cmake-3.22/Modules/FindwxWidgets.cmake
new file mode 100644
index 0000000..63af9b6
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindwxWidgets.cmake
@@ -0,0 +1,1243 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindwxWidgets
+-------------
+
+Find a wxWidgets (a.k.a., wxWindows) installation.
+
+This module finds if wxWidgets is installed and selects a default
+configuration to use.  wxWidgets is a modular library.  To specify the
+modules that you will use, you need to name them as components to the
+package:
+
+find_package(wxWidgets COMPONENTS core base ... OPTIONAL_COMPONENTS net ...)
+
+.. versionadded:: 3.4
+  Support for :command:`find_package` version argument; ``webview`` component.
+
+.. versionadded:: 3.14
+  ``OPTIONAL_COMPONENTS`` support.
+
+There are two search branches: a windows style and a unix style.  For
+windows, the following variables are searched for and set to defaults
+in case of multiple choices.  Change them if the defaults are not
+desired (i.e., these are the only variables you should change to
+select a configuration):
+
+::
+
+  wxWidgets_ROOT_DIR      - Base wxWidgets directory
+                            (e.g., C:/wxWidgets-2.6.3).
+  wxWidgets_LIB_DIR       - Path to wxWidgets libraries
+                            (e.g., C:/wxWidgets-2.6.3/lib/vc_lib).
+  wxWidgets_CONFIGURATION - Configuration to use
+                            (e.g., msw, mswd, mswu, mswunivud, etc.)
+  wxWidgets_EXCLUDE_COMMON_LIBRARIES
+                          - Set to TRUE to exclude linking of
+                            commonly required libs (e.g., png tiff
+                            jpeg zlib regex expat).
+
+
+
+For unix style it uses the wx-config utility.  You can select between
+debug/release, unicode/ansi, universal/non-universal, and
+static/shared in the QtDialog or ccmake interfaces by turning ON/OFF
+the following variables:
+
+::
+
+  wxWidgets_USE_DEBUG
+  wxWidgets_USE_UNICODE
+  wxWidgets_USE_UNIVERSAL
+  wxWidgets_USE_STATIC
+
+
+
+There is also a wxWidgets_CONFIG_OPTIONS variable for all other
+options that need to be passed to the wx-config utility.  For example,
+to use the base toolkit found in the /usr/local path, set the variable
+(before calling the FIND_PACKAGE command) as such:
+
+::
+
+  set(wxWidgets_CONFIG_OPTIONS --toolkit=base --prefix=/usr)
+
+
+
+The following are set after the configuration is done for both windows
+and unix style:
+
+::
+
+  wxWidgets_FOUND            - Set to TRUE if wxWidgets was found.
+  wxWidgets_INCLUDE_DIRS     - Include directories for WIN32
+                               i.e., where to find "wx/wx.h" and
+                               "wx/setup.h"; possibly empty for unices.
+  wxWidgets_LIBRARIES        - Path to the wxWidgets libraries.
+  wxWidgets_LIBRARY_DIRS     - compile time link dirs, useful for
+                               rpath on UNIX. Typically an empty string
+                               in WIN32 environment.
+  wxWidgets_DEFINITIONS      - Contains defines required to compile/link
+                               against WX, e.g. WXUSINGDLL
+  wxWidgets_DEFINITIONS_DEBUG- Contains defines required to compile/link
+                               against WX debug builds, e.g. __WXDEBUG__
+  wxWidgets_CXX_FLAGS        - Include dirs and compiler flags for
+                               unices, empty on WIN32. Essentially
+                               "`wx-config --cxxflags`".
+  wxWidgets_USE_FILE         - Convenience include file.
+
+.. versionadded:: 3.11
+  The following environment variables can be used as hints: ``WX_CONFIG``,
+  ``WXRC_CMD``.
+
+
+Sample usage:
+
+::
+
+   # Note that for MinGW users the order of libs is important!
+   find_package(wxWidgets COMPONENTS gl core base OPTIONAL_COMPONENTS net)
+   if(wxWidgets_FOUND)
+     include(${wxWidgets_USE_FILE})
+     # and for each of your dependent executable/library targets:
+     target_link_libraries(<YourTarget> ${wxWidgets_LIBRARIES})
+   endif()
+
+
+
+If wxWidgets is required (i.e., not an optional part):
+
+::
+
+   find_package(wxWidgets REQUIRED gl core base OPTIONAL_COMPONENTS net)
+   include(${wxWidgets_USE_FILE})
+   # and for each of your dependent executable/library targets:
+   target_link_libraries(<YourTarget> ${wxWidgets_LIBRARIES})
+#]=======================================================================]
+
+#
+# FIXME: check this and provide a correct sample usage...
+#        Remember to connect back to the upper text.
+# Sample usage with monolithic wx build:
+#
+#   find_package(wxWidgets COMPONENTS mono)
+#   ...
+
+# NOTES
+#
+# This module has been tested on the WIN32 platform with wxWidgets
+# 2.6.2, 2.6.3, and 2.5.3. However, it has been designed to
+# easily extend support to all possible builds, e.g., static/shared,
+# debug/release, unicode, universal, multilib/monolithic, etc..
+#
+# If you want to use the module and your build type is not supported
+# out-of-the-box, please contact me to exchange information on how
+# your system is setup and I'll try to add support for it.
+#
+# AUTHOR
+#
+# Miguel A. Figueroa-Villanueva (miguelf at ieee dot org).
+# Jan Woetzel (jw at mip.informatik.uni-kiel.de).
+#
+# Based on previous works of:
+# Jan Woetzel (FindwxWindows.cmake),
+# Jorgen Bodde and Jerry Fath (FindwxWin.cmake).
+
+# TODO/ideas
+#
+# (1) Option/Setting to use all available wx libs
+# In contrast to expert developer who lists the
+# minimal set of required libs in wxWidgets_USE_LIBS
+# there is the newbie user:
+#   - who just wants to link against WX with more 'magic'
+#   - doesn't know the internal structure of WX or how it was built,
+#     in particular if it is monolithic or not
+#   - want to link against all available WX libs
+# Basically, the intent here is to mimic what wx-config would do by
+# default (i.e., `wx-config --libs`).
+#
+# Possible solution:
+#   Add a reserved keyword "std" that initializes to what wx-config
+# would default to. If the user has not set the wxWidgets_USE_LIBS,
+# default to "std" instead of "base core" as it is now. To implement
+# "std" will basically boil down to a FOR_EACH lib-FOUND, but maybe
+# checking whether a minimal set was found.
+
+
+# FIXME: This and all the DBG_MSG calls should be removed after the
+# module stabilizes.
+#
+# Helper macro to control the debugging output globally. There are
+# two versions for controlling how verbose your output should be.
+macro(DBG_MSG _MSG)
+#  message(STATUS
+#    "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}")
+endmacro()
+macro(DBG_MSG_V _MSG)
+#  message(STATUS
+#    "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}")
+endmacro()
+
+# Clear return values in case the module is loaded more than once.
+set(wxWidgets_FOUND FALSE)
+set(wxWidgets_INCLUDE_DIRS "")
+set(wxWidgets_LIBRARIES    "")
+set(wxWidgets_LIBRARY_DIRS "")
+set(wxWidgets_CXX_FLAGS    "")
+
+# DEPRECATED: This is a patch to support the DEPRECATED use of
+# wxWidgets_USE_LIBS.
+#
+# If wxWidgets_USE_LIBS is set:
+# - if using <components>, then override wxWidgets_USE_LIBS
+# - else set wxWidgets_FIND_COMPONENTS to wxWidgets_USE_LIBS
+if(wxWidgets_USE_LIBS AND NOT wxWidgets_FIND_COMPONENTS)
+  set(wxWidgets_FIND_COMPONENTS ${wxWidgets_USE_LIBS})
+endif()
+DBG_MSG("wxWidgets_FIND_COMPONENTS : ${wxWidgets_FIND_COMPONENTS}")
+
+# Add the convenience use file if available.
+#
+# Get dir of this file which may reside in:
+# - CMAKE_MAKE_ROOT/Modules on CMake installation
+# - CMAKE_MODULE_PATH if user prefers his own specialized version
+set(wxWidgets_USE_FILE "")
+get_filename_component(
+  wxWidgets_CURRENT_LIST_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
+# Prefer an existing customized version, but the user might override
+# the FindwxWidgets module and not the UsewxWidgets one.
+if(EXISTS "${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake")
+  set(wxWidgets_USE_FILE
+    "${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake")
+else()
+  set(wxWidgets_USE_FILE UsewxWidgets)
+endif()
+
+#=====================================================================
+# Determine whether unix or win32 paths should be used
+#=====================================================================
+if(WIN32 AND NOT CYGWIN AND NOT MSYS AND NOT CMAKE_CROSSCOMPILING)
+  set(wxWidgets_FIND_STYLE "win32")
+else()
+  set(wxWidgets_FIND_STYLE "unix")
+endif()
+
+#=====================================================================
+# WIN32_FIND_STYLE
+#=====================================================================
+if(wxWidgets_FIND_STYLE STREQUAL "win32")
+  # Useful common wx libs needed by almost all components.
+  set(wxWidgets_COMMON_LIBRARIES png tiff jpeg zlib regex expat)
+
+  # DEPRECATED: Use find_package(wxWidgets COMPONENTS mono) instead.
+  if(NOT wxWidgets_FIND_COMPONENTS)
+    if(wxWidgets_USE_MONOLITHIC)
+      set(wxWidgets_FIND_COMPONENTS mono)
+    else()
+      set(wxWidgets_FIND_COMPONENTS core base) # this is default
+    endif()
+  endif()
+
+  # Add the common (usually required libs) unless
+  # wxWidgets_EXCLUDE_COMMON_LIBRARIES has been set.
+  if(NOT wxWidgets_EXCLUDE_COMMON_LIBRARIES)
+    list(APPEND wxWidgets_FIND_COMPONENTS
+      ${wxWidgets_COMMON_LIBRARIES})
+  endif()
+
+  #-------------------------------------------------------------------
+  # WIN32: Helper MACROS
+  #-------------------------------------------------------------------
+  #
+  # Get filename components for a configuration. For example,
+  #   if _CONFIGURATION = mswunivud, then _PF="msw", _UNV=univ, _UCD=u _DBG=d
+  #   if _CONFIGURATION = mswu,      then _PF="msw", _UNV="",   _UCD=u _DBG=""
+  #
+  macro(WX_GET_NAME_COMPONENTS _CONFIGURATION _PF _UNV _UCD _DBG)
+    DBG_MSG_V(${_CONFIGURATION})
+    string(REGEX MATCH "univ" ${_UNV} "${_CONFIGURATION}")
+    string(REGEX REPLACE "[msw|qt].*(u)[d]*$" "u" ${_UCD} "${_CONFIGURATION}")
+    if(${_UCD} STREQUAL ${_CONFIGURATION})
+      set(${_UCD} "")
+    endif()
+    string(REGEX MATCH "d$" ${_DBG} "${_CONFIGURATION}")
+    string(REGEX MATCH "^[msw|qt]*" ${_PF} "${_CONFIGURATION}")
+  endmacro()
+
+  #
+  # Find libraries associated to a configuration.
+  #
+  macro(WX_FIND_LIBS _PF _UNV _UCD _DBG)
+    DBG_MSG_V("m_unv = ${_UNV}")
+    DBG_MSG_V("m_ucd = ${_UCD}")
+    DBG_MSG_V("m_dbg = ${_DBG}")
+
+    # FIXME: What if both regex libs are available. regex should be
+    # found outside the loop and only wx${LIB}${_UCD}${_DBG}.
+    # Find wxWidgets common libraries.
+    foreach(LIB ${wxWidgets_COMMON_LIBRARIES} scintilla)
+      find_library(WX_${LIB}${_DBG}
+        NAMES
+        wx${LIB}${_UCD}${_DBG} # for regex
+        wx${LIB}${_DBG}
+        PATHS ${WX_LIB_DIR}
+        NO_DEFAULT_PATH
+        )
+      mark_as_advanced(WX_${LIB}${_DBG})
+    endforeach()
+
+    # Find wxWidgets multilib base libraries.
+    find_library(WX_base${_DBG}
+      NAMES
+      wxbase31${_UCD}${_DBG}
+      wxbase30${_UCD}${_DBG}
+      wxbase29${_UCD}${_DBG}
+      wxbase28${_UCD}${_DBG}
+      wxbase27${_UCD}${_DBG}
+      wxbase26${_UCD}${_DBG}
+      wxbase25${_UCD}${_DBG}
+      PATHS ${WX_LIB_DIR}
+      NO_DEFAULT_PATH
+      )
+    mark_as_advanced(WX_base${_DBG})
+    foreach(LIB net odbc xml)
+      find_library(WX_${LIB}${_DBG}
+        NAMES
+        wxbase31${_UCD}${_DBG}_${LIB}
+        wxbase30${_UCD}${_DBG}_${LIB}
+        wxbase29${_UCD}${_DBG}_${LIB}
+        wxbase28${_UCD}${_DBG}_${LIB}
+        wxbase27${_UCD}${_DBG}_${LIB}
+        wxbase26${_UCD}${_DBG}_${LIB}
+        wxbase25${_UCD}${_DBG}_${LIB}
+        PATHS ${WX_LIB_DIR}
+        NO_DEFAULT_PATH
+        )
+      mark_as_advanced(WX_${LIB}${_DBG})
+    endforeach()
+
+    # Find wxWidgets monolithic library.
+    find_library(WX_mono${_DBG}
+      NAMES
+      wx${_PF}${_UNV}31${_UCD}${_DBG}
+      wx${_PF}${_UNV}30${_UCD}${_DBG}
+      wx${_PF}${_UNV}29${_UCD}${_DBG}
+      wx${_PF}${_UNV}28${_UCD}${_DBG}
+      wx${_PF}${_UNV}27${_UCD}${_DBG}
+      wx${_PF}${_UNV}26${_UCD}${_DBG}
+      wx${_PF}${_UNV}25${_UCD}${_DBG}
+      PATHS ${WX_LIB_DIR}
+      NO_DEFAULT_PATH
+      )
+    mark_as_advanced(WX_mono${_DBG})
+
+    # Find wxWidgets multilib libraries.
+    foreach(LIB core adv aui html media xrc dbgrid gl qa richtext
+                stc ribbon propgrid webview)
+      find_library(WX_${LIB}${_DBG}
+        NAMES
+        wx${_PF}${_UNV}31${_UCD}${_DBG}_${LIB}
+        wx${_PF}${_UNV}30${_UCD}${_DBG}_${LIB}
+        wx${_PF}${_UNV}29${_UCD}${_DBG}_${LIB}
+        wx${_PF}${_UNV}28${_UCD}${_DBG}_${LIB}
+        wx${_PF}${_UNV}27${_UCD}${_DBG}_${LIB}
+        wx${_PF}${_UNV}26${_UCD}${_DBG}_${LIB}
+        wx${_PF}${_UNV}25${_UCD}${_DBG}_${LIB}
+        PATHS ${WX_LIB_DIR}
+        NO_DEFAULT_PATH
+        )
+      mark_as_advanced(WX_${LIB}${_DBG})
+    endforeach()
+  endmacro()
+
+  #
+  # Clear all library paths, so that FIND_LIBRARY refinds them.
+  #
+  # Clear a lib, reset its found flag, and mark as advanced.
+  macro(WX_CLEAR_LIB _LIB)
+    set(${_LIB} "${_LIB}-NOTFOUND" CACHE FILEPATH "Cleared." FORCE)
+    set(${_LIB}_FOUND FALSE)
+    mark_as_advanced(${_LIB})
+  endmacro()
+  # Clear all debug or release library paths (arguments are "d" or "").
+  macro(WX_CLEAR_ALL_LIBS _DBG)
+    # Clear wxWidgets common libraries.
+    foreach(LIB ${wxWidgets_COMMON_LIBRARIES} scintilla)
+      WX_CLEAR_LIB(WX_${LIB}${_DBG})
+    endforeach()
+
+    # Clear wxWidgets multilib base libraries.
+    WX_CLEAR_LIB(WX_base${_DBG})
+    foreach(LIB net odbc xml)
+      WX_CLEAR_LIB(WX_${LIB}${_DBG})
+    endforeach()
+
+    # Clear wxWidgets monolithic library.
+    WX_CLEAR_LIB(WX_mono${_DBG})
+
+    # Clear wxWidgets multilib libraries.
+    foreach(LIB core adv aui html media xrc dbgrid gl qa richtext
+                webview stc ribbon propgrid)
+      WX_CLEAR_LIB(WX_${LIB}${_DBG})
+    endforeach()
+  endmacro()
+  # Clear all wxWidgets debug libraries.
+  macro(WX_CLEAR_ALL_DBG_LIBS)
+    WX_CLEAR_ALL_LIBS("d")
+  endmacro()
+  # Clear all wxWidgets release libraries.
+  macro(WX_CLEAR_ALL_REL_LIBS)
+    WX_CLEAR_ALL_LIBS("")
+  endmacro()
+
+  #
+  # Set the wxWidgets_LIBRARIES variable.
+  # Also, Sets output variable wxWidgets_FOUND to FALSE if it fails.
+  #
+  macro(WX_SET_LIBRARIES _LIBS _DBG)
+    DBG_MSG_V("Looking for ${${_LIBS}}")
+    if(WX_USE_REL_AND_DBG)
+      foreach(LIB ${${_LIBS}})
+        DBG_MSG_V("Searching for ${LIB} and ${LIB}d")
+        DBG_MSG_V("WX_${LIB}  : ${WX_${LIB}}")
+        DBG_MSG_V("WX_${LIB}d : ${WX_${LIB}d}")
+        if(WX_${LIB} AND WX_${LIB}d)
+          DBG_MSG_V("Found ${LIB} and ${LIB}d")
+          list(APPEND wxWidgets_LIBRARIES
+            debug ${WX_${LIB}d} optimized ${WX_${LIB}}
+            )
+          set(wxWidgets_${LIB}_FOUND TRUE)
+        elseif(NOT wxWidgets_FIND_REQUIRED_${LIB})
+          DBG_MSG_V("- ignored optional missing WX_${LIB}=${WX_${LIB}} or WX_${LIB}d=${WX_${LIB}d}")
+        else()
+          DBG_MSG_V("- not found due to missing WX_${LIB}=${WX_${LIB}} or WX_${LIB}d=${WX_${LIB}d}")
+          set(wxWidgets_FOUND FALSE)
+        endif()
+      endforeach()
+    else()
+      foreach(LIB ${${_LIBS}})
+        DBG_MSG_V("Searching for ${LIB}${_DBG}")
+        DBG_MSG_V("WX_${LIB}${_DBG} : ${WX_${LIB}${_DBG}}")
+        if(WX_${LIB}${_DBG})
+          DBG_MSG_V("Found ${LIB}${_DBG}")
+          list(APPEND wxWidgets_LIBRARIES ${WX_${LIB}${_DBG}})
+          set(wxWidgets_${LIB}_FOUND TRUE)
+        elseif(NOT wxWidgets_FIND_REQUIRED_${LIB})
+          DBG_MSG_V("- ignored optional missing WX_${LIB}${_DBG}=${WX_${LIB}${_DBG}}")
+        else()
+          DBG_MSG_V("- not found due to missing WX_${LIB}${_DBG}=${WX_${LIB}${_DBG}}")
+          set(wxWidgets_FOUND FALSE)
+        endif()
+      endforeach()
+    endif()
+
+    DBG_MSG_V("OpenGL")
+    list(FIND ${_LIBS} gl WX_USE_GL)
+    if(NOT WX_USE_GL EQUAL -1)
+      DBG_MSG_V("- is required.")
+      list(APPEND wxWidgets_LIBRARIES opengl32 glu32)
+    endif()
+
+    list(APPEND wxWidgets_LIBRARIES winmm comctl32 uuid oleacc uxtheme rpcrt4 shlwapi version wsock32)
+  endmacro()
+
+  #-------------------------------------------------------------------
+  # WIN32: Start actual work.
+  #-------------------------------------------------------------------
+
+  # Look for an installation tree.
+  find_path(wxWidgets_ROOT_DIR
+    NAMES include/wx/wx.h
+    PATHS
+      ENV wxWidgets_ROOT_DIR
+      ENV WXWIN
+      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWidgets_is1;Inno Setup: App Path]"  # WX 2.6.x
+      C:/
+      D:/
+      ENV ProgramFiles
+    PATH_SUFFIXES
+      wxWidgets-3.1.0
+      wxWidgets-3.0.2
+      wxWidgets-3.0.1
+      wxWidgets-3.0.0
+      wxWidgets-2.9.5
+      wxWidgets-2.9.4
+      wxWidgets-2.9.3
+      wxWidgets-2.9.2
+      wxWidgets-2.9.1
+      wxWidgets-2.9.0
+      wxWidgets-2.8.9
+      wxWidgets-2.8.8
+      wxWidgets-2.8.7
+      wxWidgets-2.8.6
+      wxWidgets-2.8.5
+      wxWidgets-2.8.4
+      wxWidgets-2.8.3
+      wxWidgets-2.8.2
+      wxWidgets-2.8.1
+      wxWidgets-2.8.0
+      wxWidgets-2.7.4
+      wxWidgets-2.7.3
+      wxWidgets-2.7.2
+      wxWidgets-2.7.1
+      wxWidgets-2.7.0
+      wxWidgets-2.7.0-1
+      wxWidgets-2.6.4
+      wxWidgets-2.6.3
+      wxWidgets-2.6.2
+      wxWidgets-2.6.1
+      wxWidgets-2.5.4
+      wxWidgets-2.5.3
+      wxWidgets-2.5.2
+      wxWidgets-2.5.1
+      wxWidgets
+    DOC "wxWidgets base/installation directory"
+    )
+
+  # If wxWidgets_ROOT_DIR changed, clear lib dir.
+  if(NOT WX_ROOT_DIR STREQUAL wxWidgets_ROOT_DIR)
+    set(WX_ROOT_DIR ${wxWidgets_ROOT_DIR}
+        CACHE INTERNAL "wxWidgets_ROOT_DIR")
+    set(wxWidgets_LIB_DIR "wxWidgets_LIB_DIR-NOTFOUND"
+        CACHE PATH "Cleared." FORCE)
+  endif()
+
+  if(WX_ROOT_DIR)
+    # Select one default tree inside the already determined wx tree.
+    # Prefer static/shared order usually consistent with build
+    # settings.
+    set(_WX_TOOL "")
+    set(_WX_TOOLVER "")
+    set(_WX_ARCH "")
+    if(MINGW)
+      set(_WX_TOOL gcc)
+    elseif(MSVC)
+      set(_WX_TOOL vc)
+      set(_WX_TOOLVER ${MSVC_TOOLSET_VERSION})
+      # support for a lib/vc14x_x64_dll/ path from wxW 3.1.3 distribution
+      string(REGEX REPLACE ".$" "x" _WX_TOOLVERx ${_WX_TOOLVER})
+      if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+        set(_WX_ARCH _x64)
+      endif()
+    endif()
+    if(BUILD_SHARED_LIBS)
+      find_path(wxWidgets_LIB_DIR
+        NAMES
+          qtu/wx/setup.h
+          qtud/wx/setup.h
+          msw/wx/setup.h
+          mswd/wx/setup.h
+          mswu/wx/setup.h
+          mswud/wx/setup.h
+          mswuniv/wx/setup.h
+          mswunivd/wx/setup.h
+          mswunivu/wx/setup.h
+          mswunivud/wx/setup.h
+        PATHS
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVER}_xp${_WX_ARCH}_dll   # prefer shared
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVER}${_WX_ARCH}_dll   # prefer shared
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVERx}_xp${_WX_ARCH}_dll   # prefer shared
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVERx}${_WX_ARCH}_dll   # prefer shared
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_ARCH}_dll                 # prefer shared
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVER}_xp${_WX_ARCH}_lib
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVER}${_WX_ARCH}_lib
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVERx}_xp${_WX_ARCH}_lib
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVERx}${_WX_ARCH}_lib
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_ARCH}_lib
+        DOC "Path to wxWidgets libraries"
+        NO_DEFAULT_PATH
+        )
+    else()
+      find_path(wxWidgets_LIB_DIR
+        NAMES
+          qtu/wx/setup.h
+          qtud/wx/setup.h
+          msw/wx/setup.h
+          mswd/wx/setup.h
+          mswu/wx/setup.h
+          mswud/wx/setup.h
+          mswuniv/wx/setup.h
+          mswunivd/wx/setup.h
+          mswunivu/wx/setup.h
+          mswunivud/wx/setup.h
+        PATHS
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVER}_xp${_WX_ARCH}_lib   # prefer static
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVER}${_WX_ARCH}_lib   # prefer static
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVERx}_xp${_WX_ARCH}_lib   # prefer static
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVERx}${_WX_ARCH}_lib   # prefer static
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_ARCH}_lib                 # prefer static
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVER}_xp${_WX_ARCH}_dll
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVER}${_WX_ARCH}_dll
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVERx}_xp${_WX_ARCH}_dll
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_TOOLVERx}${_WX_ARCH}_dll
+        ${WX_ROOT_DIR}/lib/${_WX_TOOL}${_WX_ARCH}_dll
+        DOC "Path to wxWidgets libraries"
+        NO_DEFAULT_PATH
+        )
+    endif()
+    unset(_WX_TOOL)
+    unset(_WX_TOOLVER)
+    unset(_WX_ARCH)
+
+    # If wxWidgets_LIB_DIR changed, clear all libraries.
+    if(NOT WX_LIB_DIR STREQUAL wxWidgets_LIB_DIR)
+      set(WX_LIB_DIR ${wxWidgets_LIB_DIR} CACHE INTERNAL "wxWidgets_LIB_DIR")
+      WX_CLEAR_ALL_DBG_LIBS()
+      WX_CLEAR_ALL_REL_LIBS()
+    endif()
+
+    if(WX_LIB_DIR)
+      # If building shared libs, define WXUSINGDLL to use dllimport.
+      if(WX_LIB_DIR MATCHES "[dD][lL][lL]")
+        set(wxWidgets_DEFINITIONS WXUSINGDLL)
+        DBG_MSG_V("detected SHARED/DLL tree WX_LIB_DIR=${WX_LIB_DIR}")
+      endif()
+
+      # Search for available configuration types.
+      foreach(CFG mswunivud mswunivd mswud mswd mswunivu mswuniv mswu msw qt qtd qtu qtud)
+        set(WX_${CFG}_FOUND FALSE)
+        if(EXISTS ${WX_LIB_DIR}/${CFG})
+          list(APPEND WX_CONFIGURATION_LIST ${CFG})
+          set(WX_${CFG}_FOUND TRUE)
+          set(WX_CONFIGURATION ${CFG})
+        endif()
+      endforeach()
+      DBG_MSG_V("WX_CONFIGURATION_LIST=${WX_CONFIGURATION_LIST}")
+
+      if(WX_CONFIGURATION)
+        set(wxWidgets_FOUND TRUE)
+
+        # If the selected configuration wasn't found force the default
+        # one. Otherwise, use it but still force a refresh for
+        # updating the doc string with the current list of available
+        # configurations.
+        if(NOT WX_${wxWidgets_CONFIGURATION}_FOUND)
+          set(wxWidgets_CONFIGURATION ${WX_CONFIGURATION} CACHE STRING
+            "Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE)
+        else()
+          set(wxWidgets_CONFIGURATION ${wxWidgets_CONFIGURATION} CACHE STRING
+            "Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE)
+        endif()
+
+        # If release config selected, and both release/debug exist.
+        if(WX_${wxWidgets_CONFIGURATION}d_FOUND)
+          option(wxWidgets_USE_REL_AND_DBG
+            "Use release and debug configurations?" TRUE)
+          set(WX_USE_REL_AND_DBG ${wxWidgets_USE_REL_AND_DBG})
+        else()
+          # If the option exists (already in cache), force it false.
+          if(wxWidgets_USE_REL_AND_DBG)
+            set(wxWidgets_USE_REL_AND_DBG FALSE CACHE BOOL
+              "No ${wxWidgets_CONFIGURATION}d found." FORCE)
+          endif()
+          set(WX_USE_REL_AND_DBG FALSE)
+        endif()
+
+        # Get configuration parameters from the name.
+        WX_GET_NAME_COMPONENTS(${wxWidgets_CONFIGURATION} PF UNV UCD DBG)
+
+        # Set wxWidgets lib setup include directory.
+        if(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h)
+          set(wxWidgets_INCLUDE_DIRS
+            ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION})
+        else()
+          DBG_MSG("wxWidgets_FOUND FALSE because ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h does not exists.")
+          set(wxWidgets_FOUND FALSE)
+        endif()
+
+        # Set wxWidgets main include directory.
+        if(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
+          list(APPEND wxWidgets_INCLUDE_DIRS ${WX_ROOT_DIR}/include)
+        else()
+          DBG_MSG("wxWidgets_FOUND FALSE because WX_ROOT_DIR=${WX_ROOT_DIR} has no ${WX_ROOT_DIR}/include/wx/wx.h")
+          set(wxWidgets_FOUND FALSE)
+        endif()
+
+        # Find wxWidgets libraries.
+        WX_FIND_LIBS("${PF}" "${UNV}" "${UCD}" "${DBG}")
+        if(WX_USE_REL_AND_DBG)
+          WX_FIND_LIBS("${PF}" "${UNV}" "${UCD}" "d")
+        endif()
+
+        # Settings for requested libs (i.e., include dir, libraries, etc.).
+        WX_SET_LIBRARIES(wxWidgets_FIND_COMPONENTS "${DBG}")
+
+        # Add necessary definitions for unicode builds
+        if("${UCD}" STREQUAL "u")
+          list(APPEND wxWidgets_DEFINITIONS UNICODE _UNICODE)
+        endif()
+
+        # Add necessary definitions for debug builds
+        set(wxWidgets_DEFINITIONS_DEBUG _DEBUG __WXDEBUG__)
+
+      endif()
+    endif()
+  endif()
+
+#=====================================================================
+# UNIX_FIND_STYLE
+#=====================================================================
+else()
+  if(wxWidgets_FIND_STYLE STREQUAL "unix")
+    #-----------------------------------------------------------------
+    # UNIX: Helper MACROS
+    #-----------------------------------------------------------------
+    #
+    # Set the default values based on "wx-config --selected-config".
+    #
+    macro(WX_CONFIG_SELECT_GET_DEFAULT)
+      execute_process(
+        COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}"
+          ${wxWidgets_CONFIG_OPTIONS} --selected-config
+        OUTPUT_VARIABLE _wx_selected_config
+        RESULT_VARIABLE _wx_result
+        ERROR_QUIET
+        )
+      if(_wx_result EQUAL 0)
+        foreach(_opt_name debug static unicode universal)
+          string(TOUPPER ${_opt_name} _upper_opt_name)
+          if(_wx_selected_config MATCHES "${_opt_name}")
+            set(wxWidgets_DEFAULT_${_upper_opt_name} ON)
+          else()
+            set(wxWidgets_DEFAULT_${_upper_opt_name} OFF)
+          endif()
+        endforeach()
+      else()
+        foreach(_upper_opt_name DEBUG STATIC UNICODE UNIVERSAL)
+          set(wxWidgets_DEFAULT_${_upper_opt_name} OFF)
+        endforeach()
+      endif()
+    endmacro()
+
+    #
+    # Query a boolean configuration option to determine if the system
+    # has both builds available. If so, provide the selection option
+    # to the user.
+    #
+    macro(WX_CONFIG_SELECT_QUERY_BOOL _OPT_NAME _OPT_HELP)
+      execute_process(
+        COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}"
+          ${wxWidgets_CONFIG_OPTIONS} --${_OPT_NAME}=yes
+        RESULT_VARIABLE _wx_result_yes
+        OUTPUT_QUIET
+        ERROR_QUIET
+        )
+      execute_process(
+        COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}"
+          ${wxWidgets_CONFIG_OPTIONS} --${_OPT_NAME}=no
+        RESULT_VARIABLE _wx_result_no
+        OUTPUT_QUIET
+        ERROR_QUIET
+        )
+      string(TOUPPER ${_OPT_NAME} _UPPER_OPT_NAME)
+      if(_wx_result_yes EQUAL 0 AND _wx_result_no EQUAL 0)
+        option(wxWidgets_USE_${_UPPER_OPT_NAME}
+          ${_OPT_HELP} ${wxWidgets_DEFAULT_${_UPPER_OPT_NAME}})
+      else()
+        # If option exists (already in cache), force to available one.
+        if(DEFINED wxWidgets_USE_${_UPPER_OPT_NAME})
+          if(_wx_result_yes EQUAL 0)
+            set(wxWidgets_USE_${_UPPER_OPT_NAME} ON  CACHE BOOL ${_OPT_HELP} FORCE)
+          else()
+            set(wxWidgets_USE_${_UPPER_OPT_NAME} OFF CACHE BOOL ${_OPT_HELP} FORCE)
+          endif()
+        endif()
+      endif()
+    endmacro()
+
+    #
+    # Set wxWidgets_SELECT_OPTIONS to wx-config options for selecting
+    # among multiple builds.
+    #
+    macro(WX_CONFIG_SELECT_SET_OPTIONS)
+      set(wxWidgets_SELECT_OPTIONS ${wxWidgets_CONFIG_OPTIONS})
+      foreach(_opt_name debug static unicode universal)
+        string(TOUPPER ${_opt_name} _upper_opt_name)
+        if(DEFINED wxWidgets_USE_${_upper_opt_name})
+          if(wxWidgets_USE_${_upper_opt_name})
+            list(APPEND wxWidgets_SELECT_OPTIONS --${_opt_name}=yes)
+          else()
+            list(APPEND wxWidgets_SELECT_OPTIONS --${_opt_name}=no)
+          endif()
+        endif()
+      endforeach()
+    endmacro()
+
+    #-----------------------------------------------------------------
+    # UNIX: Start actual work.
+    #-----------------------------------------------------------------
+    # Support cross-compiling, only search in the target platform.
+    #
+    # Look for wx-config -- this can be set in the environment,
+    # or try versioned and toolchain-versioned variants of the -config
+    # executable as well.
+    find_program(wxWidgets_CONFIG_EXECUTABLE
+      NAMES
+        $ENV{WX_CONFIG}
+        wx-config
+        wx-config-3.1 wx-config-3.0 wx-config-2.9 wx-config-2.8
+        wxgtk3u-3.1-config wxgtk3u-3.0-config wxgtk2u-2.8-config
+      DOC "Location of wxWidgets library configuration provider binary (wx-config)."
+      ONLY_CMAKE_FIND_ROOT_PATH
+      )
+
+    if(wxWidgets_CONFIG_EXECUTABLE)
+      set(wxWidgets_FOUND TRUE)
+
+      # get defaults based on "wx-config --selected-config"
+      WX_CONFIG_SELECT_GET_DEFAULT()
+
+      # for each option: if both builds are available, provide option
+      WX_CONFIG_SELECT_QUERY_BOOL(debug "Use debug build?")
+      WX_CONFIG_SELECT_QUERY_BOOL(unicode "Use unicode build?")
+      WX_CONFIG_SELECT_QUERY_BOOL(universal "Use universal build?")
+      WX_CONFIG_SELECT_QUERY_BOOL(static "Link libraries statically?")
+
+      # process selection to set wxWidgets_SELECT_OPTIONS
+      WX_CONFIG_SELECT_SET_OPTIONS()
+      DBG_MSG("wxWidgets_SELECT_OPTIONS=${wxWidgets_SELECT_OPTIONS}")
+
+      # run the wx-config program to get cxxflags
+      execute_process(
+        COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}"
+          ${wxWidgets_SELECT_OPTIONS} --cxxflags
+        OUTPUT_VARIABLE wxWidgets_CXX_FLAGS
+        RESULT_VARIABLE RET
+        ERROR_QUIET
+        )
+      if(RET EQUAL 0)
+        string(STRIP "${wxWidgets_CXX_FLAGS}" wxWidgets_CXX_FLAGS)
+        separate_arguments(wxWidgets_CXX_FLAGS_LIST NATIVE_COMMAND "${wxWidgets_CXX_FLAGS}")
+
+        DBG_MSG_V("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}")
+
+        # parse definitions and include dirs from cxxflags
+        #   drop the -D and -I prefixes
+        set(wxWidgets_CXX_FLAGS)
+        foreach(arg IN LISTS wxWidgets_CXX_FLAGS_LIST)
+          if("${arg}" MATCHES "^-I(.*)$")
+            # include directory
+            list(APPEND wxWidgets_INCLUDE_DIRS "${CMAKE_MATCH_1}")
+          elseif("${arg}" MATCHES "^-D(.*)$")
+            # compile definition
+            list(APPEND wxWidgets_DEFINITIONS "${CMAKE_MATCH_1}")
+          else()
+            list(APPEND wxWidgets_CXX_FLAGS "${arg}")
+          endif()
+        endforeach()
+
+        DBG_MSG_V("wxWidgets_DEFINITIONS=${wxWidgets_DEFINITIONS}")
+        DBG_MSG_V("wxWidgets_INCLUDE_DIRS=${wxWidgets_INCLUDE_DIRS}")
+        DBG_MSG_V("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}")
+
+      else()
+        set(wxWidgets_FOUND FALSE)
+        DBG_MSG_V(
+          "${wxWidgets_CONFIG_EXECUTABLE} --cxxflags FAILED with RET=${RET}")
+      endif()
+
+      # run the wx-config program to get the libs
+      # - NOTE: wx-config doesn't verify that the libs requested exist
+      #         it just produces the names. Maybe a TRY_COMPILE would
+      #         be useful here...
+      unset(_cmp_req)
+      unset(_cmp_opt)
+      foreach(_cmp IN LISTS wxWidgets_FIND_COMPONENTS)
+        if(wxWidgets_FIND_REQUIRED_${_cmp})
+          list(APPEND _cmp_req "${_cmp}")
+        else()
+          list(APPEND _cmp_opt "${_cmp}")
+        endif()
+      endforeach()
+      DBG_MSG_V("wxWidgets required components : ${_cmp_req}")
+      DBG_MSG_V("wxWidgets optional components : ${_cmp_opt}")
+      if(DEFINED _cmp_opt)
+        string(REPLACE ";" "," _cmp_opt "--optional-libs ${_cmp_opt}")
+      endif()
+      string(REPLACE ";" "," _cmp_req "${_cmp_req}")
+      execute_process(
+        COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}"
+          ${wxWidgets_SELECT_OPTIONS} --libs ${_cmp_req} ${_cmp_opt}
+        OUTPUT_VARIABLE wxWidgets_LIBRARIES
+        RESULT_VARIABLE RET
+        ERROR_QUIET
+        )
+      if(RET EQUAL 0)
+        string(STRIP "${wxWidgets_LIBRARIES}" wxWidgets_LIBRARIES)
+        separate_arguments(wxWidgets_LIBRARIES)
+        string(REPLACE "-framework;" "-framework "
+          wxWidgets_LIBRARIES "${wxWidgets_LIBRARIES}")
+        string(REPLACE "-weak_framework;" "-weak_framework "
+          wxWidgets_LIBRARIES "${wxWidgets_LIBRARIES}")
+        string(REPLACE "-arch;" "-arch "
+          wxWidgets_LIBRARIES "${wxWidgets_LIBRARIES}")
+        string(REPLACE "-isysroot;" "-isysroot "
+          wxWidgets_LIBRARIES "${wxWidgets_LIBRARIES}")
+
+        # extract linkdirs (-L) for rpath (i.e., LINK_DIRECTORIES)
+        string(REGEX MATCHALL "-L[^;]+"
+          wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARIES}")
+        string(REGEX REPLACE "-L([^;]+)" "\\1"
+          wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARY_DIRS}")
+
+        DBG_MSG_V("wxWidgets_LIBRARIES=${wxWidgets_LIBRARIES}")
+        DBG_MSG_V("wxWidgets_LIBRARY_DIRS=${wxWidgets_LIBRARY_DIRS}")
+
+      else()
+        set(wxWidgets_FOUND FALSE)
+        DBG_MSG("${wxWidgets_CONFIG_EXECUTABLE} --libs ${_cmp_req} ${_cmp_opt} FAILED with RET=${RET}")
+      endif()
+      unset(_cmp_req)
+      unset(_cmp_opt)
+    endif()
+
+    # When using wx-config in MSYS, the include paths are UNIX style paths which may or may
+    # not work correctly depending on you MSYS/MinGW configuration.  CMake expects native
+    # paths internally.
+    if(wxWidgets_FOUND AND MSYS)
+      find_program(_cygpath_exe cygpath ONLY_CMAKE_FIND_ROOT_PATH)
+      DBG_MSG_V("_cygpath_exe:  ${_cygpath_exe}")
+      if(_cygpath_exe)
+        set(_tmp_path "")
+        foreach(_path ${wxWidgets_INCLUDE_DIRS})
+          execute_process(
+            COMMAND cygpath -w ${_path}
+            OUTPUT_VARIABLE _native_path
+            RESULT_VARIABLE _retv
+            OUTPUT_STRIP_TRAILING_WHITESPACE
+            ERROR_QUIET
+            )
+          if(_retv EQUAL 0)
+            file(TO_CMAKE_PATH ${_native_path} _native_path)
+            DBG_MSG_V("Path ${_path} converted to ${_native_path}")
+            string(APPEND _tmp_path " ${_native_path}")
+          endif()
+        endforeach()
+        DBG_MSG("Setting wxWidgets_INCLUDE_DIRS = ${_tmp_path}")
+        set(wxWidgets_INCLUDE_DIRS ${_tmp_path})
+        separate_arguments(wxWidgets_INCLUDE_DIRS)
+        list(REMOVE_ITEM wxWidgets_INCLUDE_DIRS "")
+
+        set(_tmp_path "")
+        foreach(_path ${wxWidgets_LIBRARY_DIRS})
+          execute_process(
+            COMMAND cygpath -w ${_path}
+            OUTPUT_VARIABLE _native_path
+            RESULT_VARIABLE _retv
+            OUTPUT_STRIP_TRAILING_WHITESPACE
+            ERROR_QUIET
+            )
+          if(_retv EQUAL 0)
+            file(TO_CMAKE_PATH ${_native_path} _native_path)
+            DBG_MSG_V("Path ${_path} converted to ${_native_path}")
+            string(APPEND _tmp_path " ${_native_path}")
+          endif()
+        endforeach()
+        DBG_MSG("Setting wxWidgets_LIBRARY_DIRS = ${_tmp_path}")
+        set(wxWidgets_LIBRARY_DIRS ${_tmp_path})
+        separate_arguments(wxWidgets_LIBRARY_DIRS)
+        list(REMOVE_ITEM wxWidgets_LIBRARY_DIRS "")
+      endif()
+      unset(_cygpath_exe CACHE)
+    endif()
+
+#=====================================================================
+# Neither UNIX_FIND_STYLE, nor WIN32_FIND_STYLE
+#=====================================================================
+  else()
+    if(NOT wxWidgets_FIND_QUIETLY)
+      message(STATUS
+        "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): \n"
+        "  Platform unknown/unsupported. It's neither WIN32 nor UNIX "
+        "find style."
+        )
+    endif()
+  endif()
+endif()
+
+# Check that all libraries are present, as wx-config does not check it
+set(_wx_lib_missing "")
+foreach(_wx_lib_ ${wxWidgets_LIBRARIES})
+  if("${_wx_lib_}" MATCHES "^-l(.*)")
+    set(_wx_lib_name "${CMAKE_MATCH_1}")
+    unset(_wx_lib_found CACHE)
+    find_library(_wx_lib_found NAMES ${_wx_lib_name} HINTS ${wxWidgets_LIBRARY_DIRS})
+    if(_wx_lib_found STREQUAL _wx_lib_found-NOTFOUND)
+      list(APPEND _wx_lib_missing ${_wx_lib_name})
+    endif()
+    unset(_wx_lib_found CACHE)
+  endif()
+endforeach()
+
+if (_wx_lib_missing)
+  string(REPLACE ";" " " _wx_lib_missing "${_wx_lib_missing}")
+  DBG_MSG_V("wxWidgets not found due to following missing libraries: ${_wx_lib_missing}")
+  set(wxWidgets_FOUND FALSE)
+  unset(wxWidgets_LIBRARIES)
+endif()
+unset(_wx_lib_missing)
+
+# Check if a specific version was requested by find_package().
+if(wxWidgets_FOUND)
+  unset(_wx_filename)
+  find_file(_wx_filename wx/version.h PATHS ${wxWidgets_INCLUDE_DIRS} NO_DEFAULT_PATH)
+  dbg_msg("_wx_filename:  ${_wx_filename}")
+
+  if(NOT _wx_filename)
+    message(FATAL_ERROR "wxWidgets wx/version.h file not found in ${wxWidgets_INCLUDE_DIRS}.")
+  endif()
+
+  file(READ "${_wx_filename}" _wx_version_h)
+  unset(_wx_filename CACHE)
+
+  string(REGEX REPLACE "^(.*\n)?#define +wxMAJOR_VERSION +([0-9]+).*"
+    "\\2" wxWidgets_VERSION_MAJOR "${_wx_version_h}" )
+  string(REGEX REPLACE "^(.*\n)?#define +wxMINOR_VERSION +([0-9]+).*"
+    "\\2" wxWidgets_VERSION_MINOR "${_wx_version_h}" )
+  string(REGEX REPLACE "^(.*\n)?#define +wxRELEASE_NUMBER +([0-9]+).*"
+    "\\2" wxWidgets_VERSION_PATCH "${_wx_version_h}" )
+  set(wxWidgets_VERSION_STRING
+    "${wxWidgets_VERSION_MAJOR}.${wxWidgets_VERSION_MINOR}.${wxWidgets_VERSION_PATCH}" )
+  dbg_msg("wxWidgets_VERSION_STRING:    ${wxWidgets_VERSION_STRING}")
+endif()
+
+# Debug output:
+DBG_MSG("wxWidgets_FOUND           : ${wxWidgets_FOUND}")
+DBG_MSG("wxWidgets_INCLUDE_DIRS    : ${wxWidgets_INCLUDE_DIRS}")
+DBG_MSG("wxWidgets_LIBRARY_DIRS    : ${wxWidgets_LIBRARY_DIRS}")
+DBG_MSG("wxWidgets_LIBRARIES       : ${wxWidgets_LIBRARIES}")
+DBG_MSG("wxWidgets_CXX_FLAGS       : ${wxWidgets_CXX_FLAGS}")
+DBG_MSG("wxWidgets_USE_FILE        : ${wxWidgets_USE_FILE}")
+
+#=====================================================================
+#=====================================================================
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+# FIXME: set wxWidgets_<comp>_FOUND for wx-config branch
+#        and use HANDLE_COMPONENTS on Unix too
+if(wxWidgets_FIND_STYLE STREQUAL "win32")
+  set(wxWidgets_HANDLE_COMPONENTS "HANDLE_COMPONENTS")
+endif()
+
+find_package_handle_standard_args(wxWidgets
+  REQUIRED_VARS wxWidgets_LIBRARIES wxWidgets_INCLUDE_DIRS
+  VERSION_VAR   wxWidgets_VERSION_STRING
+  ${wxWidgets_HANDLE_COMPONENTS}
+  )
+unset(wxWidgets_HANDLE_COMPONENTS)
+
+#=====================================================================
+# Macros for use in wxWidgets apps.
+# - This module will not fail to find wxWidgets based on the code
+#   below. Hence, it's required to check for validity of:
+#
+# wxWidgets_wxrc_EXECUTABLE
+#=====================================================================
+
+# Resource file compiler.
+find_program(wxWidgets_wxrc_EXECUTABLE
+  NAMES $ENV{WXRC_CMD} wxrc
+  PATHS ${wxWidgets_ROOT_DIR}/utils/wxrc/vc_msw
+  DOC "Location of wxWidgets resource file compiler binary (wxrc)"
+  )
+
+#
+# WX_SPLIT_ARGUMENTS_ON(<keyword> <left> <right> <arg1> <arg2> ...)
+#
+# Sets <left> and <right> to contain arguments to the left and right,
+# respectively, of <keyword>.
+#
+# Example usage:
+#  function(WXWIDGETS_ADD_RESOURCES outfiles)
+#    WX_SPLIT_ARGUMENTS_ON(OPTIONS wxrc_files wxrc_options ${ARGN})
+#    ...
+#  endfunction()
+#
+#  WXWIDGETS_ADD_RESOURCES(sources ${xrc_files} OPTIONS -e -o file.C)
+#
+# NOTE: This is a generic piece of code that should be renamed to
+# SPLIT_ARGUMENTS_ON and put in a file serving the same purpose as
+# FindPackageStandardArgs.cmake. At the time of this writing
+# FindQt4.cmake has a QT4_EXTRACT_OPTIONS, which I basically copied
+# here a bit more generalized. So, there are already two find modules
+# using this approach.
+#
+function(WX_SPLIT_ARGUMENTS_ON _keyword _leftvar _rightvar)
+  # FIXME: Document that the input variables will be cleared.
+  #list(APPEND ${_leftvar}  "")
+  #list(APPEND ${_rightvar} "")
+  set(${_leftvar}  "")
+  set(${_rightvar} "")
+
+  set(_doing_right FALSE)
+  foreach(element ${ARGN})
+    if("${element}" STREQUAL "${_keyword}")
+      set(_doing_right TRUE)
+    else()
+      if(_doing_right)
+        list(APPEND ${_rightvar} "${element}")
+      else()
+        list(APPEND ${_leftvar} "${element}")
+      endif()
+    endif()
+  endforeach()
+
+  set(${_leftvar}  ${${_leftvar}}  PARENT_SCOPE)
+  set(${_rightvar} ${${_rightvar}} PARENT_SCOPE)
+endfunction()
+
+#
+# WX_GET_DEPENDENCIES_FROM_XML(
+#   <depends>
+#   <match_pattern>
+#   <clean_pattern>
+#   <xml_contents>
+#   <depends_path>
+#   )
+#
+# FIXME: Add documentation here...
+#
+function(WX_GET_DEPENDENCIES_FROM_XML
+    _depends
+    _match_patt
+    _clean_patt
+    _xml_contents
+    _depends_path
+    )
+
+  string(REGEX MATCHALL
+    ${_match_patt}
+    dep_file_list
+    "${${_xml_contents}}"
+    )
+  foreach(dep_file ${dep_file_list})
+    string(REGEX REPLACE ${_clean_patt} "" dep_file "${dep_file}")
+
+    # make the file have an absolute path
+    if(NOT IS_ABSOLUTE "${dep_file}")
+      set(dep_file "${${_depends_path}}/${dep_file}")
+    endif()
+
+    # append file to dependency list
+    list(APPEND ${_depends} "${dep_file}")
+  endforeach()
+
+  set(${_depends} ${${_depends}} PARENT_SCOPE)
+endfunction()
+
+#
+# WXWIDGETS_ADD_RESOURCES(<sources> <xrc_files>
+#                         OPTIONS <options> [NO_CPP_CODE])
+#
+# Adds a custom command for resource file compilation of the
+# <xrc_files> and appends the output files to <sources>.
+#
+# Example usages:
+#   WXWIDGETS_ADD_RESOURCES(sources xrc/main_frame.xrc)
+#   WXWIDGETS_ADD_RESOURCES(sources ${xrc_files} OPTIONS -e -o altname.cxx)
+#
+function(WXWIDGETS_ADD_RESOURCES _outfiles)
+  WX_SPLIT_ARGUMENTS_ON(OPTIONS rc_file_list rc_options ${ARGN})
+
+  # Parse files for dependencies.
+  set(rc_file_list_abs "")
+  set(rc_depends       "")
+  foreach(rc_file ${rc_file_list})
+    get_filename_component(depends_path ${rc_file} PATH)
+
+    get_filename_component(rc_file_abs ${rc_file} ABSOLUTE)
+    list(APPEND rc_file_list_abs "${rc_file_abs}")
+
+    # All files have absolute paths or paths relative to the location
+    # of the rc file.
+    file(READ "${rc_file_abs}" rc_file_contents)
+
+    # get bitmap/bitmap2 files
+    WX_GET_DEPENDENCIES_FROM_XML(
+      rc_depends
+      "<bitmap[^<]+"
+      "^<bitmap[^>]*>"
+      rc_file_contents
+      depends_path
+      )
+
+    # get url files
+    WX_GET_DEPENDENCIES_FROM_XML(
+      rc_depends
+      "<url[^<]+"
+      "^<url[^>]*>"
+      rc_file_contents
+      depends_path
+      )
+
+    # get wxIcon files
+    WX_GET_DEPENDENCIES_FROM_XML(
+      rc_depends
+      "<object[^>]*class=\"wxIcon\"[^<]+"
+      "^<object[^>]*>"
+      rc_file_contents
+      depends_path
+      )
+  endforeach()
+
+  #
+  # Parse options.
+  #
+  # If NO_CPP_CODE option specified, then produce .xrs file rather
+  # than a .cpp file (i.e., don't add the default --cpp-code option).
+  list(FIND rc_options NO_CPP_CODE index)
+  if(index EQUAL -1)
+    list(APPEND rc_options --cpp-code)
+    # wxrc's default output filename for cpp code.
+    set(outfile resource.cpp)
+  else()
+    list(REMOVE_AT rc_options ${index})
+    # wxrc's default output filename for xrs file.
+    set(outfile resource.xrs)
+  endif()
+
+  # Get output name for use in ADD_CUSTOM_COMMAND.
+  # - short option scanning
+  list(FIND rc_options -o index)
+  if(NOT index EQUAL -1)
+    math(EXPR filename_index "${index} + 1")
+    list(GET rc_options ${filename_index} outfile)
+    #list(REMOVE_AT rc_options ${index} ${filename_index})
+  endif()
+  # - long option scanning
+  string(REGEX MATCH "--output=[^;]*" outfile_opt "${rc_options}")
+  if(outfile_opt)
+    string(REPLACE "--output=" "" outfile "${outfile_opt}")
+  endif()
+  #string(REGEX REPLACE "--output=[^;]*;?" "" rc_options "${rc_options}")
+  #string(REGEX REPLACE ";$" "" rc_options "${rc_options}")
+
+  if(NOT IS_ABSOLUTE "${outfile}")
+    set(outfile "${CMAKE_CURRENT_BINARY_DIR}/${outfile}")
+  endif()
+  add_custom_command(
+    OUTPUT "${outfile}"
+    COMMAND ${wxWidgets_wxrc_EXECUTABLE} ${rc_options} ${rc_file_list_abs}
+    DEPENDS ${rc_file_list_abs} ${rc_depends}
+    )
+
+  # Add generated header to output file list.
+  list(FIND rc_options -e short_index)
+  list(FIND rc_options --extra-cpp-code long_index)
+  if(NOT short_index EQUAL -1 OR NOT long_index EQUAL -1)
+    get_filename_component(outfile_ext ${outfile} EXT)
+    string(REPLACE "${outfile_ext}" ".h" outfile_header "${outfile}")
+    list(APPEND ${_outfiles} "${outfile_header}")
+    set_source_files_properties(
+      "${outfile_header}" PROPERTIES GENERATED TRUE
+      )
+  endif()
+
+  # Add generated file to output file list.
+  list(APPEND ${_outfiles} "${outfile}")
+
+  set(${_outfiles} ${${_outfiles}} PARENT_SCOPE)
+endfunction()
diff --git a/share/cmake-3.22/Modules/FindwxWindows.cmake b/share/cmake-3.22/Modules/FindwxWindows.cmake
new file mode 100644
index 0000000..07fbc1b
--- /dev/null
+++ b/share/cmake-3.22/Modules/FindwxWindows.cmake
@@ -0,0 +1,730 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindwxWindows
+-------------
+
+.. deprecated:: 3.0
+
+  Replaced by :module:`FindwxWidgets`.
+
+Find wxWindows (wxWidgets) installation
+
+This module finds if wxWindows/wxWidgets is installed and determines
+where the include files and libraries are.  It also determines what
+the name of the library is.  This code sets the following variables:
+
+::
+
+  WXWINDOWS_FOUND     = system has WxWindows
+  WXWINDOWS_LIBRARIES = path to the wxWindows libraries
+                        on Unix/Linux with additional
+                        linker flags from
+                        "wx-config --libs"
+  CMAKE_WXWINDOWS_CXX_FLAGS  = Compiler flags for wxWindows,
+                               essentially "`wx-config --cxxflags`"
+                               on Linux
+  WXWINDOWS_INCLUDE_DIR      = where to find "wx/wx.h" and "wx/setup.h"
+  WXWINDOWS_LINK_DIRECTORIES = link directories, useful for rpath on
+                                Unix
+  WXWINDOWS_DEFINITIONS      = extra defines
+
+
+
+OPTIONS If you need OpenGL support please
+
+::
+
+  set(WXWINDOWS_USE_GL 1)
+
+in your CMakeLists.txt *before* you include this file.
+
+::
+
+  HAVE_ISYSTEM      - true required to replace -I by -isystem on g++
+
+
+
+For convenience include Use_wxWindows.cmake in your project's
+CMakeLists.txt using
+include(${CMAKE_CURRENT_LIST_DIR}/Use_wxWindows.cmake).
+
+USAGE
+
+::
+
+  set(WXWINDOWS_USE_GL 1)
+  find_package(wxWindows)
+
+
+
+NOTES wxWidgets 2.6.x is supported for monolithic builds e.g.
+compiled in wx/build/msw dir as:
+
+::
+
+  nmake -f makefile.vc BUILD=debug SHARED=0 USE_OPENGL=1 MONOLITHIC=1
+
+
+
+DEPRECATED
+
+::
+
+  CMAKE_WX_CAN_COMPILE
+  WXWINDOWS_LIBRARY
+  CMAKE_WX_CXX_FLAGS
+  WXWINDOWS_INCLUDE_PATH
+
+
+
+AUTHOR Jan Woetzel <http://www.mip.informatik.uni-kiel.de/~jw>
+(07/2003-01/2006)
+#]=======================================================================]
+
+# ------------------------------------------------------------------
+#
+# -removed OPTION for CMAKE_WXWINDOWS_USE_GL. Force the developer to SET it before calling this.
+# -major update for wx 2.6.2 and monolithic build option. (10/2005)
+#
+# STATUS
+# tested with:
+#  cmake 1.6.7, Linux (Suse 7.3), wxWindows 2.4.0, gcc 2.95
+#  cmake 1.6.7, Linux (Suse 8.2), wxWindows 2.4.0, gcc 3.3
+#  cmake 1.6.7, Linux (Suse 8.2), wxWindows 2.4.1-patch1,  gcc 3.3
+#  cmake 1.6.7, MS Windows XP home, wxWindows 2.4.1, MS Visual Studio .net 7 2002 (static build)
+#  cmake 2.0.5 on Windows XP and Suse Linux 9.2
+#  cmake 2.0.6 on Windows XP and Suse Linux 9.2, wxWidgets 2.6.2 MONOLITHIC build
+#  cmake 2.2.2 on Windows XP, MS Visual Studio .net 2003 7.1 wxWidgets 2.6.2 MONOLITHIC build
+#
+# TODO
+#  -OPTION for unicode builds
+#  -further testing of DLL linking under MS WIN32
+#  -better support for non-monolithic builds
+#
+
+
+if(WIN32)
+  set(WIN32_STYLE_FIND 1)
+endif()
+if(MINGW)
+  set(WIN32_STYLE_FIND 0)
+  set(UNIX_STYLE_FIND 1)
+endif()
+if(UNIX)
+  set(UNIX_STYLE_FIND 1)
+endif()
+
+
+if(WIN32_STYLE_FIND)
+
+  ## ######################################################################
+  ##
+  ## Windows specific:
+  ##
+  ## candidates for root/base directory of wxwindows
+  ## should have subdirs include and lib containing include/wx/wx.h
+  ## fix the root dir to avoid mixing of headers/libs from different
+  ## versions/builds:
+
+  ## WX supports monolithic and multiple smaller libs (since 2.5.x), we prefer monolithic for now.
+  ## monolithic = WX is built as a single big library
+  ## e.g. compile on WIN32 as  "nmake -f makefile.vc MONOLITHIC=1 BUILD=debug SHARED=0 USE_OPENGL=1" (JW)
+  option(WXWINDOWS_USE_MONOLITHIC "Use monolithic build of WX??" ON)
+  mark_as_advanced(WXWINDOWS_USE_MONOLITHIC)
+
+  ## GL libs used?
+  option(WXWINDOWS_USE_GL "Use Wx with GL support(glcanvas)?" ON)
+  mark_as_advanced(WXWINDOWS_USE_GL)
+
+
+  ## avoid mixing of headers and libs between multiple installed WX versions,
+  ## select just one tree here:
+  find_path(WXWINDOWS_ROOT_DIR  include/wx/wx.h
+    HINTS
+      ENV WXWIN
+      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWidgets_is1;Inno Setup: App Path]"  ## WX 2.6.x
+      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWindows_is1;Inno Setup: App Path]"  ## WX 2.4.x
+    PATHS
+      C:/wxWidgets-2.6.2
+      D:/wxWidgets-2.6.2
+      C:/wxWidgets-2.6.1
+      D:/wxWidgets-2.6.1
+      C:/wxWindows-2.4.2
+      D:/wxWindows-2.4.2
+  )
+  # message("DBG found WXWINDOWS_ROOT_DIR: ${WXWINDOWS_ROOT_DIR}")
+
+
+  ## find libs for combination of static/shared with release/debug
+  ## be careful if you add something here,
+  ## avoid mixing of headers and libs of different wx versions,
+  ## there may be multiple WX versions installed.
+  set (WXWINDOWS_POSSIBLE_LIB_PATHS
+    "${WXWINDOWS_ROOT_DIR}/lib"
+    )
+
+  ## monolithic?
+  if (WXWINDOWS_USE_MONOLITHIC)
+
+    find_library(WXWINDOWS_STATIC_LIBRARY
+      NAMES wx wxmsw wxmsw26
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows static release build library" )
+
+    find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY
+      NAMES wxd wxmswd wxmsw26d
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows static debug build library" )
+
+    find_library(WXWINDOWS_SHARED_LIBRARY
+      NAMES wxmsw26 wxmsw262 wxmsw24 wxmsw242 wxmsw241 wxmsw240 wx23_2 wx22_9
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_dll"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows shared release build library" )
+
+    find_library(WXWINDOWS_SHARED_DEBUG_LIBRARY
+      NAMES wxmsw26d wxmsw262d wxmsw24d wxmsw241d wxmsw240d wx23_2d wx22_9d
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_dll"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows shared debug build library " )
+
+
+    ##
+    ## required for WXWINDOWS_USE_GL
+    ## gl lib is always build separate:
+    ##
+    find_library(WXWINDOWS_STATIC_LIBRARY_GL
+      NAMES wx_gl wxmsw_gl wxmsw26_gl
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows static release build GL library" )
+
+    find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_GL
+      NAMES wxd_gl wxmswd_gl wxmsw26d_gl
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows static debug build GL library" )
+
+
+    find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_PNG
+      NAMES wxpngd
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows static debug png library" )
+
+    find_library(WXWINDOWS_STATIC_LIBRARY_PNG
+      NAMES wxpng
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows static png library" )
+
+    find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_TIFF
+      NAMES wxtiffd
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows static debug tiff library" )
+
+    find_library(WXWINDOWS_STATIC_LIBRARY_TIFF
+      NAMES wxtiff
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows static tiff library" )
+
+    find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_JPEG
+      NAMES wxjpegd  wxjpgd
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows static debug jpeg library" )
+
+    find_library(WXWINDOWS_STATIC_LIBRARY_JPEG
+      NAMES wxjpeg wxjpg
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows static jpeg library" )
+
+    find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_ZLIB
+      NAMES wxzlibd
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows static debug zlib library" )
+
+    find_library(WXWINDOWS_STATIC_LIBRARY_ZLIB
+      NAMES wxzlib
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows static zib library" )
+
+    find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_REGEX
+      NAMES wxregexd
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows static debug regex library" )
+
+    find_library(WXWINDOWS_STATIC_LIBRARY_REGEX
+      NAMES wxregex
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows static regex library" )
+
+
+
+    ## untested:
+    find_library(WXWINDOWS_SHARED_LIBRARY_GL
+      NAMES wx_gl wxmsw_gl wxmsw26_gl
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_dll"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows shared release build GL library" )
+
+    find_library(WXWINDOWS_SHARED_DEBUG_LIBRARY_GL
+      NAMES wxd_gl wxmswd_gl wxmsw26d_gl
+      PATHS
+      "${WXWINDOWS_ROOT_DIR}/lib/vc_dll"
+      ${WXWINDOWS_POSSIBLE_LIB_PATHS}
+      DOC "wxWindows shared debug build GL library" )
+
+
+  else ()
+    ## WX is built as multiple small pieces libraries instead of monolithic
+
+    ## DEPRECATED (jw) replaced by more general WXWINDOWS_USE_MONOLITHIC ON/OFF
+    # option(WXWINDOWS_SEPARATE_LIBS_BUILD "Is wxWindows build with separate libs?" OFF)
+
+    ## HACK: This is very dirty.
+    ## because the libs of a particular version are explicitly listed
+    ## and NOT searched/verified.
+    ## TODO:  Really search for each lib, then decide for
+    ## monolithic x debug x shared x GL (=16 combinations) for at least 18 libs
+    ## -->  about 288 combinations
+    ## thus we need a different approach so solve this correctly ...
+
+    message(STATUS "Warning: You are trying to use wxWidgets without monolithic build (WXWINDOWS_SEPARATE_LIBS_BUILD). This is a HACK, libraries are not verified! (JW).")
+
+    set(WXWINDOWS_STATIC_LIBS ${WXWINDOWS_STATIC_LIBS}
+      wxbase26
+      wxbase26_net
+      wxbase26_odbc
+      wxbase26_xml
+      wxmsw26_adv
+      wxmsw26_core
+      wxmsw26_dbgrid
+      wxmsw26_gl
+      wxmsw26_html
+      wxmsw26_media
+      wxmsw26_qa
+      wxmsw26_xrc
+      wxexpat
+      wxjpeg
+      wxpng
+      wxregex
+      wxtiff
+      wxzlib
+      comctl32
+      rpcrt4
+      wsock32
+      )
+    ## HACK: feed in to optimized / debug libraries if both were FOUND.
+    set(WXWINDOWS_STATIC_DEBUG_LIBS ${WXWINDOWS_STATIC_DEBUG_LIBS}
+      wxbase26d
+      wxbase26d_net
+      wxbase26d_odbc
+      wxbase26d_xml
+      wxmsw26d_adv
+      wxmsw26d_core
+      wxmsw26d_dbgrid
+      wxmsw26d_gl
+      wxmsw26d_html
+      wxmsw26d_media
+      wxmsw26d_qa
+      wxmsw26d_xrc
+      wxexpatd
+      wxjpegd
+      wxpngd
+      wxregexd
+      wxtiffd
+      wxzlibd
+      comctl32
+      rpcrt4
+      wsock32
+      )
+  endif ()
+
+
+  ##
+  ## now we should have found all WX libs available on the system.
+  ## let the user decide which of the available onse to use.
+  ##
+
+  ## if there is at least one shared lib available
+  ## let user choose whether to use shared or static wxwindows libs
+  if(WXWINDOWS_SHARED_LIBRARY OR WXWINDOWS_SHARED_DEBUG_LIBRARY)
+    ## default value OFF because wxWindows MSVS default build is static
+    option(WXWINDOWS_USE_SHARED_LIBS
+      "Use shared versions (dll) of wxWindows libraries?" OFF)
+    mark_as_advanced(WXWINDOWS_USE_SHARED_LIBS)
+  endif()
+
+  ## add system libraries wxwindows always seems to depend on
+  set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
+    comctl32
+    rpcrt4
+    wsock32
+    )
+
+  if (NOT WXWINDOWS_USE_SHARED_LIBS)
+    set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
+      ##  these ones don't seem required, in particular  ctl3d32 is not necessary (Jan Woetzel 07/2003)
+      #   ctl3d32
+      debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY_ZLIB}   optimized ${WXWINDOWS_STATIC_LIBRARY_ZLIB}
+      debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY_REGEX}  optimized ${WXWINDOWS_STATIC_LIBRARY_REGEX}
+      debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY_PNG}    optimized ${WXWINDOWS_STATIC_LIBRARY_PNG}
+      debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY_JPEG}   optimized ${WXWINDOWS_STATIC_LIBRARY_JPEG}
+      debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY_TIFF}   optimized ${WXWINDOWS_STATIC_LIBRARY_TIFF}
+      )
+  endif ()
+
+  ## opengl/glu: TODO/FIXME: better use FindOpenGL.cmake here
+  ## assume release versions of glu an dopengl, here.
+  if (WXWINDOWS_USE_GL)
+    set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
+      opengl32
+      glu32 )
+  endif ()
+
+  ##
+  ## select between use of  shared or static wxWindows lib then set libs to use
+  ## for debug and optimized build.  so the user can switch between debug and
+  ## release build e.g. within MS Visual Studio without running cmake with a
+  ## different build directory again.
+  ##
+  ## then add the build specific include dir for wx/setup.h
+  ##
+
+  if(WXWINDOWS_USE_SHARED_LIBS)
+    ##message("DBG wxWindows use shared lib selected.")
+    ## assume that both builds use the same setup(.h) for simplicity
+
+    ## shared: both wx (debug and release) found?
+    ## assume that both builds use the same setup(.h) for simplicity
+    if(WXWINDOWS_SHARED_DEBUG_LIBRARY AND WXWINDOWS_SHARED_LIBRARY)
+      ##message("DBG wx shared: debug and optimized found.")
+      find_path(WXWINDOWS_INCLUDE_DIR_SETUPH  wx/setup.h
+        ${WXWINDOWS_ROOT_DIR}/lib/mswdlld
+        ${WXWINDOWS_ROOT_DIR}/lib/mswdll
+        ${WXWINDOWS_ROOT_DIR}/lib/vc_dll/mswd
+        ${WXWINDOWS_ROOT_DIR}/lib/vc_dll/msw )
+      set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
+        debug     ${WXWINDOWS_SHARED_DEBUG_LIBRARY}
+        optimized ${WXWINDOWS_SHARED_LIBRARY} )
+      if (WXWINDOWS_USE_GL)
+        set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
+          debug     ${WXWINDOWS_SHARED_DEBUG_LIBRARY_GL}
+          optimized ${WXWINDOWS_SHARED_LIBRARY_GL} )
+      endif ()
+    endif()
+
+    ## shared: only debug wx lib found?
+    if(WXWINDOWS_SHARED_DEBUG_LIBRARY)
+      if(NOT WXWINDOWS_SHARED_LIBRARY)
+        ##message("DBG wx shared: debug (but no optimized) found.")
+        find_path(WXWINDOWS_INCLUDE_DIR_SETUPH  wx/setup.h
+          ${WXWINDOWS_ROOT_DIR}/lib/mswdlld
+          ${WXWINDOWS_ROOT_DIR}/lib/vc_dll/mswd  )
+        set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
+          ${WXWINDOWS_SHARED_DEBUG_LIBRARY} )
+        if (WXWINDOWS_USE_GL)
+          set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
+            ${WXWINDOWS_SHARED_DEBUG_LIBRARY_GL} )
+        endif ()
+      endif()
+    endif()
+
+    ## shared: only release wx lib found?
+    if(NOT WXWINDOWS_SHARED_DEBUG_LIBRARY)
+      if(WXWINDOWS_SHARED_LIBRARY)
+        ##message("DBG wx shared: optimized (but no debug) found.")
+        find_path(WXWINDOWS_INCLUDE_DIR_SETUPH  wx/setup.h
+          ${WXWINDOWS_ROOT_DIR}/lib/mswdll
+          ${WXWINDOWS_ROOT_DIR}/lib/vc_dll/msw  )
+        set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
+          ${WXWINDOWS_SHARED_DEBUG_LIBRARY} )
+        if (WXWINDOWS_USE_GL)
+          set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
+            ${WXWINDOWS_SHARED_DEBUG_LIBRARY_GL} )
+        endif ()
+      endif()
+    endif()
+
+    ## shared: none found?
+    if(NOT WXWINDOWS_SHARED_DEBUG_LIBRARY)
+      if(NOT WXWINDOWS_SHARED_LIBRARY)
+        message(STATUS
+          "No shared wxWindows lib found, but WXWINDOWS_USE_SHARED_LIBS=${WXWINDOWS_USE_SHARED_LIBS}.")
+      endif()
+    endif()
+
+    #########################################################################################
+  else()
+
+    ##jw: DEPRECATED if(NOT WXWINDOWS_SEPARATE_LIBS_BUILD)
+
+    ## static: both wx (debug and release) found?
+    ## assume that both builds use the same setup(.h) for simplicity
+    if(WXWINDOWS_STATIC_DEBUG_LIBRARY AND WXWINDOWS_STATIC_LIBRARY)
+      ##message("DBG wx static: debug and optimized found.")
+      find_path(WXWINDOWS_INCLUDE_DIR_SETUPH  wx/setup.h
+        ${WXWINDOWS_ROOT_DIR}/lib/mswd
+        ${WXWINDOWS_ROOT_DIR}/lib/msw
+        ${WXWINDOWS_ROOT_DIR}/lib/vc_lib/mswd
+        ${WXWINDOWS_ROOT_DIR}/lib/vc_lib/msw )
+      set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
+        debug     ${WXWINDOWS_STATIC_DEBUG_LIBRARY}
+        optimized ${WXWINDOWS_STATIC_LIBRARY} )
+      if (WXWINDOWS_USE_GL)
+        set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
+          debug     ${WXWINDOWS_STATIC_DEBUG_LIBRARY_GL}
+          optimized ${WXWINDOWS_STATIC_LIBRARY_GL} )
+      endif ()
+    endif()
+
+    ## static: only debug wx lib found?
+    if(WXWINDOWS_STATIC_DEBUG_LIBRARY)
+      if(NOT WXWINDOWS_STATIC_LIBRARY)
+        ##message("DBG wx static: debug (but no optimized) found.")
+        find_path(WXWINDOWS_INCLUDE_DIR_SETUPH  wx/setup.h
+          ${WXWINDOWS_ROOT_DIR}/lib/mswd
+          ${WXWINDOWS_ROOT_DIR}/lib/vc_lib/mswd  )
+        set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
+          ${WXWINDOWS_STATIC_DEBUG_LIBRARY} )
+        if (WXWINDOWS_USE_GL)
+          set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
+            ${WXWINDOWS_STATIC_DEBUG_LIBRARY_GL} )
+        endif ()
+      endif()
+    endif()
+
+    ## static: only release wx lib found?
+    if(NOT WXWINDOWS_STATIC_DEBUG_LIBRARY)
+      if(WXWINDOWS_STATIC_LIBRARY)
+        ##message("DBG wx static: optimized (but no debug) found.")
+        find_path(WXWINDOWS_INCLUDE_DIR_SETUPH  wx/setup.h
+          ${WXWINDOWS_ROOT_DIR}/lib/msw
+          ${WXWINDOWS_ROOT_DIR}/lib/vc_lib/msw )
+        set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
+          ${WXWINDOWS_STATIC_LIBRARY} )
+        if (WXWINDOWS_USE_GL)
+          set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
+            ${WXWINDOWS_STATIC_LIBRARY_GL} )
+        endif ()
+      endif()
+    endif()
+
+    ## static: none found?
+    if(NOT WXWINDOWS_STATIC_DEBUG_LIBRARY AND NOT WXWINDOWS_SEPARATE_LIBS_BUILD)
+      if(NOT WXWINDOWS_STATIC_LIBRARY)
+        message(STATUS
+          "No static wxWindows lib found, but WXWINDOWS_USE_SHARED_LIBS=${WXWINDOWS_USE_SHARED_LIBS}.")
+      endif()
+    endif()
+  endif()
+
+
+  ## not necessary in wxWindows 2.4.1 and 2.6.2
+  ## but it may fix a previous bug, see
+  ## http://lists.wxwindows.org/cgi-bin/ezmlm-cgi?8:mss:37574:200305:mpdioeneabobmgjenoap
+  option(WXWINDOWS_SET_DEFINITIONS "Set additional defines for wxWindows" OFF)
+  mark_as_advanced(WXWINDOWS_SET_DEFINITIONS)
+  if (WXWINDOWS_SET_DEFINITIONS)
+    set(WXWINDOWS_DEFINITIONS "-DWINVER=0x400")
+  else ()
+    # clear:
+    set(WXWINDOWS_DEFINITIONS "")
+  endif ()
+
+
+
+  ## Find the include directories for wxwindows
+  ## the first, build specific for wx/setup.h was determined before.
+  ## add inc dir for general for "wx/wx.h"
+  find_path(WXWINDOWS_INCLUDE_DIR  wx/wx.h
+    "${WXWINDOWS_ROOT_DIR}/include" )
+  ## append the build specific include dir for wx/setup.h:
+  if (WXWINDOWS_INCLUDE_DIR_SETUPH)
+    set(WXWINDOWS_INCLUDE_DIR ${WXWINDOWS_INCLUDE_DIR} ${WXWINDOWS_INCLUDE_DIR_SETUPH} )
+  endif ()
+
+
+
+  mark_as_advanced(
+    WXWINDOWS_ROOT_DIR
+    WXWINDOWS_INCLUDE_DIR
+    WXWINDOWS_INCLUDE_DIR_SETUPH
+    WXWINDOWS_STATIC_LIBRARY
+    WXWINDOWS_STATIC_LIBRARY_GL
+    WXWINDOWS_STATIC_DEBUG_LIBRARY
+    WXWINDOWS_STATIC_DEBUG_LIBRARY_GL
+    WXWINDOWS_STATIC_LIBRARY_ZLIB
+    WXWINDOWS_STATIC_DEBUG_LIBRARY_ZLIB
+    WXWINDOWS_STATIC_LIBRARY_REGEX
+    WXWINDOWS_STATIC_DEBUG_LIBRARY_REGEX
+    WXWINDOWS_STATIC_LIBRARY_PNG
+    WXWINDOWS_STATIC_DEBUG_LIBRARY_PNG
+    WXWINDOWS_STATIC_LIBRARY_JPEG
+    WXWINDOWS_STATIC_DEBUG_LIBRARY_JPEG
+    WXWINDOWS_STATIC_DEBUG_LIBRARY_TIFF
+    WXWINDOWS_STATIC_LIBRARY_TIFF
+    WXWINDOWS_SHARED_LIBRARY
+    WXWINDOWS_SHARED_DEBUG_LIBRARY
+    WXWINDOWS_SHARED_LIBRARY_GL
+    WXWINDOWS_SHARED_DEBUG_LIBRARY_GL
+    )
+
+
+else()
+
+  if (UNIX_STYLE_FIND)
+    ## ######################################################################
+    ##
+    ## UNIX/Linux specific:
+    ##
+    ## use backquoted wx-config to query and set flags and libs:
+    ## 06/2003 Jan Woetzel
+    ##
+
+    option(WXWINDOWS_USE_SHARED_LIBS "Use shared versions (.so) of wxWindows libraries" ON)
+    mark_as_advanced(WXWINDOWS_USE_SHARED_LIBS)
+
+    # JW removed option and force the develper th SET it.
+    # option(WXWINDOWS_USE_GL "use wxWindows with GL support (use additional
+    # --gl-libs for wx-config)?" OFF)
+
+    # wx-config should be in your path anyhow, usually no need to set WXWIN or
+    # search in ../wx or ../../wx
+    find_program(CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE
+      NAMES $ENV{WX_CONFIG} wx-config
+      HINTS
+        ENV WXWIN
+        $ENV{WXWIN}/bin
+      PATHS
+      ../wx/bin
+      ../../wx/bin )
+
+    # check whether wx-config was found:
+    if(CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE)
+
+      # use shared/static wx lib?
+      # remember: always link shared to use systems GL etc. libs (no static
+      # linking, just link *against* static .a libs)
+      if(WXWINDOWS_USE_SHARED_LIBS)
+        set(WX_CONFIG_ARGS_LIBS "--libs")
+      else()
+        set(WX_CONFIG_ARGS_LIBS "--static --libs")
+      endif()
+
+      # do we need additionial wx GL stuff like GLCanvas ?
+      if(WXWINDOWS_USE_GL)
+        string(APPEND WX_CONFIG_ARGS_LIBS " --gl-libs" )
+      endif()
+      ##message("DBG: WX_CONFIG_ARGS_LIBS=${WX_CONFIG_ARGS_LIBS}===")
+
+      # set CXXFLAGS to be fed into CMAKE_CXX_FLAGS by the user:
+      if (HAVE_ISYSTEM) # does the compiler support -isystem ?
+              if (NOT APPLE) # -isystem seem sto be unsuppored on Mac
+                if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_COMPILER_IS_GNUCXX )
+            if (CMAKE_CXX_COMPILER MATCHES g\\+\\+)
+              set(CMAKE_WXWINDOWS_CXX_FLAGS "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} --cxxflags|sed -e s/-I/-isystem/g`")
+            else()
+              set(CMAKE_WXWINDOWS_CXX_FLAGS "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} --cxxflags`")
+            endif()
+                endif()
+              endif ()
+      endif ()
+      ##message("DBG: for compilation:
+      ##CMAKE_WXWINDOWS_CXX_FLAGS=${CMAKE_WXWINDOWS_CXX_FLAGS}===")
+
+      # keep the back-quoted string for clarity
+      set(WXWINDOWS_LIBRARIES "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} ${WX_CONFIG_ARGS_LIBS}`")
+      ##message("DBG2: for linking:
+      ##WXWINDOWS_LIBRARIES=${WXWINDOWS_LIBRARIES}===")
+
+      # evaluate wx-config output to separate linker flags and linkdirs for
+      # rpath:
+      exec_program(${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE}
+        ARGS ${WX_CONFIG_ARGS_LIBS}
+        OUTPUT_VARIABLE WX_CONFIG_LIBS )
+
+      ## extract linkdirs (-L) for rpath
+      ## use regular expression to match wildcard equivalent "-L*<endchar>"
+      ## with <endchar> is a space or a semicolon
+      string(REGEX MATCHALL "[-][L]([^ ;])+" WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX "${WX_CONFIG_LIBS}" )
+      # message("DBG  WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX=${WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX}")
+
+      ## remove prefix -L because we need the pure directory for LINK_DIRECTORIES
+      ## replace -L by ; because the separator seems to be lost otherwise (bug or
+      ## feature?)
+      if(WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX)
+        string(REGEX REPLACE "[-][L]" ";" WXWINDOWS_LINK_DIRECTORIES ${WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX} )
+        # message("DBG  WXWINDOWS_LINK_DIRECTORIES=${WXWINDOWS_LINK_DIRECTORIES}")
+      endif()
+
+
+      ## replace space separated string by semicolon separated vector to make it
+      ## work with LINK_DIRECTORIES
+      separate_arguments(WXWINDOWS_LINK_DIRECTORIES)
+
+      mark_as_advanced(
+        CMAKE_WXWINDOWS_CXX_FLAGS
+        WXWINDOWS_INCLUDE_DIR
+        WXWINDOWS_LIBRARIES
+        CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE
+        )
+
+
+      ## we really need wx-config...
+    else()
+      message(STATUS "Cannot find wx-config anywhere on the system. Please put the file into your path or specify it in CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE.")
+      mark_as_advanced(CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE)
+    endif()
+
+
+
+  else()
+    message(STATUS "FindwxWindows.cmake:  Platform unknown/unsupported by FindwxWindows.cmake. It's neither WIN32 nor UNIX")
+  endif()
+endif()
+
+
+if(WXWINDOWS_LIBRARIES)
+  if(WXWINDOWS_INCLUDE_DIR OR CMAKE_WXWINDOWS_CXX_FLAGS)
+    ## found all we need.
+    set(WXWINDOWS_FOUND 1)
+
+    ## set deprecated variables for backward compatibility:
+    set(CMAKE_WX_CAN_COMPILE   ${WXWINDOWS_FOUND})
+    set(WXWINDOWS_LIBRARY     ${WXWINDOWS_LIBRARIES})
+    set(WXWINDOWS_INCLUDE_PATH ${WXWINDOWS_INCLUDE_DIR})
+    set(WXWINDOWS_LINK_DIRECTORIES ${WXWINDOWS_LINK_DIRECTORIES})
+    set(CMAKE_WX_CXX_FLAGS     ${CMAKE_WXWINDOWS_CXX_FLAGS})
+
+  endif()
+endif()
diff --git a/share/cmake-3.22/Modules/FortranCInterface.cmake b/share/cmake-3.22/Modules/FortranCInterface.cmake
new file mode 100644
index 0000000..733c723
--- /dev/null
+++ b/share/cmake-3.22/Modules/FortranCInterface.cmake
@@ -0,0 +1,400 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FortranCInterface
+-----------------
+
+Fortran/C Interface Detection
+
+This module automatically detects the API by which C and Fortran
+languages interact.
+
+Module Variables
+^^^^^^^^^^^^^^^^
+
+Variables that indicate if the mangling is found:
+
+``FortranCInterface_GLOBAL_FOUND``
+  Global subroutines and functions.
+
+``FortranCInterface_MODULE_FOUND``
+  Module subroutines and functions (declared by "MODULE PROCEDURE").
+
+This module also provides the following variables to specify
+the detected mangling, though a typical use case does not need
+to reference them and can use the `Module Functions`_ below.
+
+``FortranCInterface_GLOBAL_PREFIX``
+  Prefix for a global symbol without an underscore.
+
+``FortranCInterface_GLOBAL_SUFFIX``
+  Suffix for a global symbol without an underscore.
+
+``FortranCInterface_GLOBAL_CASE``
+  The case for a global symbol without an underscore,
+  either ``UPPER`` or ``LOWER``.
+
+``FortranCInterface_GLOBAL__PREFIX``
+  Prefix for a global symbol with an underscore.
+
+``FortranCInterface_GLOBAL__SUFFIX``
+  Suffix for a global symbol with an underscore.
+
+``FortranCInterface_GLOBAL__CASE``
+  The case for a global symbol with an underscore,
+  either ``UPPER`` or ``LOWER``.
+
+``FortranCInterface_MODULE_PREFIX``
+  Prefix for a module symbol without an underscore.
+
+``FortranCInterface_MODULE_MIDDLE``
+  Middle of a module symbol without an underscore that appears
+  between the name of the module and the name of the symbol.
+
+``FortranCInterface_MODULE_SUFFIX``
+  Suffix for a module symbol without an underscore.
+
+``FortranCInterface_MODULE_CASE``
+  The case for a module symbol without an underscore,
+  either ``UPPER`` or ``LOWER``.
+
+``FortranCInterface_MODULE__PREFIX``
+  Prefix for a module symbol with an underscore.
+
+``FortranCInterface_MODULE__MIDDLE``
+  Middle of a module symbol with an underscore that appears
+  between the name of the module and the name of the symbol.
+
+``FortranCInterface_MODULE__SUFFIX``
+  Suffix for a module symbol with an underscore.
+
+``FortranCInterface_MODULE__CASE``
+  The case for a module symbol with an underscore,
+  either ``UPPER`` or ``LOWER``.
+
+Module Functions
+^^^^^^^^^^^^^^^^
+
+.. command:: FortranCInterface_HEADER
+
+  The ``FortranCInterface_HEADER`` function is provided to generate a
+  C header file containing macros to mangle symbol names::
+
+    FortranCInterface_HEADER(<file>
+                             [MACRO_NAMESPACE <macro-ns>]
+                             [SYMBOL_NAMESPACE <ns>]
+                             [SYMBOLS [<module>:]<function> ...])
+
+  It generates in ``<file>`` definitions of the following macros::
+
+     #define FortranCInterface_GLOBAL (name,NAME) ...
+     #define FortranCInterface_GLOBAL_(name,NAME) ...
+     #define FortranCInterface_MODULE (mod,name, MOD,NAME) ...
+     #define FortranCInterface_MODULE_(mod,name, MOD,NAME) ...
+
+  These macros mangle four categories of Fortran symbols, respectively:
+
+  * Global symbols without '_': ``call mysub()``
+  * Global symbols with '_'   : ``call my_sub()``
+  * Module symbols without '_': ``use mymod; call mysub()``
+  * Module symbols with '_'   : ``use mymod; call my_sub()``
+
+  If mangling for a category is not known, its macro is left undefined.
+  All macros require raw names in both lower case and upper case.
+
+  The options are:
+
+  ``MACRO_NAMESPACE``
+    Replace the default ``FortranCInterface_`` prefix with a given
+    namespace ``<macro-ns>``.
+
+  ``SYMBOLS``
+    List symbols to mangle automatically with C preprocessor definitions::
+
+      <function>          ==> #define <ns><function> ...
+      <module>:<function> ==> #define <ns><module>_<function> ...
+
+    If the mangling for some symbol is not known then no preprocessor
+    definition is created, and a warning is displayed.
+
+  ``SYMBOL_NAMESPACE``
+    Prefix all preprocessor definitions generated by the ``SYMBOLS``
+    option with a given namespace ``<ns>``.
+
+.. command:: FortranCInterface_VERIFY
+
+  The ``FortranCInterface_VERIFY`` function is provided to verify
+  that the Fortran and C/C++ compilers work together::
+
+    FortranCInterface_VERIFY([CXX] [QUIET])
+
+  It tests whether a simple test executable using Fortran and C (and C++
+  when the CXX option is given) compiles and links successfully.  The
+  result is stored in the cache entry ``FortranCInterface_VERIFIED_C``
+  (or ``FortranCInterface_VERIFIED_CXX`` if ``CXX`` is given) as a boolean.
+  If the check fails and ``QUIET`` is not given the function terminates with a
+  fatal error message describing the problem.  The purpose of this check
+  is to stop a build early for incompatible compiler combinations.  The
+  test is built in the ``Release`` configuration.
+
+Example Usage
+^^^^^^^^^^^^^
+
+.. code-block:: cmake
+
+   include(FortranCInterface)
+   FortranCInterface_HEADER(FC.h MACRO_NAMESPACE "FC_")
+
+This creates a "FC.h" header that defines mangling macros ``FC_GLOBAL()``,
+``FC_GLOBAL_()``, ``FC_MODULE()``, and ``FC_MODULE_()``.
+
+.. code-block:: cmake
+
+   include(FortranCInterface)
+   FortranCInterface_HEADER(FCMangle.h
+                            MACRO_NAMESPACE "FC_"
+                            SYMBOL_NAMESPACE "FC_"
+                            SYMBOLS mysub mymod:my_sub)
+
+This creates a "FCMangle.h" header that defines the same ``FC_*()``
+mangling macros as the previous example plus preprocessor symbols
+``FC_mysub`` and ``FC_mymod_my_sub``.
+
+Additional Manglings
+^^^^^^^^^^^^^^^^^^^^
+
+FortranCInterface is aware of possible ``GLOBAL`` and ``MODULE`` manglings
+for many Fortran compilers, but it also provides an interface to specify
+new possible manglings.  Set the variables::
+
+   FortranCInterface_GLOBAL_SYMBOLS
+   FortranCInterface_MODULE_SYMBOLS
+
+before including FortranCInterface to specify manglings of the symbols
+``MySub``, ``My_Sub``, ``MyModule:MySub``, and ``My_Module:My_Sub``.
+For example, the code:
+
+.. code-block:: cmake
+
+   set(FortranCInterface_GLOBAL_SYMBOLS mysub_ my_sub__ MYSUB_)
+     #                                  ^^^^^  ^^^^^^   ^^^^^
+   set(FortranCInterface_MODULE_SYMBOLS
+       __mymodule_MOD_mysub __my_module_MOD_my_sub)
+     #   ^^^^^^^^     ^^^^^   ^^^^^^^^^     ^^^^^^
+   include(FortranCInterface)
+
+tells FortranCInterface to try given ``GLOBAL`` and ``MODULE`` manglings.
+(The carets point at raw symbol names for clarity in this example but
+are not needed.)
+#]=======================================================================]
+
+#-----------------------------------------------------------------------------
+# Execute at most once in a project.
+if(FortranCInterface_SOURCE_DIR)
+  return()
+endif()
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0007 NEW)
+
+#-----------------------------------------------------------------------------
+# Verify that C and Fortran are available.
+foreach(lang C Fortran)
+  if(NOT CMAKE_${lang}_COMPILER_LOADED)
+    message(FATAL_ERROR
+      "FortranCInterface requires the ${lang} language to be enabled.")
+  endif()
+endforeach()
+
+#-----------------------------------------------------------------------------
+set(FortranCInterface_SOURCE_DIR ${CMAKE_ROOT}/Modules/FortranCInterface)
+
+# MinGW's make tool does not always like () in the path
+if("${CMAKE_GENERATOR}" MATCHES "MinGW" AND
+    "${FortranCInterface_SOURCE_DIR}" MATCHES "[()]")
+  file(COPY ${FortranCInterface_SOURCE_DIR}/
+    DESTINATION ${CMAKE_BINARY_DIR}/CMakeFiles/FortranCInterfaceMinGW)
+  set(FortranCInterface_SOURCE_DIR ${CMAKE_BINARY_DIR}/CMakeFiles/FortranCInterfaceMinGW)
+endif()
+
+# Create the interface detection project if it does not exist.
+if(NOT FortranCInterface_BINARY_DIR)
+  set(FortranCInterface_BINARY_DIR ${CMAKE_BINARY_DIR}/CMakeFiles/FortranCInterface)
+  include(${FortranCInterface_SOURCE_DIR}/Detect.cmake)
+endif()
+
+# Load the detection results.
+include(${FortranCInterface_BINARY_DIR}/Output.cmake)
+
+#-----------------------------------------------------------------------------
+function(FortranCInterface_HEADER file)
+  # Parse arguments.
+  if(IS_ABSOLUTE "${file}")
+    set(FILE "${file}")
+  else()
+    set(FILE "${CMAKE_CURRENT_BINARY_DIR}/${file}")
+  endif()
+  set(MACRO_NAMESPACE "FortranCInterface_")
+  set(SYMBOL_NAMESPACE)
+  set(SYMBOLS)
+  set(doing)
+  foreach(arg ${ARGN})
+    if("x${arg}" MATCHES "^x(SYMBOLS|SYMBOL_NAMESPACE|MACRO_NAMESPACE)$")
+      set(doing "${arg}")
+    elseif("x${doing}" MATCHES "^x(SYMBOLS)$")
+      list(APPEND "${doing}" "${arg}")
+    elseif("x${doing}" MATCHES "^x(SYMBOL_NAMESPACE|MACRO_NAMESPACE)$")
+      set("${doing}" "${arg}")
+      set(doing)
+    else()
+      message(AUTHOR_WARNING "Unknown argument: \"${arg}\"")
+    endif()
+  endforeach()
+
+  # Generate macro definitions.
+  set(HEADER_CONTENT)
+  set(_desc_GLOBAL  "/* Mangling for Fortran global symbols without underscores. */")
+  set(_desc_GLOBAL_ "/* Mangling for Fortran global symbols with underscores. */")
+  set(_desc_MODULE  "/* Mangling for Fortran module symbols without underscores. */")
+  set(_desc_MODULE_ "/* Mangling for Fortran module symbols with underscores. */")
+  foreach(macro GLOBAL GLOBAL_ MODULE MODULE_)
+    if(FortranCInterface_${macro}_MACRO)
+      string(APPEND HEADER_CONTENT "
+${_desc_${macro}}
+#define ${MACRO_NAMESPACE}${macro}${FortranCInterface_${macro}_MACRO}
+")
+    endif()
+  endforeach()
+
+  # Generate symbol mangling definitions.
+  if(SYMBOLS)
+    string(APPEND HEADER_CONTENT "
+/*--------------------------------------------------------------------------*/
+/* Mangle some symbols automatically.                                       */
+")
+  endif()
+  foreach(f ${SYMBOLS})
+    if("${f}" MATCHES ":")
+      # Module symbol name.  Parse "<module>:<function>" syntax.
+      string(REPLACE ":" ";" pieces "${f}")
+      list(GET pieces 0 module)
+      list(GET pieces 1 function)
+      string(TOUPPER "${module}" m_upper)
+      string(TOLOWER "${module}" m_lower)
+      string(TOUPPER "${function}" f_upper)
+      string(TOLOWER "${function}" f_lower)
+      if("${function}" MATCHES "_")
+        set(form "_")
+      else()
+        set(form "")
+      endif()
+      if(FortranCInterface_MODULE${form}_MACRO)
+        string(APPEND HEADER_CONTENT "#define ${SYMBOL_NAMESPACE}${module}_${function} ${MACRO_NAMESPACE}MODULE${form}(${m_lower},${f_lower}, ${m_upper},${f_upper})\n")
+      else()
+        message(AUTHOR_WARNING "No FortranCInterface mangling known for ${f}")
+      endif()
+    else()
+      # Global symbol name.
+      if("${f}" MATCHES "_")
+        set(form "_")
+      else()
+        set(form "")
+      endif()
+      string(TOUPPER "${f}" f_upper)
+      string(TOLOWER "${f}" f_lower)
+      if(FortranCInterface_GLOBAL${form}_MACRO)
+        string(APPEND HEADER_CONTENT "#define ${SYMBOL_NAMESPACE}${f} ${MACRO_NAMESPACE}GLOBAL${form}(${f_lower}, ${f_upper})\n")
+      else()
+        message(AUTHOR_WARNING "No FortranCInterface mangling known for ${f}")
+      endif()
+    endif()
+  endforeach()
+
+  # Store the content.
+  configure_file(${FortranCInterface_SOURCE_DIR}/Macro.h.in ${FILE} @ONLY)
+endfunction()
+
+function(FortranCInterface_VERIFY)
+  # Check arguments.
+
+  set(lang C)
+  set(quiet 0)
+  set(verify_cxx 0)
+  foreach(arg ${ARGN})
+    if("${arg}" STREQUAL "QUIET")
+      set(quiet 1)
+    elseif("${arg}" STREQUAL "CXX")
+      set(lang CXX)
+      set(verify_cxx 1)
+    else()
+      message(FATAL_ERROR
+        "FortranCInterface_VERIFY - called with unknown argument:\n  ${arg}")
+    endif()
+  endforeach()
+
+  if(NOT CMAKE_${lang}_COMPILER_LOADED)
+    message(FATAL_ERROR
+      "FortranCInterface_VERIFY(${lang}) requires ${lang} to be enabled.")
+  endif()
+
+  # Build the verification project if not yet built.
+  if(NOT DEFINED FortranCInterface_VERIFIED_${lang})
+    set(_desc "Verifying Fortran/${lang} Compiler Compatibility")
+    message(CHECK_START "${_desc}")
+
+    cmake_policy(GET CMP0056 _FortranCInterface_CMP0056)
+    if(_FortranCInterface_CMP0056 STREQUAL "NEW")
+      set(_FortranCInterface_EXE_LINKER_FLAGS "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS}")
+    else()
+      set(_FortranCInterface_EXE_LINKER_FLAGS "")
+    endif()
+
+    # Build a sample project which reports symbols.
+    set(CMAKE_TRY_COMPILE_CONFIGURATION Release)
+    try_compile(FortranCInterface_VERIFY_${lang}_COMPILED
+      ${FortranCInterface_BINARY_DIR}/Verify${lang}
+      ${FortranCInterface_SOURCE_DIR}/Verify
+      VerifyFortranC # project name
+      VerifyFortranC # target name
+      CMAKE_FLAGS -DVERIFY_CXX=${verify_cxx}
+                  -DCMAKE_VERBOSE_MAKEFILE=ON
+                 "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS}"
+                 "-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS}"
+                 "-DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS}"
+                 "-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}"
+                 "-DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}"
+                 "-DCMAKE_Fortran_FLAGS_RELEASE:STRING=${CMAKE_Fortran_FLAGS_RELEASE}"
+                 ${_FortranCInterface_EXE_LINKER_FLAGS}
+      OUTPUT_VARIABLE _output)
+    file(WRITE "${FortranCInterface_BINARY_DIR}/Verify${lang}/output.txt" "${_output}")
+
+    # Report results.
+    if(FortranCInterface_VERIFY_${lang}_COMPILED)
+      message(CHECK_PASS "Success")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "${_desc} passed with the following output:\n${_output}\n\n")
+      set(FortranCInterface_VERIFIED_${lang} 1 CACHE INTERNAL "Fortran/${lang} compatibility")
+    else()
+      message(CHECK_FAIL "Failed")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "${_desc} failed with the following output:\n${_output}\n\n")
+      set(FortranCInterface_VERIFIED_${lang} 0 CACHE INTERNAL "Fortran/${lang} compatibility")
+    endif()
+    unset(FortranCInterface_VERIFY_${lang}_COMPILED CACHE)
+  endif()
+
+  # Error if compilers are incompatible.
+  if(NOT FortranCInterface_VERIFIED_${lang} AND NOT quiet)
+    file(READ "${FortranCInterface_BINARY_DIR}/Verify${lang}/output.txt" _output)
+    string(REPLACE "\n" "\n  " _output "${_output}")
+    message(FATAL_ERROR
+      "The Fortran compiler:\n  ${CMAKE_Fortran_COMPILER}\n"
+      "and the ${lang} compiler:\n  ${CMAKE_${lang}_COMPILER}\n"
+      "failed to compile a simple test project using both languages.  "
+      "The output was:\n  ${_output}")
+  endif()
+endfunction()
+
+# Restore including context policies.
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/FortranCInterface/CMakeLists.txt b/share/cmake-3.22/Modules/FortranCInterface/CMakeLists.txt
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/CMakeLists.txt
rename to share/cmake-3.22/Modules/FortranCInterface/CMakeLists.txt
diff --git a/share/cmake-3.22/Modules/FortranCInterface/Detect.cmake b/share/cmake-3.22/Modules/FortranCInterface/Detect.cmake
new file mode 100644
index 0000000..4d3cb00
--- /dev/null
+++ b/share/cmake-3.22/Modules/FortranCInterface/Detect.cmake
@@ -0,0 +1,186 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+configure_file(${FortranCInterface_SOURCE_DIR}/Input.cmake.in
+               ${FortranCInterface_BINARY_DIR}/Input.cmake @ONLY)
+
+# Detect the Fortran/C interface on the first run or when the
+# configuration changes.
+if(NOT EXISTS ${FortranCInterface_BINARY_DIR}/Output.cmake
+    OR NOT EXISTS ${FortranCInterface_BINARY_DIR}/Input.cmake
+    OR NOT ${FortranCInterface_BINARY_DIR}/Output.cmake
+      IS_NEWER_THAN ${FortranCInterface_BINARY_DIR}/Input.cmake
+    OR NOT ${FortranCInterface_SOURCE_DIR}/Output.cmake
+      IS_NEWER_THAN ${FortranCInterface_SOURCE_DIR}/Output.cmake.in
+    OR NOT ${FortranCInterface_BINARY_DIR}/Output.cmake
+      IS_NEWER_THAN ${FortranCInterface_SOURCE_DIR}/CMakeLists.txt
+    OR NOT ${FortranCInterface_BINARY_DIR}/Output.cmake
+      IS_NEWER_THAN ${CMAKE_CURRENT_LIST_FILE}
+    )
+  message(CHECK_START "Detecting Fortran/C Interface")
+else()
+  return()
+endif()
+
+# Invalidate verification results.
+unset(FortranCInterface_VERIFIED_C CACHE)
+unset(FortranCInterface_VERIFIED_CXX CACHE)
+
+set(_result)
+
+cmake_policy(GET CMP0056 _FortranCInterface_CMP0056)
+if(_FortranCInterface_CMP0056 STREQUAL "NEW")
+  set(_FortranCInterface_EXE_LINKER_FLAGS "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS}")
+else()
+  set(_FortranCInterface_EXE_LINKER_FLAGS "")
+endif()
+unset(_FortranCInterface_CMP0056)
+
+# Build a sample project which reports symbols.
+set(CMAKE_TRY_COMPILE_CONFIGURATION Release)
+try_compile(FortranCInterface_COMPILED
+  ${FortranCInterface_BINARY_DIR}
+  ${FortranCInterface_SOURCE_DIR}
+  FortranCInterface # project name
+  FortranCInterface # target name
+  CMAKE_FLAGS
+    "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS}"
+    "-DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS}"
+    "-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}"
+    "-DCMAKE_Fortran_FLAGS_RELEASE:STRING=${CMAKE_Fortran_FLAGS_RELEASE}"
+    ${_FortranCInterface_EXE_LINKER_FLAGS}
+  OUTPUT_VARIABLE FortranCInterface_OUTPUT)
+set(FortranCInterface_COMPILED ${FortranCInterface_COMPILED})
+unset(FortranCInterface_COMPILED CACHE)
+unset(_FortranCInterface_EXE_LINKER_FLAGS)
+
+# Locate the sample project executable.
+set(FortranCInterface_EXE)
+if(FortranCInterface_COMPILED)
+  include(${FortranCInterface_BINARY_DIR}/exe-Release.cmake OPTIONAL)
+else()
+  set(_result "Failed to compile")
+  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+    "Fortran/C interface test project failed with the following output:\n"
+    "${FortranCInterface_OUTPUT}\n")
+endif()
+
+# Load symbols from INFO:symbol[] strings in the executable.
+set(FortranCInterface_SYMBOLS)
+if(FortranCInterface_EXE)
+  file(STRINGS "${FortranCInterface_EXE}" _info_strings
+    LIMIT_COUNT 8 REGEX "INFO:[A-Za-z0-9_]+\\[[^]]*\\]")
+  foreach(info ${_info_strings})
+    if("${info}" MATCHES "INFO:symbol\\[([^]]*)\\]")
+      list(APPEND FortranCInterface_SYMBOLS ${CMAKE_MATCH_1})
+    endif()
+  endforeach()
+elseif(NOT _result)
+  set(_result "Failed to load sample executable")
+endif()
+
+set(_case_mysub "LOWER")
+set(_case_my_sub "LOWER")
+set(_case_MYSUB "UPPER")
+set(_case_MY_SUB "UPPER")
+set(_global_regex  "^(_*)(mysub|MYSUB)([_$]*)$")
+set(_global__regex "^(_*)(my_sub|MY_SUB)([_$]*)$")
+set(_module_regex  "^(_*)(mymodule|MYMODULE)([A-Za-z_$]*)(mysub|MYSUB)([_$]*)$")
+set(_module__regex "^(_*)(my_module|MY_MODULE)([A-Za-z_$]*)(my_sub|MY_SUB)([_$]*)$")
+
+# Parse the symbol names.
+foreach(symbol ${FortranCInterface_SYMBOLS})
+  foreach(form "" "_")
+    # Look for global symbols.
+    string(REGEX REPLACE "${_global_${form}regex}"
+                         "\\1;\\2;\\3" pieces "${symbol}")
+    list(LENGTH pieces len)
+    if(len EQUAL 3)
+      set(FortranCInterface_GLOBAL_${form}SYMBOL "${symbol}")
+      list(GET pieces 0 FortranCInterface_GLOBAL_${form}PREFIX)
+      list(GET pieces 1 name)
+      list(GET pieces 2 FortranCInterface_GLOBAL_${form}SUFFIX)
+      set(FortranCInterface_GLOBAL_${form}CASE "${_case_${name}}")
+    endif()
+
+    # Look for module symbols.
+    string(REGEX REPLACE "${_module_${form}regex}"
+                         "\\1;\\2;\\3;\\4;\\5" pieces "${symbol}")
+    list(LENGTH pieces len)
+    if(len EQUAL 5)
+      set(FortranCInterface_MODULE_${form}SYMBOL "${symbol}")
+      list(GET pieces 0 FortranCInterface_MODULE_${form}PREFIX)
+      list(GET pieces 1 module)
+      list(GET pieces 2 FortranCInterface_MODULE_${form}MIDDLE)
+      list(GET pieces 3 name)
+      list(GET pieces 4 FortranCInterface_MODULE_${form}SUFFIX)
+      set(FortranCInterface_MODULE_${form}CASE "${_case_${name}}")
+    endif()
+  endforeach()
+endforeach()
+
+# Construct mangling macro definitions.
+set(_name_LOWER "name")
+set(_name_UPPER "NAME")
+foreach(form "" "_")
+  if(FortranCInterface_GLOBAL_${form}SYMBOL)
+    if(FortranCInterface_GLOBAL_${form}PREFIX)
+      set(_prefix "${FortranCInterface_GLOBAL_${form}PREFIX}##")
+    else()
+      set(_prefix "")
+    endif()
+    if(FortranCInterface_GLOBAL_${form}SUFFIX)
+      set(_suffix "##${FortranCInterface_GLOBAL_${form}SUFFIX}")
+    else()
+      set(_suffix "")
+    endif()
+    set(_name "${_name_${FortranCInterface_GLOBAL_${form}CASE}}")
+    set(FortranCInterface_GLOBAL${form}_MACRO
+      "(name,NAME) ${_prefix}${_name}${_suffix}")
+  endif()
+  if(FortranCInterface_MODULE_${form}SYMBOL)
+    if(FortranCInterface_MODULE_${form}PREFIX)
+      set(_prefix "${FortranCInterface_MODULE_${form}PREFIX}##")
+    else()
+      set(_prefix "")
+    endif()
+    if(FortranCInterface_MODULE_${form}SUFFIX)
+      set(_suffix "##${FortranCInterface_MODULE_${form}SUFFIX}")
+    else()
+      set(_suffix "")
+    endif()
+    set(_name "${_name_${FortranCInterface_MODULE_${form}CASE}}")
+    set(_middle "##${FortranCInterface_MODULE_${form}MIDDLE}##")
+    set(FortranCInterface_MODULE${form}_MACRO
+      "(mod_name,name, mod_NAME,NAME) ${_prefix}mod_${_name}${_middle}${_name}${_suffix}")
+  endif()
+endforeach()
+
+# Summarize what is available.
+foreach(scope GLOBAL MODULE)
+  if(FortranCInterface_${scope}_SYMBOL AND
+      FortranCInterface_${scope}__SYMBOL)
+    set(FortranCInterface_${scope}_FOUND 1)
+  else()
+    set(FortranCInterface_${scope}_FOUND 0)
+  endif()
+endforeach()
+
+# Record the detection results.
+configure_file(${FortranCInterface_SOURCE_DIR}/Output.cmake.in
+               ${FortranCInterface_BINARY_DIR}/Output.cmake @ONLY)
+file(APPEND ${FortranCInterface_BINARY_DIR}/Output.cmake "\n")
+
+# Report the results.
+if(FortranCInterface_GLOBAL_FOUND)
+  if(FortranCInterface_MODULE_FOUND)
+    set(_result "Found GLOBAL and MODULE mangling")
+  else()
+    set(_result "Found GLOBAL but not MODULE mangling")
+  endif()
+  set(_result_type CHECK_PASS)
+elseif(NOT _result)
+  set(_result "Failed to recognize symbols")
+  set(_result_type CHECK_FAIL)
+endif()
+message(${_result_type} "${_result}")
diff --git a/share/cmake-3.18/Modules/FortranCInterface/Input.cmake.in b/share/cmake-3.22/Modules/FortranCInterface/Input.cmake.in
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/Input.cmake.in
rename to share/cmake-3.22/Modules/FortranCInterface/Input.cmake.in
diff --git a/share/cmake-3.18/Modules/FortranCInterface/MYMODULE.c b/share/cmake-3.22/Modules/FortranCInterface/MYMODULE.c
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/MYMODULE.c
rename to share/cmake-3.22/Modules/FortranCInterface/MYMODULE.c
diff --git a/share/cmake-3.18/Modules/FortranCInterface/MY_MODULE.c b/share/cmake-3.22/Modules/FortranCInterface/MY_MODULE.c
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/MY_MODULE.c
rename to share/cmake-3.22/Modules/FortranCInterface/MY_MODULE.c
diff --git a/share/cmake-3.18/Modules/FortranCInterface/Macro.h.in b/share/cmake-3.22/Modules/FortranCInterface/Macro.h.in
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/Macro.h.in
rename to share/cmake-3.22/Modules/FortranCInterface/Macro.h.in
diff --git a/share/cmake-3.18/Modules/FortranCInterface/Output.cmake.in b/share/cmake-3.22/Modules/FortranCInterface/Output.cmake.in
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/Output.cmake.in
rename to share/cmake-3.22/Modules/FortranCInterface/Output.cmake.in
diff --git a/share/cmake-3.18/Modules/FortranCInterface/Verify/CMakeLists.txt b/share/cmake-3.22/Modules/FortranCInterface/Verify/CMakeLists.txt
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/Verify/CMakeLists.txt
rename to share/cmake-3.22/Modules/FortranCInterface/Verify/CMakeLists.txt
diff --git a/share/cmake-3.18/Modules/FortranCInterface/Verify/VerifyC.c b/share/cmake-3.22/Modules/FortranCInterface/Verify/VerifyC.c
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/Verify/VerifyC.c
rename to share/cmake-3.22/Modules/FortranCInterface/Verify/VerifyC.c
diff --git a/share/cmake-3.18/Modules/FortranCInterface/Verify/VerifyCXX.cxx b/share/cmake-3.22/Modules/FortranCInterface/Verify/VerifyCXX.cxx
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/Verify/VerifyCXX.cxx
rename to share/cmake-3.22/Modules/FortranCInterface/Verify/VerifyCXX.cxx
diff --git a/share/cmake-3.18/Modules/FortranCInterface/Verify/VerifyFortran.f b/share/cmake-3.22/Modules/FortranCInterface/Verify/VerifyFortran.f
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/Verify/VerifyFortran.f
rename to share/cmake-3.22/Modules/FortranCInterface/Verify/VerifyFortran.f
diff --git a/share/cmake-3.18/Modules/FortranCInterface/Verify/main.c b/share/cmake-3.22/Modules/FortranCInterface/Verify/main.c
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/Verify/main.c
rename to share/cmake-3.22/Modules/FortranCInterface/Verify/main.c
diff --git a/share/cmake-3.18/Modules/FortranCInterface/call_mod.f90 b/share/cmake-3.22/Modules/FortranCInterface/call_mod.f90
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/call_mod.f90
rename to share/cmake-3.22/Modules/FortranCInterface/call_mod.f90
diff --git a/share/cmake-3.18/Modules/FortranCInterface/call_sub.f b/share/cmake-3.22/Modules/FortranCInterface/call_sub.f
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/call_sub.f
rename to share/cmake-3.22/Modules/FortranCInterface/call_sub.f
diff --git a/share/cmake-3.18/Modules/FortranCInterface/main.F b/share/cmake-3.22/Modules/FortranCInterface/main.F
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/main.F
rename to share/cmake-3.22/Modules/FortranCInterface/main.F
diff --git a/share/cmake-3.18/Modules/FortranCInterface/my_module.f90 b/share/cmake-3.22/Modules/FortranCInterface/my_module.f90
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/my_module.f90
rename to share/cmake-3.22/Modules/FortranCInterface/my_module.f90
diff --git a/share/cmake-3.18/Modules/FortranCInterface/my_module_.c b/share/cmake-3.22/Modules/FortranCInterface/my_module_.c
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/my_module_.c
rename to share/cmake-3.22/Modules/FortranCInterface/my_module_.c
diff --git a/share/cmake-3.18/Modules/FortranCInterface/my_sub.f b/share/cmake-3.22/Modules/FortranCInterface/my_sub.f
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/my_sub.f
rename to share/cmake-3.22/Modules/FortranCInterface/my_sub.f
diff --git a/share/cmake-3.18/Modules/FortranCInterface/mymodule.f90 b/share/cmake-3.22/Modules/FortranCInterface/mymodule.f90
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/mymodule.f90
rename to share/cmake-3.22/Modules/FortranCInterface/mymodule.f90
diff --git a/share/cmake-3.18/Modules/FortranCInterface/mymodule_.c b/share/cmake-3.22/Modules/FortranCInterface/mymodule_.c
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/mymodule_.c
rename to share/cmake-3.22/Modules/FortranCInterface/mymodule_.c
diff --git a/share/cmake-3.18/Modules/FortranCInterface/mysub.f b/share/cmake-3.22/Modules/FortranCInterface/mysub.f
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/mysub.f
rename to share/cmake-3.22/Modules/FortranCInterface/mysub.f
diff --git a/share/cmake-3.18/Modules/FortranCInterface/symbol.c.in b/share/cmake-3.22/Modules/FortranCInterface/symbol.c.in
similarity index 100%
rename from share/cmake-3.18/Modules/FortranCInterface/symbol.c.in
rename to share/cmake-3.22/Modules/FortranCInterface/symbol.c.in
diff --git a/share/cmake-3.22/Modules/GNUInstallDirs.cmake b/share/cmake-3.22/Modules/GNUInstallDirs.cmake
new file mode 100644
index 0000000..01bd637
--- /dev/null
+++ b/share/cmake-3.22/Modules/GNUInstallDirs.cmake
@@ -0,0 +1,442 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+GNUInstallDirs
+--------------
+
+Define GNU standard installation directories
+
+Provides install directory variables as defined by the
+`GNU Coding Standards`_.
+
+.. _`GNU Coding Standards`: https://www.gnu.org/prep/standards/html_node/Directory-Variables.html
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+Inclusion of this module defines the following variables:
+
+``CMAKE_INSTALL_<dir>``
+
+  Destination for files of a given type.  This value may be passed to
+  the ``DESTINATION`` options of :command:`install` commands for the
+  corresponding file type.  It should typically be a path relative to
+  the installation prefix so that it can be converted to an absolute
+  path in a relocatable way (see ``CMAKE_INSTALL_FULL_<dir>``).
+  However, an absolute path is also allowed.
+
+``CMAKE_INSTALL_FULL_<dir>``
+
+  The absolute path generated from the corresponding ``CMAKE_INSTALL_<dir>``
+  value.  If the value is not already an absolute path, an absolute path
+  is constructed typically by prepending the value of the
+  :variable:`CMAKE_INSTALL_PREFIX` variable.  However, there are some
+  `special cases`_ as documented below.
+
+where ``<dir>`` is one of:
+
+``BINDIR``
+  user executables (``bin``)
+``SBINDIR``
+  system admin executables (``sbin``)
+``LIBEXECDIR``
+  program executables (``libexec``)
+``SYSCONFDIR``
+  read-only single-machine data (``etc``)
+``SHAREDSTATEDIR``
+  modifiable architecture-independent data (``com``)
+``LOCALSTATEDIR``
+  modifiable single-machine data (``var``)
+``RUNSTATEDIR``
+  .. versionadded:: 3.9
+    run-time variable data (``LOCALSTATEDIR/run``)
+``LIBDIR``
+  object code libraries (``lib`` or ``lib64``
+  or ``lib/<multiarch-tuple>`` on Debian)
+``INCLUDEDIR``
+  C header files (``include``)
+``OLDINCLUDEDIR``
+  C header files for non-gcc (``/usr/include``)
+``DATAROOTDIR``
+  read-only architecture-independent data root (``share``)
+``DATADIR``
+  read-only architecture-independent data (``DATAROOTDIR``)
+``INFODIR``
+  info documentation (``DATAROOTDIR/info``)
+``LOCALEDIR``
+  locale-dependent data (``DATAROOTDIR/locale``)
+``MANDIR``
+  man documentation (``DATAROOTDIR/man``)
+``DOCDIR``
+  documentation root (``DATAROOTDIR/doc/PROJECT_NAME``)
+
+If the includer does not define a value the above-shown default will be
+used and the value will appear in the cache for editing by the user.
+
+Special Cases
+^^^^^^^^^^^^^
+
+.. versionadded:: 3.4
+
+The following values of :variable:`CMAKE_INSTALL_PREFIX` are special:
+
+``/``
+
+  For ``<dir>`` other than the ``SYSCONFDIR``, ``LOCALSTATEDIR`` and
+  ``RUNSTATEDIR``, the value of ``CMAKE_INSTALL_<dir>`` is prefixed
+  with ``usr/`` if it is not user-specified as an absolute path.
+  For example, the ``INCLUDEDIR`` value ``include`` becomes ``usr/include``.
+  This is required by the `GNU Coding Standards`_, which state:
+
+    When building the complete GNU system, the prefix will be empty
+    and ``/usr`` will be a symbolic link to ``/``.
+
+``/usr``
+
+  For ``<dir>`` equal to ``SYSCONFDIR``, ``LOCALSTATEDIR`` or
+  ``RUNSTATEDIR``, the ``CMAKE_INSTALL_FULL_<dir>`` is computed by
+  prepending just ``/`` to the value of ``CMAKE_INSTALL_<dir>``
+  if it is not user-specified as an absolute path.
+  For example, the ``SYSCONFDIR`` value ``etc`` becomes ``/etc``.
+  This is required by the `GNU Coding Standards`_.
+
+``/opt/...``
+
+  For ``<dir>`` equal to ``SYSCONFDIR``, ``LOCALSTATEDIR`` or
+  ``RUNSTATEDIR``, the ``CMAKE_INSTALL_FULL_<dir>`` is computed by
+  *appending* the prefix to the value of ``CMAKE_INSTALL_<dir>``
+  if it is not user-specified as an absolute path.
+  For example, the ``SYSCONFDIR`` value ``etc`` becomes ``/etc/opt/...``.
+  This is defined by the `Filesystem Hierarchy Standard`_.
+
+.. _`Filesystem Hierarchy Standard`: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
+
+Macros
+^^^^^^
+
+.. command:: GNUInstallDirs_get_absolute_install_dir
+
+  ::
+
+    GNUInstallDirs_get_absolute_install_dir(absvar var dirname)
+
+  .. versionadded:: 3.7
+
+  Set the given variable ``absvar`` to the absolute path contained
+  within the variable ``var``.  This is to allow the computation of an
+  absolute path, accounting for all the special cases documented
+  above.  While this macro is used to compute the various
+  ``CMAKE_INSTALL_FULL_<dir>`` variables, it is exposed publicly to
+  allow users who create additional path variables to also compute
+  absolute paths where necessary, using the same logic.  ``dirname`` is
+  the directory name to get, e.g. ``BINDIR``.
+
+  .. versionchanged:: 3.20
+    Added the ``<dirname>`` parameter.  Previous versions of CMake passed
+    this value through the variable ``${dir}``.
+#]=======================================================================]
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced
+
+# Convert a cache variable to PATH type
+
+macro(_GNUInstallDirs_cache_convert_to_path var description)
+  get_property(_GNUInstallDirs_cache_type CACHE ${var} PROPERTY TYPE)
+  if(_GNUInstallDirs_cache_type STREQUAL "UNINITIALIZED")
+    file(TO_CMAKE_PATH "${${var}}" _GNUInstallDirs_cmakepath)
+    set_property(CACHE ${var} PROPERTY TYPE PATH)
+    set_property(CACHE ${var} PROPERTY VALUE "${_GNUInstallDirs_cmakepath}")
+    set_property(CACHE ${var} PROPERTY HELPSTRING "${description}")
+    unset(_GNUInstallDirs_cmakepath)
+  endif()
+  unset(_GNUInstallDirs_cache_type)
+endmacro()
+
+# Create a cache variable with default for a path.
+macro(_GNUInstallDirs_cache_path var default description)
+  if(NOT DEFINED ${var})
+    set(${var} "${default}" CACHE PATH "${description}")
+  endif()
+  _GNUInstallDirs_cache_convert_to_path("${var}" "${description}")
+endmacro()
+
+# Create a cache variable with not default for a path, with a fallback
+# when unset; used for entries slaved to other entries such as
+# DATAROOTDIR.
+macro(_GNUInstallDirs_cache_path_fallback var default description)
+  if(NOT ${var})
+    set(${var} "" CACHE PATH "${description}")
+    set(${var} "${default}")
+  endif()
+  _GNUInstallDirs_cache_convert_to_path("${var}" "${description}")
+endmacro()
+
+# Installation directories
+#
+
+_GNUInstallDirs_cache_path(CMAKE_INSTALL_BINDIR "bin"
+  "User executables (bin)")
+_GNUInstallDirs_cache_path(CMAKE_INSTALL_SBINDIR "sbin"
+  "System admin executables (sbin)")
+_GNUInstallDirs_cache_path(CMAKE_INSTALL_LIBEXECDIR "libexec"
+  "Program executables (libexec)")
+_GNUInstallDirs_cache_path(CMAKE_INSTALL_SYSCONFDIR "etc"
+  "Read-only single-machine data (etc)")
+_GNUInstallDirs_cache_path(CMAKE_INSTALL_SHAREDSTATEDIR "com"
+  "Modifiable architecture-independent data (com)")
+_GNUInstallDirs_cache_path(CMAKE_INSTALL_LOCALSTATEDIR "var"
+  "Modifiable single-machine data (var)")
+
+# We check if the variable was manually set and not cached, in order to
+# allow projects to set the values as normal variables before including
+# GNUInstallDirs to avoid having the entries cached or user-editable. It
+# replaces the "if(NOT DEFINED CMAKE_INSTALL_XXX)" checks in all the
+# other cases.
+# If CMAKE_INSTALL_LIBDIR is defined, if _libdir_set is false, then the
+# variable is a normal one, otherwise it is a cache one.
+get_property(_libdir_set CACHE CMAKE_INSTALL_LIBDIR PROPERTY TYPE SET)
+if(NOT DEFINED CMAKE_INSTALL_LIBDIR OR (_libdir_set
+    AND DEFINED _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX
+    AND NOT "${_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX}" STREQUAL "${CMAKE_INSTALL_PREFIX}"))
+  # If CMAKE_INSTALL_LIBDIR is not defined, it is always executed.
+  # Otherwise:
+  #  * if _libdir_set is false it is not executed (meaning that it is
+  #    not a cache variable)
+  #  * if _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX is not defined it is
+  #    not executed
+  #  * if _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX and
+  #    CMAKE_INSTALL_PREFIX are the same string it is not executed.
+  #    _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX is updated after the
+  #    execution, of this part of code, therefore at the next inclusion
+  #    of the file, CMAKE_INSTALL_LIBDIR is defined, and the 2 strings
+  #    are equal, meaning that the if is not executed the code the
+  #    second time.
+
+  set(_LIBDIR_DEFAULT "lib")
+  # Override this default 'lib' with 'lib64' iff:
+  #  - we are on Linux system but NOT cross-compiling
+  #  - we are NOT on debian
+  #  - we are NOT building for conda
+  #  - we are on a 64 bits system
+  # reason is: amd64 ABI: https://github.com/hjl-tools/x86-psABI/wiki/X86-psABI
+  # For Debian with multiarch, use 'lib/${CMAKE_LIBRARY_ARCHITECTURE}' if
+  # CMAKE_LIBRARY_ARCHITECTURE is set (which contains e.g. "i386-linux-gnu"
+  # and CMAKE_INSTALL_PREFIX is "/usr"
+  # See http://wiki.debian.org/Multiarch
+  if(DEFINED _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX)
+    set(__LAST_LIBDIR_DEFAULT "lib")
+    # __LAST_LIBDIR_DEFAULT is the default value that we compute from
+    # _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX, not a cache entry for
+    # the value that was last used as the default.
+    # This value is used to figure out whether the user changed the
+    # CMAKE_INSTALL_LIBDIR value manually, or if the value was the
+    # default one. When CMAKE_INSTALL_PREFIX changes, the value is
+    # updated to the new default, unless the user explicitly changed it.
+  endif()
+  if (NOT DEFINED CMAKE_SYSTEM_NAME OR NOT DEFINED CMAKE_SIZEOF_VOID_P)
+    message(AUTHOR_WARNING
+      "Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. "
+      "Please enable at least one language before including GNUInstallDirs.")
+  endif()
+
+  if(CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU)$"
+      AND NOT CMAKE_CROSSCOMPILING)
+    unset(__system_type_for_install)
+    if(DEFINED ENV{CONDA_BUILD} AND DEFINED ENV{PREFIX})
+      set(conda_prefix "$ENV{PREFIX}")
+      cmake_path(ABSOLUTE_PATH conda_prefix NORMALIZE)
+      if("${CMAKE_INSTALL_PREFIX}" STREQUAL conda_prefix)
+        set(__system_type_for_install "conda")
+      endif()
+    elseif(DEFINED ENV{CONDA_PREFIX})
+      set(conda_prefix "$ENV{CONDA_PREFIX}")
+      cmake_path(ABSOLUTE_PATH conda_prefix NORMALIZE)
+      if("${CMAKE_INSTALL_PREFIX}" STREQUAL conda_prefix AND
+         NOT ("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$" OR
+              "${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/local/?$"))
+        set(__system_type_for_install "conda")
+      endif()
+    endif()
+    if(NOT __system_type_for_install)
+      if (EXISTS "/etc/alpine-release")
+        set(__system_type_for_install "alpine")
+      elseif (EXISTS "/etc/arch-release")
+        set(__system_type_for_install "arch linux")
+      elseif (EXISTS "/etc/debian_version")
+        set(__system_type_for_install "debian")
+      endif()
+    endif()
+
+    if(__system_type_for_install STREQUAL "debian")
+      if(CMAKE_LIBRARY_ARCHITECTURE)
+        if("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$")
+          set(_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
+        endif()
+        if(DEFINED _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX
+            AND "${_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$")
+          set(__LAST_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
+        endif()
+      endif()
+    elseif(NOT DEFINED __system_type_for_install)
+      # not debian, alpine, arch, or conda so rely on CMAKE_SIZEOF_VOID_P:
+      if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+        set(_LIBDIR_DEFAULT "lib64")
+        if(DEFINED _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX)
+          set(__LAST_LIBDIR_DEFAULT "lib64")
+        endif()
+      endif()
+    endif()
+  endif()
+  unset(__system_type_for_install)
+
+  if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
+    set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "Object code libraries (${_LIBDIR_DEFAULT})")
+  elseif(DEFINED __LAST_LIBDIR_DEFAULT
+      AND "${__LAST_LIBDIR_DEFAULT}" STREQUAL "${CMAKE_INSTALL_LIBDIR}")
+    set_property(CACHE CMAKE_INSTALL_LIBDIR PROPERTY VALUE "${_LIBDIR_DEFAULT}")
+  endif()
+endif()
+_GNUInstallDirs_cache_convert_to_path(CMAKE_INSTALL_LIBDIR "Object code libraries (lib)")
+
+# Save for next run
+set(_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE INTERNAL "CMAKE_INSTALL_PREFIX during last run")
+unset(_libdir_set)
+unset(__LAST_LIBDIR_DEFAULT)
+
+_GNUInstallDirs_cache_path(CMAKE_INSTALL_INCLUDEDIR "include"
+  "C header files (include)")
+_GNUInstallDirs_cache_path(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include"
+  "C header files for non-gcc (/usr/include)")
+_GNUInstallDirs_cache_path(CMAKE_INSTALL_DATAROOTDIR "share"
+  "Read-only architecture-independent data root (share)")
+
+#-----------------------------------------------------------------------------
+# Values whose defaults are relative to DATAROOTDIR.  Store empty values in
+# the cache and store the defaults in local variables if the cache values are
+# not set explicitly.  This auto-updates the defaults as DATAROOTDIR changes.
+
+_GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}"
+  "Read-only architecture-independent data (DATAROOTDIR)")
+
+if(CMAKE_SYSTEM_NAME MATCHES "^(([^kF].*)?BSD|DragonFly)$")
+  _GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_INFODIR "info"
+    "Info documentation (info)")
+else()
+  _GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info"
+    "Info documentation (DATAROOTDIR/info)")
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "^(([^k].*)?BSD|DragonFly)$")
+  _GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_MANDIR "man"
+    "Man documentation (man)")
+else()
+  _GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man"
+    "Man documentation (DATAROOTDIR/man)")
+endif()
+
+_GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale"
+  "Locale-dependent data (DATAROOTDIR/locale)")
+_GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}"
+  "Documentation root (DATAROOTDIR/doc/PROJECT_NAME)")
+
+_GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_RUNSTATEDIR "${CMAKE_INSTALL_LOCALSTATEDIR}/run"
+  "Run-time variable data (LOCALSTATEDIR/run)")
+
+#-----------------------------------------------------------------------------
+
+mark_as_advanced(
+  CMAKE_INSTALL_BINDIR
+  CMAKE_INSTALL_SBINDIR
+  CMAKE_INSTALL_LIBEXECDIR
+  CMAKE_INSTALL_SYSCONFDIR
+  CMAKE_INSTALL_SHAREDSTATEDIR
+  CMAKE_INSTALL_LOCALSTATEDIR
+  CMAKE_INSTALL_RUNSTATEDIR
+  CMAKE_INSTALL_LIBDIR
+  CMAKE_INSTALL_INCLUDEDIR
+  CMAKE_INSTALL_OLDINCLUDEDIR
+  CMAKE_INSTALL_DATAROOTDIR
+  CMAKE_INSTALL_DATADIR
+  CMAKE_INSTALL_INFODIR
+  CMAKE_INSTALL_LOCALEDIR
+  CMAKE_INSTALL_MANDIR
+  CMAKE_INSTALL_DOCDIR
+  )
+
+macro(GNUInstallDirs_get_absolute_install_dir absvar var)
+  set(GGAID_extra_args ${ARGN})
+  list(LENGTH GGAID_extra_args GGAID_extra_arg_count)
+  if(GGAID_extra_arg_count GREATER "0")
+    list(GET GGAID_extra_args 0 GGAID_dir)
+  else()
+    # Historical behavior: use ${dir} from caller's scope
+    set(GGAID_dir "${dir}")
+    message(AUTHOR_WARNING
+      "GNUInstallDirs_get_absolute_install_dir called without third argument. "
+      "Using \${dir} from the caller's scope for compatibility with CMake 3.19 and below.")
+  endif()
+
+  if(NOT IS_ABSOLUTE "${${var}}")
+    # Handle special cases:
+    # - CMAKE_INSTALL_PREFIX == /
+    # - CMAKE_INSTALL_PREFIX == /usr
+    # - CMAKE_INSTALL_PREFIX == /opt/...
+    if("${CMAKE_INSTALL_PREFIX}" STREQUAL "/")
+      if("${GGAID_dir}" STREQUAL "SYSCONFDIR" OR "${GGAID_dir}" STREQUAL "LOCALSTATEDIR" OR "${GGAID_dir}" STREQUAL "RUNSTATEDIR")
+        set(${absvar} "/${${var}}")
+      else()
+        if (NOT "${${var}}" MATCHES "^usr/")
+          set(${var} "usr/${${var}}")
+        endif()
+        set(${absvar} "/${${var}}")
+      endif()
+    elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$")
+      if("${GGAID_dir}" STREQUAL "SYSCONFDIR" OR "${GGAID_dir}" STREQUAL "LOCALSTATEDIR" OR "${GGAID_dir}" STREQUAL "RUNSTATEDIR")
+        set(${absvar} "/${${var}}")
+      else()
+        set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
+      endif()
+    elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/opt/.*")
+      if("${GGAID_dir}" STREQUAL "SYSCONFDIR" OR "${GGAID_dir}" STREQUAL "LOCALSTATEDIR" OR "${GGAID_dir}" STREQUAL "RUNSTATEDIR")
+        set(${absvar} "/${${var}}${CMAKE_INSTALL_PREFIX}")
+      else()
+        set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
+      endif()
+    else()
+      set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
+    endif()
+  else()
+    set(${absvar} "${${var}}")
+  endif()
+
+  unset(GGAID_dir)
+  unset(GGAID_extra_arg_count)
+  unset(GGAID_extra_args)
+endmacro()
+
+# Result directories
+#
+foreach(dir
+    BINDIR
+    SBINDIR
+    LIBEXECDIR
+    SYSCONFDIR
+    SHAREDSTATEDIR
+    LOCALSTATEDIR
+    RUNSTATEDIR
+    LIBDIR
+    INCLUDEDIR
+    OLDINCLUDEDIR
+    DATAROOTDIR
+    DATADIR
+    INFODIR
+    LOCALEDIR
+    MANDIR
+    DOCDIR
+    )
+  GNUInstallDirs_get_absolute_install_dir(CMAKE_INSTALL_FULL_${dir} CMAKE_INSTALL_${dir} ${dir})
+endforeach()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/GenerateExportHeader.cmake b/share/cmake-3.22/Modules/GenerateExportHeader.cmake
new file mode 100644
index 0000000..a9a9c59
--- /dev/null
+++ b/share/cmake-3.22/Modules/GenerateExportHeader.cmake
@@ -0,0 +1,455 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+GenerateExportHeader
+--------------------
+
+Function for generation of export macros for libraries
+
+This module provides the function ``GENERATE_EXPORT_HEADER()``.
+
+.. versionadded:: 3.12
+  Added support for C projects.  Previous versions supported C++ project only.
+
+The ``GENERATE_EXPORT_HEADER`` function can be used to generate a file
+suitable for preprocessor inclusion which contains EXPORT macros to be
+used in library classes::
+
+   GENERATE_EXPORT_HEADER( LIBRARY_TARGET
+             [BASE_NAME <base_name>]
+             [EXPORT_MACRO_NAME <export_macro_name>]
+             [EXPORT_FILE_NAME <export_file_name>]
+             [DEPRECATED_MACRO_NAME <deprecated_macro_name>]
+             [NO_EXPORT_MACRO_NAME <no_export_macro_name>]
+             [INCLUDE_GUARD_NAME <include_guard_name>]
+             [STATIC_DEFINE <static_define>]
+             [NO_DEPRECATED_MACRO_NAME <no_deprecated_macro_name>]
+             [DEFINE_NO_DEPRECATED]
+             [PREFIX_NAME <prefix_name>]
+             [CUSTOM_CONTENT_FROM_VARIABLE <variable>]
+   )
+
+The target properties :prop_tgt:`CXX_VISIBILITY_PRESET <<LANG>_VISIBILITY_PRESET>`
+and :prop_tgt:`VISIBILITY_INLINES_HIDDEN` can be used to add the appropriate
+compile flags for targets.  See the documentation of those target properties,
+and the convenience variables
+:variable:`CMAKE_CXX_VISIBILITY_PRESET <CMAKE_<LANG>_VISIBILITY_PRESET>` and
+:variable:`CMAKE_VISIBILITY_INLINES_HIDDEN`.
+
+By default ``GENERATE_EXPORT_HEADER()`` generates macro names in a file
+name determined by the name of the library.  This means that in the
+simplest case, users of ``GenerateExportHeader`` will be equivalent to:
+
+.. code-block:: cmake
+
+   set(CMAKE_CXX_VISIBILITY_PRESET hidden)
+   set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
+   add_library(somelib someclass.cpp)
+   generate_export_header(somelib)
+   install(TARGETS somelib DESTINATION ${LIBRARY_INSTALL_DIR})
+   install(FILES
+    someclass.h
+    ${PROJECT_BINARY_DIR}/somelib_export.h DESTINATION ${INCLUDE_INSTALL_DIR}
+   )
+
+
+And in the ABI header files:
+
+.. code-block:: c++
+
+   #include "somelib_export.h"
+   class SOMELIB_EXPORT SomeClass {
+     ...
+   };
+
+
+The CMake fragment will generate a file in the
+``${CMAKE_CURRENT_BINARY_DIR}`` called ``somelib_export.h`` containing the
+macros ``SOMELIB_EXPORT``, ``SOMELIB_NO_EXPORT``, ``SOMELIB_DEPRECATED``,
+``SOMELIB_DEPRECATED_EXPORT`` and ``SOMELIB_DEPRECATED_NO_EXPORT``.
+They will be followed by content taken from the variable specified by
+the ``CUSTOM_CONTENT_FROM_VARIABLE`` option, if any.
+The resulting file should be installed with other headers in the library.
+
+The ``BASE_NAME`` argument can be used to override the file name and the
+names used for the macros:
+
+.. code-block:: cmake
+
+   add_library(somelib someclass.cpp)
+   generate_export_header(somelib
+     BASE_NAME other_name
+   )
+
+
+Generates a file called ``other_name_export.h`` containing the macros
+``OTHER_NAME_EXPORT``, ``OTHER_NAME_NO_EXPORT`` and ``OTHER_NAME_DEPRECATED``
+etc.
+
+The ``BASE_NAME`` may be overridden by specifying other options in the
+function.  For example:
+
+.. code-block:: cmake
+
+   add_library(somelib someclass.cpp)
+   generate_export_header(somelib
+     EXPORT_MACRO_NAME OTHER_NAME_EXPORT
+   )
+
+
+creates the macro ``OTHER_NAME_EXPORT`` instead of ``SOMELIB_EXPORT``, but
+other macros and the generated file name is as default:
+
+.. code-block:: cmake
+
+   add_library(somelib someclass.cpp)
+   generate_export_header(somelib
+     DEPRECATED_MACRO_NAME KDE_DEPRECATED
+   )
+
+
+creates the macro ``KDE_DEPRECATED`` instead of ``SOMELIB_DEPRECATED``.
+
+If ``LIBRARY_TARGET`` is a static library, macros are defined without
+values.
+
+If the same sources are used to create both a shared and a static
+library, the uppercased symbol ``${BASE_NAME}_STATIC_DEFINE`` should be
+used when building the static library:
+
+.. code-block:: cmake
+
+   add_library(shared_variant SHARED ${lib_SRCS})
+   add_library(static_variant ${lib_SRCS})
+   generate_export_header(shared_variant BASE_NAME libshared_and_static)
+   set_target_properties(static_variant PROPERTIES
+     COMPILE_FLAGS -DLIBSHARED_AND_STATIC_STATIC_DEFINE)
+
+This will cause the export macros to expand to nothing when building
+the static library.
+
+If ``DEFINE_NO_DEPRECATED`` is specified, then a macro
+``${BASE_NAME}_NO_DEPRECATED`` will be defined This macro can be used to
+remove deprecated code from preprocessor output:
+
+.. code-block:: cmake
+
+   option(EXCLUDE_DEPRECATED "Exclude deprecated parts of the library" FALSE)
+   if (EXCLUDE_DEPRECATED)
+     set(NO_BUILD_DEPRECATED DEFINE_NO_DEPRECATED)
+   endif()
+   generate_export_header(somelib ${NO_BUILD_DEPRECATED})
+
+
+And then in somelib:
+
+.. code-block:: c++
+
+   class SOMELIB_EXPORT SomeClass
+   {
+   public:
+   #ifndef SOMELIB_NO_DEPRECATED
+     SOMELIB_DEPRECATED void oldMethod();
+   #endif
+   };
+
+.. code-block:: c++
+
+   #ifndef SOMELIB_NO_DEPRECATED
+   void SomeClass::oldMethod() {  }
+   #endif
+
+
+If ``PREFIX_NAME`` is specified, the argument will be used as a prefix to
+all generated macros.
+
+For example:
+
+.. code-block:: cmake
+
+   generate_export_header(somelib PREFIX_NAME VTK_)
+
+Generates the macros ``VTK_SOMELIB_EXPORT`` etc.
+
+.. versionadded:: 3.1
+  Library target can be an ``OBJECT`` library.
+
+.. versionadded:: 3.7
+  Added the ``CUSTOM_CONTENT_FROM_VARIABLE`` option.
+
+.. versionadded:: 3.11
+  Added the ``INCLUDE_GUARD_NAME`` option.
+
+::
+
+   ADD_COMPILER_EXPORT_FLAGS( [<output_variable>] )
+
+.. deprecated:: 3.0
+  Set the target properties
+  :prop_tgt:`CXX_VISIBILITY_PRESET <<LANG>_VISIBILITY_PRESET>` and
+  :prop_tgt:`VISIBILITY_INLINES_HIDDEN` instead.
+
+The ``ADD_COMPILER_EXPORT_FLAGS`` function adds ``-fvisibility=hidden`` to
+:variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>` if supported, and is a no-op
+on Windows which does not need extra compiler flags for exporting support.
+You may optionally pass a single argument to ``ADD_COMPILER_EXPORT_FLAGS``
+that will be populated with the ``CXX_FLAGS`` required to enable visibility
+support for the compiler/architecture in use.
+#]=======================================================================]
+
+include(CheckCCompilerFlag)
+include(CheckCXXCompilerFlag)
+
+# TODO: Install this macro separately?
+macro(_check_cxx_compiler_attribute _ATTRIBUTE _RESULT)
+  check_cxx_source_compiles("${_ATTRIBUTE} int somefunc() { return 0; }
+    int main() { return somefunc();}" ${_RESULT}
+  )
+endmacro()
+
+# TODO: Install this macro separately?
+macro(_check_c_compiler_attribute _ATTRIBUTE _RESULT)
+  check_c_source_compiles("${_ATTRIBUTE} int somefunc() { return 0; }
+    int main() { return somefunc();}" ${_RESULT}
+  )
+endmacro()
+
+macro(_test_compiler_hidden_visibility)
+
+  if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.2")
+    set(GCC_TOO_OLD TRUE)
+  elseif(CMAKE_COMPILER_IS_GNUCC AND CMAKE_C_COMPILER_VERSION VERSION_LESS "4.2")
+    set(GCC_TOO_OLD TRUE)
+  elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "12.0")
+    set(_INTEL_TOO_OLD TRUE)
+  endif()
+
+  # Exclude XL here because it misinterprets -fvisibility=hidden even though
+  # the check_cxx_compiler_flag passes
+  if(NOT GCC_TOO_OLD
+      AND NOT _INTEL_TOO_OLD
+      AND NOT WIN32
+      AND NOT CYGWIN
+      AND NOT CMAKE_CXX_COMPILER_ID MATCHES XL
+      AND NOT CMAKE_CXX_COMPILER_ID MATCHES "^(PGI|NVHPC)$"
+      AND NOT CMAKE_CXX_COMPILER_ID MATCHES Watcom)
+    if (CMAKE_CXX_COMPILER_LOADED)
+      check_cxx_compiler_flag(-fvisibility=hidden COMPILER_HAS_HIDDEN_VISIBILITY)
+      check_cxx_compiler_flag(-fvisibility-inlines-hidden
+        COMPILER_HAS_HIDDEN_INLINE_VISIBILITY)
+    else()
+      check_c_compiler_flag(-fvisibility=hidden COMPILER_HAS_HIDDEN_VISIBILITY)
+      check_c_compiler_flag(-fvisibility-inlines-hidden
+        COMPILER_HAS_HIDDEN_INLINE_VISIBILITY)
+    endif()
+  endif()
+endmacro()
+
+macro(_test_compiler_has_deprecated)
+  # NOTE:  Some Embarcadero compilers silently compile __declspec(deprecated)
+  # without error, but this is not a documented feature and the attribute does
+  # not actually generate any warnings.
+  if(CMAKE_CXX_COMPILER_ID MATCHES Borland
+      OR CMAKE_CXX_COMPILER_ID MATCHES Embarcadero
+      OR CMAKE_CXX_COMPILER_ID MATCHES HP
+      OR GCC_TOO_OLD
+      OR CMAKE_CXX_COMPILER_ID MATCHES "^(PGI|NVHPC)$"
+      OR CMAKE_CXX_COMPILER_ID MATCHES Watcom)
+    set(COMPILER_HAS_DEPRECATED "" CACHE INTERNAL
+      "Compiler support for a deprecated attribute")
+  else()
+    if (CMAKE_CXX_COMPILER_LOADED)
+      _check_cxx_compiler_attribute("__attribute__((__deprecated__))"
+        COMPILER_HAS_DEPRECATED_ATTR)
+      if(COMPILER_HAS_DEPRECATED_ATTR)
+        set(COMPILER_HAS_DEPRECATED "${COMPILER_HAS_DEPRECATED_ATTR}"
+          CACHE INTERNAL "Compiler support for a deprecated attribute")
+      else()
+        _check_cxx_compiler_attribute("__declspec(deprecated)"
+          COMPILER_HAS_DEPRECATED)
+      endif()
+    else()
+      _check_c_compiler_attribute("__attribute__((__deprecated__))"
+        COMPILER_HAS_DEPRECATED_ATTR)
+      if(COMPILER_HAS_DEPRECATED_ATTR)
+        set(COMPILER_HAS_DEPRECATED "${COMPILER_HAS_DEPRECATED_ATTR}"
+          CACHE INTERNAL "Compiler support for a deprecated attribute")
+      else()
+        _check_c_compiler_attribute("__declspec(deprecated)"
+          COMPILER_HAS_DEPRECATED)
+      endif()
+
+    endif()
+  endif()
+endmacro()
+
+get_filename_component(_GENERATE_EXPORT_HEADER_MODULE_DIR
+  "${CMAKE_CURRENT_LIST_FILE}" PATH)
+
+macro(_DO_SET_MACRO_VALUES TARGET_LIBRARY)
+  set(DEFINE_DEPRECATED)
+  set(DEFINE_EXPORT)
+  set(DEFINE_IMPORT)
+  set(DEFINE_NO_EXPORT)
+
+  if (COMPILER_HAS_DEPRECATED_ATTR)
+    set(DEFINE_DEPRECATED "__attribute__ ((__deprecated__))")
+  elseif(COMPILER_HAS_DEPRECATED)
+    set(DEFINE_DEPRECATED "__declspec(deprecated)")
+  endif()
+
+  get_property(type TARGET ${TARGET_LIBRARY} PROPERTY TYPE)
+
+  if(NOT ${type} STREQUAL "STATIC_LIBRARY")
+    if(WIN32 OR CYGWIN)
+      set(DEFINE_EXPORT "__declspec(dllexport)")
+      set(DEFINE_IMPORT "__declspec(dllimport)")
+    elseif(COMPILER_HAS_HIDDEN_VISIBILITY)
+      set(DEFINE_EXPORT "__attribute__((visibility(\"default\")))")
+      set(DEFINE_IMPORT "__attribute__((visibility(\"default\")))")
+      set(DEFINE_NO_EXPORT "__attribute__((visibility(\"hidden\")))")
+    endif()
+  endif()
+endmacro()
+
+macro(_DO_GENERATE_EXPORT_HEADER TARGET_LIBRARY)
+  # Option overrides
+  set(options DEFINE_NO_DEPRECATED)
+  set(oneValueArgs PREFIX_NAME BASE_NAME EXPORT_MACRO_NAME EXPORT_FILE_NAME
+    DEPRECATED_MACRO_NAME NO_EXPORT_MACRO_NAME STATIC_DEFINE
+    NO_DEPRECATED_MACRO_NAME CUSTOM_CONTENT_FROM_VARIABLE INCLUDE_GUARD_NAME)
+  set(multiValueArgs)
+
+  cmake_parse_arguments(_GEH "${options}" "${oneValueArgs}" "${multiValueArgs}"
+    ${ARGN})
+
+  set(BASE_NAME "${TARGET_LIBRARY}")
+
+  if(_GEH_BASE_NAME)
+    set(BASE_NAME ${_GEH_BASE_NAME})
+  endif()
+
+  string(TOUPPER ${BASE_NAME} BASE_NAME_UPPER)
+  string(TOLOWER ${BASE_NAME} BASE_NAME_LOWER)
+
+  # Default options
+  set(EXPORT_MACRO_NAME "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_EXPORT")
+  set(NO_EXPORT_MACRO_NAME "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_NO_EXPORT")
+  set(EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${BASE_NAME_LOWER}_export.h")
+  set(DEPRECATED_MACRO_NAME "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_DEPRECATED")
+  set(STATIC_DEFINE "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_STATIC_DEFINE")
+  set(NO_DEPRECATED_MACRO_NAME
+    "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_NO_DEPRECATED")
+
+  if(_GEH_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unknown keywords given to GENERATE_EXPORT_HEADER(): \"${_GEH_UNPARSED_ARGUMENTS}\"")
+  endif()
+
+  if(_GEH_EXPORT_MACRO_NAME)
+    set(EXPORT_MACRO_NAME ${_GEH_PREFIX_NAME}${_GEH_EXPORT_MACRO_NAME})
+  endif()
+  string(MAKE_C_IDENTIFIER ${EXPORT_MACRO_NAME} EXPORT_MACRO_NAME)
+  if(_GEH_EXPORT_FILE_NAME)
+    if(IS_ABSOLUTE ${_GEH_EXPORT_FILE_NAME})
+      set(EXPORT_FILE_NAME ${_GEH_EXPORT_FILE_NAME})
+    else()
+      set(EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${_GEH_EXPORT_FILE_NAME}")
+    endif()
+  endif()
+  if(_GEH_DEPRECATED_MACRO_NAME)
+    set(DEPRECATED_MACRO_NAME ${_GEH_PREFIX_NAME}${_GEH_DEPRECATED_MACRO_NAME})
+  endif()
+  string(MAKE_C_IDENTIFIER ${DEPRECATED_MACRO_NAME} DEPRECATED_MACRO_NAME)
+  if(_GEH_NO_EXPORT_MACRO_NAME)
+    set(NO_EXPORT_MACRO_NAME ${_GEH_PREFIX_NAME}${_GEH_NO_EXPORT_MACRO_NAME})
+  endif()
+  string(MAKE_C_IDENTIFIER ${NO_EXPORT_MACRO_NAME} NO_EXPORT_MACRO_NAME)
+  if(_GEH_STATIC_DEFINE)
+    set(STATIC_DEFINE ${_GEH_PREFIX_NAME}${_GEH_STATIC_DEFINE})
+  endif()
+  string(MAKE_C_IDENTIFIER ${STATIC_DEFINE} STATIC_DEFINE)
+
+  if(_GEH_DEFINE_NO_DEPRECATED)
+    set(DEFINE_NO_DEPRECATED 1)
+  else()
+    set(DEFINE_NO_DEPRECATED 0)
+  endif()
+
+  if(_GEH_NO_DEPRECATED_MACRO_NAME)
+    set(NO_DEPRECATED_MACRO_NAME
+      ${_GEH_PREFIX_NAME}${_GEH_NO_DEPRECATED_MACRO_NAME})
+  endif()
+  string(MAKE_C_IDENTIFIER ${NO_DEPRECATED_MACRO_NAME} NO_DEPRECATED_MACRO_NAME)
+
+  if(_GEH_INCLUDE_GUARD_NAME)
+    set(INCLUDE_GUARD_NAME ${_GEH_INCLUDE_GUARD_NAME})
+  else()
+    set(INCLUDE_GUARD_NAME "${EXPORT_MACRO_NAME}_H")
+  endif()
+
+  get_target_property(EXPORT_IMPORT_CONDITION ${TARGET_LIBRARY} DEFINE_SYMBOL)
+
+  if(NOT EXPORT_IMPORT_CONDITION)
+    set(EXPORT_IMPORT_CONDITION ${TARGET_LIBRARY}_EXPORTS)
+  endif()
+  string(MAKE_C_IDENTIFIER ${EXPORT_IMPORT_CONDITION} EXPORT_IMPORT_CONDITION)
+
+  if(_GEH_CUSTOM_CONTENT_FROM_VARIABLE)
+    if(DEFINED "${_GEH_CUSTOM_CONTENT_FROM_VARIABLE}")
+      set(CUSTOM_CONTENT "${${_GEH_CUSTOM_CONTENT_FROM_VARIABLE}}")
+    else()
+      set(CUSTOM_CONTENT "")
+    endif()
+  endif()
+
+  configure_file("${_GENERATE_EXPORT_HEADER_MODULE_DIR}/exportheader.cmake.in"
+    "${EXPORT_FILE_NAME}" @ONLY)
+endmacro()
+
+function(GENERATE_EXPORT_HEADER TARGET_LIBRARY)
+  get_property(type TARGET ${TARGET_LIBRARY} PROPERTY TYPE)
+  if(NOT ${type} STREQUAL "STATIC_LIBRARY"
+      AND NOT ${type} STREQUAL "SHARED_LIBRARY"
+      AND NOT ${type} STREQUAL "OBJECT_LIBRARY"
+      AND NOT ${type} STREQUAL "MODULE_LIBRARY")
+    message(WARNING "This macro can only be used with libraries")
+    return()
+  endif()
+  _test_compiler_hidden_visibility()
+  _test_compiler_has_deprecated()
+  _do_set_macro_values(${TARGET_LIBRARY})
+  _do_generate_export_header(${TARGET_LIBRARY} ${ARGN})
+endfunction()
+
+function(add_compiler_export_flags)
+  if(NOT CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12)
+    message(DEPRECATION "The add_compiler_export_flags function is obsolete. Use the CXX_VISIBILITY_PRESET and VISIBILITY_INLINES_HIDDEN target properties instead.")
+  endif()
+
+  _test_compiler_hidden_visibility()
+  _test_compiler_has_deprecated()
+
+  option(USE_COMPILER_HIDDEN_VISIBILITY
+    "Use HIDDEN visibility support if available." ON)
+  mark_as_advanced(USE_COMPILER_HIDDEN_VISIBILITY)
+  if(NOT (USE_COMPILER_HIDDEN_VISIBILITY AND COMPILER_HAS_HIDDEN_VISIBILITY))
+    # Just return if there are no flags to add.
+    return()
+  endif()
+
+  set (EXTRA_FLAGS "-fvisibility=hidden")
+
+  if(COMPILER_HAS_HIDDEN_INLINE_VISIBILITY)
+    set (EXTRA_FLAGS "${EXTRA_FLAGS} -fvisibility-inlines-hidden")
+  endif()
+
+  # Either return the extra flags needed in the supplied argument, or to the
+  # CMAKE_CXX_FLAGS if no argument is supplied.
+  if(ARGC GREATER 0)
+    set(${ARGV0} "${EXTRA_FLAGS}" PARENT_SCOPE)
+  else()
+    string(APPEND CMAKE_CXX_FLAGS " ${EXTRA_FLAGS}")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" PARENT_SCOPE)
+  endif()
+endfunction()
diff --git a/share/cmake-3.22/Modules/GetPrerequisites.cmake b/share/cmake-3.22/Modules/GetPrerequisites.cmake
new file mode 100644
index 0000000..53584c6
--- /dev/null
+++ b/share/cmake-3.22/Modules/GetPrerequisites.cmake
@@ -0,0 +1,1048 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+GetPrerequisites
+----------------
+
+.. deprecated:: 3.16
+
+  Use :command:`file(GET_RUNTIME_DEPENDENCIES)` instead.
+
+Functions to analyze and list executable file prerequisites.
+
+This module provides functions to list the .dll, .dylib or .so files
+that an executable or shared library file depends on.  (Its
+prerequisites.)
+
+It uses various tools to obtain the list of required shared library
+files:
+
+::
+
+   dumpbin (Windows)
+   objdump (MinGW on Windows)
+   ldd (Linux/Unix)
+   otool (Mac OSX)
+
+.. versionchanged:: 3.16
+  The tool specified by ``CMAKE_OBJDUMP`` will be used, if set.
+
+The following functions are provided by this module:
+
+::
+
+   get_prerequisites
+   list_prerequisites
+   list_prerequisites_by_glob
+   gp_append_unique
+   is_file_executable
+   gp_item_default_embedded_path
+     (projects can override with gp_item_default_embedded_path_override)
+   gp_resolve_item
+     (projects can override with gp_resolve_item_override)
+   gp_resolved_file_type
+     (projects can override with gp_resolved_file_type_override)
+   gp_file_type
+
+::
+
+  GET_PREREQUISITES(<target> <prerequisites_var> <exclude_system> <recurse>
+                    <exepath> <dirs> [<rpaths>])
+
+Get the list of shared library files required by <target>.  The list
+in the variable named <prerequisites_var> should be empty on first
+entry to this function.  On exit, <prerequisites_var> will contain the
+list of required shared library files.
+
+<target> is the full path to an executable file.  <prerequisites_var>
+is the name of a CMake variable to contain the results.
+<exclude_system> must be 0 or 1 indicating whether to include or
+exclude "system" prerequisites.  If <recurse> is set to 1 all
+prerequisites will be found recursively, if set to 0 only direct
+prerequisites are listed.  <exepath> is the path to the top level
+executable used for @executable_path replacement on the Mac.  <dirs> is
+a list of paths where libraries might be found: these paths are
+searched first when a target without any path info is given.  Then
+standard system locations are also searched: PATH, Framework
+locations, /usr/lib...
+
+.. versionadded:: 3.14
+  The variable GET_PREREQUISITES_VERBOSE can be set to true to enable verbose
+  output.
+
+::
+
+  LIST_PREREQUISITES(<target> [<recurse> [<exclude_system> [<verbose>]]])
+
+Print a message listing the prerequisites of <target>.
+
+<target> is the name of a shared library or executable target or the
+full path to a shared library or executable file.  If <recurse> is set
+to 1 all prerequisites will be found recursively, if set to 0 only
+direct prerequisites are listed.  <exclude_system> must be 0 or 1
+indicating whether to include or exclude "system" prerequisites.  With
+<verbose> set to 0 only the full path names of the prerequisites are
+printed, set to 1 extra information will be displayed.
+
+::
+
+  LIST_PREREQUISITES_BY_GLOB(<glob_arg> <glob_exp>)
+
+Print the prerequisites of shared library and executable files
+matching a globbing pattern.  <glob_arg> is GLOB or GLOB_RECURSE and
+<glob_exp> is a globbing expression used with "file(GLOB" or
+"file(GLOB_RECURSE" to retrieve a list of matching files.  If a
+matching file is executable, its prerequisites are listed.
+
+Any additional (optional) arguments provided are passed along as the
+optional arguments to the list_prerequisites calls.
+
+::
+
+  GP_APPEND_UNIQUE(<list_var> <value>)
+
+Append <value> to the list variable <list_var> only if the value is
+not already in the list.
+
+::
+
+  IS_FILE_EXECUTABLE(<file> <result_var>)
+
+Return 1 in <result_var> if <file> is a binary executable, 0
+otherwise.
+
+::
+
+  GP_ITEM_DEFAULT_EMBEDDED_PATH(<item> <default_embedded_path_var>)
+
+Return the path that others should refer to the item by when the item
+is embedded inside a bundle.
+
+Override on a per-project basis by providing a project-specific
+gp_item_default_embedded_path_override function.
+
+::
+
+  GP_RESOLVE_ITEM(<context> <item> <exepath> <dirs> <resolved_item_var>
+                  [<rpaths>])
+
+Resolve an item into an existing full path file.
+
+Override on a per-project basis by providing a project-specific
+gp_resolve_item_override function.
+
+::
+
+  GP_RESOLVED_FILE_TYPE(<original_file> <file> <exepath> <dirs> <type_var>
+                        [<rpaths>])
+
+Return the type of <file> with respect to <original_file>.  String
+describing type of prerequisite is returned in variable named
+<type_var>.
+
+Use <exepath> and <dirs> if necessary to resolve non-absolute <file>
+values -- but only for non-embedded items.
+
+Possible types are:
+
+::
+
+   system
+   local
+   embedded
+   other
+
+Override on a per-project basis by providing a project-specific
+gp_resolved_file_type_override function.
+
+::
+
+  GP_FILE_TYPE(<original_file> <file> <type_var>)
+
+Return the type of <file> with respect to <original_file>.  String
+describing type of prerequisite is returned in variable named
+<type_var>.
+
+Possible types are:
+
+::
+
+   system
+   local
+   embedded
+   other
+#]=======================================================================]
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+function(gp_append_unique list_var value)
+  if(NOT value IN_LIST ${list_var})
+    set(${list_var} ${${list_var}} "${value}" PARENT_SCOPE)
+  endif()
+endfunction()
+
+
+function(is_file_executable file result_var)
+  #
+  # A file is not executable until proven otherwise:
+  #
+  set(${result_var} 0 PARENT_SCOPE)
+
+  get_filename_component(file_full "${file}" ABSOLUTE)
+  string(TOLOWER "${file_full}" file_full_lower)
+
+  # If file name ends in .exe on Windows, *assume* executable:
+  #
+  if(WIN32 AND NOT UNIX)
+    if("${file_full_lower}" MATCHES "\\.exe$")
+      set(${result_var} 1 PARENT_SCOPE)
+      return()
+    endif()
+
+    # A clause could be added here that uses output or return value of dumpbin
+    # to determine ${result_var}. In 99%+? practical cases, the exe name
+    # match will be sufficient...
+    #
+  endif()
+
+  # Use the information returned from the Unix shell command "file" to
+  # determine if ${file_full} should be considered an executable file...
+  #
+  # If the file command's output contains "executable" and does *not* contain
+  # "text" then it is likely an executable suitable for prerequisite analysis
+  # via the get_prerequisites macro.
+  #
+  if(UNIX)
+    if(NOT file_cmd)
+      find_program(file_cmd "file")
+      mark_as_advanced(file_cmd)
+    endif()
+
+    if(file_cmd)
+      execute_process(COMMAND "${file_cmd}" "${file_full}"
+        RESULT_VARIABLE file_rv
+        OUTPUT_VARIABLE file_ov
+        ERROR_VARIABLE file_ev
+        OUTPUT_STRIP_TRAILING_WHITESPACE
+        )
+      if(NOT file_rv STREQUAL "0")
+        message(FATAL_ERROR "${file_cmd} failed: ${file_rv}\n${file_ev}")
+      endif()
+
+      # Replace the name of the file in the output with a placeholder token
+      # (the string " _file_full_ ") so that just in case the path name of
+      # the file contains the word "text" or "executable" we are not fooled
+      # into thinking "the wrong thing" because the file name matches the
+      # other 'file' command output we are looking for...
+      #
+      string(REPLACE "${file_full}" " _file_full_ " file_ov "${file_ov}")
+      string(TOLOWER "${file_ov}" file_ov)
+
+      #message(STATUS "file_ov='${file_ov}'")
+      if("${file_ov}" MATCHES "executable")
+        #message(STATUS "executable!")
+        if("${file_ov}" MATCHES "text")
+          #message(STATUS "but text, so *not* a binary executable!")
+        else()
+          set(${result_var} 1 PARENT_SCOPE)
+          return()
+        endif()
+      endif()
+
+      # Also detect position independent executables on Linux,
+      # where "file" gives "shared object ... (uses shared libraries)"
+      if("${file_ov}" MATCHES "shared object.*\(uses shared libs\)")
+        set(${result_var} 1 PARENT_SCOPE)
+        return()
+      endif()
+
+      # "file" version 5.22 does not print "(used shared libraries)"
+      # but uses "interpreter"
+      if("${file_ov}" MATCHES "shared object.*interpreter")
+        set(${result_var} 1 PARENT_SCOPE)
+        return()
+      endif()
+
+    else()
+      message(STATUS "warning: No 'file' command, skipping execute_process...")
+    endif()
+  endif()
+endfunction()
+
+
+function(gp_item_default_embedded_path item default_embedded_path_var)
+
+  # On Windows and Linux, "embed" prerequisites in the same directory
+  # as the executable by default:
+  #
+  set(path "@executable_path")
+
+  # On the Mac, relative to the executable depending on the type
+  # of the thing we are embedding:
+  #
+  if(APPLE)
+    #
+    # The assumption here is that all executables in the bundle will be
+    # in same-level-directories inside the bundle. The parent directory
+    # of an executable inside the bundle should be MacOS or a sibling of
+    # MacOS and all embedded paths returned from here will begin with
+    # "@executable_path/../" and will work from all executables in all
+    # such same-level-directories inside the bundle.
+    #
+
+    # By default, embed things right next to the main bundle executable:
+    #
+    set(path "@executable_path/../../Contents/MacOS")
+
+    # Embed frameworks and .dylibs in the embedded "Frameworks" directory
+    # (sibling of MacOS):
+    #
+    if(item MATCHES "[^/]+\\.framework/" OR item MATCHES "\\.dylib$")
+      set(path "@executable_path/../Frameworks")
+    endif()
+  endif()
+
+  # Provide a hook so that projects can override the default embedded location
+  # of any given library by whatever logic they choose:
+  #
+  if(COMMAND gp_item_default_embedded_path_override)
+    gp_item_default_embedded_path_override("${item}" path)
+  endif()
+
+  set(${default_embedded_path_var} "${path}" PARENT_SCOPE)
+endfunction()
+
+
+function(gp_resolve_item context item exepath dirs resolved_item_var)
+  set(resolved 0)
+  set(resolved_item "${item}")
+  if(ARGC GREATER 5)
+    set(rpaths "${ARGV5}")
+  else()
+    set(rpaths "")
+  endif()
+
+  # Is it already resolved?
+  #
+  if(IS_ABSOLUTE "${resolved_item}" AND EXISTS "${resolved_item}")
+    set(resolved 1)
+  endif()
+
+  if(NOT resolved)
+    if(item MATCHES "^@executable_path")
+      #
+      # @executable_path references are assumed relative to exepath
+      #
+      string(REPLACE "@executable_path" "${exepath}" ri "${item}")
+      get_filename_component(ri "${ri}" ABSOLUTE)
+
+      if(EXISTS "${ri}")
+        #message(STATUS "info: embedded item exists (${ri})")
+        set(resolved 1)
+        set(resolved_item "${ri}")
+      else()
+        message(STATUS "warning: embedded item does not exist '${ri}'")
+      endif()
+    endif()
+  endif()
+
+  if(NOT resolved)
+    if(item MATCHES "^@loader_path")
+      #
+      # @loader_path references are assumed relative to the
+      # PATH of the given "context" (presumably another library)
+      #
+      get_filename_component(contextpath "${context}" PATH)
+      string(REPLACE "@loader_path" "${contextpath}" ri "${item}")
+      get_filename_component(ri "${ri}" ABSOLUTE)
+
+      if(EXISTS "${ri}")
+        #message(STATUS "info: embedded item exists (${ri})")
+        set(resolved 1)
+        set(resolved_item "${ri}")
+      else()
+        message(STATUS "warning: embedded item does not exist '${ri}'")
+      endif()
+    endif()
+  endif()
+
+  if(NOT resolved)
+    if(item MATCHES "^@rpath")
+      #
+      # @rpath references are relative to the paths built into the binaries with -rpath
+      # We handle this case like we do for other Unixes
+      #
+      string(REPLACE "@rpath/" "" norpath_item "${item}")
+
+      set(ri "ri-NOTFOUND")
+      find_file(ri "${norpath_item}" ${exepath} ${dirs} ${rpaths} NO_DEFAULT_PATH)
+      if(ri)
+        #message(STATUS "info: 'find_file' in exepath/dirs/rpaths (${ri})")
+        set(resolved 1)
+        set(resolved_item "${ri}")
+        set(ri "ri-NOTFOUND")
+      endif()
+
+    endif()
+  endif()
+
+  if(NOT resolved)
+    set(ri "ri-NOTFOUND")
+    find_file(ri "${item}" ${exepath} ${dirs} NO_DEFAULT_PATH)
+    find_file(ri "${item}" ${exepath} ${dirs} /usr/lib)
+
+    get_filename_component(basename_item "${item}" NAME)
+    find_file(ri "${basename_item}" PATHS ${exepath} ${dirs} NO_DEFAULT_PATH)
+    find_file(ri "${basename_item}" PATHS /usr/lib)
+
+    if(ri)
+      #message(STATUS "info: 'find_file' in exepath/dirs (${ri})")
+      set(resolved 1)
+      set(resolved_item "${ri}")
+      set(ri "ri-NOTFOUND")
+    endif()
+  endif()
+
+  if(NOT resolved)
+    if(item MATCHES "[^/]+\\.framework/")
+      set(fw "fw-NOTFOUND")
+      find_file(fw "${item}"
+        "~/Library/Frameworks"
+        "/Library/Frameworks"
+        "/System/Library/Frameworks"
+      )
+      if(fw)
+        #message(STATUS "info: 'find_file' found framework (${fw})")
+        set(resolved 1)
+        set(resolved_item "${fw}")
+        set(fw "fw-NOTFOUND")
+      endif()
+    endif()
+  endif()
+
+  # Using find_program on Windows will find dll files that are in the PATH.
+  # (Converting simple file names into full path names if found.)
+  #
+  if(WIN32 AND NOT UNIX)
+  if(NOT resolved)
+    set(ri "ri-NOTFOUND")
+    find_program(ri "${item}" PATHS ${exepath} ${dirs} NO_DEFAULT_PATH)
+    find_program(ri "${item}" PATHS ${exepath} ${dirs})
+    if(ri)
+      #message(STATUS "info: 'find_program' in exepath/dirs (${ri})")
+      set(resolved 1)
+      set(resolved_item "${ri}")
+      set(ri "ri-NOTFOUND")
+    endif()
+  endif()
+  endif()
+
+  # Provide a hook so that projects can override item resolution
+  # by whatever logic they choose:
+  #
+  if(COMMAND gp_resolve_item_override)
+    gp_resolve_item_override("${context}" "${item}" "${exepath}" "${dirs}" resolved_item resolved)
+  endif()
+
+  if(NOT resolved)
+    message(STATUS "
+warning: cannot resolve item '${item}'
+
+  possible problems:
+    need more directories?
+    need to use InstallRequiredSystemLibraries?
+    run in install tree instead of build tree?
+")
+#    message(STATUS "
+#******************************************************************************
+#warning: cannot resolve item '${item}'
+#
+#  possible problems:
+#    need more directories?
+#    need to use InstallRequiredSystemLibraries?
+#    run in install tree instead of build tree?
+#
+#    context='${context}'
+#    item='${item}'
+#    exepath='${exepath}'
+#    dirs='${dirs}'
+#    resolved_item_var='${resolved_item_var}'
+#******************************************************************************
+#")
+  endif()
+
+  set(${resolved_item_var} "${resolved_item}" PARENT_SCOPE)
+endfunction()
+
+
+function(gp_resolved_file_type original_file file exepath dirs type_var)
+  if(ARGC GREATER 5)
+    set(rpaths "${ARGV5}")
+  else()
+    set(rpaths "")
+  endif()
+  #message(STATUS "**")
+
+  if(NOT IS_ABSOLUTE "${original_file}")
+    message(STATUS "warning: gp_resolved_file_type expects absolute full path for first arg original_file")
+  endif()
+  if(IS_ABSOLUTE "${original_file}")
+    get_filename_component(original_file "${original_file}" ABSOLUTE) # canonicalize path
+  endif()
+
+  set(is_embedded 0)
+  set(is_local 0)
+  set(is_system 0)
+
+  set(resolved_file "${file}")
+
+  if("${file}" MATCHES "^@(executable|loader)_path")
+    set(is_embedded 1)
+  endif()
+
+  if(NOT is_embedded)
+    if(NOT IS_ABSOLUTE "${file}")
+      gp_resolve_item("${original_file}" "${file}" "${exepath}" "${dirs}" resolved_file "${rpaths}")
+    endif()
+    if(IS_ABSOLUTE "${resolved_file}")
+      get_filename_component(resolved_file "${resolved_file}" ABSOLUTE) # canonicalize path
+    endif()
+
+    string(TOLOWER "${original_file}" original_lower)
+    string(TOLOWER "${resolved_file}" lower)
+
+    if(UNIX)
+      if(resolved_file MATCHES "^(/lib/|/lib32/|/libx32/|/lib64/|/usr/lib/|/usr/lib32/|/usr/libx32/|/usr/lib64/|/usr/X11R6/|/usr/bin/)")
+        set(is_system 1)
+      endif()
+    endif()
+
+    if(APPLE)
+      if(resolved_file MATCHES "^(/System/Library/|/usr/lib/)")
+        set(is_system 1)
+      endif()
+    endif()
+
+    if(WIN32)
+      string(TOLOWER "$ENV{SystemRoot}" sysroot)
+      file(TO_CMAKE_PATH "${sysroot}" sysroot)
+
+      string(TOLOWER "$ENV{windir}" windir)
+      file(TO_CMAKE_PATH "${windir}" windir)
+
+      if(lower MATCHES "^(${sysroot}/sys(tem|wow)|${windir}/sys(tem|wow)|(.*/)*(msvc|api-ms-win-|vcruntime)[^/]+dll)")
+        set(is_system 1)
+      endif()
+
+      if(UNIX)
+        # if cygwin, we can get the properly formed windows paths from cygpath
+        find_program(CYGPATH_EXECUTABLE cygpath)
+
+        if(CYGPATH_EXECUTABLE)
+          execute_process(COMMAND ${CYGPATH_EXECUTABLE} -W
+                          RESULT_VARIABLE env_rv
+                          OUTPUT_VARIABLE env_windir
+                          ERROR_VARIABLE env_ev
+                          OUTPUT_STRIP_TRAILING_WHITESPACE)
+          if(NOT env_rv STREQUAL "0")
+            message(FATAL_ERROR "${CYGPATH_EXECUTABLE} -W failed: ${env_rv}\n${env_ev}")
+          endif()
+          execute_process(COMMAND ${CYGPATH_EXECUTABLE} -S
+                          RESULT_VARIABLE env_rv
+                          OUTPUT_VARIABLE env_sysdir
+                          ERROR_VARIABLE env_ev
+                          OUTPUT_STRIP_TRAILING_WHITESPACE)
+          if(NOT env_rv STREQUAL "0")
+            message(FATAL_ERROR "${CYGPATH_EXECUTABLE} -S failed: ${env_rv}\n${env_ev}")
+          endif()
+          string(TOLOWER "${env_windir}" windir)
+          string(TOLOWER "${env_sysdir}" sysroot)
+
+          if(lower MATCHES "^(${sysroot}/sys(tem|wow)|${windir}/sys(tem|wow)|(.*/)*(msvc|api-ms-win-|vcruntime)[^/]+dll)")
+            set(is_system 1)
+          endif()
+        endif()
+      endif()
+    endif()
+
+    if(NOT is_system)
+      get_filename_component(original_path "${original_lower}" PATH)
+      get_filename_component(path "${lower}" PATH)
+      if(original_path STREQUAL path)
+        set(is_local 1)
+      else()
+        string(LENGTH "${original_path}/" original_length)
+        string(LENGTH "${lower}" path_length)
+        if(${path_length} GREATER ${original_length})
+          string(SUBSTRING "${lower}" 0 ${original_length} path)
+          if("${original_path}/" STREQUAL path)
+            set(is_embedded 1)
+          endif()
+        endif()
+      endif()
+    endif()
+  endif()
+
+  # Return type string based on computed booleans:
+  #
+  set(type "other")
+
+  if(is_system)
+    set(type "system")
+  elseif(is_embedded)
+    set(type "embedded")
+  elseif(is_local)
+    set(type "local")
+  endif()
+
+  #message(STATUS "gp_resolved_file_type: '${file}' '${resolved_file}'")
+  #message(STATUS "                type: '${type}'")
+
+  if(NOT is_embedded)
+    if(NOT IS_ABSOLUTE "${resolved_file}")
+      if(lower MATCHES "^(msvc|api-ms-win-|vcruntime)[^/]+dll" AND is_system)
+        message(STATUS "info: non-absolute msvc file '${file}' returning type '${type}'")
+      else()
+        message(STATUS "warning: gp_resolved_file_type non-absolute file '${file}' returning type '${type}' -- possibly incorrect")
+      endif()
+    endif()
+  endif()
+
+  # Provide a hook so that projects can override the decision on whether a
+  # library belongs to the system or not by whatever logic they choose:
+  #
+  if(COMMAND gp_resolved_file_type_override)
+    gp_resolved_file_type_override("${resolved_file}" type)
+  endif()
+
+  set(${type_var} "${type}" PARENT_SCOPE)
+
+  #message(STATUS "**")
+endfunction()
+
+
+function(gp_file_type original_file file type_var)
+  if(NOT IS_ABSOLUTE "${original_file}")
+    message(STATUS "warning: gp_file_type expects absolute full path for first arg original_file")
+  endif()
+
+  get_filename_component(exepath "${original_file}" PATH)
+
+  set(type "")
+  gp_resolved_file_type("${original_file}" "${file}" "${exepath}" "" type)
+
+  set(${type_var} "${type}" PARENT_SCOPE)
+endfunction()
+
+
+function(get_prerequisites target prerequisites_var exclude_system recurse exepath dirs)
+  set(verbose 0)
+  set(eol_char "E")
+  if(ARGC GREATER 6)
+    set(rpaths "${ARGV6}")
+  else()
+    set(rpaths "")
+  endif()
+
+  if(GET_PREREQUISITES_VERBOSE)
+    set(verbose 1)
+  endif()
+
+  if(NOT IS_ABSOLUTE "${target}")
+    message("warning: target '${target}' is not absolute...")
+  endif()
+
+  if(NOT EXISTS "${target}")
+    message("warning: target '${target}' does not exist...")
+    return()
+  endif()
+
+  # Check for a script by extension (.bat,.sh,...) or if the file starts with "#!" (shebang)
+  file(READ ${target} file_contents LIMIT 5)
+  if(target MATCHES "\\.(bat|c?sh|bash|ksh|cmd)$" OR file_contents MATCHES "^#!")
+    message(STATUS "GetPrequisites(${target}) : ignoring script file")
+    # Clear var
+    set(${prerequisites_var} "" PARENT_SCOPE)
+    return()
+  endif()
+
+  set(gp_cmd_paths ${gp_cmd_paths}
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\14.0;InstallDir]/../../VC/bin"
+    "$ENV{VS140COMNTOOLS}/../../VC/bin"
+    "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\12.0;InstallDir]/../../VC/bin"
+    "$ENV{VS120COMNTOOLS}/../../VC/bin"
+    "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0;InstallDir]/../../VC/bin"
+    "$ENV{VS110COMNTOOLS}/../../VC/bin"
+    "C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0;InstallDir]/../../VC/bin"
+    "$ENV{VS100COMNTOOLS}/../../VC/bin"
+    "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0;InstallDir]/../../VC/bin"
+    "$ENV{VS90COMNTOOLS}/../../VC/bin"
+    "C:/Program Files/Microsoft Visual Studio 9.0/VC/bin"
+    "C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0;InstallDir]/../../VC/bin"
+    "$ENV{VS80COMNTOOLS}/../../VC/bin"
+    "C:/Program Files/Microsoft Visual Studio 8/VC/BIN"
+    "C:/Program Files (x86)/Microsoft Visual Studio 8/VC/BIN"
+    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\7.1;InstallDir]/../../VC7/bin"
+    "$ENV{VS71COMNTOOLS}/../../VC7/bin"
+    "C:/Program Files/Microsoft Visual Studio .NET 2003/VC7/BIN"
+    "C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/VC7/BIN"
+    )
+
+  # <setup-gp_tool-vars>
+  #
+  # Try to choose the right tool by default. Caller can set gp_tool prior to
+  # calling this function to force using a different tool.
+  #
+  if(NOT gp_tool)
+    set(gp_tool "ldd")
+
+    if(APPLE)
+      set(gp_tool "otool")
+    endif()
+
+    if(WIN32 AND NOT UNIX) # This is how to check for cygwin, har!
+      find_program(gp_dumpbin "dumpbin" PATHS ${gp_cmd_paths})
+      if(gp_dumpbin)
+        set(gp_tool "dumpbin")
+      elseif(CMAKE_OBJDUMP) # Try harder. Maybe we're on MinGW
+        set(gp_tool "${CMAKE_OBJDUMP}")
+      else()
+        set(gp_tool "objdump")
+      endif()
+    endif()
+  endif()
+
+  find_program(gp_cmd ${gp_tool} PATHS ${gp_cmd_paths})
+
+  if(NOT gp_cmd)
+    message(STATUS "warning: could not find '${gp_tool}' - cannot analyze prerequisites...")
+    return()
+  endif()
+
+  set(gp_cmd_maybe_filter)      # optional command to pre-filter gp_tool results
+
+  if(gp_tool MATCHES "ldd$")
+    set(gp_cmd_args "")
+    set(gp_regex "^[\t ]*[^\t ]+ =>[\t ]+([^\t\(]+)( \(.+\))?${eol_char}$")
+    set(gp_regex_error "not found${eol_char}$")
+    set(gp_regex_fallback "^[\t ]*([^\t ]+) => ([^\t ]+).*${eol_char}$")
+    set(gp_regex_cmp_count 1)
+  elseif(gp_tool MATCHES "otool$")
+    set(gp_cmd_args "-L")
+    set(gp_regex "^\t([^\t]+) \\(compatibility version ([0-9]+.[0-9]+.[0-9]+), current version ([0-9]+.[0-9]+.[0-9]+)(, weak)?\\)${eol_char}$")
+    set(gp_regex_error "")
+    set(gp_regex_fallback "")
+    set(gp_regex_cmp_count 3)
+  elseif(gp_tool MATCHES "dumpbin$")
+    set(gp_cmd_args "/dependents")
+    set(gp_regex "^    ([^ ].*[Dd][Ll][Ll])${eol_char}$")
+    set(gp_regex_error "")
+    set(gp_regex_fallback "")
+    set(gp_regex_cmp_count 1)
+  elseif(gp_tool MATCHES "objdump(\\.exe)?$")
+    set(gp_cmd_args "-p")
+    set(gp_regex "^\t*DLL Name: (.*\\.[Dd][Ll][Ll])${eol_char}$")
+    set(gp_regex_error "")
+    set(gp_regex_fallback "")
+    set(gp_regex_cmp_count 1)
+    # objdump generates copious output so we create a grep filter to pre-filter results
+    if(WIN32)
+      find_program(gp_grep_cmd findstr)
+    else()
+      find_program(gp_grep_cmd grep)
+    endif()
+    if(gp_grep_cmd)
+      set(gp_cmd_maybe_filter COMMAND ${gp_grep_cmd} "-a" "^[[:blank:]]*DLL Name: ")
+    endif()
+  else()
+    message(STATUS "warning: gp_tool='${gp_tool}' is an unknown tool...")
+    message(STATUS "CMake function get_prerequisites needs more code to handle '${gp_tool}'")
+    message(STATUS "Valid gp_tool values are dumpbin, ldd, objdump and otool.")
+    return()
+  endif()
+
+
+  if(gp_tool MATCHES "dumpbin$")
+    # When running dumpbin, it also needs the "Common7/IDE" directory in the
+    # PATH. It will already be in the PATH if being run from a Visual Studio
+    # command prompt. Add it to the PATH here in case we are running from a
+    # different command prompt.
+    #
+    get_filename_component(gp_cmd_dir "${gp_cmd}" PATH)
+    get_filename_component(gp_cmd_dlls_dir "${gp_cmd_dir}/../../Common7/IDE" ABSOLUTE)
+    # Use cmake paths as a user may have a PATH element ending with a backslash.
+    # This will escape the list delimiter and create havoc!
+    if(EXISTS "${gp_cmd_dlls_dir}")
+      # only add to the path if it is not already in the path
+      set(gp_found_cmd_dlls_dir 0)
+      file(TO_CMAKE_PATH "$ENV{PATH}" env_path)
+      foreach(gp_env_path_element ${env_path})
+        if(gp_env_path_element STREQUAL gp_cmd_dlls_dir)
+          set(gp_found_cmd_dlls_dir 1)
+        endif()
+      endforeach()
+
+      if(NOT gp_found_cmd_dlls_dir)
+        file(TO_NATIVE_PATH "${gp_cmd_dlls_dir}" gp_cmd_dlls_dir)
+        set(ENV{PATH} "$ENV{PATH};${gp_cmd_dlls_dir}")
+      endif()
+    endif()
+  endif()
+  #
+  # </setup-gp_tool-vars>
+
+  if(gp_tool MATCHES "ldd$")
+    set(old_ld_env "$ENV{LD_LIBRARY_PATH}")
+    set(new_ld_env "${exepath}")
+    foreach(dir ${dirs})
+      string(APPEND new_ld_env ":${dir}")
+    endforeach()
+    set(ENV{LD_LIBRARY_PATH} "${new_ld_env}:$ENV{LD_LIBRARY_PATH}")
+  endif()
+
+
+  # Track new prerequisites at each new level of recursion. Start with an
+  # empty list at each level:
+  #
+  set(unseen_prereqs)
+
+  # Run gp_cmd on the target:
+  #
+  execute_process(
+    COMMAND ${gp_cmd} ${gp_cmd_args} ${target}
+    ${gp_cmd_maybe_filter}
+    RESULT_VARIABLE gp_rv
+    OUTPUT_VARIABLE gp_cmd_ov
+    ERROR_VARIABLE gp_ev
+    )
+
+  if(gp_tool MATCHES "dumpbin$")
+    # Exclude delay load dependencies under windows (they are listed in dumpbin output after the message below)
+    string(FIND "${gp_cmd_ov}" "Image has the following delay load dependencies" gp_delayload_pos)
+    if (${gp_delayload_pos} GREATER -1)
+      string(SUBSTRING "${gp_cmd_ov}" 0 ${gp_delayload_pos} gp_cmd_ov_no_delayload_deps)
+      string(SUBSTRING "${gp_cmd_ov}" ${gp_delayload_pos} -1 gp_cmd_ov_delayload_deps)
+      if (verbose)
+        message(STATUS "GetPrequisites(${target}) : ignoring the following delay load dependencies :\n ${gp_cmd_ov_delayload_deps}")
+      endif()
+      set(gp_cmd_ov ${gp_cmd_ov_no_delayload_deps})
+    endif()
+  endif()
+
+  if(NOT gp_rv STREQUAL "0")
+    if(gp_tool MATCHES "dumpbin$")
+      # dumpbin error messages seem to go to stdout
+      message(FATAL_ERROR "${gp_cmd} failed: ${gp_rv}\n${gp_ev}\n${gp_cmd_ov}")
+    else()
+      message(FATAL_ERROR "${gp_cmd} failed: ${gp_rv}\n${gp_ev}")
+    endif()
+  endif()
+
+  if(gp_tool MATCHES "ldd$")
+    set(ENV{LD_LIBRARY_PATH} "${old_ld_env}")
+  endif()
+
+  if(verbose)
+    message(STATUS "<RawOutput cmd='${gp_cmd} ${gp_cmd_args} ${target}'>")
+    message(STATUS "gp_cmd_ov='${gp_cmd_ov}'")
+    message(STATUS "</RawOutput>")
+  endif()
+
+  get_filename_component(target_dir "${target}" PATH)
+
+  # Convert to a list of lines:
+  #
+  string(REPLACE ";" "\\;" candidates "${gp_cmd_ov}")
+  string(REPLACE "\n" "${eol_char};" candidates "${candidates}")
+
+  # check for install id and remove it from list, since otool -L can include a
+  # reference to itself
+  set(gp_install_id)
+  if(gp_tool MATCHES "otool$")
+    execute_process(
+      COMMAND ${gp_cmd} -D ${target}
+      RESULT_VARIABLE otool_rv
+      OUTPUT_VARIABLE gp_install_id_ov
+      ERROR_VARIABLE otool_ev
+      )
+    if(NOT otool_rv STREQUAL "0")
+      message(FATAL_ERROR "otool -D failed: ${otool_rv}\n${otool_ev}")
+    endif()
+    # second line is install name
+    string(REGEX REPLACE ".*:\n" "" gp_install_id "${gp_install_id_ov}")
+    if(gp_install_id)
+      # trim
+      string(REGEX MATCH "[^\n ].*[^\n ]" gp_install_id "${gp_install_id}")
+      #message("INSTALL ID is \"${gp_install_id}\"")
+    endif()
+  endif()
+
+  # Analyze each line for file names that match the regular expression:
+  #
+  foreach(candidate ${candidates})
+  if("${candidate}" MATCHES "${gp_regex}")
+
+    # Extract information from each candidate:
+    if(gp_regex_error AND "${candidate}" MATCHES "${gp_regex_error}")
+      string(REGEX REPLACE "${gp_regex_fallback}" "\\1" raw_item "${candidate}")
+    else()
+      string(REGEX REPLACE "${gp_regex}" "\\1" raw_item "${candidate}")
+    endif()
+
+    if(gp_regex_cmp_count GREATER 1)
+      string(REGEX REPLACE "${gp_regex}" "\\2" raw_compat_version "${candidate}")
+      string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\1" compat_major_version "${raw_compat_version}")
+      string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\2" compat_minor_version "${raw_compat_version}")
+      string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\3" compat_patch_version "${raw_compat_version}")
+    endif()
+
+    if(gp_regex_cmp_count GREATER 2)
+      string(REGEX REPLACE "${gp_regex}" "\\3" raw_current_version "${candidate}")
+      string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\1" current_major_version "${raw_current_version}")
+      string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\2" current_minor_version "${raw_current_version}")
+      string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\3" current_patch_version "${raw_current_version}")
+    endif()
+
+    # Use the raw_item as the list entries returned by this function. Use the
+    # gp_resolve_item function to resolve it to an actual full path file if
+    # necessary.
+    #
+    set(item "${raw_item}")
+
+    # Add each item unless it is excluded:
+    #
+    set(add_item 1)
+
+    if(item STREQUAL gp_install_id)
+      set(add_item 0)
+    endif()
+
+    if(add_item AND ${exclude_system})
+      set(type "")
+      gp_resolved_file_type("${target}" "${item}" "${exepath}" "${dirs}" type "${rpaths}")
+
+      if(type STREQUAL "system")
+        set(add_item 0)
+      endif()
+    endif()
+
+    if(add_item)
+      list(LENGTH ${prerequisites_var} list_length_before_append)
+      gp_append_unique(${prerequisites_var} "${item}")
+      list(LENGTH ${prerequisites_var} list_length_after_append)
+
+      if(${recurse})
+        # If item was really added, this is the first time we have seen it.
+        # Add it to unseen_prereqs so that we can recursively add *its*
+        # prerequisites...
+        #
+        # But first: resolve its name to an absolute full path name such
+        # that the analysis tools can simply accept it as input.
+        #
+        if(NOT list_length_before_append EQUAL list_length_after_append)
+          gp_resolve_item("${target}" "${item}" "${exepath}" "${dirs}" resolved_item "${rpaths}")
+          if(EXISTS "${resolved_item}")
+            # Recurse only if we could resolve the item.
+            # Otherwise the prerequisites_var list will be cleared
+            set(unseen_prereqs ${unseen_prereqs} "${resolved_item}")
+          endif()
+        endif()
+      endif()
+    endif()
+  else()
+    if(verbose)
+      message(STATUS "ignoring non-matching line: '${candidate}'")
+    endif()
+  endif()
+  endforeach()
+
+  list(LENGTH ${prerequisites_var} prerequisites_var_length)
+  if(prerequisites_var_length GREATER 0)
+    list(SORT ${prerequisites_var})
+  endif()
+  if(${recurse})
+    set(more_inputs ${unseen_prereqs})
+    foreach(input ${more_inputs})
+      get_prerequisites("${input}" ${prerequisites_var} ${exclude_system} ${recurse} "${exepath}" "${dirs}" "${rpaths}")
+    endforeach()
+  endif()
+
+  set(${prerequisites_var} ${${prerequisites_var}} PARENT_SCOPE)
+endfunction()
+
+
+function(list_prerequisites target)
+  if(ARGC GREATER 1 AND NOT "${ARGV1}" STREQUAL "")
+    set(all "${ARGV1}")
+  else()
+    set(all 1)
+  endif()
+
+  if(ARGC GREATER 2 AND NOT "${ARGV2}" STREQUAL "")
+    set(exclude_system "${ARGV2}")
+  else()
+    set(exclude_system 0)
+  endif()
+
+  if(ARGC GREATER 3 AND NOT "${ARGV3}" STREQUAL "")
+    set(verbose "${ARGV3}")
+  else()
+    set(verbose 0)
+  endif()
+
+  set(count 0)
+  set(count_str "")
+  set(print_count "${verbose}")
+  set(print_prerequisite_type "${verbose}")
+  set(print_target "${verbose}")
+  set(type_str "")
+
+  get_filename_component(exepath "${target}" PATH)
+
+  set(prereqs "")
+  get_prerequisites("${target}" prereqs ${exclude_system} ${all} "${exepath}" "")
+
+  if(print_target)
+    message(STATUS "File '${target}' depends on:")
+  endif()
+
+  foreach(d ${prereqs})
+    math(EXPR count "${count} + 1")
+
+    if(print_count)
+      set(count_str "${count}. ")
+    endif()
+
+    if(print_prerequisite_type)
+      gp_file_type("${target}" "${d}" type)
+      set(type_str " (${type})")
+    endif()
+
+    message(STATUS "${count_str}${d}${type_str}")
+  endforeach()
+endfunction()
+
+
+function(list_prerequisites_by_glob glob_arg glob_exp)
+  message(STATUS "=============================================================================")
+  message(STATUS "List prerequisites of executables matching ${glob_arg} '${glob_exp}'")
+  message(STATUS "")
+  file(${glob_arg} file_list ${glob_exp})
+  foreach(f ${file_list})
+    is_file_executable("${f}" is_f_executable)
+    if(is_f_executable)
+      message(STATUS "=============================================================================")
+      list_prerequisites("${f}" ${ARGN})
+      message(STATUS "")
+    endif()
+  endforeach()
+endfunction()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/GoogleTest.cmake b/share/cmake-3.22/Modules/GoogleTest.cmake
new file mode 100644
index 0000000..f5f4f02
--- /dev/null
+++ b/share/cmake-3.22/Modules/GoogleTest.cmake
@@ -0,0 +1,573 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+GoogleTest
+----------
+
+.. versionadded:: 3.9
+
+This module defines functions to help use the Google Test infrastructure.  Two
+mechanisms for adding tests are provided. :command:`gtest_add_tests` has been
+around for some time, originally via ``find_package(GTest)``.
+:command:`gtest_discover_tests` was introduced in CMake 3.10.
+
+The (older) :command:`gtest_add_tests` scans source files to identify tests.
+This is usually effective, with some caveats, including in cross-compiling
+environments, and makes setting additional properties on tests more convenient.
+However, its handling of parameterized tests is less comprehensive, and it
+requires re-running CMake to detect changes to the list of tests.
+
+The (newer) :command:`gtest_discover_tests` discovers tests by asking the
+compiled test executable to enumerate its tests.  This is more robust and
+provides better handling of parameterized tests, and does not require CMake
+to be re-run when tests change.  However, it may not work in a cross-compiling
+environment, and setting test properties is less convenient.
+
+More details can be found in the documentation of the respective functions.
+
+Both commands are intended to replace use of :command:`add_test` to register
+tests, and will create a separate CTest test for each Google Test test case.
+Note that this is in some cases less efficient, as common set-up and tear-down
+logic cannot be shared by multiple test cases executing in the same instance.
+However, it provides more fine-grained pass/fail information to CTest, which is
+usually considered as more beneficial.  By default, the CTest test name is the
+same as the Google Test name (i.e. ``suite.testcase``); see also
+``TEST_PREFIX`` and ``TEST_SUFFIX``.
+
+.. command:: gtest_add_tests
+
+  Automatically add tests with CTest by scanning source code for Google Test
+  macros::
+
+    gtest_add_tests(TARGET target
+                    [SOURCES src1...]
+                    [EXTRA_ARGS arg1...]
+                    [WORKING_DIRECTORY dir]
+                    [TEST_PREFIX prefix]
+                    [TEST_SUFFIX suffix]
+                    [SKIP_DEPENDENCY]
+                    [TEST_LIST outVar]
+    )
+
+  ``gtest_add_tests`` attempts to identify tests by scanning source files.
+  Although this is generally effective, it uses only a basic regular expression
+  match, which can be defeated by atypical test declarations, and is unable to
+  fully "split" parameterized tests.  Additionally, it requires that CMake be
+  re-run to discover any newly added, removed or renamed tests (by default,
+  this means that CMake is re-run when any test source file is changed, but see
+  ``SKIP_DEPENDENCY``).  However, it has the advantage of declaring tests at
+  CMake time, which somewhat simplifies setting additional properties on tests,
+  and always works in a cross-compiling environment.
+
+  The options are:
+
+  ``TARGET target``
+    Specifies the Google Test executable, which must be a known CMake
+    executable target.  CMake will substitute the location of the built
+    executable when running the test.
+
+  ``SOURCES src1...``
+    When provided, only the listed files will be scanned for test cases.  If
+    this option is not given, the :prop_tgt:`SOURCES` property of the
+    specified ``target`` will be used to obtain the list of sources.
+
+  ``EXTRA_ARGS arg1...``
+    Any extra arguments to pass on the command line to each test case.
+
+  ``WORKING_DIRECTORY dir``
+    Specifies the directory in which to run the discovered test cases.  If this
+    option is not provided, the current binary directory is used.
+
+  ``TEST_PREFIX prefix``
+    Specifies a ``prefix`` to be prepended to the name of each discovered test
+    case.  This can be useful when the same source files are being used in
+    multiple calls to ``gtest_add_test()`` but with different ``EXTRA_ARGS``.
+
+  ``TEST_SUFFIX suffix``
+    Similar to ``TEST_PREFIX`` except the ``suffix`` is appended to the name of
+    every discovered test case.  Both ``TEST_PREFIX`` and ``TEST_SUFFIX`` may
+    be specified.
+
+  ``SKIP_DEPENDENCY``
+    Normally, the function creates a dependency which will cause CMake to be
+    re-run if any of the sources being scanned are changed.  This is to ensure
+    that the list of discovered tests is updated.  If this behavior is not
+    desired (as may be the case while actually writing the test cases), this
+    option can be used to prevent the dependency from being added.
+
+  ``TEST_LIST outVar``
+    The variable named by ``outVar`` will be populated in the calling scope
+    with the list of discovered test cases.  This allows the caller to do
+    things like manipulate test properties of the discovered tests.
+
+  Usage example:
+
+  .. code-block:: cmake
+
+    include(GoogleTest)
+    add_executable(FooTest FooUnitTest.cxx)
+    gtest_add_tests(TARGET      FooTest
+                    TEST_SUFFIX .noArgs
+                    TEST_LIST   noArgsTests
+    )
+    gtest_add_tests(TARGET      FooTest
+                    EXTRA_ARGS  --someArg someValue
+                    TEST_SUFFIX .withArgs
+                    TEST_LIST   withArgsTests
+    )
+    set_tests_properties(${noArgsTests}   PROPERTIES TIMEOUT 10)
+    set_tests_properties(${withArgsTests} PROPERTIES TIMEOUT 20)
+
+  For backward compatibility, the following form is also supported::
+
+    gtest_add_tests(exe args files...)
+
+  ``exe``
+    The path to the test executable or the name of a CMake target.
+  ``args``
+    A ;-list of extra arguments to be passed to executable.  The entire
+    list must be passed as a single argument.  Enclose it in quotes,
+    or pass ``""`` for no arguments.
+  ``files...``
+    A list of source files to search for tests and test fixtures.
+    Alternatively, use ``AUTO`` to specify that ``exe`` is the name
+    of a CMake executable target whose sources should be scanned.
+
+  .. code-block:: cmake
+
+    include(GoogleTest)
+    set(FooTestArgs --foo 1 --bar 2)
+    add_executable(FooTest FooUnitTest.cxx)
+    gtest_add_tests(FooTest "${FooTestArgs}" AUTO)
+
+.. command:: gtest_discover_tests
+
+  Automatically add tests with CTest by querying the compiled test executable
+  for available tests::
+
+    gtest_discover_tests(target
+                         [EXTRA_ARGS arg1...]
+                         [WORKING_DIRECTORY dir]
+                         [TEST_PREFIX prefix]
+                         [TEST_SUFFIX suffix]
+                         [TEST_FILTER expr]
+                         [NO_PRETTY_TYPES] [NO_PRETTY_VALUES]
+                         [PROPERTIES name1 value1...]
+                         [TEST_LIST var]
+                         [DISCOVERY_TIMEOUT seconds]
+                         [XML_OUTPUT_DIR dir]
+                         [DISCOVERY_MODE <POST_BUILD|PRE_TEST>]
+    )
+
+  .. versionadded:: 3.10
+
+  ``gtest_discover_tests()`` sets up a post-build command on the test executable
+  that generates the list of tests by parsing the output from running the test
+  with the ``--gtest_list_tests`` argument.  Compared to the source parsing
+  approach of :command:`gtest_add_tests`, this ensures that the full list of
+  tests, including instantiations of parameterized tests, is obtained.  Since
+  test discovery occurs at build time, it is not necessary to re-run CMake when
+  the list of tests changes.
+  However, it requires that :prop_tgt:`CROSSCOMPILING_EMULATOR` is properly set
+  in order to function in a cross-compiling environment.
+
+  Additionally, setting properties on tests is somewhat less convenient, since
+  the tests are not available at CMake time.  Additional test properties may be
+  assigned to the set of tests as a whole using the ``PROPERTIES`` option.  If
+  more fine-grained test control is needed, custom content may be provided
+  through an external CTest script using the :prop_dir:`TEST_INCLUDE_FILES`
+  directory property.  The set of discovered tests is made accessible to such a
+  script via the ``<target>_TESTS`` variable.
+
+  The options are:
+
+  ``target``
+    Specifies the Google Test executable, which must be a known CMake
+    executable target.  CMake will substitute the location of the built
+    executable when running the test.
+
+  ``EXTRA_ARGS arg1...``
+    Any extra arguments to pass on the command line to each test case.
+
+  ``WORKING_DIRECTORY dir``
+    Specifies the directory in which to run the discovered test cases.  If this
+    option is not provided, the current binary directory is used.
+
+  ``TEST_PREFIX prefix``
+    Specifies a ``prefix`` to be prepended to the name of each discovered test
+    case.  This can be useful when the same test executable is being used in
+    multiple calls to ``gtest_discover_tests()`` but with different
+    ``EXTRA_ARGS``.
+
+  ``TEST_SUFFIX suffix``
+    Similar to ``TEST_PREFIX`` except the ``suffix`` is appended to the name of
+    every discovered test case.  Both ``TEST_PREFIX`` and ``TEST_SUFFIX`` may
+    be specified.
+
+  ``TEST_FILTER expr``
+    .. versionadded:: 3.22
+
+    Filter expression to pass as a ``--gtest_filter`` argument during test
+    discovery.  Note that the expression is a wildcard-based format that
+    matches against the original test names as used by gtest.  For type or
+    value-parameterized tests, these names may be different to the potentially
+    pretty-printed test names that ``ctest`` uses.
+
+  ``NO_PRETTY_TYPES``
+    By default, the type index of type-parameterized tests is replaced by the
+    actual type name in the CTest test name.  If this behavior is undesirable
+    (e.g. because the type names are unwieldy), this option will suppress this
+    behavior.
+
+  ``NO_PRETTY_VALUES``
+    By default, the value index of value-parameterized tests is replaced by the
+    actual value in the CTest test name.  If this behavior is undesirable
+    (e.g. because the value strings are unwieldy), this option will suppress
+    this behavior.
+
+  ``PROPERTIES name1 value1...``
+    Specifies additional properties to be set on all tests discovered by this
+    invocation of ``gtest_discover_tests()``.
+
+  ``TEST_LIST var``
+    Make the list of tests available in the variable ``var``, rather than the
+    default ``<target>_TESTS``.  This can be useful when the same test
+    executable is being used in multiple calls to ``gtest_discover_tests()``.
+    Note that this variable is only available in CTest.
+
+  ``DISCOVERY_TIMEOUT num``
+    .. versionadded:: 3.10.3
+
+    Specifies how long (in seconds) CMake will wait for the test to enumerate
+    available tests.  If the test takes longer than this, discovery (and your
+    build) will fail.  Most test executables will enumerate their tests very
+    quickly, but under some exceptional circumstances, a test may require a
+    longer timeout.  The default is 5.  See also the ``TIMEOUT`` option of
+    :command:`execute_process`.
+
+    .. note::
+
+      In CMake versions 3.10.1 and 3.10.2, this option was called ``TIMEOUT``.
+      This clashed with the ``TIMEOUT`` test property, which is one of the
+      common properties that would be set with the ``PROPERTIES`` keyword,
+      usually leading to legal but unintended behavior.  The keyword was
+      changed to ``DISCOVERY_TIMEOUT`` in CMake 3.10.3 to address this
+      problem.  The ambiguous behavior of the ``TIMEOUT`` keyword in 3.10.1
+      and 3.10.2 has not been preserved.
+
+  ``XML_OUTPUT_DIR dir``
+    .. versionadded:: 3.18
+
+    If specified, the parameter is passed along with ``--gtest_output=xml:``
+    to test executable. The actual file name is the same as the test target,
+    including prefix and suffix. This should be used instead of
+    ``EXTRA_ARGS --gtest_output=xml`` to avoid race conditions writing the
+    XML result output when using parallel test execution.
+
+  ``DISCOVERY_MODE``
+    .. versionadded:: 3.18
+
+    Provides greater control over when ``gtest_discover_tests()`` performs test
+    discovery. By default, ``POST_BUILD`` sets up a post-build command
+    to perform test discovery at build time. In certain scenarios, like
+    cross-compiling, this ``POST_BUILD`` behavior is not desirable.
+    By contrast, ``PRE_TEST`` delays test discovery until just prior to test
+    execution. This way test discovery occurs in the target environment
+    where the test has a better chance at finding appropriate runtime
+    dependencies.
+
+    ``DISCOVERY_MODE`` defaults to the value of the
+    ``CMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE`` variable if it is not
+    passed when calling ``gtest_discover_tests()``. This provides a mechanism
+    for globally selecting a preferred test discovery behavior without having
+    to modify each call site.
+
+#]=======================================================================]
+
+# Save project's policies
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+#------------------------------------------------------------------------------
+function(gtest_add_tests)
+
+  if (ARGC LESS 1)
+    message(FATAL_ERROR "No arguments supplied to gtest_add_tests()")
+  endif()
+
+  set(options
+      SKIP_DEPENDENCY
+  )
+  set(oneValueArgs
+      TARGET
+      WORKING_DIRECTORY
+      TEST_PREFIX
+      TEST_SUFFIX
+      TEST_LIST
+  )
+  set(multiValueArgs
+      SOURCES
+      EXTRA_ARGS
+  )
+  set(allKeywords ${options} ${oneValueArgs} ${multiValueArgs})
+
+  unset(sources)
+  if("${ARGV0}" IN_LIST allKeywords)
+    cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+    set(autoAddSources YES)
+  else()
+    # Non-keyword syntax, convert to keyword form
+    if (ARGC LESS 3)
+      message(FATAL_ERROR "gtest_add_tests() without keyword options requires at least 3 arguments")
+    endif()
+    set(ARGS_TARGET     "${ARGV0}")
+    set(ARGS_EXTRA_ARGS "${ARGV1}")
+    if(NOT "${ARGV2}" STREQUAL "AUTO")
+      set(ARGS_SOURCES "${ARGV}")
+      list(REMOVE_AT ARGS_SOURCES 0 1)
+    endif()
+  endif()
+
+  # The non-keyword syntax allows the first argument to be an arbitrary
+  # executable rather than a target if source files are also provided. In all
+  # other cases, both forms require a target.
+  if(NOT TARGET "${ARGS_TARGET}" AND NOT ARGS_SOURCES)
+    message(FATAL_ERROR "${ARGS_TARGET} does not define an existing CMake target")
+  endif()
+  if(NOT ARGS_WORKING_DIRECTORY)
+    unset(workDir)
+  else()
+    set(workDir WORKING_DIRECTORY "${ARGS_WORKING_DIRECTORY}")
+  endif()
+
+  if(NOT ARGS_SOURCES)
+    get_property(ARGS_SOURCES TARGET ${ARGS_TARGET} PROPERTY SOURCES)
+  endif()
+
+  unset(testList)
+
+  set(gtest_case_name_regex ".*\\( *([A-Za-z_0-9]+) *, *([A-Za-z_0-9]+) *\\).*")
+  set(gtest_test_type_regex "(TYPED_TEST|TEST_?[FP]?)")
+
+  foreach(source IN LISTS ARGS_SOURCES)
+    if(NOT ARGS_SKIP_DEPENDENCY)
+      set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${source})
+    endif()
+    file(READ "${source}" contents)
+    string(REGEX MATCHALL "${gtest_test_type_regex} *\\(([A-Za-z_0-9 ,]+)\\)" found_tests "${contents}")
+    foreach(hit ${found_tests})
+      string(REGEX MATCH "${gtest_test_type_regex}" test_type ${hit})
+
+      # Parameterized tests have a different signature for the filter
+      if("x${test_type}" STREQUAL "xTEST_P")
+        string(REGEX REPLACE ${gtest_case_name_regex}  "*/\\1.\\2/*" gtest_test_name ${hit})
+      elseif("x${test_type}" STREQUAL "xTEST_F" OR "x${test_type}" STREQUAL "xTEST")
+        string(REGEX REPLACE ${gtest_case_name_regex} "\\1.\\2" gtest_test_name ${hit})
+      elseif("x${test_type}" STREQUAL "xTYPED_TEST")
+        string(REGEX REPLACE ${gtest_case_name_regex} "\\1/*.\\2" gtest_test_name ${hit})
+      else()
+        message(WARNING "Could not parse GTest ${hit} for adding to CTest.")
+        continue()
+      endif()
+
+      # Make sure tests disabled in GTest get disabled in CTest
+      if(gtest_test_name MATCHES "(^|\\.)DISABLED_")
+        # Add the disabled test if CMake is new enough
+        # Note that this check is to allow backwards compatibility so this
+        # module can be copied locally in projects to use with older CMake
+        # versions
+        if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.8.20170401)
+          string(REGEX REPLACE
+                 "(^|\\.)DISABLED_" "\\1"
+                 orig_test_name "${gtest_test_name}"
+          )
+          set(ctest_test_name
+              ${ARGS_TEST_PREFIX}${orig_test_name}${ARGS_TEST_SUFFIX}
+          )
+          add_test(NAME ${ctest_test_name}
+                   ${workDir}
+                   COMMAND ${ARGS_TARGET}
+                     --gtest_also_run_disabled_tests
+                     --gtest_filter=${gtest_test_name}
+                     ${ARGS_EXTRA_ARGS}
+          )
+          set_tests_properties(${ctest_test_name} PROPERTIES DISABLED TRUE)
+          list(APPEND testList ${ctest_test_name})
+        endif()
+      else()
+        set(ctest_test_name ${ARGS_TEST_PREFIX}${gtest_test_name}${ARGS_TEST_SUFFIX})
+        add_test(NAME ${ctest_test_name}
+                 ${workDir}
+                 COMMAND ${ARGS_TARGET}
+                   --gtest_filter=${gtest_test_name}
+                   ${ARGS_EXTRA_ARGS}
+        )
+        list(APPEND testList ${ctest_test_name})
+      endif()
+    endforeach()
+  endforeach()
+
+  if(ARGS_TEST_LIST)
+    set(${ARGS_TEST_LIST} ${testList} PARENT_SCOPE)
+  endif()
+
+endfunction()
+
+#------------------------------------------------------------------------------
+
+function(gtest_discover_tests TARGET)
+  cmake_parse_arguments(
+    ""
+    "NO_PRETTY_TYPES;NO_PRETTY_VALUES"
+    "TEST_PREFIX;TEST_SUFFIX;WORKING_DIRECTORY;TEST_LIST;DISCOVERY_TIMEOUT;XML_OUTPUT_DIR;DISCOVERY_MODE"
+    "EXTRA_ARGS;PROPERTIES;TEST_FILTER"
+    ${ARGN}
+  )
+
+  if(NOT _WORKING_DIRECTORY)
+    set(_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
+  endif()
+  if(NOT _TEST_LIST)
+    set(_TEST_LIST ${TARGET}_TESTS)
+  endif()
+  if(NOT _DISCOVERY_TIMEOUT)
+    set(_DISCOVERY_TIMEOUT 5)
+  endif()
+  if(NOT _DISCOVERY_MODE)
+    if(NOT CMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE)
+      set(CMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE "POST_BUILD")
+    endif()
+    set(_DISCOVERY_MODE ${CMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE})
+  endif()
+
+  get_property(
+    has_counter
+    TARGET ${TARGET}
+    PROPERTY CTEST_DISCOVERED_TEST_COUNTER
+    SET
+  )
+  if(has_counter)
+    get_property(
+      counter
+      TARGET ${TARGET}
+      PROPERTY CTEST_DISCOVERED_TEST_COUNTER
+    )
+    math(EXPR counter "${counter} + 1")
+  else()
+    set(counter 1)
+  endif()
+  set_property(
+    TARGET ${TARGET}
+    PROPERTY CTEST_DISCOVERED_TEST_COUNTER
+    ${counter}
+  )
+
+  # Define rule to generate test list for aforementioned test executable
+  set(ctest_file_base "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}[${counter}]")
+  set(ctest_include_file "${ctest_file_base}_include.cmake")
+  set(ctest_tests_file "${ctest_file_base}_tests.cmake")
+  get_property(crosscompiling_emulator
+    TARGET ${TARGET}
+    PROPERTY CROSSCOMPILING_EMULATOR
+  )
+
+  if(_DISCOVERY_MODE STREQUAL "POST_BUILD")
+    add_custom_command(
+      TARGET ${TARGET} POST_BUILD
+      BYPRODUCTS "${ctest_tests_file}"
+      COMMAND "${CMAKE_COMMAND}"
+              -D "TEST_TARGET=${TARGET}"
+              -D "TEST_EXECUTABLE=$<TARGET_FILE:${TARGET}>"
+              -D "TEST_EXECUTOR=${crosscompiling_emulator}"
+              -D "TEST_WORKING_DIR=${_WORKING_DIRECTORY}"
+              -D "TEST_EXTRA_ARGS=${_EXTRA_ARGS}"
+              -D "TEST_PROPERTIES=${_PROPERTIES}"
+              -D "TEST_PREFIX=${_TEST_PREFIX}"
+              -D "TEST_SUFFIX=${_TEST_SUFFIX}"
+              -D "TEST_FILTER=${_TEST_FILTER}"
+              -D "NO_PRETTY_TYPES=${_NO_PRETTY_TYPES}"
+              -D "NO_PRETTY_VALUES=${_NO_PRETTY_VALUES}"
+              -D "TEST_LIST=${_TEST_LIST}"
+              -D "CTEST_FILE=${ctest_tests_file}"
+              -D "TEST_DISCOVERY_TIMEOUT=${_DISCOVERY_TIMEOUT}"
+              -D "TEST_XML_OUTPUT_DIR=${_XML_OUTPUT_DIR}"
+              -P "${_GOOGLETEST_DISCOVER_TESTS_SCRIPT}"
+      VERBATIM
+    )
+
+    file(WRITE "${ctest_include_file}"
+      "if(EXISTS \"${ctest_tests_file}\")\n"
+      "  include(\"${ctest_tests_file}\")\n"
+      "else()\n"
+      "  add_test(${TARGET}_NOT_BUILT ${TARGET}_NOT_BUILT)\n"
+      "endif()\n"
+    )
+  elseif(_DISCOVERY_MODE STREQUAL "PRE_TEST")
+
+    get_property(GENERATOR_IS_MULTI_CONFIG GLOBAL
+        PROPERTY GENERATOR_IS_MULTI_CONFIG
+    )
+
+    if(GENERATOR_IS_MULTI_CONFIG)
+      set(ctest_tests_file "${ctest_file_base}_tests-$<CONFIG>.cmake")
+    endif()
+
+    string(CONCAT ctest_include_content
+      "if(EXISTS \"$<TARGET_FILE:${TARGET}>\")"                                    "\n"
+      "  if(NOT EXISTS \"${ctest_tests_file}\" OR"                                 "\n"
+      "     NOT \"${ctest_tests_file}\" IS_NEWER_THAN \"$<TARGET_FILE:${TARGET}>\" OR\n"
+      "     NOT \"${ctest_tests_file}\" IS_NEWER_THAN \"\${CMAKE_CURRENT_LIST_FILE}\")\n"
+      "    include(\"${_GOOGLETEST_DISCOVER_TESTS_SCRIPT}\")"                      "\n"
+      "    gtest_discover_tests_impl("                                             "\n"
+      "      TEST_EXECUTABLE"        " [==[" "$<TARGET_FILE:${TARGET}>"   "]==]"   "\n"
+      "      TEST_EXECUTOR"          " [==[" "${crosscompiling_emulator}" "]==]"   "\n"
+      "      TEST_WORKING_DIR"       " [==[" "${_WORKING_DIRECTORY}"      "]==]"   "\n"
+      "      TEST_EXTRA_ARGS"        " [==[" "${_EXTRA_ARGS}"             "]==]"   "\n"
+      "      TEST_PROPERTIES"        " [==[" "${_PROPERTIES}"             "]==]"   "\n"
+      "      TEST_PREFIX"            " [==[" "${_TEST_PREFIX}"            "]==]"   "\n"
+      "      TEST_SUFFIX"            " [==[" "${_TEST_SUFFIX}"            "]==]"   "\n"
+      "      TEST_FILTER"            " [==[" "${_TEST_FILTER}"            "]==]"   "\n"
+      "      NO_PRETTY_TYPES"        " [==[" "${_NO_PRETTY_TYPES}"        "]==]"   "\n"
+      "      NO_PRETTY_VALUES"       " [==[" "${_NO_PRETTY_VALUES}"       "]==]"   "\n"
+      "      TEST_LIST"              " [==[" "${_TEST_LIST}"              "]==]"   "\n"
+      "      CTEST_FILE"             " [==[" "${ctest_tests_file}"        "]==]"   "\n"
+      "      TEST_DISCOVERY_TIMEOUT" " [==[" "${_DISCOVERY_TIMEOUT}"      "]==]"   "\n"
+      "      TEST_XML_OUTPUT_DIR"    " [==[" "${_XML_OUTPUT_DIR}"         "]==]"   "\n"
+      "    )"                                                                      "\n"
+      "  endif()"                                                                  "\n"
+      "  include(\"${ctest_tests_file}\")"                                         "\n"
+      "else()"                                                                     "\n"
+      "  add_test(${TARGET}_NOT_BUILT ${TARGET}_NOT_BUILT)"                        "\n"
+      "endif()"                                                                    "\n"
+    )
+
+    if(GENERATOR_IS_MULTI_CONFIG)
+      foreach(_config ${CMAKE_CONFIGURATION_TYPES})
+        file(GENERATE OUTPUT "${ctest_file_base}_include-${_config}.cmake" CONTENT "${ctest_include_content}" CONDITION $<CONFIG:${_config}>)
+      endforeach()
+      file(WRITE "${ctest_include_file}" "include(\"${ctest_file_base}_include-\${CTEST_CONFIGURATION_TYPE}.cmake\")")
+    else()
+      file(GENERATE OUTPUT "${ctest_file_base}_include.cmake" CONTENT "${ctest_include_content}")
+      file(WRITE "${ctest_include_file}" "include(\"${ctest_file_base}_include.cmake\")")
+    endif()
+
+  else()
+    message(FATAL_ERROR "Unknown DISCOVERY_MODE: ${_DISCOVERY_MODE}")
+  endif()
+
+  # Add discovered tests to directory TEST_INCLUDE_FILES
+  set_property(DIRECTORY
+    APPEND PROPERTY TEST_INCLUDE_FILES "${ctest_include_file}"
+  )
+
+endfunction()
+
+###############################################################################
+
+set(_GOOGLETEST_DISCOVER_TESTS_SCRIPT
+  ${CMAKE_CURRENT_LIST_DIR}/GoogleTestAddTests.cmake
+)
+
+# Restore project's policies
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/GoogleTestAddTests.cmake b/share/cmake-3.22/Modules/GoogleTestAddTests.cmake
new file mode 100644
index 0000000..6b3bf34
--- /dev/null
+++ b/share/cmake-3.22/Modules/GoogleTestAddTests.cmake
@@ -0,0 +1,195 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+cmake_minimum_required(VERSION ${CMAKE_VERSION})
+
+# Overwrite possibly existing ${_CTEST_FILE} with empty file
+set(flush_tests_MODE WRITE)
+
+# Flushes script to ${_CTEST_FILE}
+macro(flush_script)
+  file(${flush_tests_MODE} "${_CTEST_FILE}" "${script}")
+  set(flush_tests_MODE APPEND)
+
+  set(script "")
+endmacro()
+
+# Flushes tests_buffer to tests
+macro(flush_tests_buffer)
+  list(APPEND tests "${tests_buffer}")
+  set(tests_buffer "")
+endmacro()
+
+macro(add_command NAME)
+  set(_args "")
+  foreach(_arg ${ARGN})
+    if(_arg MATCHES "[^-./:a-zA-Z0-9_]")
+      string(APPEND _args " [==[${_arg}]==]")
+    else()
+      string(APPEND _args " ${_arg}")
+    endif()
+  endforeach()
+  string(APPEND script "${NAME}(${_args})\n")
+  string(LENGTH "${script}" _script_len)
+  if(${_script_len} GREATER "50000")
+    flush_script()
+  endif()
+  # Unsets macro local variables to prevent leakage outside of this macro.
+  unset(_args)
+  unset(_script_len)
+endmacro()
+
+function(gtest_discover_tests_impl)
+
+  cmake_parse_arguments(
+    ""
+    ""
+    "NO_PRETTY_TYPES;NO_PRETTY_VALUES;TEST_EXECUTABLE;TEST_WORKING_DIR;TEST_PREFIX;TEST_SUFFIX;TEST_LIST;CTEST_FILE;TEST_DISCOVERY_TIMEOUT;TEST_XML_OUTPUT_DIR;TEST_FILTER"
+    "TEST_EXTRA_ARGS;TEST_PROPERTIES;TEST_EXECUTOR"
+    ${ARGN}
+  )
+
+  set(prefix "${_TEST_PREFIX}")
+  set(suffix "${_TEST_SUFFIX}")
+  set(extra_args ${_TEST_EXTRA_ARGS})
+  set(properties ${_TEST_PROPERTIES})
+  set(script)
+  set(suite)
+  set(tests)
+  set(tests_buffer)
+
+  if(_TEST_FILTER)
+    set(filter "--gtest_filter=${_TEST_FILTER}")
+  else()
+    set(filter)
+  endif()
+
+  # Run test executable to get list of available tests
+  if(NOT EXISTS "${_TEST_EXECUTABLE}")
+    message(FATAL_ERROR
+      "Specified test executable does not exist.\n"
+      "  Path: '${_TEST_EXECUTABLE}'"
+    )
+  endif()
+  execute_process(
+    COMMAND ${_TEST_EXECUTOR} "${_TEST_EXECUTABLE}" --gtest_list_tests ${filter}
+    WORKING_DIRECTORY "${_TEST_WORKING_DIR}"
+    TIMEOUT ${_TEST_DISCOVERY_TIMEOUT}
+    OUTPUT_VARIABLE output
+    RESULT_VARIABLE result
+  )
+  if(NOT ${result} EQUAL 0)
+    string(REPLACE "\n" "\n    " output "${output}")
+    message(FATAL_ERROR
+      "Error running test executable.\n"
+      "  Path: '${_TEST_EXECUTABLE}'\n"
+      "  Result: ${result}\n"
+      "  Output:\n"
+      "    ${output}\n"
+    )
+  endif()
+
+  # Preserve semicolon in test-parameters
+  string(REPLACE [[;]] [[\;]] output "${output}")
+  string(REPLACE "\n" ";" output "${output}")
+
+  # Parse output
+  foreach(line ${output})
+    # Skip header
+    if(NOT line MATCHES "gtest_main\\.cc")
+      # Do we have a module name or a test name?
+      if(NOT line MATCHES "^  ")
+        # Module; remove trailing '.' to get just the name...
+        string(REGEX REPLACE "\\.( *#.*)?" "" suite "${line}")
+        if(line MATCHES "#" AND NOT _NO_PRETTY_TYPES)
+          string(REGEX REPLACE "/[0-9]\\.+ +#.*= +" "/" pretty_suite "${line}")
+        else()
+          set(pretty_suite "${suite}")
+        endif()
+        string(REGEX REPLACE "^DISABLED_" "" pretty_suite "${pretty_suite}")
+      else()
+        # Test name; strip spaces and comments to get just the name...
+        string(REGEX REPLACE " +" "" test "${line}")
+        if(test MATCHES "#" AND NOT _NO_PRETTY_VALUES)
+          string(REGEX REPLACE "/[0-9]+#GetParam..=" "/" pretty_test "${test}")
+        else()
+          string(REGEX REPLACE "#.*" "" pretty_test "${test}")
+        endif()
+        string(REGEX REPLACE "^DISABLED_" "" pretty_test "${pretty_test}")
+        string(REGEX REPLACE "#.*" "" test "${test}")
+        if(NOT "${_TEST_XML_OUTPUT_DIR}" STREQUAL "")
+          set(TEST_XML_OUTPUT_PARAM "--gtest_output=xml:${_TEST_XML_OUTPUT_DIR}/${prefix}${suite}.${test}${suffix}.xml")
+        else()
+          unset(TEST_XML_OUTPUT_PARAM)
+        endif()
+
+        # sanitize test name for further processing downstream
+        set(testname "${prefix}${pretty_suite}.${pretty_test}${suffix}")
+        # escape \
+        string(REPLACE [[\]] [[\\]] testname "${testname}")
+        # escape ;
+        string(REPLACE [[;]] [[\;]] testname "${testname}")
+        # escape $
+        string(REPLACE [[$]] [[\$]] testname "${testname}")
+
+        # ...and add to script
+        add_command(add_test
+          "${testname}"
+          ${_TEST_EXECUTOR}
+          "${_TEST_EXECUTABLE}"
+          "--gtest_filter=${suite}.${test}"
+          "--gtest_also_run_disabled_tests"
+          ${TEST_XML_OUTPUT_PARAM}
+          ${extra_args}
+        )
+        if(suite MATCHES "^DISABLED_" OR test MATCHES "^DISABLED_")
+          add_command(set_tests_properties
+            "${testname}"
+            PROPERTIES DISABLED TRUE
+          )
+        endif()
+        add_command(set_tests_properties
+          "${testname}"
+          PROPERTIES
+          WORKING_DIRECTORY "${_TEST_WORKING_DIR}"
+          SKIP_REGULAR_EXPRESSION "\\\\[  SKIPPED \\\\]"
+          ${properties}
+        )
+        list(APPEND tests_buffer "${testname}")
+        list(LENGTH tests_buffer tests_buffer_length)
+        if(${tests_buffer_length} GREATER "250")
+          flush_tests_buffer()
+        endif()
+      endif()
+    endif()
+  endforeach()
+
+
+  # Create a list of all discovered tests, which users may use to e.g. set
+  # properties on the tests
+  flush_tests_buffer()
+  add_command(set ${_TEST_LIST} ${tests})
+
+  # Write CTest script
+  flush_script()
+
+endfunction()
+
+if(CMAKE_SCRIPT_MODE_FILE)
+  gtest_discover_tests_impl(
+    NO_PRETTY_TYPES ${NO_PRETTY_TYPES}
+    NO_PRETTY_VALUES ${NO_PRETTY_VALUES}
+    TEST_EXECUTABLE ${TEST_EXECUTABLE}
+    TEST_EXECUTOR ${TEST_EXECUTOR}
+    TEST_WORKING_DIR ${TEST_WORKING_DIR}
+    TEST_PREFIX ${TEST_PREFIX}
+    TEST_SUFFIX ${TEST_SUFFIX}
+    TEST_FILTER ${TEST_FILTER}
+    TEST_LIST ${TEST_LIST}
+    CTEST_FILE ${CTEST_FILE}
+    TEST_DISCOVERY_TIMEOUT ${TEST_DISCOVERY_TIMEOUT}
+    TEST_XML_OUTPUT_DIR ${TEST_XML_OUTPUT_DIR}
+    TEST_EXTRA_ARGS ${TEST_EXTRA_ARGS}
+    TEST_PROPERTIES ${TEST_PROPERTIES}
+  )
+endif()
diff --git a/share/cmake-3.18/Modules/ITKCompatibility.cmake b/share/cmake-3.22/Modules/ITKCompatibility.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/ITKCompatibility.cmake
rename to share/cmake-3.22/Modules/ITKCompatibility.cmake
diff --git a/share/cmake-3.22/Modules/InstallRequiredSystemLibraries.cmake b/share/cmake-3.22/Modules/InstallRequiredSystemLibraries.cmake
new file mode 100644
index 0000000..689cab5
--- /dev/null
+++ b/share/cmake-3.22/Modules/InstallRequiredSystemLibraries.cmake
@@ -0,0 +1,809 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+InstallRequiredSystemLibraries
+------------------------------
+
+Include this module to search for compiler-provided system runtime
+libraries and add install rules for them.  Some optional variables
+may be set prior to including the module to adjust behavior:
+
+``CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS``
+  Specify additional runtime libraries that may not be detected.
+  After inclusion any detected libraries will be appended to this.
+
+``CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP``
+  Set to TRUE to skip calling the :command:`install(PROGRAMS)` command to
+  allow the includer to specify its own install rule, using the value of
+  ``CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS`` to get the list of libraries.
+
+``CMAKE_INSTALL_DEBUG_LIBRARIES``
+  Set to TRUE to install the debug runtime libraries when available
+  with MSVC tools.
+
+``CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY``
+  Set to TRUE to install only the debug runtime libraries with MSVC
+  tools even if the release runtime libraries are also available.
+
+``CMAKE_INSTALL_UCRT_LIBRARIES``
+  .. versionadded:: 3.6
+
+  Set to TRUE to install the Windows Universal CRT libraries for
+  app-local deployment (e.g. to Windows XP).  This is meaningful
+  only with MSVC from Visual Studio 2015 or higher.
+
+  .. versionadded:: 3.9
+    One may set a ``CMAKE_WINDOWS_KITS_10_DIR`` *environment variable*
+    to an absolute path to tell CMake to look for Windows 10 SDKs in
+    a custom location.  The specified directory is expected to contain
+    ``Redist/ucrt/DLLs/*`` directories.
+
+``CMAKE_INSTALL_MFC_LIBRARIES``
+  Set to TRUE to install the MSVC MFC runtime libraries.
+
+``CMAKE_INSTALL_OPENMP_LIBRARIES``
+  Set to TRUE to install the MSVC OpenMP runtime libraries
+
+``CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION``
+  Specify the :command:`install(PROGRAMS)` command ``DESTINATION``
+  option.  If not specified, the default is ``bin`` on Windows
+  and ``lib`` elsewhere.
+
+``CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS``
+  Set to TRUE to disable warnings about required library files that
+  do not exist.  (For example, Visual Studio Express editions may
+  not provide the redistributable files.)
+
+``CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT``
+  .. versionadded:: 3.3
+
+  Specify the :command:`install(PROGRAMS)` command ``COMPONENT``
+  option.  If not specified, no such option will be used.
+
+.. versionadded:: 3.10
+  Support for installing Intel compiler runtimes.
+#]=======================================================================]
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced
+
+set(_IRSL_HAVE_Intel FALSE)
+set(_IRSL_HAVE_MSVC FALSE)
+foreach(LANG IN ITEMS C CXX Fortran)
+  if("${CMAKE_${LANG}_COMPILER_ID}" MATCHES "Intel")
+    if(NOT _IRSL_HAVE_Intel)
+      # The oneAPI icx/ifx compilers are under ${os}/bin.
+      # The classic icc/icpc/icl/ifort compilers may be under ${os}/bin/intel64.
+      get_filename_component(_Intel_basedir "${CMAKE_${LANG}_COMPILER}" PATH)
+      if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+        set(_Intel_archdir intel64)
+      else()
+        set(_Intel_archdir ia32)
+      endif()
+      set(_Intel_compiler_ver ${CMAKE_${LANG}_COMPILER_VERSION})
+      if(WIN32)
+        set(_Intel_possible_redistdirs
+          "${_Intel_basedir}/../redist/${_Intel_archdir}_win/compiler"
+          "${_Intel_basedir}/../redist/${_Intel_archdir}/compiler"
+          "${_Intel_basedir}/../../redist/${_Intel_archdir}_win/compiler"
+          "${_Intel_basedir}/../../redist/${_Intel_archdir}/compiler"
+          )
+      elseif(APPLE)
+        set(_Intel_possible_redistdirs
+          "${_Intel_basedir}/../../compiler/lib"
+          )
+      else()
+        set(_Intel_possible_redistdirs
+          "${_Intel_basedir}/../lib/${_Intel_archdir}"
+          "${_Intel_basedir}/../../compiler/lib/${_Intel_archdir}_lin"
+          )
+      endif()
+
+      set(_Intel_redistdir NOT-FOUND)
+      foreach(dir IN LISTS _Intel_possible_redistdirs)
+        if(EXISTS "${dir}")
+          set(_Intel_redistdir "${dir}")
+          break()
+        endif()
+      endforeach()
+      # Fall back to last dir
+      if(NOT _Intel_redistdir)
+        list(POP_BACK _Intel_possible_redistdirs _Intel_redistdir)
+      endif()
+      unset(_Intel_possible_redistdirs)
+      set(_IRSL_HAVE_Intel TRUE)
+    endif()
+  elseif("${CMAKE_${LANG}_COMPILER_ID}" STREQUAL "MSVC")
+    set(_IRSL_HAVE_MSVC TRUE)
+  endif()
+endforeach()
+
+if(MSVC)
+  file(TO_CMAKE_PATH "$ENV{SYSTEMROOT}" SYSTEMROOT)
+
+  if(MSVC_C_ARCHITECTURE_ID)
+    string(TOLOWER "${MSVC_C_ARCHITECTURE_ID}" CMAKE_MSVC_ARCH)
+  elseif(MSVC_CXX_ARCHITECTURE_ID)
+    string(TOLOWER "${MSVC_CXX_ARCHITECTURE_ID}" CMAKE_MSVC_ARCH)
+  else()
+    set(CMAKE_MSVC_ARCH x86)
+  endif()
+  if(CMAKE_MSVC_ARCH STREQUAL "x64")
+    if(MSVC_VERSION LESS 1600)
+      # VS 9 and earlier:
+      set(CMAKE_MSVC_ARCH amd64)
+    endif()
+  endif()
+
+  get_filename_component(devenv_dir "${CMAKE_MAKE_PROGRAM}" PATH)
+  get_filename_component(base_dir "${devenv_dir}/../.." ABSOLUTE)
+
+  if(MSVC_VERSION EQUAL 1300)
+    set(__install__libs
+      "${SYSTEMROOT}/system32/msvcp70.dll"
+      "${SYSTEMROOT}/system32/msvcr70.dll"
+      )
+  endif()
+
+  if(MSVC_VERSION EQUAL 1310)
+    set(__install__libs
+      "${SYSTEMROOT}/system32/msvcp71.dll"
+      "${SYSTEMROOT}/system32/msvcr71.dll"
+      )
+  endif()
+
+  if(MSVC_TOOLSET_VERSION EQUAL 80)
+    # Find the runtime library redistribution directory.
+    get_filename_component(msvc_install_dir
+      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0;InstallDir]" ABSOLUTE)
+    if(DEFINED MSVC80_REDIST_DIR AND EXISTS "${MSVC80_REDIST_DIR}")
+      set(MSVC_REDIST_DIR "${MSVC80_REDIST_DIR}") # use old cache entry
+    endif()
+    find_path(MSVC_REDIST_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest
+      PATHS
+        "${msvc_install_dir}/../../VC/redist"
+        "${base_dir}/VC/redist"
+      )
+    mark_as_advanced(MSVC_REDIST_DIR)
+    set(MSVC_CRT_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC80.CRT")
+
+    # Install the manifest that allows DLLs to be loaded from the
+    # directory containing the executable.
+    if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+      set(__install__libs
+        "${MSVC_CRT_DIR}/Microsoft.VC80.CRT.manifest"
+        "${MSVC_CRT_DIR}/msvcm80.dll"
+        "${MSVC_CRT_DIR}/msvcp80.dll"
+        "${MSVC_CRT_DIR}/msvcr80.dll"
+        )
+    else()
+      set(__install__libs)
+    endif()
+
+    if(CMAKE_INSTALL_DEBUG_LIBRARIES)
+      set(MSVC_CRT_DIR
+        "${MSVC_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC80.DebugCRT")
+      set(__install__libs ${__install__libs}
+        "${MSVC_CRT_DIR}/Microsoft.VC80.DebugCRT.manifest"
+        "${MSVC_CRT_DIR}/msvcm80d.dll"
+        "${MSVC_CRT_DIR}/msvcp80d.dll"
+        "${MSVC_CRT_DIR}/msvcr80d.dll"
+        )
+    endif()
+  endif()
+
+  if(MSVC_TOOLSET_VERSION EQUAL 90)
+    # Find the runtime library redistribution directory.
+    get_filename_component(msvc_install_dir
+      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0;InstallDir]" ABSOLUTE)
+    get_filename_component(msvc_express_install_dir
+      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\9.0;InstallDir]" ABSOLUTE)
+    if(DEFINED MSVC90_REDIST_DIR AND EXISTS "${MSVC90_REDIST_DIR}")
+      set(MSVC_REDIST_DIR "${MSVC90_REDIST_DIR}") # use old cache entry
+    endif()
+    find_path(MSVC_REDIST_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.VC90.CRT/Microsoft.VC90.CRT.manifest
+      PATHS
+        "${msvc_install_dir}/../../VC/redist"
+        "${msvc_express_install_dir}/../../VC/redist"
+        "${base_dir}/VC/redist"
+      )
+    mark_as_advanced(MSVC_REDIST_DIR)
+    set(MSVC_CRT_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC90.CRT")
+
+    # Install the manifest that allows DLLs to be loaded from the
+    # directory containing the executable.
+    if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+      set(__install__libs
+        "${MSVC_CRT_DIR}/Microsoft.VC90.CRT.manifest"
+        "${MSVC_CRT_DIR}/msvcm90.dll"
+        "${MSVC_CRT_DIR}/msvcp90.dll"
+        "${MSVC_CRT_DIR}/msvcr90.dll"
+        )
+    else()
+      set(__install__libs)
+    endif()
+
+    if(CMAKE_INSTALL_DEBUG_LIBRARIES)
+      set(MSVC_CRT_DIR
+        "${MSVC_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC90.DebugCRT")
+      set(__install__libs ${__install__libs}
+        "${MSVC_CRT_DIR}/Microsoft.VC90.DebugCRT.manifest"
+        "${MSVC_CRT_DIR}/msvcm90d.dll"
+        "${MSVC_CRT_DIR}/msvcp90d.dll"
+        "${MSVC_CRT_DIR}/msvcr90d.dll"
+        )
+    endif()
+  endif()
+
+  set(MSVC_REDIST_NAME "")
+  set(_MSVC_DLL_VERSION "")
+  set(_MSVC_IDE_VERSION "")
+  if(MSVC_VERSION GREATER_EQUAL 2000)
+    message(WARNING "MSVC ${MSVC_VERSION} not yet supported.")
+  elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 144)
+    message(WARNING "MSVC toolset v${MSVC_TOOLSET_VERSION} not yet supported.")
+  elseif(MSVC_TOOLSET_VERSION EQUAL 143)
+    set(MSVC_REDIST_NAME VC143)
+    set(_MSVC_DLL_VERSION 140)
+    set(_MSVC_IDE_VERSION 17)
+  elseif(MSVC_TOOLSET_VERSION EQUAL 142)
+    set(MSVC_REDIST_NAME VC142)
+    set(_MSVC_DLL_VERSION 140)
+    set(_MSVC_IDE_VERSION 16)
+    if(MSVC_VERSION EQUAL 1920)
+      # VS2019 named this differently prior to update 1.
+      set(MSVC_REDIST_NAME VC141)
+    endif()
+  elseif(MSVC_TOOLSET_VERSION EQUAL 141)
+    set(MSVC_REDIST_NAME VC141)
+    set(_MSVC_DLL_VERSION 140)
+    set(_MSVC_IDE_VERSION 15)
+    if(MSVC_VERSION EQUAL 1910)
+      # VS2017 named this differently prior to update 3.
+      set(MSVC_REDIST_NAME VC150)
+    endif()
+  elseif(MSVC_TOOLSET_VERSION)
+    set(MSVC_REDIST_NAME VC${MSVC_TOOLSET_VERSION})
+    math(EXPR _MSVC_DLL_VERSION "${MSVC_TOOLSET_VERSION} / 10 * 10")
+    math(EXPR _MSVC_IDE_VERSION "${MSVC_TOOLSET_VERSION} / 10")
+  endif()
+
+  set(_MSVCRT_DLL_VERSION "")
+  set(_MSVCRT_IDE_VERSION "")
+  if(_MSVC_IDE_VERSION GREATER_EQUAL 10)
+    set(_MSVCRT_DLL_VERSION "${_MSVC_DLL_VERSION}")
+    set(_MSVCRT_IDE_VERSION "${_MSVC_IDE_VERSION}")
+  endif()
+
+  if(_MSVCRT_DLL_VERSION)
+    set(v "${_MSVCRT_DLL_VERSION}")
+    set(vs "${_MSVCRT_IDE_VERSION}")
+
+    # Find the runtime library redistribution directory.
+    if(vs VERSION_LESS 15 AND DEFINED MSVC${vs}_REDIST_DIR AND EXISTS "${MSVC${vs}_REDIST_DIR}")
+      set(MSVC_REDIST_DIR "${MSVC${vs}_REDIST_DIR}") # use old cache entry
+    endif()
+    if(NOT vs VERSION_LESS 15)
+      set(_vs_redist_paths "")
+      # The toolset and its redistributables may come with any VS version 15 or newer.
+      set(_MSVC_IDE_VERSIONS 17 16 15)
+      foreach(_vs_ver ${_MSVC_IDE_VERSIONS})
+        set(_vs_glob_redist_paths "")
+        cmake_host_system_information(RESULT _vs_dir QUERY VS_${_vs_ver}_DIR) # undocumented query
+        if(IS_DIRECTORY "${_vs_dir}")
+          file(GLOB _vs_glob_redist_paths "${_vs_dir}/VC/Redist/MSVC/*")
+          list(REVERSE _vs_glob_redist_paths)
+          list(APPEND _vs_redist_paths ${_vs_glob_redist_paths})
+        endif()
+        unset(_vs_glob_redist_paths)
+      endforeach()
+      unset(_MSVC_IDE_VERSIONS)
+      unset(_vs_dir)
+    else()
+      get_filename_component(_vs_dir
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${vs}.0;InstallDir]" ABSOLUTE)
+      set(programfilesx86 "ProgramFiles(x86)")
+      set(_vs_redist_paths
+        "${_vs_dir}/../../VC/redist"
+        "${base_dir}/VC/redist"
+        "$ENV{ProgramFiles}/Microsoft Visual Studio ${vs}.0/VC/redist"
+        "$ENV{${programfilesx86}}/Microsoft Visual Studio ${vs}.0/VC/redist"
+        )
+      unset(_vs_dir)
+      unset(programfilesx86)
+    endif()
+    find_path(MSVC_REDIST_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.CRT PATHS ${_vs_redist_paths})
+    unset(_vs_redist_paths)
+    mark_as_advanced(MSVC_REDIST_DIR)
+    set(MSVC_CRT_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.CRT")
+
+    if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+      set(__install__libs
+        "${MSVC_CRT_DIR}/msvcp${v}.dll"
+        )
+      if(NOT vs VERSION_LESS 14)
+        foreach(crt
+            "${MSVC_CRT_DIR}/msvcp${v}_1.dll"
+            "${MSVC_CRT_DIR}/msvcp${v}_2.dll"
+            "${MSVC_CRT_DIR}/msvcp${v}_atomic_wait.dll"
+            "${MSVC_CRT_DIR}/msvcp${v}_codecvt_ids.dll"
+            "${MSVC_CRT_DIR}/vcruntime${v}_1.dll"
+            )
+          if(EXISTS "${crt}")
+            list(APPEND __install__libs "${crt}")
+          endif()
+        endforeach()
+        list(APPEND __install__libs
+            "${MSVC_CRT_DIR}/vcruntime${v}.dll"
+            "${MSVC_CRT_DIR}/concrt${v}.dll"
+            )
+      else()
+        list(APPEND __install__libs "${MSVC_CRT_DIR}/msvcr${v}.dll")
+      endif()
+    else()
+      set(__install__libs)
+    endif()
+
+    if(CMAKE_INSTALL_DEBUG_LIBRARIES)
+      set(MSVC_CRT_DIR
+        "${MSVC_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.DebugCRT")
+      set(__install__libs ${__install__libs}
+        "${MSVC_CRT_DIR}/msvcp${v}d.dll"
+        )
+      if(NOT vs VERSION_LESS 14)
+        foreach(crt
+            "${MSVC_CRT_DIR}/msvcp${v}_1d.dll"
+            "${MSVC_CRT_DIR}/msvcp${v}_2d.dll"
+            "${MSVC_CRT_DIR}/msvcp${v}d_atomic_wait.dll"
+            "${MSVC_CRT_DIR}/msvcp${v}d_codecvt_ids.dll"
+            "${MSVC_CRT_DIR}/vcruntime${v}_1d.dll"
+            )
+          if(EXISTS "${crt}")
+            list(APPEND __install__libs "${crt}")
+          endif()
+        endforeach()
+        list(APPEND __install__libs
+            "${MSVC_CRT_DIR}/vcruntime${v}d.dll"
+            "${MSVC_CRT_DIR}/concrt${v}d.dll"
+            )
+      else()
+        list(APPEND __install__libs "${MSVC_CRT_DIR}/msvcr${v}d.dll")
+      endif()
+    endif()
+
+    if(CMAKE_INSTALL_UCRT_LIBRARIES AND NOT vs VERSION_LESS 14)
+      # Find the Windows Kits directory.
+      get_filename_component(windows_kits_dir
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]" ABSOLUTE)
+      set(programfilesx86 "ProgramFiles(x86)")
+      if(";${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION};$ENV{UCRTVersion};$ENV{WindowsSDKVersion};" MATCHES [=[;(10\.[0-9.]+)[;\]]=])
+        set(__ucrt_version "${CMAKE_MATCH_1}/")
+      else()
+        set(__ucrt_version "")
+      endif()
+      find_path(WINDOWS_KITS_DIR
+        NAMES
+          Redist/${__ucrt_version}ucrt/DLLs/${CMAKE_MSVC_ARCH}/ucrtbase.dll
+          Redist/ucrt/DLLs/${CMAKE_MSVC_ARCH}/ucrtbase.dll
+        PATHS
+        $ENV{CMAKE_WINDOWS_KITS_10_DIR}
+        "${windows_kits_dir}"
+        "$ENV{ProgramFiles}/Windows Kits/10"
+        "$ENV{${programfilesx86}}/Windows Kits/10"
+        )
+      mark_as_advanced(WINDOWS_KITS_DIR)
+
+      # Glob the list of UCRT DLLs.
+      if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+        if(EXISTS "${WINDOWS_KITS_DIR}/Redist/${__ucrt_version}ucrt/DLLs/${CMAKE_MSVC_ARCH}/ucrtbase.dll")
+          file(GLOB __ucrt_dlls "${WINDOWS_KITS_DIR}/Redist/${__ucrt_version}ucrt/DLLs/${CMAKE_MSVC_ARCH}/*.dll")
+        else()
+          file(GLOB __ucrt_dlls "${WINDOWS_KITS_DIR}/Redist/ucrt/DLLs/${CMAKE_MSVC_ARCH}/*.dll")
+        endif()
+        list(APPEND __install__libs ${__ucrt_dlls})
+      endif()
+      if(CMAKE_INSTALL_DEBUG_LIBRARIES)
+        if(EXISTS "${WINDOWS_KITS_DIR}/bin/${__ucrt_version}${CMAKE_MSVC_ARCH}/ucrt/ucrtbased.dll")
+          file(GLOB __ucrt_dlls "${WINDOWS_KITS_DIR}/bin/${__ucrt_version}${CMAKE_MSVC_ARCH}/ucrt/*.dll")
+        else()
+          file(GLOB __ucrt_dlls "${WINDOWS_KITS_DIR}/bin/${CMAKE_MSVC_ARCH}/ucrt/*.dll")
+        endif()
+        list(APPEND __install__libs ${__ucrt_dlls})
+      endif()
+    endif()
+  endif()
+
+  if(CMAKE_INSTALL_MFC_LIBRARIES)
+    if(MSVC_VERSION EQUAL 1300)
+      set(__install__libs ${__install__libs}
+        "${SYSTEMROOT}/system32/mfc70.dll"
+        )
+    endif()
+
+    if(MSVC_VERSION EQUAL 1310)
+      set(__install__libs ${__install__libs}
+        "${SYSTEMROOT}/system32/mfc71.dll"
+        )
+    endif()
+
+    if(MSVC_VERSION EQUAL 1400)
+      if(CMAKE_INSTALL_DEBUG_LIBRARIES)
+        set(MSVC_MFC_DIR
+          "${MSVC_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC80.DebugMFC")
+        set(__install__libs ${__install__libs}
+          "${MSVC_MFC_DIR}/Microsoft.VC80.DebugMFC.manifest"
+          "${MSVC_MFC_DIR}/mfc80d.dll"
+          "${MSVC_MFC_DIR}/mfc80ud.dll"
+          "${MSVC_MFC_DIR}/mfcm80d.dll"
+          "${MSVC_MFC_DIR}/mfcm80ud.dll"
+          )
+      endif()
+
+      set(MSVC_MFC_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC80.MFC")
+      # Install the manifest that allows DLLs to be loaded from the
+      # directory containing the executable.
+      if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+        set(__install__libs ${__install__libs}
+          "${MSVC_MFC_DIR}/Microsoft.VC80.MFC.manifest"
+          "${MSVC_MFC_DIR}/mfc80.dll"
+          "${MSVC_MFC_DIR}/mfc80u.dll"
+          "${MSVC_MFC_DIR}/mfcm80.dll"
+          "${MSVC_MFC_DIR}/mfcm80u.dll"
+          )
+      endif()
+
+      # include the language dll's for vs8 as well as the actual dll's
+      set(MSVC_MFCLOC_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC80.MFCLOC")
+      # Install the manifest that allows DLLs to be loaded from the
+      # directory containing the executable.
+      set(__install__libs ${__install__libs}
+        "${MSVC_MFCLOC_DIR}/Microsoft.VC80.MFCLOC.manifest"
+        "${MSVC_MFCLOC_DIR}/mfc80chs.dll"
+        "${MSVC_MFCLOC_DIR}/mfc80cht.dll"
+        "${MSVC_MFCLOC_DIR}/mfc80enu.dll"
+        "${MSVC_MFCLOC_DIR}/mfc80esp.dll"
+        "${MSVC_MFCLOC_DIR}/mfc80deu.dll"
+        "${MSVC_MFCLOC_DIR}/mfc80fra.dll"
+        "${MSVC_MFCLOC_DIR}/mfc80ita.dll"
+        "${MSVC_MFCLOC_DIR}/mfc80jpn.dll"
+        "${MSVC_MFCLOC_DIR}/mfc80kor.dll"
+        )
+    endif()
+
+    if(MSVC_VERSION EQUAL 1500)
+      if(CMAKE_INSTALL_DEBUG_LIBRARIES)
+        set(MSVC_MFC_DIR
+          "${MSVC_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC90.DebugMFC")
+        set(__install__libs ${__install__libs}
+          "${MSVC_MFC_DIR}/Microsoft.VC90.DebugMFC.manifest"
+          "${MSVC_MFC_DIR}/mfc90d.dll"
+          "${MSVC_MFC_DIR}/mfc90ud.dll"
+          "${MSVC_MFC_DIR}/mfcm90d.dll"
+          "${MSVC_MFC_DIR}/mfcm90ud.dll"
+          )
+      endif()
+
+      set(MSVC_MFC_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC90.MFC")
+      # Install the manifest that allows DLLs to be loaded from the
+      # directory containing the executable.
+      if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+        set(__install__libs ${__install__libs}
+          "${MSVC_MFC_DIR}/Microsoft.VC90.MFC.manifest"
+          "${MSVC_MFC_DIR}/mfc90.dll"
+          "${MSVC_MFC_DIR}/mfc90u.dll"
+          "${MSVC_MFC_DIR}/mfcm90.dll"
+          "${MSVC_MFC_DIR}/mfcm90u.dll"
+          )
+      endif()
+
+      # include the language dll's for vs9 as well as the actual dll's
+      set(MSVC_MFCLOC_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC90.MFCLOC")
+      # Install the manifest that allows DLLs to be loaded from the
+      # directory containing the executable.
+      set(__install__libs ${__install__libs}
+        "${MSVC_MFCLOC_DIR}/Microsoft.VC90.MFCLOC.manifest"
+        "${MSVC_MFCLOC_DIR}/mfc90chs.dll"
+        "${MSVC_MFCLOC_DIR}/mfc90cht.dll"
+        "${MSVC_MFCLOC_DIR}/mfc90enu.dll"
+        "${MSVC_MFCLOC_DIR}/mfc90esp.dll"
+        "${MSVC_MFCLOC_DIR}/mfc90deu.dll"
+        "${MSVC_MFCLOC_DIR}/mfc90fra.dll"
+        "${MSVC_MFCLOC_DIR}/mfc90ita.dll"
+        "${MSVC_MFCLOC_DIR}/mfc90jpn.dll"
+        "${MSVC_MFCLOC_DIR}/mfc90kor.dll"
+        )
+    endif()
+
+    set(_MFC_DLL_VERSION "")
+    set(_MFC_IDE_VERSION "")
+    if(_MSVC_IDE_VERSION GREATER_EQUAL 10)
+      set(_MFC_DLL_VERSION ${_MSVC_DLL_VERSION})
+      set(_MFC_IDE_VERSION ${_MSVC_IDE_VERSION})
+    endif()
+
+    if(_MFC_DLL_VERSION)
+      set(v "${_MFC_DLL_VERSION}")
+      set(vs "${_MFC_IDE_VERSION}")
+
+      # Starting with VS 15 the MFC DLLs may be in a different directory.
+      if (NOT vs VERSION_LESS 15)
+        file(GLOB _MSVC_REDIST_DIRS "${MSVC_REDIST_DIR}/../*")
+        find_path(MSVC_REDIST_MFC_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.MFC
+          PATHS ${_MSVC_REDIST_DIRS} NO_DEFAULT_PATH)
+        mark_as_advanced(MSVC_REDIST_MFC_DIR)
+        unset(_MSVC_REDIST_DIRS)
+      else()
+        set(MSVC_REDIST_MFC_DIR "${MSVC_REDIST_DIR}")
+      endif()
+
+      # Multi-Byte Character Set versions of MFC are available as optional
+      # addon since Visual Studio 12.  So for version 12 or higher, check
+      # whether they are available and exclude them if they are not.
+
+      if(CMAKE_INSTALL_DEBUG_LIBRARIES)
+        set(MSVC_MFC_DIR
+          "${MSVC_REDIST_MFC_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.DebugMFC")
+        set(__install__libs ${__install__libs}
+          "${MSVC_MFC_DIR}/mfc${v}ud.dll"
+          "${MSVC_MFC_DIR}/mfcm${v}ud.dll"
+          )
+        if("${v}" LESS 12 OR EXISTS "${MSVC_MFC_DIR}/mfc${v}d.dll")
+          set(__install__libs ${__install__libs}
+            "${MSVC_MFC_DIR}/mfc${v}d.dll"
+          )
+        endif()
+        if("${v}" LESS 12 OR EXISTS "${MSVC_MFC_DIR}/mfcm${v}d.dll")
+          set(__install__libs ${__install__libs}
+            "${MSVC_MFC_DIR}/mfcm${v}d.dll"
+          )
+        endif()
+      endif()
+
+      set(MSVC_MFC_DIR "${MSVC_REDIST_MFC_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.MFC")
+      if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+        set(__install__libs ${__install__libs}
+          "${MSVC_MFC_DIR}/mfc${v}u.dll"
+          "${MSVC_MFC_DIR}/mfcm${v}u.dll"
+          )
+        if("${v}" LESS 12 OR EXISTS "${MSVC_MFC_DIR}/mfc${v}.dll")
+          set(__install__libs ${__install__libs}
+            "${MSVC_MFC_DIR}/mfc${v}.dll"
+          )
+        endif()
+        if("${v}" LESS 12 OR EXISTS "${MSVC_MFC_DIR}/mfcm${v}.dll")
+          set(__install__libs ${__install__libs}
+            "${MSVC_MFC_DIR}/mfcm${v}.dll"
+          )
+        endif()
+      endif()
+
+      # include the language dll's as well as the actual dll's
+      set(MSVC_MFCLOC_DIR "${MSVC_REDIST_MFC_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.MFCLOC")
+      set(__install__libs ${__install__libs}
+        "${MSVC_MFCLOC_DIR}/mfc${v}chs.dll"
+        "${MSVC_MFCLOC_DIR}/mfc${v}cht.dll"
+        "${MSVC_MFCLOC_DIR}/mfc${v}deu.dll"
+        "${MSVC_MFCLOC_DIR}/mfc${v}enu.dll"
+        "${MSVC_MFCLOC_DIR}/mfc${v}esn.dll"
+        "${MSVC_MFCLOC_DIR}/mfc${v}fra.dll"
+        "${MSVC_MFCLOC_DIR}/mfc${v}ita.dll"
+        "${MSVC_MFCLOC_DIR}/mfc${v}jpn.dll"
+        "${MSVC_MFCLOC_DIR}/mfc${v}kor.dll"
+        "${MSVC_MFCLOC_DIR}/mfc${v}rus.dll"
+        )
+    endif()
+  endif()
+
+  # MSVC 8 was the first version with OpenMP
+  # Furthermore, there is no debug version of this
+  if(CMAKE_INSTALL_OPENMP_LIBRARIES AND _IRSL_HAVE_MSVC)
+    set(_MSOMP_DLL_VERSION ${_MSVC_DLL_VERSION})
+    set(_MSOMP_IDE_VERSION ${_MSVC_IDE_VERSION})
+
+    if(_MSOMP_DLL_VERSION)
+      set(v "${_MSOMP_DLL_VERSION}")
+      set(vs "${_MSOMP_IDE_VERSION}")
+      set(MSVC_OPENMP_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.OPENMP")
+
+      if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
+        set(__install__libs ${__install__libs}
+          "${MSVC_OPENMP_DIR}/vcomp${v}.dll")
+      endif()
+    endif()
+  endif()
+
+  foreach(lib
+      ${__install__libs}
+      )
+    if(EXISTS ${lib})
+      set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS
+        ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} ${lib})
+    else()
+      if(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
+        message(WARNING "system runtime library file does not exist: '${lib}'")
+        # This warning indicates an incomplete Visual Studio installation
+        # or a bug somewhere above here in this file.
+        # If you would like to avoid this warning, fix the real problem, or
+        # set CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS before including
+        # this file.
+      endif()
+    endif()
+  endforeach()
+endif()
+
+if(_IRSL_HAVE_Intel)
+  unset(__install_libs)
+  if(CMAKE_INSTALL_OPENMP_LIBRARIES)
+    if(WIN32)
+      list(APPEND __install_libs "${_Intel_redistdir}/libiomp5md.dll" "${_Intel_redistdir}/libiompstubs5md.dll")
+    elseif(APPLE)
+      list(APPEND __install_libs "${_Intel_redistdir}/libiomp5.dylib" "${_Intel_redistdir}/libiompstubs5.dylib")
+    else()
+      list(APPEND __install_libs "${_Intel_redistdir}/libiomp5.so" "${_Intel_redistdir}/libiompstubs5.so")
+      if(_Intel_compiler_ver VERSION_LESS 17)
+        list(APPEND __install_libs "${_Intel_redistdir}/libomp_db.so")
+      endif()
+      if(_Intel_compiler_ver VERSION_LESS 13)
+        list(APPEND __install_libs "${_Intel_redistdir}/libiompprof5.so")
+      endif()
+    endif()
+  endif()
+  if(WIN32)
+    set(__install_dirs "${_Intel_redistdir}/1033")
+    if(EXISTS "${_Intel_redistdir}/1041")
+      list(APPEND __install_dirs "${_Intel_redistdir}/1041")
+    endif()
+    if(_Intel_compiler_ver VERSION_LESS 18)
+      list(APPEND __install_dirs "${_Intel_redistdir}/irml" "${_Intel_redistdir}/irml_c")
+    endif()
+    foreach(__Intel_lib IN ITEMS cilkrts20.dll libchkp.dll libioffload_host.dll libirngmd.dll
+      libmmd.dll libmmdd.dll libmpx.dll liboffload.dll svml_dispmd.dll)
+
+      list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+    endforeach()
+    if(CMAKE_C_COMPILER_ID MATCHES Intel OR CMAKE_CXX_COMPILER_ID MATCHES Intel)
+      list(APPEND __install_libs "${_Intel_redistdir}/libgfxoffload.dll")
+    endif()
+    if(CMAKE_Fortran_COMPILER_ID MATCHES Intel)
+      foreach(__Intel_lib IN ITEMS ifdlg100.dll libicaf.dll libifcoremd.dll libifcoremdd.dll libifcorert.dll libifcorertd.dll libifportmd.dll)
+
+        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+      endforeach()
+    endif()
+  elseif(APPLE)
+    foreach(__Intel_lib IN ITEMS libchkp.dylib libcilkrts.5.dylib libcilkrts.dylib libimf.dylib libintlc.dylib libirc.dylib libirng.dylib libsvml.dylib)
+      list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+    endforeach()
+    if(CMAKE_C_COMPILER_ID MATCHES Intel OR CMAKE_CXX_COMPILER_ID MATCHES Intel)
+      if(_Intel_compiler_ver VERSION_LESS 17)
+        list(APPEND __install_libs "${_Intel_redistdir}/libistrconv.dylib")
+      endif()
+    endif()
+    if(CMAKE_Fortran_COMPILER_ID MATCHES Intel)
+      foreach(__Intel_lib IN ITEMS libifcore.dylib libifcoremt.dylib libifport.dylib libifportmt.dylib)
+
+        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+      endforeach()
+    endif()
+  else()
+    foreach(__Intel_lib IN ITEMS libchkp.so libcilkrts.so libcilkrts.so.5 libimf.so libintlc.so libintlc.so.5 libirc.so libpdbx.so libpdbx.so.5 libsvml.so)
+
+      list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+    endforeach()
+    if(_Intel_compiler_ver VERSION_GREATER_EQUAL 13)
+      foreach(__Intel_lib IN ITEMS libirng.so liboffload.so liboffload.so.5)
+
+        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+      endforeach()
+    endif()
+    if(CMAKE_C_COMPILER_ID MATCHES Intel OR CMAKE_CXX_COMPILER_ID MATCHES Intel)
+      set(__install_dirs "${_Intel_redistdir}/irml")
+      list(APPEND __install_libs "${_Intel_redistdir}/cilk_db.so")
+      if(_Intel_compiler_ver VERSION_GREATER_EQUAL 15)
+        list(APPEND __install_libs "${_Intel_redistdir}/libistrconv.so" "${_Intel_redistdir}/libgfxoffload.so")
+      endif()
+    endif()
+    if(_Intel_compiler_ver VERSION_GREATER_EQUAL 16)
+      foreach(__Intel_lib IN ITEMS libioffload_host.so libioffload_host.so.5 libioffload_target.so libioffload_target.so.5 libmpx.so offload_main)
+
+        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+      endforeach()
+    endif()
+    if(_Intel_compiler_ver VERSION_LESS 15)
+      foreach(__Intel_lib IN ITEMS libcxaguard.so libcxaguard.so.5)
+
+        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+      endforeach()
+    endif()
+    if(CMAKE_Fortran_COMPILER_ID MATCHES Intel)
+      foreach(__Intel_lib IN ITEMS libicaf.so libifcore.so libifcore.so.5 libifcoremt.so libifcoremt.so.5 libifport.so libifport.so.5)
+
+        list(APPEND __install_libs "${_Intel_redistdir}/${__Intel_lib}")
+      endforeach()
+    endif()
+  endif()
+
+  foreach(lib IN LISTS __install_libs)
+    if(EXISTS ${lib})
+      list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${lib})
+    else()
+      if(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
+        message(WARNING "system runtime library file does not exist: '${lib}'")
+      endif()
+    endif()
+  endforeach()
+
+  foreach(dir IN LISTS __install_dirs)
+    if(EXISTS ${dir})
+      list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_DIRECTORIES ${dir})
+    else()
+      if(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
+        message(WARNING "system runtime library file does not exist: '${dir}'")
+      endif()
+    endif()
+  endforeach()
+endif()
+
+if(WATCOM)
+  get_filename_component( CompilerPath ${CMAKE_C_COMPILER} PATH )
+  if(CMAKE_C_COMPILER_VERSION)
+    set(_compiler_version ${CMAKE_C_COMPILER_VERSION})
+  else()
+    set(_compiler_version ${CMAKE_CXX_COMPILER_VERSION})
+  endif()
+  string(REGEX MATCHALL "[0-9]+" _watcom_version_list "${_compiler_version}")
+  list(GET _watcom_version_list 0 _watcom_major)
+  list(GET _watcom_version_list 1 _watcom_minor)
+  set( __install__libs
+    ${CompilerPath}/clbr${_watcom_major}${_watcom_minor}.dll
+    ${CompilerPath}/mt7r${_watcom_major}${_watcom_minor}.dll
+    ${CompilerPath}/plbr${_watcom_major}${_watcom_minor}.dll )
+  foreach(lib
+      ${__install__libs}
+      )
+    if(EXISTS ${lib})
+      set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS
+        ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} ${lib})
+    else()
+      if(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
+        message(WARNING "system runtime library file does not exist: '${lib}'")
+        # This warning indicates an incomplete Watcom installation
+        # or a bug somewhere above here in this file.
+        # If you would like to avoid this warning, fix the real problem, or
+        # set CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS before including
+        # this file.
+      endif()
+    endif()
+  endforeach()
+endif()
+
+
+# Include system runtime libraries in the installation if any are
+# specified by CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS.
+if(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS)
+  if(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP)
+    if(NOT CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION)
+      if(WIN32)
+        set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION bin)
+      else()
+        set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION lib)
+      endif()
+    endif()
+    if(CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT)
+      set(_CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT
+        COMPONENT ${CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT})
+    endif()
+    install(PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}
+      DESTINATION ${CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION}
+      ${_CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT}
+      )
+
+    install(DIRECTORY ${CMAKE_INSTALL_SYSTEM_RUNTIME_DIRECTORIES}
+      DESTINATION ${CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION}
+      ${_CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT}
+      )
+  endif()
+endif()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/IntelVSImplicitPath/CMakeLists.txt b/share/cmake-3.22/Modules/IntelVSImplicitPath/CMakeLists.txt
similarity index 100%
rename from share/cmake-3.18/Modules/IntelVSImplicitPath/CMakeLists.txt
rename to share/cmake-3.22/Modules/IntelVSImplicitPath/CMakeLists.txt
diff --git a/share/cmake-3.18/Modules/IntelVSImplicitPath/detect.cmake b/share/cmake-3.22/Modules/IntelVSImplicitPath/detect.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/IntelVSImplicitPath/detect.cmake
rename to share/cmake-3.22/Modules/IntelVSImplicitPath/detect.cmake
diff --git a/share/cmake-3.18/Modules/IntelVSImplicitPath/hello.f b/share/cmake-3.22/Modules/IntelVSImplicitPath/hello.f
similarity index 100%
rename from share/cmake-3.18/Modules/IntelVSImplicitPath/hello.f
rename to share/cmake-3.22/Modules/IntelVSImplicitPath/hello.f
diff --git a/share/cmake-3.22/Modules/Internal/CMakeTryCompilerOrLinkerFlag.cmake b/share/cmake-3.22/Modules/Internal/CMakeTryCompilerOrLinkerFlag.cmake
new file mode 100644
index 0000000..d6fa5f0
--- /dev/null
+++ b/share/cmake-3.22/Modules/Internal/CMakeTryCompilerOrLinkerFlag.cmake
@@ -0,0 +1,158 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=[
+
+NOTE: This function is used internally by CMake. Projects should not include
+      this file directly.
+
+The cmake_try_compiler_or_linker_flag() function can be used to compile and link a
+source file to check whether a specific compiler or linker flag is supported.
+The function does not use the try_compile() command so as to avoid infinite
+recursion.  It may not work for all platforms or toolchains, the caller is
+responsible for ensuring it is only called in valid situations.
+
+  cmake_try_compiler_or_linker_flag(<lang> <flag> <result>
+                            [SRC_EXT <ext>] [COMMAND_PATTERN <pattern>]
+                            [FAIL_REGEX <regex> ...]
+                            [OUTPUT_VARIABLE <output>])
+
+Parameters:
+  <lang>   - Language to check.
+  <flag>   - The flag to add to the compile/link command line.
+  <result> - Boolean output variable.  It will be stored in the cache as an
+             internal variable and if true, will cause future tests that assign
+             to that variable to be bypassed.
+
+Optional parameters:
+  SRC_EXT         - Overrides the extension of the source file used for the
+                    check.  Defaults are 'c' (C), 'cxx' (CXX), 'F' (Fortran).
+  COMMAND_PATTERN - Pattern to be used for the command line. The default is
+                    '<FLAG> -o <OUTPUT> <SOURCE>'
+  FAIL_REGEX      - List of additional regular expressions that, if matched by
+                    the output, give a failed result for the check.  A common
+                    set of regular expressions will be included in addition to
+                    those given by FAIL_REGEX.
+  OUTPUT_VARIABLE - Set <output> variable with details about any error.
+#]=]
+
+include_guard(GLOBAL)
+include(CMakeCheckCompilerFlagCommonPatterns)
+
+function(CMAKE_TRY_COMPILER_OR_LINKER_FLAG lang flag result)
+  # Cache results between runs similar to check_<lang>_source_compiles()
+  if(DEFINED ${result})
+    return()
+  endif()
+
+  set(comment "Is the '${flag}' option(s) supported")
+  string(REPLACE ";" " " comment "${comment}")
+
+  if (NOT lang MATCHES "^(C|CXX|Fortran|ASM)$")
+    # other possible languages are not supported
+    # log message to keep trace of this problem...
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+      "Function 'CMAKE_CHECK_COMPILER_FLAG' called with unsupported language: ${lang}\n")
+    set(${result} FALSE CACHE INTERNAL ${comment})
+    return()
+  endif()
+  if (lang STREQUAL "ASM")
+    # assume ASM compiler is a multi-language compiler, so supports C language as well
+    set(check_lang C)
+  else()
+    set(check_lang ${lang})
+  endif()
+
+  cmake_parse_arguments(CCCF "" "SRC_EXT;COMMAND_PATTERN;OUTPUT_VARIABLE" "FAIL_REGEX" ${ARGN})
+
+  if (NOT CCCF_COMMAND_PATTERN)
+    set (CCCF_COMMAND_PATTERN "<FLAG> -o <OUTPUT> <SOURCE>")
+  endif()
+
+  list (APPEND CCCF_FAIL_REGEX "argument unused during compilation") # clang
+  if (check_lang STREQUAL "C")
+    list(APPEND CCCF_FAIL_REGEX
+      "command line option .* is valid for .* but not for C") # GNU
+  elseif(check_lang STREQUAL "CXX")
+    list(APPEND CCCF_FAIL_REGEX
+      "command line option .* is valid for .* but not for C\\+\\+") # GNU
+  elseif(check_lang STREQUAL "Fortran")
+    list(APPEND CCCF_FAIL_REGEX
+      "command line option .* is valid for .* but not for Fortran") # GNU
+  endif()
+
+  # Add patterns for common errors
+  check_compiler_flag_common_patterns(COMPILER_FLAG_COMMON_PATTERNS)
+  foreach(arg IN LISTS COMPILER_FLAG_COMMON_PATTERNS)
+    if(arg MATCHES "^FAIL_REGEX$")
+      continue()
+    endif()
+    list(APPEND CCCF_FAIL_REGEX "${arg}")
+  endforeach()
+
+  if(NOT CCCF_SRC_EXT)
+    if (check_lang STREQUAL "C")
+      set(CCCF_SRC_EXT c)
+    elseif(check_lang STREQUAL "CXX")
+      set(CCCF_SRC_EXT cxx)
+    elseif(check_lang STREQUAL "Fortran")
+      set(CCCF_SRC_EXT F)
+    endif()
+  endif()
+
+  if (CCCF_OUTPUT_VARIABLE)
+    unset(${CCCF_OUTPUT_VARIABLE} PARENT_SCOPE)
+  endif()
+
+  # Compute the directory in which to run the test.
+  set(COMPILER_FLAG_DIR "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp")
+  # Compute source and output files.
+  set(COMPILER_FLAG_SRC
+    "${COMPILER_FLAG_DIR}/CompilerFlag${lang}.${CCCF_SRC_EXT}")
+  if(check_lang STREQUAL "Fortran")
+    file(WRITE "${COMPILER_FLAG_SRC}"
+      "      program simple\n      end program simple\n")
+  else()
+    file(WRITE "${COMPILER_FLAG_SRC}" "int main (void)\n{ return 0; }\n")
+  endif()
+  get_filename_component(COMPILER_FLAG_EXE "${COMPILER_FLAG_SRC}" NAME_WE)
+  string(APPEND COMPILER_FLAG_EXE "${CMAKE_EXECUTABLE_SUFFIX}")
+
+  # Build command line
+  separate_arguments(CCCF_COMMAND_PATTERN UNIX_COMMAND
+    "${CCCF_COMMAND_PATTERN}")
+  list(TRANSFORM CCCF_COMMAND_PATTERN REPLACE "<SOURCE>" "${COMPILER_FLAG_SRC}")
+  list(TRANSFORM CCCF_COMMAND_PATTERN REPLACE "<OUTPUT>" "${COMPILER_FLAG_EXE}")
+  list(TRANSFORM CCCF_COMMAND_PATTERN REPLACE "<FLAG>" "${flag}")
+
+  execute_process(
+    COMMAND "${CMAKE_COMMAND}" -E env LC_ALL=C LC_MESSAGES=C LANG=C
+            "${CMAKE_${lang}_COMPILER}" ${CCCF_COMMAND_PATTERN}
+    WORKING_DIRECTORY "${COMPILER_FLAG_DIR}"
+    OUTPUT_VARIABLE COMPILER_FLAG_OUTPUT
+    ERROR_VARIABLE COMPILER_FLAG_OUTPUT
+    RESULT_VARIABLE COMPILER_FLAG_RESULT)
+
+  # Record result in the cache so we can avoid re-testing every CMake run
+  if (COMPILER_FLAG_RESULT)
+    set(${result} FALSE CACHE INTERNAL ${comment})
+  else()
+    foreach(regex IN LISTS CCCF_FAIL_REGEX)
+      if(COMPILER_FLAG_OUTPUT MATCHES "${regex}")
+        set(${result} FALSE CACHE INTERNAL ${comment})
+      endif()
+    endforeach()
+  endif()
+  if (DEFINED ${result})
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Determining if the ${flag} option "
+        "is supported for ${lang} language failed with the following output:\n"
+        "${COMPILER_FLAG_OUTPUT}\n")
+    if (CCCF_OUTPUT_VARIABLE)
+      set(${CCCF_OUTPUT_VARIABLE} "${COMPILER_FLAG_OUTPUT}" PARENT_SCOPE)
+    endif()
+    return()
+  endif()
+
+  set(${result} TRUE CACHE INTERNAL ${comment})
+endfunction()
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPack.DS_Store.in b/share/cmake-3.22/Modules/Internal/CPack/CPack.DS_Store.in
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/CPack.DS_Store.in
rename to share/cmake-3.22/Modules/Internal/CPack/CPack.DS_Store.in
Binary files differ
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPack.Description.plist.in b/share/cmake-3.22/Modules/Internal/CPack/CPack.Description.plist.in
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/CPack.Description.plist.in
rename to share/cmake-3.22/Modules/Internal/CPack/CPack.Description.plist.in
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPack.Info.plist.in b/share/cmake-3.22/Modules/Internal/CPack/CPack.Info.plist.in
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/CPack.Info.plist.in
rename to share/cmake-3.22/Modules/Internal/CPack/CPack.Info.plist.in
diff --git a/share/cmake-3.22/Modules/Internal/CPack/CPack.NuGet.nuspec.in b/share/cmake-3.22/Modules/Internal/CPack/CPack.NuGet.nuspec.in
new file mode 100644
index 0000000..d89d69f
--- /dev/null
+++ b/share/cmake-3.22/Modules/Internal/CPack/CPack.NuGet.nuspec.in
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
+    <metadata>
+        <!-- Required elements-->
+        <id>@CPACK_NUGET_PACKAGE_NAME@</id>
+        <version>@CPACK_NUGET_PACKAGE_VERSION@</version>
+        <description>@CPACK_NUGET_PACKAGE_DESCRIPTION@</description>
+        <authors>@CPACK_NUGET_PACKAGE_AUTHORS@</authors>
+
+        <!-- Optional elements -->
+        @_CPACK_NUGET_TITLE_TAG@
+        @_CPACK_NUGET_OWNERS_TAG@
+        @_CPACK_NUGET_PROJECTURL_TAG@
+        @_CPACK_NUGET_LICENSEURL_TAG@
+        @_CPACK_NUGET_LICENSE_TAG@
+        @_CPACK_NUGET_ICONURL_TAG@
+        @_CPACK_NUGET_ICON_TAG@
+        @_CPACK_NUGET_REQUIRELICENSEACCEPTANCE_TAG@
+        @_CPACK_NUGET_SUMMARY_TAG@
+        @_CPACK_NUGET_RELEASENOTES_TAG@
+        @_CPACK_NUGET_COPYRIGHT_TAG@
+        @_CPACK_NUGET_LANGUAGE_TAG@
+        @_CPACK_NUGET_TAGS_TAG@
+        @_CPACK_NUGET_DEPENDENCIES_TAG@
+    </metadata>
+    @_CPACK_NUGET_FILES_TAG@
+</package>
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPack.OSXScriptLauncher.in b/share/cmake-3.22/Modules/Internal/CPack/CPack.OSXScriptLauncher.in
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/CPack.OSXScriptLauncher.in
rename to share/cmake-3.22/Modules/Internal/CPack/CPack.OSXScriptLauncher.in
Binary files differ
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPack.OSXScriptLauncher.rsrc.in b/share/cmake-3.22/Modules/Internal/CPack/CPack.OSXScriptLauncher.rsrc.in
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/CPack.OSXScriptLauncher.rsrc.in
rename to share/cmake-3.22/Modules/Internal/CPack/CPack.OSXScriptLauncher.rsrc.in
Binary files differ
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPack.OSXX11.Info.plist.in b/share/cmake-3.22/Modules/Internal/CPack/CPack.OSXX11.Info.plist.in
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/CPack.OSXX11.Info.plist.in
rename to share/cmake-3.22/Modules/Internal/CPack/CPack.OSXX11.Info.plist.in
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPack.OSXX11.main.scpt.in b/share/cmake-3.22/Modules/Internal/CPack/CPack.OSXX11.main.scpt.in
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/CPack.OSXX11.main.scpt.in
rename to share/cmake-3.22/Modules/Internal/CPack/CPack.OSXX11.main.scpt.in
Binary files differ
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPack.RuntimeScript.in b/share/cmake-3.22/Modules/Internal/CPack/CPack.RuntimeScript.in
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/CPack.RuntimeScript.in
rename to share/cmake-3.22/Modules/Internal/CPack/CPack.RuntimeScript.in
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPack.STGZ_Header.sh.in b/share/cmake-3.22/Modules/Internal/CPack/CPack.STGZ_Header.sh.in
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/CPack.STGZ_Header.sh.in
rename to share/cmake-3.22/Modules/Internal/CPack/CPack.STGZ_Header.sh.in
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPack.VolumeIcon.icns.in b/share/cmake-3.22/Modules/Internal/CPack/CPack.VolumeIcon.icns.in
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/CPack.VolumeIcon.icns.in
rename to share/cmake-3.22/Modules/Internal/CPack/CPack.VolumeIcon.icns.in
Binary files differ
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPack.background.png.in b/share/cmake-3.22/Modules/Internal/CPack/CPack.background.png.in
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/CPack.background.png.in
rename to share/cmake-3.22/Modules/Internal/CPack/CPack.background.png.in
Binary files differ
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPack.distribution.dist.in b/share/cmake-3.22/Modules/Internal/CPack/CPack.distribution.dist.in
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/CPack.distribution.dist.in
rename to share/cmake-3.22/Modules/Internal/CPack/CPack.distribution.dist.in
diff --git a/share/cmake-3.22/Modules/Internal/CPack/CPackDeb.cmake b/share/cmake-3.22/Modules/Internal/CPack/CPackDeb.cmake
new file mode 100644
index 0000000..c115f00
--- /dev/null
+++ b/share/cmake-3.22/Modules/Internal/CPack/CPackDeb.cmake
@@ -0,0 +1,795 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# CPack script for creating Debian package
+# Author: Mathieu Malaterre
+#
+# http://wiki.debian.org/HowToPackageForDebian
+
+if(CMAKE_BINARY_DIR)
+  message(FATAL_ERROR "CPackDeb.cmake may only be used by CPack internally.")
+endif()
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+function(cpack_deb_variable_fallback OUTPUT_VAR_NAME)
+  set(FALLBACK_VAR_NAMES ${ARGN})
+
+  foreach(variable_name IN LISTS FALLBACK_VAR_NAMES)
+    if(${variable_name})
+      set(${OUTPUT_VAR_NAME} "${${variable_name}}" PARENT_SCOPE)
+      break()
+    endif()
+  endforeach()
+endfunction()
+
+function(get_component_package_name var component)
+  string(TOUPPER "${component}" component_upcase)
+  if(CPACK_DEBIAN_${component_upcase}_PACKAGE_NAME)
+    string(TOLOWER "${CPACK_DEBIAN_${component_upcase}_PACKAGE_NAME}" package_name)
+  else()
+    string(TOLOWER "${CPACK_DEBIAN_PACKAGE_NAME}-${component}" package_name)
+  endif()
+
+  set("${var}" "${package_name}" PARENT_SCOPE)
+endfunction()
+
+#extract library name and version for given shared object
+function(extract_so_info shared_object libname version)
+  if(READELF_EXECUTABLE)
+    execute_process(COMMAND "${READELF_EXECUTABLE}" -d "${shared_object}"
+      WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
+      RESULT_VARIABLE result
+      OUTPUT_VARIABLE output
+      ERROR_QUIET
+      OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if(result EQUAL 0)
+      string(REGEX MATCH "\\(?SONAME\\)?[^\n]*\\[([^\n]+)\\.so\\.([^\n]*)\\]" soname "${output}")
+      set(${libname} "${CMAKE_MATCH_1}" PARENT_SCOPE)
+      set(${version} "${CMAKE_MATCH_2}" PARENT_SCOPE)
+    else()
+      message(WARNING "Error running readelf for \"${shared_object}\"")
+    endif()
+  else()
+    message(FATAL_ERROR "Readelf utility is not available.")
+  endif()
+endfunction()
+
+function(cpack_deb_check_description SUMMARY LINES RESULT_VARIABLE)
+  set(_result TRUE)
+
+  # Get the summary line
+  if(NOT SUMMARY MATCHES "^[^\\s].*$")
+    set(_result FALSE)
+    set(${RESULT_VARIABLE} ${_result} PARENT_SCOPE)
+    return()
+  endif()
+
+  foreach(_line IN LISTS LINES)
+    if(NOT _line MATCHES "^ +[^ ]+.*$")
+      set(_result FALSE)
+      break()
+    endif()
+  endforeach()
+
+  set(${RESULT_VARIABLE} ${_result} PARENT_SCOPE)
+endfunction()
+
+function(cpack_deb_format_package_description TEXT OUTPUT_VAR)
+  # Turn the possible multi-line string into a list
+  string(UUID uuid NAMESPACE 00000000-0000-0000-0000-000000000000 TYPE SHA1)
+  string(REPLACE ";" "${uuid}" _text "${TEXT}")
+  string(REPLACE "\n" ";" _lines "${_text}")
+  list(POP_FRONT _lines _summary)
+
+  # If the description ends with a newline (e.g. typically if it was read
+  # from a file) the last line will be empty. We drop it here, otherwise
+  # it would be replaced by a `.` which would lead to the package violating
+  # the extended-description-contains-empty-paragraph debian policy
+  list(POP_BACK _lines _last_line)
+  string(STRIP "${_last_line}" _last_line_strip)
+  if(_last_line_strip)
+    list(APPEND _lines "${_last_line_strip}")
+  endif()
+
+  # Check if reformatting required
+  cpack_deb_check_description("${_summary}" "${_lines}" _result)
+  if(_result)
+    # Ok, no formatting required
+    set(${OUTPUT_VAR} "${TEXT}" PARENT_SCOPE)
+    return()
+  endif()
+
+  # Format the summary line
+  string(STRIP "${_summary}" _summary)
+
+  # Make sure the rest formatted properly
+  set(_result)
+  foreach(_line IN LISTS _lines)
+    string(STRIP "${_line}" _line_strip)
+    if(NOT _line_strip)
+      # Replace empty lines w/ a _single full stop character_
+      set(_line " .")
+    else()
+      # Prepend the normal lines w/ a single space.
+      # If the line already starts w/ at least one space,
+      # it'll become _verbatim_ (assuming it supposed to be
+      # verbatim in the original text).
+      string(PREPEND _line " ")
+    endif()
+    list(APPEND _result "${_line}")
+  endforeach()
+
+  list(PREPEND _result "${_summary}")
+  list(JOIN _result "\n" _result)
+  string(REPLACE "${uuid}"  ";" _result "${_result}")
+  set(${OUTPUT_VAR} "${_result}" PARENT_SCOPE)
+endfunction()
+
+function(cpack_deb_prepare_package_vars)
+  # CPACK_DEBIAN_PACKAGE_SHLIBDEPS
+  # If specify OFF, only user depends are used
+  if(NOT DEFINED CPACK_DEBIAN_PACKAGE_SHLIBDEPS)
+    set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS OFF)
+  endif()
+
+  set(WDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_DEB_PACKAGE_COMPONENT_PART_PATH}")
+  set(DBGSYMDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_DEB_PACKAGE_COMPONENT_PART_PATH}-dbgsym")
+  file(REMOVE_RECURSE "${DBGSYMDIR}")
+
+  # per component automatic discover: some of the component might not have
+  # binaries.
+  if(CPACK_DEB_PACKAGE_COMPONENT)
+    string(TOUPPER "${CPACK_DEB_PACKAGE_COMPONENT}" _local_component_name)
+    set(_component_shlibdeps_var "CPACK_DEBIAN_${_local_component_name}_PACKAGE_SHLIBDEPS")
+
+    # if set, overrides the global configuration
+    if(DEFINED ${_component_shlibdeps_var})
+      set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS "${${_component_shlibdeps_var}}")
+      if(CPACK_DEBIAN_PACKAGE_DEBUG)
+        message("CPackDeb Debug: component '${CPACK_DEB_PACKAGE_COMPONENT}' dpkg-shlibdeps set to ${CPACK_DEBIAN_PACKAGE_SHLIBDEPS}")
+      endif()
+    endif()
+  endif()
+
+  cpack_deb_variable_fallback("CPACK_DEBIAN_DEBUGINFO_PACKAGE"
+    "CPACK_DEBIAN_${_local_component_name}_DEBUGINFO_PACKAGE"
+    "CPACK_DEBIAN_DEBUGINFO_PACKAGE")
+  if(CPACK_DEBIAN_PACKAGE_SHLIBDEPS OR CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS OR CPACK_DEBIAN_DEBUGINFO_PACKAGE)
+    # Generating binary list - Get type of all install files
+    file(GLOB_RECURSE FILE_PATHS_ LIST_DIRECTORIES false RELATIVE "${WDIR}" "${WDIR}/*")
+
+    find_program(FILE_EXECUTABLE file)
+    if(NOT FILE_EXECUTABLE)
+      message(FATAL_ERROR "CPackDeb: file utility is not available. CPACK_DEBIAN_PACKAGE_SHLIBDEPS and CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS options are not available.")
+    endif()
+
+    # get file info so that we can determine if file is executable or not
+    unset(CPACK_DEB_INSTALL_FILES)
+    foreach(FILE_ IN LISTS FILE_PATHS_)
+      execute_process(COMMAND ${CMAKE_COMMAND} -E env LC_ALL=C ${FILE_EXECUTABLE} "./${FILE_}"
+        WORKING_DIRECTORY "${WDIR}"
+        RESULT_VARIABLE FILE_RESULT_
+        OUTPUT_VARIABLE INSTALL_FILE_)
+      if(NOT FILE_RESULT_ EQUAL 0)
+        message(FATAL_ERROR "CPackDeb: execution of command: '${FILE_EXECUTABLE} ./${FILE_}' failed with exit code: ${FILE_RESULT_}")
+      endif()
+      list(APPEND CPACK_DEB_INSTALL_FILES "${INSTALL_FILE_}")
+    endforeach()
+
+    # Only dynamically linked ELF files are included
+    # Extract only file name infront of ":"
+    foreach(_FILE IN LISTS CPACK_DEB_INSTALL_FILES)
+      if(_FILE MATCHES "ELF.*dynamically linked")
+        string(REGEX MATCH "(^.*):" _FILE_NAME "${_FILE}")
+        list(APPEND CPACK_DEB_BINARY_FILES "${CMAKE_MATCH_1}")
+        set(CONTAINS_EXECUTABLE_FILES_ TRUE)
+      endif()
+      if(_FILE MATCHES "ELF.*shared object")
+        string(REGEX MATCH "(^.*):" _FILE_NAME "${_FILE}")
+        list(APPEND CPACK_DEB_SHARED_OBJECT_FILES "${CMAKE_MATCH_1}")
+      endif()
+      if(_FILE MATCHES "ELF.*not stripped")
+        string(REGEX MATCH "(^.*):" _FILE_NAME "${_FILE}")
+        list(APPEND CPACK_DEB_UNSTRIPPED_FILES "${CMAKE_MATCH_1}")
+      endif()
+    endforeach()
+  endif()
+
+  find_program(READELF_EXECUTABLE NAMES readelf)
+
+  if(CPACK_DEBIAN_DEBUGINFO_PACKAGE AND CPACK_DEB_UNSTRIPPED_FILES)
+    find_program(OBJCOPY_EXECUTABLE NAMES objcopy)
+
+    if(NOT OBJCOPY_EXECUTABLE)
+      message(FATAL_ERROR "debuginfo packages require the objcopy tool")
+    endif()
+    if(NOT READELF_EXECUTABLE)
+      message(FATAL_ERROR "debuginfo packages require the readelf tool")
+    endif()
+
+    file(RELATIVE_PATH _DBGSYM_ROOT "${CPACK_TEMPORARY_DIRECTORY}" "${DBGSYMDIR}")
+    foreach(_FILE IN LISTS CPACK_DEB_UNSTRIPPED_FILES)
+
+      # Get the file's Build ID
+      execute_process(COMMAND env LC_ALL=C ${READELF_EXECUTABLE} -n "${_FILE}"
+        WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
+        OUTPUT_VARIABLE READELF_OUTPUT
+        RESULT_VARIABLE READELF_RESULT
+        ERROR_VARIABLE READELF_ERROR
+        OUTPUT_STRIP_TRAILING_WHITESPACE )
+      if(NOT READELF_RESULT EQUAL 0)
+        message(FATAL_ERROR "CPackDeb: readelf: '${READELF_ERROR}';\n"
+            "executed command: '${READELF_EXECUTABLE} -n ${_FILE}'")
+      endif()
+      if(READELF_OUTPUT MATCHES "Build ID: ([0-9a-zA-Z][0-9a-zA-Z])([0-9a-zA-Z]*)")
+        set(_BUILD_ID_START ${CMAKE_MATCH_1})
+        set(_BUILD_ID_REMAINING ${CMAKE_MATCH_2})
+        list(APPEND BUILD_IDS ${_BUILD_ID_START}${_BUILD_ID_REMAINING})
+      else()
+        message(FATAL_ERROR "Unable to determine Build ID for ${_FILE}")
+      endif()
+
+      # Split out the debug symbols from the binaries
+      set(_FILE_DBGSYM ${_DBGSYM_ROOT}/usr/lib/debug/.build-id/${_BUILD_ID_START}/${_BUILD_ID_REMAINING}.debug)
+      get_filename_component(_OUT_DIR "${_FILE_DBGSYM}" DIRECTORY)
+      file(MAKE_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}/${_OUT_DIR}")
+      execute_process(COMMAND ${OBJCOPY_EXECUTABLE} --only-keep-debug "${_FILE}" "${_FILE_DBGSYM}"
+        WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
+        OUTPUT_VARIABLE OBJCOPY_OUTPUT
+        RESULT_VARIABLE OBJCOPY_RESULT
+        ERROR_VARIABLE OBJCOPY_ERROR
+        OUTPUT_STRIP_TRAILING_WHITESPACE )
+      if(NOT OBJCOPY_RESULT EQUAL 0)
+        message(FATAL_ERROR "CPackDeb: objcopy: '${OBJCOPY_ERROR}';\n"
+            "executed command: '${OBJCOPY_EXECUTABLE} --only-keep-debug ${_FILE} ${_FILE_DBGSYM}'")
+      endif()
+      execute_process(COMMAND ${OBJCOPY_EXECUTABLE} --strip-unneeded ${_FILE}
+        WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
+        OUTPUT_VARIABLE OBJCOPY_OUTPUT
+        RESULT_VARIABLE OBJCOPY_RESULT
+        ERROR_VARIABLE OBJCOPY_ERROR
+        OUTPUT_STRIP_TRAILING_WHITESPACE )
+      if(NOT OBJCOPY_RESULT EQUAL 0)
+        message(FATAL_ERROR "CPackDeb: objcopy: '${OBJCOPY_ERROR}';\n"
+            "executed command: '${OBJCOPY_EXECUTABLE} --strip-debug ${_FILE}'")
+      endif()
+      execute_process(COMMAND ${OBJCOPY_EXECUTABLE} --add-gnu-debuglink=${_FILE_DBGSYM} ${_FILE}
+        WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
+        OUTPUT_VARIABLE OBJCOPY_OUTPUT
+        RESULT_VARIABLE OBJCOPY_RESULT
+        ERROR_VARIABLE OBJCOPY_ERROR
+        OUTPUT_STRIP_TRAILING_WHITESPACE )
+      if(NOT OBJCOPY_RESULT EQUAL 0)
+        message(FATAL_ERROR "CPackDeb: objcopy: '${OBJCOPY_ERROR}';\n"
+            "executed command: '${OBJCOPY_EXECUTABLE} --add-gnu-debuglink=${_FILE_DBGSYM} ${_FILE}'")
+      endif()
+    endforeach()
+  endif()
+
+  if(CPACK_DEBIAN_PACKAGE_SHLIBDEPS)
+    # dpkg-shlibdeps is a Debian utility for generating dependency list
+    find_program(SHLIBDEPS_EXECUTABLE dpkg-shlibdeps)
+
+    if(SHLIBDEPS_EXECUTABLE)
+      # Check version of the dpkg-shlibdeps tool using CPackDEB method
+      execute_process(COMMAND ${CMAKE_COMMAND} -E env LC_ALL=C ${SHLIBDEPS_EXECUTABLE} --version
+        OUTPUT_VARIABLE _TMP_VERSION
+        ERROR_QUIET
+        OUTPUT_STRIP_TRAILING_WHITESPACE)
+      if(_TMP_VERSION MATCHES "dpkg-shlibdeps version ([0-9]+\\.[0-9]+\\.[0-9]+)")
+        set(SHLIBDEPS_EXECUTABLE_VERSION "${CMAKE_MATCH_1}")
+      else()
+        unset(SHLIBDEPS_EXECUTABLE_VERSION)
+      endif()
+
+      if(CPACK_DEBIAN_PACKAGE_DEBUG)
+        message("CPackDeb Debug: dpkg-shlibdeps --version output is '${_TMP_VERSION}'")
+        message("CPackDeb Debug: dpkg-shlibdeps version is <${SHLIBDEPS_EXECUTABLE_VERSION}>")
+      endif()
+
+      if(CONTAINS_EXECUTABLE_FILES_)
+        message("CPackDeb: - Generating dependency list")
+
+        # Create blank control file for running dpkg-shlibdeps
+        # There might be some other way to invoke dpkg-shlibdeps without creating this file
+        # but standard debian package should not have anything that can collide with this file or directory
+        file(MAKE_DIRECTORY ${CPACK_TEMPORARY_DIRECTORY}/debian)
+        file(WRITE ${CPACK_TEMPORARY_DIRECTORY}/debian/control "")
+
+        # Create a DEBIAN directory so that dpkg-shlibdeps can find the package dir when resolving $ORIGIN.
+        file(MAKE_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}/DEBIAN")
+
+        # Add --ignore-missing-info if the tool supports it
+        execute_process(COMMAND ${CMAKE_COMMAND} -E env LC_ALL=C ${SHLIBDEPS_EXECUTABLE} --help
+          OUTPUT_VARIABLE _TMP_HELP
+          ERROR_QUIET
+          OUTPUT_STRIP_TRAILING_WHITESPACE)
+        if(_TMP_HELP MATCHES "--ignore-missing-info")
+          set(IGNORE_MISSING_INFO_FLAG "--ignore-missing-info")
+        endif()
+
+        if(CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS)
+          unset(PRIVATE_SEARCH_DIR_OPTIONS)
+          # Add -l option if the tool supports it
+          if(DEFINED SHLIBDEPS_EXECUTABLE_VERSION AND SHLIBDEPS_EXECUTABLE_VERSION VERSION_GREATER_EQUAL 1.17.0)
+            foreach(dir IN LISTS CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS)
+              list(APPEND PRIVATE_SEARCH_DIR_OPTIONS "-l${dir}")
+            endforeach()
+          else()
+            message(WARNING "CPackDeb: dkpg-shlibdeps is too old. \"CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS\" is therefore ignored.")
+          endif()
+        endif()
+
+        # Execute dpkg-shlibdeps
+        # --ignore-missing-info : allow dpkg-shlibdeps to run even if some libs do not belong to a package
+        # -l<dir>: make dpkg-shlibdeps also search in this directory for (private) shared library dependencies
+        # -O : print to STDOUT
+        execute_process(COMMAND ${SHLIBDEPS_EXECUTABLE} ${PRIVATE_SEARCH_DIR_OPTIONS} ${IGNORE_MISSING_INFO_FLAG} -O ${CPACK_DEB_BINARY_FILES}
+          WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
+          OUTPUT_VARIABLE SHLIBDEPS_OUTPUT
+          RESULT_VARIABLE SHLIBDEPS_RESULT
+          ERROR_VARIABLE SHLIBDEPS_ERROR
+          OUTPUT_STRIP_TRAILING_WHITESPACE )
+        if(CPACK_DEBIAN_PACKAGE_DEBUG)
+          # dpkg-shlibdeps will throw some warnings if some input files are not binary
+          message( "CPackDeb Debug: dpkg-shlibdeps warnings \n${SHLIBDEPS_ERROR}")
+        endif()
+        if(NOT SHLIBDEPS_RESULT EQUAL 0)
+          message(FATAL_ERROR "CPackDeb: dpkg-shlibdeps: '${SHLIBDEPS_ERROR}';\n"
+              "executed command: '${SHLIBDEPS_EXECUTABLE} ${PRIVATE_SEARCH_DIR_OPTIONS} ${IGNORE_MISSING_INFO_FLAG} -O ${CPACK_DEB_BINARY_FILES}';\n"
+              "found files: '${INSTALL_FILE_}';\n"
+              "files info: '${CPACK_DEB_INSTALL_FILES}';\n"
+              "binary files: '${CPACK_DEB_BINARY_FILES}'")
+        endif()
+
+        #Get rid of prefix generated by dpkg-shlibdeps
+        string(REGEX REPLACE "^.*Depends=" "" CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS "${SHLIBDEPS_OUTPUT}")
+
+        if(CPACK_DEBIAN_PACKAGE_DEBUG)
+          message("CPackDeb Debug: Found dependency: ${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS} from output ${SHLIBDEPS_OUTPUT}")
+        endif()
+
+        # Remove blank control file
+        # Might not be safe if package actual contain file or directory named debian
+        file(REMOVE_RECURSE "${CPACK_TEMPORARY_DIRECTORY}/debian")
+
+        # remove temporary directory that was created only for dpkg-shlibdeps execution
+        file(REMOVE_RECURSE "${CPACK_TEMPORARY_DIRECTORY}/DEBIAN")
+      else()
+        if(CPACK_DEBIAN_PACKAGE_DEBUG)
+          message(AUTHOR_WARNING "CPackDeb Debug: Using only user-provided depends because package does not contain executable files that link to shared libraries.")
+        endif()
+      endif()
+    else()
+      message("CPackDeb: Using only user-provided dependencies because dpkg-shlibdeps is not found.")
+    endif()
+
+  else()
+    if(CPACK_DEBIAN_PACKAGE_DEBUG)
+      message("CPackDeb Debug: Using only user-provided dependencies")
+    endif()
+  endif()
+
+  # Let's define the control file found in debian package:
+
+  # Binary package:
+  # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-binarycontrolfiles
+
+  # DEBIAN/control
+  # debian policy enforce lower case for package name
+  # Package: (mandatory)
+  if(NOT CPACK_DEBIAN_PACKAGE_NAME)
+    string(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_DEBIAN_PACKAGE_NAME)
+  endif()
+
+  # Version: (mandatory)
+  if(NOT CPACK_DEBIAN_PACKAGE_VERSION)
+    if(NOT CPACK_PACKAGE_VERSION)
+      message(FATAL_ERROR "CPackDeb: Debian package requires a package version")
+    endif()
+    set(CPACK_DEBIAN_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})
+  endif()
+
+  if(DEFINED CPACK_DEBIAN_PACKAGE_RELEASE OR DEFINED CPACK_DEBIAN_PACKAGE_EPOCH)
+    # only test the version format if CPACK_DEBIAN_PACKAGE_RELEASE or
+    # CPACK_DEBIAN_PACKAGE_EPOCH is set
+    if(NOT CPACK_DEBIAN_PACKAGE_VERSION MATCHES "^[0-9][A-Za-z0-9.+~-]*$")
+      message(FATAL_ERROR
+        "CPackDeb: Debian package version must confirm to \"^[0-9][A-Za-z0-9.+~-]*$\" regex!")
+    endif()
+  else()
+    # before CMake 3.10 version format was not tested so only warn to preserve
+    # backward compatibility
+    if(NOT CPACK_DEBIAN_PACKAGE_VERSION MATCHES "^([0-9]+:)?[0-9][A-Za-z0-9.+~-]*$")
+      message(AUTHOR_WARNING
+        "CPackDeb: Debian package versioning ([<epoch>:]<version>[-<release>])"
+        " should confirm to \"^([0-9]+:)?[0-9][A-Za-z0-9.+~-]*$\" regex in"
+        " order to satisfy Debian packaging rules.")
+    endif()
+  endif()
+
+  if(CPACK_DEBIAN_PACKAGE_RELEASE)
+    if(NOT CPACK_DEBIAN_PACKAGE_RELEASE MATCHES "^[A-Za-z0-9.+~]+$")
+      message(FATAL_ERROR
+        "CPackDeb: Debian package release must confirm to \"^[A-Za-z0-9.+~]+$\" regex!")
+    endif()
+    string(APPEND CPACK_DEBIAN_PACKAGE_VERSION
+      "-${CPACK_DEBIAN_PACKAGE_RELEASE}")
+  elseif(DEFINED CPACK_DEBIAN_PACKAGE_EPOCH)
+    # only test the version format if CPACK_DEBIAN_PACKAGE_RELEASE or
+    # CPACK_DEBIAN_PACKAGE_EPOCH is set - versions CPack/Deb generator before
+    # CMake 3.10 did not check for version format so we have to preserve
+    # backward compatibility
+    if(CPACK_DEBIAN_PACKAGE_VERSION MATCHES ".*-.*")
+      message(FATAL_ERROR
+        "CPackDeb: Debian package version must not contain hyphens when CPACK_DEBIAN_PACKAGE_RELEASE is not provided!")
+    endif()
+  endif()
+
+  if(CPACK_DEBIAN_PACKAGE_EPOCH)
+    if(NOT CPACK_DEBIAN_PACKAGE_EPOCH MATCHES "^[0-9]+$")
+      message(FATAL_ERROR
+        "CPackDeb: Debian package epoch must confirm to \"^[0-9]+$\" regex!")
+    endif()
+    set(CPACK_DEBIAN_PACKAGE_VERSION
+      "${CPACK_DEBIAN_PACKAGE_EPOCH}:${CPACK_DEBIAN_PACKAGE_VERSION}")
+  endif()
+
+  # Architecture: (mandatory)
+  if(CPACK_DEB_PACKAGE_COMPONENT AND CPACK_DEBIAN_${_local_component_name}_PACKAGE_ARCHITECTURE)
+    set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${CPACK_DEBIAN_${_local_component_name}_PACKAGE_ARCHITECTURE}")
+  elseif(NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE)
+    # There is no such thing as i686 architecture on debian, you should use i386 instead
+    # $ dpkg --print-architecture
+    find_program(DPKG_CMD dpkg)
+    if(NOT DPKG_CMD)
+      message(STATUS "CPackDeb: Can not find dpkg in your path, default to i386.")
+      set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386)
+    endif()
+    execute_process(COMMAND "${DPKG_CMD}" --print-architecture
+      OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+      )
+  endif()
+
+  # Source: (optional)
+  # in case several packages are constructed from a unique source
+  # (multipackaging), the source may be indicated as well.
+  # The source might contain a version if the generated package
+  # version is different from the source version
+  if(NOT CPACK_DEBIAN_PACKAGE_SOURCE)
+    set(CPACK_DEBIAN_PACKAGE_SOURCE "")
+  endif()
+
+  # have a look at get_property(result GLOBAL PROPERTY ENABLED_FEATURES),
+  # this returns the successful find_package() calls, maybe this can help
+  # Depends:
+  # You should set: DEBIAN_PACKAGE_DEPENDS
+  # TODO: automate 'objdump -p | grep NEEDED'
+
+  # if per-component variable, overrides the global CPACK_DEBIAN_PACKAGE_${variable_type_}
+  # automatic dependency discovery will be performed afterwards.
+  if(CPACK_DEB_PACKAGE_COMPONENT)
+    foreach(value_type_ IN ITEMS DEPENDS RECOMMENDS SUGGESTS PREDEPENDS ENHANCES BREAKS CONFLICTS PROVIDES REPLACES SOURCE SECTION PRIORITY NAME)
+      set(_component_var "CPACK_DEBIAN_${_local_component_name}_PACKAGE_${value_type_}")
+
+      # if set, overrides the global variable
+      if(DEFINED ${_component_var})
+        set(CPACK_DEBIAN_PACKAGE_${value_type_} "${${_component_var}}")
+        if(CPACK_DEBIAN_PACKAGE_DEBUG)
+          message("CPackDeb Debug: component '${_local_component_name}' ${value_type_} "
+            "value set to '${CPACK_DEBIAN_PACKAGE_${value_type_}}'")
+        endif()
+      endif()
+    endforeach()
+
+    if(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS)
+      unset(COMPONENT_DEPENDS)
+      foreach(_PACK IN LISTS CPACK_COMPONENT_${_local_component_name}_DEPENDS)
+        get_component_package_name(_PACK_NAME "${_PACK}")
+        list(PREPEND COMPONENT_DEPENDS "${_PACK_NAME} (= ${CPACK_DEBIAN_PACKAGE_VERSION})")
+      endforeach()
+      list(JOIN COMPONENT_DEPENDS ", " COMPONENT_DEPENDS)
+      if(COMPONENT_DEPENDS)
+        list(PREPEND CPACK_DEBIAN_PACKAGE_DEPENDS ${COMPONENT_DEPENDS})
+        list(JOIN CPACK_DEBIAN_PACKAGE_DEPENDS ", " CPACK_DEBIAN_PACKAGE_DEPENDS)
+      endif()
+    endif()
+  endif()
+
+  # at this point, the CPACK_DEBIAN_PACKAGE_DEPENDS is properly set
+  # to the minimal dependency of the package
+  # Append automatically discovered dependencies .
+  if(CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS)
+    list(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS})
+    list(JOIN CPACK_DEBIAN_PACKAGE_DEPENDS ", " CPACK_DEBIAN_PACKAGE_DEPENDS)
+  endif()
+
+  if(NOT CPACK_DEBIAN_PACKAGE_DEPENDS)
+    message(STATUS "CPACK_DEBIAN_PACKAGE_DEPENDS not set, the package will have no dependencies.")
+  endif()
+
+  # Maintainer: (mandatory)
+  if(NOT CPACK_DEBIAN_PACKAGE_MAINTAINER)
+    if(NOT CPACK_PACKAGE_CONTACT)
+      message(FATAL_ERROR "CPackDeb: Debian package requires a maintainer for a package, set CPACK_PACKAGE_CONTACT or CPACK_DEBIAN_PACKAGE_MAINTAINER")
+    endif()
+    set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_CONTACT})
+  endif()
+
+  # Description: (mandatory)
+  # Try package description first
+  if(CPACK_USED_DEFAULT_PACKAGE_DESCRIPTION_FILE)
+    set(_desc_fallback)
+  else()
+    set(_desc_fallback "CPACK_PACKAGE_DESCRIPTION")
+  endif()
+  if(CPACK_DEB_PACKAGE_COMPONENT)
+    cpack_deb_variable_fallback("CPACK_DEBIAN_PACKAGE_DESCRIPTION"
+      "CPACK_DEBIAN_${_local_component_name}_DESCRIPTION"
+      "CPACK_COMPONENT_${_local_component_name}_DESCRIPTION")
+  else()
+    cpack_deb_variable_fallback("CPACK_DEBIAN_PACKAGE_DESCRIPTION"
+      "CPACK_DEBIAN_PACKAGE_DESCRIPTION"
+      ${_desc_fallback})
+  endif()
+
+  # Still no description? ... and description file has set ...
+  if(NOT CPACK_DEBIAN_PACKAGE_DESCRIPTION
+     AND CPACK_PACKAGE_DESCRIPTION_FILE
+     AND NOT CPACK_PACKAGE_DESCRIPTION_FILE STREQUAL CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE)
+    # Read `CPACK_PACKAGE_DESCRIPTION_FILE` then...
+    file(READ ${CPACK_PACKAGE_DESCRIPTION_FILE} CPACK_DEBIAN_PACKAGE_DESCRIPTION)
+  endif()
+
+  # Still no description? #2
+  if(NOT CPACK_DEBIAN_PACKAGE_DESCRIPTION)
+    # Try to get `CPACK_PACKAGE_DESCRIPTION_SUMMARY` as the last hope
+    if(CPACK_PACKAGE_DESCRIPTION_SUMMARY)
+      set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION_SUMMARY})
+    else()
+      # Giving up! Report an error...
+      set(_description_failure_message
+        "CPackDeb: Debian package requires a summary for a package, set CPACK_PACKAGE_DESCRIPTION_SUMMARY or CPACK_DEBIAN_PACKAGE_DESCRIPTION")
+      if(CPACK_DEB_PACKAGE_COMPONENT)
+        string(APPEND _description_failure_message
+          " or CPACK_DEBIAN_${_local_component_name}_DESCRIPTION")
+      endif()
+      message(FATAL_ERROR "${_description_failure_message}")
+    endif()
+
+  # Ok, description has set. According to the `Debian Policy Manual`_ the first
+  # line is a package summary.  Try to get it as well...
+  # See also: https://www.debian.org/doc/debian-policy/ch-controlfields.html#description
+  elseif(CPACK_PACKAGE_DESCRIPTION_SUMMARY AND
+         NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY STREQUAL CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY)
+    # Merge summary w/ the detailed description
+    string(PREPEND CPACK_DEBIAN_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}\n")
+  endif()
+  # assert(CPACK_DEBIAN_PACKAGE_DESCRIPTION)
+
+  # Make sure description is properly formatted
+  cpack_deb_format_package_description(
+    "${CPACK_DEBIAN_PACKAGE_DESCRIPTION}"
+    CPACK_DEBIAN_PACKAGE_DESCRIPTION
+  )
+
+  # Homepage: (optional)
+  if(NOT CPACK_DEBIAN_PACKAGE_HOMEPAGE AND CPACK_PACKAGE_HOMEPAGE_URL)
+    set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "${CPACK_PACKAGE_HOMEPAGE_URL}")
+  endif()
+
+  # Section: (recommended)
+  if(NOT CPACK_DEBIAN_PACKAGE_SECTION)
+    set(CPACK_DEBIAN_PACKAGE_SECTION "devel")
+  endif()
+
+  # Priority: (recommended)
+  if(NOT CPACK_DEBIAN_PACKAGE_PRIORITY)
+    set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
+  endif()
+
+  if(CPACK_DEBIAN_ARCHIVE_TYPE)
+    if(CPACK_DEBIAN_ARCHIVE_TYPE STREQUAL "paxr")
+      message(DEPRECATION "CPACK_DEBIAN_ARCHIVE_TYPE set to old and invalid "
+        "type 'paxr', mapping to 'gnutar'")
+      set(CPACK_DEBIAN_ARCHIVE_TYPE "gnutar")
+    elseif(NOT CPACK_DEBIAN_ARCHIVE_TYPE STREQUAL "gnutar")
+      message(FATAL_ERROR "CPACK_DEBIAN_ARCHIVE_TYPE set to unsupported"
+        "type ${CPACK_DEBIAN_ARCHIVE_TYPE}")
+    endif()
+  else()
+    set(CPACK_DEBIAN_ARCHIVE_TYPE "gnutar")
+  endif()
+
+  # Compression: (recommended)
+  if(NOT CPACK_DEBIAN_COMPRESSION_TYPE)
+    set(CPACK_DEBIAN_COMPRESSION_TYPE "gzip")
+  endif()
+
+  # Recommends:
+  # You should set: CPACK_DEBIAN_PACKAGE_RECOMMENDS
+
+  # Suggests:
+  # You should set: CPACK_DEBIAN_PACKAGE_SUGGESTS
+
+  # CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
+  # This variable allow advanced user to add custom script to the control.tar.gz (inside the .deb archive)
+  # Typical examples are:
+  # - conffiles
+  # - postinst
+  # - postrm
+  # - prerm
+  # Usage:
+  # set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
+  #    "${CMAKE_CURRENT_SOURCE_DIR}/prerm;${CMAKE_CURRENT_SOURCE_DIR}/postrm")
+
+  # Are we packaging components ?
+  if(CPACK_DEB_PACKAGE_COMPONENT)
+    # override values with per component version if set
+    foreach(VAR_NAME_ IN ITEMS PACKAGE_CONTROL_EXTRA PACKAGE_CONTROL_STRICT_PERMISSION)
+      if(CPACK_DEBIAN_${_local_component_name}_${VAR_NAME_})
+        set(CPACK_DEBIAN_${VAR_NAME_} "${CPACK_DEBIAN_${_local_component_name}_${VAR_NAME_}}")
+      endif()
+    endforeach()
+    get_component_package_name(CPACK_DEBIAN_PACKAGE_NAME ${_local_component_name})
+  endif()
+
+  if(NOT CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY)
+    set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY "=")
+  endif()
+
+  unset(CPACK_DEBIAN_PACKAGE_SHLIBS_LIST)
+
+  if(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS)
+    if(READELF_EXECUTABLE)
+      foreach(_FILE IN LISTS CPACK_DEB_SHARED_OBJECT_FILES)
+        extract_so_info("${_FILE}" libname soversion)
+        if(libname AND DEFINED soversion)
+          list(APPEND CPACK_DEBIAN_PACKAGE_SHLIBS_LIST
+               "${libname} ${soversion} ${CPACK_DEBIAN_PACKAGE_NAME} (${CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY} ${CPACK_DEBIAN_PACKAGE_VERSION})")
+        else()
+          message(AUTHOR_WARNING "Shared library '${_FILE}' is missing soname or soversion. Library will not be added to DEBIAN/shlibs control file.")
+        endif()
+      endforeach()
+      list(JOIN CPACK_DEBIAN_PACKAGE_SHLIBS_LIST "\n" CPACK_DEBIAN_PACKAGE_SHLIBS_LIST)
+    else()
+      message(FATAL_ERROR "Readelf utility is not available. CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS option is not available.")
+    endif()
+  endif()
+
+  # add ldconfig call in default postrm and postint
+  set(CPACK_ADD_LDCONFIG_CALL 0)
+  # all files in CPACK_DEB_SHARED_OBJECT_FILES have dot at the beginning
+  set(_LDCONF_DEFAULTS "./lib" "./usr/lib")
+  foreach(_FILE IN LISTS CPACK_DEB_SHARED_OBJECT_FILES)
+    get_filename_component(_DIR ${_FILE} DIRECTORY)
+    get_filename_component(_PARENT_DIR ${_DIR} DIRECTORY)
+    if(_DIR IN_LIST _LDCONF_DEFAULTS OR _PARENT_DIR IN_LIST _LDCONF_DEFAULTS)
+      set(CPACK_ADD_LDCONFIG_CALL 1)
+    endif()
+  endforeach()
+
+  if(CPACK_ADD_LDCONFIG_CALL)
+    set(CPACK_DEBIAN_GENERATE_POSTINST 1)
+    set(CPACK_DEBIAN_GENERATE_POSTRM 1)
+    foreach(f IN LISTS CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA)
+      get_filename_component(n "${f}" NAME)
+      if(n STREQUAL "postinst")
+        set(CPACK_DEBIAN_GENERATE_POSTINST 0)
+      endif()
+      if(n STREQUAL "postrm")
+        set(CPACK_DEBIAN_GENERATE_POSTRM 0)
+      endif()
+    endforeach()
+  else()
+    set(CPACK_DEBIAN_GENERATE_POSTINST 0)
+    set(CPACK_DEBIAN_GENERATE_POSTRM 0)
+  endif()
+
+  cpack_deb_variable_fallback("CPACK_DEBIAN_FILE_NAME"
+    "CPACK_DEBIAN_${_local_component_name}_FILE_NAME"
+    "CPACK_DEBIAN_FILE_NAME")
+  if(CPACK_DEBIAN_FILE_NAME)
+    if(CPACK_DEBIAN_FILE_NAME STREQUAL "DEB-DEFAULT")
+      # Patch package file name to be in correct debian format:
+      # <foo>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
+      set(CPACK_OUTPUT_FILE_NAME
+        "${CPACK_DEBIAN_PACKAGE_NAME}_${CPACK_DEBIAN_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb")
+      set(CPACK_DBGSYM_OUTPUT_FILE_NAME
+        "${CPACK_DEBIAN_PACKAGE_NAME}-dbgsym_${CPACK_DEBIAN_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.ddeb")
+    else()
+      if(NOT CPACK_DEBIAN_FILE_NAME MATCHES ".*\\.(deb|ipk)")
+        message(FATAL_ERROR "'${CPACK_DEBIAN_FILE_NAME}' is not a valid DEB package file name as it must end with '.deb' or '.ipk'!")
+      endif()
+
+      set(CPACK_OUTPUT_FILE_NAME "${CPACK_DEBIAN_FILE_NAME}")
+      string(REGEX REPLACE "\.deb$" "-dbgsym.ddeb" CPACK_DBGSYM_OUTPUT_FILE_NAME "${CPACK_DEBIAN_FILE_NAME}")
+    endif()
+
+    set(CPACK_TEMPORARY_PACKAGE_FILE_NAME "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_OUTPUT_FILE_NAME}")
+    get_filename_component(BINARY_DIR "${CPACK_OUTPUT_FILE_PATH}" DIRECTORY)
+    set(CPACK_OUTPUT_FILE_PATH "${BINARY_DIR}/${CPACK_OUTPUT_FILE_NAME}")
+  else()
+    # back compatibility - don't change the name
+    string(REGEX REPLACE "\.deb$" "-dbgsym.ddeb" CPACK_DBGSYM_OUTPUT_FILE_NAME "${CPACK_OUTPUT_FILE_NAME}")
+  endif()
+
+  # Print out some debug information if we were asked for that
+  if(CPACK_DEBIAN_PACKAGE_DEBUG)
+     message("CPackDeb:Debug: CPACK_TOPLEVEL_DIRECTORY          = '${CPACK_TOPLEVEL_DIRECTORY}'")
+     message("CPackDeb:Debug: CPACK_TOPLEVEL_TAG                = '${CPACK_TOPLEVEL_TAG}'")
+     message("CPackDeb:Debug: CPACK_TEMPORARY_DIRECTORY         = '${CPACK_TEMPORARY_DIRECTORY}'")
+     message("CPackDeb:Debug: CPACK_OUTPUT_FILE_NAME            = '${CPACK_OUTPUT_FILE_NAME}'")
+     message("CPackDeb:Debug: CPACK_OUTPUT_FILE_PATH            = '${CPACK_OUTPUT_FILE_PATH}'")
+     message("CPackDeb:Debug: CPACK_PACKAGE_FILE_NAME           = '${CPACK_PACKAGE_FILE_NAME}'")
+     message("CPackDeb:Debug: CPACK_PACKAGE_INSTALL_DIRECTORY   = '${CPACK_PACKAGE_INSTALL_DIRECTORY}'")
+     message("CPackDeb:Debug: CPACK_TEMPORARY_PACKAGE_FILE_NAME = '${CPACK_TEMPORARY_PACKAGE_FILE_NAME}'")
+     message("CPackDeb:Debug: CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION = '${CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION}'")
+     message("CPackDeb:Debug: CPACK_DEBIAN_PACKAGE_SOURCE       = '${CPACK_DEBIAN_PACKAGE_SOURCE}'")
+  endif()
+
+  # For debian source packages:
+  # debian/control
+  # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-sourcecontrolfiles
+
+  # .dsc
+  # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-debiansourcecontrolfiles
+
+  # Builds-Depends:
+  #if(NOT CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS)
+  #  set(CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS
+  #    "debhelper (>> 5.0.0), libncurses5-dev, tcl8.4"
+  #  )
+  #endif()
+
+  # move variables to parent scope so that they may be used to create debian package
+  set(GEN_CPACK_OUTPUT_FILE_NAME "${CPACK_OUTPUT_FILE_NAME}" PARENT_SCOPE)
+  set(GEN_CPACK_TEMPORARY_PACKAGE_FILE_NAME "${CPACK_TEMPORARY_PACKAGE_FILE_NAME}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_NAME "${CPACK_DEBIAN_PACKAGE_NAME}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_VERSION "${CPACK_DEBIAN_PACKAGE_VERSION}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_SECTION "${CPACK_DEBIAN_PACKAGE_SECTION}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_PRIORITY "${CPACK_DEBIAN_PACKAGE_PRIORITY}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_MAINTAINER "${CPACK_DEBIAN_PACKAGE_MAINTAINER}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_DESCRIPTION "${CPACK_DEBIAN_PACKAGE_DESCRIPTION}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_ARCHIVE_TYPE "${CPACK_DEBIAN_ARCHIVE_TYPE}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_COMPRESSION_TYPE "${CPACK_DEBIAN_COMPRESSION_TYPE}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_RECOMMENDS "${CPACK_DEBIAN_PACKAGE_RECOMMENDS}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_SUGGESTS "${CPACK_DEBIAN_PACKAGE_SUGGESTS}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_HOMEPAGE "${CPACK_DEBIAN_PACKAGE_HOMEPAGE}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_PREDEPENDS "${CPACK_DEBIAN_PACKAGE_PREDEPENDS}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_ENHANCES "${CPACK_DEBIAN_PACKAGE_ENHANCES}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_BREAKS "${CPACK_DEBIAN_PACKAGE_BREAKS}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_CONFLICTS "${CPACK_DEBIAN_PACKAGE_CONFLICTS}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_PROVIDES "${CPACK_DEBIAN_PACKAGE_PROVIDES}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_REPLACES "${CPACK_DEBIAN_PACKAGE_REPLACES}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_SHLIBS "${CPACK_DEBIAN_PACKAGE_SHLIBS_LIST}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION
+      "${CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_PACKAGE_SOURCE
+     "${CPACK_DEBIAN_PACKAGE_SOURCE}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_GENERATE_POSTINST "${CPACK_DEBIAN_GENERATE_POSTINST}" PARENT_SCOPE)
+  set(GEN_CPACK_DEBIAN_GENERATE_POSTRM "${CPACK_DEBIAN_GENERATE_POSTRM}" PARENT_SCOPE)
+  set(GEN_WDIR "${WDIR}" PARENT_SCOPE)
+
+  set(GEN_CPACK_DEBIAN_DEBUGINFO_PACKAGE "${CPACK_DEBIAN_DEBUGINFO_PACKAGE}" PARENT_SCOPE)
+  if(BUILD_IDS)
+    set(GEN_DBGSYMDIR "${DBGSYMDIR}" PARENT_SCOPE)
+    set(GEN_CPACK_DBGSYM_OUTPUT_FILE_NAME "${CPACK_DBGSYM_OUTPUT_FILE_NAME}" PARENT_SCOPE)
+    list(JOIN BUILD_IDS " " BUILD_IDS)
+    set(GEN_BUILD_IDS "${BUILD_IDS}" PARENT_SCOPE)
+  else()
+    unset(GEN_DBGSYMDIR PARENT_SCOPE)
+    unset(GEN_CPACK_DBGSYM_OUTPUT_FILE_NAME PARENT_SCOPE)
+    unset(GEN_BUILD_IDS PARENT_SCOPE)
+  endif()
+endfunction()
+
+cpack_deb_prepare_package_vars()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPackExternal.cmake b/share/cmake-3.22/Modules/Internal/CPack/CPackExternal.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/CPackExternal.cmake
rename to share/cmake-3.22/Modules/Internal/CPack/CPackExternal.cmake
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPackFreeBSD.cmake b/share/cmake-3.22/Modules/Internal/CPack/CPackFreeBSD.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/CPackFreeBSD.cmake
rename to share/cmake-3.22/Modules/Internal/CPack/CPackFreeBSD.cmake
diff --git a/share/cmake-3.22/Modules/Internal/CPack/CPackNuGet.cmake b/share/cmake-3.22/Modules/Internal/CPack/CPackNuGet.cmake
new file mode 100644
index 0000000..fb363f4
--- /dev/null
+++ b/share/cmake-3.22/Modules/Internal/CPack/CPackNuGet.cmake
@@ -0,0 +1,440 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# Author: Alex Turbov
+
+if(CMAKE_BINARY_DIR)
+  message(FATAL_ERROR "CPackNuGet.cmake may only be used by CPack internally.")
+endif()
+
+function(_cpack_nuget_debug)
+    if(CPACK_NUGET_PACKAGE_DEBUG)
+        message("CPackNuGet:Debug: " ${ARGN})
+    endif()
+endfunction()
+
+function(_cpack_nuget_debug_var NAME)
+    if(CPACK_NUGET_PACKAGE_DEBUG)
+        message("CPackNuGet:Debug: ${NAME}=`${${NAME}}`")
+    endif()
+endfunction()
+
+function(_cpack_nuget_variable_fallback OUTPUT_VAR_NAME NUGET_VAR_NAME)
+    if(ARGN)
+        list(JOIN ARGN "`, `" _va_args)
+        set(_va_args ", ARGN: `${_va_args}`")
+    endif()
+    _cpack_nuget_debug(
+        "_cpack_nuget_variable_fallback: "
+        "OUTPUT_VAR_NAME=`${OUTPUT_VAR_NAME}`, "
+        "NUGET_VAR_NAME=`${NUGET_VAR_NAME}`"
+        "${_va_args}"
+      )
+
+    set(_options USE_CDATA)
+    set(_one_value_args LIST_GLUE)
+    set(_multi_value_args FALLBACK_VARS)
+    cmake_parse_arguments(PARSE_ARGV 0 _args "${_options}" "${_one_value_args}" "${_multi_value_args}")
+
+    if(CPACK_NUGET_PACKAGE_COMPONENT)
+        string(
+            TOUPPER "${CPACK_NUGET_PACKAGE_COMPONENT}"
+            CPACK_NUGET_PACKAGE_COMPONENT_UPPER
+          )
+    endif()
+
+    if(CPACK_NUGET_PACKAGE_COMPONENT
+      AND CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT}_PACKAGE_${NUGET_VAR_NAME}
+      )
+        set(
+            _result
+            "${CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT}_PACKAGE_${NUGET_VAR_NAME}}"
+          )
+        _cpack_nuget_debug(
+            "  CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT}_PACKAGE_${NUGET_VAR_NAME}: "
+            "OUTPUT_VAR_NAME->${OUTPUT_VAR_NAME}=`${_result}`"
+          )
+
+    elseif(CPACK_NUGET_PACKAGE_COMPONENT_UPPER
+      AND CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_PACKAGE_${NUGET_VAR_NAME}
+      )
+        set(
+            _result
+            "${CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_PACKAGE_${NUGET_VAR_NAME}}"
+          )
+        _cpack_nuget_debug(
+            "  CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_PACKAGE_${NUGET_VAR_NAME}: "
+            "OUTPUT_VAR_NAME->${OUTPUT_VAR_NAME}=`${_result}`"
+          )
+
+    elseif(CPACK_NUGET_PACKAGE_${NUGET_VAR_NAME})
+        set(_result "${CPACK_NUGET_PACKAGE_${NUGET_VAR_NAME}}")
+        _cpack_nuget_debug(
+            "  CPACK_NUGET_PACKAGE_${NUGET_VAR_NAME}: "
+            "OUTPUT_VAR_NAME->${OUTPUT_VAR_NAME}=`${_result}`"
+          )
+
+    else()
+        foreach(_var IN LISTS _args_FALLBACK_VARS)
+            _cpack_nuget_debug("  Fallback: ${_var} ...")
+            if(${_var})
+                _cpack_nuget_debug("            ${_var}=`${${_var}}`")
+                set(_result "${${_var}}")
+                _cpack_nuget_debug(
+                    "  ${_var}: OUTPUT_VAR_NAME->${OUTPUT_VAR_NAME}=`${_result}`"
+                  )
+                break()
+            endif()
+        endforeach()
+    endif()
+
+    if(_result)
+        if(_args_USE_CDATA)
+            set(_value_before "<![CDATA[")
+            set(_value_after "]]>")
+        endif()
+
+        list(LENGTH _result _result_len)
+        if(_result_len GREATER 1 AND _args_LIST_GLUE)
+            list(JOIN _result "${_args_LIST_GLUE}" _result)
+        endif()
+
+        set(${OUTPUT_VAR_NAME} "${_value_before}${_result}${_value_after}" PARENT_SCOPE)
+    endif()
+
+endfunction()
+
+function(_cpack_nuget_variable_fallback_and_wrap_into_element ELEMENT NUGET_VAR_NAME)
+    set(_options)
+    set(_one_value_args)
+    set(_multi_value_args FALLBACK_VARS ATTRIBUTES)
+    cmake_parse_arguments(PARSE_ARGV 2 _args "${_options}" "${_one_value_args}" "${_multi_value_args}")
+
+    if(_args_ATTRIBUTES)
+        list(JOIN _args_ATTRIBUTES " " _attributes)
+        string(PREPEND _attributes " ")
+    endif()
+
+    _cpack_nuget_variable_fallback(_value ${NUGET_VAR_NAME} ${ARGN} USE_CDATA)
+
+    string(TOUPPER "${ELEMENT}" _ELEMENT_UP)
+    if(_value)
+        set(
+            _CPACK_NUGET_${_ELEMENT_UP}_TAG
+            "<${ELEMENT}${_attributes}>${_value}</${ELEMENT}>"
+            PARENT_SCOPE
+          )
+    elseif(_attributes)
+        set(
+            _CPACK_NUGET_${_ELEMENT_UP}_TAG
+            "<${ELEMENT}${_attributes} />"
+            PARENT_SCOPE
+          )
+    endif()
+endfunction()
+
+# Warn of obsolete nuspec fields, referencing CMake variables and suggested
+# replacement, if any
+function(_cpack_nuget_deprecation_warning NUGET_ELEMENT VARNAME REPLACEMENT)
+    if(${VARNAME})
+        if(REPLACEMENT)
+            message(DEPRECATION "nuspec element `${NUGET_ELEMENT}` is deprecated in NuGet; consider replacing `${VARNAME}` with `${REPLACEMENT}`")
+        else()
+            message(DEPRECATION "nuspec element `${NUGET_ELEMENT}` is deprecated in NuGet; consider removing `${VARNAME}`")
+        endif()
+    endif()
+endfunction()
+
+# Print some debug info
+_cpack_nuget_debug("---[CPack NuGet Input Variables]---")
+_cpack_nuget_debug_var(CPACK_PACKAGE_NAME)
+_cpack_nuget_debug_var(CPACK_PACKAGE_VERSION)
+_cpack_nuget_debug_var(CPACK_TOPLEVEL_TAG)
+_cpack_nuget_debug_var(CPACK_TOPLEVEL_DIRECTORY)
+_cpack_nuget_debug_var(CPACK_TEMPORARY_DIRECTORY)
+_cpack_nuget_debug_var(CPACK_NUGET_GROUPS)
+if(CPACK_NUGET_GROUPS)
+    foreach(_group IN LISTS CPACK_NUGET_GROUPS)
+        string(MAKE_C_IDENTIFIER "${_group}" _group_up)
+        string(TOUPPER "${_group_up}" _group_up)
+        _cpack_nuget_debug_var(CPACK_NUGET_${_group_up}_GROUP_COMPONENTS)
+    endforeach()
+endif()
+_cpack_nuget_debug_var(CPACK_NUGET_COMPONENTS)
+_cpack_nuget_debug_var(CPACK_NUGET_ALL_IN_ONE)
+_cpack_nuget_debug_var(CPACK_NUGET_ORDINAL_MONOLITIC)
+_cpack_nuget_debug("-----------------------------------")
+
+function(_cpack_nuget_render_spec)
+    # Make a variable w/ upper-cased component name
+    if(CPACK_NUGET_PACKAGE_COMPONENT)
+        string(TOUPPER "${CPACK_NUGET_PACKAGE_COMPONENT}" CPACK_NUGET_PACKAGE_COMPONENT_UPPER)
+    endif()
+
+    # Set mandatory variables (not wrapped into XML elements)
+    # https://docs.microsoft.com/en-us/nuget/reference/nuspec#required-metadata-elements
+    if(CPACK_NUGET_PACKAGE_COMPONENT)
+        if(CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_PACKAGE_NAME)
+            set(
+                CPACK_NUGET_PACKAGE_NAME
+                "${CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_PACKAGE_NAME}"
+              )
+        elseif(NOT CPACK_NUGET_PACKAGE_COMPONENT STREQUAL "Unspecified")
+            set(
+                CPACK_NUGET_PACKAGE_NAME
+                "${CPACK_PACKAGE_NAME}.${CPACK_NUGET_PACKAGE_COMPONENT}"
+              )
+        else()
+            set(CPACK_NUGET_PACKAGE_NAME "${CPACK_PACKAGE_NAME}")
+        endif()
+    elseif(NOT CPACK_NUGET_PACKAGE_NAME)
+        set(CPACK_NUGET_PACKAGE_NAME "${CPACK_PACKAGE_NAME}")
+    endif()
+
+    # Warn about deprecated nuspec elements; warnings only display if
+    # variable is set
+    # Note that while nuspec's "summary" element is deprecated, there
+    # is no suggested replacement so (for now) no deprecation warning
+    # is shown for `CPACK_NUGET_*_DESCRIPTION_SUMMARY`
+    _cpack_nuget_deprecation_warning("licenseUrl" CPACK_NUGET_PACKAGE_LICENSEURL
+        "CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME or CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION")
+    _cpack_nuget_deprecation_warning("licenseUrl" CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT}_LICENSEURL
+        "CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT}_LICENSE_FILE_NAME or CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT}_LICENSE_EXPRESSION")
+    _cpack_nuget_deprecation_warning("iconUrl" CPACK_NUGET_PACKAGE_ICONURL
+        "CPACK_NUGET_PACKAGE_ICON")
+    _cpack_nuget_deprecation_warning("iconUrl" CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT}_ICONURL
+        "CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT}_ICON")
+
+    # Set nuspec fields
+    _cpack_nuget_variable_fallback(
+        CPACK_NUGET_PACKAGE_VERSION VERSION
+        FALLBACK_VARS
+            CPACK_PACKAGE_VERSION
+      )
+    _cpack_nuget_variable_fallback(
+        CPACK_NUGET_PACKAGE_DESCRIPTION DESCRIPTION
+        FALLBACK_VARS
+            CPACK_COMPONENT_${CPACK_NUGET_PACKAGE_COMPONENT}_DESCRIPTION
+            CPACK_COMPONENT_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_DESCRIPTION
+            CPACK_COMPONENT_GROUP_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_DESCRIPTION
+            CPACK_PACKAGE_DESCRIPTION
+        USE_CDATA
+      )
+    _cpack_nuget_variable_fallback(
+        CPACK_NUGET_PACKAGE_AUTHORS AUTHORS
+        FALLBACK_VARS
+            CPACK_PACKAGE_VENDOR
+        USE_CDATA
+        LIST_GLUE ","
+      )
+
+    # Set optional variables (wrapped into XML elements)
+    # https://docs.microsoft.com/en-us/nuget/reference/nuspec#optional-metadata-elements
+    _cpack_nuget_variable_fallback_and_wrap_into_element(
+        title
+        TITLE
+        FALLBACK_VARS
+            CPACK_COMPONENT_${CPACK_NUGET_PACKAGE_COMPONENT}_DISPLAY_NAME
+            CPACK_COMPONENT_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_DISPLAY_NAME
+            CPACK_COMPONENT_GROUP_${CPACK_NUGET_PACKAGE_COMPONENT_UPPER}_DISPLAY_NAME
+      )
+    _cpack_nuget_variable_fallback_and_wrap_into_element(owners OWNERS LIST_GLUE ",")
+    _cpack_nuget_variable_fallback_and_wrap_into_element(
+        projectUrl
+        HOMEPAGE_URL
+        FALLBACK_VARS
+            CPACK_PACKAGE_HOMEPAGE_URL
+      )
+
+    # "licenseUrl" is deprecated in favor of "license"
+    _cpack_nuget_variable_fallback_and_wrap_into_element(licenseUrl LICENSEURL)
+
+    # "iconUrl" is deprecated in favor of "icon"
+    _cpack_nuget_variable_fallback_and_wrap_into_element(iconUrl ICONURL)
+
+    # "license" takes a "type" attribute of either "file" or "expression"
+    # "file" refers to a file path of a .txt or .md file relative to the installation root
+    # "expression" refers to simple or compound expression of license identifiers
+    # listed at https://spdx.org/licenses/
+    # Note that only one of CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME and
+    # CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION may be specified. If both are specified,
+    # CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME takes precedence and CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION is ignored.
+    if(CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME)
+        _cpack_nuget_variable_fallback_and_wrap_into_element(
+            license LICENSE_FILE_NAME
+            ATTRIBUTES [[type="file"]]
+          )
+    elseif(CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION)
+        _cpack_nuget_variable_fallback_and_wrap_into_element(
+            license LICENSE_EXPRESSION
+            ATTRIBUTES [[type="expression"]]
+          )
+    endif()
+
+    # "icon" refers to a file path relative to the installation root
+    _cpack_nuget_variable_fallback_and_wrap_into_element(icon ICON)
+    # "summary" is deprecated in favor of "description"
+    _cpack_nuget_variable_fallback_and_wrap_into_element(
+        summary DESCRIPTION_SUMMARY
+        FALLBACK_VARS
+            CPACK_PACKAGE_DESCRIPTION_SUMMARY
+      )
+    if(CPACK_NUGET_PACKAGE_REQUIRE_LICENSE_ACCEPTANCE)
+        set(
+            _CPACK_NUGET_REQUIRELICENSEACCEPTANCE_TAG
+            "<requireLicenseAcceptance>true</requireLicenseAcceptance>"
+          )
+    endif()
+    _cpack_nuget_variable_fallback_and_wrap_into_element(releaseNotes RELEASE_NOTES)
+    _cpack_nuget_variable_fallback_and_wrap_into_element(copyright COPYRIGHT)
+    # "language" is a locale identifier such as "en_CA"
+    _cpack_nuget_variable_fallback_and_wrap_into_element(language LANGUAGE)
+    _cpack_nuget_variable_fallback_and_wrap_into_element(tags TAGS LIST_GLUE " ")
+    # "repository" holds repository metadata consisting of four optional
+    # attributes: "type", "url", "branch", and "commit". While all fields are
+    # considered optional, they are not independent. Currently unsupported.
+
+    # Handle dependencies
+    _cpack_nuget_variable_fallback(_deps DEPENDENCIES)
+    set(_collected_deps)
+    foreach(_dep IN LISTS _deps)
+        _cpack_nuget_debug("  checking dependency `${_dep}`")
+
+        _cpack_nuget_variable_fallback(_ver DEPENDENCIES_${_dep}_VERSION)
+
+        if(NOT _ver)
+            string(TOUPPER "${_dep}" _dep_upper)
+            _cpack_nuget_variable_fallback(_ver DEPENDENCIES_${_dep_upper}_VERSION)
+        endif()
+
+        if(_ver)
+            _cpack_nuget_debug("  got `${_dep}` dependency version ${_ver}")
+            string(CONCAT _collected_deps "${_collected_deps}" "            <dependency id=\"${_dep}\" version=\"${_ver}\" />\n")
+        endif()
+    endforeach()
+
+    # Render deps into the variable
+    if(_collected_deps)
+        string(CONCAT _CPACK_NUGET_DEPENDENCIES_TAG "<dependencies>\n" "${_collected_deps}" "        </dependencies>")
+    endif()
+
+    # Render the spec file
+    # NOTE The spec filename doesn't matter. Being included into a package,
+    # NuGet will name it properly.
+    _cpack_nuget_debug("Rendering `${CPACK_TEMPORARY_DIRECTORY}/CPack.NuGet.nuspec` file...")
+    configure_file(
+        "${CMAKE_ROOT}/Modules/Internal/CPack/CPack.NuGet.nuspec.in"
+        "${CPACK_TEMPORARY_DIRECTORY}/CPack.NuGet.nuspec"
+        @ONLY
+      )
+endfunction()
+
+function(_cpack_nuget_make_files_tag)
+    set(_files)
+    foreach(_comp IN LISTS ARGN)
+        string(APPEND _files "        <file src=\"${_comp}/**\" target=\".\" />\n")
+    endforeach()
+    set(_CPACK_NUGET_FILES_TAG "<files>\n${_files}    </files>" PARENT_SCOPE)
+endfunction()
+
+find_program(NUGET_EXECUTABLE nuget)
+_cpack_nuget_debug_var(NUGET_EXECUTABLE)
+if(NOT NUGET_EXECUTABLE)
+    message(FATAL_ERROR "NuGet executable not found")
+endif()
+
+# Add details for debug run
+if(CPACK_NUGET_PACKAGE_DEBUG)
+    list(APPEND CPACK_NUGET_PACK_ADDITIONAL_OPTIONS "-Verbosity" "detailed")
+endif()
+
+# Case one: ordinal all-in-one package
+if(CPACK_NUGET_ORDINAL_MONOLITIC)
+    # This variable `CPACK_NUGET_ALL_IN_ONE` set by C++ code:
+    # Meaning to pack all installed files into a single package
+    _cpack_nuget_debug("---[Making an ordinal monolitic package]---")
+    _cpack_nuget_render_spec()
+    execute_process(
+        COMMAND "${NUGET_EXECUTABLE}" pack ${CPACK_NUGET_PACK_ADDITIONAL_OPTIONS}
+        WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
+        RESULT_VARIABLE _nuget_result
+      )
+    if(NOT _nuget_result EQUAL 0)
+        message(FATAL_ERROR "Nuget pack failed")
+    endif()
+
+elseif(CPACK_NUGET_ALL_IN_ONE)
+    # This variable `CPACK_NUGET_ALL_IN_ONE` set by C++ code:
+    # Meaning to pack all installed components into a single package
+    _cpack_nuget_debug("---[Making a monolitic package from installed components]---")
+
+    # Prepare the `files` element which include files from several components
+    _cpack_nuget_make_files_tag(${CPACK_NUGET_COMPONENTS})
+    _cpack_nuget_render_spec()
+    execute_process(
+        COMMAND "${NUGET_EXECUTABLE}" pack ${CPACK_NUGET_PACK_ADDITIONAL_OPTIONS}
+        WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
+        RESULT_VARIABLE _nuget_result
+      )
+    if(NOT _nuget_result EQUAL 0)
+        message(FATAL_ERROR "Nuget pack failed")
+    endif()
+
+else()
+    # Is there any grouped component?
+    if(CPACK_NUGET_GROUPS)
+        _cpack_nuget_debug("---[Making grouped component(s) package(s)]---")
+        foreach(_group IN LISTS CPACK_NUGET_GROUPS)
+            _cpack_nuget_debug("Starting to make the package for group `${_group}`")
+            string(MAKE_C_IDENTIFIER "${_group}" _group_up)
+            string(TOUPPER "${_group_up}" _group_up)
+
+            # Render a spec file which includes all components in the current group
+            unset(_CPACK_NUGET_FILES_TAG)
+            _cpack_nuget_make_files_tag(${CPACK_NUGET_${_group_up}_GROUP_COMPONENTS})
+            # Temporary set `CPACK_NUGET_PACKAGE_COMPONENT` to the group name
+            # to properly collect various per group settings
+            set(CPACK_NUGET_PACKAGE_COMPONENT ${_group})
+            _cpack_nuget_render_spec()
+            unset(CPACK_NUGET_PACKAGE_COMPONENT)
+            execute_process(
+                COMMAND "${NUGET_EXECUTABLE}" pack ${CPACK_NUGET_PACK_ADDITIONAL_OPTIONS}
+                WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
+                RESULT_VARIABLE _nuget_result
+              )
+            if(NOT _nuget_result EQUAL 0)
+                message(FATAL_ERROR "Nuget pack failed")
+            endif()
+        endforeach()
+    endif()
+    # Is there any single component package needed?
+    if(CPACK_NUGET_COMPONENTS)
+        _cpack_nuget_debug("---[Making single-component(s) package(s)]---")
+        foreach(_comp IN LISTS CPACK_NUGET_COMPONENTS)
+            _cpack_nuget_debug("Starting to make the package for component `${_comp}`")
+            # Render a spec file which includes only given component
+            unset(_CPACK_NUGET_FILES_TAG)
+            _cpack_nuget_make_files_tag(${_comp})
+            # Temporary set `CPACK_NUGET_PACKAGE_COMPONENT` to the current
+            # component name to properly collect various per group settings
+            set(CPACK_NUGET_PACKAGE_COMPONENT ${_comp})
+            _cpack_nuget_render_spec()
+            unset(CPACK_NUGET_PACKAGE_COMPONENT)
+            execute_process(
+                COMMAND "${NUGET_EXECUTABLE}" pack ${CPACK_NUGET_PACK_ADDITIONAL_OPTIONS}
+                WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
+                RESULT_VARIABLE _nuget_result
+              )
+            if(NOT _nuget_result EQUAL 0)
+                message(FATAL_ERROR "Nuget pack failed")
+            endif()
+        endforeach()
+    endif()
+endif()
+
+file(GLOB_RECURSE GEN_CPACK_OUTPUT_FILES "${CPACK_TEMPORARY_DIRECTORY}/*.nupkg")
+if(NOT GEN_CPACK_OUTPUT_FILES)
+    message(FATAL_ERROR "NuGet package was not generated at `${CPACK_TEMPORARY_DIRECTORY}`!")
+endif()
+
+_cpack_nuget_debug("Generated files: ${GEN_CPACK_OUTPUT_FILES}")
diff --git a/share/cmake-3.22/Modules/Internal/CPack/CPackRPM.cmake b/share/cmake-3.22/Modules/Internal/CPack/CPackRPM.cmake
new file mode 100644
index 0000000..c72bf6d
--- /dev/null
+++ b/share/cmake-3.22/Modules/Internal/CPack/CPackRPM.cmake
@@ -0,0 +1,1970 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# Author: Eric Noulard with the help of Alexander Neundorf.
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+function(set_spec_script_if_enabled TYPE PACKAGE_NAME VAR)
+  if(NOT "${VAR}" STREQUAL "" AND NOT "${VAR}" STREQUAL "\n")
+    if(PACKAGE_NAME)
+      set(PACKAGE_NAME " -n ${PACKAGE_NAME}")
+    endif()
+    set(${TYPE}_ "%${TYPE}${PACKAGE_NAME}\n${VAR}\n" PARENT_SCOPE)
+  else()
+    set(${TYPE} "" PARENT_SCOPE)
+  endif()
+endfunction()
+
+macro(set_spec_scripts PACKAGE_NAME)
+  # we should only set scripts that were provided
+  # as script announcement without content inside
+  # spec file will generate unneeded dependency
+  # on shell
+
+  set_spec_script_if_enabled(
+    "post"
+    "${PACKAGE_NAME}"
+    "${RPM_SYMLINK_POSTINSTALL}\n${CPACK_RPM_SPEC_POSTINSTALL}")
+
+  set_spec_script_if_enabled(
+    "posttrans"
+    "${PACKAGE_NAME}"
+    "${CPACK_RPM_SPEC_POSTTRANS}")
+
+  set_spec_script_if_enabled(
+    "postun"
+    "${PACKAGE_NAME}"
+    "${CPACK_RPM_SPEC_POSTUNINSTALL}")
+
+  set_spec_script_if_enabled(
+    "pre"
+    "${PACKAGE_NAME}"
+    "${CPACK_RPM_SPEC_PREINSTALL}")
+
+  set_spec_script_if_enabled(
+    "pretrans"
+    "${PACKAGE_NAME}"
+    "${CPACK_RPM_SPEC_PRETRANS}")
+
+  set_spec_script_if_enabled(
+    "preun"
+    "${PACKAGE_NAME}"
+    "${CPACK_RPM_SPEC_PREUNINSTALL}")
+endmacro()
+
+function(get_file_permissions FILE RETURN_VAR)
+  execute_process(COMMAND ls -l ${FILE}
+          OUTPUT_VARIABLE permissions_
+          ERROR_QUIET
+          OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+  string(REPLACE " " ";" permissions_ "${permissions_}")
+  list(GET permissions_ 0 permissions_)
+
+  unset(text_notation_)
+  set(any_chars_ ".")
+  foreach(PERMISSION_TYPE "OWNER" "GROUP" "WORLD")
+    if(permissions_ MATCHES "${any_chars_}r.*")
+      list(APPEND text_notation_ "${PERMISSION_TYPE}_READ")
+    endif()
+    string(APPEND any_chars_ ".")
+    if(permissions_ MATCHES "${any_chars_}w.*")
+      list(APPEND text_notation_ "${PERMISSION_TYPE}_WRITE")
+    endif()
+    string(APPEND any_chars_ ".")
+    if(permissions_ MATCHES "${any_chars_}x.*")
+      list(APPEND text_notation_ "${PERMISSION_TYPE}_EXECUTE")
+    endif()
+  endforeach()
+
+  set(${RETURN_VAR} "${text_notation_}" PARENT_SCOPE)
+endfunction()
+
+function(get_unix_permissions_octal_notation PERMISSIONS_VAR RETURN_VAR)
+  set(PERMISSIONS ${${PERMISSIONS_VAR}})
+  list(LENGTH PERMISSIONS PERM_LEN_PRE)
+  list(REMOVE_DUPLICATES PERMISSIONS)
+  list(LENGTH PERMISSIONS PERM_LEN_POST)
+
+  if(NOT ${PERM_LEN_PRE} EQUAL ${PERM_LEN_POST})
+    message(FATAL_ERROR "${PERMISSIONS_VAR} contains duplicate values.")
+  endif()
+
+  foreach(PERMISSION_TYPE "OWNER" "GROUP" "WORLD")
+    set(${PERMISSION_TYPE}_PERMISSIONS 0)
+
+    foreach(PERMISSION ${PERMISSIONS})
+      if("${PERMISSION}" STREQUAL "${PERMISSION_TYPE}_READ")
+        math(EXPR ${PERMISSION_TYPE}_PERMISSIONS "${${PERMISSION_TYPE}_PERMISSIONS} + 4")
+      elseif("${PERMISSION}" STREQUAL "${PERMISSION_TYPE}_WRITE")
+        math(EXPR ${PERMISSION_TYPE}_PERMISSIONS "${${PERMISSION_TYPE}_PERMISSIONS} + 2")
+      elseif("${PERMISSION}" STREQUAL "${PERMISSION_TYPE}_EXECUTE")
+        math(EXPR ${PERMISSION_TYPE}_PERMISSIONS "${${PERMISSION_TYPE}_PERMISSIONS} + 1")
+      elseif(PERMISSION MATCHES "${PERMISSION_TYPE}.*")
+        message(FATAL_ERROR "${PERMISSIONS_VAR} contains invalid values.")
+      endif()
+    endforeach()
+  endforeach()
+
+  set(${RETURN_VAR} "${OWNER_PERMISSIONS}${GROUP_PERMISSIONS}${WORLD_PERMISSIONS}" PARENT_SCOPE)
+endfunction()
+
+function(cpack_rpm_exact_regex regex_var string)
+  string(REGEX REPLACE "([][+.*()^])" "\\\\\\1" regex "${string}")
+  set("${regex_var}" "${regex}" PARENT_SCOPE)
+endfunction()
+
+function(cpack_rpm_prepare_relocation_paths)
+  # set appropriate prefix, remove possible trailing slash and convert backslashes to slashes
+  if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_PREFIX)
+    file(TO_CMAKE_PATH "${CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_PREFIX}" PATH_PREFIX)
+  elseif(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_PACKAGE_PREFIX)
+    file(TO_CMAKE_PATH "${CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_PACKAGE_PREFIX}" PATH_PREFIX)
+  else()
+    file(TO_CMAKE_PATH "${CPACK_PACKAGING_INSTALL_PREFIX}" PATH_PREFIX)
+  endif()
+
+  set(RPM_RELOCATION_PATHS "${CPACK_RPM_RELOCATION_PATHS}")
+  list(REMOVE_DUPLICATES RPM_RELOCATION_PATHS)
+
+  # set base path prefix
+  if(EXISTS "${WDIR}/${PATH_PREFIX}")
+    if(NOT CPACK_RPM_NO_INSTALL_PREFIX_RELOCATION AND
+       NOT CPACK_RPM_NO_${CPACK_RPM_PACKAGE_COMPONENT}_INSTALL_PREFIX_RELOCATION AND
+       NOT CPACK_RPM_NO_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_INSTALL_PREFIX_RELOCATION)
+      string(APPEND TMP_RPM_PREFIXES "Prefix: ${PATH_PREFIX}\n")
+      list(APPEND RPM_USED_PACKAGE_PREFIXES "${PATH_PREFIX}")
+
+      if(CPACK_RPM_PACKAGE_DEBUG)
+        message("CPackRPM:Debug: removing '${PATH_PREFIX}' from relocation paths")
+      endif()
+    endif()
+  endif()
+
+  # set other path prefixes
+  foreach(RELOCATION_PATH ${RPM_RELOCATION_PATHS})
+    if(IS_ABSOLUTE "${RELOCATION_PATH}")
+      set(PREPARED_RELOCATION_PATH "${RELOCATION_PATH}")
+    elseif(PATH_PREFIX STREQUAL "/")
+      # don't prefix path with a second slash as "//" is treated as network path
+      # by get_filename_component() so it remains in path even inside rpm
+      # package where it may cause problems with relocation
+      set(PREPARED_RELOCATION_PATH "/${RELOCATION_PATH}")
+    else()
+      set(PREPARED_RELOCATION_PATH "${PATH_PREFIX}/${RELOCATION_PATH}")
+    endif()
+
+    # handle cases where path contains extra slashes (e.g. /a//b/ instead of
+    # /a/b)
+    get_filename_component(PREPARED_RELOCATION_PATH
+      "${PREPARED_RELOCATION_PATH}" ABSOLUTE)
+
+    if(EXISTS "${WDIR}/${PREPARED_RELOCATION_PATH}")
+      string(APPEND TMP_RPM_PREFIXES "Prefix: ${PREPARED_RELOCATION_PATH}\n")
+      list(APPEND RPM_USED_PACKAGE_PREFIXES "${PREPARED_RELOCATION_PATH}")
+    endif()
+  endforeach()
+
+  # warn about all the paths that are not relocatable
+  file(GLOB_RECURSE FILE_PATHS_ "${WDIR}/*")
+  foreach(TMP_PATH ${FILE_PATHS_})
+    string(LENGTH "${WDIR}" WDIR_LEN)
+    string(SUBSTRING "${TMP_PATH}" ${WDIR_LEN} -1 TMP_PATH)
+    unset(TMP_PATH_FOUND_)
+
+    foreach(RELOCATION_PATH ${RPM_USED_PACKAGE_PREFIXES})
+      file(RELATIVE_PATH REL_PATH_ "${RELOCATION_PATH}" "${TMP_PATH}")
+      string(SUBSTRING "${REL_PATH_}" 0 2 PREFIX_)
+
+      if(NOT "${PREFIX_}" STREQUAL "..")
+        set(TPM_PATH_FOUND_ TRUE)
+        break()
+      endif()
+    endforeach()
+
+    if(NOT TPM_PATH_FOUND_)
+      message(AUTHOR_WARNING "CPackRPM:Warning: Path ${TMP_PATH} is not on one of the relocatable paths! Package will be partially relocatable.")
+    endif()
+  endforeach()
+
+  set(RPM_USED_PACKAGE_PREFIXES "${RPM_USED_PACKAGE_PREFIXES}" PARENT_SCOPE)
+  set(TMP_RPM_PREFIXES "${TMP_RPM_PREFIXES}" PARENT_SCOPE)
+endfunction()
+
+function(cpack_rpm_prepare_content_list)
+  # get files list
+  file(GLOB_RECURSE CPACK_RPM_INSTALL_FILES LIST_DIRECTORIES true RELATIVE "${WDIR}" "${WDIR}/*")
+  set(CPACK_RPM_INSTALL_FILES "/${CPACK_RPM_INSTALL_FILES}")
+  string(REPLACE ";" ";/" CPACK_RPM_INSTALL_FILES "${CPACK_RPM_INSTALL_FILES}")
+
+  # if we are creating a relocatable package, omit parent directories of
+  # CPACK_RPM_PACKAGE_PREFIX. This is achieved by building a "filter list"
+  # which is passed to the find command that generates the content-list
+  if(CPACK_RPM_PACKAGE_RELOCATABLE)
+    # get a list of the elements in CPACK_RPM_PACKAGE_PREFIXES that are
+    # destinct parent paths of other relocation paths and remove the
+    # final element (so the install-prefix dir itself is not omitted
+    # from the RPM's content-list)
+    list(SORT RPM_USED_PACKAGE_PREFIXES)
+    set(_DISTINCT_PATH "NOT_SET")
+    foreach(_RPM_RELOCATION_PREFIX ${RPM_USED_PACKAGE_PREFIXES})
+      if(NOT "${_RPM_RELOCATION_PREFIX}" MATCHES "${_DISTINCT_PATH}/.*")
+        set(_DISTINCT_PATH "${_RPM_RELOCATION_PREFIX}")
+
+        string(REPLACE "/" ";" _CPACK_RPM_PACKAGE_PREFIX_ELEMS " ${_RPM_RELOCATION_PREFIX}")
+        list(REMOVE_AT _CPACK_RPM_PACKAGE_PREFIX_ELEMS -1)
+        unset(_TMP_LIST)
+        # Now generate all of the parent dirs of the relocation path
+        foreach(_PREFIX_PATH_ELEM ${_CPACK_RPM_PACKAGE_PREFIX_ELEMS})
+          list(APPEND _TMP_LIST "${_PREFIX_PATH_ELEM}")
+          string(REPLACE ";" "/" _OMIT_DIR "${_TMP_LIST}")
+          separate_arguments(_OMIT_DIR)
+          list(APPEND _RPM_DIRS_TO_OMIT ${_OMIT_DIR})
+        endforeach()
+      endif()
+    endforeach()
+  endif()
+
+  if(CPACK_RPM_PACKAGE_DEBUG)
+    message("CPackRPM:Debug: Initial list of path to OMIT in RPM: ${_RPM_DIRS_TO_OMIT}")
+  endif()
+
+  if(NOT DEFINED CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST)
+    set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST /etc /etc/init.d /usr /usr/bin
+        /usr/include /usr/lib /usr/libx32 /usr/lib64
+        /usr/share /usr/share/aclocal /usr/share/doc )
+    if(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION)
+      if(CPACK_RPM_PACKAGE_DEBUG)
+        message("CPackRPM:Debug: Adding ${CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION} to builtin omit list.")
+      endif()
+      list(APPEND CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST "${CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION}")
+    endif()
+  endif()
+
+  if(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST)
+    if(CPACK_RPM_PACKAGE_DEBUG)
+      message("CPackRPM:Debug: CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST= ${CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST}")
+    endif()
+    list(APPEND _RPM_DIRS_TO_OMIT ${CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST})
+  endif()
+
+  if(CPACK_RPM_PACKAGE_DEBUG)
+    message("CPackRPM:Debug: Final list of path to OMIT in RPM: ${_RPM_DIRS_TO_OMIT}")
+  endif()
+
+  list(REMOVE_ITEM CPACK_RPM_INSTALL_FILES ${_RPM_DIRS_TO_OMIT})
+
+  # add man paths that will be compressed
+  # (copied from /usr/lib/rpm/brp-compress - script that does the actual
+  # compressing)
+  list(APPEND MAN_LOCATIONS "/usr/man/man.*" "/usr/man/.*/man.*" "/usr/info.*"
+    "/usr/share/man/man.*" "/usr/share/man/.*/man.*" "/usr/share/info.*"
+    "/usr/kerberos/man.*" "/usr/X11R6/man/man.*" "/usr/lib/perl5/man/man.*"
+    "/usr/share/doc/.*/man/man.*" "/usr/lib/.*/man/man.*")
+
+  if(CPACK_RPM_ADDITIONAL_MAN_DIRS)
+    if(CPACK_RPM_PACKAGE_DEBUG)
+      message("CPackRPM:Debug: CPACK_RPM_ADDITIONAL_MAN_DIRS= ${CPACK_RPM_ADDITIONAL_MAN_DIRS}")
+    endif()
+    list(APPEND MAN_LOCATIONS ${CPACK_RPM_ADDITIONAL_MAN_DIRS})
+  endif()
+
+  foreach(PACK_LOCATION IN LISTS CPACK_RPM_INSTALL_FILES)
+    foreach(MAN_LOCATION IN LISTS MAN_LOCATIONS)
+      # man pages are files inside a certain location
+      if(PACK_LOCATION MATCHES "${MAN_LOCATION}/"
+        AND NOT IS_DIRECTORY "${WDIR}${PACK_LOCATION}"
+        AND NOT IS_SYMLINK "${WDIR}${PACK_LOCATION}")
+        list(FIND CPACK_RPM_INSTALL_FILES "${PACK_LOCATION}" INDEX)
+        # insert file location that covers compressed man pages
+        # even if using a wildcard causes duplicates as those are
+        # handled by RPM and we still keep the same file list
+        # in spec file - wildcard only represents file type (e.g. .gz)
+        list(INSERT CPACK_RPM_INSTALL_FILES ${INDEX} "${PACK_LOCATION}*")
+        # remove file location that doesn't cover compressed man pages
+        math(EXPR INDEX ${INDEX}+1)
+        list(REMOVE_AT CPACK_RPM_INSTALL_FILES ${INDEX})
+
+        break()
+      endif()
+    endforeach()
+  endforeach()
+
+  set(CPACK_RPM_INSTALL_FILES "${CPACK_RPM_INSTALL_FILES}" PARENT_SCOPE)
+endfunction()
+
+function(cpack_rpm_symlink_get_relocation_prefixes LOCATION PACKAGE_PREFIXES RETURN_VARIABLE)
+  foreach(PKG_PREFIX IN LISTS PACKAGE_PREFIXES)
+    string(REGEX MATCH "^${PKG_PREFIX}/.*" FOUND_ "${LOCATION}")
+    if(FOUND_)
+      list(APPEND TMP_PREFIXES "${PKG_PREFIX}")
+    endif()
+  endforeach()
+
+  set(${RETURN_VARIABLE} "${TMP_PREFIXES}" PARENT_SCOPE)
+endfunction()
+
+function(cpack_rpm_symlink_create_relocation_script PACKAGE_PREFIXES)
+  list(LENGTH PACKAGE_PREFIXES LAST_INDEX)
+  set(SORTED_PACKAGE_PREFIXES "${PACKAGE_PREFIXES}")
+  list(SORT SORTED_PACKAGE_PREFIXES)
+  list(REVERSE SORTED_PACKAGE_PREFIXES)
+  math(EXPR LAST_INDEX ${LAST_INDEX}-1)
+
+  foreach(SYMLINK_INDEX RANGE ${LAST_INDEX})
+    list(GET SORTED_PACKAGE_PREFIXES ${SYMLINK_INDEX} SRC_PATH)
+    list(FIND PACKAGE_PREFIXES "${SRC_PATH}" SYMLINK_INDEX) # reverse magic
+    string(LENGTH "${SRC_PATH}" SRC_PATH_LEN)
+
+    set(PARTS_CNT 0)
+    set(SCRIPT_PART "if [ \"$RPM_INSTALL_PREFIX${SYMLINK_INDEX}\" != \"${SRC_PATH}\" ]; then\n")
+
+    # both paths relocated
+    foreach(POINT_INDEX RANGE ${LAST_INDEX})
+      list(GET SORTED_PACKAGE_PREFIXES ${POINT_INDEX} POINT_PATH)
+      list(FIND PACKAGE_PREFIXES "${POINT_PATH}" POINT_INDEX) # reverse magic
+      string(LENGTH "${POINT_PATH}" POINT_PATH_LEN)
+
+      if(_RPM_RELOCATION_SCRIPT_${SYMLINK_INDEX}_${POINT_INDEX})
+        if("${SYMLINK_INDEX}" EQUAL "${POINT_INDEX}")
+          set(INDENT "")
+        else()
+          string(APPEND SCRIPT_PART "  if [ \"$RPM_INSTALL_PREFIX${POINT_INDEX}\" != \"${POINT_PATH}\" ]; then\n")
+          set(INDENT "  ")
+        endif()
+
+        foreach(RELOCATION_NO IN LISTS _RPM_RELOCATION_SCRIPT_${SYMLINK_INDEX}_${POINT_INDEX})
+          math(EXPR PARTS_CNT ${PARTS_CNT}+1)
+
+          math(EXPR RELOCATION_INDEX ${RELOCATION_NO}-1)
+          list(GET _RPM_RELOCATION_SCRIPT_PAIRS ${RELOCATION_INDEX} RELOCATION_SCRIPT_PAIR)
+          string(FIND "${RELOCATION_SCRIPT_PAIR}" ":" SPLIT_INDEX)
+
+          math(EXPR SRC_PATH_END ${SPLIT_INDEX}-${SRC_PATH_LEN})
+          string(SUBSTRING ${RELOCATION_SCRIPT_PAIR} ${SRC_PATH_LEN} ${SRC_PATH_END} SYMLINK_)
+
+          math(EXPR POINT_PATH_START ${SPLIT_INDEX}+1+${POINT_PATH_LEN})
+          string(SUBSTRING ${RELOCATION_SCRIPT_PAIR} ${POINT_PATH_START} -1 POINT_)
+
+          string(APPEND SCRIPT_PART "  ${INDENT}if [ -z \"$CPACK_RPM_RELOCATED_SYMLINK_${RELOCATION_INDEX}\" ]; then\n")
+          string(APPEND SCRIPT_PART "    ${INDENT}ln -s \"$RPM_INSTALL_PREFIX${POINT_INDEX}${POINT_}\" \"$RPM_INSTALL_PREFIX${SYMLINK_INDEX}${SYMLINK_}\"\n")
+          string(APPEND SCRIPT_PART "    ${INDENT}CPACK_RPM_RELOCATED_SYMLINK_${RELOCATION_INDEX}=true\n")
+          string(APPEND SCRIPT_PART "  ${INDENT}fi\n")
+        endforeach()
+
+        if(NOT "${SYMLINK_INDEX}" EQUAL "${POINT_INDEX}")
+          string(APPEND SCRIPT_PART "  fi\n")
+        endif()
+      endif()
+    endforeach()
+
+    # source path relocated
+    if(_RPM_RELOCATION_SCRIPT_${SYMLINK_INDEX}_X)
+      foreach(RELOCATION_NO IN LISTS _RPM_RELOCATION_SCRIPT_${SYMLINK_INDEX}_X)
+        math(EXPR PARTS_CNT ${PARTS_CNT}+1)
+
+        math(EXPR RELOCATION_INDEX ${RELOCATION_NO}-1)
+        list(GET _RPM_RELOCATION_SCRIPT_PAIRS ${RELOCATION_INDEX} RELOCATION_SCRIPT_PAIR)
+        string(FIND "${RELOCATION_SCRIPT_PAIR}" ":" SPLIT_INDEX)
+
+        math(EXPR SRC_PATH_END ${SPLIT_INDEX}-${SRC_PATH_LEN})
+        string(SUBSTRING ${RELOCATION_SCRIPT_PAIR} ${SRC_PATH_LEN} ${SRC_PATH_END} SYMLINK_)
+
+        math(EXPR POINT_PATH_START ${SPLIT_INDEX}+1)
+        string(SUBSTRING ${RELOCATION_SCRIPT_PAIR} ${POINT_PATH_START} -1 POINT_)
+
+        string(APPEND SCRIPT_PART "  if [ -z \"$CPACK_RPM_RELOCATED_SYMLINK_${RELOCATION_INDEX}\" ]; then\n")
+        string(APPEND SCRIPT_PART "    ln -s \"${POINT_}\" \"$RPM_INSTALL_PREFIX${SYMLINK_INDEX}${SYMLINK_}\"\n")
+        string(APPEND SCRIPT_PART "    CPACK_RPM_RELOCATED_SYMLINK_${RELOCATION_INDEX}=true\n")
+        string(APPEND SCRIPT_PART "  fi\n")
+      endforeach()
+    endif()
+
+    if(PARTS_CNT)
+      set(SCRIPT "${SCRIPT_PART}")
+      string(APPEND SCRIPT "fi\n")
+    endif()
+  endforeach()
+
+  # point path relocated
+  foreach(POINT_INDEX RANGE ${LAST_INDEX})
+    list(GET SORTED_PACKAGE_PREFIXES ${POINT_INDEX} POINT_PATH)
+    list(FIND PACKAGE_PREFIXES "${POINT_PATH}" POINT_INDEX) # reverse magic
+    string(LENGTH "${POINT_PATH}" POINT_PATH_LEN)
+
+    if(_RPM_RELOCATION_SCRIPT_X_${POINT_INDEX})
+      string(APPEND SCRIPT "if [ \"$RPM_INSTALL_PREFIX${POINT_INDEX}\" != \"${POINT_PATH}\" ]; then\n")
+
+      foreach(RELOCATION_NO IN LISTS _RPM_RELOCATION_SCRIPT_X_${POINT_INDEX})
+        math(EXPR RELOCATION_INDEX ${RELOCATION_NO}-1)
+        list(GET _RPM_RELOCATION_SCRIPT_PAIRS ${RELOCATION_INDEX} RELOCATION_SCRIPT_PAIR)
+        string(FIND "${RELOCATION_SCRIPT_PAIR}" ":" SPLIT_INDEX)
+
+        string(SUBSTRING ${RELOCATION_SCRIPT_PAIR} 0 ${SPLIT_INDEX} SYMLINK_)
+
+        math(EXPR POINT_PATH_START ${SPLIT_INDEX}+1+${POINT_PATH_LEN})
+        string(SUBSTRING ${RELOCATION_SCRIPT_PAIR} ${POINT_PATH_START} -1 POINT_)
+
+        string(APPEND SCRIPT "  if [ -z \"$CPACK_RPM_RELOCATED_SYMLINK_${RELOCATION_INDEX}\" ]; then\n")
+        string(APPEND SCRIPT "    ln -s \"$RPM_INSTALL_PREFIX${POINT_INDEX}${POINT_}\" \"${SYMLINK_}\"\n")
+        string(APPEND SCRIPT "    CPACK_RPM_RELOCATED_SYMLINK_${RELOCATION_INDEX}=true\n")
+        string(APPEND SCRIPT "  fi\n")
+      endforeach()
+
+      string(APPEND SCRIPT "fi\n")
+    endif()
+  endforeach()
+
+  # no path relocated
+  if(_RPM_RELOCATION_SCRIPT_X_X)
+    foreach(RELOCATION_NO IN LISTS _RPM_RELOCATION_SCRIPT_X_X)
+      math(EXPR RELOCATION_INDEX ${RELOCATION_NO}-1)
+      list(GET _RPM_RELOCATION_SCRIPT_PAIRS ${RELOCATION_INDEX} RELOCATION_SCRIPT_PAIR)
+      string(FIND "${RELOCATION_SCRIPT_PAIR}" ":" SPLIT_INDEX)
+
+      string(SUBSTRING ${RELOCATION_SCRIPT_PAIR} 0 ${SPLIT_INDEX} SYMLINK_)
+
+      math(EXPR POINT_PATH_START ${SPLIT_INDEX}+1)
+      string(SUBSTRING ${RELOCATION_SCRIPT_PAIR} ${POINT_PATH_START} -1 POINT_)
+
+      string(APPEND SCRIPT "if [ -z \"$CPACK_RPM_RELOCATED_SYMLINK_${RELOCATION_INDEX}\" ]; then\n")
+      string(APPEND SCRIPT "  ln -s \"${POINT_}\" \"${SYMLINK_}\"\n")
+      string(APPEND SCRIPT "fi\n")
+    endforeach()
+  endif()
+
+  set(RPM_SYMLINK_POSTINSTALL "${SCRIPT}" PARENT_SCOPE)
+endfunction()
+
+function(cpack_rpm_symlink_add_for_relocation_script PACKAGE_PREFIXES SYMLINK SYMLINK_RELOCATION_PATHS POINT POINT_RELOCATION_PATHS)
+  list(LENGTH SYMLINK_RELOCATION_PATHS SYMLINK_PATHS_COUTN)
+  list(LENGTH POINT_RELOCATION_PATHS POINT_PATHS_COUNT)
+
+  list(APPEND _RPM_RELOCATION_SCRIPT_PAIRS "${SYMLINK}:${POINT}")
+  list(LENGTH _RPM_RELOCATION_SCRIPT_PAIRS PAIR_NO)
+
+  if(SYMLINK_PATHS_COUTN)
+    foreach(SYMLINK_RELOC_PATH IN LISTS SYMLINK_RELOCATION_PATHS)
+      list(FIND PACKAGE_PREFIXES "${SYMLINK_RELOC_PATH}" SYMLINK_INDEX)
+
+      # source path relocated
+      list(APPEND _RPM_RELOCATION_SCRIPT_${SYMLINK_INDEX}_X "${PAIR_NO}")
+      list(APPEND RELOCATION_VARS "_RPM_RELOCATION_SCRIPT_${SYMLINK_INDEX}_X")
+
+      foreach(POINT_RELOC_PATH IN LISTS POINT_RELOCATION_PATHS)
+        list(FIND PACKAGE_PREFIXES "${POINT_RELOC_PATH}" POINT_INDEX)
+
+        # both paths relocated
+        list(APPEND _RPM_RELOCATION_SCRIPT_${SYMLINK_INDEX}_${POINT_INDEX} "${PAIR_NO}")
+        list(APPEND RELOCATION_VARS "_RPM_RELOCATION_SCRIPT_${SYMLINK_INDEX}_${POINT_INDEX}")
+
+        # point path relocated
+        list(APPEND _RPM_RELOCATION_SCRIPT_X_${POINT_INDEX} "${PAIR_NO}")
+        list(APPEND RELOCATION_VARS "_RPM_RELOCATION_SCRIPT_X_${POINT_INDEX}")
+      endforeach()
+    endforeach()
+  elseif(POINT_PATHS_COUNT)
+    foreach(POINT_RELOC_PATH IN LISTS POINT_RELOCATION_PATHS)
+      list(FIND PACKAGE_PREFIXES "${POINT_RELOC_PATH}" POINT_INDEX)
+
+      # point path relocated
+      list(APPEND _RPM_RELOCATION_SCRIPT_X_${POINT_INDEX} "${PAIR_NO}")
+      list(APPEND RELOCATION_VARS "_RPM_RELOCATION_SCRIPT_X_${POINT_INDEX}")
+    endforeach()
+  endif()
+
+  # no path relocated
+  list(APPEND _RPM_RELOCATION_SCRIPT_X_X "${PAIR_NO}")
+  list(APPEND RELOCATION_VARS "_RPM_RELOCATION_SCRIPT_X_X")
+
+  # place variables into parent scope
+  foreach(VAR IN LISTS RELOCATION_VARS)
+    set(${VAR} "${${VAR}}" PARENT_SCOPE)
+  endforeach()
+  set(_RPM_RELOCATION_SCRIPT_PAIRS "${_RPM_RELOCATION_SCRIPT_PAIRS}" PARENT_SCOPE)
+  set(REQUIRES_SYMLINK_RELOCATION_SCRIPT "true" PARENT_SCOPE)
+  set(DIRECTIVE "%ghost " PARENT_SCOPE)
+endfunction()
+
+function(cpack_rpm_prepare_install_files INSTALL_FILES_LIST WDIR PACKAGE_PREFIXES IS_RELOCATABLE)
+  # Prepend directories in ${CPACK_RPM_INSTALL_FILES} with %dir
+  # This is necessary to avoid duplicate files since rpmbuild does
+  # recursion on its own when encountering a pathname which is a directory
+  # which is not flagged as %dir
+  string(STRIP "${INSTALL_FILES_LIST}" INSTALL_FILES_LIST)
+  string(REPLACE "\n" ";" INSTALL_FILES_LIST
+                          "${INSTALL_FILES_LIST}")
+  string(REPLACE "\"" "" INSTALL_FILES_LIST
+                          "${INSTALL_FILES_LIST}")
+  string(LENGTH "${WDIR}" WDR_LEN_)
+
+  list(SORT INSTALL_FILES_LIST) # make file order consistent on all platforms
+
+  foreach(F IN LISTS INSTALL_FILES_LIST)
+    unset(DIRECTIVE)
+
+    if(IS_SYMLINK "${WDIR}/${F}")
+      if(IS_RELOCATABLE)
+        # check that symlink has relocatable format
+        get_filename_component(SYMLINK_LOCATION_ "${WDIR}/${F}" DIRECTORY)
+        execute_process(COMMAND ls -la "${WDIR}/${F}"
+                  WORKING_DIRECTORY "${WDIR}"
+                  OUTPUT_VARIABLE SYMLINK_POINT_
+                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+        string(FIND "${SYMLINK_POINT_}" "->" SYMLINK_POINT_INDEX_ REVERSE)
+        math(EXPR SYMLINK_POINT_INDEX_ ${SYMLINK_POINT_INDEX_}+3)
+        string(LENGTH "${SYMLINK_POINT_}" SYMLINK_POINT_LENGTH_)
+
+        # get destination path
+        string(SUBSTRING "${SYMLINK_POINT_}" ${SYMLINK_POINT_INDEX_} ${SYMLINK_POINT_LENGTH_} SYMLINK_POINT_)
+
+        # check if path is relative or absolute
+        string(SUBSTRING "${SYMLINK_POINT_}" 0 1 SYMLINK_IS_ABSOLUTE_)
+
+        if(${SYMLINK_IS_ABSOLUTE_} STREQUAL "/")
+          # prevent absolute paths from having /../ or /./ section inside of them
+          get_filename_component(SYMLINK_POINT_ "${SYMLINK_POINT_}" ABSOLUTE)
+        else()
+          # handle relative path
+          get_filename_component(SYMLINK_POINT_ "${SYMLINK_LOCATION_}/${SYMLINK_POINT_}" ABSOLUTE)
+        endif()
+
+        # recalculate path length after conversion to canonical form
+        string(LENGTH "${SYMLINK_POINT_}" SYMLINK_POINT_LENGTH_)
+
+        cpack_rpm_exact_regex(IN_SYMLINK_POINT_REGEX "${WDIR}")
+        string(APPEND IN_SYMLINK_POINT_REGEX "/.*")
+        if(SYMLINK_POINT_ MATCHES "${IN_SYMLINK_POINT_REGEX}")
+          # only symlinks that are pointing inside the packaging structure should be checked for relocation
+          string(SUBSTRING "${SYMLINK_POINT_}" ${WDR_LEN_} -1 SYMLINK_POINT_WD_)
+          cpack_rpm_symlink_get_relocation_prefixes("${F}" "${PACKAGE_PREFIXES}" "SYMLINK_RELOCATIONS")
+          cpack_rpm_symlink_get_relocation_prefixes("${SYMLINK_POINT_WD_}" "${PACKAGE_PREFIXES}" "POINT_RELOCATIONS")
+
+          list(LENGTH SYMLINK_RELOCATIONS SYMLINK_RELOCATIONS_COUNT)
+          list(LENGTH POINT_RELOCATIONS POINT_RELOCATIONS_COUNT)
+        else()
+          # location pointed to is outside WDR so it should be treated as a permanent symlink
+          set(SYMLINK_POINT_WD_ "${SYMLINK_POINT_}")
+
+          unset(SYMLINK_RELOCATIONS)
+          unset(POINT_RELOCATIONS)
+          unset(SYMLINK_RELOCATIONS_COUNT)
+          unset(POINT_RELOCATIONS_COUNT)
+
+          message(AUTHOR_WARNING "CPackRPM:Warning: Symbolic link '${F}' points to location that is outside packaging path! Link will possibly not be relocatable.")
+        endif()
+
+        if(SYMLINK_RELOCATIONS_COUNT AND POINT_RELOCATIONS_COUNT)
+          # find matching
+          foreach(SYMLINK_RELOCATION_PREFIX IN LISTS SYMLINK_RELOCATIONS)
+            list(FIND POINT_RELOCATIONS "${SYMLINK_RELOCATION_PREFIX}" FOUND_INDEX)
+            if(NOT ${FOUND_INDEX} EQUAL -1)
+              break()
+            endif()
+          endforeach()
+
+          if(NOT ${FOUND_INDEX} EQUAL -1)
+            # symlinks have the same subpath
+            if(${SYMLINK_RELOCATIONS_COUNT} EQUAL 1 AND ${POINT_RELOCATIONS_COUNT} EQUAL 1)
+              # permanent symlink
+              get_filename_component(SYMLINK_LOCATION_ "${F}" DIRECTORY)
+              file(RELATIVE_PATH FINAL_PATH_ ${SYMLINK_LOCATION_} ${SYMLINK_POINT_WD_})
+              execute_process(COMMAND "${CMAKE_COMMAND}" -E create_symlink "${FINAL_PATH_}" "${WDIR}/${F}")
+            else()
+              # relocation subpaths
+              cpack_rpm_symlink_add_for_relocation_script("${PACKAGE_PREFIXES}" "${F}" "${SYMLINK_RELOCATIONS}"
+                  "${SYMLINK_POINT_WD_}" "${POINT_RELOCATIONS}")
+            endif()
+          else()
+            # not on the same relocation path
+            cpack_rpm_symlink_add_for_relocation_script("${PACKAGE_PREFIXES}" "${F}" "${SYMLINK_RELOCATIONS}"
+                "${SYMLINK_POINT_WD_}" "${POINT_RELOCATIONS}")
+          endif()
+        elseif(POINT_RELOCATIONS_COUNT)
+          # point is relocatable
+          cpack_rpm_symlink_add_for_relocation_script("${PACKAGE_PREFIXES}" "${F}" "${SYMLINK_RELOCATIONS}"
+              "${SYMLINK_POINT_WD_}" "${POINT_RELOCATIONS}")
+        else()
+          # is not relocatable or points to non relocatable path - permanent symlink
+          execute_process(COMMAND "${CMAKE_COMMAND}" -E create_symlink "${SYMLINK_POINT_WD_}" "${WDIR}/${F}")
+        endif()
+      endif()
+    elseif(IS_DIRECTORY "${WDIR}/${F}")
+      set(DIRECTIVE "%dir ")
+    endif()
+
+    string(APPEND INSTALL_FILES "${DIRECTIVE}\"${F}\"\n")
+  endforeach()
+
+  if(REQUIRES_SYMLINK_RELOCATION_SCRIPT)
+    cpack_rpm_symlink_create_relocation_script("${PACKAGE_PREFIXES}")
+  endif()
+
+  set(RPM_SYMLINK_POSTINSTALL "${RPM_SYMLINK_POSTINSTALL}" PARENT_SCOPE)
+  set(CPACK_RPM_INSTALL_FILES "${INSTALL_FILES}" PARENT_SCOPE)
+endfunction()
+
+if(CMAKE_BINARY_DIR)
+  message(FATAL_ERROR "CPackRPM.cmake may only be used by CPack internally.")
+endif()
+
+if(NOT UNIX)
+  message(FATAL_ERROR "CPackRPM.cmake may only be used under UNIX.")
+endif()
+
+# We need to check if the binaries were compiled with debug symbols
+# because without them the package will be useless
+function(cpack_rpm_debugsymbol_check INSTALL_FILES WORKING_DIR)
+  if(NOT CPACK_BUILD_SOURCE_DIRS)
+    message(FATAL_ERROR "CPackRPM: CPACK_BUILD_SOURCE_DIRS variable is not set!"
+      " Required for debuginfo packaging. See documentation of"
+      " CPACK_RPM_DEBUGINFO_PACKAGE variable for details.")
+  endif()
+
+  # With objdump we should check the debug symbols
+  find_program(OBJDUMP_EXECUTABLE objdump)
+  if(NOT OBJDUMP_EXECUTABLE)
+    message(FATAL_ERROR "CPackRPM: objdump binary could not be found!"
+      " Required for debuginfo packaging. See documentation of"
+      " CPACK_RPM_DEBUGINFO_PACKAGE variable for details.")
+  endif()
+
+  # With debugedit we prepare source files list
+  find_program(DEBUGEDIT_EXECUTABLE debugedit "/usr/lib/rpm/")
+  if(NOT DEBUGEDIT_EXECUTABLE)
+    message(FATAL_ERROR "CPackRPM: debugedit binary could not be found!"
+      " Required for debuginfo packaging. See documentation of"
+      " CPACK_RPM_DEBUGINFO_PACKAGE variable for details.")
+  endif()
+
+  unset(mkdir_list_)
+  unset(cp_list_)
+  unset(additional_sources_)
+
+  foreach(F IN LISTS INSTALL_FILES)
+    if(IS_DIRECTORY "${WORKING_DIR}/${F}" OR IS_SYMLINK "${WORKING_DIR}/${F}")
+      continue()
+    endif()
+
+    execute_process(COMMAND "${OBJDUMP_EXECUTABLE}" -h ${WORKING_DIR}/${F}
+                    WORKING_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}"
+                    RESULT_VARIABLE OBJDUMP_EXEC_RESULT
+                    OUTPUT_VARIABLE OBJDUMP_OUT
+                    ERROR_QUIET)
+    # Check if the given file is an executable or not
+    if(NOT OBJDUMP_EXEC_RESULT)
+      string(FIND "${OBJDUMP_OUT}" "debug" FIND_RESULT)
+      if(FIND_RESULT GREATER -1)
+        set(index_ 0)
+        foreach(source_dir_ IN LISTS CPACK_BUILD_SOURCE_DIRS)
+          string(LENGTH "${source_dir_}" source_dir_len_)
+          string(LENGTH "${CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX}/src_${index_}" debuginfo_dir_len)
+          if(source_dir_len_ LESS debuginfo_dir_len)
+            message(FATAL_ERROR "CPackRPM: source dir path '${source_dir_}' is"
+              " shorter than debuginfo sources dir path '${CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX}/src_${index_}'!"
+              " Source dir path must be longer than debuginfo sources dir path."
+              " Set CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX variable to a shorter value"
+              " or make source dir path longer."
+              " Required for debuginfo packaging. See documentation of"
+              " CPACK_RPM_DEBUGINFO_PACKAGE variable for details.")
+          endif()
+
+          file(REMOVE "${CPACK_RPM_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}/debugsources_add.list")
+          execute_process(COMMAND "${DEBUGEDIT_EXECUTABLE}" -b "${source_dir_}" -d "${CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX}/src_${index_}" -i -l "${CPACK_RPM_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}/debugsources_add.list" "${WORKING_DIR}/${F}"
+              RESULT_VARIABLE res_
+              OUTPUT_VARIABLE opt_
+              ERROR_VARIABLE err_
+            )
+
+          file(STRINGS
+            "${CPACK_RPM_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}/debugsources_add.list"
+            sources_)
+          list(REMOVE_DUPLICATES sources_)
+
+          foreach(source_ IN LISTS sources_)
+            if(EXISTS "${source_dir_}/${source_}" AND NOT IS_DIRECTORY "${source_dir_}/${source_}")
+              get_filename_component(path_part_ "${source_}" DIRECTORY)
+              list(APPEND mkdir_list_ "%{buildroot}${CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX}/src_${index_}/${path_part_}")
+              list(APPEND cp_list_ "cp \"${source_dir_}/${source_}\" \"%{buildroot}${CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX}/src_${index_}/${path_part_}\"")
+
+              list(APPEND additional_sources_ "${CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX}/src_${index_}/${source_}")
+            endif()
+          endforeach()
+
+          math(EXPR index_ "${index_} + 1")
+        endforeach()
+      else()
+        message(WARNING "CPackRPM: File: ${F} does not contain debug symbols. They will possibly be missing from debuginfo package!")
+      endif()
+
+      get_file_permissions("${WORKING_DIR}/${F}" permissions_)
+      if(NOT "USER_EXECUTE" IN_LIST permissions_ AND
+         NOT "GROUP_EXECUTE" IN_LIST permissions_ AND
+         NOT "WORLD_EXECUTE" IN_LIST permissions_)
+        if(CPACK_RPM_INSTALL_WITH_EXEC)
+          execute_process(COMMAND chmod a+x ${WORKING_DIR}/${F}
+                  RESULT_VARIABLE res_
+                  ERROR_VARIABLE err_
+                  OUTPUT_QUIET)
+
+          if(res_)
+            message(FATAL_ERROR "CPackRPM: could not apply execute permissions "
+              "requested by CPACK_RPM_INSTALL_WITH_EXEC variable on "
+              "'${WORKING_DIR}/${F}'! Reason: '${err_}'")
+          endif()
+        else()
+          message(AUTHOR_WARNING "CPackRPM: File: ${WORKING_DIR}/${F} does not "
+            "have execute permissions. Debuginfo symbols will not be extracted"
+            "! Missing debuginfo may cause packaging failure. Consider setting "
+            "execute permissions or setting 'CPACK_RPM_INSTALL_WITH_EXEC' "
+            "variable.")
+        endif()
+      endif()
+    endif()
+  endforeach()
+
+  list(LENGTH mkdir_list_ len_)
+  if(len_)
+    list(REMOVE_DUPLICATES mkdir_list_)
+    unset(TMP_RPM_DEBUGINFO_INSTALL)
+    foreach(part_ IN LISTS mkdir_list_)
+      string(APPEND TMP_RPM_DEBUGINFO_INSTALL "mkdir -p \"${part_}\"\n")
+    endforeach()
+  endif()
+
+  list(LENGTH cp_list_ len_)
+  if(len_)
+    list(REMOVE_DUPLICATES cp_list_)
+    foreach(part_ IN LISTS cp_list_)
+      string(APPEND TMP_RPM_DEBUGINFO_INSTALL "${part_}\n")
+    endforeach()
+  endif()
+
+  if(NOT DEFINED CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS)
+    set(CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS /usr /usr/src /usr/src/debug)
+    if(CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS_ADDITION)
+      if(CPACK_RPM_PACKAGE_DEBUG)
+        message("CPackRPM:Debug: Adding ${CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS_ADDITION} to builtin omit list.")
+      endif()
+      list(APPEND CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS "${CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS_ADDITION}")
+    endif()
+  endif()
+  if(CPACK_RPM_PACKAGE_DEBUG)
+    message("CPackRPM:Debug: CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS= ${CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS}")
+  endif()
+
+  list(LENGTH additional_sources_ len_)
+  if(len_)
+    list(REMOVE_DUPLICATES additional_sources_)
+    unset(additional_sources_all_)
+    foreach(source_ IN LISTS additional_sources_)
+      string(REPLACE "/" ";" split_source_ " ${source_}")
+      list(REMOVE_AT split_source_ 0)
+      unset(tmp_path_)
+      # Now generate all segments of the path
+      foreach(segment_ IN LISTS split_source_)
+        string(APPEND tmp_path_ "/${segment_}")
+        list(APPEND additional_sources_all_ "${tmp_path_}")
+      endforeach()
+    endforeach()
+
+    list(REMOVE_DUPLICATES additional_sources_all_)
+    list(REMOVE_ITEM additional_sources_all_
+      ${CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS})
+
+    unset(TMP_DEBUGINFO_ADDITIONAL_SOURCES)
+    foreach(source_ IN LISTS additional_sources_all_)
+      string(APPEND TMP_DEBUGINFO_ADDITIONAL_SOURCES "${source_}\n")
+    endforeach()
+  endif()
+
+  set(TMP_RPM_DEBUGINFO_INSTALL "${TMP_RPM_DEBUGINFO_INSTALL}" PARENT_SCOPE)
+  set(TMP_DEBUGINFO_ADDITIONAL_SOURCES "${TMP_DEBUGINFO_ADDITIONAL_SOURCES}"
+    PARENT_SCOPE)
+endfunction()
+
+function(cpack_rpm_variable_fallback OUTPUT_VAR_NAME)
+  set(FALLBACK_VAR_NAMES ${ARGN})
+
+  foreach(variable_name IN LISTS FALLBACK_VAR_NAMES)
+    if(${variable_name})
+      set(${OUTPUT_VAR_NAME} "${${variable_name}}" PARENT_SCOPE)
+      break()
+    endif()
+  endforeach()
+endfunction()
+
+function(cpack_rpm_generate_package)
+  # rpmbuild is the basic command for building RPM package
+  # it may be a simple (symbolic) link to rpm command.
+  find_program(RPMBUILD_EXECUTABLE rpmbuild)
+
+  # Check version of the rpmbuild tool this would be easier to
+  # track bugs with users and CPackRPM debug mode.
+  # We may use RPM version in order to check for available version dependent features
+  if(RPMBUILD_EXECUTABLE)
+    execute_process(COMMAND ${RPMBUILD_EXECUTABLE} --version
+                    OUTPUT_VARIABLE _TMP_VERSION
+                    ERROR_QUIET
+                    OUTPUT_STRIP_TRAILING_WHITESPACE)
+    string(REGEX REPLACE "^.* " ""
+           RPMBUILD_EXECUTABLE_VERSION
+           ${_TMP_VERSION})
+    if(CPACK_RPM_PACKAGE_DEBUG)
+      message("CPackRPM:Debug: rpmbuild version is <${RPMBUILD_EXECUTABLE_VERSION}>")
+    endif()
+  endif()
+
+  if(NOT RPMBUILD_EXECUTABLE)
+    message(FATAL_ERROR "RPM package requires rpmbuild executable")
+  endif()
+
+  # Display lsb_release output if DEBUG mode enable
+  # This will help to diagnose problem with CPackRPM
+  # because we will know on which kind of Linux we are
+  if(CPACK_RPM_PACKAGE_DEBUG)
+    find_program(LSB_RELEASE_EXECUTABLE lsb_release)
+    if(LSB_RELEASE_EXECUTABLE)
+      execute_process(COMMAND ${LSB_RELEASE_EXECUTABLE} -a
+                      OUTPUT_VARIABLE _TMP_LSB_RELEASE_OUTPUT
+                      ERROR_QUIET
+                      OUTPUT_STRIP_TRAILING_WHITESPACE)
+      string(REGEX REPLACE "\n" ", "
+             LSB_RELEASE_OUTPUT
+             ${_TMP_LSB_RELEASE_OUTPUT})
+    else ()
+      set(LSB_RELEASE_OUTPUT "lsb_release not installed/found!")
+    endif()
+    message("CPackRPM:Debug: LSB_RELEASE  = ${LSB_RELEASE_OUTPUT}")
+  endif()
+
+  # We may use RPM version in the future in order
+  # to shut down warning about space in buildtree
+  # some recent RPM version should support space in different places.
+  # not checked [yet].
+  if(CPACK_TOPLEVEL_DIRECTORY MATCHES ".* .*")
+    message(FATAL_ERROR "${RPMBUILD_EXECUTABLE} can't handle paths with spaces, use a build directory without spaces for building RPMs.")
+  endif()
+
+  # If rpmbuild is found
+  # we try to discover alien since we may be on non RPM distro like Debian.
+  # In this case we may try to to use more advanced features
+  # like generating RPM directly from DEB using alien.
+  # FIXME feature not finished (yet)
+  find_program(ALIEN_EXECUTABLE alien)
+  if(ALIEN_EXECUTABLE)
+    message(STATUS "alien found, we may be on a Debian based distro.")
+  endif()
+
+  # Are we packaging components ?
+  if(CPACK_RPM_PACKAGE_COMPONENT)
+    string(TOUPPER ${CPACK_RPM_PACKAGE_COMPONENT} CPACK_RPM_PACKAGE_COMPONENT_UPPER)
+  endif()
+
+  set(WDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}")
+
+  #
+  # Use user-defined RPM specific variables value
+  # or generate reasonable default value from
+  # CPACK_xxx generic values.
+  # The variables comes from the needed (mandatory or not)
+  # values found in the RPM specification file aka ".spec" file.
+  # The variables which may/should be defined are:
+  #
+
+  # CPACK_RPM_PACKAGE_SUMMARY (mandatory)
+
+  if(CPACK_RPM_PACKAGE_COMPONENT)
+    cpack_rpm_variable_fallback("CPACK_RPM_PACKAGE_SUMMARY"
+      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_SUMMARY"
+      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_PACKAGE_SUMMARY")
+  endif()
+
+  if(NOT CPACK_RPM_PACKAGE_SUMMARY)
+    if(CPACK_PACKAGE_DESCRIPTION_SUMMARY)
+      set(CPACK_RPM_PACKAGE_SUMMARY ${CPACK_PACKAGE_DESCRIPTION_SUMMARY})
+    else()
+      # if neither var is defined lets use the name as summary
+      string(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_RPM_PACKAGE_SUMMARY)
+    endif()
+  endif()
+
+  if(NOT CPACK_RPM_PACKAGE_URL AND CPACK_PACKAGE_HOMEPAGE_URL)
+    set(CPACK_RPM_PACKAGE_URL "${CPACK_PACKAGE_HOMEPAGE_URL}")
+  endif()
+
+  # CPACK_RPM_PACKAGE_NAME (mandatory)
+  if(NOT CPACK_RPM_PACKAGE_NAME)
+    string(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_RPM_PACKAGE_NAME)
+  endif()
+
+  if(CPACK_RPM_PACKAGE_COMPONENT)
+    string(TOUPPER "${CPACK_RPM_MAIN_COMPONENT}"
+      CPACK_RPM_MAIN_COMPONENT_UPPER)
+
+    if(NOT CPACK_RPM_MAIN_COMPONENT_UPPER STREQUAL CPACK_RPM_PACKAGE_COMPONENT_UPPER)
+      string(APPEND CPACK_RPM_PACKAGE_NAME "-${CPACK_RPM_PACKAGE_COMPONENT}")
+
+      cpack_rpm_variable_fallback("CPACK_RPM_PACKAGE_NAME"
+        "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_NAME"
+        "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_PACKAGE_NAME")
+    endif()
+  endif()
+
+  # CPACK_RPM_PACKAGE_VERSION (mandatory)
+  if(NOT CPACK_RPM_PACKAGE_VERSION)
+    if(NOT CPACK_PACKAGE_VERSION)
+      message(FATAL_ERROR "RPM package requires a package version")
+    endif()
+    set(CPACK_RPM_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})
+  endif()
+  # Replace '-' in version with '_'
+  # '-' character is  an Illegal RPM version character
+  # it is illegal because it is used to separate
+  # RPM "Version" from RPM "Release"
+  string(REPLACE "-" "_" CPACK_RPM_PACKAGE_VERSION ${CPACK_RPM_PACKAGE_VERSION})
+
+  # CPACK_RPM_PACKAGE_ARCHITECTURE (mandatory)
+  if(NOT CPACK_RPM_PACKAGE_ARCHITECTURE)
+    execute_process(COMMAND uname "-m"
+                    OUTPUT_VARIABLE CPACK_RPM_PACKAGE_ARCHITECTURE
+                    OUTPUT_STRIP_TRAILING_WHITESPACE)
+  else()
+    if(CPACK_RPM_PACKAGE_DEBUG)
+      message("CPackRPM:Debug: using user-specified build arch = ${CPACK_RPM_PACKAGE_ARCHITECTURE}")
+    endif()
+  endif()
+
+  if(CPACK_RPM_PACKAGE_COMPONENT)
+    cpack_rpm_variable_fallback("CPACK_RPM_PACKAGE_ARCHITECTURE"
+      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_ARCHITECTURE"
+      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_PACKAGE_ARCHITECTURE")
+
+    if(CPACK_RPM_PACKAGE_DEBUG)
+      message("CPackRPM:Debug: using component build arch = ${CPACK_RPM_PACKAGE_ARCHITECTURE}")
+    endif()
+  endif()
+
+  if(${CPACK_RPM_PACKAGE_ARCHITECTURE} STREQUAL "noarch")
+    set(TMP_RPM_BUILDARCH "Buildarch: ${CPACK_RPM_PACKAGE_ARCHITECTURE}")
+  else()
+    set(TMP_RPM_BUILDARCH "")
+  endif()
+
+  # CPACK_RPM_PACKAGE_RELEASE
+  # The RPM release is the numbering of the RPM package ITSELF
+  # this is the version of the PACKAGING and NOT the version
+  # of the CONTENT of the package.
+  # You may well need to generate a new RPM package release
+  # without changing the version of the packaged software.
+  # This is the case when the packaging is buggy (not) the software :=)
+  # If not set, 1 is a good candidate
+  if(NOT CPACK_RPM_PACKAGE_RELEASE)
+    set(CPACK_RPM_PACKAGE_RELEASE "1")
+  endif()
+
+  if(CPACK_RPM_PACKAGE_RELEASE_DIST)
+    string(APPEND CPACK_RPM_PACKAGE_RELEASE "%{?dist}")
+  endif()
+
+  # CPACK_RPM_PACKAGE_LICENSE
+  if(NOT CPACK_RPM_PACKAGE_LICENSE)
+    set(CPACK_RPM_PACKAGE_LICENSE "unknown")
+  endif()
+
+  # CPACK_RPM_PACKAGE_GROUP
+  if(CPACK_RPM_PACKAGE_COMPONENT)
+    cpack_rpm_variable_fallback("CPACK_RPM_PACKAGE_GROUP"
+      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_GROUP"
+      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_PACKAGE_GROUP")
+  endif()
+
+  if(NOT CPACK_RPM_PACKAGE_GROUP)
+    set(CPACK_RPM_PACKAGE_GROUP "unknown")
+  endif()
+
+  # CPACK_RPM_PACKAGE_VENDOR
+  if(NOT CPACK_RPM_PACKAGE_VENDOR)
+    if(CPACK_PACKAGE_VENDOR)
+      set(CPACK_RPM_PACKAGE_VENDOR "${CPACK_PACKAGE_VENDOR}")
+    else()
+      set(CPACK_RPM_PACKAGE_VENDOR "unknown")
+    endif()
+  endif()
+
+  # CPACK_RPM_PACKAGE_SOURCE
+  # The name of the source tarball in case we generate a source RPM
+
+  # CPACK_RPM_PACKAGE_DESCRIPTION
+  # The variable content may be either
+  #   - explicitly given by the user or
+  #   - filled with the content of CPACK_PACKAGE_DESCRIPTION_FILE
+  #     if it is defined
+  #   - set to a default value
+  #
+
+  if(CPACK_RPM_PACKAGE_COMPONENT)
+    cpack_rpm_variable_fallback("CPACK_RPM_PACKAGE_DESCRIPTION"
+      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_DESCRIPTION"
+      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_PACKAGE_DESCRIPTION"
+      "CPACK_COMPONENT_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DESCRIPTION")
+  endif()
+
+  if(NOT CPACK_RPM_PACKAGE_DESCRIPTION)
+    if(CPACK_PACKAGE_DESCRIPTION_FILE)
+      file(READ ${CPACK_PACKAGE_DESCRIPTION_FILE} CPACK_RPM_PACKAGE_DESCRIPTION)
+    else ()
+      set(CPACK_RPM_PACKAGE_DESCRIPTION "no package description available")
+    endif ()
+  endif ()
+
+  # CPACK_RPM_COMPRESSION_TYPE
+  #
+  if (CPACK_RPM_COMPRESSION_TYPE)
+     if(CPACK_RPM_PACKAGE_DEBUG)
+       message("CPackRPM:Debug: User Specified RPM compression type: ${CPACK_RPM_COMPRESSION_TYPE}")
+     endif()
+     if(CPACK_RPM_COMPRESSION_TYPE STREQUAL "lzma")
+       set(CPACK_RPM_COMPRESSION_TYPE_TMP "%define _binary_payload w9.lzdio")
+     endif()
+     if(CPACK_RPM_COMPRESSION_TYPE STREQUAL "xz")
+       set(CPACK_RPM_COMPRESSION_TYPE_TMP "%define _binary_payload w7.xzdio")
+     endif()
+     if(CPACK_RPM_COMPRESSION_TYPE STREQUAL "bzip2")
+       set(CPACK_RPM_COMPRESSION_TYPE_TMP "%define _binary_payload w9.bzdio")
+     endif()
+     if(CPACK_RPM_COMPRESSION_TYPE STREQUAL "gzip")
+       set(CPACK_RPM_COMPRESSION_TYPE_TMP "%define _binary_payload w9.gzdio")
+     endif()
+  else()
+     set(CPACK_RPM_COMPRESSION_TYPE_TMP "")
+  endif()
+
+  if(NOT CPACK_RPM_PACKAGE_SOURCES)
+    if(CPACK_PACKAGE_RELOCATABLE OR CPACK_RPM_PACKAGE_RELOCATABLE)
+      if(CPACK_RPM_PACKAGE_DEBUG)
+        message("CPackRPM:Debug: Trying to build a relocatable package")
+      endif()
+      if(CPACK_SET_DESTDIR AND (NOT CPACK_SET_DESTDIR STREQUAL "I_ON"))
+        message("CPackRPM:Warning: CPACK_SET_DESTDIR is set (=${CPACK_SET_DESTDIR}) while requesting a relocatable package (CPACK_RPM_PACKAGE_RELOCATABLE is set): this is not supported, the package won't be relocatable.")
+        set(CPACK_RPM_PACKAGE_RELOCATABLE FALSE)
+      else()
+        set(CPACK_RPM_PACKAGE_PREFIX ${CPACK_PACKAGING_INSTALL_PREFIX}) # kept for back compatibility (provided external RPM spec files)
+        cpack_rpm_prepare_relocation_paths()
+        set(CPACK_RPM_PACKAGE_RELOCATABLE TRUE)
+      endif()
+    endif()
+  else()
+    if(CPACK_RPM_PACKAGE_COMPONENT)
+      message(FATAL_ERROR "CPACK_RPM_PACKAGE_SOURCES parameter can not be used"
+        " in combination with CPACK_RPM_PACKAGE_COMPONENT parameter!")
+    endif()
+
+    set(CPACK_RPM_PACKAGE_RELOCATABLE FALSE) # disable relocatable option if building source RPM
+  endif()
+
+  execute_process(
+    COMMAND "${RPMBUILD_EXECUTABLE}" --querytags
+    OUTPUT_VARIABLE RPMBUILD_TAG_LIST
+    OUTPUT_STRIP_TRAILING_WHITESPACE)
+  string(REPLACE "\n" ";" RPMBUILD_TAG_LIST "${RPMBUILD_TAG_LIST}")
+
+  # In some versions of RPM, weak dependency tags are present in the --querytags
+  # list, but unsupported by rpmbuild. A different method must be used to check
+  # if they are supported.
+
+  execute_process(
+    COMMAND ${RPM_EXECUTABLE} --suggests
+    ERROR_QUIET
+    RESULT_VARIABLE RPMBUILD_SUGGESTS_RESULT)
+
+  if(NOT RPMBUILD_SUGGESTS_RESULT EQUAL 0)
+    foreach(_WEAK_DEP SUGGESTS RECOMMENDS SUPPLEMENTS ENHANCES)
+      list(REMOVE_ITEM RPMBUILD_TAG_LIST ${_WEAK_DEP})
+    endforeach()
+  endif()
+
+  if(CPACK_RPM_PACKAGE_EPOCH)
+    set(TMP_RPM_EPOCH "Epoch: ${CPACK_RPM_PACKAGE_EPOCH}")
+  endif()
+
+  # Check if additional fields for RPM spec header are given
+  # There may be some COMPONENT specific variables as well
+  # If component specific var is not provided we use the global one
+  # for each component
+  foreach(_RPM_SPEC_HEADER URL REQUIRES SUGGESTS PROVIDES OBSOLETES PREFIX CONFLICTS AUTOPROV AUTOREQ AUTOREQPROV REQUIRES_PRE REQUIRES_POST REQUIRES_PREUN REQUIRES_POSTUN)
+
+    if(CPACK_RPM_PACKAGE_DEBUG)
+      message("CPackRPM:Debug: processing ${_RPM_SPEC_HEADER}")
+    endif()
+
+    if(CPACK_RPM_PACKAGE_COMPONENT)
+      cpack_rpm_variable_fallback("CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}"
+        "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_${_RPM_SPEC_HEADER}"
+        "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_PACKAGE_${_RPM_SPEC_HEADER}")
+    endif()
+
+    if(DEFINED CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER})
+      # Prefix can be replaced by Prefixes but the old version still works so we'll ignore it for now
+      # Requires* is a special case because it gets transformed to Requires(pre/post/preun/postun)
+      # Auto* is a special case because the tags can not be queried by querytags rpmbuild flag
+      set(special_case_tags_ PREFIX REQUIRES_PRE REQUIRES_POST REQUIRES_PREUN REQUIRES_POSTUN AUTOPROV AUTOREQ AUTOREQPROV)
+      if(NOT _RPM_SPEC_HEADER IN_LIST RPMBUILD_TAG_LIST AND NOT _RPM_SPEC_HEADER IN_LIST special_case_tags_)
+        message(AUTHOR_WARNING "CPackRPM:Warning: ${_RPM_SPEC_HEADER} not "
+            "supported in provided rpmbuild. Tag will not be used.")
+        continue()
+      endif()
+
+      if(CPACK_RPM_PACKAGE_DEBUG)
+        message("CPackRPM:Debug: using CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}")
+      endif()
+
+      set(CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}_TMP ${CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}})
+    endif()
+
+    # Treat the RPM Spec keyword iff it has been properly defined
+    if(DEFINED CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}_TMP)
+      # Transform NAME --> Name e.g. PROVIDES --> Provides
+      # The Upper-case first letter and lowercase tail is the
+      # appropriate value required in the final RPM spec file.
+      string(SUBSTRING ${_RPM_SPEC_HEADER} 1 -1 _PACKAGE_HEADER_TAIL)
+      string(TOLOWER "${_PACKAGE_HEADER_TAIL}" _PACKAGE_HEADER_TAIL)
+      string(SUBSTRING ${_RPM_SPEC_HEADER} 0 1 _PACKAGE_HEADER_NAME)
+      string(APPEND _PACKAGE_HEADER_NAME "${_PACKAGE_HEADER_TAIL}")
+      # The following keywords require parentheses around the "pre" or "post" suffix in the final RPM spec file.
+      set(SCRIPTS_REQUIREMENTS_LIST REQUIRES_PRE REQUIRES_POST REQUIRES_PREUN REQUIRES_POSTUN)
+      list(FIND SCRIPTS_REQUIREMENTS_LIST ${_RPM_SPEC_HEADER} IS_SCRIPTS_REQUIREMENT_FOUND)
+      if(NOT ${IS_SCRIPTS_REQUIREMENT_FOUND} EQUAL -1)
+        string(REPLACE "_" "(" _PACKAGE_HEADER_NAME "${_PACKAGE_HEADER_NAME}")
+        string(APPEND _PACKAGE_HEADER_NAME ")")
+      endif()
+      if(CPACK_RPM_PACKAGE_DEBUG)
+        message("CPackRPM:Debug: User defined ${_PACKAGE_HEADER_NAME}:\n ${CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}_TMP}")
+      endif()
+      set(TMP_RPM_${_RPM_SPEC_HEADER} "${_PACKAGE_HEADER_NAME}: ${CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}_TMP}")
+      unset(CPACK_RPM_PACKAGE_${_RPM_SPEC_HEADER}_TMP)
+    endif()
+  endforeach()
+
+  # CPACK_RPM_SPEC_INSTALL_POST
+  # May be used to define a RPM post intallation script
+  # for example setting it to "/bin/true" may prevent
+  # rpmbuild from stripping binaries.
+  if(CPACK_RPM_SPEC_INSTALL_POST)
+    if(CPACK_RPM_PACKAGE_DEBUG)
+      message("CPackRPM:Debug: User defined CPACK_RPM_SPEC_INSTALL_POST = ${CPACK_RPM_SPEC_INSTALL_POST}")
+    endif()
+    set(TMP_RPM_SPEC_INSTALL_POST "%define __spec_install_post ${CPACK_RPM_SPEC_INSTALL_POST}")
+  endif()
+
+  # CPACK_RPM_REQUIRES_EXCLUDE_FROM
+  # May be defined to keep the dependency generator from
+  # scanning specific files or directories for deps.
+  if(CPACK_RPM_REQUIRES_EXCLUDE_FROM)
+    if(CPACK_RPM_PACKAGE_DEBUG)
+      message("CPackRPM:Debug: User defined CPACK_RPM_REQUIRES_EXCLUDE_FROM = ${CPACK_RPM_REQUIRES_EXCLUDE_FROM}")
+    endif()
+    set(TMP_RPM_REQUIRES_EXCLUDE_FROM "%global __requires_exclude_from ${CPACK_RPM_REQUIRES_EXCLUDE_FROM}")
+  endif()
+
+  # CPACK_RPM_POST_INSTALL_SCRIPT_FILE (or CPACK_RPM_<COMPONENT>_POST_INSTALL_SCRIPT_FILE)
+  # CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE (or CPACK_RPM_<COMPONENT>_POST_UNINSTALL_SCRIPT_FILE)
+  # CPACK_RPM_POST_TRANS_SCRIPT_FILE (or CPACK_RPM_<COMPONENT>_POST_TRANS_SCRIPT_FILE)
+  # May be used to embed a post installation/uninstallation/transaction script in the spec file.
+  # The referred script file(s) will be read and directly
+  # put after the %post or %postun or %posttrans section
+  # ----------------------------------------------------------------
+  # CPACK_RPM_PRE_INSTALL_SCRIPT_FILE (or CPACK_RPM_<COMPONENT>_PRE_INSTALL_SCRIPT_FILE)
+  # CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE (or CPACK_RPM_<COMPONENT>_PRE_UNINSTALL_SCRIPT_FILE)
+  # CPACK_RPM_PRE_TRANS_SCRIPT_FILE (or CPACK_RPM_<COMPONENT>_PRE_TRANS_SCRIPT_FILE)
+  # May be used to embed a pre installation/uninstallation/transaction script in the spec file.
+  # The referred script file(s) will be read and directly
+  # put after the %pre or %preun or %pretrans section
+  foreach(RPM_SCRIPT_FILE_TYPE_ "INSTALL" "UNINSTALL" "TRANS")
+    foreach(RPM_SCRIPT_FILE_TIME_ "PRE" "POST")
+      set("CPACK_RPM_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_READ_FILE"
+        "${CPACK_RPM_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_SCRIPT_FILE}")
+
+      if(CPACK_RPM_PACKAGE_COMPONENT)
+        cpack_rpm_variable_fallback("CPACK_RPM_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_READ_FILE"
+          "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_SCRIPT_FILE"
+          "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_SCRIPT_FILE")
+      endif()
+
+      # Handle file if it has been specified
+      if(CPACK_RPM_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_READ_FILE)
+        if(EXISTS ${CPACK_RPM_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_READ_FILE})
+          file(READ ${CPACK_RPM_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_READ_FILE}
+            "CPACK_RPM_SPEC_${RPM_SCRIPT_FILE_TIME_}${RPM_SCRIPT_FILE_TYPE_}")
+        else()
+          message("CPackRPM:Warning: CPACK_RPM_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_SCRIPT_FILE <${CPACK_RPM_${RPM_SCRIPT_FILE_TIME_}_${RPM_SCRIPT_FILE_TYPE_}_READ_FILE}> does not exists - ignoring")
+        endif()
+      else()
+        # reset SPEC var value if no file has been specified
+        # (either globally or component-wise)
+        set("CPACK_RPM_SPEC_${RPM_SCRIPT_FILE_TIME_}${RPM_SCRIPT_FILE_TYPE_}" "")
+      endif()
+    endforeach()
+  endforeach()
+
+  # CPACK_RPM_CHANGELOG_FILE
+  # May be used to embed a changelog in the spec file.
+  # The referred file will be read and directly put after the %changelog section
+  if(CPACK_RPM_CHANGELOG_FILE)
+    if(EXISTS ${CPACK_RPM_CHANGELOG_FILE})
+      file(READ ${CPACK_RPM_CHANGELOG_FILE} CPACK_RPM_SPEC_CHANGELOG)
+    else()
+      message(SEND_ERROR "CPackRPM:Warning: CPACK_RPM_CHANGELOG_FILE <${CPACK_RPM_CHANGELOG_FILE}> does not exists - ignoring")
+    endif()
+  else()
+    set(CPACK_RPM_SPEC_CHANGELOG "* Sun Jul 4 2010 Eric Noulard <eric.noulard@gmail.com> - ${CPACK_RPM_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}\n  Generated by CPack RPM (no Changelog file were provided)")
+  endif()
+
+  # CPACK_RPM_SPEC_MORE_DEFINE
+  # This is a generated spec rpm file spaceholder
+  if(CPACK_RPM_SPEC_MORE_DEFINE)
+    if(CPACK_RPM_PACKAGE_DEBUG)
+      message("CPackRPM:Debug: User defined more define spec line specified:\n ${CPACK_RPM_SPEC_MORE_DEFINE}")
+    endif()
+  endif()
+
+  # Now we may create the RPM build tree structure
+  set(CPACK_RPM_ROOTDIR "${CPACK_TOPLEVEL_DIRECTORY}")
+  if(CPACK_RPM_PACKAGE_DEBUG)
+    message("CPackRPM:Debug: Using CPACK_RPM_ROOTDIR=${CPACK_RPM_ROOTDIR}")
+  endif()
+  # Prepare RPM build tree
+  file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR})
+  file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/tmp)
+  file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/BUILD)
+  file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/RPMS)
+  file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/SOURCES)
+  file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/SPECS)
+  file(MAKE_DIRECTORY ${CPACK_RPM_ROOTDIR}/SRPMS)
+
+  # it seems rpmbuild can't handle spaces in the path
+  # neither escaping (as below) nor putting quotes around the path seem to help
+  #string(REGEX REPLACE " " "\\\\ " CPACK_RPM_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}")
+  set(CPACK_RPM_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}")
+
+  cpack_rpm_prepare_content_list()
+
+  # In component case, put CPACK_ABSOLUTE_DESTINATION_FILES_<COMPONENT>
+  #                   into CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL
+  #         otherwise, put CPACK_ABSOLUTE_DESTINATION_FILES
+  # This must be done BEFORE the CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL handling
+  if(CPACK_RPM_PACKAGE_COMPONENT)
+    if(CPACK_ABSOLUTE_DESTINATION_FILES)
+      cpack_rpm_variable_fallback("COMPONENT_FILES_TAG"
+        "CPACK_ABSOLUTE_DESTINATION_FILES_${CPACK_RPM_PACKAGE_COMPONENT}"
+        "CPACK_ABSOLUTE_DESTINATION_FILES_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}")
+      set(CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL "${${COMPONENT_FILES_TAG}}")
+      if(CPACK_RPM_PACKAGE_DEBUG)
+        message("CPackRPM:Debug: Handling Absolute Destination Files: <${CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL}>")
+        message("CPackRPM:Debug: in component = ${CPACK_RPM_PACKAGE_COMPONENT}")
+      endif()
+    endif()
+  else()
+    if(CPACK_ABSOLUTE_DESTINATION_FILES)
+      set(CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL "${CPACK_ABSOLUTE_DESTINATION_FILES}")
+    endif()
+  endif()
+
+  # In component case, set CPACK_RPM_USER_FILELIST_INTERNAL with CPACK_RPM_<COMPONENT>_USER_FILELIST.
+  set(CPACK_RPM_USER_FILELIST_INTERNAL "")
+  if(CPACK_RPM_PACKAGE_COMPONENT)
+    cpack_rpm_variable_fallback("CPACK_RPM_USER_FILELIST_INTERNAL"
+      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_USER_FILELIST"
+      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_USER_FILELIST")
+
+    if(CPACK_RPM_PACKAGE_DEBUG AND CPACK_RPM_USER_FILELIST_INTERNAL)
+      message("CPackRPM:Debug: Handling User Filelist: <${CPACK_RPM_USER_FILELIST_INTERNAL}>")
+      message("CPackRPM:Debug: in component = ${CPACK_RPM_PACKAGE_COMPONENT}")
+    endif()
+  elseif(CPACK_RPM_USER_FILELIST)
+    set(CPACK_RPM_USER_FILELIST_INTERNAL "${CPACK_RPM_USER_FILELIST}")
+  endif()
+
+  # Handle user specified file line list in CPACK_RPM_USER_FILELIST_INTERNAL
+  # Remove those files from CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL
+  #                      or CPACK_RPM_INSTALL_FILES,
+  # hence it must be done before these auto-generated lists are processed.
+  if(CPACK_RPM_USER_FILELIST_INTERNAL)
+    if(CPACK_RPM_PACKAGE_DEBUG)
+      message("CPackRPM:Debug: Handling User Filelist: <${CPACK_RPM_USER_FILELIST_INTERNAL}>")
+    endif()
+
+    # Create CMake list from CPACK_RPM_INSTALL_FILES
+    string(STRIP "${CPACK_RPM_INSTALL_FILES}" CPACK_RPM_INSTALL_FILES_LIST)
+    string(REPLACE "\n" ";" CPACK_RPM_INSTALL_FILES_LIST
+                            "${CPACK_RPM_INSTALL_FILES_LIST}")
+    string(REPLACE "\"" "" CPACK_RPM_INSTALL_FILES_LIST
+                            "${CPACK_RPM_INSTALL_FILES_LIST}")
+
+    set(CPACK_RPM_USER_INSTALL_FILES "")
+    foreach(F IN LISTS CPACK_RPM_USER_FILELIST_INTERNAL)
+      string(REGEX REPLACE "%[A-Za-z]+(\\([^()]*\\))? " "" F_PATH ${F})
+      string(REGEX MATCH "(%[A-Za-z]+(\\([^()]*\\))? )*" F_PREFIX ${F})
+      string(STRIP ${F_PREFIX} F_PREFIX)
+
+      if(CPACK_RPM_PACKAGE_DEBUG)
+        message("CPackRPM:Debug: F_PREFIX=<${F_PREFIX}>, F_PATH=<${F_PATH}>")
+      endif()
+      if(F_PREFIX)
+        string(APPEND F_PREFIX " ")
+      endif()
+      # Rebuild the user list file
+      string(APPEND CPACK_RPM_USER_INSTALL_FILES "${F_PREFIX}\"${F_PATH}\"\n")
+
+      # Remove from CPACK_RPM_INSTALL_FILES and CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL
+      list(REMOVE_ITEM CPACK_RPM_INSTALL_FILES_LIST ${F_PATH})
+      # ABSOLUTE destination files list may not exists at all
+      if (CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL)
+        list(REMOVE_ITEM CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL ${F_PATH})
+      endif()
+    endforeach()
+
+    # Rebuild CPACK_RPM_INSTALL_FILES
+    set(CPACK_RPM_INSTALL_FILES "")
+    foreach(F IN LISTS CPACK_RPM_INSTALL_FILES_LIST)
+      string(APPEND CPACK_RPM_INSTALL_FILES "\"${F}\"\n")
+    endforeach()
+  else()
+    set(CPACK_RPM_USER_INSTALL_FILES "")
+  endif()
+
+  if (CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL)
+    if(CPACK_RPM_PACKAGE_DEBUG)
+      message("CPackRPM:Debug: Handling Absolute Destination Files: ${CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL}")
+    endif()
+    # Remove trailing space
+    string(STRIP "${CPACK_RPM_INSTALL_FILES}" CPACK_RPM_INSTALL_FILES_LIST)
+    # Transform endline separated - string into CMake List
+    string(REPLACE "\n" ";" CPACK_RPM_INSTALL_FILES_LIST "${CPACK_RPM_INSTALL_FILES_LIST}")
+    # Remove unnecessary quotes
+    string(REPLACE "\"" "" CPACK_RPM_INSTALL_FILES_LIST "${CPACK_RPM_INSTALL_FILES_LIST}")
+    # Remove ABSOLUTE install file from INSTALL FILE LIST
+    list(REMOVE_ITEM CPACK_RPM_INSTALL_FILES_LIST ${CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL})
+    # Rebuild INSTALL_FILES
+    set(CPACK_RPM_INSTALL_FILES "")
+    foreach(F IN LISTS CPACK_RPM_INSTALL_FILES_LIST)
+      string(APPEND CPACK_RPM_INSTALL_FILES "\"${F}\"\n")
+    endforeach()
+    # Build ABSOLUTE_INSTALL_FILES
+    set(CPACK_RPM_ABSOLUTE_INSTALL_FILES "")
+    foreach(F IN LISTS CPACK_ABSOLUTE_DESTINATION_FILES_INTERNAL)
+      string(APPEND CPACK_RPM_ABSOLUTE_INSTALL_FILES "%config \"${F}\"\n")
+    endforeach()
+    if(CPACK_RPM_PACKAGE_DEBUG)
+      message("CPackRPM:Debug: CPACK_RPM_ABSOLUTE_INSTALL_FILES=${CPACK_RPM_ABSOLUTE_INSTALL_FILES}")
+      message("CPackRPM:Debug: CPACK_RPM_INSTALL_FILES=${CPACK_RPM_INSTALL_FILES}")
+    endif()
+  else()
+    # reset vars in order to avoid leakage of value(s) from one component to another
+    set(CPACK_RPM_ABSOLUTE_INSTALL_FILES "")
+  endif()
+
+  cpack_rpm_variable_fallback("CPACK_RPM_DEBUGINFO_PACKAGE"
+    "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_DEBUGINFO_PACKAGE"
+    "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEBUGINFO_PACKAGE"
+    "CPACK_RPM_DEBUGINFO_PACKAGE")
+  if(CPACK_RPM_DEBUGINFO_PACKAGE OR (CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE AND NOT GENERATE_SPEC_PARTS))
+    cpack_rpm_variable_fallback("CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX"
+      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_BUILD_SOURCE_DIRS_PREFIX"
+      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_BUILD_SOURCE_DIRS_PREFIX"
+      "CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX")
+    if(NOT CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX)
+      set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX "/usr/src/debug/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}")
+    endif()
+
+    # handle cases where path contains extra slashes (e.g. /a//b/ instead of
+    # /a/b)
+    get_filename_component(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX
+      "${CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX}" ABSOLUTE)
+
+    if(CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE AND GENERATE_SPEC_PARTS)
+      file(WRITE "${CPACK_RPM_ROOTDIR}/SPECS/${CPACK_RPM_PACKAGE_COMPONENT}.files"
+        "${CPACK_RPM_INSTALL_FILES}")
+    else()
+      if(CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE AND CPACK_RPM_PACKAGE_COMPONENT)
+        # this part is only required by components packaging - with monolithic
+        # packages we can be certain that there are no other components present
+        # so CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE is a noop
+        if(CPACK_RPM_DEBUGINFO_PACKAGE)
+          # only add current package files to debuginfo list if debuginfo
+          # generation is enabled for current package
+          string(STRIP "${CPACK_RPM_INSTALL_FILES}" install_files_)
+          string(REPLACE "\n" ";" install_files_ "${install_files_}")
+          string(REPLACE "\"" "" install_files_ "${install_files_}")
+        else()
+          unset(install_files_)
+        endif()
+
+        file(GLOB files_ "${CPACK_RPM_DIRECTORY}/SPECS/*.files")
+
+        foreach(f_ IN LISTS files_)
+          file(READ "${f_}" tmp_)
+          string(APPEND install_files_ ";${tmp_}")
+        endforeach()
+
+        # if there were other components/groups so we need to move files from them
+        # to current component otherwise those files won't be found
+        file(GLOB components_ LIST_DIRECTORIES true RELATIVE
+          "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}"
+          "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/*")
+        foreach(component_ IN LISTS components_)
+          string(TOUPPER "${component_}" component_dir_upper_)
+          if(component_dir_upper_ STREQUAL CPACK_RPM_PACKAGE_COMPONENT_UPPER)
+            # skip current component
+            continue()
+          endif()
+
+          file(GLOB_RECURSE files_for_move_ LIST_DIRECTORIES true RELATIVE
+            "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/${component_}"
+            "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/${component_}/*")
+
+          foreach(f_ IN LISTS files_for_move_)
+            set(src_file_
+              "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}/${component_}/${f_}")
+
+            if(IS_DIRECTORY "${src_file_}")
+              file(MAKE_DIRECTORY "${WDIR}/${f_}")
+              continue()
+            endif()
+
+            get_filename_component(dir_path_ "${f_}" DIRECTORY)
+
+            # check that we are not overriding an existing file that doesn't
+            # match the file that we want to copy
+            if(EXISTS "${src_file_}" AND EXISTS "${WDIR}/${f_}")
+              execute_process(
+                  COMMAND ${CMAKE_COMMAND} -E compare_files "${src_file_}" "${WDIR}/${f_}"
+                  RESULT_VARIABLE res_
+                )
+              if(res_)
+                message(FATAL_ERROR "CPackRPM:Error: File on path '${WDIR}/${f_}'"
+                  " already exists but is a different than the one in component"
+                  " '${component_}'! Packages will not be generated.")
+              endif()
+            endif()
+
+            file(MAKE_DIRECTORY "${WDIR}/${dir_path_}")
+            file(RENAME "${src_file_}"
+              "${WDIR}/${f_}")
+          endforeach()
+        endforeach()
+
+        cpack_rpm_debugsymbol_check("${install_files_}" "${WDIR}")
+      else()
+        string(STRIP "${CPACK_RPM_INSTALL_FILES}" install_files_)
+        string(REPLACE "\n" ";" install_files_ "${install_files_}")
+        string(REPLACE "\"" "" install_files_ "${install_files_}")
+
+        cpack_rpm_debugsymbol_check("${install_files_}" "${WDIR}")
+      endif()
+
+      if(TMP_DEBUGINFO_ADDITIONAL_SOURCES)
+        set(TMP_RPM_DEBUGINFO "
+# Modified version of %%debug_package macro
+# defined in /usr/lib/rpm/macros as that one
+# can't handle injection of extra source files.
+%ifnarch noarch
+%global __debug_package 1
+%package debuginfo
+Summary: Debug information for package %{name}
+Group: Development/Debug
+AutoReqProv: 0
+%description debuginfo
+This package provides debug information for package %{name}.
+Debug information is useful when developing applications that use this
+package or when debugging this package.
+%files debuginfo -f debugfiles.list
+%defattr(-,root,root)
+${TMP_DEBUGINFO_ADDITIONAL_SOURCES}
+%endif
+")
+      elseif(CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE)
+        message(AUTHOR_WARNING "CPackRPM:Warning: debuginfo package was requested"
+          " but will not be generated as no source files were found!")
+      else()
+        message(AUTHOR_WARNING "CPackRPM:Warning: debuginfo package was requested"
+          " but will not be generated as no source files were found! Component: '"
+          "${CPACK_RPM_PACKAGE_COMPONENT}'.")
+      endif()
+    endif()
+  endif()
+
+  # Prepare install files
+  cpack_rpm_prepare_install_files(
+      "${CPACK_RPM_INSTALL_FILES}"
+      "${WDIR}"
+      "${RPM_USED_PACKAGE_PREFIXES}"
+      "${CPACK_RPM_PACKAGE_RELOCATABLE}"
+    )
+
+  # set default user and group
+  foreach(_PERM_TYPE "USER" "GROUP")
+    if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEFAULT_${_PERM_TYPE})
+      set(TMP_DEFAULT_${_PERM_TYPE} "${CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEFAULT_${_PERM_TYPE}}")
+    elseif(CPACK_RPM_DEFAULT_${_PERM_TYPE})
+      set(TMP_DEFAULT_${_PERM_TYPE} "${CPACK_RPM_DEFAULT_${_PERM_TYPE}}")
+    else()
+      set(TMP_DEFAULT_${_PERM_TYPE} "root")
+    endif()
+  endforeach()
+
+  # set default file and dir permissions
+  foreach(_PERM_TYPE "FILE" "DIR")
+    if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEFAULT_${_PERM_TYPE}_PERMISSIONS)
+      get_unix_permissions_octal_notation("CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEFAULT_${_PERM_TYPE}_PERMISSIONS" "TMP_DEFAULT_${_PERM_TYPE}_PERMISSIONS")
+      set(_PERMISSIONS_VAR "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEFAULT_${_PERM_TYPE}_PERMISSIONS")
+    elseif(CPACK_RPM_DEFAULT_${_PERM_TYPE}_PERMISSIONS)
+      get_unix_permissions_octal_notation("CPACK_RPM_DEFAULT_${_PERM_TYPE}_PERMISSIONS" "TMP_DEFAULT_${_PERM_TYPE}_PERMISSIONS")
+      set(_PERMISSIONS_VAR "CPACK_RPM_DEFAULT_${_PERM_TYPE}_PERMISSIONS")
+    else()
+      set(TMP_DEFAULT_${_PERM_TYPE}_PERMISSIONS "-")
+    endif()
+  endforeach()
+
+  # The name of the final spec file to be used by rpmbuild
+  set(CPACK_RPM_BINARY_SPECFILE "${CPACK_RPM_ROOTDIR}/SPECS/${CPACK_RPM_PACKAGE_NAME}.spec")
+
+  # Print out some debug information if we were asked for that
+  if(CPACK_RPM_PACKAGE_DEBUG)
+     message("CPackRPM:Debug: CPACK_TOPLEVEL_DIRECTORY          = ${CPACK_TOPLEVEL_DIRECTORY}")
+     message("CPackRPM:Debug: CPACK_TOPLEVEL_TAG                = ${CPACK_TOPLEVEL_TAG}")
+     message("CPackRPM:Debug: CPACK_TEMPORARY_DIRECTORY         = ${CPACK_TEMPORARY_DIRECTORY}")
+     message("CPackRPM:Debug: CPACK_OUTPUT_FILE_NAME            = ${CPACK_OUTPUT_FILE_NAME}")
+     message("CPackRPM:Debug: CPACK_OUTPUT_FILE_PATH            = ${CPACK_OUTPUT_FILE_PATH}")
+     message("CPackRPM:Debug: CPACK_PACKAGE_FILE_NAME           = ${CPACK_PACKAGE_FILE_NAME}")
+     message("CPackRPM:Debug: CPACK_RPM_BINARY_SPECFILE         = ${CPACK_RPM_BINARY_SPECFILE}")
+     message("CPackRPM:Debug: CPACK_PACKAGE_INSTALL_DIRECTORY   = ${CPACK_PACKAGE_INSTALL_DIRECTORY}")
+     message("CPackRPM:Debug: CPACK_TEMPORARY_PACKAGE_FILE_NAME = ${CPACK_TEMPORARY_PACKAGE_FILE_NAME}")
+  endif()
+
+  #
+  # USER generated/provided spec file handling.
+  #
+
+  # We can have a component specific spec file.
+  if(CPACK_RPM_PACKAGE_COMPONENT)
+    cpack_rpm_variable_fallback("CPACK_RPM_USER_BINARY_SPECFILE"
+      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_USER_BINARY_SPECFILE"
+      "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_USER_BINARY_SPECFILE")
+  endif()
+
+  cpack_rpm_variable_fallback("CPACK_RPM_FILE_NAME"
+    "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_FILE_NAME"
+    "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_FILE_NAME"
+    "CPACK_RPM_FILE_NAME")
+  if(NOT CPACK_RPM_FILE_NAME STREQUAL "RPM-DEFAULT")
+    if(CPACK_RPM_FILE_NAME)
+      if(NOT CPACK_RPM_FILE_NAME MATCHES ".*\\.rpm")
+        message(FATAL_ERROR "'${CPACK_RPM_FILE_NAME}' is not a valid RPM package file name as it must end with '.rpm'!")
+      endif()
+    else()
+      # old file name format for back compatibility
+      string(TOUPPER "${CPACK_RPM_MAIN_COMPONENT}"
+        CPACK_RPM_MAIN_COMPONENT_UPPER)
+
+      if(CPACK_RPM_MAIN_COMPONENT_UPPER STREQUAL CPACK_RPM_PACKAGE_COMPONENT_UPPER)
+        # this is the main component so ignore the component filename part
+        set(CPACK_RPM_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.rpm")
+      else()
+        set(CPACK_RPM_FILE_NAME "${CPACK_OUTPUT_FILE_NAME}")
+      endif()
+    endif()
+    # else example:
+    #set(CPACK_RPM_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}-${CPACK_RPM_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}-${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm")
+
+    if(CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE AND GENERATE_SPEC_PARTS)
+      string(TOLOWER "${CPACK_RPM_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}.*\\.rpm" expected_filename_)
+
+      file(WRITE "${CPACK_RPM_ROOTDIR}/SPECS/${CPACK_RPM_PACKAGE_COMPONENT}.rpm_name"
+        "${expected_filename_};${CPACK_RPM_FILE_NAME}")
+    elseif(NOT CPACK_RPM_DEBUGINFO_PACKAGE)
+      set(FILE_NAME_DEFINE "%define _rpmfilename ${CPACK_RPM_FILE_NAME}")
+    endif()
+  endif()
+
+  if(CPACK_RPM_PACKAGE_SOURCES) # source rpm
+    set(archive_name_ "${CPACK_RPM_PACKAGE_NAME}-${CPACK_RPM_PACKAGE_VERSION}")
+
+    execute_process(
+        COMMAND ${CMAKE_COMMAND} -E tar "cfvz" "${CPACK_RPM_DIRECTORY}/SOURCES/${archive_name_}.tar.gz" "${CPACK_PACKAGE_FILE_NAME}"
+        WORKING_DIRECTORY ${CPACK_RPM_DIRECTORY}
+      )
+    set(TMP_RPM_SOURCE "Source: ${archive_name_}.tar.gz")
+
+    if(CPACK_RPM_BUILDREQUIRES)
+      set(TMP_RPM_BUILD_REQUIRES "BuildRequires: ${CPACK_RPM_BUILDREQUIRES}")
+    endif()
+
+    # Disable debuginfo packages - srpm generates invalid packages due to
+    # releasing control to cpack to generate binary packages.
+    # Note however that this doesn't prevent cpack to generate debuginfo
+    # packages when run from srpm with --rebuild.
+    set(TMP_RPM_DISABLE_DEBUGINFO "%define debug_package %{nil}")
+
+    if(NOT CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX)
+      set(CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX "/")
+    endif()
+
+    set(TMP_RPM_BUILD
+      "
+%build
+mkdir cpack_rpm_build_dir
+cd cpack_rpm_build_dir
+'${CMAKE_COMMAND}' ${CPACK_RPM_SOURCE_PKG_BUILD_PARAMS} -DCPACK_PACKAGING_INSTALL_PREFIX=${CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX} ../${CPACK_PACKAGE_FILE_NAME}
+make %{?_smp_mflags}" # %{?_smp_mflags} -> -j option
+      )
+    set(TMP_RPM_INSTALL
+      "
+cd cpack_rpm_build_dir
+cpack -G RPM
+mv *.rpm %_rpmdir"
+      )
+    set(TMP_RPM_PREP "%setup -c")
+
+    set(RPMBUILD_FLAGS "-bs")
+
+     file(WRITE ${CPACK_RPM_BINARY_SPECFILE}.in
+      "# Restore old style debuginfo creation for rpm >= 4.14.
+%undefine _debugsource_packages
+%undefine _debuginfo_subpackages
+
+# -*- rpm-spec -*-
+BuildRoot:      %_topdir/\@CPACK_PACKAGE_FILE_NAME\@
+Summary:        \@CPACK_RPM_PACKAGE_SUMMARY\@
+Name:           \@CPACK_RPM_PACKAGE_NAME\@
+Version:        \@CPACK_RPM_PACKAGE_VERSION\@
+Release:        \@CPACK_RPM_PACKAGE_RELEASE\@
+License:        \@CPACK_RPM_PACKAGE_LICENSE\@
+Group:          \@CPACK_RPM_PACKAGE_GROUP\@
+Vendor:         \@CPACK_RPM_PACKAGE_VENDOR\@
+
+\@TMP_RPM_SOURCE\@
+\@TMP_RPM_BUILD_REQUIRES\@
+\@TMP_RPM_BUILDARCH\@
+\@TMP_RPM_PREFIXES\@
+
+\@TMP_RPM_DISABLE_DEBUGINFO\@
+
+%define _rpmdir %_topdir/RPMS
+%define _srcrpmdir %_topdir/SRPMS
+\@FILE_NAME_DEFINE\@
+%define _unpackaged_files_terminate_build 0
+\@TMP_RPM_SPEC_INSTALL_POST\@
+\@TMP_RPM_REQUIRES_EXCLUDE_FROM\@
+\@CPACK_RPM_SPEC_MORE_DEFINE\@
+\@CPACK_RPM_COMPRESSION_TYPE_TMP\@
+
+%description
+\@CPACK_RPM_PACKAGE_DESCRIPTION\@
+
+# This is a shortcutted spec file generated by CMake RPM generator
+# we skip _install step because CPack does that for us.
+# We do only save CPack installed tree in _prepr
+# and then restore it in build.
+%prep
+\@TMP_RPM_PREP\@
+
+\@TMP_RPM_BUILD\@
+
+#p build
+
+%install
+\@TMP_RPM_INSTALL\@
+
+%clean
+
+%changelog
+\@CPACK_RPM_SPEC_CHANGELOG\@
+"
+    )
+
+  elseif(GENERATE_SPEC_PARTS) # binary rpm with single debuginfo package
+
+    set_spec_scripts("${CPACK_RPM_PACKAGE_NAME}")
+
+    file(WRITE ${CPACK_RPM_BINARY_SPECFILE}.in
+        "# -*- rpm-spec -*-
+%package -n \@CPACK_RPM_PACKAGE_NAME\@
+Summary:        \@CPACK_RPM_PACKAGE_SUMMARY\@
+Version:        \@CPACK_RPM_PACKAGE_VERSION\@
+Release:        \@CPACK_RPM_PACKAGE_RELEASE\@
+License:        \@CPACK_RPM_PACKAGE_LICENSE\@
+Group:          \@CPACK_RPM_PACKAGE_GROUP\@
+Vendor:         \@CPACK_RPM_PACKAGE_VENDOR\@
+
+\@TMP_RPM_URL\@
+\@TMP_RPM_REQUIRES\@
+\@TMP_RPM_REQUIRES_PRE\@
+\@TMP_RPM_REQUIRES_POST\@
+\@TMP_RPM_REQUIRES_PREUN\@
+\@TMP_RPM_REQUIRES_POSTUN\@
+\@TMP_RPM_PROVIDES\@
+\@TMP_RPM_OBSOLETES\@
+\@TMP_RPM_CONFLICTS\@
+\@TMP_RPM_SUGGESTS\@
+\@TMP_RPM_AUTOPROV\@
+\@TMP_RPM_AUTOREQ\@
+\@TMP_RPM_AUTOREQPROV\@
+\@TMP_RPM_BUILDARCH\@
+\@TMP_RPM_PREFIXES\@
+\@TMP_RPM_EPOCH\@
+
+%description -n \@CPACK_RPM_PACKAGE_NAME\@
+\@CPACK_RPM_PACKAGE_DESCRIPTION\@
+
+\@post_\@
+\@posttrans_\@
+\@postun_\@
+\@pre_\@
+\@pretrans_\@
+\@preun_\@
+
+%files -n \@CPACK_RPM_PACKAGE_NAME\@
+%defattr(\@TMP_DEFAULT_FILE_PERMISSIONS\@,\@TMP_DEFAULT_USER\@,\@TMP_DEFAULT_GROUP\@,\@TMP_DEFAULT_DIR_PERMISSIONS\@)
+\@CPACK_RPM_INSTALL_FILES\@
+\@CPACK_RPM_ABSOLUTE_INSTALL_FILES\@
+\@CPACK_RPM_USER_INSTALL_FILES\@
+"
+    )
+
+  else()  # binary rpm
+    if(CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE)
+      # find generated spec file and take its name
+      file(GLOB spec_files_ "${CPACK_RPM_DIRECTORY}/SPECS/*.spec")
+
+      foreach(f_ IN LISTS spec_files_)
+        file(READ "${f_}" tmp_)
+        string(APPEND TMP_OTHER_COMPONENTS "\n${tmp_}\n")
+      endforeach()
+    endif()
+
+    # We should generate a USER spec file template:
+    #  - either because the user asked for it : CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE
+    #  - or the user did not provide one : NOT CPACK_RPM_USER_BINARY_SPECFILE
+    set(RPMBUILD_FLAGS "-bb")
+    if(CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE OR NOT CPACK_RPM_USER_BINARY_SPECFILE)
+
+      set_spec_scripts("")
+
+      file(WRITE ${CPACK_RPM_BINARY_SPECFILE}.in
+        "# Restore old style debuginfo creation for rpm >= 4.14.
+%undefine _debugsource_packages
+%undefine _debuginfo_subpackages
+
+# -*- rpm-spec -*-
+BuildRoot:      %_topdir/\@CPACK_PACKAGE_FILE_NAME\@\@CPACK_RPM_PACKAGE_COMPONENT_PART_PATH\@
+Summary:        \@CPACK_RPM_PACKAGE_SUMMARY\@
+Name:           \@CPACK_RPM_PACKAGE_NAME\@
+Version:        \@CPACK_RPM_PACKAGE_VERSION\@
+Release:        \@CPACK_RPM_PACKAGE_RELEASE\@
+License:        \@CPACK_RPM_PACKAGE_LICENSE\@
+Group:          \@CPACK_RPM_PACKAGE_GROUP\@
+Vendor:         \@CPACK_RPM_PACKAGE_VENDOR\@
+
+\@TMP_RPM_URL\@
+\@TMP_RPM_REQUIRES\@
+\@TMP_RPM_REQUIRES_PRE\@
+\@TMP_RPM_REQUIRES_POST\@
+\@TMP_RPM_REQUIRES_PREUN\@
+\@TMP_RPM_REQUIRES_POSTUN\@
+\@TMP_RPM_PROVIDES\@
+\@TMP_RPM_OBSOLETES\@
+\@TMP_RPM_CONFLICTS\@
+\@TMP_RPM_SUGGESTS\@
+\@TMP_RPM_AUTOPROV\@
+\@TMP_RPM_AUTOREQ\@
+\@TMP_RPM_AUTOREQPROV\@
+\@TMP_RPM_BUILDARCH\@
+\@TMP_RPM_PREFIXES\@
+\@TMP_RPM_EPOCH\@
+
+\@TMP_RPM_DEBUGINFO\@
+
+%define _rpmdir %_topdir/RPMS
+%define _srcrpmdir %_topdir/SRPMS
+\@FILE_NAME_DEFINE\@
+%define _unpackaged_files_terminate_build 0
+\@TMP_RPM_SPEC_INSTALL_POST\@
+\@TMP_RPM_REQUIRES_EXCLUDE_FROM\@
+\@CPACK_RPM_SPEC_MORE_DEFINE\@
+\@CPACK_RPM_COMPRESSION_TYPE_TMP\@
+
+%description
+\@CPACK_RPM_PACKAGE_DESCRIPTION\@
+
+# This is a shortcutted spec file generated by CMake RPM generator
+# we skip _install step because CPack does that for us.
+# We do only save CPack installed tree in _prepr
+# and then restore it in build.
+%prep
+mv $RPM_BUILD_ROOT %_topdir/tmpBBroot
+
+%install
+if [ -e $RPM_BUILD_ROOT ];
+then
+  rm -rf $RPM_BUILD_ROOT
+fi
+mv %_topdir/tmpBBroot $RPM_BUILD_ROOT
+
+\@TMP_RPM_DEBUGINFO_INSTALL\@
+
+%clean
+
+\@post_\@
+\@posttrans_\@
+\@postun_\@
+\@pre_\@
+\@pretrans_\@
+\@preun_\@
+
+%files
+%defattr(\@TMP_DEFAULT_FILE_PERMISSIONS\@,\@TMP_DEFAULT_USER\@,\@TMP_DEFAULT_GROUP\@,\@TMP_DEFAULT_DIR_PERMISSIONS\@)
+\@CPACK_RPM_INSTALL_FILES\@
+\@CPACK_RPM_ABSOLUTE_INSTALL_FILES\@
+\@CPACK_RPM_USER_INSTALL_FILES\@
+
+%changelog
+\@CPACK_RPM_SPEC_CHANGELOG\@
+
+\@TMP_OTHER_COMPONENTS\@
+"
+      )
+    endif()
+
+    # Stop here if we were asked to only generate a template USER spec file
+    # The generated file may then be used as a template by user who wants
+    # to customize their own spec file.
+    if(CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE)
+      message(FATAL_ERROR "CPackRPM: STOP here Generated USER binary spec file template is: ${CPACK_RPM_BINARY_SPECFILE}.in")
+    endif()
+  endif()
+
+  # After that we may either use a user provided spec file
+  # or generate one using appropriate variables value.
+  if(CPACK_RPM_USER_BINARY_SPECFILE)
+    # User may have specified SPECFILE just use it
+    message("CPackRPM: Will use USER specified spec file: ${CPACK_RPM_USER_BINARY_SPECFILE}")
+    # The user provided file is processed for @var replacement
+    configure_file(${CPACK_RPM_USER_BINARY_SPECFILE} ${CPACK_RPM_BINARY_SPECFILE} @ONLY)
+  else()
+    # No User specified spec file, will use the generated spec file
+    message("CPackRPM: Will use GENERATED spec file: ${CPACK_RPM_BINARY_SPECFILE}")
+    # Note the just created file is processed for @var replacement
+    configure_file(${CPACK_RPM_BINARY_SPECFILE}.in ${CPACK_RPM_BINARY_SPECFILE} @ONLY)
+  endif()
+
+  if(NOT GENERATE_SPEC_PARTS) # generate package
+    if(RPMBUILD_EXECUTABLE)
+      # Now call rpmbuild using the SPECFILE
+      execute_process(
+        COMMAND "${RPMBUILD_EXECUTABLE}" ${RPMBUILD_FLAGS}
+                --define "_topdir ${CPACK_RPM_DIRECTORY}"
+                --buildroot "%_topdir/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}"
+                --target "${CPACK_RPM_PACKAGE_ARCHITECTURE}"
+                "${CPACK_RPM_BINARY_SPECFILE}"
+        WORKING_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}${CPACK_RPM_PACKAGE_COMPONENT_PART_PATH}"
+        RESULT_VARIABLE CPACK_RPMBUILD_EXEC_RESULT
+        ERROR_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.err"
+        OUTPUT_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.out")
+      if(CPACK_RPM_PACKAGE_DEBUG OR CPACK_RPMBUILD_EXEC_RESULT)
+        file(READ ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.err RPMBUILDERR)
+        file(READ ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.out RPMBUILDOUT)
+        message("CPackRPM:Debug: You may consult rpmbuild logs in: ")
+        message("CPackRPM:Debug:    - ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.err")
+        message("CPackRPM:Debug: *** ${RPMBUILDERR} ***")
+        message("CPackRPM:Debug:    - ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild${CPACK_RPM_PACKAGE_NAME}.out")
+        message("CPackRPM:Debug: *** ${RPMBUILDOUT} ***")
+      endif()
+    else()
+      if(ALIEN_EXECUTABLE)
+        message(FATAL_ERROR "RPM packaging through alien not done (yet)")
+      endif()
+    endif()
+
+    # find generated rpm files and take their names
+    file(GLOB_RECURSE GENERATED_FILES "${CPACK_RPM_DIRECTORY}/RPMS/*.rpm"
+      "${CPACK_RPM_DIRECTORY}/SRPMS/*.rpm")
+
+    if(NOT GENERATED_FILES)
+      message(FATAL_ERROR "RPM package was not generated! ${CPACK_RPM_DIRECTORY}")
+    endif()
+
+    unset(expected_filenames_)
+    unset(filenames_)
+    if(CPACK_RPM_DEBUGINFO_PACKAGE AND NOT CPACK_RPM_FILE_NAME STREQUAL "RPM-DEFAULT")
+      list(APPEND expected_filenames_
+        "${CPACK_RPM_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}.*\\.rpm")
+      list(APPEND filenames_ "${CPACK_RPM_FILE_NAME}")
+    endif()
+
+    if(CPACK_RPM_DEBUGINFO_PACKAGE)
+      cpack_rpm_variable_fallback("CPACK_RPM_DEBUGINFO_FILE_NAME"
+        "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_DEBUGINFO_FILE_NAME"
+        "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEBUGINFO_FILE_NAME"
+        "CPACK_RPM_DEBUGINFO_FILE_NAME")
+
+      if(CPACK_RPM_DEBUGINFO_FILE_NAME AND
+        NOT CPACK_RPM_DEBUGINFO_FILE_NAME STREQUAL "RPM-DEFAULT")
+        list(APPEND expected_filenames_
+          "${CPACK_RPM_PACKAGE_NAME}-debuginfo-${CPACK_PACKAGE_VERSION}.*\\.rpm")
+        string(REPLACE "@cpack_component@" "${CPACK_RPM_PACKAGE_COMPONENT}"
+          CPACK_RPM_DEBUGINFO_FILE_NAME "${CPACK_RPM_DEBUGINFO_FILE_NAME}")
+        list(APPEND filenames_ "${CPACK_RPM_DEBUGINFO_FILE_NAME}")
+      endif()
+    endif()
+
+    # check if other files have to be renamed
+    file(GLOB rename_files_ "${CPACK_RPM_DIRECTORY}/SPECS/*.rpm_name")
+    if(rename_files_)
+      foreach(f_ IN LISTS rename_files_)
+        file(READ "${f_}" tmp_)
+        list(GET tmp_ 0 efn_)
+        list(APPEND expected_filenames_ "${efn_}")
+        list(GET tmp_ 1 fn_)
+        list(APPEND filenames_ "${fn_}")
+      endforeach()
+    endif()
+
+    if(expected_filenames_)
+      foreach(F IN LISTS GENERATED_FILES)
+        unset(matched_)
+        foreach(expected_ IN LISTS expected_filenames_)
+          if(F MATCHES ".*/${expected_}")
+            list(FIND expected_filenames_ "${expected_}" idx_)
+            list(GET filenames_ ${idx_} filename_)
+            get_filename_component(FILE_PATH "${F}" DIRECTORY)
+            file(RENAME "${F}" "${FILE_PATH}/${filename_}")
+            list(APPEND new_files_list_ "${FILE_PATH}/${filename_}")
+            set(matched_ "YES")
+
+            break()
+          endif()
+        endforeach()
+
+        if(NOT matched_)
+          list(APPEND new_files_list_ "${F}")
+        endif()
+      endforeach()
+
+      set(GENERATED_FILES "${new_files_list_}")
+    endif()
+  endif()
+
+  set(GEN_CPACK_OUTPUT_FILES "${GENERATED_FILES}" PARENT_SCOPE)
+
+  if(CPACK_RPM_PACKAGE_DEBUG)
+     message("CPackRPM:Debug: GEN_CPACK_OUTPUT_FILES = ${GENERATED_FILES}")
+  endif()
+endfunction()
+
+cpack_rpm_generate_package()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPackWIX.cmake b/share/cmake-3.22/Modules/Internal/CPack/CPackWIX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/CPackWIX.cmake
rename to share/cmake-3.22/Modules/Internal/CPack/CPackWIX.cmake
diff --git a/share/cmake-3.18/Modules/Internal/CPack/CPackZIP.cmake b/share/cmake-3.22/Modules/Internal/CPack/CPackZIP.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/CPackZIP.cmake
rename to share/cmake-3.22/Modules/Internal/CPack/CPackZIP.cmake
diff --git a/share/cmake-3.18/Modules/Internal/CPack/NSIS.InstallOptions.ini.in b/share/cmake-3.22/Modules/Internal/CPack/NSIS.InstallOptions.ini.in
similarity index 100%
rename from share/cmake-3.18/Modules/Internal/CPack/NSIS.InstallOptions.ini.in
rename to share/cmake-3.22/Modules/Internal/CPack/NSIS.InstallOptions.ini.in
diff --git a/share/cmake-3.22/Modules/Internal/CPack/NSIS.template.in b/share/cmake-3.22/Modules/Internal/CPack/NSIS.template.in
new file mode 100644
index 0000000..8a0c972
--- /dev/null
+++ b/share/cmake-3.22/Modules/Internal/CPack/NSIS.template.in
@@ -0,0 +1,993 @@
+; CPack install script designed for a nmake build
+
+;--------------------------------
+; You must define these values
+
+  !define VERSION "@CPACK_PACKAGE_VERSION@"
+  !define PATCH  "@CPACK_PACKAGE_VERSION_PATCH@"
+  !define INST_DIR "@CPACK_TEMPORARY_DIRECTORY@"
+
+;--------------------------------
+;Variables
+
+  Var MUI_TEMP
+  Var STARTMENU_FOLDER
+  Var SV_ALLUSERS
+  Var START_MENU
+  Var DO_NOT_ADD_TO_PATH
+  Var ADD_TO_PATH_ALL_USERS
+  Var ADD_TO_PATH_CURRENT_USER
+  Var INSTALL_DESKTOP
+  Var IS_DEFAULT_INSTALLDIR
+;--------------------------------
+;Include Modern UI
+
+  !include "MUI.nsh"
+
+  ;Default installation folder
+  InstallDir "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
+
+;--------------------------------
+;General
+
+  ;Name and file
+  Name "@CPACK_NSIS_PACKAGE_NAME@"
+  OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@"
+
+  ;Set compression
+  SetCompressor @CPACK_NSIS_COMPRESSOR@
+
+  ;Require administrator access
+  RequestExecutionLevel admin
+
+@CPACK_NSIS_DEFINES@
+@CPACK_NSIS_MANIFEST_DPI_AWARE_CODE@
+@CPACK_NSIS_BRANDING_TEXT_CODE@
+
+  !include Sections.nsh
+
+;--- Component support macros: ---
+; The code for the add/remove functionality is from:
+;   http://nsis.sourceforge.net/Add/Remove_Functionality
+; It has been modified slightly and extended to provide
+; inter-component dependencies.
+Var AR_SecFlags
+Var AR_RegFlags
+@CPACK_NSIS_SECTION_SELECTED_VARS@
+
+; Loads the "selected" flag for the section named SecName into the
+; variable VarName.
+!macro LoadSectionSelectedIntoVar SecName VarName
+ SectionGetFlags ${${SecName}} $${VarName}
+ IntOp $${VarName} $${VarName} & ${SF_SELECTED}  ;Turn off all other bits
+!macroend
+
+; Loads the value of a variable... can we get around this?
+!macro LoadVar VarName
+  IntOp $R0 0 + $${VarName}
+!macroend
+
+; Sets the value of a variable
+!macro StoreVar VarName IntValue
+  IntOp $${VarName} 0 + ${IntValue}
+!macroend
+
+!macro InitSection SecName
+  ;  This macro reads component installed flag from the registry and
+  ;changes checked state of the section on the components page.
+  ;Input: section index constant name specified in Section command.
+
+  ClearErrors
+  ;Reading component status from registry
+  ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" "Installed"
+  IfErrors "default_${SecName}"
+    ;Status will stay default if registry value not found
+    ;(component was never installed)
+  IntOp $AR_RegFlags $AR_RegFlags & ${SF_SELECTED} ;Turn off all other bits
+  SectionGetFlags ${${SecName}} $AR_SecFlags  ;Reading default section flags
+  IntOp $AR_SecFlags $AR_SecFlags & 0xFFFE  ;Turn lowest (enabled) bit off
+  IntOp $AR_SecFlags $AR_RegFlags | $AR_SecFlags      ;Change lowest bit
+
+  ; Note whether this component was installed before
+  !insertmacro StoreVar ${SecName}_was_installed $AR_RegFlags
+  IntOp $R0 $AR_RegFlags & $AR_RegFlags
+
+  ;Writing modified flags
+  SectionSetFlags ${${SecName}} $AR_SecFlags
+
+ "default_${SecName}:"
+ !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected
+!macroend
+
+!macro FinishSection SecName
+  ;  This macro reads section flag set by user and removes the section
+  ;if it is not selected.
+  ;Then it writes component installed flag to registry
+  ;Input: section index constant name specified in Section command.
+
+  SectionGetFlags ${${SecName}} $AR_SecFlags  ;Reading section flags
+  ;Checking lowest bit:
+  IntOp $AR_SecFlags $AR_SecFlags & ${SF_SELECTED}
+  IntCmp $AR_SecFlags 1 "leave_${SecName}"
+    ;Section is not selected:
+    ;Calling Section uninstall macro and writing zero installed flag
+    !insertmacro "Remove_${${SecName}}"
+    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \
+  "Installed" 0
+    Goto "exit_${SecName}"
+
+ "leave_${SecName}:"
+    ;Section is selected:
+    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \
+  "Installed" 1
+
+ "exit_${SecName}:"
+!macroend
+
+!macro RemoveSection_CPack SecName
+  ;  This macro is used to call section's Remove_... macro
+  ;from the uninstaller.
+  ;Input: section index constant name specified in Section command.
+
+  !insertmacro "Remove_${${SecName}}"
+!macroend
+
+; Determine whether the selection of SecName changed
+!macro MaybeSelectionChanged SecName
+  !insertmacro LoadVar ${SecName}_selected
+  SectionGetFlags ${${SecName}} $R1
+  IntOp $R1 $R1 & ${SF_SELECTED} ;Turn off all other bits
+
+  ; See if the status has changed:
+  IntCmp $R0 $R1 "${SecName}_unchanged"
+  !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected
+
+  IntCmp $R1 ${SF_SELECTED} "${SecName}_was_selected"
+  !insertmacro "Deselect_required_by_${SecName}"
+  goto "${SecName}_unchanged"
+
+  "${SecName}_was_selected:"
+  !insertmacro "Select_${SecName}_depends"
+
+  "${SecName}_unchanged:"
+!macroend
+;--- End of Add/Remove macros ---
+
+;--------------------------------
+;Interface Settings
+
+  !define MUI_HEADERIMAGE
+  !define MUI_ABORTWARNING
+
+;----------------------------------------
+; based upon a script of "Written by KiCHiK 2003-01-18 05:57:02"
+;----------------------------------------
+!verbose 3
+!include "WinMessages.NSH"
+!verbose 4
+;====================================================
+; get_NT_environment
+;     Returns: the selected environment
+;     Output : head of the stack
+;====================================================
+!macro select_NT_profile UN
+Function ${UN}select_NT_profile
+   StrCmp $ADD_TO_PATH_ALL_USERS "1" 0 environment_single
+      DetailPrint "Selected environment for all users"
+      Push "all"
+      Return
+   environment_single:
+      DetailPrint "Selected environment for current user only."
+      Push "current"
+      Return
+FunctionEnd
+!macroend
+!insertmacro select_NT_profile ""
+!insertmacro select_NT_profile "un."
+;----------------------------------------------------
+!define NT_current_env 'HKCU "Environment"'
+!define NT_all_env     'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
+
+!ifndef WriteEnvStr_RegKey
+  !ifdef ALL_USERS
+    !define WriteEnvStr_RegKey \
+       'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
+  !else
+    !define WriteEnvStr_RegKey 'HKCU "Environment"'
+  !endif
+!endif
+
+; AddToPath - Adds the given dir to the search path.
+;        Input - head of the stack
+;        Note - Win9x systems requires reboot
+
+Function AddToPath
+  Exch $0
+  Push $1
+  Push $2
+  Push $3
+
+  # don't add if the path doesn't exist
+  IfFileExists "$0\*.*" "" AddToPath_done
+
+  ReadEnvStr $1 PATH
+  ; if the path is too long for a NSIS variable NSIS will return a 0
+  ; length string.  If we find that, then warn and skip any path
+  ; modification as it will trash the existing path.
+  StrLen $2 $1
+  IntCmp $2 0 CheckPathLength_ShowPathWarning CheckPathLength_Done CheckPathLength_Done
+    CheckPathLength_ShowPathWarning:
+    Messagebox MB_OK|MB_ICONEXCLAMATION "Warning! PATH too long installer unable to modify PATH!"
+    Goto AddToPath_done
+  CheckPathLength_Done:
+  Push "$1;"
+  Push "$0;"
+  Call StrStr
+  Pop $2
+  StrCmp $2 "" "" AddToPath_done
+  Push "$1;"
+  Push "$0\;"
+  Call StrStr
+  Pop $2
+  StrCmp $2 "" "" AddToPath_done
+  GetFullPathName /SHORT $3 $0
+  Push "$1;"
+  Push "$3;"
+  Call StrStr
+  Pop $2
+  StrCmp $2 "" "" AddToPath_done
+  Push "$1;"
+  Push "$3\;"
+  Call StrStr
+  Pop $2
+  StrCmp $2 "" "" AddToPath_done
+
+  Call IsNT
+  Pop $1
+  StrCmp $1 1 AddToPath_NT
+    ; Not on NT
+    StrCpy $1 $WINDIR 2
+    FileOpen $1 "$1\autoexec.bat" a
+    FileSeek $1 -1 END
+    FileReadByte $1 $2
+    IntCmp $2 26 0 +2 +2 # DOS EOF
+      FileSeek $1 -1 END # write over EOF
+    FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n"
+    FileClose $1
+    SetRebootFlag true
+    Goto AddToPath_done
+
+  AddToPath_NT:
+    StrCmp $ADD_TO_PATH_ALL_USERS "1" ReadAllKey
+      ReadRegStr $1 ${NT_current_env} "PATH"
+      Goto DoTrim
+    ReadAllKey:
+      ReadRegStr $1 ${NT_all_env} "PATH"
+    DoTrim:
+    StrCmp $1 "" AddToPath_NTdoIt
+      Push $1
+      Call Trim
+      Pop $1
+      StrCpy $0 "$1;$0"
+    AddToPath_NTdoIt:
+      StrCmp $ADD_TO_PATH_ALL_USERS "1" WriteAllKey
+        WriteRegExpandStr ${NT_current_env} "PATH" $0
+        Goto DoSend
+      WriteAllKey:
+        WriteRegExpandStr ${NT_all_env} "PATH" $0
+      DoSend:
+      SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
+
+  AddToPath_done:
+    Pop $3
+    Pop $2
+    Pop $1
+    Pop $0
+FunctionEnd
+
+
+; RemoveFromPath - Remove a given dir from the path
+;     Input: head of the stack
+
+Function un.RemoveFromPath
+  Exch $0
+  Push $1
+  Push $2
+  Push $3
+  Push $4
+  Push $5
+  Push $6
+
+  IntFmt $6 "%c" 26 # DOS EOF
+
+  Call un.IsNT
+  Pop $1
+  StrCmp $1 1 unRemoveFromPath_NT
+    ; Not on NT
+    StrCpy $1 $WINDIR 2
+    FileOpen $1 "$1\autoexec.bat" r
+    GetTempFileName $4
+    FileOpen $2 $4 w
+    GetFullPathName /SHORT $0 $0
+    StrCpy $0 "SET PATH=%PATH%;$0"
+    Goto unRemoveFromPath_dosLoop
+
+    unRemoveFromPath_dosLoop:
+      FileRead $1 $3
+      StrCpy $5 $3 1 -1 # read last char
+      StrCmp $5 $6 0 +2 # if DOS EOF
+        StrCpy $3 $3 -1 # remove DOS EOF so we can compare
+      StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoopRemoveLine
+      StrCmp $3 "$0$\n" unRemoveFromPath_dosLoopRemoveLine
+      StrCmp $3 "$0" unRemoveFromPath_dosLoopRemoveLine
+      StrCmp $3 "" unRemoveFromPath_dosLoopEnd
+      FileWrite $2 $3
+      Goto unRemoveFromPath_dosLoop
+      unRemoveFromPath_dosLoopRemoveLine:
+        SetRebootFlag true
+        Goto unRemoveFromPath_dosLoop
+
+    unRemoveFromPath_dosLoopEnd:
+      FileClose $2
+      FileClose $1
+      StrCpy $1 $WINDIR 2
+      Delete "$1\autoexec.bat"
+      CopyFiles /SILENT $4 "$1\autoexec.bat"
+      Delete $4
+      Goto unRemoveFromPath_done
+
+  unRemoveFromPath_NT:
+    StrCmp $ADD_TO_PATH_ALL_USERS "1" unReadAllKey
+      ReadRegStr $1 ${NT_current_env} "PATH"
+      Goto unDoTrim
+    unReadAllKey:
+      ReadRegStr $1 ${NT_all_env} "PATH"
+    unDoTrim:
+    StrCpy $5 $1 1 -1 # copy last char
+    StrCmp $5 ";" +2 # if last char != ;
+      StrCpy $1 "$1;" # append ;
+    Push $1
+    Push "$0;"
+    Call un.StrStr ; Find `$0;` in $1
+    Pop $2 ; pos of our dir
+    StrCmp $2 "" unRemoveFromPath_done
+      ; else, it is in path
+      # $0 - path to add
+      # $1 - path var
+      StrLen $3 "$0;"
+      StrLen $4 $2
+      StrCpy $5 $1 -$4 # $5 is now the part before the path to remove
+      StrCpy $6 $2 "" $3 # $6 is now the part after the path to remove
+      StrCpy $3 $5$6
+
+      StrCpy $5 $3 1 -1 # copy last char
+      StrCmp $5 ";" 0 +2 # if last char == ;
+        StrCpy $3 $3 -1 # remove last char
+
+      StrCmp $ADD_TO_PATH_ALL_USERS "1" unWriteAllKey
+        WriteRegExpandStr ${NT_current_env} "PATH" $3
+        Goto unDoSend
+      unWriteAllKey:
+        WriteRegExpandStr ${NT_all_env} "PATH" $3
+      unDoSend:
+      SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
+
+  unRemoveFromPath_done:
+    Pop $6
+    Pop $5
+    Pop $4
+    Pop $3
+    Pop $2
+    Pop $1
+    Pop $0
+FunctionEnd
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Uninstall sutff
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+###########################################
+#            Utility Functions            #
+###########################################
+
+;====================================================
+; IsNT - Returns 1 if the current system is NT, 0
+;        otherwise.
+;     Output: head of the stack
+;====================================================
+; IsNT
+; no input
+; output, top of the stack = 1 if NT or 0 if not
+;
+; Usage:
+;   Call IsNT
+;   Pop $R0
+;  ($R0 at this point is 1 or 0)
+
+!macro IsNT un
+Function ${un}IsNT
+  Push $0
+  ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
+  StrCmp $0 "" 0 IsNT_yes
+  ; we are not NT.
+  Pop $0
+  Push 0
+  Return
+
+  IsNT_yes:
+    ; NT!!!
+    Pop $0
+    Push 1
+FunctionEnd
+!macroend
+!insertmacro IsNT ""
+!insertmacro IsNT "un."
+
+; StrStr
+; input, top of stack = string to search for
+;        top of stack-1 = string to search in
+; output, top of stack (replaces with the portion of the string remaining)
+; modifies no other variables.
+;
+; Usage:
+;   Push "this is a long ass string"
+;   Push "ass"
+;   Call StrStr
+;   Pop $R0
+;  ($R0 at this point is "ass string")
+
+!macro StrStr un
+Function ${un}StrStr
+Exch $R1 ; st=haystack,old$R1, $R1=needle
+  Exch    ; st=old$R1,haystack
+  Exch $R2 ; st=old$R1,old$R2, $R2=haystack
+  Push $R3
+  Push $R4
+  Push $R5
+  StrLen $R3 $R1
+  StrCpy $R4 0
+  ; $R1=needle
+  ; $R2=haystack
+  ; $R3=len(needle)
+  ; $R4=cnt
+  ; $R5=tmp
+  loop:
+    StrCpy $R5 $R2 $R3 $R4
+    StrCmp $R5 $R1 done
+    StrCmp $R5 "" done
+    IntOp $R4 $R4 + 1
+    Goto loop
+done:
+  StrCpy $R1 $R2 "" $R4
+  Pop $R5
+  Pop $R4
+  Pop $R3
+  Pop $R2
+  Exch $R1
+FunctionEnd
+!macroend
+!insertmacro StrStr ""
+!insertmacro StrStr "un."
+
+Function Trim ; Added by Pelaca
+	Exch $R1
+	Push $R2
+Loop:
+	StrCpy $R2 "$R1" 1 -1
+	StrCmp "$R2" " " RTrim
+	StrCmp "$R2" "$\n" RTrim
+	StrCmp "$R2" "$\r" RTrim
+	StrCmp "$R2" ";" RTrim
+	GoTo Done
+RTrim:
+	StrCpy $R1 "$R1" -1
+	Goto Loop
+Done:
+	Pop $R2
+	Exch $R1
+FunctionEnd
+
+Function ConditionalAddToRegisty
+  Pop $0
+  Pop $1
+  StrCmp "$0" "" ConditionalAddToRegisty_EmptyString
+    WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" \
+    "$1" "$0"
+    ;MessageBox MB_OK "Set Registry: '$1' to '$0'"
+    DetailPrint "Set install registry entry: '$1' to '$0'"
+  ConditionalAddToRegisty_EmptyString:
+FunctionEnd
+
+;--------------------------------
+
+!ifdef CPACK_USES_DOWNLOAD
+Function DownloadFile
+    IfFileExists $INSTDIR\* +2
+    CreateDirectory $INSTDIR
+    Pop $0
+
+    ; Skip if already downloaded
+    IfFileExists $INSTDIR\$0 0 +2
+    Return
+
+    StrCpy $1 "@CPACK_DOWNLOAD_SITE@"
+
+  try_again:
+    NSISdl::download "$1/$0" "$INSTDIR\$0"
+
+    Pop $1
+    StrCmp $1 "success" success
+    StrCmp $1 "Cancelled" cancel
+    MessageBox MB_OK "Download failed: $1"
+  cancel:
+    Return
+  success:
+FunctionEnd
+!endif
+
+;--------------------------------
+; Define some macro setting for the gui
+@CPACK_NSIS_INSTALLER_MUI_ICON_CODE@
+@CPACK_NSIS_INSTALLER_ICON_CODE@
+@CPACK_NSIS_INSTALLER_MUI_WELCOMEFINISH_CODE@
+@CPACK_NSIS_INSTALLER_MUI_UNWELCOMEFINISH_CODE@
+@CPACK_NSIS_INSTALLER_MUI_COMPONENTS_DESC@
+@CPACK_NSIS_INSTALLER_MUI_FINISHPAGE_RUN_CODE@
+
+;--------------------------------
+;Pages
+  @CPACK_NSIS_INSTALLER_WELCOME_TITLE_CODE@
+  @CPACK_NSIS_INSTALLER_WELCOME_TITLE_3LINES_CODE@
+  !insertmacro MUI_PAGE_WELCOME
+
+  @CPACK_NSIS_LICENSE_PAGE@
+  Page custom InstallOptionsPage
+  !insertmacro MUI_PAGE_DIRECTORY
+
+  ;Start Menu Folder Page Configuration
+  !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX"
+  !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
+  !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
+  !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
+
+  @CPACK_NSIS_PAGE_COMPONENTS@
+
+  !insertmacro MUI_PAGE_INSTFILES
+  @CPACK_NSIS_INSTALLER_FINISH_TITLE_CODE@
+  @CPACK_NSIS_INSTALLER_FINISH_TITLE_3LINES_CODE@
+  !insertmacro MUI_PAGE_FINISH
+
+  !insertmacro MUI_UNPAGE_CONFIRM
+  !insertmacro MUI_UNPAGE_INSTFILES
+
+;--------------------------------
+;Languages
+
+  !insertmacro MUI_LANGUAGE "English" ;first language is the default language
+  !insertmacro MUI_LANGUAGE "Afrikaans"
+  !insertmacro MUI_LANGUAGE "Albanian"
+  !insertmacro MUI_LANGUAGE "Arabic"
+  !insertmacro MUI_LANGUAGE "Asturian"
+  !insertmacro MUI_LANGUAGE "Basque"
+  !insertmacro MUI_LANGUAGE "Belarusian"
+  !insertmacro MUI_LANGUAGE "Bosnian"
+  !insertmacro MUI_LANGUAGE "Breton"
+  !insertmacro MUI_LANGUAGE "Bulgarian"
+  !insertmacro MUI_LANGUAGE "Catalan"
+  !insertmacro MUI_LANGUAGE "Corsican"
+  !insertmacro MUI_LANGUAGE "Croatian"
+  !insertmacro MUI_LANGUAGE "Czech"
+  !insertmacro MUI_LANGUAGE "Danish"
+  !insertmacro MUI_LANGUAGE "Dutch"
+  !insertmacro MUI_LANGUAGE "Esperanto"
+  !insertmacro MUI_LANGUAGE "Estonian"
+  !insertmacro MUI_LANGUAGE "Farsi"
+  !insertmacro MUI_LANGUAGE "Finnish"
+  !insertmacro MUI_LANGUAGE "French"
+  !insertmacro MUI_LANGUAGE "Galician"
+  !insertmacro MUI_LANGUAGE "German"
+  !insertmacro MUI_LANGUAGE "Greek"
+  !insertmacro MUI_LANGUAGE "Hebrew"
+  !insertmacro MUI_LANGUAGE "Hungarian"
+  !insertmacro MUI_LANGUAGE "Icelandic"
+  !insertmacro MUI_LANGUAGE "Indonesian"
+  !insertmacro MUI_LANGUAGE "Irish"
+  !insertmacro MUI_LANGUAGE "Italian"
+  !insertmacro MUI_LANGUAGE "Japanese"
+  !insertmacro MUI_LANGUAGE "Korean"
+  !insertmacro MUI_LANGUAGE "Kurdish"
+  !insertmacro MUI_LANGUAGE "Latvian"
+  !insertmacro MUI_LANGUAGE "Lithuanian"
+  !insertmacro MUI_LANGUAGE "Luxembourgish"
+  !insertmacro MUI_LANGUAGE "Macedonian"
+  !insertmacro MUI_LANGUAGE "Malay"
+  !insertmacro MUI_LANGUAGE "Mongolian"
+  !insertmacro MUI_LANGUAGE "Norwegian"
+  !insertmacro MUI_LANGUAGE "NorwegianNynorsk"
+  !insertmacro MUI_LANGUAGE "Pashto"
+  !insertmacro MUI_LANGUAGE "Polish"
+  !insertmacro MUI_LANGUAGE "Portuguese"
+  !insertmacro MUI_LANGUAGE "PortugueseBR"
+  !insertmacro MUI_LANGUAGE "Romanian"
+  !insertmacro MUI_LANGUAGE "Russian"
+  !insertmacro MUI_LANGUAGE "ScotsGaelic"
+  !insertmacro MUI_LANGUAGE "Serbian"
+  !insertmacro MUI_LANGUAGE "SerbianLatin"
+  !insertmacro MUI_LANGUAGE "SimpChinese"
+  !insertmacro MUI_LANGUAGE "Slovak"
+  !insertmacro MUI_LANGUAGE "Slovenian"
+  !insertmacro MUI_LANGUAGE "Spanish"
+  !insertmacro MUI_LANGUAGE "SpanishInternational"
+  !insertmacro MUI_LANGUAGE "Swedish"
+  !insertmacro MUI_LANGUAGE "Tatar"
+  !insertmacro MUI_LANGUAGE "Thai"
+  !insertmacro MUI_LANGUAGE "TradChinese"
+  !insertmacro MUI_LANGUAGE "Turkish"
+  !insertmacro MUI_LANGUAGE "Ukrainian"
+  !insertmacro MUI_LANGUAGE "Uzbek"
+  !insertmacro MUI_LANGUAGE "Vietnamese"
+  !insertmacro MUI_LANGUAGE "Welsh"
+
+;--------------------------------
+;Reserve Files
+
+  ;These files should be inserted before other files in the data block
+  ;Keep these lines before any File command
+  ;Only for solid compression (by default, solid compression is enabled for BZIP2 and LZMA)
+
+  ReserveFile "NSIS.InstallOptions.ini"
+  !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
+
+  ; for UserInfo::GetName and UserInfo::GetAccountType
+  ReserveFile /plugin 'UserInfo.dll'
+
+;--------------------------------
+; Installation types
+@CPACK_NSIS_INSTALLATION_TYPES@
+
+;--------------------------------
+; Component sections
+@CPACK_NSIS_COMPONENT_SECTIONS@
+
+;--------------------------------
+;Installer Sections
+
+Section "-Core installation"
+  ;Use the entire tree produced by the INSTALL target.  Keep the
+  ;list of directories here in sync with the RMDir commands below.
+  SetOutPath "$INSTDIR"
+  @CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS@
+  @CPACK_NSIS_FULL_INSTALL@
+
+  ;Store installation folder
+  WriteRegStr SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "" $INSTDIR
+
+  ;Create uninstaller
+  WriteUninstaller "$INSTDIR\@CPACK_NSIS_UNINSTALL_NAME@.exe"
+  Push "DisplayName"
+  Push "@CPACK_NSIS_DISPLAY_NAME@"
+  Call ConditionalAddToRegisty
+  Push "DisplayVersion"
+  Push "@CPACK_PACKAGE_VERSION@"
+  Call ConditionalAddToRegisty
+  Push "Publisher"
+  Push "@CPACK_PACKAGE_VENDOR@"
+  Call ConditionalAddToRegisty
+  Push "UninstallString"
+  Push "$\"$INSTDIR\@CPACK_NSIS_UNINSTALL_NAME@.exe$\""
+  Call ConditionalAddToRegisty
+  Push "NoRepair"
+  Push "1"
+  Call ConditionalAddToRegisty
+
+  !ifdef CPACK_NSIS_ADD_REMOVE
+  ;Create add/remove functionality
+  Push "ModifyPath"
+  Push "$INSTDIR\AddRemove.exe"
+  Call ConditionalAddToRegisty
+  !else
+  Push "NoModify"
+  Push "1"
+  Call ConditionalAddToRegisty
+  !endif
+
+  ; Optional registration
+  Push "DisplayIcon"
+  Push "$INSTDIR\@CPACK_NSIS_INSTALLED_ICON_NAME@"
+  Call ConditionalAddToRegisty
+  Push "HelpLink"
+  Push "@CPACK_NSIS_HELP_LINK@"
+  Call ConditionalAddToRegisty
+  Push "URLInfoAbout"
+  Push "@CPACK_NSIS_URL_INFO_ABOUT@"
+  Call ConditionalAddToRegisty
+  Push "Contact"
+  Push "@CPACK_NSIS_CONTACT@"
+  Call ConditionalAddToRegisty
+  !insertmacro MUI_INSTALLOPTIONS_READ $INSTALL_DESKTOP "NSIS.InstallOptions.ini" "Field 5" "State"
+  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+
+  ;Create shortcuts
+  CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
+@CPACK_NSIS_CREATE_ICONS@
+@CPACK_NSIS_CREATE_ICONS_EXTRA@
+  CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\@CPACK_NSIS_UNINSTALL_NAME@.exe"
+
+  ;Read a value from an InstallOptions INI file
+  !insertmacro MUI_INSTALLOPTIONS_READ $DO_NOT_ADD_TO_PATH "NSIS.InstallOptions.ini" "Field 2" "State"
+  !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_ALL_USERS "NSIS.InstallOptions.ini" "Field 3" "State"
+  !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_CURRENT_USER "NSIS.InstallOptions.ini" "Field 4" "State"
+
+  ; Write special uninstall registry entries
+  Push "StartMenu"
+  Push "$STARTMENU_FOLDER"
+  Call ConditionalAddToRegisty
+  Push "DoNotAddToPath"
+  Push "$DO_NOT_ADD_TO_PATH"
+  Call ConditionalAddToRegisty
+  Push "AddToPathAllUsers"
+  Push "$ADD_TO_PATH_ALL_USERS"
+  Call ConditionalAddToRegisty
+  Push "AddToPathCurrentUser"
+  Push "$ADD_TO_PATH_CURRENT_USER"
+  Call ConditionalAddToRegisty
+  Push "InstallToDesktop"
+  Push "$INSTALL_DESKTOP"
+  Call ConditionalAddToRegisty
+
+  !insertmacro MUI_STARTMENU_WRITE_END
+
+@CPACK_NSIS_EXTRA_INSTALL_COMMANDS@
+
+SectionEnd
+
+Section "-Add to path"
+  Push $INSTDIR\bin
+  StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 doNotAddToPath
+  StrCmp $DO_NOT_ADD_TO_PATH "1" doNotAddToPath 0
+    Call AddToPath
+  doNotAddToPath:
+SectionEnd
+
+;--------------------------------
+; Create custom pages
+Function InstallOptionsPage
+  !insertmacro MUI_HEADER_TEXT "Install Options" "Choose options for installing @CPACK_NSIS_PACKAGE_NAME@"
+  !insertmacro MUI_INSTALLOPTIONS_DISPLAY "NSIS.InstallOptions.ini"
+
+FunctionEnd
+
+;--------------------------------
+; determine admin versus local install
+Function un.onInit
+
+  ClearErrors
+  UserInfo::GetName
+  IfErrors noLM
+  Pop $0
+  UserInfo::GetAccountType
+  Pop $1
+  StrCmp $1 "Admin" 0 +3
+    SetShellVarContext all
+    ;MessageBox MB_OK 'User "$0" is in the Admin group'
+    Goto done
+  StrCmp $1 "Power" 0 +3
+    SetShellVarContext all
+    ;MessageBox MB_OK 'User "$0" is in the Power Users group'
+    Goto done
+
+  noLM:
+    ;Get installation folder from registry if available
+
+  done:
+
+FunctionEnd
+
+;--- Add/Remove callback functions: ---
+!macro SectionList MacroName
+  ;This macro used to perform operation on multiple sections.
+  ;List all of your components in following manner here.
+@CPACK_NSIS_COMPONENT_SECTION_LIST@
+!macroend
+
+Section -FinishComponents
+  ;Removes unselected components and writes component status to registry
+  !insertmacro SectionList "FinishSection"
+
+!ifdef CPACK_NSIS_ADD_REMOVE
+  ; Get the name of the installer executable
+  System::Call 'kernel32::GetModuleFileNameA(i 0, t .R0, i 1024) i r1'
+  StrCpy $R3 $R0
+
+  ; Strip off the last 13 characters, to see if we have AddRemove.exe
+  StrLen $R1 $R0
+  IntOp $R1 $R0 - 13
+  StrCpy $R2 $R0 13 $R1
+  StrCmp $R2 "AddRemove.exe" addremove_installed
+
+  ; We're not running AddRemove.exe, so install it
+  CopyFiles $R3 $INSTDIR\AddRemove.exe
+
+  addremove_installed:
+!endif
+SectionEnd
+;--- End of Add/Remove callback functions ---
+
+;--------------------------------
+; Component dependencies
+Function .onSelChange
+  !insertmacro SectionList MaybeSelectionChanged
+FunctionEnd
+
+;--------------------------------
+;Uninstaller Section
+
+Section "Uninstall"
+  ReadRegStr $START_MENU SHCTX \
+   "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "StartMenu"
+  ;MessageBox MB_OK "Start menu is in: $START_MENU"
+  ReadRegStr $DO_NOT_ADD_TO_PATH SHCTX \
+    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "DoNotAddToPath"
+  ReadRegStr $ADD_TO_PATH_ALL_USERS SHCTX \
+    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathAllUsers"
+  ReadRegStr $ADD_TO_PATH_CURRENT_USER SHCTX \
+    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathCurrentUser"
+  ;MessageBox MB_OK "Add to path: $DO_NOT_ADD_TO_PATH all users: $ADD_TO_PATH_ALL_USERS"
+  ReadRegStr $INSTALL_DESKTOP SHCTX \
+    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "InstallToDesktop"
+  ;MessageBox MB_OK "Install to desktop: $INSTALL_DESKTOP "
+
+@CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS@
+
+  ;Remove files we installed.
+  ;Keep the list of directories here in sync with the File commands above.
+@CPACK_NSIS_DELETE_FILES@
+@CPACK_NSIS_DELETE_DIRECTORIES@
+
+!ifdef CPACK_NSIS_ADD_REMOVE
+  ;Remove the add/remove program
+  Delete "$INSTDIR\AddRemove.exe"
+!endif
+
+  ;Remove the uninstaller itself.
+  Delete "$INSTDIR\@CPACK_NSIS_UNINSTALL_NAME@.exe"
+  DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
+
+  ;Remove the installation directory if it is empty.
+  RMDir "$INSTDIR"
+
+  ; Remove the registry entries.
+  DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
+
+  ; Removes all optional components
+  !insertmacro SectionList "RemoveSection_CPack"
+
+  !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
+
+  Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
+@CPACK_NSIS_DELETE_ICONS@
+@CPACK_NSIS_DELETE_ICONS_EXTRA@
+
+  ;Delete empty start menu parent directories
+  StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
+
+  startMenuDeleteLoop:
+    ClearErrors
+    RMDir $MUI_TEMP
+    GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
+
+    IfErrors startMenuDeleteLoopDone
+
+    StrCmp "$MUI_TEMP" "$SMPROGRAMS" startMenuDeleteLoopDone startMenuDeleteLoop
+  startMenuDeleteLoopDone:
+
+  ; If the user changed the shortcut, then untinstall may not work. This should
+  ; try to fix it.
+  StrCpy $MUI_TEMP "$START_MENU"
+  Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
+@CPACK_NSIS_DELETE_ICONS_EXTRA@
+
+  ;Delete empty start menu parent directories
+  StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
+
+  secondStartMenuDeleteLoop:
+    ClearErrors
+    RMDir $MUI_TEMP
+    GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
+
+    IfErrors secondStartMenuDeleteLoopDone
+
+    StrCmp "$MUI_TEMP" "$SMPROGRAMS" secondStartMenuDeleteLoopDone secondStartMenuDeleteLoop
+  secondStartMenuDeleteLoopDone:
+
+  DeleteRegKey /ifempty SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
+
+  Push $INSTDIR\bin
+  StrCmp $DO_NOT_ADD_TO_PATH_ "1" doNotRemoveFromPath 0
+    Call un.RemoveFromPath
+  doNotRemoveFromPath:
+SectionEnd
+
+;--------------------------------
+; determine admin versus local install
+; Is install for "AllUsers" or "JustMe"?
+; Default to "JustMe" - set to "AllUsers" if admin or on Win9x
+; This function is used for the very first "custom page" of the installer.
+; This custom page does not show up visibly, but it executes prior to the
+; first visible page and sets up $INSTDIR properly...
+; Choose different default installation folder based on SV_ALLUSERS...
+; "Program Files" for AllUsers, "My Documents" for JustMe...
+
+Function .onInit
+  StrCmp "@CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL@" "ON" 0 inst
+
+  ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "UninstallString"
+  StrCmp $0 "" inst
+
+  MessageBox MB_YESNOCANCEL|MB_ICONEXCLAMATION \
+  "@CPACK_NSIS_PACKAGE_NAME@ is already installed. $\n$\nDo you want to uninstall the old version before installing the new one?" \
+  /SD IDYES IDYES uninst IDNO inst
+  Abort
+
+;Run the uninstaller
+uninst:
+  ClearErrors
+  StrLen $2 "\@CPACK_NSIS_UNINSTALL_NAME@.exe"
+  StrCpy $3 $0 -$2 # remove "\@CPACK_NSIS_UNINSTALL_NAME@.exe" from UninstallString to get path
+  ExecWait '"$0" /S _?=$3' ;Do not copy the uninstaller to a temp file
+
+  IfErrors uninst_failed inst
+uninst_failed:
+  MessageBox MB_OK|MB_ICONSTOP "Uninstall failed."
+  Abort
+
+
+inst:
+  ; Reads components status for registry
+  !insertmacro SectionList "InitSection"
+
+  ; check to see if /D has been used to change
+  ; the install directory by comparing it to the
+  ; install directory that is expected to be the
+  ; default
+  StrCpy $IS_DEFAULT_INSTALLDIR 0
+  StrCmp "$INSTDIR" "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@" 0 +2
+    StrCpy $IS_DEFAULT_INSTALLDIR 1
+
+  StrCpy $SV_ALLUSERS "JustMe"
+  ; if default install dir then change the default
+  ; if it is installed for JustMe
+  StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2
+    StrCpy $INSTDIR "$DOCUMENTS\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
+
+  ClearErrors
+  UserInfo::GetName
+  IfErrors noLM
+  Pop $0
+  UserInfo::GetAccountType
+  Pop $1
+  StrCmp $1 "Admin" 0 +4
+    SetShellVarContext all
+    ;MessageBox MB_OK 'User "$0" is in the Admin group'
+    StrCpy $SV_ALLUSERS "AllUsers"
+    Goto done
+  StrCmp $1 "Power" 0 +4
+    SetShellVarContext all
+    ;MessageBox MB_OK 'User "$0" is in the Power Users group'
+    StrCpy $SV_ALLUSERS "AllUsers"
+    Goto done
+
+  noLM:
+    StrCpy $SV_ALLUSERS "AllUsers"
+    ;Get installation folder from registry if available
+
+  done:
+  StrCmp $SV_ALLUSERS "AllUsers" 0 +3
+    StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2
+      StrCpy $INSTDIR "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
+
+  StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 noOptionsPage
+    !insertmacro MUI_INSTALLOPTIONS_EXTRACT "NSIS.InstallOptions.ini"
+
+  noOptionsPage:
+FunctionEnd
diff --git a/share/cmake-3.22/Modules/Internal/CPack/WIX.template.in b/share/cmake-3.22/Modules/Internal/CPack/WIX.template.in
new file mode 100644
index 0000000..c0bf935
--- /dev/null
+++ b/share/cmake-3.22/Modules/Internal/CPack/WIX.template.in
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?include "cpack_variables.wxi"?>
+
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" @CPACK_WIX_CUSTOM_XMLNS_EXPANDED@
+    RequiredVersion="3.6.3303.0">
+
+    <Product Id="$(var.CPACK_WIX_PRODUCT_GUID)"
+        Name="$(var.CPACK_PACKAGE_NAME)"
+        Language="1033"
+        Version="$(var.CPACK_PACKAGE_VERSION)"
+        Manufacturer="$(var.CPACK_PACKAGE_VENDOR)"
+        UpgradeCode="$(var.CPACK_WIX_UPGRADE_GUID)">
+
+        <Package InstallerVersion="301" Compressed="yes"/>
+
+        <Media Id="1" Cabinet="media1.cab" EmbedCab="yes"/>
+
+        <MajorUpgrade
+            Schedule="afterInstallInitialize"
+            AllowSameVersionUpgrades="yes"
+            DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit."/>
+
+        <WixVariable Id="WixUILicenseRtf" Value="$(var.CPACK_WIX_LICENSE_RTF)"/>
+        <Property Id="WIXUI_INSTALLDIR" Value="INSTALL_ROOT"/>
+
+        <?ifdef CPACK_WIX_PRODUCT_ICON?>
+        <Property Id="ARPPRODUCTICON">ProductIcon.ico</Property>
+        <Icon Id="ProductIcon.ico" SourceFile="$(var.CPACK_WIX_PRODUCT_ICON)"/>
+        <?endif?>
+
+        <?ifdef CPACK_WIX_UI_BANNER?>
+        <WixVariable Id="WixUIBannerBmp" Value="$(var.CPACK_WIX_UI_BANNER)"/>
+        <?endif?>
+
+        <?ifdef CPACK_WIX_UI_DIALOG?>
+        <WixVariable Id="WixUIDialogBmp" Value="$(var.CPACK_WIX_UI_DIALOG)"/>
+        <?endif?>
+
+        <FeatureRef Id="ProductFeature"/>
+
+        <UIRef Id="$(var.CPACK_WIX_UI_REF)" />
+
+        <?include "properties.wxi"?>
+        <?include "product_fragment.wxi"?>
+    </Product>
+</Wix>
diff --git a/share/cmake-3.22/Modules/Internal/CheckCompilerFlag.cmake b/share/cmake-3.22/Modules/Internal/CheckCompilerFlag.cmake
new file mode 100644
index 0000000..f6a4cc9
--- /dev/null
+++ b/share/cmake-3.22/Modules/Internal/CheckCompilerFlag.cmake
@@ -0,0 +1,83 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+include_guard(GLOBAL)
+include(Internal/CheckSourceCompiles)
+include(CMakeCheckCompilerFlagCommonPatterns)
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced
+cmake_policy(SET CMP0057 NEW) # if() supports IN_LIST
+
+function(CMAKE_CHECK_COMPILER_FLAG _lang _flag _var)
+
+  if(_lang STREQUAL "C")
+    set(_lang_src "int main(void) { return 0; }")
+    set(_lang_fail_regex FAIL_REGEX "command[ -]line option .* is valid for .* but not for C"
+                         FAIL_REGEX "-Werror=.* argument .* is not valid for C")
+  elseif(_lang STREQUAL "CXX")
+    set(_lang_src "int main() { return 0; }")
+    set(_lang_fail_regex FAIL_REGEX "command[ -]line option .* is valid for .* but not for C\\+\\+"
+                         FAIL_REGEX "-Werror=.* argument .* is not valid for C\\+\\+")
+  elseif(_lang STREQUAL "CUDA")
+    set(_lang_src "__host__ int main() { return 0; }")
+    set(_lang_fail_regex FAIL_REGEX "command[ -]line option .* is valid for .* but not for C\\+\\+" # Host GNU
+                         FAIL_REGEX "argument unused during compilation: .*") # Clang
+  elseif(_lang STREQUAL "Fortran")
+    set(_lang_src "       program test\n       stop\n       end program")
+    set(_lang_fail_regex FAIL_REGEX "command[ -]line option .* is valid for .* but not for Fortran")
+  elseif(_lang STREQUAL "HIP")
+    set(_lang_src "__host__ int main() { return 0; }")
+    set(_lang_fail_regex FAIL_REGEX "argument unused during compilation: .*") # Clang
+  elseif(_lang STREQUAL "OBJC")
+    set(_lang_src [=[
+#ifndef __OBJC__
+#  error "Not an Objective-C compiler"
+#endif
+int main(void) { return 0; }]=])
+    set(_lang_fail_regex FAIL_REGEX "command[ -]line option .* is valid for .* but not for Objective-C" # GNU
+                         FAIL_REGEX "argument unused during compilation: .*") # Clang
+  elseif(_lang STREQUAL "OBJCXX")
+    set(_lang_src [=[
+#ifndef __OBJC__
+#  error "Not an Objective-C++ compiler"
+#endif
+int main(void) { return 0; }]=])
+    set(_lang_fail_regex FAIL_REGEX "command[ -]line option .* is valid for .* but not for Objective-C\\+\\+" # GNU
+                         FAIL_REGEX "argument unused during compilation: .*") # Clang
+  elseif(_lang STREQUAL "ISPC")
+    set(_lang_src "float func(uniform int32, float a) { return a / 2.25; }")
+  else()
+    message (SEND_ERROR "check_compiler_flag: ${_lang}: unknown language.")
+    return()
+  endif()
+
+  get_property (_supported_languages GLOBAL PROPERTY ENABLED_LANGUAGES)
+  if (NOT _lang IN_LIST _supported_languages)
+    message (SEND_ERROR "check_compiler_flag: ${_lang}: needs to be enabled before use.")
+    return()
+  endif()
+
+  set(CMAKE_REQUIRED_DEFINITIONS ${_flag})
+
+  # Normalize locale during test compilation.
+  set(_locale_vars LC_ALL LC_MESSAGES LANG)
+  foreach(v IN LISTS _locale_vars)
+    set(_locale_vars_saved_${v} "$ENV{${v}}")
+    set(ENV{${v}} C)
+  endforeach()
+
+  check_compiler_flag_common_patterns(_common_patterns)
+  cmake_check_source_compiles(${_lang}
+    "${_lang_src}"
+    ${_var}
+    ${_lang_fail_regex}
+    ${_common_patterns}
+    )
+
+  foreach(v IN LISTS _locale_vars)
+    set(ENV{${v}} ${_locale_vars_saved_${v}})
+  endforeach()
+endfunction ()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/Internal/CheckSourceCompiles.cmake b/share/cmake-3.22/Modules/Internal/CheckSourceCompiles.cmake
new file mode 100644
index 0000000..8c3a418
--- /dev/null
+++ b/share/cmake-3.22/Modules/Internal/CheckSourceCompiles.cmake
@@ -0,0 +1,130 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+include_guard(GLOBAL)
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced
+cmake_policy(SET CMP0057 NEW) # if() supports IN_LIST
+
+function(CMAKE_CHECK_SOURCE_COMPILES _lang _source _var)
+  if(NOT DEFINED "${_var}")
+
+    if(_lang STREQUAL "C")
+      set(_lang_textual "C")
+      set(_lang_ext "c")
+    elseif(_lang STREQUAL "CXX")
+      set(_lang_textual "C++")
+      set(_lang_ext "cxx")
+    elseif(_lang STREQUAL "CUDA")
+      set(_lang_textual "CUDA")
+      set(_lang_ext "cu")
+    elseif(_lang STREQUAL "Fortran")
+      set(_lang_textual "Fortran")
+      set(_lang_ext "F90")
+    elseif(_lang STREQUAL "HIP")
+      set(_lang_textual "HIP")
+      set(_lang_ext "hip")
+    elseif(_lang STREQUAL "ISPC")
+      set(_lang_textual "ISPC")
+      set(_lang_ext "ispc")
+    elseif(_lang STREQUAL "OBJC")
+      set(_lang_textual "Objective-C")
+      set(_lang_ext "m")
+    elseif(_lang STREQUAL "OBJCXX")
+      set(_lang_textual "Objective-C++")
+      set(_lang_ext "mm")
+    else()
+      message (SEND_ERROR "check_source_compiles: ${_lang}: unknown language.")
+      return()
+    endif()
+
+    get_property (_supported_languages GLOBAL PROPERTY ENABLED_LANGUAGES)
+    if (NOT _lang IN_LIST _supported_languages)
+      message (SEND_ERROR "check_source_compiles: ${_lang}: needs to be enabled before use.")
+      return()
+    endif()
+
+    set(_FAIL_REGEX)
+    set(_SRC_EXT)
+    set(_key)
+    foreach(arg ${ARGN})
+      if("${arg}" MATCHES "^(FAIL_REGEX|SRC_EXT)$")
+        set(_key "${arg}")
+      elseif(_key STREQUAL "FAIL_REGEX")
+        list(APPEND _FAIL_REGEX "${arg}")
+      elseif(_key STREQUAL "SRC_EXT")
+        set(_SRC_EXT "${arg}")
+        set(_key "")
+      else()
+        message(FATAL_ERROR "Unknown argument:\n  ${arg}\n")
+      endif()
+    endforeach()
+
+    if(NOT _SRC_EXT)
+      set(_SRC_EXT ${_lang_ext})
+    endif()
+
+    if(CMAKE_REQUIRED_LINK_OPTIONS)
+      set(CHECK_${LANG}_SOURCE_COMPILES_ADD_LINK_OPTIONS
+        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
+    else()
+      set(CHECK_${LANG}_SOURCE_COMPILES_ADD_LINK_OPTIONS)
+    endif()
+    if(CMAKE_REQUIRED_LIBRARIES)
+      set(CHECK_${LANG}_SOURCE_COMPILES_ADD_LIBRARIES
+        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+    else()
+      set(CHECK_${LANG}_SOURCE_COMPILES_ADD_LIBRARIES)
+    endif()
+    if(CMAKE_REQUIRED_INCLUDES)
+      set(CHECK_${LANG}_SOURCE_COMPILES_ADD_INCLUDES
+        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
+    else()
+      set(CHECK_${LANG}_SOURCE_COMPILES_ADD_INCLUDES)
+    endif()
+    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.${_SRC_EXT}"
+      "${_source}\n")
+
+    if(NOT CMAKE_REQUIRED_QUIET)
+      message(CHECK_START "Performing Test ${_var}")
+    endif()
+    try_compile(${_var}
+      ${CMAKE_BINARY_DIR}
+      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.${_SRC_EXT}
+      COMPILE_DEFINITIONS -D${_var} ${CMAKE_REQUIRED_DEFINITIONS}
+      ${CHECK_${LANG}_SOURCE_COMPILES_ADD_LINK_OPTIONS}
+      ${CHECK_${LANG}_SOURCE_COMPILES_ADD_LIBRARIES}
+      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS}
+      "${CHECK_${LANG}_SOURCE_COMPILES_ADD_INCLUDES}"
+      OUTPUT_VARIABLE OUTPUT)
+
+    foreach(_regex ${_FAIL_REGEX})
+      if("${OUTPUT}" MATCHES "${_regex}")
+        set(${_var} 0)
+      endif()
+    endforeach()
+
+    if(${_var})
+      set(${_var} 1 CACHE INTERNAL "Test ${_var}")
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_PASS "Success")
+      endif()
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Performing ${_lang_textual} SOURCE FILE Test ${_var} succeeded with the following output:\n"
+        "${OUTPUT}\n"
+        "Source file was:\n${_source}\n")
+    else()
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_FAIL "Failed")
+      endif()
+      set(${_var} "" CACHE INTERNAL "Test ${_var}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Performing ${_lang_textual} SOURCE FILE Test ${_var} failed with the following output:\n"
+        "${OUTPUT}\n"
+        "Source file was:\n${_source}\n")
+    endif()
+  endif()
+endfunction()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/Internal/CheckSourceRuns.cmake b/share/cmake-3.22/Modules/Internal/CheckSourceRuns.cmake
new file mode 100644
index 0000000..75e9896
--- /dev/null
+++ b/share/cmake-3.22/Modules/Internal/CheckSourceRuns.cmake
@@ -0,0 +1,145 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+include_guard(GLOBAL)
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced
+cmake_policy(SET CMP0057 NEW) # if() supports IN_LIST
+
+function(CMAKE_CHECK_SOURCE_RUNS _lang _source _var)
+  if(NOT DEFINED "${_var}")
+
+    if(_lang STREQUAL "C")
+      set(_lang_textual "C")
+      set(_lang_ext "c")
+    elseif(_lang STREQUAL "CXX")
+      set(_lang_textual "C++")
+      set(_lang_ext "cxx")
+    elseif(_lang STREQUAL "CUDA")
+      set(_lang_textual "CUDA")
+      set(_lang_ext "cu")
+    elseif(_lang STREQUAL "Fortran")
+      set(_lang_textual "Fortran")
+      set(_lang_ext "F90")
+    elseif(_lang STREQUAL "HIP")
+      set(_lang_textual "HIP")
+      set(_lang_ext "hip")
+    elseif(_lang STREQUAL "OBJC")
+      set(_lang_textual "Objective-C")
+      set(_lang_ext "m")
+    elseif(_lang STREQUAL "OBJCXX")
+      set(_lang_textual "Objective-C++")
+      set(_lang_ext "mm")
+    else()
+      message (SEND_ERROR "check_source_runs: ${_lang}: unknown language.")
+      return()
+    endif()
+
+    get_property (_supported_languages GLOBAL PROPERTY ENABLED_LANGUAGES)
+    if (NOT _lang IN_LIST _supported_languages)
+      message (SEND_ERROR "check_source_runs: ${_lang}: needs to be enabled before use.")
+      return()
+    endif()
+
+    set(_FAIL_REGEX)
+    set(_SRC_EXT)
+    set(_key)
+    foreach(arg ${ARGN})
+      if("${arg}" MATCHES "^(FAIL_REGEX|SRC_EXT)$")
+        set(_key "${arg}")
+      elseif(_key STREQUAL "FAIL_REGEX")
+        list(APPEND _FAIL_REGEX "${arg}")
+      elseif(_key STREQUAL "SRC_EXT")
+        set(_SRC_EXT "${arg}")
+        set(_key "")
+      else()
+        set(message_type FATAL_ERROR)
+        if (_CheckSourceRuns_old_signature)
+          set(message_type AUTHOR_WARNING)
+        endif ()
+        message("${message_type}" "Unknown argument:\n  ${arg}\n")
+        unset(message_type)
+      endif()
+    endforeach()
+
+    if(NOT _SRC_EXT)
+      set(_SRC_EXT ${_lang_ext})
+    endif()
+
+    if(CMAKE_REQUIRED_LINK_OPTIONS)
+      set(CHECK_${_lang}_SOURCE_COMPILES_ADD_LINK_OPTIONS
+        LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
+    else()
+      set(CHECK_${_lang}_SOURCE_COMPILES_ADD_LINK_OPTIONS)
+    endif()
+    if(CMAKE_REQUIRED_LIBRARIES)
+      set(CHECK_${_lang}_SOURCE_COMPILES_ADD_LIBRARIES
+        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+    else()
+      set(CHECK_${_lang}_SOURCE_COMPILES_ADD_LIBRARIES)
+    endif()
+    if(CMAKE_REQUIRED_INCLUDES)
+      set(CHECK_${_lang}_SOURCE_COMPILES_ADD_INCLUDES
+        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
+    else()
+      set(CHECK_${_lang}_SOURCE_COMPILES_ADD_INCLUDES)
+    endif()
+    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.${_SRC_EXT}"
+      "${_source}\n")
+
+    if(NOT CMAKE_REQUIRED_QUIET)
+      message(CHECK_START "Performing Test ${_var}")
+    endif()
+    try_run(${_var}_EXITCODE ${_var}_COMPILED
+      ${CMAKE_BINARY_DIR}
+      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.${_SRC_EXT}
+      COMPILE_DEFINITIONS -D${_var} ${CMAKE_REQUIRED_DEFINITIONS}
+      ${CHECK_${_lang}_SOURCE_COMPILES_ADD_LINK_OPTIONS}
+      ${CHECK_${_lang}_SOURCE_COMPILES_ADD_LIBRARIES}
+      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS}
+      -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
+      "${CHECK_${_lang}_SOURCE_COMPILES_ADD_INCLUDES}"
+      COMPILE_OUTPUT_VARIABLE OUTPUT
+      RUN_OUTPUT_VARIABLE RUN_OUTPUT)
+    # if it did not compile make the return value fail code of 1
+    if(NOT ${_var}_COMPILED)
+      set(${_var}_EXITCODE 1)
+      set(${_var}_EXITCODE 1 PARENT_SCOPE)
+    endif()
+    # if the return value was 0 then it worked
+    if("${${_var}_EXITCODE}" EQUAL 0)
+      set(${_var} 1 CACHE INTERNAL "Test ${_var}")
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_PASS "Success")
+      endif()
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Performing ${_lang_textual} SOURCE FILE Test ${_var} succeeded with the following compile output:\n"
+        "${OUTPUT}\n"
+        "...and run output:\n"
+        "${RUN_OUTPUT}\n"
+        "Return value: ${${_var}}\n"
+        "Source file was:\n${_source}\n")
+    else()
+      if(CMAKE_CROSSCOMPILING AND "${${_var}_EXITCODE}" MATCHES  "FAILED_TO_RUN")
+        set(${_var} "${${_var}_EXITCODE}" PARENT_SCOPE)
+      else()
+        set(${_var} "" CACHE INTERNAL "Test ${_var}")
+      endif()
+
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(CHECK_FAIL "Failed")
+      endif()
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Performing ${_lang_textual} SOURCE FILE Test ${_var} failed with the following compile output:\n"
+        "${OUTPUT}\n"
+        "...and run output:\n"
+        "${RUN_OUTPUT}\n"
+        "Return value: ${${_var}_EXITCODE}\n"
+        "Source file was:\n${_source}\n")
+
+    endif()
+  endif()
+endfunction()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake b/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake
new file mode 100644
index 0000000..b6f3c09
--- /dev/null
+++ b/share/cmake-3.22/Modules/Internal/FeatureTesting.cmake
@@ -0,0 +1,133 @@
+
+macro(_record_compiler_features lang compile_flags feature_list)
+  include("${CMAKE_ROOT}/Modules/Compiler/${CMAKE_${lang}_COMPILER_ID}-${lang}-FeatureTests.cmake" OPTIONAL)
+
+  string(TOLOWER ${lang} lang_lc)
+  file(REMOVE "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.bin")
+  file(WRITE "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.${lang_lc}" "
+  const char features[] = {\"\\n\"\n")
+
+  get_property(known_features GLOBAL PROPERTY CMAKE_${lang}_KNOWN_FEATURES)
+
+  foreach(feature ${known_features})
+    if (_cmake_feature_test_${feature})
+      if (${_cmake_feature_test_${feature}} STREQUAL 1)
+        set(_feature_condition "\"1\" ")
+      else()
+        set(_feature_condition "#if ${_cmake_feature_test_${feature}}\n\"1\"\n#else\n\"0\"\n#endif\n")
+      endif()
+      file(APPEND "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.${lang_lc}" "\"${lang}_FEATURE:\"\n${_feature_condition}\"${feature}\\n\"\n")
+    endif()
+  endforeach()
+  file(APPEND "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.${lang_lc}"
+    "\n};\n\nint main(int argc, char** argv) { (void)argv; return features[argc]; }\n")
+
+  if(CMAKE_${lang}_LINK_WITH_STANDARD_COMPILE_OPTION)
+    # This toolchain requires use of the language standard flag
+    # when linking in order to use the matching standard library.
+    set(compile_flags_for_link "${compile_flags}")
+  else()
+    set(compile_flags_for_link "")
+  endif()
+
+  try_compile(CMAKE_${lang}_FEATURE_TEST
+    ${CMAKE_BINARY_DIR} "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.${lang_lc}"
+    COMPILE_DEFINITIONS "${compile_flags}"
+    LINK_LIBRARIES "${compile_flags_for_link}"
+    OUTPUT_VARIABLE _output
+    COPY_FILE "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.bin"
+    COPY_FILE_ERROR _copy_error
+    )
+  if(CMAKE_${lang}_FEATURE_TEST AND NOT _copy_error)
+    set(_result 0)
+  else()
+    set(_result 255)
+  endif()
+  unset(CMAKE_${lang}_FEATURE_TEST CACHE)
+  unset(compile_flags_for_link)
+
+  if (_result EQUAL 0)
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+      "\n\nDetecting ${lang} [${compile_flags}] compiler features compiled with the following output:\n${_output}\n\n")
+    if(EXISTS "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.bin")
+      file(STRINGS "${CMAKE_BINARY_DIR}/CMakeFiles/feature_tests.bin"
+        features REGEX "${lang}_FEATURE:.*")
+      foreach(info ${features})
+        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+          "    Feature record: ${info}\n")
+        string(REPLACE "${lang}_FEATURE:" "" info ${info})
+        string(SUBSTRING ${info} 0 1 has_feature)
+        if(has_feature)
+          string(REGEX REPLACE "^1" "" feature ${info})
+          list(APPEND ${feature_list} ${feature})
+        endif()
+      endforeach()
+    endif()
+  else()
+    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+      "Detecting ${lang} [${compile_flags}] compiler features failed to compile with the following output:\n${_output}\n${_copy_error}\n\n")
+  endif()
+endmacro()
+
+macro(_record_compiler_features_c std)
+  list(APPEND CMAKE_C${std}_COMPILE_FEATURES c_std_${std})
+
+  get_property(lang_level_has_features GLOBAL PROPERTY CMAKE_C${std}_KNOWN_FEATURES)
+  if(lang_level_has_features)
+    _record_compiler_features(C "${CMAKE_C${std}_STANDARD_COMPILE_OPTION}" CMAKE_C${std}_COMPILE_FEATURES)
+  endif()
+  unset(lang_level_has_features)
+endmacro()
+
+macro(_record_compiler_features_cxx std)
+  list(APPEND CMAKE_CXX${std}_COMPILE_FEATURES cxx_std_${std})
+
+  get_property(lang_level_has_features GLOBAL PROPERTY CMAKE_CXX${std}_KNOWN_FEATURES)
+  if(lang_level_has_features)
+    _record_compiler_features(CXX "${CMAKE_CXX${std}_STANDARD_COMPILE_OPTION}" CMAKE_CXX${std}_COMPILE_FEATURES)
+  endif()
+  unset(lang_level_has_features)
+endmacro()
+
+macro(_record_compiler_features_cuda std)
+  list(APPEND CMAKE_CUDA${std}_COMPILE_FEATURES cuda_std_${std})
+
+  get_property(lang_level_has_features GLOBAL PROPERTY CMAKE_CUDA${std}_KNOWN_FEATURES)
+  if(lang_level_has_features)
+    _record_compiler_features(CUDA "${CMAKE_CUDA${std}_STANDARD_COMPILE_OPTION}" CMAKE_CUDA${std}_COMPILE_FEATURES)
+  endif()
+  unset(lang_level_has_features)
+endmacro()
+
+macro(_record_compiler_features_hip std)
+  list(APPEND CMAKE_HIP${std}_COMPILE_FEATURES hip_std_${std})
+
+  get_property(lang_level_has_features GLOBAL PROPERTY CMAKE_HIP${std}_KNOWN_FEATURES)
+  if(lang_level_has_features)
+    _record_compiler_features(HIP "${CMAKE_HIP${std}_STANDARD_COMPILE_OPTION}" CMAKE_HIP${std}_COMPILE_FEATURES)
+  endif()
+  unset(lang_level_has_features)
+endmacro()
+
+macro(_has_compiler_features lang level compile_flags feature_list)
+  # presume all known features are supported
+  get_property(known_features GLOBAL PROPERTY CMAKE_${lang}${level}_KNOWN_FEATURES)
+  list(APPEND ${feature_list} ${known_features})
+endmacro()
+
+macro(_has_compiler_features_c std)
+  list(APPEND CMAKE_C${std}_COMPILE_FEATURES c_std_${std})
+  _has_compiler_features(C ${std} "${CMAKE_C${std}_STANDARD_COMPILE_OPTION}" CMAKE_C${std}_COMPILE_FEATURES)
+endmacro()
+macro(_has_compiler_features_cxx std)
+  list(APPEND CMAKE_CXX${std}_COMPILE_FEATURES cxx_std_${std})
+  _has_compiler_features(CXX ${std} "${CMAKE_CXX${std}_STANDARD_COMPILE_OPTION}" CMAKE_CXX${std}_COMPILE_FEATURES)
+endmacro()
+macro(_has_compiler_features_cuda std)
+  list(APPEND CMAKE_CUDA${std}_COMPILE_FEATURES cuda_std_${std})
+  _has_compiler_features(CUDA ${std} "${CMAKE_CUDA${std}_STANDARD_COMPILE_OPTION}" CMAKE_CUDA${std}_COMPILE_FEATURES)
+endmacro()
+macro(_has_compiler_features_hip std)
+  list(APPEND CMAKE_HIP${std}_COMPILE_FEATURES hip_std_${std})
+  _has_compiler_features(HIP ${std} "${CMAKE_HIP${std}_STANDARD_COMPILE_OPTION}" CMAKE_HIP${std}_COMPILE_FEATURES)
+endmacro()
diff --git a/share/cmake-3.22/Modules/Internal/OSRelease/010-TryOldCentOS.cmake b/share/cmake-3.22/Modules/Internal/OSRelease/010-TryOldCentOS.cmake
new file mode 100644
index 0000000..ff35897
--- /dev/null
+++ b/share/cmake-3.22/Modules/Internal/OSRelease/010-TryOldCentOS.cmake
@@ -0,0 +1,41 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# Author: Alex Turbov
+
+if(NOT EXISTS "${CMAKE_SYSROOT}/etc/centos-release")
+  return()
+endif()
+
+# Get the first string only
+file(
+    STRINGS "${CMAKE_SYSROOT}/etc/centos-release" CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT
+    LIMIT_COUNT 1
+  )
+
+#
+# Example:
+#   CentOS release 6.10 (Final)
+#
+if(CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT MATCHES "CentOS release ([0-9\.]+) .*")
+
+  set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_NAME CentOS)
+  set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_PRETTY_NAME "${CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT}")
+  set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_ID centos)
+  set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_ID_LIKE rhel)
+  set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION ${CMAKE_MATCH_1})
+  set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION_ID ${CMAKE_MATCH_1})
+
+  list(
+      APPEND CMAKE_GET_OS_RELEASE_FALLBACK_RESULT
+      CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_NAME
+      CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_PRETTY_NAME
+      CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_ID
+      CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_ID_LIKE
+      CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION
+      CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION_ID
+    )
+
+endif()
+
+unset(CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT)
diff --git a/share/cmake-3.22/Modules/Internal/OSRelease/020-TryDebianVersion.cmake b/share/cmake-3.22/Modules/Internal/OSRelease/020-TryDebianVersion.cmake
new file mode 100644
index 0000000..8ebe19a
--- /dev/null
+++ b/share/cmake-3.22/Modules/Internal/OSRelease/020-TryDebianVersion.cmake
@@ -0,0 +1,38 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# Author: Alex Turbov
+
+if(NOT EXISTS "${CMAKE_SYSROOT}/etc/debian_version")
+  return()
+endif()
+
+# Get the first string only
+file(
+    STRINGS "${CMAKE_SYSROOT}/etc/debian_version" CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT
+    LIMIT_COUNT 1
+  )
+
+#
+# Example:
+#   6.0.10          # Old debian
+#   wheezy/sid      # Ubuntu
+#
+if(CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT MATCHES "[0-9]+(\.[0-9]+)*")
+
+  set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_NAME Debian)
+  set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_ID debian)
+  set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION ${CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT})
+  set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION_ID ${CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT})
+
+  list(
+      APPEND CMAKE_GET_OS_RELEASE_FALLBACK_RESULT
+      CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_NAME
+      CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_ID
+      CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION
+      CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION_ID
+    )
+
+endif()
+
+unset(CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT)
diff --git a/share/cmake-3.18/Modules/KDE3Macros.cmake b/share/cmake-3.22/Modules/KDE3Macros.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/KDE3Macros.cmake
rename to share/cmake-3.22/Modules/KDE3Macros.cmake
diff --git a/share/cmake-3.18/Modules/MacOSXBundleInfo.plist.in b/share/cmake-3.22/Modules/MacOSXBundleInfo.plist.in
similarity index 100%
rename from share/cmake-3.18/Modules/MacOSXBundleInfo.plist.in
rename to share/cmake-3.22/Modules/MacOSXBundleInfo.plist.in
diff --git a/share/cmake-3.18/Modules/MacOSXFrameworkInfo.plist.in b/share/cmake-3.22/Modules/MacOSXFrameworkInfo.plist.in
similarity index 100%
rename from share/cmake-3.18/Modules/MacOSXFrameworkInfo.plist.in
rename to share/cmake-3.22/Modules/MacOSXFrameworkInfo.plist.in
diff --git a/share/cmake-3.22/Modules/MacroAddFileDependencies.cmake b/share/cmake-3.22/Modules/MacroAddFileDependencies.cmake
new file mode 100644
index 0000000..8fdc264
--- /dev/null
+++ b/share/cmake-3.22/Modules/MacroAddFileDependencies.cmake
@@ -0,0 +1,29 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+MacroAddFileDependencies
+------------------------
+
+.. deprecated:: 3.14
+
+::
+
+  MACRO_ADD_FILE_DEPENDENCIES(<source> <files>...)
+
+Do not use this command in new code.  It is just a wrapper around:
+
+.. code-block:: cmake
+
+  set_property(SOURCE <source> APPEND PROPERTY OBJECT_DEPENDS <files>...)
+
+Instead use the :command:`set_property` command to append to the
+:prop_sf:`OBJECT_DEPENDS` source file property directly.
+
+#]=======================================================================]
+
+macro (MACRO_ADD_FILE_DEPENDENCIES _file)
+
+  set_property(SOURCE "${_file}" APPEND PROPERTY OBJECT_DEPENDS "${ARGN}")
+
+endmacro ()
diff --git a/share/cmake-3.18/Modules/MatlabTestsRedirect.cmake b/share/cmake-3.22/Modules/MatlabTestsRedirect.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/MatlabTestsRedirect.cmake
rename to share/cmake-3.22/Modules/MatlabTestsRedirect.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-Clang-C.cmake b/share/cmake-3.22/Modules/Platform/AIX-Clang-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-Clang-C.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-Clang-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-Clang-CXX.cmake b/share/cmake-3.22/Modules/Platform/AIX-Clang-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-Clang-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-Clang-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-GNU-ASM.cmake b/share/cmake-3.22/Modules/Platform/AIX-GNU-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-GNU-ASM.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-GNU-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-GNU-C.cmake b/share/cmake-3.22/Modules/Platform/AIX-GNU-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-GNU-C.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-GNU-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-GNU-CXX.cmake b/share/cmake-3.22/Modules/Platform/AIX-GNU-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-GNU-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-GNU-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-GNU-Fortran.cmake b/share/cmake-3.22/Modules/Platform/AIX-GNU-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-GNU-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-GNU-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-GNU.cmake b/share/cmake-3.22/Modules/Platform/AIX-GNU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-GNU.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-GNU.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-VisualAge-C.cmake b/share/cmake-3.22/Modules/Platform/AIX-VisualAge-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-VisualAge-C.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-VisualAge-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-VisualAge-CXX.cmake b/share/cmake-3.22/Modules/Platform/AIX-VisualAge-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-VisualAge-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-VisualAge-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-VisualAge-Fortran.cmake b/share/cmake-3.22/Modules/Platform/AIX-VisualAge-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-VisualAge-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-VisualAge-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-XL-ASM.cmake b/share/cmake-3.22/Modules/Platform/AIX-XL-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-XL-ASM.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-XL-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-XL-C.cmake b/share/cmake-3.22/Modules/Platform/AIX-XL-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-XL-C.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-XL-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-XL-CXX.cmake b/share/cmake-3.22/Modules/Platform/AIX-XL-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-XL-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-XL-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-XL-Fortran.cmake b/share/cmake-3.22/Modules/Platform/AIX-XL-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-XL-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-XL-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-XL.cmake b/share/cmake-3.22/Modules/Platform/AIX-XL.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-XL.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-XL.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-XLClang-C.cmake b/share/cmake-3.22/Modules/Platform/AIX-XLClang-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-XLClang-C.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-XLClang-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-XLClang-CXX.cmake b/share/cmake-3.22/Modules/Platform/AIX-XLClang-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-XLClang-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-XLClang-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX-XLClang.cmake b/share/cmake-3.22/Modules/Platform/AIX-XLClang.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX-XLClang.cmake
rename to share/cmake-3.22/Modules/Platform/AIX-XLClang.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX.cmake b/share/cmake-3.22/Modules/Platform/AIX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX.cmake
rename to share/cmake-3.22/Modules/Platform/AIX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/AIX/ExportImportList b/share/cmake-3.22/Modules/Platform/AIX/ExportImportList
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/AIX/ExportImportList
rename to share/cmake-3.22/Modules/Platform/AIX/ExportImportList
diff --git a/share/cmake-3.22/Modules/Platform/ARTOS-GNU-C.cmake b/share/cmake-3.22/Modules/Platform/ARTOS-GNU-C.cmake
new file mode 100644
index 0000000..bce4613
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/ARTOS-GNU-C.cmake
@@ -0,0 +1,9 @@
+# Define ARTOS to select proper behavior and tell preprocessor to accept C++ style comments.
+string(APPEND CMAKE_C_FLAGS_INIT " -DARTOS -Xp -+")
+# ac doesn't support -g properly and doesn't support the normal gcc optimization options. Just use the defaults set by ac.
+string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " ")
+string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG")
+string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -DNDEBUG")
+# Most projects expect the stdio functions to be available.
+set(CMAKE_C_STANDARD_LIBRARIES_INIT "stdio.a")
diff --git a/share/cmake-3.18/Modules/Platform/ARTOS.cmake b/share/cmake-3.22/Modules/Platform/ARTOS.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/ARTOS.cmake
rename to share/cmake-3.22/Modules/Platform/ARTOS.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android-Clang-ASM.cmake b/share/cmake-3.22/Modules/Platform/Android-Clang-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android-Clang-ASM.cmake
rename to share/cmake-3.22/Modules/Platform/Android-Clang-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake b/share/cmake-3.22/Modules/Platform/Android-Clang-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake
rename to share/cmake-3.22/Modules/Platform/Android-Clang-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android-Clang-CXX.cmake b/share/cmake-3.22/Modules/Platform/Android-Clang-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android-Clang-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Android-Clang-CXX.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Android-Clang.cmake b/share/cmake-3.22/Modules/Platform/Android-Clang.cmake
new file mode 100644
index 0000000..3a279ca
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Android-Clang.cmake
@@ -0,0 +1,91 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# This module is shared by multiple languages; use include blocker.
+if(__ANDROID_COMPILER_CLANG)
+  return()
+endif()
+set(__ANDROID_COMPILER_CLANG 1)
+
+# Include the NDK hook.
+# It can be used by NDK to inject necessary fixes for an earlier cmake.
+if(CMAKE_ANDROID_NDK)
+  include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/pre/Android-Clang.cmake OPTIONAL)
+endif()
+
+# Load flags from NDK. This file may provides the following variables:
+#   _ANDROID_NDK_INIT_CFLAGS
+#   _ANDROID_NDK_INIT_CFLAGS_DEBUG
+#   _ANDROID_NDK_INIT_CFLAGS_RELEASE
+#   _ANDROID_NDK_INIT_LDFLAGS
+#   _ANDROID_NDK_INIT_LDFLAGS_EXE
+if(CMAKE_ANDROID_NDK)
+  include(${CMAKE_ANDROID_NDK}/build/cmake/flags.cmake OPTIONAL
+          RESULT_VARIABLE _INCLUDED_FLAGS)
+endif()
+
+# Support for NVIDIA Nsight Tegra Visual Studio Edition was previously
+# implemented in the CMake VS IDE generators.  Avoid interfering with
+# that functionality for now.  Later we may try to integrate this.
+if(CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android")
+  macro(__android_compiler_clang lang)
+  endmacro()
+  return()
+endif()
+
+# Commonly used Android toolchain files that pre-date CMake upstream support
+# set CMAKE_SYSTEM_VERSION to 1.  Avoid interfering with them.
+if(CMAKE_SYSTEM_VERSION EQUAL 1)
+  macro(__android_compiler_clang lang)
+  endmacro()
+  return()
+endif()
+
+# Natively compiling on an Android host doesn't use the NDK cross-compilation
+# tools.
+if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Android")
+  macro(__android_compiler_clang lang)
+  endmacro()
+  return()
+endif()
+
+include(Platform/Android-Common)
+
+if(_INCLUDED_FLAGS)
+  # NDK provides the flags.
+  set(_ANDROID_ABI_INIT_CFLAGS "${_ANDROID_NDK_INIT_CFLAGS}")
+  set(_ANDROID_ABI_INIT_CFLAGS_DEBUG "${_ANDROID_NDK_INIT_CFLAGS_DEBUG}")
+  set(_ANDROID_ABI_INIT_CFLAGS_RELEASE "${_ANDROID_NDK_INIT_CFLAGS_RELEASE}")
+  set(_ANDROID_ABI_INIT_LDFLAGS "${_ANDROID_NDK_INIT_LDFLAGS}")
+  set(_ANDROID_ABI_INIT_EXE_LDFLAGS "${_ANDROID_NDK_INIT_LDFLAGS_EXE}")
+else()
+  # The NDK toolchain configuration files at:
+  #
+  #   <ndk>/[build/core/]toolchains/*-clang*/setup.mk
+  #
+  # contain logic to set LLVM_TRIPLE for Clang-based toolchains for each target.
+  # We need to produce the same target here to produce compatible binaries.
+  include(Platform/Android/abi-${CMAKE_ANDROID_ARCH_ABI}-Clang)
+endif()
+
+macro(__android_compiler_clang lang)
+  if(NOT "x${lang}" STREQUAL "xASM")
+    __android_compiler_common(${lang})
+  endif()
+  if(NOT CMAKE_${lang}_COMPILER_TARGET)
+    set(CMAKE_${lang}_COMPILER_TARGET "${CMAKE_ANDROID_ARCH_LLVM_TRIPLE}")
+    if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
+      string(APPEND CMAKE_${lang}_COMPILER_TARGET "${CMAKE_SYSTEM_VERSION}")
+    endif()
+    list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "--target=${CMAKE_${lang}_COMPILER_TARGET}")
+  endif()
+  if(CMAKE_GENERATOR MATCHES "Visual Studio")
+    set(_ANDROID_STL_NOSTDLIBXX 1)
+  endif()
+endmacro()
+
+# Include the NDK hook.
+# It can be used by NDK to inject necessary fixes for an earlier cmake.
+if(CMAKE_ANDROID_NDK)
+  include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/post/Android-Clang.cmake OPTIONAL)
+endif()
diff --git a/share/cmake-3.22/Modules/Platform/Android-Common.cmake b/share/cmake-3.22/Modules/Platform/Android-Common.cmake
new file mode 100644
index 0000000..f1deaca
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Android-Common.cmake
@@ -0,0 +1,230 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# This module is shared by multiple languages; use include blocker.
+if(__ANDROID_COMPILER_COMMON)
+  return()
+endif()
+set(__ANDROID_COMPILER_COMMON 1)
+
+if(CMAKE_ANDROID_NDK)
+  # <ndk>/build/core/definitions.mk
+
+  set(_ANDROID_STL_TYPES
+    none
+    system
+    c++_static
+    c++_shared
+    gabi++_static
+    gabi++_shared
+    gnustl_static
+    gnustl_shared
+    stlport_static
+    stlport_shared
+    )
+
+  if(CMAKE_ANDROID_STL_TYPE)
+    list(FIND _ANDROID_STL_TYPES "${CMAKE_ANDROID_STL_TYPE}" _ANDROID_STL_TYPE_FOUND)
+    if(_ANDROID_STL_TYPE_FOUND EQUAL -1)
+      string(REPLACE ";" "\n  " _msg ";${_ANDROID_STL_TYPES}")
+      message(FATAL_ERROR
+        "The CMAKE_ANDROID_STL_TYPE '${CMAKE_ANDROID_STL_TYPE}' is not one of the allowed values:${_msg}\n"
+        )
+    endif()
+    unset(_ANDROID_STL_TYPE_FOUND)
+  elseif(IS_DIRECTORY ${CMAKE_ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++)
+    set(CMAKE_ANDROID_STL_TYPE "gnustl_static")
+  else()
+    set(CMAKE_ANDROID_STL_TYPE "c++_static")
+  endif()
+
+  unset(_ANDROID_STL_TYPES)
+
+  # Forward Android-specific platform variables to try_compile projects.
+  list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
+    CMAKE_ANDROID_STL_TYPE
+    )
+endif()
+
+if(CMAKE_ANDROID_STL_TYPE)
+  if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
+    if(CMAKE_ANDROID_STL_TYPE STREQUAL "system")
+      set(_ANDROID_STL_EXCEPTIONS 0)
+      set(_ANDROID_STL_RTTI 0)
+      macro(__android_stl lang)
+        string(APPEND CMAKE_${lang}_FLAGS_INIT " -stdlib=libstdc++")
+        if(_ANDROID_STL_EXCEPTIONS OR _ANDROID_STL_RTTI)
+          string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " -lc++abi")
+          if(CMAKE_SYSTEM_VERSION LESS 21)
+            string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " -landroid_support")
+          endif()
+        endif()
+      endmacro()
+    elseif(CMAKE_ANDROID_STL_TYPE STREQUAL "c++_static")
+      set(_ANDROID_STL_EXCEPTIONS 1)
+      set(_ANDROID_STL_RTTI 1)
+      macro(__android_stl lang)
+        string(APPEND CMAKE_${lang}_FLAGS_INIT " -stdlib=libc++")
+        string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " -static-libstdc++")
+      endmacro()
+    elseif(CMAKE_ANDROID_STL_TYPE STREQUAL "c++_shared")
+      set(_ANDROID_STL_EXCEPTIONS 1)
+      set(_ANDROID_STL_RTTI 1)
+      macro(__android_stl lang)
+        string(APPEND CMAKE_${lang}_FLAGS_INIT " -stdlib=libc++")
+      endmacro()
+    elseif(CMAKE_ANDROID_STL_TYPE STREQUAL "none")
+      set(_ANDROID_STL_RTTI 0)
+      set(_ANDROID_STL_EXCEPTIONS 0)
+      macro(__android_stl lang)
+        # FIXME: Add a way to add project-wide language-specific compile-only flags.
+        set(CMAKE_CXX_COMPILE_OBJECT
+          "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE> -nostdinc++")
+        string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " -nostdlib++")
+      endmacro()
+    else()
+      message(FATAL_ERROR
+        "Android: STL '${CMAKE_ANDROID_STL_TYPE}' not supported by this NDK."
+        )
+    endif()
+    if(DEFINED CMAKE_ANDROID_RTTI)
+      set(_ANDROID_STL_RTTI ${CMAKE_ANDROID_RTTI})
+    endif()
+    if(DEFINED CMAKE_ANDROID_EXCEPTIONS)
+      set(_ANDROID_STL_EXCEPTIONS ${CMAKE_ANDROID_EXCEPTIONS})
+    endif()
+  elseif(CMAKE_ANDROID_NDK)
+
+    macro(__android_stl_inc lang dir req)
+      if(EXISTS "${dir}")
+        list(APPEND CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES "${dir}")
+      elseif(${req})
+        message(FATAL_ERROR
+          "Android: STL '${CMAKE_ANDROID_STL_TYPE}' include directory not found:\n"
+          "  ${dir}"
+          )
+      endif()
+    endmacro()
+
+    macro(__android_stl_lib lang lib req)
+      if(CMAKE_ANDROID_ARCH_ABI MATCHES "^armeabi" AND NOT CMAKE_ANDROID_ARM_MODE)
+        get_filename_component(_ANDROID_STL_LIBDIR "${lib}" DIRECTORY)
+        get_filename_component(_ANDROID_STL_LIBNAME "${lib}" NAME)
+        set(_ANDROID_STL_LIBTHUMB "${_ANDROID_STL_LIBDIR}/thumb/${_ANDROID_STL_LIBNAME}")
+        unset(_ANDROID_STL_LIBDIR)
+        unset(_ANDROID_STL_LIBNAME)
+      else()
+        set(_ANDROID_STL_LIBTHUMB "")
+      endif()
+
+      if(_ANDROID_STL_LIBTHUMB AND EXISTS "${_ANDROID_STL_LIBTHUMB}")
+        string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " \"${_ANDROID_STL_LIBTHUMB}\"")
+      elseif(EXISTS "${lib}")
+        string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " \"${lib}\"")
+      elseif(${req})
+        message(FATAL_ERROR
+          "Android: STL '${CMAKE_ANDROID_STL_TYPE}' library file not found:\n"
+          "  ${lib}"
+          )
+      endif()
+
+      unset(_ANDROID_STL_LIBTHUMB)
+    endmacro()
+
+    include(Platform/Android/ndk-stl-${CMAKE_ANDROID_STL_TYPE})
+  else()
+    macro(__android_stl lang)
+    endmacro()
+  endif()
+else()
+  macro(__android_stl lang)
+  endmacro()
+endif()
+
+# The NDK toolchain configuration files at:
+#
+#   <ndk>/[build/core/]toolchains/*/setup.mk
+#
+# contain logic to set TARGET_CFLAGS and TARGET_LDFLAGS (and debug/release
+# variants) to tell their build system what flags to pass for each ABI.
+# We need to produce the same flags here to produce compatible binaries.
+# We initialize these variables here and set them in the compiler-specific
+# modules that include this one.  Then we use them in the macro below when
+# it is called.
+set(_ANDROID_ABI_INIT_CFLAGS "")
+set(_ANDROID_ABI_INIT_CFLAGS_DEBUG "")
+set(_ANDROID_ABI_INIT_CFLAGS_RELEASE "")
+set(_ANDROID_ABI_INIT_LDFLAGS "")
+set(_ANDROID_ABI_INIT_EXE_LDFLAGS "")
+
+macro(__android_compiler_common lang)
+  if(_ANDROID_ABI_INIT_CFLAGS)
+    string(APPEND CMAKE_${lang}_FLAGS_INIT " ${_ANDROID_ABI_INIT_CFLAGS}")
+  endif()
+  if(_ANDROID_ABI_INIT_CFLAGS_DEBUG)
+    string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " ${_ANDROID_ABI_INIT_CFLAGS_DEBUG}")
+  endif()
+  if(_ANDROID_ABI_INIT_CFLAGS_RELEASE)
+    string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " ${_ANDROID_ABI_INIT_CFLAGS_RELEASE}")
+    string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " ${_ANDROID_ABI_INIT_CFLAGS_RELEASE}")
+    string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " ${_ANDROID_ABI_INIT_CFLAGS_RELEASE}")
+  endif()
+  if(_ANDROID_ABI_INIT_LDFLAGS)
+    foreach(t EXE SHARED MODULE)
+      string(APPEND CMAKE_${t}_LINKER_FLAGS_INIT " ${_ANDROID_ABI_INIT_LDFLAGS}")
+    endforeach()
+  endif()
+  if(_ANDROID_ABI_INIT_EXE_LDFLAGS)
+    string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ${_ANDROID_ABI_INIT_EXE_LDFLAGS}")
+  endif()
+
+  if(DEFINED _ANDROID_STL_EXCEPTIONS)
+    if(_ANDROID_STL_EXCEPTIONS)
+      string(APPEND CMAKE_${lang}_FLAGS_INIT " -fexceptions")
+    else()
+      string(APPEND CMAKE_${lang}_FLAGS_INIT " -fno-exceptions")
+    endif()
+  endif()
+
+  if("x${lang}" STREQUAL "xCXX" AND DEFINED _ANDROID_STL_RTTI)
+    if(_ANDROID_STL_RTTI)
+      string(APPEND CMAKE_${lang}_FLAGS_INIT " -frtti")
+    else()
+      string(APPEND CMAKE_${lang}_FLAGS_INIT " -fno-rtti")
+    endif()
+  endif()
+
+  if("x${lang}" STREQUAL "xCXX")
+    __android_stl(CXX)
+  endif()
+
+  if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
+    string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " -latomic -lm")
+  endif()
+
+  # <ndk>/build/core/definitions.mk appends the sysroot's include directory
+  # explicitly at the end of the command-line include path so that it
+  # precedes the toolchain's builtin include directories.  This is
+  # necessary so that Android API-version-specific headers are preferred
+  # over those in the toolchain's `include-fixed` directory (which cannot
+  # possibly match all versions).
+  #
+  # Do not do this for a standalone toolchain because it is already
+  # tied to a specific API version.
+  if(CMAKE_ANDROID_NDK AND NOT CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
+    if(CMAKE_SYSROOT_COMPILE)
+      set(_cmake_sysroot_compile "${CMAKE_SYSROOT_COMPILE}")
+    else()
+      set(_cmake_sysroot_compile "${CMAKE_SYSROOT}")
+    endif()
+    if(NOT CMAKE_ANDROID_NDK_DEPRECATED_HEADERS)
+      list(APPEND CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES
+        "${_cmake_sysroot_compile}/usr/include"
+        "${_cmake_sysroot_compile}/usr/include/${CMAKE_ANDROID_ARCH_TRIPLE}"
+        )
+    else()
+      list(APPEND CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES "${_cmake_sysroot_compile}/usr/include")
+    endif()
+    unset(_cmake_sysroot_compile)
+  endif()
+endmacro()
diff --git a/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake b/share/cmake-3.22/Modules/Platform/Android-Determine-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake
rename to share/cmake-3.22/Modules/Platform/Android-Determine-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android-Determine-CXX.cmake b/share/cmake-3.22/Modules/Platform/Android-Determine-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android-Determine-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Android-Determine-CXX.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Android-Determine.cmake b/share/cmake-3.22/Modules/Platform/Android-Determine.cmake
new file mode 100644
index 0000000..a4e9574
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Android-Determine.cmake
@@ -0,0 +1,609 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# When CMAKE_SYSTEM_NAME is "Android", CMakeDetermineSystem loads this module.
+# This module detects platform-wide information about the Android target
+# in order to store it in "CMakeSystem.cmake".
+
+# Include the NDK hook.
+# It can be used by NDK to inject necessary fixes for an earlier cmake.
+if(CMAKE_ANDROID_NDK)
+  include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/pre/Android-Determine.cmake OPTIONAL)
+endif()
+
+# Support for NVIDIA Nsight Tegra Visual Studio Edition was previously
+# implemented in the CMake VS IDE generators.  Avoid interfering with
+# that functionality for now.
+if(CMAKE_GENERATOR_PLATFORM STREQUAL "Tegra-Android")
+  return()
+endif()
+
+# Commonly used Android toolchain files that pre-date CMake upstream support
+# set CMAKE_SYSTEM_VERSION to 1.  Avoid interfering with them.
+if(CMAKE_SYSTEM_VERSION EQUAL 1)
+  return()
+endif()
+
+# Natively compiling on an Android host doesn't use the NDK cross-compilation
+# tools.
+if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Android")
+  return()
+endif()
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+# If using Android tools for Visual Studio, compile a sample project to get the
+# sysroot.
+if(CMAKE_GENERATOR MATCHES "Visual Studio")
+  if(NOT CMAKE_SYSROOT)
+    set(vcx_platform ${CMAKE_GENERATOR_PLATFORM})
+    if(CMAKE_GENERATOR MATCHES "Visual Studio 1[45]")
+      set(vcx_sysroot_var "Sysroot")
+    else()
+      set(vcx_sysroot_var "SysrootLink")
+    endif()
+    if(CMAKE_GENERATOR MATCHES "Visual Studio 14")
+      set(vcx_revision "2.0")
+    elseif(CMAKE_GENERATOR MATCHES "Visual Studio 1[56]")
+      set(vcx_revision "3.0")
+    else()
+      set(vcx_revision "")
+    endif()
+    configure_file(${CMAKE_ROOT}/Modules/Platform/Android/VCXProjInspect.vcxproj.in
+      ${CMAKE_PLATFORM_INFO_DIR}/VCXProjInspect.vcxproj @ONLY)
+    cmake_host_system_information(RESULT _msbuild QUERY VS_MSBUILD_COMMAND) # undocumented query
+    execute_process(
+      COMMAND "${_msbuild}" "VCXProjInspect.vcxproj"
+        "/p:Configuration=Debug" "/p:Platform=${vcx_platform}"
+      WORKING_DIRECTORY ${CMAKE_PLATFORM_INFO_DIR}
+      OUTPUT_VARIABLE VCXPROJ_INSPECT_OUTPUT
+      ERROR_VARIABLE VCXPROJ_INSPECT_OUTPUT
+      RESULT_VARIABLE VCXPROJ_INSPECT_RESULT
+      )
+    unset(_msbuild)
+    if(NOT CMAKE_SYSROOT AND VCXPROJ_INSPECT_OUTPUT MATCHES "CMAKE_SYSROOT=([^%\r\n]+)[\r\n]")
+      # Strip VS diagnostic output from the end of the line.
+      string(REGEX REPLACE " \\(TaskId:[0-9]*\\)$" "" _sysroot "${CMAKE_MATCH_1}")
+      if(EXISTS "${_sysroot}")
+        file(TO_CMAKE_PATH "${_sysroot}" CMAKE_SYSROOT)
+      endif()
+    endif()
+    if(VCXPROJ_INSPECT_RESULT)
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Determining the sysroot for the Android NDK failed.
+The output was:
+${VCXPROJ_INSPECT_RESULT}
+${VCXPROJ_INSPECT_OUTPUT}
+
+")
+    else()
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Determining the sysroot for the Android NDK succeeded.
+The output was:
+${VCXPROJ_INSPECT_RESULT}
+${VCXPROJ_INSPECT_OUTPUT}
+
+")
+    endif()
+  endif()
+  if(NOT CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION)
+    set(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION "clang")
+  endif()
+endif()
+
+# If the user provided CMAKE_SYSROOT for us, extract information from it.
+set(_ANDROID_SYSROOT_NDK "")
+set(_ANDROID_SYSROOT_API "")
+set(_ANDROID_SYSROOT_ARCH "")
+set(_ANDROID_SYSROOT_STANDALONE_TOOLCHAIN "")
+if(CMAKE_SYSROOT)
+  if(NOT IS_DIRECTORY "${CMAKE_SYSROOT}")
+    message(FATAL_ERROR
+      "Android: The specified CMAKE_SYSROOT:\n"
+      "  ${CMAKE_SYSROOT}\n"
+      "is not an existing directory."
+      )
+  endif()
+  if(CMAKE_SYSROOT MATCHES "^([^\\\n]*)/platforms/android-([0-9]+)/arch-([a-z0-9_]+)$")
+    set(_ANDROID_SYSROOT_NDK "${CMAKE_MATCH_1}")
+    set(_ANDROID_SYSROOT_API "${CMAKE_MATCH_2}")
+    set(_ANDROID_SYSROOT_ARCH "${CMAKE_MATCH_3}")
+  elseif(CMAKE_SYSROOT MATCHES "^([^\\\n]*)/sysroot$")
+    set(_ANDROID_SYSROOT_STANDALONE_TOOLCHAIN "${CMAKE_MATCH_1}")
+  else()
+    message(FATAL_ERROR
+      "The value of CMAKE_SYSROOT:\n"
+      "  ${CMAKE_SYSROOT}\n"
+      "does not match any of the forms:\n"
+      "  <ndk>/platforms/android-<api>/arch-<arch>\n"
+      "  <standalone-toolchain>/sysroot\n"
+      "where:\n"
+      "  <ndk>  = Android NDK directory (with forward slashes)\n"
+      "  <api>  = Android API version number (decimal digits)\n"
+      "  <arch> = Android ARCH name (lower case)\n"
+      "  <standalone-toolchain> = Path to standalone toolchain prefix\n"
+      )
+  endif()
+endif()
+
+# Find the Android NDK.
+if(CMAKE_ANDROID_NDK)
+  if(NOT IS_DIRECTORY "${CMAKE_ANDROID_NDK}")
+    message(FATAL_ERROR
+      "Android: The NDK root directory specified by CMAKE_ANDROID_NDK:\n"
+      "  ${CMAKE_ANDROID_NDK}\n"
+      "does not exist."
+      )
+  endif()
+elseif(CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
+  if(NOT IS_DIRECTORY "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}")
+    message(FATAL_ERROR
+      "Android: The standalone toolchain directory specified by CMAKE_ANDROID_STANDALONE_TOOLCHAIN:\n"
+      "  ${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}\n"
+      "does not exist."
+      )
+  endif()
+  if(NOT EXISTS "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot/usr/include/android/api-level.h")
+    message(FATAL_ERROR
+      "Android: The standalone toolchain directory specified by CMAKE_ANDROID_STANDALONE_TOOLCHAIN:\n"
+      "  ${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}\n"
+      "does not contain a sysroot with a known layout.  The file:\n"
+      "  ${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot/usr/include/android/api-level.h\n"
+      "does not exist."
+      )
+  endif()
+else()
+  if(IS_DIRECTORY "${_ANDROID_SYSROOT_NDK}")
+    set(CMAKE_ANDROID_NDK "${_ANDROID_SYSROOT_NDK}")
+  elseif(IS_DIRECTORY "${_ANDROID_SYSROOT_STANDALONE_TOOLCHAIN}")
+    set(CMAKE_ANDROID_STANDALONE_TOOLCHAIN "${_ANDROID_SYSROOT_STANDALONE_TOOLCHAIN}")
+  elseif(IS_DIRECTORY "${ANDROID_NDK}")
+    file(TO_CMAKE_PATH "${ANDROID_NDK}" CMAKE_ANDROID_NDK)
+  elseif(IS_DIRECTORY "${ANDROID_STANDALONE_TOOLCHAIN}")
+    file(TO_CMAKE_PATH "${ANDROID_STANDALONE_TOOLCHAIN}" CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
+  elseif(IS_DIRECTORY "$ENV{ANDROID_NDK_ROOT}")
+    file(TO_CMAKE_PATH "$ENV{ANDROID_NDK_ROOT}" CMAKE_ANDROID_NDK)
+  elseif(IS_DIRECTORY "$ENV{ANDROID_NDK}")
+    file(TO_CMAKE_PATH "$ENV{ANDROID_NDK}" CMAKE_ANDROID_NDK)
+  elseif(IS_DIRECTORY "$ENV{ANDROID_STANDALONE_TOOLCHAIN}")
+    file(TO_CMAKE_PATH "$ENV{ANDROID_STANDALONE_TOOLCHAIN}" CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
+  endif()
+  # TODO: Search harder for the NDK or standalone toolchain.
+endif()
+
+set(_ANDROID_STANDALONE_TOOLCHAIN_API "")
+if(CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
+  # Try to read the API level from the toolchain launcher.
+  if(EXISTS "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/clang")
+    set(_ANDROID_API_LEVEL_CLANG_REGEX "__ANDROID_API__=([0-9]+)")
+    file(STRINGS "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/clang" _ANDROID_STANDALONE_TOOLCHAIN_BIN_CLANG
+      REGEX "${_ANDROID_API_LEVEL_CLANG_REGEX}" LIMIT_COUNT 1 LIMIT_INPUT 65536)
+    if(_ANDROID_STANDALONE_TOOLCHAIN_BIN_CLANG MATCHES "${_ANDROID_API_LEVEL_CLANG_REGEX}")
+      set(_ANDROID_STANDALONE_TOOLCHAIN_API "${CMAKE_MATCH_1}")
+    endif()
+    unset(_ANDROID_STANDALONE_TOOLCHAIN_BIN_CLANG)
+    unset(_ANDROID_API_LEVEL_CLANG_REGEX)
+  endif()
+  if(NOT _ANDROID_STANDALONE_TOOLCHAIN_API)
+    # The compiler launcher does not know __ANDROID_API__.  Assume this
+    # is not unified headers and look for it in the api-level.h header.
+    set(_ANDROID_API_LEVEL_H_REGEX "^[\t ]*#[\t ]*define[\t ]+__ANDROID_API__[\t ]+([0-9]+)")
+    file(STRINGS "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot/usr/include/android/api-level.h"
+      _ANDROID_API_LEVEL_H_CONTENT REGEX "${_ANDROID_API_LEVEL_H_REGEX}")
+    if(_ANDROID_API_LEVEL_H_CONTENT MATCHES "${_ANDROID_API_LEVEL_H_REGEX}")
+      set(_ANDROID_STANDALONE_TOOLCHAIN_API "${CMAKE_MATCH_1}")
+    endif()
+  endif()
+  if(NOT _ANDROID_STANDALONE_TOOLCHAIN_API)
+    message(WARNING
+      "Android: Did not detect API level from\n"
+      "  ${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/clang\n"
+      "or\n"
+      "  ${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot/usr/include/android/api-level.h\n"
+      )
+  endif()
+endif()
+
+if(NOT CMAKE_ANDROID_NDK AND NOT CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
+  message(FATAL_ERROR "Android: Neither the NDK or a standalone toolchain was found.")
+endif()
+
+if(CMAKE_ANDROID_NDK)
+  # NDK >= 18 has platforms.cmake. It provides:
+  #   NDK_MIN_PLATFORM_LEVEL
+  #   NDK_MAX_PLATFORM_LEVEL
+  include("${CMAKE_ANDROID_NDK}/build/cmake/platforms.cmake" OPTIONAL RESULT_VARIABLE _INCLUDED_PLATFORMS)
+  # NDK >= 18 has abis.cmake. It provides:
+  #   NDK_KNOWN_DEVICE_ABI32S
+  #   NDK_KNOWN_DEVICE_ABI64S
+  # NDK >= 23 also provides:
+  #   NDK_KNOWN_DEVICE_ABIS
+  #   NDK_ABI_<abi>_PROC
+  #   NDK_ABI_<abi>_ARCH
+  #   NDK_ABI_<abi>_TRIPLE
+  #   NDK_ABI_<abi>_LLVM_TRIPLE
+  #   NDK_PROC_<processor>_ABI
+  #   NDK_ARCH_<arch>_ABI
+  include("${CMAKE_ANDROID_NDK}/build/cmake/abis.cmake" OPTIONAL RESULT_VARIABLE _INCLUDED_ABIS)
+endif()
+
+if(CMAKE_ANDROID_NDK AND EXISTS "${CMAKE_ANDROID_NDK}/source.properties")
+  # Android NDK revision
+  # Possible formats:
+  # * r16, build 1234: 16.0.1234
+  # * r16b, build 1234: 16.1.1234
+  # * r16 beta 1, build 1234: 16.0.1234-beta1
+  #
+  # Canary builds are not specially marked.
+  file(READ "${CMAKE_ANDROID_NDK}/source.properties" _ANDROID_NDK_SOURCE_PROPERTIES)
+
+  set(_ANDROID_NDK_REVISION_REGEX
+    "^Pkg\\.Desc = Android NDK\nPkg\\.Revision = ([0-9]+)\\.([0-9]+)\\.([0-9]+)(-beta([0-9]+))?")
+  if(NOT _ANDROID_NDK_SOURCE_PROPERTIES MATCHES "${_ANDROID_NDK_REVISION_REGEX}")
+    string(REPLACE "\n" "\n  " _ANDROID_NDK_SOURCE_PROPERTIES "${_ANDROID_NDK_SOURCE_PROPERTIES}")
+    message(FATAL_ERROR
+      "Android: Failed to parse NDK revision from:\n"
+      " ${CMAKE_ANDROID_NDK}/source.properties\n"
+      "with content:\n"
+      "  ${_ANDROID_NDK_SOURCE_PROPERTIES}")
+  endif()
+
+  set(_ANDROID_NDK_MAJOR "${CMAKE_MATCH_1}")
+  set(_ANDROID_NDK_MINOR "${CMAKE_MATCH_2}")
+  set(_ANDROID_NDK_BUILD "${CMAKE_MATCH_3}")
+  set(_ANDROID_NDK_BETA "${CMAKE_MATCH_5}")
+  if(_ANDROID_NDK_BETA STREQUAL "")
+    set(_ANDROID_NDK_BETA "0")
+  endif()
+  set(CMAKE_ANDROID_NDK_VERSION "${_ANDROID_NDK_MAJOR}.${_ANDROID_NDK_MINOR}")
+
+  unset(_ANDROID_NDK_SOURCE_PROPERTIES)
+  unset(_ANDROID_NDK_REVISION_REGEX)
+  unset(_ANDROID_NDK_MAJOR)
+  unset(_ANDROID_NDK_MINOR)
+  unset(_ANDROID_NDK_BUILD)
+  unset(_ANDROID_NDK_BETA)
+endif()
+
+if(CMAKE_ANDROID_NDK)
+  # Identify the host platform.
+  if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
+    if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "64")
+      set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "darwin-x86_64")
+    else()
+      set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "darwin-x86")
+    endif()
+  elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
+    if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64")
+      set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "linux-x86_64")
+    else()
+      set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "linux-x86")
+    endif()
+  elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
+    if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "AMD64")
+      set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "windows-x86_64")
+    else()
+      set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "windows")
+    endif()
+  else()
+    message(FATAL_ERROR "Android: Builds hosted on '${CMAKE_HOST_SYSTEM_NAME}' not supported.")
+  endif()
+
+  # Look for a unified toolchain/sysroot provided with the NDK.
+  set(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED "${CMAKE_ANDROID_NDK}/toolchains/llvm/prebuilt/${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}")
+  if(NOT IS_DIRECTORY "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/sysroot")
+    set(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED "")
+  endif()
+else()
+  set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG "")
+  set(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED "")
+endif()
+
+if(_INCLUDED_ABIS)
+  if(NDK_KNOWN_DEVICE_ABIS)
+    set(_ANDROID_KNOWN_ABIS ${NDK_KNOWN_DEVICE_ABIS})
+  else()
+    set(_ANDROID_KNOWN_ABIS ${NDK_KNOWN_DEVICE_ABI32S} ${NDK_KNOWN_DEVICE_ABI64S})
+  endif()
+endif()
+
+if(NOT DEFINED NDK_KNOWN_DEVICE_ABIS)
+  # The NDK is not new enough to provide ABI information.
+  # https://developer.android.com/ndk/guides/abis.html
+
+  set(NDK_ABI_arm64-v8a_PROC           "aarch64")
+  set(NDK_ABI_arm64-v8a_ARCH           "arm64")
+  set(NDK_ABI_arm64-v8a_TRIPLE         "aarch64-linux-android")
+  set(NDK_ABI_arm64-v8a_LLVM_TRIPLE    "aarch64-none-linux-android")
+  set(NDK_ABI_armeabi-v7a_PROC         "armv7-a")
+  set(NDK_ABI_armeabi-v7a_ARCH         "arm")
+  set(NDK_ABI_armeabi-v7a_TRIPLE       "arm-linux-androideabi")
+  set(NDK_ABI_armeabi-v7a_LLVM_TRIPLE  "armv7-none-linux-androideabi")
+  set(NDK_ABI_armeabi-v6_PROC          "armv6")
+  set(NDK_ABI_armeabi-v6_ARCH          "arm")
+  set(NDK_ABI_armeabi-v6_TRIPLE        "arm-linux-androideabi")
+  set(NDK_ABI_armeabi-v6_LLVM_TRIPLE   "armv6-none-linux-androideabi")
+  set(NDK_ABI_armeabi_PROC             "armv5te")
+  set(NDK_ABI_armeabi_ARCH             "arm")
+  set(NDK_ABI_armeabi_TRIPLE           "arm-linux-androideabi")
+  set(NDK_ABI_armeabi_LLVM_TRIPLE      "armv5te-none-linux-androideabi")
+  set(NDK_ABI_mips_PROC                "mips")
+  set(NDK_ABI_mips_ARCH                "mips")
+  set(NDK_ABI_mips_TRIPLE              "mipsel-linux-android")
+  set(NDK_ABI_mips_LLVM_TRIPLE         "mipsel-none-linux-android")
+  set(NDK_ABI_mips64_PROC              "mips64")
+  set(NDK_ABI_mips64_ARCH              "mips64")
+  set(NDK_ABI_mips64_TRIPLE            "mips64el-linux-android")
+  set(NDK_ABI_mips64_LLVM_TRIPLE       "mips64el-none-linux-android")
+  set(NDK_ABI_x86_PROC                 "i686")
+  set(NDK_ABI_x86_ARCH                 "x86")
+  set(NDK_ABI_x86_TRIPLE               "i686-linux-android")
+  set(NDK_ABI_x86_LLVM_TRIPLE          "i686-none-linux-android")
+  set(NDK_ABI_x86_64_PROC              "x86_64")
+  set(NDK_ABI_x86_64_ARCH              "x86_64")
+  set(NDK_ABI_x86_64_TRIPLE            "x86_64-linux-android")
+  set(NDK_ABI_x86_64_LLVM_TRIPLE       "x86_64-none-linux-android")
+
+  set(NDK_PROC_aarch64_ABI "arm64-v8a")
+  set(NDK_PROC_armv7-a_ABI "armeabi-v7a")
+  set(NDK_PROC_armv6_ABI   "armeabi-v6")
+  set(NDK_PROC_armv5te_ABI "armeabi")
+  set(NDK_PROC_i686_ABI    "x86")
+  set(NDK_PROC_mips_ABI    "mips")
+  set(NDK_PROC_mips64_ABI  "mips64")
+  set(NDK_PROC_x86_64_ABI  "x86_64")
+
+  set(NDK_ARCH_arm64_ABI  "arm64-v8a")
+  set(NDK_ARCH_arm_ABI    "armeabi")
+  set(NDK_ARCH_mips_ABI   "mips")
+  set(NDK_ARCH_mips64_ABI "mips64")
+  set(NDK_ARCH_x86_ABI    "x86")
+  set(NDK_ARCH_x86_64_ABI "x86_64")
+endif()
+
+# Validate inputs.
+if(CMAKE_ANDROID_ARCH_ABI AND NOT DEFINED "NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_PROC")
+  message(FATAL_ERROR "Android: Unknown ABI CMAKE_ANDROID_ARCH_ABI='${CMAKE_ANDROID_ARCH_ABI}'.")
+endif()
+if(CMAKE_SYSTEM_PROCESSOR AND NOT DEFINED "NDK_PROC_${CMAKE_SYSTEM_PROCESSOR}_ABI")
+  message(FATAL_ERROR "Android: Unknown processor CMAKE_SYSTEM_PROCESSOR='${CMAKE_SYSTEM_PROCESSOR}'.")
+endif()
+if(_ANDROID_SYSROOT_ARCH AND NOT DEFINED "NDK_ARCH_${_ANDROID_SYSROOT_ARCH}_ABI")
+  message(FATAL_ERROR
+    "Android: Unknown architecture '${_ANDROID_SYSROOT_ARCH}' specified in CMAKE_SYSROOT:\n"
+    "  ${CMAKE_SYSROOT}"
+    )
+endif()
+
+# Select an ABI.
+if(NOT CMAKE_ANDROID_ARCH_ABI)
+  if(CMAKE_SYSTEM_PROCESSOR)
+    set(CMAKE_ANDROID_ARCH_ABI "${NDK_PROC_${CMAKE_SYSTEM_PROCESSOR}_ABI}")
+  elseif(_ANDROID_SYSROOT_ARCH)
+    set(CMAKE_ANDROID_ARCH_ABI "${NDK_ARCH_${_ANDROID_SYSROOT_ARCH}_ABI}")
+  elseif(_INCLUDED_ABIS)
+    # Default to the oldest ARM ABI.
+    foreach(abi armeabi armeabi-v7a arm64-v8a)
+      if("${abi}" IN_LIST _ANDROID_KNOWN_ABIS)
+        set(CMAKE_ANDROID_ARCH_ABI "${abi}")
+        break()
+      endif()
+    endforeach()
+    if(NOT CMAKE_ANDROID_ARCH_ABI)
+      message(FATAL_ERROR
+        "Android: Can not determine the default ABI. Please set CMAKE_ANDROID_ARCH_ABI."
+      )
+    endif()
+  else()
+    # https://developer.android.com/ndk/guides/application_mk.html
+    # Default is the oldest ARM ABI.
+
+    # Lookup the available ABIs among all toolchains.
+    set(_ANDROID_ABIS "")
+    file(GLOB _ANDROID_CONFIG_MKS
+      "${CMAKE_ANDROID_NDK}/build/core/toolchains/*/config.mk"
+      "${CMAKE_ANDROID_NDK}/toolchains/*/config.mk"
+      )
+    foreach(config_mk IN LISTS _ANDROID_CONFIG_MKS)
+      file(STRINGS "${config_mk}" _ANDROID_TOOL_ABIS REGEX "^TOOLCHAIN_ABIS :=")
+      string(REPLACE "TOOLCHAIN_ABIS :=" "" _ANDROID_TOOL_ABIS "${_ANDROID_TOOL_ABIS}")
+      separate_arguments(_ANDROID_TOOL_ABIS UNIX_COMMAND "${_ANDROID_TOOL_ABIS}")
+      list(APPEND _ANDROID_ABIS ${_ANDROID_TOOL_ABIS})
+      unset(_ANDROID_TOOL_ABIS)
+    endforeach()
+    unset(_ANDROID_CONFIG_MKS)
+
+    # Choose the oldest among the available arm ABIs.
+    if(_ANDROID_ABIS)
+      list(REMOVE_DUPLICATES _ANDROID_ABIS)
+      foreach(abi armeabi armeabi-v7a arm64-v8a)
+        if("${abi}" IN_LIST _ANDROID_ABIS)
+          set(CMAKE_ANDROID_ARCH_ABI "${abi}")
+          break()
+        endif()
+      endforeach()
+    endif()
+    unset(_ANDROID_ABIS)
+
+    if(NOT CMAKE_ANDROID_ARCH_ABI)
+      set(CMAKE_ANDROID_ARCH_ABI "armeabi")
+    endif()
+  endif()
+endif()
+if(_INCLUDED_ABIS AND NOT CMAKE_ANDROID_ARCH_ABI IN_LIST _ANDROID_KNOWN_ABIS)
+  message(FATAL_ERROR
+    "Android: ABI '${CMAKE_ANDROID_ARCH_ABI}' is not supported by the NDK.\n"
+    "Supported ABIS: ${_ANDROID_KNOWN_ABIS}."
+  )
+endif()
+set(CMAKE_ANDROID_ARCH "${NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_ARCH}")
+if(_ANDROID_SYSROOT_ARCH AND NOT "x${_ANDROID_SYSROOT_ARCH}" STREQUAL "x${CMAKE_ANDROID_ARCH}")
+  message(FATAL_ERROR
+    "Android: Architecture '${_ANDROID_SYSROOT_ARCH}' specified in CMAKE_SYSROOT:\n"
+    "  ${CMAKE_SYSROOT}\n"
+    "does not match architecture '${CMAKE_ANDROID_ARCH}' for the ABI '${CMAKE_ANDROID_ARCH_ABI}'."
+    )
+endif()
+set(CMAKE_ANDROID_ARCH_TRIPLE "${NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_TRIPLE}")
+set(CMAKE_ANDROID_ARCH_LLVM_TRIPLE
+    "${NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_LLVM_TRIPLE}")
+
+# Select a processor.
+if(NOT CMAKE_SYSTEM_PROCESSOR)
+  set(CMAKE_SYSTEM_PROCESSOR "${NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_PROC}")
+endif()
+
+# If the user specified both an ABI and a processor then they might not match.
+if(NOT NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_PROC STREQUAL CMAKE_SYSTEM_PROCESSOR)
+  message(FATAL_ERROR "Android: The specified CMAKE_ANDROID_ARCH_ABI='${CMAKE_ANDROID_ARCH_ABI}' and CMAKE_SYSTEM_PROCESSOR='${CMAKE_SYSTEM_PROCESSOR}' is not a valid combination.")
+endif()
+
+# Select an API.
+if(CMAKE_SYSTEM_VERSION)
+  set(_ANDROID_API_VAR CMAKE_SYSTEM_VERSION)
+elseif(CMAKE_ANDROID_API)
+  set(CMAKE_SYSTEM_VERSION "${CMAKE_ANDROID_API}")
+  set(_ANDROID_API_VAR CMAKE_ANDROID_API)
+elseif(_ANDROID_SYSROOT_API)
+  set(CMAKE_SYSTEM_VERSION "${_ANDROID_SYSROOT_API}")
+  set(_ANDROID_API_VAR CMAKE_SYSROOT)
+elseif(_ANDROID_STANDALONE_TOOLCHAIN_API)
+  set(CMAKE_SYSTEM_VERSION "${_ANDROID_STANDALONE_TOOLCHAIN_API}")
+endif()
+if(CMAKE_SYSTEM_VERSION)
+  if(CMAKE_ANDROID_API AND NOT "x${CMAKE_ANDROID_API}" STREQUAL "x${CMAKE_SYSTEM_VERSION}")
+    message(FATAL_ERROR
+      "Android: The API specified by CMAKE_ANDROID_API='${CMAKE_ANDROID_API}' is not consistent with CMAKE_SYSTEM_VERSION='${CMAKE_SYSTEM_VERSION}'."
+      )
+  endif()
+  if(_ANDROID_SYSROOT_API)
+    foreach(v CMAKE_ANDROID_API CMAKE_SYSTEM_VERSION)
+      if(${v} AND NOT "x${_ANDROID_SYSROOT_API}" STREQUAL "x${${v}}")
+        message(FATAL_ERROR
+          "Android: The API specified by ${v}='${${v}}' is not consistent with CMAKE_SYSROOT:\n"
+          "  ${CMAKE_SYSROOT}"
+          )
+      endif()
+    endforeach()
+  endif()
+  if(CMAKE_ANDROID_NDK)
+    if (_INCLUDED_PLATFORMS)
+      if(CMAKE_SYSTEM_VERSION GREATER NDK_MAX_PLATFORM_LEVEL OR
+         CMAKE_SYSTEM_VERSION LESS NDK_MIN_PLATFORM_LEVEL)
+        message(FATAL_ERROR
+          "Android: The API level ${CMAKE_SYSTEM_VERSION} is not supported by the NDK.\n"
+          "Choose one in the range of [${NDK_MIN_PLATFORM_LEVEL}, ${NDK_MAX_PLATFORM_LEVEL}]."
+        )
+      endif()
+    else()
+      if(NOT IS_DIRECTORY "${CMAKE_ANDROID_NDK}/platforms/android-${CMAKE_SYSTEM_VERSION}")
+        message(FATAL_ERROR
+          "Android: The API specified by ${_ANDROID_API_VAR}='${${_ANDROID_API_VAR}}' does not exist in the NDK.  "
+          "The directory:\n"
+          "  ${CMAKE_ANDROID_NDK}/platforms/android-${CMAKE_SYSTEM_VERSION}\n"
+          "does not exist."
+          )
+      endif()
+    endif()
+  endif()
+elseif(CMAKE_ANDROID_NDK)
+  if (_INCLUDED_PLATFORMS)
+    set(CMAKE_SYSTEM_VERSION ${NDK_MIN_PLATFORM_LEVEL})
+    # And for LP64 we need to pull up to 21. No diagnostic is provided here because
+    # minSdkVersion < 21 is valid for the project even though it may not be for this
+    # ABI.
+    if(CMAKE_ANDROID_ARCH_ABI MATCHES "64(-v8a)?$" AND CMAKE_SYSTEM_VERSION LESS 21)
+      set(CMAKE_SYSTEM_VERSION 21)
+    endif()
+  else()
+    file(GLOB _ANDROID_APIS_1 RELATIVE "${CMAKE_ANDROID_NDK}/platforms" "${CMAKE_ANDROID_NDK}/platforms/android-[0-9]")
+    file(GLOB _ANDROID_APIS_2 RELATIVE "${CMAKE_ANDROID_NDK}/platforms" "${CMAKE_ANDROID_NDK}/platforms/android-[0-9][0-9]")
+    list(SORT _ANDROID_APIS_1)
+    list(SORT _ANDROID_APIS_2)
+    set(_ANDROID_APIS ${_ANDROID_APIS_1} ${_ANDROID_APIS_2})
+    unset(_ANDROID_APIS_1)
+    unset(_ANDROID_APIS_2)
+    if(_ANDROID_APIS STREQUAL "")
+      message(FATAL_ERROR
+        "Android: No APIs found in the NDK.  No\n"
+        "  ${CMAKE_ANDROID_NDK}/platforms/android-*\n"
+        "directories exist."
+        )
+    endif()
+    string(REPLACE "android-" "" _ANDROID_APIS "${_ANDROID_APIS}")
+    list(REVERSE _ANDROID_APIS)
+    list(GET _ANDROID_APIS 0 CMAKE_SYSTEM_VERSION)
+    unset(_ANDROID_APIS)
+  endif()
+endif()
+if(NOT CMAKE_SYSTEM_VERSION MATCHES "^[0-9]+$")
+  message(FATAL_ERROR "Android: The API specified by CMAKE_SYSTEM_VERSION='${CMAKE_SYSTEM_VERSION}' is not an integer.")
+endif()
+
+if(CMAKE_ANDROID_NDK AND NOT DEFINED CMAKE_ANDROID_NDK_DEPRECATED_HEADERS)
+  if(IS_DIRECTORY "${CMAKE_ANDROID_NDK}/sysroot/usr/include/${CMAKE_ANDROID_ARCH_TRIPLE}")
+    # Unified headers exist so we use them by default.
+    set(CMAKE_ANDROID_NDK_DEPRECATED_HEADERS 0)
+  else()
+    # Unified headers do not exist so use the deprecated headers.
+    set(CMAKE_ANDROID_NDK_DEPRECATED_HEADERS 1)
+  endif()
+endif()
+
+# Save the Android-specific information in CMakeSystem.cmake.
+set(CMAKE_SYSTEM_CUSTOM_CODE "
+set(CMAKE_ANDROID_NDK \"${CMAKE_ANDROID_NDK}\")
+set(CMAKE_ANDROID_STANDALONE_TOOLCHAIN \"${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}\")
+set(CMAKE_ANDROID_ARCH \"${CMAKE_ANDROID_ARCH}\")
+set(CMAKE_ANDROID_ARCH_ABI \"${CMAKE_ANDROID_ARCH_ABI}\")
+")
+
+if(CMAKE_ANDROID_NDK)
+  string(APPEND CMAKE_SYSTEM_CUSTOM_CODE
+    "set(CMAKE_ANDROID_ARCH_TRIPLE \"${CMAKE_ANDROID_ARCH_TRIPLE}\")\n"
+    "set(CMAKE_ANDROID_ARCH_LLVM_TRIPLE \"${CMAKE_ANDROID_ARCH_LLVM_TRIPLE}\")\n"
+    "set(CMAKE_ANDROID_NDK_VERSION \"${CMAKE_ANDROID_NDK_VERSION}\")\n"
+    "set(CMAKE_ANDROID_NDK_DEPRECATED_HEADERS \"${CMAKE_ANDROID_NDK_DEPRECATED_HEADERS}\")\n"
+    "set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG \"${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}\")\n"
+    "set(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED \"${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}\")\n"
+    )
+endif()
+
+# Select an ARM variant.
+if(CMAKE_ANDROID_ARCH_ABI MATCHES "^armeabi")
+  if(CMAKE_ANDROID_ARM_MODE)
+    set(CMAKE_ANDROID_ARM_MODE 1)
+  else()
+    set(CMAKE_ANDROID_ARM_MODE 0)
+  endif()
+  string(APPEND CMAKE_SYSTEM_CUSTOM_CODE
+    "set(CMAKE_ANDROID_ARM_MODE \"${CMAKE_ANDROID_ARM_MODE}\")\n"
+    )
+elseif(DEFINED CMAKE_ANDROID_ARM_MODE)
+  message(FATAL_ERROR "Android: CMAKE_ANDROID_ARM_MODE is set but is valid only for 'armeabi' architectures.")
+endif()
+
+if(CMAKE_ANDROID_ARCH_ABI STREQUAL "armeabi-v7a")
+  if(CMAKE_ANDROID_ARM_NEON)
+    set(CMAKE_ANDROID_ARM_NEON 1)
+  else()
+    set(CMAKE_ANDROID_ARM_NEON 0)
+  endif()
+  string(APPEND CMAKE_SYSTEM_CUSTOM_CODE
+    "set(CMAKE_ANDROID_ARM_NEON \"${CMAKE_ANDROID_ARM_NEON}\")\n"
+    )
+elseif(DEFINED CMAKE_ANDROID_ARM_NEON)
+  message(FATAL_ERROR "Android: CMAKE_ANDROID_ARM_NEON is set but is valid only for 'armeabi-v7a' architecture.")
+endif()
+
+# Report the chosen architecture.
+message(STATUS "Android: Targeting API '${CMAKE_SYSTEM_VERSION}' with architecture '${CMAKE_ANDROID_ARCH}', ABI '${CMAKE_ANDROID_ARCH_ABI}', and processor '${CMAKE_SYSTEM_PROCESSOR}'")
+
+cmake_policy(POP)
+
+# Include the NDK hook.
+# It can be used by NDK to inject necessary fixes for an earlier cmake.
+if(CMAKE_ANDROID_NDK)
+  include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/post/Android-Determine.cmake OPTIONAL)
+endif()
diff --git a/share/cmake-3.18/Modules/Platform/Android-GNU-C.cmake b/share/cmake-3.22/Modules/Platform/Android-GNU-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android-GNU-C.cmake
rename to share/cmake-3.22/Modules/Platform/Android-GNU-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android-GNU-CXX.cmake b/share/cmake-3.22/Modules/Platform/Android-GNU-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android-GNU-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Android-GNU-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android-GNU.cmake b/share/cmake-3.22/Modules/Platform/Android-GNU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android-GNU.cmake
rename to share/cmake-3.22/Modules/Platform/Android-GNU.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake b/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake
new file mode 100644
index 0000000..63bc949
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake
@@ -0,0 +1,112 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# When CMAKE_SYSTEM_NAME is "Android", CMakeSystemSpecificInitialize loads this
+# module.
+
+# Include the NDK hook.
+# It can be used by NDK to inject necessary fixes for an earlier cmake.
+if(CMAKE_ANDROID_NDK)
+  include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/pre/Android-Initialize.cmake OPTIONAL)
+endif()
+
+# Support for NVIDIA Nsight Tegra Visual Studio Edition was previously
+# implemented in the CMake VS IDE generators.  Avoid interfering with
+# that functionality for now.
+if(CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android")
+  return()
+endif()
+
+# Commonly used Android toolchain files that pre-date CMake upstream support
+# set CMAKE_SYSTEM_VERSION to 1.  Avoid interfering with them.
+if(CMAKE_SYSTEM_VERSION EQUAL 1)
+  return()
+endif()
+
+set(CMAKE_BUILD_TYPE_INIT "RelWithDebInfo")
+
+if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
+  # Tell CMake not to search host sysroots for headers/libraries.
+
+  # All paths added to CMAKE_SYSTEM_*_PATH below will be rerooted under
+  # CMAKE_FIND_ROOT_PATH. This is set because:
+  # 1. Users may structure their libraries in a way similar to NDK. When they do that,
+  #    they can simply append another path to CMAKE_FIND_ROOT_PATH.
+  # 2. CMAKE_FIND_ROOT_PATH must be non-empty for CMAKE_FIND_ROOT_PATH_MODE_* == ONLY
+  #    to be meaningful. https://github.com/android-ndk/ndk/issues/890
+  list(APPEND CMAKE_FIND_ROOT_PATH "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/sysroot")
+
+  # Allow users to override these values in case they want more strict behaviors.
+  # For example, they may want to prevent the NDK's libz from being picked up so
+  # they can use their own.
+  # https://github.com/android-ndk/ndk/issues/517
+  if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PROGRAM)
+    set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+  endif()
+
+  if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_LIBRARY)
+    set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+  endif()
+
+  if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_INCLUDE)
+    set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+  endif()
+
+  if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PACKAGE)
+    set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
+  endif()
+
+  # Allows CMake to find headers in the architecture-specific include directories.
+  set(CMAKE_LIBRARY_ARCHITECTURE "${CMAKE_ANDROID_ARCH_TRIPLE}")
+
+  # Instructs CMake to search the correct API level for libraries.
+  # Besides the paths like <root>/<prefix>/lib/<arch>, cmake also searches <root>/<prefix>.
+  # So we can add the API level specific directory directly.
+  # https://github.com/android/ndk/issues/929
+  list(PREPEND CMAKE_SYSTEM_PREFIX_PATH
+    "/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/${CMAKE_SYSTEM_VERSION}"
+    )
+
+  list(APPEND CMAKE_SYSTEM_PROGRAM_PATH "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin")
+endif()
+
+# Skip sysroot selection if the NDK has a unified toolchain.
+if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
+  return()
+endif()
+
+# Natively compiling on an Android host doesn't use the NDK cross-compilation
+# tools.
+if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Android")
+  return()
+endif()
+
+if(NOT CMAKE_SYSROOT)
+  if(CMAKE_ANDROID_NDK)
+    set(CMAKE_SYSROOT "${CMAKE_ANDROID_NDK}/platforms/android-${CMAKE_SYSTEM_VERSION}/arch-${CMAKE_ANDROID_ARCH}")
+    if(NOT CMAKE_ANDROID_NDK_DEPRECATED_HEADERS)
+      set(CMAKE_SYSROOT_COMPILE "${CMAKE_ANDROID_NDK}/sysroot")
+    endif()
+  elseif(CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
+    set(CMAKE_SYSROOT "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/sysroot")
+  endif()
+endif()
+
+if(CMAKE_SYSROOT)
+  if(NOT IS_DIRECTORY "${CMAKE_SYSROOT}")
+    message(FATAL_ERROR
+      "Android: The system root directory needed for the selected Android version and architecture does not exist:\n"
+      "  ${CMAKE_SYSROOT}\n"
+      )
+  endif()
+else()
+  message(FATAL_ERROR
+    "Android: No CMAKE_SYSROOT was selected."
+    )
+endif()
+
+# Include the NDK hook.
+# It can be used by NDK to inject necessary fixes for an earlier cmake.
+if(CMAKE_ANDROID_NDK)
+  include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/post/Android-Initialize.cmake OPTIONAL)
+endif()
diff --git a/share/cmake-3.22/Modules/Platform/Android.cmake b/share/cmake-3.22/Modules/Platform/Android.cmake
new file mode 100644
index 0000000..6944e32
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Android.cmake
@@ -0,0 +1,42 @@
+# Include the NDK hook.
+# It can be used by NDK to inject necessary fixes for an earlier cmake.
+if(CMAKE_ANDROID_NDK)
+  include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/pre/Android.cmake OPTIONAL)
+endif()
+
+include(Platform/Linux)
+
+set(ANDROID 1)
+
+# Natively compiling on an Android host doesn't need these flags to be reset.
+if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Android")
+  return()
+endif()
+
+# Conventionally Android does not use versioned soname
+# But in modern versions it is acceptable
+if(NOT DEFINED CMAKE_PLATFORM_NO_VERSIONED_SONAME)
+  set(CMAKE_PLATFORM_NO_VERSIONED_SONAME 1)
+endif()
+
+# Android reportedly ignores RPATH, and we cannot predict the install
+# location anyway.
+set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "")
+
+# Nsight Tegra Visual Studio Edition takes care of
+# prefixing library names with '-l'.
+if(CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android")
+  set(CMAKE_LINK_LIBRARY_FLAG "")
+endif()
+
+# Commonly used Android toolchain files that pre-date CMake upstream support
+# set CMAKE_SYSTEM_VERSION to 1.  Avoid interfering with them.
+if(CMAKE_SYSTEM_VERSION EQUAL 1)
+  return()
+endif()
+
+# Include the NDK hook.
+# It can be used by NDK to inject necessary fixes for an earlier cmake.
+if(CMAKE_ANDROID_NDK)
+  include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/post/Android.cmake OPTIONAL)
+endif()
diff --git a/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler-NDK.cmake b/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler-NDK.cmake
new file mode 100644
index 0000000..a4d67c4
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler-NDK.cmake
@@ -0,0 +1,271 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# In Android NDK r19 and above there is a single clang toolchain.
+if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
+  if(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION AND NOT CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION STREQUAL "clang")
+    message(FATAL_ERROR
+      "Android: The CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION value '${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION}' "
+      "is not supported by this NDK.  It must be 'clang' or not set at all."
+      )
+  endif()
+  message(STATUS "Android: Selected unified Clang toolchain")
+  set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "clang")
+  set(_ANDROID_TOOL_C_COMPILER "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin/clang${_ANDROID_HOST_EXT}")
+  set(_ANDROID_TOOL_C_TOOLCHAIN_MACHINE "${CMAKE_ANDROID_ARCH_TRIPLE}")
+  set(_ANDROID_TOOL_C_TOOLCHAIN_VERSION "")
+  set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN "")
+  set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin/${CMAKE_ANDROID_ARCH_TRIPLE}-")
+  set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "${_ANDROID_HOST_EXT}")
+  set(_ANDROID_TOOL_CXX_COMPILER "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin/clang++${_ANDROID_HOST_EXT}")
+  set(_ANDROID_TOOL_CXX_TOOLCHAIN_MACHINE "${CMAKE_ANDROID_ARCH_TRIPLE}")
+  set(_ANDROID_TOOL_CXX_TOOLCHAIN_VERSION "")
+  set(_ANDROID_TOOL_CXX_COMPILER_EXTERNAL_TOOLCHAIN "")
+  set(_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin/${CMAKE_ANDROID_ARCH_TRIPLE}-")
+  set(_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX "${_ANDROID_HOST_EXT}")
+  set(_CMAKE_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_ARCH_TRIPLE}-")
+  return()
+endif()
+
+# In Android NDK releases there is build system toolchain selection logic in
+# these files:
+#
+# * <ndk>/build/core/init.mk
+# * <ndk>/build/core/setup-toolchain.mk
+# * <ndk>/[build/core/]toolchains/<toolchain>/{config.mk,setup.mk}
+#
+# We parse information out of the ``config.mk`` and ``setup.mk`` files below.
+#
+# There is also a "toolchains" directory with the prebuilt toolchains themselves:
+#
+# * <triple-or-arch>-<gcc-version>/prebuilt/<host>/bin/<triple>-gcc(.exe)?
+#   The gcc compiler to be invoked.
+#
+# * llvm*/prebuilt/<host>/bin/clang
+#   The clang compiler to be invoked with flags:
+#     -target <triple>
+#     -gcc-toolchain <ndk>/toolchains/<triple-or-arch>-<gcc-version>
+
+# Glob available toolchains in the NDK, restricted by any version request.
+if(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION STREQUAL "clang")
+  set(_ANDROID_TOOL_PATTERNS "*-clang" "*-clang[0-9].[0-9]")
+elseif(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION)
+  if(NOT CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION MATCHES "^(clang)?[0-9]\\.[0-9]$")
+    message(FATAL_ERROR
+      "Android: The CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION value '${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION}' "
+      "is not one of the allowed forms:\n"
+      "  <major>.<minor>       = GCC of specified version\n"
+      "  clang<major>.<minor>  = Clang of specified version\n"
+      "  clang                 = Clang of most recent available version\n"
+      )
+  endif()
+  set(_ANDROID_TOOL_PATTERNS "*-${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION}")
+else()
+  # If we can find any gcc toolchains then use one by default.
+  # Otherwise we look for clang toolchains (e.g. NDK r18+).
+  file(GLOB _ANDROID_CONFIG_MKS_FOR_GCC
+    "${CMAKE_ANDROID_NDK}/build/core/toolchains/*-[0-9].[0-9]/config.mk"
+    "${CMAKE_ANDROID_NDK}/toolchains/*-[0-9].[0-9]/config.mk"
+    )
+  if(_ANDROID_CONFIG_MKS_FOR_GCC)
+    set(_ANDROID_TOOL_PATTERNS "*-[0-9].[0-9]")
+  else()
+    set(_ANDROID_TOOL_PATTERNS "*-clang")
+  endif()
+  unset(_ANDROID_CONFIG_MKS_FOR_GCC)
+endif()
+set(_ANDROID_CONFIG_MK_PATTERNS)
+foreach(base "build/core/toolchains" "toolchains")
+  foreach(pattern IN LISTS _ANDROID_TOOL_PATTERNS)
+    list(APPEND _ANDROID_CONFIG_MK_PATTERNS
+      "${CMAKE_ANDROID_NDK}/${base}/${pattern}/config.mk"
+      )
+  endforeach()
+endforeach()
+unset(_ANDROID_TOOL_PATTERNS)
+file(GLOB _ANDROID_CONFIG_MKS ${_ANDROID_CONFIG_MK_PATTERNS})
+unset(_ANDROID_CONFIG_MK_PATTERNS)
+
+# Find the newest toolchain version matching the ABI.
+set(_ANDROID_TOOL_NAME "")
+set(_ANDROID_TOOL_VERS 0)
+set(_ANDROID_TOOL_VERS_NDK "")
+set(_ANDROID_TOOL_SETUP_MK "")
+foreach(config_mk IN LISTS _ANDROID_CONFIG_MKS)
+  # Check that the toolchain matches the ABI.
+  file(STRINGS "${config_mk}" _ANDROID_TOOL_ABIS REGEX "^TOOLCHAIN_ABIS :=.* ${CMAKE_ANDROID_ARCH_ABI}( |$)")
+  if(NOT _ANDROID_TOOL_ABIS)
+    continue()
+  endif()
+  unset(_ANDROID_TOOL_ABIS)
+
+  # Check the version.
+  if("${config_mk}" MATCHES [[/([^/]+-((clang)?([0-9]\.[0-9]|)))/config.mk$]])
+    set(_ANDROID_CUR_NAME "${CMAKE_MATCH_1}")
+    set(_ANDROID_CUR_VERS "${CMAKE_MATCH_4}")
+    set(_ANDROID_CUR_VERS_NDK "${CMAKE_MATCH_2}")
+    if(_ANDROID_TOOL_VERS STREQUAL "")
+      # already the latest possible
+    elseif(_ANDROID_CUR_VERS STREQUAL "" OR _ANDROID_CUR_VERS VERSION_GREATER _ANDROID_TOOL_VERS)
+      set(_ANDROID_TOOL_NAME "${_ANDROID_CUR_NAME}")
+      set(_ANDROID_TOOL_VERS "${_ANDROID_CUR_VERS}")
+      set(_ANDROID_TOOL_VERS_NDK "${_ANDROID_CUR_VERS_NDK}")
+      string(REPLACE "/config.mk" "/setup.mk" _ANDROID_TOOL_SETUP_MK "${config_mk}")
+    endif()
+    unset(_ANDROID_CUR_TOOL)
+    unset(_ANDROID_CUR_VERS)
+    unset(_ANDROID_CUR_VERS_NDK)
+  endif()
+endforeach()
+
+# Verify that we have a suitable toolchain.
+if(NOT _ANDROID_TOOL_NAME)
+  if(_ANDROID_CONFIG_MKS)
+    string(REPLACE ";" "\n  " _ANDROID_TOOLS_MSG "after considering:;${_ANDROID_CONFIG_MKS}")
+  else()
+    set(_ANDROID_TOOLS_MSG "")
+  endif()
+  if(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION)
+    string(CONCAT _ANDROID_TOOLS_MSG
+      "of the version specified by CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION:\n"
+      "  ${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION}\n"
+      "${_ANDROID_TOOLS_MSG}")
+  endif()
+  message(FATAL_ERROR
+    "Android: No toolchain for ABI '${CMAKE_ANDROID_ARCH_ABI}' found in the NDK:\n"
+    "  ${CMAKE_ANDROID_NDK}\n"
+    "${_ANDROID_TOOLS_MSG}"
+    )
+endif()
+unset(_ANDROID_CONFIG_MKS)
+
+# For clang toolchains we still need to find a gcc toolchain.
+if(_ANDROID_TOOL_NAME MATCHES "-clang")
+  set(_ANDROID_TOOL_CLANG_NAME "${_ANDROID_TOOL_NAME}")
+  set(_ANDROID_TOOL_CLANG_VERS "${_ANDROID_TOOL_VERS}")
+  set(_ANDROID_TOOL_NAME "")
+  set(_ANDROID_TOOL_VERS "")
+else()
+  set(_ANDROID_TOOL_CLANG_NAME "")
+  set(_ANDROID_TOOL_CLANG_VERS "")
+endif()
+
+# Parse the toolchain setup.mk file to extract information we need.
+# Their content is not standardized across toolchains or NDK versions,
+# so we match known cases.  Note that the parsing is stateful across
+# lines because we need to substitute for some Make variable references.
+if(CMAKE_ANDROID_NDK_TOOLCHAIN_DEBUG)
+  message(STATUS "loading: ${_ANDROID_TOOL_SETUP_MK}")
+endif()
+file(STRINGS "${_ANDROID_TOOL_SETUP_MK}" _ANDROID_TOOL_SETUP REGEX "^(LLVM|TOOLCHAIN)_[A-Z_]+ +:= +.*$")
+unset(_ANDROID_TOOL_SETUP_MK)
+set(_ANDROID_TOOL_PREFIX "")
+set(_ANDROID_TOOL_NAME_ONLY "")
+set(_ANDROID_TOOL_LLVM_NAME "llvm")
+set(_ANDROID_TOOL_LLVM_VERS "")
+foreach(line IN LISTS _ANDROID_TOOL_SETUP)
+  if(CMAKE_ANDROID_NDK_TOOLCHAIN_DEBUG)
+    message(STATUS "setup.mk: ${line}")
+  endif()
+
+  if(line MATCHES [[^TOOLCHAIN_PREFIX +:= +.*/bin/([^$/ ]*) *$]])
+    # We just matched the toolchain prefix with no Make variable references.
+    set(_ANDROID_TOOL_PREFIX "${CMAKE_MATCH_1}")
+  elseif(_ANDROID_TOOL_CLANG_NAME)
+    # For clang toolchains we need to find more information.
+    if(line MATCHES [[^TOOLCHAIN_VERSION +:= +([0-9.]+) *$]])
+      # We just matched the gcc toolchain version number.  Save it for later.
+      set(_ANDROID_TOOL_VERS "${CMAKE_MATCH_1}")
+    elseif(line MATCHES [[^TOOLCHAIN_NAME +:= +(.*\$\(TOOLCHAIN_VERSION\)) *$]])
+      # We just matched the gcc toolchain name with a version number placeholder, so substitute it.
+      # The gcc toolchain version number will have already been extracted from a TOOLCHAIN_VERSION line.
+      string(REPLACE "$(TOOLCHAIN_VERSION)" "${_ANDROID_TOOL_VERS}" _ANDROID_TOOL_NAME "${CMAKE_MATCH_1}")
+    elseif(line MATCHES [[^TOOLCHAIN_NAME +:= +([^$/ ]+) *$]])
+      # We just matched the gcc toolchain name without version number.  Save it for later.
+      set(_ANDROID_TOOL_NAME_ONLY "${CMAKE_MATCH_1}")
+    elseif(line MATCHES [[^TOOLCHAIN_PREFIX +:= +.*/bin/(\$\(TOOLCHAIN_NAME\)-) *$]])
+      # We just matched the toolchain prefix with a name placeholder, so substitute it.
+      # The gcc toolchain name will have already been extracted without version number from a TOOLCHAIN_NAME line.
+      string(REPLACE "$(TOOLCHAIN_NAME)" "${_ANDROID_TOOL_NAME_ONLY}" _ANDROID_TOOL_PREFIX "${CMAKE_MATCH_1}")
+    elseif(line MATCHES [[^LLVM_VERSION +:= +([0-9.]+)$]])
+      # We just matched the llvm prebuilt binary toolchain version number.  Save it for later.
+      set(_ANDROID_TOOL_LLVM_VERS "${CMAKE_MATCH_1}")
+    elseif(line MATCHES [[^LLVM_NAME +:= +(llvm-\$\(LLVM_VERSION\)) *$]])
+      # We just matched the llvm prebuilt binary toolchain directory name with a version number placeholder,
+      # so substitute it. The llvm prebuilt binary toolchain version number will have already been extracted
+      # from a LLVM_VERSION line.
+      string(REPLACE "$(LLVM_VERSION)" "${_ANDROID_TOOL_LLVM_VERS}" _ANDROID_TOOL_LLVM_NAME "${CMAKE_MATCH_1}")
+    elseif(line MATCHES [[^LLVM_TOOLCHAIN_PREBUILT_ROOT +:= +\$\(call get-toolchain-root.*,([^$ ]+)\) *$]])
+      # We just matched the llvm prebuilt binary toolchain directory name.
+      set(_ANDROID_TOOL_LLVM_NAME "${CMAKE_MATCH_1}")
+    elseif(line MATCHES [[^TOOLCHAIN_ROOT +:= +\$\(call get-toolchain-root.*,(\$\(TOOLCHAIN_NAME\)-[0-9.]+)\) *$]])
+      # We just matched a placeholder for the name followed by a version number.
+      # The gcc toolchain name will have already been extracted without version number from a TOOLCHAIN_NAME line.
+      # Substitute for the placeholder to get the full gcc toolchain name.
+      string(REPLACE "$(TOOLCHAIN_NAME)" "${_ANDROID_TOOL_NAME_ONLY}" _ANDROID_TOOL_NAME "${CMAKE_MATCH_1}")
+    elseif(line MATCHES [[^TOOLCHAIN_ROOT +:= +\$\(call get-toolchain-root.*,([^$ ]+)\) *$]])
+      # We just matched the full gcc toolchain name without placeholder.
+      set(_ANDROID_TOOL_NAME "${CMAKE_MATCH_1}")
+    endif()
+  endif()
+endforeach()
+unset(_ANDROID_TOOL_NAME_ONLY)
+unset(_ANDROID_TOOL_LLVM_VERS)
+unset(_ANDROID_TOOL_SETUP)
+
+# Fall back to parsing the version and prefix from the tool name.
+if(NOT _ANDROID_TOOL_VERS AND "${_ANDROID_TOOL_NAME}" MATCHES "-([0-9.]+)$")
+  set(_ANDROID_TOOL_VERS "${CMAKE_MATCH_1}")
+endif()
+if(NOT _ANDROID_TOOL_PREFIX AND "${_ANDROID_TOOL_NAME}" MATCHES "^(.*-)[0-9.]+$")
+  set(_ANDROID_TOOL_PREFIX "${CMAKE_MATCH_1}")
+endif()
+
+# Help CMakeFindBinUtils locate things.
+set(_CMAKE_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_PREFIX}")
+
+set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "${_ANDROID_TOOL_VERS_NDK}")
+
+# _ANDROID_TOOL_PREFIX should now match `gcc -dumpmachine`.
+string(REGEX REPLACE "-$" "" _ANDROID_TOOL_C_TOOLCHAIN_MACHINE "${_ANDROID_TOOL_PREFIX}")
+
+set(_ANDROID_TOOL_C_TOOLCHAIN_VERSION "${_ANDROID_TOOL_VERS}")
+set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_NAME}/prebuilt/${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}/bin/${_ANDROID_TOOL_PREFIX}")
+set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "${_ANDROID_HOST_EXT}")
+
+set(_ANDROID_TOOL_CXX_TOOLCHAIN_MACHINE "${_ANDROID_TOOL_C_TOOLCHAIN_MACHINE}")
+set(_ANDROID_TOOL_CXX_TOOLCHAIN_VERSION "${_ANDROID_TOOL_C_TOOLCHAIN_VERSION}")
+set(_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_C_TOOLCHAIN_PREFIX}")
+set(_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX "${_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX}")
+
+if(_ANDROID_TOOL_CLANG_NAME)
+  message(STATUS "Android: Selected Clang toolchain '${_ANDROID_TOOL_CLANG_NAME}' with GCC toolchain '${_ANDROID_TOOL_NAME}'")
+  set(_ANDROID_TOOL_C_COMPILER "${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_LLVM_NAME}/prebuilt/${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}/bin/clang${_ANDROID_HOST_EXT}")
+  set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN ${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_NAME}/prebuilt/${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG})
+  set(_ANDROID_TOOL_CXX_COMPILER "${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_LLVM_NAME}/prebuilt/${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}/bin/clang++${_ANDROID_HOST_EXT}")
+  set(_ANDROID_TOOL_CXX_COMPILER_EXTERNAL_TOOLCHAIN "${_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN}")
+else()
+  message(STATUS "Android: Selected GCC toolchain '${_ANDROID_TOOL_NAME}'")
+  set(_ANDROID_TOOL_C_COMPILER "${_ANDROID_TOOL_C_TOOLCHAIN_PREFIX}gcc${_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX}")
+  set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN "")
+  set(_ANDROID_TOOL_CXX_COMPILER "${_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX}g++${_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX}")
+  set(_ANDROID_TOOL_CXX_COMPILER_EXTERNAL_TOOLCHAIN "")
+endif()
+
+if(CMAKE_ANDROID_NDK_TOOLCHAIN_DEBUG)
+  message(STATUS "_ANDROID_TOOL_NAME=${_ANDROID_TOOL_NAME}")
+  message(STATUS "_ANDROID_TOOL_VERS=${_ANDROID_TOOL_VERS}")
+  message(STATUS "_ANDROID_TOOL_VERS_NDK=${_ANDROID_TOOL_VERS_NDK}")
+  message(STATUS "_ANDROID_TOOL_PREFIX=${_ANDROID_TOOL_PREFIX}")
+  message(STATUS "_ANDROID_TOOL_CLANG_NAME=${_ANDROID_TOOL_CLANG_NAME}")
+  message(STATUS "_ANDROID_TOOL_CLANG_VERS=${_ANDROID_TOOL_CLANG_VERS}")
+  message(STATUS "_ANDROID_TOOL_LLVM_NAME=${_ANDROID_TOOL_LLVM_NAME}")
+endif()
+
+unset(_ANDROID_TOOL_NAME)
+unset(_ANDROID_TOOL_VERS)
+unset(_ANDROID_TOOL_VERS_NDK)
+unset(_ANDROID_TOOL_PREFIX)
+unset(_ANDROID_TOOL_CLANG_NAME)
+unset(_ANDROID_TOOL_CLANG_VERS)
+unset(_ANDROID_TOOL_LLVM_NAME)
diff --git a/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler-Standalone.cmake b/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler-Standalone.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/Determine-Compiler-Standalone.cmake
rename to share/cmake-3.22/Modules/Platform/Android/Determine-Compiler-Standalone.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake b/share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake
rename to share/cmake-3.22/Modules/Platform/Android/Determine-Compiler.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Android/VCXProjInspect.vcxproj.in b/share/cmake-3.22/Modules/Platform/Android/VCXProjInspect.vcxproj.in
new file mode 100644
index 0000000..6919d2c
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Android/VCXProjInspect.vcxproj.in
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|@vcx_platform@">
+      <Configuration>Debug</Configuration>
+      <Platform>@vcx_platform@</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{14D44772-ECF7-47BD-9E29-BC62FAF940A5}</ProjectGuid>
+    <RootNamespace>VCXProjInspect</RootNamespace>
+    <Keyword>Android</Keyword>
+    <ApplicationType>Android</ApplicationType>
+    <ApplicationTypeRevision>@vcx_revision@</ApplicationTypeRevision>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@vcx_platform@'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|@vcx_platform@'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@vcx_platform@'">
+    <PostBuildEvent>
+      <Command>%40echo CMAKE_SYSROOT=$(@vcx_sysroot_var@)</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-arm64-v8a-Clang.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-arm64-v8a-Clang.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-arm64-v8a-Clang.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-arm64-v8a-Clang.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-arm64-v8a-GNU.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-arm64-v8a-GNU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-arm64-v8a-GNU.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-arm64-v8a-GNU.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-armeabi-Clang.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-armeabi-Clang.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-armeabi-Clang.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-armeabi-Clang.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-armeabi-GNU.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-armeabi-GNU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-armeabi-GNU.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-armeabi-GNU.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-armeabi-v6-Clang.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-armeabi-v6-Clang.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-armeabi-v6-Clang.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-armeabi-v6-Clang.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-armeabi-v6-GNU.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-armeabi-v6-GNU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-armeabi-v6-GNU.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-armeabi-v6-GNU.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-armeabi-v7a-Clang.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-armeabi-v7a-Clang.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-armeabi-v7a-Clang.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-armeabi-v7a-Clang.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-armeabi-v7a-GNU.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-armeabi-v7a-GNU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-armeabi-v7a-GNU.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-armeabi-v7a-GNU.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-common-Clang.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-common-Clang.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-common-Clang.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-common-Clang.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-common-GNU.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-common-GNU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-common-GNU.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-common-GNU.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-common.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-common.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-common.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-common.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-mips-Clang.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-mips-Clang.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-mips-Clang.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-mips-Clang.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-mips-GNU.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-mips-GNU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-mips-GNU.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-mips-GNU.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-mips64-Clang.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-mips64-Clang.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-mips64-Clang.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-mips64-Clang.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-mips64-GNU.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-mips64-GNU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-mips64-GNU.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-mips64-GNU.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-x86-Clang.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-x86-Clang.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-x86-Clang.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-x86-Clang.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-x86-GNU.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-x86-GNU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-x86-GNU.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-x86-GNU.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-x86_64-Clang.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-x86_64-Clang.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-x86_64-Clang.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-x86_64-Clang.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/abi-x86_64-GNU.cmake b/share/cmake-3.22/Modules/Platform/Android/abi-x86_64-GNU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/abi-x86_64-GNU.cmake
rename to share/cmake-3.22/Modules/Platform/Android/abi-x86_64-GNU.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/ndk-stl-c++.cmake b/share/cmake-3.22/Modules/Platform/Android/ndk-stl-c++.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/ndk-stl-c++.cmake
rename to share/cmake-3.22/Modules/Platform/Android/ndk-stl-c++.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/ndk-stl-c++_shared.cmake b/share/cmake-3.22/Modules/Platform/Android/ndk-stl-c++_shared.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/ndk-stl-c++_shared.cmake
rename to share/cmake-3.22/Modules/Platform/Android/ndk-stl-c++_shared.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/ndk-stl-c++_static.cmake b/share/cmake-3.22/Modules/Platform/Android/ndk-stl-c++_static.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/ndk-stl-c++_static.cmake
rename to share/cmake-3.22/Modules/Platform/Android/ndk-stl-c++_static.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/ndk-stl-gabi++.cmake b/share/cmake-3.22/Modules/Platform/Android/ndk-stl-gabi++.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/ndk-stl-gabi++.cmake
rename to share/cmake-3.22/Modules/Platform/Android/ndk-stl-gabi++.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/ndk-stl-gabi++_shared.cmake b/share/cmake-3.22/Modules/Platform/Android/ndk-stl-gabi++_shared.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/ndk-stl-gabi++_shared.cmake
rename to share/cmake-3.22/Modules/Platform/Android/ndk-stl-gabi++_shared.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/ndk-stl-gabi++_static.cmake b/share/cmake-3.22/Modules/Platform/Android/ndk-stl-gabi++_static.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/ndk-stl-gabi++_static.cmake
rename to share/cmake-3.22/Modules/Platform/Android/ndk-stl-gabi++_static.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/ndk-stl-gnustl.cmake b/share/cmake-3.22/Modules/Platform/Android/ndk-stl-gnustl.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/ndk-stl-gnustl.cmake
rename to share/cmake-3.22/Modules/Platform/Android/ndk-stl-gnustl.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/ndk-stl-gnustl_shared.cmake b/share/cmake-3.22/Modules/Platform/Android/ndk-stl-gnustl_shared.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/ndk-stl-gnustl_shared.cmake
rename to share/cmake-3.22/Modules/Platform/Android/ndk-stl-gnustl_shared.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/ndk-stl-gnustl_static.cmake b/share/cmake-3.22/Modules/Platform/Android/ndk-stl-gnustl_static.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/ndk-stl-gnustl_static.cmake
rename to share/cmake-3.22/Modules/Platform/Android/ndk-stl-gnustl_static.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/ndk-stl-none.cmake b/share/cmake-3.22/Modules/Platform/Android/ndk-stl-none.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/ndk-stl-none.cmake
rename to share/cmake-3.22/Modules/Platform/Android/ndk-stl-none.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/ndk-stl-stlport.cmake b/share/cmake-3.22/Modules/Platform/Android/ndk-stl-stlport.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/ndk-stl-stlport.cmake
rename to share/cmake-3.22/Modules/Platform/Android/ndk-stl-stlport.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/ndk-stl-stlport_shared.cmake b/share/cmake-3.22/Modules/Platform/Android/ndk-stl-stlport_shared.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/ndk-stl-stlport_shared.cmake
rename to share/cmake-3.22/Modules/Platform/Android/ndk-stl-stlport_shared.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/ndk-stl-stlport_static.cmake b/share/cmake-3.22/Modules/Platform/Android/ndk-stl-stlport_static.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/ndk-stl-stlport_static.cmake
rename to share/cmake-3.22/Modules/Platform/Android/ndk-stl-stlport_static.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Android/ndk-stl-system.cmake b/share/cmake-3.22/Modules/Platform/Android/ndk-stl-system.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Android/ndk-stl-system.cmake
rename to share/cmake-3.22/Modules/Platform/Android/ndk-stl-system.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-Absoft-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Apple-Absoft-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-Absoft-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-Absoft-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-Apple-Swift.cmake b/share/cmake-3.22/Modules/Platform/Apple-Apple-Swift.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-Apple-Swift.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-Apple-Swift.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-AppleClang-C.cmake b/share/cmake-3.22/Modules/Platform/Apple-AppleClang-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-AppleClang-C.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-AppleClang-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-AppleClang-CXX.cmake b/share/cmake-3.22/Modules/Platform/Apple-AppleClang-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-AppleClang-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-AppleClang-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-AppleClang-OBJC.cmake b/share/cmake-3.22/Modules/Platform/Apple-AppleClang-OBJC.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-AppleClang-OBJC.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-AppleClang-OBJC.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-AppleClang-OBJCXX.cmake b/share/cmake-3.22/Modules/Platform/Apple-AppleClang-OBJCXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-AppleClang-OBJCXX.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-AppleClang-OBJCXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-Clang-ASM.cmake b/share/cmake-3.22/Modules/Platform/Apple-Clang-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-Clang-ASM.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-Clang-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-Clang-C.cmake b/share/cmake-3.22/Modules/Platform/Apple-Clang-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-Clang-C.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-Clang-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-Clang-CXX.cmake b/share/cmake-3.22/Modules/Platform/Apple-Clang-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-Clang-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-Clang-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-Clang-OBJC.cmake b/share/cmake-3.22/Modules/Platform/Apple-Clang-OBJC.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-Clang-OBJC.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-Clang-OBJC.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-Clang-OBJCXX.cmake b/share/cmake-3.22/Modules/Platform/Apple-Clang-OBJCXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-Clang-OBJCXX.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-Clang-OBJCXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-Clang.cmake b/share/cmake-3.22/Modules/Platform/Apple-Clang.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-Clang.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-Clang.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-GNU-C.cmake b/share/cmake-3.22/Modules/Platform/Apple-GNU-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-GNU-C.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-GNU-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-GNU-CXX.cmake b/share/cmake-3.22/Modules/Platform/Apple-GNU-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-GNU-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-GNU-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-GNU-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Apple-GNU-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-GNU-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-GNU-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-GNU-OBJC.cmake b/share/cmake-3.22/Modules/Platform/Apple-GNU-OBJC.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-GNU-OBJC.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-GNU-OBJC.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-GNU-OBJCXX.cmake b/share/cmake-3.22/Modules/Platform/Apple-GNU-OBJCXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-GNU-OBJCXX.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-GNU-OBJCXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-GNU.cmake b/share/cmake-3.22/Modules/Platform/Apple-GNU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-GNU.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-GNU.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-Intel-C.cmake b/share/cmake-3.22/Modules/Platform/Apple-Intel-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-Intel-C.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-Intel-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-Intel-CXX.cmake b/share/cmake-3.22/Modules/Platform/Apple-Intel-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-Intel-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-Intel-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-Intel-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Apple-Intel-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-Intel-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-Intel-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-Intel.cmake b/share/cmake-3.22/Modules/Platform/Apple-Intel.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-Intel.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-Intel.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Apple-IntelLLVM-C.cmake b/share/cmake-3.22/Modules/Platform/Apple-IntelLLVM-C.cmake
new file mode 100644
index 0000000..8e74729
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Apple-IntelLLVM-C.cmake
@@ -0,0 +1,2 @@
+include(Platform/Apple-IntelLLVM)
+__apple_compiler_intel_llvm(C)
diff --git a/share/cmake-3.22/Modules/Platform/Apple-IntelLLVM-CXX.cmake b/share/cmake-3.22/Modules/Platform/Apple-IntelLLVM-CXX.cmake
new file mode 100644
index 0000000..38640e1
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Apple-IntelLLVM-CXX.cmake
@@ -0,0 +1,2 @@
+include(Platform/Apple-IntelLLVM)
+__apple_compiler_intel_llvm(CXX)
diff --git a/share/cmake-3.22/Modules/Platform/Apple-IntelLLVM-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Apple-IntelLLVM-Fortran.cmake
new file mode 100644
index 0000000..d0486ed
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Apple-IntelLLVM-Fortran.cmake
@@ -0,0 +1,8 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+include(Platform/Apple-IntelLLVM)
+__apple_compiler_intel_llvm(Fortran)
+
+set(CMAKE_Fortran_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ")
+set(CMAKE_Fortran_OSX_CURRENT_VERSION_FLAG "-current_version ")
diff --git a/share/cmake-3.22/Modules/Platform/Apple-IntelLLVM.cmake b/share/cmake-3.22/Modules/Platform/Apple-IntelLLVM.cmake
new file mode 100644
index 0000000..2f9f0ca
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Apple-IntelLLVM.cmake
@@ -0,0 +1,17 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+include_guard()
+
+macro(__apple_compiler_intel_llvm lang)
+  set(CMAKE_${lang}_VERBOSE_FLAG "-v -Wl,-v") # also tell linker to print verbose output
+  set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-dynamiclib -Wl,-headerpad_max_install_names")
+  set(CMAKE_SHARED_MODULE_CREATE_${lang}_FLAGS "-bundle -Wl,-headerpad_max_install_names")
+
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Wl,")
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP ",")
+
+  set(CMAKE_${lang}_COMPILE_OPTIONS_VISIBILITY "-fvisibility=")
+endmacro()
diff --git a/share/cmake-3.18/Modules/Platform/Apple-NAG-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Apple-NAG-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-NAG-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-NAG-Fortran.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Apple-NVIDIA-CUDA.cmake b/share/cmake-3.22/Modules/Platform/Apple-NVIDIA-CUDA.cmake
new file mode 100644
index 0000000..35e759a
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Apple-NVIDIA-CUDA.cmake
@@ -0,0 +1,19 @@
+include(Platform/Darwin)
+
+set(__IMPLICIT_LINKS)
+foreach(dir ${CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES})
+  string(APPEND __IMPLICIT_LINKS " -L\"${dir}\"")
+endforeach()
+foreach(lib ${CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES})
+  if(${lib} MATCHES "/")
+    string(APPEND __IMPLICIT_LINKS " \"${lib}\"")
+  else()
+    string(APPEND __IMPLICIT_LINKS " -l${lib}")
+  endif()
+endforeach()
+
+set(CMAKE_SHARED_LIBRARY_CREATE_CUDA_FLAGS "-shared -Wl,-headerpad_max_install_names")
+set(CMAKE_SHARED_MODULE_CREATE_CUDA_FLAGS "-shared -Wl,-headerpad_max_install_names")
+
+set(CMAKE_CUDA_CREATE_SHARED_LIBRARY "<CMAKE_CUDA_HOST_LINK_LAUNCHER> <CMAKE_SHARED_LIBRARY_CUDA_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CUDA_FLAGS> -o <TARGET> <SONAME_FLAG> <TARGET_INSTALLNAME_DIR><TARGET_SONAME> <OBJECTS> <LINK_LIBRARIES>${__IMPLICIT_LINKS}")
+set(CMAKE_CUDA_CREATE_SHARED_MODULE "<CMAKE_CUDA_HOST_LINK_LAUNCHER> <CMAKE_SHARED_LIBRARY_CUDA_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CUDA_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>${__IMPLICIT_LINKS}")
diff --git a/share/cmake-3.18/Modules/Platform/Apple-PGI-C.cmake b/share/cmake-3.22/Modules/Platform/Apple-PGI-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-PGI-C.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-PGI-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-PGI-CXX.cmake b/share/cmake-3.22/Modules/Platform/Apple-PGI-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-PGI-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-PGI-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-PGI-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Apple-PGI-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-PGI-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-PGI-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-PGI.cmake b/share/cmake-3.22/Modules/Platform/Apple-PGI.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-PGI.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-PGI.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-VisualAge-C.cmake b/share/cmake-3.22/Modules/Platform/Apple-VisualAge-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-VisualAge-C.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-VisualAge-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-VisualAge-CXX.cmake b/share/cmake-3.22/Modules/Platform/Apple-VisualAge-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-VisualAge-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-VisualAge-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-XL-C.cmake b/share/cmake-3.22/Modules/Platform/Apple-XL-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-XL-C.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-XL-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Apple-XL-CXX.cmake b/share/cmake-3.22/Modules/Platform/Apple-XL-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Apple-XL-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Apple-XL-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BSDOS.cmake b/share/cmake-3.22/Modules/Platform/BSDOS.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BSDOS.cmake
rename to share/cmake-3.22/Modules/Platform/BSDOS.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BeOS.cmake b/share/cmake-3.22/Modules/Platform/BeOS.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BeOS.cmake
rename to share/cmake-3.22/Modules/Platform/BeOS.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneL.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneL.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneL.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneL.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneP-base.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneP-base.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneP-base.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneP-base.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneP-dynamic-GNU-C.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneP-dynamic-GNU-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneP-dynamic-GNU-C.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneP-dynamic-GNU-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneP-dynamic-GNU-CXX.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneP-dynamic-GNU-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneP-dynamic-GNU-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneP-dynamic-GNU-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneP-dynamic-GNU-Fortran.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneP-dynamic-GNU-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneP-dynamic-GNU-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneP-dynamic-GNU-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneP-dynamic-XL-C.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneP-dynamic-XL-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneP-dynamic-XL-C.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneP-dynamic-XL-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneP-dynamic-XL-CXX.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneP-dynamic-XL-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneP-dynamic-XL-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneP-dynamic-XL-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneP-dynamic-XL-Fortran.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneP-dynamic-XL-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneP-dynamic-XL-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneP-dynamic-XL-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneP-dynamic.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneP-dynamic.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneP-dynamic.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneP-dynamic.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneP-static-GNU-C.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneP-static-GNU-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneP-static-GNU-C.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneP-static-GNU-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneP-static-GNU-CXX.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneP-static-GNU-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneP-static-GNU-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneP-static-GNU-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneP-static-GNU-Fortran.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneP-static-GNU-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneP-static-GNU-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneP-static-GNU-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneP-static-XL-C.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneP-static-XL-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneP-static-XL-C.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneP-static-XL-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneP-static-XL-CXX.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneP-static-XL-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneP-static-XL-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneP-static-XL-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneP-static-XL-Fortran.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneP-static-XL-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneP-static-XL-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneP-static-XL-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneP-static.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneP-static.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneP-static.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneP-static.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneQ-base.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneQ-base.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneQ-base.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneQ-base.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneQ-dynamic-GNU-C.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneQ-dynamic-GNU-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneQ-dynamic-GNU-C.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneQ-dynamic-GNU-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneQ-dynamic-GNU-CXX.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneQ-dynamic-GNU-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneQ-dynamic-GNU-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneQ-dynamic-GNU-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneQ-dynamic-GNU-Fortran.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneQ-dynamic-GNU-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneQ-dynamic-GNU-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneQ-dynamic-GNU-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneQ-dynamic-XL-C.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneQ-dynamic-XL-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneQ-dynamic-XL-C.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneQ-dynamic-XL-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneQ-dynamic-XL-CXX.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneQ-dynamic-XL-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneQ-dynamic-XL-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneQ-dynamic-XL-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneQ-dynamic-XL-Fortran.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneQ-dynamic-XL-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneQ-dynamic-XL-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneQ-dynamic-XL-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneQ-dynamic.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneQ-dynamic.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneQ-dynamic.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneQ-dynamic.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneQ-static-GNU-C.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneQ-static-GNU-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneQ-static-GNU-C.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneQ-static-GNU-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneQ-static-GNU-CXX.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneQ-static-GNU-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneQ-static-GNU-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneQ-static-GNU-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneQ-static-GNU-Fortran.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneQ-static-GNU-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneQ-static-GNU-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneQ-static-GNU-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneQ-static-XL-C.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneQ-static-XL-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneQ-static-XL-C.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneQ-static-XL-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneQ-static-XL-CXX.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneQ-static-XL-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneQ-static-XL-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneQ-static-XL-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneQ-static-XL-Fortran.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneQ-static-XL-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneQ-static-XL-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneQ-static-XL-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/BlueGeneQ-static.cmake b/share/cmake-3.22/Modules/Platform/BlueGeneQ-static.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/BlueGeneQ-static.cmake
rename to share/cmake-3.22/Modules/Platform/BlueGeneQ-static.cmake
diff --git a/share/cmake-3.18/Modules/Platform/CYGWIN-Clang-C.cmake b/share/cmake-3.22/Modules/Platform/CYGWIN-Clang-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/CYGWIN-Clang-C.cmake
rename to share/cmake-3.22/Modules/Platform/CYGWIN-Clang-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/CYGWIN-Clang-CXX.cmake b/share/cmake-3.22/Modules/Platform/CYGWIN-Clang-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/CYGWIN-Clang-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/CYGWIN-Clang-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/CYGWIN-Determine-CXX.cmake b/share/cmake-3.22/Modules/Platform/CYGWIN-Determine-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/CYGWIN-Determine-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/CYGWIN-Determine-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/CYGWIN-GNU-C.cmake b/share/cmake-3.22/Modules/Platform/CYGWIN-GNU-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/CYGWIN-GNU-C.cmake
rename to share/cmake-3.22/Modules/Platform/CYGWIN-GNU-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/CYGWIN-GNU-CXX.cmake b/share/cmake-3.22/Modules/Platform/CYGWIN-GNU-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/CYGWIN-GNU-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/CYGWIN-GNU-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/CYGWIN-GNU-Fortran.cmake b/share/cmake-3.22/Modules/Platform/CYGWIN-GNU-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/CYGWIN-GNU-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/CYGWIN-GNU-Fortran.cmake
diff --git a/share/cmake-3.22/Modules/Platform/CYGWIN-GNU.cmake b/share/cmake-3.22/Modules/Platform/CYGWIN-GNU.cmake
new file mode 100644
index 0000000..b81bd4d
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/CYGWIN-GNU.cmake
@@ -0,0 +1,54 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__CYGWIN_COMPILER_GNU)
+  return()
+endif()
+set(__CYGWIN_COMPILER_GNU 1)
+
+# TODO: Is -Wl,--enable-auto-import now always default?
+string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " -Wl,--enable-auto-import")
+
+set(CMAKE_GNULD_IMAGE_VERSION
+  "-Wl,--major-image-version,<TARGET_VERSION_MAJOR>,--minor-image-version,<TARGET_VERSION_MINOR>")
+set(CMAKE_GENERATOR_RC windres)
+macro(__cygwin_compiler_gnu lang)
+  # Binary link rules.
+  set(CMAKE_${lang}_CREATE_SHARED_MODULE
+    "<CMAKE_${lang}_COMPILER> <LANGUAGE_COMPILE_FLAGS> <CMAKE_SHARED_MODULE_${lang}_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_MODULE_CREATE_${lang}_FLAGS> -o <TARGET> ${CMAKE_GNULD_IMAGE_VERSION} <OBJECTS> <LINK_LIBRARIES>")
+  set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
+    "<CMAKE_${lang}_COMPILER> <LANGUAGE_COMPILE_FLAGS> <CMAKE_SHARED_LIBRARY_${lang}_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS> -o <TARGET> -Wl,--out-implib,<TARGET_IMPLIB> ${CMAKE_GNULD_IMAGE_VERSION} <OBJECTS> <LINK_LIBRARIES>")
+  set(CMAKE_${lang}_LINK_EXECUTABLE
+    "<CMAKE_${lang}_COMPILER> <FLAGS> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> -Wl,--out-implib,<TARGET_IMPLIB> ${CMAKE_GNULD_IMAGE_VERSION} <LINK_LIBRARIES>")
+  set(CMAKE_${lang}_CREATE_WIN32_EXE "-mwindows")
+
+   # No -fPIC on cygwin
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "")
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "")
+  set(_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER NO)
+  set(CMAKE_${lang}_LINK_OPTIONS_PIE "")
+  set(CMAKE_${lang}_LINK_OPTIONS_NO_PIE "")
+  set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "")
+
+  # Initialize C link type selection flags.  These flags are used when
+  # building a shared library, shared module, or executable that links
+  # to other libraries to select whether to use the static or shared
+  # versions of the libraries.
+  foreach(type SHARED_LIBRARY SHARED_MODULE EXE)
+    set(CMAKE_${type}_LINK_STATIC_${lang}_FLAGS "-Wl,-Bstatic")
+    set(CMAKE_${type}_LINK_DYNAMIC_${lang}_FLAGS "-Wl,-Bdynamic")
+  endforeach()
+
+  set(CMAKE_EXE_EXPORTS_${lang}_FLAG "-Wl,--export-all-symbols")
+  # TODO: Is -Wl,--enable-auto-import now always default?
+  string(APPEND CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS " -Wl,--enable-auto-import")
+  set(CMAKE_SHARED_MODULE_CREATE_${lang}_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS}")
+
+  if(NOT CMAKE_RC_COMPILER_INIT)
+    set(CMAKE_RC_COMPILER_INIT windres)
+  endif()
+
+  enable_language(RC)
+endmacro()
diff --git a/share/cmake-3.18/Modules/Platform/CYGWIN-windres.cmake b/share/cmake-3.22/Modules/Platform/CYGWIN-windres.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/CYGWIN-windres.cmake
rename to share/cmake-3.22/Modules/Platform/CYGWIN-windres.cmake
diff --git a/share/cmake-3.22/Modules/Platform/CYGWIN.cmake b/share/cmake-3.22/Modules/Platform/CYGWIN.cmake
new file mode 100644
index 0000000..fc4ea2e
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/CYGWIN.cmake
@@ -0,0 +1,74 @@
+if("${CMAKE_MINIMUM_REQUIRED_VERSION}" VERSION_LESS "2.8.3.20101214" AND NOT MSYS)
+  set(__USE_CMAKE_LEGACY_CYGWIN_WIN32 1)
+endif()
+if(NOT DEFINED WIN32 AND NOT MSYS)
+  set(WIN32 0)
+  if(DEFINED __USE_CMAKE_LEGACY_CYGWIN_WIN32)
+    if(NOT DEFINED CMAKE_LEGACY_CYGWIN_WIN32
+        AND DEFINED ENV{CMAKE_LEGACY_CYGWIN_WIN32})
+      set(CMAKE_LEGACY_CYGWIN_WIN32 $ENV{CMAKE_LEGACY_CYGWIN_WIN32})
+    endif()
+    if(CMAKE_LEGACY_CYGWIN_WIN32)
+      message(STATUS "Defining WIN32 under Cygwin due to CMAKE_LEGACY_CYGWIN_WIN32")
+      set(WIN32 1)
+    elseif("x${CMAKE_LEGACY_CYGWIN_WIN32}" STREQUAL "x")
+      message(WARNING "CMake no longer defines WIN32 on Cygwin!"
+        "\n"
+        "(1) If you are just trying to build this project, ignore this warning "
+        "or quiet it by setting CMAKE_LEGACY_CYGWIN_WIN32=0 in your environment or "
+        "in the CMake cache.  "
+        "If later configuration or build errors occur then this project may "
+        "have been written under the assumption that Cygwin is WIN32.  "
+        "In that case, set CMAKE_LEGACY_CYGWIN_WIN32=1 instead."
+        "\n"
+        "(2) If you are developing this project, add the line\n"
+        "  set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required\n"
+        "at the top of your top-level CMakeLists.txt file or set the minimum "
+        "required version of CMake to 2.8.4 or higher.  "
+        "Then teach your project to build on Cygwin without WIN32.")
+    endif()
+  elseif(DEFINED CMAKE_LEGACY_CYGWIN_WIN32)
+    message(AUTHOR_WARNING "CMAKE_LEGACY_CYGWIN_WIN32 ignored because\n"
+      "  cmake_minimum_required(VERSION ${CMAKE_MINIMUM_REQUIRED_VERSION})\n"
+      "is at least 2.8.4.")
+  endif()
+endif()
+if(DEFINED __USE_CMAKE_LEGACY_CYGWIN_WIN32)
+  # Pass WIN32 legacy setting to scripts.
+  if(WIN32)
+    set(ENV{CMAKE_LEGACY_CYGWIN_WIN32} 1)
+  else()
+    set(ENV{CMAKE_LEGACY_CYGWIN_WIN32} 0)
+  endif()
+  unset(__USE_CMAKE_LEGACY_CYGWIN_WIN32)
+endif()
+
+set(CYGWIN 1)
+
+set(CMAKE_SHARED_LIBRARY_PREFIX "cyg")
+set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")
+set(CMAKE_SHARED_MODULE_PREFIX "cyg")
+set(CMAKE_SHARED_MODULE_SUFFIX ".dll")
+set(CMAKE_IMPORT_LIBRARY_PREFIX "lib")
+set(CMAKE_IMPORT_LIBRARY_SUFFIX ".dll.a")
+set(CMAKE_EXECUTABLE_SUFFIX ".exe")          # .exe
+# Modules have a different default prefix that shared libs.
+set(CMAKE_MODULE_EXISTS 1)
+
+set(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a")
+
+# Shared libraries on cygwin can be named with their version number.
+set(CMAKE_SHARED_LIBRARY_NAME_WITH_VERSION 1)
+
+include(Platform/UnixPaths)
+
+# Windows API on Cygwin
+list(APPEND CMAKE_SYSTEM_INCLUDE_PATH
+  /usr/include/w32api
+  )
+
+# Windows API on Cygwin
+list(APPEND CMAKE_SYSTEM_LIBRARY_PATH
+  /usr/lib/w32api
+  )
diff --git a/share/cmake-3.18/Modules/Platform/Catamount.cmake b/share/cmake-3.22/Modules/Platform/Catamount.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Catamount.cmake
rename to share/cmake-3.22/Modules/Platform/Catamount.cmake
diff --git a/share/cmake-3.18/Modules/Platform/CrayLinuxEnvironment.cmake b/share/cmake-3.22/Modules/Platform/CrayLinuxEnvironment.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/CrayLinuxEnvironment.cmake
rename to share/cmake-3.22/Modules/Platform/CrayLinuxEnvironment.cmake
diff --git a/share/cmake-3.18/Modules/Platform/DOS-OpenWatcom-C.cmake b/share/cmake-3.22/Modules/Platform/DOS-OpenWatcom-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/DOS-OpenWatcom-C.cmake
rename to share/cmake-3.22/Modules/Platform/DOS-OpenWatcom-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/DOS-OpenWatcom-CXX.cmake b/share/cmake-3.22/Modules/Platform/DOS-OpenWatcom-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/DOS-OpenWatcom-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/DOS-OpenWatcom-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/DOS-OpenWatcom.cmake b/share/cmake-3.22/Modules/Platform/DOS-OpenWatcom.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/DOS-OpenWatcom.cmake
rename to share/cmake-3.22/Modules/Platform/DOS-OpenWatcom.cmake
diff --git a/share/cmake-3.18/Modules/Platform/DOS.cmake b/share/cmake-3.22/Modules/Platform/DOS.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/DOS.cmake
rename to share/cmake-3.22/Modules/Platform/DOS.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Darwin-Determine-CXX.cmake b/share/cmake-3.22/Modules/Platform/Darwin-Determine-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Darwin-Determine-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Darwin-Determine-CXX.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Darwin-Initialize.cmake b/share/cmake-3.22/Modules/Platform/Darwin-Initialize.cmake
new file mode 100644
index 0000000..c2f1851
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Darwin-Initialize.cmake
@@ -0,0 +1,318 @@
+# Ask xcode-select where to find /Developer or fall back to ancient location.
+execute_process(COMMAND xcode-select -print-path
+  OUTPUT_VARIABLE _stdout
+  OUTPUT_STRIP_TRAILING_WHITESPACE
+  ERROR_VARIABLE _stderr
+  RESULT_VARIABLE _failed)
+if(NOT _failed AND IS_DIRECTORY ${_stdout})
+  set(OSX_DEVELOPER_ROOT ${_stdout})
+elseif(IS_DIRECTORY "/Developer")
+  set(OSX_DEVELOPER_ROOT "/Developer")
+else()
+  set(OSX_DEVELOPER_ROOT "")
+endif()
+
+execute_process(COMMAND sw_vers -productVersion
+  OUTPUT_VARIABLE CURRENT_OSX_VERSION
+  OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+# Save CMAKE_OSX_ARCHITECTURES from the environment.
+set(CMAKE_OSX_ARCHITECTURES "$ENV{CMAKE_OSX_ARCHITECTURES}" CACHE STRING
+  "Build architectures for OSX")
+
+if(NOT CMAKE_CROSSCOMPILING AND
+   CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND
+   CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(arm64|x86_64)$")
+  execute_process(COMMAND sysctl -q hw.optional.arm64
+    OUTPUT_VARIABLE _sysctl_stdout
+    ERROR_VARIABLE _sysctl_stderr
+    RESULT_VARIABLE _sysctl_result
+    )
+  # When building on an Apple Silicon host, we need to explicitly specify
+  # the architecture to the toolchain since it will otherwise guess the
+  # architecture based on that of the build system tool.
+  # Set an *internal variable* to tell the generators to do this.
+  if(_sysctl_result EQUAL 0 AND _sysctl_stdout MATCHES "hw.optional.arm64: 1")
+    set(_CMAKE_APPLE_ARCHS_DEFAULT "${CMAKE_HOST_SYSTEM_PROCESSOR}")
+  endif()
+  unset(_sysctl_result)
+  unset(_sysctl_stderr)
+  unset(_sysctl_stdout)
+endif()
+
+# macOS, iOS, tvOS, and watchOS should lookup compilers from
+# Platform/Apple-${CMAKE_CXX_COMPILER_ID}-<LANG>
+set(CMAKE_EFFECTIVE_SYSTEM_NAME "Apple")
+
+#----------------------------------------------------------------------------
+# _CURRENT_OSX_VERSION - as a two-component string: 10.5, 10.6, ...
+#
+string(REGEX REPLACE "^([0-9]+\\.[0-9]+).*$" "\\1"
+  _CURRENT_OSX_VERSION "${CURRENT_OSX_VERSION}")
+
+#----------------------------------------------------------------------------
+# CMAKE_OSX_DEPLOYMENT_TARGET
+
+# Set cache variable - end user may change this during ccmake or cmake-gui configure.
+if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND _CURRENT_OSX_VERSION VERSION_GREATER 10.3)
+  set(CMAKE_OSX_DEPLOYMENT_TARGET "$ENV{MACOSX_DEPLOYMENT_TARGET}" CACHE STRING
+    "Minimum OS X version to target for deployment (at runtime); newer APIs weak linked. Set to empty string for default value.")
+endif()
+
+#----------------------------------------------------------------------------
+# CMAKE_OSX_SYSROOT
+
+if(CMAKE_OSX_SYSROOT)
+  # Use the existing value without further computation to choose a default.
+  set(_CMAKE_OSX_SYSROOT_DEFAULT "${CMAKE_OSX_SYSROOT}")
+elseif(NOT "x$ENV{SDKROOT}" STREQUAL "x" AND
+        (NOT "x$ENV{SDKROOT}" MATCHES "/" OR IS_DIRECTORY "$ENV{SDKROOT}"))
+  # Use the value of SDKROOT from the environment.
+  set(_CMAKE_OSX_SYSROOT_DEFAULT "$ENV{SDKROOT}")
+elseif(CMAKE_SYSTEM_NAME STREQUAL iOS)
+  set(_CMAKE_OSX_SYSROOT_DEFAULT "iphoneos")
+elseif(CMAKE_SYSTEM_NAME STREQUAL tvOS)
+  set(_CMAKE_OSX_SYSROOT_DEFAULT "appletvos")
+elseif(CMAKE_SYSTEM_NAME STREQUAL watchOS)
+  set(_CMAKE_OSX_SYSROOT_DEFAULT "watchos")
+elseif("${CMAKE_GENERATOR}" MATCHES Xcode
+       OR CMAKE_OSX_DEPLOYMENT_TARGET
+       OR CMAKE_OSX_ARCHITECTURES MATCHES "[^;]"
+       OR NOT EXISTS "/usr/include/sys/types.h")
+  # Find installed SDKs in either Xcode-4.3+ or pre-4.3 SDKs directory.
+  set(_CMAKE_OSX_SDKS_DIR "")
+  if(OSX_DEVELOPER_ROOT)
+    foreach(_d Platforms/MacOSX.platform/Developer/SDKs SDKs)
+      file(GLOB _CMAKE_OSX_SDKS ${OSX_DEVELOPER_ROOT}/${_d}/*)
+      if(_CMAKE_OSX_SDKS)
+        set(_CMAKE_OSX_SDKS_DIR ${OSX_DEVELOPER_ROOT}/${_d})
+        break()
+      endif()
+    endforeach()
+  endif()
+
+  if(_CMAKE_OSX_SDKS_DIR)
+    # Find the latest SDK as recommended by Apple (Technical Q&A QA1806)
+    set(_CMAKE_OSX_LATEST_SDK_VERSION "0.0")
+    file(GLOB _CMAKE_OSX_SDKS RELATIVE "${_CMAKE_OSX_SDKS_DIR}" "${_CMAKE_OSX_SDKS_DIR}/MacOSX*.sdk")
+    foreach(_SDK ${_CMAKE_OSX_SDKS})
+      if(IS_DIRECTORY "${_CMAKE_OSX_SDKS_DIR}/${_SDK}"
+         AND _SDK MATCHES "MacOSX([0-9]+\\.[0-9]+)[^/]*\\.sdk"
+         AND CMAKE_MATCH_1 VERSION_GREATER ${_CMAKE_OSX_LATEST_SDK_VERSION})
+        set(_CMAKE_OSX_LATEST_SDK_VERSION "${CMAKE_MATCH_1}")
+      endif()
+    endforeach()
+
+    if(NOT _CMAKE_OSX_LATEST_SDK_VERSION STREQUAL "0.0")
+      set(_CMAKE_OSX_SYSROOT_DEFAULT "${_CMAKE_OSX_SDKS_DIR}/MacOSX${_CMAKE_OSX_LATEST_SDK_VERSION}.sdk")
+    else()
+      message(WARNING "Could not find any valid SDKs in ${_CMAKE_OSX_SDKS_DIR}")
+    endif()
+
+    if(NOT CMAKE_CROSSCOMPILING AND NOT CMAKE_OSX_DEPLOYMENT_TARGET
+       AND (_CURRENT_OSX_VERSION VERSION_LESS _CMAKE_OSX_LATEST_SDK_VERSION
+            OR _CMAKE_OSX_LATEST_SDK_VERSION STREQUAL "0.0"))
+      set(CMAKE_OSX_DEPLOYMENT_TARGET ${_CURRENT_OSX_VERSION} CACHE STRING
+        "Minimum OS X version to target for deployment (at runtime); newer APIs weak linked. Set to empty string for default value." FORCE)
+    endif()
+  else()
+    # Assume developer files are in root (such as Xcode 4.5 command-line tools).
+    set(_CMAKE_OSX_SYSROOT_DEFAULT "")
+  endif()
+endif()
+
+# Set cache variable - end user may change this during ccmake or cmake-gui configure.
+# Choose the type based on the current value.
+set(_CMAKE_OSX_SYSROOT_TYPE STRING)
+foreach(_v CMAKE_OSX_SYSROOT _CMAKE_OSX_SYSROOT_DEFAULT)
+  if("x${${_v}}" MATCHES "/")
+    set(_CMAKE_OSX_SYSROOT_TYPE PATH)
+    break()
+  endif()
+endforeach()
+set(CMAKE_OSX_SYSROOT "${_CMAKE_OSX_SYSROOT_DEFAULT}" CACHE ${_CMAKE_OSX_SYSROOT_TYPE}
+  "The product will be built against the headers and libraries located inside the indicated SDK.")
+
+# Resolves the SDK name into a path
+function(_apple_resolve_sdk_path sdk_name ret)
+  execute_process(
+    COMMAND xcrun -sdk ${sdk_name} --show-sdk-path
+    OUTPUT_VARIABLE _stdout
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+    ERROR_VARIABLE _stderr
+    RESULT_VARIABLE _failed
+  )
+  set(${ret} "${_stdout}" PARENT_SCOPE)
+endfunction()
+
+function(_apple_resolve_supported_archs_for_sdk_from_system_lib sdk_path ret ret_failed)
+  # Detect the supported SDK architectures by inspecting the main libSystem library.
+  set(common_lib_prefix "${sdk_path}/usr/lib/libSystem")
+  set(system_lib_dylib_path "${common_lib_prefix}.dylib")
+  set(system_lib_tbd_path "${common_lib_prefix}.tbd")
+
+  # Newer SDKs ship text based dylib stub files which contain the architectures supported by the
+  # library in text form.
+  if(EXISTS "${system_lib_tbd_path}")
+    file(STRINGS "${system_lib_tbd_path}" tbd_lines REGEX "^(archs|targets): +\\[.+\\]")
+    if(NOT tbd_lines)
+      set(${ret_failed} TRUE PARENT_SCOPE)
+      return()
+    endif()
+
+    # The tbd architectures line looks like the following:
+    #   archs:           [ armv7, armv7s, arm64, arm64e ]
+    # or for version 4 TBD files:
+    #   targets:         [ armv7-ios, armv7s-ios, arm64-ios, arm64e-ios ]
+    list(GET tbd_lines 0 first_arch_line)
+    string(REGEX REPLACE
+           "(archs|targets): +\\[ (.+) \\]" "\\2" arches_comma_separated "${first_arch_line}")
+    string(STRIP "${arches_comma_separated}" arches_comma_separated)
+    string(REPLACE "," ";" arch_list "${arches_comma_separated}")
+    string(REPLACE " " "" arch_list "${arch_list}")
+
+    # Remove -platform suffix from target (version 4 only)
+    string(REGEX REPLACE "-[a-z-]+" "" arch_list "${arch_list}")
+
+    if(NOT arch_list)
+      set(${ret_failed} TRUE PARENT_SCOPE)
+      return()
+    endif()
+    set(${ret} "${arch_list}" PARENT_SCOPE)
+  elseif(EXISTS "${system_lib_dylib_path}")
+    # Old SDKs (Xcode < 7) ship dylib files, use lipo to inspect the supported architectures.
+    # Can't use -archs because the option is not available in older Xcode versions.
+    execute_process(
+      COMMAND lipo -info ${system_lib_dylib_path}
+      OUTPUT_VARIABLE lipo_output
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+      ERROR_VARIABLE _stderr
+      RESULT_VARIABLE _failed
+    )
+    if(_failed OR NOT lipo_output OR NOT lipo_output MATCHES "(Non-fat file:|Architectures in the fat file:)")
+      set(${ret_failed} TRUE PARENT_SCOPE)
+      return()
+    endif()
+
+    # The lipo output looks like the following:
+    # Non-fat file: <path> is architecture: i386
+    # Architectures in the fat file: <path> are: i386 x86_64
+    string(REGEX REPLACE
+           "^(.+)is architecture:(.+)" "\\2" arches_space_separated "${lipo_output}")
+    string(REGEX REPLACE
+            "^(.+)are:(.+)" "\\2" arches_space_separated "${arches_space_separated}")
+
+    # Need to clean up the arches, with Xcode 4.6.3 the output of lipo -info contains some
+    # additional info, e.g.
+    # Architectures in the fat file: <path> are: armv7 (cputype (12) cpusubtype (11))
+    string(REGEX REPLACE
+            "\\(.+\\)" "" arches_space_separated "${arches_space_separated}")
+
+    # The output is space separated.
+    string(STRIP "${arches_space_separated}" arches_space_separated)
+    string(REPLACE " " ";" arch_list "${arches_space_separated}")
+
+    if(NOT arch_list)
+      set(${ret_failed} TRUE PARENT_SCOPE)
+      return()
+    endif()
+    set(${ret} "${arch_list}" PARENT_SCOPE)
+  else()
+    # This shouldn't happen, but keep it for safety.
+    message(WARNING "No way to find architectures for given sdk_path '${sdk_path}'")
+    set(${ret_failed} TRUE PARENT_SCOPE)
+  endif()
+endfunction()
+
+# Handle multi-arch sysroots. Do this before CMAKE_OSX_SYSROOT is
+# transformed into a path, so that we know the sysroot name.
+function(_apple_resolve_multi_arch_sysroots)
+  if(DEFINED CMAKE_APPLE_ARCH_SYSROOTS)
+    return() # Already cached
+  endif()
+
+  list(LENGTH CMAKE_OSX_ARCHITECTURES _num_archs)
+  if(NOT (_num_archs GREATER 1))
+    return() # Only apply to multi-arch
+  endif()
+
+  if(CMAKE_OSX_SYSROOT STREQUAL "macosx")
+    # macOS doesn't have a simulator sdk / sysroot, so there is no need to handle per-sdk arches.
+    return()
+  endif()
+
+  if(IS_DIRECTORY "${CMAKE_OSX_SYSROOT}")
+    if(NOT CMAKE_OSX_SYSROOT STREQUAL _CMAKE_OSX_SYSROOT_DEFAULT)
+      message(WARNING "Can not resolve multi-arch sysroots with CMAKE_OSX_SYSROOT set to path (${CMAKE_OSX_SYSROOT})")
+    endif()
+    return()
+  endif()
+
+  string(REPLACE "os" "simulator" _simulator_sdk ${CMAKE_OSX_SYSROOT})
+  set(_sdks "${CMAKE_OSX_SYSROOT};${_simulator_sdk}")
+  foreach(sdk ${_sdks})
+    _apple_resolve_sdk_path(${sdk} _sdk_path)
+    if(NOT IS_DIRECTORY "${_sdk_path}")
+      message(WARNING "Failed to resolve SDK path for '${sdk}'")
+      continue()
+    endif()
+
+    _apple_resolve_supported_archs_for_sdk_from_system_lib(${_sdk_path} _sdk_archs _failed)
+
+    if(_failed)
+      # Failure to extract supported architectures for an SDK means that the installed SDK is old
+      # and does not provide such information (SDKs that come with Xcode >= 10.x started providing
+      # the information). In such a case, return early, and handle multi-arch builds the old way
+      # (no per-sdk arches).
+      return()
+    endif()
+
+    set(_sdk_archs_${sdk} ${_sdk_archs})
+    set(_sdk_path_${sdk} ${_sdk_path})
+  endforeach()
+
+  foreach(arch ${CMAKE_OSX_ARCHITECTURES})
+    set(_arch_sysroot "")
+    foreach(sdk ${_sdks})
+      list(FIND _sdk_archs_${sdk} ${arch} arch_index)
+      if(NOT arch_index EQUAL -1)
+        set(_arch_sysroot ${_sdk_path_${sdk}})
+        break()
+      endif()
+    endforeach()
+    if(_arch_sysroot)
+      list(APPEND _arch_sysroots ${_arch_sysroot})
+    else()
+      message(WARNING "No SDK found for architecture '${arch}'")
+      list(APPEND _arch_sysroots "${arch}-SDK-NOTFOUND")
+    endif()
+  endforeach()
+
+  set(CMAKE_APPLE_ARCH_SYSROOTS "${_arch_sysroots}" CACHE INTERNAL
+    "Architecture dependent sysroots, one per CMAKE_OSX_ARCHITECTURES")
+endfunction()
+
+_apple_resolve_multi_arch_sysroots()
+
+# Transform CMAKE_OSX_SYSROOT to absolute path
+set(_CMAKE_OSX_SYSROOT_PATH "")
+if(CMAKE_OSX_SYSROOT)
+  if("x${CMAKE_OSX_SYSROOT}" MATCHES "/")
+    # This is a path to the SDK.  Make sure it exists.
+    if(NOT IS_DIRECTORY "${CMAKE_OSX_SYSROOT}")
+      message(WARNING "Ignoring CMAKE_OSX_SYSROOT value:\n ${CMAKE_OSX_SYSROOT}\n"
+        "because the directory does not exist.")
+      set(CMAKE_OSX_SYSROOT "")
+    endif()
+    set(_CMAKE_OSX_SYSROOT_PATH "${CMAKE_OSX_SYSROOT}")
+  else()
+    _apple_resolve_sdk_path(${CMAKE_OSX_SYSROOT} _sdk_path)
+    if(IS_DIRECTORY "${_sdk_path}")
+      set(_CMAKE_OSX_SYSROOT_PATH "${_sdk_path}")
+      # For non-Xcode generators use the path.
+      if(NOT "${CMAKE_GENERATOR}" MATCHES "Xcode")
+        set(CMAKE_OSX_SYSROOT "${_CMAKE_OSX_SYSROOT_PATH}")
+      endif()
+    endif()
+  endif()
+endif()
diff --git a/share/cmake-3.22/Modules/Platform/Darwin.cmake b/share/cmake-3.22/Modules/Platform/Darwin.cmake
new file mode 100644
index 0000000..839dc81
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Darwin.cmake
@@ -0,0 +1,241 @@
+set(APPLE 1)
+
+if(CMAKE_SYSTEM_NAME STREQUAL "iOS" OR CMAKE_SYSTEM_NAME STREQUAL "tvOS" OR CMAKE_SYSTEM_NAME STREQUAL "watchOS")
+  if(NOT DEFINED CMAKE_MACOSX_BUNDLE)
+    set(CMAKE_MACOSX_BUNDLE ON)
+  endif()
+
+  list(APPEND CMAKE_FIND_ROOT_PATH "${_CMAKE_OSX_SYSROOT_PATH}")
+  if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_LIBRARY)
+      set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+  endif()
+  if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_INCLUDE)
+      set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+  endif()
+  if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PACKAGE)
+      set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
+  endif()
+endif()
+
+# Darwin versions:
+#   6.x == Mac OSX 10.2 (Jaguar)
+#   7.x == Mac OSX 10.3 (Panther)
+#   8.x == Mac OSX 10.4 (Tiger)
+#   9.x == Mac OSX 10.5 (Leopard)
+#  10.x == Mac OSX 10.6 (Snow Leopard)
+#  11.x == Mac OSX 10.7 (Lion)
+#  12.x == Mac OSX 10.8 (Mountain Lion)
+string(REGEX REPLACE "^([0-9]+)\\.([0-9]+).*$" "\\1" DARWIN_MAJOR_VERSION "${CMAKE_SYSTEM_VERSION}")
+string(REGEX REPLACE "^([0-9]+)\\.([0-9]+).*$" "\\2" DARWIN_MINOR_VERSION "${CMAKE_SYSTEM_VERSION}")
+
+# Do not use the "-Wl,-search_paths_first" flag with the OSX 10.2 compiler.
+# Done this way because it is too early to do a TRY_COMPILE.
+if(NOT DEFINED HAVE_FLAG_SEARCH_PATHS_FIRST)
+  set(HAVE_FLAG_SEARCH_PATHS_FIRST 0)
+  if("${DARWIN_MAJOR_VERSION}" GREATER 6)
+    set(HAVE_FLAG_SEARCH_PATHS_FIRST 1)
+  endif()
+endif()
+# More desirable, but does not work:
+  #include(CheckCXXCompilerFlag)
+  #CHECK_CXX_COMPILER_FLAG("-Wl,-search_paths_first" HAVE_FLAG_SEARCH_PATHS_FIRST)
+
+set(CMAKE_SHARED_LIBRARY_PREFIX "lib")
+set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib")
+set(CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES ".tbd" ".so")
+set(CMAKE_SHARED_MODULE_PREFIX "lib")
+set(CMAKE_SHARED_MODULE_SUFFIX ".so")
+set(CMAKE_MODULE_EXISTS 1)
+set(CMAKE_DL_LIBS "")
+if(NOT "${_CURRENT_OSX_VERSION}" VERSION_LESS "10.5")
+  set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
+endif()
+
+foreach(lang C CXX OBJC OBJCXX)
+  set(CMAKE_${lang}_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ")
+  set(CMAKE_${lang}_OSX_CURRENT_VERSION_FLAG "-current_version ")
+  set(CMAKE_${lang}_LINK_FLAGS "-Wl,-headerpad_max_install_names")
+
+  if(HAVE_FLAG_SEARCH_PATHS_FIRST)
+    set(CMAKE_${lang}_LINK_FLAGS "-Wl,-search_paths_first ${CMAKE_${lang}_LINK_FLAGS}")
+  endif()
+
+  set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-dynamiclib -Wl,-headerpad_max_install_names")
+  set(CMAKE_SHARED_MODULE_CREATE_${lang}_FLAGS "-bundle -Wl,-headerpad_max_install_names")
+  set(CMAKE_SHARED_MODULE_LOADER_${lang}_FLAG "-Wl,-bundle_loader,")
+endforeach()
+
+set(CMAKE_PLATFORM_HAS_INSTALLNAME 1)
+set(CMAKE_FIND_LIBRARY_SUFFIXES ".tbd" ".dylib" ".so" ".a")
+
+# hack: if a new cmake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old build tree
+# (where install_name_tool was hardcoded) and where CMAKE_INSTALL_NAME_TOOL isn't in the cache
+# and still cmake didn't fail in CMakeFindBinUtils.cmake (because it isn't rerun)
+# hardcode CMAKE_INSTALL_NAME_TOOL here to install_name_tool, so it behaves as it did before, Alex
+if(NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
+  find_program(CMAKE_INSTALL_NAME_TOOL install_name_tool)
+  mark_as_advanced(CMAKE_INSTALL_NAME_TOOL)
+endif()
+
+# Enable shared library versioning.
+set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-install_name")
+
+if("${_CURRENT_OSX_VERSION}" VERSION_LESS "10.5")
+  # Need to list dependent shared libraries on link line.  When building
+  # with -isysroot (for universal binaries), the linker always looks for
+  # dependent libraries under the sysroot.  Listing them on the link
+  # line works around the problem.
+  set(CMAKE_LINK_DEPENDENT_LIBRARY_FILES 1)
+endif()
+
+foreach(lang C CXX Fortran OBJC OBJCXX)
+  # Xcode does not support -isystem yet.
+  if(XCODE)
+    set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang})
+  endif()
+
+  set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
+    "<CMAKE_${lang}_COMPILER> <LANGUAGE_COMPILE_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS> <LINK_FLAGS> -o <TARGET> <SONAME_FLAG> <TARGET_INSTALLNAME_DIR><TARGET_SONAME> <OBJECTS> <LINK_LIBRARIES>")
+
+  set(CMAKE_${lang}_CREATE_SHARED_MODULE
+      "<CMAKE_${lang}_COMPILER> <LANGUAGE_COMPILE_FLAGS> <CMAKE_SHARED_MODULE_CREATE_${lang}_FLAGS> <LINK_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
+
+  set(CMAKE_${lang}_CREATE_MACOSX_FRAMEWORK
+      "<CMAKE_${lang}_COMPILER> <LANGUAGE_COMPILE_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS> <LINK_FLAGS> -o <TARGET> <SONAME_FLAG> <TARGET_INSTALLNAME_DIR><TARGET_SONAME> <OBJECTS> <LINK_LIBRARIES>")
+
+  # Set default framework search path flag for languages known to use a
+  # preprocessor that may find headers in frameworks.
+  set(CMAKE_${lang}_FRAMEWORK_SEARCH_FLAG -F)
+endforeach()
+
+# default to searching for frameworks first
+if(NOT DEFINED CMAKE_FIND_FRAMEWORK)
+  set(CMAKE_FIND_FRAMEWORK FIRST)
+endif()
+
+# Older OS X linkers do not report their framework search path
+# with -v but "man ld" documents the following locations.
+set(CMAKE_PLATFORM_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
+  ${_CMAKE_OSX_SYSROOT_PATH}/Library/Frameworks
+  ${_CMAKE_OSX_SYSROOT_PATH}/System/Library/Frameworks
+  )
+if(_CMAKE_OSX_SYSROOT_PATH)
+  # Treat some paths as implicit so we do not override the SDK versions.
+  list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
+    /System/Library/Frameworks)
+endif()
+if("${_CURRENT_OSX_VERSION}" VERSION_LESS "10.5")
+  # Older OS X tools had more implicit paths.
+  list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
+    ${_CMAKE_OSX_SYSROOT_PATH}/Network/Library/Frameworks)
+endif()
+
+# set up the default search directories for frameworks
+set(CMAKE_SYSTEM_FRAMEWORK_PATH
+  ~/Library/Frameworks
+  )
+if(_CMAKE_OSX_SYSROOT_PATH)
+  list(APPEND CMAKE_SYSTEM_FRAMEWORK_PATH
+    ${_CMAKE_OSX_SYSROOT_PATH}/Library/Frameworks
+    ${_CMAKE_OSX_SYSROOT_PATH}/Network/Library/Frameworks
+    ${_CMAKE_OSX_SYSROOT_PATH}/System/Library/Frameworks
+    )
+  # add platform developer framework path if exists
+  foreach(_path
+    # Xcode 6
+    ${_CMAKE_OSX_SYSROOT_PATH}/../../Library/Frameworks
+    # Xcode 5 iOS
+    ${_CMAKE_OSX_SYSROOT_PATH}/Developer/Library/Frameworks
+    # Xcode 5 OSX
+    ${_CMAKE_OSX_SYSROOT_PATH}/../../../../../Library/Frameworks
+    )
+    get_filename_component(_abolute_path "${_path}" ABSOLUTE)
+    if(EXISTS "${_abolute_path}")
+      list(APPEND CMAKE_SYSTEM_FRAMEWORK_PATH "${_abolute_path}")
+      break()
+    endif()
+  endforeach()
+
+  if(EXISTS ${_CMAKE_OSX_SYSROOT_PATH}/usr/lib)
+    list(INSERT CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES 0 ${_CMAKE_OSX_SYSROOT_PATH}/usr/lib)
+  endif()
+  if(EXISTS ${_CMAKE_OSX_SYSROOT_PATH}/usr/local/lib)
+    list(INSERT CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES 0 ${_CMAKE_OSX_SYSROOT_PATH}/usr/local/lib)
+  endif()
+endif()
+if (OSX_DEVELOPER_ROOT AND EXISTS "${OSX_DEVELOPER_ROOT}/Library/Frameworks")
+  list(APPEND CMAKE_SYSTEM_FRAMEWORK_PATH
+    ${OSX_DEVELOPER_ROOT}/Library/Frameworks)
+endif()
+list(APPEND CMAKE_SYSTEM_FRAMEWORK_PATH
+  /Library/Frameworks
+  /Network/Library/Frameworks
+  /System/Library/Frameworks)
+
+# Warn about known system mis-configuration case.
+if(CMAKE_OSX_SYSROOT)
+  get_property(_IN_TC GLOBAL PROPERTY IN_TRY_COMPILE)
+  if(NOT _IN_TC AND
+     NOT IS_SYMLINK "${CMAKE_OSX_SYSROOT}/Library/Frameworks"
+     AND IS_SYMLINK "${CMAKE_OSX_SYSROOT}/Library/Frameworks/Frameworks")
+    message(WARNING "The SDK Library/Frameworks path\n"
+      " ${CMAKE_OSX_SYSROOT}/Library/Frameworks\n"
+      "is not set up correctly on this system.  "
+      "This is known to occur when installing Xcode 3.2.6:\n"
+      " http://bugs.python.org/issue14018\n"
+      "The problem may cause build errors that report missing system frameworks.  "
+      "Fix your SDK symlinks to resolve this issue and avoid this warning."
+      )
+  endif()
+endif()
+
+# default to searching for application bundles first
+if(NOT DEFINED CMAKE_FIND_APPBUNDLE)
+  set(CMAKE_FIND_APPBUNDLE FIRST)
+endif()
+# set up the default search directories for application bundles
+set(_apps_paths)
+foreach(_path
+  "~/Applications"
+  "/Applications"
+  "${OSX_DEVELOPER_ROOT}/../Applications" # Xcode 4.3+
+  "${OSX_DEVELOPER_ROOT}/Applications"    # pre-4.3
+  )
+  get_filename_component(_apps "${_path}" ABSOLUTE)
+  if(EXISTS "${_apps}")
+    list(APPEND _apps_paths "${_apps}")
+  endif()
+endforeach()
+if(_apps_paths)
+  list(REMOVE_DUPLICATES _apps_paths)
+endif()
+set(CMAKE_SYSTEM_APPBUNDLE_PATH
+  ${_apps_paths})
+unset(_apps_paths)
+
+include(Platform/UnixPaths)
+
+if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
+  list(PREPEND CMAKE_SYSTEM_PREFIX_PATH
+    /opt/homebrew # Brew on Apple Silicon
+    )
+endif()
+
+if(_CMAKE_OSX_SYSROOT_PATH)
+  if(EXISTS ${_CMAKE_OSX_SYSROOT_PATH}/usr/include)
+    list(INSERT CMAKE_SYSTEM_PREFIX_PATH 0 ${_CMAKE_OSX_SYSROOT_PATH}/usr)
+    foreach(lang C CXX OBJC OBJCXX Swift)
+      list(APPEND _CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT ${_CMAKE_OSX_SYSROOT_PATH}/usr/include)
+    endforeach()
+  endif()
+  if(EXISTS ${_CMAKE_OSX_SYSROOT_PATH}/usr/local/include)
+    list(INSERT CMAKE_SYSTEM_PREFIX_PATH 0 ${_CMAKE_OSX_SYSROOT_PATH}/usr/local)
+    foreach(lang C CXX OBJC OBJCXX Swift)
+      list(APPEND _CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT ${_CMAKE_OSX_SYSROOT_PATH}/usr/local/include)
+    endforeach()
+  endif()
+endif()
+list(APPEND CMAKE_SYSTEM_PREFIX_PATH
+  /sw        # Fink
+  /opt/local # MacPorts
+  )
diff --git a/share/cmake-3.18/Modules/Platform/DragonFly.cmake b/share/cmake-3.22/Modules/Platform/DragonFly.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/DragonFly.cmake
rename to share/cmake-3.22/Modules/Platform/DragonFly.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Euros.cmake b/share/cmake-3.22/Modules/Platform/Euros.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Euros.cmake
rename to share/cmake-3.22/Modules/Platform/Euros.cmake
diff --git a/share/cmake-3.18/Modules/Platform/FreeBSD-Determine-CXX.cmake b/share/cmake-3.22/Modules/Platform/FreeBSD-Determine-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/FreeBSD-Determine-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/FreeBSD-Determine-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/FreeBSD.cmake b/share/cmake-3.22/Modules/Platform/FreeBSD.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/FreeBSD.cmake
rename to share/cmake-3.22/Modules/Platform/FreeBSD.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Fuchsia.cmake b/share/cmake-3.22/Modules/Platform/Fuchsia.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Fuchsia.cmake
rename to share/cmake-3.22/Modules/Platform/Fuchsia.cmake
diff --git a/share/cmake-3.18/Modules/Platform/GHS-MULTI-Determine.cmake b/share/cmake-3.22/Modules/Platform/GHS-MULTI-Determine.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/GHS-MULTI-Determine.cmake
rename to share/cmake-3.22/Modules/Platform/GHS-MULTI-Determine.cmake
diff --git a/share/cmake-3.18/Modules/Platform/GHS-MULTI.cmake b/share/cmake-3.22/Modules/Platform/GHS-MULTI.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/GHS-MULTI.cmake
rename to share/cmake-3.22/Modules/Platform/GHS-MULTI.cmake
diff --git a/share/cmake-3.18/Modules/Platform/GNU.cmake b/share/cmake-3.22/Modules/Platform/GNU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/GNU.cmake
rename to share/cmake-3.22/Modules/Platform/GNU.cmake
diff --git a/share/cmake-3.18/Modules/Platform/GNUtoMS_lib.bat.in b/share/cmake-3.22/Modules/Platform/GNUtoMS_lib.bat.in
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/GNUtoMS_lib.bat.in
rename to share/cmake-3.22/Modules/Platform/GNUtoMS_lib.bat.in
diff --git a/share/cmake-3.18/Modules/Platform/GNUtoMS_lib.cmake b/share/cmake-3.22/Modules/Platform/GNUtoMS_lib.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/GNUtoMS_lib.cmake
rename to share/cmake-3.22/Modules/Platform/GNUtoMS_lib.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Generic-ADSP-ASM.cmake b/share/cmake-3.22/Modules/Platform/Generic-ADSP-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Generic-ADSP-ASM.cmake
rename to share/cmake-3.22/Modules/Platform/Generic-ADSP-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Generic-ADSP-C.cmake b/share/cmake-3.22/Modules/Platform/Generic-ADSP-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Generic-ADSP-C.cmake
rename to share/cmake-3.22/Modules/Platform/Generic-ADSP-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Generic-ADSP-CXX.cmake b/share/cmake-3.22/Modules/Platform/Generic-ADSP-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Generic-ADSP-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Generic-ADSP-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Generic-ADSP-Common.cmake b/share/cmake-3.22/Modules/Platform/Generic-ADSP-Common.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Generic-ADSP-Common.cmake
rename to share/cmake-3.22/Modules/Platform/Generic-ADSP-Common.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Generic-SDCC-C.cmake b/share/cmake-3.22/Modules/Platform/Generic-SDCC-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Generic-SDCC-C.cmake
rename to share/cmake-3.22/Modules/Platform/Generic-SDCC-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Generic.cmake b/share/cmake-3.22/Modules/Platform/Generic.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Generic.cmake
rename to share/cmake-3.22/Modules/Platform/Generic.cmake
diff --git a/share/cmake-3.18/Modules/Platform/HP-UX-GNU-ASM.cmake b/share/cmake-3.22/Modules/Platform/HP-UX-GNU-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/HP-UX-GNU-ASM.cmake
rename to share/cmake-3.22/Modules/Platform/HP-UX-GNU-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Platform/HP-UX-GNU-C.cmake b/share/cmake-3.22/Modules/Platform/HP-UX-GNU-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/HP-UX-GNU-C.cmake
rename to share/cmake-3.22/Modules/Platform/HP-UX-GNU-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/HP-UX-GNU-CXX.cmake b/share/cmake-3.22/Modules/Platform/HP-UX-GNU-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/HP-UX-GNU-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/HP-UX-GNU-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/HP-UX-GNU-Fortran.cmake b/share/cmake-3.22/Modules/Platform/HP-UX-GNU-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/HP-UX-GNU-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/HP-UX-GNU-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/HP-UX-GNU.cmake b/share/cmake-3.22/Modules/Platform/HP-UX-GNU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/HP-UX-GNU.cmake
rename to share/cmake-3.22/Modules/Platform/HP-UX-GNU.cmake
diff --git a/share/cmake-3.18/Modules/Platform/HP-UX-HP-ASM.cmake b/share/cmake-3.22/Modules/Platform/HP-UX-HP-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/HP-UX-HP-ASM.cmake
rename to share/cmake-3.22/Modules/Platform/HP-UX-HP-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Platform/HP-UX-HP-C.cmake b/share/cmake-3.22/Modules/Platform/HP-UX-HP-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/HP-UX-HP-C.cmake
rename to share/cmake-3.22/Modules/Platform/HP-UX-HP-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/HP-UX-HP-CXX.cmake b/share/cmake-3.22/Modules/Platform/HP-UX-HP-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/HP-UX-HP-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/HP-UX-HP-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/HP-UX-HP-Fortran.cmake b/share/cmake-3.22/Modules/Platform/HP-UX-HP-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/HP-UX-HP-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/HP-UX-HP-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/HP-UX-HP.cmake b/share/cmake-3.22/Modules/Platform/HP-UX-HP.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/HP-UX-HP.cmake
rename to share/cmake-3.22/Modules/Platform/HP-UX-HP.cmake
diff --git a/share/cmake-3.22/Modules/Platform/HP-UX.cmake b/share/cmake-3.22/Modules/Platform/HP-UX.cmake
new file mode 100644
index 0000000..425a13f
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/HP-UX.cmake
@@ -0,0 +1,47 @@
+if(NOT DEFINED CMAKE_PLATFORM_REQUIRED_RUNTIME_PATH)
+  set(CMAKE_PLATFORM_REQUIRED_RUNTIME_PATH /usr/lib)
+endif()
+
+if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL "ia64")
+  set(CMAKE_SHARED_LIBRARY_SUFFIX ".sl")          # .so
+  set(CMAKE_FIND_LIBRARY_SUFFIXES ".sl" ".so" ".a")
+  set(CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES ".so")
+endif()
+set(CMAKE_DL_LIBS "dld")
+
+# The HP linker needs to find transitive shared library dependencies
+# in the -L path.  Therefore the runtime path must be added to the
+# link line with -L flags.
+set(CMAKE_SHARED_LIBRARY_LINK_C_WITH_RUNTIME_PATH 1)
+set(CMAKE_LINK_DEPENDENT_LIBRARY_DIRS 1)
+
+# Shared libraries with no builtin soname may not be linked safely by
+# specifying the file path.
+set(CMAKE_PLATFORM_USES_PATH_WHEN_NO_SONAME 1)
+
+# set flags for gcc support
+include(Platform/UnixPaths)
+
+# Look in both 32-bit and 64-bit implicit link directories, but tell
+# CMake not to pass the paths to the linker.  The linker will find the
+# library for the proper architecture.  In the future we should detect
+# which path will be used by the linker.  Since the pointer type size
+# CMAKE_SIZEOF_VOID_P is not set until after this file executes, we
+# would need to append to CMAKE_SYSTEM_LIBRARY_PATH at a later point
+# (after CMakeTest(LANG)Compiler.cmake runs for at least one language).
+list(APPEND CMAKE_SYSTEM_LIBRARY_PATH /usr/lib/hpux32)
+list(APPEND CMAKE_SYSTEM_LIBRARY_PATH /usr/lib/hpux64)
+list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
+  /usr/lib/hpux32 /usr/lib/hpux64)
+
+# Initialize C and CXX link type selection flags.  These flags are
+# used when building a shared library, shared module, or executable
+# that links to other libraries to select whether to use the static or
+# shared versions of the libraries.
+foreach(type SHARED_LIBRARY SHARED_MODULE EXE)
+  foreach(lang C CXX)
+    set(CMAKE_${type}_LINK_STATIC_${lang}_FLAGS "-Wl,-a,archive")
+    set(CMAKE_${type}_LINK_DYNAMIC_${lang}_FLAGS "-Wl,-a,default")
+  endforeach()
+endforeach()
+
diff --git a/share/cmake-3.22/Modules/Platform/Haiku.cmake b/share/cmake-3.22/Modules/Platform/Haiku.cmake
new file mode 100644
index 0000000..b8e3ba6
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Haiku.cmake
@@ -0,0 +1,126 @@
+set(HAIKU 1)
+set(UNIX 1)
+
+set(CMAKE_DL_LIBS "")
+set(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC")
+set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared")
+set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
+set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":")
+set(CMAKE_SHARED_LIBRARY_RPATH_ORIGIN_TOKEN "\$ORIGIN")
+set(CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG "-Wl,-rpath-link,")
+set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,")
+set(CMAKE_EXE_EXPORTS_C_FLAG "-Wl,--export-dynamic")
+
+# Determine, if the C or C++ compiler is configured for a secondary
+# architecture. If so, that will change the search paths we set below. We check
+# whether the compiler's library search paths contain a
+# "/boot/system/develop/lib/<subdir>/", which we assume to be the secondary
+# architecture specific subdirectory and extract the name of the architecture
+# accordingly.
+
+# First of all, find a C or C++ compiler we can run. The "arg1" is necessary
+# here for compilers such as "distcc gcc-x86" or "ccache gcc-x86"
+# TODO See CMakeDetermineCompilerId.cmake for some more things we may want to do.
+if(CMAKE_C_COMPILER)
+  set(__HAIKU_COMPILER ${CMAKE_C_COMPILER})
+  string (STRIP "${CMAKE_C_COMPILER_ARG1}" __HAIKU_COMPILER_FLAGS)
+else()
+  set(__HAIKU_COMPILER ${CMAKE_CXX_COMPILER})
+  string (STRIP "${CMAKE_CXX_COMPILER_ARG1}" __HAIKU_COMPILER_FLAGS)
+endif()
+
+
+execute_process(
+  COMMAND ${__HAIKU_COMPILER} ${__HAIKU_COMPILER_FLAGS} -print-search-dirs
+  OUTPUT_VARIABLE _HAIKU_SEARCH_DIRS
+  RESULT_VARIABLE _HAIKU_SEARCH_DIRS_FOUND
+  OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+string(REGEX MATCH "libraries: =?([^\n]*:)?/boot/system/develop/lib/([^/]*)/?(:?\n+)" _dummy "${_HAIKU_SEARCH_DIRS}\n")
+set(CMAKE_HAIKU_SECONDARY_ARCH "${CMAKE_MATCH_2}")
+
+if(NOT CMAKE_HAIKU_SECONDARY_ARCH)
+  set(CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR "")
+  unset(CMAKE_HAIKU_SECONDARY_ARCH)
+else()
+  set(CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR "/${CMAKE_HAIKU_SECONDARY_ARCH}")
+
+  # Override CMAKE_*LIBRARY_ARCHITECTURE. This will cause FIND_LIBRARY to search
+  # the libraries in the correct subdirectory first. It still isn't completely
+  # correct, since the parent directories shouldn't be searched at all. The
+  # primary architecture library might still be found, if there isn't one
+  # installed for the secondary architecture or it is installed in a less
+  # specific location.
+  set(CMAKE_LIBRARY_ARCHITECTURE ${CMAKE_HAIKU_SECONDARY_ARCH})
+  set(CMAKE_C_LIBRARY_ARCHITECTURE ${CMAKE_HAIKU_SECONDARY_ARCH})
+  set(CMAKE_CXX_LIBRARY_ARCHITECTURE ${CMAKE_HAIKU_SECONDARY_ARCH})
+endif()
+
+list(APPEND CMAKE_SYSTEM_PREFIX_PATH
+  /boot/system/non-packaged
+  /boot/system
+  )
+
+LIST(APPEND CMAKE_HAIKU_COMMON_INCLUDE_DIRECTORIES
+  /boot/system/non-packaged/develop/headers${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
+  /boot/system/develop/headers/os
+  /boot/system/develop/headers/os/app
+  /boot/system/develop/headers/os/device
+  /boot/system/develop/headers/os/drivers
+  /boot/system/develop/headers/os/game
+  /boot/system/develop/headers/os/interface
+  /boot/system/develop/headers/os/kernel
+  /boot/system/develop/headers/os/locale
+  /boot/system/develop/headers/os/mail
+  /boot/system/develop/headers/os/media
+  /boot/system/develop/headers/os/midi
+  /boot/system/develop/headers/os/midi2
+  /boot/system/develop/headers/os/net
+  /boot/system/develop/headers/os/opengl
+  /boot/system/develop/headers/os/storage
+  /boot/system/develop/headers/os/support
+  /boot/system/develop/headers/os/translation
+  /boot/system/develop/headers/os/add-ons/graphics
+  /boot/system/develop/headers/os/add-ons/input_server
+  /boot/system/develop/headers/os/add-ons/screen_saver
+  /boot/system/develop/headers/os/add-ons/tracker
+  /boot/system/develop/headers/os/be_apps/Deskbar
+  /boot/system/develop/headers/os/be_apps/NetPositive
+  /boot/system/develop/headers/os/be_apps/Tracker
+  /boot/system/develop/headers/3rdparty
+  /boot/system/develop/headers/bsd
+  /boot/system/develop/headers/glibc
+  /boot/system/develop/headers/gnu
+  /boot/system/develop/headers/posix
+  /boot/system/develop/headers${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
+  )
+IF (CMAKE_HAIKU_SECONDARY_ARCH)
+  LIST(APPEND CMAKE_HAIKU_COMMON_INCLUDE_DIRECTORIES
+    /boot/system/develop/headers
+    )
+ENDIF (CMAKE_HAIKU_SECONDARY_ARCH)
+
+LIST(APPEND CMAKE_HAIKU_C_INCLUDE_DIRECTORIES
+  ${CMAKE_HAIKU_COMMON_INCLUDE_DIRECTORIES}
+  )
+
+LIST(APPEND CMAKE_HAIKU_CXX_INCLUDE_DIRECTORIES
+  ${CMAKE_HAIKU_COMMON_INCLUDE_DIRECTORIES})
+
+LIST(APPEND CMAKE_SYSTEM_INCLUDE_PATH ${CMAKE_HAIKU_C_INCLUDE_DIRECTORIES})
+
+LIST(APPEND CMAKE_HAIKU_DEVELOP_LIB_DIRECTORIES
+  /boot/system/non-packaged/develop/lib${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
+  /boot/system/develop/lib${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}
+  )
+
+LIST(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
+  ${CMAKE_HAIKU_DEVELOP_LIB_DIRECTORIES}
+  )
+
+LIST(APPEND CMAKE_SYSTEM_LIBRARY_PATH ${CMAKE_HAIKU_DEVELOP_LIB_DIRECTORIES})
+
+if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+  set(CMAKE_INSTALL_PREFIX "/boot/system" CACHE PATH
+    "Install path prefix, prepended onto install directories." FORCE)
+endif()
diff --git a/share/cmake-3.18/Modules/Platform/Linux-Absoft-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Linux-Absoft-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-Absoft-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-Absoft-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-CCur-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Linux-CCur-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-CCur-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-CCur-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-Clang-C.cmake b/share/cmake-3.22/Modules/Platform/Linux-Clang-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-Clang-C.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-Clang-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-Clang-CXX.cmake b/share/cmake-3.22/Modules/Platform/Linux-Clang-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-Clang-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-Clang-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-Determine-CXX.cmake b/share/cmake-3.22/Modules/Platform/Linux-Determine-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-Determine-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-Determine-CXX.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Linux-Fujitsu-C.cmake b/share/cmake-3.22/Modules/Platform/Linux-Fujitsu-C.cmake
new file mode 100644
index 0000000..e37573d
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Linux-Fujitsu-C.cmake
@@ -0,0 +1 @@
+include(Platform/Linux-Clang-C)
diff --git a/share/cmake-3.22/Modules/Platform/Linux-Fujitsu-CXX.cmake b/share/cmake-3.22/Modules/Platform/Linux-Fujitsu-CXX.cmake
new file mode 100644
index 0000000..5257f13
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Linux-Fujitsu-CXX.cmake
@@ -0,0 +1 @@
+include(Platform/Linux-Clang-CXX)
diff --git a/share/cmake-3.22/Modules/Platform/Linux-Fujitsu.cmake b/share/cmake-3.22/Modules/Platform/Linux-Fujitsu.cmake
new file mode 100644
index 0000000..be11b0a
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Linux-Fujitsu.cmake
@@ -0,0 +1,17 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__LINUX_COMPILER_FUJITSU)
+  return()
+endif()
+set(__LINUX_COMPILER_FUJITSU 1)
+
+macro(__linux_compiler_fujitsu lang)
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC")
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
+  set(CMAKE_${lang}_COMPILE_OPTIONS_VISIBILITY "-fvisibility=")
+  set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-fPIC")
+  set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-shared")
+endmacro()
diff --git a/share/cmake-3.18/Modules/Platform/Linux-GNU-C.cmake b/share/cmake-3.22/Modules/Platform/Linux-GNU-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-GNU-C.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-GNU-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-GNU-CXX.cmake b/share/cmake-3.22/Modules/Platform/Linux-GNU-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-GNU-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-GNU-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-GNU-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Linux-GNU-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-GNU-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-GNU-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-GNU.cmake b/share/cmake-3.22/Modules/Platform/Linux-GNU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-GNU.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-GNU.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-Intel-C.cmake b/share/cmake-3.22/Modules/Platform/Linux-Intel-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-Intel-C.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-Intel-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-Intel-CXX.cmake b/share/cmake-3.22/Modules/Platform/Linux-Intel-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-Intel-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-Intel-CXX.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Linux-Intel-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Linux-Intel-Fortran.cmake
new file mode 100644
index 0000000..a99e793
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Linux-Intel-Fortran.cmake
@@ -0,0 +1,4 @@
+include(Platform/Linux-Intel)
+__linux_compiler_intel(Fortran)
+string(APPEND CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS " -nofor-main")
+set(CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS "")
diff --git a/share/cmake-3.18/Modules/Platform/Linux-Intel.cmake b/share/cmake-3.22/Modules/Platform/Linux-Intel.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-Intel.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-Intel.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Linux-IntelLLVM-C.cmake b/share/cmake-3.22/Modules/Platform/Linux-IntelLLVM-C.cmake
new file mode 100644
index 0000000..5356c4f
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Linux-IntelLLVM-C.cmake
@@ -0,0 +1,3 @@
+include(Platform/Linux-IntelLLVM)
+__linux_compiler_intel_llvm(C)
+set(CMAKE_INCLUDE_SYSTEM_FLAG_C "-isystem ")
diff --git a/share/cmake-3.22/Modules/Platform/Linux-IntelLLVM-CXX.cmake b/share/cmake-3.22/Modules/Platform/Linux-IntelLLVM-CXX.cmake
new file mode 100644
index 0000000..44ce0e8
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Linux-IntelLLVM-CXX.cmake
@@ -0,0 +1,3 @@
+include(Platform/Linux-IntelLLVM)
+__linux_compiler_intel_llvm(CXX)
+set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem ")
diff --git a/share/cmake-3.22/Modules/Platform/Linux-IntelLLVM-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Linux-IntelLLVM-Fortran.cmake
new file mode 100644
index 0000000..1cd9b1f
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Linux-IntelLLVM-Fortran.cmake
@@ -0,0 +1,4 @@
+include(Platform/Linux-IntelLLVM)
+__linux_compiler_intel_llvm(Fortran)
+string(APPEND CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS " -nofor-main")
+set(CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS "")
diff --git a/share/cmake-3.22/Modules/Platform/Linux-IntelLLVM.cmake b/share/cmake-3.22/Modules/Platform/Linux-IntelLLVM.cmake
new file mode 100644
index 0000000..1363b44
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Linux-IntelLLVM.cmake
@@ -0,0 +1,55 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__LINUX_COMPILER_INTEL_LLVM)
+  return()
+endif()
+set(__LINUX_COMPILER_INTEL_LLVM 1)
+
+if(NOT XIAR)
+  set(_intel_xiar_hints)
+  foreach(lang C CXX Fortran)
+    if(IS_ABSOLUTE "${CMAKE_${lang}_COMPILER}")
+      get_filename_component(_hint "${CMAKE_${lang}_COMPILER}" PATH)
+      list(APPEND _intel_xiar_hints ${_hint})
+    endif()
+  endforeach()
+  find_program(XIAR NAMES xiar HINTS ${_intel_xiar_hints})
+  mark_as_advanced(XIAR)
+endif()
+
+macro(__linux_compiler_intel_llvm lang)
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC")
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
+  set(_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER NO)
+  set(_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER YES)
+  set(CMAKE_${lang}_LINK_OPTIONS_PIE ${CMAKE_${lang}_COMPILE_OPTIONS_PIE} "-pie")
+  set(CMAKE_${lang}_LINK_OPTIONS_NO_PIE "-no-pie")
+  set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-fPIC")
+  set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-shared")
+
+  # We pass this for historical reasons.  Projects may have
+  # executables that use dlopen but do not set ENABLE_EXPORTS.
+  set(CMAKE_SHARED_LIBRARY_LINK_${lang}_FLAGS "-rdynamic")
+
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Wl,")
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP ",")
+
+  set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
+
+  if(XIAR)
+    # INTERPROCEDURAL_OPTIMIZATION
+    set(CMAKE_${lang}_COMPILE_OPTIONS_IPO -ipo)
+    set(CMAKE_${lang}_CREATE_STATIC_LIBRARY_IPO
+      "${XIAR} cr <TARGET> <LINK_FLAGS> <OBJECTS> "
+      "${XIAR} -s <TARGET> ")
+    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
+    set(_CMAKE_${lang}_IPO_LEGACY_BEHAVIOR YES)
+  else()
+    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER NO)
+  endif()
+
+  set(CMAKE_${lang}_COMPILE_OPTIONS_VISIBILITY "-fvisibility=")
+endmacro()
diff --git a/share/cmake-3.18/Modules/Platform/Linux-NAG-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Linux-NAG-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-NAG-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-NAG-Fortran.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Linux-NVHPC-C.cmake b/share/cmake-3.22/Modules/Platform/Linux-NVHPC-C.cmake
new file mode 100644
index 0000000..4aab327
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Linux-NVHPC-C.cmake
@@ -0,0 +1,2 @@
+include(Platform/Linux-NVHPC)
+__linux_compiler_nvhpc(C)
diff --git a/share/cmake-3.22/Modules/Platform/Linux-NVHPC-CXX.cmake b/share/cmake-3.22/Modules/Platform/Linux-NVHPC-CXX.cmake
new file mode 100644
index 0000000..57380eb
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Linux-NVHPC-CXX.cmake
@@ -0,0 +1,2 @@
+include(Platform/Linux-NVHPC)
+__linux_compiler_nvhpc(CXX)
diff --git a/share/cmake-3.22/Modules/Platform/Linux-NVHPC-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Linux-NVHPC-Fortran.cmake
new file mode 100644
index 0000000..c68430c
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Linux-NVHPC-Fortran.cmake
@@ -0,0 +1,2 @@
+include(Platform/Linux-NVHPC)
+__linux_compiler_nvhpc(Fortran)
diff --git a/share/cmake-3.22/Modules/Platform/Linux-NVHPC.cmake b/share/cmake-3.22/Modules/Platform/Linux-NVHPC.cmake
new file mode 100644
index 0000000..aad17f1
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Linux-NVHPC.cmake
@@ -0,0 +1,15 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__LINUX_COMPILER_NVIDIA)
+  return()
+endif()
+set(__LINUX_COMPILER_NVIDIA 1)
+
+include(Platform/Linux-PGI)
+
+macro(__linux_compiler_nvhpc lang)
+  __linux_compiler_pgi(${lang})
+endmacro()
diff --git a/share/cmake-3.18/Modules/Platform/Linux-OpenWatcom-C.cmake b/share/cmake-3.22/Modules/Platform/Linux-OpenWatcom-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-OpenWatcom-C.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-OpenWatcom-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-OpenWatcom-CXX.cmake b/share/cmake-3.22/Modules/Platform/Linux-OpenWatcom-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-OpenWatcom-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-OpenWatcom-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-OpenWatcom.cmake b/share/cmake-3.22/Modules/Platform/Linux-OpenWatcom.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-OpenWatcom.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-OpenWatcom.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-PGI-C.cmake b/share/cmake-3.22/Modules/Platform/Linux-PGI-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-PGI-C.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-PGI-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-PGI-CXX.cmake b/share/cmake-3.22/Modules/Platform/Linux-PGI-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-PGI-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-PGI-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-PGI-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Linux-PGI-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-PGI-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-PGI-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-PGI.cmake b/share/cmake-3.22/Modules/Platform/Linux-PGI.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-PGI.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-PGI.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-PathScale-C.cmake b/share/cmake-3.22/Modules/Platform/Linux-PathScale-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-PathScale-C.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-PathScale-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-PathScale-CXX.cmake b/share/cmake-3.22/Modules/Platform/Linux-PathScale-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-PathScale-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-PathScale-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-PathScale-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Linux-PathScale-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-PathScale-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-PathScale-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-PathScale.cmake b/share/cmake-3.22/Modules/Platform/Linux-PathScale.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-PathScale.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-PathScale.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-SunPro-CXX.cmake b/share/cmake-3.22/Modules/Platform/Linux-SunPro-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-SunPro-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-SunPro-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-TinyCC-C.cmake b/share/cmake-3.22/Modules/Platform/Linux-TinyCC-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-TinyCC-C.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-TinyCC-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-VisualAge-C.cmake b/share/cmake-3.22/Modules/Platform/Linux-VisualAge-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-VisualAge-C.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-VisualAge-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-VisualAge-CXX.cmake b/share/cmake-3.22/Modules/Platform/Linux-VisualAge-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-VisualAge-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-VisualAge-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-VisualAge-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Linux-VisualAge-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-VisualAge-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-VisualAge-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-XL-C.cmake b/share/cmake-3.22/Modules/Platform/Linux-XL-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-XL-C.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-XL-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-XL-CXX.cmake b/share/cmake-3.22/Modules/Platform/Linux-XL-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-XL-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-XL-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-XL-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Linux-XL-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-XL-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-XL-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux-como.cmake b/share/cmake-3.22/Modules/Platform/Linux-como.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux-como.cmake
rename to share/cmake-3.22/Modules/Platform/Linux-como.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Linux.cmake b/share/cmake-3.22/Modules/Platform/Linux.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Linux.cmake
rename to share/cmake-3.22/Modules/Platform/Linux.cmake
diff --git a/share/cmake-3.18/Modules/Platform/MP-RAS.cmake b/share/cmake-3.22/Modules/Platform/MP-RAS.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/MP-RAS.cmake
rename to share/cmake-3.22/Modules/Platform/MP-RAS.cmake
diff --git a/share/cmake-3.22/Modules/Platform/MSYS-Clang-C.cmake b/share/cmake-3.22/Modules/Platform/MSYS-Clang-C.cmake
new file mode 100644
index 0000000..f025b33
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/MSYS-Clang-C.cmake
@@ -0,0 +1 @@
+include(Platform/CYGWIN-Clang-C)
diff --git a/share/cmake-3.22/Modules/Platform/MSYS-Clang-CXX.cmake b/share/cmake-3.22/Modules/Platform/MSYS-Clang-CXX.cmake
new file mode 100644
index 0000000..e509eaa
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/MSYS-Clang-CXX.cmake
@@ -0,0 +1 @@
+include(Platform/CYGWIN-Clang-CXX)
diff --git a/share/cmake-3.22/Modules/Platform/MSYS-Determine-CXX.cmake b/share/cmake-3.22/Modules/Platform/MSYS-Determine-CXX.cmake
new file mode 100644
index 0000000..dec17f0
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/MSYS-Determine-CXX.cmake
@@ -0,0 +1 @@
+include(Platform/CYGWIN-Determine-CXX)
diff --git a/share/cmake-3.18/Modules/Platform/CYGWIN-Clang-C.cmake b/share/cmake-3.22/Modules/Platform/MSYS-GNU-C.cmake
similarity index 100%
copy from share/cmake-3.18/Modules/Platform/CYGWIN-Clang-C.cmake
copy to share/cmake-3.22/Modules/Platform/MSYS-GNU-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/CYGWIN-Clang-CXX.cmake b/share/cmake-3.22/Modules/Platform/MSYS-GNU-CXX.cmake
similarity index 100%
copy from share/cmake-3.18/Modules/Platform/CYGWIN-Clang-CXX.cmake
copy to share/cmake-3.22/Modules/Platform/MSYS-GNU-CXX.cmake
diff --git a/share/cmake-3.22/Modules/Platform/MSYS-GNU-Fortran.cmake b/share/cmake-3.22/Modules/Platform/MSYS-GNU-Fortran.cmake
new file mode 100644
index 0000000..b0b7d8e
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/MSYS-GNU-Fortran.cmake
@@ -0,0 +1 @@
+include(Platform/CYGWIN-GNU-Fortran)
diff --git a/share/cmake-3.22/Modules/Platform/MSYS-GNU.cmake b/share/cmake-3.22/Modules/Platform/MSYS-GNU.cmake
new file mode 100644
index 0000000..012c112
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/MSYS-GNU.cmake
@@ -0,0 +1 @@
+include(Platform/CYGWIN-GNU)
diff --git a/share/cmake-3.22/Modules/Platform/MSYS-windres.cmake b/share/cmake-3.22/Modules/Platform/MSYS-windres.cmake
new file mode 100644
index 0000000..faaccc2
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/MSYS-windres.cmake
@@ -0,0 +1 @@
+include(Platform/CYGWIN-windres)
diff --git a/share/cmake-3.22/Modules/Platform/MSYS.cmake b/share/cmake-3.22/Modules/Platform/MSYS.cmake
new file mode 100644
index 0000000..96fa36f
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/MSYS.cmake
@@ -0,0 +1,4 @@
+set(MSYS 1)
+include(Platform/CYGWIN)
+set(CMAKE_SHARED_LIBRARY_PREFIX "msys-")
+set(CMAKE_SHARED_MODULE_PREFIX "msys-")
diff --git a/share/cmake-3.18/Modules/Platform/Midipix.cmake b/share/cmake-3.22/Modules/Platform/Midipix.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Midipix.cmake
rename to share/cmake-3.22/Modules/Platform/Midipix.cmake
diff --git a/share/cmake-3.18/Modules/Platform/MirBSD.cmake b/share/cmake-3.22/Modules/Platform/MirBSD.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/MirBSD.cmake
rename to share/cmake-3.22/Modules/Platform/MirBSD.cmake
diff --git a/share/cmake-3.18/Modules/Platform/NetBSD.cmake b/share/cmake-3.22/Modules/Platform/NetBSD.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/NetBSD.cmake
rename to share/cmake-3.22/Modules/Platform/NetBSD.cmake
diff --git a/share/cmake-3.18/Modules/Platform/OS2-OpenWatcom-C.cmake b/share/cmake-3.22/Modules/Platform/OS2-OpenWatcom-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/OS2-OpenWatcom-C.cmake
rename to share/cmake-3.22/Modules/Platform/OS2-OpenWatcom-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/OS2-OpenWatcom-CXX.cmake b/share/cmake-3.22/Modules/Platform/OS2-OpenWatcom-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/OS2-OpenWatcom-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/OS2-OpenWatcom-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/OS2-OpenWatcom.cmake b/share/cmake-3.22/Modules/Platform/OS2-OpenWatcom.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/OS2-OpenWatcom.cmake
rename to share/cmake-3.22/Modules/Platform/OS2-OpenWatcom.cmake
diff --git a/share/cmake-3.18/Modules/Platform/OS2.cmake b/share/cmake-3.22/Modules/Platform/OS2.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/OS2.cmake
rename to share/cmake-3.22/Modules/Platform/OS2.cmake
diff --git a/share/cmake-3.18/Modules/Platform/OSF1.cmake b/share/cmake-3.22/Modules/Platform/OSF1.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/OSF1.cmake
rename to share/cmake-3.22/Modules/Platform/OSF1.cmake
diff --git a/share/cmake-3.18/Modules/Platform/OpenBSD.cmake b/share/cmake-3.22/Modules/Platform/OpenBSD.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/OpenBSD.cmake
rename to share/cmake-3.22/Modules/Platform/OpenBSD.cmake
diff --git a/share/cmake-3.18/Modules/Platform/OpenVMS.cmake b/share/cmake-3.22/Modules/Platform/OpenVMS.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/OpenVMS.cmake
rename to share/cmake-3.22/Modules/Platform/OpenVMS.cmake
diff --git a/share/cmake-3.18/Modules/Platform/QNX.cmake b/share/cmake-3.22/Modules/Platform/QNX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/QNX.cmake
rename to share/cmake-3.22/Modules/Platform/QNX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/RISCos.cmake b/share/cmake-3.22/Modules/Platform/RISCos.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/RISCos.cmake
rename to share/cmake-3.22/Modules/Platform/RISCos.cmake
diff --git a/share/cmake-3.18/Modules/Platform/SCO_SV.cmake b/share/cmake-3.22/Modules/Platform/SCO_SV.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/SCO_SV.cmake
rename to share/cmake-3.22/Modules/Platform/SCO_SV.cmake
diff --git a/share/cmake-3.18/Modules/Platform/SINIX.cmake b/share/cmake-3.22/Modules/Platform/SINIX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/SINIX.cmake
rename to share/cmake-3.22/Modules/Platform/SINIX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/SunOS-Clang-C.cmake b/share/cmake-3.22/Modules/Platform/SunOS-Clang-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/SunOS-Clang-C.cmake
rename to share/cmake-3.22/Modules/Platform/SunOS-Clang-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/SunOS-Clang-CXX.cmake b/share/cmake-3.22/Modules/Platform/SunOS-Clang-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/SunOS-Clang-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/SunOS-Clang-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/SunOS-GNU-C.cmake b/share/cmake-3.22/Modules/Platform/SunOS-GNU-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/SunOS-GNU-C.cmake
rename to share/cmake-3.22/Modules/Platform/SunOS-GNU-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/SunOS-GNU-CXX.cmake b/share/cmake-3.22/Modules/Platform/SunOS-GNU-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/SunOS-GNU-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/SunOS-GNU-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/SunOS-GNU-Fortran.cmake b/share/cmake-3.22/Modules/Platform/SunOS-GNU-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/SunOS-GNU-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/SunOS-GNU-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/SunOS-GNU.cmake b/share/cmake-3.22/Modules/Platform/SunOS-GNU.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/SunOS-GNU.cmake
rename to share/cmake-3.22/Modules/Platform/SunOS-GNU.cmake
diff --git a/share/cmake-3.18/Modules/Platform/SunOS-PathScale-C.cmake b/share/cmake-3.22/Modules/Platform/SunOS-PathScale-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/SunOS-PathScale-C.cmake
rename to share/cmake-3.22/Modules/Platform/SunOS-PathScale-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/SunOS-PathScale-CXX.cmake b/share/cmake-3.22/Modules/Platform/SunOS-PathScale-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/SunOS-PathScale-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/SunOS-PathScale-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/SunOS-PathScale-Fortran.cmake b/share/cmake-3.22/Modules/Platform/SunOS-PathScale-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/SunOS-PathScale-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/SunOS-PathScale-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/SunOS-PathScale.cmake b/share/cmake-3.22/Modules/Platform/SunOS-PathScale.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/SunOS-PathScale.cmake
rename to share/cmake-3.22/Modules/Platform/SunOS-PathScale.cmake
diff --git a/share/cmake-3.18/Modules/Platform/SunOS.cmake b/share/cmake-3.22/Modules/Platform/SunOS.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/SunOS.cmake
rename to share/cmake-3.22/Modules/Platform/SunOS.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Tru64.cmake b/share/cmake-3.22/Modules/Platform/Tru64.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Tru64.cmake
rename to share/cmake-3.22/Modules/Platform/Tru64.cmake
diff --git a/share/cmake-3.18/Modules/Platform/ULTRIX.cmake b/share/cmake-3.22/Modules/Platform/ULTRIX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/ULTRIX.cmake
rename to share/cmake-3.22/Modules/Platform/ULTRIX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/UNIX_SV.cmake b/share/cmake-3.22/Modules/Platform/UNIX_SV.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/UNIX_SV.cmake
rename to share/cmake-3.22/Modules/Platform/UNIX_SV.cmake
diff --git a/share/cmake-3.18/Modules/Platform/UnixPaths.cmake b/share/cmake-3.22/Modules/Platform/UnixPaths.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/UnixPaths.cmake
rename to share/cmake-3.22/Modules/Platform/UnixPaths.cmake
diff --git a/share/cmake-3.18/Modules/Platform/UnixWare.cmake b/share/cmake-3.22/Modules/Platform/UnixWare.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/UnixWare.cmake
rename to share/cmake-3.22/Modules/Platform/UnixWare.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Apple-Swift.cmake b/share/cmake-3.22/Modules/Platform/Windows-Apple-Swift.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-Apple-Swift.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-Apple-Swift.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Borland-C.cmake b/share/cmake-3.22/Modules/Platform/Windows-Borland-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-Borland-C.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-Borland-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Borland-CXX.cmake b/share/cmake-3.22/Modules/Platform/Windows-Borland-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-Borland-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-Borland-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Clang-ASM.cmake b/share/cmake-3.22/Modules/Platform/Windows-Clang-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-Clang-ASM.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-Clang-ASM.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Windows-Clang-C.cmake b/share/cmake-3.22/Modules/Platform/Windows-Clang-C.cmake
new file mode 100644
index 0000000..322e3fb
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-Clang-C.cmake
@@ -0,0 +1,18 @@
+include(Platform/Windows-Clang)
+__windows_compiler_clang(C)
+
+if("x${MAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
+  if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+      AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+      AND CMAKE_DEPFILE_FLAGS_C)
+    set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
+  endif()
+elseif("x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
+  if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+      AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+      AND CMAKE_DEPFILE_FLAGS_C)
+    # dependencies are computed by the compiler itself
+    set(CMAKE_C_DEPFILE_FORMAT gcc)
+    set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
+  endif()
+endif()
diff --git a/share/cmake-3.22/Modules/Platform/Windows-Clang-CXX.cmake b/share/cmake-3.22/Modules/Platform/Windows-Clang-CXX.cmake
new file mode 100644
index 0000000..b4aaf1e
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-Clang-CXX.cmake
@@ -0,0 +1,19 @@
+include(Platform/Windows-Clang)
+set(_COMPILE_CXX_MSVC " -TP")
+__windows_compiler_clang(CXX)
+
+if("x${MAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
+  if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+      AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+      AND CMAKE_DEPFILE_FLAGS_CXX)
+    set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
+  endif()
+elseif("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
+  if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+      AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+      AND CMAKE_DEPFILE_FLAGS_CXX)
+    # dependencies are computed by the compiler itself
+    set(CMAKE_CXX_DEPFILE_FORMAT gcc)
+    set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
+  endif()
+endif()
diff --git a/share/cmake-3.22/Modules/Platform/Windows-Clang.cmake b/share/cmake-3.22/Modules/Platform/Windows-Clang.cmake
new file mode 100644
index 0000000..1c32018
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-Clang.cmake
@@ -0,0 +1,213 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__WINDOWS_CLANG)
+  return()
+endif()
+set(__WINDOWS_CLANG 1)
+
+set(__pch_header_C "c-header")
+set(__pch_header_CXX "c++-header")
+set(__pch_header_OBJC "objective-c-header")
+set(__pch_header_OBJCXX "objective-c++-header")
+
+macro(__windows_compiler_clang_gnu lang)
+  set(CMAKE_LIBRARY_PATH_FLAG "-L")
+  set(CMAKE_LINK_LIBRARY_FLAG "-l")
+
+  set(CMAKE_IMPORT_LIBRARY_PREFIX "")
+  set(CMAKE_SHARED_LIBRARY_PREFIX "")
+  set(CMAKE_SHARED_MODULE_PREFIX  "")
+  set(CMAKE_STATIC_LIBRARY_PREFIX "")
+  set(CMAKE_EXECUTABLE_SUFFIX     ".exe")
+  set(CMAKE_IMPORT_LIBRARY_SUFFIX ".lib")
+  set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")
+  set(CMAKE_SHARED_MODULE_SUFFIX  ".dll")
+  set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib")
+  if(NOT "${lang}" STREQUAL "ASM")
+    set(CMAKE_DEPFILE_FLAGS_${lang} "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
+  endif()
+
+  set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
+  set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a" ".lib")
+  set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 1)
+  set (CMAKE_LINK_DEF_FILE_FLAG "-Xlinker /DEF:")
+
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Xlinker" " ")
+  set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP)
+
+  set(CMAKE_${lang}_LINKER_MANIFEST_FLAG " -Xlinker /MANIFESTINPUT:")
+
+  if("${CMAKE_${lang}_SIMULATE_VERSION}" MATCHES "^([0-9]+)\\.([0-9]+)")
+    math(EXPR MSVC_VERSION "${CMAKE_MATCH_1}*100 + ${CMAKE_MATCH_2}")
+  endif()
+
+  # No -fPIC on Windows
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "")
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "")
+  set(_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER NO)
+  set(CMAKE_${lang}_LINK_OPTIONS_PIE "")
+  set(CMAKE_${lang}_LINK_OPTIONS_NO_PIE "")
+  set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "")
+
+  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_OBJECTS 1)
+  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_LIBRARIES 1)
+  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_INCLUDES 1)
+
+  set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto")
+  set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
+  set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
+  set(CMAKE_${lang}_ARCHIVE_CREATE_IPO "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
+  set(CMAKE_${lang}_ARCHIVE_APPEND_IPO "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
+  set(CMAKE_${lang}_ARCHIVE_FINISH_IPO "<CMAKE_RANLIB> <TARGET>")
+
+  # Create archiving rules to support large object file lists for static libraries.
+  set(CMAKE_${lang}_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
+  set(CMAKE_${lang}_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
+  set(CMAKE_${lang}_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
+  set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
+    "<CMAKE_${lang}_COMPILER> -fuse-ld=lld-link -nostartfiles -nostdlib <CMAKE_SHARED_LIBRARY_${lang}_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS> -o <TARGET> ${CMAKE_GNULD_IMAGE_VERSION} -Xlinker /MANIFEST:EMBED -Xlinker /implib:<TARGET_IMPLIB> -Xlinker /pdb:<TARGET_PDB> -Xlinker /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> <OBJECTS> <LINK_LIBRARIES> <MANIFESTS>")
+  set(CMAKE_${lang}_CREATE_SHARED_MODULE ${CMAKE_${lang}_CREATE_SHARED_LIBRARY})
+  set(CMAKE_${lang}_LINK_EXECUTABLE
+    "<CMAKE_${lang}_COMPILER> -fuse-ld=lld-link -nostartfiles -nostdlib <FLAGS> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> -Xlinker /MANIFEST:EMBED -Xlinker /implib:<TARGET_IMPLIB> -Xlinker /pdb:<TARGET_PDB> -Xlinker /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> ${CMAKE_GNULD_IMAGE_VERSION} <LINK_LIBRARIES> <MANIFESTS>")
+
+  set(CMAKE_${lang}_CREATE_WIN32_EXE "-Xlinker /subsystem:windows")
+  set(CMAKE_${lang}_CREATE_CONSOLE_EXE "-Xlinker /subsystem:console")
+
+  if(NOT "${lang}" STREQUAL "ASM")
+    set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded         -Xclang -flto-visibility-public-std -D_MT -Xclang --dependent-lib=libcmt)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL      -D_DLL -D_MT -Xclang --dependent-lib=msvcrt)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug    -D_DEBUG -Xclang -flto-visibility-public-std -D_MT -Xclang --dependent-lib=libcmtd)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd)
+
+    if(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT)
+      set(__ADDED_FLAGS "")
+      set(__ADDED_FLAGS_DEBUG "")
+    else()
+      set(__ADDED_FLAGS_DEBUG "-D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd")
+      set(__ADDED_FLAGS "-D_DLL -D_MT -Xclang --dependent-lib=msvcrt")
+    endif()
+
+    string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g -Xclang -gcodeview -O0 ${__ADDED_FLAGS_DEBUG}")
+    string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Os -DNDEBUG ${__ADDED_FLAGS}")
+    string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3 -DNDEBUG ${__ADDED_FLAGS}")
+    string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g -DNDEBUG -Xclang -gcodeview ${__ADDED_FLAGS}")
+  endif()
+  set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-isystem ")
+
+  set(CMAKE_PCH_EXTENSION .pch)
+  set(CMAKE_PCH_PROLOGUE "#pragma clang system_header")
+  set(CMAKE_${lang}_COMPILE_OPTIONS_USE_PCH -Xclang -include-pch -Xclang <PCH_FILE> -Xclang -include -Xclang <PCH_HEADER>)
+  set(CMAKE_${lang}_COMPILE_OPTIONS_CREATE_PCH -Xclang -emit-pch -Xclang -include -Xclang <PCH_HEADER> -x ${__pch_header_${lang}})
+
+  unset(__ADDED_FLAGS)
+  unset(__ADDED_FLAGS_DEBUG)
+  string(TOLOWER "${CMAKE_BUILD_TYPE}" BUILD_TYPE_LOWER)
+  set(CMAKE_${lang}_STANDARD_LIBRARIES_INIT "-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 -loldnames")
+
+  enable_language(RC)
+endmacro()
+
+macro(__enable_llvm_rc_preprocessing clang_option_prefix extra_pp_flags)
+  # Feed the preprocessed rc file to llvm-rc
+  if(CMAKE_RC_COMPILER_INIT MATCHES "llvm-rc" OR CMAKE_RC_COMPILER MATCHES "llvm-rc")
+    if(DEFINED CMAKE_C_COMPILER_ID)
+      set(CMAKE_RC_PREPROCESSOR CMAKE_C_COMPILER)
+    elseif(DEFINED CMAKE_CXX_COMPILER_ID)
+      set(CMAKE_RC_PREPROCESSOR CMAKE_CXX_COMPILER)
+    endif()
+    if(DEFINED CMAKE_RC_PREPROCESSOR)
+      set(CMAKE_DEPFILE_FLAGS_RC "${clang_option_prefix}-MD ${clang_option_prefix}-MF ${clang_option_prefix}<DEP_FILE>")
+      # The <FLAGS> are passed to the preprocess and the resource compiler to pick
+      # up the eventual -D / -C options passed through the CMAKE_RC_FLAGS.
+      set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_COMMAND> -E cmake_llvm_rc <SOURCE> <OBJECT>.pp <${CMAKE_RC_PREPROCESSOR}> <DEFINES> -DRC_INVOKED <INCLUDES> <FLAGS> ${extra_pp_flags} -E -- <SOURCE> ++ <CMAKE_RC_COMPILER> <DEFINES> -I <SOURCE_DIR> <INCLUDES> <FLAGS> /fo <OBJECT> <OBJECT>.pp")
+      if(CMAKE_GENERATOR MATCHES "Ninja")
+        set(CMAKE_NINJA_CMCLDEPS_RC 0)
+        set(CMAKE_NINJA_DEP_TYPE_RC gcc)
+      endif()
+      unset(CMAKE_RC_PREPROCESSOR)
+    endif()
+  endif()
+endmacro()
+
+
+if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC"
+    OR "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
+
+  if ( DEFINED CMAKE_C_COMPILER_ID AND DEFINED CMAKE_CXX_COMPILER_ID
+       AND NOT "x${CMAKE_C_COMPILER_ID}" STREQUAL "x${CMAKE_CXX_COMPILER_ID}")
+    message(FATAL_ERROR "The current configuration mixes Clang and MSVC or "
+            "some other CL compatible compiler tool. This is not supported. "
+            "Use either clang or MSVC as both C and C++ compilers.")
+  endif()
+
+  if ( DEFINED CMAKE_C_COMPILER_FRONTEND_VARIANT AND DEFINED CMAKE_CXX_COMPILER_FRONTEND_VARIANT
+       AND NOT "x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}")
+    message(FATAL_ERROR "The current configuration uses the Clang compiler "
+            "tool with mixed frontend variants, both the GNU and in MSVC CL "
+            "like variants. This is not supported. Use either clang/clang++ "
+            "or clang-cl as both C and C++ compilers.")
+  endif()
+
+  if(NOT CMAKE_RC_COMPILER_INIT)
+    # Check if rc is already in the path
+    # This may happen in cases where the user is already in a visual studio environment when CMake is invoked
+    find_program(__RC_COMPILER_PATH NAMES rc)
+
+    # Default to rc if it's available, otherwise fall back to llvm-rc
+    if(__RC_COMPILER_PATH)
+      set(CMAKE_RC_COMPILER_INIT rc)
+    else()
+      find_program(__RC_COMPILER_PATH NAMES llvm-rc)
+      if(__RC_COMPILER_PATH)
+        set(CMAKE_RC_COMPILER_INIT llvm-rc)
+      endif()
+    endif()
+
+    unset(__RC_COMPILER_PATH CACHE)
+  endif()
+
+  if ( "x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC" OR "x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC" )
+    include(Platform/Windows-MSVC)
+    # Set the clang option forwarding prefix for clang-cl usage in the llvm-rc processing stage
+    __enable_llvm_rc_preprocessing("-clang:" "")
+    macro(__windows_compiler_clang_base lang)
+      set(_COMPILE_${lang} "${_COMPILE_${lang}_MSVC}")
+      __windows_compiler_msvc(${lang})
+      set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-imsvc ")
+    endmacro()
+  else()
+    cmake_policy(GET CMP0091 __WINDOWS_CLANG_CMP0091)
+    if(__WINDOWS_CLANG_CMP0091 STREQUAL "NEW")
+      set(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
+    else()
+      set(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT "")
+    endif()
+    unset(__WINDOWS_CLANG_CMP0091)
+
+    set(CMAKE_BUILD_TYPE_INIT Debug)
+
+    __enable_llvm_rc_preprocessing("" "-x c")
+    macro(__windows_compiler_clang_base lang)
+      __windows_compiler_clang_gnu(${lang})
+    endmacro()
+  endif()
+
+else()
+  include(Platform/Windows-GNU)
+  __enable_llvm_rc_preprocessing("" "-x c")
+  macro(__windows_compiler_clang_base lang)
+    __windows_compiler_gnu(${lang})
+  endmacro()
+endif()
+
+macro(__windows_compiler_clang lang)
+  if(CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4.0)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_TARGET "-target ")
+  else()
+    set(CMAKE_${lang}_COMPILE_OPTIONS_TARGET "--target=")
+  endif()
+  __windows_compiler_clang_base(${lang})
+endmacro()
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Determine-CXX.cmake b/share/cmake-3.22/Modules/Platform/Windows-Determine-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-Determine-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-Determine-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Embarcadero-C.cmake b/share/cmake-3.22/Modules/Platform/Windows-Embarcadero-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-Embarcadero-C.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-Embarcadero-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Embarcadero-CXX.cmake b/share/cmake-3.22/Modules/Platform/Windows-Embarcadero-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-Embarcadero-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-Embarcadero-CXX.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Windows-Embarcadero.cmake b/share/cmake-3.22/Modules/Platform/Windows-Embarcadero.cmake
new file mode 100644
index 0000000..4ecc2c2
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-Embarcadero.cmake
@@ -0,0 +1,139 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__WINDOWS_EMBARCADERO)
+  return()
+endif()
+set(__WINDOWS_EMBARCADERO 1)
+
+set(BORLAND 1)
+
+set(__pch_header_C "c-header")
+set(__pch_header_CXX "c++-header")
+set(__pch_header_OBJC "objective-c-header")
+set(__pch_header_OBJCXX "objective-c++-header")
+
+if("${CMAKE_${_lang}_COMPILER_VERSION}" VERSION_LESS 6.30)
+  # Borland target type flags (bcc32 -h -t):
+  set(_tW "-tW")       # -tW  GUI App         (implies -U__CONSOLE__)
+  set(_tC "-tWC")      # -tWC Console App     (implies -D__CONSOLE__=1)
+  set(_tD "-tWD")      # -tWD Build a DLL     (implies -D__DLL__=1 -D_DLL=1)
+  set(_tM "-tWM")      # -tWM Enable threads  (implies -D__MT__=1 -D_MT=1)
+  set(_tR "-tWR -tW-") # -tWR Use DLL runtime (implies -D_RTLDLL, and '-tW' too!!)
+  # Notes:
+  #  - The flags affect linking so we pass them to the linker.
+  #  - The flags affect preprocessing so we pass them to the compiler.
+  #  - Since '-tWR' implies '-tW' we use '-tWR -tW-' instead.
+  #  - Since '-tW-' disables '-tWD' we use '-tWR -tW- -tWD' for DLLs.
+else()
+  set(EMBARCADERO 1)
+  set(_tC "-tC") # Target is a console application
+  set(_tD "-tD") # Target is a shared library
+  set(_tM "-tM") # Target is multi-threaded
+  set(_tR "-tR") # Target uses the dynamic RTL
+  set(_tW "-tW") # Target is a Windows application
+endif()
+set(_COMPILE_C "")
+set(_COMPILE_CXX " -P")
+
+set(CMAKE_LIBRARY_PATH_FLAG "-L")
+set(CMAKE_LINK_LIBRARY_FLAG "")
+
+set(CMAKE_FIND_LIBRARY_SUFFIXES "-bcc.lib" ".lib")
+
+# uncomment these out to debug makefiles
+#set(CMAKE_START_TEMP_FILE "")
+#set(CMAKE_END_TEMP_FILE "")
+#set(CMAKE_VERBOSE_MAKEFILE 1)
+
+# Borland cannot handle + in the file name, so mangle object file name
+set (CMAKE_MANGLE_OBJECT_FILE_NAMES "ON")
+
+set (CMAKE_BUILD_TYPE Debug CACHE STRING
+     "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel.")
+
+foreach(t EXE SHARED MODULE)
+  string(APPEND CMAKE_${t}_LINKER_FLAGS_INIT " ${_tM} -lS:1048576 -lSc:4098 -lH:1048576 -lHc:8192 ")
+  string(APPEND CMAKE_${t}_LINKER_FLAGS_DEBUG_INIT " -v")
+  string(APPEND CMAKE_${t}_LINKER_FLAGS_RELWITHDEBINFO_INIT " -v")
+endforeach()
+
+# The Borland link tool does not support multiple concurrent
+# invocations within a single working directory.
+if(NOT DEFINED CMAKE_JOB_POOL_LINK)
+  set(CMAKE_JOB_POOL_LINK BCC32LinkPool)
+  get_property(_bccjp GLOBAL PROPERTY JOB_POOLS)
+  if(NOT _bccjp MATCHES "BCC32LinkPool=")
+      set_property(GLOBAL APPEND PROPERTY JOB_POOLS BCC32LinkPool=1)
+  endif()
+  unset(_bccjp)
+endif()
+
+macro(__embarcadero_language lang)
+  set(CMAKE_${lang}_COMPILE_OPTIONS_DLL "${_tD}") # Note: This variable is a ';' separated list
+  set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "${_tD}") # ... while this is a space separated string.
+  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_INCLUDES 1)
+
+  set (CMAKE_${lang}_LINKER_WRAPPER_FLAG "-l")
+
+  # compile a source file into an object file
+  # place <DEFINES> outside the response file because Borland refuses
+  # to parse quotes from the response file.
+  set(CMAKE_${lang}_COMPILE_OBJECT
+    "<CMAKE_${lang}_COMPILER> ${_tR} -DWIN32 <DEFINES> <INCLUDES> <FLAGS> -o<OBJECT>${_COMPILE_${lang}} -c <SOURCE>"
+    )
+
+  set(CMAKE_${lang}_LINK_EXECUTABLE
+    "<CMAKE_${lang}_COMPILER> ${_tR} -e<TARGET> <LINK_FLAGS> <FLAGS> ${CMAKE_START_TEMP_FILE} <LINK_LIBRARIES> <OBJECTS>${CMAKE_END_TEMP_FILE}"
+    # "implib -c -w <TARGET_IMPLIB> <TARGET>"
+    )
+
+  # place <DEFINES> outside the response file because Borland refuses
+  # to parse quotes from the response file.
+  set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE
+    "cpp32 -DWIN32 <DEFINES> <INCLUDES> <FLAGS> -o<PREPROCESSED_SOURCE>${_COMPILE_${lang}} -c <SOURCE>"
+    )
+  # Borland >= 5.6 allows -P option for cpp32, <= 5.5 does not
+
+  # Create a module library.
+  set(CMAKE_${lang}_CREATE_SHARED_MODULE
+    "<CMAKE_${lang}_COMPILER> ${_tR} ${_tD} ${CMAKE_START_TEMP_FILE}-e<TARGET> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS>${CMAKE_END_TEMP_FILE}"
+    )
+
+  # Create an import library for another target.
+  set(CMAKE_${lang}_CREATE_IMPORT_LIBRARY
+    "implib -c -w <TARGET_IMPLIB> <TARGET>"
+    )
+
+  # Create a shared library.
+  # First create a module and then its import library.
+  set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
+    ${CMAKE_${lang}_CREATE_SHARED_MODULE}
+    ${CMAKE_${lang}_CREATE_IMPORT_LIBRARY}
+    )
+
+  # create a static library
+  set(CMAKE_${lang}_CREATE_STATIC_LIBRARY
+    "tlib ${CMAKE_START_TEMP_FILE}/p512 <LINK_FLAGS> /a <TARGET_QUOTED> <OBJECTS>${CMAKE_END_TEMP_FILE}"
+    )
+
+  set(CMAKE_${lang}_CREATE_WIN32_EXE "${_tW}")
+  set(CMAKE_${lang}_CREATE_CONSOLE_EXE "${_tC}")
+
+  # Precompile Headers
+  if (EMBARCADERO)
+    set(CMAKE_PCH_EXTENSION .pch)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_USE_PCH -Xclang -include-pch -Xclang <PCH_FILE> -Xclang -include -Xclang <PCH_HEADER>)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_CREATE_PCH -Xclang -emit-pch -Xclang -include -Xclang <PCH_HEADER> -x ${__pch_header_${lang}})
+  endif()
+
+  # Initial configuration flags.
+  string(APPEND CMAKE_${lang}_FLAGS_INIT " ${_tM}")
+  string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -Od -v")
+  string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -O1 -DNDEBUG")
+  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O2 -DNDEBUG")
+  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -Od")
+  set(CMAKE_${lang}_STANDARD_LIBRARIES_INIT "import32.lib")
+endmacro()
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Flang-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Windows-Flang-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-Flang-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-Flang-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-G95-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Windows-G95-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-G95-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-G95-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-GNU-ASM.cmake b/share/cmake-3.22/Modules/Platform/Windows-GNU-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-GNU-ASM.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-GNU-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-GNU-C-ABI.cmake b/share/cmake-3.22/Modules/Platform/Windows-GNU-C-ABI.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-GNU-C-ABI.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-GNU-C-ABI.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-GNU-C.cmake b/share/cmake-3.22/Modules/Platform/Windows-GNU-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-GNU-C.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-GNU-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-GNU-CXX-ABI.cmake b/share/cmake-3.22/Modules/Platform/Windows-GNU-CXX-ABI.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-GNU-CXX-ABI.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-GNU-CXX-ABI.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-GNU-CXX.cmake b/share/cmake-3.22/Modules/Platform/Windows-GNU-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-GNU-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-GNU-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-GNU-Fortran-ABI.cmake b/share/cmake-3.22/Modules/Platform/Windows-GNU-Fortran-ABI.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-GNU-Fortran-ABI.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-GNU-Fortran-ABI.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-GNU-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Windows-GNU-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-GNU-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-GNU-Fortran.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Windows-GNU.cmake b/share/cmake-3.22/Modules/Platform/Windows-GNU.cmake
new file mode 100644
index 0000000..51dc146
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-GNU.cmake
@@ -0,0 +1,202 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__WINDOWS_GNU)
+  return()
+endif()
+set(__WINDOWS_GNU 1)
+
+set(MINGW 1)
+
+set(CMAKE_IMPORT_LIBRARY_PREFIX "lib")
+set(CMAKE_SHARED_LIBRARY_PREFIX "lib")
+set(CMAKE_SHARED_MODULE_PREFIX  "lib")
+set(CMAKE_STATIC_LIBRARY_PREFIX "lib")
+
+set(CMAKE_EXECUTABLE_SUFFIX     ".exe")
+set(CMAKE_IMPORT_LIBRARY_SUFFIX ".dll.a")
+set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")
+set(CMAKE_SHARED_MODULE_SUFFIX  ".dll")
+set(CMAKE_STATIC_LIBRARY_SUFFIX ".a")
+
+set(CMAKE_EXTRA_LINK_EXTENSIONS ".lib") # MinGW can also link to a MS .lib
+
+set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
+set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a" ".lib")
+set(CMAKE_C_STANDARD_LIBRARIES_INIT "-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32")
+set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
+
+set(CMAKE_DL_LIBS "")
+set(CMAKE_LIBRARY_PATH_FLAG "-L")
+set(CMAKE_LINK_LIBRARY_FLAG "-l")
+set(CMAKE_LINK_DEF_FILE_FLAG "") # Empty string: passing the file is enough
+set(CMAKE_LINK_LIBRARY_SUFFIX "")
+
+set(CMAKE_GNULD_IMAGE_VERSION
+  "-Wl,--major-image-version,<TARGET_VERSION_MAJOR>,--minor-image-version,<TARGET_VERSION_MINOR>")
+
+# Check if GNU ld is too old to support @FILE syntax.
+set(__WINDOWS_GNU_LD_RESPONSE 1)
+execute_process(COMMAND ld -v OUTPUT_VARIABLE _help ERROR_VARIABLE _help)
+if("${_help}" MATCHES "GNU ld .* 2\\.1[1-6]")
+  set(__WINDOWS_GNU_LD_RESPONSE 0)
+endif()
+
+macro(__windows_compiler_gnu lang)
+
+  # Create archiving rules to support large object file lists for static libraries.
+  set(CMAKE_${lang}_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
+  set(CMAKE_${lang}_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
+  set(CMAKE_${lang}_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
+
+  # Initialize C link type selection flags.  These flags are used when
+  # building a shared library, shared module, or executable that links
+  # to other libraries to select whether to use the static or shared
+  # versions of the libraries.
+  foreach(type SHARED_LIBRARY SHARED_MODULE EXE)
+    set(CMAKE_${type}_LINK_STATIC_${lang}_FLAGS "-Wl,-Bstatic")
+    set(CMAKE_${type}_LINK_DYNAMIC_${lang}_FLAGS "-Wl,-Bdynamic")
+  endforeach()
+
+  # No -fPIC on Windows
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "")
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "")
+  set(_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER NO)
+  set(CMAKE_${lang}_LINK_OPTIONS_PIE "")
+  set(CMAKE_${lang}_LINK_OPTIONS_NO_PIE "")
+  set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "")
+
+  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_OBJECTS ${__WINDOWS_GNU_LD_RESPONSE})
+  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_LIBRARIES ${__WINDOWS_GNU_LD_RESPONSE})
+  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_INCLUDES 1)
+
+  # We prefer "@" for response files but it is not supported by gcc 3.
+  execute_process(COMMAND ${CMAKE_${lang}_COMPILER} --version OUTPUT_VARIABLE _ver ERROR_VARIABLE _ver)
+  if("${_ver}" MATCHES "\\(GCC\\) 3\\.")
+    if("${lang}" STREQUAL "Fortran")
+      # The GNU Fortran compiler reports an error:
+      #   no input files; unwilling to write output files
+      # when the response file is passed with "-Wl,@".
+      set(CMAKE_Fortran_USE_RESPONSE_FILE_FOR_OBJECTS 0)
+    else()
+      # Use "-Wl,@" to pass the response file to the linker.
+      set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "-Wl,@")
+    endif()
+    # The GNU 3.x compilers do not support response files (only linkers).
+    set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_INCLUDES 0)
+    # Link libraries are generated only for the front-end.
+    set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_LIBRARIES 0)
+  else()
+    # Use "@" to pass the response file to the front-end.
+    set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "@")
+  endif()
+
+  # Binary link rules.
+  set(CMAKE_${lang}_CREATE_SHARED_MODULE
+    "<CMAKE_${lang}_COMPILER> <CMAKE_SHARED_MODULE_${lang}_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_MODULE_CREATE_${lang}_FLAGS> -o <TARGET> ${CMAKE_GNULD_IMAGE_VERSION} <OBJECTS> <LINK_LIBRARIES>")
+  set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
+    "<CMAKE_${lang}_COMPILER> <CMAKE_SHARED_LIBRARY_${lang}_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS> -o <TARGET> -Wl,--out-implib,<TARGET_IMPLIB> ${CMAKE_GNULD_IMAGE_VERSION} <OBJECTS> <LINK_LIBRARIES>")
+  set(CMAKE_${lang}_LINK_EXECUTABLE
+    "<CMAKE_${lang}_COMPILER> <FLAGS> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> -Wl,--out-implib,<TARGET_IMPLIB> ${CMAKE_GNULD_IMAGE_VERSION} <LINK_LIBRARIES>")
+  set(CMAKE_${lang}_CREATE_WIN32_EXE "-mwindows")
+
+  list(APPEND CMAKE_${lang}_ABI_FILES "Platform/Windows-GNU-${lang}-ABI")
+
+  # Support very long lists of object files.
+  # TODO: check for which gcc versions this is still needed, not needed for gcc >= 4.4.
+  # Ninja generator doesn't support this work around.
+  if("${CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG}" STREQUAL "@" AND NOT CMAKE_GENERATOR MATCHES "Ninja")
+    foreach(rule CREATE_SHARED_MODULE CREATE_SHARED_LIBRARY LINK_EXECUTABLE)
+      # The gcc/collect2/ld toolchain does not use response files
+      # internally so we cannot pass long object lists.  Instead pass
+      # the object file list in a response file to the archiver to put
+      # them in a temporary archive.  Hand the archive to the linker.
+      string(REPLACE "<OBJECTS>" "-Wl,--whole-archive <OBJECT_DIR>/objects.a -Wl,--no-whole-archive"
+        CMAKE_${lang}_${rule} "${CMAKE_${lang}_${rule}}")
+      set(CMAKE_${lang}_${rule}
+        "<CMAKE_COMMAND> -E rm -f <OBJECT_DIR>/objects.a"
+        "<CMAKE_AR> qc <OBJECT_DIR>/objects.a <OBJECTS>"
+        "${CMAKE_${lang}_${rule}}"
+        )
+    endforeach()
+  endif()
+
+  if(NOT CMAKE_RC_COMPILER_INIT AND NOT CMAKE_GENERATOR_RC)
+    set(CMAKE_RC_COMPILER_INIT ${_CMAKE_TOOLCHAIN_PREFIX}windres)
+  endif()
+
+  enable_language(RC)
+endmacro()
+
+macro(__windows_compiler_gnu_abi lang)
+  if(CMAKE_NO_GNUtoMS)
+    set(CMAKE_GNUtoMS 0)
+  else()
+    option(CMAKE_GNUtoMS "Convert GNU import libraries to MS format (requires Visual Studio)" OFF)
+  endif()
+
+  if(CMAKE_GNUtoMS AND NOT CMAKE_GNUtoMS_LIB)
+    # Find MS development environment setup script for this architecture.
+    # We need to use the MS Librarian tool (lib.exe).
+    # Find the most recent version available.
+
+    # Query the VS Installer tool for locations of VS 2017 and above.
+    set(_vs_installer_paths "")
+    foreach(vs RANGE 17 15 -1) # change the first number to the largest supported version
+      cmake_host_system_information(RESULT _vs_dir QUERY VS_${vs}_DIR)
+      if(_vs_dir)
+        list(APPEND _vs_installer_paths "${_vs_dir}/VC/Auxiliary/Build")
+      endif()
+    endforeach(vs)
+
+    if("${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
+      find_program(CMAKE_GNUtoMS_VCVARS NAMES vcvars32.bat
+        DOC "Visual Studio vcvars32.bat"
+        PATHS
+        ${_vs_installer_paths}
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\14.0\\Setup\\VC;ProductDir]/bin"
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\12.0\\Setup\\VC;ProductDir]/bin"
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0\\Setup\\VC;ProductDir]/bin"
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VC;ProductDir]/bin"
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0\\Setup\\VC;ProductDir]/bin"
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC;ProductDir]/bin"
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\7.1\\Setup\\VC;ProductDir]/bin"
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\6.0\\Setup\\Microsoft Visual C++;ProductDir]/bin"
+        )
+      set(CMAKE_GNUtoMS_ARCH x86)
+    elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
+      find_program(CMAKE_GNUtoMS_VCVARS NAMES vcvars64.bat vcvarsamd64.bat
+        DOC "Visual Studio vcvarsamd64.bat"
+        PATHS
+        ${_vs_installer_paths}
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\14.0\\Setup\\VC;ProductDir]/bin/amd64"
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\12.0\\Setup\\VC;ProductDir]/bin/amd64"
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0\\Setup\\VC;ProductDir]/bin/amd64"
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VC;ProductDir]/bin/amd64"
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0\\Setup\\VC;ProductDir]/bin/amd64"
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC;ProductDir]/bin/amd64"
+        )
+      set(CMAKE_GNUtoMS_ARCH amd64)
+    endif()
+    unset(_vs_installer_paths)
+    set_property(CACHE CMAKE_GNUtoMS_VCVARS PROPERTY ADVANCED 1)
+    if(CMAKE_GNUtoMS_VCVARS)
+      # Create helper script to run lib.exe from MS environment.
+      string(REPLACE "/" "\\" CMAKE_GNUtoMS_BAT "${CMAKE_GNUtoMS_VCVARS}")
+      set(CMAKE_GNUtoMS_LIB ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeGNUtoMS_lib.bat)
+      configure_file(${CMAKE_ROOT}/Modules/Platform/GNUtoMS_lib.bat.in ${CMAKE_GNUtoMS_LIB})
+    else()
+      message(WARNING "Disabling CMAKE_GNUtoMS option because CMAKE_GNUtoMS_VCVARS is not set.")
+      set(CMAKE_GNUtoMS 0)
+    endif()
+  endif()
+
+  if(CMAKE_GNUtoMS)
+    # Teach CMake how to create a MS import library at link time.
+    set(CMAKE_${lang}_GNUtoMS_RULE " -Wl,--output-def,<TARGET_NAME>.def"
+      "<CMAKE_COMMAND> -Dlib=\"${CMAKE_GNUtoMS_LIB}\" -Ddef=<TARGET_NAME>.def -Ddll=<TARGET> -Dimp=<TARGET_IMPLIB> -P \"${CMAKE_ROOT}/Modules/Platform/GNUtoMS_lib.cmake\""
+      )
+  endif()
+endmacro()
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Intel-ASM.cmake b/share/cmake-3.22/Modules/Platform/Windows-Intel-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-Intel-ASM.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-Intel-ASM.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Windows-Intel-C.cmake b/share/cmake-3.22/Modules/Platform/Windows-Intel-C.cmake
new file mode 100644
index 0000000..152b27c
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-Intel-C.cmake
@@ -0,0 +1,27 @@
+include(Platform/Windows-Intel)
+__windows_compiler_intel(C)
+
+set(CMAKE_DEPFILE_FLAGS_C "-QMMD -QMT <DEP_TARGET> -QMF <DEP_FILE>")
+set(CMAKE_C_DEPFILE_FORMAT gcc)
+
+if(CMAKE_GENERATOR MATCHES "^Ninja")
+  if(_CMAKE_NINJA_VERSION VERSION_LESS 1.9)
+    # This ninja version is too old to support the Intel depfile format.
+    # Fall back to msvc depfile format.
+    set(CMAKE_DEPFILE_FLAGS_C "/showIncludes")
+    set(CMAKE_C_DEPFILE_FORMAT msvc)
+  endif()
+endif()
+
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake")
+  # dependencies are computed by the compiler itself
+  set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
+endif()
+
+if("${CMAKE_SOURCE_DIR}${CMAKE_BINARY_DIR}" MATCHES " ")
+  # The Intel compiler does not properly escape spaces in a depfile.
+  # Fall back to msvc depfile format.
+  set(CMAKE_DEPFILE_FLAGS_C "/showIncludes")
+  set(CMAKE_C_DEPFILE_FORMAT msvc)
+endif()
diff --git a/share/cmake-3.22/Modules/Platform/Windows-Intel-CXX.cmake b/share/cmake-3.22/Modules/Platform/Windows-Intel-CXX.cmake
new file mode 100644
index 0000000..ce33ae1
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-Intel-CXX.cmake
@@ -0,0 +1,28 @@
+include(Platform/Windows-Intel)
+set(_COMPILE_CXX " /TP")
+__windows_compiler_intel(CXX)
+
+set(CMAKE_DEPFILE_FLAGS_CXX "-QMMD -QMT <DEP_TARGET> -QMF <DEP_FILE>")
+set(CMAKE_CXX_DEPFILE_FORMAT gcc)
+
+if(CMAKE_GENERATOR MATCHES "^Ninja")
+  if(_CMAKE_NINJA_VERSION VERSION_LESS 1.9)
+    # This ninja version is too old to support the Intel depfile format.
+    # Fall back to msvc depfile format.
+    set(CMAKE_DEPFILE_FLAGS_CXX "/showIncludes")
+    set(CMAKE_CXX_DEPFILE_FORMAT msvc)
+  endif()
+endif()
+
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake")
+  # dependencies are computed by the compiler itself
+ set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
+endif()
+
+if("${CMAKE_SOURCE_DIR}${CMAKE_BINARY_DIR}" MATCHES " ")
+  # The Intel compiler does not properly escape spaces in a depfile.
+  # Fall back to msvc depfile format.
+  set(CMAKE_DEPFILE_FLAGS_CXX "/showIncludes")
+  set(CMAKE_CXX_DEPFILE_FORMAT msvc)
+endif()
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Intel-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Windows-Intel-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-Intel-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-Intel-Fortran.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Windows-Intel-ISPC.cmake b/share/cmake-3.22/Modules/Platform/Windows-Intel-ISPC.cmake
new file mode 100644
index 0000000..cd26302
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-Intel-ISPC.cmake
@@ -0,0 +1,8 @@
+
+if(CMAKE_VERBOSE_MAKEFILE)
+  set(CMAKE_CL_NOLOGO)
+else()
+  set(CMAKE_CL_NOLOGO "/nologo")
+endif()
+
+set(CMAKE_ISPC_CREATE_STATIC_LIBRARY  "<CMAKE_AR> ${CMAKE_CL_NOLOGO} <LINK_FLAGS> /out:<TARGET> <OBJECTS> ")
diff --git a/share/cmake-3.22/Modules/Platform/Windows-Intel.cmake b/share/cmake-3.22/Modules/Platform/Windows-Intel.cmake
new file mode 100644
index 0000000..26e0cde
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-Intel.cmake
@@ -0,0 +1,28 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__WINDOWS_INTEL)
+  return()
+endif()
+set(__WINDOWS_INTEL 1)
+
+
+if (CMAKE_GENERATOR MATCHES "^Ninja")
+  # retrieve ninja version to enable dependencies configuration
+  # against Ninja capabilities
+  execute_process(COMMAND "${CMAKE_MAKE_PROGRAM}" --version
+    RESULT_VARIABLE _CMAKE_NINJA_RESULT
+    OUTPUT_VARIABLE _CMAKE_NINJA_VERSION
+    ERROR_VARIABLE _CMAKE_NINJA_VERSION)
+  if (NOT _CMAKE_NINJA_RESULT AND _CMAKE_NINJA_VERSION MATCHES "[0-9]+(\\.[0-9]+)*")
+    set (_CMAKE_NINJA_VERSION "${CMAKE_MATCH_0}")
+  endif()
+  unset(_CMAKE_NINJA_RESULT)
+endif()
+
+include(Platform/Windows-MSVC)
+macro(__windows_compiler_intel lang)
+  __windows_compiler_msvc(${lang})
+endmacro()
diff --git a/share/cmake-3.22/Modules/Platform/Windows-IntelLLVM-ASM.cmake b/share/cmake-3.22/Modules/Platform/Windows-IntelLLVM-ASM.cmake
new file mode 100644
index 0000000..f355e49
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-IntelLLVM-ASM.cmake
@@ -0,0 +1,2 @@
+include(Platform/Windows-IntelLLVM)
+__windows_compiler_intel(ASM)
diff --git a/share/cmake-3.22/Modules/Platform/Windows-IntelLLVM-C.cmake b/share/cmake-3.22/Modules/Platform/Windows-IntelLLVM-C.cmake
new file mode 100644
index 0000000..93c3364
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-IntelLLVM-C.cmake
@@ -0,0 +1,2 @@
+include(Platform/Windows-IntelLLVM)
+__windows_compiler_intel(C)
diff --git a/share/cmake-3.22/Modules/Platform/Windows-IntelLLVM-CXX.cmake b/share/cmake-3.22/Modules/Platform/Windows-IntelLLVM-CXX.cmake
new file mode 100644
index 0000000..4667895
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-IntelLLVM-CXX.cmake
@@ -0,0 +1,3 @@
+include(Platform/Windows-IntelLLVM)
+set(_COMPILE_CXX " /TP")
+__windows_compiler_intel(CXX)
diff --git a/share/cmake-3.22/Modules/Platform/Windows-IntelLLVM-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Windows-IntelLLVM-Fortran.cmake
new file mode 100644
index 0000000..06d0a00
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-IntelLLVM-Fortran.cmake
@@ -0,0 +1,44 @@
+include(Platform/Windows-IntelLLVM)
+set(CMAKE_BUILD_TYPE_INIT Debug)
+set(_COMPILE_Fortran " /fpp")
+set(CMAKE_Fortran_MODDIR_FLAG "-module:")
+set(CMAKE_Fortran_STANDARD_LIBRARIES_INIT "user32.lib")
+__windows_compiler_intel(Fortran)
+if(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT)
+  set(_LIBSDLL "")
+  set(_DBGLIBS "")
+  set(_THREADS "")
+else()
+  set(_LIBSDLL " /libs:dll")
+  set(_DBGLIBS " /dbglibs")
+  set(_THREADS " /threads")
+endif()
+
+cmake_policy(GET CMP0092 _cmp0092)
+if(NOT _cmp0092 STREQUAL "NEW")
+  string(APPEND CMAKE_Fortran_FLAGS_INIT " /W1")
+endif()
+unset(_cmp0092)
+
+string(APPEND CMAKE_Fortran_FLAGS_INIT " /nologo /fpp${_LIBSDLL}${_THREADS}")
+string(APPEND CMAKE_Fortran_FLAGS_DEBUG_INIT " /Od /debug:full${_DBGLIBS}")
+string(APPEND CMAKE_Fortran_FLAGS_MINSIZEREL_INIT " /O1 /DNDEBUG")
+string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " /O2 /DNDEBUG")
+string(APPEND CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT " /O2 /debug:full /DNDEBUG")
+unset(_LIBSDLL)
+unset(_DBGLIBS)
+unset(_THREADS)
+
+set(CMAKE_Fortran_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded         -threads -libs:static)
+set(CMAKE_Fortran_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL      -threads -libs:dll)
+set(CMAKE_Fortran_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug    -threads -libs:static -dbglibs)
+set(CMAKE_Fortran_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL -threads -libs:dll    -dbglibs)
+
+# Intel Fortran for Windows supports single-threaded RTL but it is
+# not implemented by the Visual Studio integration.
+if(NOT CMAKE_GENERATOR MATCHES "Visual Studio")
+  set(CMAKE_Fortran_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_SingleThreaded                 -libs:static)
+  set(CMAKE_Fortran_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_SingleThreadedDLL              -libs:dll)
+  set(CMAKE_Fortran_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_SingleThreadedDebug            -libs:static -dbglibs)
+  set(CMAKE_Fortran_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_SingleThreadedDebugDLL         -libs:dll    -dbglibs)
+endif()
diff --git a/share/cmake-3.22/Modules/Platform/Windows-IntelLLVM.cmake b/share/cmake-3.22/Modules/Platform/Windows-IntelLLVM.cmake
new file mode 100644
index 0000000..b9ea037
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-IntelLLVM.cmake
@@ -0,0 +1,17 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__WINDOWS_INTEL)
+  return()
+endif()
+set(__WINDOWS_INTEL 1)
+
+include(Platform/Windows-MSVC)
+macro(__windows_compiler_intel lang)
+  __windows_compiler_msvc(${lang})
+
+  set(CMAKE_DEPFILE_FLAGS_${lang} "-QMMD -QMT <DEP_TARGET> -QMF <DEP_FILE>")
+  set(CMAKE_${lang}_DEPFILE_FORMAT gcc)
+endmacro()
diff --git a/share/cmake-3.22/Modules/Platform/Windows-MSVC-C.cmake b/share/cmake-3.22/Modules/Platform/Windows-MSVC-C.cmake
new file mode 100644
index 0000000..67b6827
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-MSVC-C.cmake
@@ -0,0 +1,12 @@
+include(Platform/Windows-MSVC)
+if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 18.0)
+  set(_FS_C " /FS")
+endif()
+__windows_compiler_msvc(C)
+
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+    AND CMAKE_DEPFILE_FLAGS_C)
+  # dependencies are computed by the compiler itself
+  set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
+endif()
diff --git a/share/cmake-3.22/Modules/Platform/Windows-MSVC-CXX.cmake b/share/cmake-3.22/Modules/Platform/Windows-MSVC-CXX.cmake
new file mode 100644
index 0000000..6fea617
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-MSVC-CXX.cmake
@@ -0,0 +1,13 @@
+include(Platform/Windows-MSVC)
+set(_COMPILE_CXX " /TP")
+if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0)
+  set(_FS_CXX " /FS")
+endif()
+__windows_compiler_msvc(CXX)
+
+if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
+    AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
+    AND CMAKE_DEPFILE_FLAGS_CXX)
+  # dependencies are computed by the compiler itself
+  set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
+endif()
diff --git a/share/cmake-3.22/Modules/Platform/Windows-MSVC.cmake b/share/cmake-3.22/Modules/Platform/Windows-MSVC.cmake
new file mode 100644
index 0000000..7d602c3
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-MSVC.cmake
@@ -0,0 +1,484 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__WINDOWS_MSVC)
+  return()
+endif()
+set(__WINDOWS_MSVC 1)
+
+set(CMAKE_LIBRARY_PATH_FLAG "-LIBPATH:")
+set(CMAKE_LINK_LIBRARY_FLAG "")
+set(MSVC 1)
+
+# hack: if a new cmake (which uses CMAKE_LINKER) runs on an old build tree
+# (where link was hardcoded) and where CMAKE_LINKER isn't in the cache
+# and still cmake didn't fail in CMakeFindBinUtils.cmake (because it isn't rerun)
+# hardcode CMAKE_LINKER here to link, so it behaves as it did before, Alex
+if(NOT DEFINED CMAKE_LINKER)
+  set(CMAKE_LINKER link)
+endif()
+
+if(CMAKE_VERBOSE_MAKEFILE)
+  set(CMAKE_CL_NOLOGO)
+else()
+  set(CMAKE_CL_NOLOGO "/nologo")
+endif()
+
+if(CMAKE_SYSTEM_NAME STREQUAL "WindowsCE")
+  set(_PLATFORM_LINK_FLAGS " /subsystem:windowsce")
+else()
+  set(_PLATFORM_LINK_FLAGS "")
+endif()
+
+set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 1)
+if(NOT CMAKE_NO_BUILD_TYPE AND CMAKE_GENERATOR MATCHES "Visual Studio")
+  set (CMAKE_NO_BUILD_TYPE 1)
+endif()
+
+if("${CMAKE_GENERATOR}" MATCHES "Visual Studio")
+  set(MSVC_IDE 1)
+else()
+  set(MSVC_IDE 0)
+endif()
+
+if(NOT MSVC_VERSION)
+  if("x${CMAKE_C_COMPILER_ID}" STREQUAL "xMSVC")
+    set(_compiler_version ${CMAKE_C_COMPILER_VERSION})
+  elseif("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC")
+    set(_compiler_version ${CMAKE_CXX_COMPILER_VERSION})
+  elseif(CMAKE_C_SIMULATE_VERSION)
+    set(_compiler_version ${CMAKE_C_SIMULATE_VERSION})
+  elseif(CMAKE_CXX_SIMULATE_VERSION)
+    set(_compiler_version ${CMAKE_CXX_SIMULATE_VERSION})
+  elseif(CMAKE_Fortran_SIMULATE_VERSION)
+    set(_compiler_version ${CMAKE_Fortran_SIMULATE_VERSION})
+  elseif(CMAKE_CUDA_SIMULATE_VERSION)
+    set(_compiler_version ${CMAKE_CUDA_SIMULATE_VERSION})
+  elseif(CMAKE_C_COMPILER_VERSION)
+    set(_compiler_version ${CMAKE_C_COMPILER_VERSION})
+  else()
+    set(_compiler_version ${CMAKE_CXX_COMPILER_VERSION})
+  endif()
+  if("${_compiler_version}" MATCHES "^([0-9]+)\\.([0-9]+)")
+    math(EXPR MSVC_VERSION "${CMAKE_MATCH_1}*100 + ${CMAKE_MATCH_2}")
+  else()
+    message(FATAL_ERROR "MSVC compiler version not detected properly: ${_compiler_version}")
+  endif()
+
+  if(MSVC_VERSION GREATER_EQUAL 1930)
+    # VS 2022 or greater
+    set(MSVC_TOOLSET_VERSION 143)
+  elseif(MSVC_VERSION GREATER_EQUAL 1920)
+    # VS 2019 or greater
+    set(MSVC_TOOLSET_VERSION 142)
+  elseif(MSVC_VERSION GREATER_EQUAL 1910)
+    # VS 2017 or greater
+    set(MSVC_TOOLSET_VERSION 141)
+  elseif(MSVC_VERSION EQUAL 1900)
+    # VS 2015
+    set(MSVC_TOOLSET_VERSION 140)
+  elseif(MSVC_VERSION EQUAL 1800)
+    # VS 2013
+    set(MSVC_TOOLSET_VERSION 120)
+  elseif(MSVC_VERSION EQUAL 1700)
+    # VS 2012
+    set(MSVC_TOOLSET_VERSION 110)
+  elseif(MSVC_VERSION EQUAL 1600)
+    # VS 2010
+    set(MSVC_TOOLSET_VERSION 100)
+  elseif(MSVC_VERSION EQUAL 1500)
+    # VS 2008
+    set(MSVC_TOOLSET_VERSION 90)
+  elseif(MSVC_VERSION EQUAL 1400)
+    # VS 2005
+    set(MSVC_TOOLSET_VERSION 80)
+  else()
+    # We don't support MSVC_TOOLSET_VERSION for earlier compiler.
+  endif()
+
+  set(MSVC10)
+  set(MSVC11)
+  set(MSVC12)
+  set(MSVC14)
+  set(MSVC60)
+  set(MSVC70)
+  set(MSVC71)
+  set(MSVC80)
+  set(MSVC90)
+  set(CMAKE_COMPILER_2005)
+  set(CMAKE_COMPILER_SUPPORTS_PDBTYPE)
+  if(NOT "${_compiler_version}" VERSION_LESS 20)
+    # We no longer provide per-version variables.  Use MSVC_VERSION instead.
+  elseif(NOT "${_compiler_version}" VERSION_LESS 19)
+    set(MSVC14 1)
+  elseif(NOT "${_compiler_version}" VERSION_LESS 18)
+    set(MSVC12 1)
+  elseif(NOT "${_compiler_version}" VERSION_LESS 17)
+    set(MSVC11 1)
+  elseif(NOT  "${_compiler_version}" VERSION_LESS 16)
+    set(MSVC10 1)
+  elseif(NOT  "${_compiler_version}" VERSION_LESS 15)
+    set(MSVC90 1)
+  elseif(NOT  "${_compiler_version}" VERSION_LESS 14)
+    set(MSVC80 1)
+    set(CMAKE_COMPILER_2005 1)
+  elseif(NOT  "${_compiler_version}" VERSION_LESS 13.10)
+    set(MSVC71 1)
+  elseif(NOT  "${_compiler_version}" VERSION_LESS 13)
+    set(MSVC70 1)
+  else()
+    set(MSVC60 1)
+    set(CMAKE_COMPILER_SUPPORTS_PDBTYPE 1)
+  endif()
+endif()
+
+if(MSVC_C_ARCHITECTURE_ID MATCHES 64 OR MSVC_CXX_ARCHITECTURE_ID MATCHES 64)
+  set(CMAKE_CL_64 1)
+else()
+  set(CMAKE_CL_64 0)
+endif()
+if(CMAKE_FORCE_WIN64 OR CMAKE_FORCE_IA64)
+  set(CMAKE_CL_64 1)
+endif()
+
+if("${MSVC_VERSION}" GREATER 1599)
+  set(MSVC_INCREMENTAL_DEFAULT ON)
+endif()
+
+# default to Debug builds
+set(CMAKE_BUILD_TYPE_INIT Debug)
+
+# Compute an architecture family from the architecture id.
+foreach(lang C CXX)
+  set(_MSVC_${lang}_ARCHITECTURE_FAMILY "${MSVC_${lang}_ARCHITECTURE_ID}")
+  if(_MSVC_${lang}_ARCHITECTURE_FAMILY MATCHES "^ARM64EC")
+    set(_MSVC_${lang}_ARCHITECTURE_FAMILY "ARM64EC")
+  elseif(_MSVC_${lang}_ARCHITECTURE_FAMILY MATCHES "^ARM64")
+    set(_MSVC_${lang}_ARCHITECTURE_FAMILY "ARM64")
+  elseif(_MSVC_${lang}_ARCHITECTURE_FAMILY MATCHES "^ARM")
+    set(_MSVC_${lang}_ARCHITECTURE_FAMILY "ARM")
+  elseif(_MSVC_${lang}_ARCHITECTURE_FAMILY MATCHES "^SH")
+    set(_MSVC_${lang}_ARCHITECTURE_FAMILY "SHx")
+  endif()
+endforeach()
+
+cmake_policy(GET CMP0117 __WINDOWS_MSVC_CMP0117)
+if(__WINDOWS_MSVC_CMP0117 STREQUAL "NEW")
+  set(_GR "")
+else()
+  set(_GR " /GR")
+endif()
+unset(__WINDOWS_MSVC_CMP0117)
+
+if(WINCE)
+  foreach(lang C CXX)
+    string(TOUPPER "${_MSVC_${lang}_ARCHITECTURE_FAMILY}" _MSVC_${lang}_ARCHITECTURE_FAMILY_UPPER)
+  endforeach()
+
+  if("${CMAKE_SYSTEM_VERSION}" MATCHES "^([0-9]+)\\.([0-9]+)")
+    math(EXPR _CE_VERSION "${CMAKE_MATCH_1}*100 + ${CMAKE_MATCH_2}")
+  elseif("${CMAKE_SYSTEM_VERSION}" STREQUAL "")
+    set(_CE_VERSION "500")
+  else()
+    message(FATAL_ERROR "Invalid Windows CE version: ${CMAKE_SYSTEM_VERSION}")
+  endif()
+
+  set(_PLATFORM_DEFINES "/D_WIN32_WCE=0x${_CE_VERSION} /DUNDER_CE /DWINCE")
+  set(_PLATFORM_DEFINES_C " /D${_MSVC_C_ARCHITECTURE_FAMILY} /D_${_MSVC_C_ARCHITECTURE_FAMILY_UPPER}_")
+  set(_PLATFORM_DEFINES_CXX " /D${_MSVC_CXX_ARCHITECTURE_FAMILY} /D_${_MSVC_CXX_ARCHITECTURE_FAMILY_UPPER}_")
+
+  set(_RTC1 "")
+  set(_FLAGS_C "")
+  set(_FLAGS_CXX "${_GR} /EHsc")
+
+  foreach(lang C CXX)
+    if(_MSVC_${lang}_ARCHITECTURE_FAMILY STREQUAL "ARM")
+      string(APPEND _PLATFORM_DEFINES_${lang} " /D${MSVC_${lang}_ARCHITECTURE_ID}")
+      if(MSVC_${lang}_ARCHITECTURE_ID MATCHES "^ARMV([45])I$")
+        string(APPEND _FLAGS_${lang} " /QRarch${CMAKE_MATCH_1}T")
+      endif()
+    endif()
+  endforeach()
+
+  set(CMAKE_C_STANDARD_LIBRARIES_INIT "coredll.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib")
+  foreach(t EXE SHARED MODULE)
+    string(APPEND CMAKE_${t}_LINKER_FLAGS_INIT " /NODEFAULTLIB:libc.lib /NODEFAULTLIB:oldnames.lib")
+  endforeach()
+
+  if (MSVC_VERSION LESS 1600)
+    string(APPEND CMAKE_C_STANDARD_LIBRARIES_INIT " corelibc.lib")
+  endif ()
+elseif(WINDOWS_PHONE OR WINDOWS_STORE)
+  set(_PLATFORM_DEFINES "/DWIN32")
+  set(_FLAGS_C " /DUNICODE /D_UNICODE")
+  set(_FLAGS_CXX " /DUNICODE /D_UNICODE${_GR} /EHsc")
+  if(WINDOWS_STORE AND MSVC_VERSION GREATER 1899)
+    set(CMAKE_C_STANDARD_LIBRARIES_INIT "WindowsApp.lib")
+  elseif(WINDOWS_PHONE)
+    set(CMAKE_C_STANDARD_LIBRARIES_INIT "WindowsPhoneCore.lib RuntimeObject.lib PhoneAppModelHost.lib")
+  elseif(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM" OR _MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM" OR _MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM64" OR _MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM64")
+    set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib")
+  else()
+    set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib")
+  endif()
+else()
+  set(_PLATFORM_DEFINES "/DWIN32")
+  if((_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM64EC") OR (_MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM64EC"))
+    set(_PLATFORM_DEFINES "${_PLATFORM_DEFINES} /D_AMD64_ /DAMD64 /D_ARM64EC_ /DARM64EC /D_ARM64EC_WORKAROUND_")
+  endif()
+  if(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM" OR _MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM")
+    set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib")
+  elseif(MSVC_VERSION GREATER 1310)
+    if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "v[0-9]+_clang_.*")
+      # Clang/C2 in MSVC14 Update 1 seems to not support -fsantinize (yet?)
+      # set(_RTC1 "-fsantinize=memory,safe-stack")
+      set(_FLAGS_CXX " -frtti -fexceptions")
+    else()
+      set(_RTC1 "/RTC1")
+      set(_FLAGS_CXX "${_GR} /EHsc")
+    endif()
+    set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib")
+  else()
+    set(_RTC1 "/GZ")
+    set(_FLAGS_CXX "${_GR} /GX")
+    set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib")
+  endif()
+
+  if(MSVC_VERSION LESS 1310)
+    set(_FLAGS_C   " /Zm1000${_FLAGS_C}")
+    set(_FLAGS_CXX " /Zm1000${_FLAGS_CXX}")
+  endif()
+endif()
+
+unset(_GR)
+
+set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
+
+# executable linker flags
+set (CMAKE_LINK_DEF_FILE_FLAG "/DEF:")
+# set the machine type
+if(MSVC_C_ARCHITECTURE_ID)
+  if(MSVC_C_ARCHITECTURE_ID MATCHES "^ARMV.I")
+    set(_MACHINE_ARCH_FLAG "/machine:THUMB")
+  elseif(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM64")
+    set(_MACHINE_ARCH_FLAG "/machine:ARM64")
+  elseif(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM64EC")
+    set(_MACHINE_ARCH_FLAG "/machine:ARM64EC")
+  elseif(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM")
+    set(_MACHINE_ARCH_FLAG "/machine:ARM")
+  else()
+    set(_MACHINE_ARCH_FLAG "/machine:${MSVC_C_ARCHITECTURE_ID}")
+  endif()
+elseif(MSVC_CXX_ARCHITECTURE_ID)
+  if(MSVC_CXX_ARCHITECTURE_ID MATCHES "^ARMV.I")
+    set(_MACHINE_ARCH_FLAG "/machine:THUMB")
+  elseif(_MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM64")
+    set(_MACHINE_ARCH_FLAG "/machine:ARM64")
+  elseif(_MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM64EC")
+    set(_MACHINE_ARCH_FLAG "/machine:ARM64EC")
+  elseif(_MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM")
+    set(_MACHINE_ARCH_FLAG "/machine:ARM")
+  else()
+    set(_MACHINE_ARCH_FLAG "/machine:${MSVC_CXX_ARCHITECTURE_ID}")
+  endif()
+elseif(MSVC_Fortran_ARCHITECTURE_ID)
+  set(_MACHINE_ARCH_FLAG "/machine:${MSVC_Fortran_ARCHITECTURE_ID}")
+endif()
+
+# add /debug and /INCREMENTAL:YES to DEBUG and RELWITHDEBINFO also add pdbtype
+# on versions that support it
+set( MSVC_INCREMENTAL_YES_FLAG "")
+if(NOT WINDOWS_PHONE AND NOT WINDOWS_STORE)
+  if(NOT MSVC_INCREMENTAL_DEFAULT)
+    set( MSVC_INCREMENTAL_YES_FLAG "/INCREMENTAL:YES")
+  else()
+    set(  MSVC_INCREMENTAL_YES_FLAG "/INCREMENTAL" )
+  endif()
+endif()
+
+foreach(t EXE SHARED MODULE)
+  string(APPEND CMAKE_${t}_LINKER_FLAGS_INIT " ${_MACHINE_ARCH_FLAG}")
+  if (CMAKE_COMPILER_SUPPORTS_PDBTYPE)
+    string(APPEND CMAKE_${t}_LINKER_FLAGS_DEBUG_INIT " /debug /pdbtype:sept ${MSVC_INCREMENTAL_YES_FLAG}")
+    string(APPEND CMAKE_${t}_LINKER_FLAGS_RELWITHDEBINFO_INIT " /debug /pdbtype:sept ${MSVC_INCREMENTAL_YES_FLAG}")
+  else ()
+    string(APPEND CMAKE_${t}_LINKER_FLAGS_DEBUG_INIT " /debug ${MSVC_INCREMENTAL_YES_FLAG}")
+    string(APPEND CMAKE_${t}_LINKER_FLAGS_RELWITHDEBINFO_INIT " /debug ${MSVC_INCREMENTAL_YES_FLAG}")
+  endif ()
+  # for release and minsize release default to no incremental linking
+  string(APPEND CMAKE_${t}_LINKER_FLAGS_MINSIZEREL_INIT " /INCREMENTAL:NO")
+  string(APPEND CMAKE_${t}_LINKER_FLAGS_RELEASE_INIT " /INCREMENTAL:NO")
+endforeach()
+
+if((_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM64EC") OR (_MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM64EC"))
+  string(APPEND CMAKE_STATIC_LINKER_FLAGS_INIT " /machine:ARM64X")
+else()
+  string(APPEND CMAKE_STATIC_LINKER_FLAGS_INIT " ${_MACHINE_ARCH_FLAG}")
+endif()
+unset(_MACHINE_ARCH_FLAG)
+
+cmake_policy(GET CMP0091 __WINDOWS_MSVC_CMP0091)
+if(__WINDOWS_MSVC_CMP0091 STREQUAL "NEW")
+  set(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
+else()
+  set(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT "")
+endif()
+unset(__WINDOWS_MSVC_CMP0091)
+
+macro(__windows_compiler_msvc lang)
+  if(NOT MSVC_VERSION LESS 1400)
+    # for 2005 make sure the manifest is put in the dll with mt
+    set(_CMAKE_VS_LINK_DLL "<CMAKE_COMMAND> -E vs_link_dll --intdir=<OBJECT_DIR> --rc=<CMAKE_RC_COMPILER> --mt=<CMAKE_MT> --manifests <MANIFESTS> -- ")
+    set(_CMAKE_VS_LINK_EXE "<CMAKE_COMMAND> -E vs_link_exe --intdir=<OBJECT_DIR> --rc=<CMAKE_RC_COMPILER> --mt=<CMAKE_MT> --manifests <MANIFESTS> -- ")
+  endif()
+  set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
+    "${_CMAKE_VS_LINK_DLL}<CMAKE_LINKER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /dll /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR>${_PLATFORM_LINK_FLAGS} <LINK_FLAGS> <LINK_LIBRARIES> ${CMAKE_END_TEMP_FILE}")
+
+  set(CMAKE_${lang}_CREATE_SHARED_MODULE ${CMAKE_${lang}_CREATE_SHARED_LIBRARY})
+  set(CMAKE_${lang}_CREATE_STATIC_LIBRARY  "<CMAKE_AR> ${CMAKE_CL_NOLOGO} <LINK_FLAGS> /out:<TARGET> <OBJECTS> ")
+
+  set(CMAKE_${lang}_COMPILE_OBJECT
+    "<CMAKE_${lang}_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} <DEFINES> <INCLUDES> <FLAGS> /Fo<OBJECT> /Fd<TARGET_COMPILE_PDB>${_FS_${lang}} -c <SOURCE>${CMAKE_END_TEMP_FILE}")
+  set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE
+    "<CMAKE_${lang}_COMPILER> > <PREPROCESSED_SOURCE> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE>${CMAKE_END_TEMP_FILE}")
+  set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE
+    "<CMAKE_${lang}_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} <DEFINES> <INCLUDES> <FLAGS> /FoNUL /FAs /Fa<ASSEMBLY_SOURCE> /c <SOURCE>${CMAKE_END_TEMP_FILE}")
+
+  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_OBJECTS 1)
+  set(CMAKE_${lang}_LINK_EXECUTABLE
+    "${_CMAKE_VS_LINK_EXE}<CMAKE_LINKER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR>${_PLATFORM_LINK_FLAGS} <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES>${CMAKE_END_TEMP_FILE}")
+
+  if(CMAKE_SYSTEM_NAME STREQUAL "WindowsCE")
+    set(CMAKE_${lang}_CREATE_WIN32_EXE "/entry:WinMainCRTStartup")
+    set(CMAKE_${lang}_CREATE_CONSOLE_EXE "/entry:mainACRTStartup")
+  else()
+    set(CMAKE_${lang}_CREATE_WIN32_EXE "/subsystem:windows")
+    set(CMAKE_${lang}_CREATE_CONSOLE_EXE "/subsystem:console")
+  endif()
+
+  set(CMAKE_PCH_EXTENSION .pch)
+  set(CMAKE_LINK_PCH ON)
+  if (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang")
+    set(CMAKE_PCH_PROLOGUE "#pragma clang system_header")
+
+    # macOS paths usually start with /Users/*. Unfortunately, clang-cl interprets
+    # paths starting with /U as macro undefines, so we need to put a -- before the
+    # input file path to force it to be treated as a path.
+    string(REPLACE "-c <SOURCE>" "-c -- <SOURCE>" CMAKE_${lang}_COMPILE_OBJECT "${CMAKE_${lang}_COMPILE_OBJECT}")
+    string(REPLACE "-c <SOURCE>" "-c -- <SOURCE>" CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "${CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE}")
+    string(REPLACE "-c <SOURCE>" "-c -- <SOURCE>" CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "${CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE}")
+
+  elseif(MSVC_VERSION GREATER_EQUAL 1913)
+    # At least MSVC toolet 14.13 from VS 2017 15.6
+    set(CMAKE_PCH_PROLOGUE "#pragma system_header")
+  endif()
+  if (NOT ${CMAKE_${lang}_COMPILER_ID} STREQUAL "Clang")
+    set(CMAKE_PCH_COPY_COMPILE_PDB ON)
+  endif()
+  set(CMAKE_${lang}_COMPILE_OPTIONS_USE_PCH /Yu<PCH_HEADER> /Fp<PCH_FILE> /FI<PCH_HEADER>)
+  set(CMAKE_${lang}_COMPILE_OPTIONS_CREATE_PCH /Yc<PCH_HEADER> /Fp<PCH_FILE> /FI<PCH_HEADER>)
+
+  if("x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xMSVC")
+    set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
+    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
+
+    set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "/GL")
+    set(CMAKE_${lang}_LINK_OPTIONS_IPO "/INCREMENTAL:NO" "/LTCG")
+    string(REPLACE "<LINK_FLAGS> " "/LTCG <LINK_FLAGS> "
+      CMAKE_${lang}_CREATE_STATIC_LIBRARY_IPO "${CMAKE_${lang}_CREATE_STATIC_LIBRARY}")
+  elseif("x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xClang" OR
+         "x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xFlang")
+    set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
+    set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
+
+    # '-flto=thin' available since Clang 3.9 and Xcode 8
+    # * http://clang.llvm.org/docs/ThinLTO.html#clang-llvm
+    # * https://trac.macports.org/wiki/XcodeVersionInfo
+    set(_CMAKE_LTO_THIN TRUE)
+    if(CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.9)
+      set(_CMAKE_LTO_THIN FALSE)
+    endif()
+
+    if(_CMAKE_LTO_THIN)
+      set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto=thin")
+    else()
+      set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto")
+    endif()
+  endif()
+
+  if("x${lang}" STREQUAL "xC" OR
+      "x${lang}" STREQUAL "xCXX")
+    if(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT)
+      set(_MDd "")
+      set(_MD "")
+    else()
+      set(_MDd " /MDd")
+      set(_MD " /MD")
+    endif()
+
+    cmake_policy(GET CMP0092 _cmp0092)
+    if(_cmp0092 STREQUAL "NEW")
+      set(_W3 "")
+      set(_Wall "")
+    else()
+      set(_W3 " /W3")
+      set(_Wall " -Wall")
+    endif()
+    unset(_cmp0092)
+
+    if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "v[0-9]+_clang_.*")
+      # note: MSVC 14 2015 Update 1 sets -fno-ms-compatibility by default, but this does not allow one to compile many projects
+      # that include MS's own headers. CMake itself is affected project too.
+      string(APPEND CMAKE_${lang}_FLAGS_INIT " ${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_${lang}} -fms-extensions -fms-compatibility -D_WINDOWS${_Wall}${_FLAGS_${lang}}")
+      string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT "${_MDd} -gline-tables-only -fno-inline -O0 ${_RTC1}")
+      string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT "${_MD} -O2 -DNDEBUG")
+      string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "${_MD} -gline-tables-only -O2 -fno-inline -DNDEBUG")
+      string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "${_MD} -DNDEBUG") # TODO: Add '-Os' once VS generator maps it properly for Clang
+    else()
+      string(APPEND CMAKE_${lang}_FLAGS_INIT " ${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_${lang}} /D_WINDOWS${_W3}${_FLAGS_${lang}}")
+      string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT "${_MDd} /Zi /Ob0 /Od ${_RTC1}")
+      string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT "${_MD} /O2 /Ob2 /DNDEBUG")
+      string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "${_MD} /Zi /O2 /Ob1 /DNDEBUG")
+      string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "${_MD} /O1 /Ob1 /DNDEBUG")
+    endif()
+    unset(_Wall)
+    unset(_W3)
+    unset(_MDd)
+    unset(_MD)
+
+    set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded         -MT)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL      -MD)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug    -MTd)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL -MDd)
+  endif()
+  set(CMAKE_${lang}_LINKER_SUPPORTS_PDB ON)
+
+  __windows_compiler_msvc_enable_rc("${_PLATFORM_DEFINES} ${_PLATFORM_DEFINES_${lang}}")
+
+  # define generic information about compiler dependencies
+  if (MSVC_VERSION GREATER 1300)
+    set(CMAKE_DEPFILE_FLAGS_${lang} "/showIncludes")
+    set(CMAKE_${lang}_DEPFILE_FORMAT msvc)
+  endif()
+endmacro()
+
+macro(__windows_compiler_msvc_enable_rc flags)
+  if(NOT CMAKE_RC_COMPILER_INIT)
+    set(CMAKE_RC_COMPILER_INIT rc)
+  endif()
+  if(NOT CMAKE_RC_FLAGS_INIT)
+    # llvm-rc fails when flags are specified with /D and no space after
+    string(REPLACE " /D" " -D" fixed_flags " ${flags}")
+    string(APPEND CMAKE_RC_FLAGS_INIT " ${fixed_flags}")
+  endif()
+  if(NOT CMAKE_RC_FLAGS_DEBUG_INIT)
+    string(APPEND CMAKE_RC_FLAGS_DEBUG_INIT " -D_DEBUG")
+  endif()
+
+  enable_language(RC)
+  if(NOT DEFINED CMAKE_NINJA_CMCLDEPS_RC)
+    set(CMAKE_NINJA_CMCLDEPS_RC 1)
+  endif()
+endmacro()
diff --git a/share/cmake-3.22/Modules/Platform/Windows-NVIDIA-CUDA.cmake b/share/cmake-3.22/Modules/Platform/Windows-NVIDIA-CUDA.cmake
new file mode 100644
index 0000000..b83932e
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-NVIDIA-CUDA.cmake
@@ -0,0 +1,88 @@
+include(Platform/Windows-MSVC)
+
+set(CMAKE_CUDA_COMPILE_PTX_COMPILATION
+  "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} -ptx <SOURCE> -o <OBJECT> -Xcompiler=-Fd<TARGET_COMPILE_PDB>,-FS")
+set(CMAKE_CUDA_COMPILE_SEPARABLE_COMPILATION
+  "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} -dc <SOURCE> -o <OBJECT> -Xcompiler=-Fd<TARGET_COMPILE_PDB>,-FS")
+set(CMAKE_CUDA_COMPILE_WHOLE_COMPILATION
+  "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} -c <SOURCE> -o <OBJECT> -Xcompiler=-Fd<TARGET_COMPILE_PDB>,-FS")
+
+set(__IMPLICIT_LINKS)
+foreach(dir ${CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES})
+  string(APPEND __IMPLICIT_LINKS " -LIBPATH:\"${dir}\"")
+endforeach()
+foreach(lib ${CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES})
+  string(APPEND __IMPLICIT_LINKS " \"${lib}\"")
+endforeach()
+set(CMAKE_CUDA_LINK_EXECUTABLE
+   "<CMAKE_CUDA_HOST_LINK_LAUNCHER> <LINK_FLAGS> <OBJECTS> /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> <LINK_LIBRARIES>${__IMPLICIT_LINKS}")
+
+set(_CMAKE_VS_LINK_DLL "<CMAKE_COMMAND> -E vs_link_dll --intdir=<OBJECT_DIR> --rc=<CMAKE_RC_COMPILER> --mt=<CMAKE_MT> --manifests <MANIFESTS> -- ")
+set(_CMAKE_VS_LINK_EXE "<CMAKE_COMMAND> -E vs_link_exe --intdir=<OBJECT_DIR> --rc=<CMAKE_RC_COMPILER> --mt=<CMAKE_MT> --manifests <MANIFESTS> -- ")
+set(CMAKE_CUDA_CREATE_SHARED_LIBRARY
+  "${_CMAKE_VS_LINK_DLL}<CMAKE_LINKER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /dll /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR>${_PLATFORM_LINK_FLAGS} <LINK_FLAGS> <LINK_LIBRARIES>${__IMPLICIT_LINKS} ${CMAKE_END_TEMP_FILE}")
+
+set(CMAKE_CUDA_CREATE_SHARED_MODULE ${CMAKE_CUDA_CREATE_SHARED_LIBRARY})
+set(CMAKE_CUDA_CREATE_STATIC_LIBRARY  "<CMAKE_AR> ${CMAKE_CL_NOLOGO} <LINK_FLAGS> /out:<TARGET> <OBJECTS> ")
+set(CMAKE_CUDA_LINKER_SUPPORTS_PDB ON)
+set(CMAKE_CUDA_LINK_EXECUTABLE
+  "${_CMAKE_VS_LINK_EXE}<CMAKE_LINKER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR>${_PLATFORM_LINK_FLAGS} <LINK_FLAGS> <LINK_LIBRARIES>${__IMPLICIT_LINKS} ${CMAKE_END_TEMP_FILE}")
+unset(_CMAKE_VS_LINK_DLL)
+unset(_CMAKE_VS_LINK_EXE)
+
+
+# Add implicit host link directories that contain device libraries
+# to the device link line.
+set(__IMPLICIT_DLINK_DIRS ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES})
+if(__IMPLICIT_DLINK_DIRS)
+  list(REMOVE_ITEM __IMPLICIT_DLINK_DIRS ${CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES})
+endif()
+set(__IMPLICIT_DLINK_FLAGS)
+foreach(dir ${__IMPLICIT_DLINK_DIRS})
+  if(EXISTS "${dir}/curand_static.lib")
+    string(APPEND __IMPLICIT_DLINK_FLAGS " -L\"${dir}\"")
+  endif()
+endforeach()
+unset(__IMPLICIT_DLINK_DIRS)
+
+set(CMAKE_CUDA_DEVICE_LINK_LIBRARY
+  "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> ${_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS} -shared -dlink <OBJECTS> -o <TARGET> <LINK_LIBRARIES> -Xcompiler=-Fd<TARGET_COMPILE_PDB>,-FS${__IMPLICIT_DLINK_FLAGS}")
+set(CMAKE_CUDA_DEVICE_LINK_EXECUTABLE
+  "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> ${_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS} -shared -dlink <OBJECTS> -o <TARGET> <LINK_LIBRARIES> -Xcompiler=-Fd<TARGET_COMPILE_PDB>,-FS${__IMPLICIT_DLINK_FLAGS}")
+unset(__IMPLICIT_DLINK_FLAGS)
+
+string(REPLACE "/D" "-D" _PLATFORM_DEFINES_CUDA "${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_CXX}")
+
+if(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT)
+  set(_MDd "")
+  set(_MD "")
+else()
+  set(_MDd "-MDd ")
+  set(_MD "-MD ")
+endif()
+
+cmake_policy(GET CMP0092 _cmp0092)
+if(_cmp0092 STREQUAL "NEW")
+  set(_W3 "")
+else()
+  set(_W3 "/W3")
+endif()
+unset(_cmp0092)
+
+string(APPEND CMAKE_CUDA_FLAGS_INIT " ${PLATFORM_DEFINES_CUDA} -D_WINDOWS -Xcompiler=\"${_W3}${_FLAGS_CXX}\"")
+string(APPEND CMAKE_CUDA_FLAGS_DEBUG_INIT " -Xcompiler=\"${_MDd}-Zi -Ob0 -Od ${_RTC1}\"")
+string(APPEND CMAKE_CUDA_FLAGS_RELEASE_INIT " -Xcompiler=\"${_MD}-O2 -Ob2\" -DNDEBUG")
+string(APPEND CMAKE_CUDA_FLAGS_RELWITHDEBINFO_INIT " -Xcompiler=\"${_MD}-Zi -O2 -Ob1\" -DNDEBUG")
+string(APPEND CMAKE_CUDA_FLAGS_MINSIZEREL_INIT " -Xcompiler=\"${_MD}-O1 -Ob1\" -DNDEBUG")
+unset(_W3)
+unset(_MDd)
+unset(_MD)
+
+set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded         -Xcompiler=-MT)
+set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL      -Xcompiler=-MD)
+set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug    -Xcompiler=-MTd)
+set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL -Xcompiler=-MDd)
+
+set(CMAKE_CUDA_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
+
+__windows_compiler_msvc_enable_rc("${_PLATFORM_DEFINES} ${_PLATFORM_DEFINES_CXX}")
diff --git a/share/cmake-3.22/Modules/Platform/Windows-OpenWatcom-C.cmake b/share/cmake-3.22/Modules/Platform/Windows-OpenWatcom-C.cmake
new file mode 100644
index 0000000..b82a4cb
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-OpenWatcom-C.cmake
@@ -0,0 +1,2 @@
+include(Platform/Windows-OpenWatcom)
+__windows_open_watcom(C)
diff --git a/share/cmake-3.22/Modules/Platform/Windows-OpenWatcom-CXX.cmake b/share/cmake-3.22/Modules/Platform/Windows-OpenWatcom-CXX.cmake
new file mode 100644
index 0000000..ac90d28
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-OpenWatcom-CXX.cmake
@@ -0,0 +1,2 @@
+include(Platform/Windows-OpenWatcom)
+__windows_open_watcom(CXX)
diff --git a/share/cmake-3.22/Modules/Platform/Windows-OpenWatcom.cmake b/share/cmake-3.22/Modules/Platform/Windows-OpenWatcom.cmake
new file mode 100644
index 0000000..19bcb97
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-OpenWatcom.cmake
@@ -0,0 +1,35 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# This module is shared by multiple languages; use include blocker.
+include_guard()
+
+set(CMAKE_BUILD_TYPE_INIT Debug)
+
+string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " system nt_dll")
+string(APPEND CMAKE_MODULE_LINKER_FLAGS_INIT " system nt_dll")
+
+set(CMAKE_C_COMPILE_OPTIONS_DLL "-bd") # Note: This variable is a ';' separated list
+set(CMAKE_SHARED_LIBRARY_C_FLAGS "-bd") # ... while this is a space separated string.
+
+set(CMAKE_RC_COMPILER "rc" )
+
+# single/multi-threaded                 /-bm
+# static/DLL run-time libraries         /-br
+# default is setup for multi-threaded + DLL run-time libraries
+string(APPEND CMAKE_C_FLAGS_INIT " -bt=nt -dWIN32 -br -bm")
+string(APPEND CMAKE_CXX_FLAGS_INIT " -bt=nt -xs -dWIN32 -br -bm")
+
+if(CMAKE_CROSSCOMPILING)
+  if(NOT CMAKE_C_STANDARD_INCLUDE_DIRECTORIES)
+    set(CMAKE_C_STANDARD_INCLUDE_DIRECTORIES $ENV{WATCOM}/h $ENV{WATCOM}/h/nt)
+  endif()
+  if(NOT CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES)
+    set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES $ENV{WATCOM}/h $ENV{WATCOM}/h/nt)
+  endif()
+endif()
+
+macro(__windows_open_watcom lang)
+  set(CMAKE_${lang}_CREATE_WIN32_EXE "system nt_win")
+  set(CMAKE_${lang}_CREATE_CONSOLE_EXE "system nt")
+endmacro()
diff --git a/share/cmake-3.18/Modules/Platform/Windows-PGI-C.cmake b/share/cmake-3.22/Modules/Platform/Windows-PGI-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-PGI-C.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-PGI-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-PGI-Fortran.cmake b/share/cmake-3.22/Modules/Platform/Windows-PGI-Fortran.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-PGI-Fortran.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-PGI-Fortran.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-PGI.cmake b/share/cmake-3.22/Modules/Platform/Windows-PGI.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-PGI.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-PGI.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Watcom-C.cmake b/share/cmake-3.22/Modules/Platform/Windows-Watcom-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-Watcom-C.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-Watcom-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows-Watcom-CXX.cmake b/share/cmake-3.22/Modules/Platform/Windows-Watcom-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-Watcom-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-Watcom-CXX.cmake
diff --git a/share/cmake-3.22/Modules/Platform/Windows-df.cmake b/share/cmake-3.22/Modules/Platform/Windows-df.cmake
new file mode 100644
index 0000000..c823423
--- /dev/null
+++ b/share/cmake-3.22/Modules/Platform/Windows-df.cmake
@@ -0,0 +1,60 @@
+# compiler support for fortran CVF compiler on windows
+
+set(CMAKE_WINDOWS_OBJECT_PATH 1)
+set(CMAKE_LIBRARY_PATH_FLAG "-LIBPATH:")
+set(CMAKE_LINK_LIBRARY_FLAG "")
+set(WIN32 1)
+if(CMAKE_VERBOSE_MAKEFILE)
+  set(CMAKE_CL_NOLOGO)
+else()
+  set(CMAKE_CL_NOLOGO "/nologo")
+endif()
+
+set(CMAKE_Fortran_MODDIR_FLAG "-module:")
+
+set(CMAKE_Fortran_CREATE_SHARED_LIBRARY
+ "link ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} /out:<TARGET> /dll <LINK_FLAGS> <OBJECTS> <LINK_LIBRARIES> ${CMAKE_END_TEMP_FILE}")
+
+set(CMAKE_Fortran_CREATE_SHARED_MODULE ${CMAKE_Fortran_CREATE_SHARED_LIBRARY})
+
+# create a C++ static library
+set(CMAKE_Fortran_CREATE_STATIC_LIBRARY  "lib ${CMAKE_CL_NOLOGO} <LINK_FLAGS> /out:<TARGET> <OBJECTS> ")
+
+# compile a C++ file into an object file
+set(CMAKE_Fortran_COMPILE_OBJECT
+    "<CMAKE_Fortran_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} /object:<OBJECT> <FLAGS> /compile_only <SOURCE>${CMAKE_END_TEMP_FILE}")
+
+set(CMAKE_Fortran_LINK_EXECUTABLE
+    "<CMAKE_Fortran_COMPILER> ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} <FLAGS> /exe:<TARGET> <OBJECTS> /link <CMAKE_Fortran_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES>${CMAKE_END_TEMP_FILE}")
+
+set(CMAKE_Fortran_CREATE_WIN32_EXE /winapp)
+set(CMAKE_Fortran_CREATE_CONSOLE_EXE )
+
+# does the compiler support pdbtype and is it the newer compiler
+
+set(CMAKE_BUILD_TYPE_INIT Debug)
+set (CMAKE_Fortran_FLAGS_INIT "")
+set (CMAKE_Fortran_FLAGS_DEBUG_INIT "/debug:full")
+set (CMAKE_Fortran_FLAGS_MINSIZEREL_INIT "/Optimize:2 /Define:NDEBUG")
+set (CMAKE_Fortran_FLAGS_RELEASE_INIT "/Optimize:1 /Define:NDEBUG")
+set (CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT "/Optimize:1 /debug:full /Define:NDEBUG")
+
+set (CMAKE_Fortran_STANDARD_LIBRARIES_INIT "user32.lib")
+
+# executable linker flags
+set (CMAKE_LINK_DEF_FILE_FLAG "/DEF:")
+set (CMAKE_EXE_LINKER_FLAGS_INIT " /INCREMENTAL:YES")
+if (CMAKE_COMPILER_SUPPORTS_PDBTYPE)
+  set (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "/debug /pdbtype:sept")
+  set (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "/debug /pdbtype:sept")
+else ()
+  set (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "/debug")
+  set (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "/debug")
+endif ()
+
+set (CMAKE_SHARED_LINKER_FLAGS_INIT ${CMAKE_EXE_LINKER_FLAGS_INIT})
+set (CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT})
+set (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT})
+set (CMAKE_MODULE_LINKER_FLAGS_INIT ${CMAKE_SHARED_LINKER_FLAGS_INIT})
+set (CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT ${CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT})
+set (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT})
diff --git a/share/cmake-3.18/Modules/Platform/Windows-windres.cmake b/share/cmake-3.22/Modules/Platform/Windows-windres.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows-windres.cmake
rename to share/cmake-3.22/Modules/Platform/Windows-windres.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Windows.cmake b/share/cmake-3.22/Modules/Platform/Windows.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Windows.cmake
rename to share/cmake-3.22/Modules/Platform/Windows.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsCE-MSVC-C.cmake b/share/cmake-3.22/Modules/Platform/WindowsCE-MSVC-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsCE-MSVC-C.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsCE-MSVC-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsCE-MSVC-CXX.cmake b/share/cmake-3.22/Modules/Platform/WindowsCE-MSVC-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsCE-MSVC-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsCE-MSVC-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsCE.cmake b/share/cmake-3.22/Modules/Platform/WindowsCE.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsCE.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsCE.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsPaths.cmake b/share/cmake-3.22/Modules/Platform/WindowsPaths.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsPaths.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsPaths.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsPhone-Clang-ASM.cmake b/share/cmake-3.22/Modules/Platform/WindowsPhone-Clang-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsPhone-Clang-ASM.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsPhone-Clang-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsPhone-Clang-C.cmake b/share/cmake-3.22/Modules/Platform/WindowsPhone-Clang-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsPhone-Clang-C.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsPhone-Clang-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsPhone-Clang-CXX.cmake b/share/cmake-3.22/Modules/Platform/WindowsPhone-Clang-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsPhone-Clang-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsPhone-Clang-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsPhone-GNU-ASM.cmake b/share/cmake-3.22/Modules/Platform/WindowsPhone-GNU-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsPhone-GNU-ASM.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsPhone-GNU-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsPhone-GNU-C.cmake b/share/cmake-3.22/Modules/Platform/WindowsPhone-GNU-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsPhone-GNU-C.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsPhone-GNU-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsPhone-GNU-CXX.cmake b/share/cmake-3.22/Modules/Platform/WindowsPhone-GNU-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsPhone-GNU-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsPhone-GNU-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsPhone-MSVC-C.cmake b/share/cmake-3.22/Modules/Platform/WindowsPhone-MSVC-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsPhone-MSVC-C.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsPhone-MSVC-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsPhone-MSVC-CXX.cmake b/share/cmake-3.22/Modules/Platform/WindowsPhone-MSVC-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsPhone-MSVC-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsPhone-MSVC-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsPhone.cmake b/share/cmake-3.22/Modules/Platform/WindowsPhone.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsPhone.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsPhone.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsStore-Clang-ASM.cmake b/share/cmake-3.22/Modules/Platform/WindowsStore-Clang-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsStore-Clang-ASM.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsStore-Clang-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsStore-Clang-C.cmake b/share/cmake-3.22/Modules/Platform/WindowsStore-Clang-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsStore-Clang-C.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsStore-Clang-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsStore-Clang-CXX.cmake b/share/cmake-3.22/Modules/Platform/WindowsStore-Clang-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsStore-Clang-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsStore-Clang-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsStore-GNU-ASM.cmake b/share/cmake-3.22/Modules/Platform/WindowsStore-GNU-ASM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsStore-GNU-ASM.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsStore-GNU-ASM.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsStore-GNU-C.cmake b/share/cmake-3.22/Modules/Platform/WindowsStore-GNU-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsStore-GNU-C.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsStore-GNU-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsStore-GNU-CXX.cmake b/share/cmake-3.22/Modules/Platform/WindowsStore-GNU-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsStore-GNU-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsStore-GNU-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsStore-MSVC-C.cmake b/share/cmake-3.22/Modules/Platform/WindowsStore-MSVC-C.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsStore-MSVC-C.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsStore-MSVC-C.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsStore-MSVC-CXX.cmake b/share/cmake-3.22/Modules/Platform/WindowsStore-MSVC-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsStore-MSVC-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsStore-MSVC-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/WindowsStore.cmake b/share/cmake-3.22/Modules/Platform/WindowsStore.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/WindowsStore.cmake
rename to share/cmake-3.22/Modules/Platform/WindowsStore.cmake
diff --git a/share/cmake-3.18/Modules/Platform/Xenix.cmake b/share/cmake-3.22/Modules/Platform/Xenix.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/Xenix.cmake
rename to share/cmake-3.22/Modules/Platform/Xenix.cmake
diff --git a/share/cmake-3.18/Modules/Platform/eCos.cmake b/share/cmake-3.22/Modules/Platform/eCos.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/eCos.cmake
rename to share/cmake-3.22/Modules/Platform/eCos.cmake
diff --git a/share/cmake-3.18/Modules/Platform/gas.cmake b/share/cmake-3.22/Modules/Platform/gas.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/gas.cmake
rename to share/cmake-3.22/Modules/Platform/gas.cmake
diff --git a/share/cmake-3.18/Modules/Platform/iOS-Determine-CXX.cmake b/share/cmake-3.22/Modules/Platform/iOS-Determine-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/iOS-Determine-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/iOS-Determine-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/iOS-Initialize.cmake b/share/cmake-3.22/Modules/Platform/iOS-Initialize.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/iOS-Initialize.cmake
rename to share/cmake-3.22/Modules/Platform/iOS-Initialize.cmake
diff --git a/share/cmake-3.18/Modules/Platform/iOS.cmake b/share/cmake-3.22/Modules/Platform/iOS.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/iOS.cmake
rename to share/cmake-3.22/Modules/Platform/iOS.cmake
diff --git a/share/cmake-3.18/Modules/Platform/kFreeBSD.cmake b/share/cmake-3.22/Modules/Platform/kFreeBSD.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/kFreeBSD.cmake
rename to share/cmake-3.22/Modules/Platform/kFreeBSD.cmake
diff --git a/share/cmake-3.18/Modules/Platform/syllable.cmake b/share/cmake-3.22/Modules/Platform/syllable.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/syllable.cmake
rename to share/cmake-3.22/Modules/Platform/syllable.cmake
diff --git a/share/cmake-3.18/Modules/Platform/tvOS-Determine-CXX.cmake b/share/cmake-3.22/Modules/Platform/tvOS-Determine-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/tvOS-Determine-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/tvOS-Determine-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/tvOS-Initialize.cmake b/share/cmake-3.22/Modules/Platform/tvOS-Initialize.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/tvOS-Initialize.cmake
rename to share/cmake-3.22/Modules/Platform/tvOS-Initialize.cmake
diff --git a/share/cmake-3.18/Modules/Platform/tvOS.cmake b/share/cmake-3.22/Modules/Platform/tvOS.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/tvOS.cmake
rename to share/cmake-3.22/Modules/Platform/tvOS.cmake
diff --git a/share/cmake-3.18/Modules/Platform/watchOS-Determine-CXX.cmake b/share/cmake-3.22/Modules/Platform/watchOS-Determine-CXX.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/watchOS-Determine-CXX.cmake
rename to share/cmake-3.22/Modules/Platform/watchOS-Determine-CXX.cmake
diff --git a/share/cmake-3.18/Modules/Platform/watchOS-Initialize.cmake b/share/cmake-3.22/Modules/Platform/watchOS-Initialize.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/watchOS-Initialize.cmake
rename to share/cmake-3.22/Modules/Platform/watchOS-Initialize.cmake
diff --git a/share/cmake-3.18/Modules/Platform/watchOS.cmake b/share/cmake-3.22/Modules/Platform/watchOS.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Platform/watchOS.cmake
rename to share/cmake-3.22/Modules/Platform/watchOS.cmake
diff --git a/share/cmake-3.22/Modules/ProcessorCount.cmake b/share/cmake-3.22/Modules/ProcessorCount.cmake
new file mode 100644
index 0000000..bda23ab
--- /dev/null
+++ b/share/cmake-3.22/Modules/ProcessorCount.cmake
@@ -0,0 +1,240 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+ProcessorCount
+--------------
+
+ProcessorCount(var)
+
+Determine the number of processors/cores and save value in ${var}
+
+Sets the variable named ${var} to the number of physical cores
+available on the machine if the information can be determined.
+Otherwise it is set to 0.  Currently this functionality is implemented
+for AIX, cygwin, FreeBSD, HPUX, Linux, macOS, QNX, Sun and
+Windows.
+
+.. versionchanged:: 3.15
+  On Linux, returns the container CPU count instead of the host CPU count.
+
+This function is guaranteed to return a positive integer (>=1) if it
+succeeds.  It returns 0 if there's a problem determining the processor
+count.
+
+Example use, in a ctest -S dashboard script:
+
+::
+
+   include(ProcessorCount)
+   ProcessorCount(N)
+   if(NOT N EQUAL 0)
+     set(CTEST_BUILD_FLAGS -j${N})
+     set(ctest_test_args ${ctest_test_args} PARALLEL_LEVEL ${N})
+   endif()
+
+
+
+This function is intended to offer an approximation of the value of
+the number of compute cores available on the current machine, such
+that you may use that value for parallel building and parallel
+testing.  It is meant to help utilize as much of the machine as seems
+reasonable.  Of course, knowledge of what else might be running on the
+machine simultaneously should be used when deciding whether to request
+a machine's full capacity all for yourself.
+#]=======================================================================]
+
+# A more reliable way might be to compile a small C program that uses the CPUID
+# instruction, but that again requires compiler support or compiling assembler
+# code.
+
+function(ProcessorCount var)
+  # Unknown:
+  set(count 0)
+
+  if(WIN32)
+    # Windows:
+    set(count "$ENV{NUMBER_OF_PROCESSORS}")
+    #message("ProcessorCount: WIN32, trying environment variable")
+  endif()
+
+  if(NOT count)
+    # Mac, FreeBSD, OpenBSD (systems with sysctl):
+    find_program(ProcessorCount_cmd_sysctl sysctl
+      PATHS /usr/sbin /sbin)
+    mark_as_advanced(ProcessorCount_cmd_sysctl)
+    if(ProcessorCount_cmd_sysctl)
+      execute_process(COMMAND ${ProcessorCount_cmd_sysctl} -n hw.ncpu
+        ERROR_QUIET
+        OUTPUT_STRIP_TRAILING_WHITESPACE
+        OUTPUT_VARIABLE count)
+      #message("ProcessorCount: trying sysctl '${ProcessorCount_cmd_sysctl}'")
+    endif()
+  endif()
+
+  if(NOT count)
+    # Linux (systems with nproc):
+    # Prefer nproc to getconf if available as getconf may return the host CPU count in Linux containers
+    find_program(ProcessorCount_cmd_nproc nproc)
+    mark_as_advanced(ProcessorCount_cmd_nproc)
+    if(ProcessorCount_cmd_nproc)
+      execute_process(COMMAND ${ProcessorCount_cmd_nproc}
+        ERROR_QUIET
+        OUTPUT_STRIP_TRAILING_WHITESPACE
+        OUTPUT_VARIABLE count)
+      #message("ProcessorCount: trying nproc '${ProcessorCount_cmd_nproc}'")
+    endif()
+  endif()
+
+  if(NOT count)
+    # Linux (systems with getconf):
+    find_program(ProcessorCount_cmd_getconf getconf)
+    mark_as_advanced(ProcessorCount_cmd_getconf)
+    if(ProcessorCount_cmd_getconf)
+      execute_process(COMMAND ${ProcessorCount_cmd_getconf} _NPROCESSORS_ONLN
+        ERROR_QUIET
+        OUTPUT_STRIP_TRAILING_WHITESPACE
+        OUTPUT_VARIABLE count)
+      #message("ProcessorCount: trying getconf '${ProcessorCount_cmd_getconf}'")
+    endif()
+  endif()
+
+  if(NOT count)
+    # HPUX (systems with machinfo):
+    find_program(ProcessorCount_cmd_machinfo machinfo
+      PATHS /usr/contrib/bin)
+    mark_as_advanced(ProcessorCount_cmd_machinfo)
+    if(ProcessorCount_cmd_machinfo)
+      execute_process(COMMAND ${ProcessorCount_cmd_machinfo}
+        ERROR_QUIET
+        OUTPUT_STRIP_TRAILING_WHITESPACE
+        OUTPUT_VARIABLE machinfo_output)
+      string(REGEX MATCHALL "Number of CPUs = ([0-9]+)" procs "${machinfo_output}")
+      set(count "${CMAKE_MATCH_1}")
+      if(NOT count)
+        string(REGEX MATCHALL "([0-9]+) logical processors" procs "${machinfo_output}")
+        set(count "${CMAKE_MATCH_1}")
+      endif()
+      #message("ProcessorCount: trying machinfo '${ProcessorCount_cmd_machinfo}'")
+    else()
+      find_program(ProcessorCount_cmd_mpsched mpsched)
+      mark_as_advanced(ProcessorCount_cmd_mpsched)
+      if(ProcessorCount_cmd_mpsched)
+        execute_process(COMMAND ${ProcessorCount_cmd_mpsched} -s
+          OUTPUT_QUIET
+          ERROR_STRIP_TRAILING_WHITESPACE
+          ERROR_VARIABLE mpsched_output)
+        string(REGEX MATCHALL "Processor Count *: *([0-9]+)" procs "${mpsched_output}")
+        set(count "${CMAKE_MATCH_1}")
+        #message("ProcessorCount: trying mpsched -s '${ProcessorCount_cmd_mpsched}'")
+      endif()
+    endif()
+  endif()
+
+  if(NOT count)
+    # AIX (systems with lsconf):
+    find_program(ProcessorCount_cmd_lsconf lsconf
+      PATHS /usr/sbin)
+    mark_as_advanced(ProcessorCount_cmd_lsconf)
+    if(ProcessorCount_cmd_lsconf)
+      execute_process(COMMAND ${ProcessorCount_cmd_lsconf}
+        ERROR_QUIET
+        OUTPUT_STRIP_TRAILING_WHITESPACE
+        OUTPUT_VARIABLE lsconf_output)
+      string(REGEX MATCHALL "Number Of Processors: ([0-9]+)" procs "${lsconf_output}")
+      set(count "${CMAKE_MATCH_1}")
+      #message("ProcessorCount: trying lsconf '${ProcessorCount_cmd_lsconf}'")
+    endif()
+  endif()
+
+  if(NOT count)
+    # QNX (systems with pidin):
+    find_program(ProcessorCount_cmd_pidin pidin)
+    mark_as_advanced(ProcessorCount_cmd_pidin)
+    if(ProcessorCount_cmd_pidin)
+      execute_process(COMMAND ${ProcessorCount_cmd_pidin} info
+        ERROR_QUIET
+        OUTPUT_STRIP_TRAILING_WHITESPACE
+        OUTPUT_VARIABLE pidin_output)
+      string(REGEX MATCHALL "Processor[0-9]+: " procs "${pidin_output}")
+      list(LENGTH procs count)
+      #message("ProcessorCount: trying pidin '${ProcessorCount_cmd_pidin}'")
+    endif()
+  endif()
+
+  if(NOT count)
+    # Sun (systems where psrinfo tool is available)
+    find_program(ProcessorCount_cmd_psrinfo psrinfo PATHS /usr/sbin /sbin)
+    mark_as_advanced(ProcessorCount_cmd_psrinfo)
+    if (ProcessorCount_cmd_psrinfo)
+      execute_process(COMMAND ${ProcessorCount_cmd_psrinfo} -p -v
+        ERROR_QUIET
+        OUTPUT_STRIP_TRAILING_WHITESPACE
+        OUTPUT_VARIABLE psrinfo_output)
+      string(REGEX MATCHALL "has [0-9]+ virtual processor" procs "${psrinfo_output}")
+      set(count "")
+      foreach(proc ${procs})
+        string(REGEX MATCH "has ([0-9]+) virtual" res ${proc})
+        math(EXPR count "${count} + ${CMAKE_MATCH_1}")
+      endforeach()
+      #message("ProcessorCount: trying '${ProcessorCount_cmd_psrinfo}' -p -v")
+    else()
+      # Sun (systems where uname -X emits "NumCPU" in its output):
+      find_program(ProcessorCount_cmd_uname uname)
+      mark_as_advanced(ProcessorCount_cmd_uname)
+      if(ProcessorCount_cmd_uname)
+        execute_process(COMMAND ${ProcessorCount_cmd_uname} -X
+          ERROR_QUIET
+          OUTPUT_STRIP_TRAILING_WHITESPACE
+          OUTPUT_VARIABLE uname_X_output)
+        string(REGEX MATCHALL "NumCPU = ([0-9]+)" procs "${uname_X_output}")
+        set(count "${CMAKE_MATCH_1}")
+        #message("ProcessorCount: trying uname -X '${ProcessorCount_cmd_uname}'")
+      endif()
+    endif()
+  endif()
+
+  # Execute this code when all previously attempted methods return empty
+  # output:
+  #
+  if(NOT count)
+    # Systems with /proc/cpuinfo:
+    set(cpuinfo_file /proc/cpuinfo)
+    if(EXISTS "${cpuinfo_file}")
+      file(STRINGS "${cpuinfo_file}" procs REGEX "^processor.: [0-9]+$")
+      list(LENGTH procs count)
+      #message("ProcessorCount: trying cpuinfo '${cpuinfo_file}'")
+    endif()
+  endif()
+
+  if(NOT count)
+    # Haiku
+    find_program(ProcessorCount_cmd_sysinfo sysinfo)
+    if(ProcessorCount_cmd_sysinfo)
+      execute_process(COMMAND ${ProcessorCount_cmd_sysinfo}
+        ERROR_QUIET
+        OUTPUT_STRIP_TRAILING_WHITESPACE
+        OUTPUT_VARIABLE sysinfo_X_output)
+      string(REGEX MATCHALL "\nCPU #[0-9]+:" procs "\n${sysinfo_X_output}")
+      list(LENGTH procs count)
+      #message("ProcessorCount: trying sysinfo '${ProcessorCount_cmd_sysinfo}'")
+    endif()
+  endif()
+
+  # Since cygwin builds of CMake do not define WIN32 anymore, but they still
+  # run on Windows, and will still have this env var defined:
+  #
+  if(NOT count)
+    set(count "$ENV{NUMBER_OF_PROCESSORS}")
+    #message("ProcessorCount: last fallback, trying environment variable")
+  endif()
+
+  # Ensure an integer return (avoid inadvertently returning an empty string
+  # or an error string)... If it's not a decimal integer, return 0:
+  #
+  if(NOT count MATCHES "^[0-9]+$")
+    set(count 0)
+  endif()
+
+  set(${var} ${count} PARENT_SCOPE)
+endfunction()
diff --git a/share/cmake-3.18/Modules/Qt4ConfigDependentSettings.cmake b/share/cmake-3.22/Modules/Qt4ConfigDependentSettings.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Qt4ConfigDependentSettings.cmake
rename to share/cmake-3.22/Modules/Qt4ConfigDependentSettings.cmake
diff --git a/share/cmake-3.18/Modules/Qt4Macros.cmake b/share/cmake-3.22/Modules/Qt4Macros.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Qt4Macros.cmake
rename to share/cmake-3.22/Modules/Qt4Macros.cmake
diff --git a/share/cmake-3.18/Modules/RepositoryInfo.txt.in b/share/cmake-3.22/Modules/RepositoryInfo.txt.in
similarity index 100%
rename from share/cmake-3.18/Modules/RepositoryInfo.txt.in
rename to share/cmake-3.22/Modules/RepositoryInfo.txt.in
diff --git a/share/cmake-3.18/Modules/SelectLibraryConfigurations.cmake b/share/cmake-3.22/Modules/SelectLibraryConfigurations.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/SelectLibraryConfigurations.cmake
rename to share/cmake-3.22/Modules/SelectLibraryConfigurations.cmake
diff --git a/share/cmake-3.18/Modules/Squish4RunTestCase.bat b/share/cmake-3.22/Modules/Squish4RunTestCase.bat
similarity index 100%
rename from share/cmake-3.18/Modules/Squish4RunTestCase.bat
rename to share/cmake-3.22/Modules/Squish4RunTestCase.bat
diff --git a/share/cmake-3.18/Modules/Squish4RunTestCase.sh b/share/cmake-3.22/Modules/Squish4RunTestCase.sh
similarity index 100%
rename from share/cmake-3.18/Modules/Squish4RunTestCase.sh
rename to share/cmake-3.22/Modules/Squish4RunTestCase.sh
diff --git a/share/cmake-3.18/Modules/SquishRunTestCase.bat b/share/cmake-3.22/Modules/SquishRunTestCase.bat
similarity index 100%
rename from share/cmake-3.18/Modules/SquishRunTestCase.bat
rename to share/cmake-3.22/Modules/SquishRunTestCase.bat
diff --git a/share/cmake-3.18/Modules/SquishRunTestCase.sh b/share/cmake-3.22/Modules/SquishRunTestCase.sh
similarity index 100%
rename from share/cmake-3.18/Modules/SquishRunTestCase.sh
rename to share/cmake-3.22/Modules/SquishRunTestCase.sh
diff --git a/share/cmake-3.18/Modules/SquishTestScript.cmake b/share/cmake-3.22/Modules/SquishTestScript.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/SquishTestScript.cmake
rename to share/cmake-3.22/Modules/SquishTestScript.cmake
diff --git a/share/cmake-3.18/Modules/SystemInformation.cmake b/share/cmake-3.22/Modules/SystemInformation.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/SystemInformation.cmake
rename to share/cmake-3.22/Modules/SystemInformation.cmake
diff --git a/share/cmake-3.18/Modules/SystemInformation.in b/share/cmake-3.22/Modules/SystemInformation.in
similarity index 100%
rename from share/cmake-3.18/Modules/SystemInformation.in
rename to share/cmake-3.22/Modules/SystemInformation.in
diff --git a/share/cmake-3.22/Modules/TestBigEndian.cmake b/share/cmake-3.22/Modules/TestBigEndian.cmake
new file mode 100644
index 0000000..ea8ca73
--- /dev/null
+++ b/share/cmake-3.22/Modules/TestBigEndian.cmake
@@ -0,0 +1,143 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+TestBigEndian
+-------------
+
+.. deprecated:: 3.20
+
+  Supserseded by the :variable:`CMAKE_<LANG>_BYTE_ORDER` variable.
+
+Check if the target architecture is big endian or little endian.
+
+.. command:: test_big_endian
+
+  .. code-block:: cmake
+
+    test_big_endian(<var>)
+
+  Stores in variable ``<var>`` either 1 or 0 indicating whether the
+  target architecture is big or little endian.
+
+#]=======================================================================]
+include_guard()
+
+include(CheckTypeSize)
+
+function(TEST_BIG_ENDIAN VARIABLE)
+  if(";${CMAKE_C_BYTE_ORDER};${CMAKE_CXX_BYTE_ORDER};${CMAKE_CUDA_BYTE_ORDER};${CMAKE_OBJC_BYTE_ORDER};${CMAKE_OBJCXX_BYTE_ORDER};" MATCHES ";(BIG_ENDIAN|LITTLE_ENDIAN);")
+    set(order "${CMAKE_MATCH_1}")
+    if(order STREQUAL "BIG_ENDIAN")
+      set("${VARIABLE}" 1 PARENT_SCOPE)
+    else()
+      set("${VARIABLE}" 0 PARENT_SCOPE)
+    endif()
+  else()
+    __TEST_BIG_ENDIAN_LEGACY_IMPL(is_big)
+    set("${VARIABLE}" "${is_big}" PARENT_SCOPE)
+  endif()
+endfunction()
+
+macro(__TEST_BIG_ENDIAN_LEGACY_IMPL VARIABLE)
+  if(NOT DEFINED HAVE_${VARIABLE})
+    message(CHECK_START "Check if the system is big endian")
+    message(CHECK_START "Searching 16 bit integer")
+
+    if(CMAKE_C_COMPILER_LOADED)
+      set(_test_language "C")
+    elseif(CMAKE_CXX_COMPILER_LOADED)
+      set(_test_language "CXX")
+    else()
+      message(FATAL_ERROR "TEST_BIG_ENDIAN needs either C or CXX language enabled")
+    endif()
+
+    CHECK_TYPE_SIZE("unsigned short" CMAKE_SIZEOF_UNSIGNED_SHORT LANGUAGE ${_test_language})
+    if(CMAKE_SIZEOF_UNSIGNED_SHORT EQUAL 2)
+      message(CHECK_PASS "Using unsigned short")
+      set(CMAKE_16BIT_TYPE "unsigned short")
+    else()
+      CHECK_TYPE_SIZE("unsigned int"   CMAKE_SIZEOF_UNSIGNED_INT LANGUAGE ${_test_language})
+      if(CMAKE_SIZEOF_UNSIGNED_INT)
+        message(CHECK_PASS "Using unsigned int")
+        set(CMAKE_16BIT_TYPE "unsigned int")
+
+      else()
+
+        CHECK_TYPE_SIZE("unsigned long"  CMAKE_SIZEOF_UNSIGNED_LONG LANGUAGE ${_test_language})
+        if(CMAKE_SIZEOF_UNSIGNED_LONG)
+          message(CHECK_PASS "Using unsigned long")
+          set(CMAKE_16BIT_TYPE "unsigned long")
+        else()
+          message(FATAL_ERROR "no suitable type found")
+        endif()
+
+      endif()
+
+    endif()
+
+    if(_test_language STREQUAL "CXX")
+      set(_test_file "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/TestEndianess.cpp")
+    else()
+      set(_test_file "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/TestEndianess.c")
+    endif()
+
+    configure_file("${CMAKE_ROOT}/Modules/TestEndianess.c.in"
+                   ${_test_file}
+                   @ONLY)
+
+     file(READ ${_test_file} TEST_ENDIANESS_FILE_CONTENT)
+
+     try_compile(HAVE_${VARIABLE}
+      "${CMAKE_BINARY_DIR}"
+      ${_test_file}
+      OUTPUT_VARIABLE OUTPUT
+      COPY_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestEndianess.bin" )
+
+      if(HAVE_${VARIABLE})
+
+        file(STRINGS "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestEndianess.bin"
+            CMAKE_TEST_ENDIANESS_STRINGS_LE LIMIT_COUNT 1 REGEX "THIS IS LITTLE ENDIAN")
+
+        file(STRINGS "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestEndianess.bin"
+            CMAKE_TEST_ENDIANESS_STRINGS_BE LIMIT_COUNT 1 REGEX "THIS IS BIG ENDIAN")
+
+        # on mac, if there are universal binaries built both will be true
+        # return the result depending on the machine on which cmake runs
+        if(CMAKE_TEST_ENDIANESS_STRINGS_BE  AND  CMAKE_TEST_ENDIANESS_STRINGS_LE)
+          if(CMAKE_SYSTEM_PROCESSOR MATCHES powerpc)
+            set(CMAKE_TEST_ENDIANESS_STRINGS_BE TRUE)
+            set(CMAKE_TEST_ENDIANESS_STRINGS_LE FALSE)
+          else()
+            set(CMAKE_TEST_ENDIANESS_STRINGS_BE FALSE)
+            set(CMAKE_TEST_ENDIANESS_STRINGS_LE TRUE)
+          endif()
+          message(STATUS "TEST_BIG_ENDIAN found different results, consider setting CMAKE_OSX_ARCHITECTURES or CMAKE_TRY_COMPILE_OSX_ARCHITECTURES to one or no architecture !")
+        endif()
+
+        if(CMAKE_TEST_ENDIANESS_STRINGS_LE)
+          set(${VARIABLE} 0 CACHE INTERNAL "Result of TEST_BIG_ENDIAN" FORCE)
+          message(CHECK_PASS "little endian")
+        endif()
+
+        if(CMAKE_TEST_ENDIANESS_STRINGS_BE)
+          set(${VARIABLE} 1 CACHE INTERNAL "Result of TEST_BIG_ENDIAN" FORCE)
+          message(CHECK_PASS "big endian")
+        endif()
+
+        if(NOT CMAKE_TEST_ENDIANESS_STRINGS_BE  AND  NOT CMAKE_TEST_ENDIANESS_STRINGS_LE)
+          message(CHECK_FAIL "TEST_BIG_ENDIAN found no result!")
+          message(SEND_ERROR "TEST_BIG_ENDIAN found no result!")
+        endif()
+
+        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+          "Determining if the system is big endian passed with the following output:\n${OUTPUT}\nTestEndianess.c:\n${TEST_ENDIANESS_FILE_CONTENT}\n\n")
+
+      else()
+        message(CHECK_FAIL "failed")
+        file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+          "Determining if the system is big endian failed with the following output:\n${OUTPUT}\nTestEndianess.c:\n${TEST_ENDIANESS_FILE_CONTENT}\n\n")
+        set(${VARIABLE})
+      endif()
+  endif()
+endmacro()
diff --git a/share/cmake-3.18/Modules/TestCXXAcceptsFlag.cmake b/share/cmake-3.22/Modules/TestCXXAcceptsFlag.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/TestCXXAcceptsFlag.cmake
rename to share/cmake-3.22/Modules/TestCXXAcceptsFlag.cmake
diff --git a/share/cmake-3.18/Modules/TestEndianess.c.in b/share/cmake-3.22/Modules/TestEndianess.c.in
similarity index 100%
rename from share/cmake-3.18/Modules/TestEndianess.c.in
rename to share/cmake-3.22/Modules/TestEndianess.c.in
diff --git a/share/cmake-3.18/Modules/TestForANSIForScope.cmake b/share/cmake-3.22/Modules/TestForANSIForScope.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/TestForANSIForScope.cmake
rename to share/cmake-3.22/Modules/TestForANSIForScope.cmake
diff --git a/share/cmake-3.18/Modules/TestForANSIStreamHeaders.cmake b/share/cmake-3.22/Modules/TestForANSIStreamHeaders.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/TestForANSIStreamHeaders.cmake
rename to share/cmake-3.22/Modules/TestForANSIStreamHeaders.cmake
diff --git a/share/cmake-3.18/Modules/TestForANSIStreamHeaders.cxx b/share/cmake-3.22/Modules/TestForANSIStreamHeaders.cxx
similarity index 100%
rename from share/cmake-3.18/Modules/TestForANSIStreamHeaders.cxx
rename to share/cmake-3.22/Modules/TestForANSIStreamHeaders.cxx
diff --git a/share/cmake-3.18/Modules/TestForAnsiForScope.cxx b/share/cmake-3.22/Modules/TestForAnsiForScope.cxx
similarity index 100%
rename from share/cmake-3.18/Modules/TestForAnsiForScope.cxx
rename to share/cmake-3.22/Modules/TestForAnsiForScope.cxx
diff --git a/share/cmake-3.18/Modules/TestForSSTREAM.cmake b/share/cmake-3.22/Modules/TestForSSTREAM.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/TestForSSTREAM.cmake
rename to share/cmake-3.22/Modules/TestForSSTREAM.cmake
diff --git a/share/cmake-3.18/Modules/TestForSSTREAM.cxx b/share/cmake-3.22/Modules/TestForSSTREAM.cxx
similarity index 100%
rename from share/cmake-3.18/Modules/TestForSSTREAM.cxx
rename to share/cmake-3.22/Modules/TestForSSTREAM.cxx
diff --git a/share/cmake-3.18/Modules/TestForSTDNamespace.cmake b/share/cmake-3.22/Modules/TestForSTDNamespace.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/TestForSTDNamespace.cmake
rename to share/cmake-3.22/Modules/TestForSTDNamespace.cmake
diff --git a/share/cmake-3.18/Modules/TestForSTDNamespace.cxx b/share/cmake-3.22/Modules/TestForSTDNamespace.cxx
similarity index 100%
rename from share/cmake-3.18/Modules/TestForSTDNamespace.cxx
rename to share/cmake-3.22/Modules/TestForSTDNamespace.cxx
diff --git a/share/cmake-3.18/Modules/UseEcos.cmake b/share/cmake-3.22/Modules/UseEcos.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/UseEcos.cmake
rename to share/cmake-3.22/Modules/UseEcos.cmake
diff --git a/share/cmake-3.22/Modules/UseJava.cmake b/share/cmake-3.22/Modules/UseJava.cmake
new file mode 100644
index 0000000..ef63ac3
--- /dev/null
+++ b/share/cmake-3.22/Modules/UseJava.cmake
@@ -0,0 +1,1701 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+UseJava
+-------
+
+This file provides support for ``Java``.  It is assumed that
+:module:`FindJava` has already been loaded.  See :module:`FindJava` for
+information on how to load Java into your ``CMake`` project.
+
+Synopsis
+^^^^^^^^
+
+.. parsed-literal::
+
+  `Creating and Installing JARS`_
+    `add_jar`_ (<target_name> [SOURCES] <source1> [<source2>...] ...)
+    `install_jar`_ (<target_name> DESTINATION <destination> [COMPONENT <component>])
+    `install_jni_symlink`_ (<target_name> DESTINATION <destination> [COMPONENT <component>])
+
+  `Header Generation`_
+    `create_javah`_ ((TARGET <target> | GENERATED_FILES <VAR>) CLASSES <class>... ...)
+
+  `Exporting JAR Targets`_
+    `install_jar_exports`_ (TARGETS <jars>... FILE <filename> DESTINATION <destination> ...)
+    `export_jars`_ (TARGETS <jars>... [NAMESPACE <namespace>] FILE <filename>)
+
+  `Finding JARs`_
+    `find_jar`_ (<VAR> NAMES <name1> [<name2>...] [PATHS <path1> [<path2>... ENV <var>]] ...)
+
+  `Creating Java Documentation`_
+    `create_javadoc`_ (<VAR> (PACKAGES <pkg1> [<pkg2>...] | FILES <file1> [<file2>...]) ...)
+
+Creating And Installing JARs
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. _add_jar:
+
+.. command:: add_jar
+
+  Creates a jar file containing java objects and, optionally, resources::
+
+    add_jar(<target_name>
+            [SOURCES] <source1> [<source2>...] [<resource1>...]
+            [RESOURCES NAMESPACE <ns1> <resource1>... [NAMESPACE <nsX> <resourceX>...]... ]
+            [INCLUDE_JARS <jar1> [<jar2>...]]
+            [ENTRY_POINT <entry>]
+            [VERSION <version>]
+            [MANIFEST <manifest>]
+            [OUTPUT_NAME <name>]
+            [OUTPUT_DIR <dir>]
+            [GENERATE_NATIVE_HEADERS <target>
+                                     [DESTINATION (<dir>|INSTALL <dir> [BUILD <dir>])]]
+            )
+
+  This command creates a ``<target_name>.jar``.  It compiles the given
+  ``<source>`` files and adds the given ``<resource>`` files to
+  the jar file.  Source files can be java files or listing files
+  (prefixed by ``@``).  If only resource files are given then just a jar file
+  is created.
+
+  ``SOURCES``
+    Compiles the specified source files and adds the result in the jar file.
+
+    .. versionadded:: 3.4
+      Support for response files, prefixed by ``@``.
+
+  ``RESOURCES``
+    .. versionadded:: 3.21
+
+    Adds the named ``<resource>`` files to the jar by stripping the source file
+    path and placing the file beneath ``<ns>`` within the jar.
+
+    For example::
+
+      RESOURCES NAMESPACE "/com/my/namespace" "a/path/to/resource.txt"
+
+    results in a resource accessible via ``/com/my/namespace/resource.txt``
+    within the jar.
+
+    Resources may be added without adjusting the namespace by adding them to
+    the list of ``SOURCES`` (original behavior), in this case, resource
+    paths must be relative to ``CMAKE_CURRENT_SOURCE_DIR``.  Adding resources
+    without using the ``RESOURCES`` parameter in out of source builds will
+    almost certainly result in confusion.
+
+    .. note::
+
+      Adding resources via the ``SOURCES`` parameter relies upon a hard-coded
+      list of file extensions which are tested to determine whether they
+      compile (e.g. File.java). ``SOURCES`` files which match the extensions
+      are compiled. Files which do not match are treated as resources. To
+      include uncompiled resources matching those file extensions use
+      the ``RESOURCES`` parameter.
+
+  ``INCLUDE_JARS``
+    The list of jars are added to the classpath when compiling the java sources
+    and also to the dependencies of the target. ``INCLUDE_JARS`` also accepts
+    other target names created by ``add_jar()``. For backwards compatibility,
+    jar files listed as sources are ignored (as they have been since the first
+    version of this module).
+
+  ``ENTRY_POINT``
+    Defines an entry point in the jar file.
+
+  ``VERSION``
+    Adds a version to the target output name.
+
+    The following example will create a jar file with the name
+    ``shibboleet-1.2.0.jar`` and will create a symlink ``shibboleet.jar``
+    pointing to the jar with the version information.
+
+    .. code-block:: cmake
+
+      add_jar(shibboleet shibbotleet.java VERSION 1.2.0)
+
+  ``MANIFEST``
+    Defines a custom manifest for the jar.
+
+  ``OUTPUT_NAME``
+    Specify a different output name for the target.
+
+  ``OUTPUT_DIR``
+    Sets the directory where the jar file will be generated. If not specified,
+    :variable:`CMAKE_CURRENT_BINARY_DIR` is used as the output directory.
+
+  ``GENERATE_NATIVE_HEADERS``
+    .. versionadded:: 3.11
+
+    Generates native header files for methods declared as native. These files
+    provide the connective glue that allow your Java and C code to interact.
+    An INTERFACE target will be created for an easy usage of generated files.
+    Sub-option ``DESTINATION`` can be used to specify the output directory for
+    generated header files.
+
+    This option requires, at least, version 1.8 of the JDK.
+
+    For an optimum usage of this option, it is recommended to include module
+    JNI before any call to ``add_jar()``. The produced target for native
+    headers can then be used to compile C/C++ sources with the
+    :command:`target_link_libraries` command.
+
+    .. code-block:: cmake
+
+      find_package(JNI)
+      add_jar(foo foo.java GENERATE_NATIVE_HEADERS foo-native)
+      add_library(bar bar.cpp)
+      target_link_libraries(bar PRIVATE foo-native)
+
+    .. versionadded:: 3.20
+      ``DESTINATION`` sub-option now supports the possibility to specify
+      different output directories for ``BUILD`` and ``INSTALL`` steps. If
+      ``BUILD`` directory is not specified, a default directory will be used.
+
+      To export the interface target generated by ``GENERATE_NATIVE_HEADERS``
+      option, sub-option ``INSTALL`` of ``DESTINATION`` is required:
+
+      .. code-block:: cmake
+
+        add_jar(foo foo.java GENERATE_NATIVE_HEADERS foo-native
+                             DESTINATION INSTALL include)
+        install(TARGETS foo-native EXPORT native)
+        install(DIRECTORY "$<TARGET_PROPERTY:foo-native,NATIVE_HEADERS_DIRECTORY>/"
+                DESTINATION include)
+        install(EXPORT native DESTINATION /to/export NAMESPACE foo)
+
+  Some variables can be set to customize the behavior of ``add_jar()`` as well
+  as the java compiler:
+
+  ``CMAKE_JAVA_COMPILE_FLAGS``
+    Specify additional flags to java compiler.
+
+  ``CMAKE_JAVA_INCLUDE_PATH``
+    Specify additional paths to the class path.
+
+  ``CMAKE_JNI_TARGET``
+    If the target is a JNI library, sets this boolean variable to ``TRUE`` to
+    enable creation of a JNI symbolic link (see also
+    :ref:`install_jni_symlink() <install_jni_symlink>`).
+
+  ``CMAKE_JAR_CLASSES_PREFIX``
+    If multiple jars should be produced from the same java source filetree,
+    to prevent the accumulation of duplicate class files in subsequent jars,
+    set/reset ``CMAKE_JAR_CLASSES_PREFIX`` prior to calling the ``add_jar()``:
+
+    .. code-block:: cmake
+
+      set(CMAKE_JAR_CLASSES_PREFIX com/redhat/foo)
+      add_jar(foo foo.java)
+
+      set(CMAKE_JAR_CLASSES_PREFIX com/redhat/bar)
+      add_jar(bar bar.java)
+
+  The ``add_jar()`` function sets the following target properties on
+  ``<target_name>``:
+
+  ``INSTALL_FILES``
+    The files which should be installed.  This is used by
+    :ref:`install_jar() <install_jar>`.
+  ``JNI_SYMLINK``
+    The JNI symlink which should be installed.  This is used by
+    :ref:`install_jni_symlink() <install_jni_symlink>`.
+  ``JAR_FILE``
+    The location of the jar file so that you can include it.
+  ``CLASSDIR``
+    The directory where the class files can be found.  For example to use them
+    with ``javah``.
+  ``NATIVE_HEADERS_DIRECTORY``
+    .. versionadded:: 3.20
+
+    The directory where native headers are generated. Defined when option
+    ``GENERATE_NATIVE_HEADERS`` is specified.
+
+.. _install_jar:
+
+.. command:: install_jar
+
+  This command installs the jar file to the given destination::
+
+   install_jar(<target_name> <destination>)
+   install_jar(<target_name> DESTINATION <destination> [COMPONENT <component>])
+
+  This command installs the ``<target_name>`` file to the given
+  ``<destination>``.  It should be called in the same scope as
+  :ref:`add_jar() <add_jar>` or it will fail.
+
+  .. versionadded:: 3.4
+    The second signature with ``DESTINATION`` and ``COMPONENT`` options.
+
+  ``DESTINATION``
+    Specify the directory on disk to which a file will be installed.
+
+  ``COMPONENT``
+    Specify an installation component name with which the install rule is
+    associated, such as "runtime" or "development".
+
+  The ``install_jar()`` command sets the following target properties
+  on ``<target_name>``:
+
+  ``INSTALL_DESTINATION``
+    Holds the ``<destination>`` as described above, and is used by
+    :ref:`install_jar_exports() <install_jar_exports>`.
+
+.. _install_jni_symlink:
+
+.. command:: install_jni_symlink
+
+  Installs JNI symlinks for target generated by :ref:`add_jar() <add_jar>`::
+
+   install_jni_symlink(<target_name> <destination>)
+   install_jni_symlink(<target_name> DESTINATION <destination> [COMPONENT <component>])
+
+  This command installs the ``<target_name>`` JNI symlinks to the given
+  ``<destination>``.  It should be called in the same scope as
+  :ref:`add_jar() <add_jar>` or it will fail.
+
+  .. versionadded:: 3.4
+    The second signature with ``DESTINATION`` and ``COMPONENT`` options.
+
+  ``DESTINATION``
+    Specify the directory on disk to which a file will be installed.
+
+  ``COMPONENT``
+    Specify an installation component name with which the install rule is
+    associated, such as "runtime" or "development".
+
+  Utilize the following commands to create a JNI symbolic link:
+
+  .. code-block:: cmake
+
+    set(CMAKE_JNI_TARGET TRUE)
+    add_jar(shibboleet shibbotleet.java VERSION 1.2.0)
+    install_jar(shibboleet ${LIB_INSTALL_DIR}/shibboleet)
+    install_jni_symlink(shibboleet ${JAVA_LIB_INSTALL_DIR})
+
+Header Generation
+^^^^^^^^^^^^^^^^^
+
+.. _create_javah:
+
+.. command:: create_javah
+
+  .. versionadded:: 3.4
+
+  Generates C header files for java classes::
+
+   create_javah(TARGET <target> | GENERATED_FILES <VAR>
+                CLASSES <class>...
+                [CLASSPATH <classpath>...]
+                [DEPENDS <depend>...]
+                [OUTPUT_NAME <path>|OUTPUT_DIR <path>]
+                )
+
+  .. deprecated:: 3.11
+    This command will no longer be supported starting with version 10 of the JDK
+    due to the `suppression of javah tool <http://openjdk.java.net/jeps/313>`_.
+    The :ref:`add_jar(GENERATE_NATIVE_HEADERS) <add_jar>` command should be
+    used instead.
+
+  Create C header files from java classes. These files provide the connective
+  glue that allow your Java and C code to interact.
+
+  There are two main signatures for ``create_javah()``.  The first signature
+  returns generated files through variable specified by the ``GENERATED_FILES``
+  option.  For example:
+
+  .. code-block:: cmake
+
+    create_javah(GENERATED_FILES files_headers
+      CLASSES org.cmake.HelloWorld
+      CLASSPATH hello.jar
+    )
+
+  The second signature for ``create_javah()`` creates a target which
+  encapsulates header files generation. E.g.
+
+  .. code-block:: cmake
+
+    create_javah(TARGET target_headers
+      CLASSES org.cmake.HelloWorld
+      CLASSPATH hello.jar
+    )
+
+  Both signatures share same options.
+
+  ``CLASSES``
+    Specifies Java classes used to generate headers.
+
+  ``CLASSPATH``
+    Specifies various paths to look up classes. Here ``.class`` files, jar
+    files or targets created by command add_jar can be used.
+
+  ``DEPENDS``
+    Targets on which the javah target depends.
+
+  ``OUTPUT_NAME``
+    Concatenates the resulting header files for all the classes listed by
+    option ``CLASSES`` into ``<path>``.  Same behavior as option ``-o`` of
+    ``javah`` tool.
+
+  ``OUTPUT_DIR``
+    Sets the directory where the header files will be generated.  Same behavior
+    as option ``-d`` of ``javah`` tool.  If not specified,
+    :variable:`CMAKE_CURRENT_BINARY_DIR` is used as the output directory.
+
+Exporting JAR Targets
+^^^^^^^^^^^^^^^^^^^^^
+
+.. _install_jar_exports:
+
+.. command:: install_jar_exports
+
+  .. versionadded:: 3.7
+
+  Installs a target export file::
+
+   install_jar_exports(TARGETS <jars>...
+                       [NAMESPACE <namespace>]
+                       FILE <filename>
+                       DESTINATION <destination> [COMPONENT <component>])
+
+  This command installs a target export file ``<filename>`` for the named jar
+  targets to the given ``<destination>`` directory.  Its function is similar to
+  that of :command:`install(EXPORT)`.
+
+  ``TARGETS``
+    List of targets created by :ref:`add_jar() <add_jar>` command.
+
+  ``NAMESPACE``
+    .. versionadded:: 3.9
+
+    The ``<namespace>`` value will be prepend to the target names as they are
+    written to the import file.
+
+  ``FILE``
+    Specify name of the export file.
+
+
+  ``DESTINATION``
+    Specify the directory on disk to which a file will be installed.
+
+  ``COMPONENT``
+    Specify an installation component name with which the install rule is
+    associated, such as "runtime" or "development".
+
+.. _export_jars:
+
+.. command:: export_jars
+
+  .. versionadded:: 3.7
+
+  Writes a target export file::
+
+   export_jars(TARGETS <jars>...
+               [NAMESPACE <namespace>]
+               FILE <filename>)
+
+  This command writes a target export file ``<filename>`` for the named ``<jars>``
+  targets.  Its function is similar to that of :command:`export`.
+
+  ``TARGETS``
+    List of targets created by :ref:`add_jar() <add_jar>` command.
+
+  ``NAMESPACE``
+    .. versionadded:: 3.9
+
+    The ``<namespace>`` value will be prepend to the target names as they are
+    written to the import file.
+
+  ``FILE``
+    Specify name of the export file.
+
+Finding JARs
+^^^^^^^^^^^^
+
+.. _find_jar:
+
+.. command:: find_jar
+
+  Finds the specified jar file::
+
+    find_jar(<VAR>
+             <name> | NAMES <name1> [<name2>...]
+             [PATHS <path1> [<path2>... ENV <var>]]
+             [VERSIONS <version1> [<version2>]]
+             [DOC "cache documentation string"]
+            )
+
+  This command is used to find a full path to the named jar.  A cache
+  entry named by ``<VAR>`` is created to store the result of this command.
+  If the full path to a jar is found the result is stored in the
+  variable and the search will not repeated unless the variable is
+  cleared.  If nothing is found, the result will be ``<VAR>-NOTFOUND``, and
+  the search will be attempted again next time ``find_jar()`` is invoked with
+  the same variable.
+
+  ``NAMES``
+    Specify one or more possible names for the jar file.
+
+  ``PATHS``
+    Specify directories to search in addition to the default locations.
+    The ``ENV`` var sub-option reads paths from a system environment variable.
+
+  ``VERSIONS``
+    Specify jar versions.
+
+  ``DOC``
+    Specify the documentation string for the ``<VAR>`` cache entry.
+
+Creating Java Documentation
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. _create_javadoc:
+
+.. command:: create_javadoc
+
+  Creates java documentation based on files and packages::
+
+    create_javadoc(<VAR>
+                   (PACKAGES <pkg1> [<pkg2>...] | FILES <file1> [<file2>...])
+                   [SOURCEPATH <sourcepath>]
+                   [CLASSPATH <classpath>]
+                   [INSTALLPATH <install path>]
+                   [DOCTITLE <the documentation title>]
+                   [WINDOWTITLE <the title of the document>]
+                   [AUTHOR (TRUE|FALSE)]
+                   [USE (TRUE|FALSE)]
+                   [VERSION (TRUE|FALSE)]
+                   )
+
+  The ``create_javadoc()`` command can be used to create java documentation.
+  There are two main signatures for ``create_javadoc()``.
+
+  The first signature works with package names on a path with source files:
+
+  .. code-block:: cmake
+
+    create_javadoc(my_example_doc
+                   PACKAGES com.example.foo com.example.bar
+                   SOURCEPATH "${CMAKE_CURRENT_SOURCE_DIR}"
+                   CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH}
+                   WINDOWTITLE "My example"
+                   DOCTITLE "<h1>My example</h1>"
+                   AUTHOR TRUE
+                   USE TRUE
+                   VERSION TRUE
+                  )
+
+  The second signature for ``create_javadoc()`` works on a given list of files:
+
+  .. code-block:: cmake
+
+    create_javadoc(my_example_doc
+                   FILES java/A.java java/B.java
+                   CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH}
+                   WINDOWTITLE "My example"
+                   DOCTITLE "<h1>My example</h1>"
+                   AUTHOR TRUE
+                   USE TRUE
+                   VERSION TRUE
+                  )
+
+  Both signatures share most of the options. For more details please read the
+  javadoc manpage.
+
+  ``PACKAGES``
+    Specify java packages.
+
+  ``FILES``
+    Specify java source files. If relative paths are specified, they are
+    relative to :variable:`CMAKE_CURRENT_SOURCE_DIR`.
+
+  ``SOURCEPATH``
+    Specify the directory where to look for packages. By default,
+    :variable:`CMAKE_CURRENT_SOURCE_DIR` directory is used.
+
+  ``CLASSPATH``
+    Specify where to find user class files. Same behavior as option
+    ``-classpath`` of ``javadoc`` tool.
+
+  ``INSTALLPATH``
+    Specify where to install the java documentation. If you specified, the
+    documentation will be installed to
+    ``${CMAKE_INSTALL_PREFIX}/share/javadoc/<VAR>``.
+
+  ``DOCTITLE``
+    Specify the title to place near the top of the overview summary file.
+    Same behavior as option ``-doctitle`` of ``javadoc`` tool.
+
+  ``WINDOWTITLE``
+    Specify the title to be placed in the HTML ``<title>`` tag. Same behavior
+    as option ``-windowtitle`` of ``javadoc`` tool.
+
+  ``AUTHOR``
+    When value ``TRUE`` is specified, includes the ``@author`` text in the
+    generated docs. Same behavior as option  ``-author`` of ``javadoc`` tool.
+
+  ``USE``
+    When value ``TRUE`` is specified, creates class and package usage pages.
+    Includes one Use page for each documented class and package. Same behavior
+    as option ``-use`` of ``javadoc`` tool.
+
+  ``VERSION``
+    When value ``TRUE`` is specified, includes the version text in the
+    generated docs. Same behavior as option ``-version`` of ``javadoc`` tool.
+#]=======================================================================]
+
+function (__java_copy_file src dest comment)
+    add_custom_command(
+        OUTPUT  ${dest}
+        COMMAND ${CMAKE_COMMAND} -E copy_if_different
+        ARGS    ${src}
+                ${dest}
+        DEPENDS ${src}
+        COMMENT ${comment}
+        VERBATIM
+        )
+endfunction ()
+
+function(__java_lcat VAR)
+    foreach(_line IN LISTS ARGN)
+        string(APPEND ${VAR} "${_line}\n")
+    endforeach()
+
+    set(${VAR} "${${VAR}}" PARENT_SCOPE)
+endfunction()
+
+function(__java_export_jar VAR TARGET PATH)
+    get_target_property(_jarpath ${TARGET} JAR_FILE)
+    get_filename_component(_jarname ${_jarpath} NAME)
+    set(_target "${_jar_NAMESPACE}${TARGET}")
+    __java_lcat(${VAR}
+      "# Create imported target ${_target}"
+      "add_library(${_target} IMPORTED STATIC)"
+      "set_target_properties(${_target} PROPERTIES"
+      "  IMPORTED_LOCATION \"${PATH}/${_jarname}\""
+      "  JAR_FILE \"${PATH}/${_jarname}\")"
+      ""
+    )
+    set(${VAR} "${${VAR}}" PARENT_SCOPE)
+endfunction()
+
+function(__java_copy_resource_namespaces VAR DEST JAVA_RESOURCE_FILES JAVA_RESOURCE_FILES_RELATIVE)
+
+    set(_ns_ID "")
+    set(_ns_VAL "")
+
+    foreach(_item IN LISTS VAR)
+        if(NOT _ns_ID)
+            if(NOT _item STREQUAL "NAMESPACE")
+                message(FATAL_ERROR "UseJava: Expecting \"NAMESPACE\", got\t\"${_item}\"")
+                return()
+            endif()
+        endif()
+
+        if(_item STREQUAL "NAMESPACE")
+            set(_ns_VAL "")               # Prepare for next namespace
+            set(_ns_ID "${_item}")
+            continue()
+        endif()
+
+        if( NOT _ns_VAL)
+            # we're expecting the next token to be a namespace value
+            # whatever it is, we're treating it like a namespace
+            set(_ns_VAL "${_item}")
+            continue()
+        endif()
+
+        if(_ns_ID AND _ns_VAL)
+            # We're expecting a file name, check to see if we got one
+            cmake_path(ABSOLUTE_PATH _item OUTPUT_VARIABLE _test_file_name)
+            if (NOT EXISTS "${_test_file_name}")
+                message(FATAL_ERROR "UseJava: File does not exist:\t${_item}")
+                return()
+            endif()
+        endif()
+
+        cmake_path(ABSOLUTE_PATH _item OUTPUT_VARIABLE _abs_file_name)
+        cmake_path(GET _item FILENAME _resource_file_name)
+        set(_dest_resource_file_name "${_ns_VAL}/${_resource_file_name}" )
+
+        __java_copy_file( ${_abs_file_name}
+                          ${DEST}/${_dest_resource_file_name}
+                          "Copying ${_item} to the build directory")
+
+        list(APPEND RESOURCE_FILES_LIST           ${DEST}/${_dest_resource_file_name})
+        list(APPEND RELATIVE_RESOURCE_FILES_LIST  ${_dest_resource_file_name})
+
+    endforeach()
+
+    set(${JAVA_RESOURCE_FILES} "${RESOURCE_FILES_LIST}" PARENT_SCOPE)
+    set(${JAVA_RESOURCE_FILES_RELATIVE} "${RELATIVE_RESOURCE_FILES_LIST}" PARENT_SCOPE)
+endfunction()
+
+# define helper scripts
+set(_JAVA_EXPORT_TARGETS_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/UseJava/javaTargets.cmake.in)
+set(_JAVA_SYMLINK_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/UseJava/Symlinks.cmake)
+
+if (CMAKE_HOST_WIN32 AND NOT CYGWIN AND CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
+    set(_UseJava_PATH_SEP "$<SEMICOLON>")
+else ()
+    set(_UseJava_PATH_SEP ":")
+endif()
+
+function(add_jar _TARGET_NAME)
+
+    set(options)  # currently there are no zero value args (aka: options)
+    set(oneValueArgs "ENTRY_POINT;MANIFEST;OUTPUT_DIR;;OUTPUT_NAME;VERSION" )
+    set(multiValueArgs "GENERATE_NATIVE_HEADERS;INCLUDE_JARS;RESOURCES;SOURCES" )
+
+    cmake_parse_arguments(PARSE_ARGV 1 _add_jar
+                    "${options}"
+                    "${oneValueArgs}"
+                    "${multiValueArgs}" )
+
+    # In CMake < 2.8.12, add_jar used variables which were set prior to calling
+    # add_jar for customizing the behavior of add_jar. In order to be backwards
+    # compatible, check if any of those variables are set, and use them to
+    # initialize values of the named arguments. (Giving the corresponding named
+    # argument will override the value set here.)
+    #
+    # New features should use named arguments only.
+    if(NOT DEFINED _add_jar_VERSION AND DEFINED CMAKE_JAVA_TARGET_VERSION)
+        set(_add_jar_VERSION "${CMAKE_JAVA_TARGET_VERSION}")
+    endif()
+    if(NOT DEFINED _add_jar_OUTPUT_DIR AND DEFINED CMAKE_JAVA_TARGET_OUTPUT_DIR)
+        set(_add_jar_OUTPUT_DIR "${CMAKE_JAVA_TARGET_OUTPUT_DIR}")
+    endif()
+    if(NOT DEFINED _add_jar_OUTPUT_NAME AND DEFINED CMAKE_JAVA_TARGET_OUTPUT_NAME)
+        set(_add_jar_OUTPUT_NAME "${CMAKE_JAVA_TARGET_OUTPUT_NAME}")
+        # reset
+        set(CMAKE_JAVA_TARGET_OUTPUT_NAME)
+    endif()
+    if(NOT DEFINED _add_jar_ENTRY_POINT AND DEFINED CMAKE_JAVA_JAR_ENTRY_POINT)
+        set(_add_jar_ENTRY_POINT "${CMAKE_JAVA_JAR_ENTRY_POINT}")
+    endif()
+
+    # This *should* still work if <resources1>... are included without a
+    # named RESOURCES argument.  In that case, the old behavior of potentially
+    # misplacing the within the Jar will behave as previously (incorrectly)
+    set(_JAVA_SOURCE_FILES ${_add_jar_SOURCES} ${_add_jar_UNPARSED_ARGUMENTS})
+
+    if (NOT DEFINED _add_jar_OUTPUT_DIR)
+        set(_add_jar_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
+    else()
+        get_filename_component(_add_jar_OUTPUT_DIR ${_add_jar_OUTPUT_DIR} ABSOLUTE)
+    endif()
+    # ensure output directory exists
+    file (MAKE_DIRECTORY "${_add_jar_OUTPUT_DIR}")
+
+    if (_add_jar_ENTRY_POINT)
+        set(_ENTRY_POINT_OPTION e)
+        set(_ENTRY_POINT_VALUE ${_add_jar_ENTRY_POINT})
+    endif ()
+
+    if (_add_jar_MANIFEST)
+        set(_MANIFEST_OPTION m)
+        get_filename_component (_MANIFEST_VALUE "${_add_jar_MANIFEST}" ABSOLUTE)
+    endif ()
+
+    unset (_GENERATE_NATIVE_HEADERS)
+    if (_add_jar_GENERATE_NATIVE_HEADERS)
+      # Raise an error if JDK version is less than 1.8 because javac -h is not supported
+      # by earlier versions.
+      if (Java_VERSION VERSION_LESS 1.8)
+        message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS is not supported with this version of Java.")
+      endif()
+
+      unset (_GENERATE_NATIVE_HEADERS_OUTPUT_DESC)
+
+      cmake_parse_arguments (_add_jar_GENERATE_NATIVE_HEADERS "" "" "DESTINATION" ${_add_jar_GENERATE_NATIVE_HEADERS})
+      if (NOT _add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS)
+        message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS: missing required argument.")
+      endif()
+      list (LENGTH _add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS length)
+      if (length GREATER 1)
+        list (REMOVE_AT _add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS 0)
+        message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS: ${_add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS}: unexpected argument(s).")
+      endif()
+      if (NOT _add_jar_GENERATE_NATIVE_HEADERS_DESTINATION)
+        set (_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_TARGET_NAME}.dir/native_headers")
+      else()
+        list (LENGTH _add_jar_GENERATE_NATIVE_HEADERS_DESTINATION length)
+        if (NOT length EQUAL 1)
+          cmake_parse_arguments (_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION "" "BUILD;INSTALL" "" "${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION}")
+          if (_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_UNPARSED_ARGUMENTS)
+            message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS: DESTINATION: ${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_UNPARSED_ARGUMENTS}: unexpected argument(s).")
+          endif()
+          if (NOT _add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_INSTALL)
+            message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS: DESTINATION: INSTALL sub-option is required.")
+          endif()
+          if (NOT _add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_BUILD)
+            set(_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_BUILD "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_TARGET_NAME}.dir/native_headers")
+          endif()
+          set(_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION "${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_BUILD}")
+          set(_GENERATE_NATIVE_HEADERS_OUTPUT_DESC "$<BUILD_INTERFACE:${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_BUILD}>" "$<INSTALL_INTERFACE:${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_INSTALL}>")
+        endif()
+      endif()
+
+      set (_GENERATE_NATIVE_HEADERS_TARGET ${_add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS})
+      set (_GENERATE_NATIVE_HEADERS_OUTPUT_DIR "${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION}")
+      set (_GENERATE_NATIVE_HEADERS -h "${_GENERATE_NATIVE_HEADERS_OUTPUT_DIR}")
+      if(NOT _GENERATE_NATIVE_HEADERS_OUTPUT_DESC)
+        set(_GENERATE_NATIVE_HEADERS_OUTPUT_DESC "${_GENERATE_NATIVE_HEADERS_OUTPUT_DIR}")
+      endif()
+    endif()
+
+    if (LIBRARY_OUTPUT_PATH)
+        set(CMAKE_JAVA_LIBRARY_OUTPUT_PATH ${LIBRARY_OUTPUT_PATH})
+    else ()
+        set(CMAKE_JAVA_LIBRARY_OUTPUT_PATH ${_add_jar_OUTPUT_DIR})
+    endif ()
+
+    set(CMAKE_JAVA_INCLUDE_PATH
+        ${CMAKE_JAVA_INCLUDE_PATH}
+        ${CMAKE_CURRENT_SOURCE_DIR}
+        ${CMAKE_JAVA_OBJECT_OUTPUT_PATH}
+        ${CMAKE_JAVA_LIBRARY_OUTPUT_PATH}
+    )
+
+    foreach (JAVA_INCLUDE_DIR IN LISTS CMAKE_JAVA_INCLUDE_PATH)
+       string(APPEND CMAKE_JAVA_INCLUDE_PATH_FINAL "${_UseJava_PATH_SEP}${JAVA_INCLUDE_DIR}")
+    endforeach()
+
+    set(CMAKE_JAVA_CLASS_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_TARGET_NAME}.dir")
+
+    set(_JAVA_TARGET_OUTPUT_NAME "${_TARGET_NAME}.jar")
+    if (_add_jar_OUTPUT_NAME AND _add_jar_VERSION)
+        set(_JAVA_TARGET_OUTPUT_NAME "${_add_jar_OUTPUT_NAME}-${_add_jar_VERSION}.jar")
+        set(_JAVA_TARGET_OUTPUT_LINK "${_add_jar_OUTPUT_NAME}.jar")
+    elseif (_add_jar_VERSION)
+        set(_JAVA_TARGET_OUTPUT_NAME "${_TARGET_NAME}-${_add_jar_VERSION}.jar")
+        set(_JAVA_TARGET_OUTPUT_LINK "${_TARGET_NAME}.jar")
+    elseif (_add_jar_OUTPUT_NAME)
+        set(_JAVA_TARGET_OUTPUT_NAME "${_add_jar_OUTPUT_NAME}.jar")
+    endif ()
+
+    set(_JAVA_CLASS_FILES)
+    set(_JAVA_COMPILE_FILES)
+    set(_JAVA_COMPILE_FILELISTS)
+    set(_JAVA_DEPENDS)
+    set(_JAVA_COMPILE_DEPENDS)
+    set(_JAVA_RESOURCE_FILES)
+    set(_JAVA_RESOURCE_FILES_RELATIVE)
+    foreach(_JAVA_SOURCE_FILE IN LISTS _JAVA_SOURCE_FILES)
+        get_filename_component(_JAVA_EXT ${_JAVA_SOURCE_FILE} EXT)
+        get_filename_component(_JAVA_FILE ${_JAVA_SOURCE_FILE} NAME_WE)
+        get_filename_component(_JAVA_PATH ${_JAVA_SOURCE_FILE} PATH)
+        get_filename_component(_JAVA_FULL ${_JAVA_SOURCE_FILE} ABSOLUTE)
+
+        if (_JAVA_SOURCE_FILE MATCHES "^@(.+)$")
+            get_filename_component(_JAVA_FULL ${CMAKE_MATCH_1} ABSOLUTE)
+            list(APPEND _JAVA_COMPILE_FILELISTS ${_JAVA_FULL})
+
+        elseif (_JAVA_EXT MATCHES ".java")
+            file(RELATIVE_PATH _JAVA_REL_BINARY_PATH ${CMAKE_CURRENT_BINARY_DIR} ${_JAVA_FULL})
+            file(RELATIVE_PATH _JAVA_REL_SOURCE_PATH ${CMAKE_CURRENT_SOURCE_DIR} ${_JAVA_FULL})
+            string(LENGTH ${_JAVA_REL_BINARY_PATH} _BIN_LEN)
+            string(LENGTH ${_JAVA_REL_SOURCE_PATH} _SRC_LEN)
+            if (_BIN_LEN LESS _SRC_LEN)
+                set(_JAVA_REL_PATH ${_JAVA_REL_BINARY_PATH})
+            else ()
+                set(_JAVA_REL_PATH ${_JAVA_REL_SOURCE_PATH})
+            endif ()
+            get_filename_component(_JAVA_REL_PATH ${_JAVA_REL_PATH} PATH)
+
+            list(APPEND _JAVA_COMPILE_FILES ${_JAVA_SOURCE_FILE})
+            set(_JAVA_CLASS_FILE "${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${_JAVA_REL_PATH}/${_JAVA_FILE}.class")
+            set(_JAVA_CLASS_FILES ${_JAVA_CLASS_FILES} ${_JAVA_CLASS_FILE})
+
+        elseif (_JAVA_EXT MATCHES ".jar"
+                OR _JAVA_EXT MATCHES ".war"
+                OR _JAVA_EXT MATCHES ".ear"
+                OR _JAVA_EXT MATCHES ".sar")
+            # Ignored for backward compatibility
+
+        elseif (_JAVA_EXT STREQUAL "")
+            list(APPEND CMAKE_JAVA_INCLUDE_PATH ${JAVA_JAR_TARGET_${_JAVA_SOURCE_FILE}} ${JAVA_JAR_TARGET_${_JAVA_SOURCE_FILE}_CLASSPATH})
+            list(APPEND _JAVA_DEPENDS ${JAVA_JAR_TARGET_${_JAVA_SOURCE_FILE}})
+
+        else ()
+            __java_copy_file(${CMAKE_CURRENT_SOURCE_DIR}/${_JAVA_SOURCE_FILE}
+                             ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${_JAVA_SOURCE_FILE}
+                             "Copying ${_JAVA_SOURCE_FILE} to the build directory")
+            list(APPEND _JAVA_RESOURCE_FILES ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${_JAVA_SOURCE_FILE})
+            list(APPEND _JAVA_RESOURCE_FILES_RELATIVE ${_JAVA_SOURCE_FILE})
+        endif ()
+    endforeach()
+
+    if(_add_jar_RESOURCES)         # Process RESOURCES if it exists
+        __java_copy_resource_namespaces("${_add_jar_RESOURCES}"
+                                        ${CMAKE_JAVA_CLASS_OUTPUT_PATH}
+                                        _JAVA_RESOURCE_FILES
+                                        _JAVA_RESOURCE_FILES_RELATIVE)
+    endif()
+
+    foreach(_JAVA_INCLUDE_JAR IN LISTS _add_jar_INCLUDE_JARS)
+        if (TARGET ${_JAVA_INCLUDE_JAR})
+            get_target_property(_JAVA_JAR_PATH ${_JAVA_INCLUDE_JAR} JAR_FILE)
+            if (_JAVA_JAR_PATH)
+                string(APPEND CMAKE_JAVA_INCLUDE_PATH_FINAL "${_UseJava_PATH_SEP}${_JAVA_JAR_PATH}")
+                list(APPEND CMAKE_JAVA_INCLUDE_PATH ${_JAVA_JAR_PATH})
+                list(APPEND _JAVA_DEPENDS ${_JAVA_INCLUDE_JAR})
+                list(APPEND _JAVA_COMPILE_DEPENDS ${_JAVA_JAR_PATH})
+            else ()
+                message(SEND_ERROR "add_jar: INCLUDE_JARS target ${_JAVA_INCLUDE_JAR} is not a jar")
+            endif ()
+        else ()
+            string(APPEND CMAKE_JAVA_INCLUDE_PATH_FINAL "${_UseJava_PATH_SEP}${_JAVA_INCLUDE_JAR}")
+            list(APPEND CMAKE_JAVA_INCLUDE_PATH "${_JAVA_INCLUDE_JAR}")
+            list(APPEND _JAVA_DEPENDS "${_JAVA_INCLUDE_JAR}")
+            list(APPEND _JAVA_COMPILE_DEPENDS "${_JAVA_INCLUDE_JAR}")
+        endif ()
+    endforeach()
+
+    if (_JAVA_COMPILE_FILES OR _JAVA_COMPILE_FILELISTS)
+        set (_JAVA_SOURCES_FILELISTS)
+
+        if (_JAVA_COMPILE_FILES)
+            # Create the list of files to compile.
+            set(_JAVA_SOURCES_FILE ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_sources)
+            string(REPLACE ";" "\"\n\"" _JAVA_COMPILE_STRING "\"${_JAVA_COMPILE_FILES}\"")
+            set(CMAKE_CONFIGURABLE_FILE_CONTENT "${_JAVA_COMPILE_STRING}")
+            configure_file("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
+              "${_JAVA_SOURCES_FILE}" @ONLY)
+            unset(CMAKE_CONFIGURABLE_FILE_CONTENT)
+            list (APPEND _JAVA_SOURCES_FILELISTS "@${_JAVA_SOURCES_FILE}")
+        endif()
+        if (_JAVA_COMPILE_FILELISTS)
+            foreach (_JAVA_FILELIST IN LISTS _JAVA_COMPILE_FILELISTS)
+                list (APPEND _JAVA_SOURCES_FILELISTS "@${_JAVA_FILELIST}")
+            endforeach()
+        endif()
+
+        # Compile the java files and create a list of class files
+        add_custom_command(
+            # NOTE: this command generates an artificial dependency file
+            OUTPUT ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME}
+            COMMAND ${CMAKE_COMMAND}
+                -DCMAKE_JAVA_CLASS_OUTPUT_PATH=${CMAKE_JAVA_CLASS_OUTPUT_PATH}
+                -DCMAKE_JAR_CLASSES_PREFIX=${CMAKE_JAR_CLASSES_PREFIX}
+                -P ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/UseJava/ClearClassFiles.cmake
+            COMMAND ${Java_JAVAC_EXECUTABLE}
+                ${CMAKE_JAVA_COMPILE_FLAGS}
+                -classpath "${CMAKE_JAVA_INCLUDE_PATH_FINAL}"
+                -d ${CMAKE_JAVA_CLASS_OUTPUT_PATH}
+                ${_GENERATE_NATIVE_HEADERS}
+                ${_JAVA_SOURCES_FILELISTS}
+            COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME}
+            DEPENDS ${_JAVA_COMPILE_FILES} ${_JAVA_COMPILE_FILELISTS} ${_JAVA_COMPILE_DEPENDS} ${_JAVA_SOURCES_FILE}
+            WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+            COMMENT "Building Java objects for ${_TARGET_NAME}.jar"
+            VERBATIM
+        )
+        add_custom_command(
+            OUTPUT ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist
+            COMMAND ${CMAKE_COMMAND}
+                -DCMAKE_JAVA_CLASS_OUTPUT_PATH=${CMAKE_JAVA_CLASS_OUTPUT_PATH}
+                -DCMAKE_JAR_CLASSES_PREFIX=${CMAKE_JAR_CLASSES_PREFIX}
+                -P ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/UseJava/ClassFilelist.cmake
+            DEPENDS ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME}
+            WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+            VERBATIM
+        )
+    else ()
+        # create an empty java_class_filelist
+        if (NOT EXISTS ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist)
+            file(WRITE ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist "")
+        endif()
+    endif ()
+
+    # create the jar file
+    set(_JAVA_JAR_OUTPUT_PATH
+      "${_add_jar_OUTPUT_DIR}/${_JAVA_TARGET_OUTPUT_NAME}")
+    if (CMAKE_JNI_TARGET)
+        add_custom_command(
+            OUTPUT ${_JAVA_JAR_OUTPUT_PATH}
+            COMMAND ${Java_JAR_EXECUTABLE}
+                -cf${_ENTRY_POINT_OPTION}${_MANIFEST_OPTION} ${_JAVA_JAR_OUTPUT_PATH} ${_ENTRY_POINT_VALUE} ${_MANIFEST_VALUE}
+                ${_JAVA_RESOURCE_FILES_RELATIVE} @java_class_filelist
+            COMMAND ${CMAKE_COMMAND}
+                -D_JAVA_TARGET_DIR=${_add_jar_OUTPUT_DIR}
+                -D_JAVA_TARGET_OUTPUT_NAME=${_JAVA_TARGET_OUTPUT_NAME}
+                -D_JAVA_TARGET_OUTPUT_LINK=${_JAVA_TARGET_OUTPUT_LINK}
+                -P ${_JAVA_SYMLINK_SCRIPT}
+            COMMAND ${CMAKE_COMMAND}
+                -D_JAVA_TARGET_DIR=${_add_jar_OUTPUT_DIR}
+                -D_JAVA_TARGET_OUTPUT_NAME=${_JAVA_JAR_OUTPUT_PATH}
+                -D_JAVA_TARGET_OUTPUT_LINK=${_JAVA_TARGET_OUTPUT_LINK}
+                -P ${_JAVA_SYMLINK_SCRIPT}
+            DEPENDS ${_JAVA_RESOURCE_FILES} ${_JAVA_DEPENDS} ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist
+            WORKING_DIRECTORY ${CMAKE_JAVA_CLASS_OUTPUT_PATH}
+            COMMENT "Creating Java archive ${_JAVA_TARGET_OUTPUT_NAME}"
+            VERBATIM
+        )
+    else ()
+        add_custom_command(
+            OUTPUT ${_JAVA_JAR_OUTPUT_PATH}
+            COMMAND ${Java_JAR_EXECUTABLE}
+                -cf${_ENTRY_POINT_OPTION}${_MANIFEST_OPTION} ${_JAVA_JAR_OUTPUT_PATH} ${_ENTRY_POINT_VALUE} ${_MANIFEST_VALUE}
+                ${_JAVA_RESOURCE_FILES_RELATIVE} @java_class_filelist
+            COMMAND ${CMAKE_COMMAND}
+                -D_JAVA_TARGET_DIR=${_add_jar_OUTPUT_DIR}
+                -D_JAVA_TARGET_OUTPUT_NAME=${_JAVA_TARGET_OUTPUT_NAME}
+                -D_JAVA_TARGET_OUTPUT_LINK=${_JAVA_TARGET_OUTPUT_LINK}
+                -P ${_JAVA_SYMLINK_SCRIPT}
+            WORKING_DIRECTORY ${CMAKE_JAVA_CLASS_OUTPUT_PATH}
+            DEPENDS ${_JAVA_RESOURCE_FILES} ${_JAVA_DEPENDS} ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist
+            COMMENT "Creating Java archive ${_JAVA_TARGET_OUTPUT_NAME}"
+            VERBATIM
+        )
+    endif ()
+
+    # Add the target and make sure we have the latest resource files.
+    add_custom_target(${_TARGET_NAME} ALL DEPENDS ${_JAVA_JAR_OUTPUT_PATH})
+
+    set_property(
+        TARGET
+            ${_TARGET_NAME}
+        PROPERTY
+            INSTALL_FILES
+                ${_JAVA_JAR_OUTPUT_PATH}
+    )
+
+    if (_JAVA_TARGET_OUTPUT_LINK)
+        set_property(
+            TARGET
+                ${_TARGET_NAME}
+            PROPERTY
+                INSTALL_FILES
+                    ${_JAVA_JAR_OUTPUT_PATH}
+                    ${_add_jar_OUTPUT_DIR}/${_JAVA_TARGET_OUTPUT_LINK}
+        )
+
+        if (CMAKE_JNI_TARGET)
+            set_property(
+                TARGET
+                    ${_TARGET_NAME}
+                PROPERTY
+                    JNI_SYMLINK
+                        ${_add_jar_OUTPUT_DIR}/${_JAVA_TARGET_OUTPUT_LINK}
+            )
+        endif ()
+    endif ()
+
+    set_property(
+        TARGET
+            ${_TARGET_NAME}
+        PROPERTY
+            JAR_FILE
+                ${_JAVA_JAR_OUTPUT_PATH}
+    )
+
+    set_property(
+        TARGET
+            ${_TARGET_NAME}
+        PROPERTY
+            CLASSDIR
+                ${CMAKE_JAVA_CLASS_OUTPUT_PATH}
+    )
+
+  if (_GENERATE_NATIVE_HEADERS)
+    # create an INTERFACE library encapsulating include directory for generated headers
+    add_library (${_GENERATE_NATIVE_HEADERS_TARGET} INTERFACE)
+    target_include_directories (${_GENERATE_NATIVE_HEADERS_TARGET} INTERFACE
+      "${_GENERATE_NATIVE_HEADERS_OUTPUT_DESC}"
+      ${JNI_INCLUDE_DIRS})
+    set_property(TARGET ${_GENERATE_NATIVE_HEADERS_TARGET} PROPERTY NATIVE_HEADERS_DIRECTORY "${_GENERATE_NATIVE_HEADERS_OUTPUT_DIR}")
+    # this INTERFACE library depends on jar generation
+    add_dependencies (${_GENERATE_NATIVE_HEADERS_TARGET} ${_TARGET_NAME})
+
+    set_property (DIRECTORY APPEND PROPERTY ADDITIONAL_CLEAN_FILES
+      "${_GENERATE_NATIVE_HEADERS_OUTPUT_DIR}")
+  endif()
+endfunction()
+
+function(INSTALL_JAR _TARGET_NAME)
+    if (ARGC EQUAL 2)
+      set (_DESTINATION ${ARGV1})
+    else()
+      cmake_parse_arguments(_install_jar
+        ""
+        "DESTINATION;COMPONENT"
+        ""
+        ${ARGN})
+      if (_install_jar_DESTINATION)
+        set (_DESTINATION ${_install_jar_DESTINATION})
+      else()
+        message(SEND_ERROR "install_jar: ${_TARGET_NAME}: DESTINATION must be specified.")
+      endif()
+
+      if (_install_jar_COMPONENT)
+        set (_COMPONENT COMPONENT ${_install_jar_COMPONENT})
+      endif()
+    endif()
+
+    get_property(__FILES
+        TARGET
+            ${_TARGET_NAME}
+        PROPERTY
+            INSTALL_FILES
+    )
+    set_property(
+        TARGET
+            ${_TARGET_NAME}
+        PROPERTY
+            INSTALL_DESTINATION
+            ${_DESTINATION}
+    )
+
+    if (__FILES)
+        install(
+            FILES
+                ${__FILES}
+            DESTINATION
+                ${_DESTINATION}
+            ${_COMPONENT}
+        )
+    else ()
+        message(SEND_ERROR "install_jar: The target ${_TARGET_NAME} is not known in this scope.")
+    endif ()
+endfunction()
+
+function(INSTALL_JNI_SYMLINK _TARGET_NAME)
+    if (ARGC EQUAL 2)
+      set (_DESTINATION ${ARGV1})
+    else()
+      cmake_parse_arguments(_install_jni_symlink
+        ""
+        "DESTINATION;COMPONENT"
+        ""
+        ${ARGN})
+      if (_install_jni_symlink_DESTINATION)
+        set (_DESTINATION ${_install_jni_symlink_DESTINATION})
+      else()
+        message(SEND_ERROR "install_jni_symlink: ${_TARGET_NAME}: DESTINATION must be specified.")
+      endif()
+
+      if (_install_jni_symlink_COMPONENT)
+        set (_COMPONENT COMPONENT ${_install_jni_symlink_COMPONENT})
+      endif()
+    endif()
+
+    get_property(__SYMLINK
+        TARGET
+            ${_TARGET_NAME}
+        PROPERTY
+            JNI_SYMLINK
+    )
+
+    if (__SYMLINK)
+        install(
+            FILES
+                ${__SYMLINK}
+            DESTINATION
+                ${_DESTINATION}
+            ${_COMPONENT}
+        )
+    else ()
+        message(SEND_ERROR "install_jni_symlink: The target ${_TARGET_NAME} is not known in this scope.")
+    endif ()
+endfunction()
+
+function (find_jar VARIABLE)
+    set(_jar_names)
+    set(_jar_files)
+    set(_jar_versions)
+    set(_jar_paths
+        /usr/share/java/
+        /usr/local/share/java/
+        ${Java_JAR_PATHS})
+    set(_jar_doc "NOTSET")
+
+    set(_state "name")
+
+    foreach (arg IN LISTS ARGN)
+        if (_state STREQUAL "name")
+            if (arg STREQUAL "VERSIONS")
+                set(_state "versions")
+            elseif (arg STREQUAL "NAMES")
+                set(_state "names")
+            elseif (arg STREQUAL "PATHS")
+                set(_state "paths")
+            elseif (arg STREQUAL "DOC")
+                set(_state "doc")
+            else ()
+                set(_jar_names ${arg})
+                if (_jar_doc STREQUAL "NOTSET")
+                    set(_jar_doc "Finding ${arg} jar")
+                endif ()
+            endif ()
+        elseif (_state STREQUAL "versions")
+            if (arg STREQUAL "NAMES")
+                set(_state "names")
+            elseif (arg STREQUAL "PATHS")
+                set(_state "paths")
+            elseif (arg STREQUAL "DOC")
+                set(_state "doc")
+            else ()
+                set(_jar_versions ${_jar_versions} ${arg})
+            endif ()
+        elseif (_state STREQUAL "names")
+            if (arg STREQUAL "VERSIONS")
+                set(_state "versions")
+            elseif (arg STREQUAL "PATHS")
+                set(_state "paths")
+            elseif (arg STREQUAL "DOC")
+                set(_state "doc")
+            else ()
+                set(_jar_names ${_jar_names} ${arg})
+                if (_jar_doc STREQUAL "NOTSET")
+                    set(_jar_doc "Finding ${arg} jar")
+                endif ()
+            endif ()
+        elseif (_state STREQUAL "paths")
+            if (arg STREQUAL "VERSIONS")
+                set(_state "versions")
+            elseif (arg STREQUAL "NAMES")
+                set(_state "names")
+            elseif (arg STREQUAL "DOC")
+                set(_state "doc")
+            else ()
+                set(_jar_paths ${_jar_paths} ${arg})
+            endif ()
+        elseif (_state STREQUAL "doc")
+            if (arg STREQUAL "VERSIONS")
+                set(_state "versions")
+            elseif (arg STREQUAL "NAMES")
+                set(_state "names")
+            elseif (arg STREQUAL "PATHS")
+                set(_state "paths")
+            else ()
+                set(_jar_doc ${arg})
+            endif ()
+        endif ()
+    endforeach ()
+
+    if (NOT _jar_names)
+        message(FATAL_ERROR "find_jar: No name to search for given")
+    endif ()
+
+    foreach (jar_name IN LISTS _jar_names)
+        foreach (version IN LISTS _jar_versions)
+            set(_jar_files ${_jar_files} ${jar_name}-${version}.jar)
+        endforeach ()
+        set(_jar_files ${_jar_files} ${jar_name}.jar)
+    endforeach ()
+
+    find_file(${VARIABLE}
+        NAMES   ${_jar_files}
+        PATHS   ${_jar_paths}
+        DOC     ${_jar_doc}
+        NO_DEFAULT_PATH)
+endfunction ()
+
+function(create_javadoc _target)
+    set(_javadoc_packages)
+    set(_javadoc_files)
+    set(_javadoc_sourcepath)
+    set(_javadoc_classpath)
+    set(_javadoc_installpath "${CMAKE_INSTALL_PREFIX}/share/javadoc")
+    set(_javadoc_doctitle)
+    set(_javadoc_windowtitle)
+    set(_javadoc_author FALSE)
+    set(_javadoc_version FALSE)
+    set(_javadoc_use FALSE)
+
+    set(_state "package")
+
+    foreach (arg IN LISTS ARGN)
+        if (_state STREQUAL "package")
+            if (arg STREQUAL "PACKAGES")
+                set(_state "packages")
+            elseif (arg STREQUAL "FILES")
+                set(_state "files")
+            elseif (arg STREQUAL "SOURCEPATH")
+                set(_state "sourcepath")
+            elseif (arg STREQUAL "CLASSPATH")
+                set(_state "classpath")
+            elseif (arg STREQUAL "INSTALLPATH")
+                set(_state "installpath")
+            elseif (arg STREQUAL "DOCTITLE")
+                set(_state "doctitle")
+            elseif (arg STREQUAL "WINDOWTITLE")
+                set(_state "windowtitle")
+            elseif (arg STREQUAL "AUTHOR")
+                set(_state "author")
+            elseif (arg STREQUAL "USE")
+                set(_state "use")
+            elseif (arg STREQUAL "VERSION")
+                set(_state "version")
+            else ()
+                set(_javadoc_packages ${arg})
+                set(_state "packages")
+            endif ()
+        elseif (_state STREQUAL "packages")
+            if (arg STREQUAL "FILES")
+                set(_state "files")
+            elseif (arg STREQUAL "SOURCEPATH")
+                set(_state "sourcepath")
+            elseif (arg STREQUAL "CLASSPATH")
+                set(_state "classpath")
+            elseif (arg STREQUAL "INSTALLPATH")
+                set(_state "installpath")
+            elseif (arg STREQUAL "DOCTITLE")
+                set(_state "doctitle")
+            elseif (arg STREQUAL "WINDOWTITLE")
+                set(_state "windowtitle")
+            elseif (arg STREQUAL "AUTHOR")
+                set(_state "author")
+            elseif (arg STREQUAL "USE")
+                set(_state "use")
+            elseif (arg STREQUAL "VERSION")
+                set(_state "version")
+            else ()
+                list(APPEND _javadoc_packages ${arg})
+            endif ()
+        elseif (_state STREQUAL "files")
+            if (arg STREQUAL "PACKAGES")
+                set(_state "packages")
+            elseif (arg STREQUAL "SOURCEPATH")
+                set(_state "sourcepath")
+            elseif (arg STREQUAL "CLASSPATH")
+                set(_state "classpath")
+            elseif (arg STREQUAL "INSTALLPATH")
+                set(_state "installpath")
+            elseif (arg STREQUAL "DOCTITLE")
+                set(_state "doctitle")
+            elseif (arg STREQUAL "WINDOWTITLE")
+                set(_state "windowtitle")
+            elseif (arg STREQUAL "AUTHOR")
+                set(_state "author")
+            elseif (arg STREQUAL "USE")
+                set(_state "use")
+            elseif (arg STREQUAL "VERSION")
+                set(_state "version")
+            else ()
+                list(APPEND _javadoc_files ${arg})
+            endif ()
+        elseif (_state STREQUAL "sourcepath")
+            if (arg STREQUAL "PACKAGES")
+                set(_state "packages")
+            elseif (arg STREQUAL "FILES")
+                set(_state "files")
+            elseif (arg STREQUAL "CLASSPATH")
+                set(_state "classpath")
+            elseif (arg STREQUAL "INSTALLPATH")
+                set(_state "installpath")
+            elseif (arg STREQUAL "DOCTITLE")
+                set(_state "doctitle")
+            elseif (arg STREQUAL "WINDOWTITLE")
+                set(_state "windowtitle")
+            elseif (arg STREQUAL "AUTHOR")
+                set(_state "author")
+            elseif (arg STREQUAL "USE")
+                set(_state "use")
+            elseif (arg STREQUAL "VERSION")
+                set(_state "version")
+            else ()
+                list(APPEND _javadoc_sourcepath ${arg})
+            endif ()
+        elseif (_state STREQUAL "classpath")
+            if (arg STREQUAL "PACKAGES")
+                set(_state "packages")
+            elseif (arg STREQUAL "FILES")
+                set(_state "files")
+            elseif (arg STREQUAL "SOURCEPATH")
+                set(_state "sourcepath")
+            elseif (arg STREQUAL "INSTALLPATH")
+                set(_state "installpath")
+            elseif (arg STREQUAL "DOCTITLE")
+                set(_state "doctitle")
+            elseif (arg STREQUAL "WINDOWTITLE")
+                set(_state "windowtitle")
+            elseif (arg STREQUAL "AUTHOR")
+                set(_state "author")
+            elseif (arg STREQUAL "USE")
+                set(_state "use")
+            elseif (arg STREQUAL "VERSION")
+                set(_state "version")
+            else ()
+                list(APPEND _javadoc_classpath ${arg})
+            endif ()
+        elseif (_state STREQUAL "installpath")
+            if (arg STREQUAL "PACKAGES")
+                set(_state "packages")
+            elseif (arg STREQUAL "FILES")
+                set(_state "files")
+            elseif (arg STREQUAL "SOURCEPATH")
+                set(_state "sourcepath")
+            elseif (arg STREQUAL "DOCTITLE")
+                set(_state "doctitle")
+            elseif (arg STREQUAL "WINDOWTITLE")
+                set(_state "windowtitle")
+            elseif (arg STREQUAL "AUTHOR")
+                set(_state "author")
+            elseif (arg STREQUAL "USE")
+                set(_state "use")
+            elseif (arg STREQUAL "VERSION")
+                set(_state "version")
+            else ()
+                set(_javadoc_installpath ${arg})
+            endif ()
+        elseif (_state STREQUAL "doctitle")
+            if (${arg} STREQUAL "PACKAGES")
+                set(_state "packages")
+            elseif (arg STREQUAL "FILES")
+                set(_state "files")
+            elseif (arg STREQUAL "SOURCEPATH")
+                set(_state "sourcepath")
+            elseif (arg STREQUAL "INSTALLPATH")
+                set(_state "installpath")
+            elseif (arg STREQUAL "CLASSPATH")
+                set(_state "classpath")
+            elseif (arg STREQUAL "WINDOWTITLE")
+                set(_state "windowtitle")
+            elseif (arg STREQUAL "AUTHOR")
+                set(_state "author")
+            elseif (arg STREQUAL "USE")
+                set(_state "use")
+            elseif (arg STREQUAL "VERSION")
+                set(_state "version")
+            else ()
+                set(_javadoc_doctitle ${arg})
+            endif ()
+        elseif (_state STREQUAL "windowtitle")
+            if (${arg} STREQUAL "PACKAGES")
+                set(_state "packages")
+            elseif (arg STREQUAL "FILES")
+                set(_state "files")
+            elseif (arg STREQUAL "SOURCEPATH")
+                set(_state "sourcepath")
+            elseif (arg STREQUAL "CLASSPATH")
+                set(_state "classpath")
+            elseif (arg STREQUAL "INSTALLPATH")
+                set(_state "installpath")
+            elseif (arg STREQUAL "DOCTITLE")
+                set(_state "doctitle")
+            elseif (arg STREQUAL "AUTHOR")
+                set(_state "author")
+            elseif (arg STREQUAL "USE")
+                set(_state "use")
+            elseif (arg STREQUAL "VERSION")
+                set(_state "version")
+            else ()
+                set(_javadoc_windowtitle ${arg})
+            endif ()
+        elseif (_state STREQUAL "author")
+            if (arg STREQUAL "PACKAGES")
+                set(_state "packages")
+            elseif (arg STREQUAL "FILES")
+                set(_state "files")
+            elseif (arg STREQUAL "SOURCEPATH")
+                set(_state "sourcepath")
+            elseif (arg STREQUAL "CLASSPATH")
+                set(_state "classpath")
+            elseif (arg STREQUAL "INSTALLPATH")
+                set(_state "installpath")
+            elseif (arg STREQUAL "DOCTITLE")
+                set(_state "doctitle")
+            elseif (arg STREQUAL "WINDOWTITLE")
+                set(_state "windowtitle")
+            elseif (arg STREQUAL "AUTHOR")
+                set(_state "author")
+            elseif (arg STREQUAL "USE")
+                set(_state "use")
+            elseif (arg STREQUAL "VERSION")
+                set(_state "version")
+            else ()
+                set(_javadoc_author ${arg})
+            endif ()
+        elseif (_state STREQUAL "use")
+            if (arg STREQUAL "PACKAGES")
+                set(_state "packages")
+            elseif (arg STREQUAL "FILES")
+                set(_state "files")
+            elseif (arg STREQUAL "SOURCEPATH")
+                set(_state "sourcepath")
+            elseif (arg STREQUAL "CLASSPATH")
+                set(_state "classpath")
+            elseif (arg STREQUAL "INSTALLPATH")
+                set(_state "installpath")
+            elseif (arg STREQUAL "DOCTITLE")
+                set(_state "doctitle")
+            elseif (arg STREQUAL "WINDOWTITLE")
+                set(_state "windowtitle")
+            elseif (arg STREQUAL "AUTHOR")
+                set(_state "author")
+            elseif (arg STREQUAL "USE")
+                set(_state "use")
+            elseif (arg STREQUAL "VERSION")
+                set(_state "version")
+            else ()
+                set(_javadoc_use ${arg})
+            endif ()
+        elseif (_state STREQUAL "version")
+            if (arg STREQUAL "PACKAGES")
+                set(_state "packages")
+            elseif (arg STREQUAL "FILES")
+                set(_state "files")
+            elseif (arg STREQUAL "SOURCEPATH")
+                set(_state "sourcepath")
+            elseif (arg STREQUAL "CLASSPATH")
+                set(_state "classpath")
+            elseif (arg STREQUAL "INSTALLPATH")
+                set(_state "installpath")
+            elseif (arg STREQUAL "DOCTITLE")
+                set(_state "doctitle")
+            elseif (arg STREQUAL "WINDOWTITLE")
+                set(_state "windowtitle")
+            elseif (arg STREQUAL "AUTHOR")
+                set(_state "author")
+            elseif (arg STREQUAL "USE")
+                set(_state "use")
+            elseif (arg STREQUAL "VERSION")
+                set(_state "version")
+            else ()
+                set(_javadoc_version ${arg})
+            endif ()
+        endif ()
+    endforeach ()
+
+    set(_javadoc_builddir ${CMAKE_CURRENT_BINARY_DIR}/javadoc/${_target})
+    set(_javadoc_options -d ${_javadoc_builddir})
+
+    if (_javadoc_sourcepath)
+        list(JOIN _javadoc_sourcepath "${_UseJava_PATH_SEP}" _javadoc_sourcepath)
+        list(APPEND _javadoc_options -sourcepath "\"${_javadoc_sourcepath}\"")
+    endif ()
+
+    if (_javadoc_classpath)
+        list(JOIN _javadoc_classpath "${_UseJava_PATH_SEP}" _javadoc_classpath)
+        list(APPEND _javadoc_options -classpath "\"${_javadoc_classpath}\"")
+    endif ()
+
+    if (_javadoc_doctitle)
+        list(APPEND _javadoc_options -doctitle '${_javadoc_doctitle}')
+    endif ()
+
+    if (_javadoc_windowtitle)
+        list(APPEND _javadoc_options -windowtitle '${_javadoc_windowtitle}')
+    endif ()
+
+    if (_javadoc_author)
+        list(APPEND _javadoc_options -author)
+    endif ()
+
+    if (_javadoc_use)
+        list(APPEND _javadoc_options -use)
+    endif ()
+
+    if (_javadoc_version)
+        list(APPEND _javadoc_options -version)
+    endif ()
+
+    add_custom_target(${_target}_javadoc ALL
+        COMMAND ${Java_JAVADOC_EXECUTABLE}
+                ${_javadoc_options}
+                ${_javadoc_files}
+                ${_javadoc_packages}
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    )
+
+    install(
+        DIRECTORY ${_javadoc_builddir}
+        DESTINATION ${_javadoc_installpath}
+    )
+endfunction()
+
+function (create_javah)
+  if (Java_VERSION VERSION_GREATER_EQUAL 10)
+    message (FATAL_ERROR "create_javah: not supported with this Java version. Use add_jar(GENERATE_NATIVE_HEADERS) instead.")
+  elseif (Java_VERSION VERSION_GREATER_EQUAL 1.8)
+    message (DEPRECATION "create_javah: this command will no longer be supported starting with version 10 of JDK. Update your project by using command add_jar(GENERATE_NATIVE_HEADERS) instead.")
+  endif()
+
+    cmake_parse_arguments(_create_javah
+      ""
+      "TARGET;GENERATED_FILES;OUTPUT_NAME;OUTPUT_DIR"
+      "CLASSES;CLASSPATH;DEPENDS"
+      ${ARGN})
+
+    # ckeck parameters
+    if (NOT _create_javah_TARGET AND NOT _create_javah_GENERATED_FILES)
+      message (FATAL_ERROR "create_javah: TARGET or GENERATED_FILES must be specified.")
+    endif()
+    if (_create_javah_OUTPUT_NAME AND _create_javah_OUTPUT_DIR)
+      message (FATAL_ERROR "create_javah: OUTPUT_NAME and OUTPUT_DIR are mutually exclusive.")
+    endif()
+
+    if (NOT _create_javah_CLASSES)
+      message (FATAL_ERROR "create_javah: CLASSES is a required parameter.")
+    endif()
+
+    set (_output_files)
+
+    # handle javah options
+    set (_javah_options)
+
+    if (_create_javah_CLASSPATH)
+      # CLASSPATH can specify directories, jar files or targets created with add_jar command
+      set (_classpath)
+      foreach (_path IN LISTS _create_javah_CLASSPATH)
+        if (TARGET ${_path})
+          get_target_property (_jar_path ${_path} JAR_FILE)
+          if (_jar_path)
+            list (APPEND _classpath "${_jar_path}")
+            list (APPEND _create_javah_DEPENDS "${_path}")
+          else()
+            message(SEND_ERROR "create_javah: CLASSPATH target ${_path} is not a jar.")
+          endif()
+        elseif (EXISTS "${_path}")
+          list (APPEND _classpath "${_path}")
+          if (NOT IS_DIRECTORY "${_path}")
+            list (APPEND _create_javah_DEPENDS "${_path}")
+          endif()
+        else()
+          message(SEND_ERROR "create_javah: CLASSPATH entry ${_path} does not exist.")
+        endif()
+      endforeach()
+      string (REPLACE ";" "${_UseJava_PATH_SEP}" _classpath "${_classpath}")
+      list (APPEND _javah_options -classpath "${_classpath}")
+    endif()
+
+    if (_create_javah_OUTPUT_DIR)
+      list (APPEND _javah_options -d "${_create_javah_OUTPUT_DIR}")
+    endif()
+
+    if (_create_javah_OUTPUT_NAME)
+      list (APPEND _javah_options -o "${_create_javah_OUTPUT_NAME}")
+      set (_output_files "${_create_javah_OUTPUT_NAME}")
+
+      get_filename_component (_create_javah_OUTPUT_DIR "${_create_javah_OUTPUT_NAME}" DIRECTORY)
+      get_filename_component (_create_javah_OUTPUT_DIR "${_create_javah_OUTPUT_DIR}" ABSOLUTE)
+    endif()
+
+    if (NOT _create_javah_OUTPUT_DIR)
+      set (_create_javah_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")
+    endif()
+
+    if (NOT _create_javah_OUTPUT_NAME)
+      # compute output names
+      foreach (_class IN LISTS _create_javah_CLASSES)
+        string (REPLACE "." "_" _c_header "${_class}")
+        set (_c_header  "${_create_javah_OUTPUT_DIR}/${_c_header}.h")
+        list (APPEND _output_files "${_c_header}")
+      endforeach()
+    endif()
+
+    # finalize custom command arguments
+    if (_create_javah_DEPENDS)
+      list (INSERT _create_javah_DEPENDS 0 DEPENDS)
+    endif()
+
+    add_custom_command (OUTPUT ${_output_files}
+      COMMAND "${Java_JAVAH_EXECUTABLE}" ${_javah_options} -jni ${_create_javah_CLASSES}
+      ${_create_javah_DEPENDS}
+      WORKING_DIRECTORY ${_create_javah_OUTPUT_DIR}
+      COMMENT "Building C header files from classes...")
+
+    if (_create_javah_TARGET)
+      add_custom_target (${_create_javah_TARGET} ALL DEPENDS ${_output_files})
+    endif()
+    if (_create_javah_GENERATED_FILES)
+      set (${_create_javah_GENERATED_FILES} ${_output_files} PARENT_SCOPE)
+    endif()
+endfunction()
+
+function(export_jars)
+    # Parse and validate arguments
+    cmake_parse_arguments(_export_jars
+      ""
+      "FILE;NAMESPACE"
+      "TARGETS"
+      ${ARGN}
+    )
+    if (NOT _export_jars_FILE)
+      message(SEND_ERROR "export_jars: FILE must be specified.")
+    endif()
+    if (NOT _export_jars_TARGETS)
+      message(SEND_ERROR "export_jars: TARGETS must be specified.")
+    endif()
+    set(_jar_NAMESPACE "${_export_jars_NAMESPACE}")
+
+    # Set content of generated exports file
+    string(REPLACE ";" " " __targets__ "${_export_jars_TARGETS}")
+    set(__targetdefs__ "")
+    foreach(_target IN LISTS _export_jars_TARGETS)
+        get_target_property(_jarpath ${_target} JAR_FILE)
+        get_filename_component(_jarpath ${_jarpath} PATH)
+        __java_export_jar(__targetdefs__ ${_target} "${_jarpath}")
+    endforeach()
+
+    # Generate exports file
+    configure_file(
+      ${_JAVA_EXPORT_TARGETS_SCRIPT}
+      ${_export_jars_FILE}
+      @ONLY
+    )
+endfunction()
+
+function(install_jar_exports)
+    # Parse and validate arguments
+    cmake_parse_arguments(_install_jar_exports
+      ""
+      "FILE;DESTINATION;COMPONENT;NAMESPACE"
+      "TARGETS"
+      ${ARGN}
+    )
+    if (NOT _install_jar_exports_FILE)
+      message(SEND_ERROR "install_jar_exports: FILE must be specified.")
+    endif()
+    if (NOT _install_jar_exports_DESTINATION)
+      message(SEND_ERROR "install_jar_exports: DESTINATION must be specified.")
+    endif()
+    if (NOT _install_jar_exports_TARGETS)
+      message(SEND_ERROR "install_jar_exports: TARGETS must be specified.")
+    endif()
+    set(_jar_NAMESPACE "${_install_jar_exports_NAMESPACE}")
+
+    if (_install_jar_exports_COMPONENT)
+      set (_COMPONENT COMPONENT ${_install_jar_exports_COMPONENT})
+    endif()
+
+    # Determine relative path from installed export file to install prefix
+    if(IS_ABSOLUTE "${_install_jar_exports_DESTINATION}")
+      file(RELATIVE_PATH _relpath
+        ${_install_jar_exports_DESTINATION}
+        ${CMAKE_INSTALL_PREFIX}
+      )
+    else()
+      file(RELATIVE_PATH _relpath
+        ${CMAKE_INSTALL_PREFIX}/${_install_jar_exports_DESTINATION}
+        ${CMAKE_INSTALL_PREFIX}
+      )
+    endif()
+
+    # Set up unique location for generated exports file
+    string(SHA256 _hash "${_install_jar_exports_DESTINATION}")
+    set(_tmpdir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/JavaExports/${_hash})
+
+    # Set content of generated exports file
+    string(REPLACE ";" " " __targets__ "${_install_jar_exports_TARGETS}")
+    set(__targetdefs__ "set(_prefix \${CMAKE_CURRENT_LIST_DIR}/${_relpath})\n\n")
+    foreach(_target IN LISTS _install_jar_exports_TARGETS)
+        get_target_property(_dir ${_target} INSTALL_DESTINATION)
+        __java_export_jar(__targetdefs__ ${_target} "\${_prefix}/${_dir}")
+    endforeach()
+    __java_lcat(__targetdefs__ "\nunset(_prefix)")
+
+    # Generate and install exports file
+    configure_file(
+      ${_JAVA_EXPORT_TARGETS_SCRIPT}
+      ${_tmpdir}/${_install_jar_exports_FILE}
+      @ONLY
+    )
+    install(FILES ${_tmpdir}/${_install_jar_exports_FILE}
+            DESTINATION ${_install_jar_exports_DESTINATION}
+            ${_COMPONENT})
+endfunction()
diff --git a/share/cmake-3.22/Modules/UseJava/ClassFilelist.cmake b/share/cmake-3.22/Modules/UseJava/ClassFilelist.cmake
new file mode 100644
index 0000000..aa9e35d
--- /dev/null
+++ b/share/cmake-3.22/Modules/UseJava/ClassFilelist.cmake
@@ -0,0 +1,40 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# This script creates a list of compiled Java class files to be added to
+# a jar file.  This avoids including cmake files which get created in
+# the binary directory.
+
+if (CMAKE_JAVA_CLASS_OUTPUT_PATH)
+    if (EXISTS "${CMAKE_JAVA_CLASS_OUTPUT_PATH}")
+
+        set(_JAVA_GLOBBED_FILES)
+        if (CMAKE_JAR_CLASSES_PREFIX)
+            foreach(JAR_CLASS_PREFIX ${CMAKE_JAR_CLASSES_PREFIX})
+                message(STATUS "JAR_CLASS_PREFIX: ${JAR_CLASS_PREFIX}")
+
+                file(GLOB_RECURSE _JAVA_GLOBBED_TMP_FILES "${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${JAR_CLASS_PREFIX}/*.class")
+                if (_JAVA_GLOBBED_TMP_FILES)
+                    list(APPEND _JAVA_GLOBBED_FILES ${_JAVA_GLOBBED_TMP_FILES})
+                endif ()
+            endforeach()
+        else()
+            file(GLOB_RECURSE _JAVA_GLOBBED_FILES "${CMAKE_JAVA_CLASS_OUTPUT_PATH}/*.class")
+        endif ()
+
+        set(_JAVA_CLASS_FILES)
+        # file(GLOB_RECURSE foo RELATIVE) is broken so we need this.
+        foreach(_JAVA_GLOBBED_FILE ${_JAVA_GLOBBED_FILES})
+            file(RELATIVE_PATH _JAVA_CLASS_FILE ${CMAKE_JAVA_CLASS_OUTPUT_PATH} ${_JAVA_GLOBBED_FILE})
+            set(_JAVA_CLASS_FILES ${_JAVA_CLASS_FILES}${_JAVA_CLASS_FILE}\n)
+        endforeach()
+
+        # write to file
+        file(WRITE ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist ${_JAVA_CLASS_FILES})
+
+    else ()
+        message(SEND_ERROR "FATAL: Java class output path doesn't exist")
+    endif ()
+else ()
+    message(SEND_ERROR "FATAL: Can't find CMAKE_JAVA_CLASS_OUTPUT_PATH")
+endif ()
diff --git a/share/cmake-3.18/Modules/UseJava/ClearClassFiles.cmake b/share/cmake-3.22/Modules/UseJava/ClearClassFiles.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/UseJava/ClearClassFiles.cmake
rename to share/cmake-3.22/Modules/UseJava/ClearClassFiles.cmake
diff --git a/share/cmake-3.22/Modules/UseJava/Symlinks.cmake b/share/cmake-3.22/Modules/UseJava/Symlinks.cmake
new file mode 100644
index 0000000..2788195
--- /dev/null
+++ b/share/cmake-3.22/Modules/UseJava/Symlinks.cmake
@@ -0,0 +1,20 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# Helper script for UseJava.cmake
+
+if (UNIX AND _JAVA_TARGET_OUTPUT_LINK)
+    if (_JAVA_TARGET_OUTPUT_NAME)
+        find_program(LN_EXECUTABLE
+            NAMES
+                ln
+        )
+
+        execute_process(
+            COMMAND ${LN_EXECUTABLE} -sf "${_JAVA_TARGET_OUTPUT_NAME}" "${_JAVA_TARGET_OUTPUT_LINK}"
+            WORKING_DIRECTORY ${_JAVA_TARGET_DIR}
+        )
+    else ()
+        message(SEND_ERROR "FATAL: Can't find _JAVA_TARGET_OUTPUT_NAME")
+    endif ()
+endif ()
diff --git a/share/cmake-3.22/Modules/UseJava/javaTargets.cmake.in b/share/cmake-3.22/Modules/UseJava/javaTargets.cmake.in
new file mode 100644
index 0000000..6e14256
--- /dev/null
+++ b/share/cmake-3.22/Modules/UseJava/javaTargets.cmake.in
@@ -0,0 +1,39 @@
+cmake_minimum_required(VERSION 2.8.12)
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.8)
+
+#----------------------------------------------------------------
+# Generated CMake Java target import file.
+#----------------------------------------------------------------
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_targetsDefined)
+set(_targetsNotDefined)
+set(_expectedTargets)
+foreach(_expectedTarget @__targets__@)
+  list(APPEND _expectedTargets ${_expectedTarget})
+  if(TARGET ${_expectedTarget})
+    list(APPEND _targetsDefined ${_expectedTarget})
+  else()
+    list(APPEND _targetsNotDefined ${_expectedTarget})
+  endif()
+endforeach()
+if("%${_targetsDefined}" STREQUAL "%${_expectedTargets}")
+  unset(_targetsDefined)
+  unset(_targetsNotDefined)
+  unset(_expectedTargets)
+  cmake_policy(POP)
+  return()
+endif()
+if(NOT "${_targetsDefined}" STREQUAL "")
+  message(FATAL_ERROR
+    "Some (but not all) targets in this export set were already defined.\n"
+    "Targets Defined: ${_targetsDefined}\n"
+    "Targets not yet defined: ${_targetsNotDefined}\n")
+endif()
+unset(_targetsDefined)
+unset(_targetsNotDefined)
+unset(_expectedTargets)
+
+@__targetdefs__@
+cmake_policy(POP)
diff --git a/share/cmake-3.18/Modules/UsePkgConfig.cmake b/share/cmake-3.22/Modules/UsePkgConfig.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/UsePkgConfig.cmake
rename to share/cmake-3.22/Modules/UsePkgConfig.cmake
diff --git a/share/cmake-3.18/Modules/UseQt4.cmake b/share/cmake-3.22/Modules/UseQt4.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/UseQt4.cmake
rename to share/cmake-3.22/Modules/UseQt4.cmake
diff --git a/share/cmake-3.22/Modules/UseSWIG.cmake b/share/cmake-3.22/Modules/UseSWIG.cmake
new file mode 100644
index 0000000..35b1704
--- /dev/null
+++ b/share/cmake-3.22/Modules/UseSWIG.cmake
@@ -0,0 +1,1041 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+UseSWIG
+-------
+
+This file provides support for ``SWIG``. It is assumed that :module:`FindSWIG`
+module has already been loaded.
+
+Defines the following command for use with ``SWIG``:
+
+.. command:: swig_add_library
+
+  .. versionadded:: 3.8
+
+  Define swig module with given name and specified language::
+
+    swig_add_library(<name>
+                     [TYPE <SHARED|MODULE|STATIC|USE_BUILD_SHARED_LIBS>]
+                     LANGUAGE <language>
+                     [NO_PROXY]
+                     [OUTPUT_DIR <directory>]
+                     [OUTFILE_DIR <directory>]
+                     SOURCES <file>...
+                    )
+
+  Targets created with the ``swig_add_library`` command have the same
+  capabilities as targets created with the :command:`add_library` command, so
+  those targets can be used with any command expecting a target (e.g.
+  :command:`target_link_libraries`).
+
+  .. versionchanged:: 3.13
+    This command creates a target with the specified ``<name>`` when
+    policy :policy:`CMP0078` is set to ``NEW``.  Otherwise, the legacy
+    behavior will choose a different target name and store it in the
+    ``SWIG_MODULE_<name>_REAL_NAME`` variable.
+
+  .. versionchanged:: 3.15
+    Alternate library name (set with the :prop_tgt:`OUTPUT_NAME` property,
+    for example) will be passed on to ``Python`` and ``CSharp`` wrapper
+    libraries.
+
+  .. versionchanged:: 3.21
+    Generated library use standard naming conventions for ``CSharp`` language
+    when policy :policy:`CMP0122` is set to ``NEW``. Otherwise, the legacy
+    behavior is applied.
+
+  .. note::
+
+    For multi-config generators, this module does not support
+    configuration-specific files generated by ``SWIG``. All build
+    configurations must result in the same generated source file.
+
+  .. note::
+
+    For :ref:`Makefile Generators`, if, for some sources, the
+    ``USE_SWIG_DEPENDENCIES`` property is ``FALSE``, ``swig_add_library`` does
+    not track file dependencies, so depending on the ``<name>_swig_compilation``
+    custom target is required for targets which require the ``swig``-generated
+    files to exist. Other generators may depend on the source files that would
+    be generated by SWIG.
+
+  ``TYPE``
+    ``SHARED``, ``MODULE`` and ``STATIC`` have the same semantic as for the
+    :command:`add_library` command. If ``USE_BUILD_SHARED_LIBS`` is specified,
+    the library type will be ``STATIC`` or ``SHARED`` based on whether the
+    current value of the :variable:`BUILD_SHARED_LIBS` variable is ``ON``. If
+    no type is specified, ``MODULE`` will be used.
+
+  ``LANGUAGE``
+    Specify the target language.
+
+    .. versionadded:: 3.1
+      Go and Lua language support.
+
+    .. versionadded:: 3.2
+      R language support.
+
+    .. versionadded:: 3.18
+      Fortran language support.
+
+  ``NO_PROXY``
+    .. versionadded:: 3.12
+
+    Prevent the generation of the wrapper layer (swig ``-noproxy`` option).
+
+  ``OUTPUT_DIR``
+    .. versionadded:: 3.12
+
+    Specify where to write the language specific files (swig ``-outdir``
+    option). If not given, the ``CMAKE_SWIG_OUTDIR`` variable will be used.
+    If neither is specified, the default depends on the value of the
+    ``UseSWIG_MODULE_VERSION`` variable as follows:
+
+    * If ``UseSWIG_MODULE_VERSION`` is 1 or is undefined, output is written to
+      the :variable:`CMAKE_CURRENT_BINARY_DIR` directory.
+    * If ``UseSWIG_MODULE_VERSION`` is 2, a dedicated directory will be used.
+      The path of this directory can be retrieved from the
+      ``SWIG_SUPPORT_FILES_DIRECTORY`` target property.
+
+  ``OUTFILE_DIR``
+    .. versionadded:: 3.12
+
+    Specify an output directory name where the generated source file will be
+    placed (swig ``-o`` option). If not specified, the ``SWIG_OUTFILE_DIR``
+    variable will be used. If neither is specified, ``OUTPUT_DIR`` or
+    ``CMAKE_SWIG_OUTDIR`` is used instead.
+
+  ``SOURCES``
+    List of sources for the library. Files with extension ``.i`` will be
+    identified as sources for the ``SWIG`` tool. Other files will be handled in
+    the standard way.
+
+    .. versionadded:: 3.14
+      This behavior can be overridden by specifying the variable
+      ``SWIG_SOURCE_FILE_EXTENSIONS``.
+
+  .. note::
+
+    If ``UseSWIG_MODULE_VERSION`` is set to 2, it is **strongly** recommended
+    to use a dedicated directory unique to the target when either the
+    ``OUTPUT_DIR`` option or the ``CMAKE_SWIG_OUTDIR`` variable are specified.
+    The output directory contents are erased as part of the target build, so
+    to prevent interference between targets or losing other important files,
+    each target should have its own dedicated output directory.
+
+.. command:: swig_link_libraries
+
+  Link libraries to swig module::
+
+    swig_link_libraries(<name> <item>...)
+
+  This command has same capabilities as :command:`target_link_libraries`
+  command.
+
+  .. note::
+
+    If variable ``UseSWIG_TARGET_NAME_PREFERENCE`` is set to ``STANDARD``, this
+    command is deprecated and :command:`target_link_libraries` command must be
+    used instead.
+
+Source file properties on module files **must** be set before the invocation
+of the ``swig_add_library`` command to specify special behavior of SWIG and
+ensure generated files will receive the required settings.
+
+``CPLUSPLUS``
+  Call SWIG in c++ mode.  For example:
+
+  .. code-block:: cmake
+
+    set_property(SOURCE mymod.i PROPERTY CPLUSPLUS ON)
+    swig_add_library(mymod LANGUAGE python SOURCES mymod.i)
+
+``SWIG_FLAGS``
+  .. deprecated:: 3.12
+    Replaced with the fine-grained properties that follow.
+
+  Pass custom flags to the SWIG executable.
+
+``INCLUDE_DIRECTORIES``, ``COMPILE_DEFINITIONS`` and ``COMPILE_OPTIONS``
+  .. versionadded:: 3.12
+
+  Add custom flags to SWIG compiler and have same semantic as properties
+  :prop_sf:`INCLUDE_DIRECTORIES`, :prop_sf:`COMPILE_DEFINITIONS` and
+  :prop_sf:`COMPILE_OPTIONS`.
+
+``USE_TARGET_INCLUDE_DIRECTORIES``
+  .. versionadded:: 3.13
+
+  If set to ``TRUE``, contents of target property
+  :prop_tgt:`INCLUDE_DIRECTORIES` will be forwarded to ``SWIG`` compiler.
+  If set to ``FALSE`` target property :prop_tgt:`INCLUDE_DIRECTORIES` will be
+  ignored. If not set, target property ``SWIG_USE_TARGET_INCLUDE_DIRECTORIES``
+  will be considered.
+
+``GENERATED_INCLUDE_DIRECTORIES``, ``GENERATED_COMPILE_DEFINITIONS`` and ``GENERATED_COMPILE_OPTIONS``
+  .. versionadded:: 3.12
+
+  Add custom flags to the C/C++ generated source. They will fill, respectively,
+  properties :prop_sf:`INCLUDE_DIRECTORIES`, :prop_sf:`COMPILE_DEFINITIONS` and
+  :prop_sf:`COMPILE_OPTIONS` of generated C/C++ file.
+
+``DEPENDS``
+  .. versionadded:: 3.12
+
+  Specify additional dependencies to the source file.
+
+``USE_SWIG_DEPENDENCIES``
+  .. versionadded:: 3.20
+
+  If set to ``TRUE``, implicit dependencies are generated by the ``swig`` tool
+  itself. This property is only meaningful for
+  :ref:`Makefile <Makefile Generators>`,
+  :ref:`Ninja <Ninja Generators>`, :generator:`Xcode`, and
+  :ref:`Visual Studio <Visual Studio Generators>`
+  (:generator:`Visual Studio 11 2012` and above) generators. Default value is
+  ``FALSE``.
+
+  .. versionadded:: 3.21
+    Added the support of :generator:`Xcode` generator.
+
+  .. versionadded:: 3.22
+    Added the support of :ref:`Visual Studio Generators`.
+
+``SWIG_MODULE_NAME``
+  Specify the actual import name of the module in the target language.
+  This is required if it cannot be scanned automatically from source
+  or different from the module file basename.  For example:
+
+  .. code-block:: cmake
+
+    set_property(SOURCE mymod.i PROPERTY SWIG_MODULE_NAME mymod_realname)
+
+  .. versionchanged:: 3.14
+    If policy :policy:`CMP0086` is set to ``NEW``, ``-module <module_name>``
+    is passed to ``SWIG`` compiler.
+
+``OUTPUT_DIR``
+  .. versionadded:: 3.19
+
+  Specify where to write the language specific files (swig ``-outdir`` option)
+  for the considered source file. If not specified, the other ways to define
+  the output directory applies (see ``OUTPUT_DIR`` option of
+  ``swig_add_library()`` command).
+
+``OUTFILE_DIR``
+  .. versionadded:: 3.19
+
+  Specify an output directory where the generated source file will be placed
+  (swig ``-o`` option) for the considered source file. If not specified,
+  ``OUTPUT_DIR`` source property will be used. If neither are specified, the
+  other ways to define output file directory applies (see ``OUTFILE_DIR``
+  option of ``swig_add_library()`` command).
+
+Target library properties can be set to apply same configuration to all SWIG
+input files.
+
+``SWIG_INCLUDE_DIRECTORIES``, ``SWIG_COMPILE_DEFINITIONS`` and ``SWIG_COMPILE_OPTIONS``
+  .. versionadded:: 3.12
+
+  These properties will be applied to all SWIG input files and have same
+  semantic as target properties :prop_tgt:`INCLUDE_DIRECTORIES`,
+  :prop_tgt:`COMPILE_DEFINITIONS` and :prop_tgt:`COMPILE_OPTIONS`.
+
+  .. code-block:: cmake
+
+    set (UseSWIG_TARGET_NAME_PREFERENCE STANDARD)
+    swig_add_library(mymod LANGUAGE python SOURCES mymod.i)
+    set_property(TARGET mymod PROPERTY SWIG_COMPILE_DEFINITIONS MY_DEF1 MY_DEF2)
+    set_property(TARGET mymod PROPERTY SWIG_COMPILE_OPTIONS -bla -blb)
+
+``SWIG_USE_TARGET_INCLUDE_DIRECTORIES``
+  .. versionadded:: 3.13
+
+  If set to ``TRUE``, contents of target property
+  :prop_tgt:`INCLUDE_DIRECTORIES` will be forwarded to ``SWIG`` compiler.
+  If set to ``FALSE`` or not defined, target property
+  :prop_tgt:`INCLUDE_DIRECTORIES` will be ignored. This behavior can be
+  overridden by specifying source property ``USE_TARGET_INCLUDE_DIRECTORIES``.
+
+``SWIG_GENERATED_INCLUDE_DIRECTORIES``, ``SWIG_GENERATED_COMPILE_DEFINITIONS`` and ``SWIG_GENERATED_COMPILE_OPTIONS``
+  .. versionadded:: 3.12
+
+  These properties will populate, respectively, properties
+  :prop_sf:`INCLUDE_DIRECTORIES`, :prop_sf:`COMPILE_DEFINITIONS` and
+  :prop_sf:`COMPILE_FLAGS` of all generated C/C++ files.
+
+``SWIG_DEPENDS``
+  .. versionadded:: 3.12
+
+  Add dependencies to all SWIG input files.
+
+The following target properties are output properties and can be used to get
+information about support files generated by ``SWIG`` interface compilation.
+
+``SWIG_SUPPORT_FILES``
+  .. versionadded:: 3.12
+
+  This output property list of wrapper files generated during SWIG compilation.
+
+  .. code-block:: cmake
+
+    set (UseSWIG_TARGET_NAME_PREFERENCE STANDARD)
+    swig_add_library(mymod LANGUAGE python SOURCES mymod.i)
+    get_property(support_files TARGET mymod PROPERTY SWIG_SUPPORT_FILES)
+
+  .. note::
+
+    Only most principal support files are listed. In case some advanced
+    features of ``SWIG`` are used (for example ``%template``), associated
+    support files may not be listed. Prefer to use the
+    ``SWIG_SUPPORT_FILES_DIRECTORY`` property to handle support files.
+
+``SWIG_SUPPORT_FILES_DIRECTORY``
+  .. versionadded:: 3.12
+
+  This output property specifies the directory where support files will be
+  generated.
+
+  .. note::
+
+    When source property ``OUTPUT_DIR`` is defined, multiple directories can be
+    specified as part of ``SWIG_SUPPORT_FILES_DIRECTORY``.
+
+Some variables can be set to customize the behavior of ``swig_add_library``
+as well as ``SWIG``:
+
+``UseSWIG_MODULE_VERSION``
+  .. versionadded:: 3.12
+
+  Specify different behaviors for ``UseSWIG`` module.
+
+  * Set to 1 or undefined: Legacy behavior is applied.
+  * Set to 2: A new strategy is applied regarding support files: the output
+    directory of support files is erased before ``SWIG`` interface compilation.
+
+``CMAKE_SWIG_FLAGS``
+  Add flags to all swig calls.
+
+``CMAKE_SWIG_OUTDIR``
+  Specify where to write the language specific files (swig ``-outdir`` option).
+
+``SWIG_OUTFILE_DIR``
+  .. versionadded:: 3.8
+
+  Specify an output directory name where the generated source file will be
+  placed.  If not specified, ``CMAKE_SWIG_OUTDIR`` is used.
+
+``SWIG_MODULE_<name>_EXTRA_DEPS``
+  Specify extra dependencies for the generated module for ``<name>``.
+
+``SWIG_SOURCE_FILE_EXTENSIONS``
+  .. versionadded:: 3.14
+
+  Specify a list of source file extensions to override the default
+  behavior of considering only ``.i`` files as sources for the ``SWIG``
+  tool. For example:
+
+  .. code-block:: cmake
+
+    set(SWIG_SOURCE_FILE_EXTENSIONS ".i" ".swg")
+
+``SWIG_USE_SWIG_DEPENDENCIES``
+  .. versionadded:: 3.20
+
+  If set to ``TRUE``, implicit dependencies are generated by the ``swig`` tool
+  itself. This variable is only meaningful for
+  :ref:`Makefile <Makefile Generators>`,
+  :ref:`Ninja <Ninja Generators>`, :generator:`Xcode`, and
+  :ref:`Visual Studio <Visual Studio Generators>`
+  (:generator:`Visual Studio 11 2012` and above) generators. Default value is
+  ``FALSE``.
+
+  Source file property ``USE_SWIG_DEPENDENCIES``, if not defined, will be
+  initialized with the value of this variable.
+
+  .. versionadded:: 3.21
+    Added the support of :generator:`Xcode` generator.
+
+  .. versionadded:: 3.22
+    Added the support of :ref:`Visual Studio Generators`.
+
+#]=======================================================================]
+
+cmake_policy(PUSH)
+# numbers and boolean constants
+cmake_policy (SET CMP0012 NEW)
+# IN_LIST operator
+cmake_policy (SET CMP0057 NEW)
+# Ninja generator normalizes custom command depfile paths
+cmake_policy (SET CMP0116 NEW)
+
+set(SWIG_CXX_EXTENSION "cxx")
+set(SWIG_EXTRA_LIBRARIES "")
+
+set(SWIG_PYTHON_EXTRA_FILE_EXTENSIONS ".py")
+set(SWIG_JAVA_EXTRA_FILE_EXTENSIONS ".java" "JNI.java")
+set(SWIG_CSHARP_EXTRA_FILE_EXTENSIONS ".cs" "PINVOKE.cs")
+
+set(SWIG_MANAGE_SUPPORT_FILES_SCRIPT "${CMAKE_CURRENT_LIST_DIR}/UseSWIG/ManageSupportFiles.cmake")
+
+##
+## PRIVATE functions
+##
+function (__SWIG_COMPUTE_TIMESTAMP name language infile workingdir __timestamp)
+  get_filename_component(filename "${infile}" NAME_WE)
+  set(${__timestamp}
+    "${workingdir}/${filename}${language}.stamp" PARENT_SCOPE)
+  # get_filename_component(filename "${infile}" ABSOLUTE)
+  # string(UUID uuid NAMESPACE 9735D882-D2F8-4E1D-88C9-A0A4F1F6ECA4
+  #   NAME ${name}-${language}-${filename} TYPE SHA1)
+  # set(${__timestamp} "${workingdir}/${uuid}.stamp" PARENT_SCOPE)
+endfunction()
+
+#
+# For given swig module initialize variables associated with it
+#
+macro(SWIG_MODULE_INITIALIZE name language)
+  string(TOUPPER "${language}" SWIG_MODULE_${name}_LANGUAGE)
+  string(TOLOWER "${language}" SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG)
+
+  if (NOT DEFINED SWIG_MODULE_${name}_NOPROXY)
+    set (SWIG_MODULE_${name}_NOPROXY FALSE)
+  endif()
+  if ("-noproxy" IN_LIST CMAKE_SWIG_FLAGS)
+    set (SWIG_MODULE_${name}_NOPROXY TRUE)
+  endif ()
+
+  if (SWIG_MODULE_${name}_NOPROXY AND
+      NOT ("-noproxy" IN_LIST CMAKE_SWIG_FLAGS OR "-noproxy" IN_LIST SWIG_MODULE_${name}_EXTRA_FLAGS))
+    list (APPEND SWIG_MODULE_${name}_EXTRA_FLAGS "-noproxy")
+  endif()
+  if(SWIG_MODULE_${name}_LANGUAGE STREQUAL "UNKNOWN")
+    message(FATAL_ERROR "SWIG Error: Language \"${language}\" not found")
+  elseif(SWIG_MODULE_${name}_LANGUAGE STREQUAL "PERL" AND
+         NOT "-shadow" IN_LIST SWIG_MODULE_${name}_EXTRA_FLAGS)
+    list(APPEND SWIG_MODULE_${name}_EXTRA_FLAGS "-shadow")
+  endif()
+endmacro()
+
+#
+# For a given language, input file, and output file, determine extra files that
+# will be generated. This is internal swig macro.
+#
+
+function(SWIG_GET_EXTRA_OUTPUT_FILES language outfiles generatedpath infile)
+  set(files)
+  get_source_file_property(module_basename
+    "${infile}" SWIG_MODULE_NAME)
+  if(NOT module_basename)
+
+    # try to get module name from "%module foo" syntax
+    if ( EXISTS "${infile}" )
+      file ( STRINGS "${infile}" module_basename REGEX "[ ]*%module[ ]*[a-zA-Z0-9_]+.*" )
+    endif ()
+    if ( module_basename )
+      string ( REGEX REPLACE "[ ]*%module[ ]*([a-zA-Z0-9_]+).*" "\\1" module_basename "${module_basename}" )
+
+    else ()
+      # try to get module name from "%module (options=...) foo" syntax
+      if ( EXISTS "${infile}" )
+        file ( STRINGS "${infile}" module_basename REGEX "[ ]*%module[ ]*\\(.*\\)[ ]*[a-zA-Z0-9_]+.*" )
+      endif ()
+      if ( module_basename )
+        string ( REGEX REPLACE "[ ]*%module[ ]*\\(.*\\)[ ]*([a-zA-Z0-9_]+).*" "\\1" module_basename "${module_basename}" )
+
+      else ()
+        # fallback to file basename
+        get_filename_component(module_basename "${infile}" NAME_WE)
+      endif ()
+    endif ()
+
+  endif()
+  foreach(it ${SWIG_${language}_EXTRA_FILE_EXTENSIONS})
+    set(extra_file "${generatedpath}/${module_basename}${it}")
+    if (extra_file MATCHES "\\.cs$" AND CMAKE_CSharp_COMPILER_LOADED)
+      set_source_files_properties(${extra_file} PROPERTIES LANGUAGE "CSharp")
+    else()
+      # Treat extra outputs as plain files regardless of language.
+      set_source_files_properties(${extra_file} PROPERTIES LANGUAGE "")
+    endif()
+    list(APPEND files "${extra_file}")
+  endforeach()
+
+  if (language STREQUAL "FORTRAN" AND CMAKE_Fortran_COMPILER_LOADED)
+    # Process possible user-supplied extension in flags (obtained via parent
+    # scope variable) to determine the source file name.
+    list(FIND SWIG_COMPILATION_FLAGS "-fext" fext_idx)
+    if (fext_idx EQUAL -1)
+      # Default Fortran generated extension
+      set(fext "f90")
+    else()
+      # Get extension from user-provided flag
+      math(EXPR fext_idx "${fext_idx} + 1")
+      list(GET SWIG_COMPILATION_FLAGS "${fext_idx}" fext)
+    endif()
+    set(extra_file "${generatedpath}/${module_basename}.${fext}")
+    set_source_files_properties("${extra_file}" PROPERTIES LANGUAGE "Fortran")
+    list(APPEND files "${extra_file}")
+  endif()
+
+  set (${outfiles} ${files} PARENT_SCOPE)
+endfunction()
+
+#
+# Take swig (*.i) file and add proper custom commands for it
+#
+function(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile)
+  get_filename_component(swig_source_file_name_we "${infile}" NAME_WE)
+  get_source_file_property(swig_source_file_cplusplus "${infile}" CPLUSPLUS)
+  get_source_file_property(swig_source_file_outdir "${infile}" OUTPUT_DIR)
+  get_source_file_property(swig_source_file_outfiledir "${infile}" OUTFILE_DIR)
+
+  if (swig_source_file_outdir)
+    # use source file property
+    set(outdir "${swig_source_file_outdir}")
+    if (NOT swig_source_file_outfiledir)
+      set (swig_source_file_outfiledir "${outdir}")
+    endif()
+  elseif(CMAKE_SWIG_OUTDIR)
+    set(outdir ${CMAKE_SWIG_OUTDIR})
+  else()
+    set(outdir ${CMAKE_CURRENT_BINARY_DIR})
+  endif()
+
+  if (swig_source_file_outfiledir)
+    set (outfiledir "${swig_source_file_outfiledir}")
+  elseif(SWIG_OUTFILE_DIR)
+    set(outfiledir ${SWIG_OUTFILE_DIR})
+  else()
+    set(outfiledir ${outdir})
+  endif()
+
+  if(SWIG_WORKING_DIR)
+    set (workingdir "${SWIG_WORKING_DIR}")
+  else()
+    set(workingdir "${outdir}")
+  endif()
+
+  if(SWIG_TARGET_NAME)
+    set(target_name ${SWIG_TARGET_NAME})
+  else()
+    set(target_name ${name})
+  endif()
+
+  set (use_swig_dependencies ${SWIG_USE_SWIG_DEPENDENCIES})
+  if (CMAKE_GENERATOR MATCHES "Make|Ninja|Xcode|Visual Studio (1[1-9]|[2-9][0-9])")
+    get_property(use_swig_dependencies_set SOURCE "${infile}" PROPERTY USE_SWIG_DEPENDENCIES SET)
+    if (use_swig_dependencies_set)
+      get_property(use_swig_dependencies SOURCE "${infile}" PROPERTY USE_SWIG_DEPENDENCIES)
+    endif()
+  endif()
+
+  set (swig_source_file_flags ${CMAKE_SWIG_FLAGS})
+  # handle various swig compile flags properties
+  get_source_file_property (include_directories "${infile}" INCLUDE_DIRECTORIES)
+  if (include_directories)
+    list (APPEND swig_source_file_flags "$<$<BOOL:${include_directories}>:-I$<JOIN:${include_directories},$<SEMICOLON>-I>>")
+  endif()
+  set (property "$<TARGET_PROPERTY:${target_name},SWIG_INCLUDE_DIRECTORIES>")
+  list (APPEND swig_source_file_flags "$<$<BOOL:${property}>:-I$<JOIN:$<TARGET_GENEX_EVAL:${target_name},${property}>,$<SEMICOLON>-I>>")
+  set (property "$<REMOVE_DUPLICATES:$<TARGET_PROPERTY:${target_name},INCLUDE_DIRECTORIES>>")
+  get_source_file_property(use_target_include_dirs "${infile}" USE_TARGET_INCLUDE_DIRECTORIES)
+  if (use_target_include_dirs)
+    list (APPEND swig_source_file_flags "$<$<BOOL:${property}>:-I$<JOIN:${property},$<SEMICOLON>-I>>")
+  elseif(use_target_include_dirs STREQUAL "NOTFOUND")
+    # not defined at source level, rely on target level
+    list (APPEND swig_source_file_flags "$<$<AND:$<BOOL:$<TARGET_PROPERTY:${target_name},SWIG_USE_TARGET_INCLUDE_DIRECTORIES>>,$<BOOL:${property}>>:-I$<JOIN:${property},$<SEMICOLON>-I>>")
+  endif()
+
+  set (property "$<TARGET_PROPERTY:${target_name},SWIG_COMPILE_DEFINITIONS>")
+  list (APPEND swig_source_file_flags "$<$<BOOL:${property}>:-D$<JOIN:$<TARGET_GENEX_EVAL:${target_name},${property}>,$<SEMICOLON>-D>>")
+  get_source_file_property (compile_definitions "${infile}" COMPILE_DEFINITIONS)
+  if (compile_definitions)
+    list (APPEND swig_source_file_flags "$<$<BOOL:${compile_definitions}>:-D$<JOIN:${compile_definitions},$<SEMICOLON>-D>>")
+  endif()
+
+  list (APPEND swig_source_file_flags "$<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_COMPILE_OPTIONS>>")
+  get_source_file_property (compile_options "${infile}" COMPILE_OPTIONS)
+  if (compile_options)
+    list (APPEND swig_source_file_flags ${compile_options})
+  endif()
+
+  # legacy support
+  get_source_file_property (swig_flags "${infile}" SWIG_FLAGS)
+  if (swig_flags)
+    list (APPEND swig_source_file_flags ${swig_flags})
+  endif()
+
+  get_filename_component(swig_source_file_fullname "${infile}" ABSOLUTE)
+
+  if (NOT SWIG_MODULE_${name}_NOPROXY)
+    set(SWIG_COMPILATION_FLAGS ${swig_source_file_flags})
+    SWIG_GET_EXTRA_OUTPUT_FILES(${SWIG_MODULE_${name}_LANGUAGE}
+      swig_extra_generated_files
+      "${outdir}"
+      "${swig_source_file_fullname}")
+  endif()
+  set(swig_generated_file_fullname
+    "${outfiledir}/${swig_source_file_name_we}")
+  # add the language into the name of the file (i.e. TCL_wrap)
+  # this allows for the same .i file to be wrapped into different languages
+  string(APPEND swig_generated_file_fullname
+    "${SWIG_MODULE_${name}_LANGUAGE}_wrap")
+
+  if(swig_source_file_cplusplus)
+    string(APPEND swig_generated_file_fullname
+      ".${SWIG_CXX_EXTENSION}")
+  else()
+    string(APPEND swig_generated_file_fullname
+      ".c")
+  endif()
+
+  get_directory_property (cmake_include_directories INCLUDE_DIRECTORIES)
+  list (REMOVE_DUPLICATES cmake_include_directories)
+  set (swig_include_dirs)
+  if (cmake_include_directories)
+    set (swig_include_dirs "$<$<BOOL:${cmake_include_directories}>:-I$<JOIN:${cmake_include_directories},$<SEMICOLON>-I>>")
+  endif()
+
+  set(swig_special_flags)
+  # default is c, so add c++ flag if it is c++
+  if(swig_source_file_cplusplus)
+    list (APPEND swig_special_flags "-c++")
+  endif()
+
+  cmake_policy(GET CMP0086 module_name_policy)
+  if (module_name_policy STREQUAL "NEW")
+    get_source_file_property(module_name "${infile}" SWIG_MODULE_NAME)
+    if (module_name)
+      list (APPEND swig_special_flags "-module" "${module_name}")
+    endif()
+  else()
+    if (NOT module_name_policy)
+      cmake_policy(GET_WARNING CMP0086 _cmp0086_warning)
+      message(AUTHOR_WARNING "${_cmp0086_warning}\n")
+    endif()
+  endif()
+
+  set (swig_extra_flags)
+  if(SWIG_MODULE_${name}_LANGUAGE STREQUAL "CSHARP")
+    if(NOT ("-dllimport" IN_LIST swig_source_file_flags OR "-dllimport" IN_LIST SWIG_MODULE_${name}_EXTRA_FLAGS))
+      # This makes sure that the name used in the generated DllImport
+      # matches the library name created by CMake
+      list (APPEND SWIG_MODULE_${name}_EXTRA_FLAGS "-dllimport" "$<TARGET_FILE_PREFIX:${target_name}>$<TARGET_FILE_BASE_NAME:${target_name}>")
+    endif()
+  endif()
+  if (SWIG_MODULE_${name}_LANGUAGE STREQUAL "PYTHON" AND NOT SWIG_MODULE_${name}_NOPROXY)
+    if(SWIG_USE_INTERFACE AND
+        NOT ("-interface" IN_LIST swig_source_file_flags OR "-interface" IN_LIST SWIG_MODULE_${name}_EXTRA_FLAGS))
+      # This makes sure that the name used in the proxy code
+      # matches the library name created by CMake
+      list (APPEND SWIG_MODULE_${name}_EXTRA_FLAGS "-interface" "$<TARGET_FILE_PREFIX:${target_name}>$<TARGET_FILE_BASE_NAME:${target_name}>")
+    endif()
+  endif()
+  list (APPEND swig_extra_flags ${SWIG_MODULE_${name}_EXTRA_FLAGS})
+
+  # dependencies
+  set (swig_dependencies DEPENDS ${SWIG_MODULE_${name}_EXTRA_DEPS} $<TARGET_PROPERTY:${target_name},SWIG_DEPENDS>)
+  get_source_file_property(file_depends "${infile}" DEPENDS)
+  if (file_depends)
+    list (APPEND swig_dependencies ${file_depends})
+  endif()
+
+  if (UseSWIG_MODULE_VERSION VERSION_GREATER 1)
+    # as part of custom command, start by removing old generated files
+    # to ensure obsolete files do not stay
+    set (swig_file_outdir "${workingdir}/${swig_source_file_name_we}.files")
+    set (swig_cleanup_command COMMAND "${CMAKE_COMMAND}" "-DSUPPORT_FILES_WORKING_DIRECTORY=${swig_file_outdir}" "-DSUPPORT_FILES_OUTPUT_DIRECTORY=${outdir}" -DACTION=CLEAN -P "${SWIG_MANAGE_SUPPORT_FILES_SCRIPT}")
+    set (swig_copy_command COMMAND "${CMAKE_COMMAND}" "-DSUPPORT_FILES_WORKING_DIRECTORY=${swig_file_outdir}" "-DSUPPORT_FILES_OUTPUT_DIRECTORY=${outdir}" -DACTION=COPY -P "${SWIG_MANAGE_SUPPORT_FILES_SCRIPT}")
+  else()
+    set (swig_file_outdir "${outdir}")
+    unset (swig_cleanup_command)
+    unset (swig_copy_command)
+  endif()
+
+  set(swig_depends_flags)
+  if(NOT use_swig_dependencies AND CMAKE_GENERATOR MATCHES "Make")
+    # IMPLICIT_DEPENDS can not handle situations where a dependent file is
+    # removed. We need an extra step with timestamp and custom target, see #16830
+    # As this is needed only for Makefile generator do it conditionally
+    __swig_compute_timestamp(${name} ${SWIG_MODULE_${name}_LANGUAGE}
+      "${infile}" "${workingdir}" swig_generated_timestamp)
+    set(swig_custom_output "${swig_generated_timestamp}")
+    set(swig_custom_products
+      BYPRODUCTS "${swig_generated_file_fullname}" ${swig_extra_generated_files})
+    set(swig_timestamp_command
+      COMMAND ${CMAKE_COMMAND} -E touch "${swig_generated_timestamp}")
+    list(APPEND swig_dependencies IMPLICIT_DEPENDS CXX "${swig_source_file_fullname}")
+  else()
+    set(swig_generated_timestamp)
+    set(swig_custom_output
+      "${swig_generated_file_fullname}" ${swig_extra_generated_files})
+    set(swig_custom_products)
+    set(swig_timestamp_command)
+    if (use_swig_dependencies)
+      cmake_path(GET infile FILENAME swig_depends_filename)
+      set(swig_depends_filename "${workingdir}/${swig_depends_filename}.d")
+      list(APPEND swig_dependencies DEPFILE "${swig_depends_filename}")
+      set(swig_depends_flags -MF "${swig_depends_filename}" -MD)
+    endif()
+  endif()
+  add_custom_command(
+    OUTPUT ${swig_custom_output}
+    ${swig_custom_products}
+    ${swig_cleanup_command}
+    # Let's create the ${outdir} at execution time, in case dir contains $(OutDir)
+    COMMAND "${CMAKE_COMMAND}" -E make_directory "${workingdir}" "${outdir}" "${outfiledir}"
+    ${swig_timestamp_command}
+    COMMAND "${CMAKE_COMMAND}" -E env "SWIG_LIB=${SWIG_DIR}" "${SWIG_EXECUTABLE}"
+    "-${SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG}"
+    "${swig_source_file_flags}"
+    -outdir "${swig_file_outdir}"
+    ${swig_special_flags}
+    ${swig_extra_flags}
+    ${swig_depends_flags}
+    "${swig_include_dirs}"
+    -o "${swig_generated_file_fullname}"
+    "${swig_source_file_fullname}"
+    ${swig_copy_command}
+    MAIN_DEPENDENCY "${swig_source_file_fullname}"
+    ${swig_dependencies}
+    COMMENT "Swig compile ${infile} for ${SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG}"
+    COMMAND_EXPAND_LISTS)
+  set_source_files_properties("${swig_generated_file_fullname}" ${swig_extra_generated_files}
+    PROPERTIES GENERATED 1)
+
+  ## add all properties for generated file to various properties
+  get_property (include_directories SOURCE "${infile}" PROPERTY GENERATED_INCLUDE_DIRECTORIES)
+  set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY INCLUDE_DIRECTORIES ${include_directories} $<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_INCLUDE_DIRECTORIES>>)
+
+  get_property (compile_definitions SOURCE "${infile}" PROPERTY GENERATED_COMPILE_DEFINITIONS)
+  set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY COMPILE_DEFINITIONS $<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_COMPILE_DEFINITIONS>> ${compile_definitions})
+
+  get_property (compile_options SOURCE "${infile}" PROPERTY GENERATED_COMPILE_OPTIONS)
+  set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY COMPILE_OPTIONS $<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_COMPILE_OPTIONS>> ${compile_options})
+
+  if (SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG MATCHES "php")
+    set_property (SOURCE "${swig_generated_file_fullname}" APPEND PROPERTY INCLUDE_DIRECTORIES "${outdir}")
+  endif()
+
+  set(${outfiles} "${swig_generated_file_fullname}" ${swig_extra_generated_files} PARENT_SCOPE)
+  set(swig_timestamp "${swig_generated_timestamp}" PARENT_SCOPE)
+
+  # legacy support
+  set (swig_generated_file_fullname "${swig_generated_file_fullname}" PARENT_SCOPE)
+endfunction()
+
+#
+# Create Swig module
+#
+macro(SWIG_ADD_MODULE name language)
+  message(DEPRECATION "SWIG_ADD_MODULE is deprecated. Use SWIG_ADD_LIBRARY instead.")
+  swig_add_library(${name}
+                   LANGUAGE ${language}
+                   TYPE MODULE
+                   SOURCES ${ARGN})
+endmacro()
+
+
+function(SWIG_ADD_LIBRARY name)
+  set(options NO_PROXY)
+  set(oneValueArgs LANGUAGE
+                   TYPE
+                   OUTPUT_DIR
+                   OUTFILE_DIR)
+  set(multiValueArgs SOURCES)
+  cmake_parse_arguments(_SAM "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+  if (_SAM_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "SWIG_ADD_LIBRARY: ${_SAM_UNPARSED_ARGUMENTS}: unexpected arguments")
+  endif()
+
+  if(NOT DEFINED _SAM_LANGUAGE)
+    message(FATAL_ERROR "SWIG_ADD_LIBRARY: Missing LANGUAGE argument")
+  endif()
+
+  if(NOT DEFINED _SAM_SOURCES)
+    message(FATAL_ERROR "SWIG_ADD_LIBRARY: Missing SOURCES argument")
+  endif()
+
+  if(NOT DEFINED _SAM_TYPE)
+    set(_SAM_TYPE MODULE)
+  elseif(_SAM_TYPE STREQUAL "USE_BUILD_SHARED_LIBS")
+    unset(_SAM_TYPE)
+  endif()
+
+  cmake_policy(GET CMP0078 target_name_policy)
+  if (target_name_policy STREQUAL "NEW")
+    set (UseSWIG_TARGET_NAME_PREFERENCE STANDARD)
+  else()
+    if (NOT target_name_policy)
+      cmake_policy(GET_WARNING CMP0078 _cmp0078_warning)
+      message(AUTHOR_WARNING "${_cmp0078_warning}\n")
+    endif()
+    if (NOT DEFINED UseSWIG_TARGET_NAME_PREFERENCE)
+      set (UseSWIG_TARGET_NAME_PREFERENCE LEGACY)
+    elseif (NOT UseSWIG_TARGET_NAME_PREFERENCE MATCHES "^(LEGACY|STANDARD)$")
+      message (FATAL_ERROR "UseSWIG_TARGET_NAME_PREFERENCE: ${UseSWIG_TARGET_NAME_PREFERENCE}: invalid value. 'LEGACY' or 'STANDARD' is expected.")
+    endif()
+  endif()
+
+  if (NOT DEFINED UseSWIG_MODULE_VERSION)
+    set (UseSWIG_MODULE_VERSION 1)
+  elseif (NOT UseSWIG_MODULE_VERSION MATCHES "^(1|2)$")
+    message (FATAL_ERROR "UseSWIG_MODULE_VERSION: ${UseSWIG_MODULE_VERSION}: invalid value. 1 or 2 is expected.")
+  endif()
+
+  set (SWIG_MODULE_${name}_NOPROXY ${_SAM_NO_PROXY})
+  swig_module_initialize(${name} ${_SAM_LANGUAGE})
+
+  # compute real target name.
+  if (UseSWIG_TARGET_NAME_PREFERENCE STREQUAL "LEGACY" AND
+      SWIG_MODULE_${name}_LANGUAGE STREQUAL "PYTHON" AND NOT SWIG_MODULE_${name}_NOPROXY)
+    # swig will produce a module.py containing an 'import _modulename' statement,
+    # which implies having a corresponding _modulename.so (*NIX), _modulename.pyd (Win32),
+    # unless the -noproxy flag is used
+    set(target_name "_${name}")
+  else()
+    set(target_name "${name}")
+  endif()
+
+  if (TARGET ${target_name})
+    # a target with same name is already defined.
+    # call NOW add_library command to raise the most useful error message
+    add_library(${target_name})
+    return()
+  endif()
+
+  set (workingdir "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${target_name}.dir")
+  # set special variable to pass extra information to command SWIG_ADD_SOURCE_TO_MODULE
+  # which cannot be changed due to legacy compatibility
+  set (SWIG_WORKING_DIR "${workingdir}")
+  set (SWIG_TARGET_NAME "${target_name}")
+
+  set (outputdir "${_SAM_OUTPUT_DIR}")
+  if (NOT _SAM_OUTPUT_DIR)
+    if (CMAKE_SWIG_OUTDIR)
+      set (outputdir "${CMAKE_SWIG_OUTDIR}")
+    else()
+      if (UseSWIG_MODULE_VERSION VERSION_GREATER 1)
+        set (outputdir "${workingdir}/${_SAM_LANGUAGE}.files")
+      else()
+        set (outputdir "${CMAKE_CURRENT_BINARY_DIR}")
+      endif()
+    endif()
+  endif()
+
+  set (outfiledir "${_SAM_OUTFILE_DIR}")
+  if(NOT _SAM_OUTFILE_DIR)
+    if (SWIG_OUTFILE_DIR)
+      set (outfiledir "${SWIG_OUTFILE_DIR}")
+    else()
+      if (_SAM_OUTPUT_DIR OR CMAKE_SWIG_OUTDIR)
+        set (outfiledir "${outputdir}")
+    else()
+        set (outfiledir "${workingdir}")
+      endif()
+    endif()
+  endif()
+  # set again, locally, predefined variables to ensure compatibility
+  # with command SWIG_ADD_SOURCE_TO_MODULE
+  set(CMAKE_SWIG_OUTDIR "${outputdir}")
+  set(SWIG_OUTFILE_DIR "${outfiledir}")
+
+  # See if the user has specified source extensions for swig files?
+  if (NOT DEFINED SWIG_SOURCE_FILE_EXTENSIONS)
+    # Assume the default (*.i) file extension for Swig source files
+    set(SWIG_SOURCE_FILE_EXTENSIONS ".i")
+  endif()
+
+  if (CMAKE_GENERATOR MATCHES "Make|Ninja|Xcode|Visual Studio (1[1-9]|[2-9][0-9])")
+    # For Makefiles, Ninja, Xcode and Visual Studio generators,
+    # use SWIG generated dependencies if requested
+    if (NOT DEFINED SWIG_USE_SWIG_DEPENDENCIES)
+        set (SWIG_USE_SWIG_DEPENDENCIES OFF)
+    endif()
+  else()
+    set (SWIG_USE_SWIG_DEPENDENCIES OFF)
+  endif()
+
+  # Generate a regex out of file extensions.
+  string(REGEX REPLACE "([$^.*+?|()-])" "\\\\\\1" swig_source_ext_regex "${SWIG_SOURCE_FILE_EXTENSIONS}")
+  list (JOIN swig_source_ext_regex "|" swig_source_ext_regex)
+  string (PREPEND swig_source_ext_regex "(")
+  string (APPEND swig_source_ext_regex ")$")
+
+  set(swig_dot_i_sources ${_SAM_SOURCES})
+  list(FILTER swig_dot_i_sources INCLUDE REGEX ${swig_source_ext_regex})
+  if (NOT swig_dot_i_sources)
+    message(FATAL_ERROR "SWIG_ADD_LIBRARY: no SWIG interface files specified")
+  endif()
+  set(swig_other_sources ${_SAM_SOURCES})
+  list(REMOVE_ITEM swig_other_sources ${swig_dot_i_sources})
+
+  set(swig_generated_sources)
+  set(swig_generated_timestamps)
+  set(swig_generated_outdirs "${outputdir}")
+  list(LENGTH swig_dot_i_sources swig_sources_count)
+  if (swig_sources_count GREATER "1")
+    # option -interface cannot be used
+    set(SWIG_USE_INTERFACE FALSE)
+  else()
+    set(SWIG_USE_INTERFACE TRUE)
+  endif()
+  foreach(swig_it IN LISTS swig_dot_i_sources)
+    SWIG_ADD_SOURCE_TO_MODULE(${name} swig_generated_source "${swig_it}")
+    list (APPEND swig_generated_sources "${swig_generated_source}")
+    if(swig_timestamp)
+      list (APPEND swig_generated_timestamps "${swig_timestamp}")
+    endif()
+    get_source_file_property(swig_source_file_outdir "${swig_it}" OUTPUT_DIR)
+    if (swig_source_file_outdir)
+      list (APPEND swig_generated_outdirs "${swig_source_file_outdir}")
+    endif()
+  endforeach()
+  list(REMOVE_DUPLICATES swig_generated_outdirs)
+  set_property (DIRECTORY APPEND PROPERTY
+    ADDITIONAL_CLEAN_FILES ${swig_generated_sources} ${swig_generated_timestamps})
+  if (UseSWIG_MODULE_VERSION VERSION_GREATER 1)
+    set_property (DIRECTORY APPEND PROPERTY ADDITIONAL_CLEAN_FILES ${swig_generated_outdirs})
+  endif()
+
+  add_library(${target_name}
+    ${_SAM_TYPE}
+    ${swig_generated_sources}
+    ${swig_other_sources})
+  if(swig_generated_timestamps)
+    # see IMPLICIT_DEPENDS above
+    add_custom_target(${name}_swig_compilation DEPENDS ${swig_generated_timestamps})
+    add_dependencies(${target_name} ${name}_swig_compilation)
+  endif()
+  if(_SAM_TYPE STREQUAL "MODULE")
+    set_target_properties(${target_name} PROPERTIES NO_SONAME ON)
+  endif()
+  string(TOLOWER "${_SAM_LANGUAGE}" swig_lowercase_language)
+  if (swig_lowercase_language STREQUAL "octave")
+    set_target_properties(${target_name} PROPERTIES PREFIX "")
+    set_target_properties(${target_name} PROPERTIES SUFFIX ".oct")
+  elseif (swig_lowercase_language STREQUAL "go")
+    set_target_properties(${target_name} PROPERTIES PREFIX "")
+  elseif (swig_lowercase_language STREQUAL "java")
+    # In java you want:
+    #      System.loadLibrary("LIBRARY");
+    # then JNI will look for a library whose name is platform dependent, namely
+    #   MacOS  : libLIBRARY.jnilib
+    #   Windows: LIBRARY.dll
+    #   Linux  : libLIBRARY.so
+    if (APPLE)
+      set_target_properties (${target_name} PROPERTIES SUFFIX ".jnilib")
+    endif()
+    if ((WIN32 AND MINGW) OR CYGWIN OR CMAKE_SYSTEM_NAME STREQUAL "MSYS")
+      set_target_properties(${target_name} PROPERTIES PREFIX "")
+    endif()
+  elseif (swig_lowercase_language STREQUAL "lua")
+    if(_SAM_TYPE STREQUAL "MODULE")
+      set_target_properties(${target_name} PROPERTIES PREFIX "")
+    endif()
+  elseif (swig_lowercase_language STREQUAL "python")
+    if (UseSWIG_TARGET_NAME_PREFERENCE STREQUAL "STANDARD" AND NOT SWIG_MODULE_${name}_NOPROXY)
+      # swig will produce a module.py containing an 'import _modulename' statement,
+      # which implies having a corresponding _modulename.so (*NIX), _modulename.pyd (Win32),
+      # unless the -noproxy flag is used
+      set_target_properties(${target_name} PROPERTIES PREFIX "_")
+    else()
+      set_target_properties(${target_name} PROPERTIES PREFIX "")
+    endif()
+    # Python extension modules on Windows must have the extension ".pyd"
+    # instead of ".dll" as of Python 2.5.  Older python versions do support
+    # this suffix.
+    # http://docs.python.org/whatsnew/ports.html#SECTION0001510000000000000000
+    # <quote>
+    # Windows: .dll is no longer supported as a filename extension for extension modules.
+    # .pyd is now the only filename extension that will be searched for.
+    # </quote>
+    if(WIN32 AND NOT CYGWIN)
+      set_target_properties(${target_name} PROPERTIES SUFFIX ".pyd")
+    endif()
+  elseif (swig_lowercase_language STREQUAL "r")
+    set_target_properties(${target_name} PROPERTIES PREFIX "")
+  elseif (swig_lowercase_language STREQUAL "ruby")
+    # In ruby you want:
+    #      require 'LIBRARY'
+    # then ruby will look for a library whose name is platform dependent, namely
+    #   MacOS  : LIBRARY.bundle
+    #   Windows: LIBRARY.dll
+    #   Linux  : LIBRARY.so
+    set_target_properties (${target_name} PROPERTIES PREFIX "")
+    if (APPLE)
+      set_target_properties (${target_name} PROPERTIES SUFFIX ".bundle")
+    endif ()
+  elseif (swig_lowercase_language STREQUAL "perl")
+    # assume empty prefix because we expect the module to be dynamically loaded
+    set_target_properties (${target_name} PROPERTIES PREFIX "")
+    if (APPLE)
+      set_target_properties (${target_name} PROPERTIES SUFFIX ".dylib")
+    endif ()
+  elseif (swig_lowercase_language STREQUAL "fortran")
+    # Do *not* override the target's library prefix
+  elseif (swig_lowercase_language STREQUAL "csharp")
+    cmake_policy(GET CMP0122 csharp_naming_policy)
+    if (csharp_naming_policy STREQUAL "NEW")
+      # Do *not* override the target's library prefix
+    else()
+      if (NOT csharp_naming_policy)
+        cmake_policy(GET_WARNING CMP0122 _cmp0122_warning)
+        message(AUTHOR_WARNING "${_cmp0122_warning}\n")
+      endif()
+      set_target_properties (${target_name} PROPERTIES PREFIX "")
+    endif()
+  else()
+    # assume empty prefix because we expect the module to be dynamically loaded
+    set_target_properties (${target_name} PROPERTIES PREFIX "")
+  endif ()
+
+  # target property SWIG_SUPPORT_FILES_DIRECTORY specify output directories of support files
+  set_property (TARGET ${target_name} PROPERTY SWIG_SUPPORT_FILES_DIRECTORY ${swig_generated_outdirs})
+  # target property SWIG_SUPPORT_FILES lists principal proxy support files
+  if (NOT SWIG_MODULE_${name}_NOPROXY)
+    string(TOUPPER "${_SAM_LANGUAGE}" swig_uppercase_language)
+    set(swig_all_support_files)
+    foreach (swig_it IN LISTS SWIG_${swig_uppercase_language}_EXTRA_FILE_EXTENSIONS)
+      set (swig_support_files ${swig_generated_sources})
+      list (FILTER swig_support_files INCLUDE REGEX ".*${swig_it}$")
+      list(APPEND swig_all_support_files ${swig_support_files})
+    endforeach()
+    if (swig_all_support_files)
+      list(REMOVE_DUPLICATES swig_all_support_files)
+    endif()
+    set_property (TARGET ${target_name} PROPERTY SWIG_SUPPORT_FILES ${swig_all_support_files})
+  endif()
+
+  # to ensure legacy behavior, export some variables
+  set (SWIG_MODULE_${name}_LANGUAGE "${SWIG_MODULE_${name}_LANGUAGE}" PARENT_SCOPE)
+  set (SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG "${SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG}" PARENT_SCOPE)
+  set (SWIG_MODULE_${name}_REAL_NAME "${target_name}" PARENT_SCOPE)
+  set (SWIG_MODULE_${name}_NOPROXY "${SWIG_MODULE_${name}_NOPROXY}" PARENT_SCOPE)
+  set (SWIG_MODULE_${name}_EXTRA_FLAGS "${SWIG_MODULE_${name}_EXTRA_FLAGS}" PARENT_SCOPE)
+  # the last one is a bit crazy but it is documented, so...
+  # NOTA: works as expected if only ONE input file is specified
+  set (swig_generated_file_fullname "${swig_generated_file_fullname}" PARENT_SCOPE)
+endfunction()
+
+#
+# Like TARGET_LINK_LIBRARIES but for swig modules
+#
+function(SWIG_LINK_LIBRARIES name)
+  if (UseSWIG_TARGET_NAME_PREFERENCE STREQUAL "STANDARD")
+    message(DEPRECATION "SWIG_LINK_LIBRARIES is deprecated. Use TARGET_LINK_LIBRARIES instead.")
+    target_link_libraries(${name} ${ARGN})
+  else()
+    if(SWIG_MODULE_${name}_REAL_NAME)
+      target_link_libraries(${SWIG_MODULE_${name}_REAL_NAME} ${ARGN})
+    else()
+      message(SEND_ERROR "Cannot find Swig library \"${name}\".")
+    endif()
+  endif()
+endfunction()
+
+cmake_policy(POP)
diff --git a/share/cmake-3.22/Modules/UseSWIG/ManageSupportFiles.cmake b/share/cmake-3.22/Modules/UseSWIG/ManageSupportFiles.cmake
new file mode 100644
index 0000000..6618fd5
--- /dev/null
+++ b/share/cmake-3.22/Modules/UseSWIG/ManageSupportFiles.cmake
@@ -0,0 +1,31 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+if (ACTION STREQUAL "CLEAN")
+  # Collect current list of generated files
+  file (GLOB_RECURSE files LIST_DIRECTORIES TRUE RELATIVE "${SUPPORT_FILES_WORKING_DIRECTORY}" "${SUPPORT_FILES_WORKING_DIRECTORY}/*")
+
+  if (files)
+    # clean-up the output directory
+    ## compute full paths
+    list (TRANSFORM files PREPEND "${SUPPORT_FILES_OUTPUT_DIRECTORY}/")
+    ## remove generated files from the output directory
+    file (REMOVE ${files})
+
+    # clean-up working directory
+    file (REMOVE_RECURSE "${SUPPORT_FILES_WORKING_DIRECTORY}")
+  endif()
+
+  file (MAKE_DIRECTORY "${SUPPORT_FILES_WORKING_DIRECTORY}")
+endif()
+
+if (ACTION STREQUAL "COPY")
+  # Collect current list of generated files
+  file (GLOB files LIST_DIRECTORIES TRUE "${SUPPORT_FILES_WORKING_DIRECTORY}/*")
+
+  if (files)
+    # copy files to the output directory
+    file (COPY ${files} DESTINATION "${SUPPORT_FILES_OUTPUT_DIRECTORY}")
+  endif()
+endif()
diff --git a/share/cmake-3.18/Modules/Use_wxWindows.cmake b/share/cmake-3.22/Modules/Use_wxWindows.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/Use_wxWindows.cmake
rename to share/cmake-3.22/Modules/Use_wxWindows.cmake
diff --git a/share/cmake-3.18/Modules/UsewxWidgets.cmake b/share/cmake-3.22/Modules/UsewxWidgets.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/UsewxWidgets.cmake
rename to share/cmake-3.22/Modules/UsewxWidgets.cmake
diff --git a/share/cmake-3.22/Modules/VTKCompatibility.cmake b/share/cmake-3.22/Modules/VTKCompatibility.cmake
new file mode 100644
index 0000000..4ee7643
--- /dev/null
+++ b/share/cmake-3.22/Modules/VTKCompatibility.cmake
@@ -0,0 +1,46 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# Not needed for "modern" VTK.
+if (EXISTS "${VTK_SOURCE_DIR}/CMake/vtkModule.cmake")
+  return ()
+endif ()
+
+if(APPLE)
+  set(CMAKE_CXX_CREATE_SHARED_LIBRARY "${CMAKE_C_CREATE_SHARED_LIBRARY}")
+  set(CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_C_CREATE_SHARED_MODULE}")
+  string( REGEX REPLACE "CMAKE_C_COMPILER"
+    CMAKE_CXX_COMPILER CMAKE_CXX_CREATE_SHARED_MODULE
+    "${CMAKE_CXX_CREATE_SHARED_MODULE}")
+  string( REGEX REPLACE "CMAKE_C_COMPILER"
+    CMAKE_CXX_COMPILER CMAKE_CXX_CREATE_SHARED_LIBRARY
+    "${CMAKE_CXX_CREATE_SHARED_LIBRARY}")
+endif()
+
+set(VTKFTGL_BINARY_DIR "${VTK_BINARY_DIR}/Utilities/ftgl"
+  CACHE INTERNAL "")
+set(VTKFREETYPE_BINARY_DIR "${VTK_BINARY_DIR}/Utilities/freetype"
+  CACHE INTERNAL "")
+set(VTKFTGL_SOURCE_DIR "${VTK_SOURCE_DIR}/Utilities/ftgl"
+  CACHE INTERNAL "")
+set(VTKFREETYPE_SOURCE_DIR "${VTK_SOURCE_DIR}/Utilities/freetype"
+  CACHE INTERNAL "")
+
+set(VTK_GLEXT_FILE "${VTK_SOURCE_DIR}/Utilities/ParseOGLExt/headers/glext.h"
+  CACHE FILEPATH
+  "Location of the OpenGL extensions header file (glext.h).")
+set(VTK_GLXEXT_FILE
+  "${VTK_SOURCE_DIR}/Utilities/ParseOGLExt/headers/glxext.h" CACHE FILEPATH
+  "Location of the GLX extensions header file (glxext.h).")
+set(VTK_WGLEXT_FILE "${VTK_SOURCE_DIR}/Utilities/ParseOGLExt/headers/wglext.h"
+  CACHE FILEPATH
+  "Location of the WGL extensions header file (wglext.h).")
+
+# work around an old bug in VTK
+set(TIFF_RIGHT_VERSION 1)
+
+# for very old VTK (versions prior to 4.2)
+macro(SOURCE_FILES)
+  message (FATAL_ERROR "You are trying to build a very old version of VTK (prior to VTK 4.2). To do this you need to use CMake 2.0 as it was the last version of CMake to support VTK 4.0.")
+endmacro()
+
diff --git a/share/cmake-3.18/Modules/WriteBasicConfigVersionFile.cmake b/share/cmake-3.22/Modules/WriteBasicConfigVersionFile.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/WriteBasicConfigVersionFile.cmake
rename to share/cmake-3.22/Modules/WriteBasicConfigVersionFile.cmake
diff --git a/share/cmake-3.22/Modules/WriteCompilerDetectionHeader.cmake b/share/cmake-3.22/Modules/WriteCompilerDetectionHeader.cmake
new file mode 100644
index 0000000..0e4e028
--- /dev/null
+++ b/share/cmake-3.22/Modules/WriteCompilerDetectionHeader.cmake
@@ -0,0 +1,845 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+WriteCompilerDetectionHeader
+----------------------------
+
+.. deprecated:: 3.20
+  This module is available only if policy :policy:`CMP0120`
+  is not set to ``NEW``.  Do not use it in new code.
+
+.. versionadded:: 3.1
+
+This module provides the function ``write_compiler_detection_header()``.
+
+This function can be used to generate a file suitable for preprocessor
+inclusion which contains macros to be used in source code::
+
+   write_compiler_detection_header(
+             FILE <file>
+             PREFIX <prefix>
+             [OUTPUT_FILES_VAR <output_files_var> OUTPUT_DIR <output_dir>]
+             COMPILERS <compiler> [...]
+             FEATURES <feature> [...]
+             [BARE_FEATURES <feature> [...]]
+             [VERSION <version>]
+             [PROLOG <prolog>]
+             [EPILOG <epilog>]
+             [ALLOW_UNKNOWN_COMPILERS]
+             [ALLOW_UNKNOWN_COMPILER_VERSIONS]
+   )
+
+This generates the file ``<file>`` with macros which all have the prefix
+``<prefix>``.
+
+By default, all content is written directly to the ``<file>``.  The
+``OUTPUT_FILES_VAR`` may be specified to cause the compiler-specific
+content to be written to separate files.  The separate files are then
+available in the ``<output_files_var>`` and may be consumed by the caller
+for installation for example.  The ``OUTPUT_DIR`` specifies a relative
+path from the main ``<file>`` to the compiler-specific files. For example:
+
+.. code-block:: cmake
+
+   write_compiler_detection_header(
+     FILE climbingstats_compiler_detection.h
+     PREFIX ClimbingStats
+     OUTPUT_FILES_VAR support_files
+     OUTPUT_DIR compilers
+     COMPILERS GNU Clang MSVC Intel
+     FEATURES cxx_variadic_templates
+   )
+   install(FILES
+     ${CMAKE_CURRENT_BINARY_DIR}/climbingstats_compiler_detection.h
+     DESTINATION include
+   )
+   install(FILES
+     ${support_files}
+     DESTINATION include/compilers
+   )
+
+
+``VERSION`` may be used to specify the API version to be generated.
+Future versions of CMake may introduce alternative APIs.  A given
+API is selected by any ``<version>`` value greater than or equal
+to the version of CMake that introduced the given API and less
+than the version of CMake that introduced its succeeding API.
+The value of the :variable:`CMAKE_MINIMUM_REQUIRED_VERSION`
+variable is used if no explicit version is specified.
+(As of CMake version |release| there is only one API version.)
+
+``PROLOG`` may be specified as text content to write at the start of the
+header. ``EPILOG`` may be specified as text content to write at the end
+of the header
+
+At least one ``<compiler>`` and one ``<feature>`` must be listed.  Compilers
+which are known to CMake, but not specified are detected and a preprocessor
+``#error`` is generated for them.  A preprocessor macro matching
+``<PREFIX>_COMPILER_IS_<compiler>`` is generated for each compiler
+known to CMake to contain the value ``0`` or ``1``.
+
+Possible compiler identifiers are documented with the
+:variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+Available features in this version of CMake are listed in the
+:prop_gbl:`CMAKE_C_KNOWN_FEATURES` and
+:prop_gbl:`CMAKE_CXX_KNOWN_FEATURES` global properties.
+See the :manual:`cmake-compile-features(7)` manual for information on
+compile features.
+
+.. versionadded:: 3.2
+  Added ``MSVC`` and ``AppleClang`` compiler support.
+
+.. versionadded:: 3.6
+  Added ``Intel`` compiler support.
+
+.. versionchanged:: 3.8
+  The ``{c,cxx}_std_*`` meta-features are ignored if requested.
+
+.. versionadded:: 3.8
+  ``ALLOW_UNKNOWN_COMPILERS`` and ``ALLOW_UNKNOWN_COMPILER_VERSIONS`` cause
+  the module to generate conditions that treat unknown compilers as simply
+  lacking all features.  Without these options the default behavior is to
+  generate a ``#error`` for unknown compilers and versions.
+
+.. versionadded:: 3.12
+  ``BARE_FEATURES`` will define the compatibility macros with the name used in
+  newer versions of the language standard, so the code can use the new feature
+  name unconditionally.
+
+Feature Test Macros
+===================
+
+For each compiler, a preprocessor macro is generated matching
+``<PREFIX>_COMPILER_IS_<compiler>`` which has the content either ``0``
+or ``1``, depending on the compiler in use. Preprocessor macros for
+compiler version components are generated matching
+``<PREFIX>_COMPILER_VERSION_MAJOR`` ``<PREFIX>_COMPILER_VERSION_MINOR``
+and ``<PREFIX>_COMPILER_VERSION_PATCH`` containing decimal values
+for the corresponding compiler version components, if defined.
+
+A preprocessor test is generated based on the compiler version
+denoting whether each feature is enabled.  A preprocessor macro
+matching ``<PREFIX>_COMPILER_<FEATURE>``, where ``<FEATURE>`` is the
+upper-case ``<feature>`` name, is generated to contain the value
+``0`` or ``1`` depending on whether the compiler in use supports the
+feature:
+
+.. code-block:: cmake
+
+   write_compiler_detection_header(
+     FILE climbingstats_compiler_detection.h
+     PREFIX ClimbingStats
+     COMPILERS GNU Clang AppleClang MSVC Intel
+     FEATURES cxx_variadic_templates
+   )
+
+.. code-block:: c++
+
+   #if ClimbingStats_COMPILER_CXX_VARIADIC_TEMPLATES
+   template<typename... T>
+   void someInterface(T t...) { /* ... */ }
+   #else
+   // Compatibility versions
+   template<typename T1>
+   void someInterface(T1 t1) { /* ... */ }
+   template<typename T1, typename T2>
+   void someInterface(T1 t1, T2 t2) { /* ... */ }
+   template<typename T1, typename T2, typename T3>
+   void someInterface(T1 t1, T2 t2, T3 t3) { /* ... */ }
+   #endif
+
+Symbol Macros
+=============
+
+Some additional symbol-defines are created for particular features for
+use as symbols which may be conditionally defined empty:
+
+.. code-block:: c++
+
+   class MyClass ClimbingStats_FINAL
+   {
+       ClimbingStats_CONSTEXPR int someInterface() { return 42; }
+   };
+
+The ``ClimbingStats_FINAL`` macro will expand to ``final`` if the
+compiler (and its flags) support the ``cxx_final`` feature, and the
+``ClimbingStats_CONSTEXPR`` macro will expand to ``constexpr``
+if ``cxx_constexpr`` is supported.
+
+If ``BARE_FEATURES cxx_final`` was given as argument the ``final`` keyword
+will be defined for old compilers, too.
+
+The following features generate corresponding symbol defines and if they
+are available as ``BARE_FEATURES``:
+
+========================== =================================== ================= ======
+        Feature                          Define                      Symbol       bare
+========================== =================================== ================= ======
+``c_restrict``              ``<PREFIX>_RESTRICT``               ``restrict``      yes
+``cxx_constexpr``           ``<PREFIX>_CONSTEXPR``              ``constexpr``     yes
+``cxx_deleted_functions``   ``<PREFIX>_DELETED_FUNCTION``       ``= delete``
+``cxx_extern_templates``    ``<PREFIX>_EXTERN_TEMPLATE``        ``extern``
+``cxx_final``               ``<PREFIX>_FINAL``                  ``final``         yes
+``cxx_noexcept``            ``<PREFIX>_NOEXCEPT``               ``noexcept``      yes
+``cxx_noexcept``            ``<PREFIX>_NOEXCEPT_EXPR(X)``       ``noexcept(X)``
+``cxx_override``            ``<PREFIX>_OVERRIDE``               ``override``      yes
+========================== =================================== ================= ======
+
+Compatibility Implementation Macros
+===================================
+
+Some features are suitable for wrapping in a macro with a backward
+compatibility implementation if the compiler does not support the feature.
+
+When the ``cxx_static_assert`` feature is not provided by the compiler,
+a compatibility implementation is available via the
+``<PREFIX>_STATIC_ASSERT(COND)`` and
+``<PREFIX>_STATIC_ASSERT_MSG(COND, MSG)`` function-like macros. The macros
+expand to ``static_assert`` where that compiler feature is available, and
+to a compatibility implementation otherwise. In the first form, the
+condition is stringified in the message field of ``static_assert``.  In
+the second form, the message ``MSG`` is passed to the message field of
+``static_assert``, or ignored if using the backward compatibility
+implementation.
+
+The ``cxx_attribute_deprecated`` feature provides a macro definition
+``<PREFIX>_DEPRECATED``, which expands to either the standard
+``[[deprecated]]`` attribute or a compiler-specific decorator such
+as ``__attribute__((__deprecated__))`` used by GNU compilers.
+
+The ``cxx_alignas`` feature provides a macro definition
+``<PREFIX>_ALIGNAS`` which expands to either the standard ``alignas``
+decorator or a compiler-specific decorator such as
+``__attribute__ ((__aligned__))`` used by GNU compilers.
+
+The ``cxx_alignof`` feature provides a macro definition
+``<PREFIX>_ALIGNOF`` which expands to either the standard ``alignof``
+decorator or a compiler-specific decorator such as ``__alignof__``
+used by GNU compilers.
+
+============================= ================================ ===================== ======
+          Feature                          Define                     Symbol          bare
+============================= ================================ ===================== ======
+``cxx_alignas``                ``<PREFIX>_ALIGNAS``             ``alignas``
+``cxx_alignof``                ``<PREFIX>_ALIGNOF``             ``alignof``
+``cxx_nullptr``                ``<PREFIX>_NULLPTR``             ``nullptr``           yes
+``cxx_static_assert``          ``<PREFIX>_STATIC_ASSERT``       ``static_assert``
+``cxx_static_assert``          ``<PREFIX>_STATIC_ASSERT_MSG``   ``static_assert``
+``cxx_attribute_deprecated``   ``<PREFIX>_DEPRECATED``          ``[[deprecated]]``
+``cxx_attribute_deprecated``   ``<PREFIX>_DEPRECATED_MSG``      ``[[deprecated]]``
+``cxx_thread_local``           ``<PREFIX>_THREAD_LOCAL``        ``thread_local``
+============================= ================================ ===================== ======
+
+A use-case which arises with such deprecation macros is the deprecation
+of an entire library.  In that case, all public API in the library may
+be decorated with the ``<PREFIX>_DEPRECATED`` macro.  This results in
+very noisy build output when building the library itself, so the macro
+may be may be defined to empty in that case when building the deprecated
+library:
+
+.. code-block:: cmake
+
+  add_library(compat_support ${srcs})
+  target_compile_definitions(compat_support
+    PRIVATE
+      CompatSupport_DEPRECATED=
+  )
+
+.. _`WCDH Example Usage`:
+
+Example Usage
+=============
+
+.. note::
+
+  This section was migrated from the :manual:`cmake-compile-features(7)`
+  manual since it relies on the ``WriteCompilerDetectionHeader`` module
+  which is removed by policy :policy:`CMP0120`.
+
+Compile features may be preferred if available, without creating a hard
+requirement.  For example, a library may provide alternative
+implementations depending on whether the ``cxx_variadic_templates``
+feature is available:
+
+.. code-block:: c++
+
+  #if Foo_COMPILER_CXX_VARIADIC_TEMPLATES
+  template<int I, int... Is>
+  struct Interface;
+
+  template<int I>
+  struct Interface<I>
+  {
+    static int accumulate()
+    {
+      return I;
+    }
+  };
+
+  template<int I, int... Is>
+  struct Interface
+  {
+    static int accumulate()
+    {
+      return I + Interface<Is...>::accumulate();
+    }
+  };
+  #else
+  template<int I1, int I2 = 0, int I3 = 0, int I4 = 0>
+  struct Interface
+  {
+    static int accumulate() { return I1 + I2 + I3 + I4; }
+  };
+  #endif
+
+Such an interface depends on using the correct preprocessor defines for the
+compiler features.  CMake can generate a header file containing such
+defines using the :module:`WriteCompilerDetectionHeader` module.  The
+module contains the ``write_compiler_detection_header`` function which
+accepts parameters to control the content of the generated header file:
+
+.. code-block:: cmake
+
+  write_compiler_detection_header(
+    FILE "${CMAKE_CURRENT_BINARY_DIR}/foo_compiler_detection.h"
+    PREFIX Foo
+    COMPILERS GNU
+    FEATURES
+      cxx_variadic_templates
+  )
+
+Such a header file may be used internally in the source code of a project,
+and it may be installed and used in the interface of library code.
+
+For each feature listed in ``FEATURES``, a preprocessor definition
+is created in the header file, and defined to either ``1`` or ``0``.
+
+Additionally, some features call for additional defines, such as the
+``cxx_final`` and ``cxx_override`` features. Rather than being used in
+``#ifdef`` code, the ``final`` keyword is abstracted by a symbol
+which is defined to either ``final``, a compiler-specific equivalent, or
+to empty.  That way, C++ code can be written to unconditionally use the
+symbol, and compiler support determines what it is expanded to:
+
+.. code-block:: c++
+
+  struct Interface {
+    virtual void Execute() = 0;
+  };
+
+  struct Concrete Foo_FINAL {
+    void Execute() Foo_OVERRIDE;
+  };
+
+In this case, ``Foo_FINAL`` will expand to ``final`` if the
+compiler supports the keyword, or to empty otherwise.
+
+In this use-case, the project code may wish to enable a particular language
+standard if available from the compiler. The :prop_tgt:`CXX_STANDARD`
+target property may be set to the desired language standard for a particular
+target, and the :variable:`CMAKE_CXX_STANDARD` variable may be set to
+influence all following targets:
+
+.. code-block:: cmake
+
+  write_compiler_detection_header(
+    FILE "${CMAKE_CURRENT_BINARY_DIR}/foo_compiler_detection.h"
+    PREFIX Foo
+    COMPILERS GNU
+    FEATURES
+      cxx_final cxx_override
+  )
+
+  # Includes foo_compiler_detection.h and uses the Foo_FINAL symbol
+  # which will expand to 'final' if the compiler supports the requested
+  # CXX_STANDARD.
+  add_library(foo foo.cpp)
+  set_property(TARGET foo PROPERTY CXX_STANDARD 11)
+
+  # Includes foo_compiler_detection.h and uses the Foo_FINAL symbol
+  # which will expand to 'final' if the compiler supports the feature,
+  # even though CXX_STANDARD is not set explicitly.  The requirement of
+  # cxx_constexpr causes CMake to set CXX_STANDARD internally, which
+  # affects the compile flags.
+  add_library(foo_impl foo_impl.cpp)
+  target_compile_features(foo_impl PRIVATE cxx_constexpr)
+
+The ``write_compiler_detection_header`` function also creates compatibility
+code for other features which have standard equivalents.  For example, the
+``cxx_static_assert`` feature is emulated with a template and abstracted
+via the ``<PREFIX>_STATIC_ASSERT`` and ``<PREFIX>_STATIC_ASSERT_MSG``
+function-macros.
+#]=======================================================================]
+
+# Guard against inclusion by absolute path.
+cmake_policy(GET CMP0120 _WCDH_policy)
+if(_WCDH_policy STREQUAL "NEW")
+  message(FATAL_ERROR "The WriteCompilerDetectionHeader module has been removed by policy CMP0120.")
+elseif(_WCDH_policy STREQUAL "")
+  message(AUTHOR_WARNING
+    "The WriteCompilerDetectionHeader module will be removed by policy CMP0120.  "
+    "Projects should be ported away from the module, perhaps by bundling a copy "
+    "of the generated header or using a third-party alternative."
+    )
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/CMakeCompilerIdDetection.cmake)
+
+function(_load_compiler_variables CompilerId lang)
+  include("${CMAKE_ROOT}/Modules/Compiler/${CompilerId}-${lang}-FeatureTests.cmake" OPTIONAL)
+  set(_cmake_oldestSupported_${CompilerId} ${_cmake_oldestSupported} PARENT_SCOPE)
+  foreach(feature ${ARGN})
+    set(_cmake_feature_test_${CompilerId}_${feature} ${_cmake_feature_test_${feature}} PARENT_SCOPE)
+  endforeach()
+  include("${CMAKE_ROOT}/Modules/Compiler/${CompilerId}-${lang}-DetermineCompiler.cmake" OPTIONAL
+      RESULT_VARIABLE determinedCompiler)
+  if (NOT determinedCompiler)
+    include("${CMAKE_ROOT}/Modules/Compiler/${CompilerId}-DetermineCompiler.cmake" OPTIONAL)
+  endif()
+  set(_compiler_id_version_compute_${CompilerId} ${_compiler_id_version_compute} PARENT_SCOPE)
+endfunction()
+
+macro(_simpledefine FEATURE_NAME FEATURE_TESTNAME FEATURE_STRING FEATURE_DEFAULT_STRING)
+  if (feature STREQUAL "${FEATURE_NAME}")
+        set(def_value "${prefix_arg}_${FEATURE_TESTNAME}")
+        string(APPEND file_content "
+#  if defined(${def_name}) && ${def_name}
+#    define ${def_value} ${FEATURE_STRING}
+#  else
+#    define ${def_value} ${FEATURE_DEFAULT_STRING}
+#  endif
+\n")
+  endif()
+endmacro()
+
+macro(_simplebaredefine FEATURE_NAME FEATURE_STRING FEATURE_DEFAULT_STRING)
+  if (feature STREQUAL "${FEATURE_NAME}")
+        string(APPEND file_content "
+#  if !(defined(${def_name}) && ${def_name})
+#    define ${FEATURE_STRING} ${FEATURE_DEFAULT_STRING}
+#  endif
+\n")
+  endif()
+endmacro()
+
+function(_check_feature_lists C_FEATURE_VAR CXX_FEATURE_VAR)
+  foreach(feature ${ARGN})
+    if (feature MATCHES "^c_std_")
+      # ignored
+    elseif (feature MATCHES "^cxx_std_")
+      # ignored
+    elseif (feature MATCHES "^cxx_")
+      list(APPEND _langs CXX)
+      list(APPEND ${CXX_FEATURE_VAR} ${feature})
+    elseif (feature MATCHES "^c_")
+      list(APPEND _langs C)
+      list(APPEND ${C_FEATURE_VAR} ${feature})
+    else()
+      message(FATAL_ERROR "Unsupported feature ${feature}.")
+    endif()
+  endforeach()
+  set(${C_FEATURE_VAR} ${${C_FEATURE_VAR}} PARENT_SCOPE)
+  set(${CXX_FEATURE_VAR} ${${CXX_FEATURE_VAR}} PARENT_SCOPE)
+  set(_langs ${_langs} PARENT_SCOPE)
+endfunction()
+
+function(write_compiler_detection_header
+    file_keyword file_arg
+    prefix_keyword prefix_arg
+    )
+  if (NOT "x${file_keyword}" STREQUAL "xFILE")
+    message(FATAL_ERROR "write_compiler_detection_header: FILE parameter missing.")
+  endif()
+  if (NOT "x${prefix_keyword}" STREQUAL "xPREFIX")
+    message(FATAL_ERROR "write_compiler_detection_header: PREFIX parameter missing.")
+  endif()
+  set(options ALLOW_UNKNOWN_COMPILERS ALLOW_UNKNOWN_COMPILER_VERSIONS)
+  set(oneValueArgs VERSION EPILOG PROLOG OUTPUT_FILES_VAR OUTPUT_DIR)
+  set(multiValueArgs COMPILERS FEATURES BARE_FEATURES)
+  cmake_parse_arguments(_WCD "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+  if (NOT _WCD_COMPILERS)
+    message(FATAL_ERROR "Invalid arguments.  write_compiler_detection_header requires at least one compiler.")
+  endif()
+  if (NOT _WCD_FEATURES AND NOT _WCD_BARE_FEATURES)
+    message(FATAL_ERROR "Invalid arguments.  write_compiler_detection_header requires at least one feature.")
+  endif()
+
+  if(_WCD_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Unparsed arguments: ${_WCD_UNPARSED_ARGUMENTS}")
+  endif()
+
+  if (prefix_arg STREQUAL "")
+    message(FATAL_ERROR "A prefix must be specified")
+  endif()
+  string(MAKE_C_IDENTIFIER ${prefix_arg} cleaned_prefix)
+  if (NOT prefix_arg STREQUAL cleaned_prefix)
+    message(FATAL_ERROR "The prefix must be a valid C identifier.")
+  endif()
+
+  if(NOT _WCD_VERSION)
+    set(_WCD_VERSION ${CMAKE_MINIMUM_REQUIRED_VERSION})
+  endif()
+  set(_min_version 3.1.0) # Version which introduced this function
+  if (_WCD_VERSION VERSION_LESS _min_version)
+    set(err "VERSION compatibility for write_compiler_detection_header is set to ${_WCD_VERSION}, which is too low.")
+    string(APPEND err "  It must be set to at least ${_min_version}.  ")
+    string(APPEND err "  Either set the VERSION parameter to the write_compiler_detection_header function, or update")
+    string(APPEND err " your minimum required CMake version with the cmake_minimum_required command.")
+    message(FATAL_ERROR "${err}")
+  endif()
+
+  if(_WCD_OUTPUT_FILES_VAR)
+    if(NOT _WCD_OUTPUT_DIR)
+      message(FATAL_ERROR "If OUTPUT_FILES_VAR is specified, then OUTPUT_DIR must also be specified.")
+    endif()
+  endif()
+  if(_WCD_OUTPUT_DIR)
+    if(NOT _WCD_OUTPUT_FILES_VAR)
+      message(FATAL_ERROR "If OUTPUT_DIR is specified, then OUTPUT_FILES_VAR must also be specified.")
+    endif()
+    get_filename_component(main_file_dir ${file_arg} DIRECTORY)
+    if (NOT IS_ABSOLUTE ${main_file_dir})
+      set(main_file_dir "${CMAKE_CURRENT_BINARY_DIR}/${main_file_dir}")
+    endif()
+    if (NOT IS_ABSOLUTE ${_WCD_OUTPUT_DIR})
+      set(_WCD_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/${_WCD_OUTPUT_DIR}")
+    endif()
+    get_filename_component(out_file_dir ${_WCD_OUTPUT_DIR} ABSOLUTE)
+    string(FIND ${out_file_dir} ${main_file_dir} idx)
+    if (NOT idx EQUAL 0)
+      message(FATAL_ERROR "The compiler-specific output directory must be within the same directory as the main file.")
+    endif()
+
+    if (main_file_dir STREQUAL out_file_dir)
+      unset(_WCD_OUTPUT_DIR)
+    else()
+      string(REPLACE "${main_file_dir}/" "" _WCD_OUTPUT_DIR "${out_file_dir}/")
+    endif()
+  endif()
+
+  set(compilers
+    GNU
+    Clang
+    AppleClang
+    MSVC
+    SunPro
+    Intel
+  )
+
+  set(_hex_compilers ADSP Borland Embarcadero SunPro)
+
+  foreach(_comp ${_WCD_COMPILERS})
+    list(FIND compilers ${_comp} idx)
+    if (idx EQUAL -1)
+      message(FATAL_ERROR "Unsupported compiler ${_comp}.")
+    endif()
+    if (NOT _need_hex_conversion)
+      list(FIND _hex_compilers ${_comp} idx)
+      if (NOT idx EQUAL -1)
+        set(_need_hex_conversion TRUE)
+      endif()
+    endif()
+  endforeach()
+
+  set(file_content "
+// This is a generated file. Do not edit!
+
+#ifndef ${prefix_arg}_COMPILER_DETECTION_H
+#define ${prefix_arg}_COMPILER_DETECTION_H
+")
+
+  if (_WCD_PROLOG)
+    string(APPEND file_content "\n${_WCD_PROLOG}\n")
+  endif()
+
+  if (_need_hex_conversion)
+    string(APPEND file_content "
+#define ${prefix_arg}_DEC(X) (X)
+#define ${prefix_arg}_HEX(X) ( \\
+    ((X)>>28 & 0xF) * 10000000 + \\
+    ((X)>>24 & 0xF) *  1000000 + \\
+    ((X)>>20 & 0xF) *   100000 + \\
+    ((X)>>16 & 0xF) *    10000 + \\
+    ((X)>>12 & 0xF) *     1000 + \\
+    ((X)>>8  & 0xF) *      100 + \\
+    ((X)>>4  & 0xF) *       10 + \\
+    ((X)     & 0xF) \\
+    )\n")
+  endif()
+
+  _check_feature_lists(C_features CXX_features ${_WCD_FEATURES})
+  _check_feature_lists(C_bare_features CXX_bare_features ${_WCD_BARE_FEATURES})
+  list(REMOVE_DUPLICATES _langs)
+
+  if(_WCD_OUTPUT_FILES_VAR)
+    get_filename_component(main_file_name ${file_arg} NAME)
+    set(compiler_file_content_
+"#ifndef ${prefix_arg}_COMPILER_DETECTION_H
+#  error This file may only be included from ${main_file_name}
+#endif\n")
+  endif()
+
+  foreach(_lang ${_langs})
+    set(target_compilers)
+    foreach(compiler ${_WCD_COMPILERS})
+      _load_compiler_variables(${compiler} ${_lang} ${${_lang}_features})
+      if(_cmake_oldestSupported_${compiler})
+        list(APPEND target_compilers ${compiler})
+      endif()
+    endforeach()
+
+    get_property(known_features GLOBAL PROPERTY CMAKE_${_lang}_KNOWN_FEATURES)
+    foreach(feature ${${_lang}_features})
+      list(FIND known_features ${feature} idx)
+      if (idx EQUAL -1)
+        message(FATAL_ERROR "Unsupported feature ${feature}.")
+      endif()
+    endforeach()
+
+    if(_lang STREQUAL CXX)
+      string(APPEND file_content "\n#ifdef __cplusplus\n")
+    else()
+      string(APPEND file_content "\n#ifndef __cplusplus\n")
+    endif()
+
+    compiler_id_detection(ID_CONTENT ${_lang} PREFIX ${prefix_arg}_
+      ID_DEFINE
+    )
+
+    string(APPEND file_content "${ID_CONTENT}\n")
+
+    set(pp_if "if")
+    foreach(compiler ${target_compilers})
+      string(APPEND file_content "\n#  ${pp_if} ${prefix_arg}_COMPILER_IS_${compiler}\n")
+
+      if(_WCD_OUTPUT_FILES_VAR)
+        set(compile_file_name "${_WCD_OUTPUT_DIR}${prefix_arg}_COMPILER_INFO_${compiler}_${_lang}.h")
+        string(APPEND file_content "\n#    include \"${compile_file_name}\"\n")
+      endif()
+
+      if(_WCD_OUTPUT_FILES_VAR)
+        set(compiler_file_content compiler_file_content_${compiler}_${_lang})
+      else()
+        set(compiler_file_content file_content)
+      endif()
+
+      if(NOT _WCD_ALLOW_UNKNOWN_COMPILER_VERSIONS)
+        string(APPEND ${compiler_file_content} "
+#    if !(${_cmake_oldestSupported_${compiler}})
+#      error Unsupported compiler version
+#    endif\n")
+      endif()
+
+      set(PREFIX ${prefix_arg}_)
+      if (_need_hex_conversion)
+        set(MACRO_DEC ${prefix_arg}_DEC)
+        set(MACRO_HEX ${prefix_arg}_HEX)
+      else()
+        set(MACRO_DEC)
+        set(MACRO_HEX)
+      endif()
+      string(CONFIGURE "${_compiler_id_version_compute_${compiler}}" VERSION_BLOCK @ONLY)
+      string(APPEND ${compiler_file_content} "${VERSION_BLOCK}\n")
+      set(PREFIX)
+      set(MACRO_DEC)
+      set(MACRO_HEX)
+
+      set(pp_if "elif")
+      foreach(feature ${${_lang}_features})
+        string(TOUPPER ${feature} feature_upper)
+        set(feature_PP "COMPILER_${feature_upper}")
+        set(_define_item "\n#    define ${prefix_arg}_${feature_PP} 0\n")
+        if (_cmake_feature_test_${compiler}_${feature} STREQUAL "1")
+          set(_define_item "\n#    define ${prefix_arg}_${feature_PP} 1\n")
+        elseif (_cmake_feature_test_${compiler}_${feature})
+          set(_define_item "\n#      define ${prefix_arg}_${feature_PP} 0\n")
+          set(_define_item "\n#    if ${_cmake_feature_test_${compiler}_${feature}}\n#      define ${prefix_arg}_${feature_PP} 1\n#    else${_define_item}#    endif\n")
+        endif()
+        string(APPEND ${compiler_file_content} "${_define_item}")
+      endforeach()
+    endforeach()
+    if(pp_if STREQUAL "elif")
+      if(_WCD_ALLOW_UNKNOWN_COMPILERS)
+        string(APPEND file_content "
+#  endif\n")
+      else()
+        string(APPEND file_content "
+#  else
+#    error Unsupported compiler
+#  endif\n")
+      endif()
+    endif()
+    foreach(feature ${${_lang}_features})
+      string(TOUPPER ${feature} feature_upper)
+      set(feature_PP "COMPILER_${feature_upper}")
+      set(def_name ${prefix_arg}_${feature_PP})
+      _simpledefine(c_restrict RESTRICT restrict "")
+      _simpledefine(cxx_constexpr CONSTEXPR constexpr "")
+      _simpledefine(cxx_final FINAL final "")
+      _simpledefine(cxx_override OVERRIDE override "")
+      if (feature STREQUAL cxx_static_assert)
+        set(def_value "${prefix_arg}_STATIC_ASSERT(X)")
+        set(def_value_msg "${prefix_arg}_STATIC_ASSERT_MSG(X, MSG)")
+        set(def_fallback "enum { ${prefix_arg}_STATIC_ASSERT_JOIN(${prefix_arg}StaticAssertEnum, __LINE__) = sizeof(${prefix_arg}StaticAssert<X>) }")
+        string(APPEND file_content "#  if defined(${def_name}) && ${def_name}
+#    define ${def_value} static_assert(X, #X)
+#    define ${def_value_msg} static_assert(X, MSG)
+#  else
+#    define ${prefix_arg}_STATIC_ASSERT_JOIN(X, Y) ${prefix_arg}_STATIC_ASSERT_JOIN_IMPL(X, Y)
+#    define ${prefix_arg}_STATIC_ASSERT_JOIN_IMPL(X, Y) X##Y
+template<bool> struct ${prefix_arg}StaticAssert;
+template<> struct ${prefix_arg}StaticAssert<true>{};
+#    define ${def_value} ${def_fallback}
+#    define ${def_value_msg} ${def_fallback}
+#  endif
+\n")
+      endif()
+      if (feature STREQUAL cxx_alignas)
+        set(def_value "${prefix_arg}_ALIGNAS(X)")
+        string(APPEND file_content "
+#  if defined(${def_name}) && ${def_name}
+#    define ${def_value} alignas(X)
+#  elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang || ${prefix_arg}_COMPILER_IS_AppleClang
+#    define ${def_value} __attribute__ ((__aligned__(X)))
+#  elif ${prefix_arg}_COMPILER_IS_MSVC
+#    define ${def_value} __declspec(align(X))
+#  else
+#    define ${def_value}
+#  endif
+\n")
+      endif()
+      if (feature STREQUAL cxx_alignof)
+        set(def_value "${prefix_arg}_ALIGNOF(X)")
+        string(APPEND file_content "
+#  if defined(${def_name}) && ${def_name}
+#    define ${def_value} alignof(X)
+#  elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang || ${prefix_arg}_COMPILER_IS_AppleClang
+#    define ${def_value} __alignof__(X)
+#  elif ${prefix_arg}_COMPILER_IS_MSVC
+#    define ${def_value} __alignof(X)
+#  endif
+\n")
+      endif()
+      _simpledefine(cxx_deleted_functions DELETED_FUNCTION "= delete" "")
+      _simpledefine(cxx_extern_templates EXTERN_TEMPLATE extern "")
+      if (feature STREQUAL cxx_noexcept)
+        set(def_value "${prefix_arg}_NOEXCEPT")
+        string(APPEND file_content "
+#  if defined(${def_name}) && ${def_name}
+#    define ${def_value} noexcept
+#    define ${def_value}_EXPR(X) noexcept(X)
+#  else
+#    define ${def_value}
+#    define ${def_value}_EXPR(X)
+#  endif
+\n")
+      endif()
+      if (feature STREQUAL cxx_nullptr)
+        set(def_value "${prefix_arg}_NULLPTR")
+        string(APPEND file_content "
+#  if defined(${def_name}) && ${def_name}
+#    define ${def_value} nullptr
+#  elif ${prefix_arg}_COMPILER_IS_GNU
+#    define ${def_value} __null
+#  else
+#    define ${def_value} 0
+#  endif
+\n")
+      endif()
+      if (feature STREQUAL cxx_thread_local)
+        set(def_value "${prefix_arg}_THREAD_LOCAL")
+        string(APPEND file_content "
+#  if defined(${def_name}) && ${def_name}
+#    define ${def_value} thread_local
+#  elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang || ${prefix_arg}_COMPILER_IS_AppleClang
+#    define ${def_value} __thread
+#  elif ${prefix_arg}_COMPILER_IS_MSVC
+#    define ${def_value} __declspec(thread)
+#  else
+// ${def_value} not defined for this configuration.
+#  endif
+\n")
+      endif()
+      if (feature STREQUAL cxx_attribute_deprecated)
+        set(def_name ${prefix_arg}_${feature_PP})
+        set(def_value "${prefix_arg}_DEPRECATED")
+        string(APPEND file_content "
+#  ifndef ${def_value}
+#    if defined(${def_name}) && ${def_name}
+#      define ${def_value} [[deprecated]]
+#      define ${def_value}_MSG(MSG) [[deprecated(MSG)]]
+#    elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang
+#      define ${def_value} __attribute__((__deprecated__))
+#      define ${def_value}_MSG(MSG) __attribute__((__deprecated__(MSG)))
+#    elif ${prefix_arg}_COMPILER_IS_MSVC
+#      define ${def_value} __declspec(deprecated)
+#      define ${def_value}_MSG(MSG) __declspec(deprecated(MSG))
+#    else
+#      define ${def_value}
+#      define ${def_value}_MSG(MSG)
+#    endif
+#  endif
+\n")
+      endif()
+    endforeach()
+
+    foreach(feature ${${_lang}_bare_features})
+      string(TOUPPER ${feature} feature_upper)
+      set(feature_PP "COMPILER_${feature_upper}")
+      set(def_name ${prefix_arg}_${feature_PP})
+      _simplebaredefine(c_restrict restrict "")
+      _simplebaredefine(cxx_constexpr constexpr "")
+      _simplebaredefine(cxx_final final "")
+      _simplebaredefine(cxx_override override "")
+      if (feature STREQUAL cxx_nullptr)
+        set(def_value "nullptr")
+        string(APPEND file_content "
+#  if !(defined(${def_name}) && ${def_name})
+#    if ${prefix_arg}_COMPILER_IS_GNU
+#      define ${def_value} __null
+#    else
+#      define ${def_value} 0
+#    endif
+#  endif
+\n")
+      endif()
+      _simplebaredefine(cxx_noexcept noexcept "")
+    endforeach()
+
+    string(APPEND file_content "#endif\n")
+
+  endforeach()
+
+  if(_WCD_OUTPUT_FILES_VAR)
+    foreach(compiler ${_WCD_COMPILERS})
+      foreach(_lang ${_langs})
+        if(compiler_file_content_${compiler}_${_lang})
+          set(CMAKE_CONFIGURABLE_FILE_CONTENT "${compiler_file_content_}")
+          string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT "${compiler_file_content_${compiler}_${_lang}}")
+
+          set(compile_file_name "${_WCD_OUTPUT_DIR}${prefix_arg}_COMPILER_INFO_${compiler}_${_lang}.h")
+          set(full_path "${main_file_dir}/${compile_file_name}")
+          list(APPEND ${_WCD_OUTPUT_FILES_VAR} ${full_path})
+          configure_file("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
+            "${full_path}"
+            @ONLY
+          )
+        endif()
+      endforeach()
+    endforeach()
+    set(${_WCD_OUTPUT_FILES_VAR} ${${_WCD_OUTPUT_FILES_VAR}} PARENT_SCOPE)
+  endif()
+
+  if (_WCD_EPILOG)
+    string(APPEND file_content "\n${_WCD_EPILOG}\n")
+  endif()
+  string(APPEND file_content "\n#endif")
+
+  set(CMAKE_CONFIGURABLE_FILE_CONTENT ${file_content})
+  configure_file("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
+    "${file_arg}"
+    @ONLY
+  )
+endfunction()
diff --git a/share/cmake-3.18/Modules/ecos_clean.cmake b/share/cmake-3.22/Modules/ecos_clean.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/ecos_clean.cmake
rename to share/cmake-3.22/Modules/ecos_clean.cmake
diff --git a/share/cmake-3.18/Modules/exportheader.cmake.in b/share/cmake-3.22/Modules/exportheader.cmake.in
similarity index 100%
rename from share/cmake-3.18/Modules/exportheader.cmake.in
rename to share/cmake-3.22/Modules/exportheader.cmake.in
diff --git a/share/cmake-3.18/Modules/kde3init_dummy.cpp.in b/share/cmake-3.22/Modules/kde3init_dummy.cpp.in
similarity index 100%
rename from share/cmake-3.18/Modules/kde3init_dummy.cpp.in
rename to share/cmake-3.22/Modules/kde3init_dummy.cpp.in
diff --git a/share/cmake-3.18/Modules/kde3uic.cmake b/share/cmake-3.22/Modules/kde3uic.cmake
similarity index 100%
rename from share/cmake-3.18/Modules/kde3uic.cmake
rename to share/cmake-3.22/Modules/kde3uic.cmake
diff --git a/share/cmake-3.18/Modules/readme.txt b/share/cmake-3.22/Modules/readme.txt
similarity index 100%
rename from share/cmake-3.18/Modules/readme.txt
rename to share/cmake-3.22/Modules/readme.txt
diff --git a/share/cmake-3.18/Templates/AppleInfo.plist b/share/cmake-3.22/Templates/AppleInfo.plist
similarity index 100%
rename from share/cmake-3.18/Templates/AppleInfo.plist
rename to share/cmake-3.22/Templates/AppleInfo.plist
diff --git a/share/cmake-3.18/Templates/CMakeVSMacros1.vsmacros b/share/cmake-3.22/Templates/CMakeVSMacros1.vsmacros
similarity index 100%
rename from share/cmake-3.18/Templates/CMakeVSMacros1.vsmacros
rename to share/cmake-3.22/Templates/CMakeVSMacros1.vsmacros
Binary files differ
diff --git a/share/cmake-3.18/Templates/CMakeVSMacros2.vsmacros b/share/cmake-3.22/Templates/CMakeVSMacros2.vsmacros
similarity index 100%
rename from share/cmake-3.18/Templates/CMakeVSMacros2.vsmacros
rename to share/cmake-3.22/Templates/CMakeVSMacros2.vsmacros
Binary files differ
diff --git a/share/cmake-3.18/Templates/CPack.GenericDescription.txt b/share/cmake-3.22/Templates/CPack.GenericDescription.txt
similarity index 100%
rename from share/cmake-3.18/Templates/CPack.GenericDescription.txt
rename to share/cmake-3.22/Templates/CPack.GenericDescription.txt
diff --git a/share/cmake-3.18/Templates/CPack.GenericLicense.txt b/share/cmake-3.22/Templates/CPack.GenericLicense.txt
similarity index 100%
rename from share/cmake-3.18/Templates/CPack.GenericLicense.txt
rename to share/cmake-3.22/Templates/CPack.GenericLicense.txt
diff --git a/share/cmake-3.18/Templates/CPack.GenericWelcome.txt b/share/cmake-3.22/Templates/CPack.GenericWelcome.txt
similarity index 100%
rename from share/cmake-3.18/Templates/CPack.GenericWelcome.txt
rename to share/cmake-3.22/Templates/CPack.GenericWelcome.txt
diff --git a/share/cmake-3.18/Templates/CPackConfig.cmake.in b/share/cmake-3.22/Templates/CPackConfig.cmake.in
similarity index 100%
rename from share/cmake-3.18/Templates/CPackConfig.cmake.in
rename to share/cmake-3.22/Templates/CPackConfig.cmake.in
diff --git a/share/cmake-3.18/Templates/CTestScript.cmake.in b/share/cmake-3.22/Templates/CTestScript.cmake.in
similarity index 100%
rename from share/cmake-3.18/Templates/CTestScript.cmake.in
rename to share/cmake-3.22/Templates/CTestScript.cmake.in
diff --git a/share/cmake-3.22/Templates/MSBuild/CustomBuildDepFile.targets b/share/cmake-3.22/Templates/MSBuild/CustomBuildDepFile.targets
new file mode 100644
index 0000000..2387ab5
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/CustomBuildDepFile.targets
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <!-- Update AdditionalInputs with depfile-discovered inputs.  -->
+  <Target Name="CMakeCustomBuildDepFileAdditionalInputs" BeforeTargets="CustomBuild" Condition="'@(CustomBuild)' != ''">
+    <ItemGroup>
+      <!-- Save original AdditionalInputs generated by CMake.  -->
+      <CustomBuild>
+        <CMakeAdditionalInputs>%(CustomBuild.AdditionalInputs)</CMakeAdditionalInputs>
+      </CustomBuild>
+      <!-- Read depfile-discovered inputs.  -->
+      <CustomBuild Condition="Exists('%(CustomBuild.DepFileAdditionalInputsFile)')">
+        <DepFileAdditionalInputs>$([System.IO.File]::ReadAllText('%(CustomBuild.DepFileAdditionalInputsFile)').TrimEnd())</DepFileAdditionalInputs>
+      </CustomBuild>
+      <!-- Add depfile-discovered inputs to AdditionalInputs.  -->
+      <CustomBuild Condition="'%(CustomBuild.DepFileAdditionalInputs)' != ''">
+        <AdditionalInputs Condition="'%(CustomBuild.AdditionalInputs)' == ''">%(CustomBuild.DepFileAdditionalInputs)</AdditionalInputs>
+        <AdditionalInputs Condition="'%(CustomBuild.AdditionalInputs)' != ''">%(CustomBuild.AdditionalInputs);%(CustomBuild.DepFileAdditionalInputs)</AdditionalInputs>
+      </CustomBuild>
+    </ItemGroup>
+  </Target>
+
+  <!-- Update the tracking log with depfile-discovered inputs.  -->
+  <Target Name="CMakeCustomBuildDepFileTrackingLog" AfterTargets="CustomBuild" Condition="'@(CustomBuild)' != ''">
+    <!-- Compute the tracking log content for each CustomBuild item individually.  -->
+    <ItemGroup>
+      <!-- Read depfile-discovered inputs.  -->
+      <CustomBuild Condition="Exists('%(CustomBuild.DepFileAdditionalInputsFile)')">
+        <DepFileAdditionalInputs>$([System.IO.File]::ReadAllText('%(CustomBuild.DepFileAdditionalInputsFile)').TrimEnd())</DepFileAdditionalInputs>
+      </CustomBuild>
+      <!-- Generate tracking log representation of all inputs.  -->
+      <CustomBuild>
+        <ReadTLog>^%(CustomBuild.Identity)&#xD;&#xA;</ReadTLog>
+      </CustomBuild>
+      <CustomBuild Condition="'%(CustomBuild.CMakeAdditionalInputs)' != ''">
+        <ReadTLog>%(ReadTLog)$([System.String]::Copy('%(CustomBuild.CMakeAdditionalInputs)').Trim(';').Replace(';', '&#xD;&#xA;'))&#xD;&#xA;</ReadTLog>
+      </CustomBuild>
+      <CustomBuild Condition="'%(CustomBuild.DepFileAdditionalInputs)' != ''">
+        <ReadTLog>%(ReadTLog)$([System.String]::Copy('%(CustomBuild.DepFileAdditionalInputs)').Trim(';').Replace(';', '&#xD;&#xA;'))&#xD;&#xA;</ReadTLog>
+      </CustomBuild>
+    </ItemGroup>
+    <!-- Compute the combined tracking log for all CustomBuild items together.  -->
+    <PropertyGroup>
+      <CustomBuildReadTLog>@(CustomBuild->'%(ReadTLog)','')</CustomBuildReadTLog>
+    </PropertyGroup>
+    <!-- Replace the combined tracking log on disk.  -->
+    <WriteLinesToFile File="$(TLogLocation)CustomBuild.read.1.tlog" Overwrite="true" Lines="$(CustomBuildReadTLog.ToUpper())" />
+  </Target>
+</Project>
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v10_CL.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v10_CL.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v10_CL.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v10_CL.json
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v10_CSharp.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v10_CSharp.json
new file mode 100644
index 0000000..9f21d9a
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v10_CSharp.json
@@ -0,0 +1,535 @@
+[
+  {
+    "name":  "ProjectName",
+    "switch": "out:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:exe",
+    "comment": "",
+    "value": "Exe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:winexe",
+    "comment": "",
+    "value": "Winexe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:library",
+    "comment": "",
+    "value": "Library",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:module",
+    "comment": "",
+    "value": "Module",
+    "flags": []
+  },
+  {
+    "name":  "DocumentationFile",
+    "switch": "doc",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x86",
+    "comment": "",
+    "value": "x86",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:Itanium",
+    "comment": "",
+    "value": "Itanium",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x64",
+    "comment": "",
+    "value": "x64",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:arm",
+    "comment": "",
+    "value": "arm",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu32bitpreferred",
+    "comment": "",
+    "value": "anycpu32bitpreferred",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu",
+    "comment": "",
+    "value": "anycpu",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "mit alias",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "dateiliste",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AddModules",
+    "switch": "addmodule:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name":  "Win32Resource",
+    "switch": "win32res:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationIcon",
+    "switch": "win32icon:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationManifest",
+    "switch": "win32manifest:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "NoWin32Manifest",
+    "switch": "nowin32manifest",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineDebug",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": [
+      "Continue"
+    ]
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:none",
+    "comment": "",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:full",
+    "comment": "",
+    "value": "full",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:pdbonly",
+    "comment": "",
+    "value": "pdbonly",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:0",
+    "comment": "",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:1",
+    "comment": "",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:2",
+    "comment": "",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "NoWarn",
+    "switch": "nowarn:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "CommaAppendable"
+    ]
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineConstants",
+    "switch": "define:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable",
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AssemblyOriginatorKeyFile",
+    "switch": "keyfile",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "KeyContainerName",
+    "switch": "keycontainer",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoLogo",
+    "switch": "nologo",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoConfig",
+    "switch": "noconfig",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "BaseAddress",
+    "switch": "baseaddress:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CodePage",
+    "switch": "codepage",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "Utf8Output",
+    "switch": "utf8output",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "MainEntryPoint",
+    "switch": "main:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "GenerateFullPaths",
+    "switch": "fullpaths",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "FileAlignment",
+    "switch": "filealign",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "PdbFile",
+    "switch": "pdb:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "SubsystemVersion",
+    "switch": "subsystemversion",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AdditionalLibPaths",
+    "switch": "lib:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:none",
+    "comment": "Do Not Send Report",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "prompt",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:queue",
+    "comment": "Queue For Next Login",
+    "value": "queue",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:send",
+    "comment": "Send Automatically",
+    "value": "send",
+    "flags": []
+  }
+]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v10_Cuda.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v10_Cuda.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v10_Cuda.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v10_Cuda.json
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v10_CudaHost.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v10_CudaHost.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v10_CudaHost.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v10_CudaHost.json
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v10_LIB.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v10_LIB.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v10_LIB.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v10_LIB.json
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v10_Link.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v10_Link.json
new file mode 100644
index 0000000..494774b
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v10_Link.json
@@ -0,0 +1,1128 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWSCE",
+    "comment": "WindowsCE",
+    "value": "WindowsCE",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "SpaceAppendable"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Generate Debug Info",
+    "value": "true",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v10_MASM.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v10_MASM.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v10_MASM.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v10_MASM.json
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v10_NASM.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v10_NASM.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v10_NASM.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v10_NASM.json
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v10_RC.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v10_RC.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v10_RC.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v10_RC.json
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v11_CL.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v11_CL.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v11_CL.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v11_CL.json
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v11_CSharp.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v11_CSharp.json
new file mode 100644
index 0000000..9f21d9a
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v11_CSharp.json
@@ -0,0 +1,535 @@
+[
+  {
+    "name":  "ProjectName",
+    "switch": "out:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:exe",
+    "comment": "",
+    "value": "Exe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:winexe",
+    "comment": "",
+    "value": "Winexe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:library",
+    "comment": "",
+    "value": "Library",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:module",
+    "comment": "",
+    "value": "Module",
+    "flags": []
+  },
+  {
+    "name":  "DocumentationFile",
+    "switch": "doc",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x86",
+    "comment": "",
+    "value": "x86",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:Itanium",
+    "comment": "",
+    "value": "Itanium",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x64",
+    "comment": "",
+    "value": "x64",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:arm",
+    "comment": "",
+    "value": "arm",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu32bitpreferred",
+    "comment": "",
+    "value": "anycpu32bitpreferred",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu",
+    "comment": "",
+    "value": "anycpu",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "mit alias",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "dateiliste",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AddModules",
+    "switch": "addmodule:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name":  "Win32Resource",
+    "switch": "win32res:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationIcon",
+    "switch": "win32icon:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationManifest",
+    "switch": "win32manifest:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "NoWin32Manifest",
+    "switch": "nowin32manifest",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineDebug",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": [
+      "Continue"
+    ]
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:none",
+    "comment": "",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:full",
+    "comment": "",
+    "value": "full",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:pdbonly",
+    "comment": "",
+    "value": "pdbonly",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:0",
+    "comment": "",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:1",
+    "comment": "",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:2",
+    "comment": "",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "NoWarn",
+    "switch": "nowarn:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "CommaAppendable"
+    ]
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineConstants",
+    "switch": "define:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable",
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AssemblyOriginatorKeyFile",
+    "switch": "keyfile",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "KeyContainerName",
+    "switch": "keycontainer",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoLogo",
+    "switch": "nologo",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoConfig",
+    "switch": "noconfig",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "BaseAddress",
+    "switch": "baseaddress:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CodePage",
+    "switch": "codepage",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "Utf8Output",
+    "switch": "utf8output",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "MainEntryPoint",
+    "switch": "main:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "GenerateFullPaths",
+    "switch": "fullpaths",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "FileAlignment",
+    "switch": "filealign",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "PdbFile",
+    "switch": "pdb:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "SubsystemVersion",
+    "switch": "subsystemversion",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AdditionalLibPaths",
+    "switch": "lib:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:none",
+    "comment": "Do Not Send Report",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "prompt",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:queue",
+    "comment": "Queue For Next Login",
+    "value": "queue",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:send",
+    "comment": "Send Automatically",
+    "value": "send",
+    "flags": []
+  }
+]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v11_LIB.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v11_LIB.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v11_LIB.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v11_LIB.json
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v11_Link.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v11_Link.json
new file mode 100644
index 0000000..0db5d9e
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v11_Link.json
@@ -0,0 +1,1263 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD:NO",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "SpaceAppendable"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ManifestEmbed",
+    "switch": "manifest:embed",
+    "comment": "Embed Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Generate Debug Info",
+    "value": "true",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AppContainer",
+    "switch": "APPCONTAINER",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN:NO",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DetectOneDefinitionRule",
+    "switch": "ODR",
+    "comment": "Detect One Definition Rule violations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ManifestInput",
+    "switch": "manifestinput:",
+    "comment": "Manifest Input",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataFile",
+    "switch": "WINMDFILE:",
+    "comment": "Windows Metadata File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataLinkKeyFile",
+    "switch": "WINMDKEYFILE:",
+    "comment": "Windows Metadata Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataKeyContainer",
+    "switch": "WINMDKEYCONTAINER:",
+    "comment": "Windows Metadata Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v11_MASM.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v11_MASM.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v11_MASM.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v11_MASM.json
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v11_RC.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v11_RC.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v11_RC.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v11_RC.json
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v12_CL.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v12_CL.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v12_CL.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v12_CL.json
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v12_CSharp.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v12_CSharp.json
new file mode 100644
index 0000000..9f21d9a
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v12_CSharp.json
@@ -0,0 +1,535 @@
+[
+  {
+    "name":  "ProjectName",
+    "switch": "out:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:exe",
+    "comment": "",
+    "value": "Exe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:winexe",
+    "comment": "",
+    "value": "Winexe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:library",
+    "comment": "",
+    "value": "Library",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:module",
+    "comment": "",
+    "value": "Module",
+    "flags": []
+  },
+  {
+    "name":  "DocumentationFile",
+    "switch": "doc",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x86",
+    "comment": "",
+    "value": "x86",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:Itanium",
+    "comment": "",
+    "value": "Itanium",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x64",
+    "comment": "",
+    "value": "x64",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:arm",
+    "comment": "",
+    "value": "arm",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu32bitpreferred",
+    "comment": "",
+    "value": "anycpu32bitpreferred",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu",
+    "comment": "",
+    "value": "anycpu",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "mit alias",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "dateiliste",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AddModules",
+    "switch": "addmodule:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name":  "Win32Resource",
+    "switch": "win32res:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationIcon",
+    "switch": "win32icon:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationManifest",
+    "switch": "win32manifest:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "NoWin32Manifest",
+    "switch": "nowin32manifest",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineDebug",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": [
+      "Continue"
+    ]
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:none",
+    "comment": "",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:full",
+    "comment": "",
+    "value": "full",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:pdbonly",
+    "comment": "",
+    "value": "pdbonly",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:0",
+    "comment": "",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:1",
+    "comment": "",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:2",
+    "comment": "",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "NoWarn",
+    "switch": "nowarn:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "CommaAppendable"
+    ]
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineConstants",
+    "switch": "define:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable",
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AssemblyOriginatorKeyFile",
+    "switch": "keyfile",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "KeyContainerName",
+    "switch": "keycontainer",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoLogo",
+    "switch": "nologo",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoConfig",
+    "switch": "noconfig",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "BaseAddress",
+    "switch": "baseaddress:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CodePage",
+    "switch": "codepage",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "Utf8Output",
+    "switch": "utf8output",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "MainEntryPoint",
+    "switch": "main:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "GenerateFullPaths",
+    "switch": "fullpaths",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "FileAlignment",
+    "switch": "filealign",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "PdbFile",
+    "switch": "pdb:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "SubsystemVersion",
+    "switch": "subsystemversion",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AdditionalLibPaths",
+    "switch": "lib:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:none",
+    "comment": "Do Not Send Report",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "prompt",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:queue",
+    "comment": "Queue For Next Login",
+    "value": "queue",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:send",
+    "comment": "Send Automatically",
+    "value": "send",
+    "flags": []
+  }
+]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v12_LIB.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v12_LIB.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v12_LIB.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v12_LIB.json
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v12_Link.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v12_Link.json
new file mode 100644
index 0000000..0db5d9e
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v12_Link.json
@@ -0,0 +1,1263 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD:NO",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "SpaceAppendable"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ManifestEmbed",
+    "switch": "manifest:embed",
+    "comment": "Embed Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Generate Debug Info",
+    "value": "true",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AppContainer",
+    "switch": "APPCONTAINER",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN:NO",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DetectOneDefinitionRule",
+    "switch": "ODR",
+    "comment": "Detect One Definition Rule violations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ManifestInput",
+    "switch": "manifestinput:",
+    "comment": "Manifest Input",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataFile",
+    "switch": "WINMDFILE:",
+    "comment": "Windows Metadata File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataLinkKeyFile",
+    "switch": "WINMDKEYFILE:",
+    "comment": "Windows Metadata Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataKeyContainer",
+    "switch": "WINMDKEYCONTAINER:",
+    "comment": "Windows Metadata Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v12_MASM.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v12_MASM.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v12_MASM.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v12_MASM.json
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v12_RC.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v12_RC.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v12_RC.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v12_RC.json
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v140_CL.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v140_CL.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v140_CL.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v140_CL.json
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v140_CSharp.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v140_CSharp.json
new file mode 100644
index 0000000..9f21d9a
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v140_CSharp.json
@@ -0,0 +1,535 @@
+[
+  {
+    "name":  "ProjectName",
+    "switch": "out:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:exe",
+    "comment": "",
+    "value": "Exe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:winexe",
+    "comment": "",
+    "value": "Winexe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:library",
+    "comment": "",
+    "value": "Library",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:module",
+    "comment": "",
+    "value": "Module",
+    "flags": []
+  },
+  {
+    "name":  "DocumentationFile",
+    "switch": "doc",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x86",
+    "comment": "",
+    "value": "x86",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:Itanium",
+    "comment": "",
+    "value": "Itanium",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x64",
+    "comment": "",
+    "value": "x64",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:arm",
+    "comment": "",
+    "value": "arm",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu32bitpreferred",
+    "comment": "",
+    "value": "anycpu32bitpreferred",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu",
+    "comment": "",
+    "value": "anycpu",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "mit alias",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "dateiliste",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AddModules",
+    "switch": "addmodule:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name":  "Win32Resource",
+    "switch": "win32res:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationIcon",
+    "switch": "win32icon:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationManifest",
+    "switch": "win32manifest:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "NoWin32Manifest",
+    "switch": "nowin32manifest",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineDebug",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": [
+      "Continue"
+    ]
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:none",
+    "comment": "",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:full",
+    "comment": "",
+    "value": "full",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:pdbonly",
+    "comment": "",
+    "value": "pdbonly",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:0",
+    "comment": "",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:1",
+    "comment": "",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:2",
+    "comment": "",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "NoWarn",
+    "switch": "nowarn:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "CommaAppendable"
+    ]
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineConstants",
+    "switch": "define:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable",
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AssemblyOriginatorKeyFile",
+    "switch": "keyfile",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "KeyContainerName",
+    "switch": "keycontainer",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoLogo",
+    "switch": "nologo",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoConfig",
+    "switch": "noconfig",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "BaseAddress",
+    "switch": "baseaddress:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CodePage",
+    "switch": "codepage",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "Utf8Output",
+    "switch": "utf8output",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "MainEntryPoint",
+    "switch": "main:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "GenerateFullPaths",
+    "switch": "fullpaths",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "FileAlignment",
+    "switch": "filealign",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "PdbFile",
+    "switch": "pdb:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "SubsystemVersion",
+    "switch": "subsystemversion",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AdditionalLibPaths",
+    "switch": "lib:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:none",
+    "comment": "Do Not Send Report",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "prompt",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:queue",
+    "comment": "Queue For Next Login",
+    "value": "queue",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:send",
+    "comment": "Send Automatically",
+    "value": "send",
+    "flags": []
+  }
+]
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v140_Link.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v140_Link.json
new file mode 100644
index 0000000..7e293b1
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v140_Link.json
@@ -0,0 +1,1307 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Optimize for debugging",
+    "value": "true",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:FASTLINK",
+    "comment": "Optimize for faster linking",
+    "value": "DebugFastLink",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:FULL",
+    "comment": "Optimize for debugging",
+    "value": "true",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:NONE",
+    "comment": "Produces no debugging information",
+    "value": "false",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:incremental",
+    "comment": "Use Fast Link Time Code Generation",
+    "value": "UseFastLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD:NO",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "SpaceAppendable"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ManifestEmbed",
+    "switch": "manifest:embed",
+    "comment": "Embed Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AppContainer",
+    "switch": "APPCONTAINER",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN:NO",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DetectOneDefinitionRule",
+    "switch": "ODR",
+    "comment": "Detect One Definition Rule violations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "Natvis",
+    "switch": "NATVIS:",
+    "comment": "Natvis files",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ManifestInput",
+    "switch": "manifestinput:",
+    "comment": "Manifest Input",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataFile",
+    "switch": "WINMDFILE:",
+    "comment": "Windows Metadata File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataLinkKeyFile",
+    "switch": "WINMDKEYFILE:",
+    "comment": "Windows Metadata Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataKeyContainer",
+    "switch": "WINMDKEYCONTAINER:",
+    "comment": "Windows Metadata Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v141_CL.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v141_CL.json
new file mode 100644
index 0000000..5b18e32
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v141_CL.json
@@ -0,0 +1,1289 @@
+[
+  {
+    "name": "DebugInformationFormat",
+    "switch": "",
+    "comment": "None",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Z7",
+    "comment": "C7 compatible",
+    "value": "OldStyle",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Zi",
+    "comment": "Program Database",
+    "value": "ProgramDatabase",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "ZI",
+    "comment": "Program Database for Edit And Continue",
+    "value": "EditAndContinue",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "",
+    "comment": "No Common Language RunTime Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr",
+    "comment": "Common Language RunTime Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:pure",
+    "comment": "Pure MSIL Common Language RunTime Support",
+    "value": "Pure",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:safe",
+    "comment": "Safe MSIL Common Language RunTime Support",
+    "value": "Safe",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Turn Off All Warnings",
+    "value": "TurnOffAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Level1",
+    "value": "Level1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Level2",
+    "value": "Level2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Level3",
+    "value": "Level3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W4",
+    "comment": "Level4",
+    "value": "Level4",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "Wall",
+    "comment": "EnableAllWarnings",
+    "value": "EnableAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "DiagnosticsFormat",
+    "switch": "diagnostics:caret",
+    "comment": "Caret",
+    "value": "Caret",
+    "flags": []
+  },
+  {
+    "name": "DiagnosticsFormat",
+    "switch": "diagnostics:column",
+    "comment": "Column Info",
+    "value": "Column",
+    "flags": []
+  },
+  {
+    "name": "DiagnosticsFormat",
+    "switch": "diagnostics:classic",
+    "comment": "Classic",
+    "value": "Classic",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "",
+    "comment": "Custom",
+    "value": "Custom",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Od",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O1",
+    "comment": "Maximum Optimization (Favor Size)",
+    "value": "MinSpace",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O2",
+    "comment": "Maximum Optimization (Favor Speed)",
+    "value": "MaxSpeed",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Ox",
+    "comment": "Optimizations (Favor Speed)",
+    "value": "Full",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob0",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob1",
+    "comment": "Only __inline",
+    "value": "OnlyExplicitInline",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob2",
+    "comment": "Any Suitable",
+    "value": "AnySuitable",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Os",
+    "comment": "Favor small code",
+    "value": "Size",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Ot",
+    "comment": "Favor fast code",
+    "value": "Speed",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "",
+    "comment": "Neither",
+    "value": "Neither",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHa",
+    "comment": "Yes with SEH Exceptions",
+    "value": "Async",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHsc",
+    "comment": "Yes",
+    "value": "Sync",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHs",
+    "comment": "Yes with Extern C functions",
+    "value": "SyncCThrow",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCs",
+    "comment": "Stack Frames",
+    "value": "StackFrameRuntimeCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCu",
+    "comment": "Uninitialized variables",
+    "value": "UninitializedLocalUsageCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTC1",
+    "comment": "Both (/RTC1, equiv. to /RTCsu)",
+    "value": "EnableFastChecks",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MT",
+    "comment": "Multi-threaded",
+    "value": "MultiThreaded",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MTd",
+    "comment": "Multi-threaded Debug",
+    "value": "MultiThreadedDebug",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MD",
+    "comment": "Multi-threaded DLL",
+    "value": "MultiThreadedDLL",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MDd",
+    "comment": "Multi-threaded Debug DLL",
+    "value": "MultiThreadedDebugDLL",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp1",
+    "comment": "1 Byte",
+    "value": "1Byte",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp2",
+    "comment": "2 Bytes",
+    "value": "2Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp4",
+    "comment": "4 Byte",
+    "value": "4Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp8",
+    "comment": "8 Bytes",
+    "value": "8Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp16",
+    "comment": "16 Bytes",
+    "value": "16Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS-",
+    "comment": "Disable Security Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS",
+    "comment": "Enable Security Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ControlFlowGuard",
+    "switch": "guard:cf",
+    "comment": "Yes",
+    "value": "Guard",
+    "flags": []
+  },
+  {
+    "name": "ControlFlowGuard",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE",
+    "comment": "Streaming SIMD Extensions",
+    "value": "StreamingSIMDExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE2",
+    "comment": "Streaming SIMD Extensions 2",
+    "value": "StreamingSIMDExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX",
+    "comment": "Advanced Vector Extensions",
+    "value": "AdvancedVectorExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX2",
+    "comment": "Advanced Vector Extensions 2",
+    "value": "AdvancedVectorExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:IA32",
+    "comment": "No Enhanced Instructions",
+    "value": "NoExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:precise",
+    "comment": "Precise",
+    "value": "Precise",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:strict",
+    "comment": "Strict",
+    "value": "Strict",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:fast",
+    "comment": "Fast",
+    "value": "Fast",
+    "flags": []
+  },
+  {
+    "name": "SpectreMitigation",
+    "switch": "Qspectre-load-cf",
+    "comment": "All Control Flow Loads",
+    "value": "SpectreLoadCF",
+    "flags": []
+  },
+  {
+    "name": "SpectreMitigation",
+    "switch": "Qspectre-load",
+    "comment": "All Loads",
+    "value": "SpectreLoad",
+    "flags": []
+  },
+  {
+    "name": "SpectreMitigation",
+    "switch": "Qspectre-",
+    "comment": "Disabled",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SpectreMitigation",
+    "switch": "Qspectre",
+    "comment": "Enabled",
+    "value": "Spectre",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++14",
+    "comment": "ISO C++14 Standard",
+    "value": "stdcpp14",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++17",
+    "comment": "ISO C++17 Standard",
+    "value": "stdcpp17",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++latest",
+    "comment": "ISO C++ Latest Draft Standard",
+    "value": "stdcpplatest",
+    "flags": []
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yc",
+    "comment": "Create",
+    "value": "Create",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yu",
+    "comment": "Use",
+    "value": "Use",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Y-",
+    "comment": "Not Using Precompiled Headers",
+    "value": "NotUsing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "",
+    "comment": "No Listing",
+    "value": "NoListing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FA",
+    "comment": "Assembly-Only Listing",
+    "value": "AssemblyCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAc",
+    "comment": "Assembly With Machine Code",
+    "value": "AssemblyAndMachineCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAs",
+    "comment": "Assembly With Source Code",
+    "value": "AssemblyAndSourceCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAcs",
+    "comment": "Assembly, Machine Code and Source",
+    "value": "All",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "__cdecl",
+    "value": "Cdecl",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gr",
+    "comment": "__fastcall",
+    "value": "FastCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "__stdcall",
+    "value": "StdCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gv",
+    "comment": "__vectorcall",
+    "value": "VectorCall",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TC",
+    "comment": "Compile as C Code",
+    "value": "CompileAsC",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TP",
+    "comment": "Compile as C++ Code",
+    "value": "CompileAsCpp",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do Not Send Report",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "Prompt",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Queue For Next Login",
+    "value": "Queue",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Send Automatically",
+    "value": "Send",
+    "flags": []
+  },
+  {
+    "name": "SupportJustMyCode",
+    "switch": "JMC-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SupportJustMyCode",
+    "switch": "JMC",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CompileAsWinRT",
+    "switch": "ZW",
+    "comment": "Consume Windows Runtime Extension",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WinRTNoStdLib",
+    "switch": "ZW:nostdlib",
+    "comment": "No Standard WinRT Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX-",
+    "comment": "Treat Warnings As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl-",
+    "comment": "SDL checks",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl",
+    "comment": "SDL checks",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MultiProcessorCompilation",
+    "switch": "MP",
+    "comment": "Multi-processor Compilation",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "IntrinsicFunctions",
+    "switch": "Oi",
+    "comment": "Enable Intrinsic Functions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy-",
+    "comment": "Omit Frame Pointers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy",
+    "comment": "Omit Frame Pointers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFiberSafeOptimizations",
+    "switch": "GT",
+    "comment": "Enable Fiber-Safe Optimizations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WholeProgramOptimization",
+    "switch": "GL",
+    "comment": "Whole Program Optimization",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UndefineAllPreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine All Preprocessor Definitions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessToFile",
+    "switch": "P",
+    "comment": "Preprocess to a File",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessSuppressLineNumbers",
+    "switch": "EP",
+    "comment": "Preprocess Suppress Line Numbers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessKeepComments",
+    "switch": "C",
+    "comment": "Keep Comments",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF-",
+    "comment": "Enable String Pooling",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF",
+    "comment": "Enable String Pooling",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm-",
+    "comment": "Enable Minimal Rebuild",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm",
+    "comment": "Enable Minimal Rebuild",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SmallerTypeCheck",
+    "switch": "RTCc",
+    "comment": "Smaller Type Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy-",
+    "comment": "Enable Function-Level Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy",
+    "comment": "Enable Function-Level Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar-",
+    "comment": "Enable Parallel Code Generation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar",
+    "comment": "Enable Parallel Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except-",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CreateHotpatchableImage",
+    "switch": "hotpatch",
+    "comment": "Create Hotpatchable Image",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableLanguageExtensions",
+    "switch": "Za",
+    "comment": "Disable Language Extensions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ConformanceMode",
+    "switch": "permissive-",
+    "comment": "Conformance mode",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ConformanceMode",
+    "switch": "permissive",
+    "comment": "Conformance mode disabled",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t-",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope-",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RemoveUnreferencedCodeData",
+    "switch": "Zc:inline-",
+    "comment": "Remove unreferenced code and data",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RemoveUnreferencedCodeData",
+    "switch": "Zc:inline",
+    "comment": "Remove unreferenced code and data",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnforceTypeConversionRules",
+    "switch": "Zc:rvalueCast-",
+    "comment": "Enforce type conversion rules",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnforceTypeConversionRules",
+    "switch": "Zc:rvalueCast",
+    "comment": "Enforce type conversion rules",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR-",
+    "comment": "Enable Run-Time Type Information",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR",
+    "comment": "Enable Run-Time Type Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp-",
+    "comment": "Open MP Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp",
+    "comment": "Open MP Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableModules",
+    "switch": "experimental:module",
+    "comment": "Enable C++ Modules (experimental)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ExpandAttributedSource",
+    "switch": "Fx",
+    "comment": "Expand Attributed Source",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseUnicodeForAssemblerListing",
+    "switch": "FAu",
+    "comment": "Use Unicode For Assembler Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateXMLDocumentationFiles",
+    "switch": "doc",
+    "comment": "Generate XML Documentation Files",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "BrowseInformation",
+    "switch": "FR",
+    "comment": "Enable Browse Information",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "ShowIncludes",
+    "switch": "showIncludes",
+    "comment": "Show Includes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze-",
+    "comment": "Enable Code Analysis",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze",
+    "comment": "Enable Code Analysis",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseFullPaths",
+    "switch": "FC",
+    "comment": "Use Full Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitDefaultLibName",
+    "switch": "Zl",
+    "comment": "Omit Default Library Name",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalUsingDirectories",
+    "switch": "AI",
+    "comment": "Additional #using Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "U",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DisableSpecificWarnings",
+    "switch": "wd",
+    "comment": "Disable Specific Warnings",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedIncludeFiles",
+    "switch": "FI",
+    "comment": "Forced Include File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedUsingFiles",
+    "switch": "FU",
+    "comment": "Forced #using File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastLog",
+    "switch": "analyze:log",
+    "comment": "Code Analysis Log",
+    "value": "",
+    "flags": [
+      "UserFollowing"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalPlugins",
+    "switch": "analyze:plugin",
+    "comment": "Additional Code Analysis Native plugins",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "TreatSpecificWarningsAsErrors",
+    "switch": "we",
+    "comment": "Treat Specific Warnings As Errors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "WarningVersion",
+    "switch": "Wv:",
+    "comment": "Warning Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PreprocessOutputPath",
+    "switch": "Fi",
+    "comment": "Preprocess Output Path",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yu",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yc",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderOutputFile",
+    "switch": "Fp",
+    "comment": "Precompiled Header Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssemblerListingLocation",
+    "switch": "Fa",
+    "comment": "ASM List Location",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDataBaseFileName",
+    "switch": "Fd",
+    "comment": "Program Database File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "XMLDocumentationFileName",
+    "switch": "doc",
+    "comment": "XML Documentation File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "BrowseInformationFile",
+    "switch": "FR",
+    "comment": "Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "ProcessorNumber",
+    "switch": "MP",
+    "comment": "Number of processors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=c++98",
+    "comment": "C++03",
+    "value": "c++98",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=c++11",
+    "comment": "C++11",
+    "value": "c++11",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=c++1y",
+    "comment": "C++14",
+    "value": "c++1y",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=c++14",
+    "comment": "C++14",
+    "value": "c++1y",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=gnu++98",
+    "comment": "C++03 (GNU Dialect)",
+    "value": "gnu++98",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=gnu++11",
+    "comment": "C++11 (GNU Dialect)",
+    "value": "gnu++11",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=gnu++1y",
+    "comment": "C++14 (GNU Dialect)",
+    "value": "gnu++1y",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=gnu++14",
+    "comment": "C++14 (GNU Dialect)",
+    "value": "gnu++1y",
+    "flags": []
+  }
+]
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v141_CSharp.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v141_CSharp.json
new file mode 100644
index 0000000..9f21d9a
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v141_CSharp.json
@@ -0,0 +1,535 @@
+[
+  {
+    "name":  "ProjectName",
+    "switch": "out:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:exe",
+    "comment": "",
+    "value": "Exe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:winexe",
+    "comment": "",
+    "value": "Winexe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:library",
+    "comment": "",
+    "value": "Library",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:module",
+    "comment": "",
+    "value": "Module",
+    "flags": []
+  },
+  {
+    "name":  "DocumentationFile",
+    "switch": "doc",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x86",
+    "comment": "",
+    "value": "x86",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:Itanium",
+    "comment": "",
+    "value": "Itanium",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x64",
+    "comment": "",
+    "value": "x64",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:arm",
+    "comment": "",
+    "value": "arm",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu32bitpreferred",
+    "comment": "",
+    "value": "anycpu32bitpreferred",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu",
+    "comment": "",
+    "value": "anycpu",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "mit alias",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "dateiliste",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AddModules",
+    "switch": "addmodule:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name":  "Win32Resource",
+    "switch": "win32res:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationIcon",
+    "switch": "win32icon:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationManifest",
+    "switch": "win32manifest:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "NoWin32Manifest",
+    "switch": "nowin32manifest",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineDebug",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": [
+      "Continue"
+    ]
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:none",
+    "comment": "",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:full",
+    "comment": "",
+    "value": "full",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:pdbonly",
+    "comment": "",
+    "value": "pdbonly",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:0",
+    "comment": "",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:1",
+    "comment": "",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:2",
+    "comment": "",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "NoWarn",
+    "switch": "nowarn:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "CommaAppendable"
+    ]
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineConstants",
+    "switch": "define:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable",
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AssemblyOriginatorKeyFile",
+    "switch": "keyfile",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "KeyContainerName",
+    "switch": "keycontainer",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoLogo",
+    "switch": "nologo",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoConfig",
+    "switch": "noconfig",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "BaseAddress",
+    "switch": "baseaddress:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CodePage",
+    "switch": "codepage",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "Utf8Output",
+    "switch": "utf8output",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "MainEntryPoint",
+    "switch": "main:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "GenerateFullPaths",
+    "switch": "fullpaths",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "FileAlignment",
+    "switch": "filealign",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "PdbFile",
+    "switch": "pdb:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "SubsystemVersion",
+    "switch": "subsystemversion",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AdditionalLibPaths",
+    "switch": "lib:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:none",
+    "comment": "Do Not Send Report",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "prompt",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:queue",
+    "comment": "Queue For Next Login",
+    "value": "queue",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:send",
+    "comment": "Send Automatically",
+    "value": "send",
+    "flags": []
+  }
+]
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v141_Link.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v141_Link.json
new file mode 100644
index 0000000..e311240
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v141_Link.json
@@ -0,0 +1,1314 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Generate Debug Information",
+    "value": "true",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:FASTLINK",
+    "comment": "Generate Debug Information optimized for faster links",
+    "value": "DebugFastLink",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:FULL",
+    "comment": "Generate Debug Information optimized for sharing and publishing",
+    "value": "DebugFull",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:NONE",
+    "comment": "Produces no debugging information",
+    "value": "false",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:incremental",
+    "comment": "Use Fast Link Time Code Generation",
+    "value": "UseFastLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD:NO",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM64",
+    "comment": "MachineARM64",
+    "value": "MachineARM64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "SpaceAppendable"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ManifestEmbed",
+    "switch": "manifest:embed",
+    "comment": "Embed Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AppContainer",
+    "switch": "APPCONTAINER",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN:NO",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DetectOneDefinitionRule",
+    "switch": "ODR",
+    "comment": "Detect One Definition Rule violations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "Natvis",
+    "switch": "NATVIS:",
+    "comment": "Natvis files",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ManifestInput",
+    "switch": "manifestinput:",
+    "comment": "Manifest Input",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataFile",
+    "switch": "WINMDFILE:",
+    "comment": "Windows Metadata File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataLinkKeyFile",
+    "switch": "WINMDKEYFILE:",
+    "comment": "Windows Metadata Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataKeyContainer",
+    "switch": "WINMDKEYCONTAINER:",
+    "comment": "Windows Metadata Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v142_CL.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v142_CL.json
new file mode 100644
index 0000000..4c65ad9
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v142_CL.json
@@ -0,0 +1,1462 @@
+[
+  {
+    "name": "DebugInformationFormat",
+    "switch": "",
+    "comment": "None",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Z7",
+    "comment": "C7 compatible",
+    "value": "OldStyle",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Zi",
+    "comment": "Program Database",
+    "value": "ProgramDatabase",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "ZI",
+    "comment": "Program Database for Edit And Continue",
+    "value": "EditAndContinue",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "",
+    "comment": "No Common Language RunTime Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr",
+    "comment": "Common Language RunTime Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:pure",
+    "comment": "Pure MSIL Common Language RunTime Support",
+    "value": "Pure",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:safe",
+    "comment": "Safe MSIL Common Language RunTime Support",
+    "value": "Safe",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Turn Off All Warnings",
+    "value": "TurnOffAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Level1",
+    "value": "Level1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Level2",
+    "value": "Level2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Level3",
+    "value": "Level3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W4",
+    "comment": "Level4",
+    "value": "Level4",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "Wall",
+    "comment": "EnableAllWarnings",
+    "value": "EnableAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "DiagnosticsFormat",
+    "switch": "diagnostics:caret",
+    "comment": "Caret",
+    "value": "Caret",
+    "flags": []
+  },
+  {
+    "name": "DiagnosticsFormat",
+    "switch": "diagnostics:column",
+    "comment": "Column Info",
+    "value": "Column",
+    "flags": []
+  },
+  {
+    "name": "DiagnosticsFormat",
+    "switch": "diagnostics:classic",
+    "comment": "Classic",
+    "value": "Classic",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "",
+    "comment": "Custom",
+    "value": "Custom",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Od",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O1",
+    "comment": "Maximum Optimization (Favor Size)",
+    "value": "MinSpace",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O2",
+    "comment": "Maximum Optimization (Favor Speed)",
+    "value": "MaxSpeed",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Ox",
+    "comment": "Optimizations (Favor Speed)",
+    "value": "Full",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob0",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob1",
+    "comment": "Only __inline",
+    "value": "OnlyExplicitInline",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob2",
+    "comment": "Any Suitable",
+    "value": "AnySuitable",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Os",
+    "comment": "Favor small code",
+    "value": "Size",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Ot",
+    "comment": "Favor fast code",
+    "value": "Speed",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "",
+    "comment": "Neither",
+    "value": "Neither",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHa",
+    "comment": "Yes with SEH Exceptions",
+    "value": "Async",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHsc",
+    "comment": "Yes",
+    "value": "Sync",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHs",
+    "comment": "Yes with Extern C functions",
+    "value": "SyncCThrow",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCs",
+    "comment": "Stack Frames",
+    "value": "StackFrameRuntimeCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCu",
+    "comment": "Uninitialized variables",
+    "value": "UninitializedLocalUsageCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTC1",
+    "comment": "Both (/RTC1, equiv. to /RTCsu)",
+    "value": "EnableFastChecks",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MT",
+    "comment": "Multi-threaded",
+    "value": "MultiThreaded",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MTd",
+    "comment": "Multi-threaded Debug",
+    "value": "MultiThreadedDebug",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MD",
+    "comment": "Multi-threaded DLL",
+    "value": "MultiThreadedDLL",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MDd",
+    "comment": "Multi-threaded Debug DLL",
+    "value": "MultiThreadedDebugDLL",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp1",
+    "comment": "1 Byte",
+    "value": "1Byte",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp2",
+    "comment": "2 Bytes",
+    "value": "2Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp4",
+    "comment": "4 Byte",
+    "value": "4Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp8",
+    "comment": "8 Bytes",
+    "value": "8Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp16",
+    "comment": "16 Bytes",
+    "value": "16Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS-",
+    "comment": "Disable Security Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS",
+    "comment": "Enable Security Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ControlFlowGuard",
+    "switch": "guard:cf",
+    "comment": "Yes",
+    "value": "Guard",
+    "flags": []
+  },
+  {
+    "name": "ControlFlowGuard",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE",
+    "comment": "Streaming SIMD Extensions",
+    "value": "StreamingSIMDExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE2",
+    "comment": "Streaming SIMD Extensions 2",
+    "value": "StreamingSIMDExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX",
+    "comment": "Advanced Vector Extensions",
+    "value": "AdvancedVectorExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX2",
+    "comment": "Advanced Vector Extensions 2",
+    "value": "AdvancedVectorExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX512",
+    "comment": "Advanced Vector Extensions 512",
+    "value": "AdvancedVectorExtensions512",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:IA32",
+    "comment": "No Enhanced Instructions",
+    "value": "NoExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:precise",
+    "comment": "Precise",
+    "value": "Precise",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:strict",
+    "comment": "Strict",
+    "value": "Strict",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:fast",
+    "comment": "Fast",
+    "value": "Fast",
+    "flags": []
+  },
+  {
+    "name": "SpectreMitigation",
+    "switch": "Qspectre-load-cf",
+    "comment": "All Control Flow Loads",
+    "value": "SpectreLoadCF",
+    "flags": []
+  },
+  {
+    "name": "SpectreMitigation",
+    "switch": "Qspectre-load",
+    "comment": "All Loads",
+    "value": "SpectreLoad",
+    "flags": []
+  },
+  {
+    "name": "SpectreMitigation",
+    "switch": "Qspectre-",
+    "comment": "Disabled",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SpectreMitigation",
+    "switch": "Qspectre",
+    "comment": "Enabled",
+    "value": "Spectre",
+    "flags": []
+  },
+  {
+    "name": "ConformanceMode",
+    "switch": "permissive-",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ConformanceMode",
+    "switch": "permissive",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++14",
+    "comment": "ISO C++14 Standard",
+    "value": "stdcpp14",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++17",
+    "comment": "ISO C++17 Standard",
+    "value": "stdcpp17",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++20",
+    "comment": "ISO C++20 Standard",
+    "value": "stdcpp20",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++latest",
+    "comment": "Preview - Features from the Latest C++ Working Draft",
+    "value": "stdcpplatest",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard_C",
+    "switch": "std:c11",
+    "comment": "ISO C11 Standard",
+    "value": "stdc11",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard_C",
+    "switch": "std:c17",
+    "comment": "ISO C17 (2018) Standard",
+    "value": "stdc17",
+    "flags": []
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yc",
+    "comment": "Create",
+    "value": "Create",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yu",
+    "comment": "Use",
+    "value": "Use",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Y-",
+    "comment": "Not Using Precompiled Headers",
+    "value": "NotUsing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "",
+    "comment": "No Listing",
+    "value": "NoListing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FA",
+    "comment": "Assembly-Only Listing",
+    "value": "AssemblyCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAc",
+    "comment": "Assembly With Machine Code",
+    "value": "AssemblyAndMachineCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAs",
+    "comment": "Assembly With Source Code",
+    "value": "AssemblyAndSourceCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAcs",
+    "comment": "Assembly, Machine Code and Source",
+    "value": "All",
+    "flags": []
+  },
+  {
+    "name": "ExternalWarningLevel",
+    "switch": "external:W0",
+    "comment": "Turn Off All Warnings",
+    "value": "TurnOffAllWarnings",
+    "vsmin": "16.10.31321.278",
+    "flags": []
+  },
+  {
+    "name": "ExternalWarningLevel",
+    "switch": "external:W1",
+    "comment": "Level1",
+    "value": "Level1",
+    "vsmin": "16.10.31321.278",
+    "flags": []
+  },
+  {
+    "name": "ExternalWarningLevel",
+    "switch": "external:W2",
+    "comment": "Level2",
+    "value": "Level2",
+    "vsmin": "16.10.31321.278",
+    "flags": []
+  },
+  {
+    "name": "ExternalWarningLevel",
+    "switch": "external:W3",
+    "comment": "Level3",
+    "value": "Level3",
+    "vsmin": "16.10.31321.278",
+    "flags": []
+  },
+  {
+    "name": "ExternalWarningLevel",
+    "switch": "external:W4",
+    "comment": "Level4",
+    "value": "Level4",
+    "vsmin": "16.10.31321.278",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "__cdecl",
+    "value": "Cdecl",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gr",
+    "comment": "__fastcall",
+    "value": "FastCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "__stdcall",
+    "value": "StdCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gv",
+    "comment": "__vectorcall",
+    "value": "VectorCall",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TC",
+    "comment": "Compile as C Code",
+    "value": "CompileAsC",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TP",
+    "comment": "Compile as C++ Code",
+    "value": "CompileAsCpp",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do Not Send Report",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "Prompt",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Queue For Next Login",
+    "value": "Queue",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Send Automatically",
+    "value": "Send",
+    "flags": []
+  },
+  {
+    "name": "SupportJustMyCode",
+    "switch": "JMC-",
+    "comment": "Support Just My Code Debugging",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SupportJustMyCode",
+    "switch": "JMC",
+    "comment": "Support Just My Code Debugging",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CompileAsWinRT",
+    "switch": "ZW",
+    "comment": "Consume Windows Runtime Extension",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WinRTNoStdLib",
+    "switch": "ZW:nostdlib",
+    "comment": "No Standard WinRT Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX-",
+    "comment": "Treat Warnings As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl-",
+    "comment": "SDL checks",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl",
+    "comment": "SDL checks",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MultiProcessorCompilation",
+    "switch": "MP",
+    "comment": "Multi-processor Compilation",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "IntrinsicFunctions",
+    "switch": "Oi",
+    "comment": "Enable Intrinsic Functions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy-",
+    "comment": "Omit Frame Pointers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy",
+    "comment": "Omit Frame Pointers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFiberSafeOptimizations",
+    "switch": "GT",
+    "comment": "Enable Fiber-Safe Optimizations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WholeProgramOptimization",
+    "switch": "GL",
+    "comment": "Whole Program Optimization",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UndefineAllPreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine All Preprocessor Definitions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessToFile",
+    "switch": "P",
+    "comment": "Preprocess to a File",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessSuppressLineNumbers",
+    "switch": "EP",
+    "comment": "Preprocess Suppress Line Numbers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessKeepComments",
+    "switch": "C",
+    "comment": "Keep Comments",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseStandardPreprocessor",
+    "switch": "Zc:preprocessor-",
+    "comment": "Use Standard Conforming Preprocessor",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UseStandardPreprocessor",
+    "switch": "Zc:preprocessor",
+    "comment": "Use Standard Conforming Preprocessor",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF-",
+    "comment": "Enable String Pooling",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF",
+    "comment": "Enable String Pooling",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm-",
+    "comment": "Enable Minimal Rebuild",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm",
+    "comment": "Enable Minimal Rebuild",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SmallerTypeCheck",
+    "switch": "RTCc",
+    "comment": "Smaller Type Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy-",
+    "comment": "Enable Function-Level Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy",
+    "comment": "Enable Function-Level Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar-",
+    "comment": "Enable Parallel Code Generation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar",
+    "comment": "Enable Parallel Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except-",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CreateHotpatchableImage",
+    "switch": "hotpatch",
+    "comment": "Create Hotpatchable Image",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IntelJCCErratum",
+    "switch": "QIntel-jcc-erratum",
+    "comment": "Enable Intel JCC Erratum Mitigation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GuardEHContMetadata",
+    "switch": "guard:ehcont-",
+    "comment": "Enable EH Continuation Metadata",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GuardEHContMetadata",
+    "switch": "guard:ehcont",
+    "comment": "Enable EH Continuation Metadata",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GuardSignedReturns",
+    "switch": "guard:signret-",
+    "comment": "Enable Signed Returns",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GuardSignedReturns",
+    "switch": "guard:signret",
+    "comment": "Enable Signed Returns",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableLanguageExtensions",
+    "switch": "Za",
+    "comment": "Disable Language Extensions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t-",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope-",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RemoveUnreferencedCodeData",
+    "switch": "Zc:inline-",
+    "comment": "Remove unreferenced code and data",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RemoveUnreferencedCodeData",
+    "switch": "Zc:inline",
+    "comment": "Remove unreferenced code and data",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnforceTypeConversionRules",
+    "switch": "Zc:rvalueCast-",
+    "comment": "Enforce type conversion rules",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnforceTypeConversionRules",
+    "switch": "Zc:rvalueCast",
+    "comment": "Enforce type conversion rules",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR-",
+    "comment": "Enable Run-Time Type Information",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR",
+    "comment": "Enable Run-Time Type Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp-",
+    "comment": "Open MP Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp",
+    "comment": "Open MP Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableModules",
+    "switch": "experimental:module",
+    "comment": "Enable Experimental C++ Standard Library Modules",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ExpandAttributedSource",
+    "switch": "Fx",
+    "comment": "Expand Attributed Source",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseUnicodeForAssemblerListing",
+    "switch": "FAu",
+    "comment": "Use Unicode For Assembler Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateModuleDependencies",
+    "switch": "sourceDependencies:directives",
+    "comment": "Generate Module Dependenices File",
+    "value": "true",
+    "flags": [
+      "Continue"
+    ]
+  },
+  {
+    "name": "GenerateXMLDocumentationFiles",
+    "switch": "doc",
+    "comment": "Generate XML Documentation Files",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "GenerateSourceDependencies",
+    "switch": "sourceDependencies",
+    "comment": "Generate Source Dependencies File",
+    "value": "true",
+    "flags": [
+      "Continue"
+    ]
+  },
+  {
+    "name": "BrowseInformation",
+    "switch": "FR",
+    "comment": "Enable Browse Information",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "TreatAngleIncludeAsExternal",
+    "switch": "external:anglebrackets",
+    "comment": "Treat Files Included with Angle Brackets as External",
+    "value": "true",
+    "vsmin": "16.10.31321.278",
+    "flags": []
+  },
+  {
+    "name": "ExternalTemplatesDiagnostics",
+    "switch": "external:templates-",
+    "comment": "Template Diagnostics in External Headers",
+    "value": "true",
+    "vsmin": "16.10.31321.278",
+    "flags": []
+  },
+  {
+    "name": "DisableAnalyzeExternal",
+    "switch": "analyze:external-",
+    "comment": "Disable Code Analysis for External Headers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ShowIncludes",
+    "switch": "showIncludes",
+    "comment": "Show Includes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze-",
+    "comment": "Enable Code Analysis",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze",
+    "comment": "Enable Code Analysis",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseFullPaths",
+    "switch": "FC",
+    "comment": "Use Full Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitDefaultLibName",
+    "switch": "Zl",
+    "comment": "Omit Default Library Name",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalUsingDirectories",
+    "switch": "AI",
+    "comment": "Additional #using Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalBMIDirectories",
+    "switch": "ifcSearchDir",
+    "comment": "Additional BMI Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalModuleDependencies",
+    "switch": "reference",
+    "comment": "Additional Module Dependencies",
+    "value": "",
+    "flags": [
+      "UserFollowing",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalHeaderUnitDependencies",
+    "switch": "headerUnit",
+    "comment": "Additional Header Unit Dependencies",
+    "value": "",
+    "flags": [
+      "UserFollowing",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "U",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "StdIfcDirectory",
+    "switch": "stdIfcDir",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ExternalDirectoriesEnv",
+    "switch": "external:env:",
+    "comment": "External Directories Environment Variables",
+    "value": "",
+    "vsmin": "16.10.31321.278",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DisableSpecificWarnings",
+    "switch": "wd",
+    "comment": "Disable Specific Warnings",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedIncludeFiles",
+    "switch": "FI",
+    "comment": "Forced Include File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedUsingFiles",
+    "switch": "FU",
+    "comment": "Forced #using File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastLog",
+    "switch": "analyze:log",
+    "comment": "Code Analysis Log",
+    "value": "",
+    "flags": [
+      "UserFollowing"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalPlugins",
+    "switch": "analyze:plugin",
+    "comment": "Additional Code Analysis Native plugins",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "TreatSpecificWarningsAsErrors",
+    "switch": "we",
+    "comment": "Treat Specific Warnings As Errors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "WarningVersion",
+    "switch": "Wv:",
+    "comment": "Warning Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PreprocessOutputPath",
+    "switch": "Fi",
+    "comment": "Preprocess Output Path",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yu",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yc",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderOutputFile",
+    "switch": "Fp",
+    "comment": "Precompiled Header Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssemblerListingLocation",
+    "switch": "Fa",
+    "comment": "ASM List Location",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleOutputFile",
+    "switch": "ifcOutput",
+    "comment": "Module Output File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDependenciesFile",
+    "switch": "sourceDependencies:directives",
+    "comment": "Module Dependencies File Name",
+    "value": "",
+    "flags": [
+      "UserFollowing"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDataBaseFileName",
+    "switch": "Fd",
+    "comment": "Program Database File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "XMLDocumentationFileName",
+    "switch": "doc",
+    "comment": "XML Documentation File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "SourceDependenciesFile",
+    "switch": "sourceDependencies",
+    "comment": "Source Dependencies File Name",
+    "value": "",
+    "flags": [
+      "UserFollowing"
+    ]
+  },
+  {
+    "name": "BrowseInformationFile",
+    "switch": "FR",
+    "comment": "Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "ProcessorNumber",
+    "switch": "MP",
+    "comment": "Number of processors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  }
+]
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v142_CSharp.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v142_CSharp.json
new file mode 100644
index 0000000..ae1bd47
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v142_CSharp.json
@@ -0,0 +1,553 @@
+[
+  {
+    "name":  "ProjectName",
+    "switch": "out:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:exe",
+    "comment": "",
+    "value": "Exe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:winexe",
+    "comment": "",
+    "value": "Winexe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:library",
+    "comment": "",
+    "value": "Library",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:module",
+    "comment": "",
+    "value": "Module",
+    "flags": []
+  },
+  {
+    "name":  "DocumentationFile",
+    "switch": "doc",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x86",
+    "comment": "",
+    "value": "x86",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:Itanium",
+    "comment": "",
+    "value": "Itanium",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x64",
+    "comment": "",
+    "value": "x64",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:arm",
+    "comment": "",
+    "value": "arm",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu32bitpreferred",
+    "comment": "",
+    "value": "anycpu32bitpreferred",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu",
+    "comment": "",
+    "value": "anycpu",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "mit alias",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "dateiliste",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AddModules",
+    "switch": "addmodule:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name":  "Win32Resource",
+    "switch": "win32res:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationIcon",
+    "switch": "win32icon:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationManifest",
+    "switch": "win32manifest:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "NoWin32Manifest",
+    "switch": "nowin32manifest",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineDebug",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": [
+      "Continue"
+    ]
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:none",
+    "comment": "",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:full",
+    "comment": "",
+    "value": "full",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:pdbonly",
+    "comment": "",
+    "value": "pdbonly",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:portable",
+    "comment": "",
+    "value": "portable",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "CommaAppendable"
+    ]
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:0",
+    "comment": "",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:1",
+    "comment": "",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:2",
+    "comment": "",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "NoWarn",
+    "switch": "nowarn:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "CommaAppendable"
+    ]
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineConstants",
+    "switch": "define:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable",
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AssemblyOriginatorKeyFile",
+    "switch": "keyfile",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "KeyContainerName",
+    "switch": "keycontainer",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoLogo",
+    "switch": "nologo",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoConfig",
+    "switch": "noconfig",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "BaseAddress",
+    "switch": "baseaddress:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CodePage",
+    "switch": "codepage",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "Utf8Output",
+    "switch": "utf8output",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "MainEntryPoint",
+    "switch": "main:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "GenerateFullPaths",
+    "switch": "fullpaths",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "FileAlignment",
+    "switch": "filealign",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "PdbFile",
+    "switch": "pdb:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "SubsystemVersion",
+    "switch": "subsystemversion",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AdditionalLibPaths",
+    "switch": "lib:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:none",
+    "comment": "Do Not Send Report",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "prompt",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:queue",
+    "comment": "Queue For Next Login",
+    "value": "queue",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:send",
+    "comment": "Send Automatically",
+    "value": "send",
+    "flags": []
+  }
+]
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v142_Link.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v142_Link.json
new file mode 100644
index 0000000..d5fc2e4
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v142_Link.json
@@ -0,0 +1,1321 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Generate Debug Information",
+    "value": "true",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:FASTLINK",
+    "comment": "Generate Debug Information optimized for faster links",
+    "value": "DebugFastLink",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:FULL",
+    "comment": "Generate Debug Information optimized for sharing and publishing",
+    "value": "DebugFull",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:NONE",
+    "comment": "Produces no debugging information",
+    "value": "false",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:incremental",
+    "comment": "Use Fast Link Time Code Generation",
+    "value": "UseFastLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD:NO",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM64",
+    "comment": "MachineARM64",
+    "value": "MachineARM64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM64EC",
+    "comment": "MachineARM64EC",
+    "value": "MachineARM64EC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "SpaceAppendable"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ManifestEmbed",
+    "switch": "manifest:embed",
+    "comment": "Embed Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AppContainer",
+    "switch": "APPCONTAINER",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN:NO",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DetectOneDefinitionRule",
+    "switch": "ODR",
+    "comment": "Detect One Definition Rule violations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "Natvis",
+    "switch": "NATVIS:",
+    "comment": "Natvis files",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ManifestInput",
+    "switch": "manifestinput:",
+    "comment": "Manifest Input",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataFile",
+    "switch": "WINMDFILE:",
+    "comment": "Windows Metadata File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataLinkKeyFile",
+    "switch": "WINMDKEYFILE:",
+    "comment": "Windows Metadata Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataKeyContainer",
+    "switch": "WINMDKEYCONTAINER:",
+    "comment": "Windows Metadata Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v143_CL.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v143_CL.json
new file mode 100644
index 0000000..96f74b1
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v143_CL.json
@@ -0,0 +1,1488 @@
+[
+  {
+    "name": "DebugInformationFormat",
+    "switch": "",
+    "comment": "None",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Z7",
+    "comment": "C7 compatible",
+    "value": "OldStyle",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Zi",
+    "comment": "Program Database",
+    "value": "ProgramDatabase",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "ZI",
+    "comment": "Program Database for Edit And Continue",
+    "value": "EditAndContinue",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "",
+    "comment": "No Common Language RunTime Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr",
+    "comment": "Common Language RunTime Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:pure",
+    "comment": "Pure MSIL Common Language RunTime Support",
+    "value": "Pure",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:safe",
+    "comment": "Safe MSIL Common Language RunTime Support",
+    "value": "Safe",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Turn Off All Warnings",
+    "value": "TurnOffAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Level1",
+    "value": "Level1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Level2",
+    "value": "Level2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Level3",
+    "value": "Level3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W4",
+    "comment": "Level4",
+    "value": "Level4",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "Wall",
+    "comment": "EnableAllWarnings",
+    "value": "EnableAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "DiagnosticsFormat",
+    "switch": "diagnostics:caret",
+    "comment": "Caret",
+    "value": "Caret",
+    "flags": []
+  },
+  {
+    "name": "DiagnosticsFormat",
+    "switch": "diagnostics:column",
+    "comment": "Column Info",
+    "value": "Column",
+    "flags": []
+  },
+  {
+    "name": "DiagnosticsFormat",
+    "switch": "diagnostics:classic",
+    "comment": "Classic",
+    "value": "Classic",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "",
+    "comment": "Custom",
+    "value": "Custom",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Od",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O1",
+    "comment": "Maximum Optimization (Favor Size)",
+    "value": "MinSpace",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O2",
+    "comment": "Maximum Optimization (Favor Speed)",
+    "value": "MaxSpeed",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Ox",
+    "comment": "Optimizations (Favor Speed)",
+    "value": "Full",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob0",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob1",
+    "comment": "Only __inline",
+    "value": "OnlyExplicitInline",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob2",
+    "comment": "Any Suitable",
+    "value": "AnySuitable",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Os",
+    "comment": "Favor small code",
+    "value": "Size",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Ot",
+    "comment": "Favor fast code",
+    "value": "Speed",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "",
+    "comment": "Neither",
+    "value": "Neither",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHa",
+    "comment": "Yes with SEH Exceptions",
+    "value": "Async",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHsc",
+    "comment": "Yes",
+    "value": "Sync",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHs",
+    "comment": "Yes with Extern C functions",
+    "value": "SyncCThrow",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCs",
+    "comment": "Stack Frames",
+    "value": "StackFrameRuntimeCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCu",
+    "comment": "Uninitialized variables",
+    "value": "UninitializedLocalUsageCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTC1",
+    "comment": "Both (/RTC1, equiv. to /RTCsu)",
+    "value": "EnableFastChecks",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MT",
+    "comment": "Multi-threaded",
+    "value": "MultiThreaded",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MTd",
+    "comment": "Multi-threaded Debug",
+    "value": "MultiThreadedDebug",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MD",
+    "comment": "Multi-threaded DLL",
+    "value": "MultiThreadedDLL",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MDd",
+    "comment": "Multi-threaded Debug DLL",
+    "value": "MultiThreadedDebugDLL",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp1",
+    "comment": "1 Byte",
+    "value": "1Byte",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp2",
+    "comment": "2 Bytes",
+    "value": "2Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp4",
+    "comment": "4 Byte",
+    "value": "4Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp8",
+    "comment": "8 Bytes",
+    "value": "8Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp16",
+    "comment": "16 Bytes",
+    "value": "16Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS-",
+    "comment": "Disable Security Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS",
+    "comment": "Enable Security Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ControlFlowGuard",
+    "switch": "guard:cf",
+    "comment": "Yes",
+    "value": "Guard",
+    "flags": []
+  },
+  {
+    "name": "ControlFlowGuard",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE",
+    "comment": "Streaming SIMD Extensions",
+    "value": "StreamingSIMDExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE2",
+    "comment": "Streaming SIMD Extensions 2",
+    "value": "StreamingSIMDExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX",
+    "comment": "Advanced Vector Extensions",
+    "value": "AdvancedVectorExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX2",
+    "comment": "Advanced Vector Extensions 2",
+    "value": "AdvancedVectorExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX512",
+    "comment": "Advanced Vector Extensions 512",
+    "value": "AdvancedVectorExtensions512",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:IA32",
+    "comment": "No Enhanced Instructions",
+    "value": "NoExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:precise",
+    "comment": "Precise",
+    "value": "Precise",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:strict",
+    "comment": "Strict",
+    "value": "Strict",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:fast",
+    "comment": "Fast",
+    "value": "Fast",
+    "flags": []
+  },
+  {
+    "name": "SpectreMitigation",
+    "switch": "Qspectre-load-cf",
+    "comment": "All Control Flow Loads",
+    "value": "SpectreLoadCF",
+    "flags": []
+  },
+  {
+    "name": "SpectreMitigation",
+    "switch": "Qspectre-load",
+    "comment": "All Loads",
+    "value": "SpectreLoad",
+    "flags": []
+  },
+  {
+    "name": "SpectreMitigation",
+    "switch": "Qspectre-",
+    "comment": "Disabled",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SpectreMitigation",
+    "switch": "Qspectre",
+    "comment": "Enabled",
+    "value": "Spectre",
+    "flags": []
+  },
+  {
+    "name": "ConformanceMode",
+    "switch": "permissive-",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ConformanceMode",
+    "switch": "permissive",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++14",
+    "comment": "ISO C++14 Standard",
+    "value": "stdcpp14",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++17",
+    "comment": "ISO C++17 Standard",
+    "value": "stdcpp17",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++20",
+    "comment": "ISO C++20 Standard",
+    "value": "stdcpp20",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++latest",
+    "comment": "Preview - Features from the Latest C++ Working Draft",
+    "value": "stdcpplatest",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard_C",
+    "switch": "std:c11",
+    "comment": "ISO C11 Standard",
+    "value": "stdc11",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard_C",
+    "switch": "std:c17",
+    "comment": "ISO C17 (2018) Standard",
+    "value": "stdc17",
+    "flags": []
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yc",
+    "comment": "Create",
+    "value": "Create",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yu",
+    "comment": "Use",
+    "value": "Use",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Y-",
+    "comment": "Not Using Precompiled Headers",
+    "value": "NotUsing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "",
+    "comment": "No Listing",
+    "value": "NoListing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FA",
+    "comment": "Assembly-Only Listing",
+    "value": "AssemblyCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAc",
+    "comment": "Assembly With Machine Code",
+    "value": "AssemblyAndMachineCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAs",
+    "comment": "Assembly With Source Code",
+    "value": "AssemblyAndSourceCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAcs",
+    "comment": "Assembly, Machine Code and Source",
+    "value": "All",
+    "flags": []
+  },
+  {
+    "name": "ExternalWarningLevel",
+    "switch": "external:W0",
+    "comment": "Turn Off All Warnings",
+    "value": "TurnOffAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "ExternalWarningLevel",
+    "switch": "external:W1",
+    "comment": "Level1",
+    "value": "Level1",
+    "flags": []
+  },
+  {
+    "name": "ExternalWarningLevel",
+    "switch": "external:W2",
+    "comment": "Level2",
+    "value": "Level2",
+    "flags": []
+  },
+  {
+    "name": "ExternalWarningLevel",
+    "switch": "external:W3",
+    "comment": "Level3",
+    "value": "Level3",
+    "flags": []
+  },
+  {
+    "name": "ExternalWarningLevel",
+    "switch": "external:W4",
+    "comment": "Level4",
+    "value": "Level4",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "__cdecl",
+    "value": "Cdecl",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gr",
+    "comment": "__fastcall",
+    "value": "FastCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "__stdcall",
+    "value": "StdCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gv",
+    "comment": "__vectorcall",
+    "value": "VectorCall",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TC",
+    "comment": "Compile as C Code",
+    "value": "CompileAsC",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TP",
+    "comment": "Compile as C++ Code",
+    "value": "CompileAsCpp",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do Not Send Report",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "Prompt",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Queue For Next Login",
+    "value": "Queue",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Send Automatically",
+    "value": "Send",
+    "flags": []
+  },
+  {
+    "name": "TranslateIncludes",
+    "switch": "translateInclude",
+    "comment": "Translate Includes to Imports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportJustMyCode",
+    "switch": "JMC-",
+    "comment": "Support Just My Code Debugging",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SupportJustMyCode",
+    "switch": "JMC",
+    "comment": "Support Just My Code Debugging",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CompileAsWinRT",
+    "switch": "ZW",
+    "comment": "Consume Windows Runtime Extension",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WinRTNoStdLib",
+    "switch": "ZW:nostdlib",
+    "comment": "No Standard WinRT Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX-",
+    "comment": "Treat Warnings As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl-",
+    "comment": "SDL checks",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl",
+    "comment": "SDL checks",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MultiProcessorCompilation",
+    "switch": "MP",
+    "comment": "Multi-processor Compilation",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "IntrinsicFunctions",
+    "switch": "Oi",
+    "comment": "Enable Intrinsic Functions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy-",
+    "comment": "Omit Frame Pointers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy",
+    "comment": "Omit Frame Pointers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFiberSafeOptimizations",
+    "switch": "GT",
+    "comment": "Enable Fiber-Safe Optimizations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WholeProgramOptimization",
+    "switch": "GL",
+    "comment": "Whole Program Optimization",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UndefineAllPreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine All Preprocessor Definitions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessToFile",
+    "switch": "P",
+    "comment": "Preprocess to a File",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessSuppressLineNumbers",
+    "switch": "EP",
+    "comment": "Preprocess Suppress Line Numbers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessKeepComments",
+    "switch": "C",
+    "comment": "Keep Comments",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseStandardPreprocessor",
+    "switch": "Zc:preprocessor-",
+    "comment": "Use Standard Conforming Preprocessor",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UseStandardPreprocessor",
+    "switch": "Zc:preprocessor",
+    "comment": "Use Standard Conforming Preprocessor",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF-",
+    "comment": "Enable String Pooling",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF",
+    "comment": "Enable String Pooling",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm-",
+    "comment": "Enable Minimal Rebuild",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm",
+    "comment": "Enable Minimal Rebuild",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SmallerTypeCheck",
+    "switch": "RTCc",
+    "comment": "Smaller Type Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy-",
+    "comment": "Enable Function-Level Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy",
+    "comment": "Enable Function-Level Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar-",
+    "comment": "Enable Parallel Code Generation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar",
+    "comment": "Enable Parallel Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except-",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CreateHotpatchableImage",
+    "switch": "hotpatch",
+    "comment": "Create Hotpatchable Image",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IntelJCCErratum",
+    "switch": "QIntel-jcc-erratum",
+    "comment": "Enable Intel JCC Erratum Mitigation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GuardEHContMetadata",
+    "switch": "guard:ehcont-",
+    "comment": "Enable EH Continuation Metadata",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GuardEHContMetadata",
+    "switch": "guard:ehcont",
+    "comment": "Enable EH Continuation Metadata",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GuardSignedReturns",
+    "switch": "guard:signret-",
+    "comment": "Enable Signed Returns",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GuardSignedReturns",
+    "switch": "guard:signret",
+    "comment": "Enable Signed Returns",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableLanguageExtensions",
+    "switch": "Za",
+    "comment": "Disable Language Extensions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t-",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope-",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RemoveUnreferencedCodeData",
+    "switch": "Zc:inline-",
+    "comment": "Remove unreferenced code and data",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RemoveUnreferencedCodeData",
+    "switch": "Zc:inline",
+    "comment": "Remove unreferenced code and data",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnforceTypeConversionRules",
+    "switch": "Zc:rvalueCast-",
+    "comment": "Enforce type conversion rules",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnforceTypeConversionRules",
+    "switch": "Zc:rvalueCast",
+    "comment": "Enforce type conversion rules",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR-",
+    "comment": "Enable Run-Time Type Information",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR",
+    "comment": "Enable Run-Time Type Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp-",
+    "comment": "Open MP Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp",
+    "comment": "Open MP Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableModules",
+    "switch": "experimental:module",
+    "comment": "Enable Experimental C++ Standard Library Modules",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ExpandAttributedSource",
+    "switch": "Fx",
+    "comment": "Expand Attributed Source",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseUnicodeForAssemblerListing",
+    "switch": "FAu",
+    "comment": "Use Unicode For Assembler Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateModuleDependencies",
+    "switch": "sourceDependencies:directives",
+    "comment": "Generate Module Dependenices File",
+    "value": "true",
+    "flags": [
+      "Continue"
+    ]
+  },
+  {
+    "name": "GenerateXMLDocumentationFiles",
+    "switch": "doc",
+    "comment": "Generate XML Documentation Files",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "GenerateSourceDependencies",
+    "switch": "sourceDependencies",
+    "comment": "Generate Source Dependencies File",
+    "value": "true",
+    "flags": [
+      "Continue"
+    ]
+  },
+  {
+    "name": "BrowseInformation",
+    "switch": "FR",
+    "comment": "Enable Browse Information",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "TreatAngleIncludeAsExternal",
+    "switch": "external:anglebrackets",
+    "comment": "Treat Files Included with Angle Brackets as External",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ExternalTemplatesDiagnostics",
+    "switch": "external:templates-",
+    "comment": "Template Diagnostics in External Headers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableAnalyzeExternal",
+    "switch": "analyze:external-",
+    "comment": "Disable Code Analysis for External Headers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ShowIncludes",
+    "switch": "showIncludes",
+    "comment": "Show Includes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze-",
+    "comment": "Enable Code Analysis",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze",
+    "comment": "Enable Code Analysis",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseFullPaths",
+    "switch": "FC",
+    "comment": "Use Full Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitDefaultLibName",
+    "switch": "Zl",
+    "comment": "Omit Default Library Name",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalUsingDirectories",
+    "switch": "AI",
+    "comment": "Additional #using Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalBMIDirectories",
+    "switch": "ifcSearchDir",
+    "comment": "Additional BMI Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalModuleDependencies",
+    "switch": "reference",
+    "comment": "Additional Module Dependencies",
+    "value": "",
+    "flags": [
+      "UserFollowing",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalHeaderUnitDependencies",
+    "switch": "headerUnit",
+    "comment": "Additional Header Unit Dependencies",
+    "value": "",
+    "flags": [
+      "UserFollowing",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "U",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "StdIfcDirectory",
+    "switch": "stdIfcDir",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ExternalDirectoriesEnv",
+    "switch": "external:env:",
+    "comment": "External Directories Environment Variables",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DisableSpecificWarnings",
+    "switch": "wd",
+    "comment": "Disable Specific Warnings",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedIncludeFiles",
+    "switch": "FI",
+    "comment": "Forced Include File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedUsingFiles",
+    "switch": "FU",
+    "comment": "Forced #using File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastLog",
+    "switch": "analyze:log",
+    "comment": "Code Analysis Log",
+    "value": "",
+    "flags": [
+      "UserFollowing"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalPlugins",
+    "switch": "analyze:plugin",
+    "comment": "Additional Code Analysis Native plugins",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "TreatSpecificWarningsAsErrors",
+    "switch": "we",
+    "comment": "Treat Specific Warnings As Errors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "WarningVersion",
+    "switch": "Wv:",
+    "comment": "Warning Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PreprocessOutputPath",
+    "switch": "Fi",
+    "comment": "Preprocess Output Path",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yu",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yc",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderOutputFile",
+    "switch": "Fp",
+    "comment": "Precompiled Header Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssemblerListingLocation",
+    "switch": "Fa",
+    "comment": "ASM List Location",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleOutputFile",
+    "switch": "ifcOutput",
+    "comment": "Module Output File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDependenciesFile",
+    "switch": "sourceDependencies:directives",
+    "comment": "Module Dependencies File Name",
+    "value": "",
+    "flags": [
+      "UserFollowing"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDataBaseFileName",
+    "switch": "Fd",
+    "comment": "Program Database File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "XMLDocumentationFileName",
+    "switch": "doc",
+    "comment": "XML Documentation File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "SourceDependenciesFile",
+    "switch": "sourceDependencies",
+    "comment": "Source Dependencies File Name",
+    "value": "",
+    "flags": [
+      "UserFollowing"
+    ]
+  },
+  {
+    "name": "BrowseInformationFile",
+    "switch": "FR",
+    "comment": "Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PREfastProjectDirectory",
+    "switch": "analyze:projectdirectory",
+    "comment": "Code Analysis Project Directory",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PREfastRulesetDirectories",
+    "switch": "analyze:rulesetdirectory",
+    "comment": "Code Analysis Ruleset Directories",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PREfastRulesetFile",
+    "switch": "analyze:ruleset",
+    "comment": "Code Analysis Ruleset File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProcessorNumber",
+    "switch": "MP",
+    "comment": "Number of processors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  }
+]
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v143_CSharp.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v143_CSharp.json
new file mode 100644
index 0000000..ae1bd47
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v143_CSharp.json
@@ -0,0 +1,553 @@
+[
+  {
+    "name":  "ProjectName",
+    "switch": "out:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:exe",
+    "comment": "",
+    "value": "Exe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:winexe",
+    "comment": "",
+    "value": "Winexe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:library",
+    "comment": "",
+    "value": "Library",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:module",
+    "comment": "",
+    "value": "Module",
+    "flags": []
+  },
+  {
+    "name":  "DocumentationFile",
+    "switch": "doc",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x86",
+    "comment": "",
+    "value": "x86",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:Itanium",
+    "comment": "",
+    "value": "Itanium",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x64",
+    "comment": "",
+    "value": "x64",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:arm",
+    "comment": "",
+    "value": "arm",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu32bitpreferred",
+    "comment": "",
+    "value": "anycpu32bitpreferred",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu",
+    "comment": "",
+    "value": "anycpu",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "mit alias",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "dateiliste",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AddModules",
+    "switch": "addmodule:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name":  "Win32Resource",
+    "switch": "win32res:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationIcon",
+    "switch": "win32icon:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationManifest",
+    "switch": "win32manifest:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "NoWin32Manifest",
+    "switch": "nowin32manifest",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineDebug",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": [
+      "Continue"
+    ]
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:none",
+    "comment": "",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:full",
+    "comment": "",
+    "value": "full",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:pdbonly",
+    "comment": "",
+    "value": "pdbonly",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:portable",
+    "comment": "",
+    "value": "portable",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "CommaAppendable"
+    ]
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:0",
+    "comment": "",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:1",
+    "comment": "",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:2",
+    "comment": "",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "NoWarn",
+    "switch": "nowarn:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "CommaAppendable"
+    ]
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineConstants",
+    "switch": "define:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable",
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AssemblyOriginatorKeyFile",
+    "switch": "keyfile",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "KeyContainerName",
+    "switch": "keycontainer",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoLogo",
+    "switch": "nologo",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoConfig",
+    "switch": "noconfig",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "BaseAddress",
+    "switch": "baseaddress:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CodePage",
+    "switch": "codepage",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "Utf8Output",
+    "switch": "utf8output",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "MainEntryPoint",
+    "switch": "main:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "GenerateFullPaths",
+    "switch": "fullpaths",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "FileAlignment",
+    "switch": "filealign",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "PdbFile",
+    "switch": "pdb:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "SubsystemVersion",
+    "switch": "subsystemversion",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AdditionalLibPaths",
+    "switch": "lib:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:none",
+    "comment": "Do Not Send Report",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "prompt",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:queue",
+    "comment": "Queue For Next Login",
+    "value": "queue",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:send",
+    "comment": "Send Automatically",
+    "value": "send",
+    "flags": []
+  }
+]
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v143_Link.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v143_Link.json
new file mode 100644
index 0000000..71d58f8
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v143_Link.json
@@ -0,0 +1,1407 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Generate Debug Information",
+    "value": "true",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:FASTLINK",
+    "comment": "Generate Debug Information optimized for faster links",
+    "value": "DebugFastLink",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:FULL",
+    "comment": "Generate Debug Information optimized for sharing and publishing",
+    "value": "DebugFull",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:NONE",
+    "comment": "Produces no debugging information",
+    "value": "false",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:incremental",
+    "comment": "Use Fast Link Time Code Generation",
+    "value": "UseFastLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD:NO",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM64",
+    "comment": "MachineARM64",
+    "value": "MachineARM64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM64EC",
+    "comment": "MachineARM64EC",
+    "value": "MachineARM64EC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM64X",
+    "comment": "MachineARM64X",
+    "value": "MachineARM64X",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "SpaceAppendable"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ManifestEmbed",
+    "switch": "manifest:embed",
+    "comment": "Embed Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AppContainer",
+    "switch": "APPCONTAINER",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN:NO",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DetectOneDefinitionRule",
+    "switch": "ODR",
+    "comment": "Detect One Definition Rule violations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CETCompat",
+    "switch": "CETCOMPAT:NO",
+    "comment": "CET Shadow Stack Compatible",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CETCompat",
+    "switch": "CETCOMPAT",
+    "comment": "CET Shadow Stack Compatible",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkControlFlowGuard",
+    "switch": "guard:cf",
+    "comment": "Control Flow Guard",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkGuardEHContMetadata",
+    "switch": "guard:ehcont",
+    "comment": "Enable EH Continuation Metadata",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkGuardSignedReturns",
+    "switch": "guard:nodelayloadsignret",
+    "comment": "Enable Signed Returns",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkGuardSignedReturns",
+    "switch": "guard:delayloadsignret",
+    "comment": "Enable Signed Returns",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "Natvis",
+    "switch": "NATVIS:",
+    "comment": "Natvis files",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ManifestInput",
+    "switch": "manifestinput:",
+    "comment": "Manifest Input",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "IncrementalLinkDatabaseFile",
+    "switch": "ILK:",
+    "comment": "Incremental Link Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkTimeCodeGenerationObjectFile",
+    "switch": "LTCGOUT:",
+    "comment": "Link Time Code Generation Object File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataFile",
+    "switch": "WINMDFILE:",
+    "comment": "Windows Metadata File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataLinkKeyFile",
+    "switch": "WINMDKEYFILE:",
+    "comment": "Windows Metadata Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataKeyContainer",
+    "switch": "WINMDKEYCONTAINER:",
+    "comment": "Windows Metadata Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PdbThreads",
+    "switch": "pdbthreads:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "CgThreads",
+    "switch": "cgthreads:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/share/cmake-3.22/Templates/MSBuild/FlagTables/v14_LIB.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v14_LIB.json
new file mode 100644
index 0000000..a0e85b2
--- /dev/null
+++ b/share/cmake-3.22/Templates/MSBuild/FlagTables/v14_LIB.json
@@ -0,0 +1,311 @@
+[
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM64",
+    "comment": "MachineARM64",
+    "value": "MachineARM64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM64X",
+    "comment": "MachineARM64X",
+    "value": "MachineARM64X",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWSCE",
+    "comment": "WindowsCE",
+    "value": "WindowsCE",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Verbose",
+    "switch": "VERBOSE",
+    "comment": "Verbose",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Link Time Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ExportNamedFunctions",
+    "switch": "EXPORT:",
+    "comment": "Export Named Functions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "RemoveObjects",
+    "switch": "REMOVE:",
+    "comment": "Remove Objects",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "DisplayLibrary",
+    "switch": "LIST:",
+    "comment": "Display Library to standard output",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Name",
+    "switch": "NAME:",
+    "comment": "Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v14_MASM.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v14_MASM.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v14_MASM.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v14_MASM.json
diff --git a/share/cmake-3.18/Templates/MSBuild/FlagTables/v14_RC.json b/share/cmake-3.22/Templates/MSBuild/FlagTables/v14_RC.json
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/FlagTables/v14_RC.json
rename to share/cmake-3.22/Templates/MSBuild/FlagTables/v14_RC.json
diff --git a/share/cmake-3.18/Templates/MSBuild/nasm.props.in b/share/cmake-3.22/Templates/MSBuild/nasm.props.in
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/nasm.props.in
rename to share/cmake-3.22/Templates/MSBuild/nasm.props.in
diff --git a/share/cmake-3.18/Templates/MSBuild/nasm.targets b/share/cmake-3.22/Templates/MSBuild/nasm.targets
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/nasm.targets
rename to share/cmake-3.22/Templates/MSBuild/nasm.targets
diff --git a/share/cmake-3.18/Templates/MSBuild/nasm.xml b/share/cmake-3.22/Templates/MSBuild/nasm.xml
similarity index 100%
rename from share/cmake-3.18/Templates/MSBuild/nasm.xml
rename to share/cmake-3.22/Templates/MSBuild/nasm.xml
diff --git a/share/cmake-3.22/Templates/TestDriver.cxx.in b/share/cmake-3.22/Templates/TestDriver.cxx.in
new file mode 100644
index 0000000..632bb80
--- /dev/null
+++ b/share/cmake-3.22/Templates/TestDriver.cxx.in
@@ -0,0 +1,189 @@
+#include <ctype.h>  /* NOLINT */
+#include <stdio.h>  /* NOLINT */
+#include <stdlib.h> /* NOLINT */
+#include <string.h> /* NOLINT */
+#include <time.h>   /* NOLINT */
+
+#if defined(_MSC_VER)
+#pragma warning(disable : 4996) /* deprecation */
+#endif
+
+@CMAKE_TESTDRIVER_EXTRA_INCLUDES@
+
+/* Forward declare test functions. */
+@CMAKE_FORWARD_DECLARE_TESTS@
+
+#ifdef __cplusplus
+#  define CM_CAST(TYPE, EXPR) static_cast<TYPE>(EXPR)
+#  if __cplusplus >= 201103L
+#    define CM_NULL nullptr
+#  else
+#    define CM_NULL NULL
+#  endif
+#else
+#  define CM_CAST(TYPE, EXPR) (TYPE)(EXPR)
+#  define CM_NULL NULL
+#endif
+
+/* Create map.  */
+
+typedef int (*MainFuncPointer)(int, char* []); /* NOLINT */
+typedef struct /* NOLINT */
+{
+  const char* name;
+  MainFuncPointer func;
+} functionMapEntry;
+
+static functionMapEntry cmakeGeneratedFunctionMapEntries[] = {
+  @CMAKE_FUNCTION_TABLE_ENTRIES@
+  { CM_NULL, CM_NULL } /* NOLINT */
+};
+
+static const int NumTests = CM_CAST(int,
+  sizeof(cmakeGeneratedFunctionMapEntries) / sizeof(functionMapEntry)) - 1;
+
+/* Allocate and create a lowercased copy of string
+   (note that it has to be free'd manually) */
+static char* lowercase(const char* string)
+{
+  char *new_string;
+  char *p;
+  size_t stringSize;
+
+  stringSize = CM_CAST(size_t, strlen(string) + 1);
+  new_string = CM_CAST(char*, malloc(sizeof(char) * stringSize));
+
+  if (new_string == CM_NULL) { /* NOLINT */
+    return CM_NULL;            /* NOLINT */
+  }
+  strcpy(new_string, string);  /* NOLINT */
+  for (p = new_string; *p != 0; ++p) {
+    *p = CM_CAST(char, tolower(*p));
+  }
+  return new_string;
+}
+
+int isTestSkipped(const char *name, int n_skipped_tests, char *skipped_tests[]) {
+  int i;
+  for (i = 0; i < n_skipped_tests; i++) {
+    if (strcmp(name, skipped_tests[i]) == 0) {
+      return 1;
+    }
+  }
+
+  return 0;
+}
+
+int main(int ac, char* av[])
+{
+  int i;
+  int testNum = 0;
+  int partial_match;
+  int run_all;
+  char *arg;
+  int testToRun = -1;
+
+  @CMAKE_TESTDRIVER_ARGVC_FUNCTION@
+
+  /* If no test name was given */
+  /* process command line with user function.  */
+  if (ac < 2) {
+    /* Ask for a test.  */
+    printf("Available tests:\n");
+    for (i = 0; i < NumTests; ++i) {
+      printf("%3d. %s\n", i, cmakeGeneratedFunctionMapEntries[i].name);
+    }
+    printf("To run a test, enter the test number: ");
+    fflush(stdout);
+    if (scanf("%d", &testNum) != 1) {
+      printf("Couldn't parse that input as a number\n");
+      return -1;
+    }
+    if (testNum >= NumTests) {
+      printf("%3d is an invalid test number.\n", testNum);
+      return -1;
+    }
+    testToRun = testNum;
+    ac--;
+    av++;
+  }
+  partial_match = 0;
+  run_all = 0;
+  arg = CM_NULL; /* NOLINT */
+  /* If partial match or running all tests are requested.  */
+  if (testToRun == -1 && ac > 1) {
+    partial_match = (strcmp(av[1], "-R") == 0) ? 1 : 0;
+    run_all = (strcmp(av[1], "-A") == 0) ? 1 : 0;
+  }
+  if (partial_match != 0 && ac < 3) {
+    printf("-R needs an additional parameter.\n");
+    return -1;
+  }
+  if (run_all == 1) {
+    clock_t t;
+    int status = 0;
+    const char* status_message = CM_NULL;
+    printf("TAP version 13\n");
+    printf("1..%d\n", NumTests);
+    for (i = 0; i < NumTests; ++i) {
+      const char *name = cmakeGeneratedFunctionMapEntries[i].name;
+      if (ac > 2) {
+        if (isTestSkipped(name, ac - 2, av + 2) == 1) {
+          printf("ok %d %s # SKIP\n", i + 1, name);
+          continue;
+        }
+      }
+      t = clock();
+      status = (*cmakeGeneratedFunctionMapEntries[i].func)(ac, av);
+      t = clock() - t;
+      status_message = (status == -1) ? "not ok" : "ok";
+      {
+        double time_taken = CM_CAST(double, t) / CLOCKS_PER_SEC;
+        printf("%s %d %s # %f\n", status_message, i + 1, name, time_taken);
+      }
+    }
+    printf("All tests finished.\n");
+
+    return 0;
+  }
+
+  if (testToRun == -1) {
+    arg = lowercase(av[1 + partial_match]);
+  }
+  for (i = 0; i < NumTests && testToRun == -1; ++i) {
+    char *test_name = lowercase(cmakeGeneratedFunctionMapEntries[i].name);
+    if (partial_match != 0 && strstr(test_name, arg) != CM_NULL) { /* NOLINT */
+      testToRun = i;
+      ac -= 2;
+      av += 2;
+    } else if (partial_match == 0 && strcmp(test_name, arg) == 0) {
+      testToRun = i;
+      ac--;
+      av++;
+    }
+    free(test_name);
+  }
+  free(arg);
+  if (testToRun != -1) {
+    int result;
+@CMAKE_TESTDRIVER_BEFORE_TESTMAIN@
+    if (testToRun < 0 || testToRun >= NumTests) {
+      printf("testToRun was modified by TestDriver code to an invalid value: "
+             "%3d.\n",
+             testNum);
+      return -1;
+    }
+    result = (*cmakeGeneratedFunctionMapEntries[testToRun].func)(ac, av);
+@CMAKE_TESTDRIVER_AFTER_TESTMAIN@
+    return result;
+  }
+
+  /* Nothing was run, display the test names.  */
+  printf("Available tests:\n");
+  for (i = 0; i < NumTests; ++i) {
+    printf("%3d. %s\n", i, cmakeGeneratedFunctionMapEntries[i].name);
+  }
+  printf("Failed: %s is an invalid test name.\n", av[1]);
+
+  return -1;
+}
diff --git a/share/cmake-3.18/Templates/Windows/ApplicationIcon.png b/share/cmake-3.22/Templates/Windows/ApplicationIcon.png
similarity index 100%
rename from share/cmake-3.18/Templates/Windows/ApplicationIcon.png
rename to share/cmake-3.22/Templates/Windows/ApplicationIcon.png
Binary files differ
diff --git a/share/cmake-3.18/Templates/Windows/Logo.png b/share/cmake-3.22/Templates/Windows/Logo.png
similarity index 100%
rename from share/cmake-3.18/Templates/Windows/Logo.png
rename to share/cmake-3.22/Templates/Windows/Logo.png
Binary files differ
diff --git a/share/cmake-3.18/Templates/Windows/SmallLogo.png b/share/cmake-3.22/Templates/Windows/SmallLogo.png
similarity index 100%
rename from share/cmake-3.18/Templates/Windows/SmallLogo.png
rename to share/cmake-3.22/Templates/Windows/SmallLogo.png
Binary files differ
diff --git a/share/cmake-3.18/Templates/Windows/SmallLogo44x44.png b/share/cmake-3.22/Templates/Windows/SmallLogo44x44.png
similarity index 100%
rename from share/cmake-3.18/Templates/Windows/SmallLogo44x44.png
rename to share/cmake-3.22/Templates/Windows/SmallLogo44x44.png
Binary files differ
diff --git a/share/cmake-3.18/Templates/Windows/SplashScreen.png b/share/cmake-3.22/Templates/Windows/SplashScreen.png
similarity index 100%
rename from share/cmake-3.18/Templates/Windows/SplashScreen.png
rename to share/cmake-3.22/Templates/Windows/SplashScreen.png
Binary files differ
diff --git a/share/cmake-3.18/Templates/Windows/StoreLogo.png b/share/cmake-3.22/Templates/Windows/StoreLogo.png
similarity index 100%
rename from share/cmake-3.18/Templates/Windows/StoreLogo.png
rename to share/cmake-3.22/Templates/Windows/StoreLogo.png
Binary files differ
diff --git a/share/cmake-3.18/Templates/Windows/Windows_TemporaryKey.pfx b/share/cmake-3.22/Templates/Windows/Windows_TemporaryKey.pfx
similarity index 100%
rename from share/cmake-3.18/Templates/Windows/Windows_TemporaryKey.pfx
rename to share/cmake-3.22/Templates/Windows/Windows_TemporaryKey.pfx
Binary files differ
diff --git a/share/cmake-3.18/include/cmCPluginAPI.h b/share/cmake-3.22/include/cmCPluginAPI.h
similarity index 100%
rename from share/cmake-3.18/include/cmCPluginAPI.h
rename to share/cmake-3.22/include/cmCPluginAPI.h
diff --git a/share/emacs/site-lisp/cmake-mode.el b/share/emacs/site-lisp/cmake-mode.el
index caaf0d5..ddc7b40 100644
--- a/share/emacs/site-lisp/cmake-mode.el
+++ b/share/emacs/site-lisp/cmake-mode.el
@@ -27,6 +27,9 @@
 ;; cmake-command-help Written by James Bigler
 ;;
 
+(require 'rst)
+(require 'rx)
+
 (defcustom cmake-mode-cmake-executable "cmake"
   "*The name of the cmake executable.
 
@@ -188,6 +191,61 @@
     )
   )
 
+
+;------------------------------------------------------------------------------
+
+;;
+;; Navigation / marking by function or macro
+;;
+
+(defconst cmake--regex-defun-start
+  (rx line-start
+      (zero-or-more space)
+      (or "function" "macro")
+      (zero-or-more space)
+      "("))
+
+(defconst cmake--regex-defun-end
+  (rx line-start
+      (zero-or-more space)
+      "end"
+      (or "function" "macro")
+      (zero-or-more space)
+      "(" (zero-or-more (not-char ")")) ")"))
+
+(defun cmake-beginning-of-defun ()
+  "Move backward to the beginning of a CMake function or macro.
+
+Return t unless search stops due to beginning of buffer."
+  (interactive)
+  (when (not (region-active-p))
+    (push-mark))
+  (let ((case-fold-search t))
+    (when (re-search-backward cmake--regex-defun-start nil 'move)
+      t)))
+
+(defun cmake-end-of-defun ()
+  "Move forward to the end of a CMake function or macro.
+
+Return t unless search stops due to end of buffer."
+  (interactive)
+  (when (not (region-active-p))
+    (push-mark))
+  (let ((case-fold-search t))
+    (when (re-search-forward cmake--regex-defun-end nil 'move)
+      (forward-line)
+      t)))
+
+(defun cmake-mark-defun ()
+  "Mark the current CMake function or macro.
+
+This puts the mark at the end, and point at the beginning."
+  (interactive)
+  (cmake-end-of-defun)
+  (push-mark nil :nomsg :activate)
+  (cmake-beginning-of-defun))
+
+
 ;------------------------------------------------------------------------------
 
 ;;
@@ -240,6 +298,12 @@
   ; Setup comment syntax.
   (set (make-local-variable 'comment-start) "#"))
 
+;; Default cmake-mode key bindings
+(define-key cmake-mode-map "\e\C-a" #'cmake-beginning-of-defun)
+(define-key cmake-mode-map "\e\C-e" #'cmake-end-of-defun)
+(define-key cmake-mode-map "\e\C-h" #'cmake-mark-defun)
+
+
 ; Help mode starts here
 
 
@@ -258,7 +322,27 @@
     (save-selected-window
       (select-window (display-buffer buffer 'not-this-window))
       (cmake-mode)
-      (read-only-mode 1))
+      (read-only-mode 1)
+      (view-mode 1))
+    )
+  )
+
+;;;###autoload
+(defun cmake-command-run-help (type &optional topic buffer)
+  "`cmake-command-run' but rendered in `rst-mode'."
+  (interactive "s")
+  (let* ((bufname (if buffer buffer (concat "*CMake" type (if topic "-") topic "*")))
+         (buffer  (if (get-buffer bufname) (get-buffer bufname) (generate-new-buffer bufname)))
+         (command (concat cmake-mode-cmake-executable " " type " " topic))
+         ;; Turn of resizing of mini-windows for shell-command.
+         (resize-mini-windows nil)
+         )
+    (shell-command command buffer)
+    (save-selected-window
+      (select-window (display-buffer buffer 'not-this-window))
+      (rst-mode)
+      (read-only-mode 1)
+      (view-mode 1))
     )
   )
 
@@ -266,7 +350,7 @@
 (defun cmake-help-list-commands ()
   "Prints out a list of the cmake commands."
   (interactive)
-  (cmake-command-run "--help-command-list")
+  (cmake-command-run-help "--help-command-list")
   )
 
 (defvar cmake-commands '() "List of available topics for --help-command.")
@@ -292,7 +376,7 @@
     (if (not (symbol-value listvar))
         (let ((temp-buffer-name "*CMake Temporary*"))
           (save-window-excursion
-            (cmake-command-run (concat "--help-" listname "-list") nil temp-buffer-name)
+            (cmake-command-run-help (concat "--help-" listname "-list") nil temp-buffer-name)
             (with-current-buffer temp-buffer-name
               ; FIXME: Ignore first line if it is "cmake version ..." from CMake < 3.0.
               (set listvar (split-string (buffer-substring-no-properties (point-min) (point-max)) "\n" t)))))
@@ -326,25 +410,25 @@
 (defun cmake-help-command ()
   "Prints out the help message for the command the cursor is on."
   (interactive)
-  (cmake-command-run "--help-command" (cmake-help-type "command") "*CMake Help*"))
+  (cmake-command-run-help "--help-command" (cmake-help-type "command") "*CMake Help*"))
 
 ;;;###autoload
 (defun cmake-help-module ()
   "Prints out the help message for the module the cursor is on."
   (interactive)
-  (cmake-command-run "--help-module" (cmake-help-type "module") "*CMake Help*"))
+  (cmake-command-run-help "--help-module" (cmake-help-type "module") "*CMake Help*"))
 
 ;;;###autoload
 (defun cmake-help-variable ()
   "Prints out the help message for the variable the cursor is on."
   (interactive)
-  (cmake-command-run "--help-variable" (cmake-help-type "variable") "*CMake Help*"))
+  (cmake-command-run-help "--help-variable" (cmake-help-type "variable") "*CMake Help*"))
 
 ;;;###autoload
 (defun cmake-help-property ()
   "Prints out the help message for the property the cursor is on."
   (interactive)
-  (cmake-command-run "--help-property" (cmake-help-type "property") "*CMake Help*"))
+  (cmake-command-run-help "--help-property" (cmake-help-type "property") "*CMake Help*"))
 
 ;;;###autoload
 (defun cmake-help ()
@@ -367,13 +451,13 @@
     (if (string= input "")
         (error "No argument given")
       (if (member input command-list)
-          (cmake-command-run "--help-command" input "*CMake Help*")
+          (cmake-command-run-help "--help-command" input "*CMake Help*")
         (if (member input variable-list)
-            (cmake-command-run "--help-variable" input "*CMake Help*")
+            (cmake-command-run-help "--help-variable" input "*CMake Help*")
           (if (member input module-list)
-              (cmake-command-run "--help-module" input "*CMake Help*")
+              (cmake-command-run-help "--help-module" input "*CMake Help*")
             (if (member input property-list)
-                (cmake-command-run "--help-property" input "*CMake Help*")
+                (cmake-command-run-help "--help-property" input "*CMake Help*")
               (error "Not a know help topic.") ; this really should not happen
               ))))))
   )
diff --git a/share/vim/vimfiles/indent/cmake.vim b/share/vim/vimfiles/indent/cmake.vim
index 33e583d..f7ab24a 100644
--- a/share/vim/vimfiles/indent/cmake.vim
+++ b/share/vim/vimfiles/indent/cmake.vim
@@ -5,7 +5,7 @@
 " Former Maintainer: Karthik Krishnan <karthik.krishnan@kitware.com>
 " Last Change:  2017 Aug 30
 "
-" Licence:      The CMake license applies to this file. See
+" License:      The CMake license applies to this file. See
 "               https://cmake.org/licensing
 "               This implies that distribution with Vim is allowed
 
diff --git a/share/vim/vimfiles/syntax/cmake.vim b/share/vim/vimfiles/syntax/cmake.vim
index 2d63eb0..7a3e4ed 100644
--- a/share/vim/vimfiles/syntax/cmake.vim
+++ b/share/vim/vimfiles/syntax/cmake.vim
@@ -1,15 +1,15 @@
 " Vim syntax file
 " Program:      CMake - Cross-Platform Makefile Generator
-" Version:      cmake version 3.14.20190529-g067a4f
+" Version:      cmake version 3.19.20201028-gdab947f
 " Language:     CMake
 " Author:       Andy Cedilnik <andy.cedilnik@kitware.com>,
 "               Nicholas Hutchinson <nshutchinson@gmail.com>,
 "               Patrick Boettcher <patrick.boettcher@posteo.de>
 " Maintainer:   Dimitri Merejkowsky <d.merej@gmail.com>
 " Former Maintainer: Karthik Krishnan <karthik.krishnan@kitware.com>
-" Last Change:  2019 May 29
+" Last Change:  2020 oct. 28
 "
-" Licence:      The CMake license applies to this file. See
+" License:      The CMake license applies to this file. See
 "               https://cmake.org/licensing
 "               This implies that distribution with Vim is allowed
 
@@ -44,7 +44,9 @@
             \ ADDITIONAL_CLEAN_FILES
             \ ADDITIONAL_MAKE_CLEAN_FILES
             \ ADVANCED
+            \ AIX_EXPORT_ALL_SYMBOLS
             \ ALIASED_TARGET
+            \ ALIAS_GLOBAL
             \ ALLOW_DUPLICATE_CUSTOM_TARGETS
             \ ANDROID_ANT_ADDITIONAL_OPTIONS
             \ ANDROID_API
@@ -79,6 +81,7 @@
             \ AUTOMOC_EXECUTABLE
             \ AUTOMOC_MACRO_NAMES
             \ AUTOMOC_MOC_OPTIONS
+            \ AUTOMOC_PATH_PREFIX
             \ AUTOMOC_SOURCE_GROUP
             \ AUTOMOC_TARGETS_FOLDER
             \ AUTORCC
@@ -89,6 +92,7 @@
             \ AUTOUIC_EXECUTABLE
             \ AUTOUIC_OPTIONS
             \ AUTOUIC_SEARCH_PATHS
+            \ AUTOUIC_SOURCE_GROUP
             \ BINARY_DIR
             \ BUILDSYSTEM_TARGETS
             \ BUILD_RPATH
@@ -100,8 +104,8 @@
             \ CACHE_VARIABLES
             \ CLEAN_NO_CUSTOM
             \ CMAKE_CONFIGURE_DEPENDS
-            \ CMAKE_CXX_KNOWN_FEATURES
             \ CMAKE_CUDA_KNOWN_FEATURES
+            \ CMAKE_CXX_KNOWN_FEATURES
             \ CMAKE_C_KNOWN_FEATURES
             \ CMAKE_ROLE
             \ COMMON_LANGUAGE_RUNTIME
@@ -123,9 +127,11 @@
             \ CPACK_START_MENU_SHORTCUTS
             \ CPACK_WIX_ACL
             \ CROSSCOMPILING_EMULATOR
+            \ CUDA_ARCHITECTURES
             \ CUDA_EXTENSIONS
             \ CUDA_PTX_COMPILATION
             \ CUDA_RESOLVE_DEVICE_SYMBOLS
+            \ CUDA_RUNTIME_LIBRARY
             \ CUDA_SEPARABLE_COMPILATION
             \ CUDA_STANDARD
             \ CUDA_STANDARD_REQUIRED
@@ -142,8 +148,11 @@
             \ DEPENDS
             \ DEPLOYMENT_ADDITIONAL_FILES
             \ DEPLOYMENT_REMOTE_DIRECTORY
+            \ DEPRECATION
             \ DISABLED
             \ DISABLED_FEATURES
+            \ DISABLE_PRECOMPILE_HEADERS
+            \ DOTNET_TARGET_FRAMEWORK
             \ DOTNET_TARGET_FRAMEWORK_VERSION
             \ ECLIPSE_EXTRA_CPROJECT_CONTENTS
             \ ECLIPSE_EXTRA_NATURES
@@ -151,6 +160,7 @@
             \ ENABLED_LANGUAGES
             \ ENABLE_EXPORTS
             \ ENVIRONMENT
+            \ ENVIRONMENT_MODIFICATION
             \ EXCLUDE_FROM_ALL
             \ EXCLUDE_FROM_DEFAULT_BUILD
             \ EXPORT_NAME
@@ -202,6 +212,7 @@
             \ INCLUDE_DIRECTORIES
             \ INCLUDE_REGULAR_EXPRESSION
             \ INSTALL_NAME_DIR
+            \ INSTALL_REMOVE_ENVIRONMENT_RPATH
             \ INSTALL_RPATH
             \ INSTALL_RPATH_USE_LINK_PATH
             \ INTERFACE_AUTOUIC_OPTIONS
@@ -214,11 +225,14 @@
             \ INTERFACE_LINK_LIBRARIES
             \ INTERFACE_LINK_OPTIONS
             \ INTERFACE_POSITION_INDEPENDENT_CODE
+            \ INTERFACE_PRECOMPILE_HEADERS
             \ INTERFACE_SOURCES
             \ INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
             \ INTERPROCEDURAL_OPTIMIZATION
             \ IN_TRY_COMPILE
             \ IOS_INSTALL_COMBINED
+            \ ISPC_HEADER_DIRECTORY
+            \ ISPC_INSTRUCTION_SETS
             \ JOB_POOLS
             \ JOB_POOL_COMPILE
             \ JOB_POOL_LINK
@@ -242,6 +256,8 @@
             \ LINK_WHAT_YOU_USE
             \ LISTFILE_STACK
             \ LOCATION
+            \ MACHO_COMPATIBILITY_VERSION
+            \ MACHO_CURRENT_VERSION
             \ MACOSX_BUNDLE
             \ MACOSX_BUNDLE_INFO_PLIST
             \ MACOSX_FRAMEWORK_INFO_PLIST
@@ -255,18 +271,29 @@
             \ NAME
             \ NO_SONAME
             \ NO_SYSTEM_FROM_IMPORTED
+            \ OBJCXX_EXTENSIONS
+            \ OBJCXX_STANDARD
+            \ OBJCXX_STANDARD_REQUIRED
+            \ OBJC_EXTENSIONS
+            \ OBJC_STANDARD
+            \ OBJC_STANDARD_REQUIRED
             \ OBJECT_DEPENDS
             \ OBJECT_OUTPUTS
+            \ OPTIMIZE_DEPENDENCIES
             \ OSX_ARCHITECTURES
             \ OUTPUT_NAME
             \ PACKAGES_FOUND
             \ PACKAGES_NOT_FOUND
             \ PARENT_DIRECTORY
             \ PASS_REGULAR_EXPRESSION
+            \ PCH_INSTANTIATE_TEMPLATES
+            \ PCH_WARN_INVALID
             \ PDB_NAME
             \ PDB_OUTPUT_DIRECTORY
             \ POSITION_INDEPENDENT_CODE
             \ POST_INSTALL_SCRIPT
+            \ PRECOMPILE_HEADERS
+            \ PRECOMPILE_HEADERS_REUSE_FROM
             \ PREDEFINED_TARGETS_FOLDER
             \ PREFIX
             \ PRE_INSTALL_SCRIPT
@@ -278,6 +305,7 @@
             \ REPORT_UNDEFINED_PROPERTIES
             \ REQUIRED_FILES
             \ RESOURCE
+            \ RESOURCE_GROUPS
             \ RESOURCE_LOCK
             \ RULE_LAUNCH_COMPILE
             \ RULE_LAUNCH_CUSTOM
@@ -291,8 +319,10 @@
             \ SKIP_AUTORCC
             \ SKIP_AUTOUIC
             \ SKIP_BUILD_RPATH
+            \ SKIP_PRECOMPILE_HEADERS
             \ SKIP_REGULAR_EXPRESSION
             \ SKIP_RETURN_CODE
+            \ SKIP_UNITY_BUILD_INCLUSION
             \ SOURCES
             \ SOURCE_DIR
             \ SOVERSION
@@ -304,6 +334,7 @@
             \ SYMBOLIC
             \ Swift_DEPENDENCIES_FILE
             \ Swift_DIAGNOSTICS_FILE
+            \ Swift_LANGUAGE_VERSION
             \ Swift_MODULE_DIRECTORY
             \ Swift_MODULE_NAME
             \ TARGET_ARCHIVES_MAY_BE_SHARED_LIBS
@@ -315,6 +346,12 @@
             \ TIMEOUT
             \ TIMEOUT_AFTER_MATCH
             \ TYPE
+            \ UNITY_BUILD
+            \ UNITY_BUILD_BATCH_SIZE
+            \ UNITY_BUILD_CODE_AFTER_INCLUDE
+            \ UNITY_BUILD_CODE_BEFORE_INCLUDE
+            \ UNITY_BUILD_MODE
+            \ UNITY_GROUP
             \ USE_FOLDERS
             \ VALUE
             \ VARIABLES
@@ -329,9 +366,11 @@
             \ VS_DEPLOYMENT_CONTENT
             \ VS_DEPLOYMENT_LOCATION
             \ VS_DESKTOP_EXTENSIONS_VERSION
+            \ VS_DOTNET_DOCUMENTATION_FILE
             \ VS_DOTNET_REFERENCES
             \ VS_DOTNET_REFERENCES_COPY_LOCAL
             \ VS_DOTNET_TARGET_FRAMEWORK_VERSION
+            \ VS_DPI_AWARE
             \ VS_GLOBAL_KEYWORD
             \ VS_GLOBAL_PROJECT_TYPES
             \ VS_GLOBAL_ROOTNAMESPACE
@@ -342,6 +381,8 @@
             \ VS_KEYWORD
             \ VS_MOBILE_EXTENSIONS_VERSION
             \ VS_NO_SOLUTION_DEPLOY
+            \ VS_PACKAGE_REFERENCES
+            \ VS_PLATFORM_TOOLSET
             \ VS_PROJECT_IMPORT
             \ VS_RESOURCE_GENERATOR
             \ VS_SCC_AUXPATH
@@ -349,6 +390,7 @@
             \ VS_SCC_PROJECTNAME
             \ VS_SCC_PROVIDER
             \ VS_SDK_REFERENCES
+            \ VS_SETTINGS
             \ VS_SHADER_DISABLE_OPTIMIZATIONS
             \ VS_SHADER_ENABLE_DEBUG
             \ VS_SHADER_ENTRYPOINT
@@ -358,6 +400,7 @@
             \ VS_SHADER_OUTPUT_HEADER_FILE
             \ VS_SHADER_TYPE
             \ VS_SHADER_VARIABLE_NAME
+            \ VS_SOLUTION_DEPLOY
             \ VS_STARTUP_PROJECT
             \ VS_TOOL_OVERRIDE
             \ VS_USER_PROPS
@@ -376,11 +419,13 @@
             \ XCODE_FILE_ATTRIBUTES
             \ XCODE_GENERATE_SCHEME
             \ XCODE_LAST_KNOWN_FILE_TYPE
+            \ XCODE_LINK_BUILD_PHASE_MODE
             \ XCODE_PRODUCT_TYPE
             \ XCODE_SCHEME_ADDRESS_SANITIZER
             \ XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
             \ XCODE_SCHEME_ARGUMENTS
             \ XCODE_SCHEME_DEBUG_AS_ROOT
+            \ XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
             \ XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
             \ XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
             \ XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
@@ -395,6 +440,7 @@
             \ XCODE_SCHEME_THREAD_SANITIZER_STOP
             \ XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
             \ XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
+            \ XCODE_SCHEME_WORKING_DIRECTORY
             \ XCODE_SCHEME_ZOMBIE_OBJECTS
             \ XCTEST
 
@@ -405,6 +451,7 @@
             \ BUILD_SHARED_LIBS
             \ CACHE
             \ CMAKE_ABSOLUTE_DESTINATION_FILES
+            \ CMAKE_AIX_EXPORT_ALL_SYMBOLS
             \ CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS
             \ CMAKE_ANDROID_API
             \ CMAKE_ANDROID_API_MIN
@@ -485,6 +532,9 @@
             \ CMAKE_ASM_LINKER_WRAPPER_FLAG
             \ CMAKE_ASM_LINKER_WRAPPER_FLAG_SEP
             \ CMAKE_ASM_LINK_EXECUTABLE
+            \ CMAKE_ASM_LINK_LIBRARY_FILE_FLAG
+            \ CMAKE_ASM_LINK_LIBRARY_FLAG
+            \ CMAKE_ASM_LINK_LIBRARY_SUFFIX
             \ CMAKE_ASM_MASM
             \ CMAKE_ASM_MASM_ANDROID_TOOLCHAIN_MACHINE
             \ CMAKE_ASM_MASM_ANDROID_TOOLCHAIN_PREFIX
@@ -535,6 +585,9 @@
             \ CMAKE_ASM_MASM_LINKER_WRAPPER_FLAG
             \ CMAKE_ASM_MASM_LINKER_WRAPPER_FLAG_SEP
             \ CMAKE_ASM_MASM_LINK_EXECUTABLE
+            \ CMAKE_ASM_MASM_LINK_LIBRARY_FILE_FLAG
+            \ CMAKE_ASM_MASM_LINK_LIBRARY_FLAG
+            \ CMAKE_ASM_MASM_LINK_LIBRARY_SUFFIX
             \ CMAKE_ASM_MASM_OUTPUT_EXTENSION
             \ CMAKE_ASM_MASM_PLATFORM_ID
             \ CMAKE_ASM_MASM_SIMULATE_ID
@@ -594,6 +647,9 @@
             \ CMAKE_ASM_NASM_LINKER_WRAPPER_FLAG
             \ CMAKE_ASM_NASM_LINKER_WRAPPER_FLAG_SEP
             \ CMAKE_ASM_NASM_LINK_EXECUTABLE
+            \ CMAKE_ASM_NASM_LINK_LIBRARY_FILE_FLAG
+            \ CMAKE_ASM_NASM_LINK_LIBRARY_FLAG
+            \ CMAKE_ASM_NASM_LINK_LIBRARY_SUFFIX
             \ CMAKE_ASM_NASM_OUTPUT_EXTENSION
             \ CMAKE_ASM_NASM_PLATFORM_ID
             \ CMAKE_ASM_NASM_SIMULATE_ID
@@ -620,6 +676,7 @@
             \ CMAKE_AUTOMOC_DEPEND_FILTERS
             \ CMAKE_AUTOMOC_MACRO_NAMES
             \ CMAKE_AUTOMOC_MOC_OPTIONS
+            \ CMAKE_AUTOMOC_PATH_PREFIX
             \ CMAKE_AUTOMOC_RELAXED_MODE
             \ CMAKE_AUTORCC
             \ CMAKE_AUTORCC_OPTIONS
@@ -640,6 +697,7 @@
             \ CMAKE_CACHE_MINOR_VERSION
             \ CMAKE_CACHE_PATCH_VERSION
             \ CMAKE_CFG_INTDIR
+            \ CMAKE_CLANG_VFS_OVERLAY
             \ CMAKE_CL_64
             \ CMAKE_CODEBLOCKS_COMPILER_ID
             \ CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES
@@ -655,6 +713,7 @@
             \ CMAKE_CPACK_COMMAND
             \ CMAKE_CROSSCOMPILING
             \ CMAKE_CROSSCOMPILING_EMULATOR
+            \ CMAKE_CROSS_CONFIGS
             \ CMAKE_CSharp
             \ CMAKE_CSharp_ANDROID_TOOLCHAIN_MACHINE
             \ CMAKE_CSharp_ANDROID_TOOLCHAIN_PREFIX
@@ -705,6 +764,9 @@
             \ CMAKE_CSharp_LINKER_WRAPPER_FLAG
             \ CMAKE_CSharp_LINKER_WRAPPER_FLAG_SEP
             \ CMAKE_CSharp_LINK_EXECUTABLE
+            \ CMAKE_CSharp_LINK_LIBRARY_FILE_FLAG
+            \ CMAKE_CSharp_LINK_LIBRARY_FLAG
+            \ CMAKE_CSharp_LINK_LIBRARY_SUFFIX
             \ CMAKE_CSharp_OUTPUT_EXTENSION
             \ CMAKE_CSharp_PLATFORM_ID
             \ CMAKE_CSharp_SIMULATE_ID
@@ -714,11 +776,13 @@
             \ CMAKE_CSharp_STANDARD_INCLUDE_DIRECTORIES
             \ CMAKE_CSharp_STANDARD_LIBRARIES
             \ CMAKE_CSharp_VISIBILITY_PRESET
+            \ CMAKE_CTEST_ARGUMENTS
             \ CMAKE_CTEST_COMMAND
             \ CMAKE_CUDA
             \ CMAKE_CUDA_ANDROID_TOOLCHAIN_MACHINE
             \ CMAKE_CUDA_ANDROID_TOOLCHAIN_PREFIX
             \ CMAKE_CUDA_ANDROID_TOOLCHAIN_SUFFIX
+            \ CMAKE_CUDA_ARCHITECTURES
             \ CMAKE_CUDA_ARCHIVE_APPEND
             \ CMAKE_CUDA_ARCHIVE_CREATE
             \ CMAKE_CUDA_ARCHIVE_FINISH
@@ -728,7 +792,6 @@
             \ CMAKE_CUDA_COMPILER_AR
             \ CMAKE_CUDA_COMPILER_ARCHITECTURE_ID
             \ CMAKE_CUDA_COMPILER_EXTERNAL_TOOLCHAIN
-            \ CMAKE_CUDA_COMPILE_FEATURES
             \ CMAKE_CUDA_COMPILER_ID
             \ CMAKE_CUDA_COMPILER_LAUNCHER
             \ CMAKE_CUDA_COMPILER_LOADED
@@ -737,6 +800,7 @@
             \ CMAKE_CUDA_COMPILER_TARGET
             \ CMAKE_CUDA_COMPILER_VERSION
             \ CMAKE_CUDA_COMPILER_VERSION_INTERNAL
+            \ CMAKE_CUDA_COMPILE_FEATURES
             \ CMAKE_CUDA_COMPILE_OBJECT
             \ CMAKE_CUDA_CPPCHECK
             \ CMAKE_CUDA_CPPLINT
@@ -768,8 +832,13 @@
             \ CMAKE_CUDA_LINKER_WRAPPER_FLAG
             \ CMAKE_CUDA_LINKER_WRAPPER_FLAG_SEP
             \ CMAKE_CUDA_LINK_EXECUTABLE
+            \ CMAKE_CUDA_LINK_LIBRARY_FILE_FLAG
+            \ CMAKE_CUDA_LINK_LIBRARY_FLAG
+            \ CMAKE_CUDA_LINK_LIBRARY_SUFFIX
             \ CMAKE_CUDA_OUTPUT_EXTENSION
             \ CMAKE_CUDA_PLATFORM_ID
+            \ CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS
+            \ CMAKE_CUDA_RUNTIME_LIBRARY
             \ CMAKE_CUDA_SEPARABLE_COMPILATION
             \ CMAKE_CUDA_SIMULATE_ID
             \ CMAKE_CUDA_SIMULATE_VERSION
@@ -782,6 +851,10 @@
             \ CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES
             \ CMAKE_CUDA_VISIBILITY_PRESET
             \ CMAKE_CURRENT_BINARY_DIR
+            \ CMAKE_CURRENT_FUNCTION
+            \ CMAKE_CURRENT_FUNCTION_LIST_DIR
+            \ CMAKE_CURRENT_FUNCTION_LIST_FILE
+            \ CMAKE_CURRENT_FUNCTION_LIST_LINE
             \ CMAKE_CURRENT_LIST_DIR
             \ CMAKE_CURRENT_LIST_FILE
             \ CMAKE_CURRENT_LIST_LINE
@@ -833,11 +906,15 @@
             \ CMAKE_CXX_INCLUDE_WHAT_YOU_USE
             \ CMAKE_CXX_INIT
             \ CMAKE_CXX_LIBRARY_ARCHITECTURE
+            \ CMAKE_CXX_LINKER_LAUNCHER
             \ CMAKE_CXX_LINKER_PREFERENCE
             \ CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES
             \ CMAKE_CXX_LINKER_WRAPPER_FLAG
             \ CMAKE_CXX_LINKER_WRAPPER_FLAG_SEP
             \ CMAKE_CXX_LINK_EXECUTABLE
+            \ CMAKE_CXX_LINK_LIBRARY_FILE_FLAG
+            \ CMAKE_CXX_LINK_LIBRARY_FLAG
+            \ CMAKE_CXX_LINK_LIBRARY_SUFFIX
             \ CMAKE_CXX_OUTPUT_EXTENSION
             \ CMAKE_CXX_PLATFORM_ID
             \ CMAKE_CXX_SIMULATE_ID
@@ -895,11 +972,15 @@
             \ CMAKE_C_INCLUDE_WHAT_YOU_USE
             \ CMAKE_C_INIT
             \ CMAKE_C_LIBRARY_ARCHITECTURE
+            \ CMAKE_C_LINKER_LAUNCHER
             \ CMAKE_C_LINKER_PREFERENCE
             \ CMAKE_C_LINKER_PREFERENCE_PROPAGATES
             \ CMAKE_C_LINKER_WRAPPER_FLAG
             \ CMAKE_C_LINKER_WRAPPER_FLAG_SEP
             \ CMAKE_C_LINK_EXECUTABLE
+            \ CMAKE_C_LINK_LIBRARY_FILE_FLAG
+            \ CMAKE_C_LINK_LIBRARY_FLAG
+            \ CMAKE_C_LINK_LIBRARY_SUFFIX
             \ CMAKE_C_OUTPUT_EXTENSION
             \ CMAKE_C_PLATFORM_ID
             \ CMAKE_C_SIMULATE_ID
@@ -913,9 +994,13 @@
             \ CMAKE_C_VISIBILITY_PRESET
             \ CMAKE_DEBUG_POSTFIX
             \ CMAKE_DEBUG_TARGET_PROPERTIES
+            \ CMAKE_DEFAULT_BUILD_TYPE
+            \ CMAKE_DEFAULT_CONFIGS
             \ CMAKE_DEPENDS_IN_PROJECT_ONLY
             \ CMAKE_DIRECTORY_LABELS
+            \ CMAKE_DISABLE_PRECOMPILE_HEADERS
             \ CMAKE_DL_LIBS
+            \ CMAKE_DOTNET_TARGET_FRAMEWORK
             \ CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION
             \ CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES
             \ CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT
@@ -936,6 +1021,7 @@
             \ CMAKE_EXTRA_GENERATOR
             \ CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES
             \ CMAKE_FIND_APPBUNDLE
+            \ CMAKE_FIND_DEBUG_MODE
             \ CMAKE_FIND_FRAMEWORK
             \ CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX
             \ CMAKE_FIND_LIBRARY_PREFIXES
@@ -960,6 +1046,7 @@
             \ CMAKE_FIND_USE_PACKAGE_REGISTRY
             \ CMAKE_FIND_USE_PACKAGE_ROOT_PATH
             \ CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH
+            \ CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY
             \ CMAKE_FOLDER
             \ CMAKE_FRAMEWORK
             \ CMAKE_FRAMEWORK_PATH
@@ -1014,6 +1101,9 @@
             \ CMAKE_Fortran_LINKER_WRAPPER_FLAG
             \ CMAKE_Fortran_LINKER_WRAPPER_FLAG_SEP
             \ CMAKE_Fortran_LINK_EXECUTABLE
+            \ CMAKE_Fortran_LINK_LIBRARY_FILE_FLAG
+            \ CMAKE_Fortran_LINK_LIBRARY_FLAG
+            \ CMAKE_Fortran_LINK_LIBRARY_SUFFIX
             \ CMAKE_Fortran_MODDIR_DEFAULT
             \ CMAKE_Fortran_MODDIR_FLAG
             \ CMAKE_Fortran_MODOUT_FLAG
@@ -1061,11 +1151,14 @@
             \ CMAKE_INSTALL_NAME_DIR
             \ CMAKE_INSTALL_PREFIX
             \ CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT
+            \ CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH
             \ CMAKE_INSTALL_RPATH
             \ CMAKE_INSTALL_RPATH_USE_LINK_PATH
             \ CMAKE_INTERNAL_PLATFORM_ABI
             \ CMAKE_INTERPROCEDURAL_OPTIMIZATION
             \ CMAKE_IOS_INSTALL_COMBINED
+            \ CMAKE_ISPC_HEADER_DIRECTORY
+            \ CMAKE_ISPC_INSTRUCTION_SETS
             \ CMAKE_JOB_POOLS
             \ CMAKE_JOB_POOL_COMPILE
             \ CMAKE_JOB_POOL_LINK
@@ -1120,6 +1213,9 @@
             \ CMAKE_Java_LINKER_WRAPPER_FLAG
             \ CMAKE_Java_LINKER_WRAPPER_FLAG_SEP
             \ CMAKE_Java_LINK_EXECUTABLE
+            \ CMAKE_Java_LINK_LIBRARY_FILE_FLAG
+            \ CMAKE_Java_LINK_LIBRARY_FLAG
+            \ CMAKE_Java_LINK_LIBRARY_SUFFIX
             \ CMAKE_Java_OUTPUT_EXTENSION
             \ CMAKE_Java_PLATFORM_ID
             \ CMAKE_Java_SIMULATE_ID
@@ -1150,6 +1246,10 @@
             \ CMAKE_MAKE_PROGRAM
             \ CMAKE_MATCH_COUNT
             \ CMAKE_MAXIMUM_RECURSION_DEPTH
+            \ CMAKE_MESSAGE_CONTEXT
+            \ CMAKE_MESSAGE_CONTEXT_SHOW
+            \ CMAKE_MESSAGE_INDENT
+            \ CMAKE_MESSAGE_LOG_LEVEL
             \ CMAKE_MFC_FLAG
             \ CMAKE_MINIMUM_REQUIRED_VERSION
             \ CMAKE_MINOR_VERSION
@@ -1164,12 +1264,25 @@
             \ CMAKE_NOT_USING_CONFIG_FLAGS
             \ CMAKE_NO_BUILTIN_CHRPATH
             \ CMAKE_NO_SYSTEM_FROM_IMPORTED
+            \ CMAKE_OBJCXX_CLANG_TIDY
+            \ CMAKE_OBJCXX_EXTENSIONS
+            \ CMAKE_OBJCXX_LINKER_LAUNCHER
+            \ CMAKE_OBJCXX_STANDARD
+            \ CMAKE_OBJCXX_STANDARD_REQUIRED
+            \ CMAKE_OBJC_CLANG_TIDY
+            \ CMAKE_OBJC_EXTENSIONS
+            \ CMAKE_OBJC_LINKER_LAUNCHER
+            \ CMAKE_OBJC_STANDARD
+            \ CMAKE_OBJC_STANDARD_REQUIRED
             \ CMAKE_OBJECT_PATH_MAX
+            \ CMAKE_OPTIMIZE_DEPENDENCIES
             \ CMAKE_OSX_ARCHITECTURES
             \ CMAKE_OSX_DEPLOYMENT_TARGET
             \ CMAKE_OSX_SYSROOT
             \ CMAKE_PARENT_LIST_FILE
             \ CMAKE_PATCH_VERSION
+            \ CMAKE_PCH_INSTANTIATE_TEMPLATES
+            \ CMAKE_PCH_WARN_INVALID
             \ CMAKE_PDB_OUTPUT_DIRECTORY
             \ CMAKE_POSITION_INDEPENDENT_CODE
             \ CMAKE_PREFIX_PATH
@@ -1235,6 +1348,9 @@
             \ CMAKE_RC_LINKER_WRAPPER_FLAG
             \ CMAKE_RC_LINKER_WRAPPER_FLAG_SEP
             \ CMAKE_RC_LINK_EXECUTABLE
+            \ CMAKE_RC_LINK_LIBRARY_FILE_FLAG
+            \ CMAKE_RC_LINK_LIBRARY_FLAG
+            \ CMAKE_RC_LINK_LIBRARY_SUFFIX
             \ CMAKE_RC_OUTPUT_EXTENSION
             \ CMAKE_RC_PLATFORM_ID
             \ CMAKE_RC_SIMULATE_ID
@@ -1334,7 +1450,11 @@
             \ CMAKE_Swift_LINKER_WRAPPER_FLAG
             \ CMAKE_Swift_LINKER_WRAPPER_FLAG_SEP
             \ CMAKE_Swift_LINK_EXECUTABLE
+            \ CMAKE_Swift_LINK_LIBRARY_FILE_FLAG
+            \ CMAKE_Swift_LINK_LIBRARY_FLAG
+            \ CMAKE_Swift_LINK_LIBRARY_SUFFIX
             \ CMAKE_Swift_MODULE_DIRECTORY
+            \ CMAKE_Swift_NUM_THREADS
             \ CMAKE_Swift_OUTPUT_EXTENSION
             \ CMAKE_Swift_PLATFORM_ID
             \ CMAKE_Swift_SIMULATE_ID
@@ -1349,6 +1469,8 @@
             \ CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
             \ CMAKE_TRY_COMPILE_TARGET_TYPE
             \ CMAKE_TWEAK_VERSION
+            \ CMAKE_UNITY_BUILD
+            \ CMAKE_UNITY_BUILD_BATCH_SIZE
             \ CMAKE_USER_MAKE_RULES_OVERRIDE
             \ CMAKE_USER_MAKE_RULES_OVERRIDE_ASM
             \ CMAKE_USER_MAKE_RULES_OVERRIDE_ASM_MASM
@@ -1377,6 +1499,7 @@
             \ CMAKE_VS_PLATFORM_NAME_DEFAULT
             \ CMAKE_VS_PLATFORM_TOOLSET
             \ CMAKE_VS_PLATFORM_TOOLSET_CUDA
+            \ CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR
             \ CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE
             \ CMAKE_VS_PLATFORM_TOOLSET_VERSION
             \ CMAKE_VS_SDK_EXCLUDE_DIRECTORIES
@@ -1387,19 +1510,24 @@
             \ CMAKE_VS_SDK_REFERENCE_DIRECTORIES
             \ CMAKE_VS_SDK_SOURCE_DIRECTORIES
             \ CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION
+            \ CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM
             \ CMAKE_VS_WINRT_BY_DEFAULT
             \ CMAKE_WARN_DEPRECATED
             \ CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
             \ CMAKE_WIN32_EXECUTABLE
             \ CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
+            \ CMAKE_XCODE_BUILD_SYSTEM
             \ CMAKE_XCODE_GENERATE_SCHEME
             \ CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY
+            \ CMAKE_XCODE_LINK_BUILD_PHASE_MODE
             \ CMAKE_XCODE_PLATFORM_TOOLSET
             \ CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER
             \ CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
+            \ CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
             \ CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
             \ CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
             \ CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
+            \ CMAKE_XCODE_SCHEME_ENVIRONMENT
             \ CMAKE_XCODE_SCHEME_GUARD_MALLOC
             \ CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
             \ CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES
@@ -1409,13 +1537,13 @@
             \ CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP
             \ CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
             \ CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
+            \ CMAKE_XCODE_SCHEME_WORKING_DIRECTORY
             \ CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS
             \ CPACK_ABSOLUTE_DESTINATION_FILES
             \ CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY
             \ CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
             \ CPACK_INCLUDE_TOPLEVEL_DIRECTORY
             \ CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
-            \ CPACK_INSTALL_SCRIPT
             \ CPACK_PACKAGING_INSTALL_PREFIX
             \ CPACK_SET_DESTDIR
             \ CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
@@ -1475,6 +1603,7 @@
             \ CTEST_P4_COMMAND
             \ CTEST_P4_OPTIONS
             \ CTEST_P4_UPDATE_OPTIONS
+            \ CTEST_RESOURCE_SPEC_FILE
             \ CTEST_RUN_CURRENT_SCRIPT
             \ CTEST_SCP_COMMAND
             \ CTEST_SITE
@@ -1492,6 +1621,283 @@
             \ CTEST_UPDATE_VERSION_OVERRIDE
             \ CTEST_USE_LAUNCHERS
             \ CYGWIN
+            \ DOXYGEN_ABBREVIATE_BRIEF
+            \ DOXYGEN_ALIASES
+            \ DOXYGEN_ALLEXTERNALS
+            \ DOXYGEN_ALLOW_UNICODE_NAMES
+            \ DOXYGEN_ALPHABETICAL_INDEX
+            \ DOXYGEN_ALWAYS_DETAILED_SEC
+            \ DOXYGEN_AUTOLINK_SUPPORT
+            \ DOXYGEN_BINARY_TOC
+            \ DOXYGEN_BRIEF_MEMBER_DESC
+            \ DOXYGEN_BUILTIN_STL_SUPPORT
+            \ DOXYGEN_CALLER_GRAPH
+            \ DOXYGEN_CALL_GRAPH
+            \ DOXYGEN_CASE_SENSE_NAMES
+            \ DOXYGEN_CHM_FILE
+            \ DOXYGEN_CHM_INDEX_ENCODING
+            \ DOXYGEN_CITE_BIB_FILES
+            \ DOXYGEN_CLANG_ASSISTED_PARSING
+            \ DOXYGEN_CLANG_DATABASE_PATH
+            \ DOXYGEN_CLANG_OPTIONS
+            \ DOXYGEN_CLASS_DIAGRAMS
+            \ DOXYGEN_CLASS_GRAPH
+            \ DOXYGEN_COLLABORATION_GRAPH
+            \ DOXYGEN_COLS_IN_ALPHA_INDEX
+            \ DOXYGEN_COMPACT_LATEX
+            \ DOXYGEN_COMPACT_RTF
+            \ DOXYGEN_CPP_CLI_SUPPORT
+            \ DOXYGEN_CREATE_SUBDIRS
+            \ DOXYGEN_DIAFILE_DIRS
+            \ DOXYGEN_DIA_PATH
+            \ DOXYGEN_DIRECTORY_GRAPH
+            \ DOXYGEN_DISABLE_INDEX
+            \ DOXYGEN_DISTRIBUTE_GROUP_DOC
+            \ DOXYGEN_DOCBOOK_OUTPUT
+            \ DOXYGEN_DOCBOOK_PROGRAMLISTING
+            \ DOXYGEN_DOCSET_BUNDLE_ID
+            \ DOXYGEN_DOCSET_FEEDNAME
+            \ DOXYGEN_DOCSET_PUBLISHER_ID
+            \ DOXYGEN_DOCSET_PUBLISHER_NAME
+            \ DOXYGEN_DOTFILE_DIRS
+            \ DOXYGEN_DOT_CLEANUP
+            \ DOXYGEN_DOT_FONTNAME
+            \ DOXYGEN_DOT_FONTPATH
+            \ DOXYGEN_DOT_FONTSIZE
+            \ DOXYGEN_DOT_GRAPH_MAX_NODES
+            \ DOXYGEN_DOT_IMAGE_FORMAT
+            \ DOXYGEN_DOT_MULTI_TARGETS
+            \ DOXYGEN_DOT_NUM_THREADS
+            \ DOXYGEN_DOT_PATH
+            \ DOXYGEN_DOT_TRANSPARENT
+            \ DOXYGEN_DOXYFILE_ENCODING
+            \ DOXYGEN_ECLIPSE_DOC_ID
+            \ DOXYGEN_ENABLED_SECTIONS
+            \ DOXYGEN_ENABLE_PREPROCESSING
+            \ DOXYGEN_ENUM_VALUES_PER_LINE
+            \ DOXYGEN_EXAMPLE_PATH
+            \ DOXYGEN_EXAMPLE_PATTERNS
+            \ DOXYGEN_EXAMPLE_RECURSIVE
+            \ DOXYGEN_EXCLUDE
+            \ DOXYGEN_EXCLUDE_PATTERNS
+            \ DOXYGEN_EXCLUDE_SYMBOLS
+            \ DOXYGEN_EXCLUDE_SYMLINKS
+            \ DOXYGEN_EXPAND_AS_DEFINED
+            \ DOXYGEN_EXPAND_ONLY_PREDEF
+            \ DOXYGEN_EXTENSION_MAPPING
+            \ DOXYGEN_EXTERNAL_GROUPS
+            \ DOXYGEN_EXTERNAL_PAGES
+            \ DOXYGEN_EXTERNAL_SEARCH
+            \ DOXYGEN_EXTERNAL_SEARCH_ID
+            \ DOXYGEN_EXTRACT_ALL
+            \ DOXYGEN_EXTRACT_ANON_NSPACES
+            \ DOXYGEN_EXTRACT_LOCAL_CLASSES
+            \ DOXYGEN_EXTRACT_LOCAL_METHODS
+            \ DOXYGEN_EXTRACT_PACKAGE
+            \ DOXYGEN_EXTRACT_PRIVATE
+            \ DOXYGEN_EXTRACT_PRIV_VIRTUAL
+            \ DOXYGEN_EXTRACT_STATIC
+            \ DOXYGEN_EXTRA_PACKAGES
+            \ DOXYGEN_EXTRA_SEARCH_MAPPINGS
+            \ DOXYGEN_EXT_LINKS_IN_WINDOW
+            \ DOXYGEN_FILE_PATTERNS
+            \ DOXYGEN_FILE_VERSION_FILTER
+            \ DOXYGEN_FILTER_PATTERNS
+            \ DOXYGEN_FILTER_SOURCE_FILES
+            \ DOXYGEN_FILTER_SOURCE_PATTERNS
+            \ DOXYGEN_FORCE_LOCAL_INCLUDES
+            \ DOXYGEN_FORMULA_FONTSIZE
+            \ DOXYGEN_FORMULA_TRANSPARENT
+            \ DOXYGEN_FULL_PATH_NAMES
+            \ DOXYGEN_GENERATE_AUTOGEN_DEF
+            \ DOXYGEN_GENERATE_BUGLIST
+            \ DOXYGEN_GENERATE_CHI
+            \ DOXYGEN_GENERATE_DEPRECATEDLIST
+            \ DOXYGEN_GENERATE_DOCBOOK
+            \ DOXYGEN_GENERATE_DOCSET
+            \ DOXYGEN_GENERATE_ECLIPSEHELP
+            \ DOXYGEN_GENERATE_HTML
+            \ DOXYGEN_GENERATE_HTMLHELP
+            \ DOXYGEN_GENERATE_LATEX
+            \ DOXYGEN_GENERATE_LEGEND
+            \ DOXYGEN_GENERATE_MAN
+            \ DOXYGEN_GENERATE_PERLMOD
+            \ DOXYGEN_GENERATE_QHP
+            \ DOXYGEN_GENERATE_RTF
+            \ DOXYGEN_GENERATE_TAGFILE
+            \ DOXYGEN_GENERATE_TESTLIST
+            \ DOXYGEN_GENERATE_TODOLIST
+            \ DOXYGEN_GENERATE_TREEVIEW
+            \ DOXYGEN_GENERATE_XML
+            \ DOXYGEN_GRAPHICAL_HIERARCHY
+            \ DOXYGEN_GROUP_GRAPHS
+            \ DOXYGEN_GROUP_NESTED_COMPOUNDS
+            \ DOXYGEN_HAVE_DOT
+            \ DOXYGEN_HHC_LOCATION
+            \ DOXYGEN_HIDE_COMPOUND_REFERENCE
+            \ DOXYGEN_HIDE_FRIEND_COMPOUNDS
+            \ DOXYGEN_HIDE_IN_BODY_DOCS
+            \ DOXYGEN_HIDE_SCOPE_NAMES
+            \ DOXYGEN_HIDE_UNDOC_CLASSES
+            \ DOXYGEN_HIDE_UNDOC_MEMBERS
+            \ DOXYGEN_HIDE_UNDOC_RELATIONS
+            \ DOXYGEN_HTML_COLORSTYLE_GAMMA
+            \ DOXYGEN_HTML_COLORSTYLE_HUE
+            \ DOXYGEN_HTML_COLORSTYLE_SAT
+            \ DOXYGEN_HTML_DYNAMIC_MENUS
+            \ DOXYGEN_HTML_DYNAMIC_SECTIONS
+            \ DOXYGEN_HTML_EXTRA_FILES
+            \ DOXYGEN_HTML_EXTRA_STYLESHEET
+            \ DOXYGEN_HTML_FILE_EXTENSION
+            \ DOXYGEN_HTML_FOOTER
+            \ DOXYGEN_HTML_HEADER
+            \ DOXYGEN_HTML_INDEX_NUM_ENTRIES
+            \ DOXYGEN_HTML_OUTPUT
+            \ DOXYGEN_HTML_STYLESHEET
+            \ DOXYGEN_HTML_TIMESTAMP
+            \ DOXYGEN_IDL_PROPERTY_SUPPORT
+            \ DOXYGEN_IGNORE_PREFIX
+            \ DOXYGEN_IMAGE_PATH
+            \ DOXYGEN_INCLUDED_BY_GRAPH
+            \ DOXYGEN_INCLUDE_FILE_PATTERNS
+            \ DOXYGEN_INCLUDE_GRAPH
+            \ DOXYGEN_INCLUDE_PATH
+            \ DOXYGEN_INHERIT_DOCS
+            \ DOXYGEN_INLINE_GROUPED_CLASSES
+            \ DOXYGEN_INLINE_INFO
+            \ DOXYGEN_INLINE_INHERITED_MEMB
+            \ DOXYGEN_INLINE_SIMPLE_STRUCTS
+            \ DOXYGEN_INLINE_SOURCES
+            \ DOXYGEN_INPUT
+            \ DOXYGEN_INPUT_ENCODING
+            \ DOXYGEN_INPUT_FILTER
+            \ DOXYGEN_INTERACTIVE_SVG
+            \ DOXYGEN_INTERNAL_DOCS
+            \ DOXYGEN_JAVADOC_AUTOBRIEF
+            \ DOXYGEN_JAVADOC_BANNER
+            \ DOXYGEN_LATEX_BATCHMODE
+            \ DOXYGEN_LATEX_BIB_STYLE
+            \ DOXYGEN_LATEX_CMD_NAME
+            \ DOXYGEN_LATEX_EMOJI_DIRECTORY
+            \ DOXYGEN_LATEX_EXTRA_FILES
+            \ DOXYGEN_LATEX_EXTRA_STYLESHEET
+            \ DOXYGEN_LATEX_FOOTER
+            \ DOXYGEN_LATEX_HEADER
+            \ DOXYGEN_LATEX_HIDE_INDICES
+            \ DOXYGEN_LATEX_MAKEINDEX_CMD
+            \ DOXYGEN_LATEX_OUTPUT
+            \ DOXYGEN_LATEX_SOURCE_CODE
+            \ DOXYGEN_LATEX_TIMESTAMP
+            \ DOXYGEN_LAYOUT_FILE
+            \ DOXYGEN_LOOKUP_CACHE_SIZE
+            \ DOXYGEN_MACRO_EXPANSION
+            \ DOXYGEN_MAKEINDEX_CMD_NAME
+            \ DOXYGEN_MAN_EXTENSION
+            \ DOXYGEN_MAN_LINKS
+            \ DOXYGEN_MAN_OUTPUT
+            \ DOXYGEN_MAN_SUBDIR
+            \ DOXYGEN_MARKDOWN_SUPPORT
+            \ DOXYGEN_MATHJAX_CODEFILE
+            \ DOXYGEN_MATHJAX_EXTENSIONS
+            \ DOXYGEN_MATHJAX_FORMAT
+            \ DOXYGEN_MATHJAX_RELPATH
+            \ DOXYGEN_MAX_DOT_GRAPH_DEPTH
+            \ DOXYGEN_MAX_INITIALIZER_LINES
+            \ DOXYGEN_MSCFILE_DIRS
+            \ DOXYGEN_MULTILINE_CPP_IS_BRIEF
+            \ DOXYGEN_OPTIMIZE_FOR_FORTRAN
+            \ DOXYGEN_OPTIMIZE_OUTPUT_FOR_C
+            \ DOXYGEN_OPTIMIZE_OUTPUT_JAVA
+            \ DOXYGEN_OPTIMIZE_OUTPUT_SLICE
+            \ DOXYGEN_OPTIMIZE_OUTPUT_VHDL
+            \ DOXYGEN_OUTPUT_DIRECTORY
+            \ DOXYGEN_OUTPUT_LANGUAGE
+            \ DOXYGEN_OUTPUT_TEXT_DIRECTION
+            \ DOXYGEN_PAPER_TYPE
+            \ DOXYGEN_PDF_HYPERLINKS
+            \ DOXYGEN_PERLMOD_LATEX
+            \ DOXYGEN_PERLMOD_MAKEVAR_PREFIX
+            \ DOXYGEN_PERLMOD_PRETTY
+            \ DOXYGEN_PLANTUML_CFG_FILE
+            \ DOXYGEN_PLANTUML_INCLUDE_PATH
+            \ DOXYGEN_PLANTUML_JAR_PATH
+            \ DOXYGEN_PREDEFINED
+            \ DOXYGEN_PROJECT_BRIEF
+            \ DOXYGEN_PROJECT_LOGO
+            \ DOXYGEN_PROJECT_NAME
+            \ DOXYGEN_PROJECT_NUMBER
+            \ DOXYGEN_QCH_FILE
+            \ DOXYGEN_QHG_LOCATION
+            \ DOXYGEN_QHP_CUST_FILTER_ATTRS
+            \ DOXYGEN_QHP_CUST_FILTER_NAME
+            \ DOXYGEN_QHP_NAMESPACE
+            \ DOXYGEN_QHP_SECT_FILTER_ATTRS
+            \ DOXYGEN_QHP_VIRTUAL_FOLDER
+            \ DOXYGEN_QT_AUTOBRIEF
+            \ DOXYGEN_QUIET
+            \ DOXYGEN_RECURSIVE
+            \ DOXYGEN_REFERENCED_BY_RELATION
+            \ DOXYGEN_REFERENCES_LINK_SOURCE
+            \ DOXYGEN_REFERENCES_RELATION
+            \ DOXYGEN_REPEAT_BRIEF
+            \ DOXYGEN_RTF_EXTENSIONS_FILE
+            \ DOXYGEN_RTF_HYPERLINKS
+            \ DOXYGEN_RTF_OUTPUT
+            \ DOXYGEN_RTF_SOURCE_CODE
+            \ DOXYGEN_RTF_STYLESHEET_FILE
+            \ DOXYGEN_SEARCHDATA_FILE
+            \ DOXYGEN_SEARCHENGINE
+            \ DOXYGEN_SEARCHENGINE_URL
+            \ DOXYGEN_SEARCH_INCLUDES
+            \ DOXYGEN_SEPARATE_MEMBER_PAGES
+            \ DOXYGEN_SERVER_BASED_SEARCH
+            \ DOXYGEN_SHORT_NAMES
+            \ DOXYGEN_SHOW_FILES
+            \ DOXYGEN_SHOW_GROUPED_MEMB_INC
+            \ DOXYGEN_SHOW_INCLUDE_FILES
+            \ DOXYGEN_SHOW_NAMESPACES
+            \ DOXYGEN_SHOW_USED_FILES
+            \ DOXYGEN_SIP_SUPPORT
+            \ DOXYGEN_SKIP_FUNCTION_MACROS
+            \ DOXYGEN_SORT_BRIEF_DOCS
+            \ DOXYGEN_SORT_BY_SCOPE_NAME
+            \ DOXYGEN_SORT_GROUP_NAMES
+            \ DOXYGEN_SORT_MEMBERS_CTORS_1ST
+            \ DOXYGEN_SORT_MEMBER_DOCS
+            \ DOXYGEN_SOURCE_BROWSER
+            \ DOXYGEN_SOURCE_TOOLTIPS
+            \ DOXYGEN_STRICT_PROTO_MATCHING
+            \ DOXYGEN_STRIP_CODE_COMMENTS
+            \ DOXYGEN_STRIP_FROM_INC_PATH
+            \ DOXYGEN_STRIP_FROM_PATH
+            \ DOXYGEN_SUBGROUPING
+            \ DOXYGEN_TAB_SIZE
+            \ DOXYGEN_TAGFILES
+            \ DOXYGEN_TCL_SUBST
+            \ DOXYGEN_TEMPLATE_RELATIONS
+            \ DOXYGEN_TOC_EXPAND
+            \ DOXYGEN_TOC_INCLUDE_HEADINGS
+            \ DOXYGEN_TREEVIEW_WIDTH
+            \ DOXYGEN_TYPEDEF_HIDES_STRUCT
+            \ DOXYGEN_UML_LIMIT_NUM_FIELDS
+            \ DOXYGEN_UML_LOOK
+            \ DOXYGEN_USE_HTAGS
+            \ DOXYGEN_USE_MATHJAX
+            \ DOXYGEN_USE_MDFILE_AS_MAINPAGE
+            \ DOXYGEN_USE_PDFLATEX
+            \ DOXYGEN_VERBATIM_HEADERS
+            \ DOXYGEN_VERBATIM_VARS
+            \ DOXYGEN_VERSION
+            \ DOXYGEN_WARNINGS
+            \ DOXYGEN_WARN_AS_ERROR
+            \ DOXYGEN_WARN_FORMAT
+            \ DOXYGEN_WARN_IF_DOC_ERROR
+            \ DOXYGEN_WARN_IF_UNDOCUMENTED
+            \ DOXYGEN_WARN_LOGFILE
+            \ DOXYGEN_WARN_NO_PARAMDOC
+            \ DOXYGEN_XML_NS_MEMB_FILE_SCOPE
+            \ DOXYGEN_XML_OUTPUT
+            \ DOXYGEN_XML_PROGRAMLISTING
             \ ENV
             \ EXECUTABLE_OUTPUT_PATH
             \ GHS-MULTI
@@ -1540,9 +1946,11 @@
             \ BUILD_BYPRODUCTS
             \ BUILD_COMMAND
             \ BUILD_IN_SOURCE
+            \ CHECKOUT
             \ CMAKE_ARGS
             \ CMAKE_CACHE_ARGS
             \ CMAKE_CACHE_DEFAULT_ARGS
+            \ CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY
             \ CMAKE_TLS_CAINFO
             \ CMAKE_TLS_VERIFY
             \ COMMENT
@@ -1567,14 +1975,17 @@
             \ EP_STEP_TARGETS
             \ EP_UPDATE_DISCONNECTED
             \ EXCLUDE_FROM_ALL
+            \ FALSE
             \ FORCE
             \ GHS
             \ GIT_CONFIG
             \ GIT_PROGRESS
             \ GIT_REMOTE_NAME
+            \ GIT_REMOTE_UPDATE_STRATEGY
             \ GIT_REPOSITORY
             \ GIT_SHALLOW
             \ GIT_SUBMODULES
+            \ GIT_SUBMODULES_RECURSE
             \ GIT_TAG
             \ HG_REPOSITORY
             \ HG_TAG
@@ -1582,6 +1993,7 @@
             \ HTTP_PASSWORD
             \ HTTP_USERNAME
             \ IGNORED
+            \ INACTIVITY_TIMEOUT
             \ INDEPENDENT_STEP_TARGETS
             \ INSTALL_COMMAND
             \ INSTALL_DIR
@@ -1608,6 +2020,8 @@
             \ PATCH_COMMAND
             \ PREFIX
             \ PROPERTY
+            \ REBASE
+            \ REBASE_CHECKOUT
             \ REQUIRED
             \ SOURCE_DIR
             \ SOURCE_SUBDIR
@@ -1632,6 +2046,7 @@
             \ UPDATE_DISCONNECTED
             \ URL
             \ URL_HASH
+            \ URL_MD5
             \ USES_TERMINAL_BUILD
             \ USES_TERMINAL_CONFIGURE
             \ USES_TERMINAL_DOWNLOAD
@@ -1670,12 +2085,16 @@
             \ MAIN_DEPENDENCY
             \ NOT
             \ OUTPUT
+            \ PATH
             \ POST_BUILD
             \ PRE_BUILD
             \ PRE_LINK
             \ SYMBOLIC
             \ TARGET_FILE
+            \ TARGET_LINKER_FILE
+            \ TARGET_PDB_FILE
             \ TARGET_PROPERTY
+            \ TARGET_SONAME_FILE
             \ USES_TERMINAL
             \ VERBATIM
             \ WORKING_DIRECTORY
@@ -1694,8 +2113,13 @@
             \ JOB_POOL
             \ JOB_POOLS
             \ JOIN
+            \ PATH
             \ SOURCES
+            \ TARGET_FILE
+            \ TARGET_LINKER_FILE
+            \ TARGET_PDB_FILE
             \ TARGET_PROPERTY
+            \ TARGET_SONAME_FILE
             \ USES_TERMINAL
             \ VERBATIM
             \ WORKING_DIRECTORY
@@ -1709,6 +2133,7 @@
 
 syn keyword cmakeKWadd_executable contained
             \ ALIAS
+            \ ALIAS_GLOBAL
             \ CONFIG
             \ EXCLUDE_FROM_ALL
             \ GLOBAL
@@ -1724,6 +2149,7 @@
 
 syn keyword cmakeKWadd_library contained
             \ ALIAS
+            \ ALIAS_GLOBAL
             \ ARCHIVE_OUTPUT_DIRECTORY
             \ CLI
             \ CONFIG
@@ -1734,11 +2160,15 @@
             \ HEADER_FILE_ONLY
             \ IMPORTED
             \ IMPORTED_
+            \ IMPORTED_IMPLIB
+            \ IMPORTED_IMPLIB_
             \ IMPORTED_LOCATION
             \ IMPORTED_LOCATION_
             \ IMPORTED_OBJECTS
             \ IMPORTED_OBJECTS_
+            \ INTERFACE
             \ INTERFACE_
+            \ INTERFACE_SOURCES
             \ LIBRARY_OUTPUT_DIRECTORY
             \ MODULE
             \ OBJECT
@@ -1748,17 +2178,23 @@
             \ POST_BUILD
             \ PRE_BUILD
             \ PRE_LINK
-            \ PUBLIC_HEADER
+            \ PRIVATE
+            \ PUBLIC
             \ RUNTIME_OUTPUT_DIRECTORY
             \ SHARED
+            \ SOURCES
             \ STATIC
             \ TARGET_OBJECTS
             \ UNKNOWN
 
 syn keyword cmakeKWadd_link_options contained
             \ CMAKE_
+            \ CUDA_RESOLVE_DEVICE_SYMBOLS
+            \ CUDA_SEPARABLE_COMPILATION
+            \ DEVICE_LINK
             \ GCC
             \ GNU
+            \ HOST_LINK
             \ LANG
             \ LINKER
             \ LINK_OPTIONS
@@ -1774,6 +2210,7 @@
 syn keyword cmakeKWadd_test contained
             \ BUILD_TESTING
             \ COMMAND
+            \ COMMAND_EXPAND_LISTS
             \ CONFIGURATIONS
             \ FAIL_REGULAR_EXPRESSION
             \ NAME
@@ -1815,6 +2252,23 @@
             \ TOTAL_PHYSICAL_MEMORY
             \ TOTAL_VIRTUAL_MEMORY
 
+syn keyword cmakeKWcmake_language contained
+            \ AND
+            \ CALL
+            \ CANCEL_CALL
+            \ CODE
+            \ DEFER
+            \ DIRECTORY
+            \ EVAL
+            \ FALSE
+            \ GET_CALL_IDS
+            \ ID
+            \ ID_VAR
+            \ OR
+            \ STATUS
+            \ TRUE
+            \ WRITE
+
 syn keyword cmakeKWcmake_minimum_required contained
             \ FATAL_ERROR
             \ VERSION
@@ -1844,6 +2298,72 @@
             \ _KEYWORDS_MISSING_VALUES
             \ _UNPARSED_ARGUMENTS
 
+syn keyword cmakeKWcmake_path contained
+            \ ABSOLUTE_PATH
+            \ AND
+            \ APPEND
+            \ BASE_DIRECTORY
+            \ CMAKE_PATH
+            \ COMPARE
+            \ CONCAT
+            \ CONVERT
+            \ ELSEIF
+            \ ENDIF
+            \ EXTENSION
+            \ EXTENSION_DEF
+            \ FALSE
+            \ FILENAME_DEF
+            \ GET
+            \ GET_EXTENSION
+            \ GET_FILENAME
+            \ GET_PARENT_PATH
+            \ GET_RELATIVE_PATH
+            \ GET_ROOT_DIRECTORY
+            \ GET_ROOT_NAME
+            \ GET_ROOT_PATH
+            \ GET_STEM
+            \ HASH
+            \ HAS_EXTENSION
+            \ HAS_FILENAME
+            \ HAS_PARENT_PATH
+            \ HAS_RELATIVE_PATH
+            \ HAS_ROOT_DIRECTORY
+            \ HAS_ROOT_NAME
+            \ HAS_ROOT_PATH
+            \ HAS_STEM
+            \ IF
+            \ IS_ABSOLUTE
+            \ IS_PREFIX
+            \ IS_RELATIVE
+            \ LAST_ONLY
+            \ MATCHES
+            \ NATIVE_PATH
+            \ NORMALIZE
+            \ NORMAL_PATH
+            \ NOT
+            \ NOT_EQUAL
+            \ OP
+            \ OS
+            \ OUTPUT_VARIABLE
+            \ PARENT_PATH
+            \ PROXIMATE_PATH
+            \ REAL_PATH
+            \ RELATIVE_PATH
+            \ REMOVE_EXTENSION
+            \ REMOVE_FILENAME
+            \ REPLACE_EXTENSION
+            \ REPLACE_FILENAME
+            \ RETURN
+            \ ROOT_DIRECTORY
+            \ ROOT_NAME
+            \ ROOT_PATH
+            \ STEM
+            \ STREQUAL
+            \ TO_CMAKE_PATH_LIST
+            \ TO_NATIVE_PATH_LIST
+            \ TRUE
+            \ XOR
+
 syn keyword cmakeKWcmake_policy contained
             \ CMAKE_POLICY_DEFAULT_CMP
             \ CMP
@@ -1861,10 +2381,13 @@
             \ CRLF
             \ DOS
             \ ESCAPE_QUOTES
+            \ FILE_PERMISSIONS
             \ FOO_ENABLE
             \ FOO_STRING
             \ LF
             \ NEWLINE_STYLE
+            \ NO_SOURCE_PERMISSIONS
+            \ USE_SOURCE_PERMISSIONS
             \ VAR
 
 syn keyword cmakeKWcreate_test_sourcelist contained
@@ -1934,6 +2457,7 @@
 
 syn keyword cmakeKWctest_start contained
             \ APPEND
+            \ GROUP
             \ QUIET
             \ TAG
             \ TRACK
@@ -1956,6 +2480,7 @@
             \ SUBMIT_URL
 
 syn keyword cmakeKWctest_test contained
+            \ AFTER_TIMEOUT
             \ APPEND
             \ BUILD
             \ CAPTURE_CMAKE_ERROR
@@ -1971,12 +2496,17 @@
             \ ON
             \ PARALLEL_LEVEL
             \ QUIET
+            \ REPEAT
+            \ RESOURCE_SPEC_FILE
             \ RETURN_VALUE
             \ SCHEDULE_RANDOM
             \ START
+            \ STOP_ON_FAILURE
             \ STOP_TIME
             \ STRIDE
             \ TEST_LOAD
+            \ UNTIL_FAIL
+            \ UNTIL_PASS
 
 syn keyword cmakeKWctest_update contained
             \ CAPTURE_CMAKE_ERROR
@@ -2004,9 +2534,18 @@
             \ TEST
             \ VARIABLE
 
+syn keyword cmakeKWdoxygen_add_docs contained
+            \ ALL
+            \ COMMENT
+            \ USE_STAMP_FILE
+            \ WORKING_DIRECTORY
+
 syn keyword cmakeKWenable_language contained
             \ ASM
             \ CUDA
+            \ ISPC
+            \ OBJC
+            \ OBJCXX
             \ OPTIONAL
 
 syn keyword cmakeKWenable_testing contained
@@ -2019,15 +2558,20 @@
 
 syn keyword cmakeKWexecute_process contained
             \ ANSI
+            \ ANY
             \ AUTO
             \ COMMAND
             \ COMMAND_ECHO
+            \ COMMAND_ERROR_IS_FATAL
+            \ ECHO_ERROR_VARIABLE
+            \ ECHO_OUTPUT_VARIABLE
             \ ENCODING
             \ ERROR_FILE
             \ ERROR_QUIET
             \ ERROR_STRIP_TRAILING_WHITESPACE
             \ ERROR_VARIABLE
             \ INPUT_FILE
+            \ LAST
             \ NONE
             \ OEM
             \ OUTPUT_FILE
@@ -2069,63 +2613,107 @@
 syn keyword cmakeKWfile contained
             \ ALGO
             \ APPEND
+            \ ARCHIVE_CREATE
+            \ ARCHIVE_EXTRACT
             \ ASCII
+            \ BASE_DIRECTORY
+            \ BUNDLE_EXECUTABLE
+            \ CHMOD
+            \ CHMOD_RECURSE
+            \ CMAKE_GET_RUNTIME_DEPENDENCIES_COMMAND
+            \ CMAKE_GET_RUNTIME_DEPENDENCIES_PLATFORM
+            \ CMAKE_GET_RUNTIME_DEPENDENCIES_TOOL
+            \ CMAKE_OBJDUMP
             \ CMAKE_TLS_CAINFO
             \ CMAKE_TLS_VERIFY
+            \ CODE
+            \ COMPILE_FEATURES
+            \ COMPRESSION
+            \ COMPRESSION_LEVEL
             \ CONDITION
-            \ CONFIG
+            \ CONFIGURE
             \ CONFIGURE_DEPENDS
+            \ CONFLICTING_DEPENDENCIES_PREFIX
             \ CONTENT
+            \ CONVERT
             \ COPY
             \ COPY_ON_ERROR
             \ CREATE_LINK
+            \ CRLF
             \ DESTINATION
+            \ DIRECTORIES
             \ DIRECTORY_PERMISSIONS
+            \ DLL
+            \ DOS
             \ DOWNLOAD
             \ ENCODING
-            \ EXCLUDE
+            \ ESCAPE_QUOTES
+            \ EXECUTABLES
             \ EXPECTED_HASH
             \ FILES_MATCHING
             \ FILE_PERMISSIONS
             \ FOLLOW_SYMLINKS
             \ FOLLOW_SYMLINK_CHAIN
+            \ FORMAT
             \ FUNCTION
             \ GENERATE
+            \ GET_RUNTIME_DEPENDENCIES
             \ GLOB
             \ GLOB_RECURSE
+            \ GROUP_EXECUTE
+            \ GROUP_READ
+            \ GROUP_WRITE
             \ GUARD
             \ HASH
             \ HEX
             \ HTTPHEADER
             \ IGNORED
             \ INACTIVITY_TIMEOUT
+            \ INPUT
             \ INSTALL
             \ IS_ABSOLUTE
             \ LENGTH_MAXIMUM
             \ LENGTH_MINIMUM
             \ LF
+            \ LIBRARIES
             \ LIMIT
             \ LIMIT_COUNT
             \ LIMIT_INPUT
             \ LIMIT_OUTPUT
             \ LIST_DIRECTORIES
+            \ LIST_ONLY
             \ LOCK
             \ LOG
             \ MAKE_DIRECTORY
+            \ MODULES
+            \ MTIME
+            \ MYLIBRARY
             \ NETRC
             \ NETRC_FILE
             \ NEWLINE_CONSUME
+            \ NEWLINE_STYLE
             \ NOT
             \ NO_HEX_CONVERSION
             \ NO_SOURCE_PERMISSIONS
             \ OFFSET
-            \ OLD
+            \ ONLY
             \ OPTIONAL
             \ OUTPUT
+            \ OWNER_EXECUTE
+            \ OWNER_READ
+            \ OWNER_WRITE
+            \ PATHS
             \ PATTERN
+            \ PATTERNS
+            \ PERMISSIONS
+            \ POST_EXCLUDE_REGEXES
+            \ POST_INCLUDE_REGEXES
+            \ PRE_EXCLUDE_REGEXES
+            \ PRE_INCLUDE_REGEXES
             \ PROCESS
             \ READ
             \ READ_SYMLINK
+            \ REAL_PATH
             \ REGEX
             \ RELATIVE_PATH
             \ RELEASE
@@ -2133,33 +2721,51 @@
             \ REMOVE_RECURSE
             \ RENAME
             \ REQUIRED
+            \ RESOLVED_DEPENDENCIES_VAR
             \ RESULT
             \ RESULT_VARIABLE
+            \ RPATH
+            \ RUNPATH
+            \ SCRIPT
+            \ SHARED
             \ SHOW_PROGRESS
             \ SIZE
             \ SSL
+            \ STATIC
             \ STATUS
             \ STRINGS
             \ SYMBOLIC
+            \ TARGET
+            \ TARGET_PROPERTY
             \ TIMESTAMP
             \ TLS_CAINFO
             \ TLS_VERIFY
             \ TOUCH
             \ TOUCH_NOCREATE
             \ TO_CMAKE_PATH
+            \ TO_CMAKE_PATH_LIST
             \ TO_NATIVE_PATH
+            \ TO_NATIVE_PATH_LIST
+            \ UNRESOLVED_DEPENDENCIES_VAR
             \ UPLOAD
             \ URL
             \ USERPWD
             \ USE_SOURCE_PERMISSIONS
             \ UTC
             \ UTF
+            \ VERBOSE
+            \ WORLD_EXECUTE
+            \ WORLD_READ
+            \ WORLD_WRITE
             \ WRITE
+            \ XZ
+            \ _FILENAMES
 
 syn keyword cmakeKWfind_file contained
             \ CMAKE_FIND_ROOT_PATH_BOTH
             \ DOC
             \ DVAR
+            \ FALSE
             \ HINTS
             \ INCLUDE
             \ NAMES
@@ -2173,14 +2779,16 @@
             \ ONLY_CMAKE_FIND_ROOT_PATH
             \ PATHS
             \ PATH_SUFFIXES
+            \ REQUIRED
             \ VAR
 
 syn keyword cmakeKWfind_library contained
             \ CMAKE_FIND_ROOT_PATH_BOTH
             \ DOC
             \ DVAR
+            \ FALSE
             \ HINTS
-            \ LIB
+            \ INCLUDE
             \ NAMES
             \ NAMES_PER_DIR
             \ NO_CMAKE_ENVIRONMENT_PATH
@@ -2193,12 +2801,14 @@
             \ ONLY_CMAKE_FIND_ROOT_PATH
             \ PATHS
             \ PATH_SUFFIXES
+            \ REQUIRED
             \ VAR
 
 syn keyword cmakeKWfind_package contained
             \ ABI
             \ BUNDLE
             \ CMAKE_DISABLE_FIND_PACKAGE_
+            \ CMAKE_REQUIRE_FIND_PACKAGE_
             \ CMAKE_FIND_ROOT_PATH_BOTH
             \ COMPONENTS
             \ CONFIG
@@ -2206,8 +2816,12 @@
             \ DEC
             \ DVAR
             \ EXACT
+            \ EXCLUDE
+            \ FALSE
+            \ FIND_PACKAGE_VERSION_FORMAT
             \ FRAMEWORK
             \ HINTS
+            \ INCLUDE
             \ MODULE
             \ NAMES
             \ NATURAL
@@ -2227,12 +2841,26 @@
             \ OPTIONAL_COMPONENTS
             \ PACKAGE_FIND_NAME
             \ PACKAGE_FIND_VERSION
+            \ PACKAGE_FIND_VERSION_COMPLETE
             \ PACKAGE_FIND_VERSION_COUNT
             \ PACKAGE_FIND_VERSION_MAJOR
+            \ PACKAGE_FIND_VERSION_MAX
+            \ PACKAGE_FIND_VERSION_MAX_COUNT
+            \ PACKAGE_FIND_VERSION_MAX_MAJOR
+            \ PACKAGE_FIND_VERSION_MAX_MINOR
+            \ PACKAGE_FIND_VERSION_MAX_PATCH
+            \ PACKAGE_FIND_VERSION_MAX_TWEAK
             \ PACKAGE_FIND_VERSION_MINOR
+            \ PACKAGE_FIND_VERSION_MIN_COUNT
+            \ PACKAGE_FIND_VERSION_MIN_MAJOR
+            \ PACKAGE_FIND_VERSION_MIN_MINOR
+            \ PACKAGE_FIND_VERSION_MIN_PATCH
+            \ PACKAGE_FIND_VERSION_MIN_TWEAK
             \ PACKAGE_FIND_VERSION_PATCH
+            \ PACKAGE_FIND_VERSION_RANGE
+            \ PACKAGE_FIND_VERSION_RANGE_MAX
+            \ PACKAGE_FIND_VERSION_RANGE_MIN
             \ PACKAGE_FIND_VERSION_TWEAK
-            \ PACKAGE_VERSION
             \ PACKAGE_VERSION_COMPATIBLE
             \ PACKAGE_VERSION_EXACT
             \ PACKAGE_VERSION_UNSUITABLE
@@ -2257,6 +2885,7 @@
             \ CMAKE_FIND_ROOT_PATH_BOTH
             \ DOC
             \ DVAR
+            \ FALSE
             \ HINTS
             \ INCLUDE
             \ NAMES
@@ -2270,12 +2899,14 @@
             \ ONLY_CMAKE_FIND_ROOT_PATH
             \ PATHS
             \ PATH_SUFFIXES
+            \ REQUIRED
             \ VAR
 
 syn keyword cmakeKWfind_program contained
             \ CMAKE_FIND_ROOT_PATH_BOTH
             \ DOC
             \ DVAR
+            \ FALSE
             \ HINTS
             \ NAMES
             \ NAMES_PER_DIR
@@ -2289,22 +2920,26 @@
             \ ONLY_CMAKE_FIND_ROOT_PATH
             \ PATHS
             \ PATH_SUFFIXES
+            \ REQUIRED
             \ VAR
 
 syn keyword cmakeKWfltk_wrap_ui contained
             \ FLTK
 
 syn keyword cmakeKWforeach contained
+            \ APPEND
             \ IN
             \ ITEMS
             \ LISTS
             \ RANGE
             \ STATUS
+            \ ZIP_LISTS
 
 syn keyword cmakeKWfunction contained
             \ ARGC
             \ ARGN
             \ ARGV
+            \ CALL
             \ FOO
             \ PARENT_SCOPE
 
@@ -2332,6 +2967,7 @@
             \ PROGRAM
             \ PROGRAM_ARGS
             \ REALPATH
+            \ REAL_PATH
 
 syn keyword cmakeKWget_property contained
             \ BRIEF_DOCS
@@ -2344,13 +2980,15 @@
             \ SET
             \ SOURCE
             \ TARGET
+            \ TARGET_DIRECTORY
             \ TEST
             \ VARIABLE
 
 syn keyword cmakeKWget_source_file_property contained
+            \ DIRECTORY
             \ INHERITED
             \ LOCATION
-            \ VAR
+            \ TARGET_DIRECTORY
 
 syn keyword cmakeKWget_target_property contained
             \ INHERITED
@@ -2426,6 +3064,7 @@
 
 syn keyword cmakeKWinstall contained
             \ AFTER
+            \ AIX
             \ APT
             \ ARCHIVE
             \ BEFORE
@@ -2459,6 +3098,7 @@
             \ DIRECTORY_PERMISSIONS
             \ DLL
             \ DOC
+            \ ENABLE_EXPORTS
             \ EXCLUDE_FROM_ALL
             \ EXPORT
             \ EXPORT_ANDROID_MK
@@ -2564,6 +3204,7 @@
             \ INTERNAL
             \ JOIN
             \ LENGTH
+            \ NATURAL
             \ ORDER
             \ OUTPUT_VARIABLE
             \ PARENT_SCOPE
@@ -2599,6 +3240,7 @@
             \ ARGC
             \ ARGN
             \ ARGV
+            \ CALL
             \ DEFINED
             \ FOO
             \ GREATER
@@ -2615,12 +3257,18 @@
             \ OUTPUT_FORMAT
 
 syn keyword cmakeKWmessage contained
+            \ APPEND
             \ AUTHOR_WARNING
+            \ CHECK_
+            \ CHECK_FAIL
+            \ CHECK_PASS
+            \ CHECK_START
             \ DEBUG
             \ DEPRECATION
             \ FATAL_ERROR
             \ GUI
             \ NOTICE
+            \ POP_BACK
             \ SEND_ERROR
             \ STATUS
             \ TRACE
@@ -2637,15 +3285,18 @@
             \ CUDA
             \ DESCRIPTION
             \ HOMEPAGE_URL
+            \ ISPC
             \ LANGUAGES
             \ NAME
             \ NONE
+            \ OBJC
+            \ OBJCXX
             \ PROJECT
             \ VERSION
             \ _BINARY_DIR
             \ _DESCRIPTION
             \ _HOMEPAGE_URL
-            \ _INCLUDE
+            \ _INCLUDE_BEFORE
             \ _SOURCE_DIR
             \ _VERSION
             \ _VERSION_MAJOR
@@ -2663,9 +3314,14 @@
             \ VALUE
             \ VAR
 
+syn keyword cmakeKWreturn contained
+            \ DEFER
+
 syn keyword cmakeKWseparate_arguments contained
             \ MSDN
             \ NATIVE_COMMAND
+            \ PROGRAM
+            \ SEPARATE_ARGS
             \ UNIX_COMMAND
             \ WINDOWS_COMMAND
 
@@ -2694,12 +3350,15 @@
             \ PROPERTY
             \ SOURCE
             \ TARGET
+            \ TARGET_DIRECTORY
             \ TEST
             \ WIX
 
 syn keyword cmakeKWset_source_files_properties contained
+            \ DIRECTORY
             \ PROPERTIES
             \ SOURCE
+            \ TARGET_DIRECTORY
 
 syn keyword cmakeKWset_target_properties contained
             \ PROPERTIES
@@ -2709,6 +3368,9 @@
             \ PROPERTIES
             \ TEST
 
+syn keyword cmakeKWsite_name contained
+            \ HOSTNAME
+
 syn keyword cmakeKWsource_group contained
             \ FILES
             \ PREFIX
@@ -2718,20 +3380,27 @@
 syn keyword cmakeKWstring contained
             \ ALPHABET
             \ APPEND
+            \ ARRAY
             \ ASCII
+            \ BOOLEAN
             \ CMAKE_MATCH_
             \ COMPARE
             \ CONCAT
             \ CONFIGURE
             \ EQUAL
+            \ ERROR_VARIABLE
             \ ESCAPE_QUOTES
             \ FIND
             \ GENEX_STRIP
+            \ GET
             \ GREATER
             \ GREATER_EQUAL
             \ GUID
             \ HASH
+            \ HEX
             \ JOIN
+            \ JSON
+            \ JSONLENGTH
             \ LENGTH
             \ LESS
             \ LESS_EQUAL
@@ -2739,17 +3408,24 @@
             \ MATCH
             \ MATCHALL
             \ MATCHES
+            \ MEMBER
             \ NAMESPACE
             \ NOTEQUAL
+            \ NULL
+            \ NUMBER
+            \ OBJECT
+            \ OFF
             \ ONLY
             \ PREPEND
             \ RANDOM
             \ RANDOM_SEED
             \ REGEX
+            \ REMOVE
             \ REPEAT
             \ REPLACE
             \ REVERSE
             \ RFC
+            \ SET
             \ SHA
             \ SOURCE_DATE_EPOCH
             \ STRIP
@@ -2852,8 +3528,12 @@
             \ ALIAS
             \ BEFORE
             \ CMAKE_
+            \ CUDA_RESOLVE_DEVICE_SYMBOLS
+            \ CUDA_SEPARABLE_COMPILATION
+            \ DEVICE_LINK
             \ GCC
             \ GNU
+            \ HOST_LINK
             \ IMPORTED
             \ INTERFACE
             \ INTERFACE_LINK_OPTIONS
@@ -2869,9 +3549,23 @@
             \ _LINKER_WRAPPER_FLAG_SEP
 
 syn keyword cmakeKWtarget_precompile_headers contained
+            \ ALIAS
+            \ ANGLE
+            \ BUILD_INTERFACE
+            \ COMPILE_LANGUAGE
+            \ DISABLE_PRECOMPILE_HEADERS
+            \ EXPORT
+            \ FI
+            \ GCC
+            \ IMPORTED
             \ INTERFACE
+            \ INTERFACE_PRECOMPILE_HEADERS
+            \ PRECOMPILE_HEADERS
+            \ PRECOMPILE_HEADERS_REUSE_FROM
             \ PRIVATE
             \ PUBLIC
+            \ REUSE_FROM
+            \ SKIP_PRECOMPILE_HEADERS
 
 syn keyword cmakeKWtarget_sources contained
             \ ALIAS
@@ -2910,6 +3604,12 @@
             \ LINK_OPTIONS
             \ MULTI
             \ NOT
+            \ OBJCXX_EXTENSIONS
+            \ OBJCXX_STANDARD
+            \ OBJCXX_STANDARD_REQUIRED
+            \ OBJC_EXTENSIONS
+            \ OBJC_STANDARD
+            \ OBJC_STANDARD_REQUIRED
             \ OUTPUT_VARIABLE
             \ PRIVATE
             \ SOURCES
@@ -2955,7 +3655,14 @@
             \ TEST_VARIABLE
 
 syn keyword cmakeKWvariable_watch contained
+            \ APPEND
             \ COMMAND
+            \ DEFINED
+            \ MODIFIED_ACCESS
+            \ READ_ACCESS
+            \ REMOVED_ACCESS
+            \ UNKNOWN_MODIFIED_ACCESS
+            \ UNKNOWN_READ_ACCESS
 
 syn keyword cmakeKWwrite_file contained
             \ APPEND
@@ -2987,39 +3694,49 @@
             \ CONFIGURATION
             \ CUDA_COMPILER_ID
             \ CUDA_COMPILER_VERSION
+            \ CUDA_RESOLVE_DEVICE_SYMBOLS
+            \ CUDA_SEPARABLE_COMPILATION
             \ CUSTOM_KEYS
             \ CXX_COMPILER_ID
             \ CXX_COMPILER_VERSION
+            \ CXX_CONFIG
             \ CXX_STANDARD
             \ C_COMPILER_ID
             \ C_COMPILER_VERSION
             \ C_STANDARD
             \ DEBUG_MODE
             \ DEBUG_POSTFIX
+            \ DEVICE_LINK
+            \ DLL
             \ EXCLUDE
             \ EXPORT
             \ FALSE
             \ FILTER
             \ FOO_EXTRA_THINGS
-            \ Fortran_COMPILER_ID
-            \ Fortran_COMPILER_VERSION
             \ GENERATE
             \ GENEX_EVAL
             \ GNU
+            \ HOST_LINK
             \ IF
             \ IGNORE
             \ IMPORT_PREFIX
             \ IMPORT_SUFFIX
             \ INCLUDE_DIRECTORIES
             \ INSTALL_INTERFACE
+            \ INSTALL_NAME_DIR
             \ INSTALL_PREFIX
+            \ INTERFACE
             \ INTERFACE_LINK_LIBRARIES
             \ IN_LIST
+            \ ISPC_COMPILER_ID
+            \ ISPC_COMPILER_VERSION
             \ JOIN
             \ LANG
             \ LANG_COMPILER_ID
             \ LIBRARY_OUTPUT_NAME
             \ LIBRARY_OUTPUT_NAME_
+            \ LINK_LANGUAGE
+            \ LINK_LANG_AND_ID
             \ LINK_LIBRARIES
             \ LINK_ONLY
             \ LOWER_CASE
@@ -3027,6 +3744,10 @@
             \ MAP_IMPORTED_CONFIG_
             \ NO
             \ NOT
+            \ OBJCXX_COMPILER_ID
+            \ OBJCXX_COMPILER_VERSION
+            \ OBJC_COMPILER_ID
+            \ OBJC_COMPILER_VERSION
             \ OFF
             \ OLD_COMPILER
             \ OUTPUT_NAME
@@ -3045,6 +3766,7 @@
             \ SDK
             \ SEMICOLON
             \ SHELL_PATH
+            \ STATIC
             \ STREQUAL
             \ TARGET_BUNDLE_CONTENT_DIR
             \ TARGET_BUNDLE_DIR
@@ -3099,8 +3821,10 @@
             \ break
             \ build_command
             \ cmake_host_system_information
+            \ cmake_language
             \ cmake_minimum_required
             \ cmake_parse_arguments
+            \ cmake_path
             \ cmake_policy
             \ configure_file
             \ continue
@@ -3257,8 +3981,10 @@
 hi def link cmakeKWadd_test ModeMsg
 hi def link cmakeKWbuild_command ModeMsg
 hi def link cmakeKWcmake_host_system_information ModeMsg
+hi def link cmakeKWcmake_language ModeMsg
 hi def link cmakeKWcmake_minimum_required ModeMsg
 hi def link cmakeKWcmake_parse_arguments ModeMsg
+hi def link cmakeKWcmake_path ModeMsg
 hi def link cmakeKWcmake_policy ModeMsg
 hi def link cmakeKWconfigure_file ModeMsg
 hi def link cmakeKWcreate_test_sourcelist ModeMsg
@@ -3273,6 +3999,7 @@
 hi def link cmakeKWctest_update ModeMsg
 hi def link cmakeKWctest_upload ModeMsg
 hi def link cmakeKWdefine_property ModeMsg
+hi def link cmakeKWdoxygen_add_docs ModeMsg
 hi def link cmakeKWenable_language ModeMsg
 hi def link cmakeKWenable_testing ModeMsg
 hi def link cmakeKWexec_program ModeMsg
@@ -3317,6 +4044,7 @@
 hi def link cmakeKWqt_wrap_cpp ModeMsg
 hi def link cmakeKWqt_wrap_ui ModeMsg
 hi def link cmakeKWremove ModeMsg
+hi def link cmakeKWreturn ModeMsg
 hi def link cmakeKWseparate_arguments ModeMsg
 hi def link cmakeKWset ModeMsg
 hi def link cmakeKWset_directory_properties ModeMsg
@@ -3324,6 +4052,7 @@
 hi def link cmakeKWset_source_files_properties ModeMsg
 hi def link cmakeKWset_target_properties ModeMsg
 hi def link cmakeKWset_tests_properties ModeMsg
+hi def link cmakeKWsite_name ModeMsg
 hi def link cmakeKWsource_group ModeMsg
 hi def link cmakeKWstring ModeMsg
 hi def link cmakeKWsubdirs ModeMsg